@inseefr/lunatic 3.0.0-rc.13 → 3.0.0-rc.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/main.css +0 -2
- package/lib/main.css.map +1 -1
- package/lib/package.json +3 -3
- package/lib/src/components/Suggester/CustomSuggester.d.ts +9 -8
- package/lib/src/components/Suggester/CustomSuggester.js +4 -31
- package/lib/src/components/Suggester/CustomSuggester.js.map +1 -1
- package/lib/src/components/Suggester/Suggester.d.ts +1 -1
- package/lib/src/components/Suggester/Suggester.js +57 -35
- package/lib/src/components/Suggester/Suggester.js.map +1 -1
- package/lib/src/components/Suggester/SuggesterNotification.d.ts +5 -6
- package/lib/src/components/Suggester/SuggesterNotification.js +5 -10
- package/lib/src/components/Suggester/SuggesterNotification.js.map +1 -1
- package/lib/src/components/Suggester/useSuggestions.d.ts +20 -0
- package/lib/src/components/Suggester/useSuggestions.js +86 -0
- package/lib/src/components/Suggester/useSuggestions.js.map +1 -0
- package/lib/src/components/shared/Combobox/Combobox.d.ts +2 -0
- package/lib/src/components/shared/Combobox/Combobox.js +5 -6
- package/lib/src/components/shared/Combobox/Combobox.js.map +1 -1
- package/lib/src/components/shared/Combobox/ComboboxType.d.ts +1 -0
- package/lib/src/components/shared/Combobox/Panel/ComboboxOption.js +4 -0
- package/lib/src/components/shared/Combobox/Panel/ComboboxOption.js.map +1 -1
- package/lib/src/components/shared/Combobox/Panel/ComboboxPanel.d.ts +1 -1
- package/lib/src/components/shared/Combobox/Panel/ComboboxPanel.js +15 -1
- package/lib/src/components/shared/Combobox/Panel/ComboboxPanel.js.map +1 -1
- package/lib/src/components/shared/Combobox/Selection/ComboboxLabelSelection.js +6 -0
- package/lib/src/components/shared/Combobox/Selection/ComboboxLabelSelection.js.map +1 -1
- package/lib/src/components/type.d.ts +7 -0
- package/lib/src/hooks/use-track-changes.js +1 -1
- package/lib/src/hooks/use-track-changes.js.map +1 -1
- package/lib/src/hooks/useDebounce.d.ts +4 -0
- package/lib/src/hooks/useDebounce.js +23 -0
- package/lib/src/hooks/useDebounce.js.map +1 -0
- package/lib/src/hooks/useDocumentEvent.js +1 -1
- package/lib/src/hooks/useDocumentEvent.js.map +1 -1
- package/lib/src/hooks/{use-ref-sync.js → useRefSync.js} +1 -1
- package/lib/src/hooks/useRefSync.js.map +1 -0
- package/lib/src/hooks/useSuggesterInfo.d.ts +1 -1
- package/lib/src/i18n/dictionary.d.ts +16 -0
- package/lib/src/i18n/dictionary.js +16 -0
- package/lib/src/i18n/dictionary.js.map +1 -1
- package/lib/src/i18n/index.d.ts +1 -1
- package/lib/src/use-lunatic/commons/fill-components/fill-component-expressions.js +3 -0
- package/lib/src/use-lunatic/commons/fill-components/fill-component-expressions.js.map +1 -1
- package/lib/src/use-lunatic/commons/fill-components/fill-component-required.d.ts +71 -66
- package/lib/src/use-lunatic/commons/fill-components/fill-from-state.d.ts +68 -63
- package/lib/src/use-lunatic/commons/fill-components/fill-iterations.d.ts +16 -16
- package/lib/src/use-lunatic/commons/fill-components/fill-specific-expression.d.ts +70 -60
- package/lib/src/use-lunatic/commons/fill-components/fill-specific-expression.js +16 -0
- package/lib/src/use-lunatic/commons/fill-components/fill-specific-expression.js.map +1 -1
- package/lib/src/use-lunatic/replace-component-sequence.d.ts +3 -3
- package/lib/src/use-lunatic/type-source.d.ts +7 -2
- package/lib/src/use-lunatic/use-lunatic.d.ts +14 -0
- package/lib/src/utils/function.d.ts +1 -0
- package/lib/src/utils/function.js +18 -0
- package/lib/src/utils/function.js.map +1 -1
- package/package.json +3 -3
- package/lib/src/components/Suggester/SuggesterStatus.d.ts +0 -23
- package/lib/src/components/Suggester/SuggesterStatus.js +0 -24
- package/lib/src/components/Suggester/SuggesterStatus.js.map +0 -1
- package/lib/src/hooks/use-ref-sync.js.map +0 -1
- /package/lib/src/hooks/{use-ref-sync.d.ts → useRefSync.d.ts} +0 -0
package/lib/main.css
CHANGED
|
@@ -236,7 +236,6 @@
|
|
|
236
236
|
font-weight: normal;
|
|
237
237
|
}
|
|
238
238
|
.lunatic-combo-box-container.default-style .lunatic-combo-box .lunatic-combo-box-content .lunatic-combo-box-selection .lunatic-combo-box-selected {
|
|
239
|
-
height: 42px;
|
|
240
239
|
line-height: 34px;
|
|
241
240
|
background-color: var(--color-combo-box-background);
|
|
242
241
|
border-radius: 5px;
|
|
@@ -317,7 +316,6 @@
|
|
|
317
316
|
z-index: 1;
|
|
318
317
|
}
|
|
319
318
|
.lunatic-combo-box-container .lunatic-combo-box .lunatic-combo-box-content {
|
|
320
|
-
position: absolute;
|
|
321
319
|
width: 100%;
|
|
322
320
|
}
|
|
323
321
|
.lunatic-combo-box-container .lunatic-combo-box .lunatic-combo-box-content .lunatic-combo-box-selection {
|
package/lib/main.css.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sourceRoot":"","sources":["../src/css/main.scss","../src/css/components/Button.scss","../src/css/components/CheckboxGroup.scss","../src/css/components/CheckboxOne.scss","../src/css/components/CheckboxOption.scss","../src/css/components/Combobox.scss","../src/css/components/ComponentErrors.scss","../src/css/components/Datepicker.scss","../src/css/components/Declarations.scss","../src/css/components/Dropdown.scss","../src/css/components/Duration.scss","../src/css/components/Fieldset.scss","../src/css/components/IconButton.scss","../src/css/components/Input.scss","../src/css/components/InputNumber.scss","../src/css/components/Label.scss","../src/css/components/Missing.scss","../src/css/components/ModalControls.scss","../src/css/components/RadioGroup.scss","../src/css/components/RosterForLoop.scss","../src/css/components/Roundabout.scss","../src/css/components/Sequence.scss","../src/css/components/Suggester.scss","../src/css/components/Table.scss","../src/css/components/Textarea.scss","../src/css/components/VariableStatus.scss","../src/css/components/Dragger.scss","../src/css/components/SuggesterWidget.scss"],"names":[],"mappings":";AAAA;EACE;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EAEA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EAEA;;;AAkBF;AA0BE;AA+BA;;AAxDA;EACE;EACA;;AAEF;EACE;EACA;;AAIF;AAAA;AAAA;AAAA;AAAA;EAKE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AASF;EACE;;AAEA;EACE;EACA;;AACA;EACE;;AAGJ;EACE;EACA;;AACA;EACE;;AAGJ;EACE;;AAEF;EACE;;AAMJ;EAzEA;EACA;;AA2EA;EA5EA;EACA;;AA8EA;EACE;EA3EF;EACA;EACA;;AAEA;EACE;;AAyEF;EA9EA;EACA;EACA;;AAEA;EACE;;AA6EF;EACE;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AACA;EACE;EACA;EACA;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEE;EACE;;AAEF;EACE;;;ACpJR;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EAEC;EACA;EACA;;AAED;EACC;EACA;EACA;;AAED;EACC;EACA;;;AClBE;EACE;EACA;;AAGJ;EACE;EACA;;;ACRF;EACC;;AAGF;EACC;;AAEA;EACC;EACA;EACA;;AACA;EACC;;;ACbH;EACC;;AACA;EACC;;AAGD;EACC;EACA;EACA;EACA;;;AAIH;EACC;EACA;;;ACMD;EACC;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EAEA;;AACA;EACC;EACA;EACA;;AAEC;EACC;EACA;EACA;;AACA;EACC;;AAED;EACC;EACA;EACA;EACA;EApCL;;AAuCK;EAhDL;EASA;EAPA;EACA;EACA;EACA;;AAgDI;EACC;EACA;EACA;EACA;
|
|
1
|
+
{"version":3,"sourceRoot":"","sources":["../src/css/main.scss","../src/css/components/Button.scss","../src/css/components/CheckboxGroup.scss","../src/css/components/CheckboxOne.scss","../src/css/components/CheckboxOption.scss","../src/css/components/Combobox.scss","../src/css/components/ComponentErrors.scss","../src/css/components/Datepicker.scss","../src/css/components/Declarations.scss","../src/css/components/Dropdown.scss","../src/css/components/Duration.scss","../src/css/components/Fieldset.scss","../src/css/components/IconButton.scss","../src/css/components/Input.scss","../src/css/components/InputNumber.scss","../src/css/components/Label.scss","../src/css/components/Missing.scss","../src/css/components/ModalControls.scss","../src/css/components/RadioGroup.scss","../src/css/components/RosterForLoop.scss","../src/css/components/Roundabout.scss","../src/css/components/Sequence.scss","../src/css/components/Suggester.scss","../src/css/components/Table.scss","../src/css/components/Textarea.scss","../src/css/components/VariableStatus.scss","../src/css/components/Dragger.scss","../src/css/components/SuggesterWidget.scss"],"names":[],"mappings":";AAAA;EACE;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EAEA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EAEA;;;AAkBF;AA0BE;AA+BA;;AAxDA;EACE;EACA;;AAEF;EACE;EACA;;AAIF;AAAA;AAAA;AAAA;AAAA;EAKE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AASF;EACE;;AAEA;EACE;EACA;;AACA;EACE;;AAGJ;EACE;EACA;;AACA;EACE;;AAGJ;EACE;;AAEF;EACE;;AAMJ;EAzEA;EACA;;AA2EA;EA5EA;EACA;;AA8EA;EACE;EA3EF;EACA;EACA;;AAEA;EACE;;AAyEF;EA9EA;EACA;EACA;;AAEA;EACE;;AA6EF;EACE;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AACA;EACE;EACA;EACA;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEE;EACE;;AAEF;EACE;;;ACpJR;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EAEC;EACA;EACA;;AAED;EACC;EACA;EACA;;AAED;EACC;EACA;;;AClBE;EACE;EACA;;AAGJ;EACE;EACA;;;ACRF;EACC;;AAGF;EACC;;AAEA;EACC;EACA;EACA;;AACA;EACC;;;ACbH;EACC;;AACA;EACC;;AAGD;EACC;EACA;EACA;EACA;;;AAIH;EACC;EACA;;;ACMD;EACC;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EAEA;;AACA;EACC;EACA;EACA;;AAEC;EACC;EACA;EACA;;AACA;EACC;;AAED;EACC;EACA;EACA;EACA;EApCL;;AAuCK;EAhDL;EASA;EAPA;EACA;EACA;EACA;;AAgDI;EACC;EACA;EACA;EACA;EAhDL;EAkDK;EACA;EACA;EA7DL;EASA;EAPA;EACA;EACA;EACA;;AA2DK;EACC;EACA;EACA;;AAGD;EACC;;AAKH;EAnEH;EAqEI;EACA;EACA;EACA;;AAGA;EACC;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAED;EACC;EACA;;AAQN;EACC;EACA;EACA;EACA;;AACA;EACC;;AAIA;EACC;EACA;EACA;EACA;;AAKH;EACC;EACA;;AAEA;EACC;;AAGD;EACC;;AAGD;EACC;;AAEA;EACC;;AACA;EACC;EACA;EACA;EACA;EAKA;;AAJA;EACC;;AAMF;EAEC;EACA;EACA;EACA;EACA;;AACA;EACC;;AAKH;AAAA;AAAA;AAAA;EAIC;EACA;EACA;EACA;;AAIA;EACC;;AAED;EACC;EApMJ;EACA;EACA;;;ACFA;EACC;;;ACFF;EACE;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;;;AChBD;EACC;;AAGD;EACC;EACA;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAIF;EACC;EACA;;AACA;EACC;;;ACxBD;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAGD;EACC;EACA;;AAGD;EACC;;;ACjCJ;AAAA;EAEE;EACA;EACA;;;AAEF;EACE;;;ACPF;EACC;EACA;EACA;;;ACHD;EACC;EACA;;;AAID;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGA;EACC;EACA;EACA;;AAGD;EACC;EACA;;AAGD;EACC;;AAGD;EACC;EACA;;;AC9BA;AAAA;AAAA;AAAA;EACC;;AACA;AAAA;AAAA;AAAA;EACC;EACA;EACA;;AAGF;AAAA;AAAA;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;AAAA;AAAA;AAAA;EACC;EACA;;AAED;AAAA;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;EACC;;AAIF;AAAA;AAAA;AAAA;EACC;EACA;EACA;;;ACnCF;EACC;;AAEA;EACC;;;ACNF;EACC;EACA;;;ACHF;EACC;;;AAED;EACC;EACA;EACA;;;AAED;EACC;EACA;;;AAED;EACC;EACA;;;AAED;EACC;;;AAED;EACC;EACA;;;AAED;EACC;EACA;;;ACzBD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;;AAGD;EACC;EACA;;AACA;EACC;;AAMF;AAAA;AAAA;AAAA;EAIC;EACA;;AAGF;EACC;EACA;;;AC3CA;EACC;;AAGF;EACC;;AAEA;EACC;;AAGD;EACC;EACA;EACA;EACA;;;ACUH;EACC;EACA;EACA;EACA;;AAEC;EACC;EACA;;;ACnCH;EACC;;AAGC;EACC;;AAGD;EACC;;;ACRF;EACC;EACA;EACA;EACA;EACA;EACA;;;AC8BD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAIA;EACC;;AACA;EACC;EACA;EACA;;AAQC;EACC;EACA;EACA;;AACA;EACC;;AAED;EACC;EACA;EACA;EACA;EAvEN;;AA0EM;EAlEN;EARA;EAUA;EACA;EACA;EACA;;AAkEK;EACC;EACA;EACA;EACA;EACA;EApFN;;AAuFM;EACC;EAhFP;EARA;EAUA;EACA;EACA;EACA;;AA8EM;EACC;EACA;EACA;;AAGD;EACC;;AAKH;EAvGJ;EAyGK;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;;AAED;EACC;EACA;;AASP;EACC;EACA;EACA;;AAEA;EACC;;AAjIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAsHA;EACC;;AArIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AA0HA;EACC;;AAzIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AA+HA;EACC;EACA;;AACA;EACC;EACA;EACA;;;ACpKH;EACC;EACA;EACA;EACA;;AACA;AAAA;EAEC;EACA;EACA;;AAGA;AAAA;EAEC;EACA;EACA;;AAKH;EACC;EACA;;;ACrBD;EACC;EACA;;;ACLF;EACC;AAMA;AAUA;;AAdA;EACC;;AAID;EACC;EACA;EACA;EACA;EACA;EACA;;AAID;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAEC;EACC;;AAED;EACC;;;AC/BJ;EACE;EACA;EACA;EACA;EACA;EACA;;;ACaD;EACC;EACA;;AAED;EACC;EACA;EACA,kBA1BO;EA2BP;EACA;EACA;EACA;;AAlBD;EACC;EACA;;AAoBA;EACC;EACA;EACA;EACA;;AACA;EACC;EACA,OAxCK;EAyCL;EACA;EACA;;AAED;EACC,OA9CK;EA+CL;EACA;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;EACA,kBA1DK;;AA4DL;EACC;EACA;;AAGD;EACC,kBAjEI;EAkEJ;EACA;;AAIA;EACC;EACA;EACA,MA5EG;;AAiFN;EACC;EACA;EACA;EACA;;AAGC;EACC,cAvFG;EAwFH;EAMA;;AALA;EACC,kBA1FE;EA2FF;;AAOH;EACC;EACA;EACA;;AACA;EACC,kBAxGG;EAyGH;;AAMJ;EACC;EACA;EACA;EACA,kBApHM;EAqHN;EACA;EACA;EACA;EACA;;AAGC;EACC;;AAIF;EACC;EACA;EACA,MAnIK;;AAWR;EACC;EACA;;AA4HA;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA,kBAnJK;EAoJL;EACA;;AAEA;EACC;;AAGD;EACC,kBA1JI;EA2JJ;;AAGD;EACC;;AACA;EACC;;AAED;EACC;EACA;EACA,MAzKG","file":"main.css"}
|
package/lib/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@inseefr/lunatic",
|
|
3
|
-
"version": "3.0.0-rc.
|
|
3
|
+
"version": "3.0.0-rc.14",
|
|
4
4
|
"workersVersion": "0.3.0",
|
|
5
5
|
"description": "Library of questionnaire components",
|
|
6
6
|
"repository": {
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"test:e2e:codegen": "playwright codegen http://localhost:9999/iframe.html?viewMode=story&id=",
|
|
47
47
|
"test:storybook": "test-storybook --url http://localhost:9999 --maxWorkers=4 --no-cache",
|
|
48
48
|
"test-watch": "vitest",
|
|
49
|
-
"check": "tsc",
|
|
49
|
+
"check": "tsc --noEmit",
|
|
50
50
|
"lint": "eslint ./src",
|
|
51
51
|
"lint:check": "eslint . --ext .ts,.tsx",
|
|
52
52
|
"_format": "prettier **/*.{ts,tsx,json}",
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
"build-workers": "node ./scripts/build/build-workers.js",
|
|
57
57
|
"prepare-workers": "npm run build-workers && node ./scripts/build/add-workers-to-public.js",
|
|
58
58
|
"postinstall": "node ./scripts/build/add-workers-to-public.js",
|
|
59
|
-
"build": "tsc
|
|
59
|
+
"build": "tsc && sass ./src/css/main.scss ./lib/main.css && cp -R ./src/css/icons ./lib/icons && npm run build-workers",
|
|
60
60
|
"storybook": "npm run prepare-workers && storybook dev -p 9999 --no-open",
|
|
61
61
|
"build-storybook": "npm run prepare-workers && storybook build"
|
|
62
62
|
},
|
|
@@ -6,24 +6,25 @@ type Props = {
|
|
|
6
6
|
className?: string;
|
|
7
7
|
classNamePrefix?: string;
|
|
8
8
|
placeholder?: string;
|
|
9
|
-
onSelect: (option:
|
|
9
|
+
onSelect: (option: SuggesterOptionType | null) => void;
|
|
10
|
+
onBlur: () => void;
|
|
11
|
+
onFocus: () => void;
|
|
12
|
+
value: {
|
|
10
13
|
id?: string;
|
|
11
14
|
[key: string]: ReactNode;
|
|
12
|
-
}
|
|
13
|
-
value: string | null;
|
|
15
|
+
}[];
|
|
14
16
|
labelRenderer: LunaticComponentProps<'Suggester'>['labelRenderer'];
|
|
15
17
|
optionRenderer: LunaticComponentProps<'Suggester'>['optionRenderer'];
|
|
16
18
|
disabled?: boolean;
|
|
17
19
|
readOnly?: boolean;
|
|
18
20
|
id?: string;
|
|
19
|
-
searching?: (s: string | null) => Promise<{
|
|
20
|
-
results: SuggesterOptionType[];
|
|
21
|
-
search: string;
|
|
22
|
-
}>;
|
|
23
21
|
label?: ReactNode;
|
|
24
22
|
description?: ReactNode;
|
|
25
23
|
errors?: LunaticError[];
|
|
26
|
-
|
|
24
|
+
options: SuggesterOptionType[];
|
|
25
|
+
onSearch: (s: string) => void;
|
|
26
|
+
search: string;
|
|
27
|
+
state: 'loading' | 'error' | 'success';
|
|
27
28
|
};
|
|
28
29
|
export declare const CustomSuggester: import("react").ComponentType<Props>;
|
|
29
30
|
export {};
|
|
@@ -1,40 +1,13 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { useCallback
|
|
2
|
+
import { useCallback } from 'react';
|
|
3
3
|
import { voidFunction } from '../../utils/function';
|
|
4
4
|
import D from '../../i18n';
|
|
5
5
|
import { slottableComponent } from '../shared/HOC/slottableComponent';
|
|
6
6
|
import { Combobox } from '../shared/Combobox/Combobox';
|
|
7
|
-
export const CustomSuggester = slottableComponent('Suggester', ({ className, classNamePrefix = 'lunatic', placeholder = D.PLACEHOLDER, onSelect = voidFunction, labelRenderer, optionRenderer, value, disabled, readOnly, id,
|
|
8
|
-
const [search, setSearch] = useState('');
|
|
9
|
-
const [options, setOptions] = useState(defaultOptions ?? []);
|
|
10
|
-
const lastSearch = useRef('');
|
|
7
|
+
export const CustomSuggester = slottableComponent('Suggester', ({ className, classNamePrefix = 'lunatic', placeholder = D.PLACEHOLDER, onSelect = voidFunction, labelRenderer, optionRenderer, value, disabled, readOnly, id, search, label, description, errors, options, onSearch, onBlur, state, onFocus, }) => {
|
|
11
8
|
const handleSelect = useCallback((id) => {
|
|
12
|
-
onSelect(
|
|
9
|
+
onSelect(options.find((o) => o.id === id) ?? null);
|
|
13
10
|
}, [onSelect]);
|
|
14
|
-
|
|
15
|
-
lastSearch.current = search ?? '';
|
|
16
|
-
if (search && typeof searching === 'function') {
|
|
17
|
-
const { results, search: previous } = await searching(search);
|
|
18
|
-
if (previous === lastSearch.current) {
|
|
19
|
-
setOptions(results);
|
|
20
|
-
setSearch(search);
|
|
21
|
-
// if a user does not select an option in the list, their search term is saved
|
|
22
|
-
onSelect(search);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
else {
|
|
26
|
-
setOptions(defaultOptions ?? []);
|
|
27
|
-
onSelect(null);
|
|
28
|
-
setSearch('');
|
|
29
|
-
}
|
|
30
|
-
}, [searching, onSelect]);
|
|
31
|
-
const defaultSearch = getSearch(search, value);
|
|
32
|
-
return (_jsx(Combobox, { id: id, className: className, classNamePrefix: classNamePrefix, onChange: handleChange, disabled: disabled, readOnly: readOnly, options: options, editable: true, onSelect: handleSelect, value: value, search: defaultSearch, optionRenderer: optionRenderer, labelRenderer: labelRenderer, placeholder: placeholder, label: label, description: description, errors: errors }));
|
|
11
|
+
return (_jsx(Combobox, { id: id, isLoading: state === 'loading', className: className, classNamePrefix: classNamePrefix, onChange: (v) => onSearch(v ?? ''), disabled: disabled, readOnly: readOnly, options: options, editable: true, onBlur: onBlur, onFocus: onFocus, onSelect: handleSelect, value: value[0]?.id ?? '', search: search, optionRenderer: optionRenderer, labelRenderer: labelRenderer, placeholder: placeholder, label: label, description: description, errors: errors }));
|
|
33
12
|
});
|
|
34
|
-
function getSearch(search, value) {
|
|
35
|
-
if (!search.length && value) {
|
|
36
|
-
return value;
|
|
37
|
-
}
|
|
38
|
-
return '';
|
|
39
|
-
}
|
|
40
13
|
//# sourceMappingURL=CustomSuggester.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CustomSuggester.js","sourceRoot":"","sources":["../../../../src/components/Suggester/CustomSuggester.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAkB,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"CustomSuggester.js","sourceRoot":"","sources":["../../../../src/components/Suggester/CustomSuggester.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAkB,WAAW,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,CAAC,MAAM,YAAY,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAyBvD,MAAM,CAAC,MAAM,eAAe,GAAG,kBAAkB,CAChD,WAAW,EACX,CAAC,EACA,SAAS,EACT,eAAe,GAAG,SAAS,EAC3B,WAAW,GAAG,CAAC,CAAC,WAAW,EAC3B,QAAQ,GAAG,YAAY,EACvB,aAAa,EACb,cAAc,EACd,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,EAAE,EACF,MAAM,EACN,KAAK,EACL,WAAW,EACX,MAAM,EACN,OAAO,EACP,QAAQ,EACR,MAAM,EACN,KAAK,EACL,OAAO,GACP,EAAE,EAAE;IACJ,MAAM,YAAY,GAAG,WAAW,CAC/B,CAAC,EAAiB,EAAE,EAAE;QACrB,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC;IACpD,CAAC,EACD,CAAC,QAAQ,CAAC,CACV,CAAC;IAEF,OAAO,CACN,KAAC,QAAQ,IACR,EAAE,EAAE,EAAE,EACN,SAAS,EAAE,KAAK,KAAK,SAAS,EAC9B,SAAS,EAAE,SAAS,EACpB,eAAe,EAAE,eAAe,EAChC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC,EAClC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,IAAI,EACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,YAAY,EACtB,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EACzB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,cAAc,EAC9B,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,MAAM,GACb,CACF,CAAC;AACH,CAAC,CACD,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { LunaticComponentProps } from '../type';
|
|
2
|
-
export declare function Suggester({ storeName, idbVersion, id, className, optionRenderer, labelRenderer, handleChange, disabled, value, label, description,
|
|
2
|
+
export declare function Suggester({ storeName, idbVersion, id, className, optionRenderer, labelRenderer, handleChange, disabled, value, label, description, errors, readOnly, workersBasePath, getSuggesterStatus, response, optionResponses, executeExpression, iteration, arbitrary, arbitraryValue, }: LunaticComponentProps<'Suggester'>): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,40 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from 'react';
|
|
3
3
|
import { CustomSuggester } from './CustomSuggester';
|
|
4
|
-
import { createSearching } from './helpers';
|
|
5
|
-
import { SuggesterStatus } from './SuggesterStatus';
|
|
6
4
|
import { getComponentErrors } from '../shared/ComponentErrors/ComponentErrors';
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const onChange = (v) => {
|
|
11
|
-
if (v && typeof v === 'object' && optionResponses) {
|
|
12
|
-
if (v.id) {
|
|
13
|
-
handleChange(response, v.id);
|
|
14
|
-
}
|
|
15
|
-
for (const optionResponse of optionResponses) {
|
|
16
|
-
if (optionResponse.attribute in v) {
|
|
17
|
-
handleChange({ name: optionResponse.name }, v[optionResponse.attribute]);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
handleChange(response, v);
|
|
23
|
-
}
|
|
24
|
-
};
|
|
25
|
-
// Fetch suggester info when the suggester is mounted
|
|
26
|
-
useEffect(() => {
|
|
27
|
-
fetchInfos();
|
|
28
|
-
}, [fetchInfos]);
|
|
29
|
-
const searching = useMemo(function () {
|
|
30
|
-
if (infos) {
|
|
31
|
-
return createSearching(storeName, idbVersion, workersBasePath);
|
|
32
|
-
}
|
|
33
|
-
return undefined;
|
|
34
|
-
}, [infos, storeName, idbVersion, workersBasePath]);
|
|
5
|
+
import { OTHER_VALUE, useSuggestions } from './useSuggestions';
|
|
6
|
+
import D from '../../i18n';
|
|
7
|
+
export function Suggester({ storeName, idbVersion = '1', id, className, optionRenderer, labelRenderer, handleChange, disabled, value, label, description, errors, readOnly, workersBasePath, getSuggesterStatus, response, optionResponses = [], executeExpression, iteration, arbitrary, arbitraryValue, }) {
|
|
35
8
|
// Default options should not change between render
|
|
36
9
|
// so we can break the rule of hooks here
|
|
37
|
-
const
|
|
10
|
+
const [selectedOptions, setSelectedOptions] = useState(() => {
|
|
11
|
+
if (arbitraryValue) {
|
|
12
|
+
return [{ id: 'OTHER', label: arbitraryValue, value: 'OTHER' }];
|
|
13
|
+
}
|
|
38
14
|
if (!value) {
|
|
39
15
|
return [];
|
|
40
16
|
}
|
|
@@ -55,7 +31,53 @@ export function Suggester({ storeName, idbVersion = '1', id, className, optionRe
|
|
|
55
31
|
value: value,
|
|
56
32
|
},
|
|
57
33
|
];
|
|
58
|
-
}
|
|
59
|
-
|
|
34
|
+
});
|
|
35
|
+
const { state, options, search, setSearch, onFocus, onBlur } = useSuggestions({
|
|
36
|
+
indexStatus: getSuggesterStatus(storeName).status,
|
|
37
|
+
storeName: storeName,
|
|
38
|
+
idbVersion: idbVersion,
|
|
39
|
+
workersBasePath: workersBasePath,
|
|
40
|
+
allowArbitrary: !!arbitrary,
|
|
41
|
+
selectedOptions: selectedOptions,
|
|
42
|
+
});
|
|
43
|
+
const onChange = (v) => {
|
|
44
|
+
setSelectedOptions(v?.id ? [v] : []);
|
|
45
|
+
// User has selected an option
|
|
46
|
+
if (v?.id && v.id !== OTHER_VALUE) {
|
|
47
|
+
handleChange(response, v.id);
|
|
48
|
+
if (arbitrary) {
|
|
49
|
+
handleChange(arbitrary.response, null);
|
|
50
|
+
}
|
|
51
|
+
// Update additional responses
|
|
52
|
+
for (const optionResponse of optionResponses) {
|
|
53
|
+
if (optionResponse.attribute in v) {
|
|
54
|
+
handleChange({ name: optionResponse.name }, v[optionResponse.attribute]);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
// User chose an arbitrary option or clear the value
|
|
60
|
+
handleChange(arbitrary.response, v?.id === OTHER_VALUE ? search : null);
|
|
61
|
+
handleChange(response, null);
|
|
62
|
+
for (const optionResponse of optionResponses) {
|
|
63
|
+
handleChange({ name: optionResponse.name }, null);
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
let componentErrors = getComponentErrors(errors, id) ?? [];
|
|
67
|
+
if (state === 'error') {
|
|
68
|
+
componentErrors.push({
|
|
69
|
+
id: 'suggester',
|
|
70
|
+
errorMessage: D.SUGGESTER_ERROR,
|
|
71
|
+
criticality: 'ERROR',
|
|
72
|
+
typeOfControl: 'FORMAT',
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
const handleSearch = (query) => {
|
|
76
|
+
if (query === '' && selectedOptions.length > 0) {
|
|
77
|
+
onChange(null);
|
|
78
|
+
}
|
|
79
|
+
setSearch(query);
|
|
80
|
+
};
|
|
81
|
+
return (_jsx(CustomSuggester, { state: state, id: id, className: className, optionRenderer: optionRenderer, labelRenderer: labelRenderer, options: options, onSelect: onChange, onFocus: onFocus, search: search, onSearch: handleSearch, disabled: disabled, readOnly: readOnly, value: selectedOptions, label: label, onBlur: onBlur, description: description, errors: componentErrors }));
|
|
60
82
|
}
|
|
61
83
|
//# sourceMappingURL=Suggester.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Suggester.js","sourceRoot":"","sources":["../../../../src/components/Suggester/Suggester.tsx"],"names":[],"mappings":";AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"Suggester.js","sourceRoot":"","sources":["../../../../src/components/Suggester/Suggester.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,CAAC,MAAM,YAAY,CAAC;AAG3B,MAAM,UAAU,SAAS,CAAC,EACzB,SAAS,EACT,UAAU,GAAG,GAAG,EAChB,EAAE,EACF,SAAS,EACT,cAAc,EACd,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,KAAK,EACL,KAAK,EACL,WAAW,EACX,MAAM,EACN,QAAQ,EACR,eAAe,EACf,kBAAkB,EAClB,QAAQ,EACR,eAAe,GAAG,EAAE,EACpB,iBAAiB,EACjB,SAAS,EACT,SAAS,EACT,cAAc,GACsB;IACpC,mDAAmD;IACnD,yCAAyC;IACzC,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CACrD,GAAG,EAAE;QACJ,IAAI,cAAc,EAAE,CAAC;YACpB,OAAO,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,OAAO,EAAE,CAAC;QACX,CAAC;QACD,MAAM,aAAa,GAAG,eAAe,EAAE,IAAI,CAC1C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,OAAO,CAC9B,CAAC;QACF,IAAI,CAAC,aAAa,EAAE,CAAC;YACpB,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACpD,CAAC;QACD,MAAM,KAAK,GAAG,iBAAiB,CAAC,aAAa,CAAC,IAAI,EAAE;YACnD,SAAS;SACT,CAAC,CAAC;QACH,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC/B,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACpD,CAAC;QACD,OAAO;YACN;gBACC,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,KAAK;aACZ;SACD,CAAC;IACH,CAAC,CACD,CAAC;IAEF,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,cAAc,CAC5E;QACC,WAAW,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC,MAAM;QACjD,SAAS,EAAE,SAAS;QACpB,UAAU,EAAE,UAAU;QACtB,eAAe,EAAE,eAAe;QAChC,cAAc,EAAE,CAAC,CAAC,SAAS;QAC3B,eAAe,EAAE,eAAe;KAChC,CACD,CAAC;IAEF,MAAM,QAAQ,GAAG,CAAC,CAA6B,EAAE,EAAE;QAClD,kBAAkB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACrC,8BAA8B;QAC9B,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,WAAW,EAAE,CAAC;YACnC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAC7B,IAAI,SAAS,EAAE,CAAC;gBACf,YAAY,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACxC,CAAC;YACD,8BAA8B;YAC9B,KAAK,MAAM,cAAc,IAAI,eAAe,EAAE,CAAC;gBAC9C,IAAI,cAAc,CAAC,SAAS,IAAI,CAAC,EAAE,CAAC;oBACnC,YAAY,CACX,EAAE,IAAI,EAAE,cAAc,CAAC,IAAI,EAAE,EAC7B,CAAC,CAAC,cAAc,CAAC,SAAS,CAAkB,CAC5C,CAAC;gBACH,CAAC;YACF,CAAC;YACD,OAAO;QACR,CAAC;QACD,oDAAoD;QACpD,YAAY,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACxE,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC7B,KAAK,MAAM,cAAc,IAAI,eAAe,EAAE,CAAC;YAC9C,YAAY,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;QACnD,CAAC;IACF,CAAC,CAAC;IAEF,IAAI,eAAe,GAAG,kBAAkB,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;IAC3D,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;QACvB,eAAe,CAAC,IAAI,CAAC;YACpB,EAAE,EAAE,WAAW;YACf,YAAY,EAAE,CAAC,CAAC,eAAe;YAC/B,WAAW,EAAE,OAAO;YACpB,aAAa,EAAE,QAAQ;SACvB,CAAC,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,EAAE;QACtC,IAAI,KAAK,KAAK,EAAE,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC;QACD,SAAS,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO,CACN,KAAC,eAAe,IACf,KAAK,EAAE,KAAK,EACZ,EAAE,EAAE,EAAE,EACN,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,cAAc,EAC9B,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,eAAe,EACtB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,eAAe,GACtB,CACF,CAAC;AACH,CAAC"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
status: SuggesterStatus;
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
type Props = {
|
|
3
|
+
status: 'Error' | 'Idle';
|
|
5
4
|
storeName: string;
|
|
6
5
|
label?: ReactNode;
|
|
7
6
|
description?: ReactNode;
|
|
8
|
-
}
|
|
9
|
-
export declare const SuggesterNotification:
|
|
7
|
+
};
|
|
8
|
+
export declare const SuggesterNotification: import("react").ComponentType<Props>;
|
|
10
9
|
export {};
|
|
@@ -1,21 +1,16 @@
|
|
|
1
1
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import
|
|
3
|
-
import { STATUS } from './SuggesterStatus';
|
|
2
|
+
import {} from 'react';
|
|
4
3
|
import { Notification } from '../shared/Notification';
|
|
5
|
-
import { SuggesterStatus } from '../../use-lunatic/use-suggesters';
|
|
6
4
|
import { slottableComponent } from '../shared/HOC/slottableComponent';
|
|
7
5
|
import { Label } from '../shared/Label/Label';
|
|
8
|
-
function LunaticSuggesterNotification({
|
|
9
|
-
if (status ===
|
|
6
|
+
function LunaticSuggesterNotification({ status, storeName, label, description, }) {
|
|
7
|
+
if (status === 'Idle') {
|
|
10
8
|
return (_jsxs(_Fragment, { children: [_jsx(Label, { description: description, children: label }), _jsx(Notification, { className: "info", title: `Chargement : ${storeName}`, description: `Votre référentiel est en cours de chargement. Vous pouvez poursuivre le questionnaire et revenir ultérieurement sur cette question.` })] }));
|
|
11
9
|
}
|
|
12
|
-
if (status ===
|
|
10
|
+
if (status === 'Error') {
|
|
13
11
|
return (_jsxs(_Fragment, { children: [_jsx(Label, { description: description, children: label }), _jsx(Notification, { className: "error", title: `Échec chargement`, description: `Le référentiel ${storeName} n'a pas pu finir son chargement correctement.` })] }));
|
|
14
12
|
}
|
|
15
|
-
|
|
16
|
-
return (_jsxs(_Fragment, { children: [_jsx(Label, { description: description, children: label }), _jsx(Notification, { className: "warn", title: `Référentiel inconnu`, description: `Le référentiel ${storeName} n'est pas pris en compte par l'application.` })] }));
|
|
17
|
-
}
|
|
18
|
-
return _jsx(_Fragment, { children: children });
|
|
13
|
+
return (_jsxs(_Fragment, { children: [_jsx(Label, { description: description, children: label }), _jsx(Notification, { className: "warn", title: `Référentiel inconnu`, description: `Le référentiel ${storeName} n'est pas pris en compte par l'application.` })] }));
|
|
19
14
|
}
|
|
20
15
|
export const SuggesterNotification = slottableComponent('SuggesterNotification', LunaticSuggesterNotification);
|
|
21
16
|
//# sourceMappingURL=SuggesterNotification.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SuggesterNotification.js","sourceRoot":"","sources":["../../../../src/components/Suggester/SuggesterNotification.tsx"],"names":[],"mappings":";AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"SuggesterNotification.js","sourceRoot":"","sources":["../../../../src/components/Suggester/SuggesterNotification.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAS9C,SAAS,4BAA4B,CAAC,EACrC,MAAM,EACN,SAAS,EACT,KAAK,EACL,WAAW,GACJ;IACP,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACvB,OAAO,CACN,8BACC,KAAC,KAAK,IAAC,WAAW,EAAE,WAAW,YAAG,KAAK,GAAS,EAChD,KAAC,YAAY,IACZ,SAAS,EAAC,MAAM,EAChB,KAAK,EAAE,gBAAgB,SAAS,EAAE,EAClC,WAAW,EAAE,qIAAqI,GACjJ,IACA,CACH,CAAC;IACH,CAAC;IACD,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QACxB,OAAO,CACN,8BACC,KAAC,KAAK,IAAC,WAAW,EAAE,WAAW,YAAG,KAAK,GAAS,EAChD,KAAC,YAAY,IACZ,SAAS,EAAC,OAAO,EACjB,KAAK,EAAE,kBAAkB,EACzB,WAAW,EAAE,kBAAkB,SAAS,gDAAgD,GACvF,IACA,CACH,CAAC;IACH,CAAC;IACD,OAAO,CACN,8BACC,KAAC,KAAK,IAAC,WAAW,EAAE,WAAW,YAAG,KAAK,GAAS,EAChD,KAAC,YAAY,IACZ,SAAS,EAAC,MAAM,EAChB,KAAK,EAAE,qBAAqB,EAC5B,WAAW,EAAE,kBAAkB,SAAS,8CAA8C,GACrF,IACA,CACH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAAkB,CACtD,uBAAuB,EACvB,4BAA4B,CAC5B,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { SuggesterOptionType } from './SuggesterType';
|
|
2
|
+
import { SuggesterStatus } from '../../use-lunatic/use-suggesters';
|
|
3
|
+
type Props = {
|
|
4
|
+
indexStatus: SuggesterStatus;
|
|
5
|
+
storeName: string;
|
|
6
|
+
idbVersion: string;
|
|
7
|
+
workersBasePath?: string;
|
|
8
|
+
selectedOptions: SuggesterOptionType[];
|
|
9
|
+
allowArbitrary: boolean;
|
|
10
|
+
};
|
|
11
|
+
export declare const OTHER_VALUE = "OTHER";
|
|
12
|
+
export declare function useSuggestions({ indexStatus, storeName, idbVersion, workersBasePath, selectedOptions, allowArbitrary, }: Props): {
|
|
13
|
+
search: string;
|
|
14
|
+
setSearch: (s: string) => void;
|
|
15
|
+
state: "error" | "success" | "loading";
|
|
16
|
+
options: SuggesterOptionType[];
|
|
17
|
+
onBlur: () => void;
|
|
18
|
+
onFocus: () => void;
|
|
19
|
+
};
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { useMemo, useRef, useState } from 'react';
|
|
2
|
+
import { createSearching } from './helpers';
|
|
3
|
+
import { useEffectDebounced } from '../../hooks/useDebounce';
|
|
4
|
+
import { SuggesterStatus } from '../../use-lunatic/use-suggesters';
|
|
5
|
+
export const OTHER_VALUE = 'OTHER';
|
|
6
|
+
const getStateFromSuggesterStatus = (suggesterStatus) => {
|
|
7
|
+
if (suggesterStatus === SuggesterStatus.error ||
|
|
8
|
+
suggesterStatus === SuggesterStatus.unknown) {
|
|
9
|
+
return 'error';
|
|
10
|
+
}
|
|
11
|
+
return 'success';
|
|
12
|
+
};
|
|
13
|
+
export function useSuggestions({ indexStatus, storeName, idbVersion, workersBasePath, selectedOptions, allowArbitrary, }) {
|
|
14
|
+
const [search, setSearch] = useState('');
|
|
15
|
+
const isReady = indexStatus === SuggesterStatus.success;
|
|
16
|
+
const lastSearch = useRef();
|
|
17
|
+
const [state, setState] = useState(getStateFromSuggesterStatus(indexStatus));
|
|
18
|
+
let [options, setOptions] = useState(selectedOptions);
|
|
19
|
+
const searching = useMemo(() => {
|
|
20
|
+
if (!isReady) {
|
|
21
|
+
// While waiting for the search to be ready, remember the last search done
|
|
22
|
+
return (name) => {
|
|
23
|
+
return new Promise((resolve) => {
|
|
24
|
+
lastSearch.current = [name, resolve];
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
const searching = createSearching(storeName, idbVersion, workersBasePath);
|
|
29
|
+
// Solve the last pending search
|
|
30
|
+
const pendingSearch = lastSearch.current;
|
|
31
|
+
if (pendingSearch && pendingSearch[0]) {
|
|
32
|
+
searching(pendingSearch[0]).then((r) => pendingSearch[1](r));
|
|
33
|
+
lastSearch.current = undefined;
|
|
34
|
+
}
|
|
35
|
+
return searching;
|
|
36
|
+
}, [isReady, storeName, idbVersion, workersBasePath]);
|
|
37
|
+
useEffectDebounced(() => {
|
|
38
|
+
searching?.(search)
|
|
39
|
+
.then((r) => {
|
|
40
|
+
setOptions(r.results);
|
|
41
|
+
setState('success');
|
|
42
|
+
})
|
|
43
|
+
.catch(() => setState('error'));
|
|
44
|
+
}, [search], 300);
|
|
45
|
+
if (search && allowArbitrary && options.length === 0 && state === 'success') {
|
|
46
|
+
options = [
|
|
47
|
+
{
|
|
48
|
+
id: OTHER_VALUE,
|
|
49
|
+
label: search,
|
|
50
|
+
value: OTHER_VALUE,
|
|
51
|
+
},
|
|
52
|
+
];
|
|
53
|
+
}
|
|
54
|
+
// Since the underlying implementation of onFocus / onBlur can be wrong, ensure we don't call focus / blur handler multiple times
|
|
55
|
+
const [isFocused, setFocused] = useState(false);
|
|
56
|
+
return {
|
|
57
|
+
search,
|
|
58
|
+
setSearch: (s) => {
|
|
59
|
+
if (state === 'error') {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
setState('loading');
|
|
63
|
+
setSearch(s);
|
|
64
|
+
},
|
|
65
|
+
state,
|
|
66
|
+
options: isFocused ? options : selectedOptions,
|
|
67
|
+
onBlur: () => {
|
|
68
|
+
// Prevent extra calls
|
|
69
|
+
if (!isFocused) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
setFocused(false);
|
|
73
|
+
setSearch('');
|
|
74
|
+
setOptions(selectedOptions);
|
|
75
|
+
},
|
|
76
|
+
onFocus: () => {
|
|
77
|
+
// Prevent extra calls
|
|
78
|
+
if (isFocused) {
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
setFocused(true);
|
|
82
|
+
setSearch(selectedOptions[0]?.label ?? '');
|
|
83
|
+
},
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=useSuggestions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSuggestions.js","sourceRoot":"","sources":["../../../../src/components/Suggester/useSuggestions.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,8 +14,10 @@ type Props = ComboboxSelectionProps & ComboboxPanelProps & {
|
|
|
14
14
|
onChange?: (s: string | null) => void;
|
|
15
15
|
onSelect: (s: string | null) => void;
|
|
16
16
|
onBlur?: () => void;
|
|
17
|
+
onFocus?: () => void;
|
|
17
18
|
options: ComboboxOptionType[];
|
|
18
19
|
readOnly?: boolean;
|
|
20
|
+
isLoading?: boolean;
|
|
19
21
|
};
|
|
20
22
|
export declare const Combobox: import("react").ComponentType<Props>;
|
|
21
23
|
export {};
|
|
@@ -11,16 +11,16 @@ import { between, forceInt } from '../../../utils/number';
|
|
|
11
11
|
import { Label } from '../Label/Label';
|
|
12
12
|
import { slottableComponent } from '../HOC/slottableComponent';
|
|
13
13
|
const EMPTY_SEARCH = '';
|
|
14
|
-
function LunaticComboBox({ className, classNamePrefix, classStyle = 'default-style', placeholder = 'Commencez votre saisie...', editable = false, disabled, readOnly, id, optionRenderer, labelRenderer, onChange, onSelect, value, options, messageError, search
|
|
14
|
+
function LunaticComboBox({ className, classNamePrefix, classStyle = 'default-style', placeholder = 'Commencez votre saisie...', editable = false, disabled, readOnly, id, optionRenderer, labelRenderer, onChange, onSelect, value, options, messageError, search = EMPTY_SEARCH, getOptionValue = getDefaultOptionValue, label, description, errors, onBlur, onFocus, isLoading, }) {
|
|
15
15
|
const [expanded, setExpanded] = useState(false);
|
|
16
16
|
const [focused, setFocused] = useState(false);
|
|
17
|
-
const [search, setSearch] = useState(searchProps ?? '');
|
|
18
17
|
const selectedIndex = getIndexFromOptions(options, value, getOptionValue);
|
|
19
18
|
const labelId = `label-${id}`;
|
|
20
19
|
const handleFocus = () => {
|
|
21
20
|
if (disabled || readOnly) {
|
|
22
21
|
return;
|
|
23
22
|
}
|
|
23
|
+
onFocus?.();
|
|
24
24
|
setExpanded(true);
|
|
25
25
|
setFocused(true);
|
|
26
26
|
};
|
|
@@ -28,24 +28,23 @@ function LunaticComboBox({ className, classNamePrefix, classStyle = 'default-sty
|
|
|
28
28
|
if (disabled || readOnly) {
|
|
29
29
|
return;
|
|
30
30
|
}
|
|
31
|
-
onBlur?.();
|
|
32
31
|
setExpanded(false);
|
|
33
32
|
setFocused(false);
|
|
33
|
+
onBlur?.();
|
|
34
34
|
};
|
|
35
35
|
const handleSelect = (index, close = true) => {
|
|
36
36
|
const indexNumber = between(forceInt(index), 0, options.length);
|
|
37
37
|
const option = options[indexNumber];
|
|
38
38
|
if (close) {
|
|
39
39
|
setExpanded(false);
|
|
40
|
+
onBlur?.();
|
|
40
41
|
}
|
|
41
42
|
onSelect(getOptionValue(option));
|
|
42
43
|
};
|
|
43
44
|
const handleChange = (s) => {
|
|
44
|
-
setSearch(s ?? '');
|
|
45
45
|
onChange?.(s);
|
|
46
46
|
};
|
|
47
47
|
const handleClear = () => {
|
|
48
|
-
setSearch('');
|
|
49
48
|
setExpanded(false);
|
|
50
49
|
onChange?.(EMPTY_SEARCH);
|
|
51
50
|
onSelect(null);
|
|
@@ -78,7 +77,7 @@ function LunaticComboBox({ className, classNamePrefix, classStyle = 'default-sty
|
|
|
78
77
|
if (messageError) {
|
|
79
78
|
return (_jsx("div", { className: "lunatic-combo-box-message-error", children: messageError }));
|
|
80
79
|
}
|
|
81
|
-
return (_jsxs(ComboboxContainer, { id: id, className: className, classStyle: classStyle, classNamePrefix: classNamePrefix, errors: errors, children: [_jsx(Label, { htmlFor: id, id: labelId, description: description, children: label }), _jsxs(ComboboxContent, { focused: focused, onFocus: handleFocus, onBlur: handleBlur, onKeyDown: onKeyDown, classNamePrefix: classNamePrefix, children: [_jsx(ComboboxSelection, { labelRenderer: labelRenderer, placeholder: placeholder, search: search, expanded: expanded, id: id, labelId: labelId, disabled: disabled, readOnly: readOnly, focused: focused, editable: editable, selectedIndex: selectedIndex, options: options, onChange: handleChange, classNamePrefix: classNamePrefix, invalid: !!errors }), _jsx(ComboboxPanel, { optionRenderer: optionRenderer, options: options, focused: focused, selectedIndex: selectedIndex, expanded: expanded, id: id, search: search, onSelect: handleSelect })] }), showClearButton && (_jsx(ComboboxClearButton, { className: classnames({ focused }), search: search, onClick: handleClear, editable: editable }))] }));
|
|
80
|
+
return (_jsxs(ComboboxContainer, { id: id, className: className, classStyle: classStyle, classNamePrefix: classNamePrefix, errors: errors, children: [_jsx(Label, { htmlFor: id, id: labelId, description: description, children: label }), _jsxs(ComboboxContent, { focused: focused, onFocus: handleFocus, onBlur: handleBlur, onKeyDown: onKeyDown, classNamePrefix: classNamePrefix, children: [_jsx(ComboboxSelection, { labelRenderer: labelRenderer, placeholder: placeholder, search: search, expanded: expanded, id: id, labelId: labelId, disabled: disabled, readOnly: readOnly, focused: focused, editable: editable, selectedIndex: selectedIndex, options: options, onChange: handleChange, classNamePrefix: classNamePrefix, invalid: !!errors }), _jsx(ComboboxPanel, { isLoading: isLoading, optionRenderer: optionRenderer, options: options, focused: focused, selectedIndex: selectedIndex, expanded: expanded, id: id, search: search, onSelect: handleSelect })] }), showClearButton && (_jsx(ComboboxClearButton, { className: classnames({ focused }), search: search, onClick: handleClear, editable: editable }))] }));
|
|
82
81
|
}
|
|
83
82
|
function getIndexFromOptions(options, value, getOptionValue) {
|
|
84
83
|
if (!Array.isArray(options)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Combobox.js","sourceRoot":"","sources":["../../../../../src/components/shared/Combobox/Combobox.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAkB,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAMpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAG/D,MAAM,YAAY,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"Combobox.js","sourceRoot":"","sources":["../../../../../src/components/shared/Combobox/Combobox.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import classnames from 'classnames';
|
|
3
3
|
import { slottableComponent } from '../../HOC/slottableComponent';
|
|
4
|
+
import D from '../../../../i18n';
|
|
4
5
|
export const ComboboxOption = slottableComponent('ComboboxOption', ({ option, selected }) => {
|
|
5
6
|
const { id, value, label } = option;
|
|
7
|
+
if (value === 'OTHER') {
|
|
8
|
+
return (_jsx("div", { className: classnames('lunatic-combo-box-option', { selected }), children: _jsx("span", { className: "label", children: `${D.SUGGESTER_NO_RESULT} : ${D.SUGGESTER_ARBITRARY} "${label}"` }) }));
|
|
9
|
+
}
|
|
6
10
|
if (label && typeof label === 'string' && label.length) {
|
|
7
11
|
return (_jsxs("div", { className: classnames('lunatic-combo-box-option', { selected }), children: [_jsx("span", { className: "id", children: id || value }), _jsx("span", { children: " - " }), _jsx("span", { className: "label", children: label })] }));
|
|
8
12
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComboboxOption.js","sourceRoot":"","sources":["../../../../../../src/components/shared/Combobox/Panel/ComboboxOption.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"ComboboxOption.js","sourceRoot":"","sources":["../../../../../../src/components/shared/Combobox/Panel/ComboboxOption.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,CAAC,MAAM,kBAAkB,CAAC;AAOjC,MAAM,CAAC,MAAM,cAAc,GAAG,kBAAkB,CAC/C,gBAAgB,EAChB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAS,EAAE,EAAE;IAC/B,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;IAEpC,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;QACvB,OAAO,CACN,cAAK,SAAS,EAAE,UAAU,CAAC,0BAA0B,EAAE,EAAE,QAAQ,EAAE,CAAC,YACnE,eAAM,SAAS,EAAC,OAAO,YACrB,GAAG,CAAC,CAAC,mBAAmB,MAAM,CAAC,CAAC,mBAAmB,KAAK,KAAK,GAAG,GAC3D,GACF,CACN,CAAC;IACH,CAAC;IAED,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACxD,OAAO,CACN,eAAK,SAAS,EAAE,UAAU,CAAC,0BAA0B,EAAE,EAAE,QAAQ,EAAE,CAAC,aACnE,eAAM,SAAS,EAAC,IAAI,YAAE,EAAE,IAAI,KAAK,GAAQ,EACzC,iCAAgB,EAChB,eAAM,SAAS,EAAC,OAAO,YAAE,KAAK,GAAQ,IACjC,CACN,CAAC;IACH,CAAC;IACD,OAAO,CACN,cAAK,SAAS,EAAE,UAAU,CAAC,0BAA0B,EAAE,EAAE,QAAQ,EAAE,CAAC,YACnE,eAAM,SAAS,EAAC,IAAI,YAAE,EAAE,GAAQ,GAC3B,CACN,CAAC;AACH,CAAC,CACD,CAAC"}
|
|
@@ -2,4 +2,4 @@ import type { ComboboxPanelProps } from '../ComboboxType';
|
|
|
2
2
|
/**
|
|
3
3
|
* Floating menu containing selectable options
|
|
4
4
|
*/
|
|
5
|
-
export declare function ComboboxPanel({ optionRenderer: OptionRender, options, focused, selectedIndex, expanded, id, search, onSelect, }: ComboboxPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
export declare function ComboboxPanel({ optionRenderer: OptionRender, options, focused, selectedIndex, expanded, id, search, onSelect, isLoading, }: ComboboxPanelProps): import("react/jsx-runtime").JSX.Element | null;
|