@portnet/ui 6.0.2 → 6.0.3

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 (980) hide show
  1. package/CHANGELOG.md +652 -0
  2. package/dist/esm/index.js +72 -3
  3. package/dist/esm/index.js.map +1 -1
  4. package/dist/esm/v2/__tests__/AppMain.test.js +130 -0
  5. package/dist/esm/v2/__tests__/AppMain.test.js.map +1 -0
  6. package/dist/esm/v2/__tests__/ChartFigure.test.js +180 -0
  7. package/dist/esm/v2/__tests__/ChartFigure.test.js.map +1 -0
  8. package/dist/esm/v2/__tests__/DataGridRowActionsPropagation.test.js +150 -0
  9. package/dist/esm/v2/__tests__/DataGridRowActionsPropagation.test.js.map +1 -0
  10. package/dist/esm/v2/__tests__/DrawerTactileTargets.test.js +93 -0
  11. package/dist/esm/v2/__tests__/DrawerTactileTargets.test.js.map +1 -0
  12. package/dist/esm/v2/__tests__/FieldError.test.js +71 -38
  13. package/dist/esm/v2/__tests__/FieldError.test.js.map +1 -1
  14. package/dist/esm/v2/__tests__/FieldNaming.test.js +160 -0
  15. package/dist/esm/v2/__tests__/FieldNaming.test.js.map +1 -0
  16. package/dist/esm/v2/__tests__/FieldWidth.test.js +11 -11
  17. package/dist/esm/v2/__tests__/FieldWidth.test.js.map +1 -1
  18. package/dist/esm/v2/__tests__/FileCard.test.js +18 -17
  19. package/dist/esm/v2/__tests__/FileCard.test.js.map +1 -1
  20. package/dist/esm/v2/__tests__/FormikCheckbox.test.js +87 -179
  21. package/dist/esm/v2/__tests__/FormikCheckbox.test.js.map +1 -1
  22. package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js +32 -44
  23. package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js.map +1 -1
  24. package/dist/esm/v2/__tests__/FormikDisplayWidth.test.js +101 -0
  25. package/dist/esm/v2/__tests__/FormikDisplayWidth.test.js.map +1 -0
  26. package/dist/esm/v2/__tests__/FormikRadioGroup.test.js +118 -199
  27. package/dist/esm/v2/__tests__/FormikRadioGroup.test.js.map +1 -1
  28. package/dist/esm/v2/__tests__/MobileRowCard.test.js +44 -42
  29. package/dist/esm/v2/__tests__/MobileRowCard.test.js.map +1 -1
  30. package/dist/esm/v2/__tests__/PreviewDrawer.test.js +165 -0
  31. package/dist/esm/v2/__tests__/PreviewDrawer.test.js.map +1 -0
  32. package/dist/esm/v2/__tests__/ReferentielFieldContainer.test.js +156 -0
  33. package/dist/esm/v2/__tests__/ReferentielFieldContainer.test.js.map +1 -0
  34. package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js +37 -52
  35. package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js.map +1 -1
  36. package/dist/esm/v2/__tests__/apiError.test.js +50 -69
  37. package/dist/esm/v2/__tests__/apiError.test.js.map +1 -1
  38. package/dist/esm/v2/__tests__/banned-patterns.test.js +41 -122
  39. package/dist/esm/v2/__tests__/banned-patterns.test.js.map +1 -1
  40. package/dist/esm/v2/__tests__/chart-palette.test.js +204 -0
  41. package/dist/esm/v2/__tests__/chart-palette.test.js.map +1 -0
  42. package/dist/esm/v2/__tests__/contrast-palette.test.js +42 -74
  43. package/dist/esm/v2/__tests__/contrast-palette.test.js.map +1 -1
  44. package/dist/esm/v2/__tests__/cssVariables.test.js +44 -51
  45. package/dist/esm/v2/__tests__/cssVariables.test.js.map +1 -1
  46. package/dist/esm/v2/__tests__/fileValidation.test.js +134 -0
  47. package/dist/esm/v2/__tests__/fileValidation.test.js.map +1 -0
  48. package/dist/esm/v2/__tests__/filterCriteria.test.js +321 -0
  49. package/dist/esm/v2/__tests__/filterCriteria.test.js.map +1 -0
  50. package/dist/esm/v2/__tests__/fmtDate.test.js +68 -0
  51. package/dist/esm/v2/__tests__/fmtDate.test.js.map +1 -0
  52. package/dist/esm/v2/__tests__/gap-leakage-refonte.test.js +218 -0
  53. package/dist/esm/v2/__tests__/gap-leakage-refonte.test.js.map +1 -0
  54. package/dist/esm/v2/__tests__/labels-merge.test.js +17 -21
  55. package/dist/esm/v2/__tests__/labels-merge.test.js.map +1 -1
  56. package/dist/esm/v2/__tests__/locale-fallback.test.js +35 -40
  57. package/dist/esm/v2/__tests__/locale-fallback.test.js.map +1 -1
  58. package/dist/esm/v2/__tests__/reviveSavedCriteria.test.js +143 -0
  59. package/dist/esm/v2/__tests__/reviveSavedCriteria.test.js.map +1 -0
  60. package/dist/esm/v2/__tests__/rowActions.test.js +182 -0
  61. package/dist/esm/v2/__tests__/rowActions.test.js.map +1 -0
  62. package/dist/esm/v2/__tests__/useFocusOnRouteChange.test.js +155 -0
  63. package/dist/esm/v2/__tests__/useFocusOnRouteChange.test.js.map +1 -0
  64. package/dist/esm/v2/__tests__/useFocusTrap.test.js +266 -402
  65. package/dist/esm/v2/__tests__/useFocusTrap.test.js.map +1 -1
  66. package/dist/esm/v2/__tests__/usePrefersReducedMotion.test.js +120 -0
  67. package/dist/esm/v2/__tests__/usePrefersReducedMotion.test.js.map +1 -0
  68. package/dist/esm/v2/components/Accordion.js +48 -70
  69. package/dist/esm/v2/components/Accordion.js.map +1 -1
  70. package/dist/esm/v2/components/ActionStrip.js +31 -43
  71. package/dist/esm/v2/components/ActionStrip.js.map +1 -1
  72. package/dist/esm/v2/components/Banner.js +25 -22
  73. package/dist/esm/v2/components/Banner.js.map +1 -1
  74. package/dist/esm/v2/components/Busy.js +14 -19
  75. package/dist/esm/v2/components/Busy.js.map +1 -1
  76. package/dist/esm/v2/components/Button.js +34 -45
  77. package/dist/esm/v2/components/Button.js.map +1 -1
  78. package/dist/esm/v2/components/CategoryTag.js +44 -27
  79. package/dist/esm/v2/components/CategoryTag.js.map +1 -1
  80. package/dist/esm/v2/components/Checkbox.js +32 -38
  81. package/dist/esm/v2/components/Checkbox.js.map +1 -1
  82. package/dist/esm/v2/components/Chip.js +23 -36
  83. package/dist/esm/v2/components/Chip.js.map +1 -1
  84. package/dist/esm/v2/components/Combobox.js +112 -136
  85. package/dist/esm/v2/components/Combobox.js.map +1 -1
  86. package/dist/esm/v2/components/CommandPalette.js +113 -198
  87. package/dist/esm/v2/components/CommandPalette.js.map +1 -1
  88. package/dist/esm/v2/components/ConfirmDialog.js +36 -45
  89. package/dist/esm/v2/components/ConfirmDialog.js.map +1 -1
  90. package/dist/esm/v2/components/DatePicker.js +78 -81
  91. package/dist/esm/v2/components/DatePicker.js.map +1 -1
  92. package/dist/esm/v2/components/DateRangePicker.js +63 -74
  93. package/dist/esm/v2/components/DateRangePicker.js.map +1 -1
  94. package/dist/esm/v2/components/DateTimePicker.js +81 -86
  95. package/dist/esm/v2/components/DateTimePicker.js.map +1 -1
  96. package/dist/esm/v2/components/Drawer.js +71 -65
  97. package/dist/esm/v2/components/Drawer.js.map +1 -1
  98. package/dist/esm/v2/components/Dropzone.js +130 -177
  99. package/dist/esm/v2/components/Dropzone.js.map +1 -1
  100. package/dist/esm/v2/components/EmptyState.js +9 -9
  101. package/dist/esm/v2/components/EmptyState.js.map +1 -1
  102. package/dist/esm/v2/components/FavoriteToggle.js +24 -33
  103. package/dist/esm/v2/components/FavoriteToggle.js.map +1 -1
  104. package/dist/esm/v2/components/Field.js +155 -59
  105. package/dist/esm/v2/components/Field.js.map +1 -1
  106. package/dist/esm/v2/components/FieldError.js +9 -13
  107. package/dist/esm/v2/components/FieldError.js.map +1 -1
  108. package/dist/esm/v2/components/FieldHelp.js +28 -49
  109. package/dist/esm/v2/components/FieldHelp.js.map +1 -1
  110. package/dist/esm/v2/components/FileCard.js +14 -19
  111. package/dist/esm/v2/components/FileCard.js.map +1 -1
  112. package/dist/esm/v2/components/FilterTab.js +22 -31
  113. package/dist/esm/v2/components/FilterTab.js.map +1 -1
  114. package/dist/esm/v2/components/ForbiddenPage.js +28 -8
  115. package/dist/esm/v2/components/ForbiddenPage.js.map +1 -1
  116. package/dist/esm/v2/components/FormGrid.js +48 -54
  117. package/dist/esm/v2/components/FormGrid.js.map +1 -1
  118. package/dist/esm/v2/components/FormikDisplay.js +98 -24
  119. package/dist/esm/v2/components/FormikDisplay.js.map +1 -1
  120. package/dist/esm/v2/components/Input.js +75 -34
  121. package/dist/esm/v2/components/Input.js.map +1 -1
  122. package/dist/esm/v2/components/KPICard.js +42 -51
  123. package/dist/esm/v2/components/KPICard.js.map +1 -1
  124. package/dist/esm/v2/components/KPIStrip.js +9 -15
  125. package/dist/esm/v2/components/KPIStrip.js.map +1 -1
  126. package/dist/esm/v2/components/KV.js +16 -23
  127. package/dist/esm/v2/components/KV.js.map +1 -1
  128. package/dist/esm/v2/components/KVGrid.js +15 -23
  129. package/dist/esm/v2/components/KVGrid.js.map +1 -1
  130. package/dist/esm/v2/components/Layout.js +81 -117
  131. package/dist/esm/v2/components/Layout.js.map +1 -1
  132. package/dist/esm/v2/components/MobileRowCard.js +64 -75
  133. package/dist/esm/v2/components/MobileRowCard.js.map +1 -1
  134. package/dist/esm/v2/components/Modal.js +44 -53
  135. package/dist/esm/v2/components/Modal.js.map +1 -1
  136. package/dist/esm/v2/components/NetworkErrorPage.js +28 -11
  137. package/dist/esm/v2/components/NetworkErrorPage.js.map +1 -1
  138. package/dist/esm/v2/components/NotFoundPage.js +28 -9
  139. package/dist/esm/v2/components/NotFoundPage.js.map +1 -1
  140. package/dist/esm/v2/components/NumberInput.js +77 -107
  141. package/dist/esm/v2/components/NumberInput.js.map +1 -1
  142. package/dist/esm/v2/components/OverflowMenu.js +24 -42
  143. package/dist/esm/v2/components/OverflowMenu.js.map +1 -1
  144. package/dist/esm/v2/components/PdfViewer.js +24 -33
  145. package/dist/esm/v2/components/PdfViewer.js.map +1 -1
  146. package/dist/esm/v2/components/ProgressBar.js +28 -36
  147. package/dist/esm/v2/components/ProgressBar.js.map +1 -1
  148. package/dist/esm/v2/components/Radio.js +49 -57
  149. package/dist/esm/v2/components/Radio.js.map +1 -1
  150. package/dist/esm/v2/components/SectionErrorBoundary.js +84 -130
  151. package/dist/esm/v2/components/SectionErrorBoundary.js.map +1 -1
  152. package/dist/esm/v2/components/SectionHeader.js +24 -31
  153. package/dist/esm/v2/components/SectionHeader.js.map +1 -1
  154. package/dist/esm/v2/components/Segmented.js +59 -84
  155. package/dist/esm/v2/components/Segmented.js.map +1 -1
  156. package/dist/esm/v2/components/Select.js +100 -138
  157. package/dist/esm/v2/components/Select.js.map +1 -1
  158. package/dist/esm/v2/components/ServerErrorPage.js +27 -10
  159. package/dist/esm/v2/components/ServerErrorPage.js.map +1 -1
  160. package/dist/esm/v2/components/Skeleton.js +81 -96
  161. package/dist/esm/v2/components/Skeleton.js.map +1 -1
  162. package/dist/esm/v2/components/SkipLink.js +6 -7
  163. package/dist/esm/v2/components/SkipLink.js.map +1 -1
  164. package/dist/esm/v2/components/Spinner.js +13 -22
  165. package/dist/esm/v2/components/Spinner.js.map +1 -1
  166. package/dist/esm/v2/components/Status.js +14 -25
  167. package/dist/esm/v2/components/Status.js.map +1 -1
  168. package/dist/esm/v2/components/Stepper.js +68 -71
  169. package/dist/esm/v2/components/Stepper.js.map +1 -1
  170. package/dist/esm/v2/components/Surface.js +25 -44
  171. package/dist/esm/v2/components/Surface.js.map +1 -1
  172. package/dist/esm/v2/components/Switch.js +21 -29
  173. package/dist/esm/v2/components/Switch.js.map +1 -1
  174. package/dist/esm/v2/components/TabPanel.js +84 -0
  175. package/dist/esm/v2/components/TabPanel.js.map +1 -0
  176. package/dist/esm/v2/components/Tabs.js +43 -19
  177. package/dist/esm/v2/components/Tabs.js.map +1 -1
  178. package/dist/esm/v2/components/TelInput.js +75 -108
  179. package/dist/esm/v2/components/TelInput.js.map +1 -1
  180. package/dist/esm/v2/components/Textarea.js +21 -30
  181. package/dist/esm/v2/components/Textarea.js.map +1 -1
  182. package/dist/esm/v2/components/TimePicker.js +59 -69
  183. package/dist/esm/v2/components/TimePicker.js.map +1 -1
  184. package/dist/esm/v2/components/Toast.js +109 -163
  185. package/dist/esm/v2/components/Toast.js.map +1 -1
  186. package/dist/esm/v2/components/Tooltip.js +18 -31
  187. package/dist/esm/v2/components/Tooltip.js.map +1 -1
  188. package/dist/esm/v2/components/_ErrorPageBody.js +6 -5
  189. package/dist/esm/v2/components/_ErrorPageBody.js.map +1 -1
  190. package/dist/esm/v2/components/_pickerShared.js +2 -2
  191. package/dist/esm/v2/components/_pickerShared.js.map +1 -1
  192. package/dist/esm/v2/components/index.js +37 -0
  193. package/dist/esm/v2/components/index.js.map +1 -1
  194. package/dist/esm/v2/hooks/index.js +62 -0
  195. package/dist/esm/v2/hooks/index.js.map +1 -1
  196. package/dist/esm/v2/hooks/useAppliedFilters.js +112 -0
  197. package/dist/esm/v2/hooks/useAppliedFilters.js.map +1 -0
  198. package/dist/esm/v2/hooks/useDebouncedCallback.js +82 -0
  199. package/dist/esm/v2/hooks/useDebouncedCallback.js.map +1 -0
  200. package/dist/esm/v2/hooks/useDelayedFlag.js +5 -19
  201. package/dist/esm/v2/hooks/useDelayedFlag.js.map +1 -1
  202. package/dist/esm/v2/hooks/useDensity.js +13 -17
  203. package/dist/esm/v2/hooks/useDensity.js.map +1 -1
  204. package/dist/esm/v2/hooks/useFocusFirstError.js +25 -33
  205. package/dist/esm/v2/hooks/useFocusFirstError.js.map +1 -1
  206. package/dist/esm/v2/hooks/useFocusOnRouteChange.js +81 -0
  207. package/dist/esm/v2/hooks/useFocusOnRouteChange.js.map +1 -0
  208. package/dist/esm/v2/hooks/useFocusTrap.js +19 -23
  209. package/dist/esm/v2/hooks/useFocusTrap.js.map +1 -1
  210. package/dist/esm/v2/hooks/useFormAutoSave.js +38 -53
  211. package/dist/esm/v2/hooks/useFormAutoSave.js.map +1 -1
  212. package/dist/esm/v2/hooks/useFormCompletionProgress.js +32 -51
  213. package/dist/esm/v2/hooks/useFormCompletionProgress.js.map +1 -1
  214. package/dist/esm/v2/hooks/useKeyboardShortcuts.js +125 -0
  215. package/dist/esm/v2/hooks/useKeyboardShortcuts.js.map +1 -0
  216. package/dist/esm/v2/hooks/usePrefersReducedMotion.js +99 -0
  217. package/dist/esm/v2/hooks/usePrefersReducedMotion.js.map +1 -0
  218. package/dist/esm/v2/hooks/useResolvedDensity.js +2 -10
  219. package/dist/esm/v2/hooks/useResolvedDensity.js.map +1 -1
  220. package/dist/esm/v2/hooks/useSortedRows.js +3 -5
  221. package/dist/esm/v2/hooks/useSortedRows.js.map +1 -1
  222. package/dist/esm/v2/hooks/useTabLoading.js +6 -21
  223. package/dist/esm/v2/hooks/useTabLoading.js.map +1 -1
  224. package/dist/esm/v2/index.js +2 -3
  225. package/dist/esm/v2/index.js.map +1 -1
  226. package/dist/esm/v2/modalContext.js +2 -2
  227. package/dist/esm/v2/modalContext.js.map +1 -1
  228. package/dist/esm/v2/models/favorite.js.map +1 -1
  229. package/dist/esm/v2/models/personalization.js.map +1 -1
  230. package/dist/esm/v2/models/referentiel.js.map +1 -1
  231. package/dist/esm/v2/models/savedFilter.js.map +1 -1
  232. package/dist/esm/v2/patterns/ActionBar.js +115 -159
  233. package/dist/esm/v2/patterns/ActionBar.js.map +1 -1
  234. package/dist/esm/v2/patterns/AppMain.js +108 -0
  235. package/dist/esm/v2/patterns/AppMain.js.map +1 -0
  236. package/dist/esm/v2/patterns/BulkActionBar.js +31 -34
  237. package/dist/esm/v2/patterns/BulkActionBar.js.map +1 -1
  238. package/dist/esm/v2/patterns/ChartFigure.js +151 -0
  239. package/dist/esm/v2/patterns/ChartFigure.js.map +1 -0
  240. package/dist/esm/v2/patterns/CollapsibleDataGrid.js +111 -152
  241. package/dist/esm/v2/patterns/CollapsibleDataGrid.js.map +1 -1
  242. package/dist/esm/v2/patterns/ColumnsToggle.js +43 -77
  243. package/dist/esm/v2/patterns/ColumnsToggle.js.map +1 -1
  244. package/dist/esm/v2/patterns/DataGrid.js +221 -255
  245. package/dist/esm/v2/patterns/DataGrid.js.map +1 -1
  246. package/dist/esm/v2/patterns/DataGridSettingsMenu.js +76 -94
  247. package/dist/esm/v2/patterns/DataGridSettingsMenu.js.map +1 -1
  248. package/dist/esm/v2/patterns/DataGridToolbar.js +85 -89
  249. package/dist/esm/v2/patterns/DataGridToolbar.js.map +1 -1
  250. package/dist/esm/v2/patterns/DataGridVirtualized.js +141 -182
  251. package/dist/esm/v2/patterns/DataGridVirtualized.js.map +1 -1
  252. package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js +26 -30
  253. package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
  254. package/dist/esm/v2/patterns/DetailSplit.js +108 -0
  255. package/dist/esm/v2/patterns/DetailSplit.js.map +1 -0
  256. package/dist/esm/v2/patterns/FavoriteColumn.js +15 -17
  257. package/dist/esm/v2/patterns/FavoriteColumn.js.map +1 -1
  258. package/dist/esm/v2/patterns/FavoritesFilter.js +30 -39
  259. package/dist/esm/v2/patterns/FavoritesFilter.js.map +1 -1
  260. package/dist/esm/v2/patterns/FilterTabBar.js +112 -0
  261. package/dist/esm/v2/patterns/FilterTabBar.js.map +1 -0
  262. package/dist/esm/v2/patterns/FormErrorSummary.js +12 -13
  263. package/dist/esm/v2/patterns/FormErrorSummary.js.map +1 -1
  264. package/dist/esm/v2/patterns/FormPageShell.js +43 -41
  265. package/dist/esm/v2/patterns/FormPageShell.js.map +1 -1
  266. package/dist/esm/v2/patterns/FormSection.js +30 -38
  267. package/dist/esm/v2/patterns/FormSection.js.map +1 -1
  268. package/dist/esm/v2/patterns/FormikCheckbox.js +29 -39
  269. package/dist/esm/v2/patterns/FormikCheckbox.js.map +1 -1
  270. package/dist/esm/v2/patterns/FormikCheckboxGroup.js +56 -60
  271. package/dist/esm/v2/patterns/FormikCheckboxGroup.js.map +1 -1
  272. package/dist/esm/v2/patterns/FormikCombobox.js +51 -69
  273. package/dist/esm/v2/patterns/FormikCombobox.js.map +1 -1
  274. package/dist/esm/v2/patterns/FormikDatePicker.js +44 -58
  275. package/dist/esm/v2/patterns/FormikDatePicker.js.map +1 -1
  276. package/dist/esm/v2/patterns/FormikDateTimePicker.js +44 -58
  277. package/dist/esm/v2/patterns/FormikDateTimePicker.js.map +1 -1
  278. package/dist/esm/v2/patterns/FormikErrorFocus.js +22 -23
  279. package/dist/esm/v2/patterns/FormikErrorFocus.js.map +1 -1
  280. package/dist/esm/v2/patterns/FormikErrorSummary.js +89 -0
  281. package/dist/esm/v2/patterns/FormikErrorSummary.js.map +1 -0
  282. package/dist/esm/v2/patterns/FormikFile.js +94 -78
  283. package/dist/esm/v2/patterns/FormikFile.js.map +1 -1
  284. package/dist/esm/v2/patterns/FormikInput.js +40 -53
  285. package/dist/esm/v2/patterns/FormikInput.js.map +1 -1
  286. package/dist/esm/v2/patterns/FormikRadioGroup.js +39 -51
  287. package/dist/esm/v2/patterns/FormikRadioGroup.js.map +1 -1
  288. package/dist/esm/v2/patterns/FormikReferentielField.js +49 -59
  289. package/dist/esm/v2/patterns/FormikReferentielField.js.map +1 -1
  290. package/dist/esm/v2/patterns/FormikSelect.js +64 -87
  291. package/dist/esm/v2/patterns/FormikSelect.js.map +1 -1
  292. package/dist/esm/v2/patterns/FormikTextarea.js +30 -46
  293. package/dist/esm/v2/patterns/FormikTextarea.js.map +1 -1
  294. package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js +53 -71
  295. package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
  296. package/dist/esm/v2/patterns/NetworkErrorBanner.js +6 -7
  297. package/dist/esm/v2/patterns/NetworkErrorBanner.js.map +1 -1
  298. package/dist/esm/v2/patterns/PageContent.js +10 -14
  299. package/dist/esm/v2/patterns/PageContent.js.map +1 -1
  300. package/dist/esm/v2/patterns/PreviewDrawer.js +153 -0
  301. package/dist/esm/v2/patterns/PreviewDrawer.js.map +1 -0
  302. package/dist/esm/v2/patterns/ReferentielField.js +327 -312
  303. package/dist/esm/v2/patterns/ReferentielField.js.map +1 -1
  304. package/dist/esm/v2/patterns/RowFavoriteToggle.js +27 -22
  305. package/dist/esm/v2/patterns/RowFavoriteToggle.js.map +1 -1
  306. package/dist/esm/v2/patterns/SaveFilterDialog.js +38 -66
  307. package/dist/esm/v2/patterns/SaveFilterDialog.js.map +1 -1
  308. package/dist/esm/v2/patterns/SavedFiltersMenu.js +62 -81
  309. package/dist/esm/v2/patterns/SavedFiltersMenu.js.map +1 -1
  310. package/dist/esm/v2/patterns/SkeletonPageShell.js +106 -129
  311. package/dist/esm/v2/patterns/SkeletonPageShell.js.map +1 -1
  312. package/dist/esm/v2/patterns/SortableHeader.js +22 -45
  313. package/dist/esm/v2/patterns/SortableHeader.js.map +1 -1
  314. package/dist/esm/v2/patterns/Tour.js +94 -120
  315. package/dist/esm/v2/patterns/Tour.js.map +1 -1
  316. package/dist/esm/v2/patterns/_dataGridShared.js +107 -128
  317. package/dist/esm/v2/patterns/_dataGridShared.js.map +1 -1
  318. package/dist/esm/v2/patterns/_pickerSerialisation.js +6 -8
  319. package/dist/esm/v2/patterns/_pickerSerialisation.js.map +1 -1
  320. package/dist/esm/v2/patterns/_sort.js +17 -33
  321. package/dist/esm/v2/patterns/_sort.js.map +1 -1
  322. package/dist/esm/v2/patterns/_useColumnReorder.js +122 -160
  323. package/dist/esm/v2/patterns/_useColumnReorder.js.map +1 -1
  324. package/dist/esm/v2/patterns/_useColumnResize.js +78 -96
  325. package/dist/esm/v2/patterns/_useColumnResize.js.map +1 -1
  326. package/dist/esm/v2/patterns/filterCriteria.js +102 -0
  327. package/dist/esm/v2/patterns/filterCriteria.js.map +1 -0
  328. package/dist/esm/v2/patterns/index.js +152 -0
  329. package/dist/esm/v2/patterns/index.js.map +1 -1
  330. package/dist/esm/v2/patterns/rowActions.js +223 -0
  331. package/dist/esm/v2/patterns/rowActions.js.map +1 -0
  332. package/dist/esm/v2/personalization/PersonalizationProvider.js +50 -47
  333. package/dist/esm/v2/personalization/PersonalizationProvider.js.map +1 -1
  334. package/dist/esm/v2/personalization/adapters/_storageKey.js +5 -5
  335. package/dist/esm/v2/personalization/adapters/_storageKey.js.map +1 -1
  336. package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js +22 -23
  337. package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
  338. package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js +13 -13
  339. package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
  340. package/dist/esm/v2/personalization/capabilities/favorites.js +36 -60
  341. package/dist/esm/v2/personalization/capabilities/favorites.js.map +1 -1
  342. package/dist/esm/v2/personalization/capabilities/favoritesView.js +22 -34
  343. package/dist/esm/v2/personalization/capabilities/favoritesView.js.map +1 -1
  344. package/dist/esm/v2/personalization/capabilities/gridPreferences.js +28 -34
  345. package/dist/esm/v2/personalization/capabilities/gridPreferences.js.map +1 -1
  346. package/dist/esm/v2/personalization/capabilities/reviveSavedCriteria.js +119 -0
  347. package/dist/esm/v2/personalization/capabilities/reviveSavedCriteria.js.map +1 -0
  348. package/dist/esm/v2/personalization/capabilities/savedFilters.js +90 -98
  349. package/dist/esm/v2/personalization/capabilities/savedFilters.js.map +1 -1
  350. package/dist/esm/v2/personalization/createPersonalizationStore.js +78 -181
  351. package/dist/esm/v2/personalization/createPersonalizationStore.js.map +1 -1
  352. package/dist/esm/v2/personalization/index.js +17 -0
  353. package/dist/esm/v2/personalization/index.js.map +1 -1
  354. package/dist/esm/v2/personalization/personalizationContext.js +9 -9
  355. package/dist/esm/v2/personalization/personalizationContext.js.map +1 -1
  356. package/dist/esm/v2/personalization/schema.js +8 -9
  357. package/dist/esm/v2/personalization/schema.js.map +1 -1
  358. package/dist/esm/v2/referentiel/ReferentielProvider.js +27 -42
  359. package/dist/esm/v2/referentiel/ReferentielProvider.js.map +1 -1
  360. package/dist/esm/v2/referentiel/types.js +2 -0
  361. package/dist/esm/v2/referentiel/types.js.map +1 -0
  362. package/dist/esm/v2/referentiel/useReferentielClient.js +10 -11
  363. package/dist/esm/v2/referentiel/useReferentielClient.js.map +1 -1
  364. package/dist/esm/v2/referentiel/useReferentielOptions.js +60 -117
  365. package/dist/esm/v2/referentiel/useReferentielOptions.js.map +1 -1
  366. package/dist/esm/v2/referentiel/useReferentielSearch.js +37 -91
  367. package/dist/esm/v2/referentiel/useReferentielSearch.js.map +1 -1
  368. package/dist/esm/v2/theme/_brand.js +8 -24
  369. package/dist/esm/v2/theme/_brand.js.map +1 -1
  370. package/dist/esm/v2/theme/_brandSecondary.js +8 -24
  371. package/dist/esm/v2/theme/_brandSecondary.js.map +1 -1
  372. package/dist/esm/v2/theme/createPortnetTheme.js +51 -61
  373. package/dist/esm/v2/theme/createPortnetTheme.js.map +1 -1
  374. package/dist/esm/v2/theme/cssVariables.js +62 -69
  375. package/dist/esm/v2/theme/cssVariables.js.map +1 -1
  376. package/dist/esm/v2/theme/index.js +5 -5
  377. package/dist/esm/v2/theme/index.js.map +1 -1
  378. package/dist/esm/v2/tokens/breakpoints.js +14 -14
  379. package/dist/esm/v2/tokens/breakpoints.js.map +1 -1
  380. package/dist/esm/v2/tokens/chart.js +261 -0
  381. package/dist/esm/v2/tokens/chart.js.map +1 -0
  382. package/dist/esm/v2/tokens/colors.js +22 -22
  383. package/dist/esm/v2/tokens/colors.js.map +1 -1
  384. package/dist/esm/v2/tokens/density.js +62 -7
  385. package/dist/esm/v2/tokens/density.js.map +1 -1
  386. package/dist/esm/v2/tokens/index.js +49 -34
  387. package/dist/esm/v2/tokens/index.js.map +1 -1
  388. package/dist/esm/v2/tokens/motion.js +12 -20
  389. package/dist/esm/v2/tokens/motion.js.map +1 -1
  390. package/dist/esm/v2/tokens/radius.js +1 -1
  391. package/dist/esm/v2/tokens/radius.js.map +1 -1
  392. package/dist/esm/v2/tokens/shadows.js +6 -6
  393. package/dist/esm/v2/tokens/shadows.js.map +1 -1
  394. package/dist/esm/v2/tokens/spacing.js +2 -2
  395. package/dist/esm/v2/tokens/spacing.js.map +1 -1
  396. package/dist/esm/v2/tokens/state.js +1 -1
  397. package/dist/esm/v2/tokens/state.js.map +1 -1
  398. package/dist/esm/v2/tokens/statusPalette.js +17 -21
  399. package/dist/esm/v2/tokens/statusPalette.js.map +1 -1
  400. package/dist/esm/v2/tokens/tokens.json +6 -1
  401. package/dist/esm/v2/tokens/typography.js +13 -13
  402. package/dist/esm/v2/tokens/typography.js.map +1 -1
  403. package/dist/esm/v2/tokens/zIndex.js +1 -1
  404. package/dist/esm/v2/tokens/zIndex.js.map +1 -1
  405. package/dist/esm/v2/types/datagrid.js.map +1 -1
  406. package/dist/esm/v2/utils/apiError.js +16 -37
  407. package/dist/esm/v2/utils/apiError.js.map +1 -1
  408. package/dist/esm/v2/utils/contrast.js +31 -32
  409. package/dist/esm/v2/utils/contrast.js.map +1 -1
  410. package/dist/esm/v2/utils/cx.js +5 -25
  411. package/dist/esm/v2/utils/cx.js.map +1 -1
  412. package/dist/esm/v2/utils/fileDownload.js +23 -26
  413. package/dist/esm/v2/utils/fileDownload.js.map +1 -1
  414. package/dist/esm/v2/utils/fileValidation.js +209 -0
  415. package/dist/esm/v2/utils/fileValidation.js.map +1 -0
  416. package/dist/esm/v2/utils/fmtDate.js +111 -0
  417. package/dist/esm/v2/utils/fmtDate.js.map +1 -0
  418. package/dist/esm/v2/utils/fmtMoney.js +8 -10
  419. package/dist/esm/v2/utils/fmtMoney.js.map +1 -1
  420. package/dist/esm/v2/utils/formikErrors.js +78 -0
  421. package/dist/esm/v2/utils/formikErrors.js.map +1 -0
  422. package/dist/esm/v2/utils/index.js +35 -2
  423. package/dist/esm/v2/utils/index.js.map +1 -1
  424. package/dist/esm/v2/utils/mergeLabels.js +7 -12
  425. package/dist/esm/v2/utils/mergeLabels.js.map +1 -1
  426. package/dist/esm/v2/utils/networkStatus.js +12 -12
  427. package/dist/esm/v2/utils/networkStatus.js.map +1 -1
  428. package/dist/index.d.ts +7 -1
  429. package/dist/index.d.ts.map +1 -1
  430. package/dist/index.js +110 -49
  431. package/dist/index.js.map +1 -1
  432. package/dist/v2/__tests__/AppMain.test.js +133 -0
  433. package/dist/v2/__tests__/AppMain.test.js.map +1 -0
  434. package/dist/v2/__tests__/ChartFigure.test.js +183 -0
  435. package/dist/v2/__tests__/ChartFigure.test.js.map +1 -0
  436. package/dist/v2/__tests__/DataGridRowActionsPropagation.test.js +153 -0
  437. package/dist/v2/__tests__/DataGridRowActionsPropagation.test.js.map +1 -0
  438. package/dist/v2/__tests__/DrawerTactileTargets.test.js +94 -0
  439. package/dist/v2/__tests__/DrawerTactileTargets.test.js.map +1 -0
  440. package/dist/v2/__tests__/FieldError.test.js +82 -49
  441. package/dist/v2/__tests__/FieldError.test.js.map +1 -1
  442. package/dist/v2/__tests__/FieldNaming.test.js +161 -0
  443. package/dist/v2/__tests__/FieldNaming.test.js.map +1 -0
  444. package/dist/v2/__tests__/FieldWidth.test.js +23 -25
  445. package/dist/v2/__tests__/FieldWidth.test.js.map +1 -1
  446. package/dist/v2/__tests__/FileCard.test.js +29 -28
  447. package/dist/v2/__tests__/FileCard.test.js.map +1 -1
  448. package/dist/v2/__tests__/FormikCheckbox.test.js +90 -183
  449. package/dist/v2/__tests__/FormikCheckbox.test.js.map +1 -1
  450. package/dist/v2/__tests__/FormikDateTimePicker.test.js +38 -48
  451. package/dist/v2/__tests__/FormikDateTimePicker.test.js.map +1 -1
  452. package/dist/v2/__tests__/FormikDisplayWidth.test.js +102 -0
  453. package/dist/v2/__tests__/FormikDisplayWidth.test.js.map +1 -0
  454. package/dist/v2/__tests__/FormikRadioGroup.test.js +123 -204
  455. package/dist/v2/__tests__/FormikRadioGroup.test.js.map +1 -1
  456. package/dist/v2/__tests__/MobileRowCard.test.js +63 -61
  457. package/dist/v2/__tests__/MobileRowCard.test.js.map +1 -1
  458. package/dist/v2/__tests__/PreviewDrawer.test.js +169 -0
  459. package/dist/v2/__tests__/PreviewDrawer.test.js.map +1 -0
  460. package/dist/v2/__tests__/ReferentielFieldContainer.test.js +159 -0
  461. package/dist/v2/__tests__/ReferentielFieldContainer.test.js.map +1 -0
  462. package/dist/v2/__tests__/SectionErrorBoundary.test.js +53 -68
  463. package/dist/v2/__tests__/SectionErrorBoundary.test.js.map +1 -1
  464. package/dist/v2/__tests__/apiError.test.js +50 -69
  465. package/dist/v2/__tests__/apiError.test.js.map +1 -1
  466. package/dist/v2/__tests__/banned-patterns.test.js +42 -123
  467. package/dist/v2/__tests__/banned-patterns.test.js.map +1 -1
  468. package/dist/v2/__tests__/chart-palette.test.js +205 -0
  469. package/dist/v2/__tests__/chart-palette.test.js.map +1 -0
  470. package/dist/v2/__tests__/contrast-palette.test.js +42 -74
  471. package/dist/v2/__tests__/contrast-palette.test.js.map +1 -1
  472. package/dist/v2/__tests__/cssVariables.test.js +44 -51
  473. package/dist/v2/__tests__/cssVariables.test.js.map +1 -1
  474. package/dist/v2/__tests__/fileValidation.test.js +136 -0
  475. package/dist/v2/__tests__/fileValidation.test.js.map +1 -0
  476. package/dist/v2/__tests__/filterCriteria.test.js +324 -0
  477. package/dist/v2/__tests__/filterCriteria.test.js.map +1 -0
  478. package/dist/v2/__tests__/fmtDate.test.js +69 -0
  479. package/dist/v2/__tests__/fmtDate.test.js.map +1 -0
  480. package/dist/v2/__tests__/gap-leakage-refonte.test.js +221 -0
  481. package/dist/v2/__tests__/gap-leakage-refonte.test.js.map +1 -0
  482. package/dist/v2/__tests__/labels-merge.test.js +23 -27
  483. package/dist/v2/__tests__/labels-merge.test.js.map +1 -1
  484. package/dist/v2/__tests__/locale-fallback.test.js +47 -52
  485. package/dist/v2/__tests__/locale-fallback.test.js.map +1 -1
  486. package/dist/v2/__tests__/reviveSavedCriteria.test.js +144 -0
  487. package/dist/v2/__tests__/reviveSavedCriteria.test.js.map +1 -0
  488. package/dist/v2/__tests__/rowActions.test.js +186 -0
  489. package/dist/v2/__tests__/rowActions.test.js.map +1 -0
  490. package/dist/v2/__tests__/useFocusOnRouteChange.test.js +156 -0
  491. package/dist/v2/__tests__/useFocusOnRouteChange.test.js.map +1 -0
  492. package/dist/v2/__tests__/useFocusTrap.test.js +270 -407
  493. package/dist/v2/__tests__/useFocusTrap.test.js.map +1 -1
  494. package/dist/v2/__tests__/usePrefersReducedMotion.test.js +123 -0
  495. package/dist/v2/__tests__/usePrefersReducedMotion.test.js.map +1 -0
  496. package/dist/v2/components/Accordion.js +60 -82
  497. package/dist/v2/components/Accordion.js.map +1 -1
  498. package/dist/v2/components/ActionStrip.js +40 -52
  499. package/dist/v2/components/ActionStrip.js.map +1 -1
  500. package/dist/v2/components/Banner.js +42 -41
  501. package/dist/v2/components/Banner.js.map +1 -1
  502. package/dist/v2/components/Busy.js +22 -27
  503. package/dist/v2/components/Busy.js.map +1 -1
  504. package/dist/v2/components/Button.js +39 -50
  505. package/dist/v2/components/Button.js.map +1 -1
  506. package/dist/v2/components/CategoryTag.d.ts.map +1 -1
  507. package/dist/v2/components/CategoryTag.js +49 -32
  508. package/dist/v2/components/CategoryTag.js.map +1 -1
  509. package/dist/v2/components/Checkbox.js +39 -45
  510. package/dist/v2/components/Checkbox.js.map +1 -1
  511. package/dist/v2/components/Chip.js +29 -42
  512. package/dist/v2/components/Chip.js.map +1 -1
  513. package/dist/v2/components/Combobox.js +122 -144
  514. package/dist/v2/components/Combobox.js.map +1 -1
  515. package/dist/v2/components/CommandPalette.js +138 -225
  516. package/dist/v2/components/CommandPalette.js.map +1 -1
  517. package/dist/v2/components/ConfirmDialog.js +46 -56
  518. package/dist/v2/components/ConfirmDialog.js.map +1 -1
  519. package/dist/v2/components/DatePicker.js +81 -86
  520. package/dist/v2/components/DatePicker.js.map +1 -1
  521. package/dist/v2/components/DateRangePicker.js +77 -87
  522. package/dist/v2/components/DateRangePicker.js.map +1 -1
  523. package/dist/v2/components/DateTimePicker.js +84 -91
  524. package/dist/v2/components/DateTimePicker.js.map +1 -1
  525. package/dist/v2/components/Drawer.d.ts.map +1 -1
  526. package/dist/v2/components/Drawer.js +93 -88
  527. package/dist/v2/components/Drawer.js.map +1 -1
  528. package/dist/v2/components/Dropzone.js +150 -196
  529. package/dist/v2/components/Dropzone.js.map +1 -1
  530. package/dist/v2/components/EmptyState.js +18 -20
  531. package/dist/v2/components/EmptyState.js.map +1 -1
  532. package/dist/v2/components/FavoriteToggle.js +28 -39
  533. package/dist/v2/components/FavoriteToggle.js.map +1 -1
  534. package/dist/v2/components/Field.d.ts +62 -4
  535. package/dist/v2/components/Field.d.ts.map +1 -1
  536. package/dist/v2/components/Field.js +169 -70
  537. package/dist/v2/components/Field.js.map +1 -1
  538. package/dist/v2/components/FieldError.js +18 -21
  539. package/dist/v2/components/FieldError.js.map +1 -1
  540. package/dist/v2/components/FieldHelp.js +40 -60
  541. package/dist/v2/components/FieldHelp.js.map +1 -1
  542. package/dist/v2/components/FileCard.js +27 -31
  543. package/dist/v2/components/FileCard.js.map +1 -1
  544. package/dist/v2/components/FilterTab.js +30 -38
  545. package/dist/v2/components/FilterTab.js.map +1 -1
  546. package/dist/v2/components/ForbiddenPage.d.ts +25 -1
  547. package/dist/v2/components/ForbiddenPage.d.ts.map +1 -1
  548. package/dist/v2/components/ForbiddenPage.js +37 -17
  549. package/dist/v2/components/ForbiddenPage.js.map +1 -1
  550. package/dist/v2/components/FormGrid.js +53 -59
  551. package/dist/v2/components/FormGrid.js.map +1 -1
  552. package/dist/v2/components/FormikDisplay.d.ts +50 -1
  553. package/dist/v2/components/FormikDisplay.d.ts.map +1 -1
  554. package/dist/v2/components/FormikDisplay.js +108 -33
  555. package/dist/v2/components/FormikDisplay.js.map +1 -1
  556. package/dist/v2/components/Input.d.ts +40 -0
  557. package/dist/v2/components/Input.d.ts.map +1 -1
  558. package/dist/v2/components/Input.js +81 -41
  559. package/dist/v2/components/Input.js.map +1 -1
  560. package/dist/v2/components/KPICard.js +57 -67
  561. package/dist/v2/components/KPICard.js.map +1 -1
  562. package/dist/v2/components/KPIStrip.js +16 -22
  563. package/dist/v2/components/KPIStrip.js.map +1 -1
  564. package/dist/v2/components/KV.js +25 -31
  565. package/dist/v2/components/KV.js.map +1 -1
  566. package/dist/v2/components/KVGrid.js +19 -26
  567. package/dist/v2/components/KVGrid.js.map +1 -1
  568. package/dist/v2/components/Layout.js +91 -120
  569. package/dist/v2/components/Layout.js.map +1 -1
  570. package/dist/v2/components/MobileRowCard.js +79 -91
  571. package/dist/v2/components/MobileRowCard.js.map +1 -1
  572. package/dist/v2/components/Modal.js +61 -69
  573. package/dist/v2/components/Modal.js.map +1 -1
  574. package/dist/v2/components/NetworkErrorPage.d.ts +19 -1
  575. package/dist/v2/components/NetworkErrorPage.d.ts.map +1 -1
  576. package/dist/v2/components/NetworkErrorPage.js +38 -21
  577. package/dist/v2/components/NetworkErrorPage.js.map +1 -1
  578. package/dist/v2/components/NotFoundPage.d.ts +17 -1
  579. package/dist/v2/components/NotFoundPage.d.ts.map +1 -1
  580. package/dist/v2/components/NotFoundPage.js +37 -18
  581. package/dist/v2/components/NotFoundPage.js.map +1 -1
  582. package/dist/v2/components/NumberInput.js +88 -118
  583. package/dist/v2/components/NumberInput.js.map +1 -1
  584. package/dist/v2/components/OverflowMenu.js +38 -56
  585. package/dist/v2/components/OverflowMenu.js.map +1 -1
  586. package/dist/v2/components/PdfViewer.js +34 -45
  587. package/dist/v2/components/PdfViewer.js.map +1 -1
  588. package/dist/v2/components/ProgressBar.js +42 -49
  589. package/dist/v2/components/ProgressBar.js.map +1 -1
  590. package/dist/v2/components/Radio.js +59 -67
  591. package/dist/v2/components/Radio.js.map +1 -1
  592. package/dist/v2/components/SectionErrorBoundary.js +90 -135
  593. package/dist/v2/components/SectionErrorBoundary.js.map +1 -1
  594. package/dist/v2/components/SectionHeader.js +34 -41
  595. package/dist/v2/components/SectionHeader.js.map +1 -1
  596. package/dist/v2/components/Segmented.js +69 -93
  597. package/dist/v2/components/Segmented.js.map +1 -1
  598. package/dist/v2/components/Select.d.ts +26 -2
  599. package/dist/v2/components/Select.d.ts.map +1 -1
  600. package/dist/v2/components/Select.js +120 -155
  601. package/dist/v2/components/Select.js.map +1 -1
  602. package/dist/v2/components/ServerErrorPage.d.ts +27 -1
  603. package/dist/v2/components/ServerErrorPage.d.ts.map +1 -1
  604. package/dist/v2/components/ServerErrorPage.js +37 -20
  605. package/dist/v2/components/ServerErrorPage.js.map +1 -1
  606. package/dist/v2/components/Skeleton.js +86 -100
  607. package/dist/v2/components/Skeleton.js.map +1 -1
  608. package/dist/v2/components/SkipLink.js +9 -12
  609. package/dist/v2/components/SkipLink.js.map +1 -1
  610. package/dist/v2/components/Spinner.js +16 -25
  611. package/dist/v2/components/Spinner.js.map +1 -1
  612. package/dist/v2/components/Status.js +18 -29
  613. package/dist/v2/components/Status.js.map +1 -1
  614. package/dist/v2/components/Stepper.js +80 -82
  615. package/dist/v2/components/Stepper.js.map +1 -1
  616. package/dist/v2/components/Surface.js +34 -49
  617. package/dist/v2/components/Surface.js.map +1 -1
  618. package/dist/v2/components/Switch.js +29 -37
  619. package/dist/v2/components/Switch.js.map +1 -1
  620. package/dist/v2/components/TabPanel.d.ts +17 -0
  621. package/dist/v2/components/TabPanel.d.ts.map +1 -0
  622. package/dist/v2/components/TabPanel.js +90 -0
  623. package/dist/v2/components/TabPanel.js.map +1 -0
  624. package/dist/v2/components/Tabs.d.ts +25 -0
  625. package/dist/v2/components/Tabs.d.ts.map +1 -1
  626. package/dist/v2/components/Tabs.js +53 -29
  627. package/dist/v2/components/Tabs.js.map +1 -1
  628. package/dist/v2/components/TelInput.js +80 -115
  629. package/dist/v2/components/TelInput.js.map +1 -1
  630. package/dist/v2/components/Textarea.js +26 -35
  631. package/dist/v2/components/Textarea.js.map +1 -1
  632. package/dist/v2/components/TimePicker.js +62 -74
  633. package/dist/v2/components/TimePicker.js.map +1 -1
  634. package/dist/v2/components/Toast.js +119 -174
  635. package/dist/v2/components/Toast.js.map +1 -1
  636. package/dist/v2/components/Tooltip.js +23 -38
  637. package/dist/v2/components/Tooltip.js.map +1 -1
  638. package/dist/v2/components/_ErrorPageBody.js +15 -16
  639. package/dist/v2/components/_ErrorPageBody.js.map +1 -1
  640. package/dist/v2/components/_pickerShared.js +5 -5
  641. package/dist/v2/components/_pickerShared.js.map +1 -1
  642. package/dist/v2/components/index.d.ts +40 -1
  643. package/dist/v2/components/index.d.ts.map +1 -1
  644. package/dist/v2/components/index.js +153 -136
  645. package/dist/v2/components/index.js.map +1 -1
  646. package/dist/v2/hooks/index.d.ts +65 -0
  647. package/dist/v2/hooks/index.d.ts.map +1 -1
  648. package/dist/v2/hooks/index.js +63 -24
  649. package/dist/v2/hooks/index.js.map +1 -1
  650. package/dist/v2/hooks/useAppliedFilters.d.ts +102 -0
  651. package/dist/v2/hooks/useAppliedFilters.d.ts.map +1 -0
  652. package/dist/v2/hooks/useAppliedFilters.js +117 -0
  653. package/dist/v2/hooks/useAppliedFilters.js.map +1 -0
  654. package/dist/v2/hooks/useDebouncedCallback.d.ts +64 -0
  655. package/dist/v2/hooks/useDebouncedCallback.d.ts.map +1 -0
  656. package/dist/v2/hooks/useDebouncedCallback.js +87 -0
  657. package/dist/v2/hooks/useDebouncedCallback.js.map +1 -0
  658. package/dist/v2/hooks/useDelayedFlag.js +6 -20
  659. package/dist/v2/hooks/useDelayedFlag.js.map +1 -1
  660. package/dist/v2/hooks/useDensity.d.ts.map +1 -1
  661. package/dist/v2/hooks/useDensity.js +14 -18
  662. package/dist/v2/hooks/useDensity.js.map +1 -1
  663. package/dist/v2/hooks/useFocusFirstError.js +26 -34
  664. package/dist/v2/hooks/useFocusFirstError.js.map +1 -1
  665. package/dist/v2/hooks/useFocusOnRouteChange.d.ts +65 -0
  666. package/dist/v2/hooks/useFocusOnRouteChange.d.ts.map +1 -0
  667. package/dist/v2/hooks/useFocusOnRouteChange.js +88 -0
  668. package/dist/v2/hooks/useFocusOnRouteChange.js.map +1 -0
  669. package/dist/v2/hooks/useFocusTrap.js +20 -24
  670. package/dist/v2/hooks/useFocusTrap.js.map +1 -1
  671. package/dist/v2/hooks/useFormAutoSave.d.ts +4 -4
  672. package/dist/v2/hooks/useFormAutoSave.d.ts.map +1 -1
  673. package/dist/v2/hooks/useFormAutoSave.js +39 -54
  674. package/dist/v2/hooks/useFormAutoSave.js.map +1 -1
  675. package/dist/v2/hooks/useFormCompletionProgress.d.ts +1 -1
  676. package/dist/v2/hooks/useFormCompletionProgress.d.ts.map +1 -1
  677. package/dist/v2/hooks/useFormCompletionProgress.js +33 -52
  678. package/dist/v2/hooks/useFormCompletionProgress.js.map +1 -1
  679. package/dist/v2/hooks/useKeyboardShortcuts.d.ts +25 -0
  680. package/dist/v2/hooks/useKeyboardShortcuts.d.ts.map +1 -0
  681. package/dist/v2/hooks/useKeyboardShortcuts.js +132 -0
  682. package/dist/v2/hooks/useKeyboardShortcuts.js.map +1 -0
  683. package/dist/v2/hooks/usePrefersReducedMotion.d.ts +56 -0
  684. package/dist/v2/hooks/usePrefersReducedMotion.d.ts.map +1 -0
  685. package/dist/v2/hooks/usePrefersReducedMotion.js +105 -0
  686. package/dist/v2/hooks/usePrefersReducedMotion.js.map +1 -0
  687. package/dist/v2/hooks/useResolvedDensity.js +5 -13
  688. package/dist/v2/hooks/useResolvedDensity.js.map +1 -1
  689. package/dist/v2/hooks/useSortedRows.js +4 -6
  690. package/dist/v2/hooks/useSortedRows.js.map +1 -1
  691. package/dist/v2/hooks/useTabLoading.js +7 -22
  692. package/dist/v2/hooks/useTabLoading.js.map +1 -1
  693. package/dist/v2/index.js +143 -145
  694. package/dist/v2/index.js.map +1 -1
  695. package/dist/v2/modalContext.js +2 -2
  696. package/dist/v2/modalContext.js.map +1 -1
  697. package/dist/v2/models/favorite.d.ts +8 -9
  698. package/dist/v2/models/favorite.d.ts.map +1 -1
  699. package/dist/v2/models/favorite.js.map +1 -1
  700. package/dist/v2/models/index.js +4 -4
  701. package/dist/v2/models/index.js.map +1 -1
  702. package/dist/v2/models/personalization.d.ts +44 -48
  703. package/dist/v2/models/personalization.d.ts.map +1 -1
  704. package/dist/v2/models/personalization.js.map +1 -1
  705. package/dist/v2/models/referentiel.d.ts +32 -50
  706. package/dist/v2/models/referentiel.d.ts.map +1 -1
  707. package/dist/v2/models/referentiel.js.map +1 -1
  708. package/dist/v2/models/savedFilter.d.ts +8 -17
  709. package/dist/v2/models/savedFilter.d.ts.map +1 -1
  710. package/dist/v2/models/savedFilter.js.map +1 -1
  711. package/dist/v2/patterns/ActionBar.js +152 -187
  712. package/dist/v2/patterns/ActionBar.js.map +1 -1
  713. package/dist/v2/patterns/AppMain.d.ts +109 -0
  714. package/dist/v2/patterns/AppMain.d.ts.map +1 -0
  715. package/dist/v2/patterns/AppMain.js +115 -0
  716. package/dist/v2/patterns/AppMain.js.map +1 -0
  717. package/dist/v2/patterns/BulkActionBar.js +40 -42
  718. package/dist/v2/patterns/BulkActionBar.js.map +1 -1
  719. package/dist/v2/patterns/ChartFigure.d.ts +124 -0
  720. package/dist/v2/patterns/ChartFigure.d.ts.map +1 -0
  721. package/dist/v2/patterns/ChartFigure.js +159 -0
  722. package/dist/v2/patterns/ChartFigure.js.map +1 -0
  723. package/dist/v2/patterns/CollapsibleDataGrid.js +138 -174
  724. package/dist/v2/patterns/CollapsibleDataGrid.js.map +1 -1
  725. package/dist/v2/patterns/ColumnsToggle.js +60 -94
  726. package/dist/v2/patterns/ColumnsToggle.js.map +1 -1
  727. package/dist/v2/patterns/DataGrid.d.ts.map +1 -1
  728. package/dist/v2/patterns/DataGrid.js +262 -297
  729. package/dist/v2/patterns/DataGrid.js.map +1 -1
  730. package/dist/v2/patterns/DataGridSettingsMenu.d.ts +12 -0
  731. package/dist/v2/patterns/DataGridSettingsMenu.d.ts.map +1 -1
  732. package/dist/v2/patterns/DataGridSettingsMenu.js +104 -121
  733. package/dist/v2/patterns/DataGridSettingsMenu.js.map +1 -1
  734. package/dist/v2/patterns/DataGridToolbar.js +103 -106
  735. package/dist/v2/patterns/DataGridToolbar.js.map +1 -1
  736. package/dist/v2/patterns/DataGridVirtualized.js +179 -217
  737. package/dist/v2/patterns/DataGridVirtualized.js.map +1 -1
  738. package/dist/v2/patterns/DeleteResourceConfirmDialog.js +32 -35
  739. package/dist/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
  740. package/dist/v2/patterns/DetailSplit.d.ts +87 -0
  741. package/dist/v2/patterns/DetailSplit.d.ts.map +1 -0
  742. package/dist/v2/patterns/DetailSplit.js +116 -0
  743. package/dist/v2/patterns/DetailSplit.js.map +1 -0
  744. package/dist/v2/patterns/FavoriteColumn.js +22 -23
  745. package/dist/v2/patterns/FavoriteColumn.js.map +1 -1
  746. package/dist/v2/patterns/FavoritesFilter.js +36 -44
  747. package/dist/v2/patterns/FavoritesFilter.js.map +1 -1
  748. package/dist/v2/patterns/FilterTabBar.d.ts +28 -0
  749. package/dist/v2/patterns/FilterTabBar.d.ts.map +1 -0
  750. package/dist/v2/patterns/FilterTabBar.js +120 -0
  751. package/dist/v2/patterns/FilterTabBar.js.map +1 -0
  752. package/dist/v2/patterns/FormErrorSummary.js +20 -23
  753. package/dist/v2/patterns/FormErrorSummary.js.map +1 -1
  754. package/dist/v2/patterns/FormPageShell.js +53 -50
  755. package/dist/v2/patterns/FormPageShell.js.map +1 -1
  756. package/dist/v2/patterns/FormSection.d.ts +8 -3
  757. package/dist/v2/patterns/FormSection.d.ts.map +1 -1
  758. package/dist/v2/patterns/FormSection.js +44 -51
  759. package/dist/v2/patterns/FormSection.js.map +1 -1
  760. package/dist/v2/patterns/FormikCheckbox.js +36 -45
  761. package/dist/v2/patterns/FormikCheckbox.js.map +1 -1
  762. package/dist/v2/patterns/FormikCheckboxGroup.d.ts +17 -1
  763. package/dist/v2/patterns/FormikCheckboxGroup.d.ts.map +1 -1
  764. package/dist/v2/patterns/FormikCheckboxGroup.js +62 -65
  765. package/dist/v2/patterns/FormikCheckboxGroup.js.map +1 -1
  766. package/dist/v2/patterns/FormikCombobox.js +55 -72
  767. package/dist/v2/patterns/FormikCombobox.js.map +1 -1
  768. package/dist/v2/patterns/FormikDatePicker.js +50 -64
  769. package/dist/v2/patterns/FormikDatePicker.js.map +1 -1
  770. package/dist/v2/patterns/FormikDateTimePicker.js +50 -64
  771. package/dist/v2/patterns/FormikDateTimePicker.js.map +1 -1
  772. package/dist/v2/patterns/FormikErrorFocus.js +25 -26
  773. package/dist/v2/patterns/FormikErrorFocus.js.map +1 -1
  774. package/dist/v2/patterns/FormikErrorSummary.d.ts +74 -0
  775. package/dist/v2/patterns/FormikErrorSummary.d.ts.map +1 -0
  776. package/dist/v2/patterns/FormikErrorSummary.js +97 -0
  777. package/dist/v2/patterns/FormikErrorSummary.js.map +1 -0
  778. package/dist/v2/patterns/FormikFile.d.ts +14 -1
  779. package/dist/v2/patterns/FormikFile.d.ts.map +1 -1
  780. package/dist/v2/patterns/FormikFile.js +99 -83
  781. package/dist/v2/patterns/FormikFile.js.map +1 -1
  782. package/dist/v2/patterns/FormikInput.js +45 -58
  783. package/dist/v2/patterns/FormikInput.js.map +1 -1
  784. package/dist/v2/patterns/FormikRadioGroup.js +45 -56
  785. package/dist/v2/patterns/FormikRadioGroup.js.map +1 -1
  786. package/dist/v2/patterns/FormikReferentielField.d.ts +12 -1
  787. package/dist/v2/patterns/FormikReferentielField.d.ts.map +1 -1
  788. package/dist/v2/patterns/FormikReferentielField.js +54 -64
  789. package/dist/v2/patterns/FormikReferentielField.js.map +1 -1
  790. package/dist/v2/patterns/FormikSelect.js +70 -92
  791. package/dist/v2/patterns/FormikSelect.js.map +1 -1
  792. package/dist/v2/patterns/FormikTextarea.js +35 -51
  793. package/dist/v2/patterns/FormikTextarea.js.map +1 -1
  794. package/dist/v2/patterns/KeyboardShortcutsHelp.js +60 -80
  795. package/dist/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
  796. package/dist/v2/patterns/NetworkErrorBanner.js +13 -16
  797. package/dist/v2/patterns/NetworkErrorBanner.js.map +1 -1
  798. package/dist/v2/patterns/PageContent.js +17 -20
  799. package/dist/v2/patterns/PageContent.js.map +1 -1
  800. package/dist/v2/patterns/PreviewDrawer.d.ts +49 -0
  801. package/dist/v2/patterns/PreviewDrawer.d.ts.map +1 -0
  802. package/dist/v2/patterns/PreviewDrawer.js +159 -0
  803. package/dist/v2/patterns/PreviewDrawer.js.map +1 -0
  804. package/dist/v2/patterns/ReferentielField.d.ts +86 -2
  805. package/dist/v2/patterns/ReferentielField.d.ts.map +1 -1
  806. package/dist/v2/patterns/ReferentielField.js +347 -327
  807. package/dist/v2/patterns/ReferentielField.js.map +1 -1
  808. package/dist/v2/patterns/RowFavoriteToggle.d.ts +6 -0
  809. package/dist/v2/patterns/RowFavoriteToggle.d.ts.map +1 -1
  810. package/dist/v2/patterns/RowFavoriteToggle.js +38 -30
  811. package/dist/v2/patterns/RowFavoriteToggle.js.map +1 -1
  812. package/dist/v2/patterns/SaveFilterDialog.js +50 -77
  813. package/dist/v2/patterns/SaveFilterDialog.js.map +1 -1
  814. package/dist/v2/patterns/SavedFiltersMenu.js +89 -107
  815. package/dist/v2/patterns/SavedFiltersMenu.js.map +1 -1
  816. package/dist/v2/patterns/SkeletonPageShell.js +122 -143
  817. package/dist/v2/patterns/SkeletonPageShell.js.map +1 -1
  818. package/dist/v2/patterns/SortableHeader.js +35 -57
  819. package/dist/v2/patterns/SortableHeader.js.map +1 -1
  820. package/dist/v2/patterns/Tour.js +121 -142
  821. package/dist/v2/patterns/Tour.js.map +1 -1
  822. package/dist/v2/patterns/_dataGridShared.d.ts.map +1 -1
  823. package/dist/v2/patterns/_dataGridShared.js +131 -147
  824. package/dist/v2/patterns/_dataGridShared.js.map +1 -1
  825. package/dist/v2/patterns/_pickerSerialisation.js +9 -10
  826. package/dist/v2/patterns/_pickerSerialisation.js.map +1 -1
  827. package/dist/v2/patterns/_sort.js +17 -33
  828. package/dist/v2/patterns/_sort.js.map +1 -1
  829. package/dist/v2/patterns/_useColumnReorder.js +124 -163
  830. package/dist/v2/patterns/_useColumnReorder.js.map +1 -1
  831. package/dist/v2/patterns/_useColumnResize.js +80 -99
  832. package/dist/v2/patterns/_useColumnResize.js.map +1 -1
  833. package/dist/v2/patterns/filterCriteria.d.ts +78 -0
  834. package/dist/v2/patterns/filterCriteria.d.ts.map +1 -0
  835. package/dist/v2/patterns/filterCriteria.js +110 -0
  836. package/dist/v2/patterns/filterCriteria.js.map +1 -0
  837. package/dist/v2/patterns/index.d.ts +160 -0
  838. package/dist/v2/patterns/index.d.ts.map +1 -1
  839. package/dist/v2/patterns/index.js +157 -79
  840. package/dist/v2/patterns/index.js.map +1 -1
  841. package/dist/v2/patterns/rowActions.d.ts +150 -0
  842. package/dist/v2/patterns/rowActions.d.ts.map +1 -0
  843. package/dist/v2/patterns/rowActions.js +232 -0
  844. package/dist/v2/patterns/rowActions.js.map +1 -0
  845. package/dist/v2/personalization/PersonalizationProvider.d.ts.map +1 -1
  846. package/dist/v2/personalization/PersonalizationProvider.js +57 -53
  847. package/dist/v2/personalization/PersonalizationProvider.js.map +1 -1
  848. package/dist/v2/personalization/adapters/_storageKey.js +5 -5
  849. package/dist/v2/personalization/adapters/_storageKey.js.map +1 -1
  850. package/dist/v2/personalization/adapters/createLocalStorageAdapter.js +25 -24
  851. package/dist/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
  852. package/dist/v2/personalization/adapters/createMemoryAdapter.js +14 -14
  853. package/dist/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
  854. package/dist/v2/personalization/adapters/index.js +5 -5
  855. package/dist/v2/personalization/adapters/index.js.map +1 -1
  856. package/dist/v2/personalization/capabilities/favorites.js +39 -62
  857. package/dist/v2/personalization/capabilities/favorites.js.map +1 -1
  858. package/dist/v2/personalization/capabilities/favoritesView.js +25 -37
  859. package/dist/v2/personalization/capabilities/favoritesView.js.map +1 -1
  860. package/dist/v2/personalization/capabilities/gridPreferences.js +31 -36
  861. package/dist/v2/personalization/capabilities/gridPreferences.js.map +1 -1
  862. package/dist/v2/personalization/capabilities/index.js +12 -12
  863. package/dist/v2/personalization/capabilities/reviveSavedCriteria.d.ts +88 -0
  864. package/dist/v2/personalization/capabilities/reviveSavedCriteria.d.ts.map +1 -0
  865. package/dist/v2/personalization/capabilities/reviveSavedCriteria.js +126 -0
  866. package/dist/v2/personalization/capabilities/reviveSavedCriteria.js.map +1 -0
  867. package/dist/v2/personalization/capabilities/savedFilters.js +93 -100
  868. package/dist/v2/personalization/capabilities/savedFilters.js.map +1 -1
  869. package/dist/v2/personalization/createPersonalizationStore.d.ts.map +1 -1
  870. package/dist/v2/personalization/createPersonalizationStore.js +81 -182
  871. package/dist/v2/personalization/createPersonalizationStore.js.map +1 -1
  872. package/dist/v2/personalization/index.d.ts +16 -0
  873. package/dist/v2/personalization/index.d.ts.map +1 -1
  874. package/dist/v2/personalization/index.js +30 -23
  875. package/dist/v2/personalization/index.js.map +1 -1
  876. package/dist/v2/personalization/personalizationContext.js +10 -12
  877. package/dist/v2/personalization/personalizationContext.js.map +1 -1
  878. package/dist/v2/personalization/schema.js +8 -9
  879. package/dist/v2/personalization/schema.js.map +1 -1
  880. package/dist/v2/referentiel/ReferentielProvider.js +31 -45
  881. package/dist/v2/referentiel/ReferentielProvider.js.map +1 -1
  882. package/dist/v2/referentiel/index.js +11 -13
  883. package/dist/v2/referentiel/index.js.map +1 -1
  884. package/dist/v2/referentiel/types.d.ts +105 -0
  885. package/dist/v2/referentiel/types.d.ts.map +1 -0
  886. package/dist/v2/referentiel/types.js +6 -0
  887. package/dist/v2/referentiel/types.js.map +1 -0
  888. package/dist/v2/referentiel/useReferentielClient.js +13 -16
  889. package/dist/v2/referentiel/useReferentielClient.js.map +1 -1
  890. package/dist/v2/referentiel/useReferentielOptions.d.ts +7 -17
  891. package/dist/v2/referentiel/useReferentielOptions.d.ts.map +1 -1
  892. package/dist/v2/referentiel/useReferentielOptions.js +63 -120
  893. package/dist/v2/referentiel/useReferentielOptions.js.map +1 -1
  894. package/dist/v2/referentiel/useReferentielSearch.d.ts +7 -48
  895. package/dist/v2/referentiel/useReferentielSearch.d.ts.map +1 -1
  896. package/dist/v2/referentiel/useReferentielSearch.js +40 -95
  897. package/dist/v2/referentiel/useReferentielSearch.js.map +1 -1
  898. package/dist/v2/theme/_brand.js +12 -26
  899. package/dist/v2/theme/_brand.js.map +1 -1
  900. package/dist/v2/theme/_brandSecondary.js +12 -26
  901. package/dist/v2/theme/_brandSecondary.js.map +1 -1
  902. package/dist/v2/theme/createPortnetTheme.js +41 -49
  903. package/dist/v2/theme/createPortnetTheme.js.map +1 -1
  904. package/dist/v2/theme/cssVariables.d.ts +3 -3
  905. package/dist/v2/theme/cssVariables.d.ts.map +1 -1
  906. package/dist/v2/theme/cssVariables.js +65 -70
  907. package/dist/v2/theme/cssVariables.js.map +1 -1
  908. package/dist/v2/theme/index.js +10 -10
  909. package/dist/v2/theme/index.js.map +1 -1
  910. package/dist/v2/tokens/breakpoints.js +16 -16
  911. package/dist/v2/tokens/breakpoints.js.map +1 -1
  912. package/dist/v2/tokens/chart.d.ts +103 -0
  913. package/dist/v2/tokens/chart.d.ts.map +1 -0
  914. package/dist/v2/tokens/chart.js +270 -0
  915. package/dist/v2/tokens/chart.js.map +1 -0
  916. package/dist/v2/tokens/colors.js +24 -24
  917. package/dist/v2/tokens/colors.js.map +1 -1
  918. package/dist/v2/tokens/density.d.ts +104 -0
  919. package/dist/v2/tokens/density.d.ts.map +1 -1
  920. package/dist/v2/tokens/density.js +67 -12
  921. package/dist/v2/tokens/density.js.map +1 -1
  922. package/dist/v2/tokens/index.d.ts +50 -1
  923. package/dist/v2/tokens/index.d.ts.map +1 -1
  924. package/dist/v2/tokens/index.js +116 -68
  925. package/dist/v2/tokens/index.js.map +1 -1
  926. package/dist/v2/tokens/motion.js +16 -22
  927. package/dist/v2/tokens/motion.js.map +1 -1
  928. package/dist/v2/tokens/radius.js +3 -3
  929. package/dist/v2/tokens/radius.js.map +1 -1
  930. package/dist/v2/tokens/shadows.js +8 -8
  931. package/dist/v2/tokens/shadows.js.map +1 -1
  932. package/dist/v2/tokens/spacing.js +4 -4
  933. package/dist/v2/tokens/spacing.js.map +1 -1
  934. package/dist/v2/tokens/state.js +3 -3
  935. package/dist/v2/tokens/state.js.map +1 -1
  936. package/dist/v2/tokens/statusPalette.js +21 -23
  937. package/dist/v2/tokens/statusPalette.js.map +1 -1
  938. package/dist/v2/tokens/tokens.json +6 -1
  939. package/dist/v2/tokens/typography.js +15 -15
  940. package/dist/v2/tokens/typography.js.map +1 -1
  941. package/dist/v2/tokens/zIndex.js +3 -3
  942. package/dist/v2/tokens/zIndex.js.map +1 -1
  943. package/dist/v2/types/datagrid.d.ts +9 -1
  944. package/dist/v2/types/datagrid.d.ts.map +1 -1
  945. package/dist/v2/types/datagrid.js.map +1 -1
  946. package/dist/v2/types/index.js +2 -2
  947. package/dist/v2/types/index.js.map +1 -1
  948. package/dist/v2/utils/apiError.js +16 -37
  949. package/dist/v2/utils/apiError.js.map +1 -1
  950. package/dist/v2/utils/contrast.js +31 -32
  951. package/dist/v2/utils/contrast.js.map +1 -1
  952. package/dist/v2/utils/cx.js +7 -27
  953. package/dist/v2/utils/cx.js.map +1 -1
  954. package/dist/v2/utils/fileDownload.js +25 -28
  955. package/dist/v2/utils/fileDownload.js.map +1 -1
  956. package/dist/v2/utils/fileValidation.d.ts +116 -0
  957. package/dist/v2/utils/fileValidation.d.ts.map +1 -0
  958. package/dist/v2/utils/fileValidation.js +220 -0
  959. package/dist/v2/utils/fileValidation.js.map +1 -0
  960. package/dist/v2/utils/fmtDate.d.ts +103 -0
  961. package/dist/v2/utils/fmtDate.d.ts.map +1 -0
  962. package/dist/v2/utils/fmtDate.js +119 -0
  963. package/dist/v2/utils/fmtDate.js.map +1 -0
  964. package/dist/v2/utils/fmtMoney.d.ts +3 -3
  965. package/dist/v2/utils/fmtMoney.d.ts.map +1 -1
  966. package/dist/v2/utils/fmtMoney.js +9 -11
  967. package/dist/v2/utils/fmtMoney.js.map +1 -1
  968. package/dist/v2/utils/formikErrors.d.ts +67 -0
  969. package/dist/v2/utils/formikErrors.d.ts.map +1 -0
  970. package/dist/v2/utils/formikErrors.js +85 -0
  971. package/dist/v2/utils/formikErrors.js.map +1 -0
  972. package/dist/v2/utils/index.d.ts +5 -0
  973. package/dist/v2/utils/index.d.ts.map +1 -1
  974. package/dist/v2/utils/index.js +67 -18
  975. package/dist/v2/utils/index.js.map +1 -1
  976. package/dist/v2/utils/mergeLabels.js +9 -14
  977. package/dist/v2/utils/mergeLabels.js.map +1 -1
  978. package/dist/v2/utils/networkStatus.js +14 -14
  979. package/dist/v2/utils/networkStatus.js.map +1 -1
  980. package/package.json +26 -9
