@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
@@ -5,7 +5,7 @@ var _react = require("@testing-library/react");
5
5
  var _FieldError = _interopRequireDefault(require("../components/FieldError"));
6
6
  var _Field = _interopRequireDefault(require("../components/Field"));
7
7
  var _jsxRuntime = require("react/jsx-runtime");
8
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
9
  /**
10
10
  * FieldError — contract tests, including its integration into Field.
11
11
  *
@@ -30,57 +30,87 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
30
30
  * resolves neither CSS variables nor flexbox, so asserting them here would pass
31
31
  * while the message rendered black and centred. Those live in
32
32
  * FieldError.stories.tsx.
33
- */describe("FieldError — standalone", function () {
34
- test("announces itself as an alert carrying the message", function () {
35
- (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_FieldError["default"], {
33
+ */
34
+
35
+ /**
36
+ * Fixture : un champ minimal qui CONSOMME les props que `Field` diffuse.
37
+ *
38
+ * `Field` clone son enfant avec `error` et `fullWidth` — délibérément, parce
39
+ * que plusieurs entrées v2 (`NumberInput`, le `renderInput` de `Combobox`) ne
40
+ * sont pas de purs enfants MUI et lisent ces props directement. Un `<input />`
41
+ * NU les laisse donc filer jusqu'au DOM, et React émet deux avertissements à
42
+ * chaque rendu : « Received `true` for a non-boolean attribute `error` » et
43
+ * « React does not recognize the `fullWidth` prop on a DOM element ».
44
+ *
45
+ * Ce n'est PAS un défaut de `Field` : en production l'enfant est un `Input` ou
46
+ * un `Select` du socle, qui consomme ces props. Mais c'était six
47
+ * avertissements dans la sortie de la suite, au milieu desquels un vrai
48
+ * avertissement passe inaperçu — et un audit du socle a effectivement pris ce
49
+ * bruit pour une fuite de props en production avant de lire le composant.
50
+ *
51
+ * La fixture reste volontairement minimale : pas d'`Input` du socle ici, ce
52
+ * fichier teste le CÂBLAGE de `Field` et non l'intégration d'un composant. Elle
53
+ * ne fait qu'absorber les deux props destinées à un contrôle riche.
54
+ */function BareInput({
55
+ error: _error,
56
+ fullWidth: _fullWidth,
57
+ ...rest
58
+ }) {
59
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("input", {
60
+ ...rest
61
+ });
62
+ }
63
+ describe("FieldError — standalone", () => {
64
+ test("announces itself as an alert carrying the message", () => {
65
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_FieldError.default, {
36
66
  children: "Ajoutez au moins un article avant de soumettre."
37
67
  }));
38
68
  expect(_react.screen.getByRole("alert")).toHaveTextContent("Ajoutez au moins un article avant de soumettre.");
39
69
  });
40
- test("forwards id so a host can wire its own aria-describedby", function () {
41
- (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_FieldError["default"], {
70
+ test("forwards id so a host can wire its own aria-describedby", () => {
71
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_FieldError.default, {
42
72
  id: "articles-error",
43
73
  children: "Ajoutez au moins un article."
44
74
  }));
45
75
  expect(_react.screen.getByRole("alert")).toHaveAttribute("id", "articles-error");
46
76
  });
47
- test("omits id when none is supplied", function () {
77
+ test("omits id when none is supplied", () => {
48
78
  /* The list-level case usually has nothing to bind to. Emitting an empty or
49
79
  * generated id would create a describedby target nobody references. */
50
- (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_FieldError["default"], {
80
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_FieldError.default, {
51
81
  children: "Ajoutez au moins un article."
52
82
  }));
53
83
  expect(_react.screen.getByRole("alert")).not.toHaveAttribute("id");
54
84
  });
55
- test("the icon is hidden from assistive tech", function () {
85
+ test("the icon is hidden from assistive tech", () => {
56
86
  /* R-Ar.2 — the message IS the announcement; an announced glyph would double
57
87
  * it. No semantic query reaches a role-less, name-less element, hence the
58
88
  * testid the component exposes for exactly this assertion. */
59
- (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_FieldError["default"], {
89
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_FieldError.default, {
60
90
  children: "Message"
61
91
  }));
62
92
  expect(_react.screen.getByTestId("fielderror-icon")).toHaveAttribute("aria-hidden", "true");
63
93
  });
64
94
  });
65
- describe("FieldError — inside Field (the wiring that has no visual tell)", function () {
66
- test("the error becomes the control's accessible description", function () {
67
- (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Field["default"], {
95
+ describe("FieldError — inside Field (the wiring that has no visual tell)", () => {
96
+ test("the error becomes the control's accessible description", () => {
97
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Field.default, {
68
98
  label: "Num\xE9ro de titre",
69
99
  error: "Le num\xE9ro est invalide. Format : AAAA-IM-NNNNN.",
70
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)("input", {})
100
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(BareInput, {})
71
101
  }));
72
102
  expect(_react.screen.getByRole("textbox")).toHaveAccessibleDescription("Le numéro est invalide. Format : AAAA-IM-NNNNN.");
73
103
  });
74
- test("the control is marked invalid", function () {
75
- (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Field["default"], {
104
+ test("the control is marked invalid", () => {
105
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Field.default, {
76
106
  label: "Num\xE9ro",
77
107
  error: "Invalide.",
78
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)("input", {})
108
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(BareInput, {})
79
109
  }));
80
110
  // jest-dom's toBeInvalid reads aria-invalid — R-I.3.
81
111
  expect(_react.screen.getByRole("textbox")).toBeInvalid();
82
112
  });
83
- test("a host-supplied aria-describedby is PRESERVED, not replaced", function () {
113
+ test("a host-supplied aria-describedby is PRESERVED, not replaced", () => {
84
114
  /* The merge is the fragile part. Overwriting instead of merging silently
85
115
  * drops a consumer's external help text, and again nothing visual changes.
86
116
  * Asserted with two order-independent regexes rather than one exact string,
@@ -89,69 +119,72 @@ describe("FieldError — inside Field (the wiring that has no visual tell)", fun
89
119
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
90
120
  id: "host-help",
91
121
  children: "Format attendu : AAAA-IM-NNNNN."
92
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Field["default"], {
122
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Field.default, {
93
123
  label: "Num\xE9ro",
94
124
  error: "Le num\xE9ro est incomplet.",
95
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)("input", {
125
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(BareInput, {
96
126
  "aria-describedby": "host-help"
97
127
  })
98
128
  })]
99
129
  }));
100
- var input = _react.screen.getByRole("textbox");
130
+ const input = _react.screen.getByRole("textbox");
101
131
  expect(input).toHaveAccessibleDescription(/Format attendu/);
102
132
  expect(input).toHaveAccessibleDescription(/incomplet/);
103
133
  });
104
- test("the hint is suppressed while an error is shown", function () {
134
+ test("the hint is suppressed while an error is shown", () => {
105
135
  /* Two competing descriptions under one field is worse than one. The hint
106
136
  * returns once the error clears — verified by the rerender below. */
107
- var _render = (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Field["default"], {
108
- label: "Num\xE9ro",
109
- hint: "Format : AAAA-IM-NNNNN",
110
- error: "Le num\xE9ro est incomplet.",
111
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)("input", {})
112
- })),
113
- rerender = _render.rerender;
137
+ const {
138
+ rerender
139
+ } = (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Field.default, {
140
+ label: "Num\xE9ro",
141
+ hint: "Format : AAAA-IM-NNNNN",
142
+ error: "Le num\xE9ro est incomplet.",
143
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(BareInput, {})
144
+ }));
114
145
  expect(_react.screen.getByRole("alert")).toHaveTextContent("Le numéro est incomplet.");
115
146
  expect(_react.screen.queryByText("Format : AAAA-IM-NNNNN")).not.toBeInTheDocument();
116
- rerender(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Field["default"], {
147
+ rerender(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Field.default, {
117
148
  label: "Num\xE9ro",
118
149
  hint: "Format : AAAA-IM-NNNNN",
119
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)("input", {})
150
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(BareInput, {})
120
151
  }));
121
152
  expect(_react.screen.getByText("Format : AAAA-IM-NNNNN")).toBeInTheDocument();
122
153
  });
123
154
  });
124
- describe("FieldError — live-region mounting contract", function () {
125
- test("no alert exists until an error appears", function () {
155
+ describe("FieldError — live-region mounting contract", () => {
156
+ test("no alert exists until an error appears", () => {
126
157
  /* THE contract. `role=\"alert\"` announces on INSERTION: an element mounted
127
158
  * permanently with empty content announces nothing when it later fills, so
128
159
  * a well-meaning refactor that always renders the container — to \"avoid
129
160
  * layout shift\", say — silently kills the announcement while every pixel
130
161
  * and every screenshot stays identical. */
131
- var _render2 = (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Field["default"], {
132
- label: "Num\xE9ro",
133
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)("input", {})
134
- })),
135
- rerender = _render2.rerender;
162
+ const {
163
+ rerender
164
+ } = (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Field.default, {
165
+ label: "Num\xE9ro",
166
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(BareInput, {})
167
+ }));
136
168
  expect(_react.screen.queryByRole("alert")).not.toBeInTheDocument();
137
- rerender(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Field["default"], {
169
+ rerender(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Field.default, {
138
170
  label: "Num\xE9ro",
139
171
  error: "Le num\xE9ro est incomplet.",
140
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)("input", {})
172
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(BareInput, {})
141
173
  }));
142
174
  expect(_react.screen.getByRole("alert")).toBeInTheDocument();
143
175
  });
144
- test("the alert unmounts when the error clears", function () {
145
- var _render3 = (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Field["default"], {
146
- label: "Num\xE9ro",
147
- error: "Le num\xE9ro est incomplet.",
148
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)("input", {})
149
- })),
150
- rerender = _render3.rerender;
176
+ test("the alert unmounts when the error clears", () => {
177
+ const {
178
+ rerender
179
+ } = (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Field.default, {
180
+ label: "Num\xE9ro",
181
+ error: "Le num\xE9ro est incomplet.",
182
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(BareInput, {})
183
+ }));
151
184
  expect(_react.screen.getByRole("alert")).toBeInTheDocument();
152
- rerender(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Field["default"], {
185
+ rerender(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Field.default, {
153
186
  label: "Num\xE9ro",
154
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)("input", {})
187
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(BareInput, {})
155
188
  }));
156
189
  expect(_react.screen.queryByRole("alert")).not.toBeInTheDocument();
157
190
  expect(_react.screen.getByRole("textbox")).not.toBeInvalid();
@@ -1 +1 @@
1
- {"version":3,"file":"FieldError.test.js","names":["require","_react","_FieldError","_interopRequireDefault","_Field","_jsxRuntime","obj","__esModule","describe","test","render","jsx","children","expect","screen","getByRole","toHaveTextContent","id","toHaveAttribute","not","getByTestId","label","error","toHaveAccessibleDescription","toBeInvalid","jsxs","Fragment","input","_render","hint","rerender","queryByText","toBeInTheDocument","getByText","_render2","queryByRole","_render3"],"sources":["../../../src/lib/v2/__tests__/FieldError.test.tsx"],"sourcesContent":["import \"@testing-library/jest-dom\";\r\nimport { render, screen } from \"@testing-library/react\";\r\nimport FieldError from \"../components/FieldError\";\r\nimport Field from \"../components/Field\";\r\n\r\n/**\r\n * FieldError — contract tests, including its integration into Field.\r\n *\r\n * WHY THIS FILE EXISTS\r\n * --------------------\r\n * §10.3 R-G.6 MUST. But the real reason is narrower and worth stating: the\r\n * contract this component carries is INVISIBLE. `Field` supplies an id, and that\r\n * id must reach the control's `aria-describedby` so a screen reader announces\r\n * the error when focus lands on the input. Break that wiring and NOTHING\r\n * changes: same pixels, same screenshot, same visual review — only a blind user\r\n * silently stops being told why their submit failed. There is no way to catch\r\n * that except by asserting it.\r\n *\r\n * The assertions below use `toHaveAccessibleDescription`, not id comparisons, on\r\n * purpose. It resolves aria-describedby to the text a screen reader would\r\n * actually announce, so the test states the USER-FACING outcome and stays true\r\n * if the id-generation scheme ever changes.\r\n *\r\n * NOT COVERED — deliberately\r\n * R-4.1's visual half (\"sous le champ, en rouge, avec icône\") and the\r\n * first-line icon alignment on a wrapping message are layout and colour. jsdom\r\n * resolves neither CSS variables nor flexbox, so asserting them here would pass\r\n * while the message rendered black and centred. Those live in\r\n * FieldError.stories.tsx.\r\n */\r\ndescribe(\"FieldError — standalone\", () => {\r\n test(\"announces itself as an alert carrying the message\", () => {\r\n render(<FieldError>Ajoutez au moins un article avant de soumettre.</FieldError>);\r\n expect(screen.getByRole(\"alert\")).toHaveTextContent(\r\n \"Ajoutez au moins un article avant de soumettre.\"\r\n );\r\n });\r\n\r\n test(\"forwards id so a host can wire its own aria-describedby\", () => {\r\n render(<FieldError id=\"articles-error\">Ajoutez au moins un article.</FieldError>);\r\n expect(screen.getByRole(\"alert\")).toHaveAttribute(\"id\", \"articles-error\");\r\n });\r\n\r\n test(\"omits id when none is supplied\", () => {\r\n /* The list-level case usually has nothing to bind to. Emitting an empty or\r\n * generated id would create a describedby target nobody references. */\r\n render(<FieldError>Ajoutez au moins un article.</FieldError>);\r\n expect(screen.getByRole(\"alert\")).not.toHaveAttribute(\"id\");\r\n });\r\n\r\n test(\"the icon is hidden from assistive tech\", () => {\r\n /* R-Ar.2 — the message IS the announcement; an announced glyph would double\r\n * it. No semantic query reaches a role-less, name-less element, hence the\r\n * testid the component exposes for exactly this assertion. */\r\n render(<FieldError>Message</FieldError>);\r\n expect(screen.getByTestId(\"fielderror-icon\")).toHaveAttribute(\"aria-hidden\", \"true\");\r\n });\r\n});\r\n\r\ndescribe(\"FieldError — inside Field (the wiring that has no visual tell)\", () => {\r\n test(\"the error becomes the control's accessible description\", () => {\r\n render(\r\n <Field label=\"Numéro de titre\" error=\"Le numéro est invalide. Format : AAAA-IM-NNNNN.\">\r\n <input />\r\n </Field>\r\n );\r\n\r\n expect(screen.getByRole(\"textbox\")).toHaveAccessibleDescription(\r\n \"Le numéro est invalide. Format : AAAA-IM-NNNNN.\"\r\n );\r\n });\r\n\r\n test(\"the control is marked invalid\", () => {\r\n render(\r\n <Field label=\"Numéro\" error=\"Invalide.\">\r\n <input />\r\n </Field>\r\n );\r\n // jest-dom's toBeInvalid reads aria-invalid — R-I.3.\r\n expect(screen.getByRole(\"textbox\")).toBeInvalid();\r\n });\r\n\r\n test(\"a host-supplied aria-describedby is PRESERVED, not replaced\", () => {\r\n /* The merge is the fragile part. Overwriting instead of merging silently\r\n * drops a consumer's external help text, and again nothing visual changes.\r\n * Asserted with two order-independent regexes rather than one exact string,\r\n * so the test does not encode which fragment Field puts first. */\r\n render(\r\n <>\r\n <span id=\"host-help\">Format attendu : AAAA-IM-NNNNN.</span>\r\n <Field label=\"Numéro\" error=\"Le numéro est incomplet.\">\r\n <input aria-describedby=\"host-help\" />\r\n </Field>\r\n </>\r\n );\r\n\r\n const input = screen.getByRole(\"textbox\");\r\n expect(input).toHaveAccessibleDescription(/Format attendu/);\r\n expect(input).toHaveAccessibleDescription(/incomplet/);\r\n });\r\n\r\n test(\"the hint is suppressed while an error is shown\", () => {\r\n /* Two competing descriptions under one field is worse than one. The hint\r\n * returns once the error clears — verified by the rerender below. */\r\n const { rerender } = render(\r\n <Field label=\"Numéro\" hint=\"Format : AAAA-IM-NNNNN\" error=\"Le numéro est incomplet.\">\r\n <input />\r\n </Field>\r\n );\r\n\r\n expect(screen.getByRole(\"alert\")).toHaveTextContent(\"Le numéro est incomplet.\");\r\n expect(screen.queryByText(\"Format : AAAA-IM-NNNNN\")).not.toBeInTheDocument();\r\n\r\n rerender(\r\n <Field label=\"Numéro\" hint=\"Format : AAAA-IM-NNNNN\">\r\n <input />\r\n </Field>\r\n );\r\n expect(screen.getByText(\"Format : AAAA-IM-NNNNN\")).toBeInTheDocument();\r\n });\r\n});\r\n\r\ndescribe(\"FieldError — live-region mounting contract\", () => {\r\n test(\"no alert exists until an error appears\", () => {\r\n /* THE contract. `role=\\\"alert\\\"` announces on INSERTION: an element mounted\r\n * permanently with empty content announces nothing when it later fills, so\r\n * a well-meaning refactor that always renders the container — to \\\"avoid\r\n * layout shift\\\", say — silently kills the announcement while every pixel\r\n * and every screenshot stays identical. */\r\n const { rerender } = render(\r\n <Field label=\"Numéro\">\r\n <input />\r\n </Field>\r\n );\r\n expect(screen.queryByRole(\"alert\")).not.toBeInTheDocument();\r\n\r\n rerender(\r\n <Field label=\"Numéro\" error=\"Le numéro est incomplet.\">\r\n <input />\r\n </Field>\r\n );\r\n expect(screen.getByRole(\"alert\")).toBeInTheDocument();\r\n });\r\n\r\n test(\"the alert unmounts when the error clears\", () => {\r\n const { rerender } = render(\r\n <Field label=\"Numéro\" error=\"Le numéro est incomplet.\">\r\n <input />\r\n </Field>\r\n );\r\n expect(screen.getByRole(\"alert\")).toBeInTheDocument();\r\n\r\n rerender(\r\n <Field label=\"Numéro\">\r\n <input />\r\n </Field>\r\n );\r\n expect(screen.queryByRole(\"alert\")).not.toBeInTheDocument();\r\n expect(screen.getByRole(\"textbox\")).not.toBeInvalid();\r\n });\r\n});\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"FieldError.test.js","names":["require","_react","_FieldError","_interopRequireDefault","_Field","_jsxRuntime","e","__esModule","default","BareInput","error","_error","fullWidth","_fullWidth","rest","jsx","describe","test","render","children","expect","screen","getByRole","toHaveTextContent","id","toHaveAttribute","not","getByTestId","label","toHaveAccessibleDescription","toBeInvalid","jsxs","Fragment","input","rerender","hint","queryByText","toBeInTheDocument","getByText","queryByRole"],"sources":["../../../src/lib/v2/__tests__/FieldError.test.tsx"],"sourcesContent":["import \"@testing-library/jest-dom\";\r\nimport { render, screen } from \"@testing-library/react\";\r\nimport type { InputHTMLAttributes } from \"react\";\r\nimport FieldError from \"../components/FieldError\";\r\nimport Field from \"../components/Field\";\r\n\r\n/**\r\n * FieldError — contract tests, including its integration into Field.\r\n *\r\n * WHY THIS FILE EXISTS\r\n * --------------------\r\n * §10.3 R-G.6 MUST. But the real reason is narrower and worth stating: the\r\n * contract this component carries is INVISIBLE. `Field` supplies an id, and that\r\n * id must reach the control's `aria-describedby` so a screen reader announces\r\n * the error when focus lands on the input. Break that wiring and NOTHING\r\n * changes: same pixels, same screenshot, same visual review — only a blind user\r\n * silently stops being told why their submit failed. There is no way to catch\r\n * that except by asserting it.\r\n *\r\n * The assertions below use `toHaveAccessibleDescription`, not id comparisons, on\r\n * purpose. It resolves aria-describedby to the text a screen reader would\r\n * actually announce, so the test states the USER-FACING outcome and stays true\r\n * if the id-generation scheme ever changes.\r\n *\r\n * NOT COVERED — deliberately\r\n * R-4.1's visual half (\"sous le champ, en rouge, avec icône\") and the\r\n * first-line icon alignment on a wrapping message are layout and colour. jsdom\r\n * resolves neither CSS variables nor flexbox, so asserting them here would pass\r\n * while the message rendered black and centred. Those live in\r\n * FieldError.stories.tsx.\r\n */\r\n\r\n/**\r\n * Fixture : un champ minimal qui CONSOMME les props que `Field` diffuse.\r\n *\r\n * `Field` clone son enfant avec `error` et `fullWidth` — délibérément, parce\r\n * que plusieurs entrées v2 (`NumberInput`, le `renderInput` de `Combobox`) ne\r\n * sont pas de purs enfants MUI et lisent ces props directement. Un `<input />`\r\n * NU les laisse donc filer jusqu'au DOM, et React émet deux avertissements à\r\n * chaque rendu : « Received `true` for a non-boolean attribute `error` » et\r\n * « React does not recognize the `fullWidth` prop on a DOM element ».\r\n *\r\n * Ce n'est PAS un défaut de `Field` : en production l'enfant est un `Input` ou\r\n * un `Select` du socle, qui consomme ces props. Mais c'était six\r\n * avertissements dans la sortie de la suite, au milieu desquels un vrai\r\n * avertissement passe inaperçu — et un audit du socle a effectivement pris ce\r\n * bruit pour une fuite de props en production avant de lire le composant.\r\n *\r\n * La fixture reste volontairement minimale : pas d'`Input` du socle ici, ce\r\n * fichier teste le CÂBLAGE de `Field` et non l'intégration d'un composant. Elle\r\n * ne fait qu'absorber les deux props destinées à un contrôle riche.\r\n */\r\nfunction BareInput({\r\n error: _error,\r\n fullWidth: _fullWidth,\r\n ...rest\r\n}: InputHTMLAttributes<HTMLInputElement> & {\r\n error?: boolean | undefined;\r\n fullWidth?: boolean | undefined;\r\n}) {\r\n return <input {...rest} />;\r\n}\r\n\r\ndescribe(\"FieldError — standalone\", () => {\r\n test(\"announces itself as an alert carrying the message\", () => {\r\n render(<FieldError>Ajoutez au moins un article avant de soumettre.</FieldError>);\r\n expect(screen.getByRole(\"alert\")).toHaveTextContent(\r\n \"Ajoutez au moins un article avant de soumettre.\"\r\n );\r\n });\r\n\r\n test(\"forwards id so a host can wire its own aria-describedby\", () => {\r\n render(<FieldError id=\"articles-error\">Ajoutez au moins un article.</FieldError>);\r\n expect(screen.getByRole(\"alert\")).toHaveAttribute(\"id\", \"articles-error\");\r\n });\r\n\r\n test(\"omits id when none is supplied\", () => {\r\n /* The list-level case usually has nothing to bind to. Emitting an empty or\r\n * generated id would create a describedby target nobody references. */\r\n render(<FieldError>Ajoutez au moins un article.</FieldError>);\r\n expect(screen.getByRole(\"alert\")).not.toHaveAttribute(\"id\");\r\n });\r\n\r\n test(\"the icon is hidden from assistive tech\", () => {\r\n /* R-Ar.2 — the message IS the announcement; an announced glyph would double\r\n * it. No semantic query reaches a role-less, name-less element, hence the\r\n * testid the component exposes for exactly this assertion. */\r\n render(<FieldError>Message</FieldError>);\r\n expect(screen.getByTestId(\"fielderror-icon\")).toHaveAttribute(\"aria-hidden\", \"true\");\r\n });\r\n});\r\n\r\ndescribe(\"FieldError — inside Field (the wiring that has no visual tell)\", () => {\r\n test(\"the error becomes the control's accessible description\", () => {\r\n render(\r\n <Field label=\"Numéro de titre\" error=\"Le numéro est invalide. Format : AAAA-IM-NNNNN.\">\r\n <BareInput />\r\n </Field>\r\n );\r\n\r\n expect(screen.getByRole(\"textbox\")).toHaveAccessibleDescription(\r\n \"Le numéro est invalide. Format : AAAA-IM-NNNNN.\"\r\n );\r\n });\r\n\r\n test(\"the control is marked invalid\", () => {\r\n render(\r\n <Field label=\"Numéro\" error=\"Invalide.\">\r\n <BareInput />\r\n </Field>\r\n );\r\n // jest-dom's toBeInvalid reads aria-invalid — R-I.3.\r\n expect(screen.getByRole(\"textbox\")).toBeInvalid();\r\n });\r\n\r\n test(\"a host-supplied aria-describedby is PRESERVED, not replaced\", () => {\r\n /* The merge is the fragile part. Overwriting instead of merging silently\r\n * drops a consumer's external help text, and again nothing visual changes.\r\n * Asserted with two order-independent regexes rather than one exact string,\r\n * so the test does not encode which fragment Field puts first. */\r\n render(\r\n <>\r\n <span id=\"host-help\">Format attendu : AAAA-IM-NNNNN.</span>\r\n <Field label=\"Numéro\" error=\"Le numéro est incomplet.\">\r\n <BareInput aria-describedby=\"host-help\" />\r\n </Field>\r\n </>\r\n );\r\n\r\n const input = screen.getByRole(\"textbox\");\r\n expect(input).toHaveAccessibleDescription(/Format attendu/);\r\n expect(input).toHaveAccessibleDescription(/incomplet/);\r\n });\r\n\r\n test(\"the hint is suppressed while an error is shown\", () => {\r\n /* Two competing descriptions under one field is worse than one. The hint\r\n * returns once the error clears — verified by the rerender below. */\r\n const { rerender } = render(\r\n <Field label=\"Numéro\" hint=\"Format : AAAA-IM-NNNNN\" error=\"Le numéro est incomplet.\">\r\n <BareInput />\r\n </Field>\r\n );\r\n\r\n expect(screen.getByRole(\"alert\")).toHaveTextContent(\"Le numéro est incomplet.\");\r\n expect(screen.queryByText(\"Format : AAAA-IM-NNNNN\")).not.toBeInTheDocument();\r\n\r\n rerender(\r\n <Field label=\"Numéro\" hint=\"Format : AAAA-IM-NNNNN\">\r\n <BareInput />\r\n </Field>\r\n );\r\n expect(screen.getByText(\"Format : AAAA-IM-NNNNN\")).toBeInTheDocument();\r\n });\r\n});\r\n\r\ndescribe(\"FieldError — live-region mounting contract\", () => {\r\n test(\"no alert exists until an error appears\", () => {\r\n /* THE contract. `role=\\\"alert\\\"` announces on INSERTION: an element mounted\r\n * permanently with empty content announces nothing when it later fills, so\r\n * a well-meaning refactor that always renders the container — to \\\"avoid\r\n * layout shift\\\", say — silently kills the announcement while every pixel\r\n * and every screenshot stays identical. */\r\n const { rerender } = render(\r\n <Field label=\"Numéro\">\r\n <BareInput />\r\n </Field>\r\n );\r\n expect(screen.queryByRole(\"alert\")).not.toBeInTheDocument();\r\n\r\n rerender(\r\n <Field label=\"Numéro\" error=\"Le numéro est incomplet.\">\r\n <BareInput />\r\n </Field>\r\n );\r\n expect(screen.getByRole(\"alert\")).toBeInTheDocument();\r\n });\r\n\r\n test(\"the alert unmounts when the error clears\", () => {\r\n const { rerender } = render(\r\n <Field label=\"Numéro\" error=\"Le numéro est incomplet.\">\r\n <BareInput />\r\n </Field>\r\n );\r\n expect(screen.getByRole(\"alert\")).toBeInTheDocument();\r\n\r\n rerender(\r\n <Field label=\"Numéro\">\r\n <BareInput />\r\n </Field>\r\n );\r\n expect(screen.queryByRole(\"alert\")).not.toBeInTheDocument();\r\n expect(screen.getByRole(\"textbox\")).not.toBeInvalid();\r\n });\r\n});\r\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,161 @@
1
+ "use strict";
2
+
3
+ require("@testing-library/jest-dom");
4
+ var _react = require("@testing-library/react");
5
+ var _Field = _interopRequireDefault(require("../components/Field"));
6
+ var _Select = _interopRequireDefault(require("../components/Select"));
7
+ var _FieldHelp = _interopRequireDefault(require("../components/FieldHelp"));
8
+ var _jsxRuntime = require("react/jsx-runtime");
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ /**
11
+ * R-I.1 — the accessible NAME of a wrapped control.
12
+ *
13
+ * ── WHY THIS FILE EXISTS ─────────────────────────────────────────────
14
+ *
15
+ * `Field` associated its label through `htmlFor` / `id` only. That pair names
16
+ * LABELABLE elements — input, select, textarea, button, meter, output,
17
+ * progress — and nothing else. `Select` renders its visible surface as a
18
+ * `div[role="combobox"]`, so the pair resolved to NOTHING: the control had no
19
+ * accessible name at all, and a screen reader announced "combobox, collapsed"
20
+ * without ever saying which field it was.
21
+ *
22
+ * Nothing on screen showed it. The label was there, in the right place, in the
23
+ * right colour. Every filter drawer and every form of every module carried the
24
+ * defect, and it took an axe-core run in a consuming module
25
+ * (`autorisation-admis-pour-conforme-fe`, Area 10) to surface it as
26
+ * `aria-input-field-name`.
27
+ *
28
+ * The assertions below use `toHaveAccessibleName`, not attribute comparisons,
29
+ * on purpose: it resolves the whole name computation — `aria-labelledby`, then
30
+ * `aria-label`, then the `label[for]` pair — to the string a screen reader
31
+ * would announce. A test asserting `aria-labelledby="pui-xyz-l"` would pass
32
+ * even if that id pointed at an empty element.
33
+ *
34
+ * ── NOT COVERED, AND IT IS A REAL LIMITATION ────────────────────
35
+ *
36
+ * A consumer-supplied `aria-labelledby` on a NON-group child is not merged
37
+ * into the name. `aria-describedby` is (R-I.3), which makes the asymmetry
38
+ * surprising enough to state: the describedby merge happens in `Field`, while
39
+ * naming goes through MUI's `labelId`, and MUI does not concatenate the two.
40
+ * An earlier version of this file asserted the merge and failed with
41
+ * `Received: "Ville"` — the Field label alone.
42
+ *
43
+ * Nothing is silently lost: the field IS named, by its own label, which is the
44
+ * name a user should hear. A host needing an additional name should put it in
45
+ * `label` rather than reaching around the wrapper. Widening this would mean
46
+ * interpolating a token LIST into `labelId`, a prop documented as "the ID of an
47
+ * element" — clever, undocumented, and the kind of thing that breaks on a MUI
48
+ * minor.
49
+ */
50
+
51
+ /**
52
+ * Fixture : un champ minimal qui CONSOMME les props diffusées par `Field`.
53
+ *
54
+ * Même raison que dans `FieldError.test.tsx` : un `<input />` nu laisse filer
55
+ * `error` et `fullWidth` jusqu'au DOM et produit deux avertissements React par
56
+ * rendu, au milieu desquels un VRAI avertissement passerait inaperçu.
57
+ */function BareInput({
58
+ error: _error,
59
+ fullWidth: _fullWidth,
60
+ ...rest
61
+ }) {
62
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("input", {
63
+ ...rest
64
+ });
65
+ }
66
+ const noop = () => undefined;
67
+ const OPTIONS = [{
68
+ value: "1",
69
+ label: "Casablanca"
70
+ }, {
71
+ value: "2",
72
+ label: "Rabat"
73
+ }];
74
+ describe("Field — nom accessible du contrôle", () => {
75
+ /* The case that already worked: a native, labelable child. Asserted so the
76
+ * fix cannot regress it — adding `aria-labelledby` everywhere had to leave
77
+ * this one announcing exactly the same string. */
78
+ it("nomme un contrôle natif (déjà couvert par htmlFor)", () => {
79
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Field.default, {
80
+ label: "R\xE9f\xE9rence de la demande",
81
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(BareInput, {})
82
+ }));
83
+ expect(_react.screen.getByRole("textbox")).toHaveAccessibleName("Référence de la demande");
84
+ });
85
+
86
+ /* THE DEFECT. A div-based control cannot be named by htmlFor/id. */
87
+ it("nomme un Select, dont la surface est un div[role=combobox]", () => {
88
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Field.default, {
89
+ label: "Ville de l'unit\xE9",
90
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Select.default, {
91
+ value: "",
92
+ onChange: noop,
93
+ options: OPTIONS
94
+ })
95
+ }));
96
+ expect(_react.screen.getByRole("combobox")).toHaveAccessibleName("Ville de l'unité");
97
+ });
98
+
99
+ /* The required asterisk is `aria-hidden`, so it must not leak into the name:
100
+ * "Ville de l'unité *" is not what a user should hear. */
101
+ it("n'inclut pas l'astérisque des champs requis", () => {
102
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Field.default, {
103
+ label: "Ville de l'unit\xE9",
104
+ required: true,
105
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Select.default, {
106
+ value: "",
107
+ onChange: noop,
108
+ options: OPTIONS
109
+ })
110
+ }));
111
+ expect(_react.screen.getByRole("combobox")).toHaveAccessibleName("Ville de l'unité");
112
+ });
113
+
114
+ /**
115
+ * The reason `labelId` sits on a span around the TEXT and not on the label
116
+ * element: `aria-labelledby` resolves to its target's text content, and a
117
+ * help button inside the label carries its own accessible name. Anchoring on
118
+ * the whole label would announce "Ville de l'unité Aide sur ce champ".
119
+ *
120
+ * This also fixes the `htmlFor` path, which had the same flaw.
121
+ */
122
+ it("n'inclut pas le nom du bouton d'aide du libellé", () => {
123
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Field.default, {
124
+ label: "Ville de l'unit\xE9",
125
+ helpAdornment: /*#__PURE__*/(0, _jsxRuntime.jsx)(_FieldHelp.default, {
126
+ ariaLabel: "Aide sur ce champ",
127
+ children: "Texte d'aide."
128
+ }),
129
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Select.default, {
130
+ value: "",
131
+ onChange: noop,
132
+ options: OPTIONS
133
+ })
134
+ }));
135
+ expect(_react.screen.getByRole("combobox")).toHaveAccessibleName("Ville de l'unité");
136
+ });
137
+
138
+ /* Group mode keeps working: the label is a plain span there, and the group is
139
+ * named by `aria-labelledby` — which DOES reach its target, because it is the
140
+ * child's own root that carries `role="group"`. */
141
+ it("nomme un groupe ARIA", () => {
142
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Field.default, {
143
+ label: "Type de contr\xF4le",
144
+ group: true,
145
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
146
+ role: "group",
147
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("input", {
148
+ type: "radio",
149
+ name: "t",
150
+ "aria-label": "Documentaire"
151
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("input", {
152
+ type: "radio",
153
+ name: "t",
154
+ "aria-label": "Physique"
155
+ })]
156
+ })
157
+ }));
158
+ expect(_react.screen.getByRole("group")).toHaveAccessibleName("Type de contrôle");
159
+ });
160
+ });
161
+ //# sourceMappingURL=FieldNaming.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FieldNaming.test.js","names":["require","_react","_Field","_interopRequireDefault","_Select","_FieldHelp","_jsxRuntime","e","__esModule","default","BareInput","error","_error","fullWidth","_fullWidth","rest","jsx","noop","undefined","OPTIONS","value","label","describe","it","render","children","expect","screen","getByRole","toHaveAccessibleName","onChange","options","required","helpAdornment","ariaLabel","group","jsxs","role","type","name"],"sources":["../../../src/lib/v2/__tests__/FieldNaming.test.tsx"],"sourcesContent":["import \"@testing-library/jest-dom\";\r\nimport { render, screen } from \"@testing-library/react\";\r\nimport type { InputHTMLAttributes } from \"react\";\r\n\r\nimport Field from \"../components/Field\";\r\nimport Select from \"../components/Select\";\r\nimport FieldHelp from \"../components/FieldHelp\";\r\n\r\n/**\r\n * R-I.1 — the accessible NAME of a wrapped control.\r\n *\r\n * ── WHY THIS FILE EXISTS ─────────────────────────────────────────────\r\n *\r\n * `Field` associated its label through `htmlFor` / `id` only. That pair names\r\n * LABELABLE elements — input, select, textarea, button, meter, output,\r\n * progress — and nothing else. `Select` renders its visible surface as a\r\n * `div[role=\"combobox\"]`, so the pair resolved to NOTHING: the control had no\r\n * accessible name at all, and a screen reader announced \"combobox, collapsed\"\r\n * without ever saying which field it was.\r\n *\r\n * Nothing on screen showed it. The label was there, in the right place, in the\r\n * right colour. Every filter drawer and every form of every module carried the\r\n * defect, and it took an axe-core run in a consuming module\r\n * (`autorisation-admis-pour-conforme-fe`, Area 10) to surface it as\r\n * `aria-input-field-name`.\r\n *\r\n * The assertions below use `toHaveAccessibleName`, not attribute comparisons,\r\n * on purpose: it resolves the whole name computation — `aria-labelledby`, then\r\n * `aria-label`, then the `label[for]` pair — to the string a screen reader\r\n * would announce. A test asserting `aria-labelledby=\"pui-xyz-l\"` would pass\r\n * even if that id pointed at an empty element.\r\n *\r\n * ── NOT COVERED, AND IT IS A REAL LIMITATION ────────────────────\r\n *\r\n * A consumer-supplied `aria-labelledby` on a NON-group child is not merged\r\n * into the name. `aria-describedby` is (R-I.3), which makes the asymmetry\r\n * surprising enough to state: the describedby merge happens in `Field`, while\r\n * naming goes through MUI's `labelId`, and MUI does not concatenate the two.\r\n * An earlier version of this file asserted the merge and failed with\r\n * `Received: \"Ville\"` — the Field label alone.\r\n *\r\n * Nothing is silently lost: the field IS named, by its own label, which is the\r\n * name a user should hear. A host needing an additional name should put it in\r\n * `label` rather than reaching around the wrapper. Widening this would mean\r\n * interpolating a token LIST into `labelId`, a prop documented as \"the ID of an\r\n * element\" — clever, undocumented, and the kind of thing that breaks on a MUI\r\n * minor.\r\n */\r\n\r\n/**\r\n * Fixture : un champ minimal qui CONSOMME les props diffusées par `Field`.\r\n *\r\n * Même raison que dans `FieldError.test.tsx` : un `<input />` nu laisse filer\r\n * `error` et `fullWidth` jusqu'au DOM et produit deux avertissements React par\r\n * rendu, au milieu desquels un VRAI avertissement passerait inaperçu.\r\n */\r\nfunction BareInput({\r\n error: _error,\r\n fullWidth: _fullWidth,\r\n ...rest\r\n}: InputHTMLAttributes<HTMLInputElement> & {\r\n error?: boolean | undefined;\r\n fullWidth?: boolean | undefined;\r\n}) {\r\n return <input {...rest} />;\r\n}\r\n\r\nconst noop = () => undefined;\r\n\r\nconst OPTIONS = [\r\n { value: \"1\", label: \"Casablanca\" },\r\n { value: \"2\", label: \"Rabat\" },\r\n];\r\n\r\ndescribe(\"Field — nom accessible du contrôle\", () => {\r\n /* The case that already worked: a native, labelable child. Asserted so the\r\n * fix cannot regress it — adding `aria-labelledby` everywhere had to leave\r\n * this one announcing exactly the same string. */\r\n it(\"nomme un contrôle natif (déjà couvert par htmlFor)\", () => {\r\n render(\r\n <Field label=\"Référence de la demande\">\r\n <BareInput />\r\n </Field>\r\n );\r\n\r\n expect(screen.getByRole(\"textbox\")).toHaveAccessibleName(\r\n \"Référence de la demande\"\r\n );\r\n });\r\n\r\n /* THE DEFECT. A div-based control cannot be named by htmlFor/id. */\r\n it(\"nomme un Select, dont la surface est un div[role=combobox]\", () => {\r\n render(\r\n <Field label=\"Ville de l'unité\">\r\n <Select value=\"\" onChange={noop} options={OPTIONS} />\r\n </Field>\r\n );\r\n\r\n expect(screen.getByRole(\"combobox\")).toHaveAccessibleName(\r\n \"Ville de l'unité\"\r\n );\r\n });\r\n\r\n /* The required asterisk is `aria-hidden`, so it must not leak into the name:\r\n * \"Ville de l'unité *\" is not what a user should hear. */\r\n it(\"n'inclut pas l'astérisque des champs requis\", () => {\r\n render(\r\n <Field label=\"Ville de l'unité\" required>\r\n <Select value=\"\" onChange={noop} options={OPTIONS} />\r\n </Field>\r\n );\r\n\r\n expect(screen.getByRole(\"combobox\")).toHaveAccessibleName(\r\n \"Ville de l'unité\"\r\n );\r\n });\r\n\r\n /**\r\n * The reason `labelId` sits on a span around the TEXT and not on the label\r\n * element: `aria-labelledby` resolves to its target's text content, and a\r\n * help button inside the label carries its own accessible name. Anchoring on\r\n * the whole label would announce \"Ville de l'unité Aide sur ce champ\".\r\n *\r\n * This also fixes the `htmlFor` path, which had the same flaw.\r\n */\r\n it(\"n'inclut pas le nom du bouton d'aide du libellé\", () => {\r\n render(\r\n <Field\r\n label=\"Ville de l'unité\"\r\n helpAdornment={<FieldHelp ariaLabel=\"Aide sur ce champ\">Texte d'aide.</FieldHelp>}\r\n >\r\n <Select value=\"\" onChange={noop} options={OPTIONS} />\r\n </Field>\r\n );\r\n\r\n expect(screen.getByRole(\"combobox\")).toHaveAccessibleName(\r\n \"Ville de l'unité\"\r\n );\r\n });\r\n\r\n /* Group mode keeps working: the label is a plain span there, and the group is\r\n * named by `aria-labelledby` — which DOES reach its target, because it is the\r\n * child's own root that carries `role=\"group\"`. */\r\n it(\"nomme un groupe ARIA\", () => {\r\n render(\r\n <Field label=\"Type de contrôle\" group>\r\n <div role=\"group\">\r\n <input type=\"radio\" name=\"t\" aria-label=\"Documentaire\" />\r\n <input type=\"radio\" name=\"t\" aria-label=\"Physique\" />\r\n </div>\r\n </Field>\r\n );\r\n\r\n expect(screen.getByRole(\"group\")).toHaveAccessibleName(\"Type de contrôle\");\r\n });\r\n});\r\n"],"mappings":";;AAAAA,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAGA,IAAAE,MAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,OAAA,GAAAD,sBAAA,CAAAH,OAAA;AACA,IAAAK,UAAA,GAAAF,sBAAA,CAAAH,OAAA;AAAgD,IAAAM,WAAA,GAAAN,OAAA;AAAA,SAAAG,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GACA,SAASG,SAASA,CAAC;EACjBC,KAAK,EAAEC,MAAM;EACbC,SAAS,EAAEC,UAAU;EACrB,GAAGC;AAIL,CAAC,EAAE;EACD,oBAAO,IAAAT,WAAA,CAAAU,GAAA;IAAA,GAAWD;EAAI,CAAG,CAAC;AAC5B;AAEA,MAAME,IAAI,GAAGA,CAAA,KAAMC,SAAS;AAE5B,MAAMC,OAAO,GAAG,CACd;EAAEC,KAAK,EAAE,GAAG;EAAEC,KAAK,EAAE;AAAa,CAAC,EACnC;EAAED,KAAK,EAAE,GAAG;EAAEC,KAAK,EAAE;AAAQ,CAAC,CAC/B;AAEDC,QAAQ,CAAC,oCAAoC,EAAE,MAAM;EACnD;AACF;AACA;EACEC,EAAE,CAAC,oDAAoD,EAAE,MAAM;IAC7D,IAAAC,aAAM,eACJ,IAAAlB,WAAA,CAAAU,GAAA,EAACd,MAAA,CAAAO,OAAK;MAACY,KAAK,EAAC,+BAAyB;MAAAI,QAAA,eACpC,IAAAnB,WAAA,CAAAU,GAAA,EAACN,SAAS,IAAE;IAAC,CACR,CACT,CAAC;IAEDgB,MAAM,CAACC,aAAM,CAACC,SAAS,CAAC,SAAS,CAAC,CAAC,CAACC,oBAAoB,CACtD,yBACF,CAAC;EACH,CAAC,CAAC;;EAEF;EACAN,EAAE,CAAC,4DAA4D,EAAE,MAAM;IACrE,IAAAC,aAAM,eACJ,IAAAlB,WAAA,CAAAU,GAAA,EAACd,MAAA,CAAAO,OAAK;MAACY,KAAK,EAAC,qBAAkB;MAAAI,QAAA,eAC7B,IAAAnB,WAAA,CAAAU,GAAA,EAACZ,OAAA,CAAAK,OAAM;QAACW,KAAK,EAAC,EAAE;QAACU,QAAQ,EAAEb,IAAK;QAACc,OAAO,EAAEZ;MAAQ,CAAE;IAAC,CAChD,CACT,CAAC;IAEDO,MAAM,CAACC,aAAM,CAACC,SAAS,CAAC,UAAU,CAAC,CAAC,CAACC,oBAAoB,CACvD,kBACF,CAAC;EACH,CAAC,CAAC;;EAEF;AACF;EACEN,EAAE,CAAC,6CAA6C,EAAE,MAAM;IACtD,IAAAC,aAAM,eACJ,IAAAlB,WAAA,CAAAU,GAAA,EAACd,MAAA,CAAAO,OAAK;MAACY,KAAK,EAAC,qBAAkB;MAACW,QAAQ;MAAAP,QAAA,eACtC,IAAAnB,WAAA,CAAAU,GAAA,EAACZ,OAAA,CAAAK,OAAM;QAACW,KAAK,EAAC,EAAE;QAACU,QAAQ,EAAEb,IAAK;QAACc,OAAO,EAAEZ;MAAQ,CAAE;IAAC,CAChD,CACT,CAAC;IAEDO,MAAM,CAACC,aAAM,CAACC,SAAS,CAAC,UAAU,CAAC,CAAC,CAACC,oBAAoB,CACvD,kBACF,CAAC;EACH,CAAC,CAAC;;EAEF;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACEN,EAAE,CAAC,iDAAiD,EAAE,MAAM;IAC1D,IAAAC,aAAM,eACJ,IAAAlB,WAAA,CAAAU,GAAA,EAACd,MAAA,CAAAO,OAAK;MACJY,KAAK,EAAC,qBAAkB;MACxBY,aAAa,eAAE,IAAA3B,WAAA,CAAAU,GAAA,EAACX,UAAA,CAAAI,OAAS;QAACyB,SAAS,EAAC,mBAAmB;QAAAT,QAAA,EAAC;MAAa,CAAW,CAAE;MAAAA,QAAA,eAElF,IAAAnB,WAAA,CAAAU,GAAA,EAACZ,OAAA,CAAAK,OAAM;QAACW,KAAK,EAAC,EAAE;QAACU,QAAQ,EAAEb,IAAK;QAACc,OAAO,EAAEZ;MAAQ,CAAE;IAAC,CAChD,CACT,CAAC;IAEDO,MAAM,CAACC,aAAM,CAACC,SAAS,CAAC,UAAU,CAAC,CAAC,CAACC,oBAAoB,CACvD,kBACF,CAAC;EACH,CAAC,CAAC;;EAEF;AACF;AACA;EACEN,EAAE,CAAC,sBAAsB,EAAE,MAAM;IAC/B,IAAAC,aAAM,eACJ,IAAAlB,WAAA,CAAAU,GAAA,EAACd,MAAA,CAAAO,OAAK;MAACY,KAAK,EAAC,qBAAkB;MAACc,KAAK;MAAAV,QAAA,eACnC,IAAAnB,WAAA,CAAA8B,IAAA;QAAKC,IAAI,EAAC,OAAO;QAAAZ,QAAA,gBACf,IAAAnB,WAAA,CAAAU,GAAA;UAAOsB,IAAI,EAAC,OAAO;UAACC,IAAI,EAAC,GAAG;UAAC,cAAW;QAAc,CAAE,CAAC,eACzD,IAAAjC,WAAA,CAAAU,GAAA;UAAOsB,IAAI,EAAC,OAAO;UAACC,IAAI,EAAC,GAAG;UAAC,cAAW;QAAU,CAAE,CAAC;MAAA,CAClD;IAAC,CACD,CACT,CAAC;IAEDb,MAAM,CAACC,aAAM,CAACC,SAAS,CAAC,OAAO,CAAC,CAAC,CAACC,oBAAoB,CAAC,kBAAkB,CAAC;EAC5E,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -1,14 +1,12 @@
1
1
  "use strict";
2
2
 
3
- function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
3
  require("@testing-library/jest-dom");
5
4
  var _react = require("@testing-library/react");
6
5
  var _Field = _interopRequireWildcard(require("../components/Field"));
7
6
  var _Input = _interopRequireDefault(require("../components/Input"));
8
7
  var _jsxRuntime = require("react/jsx-runtime");
9
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
10
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
11
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
12
10
  /**
13
11
  * Field — largeur semantique (gap G-H) : tests de contrat.
14
12
  *
@@ -39,8 +37,8 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
39
37
  *
40
38
  * Le comportement responsive lui-meme se verifie dans la story, en
41
39
  * redimensionnant la fenetre — c'est la que le contrat est observable.
42
- */describe("Field — les cinq gabarits (G-H)", function () {
43
- test("les valeurs sont celles retenues dans la fourchette du standard", function () {
40
+ */describe("Field — les cinq gabarits (G-H)", () => {
41
+ test("les valeurs sont celles retenues dans la fourchette du standard", () => {
44
42
  /* Fourchettes du standard, et valeur retenue (le HAUT, ces largeurs etant
45
43
  * des plafonds) :
46
44
  * xs ~80-120 -> 120 s ~160-200 -> 200
@@ -54,52 +52,52 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
54
52
  expect(_Field.FIELD_MAX_WIDTH.l).toBe("var(--field-w-l, 600px)");
55
53
  expect(_Field.FIELD_MAX_WIDTH.xl).toBe("100%");
56
54
  });
57
- test("les cinq gabarits du standard sont couverts, ni plus ni moins", function () {
55
+ test("les cinq gabarits du standard sont couverts, ni plus ni moins", () => {
58
56
  /* Un gabarit ajoute ou retire est un ecart au standard, pas un detail
59
57
  * d'implementation. */
60
58
  expect(Object.keys(_Field.FIELD_MAX_WIDTH).sort()).toEqual(["l", "m", "s", "xl", "xs"]);
61
59
  });
62
60
  });
63
- describe("Field — `width` ne touche pas au cablage d'accessibilite", function () {
64
- test("le libelle nomme toujours le controle", function () {
65
- (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Field["default"], {
61
+ describe("Field — `width` ne touche pas au cablage d'accessibilite", () => {
62
+ test("le libelle nomme toujours le controle", () => {
63
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Field.default, {
66
64
  label: "Identifiant fiscal",
67
65
  htmlFor: "ifu",
68
66
  width: "s",
69
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Input["default"], {})
67
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Input.default, {})
70
68
  }));
71
69
  expect(_react.screen.getByRole("textbox", {
72
70
  name: /Identifiant fiscal/
73
71
  })).toBeInTheDocument();
74
72
  });
75
- test("l'erreur reste la description accessible du controle", function () {
76
- (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Field["default"], {
73
+ test("l'erreur reste la description accessible du controle", () => {
74
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Field.default, {
77
75
  label: "Identifiant fiscal",
78
76
  htmlFor: "ifu",
79
77
  width: "s",
80
78
  error: "Quinze caract\xE8res maximum.",
81
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Input["default"], {})
79
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Input.default, {})
82
80
  }));
83
81
  expect(_react.screen.getByRole("textbox")).toHaveAccessibleDescription("Quinze caractères maximum.");
84
82
  expect(_react.screen.getByRole("textbox")).toHaveAttribute("aria-invalid", "true");
85
83
  });
86
- test("l'indication reste la description accessible du controle", function () {
87
- (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Field["default"], {
84
+ test("l'indication reste la description accessible du controle", () => {
85
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Field.default, {
88
86
  label: "Adresse",
89
87
  htmlFor: "adresse",
90
88
  width: "l",
91
89
  hint: "Voie, code postal et ville.",
92
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Input["default"], {})
90
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Input.default, {})
93
91
  }));
94
92
  expect(_react.screen.getByRole("textbox")).toHaveAccessibleDescription("Voie, code postal et ville.");
95
93
  });
96
- test("`required` reste annonce comme tel", function () {
97
- (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Field["default"], {
94
+ test("`required` reste annonce comme tel", () => {
95
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Field.default, {
98
96
  label: "Marque",
99
97
  htmlFor: "marque",
100
98
  width: "m",
101
99
  required: true,
102
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Input["default"], {})
100
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Input.default, {})
103
101
  }));
104
102
 
105
103
  /* `toBeRequired` accepte l'attribut NATIF `required` comme `aria-required` :
@@ -120,8 +118,8 @@ describe("Field — `width` ne touche pas au cablage d'accessibilite", function
120
118
  expect(_react.screen.getByRole("textbox")).toBeRequired();
121
119
  });
122
120
  });
123
- describe("Field — l'omission reste neutre", function () {
124
- test("sans `width`, le champ se rend et se nomme comme avant G-H", function () {
121
+ describe("Field — l'omission reste neutre", () => {
122
+ test("sans `width`, le champ se rend et se nomme comme avant G-H", () => {
125
123
  /* Ce que ce test prouve, et ce qu'il ne prouve pas.
126
124
  *
127
125
  * L'absence de plafond n'est PAS assertable : elle se lit dans la feuille
@@ -134,12 +132,12 @@ describe("Field — l'omission reste neutre", function () {
134
132
  * Ce qui EST verifiable et suffit a la retrocompatibilite : sans `width`,
135
133
  * le controle est rendu, nomme par son libelle, et n'a herite d'aucun etat
136
134
  * qu'il n'a pas demande. Le plafond, lui, se verifie dans la story. */
137
- (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Field["default"], {
135
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Field.default, {
138
136
  label: "Marque",
139
137
  htmlFor: "sans-gabarit",
140
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Input["default"], {})
138
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Input.default, {})
141
139
  }));
142
- var champ = _react.screen.getByRole("textbox", {
140
+ const champ = _react.screen.getByRole("textbox", {
143
141
  name: /Marque/
144
142
  });
145
143
  expect(champ).toBeInTheDocument();