@inseefr/lunatic 2.0.1 → 2.0.2-v2

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 (739) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +25 -22
  3. package/lib/components/button/button.scss +24 -0
  4. package/lib/components/button/index.js +15 -0
  5. package/lib/components/button/lunatic-button.js +66 -0
  6. package/lib/components/checkbox/checkbox-boolean/checkbox-boolean.js +36 -0
  7. package/lib/components/checkbox/checkbox-boolean/index.js +15 -0
  8. package/lib/components/checkbox/checkbox-boolean/lunatic-checkbox-boolean.js +48 -0
  9. package/lib/components/checkbox/checkbox-group/checkbox-group.js +96 -0
  10. package/lib/components/checkbox/checkbox-group/checkbox.scss +4 -0
  11. package/lib/components/checkbox/checkbox-group/index.js +15 -0
  12. package/lib/components/checkbox/checkbox-group/lunatic-checkbox-group.js +42 -0
  13. package/lib/components/checkbox/checkbox-one/index.js +15 -0
  14. package/lib/components/checkbox/checkbox-one/lunatic-checkbox-one.js +39 -0
  15. package/lib/components/checkbox/commons/checkbox-option.js +68 -0
  16. package/lib/components/checkbox/commons/checkbox-option.scss +3 -0
  17. package/lib/components/checkbox/commons/index.js +15 -0
  18. package/lib/components/checkbox/index.js +31 -0
  19. package/lib/components/commons/build-style-object.js +36 -0
  20. package/lib/components/commons/components/combo-box/combo-box-container.js +37 -0
  21. package/lib/components/commons/components/combo-box/combo-box-content.js +73 -0
  22. package/lib/components/commons/components/combo-box/combo-box.js +222 -0
  23. package/lib/components/commons/components/combo-box/combo-box.scss +205 -0
  24. package/lib/components/commons/components/combo-box/index.js +15 -0
  25. package/lib/components/commons/components/combo-box/panel/index.js +15 -0
  26. package/lib/components/commons/components/combo-box/panel/option-container.js +77 -0
  27. package/lib/components/commons/components/combo-box/panel/panel-container.js +31 -0
  28. package/lib/components/commons/components/combo-box/panel/panel.js +70 -0
  29. package/lib/components/commons/components/combo-box/selection/delete.js +69 -0
  30. package/lib/components/commons/components/combo-box/selection/displayLabelOrInput.js +30 -0
  31. package/lib/components/commons/components/combo-box/selection/index.js +15 -0
  32. package/lib/components/commons/components/combo-box/selection/input.js +68 -0
  33. package/lib/components/commons/components/combo-box/selection/label-selection.js +39 -0
  34. package/lib/components/commons/components/combo-box/selection/selection-container.js +40 -0
  35. package/lib/components/commons/components/combo-box/selection/selection.js +71 -0
  36. package/lib/components/commons/components/combo-box/state-management/actions.js +98 -0
  37. package/lib/components/commons/components/combo-box/state-management/combo-box-context.js +20 -0
  38. package/lib/components/commons/components/combo-box/state-management/index.js +42 -0
  39. package/lib/components/commons/components/combo-box/state-management/initial-state.js +14 -0
  40. package/lib/components/commons/components/combo-box/state-management/reducer/index.js +15 -0
  41. package/lib/components/commons/components/combo-box/state-management/reducer/reduce-on-blur.js +22 -0
  42. package/lib/components/commons/components/combo-box/state-management/reducer/reduce-on-change.js +24 -0
  43. package/lib/components/commons/components/combo-box/state-management/reducer/reduce-on-delete.js +23 -0
  44. package/lib/components/commons/components/combo-box/state-management/reducer/reduce-on-focus.js +22 -0
  45. package/lib/components/commons/components/combo-box/state-management/reducer/reduce-on-init.js +46 -0
  46. package/lib/components/commons/components/combo-box/state-management/reducer/reduce-on-keydown/index.js +15 -0
  47. package/lib/components/commons/components/combo-box/state-management/reducer/reduce-on-keydown/keyboard-key-codes.js +18 -0
  48. package/lib/components/commons/components/combo-box/state-management/reducer/reduce-on-keydown/on-arrow-down.js +37 -0
  49. package/lib/components/commons/components/combo-box/state-management/reducer/reduce-on-keydown/on-arrow-up.js +37 -0
  50. package/lib/components/commons/components/combo-box/state-management/reducer/reduce-on-keydown/on-end.js +28 -0
  51. package/lib/components/commons/components/combo-box/state-management/reducer/reduce-on-keydown/on-enter.js +23 -0
  52. package/lib/components/commons/components/combo-box/state-management/reducer/reduce-on-keydown/on-escape.js +22 -0
  53. package/lib/components/commons/components/combo-box/state-management/reducer/reduce-on-keydown/on-home.js +28 -0
  54. package/lib/components/commons/components/combo-box/state-management/reducer/reduce-on-keydown/on-tab.js +22 -0
  55. package/lib/components/commons/components/combo-box/state-management/reducer/reduce-on-keydown/reduce-on-keydown.js +59 -0
  56. package/lib/components/commons/components/combo-box/state-management/reducer/reduce-on-select.js +24 -0
  57. package/lib/components/commons/components/combo-box/state-management/reducer/reducer.js +63 -0
  58. package/lib/components/commons/components/create-lunatic-component/create-lunatic-component.js +75 -0
  59. package/lib/components/commons/components/create-lunatic-component/index.js +14 -0
  60. package/lib/components/commons/components/default-label-renderer.js +54 -0
  61. package/lib/components/commons/components/default-option-renderer.js +43 -0
  62. package/lib/components/commons/components/dragger/dragger.js +118 -0
  63. package/lib/components/commons/components/dragger/dragger.scss +8 -0
  64. package/lib/components/commons/components/dragger/index.js +15 -0
  65. package/lib/components/commons/components/errors/errors.js +55 -0
  66. package/lib/components/commons/components/errors/errors.scss +5 -0
  67. package/lib/components/commons/components/errors/index.js +15 -0
  68. package/lib/components/commons/components/fab/fab.js +56 -0
  69. package/lib/components/commons/components/fab/fab.scss +32 -0
  70. package/lib/components/commons/components/fab/index.js +15 -0
  71. package/lib/components/commons/components/field-container/field-container.js +48 -0
  72. package/lib/components/commons/components/field-container/field-container.scss +0 -0
  73. package/lib/components/commons/components/field-container/index.js +15 -0
  74. package/lib/components/commons/components/fieldset.js +26 -0
  75. package/lib/components/commons/components/fieldset.scss +5 -0
  76. package/lib/components/commons/components/html-table/index.js +55 -0
  77. package/lib/components/commons/components/html-table/table.js +38 -0
  78. package/lib/components/commons/components/html-table/tbody.js +38 -0
  79. package/lib/components/commons/components/html-table/td.js +50 -0
  80. package/lib/components/commons/components/html-table/th.js +48 -0
  81. package/lib/components/commons/components/html-table/thead.js +38 -0
  82. package/lib/components/commons/components/html-table/tr.js +40 -0
  83. package/lib/components/commons/components/is-network/index.js +15 -0
  84. package/lib/components/commons/components/is-network/is-network.js +70 -0
  85. package/lib/components/commons/components/is-network/use-online-status.js +55 -0
  86. package/lib/components/commons/components/label.js +35 -0
  87. package/lib/components/commons/components/lunatic-component.js +67 -0
  88. package/lib/components/commons/components/lunatic-fieldset-component.js +60 -0
  89. package/lib/components/commons/components/md-label/index.js +15 -0
  90. package/lib/components/commons/components/md-label/link.js +57 -0
  91. package/lib/components/commons/components/md-label/md-label.js +52 -0
  92. package/lib/components/commons/components/missing/index.js +15 -0
  93. package/lib/components/commons/components/missing/missing.js +90 -0
  94. package/lib/components/commons/components/missing/missing.scss +30 -0
  95. package/lib/components/commons/components/nothing-to-display.js +17 -0
  96. package/lib/components/commons/components/orchestrated-component.js +71 -0
  97. package/{src/components/tooltip → lib/components/commons/components/variable-status}/img/edited.png +0 -0
  98. package/{src/components/tooltip → lib/components/commons/components/variable-status}/img/forced.png +0 -0
  99. package/lib/components/commons/components/variable-status/img/index.js +23 -0
  100. package/lib/components/commons/components/variable-status/index.js +15 -0
  101. package/lib/components/commons/components/variable-status/variable-status.js +95 -0
  102. package/lib/components/commons/components/variable-status/variable-status.scss +39 -0
  103. package/lib/components/commons/create-customizable-field.js +37 -0
  104. package/lib/components/commons/create-row-orchestrator.js +60 -0
  105. package/lib/components/commons/icons/checkbox-checked.icon.js +41 -0
  106. package/lib/components/commons/icons/checkbox-unchecked.icon.js +41 -0
  107. package/lib/components/commons/icons/closed.icon.js +38 -0
  108. package/lib/components/commons/icons/cross.icon.js +38 -0
  109. package/lib/components/commons/icons/index.js +87 -0
  110. package/lib/components/commons/icons/load.icon.js +38 -0
  111. package/lib/components/commons/icons/lunatic-icon.js +25 -0
  112. package/lib/components/commons/icons/lunatic-icon.scss +3 -0
  113. package/lib/components/commons/icons/network.icon.js +38 -0
  114. package/lib/components/commons/icons/on-drag.icon.js +38 -0
  115. package/lib/components/commons/icons/opened.icon.js +38 -0
  116. package/lib/components/commons/icons/radio-checked.icon.js +41 -0
  117. package/lib/components/commons/icons/radio-unchecked.icon.js +41 -0
  118. package/lib/components/commons/index.js +162 -0
  119. package/lib/components/commons/prop-types/declarations.js +27 -0
  120. package/lib/components/commons/prop-types/index.js +47 -0
  121. package/lib/components/commons/prop-types/lines.js +17 -0
  122. package/lib/components/commons/prop-types/options.js +17 -0
  123. package/lib/components/commons/prop-types/response.js +17 -0
  124. package/lib/components/commons/prop-types/value-type.js +22 -0
  125. package/lib/components/commons/safety-label.js +34 -0
  126. package/lib/components/commons/use-document-add-event-listener.js +108 -0
  127. package/lib/components/commons/use-on-handle-change.js +22 -0
  128. package/lib/components/commons/use-options-keydown.js +29 -0
  129. package/lib/components/commons/use-previous.js +19 -0
  130. package/lib/components/components.js +188 -0
  131. package/lib/components/datepicker/datepicker.js +56 -0
  132. package/lib/components/datepicker/datepicker.scss +1 -0
  133. package/lib/components/datepicker/index.js +15 -0
  134. package/lib/components/datepicker/lunatic-datepicker.js +39 -0
  135. package/lib/components/declarations/declaration.js +26 -0
  136. package/lib/components/declarations/declarations-after-text.js +29 -0
  137. package/lib/components/declarations/declarations-before-text.js +29 -0
  138. package/lib/components/declarations/declarations-detachable.js +29 -0
  139. package/lib/components/declarations/declarations.js +61 -0
  140. package/lib/components/declarations/declarations.scss +36 -0
  141. package/lib/components/declarations/index.js +51 -0
  142. package/lib/components/dropdown/dropdown-simple/dropdown-simple.js +43 -0
  143. package/lib/components/dropdown/dropdown-simple/index.js +15 -0
  144. package/lib/components/dropdown/dropdown-simple/simple-label-renderer.js +53 -0
  145. package/lib/components/dropdown/dropdown-simple/simple-option-renderer.js +42 -0
  146. package/lib/components/dropdown/dropdown-writable/dropdown-writable.js +79 -0
  147. package/lib/components/dropdown/dropdown-writable/filter-tools/filter-options.js +47 -0
  148. package/lib/components/dropdown/dropdown-writable/filter-tools/letters-matching.js +40 -0
  149. package/lib/components/dropdown/dropdown-writable/filter-tools/match.js +27 -0
  150. package/lib/components/dropdown/dropdown-writable/filter-tools/prepare-prefix.js +17 -0
  151. package/lib/components/dropdown/dropdown-writable/index.js +15 -0
  152. package/lib/components/dropdown/dropdown-writable/writable-label-renderer.js +53 -0
  153. package/lib/components/dropdown/dropdown-writable/writable-option-renderer.js +170 -0
  154. package/lib/components/dropdown/dropdown.js +58 -0
  155. package/lib/components/dropdown/dropdown.scss +41 -0
  156. package/lib/components/dropdown/index.js +15 -0
  157. package/lib/components/dropdown/lunatic-dropdown.js +62 -0
  158. package/lib/components/filter-description/component.js +26 -0
  159. package/lib/components/filter-description/index.js +15 -0
  160. package/lib/components/index.js +32 -0
  161. package/lib/components/index.scss +136 -0
  162. package/lib/components/input/index.js +15 -0
  163. package/lib/components/input/input.js +61 -0
  164. package/lib/components/input/input.scss +32 -0
  165. package/lib/components/input/lunatic-input.js +43 -0
  166. package/lib/components/input-number/index.js +15 -0
  167. package/lib/components/input-number/input-number.js +61 -0
  168. package/lib/components/input-number/input-number.scss +7 -0
  169. package/lib/components/input-number/lunatic-input-number.js +37 -0
  170. package/lib/components/loop/block-for-loop/block-for-loop-ochestrator.js +16 -0
  171. package/lib/components/loop/block-for-loop/block-for-loop.js +171 -0
  172. package/lib/components/loop/block-for-loop/index.js +15 -0
  173. package/lib/components/loop/block-for-loop/row.js +84 -0
  174. package/lib/components/loop/commons/get-init-length.js +19 -0
  175. package/lib/components/loop/commons/handle-row-button.js +25 -0
  176. package/lib/components/loop/commons/index.js +23 -0
  177. package/lib/components/loop/commons/row-component.js +86 -0
  178. package/lib/components/loop/index.js +15 -0
  179. package/lib/components/loop/loop.js +94 -0
  180. package/lib/components/loop/roster-for-loop/body.js +69 -0
  181. package/lib/components/loop/roster-for-loop/header.js +42 -0
  182. package/lib/components/loop/roster-for-loop/index.js +15 -0
  183. package/lib/components/loop/roster-for-loop/roster-for-loop-orchestrator.js +16 -0
  184. package/lib/components/loop/roster-for-loop/roster-for-loop.js +153 -0
  185. package/lib/components/loop/roster-for-loop/roster-table.js +61 -0
  186. package/lib/components/loop/roster-for-loop/roster.scss +42 -0
  187. package/lib/components/loop/roster-for-loop/row.js +88 -0
  188. package/lib/components/modal-controls/close-or-skip.js +46 -0
  189. package/lib/components/modal-controls/index.js +15 -0
  190. package/lib/components/modal-controls/modal-container.js +24 -0
  191. package/lib/components/modal-controls/modal-controls.js +94 -0
  192. package/lib/components/modal-controls/modal-controls.scss +46 -0
  193. package/lib/components/pairwise/index.js +15 -0
  194. package/lib/components/pairwise/links/index.js +15 -0
  195. package/lib/components/pairwise/links/orchestrator.js +16 -0
  196. package/lib/components/pairwise/links/pairwise-links.js +75 -0
  197. package/lib/components/pairwise/links/row.js +95 -0
  198. package/lib/components/radio/index.js +15 -0
  199. package/lib/components/radio/lunatic-radio-group.js +45 -0
  200. package/lib/components/radio/radio-group.js +48 -0
  201. package/lib/components/radio/radio-option.js +94 -0
  202. package/lib/components/radio/radio.scss +66 -0
  203. package/lib/components/sequence/index.js +15 -0
  204. package/lib/components/sequence/sequence.js +41 -0
  205. package/lib/components/sequence/sequence.scss +10 -0
  206. package/lib/components/subsequence/index.js +15 -0
  207. package/lib/components/subsequence/subsequence.js +38 -0
  208. package/lib/components/suggester/check-store.js +149 -0
  209. package/lib/components/suggester/default-style.scss +125 -0
  210. package/lib/components/suggester/find-best-label/find-best-label.js +67 -0
  211. package/lib/components/suggester/find-best-label/index.js +15 -0
  212. package/lib/components/suggester/idb-suggester.js +95 -0
  213. package/lib/components/suggester/index.js +15 -0
  214. package/lib/components/suggester/lunatic-suggester.js +94 -0
  215. package/lib/components/suggester/searching/create-searching.js +88 -0
  216. package/lib/components/suggester/searching/index.js +15 -0
  217. package/lib/components/suggester/suggester.js +172 -0
  218. package/lib/components/suggester-loader-widget/index.js +15 -0
  219. package/lib/components/suggester-loader-widget/loader-row.js +150 -0
  220. package/lib/components/suggester-loader-widget/loader.js +180 -0
  221. package/lib/components/suggester-loader-widget/progress.js +45 -0
  222. package/lib/components/suggester-loader-widget/tools/action-tool.js +35 -0
  223. package/lib/components/suggester-loader-widget/tools/index.js +23 -0
  224. package/lib/components/suggester-loader-widget/tools/tools.js +20 -0
  225. package/lib/components/suggester-loader-widget/widget-container.js +48 -0
  226. package/lib/components/suggester-loader-widget/widget.js +170 -0
  227. package/lib/components/suggester-loader-widget/widget.scss +176 -0
  228. package/lib/components/switch/index.js +15 -0
  229. package/lib/components/switch/lunatic-switch.js +59 -0
  230. package/lib/components/switch/switch.js +92 -0
  231. package/lib/components/switch/switch.scss +47 -0
  232. package/lib/components/table/cell.js +113 -0
  233. package/lib/components/table/components/cell.js +113 -0
  234. package/lib/components/table/components/header.js +48 -0
  235. package/lib/components/table/components/row.js +47 -0
  236. package/lib/components/table/components/table.js +38 -0
  237. package/lib/components/table/components/table.scss +27 -0
  238. package/lib/components/table/index.js +15 -0
  239. package/lib/components/table/lunatic-table.js +97 -0
  240. package/lib/components/table/table-orchestrator.js +55 -0
  241. package/lib/components/textarea/index.js +15 -0
  242. package/lib/components/textarea/lunatic-textarea.js +52 -0
  243. package/lib/components/textarea/textarea.js +54 -0
  244. package/lib/components/textarea/textarea.scss +8 -0
  245. package/lib/constants/component-types.js +8 -0
  246. package/lib/constants/declarations.js +26 -0
  247. package/lib/constants/event-types.js +28 -0
  248. package/lib/constants/index.js +70 -0
  249. package/lib/constants/supported-preferences.js +18 -0
  250. package/lib/constants/value-types.js +16 -0
  251. package/lib/constants/variable-types.js +12 -0
  252. package/lib/i18n/build-dictionary.js +56 -0
  253. package/lib/i18n/dictionary.js +26 -0
  254. package/lib/i18n/index.js +19 -0
  255. package/lib/index.js +21 -4236
  256. package/lib/stories/Introduction.stories.mdx +114 -0
  257. package/lib/stories/checkboxOne/checkboxOne.stories.js +35 -0
  258. package/lib/stories/checkboxOne/source.json +36 -0
  259. package/lib/stories/custom-mui/checkbox-boolean-mui.js +39 -0
  260. package/lib/stories/custom-mui/checkbox-group-mui.js +80 -0
  261. package/lib/stories/custom-mui/checkbox-one-mui.js +17 -0
  262. package/lib/stories/custom-mui/index.js +127 -0
  263. package/lib/stories/custom-mui/input-mui.js +61 -0
  264. package/lib/stories/custom-mui/input-number-mui.js +47 -0
  265. package/lib/stories/custom-mui/radio-mui.js +75 -0
  266. package/lib/stories/custom-mui/suggester-mui/index.js +15 -0
  267. package/lib/stories/custom-mui/suggester-mui/suggester-mui.js +328 -0
  268. package/lib/stories/custom-mui/switch-mui.js +51 -0
  269. package/lib/stories/custom-mui/table-mui.js +33 -0
  270. package/lib/stories/custom-mui/tbody-mui.js +27 -0
  271. package/lib/stories/custom-mui/td-mui.js +29 -0
  272. package/lib/stories/custom-mui/textarea-mui.js +51 -0
  273. package/lib/stories/custom-mui/th-mui.js +28 -0
  274. package/lib/stories/custom-mui/thead-mui.js +27 -0
  275. package/lib/stories/custom-mui/tr-mui.js +38 -0
  276. package/lib/stories/date-picker/data.json +3 -0
  277. package/lib/stories/date-picker/datepicker.stories.js +38 -0
  278. package/lib/stories/date-picker/source.json +140 -0
  279. package/lib/stories/dropdown/data.json +16 -0
  280. package/lib/stories/dropdown/dropdown.stories.js +38 -0
  281. package/lib/stories/dropdown/source.json +122 -0
  282. package/lib/stories/filter-description/filter-description.stories.js +58 -0
  283. package/lib/stories/filter-description/source-options.json +81 -0
  284. package/lib/stories/filter-description/source.json +11 -0
  285. package/lib/stories/input/data.json +1 -0
  286. package/lib/stories/input/input.stories.js +38 -0
  287. package/lib/stories/input/source.json +28 -0
  288. package/lib/stories/input-number/input-number.stories.js +43 -0
  289. package/lib/stories/input-number/source-euros.json +38 -0
  290. package/lib/stories/input-number/source.json +37 -0
  291. package/lib/stories/pairwise/data.json +13 -0
  292. package/lib/stories/pairwise/links.json +207 -0
  293. package/lib/stories/pairwise/pairwise-links.stories.js +39 -0
  294. package/lib/stories/paste-questionnaire/source.json +6290 -0
  295. package/lib/stories/paste-questionnaire/test.stories.js +91 -0
  296. package/lib/stories/questionnaires/logement/data.json +2691 -0
  297. package/lib/stories/questionnaires/logement/logement.stories.js +86 -0
  298. package/lib/stories/questionnaires/logement/source-sequence.json +34181 -0
  299. package/lib/stories/questionnaires/logement/source-sum.json +34612 -0
  300. package/lib/stories/questionnaires/logement/source.json +34191 -0
  301. package/lib/stories/questionnaires/simpsons/simpsons.stories.js +71 -0
  302. package/lib/stories/questionnaires/simpsons/source.json +6290 -0
  303. package/lib/stories/questionnaires-test/V2_DeclarationsSimples.json +848 -0
  304. package/lib/stories/questionnaires-test/V2_MinMaxSum_Boucles.json +509 -0
  305. package/lib/stories/questionnaires-test/V2_QuestSimple_Boucles.json +4091 -0
  306. package/lib/stories/questionnaires-test/V2_TCMRallyeGames.json +2892 -0
  307. package/lib/stories/questionnaires-test/controls/V2_ControlesNonNum_horsBoucle_PasPageFin.json +666 -0
  308. package/lib/stories/questionnaires-test/controls/V2_ControlesNum_horsBoucle_PasPageFin.json +1957 -0
  309. package/lib/stories/questionnaires-test/controls/V2_Controles_BouclesLiees2_PasPageFin.json +709 -0
  310. package/lib/stories/questionnaires-test/controls/V2_Controles_BouclesLiees_PasPageFin.json +533 -0
  311. package/lib/stories/questionnaires-test/controls/boucles-n.json +202 -0
  312. package/lib/stories/questionnaires-test/controls/controls.stories.js +108 -0
  313. package/lib/stories/questionnaires-test/test-dylan.json +558 -0
  314. package/lib/stories/questionnaires-test/test.stories.js +104 -0
  315. package/lib/stories/radio/radio.stories.js +35 -0
  316. package/lib/stories/radio/source.json +36 -0
  317. package/lib/stories/roster-for-loop/roster-for-loop.stories.js +35 -0
  318. package/lib/stories/roster-for-loop/source.json +114 -0
  319. package/lib/stories/suggester/source.json +234 -0
  320. package/lib/stories/suggester/suggester.stories.js +59 -0
  321. package/{src/stories/checkbox-one → lib/stories/switch}/README.md +31 -31
  322. package/lib/stories/switch/SwitchMaterialUI.js +51 -0
  323. package/{src/stories/checkbox-boolean/data.json → lib/stories/switch/data-forced.json} +48 -48
  324. package/lib/stories/switch/data.json +80 -0
  325. package/lib/stories/switch/switch.js +108 -0
  326. package/lib/stories/table/data-roster.json +1 -0
  327. package/lib/stories/table/data.json +1 -0
  328. package/{src/stories/table/data-roster.json → lib/stories/table/source-roster.json} +504 -461
  329. package/{src/stories/table/data-default.json → lib/stories/table/source.json} +19 -19
  330. package/lib/stories/table/table-dynamique.json +67 -0
  331. package/lib/stories/table/table.stories.js +73 -0
  332. package/lib/stories/utils/custom-lunatic.scss +28 -0
  333. package/lib/stories/utils/default-arg-types.js +23 -0
  334. package/lib/stories/utils/options.js +32 -0
  335. package/lib/stories/utils/orchestrator.js +188 -0
  336. package/lib/stories/utils/waiting/index.js +15 -0
  337. package/lib/stories/utils/waiting/preloader.svg +1 -0
  338. package/lib/stories/utils/waiting/waiting.js +40 -0
  339. package/lib/stories/utils/waiting/waiting.scss +21 -0
  340. package/lib/tests/sample.spec.js +7 -0
  341. package/lib/use-lunatic/actions.js +102 -0
  342. package/lib/use-lunatic/commons/calculated-variables.js +124 -0
  343. package/lib/use-lunatic/commons/check-loops.js +111 -0
  344. package/lib/use-lunatic/commons/compose.js +28 -0
  345. package/lib/use-lunatic/commons/create-map-pages.js +108 -0
  346. package/lib/use-lunatic/commons/execute-condition-filter.js +34 -0
  347. package/lib/use-lunatic/commons/execute-expression/create-execute-expression.js +308 -0
  348. package/lib/use-lunatic/commons/execute-expression/create-memoizer.js +78 -0
  349. package/lib/use-lunatic/commons/execute-expression/create-refresh-calculated.js +160 -0
  350. package/lib/use-lunatic/commons/execute-expression/execute-expression.js +118 -0
  351. package/lib/use-lunatic/commons/execute-expression/get-expressions-variables.js +51 -0
  352. package/lib/use-lunatic/commons/execute-expression/get-safety-expression.js +37 -0
  353. package/lib/use-lunatic/commons/execute-expression/index.js +15 -0
  354. package/lib/use-lunatic/commons/fill-components/fill-component-expressions.js +149 -0
  355. package/lib/use-lunatic/commons/fill-components/fill-component-value.js +26 -0
  356. package/lib/use-lunatic/commons/fill-components/fill-components.js +47 -0
  357. package/lib/use-lunatic/commons/fill-components/fill-errors.js +31 -0
  358. package/lib/use-lunatic/commons/fill-components/fill-from-state.js +26 -0
  359. package/lib/use-lunatic/commons/fill-components/fill-management.js +27 -0
  360. package/lib/use-lunatic/commons/fill-components/fill-missing-response.js +37 -0
  361. package/lib/use-lunatic/commons/fill-components/fill-pagination.js +23 -0
  362. package/lib/use-lunatic/commons/fill-components/index.js +15 -0
  363. package/lib/use-lunatic/commons/get-compatible-vtl-expression.js +32 -0
  364. package/lib/use-lunatic/commons/get-component-value/get-component-value.js +217 -0
  365. package/lib/use-lunatic/commons/get-component-value/index.js +15 -0
  366. package/lib/use-lunatic/commons/get-components-from-state.js +44 -0
  367. package/lib/use-lunatic/commons/get-data.js +90 -0
  368. package/lib/use-lunatic/commons/get-errors-without-empty-value.js +31 -0
  369. package/lib/use-lunatic/commons/index.js +123 -0
  370. package/lib/use-lunatic/commons/is-First-last-page.js +20 -0
  371. package/lib/use-lunatic/commons/is-paginated-loop.js +15 -0
  372. package/lib/use-lunatic/commons/load-suggesters.js +199 -0
  373. package/lib/use-lunatic/commons/page-tag.js +83 -0
  374. package/lib/use-lunatic/commons/use-components-from-state.js +49 -0
  375. package/lib/use-lunatic/index.js +15 -0
  376. package/lib/use-lunatic/initial-state.js +44 -0
  377. package/lib/use-lunatic/reducer/commons/index.js +41 -0
  378. package/lib/use-lunatic/reducer/commons/is-empty-on-empty-page.js +49 -0
  379. package/lib/use-lunatic/reducer/commons/resize-array-variable.js +48 -0
  380. package/lib/use-lunatic/reducer/commons/validate-condition-filter.js +41 -0
  381. package/lib/use-lunatic/reducer/index.js +15 -0
  382. package/lib/use-lunatic/reducer/reduce-go-next-page.js +218 -0
  383. package/lib/use-lunatic/reducer/reduce-go-previous-page.js +165 -0
  384. package/lib/use-lunatic/reducer/reduce-go-to-page.js +60 -0
  385. package/lib/use-lunatic/reducer/reduce-handle-change/index.js +15 -0
  386. package/lib/use-lunatic/reducer/reduce-handle-change/reduce-cleaning.js +77 -0
  387. package/lib/use-lunatic/reducer/reduce-handle-change/reduce-handle-change.js +142 -0
  388. package/lib/use-lunatic/reducer/reduce-handle-change/reduce-links-variable.js +53 -0
  389. package/lib/use-lunatic/reducer/reduce-handle-change/reduce-missing.js +90 -0
  390. package/lib/use-lunatic/reducer/reduce-handle-change/reduce-resizing.js +118 -0
  391. package/lib/use-lunatic/reducer/reduce-handle-change/reduce-variables-array.js +50 -0
  392. package/lib/use-lunatic/reducer/reduce-handle-change/reduce-variables-simple.js +29 -0
  393. package/lib/use-lunatic/reducer/reduce-on-init.js +260 -0
  394. package/lib/use-lunatic/reducer/reduce-on-set-waiting.js +23 -0
  395. package/lib/use-lunatic/reducer/reducer.js +58 -0
  396. package/lib/use-lunatic/reducer/validate-controls/create-controls-reducer.js +69 -0
  397. package/lib/use-lunatic/reducer/validate-controls/create-modal-controls-reducer.js +100 -0
  398. package/lib/use-lunatic/reducer/validate-controls/index.js +23 -0
  399. package/lib/use-lunatic/reducer/validate-controls/validation-utils.js +73 -0
  400. package/lib/use-lunatic/use-lunatic.js +215 -0
  401. package/lib/utils/constants/features.js +12 -0
  402. package/lib/utils/constants/index.js +70 -0
  403. package/lib/utils/constants/links.js +10 -0
  404. package/lib/utils/constants/missing.js +10 -0
  405. package/lib/utils/constants/variable-status.js +16 -0
  406. package/lib/utils/constants/variable-types.js +8 -0
  407. package/lib/utils/idb-tools/clear-store.js +52 -0
  408. package/lib/utils/idb-tools/create-db-opener.js +60 -0
  409. package/lib/utils/idb-tools/create-open-db.js +35 -0
  410. package/lib/utils/idb-tools/get-entity.js +25 -0
  411. package/lib/utils/idb-tools/get-idb.js +15 -0
  412. package/lib/utils/idb-tools/idb-bulk-insert.js +157 -0
  413. package/lib/utils/idb-tools/index.js +75 -0
  414. package/lib/utils/idb-tools/insert-entity.js +25 -0
  415. package/lib/utils/idb-tools/open-db.js +29 -0
  416. package/lib/utils/idb-tools/open-or-create-db.js +49 -0
  417. package/lib/utils/is-element.js +12 -0
  418. package/lib/utils/store-tools/auto-load.js +209 -0
  419. package/lib/utils/store-tools/clear-store-data.js +46 -0
  420. package/lib/utils/store-tools/clear-store-info.js +46 -0
  421. package/lib/utils/store-tools/constantes.js +31 -0
  422. package/lib/utils/store-tools/create/create.js +70 -0
  423. package/lib/utils/store-tools/create/index.js +23 -0
  424. package/lib/utils/store-tools/create/update-store-info.js +33 -0
  425. package/lib/utils/store-tools/get-store-count.js +29 -0
  426. package/lib/utils/store-tools/index.js +66 -0
  427. package/lib/utils/store-tools/open-or-create-store.js +60 -0
  428. package/lib/utils/store-tools/use-store-index.js +82 -0
  429. package/lib/utils/suggester-workers/append-to-index/append.js +96 -0
  430. package/lib/utils/suggester-workers/append-to-index/append.worker.js +31 -0
  431. package/lib/utils/suggester-workers/append-to-index/create-append-task.js +66 -0
  432. package/lib/utils/suggester-workers/append-to-index/index.js +23 -0
  433. package/lib/utils/suggester-workers/append-to-index/prepare-entities.js +114 -0
  434. package/lib/utils/suggester-workers/append-to-index/store-messages.js +48 -0
  435. package/lib/utils/suggester-workers/commons-tokenizer/create-entity-tokenizer.js +64 -0
  436. package/lib/utils/suggester-workers/commons-tokenizer/create-fields-tokenizer.js +103 -0
  437. package/lib/utils/suggester-workers/commons-tokenizer/create-filter-stop-words.js +47 -0
  438. package/lib/utils/suggester-workers/commons-tokenizer/filters/compose-filters.js +24 -0
  439. package/lib/utils/suggester-workers/commons-tokenizer/filters/create-filter-stop-words.js +47 -0
  440. package/lib/utils/suggester-workers/commons-tokenizer/filters/create-filter-stop-words.spec.js +16 -0
  441. package/lib/utils/suggester-workers/commons-tokenizer/filters/filter-accents.js +24 -0
  442. package/lib/utils/suggester-workers/commons-tokenizer/filters/filter-accents.spec.js +18 -0
  443. package/lib/utils/suggester-workers/commons-tokenizer/filters/filter-double.js +34 -0
  444. package/lib/utils/suggester-workers/commons-tokenizer/filters/filter-double.spec.js +25 -0
  445. package/lib/utils/suggester-workers/commons-tokenizer/filters/filter-length.js +17 -0
  446. package/lib/utils/suggester-workers/commons-tokenizer/filters/filter-length.spec.js +25 -0
  447. package/lib/utils/suggester-workers/commons-tokenizer/filters/filter-stemmer.js +29 -0
  448. package/lib/utils/suggester-workers/commons-tokenizer/filters/filter-stemmer.spec.js +18 -0
  449. package/lib/utils/suggester-workers/commons-tokenizer/filters/filter-synonyms.js +71 -0
  450. package/lib/utils/suggester-workers/commons-tokenizer/filters/filter-synonyms.spec.js +15 -0
  451. package/lib/utils/suggester-workers/commons-tokenizer/filters/filter-to-lower.js +19 -0
  452. package/lib/utils/suggester-workers/commons-tokenizer/filters/filter-to-lower.spec.js +16 -0
  453. package/lib/utils/suggester-workers/commons-tokenizer/filters/index.js +23 -0
  454. package/lib/utils/suggester-workers/commons-tokenizer/filters/stop-words.js +9 -0
  455. package/lib/utils/suggester-workers/commons-tokenizer/get-regexp-from-pattern.js +17 -0
  456. package/lib/utils/suggester-workers/commons-tokenizer/get-stemmer.js +31 -0
  457. package/lib/utils/suggester-workers/commons-tokenizer/index.js +79 -0
  458. package/lib/utils/suggester-workers/commons-tokenizer/prepare-string-indexation.js +24 -0
  459. package/lib/utils/suggester-workers/commons-tokenizer/soft-tokenizer.js +15 -0
  460. package/lib/utils/suggester-workers/create-worker.js +64 -0
  461. package/lib/utils/suggester-workers/find-best-label/find-best-label.js +81 -0
  462. package/lib/utils/suggester-workers/find-best-label/find-best-label.worker.js +67 -0
  463. package/lib/utils/suggester-workers/find-best-label/index.js +1 -0
  464. package/lib/utils/suggester-workers/find-best-label/tokenize.js +62 -0
  465. package/lib/utils/suggester-workers/find-best-label/tokenize.spec.js +26 -0
  466. package/lib/utils/suggester-workers/searching/compute-score.js +63 -0
  467. package/lib/utils/suggester-workers/searching/get-db.js +64 -0
  468. package/lib/utils/suggester-workers/searching/index.js +15 -0
  469. package/lib/utils/suggester-workers/searching/order/create-alphanumeric-orderer.js +33 -0
  470. package/lib/utils/suggester-workers/searching/order/index.js +33 -0
  471. package/lib/utils/suggester-workers/searching/query-parser/index.js +23 -0
  472. package/lib/utils/suggester-workers/searching/query-parser/query-parser-soft.js +15 -0
  473. package/lib/utils/suggester-workers/searching/query-parser/query-parser-soft.spec.js +28 -0
  474. package/lib/utils/suggester-workers/searching/query-parser/query-parser-tokenized.js +51 -0
  475. package/lib/utils/suggester-workers/searching/resolve-query-parser.js +73 -0
  476. package/lib/utils/suggester-workers/searching/search-in-index.js +25 -0
  477. package/lib/utils/suggester-workers/searching/searching.js +170 -0
  478. package/lib/utils/suggester-workers/searching/searching.worker.js +23 -0
  479. package/lib/utils/vtl/dataset-builder.js +28 -0
  480. package/lib/utils/vtl/index.js +15 -0
  481. package/package.json +160 -137
  482. package/lib/index.js.map +0 -1
  483. package/src/components/breadcrumb/breadcrumb.scss +0 -22
  484. package/src/components/breadcrumb/component.js +0 -29
  485. package/src/components/breadcrumb/index.js +0 -1
  486. package/src/components/button/button.scss +0 -26
  487. package/src/components/button/component.js +0 -25
  488. package/src/components/button/index.js +0 -1
  489. package/src/components/checkbox/boolean.js +0 -144
  490. package/src/components/checkbox/checkbox.scss +0 -43
  491. package/src/components/checkbox/group.js +0 -180
  492. package/src/components/checkbox/index.js +0 -3
  493. package/src/components/checkbox/one.js +0 -10
  494. package/src/components/components.js +0 -16
  495. package/src/components/datepicker/component.js +0 -10
  496. package/src/components/datepicker/datepicker.scss +0 -16
  497. package/src/components/datepicker/index.js +0 -1
  498. package/src/components/declarations/component.js +0 -38
  499. package/src/components/declarations/declarations.scss +0 -34
  500. package/src/components/declarations/index.js +0 -1
  501. package/src/components/declarations/wrappers/index.js +0 -3
  502. package/src/components/declarations/wrappers/input-declarations-wrapper.js +0 -174
  503. package/src/components/declarations/wrappers/list-declarations-wrapper.js +0 -187
  504. package/src/components/declarations/wrappers/simple-declarations-wrapper.js +0 -54
  505. package/src/components/dropdown/commons/actions.js +0 -56
  506. package/src/components/dropdown/commons/children-to-option.js +0 -9
  507. package/src/components/dropdown/commons/cleaner-callbacks.js +0 -58
  508. package/src/components/dropdown/commons/components/closed.icon.js +0 -24
  509. package/src/components/dropdown/commons/components/dropdown-container.js +0 -169
  510. package/src/components/dropdown/commons/components/label.js +0 -21
  511. package/src/components/dropdown/commons/components/opened.icon.js +0 -24
  512. package/src/components/dropdown/commons/components/panel.js +0 -78
  513. package/src/components/dropdown/commons/event-callbacks/index.js +0 -5
  514. package/src/components/dropdown/commons/event-callbacks/on-keydown-callback.js +0 -30
  515. package/src/components/dropdown/commons/event-callbacks/on-mousedown-callback.js +0 -11
  516. package/src/components/dropdown/commons/reducer.js +0 -149
  517. package/src/components/dropdown/commons/tools/index.js +0 -17
  518. package/src/components/dropdown/component.js +0 -117
  519. package/src/components/dropdown/dropdown-edit/cross.icon.js +0 -20
  520. package/src/components/dropdown/dropdown-edit/dropdown-edit.js +0 -174
  521. package/src/components/dropdown/dropdown-edit/icone.js +0 -33
  522. package/src/components/dropdown/dropdown-edit/index.js +0 -11
  523. package/src/components/dropdown/dropdown-edit/option.js +0 -62
  524. package/src/components/dropdown/dropdown-edit/prefix-tools.js +0 -51
  525. package/src/components/dropdown/dropdown-simple/dropdown.js +0 -155
  526. package/src/components/dropdown/dropdown-simple/index.js +0 -20
  527. package/src/components/dropdown/dropdown-simple/option.js +0 -15
  528. package/src/components/dropdown/dropdown.scss +0 -183
  529. package/src/components/dropdown/index.js +0 -1
  530. package/src/components/filter-description/component.js +0 -41
  531. package/src/components/filter-description/index.js +0 -1
  532. package/src/components/index.js +0 -4
  533. package/src/components/index.scss +0 -76
  534. package/src/components/input/index.js +0 -2
  535. package/src/components/input/input-number.js +0 -238
  536. package/src/components/input/input.js +0 -10
  537. package/src/components/input/input.scss +0 -27
  538. package/src/components/loop/build-components.js +0 -33
  539. package/src/components/loop/component.js +0 -94
  540. package/src/components/loop/index.js +0 -1
  541. package/src/components/loop/loop.scss +0 -17
  542. package/src/components/loop/wrapper.js +0 -11
  543. package/src/components/loop-constructor/block/block.scss +0 -10
  544. package/src/components/loop-constructor/block/component.js +0 -8
  545. package/src/components/loop-constructor/block/index.js +0 -1
  546. package/src/components/loop-constructor/index.js +0 -1
  547. package/src/components/loop-constructor/roster/component.js +0 -7
  548. package/src/components/loop-constructor/roster/index.js +0 -1
  549. package/src/components/loop-constructor/wrapper/body-component.js +0 -118
  550. package/src/components/loop-constructor/wrapper/build-components.js +0 -33
  551. package/src/components/loop-constructor/wrapper/component.js +0 -152
  552. package/src/components/loop-constructor/wrapper/index.js +0 -1
  553. package/src/components/progress-bar/component.js +0 -28
  554. package/src/components/progress-bar/index.js +0 -1
  555. package/src/components/progress-bar/progress-bar.scss +0 -54
  556. package/src/components/radio/component.js +0 -8
  557. package/src/components/radio/index.js +0 -1
  558. package/src/components/radio/radio.scss +0 -24
  559. package/src/components/sequence/component.js +0 -41
  560. package/src/components/sequence/index.js +0 -1
  561. package/src/components/sequence/sequence.scss +0 -15
  562. package/src/components/subsequence/component.js +0 -48
  563. package/src/components/subsequence/index.js +0 -1
  564. package/src/components/subsequence/subsequence.scss +0 -15
  565. package/src/components/table/index.js +0 -1
  566. package/src/components/table/table.js +0 -160
  567. package/src/components/table/table.scss +0 -23
  568. package/src/components/textarea/component.js +0 -10
  569. package/src/components/textarea/index.js +0 -1
  570. package/src/components/textarea/textarea.scss +0 -16
  571. package/src/components/tooltip/img/collected.png +0 -0
  572. package/src/components/tooltip/img/index.js +0 -5
  573. package/src/components/tooltip/index.js +0 -1
  574. package/src/components/tooltip/response.js +0 -51
  575. package/src/components/tooltip/tooltip.scss +0 -35
  576. package/src/constants/component-types.js +0 -1
  577. package/src/constants/declarations.js +0 -14
  578. package/src/constants/index.js +0 -4
  579. package/src/constants/supported-preferences.js +0 -10
  580. package/src/constants/value-types.js +0 -5
  581. package/src/constants/variable-types.js +0 -4
  582. package/src/stories/breadcrumb/README.md +0 -14
  583. package/src/stories/breadcrumb/breadcrumb.stories.js +0 -33
  584. package/src/stories/button/README.md +0 -14
  585. package/src/stories/button/button.stories.js +0 -63
  586. package/src/stories/checkbox-boolean/README.md +0 -27
  587. package/src/stories/checkbox-boolean/checkbox-boolean.stories.js +0 -30
  588. package/src/stories/checkbox-group/README.md +0 -29
  589. package/src/stories/checkbox-group/checkbox-group.stories.js +0 -81
  590. package/src/stories/checkbox-group/data-vtl.json +0 -89
  591. package/src/stories/checkbox-group/data.json +0 -89
  592. package/src/stories/checkbox-one/checkbox-one.stories.js +0 -77
  593. package/src/stories/checkbox-one/data-vtl.json +0 -33
  594. package/src/stories/checkbox-one/data.json +0 -33
  595. package/src/stories/datepicker/README.md +0 -31
  596. package/src/stories/datepicker/data.json +0 -28
  597. package/src/stories/datepicker/datepicker.stories.js +0 -65
  598. package/src/stories/declarations/README.md +0 -19
  599. package/src/stories/declarations/declarations.stories.js +0 -112
  600. package/src/stories/dropdown/README.md +0 -44
  601. package/src/stories/dropdown/data-naf.json +0 -6963
  602. package/src/stories/dropdown/data-props.json +0 -81
  603. package/src/stories/dropdown/data.json +0 -78
  604. package/src/stories/dropdown/dropdown.stories.js +0 -65
  605. package/src/stories/filter-description/README.md +0 -15
  606. package/src/stories/filter-description/filter-description.stories.js +0 -70
  607. package/src/stories/input/README.md +0 -33
  608. package/src/stories/input/data.json +0 -28
  609. package/src/stories/input/input.stories.js +0 -67
  610. package/src/stories/input-number/README.md +0 -37
  611. package/src/stories/input-number/data.json +0 -30
  612. package/src/stories/input-number/input-number.stories.js +0 -75
  613. package/src/stories/loop/README.md +0 -25
  614. package/src/stories/loop/loop.stories.js +0 -80
  615. package/src/stories/loop/with-loop/data-loop-deeper.json +0 -298
  616. package/src/stories/loop/with-loop/data-loop.json +0 -211
  617. package/src/stories/loop/with-loop/data-vqs.json +0 -1384
  618. package/src/stories/loop/with-loop/index.js +0 -3
  619. package/src/stories/loop/with-roster/data-loop-deeper.json +0 -298
  620. package/src/stories/loop/with-roster/data-loop.json +0 -213
  621. package/src/stories/loop/with-roster/data-vqs.json +0 -1383
  622. package/src/stories/loop/with-roster/index.js +0 -3
  623. package/src/stories/loop-constructor/README.md +0 -27
  624. package/src/stories/loop-constructor/data-loop.json +0 -66
  625. package/src/stories/loop-constructor/data-roster.json +0 -68
  626. package/src/stories/loop-constructor/loop-constructor.stories.js +0 -42
  627. package/src/stories/progress-bar/README.md +0 -13
  628. package/src/stories/progress-bar/progress-bar.stories.js +0 -24
  629. package/src/stories/radio/README.md +0 -31
  630. package/src/stories/radio/data-vtl.json +0 -32
  631. package/src/stories/radio/data.json +0 -32
  632. package/src/stories/radio/radio.stories.js +0 -81
  633. package/src/stories/sequence/README.md +0 -18
  634. package/src/stories/sequence/sequence.stories.js +0 -58
  635. package/src/stories/subsequence/README.md +0 -18
  636. package/src/stories/subsequence/subsequence.stories.js +0 -58
  637. package/src/stories/table/README.md +0 -29
  638. package/src/stories/table/data-one-axis-one-measure.json +0 -124
  639. package/src/stories/table/data-one-axis-two-measures.json +0 -193
  640. package/src/stories/table/data-one-hierarchical-axis.json +0 -204
  641. package/src/stories/table/data-two-axis-one-measure.json +0 -492
  642. package/src/stories/table/table.stories.js +0 -77
  643. package/src/stories/textarea/README.md +0 -33
  644. package/src/stories/textarea/data-forced.json +0 -28
  645. package/src/stories/textarea/data.json +0 -28
  646. package/src/stories/textarea/textarea.stories.js +0 -90
  647. package/src/stories/tooltip-response/README.md +0 -14
  648. package/src/stories/tooltip-response/tooltip.stories.js +0 -43
  649. package/src/stories/utils/custom-lunatic.scss +0 -787
  650. package/src/stories/utils/img/arrow.png +0 -0
  651. package/src/stories/utils/img/check_box.svg +0 -1
  652. package/src/stories/utils/img/check_box_outline.svg +0 -1
  653. package/src/stories/utils/img/lunatic-logo.png +0 -0
  654. package/src/stories/utils/img/menu-down.svg +0 -1
  655. package/src/stories/utils/img/menu-up.svg +0 -1
  656. package/src/stories/utils/img/radio_button_checked.svg +0 -1
  657. package/src/stories/utils/img/radio_button_unchecked.svg +0 -1
  658. package/src/stories/utils/options.js +0 -21
  659. package/src/stories/utils/orchestrator.js +0 -53
  660. package/src/tests/components/breadcrumb.spec.js +0 -13
  661. package/src/tests/components/button.spec.js +0 -11
  662. package/src/tests/components/checkbox-boolean.spec.js +0 -40
  663. package/src/tests/components/checkbox-group.spec.js +0 -48
  664. package/src/tests/components/checkbox-one.spec.js +0 -32
  665. package/src/tests/components/datepicker.spec.js +0 -22
  666. package/src/tests/components/declarations-wrappers/input-declarations-wrapper.spec.js +0 -65
  667. package/src/tests/components/declarations-wrappers/list-declarations-wrapper.spec.js +0 -47
  668. package/src/tests/components/declarations-wrappers/simple-declarations-wrapper.spec.js +0 -21
  669. package/src/tests/components/declarations.spec.js +0 -46
  670. package/src/tests/components/input-number.spec.js +0 -173
  671. package/src/tests/components/input.spec.js +0 -18
  672. package/src/tests/components/progress-bar.spec.js +0 -15
  673. package/src/tests/components/radio.spec.js +0 -27
  674. package/src/tests/components/sequence.spec.js +0 -9
  675. package/src/tests/components/subsequence.spec.js +0 -9
  676. package/src/tests/components/table.spec.js +0 -11
  677. package/src/tests/components/textarea.spec.js +0 -18
  678. package/src/tests/components/tooltip.spec.js +0 -25
  679. package/src/tests/setup/setupTests.js +0 -4
  680. package/src/tests/utils/lib/alphabet.spec.js +0 -36
  681. package/src/tests/utils/lib/checkbox/group.spec.js +0 -72
  682. package/src/tests/utils/lib/decorator/title-decorator.spec.js +0 -12
  683. package/src/tests/utils/lib/items-positioning.spec.js +0 -17
  684. package/src/tests/utils/lib/label-position.spec.js +0 -22
  685. package/src/tests/utils/lib/loops/bindings.spec.js +0 -60
  686. package/src/tests/utils/lib/loops/shared.spec.js +0 -77
  687. package/src/tests/utils/lib/responses.spec.js +0 -58
  688. package/src/tests/utils/lib/style.spec.js +0 -26
  689. package/src/tests/utils/lib/table/roster.spec.js +0 -25
  690. package/src/tests/utils/lib/tooltip/build-response.spec.js +0 -95
  691. package/src/tests/utils/lib/tooltip/content.spec.js +0 -109
  692. package/src/tests/utils/to-expose/handler/handler.spec.js +0 -86
  693. package/src/tests/utils/to-expose/handler/questionnaire.json +0 -154
  694. package/src/tests/utils/to-expose/handler/results/index.js +0 -6
  695. package/src/tests/utils/to-expose/handler/results/res-double.json +0 -157
  696. package/src/tests/utils/to-expose/handler/results/res-input-collected.json +0 -154
  697. package/src/tests/utils/to-expose/handler/results/res-input-edited.json +0 -157
  698. package/src/tests/utils/to-expose/handler/results/res-loop.json +0 -157
  699. package/src/tests/utils/to-expose/handler/results/res-matrix.json +0 -157
  700. package/src/tests/utils/to-expose/handler/results/res-responses.json +0 -157
  701. package/src/tests/utils/to-expose/init-questionnaire/data.json +0 -12
  702. package/src/tests/utils/to-expose/init-questionnaire/init-questionnaire.spec.js +0 -19
  703. package/src/tests/utils/to-expose/init-questionnaire/questionnaire.json +0 -129
  704. package/src/tests/utils/to-expose/init-questionnaire/result.json +0 -162
  705. package/src/tests/utils/to-expose/interpret.spec.js +0 -42
  706. package/src/tests/utils/to-expose/state/questionnaire.json +0 -61
  707. package/src/tests/utils/to-expose/state/results.js +0 -78
  708. package/src/tests/utils/to-expose/state/state.spec.js +0 -59
  709. package/src/utils/lib/alphabet.js +0 -1
  710. package/src/utils/lib/checkbox/group.js +0 -21
  711. package/src/utils/lib/checkbox/index.js +0 -1
  712. package/src/utils/lib/decorator/index.js +0 -1
  713. package/src/utils/lib/decorator/title-decorator.js +0 -16
  714. package/src/utils/lib/index.js +0 -12
  715. package/src/utils/lib/label-position.js +0 -12
  716. package/src/utils/lib/loops/bindings.js +0 -47
  717. package/src/utils/lib/loops/index.js +0 -2
  718. package/src/utils/lib/loops/shared.js +0 -43
  719. package/src/utils/lib/memo-check.js +0 -24
  720. package/src/utils/lib/options-positioning.js +0 -9
  721. package/src/utils/lib/prop-types/declarations.js +0 -22
  722. package/src/utils/lib/prop-types/index.js +0 -5
  723. package/src/utils/lib/prop-types/lines.js +0 -6
  724. package/src/utils/lib/prop-types/options.js +0 -8
  725. package/src/utils/lib/prop-types/response.js +0 -6
  726. package/src/utils/lib/prop-types/value-type.js +0 -9
  727. package/src/utils/lib/responses.js +0 -9
  728. package/src/utils/lib/style.js +0 -10
  729. package/src/utils/lib/table/index.js +0 -1
  730. package/src/utils/lib/table/roster.js +0 -18
  731. package/src/utils/lib/tooltip/build-response.js +0 -41
  732. package/src/utils/lib/tooltip/content.js +0 -52
  733. package/src/utils/lib/tooltip/index.js +0 -6
  734. package/src/utils/to-expose/handler.js +0 -99
  735. package/src/utils/to-expose/hook.js +0 -65
  736. package/src/utils/to-expose/index.js +0 -11
  737. package/src/utils/to-expose/init-questionnaire.js +0 -114
  738. package/src/utils/to-expose/interpret.js +0 -53
  739. package/src/utils/to-expose/state.js +0 -58
