@portnet/ui 6.0.1 → 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 (1011) hide show
  1. package/CHANGELOG.md +737 -0
  2. package/dist/esm/index.js +90 -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 -39
  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 +146 -0
  17. package/dist/esm/v2/__tests__/FieldWidth.test.js.map +1 -0
  18. package/dist/esm/v2/__tests__/FileCard.test.js +18 -18
  19. package/dist/esm/v2/__tests__/FileCard.test.js.map +1 -1
  20. package/dist/esm/v2/__tests__/FormikCheckbox.test.js +173 -0
  21. package/dist/esm/v2/__tests__/FormikCheckbox.test.js.map +1 -0
  22. package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js +236 -0
  23. package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js.map +1 -0
  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 +299 -0
  27. package/dist/esm/v2/__tests__/FormikRadioGroup.test.js.map +1 -0
  28. package/dist/esm/v2/__tests__/MobileRowCard.test.js +44 -43
  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 -22
  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 +118 -90
  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 +210 -52
  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 +64 -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 +14 -4
  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 +26 -75
  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 +130 -0
  269. package/dist/esm/v2/patterns/FormikCheckbox.js.map +1 -0
  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 -66
  273. package/dist/esm/v2/patterns/FormikCombobox.js.map +1 -1
  274. package/dist/esm/v2/patterns/FormikDatePicker.js +51 -99
  275. package/dist/esm/v2/patterns/FormikDatePicker.js.map +1 -1
  276. package/dist/esm/v2/patterns/FormikDateTimePicker.js +136 -0
  277. package/dist/esm/v2/patterns/FormikDateTimePicker.js.map +1 -0
  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 -50
  285. package/dist/esm/v2/patterns/FormikInput.js.map +1 -1
  286. package/dist/esm/v2/patterns/FormikRadioGroup.js +129 -0
  287. package/dist/esm/v2/patterns/FormikRadioGroup.js.map +1 -0
  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 -84
  291. package/dist/esm/v2/patterns/FormikSelect.js.map +1 -1
  292. package/dist/esm/v2/patterns/FormikTextarea.js +30 -43
  293. package/dist/esm/v2/patterns/FormikTextarea.js.map +1 -1
  294. package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js +64 -65
  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 +127 -0
  305. package/dist/esm/v2/patterns/RowFavoriteToggle.js.map +1 -0
  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 +72 -0
  319. package/dist/esm/v2/patterns/_pickerSerialisation.js.map +1 -0
  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 +235 -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 +203 -0
  345. package/dist/esm/v2/personalization/capabilities/gridPreferences.js.map +1 -0
  346. package/dist/esm/v2/personalization/capabilities/index.js +5 -0
  347. package/dist/esm/v2/personalization/capabilities/index.js.map +1 -1
  348. package/dist/esm/v2/personalization/capabilities/reviveSavedCriteria.js +119 -0
  349. package/dist/esm/v2/personalization/capabilities/reviveSavedCriteria.js.map +1 -0
  350. package/dist/esm/v2/personalization/capabilities/savedFilters.js +90 -98
  351. package/dist/esm/v2/personalization/capabilities/savedFilters.js.map +1 -1
  352. package/dist/esm/v2/personalization/createPersonalizationStore.js +78 -181
  353. package/dist/esm/v2/personalization/createPersonalizationStore.js.map +1 -1
  354. package/dist/esm/v2/personalization/index.js +35 -0
  355. package/dist/esm/v2/personalization/index.js.map +1 -1
  356. package/dist/esm/v2/personalization/personalizationContext.js +9 -9
  357. package/dist/esm/v2/personalization/personalizationContext.js.map +1 -1
  358. package/dist/esm/v2/personalization/schema.js +8 -9
  359. package/dist/esm/v2/personalization/schema.js.map +1 -1
  360. package/dist/esm/v2/referentiel/ReferentielProvider.js +27 -42
  361. package/dist/esm/v2/referentiel/ReferentielProvider.js.map +1 -1
  362. package/dist/esm/v2/referentiel/types.js +2 -0
  363. package/dist/esm/v2/referentiel/types.js.map +1 -0
  364. package/dist/esm/v2/referentiel/useReferentielClient.js +10 -11
  365. package/dist/esm/v2/referentiel/useReferentielClient.js.map +1 -1
  366. package/dist/esm/v2/referentiel/useReferentielOptions.js +60 -117
  367. package/dist/esm/v2/referentiel/useReferentielOptions.js.map +1 -1
  368. package/dist/esm/v2/referentiel/useReferentielSearch.js +37 -91
  369. package/dist/esm/v2/referentiel/useReferentielSearch.js.map +1 -1
  370. package/dist/esm/v2/theme/_brand.js +8 -24
  371. package/dist/esm/v2/theme/_brand.js.map +1 -1
  372. package/dist/esm/v2/theme/_brandSecondary.js +8 -24
  373. package/dist/esm/v2/theme/_brandSecondary.js.map +1 -1
  374. package/dist/esm/v2/theme/createPortnetTheme.js +51 -61
  375. package/dist/esm/v2/theme/createPortnetTheme.js.map +1 -1
  376. package/dist/esm/v2/theme/cssVariables.js +62 -69
  377. package/dist/esm/v2/theme/cssVariables.js.map +1 -1
  378. package/dist/esm/v2/theme/index.js +5 -5
  379. package/dist/esm/v2/theme/index.js.map +1 -1
  380. package/dist/esm/v2/tokens/breakpoints.js +14 -14
  381. package/dist/esm/v2/tokens/breakpoints.js.map +1 -1
  382. package/dist/esm/v2/tokens/chart.js +261 -0
  383. package/dist/esm/v2/tokens/chart.js.map +1 -0
  384. package/dist/esm/v2/tokens/colors.js +22 -22
  385. package/dist/esm/v2/tokens/colors.js.map +1 -1
  386. package/dist/esm/v2/tokens/density.js +62 -7
  387. package/dist/esm/v2/tokens/density.js.map +1 -1
  388. package/dist/esm/v2/tokens/index.js +49 -34
  389. package/dist/esm/v2/tokens/index.js.map +1 -1
  390. package/dist/esm/v2/tokens/motion.js +12 -20
  391. package/dist/esm/v2/tokens/motion.js.map +1 -1
  392. package/dist/esm/v2/tokens/radius.js +1 -1
  393. package/dist/esm/v2/tokens/radius.js.map +1 -1
  394. package/dist/esm/v2/tokens/shadows.js +6 -6
  395. package/dist/esm/v2/tokens/shadows.js.map +1 -1
  396. package/dist/esm/v2/tokens/spacing.js +2 -2
  397. package/dist/esm/v2/tokens/spacing.js.map +1 -1
  398. package/dist/esm/v2/tokens/state.js +1 -1
  399. package/dist/esm/v2/tokens/state.js.map +1 -1
  400. package/dist/esm/v2/tokens/statusPalette.js +17 -21
  401. package/dist/esm/v2/tokens/statusPalette.js.map +1 -1
  402. package/dist/esm/v2/tokens/tokens.json +6 -1
  403. package/dist/esm/v2/tokens/typography.js +13 -13
  404. package/dist/esm/v2/tokens/typography.js.map +1 -1
  405. package/dist/esm/v2/tokens/zIndex.js +1 -1
  406. package/dist/esm/v2/tokens/zIndex.js.map +1 -1
  407. package/dist/esm/v2/types/datagrid.js.map +1 -1
  408. package/dist/esm/v2/utils/apiError.js +16 -37
  409. package/dist/esm/v2/utils/apiError.js.map +1 -1
  410. package/dist/esm/v2/utils/contrast.js +31 -32
  411. package/dist/esm/v2/utils/contrast.js.map +1 -1
  412. package/dist/esm/v2/utils/cx.js +5 -25
  413. package/dist/esm/v2/utils/cx.js.map +1 -1
  414. package/dist/esm/v2/utils/fileDownload.js +23 -26
  415. package/dist/esm/v2/utils/fileDownload.js.map +1 -1
  416. package/dist/esm/v2/utils/fileValidation.js +209 -0
  417. package/dist/esm/v2/utils/fileValidation.js.map +1 -0
  418. package/dist/esm/v2/utils/fmtDate.js +111 -0
  419. package/dist/esm/v2/utils/fmtDate.js.map +1 -0
  420. package/dist/esm/v2/utils/fmtMoney.js +8 -10
  421. package/dist/esm/v2/utils/fmtMoney.js.map +1 -1
  422. package/dist/esm/v2/utils/formikErrors.js +78 -0
  423. package/dist/esm/v2/utils/formikErrors.js.map +1 -0
  424. package/dist/esm/v2/utils/index.js +35 -2
  425. package/dist/esm/v2/utils/index.js.map +1 -1
  426. package/dist/esm/v2/utils/mergeLabels.js +7 -12
  427. package/dist/esm/v2/utils/mergeLabels.js.map +1 -1
  428. package/dist/esm/v2/utils/networkStatus.js +12 -12
  429. package/dist/esm/v2/utils/networkStatus.js.map +1 -1
  430. package/dist/index.d.ts +9 -1
  431. package/dist/index.d.ts.map +1 -1
  432. package/dist/index.js +122 -47
  433. package/dist/index.js.map +1 -1
  434. package/dist/v2/__tests__/AppMain.test.js +133 -0
  435. package/dist/v2/__tests__/AppMain.test.js.map +1 -0
  436. package/dist/v2/__tests__/ChartFigure.test.js +183 -0
  437. package/dist/v2/__tests__/ChartFigure.test.js.map +1 -0
  438. package/dist/v2/__tests__/DataGridRowActionsPropagation.test.js +153 -0
  439. package/dist/v2/__tests__/DataGridRowActionsPropagation.test.js.map +1 -0
  440. package/dist/v2/__tests__/DrawerTactileTargets.test.js +94 -0
  441. package/dist/v2/__tests__/DrawerTactileTargets.test.js.map +1 -0
  442. package/dist/v2/__tests__/FieldError.test.js +98 -69
  443. package/dist/v2/__tests__/FieldError.test.js.map +1 -1
  444. package/dist/v2/__tests__/FieldNaming.test.js +161 -0
  445. package/dist/v2/__tests__/FieldNaming.test.js.map +1 -0
  446. package/dist/v2/__tests__/FieldWidth.test.js +148 -0
  447. package/dist/v2/__tests__/FieldWidth.test.js.map +1 -0
  448. package/dist/v2/__tests__/FileCard.test.js +45 -48
  449. package/dist/v2/__tests__/FileCard.test.js.map +1 -1
  450. package/dist/v2/__tests__/FormikCheckbox.test.js +175 -0
  451. package/dist/v2/__tests__/FormikCheckbox.test.js.map +1 -0
  452. package/dist/v2/__tests__/FormikDateTimePicker.test.js +237 -0
  453. package/dist/v2/__tests__/FormikDateTimePicker.test.js.map +1 -0
  454. package/dist/v2/__tests__/FormikDisplayWidth.test.js +102 -0
  455. package/dist/v2/__tests__/FormikDisplayWidth.test.js.map +1 -0
  456. package/dist/v2/__tests__/FormikRadioGroup.test.js +300 -0
  457. package/dist/v2/__tests__/FormikRadioGroup.test.js.map +1 -0
  458. package/dist/v2/__tests__/MobileRowCard.test.js +100 -102
  459. package/dist/v2/__tests__/MobileRowCard.test.js.map +1 -1
  460. package/dist/v2/__tests__/PreviewDrawer.test.js +169 -0
  461. package/dist/v2/__tests__/PreviewDrawer.test.js.map +1 -0
  462. package/dist/v2/__tests__/ReferentielFieldContainer.test.js +159 -0
  463. package/dist/v2/__tests__/ReferentielFieldContainer.test.js.map +1 -0
  464. package/dist/v2/__tests__/SectionErrorBoundary.test.js +53 -68
  465. package/dist/v2/__tests__/SectionErrorBoundary.test.js.map +1 -1
  466. package/dist/v2/__tests__/apiError.test.js +50 -69
  467. package/dist/v2/__tests__/apiError.test.js.map +1 -1
  468. package/dist/v2/__tests__/banned-patterns.test.js +42 -123
  469. package/dist/v2/__tests__/banned-patterns.test.js.map +1 -1
  470. package/dist/v2/__tests__/chart-palette.test.js +205 -0
  471. package/dist/v2/__tests__/chart-palette.test.js.map +1 -0
  472. package/dist/v2/__tests__/contrast-palette.test.js +42 -74
  473. package/dist/v2/__tests__/contrast-palette.test.js.map +1 -1
  474. package/dist/v2/__tests__/cssVariables.test.js +44 -51
  475. package/dist/v2/__tests__/cssVariables.test.js.map +1 -1
  476. package/dist/v2/__tests__/fileValidation.test.js +136 -0
  477. package/dist/v2/__tests__/fileValidation.test.js.map +1 -0
  478. package/dist/v2/__tests__/filterCriteria.test.js +324 -0
  479. package/dist/v2/__tests__/filterCriteria.test.js.map +1 -0
  480. package/dist/v2/__tests__/fmtDate.test.js +69 -0
  481. package/dist/v2/__tests__/fmtDate.test.js.map +1 -0
  482. package/dist/v2/__tests__/gap-leakage-refonte.test.js +221 -0
  483. package/dist/v2/__tests__/gap-leakage-refonte.test.js.map +1 -0
  484. package/dist/v2/__tests__/labels-merge.test.js +38 -46
  485. package/dist/v2/__tests__/labels-merge.test.js.map +1 -1
  486. package/dist/v2/__tests__/locale-fallback.test.js +47 -52
  487. package/dist/v2/__tests__/locale-fallback.test.js.map +1 -1
  488. package/dist/v2/__tests__/reviveSavedCriteria.test.js +144 -0
  489. package/dist/v2/__tests__/reviveSavedCriteria.test.js.map +1 -0
  490. package/dist/v2/__tests__/rowActions.test.js +186 -0
  491. package/dist/v2/__tests__/rowActions.test.js.map +1 -0
  492. package/dist/v2/__tests__/useFocusOnRouteChange.test.js +156 -0
  493. package/dist/v2/__tests__/useFocusOnRouteChange.test.js.map +1 -0
  494. package/dist/v2/__tests__/useFocusTrap.test.js +270 -407
  495. package/dist/v2/__tests__/useFocusTrap.test.js.map +1 -1
  496. package/dist/v2/__tests__/usePrefersReducedMotion.test.js +123 -0
  497. package/dist/v2/__tests__/usePrefersReducedMotion.test.js.map +1 -0
  498. package/dist/v2/components/Accordion.js +60 -82
  499. package/dist/v2/components/Accordion.js.map +1 -1
  500. package/dist/v2/components/ActionStrip.js +40 -52
  501. package/dist/v2/components/ActionStrip.js.map +1 -1
  502. package/dist/v2/components/Banner.js +42 -41
  503. package/dist/v2/components/Banner.js.map +1 -1
  504. package/dist/v2/components/Busy.js +22 -27
  505. package/dist/v2/components/Busy.js.map +1 -1
  506. package/dist/v2/components/Button.js +39 -50
  507. package/dist/v2/components/Button.js.map +1 -1
  508. package/dist/v2/components/CategoryTag.d.ts.map +1 -1
  509. package/dist/v2/components/CategoryTag.js +49 -32
  510. package/dist/v2/components/CategoryTag.js.map +1 -1
  511. package/dist/v2/components/Checkbox.js +39 -45
  512. package/dist/v2/components/Checkbox.js.map +1 -1
  513. package/dist/v2/components/Chip.js +29 -42
  514. package/dist/v2/components/Chip.js.map +1 -1
  515. package/dist/v2/components/Combobox.js +122 -144
  516. package/dist/v2/components/Combobox.js.map +1 -1
  517. package/dist/v2/components/CommandPalette.js +138 -225
  518. package/dist/v2/components/CommandPalette.js.map +1 -1
  519. package/dist/v2/components/ConfirmDialog.js +46 -56
  520. package/dist/v2/components/ConfirmDialog.js.map +1 -1
  521. package/dist/v2/components/DatePicker.js +81 -86
  522. package/dist/v2/components/DatePicker.js.map +1 -1
  523. package/dist/v2/components/DateRangePicker.js +77 -87
  524. package/dist/v2/components/DateRangePicker.js.map +1 -1
  525. package/dist/v2/components/DateTimePicker.d.ts.map +1 -1
  526. package/dist/v2/components/DateTimePicker.js +121 -95
  527. package/dist/v2/components/DateTimePicker.js.map +1 -1
  528. package/dist/v2/components/Drawer.d.ts.map +1 -1
  529. package/dist/v2/components/Drawer.js +93 -88
  530. package/dist/v2/components/Drawer.js.map +1 -1
  531. package/dist/v2/components/Dropzone.js +150 -196
  532. package/dist/v2/components/Dropzone.js.map +1 -1
  533. package/dist/v2/components/EmptyState.js +18 -20
  534. package/dist/v2/components/EmptyState.js.map +1 -1
  535. package/dist/v2/components/FavoriteToggle.js +28 -39
  536. package/dist/v2/components/FavoriteToggle.js.map +1 -1
  537. package/dist/v2/components/Field.d.ts +121 -5
  538. package/dist/v2/components/Field.d.ts.map +1 -1
  539. package/dist/v2/components/Field.js +221 -62
  540. package/dist/v2/components/Field.js.map +1 -1
  541. package/dist/v2/components/FieldError.js +18 -21
  542. package/dist/v2/components/FieldError.js.map +1 -1
  543. package/dist/v2/components/FieldHelp.js +40 -60
  544. package/dist/v2/components/FieldHelp.js.map +1 -1
  545. package/dist/v2/components/FileCard.js +27 -31
  546. package/dist/v2/components/FileCard.js.map +1 -1
  547. package/dist/v2/components/FilterTab.js +30 -38
  548. package/dist/v2/components/FilterTab.js.map +1 -1
  549. package/dist/v2/components/ForbiddenPage.d.ts +25 -1
  550. package/dist/v2/components/ForbiddenPage.d.ts.map +1 -1
  551. package/dist/v2/components/ForbiddenPage.js +37 -17
  552. package/dist/v2/components/ForbiddenPage.js.map +1 -1
  553. package/dist/v2/components/FormGrid.js +53 -59
  554. package/dist/v2/components/FormGrid.js.map +1 -1
  555. package/dist/v2/components/FormikDisplay.d.ts +50 -1
  556. package/dist/v2/components/FormikDisplay.d.ts.map +1 -1
  557. package/dist/v2/components/FormikDisplay.js +108 -33
  558. package/dist/v2/components/FormikDisplay.js.map +1 -1
  559. package/dist/v2/components/Input.d.ts +40 -0
  560. package/dist/v2/components/Input.d.ts.map +1 -1
  561. package/dist/v2/components/Input.js +81 -41
  562. package/dist/v2/components/Input.js.map +1 -1
  563. package/dist/v2/components/KPICard.js +57 -67
  564. package/dist/v2/components/KPICard.js.map +1 -1
  565. package/dist/v2/components/KPIStrip.js +16 -22
  566. package/dist/v2/components/KPIStrip.js.map +1 -1
  567. package/dist/v2/components/KV.js +25 -31
  568. package/dist/v2/components/KV.js.map +1 -1
  569. package/dist/v2/components/KVGrid.js +19 -26
  570. package/dist/v2/components/KVGrid.js.map +1 -1
  571. package/dist/v2/components/Layout.js +91 -120
  572. package/dist/v2/components/Layout.js.map +1 -1
  573. package/dist/v2/components/MobileRowCard.js +79 -91
  574. package/dist/v2/components/MobileRowCard.js.map +1 -1
  575. package/dist/v2/components/Modal.js +61 -69
  576. package/dist/v2/components/Modal.js.map +1 -1
  577. package/dist/v2/components/NetworkErrorPage.d.ts +19 -1
  578. package/dist/v2/components/NetworkErrorPage.d.ts.map +1 -1
  579. package/dist/v2/components/NetworkErrorPage.js +38 -21
  580. package/dist/v2/components/NetworkErrorPage.js.map +1 -1
  581. package/dist/v2/components/NotFoundPage.d.ts +17 -1
  582. package/dist/v2/components/NotFoundPage.d.ts.map +1 -1
  583. package/dist/v2/components/NotFoundPage.js +37 -18
  584. package/dist/v2/components/NotFoundPage.js.map +1 -1
  585. package/dist/v2/components/NumberInput.js +88 -118
  586. package/dist/v2/components/NumberInput.js.map +1 -1
  587. package/dist/v2/components/OverflowMenu.js +38 -56
  588. package/dist/v2/components/OverflowMenu.js.map +1 -1
  589. package/dist/v2/components/PdfViewer.js +34 -45
  590. package/dist/v2/components/PdfViewer.js.map +1 -1
  591. package/dist/v2/components/ProgressBar.js +42 -49
  592. package/dist/v2/components/ProgressBar.js.map +1 -1
  593. package/dist/v2/components/Radio.js +59 -67
  594. package/dist/v2/components/Radio.js.map +1 -1
  595. package/dist/v2/components/SectionErrorBoundary.js +90 -135
  596. package/dist/v2/components/SectionErrorBoundary.js.map +1 -1
  597. package/dist/v2/components/SectionHeader.js +34 -41
  598. package/dist/v2/components/SectionHeader.js.map +1 -1
  599. package/dist/v2/components/Segmented.js +69 -93
  600. package/dist/v2/components/Segmented.js.map +1 -1
  601. package/dist/v2/components/Select.d.ts +26 -2
  602. package/dist/v2/components/Select.d.ts.map +1 -1
  603. package/dist/v2/components/Select.js +120 -155
  604. package/dist/v2/components/Select.js.map +1 -1
  605. package/dist/v2/components/ServerErrorPage.d.ts +27 -1
  606. package/dist/v2/components/ServerErrorPage.d.ts.map +1 -1
  607. package/dist/v2/components/ServerErrorPage.js +37 -20
  608. package/dist/v2/components/ServerErrorPage.js.map +1 -1
  609. package/dist/v2/components/Skeleton.js +86 -100
  610. package/dist/v2/components/Skeleton.js.map +1 -1
  611. package/dist/v2/components/SkipLink.js +9 -12
  612. package/dist/v2/components/SkipLink.js.map +1 -1
  613. package/dist/v2/components/Spinner.js +16 -25
  614. package/dist/v2/components/Spinner.js.map +1 -1
  615. package/dist/v2/components/Status.js +18 -29
  616. package/dist/v2/components/Status.js.map +1 -1
  617. package/dist/v2/components/Stepper.js +80 -82
  618. package/dist/v2/components/Stepper.js.map +1 -1
  619. package/dist/v2/components/Surface.js +34 -49
  620. package/dist/v2/components/Surface.js.map +1 -1
  621. package/dist/v2/components/Switch.js +29 -37
  622. package/dist/v2/components/Switch.js.map +1 -1
  623. package/dist/v2/components/TabPanel.d.ts +17 -0
  624. package/dist/v2/components/TabPanel.d.ts.map +1 -0
  625. package/dist/v2/components/TabPanel.js +90 -0
  626. package/dist/v2/components/TabPanel.js.map +1 -0
  627. package/dist/v2/components/Tabs.d.ts +25 -0
  628. package/dist/v2/components/Tabs.d.ts.map +1 -1
  629. package/dist/v2/components/Tabs.js +53 -29
  630. package/dist/v2/components/Tabs.js.map +1 -1
  631. package/dist/v2/components/TelInput.js +80 -115
  632. package/dist/v2/components/TelInput.js.map +1 -1
  633. package/dist/v2/components/Textarea.js +26 -35
  634. package/dist/v2/components/Textarea.js.map +1 -1
  635. package/dist/v2/components/TimePicker.js +62 -74
  636. package/dist/v2/components/TimePicker.js.map +1 -1
  637. package/dist/v2/components/Toast.js +119 -174
  638. package/dist/v2/components/Toast.js.map +1 -1
  639. package/dist/v2/components/Tooltip.js +23 -38
  640. package/dist/v2/components/Tooltip.js.map +1 -1
  641. package/dist/v2/components/_ErrorPageBody.js +15 -16
  642. package/dist/v2/components/_ErrorPageBody.js.map +1 -1
  643. package/dist/v2/components/_pickerShared.js +5 -5
  644. package/dist/v2/components/_pickerShared.js.map +1 -1
  645. package/dist/v2/components/index.d.ts +67 -1
  646. package/dist/v2/components/index.d.ts.map +1 -1
  647. package/dist/v2/components/index.js +153 -136
  648. package/dist/v2/components/index.js.map +1 -1
  649. package/dist/v2/hooks/index.d.ts +65 -0
  650. package/dist/v2/hooks/index.d.ts.map +1 -1
  651. package/dist/v2/hooks/index.js +63 -24
  652. package/dist/v2/hooks/index.js.map +1 -1
  653. package/dist/v2/hooks/useAppliedFilters.d.ts +102 -0
  654. package/dist/v2/hooks/useAppliedFilters.d.ts.map +1 -0
  655. package/dist/v2/hooks/useAppliedFilters.js +117 -0
  656. package/dist/v2/hooks/useAppliedFilters.js.map +1 -0
  657. package/dist/v2/hooks/useDebouncedCallback.d.ts +64 -0
  658. package/dist/v2/hooks/useDebouncedCallback.d.ts.map +1 -0
  659. package/dist/v2/hooks/useDebouncedCallback.js +87 -0
  660. package/dist/v2/hooks/useDebouncedCallback.js.map +1 -0
  661. package/dist/v2/hooks/useDelayedFlag.js +6 -20
  662. package/dist/v2/hooks/useDelayedFlag.js.map +1 -1
  663. package/dist/v2/hooks/useDensity.d.ts.map +1 -1
  664. package/dist/v2/hooks/useDensity.js +14 -18
  665. package/dist/v2/hooks/useDensity.js.map +1 -1
  666. package/dist/v2/hooks/useFocusFirstError.js +26 -34
  667. package/dist/v2/hooks/useFocusFirstError.js.map +1 -1
  668. package/dist/v2/hooks/useFocusOnRouteChange.d.ts +65 -0
  669. package/dist/v2/hooks/useFocusOnRouteChange.d.ts.map +1 -0
  670. package/dist/v2/hooks/useFocusOnRouteChange.js +88 -0
  671. package/dist/v2/hooks/useFocusOnRouteChange.js.map +1 -0
  672. package/dist/v2/hooks/useFocusTrap.js +20 -24
  673. package/dist/v2/hooks/useFocusTrap.js.map +1 -1
  674. package/dist/v2/hooks/useFormAutoSave.d.ts +4 -4
  675. package/dist/v2/hooks/useFormAutoSave.d.ts.map +1 -1
  676. package/dist/v2/hooks/useFormAutoSave.js +39 -54
  677. package/dist/v2/hooks/useFormAutoSave.js.map +1 -1
  678. package/dist/v2/hooks/useFormCompletionProgress.d.ts +1 -1
  679. package/dist/v2/hooks/useFormCompletionProgress.d.ts.map +1 -1
  680. package/dist/v2/hooks/useFormCompletionProgress.js +33 -52
  681. package/dist/v2/hooks/useFormCompletionProgress.js.map +1 -1
  682. package/dist/v2/hooks/useKeyboardShortcuts.d.ts +25 -0
  683. package/dist/v2/hooks/useKeyboardShortcuts.d.ts.map +1 -0
  684. package/dist/v2/hooks/useKeyboardShortcuts.js +132 -0
  685. package/dist/v2/hooks/useKeyboardShortcuts.js.map +1 -0
  686. package/dist/v2/hooks/usePrefersReducedMotion.d.ts +56 -0
  687. package/dist/v2/hooks/usePrefersReducedMotion.d.ts.map +1 -0
  688. package/dist/v2/hooks/usePrefersReducedMotion.js +105 -0
  689. package/dist/v2/hooks/usePrefersReducedMotion.js.map +1 -0
  690. package/dist/v2/hooks/useResolvedDensity.js +5 -13
  691. package/dist/v2/hooks/useResolvedDensity.js.map +1 -1
  692. package/dist/v2/hooks/useSortedRows.js +4 -6
  693. package/dist/v2/hooks/useSortedRows.js.map +1 -1
  694. package/dist/v2/hooks/useTabLoading.js +7 -22
  695. package/dist/v2/hooks/useTabLoading.js.map +1 -1
  696. package/dist/v2/index.d.ts.map +1 -1
  697. package/dist/v2/index.js +143 -145
  698. package/dist/v2/index.js.map +1 -1
  699. package/dist/v2/modalContext.js +2 -2
  700. package/dist/v2/modalContext.js.map +1 -1
  701. package/dist/v2/models/favorite.d.ts +8 -9
  702. package/dist/v2/models/favorite.d.ts.map +1 -1
  703. package/dist/v2/models/favorite.js.map +1 -1
  704. package/dist/v2/models/index.js +4 -4
  705. package/dist/v2/models/index.js.map +1 -1
  706. package/dist/v2/models/personalization.d.ts +44 -48
  707. package/dist/v2/models/personalization.d.ts.map +1 -1
  708. package/dist/v2/models/personalization.js.map +1 -1
  709. package/dist/v2/models/referentiel.d.ts +32 -50
  710. package/dist/v2/models/referentiel.d.ts.map +1 -1
  711. package/dist/v2/models/referentiel.js.map +1 -1
  712. package/dist/v2/models/savedFilter.d.ts +8 -17
  713. package/dist/v2/models/savedFilter.d.ts.map +1 -1
  714. package/dist/v2/models/savedFilter.js.map +1 -1
  715. package/dist/v2/patterns/ActionBar.js +152 -187
  716. package/dist/v2/patterns/ActionBar.js.map +1 -1
  717. package/dist/v2/patterns/AppMain.d.ts +109 -0
  718. package/dist/v2/patterns/AppMain.d.ts.map +1 -0
  719. package/dist/v2/patterns/AppMain.js +115 -0
  720. package/dist/v2/patterns/AppMain.js.map +1 -0
  721. package/dist/v2/patterns/BulkActionBar.js +40 -42
  722. package/dist/v2/patterns/BulkActionBar.js.map +1 -1
  723. package/dist/v2/patterns/ChartFigure.d.ts +124 -0
  724. package/dist/v2/patterns/ChartFigure.d.ts.map +1 -0
  725. package/dist/v2/patterns/ChartFigure.js +159 -0
  726. package/dist/v2/patterns/ChartFigure.js.map +1 -0
  727. package/dist/v2/patterns/CollapsibleDataGrid.js +138 -174
  728. package/dist/v2/patterns/CollapsibleDataGrid.js.map +1 -1
  729. package/dist/v2/patterns/ColumnsToggle.js +60 -94
  730. package/dist/v2/patterns/ColumnsToggle.js.map +1 -1
  731. package/dist/v2/patterns/DataGrid.d.ts.map +1 -1
  732. package/dist/v2/patterns/DataGrid.js +262 -297
  733. package/dist/v2/patterns/DataGrid.js.map +1 -1
  734. package/dist/v2/patterns/DataGridSettingsMenu.d.ts +12 -0
  735. package/dist/v2/patterns/DataGridSettingsMenu.d.ts.map +1 -1
  736. package/dist/v2/patterns/DataGridSettingsMenu.js +104 -121
  737. package/dist/v2/patterns/DataGridSettingsMenu.js.map +1 -1
  738. package/dist/v2/patterns/DataGridToolbar.js +103 -106
  739. package/dist/v2/patterns/DataGridToolbar.js.map +1 -1
  740. package/dist/v2/patterns/DataGridVirtualized.js +179 -217
  741. package/dist/v2/patterns/DataGridVirtualized.js.map +1 -1
  742. package/dist/v2/patterns/DeleteResourceConfirmDialog.js +32 -35
  743. package/dist/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
  744. package/dist/v2/patterns/DetailSplit.d.ts +87 -0
  745. package/dist/v2/patterns/DetailSplit.d.ts.map +1 -0
  746. package/dist/v2/patterns/DetailSplit.js +116 -0
  747. package/dist/v2/patterns/DetailSplit.js.map +1 -0
  748. package/dist/v2/patterns/FavoriteColumn.d.ts +9 -9
  749. package/dist/v2/patterns/FavoriteColumn.d.ts.map +1 -1
  750. package/dist/v2/patterns/FavoriteColumn.js +32 -80
  751. package/dist/v2/patterns/FavoriteColumn.js.map +1 -1
  752. package/dist/v2/patterns/FavoritesFilter.js +36 -44
  753. package/dist/v2/patterns/FavoritesFilter.js.map +1 -1
  754. package/dist/v2/patterns/FilterTabBar.d.ts +28 -0
  755. package/dist/v2/patterns/FilterTabBar.d.ts.map +1 -0
  756. package/dist/v2/patterns/FilterTabBar.js +120 -0
  757. package/dist/v2/patterns/FilterTabBar.js.map +1 -0
  758. package/dist/v2/patterns/FormErrorSummary.js +20 -23
  759. package/dist/v2/patterns/FormErrorSummary.js.map +1 -1
  760. package/dist/v2/patterns/FormPageShell.js +53 -50
  761. package/dist/v2/patterns/FormPageShell.js.map +1 -1
  762. package/dist/v2/patterns/FormSection.d.ts +8 -3
  763. package/dist/v2/patterns/FormSection.d.ts.map +1 -1
  764. package/dist/v2/patterns/FormSection.js +44 -51
  765. package/dist/v2/patterns/FormSection.js.map +1 -1
  766. package/dist/v2/patterns/FormikCheckbox.d.ts +77 -0
  767. package/dist/v2/patterns/FormikCheckbox.d.ts.map +1 -0
  768. package/dist/v2/patterns/FormikCheckbox.js +138 -0
  769. package/dist/v2/patterns/FormikCheckbox.js.map +1 -0
  770. package/dist/v2/patterns/FormikCheckboxGroup.d.ts +17 -1
  771. package/dist/v2/patterns/FormikCheckboxGroup.d.ts.map +1 -1
  772. package/dist/v2/patterns/FormikCheckboxGroup.js +62 -65
  773. package/dist/v2/patterns/FormikCheckboxGroup.js.map +1 -1
  774. package/dist/v2/patterns/FormikCombobox.d.ts +7 -1
  775. package/dist/v2/patterns/FormikCombobox.d.ts.map +1 -1
  776. package/dist/v2/patterns/FormikCombobox.js +55 -69
  777. package/dist/v2/patterns/FormikCombobox.js.map +1 -1
  778. package/dist/v2/patterns/FormikDatePicker.d.ts +13 -1
  779. package/dist/v2/patterns/FormikDatePicker.d.ts.map +1 -1
  780. package/dist/v2/patterns/FormikDatePicker.js +59 -106
  781. package/dist/v2/patterns/FormikDatePicker.js.map +1 -1
  782. package/dist/v2/patterns/FormikDateTimePicker.d.ts +111 -0
  783. package/dist/v2/patterns/FormikDateTimePicker.d.ts.map +1 -0
  784. package/dist/v2/patterns/FormikDateTimePicker.js +144 -0
  785. package/dist/v2/patterns/FormikDateTimePicker.js.map +1 -0
  786. package/dist/v2/patterns/FormikErrorFocus.js +25 -26
  787. package/dist/v2/patterns/FormikErrorFocus.js.map +1 -1
  788. package/dist/v2/patterns/FormikErrorSummary.d.ts +74 -0
  789. package/dist/v2/patterns/FormikErrorSummary.d.ts.map +1 -0
  790. package/dist/v2/patterns/FormikErrorSummary.js +97 -0
  791. package/dist/v2/patterns/FormikErrorSummary.js.map +1 -0
  792. package/dist/v2/patterns/FormikFile.d.ts +14 -1
  793. package/dist/v2/patterns/FormikFile.d.ts.map +1 -1
  794. package/dist/v2/patterns/FormikFile.js +99 -83
  795. package/dist/v2/patterns/FormikFile.js.map +1 -1
  796. package/dist/v2/patterns/FormikInput.d.ts +11 -1
  797. package/dist/v2/patterns/FormikInput.d.ts.map +1 -1
  798. package/dist/v2/patterns/FormikInput.js +45 -55
  799. package/dist/v2/patterns/FormikInput.js.map +1 -1
  800. package/dist/v2/patterns/FormikRadioGroup.d.ts +80 -0
  801. package/dist/v2/patterns/FormikRadioGroup.d.ts.map +1 -0
  802. package/dist/v2/patterns/FormikRadioGroup.js +137 -0
  803. package/dist/v2/patterns/FormikRadioGroup.js.map +1 -0
  804. package/dist/v2/patterns/FormikReferentielField.d.ts +12 -1
  805. package/dist/v2/patterns/FormikReferentielField.d.ts.map +1 -1
  806. package/dist/v2/patterns/FormikReferentielField.js +54 -64
  807. package/dist/v2/patterns/FormikReferentielField.js.map +1 -1
  808. package/dist/v2/patterns/FormikSelect.d.ts +9 -1
  809. package/dist/v2/patterns/FormikSelect.d.ts.map +1 -1
  810. package/dist/v2/patterns/FormikSelect.js +70 -89
  811. package/dist/v2/patterns/FormikSelect.js.map +1 -1
  812. package/dist/v2/patterns/FormikTextarea.d.ts +9 -1
  813. package/dist/v2/patterns/FormikTextarea.d.ts.map +1 -1
  814. package/dist/v2/patterns/FormikTextarea.js +35 -48
  815. package/dist/v2/patterns/FormikTextarea.js.map +1 -1
  816. package/dist/v2/patterns/KeyboardShortcutsHelp.d.ts +14 -1
  817. package/dist/v2/patterns/KeyboardShortcutsHelp.d.ts.map +1 -1
  818. package/dist/v2/patterns/KeyboardShortcutsHelp.js +71 -74
  819. package/dist/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
  820. package/dist/v2/patterns/NetworkErrorBanner.js +13 -16
  821. package/dist/v2/patterns/NetworkErrorBanner.js.map +1 -1
  822. package/dist/v2/patterns/PageContent.js +17 -20
  823. package/dist/v2/patterns/PageContent.js.map +1 -1
  824. package/dist/v2/patterns/PreviewDrawer.d.ts +49 -0
  825. package/dist/v2/patterns/PreviewDrawer.d.ts.map +1 -0
  826. package/dist/v2/patterns/PreviewDrawer.js +159 -0
  827. package/dist/v2/patterns/PreviewDrawer.js.map +1 -0
  828. package/dist/v2/patterns/ReferentielField.d.ts +86 -2
  829. package/dist/v2/patterns/ReferentielField.d.ts.map +1 -1
  830. package/dist/v2/patterns/ReferentielField.js +347 -327
  831. package/dist/v2/patterns/ReferentielField.js.map +1 -1
  832. package/dist/v2/patterns/RowFavoriteToggle.d.ts +98 -0
  833. package/dist/v2/patterns/RowFavoriteToggle.d.ts.map +1 -0
  834. package/dist/v2/patterns/RowFavoriteToggle.js +135 -0
  835. package/dist/v2/patterns/RowFavoriteToggle.js.map +1 -0
  836. package/dist/v2/patterns/SaveFilterDialog.js +50 -77
  837. package/dist/v2/patterns/SaveFilterDialog.js.map +1 -1
  838. package/dist/v2/patterns/SavedFiltersMenu.js +89 -107
  839. package/dist/v2/patterns/SavedFiltersMenu.js.map +1 -1
  840. package/dist/v2/patterns/SkeletonPageShell.js +122 -143
  841. package/dist/v2/patterns/SkeletonPageShell.js.map +1 -1
  842. package/dist/v2/patterns/SortableHeader.js +35 -57
  843. package/dist/v2/patterns/SortableHeader.js.map +1 -1
  844. package/dist/v2/patterns/Tour.js +121 -142
  845. package/dist/v2/patterns/Tour.js.map +1 -1
  846. package/dist/v2/patterns/_dataGridShared.d.ts.map +1 -1
  847. package/dist/v2/patterns/_dataGridShared.js +131 -147
  848. package/dist/v2/patterns/_dataGridShared.js.map +1 -1
  849. package/dist/v2/patterns/_pickerSerialisation.d.ts +44 -0
  850. package/dist/v2/patterns/_pickerSerialisation.d.ts.map +1 -0
  851. package/dist/v2/patterns/_pickerSerialisation.js +80 -0
  852. package/dist/v2/patterns/_pickerSerialisation.js.map +1 -0
  853. package/dist/v2/patterns/_sort.js +17 -33
  854. package/dist/v2/patterns/_sort.js.map +1 -1
  855. package/dist/v2/patterns/_useColumnReorder.js +124 -163
  856. package/dist/v2/patterns/_useColumnReorder.js.map +1 -1
  857. package/dist/v2/patterns/_useColumnResize.js +80 -99
  858. package/dist/v2/patterns/_useColumnResize.js.map +1 -1
  859. package/dist/v2/patterns/filterCriteria.d.ts +78 -0
  860. package/dist/v2/patterns/filterCriteria.d.ts.map +1 -0
  861. package/dist/v2/patterns/filterCriteria.js +110 -0
  862. package/dist/v2/patterns/filterCriteria.js.map +1 -0
  863. package/dist/v2/patterns/index.d.ts +247 -0
  864. package/dist/v2/patterns/index.d.ts.map +1 -1
  865. package/dist/v2/patterns/index.js +182 -70
  866. package/dist/v2/patterns/index.js.map +1 -1
  867. package/dist/v2/patterns/rowActions.d.ts +150 -0
  868. package/dist/v2/patterns/rowActions.d.ts.map +1 -0
  869. package/dist/v2/patterns/rowActions.js +232 -0
  870. package/dist/v2/patterns/rowActions.js.map +1 -0
  871. package/dist/v2/personalization/PersonalizationProvider.d.ts.map +1 -1
  872. package/dist/v2/personalization/PersonalizationProvider.js +57 -53
  873. package/dist/v2/personalization/PersonalizationProvider.js.map +1 -1
  874. package/dist/v2/personalization/adapters/_storageKey.js +5 -5
  875. package/dist/v2/personalization/adapters/_storageKey.js.map +1 -1
  876. package/dist/v2/personalization/adapters/createLocalStorageAdapter.js +25 -24
  877. package/dist/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
  878. package/dist/v2/personalization/adapters/createMemoryAdapter.js +14 -14
  879. package/dist/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
  880. package/dist/v2/personalization/adapters/index.js +5 -5
  881. package/dist/v2/personalization/adapters/index.js.map +1 -1
  882. package/dist/v2/personalization/capabilities/favorites.js +39 -62
  883. package/dist/v2/personalization/capabilities/favorites.js.map +1 -1
  884. package/dist/v2/personalization/capabilities/favoritesView.js +25 -37
  885. package/dist/v2/personalization/capabilities/favoritesView.js.map +1 -1
  886. package/dist/v2/personalization/capabilities/gridPreferences.d.ts +100 -0
  887. package/dist/v2/personalization/capabilities/gridPreferences.d.ts.map +1 -0
  888. package/dist/v2/personalization/capabilities/gridPreferences.js +210 -0
  889. package/dist/v2/personalization/capabilities/gridPreferences.js.map +1 -0
  890. package/dist/v2/personalization/capabilities/index.d.ts +6 -0
  891. package/dist/v2/personalization/capabilities/index.d.ts.map +1 -1
  892. package/dist/v2/personalization/capabilities/index.js +23 -10
  893. package/dist/v2/personalization/capabilities/index.js.map +1 -1
  894. package/dist/v2/personalization/capabilities/reviveSavedCriteria.d.ts +88 -0
  895. package/dist/v2/personalization/capabilities/reviveSavedCriteria.d.ts.map +1 -0
  896. package/dist/v2/personalization/capabilities/reviveSavedCriteria.js +126 -0
  897. package/dist/v2/personalization/capabilities/reviveSavedCriteria.js.map +1 -0
  898. package/dist/v2/personalization/capabilities/savedFilters.js +93 -100
  899. package/dist/v2/personalization/capabilities/savedFilters.js.map +1 -1
  900. package/dist/v2/personalization/createPersonalizationStore.d.ts.map +1 -1
  901. package/dist/v2/personalization/createPersonalizationStore.js +81 -182
  902. package/dist/v2/personalization/createPersonalizationStore.js.map +1 -1
  903. package/dist/v2/personalization/index.d.ts +34 -0
  904. package/dist/v2/personalization/index.d.ts.map +1 -1
  905. package/dist/v2/personalization/index.js +41 -21
  906. package/dist/v2/personalization/index.js.map +1 -1
  907. package/dist/v2/personalization/personalizationContext.js +10 -12
  908. package/dist/v2/personalization/personalizationContext.js.map +1 -1
  909. package/dist/v2/personalization/schema.js +8 -9
  910. package/dist/v2/personalization/schema.js.map +1 -1
  911. package/dist/v2/referentiel/ReferentielProvider.js +31 -45
  912. package/dist/v2/referentiel/ReferentielProvider.js.map +1 -1
  913. package/dist/v2/referentiel/index.js +11 -13
  914. package/dist/v2/referentiel/index.js.map +1 -1
  915. package/dist/v2/referentiel/types.d.ts +105 -0
  916. package/dist/v2/referentiel/types.d.ts.map +1 -0
  917. package/dist/v2/referentiel/types.js +6 -0
  918. package/dist/v2/referentiel/types.js.map +1 -0
  919. package/dist/v2/referentiel/useReferentielClient.js +13 -16
  920. package/dist/v2/referentiel/useReferentielClient.js.map +1 -1
  921. package/dist/v2/referentiel/useReferentielOptions.d.ts +7 -17
  922. package/dist/v2/referentiel/useReferentielOptions.d.ts.map +1 -1
  923. package/dist/v2/referentiel/useReferentielOptions.js +63 -120
  924. package/dist/v2/referentiel/useReferentielOptions.js.map +1 -1
  925. package/dist/v2/referentiel/useReferentielSearch.d.ts +7 -48
  926. package/dist/v2/referentiel/useReferentielSearch.d.ts.map +1 -1
  927. package/dist/v2/referentiel/useReferentielSearch.js +40 -95
  928. package/dist/v2/referentiel/useReferentielSearch.js.map +1 -1
  929. package/dist/v2/theme/_brand.js +12 -26
  930. package/dist/v2/theme/_brand.js.map +1 -1
  931. package/dist/v2/theme/_brandSecondary.js +12 -26
  932. package/dist/v2/theme/_brandSecondary.js.map +1 -1
  933. package/dist/v2/theme/createPortnetTheme.js +41 -49
  934. package/dist/v2/theme/createPortnetTheme.js.map +1 -1
  935. package/dist/v2/theme/cssVariables.d.ts +3 -3
  936. package/dist/v2/theme/cssVariables.d.ts.map +1 -1
  937. package/dist/v2/theme/cssVariables.js +65 -70
  938. package/dist/v2/theme/cssVariables.js.map +1 -1
  939. package/dist/v2/theme/index.js +10 -10
  940. package/dist/v2/theme/index.js.map +1 -1
  941. package/dist/v2/tokens/breakpoints.js +16 -16
  942. package/dist/v2/tokens/breakpoints.js.map +1 -1
  943. package/dist/v2/tokens/chart.d.ts +103 -0
  944. package/dist/v2/tokens/chart.d.ts.map +1 -0
  945. package/dist/v2/tokens/chart.js +270 -0
  946. package/dist/v2/tokens/chart.js.map +1 -0
  947. package/dist/v2/tokens/colors.js +24 -24
  948. package/dist/v2/tokens/colors.js.map +1 -1
  949. package/dist/v2/tokens/density.d.ts +104 -0
  950. package/dist/v2/tokens/density.d.ts.map +1 -1
  951. package/dist/v2/tokens/density.js +67 -12
  952. package/dist/v2/tokens/density.js.map +1 -1
  953. package/dist/v2/tokens/index.d.ts +50 -1
  954. package/dist/v2/tokens/index.d.ts.map +1 -1
  955. package/dist/v2/tokens/index.js +116 -68
  956. package/dist/v2/tokens/index.js.map +1 -1
  957. package/dist/v2/tokens/motion.js +16 -22
  958. package/dist/v2/tokens/motion.js.map +1 -1
  959. package/dist/v2/tokens/radius.js +3 -3
  960. package/dist/v2/tokens/radius.js.map +1 -1
  961. package/dist/v2/tokens/shadows.js +8 -8
  962. package/dist/v2/tokens/shadows.js.map +1 -1
  963. package/dist/v2/tokens/spacing.js +4 -4
  964. package/dist/v2/tokens/spacing.js.map +1 -1
  965. package/dist/v2/tokens/state.js +3 -3
  966. package/dist/v2/tokens/state.js.map +1 -1
  967. package/dist/v2/tokens/statusPalette.js +21 -23
  968. package/dist/v2/tokens/statusPalette.js.map +1 -1
  969. package/dist/v2/tokens/tokens.json +6 -1
  970. package/dist/v2/tokens/typography.js +15 -15
  971. package/dist/v2/tokens/typography.js.map +1 -1
  972. package/dist/v2/tokens/zIndex.js +3 -3
  973. package/dist/v2/tokens/zIndex.js.map +1 -1
  974. package/dist/v2/types/datagrid.d.ts +9 -1
  975. package/dist/v2/types/datagrid.d.ts.map +1 -1
  976. package/dist/v2/types/datagrid.js.map +1 -1
  977. package/dist/v2/types/index.js +2 -2
  978. package/dist/v2/types/index.js.map +1 -1
  979. package/dist/v2/utils/apiError.js +16 -37
  980. package/dist/v2/utils/apiError.js.map +1 -1
  981. package/dist/v2/utils/contrast.js +31 -32
  982. package/dist/v2/utils/contrast.js.map +1 -1
  983. package/dist/v2/utils/cx.js +7 -27
  984. package/dist/v2/utils/cx.js.map +1 -1
  985. package/dist/v2/utils/fileDownload.js +25 -28
  986. package/dist/v2/utils/fileDownload.js.map +1 -1
  987. package/dist/v2/utils/fileValidation.d.ts +116 -0
  988. package/dist/v2/utils/fileValidation.d.ts.map +1 -0
  989. package/dist/v2/utils/fileValidation.js +220 -0
  990. package/dist/v2/utils/fileValidation.js.map +1 -0
  991. package/dist/v2/utils/fmtDate.d.ts +103 -0
  992. package/dist/v2/utils/fmtDate.d.ts.map +1 -0
  993. package/dist/v2/utils/fmtDate.js +119 -0
  994. package/dist/v2/utils/fmtDate.js.map +1 -0
  995. package/dist/v2/utils/fmtMoney.d.ts +3 -3
  996. package/dist/v2/utils/fmtMoney.d.ts.map +1 -1
  997. package/dist/v2/utils/fmtMoney.js +9 -11
  998. package/dist/v2/utils/fmtMoney.js.map +1 -1
  999. package/dist/v2/utils/formikErrors.d.ts +67 -0
  1000. package/dist/v2/utils/formikErrors.d.ts.map +1 -0
  1001. package/dist/v2/utils/formikErrors.js +85 -0
  1002. package/dist/v2/utils/formikErrors.js.map +1 -0
  1003. package/dist/v2/utils/index.d.ts +5 -0
  1004. package/dist/v2/utils/index.d.ts.map +1 -1
  1005. package/dist/v2/utils/index.js +67 -18
  1006. package/dist/v2/utils/index.js.map +1 -1
  1007. package/dist/v2/utils/mergeLabels.js +9 -14
  1008. package/dist/v2/utils/mergeLabels.js.map +1 -1
  1009. package/dist/v2/utils/networkStatus.js +14 -14
  1010. package/dist/v2/utils/networkStatus.js.map +1 -1
  1011. package/package.json +26 -9
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  var _fmtMoney = _interopRequireDefault(require("../utils/fmtMoney"));
4
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
4
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
5
5
  /**
6
6
  * Contract tests for fmtMoney — the canonical v2 money formatter.
7
7
  *
@@ -10,81 +10,79 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
10
10
  * Removing it would let a malformed amount or a typo'd locale crash
11
11
  * an entire row of a DataGrid.
12
12
  */