@@ -1,18 +1,3 @@
1
- var _excluded = ["name", "label", "required", "options", "loading", "disabled", "htmlFor", "hint", "getOptionLabel", "getOptionValue", "descriptionField", "width", "onSelectionChange"];
2
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
3
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
5
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
6
- function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
7
- function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
8
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
9
- function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
10
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
11
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
12
- function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) { ; } } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
13
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
14
- function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
15
- function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
16
1
  /**
17
2
  * FormikCombobox — bridge between Formik state and v2.Field +
18
3
  * v2.Combobox.
@@ -37,82 +22,79 @@ import { useField, useFormikContext } from "formik";
37
22
  import Field from "../components/Field";
38
23
  import Combobox from "../components/Combobox";
39
24
  import { jsx as _jsx } from "react/jsx-runtime";
40
- function FormikCombobox(_ref) {
41
- var _field$value;
42
- var name = _ref.name,
43
- label = _ref.label,
44
- required = _ref.required,
45
- _ref$options = _ref.options,
46
- options = _ref$options === void 0 ? [] : _ref$options,
47
- loading = _ref.loading,
48
- disabled = _ref.disabled,
49
- htmlFor = _ref.htmlFor,
50
- hint = _ref.hint,
51
- getOptionLabel = _ref.getOptionLabel,
52
- getOptionValue = _ref.getOptionValue,
53
- descriptionField = _ref.descriptionField,
54
- width = _ref.width,
55
- onSelectionChange = _ref.onSelectionChange,
56
- rest = _objectWithoutProperties(_ref, _excluded);
57
- var _useField = useField(name),
58
- _useField2 = _slicedToArray(_useField, 2),
59
- field = _useField2[0],
60
- meta = _useField2[1];
61
- var _useFormikContext = useFormikContext(),
62
- setFieldValue = _useFormikContext.setFieldValue,
63
- setFieldTouched = _useFormikContext.setFieldTouched;
64
- var hasError = Boolean(meta.touched && meta.error);
65
- var v2Options = options.map(function (opt) {
66
- var _ref2, _ref3;
67
- if (opt == null || _typeof(opt) !== "object") return opt;
68
- var rec = opt;
69
- var rawLabel = typeof getOptionLabel === "function" ? getOptionLabel(opt) : rec["label"];
25
+ function FormikCombobox({
26
+ name,
27
+ label,
28
+ required,
29
+ options = [],
30
+ loading,
31
+ disabled,
32
+ htmlFor,
33
+ hint,
34
+ getOptionLabel,
35
+ getOptionValue,
36
+ descriptionField,
37
+ width,
38
+ onSelectionChange,
39
+ ...rest
40
+ }) {
41
+ const [field, meta] = useField(name);
42
+ const {
43
+ setFieldValue,
44
+ setFieldTouched
45
+ } = useFormikContext();
46
+ const hasError = Boolean(meta.touched && meta.error);
47
+ const v2Options = options.map(opt => {
48
+ if (opt == null || typeof opt !== "object") return opt;
49
+ const rec = opt;
50
+ const rawLabel = typeof getOptionLabel === "function" ? getOptionLabel(opt) : rec["label"];
70
51
  // B7: harden against getOptionLabel returning a React node.
71
52
  // v2.Combobox feeds the label back through its internal
72
53
  // labelOf when computing the displayed value, and that path
73
54
  // assumes string. Always coerce defensively.
74
- var safeLabel = typeof rawLabel === "string" || rawLabel == null ? rawLabel : String(rawLabel);
55
+ const safeLabel = typeof rawLabel === "string" || rawLabel == null ? rawLabel : String(rawLabel);
75
56
  // B10: descriptionField alias → helper. Falls back to the
76
57
  // canonical `helper`/`summary` fields if neither is set.
77
- var helper = (_ref2 = (_ref3 = descriptionField && rec[descriptionField]) !== null && _ref3 !== void 0 ? _ref3 : rec["helper"]) !== null && _ref2 !== void 0 ? _ref2 : rec["summary"];
58
+ const helper = (descriptionField && rec[descriptionField]) ?? rec["helper"] ?? rec["summary"];
78
59
  return {
79
60
  value: typeof getOptionValue === "function" ? getOptionValue(opt) : opt,
80
61
  label: safeLabel,
81
- helper: helper,
62
+ helper,
82
63
  __raw: opt
83
64
  };
84
65
  });
85
- var handleChange = function handleChange(next) {
66
+ const handleChange = next => {
86
67
  setFieldValue(name, next);
87
68
  setFieldTouched(name, true, false);
88
69
  if (typeof onSelectionChange === "function") {
89
- var _raw, _v2Options$find;
90
- var picked = (_raw = (_v2Options$find = v2Options.find(function (o) {
91
- return o != null && _typeof(o) === "object" && "value" in o && o.value === next;
92
- })) === null || _v2Options$find === void 0 ? void 0 : _v2Options$find.__raw) !== null && _raw !== void 0 ? _raw : null;
70
+ const picked = v2Options.find(o => o != null && typeof o === "object" && "value" in o && o.value === next)?.__raw ?? null;
93
71
  onSelectionChange(picked);
94
72
  }
95
73
  };
96
- return /*#__PURE__*/_jsx(Field, _objectSpread(_objectSpread(_objectSpread(_objectSpread({
74
+ return /*#__PURE__*/_jsx(Field, {
97
75
  label: label,
98
76
  error: hasError ? meta.error : null,
99
77
  hint: !hasError ? hint : undefined,
100
- htmlFor: htmlFor || name
101
- }, required !== undefined ? {
102
- required: required
103
- } : {}), disabled !== undefined ? {
104
- disabled: disabled
105
- } : {}), width !== undefined ? {
106
- width: width
107
- } : {}), {}, {
108
- children: /*#__PURE__*/_jsx(Combobox, _objectSpread(_objectSpread({
109
- value: (_field$value = field.value) !== null && _field$value !== void 0 ? _field$value : null,
78
+ htmlFor: htmlFor || name,
79
+ ...(required !== undefined ? {
80
+ required
81
+ } : {}),
82
+ ...(disabled !== undefined ? {
83
+ disabled
84
+ } : {}),
85
+ ...(width !== undefined ? {
86
+ width
87
+ } : {}),
88
+ children: /*#__PURE__*/_jsx(Combobox, {
89
+ value: field.value ?? null,
110
90
  options: v2Options,
111
- onChange: handleChange
112
- }, rest), loading !== undefined ? {
113
- loading: loading
114
- } : {}))
115
- }));
91
+ onChange: handleChange,
92
+ ...rest,
93
+ ...(loading !== undefined ? {
94
+ loading
95
+ } : {})
96
+ })
97
+ });
116
98
  }
