diff options
author | Sebastian <sebasjm@gmail.com> | 2022-01-24 17:32:46 -0300 |
---|---|---|
committer | Sebastian <sebasjm@gmail.com> | 2022-01-24 17:33:25 -0300 |
commit | e653fc6f58c26dbb4a10b5b89a24865dd814fe68 (patch) | |
tree | d9e6417d642e68e7305c91dc501ec0c8f80857b8 /packages | |
parent | 1e1e297d1a158f7e61606ac5822c08a70d9a2cb8 (diff) |
fix #7086
Diffstat (limited to 'packages')
-rw-r--r-- | packages/anastasis-webui/src/pages/home/AttributeEntryScreen.stories.tsx | 17 | ||||
-rw-r--r-- | packages/anastasis-webui/src/pages/home/AttributeEntryScreen.tsx | 17 |
2 files changed, 33 insertions, 1 deletions
diff --git a/packages/anastasis-webui/src/pages/home/AttributeEntryScreen.stories.tsx b/packages/anastasis-webui/src/pages/home/AttributeEntryScreen.stories.tsx index a2ecbd604..85dd836a6 100644 --- a/packages/anastasis-webui/src/pages/home/AttributeEntryScreen.stories.tsx +++ b/packages/anastasis-webui/src/pages/home/AttributeEntryScreen.stories.tsx @@ -133,3 +133,20 @@ export const WithAllPosibleWidget = createExample(TestedComponent, { widget: w, })), } as ReducerState); + +export const WithAutocompleteFeature = createExample(TestedComponent, { + ...reducerStatesExample.backupAttributeEditing, + required_attributes: [ + { + name: "ahv_number", + label: "AHV Number", + type: "string", + uuid: "asdasdsa1", + widget: "wid", + "validation-regex": + "^(756)\\.[0-9]{4}\\.[0-9]{4}\\.[0-9]{2}|(756)[0-9]{10}$", + "validation-logic": "CH_AHV_check", + autocomplete: "???.????.????.??", + }, + ], +} as ReducerState); diff --git a/packages/anastasis-webui/src/pages/home/AttributeEntryScreen.tsx b/packages/anastasis-webui/src/pages/home/AttributeEntryScreen.tsx index 9c1a93d8e..a1f384743 100644 --- a/packages/anastasis-webui/src/pages/home/AttributeEntryScreen.tsx +++ b/packages/anastasis-webui/src/pages/home/AttributeEntryScreen.tsx @@ -37,12 +37,27 @@ export function AttributeEntryScreen(): VNode { const fieldList: VNode[] = reqAttr.map((spec, i: number) => { const value = attrs[spec.name]; const error = checkIfValid(value, spec); + + function addAutocomplete(newValue: string): string { + const ac = spec.autocomplete; + if (!ac || ac.length < newValue.length || ac[newValue.length] === "?") + return newValue; + + if (!value || newValue.length < value.length) { + return newValue.slice(0, -1); + } + + return newValue + ac[newValue.length]; + } + hasErrors = hasErrors || error !== undefined; return ( <AttributeEntryField key={i} isFirst={i == 0} - setValue={(v: string) => setAttrs({ ...attrs, [spec.name]: v })} + setValue={(v: string) => + setAttrs({ ...attrs, [spec.name]: addAutocomplete(v) }) + } spec={spec} errorMessage={error} onConfirm={() => { |