@portnet/ui 6.0.2 → 6.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (980) hide show
  1. package/CHANGELOG.md +652 -0
  2. package/dist/esm/index.js +72 -3
  3. package/dist/esm/index.js.map +1 -1
  4. package/dist/esm/v2/__tests__/AppMain.test.js +130 -0
  5. package/dist/esm/v2/__tests__/AppMain.test.js.map +1 -0
  6. package/dist/esm/v2/__tests__/ChartFigure.test.js +180 -0
  7. package/dist/esm/v2/__tests__/ChartFigure.test.js.map +1 -0
  8. package/dist/esm/v2/__tests__/DataGridRowActionsPropagation.test.js +150 -0
  9. package/dist/esm/v2/__tests__/DataGridRowActionsPropagation.test.js.map +1 -0
  10. package/dist/esm/v2/__tests__/DrawerTactileTargets.test.js +93 -0
  11. package/dist/esm/v2/__tests__/DrawerTactileTargets.test.js.map +1 -0
  12. package/dist/esm/v2/__tests__/FieldError.test.js +71 -38
  13. package/dist/esm/v2/__tests__/FieldError.test.js.map +1 -1
  14. package/dist/esm/v2/__tests__/FieldNaming.test.js +160 -0
  15. package/dist/esm/v2/__tests__/FieldNaming.test.js.map +1 -0
  16. package/dist/esm/v2/__tests__/FieldWidth.test.js +11 -11
  17. package/dist/esm/v2/__tests__/FieldWidth.test.js.map +1 -1
  18. package/dist/esm/v2/__tests__/FileCard.test.js +18 -17
  19. package/dist/esm/v2/__tests__/FileCard.test.js.map +1 -1
  20. package/dist/esm/v2/__tests__/FormikCheckbox.test.js +87 -179
  21. package/dist/esm/v2/__tests__/FormikCheckbox.test.js.map +1 -1
  22. package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js +32 -44
  23. package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js.map +1 -1
  24. package/dist/esm/v2/__tests__/FormikDisplayWidth.test.js +101 -0
  25. package/dist/esm/v2/__tests__/FormikDisplayWidth.test.js.map +1 -0
  26. package/dist/esm/v2/__tests__/FormikRadioGroup.test.js +118 -199
  27. package/dist/esm/v2/__tests__/FormikRadioGroup.test.js.map +1 -1
  28. package/dist/esm/v2/__tests__/MobileRowCard.test.js +44 -42
  29. package/dist/esm/v2/__tests__/MobileRowCard.test.js.map +1 -1
  30. package/dist/esm/v2/__tests__/PreviewDrawer.test.js +165 -0
  31. package/dist/esm/v2/__tests__/PreviewDrawer.test.js.map +1 -0
  32. package/dist/esm/v2/__tests__/ReferentielFieldContainer.test.js +156 -0
  33. package/dist/esm/v2/__tests__/ReferentielFieldContainer.test.js.map +1 -0
  34. package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js +37 -52
  35. package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js.map +1 -1
  36. package/dist/esm/v2/__tests__/apiError.test.js +50 -69
  37. package/dist/esm/v2/__tests__/apiError.test.js.map +1 -1
  38. package/dist/esm/v2/__tests__/banned-patterns.test.js +41 -122
  39. package/dist/esm/v2/__tests__/banned-patterns.test.js.map +1 -1
  40. package/dist/esm/v2/__tests__/chart-palette.test.js +204 -0
  41. package/dist/esm/v2/__tests__/chart-palette.test.js.map +1 -0
  42. package/dist/esm/v2/__tests__/contrast-palette.test.js +42 -74
  43. package/dist/esm/v2/__tests__/contrast-palette.test.js.map +1 -1
  44. package/dist/esm/v2/__tests__/cssVariables.test.js +44 -51
  45. package/dist/esm/v2/__tests__/cssVariables.test.js.map +1 -1
  46. package/dist/esm/v2/__tests__/fileValidation.test.js +134 -0
  47. package/dist/esm/v2/__tests__/fileValidation.test.js.map +1 -0
  48. package/dist/esm/v2/__tests__/filterCriteria.test.js +321 -0
  49. package/dist/esm/v2/__tests__/filterCriteria.test.js.map +1 -0
  50. package/dist/esm/v2/__tests__/fmtDate.test.js +68 -0
  51. package/dist/esm/v2/__tests__/fmtDate.test.js.map +1 -0
  52. package/dist/esm/v2/__tests__/gap-leakage-refonte.test.js +218 -0
  53. package/dist/esm/v2/__tests__/gap-leakage-refonte.test.js.map +1 -0
  54. package/dist/esm/v2/__tests__/labels-merge.test.js +17 -21
  55. package/dist/esm/v2/__tests__/labels-merge.test.js.map +1 -1
  56. package/dist/esm/v2/__tests__/locale-fallback.test.js +35 -40
  57. package/dist/esm/v2/__tests__/locale-fallback.test.js.map +1 -1
  58. package/dist/esm/v2/__tests__/reviveSavedCriteria.test.js +143 -0
  59. package/dist/esm/v2/__tests__/reviveSavedCriteria.test.js.map +1 -0
  60. package/dist/esm/v2/__tests__/rowActions.test.js +182 -0
  61. package/dist/esm/v2/__tests__/rowActions.test.js.map +1 -0
  62. package/dist/esm/v2/__tests__/useFocusOnRouteChange.test.js +155 -0
  63. package/dist/esm/v2/__tests__/useFocusOnRouteChange.test.js.map +1 -0
  64. package/dist/esm/v2/__tests__/useFocusTrap.test.js +266 -402
  65. package/dist/esm/v2/__tests__/useFocusTrap.test.js.map +1 -1
  66. package/dist/esm/v2/__tests__/usePrefersReducedMotion.test.js +120 -0
  67. package/dist/esm/v2/__tests__/usePrefersReducedMotion.test.js.map +1 -0
  68. package/dist/esm/v2/components/Accordion.js +48 -70
  69. package/dist/esm/v2/components/Accordion.js.map +1 -1
  70. package/dist/esm/v2/components/ActionStrip.js +31 -43
  71. package/dist/esm/v2/components/ActionStrip.js.map +1 -1
  72. package/dist/esm/v2/components/Banner.js +25 -22
  73. package/dist/esm/v2/components/Banner.js.map +1 -1
  74. package/dist/esm/v2/components/Busy.js +14 -19
  75. package/dist/esm/v2/components/Busy.js.map +1 -1
  76. package/dist/esm/v2/components/Button.js +34 -45
  77. package/dist/esm/v2/components/Button.js.map +1 -1
  78. package/dist/esm/v2/components/CategoryTag.js +44 -27
  79. package/dist/esm/v2/components/CategoryTag.js.map +1 -1
  80. package/dist/esm/v2/components/Checkbox.js +32 -38
  81. package/dist/esm/v2/components/Checkbox.js.map +1 -1
  82. package/dist/esm/v2/components/Chip.js +23 -36
  83. package/dist/esm/v2/components/Chip.js.map +1 -1
  84. package/dist/esm/v2/components/Combobox.js +112 -136
  85. package/dist/esm/v2/components/Combobox.js.map +1 -1
  86. package/dist/esm/v2/components/CommandPalette.js +113 -198
  87. package/dist/esm/v2/components/CommandPalette.js.map +1 -1
  88. package/dist/esm/v2/components/ConfirmDialog.js +36 -45
  89. package/dist/esm/v2/components/ConfirmDialog.js.map +1 -1
  90. package/dist/esm/v2/components/DatePicker.js +78 -81
  91. package/dist/esm/v2/components/DatePicker.js.map +1 -1
  92. package/dist/esm/v2/components/DateRangePicker.js +63 -74
  93. package/dist/esm/v2/components/DateRangePicker.js.map +1 -1
  94. package/dist/esm/v2/components/DateTimePicker.js +81 -86
  95. package/dist/esm/v2/components/DateTimePicker.js.map +1 -1
  96. package/dist/esm/v2/components/Drawer.js +71 -65
  97. package/dist/esm/v2/components/Drawer.js.map +1 -1
  98. package/dist/esm/v2/components/Dropzone.js +130 -177
  99. package/dist/esm/v2/components/Dropzone.js.map +1 -1
  100. package/dist/esm/v2/components/EmptyState.js +9 -9
  101. package/dist/esm/v2/components/EmptyState.js.map +1 -1
  102. package/dist/esm/v2/components/FavoriteToggle.js +24 -33
  103. package/dist/esm/v2/components/FavoriteToggle.js.map +1 -1
  104. package/dist/esm/v2/components/Field.js +155 -59
  105. package/dist/esm/v2/components/Field.js.map +1 -1
  106. package/dist/esm/v2/components/FieldError.js +9 -13
  107. package/dist/esm/v2/components/FieldError.js.map +1 -1
  108. package/dist/esm/v2/components/FieldHelp.js +28 -49
  109. package/dist/esm/v2/components/FieldHelp.js.map +1 -1
  110. package/dist/esm/v2/components/FileCard.js +14 -19
  111. package/dist/esm/v2/components/FileCard.js.map +1 -1
  112. package/dist/esm/v2/components/FilterTab.js +22 -31
  113. package/dist/esm/v2/components/FilterTab.js.map +1 -1
  114. package/dist/esm/v2/components/ForbiddenPage.js +28 -8
  115. package/dist/esm/v2/components/ForbiddenPage.js.map +1 -1
  116. package/dist/esm/v2/components/FormGrid.js +48 -54
  117. package/dist/esm/v2/components/FormGrid.js.map +1 -1
  118. package/dist/esm/v2/components/FormikDisplay.js +98 -24
  119. package/dist/esm/v2/components/FormikDisplay.js.map +1 -1
  120. package/dist/esm/v2/components/Input.js +75 -34
  121. package/dist/esm/v2/components/Input.js.map +1 -1
  122. package/dist/esm/v2/components/KPICard.js +42 -51
  123. package/dist/esm/v2/components/KPICard.js.map +1 -1
  124. package/dist/esm/v2/components/KPIStrip.js +9 -15
  125. package/dist/esm/v2/components/KPIStrip.js.map +1 -1
  126. package/dist/esm/v2/components/KV.js +16 -23
  127. package/dist/esm/v2/components/KV.js.map +1 -1
  128. package/dist/esm/v2/components/KVGrid.js +15 -23
  129. package/dist/esm/v2/components/KVGrid.js.map +1 -1
  130. package/dist/esm/v2/components/Layout.js +81 -117
  131. package/dist/esm/v2/components/Layout.js.map +1 -1
  132. package/dist/esm/v2/components/MobileRowCard.js +64 -75
  133. package/dist/esm/v2/components/MobileRowCard.js.map +1 -1
  134. package/dist/esm/v2/components/Modal.js +44 -53
  135. package/dist/esm/v2/components/Modal.js.map +1 -1
  136. package/dist/esm/v2/components/NetworkErrorPage.js +28 -11
  137. package/dist/esm/v2/components/NetworkErrorPage.js.map +1 -1
  138. package/dist/esm/v2/components/NotFoundPage.js +28 -9
  139. package/dist/esm/v2/components/NotFoundPage.js.map +1 -1
  140. package/dist/esm/v2/components/NumberInput.js +77 -107
  141. package/dist/esm/v2/components/NumberInput.js.map +1 -1
  142. package/dist/esm/v2/components/OverflowMenu.js +24 -42
  143. package/dist/esm/v2/components/OverflowMenu.js.map +1 -1
  144. package/dist/esm/v2/components/PdfViewer.js +24 -33
  145. package/dist/esm/v2/components/PdfViewer.js.map +1 -1
  146. package/dist/esm/v2/components/ProgressBar.js +28 -36
  147. package/dist/esm/v2/components/ProgressBar.js.map +1 -1
  148. package/dist/esm/v2/components/Radio.js +49 -57
  149. package/dist/esm/v2/components/Radio.js.map +1 -1
  150. package/dist/esm/v2/components/SectionErrorBoundary.js +84 -130
  151. package/dist/esm/v2/components/SectionErrorBoundary.js.map +1 -1
  152. package/dist/esm/v2/components/SectionHeader.js +24 -31
  153. package/dist/esm/v2/components/SectionHeader.js.map +1 -1
  154. package/dist/esm/v2/components/Segmented.js +59 -84
  155. package/dist/esm/v2/components/Segmented.js.map +1 -1
  156. package/dist/esm/v2/components/Select.js +100 -138
  157. package/dist/esm/v2/components/Select.js.map +1 -1
  158. package/dist/esm/v2/components/ServerErrorPage.js +27 -10
  159. package/dist/esm/v2/components/ServerErrorPage.js.map +1 -1
  160. package/dist/esm/v2/components/Skeleton.js +81 -96
  161. package/dist/esm/v2/components/Skeleton.js.map +1 -1
  162. package/dist/esm/v2/components/SkipLink.js +6 -7
  163. package/dist/esm/v2/components/SkipLink.js.map +1 -1
  164. package/dist/esm/v2/components/Spinner.js +13 -22
  165. package/dist/esm/v2/components/Spinner.js.map +1 -1
  166. package/dist/esm/v2/components/Status.js +14 -25
  167. package/dist/esm/v2/components/Status.js.map +1 -1
  168. package/dist/esm/v2/components/Stepper.js +68 -71
  169. package/dist/esm/v2/components/Stepper.js.map +1 -1
  170. package/dist/esm/v2/components/Surface.js +25 -44
  171. package/dist/esm/v2/components/Surface.js.map +1 -1
  172. package/dist/esm/v2/components/Switch.js +21 -29
  173. package/dist/esm/v2/components/Switch.js.map +1 -1
  174. package/dist/esm/v2/components/TabPanel.js +84 -0
  175. package/dist/esm/v2/components/TabPanel.js.map +1 -0
  176. package/dist/esm/v2/components/Tabs.js +43 -19
  177. package/dist/esm/v2/components/Tabs.js.map +1 -1
  178. package/dist/esm/v2/components/TelInput.js +75 -108
  179. package/dist/esm/v2/components/TelInput.js.map +1 -1
  180. package/dist/esm/v2/components/Textarea.js +21 -30
  181. package/dist/esm/v2/components/Textarea.js.map +1 -1
  182. package/dist/esm/v2/components/TimePicker.js +59 -69
  183. package/dist/esm/v2/components/TimePicker.js.map +1 -1
  184. package/dist/esm/v2/components/Toast.js +109 -163
  185. package/dist/esm/v2/components/Toast.js.map +1 -1
  186. package/dist/esm/v2/components/Tooltip.js +18 -31
  187. package/dist/esm/v2/components/Tooltip.js.map +1 -1
  188. package/dist/esm/v2/components/_ErrorPageBody.js +6 -5
  189. package/dist/esm/v2/components/_ErrorPageBody.js.map +1 -1
  190. package/dist/esm/v2/components/_pickerShared.js +2 -2
  191. package/dist/esm/v2/components/_pickerShared.js.map +1 -1
  192. package/dist/esm/v2/components/index.js +37 -0
  193. package/dist/esm/v2/components/index.js.map +1 -1
  194. package/dist/esm/v2/hooks/index.js +62 -0
  195. package/dist/esm/v2/hooks/index.js.map +1 -1
  196. package/dist/esm/v2/hooks/useAppliedFilters.js +112 -0
  197. package/dist/esm/v2/hooks/useAppliedFilters.js.map +1 -0
  198. package/dist/esm/v2/hooks/useDebouncedCallback.js +82 -0
  199. package/dist/esm/v2/hooks/useDebouncedCallback.js.map +1 -0
  200. package/dist/esm/v2/hooks/useDelayedFlag.js +5 -19
  201. package/dist/esm/v2/hooks/useDelayedFlag.js.map +1 -1
  202. package/dist/esm/v2/hooks/useDensity.js +13 -17
  203. package/dist/esm/v2/hooks/useDensity.js.map +1 -1
  204. package/dist/esm/v2/hooks/useFocusFirstError.js +25 -33
  205. package/dist/esm/v2/hooks/useFocusFirstError.js.map +1 -1
  206. package/dist/esm/v2/hooks/useFocusOnRouteChange.js +81 -0
  207. package/dist/esm/v2/hooks/useFocusOnRouteChange.js.map +1 -0
  208. package/dist/esm/v2/hooks/useFocusTrap.js +19 -23
  209. package/dist/esm/v2/hooks/useFocusTrap.js.map +1 -1
  210. package/dist/esm/v2/hooks/useFormAutoSave.js +38 -53
  211. package/dist/esm/v2/hooks/useFormAutoSave.js.map +1 -1
  212. package/dist/esm/v2/hooks/useFormCompletionProgress.js +32 -51
  213. package/dist/esm/v2/hooks/useFormCompletionProgress.js.map +1 -1
  214. package/dist/esm/v2/hooks/useKeyboardShortcuts.js +125 -0
  215. package/dist/esm/v2/hooks/useKeyboardShortcuts.js.map +1 -0
  216. package/dist/esm/v2/hooks/usePrefersReducedMotion.js +99 -0
  217. package/dist/esm/v2/hooks/usePrefersReducedMotion.js.map +1 -0
  218. package/dist/esm/v2/hooks/useResolvedDensity.js +2 -10
  219. package/dist/esm/v2/hooks/useResolvedDensity.js.map +1 -1
  220. package/dist/esm/v2/hooks/useSortedRows.js +3 -5
  221. package/dist/esm/v2/hooks/useSortedRows.js.map +1 -1
  222. package/dist/esm/v2/hooks/useTabLoading.js +6 -21
  223. package/dist/esm/v2/hooks/useTabLoading.js.map +1 -1
  224. package/dist/esm/v2/index.js +2 -3
  225. package/dist/esm/v2/index.js.map +1 -1
  226. package/dist/esm/v2/modalContext.js +2 -2
  227. package/dist/esm/v2/modalContext.js.map +1 -1
  228. package/dist/esm/v2/models/favorite.js.map +1 -1
  229. package/dist/esm/v2/models/personalization.js.map +1 -1
  230. package/dist/esm/v2/models/referentiel.js.map +1 -1
  231. package/dist/esm/v2/models/savedFilter.js.map +1 -1
  232. package/dist/esm/v2/patterns/ActionBar.js +115 -159
  233. package/dist/esm/v2/patterns/ActionBar.js.map +1 -1
  234. package/dist/esm/v2/patterns/AppMain.js +108 -0
  235. package/dist/esm/v2/patterns/AppMain.js.map +1 -0
  236. package/dist/esm/v2/patterns/BulkActionBar.js +31 -34
  237. package/dist/esm/v2/patterns/BulkActionBar.js.map +1 -1
  238. package/dist/esm/v2/patterns/ChartFigure.js +151 -0
  239. package/dist/esm/v2/patterns/ChartFigure.js.map +1 -0
  240. package/dist/esm/v2/patterns/CollapsibleDataGrid.js +111 -152
  241. package/dist/esm/v2/patterns/CollapsibleDataGrid.js.map +1 -1
  242. package/dist/esm/v2/patterns/ColumnsToggle.js +43 -77
  243. package/dist/esm/v2/patterns/ColumnsToggle.js.map +1 -1
  244. package/dist/esm/v2/patterns/DataGrid.js +221 -255
  245. package/dist/esm/v2/patterns/DataGrid.js.map +1 -1
  246. package/dist/esm/v2/patterns/DataGridSettingsMenu.js +76 -94
  247. package/dist/esm/v2/patterns/DataGridSettingsMenu.js.map +1 -1
  248. package/dist/esm/v2/patterns/DataGridToolbar.js +85 -89
  249. package/dist/esm/v2/patterns/DataGridToolbar.js.map +1 -1
  250. package/dist/esm/v2/patterns/DataGridVirtualized.js +141 -182
  251. package/dist/esm/v2/patterns/DataGridVirtualized.js.map +1 -1
  252. package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js +26 -30
  253. package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
  254. package/dist/esm/v2/patterns/DetailSplit.js +108 -0
  255. package/dist/esm/v2/patterns/DetailSplit.js.map +1 -0
  256. package/dist/esm/v2/patterns/FavoriteColumn.js +15 -17
  257. package/dist/esm/v2/patterns/FavoriteColumn.js.map +1 -1
  258. package/dist/esm/v2/patterns/FavoritesFilter.js +30 -39
  259. package/dist/esm/v2/patterns/FavoritesFilter.js.map +1 -1
  260. package/dist/esm/v2/patterns/FilterTabBar.js +112 -0
  261. package/dist/esm/v2/patterns/FilterTabBar.js.map +1 -0
  262. package/dist/esm/v2/patterns/FormErrorSummary.js +12 -13
  263. package/dist/esm/v2/patterns/FormErrorSummary.js.map +1 -1
  264. package/dist/esm/v2/patterns/FormPageShell.js +43 -41
  265. package/dist/esm/v2/patterns/FormPageShell.js.map +1 -1
  266. package/dist/esm/v2/patterns/FormSection.js +30 -38
  267. package/dist/esm/v2/patterns/FormSection.js.map +1 -1
  268. package/dist/esm/v2/patterns/FormikCheckbox.js +29 -39
  269. package/dist/esm/v2/patterns/FormikCheckbox.js.map +1 -1
  270. package/dist/esm/v2/patterns/FormikCheckboxGroup.js +56 -60
  271. package/dist/esm/v2/patterns/FormikCheckboxGroup.js.map +1 -1
  272. package/dist/esm/v2/patterns/FormikCombobox.js +51 -69
  273. package/dist/esm/v2/patterns/FormikCombobox.js.map +1 -1
  274. package/dist/esm/v2/patterns/FormikDatePicker.js +44 -58
  275. package/dist/esm/v2/patterns/FormikDatePicker.js.map +1 -1
  276. package/dist/esm/v2/patterns/FormikDateTimePicker.js +44 -58
  277. package/dist/esm/v2/patterns/FormikDateTimePicker.js.map +1 -1
  278. package/dist/esm/v2/patterns/FormikErrorFocus.js +22 -23
  279. package/dist/esm/v2/patterns/FormikErrorFocus.js.map +1 -1
  280. package/dist/esm/v2/patterns/FormikErrorSummary.js +89 -0
  281. package/dist/esm/v2/patterns/FormikErrorSummary.js.map +1 -0
  282. package/dist/esm/v2/patterns/FormikFile.js +94 -78
  283. package/dist/esm/v2/patterns/FormikFile.js.map +1 -1
  284. package/dist/esm/v2/patterns/FormikInput.js +40 -53
  285. package/dist/esm/v2/patterns/FormikInput.js.map +1 -1
  286. package/dist/esm/v2/patterns/FormikRadioGroup.js +39 -51
  287. package/dist/esm/v2/patterns/FormikRadioGroup.js.map +1 -1
  288. package/dist/esm/v2/patterns/FormikReferentielField.js +49 -59
  289. package/dist/esm/v2/patterns/FormikReferentielField.js.map +1 -1
  290. package/dist/esm/v2/patterns/FormikSelect.js +64 -87
  291. package/dist/esm/v2/patterns/FormikSelect.js.map +1 -1
  292. package/dist/esm/v2/patterns/FormikTextarea.js +30 -46
  293. package/dist/esm/v2/patterns/FormikTextarea.js.map +1 -1
  294. package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js +53 -71
  295. package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
  296. package/dist/esm/v2/patterns/NetworkErrorBanner.js +6 -7
  297. package/dist/esm/v2/patterns/NetworkErrorBanner.js.map +1 -1
  298. package/dist/esm/v2/patterns/PageContent.js +10 -14
  299. package/dist/esm/v2/patterns/PageContent.js.map +1 -1
  300. package/dist/esm/v2/patterns/PreviewDrawer.js +153 -0
  301. package/dist/esm/v2/patterns/PreviewDrawer.js.map +1 -0
  302. package/dist/esm/v2/patterns/ReferentielField.js +327 -312
  303. package/dist/esm/v2/patterns/ReferentielField.js.map +1 -1
  304. package/dist/esm/v2/patterns/RowFavoriteToggle.js +27 -22
  305. package/dist/esm/v2/patterns/RowFavoriteToggle.js.map +1 -1
  306. package/dist/esm/v2/patterns/SaveFilterDialog.js +38 -66
  307. package/dist/esm/v2/patterns/SaveFilterDialog.js.map +1 -1
  308. package/dist/esm/v2/patterns/SavedFiltersMenu.js +62 -81
  309. package/dist/esm/v2/patterns/SavedFiltersMenu.js.map +1 -1
  310. package/dist/esm/v2/patterns/SkeletonPageShell.js +106 -129
  311. package/dist/esm/v2/patterns/SkeletonPageShell.js.map +1 -1
  312. package/dist/esm/v2/patterns/SortableHeader.js +22 -45
  313. package/dist/esm/v2/patterns/SortableHeader.js.map +1 -1
  314. package/dist/esm/v2/patterns/Tour.js +94 -120
  315. package/dist/esm/v2/patterns/Tour.js.map +1 -1
  316. package/dist/esm/v2/patterns/_dataGridShared.js +107 -128
  317. package/dist/esm/v2/patterns/_dataGridShared.js.map +1 -1
  318. package/dist/esm/v2/patterns/_pickerSerialisation.js +6 -8
  319. package/dist/esm/v2/patterns/_pickerSerialisation.js.map +1 -1
  320. package/dist/esm/v2/patterns/_sort.js +17 -33
  321. package/dist/esm/v2/patterns/_sort.js.map +1 -1
  322. package/dist/esm/v2/patterns/_useColumnReorder.js +122 -160
  323. package/dist/esm/v2/patterns/_useColumnReorder.js.map +1 -1
  324. package/dist/esm/v2/patterns/_useColumnResize.js +78 -96
  325. package/dist/esm/v2/patterns/_useColumnResize.js.map +1 -1
  326. package/dist/esm/v2/patterns/filterCriteria.js +102 -0
  327. package/dist/esm/v2/patterns/filterCriteria.js.map +1 -0
  328. package/dist/esm/v2/patterns/index.js +152 -0
  329. package/dist/esm/v2/patterns/index.js.map +1 -1
  330. package/dist/esm/v2/patterns/rowActions.js +223 -0
  331. package/dist/esm/v2/patterns/rowActions.js.map +1 -0
  332. package/dist/esm/v2/personalization/PersonalizationProvider.js +50 -47
  333. package/dist/esm/v2/personalization/PersonalizationProvider.js.map +1 -1
  334. package/dist/esm/v2/personalization/adapters/_storageKey.js +5 -5
  335. package/dist/esm/v2/personalization/adapters/_storageKey.js.map +1 -1
  336. package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js +22 -23
  337. package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
  338. package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js +13 -13
  339. package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
  340. package/dist/esm/v2/personalization/capabilities/favorites.js +36 -60
  341. package/dist/esm/v2/personalization/capabilities/favorites.js.map +1 -1
  342. package/dist/esm/v2/personalization/capabilities/favoritesView.js +22 -34
  343. package/dist/esm/v2/personalization/capabilities/favoritesView.js.map +1 -1
  344. package/dist/esm/v2/personalization/capabilities/gridPreferences.js +28 -34
  345. package/dist/esm/v2/personalization/capabilities/gridPreferences.js.map +1 -1
  346. package/dist/esm/v2/personalization/capabilities/reviveSavedCriteria.js +119 -0
  347. package/dist/esm/v2/personalization/capabilities/reviveSavedCriteria.js.map +1 -0
  348. package/dist/esm/v2/personalization/capabilities/savedFilters.js +90 -98
  349. package/dist/esm/v2/personalization/capabilities/savedFilters.js.map +1 -1
  350. package/dist/esm/v2/personalization/createPersonalizationStore.js +78 -181
  351. package/dist/esm/v2/personalization/createPersonalizationStore.js.map +1 -1
  352. package/dist/esm/v2/personalization/index.js +17 -0
  353. package/dist/esm/v2/personalization/index.js.map +1 -1
  354. package/dist/esm/v2/personalization/personalizationContext.js +9 -9
  355. package/dist/esm/v2/personalization/personalizationContext.js.map +1 -1
  356. package/dist/esm/v2/personalization/schema.js +8 -9
  357. package/dist/esm/v2/personalization/schema.js.map +1 -1
  358. package/dist/esm/v2/referentiel/ReferentielProvider.js +27 -42
  359. package/dist/esm/v2/referentiel/ReferentielProvider.js.map +1 -1
  360. package/dist/esm/v2/referentiel/types.js +2 -0
  361. package/dist/esm/v2/referentiel/types.js.map +1 -0
  362. package/dist/esm/v2/referentiel/useReferentielClient.js +10 -11
  363. package/dist/esm/v2/referentiel/useReferentielClient.js.map +1 -1
  364. package/dist/esm/v2/referentiel/useReferentielOptions.js +60 -117
  365. package/dist/esm/v2/referentiel/useReferentielOptions.js.map +1 -1
  366. package/dist/esm/v2/referentiel/useReferentielSearch.js +37 -91
  367. package/dist/esm/v2/referentiel/useReferentielSearch.js.map +1 -1
  368. package/dist/esm/v2/theme/_brand.js +8 -24
  369. package/dist/esm/v2/theme/_brand.js.map +1 -1
  370. package/dist/esm/v2/theme/_brandSecondary.js +8 -24
  371. package/dist/esm/v2/theme/_brandSecondary.js.map +1 -1
  372. package/dist/esm/v2/theme/createPortnetTheme.js +51 -61
  373. package/dist/esm/v2/theme/createPortnetTheme.js.map +1 -1
  374. package/dist/esm/v2/theme/cssVariables.js +62 -69
  375. package/dist/esm/v2/theme/cssVariables.js.map +1 -1
  376. package/dist/esm/v2/theme/index.js +5 -5
  377. package/dist/esm/v2/theme/index.js.map +1 -1
  378. package/dist/esm/v2/tokens/breakpoints.js +14 -14
  379. package/dist/esm/v2/tokens/breakpoints.js.map +1 -1
  380. package/dist/esm/v2/tokens/chart.js +261 -0
  381. package/dist/esm/v2/tokens/chart.js.map +1 -0
  382. package/dist/esm/v2/tokens/colors.js +22 -22
  383. package/dist/esm/v2/tokens/colors.js.map +1 -1
  384. package/dist/esm/v2/tokens/density.js +62 -7
  385. package/dist/esm/v2/tokens/density.js.map +1 -1
  386. package/dist/esm/v2/tokens/index.js +49 -34
  387. package/dist/esm/v2/tokens/index.js.map +1 -1
  388. package/dist/esm/v2/tokens/motion.js +12 -20
  389. package/dist/esm/v2/tokens/motion.js.map +1 -1
  390. package/dist/esm/v2/tokens/radius.js +1 -1
  391. package/dist/esm/v2/tokens/radius.js.map +1 -1
  392. package/dist/esm/v2/tokens/shadows.js +6 -6
  393. package/dist/esm/v2/tokens/shadows.js.map +1 -1
  394. package/dist/esm/v2/tokens/spacing.js +2 -2
  395. package/dist/esm/v2/tokens/spacing.js.map +1 -1
  396. package/dist/esm/v2/tokens/state.js +1 -1
  397. package/dist/esm/v2/tokens/state.js.map +1 -1
  398. package/dist/esm/v2/tokens/statusPalette.js +17 -21
  399. package/dist/esm/v2/tokens/statusPalette.js.map +1 -1
  400. package/dist/esm/v2/tokens/tokens.json +6 -1
  401. package/dist/esm/v2/tokens/typography.js +13 -13
  402. package/dist/esm/v2/tokens/typography.js.map +1 -1
  403. package/dist/esm/v2/tokens/zIndex.js +1 -1
  404. package/dist/esm/v2/tokens/zIndex.js.map +1 -1
  405. package/dist/esm/v2/types/datagrid.js.map +1 -1
  406. package/dist/esm/v2/utils/apiError.js +16 -37
  407. package/dist/esm/v2/utils/apiError.js.map +1 -1
  408. package/dist/esm/v2/utils/contrast.js +31 -32
  409. package/dist/esm/v2/utils/contrast.js.map +1 -1
  410. package/dist/esm/v2/utils/cx.js +5 -25
  411. package/dist/esm/v2/utils/cx.js.map +1 -1
  412. package/dist/esm/v2/utils/fileDownload.js +23 -26
  413. package/dist/esm/v2/utils/fileDownload.js.map +1 -1
  414. package/dist/esm/v2/utils/fileValidation.js +209 -0
  415. package/dist/esm/v2/utils/fileValidation.js.map +1 -0
  416. package/dist/esm/v2/utils/fmtDate.js +111 -0
  417. package/dist/esm/v2/utils/fmtDate.js.map +1 -0
  418. package/dist/esm/v2/utils/fmtMoney.js +8 -10
  419. package/dist/esm/v2/utils/fmtMoney.js.map +1 -1
  420. package/dist/esm/v2/utils/formikErrors.js +78 -0
  421. package/dist/esm/v2/utils/formikErrors.js.map +1 -0
  422. package/dist/esm/v2/utils/index.js +35 -2
  423. package/dist/esm/v2/utils/index.js.map +1 -1
  424. package/dist/esm/v2/utils/mergeLabels.js +7 -12
  425. package/dist/esm/v2/utils/mergeLabels.js.map +1 -1
  426. package/dist/esm/v2/utils/networkStatus.js +12 -12
  427. package/dist/esm/v2/utils/networkStatus.js.map +1 -1
  428. package/dist/index.d.ts +7 -1
  429. package/dist/index.d.ts.map +1 -1
  430. package/dist/index.js +110 -49
  431. package/dist/index.js.map +1 -1
  432. package/dist/v2/__tests__/AppMain.test.js +133 -0
  433. package/dist/v2/__tests__/AppMain.test.js.map +1 -0
  434. package/dist/v2/__tests__/ChartFigure.test.js +183 -0
  435. package/dist/v2/__tests__/ChartFigure.test.js.map +1 -0
  436. package/dist/v2/__tests__/DataGridRowActionsPropagation.test.js +153 -0
  437. package/dist/v2/__tests__/DataGridRowActionsPropagation.test.js.map +1 -0
  438. package/dist/v2/__tests__/DrawerTactileTargets.test.js +94 -0
  439. package/dist/v2/__tests__/DrawerTactileTargets.test.js.map +1 -0
  440. package/dist/v2/__tests__/FieldError.test.js +82 -49
  441. package/dist/v2/__tests__/FieldError.test.js.map +1 -1
  442. package/dist/v2/__tests__/FieldNaming.test.js +161 -0
  443. package/dist/v2/__tests__/FieldNaming.test.js.map +1 -0
  444. package/dist/v2/__tests__/FieldWidth.test.js +23 -25
  445. package/dist/v2/__tests__/FieldWidth.test.js.map +1 -1
  446. package/dist/v2/__tests__/FileCard.test.js +29 -28
  447. package/dist/v2/__tests__/FileCard.test.js.map +1 -1
  448. package/dist/v2/__tests__/FormikCheckbox.test.js +90 -183
  449. package/dist/v2/__tests__/FormikCheckbox.test.js.map +1 -1
  450. package/dist/v2/__tests__/FormikDateTimePicker.test.js +38 -48
  451. package/dist/v2/__tests__/FormikDateTimePicker.test.js.map +1 -1
  452. package/dist/v2/__tests__/FormikDisplayWidth.test.js +102 -0
  453. package/dist/v2/__tests__/FormikDisplayWidth.test.js.map +1 -0
  454. package/dist/v2/__tests__/FormikRadioGroup.test.js +123 -204
  455. package/dist/v2/__tests__/FormikRadioGroup.test.js.map +1 -1
  456. package/dist/v2/__tests__/MobileRowCard.test.js +63 -61
  457. package/dist/v2/__tests__/MobileRowCard.test.js.map +1 -1
  458. package/dist/v2/__tests__/PreviewDrawer.test.js +169 -0
  459. package/dist/v2/__tests__/PreviewDrawer.test.js.map +1 -0
  460. package/dist/v2/__tests__/ReferentielFieldContainer.test.js +159 -0
  461. package/dist/v2/__tests__/ReferentielFieldContainer.test.js.map +1 -0
  462. package/dist/v2/__tests__/SectionErrorBoundary.test.js +53 -68
  463. package/dist/v2/__tests__/SectionErrorBoundary.test.js.map +1 -1
  464. package/dist/v2/__tests__/apiError.test.js +50 -69
  465. package/dist/v2/__tests__/apiError.test.js.map +1 -1
  466. package/dist/v2/__tests__/banned-patterns.test.js +42 -123
  467. package/dist/v2/__tests__/banned-patterns.test.js.map +1 -1
  468. package/dist/v2/__tests__/chart-palette.test.js +205 -0
  469. package/dist/v2/__tests__/chart-palette.test.js.map +1 -0
  470. package/dist/v2/__tests__/contrast-palette.test.js +42 -74
  471. package/dist/v2/__tests__/contrast-palette.test.js.map +1 -1
  472. package/dist/v2/__tests__/cssVariables.test.js +44 -51
  473. package/dist/v2/__tests__/cssVariables.test.js.map +1 -1
  474. package/dist/v2/__tests__/fileValidation.test.js +136 -0
  475. package/dist/v2/__tests__/fileValidation.test.js.map +1 -0
  476. package/dist/v2/__tests__/filterCriteria.test.js +324 -0
  477. package/dist/v2/__tests__/filterCriteria.test.js.map +1 -0
  478. package/dist/v2/__tests__/fmtDate.test.js +69 -0
  479. package/dist/v2/__tests__/fmtDate.test.js.map +1 -0
  480. package/dist/v2/__tests__/gap-leakage-refonte.test.js +221 -0
  481. package/dist/v2/__tests__/gap-leakage-refonte.test.js.map +1 -0
  482. package/dist/v2/__tests__/labels-merge.test.js +23 -27
  483. package/dist/v2/__tests__/labels-merge.test.js.map +1 -1
  484. package/dist/v2/__tests__/locale-fallback.test.js +47 -52
  485. package/dist/v2/__tests__/locale-fallback.test.js.map +1 -1
  486. package/dist/v2/__tests__/reviveSavedCriteria.test.js +144 -0
  487. package/dist/v2/__tests__/reviveSavedCriteria.test.js.map +1 -0
  488. package/dist/v2/__tests__/rowActions.test.js +186 -0
  489. package/dist/v2/__tests__/rowActions.test.js.map +1 -0
  490. package/dist/v2/__tests__/useFocusOnRouteChange.test.js +156 -0
  491. package/dist/v2/__tests__/useFocusOnRouteChange.test.js.map +1 -0
  492. package/dist/v2/__tests__/useFocusTrap.test.js +270 -407
  493. package/dist/v2/__tests__/useFocusTrap.test.js.map +1 -1
  494. package/dist/v2/__tests__/usePrefersReducedMotion.test.js +123 -0
  495. package/dist/v2/__tests__/usePrefersReducedMotion.test.js.map +1 -0
  496. package/dist/v2/components/Accordion.js +60 -82
  497. package/dist/v2/components/Accordion.js.map +1 -1
  498. package/dist/v2/components/ActionStrip.js +40 -52
  499. package/dist/v2/components/ActionStrip.js.map +1 -1
  500. package/dist/v2/components/Banner.js +42 -41
  501. package/dist/v2/components/Banner.js.map +1 -1
  502. package/dist/v2/components/Busy.js +22 -27
  503. package/dist/v2/components/Busy.js.map +1 -1
  504. package/dist/v2/components/Button.js +39 -50
  505. package/dist/v2/components/Button.js.map +1 -1
  506. package/dist/v2/components/CategoryTag.d.ts.map +1 -1
  507. package/dist/v2/components/CategoryTag.js +49 -32
  508. package/dist/v2/components/CategoryTag.js.map +1 -1
  509. package/dist/v2/components/Checkbox.js +39 -45
  510. package/dist/v2/components/Checkbox.js.map +1 -1
  511. package/dist/v2/components/Chip.js +29 -42
  512. package/dist/v2/components/Chip.js.map +1 -1
  513. package/dist/v2/components/Combobox.js +122 -144
  514. package/dist/v2/components/Combobox.js.map +1 -1
  515. package/dist/v2/components/CommandPalette.js +138 -225
  516. package/dist/v2/components/CommandPalette.js.map +1 -1
  517. package/dist/v2/components/ConfirmDialog.js +46 -56
  518. package/dist/v2/components/ConfirmDialog.js.map +1 -1
  519. package/dist/v2/components/DatePicker.js +81 -86
  520. package/dist/v2/components/DatePicker.js.map +1 -1
  521. package/dist/v2/components/DateRangePicker.js +77 -87
  522. package/dist/v2/components/DateRangePicker.js.map +1 -1
  523. package/dist/v2/components/DateTimePicker.js +84 -91
  524. package/dist/v2/components/DateTimePicker.js.map +1 -1
  525. package/dist/v2/components/Drawer.d.ts.map +1 -1
  526. package/dist/v2/components/Drawer.js +93 -88
  527. package/dist/v2/components/Drawer.js.map +1 -1
  528. package/dist/v2/components/Dropzone.js +150 -196
  529. package/dist/v2/components/Dropzone.js.map +1 -1
  530. package/dist/v2/components/EmptyState.js +18 -20
  531. package/dist/v2/components/EmptyState.js.map +1 -1
  532. package/dist/v2/components/FavoriteToggle.js +28 -39
  533. package/dist/v2/components/FavoriteToggle.js.map +1 -1
  534. package/dist/v2/components/Field.d.ts +62 -4
  535. package/dist/v2/components/Field.d.ts.map +1 -1
  536. package/dist/v2/components/Field.js +169 -70
  537. package/dist/v2/components/Field.js.map +1 -1
  538. package/dist/v2/components/FieldError.js +18 -21
  539. package/dist/v2/components/FieldError.js.map +1 -1
  540. package/dist/v2/components/FieldHelp.js +40 -60
  541. package/dist/v2/components/FieldHelp.js.map +1 -1
  542. package/dist/v2/components/FileCard.js +27 -31
  543. package/dist/v2/components/FileCard.js.map +1 -1
  544. package/dist/v2/components/FilterTab.js +30 -38
  545. package/dist/v2/components/FilterTab.js.map +1 -1
  546. package/dist/v2/components/ForbiddenPage.d.ts +25 -1
  547. package/dist/v2/components/ForbiddenPage.d.ts.map +1 -1
  548. package/dist/v2/components/ForbiddenPage.js +37 -17
  549. package/dist/v2/components/ForbiddenPage.js.map +1 -1
  550. package/dist/v2/components/FormGrid.js +53 -59
  551. package/dist/v2/components/FormGrid.js.map +1 -1
  552. package/dist/v2/components/FormikDisplay.d.ts +50 -1
  553. package/dist/v2/components/FormikDisplay.d.ts.map +1 -1
  554. package/dist/v2/components/FormikDisplay.js +108 -33
  555. package/dist/v2/components/FormikDisplay.js.map +1 -1
  556. package/dist/v2/components/Input.d.ts +40 -0
  557. package/dist/v2/components/Input.d.ts.map +1 -1
  558. package/dist/v2/components/Input.js +81 -41
  559. package/dist/v2/components/Input.js.map +1 -1
  560. package/dist/v2/components/KPICard.js +57 -67
  561. package/dist/v2/components/KPICard.js.map +1 -1
  562. package/dist/v2/components/KPIStrip.js +16 -22
  563. package/dist/v2/components/KPIStrip.js.map +1 -1
  564. package/dist/v2/components/KV.js +25 -31
  565. package/dist/v2/components/KV.js.map +1 -1
  566. package/dist/v2/components/KVGrid.js +19 -26
  567. package/dist/v2/components/KVGrid.js.map +1 -1
  568. package/dist/v2/components/Layout.js +91 -120
  569. package/dist/v2/components/Layout.js.map +1 -1
  570. package/dist/v2/components/MobileRowCard.js +79 -91
  571. package/dist/v2/components/MobileRowCard.js.map +1 -1
  572. package/dist/v2/components/Modal.js +61 -69
  573. package/dist/v2/components/Modal.js.map +1 -1
  574. package/dist/v2/components/NetworkErrorPage.d.ts +19 -1
  575. package/dist/v2/components/NetworkErrorPage.d.ts.map +1 -1
  576. package/dist/v2/components/NetworkErrorPage.js +38 -21
  577. package/dist/v2/components/NetworkErrorPage.js.map +1 -1
  578. package/dist/v2/components/NotFoundPage.d.ts +17 -1
  579. package/dist/v2/components/NotFoundPage.d.ts.map +1 -1
  580. package/dist/v2/components/NotFoundPage.js +37 -18
  581. package/dist/v2/components/NotFoundPage.js.map +1 -1
  582. package/dist/v2/components/NumberInput.js +88 -118
  583. package/dist/v2/components/NumberInput.js.map +1 -1
  584. package/dist/v2/components/OverflowMenu.js +38 -56
  585. package/dist/v2/components/OverflowMenu.js.map +1 -1
  586. package/dist/v2/components/PdfViewer.js +34 -45
  587. package/dist/v2/components/PdfViewer.js.map +1 -1
  588. package/dist/v2/components/ProgressBar.js +42 -49
  589. package/dist/v2/components/ProgressBar.js.map +1 -1
  590. package/dist/v2/components/Radio.js +59 -67
  591. package/dist/v2/components/Radio.js.map +1 -1
  592. package/dist/v2/components/SectionErrorBoundary.js +90 -135
  593. package/dist/v2/components/SectionErrorBoundary.js.map +1 -1
  594. package/dist/v2/components/SectionHeader.js +34 -41
  595. package/dist/v2/components/SectionHeader.js.map +1 -1
  596. package/dist/v2/components/Segmented.js +69 -93
  597. package/dist/v2/components/Segmented.js.map +1 -1
  598. package/dist/v2/components/Select.d.ts +26 -2
  599. package/dist/v2/components/Select.d.ts.map +1 -1
  600. package/dist/v2/components/Select.js +120 -155
  601. package/dist/v2/components/Select.js.map +1 -1
  602. package/dist/v2/components/ServerErrorPage.d.ts +27 -1
  603. package/dist/v2/components/ServerErrorPage.d.ts.map +1 -1
  604. package/dist/v2/components/ServerErrorPage.js +37 -20
  605. package/dist/v2/components/ServerErrorPage.js.map +1 -1
  606. package/dist/v2/components/Skeleton.js +86 -100
  607. package/dist/v2/components/Skeleton.js.map +1 -1
  608. package/dist/v2/components/SkipLink.js +9 -12
  609. package/dist/v2/components/SkipLink.js.map +1 -1
  610. package/dist/v2/components/Spinner.js +16 -25
  611. package/dist/v2/components/Spinner.js.map +1 -1
  612. package/dist/v2/components/Status.js +18 -29
  613. package/dist/v2/components/Status.js.map +1 -1
  614. package/dist/v2/components/Stepper.js +80 -82
  615. package/dist/v2/components/Stepper.js.map +1 -1
  616. package/dist/v2/components/Surface.js +34 -49
  617. package/dist/v2/components/Surface.js.map +1 -1
  618. package/dist/v2/components/Switch.js +29 -37
  619. package/dist/v2/components/Switch.js.map +1 -1
  620. package/dist/v2/components/TabPanel.d.ts +17 -0
  621. package/dist/v2/components/TabPanel.d.ts.map +1 -0
  622. package/dist/v2/components/TabPanel.js +90 -0
  623. package/dist/v2/components/TabPanel.js.map +1 -0
  624. package/dist/v2/components/Tabs.d.ts +25 -0
  625. package/dist/v2/components/Tabs.d.ts.map +1 -1
  626. package/dist/v2/components/Tabs.js +53 -29
  627. package/dist/v2/components/Tabs.js.map +1 -1
  628. package/dist/v2/components/TelInput.js +80 -115
  629. package/dist/v2/components/TelInput.js.map +1 -1
  630. package/dist/v2/components/Textarea.js +26 -35
  631. package/dist/v2/components/Textarea.js.map +1 -1
  632. package/dist/v2/components/TimePicker.js +62 -74
  633. package/dist/v2/components/TimePicker.js.map +1 -1
  634. package/dist/v2/components/Toast.js +119 -174
  635. package/dist/v2/components/Toast.js.map +1 -1
  636. package/dist/v2/components/Tooltip.js +23 -38
  637. package/dist/v2/components/Tooltip.js.map +1 -1
  638. package/dist/v2/components/_ErrorPageBody.js +15 -16
  639. package/dist/v2/components/_ErrorPageBody.js.map +1 -1
  640. package/dist/v2/components/_pickerShared.js +5 -5
  641. package/dist/v2/components/_pickerShared.js.map +1 -1
  642. package/dist/v2/components/index.d.ts +40 -1
  643. package/dist/v2/components/index.d.ts.map +1 -1
  644. package/dist/v2/components/index.js +153 -136
  645. package/dist/v2/components/index.js.map +1 -1
  646. package/dist/v2/hooks/index.d.ts +65 -0
  647. package/dist/v2/hooks/index.d.ts.map +1 -1
  648. package/dist/v2/hooks/index.js +63 -24
  649. package/dist/v2/hooks/index.js.map +1 -1
  650. package/dist/v2/hooks/useAppliedFilters.d.ts +102 -0
  651. package/dist/v2/hooks/useAppliedFilters.d.ts.map +1 -0
  652. package/dist/v2/hooks/useAppliedFilters.js +117 -0
  653. package/dist/v2/hooks/useAppliedFilters.js.map +1 -0
  654. package/dist/v2/hooks/useDebouncedCallback.d.ts +64 -0
  655. package/dist/v2/hooks/useDebouncedCallback.d.ts.map +1 -0
  656. package/dist/v2/hooks/useDebouncedCallback.js +87 -0
  657. package/dist/v2/hooks/useDebouncedCallback.js.map +1 -0
  658. package/dist/v2/hooks/useDelayedFlag.js +6 -20
  659. package/dist/v2/hooks/useDelayedFlag.js.map +1 -1
  660. package/dist/v2/hooks/useDensity.d.ts.map +1 -1
  661. package/dist/v2/hooks/useDensity.js +14 -18
  662. package/dist/v2/hooks/useDensity.js.map +1 -1
  663. package/dist/v2/hooks/useFocusFirstError.js +26 -34
  664. package/dist/v2/hooks/useFocusFirstError.js.map +1 -1
  665. package/dist/v2/hooks/useFocusOnRouteChange.d.ts +65 -0
  666. package/dist/v2/hooks/useFocusOnRouteChange.d.ts.map +1 -0
  667. package/dist/v2/hooks/useFocusOnRouteChange.js +88 -0
  668. package/dist/v2/hooks/useFocusOnRouteChange.js.map +1 -0
  669. package/dist/v2/hooks/useFocusTrap.js +20 -24
  670. package/dist/v2/hooks/useFocusTrap.js.map +1 -1
  671. package/dist/v2/hooks/useFormAutoSave.d.ts +4 -4
  672. package/dist/v2/hooks/useFormAutoSave.d.ts.map +1 -1
  673. package/dist/v2/hooks/useFormAutoSave.js +39 -54
  674. package/dist/v2/hooks/useFormAutoSave.js.map +1 -1
  675. package/dist/v2/hooks/useFormCompletionProgress.d.ts +1 -1
  676. package/dist/v2/hooks/useFormCompletionProgress.d.ts.map +1 -1
  677. package/dist/v2/hooks/useFormCompletionProgress.js +33 -52
  678. package/dist/v2/hooks/useFormCompletionProgress.js.map +1 -1
  679. package/dist/v2/hooks/useKeyboardShortcuts.d.ts +25 -0
  680. package/dist/v2/hooks/useKeyboardShortcuts.d.ts.map +1 -0
  681. package/dist/v2/hooks/useKeyboardShortcuts.js +132 -0
  682. package/dist/v2/hooks/useKeyboardShortcuts.js.map +1 -0
  683. package/dist/v2/hooks/usePrefersReducedMotion.d.ts +56 -0
  684. package/dist/v2/hooks/usePrefersReducedMotion.d.ts.map +1 -0
  685. package/dist/v2/hooks/usePrefersReducedMotion.js +105 -0
  686. package/dist/v2/hooks/usePrefersReducedMotion.js.map +1 -0
  687. package/dist/v2/hooks/useResolvedDensity.js +5 -13
  688. package/dist/v2/hooks/useResolvedDensity.js.map +1 -1
  689. package/dist/v2/hooks/useSortedRows.js +4 -6
  690. package/dist/v2/hooks/useSortedRows.js.map +1 -1
  691. package/dist/v2/hooks/useTabLoading.js +7 -22
  692. package/dist/v2/hooks/useTabLoading.js.map +1 -1
  693. package/dist/v2/index.js +143 -145
  694. package/dist/v2/index.js.map +1 -1
  695. package/dist/v2/modalContext.js +2 -2
  696. package/dist/v2/modalContext.js.map +1 -1
  697. package/dist/v2/models/favorite.d.ts +8 -9
  698. package/dist/v2/models/favorite.d.ts.map +1 -1
  699. package/dist/v2/models/favorite.js.map +1 -1
  700. package/dist/v2/models/index.js +4 -4
  701. package/dist/v2/models/index.js.map +1 -1
  702. package/dist/v2/models/personalization.d.ts +44 -48
  703. package/dist/v2/models/personalization.d.ts.map +1 -1
  704. package/dist/v2/models/personalization.js.map +1 -1
  705. package/dist/v2/models/referentiel.d.ts +32 -50
  706. package/dist/v2/models/referentiel.d.ts.map +1 -1
  707. package/dist/v2/models/referentiel.js.map +1 -1
  708. package/dist/v2/models/savedFilter.d.ts +8 -17
  709. package/dist/v2/models/savedFilter.d.ts.map +1 -1
  710. package/dist/v2/models/savedFilter.js.map +1 -1
  711. package/dist/v2/patterns/ActionBar.js +152 -187
  712. package/dist/v2/patterns/ActionBar.js.map +1 -1
  713. package/dist/v2/patterns/AppMain.d.ts +109 -0
  714. package/dist/v2/patterns/AppMain.d.ts.map +1 -0
  715. package/dist/v2/patterns/AppMain.js +115 -0
  716. package/dist/v2/patterns/AppMain.js.map +1 -0
  717. package/dist/v2/patterns/BulkActionBar.js +40 -42
  718. package/dist/v2/patterns/BulkActionBar.js.map +1 -1
  719. package/dist/v2/patterns/ChartFigure.d.ts +124 -0
  720. package/dist/v2/patterns/ChartFigure.d.ts.map +1 -0
  721. package/dist/v2/patterns/ChartFigure.js +159 -0
  722. package/dist/v2/patterns/ChartFigure.js.map +1 -0
  723. package/dist/v2/patterns/CollapsibleDataGrid.js +138 -174
  724. package/dist/v2/patterns/CollapsibleDataGrid.js.map +1 -1
  725. package/dist/v2/patterns/ColumnsToggle.js +60 -94
  726. package/dist/v2/patterns/ColumnsToggle.js.map +1 -1
  727. package/dist/v2/patterns/DataGrid.d.ts.map +1 -1
  728. package/dist/v2/patterns/DataGrid.js +262 -297
  729. package/dist/v2/patterns/DataGrid.js.map +1 -1
  730. package/dist/v2/patterns/DataGridSettingsMenu.d.ts +12 -0
  731. package/dist/v2/patterns/DataGridSettingsMenu.d.ts.map +1 -1
  732. package/dist/v2/patterns/DataGridSettingsMenu.js +104 -121
  733. package/dist/v2/patterns/DataGridSettingsMenu.js.map +1 -1
  734. package/dist/v2/patterns/DataGridToolbar.js +103 -106
  735. package/dist/v2/patterns/DataGridToolbar.js.map +1 -1
  736. package/dist/v2/patterns/DataGridVirtualized.js +179 -217
  737. package/dist/v2/patterns/DataGridVirtualized.js.map +1 -1
  738. package/dist/v2/patterns/DeleteResourceConfirmDialog.js +32 -35
  739. package/dist/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
  740. package/dist/v2/patterns/DetailSplit.d.ts +87 -0
  741. package/dist/v2/patterns/DetailSplit.d.ts.map +1 -0
  742. package/dist/v2/patterns/DetailSplit.js +116 -0
  743. package/dist/v2/patterns/DetailSplit.js.map +1 -0
  744. package/dist/v2/patterns/FavoriteColumn.js +22 -23
  745. package/dist/v2/patterns/FavoriteColumn.js.map +1 -1
  746. package/dist/v2/patterns/FavoritesFilter.js +36 -44
  747. package/dist/v2/patterns/FavoritesFilter.js.map +1 -1
  748. package/dist/v2/patterns/FilterTabBar.d.ts +28 -0
  749. package/dist/v2/patterns/FilterTabBar.d.ts.map +1 -0
  750. package/dist/v2/patterns/FilterTabBar.js +120 -0
  751. package/dist/v2/patterns/FilterTabBar.js.map +1 -0
  752. package/dist/v2/patterns/FormErrorSummary.js +20 -23
  753. package/dist/v2/patterns/FormErrorSummary.js.map +1 -1
  754. package/dist/v2/patterns/FormPageShell.js +53 -50
  755. package/dist/v2/patterns/FormPageShell.js.map +1 -1
  756. package/dist/v2/patterns/FormSection.d.ts +8 -3
  757. package/dist/v2/patterns/FormSection.d.ts.map +1 -1
  758. package/dist/v2/patterns/FormSection.js +44 -51
  759. package/dist/v2/patterns/FormSection.js.map +1 -1
  760. package/dist/v2/patterns/FormikCheckbox.js +36 -45
  761. package/dist/v2/patterns/FormikCheckbox.js.map +1 -1
  762. package/dist/v2/patterns/FormikCheckboxGroup.d.ts +17 -1
  763. package/dist/v2/patterns/FormikCheckboxGroup.d.ts.map +1 -1
  764. package/dist/v2/patterns/FormikCheckboxGroup.js +62 -65
  765. package/dist/v2/patterns/FormikCheckboxGroup.js.map +1 -1
  766. package/dist/v2/patterns/FormikCombobox.js +55 -72
  767. package/dist/v2/patterns/FormikCombobox.js.map +1 -1
  768. package/dist/v2/patterns/FormikDatePicker.js +50 -64
  769. package/dist/v2/patterns/FormikDatePicker.js.map +1 -1
  770. package/dist/v2/patterns/FormikDateTimePicker.js +50 -64
  771. package/dist/v2/patterns/FormikDateTimePicker.js.map +1 -1
  772. package/dist/v2/patterns/FormikErrorFocus.js +25 -26
  773. package/dist/v2/patterns/FormikErrorFocus.js.map +1 -1
  774. package/dist/v2/patterns/FormikErrorSummary.d.ts +74 -0
  775. package/dist/v2/patterns/FormikErrorSummary.d.ts.map +1 -0
  776. package/dist/v2/patterns/FormikErrorSummary.js +97 -0
  777. package/dist/v2/patterns/FormikErrorSummary.js.map +1 -0
  778. package/dist/v2/patterns/FormikFile.d.ts +14 -1
  779. package/dist/v2/patterns/FormikFile.d.ts.map +1 -1
  780. package/dist/v2/patterns/FormikFile.js +99 -83
  781. package/dist/v2/patterns/FormikFile.js.map +1 -1
  782. package/dist/v2/patterns/FormikInput.js +45 -58
  783. package/dist/v2/patterns/FormikInput.js.map +1 -1
  784. package/dist/v2/patterns/FormikRadioGroup.js +45 -56
  785. package/dist/v2/patterns/FormikRadioGroup.js.map +1 -1
  786. package/dist/v2/patterns/FormikReferentielField.d.ts +12 -1
  787. package/dist/v2/patterns/FormikReferentielField.d.ts.map +1 -1
  788. package/dist/v2/patterns/FormikReferentielField.js +54 -64
  789. package/dist/v2/patterns/FormikReferentielField.js.map +1 -1
  790. package/dist/v2/patterns/FormikSelect.js +70 -92
  791. package/dist/v2/patterns/FormikSelect.js.map +1 -1
  792. package/dist/v2/patterns/FormikTextarea.js +35 -51
  793. package/dist/v2/patterns/FormikTextarea.js.map +1 -1
  794. package/dist/v2/patterns/KeyboardShortcutsHelp.js +60 -80
  795. package/dist/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
  796. package/dist/v2/patterns/NetworkErrorBanner.js +13 -16
  797. package/dist/v2/patterns/NetworkErrorBanner.js.map +1 -1
  798. package/dist/v2/patterns/PageContent.js +17 -20
  799. package/dist/v2/patterns/PageContent.js.map +1 -1
  800. package/dist/v2/patterns/PreviewDrawer.d.ts +49 -0
  801. package/dist/v2/patterns/PreviewDrawer.d.ts.map +1 -0
  802. package/dist/v2/patterns/PreviewDrawer.js +159 -0
  803. package/dist/v2/patterns/PreviewDrawer.js.map +1 -0
  804. package/dist/v2/patterns/ReferentielField.d.ts +86 -2
  805. package/dist/v2/patterns/ReferentielField.d.ts.map +1 -1
  806. package/dist/v2/patterns/ReferentielField.js +347 -327
  807. package/dist/v2/patterns/ReferentielField.js.map +1 -1
  808. package/dist/v2/patterns/RowFavoriteToggle.d.ts +6 -0
  809. package/dist/v2/patterns/RowFavoriteToggle.d.ts.map +1 -1
  810. package/dist/v2/patterns/RowFavoriteToggle.js +38 -30
  811. package/dist/v2/patterns/RowFavoriteToggle.js.map +1 -1
  812. package/dist/v2/patterns/SaveFilterDialog.js +50 -77
  813. package/dist/v2/patterns/SaveFilterDialog.js.map +1 -1
  814. package/dist/v2/patterns/SavedFiltersMenu.js +89 -107
  815. package/dist/v2/patterns/SavedFiltersMenu.js.map +1 -1
  816. package/dist/v2/patterns/SkeletonPageShell.js +122 -143
  817. package/dist/v2/patterns/SkeletonPageShell.js.map +1 -1
  818. package/dist/v2/patterns/SortableHeader.js +35 -57
  819. package/dist/v2/patterns/SortableHeader.js.map +1 -1
  820. package/dist/v2/patterns/Tour.js +121 -142
  821. package/dist/v2/patterns/Tour.js.map +1 -1
  822. package/dist/v2/patterns/_dataGridShared.d.ts.map +1 -1
  823. package/dist/v2/patterns/_dataGridShared.js +131 -147
  824. package/dist/v2/patterns/_dataGridShared.js.map +1 -1
  825. package/dist/v2/patterns/_pickerSerialisation.js +9 -10
  826. package/dist/v2/patterns/_pickerSerialisation.js.map +1 -1
  827. package/dist/v2/patterns/_sort.js +17 -33
  828. package/dist/v2/patterns/_sort.js.map +1 -1
  829. package/dist/v2/patterns/_useColumnReorder.js +124 -163
  830. package/dist/v2/patterns/_useColumnReorder.js.map +1 -1
  831. package/dist/v2/patterns/_useColumnResize.js +80 -99
  832. package/dist/v2/patterns/_useColumnResize.js.map +1 -1
  833. package/dist/v2/patterns/filterCriteria.d.ts +78 -0
  834. package/dist/v2/patterns/filterCriteria.d.ts.map +1 -0
  835. package/dist/v2/patterns/filterCriteria.js +110 -0
  836. package/dist/v2/patterns/filterCriteria.js.map +1 -0
  837. package/dist/v2/patterns/index.d.ts +160 -0
  838. package/dist/v2/patterns/index.d.ts.map +1 -1
  839. package/dist/v2/patterns/index.js +157 -79
  840. package/dist/v2/patterns/index.js.map +1 -1
  841. package/dist/v2/patterns/rowActions.d.ts +150 -0
  842. package/dist/v2/patterns/rowActions.d.ts.map +1 -0
  843. package/dist/v2/patterns/rowActions.js +232 -0
  844. package/dist/v2/patterns/rowActions.js.map +1 -0
  845. package/dist/v2/personalization/PersonalizationProvider.d.ts.map +1 -1
  846. package/dist/v2/personalization/PersonalizationProvider.js +57 -53
  847. package/dist/v2/personalization/PersonalizationProvider.js.map +1 -1
  848. package/dist/v2/personalization/adapters/_storageKey.js +5 -5
  849. package/dist/v2/personalization/adapters/_storageKey.js.map +1 -1
  850. package/dist/v2/personalization/adapters/createLocalStorageAdapter.js +25 -24
  851. package/dist/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
  852. package/dist/v2/personalization/adapters/createMemoryAdapter.js +14 -14
  853. package/dist/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
  854. package/dist/v2/personalization/adapters/index.js +5 -5
  855. package/dist/v2/personalization/adapters/index.js.map +1 -1
  856. package/dist/v2/personalization/capabilities/favorites.js +39 -62
  857. package/dist/v2/personalization/capabilities/favorites.js.map +1 -1
  858. package/dist/v2/personalization/capabilities/favoritesView.js +25 -37
  859. package/dist/v2/personalization/capabilities/favoritesView.js.map +1 -1
  860. package/dist/v2/personalization/capabilities/gridPreferences.js +31 -36
  861. package/dist/v2/personalization/capabilities/gridPreferences.js.map +1 -1
  862. package/dist/v2/personalization/capabilities/index.js +12 -12
  863. package/dist/v2/personalization/capabilities/reviveSavedCriteria.d.ts +88 -0
  864. package/dist/v2/personalization/capabilities/reviveSavedCriteria.d.ts.map +1 -0
  865. package/dist/v2/personalization/capabilities/reviveSavedCriteria.js +126 -0
  866. package/dist/v2/personalization/capabilities/reviveSavedCriteria.js.map +1 -0
  867. package/dist/v2/personalization/capabilities/savedFilters.js +93 -100
  868. package/dist/v2/personalization/capabilities/savedFilters.js.map +1 -1
  869. package/dist/v2/personalization/createPersonalizationStore.d.ts.map +1 -1
  870. package/dist/v2/personalization/createPersonalizationStore.js +81 -182
  871. package/dist/v2/personalization/createPersonalizationStore.js.map +1 -1
  872. package/dist/v2/personalization/index.d.ts +16 -0
  873. package/dist/v2/personalization/index.d.ts.map +1 -1
  874. package/dist/v2/personalization/index.js +30 -23
  875. package/dist/v2/personalization/index.js.map +1 -1
  876. package/dist/v2/personalization/personalizationContext.js +10 -12
  877. package/dist/v2/personalization/personalizationContext.js.map +1 -1
  878. package/dist/v2/personalization/schema.js +8 -9
  879. package/dist/v2/personalization/schema.js.map +1 -1
  880. package/dist/v2/referentiel/ReferentielProvider.js +31 -45
  881. package/dist/v2/referentiel/ReferentielProvider.js.map +1 -1
  882. package/dist/v2/referentiel/index.js +11 -13
  883. package/dist/v2/referentiel/index.js.map +1 -1
  884. package/dist/v2/referentiel/types.d.ts +105 -0
  885. package/dist/v2/referentiel/types.d.ts.map +1 -0
  886. package/dist/v2/referentiel/types.js +6 -0
  887. package/dist/v2/referentiel/types.js.map +1 -0
  888. package/dist/v2/referentiel/useReferentielClient.js +13 -16
  889. package/dist/v2/referentiel/useReferentielClient.js.map +1 -1
  890. package/dist/v2/referentiel/useReferentielOptions.d.ts +7 -17
  891. package/dist/v2/referentiel/useReferentielOptions.d.ts.map +1 -1
  892. package/dist/v2/referentiel/useReferentielOptions.js +63 -120
  893. package/dist/v2/referentiel/useReferentielOptions.js.map +1 -1
  894. package/dist/v2/referentiel/useReferentielSearch.d.ts +7 -48
  895. package/dist/v2/referentiel/useReferentielSearch.d.ts.map +1 -1
  896. package/dist/v2/referentiel/useReferentielSearch.js +40 -95
  897. package/dist/v2/referentiel/useReferentielSearch.js.map +1 -1
  898. package/dist/v2/theme/_brand.js +12 -26
  899. package/dist/v2/theme/_brand.js.map +1 -1
  900. package/dist/v2/theme/_brandSecondary.js +12 -26
  901. package/dist/v2/theme/_brandSecondary.js.map +1 -1
  902. package/dist/v2/theme/createPortnetTheme.js +41 -49
  903. package/dist/v2/theme/createPortnetTheme.js.map +1 -1
  904. package/dist/v2/theme/cssVariables.d.ts +3 -3
  905. package/dist/v2/theme/cssVariables.d.ts.map +1 -1
  906. package/dist/v2/theme/cssVariables.js +65 -70
  907. package/dist/v2/theme/cssVariables.js.map +1 -1
  908. package/dist/v2/theme/index.js +10 -10
  909. package/dist/v2/theme/index.js.map +1 -1
  910. package/dist/v2/tokens/breakpoints.js +16 -16
  911. package/dist/v2/tokens/breakpoints.js.map +1 -1
  912. package/dist/v2/tokens/chart.d.ts +103 -0
  913. package/dist/v2/tokens/chart.d.ts.map +1 -0
  914. package/dist/v2/tokens/chart.js +270 -0
  915. package/dist/v2/tokens/chart.js.map +1 -0
  916. package/dist/v2/tokens/colors.js +24 -24
  917. package/dist/v2/tokens/colors.js.map +1 -1
  918. package/dist/v2/tokens/density.d.ts +104 -0
  919. package/dist/v2/tokens/density.d.ts.map +1 -1
  920. package/dist/v2/tokens/density.js +67 -12
  921. package/dist/v2/tokens/density.js.map +1 -1
  922. package/dist/v2/tokens/index.d.ts +50 -1
  923. package/dist/v2/tokens/index.d.ts.map +1 -1
  924. package/dist/v2/tokens/index.js +116 -68
  925. package/dist/v2/tokens/index.js.map +1 -1
  926. package/dist/v2/tokens/motion.js +16 -22
  927. package/dist/v2/tokens/motion.js.map +1 -1
  928. package/dist/v2/tokens/radius.js +3 -3
  929. package/dist/v2/tokens/radius.js.map +1 -1
  930. package/dist/v2/tokens/shadows.js +8 -8
  931. package/dist/v2/tokens/shadows.js.map +1 -1
  932. package/dist/v2/tokens/spacing.js +4 -4
  933. package/dist/v2/tokens/spacing.js.map +1 -1
  934. package/dist/v2/tokens/state.js +3 -3
  935. package/dist/v2/tokens/state.js.map +1 -1
  936. package/dist/v2/tokens/statusPalette.js +21 -23
  937. package/dist/v2/tokens/statusPalette.js.map +1 -1
  938. package/dist/v2/tokens/tokens.json +6 -1
  939. package/dist/v2/tokens/typography.js +15 -15
  940. package/dist/v2/tokens/typography.js.map +1 -1
  941. package/dist/v2/tokens/zIndex.js +3 -3
  942. package/dist/v2/tokens/zIndex.js.map +1 -1
  943. package/dist/v2/types/datagrid.d.ts +9 -1
  944. package/dist/v2/types/datagrid.d.ts.map +1 -1
  945. package/dist/v2/types/datagrid.js.map +1 -1
  946. package/dist/v2/types/index.js +2 -2
  947. package/dist/v2/types/index.js.map +1 -1
  948. package/dist/v2/utils/apiError.js +16 -37
  949. package/dist/v2/utils/apiError.js.map +1 -1
  950. package/dist/v2/utils/contrast.js +31 -32
  951. package/dist/v2/utils/contrast.js.map +1 -1
  952. package/dist/v2/utils/cx.js +7 -27
  953. package/dist/v2/utils/cx.js.map +1 -1
  954. package/dist/v2/utils/fileDownload.js +25 -28
  955. package/dist/v2/utils/fileDownload.js.map +1 -1
  956. package/dist/v2/utils/fileValidation.d.ts +116 -0
  957. package/dist/v2/utils/fileValidation.d.ts.map +1 -0
  958. package/dist/v2/utils/fileValidation.js +220 -0
  959. package/dist/v2/utils/fileValidation.js.map +1 -0
  960. package/dist/v2/utils/fmtDate.d.ts +103 -0
  961. package/dist/v2/utils/fmtDate.d.ts.map +1 -0
  962. package/dist/v2/utils/fmtDate.js +119 -0
  963. package/dist/v2/utils/fmtDate.js.map +1 -0
  964. package/dist/v2/utils/fmtMoney.d.ts +3 -3
  965. package/dist/v2/utils/fmtMoney.d.ts.map +1 -1
  966. package/dist/v2/utils/fmtMoney.js +9 -11
  967. package/dist/v2/utils/fmtMoney.js.map +1 -1
  968. package/dist/v2/utils/formikErrors.d.ts +67 -0
  969. package/dist/v2/utils/formikErrors.d.ts.map +1 -0
  970. package/dist/v2/utils/formikErrors.js +85 -0
  971. package/dist/v2/utils/formikErrors.js.map +1 -0
  972. package/dist/v2/utils/index.d.ts +5 -0
  973. package/dist/v2/utils/index.d.ts.map +1 -1
  974. package/dist/v2/utils/index.js +67 -18
  975. package/dist/v2/utils/index.js.map +1 -1
  976. package/dist/v2/utils/mergeLabels.js +9 -14
  977. package/dist/v2/utils/mergeLabels.js.map +1 -1
  978. package/dist/v2/utils/networkStatus.js +14 -14
  979. package/dist/v2/utils/networkStatus.js.map +1 -1
  980. package/package.json +26 -9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gap-leakage-refonte.test.js","names":["_react","require","_formikErrors","_useDebouncedCallback","_interopRequireDefault","e","__esModule","default","describe","test","expect","flattenFormikErrors","nom","ifu","toEqual","name","message","importateur","positionSh","beneficiaires","errors","lignes","undefined","qte","a","b","c","d","beforeEach","jest","useFakeTimers","afterEach","useRealTimers","action","fn","result","renderHook","useDebouncedCallback","act","current","not","toHaveBeenCalled","advanceTimersByTime","toHaveBeenCalledTimes","toHaveBeenCalledWith","rerender","initialProps","first","toBe","stale","fresh","unmount"],"sources":["../../../src/lib/v2/__tests__/gap-leakage-refonte.test.tsx"],"sourcesContent":["/**\r\n * @jest-environment jsdom\r\n */\r\nimport { renderHook, act } from \"@testing-library/react\";\r\nimport { flattenFormikErrors } from \"../utils/formikErrors\";\r\nimport useDebouncedCallback from \"../hooks/useDebouncedCallback\";\r\n\r\n/*\r\n * L'EN-TETE `@jest-environment jsdom` CI-DESSUS EST NECESSAIRE, PAS DECORATIF.\r\n *\r\n * Les autres tests de composants de ce dossier n'en portent pas : ils ne\r\n * tournent que par `react-scripts test`, qui impose jsdom par configuration.\r\n * Lance par `npx jest`, l'environnement retombe sur `node` et TOUT rendu React\r\n * echoue sur `ReferenceError: document is not defined` - ce qui est arrive a ce\r\n * fichier, et le message de Jest accuse alors le test plutot que le runner.\r\n *\r\n * Le bloc rend ce fichier independant du runner : il passe par les deux voies.\r\n * Les tests de `flattenFormikErrors` sont purs et n'en ont pas besoin, mais un\r\n * environnement par fichier est le grain de Jest, et separer les deux moities\r\n * en deux fichiers pour cette seule raison couterait plus que cette note.\r\n */\r\n\r\n/**\r\n * Two capabilities promoted out of `refonte-frontend` (Area 5 — gap leakage).\r\n *\r\n * Both were module-local, both are pure platform concerns, and both had a\r\n * failure mode that is INVISIBLE at the call site — which is the argument for\r\n * owning them here and the reason each gets a test rather than a docstring.\r\n */\r\n\r\ndescribe(\"flattenFormikErrors (G-38)\", () => {\r\n test(\"flat errors pass through\", () => {\r\n expect(flattenFormikErrors({ nom: \"Requis\", ifu: \"Format invalide\" })).toEqual([\r\n { name: \"nom\", message: \"Requis\" },\r\n { name: \"ifu\", message: \"Format invalide\" },\r\n ]);\r\n });\r\n\r\n /**\r\n * THE PATH IS THE WHOLE POINT. `FormErrorSummary.onItemClick` hands this\r\n * string to `focusFieldByName`, which resolves it as `[name=\"…\"]`. A\r\n * separator dropped here produces a banner that lists the right message and\r\n * whose jump button does nothing.\r\n */\r\n test(\"nested objects accumulate a dotted Formik path\", () => {\r\n expect(\r\n flattenFormikErrors({ importateur: { positionSh: \"Requis\" } })\r\n ).toEqual([{ name: \"importateur.positionSh\", message: \"Requis\" }]);\r\n });\r\n\r\n /**\r\n * Yup.array() keys its errors by index, and Formik writes the field name as\r\n * `beneficiaires.0.nom` — dot, not bracket. `beneficiaires[0].nom` would read\r\n * more naturally and match no node in the DOM.\r\n */\r\n test(\"array errors are indexed with a dot, matching Formik's own field names\", () => {\r\n expect(\r\n flattenFormikErrors({ beneficiaires: [{ nom: \"Requis\" }, { ifu: \"Trop court\" }] })\r\n ).toEqual([\r\n { name: \"beneficiaires.0.nom\", message: \"Requis\" },\r\n { name: \"beneficiaires.1.ifu\", message: \"Trop court\" },\r\n ]);\r\n });\r\n\r\n test(\"sparse arrays skip their holes instead of emitting empty items\", () => {\r\n const errors = { lignes: [undefined, { qte: \"Requis\" }] };\r\n expect(flattenFormikErrors(errors)).toEqual([\r\n { name: \"lignes.1.qte\", message: \"Requis\" },\r\n ]);\r\n });\r\n\r\n /**\r\n * A clickable summary line with no text lists no reason and still steals a\r\n * click, so an empty leaf yields nothing at all.\r\n */\r\n test(\"empty and non-string leaves yield nothing\", () => {\r\n expect(flattenFormikErrors({ a: \"\", b: null, c: false, d: 0 })).toEqual([]);\r\n });\r\n\r\n test(\"nullish and primitive input yield an empty list, never a throw\", () => {\r\n expect(flattenFormikErrors(undefined)).toEqual([]);\r\n expect(flattenFormikErrors(null)).toEqual([]);\r\n expect(flattenFormikErrors(\"Requis\")).toEqual([]);\r\n });\r\n});\r\n\r\ndescribe(\"useDebouncedCallback (G-39)\", () => {\r\n beforeEach(() => {\r\n jest.useFakeTimers();\r\n });\r\n afterEach(() => {\r\n jest.useRealTimers();\r\n });\r\n\r\n test(\"fires once, after the delay, with the last value\", () => {\r\n const action = jest.fn();\r\n const { result } = renderHook(() => useDebouncedCallback<string>(action, 400));\r\n act(() => {\r\n result.current(\"a\");\r\n result.current(\"ab\");\r\n result.current(\"abc\");\r\n });\r\n\r\n expect(action).not.toHaveBeenCalled();\r\n act(() => {\r\n jest.advanceTimersByTime(400);\r\n });\r\n expect(action).toHaveBeenCalledTimes(1);\r\n expect(action).toHaveBeenCalledWith(\"abc\");\r\n });\r\n\r\n /**\r\n * DEFECT 2 OF THE `lodash.debounce` ERA, asserted. Calling `debounce(...)` in\r\n * a render body produced a new instance per render, each with its own timer:\r\n * every keystroke fired, late. A stable identity is what makes that\r\n * impossible, so it is pinned here rather than left to the docstring.\r\n */\r\n test(\"the returned trigger keeps a stable identity across re-renders\", () => {\r\n const { result, rerender } = renderHook(\r\n ({ action }) => useDebouncedCallback<string>(action, 400),\r\n { initialProps: { action: jest.fn() } }\r\n );\r\n const first = result.current;\r\n rerender({ action: jest.fn() });\r\n expect(result.current).toBe(first);\r\n });\r\n\r\n /** The trigger is stable, so it must still reach the LATEST action. */\r\n test(\"invokes the latest action, not a stale closure\", () => {\r\n const stale = jest.fn();\r\n const fresh = jest.fn();\r\n const { result, rerender } = renderHook(\r\n ({ action }) => useDebouncedCallback<string>(action, 400),\r\n { initialProps: { action: stale } }\r\n );\r\n\r\n rerender({ action: fresh });\r\n act(() => {\r\n result.current(\"x\");\r\n jest.advanceTimersByTime(400);\r\n });\r\n\r\n expect(stale).not.toHaveBeenCalled();\r\n expect(fresh).toHaveBeenCalledWith(\"x\");\r\n });\r\n\r\n test(\"the default delay is 500 ms — the value promoted from the module\", () => {\r\n const action = jest.fn();\r\n const { result } = renderHook(() => useDebouncedCallback<string>(action));\r\n\r\n act(() => {\r\n result.current(\"x\");\r\n jest.advanceTimersByTime(499);\r\n });\r\n expect(action).not.toHaveBeenCalled();\r\n\r\n act(() => {\r\n jest.advanceTimersByTime(1);\r\n });\r\n expect(action).toHaveBeenCalledWith(\"x\");\r\n });\r\n\r\n /** Defect 3: a pending timer firing after unmount set state on a dead tree. */\r\n test(\"a pending call is cancelled on unmount\", () => {\r\n const action = jest.fn();\r\n const { result, unmount } = renderHook(() =>\r\n useDebouncedCallback<string>(action, 400)\r\n );\r\n\r\n act(() => {\r\n result.current(\"x\");\r\n });\r\n unmount();\r\n act(() => {\r\n jest.advanceTimersByTime(1000);\r\n });\r\n\r\n expect(action).not.toHaveBeenCalled();\r\n });\r\n});\r\n"],"mappings":"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","ignoreList":[]}
