Skip to content

Commit

Permalink
feat(kt-fields-kt-field-inline-edit): add autoComplete prop
Browse files Browse the repository at this point in the history
  • Loading branch information
santiagoballadares committed Aug 19, 2024
1 parent ec4d57b commit 9a6a08c
Show file tree
Hide file tree
Showing 29 changed files with 152 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,26 @@
isOptional
label="helpDescription"
/>
<KtFieldText formKey="helpText" isOptional label="helpText" />
<div class="field-row">
<KtFieldText formKey="helpText" isOptional label="helpText" />
<KtFieldSingleSelect
formKey="autoComplete"
helpText="Support Varies"
isUnsorted
label="autoComplete"
:options="[
{ label: 'off', value: 'off' },
{ label: 'on', value: 'on' },
{ label: '<token>', value: 'token' },
]"
/>
<KtFieldText
v-if="settings.autoComplete === 'token'"
formKey="autoCompleteToken"
helpText="A space-separated <token-list> that describes the meaning of the autocompletion value. See https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete#values"
isOptional
label="<token>"
/>
</div>
</div>
</div>
Expand Down Expand Up @@ -101,6 +119,8 @@ export default defineComponent({
const getInitialValue = () => ({ fieldValue: null })
const settings = ref<{
autoComplete: string
autoCompleteToken: Kotti.FieldText.Value
booleanFlags: {
hideValidation: Kotti.FieldToggle.Value
isDisabled: Kotti.FieldToggle.Value
Expand All @@ -119,6 +139,8 @@ export default defineComponent({
textStyle: Kotti.FieldInlineEdit.TextStyle | null
validation: Kotti.Field.Validation.Result['type'] | null
}>({
autoComplete: 'off',
autoCompleteToken: null,
booleanFlags: {
hideValidation: false,
isDisabled: false,
Expand Down Expand Up @@ -147,6 +169,10 @@ export default defineComponent({
formValue,
fieldValue: computed(() => formValue.value.fieldValue),
fieldProps: computed(() => ({
autoComplete:
settings.value.autoComplete === 'token'
? settings.value.autoCompleteToken
: settings.value.autoComplete,
dataTest: settings.value.dataTest,
helpDescription: settings.value.helpDescription,
helpText: settings.value.helpText,
Expand Down
99 changes: 83 additions & 16 deletions packages/documentation/pages/usage/components/form-fields.vue
Original file line number Diff line number Diff line change
Expand Up @@ -307,17 +307,27 @@
label="actions"
type="switch"
/>
<KtFieldSingleSelect
<div
v-if="
componentDefinition.additionalProps.includes('autoComplete')
"
formKey="autoComplete"
label="autoComplete"
:options="[
{ label: 'current-password', value: 'current-password' },
{ label: 'new-password', value: 'new-password' },
]"
/>
class="field-row"
>
<KtFieldSingleSelect
formKey="autoComplete"
helpText="Support Varies"
isUnsorted
label="autoComplete"
:options="autoCompleteOptions"
/>
<KtFieldText
v-if="settings.additionalProps.autoComplete === 'token'"
formKey="autoCompleteToken"
helpText="A space-separated <token-list> that describes the meaning of the autocompletion value. See https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete#values"
isOptional
label="<token>"
/>
</div>
<KtFieldNumber
v-if="
componentDefinition.additionalProps.includes(
Expand Down Expand Up @@ -752,7 +762,7 @@ import {
import { Yoco } from '@3yourmind/yoco'
import { TimeConversion } from '@metatypes/units'
import cloneDeep from 'lodash/cloneDeep.js'
import { computed, defineComponent, ref } from 'vue'
import { computed, defineComponent, ref, watch } from 'vue'
import { useRouter } from '../../../hooks/use-router'
import {
Expand Down Expand Up @@ -806,7 +816,12 @@ const components: Array<{
supports: Kotti.Field.Supports
}> = [
{
additionalProps: ['currencyCurrency', 'numberMaximum', 'numberMinimum'],
additionalProps: [
'autoComplete',
'currencyCurrency',
'numberMaximum',
'numberMinimum',
],
formKey: 'currencyValue',
name: 'KtFieldCurrency',
supports: KtFieldCurrency.meta.supports,
Expand Down Expand Up @@ -850,6 +865,7 @@ const components: Array<{
{
additionalProps: [
'actions',
'autoComplete',
'clearOnSelect',
'collapseTagsAfter',
'hasOptionSlot',
Expand All @@ -863,6 +879,7 @@ const components: Array<{
{
additionalProps: [
'actions',
'autoComplete',
'clearOnSelect',
'collapseTagsAfter',
'hasOptionSlot',
Expand All @@ -877,6 +894,7 @@ const components: Array<{
},
{
additionalProps: [
'autoComplete',
'numberDecimalPlaces',
'numberHideChangeButtons',
'numberHideMaximum',
Expand Down Expand Up @@ -907,14 +925,15 @@ const components: Array<{
supports: KtFieldRadioGroup.meta.supports,
},
{
additionalProps: ['actions', 'hasOptionSlot', 'isUnsorted'],
additionalProps: ['autoComplete', 'actions', 'hasOptionSlot', 'isUnsorted'],
formKey: 'singleSelectValue',
name: 'KtFieldSingleSelect',
supports: KtFieldSingleSelect.meta.supports,
},
{
additionalProps: [
'actions',
'autoComplete',
'hasOptionSlot',
'isLoadingOptions',
'isUnsorted',
Expand All @@ -925,13 +944,13 @@ const components: Array<{
supports: KtFieldSingleSelectRemote.meta.supports,
},
{
additionalProps: [],
additionalProps: ['autoComplete'],
formKey: 'textValue',
name: 'KtFieldText',
supports: KtFieldText.meta.supports,
},
{
additionalProps: ['autoSize', 'maxHeight', 'rows'],
additionalProps: ['autoComplete', 'autoSize', 'maxHeight', 'rows'],
formKey: 'textValue',
name: 'KtFieldTextArea',
supports: KtFieldTextArea.meta.supports,
Expand Down Expand Up @@ -1166,7 +1185,8 @@ export default defineComponent({
additionalProps: {
allowMultiple: Kotti.FieldToggle.Value
allowPhotos: Kotti.FieldToggle.Value
autoComplete: 'current-password' | 'new-password'
autoComplete: string
autoCompleteToken: Kotti.FieldText.Value
autoSize: Kotti.FieldToggle.Value
clearOnSelect: Kotti.FieldToggle.Value
collapseExtensionsAfter: Kotti.FieldNumber.Value
Expand Down Expand Up @@ -1232,7 +1252,8 @@ export default defineComponent({
additionalProps: {
allowMultiple: false,
allowPhotos: false,
autoComplete: 'current-password',
autoComplete: 'off',
autoCompleteToken: null,
autoSize: false,
clearOnSelect: false,
collapseExtensionsAfter: null,
Expand Down Expand Up @@ -1385,7 +1406,10 @@ export default defineComponent({
if (componentDefinition.value.additionalProps.includes('autoComplete'))
Object.assign(additionalProps, {
autoComplete: settings.value.additionalProps.autoComplete,
autoComplete:
settings.value.additionalProps.autoComplete === 'token'
? settings.value.additionalProps.autoCompleteToken
: settings.value.additionalProps.autoComplete,
})
if (
componentDefinition.value.additionalProps.includes(
Expand Down Expand Up @@ -1670,7 +1694,50 @@ export default defineComponent({
}),
)
watch(
() => settings.value.component,
(newComponent, oldComponent) => {
if (
newComponent === 'KtFieldPassword' &&
oldComponent !== 'KtFieldPassword'
)
settings.value = {
...settings.value,
additionalProps: {
...settings.value.additionalProps,
autoComplete: 'current-password',
},
}
else if (
newComponent !== 'KtFieldPassword' &&
oldComponent === 'KtFieldPassword'
)
settings.value = {
...settings.value,
additionalProps: {
...settings.value.additionalProps,
autoComplete: 'off',
},
}
},
)
return {
autoCompleteOptions: computed(() =>
settings.value.component === 'KtFieldPassword'
? [
{
label: 'current-password',
value: 'current-password',
},
{ label: 'new-password', value: 'new-password' },
]
: [
{ label: 'off', value: 'off' },
{ label: 'on', value: 'on' },
{ label: '<token>', value: 'token' },
],
),
component: computed(
(): { meta: Kotti.Meta; name: string } =>
(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,7 @@ export default defineComponent({
forceUpdateKey: number
} => ({
...field.inputProps,
autocomplete: props.autoComplete,
class: {
'kt-field-currency__input': true,
},
Expand Down
1 change: 1 addition & 0 deletions packages/kotti-ui/source/kotti-field-currency/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import type { KottiField } from '../kotti-field/types'
import { DECIMAL_SEPARATORS_CHARACTER_SET } from '../utilities'

export const KOTTI_FIELD_CURRENCY_SUPPORTS: KottiField.Supports = {
autoComplete: true,
clear: false,
decoration: false,
placeholder: true,
Expand Down
1 change: 1 addition & 0 deletions packages/kotti-ui/source/kotti-field-currency/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ export module KottiFieldCurrency {
export const propsSchema = KottiField.propsSchema
.merge(
KottiField.potentiallySupportedPropsSchema.pick({
autoComplete: true,
tabIndex: true,
}),
)
Expand Down
1 change: 1 addition & 0 deletions packages/kotti-ui/source/kotti-field-date/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ export const DATE_FORMAT_REGEX = /^\d{4}-\d{2}-\d{2}$/
export const DATE_TIME_FORMAT_REGEX = /^\d{4}-\d{2}-\d{2} \d{2}:\d{2}(:\d{2})?$/

export const KOTTI_FIELD_DATE_SUPPORTS: KottiField.Supports = {
autoComplete: false,
clear: true,
decoration: false,
placeholder: true,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ export enum ErrorCodes {
}

export const KOTTI_FIELD_FILE_UPLOAD_SUPPORTS: KottiField.Supports = {
autoComplete: false,
clear: false,
decoration: false,
placeholder: false,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -267,6 +267,7 @@ export default defineComponent({
forceUpdateKey: number
} => ({
...sharedProps.value,
autocomplete: props.autoComplete,
class: {
'kt-field-inline-edit__input': true,
...(props.textStyle !== null && { [props.textStyle]: true }),
Expand Down Expand Up @@ -307,6 +308,7 @@ export default defineComponent({
forceUpdateKey: number
} => ({
...sharedProps.value,
autocomplete: props.autoComplete,
class: {
'kt-field-inline-edit__input': true,
'kt-field-inline-edit__input--is-multiline': true,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import type { KottiField } from '../kotti-field/types'

export const KOTTI_FIELD_INLINE_EDIT_SUPPORTS: KottiField.Supports = {
autoComplete: true,
clear: false,
decoration: false,
placeholder: true,
Expand Down
7 changes: 6 additions & 1 deletion packages/kotti-ui/source/kotti-field-inline-edit/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,12 @@ export module KottiFieldInlineEdit {
}

export const propsSchema = KottiField.propsSchema
.merge(KottiField.potentiallySupportedPropsSchema.pick({ tabIndex: true }))
.merge(
KottiField.potentiallySupportedPropsSchema.pick({
autoComplete: true,
tabIndex: true,
}),
)
.extend({
isReadonly: z.boolean().default(false),
isMultiline: z.boolean().default(false),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -312,6 +312,7 @@ export default defineComponent({
forceUpdateKey: number
} => ({
...field.inputProps,
autocomplete: props.autoComplete,
class: {
'kt-field-number__input': true,
'kt-field-number__input--has-maximum': showMaximum.value,
Expand Down
1 change: 1 addition & 0 deletions packages/kotti-ui/source/kotti-field-number/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { DecimalSeparator } from '../types/kotti'
import { DECIMAL_SEPARATORS_CHARACTER_SET } from '../utilities'

export const KOTTI_FIELD_NUMBER_SUPPORTS: KottiField.Supports = {
autoComplete: true,
clear: false,
decoration: true,
placeholder: true,
Expand Down
1 change: 1 addition & 0 deletions packages/kotti-ui/source/kotti-field-number/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ export module KottiFieldNumber {
export const propsSchema = KottiField.propsSchema
.merge(
KottiField.potentiallySupportedPropsSchema.pick({
autoComplete: true,
leftIcon: true,
prefix: true,
rightIcon: true,
Expand Down
1 change: 1 addition & 0 deletions packages/kotti-ui/source/kotti-field-password/constants.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import type { KottiField } from '../kotti-field/types'

export const KOTTI_FIELD_PASSWORD_SUPPORTS: KottiField.Supports = {
autoComplete: true,
clear: true,
decoration: true,
placeholder: true,
Expand Down
4 changes: 3 additions & 1 deletion packages/kotti-ui/source/kotti-field-password/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@ export module KottiFieldPassword {
NEW = 'new-password',
}
export const propsSchema = KottiField.propsSchema
.merge(KottiField.potentiallySupportedPropsSchema)
.merge(
KottiField.potentiallySupportedPropsSchema.omit({ autoComplete: true }),
)
.extend({
placeholder: z.string().nullable().default(null),
autoComplete: createLooseZodEnumSchema(AutoComplete),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import type { KottiField } from '../kotti-field/types'

export const KOTTI_FIELD_RADIO_GROUP_SUPPORTS: KottiField.Supports = {
autoComplete: false,
clear: false,
decoration: false,
placeholder: false,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -247,6 +247,7 @@ export default defineComponent({
),
inputProps: computed(() => ({
...field.inputProps,
autocomplete: props.autoComplete,
class: ['kt-field-select__wrapper'],
forceUpdateKey: forceUpdateKey.value,
placeholder: props.placeholder ?? undefined,
Expand Down
Loading

0 comments on commit 9a6a08c

Please sign in to comment.