package/lib/index.js CHANGED
@@ -1,4247 +1,32 @@
1
- Object.defineProperty(exports, '__esModule', { value: true });
1
+ "use strict";
2
2
 
3
- var React = require('react');
4
- var PropTypes = require('prop-types');
5
- var vtl2_1Engine = require('@inseefr/vtl-2.1-engine');
6
- var camelCase = require('lodash.camelcase');
7
- var isEqual = require('lodash.isequal');
8
- var removeAccents = require('remove-accents');
9
-
10
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
11
-
12
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
13
- var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
14
- var camelCase__default = /*#__PURE__*/_interopDefaultLegacy(camelCase);
15
- var isEqual__default = /*#__PURE__*/_interopDefaultLegacy(isEqual);
16
- var removeAccents__default = /*#__PURE__*/_interopDefaultLegacy(removeAccents);
17
-
18
- var lunatic = /*#__PURE__*/Object.freeze({
19
- __proto__: null,
20
- get Breadcrumb () { return Breadcrumb; },
21
- get Button () { return Button; },
22
- get Datepicker () { return component; },
23
- get Declarations () { return Declarations; },
24
- get Dropdown () { return component$1; },
25
- get FilterDescription () { return FilterDescription; },
26
- get ProgressBar () { return ProgressBar; },
27
- get Radio () { return component$2; },
28
- get Loop () { return LoopWrapper; },
29
- get Sequence () { return component$4; },
30
- get Subsequence () { return component$5; },
31
- get Textarea () { return component$6; },
32
- get TooltipResponse () { return TooltipResponse; },
33
- get CheckboxGroup () { return group; },
34
- get CheckboxBoolean () { return boolean; },
35
- get CheckboxOne () { return one; },
36
- get Input () { return input; },
37
- get InputNumber () { return inputNumber; },
38
- get RosterForLoop () { return component$3; }
39
- });
40
-
41
- // Declaration position
42
- var BEFORE_QUESTION_TEXT = 'BEFORE_QUESTION_TEXT';
43
- var AFTER_QUESTION_TEXT = 'AFTER_QUESTION_TEXT';
44
- var DETACHABLE = 'DETACHABLE'; // Declaration types
45
-
46
- var INSTRUCTION = 'INSTRUCTION';
47
- var COMMENT = 'COMMENT';
48
- var HELP = 'HELP';
49
- var WARNING = 'WARNING';
50
- var MESSAGE_FILTER = 'MESSAGE_FILTER';
51
- var STATEMENT = 'STATEMENT';
52
-
53
- var PREVIOUS = 'PREVIOUS';
54
- var COLLECTED = 'COLLECTED';
55
- var FORCED = 'FORCED';
56
- var EDITED = 'EDITED';
57
- var INPUTED = 'INPUTED';
58
-
59
- var EXTERNAL = 'EXTERNAL';
60
- var CALCULATED = 'CALCULATED'; // Already define in value-types
61
- //export const COLLECTED = 'COLLECTED';
62
-
63
- var declarations = PropTypes__default['default'].arrayOf(PropTypes__default['default'].shape({
64
- id: PropTypes__default['default'].string.isRequired,
65
- declarationType: PropTypes__default['default'].oneOf([INSTRUCTION, COMMENT, HELP, WARNING, MESSAGE_FILTER, STATEMENT]),
66
- position: PropTypes__default['default'].oneOf([BEFORE_QUESTION_TEXT, AFTER_QUESTION_TEXT, DETACHABLE]),
67
- label: PropTypes__default['default'].string.isRequired
68
- })).isRequired;
69
-
70
- var options = PropTypes__default['default'].arrayOf(PropTypes__default['default'].shape({
71
- label: PropTypes__default['default'].string.isRequired,
72
- value: PropTypes__default['default'].string.isRequired
73
- }));
74
-
75
- var response = PropTypes__default['default'].shape({
76
- name: PropTypes__default['default'].string,
77
- values: PropTypes__default['default'].shape({})
78
- });
79
-
80
- var valueType = PropTypes__default['default'].oneOf(['COLLECTED', 'PREVIOUS', 'FORCED', 'EDITED', 'INPUTED']);
81
-
82
- var lines = PropTypes__default['default'].shape({
83
- min: PropTypes__default['default'].number,
84
- max: PropTypes__default['default'].number
85
- });
86
-
87
- var buildTooltip = function buildTooltip(response) {
88
- if (!response || !response.values || Object.keys(response.values).length === 0) return {};
89
- var values = response.values;
90
- var edited = values[EDITED];
91
- var forced = values[FORCED];
92
- var collected = values[COLLECTED];
93
-
94
- if (has(edited)) {
95
- if (!has(forced)) return {
96
- content: [{
97
- key: 'Brute',
98
- value: collected || ' - '
99
- }],
100
- imgName: 'editedImg'
101
- };
102
- return {
103
- content: [{
104
- key: 'Brute',
105
- value: collected || ' - '
106
- }, {
107
- key: 'Correction automatique',
108
- value: forced
109
- }],
110
- imgName: 'editedImg'
111
- };
112
- }
113
-
114
- if (has(forced)) return {
115
- content: [{
116
- key: 'Brute',
117
- value: collected || ' - '
118
- }],
119
- imgName: 'forcedImg'
120
- };
121
- return {};
122
- };
123
-
124
- var has = function has(status) {
125
- return status !== undefined && status !== null;
126
- };
127
-
128
- function _defineProperty(obj, key, value) {
129
- if (key in obj) {
130
- Object.defineProperty(obj, key, {
131
- value: value,
132
- enumerable: true,
133
- configurable: true,
134
- writable: true
135
- });
136
- } else {
137
- obj[key] = value;
138
- }
139
-
140
- return obj;
141
- }
142
-
143
- function _extends() {
144
- _extends = Object.assign || function (target) {
145
- for (var i = 1; i < arguments.length; i++) {
146
- var source = arguments[i];
147
-
148
- for (var key in source) {
149
- if (Object.prototype.hasOwnProperty.call(source, key)) {
150
- target[key] = source[key];
151
- }
152
- }
153
- }
154
-
155
- return target;
156
- };
157
-
158
- return _extends.apply(this, arguments);
159
- }
160
-
161
- function ownKeys(object, enumerableOnly) {
162
- var keys = Object.keys(object);
163
-
164
- if (Object.getOwnPropertySymbols) {
165
- var symbols = Object.getOwnPropertySymbols(object);
166
- if (enumerableOnly) symbols = symbols.filter(function (sym) {
167
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
168
- });
169
- keys.push.apply(keys, symbols);
170
- }
171
-
172
- return keys;
173
- }
174
-
175
- function _objectSpread2(target) {
176
- for (var i = 1; i < arguments.length; i++) {
177
- var source = arguments[i] != null ? arguments[i] : {};
178
-
179
- if (i % 2) {
180
- ownKeys(Object(source), true).forEach(function (key) {
181
- _defineProperty(target, key, source[key]);
182
- });
183
- } else if (Object.getOwnPropertyDescriptors) {
184
- Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
185
- } else {
186
- ownKeys(Object(source)).forEach(function (key) {
187
- Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
188
- });
189
- }
190
- }
191
-
192
- return target;
193
- }
194
-
195
- function _objectWithoutPropertiesLoose(source, excluded) {
196
- if (source == null) return {};
197
- var target = {};
198
- var sourceKeys = Object.keys(source);
199
- var key, i;
200
-
201
- for (i = 0; i < sourceKeys.length; i++) {
202
- key = sourceKeys[i];
203
- if (excluded.indexOf(key) >= 0) continue;
204
- target[key] = source[key];
205
- }
206
-
207
- return target;
208
- }
209
-
210
- function _objectWithoutProperties(source, excluded) {
211
- if (source == null) return {};
212
-
213
- var target = _objectWithoutPropertiesLoose(source, excluded);
214
-
215
- var key, i;
216
-
217
- if (Object.getOwnPropertySymbols) {
218
- var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
219
-
220
- for (i = 0; i < sourceSymbolKeys.length; i++) {
221
- key = sourceSymbolKeys[i];
222
- if (excluded.indexOf(key) >= 0) continue;
223
- if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
224
- target[key] = source[key];
225
- }
226
- }
227
-
228
- return target;
229
- }
230
-
231
- function _slicedToArray(arr, i) {
232
- return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
233
- }
234
-
235
- function _toArray(arr) {
236
- return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest();
237
- }
238
-
239
- function _toConsumableArray(arr) {
240
- return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
241
- }
242
-
243
- function _arrayWithoutHoles(arr) {
244
- if (Array.isArray(arr)) return _arrayLikeToArray(arr);
245
- }
246
-
247
- function _arrayWithHoles(arr) {
248
- if (Array.isArray(arr)) return arr;
249
- }
250
-
251
- function _iterableToArray(iter) {
252
- if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter);
253
- }
254
-
255
- function _iterableToArrayLimit(arr, i) {
256
- if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return;
257
- var _arr = [];
258
- var _n = true;
259
- var _d = false;
260
- var _e = undefined;
261
-
262
- try {
263
- for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
264
- _arr.push(_s.value);
265
-
266
- if (i && _arr.length === i) break;
267
- }
268
- } catch (err) {
269
- _d = true;
270
- _e = err;
271
- } finally {
272
- try {
273
- if (!_n && _i["return"] != null) _i["return"]();
274
- } finally {
275
- if (_d) throw _e;
276
- }
277
- }
278
-
279
- return _arr;
280
- }
281
-
282
- function _unsupportedIterableToArray(o, minLen) {
283
- if (!o) return;
284
- if (typeof o === "string") return _arrayLikeToArray(o, minLen);
285
- var n = Object.prototype.toString.call(o).slice(8, -1);
286
- if (n === "Object" && o.constructor) n = o.constructor.name;
287
- if (n === "Map" || n === "Set") return Array.from(o);
288
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
289
- }
290
-
291
- function _arrayLikeToArray(arr, len) {
292
- if (len == null || len > arr.length) len = arr.length;
293
-
294
- for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
295
-
296
- return arr2;
297
- }
298
-
299
- function _nonIterableSpread() {
300
- throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
301
- }
302
-
303
- function _nonIterableRest() {
304
- throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
305
- }
306
-
307
- var interpret = function interpret(features) {
308
- return function (bindings, doNotReplaceNullBindings) {
309
- return function (expression) {
310
- if (!expression) return '';
311
- if (!Array.isArray(features)) return expression;
312
-
313
- if (features.includes('VTL')) {
314
- try {
315
- var VTLExpr = vtl2_1Engine.interpret(expression, doNotReplaceNullBindings ? bindings : replaceNullBindings(bindings));
316
- if (!VTLExpr) return expression;
317
- return VTLExpr;
318
- } catch (e) {
319
- return expression;
320
- }
321
- }
322
-
323
- return expression;
324
- };
325
- };
326
- };
327
- var interpretWithEmptyDefault = function interpretWithEmptyDefault(features, doNotReplaceNullBindings) {
328
- return function (bindings, replaceNullBindings) {
329
- return function (expression) {
330
- if (!expression) return '';
331
- if (!Array.isArray(features)) return expression;
332
-
333
- if (features.includes('VTL')) {
334
- try {
335
- var VTLExpr = vtl2_1Engine.interpret(expression, doNotReplaceNullBindings ? bindings : replaceNullBindings(bindings, ''));
336
- if (!VTLExpr) return '';
337
- return VTLExpr;
338
- } catch (e) {
339
- return '';
340
- }
341
- }
342
-
343
- return '';
344
- };
345
- };
346
- };
347
- var replaceNullBindings = function replaceNullBindings(bindings, defaultValue) {
348
- return bindings ? Object.entries(bindings).reduce(function (acc, _ref) {
349
- var _ref2 = _slicedToArray(_ref, 2),
350
- key = _ref2[0],
351
- value = _ref2[1];
352
-
353
- return _objectSpread2(_objectSpread2({}, acc), {}, _defineProperty({}, key, value === null ? defaultValue || key : value));
354
- }, {}) : {};
355
- };
356
-
357
- var mergeQuestionnaireAndData = function mergeQuestionnaireAndData(questionnaire) {
358
- return function (data) {
359
- if (!questionnaire || !questionnaire.components) return {};
360
- if (questionnaire.components.length === 0) return questionnaire;
361
-
362
- var components = questionnaire.components,
363
- variables = questionnaire.variables,
364
- props = _objectWithoutProperties(questionnaire, ["components", "variables"]);
365
-
366
- var vars = buildVars(data || {})(variables);
367
- var filledComponents = buildFilledComponents(vars[COLLECTED])(components)(0);
368
- return _objectSpread2(_objectSpread2({}, props), {}, {
369
- components: filledComponents,
370
- variables: vars
371
- });
372
- };
373
- };
374
-
375
- var buildVars = function buildVars(data) {
376
- return function (variables) {
377
- if (!Array.isArray(variables)) return {};
378
- var collectedData = data.COLLECTED;
379
- var collected = variables.filter(function (_ref) {
380
- var variableType = _ref.variableType;
381
- return variableType === COLLECTED;
382
- }).reduce(function (acc, _ref2) {
383
- var values = _ref2.values,
384
- name = _ref2.name,
385
- componentRef = _ref2.componentRef;
386
- var d = collectedData && collectedData[name] || {};
387
- return _objectSpread2(_objectSpread2({}, acc), {}, _defineProperty({}, name, {
388
- componentRef: componentRef,
389
- values: _objectSpread2(_objectSpread2({}, values), d)
390
- }));
391
- }, {});
392
- var EXTERNAL$1 = variables.filter(function (_ref3) {
393
- var variableType = _ref3.variableType;
394
- return variableType === EXTERNAL;
395
- }).reduce(function (_, v) {
396
- return _objectSpread2(_objectSpread2({}, _), initExternalVariable(v)(data));
397
- }, {});
398
- return {
399
- EXTERNAL: EXTERNAL$1,
400
- COLLECTED: collected,
401
- CALCULATED: variables.filter(function (_ref4) {
402
- var variableType = _ref4.variableType;
403
- return variableType === CALCULATED;
404
- }).reduce(function (_, v) {
405
- return _objectSpread2(_objectSpread2({}, _), initCalculatedVariable(v)(_objectSpread2(_objectSpread2({}, EXTERNAL$1), collected)));
406
- }, {})
407
- };
408
- };
409
- };
410
-
411
- var buildFilledComponents = function buildFilledComponents(vars) {
412
- return function (components) {
413
- return function (depth) {
414
- return components.map(function (c) {
415
- var component = _objectSpread2({
416
- depth: depth
417
- }, c);
418
-
419
- return buildFilledComponent(vars)(component);
420
- });
421
- };
422
- };
423
- };
424
-
425
- var buildFilledComponent = function buildFilledComponent(vars) {
426
- return function (component) {
427
- if (component.response) return buildResponseComponent(vars)(component);else if (component.responses) return buildResponsesComponent(vars)(component);else if (component.cells) return buildCellsComponent(vars)(component);else if (component.components) return buildComponentsComponent(vars)(component);
428
- return component;
429
- };
430
- };
431
- var buildResponseComponent = function buildResponseComponent(vars) {
432
- return function (c) {
433
- return _objectSpread2(_objectSpread2({}, c), {}, {
434
- response: {
435
- name: c.response.name,
436
- values: vars[c.response.name].values
437
- }
438
- });
439
- };
440
- };
441
- var buildResponsesComponent = function buildResponsesComponent(vars) {
442
- return function (c) {
443
- var responses = c.responses,
444
- rest = _objectWithoutProperties(c, ["responses"]);
445
-
446
- var filledResponses = responses.map(function (r) {
447
- return buildResponseComponent(vars)(r);
448
- });
449
- return _objectSpread2(_objectSpread2({}, rest), {}, {
450
- responses: filledResponses
451
- });
452
- };
453
- };
454
- var buildCellsComponent = function buildCellsComponent(vars) {
455
- return function (c) {
456
- var cells = c.cells,
457
- depth = c.depth,
458
- rest = _objectWithoutProperties(c, ["cells", "depth"]);
459
-
460
- var filledCells = cells.map(function (row) {
461
- return buildFilledComponents(vars)(row)(depth);
462
- });
463
- return _objectSpread2(_objectSpread2({}, rest), {}, {
464
- depth: depth,
465
- cells: filledCells
466
- });
467
- };
468
- };
469
- var buildComponentsComponent = function buildComponentsComponent(vars) {
470
- return function (component) {
471
- var components = component.components,
472
- depth = component.depth,
473
- rest = _objectWithoutProperties(component, ["components", "depth"]);
474
-
475
- var filledComponents = buildFilledComponents(vars)(components)(depth + 1);
476
- return _objectSpread2(_objectSpread2({}, rest), {}, {
477
- depth: depth,
478
- components: filledComponents
479
- });
480
- };
481
- };
482
-
483
- var initExternalVariable = function initExternalVariable(_ref5) {
484
- var name = _ref5.name;
485
- return function (data) {
486
- return _defineProperty({}, name, data && data.EXTERNAL && data.EXTERNAL[name] || null);
487
- };
488
- };
489
-
490
- var initCalculatedVariable = function initCalculatedVariable(_ref7) {
491
- var name = _ref7.name,
492
- expression = _ref7.expression;
493
- return function (data) {
494
- var bindings = Object.entries(data).reduce(function (acc, _ref8) {
495
- var _ref9 = _slicedToArray(_ref8, 2),
496
- key = _ref9[0],
497
- value = _ref9[1];
498
-
499
- return _objectSpread2(_objectSpread2({}, acc), {}, _defineProperty({}, key, typeof value === 'string' || value === null ? value : value.values[COLLECTED]));
500
- }, {});
501
- return _defineProperty({}, name, {
502
- expression: expression,
503
- value: interpret(['VTL'])(bindings)(expression)
504
- });
505
- };
506
- };
507
-
508
- var supportedPreferences = [PREVIOUS, COLLECTED, FORCED, EDITED, INPUTED];
509
-
510
- var buildBindingsForDeeperComponents = function buildBindingsForDeeperComponents(index) {
511
- return function (bindings) {
512
- return bindings ? Object.entries(bindings).reduce(function (_, _ref) {
513
- var _ref2 = _slicedToArray(_ref, 2),
514
- name = _ref2[0],
515
- value = _ref2[1];
516
-
517
- if (Array.isArray(value)) return _objectSpread2(_objectSpread2({}, _), {}, _defineProperty({}, name, value[index] || null));
518
- return _objectSpread2(_objectSpread2({}, _), {}, _defineProperty({}, name, value));
519
- }, {}) : {};
520
- };
521
- };
522
-
523
- var getDefaultDatasetStructure = function getDefaultDatasetStructure(name, value) {
524
- return _defineProperty({}, name, {
525
- dataStructure: {},
526
- dataPoints: _defineProperty({}, name, value)
527
- });
528
- };
529
-
530
- var buildVectorialBindings = function buildVectorialBindings(bindings) {
531
- return bindings ? Object.entries(bindings).reduce(function (_, _ref4) {
532
- var _ref5 = _slicedToArray(_ref4, 2),
533
- name = _ref5[0],
534
- value = _ref5[1];
535
-
536
- if (Array.isArray(value)) return _objectSpread2(_objectSpread2({}, _), getDefaultDatasetStructure(name, value));
537
- return _objectSpread2(_objectSpread2({}, _), {}, _defineProperty({}, name, value));
538
- }, {}) : {};
539
- };
540
- var displayLoop = function displayLoop(dependencyList) {
541
- return function (bindings) {
542
- if (!Array.isArray(dependencyList) || !bindings) return false;
543
- return !(dependencyList.map(function (iv) {
544
- return Array.isArray(bindings[iv][0]) ? bindings[iv][0].flat()[0] : bindings[iv][0];
545
- }).filter(function (v) {
546
- return v;
547
- }).length === 0);
548
- };
549
- };
550
- var displayLoopQuestion = function displayLoopQuestion(dependencyList) {
551
- return function (bindings) {
552
- if (!Array.isArray(dependencyList) || !bindings) return false;
553
- return !(dependencyList.map(function (iv) {
554
- return Array.isArray(bindings[iv]) ? bindings[iv].flat()[0] : bindings[iv];
555
- }).filter(function (v) {
556
- return v;
557
- }).length === 0);
558
- };
559
- };
560
-
561
- var updateQuestionnaire = function updateQuestionnaire(valueType) {
562
- return function (questionnaire) {
563
- return function (preferences) {
564
- return function (updatedValues) {
565
- if (!supportedPreferences.includes(valueType) || preferences.length === 0 || !updatedValues) return questionnaire;
566
-
567
- var variables = questionnaire.variables,
568
- components = questionnaire.components,
569
- other = _objectWithoutProperties(questionnaire, ["variables", "components"]);
570
-
571
- if (!components || components.length === 0) return questionnaire;
572
- var varsAndRefs = Object.entries(updatedValues).reduce(function (acc, _ref) {
573
- var _ref2 = _slicedToArray(_ref, 2),
574
- key = _ref2[0],
575
- value = _ref2[1];
576
-
577
- var _acc$newVariables = acc.newVariables,
578
- COLLECTED = _acc$newVariables.COLLECTED,
579
- otherVars = _objectWithoutProperties(_acc$newVariables, ["COLLECTED"]),
580
- refs = acc.refs;
581
-
582
- var _COLLECTED$key = COLLECTED[key],
583
- componentRef = _COLLECTED$key.componentRef,
584
- values = _COLLECTED$key.values;
585
- var updated = {
586
- componentRef: componentRef,
587
- values: _objectSpread2(_objectSpread2({}, values), {}, _defineProperty({}, valueType, buildNewValue(preferences)(valueType)(values)(value)))
588
- };
589
-
590
- var newCollected = _objectSpread2(_objectSpread2({}, COLLECTED), {}, _defineProperty({}, key, updated));
591
-
592
- return {
593
- newVariables: _objectSpread2(_objectSpread2({}, otherVars), {}, {
594
- COLLECTED: newCollected
595
- }),
596
- refs: [].concat(_toConsumableArray(refs), [componentRef])
597
- };
598
- }, {
599
- newVariables: variables,
600
- refs: []
601
- });
602
- var newVariables = varsAndRefs.newVariables,
603
- r = varsAndRefs.refs;
604
- var newVariablesWithCalculated = valueType === COLLECTED ? addCalculatedVars(newVariables) : newVariables;
605
- var collectedVars = newVariables[COLLECTED];
606
- var newComponents = components.map(function (c) {
607
- if (r.includes(c.id)) return buildFilledComponent(collectedVars)(c);
608
- return c;
609
- });
610
- return _objectSpread2(_objectSpread2({}, other), {}, {
611
- variables: newVariablesWithCalculated,
612
- components: newComponents
613
- });
614
- };
615
- };
616
- };
617
- };
618
- var buildNewValue = function buildNewValue(preferences) {
619
- return function (valueType) {
620
- return function (oldValues) {
621
- return function (value) {
622
- if (preferences.length === 1) return value;
623
- var index = preferences.indexOf(valueType);
624
- if (index < 1) return value;
625
- var valuesByPreference = preferences.slice(0, index).map(function (p) {
626
- return oldValues[p];
627
- }).filter(function (v) {
628
- return v !== null;
629
- });
630
- var lastValue = valuesByPreference[valuesByPreference.length - 1];
631
- return lastValue === value ? null : value;
632
- };
633
- };
634
- };
635
- };
636
-
637
- var addCalculatedVars = function addCalculatedVars(variables) {
638
- if (!variables[CALCULATED] || Object.keys(variables[CALCULATED]).length === 0) return variables;
639
- var COLLECTED$1 = variables.COLLECTED,
640
- EXTERNAL = variables.EXTERNAL,
641
- CALCULATED$1 = variables.CALCULATED;
642
- var collected = Object.entries(COLLECTED$1).reduce(function (acc, _ref3) {
643
- var _ref4 = _slicedToArray(_ref3, 2),
644
- key = _ref4[0],
645
- values = _ref4[1].values;
646
-
647
- return _objectSpread2(_objectSpread2({}, acc), {}, _defineProperty({}, key, values[COLLECTED]));
648
- }, {});
649
- var bindings = buildVectorialBindings(_objectSpread2(_objectSpread2({}, collected), EXTERNAL));
650
- var calculated = Object.entries(CALCULATED$1).reduce(function (acc, _ref5) {
651
- var _ref6 = _slicedToArray(_ref5, 2),
652
- key = _ref6[0],
653
- expression = _ref6[1].expression;
654
-
655
- // Assume that a calculated variable has a first level scope
656
- // If we need to handle deep calculated variables, we have to
657
- // update the shape of bindings, grouping vars by type
658
- var res = interpret(['VTL'])(bindings)(expression);
659
- var value = Array.isArray(res) ? res.join(',') : res;
660
- return _objectSpread2(_objectSpread2({}, acc), {}, _defineProperty({}, key, {
661
- expression: expression,
662
- value: value
663
- }));
664
- }, {});
665
- return {
666
- EXTERNAL: EXTERNAL,
667
- COLLECTED: COLLECTED$1,
668
- CALCULATED: calculated
669
- };
670
- };
671
-
672
- var buildMultiTooltipResponse = function buildMultiTooltipResponse(options) {
673
- return function (response) {
674
- if (!response || Object.keys(response).length === 0 || !options) return {};
675
- var name = response.name,
676
- values = response.values;
677
- var newValues = Object.entries(values).reduce(function (acc, _ref) {
678
- var _ref2 = _slicedToArray(_ref, 2),
679
- k = _ref2[0],
680
- v = _ref2[1];
681
-
682
- return v === null ? _objectSpread2(_objectSpread2({}, acc), {}, _defineProperty({}, k, v)) : _objectSpread2(_objectSpread2({}, acc), {}, _defineProperty({}, k, options.find(function (o) {
683
- return o.value === v;
684
- }).label));
685
- }, {});
686
- return {
687
- name: name,
688
- values: newValues
689
- };
690
- };
691
- };
692
- var buildBooleanTooltipResponse = function buildBooleanTooltipResponse(response) {
693
- if (!response || Object.keys(response).length === 0) return {};
694
- var name = response.name,
695
- values = response.values;
696
- var newValues = Object.entries(values).reduce(function (acc, _ref3) {
697
- var _ref4 = _slicedToArray(_ref3, 2),
698
- k = _ref4[0],
699
- v = _ref4[1];
700
-
701
- return v === null ? _objectSpread2(_objectSpread2({}, acc), {}, _defineProperty({}, k, v)) : _objectSpread2(_objectSpread2({}, acc), {}, _defineProperty({}, k, v ? 'Vrai' : 'Faux'));
702
- }, {});
703
- return {
704
- name: name,
705
- values: newValues
706
- };
707
- };
708
- /**
709
- * Assume we use this tool in management mode only
710
- */
711
-
712
- var buildLocalResponse = function buildLocalResponse(response, value) {
713
- if (!response || Object.keys(response).length === 0) return {};
714
- var name = response.name,
715
- values = response.values;
716
- var newValue = buildNewValue([COLLECTED, FORCED, EDITED])(EDITED)(values)(value);
717
- return {
718
- name: name,
719
- values: _objectSpread2(_objectSpread2({}, values), {}, {
720
- EDITED: newValue
721
- })
722
- };
723
- };
724
-
725
- var getAlphabet = function getAlphabet() {
726
- return 'abcdefghijklmnopqrstuvwxyz'.split('');
727
- };
728
-
729
- var getLabelPositionClass = function getLabelPositionClass(position) {
730
- switch (position) {
731
- case 'LEFT':
732
- return 'label-left';
733
-
734
- case 'BOTTOM':
735
- return 'label-bottom';
736
-
737
- case 'RIGHT':
738
- return 'label-right';
739
-
740
- default:
741
- return 'label-top';
742
- }
743
- };
744
-
745
- var getItemsPositioningClass = function getItemsPositioningClass(positioning) {
746
- switch (positioning) {
747
- case 'HORIZONTAL':
748
- return 'horizontal-options';
749
-
750
- case 'VERTICAL':
751
- default:
752
- return '';
753
- }
754
- };
755
-
756
- var getResponseName = function getResponseName(response) {
757
- return response && response.name || '';
758
- };
759
- var getResponseByPreference = function getResponseByPreference(preferences) {
760
- return function (response) {
761
- if (!(response && response.values)) return '';
762
- return preferences.reduce(function (acc, p) {
763
- var value = response.values[p];
764
- return value !== null ? value : acc;
765
- }, '');
766
- };
767
- };
768
-
769
- var buildStyleObject = function buildStyleObject(obj) {
770
- return obj ? Object.entries(obj).reduce(function (_, _ref) {
771
- var _ref2 = _slicedToArray(_ref, 2),
772
- key = _ref2[0],
773
- value = _ref2[1];
774
-
775
- if (key.startsWith(':')) _[key] = buildStyleObject(value);else _[camelCase__default['default'](key)] = value;
776
- return _;
777
- }, {}) : {};
778
- };
779
-
780
- var isResponseEmpty = function isResponseEmpty(response) {
781
- return Object.values(response.values).filter(function (v) {
782
- return v !== null;
783
- }).length === 0;
784
- };
785
-
786
- var getRosterInitLines = function getRosterInitLines(cells) {
787
- return Array.isArray(cells) ? cells.reduce(function (_, line) {
788
- return [].concat(_toConsumableArray(_), [line.reduce(function (__, component) {
789
- if (!component.response || __) return __;
790
- return !isResponseEmpty(component.response);
791
- }, false)]);
792
- }, []).filter(function (b) {
793
- return b;
794
- }).length : 0;
795
- };
796
-
797
- var getLoopConstructorInitLines = function getLoopConstructorInitLines(components) {
798
- return Array.isArray(components) ? components.reduce(function (_, c) {
799
- return c.response && c.response.values[COLLECTED] && c.response.values[COLLECTED].length > _ ? c.response.values[COLLECTED].length : _;
800
- }, 0) : 0;
801
- };
802
- var getInvolvedVariables = function getInvolvedVariables(parentComponents) {
803
- return Array.isArray(parentComponents) ? parentComponents.reduce(function (_, c) {
804
- var response = c.response,
805
- responses = c.responses,
806
- components = c.components,
807
- depth = c.depth;
808
- if (response && response.name) return [].concat(_toConsumableArray(_), [{
809
- name: response.name,
810
- depth: depth
811
- }]);
812
- if (responses || components) return [].concat(_toConsumableArray(_), [getInvolvedVariables(responses || components)]);
813
- return _;
814
- }, []).flat() : [];
815
- };
816
- var lastLoopChildLineIsEmpty = function lastLoopChildLineIsEmpty(bindings) {
817
- return function (involvedVariables) {
818
- return bindings && involvedVariables ? involvedVariables.map(function (iv) {
819
- return iv.name;
820
- }).filter(function (iv) {
821
- return bindings[iv] && bindings[iv][bindings[iv].length - 1];
822
- }).length === 0 : true;
823
- };
824
- };
825
- var buildEmptyValue = function buildEmptyValue(depth) {
826
- if (!depth || depth === 1) return null;
827
- return new Array(depth - 1).fill(null).reduce(function (acc) {
828
- return new Array(1).fill(acc);
829
- }, null);
830
- };
831
-
832
- var VarsHasBeenUpdated = function VarsHasBeenUpdated(prevProps, props) {
833
- var oldR = prevProps.response,
834
- oldRs = prevProps.responses,
835
- oldC = prevProps.cells;
836
- var newR = props.response,
837
- newRs = props.responses,
838
- newC = props.cells;
839
- if (!newR && !newRs && !newC) return true;
840
- return !(newR && isEqual__default['default'](oldR, newR) || newRs && isEqual__default['default'](oldRs, newRs) || newC && isEqual__default['default'](oldC, newC));
841
- };
842
-
843
- var areEqual = function areEqual(prevProps, props) {
844
- if (VarsHasBeenUpdated(prevProps, props)) return false;
845
- var bindingDependencies = props.bindingDependencies;
846
-
847
- if (Array.isArray(bindingDependencies) && bindingDependencies.length > 0) {
848
- var oldB = prevProps.bindings;
849
- var newB = props.bindings;
850
- return !bindingDependencies.map(function (d) {
851
- return isEqual__default['default'](oldB[d], newB[d]);
852
- }).includes(false);
853
- }
854
-
855
- return true;
856
- };
857
-
858
- var responseToClean = function responseToClean(response) {
859
- return function (preferences) {
860
- if (!preferences || !response.values) return false;
861
- var values = response.values;
862
- if (!values) return false;
863
-
864
- var cutedValues = _objectSpread2(_objectSpread2({}, values), {}, _defineProperty({}, preferences[preferences.length - 1], null));
865
-
866
- return Object.values(cutedValues).filter(function (v) {
867
- return v !== null;
868
- }).length === 0;
869
- };
870
- };
871
- var responsesToClean = function responsesToClean(responses) {
872
- return function (preferences) {
873
- return function (key) {
874
- if (!preferences || !key) return false;
875
- var values = responses.find(function (r) {
876
- return r.response.name === key;
877
- }).response.values;
878
- if (!values) return false;
879
-
880
- var cutedValues = _objectSpread2(_objectSpread2({}, values), {}, _defineProperty({}, preferences[preferences.length - 1], null));
881
-
882
- return Object.values(cutedValues).filter(function (v) {
883
- return v !== null;
884
- }).length === 0;
885
- };
886
- };
887
- };
888
-
889
- function styleInject(css, ref) {
890
- if ( ref === void 0 ) ref = {};
891
- var insertAt = ref.insertAt;
892
-
893
- if (!css || typeof document === 'undefined') { return; }
894
-
895
- var head = document.head || document.getElementsByTagName('head')[0];
896
- var style = document.createElement('style');
897
- style.type = 'text/css';
898
-
899
- if (insertAt === 'top') {
900
- if (head.firstChild) {
901
- head.insertBefore(style, head.firstChild);
902
- } else {
903
- head.appendChild(style);
904
- }
905
- } else {
906
- head.appendChild(style);
907
- }
908
-
909
- if (style.styleSheet) {
910
- style.styleSheet.cssText = css;
911
- } else {
912
- style.appendChild(document.createTextNode(css));
913
- }
914
- }
915
-
916
- var css_248z = "* {\n box-sizing: border-box;\n}\n\n.mandatory:after {\n content: \" *\";\n color: red;\n}\n\n.horizontal-options {\n display: inline-block;\n margin-right: 2em;\n}\n\nlabel,\n.lunatic-dropdown-label {\n margin-bottom: 0.5em;\n}\n\n.label-top {\n display: flex;\n flex-direction: column;\n}\n\n.label-bottom {\n display: flex;\n flex-direction: column-reverse;\n}\n\n.label-right {\n justify-content: flex-end;\n display: flex;\n flex-direction: row-reverse;\n align-items: baseline;\n}\n.label-right :first-child {\n margin-right: 1rem;\n}\n\n.label-left {\n display: flex;\n flex-direction: row;\n align-items: baseline;\n}\n.label-left :first-child {\n margin-right: 1rem;\n}\n\n.field-container {\n display: flex;\n}\n\n.tooltip {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n\n.field-with-tooltip {\n width: calc(100% - 25px);\n position: relative;\n}\n\n.field {\n width: 100%;\n position: relative;\n}\n\n.breadcrumb-lunatic {\n width: 100%;\n height: 40px;\n box-sizing: border-box;\n border-radius: 0px;\n background-color: #e80a4d;\n color: white;\n font-weight: bold;\n font-size: 130%;\n padding-left: 10px;\n display: flex;\n align-items: center;\n}\n\n.breadcrumb-element-lunatic:before {\n content: \">\";\n color: white;\n margin-left: 0.4em;\n margin-right: 0.4em;\n}";
917
- styleInject(css_248z);
918
-
919
- var Breadcrumb = function Breadcrumb(_ref) {
920
- var elements = _ref.elements,
921
- style = _ref.style;
922
- return /*#__PURE__*/React__default['default'].createElement("div", {
923
- "aria-label": "breadcrumb",
924
- className: "breadcrumb-lunatic",
925
- style: buildStyleObject(style)
926
- }, elements.map(function (e, i) {
927
- return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, {
928
- key: "breadcrumb-".concat(e.toLowerCase())
929
- }, e && /*#__PURE__*/React__default['default'].createElement("span", {
930
- className: i !== 0 ? 'breadcrumb-element-lunatic' : undefined
931
- }, e));
932
- }));
933
- };
934
-
935
- Breadcrumb.propTypes = {
936
- elements: PropTypes__default['default'].arrayOf(PropTypes__default['default'].string).isRequired,
937
- style: PropTypes__default['default'].object
938
- };
939
-
940
- var css_248z$1 = "* {\n box-sizing: border-box;\n}\n\n.mandatory:after {\n content: \" *\";\n color: red;\n}\n\n.horizontal-options {\n display: inline-block;\n margin-right: 2em;\n}\n\nlabel,\n.lunatic-dropdown-label {\n margin-bottom: 0.5em;\n}\n\n.label-top {\n display: flex;\n flex-direction: column;\n}\n\n.label-bottom {\n display: flex;\n flex-direction: column-reverse;\n}\n\n.label-right {\n justify-content: flex-end;\n display: flex;\n flex-direction: row-reverse;\n align-items: baseline;\n}\n.label-right :first-child {\n margin-right: 1rem;\n}\n\n.label-left {\n display: flex;\n flex-direction: row;\n align-items: baseline;\n}\n.label-left :first-child {\n margin-right: 1rem;\n}\n\n.field-container {\n display: flex;\n}\n\n.tooltip {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n\n.field-with-tooltip {\n width: calc(100% - 25px);\n position: relative;\n}\n\n.field {\n width: 100%;\n position: relative;\n}\n\n.button-lunatic {\n width: 100%;\n color: white;\n border-color: #e80a4d;\n background-color: #e80a4d;\n font-size: 1.5em;\n font-weight: bold;\n padding: 0.4em;\n}\n.button-lunatic:hover, .button-lunatic:focus:hover {\n color: #e80a4d;\n background-color: white;\n border-color: #e80a4d;\n}\n.button-lunatic:focus {\n outline: none;\n background-color: #e07898;\n border-color: #e07898;\n}\n.button-lunatic:disabled {\n background: #dddddd;\n color: #e80a4d;\n}";
941
- styleInject(css_248z$1);
942
-
943
- var Button = function Button(_ref) {
944
- var label = _ref.label,
945
- value = _ref.value,
946
- onClick = _ref.onClick,
947
- disabled = _ref.disabled,
948
- style = _ref.style;
949
- return /*#__PURE__*/React__default['default'].createElement("button", {
950
- type: "button",
951
- "aria-label": label || 'button',
952
- className: "button-lunatic",
953
- style: buildStyleObject(style),
954
- disabled: disabled,
955
- onClick: onClick
956
- }, value);
957
- };
958
-
959
- Button.propTypes = {
960
- value: PropTypes__default['default'].string.isRequired,
961
- disabled: PropTypes__default['default'].bool,
962
- onClick: PropTypes__default['default'].func.isRequired
963
- };
964
-
965
- var getState = function getState(questionnaire) {
966
- var _ref;
967
-
968
- var variables = questionnaire.variables;
969
- return _ref = {}, _defineProperty(_ref, CALCULATED, getCalculatedFromVariables(variables)), _defineProperty(_ref, COLLECTED, getCollectedState(questionnaire)), _defineProperty(_ref, EXTERNAL, getExternalFromVariables(variables)), _ref;
970
- };
971
- var getCollectedState = function getCollectedState(questionnaire) {
972
- var variables = questionnaire.variables;
973
- return variables && variables[COLLECTED] && Object.entries(variables[COLLECTED]).reduce(function (acc, _ref2) {
974
- var _ref3 = _slicedToArray(_ref2, 2),
975
- name = _ref3[0],
976
- values = _ref3[1].values;
977
-
978
- return _objectSpread2(_objectSpread2({}, acc), {}, _defineProperty({}, name, values));
979
- }, {}) || {};
980
- };
981
-
982
- var getCalculatedFromVariables = function getCalculatedFromVariables(variables) {
983
- return variables && variables[CALCULATED] ? Object.entries(variables[CALCULATED]).reduce(function (_, _ref4) {
984
- var _ref5 = _slicedToArray(_ref4, 2),
985
- name = _ref5[0],
986
- value = _ref5[1].value;
987
-
988
- return _objectSpread2(_objectSpread2({}, _), {}, _defineProperty({}, name, value));
989
- }, {}) : {};
990
- };
991
-
992
- var getExternalFromVariables = function getExternalFromVariables(variables) {
993
- return variables && variables[EXTERNAL] || {};
994
- };
995
-
996
- var getCollectedStateByValueType = function getCollectedStateByValueType(questionnaire) {
997
- return function (valueType, displayNull) {
998
- return ['PREVIOUS', 'COLLECTED', 'FORCED', 'EDITED', 'INPUTED'].includes(valueType) ? Object.entries(getCollectedState(questionnaire)).reduce(function (_, v) {
999
- if (displayNull || v[1][valueType] !== null) return _objectSpread2(_objectSpread2({}, _), {}, _defineProperty({}, v[0], v[1][valueType]));
1000
- return _;
1001
- }, {}) : {};
1002
- };
1003
- };
1004
- var getBindings = function getBindings(questionnaire) {
1005
- var variables = questionnaire.variables;
1006
- return _objectSpread2(_objectSpread2(_objectSpread2({}, getCollectedStateByValueType(questionnaire)('COLLECTED', true)), getCalculatedFromVariables(variables)), getExternalFromVariables(variables));
1007
- };
1008
-
1009
- var filterComponents = function filterComponents(components, management, bindings, features) {
1010
- var filteredComponents = management ? components : components.filter(function (_ref) {
1011
- var conditionFilter = _ref.conditionFilter;
1012
- return !conditionFilter || interpret(features)(bindings, true)(conditionFilter) === 'normal';
1013
- });
1014
- return filteredComponents;
1015
- };
1016
-
1017
- var useLunatic = function useLunatic(source, data, _ref2) {
1018
- var _ref2$savingType = _ref2.savingType,
1019
- savingType = _ref2$savingType === void 0 ? COLLECTED : _ref2$savingType,
1020
- _ref2$preferences = _ref2.preferences,
1021
- preferences = _ref2$preferences === void 0 ? [COLLECTED] : _ref2$preferences,
1022
- _ref2$features = _ref2.features,
1023
- features = _ref2$features === void 0 ? ['VTL'] : _ref2$features,
1024
- _ref2$management = _ref2.management,
1025
- management = _ref2$management === void 0 ? false : _ref2$management;
1026
-
1027
- var _useState = React.useState(mergeQuestionnaireAndData(source)(data || {})),
1028
- _useState2 = _slicedToArray(_useState, 2),
1029
- questionnaire = _useState2[0],
1030
- setQuestionnaire = _useState2[1];
1031
-
1032
- var _useState3 = React.useState({}),
1033
- _useState4 = _slicedToArray(_useState3, 2),
1034
- todo = _useState4[0],
1035
- setTodo = _useState4[1];
1036
-
1037
- var handleChange = React.useCallback(function (updatedValue) {
1038
- setTodo(updatedValue);
1039
- }, []); // Assume we only want to handle source update
1040
-
1041
- React.useEffect(function () {
1042
- setQuestionnaire(mergeQuestionnaireAndData(source)(data)); // eslint-disable-next-line react-hooks/exhaustive-deps
1043
- }, [source]);
1044
- React.useEffect(function () {
1045
- if (Object.keys(todo).length !== 0) {
1046
- var newQ = updateQuestionnaire(savingType)(questionnaire)(preferences)(todo);
1047
- setQuestionnaire(newQ);
1048
- setTodo({});
1049
- }
1050
- }, [todo, preferences, questionnaire, savingType, features, management]);
1051
- var bindings = getBindings(questionnaire);
1052
- var components = filterComponents(questionnaire.components, management, bindings, features);
1053
- return {
1054
- questionnaire: questionnaire,
1055
- handleChange: handleChange,
1056
- components: components,
1057
- bindings: bindings
1058
- };
1059
- };
1060
-
1061
- var css_248z$2 = "@charset \"UTF-8\";\n.declaration-instruction {\n font-style: italic;\n font-size: 80%;\n}\n\n.declaration-comment {\n font-size: 80%;\n}\n\n.declaration-statement {\n font-style: italic;\n font-size: 80%;\n color: blue;\n}\n\n.declaration-help {\n font-style: italic;\n font-size: 80%;\n color: green;\n}\n\n.declaration-warning {\n font-style: bold;\n font-size: 80%;\n color: red;\n}\n\n.declaration-message_filter {\n font-size: 100%;\n color: #494242;\n}\n.declaration-message_filter:before {\n content: \"→ \";\n}";
1062
- styleInject(css_248z$2);
1063
-
1064
- var Declarations = function Declarations(_ref) {
1065
- var id = _ref.id,
1066
- type = _ref.type,
1067
- declarations = _ref.declarations,
1068
- features = _ref.features,
1069
- bindings = _ref.bindings;
1070
- var filtered = declarations.filter(function (_ref2) {
1071
- var position = _ref2.position;
1072
- return position === type;
1073
- });
1074
- return /*#__PURE__*/React__default['default'].createElement("div", {
1075
- id: "declarations-".concat(id, "-").concat(type),
1076
- className: "declarations-lunatic"
1077
- }, filtered.map(function (_ref3) {
1078
- var idD = _ref3.id,
1079
- label = _ref3.label,
1080
- declarationType = _ref3.declarationType;
1081
- return /*#__PURE__*/React__default['default'].createElement("div", {
1082
- key: "".concat(idD),
1083
- className: "declaration-lunatic declaration-".concat(declarationType.toLowerCase())
1084
- }, interpret(features)(bindings)(label));
1085
- }));
1086
- };
1087
-
1088
- Declarations.defaultProps = {
1089
- type: 'AFTER_QUESTION_TEXT',
1090
- declarations: [],
1091
- features: [],
1092
- bindings: {}
1093
- };
1094
- Declarations.propTypes = {
1095
- id: PropTypes__default['default'].string.isRequired,
1096
- type: PropTypes__default['default'].string,
1097
- declarations: declarations,
1098
- features: PropTypes__default['default'].arrayOf(PropTypes__default['default'].string),
1099
- bindings: PropTypes__default['default'].object
1100
- };
1101
-
1102
- var img = new Image(); img.src = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAAMPSURBVEhLrZVdSBRRFMePs36vubp+JJul1pYKEdESlRShL9aDFFZsEEgGBUIvRQ8R9VhEBL0IQUEPPVQWSJBgYil9ET1YVARhqemappmlu4vf2vzPzp3uzoyjVj8Y7syZufO/556PGzOnQja0fR+j+o4gfR6ZVK8JzUqUnRRLK1Pi6HBxGpXkJGtWa+YVqfs0QmdfDVJ4alazzI8zTqEzvkyqLk7XLNGYREYnZ6n0fhf1h6d5cmq8QvvWuKh8lZNc8Q72YHBsmkYmZ6ipJ0yPAiH6+DPiIb5vrMgjryuenwVRItiS3Q+69dVf2Z5D/rUuvrdD9hpCd8pzyZeVpL2VROCB724Hf1iUnkDXSj2mFdmB+Udb++hZX5ifn1YW6PN1EQhgi3Z4nFSnruRvOaYKNXwJUoIjhrqq1rGNReDuieff2CCvwEhrb5hOvxygQGhKs0RAlp3cmKFvrVjw8Q0ZnBAKjJfeDPHLc5uzLAXw8y33OulQc69JAMAGccHlkhwer38Y5lFBHYhMqlnvZqMMBGqe9Fv+XEZOkNJcJ2/7xMwcJ0UsCg1Y5bgQGFXTVaaqKI0ubluuPVlTuXoZJ0F9Z5CU16onYFNmIo8yiJMsgJ/3VRcuKAB82ZEURpdQUFjAm2aOhXgHFrN6GRFbhIIDD1DJdixFwIguIq/6f6OLoBfZgSxZCmhRAFmriDaNZmcEVStAHSxFqG1QSyi1h8W0BEJzKDL0q5a9+fxCUPvuB11oixSqHcaKB6K9nN+aTQoKBy6hXT/sDmmfRBBtYSGMFY8ChwDAMcExET860vKVhsejY7NYIdmLioYeHlHgOI/0Llxws53bwL924VMvBuhW+y++R+ECPbua9+RzoNEK/E29Jo8WA+InBG6UreARRJ2M2Mv9jQH2CODDXXkpfG8H5h1UFyZOVOO8KBGA/PY3BbgdAGTdAW8qlXmSqdD9p7/B02b1fH8cCFJDdyT9sRNXd3pMCzOJABylte+H9fNAeGYHgox0tcJSRAYFeFu93g6Nm8SEl36vi9yJDs1qhOg33VaTt51lxw8AAAAASUVORK5CYII=';
1103
-
1104
- var img$1 = new Image(); img$1.src = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAMAAAGEMEXHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAABjUExURf///8Xn9XrH6Va44zKp3Eiy4GW+5b7j9Kja8Bme2CSj2p7W7vH5/UGv34XM69vw+czq9iCh2ZbT7bfg82W94+33/Njt92zB5k+14XPE6On2+4vN6sLl9Mno9i+n3Cum2wAAAIfAWccAAAAhdFJOU///////////////////////////////////////////AJ/B0CEAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAEVSURBVChTVVIBcsMgDFODm2JKIFnTbvv/Ryfb0F11Z4ptWYBSYL8wFBk34A7kLwDCUIbBfkcIHppsM2tIVy61exRoQ0LFaa2NhLSiP7l/MA7no6rsdd+UI5SINQSvZKVsBXSB7N4plnFRyihxxrFdtxeep5qwYRFZx1ZK6735IMrmJSQOZR9sXKWZSKeaVdQVfftOirdG8kHjhXlFxZ0ZWezpwrclo4Q69ZUWZj28BPyobmbCQPYxR6HdE53leLyBpGIGEELHP7GGtB/DIyds+mathZ/BEBefyNSRMJxDwRggcXbMlSlGsPM9uWHpgKnRgPB/zBCd/yStLB3z1hK6wO+8zn7o+7sx47v/s9oOdgdoLAD8AWlNC8M57XWRAAAAAElFTkSuQmCC';
1105
-
1106
- var img$2 = new Image(); img$2.src = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAZCAMAAAFiGY6DAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAABUUExURf///6zc8Uiy4PH5/d/x+b7j9Bme2DKp3CSj2la442W+5YnN61O34nrH6Z7W7tDr9yCh2bfg8+33/HPE6EGv35bT7U+14czq9nDD56XZ7+n2+wAAAJWny4EAAAAcdFJOU////////////////////////////////////wAXsuLXAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABKElEQVQoU2VSC3bDIAwzJRM0hCb0ldfd/6STDFm7TgnEX2GbGHExQ4PZoc0scT0MgC/6xkqZ+tC0x6y4E4zlU5VAs8I2Wrv0/PL/xzih4gKsCJVB1RZKsvXYrJntG7gXrM/ddgZ3JPDtBRHFSQYG1Ylgy9cUhStwdaGKO6tAdX0wCQi5tUyzK6oYYNHB+aDDBXhHcjtu09uHKgfTYGTUXMRDtCOU7HUU8ShH1CdWdj1FoS/3k+4vyB3Se6KV8tv6Bamm2Z3d+GWvuNmel4WC7A9+OUcV9AKr5PHEJHIxavjui4mOisf0/B7uiqwTrp9/gisa0wuycLTs3zlI2yl7QpTvDR8FlXy3jWq3hqBYjYpXPy/A7Lmu33GIMR1r3z6OPnFngYFXbfYDTw4LkdQNpj4AAAAASUVORK5CYII=';
1107
-
1108
- var img$3 = /*#__PURE__*/Object.freeze({
1109
- __proto__: null,
1110
- collectedImg: img,
1111
- editedImg: img$1,
1112
- forcedImg: img$2
1113
- });
1114
-
1115
- var css_248z$3 = "* {\n box-sizing: border-box;\n}\n\n.mandatory:after {\n content: \" *\";\n color: red;\n}\n\n.horizontal-options {\n display: inline-block;\n margin-right: 2em;\n}\n\nlabel,\n.lunatic-dropdown-label {\n margin-bottom: 0.5em;\n}\n\n.label-top {\n display: flex;\n flex-direction: column;\n}\n\n.label-bottom {\n display: flex;\n flex-direction: column-reverse;\n}\n\n.label-right {\n justify-content: flex-end;\n display: flex;\n flex-direction: row-reverse;\n align-items: baseline;\n}\n.label-right :first-child {\n margin-right: 1rem;\n}\n\n.label-left {\n display: flex;\n flex-direction: row;\n align-items: baseline;\n}\n.label-left :first-child {\n margin-right: 1rem;\n}\n\n.field-container {\n display: flex;\n}\n\n.tooltip {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n\n.field-with-tooltip {\n width: calc(100% - 25px);\n position: relative;\n}\n\n.field {\n width: 100%;\n position: relative;\n}\n\n/* Tooltip container */\n.tooltip-lunatic {\n position: relative;\n display: inline-block;\n align-items: center;\n}\n\n/* Tooltip text */\n.tooltip-lunatic .tooltip-text {\n visibility: hidden;\n width: 20em;\n background-color: #e80a4d;\n color: #fff;\n padding: 5px 0;\n border-radius: 6px;\n text-align: left;\n /* Position the tooltip text */\n position: absolute;\n z-index: 1;\n bottom: 120%;\n left: -10em;\n /* Fade in tooltip */\n opacity: 0;\n transition: opacity 0.3s;\n}\n\n/* Show the tooltip text when you mouse over the tooltip container */\n.tooltip-lunatic:hover .tooltip-text {\n visibility: visible;\n opacity: 1;\n}";
1116
- styleInject(css_248z$3);
1117
-
1118
- var TooltipResponse = function TooltipResponse(_ref) {
1119
- var id = _ref.id,
1120
- response = _ref.response;
1121
-
1122
- var _useState = React.useState(function () {
1123
- return buildTooltip(response);
1124
- }),
1125
- _useState2 = _slicedToArray(_useState, 2),
1126
- tooltipElements = _useState2[0],
1127
- setTooltipElements = _useState2[1];
1128
-
1129
- React.useEffect(function () {
1130
- setTooltipElements(buildTooltip(response));
1131
- }, [response]);
1132
- var content = tooltipElements.content,
1133
- imgName = tooltipElements.imgName;
1134
- if (!content) return /*#__PURE__*/React__default['default'].createElement("div", {
1135
- className: "tooltip-lunatic"
1136
- }, /*#__PURE__*/React__default['default'].createElement("img", {
1137
- id: id,
1138
- alt: "img-tooltip",
1139
- src: img.src || img
1140
- }));
1141
- return /*#__PURE__*/React__default['default'].createElement("div", {
1142
- className: "tooltip-lunatic"
1143
- }, /*#__PURE__*/React__default['default'].createElement("img", {
1144
- id: id,
1145
- alt: "img-tooltip",
1146
- src: img$3[imgName].src || img$3[imgName]
1147
- }), /*#__PURE__*/React__default['default'].createElement("span", {
1148
- className: "tooltip-text"
1149
- }, /*#__PURE__*/React__default['default'].createElement("ul", null, content.map(function (_ref2) {
1150
- var key = _ref2.key,
1151
- value = _ref2.value;
1152
- return /*#__PURE__*/React__default['default'].createElement("li", {
1153
- key: "tooltip-".concat(id, "-content-").concat(key)
1154
- }, "".concat(key, " : ").concat(value));
1155
- }))));
1156
- };
1157
-
1158
- TooltipResponse.defaultProps = {
1159
- response: {}
1160
- };
1161
- TooltipResponse.propTypes = {
1162
- id: PropTypes__default['default'].string,
1163
- response: response
1164
- };
1165
-
1166
- var css_248z$4 = "* {\n box-sizing: border-box;\n}\n\n.mandatory:after {\n content: \" *\";\n color: red;\n}\n\n.horizontal-options {\n display: inline-block;\n margin-right: 2em;\n}\n\nlabel,\n.lunatic-dropdown-label {\n margin-bottom: 0.5em;\n}\n\n.label-top {\n display: flex;\n flex-direction: column;\n}\n\n.label-bottom {\n display: flex;\n flex-direction: column-reverse;\n}\n\n.label-right {\n justify-content: flex-end;\n display: flex;\n flex-direction: row-reverse;\n align-items: baseline;\n}\n.label-right :first-child {\n margin-right: 1rem;\n}\n\n.label-left {\n display: flex;\n flex-direction: row;\n align-items: baseline;\n}\n.label-left :first-child {\n margin-right: 1rem;\n}\n\n.field-container {\n display: flex;\n}\n\n.tooltip {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n\n.field-with-tooltip {\n width: calc(100% - 25px);\n position: relative;\n}\n\n.field {\n width: 100%;\n position: relative;\n}\n\n.checkbox-group {\n border: 0.1em solid #e80a4d;\n}\n\n.checkbox-lunatic {\n margin: 0;\n margin-right: 1em;\n margin-left: 1em;\n margin-top: 0.5em;\n}\n.checkbox-lunatic:focus {\n outline: none;\n}\n.checkbox-lunatic:checked + label {\n border: 0.1em solid #e80a4d;\n padding: 0.3em;\n}\n.checkbox-lunatic:focus {\n box-shadow: 0 0 0.3em 0.3em #e80a4d;\n}\n\n.checkbox-lunatic-no-margin {\n margin: 0;\n margin-right: 1em;\n margin-left: 0;\n margin-top: 0.5em;\n}\n.checkbox-lunatic-no-margin:focus {\n outline: none;\n}\n.checkbox-lunatic-no-margin:checked + label {\n border: 0.1em solid #e80a4d;\n padding: 0.3em;\n}\n\n.checkbox-modality {\n margin-top: 1em;\n}\n\n.checkbox-boolean-modality {\n margin-top: 1em;\n}\n\n.checkbox-alone {\n margin-left: 0;\n margin-top: 0.5em;\n}";
1167
- styleInject(css_248z$4);
1168
-
1169
- var CheckboxGroup = function CheckboxGroup(_ref) {
1170
- var id = _ref.id,
1171
- label = _ref.label,
1172
- preferences = _ref.preferences,
1173
- responses = _ref.responses,
1174
- handleChange = _ref.handleChange,
1175
- disabled = _ref.disabled,
1176
- focused = _ref.focused,
1177
- keyboardSelection = _ref.keyboardSelection,
1178
- positioning = _ref.positioning,
1179
- declarations = _ref.declarations,
1180
- features = _ref.features,
1181
- bindings = _ref.bindings,
1182
- management = _ref.management,
1183
- style = _ref.style;
1184
- var fieldsetStyle = style.fieldsetStyle,
1185
- modalityStyle = style.modalityStyle;
1186
- var inputRef = React.useRef();
1187
-
1188
- var _useState = React.useState(function () {
1189
- return responses.map(function (_ref2) {
1190
- var response = _ref2.response;
1191
- return getResponseByPreference(preferences)(response);
1192
- });
1193
- }),
1194
- _useState2 = _slicedToArray(_useState, 2),
1195
- values = _useState2[0],
1196
- setValues = _useState2[1];
1197
-
1198
- var specificHandleChange = function specificHandleChange(e) {
1199
- var _Object$entries$ = _slicedToArray(Object.entries(e)[0], 2),
1200
- key = _Object$entries$[0],
1201
- value = _Object$entries$[1];
1202
-
1203
- if (value === false && responsesToClean(responses)(preferences)(key)) handleChange(_defineProperty({}, key, null));else handleChange(e);
1204
- };
1205
-
1206
- React.useEffect(function () {
1207
- if (focused) inputRef.current.focus();
1208
- }, [focused]);
1209
- var checkedArray = [];
1210
- return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(Declarations, {
1211
- id: id,
1212
- type: BEFORE_QUESTION_TEXT,
1213
- declarations: declarations,
1214
- features: features,
1215
- bindings: bindings
1216
- }), /*#__PURE__*/React__default['default'].createElement("fieldset", {
1217
- key: "checkbox-".concat(id),
1218
- className: "checkbox-group",
1219
- style: buildStyleObject(fieldsetStyle)
1220
- }, /*#__PURE__*/React__default['default'].createElement("legend", null, interpret(features)(bindings)(label)), /*#__PURE__*/React__default['default'].createElement(Declarations, {
1221
- id: id,
1222
- type: AFTER_QUESTION_TEXT,
1223
- declarations: declarations,
1224
- features: features,
1225
- bindings: bindings
1226
- }), responses.map(function (_ref3, i) {
1227
- var modId = _ref3.id,
1228
- modLabel = _ref3.label,
1229
- response = _ref3.response;
1230
- var checked = values[i];
1231
- if (checked) checkedArray.push(modId);
1232
- var toRef = i === 0 || checkedArray[0] && checkedArray[0] === modId;
1233
- var interpretedLabel = interpret(features)(bindings)(modLabel);
1234
- return /*#__PURE__*/React__default['default'].createElement("div", {
1235
- className: "".concat(getItemsPositioningClass(positioning)),
1236
- key: "checkbox-".concat(id, "-").concat(modId)
1237
- }, /*#__PURE__*/React__default['default'].createElement("div", {
1238
- className: "field-container"
1239
- }, /*#__PURE__*/React__default['default'].createElement("div", {
1240
- className: "".concat(management ? 'field-with-tooltip' : 'field')
1241
- }, /*#__PURE__*/React__default['default'].createElement("div", {
1242
- className: "checkbox-modality ".concat(checked ? 'content-checked' : '')
1243
- }, /*#__PURE__*/React__default['default'].createElement("input", {
1244
- type: "checkbox",
1245
- id: "checkbox-".concat(id, "-").concat(modId),
1246
- ref: toRef ? inputRef : null,
1247
- key: "checkbox-".concat(id, "-").concat(modId),
1248
- "aria-labelledby": "input-label-".concat(id, "-").concat(modId),
1249
- className: "checkbox-lunatic",
1250
- checked: checked,
1251
- disabled: disabled,
1252
- onChange: function onChange(_ref4) {
1253
- var checked = _ref4.target.checked;
1254
- setValues(values.map(function (v, j) {
1255
- return i === j ? checked : v;
1256
- }));
1257
- specificHandleChange(_defineProperty({}, getResponseName(response), checked));
1258
- }
1259
- }), /*#__PURE__*/React__default['default'].createElement("label", {
1260
- htmlFor: "checkbox-".concat(id, "-").concat(modId),
1261
- id: "input-label-".concat(id, "-").concat(modId),
1262
- style: checked ? buildStyleObject(modalityStyle) : {}
1263
- }, keyboardSelection && /*#__PURE__*/React__default['default'].createElement("span", {
1264
- className: "code-modality"
1265
- }, responses.length < 10 ? i + 1 : getAlphabet()[i].toUpperCase()), interpretedLabel))), management && /*#__PURE__*/React__default['default'].createElement("div", {
1266
- className: "tooltip"
1267
- }, /*#__PURE__*/React__default['default'].createElement(TooltipResponse, {
1268
- id: id,
1269
- response: buildBooleanTooltipResponse(response)
1270
- }))));
1271
- })), /*#__PURE__*/React__default['default'].createElement(Declarations, {
1272
- id: id,
1273
- type: DETACHABLE,
1274
- declarations: declarations,
1275
- features: features,
1276
- bindings: bindings
1277
- }));
1278
- };
1279
-
1280
- CheckboxGroup.defaultProps = {
1281
- label: '',
1282
- preferences: ['COLLECTED'],
1283
- responses: [],
1284
- disabled: false,
1285
- focused: false,
1286
- keyboardSelection: false,
1287
- positioning: 'DEFAULT',
1288
- declarations: [],
1289
- features: [],
1290
- bindings: {},
1291
- management: false,
1292
- style: {
1293
- fieldsetStyle: {},
1294
- modalityStyle: {}
1295
- }
1296
- };
1297
- CheckboxGroup.propTypes = {
1298
- id: PropTypes__default['default'].string.isRequired,
1299
- label: PropTypes__default['default'].string,
1300
- preferences: PropTypes__default['default'].arrayOf(valueType),
1301
- response: response,
1302
- handleChange: PropTypes__default['default'].func.isRequired,
1303
- disabled: PropTypes__default['default'].bool,
1304
- focused: PropTypes__default['default'].bool,
1305
- keyboardSelection: PropTypes__default['default'].bool,
1306
- positioning: PropTypes__default['default'].oneOf(['DEFAULT', 'HORIZONTAL', 'VERTICAL']),
1307
- declarations: declarations,
1308
- features: PropTypes__default['default'].arrayOf(PropTypes__default['default'].string),
1309
- bindings: PropTypes__default['default'].object,
1310
- management: PropTypes__default['default'].bool,
1311
- style: PropTypes__default['default'].object
1312
- };
1313
- var group = /*#__PURE__*/React__default['default'].memo(CheckboxGroup, areEqual);
1314
-
1315
- var CheckboxBoolean = function CheckboxBoolean(_ref) {
1316
- var id = _ref.id,
1317
- label = _ref.label,
1318
- preferences = _ref.preferences,
1319
- response = _ref.response,
1320
- handleChange = _ref.handleChange,
1321
- disabled = _ref.disabled,
1322
- positioning = _ref.positioning,
1323
- focused = _ref.focused,
1324
- declarations = _ref.declarations,
1325
- features = _ref.features,
1326
- bindings = _ref.bindings,
1327
- management = _ref.management,
1328
- style = _ref.style;
1329
- var inputRef = React.useRef();
1330
-
1331
- var _useState = React.useState(function () {
1332
- return getResponseByPreference(preferences)(response);
1333
- }),
1334
- _useState2 = _slicedToArray(_useState, 2),
1335
- value = _useState2[0],
1336
- setValue = _useState2[1];
1337
-
1338
- var specificHandleChange = function specificHandleChange(e) {
1339
- var _Object$entries$ = _slicedToArray(Object.entries(e)[0], 2),
1340
- key = _Object$entries$[0],
1341
- value = _Object$entries$[1];
1342
-
1343
- if (value === false && responseToClean(response)(preferences)) handleChange(_defineProperty({}, key, null));else handleChange(e);
1344
- };
1345
-
1346
- React.useEffect(function () {
1347
- if (focused) inputRef.current.focus();
1348
- }, [focused]);
1349
- var isVertical = positioning === 'VERTICAL';
1350
- var isHorizontal = positioning === 'HORIZONTAL';
1351
- var input = /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement("input", {
1352
- type: "checkbox",
1353
- id: "checkbox-boolean-".concat(id),
1354
- ref: inputRef,
1355
- title: label ? label : 'empty-label',
1356
- className: "checkbox-boolean-lunatic".concat(isVertical ? '-no-margin' : ''),
1357
- style: buildStyleObject(style),
1358
- checked: value,
1359
- disabled: disabled,
1360
- onChange: function onChange(_ref2) {
1361
- var checked = _ref2.target.checked;
1362
- setValue(checked);
1363
- specificHandleChange(_defineProperty({}, getResponseName(response), checked));
1364
- }
1365
- }), label && /*#__PURE__*/React__default['default'].createElement("label", {
1366
- htmlFor: "checkbox-boolean-".concat(id)
1367
- }, isHorizontal ? interpret(features)(bindings)(label) : ''));
1368
- return /*#__PURE__*/React__default['default'].createElement("div", {
1369
- key: "checkbox-boolean-".concat(id),
1370
- className: "checkbox-boolean-modality"
1371
- }, /*#__PURE__*/React__default['default'].createElement(Declarations, {
1372
- id: id,
1373
- type: BEFORE_QUESTION_TEXT,
1374
- declarations: declarations,
1375
- features: features,
1376
- bindings: bindings
1377
- }), label && !isHorizontal && /*#__PURE__*/React__default['default'].createElement("label", {
1378
- htmlFor: "checkbox-boolean-".concat(id)
1379
- }, interpret(features)(bindings)(label)), /*#__PURE__*/React__default['default'].createElement(Declarations, {
1380
- id: id,
1381
- type: AFTER_QUESTION_TEXT,
1382
- declarations: declarations,
1383
- features: features,
1384
- bindings: bindings
1385
- }), /*#__PURE__*/React__default['default'].createElement("div", {
1386
- className: "field-container"
1387
- }, /*#__PURE__*/React__default['default'].createElement("div", {
1388
- className: "".concat(management ? 'field-with-tooltip' : 'field')
1389
- }, isVertical ? /*#__PURE__*/React__default['default'].createElement("div", null, input) : input), management && /*#__PURE__*/React__default['default'].createElement("div", {
1390
- className: "tooltip"
1391
- }, /*#__PURE__*/React__default['default'].createElement(TooltipResponse, {
1392
- id: id,
1393
- response: buildBooleanTooltipResponse(response)
1394
- }))), /*#__PURE__*/React__default['default'].createElement(Declarations, {
1395
- id: id,
1396
- type: DETACHABLE,
1397
- declarations: declarations,
1398
- features: features,
1399
- bindings: bindings
1400
- }));
1401
- };
1402
-
1403
- CheckboxBoolean.defaultProps = {
1404
- label: '',
1405
- preferences: ['COLLECTED'],
1406
- response: {},
1407
- disabled: false,
1408
- positioning: 'DEFAULT',
1409
- focused: false,
1410
- declarations: [],
1411
- features: [],
1412
- bindings: {},
1413
- management: false,
1414
- style: {}
1415
- };
1416
- CheckboxBoolean.propTypes = {
1417
- id: PropTypes__default['default'].string.isRequired,
1418
- label: PropTypes__default['default'].string,
1419
- preferences: PropTypes__default['default'].arrayOf(valueType),
1420
- response: response,
1421
- handleChange: PropTypes__default['default'].func.isRequired,
1422
- disabled: PropTypes__default['default'].bool,
1423
- positioning: PropTypes__default['default'].oneOf(['DEFAULT', 'HORIZONTAL', 'VERTICAL']),
1424
- focused: PropTypes__default['default'].bool,
1425
- declarations: declarations,
1426
- features: PropTypes__default['default'].arrayOf(PropTypes__default['default'].string),
1427
- bindings: PropTypes__default['default'].object,
1428
- management: PropTypes__default['default'].bool,
1429
- style: PropTypes__default['default'].object
1430
- };
1431
- var boolean = /*#__PURE__*/React__default['default'].memo(CheckboxBoolean, areEqual);
1432
-
1433
- var InputDeclarationsWrapper = function InputDeclarationsWrapper(_ref) {
1434
- var id = _ref.id,
1435
- label = _ref.label,
1436
- preferences = _ref.preferences,
1437
- response = _ref.response,
1438
- placeholder = _ref.placeholder,
1439
- handleChange = _ref.handleChange,
1440
- maxLength = _ref.maxLength,
1441
- readOnly = _ref.readOnly,
1442
- disabled = _ref.disabled,
1443
- autoComplete = _ref.autoComplete,
1444
- labelPosition = _ref.labelPosition,
1445
- mandatory = _ref.mandatory,
1446
- declarations = _ref.declarations,
1447
- features = _ref.features,
1448
- bindings = _ref.bindings,
1449
- focused = _ref.focused,
1450
- management = _ref.management,
1451
- style = _ref.style,
1452
- type = _ref.type,
1453
- roleType = _ref.roleType;
1454
- var inputRef = React.useRef();
1455
-
1456
- var _useState = React.useState(function () {
1457
- return getResponseByPreference(preferences)(response);
1458
- }),
1459
- _useState2 = _slicedToArray(_useState, 2),
1460
- value = _useState2[0],
1461
- setValue = _useState2[1];
1462
-
1463
- React.useEffect(function () {
1464
- if (focused) inputRef.current.focus();
1465
- }, [focused]); // Assume we only want to handle enable external updates
1466
- // Don't need to check all value changes
1467
-
1468
- React.useEffect(function () {
1469
- if (getResponseByPreference(preferences)(response) !== value) setValue(getResponseByPreference(preferences)(response)); // eslint-disable-next-line react-hooks/exhaustive-deps
1470
- }, [response, preferences]);
1471
-
1472
- var handleChangeOnBlur = function handleChangeOnBlur() {
1473
- handleChange(_defineProperty({}, getResponseName(response), value));
1474
-
1475
- if (management && value === null) {
1476
- setValue(getResponseByPreference(preferences)(buildLocalResponse(response, value)));
1477
- }
1478
- };
1479
-
1480
- var Component = roleType === 'textarea' ? 'textarea' : 'input';
1481
- return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(Declarations, {
1482
- id: id,
1483
- type: BEFORE_QUESTION_TEXT,
1484
- declarations: declarations,
1485
- features: features,
1486
- bindings: bindings
1487
- }), /*#__PURE__*/React__default['default'].createElement("div", {
1488
- className: getLabelPositionClass(labelPosition)
1489
- }, label && /*#__PURE__*/React__default['default'].createElement("label", {
1490
- htmlFor: "".concat(roleType, "-").concat(id),
1491
- id: "".concat(roleType, "-label-").concat(id),
1492
- className: "".concat(mandatory ? 'mandatory' : '')
1493
- }, interpret(features)(bindings)(label)), /*#__PURE__*/React__default['default'].createElement(Declarations, {
1494
- id: id,
1495
- type: AFTER_QUESTION_TEXT,
1496
- declarations: declarations,
1497
- features: features,
1498
- bindings: bindings
1499
- }), /*#__PURE__*/React__default['default'].createElement("div", {
1500
- className: "field-container"
1501
- }, /*#__PURE__*/React__default['default'].createElement("div", {
1502
- className: "".concat(management ? 'field-with-tooltip' : 'field')
1503
- }, /*#__PURE__*/React__default['default'].createElement(Component, {
1504
- type: type,
1505
- id: "".concat(roleType, "-").concat(id),
1506
- ref: inputRef,
1507
- value: value,
1508
- placeholder: placeholder,
1509
- autoComplete: autoComplete ? 'on' : 'off',
1510
- className: "".concat(roleType, "-lunatic"),
1511
- style: buildStyleObject(style),
1512
- readOnly: readOnly,
1513
- disabled: disabled,
1514
- maxLength: maxLength || 524288,
1515
- required: mandatory,
1516
- "aria-required": mandatory,
1517
- onChange: function onChange(_ref2) {
1518
- var v = _ref2.target.value;
1519
- setValue(v === '' ? null : v);
1520
- },
1521
- onBlur: handleChangeOnBlur
1522
- })), management && /*#__PURE__*/React__default['default'].createElement("div", {
1523
- className: "tooltip"
1524
- }, /*#__PURE__*/React__default['default'].createElement(TooltipResponse, {
1525
- id: id,
1526
- response: buildLocalResponse(response, value)
1527
- })))), /*#__PURE__*/React__default['default'].createElement(Declarations, {
1528
- id: id,
1529
- type: DETACHABLE,
1530
- declarations: declarations,
1531
- features: features,
1532
- bindings: bindings
1533
- }));
1534
- };
1535
-
1536
- InputDeclarationsWrapper.defaultProps = {
1537
- label: '',
1538
- preferences: ['COLLECTED'],
1539
- response: {},
1540
- placeholder: '',
1541
- readOnly: false,
1542
- disabled: false,
1543
- autoComplete: false,
1544
- labelPosition: 'DEFAULT',
1545
- mandatory: false,
1546
- focused: false,
1547
- declarations: [],
1548
- features: [],
1549
- bindings: {},
1550
- management: false,
1551
- style: {}
1552
- };
1553
- InputDeclarationsWrapper.propTypes = {
1554
- id: PropTypes__default['default'].string.isRequired,
1555
- label: PropTypes__default['default'].string,
1556
- preferences: PropTypes__default['default'].arrayOf(valueType),
1557
- response: response,
1558
- placeholder: PropTypes__default['default'].string,
1559
- handleChange: PropTypes__default['default'].func.isRequired,
1560
- readOnly: PropTypes__default['default'].bool,
1561
- disabled: PropTypes__default['default'].bool,
1562
- maxLength: PropTypes__default['default'].oneOfType([PropTypes__default['default'].number, PropTypes__default['default'].string]),
1563
- autoComplete: PropTypes__default['default'].bool,
1564
- labelPosition: PropTypes__default['default'].oneOf(['DEFAULT', 'TOP', 'BOTTOM', 'LEFT', 'RIGHT']),
1565
- mandatory: PropTypes__default['default'].bool,
1566
- focused: PropTypes__default['default'].bool,
1567
- declarations: declarations,
1568
- features: PropTypes__default['default'].arrayOf(PropTypes__default['default'].string),
1569
- bindings: PropTypes__default['default'].object,
1570
- management: PropTypes__default['default'].bool,
1571
- style: PropTypes__default['default'].object,
1572
- type: PropTypes__default['default'].oneOf(['text', 'date', null]),
1573
- roleType: PropTypes__default['default'].oneOf(['input', 'datepicker', 'textarea'])
1574
- };
1575
-
1576
- var ListDeclarationsWrapper = function ListDeclarationsWrapper(_ref) {
1577
- var id = _ref.id,
1578
- label = _ref.label,
1579
- preferences = _ref.preferences,
1580
- response = _ref.response,
1581
- options = _ref.options,
1582
- handleChange = _ref.handleChange,
1583
- disabled = _ref.disabled,
1584
- focused = _ref.focused,
1585
- keyboardSelection = _ref.keyboardSelection,
1586
- declarations = _ref.declarations,
1587
- features = _ref.features,
1588
- bindings = _ref.bindings,
1589
- management = _ref.management,
1590
- style = _ref.style,
1591
- positioning = _ref.positioning,
1592
- type = _ref.type,
1593
- hasSpecificHandler = _ref.hasSpecificHandler;
1594
- var inputRef = React.useRef();
1595
-
1596
- var _useState = React.useState(function () {
1597
- return getResponseByPreference(preferences)(response);
1598
- }),
1599
- _useState2 = _slicedToArray(_useState, 2),
1600
- value = _useState2[0],
1601
- setValue = _useState2[1];
1602
-
1603
- var specificHandleChange = function specificHandleChange(e) {
1604
- var values = response.values;
1605
-
1606
- var _Object$entries$ = _slicedToArray(Object.entries(e)[0], 2),
1607
- key = _Object$entries$[0],
1608
- value = _Object$entries$[1];
1609
-
1610
- var newValue = values[preferences[preferences.length - 1]] === value ? null : value;
1611
- handleChange(_defineProperty({}, key, newValue));
1612
-
1613
- if (management) {
1614
- setValue(getResponseByPreference(preferences)(buildLocalResponse(response, newValue)));
1615
- } else setValue(newValue);
1616
- };
1617
-
1618
- React.useEffect(function () {
1619
- if (focused) inputRef.current.focus();
1620
- }, [focused]);
1621
- var fieldsetStyle = style.fieldsetStyle,
1622
- modalityStyle = style.modalityStyle;
1623
- return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(Declarations, {
1624
- id: id,
1625
- type: BEFORE_QUESTION_TEXT,
1626
- declarations: declarations,
1627
- features: features,
1628
- bindings: bindings
1629
- }), /*#__PURE__*/React__default['default'].createElement("div", {
1630
- className: "field-container"
1631
- }, /*#__PURE__*/React__default['default'].createElement("div", {
1632
- className: "".concat(management ? 'field-with-tooltip' : 'field')
1633
- }, /*#__PURE__*/React__default['default'].createElement("fieldset", {
1634
- key: "".concat(type, "-").concat(id),
1635
- className: "".concat(type, "-group"),
1636
- style: buildStyleObject(fieldsetStyle)
1637
- }, /*#__PURE__*/React__default['default'].createElement("legend", null, interpret(features)(bindings)(label)), /*#__PURE__*/React__default['default'].createElement(Declarations, {
1638
- id: id,
1639
- type: AFTER_QUESTION_TEXT,
1640
- declarations: declarations,
1641
- features: features,
1642
- bindings: bindings
1643
- }), options.map(function (_ref2, i) {
1644
- var optionLabel = _ref2.label,
1645
- optionValue = _ref2.value;
1646
- var checked = value === optionValue;
1647
- var interpretedLabel = interpret(features)(bindings)(optionLabel);
1648
- return /*#__PURE__*/React__default['default'].createElement("div", {
1649
- key: "".concat(type, "-").concat(id, "-").concat(optionValue),
1650
- className: "".concat(type, "-modality ").concat(getItemsPositioningClass(positioning), " ").concat(checked ? 'content-checked' : '')
1651
- }, /*#__PURE__*/React__default['default'].createElement("input", {
1652
- type: type,
1653
- name: "".concat(type, "-").concat(id),
1654
- ref: i === 0 || checked ? inputRef : null,
1655
- id: "".concat(type, "-").concat(id, "-").concat(optionValue),
1656
- "aria-labelledby": "input-label-".concat(id, "-").concat(optionValue),
1657
- className: "".concat(type, "-lunatic"),
1658
- style: buildStyleObject(style),
1659
- checked: checked,
1660
- disabled: disabled,
1661
- onChange: function onChange() {
1662
- var update = _defineProperty({}, getResponseName(response), optionValue);
1663
-
1664
- if (hasSpecificHandler) specificHandleChange(update);else {
1665
- setValue(optionValue);
1666
- handleChange(_defineProperty({}, getResponseName(response), optionValue));
1667
- }
1668
- }
1669
- }), /*#__PURE__*/React__default['default'].createElement("label", {
1670
- htmlFor: "".concat(type, "-").concat(id, "-").concat(optionValue),
1671
- id: "input-label-".concat(id, "-").concat(optionValue),
1672
- style: checked ? buildStyleObject(modalityStyle) : {}
1673
- }, keyboardSelection && /*#__PURE__*/React__default['default'].createElement("span", {
1674
- className: "code-modality"
1675
- }, options.length < 10 ? i + 1 : getAlphabet()[i].toUpperCase()), interpretedLabel));
1676
- }))), management && /*#__PURE__*/React__default['default'].createElement("div", {
1677
- className: "tooltip"
1678
- }, /*#__PURE__*/React__default['default'].createElement(TooltipResponse, {
1679
- id: id,
1680
- response: buildMultiTooltipResponse(options)(response)
1681
- }))), /*#__PURE__*/React__default['default'].createElement(Declarations, {
1682
- id: id,
1683
- type: DETACHABLE,
1684
- declarations: declarations,
1685
- features: features,
1686
- bindings: bindings
1687
- }));
1688
- };
1689
-
1690
- ListDeclarationsWrapper.defaultProps = {
1691
- label: '',
1692
- preferences: ['COLLECTED'],
1693
- response: {},
1694
- options: [],
1695
- disabled: false,
1696
- focused: false,
1697
- keyboardSelection: false,
1698
- positioning: 'DEFAULT',
1699
- declarations: [],
1700
- features: [],
1701
- bindings: {},
1702
- management: false,
1703
- style: {
1704
- fieldsetStyle: {},
1705
- modalityStyle: {}
1706
- }
1707
- };
1708
- ListDeclarationsWrapper.propTypes = {
1709
- id: PropTypes__default['default'].string.isRequired,
1710
- label: PropTypes__default['default'].string,
1711
- preferences: PropTypes__default['default'].arrayOf(valueType),
1712
- response: response,
1713
- options: options,
1714
- handleChange: PropTypes__default['default'].func.isRequired,
1715
- disabled: PropTypes__default['default'].bool,
1716
- focused: PropTypes__default['default'].bool,
1717
- keyboardSelection: PropTypes__default['default'].bool,
1718
- positioning: PropTypes__default['default'].oneOf(['DEFAULT', 'HORIZONTAL', 'VERTICAL']),
1719
- declarations: declarations,
1720
- features: PropTypes__default['default'].arrayOf(PropTypes__default['default'].string),
1721
- bindings: PropTypes__default['default'].object,
1722
- management: PropTypes__default['default'].bool,
1723
- style: PropTypes__default['default'].object,
1724
- type: PropTypes__default['default'].oneOf(['radio', 'checkbox'])
1725
- };
1726
-
1727
- var SimpleDeclarationsWrapper = function SimpleDeclarationsWrapper(_ref) {
1728
- var id = _ref.id,
1729
- declarations = _ref.declarations,
1730
- features = _ref.features,
1731
- bindings = _ref.bindings,
1732
- children = _ref.children;
1733
- return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(Declarations, {
1734
- id: id,
1735
- type: BEFORE_QUESTION_TEXT,
1736
- declarations: declarations,
1737
- features: features,
1738
- bindings: bindings
1739
- }), children, /*#__PURE__*/React__default['default'].createElement(Declarations, {
1740
- id: id,
1741
- type: AFTER_QUESTION_TEXT,
1742
- declarations: declarations,
1743
- features: features,
1744
- bindings: bindings
1745
- }), /*#__PURE__*/React__default['default'].createElement(Declarations, {
1746
- id: id,
1747
- type: DETACHABLE,
1748
- declarations: declarations,
1749
- features: features,
1750
- bindings: bindings
1751
- }));
1752
- };
1753
-
1754
- SimpleDeclarationsWrapper.defaultProps = {
1755
- declarations: [],
1756
- features: [],
1757
- bindings: {}
1758
- };
1759
- SimpleDeclarationsWrapper.propTypes = {
1760
- id: PropTypes__default['default'].string.isRequired,
1761
- declarations: declarations,
1762
- features: PropTypes__default['default'].arrayOf(PropTypes__default['default'].string),
1763
- bindings: PropTypes__default['default'].object,
1764
- children: PropTypes__default['default'].element.isRequired
1765
- };
1766
-
1767
- var CheckboxOne = function CheckboxOne(props) {
1768
- return /*#__PURE__*/React__default['default'].createElement(ListDeclarationsWrapper, _extends({
1769
- type: "checkbox"
1770
- }, props, {
1771
- hasSpecificHandler: true
1772
- }));
1773
- };
1774
-
1775
- var one = /*#__PURE__*/React__default['default'].memo(CheckboxOne, areEqual);
1776
-
1777
- var css_248z$5 = "* {\n box-sizing: border-box;\n}\n\n.mandatory:after {\n content: \" *\";\n color: red;\n}\n\n.horizontal-options {\n display: inline-block;\n margin-right: 2em;\n}\n\nlabel,\n.lunatic-dropdown-label {\n margin-bottom: 0.5em;\n}\n\n.label-top {\n display: flex;\n flex-direction: column;\n}\n\n.label-bottom {\n display: flex;\n flex-direction: column-reverse;\n}\n\n.label-right {\n justify-content: flex-end;\n display: flex;\n flex-direction: row-reverse;\n align-items: baseline;\n}\n.label-right :first-child {\n margin-right: 1rem;\n}\n\n.label-left {\n display: flex;\n flex-direction: row;\n align-items: baseline;\n}\n.label-left :first-child {\n margin-right: 1rem;\n}\n\n.field-container {\n display: flex;\n}\n\n.tooltip {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n\n.field-with-tooltip {\n width: calc(100% - 25px);\n position: relative;\n}\n\n.field {\n width: 100%;\n position: relative;\n}\n\n.datepicker-lunatic {\n width: 100%;\n box-sizing: border-box;\n border: solid 2px #e80a4d;\n border-radius: 10px;\n padding: 5px;\n}\n.datepicker-lunatic:focus {\n outline: none;\n box-shadow: 0 0 10px #e80a4d;\n}\n.datepicker-lunatic:read-only {\n background-color: #ebebe4;\n}";
1778
- styleInject(css_248z$5);
1779
-
1780
- var Datepicker = function Datepicker(props) {
1781
- return /*#__PURE__*/React__default['default'].createElement(InputDeclarationsWrapper, _extends({
1782
- type: "date",
1783
- roleType: "datepicker"
1784
- }, props));
1785
- };
1786
-
1787
- var component = /*#__PURE__*/React__default['default'].memo(Datepicker, areEqual);
1788
-
1789
- function createCommonjsModule(fn, module) {
1790
- return module = { exports: {} }, fn(module, module.exports), module.exports;
1791
- }
1792
-
1793
- var classnames = createCommonjsModule(function (module) {
1794
- /*!
1795
- Copyright (c) 2017 Jed Watson.
1796
- Licensed under the MIT License (MIT), see
1797
- http://jedwatson.github.io/classnames
1798
- */
1799
- /* global define */
1800
-
1801
- (function () {
1802
-
1803
- var hasOwn = {}.hasOwnProperty;
1804
-
1805
- function classNames () {
1806
- var classes = [];
1807
-
1808
- for (var i = 0; i < arguments.length; i++) {
1809
- var arg = arguments[i];
1810
- if (!arg) continue;
1811
-
1812
- var argType = typeof arg;
1813
-
1814
- if (argType === 'string' || argType === 'number') {
1815
- classes.push(arg);
1816
- } else if (Array.isArray(arg) && arg.length) {
1817
- var inner = classNames.apply(null, arg);
1818
- if (inner) {
1819
- classes.push(inner);
1820
- }
1821
- } else if (argType === 'object') {
1822
- for (var key in arg) {
1823
- if (hasOwn.call(arg, key) && arg[key]) {
1824
- classes.push(key);
1825
- }
1826
- }
1827
- }
1828
- }
1829
-
1830
- return classes.join(' ');
1831
- }
1832
-
1833
- if ( module.exports) {
1834
- classNames.default = classNames;
1835
- module.exports = classNames;
1836
- } else {
1837
- window.classNames = classNames;
1838
- }
1839
- }());
1840
- });
1841
-
1842
- var SHOW_PANEL = "dropdown/show-panel";
1843
- var showPanel = function showPanel() {
1844
- return {
1845
- type: SHOW_PANEL
1846
- };
1847
- };
1848
- var HIDE_PANEL = "dropdown/hide-panel";
1849
- var hidePanel = function hidePanel() {
1850
- return {
1851
- type: HIDE_PANEL
1852
- };
1853
- };
1854
- var SET_ACTIVE_OPTION = "dropdown/set-active-option";
1855
- var setActiveOption = function setActiveOption(index) {
1856
- return {
1857
- type: SET_ACTIVE_OPTION,
1858
- payload: {
1859
- index: index
1860
- }
1861
- };
1862
- };
1863
- var SET_OPTIONS = "dropdown/set-options";
1864
- var setOptions = function setOptions(options) {
1865
- return {
1866
- type: SET_OPTIONS,
1867
- payload: {
1868
- options: options
1869
- }
1870
- };
1871
- };
1872
- var SET_VALUE = "dropdown/set-value";
1873
- var setValue = function setValue(value) {
1874
- return {
1875
- type: SET_VALUE,
1876
- payload: {
1877
- value: value
1878
- }
1879
- };
1880
- };
1881
- var SET_FOCUSED = "dropdown/set-focused";
1882
- var setFocused = function setFocused(focused) {
1883
- return {
1884
- type: SET_FOCUSED,
1885
- payload: {
1886
- focused: focused
1887
- }
1888
- };
1889
- };
1890
- var SET_SELECTED_OPTION = "dropdown/set-selectted-option";
1891
- var setSelectedOption = function setSelectedOption(option) {
1892
- return {
1893
- type: SET_SELECTED_OPTION,
1894
- payload: {
1895
- option: option
1896
- }
1897
- };
1898
- };
1899
- var RESET_SELECTION = "dropdown/reset-selection";
1900
- var resetSelection = function resetSelection(option) {
1901
- return {
1902
- type: RESET_SELECTION
1903
- };
1904
- };
1905
- /* */
1906
-
1907
- var ARROW_UP_PRESSED = "dropdown/arrow-up-ressed";
1908
- var arrowUpPressed = function arrowUpPressed() {
1909
- return {
1910
- type: ARROW_UP_PRESSED
1911
- };
1912
- };
1913
- /* */
1914
-
1915
- var ARROW_DOWN_PRESSED = "dropdown/arrow-down-pressed";
1916
- var arrowDownPressed = function arrowDownPressed() {
1917
- return {
1918
- type: ARROW_DOWN_PRESSED
1919
- };
1920
- };
1921
- /* */
1922
-
1923
- var ENTER_PRESSED = "dropdown/enter-pressed";
1924
- var enterPressed = function enterPressed(callback) {
1925
- return {
1926
- type: ENTER_PRESSED,
1927
- payload: {
1928
- callback: callback
1929
- }
1930
- };
1931
- };
1932
- /* */
1933
-
1934
- var SET_PREFIX = "dropdown/set-prefix";
1935
- var setPrefix = function setPrefix(prefix) {
1936
- return {
1937
- type: SET_PREFIX,
1938
- payload: {
1939
- prefix: prefix
1940
- }
1941
- };
1942
- };
1943
-
1944
- /**
1945
- *
1946
- */
1947
-
1948
- function Panel(_ref) {
1949
- var _ref$options = _ref.options,
1950
- options = _ref$options === void 0 ? [] : _ref$options,
1951
- display = _ref.display,
1952
- handleActive = _ref.handleActive,
1953
- prefix = _ref.prefix,
1954
- activeIndex = _ref.activeIndex,
1955
- selectedOption = _ref.selectedOption,
1956
- onSelect = _ref.onSelect,
1957
- idDropdown = _ref.idDropdown,
1958
- Option = _ref.optionComponent;
1959
- var ulRef = React.useRef();
1960
- return display ? /*#__PURE__*/React__default['default'].createElement("div", {
1961
- className: "lunatic-dropdown-panel-container"
1962
- }, /*#__PURE__*/React__default['default'].createElement("ul", {
1963
- className: "lunatic-dropdown-panel",
1964
- ref: ulRef,
1965
- tabIndex: "-1"
1966
- }, options.map(function (_ref2, index) {
1967
- var label = _ref2.label,
1968
- value = _ref2.value;
1969
- return /*#__PURE__*/React__default['default'].createElement("li", {
1970
- key: value,
1971
- id: "".concat(idDropdown, "-option-").concat(value),
1972
- onMouseEnter: function onMouseEnter() {
1973
- return handleActive(index);
1974
- },
1975
- onMouseDown: function onMouseDown(e) {
1976
- e.stopPropagation();
1977
- e.preventDefault();
1978
-
1979
- if (e.button === 0) {
1980
- onSelect({
1981
- label: label,
1982
- value: value
1983
- });
1984
- }
1985
- }
1986
- }, /*#__PURE__*/React__default['default'].createElement(Option, {
1987
- label: label,
1988
- value: value,
1989
- prefix: prefix,
1990
- active: activeIndex === index,
1991
- selected: selectedOption && selectedOption.value === value
1992
- }));
1993
- }))) : null;
1994
- }
1995
-
1996
- var propTypesOption = PropTypes__default['default'].shape({
1997
- label: PropTypes__default['default'].string,
1998
- value: PropTypes__default['default'].oneOfType([PropTypes__default['default'].string, PropTypes__default['default'].object, PropTypes__default['default'].number, PropTypes__default['default'].symbol, PropTypes__default['default'].bool])
1999
- });
2000
- Panel.propTypes = {
2001
- idDropdown: PropTypes__default['default'].string.isRequired,
2002
- prefix: PropTypes__default['default'].string,
2003
- onSelect: PropTypes__default['default'].func,
2004
- handleActive: PropTypes__default['default'].func.isRequired,
2005
- activeIndex: PropTypes__default['default'].number,
2006
- selectedOption: propTypesOption,
2007
- display: PropTypes__default['default'].bool.isRequired,
2008
- options: PropTypes__default['default'].arrayOf(propTypesOption)
2009
- };
2010
- Panel.defaultProps = {
2011
- options: [],
2012
- onSelect: function onSelect() {
2013
- return null;
2014
- },
2015
- selectedOption: undefined
2016
- };
2017
-
2018
- function Icon(_ref) {
2019
- var _ref$height = _ref.height,
2020
- height = _ref$height === void 0 ? 20 : _ref$height,
2021
- _ref$width = _ref.width,
2022
- width = _ref$width === void 0 ? 20 : _ref$width,
2023
- _ref$color = _ref.color,
2024
- color = _ref$color === void 0 ? "#aaa" : _ref$color;
2025
- return /*#__PURE__*/React__default['default'].createElement("svg", {
2026
- xmlns: "http://www.w3.org/2000/svg",
2027
- width: width,
2028
- height: height,
2029
- x: "0",
2030
- y: "0",
2031
- enableBackground: "new 0 0 292.362 292.362",
2032
- version: "1.1",
2033
- viewBox: "0 0 292.362 292.362",
2034
- xmlSpace: "preserve"
2035
- }, /*#__PURE__*/React__default['default'].createElement("path", {
2036
- fill: color,
2037
- d: "M286.935 69.377c-3.614-3.617-7.898-5.424-12.848-5.424H18.274c-4.952 0-9.233 1.807-12.85 5.424C1.807 72.998 0 77.279 0 82.228c0 4.948 1.807 9.229 5.424 12.847l127.907 127.907c3.621 3.617 7.902 5.428 12.85 5.428s9.233-1.811 12.847-5.428L286.935 95.074c3.613-3.617 5.427-7.898 5.427-12.847 0-4.948-1.814-9.229-5.427-12.85z"
2038
- }));
2039
- }
2040
-
2041
- function Icon$1(_ref) {
2042
- var _ref$height = _ref.height,
2043
- height = _ref$height === void 0 ? 20 : _ref$height,
2044
- _ref$width = _ref.width,
2045
- width = _ref$width === void 0 ? 20 : _ref$width,
2046
- _ref$color = _ref.color,
2047
- color = _ref$color === void 0 ? "#aaa" : _ref$color;
2048
- return /*#__PURE__*/React__default['default'].createElement("svg", {
2049
- xmlns: "http://www.w3.org/2000/svg",
2050
- width: width,
2051
- height: height,
2052
- x: "0",
2053
- y: "0",
2054
- enableBackground: "new 0 0 292.362 292.362",
2055
- version: "1.1",
2056
- viewBox: "0 0 292.362 292.362",
2057
- xmlSpace: "preserve"
2058
- }, /*#__PURE__*/React__default['default'].createElement("path", {
2059
- fill: color,
2060
- d: "M286.935 197.286L159.028 69.379c-3.613-3.617-7.895-5.424-12.847-5.424s-9.233 1.807-12.85 5.424L5.424 197.286C1.807 200.9 0 205.184 0 210.132s1.807 9.233 5.424 12.847c3.621 3.617 7.902 5.428 12.85 5.428h255.813c4.949 0 9.233-1.811 12.848-5.428 3.613-3.613 5.427-7.898 5.427-12.847s-1.814-9.232-5.427-12.846z"
2061
- }));
2062
- }
2063
-
2064
- var Label = function Label(_ref) {
2065
- var content = _ref.content,
2066
- focused = _ref.focused,
2067
- mandatory = _ref.mandatory;
2068
- return /*#__PURE__*/React__default['default'].createElement("div", {
2069
- className: classnames('lunatic-dropdown-label', {
2070
- focused: focused,
2071
- mandatory: mandatory
2072
- })
2073
- }, content);
2074
- };
2075
-
2076
- Label.defaultProps = {
2077
- mandatory: false
2078
- };
2079
- Label.propTypes = {
2080
- content: PropTypes__default['default'].string.isRequired,
2081
- focused: PropTypes__default['default'].bool.isRequired,
2082
- mandatory: PropTypes__default['default'].bool
2083
- };
2084
-
2085
- var CLEANER_CALLBACKS = {};
2086
- /**
2087
- *
2088
- * @param {...any} execpt identifiants de dropdownn a ne pas appliquer
2089
- */
2090
-
2091
- var applyAll = function applyAll() {
2092
- for (var _len = arguments.length, execpt = new Array(_len), _key = 0; _key < _len; _key++) {
2093
- execpt[_key] = arguments[_key];
2094
- }
2095
-
2096
- Object.entries(CLEANER_CALLBACKS).forEach(function (_ref) {
2097
- var _ref2 = _slicedToArray(_ref, 2),
2098
- k = _ref2[0],
2099
- todo = _ref2[1];
2100
-
2101
- if (execpt.indexOf(k) === -1) {
2102
- apply(k);
2103
- }
2104
- });
2105
- };
2106
- /**
2107
- * Applique une fonction pour l'identifiant transmis
2108
- * @param {string} id
2109
- */
2110
-
2111
- var apply = function apply(id) {
2112
- if (id in CLEANER_CALLBACKS && typeof CLEANER_CALLBACKS[id] === "function") {
2113
- CLEANER_CALLBACKS[id]();
2114
- }
2115
- };
2116
- /**
2117
- *
2118
- * @param {string} id
2119
- * @param {function} callback
2120
- */
2121
-
2122
- var add = function add(id, callback) {
2123
- if (typeof callback === "function") {
2124
- CLEANER_CALLBACKS[id] = callback;
2125
- }
2126
- };
2127
- /**
2128
- *
2129
- * @param {string} id
2130
- */
2131
-
2132
- var clear = function clear(id) {
2133
- delete CLEANER_CALLBACKS[id];
2134
- };
2135
-
2136
- var BINDED_KEYS = {
2137
- arrowUp: "ArrowUp",
2138
- arrowDown: "ArrowDown",
2139
- enter: "Enter",
2140
- tab: "Tab"
2141
- };
2142
- /** */
2143
-
2144
- var onKeyDownCallback = (function (_, dispatch, onSelect) {
2145
- return function (key) {
2146
- switch (key) {
2147
- case BINDED_KEYS.arrowUp:
2148
- dispatch(arrowUpPressed()); // dispatch(actions.showPanel());
2149
-
2150
- break;
2151
-
2152
- case BINDED_KEYS.arrowDown:
2153
- dispatch(arrowDownPressed());
2154
- dispatch(showPanel());
2155
- break;
2156
-
2157
- case BINDED_KEYS.enter:
2158
- dispatch(enterPressed(onSelect));
2159
- break;
2160
-
2161
- case BINDED_KEYS.tab:
2162
- dispatch(setFocused(false));
2163
- dispatch(hidePanel());
2164
- break;
2165
- }
2166
- };
2167
- });
2168
-
2169
- /** */
2170
-
2171
- var onMouseDownCallback = (function (_ref, dispatch) {
2172
- var visible = _ref.visible,
2173
- id = _ref.id,
2174
- disabled = _ref.disabled;
2175
- return function (e) {
2176
- e.stopPropagation();
2177
-
2178
- if (!visible && !disabled) {
2179
- applyAll(id);
2180
- dispatch(showPanel());
2181
- }
2182
- };
2183
- });
2184
-
2185
- /** */
2186
-
2187
- var stopAndPrevent = function stopAndPrevent(e) {
2188
- e.preventDefault();
2189
- e.stopPropagation();
2190
- };
2191
- /** */
2192
-
2193
-
2194
- var onKeyDownCallback_ = function onKeyDownCallback_(state, dispatch, onSelect) {
2195
- return function (e) {
2196
- switch (e.key) {
2197
- case BINDED_KEYS.enter:
2198
- case BINDED_KEYS.arrowUp:
2199
- case BINDED_KEYS.arrowDown:
2200
- stopAndPrevent(e);
2201
- onKeyDownCallback(state, dispatch, onSelect)(e.key);
2202
- break;
2203
-
2204
- case BINDED_KEYS.tab:
2205
- onKeyDownCallback(state, dispatch, onSelect)(e.key);
2206
- break;
2207
- }
2208
- };
2209
- };
2210
-
2211
- var getZIndex = function getZIndex(z) {
2212
- return z || 0;
2213
- };
2214
-
2215
- var DropdownContainer = function DropdownContainer(_ref) {
2216
- var options = _ref.options,
2217
- children = _ref.children,
2218
- onSelect = _ref.onSelect,
2219
- response = _ref.response,
2220
- className = _ref.className,
2221
- label = _ref.label,
2222
- labelPosition = _ref.labelPosition,
2223
- mandatory = _ref.mandatory,
2224
- valueFromProps = _ref.value,
2225
- zIndex = _ref.zIndex,
2226
- management = _ref.management,
2227
- state = _ref.state,
2228
- dispatch = _ref.dispatch,
2229
- refs = _ref.refs;
2230
- var visible = state.visible,
2231
- focused = state.focused,
2232
- id = state.id,
2233
- disabled = state.disabled;
2234
- add(id, function () {
2235
- dispatch(hidePanel());
2236
- dispatch(setFocused(false));
2237
- });
2238
- React.useEffect(function () {
2239
- var hook = function hook() {
2240
- dispatch(hidePanel());
2241
- dispatch(setFocused(false));
2242
- };
2243
-
2244
- window.addEventListener('mousedown', hook);
2245
- return function () {
2246
- window.removeEventListener('mousedown', hook);
2247
- clear(id);
2248
- };
2249
- }, [id, dispatch]);
2250
- React.useEffect(function () {
2251
- dispatch(setOptions(options));
2252
- }, [options, dispatch]);
2253
- React.useEffect(function () {
2254
- if (valueFromProps) {
2255
- var _options$reduce = options.reduce(function (a, o, i) {
2256
- return o.value === valueFromProps && a.index === -1 ? {
2257
- index: i,
2258
- option: o
2259
- } : a;
2260
- }, {
2261
- index: -1,
2262
- option: {}
2263
- }),
2264
- option = _options$reduce.option,
2265
- index = _options$reduce.index;
2266
-
2267
- dispatch(setSelectedOption(option));
2268
- dispatch(setActiveOption(index));
2269
- }
2270
- }, [valueFromProps, options, dispatch]);
2271
- var z = getZIndex(zIndex);
2272
- return /*#__PURE__*/React__default['default'].createElement("div", {
2273
- className: classnames("".concat(className, " ").concat(getLabelPositionClass(labelPosition)), {
2274
- focused: focused,
2275
- disabled: disabled
2276
- }),
2277
- tabIndex: "-1",
2278
- id: id,
2279
- onMouseDown: onMouseDownCallback(state, dispatch),
2280
- onKeyDown: onKeyDownCallback_(state, dispatch, onSelect),
2281
- onFocus: function onFocus() {
2282
- return dispatch(setFocused( !disabled));
2283
- },
2284
- onBlur: function onBlur() {
2285
- dispatch(setFocused(false));
2286
- },
2287
- ref: refs
2288
- }, label ? /*#__PURE__*/React__default['default'].createElement(Label, {
2289
- content: label,
2290
- focused: focused,
2291
- mandatory: mandatory
2292
- }) : null, /*#__PURE__*/React__default['default'].createElement("div", {
2293
- className: "field-container"
2294
- }, /*#__PURE__*/React__default['default'].createElement("div", {
2295
- className: "".concat(management ? 'field-with-tooltip' : 'field')
2296
- }, /*#__PURE__*/React__default['default'].createElement("div", {
2297
- tabIndex: "-1",
2298
- style: {
2299
- zIndex: focused ? z + 1 : z
2300
- },
2301
- className: "lunatic-dropdown-container"
2302
- }, /*#__PURE__*/React__default['default'].createElement("span", {
2303
- className: classnames("lunatic-dropdown-content", {
2304
- focused: focused,
2305
- visible: visible,
2306
- disabled: disabled
2307
- })
2308
- }, children))), management && /*#__PURE__*/React__default['default'].createElement("div", {
2309
- className: "tooltip"
2310
- }, /*#__PURE__*/React__default['default'].createElement(TooltipResponse, {
2311
- id: id,
2312
- response: buildMultiTooltipResponse(options)(response)
2313
- }))));
2314
- };
2315
-
2316
- DropdownContainer.propTypes = {
2317
- zIndex: PropTypes__default['default'].number,
2318
- className: PropTypes__default['default'].string,
2319
- id: PropTypes__default['default'].string,
2320
- options: PropTypes__default['default'].array.isRequired,
2321
- onSelect: PropTypes__default['default'].func,
2322
- value: PropTypes__default['default'].oneOfType([PropTypes__default['default'].string, PropTypes__default['default'].number, PropTypes__default['default'].object, PropTypes__default['default'].bool])
2323
- };
2324
- DropdownContainer.defaultProps = {
2325
- options: [],
2326
- zIndex: 0,
2327
- onSelect: function onSelect() {
2328
- return null;
2329
- }
2330
- };
2331
- var DropdownContainer$1 = /*#__PURE__*/React__default['default'].forwardRef(function (props, ref) {
2332
- return /*#__PURE__*/React__default['default'].createElement(DropdownContainer, _extends({}, props, {
2333
- refs: ref
2334
- }));
2335
- });
2336
-
2337
- /** */
2338
- var scrollTo = function scrollTo(id) {
2339
- var li = document.getElementById(id);
2340
-
2341
- if (li) {
2342
- var parent = li.parentNode;
2343
- var pr = parent.getBoundingClientRect();
2344
- var lr = li.getBoundingClientRect();
2345
- var top = lr.top - pr.top + parent.scrollTop;
2346
- var bottom = lr.bottom - pr.top + parent.scrollTop;
2347
-
2348
- if (bottom > parent.scrollTop + pr.height) {
2349
- parent.scrollTo(0, bottom - pr.height);
2350
- } else if (top < parent.scrollTop) {
2351
- parent.scrollTo(0, top);
2352
- }
2353
- }
2354
- };
2355
-
2356
- var preparePrefix = function preparePrefix(prefix) {
2357
- return typeof prefix === 'string' ? removeAccents__default['default'](prefix.toLowerCase()).replace(/[- ']/g, '') : prefix;
2358
- };
2359
- var lettersMatching = function lettersMatching(label) {
2360
- var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
2361
- var pref = prefix.split('');
2362
- var pos = -1;
2363
- var clean = preparePrefix(label);
2364
- return clean.split('').reduce(function (a, c, idx) {
2365
- if (pos < pref.length && pref[pos + 1] === c) {
2366
- pos++;
2367
- return [].concat(_toConsumableArray(a), [c]);
2368
- }
2369
-
2370
- return a;
2371
- }, []);
2372
- };
2373
- var match = function match(label, prefix) {
2374
- var pref = prefix.split('');
2375
- var pos = -1;
2376
- var clean = preparePrefix(label);
2377
- return clean.split('').reduce(function (a, c, idx) {
2378
- if (pos < pref.length && pref[pos + 1] === c) {
2379
- pos++;
2380
- return a + 1;
2381
- }
2382
-
2383
- return a / (idx * 0.0001 + 1);
2384
- }, 0) / prefix.length;
2385
- };
2386
- /** */
2387
-
2388
- var filterOption = function filterOption(options, prefix) {
2389
- if (!prefix || prefix.length === 0) {
2390
- return options;
2391
- }
2392
-
2393
- return options.reduce(function (acc, o) {
2394
- var label = o.label,
2395
- search = o.search;
2396
- var how = match(search || label, prefix);
2397
- return how >= 0.6 ? [{
2398
- o: o,
2399
- how: how
2400
- }].concat(_toConsumableArray(acc)).sort(function (a, b) {
2401
- return a.how <= b.how;
2402
- }) : acc;
2403
- }, []).map(function (_ref) {
2404
- var o = _ref.o;
2405
- return o;
2406
- });
2407
- };
2408
-
2409
- var initial = {
2410
- prefix: undefined,
2411
- options: [],
2412
- visibleOptions: [],
2413
- visible: false,
2414
- activeIndex: undefined,
2415
- selectedOption: undefined,
2416
- focused: false,
2417
- value: ''
2418
- };
2419
- /** */
2420
-
2421
- var isPrefix = function isPrefix(prefix) {
2422
- return prefix !== undefined && prefix.length > 0;
2423
- };
2424
- /** */
2425
-
2426
-
2427
- var reduceArrowDownPressed = function reduceArrowDownPressed(state) {
2428
- var visibleOptions = state.visibleOptions,
2429
- activeIndex = state.activeIndex;
2430
- var next = visibleOptions.length ? Math.min(visibleOptions.length - 1, activeIndex === undefined ? 0 : activeIndex + 1) : undefined;
2431
-
2432
- if (next !== undefined) {
2433
- scrollTo("".concat(state.id, "-option-").concat(visibleOptions[next].value));
2434
- }
2435
-
2436
- return _objectSpread2(_objectSpread2({}, state), {}, {
2437
- activeIndex: next
2438
- });
2439
- };
2440
- /** */
2441
-
2442
-
2443
- var reduceArrowUpPressed = function reduceArrowUpPressed(state) {
2444
- var visibleOptions = state.visibleOptions,
2445
- activeIndex = state.activeIndex;
2446
- var next = visibleOptions.length ? Math.max(0, activeIndex === undefined ? 0 : activeIndex - 1) : undefined;
2447
-
2448
- if (next !== undefined) {
2449
- scrollTo("".concat(state.id, "-option-").concat(visibleOptions[next].value));
2450
- }
2451
-
2452
- return _objectSpread2(_objectSpread2({}, state), {}, {
2453
- activeIndex: next
2454
- });
2455
- };
2456
- /** */
2457
-
2458
-
2459
- var reduceEnterPressed = function reduceEnterPressed(state, callback) {
2460
- var activeIndex = state.activeIndex,
2461
- visibleOptions = state.visibleOptions,
2462
- visible = state.visible;
2463
-
2464
- if (!visible) {
2465
- return _objectSpread2(_objectSpread2({}, state), {}, {
2466
- visible: true
2467
- });
2468
- }
2469
-
2470
- if (activeIndex !== undefined) {
2471
- var option = visibleOptions[activeIndex];
2472
- callback(option);
2473
- return _objectSpread2(_objectSpread2({}, state), {}, {
2474
- selectedOption: option,
2475
- value: option.label,
2476
- prefix: preparePrefix(option.label),
2477
- visible: false
2478
- });
2479
- }
2480
-
2481
- return state;
2482
- };
2483
- /** */
2484
-
2485
-
2486
- var reducer = function reducer(state, action) {
2487
- var type = action.type,
2488
- payload = action.payload;
2489
-
2490
- switch (type) {
2491
- case SHOW_PANEL:
2492
- {
2493
- return _objectSpread2(_objectSpread2({}, state), {}, {
2494
- visible: true
2495
- });
2496
- }
2497
-
2498
- case HIDE_PANEL:
2499
- {
2500
- return _objectSpread2(_objectSpread2({}, state), {}, {
2501
- visible: false
2502
- });
2503
- }
2504
-
2505
- case SET_ACTIVE_OPTION:
2506
- {
2507
- var index = payload.index;
2508
- return _objectSpread2(_objectSpread2({}, state), {}, {
2509
- activeIndex: index
2510
- });
2511
- }
2512
-
2513
- case SET_OPTIONS:
2514
- {
2515
- var options = payload.options;
2516
- var prefix = state.prefix;
2517
- return _objectSpread2(_objectSpread2({}, state), {}, {
2518
- options: options,
2519
- visibleOptions: isPrefix(prefix) ? filterOption(options) : options
2520
- });
2521
- }
2522
-
2523
- case SET_PREFIX:
2524
- {
2525
- var _prefix = payload.prefix;
2526
- var _options = state.options;
2527
- return _objectSpread2(_objectSpread2({}, state), {}, {
2528
- prefix: _prefix,
2529
- activeIndex: undefined,
2530
- visibleOptions: isPrefix(_prefix) ? filterOption(_options, _prefix) : _options
2531
- });
2532
- }
2533
-
2534
- case SET_VALUE:
2535
- {
2536
- var value = payload.value;
2537
- return _objectSpread2(_objectSpread2({}, state), {}, {
2538
- value: value
2539
- });
2540
- }
2541
-
2542
- case SET_SELECTED_OPTION:
2543
- {
2544
- var option = payload.option;
2545
- return _objectSpread2(_objectSpread2({}, state), {}, {
2546
- value: option.label,
2547
- selectedOption: option,
2548
- prefix: preparePrefix(option.label)
2549
- });
2550
- }
2551
-
2552
- case SET_FOCUSED:
2553
- {
2554
- var focused = payload.focused;
2555
- return _objectSpread2(_objectSpread2({}, state), {}, {
2556
- focused: focused
2557
- });
2558
- }
2559
-
2560
- case RESET_SELECTION:
2561
- {
2562
- return _objectSpread2(_objectSpread2({}, state), {}, {
2563
- prefix: undefined,
2564
- value: '',
2565
- selectedOption: undefined,
2566
- activeIndex: undefined,
2567
- activeOption: undefined,
2568
- visibleOptions: state.options
2569
- });
2570
- }
2571
-
2572
- case ARROW_UP_PRESSED:
2573
- {
2574
- return reduceArrowUpPressed(state);
2575
- }
2576
-
2577
- case ARROW_DOWN_PRESSED:
2578
- {
2579
- return reduceArrowDownPressed(state);
2580
- }
2581
-
2582
- case ENTER_PRESSED:
2583
- {
2584
- var callback = payload.callback;
2585
- return reduceEnterPressed(state, callback);
2586
- }
2587
-
2588
- default:
2589
- return state;
2590
- }
2591
- };
2592
-
2593
- var Option = (function (_ref) {
2594
- var label = _ref.label,
2595
- active = _ref.active,
2596
- selected = _ref.selected;
2597
- return /*#__PURE__*/React__default['default'].createElement("span", {
2598
- className: classnames('lunatic-dropdown-option', {
2599
- 'lunatic-dropdown-option-active': active,
2600
- 'lunatic-dropdown-option-selected': selected
2601
- })
2602
- }, label);
2603
- });
2604
-
2605
- var Dropdown = function Dropdown(_ref) {
2606
- var widthAuto = _ref.widthAuto,
2607
- initId = _ref.id,
2608
- label = _ref.label,
2609
- value = _ref.value,
2610
- options = _ref.options,
2611
- response = _ref.response,
2612
- onSelect = _ref.onSelect,
2613
- placeholder = _ref.placeholder,
2614
- disabled = _ref.disabled,
2615
- initFocused = _ref.focused,
2616
- mandatory = _ref.mandatory,
2617
- labelPosition = _ref.labelPosition,
2618
- management = _ref.management,
2619
- className = _ref.className,
2620
- zIndex = _ref.zIndex;
2621
- var containerEl = React.useRef();
2622
-
2623
- var _useReducer = React.useReducer(reducer, _objectSpread2(_objectSpread2({}, initial), {}, {
2624
- id: "dropdown-".concat(initId, "-").concat(new Date().getMilliseconds()),
2625
- disabled: disabled,
2626
- focused: initFocused
2627
- })),
2628
- _useReducer2 = _slicedToArray(_useReducer, 2),
2629
- state = _useReducer2[0],
2630
- dispatch = _useReducer2[1];
2631
-
2632
- var focused = state.focused,
2633
- visible = state.visible,
2634
- activeIndex = state.activeIndex,
2635
- id = state.id;
2636
- var onSelect_ = createOnSelect(state, dispatch, onSelect);
2637
- var selectedOption = options.find(function (o) {
2638
- return o.value === value;
2639
- });
2640
- return /*#__PURE__*/React__default['default'].createElement(DropdownContainer$1, {
2641
- className: className || 'lunatic-dropdown',
2642
- ref: containerEl,
2643
- state: state,
2644
- dispatch: dispatch,
2645
- options: options,
2646
- response: response,
2647
- management: management,
2648
- label: label,
2649
- labelPosition: labelPosition,
2650
- mandatory: mandatory,
2651
- onSelect: onSelect_,
2652
- value: value,
2653
- zIndex: zIndex
2654
- }, /*#__PURE__*/React__default['default'].createElement("span", {
2655
- className: classnames('lunatic-dropdown-input', {
2656
- focused: focused
2657
- })
2658
- }, /*#__PURE__*/React__default['default'].createElement("input", {
2659
- type: "button",
2660
- disabled: disabled,
2661
- value: selectedOption ? selectedOption.label : placeholder || ''
2662
- })), getIcon(state, dispatch)(visible, containerEl), /*#__PURE__*/React__default['default'].createElement("div", {
2663
- tabIndex: "-1",
2664
- className: classnames('lunatic-transition', {
2665
- visible: isDisplay(state),
2666
- 'width-auto': widthAuto
2667
- })
2668
- }, /*#__PURE__*/React__default['default'].createElement(Panel, {
2669
- idDropdown: id,
2670
- options: options,
2671
- display: isDisplay(state),
2672
- activeIndex: activeIndex,
2673
- optionComponent: Option,
2674
- selectedOption: selectedOption,
2675
- onSelect: onSelect_,
2676
- handleActive: function handleActive(index) {
2677
- return dispatch(setActiveOption(index));
2678
- }
2679
- })));
2680
- };
2681
-
2682
- Dropdown.propTypes = {
2683
- widthAuto: PropTypes__default['default'].bool,
2684
- disabled: PropTypes__default['default'].bool,
2685
- focused: PropTypes__default['default'].bool,
2686
- zIndex: PropTypes__default['default'].number,
2687
- className: PropTypes__default['default'].string,
2688
- id: PropTypes__default['default'].string,
2689
- options: PropTypes__default['default'].array.isRequired,
2690
- onSelect: PropTypes__default['default'].func,
2691
- placeholder: PropTypes__default['default'].string,
2692
- value: PropTypes__default['default'].oneOfType([PropTypes__default['default'].string, PropTypes__default['default'].number, PropTypes__default['default'].bool])
2693
- };
2694
- Dropdown.defaultProps = {
2695
- disabled: false,
2696
- focused: false,
2697
- options: [],
2698
- zIndex: 0,
2699
- onSelect: function onSelect() {
2700
- return null;
2701
- },
2702
- placeholder: 'Search...',
2703
- widthAuto: false
2704
- };
2705
- /* **/
2706
-
2707
- var isDisplay = function isDisplay(_ref2) {
2708
- var visible = _ref2.visible,
2709
- options = _ref2.options;
2710
- return visible && options.length > 0;
2711
- };
2712
- /** */
2713
-
2714
-
2715
- var getIcon = function getIcon(_ref3, dispatch) {
2716
- var disabled = _ref3.disabled;
2717
- return function (visible, containerEl) {
2718
- if (disabled) {
2719
- return /*#__PURE__*/React__default['default'].createElement("span", {
2720
- className: "lunatic-icone"
2721
- }, /*#__PURE__*/React__default['default'].createElement(Icon, {
2722
- width: 10,
2723
- height: 10
2724
- }));
2725
- }
2726
-
2727
- return /*#__PURE__*/React__default['default'].createElement("span", {
2728
- className: "lunatic-icone",
2729
- tabIndex: "-1",
2730
- onMouseDown: function onMouseDown(e) {
2731
- e.stopPropagation();
2732
- e.preventDefault();
2733
-
2734
- if (visible) {
2735
- dispatch(hidePanel());
2736
- } else {
2737
- dispatch(showPanel());
2738
- containerEl.current.focus();
2739
- }
2740
- }
2741
- }, visible ? /*#__PURE__*/React__default['default'].createElement(Icon$1, {
2742
- width: 10,
2743
- height: 10
2744
- }) : /*#__PURE__*/React__default['default'].createElement(Icon, {
2745
- width: 10,
2746
- height: 10
2747
- }));
2748
- };
2749
- };
2750
-
2751
- var createOnSelect = function createOnSelect(_, dispatch, onSelect) {
2752
- return function (option) {
2753
- dispatch(setSelectedOption(option));
2754
- dispatch(hidePanel());
2755
- onSelect(option);
2756
- };
2757
- };
2758
-
2759
- var childrenToOption = function childrenToOption() {
2760
- var children = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
2761
- return (Array.isArray(children) ? children : [children]).map(function (child) {
2762
- var value = child.props.value;
2763
- var label = child.props.children;
2764
-
2765
- if (label === undefined || value === undefined) {
2766
- throw new Error('Ooops');
2767
- }
2768
-
2769
- return {
2770
- label: label,
2771
- value: value
2772
- };
2773
- });
2774
- };
2775
-
2776
- var createDropdown = function createDropdown(Component) {
2777
- return function (_ref) {
2778
- var children = _ref.children,
2779
- options = _ref.options,
2780
- props = _objectWithoutProperties(_ref, ["children", "options"]);
2781
-
2782
- var o = options || childrenToOption(children);
2783
- return /*#__PURE__*/React__default['default'].createElement(Component, _extends({
2784
- options: o
2785
- }, props));
2786
- };
2787
- };
2788
-
2789
- var DropdownSimple = createDropdown(Dropdown);
2790
-
2791
- var Option$1 = (function (_ref) {
2792
- var label = _ref.label,
2793
- active = _ref.active,
2794
- prefix = _ref.prefix,
2795
- selected = _ref.selected;
2796
- var initLetters = lettersMatching(label, prefix);
2797
- var what = label.split('').reduce(function (_ref2, c) {
2798
- var letters = _ref2.letters,
2799
- stack = _ref2.stack;
2800
- var m = preparePrefix(c);
2801
-
2802
- var _letters = _toArray(letters),
2803
- first = _letters[0],
2804
- rest = _letters.slice(1);
2805
-
2806
- if (m === first) {
2807
- return {
2808
- letters: rest,
2809
- stack: [].concat(_toConsumableArray(stack), [{
2810
- "char": c,
2811
- className: 'lunatic-prefix'
2812
- }])
2813
- };
2814
- }
2815
-
2816
- return {
2817
- letters: letters,
2818
- stack: [].concat(_toConsumableArray(stack), [{
2819
- "char": c,
2820
- className: 'lunatic-normal'
2821
- }])
2822
- };
2823
- }, {
2824
- letters: initLetters,
2825
- stack: []
2826
- }).stack.reduce(function (_ref3, _ref4) {
2827
- var last = _ref3.last,
2828
- stack = _ref3.stack;
2829
- var _char = _ref4["char"],
2830
- className = _ref4.className;
2831
-
2832
- if (!last) {
2833
- return {
2834
- last: className,
2835
- stack: [{
2836
- part: _char,
2837
- className: className
2838
- }]
2839
- };
2840
- }
2841
-
2842
- if (last !== className) {
2843
- return {
2844
- last: className,
2845
- stack: [{
2846
- part: _char,
2847
- className: className
2848
- }].concat(_toConsumableArray(stack))
2849
- };
2850
- }
2851
-
2852
- var _stack = _toArray(stack),
2853
- first = _stack[0],
2854
- rest = _stack.slice(1);
2855
-
2856
- return {
2857
- last: className,
2858
- stack: [_objectSpread2(_objectSpread2({}, first), {}, {
2859
- part: "".concat(first.part).concat(_char)
2860
- })].concat(_toConsumableArray(rest))
2861
- };
2862
- }, {
2863
- last: undefined,
2864
- stack: []
2865
- }).stack.reverse().map(function (_ref5, i) {
2866
- var part = _ref5.part,
2867
- className = _ref5.className;
2868
- return /*#__PURE__*/React__default['default'].createElement("span", {
2869
- className: className,
2870
- key: i
2871
- }, part);
2872
- });
2873
- return /*#__PURE__*/React__default['default'].createElement("span", {
2874
- className: classnames('lunatic-dropdown-option', {
2875
- 'lunatic-dropdown-option-active': active,
2876
- 'lunatic-dropdown-option-selected': selected
2877
- })
2878
- }, what);
2879
- });
2880
-
2881
- var CrossIcon = (function (_ref) {
2882
- var _ref$width = _ref.width,
2883
- width = _ref$width === void 0 ? 20 : _ref$width,
2884
- _ref$height = _ref.height,
2885
- height = _ref$height === void 0 ? 20 : _ref$height,
2886
- _ref$color = _ref.color,
2887
- color = _ref$color === void 0 ? "#aaa" : _ref$color;
2888
- return /*#__PURE__*/React__default['default'].createElement("svg", {
2889
- xmlns: "http://www.w3.org/2000/svg",
2890
- width: width,
2891
- height: height,
2892
- x: "0",
2893
- y: "0",
2894
- enableBackground: "new 0 0 612 612",
2895
- version: "1.1",
2896
- viewBox: "0 0 612 612",
2897
- xmlSpace: "preserve"
2898
- }, /*#__PURE__*/React__default['default'].createElement("path", {
2899
- fill: color,
2900
- d: "M444.644 306l138.644-138.644c38.284-38.284 38.284-100.36 0-138.644-38.283-38.284-100.359-38.284-138.644 0L306 167.356 167.356 28.713c-38.284-38.284-100.36-38.284-138.644 0s-38.284 100.36 0 138.644L167.356 306 28.713 444.644c-38.284 38.283-38.284 100.36 0 138.644 38.284 38.284 100.36 38.284 138.644 0L306 444.644l138.644 138.644c38.283 38.284 100.36 38.284 138.644 0 38.284-38.283 38.284-100.36 0-138.644L444.644 306z"
2901
- }));
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
2902
5
  });
2903
-
2904
- /** */
2905
-
2906
- var getIcon$1 = function getIcon(visible) {
2907
- return visible ? /*#__PURE__*/React__default['default'].createElement(Icon$1, {
2908
- width: 10,
2909
- height: 10
2910
- }) : /*#__PURE__*/React__default['default'].createElement(Icon, {
2911
- width: 10,
2912
- height: 10
2913
- });
6
+ var _exportNames = {
7
+ useLunatic: true
2914
8
  };
2915
-
2916
- var Icone = function Icone(_ref) {
2917
- var prefix = _ref.prefix,
2918
- visible = _ref.visible,
2919
- disabled = _ref.disabled,
2920
- onDelete = _ref.onDelete,
2921
- onSwitch = _ref.onSwitch;
2922
-
2923
- if (disabled) {
2924
- return /*#__PURE__*/React__default['default'].createElement("span", {
2925
- className: "lunatic-icone",
2926
- tabIndex: "-1",
2927
- onMouseDown: onSwitch
2928
- }, /*#__PURE__*/React__default['default'].createElement(Icon, {
2929
- width: 10,
2930
- height: 10
2931
- }));
9
+ Object.defineProperty(exports, "useLunatic", {
10
+ enumerable: true,
11
+ get: function get() {
12
+ return _useLunatic["default"];
2932
13
  }
2933
-
2934
- return prefix && prefix.length > 0 ? /*#__PURE__*/React__default['default'].createElement("span", {
2935
- className: "lunatic-icone",
2936
- tabIndex: "-1",
2937
- onMouseDown: onDelete
2938
- }, /*#__PURE__*/React__default['default'].createElement(CrossIcon, {
2939
- width: 10,
2940
- height: 10
2941
- })) : /*#__PURE__*/React__default['default'].createElement("span", {
2942
- className: "lunatic-icone",
2943
- tabIndex: "-1",
2944
- onMouseDown: onSwitch
2945
- }, getIcon$1(visible));
2946
- };
2947
-
2948
- /* **/
2949
-
2950
- var isDisplay$1 = function isDisplay(_ref) {
2951
- var visible = _ref.visible,
2952
- visibleOptions = _ref.visibleOptions;
2953
- return visible && visibleOptions.length > 0;
2954
- };
2955
- /** */
2956
-
2957
-
2958
- var onChangeCallback = function onChangeCallback(state, dispatch) {
2959
- return function (e) {
2960
- e.stopPropagation();
2961
- e.preventDefault();
2962
- dispatch(setValue(e.target.value));
2963
- dispatch(setPrefix(preparePrefix(e.target.value)));
2964
- };
2965
- };
2966
- /** */
2967
-
2968
-
2969
- var createOnSelect$1 = function createOnSelect(_, dispatch, onSelect) {
2970
- return function (option) {
2971
- dispatch(setSelectedOption(option));
2972
- dispatch(hidePanel());
2973
- onSelect(option);
2974
- };
2975
- };
2976
- /**
2977
- *
2978
- * @param {props}
2979
- */
2980
-
2981
-
2982
- function Dropdown$1(_ref2) {
2983
- var widthAuto = _ref2.widthAuto,
2984
- _ref2$options = _ref2.options,
2985
- options = _ref2$options === void 0 ? [] : _ref2$options,
2986
- onSelect = _ref2.onSelect,
2987
- response = _ref2.response,
2988
- className = _ref2.className,
2989
- placeholder = _ref2.placeholder,
2990
- label = _ref2.label,
2991
- labelPosition = _ref2.labelPosition,
2992
- mandatory = _ref2.mandatory,
2993
- valueFromProps = _ref2.value,
2994
- zIndex = _ref2.zIndex,
2995
- management = _ref2.management,
2996
- disabled = _ref2.disabled,
2997
- initFocused = _ref2.focused;
2998
-
2999
- var _useReducer = React.useReducer(reducer, _objectSpread2(_objectSpread2({}, initial), {}, {
3000
- id: "dropdown-".concat(new Date().getMilliseconds()),
3001
- disabled: disabled,
3002
- focused: initFocused
3003
- })),
3004
- _useReducer2 = _slicedToArray(_useReducer, 2),
3005
- state = _useReducer2[0],
3006
- dispatch = _useReducer2[1];
3007
-
3008
- var prefix = state.prefix,
3009
- visible = state.visible,
3010
- activeIndex = state.activeIndex,
3011
- visibleOptions = state.visibleOptions,
3012
- value = state.value,
3013
- focused = state.focused,
3014
- id = state.id;
3015
- var inputEl = React.useRef();
3016
- var containerEl = React.useRef();
3017
- var onSelect_ = createOnSelect$1(state, dispatch, onSelect);
3018
- var selectedOption = options.find(function (o) {
3019
- return o.value === value;
3020
- });
3021
- return /*#__PURE__*/React__default['default'].createElement(DropdownContainer$1, {
3022
- className: className || 'lunatic-dropdown',
3023
- state: state,
3024
- ref: containerEl,
3025
- dispatch: dispatch,
3026
- options: options,
3027
- label: label,
3028
- labelPosition: labelPosition,
3029
- mandatory: mandatory,
3030
- response: response,
3031
- onSelect: onSelect_,
3032
- value: valueFromProps,
3033
- zIndex: zIndex,
3034
- management: management
3035
- }, /*#__PURE__*/React__default['default'].createElement("div", {
3036
- className: classnames('lunatic-dropdown-input', {
3037
- focused: focused,
3038
- disabled: disabled
3039
- })
3040
- }, /*#__PURE__*/React__default['default'].createElement("input", {
3041
- type: "text",
3042
- ref: inputEl,
3043
- value: value || '',
3044
- disabled: disabled,
3045
- placeholder: placeholder,
3046
- autoComplete: "list",
3047
- autoCorrect: "off",
3048
- autoCapitalize: "off",
3049
- spellCheck: "false",
3050
- tabIndex: "-1",
3051
- onChange: onChangeCallback(state, dispatch)
3052
- })), /*#__PURE__*/React__default['default'].createElement(Icone, {
3053
- prefix: prefix,
3054
- visible: visible,
3055
- disabled: disabled,
3056
- onDelete: function onDelete(e) {
3057
- e.stopPropagation();
3058
- inputEl.current.value = '';
3059
- dispatch(resetSelection());
3060
- onSelect_({
3061
- value: null
3062
- });
3063
- },
3064
- onSwitch: function onSwitch(e) {
3065
- e.stopPropagation();
3066
- e.preventDefault();
3067
-
3068
- if (visible) {
3069
- dispatch(hidePanel());
3070
- } else {
3071
- dispatch(showPanel());
3072
- containerEl.current.focus();
3073
- }
3074
- }
3075
- }), /*#__PURE__*/React__default['default'].createElement("div", {
3076
- tabIndex: "-1",
3077
- className: classnames('lunatic-transition', {
3078
- visible: isDisplay$1(state),
3079
- 'width-auto': widthAuto
3080
- })
3081
- }, /*#__PURE__*/React__default['default'].createElement(Panel, {
3082
- idDropdown: id,
3083
- options: visibleOptions,
3084
- display: isDisplay$1(state) && !disabled,
3085
- prefix: prefix,
3086
- activeIndex: activeIndex,
3087
- optionComponent: Option$1,
3088
- selectedOption: selectedOption,
3089
- onSelect: onSelect_,
3090
- handleActive: function handleActive(index) {
3091
- return dispatch(setActiveOption(index));
3092
- }
3093
- })));
3094
- }
3095
-
3096
- Dropdown$1.propTypes = {
3097
- widthAuto: PropTypes__default['default'].bool,
3098
- zIndex: PropTypes__default['default'].number,
3099
- disabled: PropTypes__default['default'].bool,
3100
- focused: PropTypes__default['default'].bool,
3101
- className: PropTypes__default['default'].string,
3102
- id: PropTypes__default['default'].string,
3103
- options: PropTypes__default['default'].array.isRequired,
3104
- onSelect: PropTypes__default['default'].func,
3105
- placeholder: PropTypes__default['default'].string,
3106
- value: PropTypes__default['default'].oneOfType([PropTypes__default['default'].string, PropTypes__default['default'].number, PropTypes__default['default'].bool])
3107
- };
3108
- Dropdown$1.defaultProps = {
3109
- options: [],
3110
- zIndex: 0,
3111
- onSelect: function onSelect() {
3112
- return null;
3113
- },
3114
- placeholder: 'Search...',
3115
- disabled: false,
3116
- focused: false,
3117
- widthAuto: false
3118
- };
3119
-
3120
- var childrenToOption$1 = (function () {
3121
- var children = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
3122
- return (Array.isArray(children) ? children : [children]).map(function (child) {
3123
- var value = child.props.value;
3124
- var label = child.props.children;
3125
-
3126
- if (label === undefined || value === undefined) {
3127
- throw new Error("Ooops");
3128
- }
3129
-
3130
- return {
3131
- label: label,
3132
- value: value
3133
- };
3134
- });
3135
14
  });
3136
15
 
3137
- var createDropDown = function createDropDown(Component) {
3138
- return function (_ref) {
3139
- var children = _ref.children,
3140
- options = _ref.options,
3141
- props = _objectWithoutProperties(_ref, ["children", "options"]);
3142
-
3143
- var o = options || childrenToOption$1(children);
3144
- return /*#__PURE__*/React__default['default'].createElement(Component, _extends({
3145
- options: o
3146
- }, props));
3147
- };
3148
- };
3149
-
3150
- var DropdownEdit = createDropDown(Dropdown$1);
3151
-
3152
- var css_248z$6 = "* {\n box-sizing: border-box;\n}\n\n.mandatory:after {\n content: \" *\";\n color: red;\n}\n\n.horizontal-options {\n display: inline-block;\n margin-right: 2em;\n}\n\nlabel,\n.lunatic-dropdown-label {\n margin-bottom: 0.5em;\n}\n\n.label-top {\n display: flex;\n flex-direction: column;\n}\n\n.label-bottom {\n display: flex;\n flex-direction: column-reverse;\n}\n\n.label-right {\n justify-content: flex-end;\n display: flex;\n flex-direction: row-reverse;\n align-items: baseline;\n}\n.label-right :first-child {\n margin-right: 1rem;\n}\n\n.label-left {\n display: flex;\n flex-direction: row;\n align-items: baseline;\n}\n.label-left :first-child {\n margin-right: 1rem;\n}\n\n.field-container {\n display: flex;\n}\n\n.tooltip {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n\n.field-with-tooltip {\n width: calc(100% - 25px);\n position: relative;\n}\n\n.field {\n width: 100%;\n position: relative;\n}\n\n.lunatic-dropdown {\n display: block;\n}\n.lunatic-dropdown:focus {\n outline: none;\n}\n.lunatic-dropdown.label-left {\n display: flex;\n flex-direction: row;\n}\n.lunatic-dropdown.label-right {\n display: flex;\n flex-direction: row-reverse;\n}\n.lunatic-dropdown.label-top {\n display: flex;\n flex-direction: column;\n}\n.lunatic-dropdown.label-bottom {\n display: flex;\n flex-direction: column-reverse;\n}\n.lunatic-dropdown .lunatic-dropdown-container {\n position: relative;\n height: 2em;\n width: 100%;\n}\n.lunatic-dropdown .lunatic-dropdown-container:focus {\n outline: none;\n}\n.lunatic-dropdown .lunatic-dropdown-container .lunatic-dropdown-content .lunatic-dropdown-input {\n display: block;\n background-color: snow;\n width: 100%;\n border: none;\n height: 2em;\n border-radius: 0px 0px;\n box-shadow: 0em 0em 0.1em 0.1em #e80a4d;\n}\n.lunatic-dropdown .lunatic-dropdown-container .lunatic-dropdown-content .lunatic-dropdown-input.focused {\n box-shadow: 0 0 0 0.2em #e80a4d;\n}\n.lunatic-dropdown .lunatic-dropdown-container .lunatic-dropdown-content .lunatic-dropdown-input.disabled {\n background-color: #ebebe4;\n}\n.lunatic-dropdown .lunatic-dropdown-container .lunatic-dropdown-content .lunatic-dropdown-input input {\n margin: 0px 25px 0px 12px;\n width: calc(100% - 37px);\n background-color: transparent;\n height: 2em;\n border: none;\n outline: none;\n text-align: left;\n}\n.lunatic-dropdown .lunatic-dropdown-container .lunatic-dropdown-content .lunatic-icone {\n cursor: pointer;\n position: absolute;\n right: 10px;\n top: 7px;\n}\n.lunatic-dropdown .lunatic-dropdown-container .lunatic-dropdown-content .lunatic-icone:focus {\n outline: none;\n}\n.lunatic-dropdown .lunatic-dropdown-container .lunatic-dropdown-content .lunatic-transition {\n visibility: hidden;\n overflow-y: hidden;\n opacity: 0;\n /** options style */\n}\n.lunatic-dropdown .lunatic-dropdown-container .lunatic-dropdown-content .lunatic-transition.width-auto {\n display: inline-block;\n}\n.lunatic-dropdown .lunatic-dropdown-container .lunatic-dropdown-content .lunatic-transition:focus {\n outline: none;\n}\n.lunatic-dropdown .lunatic-dropdown-container .lunatic-dropdown-content .lunatic-transition.visible {\n visibility: visible;\n opacity: 1;\n transition: opacity 0.5s ease-in;\n}\n.lunatic-dropdown .lunatic-dropdown-container .lunatic-dropdown-content .lunatic-transition .lunatic-dropdown-panel {\n padding: 0;\n margin: 0;\n margin-top: 12px;\n list-style: none;\n background-color: #e07898;\n max-height: 200px;\n overflow-y: auto;\n /* width */\n /* Track */\n /* Handle */\n /* Handle on hover */\n}\n.lunatic-dropdown .lunatic-dropdown-container .lunatic-dropdown-content .lunatic-transition .lunatic-dropdown-panel:focus {\n outline: none;\n}\n.lunatic-dropdown .lunatic-dropdown-container .lunatic-dropdown-content .lunatic-transition .lunatic-dropdown-panel::-webkit-scrollbar {\n width: 8px;\n}\n.lunatic-dropdown .lunatic-dropdown-container .lunatic-dropdown-content .lunatic-transition .lunatic-dropdown-panel::-webkit-scrollbar-track {\n background-color: #ffe9e8;\n border-radius: 4px 4px;\n}\n.lunatic-dropdown .lunatic-dropdown-container .lunatic-dropdown-content .lunatic-transition .lunatic-dropdown-panel::-webkit-scrollbar-thumb {\n background: #e80a4d;\n border-radius: 4px 4px;\n}\n.lunatic-dropdown .lunatic-dropdown-container .lunatic-dropdown-content .lunatic-transition .lunatic-dropdown-panel::-webkit-scrollbar-thumb:hover {\n background: Indigo;\n}\n.lunatic-dropdown .lunatic-dropdown-container .lunatic-dropdown-content .lunatic-transition .lunatic-dropdown-option {\n cursor: pointer;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n color: #ebebe4;\n padding: 5px 5px;\n display: block;\n border-bottom: solid 1px #ffe9e8;\n}\n.lunatic-dropdown .lunatic-dropdown-container .lunatic-dropdown-content .lunatic-transition .lunatic-dropdown-option.lunatic-dropdown-option-active {\n color: #ebebe4;\n background-color: #e80a4d;\n}\n.lunatic-dropdown .lunatic-dropdown-container .lunatic-dropdown-content .lunatic-transition .lunatic-dropdown-option.lunatic-dropdown-option-active .lunatic-prefix {\n color: Indigo;\n font-weight: bold;\n}\n.lunatic-dropdown .lunatic-dropdown-container .lunatic-dropdown-content .lunatic-transition .lunatic-dropdown-option.lunatic-dropdown-option-selected {\n color: #ebebe4;\n background-color: Indigo;\n}\n.lunatic-dropdown .lunatic-dropdown-container .lunatic-dropdown-content .lunatic-transition .lunatic-dropdown-option.lunatic-dropdown-option-selected .lunatic-prefix {\n color: #ebebe4;\n font-weight: bold;\n}\n.lunatic-dropdown .lunatic-dropdown-container .lunatic-dropdown-content .lunatic-transition .lunatic-dropdown-option.lunatic-dropdown-option-selected.lunatic-dropdown-option-active {\n color: #ebebe4;\n background-color: #e07898;\n}\n.lunatic-dropdown .lunatic-dropdown-container .lunatic-dropdown-content .lunatic-transition .lunatic-dropdown-option .lunatic-prefix {\n color: Indigo;\n font-weight: bold;\n}";
3153
- styleInject(css_248z$6);
3154
-
3155
- var Dropdown$2 = function Dropdown(_ref) {
3156
- var id = _ref.id,
3157
- label = _ref.label,
3158
- preferences = _ref.preferences,
3159
- response = _ref.response,
3160
- handleChange = _ref.handleChange,
3161
- options = _ref.options,
3162
- writable = _ref.writable,
3163
- declarations = _ref.declarations,
3164
- features = _ref.features,
3165
- bindings = _ref.bindings,
3166
- management = _ref.management,
3167
- freezeOptions = _ref.freezeOptions,
3168
- rest = _objectWithoutProperties(_ref, ["id", "label", "preferences", "response", "handleChange", "options", "writable", "declarations", "features", "bindings", "management", "freezeOptions"]);
3169
-
3170
- var _useState = React.useState(options),
3171
- _useState2 = _slicedToArray(_useState, 2),
3172
- opts = _useState2[0],
3173
- setOpts = _useState2[1];
3174
-
3175
- React.useEffect(function () {
3176
- if (!freezeOptions) {
3177
- var featOptions = options.map(function (_ref2) {
3178
- var labelOption = _ref2.label,
3179
- restOpts = _objectWithoutProperties(_ref2, ["label"]);
3180
-
3181
- return _objectSpread2({
3182
- label: interpret(features)(bindings)(labelOption)
3183
- }, restOpts);
3184
- });
3185
- setOpts(featOptions);
3186
- }
3187
- }, [freezeOptions, features, bindings, options]);
3188
- var interpretedLabel = interpret(features)(bindings)(label);
3189
- var value = getResponseByPreference(preferences)(response);
3190
-
3191
- var onSelect = function onSelect(e) {
3192
- return handleChange(_defineProperty({}, getResponseName(response), e.value));
3193
- };
3194
-
3195
- return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(Declarations, {
3196
- id: id,
3197
- type: BEFORE_QUESTION_TEXT,
3198
- declarations: declarations,
3199
- features: features,
3200
- bindings: bindings
3201
- }), /*#__PURE__*/React__default['default'].createElement(Declarations, {
3202
- id: id,
3203
- type: AFTER_QUESTION_TEXT,
3204
- declarations: declarations,
3205
- features: features,
3206
- bindings: bindings
3207
- }), writable ? /*#__PURE__*/React__default['default'].createElement(DropdownEdit, _extends({}, rest, {
3208
- id: id,
3209
- value: value,
3210
- response: response,
3211
- label: interpretedLabel,
3212
- options: opts,
3213
- onSelect: onSelect,
3214
- management: management
3215
- })) : /*#__PURE__*/React__default['default'].createElement(DropdownSimple, _extends({}, rest, {
3216
- id: id,
3217
- value: value,
3218
- response: response,
3219
- label: interpretedLabel,
3220
- options: opts,
3221
- onSelect: onSelect,
3222
- management: management
3223
- })), /*#__PURE__*/React__default['default'].createElement(Declarations, {
3224
- id: id,
3225
- type: DETACHABLE,
3226
- declarations: declarations,
3227
- features: features,
3228
- bindings: bindings
3229
- }));
3230
- };
3231
-
3232
- Dropdown$2.propTypes = {
3233
- disabled: PropTypes__default['default'].bool,
3234
- writable: PropTypes__default['default'].bool,
3235
- handleChange: PropTypes__default['default'].func,
3236
- label: PropTypes__default['default'].string,
3237
- className: PropTypes__default['default'].string,
3238
- zIndex: PropTypes__default['default'].number,
3239
- freezeOptions: PropTypes__default['default'].bool
3240
- };
3241
- Dropdown$2.defaultProps = {
3242
- writable: false,
3243
- handleChange: function handleChange() {
3244
- return null;
3245
- },
3246
- label: undefined,
3247
- className: undefined,
3248
- zIndex: 0,
3249
- disabled: false,
3250
- freezeOptions: false
3251
- };
3252
- var component$1 = /*#__PURE__*/React__default['default'].memo(Dropdown$2, areEqual);
3253
-
3254
- var css_248z$7 = "* {\n box-sizing: border-box;\n}\n\n.mandatory:after {\n content: \" *\";\n color: red;\n}\n\n.horizontal-options {\n display: inline-block;\n margin-right: 2em;\n}\n\nlabel,\n.lunatic-dropdown-label {\n margin-bottom: 0.5em;\n}\n\n.label-top {\n display: flex;\n flex-direction: column;\n}\n\n.label-bottom {\n display: flex;\n flex-direction: column-reverse;\n}\n\n.label-right {\n justify-content: flex-end;\n display: flex;\n flex-direction: row-reverse;\n align-items: baseline;\n}\n.label-right :first-child {\n margin-right: 1rem;\n}\n\n.label-left {\n display: flex;\n flex-direction: row;\n align-items: baseline;\n}\n.label-left :first-child {\n margin-right: 1rem;\n}\n\n.field-container {\n display: flex;\n}\n\n.tooltip {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n\n.field-with-tooltip {\n width: calc(100% - 25px);\n position: relative;\n}\n\n.field {\n width: 100%;\n position: relative;\n}\n\n.input-lunatic {\n box-sizing: border-box;\n border: solid 2px #e80a4d;\n border-radius: 10px;\n padding: 5px;\n}\n.input-lunatic:focus {\n outline: none;\n box-shadow: 0 0 10px #e80a4d;\n}\n.input-lunatic:read-only {\n background-color: #ebebe4;\n}\n\n.warning {\n box-sizing: border-box;\n border: solid 2px #f50c0c;\n background-color: #f50c0c;\n}\n\n.lunatic-input-number-errors .error {\n color: #f50c0c;\n}";
3255
- styleInject(css_248z$7);
3256
-
3257
- var Input = function Input(props) {
3258
- return /*#__PURE__*/React__default['default'].createElement(InputDeclarationsWrapper, _extends({
3259
- type: "text",
3260
- roleType: "input"
3261
- }, props));
3262
- };
3263
-
3264
- var input = /*#__PURE__*/React__default['default'].memo(Input, areEqual);
3265
-
3266
- var InputNumber = function InputNumber(_ref) {
3267
- var id = _ref.id,
3268
- label = _ref.label,
3269
- preferences = _ref.preferences,
3270
- response = _ref.response,
3271
- min = _ref.min,
3272
- max = _ref.max,
3273
- decimals = _ref.decimals,
3274
- placeholder = _ref.placeholder,
3275
- handleChange = _ref.handleChange,
3276
- readOnly = _ref.readOnly,
3277
- disabled = _ref.disabled,
3278
- autoComplete = _ref.autoComplete,
3279
- focused = _ref.focused,
3280
- style = _ref.style,
3281
- unit = _ref.unit,
3282
- labelPosition = _ref.labelPosition,
3283
- unitPosition = _ref.unitPosition,
3284
- declarations = _ref.declarations,
3285
- features = _ref.features,
3286
- bindings = _ref.bindings,
3287
- management = _ref.management,
3288
- mandatory = _ref.mandatory,
3289
- validators = _ref.validators;
3290
- var inputRef = React.useRef();
3291
-
3292
- var _useState = React.useState(function () {
3293
- return getResponseByPreference(preferences)(response);
3294
- }),
3295
- _useState2 = _slicedToArray(_useState, 2),
3296
- value = _useState2[0],
3297
- setValue = _useState2[1];
3298
-
3299
- var _useState3 = React.useState([minMaxValidator({
3300
- min: min,
3301
- max: max
3302
- })].concat(_toConsumableArray(validators)).map(function (v) {
3303
- return v(value);
3304
- }).filter(function (m) {
3305
- return m !== undefined;
3306
- })),
3307
- _useState4 = _slicedToArray(_useState3, 2),
3308
- messagesError = _useState4[0],
3309
- setMessagesError = _useState4[1]; // Assume we only want to handle enable external updates
3310
- // Don't need to check all value changes
3311
-
3312
-
3313
- React.useEffect(function () {
3314
- if (getResponseByPreference(preferences)(response) !== value) setValue(getResponseByPreference(preferences)(response)); // eslint-disable-next-line react-hooks/exhaustive-deps
3315
- }, [response, preferences]);
3316
-
3317
- var handleChangeOnBlur = function handleChangeOnBlur() {
3318
- handleChange(_defineProperty({}, getResponseName(response), value));
3319
-
3320
- if (management && value === null) {
3321
- setValue(getResponseByPreference(preferences)(buildLocalResponse(response, value)));
3322
- }
3323
- };
3324
-
3325
- var validate = function validate(v) {
3326
- setMessagesError([minMaxValidator({
3327
- min: min,
3328
- max: max
3329
- })].concat(_toConsumableArray(validators)).map(function (f) {
3330
- return f(v);
3331
- }).filter(function (m) {
3332
- return m !== undefined;
3333
- }));
3334
- };
3335
-
3336
- React.useEffect(function () {
3337
- if (focused) inputRef.current.focus();
3338
- }, [focused]);
3339
- React.useEffect(function () {
3340
- setMessagesError([minMaxValidator({
3341
- min: min,
3342
- max: max
3343
- })].concat(_toConsumableArray(validators)).map(function (v) {
3344
- return v(value);
3345
- }).filter(function (m) {
3346
- return m !== undefined;
3347
- }));
3348
- }, [value, min, max, validators]);
3349
- return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(Declarations, {
3350
- id: id,
3351
- type: BEFORE_QUESTION_TEXT,
3352
- declarations: declarations,
3353
- features: features,
3354
- bindings: bindings
3355
- }), /*#__PURE__*/React__default['default'].createElement("div", {
3356
- className: getLabelPositionClass(labelPosition)
3357
- }, /*#__PURE__*/React__default['default'].createElement("label", {
3358
- htmlFor: "input-".concat(id),
3359
- id: "input-label-".concat(id),
3360
- className: "".concat(mandatory ? 'mandatory' : '')
3361
- }, interpret(features)(bindings)(label), ' ', /*#__PURE__*/React__default['default'].createElement("span", {
3362
- className: "unit"
3363
- }, unit && ['DEFAULT', 'BEFORE'].includes(unitPosition) ? "(".concat(unit, ")") : '')), /*#__PURE__*/React__default['default'].createElement(Declarations, {
3364
- id: id,
3365
- type: AFTER_QUESTION_TEXT,
3366
- declarations: declarations,
3367
- features: features,
3368
- bindings: bindings
3369
- }), /*#__PURE__*/React__default['default'].createElement("div", {
3370
- className: "field-container"
3371
- }, /*#__PURE__*/React__default['default'].createElement("div", {
3372
- className: "".concat(management ? 'field-with-tooltip' : 'field')
3373
- }, /*#__PURE__*/React__default['default'].createElement("input", {
3374
- type: "number",
3375
- id: "input-".concat(id),
3376
- ref: inputRef,
3377
- "aria-labelledby": "input-label-".concat(id),
3378
- value: value || '',
3379
- min: min,
3380
- max: max,
3381
- step: decimals ? "".concat(Math.pow(10, -decimals)) : '0',
3382
- placeholder: placeholder,
3383
- className: "input-lunatic ".concat(messagesError.length > 0 ? 'warning' : ''),
3384
- style: buildStyleObject(style),
3385
- readOnly: readOnly,
3386
- disabled: disabled,
3387
- autoComplete: autoComplete ? 'on' : 'off',
3388
- required: mandatory,
3389
- "aria-required": mandatory,
3390
- onChange: function onChange(_ref2) {
3391
- var v = _ref2.target.value;
3392
- validate(v);
3393
- setValue(v === '' ? null : v);
3394
- },
3395
- onBlur: handleChangeOnBlur
3396
- }), unitPosition === 'AFTER' && /*#__PURE__*/React__default['default'].createElement("span", {
3397
- className: "unit"
3398
- }, unit)), management && /*#__PURE__*/React__default['default'].createElement("div", {
3399
- className: "tooltip"
3400
- }, /*#__PURE__*/React__default['default'].createElement(TooltipResponse, {
3401
- id: id,
3402
- response: buildLocalResponse(response, value)
3403
- }))), /*#__PURE__*/React__default['default'].createElement("div", {
3404
- className: "lunatic-input-number-errors"
3405
- }, messagesError.map(function (m, i) {
3406
- return /*#__PURE__*/React__default['default'].createElement("div", {
3407
- key: i,
3408
- className: "error"
3409
- }, m);
3410
- }))), /*#__PURE__*/React__default['default'].createElement(Declarations, {
3411
- id: id,
3412
- type: DETACHABLE,
3413
- declarations: declarations,
3414
- features: features,
3415
- bindings: bindings
3416
- }));
3417
- };
3418
-
3419
- var minMaxValidator = function minMaxValidator(_ref3) {
3420
- var min = _ref3.min,
3421
- max = _ref3.max;
3422
- return function (value) {
3423
- if (!value) {
3424
- return undefined;
3425
- }
3426
-
3427
- var valueNumber = Number(value);
3428
- if (!min && isDef(max) && valueNumber > max) return /*#__PURE__*/React__default['default'].createElement("span", null, "La valeur doit \xEAtre inf\xE9rieure \xE0 ".concat(max));else if (isDef(min) && !max && valueNumber < min) return /*#__PURE__*/React__default['default'].createElement("span", null, "La valeur doit \xEAtre sup\xE9rieure \xE0 ".concat(min));else if (isDef(min) && isDef(max) && (valueNumber < min || valueNumber > max)) return /*#__PURE__*/React__default['default'].createElement("span", null, "La valeur doit \xEAtre comprise entre ".concat(min, " et ").concat(max));
3429
- return undefined;
3430
- };
3431
- };
3432
-
3433
- var isDef = function isDef(number) {
3434
- return number || number === 0;
3435
- };
3436
-
3437
- InputNumber.defaultProps = {
3438
- label: '',
3439
- preferences: ['COLLECTED'],
3440
- response: {},
3441
- min: undefined,
3442
- max: undefined,
3443
- decimals: 0,
3444
- placeholder: '',
3445
- readOnly: false,
3446
- disabled: false,
3447
- autoComplete: false,
3448
- focused: false,
3449
- declarations: [],
3450
- features: [],
3451
- bindings: {},
3452
- labelPosition: 'DEFAULT',
3453
- unitPosition: 'DEFAULT',
3454
- mandatory: false,
3455
- management: false,
3456
- style: {},
3457
- validators: []
3458
- };
3459
- InputNumber.propTypes = {
3460
- id: PropTypes__default['default'].string.isRequired,
3461
- label: PropTypes__default['default'].string,
3462
- preferences: PropTypes__default['default'].arrayOf(valueType),
3463
- response: response,
3464
- min: PropTypes__default['default'].number,
3465
- max: PropTypes__default['default'].number,
3466
- decimals: PropTypes__default['default'].number,
3467
- placeholder: PropTypes__default['default'].string,
3468
- handleChange: PropTypes__default['default'].func.isRequired,
3469
- readOnly: PropTypes__default['default'].bool,
3470
- disabled: PropTypes__default['default'].bool,
3471
- autoComplete: PropTypes__default['default'].bool,
3472
- focused: PropTypes__default['default'].bool,
3473
- declarations: declarations,
3474
- features: PropTypes__default['default'].arrayOf(PropTypes__default['default'].string),
3475
- bindings: PropTypes__default['default'].object,
3476
- labelPosition: PropTypes__default['default'].oneOf(['DEFAULT', 'TOP', 'BOTTOM', 'LEFT', 'RIGHT']),
3477
- unitPosition: PropTypes__default['default'].oneOf(['DEFAULT', 'BEFORE', 'AFTER']),
3478
- mandatory: PropTypes__default['default'].bool,
3479
- management: PropTypes__default['default'].bool,
3480
- style: PropTypes__default['default'].object,
3481
- validators: PropTypes__default['default'].arrayOf(PropTypes__default['default'].func)
3482
- };
3483
- var inputNumber = /*#__PURE__*/React__default['default'].memo(InputNumber, areEqual);
3484
-
3485
- var FilterDescription = function FilterDescription(_ref) {
3486
- var id = _ref.id,
3487
- label = _ref.label,
3488
- filterDescription = _ref.filterDescription,
3489
- features = _ref.features,
3490
- bindings = _ref.bindings,
3491
- style = _ref.style;
3492
- return filterDescription ? /*#__PURE__*/React__default['default'].createElement("div", {
3493
- id: "filter-description-".concat(id),
3494
- "aria-label": "filter-description",
3495
- className: "filter-description-lunatic",
3496
- style: buildStyleObject(style)
3497
- }, interpret(features)(bindings)(label)) : null;
3498
- };
3499
-
3500
- FilterDescription.defaultProps = {
3501
- filterDescription: false,
3502
- features: [],
3503
- bindings: {},
3504
- style: {}
3505
- };
3506
- FilterDescription.propTypes = {
3507
- id: PropTypes__default['default'].string.isRequired,
3508
- label: PropTypes__default['default'].string.isRequired,
3509
- filterDescription: PropTypes__default['default'].bool,
3510
- features: PropTypes__default['default'].arrayOf(PropTypes__default['default'].string),
3511
- bindings: PropTypes__default['default'].object,
3512
- style: PropTypes__default['default'].object
3513
- };
3514
-
3515
- var css_248z$8 = "* {\n box-sizing: border-box;\n}\n\n.mandatory:after {\n content: \" *\";\n color: red;\n}\n\n.horizontal-options {\n display: inline-block;\n margin-right: 2em;\n}\n\nlabel,\n.lunatic-dropdown-label {\n margin-bottom: 0.5em;\n}\n\n.label-top {\n display: flex;\n flex-direction: column;\n}\n\n.label-bottom {\n display: flex;\n flex-direction: column-reverse;\n}\n\n.label-right {\n justify-content: flex-end;\n display: flex;\n flex-direction: row-reverse;\n align-items: baseline;\n}\n.label-right :first-child {\n margin-right: 1rem;\n}\n\n.label-left {\n display: flex;\n flex-direction: row;\n align-items: baseline;\n}\n.label-left :first-child {\n margin-right: 1rem;\n}\n\n.field-container {\n display: flex;\n}\n\n.tooltip {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n\n.field-with-tooltip {\n width: calc(100% - 25px);\n position: relative;\n}\n\n.field {\n width: 100%;\n position: relative;\n}\n\n.progress-lunatic {\n height: 30px;\n position: relative;\n background: #d3d3d3;\n -moz-border-radius: 20px;\n -webkit-border-radius: 20px;\n border-radius: 20px;\n padding: 5px;\n box-shadow: inset 0 -1px 1px rgba(255, 255, 255, 0.3);\n text-align: center;\n font-weight: bold;\n}\n\n.progress-lunatic > span {\n display: block;\n height: 100%;\n border-radius: 20px;\n background-color: #e80a4d;\n opacity: 0.6;\n box-shadow: inset 0 2px 9px rgba(255, 255, 255, 0.3), inset 0 -2px 6px rgba(0, 0, 0, 0.4);\n position: relative;\n top: -18px;\n overflow: hidden;\n}\n\n.progress-lunatic > span:after {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%, transparent);\n z-index: 1;\n background-size: 50px 50px;\n animation: move 2s linear infinite;\n border-top-right-radius: 8px;\n border-bottom-right-radius: 8px;\n border-top-left-radius: 20px;\n border-bottom-left-radius: 20px;\n overflow: hidden;\n}";
3516
- styleInject(css_248z$8);
3517
-
3518
- var ProgressBar = function ProgressBar(_ref) {
3519
- var id = _ref.id,
3520
- value = _ref.value,
3521
- style = _ref.style;
3522
- var controledValue = value;
3523
- if (value < 0) controledValue = 0;
3524
- if (value > 100) controledValue = 100;
3525
- return /*#__PURE__*/React__default['default'].createElement("div", {
3526
- id: "progress-".concat(id),
3527
- className: "progress-lunatic",
3528
- style: buildStyleObject(style)
3529
- }, "".concat(controledValue.toFixed(0), " %"), /*#__PURE__*/React__default['default'].createElement("span", {
3530
- style: {
3531
- width: "".concat(controledValue, "%")
3532
- }
3533
- }));
3534
- };
3535
-
3536
- ProgressBar.propTypes = {
3537
- id: PropTypes__default['default'].string.isRequired,
3538
- value: PropTypes__default['default'].number.isRequired,
3539
- style: PropTypes__default['default'].object
3540
- };
3541
-
3542
- var css_248z$9 = "* {\n box-sizing: border-box;\n}\n\n.mandatory:after {\n content: \" *\";\n color: red;\n}\n\n.horizontal-options {\n display: inline-block;\n margin-right: 2em;\n}\n\nlabel,\n.lunatic-dropdown-label {\n margin-bottom: 0.5em;\n}\n\n.label-top {\n display: flex;\n flex-direction: column;\n}\n\n.label-bottom {\n display: flex;\n flex-direction: column-reverse;\n}\n\n.label-right {\n justify-content: flex-end;\n display: flex;\n flex-direction: row-reverse;\n align-items: baseline;\n}\n.label-right :first-child {\n margin-right: 1rem;\n}\n\n.label-left {\n display: flex;\n flex-direction: row;\n align-items: baseline;\n}\n.label-left :first-child {\n margin-right: 1rem;\n}\n\n.field-container {\n display: flex;\n}\n\n.tooltip {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n\n.field-with-tooltip {\n width: calc(100% - 25px);\n position: relative;\n}\n\n.field {\n width: 100%;\n position: relative;\n}\n\n.radio-group {\n border: 0.1em solid #e80a4d;\n}\n\n.radio-lunatic {\n margin: 0;\n margin-right: 1em;\n margin-left: 1em;\n margin-top: 0.5em;\n}\n.radio-lunatic:focus {\n outline: none;\n box-shadow: 0 0 0.3em 0.3em #e80a4d;\n}\n.radio-lunatic:checked + label {\n border: 0.1em solid #e80a4d;\n padding: 0.3em;\n}\n\n.radio-modality {\n margin-top: 1em;\n}";
3543
- styleInject(css_248z$9);
3544
-
3545
- var Radio = function Radio(props) {
3546
- return /*#__PURE__*/React__default['default'].createElement(ListDeclarationsWrapper, _extends({
3547
- type: "radio"
3548
- }, props));
3549
- };
3550
-
3551
- var component$2 = /*#__PURE__*/React__default['default'].memo(Radio, areEqual);
3552
-
3553
- var buildLoopComponents = function buildLoopComponents(iterations) {
3554
- return function (components) {
3555
- var toFlat = _toConsumableArray(Array(iterations).keys()).map(function (rowNumber) {
3556
- return buildFlatten(rowNumber)(components).map(function (c) {
3557
- return _objectSpread2(_objectSpread2({}, c), {}, {
3558
- rowNumber: rowNumber
3559
- });
3560
- });
3561
- });
3562
-
3563
- return toFlat.flat();
3564
- };
3565
- };
3566
-
3567
- var buildFlatten = function buildFlatten(i) {
3568
- return function (parentComponents) {
3569
- return parentComponents.map(function (component) {
3570
- var response = component.response,
3571
- responses = component.responses,
3572
- components = component.components;
3573
- if (response) return buildFlattenResponse(i)(component);else if (responses) return _objectSpread2(_objectSpread2({}, component), {}, {
3574
- responses: responses.map(function (r) {
3575
- return buildFlattenResponse(i)(r);
3576
- })
3577
- });else if (components) return _objectSpread2(_objectSpread2({}, component), {}, {
3578
- components: buildFlatten(i)(components)
3579
- });else return component;
3580
- });
3581
- };
3582
- };
3583
-
3584
- var buildFlattenResponse = function buildFlattenResponse(i) {
3585
- return function (component) {
3586
- var response = component.response,
3587
- other = _objectWithoutProperties(component, ["response"]);
3588
-
3589
- var name = response.name,
3590
- values = response.values;
3591
- var newValues = Object.entries(values).reduce(function (acc, _ref) {
3592
- var _ref2 = _slicedToArray(_ref, 2),
3593
- key = _ref2[0],
3594
- value = _ref2[1];
3595
-
3596
- return _objectSpread2(_objectSpread2({}, acc), {}, _defineProperty({}, key, value ? value[i] : null));
3597
- }, {});
3598
- return _objectSpread2(_objectSpread2({}, other), {}, {
3599
- response: {
3600
- name: name,
3601
- values: newValues
3602
- }
3603
- });
3604
- };
3605
- };
3606
-
3607
- var css_248z$a = "* {\n box-sizing: border-box;\n}\n\n.mandatory:after {\n content: \" *\";\n color: red;\n}\n\n.horizontal-options {\n display: inline-block;\n margin-right: 2em;\n}\n\nlabel,\n.lunatic-dropdown-label {\n margin-bottom: 0.5em;\n}\n\n.label-top {\n display: flex;\n flex-direction: column;\n}\n\n.label-bottom {\n display: flex;\n flex-direction: column-reverse;\n}\n\n.label-right {\n justify-content: flex-end;\n display: flex;\n flex-direction: row-reverse;\n align-items: baseline;\n}\n.label-right :first-child {\n margin-right: 1rem;\n}\n\n.label-left {\n display: flex;\n flex-direction: row;\n align-items: baseline;\n}\n.label-left :first-child {\n margin-right: 1rem;\n}\n\n.field-container {\n display: flex;\n}\n\n.tooltip {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n\n.field-with-tooltip {\n width: calc(100% - 25px);\n position: relative;\n}\n\n.field {\n width: 100%;\n position: relative;\n}\n\n.lunatic-loop {\n margin-top: 1em;\n margin-bottom: 1em;\n border: solid 2px #e80a4d;\n padding: 2em;\n}\n.lunatic-loop .loop-label {\n text-align: center;\n font-weight: bold;\n font-size: 2em;\n}\n.lunatic-loop .loop-component {\n margin-top: 0.4em;\n margin-bottom: 0.4em;\n}";
3608
- styleInject(css_248z$a);
16
+ var _components = require("./components");
3609
17
 
3610
- var Loop = function Loop(_ref) {
3611
- var id = _ref.id,
3612
- label = _ref.label,
3613
- iterations = _ref.iterations,
3614
- components = _ref.components,
3615
- bindings = _ref.bindings,
3616
- handleChange = _ref.handleChange,
3617
- loopDependencies = _ref.loopDependencies,
3618
- orchetratorProps = _objectWithoutProperties(_ref, ["id", "label", "iterations", "components", "bindings", "handleChange", "loopDependencies"]);
3619
-
3620
- var _useState = React.useState({}),
3621
- _useState2 = _slicedToArray(_useState, 2),
3622
- todo = _useState2[0],
3623
- setTodo = _useState2[1];
3624
-
3625
- var vectorialBindings = buildVectorialBindings(bindings);
3626
- var features = orchetratorProps.features;
3627
- var iterationNb = interpret(features)(vectorialBindings)(iterations);
3628
- var involvedVariables = getInvolvedVariables(components);
3629
- /**
3630
- * Handle the increase in the number of iterations
3631
- * Assume we only want to update if iterationNb changes
3632
- */
3633
-
3634
- React.useEffect(function () {
3635
- var toUpdate = involvedVariables.reduce(function (acc, _ref2) {
3636
- var iv = _ref2.name,
3637
- depth = _ref2.depth;
3638
- if (bindings[iv] && iterationNb > bindings[iv].length) return _objectSpread2(_objectSpread2({}, acc), {}, _defineProperty({}, iv, [].concat(_toConsumableArray(bindings[iv]), _toConsumableArray(new Array(iterationNb - bindings[iv].length).fill(buildEmptyValue(depth))))));
3639
- return acc;
3640
- }, {});
3641
- if (Object.keys(toUpdate).length !== 0) handleChange(toUpdate); // eslint-disable-next-line react-hooks/exhaustive-deps
3642
- }, [iterationNb]);
3643
- React.useEffect(function () {
3644
- if (Object.keys(todo).length !== 0) {
3645
- var up = todo.up,
3646
- rowNumber = todo.rowNumber;
3647
-
3648
- var _Object$entries$ = _slicedToArray(Object.entries(up)[0], 2),
3649
- key = _Object$entries$[0],
3650
- value = _Object$entries$[1];
3651
-
3652
- var previousValue = bindings[key];
3653
- var newValue = previousValue.map(function (v, i) {
3654
- return i === rowNumber ? value : v;
3655
- });
3656
- handleChange(_defineProperty({}, key, newValue));
3657
- setTodo({});
18
+ Object.keys(_components).forEach(function (key) {
19
+ if (key === "default" || key === "__esModule") return;
20
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
21
+ if (key in exports && exports[key] === _components[key]) return;
22
+ Object.defineProperty(exports, key, {
23
+ enumerable: true,
24
+ get: function get() {
25
+ return _components[key];
3658
26
  }
3659
- }, [bindings, todo, handleChange]);
3660
- var flattenComponents = buildLoopComponents(iterationNb)(components);
3661
- if (!displayLoop(loopDependencies)(bindings)) return null;
3662
- var loopComponents = flattenComponents.map(function (_ref3) {
3663
- var componentType = _ref3.componentType,
3664
- idC = _ref3.id,
3665
- rowNumber = _ref3.rowNumber,
3666
- conditionFilter = _ref3.conditionFilter,
3667
- rest = _objectWithoutProperties(_ref3, ["componentType", "id", "rowNumber", "conditionFilter"]);
3668
-
3669
- var loopBindings = buildBindingsForDeeperComponents(rowNumber)(bindings);
3670
- if (!displayLoopQuestion(loopDependencies)(loopBindings)) return null;
3671
- var Component = lunatic[componentType];
3672
- if (interpret(features)(loopBindings, true)(conditionFilter) !== 'normal') return null;
3673
- return /*#__PURE__*/React__default['default'].createElement("div", {
3674
- key: "".concat(idC, "-loop-").concat(rowNumber),
3675
- className: "loop-component"
3676
- }, /*#__PURE__*/React__default['default'].createElement(Component, _extends({}, orchetratorProps, rest, {
3677
- id: "".concat(idC, "-loop-").concat(rowNumber),
3678
- handleChange: function handleChange(up) {
3679
- return setTodo({
3680
- up: up,
3681
- rowNumber: rowNumber
3682
- });
3683
- },
3684
- bindings: loopBindings,
3685
- componentType: componentType
3686
- })));
3687
- });
3688
- return /*#__PURE__*/React__default['default'].createElement("div", {
3689
- id: "loop-".concat(id),
3690
- className: "lunatic-loop"
3691
- }, loopComponents);
3692
- };
3693
-
3694
- var Loop$1 = /*#__PURE__*/React__default['default'].memo(Loop, areEqual);
3695
-
3696
- var buildContentForLoopConstructor = function buildContentForLoopConstructor(_ref) {
3697
- var components = _ref.components,
3698
- headers = _ref.headers;
3699
- // Start hack to find interation number
3700
- // Refactor if we have to handle complex components (vector, matrix)
3701
- var iterations = components.find(function (c) {
3702
- return c.response;
3703
- }).response.values[COLLECTED].length || 1; // End
3704
-
3705
- var initialArray = _toConsumableArray(Array(iterations).keys());
3706
-
3707
- var uiComponents = components.map(function (comp) {
3708
- var response = comp.response,
3709
- other = _objectWithoutProperties(comp, ["response"]);
3710
-
3711
- if (!response) return initialArray.map(function () {
3712
- return comp;
3713
- }); // Handle reponses & cells components ?
3714
-
3715
- var name = response.name,
3716
- values = response.values;
3717
- return initialArray.map(function (rowNumber) {
3718
- var newValues = Object.entries(values).reduce(function (acc, _ref2) {
3719
- var _ref3 = _slicedToArray(_ref2, 2),
3720
- key = _ref3[0],
3721
- value = _ref3[1];
3722
-
3723
- return _objectSpread2(_objectSpread2({}, acc), {}, _defineProperty({}, key, value ? value[rowNumber] : null));
3724
- }, {});
3725
- return _objectSpread2(_objectSpread2({}, other), {}, {
3726
- response: {
3727
- name: name,
3728
- values: newValues
3729
- },
3730
- rowNumber: rowNumber
3731
- });
3732
- });
3733
- }, []);
3734
-
3735
- var transpose = function transpose(m) {
3736
- return m[0].map(function (_, i) {
3737
- return m.map(function (x) {
3738
- return x[i];
3739
- });
3740
- });
3741
- };
3742
-
3743
- var rows = transpose(uiComponents);
3744
- return headers ? [headers].concat(_toConsumableArray(rows)) : rows;
3745
- };
3746
-
3747
- var BodyComponent = function BodyComponent(_ref) {
3748
- var componentType = _ref.componentType,
3749
- mainId = _ref.mainId,
3750
- headers = _ref.headers,
3751
- components = _ref.components,
3752
- bindings = _ref.bindings,
3753
- width = _ref.width,
3754
- preferences = _ref.preferences,
3755
- positioning = _ref.positioning,
3756
- management = _ref.management,
3757
- features = _ref.features,
3758
- setTodo = _ref.setTodo;
3759
- var uiComponents = buildContentForLoopConstructor({
3760
- components: components,
3761
- headers: headers
3762
27
  });
3763
- if (componentType === 'RosterForLoop') return /*#__PURE__*/React__default['default'].createElement("table", {
3764
- id: "table-".concat(mainId),
3765
- className: "table-lunatic"
3766
- }, /*#__PURE__*/React__default['default'].createElement("tbody", null, uiComponents.map(function (row, i) {
3767
- return /*#__PURE__*/React__default['default'].createElement("tr", {
3768
- key: "table-".concat(mainId, "-row").concat(i)
3769
- }, row.map(function (component, j) {
3770
- var label = component.label,
3771
- headerCell = component.headerCell,
3772
- colspan = component.colspan,
3773
- rowspan = component.rowspan,
3774
- componentType = component.componentType,
3775
- id = component.id,
3776
- rowNumber = component.rowNumber,
3777
- componentProps = _objectWithoutProperties(component, ["label", "headerCell", "colspan", "rowspan", "componentType", "id", "rowNumber"]);
3778
-
3779
- var localBindings = buildBindingsForDeeperComponents(rowNumber)(bindings);
3780
-
3781
- if (componentType) {
3782
- var Component = lunatic[componentType];
3783
- return /*#__PURE__*/React__default['default'].createElement("td", {
3784
- key: "table-".concat(mainId, "-row-").concat(i, "-cell-").concat(j),
3785
- style: {
3786
- width: width
3787
- }
3788
- }, /*#__PURE__*/React__default['default'].createElement(Component, _extends({}, componentProps, {
3789
- id: "".concat(id, "-row-").concat(i),
3790
- label: label,
3791
- handleChange: function handleChange(up) {
3792
- setTodo({
3793
- up: up,
3794
- rowNumber: rowNumber
3795
- });
3796
- },
3797
- preferences: preferences,
3798
- positioning: positioning,
3799
- management: management,
3800
- features: features,
3801
- bindings: localBindings,
3802
- zIndex: uiComponents.length - i || 0
3803
- })));
3804
- }
3805
-
3806
- var cellOptions = {
3807
- key: "table-".concat(mainId, "-row-").concat(i, "-cell-").concat(j),
3808
- style: {
3809
- width: width
3810
- },
3811
- colSpan: colspan || 1,
3812
- rowSpan: rowspan || 1
3813
- };
3814
- var interpretedLabel = interpret(features)(bindings)(label);
3815
- return headerCell ? /*#__PURE__*/React__default['default'].createElement("th", cellOptions, interpretedLabel) : /*#__PURE__*/React__default['default'].createElement("td", cellOptions, interpretedLabel);
3816
- }));
3817
- })));else return /*#__PURE__*/React__default['default'].createElement("div", {
3818
- className: "block-for-loop"
3819
- }, uiComponents.map(function (row, i) {
3820
- return row.map(function (_ref2) {
3821
- var componentType = _ref2.componentType,
3822
- id = _ref2.id,
3823
- label = _ref2.label,
3824
- componentProps = _objectWithoutProperties(_ref2, ["componentType", "id", "label"]);
3825
-
3826
- var Component = lunatic[componentType];
3827
- var localBindings = buildBindingsForDeeperComponents(i)(bindings);
3828
- return /*#__PURE__*/React__default['default'].createElement("div", {
3829
- className: "block-component",
3830
- key: "".concat(id, "-row-").concat(i)
3831
- }, /*#__PURE__*/React__default['default'].createElement(Component, _extends({}, componentProps, {
3832
- id: "".concat(id, "-row-").concat(i),
3833
- label: label,
3834
- handleChange: function handleChange(up) {
3835
- setTodo({
3836
- up: up,
3837
- rowNumber: i
3838
- });
3839
- },
3840
- preferences: preferences,
3841
- positioning: positioning,
3842
- management: management,
3843
- features: features,
3844
- bindings: localBindings
3845
- })));
3846
- });
3847
- }));
3848
- };
3849
-
3850
- var LoopConstructorWrapper = function LoopConstructorWrapper(_ref) {
3851
- var mainId = _ref.id,
3852
- mainLabel = _ref.label,
3853
- components = _ref.components,
3854
- handleChange = _ref.handleChange,
3855
- lines = _ref.lines,
3856
- declarations = _ref.declarations,
3857
- features = _ref.features,
3858
- bindings = _ref.bindings,
3859
- addBtnLabel = _ref.addBtnLabel,
3860
- hideBtn = _ref.hideBtn,
3861
- componentType = _ref.componentType,
3862
- otherProps = _objectWithoutProperties(_ref, ["id", "label", "components", "handleChange", "lines", "declarations", "features", "bindings", "addBtnLabel", "hideBtn", "componentType"]);
3863
-
3864
- var _useState = React.useState({}),
3865
- _useState2 = _slicedToArray(_useState, 2),
3866
- todo = _useState2[0],
3867
- setTodo = _useState2[1];
3868
-
3869
- var minLines = Math.max(lines.min || 0, getLoopConstructorInitLines(components));
3870
- var maxLines = lines ? lines.max : undefined;
3871
- var width = "".concat(100 / Math.max.apply(Math, _toConsumableArray(components.map(function (row) {
3872
- return row.length;
3873
- }))), "%");
3874
- var Button$1 = Button;
3875
- var involvedVariables = getInvolvedVariables(components);
3876
- React.useEffect(function () {
3877
- if (Object.keys(todo).length !== 0) {
3878
- var up = todo.up,
3879
- rowNumber = todo.rowNumber;
3880
-
3881
- var _Object$entries$ = _slicedToArray(Object.entries(up)[0], 2),
3882
- key = _Object$entries$[0],
3883
- value = _Object$entries$[1];
3884
-
3885
- var previousValue = bindings[key];
3886
- var newValue = previousValue.map(function (v, i) {
3887
- return i === rowNumber ? value : v;
3888
- });
3889
- handleChange(_defineProperty({}, key, newValue));
3890
- setTodo({});
3891
- }
3892
- }, [bindings, todo, handleChange]);
3893
-
3894
- var addLine = function addLine() {
3895
- var toHandle = involvedVariables.reduce(function (acc, _ref2) {
3896
- var iv = _ref2.name,
3897
- depth = _ref2.depth;
3898
- return _objectSpread2(_objectSpread2({}, acc), {}, _defineProperty({}, iv, [].concat(_toConsumableArray(bindings[iv]), [buildEmptyValue(depth)])));
3899
- }, {});
3900
- handleChange(toHandle);
3901
- };
3902
-
3903
- var customBtnLabel = componentType === 'Loop' && interpret(features)(bindings)(mainLabel) || addBtnLabel;
3904
- return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(Declarations, {
3905
- id: mainId,
3906
- type: BEFORE_QUESTION_TEXT,
3907
- declarations: declarations,
3908
- features: features,
3909
- bindings: bindings
3910
- }), componentType === 'RosterForLoop' && mainLabel && /*#__PURE__*/React__default['default'].createElement("label", {
3911
- htmlFor: "loops-constructor-".concat(mainId),
3912
- id: "loops-constructor-label-".concat(mainId)
3913
- }, interpret(features)(bindings)(mainLabel)), /*#__PURE__*/React__default['default'].createElement(Declarations, {
3914
- id: mainId,
3915
- type: AFTER_QUESTION_TEXT,
3916
- declarations: declarations,
3917
- features: features,
3918
- bindings: bindings
3919
- }), /*#__PURE__*/React__default['default'].createElement(BodyComponent, _extends({
3920
- mainId: mainId,
3921
- componentType: componentType,
3922
- components: components,
3923
- bindings: bindings,
3924
- width: width,
3925
- features: features,
3926
- setTodo: setTodo
3927
- }, otherProps)), !hideBtn && /*#__PURE__*/React__default['default'].createElement(Button$1, {
3928
- label: "addLine",
3929
- value: customBtnLabel,
3930
- disabled: Number.isInteger(minLines) && minLines === maxLines || lastLoopChildLineIsEmpty(bindings)(involvedVariables),
3931
- onClick: addLine
3932
- }), /*#__PURE__*/React__default['default'].createElement(Declarations, {
3933
- id: mainId,
3934
- type: DETACHABLE,
3935
- declarations: declarations,
3936
- features: features,
3937
- bindings: bindings
3938
- }));
3939
- };
3940
-
3941
- LoopConstructorWrapper.defaultProps = {
3942
- label: '',
3943
- preferences: ['COLLECTED'],
3944
- components: [],
3945
- lines: {},
3946
- positioning: 'DEFAULT',
3947
- declarations: [],
3948
- features: [],
3949
- bindings: {},
3950
- addBtnLabel: 'Add a line',
3951
- management: false,
3952
- hideBtn: false,
3953
- style: {}
3954
- };
3955
- LoopConstructorWrapper.propTypes = {
3956
- componentType: PropTypes__default['default'].string.isRequired,
3957
- id: PropTypes__default['default'].string.isRequired,
3958
- label: PropTypes__default['default'].string,
3959
- preferences: PropTypes__default['default'].arrayOf(valueType),
3960
- components: PropTypes__default['default'].array,
3961
- handleChange: PropTypes__default['default'].func.isRequired,
3962
- lines: lines,
3963
- positioning: PropTypes__default['default'].oneOf(['DEFAULT', 'HORIZONTAL', 'VERTICAL']),
3964
- declarations: declarations,
3965
- features: PropTypes__default['default'].arrayOf(PropTypes__default['default'].string),
3966
- bindings: PropTypes__default['default'].object,
3967
- addBtnLabel: PropTypes__default['default'].string,
3968
- hideBtn: PropTypes__default['default'].bool,
3969
- management: PropTypes__default['default'].bool,
3970
- style: PropTypes__default['default'].object
3971
- };
3972
- var LoopConstructorWrapper$1 = /*#__PURE__*/React__default['default'].memo(LoopConstructorWrapper, areEqual);
3973
-
3974
- var css_248z$b = "* {\n box-sizing: border-box;\n}\n\n.mandatory:after {\n content: \" *\";\n color: red;\n}\n\n.horizontal-options {\n display: inline-block;\n margin-right: 2em;\n}\n\nlabel,\n.lunatic-dropdown-label {\n margin-bottom: 0.5em;\n}\n\n.label-top {\n display: flex;\n flex-direction: column;\n}\n\n.label-bottom {\n display: flex;\n flex-direction: column-reverse;\n}\n\n.label-right {\n justify-content: flex-end;\n display: flex;\n flex-direction: row-reverse;\n align-items: baseline;\n}\n.label-right :first-child {\n margin-right: 1rem;\n}\n\n.label-left {\n display: flex;\n flex-direction: row;\n align-items: baseline;\n}\n.label-left :first-child {\n margin-right: 1rem;\n}\n\n.field-container {\n display: flex;\n}\n\n.tooltip {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n\n.field-with-tooltip {\n width: calc(100% - 25px);\n position: relative;\n}\n\n.field {\n width: 100%;\n position: relative;\n}\n\n.block-for-loop {\n margin-top: 1em;\n margin-bottom: 1em;\n}\n.block-for-loop .block-component {\n margin-top: 0.4em;\n margin-bottom: 0.4em;\n}";
3975
- styleInject(css_248z$b);
3976
-
3977
- var BlockForLoop = function BlockForLoop(props) {
3978
- return /*#__PURE__*/React__default['default'].createElement(LoopConstructorWrapper$1, props);
3979
- };
3980
-
3981
- var BlockForLoop$1 = /*#__PURE__*/React__default['default'].memo(BlockForLoop, areEqual);
3982
-
3983
- var LoopWrapper = function LoopWrapper(props) {
3984
- var iterations = props.iterations;
3985
- if (iterations) return /*#__PURE__*/React__default['default'].createElement(Loop$1, props);
3986
- return /*#__PURE__*/React__default['default'].createElement(BlockForLoop$1, props);
3987
- };
3988
-
3989
- var RosterForLoop = function RosterForLoop(props) {
3990
- return /*#__PURE__*/React__default['default'].createElement(LoopConstructorWrapper$1, props);
3991
- };
3992
-
3993
- var component$3 = /*#__PURE__*/React__default['default'].memo(RosterForLoop, areEqual);
3994
-
3995
- var css_248z$c = "* {\n box-sizing: border-box;\n}\n\n.mandatory:after {\n content: \" *\";\n color: red;\n}\n\n.horizontal-options {\n display: inline-block;\n margin-right: 2em;\n}\n\nlabel,\n.lunatic-dropdown-label {\n margin-bottom: 0.5em;\n}\n\n.label-top {\n display: flex;\n flex-direction: column;\n}\n\n.label-bottom {\n display: flex;\n flex-direction: column-reverse;\n}\n\n.label-right {\n justify-content: flex-end;\n display: flex;\n flex-direction: row-reverse;\n align-items: baseline;\n}\n.label-right :first-child {\n margin-right: 1rem;\n}\n\n.label-left {\n display: flex;\n flex-direction: row;\n align-items: baseline;\n}\n.label-left :first-child {\n margin-right: 1rem;\n}\n\n.field-container {\n display: flex;\n}\n\n.tooltip {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n\n.field-with-tooltip {\n width: calc(100% - 25px);\n position: relative;\n}\n\n.field {\n width: 100%;\n position: relative;\n}\n\n.sequence-lunatic {\n height: 40px;\n box-sizing: border-box;\n border-radius: 0px;\n background-color: #e80a4d;\n border: 0.1em solid #e80a4d;\n color: white;\n font-weight: bold;\n font-size: 130%;\n padding-left: 10px;\n display: flex;\n align-items: center;\n}";
3996
- styleInject(css_248z$c);
3997
-
3998
- var Sequence = function Sequence(_ref) {
3999
- var id = _ref.id,
4000
- label = _ref.label,
4001
- declarations = _ref.declarations,
4002
- features = _ref.features,
4003
- bindings = _ref.bindings,
4004
- style = _ref.style;
4005
- return /*#__PURE__*/React__default['default'].createElement(SimpleDeclarationsWrapper, {
4006
- id: id,
4007
- declarations: declarations,
4008
- features: features,
4009
- bindings: bindings
4010
- }, /*#__PURE__*/React__default['default'].createElement("div", {
4011
- "aria-label": "sequence-".concat(id),
4012
- className: "sequence-lunatic",
4013
- style: buildStyleObject(style)
4014
- }, interpret(features)(bindings)(label)));
4015
- };
4016
-
4017
- Sequence.defaultProps = {
4018
- declarations: [],
4019
- features: [],
4020
- bindings: {},
4021
- style: {}
4022
- };
4023
- Sequence.propTypes = {
4024
- id: PropTypes__default['default'].string.isRequired,
4025
- label: PropTypes__default['default'].string.isRequired,
4026
- declarations: declarations,
4027
- features: PropTypes__default['default'].arrayOf(PropTypes__default['default'].string),
4028
- bindings: PropTypes__default['default'].object,
4029
- style: PropTypes__default['default'].object
4030
- };
4031
- var component$4 = /*#__PURE__*/React__default['default'].memo(Sequence, areEqual);
4032
-
4033
- var css_248z$d = "* {\n box-sizing: border-box;\n}\n\n.mandatory:after {\n content: \" *\";\n color: red;\n}\n\n.horizontal-options {\n display: inline-block;\n margin-right: 2em;\n}\n\nlabel,\n.lunatic-dropdown-label {\n margin-bottom: 0.5em;\n}\n\n.label-top {\n display: flex;\n flex-direction: column;\n}\n\n.label-bottom {\n display: flex;\n flex-direction: column-reverse;\n}\n\n.label-right {\n justify-content: flex-end;\n display: flex;\n flex-direction: row-reverse;\n align-items: baseline;\n}\n.label-right :first-child {\n margin-right: 1rem;\n}\n\n.label-left {\n display: flex;\n flex-direction: row;\n align-items: baseline;\n}\n.label-left :first-child {\n margin-right: 1rem;\n}\n\n.field-container {\n display: flex;\n}\n\n.tooltip {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n\n.field-with-tooltip {\n width: calc(100% - 25px);\n position: relative;\n}\n\n.field {\n width: 100%;\n position: relative;\n}\n\n.subsequence-lunatic {\n height: 20px;\n box-sizing: border-box;\n border-radius: 0px;\n background-color: #e80a4d;\n border: 0.1em solid #e80a4d;\n color: white;\n font-weight: bold;\n font-size: 90%;\n padding-left: 10px;\n display: flex;\n align-items: center;\n}";
4034
- styleInject(css_248z$d);
4035
-
4036
- var Subsequence = function Subsequence(_ref) {
4037
- var id = _ref.id,
4038
- label = _ref.label,
4039
- declarations = _ref.declarations,
4040
- features = _ref.features,
4041
- bindings = _ref.bindings,
4042
- style = _ref.style;
4043
- return /*#__PURE__*/React__default['default'].createElement(SimpleDeclarationsWrapper, {
4044
- id: id,
4045
- declarations: declarations,
4046
- features: features,
4047
- bindings: bindings
4048
- }, /*#__PURE__*/React__default['default'].createElement("div", {
4049
- "aria-label": "subsequence-".concat(id),
4050
- className: "subsequence-lunatic",
4051
- style: buildStyleObject(style)
4052
- }, interpret(features)(bindings)(label)));
4053
- };
4054
-
4055
- Subsequence.defaultProps = {
4056
- declarations: [],
4057
- features: [],
4058
- bindings: {},
4059
- style: {}
4060
- };
4061
- Subsequence.propTypes = {
4062
- id: PropTypes__default['default'].string.isRequired,
4063
- label: PropTypes__default['default'].string.isRequired,
4064
- declarations: declarations,
4065
- features: PropTypes__default['default'].arrayOf(PropTypes__default['default'].string),
4066
- bindings: PropTypes__default['default'].object,
4067
- style: PropTypes__default['default'].object
4068
- };
4069
- var component$5 = /*#__PURE__*/React__default['default'].memo(Subsequence, areEqual);
4070
-
4071
- var css_248z$e = "* {\n box-sizing: border-box;\n}\n\n.mandatory:after {\n content: \" *\";\n color: red;\n}\n\n.horizontal-options {\n display: inline-block;\n margin-right: 2em;\n}\n\nlabel,\n.lunatic-dropdown-label {\n margin-bottom: 0.5em;\n}\n\n.label-top {\n display: flex;\n flex-direction: column;\n}\n\n.label-bottom {\n display: flex;\n flex-direction: column-reverse;\n}\n\n.label-right {\n justify-content: flex-end;\n display: flex;\n flex-direction: row-reverse;\n align-items: baseline;\n}\n.label-right :first-child {\n margin-right: 1rem;\n}\n\n.label-left {\n display: flex;\n flex-direction: row;\n align-items: baseline;\n}\n.label-left :first-child {\n margin-right: 1rem;\n}\n\n.field-container {\n display: flex;\n}\n\n.tooltip {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n\n.field-with-tooltip {\n width: calc(100% - 25px);\n position: relative;\n}\n\n.field {\n width: 100%;\n position: relative;\n}\n\n.textarea-lunatic {\n width: 100%;\n box-sizing: border-box;\n border: solid 2px #e80a4d;\n border-radius: 10px;\n padding: 5px;\n}\n.textarea-lunatic:focus {\n outline: none;\n box-shadow: 0 0 10px #e80a4d;\n}\n.textarea-lunatic:read-only {\n background-color: #ebebe4;\n}";
4072
- styleInject(css_248z$e);
4073
-
4074
- var Textarea = function Textarea(props) {
4075
- return /*#__PURE__*/React__default['default'].createElement(InputDeclarationsWrapper, _extends({
4076
- type: null,
4077
- roleType: "textarea"
4078
- }, props));
4079
- };
4080
-
4081
- var component$6 = /*#__PURE__*/React__default['default'].memo(Textarea, areEqual);
4082
-
4083
- var css_248z$f = "* {\n box-sizing: border-box;\n}\n\n.mandatory:after {\n content: \" *\";\n color: red;\n}\n\n.horizontal-options {\n display: inline-block;\n margin-right: 2em;\n}\n\nlabel,\n.lunatic-dropdown-label {\n margin-bottom: 0.5em;\n}\n\n.label-top {\n display: flex;\n flex-direction: column;\n}\n\n.label-bottom {\n display: flex;\n flex-direction: column-reverse;\n}\n\n.label-right {\n justify-content: flex-end;\n display: flex;\n flex-direction: row-reverse;\n align-items: baseline;\n}\n.label-right :first-child {\n margin-right: 1rem;\n}\n\n.label-left {\n display: flex;\n flex-direction: row;\n align-items: baseline;\n}\n.label-left :first-child {\n margin-right: 1rem;\n}\n\n.field-container {\n display: flex;\n}\n\n.tooltip {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n\n.field-with-tooltip {\n width: calc(100% - 25px);\n position: relative;\n}\n\n.field {\n width: 100%;\n position: relative;\n}\n\n.table-lunatic {\n table-layout: fixed;\n border-collapse: collapse;\n margin-top: 0.3em;\n margin-bottom: 0.3em;\n}\n.table-lunatic td,\n.table-lunatic th {\n border: 0.15em solid #e80a4d;\n padding: 0.2em;\n}\n.table-lunatic td fieldset,\n.table-lunatic th fieldset {\n margin: none;\n border: none;\n}\n.table-lunatic td fieldset .radio-modality,\n.table-lunatic th fieldset .radio-modality {\n margin-top: 0;\n}\n.table-lunatic td fieldset .checkbox-modality,\n.table-lunatic th fieldset .checkbox-modality {\n margin-top: 0;\n}";
4084
- styleInject(css_248z$f);
4085
-
4086
- var Table = function Table(_ref) {
4087
- var tableId = _ref.id,
4088
- tableLabel = _ref.label,
4089
- preferences = _ref.preferences,
4090
- cells = _ref.cells,
4091
- handleChange = _ref.handleChange,
4092
- initLines = _ref.lines,
4093
- positioning = _ref.positioning,
4094
- declarations = _ref.declarations,
4095
- features = _ref.features,
4096
- bindings = _ref.bindings,
4097
- addBtnLabel = _ref.addBtnLabel,
4098
- hideBtn = _ref.hideBtn,
4099
- management = _ref.management;
4100
- var minLines = initLines ? Math.max(initLines.min, getRosterInitLines(cells)) : undefined;
4101
- var maxLines = initLines ? initLines.max : undefined;
4102
-
4103
- var _useState = React.useState(minLines),
4104
- _useState2 = _slicedToArray(_useState, 2),
4105
- lines = _useState2[0],
4106
- setLines = _useState2[1];
4107
-
4108
- var width = "".concat(100 / Math.max.apply(Math, _toConsumableArray(cells.map(function (line) {
4109
- return line.length;
4110
- }))), "%");
4111
- var Button$1 = Button;
4112
- return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(Declarations, {
4113
- id: tableId,
4114
- type: BEFORE_QUESTION_TEXT,
4115
- declarations: declarations,
4116
- features: features,
4117
- bindings: bindings
4118
- }), tableLabel && /*#__PURE__*/React__default['default'].createElement("label", {
4119
- htmlFor: "table-one-axis-".concat(tableId),
4120
- id: "table-one-axis-label-".concat(tableId)
4121
- }, interpret(features)(bindings)(tableLabel)), /*#__PURE__*/React__default['default'].createElement(Declarations, {
4122
- id: tableId,
4123
- type: AFTER_QUESTION_TEXT,
4124
- declarations: declarations,
4125
- features: features,
4126
- bindings: bindings
4127
- }), /*#__PURE__*/React__default['default'].createElement("table", {
4128
- id: "table-".concat(tableId),
4129
- className: "table-lunatic"
4130
- }, /*#__PURE__*/React__default['default'].createElement("tbody", null, (minLines || minLines === 0 ? cells.slice(0, lines + 1) : cells).map(function (line, i) {
4131
- return /*#__PURE__*/React__default['default'].createElement("tr", {
4132
- key: "table-".concat(tableId, "-line").concat(i)
4133
- }, line.map(function (component, j) {
4134
- var label = component.label,
4135
- headerCell = component.headerCell,
4136
- colspan = component.colspan,
4137
- rowspan = component.rowspan,
4138
- componentType = component.componentType,
4139
- componentProps = _objectWithoutProperties(component, ["label", "headerCell", "colspan", "rowspan", "componentType"]);
4140
-
4141
- if (componentType) {
4142
- var Component = lunatic[componentType];
4143
- return /*#__PURE__*/React__default['default'].createElement("td", {
4144
- key: "table-".concat(tableId, "-line").concat(i, "-cell-").concat(j),
4145
- style: {
4146
- width: width
4147
- }
4148
- }, /*#__PURE__*/React__default['default'].createElement(Component, _extends({
4149
- label: label,
4150
- handleChange: handleChange,
4151
- preferences: preferences,
4152
- positioning: positioning,
4153
- management: management,
4154
- features: features,
4155
- bindings: bindings
4156
- }, componentProps, {
4157
- zIndex: cells.length - i || 0
4158
- })));
4159
- }
4160
-
4161
- var cellOptions = {
4162
- key: "table-".concat(tableId, "-line").concat(i, "-cell-").concat(j),
4163
- style: {
4164
- width: width
4165
- },
4166
- colSpan: colspan || 1,
4167
- rowSpan: rowspan || 1
4168
- };
4169
- var interpretedLabel = interpret(features)(bindings)(label);
4170
- return headerCell ? /*#__PURE__*/React__default['default'].createElement("th", cellOptions, interpretedLabel) : /*#__PURE__*/React__default['default'].createElement("td", cellOptions, interpretedLabel);
4171
- }));
4172
- }))), Number.isInteger(minLines) && lines < maxLines && !hideBtn && /*#__PURE__*/React__default['default'].createElement(Button$1, {
4173
- label: "addLine",
4174
- value: addBtnLabel,
4175
- onClick: function onClick() {
4176
- return setLines(lines + 1);
4177
- }
4178
- }), /*#__PURE__*/React__default['default'].createElement(Declarations, {
4179
- id: tableId,
4180
- type: DETACHABLE,
4181
- declarations: declarations,
4182
- features: features,
4183
- bindings: bindings
4184
- }));
4185
- };
28
+ });
4186
29
 
4187
- Table.defaultProps = {
4188
- label: '',
4189
- preferences: ['COLLECTED'],
4190
- cells: [],
4191
- lines: {},
4192
- positioning: 'DEFAULT',
4193
- declarations: [],
4194
- features: [],
4195
- bindings: {},
4196
- addBtnLabel: 'Add a line',
4197
- management: false,
4198
- hideBtn: false,
4199
- style: {}
4200
- };
4201
- Table.propTypes = {
4202
- id: PropTypes__default['default'].string.isRequired,
4203
- label: PropTypes__default['default'].string,
4204
- preferences: PropTypes__default['default'].arrayOf(valueType),
4205
- cells: PropTypes__default['default'].array,
4206
- handleChange: PropTypes__default['default'].func.isRequired,
4207
- lines: lines,
4208
- positioning: PropTypes__default['default'].oneOf(['DEFAULT', 'HORIZONTAL', 'VERTICAL']),
4209
- declarations: declarations,
4210
- features: PropTypes__default['default'].arrayOf(PropTypes__default['default'].string),
4211
- bindings: PropTypes__default['default'].object,
4212
- addBtnLabel: PropTypes__default['default'].string,
4213
- hideBtn: PropTypes__default['default'].bool,
4214
- management: PropTypes__default['default'].bool,
4215
- style: PropTypes__default['default'].object
4216
- };
4217
- var table = /*#__PURE__*/React__default['default'].memo(Table, areEqual);
30
+ var _useLunatic = _interopRequireDefault(require("./use-lunatic"));
4218
31
 
4219
- exports.Breadcrumb = Breadcrumb;
4220
- exports.Button = Button;
4221
- exports.CheckboxBoolean = boolean;
4222
- exports.CheckboxGroup = group;
4223
- exports.CheckboxOne = one;
4224
- exports.Datepicker = component;
4225
- exports.Declarations = Declarations;
4226
- exports.Dropdown = component$1;
4227
- exports.FilterDescription = FilterDescription;
4228
- exports.Input = input;
4229
- exports.InputNumber = inputNumber;
4230
- exports.Loop = LoopWrapper;
4231
- exports.ProgressBar = ProgressBar;
4232
- exports.Radio = component$2;
4233
- exports.RosterForLoop = component$3;
4234
- exports.Sequence = component$4;
4235
- exports.Subsequence = component$5;
4236
- exports.Table = table;
4237
- exports.Textarea = component$6;
4238
- exports.TooltipResponse = TooltipResponse;
4239
- exports.getBindings = getBindings;
4240
- exports.getCollectedState = getCollectedState;
4241
- exports.getCollectedStateByValueType = getCollectedStateByValueType;
4242
- exports.getState = getState;
4243
- exports.interpret = interpret;
4244
- exports.interpretWithEmptyDefault = interpretWithEmptyDefault;
4245
- exports.mergeQuestionnaireAndData = mergeQuestionnaireAndData;
4246
- exports.useLunatic = useLunatic;
4247
- //# sourceMappingURL=index.js.map
32
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }