@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.
Files changed (61) hide show
  1. package/lib/main.css +0 -2
  2. package/lib/main.css.map +1 -1
  3. package/lib/package.json +3 -3
  4. package/lib/src/components/Suggester/CustomSuggester.d.ts +9 -8
  5. package/lib/src/components/Suggester/CustomSuggester.js +4 -31
  6. package/lib/src/components/Suggester/CustomSuggester.js.map +1 -1
  7. package/lib/src/components/Suggester/Suggester.d.ts +1 -1
  8. package/lib/src/components/Suggester/Suggester.js +57 -35
  9. package/lib/src/components/Suggester/Suggester.js.map +1 -1
  10. package/lib/src/components/Suggester/SuggesterNotification.d.ts +5 -6
  11. package/lib/src/components/Suggester/SuggesterNotification.js +5 -10
  12. package/lib/src/components/Suggester/SuggesterNotification.js.map +1 -1
  13. package/lib/src/components/Suggester/useSuggestions.d.ts +20 -0
  14. package/lib/src/components/Suggester/useSuggestions.js +86 -0
  15. package/lib/src/components/Suggester/useSuggestions.js.map +1 -0
  16. package/lib/src/components/shared/Combobox/Combobox.d.ts +2 -0
  17. package/lib/src/components/shared/Combobox/Combobox.js +5 -6
  18. package/lib/src/components/shared/Combobox/Combobox.js.map +1 -1
  19. package/lib/src/components/shared/Combobox/ComboboxType.d.ts +1 -0
  20. package/lib/src/components/shared/Combobox/Panel/ComboboxOption.js +4 -0
  21. package/lib/src/components/shared/Combobox/Panel/ComboboxOption.js.map +1 -1
  22. package/lib/src/components/shared/Combobox/Panel/ComboboxPanel.d.ts +1 -1
  23. package/lib/src/components/shared/Combobox/Panel/ComboboxPanel.js +15 -1
  24. package/lib/src/components/shared/Combobox/Panel/ComboboxPanel.js.map +1 -1
  25. package/lib/src/components/shared/Combobox/Selection/ComboboxLabelSelection.js +6 -0
  26. package/lib/src/components/shared/Combobox/Selection/ComboboxLabelSelection.js.map +1 -1
  27. package/lib/src/components/type.d.ts +7 -0
  28. package/lib/src/hooks/use-track-changes.js +1 -1
  29. package/lib/src/hooks/use-track-changes.js.map +1 -1
  30. package/lib/src/hooks/useDebounce.d.ts +4 -0
  31. package/lib/src/hooks/useDebounce.js +23 -0
  32. package/lib/src/hooks/useDebounce.js.map +1 -0
  33. package/lib/src/hooks/useDocumentEvent.js +1 -1
  34. package/lib/src/hooks/useDocumentEvent.js.map +1 -1
  35. package/lib/src/hooks/{use-ref-sync.js → useRefSync.js} +1 -1
  36. package/lib/src/hooks/useRefSync.js.map +1 -0
  37. package/lib/src/hooks/useSuggesterInfo.d.ts +1 -1
  38. package/lib/src/i18n/dictionary.d.ts +16 -0
  39. package/lib/src/i18n/dictionary.js +16 -0
  40. package/lib/src/i18n/dictionary.js.map +1 -1
  41. package/lib/src/i18n/index.d.ts +1 -1
  42. package/lib/src/use-lunatic/commons/fill-components/fill-component-expressions.js +3 -0
  43. package/lib/src/use-lunatic/commons/fill-components/fill-component-expressions.js.map +1 -1
  44. package/lib/src/use-lunatic/commons/fill-components/fill-component-required.d.ts +71 -66
  45. package/lib/src/use-lunatic/commons/fill-components/fill-from-state.d.ts +68 -63
  46. package/lib/src/use-lunatic/commons/fill-components/fill-iterations.d.ts +16 -16
  47. package/lib/src/use-lunatic/commons/fill-components/fill-specific-expression.d.ts +70 -60
  48. package/lib/src/use-lunatic/commons/fill-components/fill-specific-expression.js +16 -0
  49. package/lib/src/use-lunatic/commons/fill-components/fill-specific-expression.js.map +1 -1
  50. package/lib/src/use-lunatic/replace-component-sequence.d.ts +3 -3
  51. package/lib/src/use-lunatic/type-source.d.ts +7 -2
  52. package/lib/src/use-lunatic/use-lunatic.d.ts +14 -0
  53. package/lib/src/utils/function.d.ts +1 -0
  54. package/lib/src/utils/function.js +18 -0
  55. package/lib/src/utils/function.js.map +1 -1
  56. package/package.json +3 -3
  57. package/lib/src/components/Suggester/SuggesterStatus.d.ts +0 -23
  58. package/lib/src/components/Suggester/SuggesterStatus.js +0 -24
  59. package/lib/src/components/Suggester/SuggesterStatus.js.map +0 -1
  60. package/lib/src/hooks/use-ref-sync.js.map +0 -1
  61. /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;EACA;EAjDL;EAmDK;EACA;EACA;EA9DL;EASA;EAPA;EACA;EACA;EACA;;AA4DK;EACC;EACA;EACA;;AAGD;EACC;;AAKH;EApEH;EAsEI;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;EACA;;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;EAtMJ;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"}
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.13",
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 --project tsconfig.prod.json && sass ./src/css/main.scss ./lib/main.css && cp -R ./src/css/icons ./lib/icons && npm run build-workers",
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: string | null | {
9
+ onSelect: (option: SuggesterOptionType | null) => void;
10
+ onBlur: () => void;
11
+ onFocus: () => void;
12
+ value: {
10
13
  id?: string;
11
14
  [key: string]: ReactNode;
12
- }) => void;
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
- defaultOptions?: SuggesterOptionType[];
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, useState, useRef } from 'react';
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, searching, label, description, errors, defaultOptions, }) => {
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(id ? options.find((o) => o.id === id) : null);
9
+ onSelect(options.find((o) => o.id === id) ?? null);
13
10
  }, [onSelect]);