117
99
  export default FormikCombobox;
118
100
  //# sourceMappingURL=FormikCombobox.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FormikCombobox.js","names":["useField","useFormikContext","Field","Combobox","jsx","_jsx","FormikCombobox","_ref","_field$value","name","label","required","_ref$options","options","loading","disabled","htmlFor","hint","getOptionLabel","getOptionValue","descriptionField","width","onSelectionChange","rest","_objectWithoutProperties","_excluded","_useField","_useField2","_slicedToArray","field","meta","_useFormikContext","setFieldValue","setFieldTouched","hasError","Boolean","touched","error","v2Options","map","opt","_ref2","_ref3","_typeof","rec","rawLabel","safeLabel","String","helper","value","__raw","handleChange","next","_raw","_v2Options$find","picked","find","o","_objectSpread","undefined","children","onChange"],"sources":["../../../../src/lib/v2/patterns/FormikCombobox.tsx"],"sourcesContent":["/**\r\n * FormikCombobox — bridge between Formik state and v2.Field +\r\n * v2.Combobox.\r\n *\r\n * Maps caller-supplied raw options to v2.Combobox's {value, label,\r\n * helper} shape and exposes onSelectionChange(rawOption) for\r\n * consumers that need cross-field side effects on pick.\r\n *\r\n * Charter R-Sel.1 → R-Sel.4. Peer dependency: formik >= 2.x.\r\n *\r\n * Hardening notes:\r\n * - B7: defensive String() cast on the resolved label so a\r\n * consumer-supplied getOptionLabel that returns a React node\r\n * never crashes Autocomplete with the cryptic \"Objects are\r\n * not valid as a React child\" error.\r\n * - B10: `descriptionField` alias mirrors the legacy\r\n * AppFormikSelect API — surfaces option[descriptionField] as\r\n * the helper line under each Combobox row.\r\n */\r\n\r\nimport type { ReactNode } from \"react\";\r\nimport { useField, useFormikContext } from \"formik\";\r\nimport Field from \"../components/Field\";\r\nimport Combobox from \"../components/Combobox\";\r\nimport type { FieldWidth } from \"../components/Field\";\r\nimport type {\r\n ComboboxProps,\r\n ComboboxOption,\r\n ComboboxOptionValue,\r\n ComboboxValue,\r\n} from \"../components/Combobox\";\r\n\r\nexport interface FormikComboboxProps<TOption = unknown>\r\n extends Omit<\r\n ComboboxProps,\r\n \"value\" | \"onChange\" | \"options\" | \"loading\" | \"disabled\" | \"getOptionLabel\"\r\n > {\r\n name: string;\r\n label?: ReactNode | undefined;\r\n required?: boolean | undefined;\r\n options?: readonly TOption[] | undefined;\r\n loading?: boolean | undefined;\r\n disabled?: boolean | undefined;\r\n htmlFor?: string | undefined;\r\n hint?: ReactNode | undefined;\r\n getOptionLabel?: ((opt: TOption) => ReactNode) | undefined;\r\n getOptionValue?: ((opt: TOption) => ComboboxOptionValue) | undefined;\r\n /**\r\n * Key on each raw option whose value should appear as a helper\r\n * line beneath the main label in the dropdown. Equivalent to\r\n * the legacy `descriptionField` prop on AppFormikSelect.\r\n */\r\n descriptionField?: string | undefined;\r\n /**\r\n * Gabarit de largeur semantique (G-H). Le standard range les « complex\r\n * search auto-completes » en `l` : c'est le cas le plus courant ici.\r\n */\r\n width?: FieldWidth | undefined;\r\n onSelectionChange?: ((raw: TOption | null) => void) | undefined;\r\n}\r\n\r\nfunction FormikCombobox<TOption = unknown>({\r\n name,\r\n label,\r\n required,\r\n options = [],\r\n loading,\r\n disabled,\r\n htmlFor,\r\n hint,\r\n getOptionLabel,\r\n getOptionValue,\r\n descriptionField,\r\n width,\r\n onSelectionChange,\r\n ...rest\r\n}: FormikComboboxProps<TOption>) {\r\n const [field, meta] = useField(name);\r\n const { setFieldValue, setFieldTouched } = useFormikContext();\r\n const hasError = Boolean(meta.touched && meta.error);\r\n\r\n const v2Options = options.map((opt) => {\r\n if (opt == null || typeof opt !== \"object\") return opt;\r\n const rec = opt as Record<string, unknown>;\r\n const rawLabel =\r\n typeof getOptionLabel === \"function\" ? getOptionLabel(opt) : rec[\"label\"];\r\n // B7: harden against getOptionLabel returning a React node.\r\n // v2.Combobox feeds the label back through its internal\r\n // labelOf when computing the displayed value, and that path\r\n // assumes string. Always coerce defensively.\r\n const safeLabel =\r\n typeof rawLabel === \"string\" || rawLabel == null\r\n ? rawLabel\r\n : String(rawLabel);\r\n // B10: descriptionField alias → helper. Falls back to the\r\n // canonical `helper`/`summary` fields if neither is set.\r\n const helper =\r\n ((descriptionField && rec[descriptionField]) ?? rec[\"helper\"] ?? rec[\"summary\"]) as ReactNode;\r\n return {\r\n value: typeof getOptionValue === \"function\" ? getOptionValue(opt) : opt,\r\n label: safeLabel,\r\n helper,\r\n __raw: opt,\r\n };\r\n });\r\n\r\n const handleChange = (next: ComboboxValue): void => {\r\n setFieldValue(name, next);\r\n setFieldTouched(name, true, false);\r\n if (typeof onSelectionChange === \"function\") {\r\n const picked =\r\n (\r\n v2Options.find(\r\n (o) =>\r\n o != null &&\r\n typeof o === \"object\" &&\r\n \"value\" in o &&\r\n (o as { value?: unknown }).value === next\r\n ) as { __raw?: unknown } | undefined\r\n )?.__raw ?? null;\r\n onSelectionChange(picked as TOption | null);\r\n }\r\n };\r\n\r\n return (\r\n <Field\r\n label={label}\r\n error={hasError ? meta.error : null}\r\n hint={!hasError ? hint : undefined}\r\n htmlFor={htmlFor || name}\r\n {...(required !== undefined ? { required } : {})}\r\n {...(disabled !== undefined ? { disabled } : {})}\r\n {...(width !== undefined ? { width } : {})}\r\n >\r\n <Combobox\r\n value={field.value ?? null}\r\n options={v2Options as Array<string | ComboboxOption>}\r\n onChange={handleChange}\r\n {...rest}\r\n {...(loading !== undefined ? { loading } : {})}\r\n />\r\n </Field>\r\n );\r\n}\r\n\r\nexport default FormikCombobox;\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"FormikCombobox.js","names":["useField","useFormikContext","Field","Combobox","jsx","_jsx","FormikCombobox","name","label","required","options","loading","disabled","htmlFor","hint","getOptionLabel","getOptionValue","descriptionField","width","onSelectionChange","rest","field","meta","setFieldValue","setFieldTouched","hasError","Boolean","touched","error","v2Options","map","opt","rec","rawLabel","safeLabel","String","helper","value","__raw","handleChange","next","picked","find","o","undefined","children","onChange"],"sources":["../../../../src/lib/v2/patterns/FormikCombobox.tsx"],"sourcesContent":["/**\r\n * FormikCombobox — bridge between Formik state and v2.Field +\r\n * v2.Combobox.\r\n *\r\n * Maps caller-supplied raw options to v2.Combobox's {value, label,\r\n * helper} shape and exposes onSelectionChange(rawOption) for\r\n * consumers that need cross-field side effects on pick.\r\n *\r\n * Charter R-Sel.1 → R-Sel.4. Peer dependency: formik >= 2.x.\r\n *\r\n * Hardening notes:\r\n * - B7: defensive String() cast on the resolved label so a\r\n * consumer-supplied getOptionLabel that returns a React node\r\n * never crashes Autocomplete with the cryptic \"Objects are\r\n * not valid as a React child\" error.\r\n * - B10: `descriptionField` alias mirrors the legacy\r\n * AppFormikSelect API — surfaces option[descriptionField] as\r\n * the helper line under each Combobox row.\r\n */\r\n\r\nimport type { ReactNode } from \"react\";\r\nimport { useField, useFormikContext } from \"formik\";\r\nimport Field from \"../components/Field\";\r\nimport Combobox from \"../components/Combobox\";\r\nimport type { FieldWidth } from \"../components/Field\";\r\nimport type {\r\n ComboboxProps,\r\n ComboboxOption,\r\n ComboboxOptionValue,\r\n ComboboxValue,\r\n} from \"../components/Combobox\";\r\n\r\nexport interface FormikComboboxProps<TOption = unknown>\r\n extends Omit<\r\n ComboboxProps,\r\n \"value\" | \"onChange\" | \"options\" | \"loading\" | \"disabled\" | \"getOptionLabel\"\r\n > {\r\n name: string;\r\n label?: ReactNode | undefined;\r\n required?: boolean | undefined;\r\n options?: readonly TOption[] | undefined;\r\n loading?: boolean | undefined;\r\n disabled?: boolean | undefined;\r\n htmlFor?: string | undefined;\r\n hint?: ReactNode | undefined;\r\n getOptionLabel?: ((opt: TOption) => ReactNode) | undefined;\r\n getOptionValue?: ((opt: TOption) => ComboboxOptionValue) | undefined;\r\n /**\r\n * Key on each raw option whose value should appear as a helper\r\n * line beneath the main label in the dropdown. Equivalent to\r\n * the legacy `descriptionField` prop on AppFormikSelect.\r\n */\r\n descriptionField?: string | undefined;\r\n /**\r\n * Gabarit de largeur semantique (G-H). Le standard range les « complex\r\n * search auto-completes » en `l` : c'est le cas le plus courant ici.\r\n */\r\n width?: FieldWidth | undefined;\r\n onSelectionChange?: ((raw: TOption | null) => void) | undefined;\r\n}\r\n\r\nfunction FormikCombobox<TOption = unknown>({\r\n name,\r\n label,\r\n required,\r\n options = [],\r\n loading,\r\n disabled,\r\n htmlFor,\r\n hint,\r\n getOptionLabel,\r\n getOptionValue,\r\n descriptionField,\r\n width,\r\n onSelectionChange,\r\n ...rest\r\n}: FormikComboboxProps<TOption>) {\r\n const [field, meta] = useField(name);\r\n const { setFieldValue, setFieldTouched } = useFormikContext();\r\n const hasError = Boolean(meta.touched && meta.error);\r\n\r\n const v2Options = options.map((opt) => {\r\n if (opt == null || typeof opt !== \"object\") return opt;\r\n const rec = opt as Record<string, unknown>;\r\n const rawLabel =\r\n typeof getOptionLabel === \"function\" ? getOptionLabel(opt) : rec[\"label\"];\r\n // B7: harden against getOptionLabel returning a React node.\r\n // v2.Combobox feeds the label back through its internal\r\n // labelOf when computing the displayed value, and that path\r\n // assumes string. Always coerce defensively.\r\n const safeLabel =\r\n typeof rawLabel === \"string\" || rawLabel == null\r\n ? rawLabel\r\n : String(rawLabel);\r\n // B10: descriptionField alias → helper. Falls back to the\r\n // canonical `helper`/`summary` fields if neither is set.\r\n const helper =\r\n ((descriptionField && rec[descriptionField]) ?? rec[\"helper\"] ?? rec[\"summary\"]) as ReactNode;\r\n return {\r\n value: typeof getOptionValue === \"function\" ? getOptionValue(opt) : opt,\r\n label: safeLabel,\r\n helper,\r\n __raw: opt,\r\n };\r\n });\r\n\r\n const handleChange = (next: ComboboxValue): void => {\r\n setFieldValue(name, next);\r\n setFieldTouched(name, true, false);\r\n if (typeof onSelectionChange === \"function\") {\r\n const picked =\r\n (\r\n v2Options.find(\r\n (o) =>\r\n o != null &&\r\n typeof o === \"object\" &&\r\n \"value\" in o &&\r\n (o as { value?: unknown }).value === next\r\n ) as { __raw?: unknown } | undefined\r\n )?.__raw ?? null;\r\n onSelectionChange(picked as TOption | null);\r\n }\r\n };\r\n\r\n return (\r\n <Field\r\n label={label}\r\n error={hasError ? meta.error : null}\r\n hint={!hasError ? hint : undefined}\r\n htmlFor={htmlFor || name}\r\n {...(required !== undefined ? { required } : {})}\r\n {...(disabled !== undefined ? { disabled } : {})}\r\n {...(width !== undefined ? { width } : {})}\r\n >\r\n <Combobox\r\n value={field.value ?? null}\r\n options={v2Options as Array<string | ComboboxOption>}\r\n onChange={handleChange}\r\n {...rest}\r\n {...(loading !== undefined ? { loading } : {})}\r\n />\r\n </Field>\r\n );\r\n}\r\n\r\nexport default FormikCombobox;\r\n"],"mappings":"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","ignoreList":[]}
