aboutsummaryrefslogtreecommitdiff
path: root/packages
diff options
context:
space:
mode:
authorSebastian <sebasjm@gmail.com>2022-01-24 17:32:46 -0300
committerSebastian <sebasjm@gmail.com>2022-01-24 17:33:25 -0300
commite653fc6f58c26dbb4a10b5b89a24865dd814fe68 (patch)
treed9e6417d642e68e7305c91dc501ec0c8f80857b8 /packages
parent1e1e297d1a158f7e61606ac5822c08a70d9a2cb8 (diff)
fix #7086
Diffstat (limited to 'packages')
-rw-r--r--packages/anastasis-webui/src/pages/home/AttributeEntryScreen.stories.tsx17
-rw-r--r--packages/anastasis-webui/src/pages/home/AttributeEntryScreen.tsx17
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={() => {