14
- const handleChange = useCallback(async function (search) {
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":"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"}
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, getSuggesterStatus, errors, readOnly, workersBasePath, response, optionResponses, executeExpression, iteration, }: LunaticComponentProps<'Suggester'>): import("react/jsx-runtime").JSX.Element;
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 { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
- import { useEffect, useMemo } from 'react';
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 { useSuggesterInfo } from '../../hooks/useSuggesterInfo';
8
- export function Suggester({ storeName, idbVersion = '1', id, className, optionRenderer, labelRenderer, handleChange, disabled, value, label, description, getSuggesterStatus, errors, readOnly, workersBasePath, response, optionResponses = [], executeExpression, iteration, }) {
9
- const { state, fetchInfos, infos } = useSuggesterInfo(storeName, idbVersion);
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 defaultOptions = useMemo(() => {
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
- return (_jsxs(SuggesterStatus, { storeName: storeName, getSuggesterStatus: getSuggesterStatus, label: label, description: description, children: [state === 'Loading' && (_jsxs("div", { className: "lunatic-suggester-in-progress", children: ["Le store ", storeName, " est en cours de chargement."] })), state === 'Error' && (_jsx("div", { className: "lunatic-suggester-unvailable", children: "La suggestion sur liste n'est pas possible sur votre navigateur, vous pouvez passer la question en appuyant sur Enregistrer et Continuer" })), state === 'Ready' && searching && (_jsx(CustomSuggester, { id: id, className: className, optionRenderer: optionRenderer, labelRenderer: labelRenderer, defaultOptions: defaultOptions, onSelect: onChange, searching: searching, disabled: disabled, readOnly: readOnly, value: value, label: label, description: description, errors: getComponentErrors(errors, id) }))] }));
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,EAAkB,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAE3D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,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,kBAAkB,EAClB,MAAM,EACN,QAAQ,EACR,eAAe,EACf,QAAQ,EACR,eAAe,GAAG,EAAE,EACpB,iBAAiB,EACjB,SAAS,GAC2B;IACpC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,gBAAgB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAC7E,MAAM,QAAQ,GAAG,CAChB,CAA4D,EAC3D,EAAE;QACH,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,eAAe,EAAE,CAAC;YACnD,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;gBACV,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAC9B,CAAC;YACD,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;QACF,CAAC;aAAM,CAAC;YACP,YAAY,CAAC,QAAQ,EAAE,CAAkB,CAAC,CAAC;QAC5C,CAAC;IACF,CAAC,CAAC;IAEF,qDAAqD;IACrD,SAAS,CAAC,GAAG,EAAE;QACd,UAAU,EAAE,CAAC;IACd,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,MAAM,SAAS,GAAG,OAAO,CACxB;QACC,IAAI,KAAK,EAAE,CAAC;YACX,OAAO,eAAe,CAAC,SAAS,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;QAChE,CAAC;QACD,OAAO,SAAS,CAAC;IAClB,CAAC,EACD,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe,CAAC,CAC/C,CAAC;IAEF,mDAAmD;IACnD,yCAAyC;IACzC,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,EAAE;QACnC,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,OAAO,EAAE,CAAC;QACX,CAAC;QACD,MAAM,aAAa,GAAG,eAAe,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,OAAO,CAAC,CAAC;QAC5E,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,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CACN,MAAC,eAAe,IACf,SAAS,EAAE,SAAS,EACpB,kBAAkB,EAAE,kBAAkB,EACtC,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW,aAEvB,KAAK,KAAK,SAAS,IAAI,CACvB,eAAK,SAAS,EAAC,+BAA+B,0BACnC,SAAS,oCACd,CACN,EACA,KAAK,KAAK,OAAO,IAAI,CACrB,cAAK,SAAS,EAAC,8BAA8B,yJAGvC,CACN,EACA,KAAK,KAAK,OAAO,IAAI,SAAS,IAAI,CAClC,KAAC,eAAe,IACf,EAAE,EAAE,EAAE,EACN,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,cAAc,EAC9B,aAAa,EAAE,aAAa,EAC5B,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,kBAAkB,CAAC,MAAM,EAAE,EAAE,CAAC,GACrC,CACF,IACgB,CAClB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"Suggester.js","sourceRoot":"","sources":["../../../../src/components/Suggester/Suggester.tsx"],"names":[],"mappings":"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"}
@@ -1,10 +1,9 @@
1
- import React, { type PropsWithChildren, type ReactNode } from 'react';
2
- import { SuggesterStatus } from '../../use-lunatic/use-suggesters';
3
- type Props = PropsWithChildren<{
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: React.ComponentType<Props>;
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 React, {} from 'react';
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({ children, status, storeName, label, description, }) {
9
- if (status === STATUS.idle || status === STATUS.pending) {
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 === STATUS.error) {
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
- if (status === STATUS.unknown) {
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,KAAK,EAAE,EAA0C,MAAM,OAAO,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAS9C,SAAS,4BAA4B,CAAC,EACrC,QAAQ,EACR,MAAM,EACN,SAAS,EACT,KAAK,EACL,WAAW,GACJ;IACP,IAAI,MAAM,KAAK,MAAM,CAAC,IAAI,IAAI,MAAM,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC;QACzD,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,MAAM,CAAC,KAAK,EAAE,CAAC;QAC7B,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,IAAI,MAAM,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC;QAC/B,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;IACH,CAAC;IAED,OAAO,4BAAG,QAAQ,GAAI,CAAC;AACxB,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAAkB,CACtD,uBAAuB,EACvB,4BAA4B,CAC5B,CAAC"}
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: searchProps = EMPTY_SEARCH, getOptionValue = getDefaultOptionValue, label, description, errors, onBlur, }) {
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":"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"}
1
+ {"version":3,"file":"Combobox.js","sourceRoot":"","sources":["../../../../../src/components/shared/Combobox/Combobox.tsx"],"names":[],"mappings":"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"}
@@ -46,5 +46,6 @@ export type ComboboxPanelProps = {
46
46
  expanded?: boolean;
47
47
  id?: string;
48
48
  search?: string;
49
+ isLoading?: boolean;
49
50
  onSelect: (value: string) => void;
50
51
  };
@@ -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;AAOlE,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,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"}
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;