@@ -1,18 +1,3 @@
1
- function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
2
- var _excluded = ["name", "label", "required", "disabled", "readOnly", "readOnlyFormat", "htmlFor", "hint", "outputFormat", "width"];
3
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
4
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
5
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
7
- function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
8
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
9
- function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
10
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
11
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
12
- function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) { ; } } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
13
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
14
- function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
15
- function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
16
1
  /**
17
2
  * FormikDatePicker — bridge between Formik state and v2.Field +
18
3
  * v2.DatePicker.
@@ -94,27 +79,25 @@ import DatePicker from "../components/DatePicker";
94
79
  import FormikDisplay from "../components/FormikDisplay";
95
80
  import { coerceToDate, serialiseDate } from "./_pickerSerialisation";
96
81
  import { jsx as _jsx } from "react/jsx-runtime";
97
- var FormikDatePicker = function FormikDatePicker(_ref) {
98
- var name = _ref.name,
99
- label = _ref.label,
100
- required = _ref.required,
101
- disabled = _ref.disabled,
102
- readOnly = _ref.readOnly,
103
- _ref$readOnlyFormat = _ref.readOnlyFormat,
104
- readOnlyFormat = _ref$readOnlyFormat === void 0 ? "DD/MM/YYYY" : _ref$readOnlyFormat,
105
- htmlFor = _ref.htmlFor,
106
- hint = _ref.hint,
107
- outputFormat = _ref.outputFormat,
108
- width = _ref.width,
109
- rest = _objectWithoutProperties(_ref, _excluded);
110
- var _useField = useField(name),
111
- _useField2 = _slicedToArray(_useField, 2),
112
- field = _useField2[0],
113
- meta = _useField2[1];
114
- var _useFormikContext = useFormikContext(),
115
- setFieldValue = _useFormikContext.setFieldValue,
116
- setFieldTouched = _useFormikContext.setFieldTouched;
117
- var hasError = Boolean(meta.touched && meta.error);
82
+ const FormikDatePicker = ({
83
+ name,
84
+ label,
85
+ required,
86
+ disabled,
87
+ readOnly,
88
+ readOnlyFormat = "DD/MM/YYYY",
89
+ htmlFor,
90
+ hint,
91
+ outputFormat,
92
+ width,
93
+ ...rest
94
+ }) => {
95
+ const [field, meta] = useField(name);
96
+ const {
97
+ setFieldValue,
98
+ setFieldTouched
99
+ } = useFormikContext();
100
+ const hasError = Boolean(meta.touched && meta.error);
118
101
 
119
102
  /* Lecture seule. On repasse par `coerceToDate` avec le MÊME `outputFormat`
120
103
  * que le champ utilise pour écrire : c'est la symétrie que S-03 a installée,
@@ -125,38 +108,41 @@ var FormikDatePicker = function FormikDatePicker(_ref) {
125
108
  * marqueur « — » est reproduit ici plutôt que délégué — sans quoi un champ
126
109
  * sans date afficherait un panneau vide. */