@@ -4,7 +4,7 @@ require("@testing-library/jest-dom");
4
4
  var _react = require("@testing-library/react");
5
5
  var _DataGrid = _interopRequireDefault(require("../patterns/DataGrid"));
6
6
  var _jsxRuntime = require("react/jsx-runtime");
7
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
7
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
8
8
  /**
9
9
  * Verifies the deep-merge contract for the `labels` prop pattern
10
10
  * shared by 17 components / patterns in v2 (Batches 4-7).
@@ -16,16 +16,14 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
16
16
  * not replace it.
17
17
  */
18
18
 
19
- describe("DataGrid — labels deep-merge contract", function () {
20
- var baseRows = Array.from({
19
+ describe("DataGrid — labels deep-merge contract", () => {
20
+ const baseRows = Array.from({
21
21
  length: 10
22
- }, function (_, i) {
23
- return {
24
- id: i + 1
25
- };
26
- });
27
- test("with no labels prop, all defaults render in French", function () {
28
- (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_DataGrid["default"], {
22
+ }, (_, i) => ({
23
+ id: i + 1
24
+ }));
25
+ test("with no labels prop, all defaults render in French", () => {
26
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_DataGrid.default, {
29
27
  rows: baseRows,
30
28
  columns: [{
31
29
  key: "id",
@@ -35,7 +33,7 @@ describe("DataGrid — labels deep-merge contract", function () {
35
33
  page: 1,
36
34
  pageSize: 25,
37
35
  total: 100,
38
- onPageChange: function onPageChange() {}
36
+ onPageChange: () => {}
39
37
  }
40
38
  }));
41
39
 
@@ -45,8 +43,8 @@ describe("DataGrid — labels deep-merge contract", function () {
45
43
  expect(_react.screen.getByLabelText("Page suivante")).toBeInTheDocument();
46
44
  expect(_react.screen.getByLabelText("Dernière page")).toBeInTheDocument();
47
45
  });
48
- test("partial labels.pagination merges onto FR defaults — overridden keys win", function () {
49
- (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_DataGrid["default"], {
46
+ test("partial labels.pagination merges onto FR defaults — overridden keys win", () => {
47
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_DataGrid.default, {
50
48
  rows: baseRows,
51
49
  columns: [{
52
50
  key: "id",
@@ -56,7 +54,7 @@ describe("DataGrid — labels deep-merge contract", function () {
56
54
  page: 1,
57
55
  pageSize: 25,
58
56
  total: 100,
59
- onPageChange: function onPageChange() {}
57
+ onPageChange: () => {}
60
58
  },
61
59
  labels: {
62
60
  pagination: {
@@ -75,8 +73,8 @@ describe("DataGrid — labels deep-merge contract", function () {
75
73
  expect(_react.screen.getByLabelText("Page suivante")).toBeInTheDocument();
76
74
  expect(_react.screen.getByLabelText("Dernière page")).toBeInTheDocument();
77
75
  });
78
- test("partial top-level labels merge onto FR defaults", function () {
79
- (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_DataGrid["default"], {
76
+ test("partial top-level labels merge onto FR defaults", () => {
77
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_DataGrid.default, {
80
78
  rows: baseRows,
81
79
  columns: [{
82
80
  key: "id",
@@ -86,9 +84,9 @@ describe("DataGrid — labels deep-merge contract", function () {
86
84
  page: 1,
87
85
  pageSize: 25,
88
86
  total: 100,
89
- onPageChange: function onPageChange() {}
87
+ onPageChange: () => {}
90
88
  },
91
- onSelectionChange: function onSelectionChange() {},
89
+ onSelectionChange: () => {},
92
90
  labels: {
93
91
  tableAria: "My table"
94
92
  // selectAll, selectRow, pagination NOT provided — defaults stand.
@@ -100,8 +98,8 @@ describe("DataGrid — labels deep-merge contract", function () {
100
98
  // Default pagination FR survives
101
99
  expect(_react.screen.getByLabelText("Première page")).toBeInTheDocument();
102
100
  });
103
- test("legacy ariaLabel prop wins over labels.tableAria (back-compat contract)", function () {
104
- (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_DataGrid["default"], {
101
+ test("legacy ariaLabel prop wins over labels.tableAria (back-compat contract)", () => {
102
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_DataGrid.default, {
105
103
  rows: baseRows,
106
104
  columns: [{
107
105
  key: "id",
@@ -111,7 +109,7 @@ describe("DataGrid — labels deep-merge contract", function () {
111
109
  page: 1,
112
110
  pageSize: 25,
113
111
  total: 100,
114
- onPageChange: function onPageChange() {}
112
+ onPageChange: () => {}
115
113
  },
116
114
  ariaLabel: "Legacy wins",
117
115
  labels: {
@@ -122,8 +120,8 @@ describe("DataGrid — labels deep-merge contract", function () {
122
120
  // The labels.tableAria value should NOT appear
123
121
  expect(_react.screen.queryByLabelText("New label")).not.toBeInTheDocument();
124
122
  });
125
- test("rangeOf custom function reaches the rendered range text", function () {
126
- (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_DataGrid["default"], {
123
+ test("rangeOf custom function reaches the rendered range text", () => {
124
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_DataGrid.default, {
127
125
  rows: baseRows,
128
126
  columns: [{
129
127
  key: "id",
@@ -133,13 +131,11 @@ describe("DataGrid — labels deep-merge contract", function () {
133
131
  page: 1,
134
132
  pageSize: 25,
135
133
  total: 100,
136
- onPageChange: function onPageChange() {}
134
+ onPageChange: () => {}
137
135
  },
138
136
  labels: {
139
137
  pagination: {
140
- rangeOf: function rangeOf(from, to, total) {
141
- return "Showing ".concat(from, " to ").concat(to, " of ").concat(total);
142
- }
138
+ rangeOf: (from, to, total) => `Showing ${from} to ${to} of ${total}`
143
139
  }
144
140
  }
145
141
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"labels-merge.test.js","names":["require","_react","_DataGrid","_interopRequireDefault","_jsxRuntime","obj","__esModule","describe","baseRows","Array","from","length","_","i","id","test","render","jsx","rows","columns","key","header","pagination","page","pageSize","total","onPageChange","expect","screen","getByLabelText","toBeInTheDocument","labels","firstPage","onSelectionChange","tableAria","ariaLabel","queryByLabelText","not","rangeOf","to","concat","getByText"],"sources":["../../../src/lib/v2/__tests__/labels-merge.test.tsx"],"sourcesContent":["import \"@testing-library/jest-dom\";\r\nimport { render, screen } from \"@testing-library/react\";\r\nimport DataGrid from \"../patterns/DataGrid\";\r\n\r\n/**\r\n * Verifies the deep-merge contract for the `labels` prop pattern\r\n * shared by 17 components / patterns in v2 (Batches 4-7).\r\n *\r\n * DataGrid is the canonical test subject because it has the deepest\r\n * label surface (top-level keys + nested `pagination.*`). The\r\n * Object.freeze on DEFAULT_LABELS protects against accidental\r\n * mutation; the mergeLabels helper must spread the nested object,\r\n * not replace it.\r\n */\r\ninterface Row {\r\n id: number;\r\n}\r\n\r\ndescribe(\"DataGrid — labels deep-merge contract\", () => {\r\n const baseRows: Row[] = Array.from({ length: 10 }, (_, i): Row => ({\r\n id: i + 1,\r\n }));\r\n\r\n test(\"with no labels prop, all defaults render in French\", () => {\r\n render(\r\n <DataGrid\r\n rows={baseRows}\r\n columns={[{ key: \"id\", header: \"ID\" }]}\r\n pagination={{ page: 1, pageSize: 25, total: 100, onPageChange: () => {} }}\r\n />\r\n );\r\n\r\n // Pagination FR defaults\r\n expect(screen.getByLabelText(\"Première page\")).toBeInTheDocument();\r\n expect(screen.getByLabelText(\"Page précédente\")).toBeInTheDocument();\r\n expect(screen.getByLabelText(\"Page suivante\")).toBeInTheDocument();\r\n expect(screen.getByLabelText(\"Dernière page\")).toBeInTheDocument();\r\n });\r\n\r\n test(\"partial labels.pagination merges onto FR defaults — overridden keys win\", () => {\r\n render(\r\n <DataGrid\r\n rows={baseRows}\r\n columns={[{ key: \"id\", header: \"ID\" }]}\r\n pagination={{ page: 1, pageSize: 25, total: 100, onPageChange: () => {} }}\r\n labels={{\r\n pagination: {\r\n firstPage: \"First!\",\r\n // lastPage, previousPage, nextPage, loading, rowsPerPage,\r\n // rangeOf NOT provided — must fall back to FR defaults.\r\n },\r\n }}\r\n />\r\n );\r\n\r\n // Custom override applied\r\n expect(screen.getByLabelText(\"First!\")).toBeInTheDocument();\r\n\r\n // FR defaults preserved (the regression class this test guards)\r\n expect(screen.getByLabelText(\"Page précédente\")).toBeInTheDocument();\r\n expect(screen.getByLabelText(\"Page suivante\")).toBeInTheDocument();\r\n expect(screen.getByLabelText(\"Dernière page\")).toBeInTheDocument();\r\n });\r\n\r\n test(\"partial top-level labels merge onto FR defaults\", () => {\r\n render(\r\n <DataGrid\r\n rows={baseRows}\r\n columns={[{ key: \"id\", header: \"ID\" }]}\r\n pagination={{ page: 1, pageSize: 25, total: 100, onPageChange: () => {} }}\r\n onSelectionChange={() => {}}\r\n labels={{\r\n tableAria: \"My table\",\r\n // selectAll, selectRow, pagination NOT provided — defaults stand.\r\n }}\r\n />\r\n );\r\n\r\n expect(screen.getByLabelText(\"My table\")).toBeInTheDocument();\r\n // Default selectAll FR survives\r\n expect(screen.getByLabelText(\"Tout sélectionner\")).toBeInTheDocument();\r\n // Default pagination FR survives\r\n expect(screen.getByLabelText(\"Première page\")).toBeInTheDocument();\r\n });\r\n\r\n test(\"legacy ariaLabel prop wins over labels.tableAria (back-compat contract)\", () => {\r\n render(\r\n <DataGrid\r\n rows={baseRows}\r\n columns={[{ key: \"id\", header: \"ID\" }]}\r\n pagination={{ page: 1, pageSize: 25, total: 100, onPageChange: () => {} }}\r\n ariaLabel=\"Legacy wins\"\r\n labels={{ tableAria: \"New label\" }}\r\n />\r\n );\r\n\r\n expect(screen.getByLabelText(\"Legacy wins\")).toBeInTheDocument();\r\n // The labels.tableAria value should NOT appear\r\n expect(screen.queryByLabelText(\"New label\")).not.toBeInTheDocument();\r\n });\r\n\r\n test(\"rangeOf custom function reaches the rendered range text\", () => {\r\n render(\r\n <DataGrid\r\n rows={baseRows}\r\n columns={[{ key: \"id\", header: \"ID\" }]}\r\n pagination={{ page: 1, pageSize: 25, total: 100, onPageChange: () => {} }}\r\n labels={{\r\n pagination: {\r\n rangeOf: (from, to, total) => `Showing ${from} to ${to} of ${total}`,\r\n },\r\n }}\r\n />\r\n );\r\n\r\n expect(screen.getByText(/Showing 1 to 25 of 100/)).toBeInTheDocument();\r\n });\r\n});\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"labels-merge.test.js","names":["require","_react","_DataGrid","_interopRequireDefault","_jsxRuntime","e","__esModule","default","describe","baseRows","Array","from","length","_","i","id","test","render","jsx","rows","columns","key","header","pagination","page","pageSize","total","onPageChange","expect","screen","getByLabelText","toBeInTheDocument","labels","firstPage","onSelectionChange","tableAria","ariaLabel","queryByLabelText","not","rangeOf","to","getByText"],"sources":["../../../src/lib/v2/__tests__/labels-merge.test.tsx"],"sourcesContent":["import \"@testing-library/jest-dom\";\r\nimport { render, screen } from \"@testing-library/react\";\r\nimport DataGrid from \"../patterns/DataGrid\";\r\n\r\n/**\r\n * Verifies the deep-merge contract for the `labels` prop pattern\r\n * shared by 17 components / patterns in v2 (Batches 4-7).\r\n *\r\n * DataGrid is the canonical test subject because it has the deepest\r\n * label surface (top-level keys + nested `pagination.*`). The\r\n * Object.freeze on DEFAULT_LABELS protects against accidental\r\n * mutation; the mergeLabels helper must spread the nested object,\r\n * not replace it.\r\n */\r\ninterface Row {\r\n id: number;\r\n}\r\n\r\ndescribe(\"DataGrid — labels deep-merge contract\", () => {\r\n const baseRows: Row[] = Array.from({ length: 10 }, (_, i): Row => ({\r\n id: i + 1,\r\n }));\r\n\r\n test(\"with no labels prop, all defaults render in French\", () => {\r\n render(\r\n <DataGrid\r\n rows={baseRows}\r\n columns={[{ key: \"id\", header: \"ID\" }]}\r\n pagination={{ page: 1, pageSize: 25, total: 100, onPageChange: () => {} }}\r\n />\r\n );\r\n\r\n // Pagination FR defaults\r\n expect(screen.getByLabelText(\"Première page\")).toBeInTheDocument();\r\n expect(screen.getByLabelText(\"Page précédente\")).toBeInTheDocument();\r\n expect(screen.getByLabelText(\"Page suivante\")).toBeInTheDocument();\r\n expect(screen.getByLabelText(\"Dernière page\")).toBeInTheDocument();\r\n });\r\n\r\n test(\"partial labels.pagination merges onto FR defaults — overridden keys win\", () => {\r\n render(\r\n <DataGrid\r\n rows={baseRows}\r\n columns={[{ key: \"id\", header: \"ID\" }]}\r\n pagination={{ page: 1, pageSize: 25, total: 100, onPageChange: () => {} }}\r\n labels={{\r\n pagination: {\r\n firstPage: \"First!\",\r\n // lastPage, previousPage, nextPage, loading, rowsPerPage,\r\n // rangeOf NOT provided — must fall back to FR defaults.\r\n },\r\n }}\r\n />\r\n );\r\n\r\n // Custom override applied\r\n expect(screen.getByLabelText(\"First!\")).toBeInTheDocument();\r\n\r\n // FR defaults preserved (the regression class this test guards)\r\n expect(screen.getByLabelText(\"Page précédente\")).toBeInTheDocument();\r\n expect(screen.getByLabelText(\"Page suivante\")).toBeInTheDocument();\r\n expect(screen.getByLabelText(\"Dernière page\")).toBeInTheDocument();\r\n });\r\n\r\n test(\"partial top-level labels merge onto FR defaults\", () => {\r\n render(\r\n <DataGrid\r\n rows={baseRows}\r\n columns={[{ key: \"id\", header: \"ID\" }]}\r\n pagination={{ page: 1, pageSize: 25, total: 100, onPageChange: () => {} }}\r\n onSelectionChange={() => {}}\r\n labels={{\r\n tableAria: \"My table\",\r\n // selectAll, selectRow, pagination NOT provided — defaults stand.\r\n }}\r\n />\r\n );\r\n\r\n expect(screen.getByLabelText(\"My table\")).toBeInTheDocument();\r\n // Default selectAll FR survives\r\n expect(screen.getByLabelText(\"Tout sélectionner\")).toBeInTheDocument();\r\n // Default pagination FR survives\r\n expect(screen.getByLabelText(\"Première page\")).toBeInTheDocument();\r\n });\r\n\r\n test(\"legacy ariaLabel prop wins over labels.tableAria (back-compat contract)\", () => {\r\n render(\r\n <DataGrid\r\n rows={baseRows}\r\n columns={[{ key: \"id\", header: \"ID\" }]}\r\n pagination={{ page: 1, pageSize: 25, total: 100, onPageChange: () => {} }}\r\n ariaLabel=\"Legacy wins\"\r\n labels={{ tableAria: \"New label\" }}\r\n />\r\n );\r\n\r\n expect(screen.getByLabelText(\"Legacy wins\")).toBeInTheDocument();\r\n // The labels.tableAria value should NOT appear\r\n expect(screen.queryByLabelText(\"New label\")).not.toBeInTheDocument();\r\n });\r\n\r\n test(\"rangeOf custom function reaches the rendered range text\", () => {\r\n render(\r\n <DataGrid\r\n rows={baseRows}\r\n columns={[{ key: \"id\", header: \"ID\" }]}\r\n pagination={{ page: 1, pageSize: 25, total: 100, onPageChange: () => {} }}\r\n labels={{\r\n pagination: {\r\n rangeOf: (from, to, total) => `Showing ${from} to ${to} of ${total}`,\r\n },\r\n }}\r\n />\r\n );\r\n\r\n expect(screen.getByText(/Showing 1 to 25 of 100/)).toBeInTheDocument();\r\n });\r\n});\r\n"],"mappings":";;AAAAA,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAC,sBAAA,CAAAH,OAAA;AAA4C,IAAAI,WAAA,GAAAJ,OAAA;AAAA,SAAAG,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAKAG,QAAQ,CAAC,uCAAuC,EAAE,MAAM;EACtD,MAAMC,QAAe,GAAGC,KAAK,CAACC,IAAI,CAAC;IAAEC,MAAM,EAAE;EAAG,CAAC,EAAE,CAACC,CAAC,EAAEC,CAAC,MAAW;IACjEC,EAAE,EAAED,CAAC,GAAG;EACV,CAAC,CAAC,CAAC;EAEHE,IAAI,CAAC,oDAAoD,EAAE,MAAM;IAC/D,IAAAC,aAAM,eACJ,IAAAb,WAAA,CAAAc,GAAA,EAAChB,SAAA,CAAAK,OAAQ;MACPY,IAAI,EAAEV,QAAS;MACfW,OAAO,EAAE,CAAC;QAAEC,GAAG,EAAE,IAAI;QAAEC,MAAM,EAAE;MAAK,CAAC,CAAE;MACvCC,UAAU,EAAE;QAAEC,IAAI,EAAE,CAAC;QAAEC,QAAQ,EAAE,EAAE;QAAEC,KAAK,EAAE,GAAG;QAAEC,YAAY,EAAEA,CAAA,KAAM,CAAC;MAAE;IAAE,CAC3E,CACH,CAAC;;IAED;IACAC,MAAM,CAACC,aAAM,CAACC,cAAc,CAAC,eAAe,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClEH,MAAM,CAACC,aAAM,CAACC,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;IACpEH,MAAM,CAACC,aAAM,CAACC,cAAc,CAAC,eAAe,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClEH,MAAM,CAACC,aAAM,CAACC,cAAc,CAAC,eAAe,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;EACpE,CAAC,CAAC;EAEFf,IAAI,CAAC,yEAAyE,EAAE,MAAM;IACpF,IAAAC,aAAM,eACJ,IAAAb,WAAA,CAAAc,GAAA,EAAChB,SAAA,CAAAK,OAAQ;MACPY,IAAI,EAAEV,QAAS;MACfW,OAAO,EAAE,CAAC;QAAEC,GAAG,EAAE,IAAI;QAAEC,MAAM,EAAE;MAAK,CAAC,CAAE;MACvCC,UAAU,EAAE;QAAEC,IAAI,EAAE,CAAC;QAAEC,QAAQ,EAAE,EAAE;QAAEC,KAAK,EAAE,GAAG;QAAEC,YAAY,EAAEA,CAAA,KAAM,CAAC;MAAE,CAAE;MAC1EK,MAAM,EAAE;QACNT,UAAU,EAAE;UACVU,SAAS,EAAE;UACX;UACA;QACF;MACF;IAAE,CACH,CACH,CAAC;;IAED;IACAL,MAAM,CAACC,aAAM,CAACC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;;IAE3D;IACAH,MAAM,CAACC,aAAM,CAACC,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;IACpEH,MAAM,CAACC,aAAM,CAACC,cAAc,CAAC,eAAe,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClEH,MAAM,CAACC,aAAM,CAACC,cAAc,CAAC,eAAe,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;EACpE,CAAC,CAAC;EAEFf,IAAI,CAAC,iDAAiD,EAAE,MAAM;IAC5D,IAAAC,aAAM,eACJ,IAAAb,WAAA,CAAAc,GAAA,EAAChB,SAAA,CAAAK,OAAQ;MACPY,IAAI,EAAEV,QAAS;MACfW,OAAO,EAAE,CAAC;QAAEC,GAAG,EAAE,IAAI;QAAEC,MAAM,EAAE;MAAK,CAAC,CAAE;MACvCC,UAAU,EAAE;QAAEC,IAAI,EAAE,CAAC;QAAEC,QAAQ,EAAE,EAAE;QAAEC,KAAK,EAAE,GAAG;QAAEC,YAAY,EAAEA,CAAA,KAAM,CAAC;MAAE,CAAE;MAC1EO,iBAAiB,EAAEA,CAAA,KAAM,CAAC,CAAE;MAC5BF,MAAM,EAAE;QACNG,SAAS,EAAE;QACX;MACF;IAAE,CACH,CACH,CAAC;IAEDP,MAAM,CAACC,aAAM,CAACC,cAAc,CAAC,UAAU,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAC7D;IACAH,MAAM,CAACC,aAAM,CAACC,cAAc,CAAC,mBAAmB,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;IACtE;IACAH,MAAM,CAACC,aAAM,CAACC,cAAc,CAAC,eAAe,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;EACpE,CAAC,CAAC;EAEFf,IAAI,CAAC,yEAAyE,EAAE,MAAM;IACpF,IAAAC,aAAM,eACJ,IAAAb,WAAA,CAAAc,GAAA,EAAChB,SAAA,CAAAK,OAAQ;MACPY,IAAI,EAAEV,QAAS;MACfW,OAAO,EAAE,CAAC;QAAEC,GAAG,EAAE,IAAI;QAAEC,MAAM,EAAE;MAAK,CAAC,CAAE;MACvCC,UAAU,EAAE;QAAEC,IAAI,EAAE,CAAC;QAAEC,QAAQ,EAAE,EAAE;QAAEC,KAAK,EAAE,GAAG;QAAEC,YAAY,EAAEA,CAAA,KAAM,CAAC;MAAE,CAAE;MAC1ES,SAAS,EAAC,aAAa;MACvBJ,MAAM,EAAE;QAAEG,SAAS,EAAE;MAAY;IAAE,CACpC,CACH,CAAC;IAEDP,MAAM,CAACC,aAAM,CAACC,cAAc,CAAC,aAAa,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAChE;IACAH,MAAM,CAACC,aAAM,CAACQ,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAACC,GAAG,CAACP,iBAAiB,CAAC,CAAC;EACtE,CAAC,CAAC;EAEFf,IAAI,CAAC,yDAAyD,EAAE,MAAM;IACpE,IAAAC,aAAM,eACJ,IAAAb,WAAA,CAAAc,GAAA,EAAChB,SAAA,CAAAK,OAAQ;MACPY,IAAI,EAAEV,QAAS;MACfW,OAAO,EAAE,CAAC;QAAEC,GAAG,EAAE,IAAI;QAAEC,MAAM,EAAE;MAAK,CAAC,CAAE;MACvCC,UAAU,EAAE;QAAEC,IAAI,EAAE,CAAC;QAAEC,QAAQ,EAAE,EAAE;QAAEC,KAAK,EAAE,GAAG;QAAEC,YAAY,EAAEA,CAAA,KAAM,CAAC;MAAE,CAAE;MAC1EK,MAAM,EAAE;QACNT,UAAU,EAAE;UACVgB,OAAO,EAAEA,CAAC5B,IAAI,EAAE6B,EAAE,EAAEd,KAAK,KAAK,WAAWf,IAAI,OAAO6B,EAAE,OAAOd,KAAK;QACpE;MACF;IAAE,CACH,CACH,CAAC;IAEDE,MAAM,CAACC,aAAM,CAACY,SAAS,CAAC,wBAAwB,CAAC,CAAC,CAACV,iBAAiB,CAAC,CAAC;EACxE,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -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":[]}