@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,12 +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
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
3
- 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); }
4
- 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; }
5
- 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; }
6
- 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; }
7
- 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; }
8
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
9
- 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); }
10
1
  /**
11
2
  * _dataGridShared — Portnet UI v2 (private)
12
3
  */
@@ -45,14 +36,12 @@ import { mergeLabels as mergeLabelDict } from "../utils/mergeLabels";
45
36
  * renderers (Pagination, DataGrid) read them without optional access.
46
37
  */
47
38
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
48
- export var DEFAULT_PAGE_SIZES = [25, 50, 100];
49
- export var DEFAULT_MAX_BODY_HEIGHT = "70vh";
50
- export var DEFAULT_LABELS = Object.freeze({
39
+ export const DEFAULT_PAGE_SIZES = [25, 50, 100];
40
+ export const DEFAULT_MAX_BODY_HEIGHT = "70vh";
41
+ export const DEFAULT_LABELS = Object.freeze({
51
42
  tableAria: "Tableau",
52
43
  selectAll: "Tout sélectionner",
53
- selectRow: function selectRow(id) {
54
- return "S\xE9lectionner la ligne ".concat(id);
55
- },
44
+ selectRow: id => `Sélectionner la ligne ${id}`,
56
45
  actionsHeader: "Actions",
57
46
  pagination: Object.freeze({
58
47
  loading: "Chargement…",
@@ -62,9 +51,7 @@ export var DEFAULT_LABELS = Object.freeze({
62
51
  nextPage: "Page suivante",
63
52
  lastPage: "Dernière page",
64
53
  navLabel: "Pagination",
65
- rangeOf: function rangeOf(from, to, total, fmt) {
66
- return "".concat(from, "\u2013").concat(to, " sur ").concat(fmt(total));
67
- }
54
+ rangeOf: (from, to, total, fmt) => `${from}–${to} sur ${fmt(total)}`
68
55
  })
69
56
  });
70
57
  export function mergeLabels(labels) {
@@ -88,68 +75,45 @@ export function mergeLabels(labels) {
88
75
  * arrays. Convention for the whole library: a nested label dictionary is
89
76
  * merged at its own level.
90
77
  */
91
- return mergeLabelDict(DEFAULT_LABELS, _objectSpread(_objectSpread({}, labels), {}, {
78
+ return mergeLabelDict(DEFAULT_LABELS, {
79
+ ...labels,
92
80
  pagination: mergeLabelDict(DEFAULT_LABELS.pagination, labels.pagination)
93
- }));
81
+ });
94
82
  }
95
83
  export function makeNumberFormatter(locale) {
96
84
  try {
97
85
  return new Intl.NumberFormat(locale);
98
- } catch (_unused) {
86
+ } catch {
99
87
  return new Intl.NumberFormat("fr-FR");
100
88
  }
101
89
  }
102
90
  export function applyColumnOrder(columns, columnOrder) {
103
91
  if (!columnOrder || columnOrder.length === 0) return columns;
104
- var byKey = new Map(columns.map(function (c) {
105
- return [c.key, c];
106
- }));
107
- var ordered = [];
108
- var _iterator = _createForOfIteratorHelper(columnOrder),
109
- _step;
110
- try {
111
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
112
- var key = _step.value;
113
- var col = byKey.get(key);
114
- if (col !== undefined) {
115
- ordered.push(col);
116
- byKey["delete"](key);
117
- }
118
- }
119
- } catch (err) {
120
- _iterator.e(err);
121
- } finally {
122
- _iterator.f();
123
- }
124
- var _iterator2 = _createForOfIteratorHelper(byKey.values()),
125
- _step2;
126
- try {
127
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
128
- var _col = _step2.value;
129
- ordered.push(_col);
92
+ const byKey = new Map(columns.map(c => [c.key, c]));
93
+ const ordered = [];
94
+ for (const key of columnOrder) {
95
+ const col = byKey.get(key);
96
+ if (col !== undefined) {
97
+ ordered.push(col);
98
+ byKey.delete(key);
130
99
  }
131
- } catch (err) {
132
- _iterator2.e(err);
133
- } finally {
134
- _iterator2.f();
135
100
  }
101
+ for (const col of byKey.values()) ordered.push(col);
136
102
  return ordered;
137
103
  }
138
104
  function columnsSignature(columns) {
139
105
  if (!Array.isArray(columns)) return "";
140
- return columns.map(function (c) {
141
- return c && _typeof(c) === "object" ? c.key : c;
142
- }).join("|");
106
+ return columns.map(c => c && typeof c === "object" ? c.key : c).join("|");
143
107
  }
144
108
  export function useColumnsStabilityWarn(columns) {
145
- var prevColumnsRef = React.useRef(columns);
146
- var warnedRef = React.useRef(false);
147
- React.useEffect(function () {
109
+ const prevColumnsRef = React.useRef(columns);
110
+ const warnedRef = React.useRef(false);
111
+ React.useEffect(() => {
148
112
  if (process.env["NODE_ENV"] === "production") return;
149
113
  if (warnedRef.current) return;
150
114
  if (prevColumnsRef.current === columns) return;
151
- var prevSig = columnsSignature(prevColumnsRef.current);
152
- var nextSig = columnsSignature(columns);
115
+ const prevSig = columnsSignature(prevColumnsRef.current);
116
+ const nextSig = columnsSignature(columns);
153
117
  if (prevSig && prevSig === nextSig) {
154
118
  // eslint-disable-next-line no-console
155
119
  console.warn("[@portnet/ui v2] DataGrid received a new `columns` reference with identical column keys. Define columns outside render or wrap in useMemo.");
@@ -158,10 +122,10 @@ export function useColumnsStabilityWarn(columns) {
158
122
  prevColumnsRef.current = columns;
159
123
  });
160
124
  }
161
- export var PAGINATION_ICON_SX = Object.freeze({
125
+ export const PAGINATION_ICON_SX = Object.freeze({
162
126
  transform: "scaleX(var(--pui-rtl-flip, 1))"
163
127
  });
164
- export var CONTAINER_SX = Object.freeze({
128
+ export const CONTAINER_SX = Object.freeze({
165
129
  background: "transparent",
166
130
  overflow: "hidden"
167
131
  });
@@ -184,7 +148,7 @@ export var CONTAINER_SX = Object.freeze({
184
148
  * letterSpacing is reset to "normal" because all-caps text uses wider
185
149
  * tracking which looks wrong on title-case column headers.
186
150
  */
187
- var TABLE_BASE_SX = Object.freeze({
151
+ const TABLE_BASE_SX = Object.freeze({
188
152
  borderCollapse: "separate",
189
153
  borderSpacing: 0,
190
154
  "& thead th": {
@@ -205,15 +169,17 @@ var TABLE_BASE_SX = Object.freeze({
205
169
  borderBottom: "1px solid var(--border)"
206
170
  }
207
171
  });
208
- export var TABLE_BY_DENSITY = Object.freeze({
172
+ export const TABLE_BY_DENSITY = Object.freeze({
209
173
  comfortable: TABLE_BASE_SX,
210
- compact: Object.freeze(_objectSpread(_objectSpread({}, TABLE_BASE_SX), {}, {
211
- "& tbody td": _objectSpread(_objectSpread({}, TABLE_BASE_SX["& tbody td"]), {}, {
174
+ compact: Object.freeze({
175
+ ...TABLE_BASE_SX,
176
+ "& tbody td": {
177
+ ...TABLE_BASE_SX["& tbody td"],
212
178
  padding: "var(--s-2) var(--s-4)"
213
- })
214
- }))
179
+ }
180
+ })
215
181
  });
216
- var ROW_HOVER_SELECTED_SX = Object.freeze({
182
+ const ROW_HOVER_SELECTED_SX = Object.freeze({
217
183
  "&:nth-of-type(even)": {
218
184
  backgroundColor: "var(--bg-subtle)"
219
185
  },
@@ -230,26 +196,28 @@ var ROW_HOVER_SELECTED_SX = Object.freeze({
230
196
  }
231
197
  }
232
198
  });
233
- export var ROW_CLICKABLE_SX = Object.freeze(_objectSpread(_objectSpread({}, ROW_HOVER_SELECTED_SX), {}, {
199
+ export const ROW_CLICKABLE_SX = Object.freeze({
200
+ ...ROW_HOVER_SELECTED_SX,
234
201
  cursor: "pointer",
235
202
  "&:focus-visible": {
236
203
  outline: "2px solid var(--accent)",
237
204
  outlineOffset: "var(--pui-outline-offset-inset)"
238
205
  }
239
- }));
240
- export var ROW_STATIC_SX = Object.freeze(_objectSpread(_objectSpread({}, ROW_HOVER_SELECTED_SX), {}, {
206
+ });
207
+ export const ROW_STATIC_SX = Object.freeze({
208
+ ...ROW_HOVER_SELECTED_SX,
241
209
  cursor: "default"
242
- }));
243
- export var HEADER_CHECKBOX_CELL_SX = Object.freeze({
210
+ });
211
+ export const HEADER_CHECKBOX_CELL_SX = Object.freeze({
244
212
  width: "var(--tactile-min)",
245
213
  position: "sticky",
246
214
  top: 0,
247
215
  zIndex: 2
248
216
  });
249
- export var BODY_CHECKBOX_CELL_SX = Object.freeze({
217
+ export const BODY_CHECKBOX_CELL_SX = Object.freeze({
250
218
  width: "var(--tactile-min)"
251
219
  });
252
- export var HOVER_ONLY_CELL_SX = Object.freeze({
220
+ export const HOVER_ONLY_CELL_SX = Object.freeze({
253
221
  opacity: 0,
254
222
  transition: "opacity var(--duration-fast, 120ms) ease",
255
223
  "tr:hover &, tr:focus-within &": {
@@ -259,18 +227,18 @@ export var HOVER_ONLY_CELL_SX = Object.freeze({
259
227
  opacity: 1
260
228
  }
261
229
  });
262
- export var ERROR_CELL_SX = Object.freeze({
230
+ export const ERROR_CELL_SX = Object.freeze({
263
231
  padding: 0,
264
232
  borderBottom: "none"
265
233
  });
266
- export var ERROR_INNER_SX = Object.freeze({
234
+ export const ERROR_INNER_SX = Object.freeze({
267
235
  padding: "var(--s-4)"
268
236
  });
269
- export var FILLER_CELL_SX = Object.freeze({
237
+ export const FILLER_CELL_SX = Object.freeze({
270
238
  padding: 0,
271
239
  borderBottom: "1px solid var(--border)"
272
240
  });
273
- export var FILLER_HEAD_CELL_SX = Object.freeze({
241
+ export const FILLER_HEAD_CELL_SX = Object.freeze({
274
242
  padding: 0,
275
243
  position: "sticky",
276
244
  top: 0,
@@ -281,7 +249,7 @@ export var FILLER_HEAD_CELL_SX = Object.freeze({
281
249
 
282
250
  /* ── Pagination ─────────────────────────────────────────────────── */
283
251
 
284
- var PAGINATION_CONTAINER_SX = Object.freeze({
252
+ const PAGINATION_CONTAINER_SX = Object.freeze({
285
253
  display: "flex",
286
254
  alignItems: "center",
287
255
  // R-RS / WCAG 1.4.10 — the control groups (range / page-size / nav)
@@ -298,51 +266,70 @@ var PAGINATION_CONTAINER_SX = Object.freeze({
298
266
  fontSize: "var(--text-xs)",
299
267
  color: "var(--fg-muted)"
300
268
  });
301
- var PAGINATION_RANGE_SX = Object.freeze({
269
+ const PAGINATION_RANGE_SX = Object.freeze({
302
270
  flex: 1,
303
271
  fontVariantNumeric: "tabular-nums"
304
272
  });
305
- var PAGINATION_PAGESIZE_GROUP_SX = Object.freeze({
273
+ const PAGINATION_PAGESIZE_GROUP_SX = Object.freeze({
306
274
  display: "flex",
307
275
  alignItems: "center",
308
276
  gap: "var(--s-2)"
309
277
  });
310
- var PAGINATION_NAV_GROUP_SX = Object.freeze({
278
+ const PAGINATION_NAV_GROUP_SX = Object.freeze({
311
279
  display: "flex",
312
280
  alignItems: "center",
313
281
  gap: "var(--s-1)"
314
282
  });
315
- var PAGINATION_PAGE_OF_SX = Object.freeze({
283
+ const PAGINATION_PAGE_OF_SX = Object.freeze({
316
284
  minWidth: 56,
317
285
  textAlign: "center",
318
286
  fontVariantNumeric: "tabular-nums"
319
287
  });
320
- var PAGINATION_SELECT_SX = Object.freeze({
288
+ const PAGINATION_SELECT_SX = Object.freeze({
321
289
  fontSize: "var(--text-xs)",
322
290
  height: 28
323
291
  });
324
- export function Pagination(_ref) {
325
- var page = _ref.page,
326
- pageSize = _ref.pageSize,
327
- total = _ref.total,
328
- onPageChange = _ref.onPageChange,
329
- onPageSizeChange = _ref.onPageSizeChange,
330
- _ref$pageSizes = _ref.pageSizes,
331
- pageSizes = _ref$pageSizes === void 0 ? DEFAULT_PAGE_SIZES : _ref$pageSizes,
332
- loading = _ref.loading,
333
- locale = _ref.locale,
334
- labels = _ref.labels;
335
- var pages = Math.max(1, Math.ceil(total / pageSize));
336
- var from = total === 0 ? 0 : (page - 1) * pageSize + 1;
337
- var to = Math.min(total, page * pageSize);
338
- var go = function go(p) {
339
- return onPageChange(Math.min(pages, Math.max(1, p)));
340
- };
341
- var fmt = React.useMemo(function () {
342
- var nf = makeNumberFormatter(locale);
343
- return function (n) {
344
- return nf.format(n);
345
- };
292
+
293
+ /**
294
+ * Cible tactile des quatre boutons de navigation (R-7.4 / WCAG 2.5.5).
295
+ *
296
+ * `tokens/density` énonce la règle : « Icon-only buttons MUST set
297
+ * min-width/min-height to `tactileMin` ». Ces quatre-là étaient des
298
+ * `IconButton size="small"` sans plancher — environ 34 px, dix de moins que le
299
+ * minimum, dans la barre de pagination de CHAQUE liste du portefeuille.
300
+ *
301
+ * `min-*` et non `width`/`height` : la zone d'appui grandit, le dessin de
302
+ * l'icône ne change pas. Le voisin `HEADER_CHECKBOX_CELL_SX` lit déjà
303
+ * `var(--tactile-min)` même source, même variable.
304
+ *
305
+ * >>> RESTE À ARBITRER : le sélecteur « lignes par page » juste à côté porte
306
+ * >>> `height: 28`. Pour lui, la boîte visuelle EST la zone d'appui, donc la
307
+ * >>> remonter à 44 px change le dessin de la barre : c'est une décision de
308
+ * >>> design et non une correction de défaut, et elle ne se prend pas dans un
309
+ * >>> commit d'accessibilité. Signalée ici pour qu'elle ne se perde pas. <<<
310
+ */
311
+ const PAGINATION_BUTTON_SX = Object.freeze({
312
+ minWidth: "var(--tactile-min)",
313
+ minHeight: "var(--tactile-min)"
314
+ });
315
+ export function Pagination({
316
+ page,
317
+ pageSize,
318
+ total,
319
+ onPageChange,
320
+ onPageSizeChange,
321
+ pageSizes = DEFAULT_PAGE_SIZES,
322
+ loading,
323
+ locale,
324
+ labels
325
+ }) {
326
+ const pages = Math.max(1, Math.ceil(total / pageSize));
327
+ const from = total === 0 ? 0 : (page - 1) * pageSize + 1;
328
+ const to = Math.min(total, page * pageSize);
329
+ const go = p => onPageChange(Math.min(pages, Math.max(1, p)));
330
+ const fmt = React.useMemo(() => {
331
+ const nf = makeNumberFormatter(locale);
332
+ return n => nf.format(n);
346
333
  }, [locale]);
347
334
  return /*#__PURE__*/_jsxs(Box, {
348
335
  component: "nav",
@@ -361,40 +348,34 @@ export function Pagination(_ref) {
361
348
  }), /*#__PURE__*/_jsx(Select, {
362
349
  size: "small",
363
350
  value: pageSize,
364
- onChange: function onChange(e) {
365
- return onPageSizeChange(Number(e.target.value));
366
- },
351
+ onChange: e => onPageSizeChange(Number(e.target.value)),
367
352
  inputProps: {
368
353
  "aria-label": String(labels.rowsPerPage)
369
354
  },
370
355
  sx: PAGINATION_SELECT_SX,
371
- children: pageSizes.map(function (s) {
372
- return /*#__PURE__*/_jsx(MenuItem, {
373
- value: s,
374
- children: s
375
- }, s);
376
- })
356
+ children: pageSizes.map(s => /*#__PURE__*/_jsx(MenuItem, {
357
+ value: s,
358
+ children: s
359
+ }, s))
377
360
  })]
378
361
  }), /*#__PURE__*/_jsxs(Box, {
379
362
  sx: PAGINATION_NAV_GROUP_SX,
380
363
  children: [/*#__PURE__*/_jsx(IconButton, {
381
364
  size: "small",
382
- onClick: function onClick() {
383
- return go(1);
384
- },
365
+ onClick: () => go(1),
385
366
  disabled: page <= 1,
386
367
  "aria-label": labels.firstPage,
368
+ sx: PAGINATION_BUTTON_SX,
387
369
  children: /*#__PURE__*/_jsx(FirstPageIcon, {
388
370
  fontSize: "small",
389
371
  sx: PAGINATION_ICON_SX
390
372
  })
391
373
  }), /*#__PURE__*/_jsx(IconButton, {
392
374
  size: "small",
393
- onClick: function onClick() {
394
- return go(page - 1);
395
- },
375
+ onClick: () => go(page - 1),
396
376
  disabled: page <= 1,
397
377
  "aria-label": labels.previousPage,
378
+ sx: PAGINATION_BUTTON_SX,
398
379
  children: /*#__PURE__*/_jsx(KeyboardArrowLeftIcon, {
399
380
  fontSize: "small",
400
381
  sx: PAGINATION_ICON_SX
@@ -404,22 +385,20 @@ export function Pagination(_ref) {
404
385
  children: [page, " / ", pages]
405
386
  }), /*#__PURE__*/_jsx(IconButton, {
406
387
  size: "small",
407
- onClick: function onClick() {
408
- return go(page + 1);
409
- },
388
+ onClick: () => go(page + 1),
410
389
  disabled: page >= pages,
411
390
  "aria-label": labels.nextPage,
391
+ sx: PAGINATION_BUTTON_SX,
412
392
  children: /*#__PURE__*/_jsx(KeyboardArrowRightIcon, {
413
393
  fontSize: "small",
414
394
  sx: PAGINATION_ICON_SX
415
395
  })
416
396
  }), /*#__PURE__*/_jsx(IconButton, {
417
397
  size: "small",
418
- onClick: function onClick() {
419
- return go(pages);
420
- },
398
+ onClick: () => go(pages),
421
399
  disabled: page >= pages,
422
400
  "aria-label": labels.lastPage,
401
+ sx: PAGINATION_BUTTON_SX,
423
402
  children: /*#__PURE__*/_jsx(LastPageIcon, {
424
403
  fontSize: "small",
425
404
  sx: PAGINATION_ICON_SX
@@ -1 +1 @@
1
- {"version":3,"file":"_dataGridShared.js","names":["React","Box","IconButton","KeyboardArrowLeftIcon","KeyboardArrowRightIcon","FirstPageIcon","LastPageIcon","Select","MenuItem","mergeLabels","mergeLabelDict","jsx","_jsx","jsxs","_jsxs","DEFAULT_PAGE_SIZES","DEFAULT_MAX_BODY_HEIGHT","DEFAULT_LABELS","Object","freeze","tableAria","selectAll","selectRow","id","concat","actionsHeader","pagination","loading","rowsPerPage","firstPage","previousPage","nextPage","lastPage","navLabel","rangeOf","from","to","total","fmt","labels","_objectSpread","makeNumberFormatter","locale","Intl","NumberFormat","_unused","applyColumnOrder","columns","columnOrder","length","byKey","Map","map","c","key","ordered","_iterator","_createForOfIteratorHelper","_step","s","n","done","value","col","get","undefined","push","err","e","f","_iterator2","values","_step2","columnsSignature","Array","isArray","_typeof","join","useColumnsStabilityWarn","prevColumnsRef","useRef","warnedRef","useEffect","process","env","current","prevSig","nextSig","console","warn","PAGINATION_ICON_SX","transform","CONTAINER_SX","background","overflow","TABLE_BASE_SX","borderCollapse","borderSpacing","backgroundColor","color","fontWeight","fontSize","textTransform","letterSpacing","borderBottom","padding","whiteSpace","TABLE_BY_DENSITY","comfortable","compact","ROW_HOVER_SELECTED_SX","boxShadow","ROW_CLICKABLE_SX","cursor","outline","outlineOffset","ROW_STATIC_SX","HEADER_CHECKBOX_CELL_SX","width","position","top","zIndex","BODY_CHECKBOX_CELL_SX","HOVER_ONLY_CELL_SX","opacity","transition","ERROR_CELL_SX","ERROR_INNER_SX","FILLER_CELL_SX","FILLER_HEAD_CELL_SX","PAGINATION_CONTAINER_SX","display","alignItems","flexWrap","gap","borderTop","PAGINATION_RANGE_SX","flex","fontVariantNumeric","PAGINATION_PAGESIZE_GROUP_SX","PAGINATION_NAV_GROUP_SX","PAGINATION_PAGE_OF_SX","minWidth","textAlign","PAGINATION_SELECT_SX","height","Pagination","_ref","page","pageSize","onPageChange","onPageSizeChange","_ref$pageSizes","pageSizes","pages","Math","max","ceil","min","go","p","useMemo","nf","format","component","sx","children","role","size","onChange","Number","target","inputProps","String","onClick","disabled"],"sources":["../../../../src/lib/v2/patterns/_dataGridShared.tsx"],"sourcesContent":["/**\r\n * _dataGridShared — Portnet UI v2 (private)\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport KeyboardArrowLeftIcon from \"@mui/icons-material/KeyboardArrowLeft\";\r\nimport KeyboardArrowRightIcon from \"@mui/icons-material/KeyboardArrowRight\";\r\nimport FirstPageIcon from \"@mui/icons-material/FirstPage\";\r\nimport LastPageIcon from \"@mui/icons-material/LastPage\";\r\nimport Select from \"@mui/material/Select\";\r\nimport MenuItem from \"@mui/material/MenuItem\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\nimport type { Density, RowId } from \"../types/common\";\r\nimport type { DataGridLabels, DataGridPaginationLabels } from \"../types/datagrid\";\r\nimport { mergeLabels as mergeLabelDict } from \"../utils/mergeLabels\";\r\n\r\n/**\r\n * Strips optionality AND an explicitly-declared `| undefined`.\r\n *\r\n * `Required<T>` is NOT sufficient here, and the difference is invisible until it\r\n * bites. `-?` removes `undefined` only when it was IMPLIED by the `?` marker.\r\n * Under `exactOptionalPropertyTypes` — mandatory platform-wide — the public label\r\n * shapes declare `?: T | undefined` explicitly, so that `undefined` is part of\r\n * the declared type and survives `Required<>`. The \"fully-resolved\" shapes below\r\n * silently stopped being resolved, and every renderer that read them without an\r\n * optional check became a type error (three of them).\r\n *\r\n * `Exclude<T[K], undefined>` removes it for real. Behaviour is identical to what\r\n * `Required<>` produced BEFORE the optional props were widened — this restores\r\n * the original intent rather than changing it.\r\n */\r\ntype Concrete<T> = { [K in keyof T]-?: Exclude<T[K], undefined> };\r\n\r\n/**\r\n * Fully-resolved (all-present) label shapes. The public DataGridLabels /\r\n * DataGridPaginationLabels (../types/datagrid) are the OVERRIDE shapes (every\r\n * field optional). After mergeLabels every field is guaranteed present, so the\r\n * renderers (Pagination, DataGrid) read them without optional access.\r\n */\r\nexport type ResolvedDataGridPaginationLabels = Concrete<DataGridPaginationLabels>;\r\nexport type ResolvedDataGridLabels = Concrete<Omit<DataGridLabels, \"pagination\">> & {\r\n pagination: ResolvedDataGridPaginationLabels;\r\n};\r\n\r\nexport const DEFAULT_PAGE_SIZES = [25, 50, 100];\r\nexport const DEFAULT_MAX_BODY_HEIGHT = \"70vh\";\r\n\r\nexport const DEFAULT_LABELS: ResolvedDataGridLabels = Object.freeze({\r\n tableAria: \"Tableau\",\r\n selectAll: \"Tout sélectionner\",\r\n selectRow: (id: RowId) => `Sélectionner la ligne ${id}`,\r\n actionsHeader: \"Actions\",\r\n pagination: Object.freeze({\r\n loading: \"Chargement…\",\r\n rowsPerPage: \"Lignes par page\",\r\n firstPage: \"Première page\",\r\n previousPage: \"Page précédente\",\r\n nextPage: \"Page suivante\",\r\n lastPage: \"Dernière page\",\r\n navLabel: \"Pagination\",\r\n rangeOf: (from: number, to: number, total: number, fmt: (n: number) => string) => `${from}–${to} sur ${fmt(total)}`,\r\n }),\r\n});\r\n\r\nexport function mergeLabels(labels?: DataGridLabels): ResolvedDataGridLabels {\r\n if (!labels) return DEFAULT_LABELS;\r\n /*\r\n * Both levels go through the shared undefined-safe merge. A spread does not skip\r\n * explicit `undefined`, so the previous form — a bare object spread of the\r\n * overrides over the defaults — let a consumer passing `selectRow: undefined`\r\n * DELETE the default and crash the renderer. The old `|| {}` guarded the nested\r\n * `pagination` object against being undefined, but not its individual VALUES —\r\n * same hazard, one level down.\r\n *\r\n * The broken form is described rather than quoted, deliberately:\r\n * scripts/fix-label-merge.mjs is a text scan, and a verbatim copy here matched it\r\n * — so the codemod offered to rewrite this COMMENT. Same lesson KPICard already\r\n * records for the banned-patterns guard.\r\n *\r\n * `pagination` is merged at its OWN level, deliberately, rather than through a\r\n * recursive deep merge: two explicit levels can be read, whereas a recursive\r\n * helper hides how deep it goes and raises the question of what it does to\r\n * arrays. Convention for the whole library: a nested label dictionary is\r\n * merged at its own level.\r\n */\r\n return mergeLabelDict(DEFAULT_LABELS, {\r\n ...labels,\r\n pagination: mergeLabelDict(DEFAULT_LABELS.pagination, labels.pagination),\r\n });\r\n}\r\n\r\nexport function makeNumberFormatter(locale?: string): Intl.NumberFormat {\r\n try { return new Intl.NumberFormat(locale); }\r\n catch { return new Intl.NumberFormat(\"fr-FR\"); }\r\n}\r\n\r\nexport function applyColumnOrder<C extends { key: string }>(\r\n columns: C[],\r\n columnOrder: string[] | null | undefined\r\n): C[] {\r\n if (!columnOrder || columnOrder.length === 0) return columns;\r\n const byKey = new Map<string, C>(columns.map((c): [string, C] => [c.key, c]));\r\n const ordered: C[] = [];\r\n for (const key of columnOrder) {\r\n const col = byKey.get(key);\r\n if (col !== undefined) { ordered.push(col); byKey.delete(key); }\r\n }\r\n for (const col of byKey.values()) ordered.push(col);\r\n return ordered;\r\n}\r\n\r\nfunction columnsSignature(columns: unknown): string {\r\n if (!Array.isArray(columns)) return \"\";\r\n return (columns as unknown[])\r\n .map((c) => (c && typeof c === \"object\" ? (c as { key?: unknown }).key : c))\r\n .join(\"|\");\r\n}\r\n\r\nexport function useColumnsStabilityWarn(columns: unknown): void {\r\n const prevColumnsRef = React.useRef(columns);\r\n const warnedRef = React.useRef(false);\r\n React.useEffect(() => {\r\n if (process.env[\"NODE_ENV\"] === \"production\") return;\r\n if (warnedRef.current) return;\r\n if (prevColumnsRef.current === columns) return;\r\n const prevSig = columnsSignature(prevColumnsRef.current);\r\n const nextSig = columnsSignature(columns);\r\n if (prevSig && prevSig === nextSig) {\r\n // eslint-disable-next-line no-console\r\n console.warn(\"[@portnet/ui v2] DataGrid received a new `columns` reference with identical column keys. Define columns outside render or wrap in useMemo.\");\r\n warnedRef.current = true;\r\n }\r\n prevColumnsRef.current = columns;\r\n });\r\n}\r\n\r\nexport const PAGINATION_ICON_SX = Object.freeze({ transform: \"scaleX(var(--pui-rtl-flip, 1))\" });\r\nexport const CONTAINER_SX = Object.freeze({ background: \"transparent\", overflow: \"hidden\" } satisfies SxProps<Theme>);\r\n\r\n/*\r\n * TABLE_BASE_SX — applied to the MUI <Table> via the sx prop.\r\n *\r\n * textTransform: \"none\" is INTENTIONALLY EXPLICIT here.\r\n *\r\n * Why not rely on the MUI theme (MuiTableCell.head.textTransform: \"none\")?\r\n *\r\n * Emotion injects sx-prop rules AFTER theme styleOverrides. Both rules\r\n * target <th> with equal specificity (1 class + 1 element). The last\r\n * one injected wins. sx wins over theme → the sx value is the truth.\r\n *\r\n * The old bug: this object had textTransform:\"uppercase\" which silently\r\n * overrode the theme's \"none\". The fix: keep explicit \"none\" here so\r\n * the correct value wins unconditionally, regardless of injection order.\r\n *\r\n * letterSpacing is reset to \"normal\" because all-caps text uses wider\r\n * tracking which looks wrong on title-case column headers.\r\n */\r\nconst TABLE_BASE_SX = Object.freeze({\r\n borderCollapse: \"separate\",\r\n borderSpacing: 0,\r\n \"& thead th\": {\r\n backgroundColor: \"var(--bg-subtle)\",\r\n color: \"var(--fg-muted)\",\r\n fontWeight: \"var(--fw-semibold)\",\r\n fontSize: \"var(--text-xs)\",\r\n textTransform: \"none\", // EXPLICIT — beats emotion injection order\r\n letterSpacing: \"normal\", // reset all-caps tracking\r\n borderBottom: \"1px solid var(--border)\",\r\n padding: \"var(--s-3) var(--s-4)\",\r\n whiteSpace: \"nowrap\",\r\n },\r\n \"& tbody td\": {\r\n padding: \"var(--s-3) var(--s-4)\",\r\n borderBottom: \"1px solid var(--border)\",\r\n },\r\n} satisfies SxProps<Theme>);\r\n\r\nexport const TABLE_BY_DENSITY: Record<Density, SxProps<Theme>> = Object.freeze({\r\n comfortable: TABLE_BASE_SX,\r\n compact: Object.freeze({\r\n ...TABLE_BASE_SX,\r\n \"& tbody td\": { ...TABLE_BASE_SX[\"& tbody td\"], padding: \"var(--s-2) var(--s-4)\" },\r\n } satisfies SxProps<Theme>),\r\n});\r\n\r\nconst ROW_HOVER_SELECTED_SX = Object.freeze({\r\n \"&:nth-of-type(even)\": { backgroundColor: \"var(--bg-subtle)\" },\r\n \"&:hover\": { backgroundColor: \"var(--bg-hover)\" },\r\n \"&[data-selected]\": { backgroundColor: \"var(--accent-soft)\" },\r\n \"&[data-active]\": {\r\n backgroundColor: \"var(--accent-soft)\",\r\n \"& > td:first-of-type\": { boxShadow: \"inset calc(3px * var(--pui-rtl-flip, 1)) 0 0 var(--accent)\" },\r\n },\r\n});\r\n\r\nexport const ROW_CLICKABLE_SX = Object.freeze({\r\n ...ROW_HOVER_SELECTED_SX,\r\n cursor: \"pointer\",\r\n \"&:focus-visible\": { outline: \"2px solid var(--accent)\", outlineOffset: \"var(--pui-outline-offset-inset)\" },\r\n} satisfies SxProps<Theme>);\r\n\r\nexport const ROW_STATIC_SX = Object.freeze({ ...ROW_HOVER_SELECTED_SX, cursor: \"default\" } satisfies SxProps<Theme>);\r\n\r\nexport const HEADER_CHECKBOX_CELL_SX = Object.freeze({ width: \"var(--tactile-min)\", position: \"sticky\", top: 0, zIndex: 2 } satisfies SxProps<Theme>);\r\nexport const BODY_CHECKBOX_CELL_SX = Object.freeze({ width: \"var(--tactile-min)\" });\r\n\r\nexport const HOVER_ONLY_CELL_SX = Object.freeze({\r\n opacity: 0,\r\n transition: \"opacity var(--duration-fast, 120ms) ease\",\r\n \"tr:hover &, tr:focus-within &\": { opacity: 1 },\r\n \"@media (pointer: coarse)\": { opacity: 1 },\r\n});\r\n\r\nexport const ERROR_CELL_SX = Object.freeze({ padding: 0, borderBottom: \"none\" });\r\nexport const ERROR_INNER_SX = Object.freeze({ padding: \"var(--s-4)\" });\r\n\r\nexport const FILLER_CELL_SX = Object.freeze({ padding: 0, borderBottom: \"1px solid var(--border)\" });\r\nexport const FILLER_HEAD_CELL_SX = Object.freeze({\r\n padding: 0, position: \"sticky\", top: 0, zIndex: 1,\r\n background: \"var(--bg-subtle)\", borderBottom: \"1px solid var(--border)\",\r\n} satisfies SxProps<Theme>);\r\n\r\n/* ── Pagination ─────────────────────────────────────────────────── */\r\n\r\nconst PAGINATION_CONTAINER_SX = Object.freeze({\r\n display: \"flex\", alignItems: \"center\",\r\n // R-RS / WCAG 1.4.10 — the control groups (range / page-size / nav)\r\n // must wrap onto extra lines on narrow viewports. Their combined fixed\r\n // width (~400px+) exceeds a 320–375px phone, so without flexWrap the\r\n // bar overflowed its container and pushed the nav buttons off-screen.\r\n // rowGap (s2) keeps wrapped rows tight; columnGap (s4) is the original\r\n // inter-group spacing on a single row.\r\n flexWrap: \"wrap\", gap: \"var(--s-2) var(--s-4)\",\r\n padding: \"var(--s-2) var(--s-4)\", borderTop: \"1px solid var(--border)\",\r\n background: \"var(--surface)\", fontSize: \"var(--text-xs)\", color: \"var(--fg-muted)\",\r\n} satisfies SxProps<Theme>);\r\n\r\nconst PAGINATION_RANGE_SX = Object.freeze({ flex: 1, fontVariantNumeric: \"tabular-nums\" });\r\nconst PAGINATION_PAGESIZE_GROUP_SX = Object.freeze({ display: \"flex\", alignItems: \"center\", gap: \"var(--s-2)\" } satisfies SxProps<Theme>);\r\nconst PAGINATION_NAV_GROUP_SX = Object.freeze({ display: \"flex\", alignItems: \"center\", gap: \"var(--s-1)\" } satisfies SxProps<Theme>);\r\nconst PAGINATION_PAGE_OF_SX = Object.freeze({ minWidth: 56, textAlign: \"center\", fontVariantNumeric: \"tabular-nums\" } satisfies SxProps<Theme>);\r\nconst PAGINATION_SELECT_SX = Object.freeze({ fontSize: \"var(--text-xs)\", height: 28 });\r\n\r\nexport interface PaginationProps {\r\n page: number;\r\n pageSize: number;\r\n total: number;\r\n onPageChange: (page: number) => void;\r\n onPageSizeChange?: ((pageSize: number) => void) | undefined;\r\n pageSizes?: number[] | undefined;\r\n loading?: boolean | undefined;\r\n locale?: string | undefined;\r\n labels: ResolvedDataGridPaginationLabels;\r\n}\r\n\r\nexport function Pagination({ page, pageSize, total, onPageChange, onPageSizeChange, pageSizes = DEFAULT_PAGE_SIZES, loading, locale, labels }: PaginationProps) {\r\n const pages = Math.max(1, Math.ceil(total / pageSize));\r\n const from = total === 0 ? 0 : (page - 1) * pageSize + 1;\r\n const to = Math.min(total, page * pageSize);\r\n const go = (p: number) => onPageChange(Math.min(pages, Math.max(1, p)));\r\n\r\n const fmt = React.useMemo(() => {\r\n const nf = makeNumberFormatter(locale);\r\n return (n: number) => nf.format(n);\r\n }, [locale]);\r\n\r\n return (\r\n <Box component=\"nav\" aria-label={labels.navLabel} sx={PAGINATION_CONTAINER_SX}>\r\n {/* PAGE-2 — polite, atomic live region so SR users hear the position\r\n change (\"1–25 sur 100\" → \"26–50 sur 100\") as they page. */}\r\n <Box role=\"status\" aria-live=\"polite\" aria-atomic=\"true\" sx={PAGINATION_RANGE_SX}>{loading ? labels.loading : labels.rangeOf(from, to, total, fmt)}</Box>\r\n {onPageSizeChange && (\r\n <Box sx={PAGINATION_PAGESIZE_GROUP_SX}>\r\n <span>{labels.rowsPerPage}</span>\r\n <Select size=\"small\" value={pageSize} onChange={(e) => onPageSizeChange(Number(e.target.value))} inputProps={{ \"aria-label\": String(labels.rowsPerPage) }} sx={PAGINATION_SELECT_SX}>\r\n {pageSizes.map((s) => <MenuItem key={s} value={s}>{s}</MenuItem>)}\r\n </Select>\r\n </Box>\r\n )}\r\n <Box sx={PAGINATION_NAV_GROUP_SX}>\r\n <IconButton size=\"small\" onClick={() => go(1)} disabled={page <= 1} aria-label={labels.firstPage}><FirstPageIcon fontSize=\"small\" sx={PAGINATION_ICON_SX} /></IconButton>\r\n <IconButton size=\"small\" onClick={() => go(page - 1)} disabled={page <= 1} aria-label={labels.previousPage}><KeyboardArrowLeftIcon fontSize=\"small\" sx={PAGINATION_ICON_SX} /></IconButton>\r\n <Box sx={PAGINATION_PAGE_OF_SX}>{page} / {pages}</Box>\r\n <IconButton size=\"small\" onClick={() => go(page + 1)} disabled={page >= pages} aria-label={labels.nextPage}><KeyboardArrowRightIcon fontSize=\"small\" sx={PAGINATION_ICON_SX} /></IconButton>\r\n <IconButton size=\"small\" onClick={() => go(pages)} disabled={page >= pages} aria-label={labels.lastPage}><LastPageIcon fontSize=\"small\" sx={PAGINATION_ICON_SX} /></IconButton>\r\n </Box>\r\n </Box>\r\n );\r\n}\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"_dataGridShared.js","names":["React","Box","IconButton","KeyboardArrowLeftIcon","KeyboardArrowRightIcon","FirstPageIcon","LastPageIcon","Select","MenuItem","mergeLabels","mergeLabelDict","jsx","_jsx","jsxs","_jsxs","DEFAULT_PAGE_SIZES","DEFAULT_MAX_BODY_HEIGHT","DEFAULT_LABELS","Object","freeze","tableAria","selectAll","selectRow","id","actionsHeader","pagination","loading","rowsPerPage","firstPage","previousPage","nextPage","lastPage","navLabel","rangeOf","from","to","total","fmt","labels","makeNumberFormatter","locale","Intl","NumberFormat","applyColumnOrder","columns","columnOrder","length","byKey","Map","map","c","key","ordered","col","get","undefined","push","delete","values","columnsSignature","Array","isArray","join","useColumnsStabilityWarn","prevColumnsRef","useRef","warnedRef","useEffect","process","env","current","prevSig","nextSig","console","warn","PAGINATION_ICON_SX","transform","CONTAINER_SX","background","overflow","TABLE_BASE_SX","borderCollapse","borderSpacing","backgroundColor","color","fontWeight","fontSize","textTransform","letterSpacing","borderBottom","padding","whiteSpace","TABLE_BY_DENSITY","comfortable","compact","ROW_HOVER_SELECTED_SX","boxShadow","ROW_CLICKABLE_SX","cursor","outline","outlineOffset","ROW_STATIC_SX","HEADER_CHECKBOX_CELL_SX","width","position","top","zIndex","BODY_CHECKBOX_CELL_SX","HOVER_ONLY_CELL_SX","opacity","transition","ERROR_CELL_SX","ERROR_INNER_SX","FILLER_CELL_SX","FILLER_HEAD_CELL_SX","PAGINATION_CONTAINER_SX","display","alignItems","flexWrap","gap","borderTop","PAGINATION_RANGE_SX","flex","fontVariantNumeric","PAGINATION_PAGESIZE_GROUP_SX","PAGINATION_NAV_GROUP_SX","PAGINATION_PAGE_OF_SX","minWidth","textAlign","PAGINATION_SELECT_SX","height","PAGINATION_BUTTON_SX","minHeight","Pagination","page","pageSize","onPageChange","onPageSizeChange","pageSizes","pages","Math","max","ceil","min","go","p","useMemo","nf","n","format","component","sx","children","role","size","value","onChange","e","Number","target","inputProps","String","s","onClick","disabled"],"sources":["../../../../src/lib/v2/patterns/_dataGridShared.tsx"],"sourcesContent":["/**\r\n * _dataGridShared — Portnet UI v2 (private)\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport KeyboardArrowLeftIcon from \"@mui/icons-material/KeyboardArrowLeft\";\r\nimport KeyboardArrowRightIcon from \"@mui/icons-material/KeyboardArrowRight\";\r\nimport FirstPageIcon from \"@mui/icons-material/FirstPage\";\r\nimport LastPageIcon from \"@mui/icons-material/LastPage\";\r\nimport Select from \"@mui/material/Select\";\r\nimport MenuItem from \"@mui/material/MenuItem\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\nimport type { Density, RowId } from \"../types/common\";\r\nimport type { DataGridLabels, DataGridPaginationLabels } from \"../types/datagrid\";\r\nimport { mergeLabels as mergeLabelDict } from \"../utils/mergeLabels\";\r\n\r\n/**\r\n * Strips optionality AND an explicitly-declared `| undefined`.\r\n *\r\n * `Required<T>` is NOT sufficient here, and the difference is invisible until it\r\n * bites. `-?` removes `undefined` only when it was IMPLIED by the `?` marker.\r\n * Under `exactOptionalPropertyTypes` — mandatory platform-wide — the public label\r\n * shapes declare `?: T | undefined` explicitly, so that `undefined` is part of\r\n * the declared type and survives `Required<>`. The \"fully-resolved\" shapes below\r\n * silently stopped being resolved, and every renderer that read them without an\r\n * optional check became a type error (three of them).\r\n *\r\n * `Exclude<T[K], undefined>` removes it for real. Behaviour is identical to what\r\n * `Required<>` produced BEFORE the optional props were widened — this restores\r\n * the original intent rather than changing it.\r\n */\r\ntype Concrete<T> = { [K in keyof T]-?: Exclude<T[K], undefined> };\r\n\r\n/**\r\n * Fully-resolved (all-present) label shapes. The public DataGridLabels /\r\n * DataGridPaginationLabels (../types/datagrid) are the OVERRIDE shapes (every\r\n * field optional). After mergeLabels every field is guaranteed present, so the\r\n * renderers (Pagination, DataGrid) read them without optional access.\r\n */\r\nexport type ResolvedDataGridPaginationLabels = Concrete<DataGridPaginationLabels>;\r\nexport type ResolvedDataGridLabels = Concrete<Omit<DataGridLabels, \"pagination\">> & {\r\n pagination: ResolvedDataGridPaginationLabels;\r\n};\r\n\r\nexport const DEFAULT_PAGE_SIZES = [25, 50, 100];\r\nexport const DEFAULT_MAX_BODY_HEIGHT = \"70vh\";\r\n\r\nexport const DEFAULT_LABELS: ResolvedDataGridLabels = Object.freeze({\r\n tableAria: \"Tableau\",\r\n selectAll: \"Tout sélectionner\",\r\n selectRow: (id: RowId) => `Sélectionner la ligne ${id}`,\r\n actionsHeader: \"Actions\",\r\n pagination: Object.freeze({\r\n loading: \"Chargement…\",\r\n rowsPerPage: \"Lignes par page\",\r\n firstPage: \"Première page\",\r\n previousPage: \"Page précédente\",\r\n nextPage: \"Page suivante\",\r\n lastPage: \"Dernière page\",\r\n navLabel: \"Pagination\",\r\n rangeOf: (from: number, to: number, total: number, fmt: (n: number) => string) => `${from}–${to} sur ${fmt(total)}`,\r\n }),\r\n});\r\n\r\nexport function mergeLabels(labels?: DataGridLabels): ResolvedDataGridLabels {\r\n if (!labels) return DEFAULT_LABELS;\r\n /*\r\n * Both levels go through the shared undefined-safe merge. A spread does not skip\r\n * explicit `undefined`, so the previous form — a bare object spread of the\r\n * overrides over the defaults — let a consumer passing `selectRow: undefined`\r\n * DELETE the default and crash the renderer. The old `|| {}` guarded the nested\r\n * `pagination` object against being undefined, but not its individual VALUES —\r\n * same hazard, one level down.\r\n *\r\n * The broken form is described rather than quoted, deliberately:\r\n * scripts/fix-label-merge.mjs is a text scan, and a verbatim copy here matched it\r\n * — so the codemod offered to rewrite this COMMENT. Same lesson KPICard already\r\n * records for the banned-patterns guard.\r\n *\r\n * `pagination` is merged at its OWN level, deliberately, rather than through a\r\n * recursive deep merge: two explicit levels can be read, whereas a recursive\r\n * helper hides how deep it goes and raises the question of what it does to\r\n * arrays. Convention for the whole library: a nested label dictionary is\r\n * merged at its own level.\r\n */\r\n return mergeLabelDict(DEFAULT_LABELS, {\r\n ...labels,\r\n pagination: mergeLabelDict(DEFAULT_LABELS.pagination, labels.pagination),\r\n });\r\n}\r\n\r\nexport function makeNumberFormatter(locale?: string): Intl.NumberFormat {\r\n try { return new Intl.NumberFormat(locale); }\r\n catch { return new Intl.NumberFormat(\"fr-FR\"); }\r\n}\r\n\r\nexport function applyColumnOrder<C extends { key: string }>(\r\n columns: C[],\r\n columnOrder: string[] | null | undefined\r\n): C[] {\r\n if (!columnOrder || columnOrder.length === 0) return columns;\r\n const byKey = new Map<string, C>(columns.map((c): [string, C] => [c.key, c]));\r\n const ordered: C[] = [];\r\n for (const key of columnOrder) {\r\n const col = byKey.get(key);\r\n if (col !== undefined) { ordered.push(col); byKey.delete(key); }\r\n }\r\n for (const col of byKey.values()) ordered.push(col);\r\n return ordered;\r\n}\r\n\r\nfunction columnsSignature(columns: unknown): string {\r\n if (!Array.isArray(columns)) return \"\";\r\n return (columns as unknown[])\r\n .map((c) => (c && typeof c === \"object\" ? (c as { key?: unknown }).key : c))\r\n .join(\"|\");\r\n}\r\n\r\nexport function useColumnsStabilityWarn(columns: unknown): void {\r\n const prevColumnsRef = React.useRef(columns);\r\n const warnedRef = React.useRef(false);\r\n React.useEffect(() => {\r\n if (process.env[\"NODE_ENV\"] === \"production\") return;\r\n if (warnedRef.current) return;\r\n if (prevColumnsRef.current === columns) return;\r\n const prevSig = columnsSignature(prevColumnsRef.current);\r\n const nextSig = columnsSignature(columns);\r\n if (prevSig && prevSig === nextSig) {\r\n // eslint-disable-next-line no-console\r\n console.warn(\"[@portnet/ui v2] DataGrid received a new `columns` reference with identical column keys. Define columns outside render or wrap in useMemo.\");\r\n warnedRef.current = true;\r\n }\r\n prevColumnsRef.current = columns;\r\n });\r\n}\r\n\r\nexport const PAGINATION_ICON_SX = Object.freeze({ transform: \"scaleX(var(--pui-rtl-flip, 1))\" });\r\nexport const CONTAINER_SX = Object.freeze({ background: \"transparent\", overflow: \"hidden\" } satisfies SxProps<Theme>);\r\n\r\n/*\r\n * TABLE_BASE_SX — applied to the MUI <Table> via the sx prop.\r\n *\r\n * textTransform: \"none\" is INTENTIONALLY EXPLICIT here.\r\n *\r\n * Why not rely on the MUI theme (MuiTableCell.head.textTransform: \"none\")?\r\n *\r\n * Emotion injects sx-prop rules AFTER theme styleOverrides. Both rules\r\n * target <th> with equal specificity (1 class + 1 element). The last\r\n * one injected wins. sx wins over theme → the sx value is the truth.\r\n *\r\n * The old bug: this object had textTransform:\"uppercase\" which silently\r\n * overrode the theme's \"none\". The fix: keep explicit \"none\" here so\r\n * the correct value wins unconditionally, regardless of injection order.\r\n *\r\n * letterSpacing is reset to \"normal\" because all-caps text uses wider\r\n * tracking which looks wrong on title-case column headers.\r\n */\r\nconst TABLE_BASE_SX = Object.freeze({\r\n borderCollapse: \"separate\",\r\n borderSpacing: 0,\r\n \"& thead th\": {\r\n backgroundColor: \"var(--bg-subtle)\",\r\n color: \"var(--fg-muted)\",\r\n fontWeight: \"var(--fw-semibold)\",\r\n fontSize: \"var(--text-xs)\",\r\n textTransform: \"none\", // EXPLICIT — beats emotion injection order\r\n letterSpacing: \"normal\", // reset all-caps tracking\r\n borderBottom: \"1px solid var(--border)\",\r\n padding: \"var(--s-3) var(--s-4)\",\r\n whiteSpace: \"nowrap\",\r\n },\r\n \"& tbody td\": {\r\n padding: \"var(--s-3) var(--s-4)\",\r\n borderBottom: \"1px solid var(--border)\",\r\n },\r\n} satisfies SxProps<Theme>);\r\n\r\nexport const TABLE_BY_DENSITY: Record<Density, SxProps<Theme>> = Object.freeze({\r\n comfortable: TABLE_BASE_SX,\r\n compact: Object.freeze({\r\n ...TABLE_BASE_SX,\r\n \"& tbody td\": { ...TABLE_BASE_SX[\"& tbody td\"], padding: \"var(--s-2) var(--s-4)\" },\r\n } satisfies SxProps<Theme>),\r\n});\r\n\r\nconst ROW_HOVER_SELECTED_SX = Object.freeze({\r\n \"&:nth-of-type(even)\": { backgroundColor: \"var(--bg-subtle)\" },\r\n \"&:hover\": { backgroundColor: \"var(--bg-hover)\" },\r\n \"&[data-selected]\": { backgroundColor: \"var(--accent-soft)\" },\r\n \"&[data-active]\": {\r\n backgroundColor: \"var(--accent-soft)\",\r\n \"& > td:first-of-type\": { boxShadow: \"inset calc(3px * var(--pui-rtl-flip, 1)) 0 0 var(--accent)\" },\r\n },\r\n});\r\n\r\nexport const ROW_CLICKABLE_SX = Object.freeze({\r\n ...ROW_HOVER_SELECTED_SX,\r\n cursor: \"pointer\",\r\n \"&:focus-visible\": { outline: \"2px solid var(--accent)\", outlineOffset: \"var(--pui-outline-offset-inset)\" },\r\n} satisfies SxProps<Theme>);\r\n\r\nexport const ROW_STATIC_SX = Object.freeze({ ...ROW_HOVER_SELECTED_SX, cursor: \"default\" } satisfies SxProps<Theme>);\r\n\r\nexport const HEADER_CHECKBOX_CELL_SX = Object.freeze({ width: \"var(--tactile-min)\", position: \"sticky\", top: 0, zIndex: 2 } satisfies SxProps<Theme>);\r\nexport const BODY_CHECKBOX_CELL_SX = Object.freeze({ width: \"var(--tactile-min)\" });\r\n\r\nexport const HOVER_ONLY_CELL_SX = Object.freeze({\r\n opacity: 0,\r\n transition: \"opacity var(--duration-fast, 120ms) ease\",\r\n \"tr:hover &, tr:focus-within &\": { opacity: 1 },\r\n \"@media (pointer: coarse)\": { opacity: 1 },\r\n});\r\n\r\nexport const ERROR_CELL_SX = Object.freeze({ padding: 0, borderBottom: \"none\" });\r\nexport const ERROR_INNER_SX = Object.freeze({ padding: \"var(--s-4)\" });\r\n\r\nexport const FILLER_CELL_SX = Object.freeze({ padding: 0, borderBottom: \"1px solid var(--border)\" });\r\nexport const FILLER_HEAD_CELL_SX = Object.freeze({\r\n padding: 0, position: \"sticky\", top: 0, zIndex: 1,\r\n background: \"var(--bg-subtle)\", borderBottom: \"1px solid var(--border)\",\r\n} satisfies SxProps<Theme>);\r\n\r\n/* ── Pagination ─────────────────────────────────────────────────── */\r\n\r\nconst PAGINATION_CONTAINER_SX = Object.freeze({\r\n display: \"flex\", alignItems: \"center\",\r\n // R-RS / WCAG 1.4.10 — the control groups (range / page-size / nav)\r\n // must wrap onto extra lines on narrow viewports. Their combined fixed\r\n // width (~400px+) exceeds a 320–375px phone, so without flexWrap the\r\n // bar overflowed its container and pushed the nav buttons off-screen.\r\n // rowGap (s2) keeps wrapped rows tight; columnGap (s4) is the original\r\n // inter-group spacing on a single row.\r\n flexWrap: \"wrap\", gap: \"var(--s-2) var(--s-4)\",\r\n padding: \"var(--s-2) var(--s-4)\", borderTop: \"1px solid var(--border)\",\r\n background: \"var(--surface)\", fontSize: \"var(--text-xs)\", color: \"var(--fg-muted)\",\r\n} satisfies SxProps<Theme>);\r\n\r\nconst PAGINATION_RANGE_SX = Object.freeze({ flex: 1, fontVariantNumeric: \"tabular-nums\" });\r\nconst PAGINATION_PAGESIZE_GROUP_SX = Object.freeze({ display: \"flex\", alignItems: \"center\", gap: \"var(--s-2)\" } satisfies SxProps<Theme>);\r\nconst PAGINATION_NAV_GROUP_SX = Object.freeze({ display: \"flex\", alignItems: \"center\", gap: \"var(--s-1)\" } satisfies SxProps<Theme>);\r\nconst PAGINATION_PAGE_OF_SX = Object.freeze({ minWidth: 56, textAlign: \"center\", fontVariantNumeric: \"tabular-nums\" } satisfies SxProps<Theme>);\r\nconst PAGINATION_SELECT_SX = Object.freeze({ fontSize: \"var(--text-xs)\", height: 28 });\r\n\r\n/**\r\n * Cible tactile des quatre boutons de navigation (R-7.4 / WCAG 2.5.5).\r\n *\r\n * `tokens/density` énonce la règle : « Icon-only buttons MUST set\r\n * min-width/min-height to `tactileMin` ». Ces quatre-là étaient des\r\n * `IconButton size=\"small\"` sans plancher — environ 34 px, dix de moins que le\r\n * minimum, dans la barre de pagination de CHAQUE liste du portefeuille.\r\n *\r\n * `min-*` et non `width`/`height` : la zone d'appui grandit, le dessin de\r\n * l'icône ne change pas. Le voisin `HEADER_CHECKBOX_CELL_SX` lit déjà\r\n * `var(--tactile-min)` — même source, même variable.\r\n *\r\n * >>> RESTE À ARBITRER : le sélecteur « lignes par page » juste à côté porte\r\n * >>> `height: 28`. Pour lui, la boîte visuelle EST la zone d'appui, donc la\r\n * >>> remonter à 44 px change le dessin de la barre : c'est une décision de\r\n * >>> design et non une correction de défaut, et elle ne se prend pas dans un\r\n * >>> commit d'accessibilité. Signalée ici pour qu'elle ne se perde pas. <<<\r\n */\r\nconst PAGINATION_BUTTON_SX = Object.freeze({\r\n minWidth: \"var(--tactile-min)\",\r\n minHeight: \"var(--tactile-min)\",\r\n} satisfies SxProps<Theme>);\r\n\r\nexport interface PaginationProps {\r\n page: number;\r\n pageSize: number;\r\n total: number;\r\n onPageChange: (page: number) => void;\r\n onPageSizeChange?: ((pageSize: number) => void) | undefined;\r\n pageSizes?: number[] | undefined;\r\n loading?: boolean | undefined;\r\n locale?: string | undefined;\r\n labels: ResolvedDataGridPaginationLabels;\r\n}\r\n\r\nexport function Pagination({ page, pageSize, total, onPageChange, onPageSizeChange, pageSizes = DEFAULT_PAGE_SIZES, loading, locale, labels }: PaginationProps) {\r\n const pages = Math.max(1, Math.ceil(total / pageSize));\r\n const from = total === 0 ? 0 : (page - 1) * pageSize + 1;\r\n const to = Math.min(total, page * pageSize);\r\n const go = (p: number) => onPageChange(Math.min(pages, Math.max(1, p)));\r\n\r\n const fmt = React.useMemo(() => {\r\n const nf = makeNumberFormatter(locale);\r\n return (n: number) => nf.format(n);\r\n }, [locale]);\r\n\r\n return (\r\n <Box component=\"nav\" aria-label={labels.navLabel} sx={PAGINATION_CONTAINER_SX}>\r\n {/* PAGE-2 — polite, atomic live region so SR users hear the position\r\n change (\"1–25 sur 100\" → \"26–50 sur 100\") as they page. */}\r\n <Box role=\"status\" aria-live=\"polite\" aria-atomic=\"true\" sx={PAGINATION_RANGE_SX}>{loading ? labels.loading : labels.rangeOf(from, to, total, fmt)}</Box>\r\n {onPageSizeChange && (\r\n <Box sx={PAGINATION_PAGESIZE_GROUP_SX}>\r\n <span>{labels.rowsPerPage}</span>\r\n <Select size=\"small\" value={pageSize} onChange={(e) => onPageSizeChange(Number(e.target.value))} inputProps={{ \"aria-label\": String(labels.rowsPerPage) }} sx={PAGINATION_SELECT_SX}>\r\n {pageSizes.map((s) => <MenuItem key={s} value={s}>{s}</MenuItem>)}\r\n </Select>\r\n </Box>\r\n )}\r\n <Box sx={PAGINATION_NAV_GROUP_SX}>\r\n <IconButton size=\"small\" onClick={() => go(1)} disabled={page <= 1} aria-label={labels.firstPage} sx={PAGINATION_BUTTON_SX}><FirstPageIcon fontSize=\"small\" sx={PAGINATION_ICON_SX} /></IconButton>\r\n <IconButton size=\"small\" onClick={() => go(page - 1)} disabled={page <= 1} aria-label={labels.previousPage} sx={PAGINATION_BUTTON_SX}><KeyboardArrowLeftIcon fontSize=\"small\" sx={PAGINATION_ICON_SX} /></IconButton>\r\n <Box sx={PAGINATION_PAGE_OF_SX}>{page} / {pages}</Box>\r\n <IconButton size=\"small\" onClick={() => go(page + 1)} disabled={page >= pages} aria-label={labels.nextPage} sx={PAGINATION_BUTTON_SX}><KeyboardArrowRightIcon fontSize=\"small\" sx={PAGINATION_ICON_SX} /></IconButton>\r\n <IconButton size=\"small\" onClick={() => go(pages)} disabled={page >= pages} aria-label={labels.lastPage} sx={PAGINATION_BUTTON_SX}><LastPageIcon fontSize=\"small\" sx={PAGINATION_ICON_SX} /></IconButton>\r\n </Box>\r\n </Box>\r\n );\r\n}\r\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +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
1
  import moment from "moment";
3
2
 
4
3
  /**
@@ -37,23 +36,22 @@ import moment from "moment";
37
36
  * meilleure approximation de moment — une date absente est recuperable, une
38
37
  * date fausse de deux mois ne l'est pas.
39
38
  */
40
- export var coerceToDate = function coerceToDate(raw, outputFormat) {
39
+ export const coerceToDate = (raw, outputFormat) => {
41
40
  if (raw == null || raw === "") return null;
42
41
  if (raw instanceof Date) return raw;
43
- if (_typeof(raw) === "object" && typeof raw.toDate === "function") {
44
- var _d$getTime;
45
- var _d = raw.toDate();
46
- return isNaN(_d === null || _d === void 0 ? void 0 : (_d$getTime = _d.getTime) === null || _d$getTime === void 0 ? void 0 : _d$getTime.call(_d)) ? null : _d;
42
+ if (typeof raw === "object" && typeof raw.toDate === "function") {
43
+ const d = raw.toDate();
44
+ return isNaN(d?.getTime?.()) ? null : d;
47
45
  }
48
46
  /* Garde sur `typeof raw === "string"` : un horodatage numerique garde le
49
47
  * chemin `new Date(number)`, `moment(number, format)` n'ayant pas de sens.
50
48
  * "iso" est exclu : ce n'est pas un jeton moment, et `new Date(isoString)`
51
49
  * est deja correct. */
52
50
  if (typeof raw === "string" && outputFormat !== undefined && outputFormat !== "iso") {
53
- var parsed = moment(raw, outputFormat, true);
51
+ const parsed = moment(raw, outputFormat, true);
54
52
  return parsed.isValid() ? parsed.toDate() : null;
55
53
  }
56
- var d = new Date(raw);
54
+ const d = new Date(raw);
57
55
  return isNaN(d.getTime()) ? null : d;
58
56
  };
59
57
 
@@ -1 +1 @@
1
- {"version":3,"file":"_pickerSerialisation.js","names":["moment","coerceToDate","raw","outputFormat","Date","_typeof","toDate","_d$getTime","d","isNaN","getTime","call","undefined","parsed","isValid","serialiseDate","date","toISOString","format"],"sources":["../../../../src/lib/v2/patterns/_pickerSerialisation.ts"],"sourcesContent":["import moment from \"moment\";\r\n\r\n/**\r\n * _pickerSerialisation — lecture / ecriture partagees des ponts Formik de date.\r\n *\r\n * ── POURQUOI CE MODULE EXISTE ────────────────────────────────────────\r\n *\r\n * `FormikDatePicker` portait ces deux fonctions en prive. L'arrivee d'un\r\n * SECOND pont (`FormikDateTimePicker`, gap G-E) posait le choix : les recopier,\r\n * ou les partager.\r\n *\r\n * Les recopier aurait reproduit exactement la situation que la note S-03 de\r\n * `FormikDatePicker` raconte. Rappel de ce qu'elle dit : ce pont serialisait\r\n * VERS moment mais relisait DEPUIS `new Date(raw)`, en ignorant\r\n * `outputFormat`. L'asymetrie corrompait silencieusement tout format non ISO —\r\n * `new Date(\"31-12-2026\")` donne Invalid Date, `new Date(\"05-03-2026\")` donne\r\n * le 3 mai au lieu du 5 mars. Le chemin d'ECRITURE fonctionnait, donc un\r\n * formulaire rempli puis soumis se comportait correctement : le degat\r\n * n'apparaissait qu'a la RELECTURE, c'est-a-dire en modification. Un module a\r\n * livre ce defaut pendant sept lots sous un typecheck strict.\r\n *\r\n * Une asymetrie de ce genre entre DEUX ponts serait encore moins visible : ils\r\n * se ressemblent, personne ne les compare, et chacun a l'air correct\r\n * isolement. La seule garantie est qu'il n'y ait qu'un exemplaire du couple\r\n * lecture / ecriture.\r\n *\r\n * Module INTERNE : non exporte par la surface publique (prefixe `_`).\r\n */\r\n\r\n/**\r\n * Relit une valeur stockee par Formik vers un `Date`.\r\n *\r\n * `outputFormat` est passe pour que la lecture soit SYMETRIQUE de\r\n * `serialiseDate` : on parse avec le format qui a servi a ecrire, en mode\r\n * STRICT. Une valeur stockee qui ne correspond pas rend `null` plutot que la\r\n * meilleure approximation de moment — une date absente est recuperable, une\r\n * date fausse de deux mois ne l'est pas.\r\n */\r\nexport const coerceToDate = (\r\n raw: unknown,\r\n outputFormat?: string\r\n): Date | null => {\r\n if (raw == null || raw === \"\") return null;\r\n if (raw instanceof Date) return raw;\r\n if (\r\n typeof raw === \"object\" &&\r\n typeof (raw as { toDate?: () => Date }).toDate === \"function\"\r\n ) {\r\n const d = (raw as { toDate: () => Date }).toDate();\r\n return isNaN(d?.getTime?.()) ? null : d;\r\n }\r\n /* Garde sur `typeof raw === \"string\"` : un horodatage numerique garde le\r\n * chemin `new Date(number)`, `moment(number, format)` n'ayant pas de sens.\r\n * \"iso\" est exclu : ce n'est pas un jeton moment, et `new Date(isoString)`\r\n * est deja correct. */\r\n if (\r\n typeof raw === \"string\" &&\r\n outputFormat !== undefined &&\r\n outputFormat !== \"iso\"\r\n ) {\r\n const parsed = moment(raw, outputFormat, true);\r\n return parsed.isValid() ? parsed.toDate() : null;\r\n }\r\n const d = new Date(raw as string | number);\r\n return isNaN(d.getTime()) ? null : d;\r\n};\r\n\r\n/**\r\n * Serialise un `Date` vers le format demande.\r\n * undefined -> rend le `Date` tel quel (defaut, compatible)\r\n * \"iso\" -> `Date.toISOString()`\r\n * toute autre chaine -> `moment(date).format(outputFormat)`\r\n */\r\nexport function serialiseDate(\r\n date: Date | null,\r\n outputFormat: string | undefined\r\n): Date | string | null {\r\n if (!date || !(date instanceof Date) || isNaN(date.getTime())) {\r\n return outputFormat ? \"\" : null;\r\n }\r\n if (!outputFormat) return date;\r\n if (outputFormat === \"iso\") return date.toISOString();\r\n return moment(date).format(outputFormat);\r\n}\r\n"],"mappings":";AAAA,OAAOA,MAAM,MAAM,QAAQ;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,YAAY,GAAG,SAAfA,YAAYA,CACvBC,GAAY,EACZC,YAAqB,EACL;EAChB,IAAID,GAAG,IAAI,IAAI,IAAIA,GAAG,KAAK,EAAE,EAAE,OAAO,IAAI;EAC1C,IAAIA,GAAG,YAAYE,IAAI,EAAE,OAAOF,GAAG;EACnC,IACEG,OAAA,CAAOH,GAAG,MAAK,QAAQ,IACvB,OAAQA,GAAG,CAA6BI,MAAM,KAAK,UAAU,EAC7D;IAAA,IAAAC,UAAA;IACA,IAAMC,EAAC,GAAIN,GAAG,CAA4BI,MAAM,CAAC,CAAC;IAClD,OAAOG,KAAK,CAACD,EAAC,aAADA,EAAC,wBAAAD,UAAA,GAADC,EAAC,CAAEE,OAAO,cAAAH,UAAA,uBAAVA,UAAA,CAAAI,IAAA,CAAAH,EAAa,CAAC,CAAC,GAAG,IAAI,GAAGA,EAAC;EACzC;EACA;AACF;AACA;AACA;EACE,IACE,OAAON,GAAG,KAAK,QAAQ,IACvBC,YAAY,KAAKS,SAAS,IAC1BT,YAAY,KAAK,KAAK,EACtB;IACA,IAAMU,MAAM,GAAGb,MAAM,CAACE,GAAG,EAAEC,YAAY,EAAE,IAAI,CAAC;IAC9C,OAAOU,MAAM,CAACC,OAAO,CAAC,CAAC,GAAGD,MAAM,CAACP,MAAM,CAAC,CAAC,GAAG,IAAI;EAClD;EACA,IAAME,CAAC,GAAG,IAAIJ,IAAI,CAACF,GAAsB,CAAC;EAC1C,OAAOO,KAAK,CAACD,CAAC,CAACE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,GAAGF,CAAC;AACtC,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASO,aAAaA,CAC3BC,IAAiB,EACjBb,YAAgC,EACV;EACtB,IAAI,CAACa,IAAI,IAAI,EAAEA,IAAI,YAAYZ,IAAI,CAAC,IAAIK,KAAK,CAACO,IAAI,CAACN,OAAO,CAAC,CAAC,CAAC,EAAE;IAC7D,OAAOP,YAAY,GAAG,EAAE,GAAG,IAAI;EACjC;EACA,IAAI,CAACA,YAAY,EAAE,OAAOa,IAAI;EAC9B,IAAIb,YAAY,KAAK,KAAK,EAAE,OAAOa,IAAI,CAACC,WAAW,CAAC,CAAC;EACrD,OAAOjB,MAAM,CAACgB,IAAI,CAAC,CAACE,MAAM,CAACf,YAAY,CAAC;AAC1C","ignoreList":[]}
1
+ {"version":3,"file":"_pickerSerialisation.js","names":["moment","coerceToDate","raw","outputFormat","Date","toDate","d","isNaN","getTime","undefined","parsed","isValid","serialiseDate","date","toISOString","format"],"sources":["../../../../src/lib/v2/patterns/_pickerSerialisation.ts"],"sourcesContent":["import moment from \"moment\";\r\n\r\n/**\r\n * _pickerSerialisation — lecture / ecriture partagees des ponts Formik de date.\r\n *\r\n * ── POURQUOI CE MODULE EXISTE ────────────────────────────────────────\r\n *\r\n * `FormikDatePicker` portait ces deux fonctions en prive. L'arrivee d'un\r\n * SECOND pont (`FormikDateTimePicker`, gap G-E) posait le choix : les recopier,\r\n * ou les partager.\r\n *\r\n * Les recopier aurait reproduit exactement la situation que la note S-03 de\r\n * `FormikDatePicker` raconte. Rappel de ce qu'elle dit : ce pont serialisait\r\n * VERS moment mais relisait DEPUIS `new Date(raw)`, en ignorant\r\n * `outputFormat`. L'asymetrie corrompait silencieusement tout format non ISO —\r\n * `new Date(\"31-12-2026\")` donne Invalid Date, `new Date(\"05-03-2026\")` donne\r\n * le 3 mai au lieu du 5 mars. Le chemin d'ECRITURE fonctionnait, donc un\r\n * formulaire rempli puis soumis se comportait correctement : le degat\r\n * n'apparaissait qu'a la RELECTURE, c'est-a-dire en modification. Un module a\r\n * livre ce defaut pendant sept lots sous un typecheck strict.\r\n *\r\n * Une asymetrie de ce genre entre DEUX ponts serait encore moins visible : ils\r\n * se ressemblent, personne ne les compare, et chacun a l'air correct\r\n * isolement. La seule garantie est qu'il n'y ait qu'un exemplaire du couple\r\n * lecture / ecriture.\r\n *\r\n * Module INTERNE : non exporte par la surface publique (prefixe `_`).\r\n */\r\n\r\n/**\r\n * Relit une valeur stockee par Formik vers un `Date`.\r\n *\r\n * `outputFormat` est passe pour que la lecture soit SYMETRIQUE de\r\n * `serialiseDate` : on parse avec le format qui a servi a ecrire, en mode\r\n * STRICT. Une valeur stockee qui ne correspond pas rend `null` plutot que la\r\n * meilleure approximation de moment — une date absente est recuperable, une\r\n * date fausse de deux mois ne l'est pas.\r\n */\r\nexport const coerceToDate = (\r\n raw: unknown,\r\n outputFormat?: string\r\n): Date | null => {\r\n if (raw == null || raw === \"\") return null;\r\n if (raw instanceof Date) return raw;\r\n if (\r\n typeof raw === \"object\" &&\r\n typeof (raw as { toDate?: () => Date }).toDate === \"function\"\r\n ) {\r\n const d = (raw as { toDate: () => Date }).toDate();\r\n return isNaN(d?.getTime?.()) ? null : d;\r\n }\r\n /* Garde sur `typeof raw === \"string\"` : un horodatage numerique garde le\r\n * chemin `new Date(number)`, `moment(number, format)` n'ayant pas de sens.\r\n * \"iso\" est exclu : ce n'est pas un jeton moment, et `new Date(isoString)`\r\n * est deja correct. */\r\n if (\r\n typeof raw === \"string\" &&\r\n outputFormat !== undefined &&\r\n outputFormat !== \"iso\"\r\n ) {\r\n const parsed = moment(raw, outputFormat, true);\r\n return parsed.isValid() ? parsed.toDate() : null;\r\n }\r\n const d = new Date(raw as string | number);\r\n return isNaN(d.getTime()) ? null : d;\r\n};\r\n\r\n/**\r\n * Serialise un `Date` vers le format demande.\r\n * undefined -> rend le `Date` tel quel (defaut, compatible)\r\n * \"iso\" -> `Date.toISOString()`\r\n * toute autre chaine -> `moment(date).format(outputFormat)`\r\n */\r\nexport function serialiseDate(\r\n date: Date | null,\r\n outputFormat: string | undefined\r\n): Date | string | null {\r\n if (!date || !(date instanceof Date) || isNaN(date.getTime())) {\r\n return outputFormat ? \"\" : null;\r\n }\r\n if (!outputFormat) return date;\r\n if (outputFormat === \"iso\") return date.toISOString();\r\n return moment(date).format(outputFormat);\r\n}\r\n"],"mappings":"AAAA,OAAOA,MAAM,MAAM,QAAQ;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,YAAY,GAAGA,CAC1BC,GAAY,EACZC,YAAqB,KACL;EAChB,IAAID,GAAG,IAAI,IAAI,IAAIA,GAAG,KAAK,EAAE,EAAE,OAAO,IAAI;EAC1C,IAAIA,GAAG,YAAYE,IAAI,EAAE,OAAOF,GAAG;EACnC,IACE,OAAOA,GAAG,KAAK,QAAQ,IACvB,OAAQA,GAAG,CAA6BG,MAAM,KAAK,UAAU,EAC7D;IACA,MAAMC,CAAC,GAAIJ,GAAG,CAA4BG,MAAM,CAAC,CAAC;IAClD,OAAOE,KAAK,CAACD,CAAC,EAAEE,OAAO,GAAG,CAAC,CAAC,GAAG,IAAI,GAAGF,CAAC;EACzC;EACA;AACF;AACA;AACA;EACE,IACE,OAAOJ,GAAG,KAAK,QAAQ,IACvBC,YAAY,KAAKM,SAAS,IAC1BN,YAAY,KAAK,KAAK,EACtB;IACA,MAAMO,MAAM,GAAGV,MAAM,CAACE,GAAG,EAAEC,YAAY,EAAE,IAAI,CAAC;IAC9C,OAAOO,MAAM,CAACC,OAAO,CAAC,CAAC,GAAGD,MAAM,CAACL,MAAM,CAAC,CAAC,GAAG,IAAI;EAClD;EACA,MAAMC,CAAC,GAAG,IAAIF,IAAI,CAACF,GAAsB,CAAC;EAC1C,OAAOK,KAAK,CAACD,CAAC,CAACE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,GAAGF,CAAC;AACtC,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASM,aAAaA,CAC3BC,IAAiB,EACjBV,YAAgC,EACV;EACtB,IAAI,CAACU,IAAI,IAAI,EAAEA,IAAI,YAAYT,IAAI,CAAC,IAAIG,KAAK,CAACM,IAAI,CAACL,OAAO,CAAC,CAAC,CAAC,EAAE;IAC7D,OAAOL,YAAY,GAAG,EAAE,GAAG,IAAI;EACjC;EACA,IAAI,CAACA,YAAY,EAAE,OAAOU,IAAI;EAC9B,IAAIV,YAAY,KAAK,KAAK,EAAE,OAAOU,IAAI,CAACC,WAAW,CAAC,CAAC;EACrD,OAAOd,MAAM,CAACa,IAAI,CAAC,CAACE,MAAM,CAACZ,YAAY,CAAC;AAC1C","ignoreList":[]}