127
110
  if (readOnly && !disabled) {
128
- return /*#__PURE__*/_jsx(FormikDisplay, _objectSpread(_objectSpread({
111
+ return /*#__PURE__*/_jsx(FormikDisplay, {
129
112
  name: name,
130
- label: label
131
- }, hint !== undefined ? {
132
- hint: hint
133
- } : {}), {}, {
134
- format: function format(raw) {
135
- var parsed = coerceToDate(raw, outputFormat);
113
+ label: label,
114
+ ...(hint !== undefined ? {
115
+ hint
116
+ } : {}),
117
+ format: raw => {
118
+ const parsed = coerceToDate(raw, outputFormat);
136
119
  return parsed ? moment(parsed).format(readOnlyFormat) : "\u2014";
137
120
  }
138
- }));
121
+ });
139
122
  }
140
- return /*#__PURE__*/_jsx(Field, _objectSpread(_objectSpread(_objectSpread(_objectSpread({
123
+ return /*#__PURE__*/_jsx(Field, {
141
124
  label: label,
142
125
  error: hasError ? meta.error : null,
143
126
  hint: !hasError ? hint : undefined,
144
- htmlFor: htmlFor || name
145
- }, required !== undefined ? {
146
- required: required
147
- } : {}), disabled !== undefined ? {
148
- disabled: disabled
149
- } : {}), width !== undefined ? {
150
- width: width
151
- } : {}), {}, {
152
- children: /*#__PURE__*/_jsx(DatePicker, _objectSpread({
127
+ htmlFor: htmlFor || name,
128
+ ...(required !== undefined ? {
129
+ required
130
+ } : {}),
131
+ ...(disabled !== undefined ? {
132
+ disabled
133
+ } : {}),
134
+ ...(width !== undefined ? {
135
+ width
136
+ } : {}),
137
+ children: /*#__PURE__*/_jsx(DatePicker, {
153
138
  value: coerceToDate(field.value, outputFormat),
154
- onChange: function onChange(next) {
139
+ onChange: next => {
155
140
  setFieldValue(name, serialiseDate(next, outputFormat));
156
141
  setFieldTouched(name, true, false);
157
- }
158
- }, rest))
159
- }));
142
+ },
143
+ ...rest
144
+ })
145
+ });
160
146
  };