13
- describe("fmtMoney — contract", function () {
14
- describe("graceful empty-cell fallback", function () {
15
- test("returns '—' for null", function () {
16
- expect((0, _fmtMoney["default"])(null)).toBe("—");
13
+ describe("fmtMoney — contract", () => {
14
+ describe("graceful empty-cell fallback", () => {
15
+ test("returns '—' for null", () => {
16
+ expect((0, _fmtMoney.default)(null)).toBe("—");
17
17
  });
18
- test("returns '—' for undefined", function () {
19
- expect((0, _fmtMoney["default"])(undefined)).toBe("—");
18
+ test("returns '—' for undefined", () => {
19
+ expect((0, _fmtMoney.default)(undefined)).toBe("—");
20
20
  });
21
- test("returns '—' for empty string", function () {
22
- expect((0, _fmtMoney["default"])("")).toBe("—");
21
+ test("returns '—' for empty string", () => {
22
+ expect((0, _fmtMoney.default)("")).toBe("—");
23
23
  });
24
- test("returns '—' for NaN", function () {
25
- expect((0, _fmtMoney["default"])(NaN)).toBe("—");
24
+ test("returns '—' for NaN", () => {
25
+ expect((0, _fmtMoney.default)(NaN)).toBe("—");
26
26
  });
27
- test("returns '—' for Infinity", function () {
28
- expect((0, _fmtMoney["default"])(Infinity)).toBe("—");
29
- expect((0, _fmtMoney["default"])(-Infinity)).toBe("—");
27
+ test("returns '—' for Infinity", () => {
28
+ expect((0, _fmtMoney.default)(Infinity)).toBe("—");
29
+ expect((0, _fmtMoney.default)(-Infinity)).toBe("—");
30
30
  });
31
- test("returns '—' for non-numeric string", function () {
32
- expect((0, _fmtMoney["default"])("abc")).toBe("—");
31
+ test("returns '—' for non-numeric string", () => {
32
+ expect((0, _fmtMoney.default)("abc")).toBe("—");
33
33
  });
34
- test("coerces numeric strings to numbers", function () {
34
+ test("coerces numeric strings to numbers", () => {
35
35
  // "1234.5" should format identically to 1234.5
36
- expect((0, _fmtMoney["default"])("1234.5")).toBe((0, _fmtMoney["default"])(1234.5));
36
+ expect((0, _fmtMoney.default)("1234.5")).toBe((0, _fmtMoney.default)(1234.5));
37
37
  });
38
38
  });
39
- describe("locale-aware formatting", function () {
40
- test("formats with the default fr-FR locale", function () {
41
- var out = (0, _fmtMoney["default"])(1234.5);
39
+ describe("locale-aware formatting", () => {
40
+ test("formats with the default fr-FR locale", () => {
41
+ const out = (0, _fmtMoney.default)(1234.5);
42
42
  // FR uses comma as decimal separator. Thousand separator is a
43
43
  // non-breaking space (U+00A0) or narrow non-breaking space
44
44
  // (U+202F) depending on the runtime — accept either.
45
45
  expect(out).toMatch(/1[\u00A0\u202F\s]234,5/);
46
46
  });
47
- test("formats under en-US when explicitly passed", function () {
48
- var out = (0, _fmtMoney["default"])(1234.5, "USD", {
47
+ test("formats under en-US when explicitly passed", () => {
48
+ const out = (0, _fmtMoney.default)(1234.5, "USD", {
49
49
  locale: "en-US"
50
50
  });
51
51
  expect(out).toContain("1,234.5");
52
52
  expect(out).toContain("USD");
53
53
  });
54
- test("respects minimumFractionDigits", function () {
55
- var out = (0, _fmtMoney["default"])(1234, "EUR", {
54
+ test("respects minimumFractionDigits", () => {
55
+ const out = (0, _fmtMoney.default)(1234, "EUR", {
56
56
  minimumFractionDigits: 2
57
57
  });
58
58
  // Default fr-FR locale; 2 fraction digits → trailing ",00"
59
59
  expect(out).toMatch(/1[\u00A0\u202F\s]234,00/);
60
60
  });
61
- test("respects maximumFractionDigits", function () {
62
- var out = (0, _fmtMoney["default"])(1.23456, "", {
61
+ test("respects maximumFractionDigits", () => {
62
+ const out = (0, _fmtMoney.default)(1.23456, "", {
63
63
  maximumFractionDigits: 2
64
64
  });
65
65
  // Should round to 2 fraction digits in fr-FR (",23")
66
66
  expect(out).toMatch(/1,23\b/);
67
67
  });
68
- test("appends the currency suffix when supplied", function () {
69
- expect((0, _fmtMoney["default"])(100, "EUR")).toContain("EUR");
70
- expect((0, _fmtMoney["default"])(100, "MAD")).toContain("MAD");
71
- expect((0, _fmtMoney["default"])(100, "USD")).toContain("USD");
68
+ test("appends the currency suffix when supplied", () => {
69
+ expect((0, _fmtMoney.default)(100, "EUR")).toContain("EUR");
70
+ expect((0, _fmtMoney.default)(100, "MAD")).toContain("MAD");
71
+ expect((0, _fmtMoney.default)(100, "USD")).toContain("USD");
72
72
  });
73
- test("omits the currency suffix when blank", function () {
74
- var out = (0, _fmtMoney["default"])(100, "");
73
+ test("omits the currency suffix when blank", () => {
74
+ const out = (0, _fmtMoney.default)(100, "");
75
75
  expect(out).not.toMatch(/[A-Z]{3}/);
76
76
  });
77
77
  });
78
- describe("locale fallback (the regression-class guard)", function () {
79
- test("does not throw on an invalid BCP-47 tag", function () {
80
- expect(function () {
81
- return (0, _fmtMoney["default"])(100, "EUR", {
82
- locale: "not-a-real-locale"
83
- });
84
- }).not.toThrow();
85
- });
86
- test("falls back to fr-FR formatting on invalid locale", function () {
87
- var out = (0, _fmtMoney["default"])(1234.5, "EUR", {
78
+ describe("locale fallback (the regression-class guard)", () => {
79
+ test("does not throw on an invalid BCP-47 tag", () => {
80
+ expect(() => (0, _fmtMoney.default)(100, "EUR", {
81
+ locale: "not-a-real-locale"
82
+ })).not.toThrow();
83
+ });
84
+ test("falls back to fr-FR formatting on invalid locale", () => {
85
+ const out = (0, _fmtMoney.default)(1234.5, "EUR", {
88
86
  locale: "not-a-real-locale"
89
87
  });
90
88
  // Should produce the FR comma-decimal form, not crash and
@@ -92,19 +90,16 @@ describe("fmtMoney — contract", function () {
92
90
  expect(out).toMatch(/1[\u00A0\u202F\s]234,5/);
93
91
  expect(out).toContain("EUR");
94
92
  });
95
- test("does not throw on garbage object (defensive)", function () {
93
+ test("does not throw on garbage object (defensive)", () => {
96
94
  // fmtMoney's opts.locale is typed `string | undefined`, but real hosts
97
95
  // occasionally pass a wrong runtime value. The @ts-expect-error documents
98
96
  // that this input is intentionally ill-typed and asserts the runtime
99
97
  // guard (catch → fr-FR fallback) handles any value, not just RangeError.
100
- expect(function () {
101
- return (
102
- // @ts-expect-error intentional invalid locale type (runtime robustness)
103
- (0, _fmtMoney["default"])(100, "EUR", {
104
- locale: 12345
105
- })
106
- );
107
- }).not.toThrow();
98
+ expect(() =>
99
+ // @ts-expect-error — intentional invalid locale type (runtime robustness)
100
+ (0, _fmtMoney.default)(100, "EUR", {
101
+ locale: 12345
102
+ })).not.toThrow();
108
103
  });
109
104
  });
110
105
  });
@@ -1 +1 @@
1
- {"version":3,"file":"locale-fallback.test.js","names":["_fmtMoney","_interopRequireDefault","require","obj","__esModule","describe","test","expect","fmtMoney","toBe","undefined","NaN","Infinity","out","toMatch","locale","toContain","minimumFractionDigits","maximumFractionDigits","not","toThrow"],"sources":["../../../src/lib/v2/__tests__/locale-fallback.test.ts"],"sourcesContent":["import fmtMoney from \"../utils/fmtMoney\";\r\n\r\n/**\r\n * Contract tests for fmtMoney — the canonical v2 money formatter.\r\n *\r\n * The graceful-display contract (returns \"—\" for bad input, never\r\n * throws on bad locale) underpins TradeDirect dashboard cells.\r\n * Removing it would let a malformed amount or a typo'd locale crash\r\n * an entire row of a DataGrid.\r\n */\r\ndescribe(\"fmtMoney — contract\", () => {\r\n describe(\"graceful empty-cell fallback\", () => {\r\n test(\"returns '—' for null\", () => {\r\n expect(fmtMoney(null)).toBe(\"—\");\r\n });\r\n\r\n test(\"returns '—' for undefined\", () => {\r\n expect(fmtMoney(undefined)).toBe(\"—\");\r\n });\r\n\r\n test(\"returns '—' for empty string\", () => {\r\n expect(fmtMoney(\"\")).toBe(\"—\");\r\n });\r\n\r\n test(\"returns '—' for NaN\", () => {\r\n expect(fmtMoney(NaN)).toBe(\"—\");\r\n });\r\n\r\n test(\"returns '—' for Infinity\", () => {\r\n expect(fmtMoney(Infinity)).toBe(\"—\");\r\n expect(fmtMoney(-Infinity)).toBe(\"—\");\r\n });\r\n\r\n test(\"returns '—' for non-numeric string\", () => {\r\n expect(fmtMoney(\"abc\")).toBe(\"—\");\r\n });\r\n\r\n test(\"coerces numeric strings to numbers\", () => {\r\n // \"1234.5\" should format identically to 1234.5\r\n expect(fmtMoney(\"1234.5\")).toBe(fmtMoney(1234.5));\r\n });\r\n });\r\n\r\n describe(\"locale-aware formatting\", () => {\r\n test(\"formats with the default fr-FR locale\", () => {\r\n const out = fmtMoney(1234.5);\r\n // FR uses comma as decimal separator. Thousand separator is a\r\n // non-breaking space (U+00A0) or narrow non-breaking space\r\n // (U+202F) depending on the runtime — accept either.\r\n expect(out).toMatch(/1[\\u00A0\\u202F\\s]234,5/);\r\n });\r\n\r\n test(\"formats under en-US when explicitly passed\", () => {\r\n const out = fmtMoney(1234.5, \"USD\", { locale: \"en-US\" });\r\n expect(out).toContain(\"1,234.5\");\r\n expect(out).toContain(\"USD\");\r\n });\r\n\r\n test(\"respects minimumFractionDigits\", () => {\r\n const out = fmtMoney(1234, \"EUR\", { minimumFractionDigits: 2 });\r\n // Default fr-FR locale; 2 fraction digits → trailing \",00\"\r\n expect(out).toMatch(/1[\\u00A0\\u202F\\s]234,00/);\r\n });\r\n\r\n test(\"respects maximumFractionDigits\", () => {\r\n const out = fmtMoney(1.23456, \"\", { maximumFractionDigits: 2 });\r\n // Should round to 2 fraction digits in fr-FR (\",23\")\r\n expect(out).toMatch(/1,23\\b/);\r\n });\r\n\r\n test(\"appends the currency suffix when supplied\", () => {\r\n expect(fmtMoney(100, \"EUR\")).toContain(\"EUR\");\r\n expect(fmtMoney(100, \"MAD\")).toContain(\"MAD\");\r\n expect(fmtMoney(100, \"USD\")).toContain(\"USD\");\r\n });\r\n\r\n test(\"omits the currency suffix when blank\", () => {\r\n const out = fmtMoney(100, \"\");\r\n expect(out).not.toMatch(/[A-Z]{3}/);\r\n });\r\n });\r\n\r\n describe(\"locale fallback (the regression-class guard)\", () => {\r\n test(\"does not throw on an invalid BCP-47 tag\", () => {\r\n expect(() =>\r\n fmtMoney(100, \"EUR\", { locale: \"not-a-real-locale\" })\r\n ).not.toThrow();\r\n });\r\n\r\n test(\"falls back to fr-FR formatting on invalid locale\", () => {\r\n const out = fmtMoney(1234.5, \"EUR\", { locale: \"not-a-real-locale\" });\r\n // Should produce the FR comma-decimal form, not crash and\r\n // not return undefined.\r\n expect(out).toMatch(/1[\\u00A0\\u202F\\s]234,5/);\r\n expect(out).toContain(\"EUR\");\r\n });\r\n\r\n test(\"does not throw on garbage object (defensive)\", () => {\r\n // fmtMoney's opts.locale is typed `string | undefined`, but real hosts\r\n // occasionally pass a wrong runtime value. The @ts-expect-error documents\r\n // that this input is intentionally ill-typed and asserts the runtime\r\n // guard (catch → fr-FR fallback) handles any value, not just RangeError.\r\n expect(() =>\r\n // @ts-expect-error — intentional invalid locale type (runtime robustness)\r\n fmtMoney(100, \"EUR\", { locale: 12345 })\r\n ).not.toThrow();\r\n });\r\n });\r\n});\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"locale-fallback.test.js","names":["_fmtMoney","_interopRequireDefault","require","e","__esModule","default","describe","test","expect","fmtMoney","toBe","undefined","NaN","Infinity","out","toMatch","locale","toContain","minimumFractionDigits","maximumFractionDigits","not","toThrow"],"sources":["../../../src/lib/v2/__tests__/locale-fallback.test.ts"],"sourcesContent":["import fmtMoney from \"../utils/fmtMoney\";\r\n\r\n/**\r\n * Contract tests for fmtMoney — the canonical v2 money formatter.\r\n *\r\n * The graceful-display contract (returns \"—\" for bad input, never\r\n * throws on bad locale) underpins TradeDirect dashboard cells.\r\n * Removing it would let a malformed amount or a typo'd locale crash\r\n * an entire row of a DataGrid.\r\n */\r\ndescribe(\"fmtMoney — contract\", () => {\r\n describe(\"graceful empty-cell fallback\", () => {\r\n test(\"returns '—' for null\", () => {\r\n expect(fmtMoney(null)).toBe(\"—\");\r\n });\r\n\r\n test(\"returns '—' for undefined\", () => {\r\n expect(fmtMoney(undefined)).toBe(\"—\");\r\n });\r\n\r\n test(\"returns '—' for empty string\", () => {\r\n expect(fmtMoney(\"\")).toBe(\"—\");\r\n });\r\n\r\n test(\"returns '—' for NaN\", () => {\r\n expect(fmtMoney(NaN)).toBe(\"—\");\r\n });\r\n\r\n test(\"returns '—' for Infinity\", () => {\r\n expect(fmtMoney(Infinity)).toBe(\"—\");\r\n expect(fmtMoney(-Infinity)).toBe(\"—\");\r\n });\r\n\r\n test(\"returns '—' for non-numeric string\", () => {\r\n expect(fmtMoney(\"abc\")).toBe(\"—\");\r\n });\r\n\r\n test(\"coerces numeric strings to numbers\", () => {\r\n // \"1234.5\" should format identically to 1234.5\r\n expect(fmtMoney(\"1234.5\")).toBe(fmtMoney(1234.5));\r\n });\r\n });\r\n\r\n describe(\"locale-aware formatting\", () => {\r\n test(\"formats with the default fr-FR locale\", () => {\r\n const out = fmtMoney(1234.5);\r\n // FR uses comma as decimal separator. Thousand separator is a\r\n // non-breaking space (U+00A0) or narrow non-breaking space\r\n // (U+202F) depending on the runtime — accept either.\r\n expect(out).toMatch(/1[\\u00A0\\u202F\\s]234,5/);\r\n });\r\n\r\n test(\"formats under en-US when explicitly passed\", () => {\r\n const out = fmtMoney(1234.5, \"USD\", { locale: \"en-US\" });\r\n expect(out).toContain(\"1,234.5\");\r\n expect(out).toContain(\"USD\");\r\n });\r\n\r\n test(\"respects minimumFractionDigits\", () => {\r\n const out = fmtMoney(1234, \"EUR\", { minimumFractionDigits: 2 });\r\n // Default fr-FR locale; 2 fraction digits → trailing \",00\"\r\n expect(out).toMatch(/1[\\u00A0\\u202F\\s]234,00/);\r\n });\r\n\r\n test(\"respects maximumFractionDigits\", () => {\r\n const out = fmtMoney(1.23456, \"\", { maximumFractionDigits: 2 });\r\n // Should round to 2 fraction digits in fr-FR (\",23\")\r\n expect(out).toMatch(/1,23\\b/);\r\n });\r\n\r\n test(\"appends the currency suffix when supplied\", () => {\r\n expect(fmtMoney(100, \"EUR\")).toContain(\"EUR\");\r\n expect(fmtMoney(100, \"MAD\")).toContain(\"MAD\");\r\n expect(fmtMoney(100, \"USD\")).toContain(\"USD\");\r\n });\r\n\r\n test(\"omits the currency suffix when blank\", () => {\r\n const out = fmtMoney(100, \"\");\r\n expect(out).not.toMatch(/[A-Z]{3}/);\r\n });\r\n });\r\n\r\n describe(\"locale fallback (the regression-class guard)\", () => {\r\n test(\"does not throw on an invalid BCP-47 tag\", () => {\r\n expect(() =>\r\n fmtMoney(100, \"EUR\", { locale: \"not-a-real-locale\" })\r\n ).not.toThrow();\r\n });\r\n\r\n test(\"falls back to fr-FR formatting on invalid locale\", () => {\r\n const out = fmtMoney(1234.5, \"EUR\", { locale: \"not-a-real-locale\" });\r\n // Should produce the FR comma-decimal form, not crash and\r\n // not return undefined.\r\n expect(out).toMatch(/1[\\u00A0\\u202F\\s]234,5/);\r\n expect(out).toContain(\"EUR\");\r\n });\r\n\r\n test(\"does not throw on garbage object (defensive)\", () => {\r\n // fmtMoney's opts.locale is typed `string | undefined`, but real hosts\r\n // occasionally pass a wrong runtime value. The @ts-expect-error documents\r\n // that this input is intentionally ill-typed and asserts the runtime\r\n // guard (catch → fr-FR fallback) handles any value, not just RangeError.\r\n expect(() =>\r\n // @ts-expect-error — intentional invalid locale type (runtime robustness)\r\n fmtMoney(100, \"EUR\", { locale: 12345 })\r\n ).not.toThrow();\r\n });\r\n });\r\n});\r\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+
3
+ var _reviveSavedCriteria = require("../personalization/capabilities/reviveSavedCriteria");
4
+ /* ── What this file protects ────────────────────────────────────────────────
5
+ *
6
+ * The saved-filters round trip is asymmetrical: the local-storage adapter
7
+ * writes with `JSON.stringify` (a `Date` becomes an ISO string) and reads with
8
+ * a bare `JSON.parse`. Hosts could not see the consequence, because assigning
9
+ * the parsed payload into typed form state requires an assertion — which
10
+ * silences the very error that would have revealed it.
11
+ *
12
+ * So the assertions below stand in for a type error the compiler cannot raise
13
+ * on the host side. */
14
+
15
+ /** Declared with `interface` DELIBERATELY — see the type-level test at the end. */
16
+
17
+ const EMPTY = {
18
+ reference: "",
19
+ dateFrom: null,
20
+ dateTo: null,
21
+ importateur: null
22
+ };
23
+ describe("reviveSavedCriteria", () => {
24
+ it("returns the defaults when there is no payload", () => {
25
+ expect((0, _reviveSavedCriteria.reviveSavedCriteria)(EMPTY, null)).toBe(EMPTY);
26
+ expect((0, _reviveSavedCriteria.reviveSavedCriteria)(EMPTY, undefined)).toBe(EMPTY);
27
+ });
28
+
29
+ /* THE DEFECT THIS EXISTS FOR. */
30
+ it("turns an ISO string back into a Date", () => {
31
+ const saved = JSON.parse(JSON.stringify({
32
+ ...EMPTY,
33
+ dateFrom: new Date("2026-03-05T00:00:00Z")
34
+ }));
35
+
36
+ // Precondition: the payload really did lose the Date on the way in.
37
+ expect(typeof saved["dateFrom"]).toBe("string");
38
+ const revived = (0, _reviveSavedCriteria.reviveSavedCriteria)(EMPTY, saved);
39
+ expect(revived.dateFrom).toBeInstanceOf(Date);
40
+ expect(revived.dateFrom.toISOString()).toBe("2026-03-05T00:00:00.000Z");
41
+ });
42
+ it("round-trips a full form through stringify / parse", () => {
43
+ const original = {
44
+ reference: "2026-IM-0042",
45
+ dateFrom: new Date("2026-01-01T00:00:00.000Z"),
46
+ dateTo: new Date("2026-12-31T23:59:59.000Z"),
47
+ importateur: {
48
+ id: 7,
49
+ description: "SOFRANE SA"
50
+ }
51
+ };
52
+ const revived = (0, _reviveSavedCriteria.reviveSavedCriteria)(EMPTY, JSON.parse(JSON.stringify(original)));
53
+ expect(revived).toEqual(original);
54
+ });
55
+
56
+ /* The regex is strict for this reason: DAAC references, customs codes and
57
+ * nomenclatures are date-ish strings that must NOT become dates. */
58
+ it("leaves business strings alone", () => {
59
+ const revived = (0, _reviveSavedCriteria.reviveSavedCriteria)(EMPTY, {
60
+ reference: "2026-IM-0042"
61
+ });
62
+ expect(revived.reference).toBe("2026-IM-0042");
63
+ });
64
+ it("does not revive a bare date without a time part", () => {
65
+ const revived = (0, _reviveSavedCriteria.reviveSavedCriteria)({
66
+ ...EMPTY,
67
+ reference: ""
68
+ }, {
69
+ reference: "2026-03-05"
70
+ });
71
+ expect(revived.reference).toBe("2026-03-05");
72
+ });
73
+
74
+ /* ISO-SHAPED but impossible: the shape passes the regex, the value does not
75
+ * exist. `null` is returned rather than an Invalid Date, because an absent
76
+ * date is recoverable by the user and a NaN date silently poisons a payload. */
77
+ it("yields null for an ISO-shaped impossible instant", () => {
78
+ const revived = (0, _reviveSavedCriteria.reviveSavedCriteria)(EMPTY, {
79
+ dateFrom: "2026-13-45T00:00:00Z"
80
+ });
81
+ expect(revived.dateFrom).toBeNull();
82
+ });
83
+ it("ignores keys the form no longer declares", () => {
84
+ const revived = (0, _reviveSavedCriteria.reviveSavedCriteria)(EMPTY, {
85
+ reference: "X",
86
+ champRetireEnV2: "valeur héritée"
87
+ });
88
+ expect(revived.reference).toBe("X");
89
+ expect(Object.keys(revived).sort()).toEqual(Object.keys(EMPTY).sort());
90
+ });
91
+ it("keeps the default when a key is absent", () => {
92
+ const revived = (0, _reviveSavedCriteria.reviveSavedCriteria)({
93
+ ...EMPTY,
94
+ reference: "défaut"
95
+ }, {
96
+ dateFrom: null
97
+ });
98
+ expect(revived.reference).toBe("défaut");
99
+ });
100
+
101
+ /* Under `exactOptionalPropertyTypes` a present key holding `undefined` is
102
+ * not an absent key, so it must not win over the default. */
103
+ it("does not let an explicit undefined overwrite a default", () => {
104
+ const revived = (0, _reviveSavedCriteria.reviveSavedCriteria)({
105
+ ...EMPTY,
106
+ reference: "défaut"
107
+ }, {
108
+ reference: undefined
109
+ });
110
+ expect(revived.reference).toBe("défaut");
111
+ });
112
+ it("passes referentiel objects through untouched", () => {
113
+ const importateur = {
114
+ id: 7,
115
+ description: "SOFRANE SA"
116
+ };
117
+ const revived = (0, _reviveSavedCriteria.reviveSavedCriteria)(EMPTY, {
118
+ importateur
119
+ });
120
+ expect(revived.importateur).toEqual(importateur);
121
+ });
122
+ it("does not mutate the defaults it is given", () => {
123
+ const defaults = {
124
+ ...EMPTY
125
+ };
126
+ (0, _reviveSavedCriteria.reviveSavedCriteria)(defaults, {
127
+ reference: "X"
128
+ });
129
+ expect(defaults.reference).toBe("");
130
+ });
131
+
132
+ /* TYPE-LEVEL — the reason the constraint is `Record<keyof T, unknown>` and
133
+ * not `Record<string, unknown>`. `ListFilters` is an INTERFACE, which has no
134
+ * implicit index signature: under the looser constraint this file would not
135
+ * compile, and the host would be pushed back into an assertion. The
136
+ * assignment below is the assertion-free call site the constraint buys. */
137
+ it("preserves the caller's type for interface-declared forms", () => {
138
+ const typed = (0, _reviveSavedCriteria.reviveSavedCriteria)(EMPTY, {
139
+ reference: "X"
140
+ });
141
+ expect(typed.reference).toBe("X");
142
+ });
143
+ });
144
+ //# sourceMappingURL=reviveSavedCriteria.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reviveSavedCriteria.test.js","names":["_reviveSavedCriteria","require","EMPTY","reference","dateFrom","dateTo","importateur","describe","it","expect","reviveSavedCriteria","toBe","undefined","saved","JSON","parse","stringify","Date","revived","toBeInstanceOf","toISOString","original","id","description","toEqual","toBeNull","champRetireEnV2","Object","keys","sort","defaults","typed"],"sources":["../../../src/lib/v2/__tests__/reviveSavedCriteria.test.ts"],"sourcesContent":["import { reviveSavedCriteria } from \"../personalization/capabilities/reviveSavedCriteria\";\r\n\r\n/* ── What this file protects ────────────────────────────────────────────────\r\n *\r\n * The saved-filters round trip is asymmetrical: the local-storage adapter\r\n * writes with `JSON.stringify` (a `Date` becomes an ISO string) and reads with\r\n * a bare `JSON.parse`. Hosts could not see the consequence, because assigning\r\n * the parsed payload into typed form state requires an assertion — which\r\n * silences the very error that would have revealed it.\r\n *\r\n * So the assertions below stand in for a type error the compiler cannot raise\r\n * on the host side. */\r\n\r\n/** Declared with `interface` DELIBERATELY — see the type-level test at the end. */\r\ninterface ListFilters {\r\n reference: string;\r\n dateFrom: Date | null;\r\n dateTo: Date | null;\r\n importateur: { id?: number; description?: string } | null;\r\n}\r\n\r\nconst EMPTY: ListFilters = {\r\n reference: \"\",\r\n dateFrom: null,\r\n dateTo: null,\r\n importateur: null,\r\n};\r\n\r\ndescribe(\"reviveSavedCriteria\", () => {\r\n it(\"returns the defaults when there is no payload\", () => {\r\n expect(reviveSavedCriteria(EMPTY, null)).toBe(EMPTY);\r\n expect(reviveSavedCriteria(EMPTY, undefined)).toBe(EMPTY);\r\n });\r\n\r\n /* THE DEFECT THIS EXISTS FOR. */\r\n it(\"turns an ISO string back into a Date\", () => {\r\n const saved = JSON.parse(\r\n JSON.stringify({ ...EMPTY, dateFrom: new Date(\"2026-03-05T00:00:00Z\") })\r\n ) as Record<string, unknown>;\r\n\r\n // Precondition: the payload really did lose the Date on the way in.\r\n expect(typeof saved[\"dateFrom\"]).toBe(\"string\");\r\n\r\n const revived = reviveSavedCriteria(EMPTY, saved);\r\n\r\n expect(revived.dateFrom).toBeInstanceOf(Date);\r\n expect((revived.dateFrom as Date).toISOString()).toBe(\r\n \"2026-03-05T00:00:00.000Z\"\r\n );\r\n });\r\n\r\n it(\"round-trips a full form through stringify / parse\", () => {\r\n const original: ListFilters = {\r\n reference: \"2026-IM-0042\",\r\n dateFrom: new Date(\"2026-01-01T00:00:00.000Z\"),\r\n dateTo: new Date(\"2026-12-31T23:59:59.000Z\"),\r\n importateur: { id: 7, description: \"SOFRANE SA\" },\r\n };\r\n\r\n const revived = reviveSavedCriteria(\r\n EMPTY,\r\n JSON.parse(JSON.stringify(original)) as Record<string, unknown>\r\n );\r\n\r\n expect(revived).toEqual(original);\r\n });\r\n\r\n /* The regex is strict for this reason: DAAC references, customs codes and\r\n * nomenclatures are date-ish strings that must NOT become dates. */\r\n it(\"leaves business strings alone\", () => {\r\n const revived = reviveSavedCriteria(EMPTY, {\r\n reference: \"2026-IM-0042\",\r\n });\r\n expect(revived.reference).toBe(\"2026-IM-0042\");\r\n });\r\n\r\n it(\"does not revive a bare date without a time part\", () => {\r\n const revived = reviveSavedCriteria(\r\n { ...EMPTY, reference: \"\" },\r\n { reference: \"2026-03-05\" }\r\n );\r\n expect(revived.reference).toBe(\"2026-03-05\");\r\n });\r\n\r\n /* ISO-SHAPED but impossible: the shape passes the regex, the value does not\r\n * exist. `null` is returned rather than an Invalid Date, because an absent\r\n * date is recoverable by the user and a NaN date silently poisons a payload. */\r\n it(\"yields null for an ISO-shaped impossible instant\", () => {\r\n const revived = reviveSavedCriteria(EMPTY, {\r\n dateFrom: \"2026-13-45T00:00:00Z\",\r\n });\r\n expect(revived.dateFrom).toBeNull();\r\n });\r\n\r\n it(\"ignores keys the form no longer declares\", () => {\r\n const revived = reviveSavedCriteria(EMPTY, {\r\n reference: \"X\",\r\n champRetireEnV2: \"valeur héritée\",\r\n });\r\n\r\n expect(revived.reference).toBe(\"X\");\r\n expect(Object.keys(revived).sort()).toEqual(Object.keys(EMPTY).sort());\r\n });\r\n\r\n it(\"keeps the default when a key is absent\", () => {\r\n const revived = reviveSavedCriteria(\r\n { ...EMPTY, reference: \"défaut\" },\r\n { dateFrom: null }\r\n );\r\n expect(revived.reference).toBe(\"défaut\");\r\n });\r\n\r\n /* Under `exactOptionalPropertyTypes` a present key holding `undefined` is\r\n * not an absent key, so it must not win over the default. */\r\n it(\"does not let an explicit undefined overwrite a default\", () => {\r\n const revived = reviveSavedCriteria(\r\n { ...EMPTY, reference: \"défaut\" },\r\n { reference: undefined }\r\n );\r\n expect(revived.reference).toBe(\"défaut\");\r\n });\r\n\r\n it(\"passes referentiel objects through untouched\", () => {\r\n const importateur = { id: 7, description: \"SOFRANE SA\" };\r\n const revived = reviveSavedCriteria(EMPTY, { importateur });\r\n expect(revived.importateur).toEqual(importateur);\r\n });\r\n\r\n it(\"does not mutate the defaults it is given\", () => {\r\n const defaults: ListFilters = { ...EMPTY };\r\n reviveSavedCriteria(defaults, { reference: \"X\" });\r\n expect(defaults.reference).toBe(\"\");\r\n });\r\n\r\n /* TYPE-LEVEL — the reason the constraint is `Record<keyof T, unknown>` and\r\n * not `Record<string, unknown>`. `ListFilters` is an INTERFACE, which has no\r\n * implicit index signature: under the looser constraint this file would not\r\n * compile, and the host would be pushed back into an assertion. The\r\n * assignment below is the assertion-free call site the constraint buys. */\r\n it(\"preserves the caller's type for interface-declared forms\", () => {\r\n const typed: ListFilters = reviveSavedCriteria(EMPTY, { reference: \"X\" });\r\n expect(typed.reference).toBe(\"X\");\r\n });\r\n});\r\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,186 @@
1
+ "use strict";
2
+
3
+ require("@testing-library/jest-dom");
4
+ var _react = require("@testing-library/react");
5
+ var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
6
+ var _rowActions = require("../patterns/rowActions");
7
+ var _jsxRuntime = require("react/jsx-runtime");
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
+ /**
10
+ * @jest-environment jsdom
11
+ */
12
+
13
+ /**
14
+ * rowActions (G-41) — promoted from `refonte-frontend` (Area 5).
15
+ *
16
+ * Each assertion pins a Charter rule the descriptor layer carries, or a defect
17
+ * the promoted implementation had been written to prevent. The per-row
18
+ * evaluation of the predicates is the load-bearing part: a boolean would force
19
+ * the host to rebuild the array per row, which is how a table row and a mobile
20
+ * card end up offering different actions for the same record.
21
+ */
22
+
23
+ const BROUILLON = {
24
+ id: 1,
25
+ status: "DRAFT"
26
+ };
27
+ const SOUMIS = {
28
+ id: 2,
29
+ status: "SOUMIS"
30
+ };
31
+ describe("buildRowActionMenu", () => {
32
+ test("hidden is evaluated PER ROW, not once for the array", () => {
33
+ const descriptors = [{
34
+ id: "open",
35
+ label: "Consulter",
36
+ onClick: jest.fn()
37
+ }, {
38
+ id: "del",
39
+ label: "Supprimer",
40
+ onClick: jest.fn(),
41
+ hidden: row => row.status !== "DRAFT"
42
+ }];
43
+ expect((0, _rowActions.buildRowActionMenu)(descriptors, BROUILLON)).toHaveLength(2);
44
+ expect((0, _rowActions.buildRowActionMenu)(descriptors, SOUMIS)).toHaveLength(1);
45
+ });
46
+ test("disabled is evaluated per row too, and keeps the item visible", () => {
47
+ const items = (0, _rowActions.buildRowActionMenu)([{
48
+ id: "edit",
49
+ label: "Modifier",
50
+ onClick: jest.fn(),
51
+ disabled: row => row.status !== "DRAFT"
52
+ }], SOUMIS);
53
+ expect(items).toHaveLength(1);
54
+ expect(items[0]?.disabled).toBe(true);
55
+ });
56
+
57
+ /** R-B.6 — a destructive action is separated and marked, not merely last. */
58
+ test("a divider precedes the first destructive action", () => {
59
+ const items = (0, _rowActions.buildRowActionMenu)([{
60
+ id: "open",
61
+ label: "Consulter",
62
+ onClick: jest.fn()
63
+ }, {
64
+ id: "del",
65
+ label: "Supprimer",
66
+ onClick: jest.fn(),
67
+ danger: true
68
+ }, {
69
+ id: "purge",
70
+ label: "Purger",
71
+ onClick: jest.fn(),
72
+ danger: true
73
+ }], BROUILLON);
74
+ expect(items.map(i => Boolean(i.divider))).toEqual([false, true, false, false]);
75
+ });
76
+
77
+ /**
78
+ * A menu does not open on a rule. The separator only appears if something
79
+ * precedes it — a row whose ONLY action is destructive gets no divider.
80
+ */
81
+ test("no leading divider when the destructive action comes first", () => {
82
+ const items = (0, _rowActions.buildRowActionMenu)([{
83
+ id: "del",
84
+ label: "Supprimer",
85
+ onClick: jest.fn(),
86
+ danger: true
87
+ }], BROUILLON);
88
+ expect(items).toHaveLength(1);
89
+ expect(items[0]?.divider).toBeUndefined();
90
+ });
91
+ test("nothing visible yields an empty list, so a caller can skip the trigger", () => {
92
+ expect((0, _rowActions.buildRowActionMenu)([{
93
+ id: "del",
94
+ label: "Supprimer",
95
+ onClick: jest.fn(),
96
+ hidden: () => true
97
+ }], BROUILLON)).toEqual([]);
98
+ });
99
+ test("onClick is bound to the row it was built for", () => {
100
+ const onClick = jest.fn();
101
+ const items = (0, _rowActions.buildRowActionMenu)([{
102
+ id: "open",
103
+ label: "Consulter",
104
+ onClick
105
+ }], SOUMIS);
106
+ items[0]?.onClick?.();
107
+ expect(onClick).toHaveBeenCalledWith(SOUMIS);
108
+ });
109
+
110
+ /**
111
+ * R-3.3 caps what one screen may offer at once, and `OverflowMenu`'s own
112
+ * contract recommends ≤ 7 items. Exceeding it is a host decision, so it warns
113
+ * in development rather than truncating — silently dropping an action would
114
+ * hide a business capability.
115
+ */
116
+ test(`warns past ${_rowActions.MAX_ROW_ACTIONS} visible actions, without dropping any`, () => {
117
+ const warn = jest.spyOn(console, "warn").mockImplementation(() => undefined);
118
+ const descriptors = Array.from({
119
+ length: _rowActions.MAX_ROW_ACTIONS + 1
120
+ }, (_, i) => ({
121
+ id: `a${i}`,
122
+ label: `Action ${i}`,
123
+ onClick: jest.fn()
124
+ }));
125
+ const items = (0, _rowActions.buildRowActionMenu)(descriptors, BROUILLON);
126
+ expect(items).toHaveLength(_rowActions.MAX_ROW_ACTIONS + 1);
127
+ expect(warn).toHaveBeenCalled();
128
+ warn.mockRestore();
129
+ });
130
+ });
131
+ describe("buildRowActions", () => {
132
+ /**
133
+ * R-K.1 — the reason this layer exists. The implementation it replaced
134
+ * revealed its actions on hover, with a `mouseup` listener on `document` and
135
+ * no keyboard equivalent: consulting or deleting a record was unreachable
136
+ * without a mouse. `OverflowMenu` is an ARIA menu, so the trigger is a
137
+ * button and the items are reachable by keyboard.
138
+ */
139
+ test("renders a keyboard-reachable trigger, named by the caller", async () => {
140
+ const onClick = jest.fn();
141
+ const render$ = (0, _rowActions.buildRowActions)([{
142
+ id: "open",
143
+ label: "Consulter le dossier",
144
+ onClick
145
+ }], "Actions sur le dossier");
146
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
147
+ children: render$(SOUMIS)
148
+ }));
149
+ const trigger = _react.screen.getByRole("button", {
150
+ name: "Actions sur le dossier"
151
+ });
152
+ await _userEvent.default.click(trigger);
153
+ await _userEvent.default.click(_react.screen.getByRole("menuitem", {
154
+ name: "Consulter le dossier"
155
+ }));
156
+ expect(onClick).toHaveBeenCalledWith(SOUMIS);
157
+ });
158
+ test("renders nothing when no action applies to the row", () => {
159
+ const render$ = (0, _rowActions.buildRowActions)([{
160
+ id: "del",
161
+ label: "Supprimer",
162
+ onClick: jest.fn(),
163
+ hidden: () => true
164
+ }]);
165
+ const {
166
+ container
167
+ } = (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
168
+ children: render$(BROUILLON)
169
+ }));
170
+ expect(container).toBeEmptyDOMElement();
171
+ });
172
+ test("the default trigger name is generic, so hosts localise it per resource", () => {
173
+ const render$ = (0, _rowActions.buildRowActions)([{
174
+ id: "open",
175
+ label: "Consulter",
176
+ onClick: jest.fn()
177
+ }]);
178
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
179
+ children: render$(SOUMIS)
180
+ }));
181
+ expect(_react.screen.getByRole("button", {
182
+ name: "Actions"
183
+ })).toBeInTheDocument();
184
+ });
185
+ });
186
+ //# sourceMappingURL=rowActions.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rowActions.test.js","names":["require","_react","_userEvent","_interopRequireDefault","_rowActions","_jsxRuntime","e","__esModule","default","BROUILLON","id","status","SOUMIS","describe","test","descriptors","label","onClick","jest","fn","hidden","row","expect","buildRowActionMenu","toHaveLength","items","disabled","toBe","danger","map","i","Boolean","divider","toEqual","toBeUndefined","toHaveBeenCalledWith","MAX_ROW_ACTIONS","warn","spyOn","console","mockImplementation","undefined","Array","from","length","_","toHaveBeenCalled","mockRestore","render$","buildRowActions","render","jsx","Fragment","children","trigger","screen","getByRole","name","userEvent","click","container","toBeEmptyDOMElement","toBeInTheDocument"],"sources":["../../../src/lib/v2/__tests__/rowActions.test.tsx"],"sourcesContent":["/**\r\n * @jest-environment jsdom\r\n */\r\nimport \"@testing-library/jest-dom\";\r\nimport { render, screen } from \"@testing-library/react\";\r\nimport userEvent from \"@testing-library/user-event\";\r\nimport {\r\n buildRowActions,\r\n buildRowActionMenu,\r\n MAX_ROW_ACTIONS,\r\n} from \"../patterns/rowActions\";\r\nimport type { RowActionDescriptor } from \"../patterns/rowActions\";\r\n\r\n/**\r\n * rowActions (G-41) — promoted from `refonte-frontend` (Area 5).\r\n *\r\n * Each assertion pins a Charter rule the descriptor layer carries, or a defect\r\n * the promoted implementation had been written to prevent. The per-row\r\n * evaluation of the predicates is the load-bearing part: a boolean would force\r\n * the host to rebuild the array per row, which is how a table row and a mobile\r\n * card end up offering different actions for the same record.\r\n */\r\n\r\ninterface Dossier {\r\n id: number;\r\n status: string;\r\n}\r\n\r\nconst BROUILLON: Dossier = { id: 1, status: \"DRAFT\" };\r\nconst SOUMIS: Dossier = { id: 2, status: \"SOUMIS\" };\r\n\r\ndescribe(\"buildRowActionMenu\", () => {\r\n test(\"hidden is evaluated PER ROW, not once for the array\", () => {\r\n const descriptors: RowActionDescriptor<Dossier>[] = [\r\n { id: \"open\", label: \"Consulter\", onClick: jest.fn() },\r\n {\r\n id: \"del\",\r\n label: \"Supprimer\",\r\n onClick: jest.fn(),\r\n hidden: (row) => row.status !== \"DRAFT\",\r\n },\r\n ];\r\n\r\n expect(buildRowActionMenu(descriptors, BROUILLON)).toHaveLength(2);\r\n expect(buildRowActionMenu(descriptors, SOUMIS)).toHaveLength(1);\r\n });\r\n\r\n test(\"disabled is evaluated per row too, and keeps the item visible\", () => {\r\n const items = buildRowActionMenu<Dossier>(\r\n [\r\n {\r\n id: \"edit\",\r\n label: \"Modifier\",\r\n onClick: jest.fn(),\r\n disabled: (row) => row.status !== \"DRAFT\",\r\n },\r\n ],\r\n SOUMIS\r\n );\r\n expect(items).toHaveLength(1);\r\n expect(items[0]?.disabled).toBe(true);\r\n });\r\n\r\n /** R-B.6 — a destructive action is separated and marked, not merely last. */\r\n test(\"a divider precedes the first destructive action\", () => {\r\n const items = buildRowActionMenu<Dossier>(\r\n [\r\n { id: \"open\", label: \"Consulter\", onClick: jest.fn() },\r\n { id: \"del\", label: \"Supprimer\", onClick: jest.fn(), danger: true },\r\n { id: \"purge\", label: \"Purger\", onClick: jest.fn(), danger: true },\r\n ],\r\n BROUILLON\r\n );\r\n expect(items.map((i) => Boolean(i.divider))).toEqual([false, true, false, false]);\r\n });\r\n\r\n /**\r\n * A menu does not open on a rule. The separator only appears if something\r\n * precedes it — a row whose ONLY action is destructive gets no divider.\r\n */\r\n test(\"no leading divider when the destructive action comes first\", () => {\r\n const items = buildRowActionMenu<Dossier>(\r\n [{ id: \"del\", label: \"Supprimer\", onClick: jest.fn(), danger: true }],\r\n BROUILLON\r\n );\r\n expect(items).toHaveLength(1);\r\n expect(items[0]?.divider).toBeUndefined();\r\n });\r\n\r\n test(\"nothing visible yields an empty list, so a caller can skip the trigger\", () => {\r\n expect(\r\n buildRowActionMenu<Dossier>(\r\n [{ id: \"del\", label: \"Supprimer\", onClick: jest.fn(), hidden: () => true }],\r\n BROUILLON\r\n )\r\n ).toEqual([]);\r\n });\r\n\r\n test(\"onClick is bound to the row it was built for\", () => {\r\n const onClick = jest.fn();\r\n const items = buildRowActionMenu<Dossier>(\r\n [{ id: \"open\", label: \"Consulter\", onClick }],\r\n SOUMIS\r\n );\r\n items[0]?.onClick?.();\r\n expect(onClick).toHaveBeenCalledWith(SOUMIS);\r\n });\r\n\r\n /**\r\n * R-3.3 caps what one screen may offer at once, and `OverflowMenu`'s own\r\n * contract recommends ≤ 7 items. Exceeding it is a host decision, so it warns\r\n * in development rather than truncating — silently dropping an action would\r\n * hide a business capability.\r\n */\r\n test(`warns past ${MAX_ROW_ACTIONS} visible actions, without dropping any`, () => {\r\n const warn = jest.spyOn(console, \"warn\").mockImplementation(() => undefined);\r\n const descriptors: RowActionDescriptor<Dossier>[] = Array.from(\r\n { length: MAX_ROW_ACTIONS + 1 },\r\n (_, i) => ({ id: `a${i}`, label: `Action ${i}`, onClick: jest.fn() })\r\n );\r\n\r\n const items = buildRowActionMenu(descriptors, BROUILLON);\r\n\r\n expect(items).toHaveLength(MAX_ROW_ACTIONS + 1);\r\n expect(warn).toHaveBeenCalled();\r\n warn.mockRestore();\r\n });\r\n});\r\n\r\ndescribe(\"buildRowActions\", () => {\r\n /**\r\n * R-K.1 — the reason this layer exists. The implementation it replaced\r\n * revealed its actions on hover, with a `mouseup` listener on `document` and\r\n * no keyboard equivalent: consulting or deleting a record was unreachable\r\n * without a mouse. `OverflowMenu` is an ARIA menu, so the trigger is a\r\n * button and the items are reachable by keyboard.\r\n */\r\n test(\"renders a keyboard-reachable trigger, named by the caller\", async () => {\r\n const onClick = jest.fn();\r\n const render$ = buildRowActions<Dossier>(\r\n [{ id: \"open\", label: \"Consulter le dossier\", onClick }],\r\n \"Actions sur le dossier\"\r\n );\r\n\r\n render(<>{render$(SOUMIS)}</>);\r\n\r\n const trigger = screen.getByRole(\"button\", { name: \"Actions sur le dossier\" });\r\n await userEvent.click(trigger);\r\n await userEvent.click(\r\n screen.getByRole(\"menuitem\", { name: \"Consulter le dossier\" })\r\n );\r\n\r\n expect(onClick).toHaveBeenCalledWith(SOUMIS);\r\n });\r\n\r\n test(\"renders nothing when no action applies to the row\", () => {\r\n const render$ = buildRowActions<Dossier>([\r\n { id: \"del\", label: \"Supprimer\", onClick: jest.fn(), hidden: () => true },\r\n ]);\r\n const { container } = render(<>{render$(BROUILLON)}</>);\r\n expect(container).toBeEmptyDOMElement();\r\n });\r\n\r\n test(\"the default trigger name is generic, so hosts localise it per resource\", () => {\r\n const render$ = buildRowActions<Dossier>([\r\n { id: \"open\", label: \"Consulter\", onClick: jest.fn() },\r\n ]);\r\n render(<>{render$(SOUMIS)}</>);\r\n expect(screen.getByRole(\"button\", { name: \"Actions\" })).toBeInTheDocument();\r\n });\r\n});\r\n"],"mappings":"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","ignoreList":[]}