161
147
  export default FormikDatePicker;
162
148
  //# sourceMappingURL=FormikDatePicker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FormikDatePicker.js","names":["React","moment","useField","useFormikContext","Field","DatePicker","FormikDisplay","coerceToDate","serialiseDate","jsx","_jsx","FormikDatePicker","_ref","name","label","required","disabled","readOnly","_ref$readOnlyFormat","readOnlyFormat","htmlFor","hint","outputFormat","width","rest","_objectWithoutProperties","_excluded","_useField","_useField2","_slicedToArray","field","meta","_useFormikContext","setFieldValue","setFieldTouched","hasError","Boolean","touched","error","_objectSpread","undefined","format","raw","parsed","children","value","onChange","next"],"sources":["../../../../src/lib/v2/patterns/FormikDatePicker.tsx"],"sourcesContent":["/**\r\n * FormikDatePicker — bridge between Formik state and v2.Field +\r\n * v2.DatePicker.\r\n *\r\n * v2.DatePicker emits Date | null. Formik state may carry Date,\r\n * ISO string, or moment instance — this bridge normalises inbound\r\n * values to Date for the picker.\r\n *\r\n * outputFormat prop (Charter R-I.*):\r\n * By default, onChange writes a Date | null back to Formik, which\r\n * is fine for Yup.date() schemas. If your schema uses Yup.string()\r\n * with a format test (e.g. \"DD-MM-YYYY\"), pass the matching moment\r\n * format string:\r\n *\r\n * <FormikDatePicker name=\"dateNaissance\" outputFormat=\"DD-MM-YYYY\" />\r\n *\r\n * The field then stores \"03-05-2026\" instead of a Date object.\r\n * Pass outputFormat=\"iso\" to store an ISO 8601 string instead.\r\n * Default (undefined) = Date | null (backward-compatible).\r\n *\r\n * ── outputFormat MUST ROUND-TRIP — and now does (S-03) ────────────────\r\n *\r\n * This bridge used to serialise OUT through moment but read BACK through\r\n * `new Date(raw)`, ignoring outputFormat. The asymmetry silently corrupted any\r\n * non-ISO format:\r\n *\r\n * new Date(\"31-12-2026\") -> month 31 invalid -> Invalid Date -> null\r\n * -> the field rendered EMPTY when re-populated\r\n * new Date(\"05-03-2026\") -> V8 reads MM-DD -> 3 May, not 5 March\r\n * -> saving untouched wrote back \"03-05-2026\"\r\n *\r\n * The write path worked, so a form filled in and submitted immediately behaved\r\n * correctly; the damage only surfaced on RE-POPULATE, i.e. an edit flow — the\r\n * path a smoke test is least likely to exercise. `procuration-portnet-fe` shipped\r\n * it for seven batches under a clean strict typecheck.\r\n *\r\n * `coerceToDate` now parses with the SAME format it was written with, in moment's\r\n * STRICT mode, so a malformed stored value yields null instead of a plausible\r\n * wrong date. A missing date is recoverable; a date quietly off by two months is\r\n * not.\r\n *\r\n * BEHAVIOURAL NOTE for existing non-ISO callers: they were mis-parsing before.\r\n * This changes their result from wrong to right — which is the point, but it is a\r\n * change. Callers passing nothing, or \"iso\", are on the identical code path.\r\n *\r\n * Audit: this is the ONLY Formik date bridge in the library. DateTimePicker,\r\n * TimePicker and DateRangePicker are exposed as bare components exchanging Date\r\n * objects, so they have no serialisation step and no equivalent asymmetry;\r\n * _pickerShared carries only Date<->Moment converters, not string parsing.\r\n *\r\n * UPDATE (gap G-E): `FormikDateTimePicker` now exists too, and the two bridges\r\n * SHARE `coerceToDate` / `serialiseDate` via `./_pickerSerialisation`. Keeping\r\n * a private copy in each would have re-created the very asymmetry S-03\r\n * describes, in a form even harder to spot: two bridges that look alike, that\r\n * nobody compares, and that each look correct on their own.\r\n *\r\n * Modal / Drawer usage (MUI X v9):\r\n * When rendered inside a v2.Drawer or a MUI Modal, the DatePicker\r\n * calendar popup may render behind the modal surface (both default\r\n * to zIndex 1300). In MUI X v9, the popper slot is forwarded via\r\n * slotProps.popper (the legacy `PopperProps` was removed). Pass:\r\n *\r\n * <FormikDatePicker\r\n * slotProps={{ popper: { sx: { zIndex: 1400 } } }}\r\n * />\r\n *\r\n * Slot props forward through ...rest to v2.DatePicker and on to\r\n * MuiDatePicker, where they merge with the textField slot bag\r\n * already wired by v2.DatePicker.\r\n *\r\n * Charter R-I.*.\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport moment from \"moment\";\r\nimport { useField, useFormikContext } from \"formik\";\r\nimport Field from \"../components/Field\";\r\nimport DatePicker from \"../components/DatePicker\";\r\nimport FormikDisplay from \"../components/FormikDisplay\";\r\nimport { coerceToDate, serialiseDate } from \"./_pickerSerialisation\";\r\nimport type { FieldWidth } from \"../components/Field\";\r\nimport type { DatePickerProps } from \"../components/DatePicker\";\r\n\r\nexport interface FormikDatePickerProps\r\n extends Omit<\r\n DatePickerProps,\r\n \"value\" | \"onChange\" | \"disabled\" | \"error\" | \"label\" | \"readOnly\"\r\n > {\r\n name: string;\r\n label?: React.ReactNode | undefined;\r\n required?: boolean | undefined;\r\n disabled?: boolean | undefined;\r\n htmlFor?: string | undefined;\r\n hint?: React.ReactNode | undefined;\r\n /**\r\n * outputFormat — when provided, the Formik field stores a formatted\r\n * string instead of a Date object. Use when your Yup schema uses\r\n * Yup.string() with a format-specific test (e.g. \"DD-MM-YYYY\").\r\n * Pass \"iso\" for ISO 8601, or any moment format token string.\r\n * Defaults to undefined (Date | null — backward-compatible).\r\n */\r\n outputFormat?: string | undefined;\r\n /**\r\n * Render the date as read-only text via FormikDisplay instead of a picker.\r\n * `disabled` wins when both are passed — same rule as FormikInput.\r\n *\r\n * `readOnly` IS OMITTED FROM `DatePickerProps` ABOVE, for two reasons.\r\n *\r\n * Mechanically: MUI declares it `readOnly?: boolean` with no `| undefined`,\r\n * so under `exactOptionalPropertyTypes` a host passing an optional\r\n * `boolean | undefined` — which is what a `readOnly?: boolean | undefined`\r\n * section prop is — could not satisfy the inherited signature.\r\n *\r\n * Semantically: this prop SUPERSEDES MUI's meaning. MUI's `readOnly` keeps the\r\n * text field and blocks editing; this one replaces the field with text, so\r\n * there is no input left to mark read-only and forwarding both would be\r\n * contradictory.\r\n *\r\n * BEHAVIOURAL NOTE for existing callers: `readOnly` previously fell through\r\n * `...rest` to MUI and produced a non-editable INPUT. It now produces display\r\n * text. Any caller relying on the old rendering should switch to `disabled`.\r\n */\r\n readOnly?: boolean | undefined;\r\n /**\r\n * Display format in read-only mode. Defaults to the French convention rather\r\n * than to `outputFormat`: what the field STORES and what a reader should SEE\r\n * are different concerns — a field storing \"iso\" or \"YYYY-MM-DD\" should still\r\n * read as 31/12/2026.\r\n */\r\n readOnlyFormat?: string | undefined;\r\n /**\r\n * Gabarit de largeur semantique (G-H). Le standard range explicitement les\r\n * dates en `s` (6 a 15 caracteres). Ne s'applique pas en mode `readOnly`.\r\n */\r\n width?: FieldWidth | undefined;\r\n}\r\n\r\nconst FormikDatePicker = ({\r\n name,\r\n label,\r\n required,\r\n disabled,\r\n readOnly,\r\n readOnlyFormat = \"DD/MM/YYYY\",\r\n htmlFor,\r\n hint,\r\n outputFormat,\r\n width,\r\n ...rest\r\n}: FormikDatePickerProps) => {\r\n const [field, meta] = useField(name);\r\n const { setFieldValue, setFieldTouched } = useFormikContext();\r\n const hasError = Boolean(meta.touched && meta.error);\r\n\r\n /* Lecture seule. On repasse par `coerceToDate` avec le MÊME `outputFormat`\r\n * que le champ utilise pour écrire : c'est la symétrie que S-03 a installée,\r\n * et s'en écarter ici reproduirait exactement le bug qu'il a corrigé (une date\r\n * \"31-12-2026\" relue par `new Date()` devient Invalid Date).\r\n *\r\n * `format` court-circuite la branche « valeur vide » de FormikDisplay, donc le\r\n * marqueur « — » est reproduit ici plutôt que délégué — sans quoi un champ\r\n * sans date afficherait un panneau vide. */\r\n if (readOnly && !disabled) {\r\n return (\r\n <FormikDisplay\r\n name={name}\r\n label={label}\r\n {...(hint !== undefined ? { hint } : {})}\r\n format={(raw) => {\r\n const parsed = coerceToDate(raw, outputFormat);\r\n return parsed ? moment(parsed).format(readOnlyFormat) : \"\\u2014\";\r\n }}\r\n />\r\n );\r\n }\r\n\r\n return (\r\n <Field\r\n label={label}\r\n error={hasError ? meta.error : null}\r\n hint={!hasError ? hint : undefined}\r\n htmlFor={htmlFor || name}\r\n {...(required !== undefined ? { required } : {})}\r\n {...(disabled !== undefined ? { disabled } : {})}\r\n {...(width !== undefined ? { width } : {})}\r\n >\r\n <DatePicker\r\n value={coerceToDate(field.value, outputFormat)}\r\n onChange={(next) => {\r\n setFieldValue(name, serialiseDate(next, outputFormat));\r\n setFieldTouched(name, true, false);\r\n }}\r\n {...rest}\r\n />\r\n </Field>\r\n );\r\n};\r\n\r\nexport default FormikDatePicker;\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"FormikDatePicker.js","names":["React","moment","useField","useFormikContext","Field","DatePicker","FormikDisplay","coerceToDate","serialiseDate","jsx","_jsx","FormikDatePicker","name","label","required","disabled","readOnly","readOnlyFormat","htmlFor","hint","outputFormat","width","rest","field","meta","setFieldValue","setFieldTouched","hasError","Boolean","touched","error","undefined","format","raw","parsed","children","value","onChange","next"],"sources":["../../../../src/lib/v2/patterns/FormikDatePicker.tsx"],"sourcesContent":["/**\r\n * FormikDatePicker — bridge between Formik state and v2.Field +\r\n * v2.DatePicker.\r\n *\r\n * v2.DatePicker emits Date | null. Formik state may carry Date,\r\n * ISO string, or moment instance — this bridge normalises inbound\r\n * values to Date for the picker.\r\n *\r\n * outputFormat prop (Charter R-I.*):\r\n * By default, onChange writes a Date | null back to Formik, which\r\n * is fine for Yup.date() schemas. If your schema uses Yup.string()\r\n * with a format test (e.g. \"DD-MM-YYYY\"), pass the matching moment\r\n * format string:\r\n *\r\n * <FormikDatePicker name=\"dateNaissance\" outputFormat=\"DD-MM-YYYY\" />\r\n *\r\n * The field then stores \"03-05-2026\" instead of a Date object.\r\n * Pass outputFormat=\"iso\" to store an ISO 8601 string instead.\r\n * Default (undefined) = Date | null (backward-compatible).\r\n *\r\n * ── outputFormat MUST ROUND-TRIP — and now does (S-03) ────────────────\r\n *\r\n * This bridge used to serialise OUT through moment but read BACK through\r\n * `new Date(raw)`, ignoring outputFormat. The asymmetry silently corrupted any\r\n * non-ISO format:\r\n *\r\n * new Date(\"31-12-2026\") -> month 31 invalid -> Invalid Date -> null\r\n * -> the field rendered EMPTY when re-populated\r\n * new Date(\"05-03-2026\") -> V8 reads MM-DD -> 3 May, not 5 March\r\n * -> saving untouched wrote back \"03-05-2026\"\r\n *\r\n * The write path worked, so a form filled in and submitted immediately behaved\r\n * correctly; the damage only surfaced on RE-POPULATE, i.e. an edit flow — the\r\n * path a smoke test is least likely to exercise. `procuration-portnet-fe` shipped\r\n * it for seven batches under a clean strict typecheck.\r\n *\r\n * `coerceToDate` now parses with the SAME format it was written with, in moment's\r\n * STRICT mode, so a malformed stored value yields null instead of a plausible\r\n * wrong date. A missing date is recoverable; a date quietly off by two months is\r\n * not.\r\n *\r\n * BEHAVIOURAL NOTE for existing non-ISO callers: they were mis-parsing before.\r\n * This changes their result from wrong to right — which is the point, but it is a\r\n * change. Callers passing nothing, or \"iso\", are on the identical code path.\r\n *\r\n * Audit: this is the ONLY Formik date bridge in the library. DateTimePicker,\r\n * TimePicker and DateRangePicker are exposed as bare components exchanging Date\r\n * objects, so they have no serialisation step and no equivalent asymmetry;\r\n * _pickerShared carries only Date<->Moment converters, not string parsing.\r\n *\r\n * UPDATE (gap G-E): `FormikDateTimePicker` now exists too, and the two bridges\r\n * SHARE `coerceToDate` / `serialiseDate` via `./_pickerSerialisation`. Keeping\r\n * a private copy in each would have re-created the very asymmetry S-03\r\n * describes, in a form even harder to spot: two bridges that look alike, that\r\n * nobody compares, and that each look correct on their own.\r\n *\r\n * Modal / Drawer usage (MUI X v9):\r\n * When rendered inside a v2.Drawer or a MUI Modal, the DatePicker\r\n * calendar popup may render behind the modal surface (both default\r\n * to zIndex 1300). In MUI X v9, the popper slot is forwarded via\r\n * slotProps.popper (the legacy `PopperProps` was removed). Pass:\r\n *\r\n * <FormikDatePicker\r\n * slotProps={{ popper: { sx: { zIndex: 1400 } } }}\r\n * />\r\n *\r\n * Slot props forward through ...rest to v2.DatePicker and on to\r\n * MuiDatePicker, where they merge with the textField slot bag\r\n * already wired by v2.DatePicker.\r\n *\r\n * Charter R-I.*.\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport moment from \"moment\";\r\nimport { useField, useFormikContext } from \"formik\";\r\nimport Field from \"../components/Field\";\r\nimport DatePicker from \"../components/DatePicker\";\r\nimport FormikDisplay from \"../components/FormikDisplay\";\r\nimport { coerceToDate, serialiseDate } from \"./_pickerSerialisation\";\r\nimport type { FieldWidth } from \"../components/Field\";\r\nimport type { DatePickerProps } from \"../components/DatePicker\";\r\n\r\nexport interface FormikDatePickerProps\r\n extends Omit<\r\n DatePickerProps,\r\n \"value\" | \"onChange\" | \"disabled\" | \"error\" | \"label\" | \"readOnly\"\r\n > {\r\n name: string;\r\n label?: React.ReactNode | undefined;\r\n required?: boolean | undefined;\r\n disabled?: boolean | undefined;\r\n htmlFor?: string | undefined;\r\n hint?: React.ReactNode | undefined;\r\n /**\r\n * outputFormat — when provided, the Formik field stores a formatted\r\n * string instead of a Date object. Use when your Yup schema uses\r\n * Yup.string() with a format-specific test (e.g. \"DD-MM-YYYY\").\r\n * Pass \"iso\" for ISO 8601, or any moment format token string.\r\n * Defaults to undefined (Date | null — backward-compatible).\r\n */\r\n outputFormat?: string | undefined;\r\n /**\r\n * Render the date as read-only text via FormikDisplay instead of a picker.\r\n * `disabled` wins when both are passed — same rule as FormikInput.\r\n *\r\n * `readOnly` IS OMITTED FROM `DatePickerProps` ABOVE, for two reasons.\r\n *\r\n * Mechanically: MUI declares it `readOnly?: boolean` with no `| undefined`,\r\n * so under `exactOptionalPropertyTypes` a host passing an optional\r\n * `boolean | undefined` — which is what a `readOnly?: boolean | undefined`\r\n * section prop is — could not satisfy the inherited signature.\r\n *\r\n * Semantically: this prop SUPERSEDES MUI's meaning. MUI's `readOnly` keeps the\r\n * text field and blocks editing; this one replaces the field with text, so\r\n * there is no input left to mark read-only and forwarding both would be\r\n * contradictory.\r\n *\r\n * BEHAVIOURAL NOTE for existing callers: `readOnly` previously fell through\r\n * `...rest` to MUI and produced a non-editable INPUT. It now produces display\r\n * text. Any caller relying on the old rendering should switch to `disabled`.\r\n */\r\n readOnly?: boolean | undefined;\r\n /**\r\n * Display format in read-only mode. Defaults to the French convention rather\r\n * than to `outputFormat`: what the field STORES and what a reader should SEE\r\n * are different concerns — a field storing \"iso\" or \"YYYY-MM-DD\" should still\r\n * read as 31/12/2026.\r\n */\r\n readOnlyFormat?: string | undefined;\r\n /**\r\n * Gabarit de largeur semantique (G-H). Le standard range explicitement les\r\n * dates en `s` (6 a 15 caracteres). Ne s'applique pas en mode `readOnly`.\r\n */\r\n width?: FieldWidth | undefined;\r\n}\r\n\r\nconst FormikDatePicker = ({\r\n name,\r\n label,\r\n required,\r\n disabled,\r\n readOnly,\r\n readOnlyFormat = \"DD/MM/YYYY\",\r\n htmlFor,\r\n hint,\r\n outputFormat,\r\n width,\r\n ...rest\r\n}: FormikDatePickerProps) => {\r\n const [field, meta] = useField(name);\r\n const { setFieldValue, setFieldTouched } = useFormikContext();\r\n const hasError = Boolean(meta.touched && meta.error);\r\n\r\n /* Lecture seule. On repasse par `coerceToDate` avec le MÊME `outputFormat`\r\n * que le champ utilise pour écrire : c'est la symétrie que S-03 a installée,\r\n * et s'en écarter ici reproduirait exactement le bug qu'il a corrigé (une date\r\n * \"31-12-2026\" relue par `new Date()` devient Invalid Date).\r\n *\r\n * `format` court-circuite la branche « valeur vide » de FormikDisplay, donc le\r\n * marqueur « — » est reproduit ici plutôt que délégué — sans quoi un champ\r\n * sans date afficherait un panneau vide. */\r\n if (readOnly && !disabled) {\r\n return (\r\n <FormikDisplay\r\n name={name}\r\n label={label}\r\n {...(hint !== undefined ? { hint } : {})}\r\n format={(raw) => {\r\n const parsed = coerceToDate(raw, outputFormat);\r\n return parsed ? moment(parsed).format(readOnlyFormat) : \"\\u2014\";\r\n }}\r\n />\r\n );\r\n }\r\n\r\n return (\r\n <Field\r\n label={label}\r\n error={hasError ? meta.error : null}\r\n hint={!hasError ? hint : undefined}\r\n htmlFor={htmlFor || name}\r\n {...(required !== undefined ? { required } : {})}\r\n {...(disabled !== undefined ? { disabled } : {})}\r\n {...(width !== undefined ? { width } : {})}\r\n >\r\n <DatePicker\r\n value={coerceToDate(field.value, outputFormat)}\r\n onChange={(next) => {\r\n setFieldValue(name, serialiseDate(next, outputFormat));\r\n setFieldTouched(name, true, false);\r\n }}\r\n {...rest}\r\n />\r\n </Field>\r\n );\r\n};\r\n\r\nexport default FormikDatePicker;\r\n"],"mappings":"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","ignoreList":[]}
@@ -1,18 +1,3 @@
1
- function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
2
- var _excluded = ["name", "label", "required", "disabled", "readOnly", "readOnlyFormat", "htmlFor", "hint", "outputFormat", "width"];
3
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
4
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
5
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
7
- function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
8
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
9
- function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
10
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
11
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
12
- function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) { ; } } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
13
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
14
- function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
15
- function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
16
1
  /**
17
2
  * FormikDateTimePicker — bridge between Formik state and v2.Field +
18
3
  * v2.DateTimePicker.
@@ -86,65 +71,66 @@ import DateTimePicker from "../components/DateTimePicker";
86
71
  import FormikDisplay from "../components/FormikDisplay";
87
72
  import { coerceToDate, serialiseDate } from "./_pickerSerialisation";
88
73
  import { jsx as _jsx } from "react/jsx-runtime";
89
- var FormikDateTimePicker = function FormikDateTimePicker(_ref) {
90
- var name = _ref.name,
91
- label = _ref.label,
92
- required = _ref.required,
93
- disabled = _ref.disabled,
94
- readOnly = _ref.readOnly,
95
- _ref$readOnlyFormat = _ref.readOnlyFormat,
96
- readOnlyFormat = _ref$readOnlyFormat === void 0 ? "DD/MM/YYYY HH:mm" : _ref$readOnlyFormat,
97
- htmlFor = _ref.htmlFor,
98
- hint = _ref.hint,
99
- outputFormat = _ref.outputFormat,
100
- width = _ref.width,
101
- rest = _objectWithoutProperties(_ref, _excluded);
102
- var _useField = useField(name),
103
- _useField2 = _slicedToArray(_useField, 2),
104
- field = _useField2[0],
105
- meta = _useField2[1];
106
- var _useFormikContext = useFormikContext(),
107
- setFieldValue = _useFormikContext.setFieldValue,
108
- setFieldTouched = _useFormikContext.setFieldTouched;
109
- var hasError = Boolean(meta.touched && meta.error);
74
+ const FormikDateTimePicker = ({
75
+ name,
76
+ label,
77
+ required,
78
+ disabled,
79
+ readOnly,
80
+ readOnlyFormat = "DD/MM/YYYY HH:mm",
81
+ htmlFor,
82
+ hint,
83
+ outputFormat,
84
+ width,
85
+ ...rest
86
+ }) => {
87
+ const [field, meta] = useField(name);
88
+ const {
89
+ setFieldValue,
90
+ setFieldTouched
91
+ } = useFormikContext();
92
+ const hasError = Boolean(meta.touched && meta.error);
110
93
 
111
94
  /* Lecture seule. On repasse par `coerceToDate` avec le MEME `outputFormat`
112
95
  * que le champ utilise pour ecrire : c'est la symetrie de S-03. `format`
113
96
  * court-circuite la branche « valeur vide » de FormikDisplay, donc le
114
97
  * marqueur est reproduit ici plutot que delegue. */
115
98
  if (readOnly && !disabled) {
116
- return /*#__PURE__*/_jsx(FormikDisplay, _objectSpread(_objectSpread({
99
+ return /*#__PURE__*/_jsx(FormikDisplay, {
117
100
  name: name,
118
- label: label
119
- }, hint !== undefined ? {
120
- hint: hint
121
- } : {}), {}, {
122
- format: function format(raw) {
123
- var parsed = coerceToDate(raw, outputFormat);
101
+ label: label,
102
+ ...(hint !== undefined ? {
103
+ hint
104
+ } : {}),
105
+ format: raw => {
106
+ const parsed = coerceToDate(raw, outputFormat);
124
107
  return parsed ? moment(parsed).format(readOnlyFormat) : "\u2014";
125
108
  }
126
- }));
109
+ });
127
110
  }
128
- return /*#__PURE__*/_jsx(Field, _objectSpread(_objectSpread(_objectSpread(_objectSpread({
111
+ return /*#__PURE__*/_jsx(Field, {
129
112
  label: label,
130
113
  error: hasError ? meta.error : null,
131
114
  hint: !hasError ? hint : undefined,
132
- htmlFor: htmlFor || name
133
- }, required !== undefined ? {
134
- required: required
135
- } : {}), disabled !== undefined ? {
136
- disabled: disabled
137
- } : {}), width !== undefined ? {
138
- width: width
139
- } : {}), {}, {
140
- children: /*#__PURE__*/_jsx(DateTimePicker, _objectSpread({
115
+ htmlFor: htmlFor || name,
116
+ ...(required !== undefined ? {
117
+ required
118
+ } : {}),
119
+ ...(disabled !== undefined ? {
120
+ disabled
121
+ } : {}),
122
+ ...(width !== undefined ? {
123
+ width
124
+ } : {}),
125
+ children: /*#__PURE__*/_jsx(DateTimePicker, {
141
126
  value: coerceToDate(field.value, outputFormat),
142
- onChange: function onChange(next) {
127
+ onChange: next => {
143
128
  setFieldValue(name, serialiseDate(next, outputFormat));
144
129
  setFieldTouched(name, true, false);
145
- }
146
- }, rest))
147
- }));
130
+ },
131
+ ...rest
132
+ })
133
+ });
148
134
  };
149
135
  export default FormikDateTimePicker;
150
136
  //# sourceMappingURL=FormikDateTimePicker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FormikDateTimePicker.js","names":["React","moment","useField","useFormikContext","Field","DateTimePicker","FormikDisplay","coerceToDate","serialiseDate","jsx","_jsx","FormikDateTimePicker","_ref","name","label","required","disabled","readOnly","_ref$readOnlyFormat","readOnlyFormat","htmlFor","hint","outputFormat","width","rest","_objectWithoutProperties","_excluded","_useField","_useField2","_slicedToArray","field","meta","_useFormikContext","setFieldValue","setFieldTouched","hasError","Boolean","touched","error","_objectSpread","undefined","format","raw","parsed","children","value","onChange","next"],"sources":["../../../../src/lib/v2/patterns/FormikDateTimePicker.tsx"],"sourcesContent":["/**\r\n * FormikDateTimePicker — bridge between Formik state and v2.Field +\r\n * v2.DateTimePicker.\r\n *\r\n * ── WHY (gap G-E) ────────────────────────────────────────────────────\r\n *\r\n * `FormikDatePicker` was the ONLY Formik date bridge in the library, and it is\r\n * date-only. Any host with a date-AND-TIME field therefore had two options:\r\n * drop the time, or hand-wire `useField` + the bare `DateTimePicker`.\r\n *\r\n * Dropping the time is not a styling compromise — it CHANGES WHAT THE BACKEND\r\n * RECEIVES. Reported from refonte-frontend (lot 7): the physical-visit form\r\n * stores a visit date carrying an hour and submits\r\n * `moment(value).format(\"YYYY-MM-DD HH:mm\")`. Routed through the date-only\r\n * bridge, every visit would have been scheduled at 00:00 — silently, with no\r\n * error anywhere, and only the agent showing up at the wrong time would\r\n * eventually notice.\r\n *\r\n * Hand-wiring is the duplication R-2.1 forbids, and the shape in which\r\n * validation messages go missing (see gaps G-A and G-C, same story).\r\n *\r\n * Usage:\r\n *\r\n * <FormikDateTimePicker\r\n * name=\"dateVisite\"\r\n * label=\"Date de la visite\"\r\n * required\r\n * />\r\n *\r\n * // Field must store a string in the charter datetime format:\r\n * <FormikDateTimePicker\r\n * name=\"dateVisite\"\r\n * outputFormat={DATETIME_FORMAT_CHARTER} // \"YYYY-MM-DD HH:mm\"\r\n * />\r\n *\r\n * ── SERIALISATION IS SHARED WITH FormikDatePicker, DELIBERATELY ──────\r\n *\r\n * `coerceToDate` / `serialiseDate` live in `./_pickerSerialisation` and are\r\n * used by BOTH bridges. That is not tidiness: `FormikDatePicker`'s S-03 note\r\n * documents what happens when the read and the write of a date disagree — a\r\n * stored \"31-12-2026\" read back by `new Date()` becomes Invalid Date, a stored\r\n * \"05-03-2026\" becomes 3 May instead of 5 March. The write path works, so the\r\n * damage only appears on RE-POPULATE, i.e. in an edit flow, which is the path\r\n * a smoke test is least likely to exercise. One module shipped that for seven\r\n * batches under a clean strict typecheck.\r\n *\r\n * Two private copies of that couple would have re-created the same class of\r\n * bug in a form even harder to spot.\r\n *\r\n * ── DEFAULT OUTPUT IS A Date, LIKE THE SIBLING ──────────────────────\r\n *\r\n * With no `outputFormat`, the field stores `Date | null` — which is what\r\n * `Yup.date()` expects and what a host formatting at submit time already\r\n * handles. Pass `\"iso\"` for ISO 8601, or any moment token string (typically\r\n * `DATETIME_FORMAT_CHARTER`) when the schema is a `Yup.string()` with a format\r\n * test. Whatever is chosen, reading back uses the SAME format.\r\n *\r\n * Modal / Drawer usage (MUI X v9): the picker popup may render behind a modal\r\n * surface (both default to zIndex 1300). Forward\r\n * `slotProps={{ popper: { sx: { zIndex: 1400 } } }}` — it reaches\r\n * MuiDateTimePicker through `...rest`, exactly as on `FormikDatePicker`.\r\n *\r\n * Charter §03 · R-I.*. Peer dependency: formik >= 2.x.\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport moment from \"moment\";\r\nimport { useField, useFormikContext } from \"formik\";\r\nimport Field from \"../components/Field\";\r\nimport DateTimePicker from \"../components/DateTimePicker\";\r\nimport FormikDisplay from \"../components/FormikDisplay\";\r\nimport { coerceToDate, serialiseDate } from \"./_pickerSerialisation\";\r\nimport type { FieldWidth } from \"../components/Field\";\r\nimport type { DateTimePickerProps } from \"../components/DateTimePicker\";\r\n\r\nexport interface FormikDateTimePickerProps\r\n extends Omit<\r\n DateTimePickerProps,\r\n \"value\" | \"onChange\" | \"disabled\" | \"error\" | \"label\" | \"readOnly\"\r\n > {\r\n name: string;\r\n label?: React.ReactNode | undefined;\r\n required?: boolean | undefined;\r\n disabled?: boolean | undefined;\r\n htmlFor?: string | undefined;\r\n hint?: React.ReactNode | undefined;\r\n /**\r\n * When provided, the Formik field stores a formatted STRING instead of a\r\n * `Date`. Pass `\"iso\"` for ISO 8601, or any moment token string — typically\r\n * `DATETIME_FORMAT_CHARTER` (\"YYYY-MM-DD HH:mm\"). Defaults to undefined\r\n * (`Date | null`).\r\n */\r\n outputFormat?: string | undefined;\r\n /**\r\n * Render the value as read-only text via `FormikDisplay` instead of a\r\n * picker. `disabled` wins when both are passed — same rule as\r\n * `FormikInput` and `FormikDatePicker`.\r\n *\r\n * Omitted from `DateTimePickerProps` above for the same two reasons as on\r\n * the sibling: MUI declares `readOnly?: boolean` with no `| undefined`, which\r\n * an optional section prop cannot satisfy under\r\n * `exactOptionalPropertyTypes`; and this prop SUPERSEDES MUI's meaning —\r\n * MUI keeps the text field and blocks editing, this one replaces the field\r\n * with text, so there is no input left to mark read-only.\r\n */\r\n readOnly?: boolean | undefined;\r\n /**\r\n * Display format in read-only mode. Defaults to the French convention rather\r\n * than to `outputFormat`: what the field STORES and what a reader should SEE\r\n * are different concerns — a field storing ISO should still read as\r\n * 31/12/2026 14:30.\r\n */\r\n readOnlyFormat?: string | undefined;\r\n /**\r\n * Gabarit de largeur semantique (G-H). Le standard range les dates en `s`\r\n * (6 a 15 caracteres) : une date-heure au format charte en fait 16, donc `s`\r\n * ou `m` selon la place disponible. Ne s'applique pas en mode `readOnly`.\r\n */\r\n width?: FieldWidth | undefined;\r\n}\r\n\r\nconst FormikDateTimePicker = ({\r\n name,\r\n label,\r\n required,\r\n disabled,\r\n readOnly,\r\n readOnlyFormat = \"DD/MM/YYYY HH:mm\",\r\n htmlFor,\r\n hint,\r\n outputFormat,\r\n width,\r\n ...rest\r\n}: FormikDateTimePickerProps) => {\r\n const [field, meta] = useField(name);\r\n const { setFieldValue, setFieldTouched } = useFormikContext();\r\n const hasError = Boolean(meta.touched && meta.error);\r\n\r\n /* Lecture seule. On repasse par `coerceToDate` avec le MEME `outputFormat`\r\n * que le champ utilise pour ecrire : c'est la symetrie de S-03. `format`\r\n * court-circuite la branche « valeur vide » de FormikDisplay, donc le\r\n * marqueur est reproduit ici plutot que delegue. */\r\n if (readOnly && !disabled) {\r\n return (\r\n <FormikDisplay\r\n name={name}\r\n label={label}\r\n {...(hint !== undefined ? { hint } : {})}\r\n format={(raw) => {\r\n const parsed = coerceToDate(raw, outputFormat);\r\n return parsed ? moment(parsed).format(readOnlyFormat) : \"\\u2014\";\r\n }}\r\n />\r\n );\r\n }\r\n\r\n return (\r\n <Field\r\n label={label}\r\n error={hasError ? meta.error : null}\r\n hint={!hasError ? hint : undefined}\r\n htmlFor={htmlFor || name}\r\n {...(required !== undefined ? { required } : {})}\r\n {...(disabled !== undefined ? { disabled } : {})}\r\n {...(width !== undefined ? { width } : {})}\r\n >\r\n <DateTimePicker\r\n value={coerceToDate(field.value, outputFormat)}\r\n onChange={(next) => {\r\n setFieldValue(name, serialiseDate(next, outputFormat));\r\n setFieldTouched(name, true, false);\r\n }}\r\n {...rest}\r\n />\r\n </Field>\r\n );\r\n};\r\n\r\nexport default FormikDateTimePicker;\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"FormikDateTimePicker.js","names":["React","moment","useField","useFormikContext","Field","DateTimePicker","FormikDisplay","coerceToDate","serialiseDate","jsx","_jsx","FormikDateTimePicker","name","label","required","disabled","readOnly","readOnlyFormat","htmlFor","hint","outputFormat","width","rest","field","meta","setFieldValue","setFieldTouched","hasError","Boolean","touched","error","undefined","format","raw","parsed","children","value","onChange","next"],"sources":["../../../../src/lib/v2/patterns/FormikDateTimePicker.tsx"],"sourcesContent":["/**\r\n * FormikDateTimePicker — bridge between Formik state and v2.Field +\r\n * v2.DateTimePicker.\r\n *\r\n * ── WHY (gap G-E) ────────────────────────────────────────────────────\r\n *\r\n * `FormikDatePicker` was the ONLY Formik date bridge in the library, and it is\r\n * date-only. Any host with a date-AND-TIME field therefore had two options:\r\n * drop the time, or hand-wire `useField` + the bare `DateTimePicker`.\r\n *\r\n * Dropping the time is not a styling compromise — it CHANGES WHAT THE BACKEND\r\n * RECEIVES. Reported from refonte-frontend (lot 7): the physical-visit form\r\n * stores a visit date carrying an hour and submits\r\n * `moment(value).format(\"YYYY-MM-DD HH:mm\")`. Routed through the date-only\r\n * bridge, every visit would have been scheduled at 00:00 — silently, with no\r\n * error anywhere, and only the agent showing up at the wrong time would\r\n * eventually notice.\r\n *\r\n * Hand-wiring is the duplication R-2.1 forbids, and the shape in which\r\n * validation messages go missing (see gaps G-A and G-C, same story).\r\n *\r\n * Usage:\r\n *\r\n * <FormikDateTimePicker\r\n * name=\"dateVisite\"\r\n * label=\"Date de la visite\"\r\n * required\r\n * />\r\n *\r\n * // Field must store a string in the charter datetime format:\r\n * <FormikDateTimePicker\r\n * name=\"dateVisite\"\r\n * outputFormat={DATETIME_FORMAT_CHARTER} // \"YYYY-MM-DD HH:mm\"\r\n * />\r\n *\r\n * ── SERIALISATION IS SHARED WITH FormikDatePicker, DELIBERATELY ──────\r\n *\r\n * `coerceToDate` / `serialiseDate` live in `./_pickerSerialisation` and are\r\n * used by BOTH bridges. That is not tidiness: `FormikDatePicker`'s S-03 note\r\n * documents what happens when the read and the write of a date disagree — a\r\n * stored \"31-12-2026\" read back by `new Date()` becomes Invalid Date, a stored\r\n * \"05-03-2026\" becomes 3 May instead of 5 March. The write path works, so the\r\n * damage only appears on RE-POPULATE, i.e. in an edit flow, which is the path\r\n * a smoke test is least likely to exercise. One module shipped that for seven\r\n * batches under a clean strict typecheck.\r\n *\r\n * Two private copies of that couple would have re-created the same class of\r\n * bug in a form even harder to spot.\r\n *\r\n * ── DEFAULT OUTPUT IS A Date, LIKE THE SIBLING ──────────────────────\r\n *\r\n * With no `outputFormat`, the field stores `Date | null` — which is what\r\n * `Yup.date()` expects and what a host formatting at submit time already\r\n * handles. Pass `\"iso\"` for ISO 8601, or any moment token string (typically\r\n * `DATETIME_FORMAT_CHARTER`) when the schema is a `Yup.string()` with a format\r\n * test. Whatever is chosen, reading back uses the SAME format.\r\n *\r\n * Modal / Drawer usage (MUI X v9): the picker popup may render behind a modal\r\n * surface (both default to zIndex 1300). Forward\r\n * `slotProps={{ popper: { sx: { zIndex: 1400 } } }}` — it reaches\r\n * MuiDateTimePicker through `...rest`, exactly as on `FormikDatePicker`.\r\n *\r\n * Charter §03 · R-I.*. Peer dependency: formik >= 2.x.\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport moment from \"moment\";\r\nimport { useField, useFormikContext } from \"formik\";\r\nimport Field from \"../components/Field\";\r\nimport DateTimePicker from \"../components/DateTimePicker\";\r\nimport FormikDisplay from \"../components/FormikDisplay\";\r\nimport { coerceToDate, serialiseDate } from \"./_pickerSerialisation\";\r\nimport type { FieldWidth } from \"../components/Field\";\r\nimport type { DateTimePickerProps } from \"../components/DateTimePicker\";\r\n\r\nexport interface FormikDateTimePickerProps\r\n extends Omit<\r\n DateTimePickerProps,\r\n \"value\" | \"onChange\" | \"disabled\" | \"error\" | \"label\" | \"readOnly\"\r\n > {\r\n name: string;\r\n label?: React.ReactNode | undefined;\r\n required?: boolean | undefined;\r\n disabled?: boolean | undefined;\r\n htmlFor?: string | undefined;\r\n hint?: React.ReactNode | undefined;\r\n /**\r\n * When provided, the Formik field stores a formatted STRING instead of a\r\n * `Date`. Pass `\"iso\"` for ISO 8601, or any moment token string — typically\r\n * `DATETIME_FORMAT_CHARTER` (\"YYYY-MM-DD HH:mm\"). Defaults to undefined\r\n * (`Date | null`).\r\n */\r\n outputFormat?: string | undefined;\r\n /**\r\n * Render the value as read-only text via `FormikDisplay` instead of a\r\n * picker. `disabled` wins when both are passed — same rule as\r\n * `FormikInput` and `FormikDatePicker`.\r\n *\r\n * Omitted from `DateTimePickerProps` above for the same two reasons as on\r\n * the sibling: MUI declares `readOnly?: boolean` with no `| undefined`, which\r\n * an optional section prop cannot satisfy under\r\n * `exactOptionalPropertyTypes`; and this prop SUPERSEDES MUI's meaning —\r\n * MUI keeps the text field and blocks editing, this one replaces the field\r\n * with text, so there is no input left to mark read-only.\r\n */\r\n readOnly?: boolean | undefined;\r\n /**\r\n * Display format in read-only mode. Defaults to the French convention rather\r\n * than to `outputFormat`: what the field STORES and what a reader should SEE\r\n * are different concerns — a field storing ISO should still read as\r\n * 31/12/2026 14:30.\r\n */\r\n readOnlyFormat?: string | undefined;\r\n /**\r\n * Gabarit de largeur semantique (G-H). Le standard range les dates en `s`\r\n * (6 a 15 caracteres) : une date-heure au format charte en fait 16, donc `s`\r\n * ou `m` selon la place disponible. Ne s'applique pas en mode `readOnly`.\r\n */\r\n width?: FieldWidth | undefined;\r\n}\r\n\r\nconst FormikDateTimePicker = ({\r\n name,\r\n label,\r\n required,\r\n disabled,\r\n readOnly,\r\n readOnlyFormat = \"DD/MM/YYYY HH:mm\",\r\n htmlFor,\r\n hint,\r\n outputFormat,\r\n width,\r\n ...rest\r\n}: FormikDateTimePickerProps) => {\r\n const [field, meta] = useField(name);\r\n const { setFieldValue, setFieldTouched } = useFormikContext();\r\n const hasError = Boolean(meta.touched && meta.error);\r\n\r\n /* Lecture seule. On repasse par `coerceToDate` avec le MEME `outputFormat`\r\n * que le champ utilise pour ecrire : c'est la symetrie de S-03. `format`\r\n * court-circuite la branche « valeur vide » de FormikDisplay, donc le\r\n * marqueur est reproduit ici plutot que delegue. */\r\n if (readOnly && !disabled) {\r\n return (\r\n <FormikDisplay\r\n name={name}\r\n label={label}\r\n {...(hint !== undefined ? { hint } : {})}\r\n format={(raw) => {\r\n const parsed = coerceToDate(raw, outputFormat);\r\n return parsed ? moment(parsed).format(readOnlyFormat) : \"\\u2014\";\r\n }}\r\n />\r\n );\r\n }\r\n\r\n return (\r\n <Field\r\n label={label}\r\n error={hasError ? meta.error : null}\r\n hint={!hasError ? hint : undefined}\r\n htmlFor={htmlFor || name}\r\n {...(required !== undefined ? { required } : {})}\r\n {...(disabled !== undefined ? { disabled } : {})}\r\n {...(width !== undefined ? { width } : {})}\r\n >\r\n <DateTimePicker\r\n value={coerceToDate(field.value, outputFormat)}\r\n onChange={(next) => {\r\n setFieldValue(name, serialiseDate(next, outputFormat));\r\n setFieldTouched(name, true, false);\r\n }}\r\n {...rest}\r\n />\r\n </Field>\r\n );\r\n};\r\n\r\nexport default FormikDateTimePicker;\r\n"],"mappings":"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","ignoreList":[]}