@portnet/ui 6.0.2 → 6.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (980) hide show
  1. package/CHANGELOG.md +652 -0
  2. package/dist/esm/index.js +72 -3
  3. package/dist/esm/index.js.map +1 -1
  4. package/dist/esm/v2/__tests__/AppMain.test.js +130 -0
  5. package/dist/esm/v2/__tests__/AppMain.test.js.map +1 -0
  6. package/dist/esm/v2/__tests__/ChartFigure.test.js +180 -0
  7. package/dist/esm/v2/__tests__/ChartFigure.test.js.map +1 -0
  8. package/dist/esm/v2/__tests__/DataGridRowActionsPropagation.test.js +150 -0
  9. package/dist/esm/v2/__tests__/DataGridRowActionsPropagation.test.js.map +1 -0
  10. package/dist/esm/v2/__tests__/DrawerTactileTargets.test.js +93 -0
  11. package/dist/esm/v2/__tests__/DrawerTactileTargets.test.js.map +1 -0
  12. package/dist/esm/v2/__tests__/FieldError.test.js +71 -38
  13. package/dist/esm/v2/__tests__/FieldError.test.js.map +1 -1
  14. package/dist/esm/v2/__tests__/FieldNaming.test.js +160 -0
  15. package/dist/esm/v2/__tests__/FieldNaming.test.js.map +1 -0
  16. package/dist/esm/v2/__tests__/FieldWidth.test.js +11 -11
  17. package/dist/esm/v2/__tests__/FieldWidth.test.js.map +1 -1
  18. package/dist/esm/v2/__tests__/FileCard.test.js +18 -17
  19. package/dist/esm/v2/__tests__/FileCard.test.js.map +1 -1
  20. package/dist/esm/v2/__tests__/FormikCheckbox.test.js +87 -179
  21. package/dist/esm/v2/__tests__/FormikCheckbox.test.js.map +1 -1
  22. package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js +32 -44
  23. package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js.map +1 -1
  24. package/dist/esm/v2/__tests__/FormikDisplayWidth.test.js +101 -0
  25. package/dist/esm/v2/__tests__/FormikDisplayWidth.test.js.map +1 -0
  26. package/dist/esm/v2/__tests__/FormikRadioGroup.test.js +118 -199
  27. package/dist/esm/v2/__tests__/FormikRadioGroup.test.js.map +1 -1
  28. package/dist/esm/v2/__tests__/MobileRowCard.test.js +44 -42
  29. package/dist/esm/v2/__tests__/MobileRowCard.test.js.map +1 -1
  30. package/dist/esm/v2/__tests__/PreviewDrawer.test.js +165 -0
  31. package/dist/esm/v2/__tests__/PreviewDrawer.test.js.map +1 -0
  32. package/dist/esm/v2/__tests__/ReferentielFieldContainer.test.js +156 -0
  33. package/dist/esm/v2/__tests__/ReferentielFieldContainer.test.js.map +1 -0
  34. package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js +37 -52
  35. package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js.map +1 -1
  36. package/dist/esm/v2/__tests__/apiError.test.js +50 -69
  37. package/dist/esm/v2/__tests__/apiError.test.js.map +1 -1
  38. package/dist/esm/v2/__tests__/banned-patterns.test.js +41 -122
  39. package/dist/esm/v2/__tests__/banned-patterns.test.js.map +1 -1
  40. package/dist/esm/v2/__tests__/chart-palette.test.js +204 -0
  41. package/dist/esm/v2/__tests__/chart-palette.test.js.map +1 -0
  42. package/dist/esm/v2/__tests__/contrast-palette.test.js +42 -74
  43. package/dist/esm/v2/__tests__/contrast-palette.test.js.map +1 -1
  44. package/dist/esm/v2/__tests__/cssVariables.test.js +44 -51
  45. package/dist/esm/v2/__tests__/cssVariables.test.js.map +1 -1
  46. package/dist/esm/v2/__tests__/fileValidation.test.js +134 -0
  47. package/dist/esm/v2/__tests__/fileValidation.test.js.map +1 -0
  48. package/dist/esm/v2/__tests__/filterCriteria.test.js +321 -0
  49. package/dist/esm/v2/__tests__/filterCriteria.test.js.map +1 -0
  50. package/dist/esm/v2/__tests__/fmtDate.test.js +68 -0
  51. package/dist/esm/v2/__tests__/fmtDate.test.js.map +1 -0
  52. package/dist/esm/v2/__tests__/gap-leakage-refonte.test.js +218 -0
  53. package/dist/esm/v2/__tests__/gap-leakage-refonte.test.js.map +1 -0
  54. package/dist/esm/v2/__tests__/labels-merge.test.js +17 -21
  55. package/dist/esm/v2/__tests__/labels-merge.test.js.map +1 -1
  56. package/dist/esm/v2/__tests__/locale-fallback.test.js +35 -40
  57. package/dist/esm/v2/__tests__/locale-fallback.test.js.map +1 -1
  58. package/dist/esm/v2/__tests__/reviveSavedCriteria.test.js +143 -0
  59. package/dist/esm/v2/__tests__/reviveSavedCriteria.test.js.map +1 -0
  60. package/dist/esm/v2/__tests__/rowActions.test.js +182 -0
  61. package/dist/esm/v2/__tests__/rowActions.test.js.map +1 -0
  62. package/dist/esm/v2/__tests__/useFocusOnRouteChange.test.js +155 -0
  63. package/dist/esm/v2/__tests__/useFocusOnRouteChange.test.js.map +1 -0
  64. package/dist/esm/v2/__tests__/useFocusTrap.test.js +266 -402
  65. package/dist/esm/v2/__tests__/useFocusTrap.test.js.map +1 -1
  66. package/dist/esm/v2/__tests__/usePrefersReducedMotion.test.js +120 -0
  67. package/dist/esm/v2/__tests__/usePrefersReducedMotion.test.js.map +1 -0
  68. package/dist/esm/v2/components/Accordion.js +48 -70
  69. package/dist/esm/v2/components/Accordion.js.map +1 -1
  70. package/dist/esm/v2/components/ActionStrip.js +31 -43
  71. package/dist/esm/v2/components/ActionStrip.js.map +1 -1
  72. package/dist/esm/v2/components/Banner.js +25 -22
  73. package/dist/esm/v2/components/Banner.js.map +1 -1
  74. package/dist/esm/v2/components/Busy.js +14 -19
  75. package/dist/esm/v2/components/Busy.js.map +1 -1
  76. package/dist/esm/v2/components/Button.js +34 -45
  77. package/dist/esm/v2/components/Button.js.map +1 -1
  78. package/dist/esm/v2/components/CategoryTag.js +44 -27
  79. package/dist/esm/v2/components/CategoryTag.js.map +1 -1
  80. package/dist/esm/v2/components/Checkbox.js +32 -38
  81. package/dist/esm/v2/components/Checkbox.js.map +1 -1
  82. package/dist/esm/v2/components/Chip.js +23 -36
  83. package/dist/esm/v2/components/Chip.js.map +1 -1
  84. package/dist/esm/v2/components/Combobox.js +112 -136
  85. package/dist/esm/v2/components/Combobox.js.map +1 -1
  86. package/dist/esm/v2/components/CommandPalette.js +113 -198
  87. package/dist/esm/v2/components/CommandPalette.js.map +1 -1
  88. package/dist/esm/v2/components/ConfirmDialog.js +36 -45
  89. package/dist/esm/v2/components/ConfirmDialog.js.map +1 -1
  90. package/dist/esm/v2/components/DatePicker.js +78 -81
  91. package/dist/esm/v2/components/DatePicker.js.map +1 -1
  92. package/dist/esm/v2/components/DateRangePicker.js +63 -74
  93. package/dist/esm/v2/components/DateRangePicker.js.map +1 -1
  94. package/dist/esm/v2/components/DateTimePicker.js +81 -86
  95. package/dist/esm/v2/components/DateTimePicker.js.map +1 -1
  96. package/dist/esm/v2/components/Drawer.js +71 -65
  97. package/dist/esm/v2/components/Drawer.js.map +1 -1
  98. package/dist/esm/v2/components/Dropzone.js +130 -177
  99. package/dist/esm/v2/components/Dropzone.js.map +1 -1
  100. package/dist/esm/v2/components/EmptyState.js +9 -9
  101. package/dist/esm/v2/components/EmptyState.js.map +1 -1
  102. package/dist/esm/v2/components/FavoriteToggle.js +24 -33
  103. package/dist/esm/v2/components/FavoriteToggle.js.map +1 -1
  104. package/dist/esm/v2/components/Field.js +155 -59
  105. package/dist/esm/v2/components/Field.js.map +1 -1
  106. package/dist/esm/v2/components/FieldError.js +9 -13
  107. package/dist/esm/v2/components/FieldError.js.map +1 -1
  108. package/dist/esm/v2/components/FieldHelp.js +28 -49
  109. package/dist/esm/v2/components/FieldHelp.js.map +1 -1
  110. package/dist/esm/v2/components/FileCard.js +14 -19
  111. package/dist/esm/v2/components/FileCard.js.map +1 -1
  112. package/dist/esm/v2/components/FilterTab.js +22 -31
  113. package/dist/esm/v2/components/FilterTab.js.map +1 -1
  114. package/dist/esm/v2/components/ForbiddenPage.js +28 -8
  115. package/dist/esm/v2/components/ForbiddenPage.js.map +1 -1
  116. package/dist/esm/v2/components/FormGrid.js +48 -54
  117. package/dist/esm/v2/components/FormGrid.js.map +1 -1
  118. package/dist/esm/v2/components/FormikDisplay.js +98 -24
  119. package/dist/esm/v2/components/FormikDisplay.js.map +1 -1
  120. package/dist/esm/v2/components/Input.js +75 -34
  121. package/dist/esm/v2/components/Input.js.map +1 -1
  122. package/dist/esm/v2/components/KPICard.js +42 -51
  123. package/dist/esm/v2/components/KPICard.js.map +1 -1
  124. package/dist/esm/v2/components/KPIStrip.js +9 -15
  125. package/dist/esm/v2/components/KPIStrip.js.map +1 -1
  126. package/dist/esm/v2/components/KV.js +16 -23
  127. package/dist/esm/v2/components/KV.js.map +1 -1
  128. package/dist/esm/v2/components/KVGrid.js +15 -23
  129. package/dist/esm/v2/components/KVGrid.js.map +1 -1
  130. package/dist/esm/v2/components/Layout.js +81 -117
  131. package/dist/esm/v2/components/Layout.js.map +1 -1
  132. package/dist/esm/v2/components/MobileRowCard.js +64 -75
  133. package/dist/esm/v2/components/MobileRowCard.js.map +1 -1
  134. package/dist/esm/v2/components/Modal.js +44 -53
  135. package/dist/esm/v2/components/Modal.js.map +1 -1
  136. package/dist/esm/v2/components/NetworkErrorPage.js +28 -11
  137. package/dist/esm/v2/components/NetworkErrorPage.js.map +1 -1
  138. package/dist/esm/v2/components/NotFoundPage.js +28 -9
  139. package/dist/esm/v2/components/NotFoundPage.js.map +1 -1
  140. package/dist/esm/v2/components/NumberInput.js +77 -107
  141. package/dist/esm/v2/components/NumberInput.js.map +1 -1
  142. package/dist/esm/v2/components/OverflowMenu.js +24 -42
  143. package/dist/esm/v2/components/OverflowMenu.js.map +1 -1
  144. package/dist/esm/v2/components/PdfViewer.js +24 -33
  145. package/dist/esm/v2/components/PdfViewer.js.map +1 -1
  146. package/dist/esm/v2/components/ProgressBar.js +28 -36
  147. package/dist/esm/v2/components/ProgressBar.js.map +1 -1
  148. package/dist/esm/v2/components/Radio.js +49 -57
  149. package/dist/esm/v2/components/Radio.js.map +1 -1
  150. package/dist/esm/v2/components/SectionErrorBoundary.js +84 -130
  151. package/dist/esm/v2/components/SectionErrorBoundary.js.map +1 -1
  152. package/dist/esm/v2/components/SectionHeader.js +24 -31
  153. package/dist/esm/v2/components/SectionHeader.js.map +1 -1
  154. package/dist/esm/v2/components/Segmented.js +59 -84
  155. package/dist/esm/v2/components/Segmented.js.map +1 -1
  156. package/dist/esm/v2/components/Select.js +100 -138
  157. package/dist/esm/v2/components/Select.js.map +1 -1
  158. package/dist/esm/v2/components/ServerErrorPage.js +27 -10
  159. package/dist/esm/v2/components/ServerErrorPage.js.map +1 -1
  160. package/dist/esm/v2/components/Skeleton.js +81 -96
  161. package/dist/esm/v2/components/Skeleton.js.map +1 -1
  162. package/dist/esm/v2/components/SkipLink.js +6 -7
  163. package/dist/esm/v2/components/SkipLink.js.map +1 -1
  164. package/dist/esm/v2/components/Spinner.js +13 -22
  165. package/dist/esm/v2/components/Spinner.js.map +1 -1
  166. package/dist/esm/v2/components/Status.js +14 -25
  167. package/dist/esm/v2/components/Status.js.map +1 -1
  168. package/dist/esm/v2/components/Stepper.js +68 -71
  169. package/dist/esm/v2/components/Stepper.js.map +1 -1
  170. package/dist/esm/v2/components/Surface.js +25 -44
  171. package/dist/esm/v2/components/Surface.js.map +1 -1
  172. package/dist/esm/v2/components/Switch.js +21 -29
  173. package/dist/esm/v2/components/Switch.js.map +1 -1
  174. package/dist/esm/v2/components/TabPanel.js +84 -0
  175. package/dist/esm/v2/components/TabPanel.js.map +1 -0
  176. package/dist/esm/v2/components/Tabs.js +43 -19
  177. package/dist/esm/v2/components/Tabs.js.map +1 -1
  178. package/dist/esm/v2/components/TelInput.js +75 -108
  179. package/dist/esm/v2/components/TelInput.js.map +1 -1
  180. package/dist/esm/v2/components/Textarea.js +21 -30
  181. package/dist/esm/v2/components/Textarea.js.map +1 -1
  182. package/dist/esm/v2/components/TimePicker.js +59 -69
  183. package/dist/esm/v2/components/TimePicker.js.map +1 -1
  184. package/dist/esm/v2/components/Toast.js +109 -163
  185. package/dist/esm/v2/components/Toast.js.map +1 -1
  186. package/dist/esm/v2/components/Tooltip.js +18 -31
  187. package/dist/esm/v2/components/Tooltip.js.map +1 -1
  188. package/dist/esm/v2/components/_ErrorPageBody.js +6 -5
  189. package/dist/esm/v2/components/_ErrorPageBody.js.map +1 -1
  190. package/dist/esm/v2/components/_pickerShared.js +2 -2
  191. package/dist/esm/v2/components/_pickerShared.js.map +1 -1
  192. package/dist/esm/v2/components/index.js +37 -0
  193. package/dist/esm/v2/components/index.js.map +1 -1
  194. package/dist/esm/v2/hooks/index.js +62 -0
  195. package/dist/esm/v2/hooks/index.js.map +1 -1
  196. package/dist/esm/v2/hooks/useAppliedFilters.js +112 -0
  197. package/dist/esm/v2/hooks/useAppliedFilters.js.map +1 -0
  198. package/dist/esm/v2/hooks/useDebouncedCallback.js +82 -0
  199. package/dist/esm/v2/hooks/useDebouncedCallback.js.map +1 -0
  200. package/dist/esm/v2/hooks/useDelayedFlag.js +5 -19
  201. package/dist/esm/v2/hooks/useDelayedFlag.js.map +1 -1
  202. package/dist/esm/v2/hooks/useDensity.js +13 -17
  203. package/dist/esm/v2/hooks/useDensity.js.map +1 -1
  204. package/dist/esm/v2/hooks/useFocusFirstError.js +25 -33
  205. package/dist/esm/v2/hooks/useFocusFirstError.js.map +1 -1
  206. package/dist/esm/v2/hooks/useFocusOnRouteChange.js +81 -0
  207. package/dist/esm/v2/hooks/useFocusOnRouteChange.js.map +1 -0
  208. package/dist/esm/v2/hooks/useFocusTrap.js +19 -23
  209. package/dist/esm/v2/hooks/useFocusTrap.js.map +1 -1
  210. package/dist/esm/v2/hooks/useFormAutoSave.js +38 -53
  211. package/dist/esm/v2/hooks/useFormAutoSave.js.map +1 -1
  212. package/dist/esm/v2/hooks/useFormCompletionProgress.js +32 -51
  213. package/dist/esm/v2/hooks/useFormCompletionProgress.js.map +1 -1
  214. package/dist/esm/v2/hooks/useKeyboardShortcuts.js +125 -0
  215. package/dist/esm/v2/hooks/useKeyboardShortcuts.js.map +1 -0
  216. package/dist/esm/v2/hooks/usePrefersReducedMotion.js +99 -0
  217. package/dist/esm/v2/hooks/usePrefersReducedMotion.js.map +1 -0
  218. package/dist/esm/v2/hooks/useResolvedDensity.js +2 -10
  219. package/dist/esm/v2/hooks/useResolvedDensity.js.map +1 -1
  220. package/dist/esm/v2/hooks/useSortedRows.js +3 -5
  221. package/dist/esm/v2/hooks/useSortedRows.js.map +1 -1
  222. package/dist/esm/v2/hooks/useTabLoading.js +6 -21
  223. package/dist/esm/v2/hooks/useTabLoading.js.map +1 -1
  224. package/dist/esm/v2/index.js +2 -3
  225. package/dist/esm/v2/index.js.map +1 -1
  226. package/dist/esm/v2/modalContext.js +2 -2
  227. package/dist/esm/v2/modalContext.js.map +1 -1
  228. package/dist/esm/v2/models/favorite.js.map +1 -1
  229. package/dist/esm/v2/models/personalization.js.map +1 -1
  230. package/dist/esm/v2/models/referentiel.js.map +1 -1
  231. package/dist/esm/v2/models/savedFilter.js.map +1 -1
  232. package/dist/esm/v2/patterns/ActionBar.js +115 -159
  233. package/dist/esm/v2/patterns/ActionBar.js.map +1 -1
  234. package/dist/esm/v2/patterns/AppMain.js +108 -0
  235. package/dist/esm/v2/patterns/AppMain.js.map +1 -0
  236. package/dist/esm/v2/patterns/BulkActionBar.js +31 -34
  237. package/dist/esm/v2/patterns/BulkActionBar.js.map +1 -1
  238. package/dist/esm/v2/patterns/ChartFigure.js +151 -0
  239. package/dist/esm/v2/patterns/ChartFigure.js.map +1 -0
  240. package/dist/esm/v2/patterns/CollapsibleDataGrid.js +111 -152
  241. package/dist/esm/v2/patterns/CollapsibleDataGrid.js.map +1 -1
  242. package/dist/esm/v2/patterns/ColumnsToggle.js +43 -77
  243. package/dist/esm/v2/patterns/ColumnsToggle.js.map +1 -1
  244. package/dist/esm/v2/patterns/DataGrid.js +221 -255
  245. package/dist/esm/v2/patterns/DataGrid.js.map +1 -1
  246. package/dist/esm/v2/patterns/DataGridSettingsMenu.js +76 -94
  247. package/dist/esm/v2/patterns/DataGridSettingsMenu.js.map +1 -1
  248. package/dist/esm/v2/patterns/DataGridToolbar.js +85 -89
  249. package/dist/esm/v2/patterns/DataGridToolbar.js.map +1 -1
  250. package/dist/esm/v2/patterns/DataGridVirtualized.js +141 -182
  251. package/dist/esm/v2/patterns/DataGridVirtualized.js.map +1 -1
  252. package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js +26 -30
  253. package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
  254. package/dist/esm/v2/patterns/DetailSplit.js +108 -0
  255. package/dist/esm/v2/patterns/DetailSplit.js.map +1 -0
  256. package/dist/esm/v2/patterns/FavoriteColumn.js +15 -17
  257. package/dist/esm/v2/patterns/FavoriteColumn.js.map +1 -1
  258. package/dist/esm/v2/patterns/FavoritesFilter.js +30 -39
  259. package/dist/esm/v2/patterns/FavoritesFilter.js.map +1 -1
  260. package/dist/esm/v2/patterns/FilterTabBar.js +112 -0
  261. package/dist/esm/v2/patterns/FilterTabBar.js.map +1 -0
  262. package/dist/esm/v2/patterns/FormErrorSummary.js +12 -13
  263. package/dist/esm/v2/patterns/FormErrorSummary.js.map +1 -1
  264. package/dist/esm/v2/patterns/FormPageShell.js +43 -41
  265. package/dist/esm/v2/patterns/FormPageShell.js.map +1 -1
  266. package/dist/esm/v2/patterns/FormSection.js +30 -38
  267. package/dist/esm/v2/patterns/FormSection.js.map +1 -1
  268. package/dist/esm/v2/patterns/FormikCheckbox.js +29 -39
  269. package/dist/esm/v2/patterns/FormikCheckbox.js.map +1 -1
  270. package/dist/esm/v2/patterns/FormikCheckboxGroup.js +56 -60
  271. package/dist/esm/v2/patterns/FormikCheckboxGroup.js.map +1 -1
  272. package/dist/esm/v2/patterns/FormikCombobox.js +51 -69
  273. package/dist/esm/v2/patterns/FormikCombobox.js.map +1 -1
  274. package/dist/esm/v2/patterns/FormikDatePicker.js +44 -58
  275. package/dist/esm/v2/patterns/FormikDatePicker.js.map +1 -1
  276. package/dist/esm/v2/patterns/FormikDateTimePicker.js +44 -58
  277. package/dist/esm/v2/patterns/FormikDateTimePicker.js.map +1 -1
  278. package/dist/esm/v2/patterns/FormikErrorFocus.js +22 -23
  279. package/dist/esm/v2/patterns/FormikErrorFocus.js.map +1 -1
  280. package/dist/esm/v2/patterns/FormikErrorSummary.js +89 -0
  281. package/dist/esm/v2/patterns/FormikErrorSummary.js.map +1 -0
  282. package/dist/esm/v2/patterns/FormikFile.js +94 -78
  283. package/dist/esm/v2/patterns/FormikFile.js.map +1 -1
  284. package/dist/esm/v2/patterns/FormikInput.js +40 -53
  285. package/dist/esm/v2/patterns/FormikInput.js.map +1 -1
  286. package/dist/esm/v2/patterns/FormikRadioGroup.js +39 -51
  287. package/dist/esm/v2/patterns/FormikRadioGroup.js.map +1 -1
  288. package/dist/esm/v2/patterns/FormikReferentielField.js +49 -59
  289. package/dist/esm/v2/patterns/FormikReferentielField.js.map +1 -1
  290. package/dist/esm/v2/patterns/FormikSelect.js +64 -87
  291. package/dist/esm/v2/patterns/FormikSelect.js.map +1 -1
  292. package/dist/esm/v2/patterns/FormikTextarea.js +30 -46
  293. package/dist/esm/v2/patterns/FormikTextarea.js.map +1 -1
  294. package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js +53 -71
  295. package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
  296. package/dist/esm/v2/patterns/NetworkErrorBanner.js +6 -7
  297. package/dist/esm/v2/patterns/NetworkErrorBanner.js.map +1 -1
  298. package/dist/esm/v2/patterns/PageContent.js +10 -14
  299. package/dist/esm/v2/patterns/PageContent.js.map +1 -1
  300. package/dist/esm/v2/patterns/PreviewDrawer.js +153 -0
  301. package/dist/esm/v2/patterns/PreviewDrawer.js.map +1 -0
  302. package/dist/esm/v2/patterns/ReferentielField.js +327 -312
  303. package/dist/esm/v2/patterns/ReferentielField.js.map +1 -1
  304. package/dist/esm/v2/patterns/RowFavoriteToggle.js +27 -22
  305. package/dist/esm/v2/patterns/RowFavoriteToggle.js.map +1 -1
  306. package/dist/esm/v2/patterns/SaveFilterDialog.js +38 -66
  307. package/dist/esm/v2/patterns/SaveFilterDialog.js.map +1 -1
  308. package/dist/esm/v2/patterns/SavedFiltersMenu.js +62 -81
  309. package/dist/esm/v2/patterns/SavedFiltersMenu.js.map +1 -1
  310. package/dist/esm/v2/patterns/SkeletonPageShell.js +106 -129
  311. package/dist/esm/v2/patterns/SkeletonPageShell.js.map +1 -1
  312. package/dist/esm/v2/patterns/SortableHeader.js +22 -45
  313. package/dist/esm/v2/patterns/SortableHeader.js.map +1 -1
  314. package/dist/esm/v2/patterns/Tour.js +94 -120
  315. package/dist/esm/v2/patterns/Tour.js.map +1 -1
  316. package/dist/esm/v2/patterns/_dataGridShared.js +107 -128
  317. package/dist/esm/v2/patterns/_dataGridShared.js.map +1 -1
  318. package/dist/esm/v2/patterns/_pickerSerialisation.js +6 -8
  319. package/dist/esm/v2/patterns/_pickerSerialisation.js.map +1 -1
  320. package/dist/esm/v2/patterns/_sort.js +17 -33
  321. package/dist/esm/v2/patterns/_sort.js.map +1 -1
  322. package/dist/esm/v2/patterns/_useColumnReorder.js +122 -160
  323. package/dist/esm/v2/patterns/_useColumnReorder.js.map +1 -1
  324. package/dist/esm/v2/patterns/_useColumnResize.js +78 -96
  325. package/dist/esm/v2/patterns/_useColumnResize.js.map +1 -1
  326. package/dist/esm/v2/patterns/filterCriteria.js +102 -0
  327. package/dist/esm/v2/patterns/filterCriteria.js.map +1 -0
  328. package/dist/esm/v2/patterns/index.js +152 -0
  329. package/dist/esm/v2/patterns/index.js.map +1 -1
  330. package/dist/esm/v2/patterns/rowActions.js +223 -0
  331. package/dist/esm/v2/patterns/rowActions.js.map +1 -0
  332. package/dist/esm/v2/personalization/PersonalizationProvider.js +50 -47
  333. package/dist/esm/v2/personalization/PersonalizationProvider.js.map +1 -1
  334. package/dist/esm/v2/personalization/adapters/_storageKey.js +5 -5
  335. package/dist/esm/v2/personalization/adapters/_storageKey.js.map +1 -1
  336. package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js +22 -23
  337. package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
  338. package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js +13 -13
  339. package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
  340. package/dist/esm/v2/personalization/capabilities/favorites.js +36 -60
  341. package/dist/esm/v2/personalization/capabilities/favorites.js.map +1 -1
  342. package/dist/esm/v2/personalization/capabilities/favoritesView.js +22 -34
  343. package/dist/esm/v2/personalization/capabilities/favoritesView.js.map +1 -1
  344. package/dist/esm/v2/personalization/capabilities/gridPreferences.js +28 -34
  345. package/dist/esm/v2/personalization/capabilities/gridPreferences.js.map +1 -1
  346. package/dist/esm/v2/personalization/capabilities/reviveSavedCriteria.js +119 -0
  347. package/dist/esm/v2/personalization/capabilities/reviveSavedCriteria.js.map +1 -0
  348. package/dist/esm/v2/personalization/capabilities/savedFilters.js +90 -98
  349. package/dist/esm/v2/personalization/capabilities/savedFilters.js.map +1 -1
  350. package/dist/esm/v2/personalization/createPersonalizationStore.js +78 -181
  351. package/dist/esm/v2/personalization/createPersonalizationStore.js.map +1 -1
  352. package/dist/esm/v2/personalization/index.js +17 -0
  353. package/dist/esm/v2/personalization/index.js.map +1 -1
  354. package/dist/esm/v2/personalization/personalizationContext.js +9 -9
  355. package/dist/esm/v2/personalization/personalizationContext.js.map +1 -1
  356. package/dist/esm/v2/personalization/schema.js +8 -9
  357. package/dist/esm/v2/personalization/schema.js.map +1 -1
  358. package/dist/esm/v2/referentiel/ReferentielProvider.js +27 -42
  359. package/dist/esm/v2/referentiel/ReferentielProvider.js.map +1 -1
  360. package/dist/esm/v2/referentiel/types.js +2 -0
  361. package/dist/esm/v2/referentiel/types.js.map +1 -0
  362. package/dist/esm/v2/referentiel/useReferentielClient.js +10 -11
  363. package/dist/esm/v2/referentiel/useReferentielClient.js.map +1 -1
  364. package/dist/esm/v2/referentiel/useReferentielOptions.js +60 -117
  365. package/dist/esm/v2/referentiel/useReferentielOptions.js.map +1 -1
  366. package/dist/esm/v2/referentiel/useReferentielSearch.js +37 -91
  367. package/dist/esm/v2/referentiel/useReferentielSearch.js.map +1 -1
  368. package/dist/esm/v2/theme/_brand.js +8 -24
  369. package/dist/esm/v2/theme/_brand.js.map +1 -1
  370. package/dist/esm/v2/theme/_brandSecondary.js +8 -24
  371. package/dist/esm/v2/theme/_brandSecondary.js.map +1 -1
  372. package/dist/esm/v2/theme/createPortnetTheme.js +51 -61
  373. package/dist/esm/v2/theme/createPortnetTheme.js.map +1 -1
  374. package/dist/esm/v2/theme/cssVariables.js +62 -69
  375. package/dist/esm/v2/theme/cssVariables.js.map +1 -1
  376. package/dist/esm/v2/theme/index.js +5 -5
  377. package/dist/esm/v2/theme/index.js.map +1 -1
  378. package/dist/esm/v2/tokens/breakpoints.js +14 -14
  379. package/dist/esm/v2/tokens/breakpoints.js.map +1 -1
  380. package/dist/esm/v2/tokens/chart.js +261 -0
  381. package/dist/esm/v2/tokens/chart.js.map +1 -0
  382. package/dist/esm/v2/tokens/colors.js +22 -22
  383. package/dist/esm/v2/tokens/colors.js.map +1 -1
  384. package/dist/esm/v2/tokens/density.js +62 -7
  385. package/dist/esm/v2/tokens/density.js.map +1 -1
  386. package/dist/esm/v2/tokens/index.js +49 -34
  387. package/dist/esm/v2/tokens/index.js.map +1 -1
  388. package/dist/esm/v2/tokens/motion.js +12 -20
  389. package/dist/esm/v2/tokens/motion.js.map +1 -1
  390. package/dist/esm/v2/tokens/radius.js +1 -1
  391. package/dist/esm/v2/tokens/radius.js.map +1 -1
  392. package/dist/esm/v2/tokens/shadows.js +6 -6
  393. package/dist/esm/v2/tokens/shadows.js.map +1 -1
  394. package/dist/esm/v2/tokens/spacing.js +2 -2
  395. package/dist/esm/v2/tokens/spacing.js.map +1 -1
  396. package/dist/esm/v2/tokens/state.js +1 -1
  397. package/dist/esm/v2/tokens/state.js.map +1 -1
  398. package/dist/esm/v2/tokens/statusPalette.js +17 -21
  399. package/dist/esm/v2/tokens/statusPalette.js.map +1 -1
  400. package/dist/esm/v2/tokens/tokens.json +6 -1
  401. package/dist/esm/v2/tokens/typography.js +13 -13
  402. package/dist/esm/v2/tokens/typography.js.map +1 -1
  403. package/dist/esm/v2/tokens/zIndex.js +1 -1
  404. package/dist/esm/v2/tokens/zIndex.js.map +1 -1
  405. package/dist/esm/v2/types/datagrid.js.map +1 -1
  406. package/dist/esm/v2/utils/apiError.js +16 -37
  407. package/dist/esm/v2/utils/apiError.js.map +1 -1
  408. package/dist/esm/v2/utils/contrast.js +31 -32
  409. package/dist/esm/v2/utils/contrast.js.map +1 -1
  410. package/dist/esm/v2/utils/cx.js +5 -25
  411. package/dist/esm/v2/utils/cx.js.map +1 -1
  412. package/dist/esm/v2/utils/fileDownload.js +23 -26
  413. package/dist/esm/v2/utils/fileDownload.js.map +1 -1
  414. package/dist/esm/v2/utils/fileValidation.js +209 -0
  415. package/dist/esm/v2/utils/fileValidation.js.map +1 -0
  416. package/dist/esm/v2/utils/fmtDate.js +111 -0
  417. package/dist/esm/v2/utils/fmtDate.js.map +1 -0
  418. package/dist/esm/v2/utils/fmtMoney.js +8 -10
  419. package/dist/esm/v2/utils/fmtMoney.js.map +1 -1
  420. package/dist/esm/v2/utils/formikErrors.js +78 -0
  421. package/dist/esm/v2/utils/formikErrors.js.map +1 -0
  422. package/dist/esm/v2/utils/index.js +35 -2
  423. package/dist/esm/v2/utils/index.js.map +1 -1
  424. package/dist/esm/v2/utils/mergeLabels.js +7 -12
  425. package/dist/esm/v2/utils/mergeLabels.js.map +1 -1
  426. package/dist/esm/v2/utils/networkStatus.js +12 -12
  427. package/dist/esm/v2/utils/networkStatus.js.map +1 -1
  428. package/dist/index.d.ts +7 -1
  429. package/dist/index.d.ts.map +1 -1
  430. package/dist/index.js +110 -49
  431. package/dist/index.js.map +1 -1
  432. package/dist/v2/__tests__/AppMain.test.js +133 -0
  433. package/dist/v2/__tests__/AppMain.test.js.map +1 -0
  434. package/dist/v2/__tests__/ChartFigure.test.js +183 -0
  435. package/dist/v2/__tests__/ChartFigure.test.js.map +1 -0
  436. package/dist/v2/__tests__/DataGridRowActionsPropagation.test.js +153 -0
  437. package/dist/v2/__tests__/DataGridRowActionsPropagation.test.js.map +1 -0
  438. package/dist/v2/__tests__/DrawerTactileTargets.test.js +94 -0
  439. package/dist/v2/__tests__/DrawerTactileTargets.test.js.map +1 -0
  440. package/dist/v2/__tests__/FieldError.test.js +82 -49
  441. package/dist/v2/__tests__/FieldError.test.js.map +1 -1
  442. package/dist/v2/__tests__/FieldNaming.test.js +161 -0
  443. package/dist/v2/__tests__/FieldNaming.test.js.map +1 -0
  444. package/dist/v2/__tests__/FieldWidth.test.js +23 -25
  445. package/dist/v2/__tests__/FieldWidth.test.js.map +1 -1
  446. package/dist/v2/__tests__/FileCard.test.js +29 -28
  447. package/dist/v2/__tests__/FileCard.test.js.map +1 -1
  448. package/dist/v2/__tests__/FormikCheckbox.test.js +90 -183
  449. package/dist/v2/__tests__/FormikCheckbox.test.js.map +1 -1
  450. package/dist/v2/__tests__/FormikDateTimePicker.test.js +38 -48
  451. package/dist/v2/__tests__/FormikDateTimePicker.test.js.map +1 -1
  452. package/dist/v2/__tests__/FormikDisplayWidth.test.js +102 -0
  453. package/dist/v2/__tests__/FormikDisplayWidth.test.js.map +1 -0
  454. package/dist/v2/__tests__/FormikRadioGroup.test.js +123 -204
  455. package/dist/v2/__tests__/FormikRadioGroup.test.js.map +1 -1
  456. package/dist/v2/__tests__/MobileRowCard.test.js +63 -61
  457. package/dist/v2/__tests__/MobileRowCard.test.js.map +1 -1
  458. package/dist/v2/__tests__/PreviewDrawer.test.js +169 -0
  459. package/dist/v2/__tests__/PreviewDrawer.test.js.map +1 -0
  460. package/dist/v2/__tests__/ReferentielFieldContainer.test.js +159 -0
  461. package/dist/v2/__tests__/ReferentielFieldContainer.test.js.map +1 -0
  462. package/dist/v2/__tests__/SectionErrorBoundary.test.js +53 -68
  463. package/dist/v2/__tests__/SectionErrorBoundary.test.js.map +1 -1
  464. package/dist/v2/__tests__/apiError.test.js +50 -69
  465. package/dist/v2/__tests__/apiError.test.js.map +1 -1
  466. package/dist/v2/__tests__/banned-patterns.test.js +42 -123
  467. package/dist/v2/__tests__/banned-patterns.test.js.map +1 -1
  468. package/dist/v2/__tests__/chart-palette.test.js +205 -0
  469. package/dist/v2/__tests__/chart-palette.test.js.map +1 -0
  470. package/dist/v2/__tests__/contrast-palette.test.js +42 -74
  471. package/dist/v2/__tests__/contrast-palette.test.js.map +1 -1
  472. package/dist/v2/__tests__/cssVariables.test.js +44 -51
  473. package/dist/v2/__tests__/cssVariables.test.js.map +1 -1
  474. package/dist/v2/__tests__/fileValidation.test.js +136 -0
  475. package/dist/v2/__tests__/fileValidation.test.js.map +1 -0
  476. package/dist/v2/__tests__/filterCriteria.test.js +324 -0
  477. package/dist/v2/__tests__/filterCriteria.test.js.map +1 -0
  478. package/dist/v2/__tests__/fmtDate.test.js +69 -0
  479. package/dist/v2/__tests__/fmtDate.test.js.map +1 -0
  480. package/dist/v2/__tests__/gap-leakage-refonte.test.js +221 -0
  481. package/dist/v2/__tests__/gap-leakage-refonte.test.js.map +1 -0
  482. package/dist/v2/__tests__/labels-merge.test.js +23 -27
  483. package/dist/v2/__tests__/labels-merge.test.js.map +1 -1
  484. package/dist/v2/__tests__/locale-fallback.test.js +47 -52
  485. package/dist/v2/__tests__/locale-fallback.test.js.map +1 -1
  486. package/dist/v2/__tests__/reviveSavedCriteria.test.js +144 -0
  487. package/dist/v2/__tests__/reviveSavedCriteria.test.js.map +1 -0
  488. package/dist/v2/__tests__/rowActions.test.js +186 -0
  489. package/dist/v2/__tests__/rowActions.test.js.map +1 -0
  490. package/dist/v2/__tests__/useFocusOnRouteChange.test.js +156 -0
  491. package/dist/v2/__tests__/useFocusOnRouteChange.test.js.map +1 -0
  492. package/dist/v2/__tests__/useFocusTrap.test.js +270 -407
  493. package/dist/v2/__tests__/useFocusTrap.test.js.map +1 -1
  494. package/dist/v2/__tests__/usePrefersReducedMotion.test.js +123 -0
  495. package/dist/v2/__tests__/usePrefersReducedMotion.test.js.map +1 -0
  496. package/dist/v2/components/Accordion.js +60 -82
  497. package/dist/v2/components/Accordion.js.map +1 -1
  498. package/dist/v2/components/ActionStrip.js +40 -52
  499. package/dist/v2/components/ActionStrip.js.map +1 -1
  500. package/dist/v2/components/Banner.js +42 -41
  501. package/dist/v2/components/Banner.js.map +1 -1
  502. package/dist/v2/components/Busy.js +22 -27
  503. package/dist/v2/components/Busy.js.map +1 -1
  504. package/dist/v2/components/Button.js +39 -50
  505. package/dist/v2/components/Button.js.map +1 -1
  506. package/dist/v2/components/CategoryTag.d.ts.map +1 -1
  507. package/dist/v2/components/CategoryTag.js +49 -32
  508. package/dist/v2/components/CategoryTag.js.map +1 -1
  509. package/dist/v2/components/Checkbox.js +39 -45
  510. package/dist/v2/components/Checkbox.js.map +1 -1
  511. package/dist/v2/components/Chip.js +29 -42
  512. package/dist/v2/components/Chip.js.map +1 -1
  513. package/dist/v2/components/Combobox.js +122 -144
  514. package/dist/v2/components/Combobox.js.map +1 -1
  515. package/dist/v2/components/CommandPalette.js +138 -225
  516. package/dist/v2/components/CommandPalette.js.map +1 -1
  517. package/dist/v2/components/ConfirmDialog.js +46 -56
  518. package/dist/v2/components/ConfirmDialog.js.map +1 -1
  519. package/dist/v2/components/DatePicker.js +81 -86
  520. package/dist/v2/components/DatePicker.js.map +1 -1
  521. package/dist/v2/components/DateRangePicker.js +77 -87
  522. package/dist/v2/components/DateRangePicker.js.map +1 -1
  523. package/dist/v2/components/DateTimePicker.js +84 -91
  524. package/dist/v2/components/DateTimePicker.js.map +1 -1
  525. package/dist/v2/components/Drawer.d.ts.map +1 -1
  526. package/dist/v2/components/Drawer.js +93 -88
  527. package/dist/v2/components/Drawer.js.map +1 -1
  528. package/dist/v2/components/Dropzone.js +150 -196
  529. package/dist/v2/components/Dropzone.js.map +1 -1
  530. package/dist/v2/components/EmptyState.js +18 -20
  531. package/dist/v2/components/EmptyState.js.map +1 -1
  532. package/dist/v2/components/FavoriteToggle.js +28 -39
  533. package/dist/v2/components/FavoriteToggle.js.map +1 -1
  534. package/dist/v2/components/Field.d.ts +62 -4
  535. package/dist/v2/components/Field.d.ts.map +1 -1
  536. package/dist/v2/components/Field.js +169 -70
  537. package/dist/v2/components/Field.js.map +1 -1
  538. package/dist/v2/components/FieldError.js +18 -21
  539. package/dist/v2/components/FieldError.js.map +1 -1
  540. package/dist/v2/components/FieldHelp.js +40 -60
  541. package/dist/v2/components/FieldHelp.js.map +1 -1
  542. package/dist/v2/components/FileCard.js +27 -31
  543. package/dist/v2/components/FileCard.js.map +1 -1
  544. package/dist/v2/components/FilterTab.js +30 -38
  545. package/dist/v2/components/FilterTab.js.map +1 -1
  546. package/dist/v2/components/ForbiddenPage.d.ts +25 -1
  547. package/dist/v2/components/ForbiddenPage.d.ts.map +1 -1
  548. package/dist/v2/components/ForbiddenPage.js +37 -17
  549. package/dist/v2/components/ForbiddenPage.js.map +1 -1
  550. package/dist/v2/components/FormGrid.js +53 -59
  551. package/dist/v2/components/FormGrid.js.map +1 -1
  552. package/dist/v2/components/FormikDisplay.d.ts +50 -1
  553. package/dist/v2/components/FormikDisplay.d.ts.map +1 -1
  554. package/dist/v2/components/FormikDisplay.js +108 -33
  555. package/dist/v2/components/FormikDisplay.js.map +1 -1
  556. package/dist/v2/components/Input.d.ts +40 -0
  557. package/dist/v2/components/Input.d.ts.map +1 -1
  558. package/dist/v2/components/Input.js +81 -41
  559. package/dist/v2/components/Input.js.map +1 -1
  560. package/dist/v2/components/KPICard.js +57 -67
  561. package/dist/v2/components/KPICard.js.map +1 -1
  562. package/dist/v2/components/KPIStrip.js +16 -22
  563. package/dist/v2/components/KPIStrip.js.map +1 -1
  564. package/dist/v2/components/KV.js +25 -31
  565. package/dist/v2/components/KV.js.map +1 -1
  566. package/dist/v2/components/KVGrid.js +19 -26
  567. package/dist/v2/components/KVGrid.js.map +1 -1
  568. package/dist/v2/components/Layout.js +91 -120
  569. package/dist/v2/components/Layout.js.map +1 -1
  570. package/dist/v2/components/MobileRowCard.js +79 -91
  571. package/dist/v2/components/MobileRowCard.js.map +1 -1
  572. package/dist/v2/components/Modal.js +61 -69
  573. package/dist/v2/components/Modal.js.map +1 -1
  574. package/dist/v2/components/NetworkErrorPage.d.ts +19 -1
  575. package/dist/v2/components/NetworkErrorPage.d.ts.map +1 -1
  576. package/dist/v2/components/NetworkErrorPage.js +38 -21
  577. package/dist/v2/components/NetworkErrorPage.js.map +1 -1
  578. package/dist/v2/components/NotFoundPage.d.ts +17 -1
  579. package/dist/v2/components/NotFoundPage.d.ts.map +1 -1
  580. package/dist/v2/components/NotFoundPage.js +37 -18
  581. package/dist/v2/components/NotFoundPage.js.map +1 -1
  582. package/dist/v2/components/NumberInput.js +88 -118
  583. package/dist/v2/components/NumberInput.js.map +1 -1
  584. package/dist/v2/components/OverflowMenu.js +38 -56
  585. package/dist/v2/components/OverflowMenu.js.map +1 -1
  586. package/dist/v2/components/PdfViewer.js +34 -45
  587. package/dist/v2/components/PdfViewer.js.map +1 -1
  588. package/dist/v2/components/ProgressBar.js +42 -49
  589. package/dist/v2/components/ProgressBar.js.map +1 -1
  590. package/dist/v2/components/Radio.js +59 -67
  591. package/dist/v2/components/Radio.js.map +1 -1
  592. package/dist/v2/components/SectionErrorBoundary.js +90 -135
  593. package/dist/v2/components/SectionErrorBoundary.js.map +1 -1
  594. package/dist/v2/components/SectionHeader.js +34 -41
  595. package/dist/v2/components/SectionHeader.js.map +1 -1
  596. package/dist/v2/components/Segmented.js +69 -93
  597. package/dist/v2/components/Segmented.js.map +1 -1
  598. package/dist/v2/components/Select.d.ts +26 -2
  599. package/dist/v2/components/Select.d.ts.map +1 -1
  600. package/dist/v2/components/Select.js +120 -155
  601. package/dist/v2/components/Select.js.map +1 -1
  602. package/dist/v2/components/ServerErrorPage.d.ts +27 -1
  603. package/dist/v2/components/ServerErrorPage.d.ts.map +1 -1
  604. package/dist/v2/components/ServerErrorPage.js +37 -20
  605. package/dist/v2/components/ServerErrorPage.js.map +1 -1
  606. package/dist/v2/components/Skeleton.js +86 -100
  607. package/dist/v2/components/Skeleton.js.map +1 -1
  608. package/dist/v2/components/SkipLink.js +9 -12
  609. package/dist/v2/components/SkipLink.js.map +1 -1
  610. package/dist/v2/components/Spinner.js +16 -25
  611. package/dist/v2/components/Spinner.js.map +1 -1
  612. package/dist/v2/components/Status.js +18 -29
  613. package/dist/v2/components/Status.js.map +1 -1
  614. package/dist/v2/components/Stepper.js +80 -82
  615. package/dist/v2/components/Stepper.js.map +1 -1
  616. package/dist/v2/components/Surface.js +34 -49
  617. package/dist/v2/components/Surface.js.map +1 -1
  618. package/dist/v2/components/Switch.js +29 -37
  619. package/dist/v2/components/Switch.js.map +1 -1
  620. package/dist/v2/components/TabPanel.d.ts +17 -0
  621. package/dist/v2/components/TabPanel.d.ts.map +1 -0
  622. package/dist/v2/components/TabPanel.js +90 -0
  623. package/dist/v2/components/TabPanel.js.map +1 -0
  624. package/dist/v2/components/Tabs.d.ts +25 -0
  625. package/dist/v2/components/Tabs.d.ts.map +1 -1
  626. package/dist/v2/components/Tabs.js +53 -29
  627. package/dist/v2/components/Tabs.js.map +1 -1
  628. package/dist/v2/components/TelInput.js +80 -115
  629. package/dist/v2/components/TelInput.js.map +1 -1
  630. package/dist/v2/components/Textarea.js +26 -35
  631. package/dist/v2/components/Textarea.js.map +1 -1
  632. package/dist/v2/components/TimePicker.js +62 -74
  633. package/dist/v2/components/TimePicker.js.map +1 -1
  634. package/dist/v2/components/Toast.js +119 -174
  635. package/dist/v2/components/Toast.js.map +1 -1
  636. package/dist/v2/components/Tooltip.js +23 -38
  637. package/dist/v2/components/Tooltip.js.map +1 -1
  638. package/dist/v2/components/_ErrorPageBody.js +15 -16
  639. package/dist/v2/components/_ErrorPageBody.js.map +1 -1
  640. package/dist/v2/components/_pickerShared.js +5 -5
  641. package/dist/v2/components/_pickerShared.js.map +1 -1
  642. package/dist/v2/components/index.d.ts +40 -1
  643. package/dist/v2/components/index.d.ts.map +1 -1
  644. package/dist/v2/components/index.js +153 -136
  645. package/dist/v2/components/index.js.map +1 -1
  646. package/dist/v2/hooks/index.d.ts +65 -0
  647. package/dist/v2/hooks/index.d.ts.map +1 -1
  648. package/dist/v2/hooks/index.js +63 -24
  649. package/dist/v2/hooks/index.js.map +1 -1
  650. package/dist/v2/hooks/useAppliedFilters.d.ts +102 -0
  651. package/dist/v2/hooks/useAppliedFilters.d.ts.map +1 -0
  652. package/dist/v2/hooks/useAppliedFilters.js +117 -0
  653. package/dist/v2/hooks/useAppliedFilters.js.map +1 -0
  654. package/dist/v2/hooks/useDebouncedCallback.d.ts +64 -0
  655. package/dist/v2/hooks/useDebouncedCallback.d.ts.map +1 -0
  656. package/dist/v2/hooks/useDebouncedCallback.js +87 -0
  657. package/dist/v2/hooks/useDebouncedCallback.js.map +1 -0
  658. package/dist/v2/hooks/useDelayedFlag.js +6 -20
  659. package/dist/v2/hooks/useDelayedFlag.js.map +1 -1
  660. package/dist/v2/hooks/useDensity.d.ts.map +1 -1
  661. package/dist/v2/hooks/useDensity.js +14 -18
  662. package/dist/v2/hooks/useDensity.js.map +1 -1
  663. package/dist/v2/hooks/useFocusFirstError.js +26 -34
  664. package/dist/v2/hooks/useFocusFirstError.js.map +1 -1
  665. package/dist/v2/hooks/useFocusOnRouteChange.d.ts +65 -0
  666. package/dist/v2/hooks/useFocusOnRouteChange.d.ts.map +1 -0
  667. package/dist/v2/hooks/useFocusOnRouteChange.js +88 -0
  668. package/dist/v2/hooks/useFocusOnRouteChange.js.map +1 -0
  669. package/dist/v2/hooks/useFocusTrap.js +20 -24
  670. package/dist/v2/hooks/useFocusTrap.js.map +1 -1
  671. package/dist/v2/hooks/useFormAutoSave.d.ts +4 -4
  672. package/dist/v2/hooks/useFormAutoSave.d.ts.map +1 -1
  673. package/dist/v2/hooks/useFormAutoSave.js +39 -54
  674. package/dist/v2/hooks/useFormAutoSave.js.map +1 -1
  675. package/dist/v2/hooks/useFormCompletionProgress.d.ts +1 -1
  676. package/dist/v2/hooks/useFormCompletionProgress.d.ts.map +1 -1
  677. package/dist/v2/hooks/useFormCompletionProgress.js +33 -52
  678. package/dist/v2/hooks/useFormCompletionProgress.js.map +1 -1
  679. package/dist/v2/hooks/useKeyboardShortcuts.d.ts +25 -0
  680. package/dist/v2/hooks/useKeyboardShortcuts.d.ts.map +1 -0
  681. package/dist/v2/hooks/useKeyboardShortcuts.js +132 -0
  682. package/dist/v2/hooks/useKeyboardShortcuts.js.map +1 -0
  683. package/dist/v2/hooks/usePrefersReducedMotion.d.ts +56 -0
  684. package/dist/v2/hooks/usePrefersReducedMotion.d.ts.map +1 -0
  685. package/dist/v2/hooks/usePrefersReducedMotion.js +105 -0
  686. package/dist/v2/hooks/usePrefersReducedMotion.js.map +1 -0
  687. package/dist/v2/hooks/useResolvedDensity.js +5 -13
  688. package/dist/v2/hooks/useResolvedDensity.js.map +1 -1
  689. package/dist/v2/hooks/useSortedRows.js +4 -6
  690. package/dist/v2/hooks/useSortedRows.js.map +1 -1
  691. package/dist/v2/hooks/useTabLoading.js +7 -22
  692. package/dist/v2/hooks/useTabLoading.js.map +1 -1
  693. package/dist/v2/index.js +143 -145
  694. package/dist/v2/index.js.map +1 -1
  695. package/dist/v2/modalContext.js +2 -2
  696. package/dist/v2/modalContext.js.map +1 -1
  697. package/dist/v2/models/favorite.d.ts +8 -9
  698. package/dist/v2/models/favorite.d.ts.map +1 -1
  699. package/dist/v2/models/favorite.js.map +1 -1
  700. package/dist/v2/models/index.js +4 -4
  701. package/dist/v2/models/index.js.map +1 -1
  702. package/dist/v2/models/personalization.d.ts +44 -48
  703. package/dist/v2/models/personalization.d.ts.map +1 -1
  704. package/dist/v2/models/personalization.js.map +1 -1
  705. package/dist/v2/models/referentiel.d.ts +32 -50
  706. package/dist/v2/models/referentiel.d.ts.map +1 -1
  707. package/dist/v2/models/referentiel.js.map +1 -1
  708. package/dist/v2/models/savedFilter.d.ts +8 -17
  709. package/dist/v2/models/savedFilter.d.ts.map +1 -1
  710. package/dist/v2/models/savedFilter.js.map +1 -1
  711. package/dist/v2/patterns/ActionBar.js +152 -187
  712. package/dist/v2/patterns/ActionBar.js.map +1 -1
  713. package/dist/v2/patterns/AppMain.d.ts +109 -0
  714. package/dist/v2/patterns/AppMain.d.ts.map +1 -0
  715. package/dist/v2/patterns/AppMain.js +115 -0
  716. package/dist/v2/patterns/AppMain.js.map +1 -0
  717. package/dist/v2/patterns/BulkActionBar.js +40 -42
  718. package/dist/v2/patterns/BulkActionBar.js.map +1 -1
  719. package/dist/v2/patterns/ChartFigure.d.ts +124 -0
  720. package/dist/v2/patterns/ChartFigure.d.ts.map +1 -0
  721. package/dist/v2/patterns/ChartFigure.js +159 -0
  722. package/dist/v2/patterns/ChartFigure.js.map +1 -0
  723. package/dist/v2/patterns/CollapsibleDataGrid.js +138 -174
  724. package/dist/v2/patterns/CollapsibleDataGrid.js.map +1 -1
  725. package/dist/v2/patterns/ColumnsToggle.js +60 -94
  726. package/dist/v2/patterns/ColumnsToggle.js.map +1 -1
  727. package/dist/v2/patterns/DataGrid.d.ts.map +1 -1
  728. package/dist/v2/patterns/DataGrid.js +262 -297
  729. package/dist/v2/patterns/DataGrid.js.map +1 -1
  730. package/dist/v2/patterns/DataGridSettingsMenu.d.ts +12 -0
  731. package/dist/v2/patterns/DataGridSettingsMenu.d.ts.map +1 -1
  732. package/dist/v2/patterns/DataGridSettingsMenu.js +104 -121
  733. package/dist/v2/patterns/DataGridSettingsMenu.js.map +1 -1
  734. package/dist/v2/patterns/DataGridToolbar.js +103 -106
  735. package/dist/v2/patterns/DataGridToolbar.js.map +1 -1
  736. package/dist/v2/patterns/DataGridVirtualized.js +179 -217
  737. package/dist/v2/patterns/DataGridVirtualized.js.map +1 -1
  738. package/dist/v2/patterns/DeleteResourceConfirmDialog.js +32 -35
  739. package/dist/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
  740. package/dist/v2/patterns/DetailSplit.d.ts +87 -0
  741. package/dist/v2/patterns/DetailSplit.d.ts.map +1 -0
  742. package/dist/v2/patterns/DetailSplit.js +116 -0
  743. package/dist/v2/patterns/DetailSplit.js.map +1 -0
  744. package/dist/v2/patterns/FavoriteColumn.js +22 -23
  745. package/dist/v2/patterns/FavoriteColumn.js.map +1 -1
  746. package/dist/v2/patterns/FavoritesFilter.js +36 -44
  747. package/dist/v2/patterns/FavoritesFilter.js.map +1 -1
  748. package/dist/v2/patterns/FilterTabBar.d.ts +28 -0
  749. package/dist/v2/patterns/FilterTabBar.d.ts.map +1 -0
  750. package/dist/v2/patterns/FilterTabBar.js +120 -0
  751. package/dist/v2/patterns/FilterTabBar.js.map +1 -0
  752. package/dist/v2/patterns/FormErrorSummary.js +20 -23
  753. package/dist/v2/patterns/FormErrorSummary.js.map +1 -1
  754. package/dist/v2/patterns/FormPageShell.js +53 -50
  755. package/dist/v2/patterns/FormPageShell.js.map +1 -1
  756. package/dist/v2/patterns/FormSection.d.ts +8 -3
  757. package/dist/v2/patterns/FormSection.d.ts.map +1 -1
  758. package/dist/v2/patterns/FormSection.js +44 -51
  759. package/dist/v2/patterns/FormSection.js.map +1 -1
  760. package/dist/v2/patterns/FormikCheckbox.js +36 -45
  761. package/dist/v2/patterns/FormikCheckbox.js.map +1 -1
  762. package/dist/v2/patterns/FormikCheckboxGroup.d.ts +17 -1
  763. package/dist/v2/patterns/FormikCheckboxGroup.d.ts.map +1 -1
  764. package/dist/v2/patterns/FormikCheckboxGroup.js +62 -65
  765. package/dist/v2/patterns/FormikCheckboxGroup.js.map +1 -1
  766. package/dist/v2/patterns/FormikCombobox.js +55 -72
  767. package/dist/v2/patterns/FormikCombobox.js.map +1 -1
  768. package/dist/v2/patterns/FormikDatePicker.js +50 -64
  769. package/dist/v2/patterns/FormikDatePicker.js.map +1 -1
  770. package/dist/v2/patterns/FormikDateTimePicker.js +50 -64
  771. package/dist/v2/patterns/FormikDateTimePicker.js.map +1 -1
  772. package/dist/v2/patterns/FormikErrorFocus.js +25 -26
  773. package/dist/v2/patterns/FormikErrorFocus.js.map +1 -1
  774. package/dist/v2/patterns/FormikErrorSummary.d.ts +74 -0
  775. package/dist/v2/patterns/FormikErrorSummary.d.ts.map +1 -0
  776. package/dist/v2/patterns/FormikErrorSummary.js +97 -0
  777. package/dist/v2/patterns/FormikErrorSummary.js.map +1 -0
  778. package/dist/v2/patterns/FormikFile.d.ts +14 -1
  779. package/dist/v2/patterns/FormikFile.d.ts.map +1 -1
  780. package/dist/v2/patterns/FormikFile.js +99 -83
  781. package/dist/v2/patterns/FormikFile.js.map +1 -1
  782. package/dist/v2/patterns/FormikInput.js +45 -58
  783. package/dist/v2/patterns/FormikInput.js.map +1 -1
  784. package/dist/v2/patterns/FormikRadioGroup.js +45 -56
  785. package/dist/v2/patterns/FormikRadioGroup.js.map +1 -1
  786. package/dist/v2/patterns/FormikReferentielField.d.ts +12 -1
  787. package/dist/v2/patterns/FormikReferentielField.d.ts.map +1 -1
  788. package/dist/v2/patterns/FormikReferentielField.js +54 -64
  789. package/dist/v2/patterns/FormikReferentielField.js.map +1 -1
  790. package/dist/v2/patterns/FormikSelect.js +70 -92
  791. package/dist/v2/patterns/FormikSelect.js.map +1 -1
  792. package/dist/v2/patterns/FormikTextarea.js +35 -51
  793. package/dist/v2/patterns/FormikTextarea.js.map +1 -1
  794. package/dist/v2/patterns/KeyboardShortcutsHelp.js +60 -80
  795. package/dist/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
  796. package/dist/v2/patterns/NetworkErrorBanner.js +13 -16
  797. package/dist/v2/patterns/NetworkErrorBanner.js.map +1 -1
  798. package/dist/v2/patterns/PageContent.js +17 -20
  799. package/dist/v2/patterns/PageContent.js.map +1 -1
  800. package/dist/v2/patterns/PreviewDrawer.d.ts +49 -0
  801. package/dist/v2/patterns/PreviewDrawer.d.ts.map +1 -0
  802. package/dist/v2/patterns/PreviewDrawer.js +159 -0
  803. package/dist/v2/patterns/PreviewDrawer.js.map +1 -0
  804. package/dist/v2/patterns/ReferentielField.d.ts +86 -2
  805. package/dist/v2/patterns/ReferentielField.d.ts.map +1 -1
  806. package/dist/v2/patterns/ReferentielField.js +347 -327
  807. package/dist/v2/patterns/ReferentielField.js.map +1 -1
  808. package/dist/v2/patterns/RowFavoriteToggle.d.ts +6 -0
  809. package/dist/v2/patterns/RowFavoriteToggle.d.ts.map +1 -1
  810. package/dist/v2/patterns/RowFavoriteToggle.js +38 -30
  811. package/dist/v2/patterns/RowFavoriteToggle.js.map +1 -1
  812. package/dist/v2/patterns/SaveFilterDialog.js +50 -77
  813. package/dist/v2/patterns/SaveFilterDialog.js.map +1 -1
  814. package/dist/v2/patterns/SavedFiltersMenu.js +89 -107
  815. package/dist/v2/patterns/SavedFiltersMenu.js.map +1 -1
  816. package/dist/v2/patterns/SkeletonPageShell.js +122 -143
  817. package/dist/v2/patterns/SkeletonPageShell.js.map +1 -1
  818. package/dist/v2/patterns/SortableHeader.js +35 -57
  819. package/dist/v2/patterns/SortableHeader.js.map +1 -1
  820. package/dist/v2/patterns/Tour.js +121 -142
  821. package/dist/v2/patterns/Tour.js.map +1 -1
  822. package/dist/v2/patterns/_dataGridShared.d.ts.map +1 -1
  823. package/dist/v2/patterns/_dataGridShared.js +131 -147
  824. package/dist/v2/patterns/_dataGridShared.js.map +1 -1
  825. package/dist/v2/patterns/_pickerSerialisation.js +9 -10
  826. package/dist/v2/patterns/_pickerSerialisation.js.map +1 -1
  827. package/dist/v2/patterns/_sort.js +17 -33
  828. package/dist/v2/patterns/_sort.js.map +1 -1
  829. package/dist/v2/patterns/_useColumnReorder.js +124 -163
  830. package/dist/v2/patterns/_useColumnReorder.js.map +1 -1
  831. package/dist/v2/patterns/_useColumnResize.js +80 -99
  832. package/dist/v2/patterns/_useColumnResize.js.map +1 -1
  833. package/dist/v2/patterns/filterCriteria.d.ts +78 -0
  834. package/dist/v2/patterns/filterCriteria.d.ts.map +1 -0
  835. package/dist/v2/patterns/filterCriteria.js +110 -0
  836. package/dist/v2/patterns/filterCriteria.js.map +1 -0
  837. package/dist/v2/patterns/index.d.ts +160 -0
  838. package/dist/v2/patterns/index.d.ts.map +1 -1
  839. package/dist/v2/patterns/index.js +157 -79
  840. package/dist/v2/patterns/index.js.map +1 -1
  841. package/dist/v2/patterns/rowActions.d.ts +150 -0
  842. package/dist/v2/patterns/rowActions.d.ts.map +1 -0
  843. package/dist/v2/patterns/rowActions.js +232 -0
  844. package/dist/v2/patterns/rowActions.js.map +1 -0
  845. package/dist/v2/personalization/PersonalizationProvider.d.ts.map +1 -1
  846. package/dist/v2/personalization/PersonalizationProvider.js +57 -53
  847. package/dist/v2/personalization/PersonalizationProvider.js.map +1 -1
  848. package/dist/v2/personalization/adapters/_storageKey.js +5 -5
  849. package/dist/v2/personalization/adapters/_storageKey.js.map +1 -1
  850. package/dist/v2/personalization/adapters/createLocalStorageAdapter.js +25 -24
  851. package/dist/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
  852. package/dist/v2/personalization/adapters/createMemoryAdapter.js +14 -14
  853. package/dist/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
  854. package/dist/v2/personalization/adapters/index.js +5 -5
  855. package/dist/v2/personalization/adapters/index.js.map +1 -1
  856. package/dist/v2/personalization/capabilities/favorites.js +39 -62
  857. package/dist/v2/personalization/capabilities/favorites.js.map +1 -1
  858. package/dist/v2/personalization/capabilities/favoritesView.js +25 -37
  859. package/dist/v2/personalization/capabilities/favoritesView.js.map +1 -1
  860. package/dist/v2/personalization/capabilities/gridPreferences.js +31 -36
  861. package/dist/v2/personalization/capabilities/gridPreferences.js.map +1 -1
  862. package/dist/v2/personalization/capabilities/index.js +12 -12
  863. package/dist/v2/personalization/capabilities/reviveSavedCriteria.d.ts +88 -0
  864. package/dist/v2/personalization/capabilities/reviveSavedCriteria.d.ts.map +1 -0
  865. package/dist/v2/personalization/capabilities/reviveSavedCriteria.js +126 -0
  866. package/dist/v2/personalization/capabilities/reviveSavedCriteria.js.map +1 -0
  867. package/dist/v2/personalization/capabilities/savedFilters.js +93 -100
  868. package/dist/v2/personalization/capabilities/savedFilters.js.map +1 -1
  869. package/dist/v2/personalization/createPersonalizationStore.d.ts.map +1 -1
  870. package/dist/v2/personalization/createPersonalizationStore.js +81 -182
  871. package/dist/v2/personalization/createPersonalizationStore.js.map +1 -1
  872. package/dist/v2/personalization/index.d.ts +16 -0
  873. package/dist/v2/personalization/index.d.ts.map +1 -1
  874. package/dist/v2/personalization/index.js +30 -23
  875. package/dist/v2/personalization/index.js.map +1 -1
  876. package/dist/v2/personalization/personalizationContext.js +10 -12
  877. package/dist/v2/personalization/personalizationContext.js.map +1 -1
  878. package/dist/v2/personalization/schema.js +8 -9
  879. package/dist/v2/personalization/schema.js.map +1 -1
  880. package/dist/v2/referentiel/ReferentielProvider.js +31 -45
  881. package/dist/v2/referentiel/ReferentielProvider.js.map +1 -1
  882. package/dist/v2/referentiel/index.js +11 -13
  883. package/dist/v2/referentiel/index.js.map +1 -1
  884. package/dist/v2/referentiel/types.d.ts +105 -0
  885. package/dist/v2/referentiel/types.d.ts.map +1 -0
  886. package/dist/v2/referentiel/types.js +6 -0
  887. package/dist/v2/referentiel/types.js.map +1 -0
  888. package/dist/v2/referentiel/useReferentielClient.js +13 -16
  889. package/dist/v2/referentiel/useReferentielClient.js.map +1 -1
  890. package/dist/v2/referentiel/useReferentielOptions.d.ts +7 -17
  891. package/dist/v2/referentiel/useReferentielOptions.d.ts.map +1 -1
  892. package/dist/v2/referentiel/useReferentielOptions.js +63 -120
  893. package/dist/v2/referentiel/useReferentielOptions.js.map +1 -1
  894. package/dist/v2/referentiel/useReferentielSearch.d.ts +7 -48
  895. package/dist/v2/referentiel/useReferentielSearch.d.ts.map +1 -1
  896. package/dist/v2/referentiel/useReferentielSearch.js +40 -95
  897. package/dist/v2/referentiel/useReferentielSearch.js.map +1 -1
  898. package/dist/v2/theme/_brand.js +12 -26
  899. package/dist/v2/theme/_brand.js.map +1 -1
  900. package/dist/v2/theme/_brandSecondary.js +12 -26
  901. package/dist/v2/theme/_brandSecondary.js.map +1 -1
  902. package/dist/v2/theme/createPortnetTheme.js +41 -49
  903. package/dist/v2/theme/createPortnetTheme.js.map +1 -1
  904. package/dist/v2/theme/cssVariables.d.ts +3 -3
  905. package/dist/v2/theme/cssVariables.d.ts.map +1 -1
  906. package/dist/v2/theme/cssVariables.js +65 -70
  907. package/dist/v2/theme/cssVariables.js.map +1 -1
  908. package/dist/v2/theme/index.js +10 -10
  909. package/dist/v2/theme/index.js.map +1 -1
  910. package/dist/v2/tokens/breakpoints.js +16 -16
  911. package/dist/v2/tokens/breakpoints.js.map +1 -1
  912. package/dist/v2/tokens/chart.d.ts +103 -0
  913. package/dist/v2/tokens/chart.d.ts.map +1 -0
  914. package/dist/v2/tokens/chart.js +270 -0
  915. package/dist/v2/tokens/chart.js.map +1 -0
  916. package/dist/v2/tokens/colors.js +24 -24
  917. package/dist/v2/tokens/colors.js.map +1 -1
  918. package/dist/v2/tokens/density.d.ts +104 -0
  919. package/dist/v2/tokens/density.d.ts.map +1 -1
  920. package/dist/v2/tokens/density.js +67 -12
  921. package/dist/v2/tokens/density.js.map +1 -1
  922. package/dist/v2/tokens/index.d.ts +50 -1
  923. package/dist/v2/tokens/index.d.ts.map +1 -1
  924. package/dist/v2/tokens/index.js +116 -68
  925. package/dist/v2/tokens/index.js.map +1 -1
  926. package/dist/v2/tokens/motion.js +16 -22
  927. package/dist/v2/tokens/motion.js.map +1 -1
  928. package/dist/v2/tokens/radius.js +3 -3
  929. package/dist/v2/tokens/radius.js.map +1 -1
  930. package/dist/v2/tokens/shadows.js +8 -8
  931. package/dist/v2/tokens/shadows.js.map +1 -1
  932. package/dist/v2/tokens/spacing.js +4 -4
  933. package/dist/v2/tokens/spacing.js.map +1 -1
  934. package/dist/v2/tokens/state.js +3 -3
  935. package/dist/v2/tokens/state.js.map +1 -1
  936. package/dist/v2/tokens/statusPalette.js +21 -23
  937. package/dist/v2/tokens/statusPalette.js.map +1 -1
  938. package/dist/v2/tokens/tokens.json +6 -1
  939. package/dist/v2/tokens/typography.js +15 -15
  940. package/dist/v2/tokens/typography.js.map +1 -1
  941. package/dist/v2/tokens/zIndex.js +3 -3
  942. package/dist/v2/tokens/zIndex.js.map +1 -1
  943. package/dist/v2/types/datagrid.d.ts +9 -1
  944. package/dist/v2/types/datagrid.d.ts.map +1 -1
  945. package/dist/v2/types/datagrid.js.map +1 -1
  946. package/dist/v2/types/index.js +2 -2
  947. package/dist/v2/types/index.js.map +1 -1
  948. package/dist/v2/utils/apiError.js +16 -37
  949. package/dist/v2/utils/apiError.js.map +1 -1
  950. package/dist/v2/utils/contrast.js +31 -32
  951. package/dist/v2/utils/contrast.js.map +1 -1
  952. package/dist/v2/utils/cx.js +7 -27
  953. package/dist/v2/utils/cx.js.map +1 -1
  954. package/dist/v2/utils/fileDownload.js +25 -28
  955. package/dist/v2/utils/fileDownload.js.map +1 -1
  956. package/dist/v2/utils/fileValidation.d.ts +116 -0
  957. package/dist/v2/utils/fileValidation.d.ts.map +1 -0
  958. package/dist/v2/utils/fileValidation.js +220 -0
  959. package/dist/v2/utils/fileValidation.js.map +1 -0
  960. package/dist/v2/utils/fmtDate.d.ts +103 -0
  961. package/dist/v2/utils/fmtDate.d.ts.map +1 -0
  962. package/dist/v2/utils/fmtDate.js +119 -0
  963. package/dist/v2/utils/fmtDate.js.map +1 -0
  964. package/dist/v2/utils/fmtMoney.d.ts +3 -3
  965. package/dist/v2/utils/fmtMoney.d.ts.map +1 -1
  966. package/dist/v2/utils/fmtMoney.js +9 -11
  967. package/dist/v2/utils/fmtMoney.js.map +1 -1
  968. package/dist/v2/utils/formikErrors.d.ts +67 -0
  969. package/dist/v2/utils/formikErrors.d.ts.map +1 -0
  970. package/dist/v2/utils/formikErrors.js +85 -0
  971. package/dist/v2/utils/formikErrors.js.map +1 -0
  972. package/dist/v2/utils/index.d.ts +5 -0
  973. package/dist/v2/utils/index.d.ts.map +1 -1
  974. package/dist/v2/utils/index.js +67 -18
  975. package/dist/v2/utils/index.js.map +1 -1
  976. package/dist/v2/utils/mergeLabels.js +9 -14
  977. package/dist/v2/utils/mergeLabels.js.map +1 -1
  978. package/dist/v2/utils/networkStatus.js +14 -14
  979. package/dist/v2/utils/networkStatus.js.map +1 -1
  980. package/package.json +26 -9
@@ -1,10 +1,3 @@
1
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
2
- function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
3
- function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
4
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
5
- function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
6
- function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
7
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
8
1
  /**
9
2
  * Internal: locale-correct multi-sort for DataGrid / useSortedRows.
10
3
  *
@@ -32,18 +25,18 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
32
25
  * "numeric: true" makes "Item 10" sort AFTER "Item 2" (natural order),
33
26
  * which the prior char-code comparison got backwards.
34
27
  */
35
- var COLLATOR_CACHE = new Map();
28
+ const COLLATOR_CACHE = new Map();
36
29
  function getCollator(locale) {
37
- var key = locale || "fr-FR";
38
- var cached = COLLATOR_CACHE.get(key);
30
+ const key = locale || "fr-FR";
31
+ const cached = COLLATOR_CACHE.get(key);
39
32
  if (cached) return cached;
40
- var collator;
33
+ let collator;
41
34
  try {
42
35
  collator = new Intl.Collator(key, {
43
36
  sensitivity: "accent",
44
37
  numeric: true
45
38
  });
46
- } catch (_unused) {
39
+ } catch {
47
40
  // Invalid BCP-47 tag — fall back to fr-FR (matches the rest of v2's
48
41
  // graceful-locale-fallback contract from Batch 2).
49
42
  collator = new Intl.Collator("fr-FR", {
@@ -64,8 +57,8 @@ function getCollator(locale) {
64
57
  * applySort empty-string behaviour: "" < any non-empty string).
65
58
  */
66
59
  function compareValues(av, bv, collator) {
67
- var aN = av == null || av === "";
68
- var bN = bv == null || bv === "";
60
+ const aN = av == null || av === "";
61
+ const bN = bv == null || bv === "";
69
62
  if (aN && bN) return 0;
70
63
  if (aN) return -1;
71
64
  if (bN) return 1;
@@ -86,25 +79,16 @@ function compareValues(av, bv, collator) {
86
79
  * Returns a NEW sorted array (input is not mutated); the original array
87
80
  * reference is returned untouched when there is nothing to sort.
88
81
  */
89
- export function applySort(rows, sort) {
90
- var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
91
- if (!(sort !== null && sort !== void 0 && sort.length)) return rows;
92
- var collator = getCollator(options.locale);
93
- return _toConsumableArray(rows).sort(function (a, b) {
94
- var _iterator = _createForOfIteratorHelper(sort),
95
- _step;
96
- try {
97
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
98
- var _step$value = _step.value,
99
- key = _step$value.key,
100
- dir = _step$value.dir;
101
- var cmp = compareValues(a[key], b[key], collator);
102
- if (cmp !== 0) return dir === "asc" ? cmp : -cmp;
103
- }
104
- } catch (err) {
105
- _iterator.e(err);
106
- } finally {
107
- _iterator.f();
82
+ export function applySort(rows, sort, options = {}) {
83
+ if (!sort?.length) return rows;
84
+ const collator = getCollator(options.locale);
85
+ return [...rows].sort((a, b) => {
86
+ for (const {
87
+ key,
88
+ dir
89
+ } of sort) {
90
+ const cmp = compareValues(a[key], b[key], collator);
91
+ if (cmp !== 0) return dir === "asc" ? cmp : -cmp;
108
92
  }
109
93
  return 0;
110
94
  });
@@ -1 +1 @@
1
- {"version":3,"file":"_sort.js","names":["COLLATOR_CACHE","Map","getCollator","locale","key","cached","get","collator","Intl","Collator","sensitivity","numeric","_unused","set","compareValues","av","bv","aN","bN","Date","getTime","compare","String","applySort","rows","sort","options","arguments","length","undefined","_toConsumableArray","a","b","_iterator","_createForOfIteratorHelper","_step","s","n","done","_step$value","value","dir","cmp","err","e","f"],"sources":["../../../../src/lib/v2/patterns/_sort.ts"],"sourcesContent":["/**\r\n * Internal: locale-correct multi-sort for DataGrid / useSortedRows.\r\n *\r\n * Extracted verbatim from SortableHeader (Batch 12 / C1) so the sort logic can\r\n * be shared by the SortableHeader pattern (which re-exports `applySort`) and the\r\n * useSortedRows hook — without a hook → component import (a .ts hook importing a\r\n * still-.js component fails build:types under allowJs:false) and without\r\n * duplicating the collation logic. Behaviour is unchanged.\r\n *\r\n * NOT part of the public surface: `applySort` is re-exported from SortableHeader\r\n * (the public name / call site); getCollator + compareValues + the cache are\r\n * internal implementation details that were never exported.\r\n */\r\nimport type { SortDescriptor } from \"../types/common\";\r\nimport type { ApplySortOptions } from \"../types/datagrid\";\r\n\r\n/**\r\n * Module-level cache of Intl.Collator instances keyed by locale tag.\r\n * Collator construction allocates internal locale data (≈100 µs cold)\r\n * — caching matters for hosts that re-sort on every render.\r\n *\r\n * Using \"accent\" sensitivity preserves the prior toLowerCase-based\r\n * behaviour (case-insensitive) while honouring proper locale collation:\r\n * - FR: É sorts as if E (between Élise and Étienne, not after Z).\r\n * - AR: combining marks fold correctly.\r\n * - DE: Umlauts (ä) sort with their base letter.\r\n * \"numeric: true\" makes \"Item 10\" sort AFTER \"Item 2\" (natural order),\r\n * which the prior char-code comparison got backwards.\r\n */\r\nconst COLLATOR_CACHE = new Map<string, Intl.Collator>();\r\n\r\nfunction getCollator(locale?: string): Intl.Collator {\r\n const key = locale || \"fr-FR\";\r\n const cached = COLLATOR_CACHE.get(key);\r\n if (cached) return cached;\r\n let collator: Intl.Collator;\r\n try {\r\n collator = new Intl.Collator(key, { sensitivity: \"accent\", numeric: true });\r\n } catch {\r\n // Invalid BCP-47 tag — fall back to fr-FR (matches the rest of v2's\r\n // graceful-locale-fallback contract from Batch 2).\r\n collator = new Intl.Collator(\"fr-FR\", { sensitivity: \"accent\", numeric: true });\r\n }\r\n COLLATOR_CACHE.set(key, collator);\r\n return collator;\r\n}\r\n\r\n/**\r\n * Compare two cell values with locale-aware semantics. Routes through\r\n * the Collator only for strings or mixed types; numeric / Date pairs\r\n * use native operators (faster + exact).\r\n *\r\n * Null / undefined / empty-string sort FIRST (preserves the prior\r\n * applySort empty-string behaviour: \"\" < any non-empty string).\r\n */\r\nfunction compareValues(av: unknown, bv: unknown, collator: Intl.Collator): number {\r\n const aN = av == null || av === \"\";\r\n const bN = bv == null || bv === \"\";\r\n if (aN && bN) return 0;\r\n if (aN) return -1;\r\n if (bN) return 1;\r\n\r\n if (typeof av === \"number\" && typeof bv === \"number\") {\r\n return av - bv;\r\n }\r\n if (av instanceof Date && bv instanceof Date) {\r\n return av.getTime() - bv.getTime();\r\n }\r\n // String pair — or mixed types coerced to strings. The Collator handles\r\n // both cases identically and respects `numeric: true` so digit runs\r\n // inside a label compare numerically.\r\n return collator.compare(String(av), String(bv));\r\n}\r\n\r\n/**\r\n * Pure helper — applies a multi-sort state to an array of rows.\r\n * Returns a NEW sorted array (input is not mutated); the original array\r\n * reference is returned untouched when there is nothing to sort.\r\n */\r\nexport function applySort<T extends object>(\r\n rows: T[],\r\n sort: readonly SortDescriptor[] | null | undefined,\r\n options: ApplySortOptions = {},\r\n): T[] {\r\n if (!sort?.length) return rows;\r\n const collator = getCollator(options.locale);\r\n return [...rows].sort((a, b) => {\r\n for (const { key, dir } of sort) {\r\n const cmp = compareValues(\r\n (a as Record<string, unknown>)[key],\r\n (b as Record<string, unknown>)[key],\r\n collator,\r\n );\r\n if (cmp !== 0) return dir === \"asc\" ? cmp : -cmp;\r\n }\r\n return 0;\r\n });\r\n}\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"_sort.js","names":["COLLATOR_CACHE","Map","getCollator","locale","key","cached","get","collator","Intl","Collator","sensitivity","numeric","set","compareValues","av","bv","aN","bN","Date","getTime","compare","String","applySort","rows","sort","options","length","a","b","dir","cmp"],"sources":["../../../../src/lib/v2/patterns/_sort.ts"],"sourcesContent":["/**\r\n * Internal: locale-correct multi-sort for DataGrid / useSortedRows.\r\n *\r\n * Extracted verbatim from SortableHeader (Batch 12 / C1) so the sort logic can\r\n * be shared by the SortableHeader pattern (which re-exports `applySort`) and the\r\n * useSortedRows hook — without a hook → component import (a .ts hook importing a\r\n * still-.js component fails build:types under allowJs:false) and without\r\n * duplicating the collation logic. Behaviour is unchanged.\r\n *\r\n * NOT part of the public surface: `applySort` is re-exported from SortableHeader\r\n * (the public name / call site); getCollator + compareValues + the cache are\r\n * internal implementation details that were never exported.\r\n */\r\nimport type { SortDescriptor } from \"../types/common\";\r\nimport type { ApplySortOptions } from \"../types/datagrid\";\r\n\r\n/**\r\n * Module-level cache of Intl.Collator instances keyed by locale tag.\r\n * Collator construction allocates internal locale data (≈100 µs cold)\r\n * — caching matters for hosts that re-sort on every render.\r\n *\r\n * Using \"accent\" sensitivity preserves the prior toLowerCase-based\r\n * behaviour (case-insensitive) while honouring proper locale collation:\r\n * - FR: É sorts as if E (between Élise and Étienne, not after Z).\r\n * - AR: combining marks fold correctly.\r\n * - DE: Umlauts (ä) sort with their base letter.\r\n * \"numeric: true\" makes \"Item 10\" sort AFTER \"Item 2\" (natural order),\r\n * which the prior char-code comparison got backwards.\r\n */\r\nconst COLLATOR_CACHE = new Map<string, Intl.Collator>();\r\n\r\nfunction getCollator(locale?: string): Intl.Collator {\r\n const key = locale || \"fr-FR\";\r\n const cached = COLLATOR_CACHE.get(key);\r\n if (cached) return cached;\r\n let collator: Intl.Collator;\r\n try {\r\n collator = new Intl.Collator(key, { sensitivity: \"accent\", numeric: true });\r\n } catch {\r\n // Invalid BCP-47 tag — fall back to fr-FR (matches the rest of v2's\r\n // graceful-locale-fallback contract from Batch 2).\r\n collator = new Intl.Collator(\"fr-FR\", { sensitivity: \"accent\", numeric: true });\r\n }\r\n COLLATOR_CACHE.set(key, collator);\r\n return collator;\r\n}\r\n\r\n/**\r\n * Compare two cell values with locale-aware semantics. Routes through\r\n * the Collator only for strings or mixed types; numeric / Date pairs\r\n * use native operators (faster + exact).\r\n *\r\n * Null / undefined / empty-string sort FIRST (preserves the prior\r\n * applySort empty-string behaviour: \"\" < any non-empty string).\r\n */\r\nfunction compareValues(av: unknown, bv: unknown, collator: Intl.Collator): number {\r\n const aN = av == null || av === \"\";\r\n const bN = bv == null || bv === \"\";\r\n if (aN && bN) return 0;\r\n if (aN) return -1;\r\n if (bN) return 1;\r\n\r\n if (typeof av === \"number\" && typeof bv === \"number\") {\r\n return av - bv;\r\n }\r\n if (av instanceof Date && bv instanceof Date) {\r\n return av.getTime() - bv.getTime();\r\n }\r\n // String pair — or mixed types coerced to strings. The Collator handles\r\n // both cases identically and respects `numeric: true` so digit runs\r\n // inside a label compare numerically.\r\n return collator.compare(String(av), String(bv));\r\n}\r\n\r\n/**\r\n * Pure helper — applies a multi-sort state to an array of rows.\r\n * Returns a NEW sorted array (input is not mutated); the original array\r\n * reference is returned untouched when there is nothing to sort.\r\n */\r\nexport function applySort<T extends object>(\r\n rows: T[],\r\n sort: readonly SortDescriptor[] | null | undefined,\r\n options: ApplySortOptions = {},\r\n): T[] {\r\n if (!sort?.length) return rows;\r\n const collator = getCollator(options.locale);\r\n return [...rows].sort((a, b) => {\r\n for (const { key, dir } of sort) {\r\n const cmp = compareValues(\r\n (a as Record<string, unknown>)[key],\r\n (b as Record<string, unknown>)[key],\r\n collator,\r\n );\r\n if (cmp !== 0) return dir === \"asc\" ? cmp : -cmp;\r\n }\r\n return 0;\r\n });\r\n}\r\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMA,cAAc,GAAG,IAAIC,GAAG,CAAwB,CAAC;AAEvD,SAASC,WAAWA,CAACC,MAAe,EAAiB;EACnD,MAAMC,GAAG,GAAGD,MAAM,IAAI,OAAO;EAC7B,MAAME,MAAM,GAAGL,cAAc,CAACM,GAAG,CAACF,GAAG,CAAC;EACtC,IAAIC,MAAM,EAAE,OAAOA,MAAM;EACzB,IAAIE,QAAuB;EAC3B,IAAI;IACFA,QAAQ,GAAG,IAAIC,IAAI,CAACC,QAAQ,CAACL,GAAG,EAAE;MAAEM,WAAW,EAAE,QAAQ;MAAEC,OAAO,EAAE;IAAK,CAAC,CAAC;EAC7E,CAAC,CAAC,MAAM;IACN;IACA;IACAJ,QAAQ,GAAG,IAAIC,IAAI,CAACC,QAAQ,CAAC,OAAO,EAAE;MAAEC,WAAW,EAAE,QAAQ;MAAEC,OAAO,EAAE;IAAK,CAAC,CAAC;EACjF;EACAX,cAAc,CAACY,GAAG,CAACR,GAAG,EAAEG,QAAQ,CAAC;EACjC,OAAOA,QAAQ;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASM,aAAaA,CAACC,EAAW,EAAEC,EAAW,EAAER,QAAuB,EAAU;EAChF,MAAMS,EAAE,GAAGF,EAAE,IAAI,IAAI,IAAIA,EAAE,KAAK,EAAE;EAClC,MAAMG,EAAE,GAAGF,EAAE,IAAI,IAAI,IAAIA,EAAE,KAAK,EAAE;EAClC,IAAIC,EAAE,IAAIC,EAAE,EAAE,OAAO,CAAC;EACtB,IAAID,EAAE,EAAE,OAAO,CAAC,CAAC;EACjB,IAAIC,EAAE,EAAE,OAAO,CAAC;EAEhB,IAAI,OAAOH,EAAE,KAAK,QAAQ,IAAI,OAAOC,EAAE,KAAK,QAAQ,EAAE;IACpD,OAAOD,EAAE,GAAGC,EAAE;EAChB;EACA,IAAID,EAAE,YAAYI,IAAI,IAAIH,EAAE,YAAYG,IAAI,EAAE;IAC5C,OAAOJ,EAAE,CAACK,OAAO,CAAC,CAAC,GAAGJ,EAAE,CAACI,OAAO,CAAC,CAAC;EACpC;EACA;EACA;EACA;EACA,OAAOZ,QAAQ,CAACa,OAAO,CAACC,MAAM,CAACP,EAAE,CAAC,EAAEO,MAAM,CAACN,EAAE,CAAC,CAAC;AACjD;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASO,SAASA,CACvBC,IAAS,EACTC,IAAkD,EAClDC,OAAyB,GAAG,CAAC,CAAC,EACzB;EACL,IAAI,CAACD,IAAI,EAAEE,MAAM,EAAE,OAAOH,IAAI;EAC9B,MAAMhB,QAAQ,GAAGL,WAAW,CAACuB,OAAO,CAACtB,MAAM,CAAC;EAC5C,OAAO,CAAC,GAAGoB,IAAI,CAAC,CAACC,IAAI,CAAC,CAACG,CAAC,EAAEC,CAAC,KAAK;IAC9B,KAAK,MAAM;MAAExB,GAAG;MAAEyB;IAAI,CAAC,IAAIL,IAAI,EAAE;MAC/B,MAAMM,GAAG,GAAGjB,aAAa,CACtBc,CAAC,CAA6BvB,GAAG,CAAC,EAClCwB,CAAC,CAA6BxB,GAAG,CAAC,EACnCG,QACF,CAAC;MACD,IAAIuB,GAAG,KAAK,CAAC,EAAE,OAAOD,GAAG,KAAK,KAAK,GAAGC,GAAG,GAAG,CAACA,GAAG;IAClD;IACA,OAAO,CAAC;EACV,CAAC,CAAC;AACJ","ignoreList":[]}
@@ -1,19 +1,3 @@
1
- function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
2
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
3
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
5
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
6
- function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
7
- function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
8
- function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
9
- function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
10
- function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
11
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
12
- function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
13
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
14
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
15
- function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) { ; } } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
16
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
17
1
  import * as React from "react";
18
2
 
19
3
  /**
@@ -58,200 +42,178 @@ import * as React from "react";
58
42
  * onDrop never fires.
59
43
  */
60
44
 
61
- export default function useColumnReorder(columns, columnOrder, onColumnOrderChange) {
62
- var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
63
- var resizeIsActive = options.resizeIsActive;
45
+ export default function useColumnReorder(columns, columnOrder, onColumnOrderChange, options = {}) {
46
+ const {
47
+ resizeIsActive
48
+ } = options;
64
49
 
65
50
  // Effective order = host order, or fallback to the natural columns
66
51
  // sequence. Memoised on the input shapes; no allocation when both
67
52
  // refs are stable.
68
- var effectiveOrder = React.useMemo(function () {
69
- return columnOrder || columns.map(function (c) {
70
- return c.key;
71
- });
72
- }, [columnOrder, columns]);
73
- var _React$useState = React.useState(null),
74
- _React$useState2 = _slicedToArray(_React$useState, 2),
75
- dragKey = _React$useState2[0],
76
- setDragKey = _React$useState2[1];
77
- var _React$useState3 = React.useState(null),
78
- _React$useState4 = _slicedToArray(_React$useState3, 2),
79
- overKey = _React$useState4[0],
80
- setOverKey = _React$useState4[1];
53
+ const effectiveOrder = React.useMemo(() => columnOrder || columns.map(c => c.key), [columnOrder, columns]);
54
+ const [dragKey, setDragKey] = React.useState(null);
55
+ const [overKey, setOverKey] = React.useState(null);
81
56
 
82
57
  // Refs mirror state for use inside fresh-closure handlers
83
58
  // (the onDragEnd inside cellHandlers needs the latest dragKey
84
59
  // even if React hasn't yet re-rendered).
85
- var dragKeyRef = React.useRef(null);
86
- var reset = React.useCallback(function () {
60
+ const dragKeyRef = React.useRef(null);
61
+ const reset = React.useCallback(() => {
87
62
  dragKeyRef.current = null;
88
63
  setDragKey(null);
89
64
  setOverKey(null);
90
65
  }, []);
91
- var onDragStart = React.useCallback(function (key) {
92
- return function (e) {
93
- // Cross-hook: if resize is active, abort the drag. Resize fires
94
- // first via mousedown; this handler runs later via dragstart.
95
- if (resizeIsActive) {
96
- e.preventDefault();
97
- return;
98
- }
99
- dragKeyRef.current = key;
100
- setDragKey(key);
101
- // Mark the data transfer with the source key. Some browsers
102
- // require a non-empty payload to allow drop (Firefox).
103
- try {
104
- e.dataTransfer.effectAllowed = "move";
105
- e.dataTransfer.setData("text/plain", key);
106
- } catch (_unused) {
107
- // Older Safari throws on certain MIME types; ignored.
108
- }
109
- };
110
- }, [resizeIsActive]);
111
- var onDragOver = React.useCallback(function (key) {
112
- return function (e) {
113
- // CRITICAL — without preventDefault, the browser refuses the
114
- // drop and onDrop never fires.
66
+ const onDragStart = React.useCallback(key => e => {
67
+ // Cross-hook: if resize is active, abort the drag. Resize fires
68
+ // first via mousedown; this handler runs later via dragstart.
69
+ if (resizeIsActive) {
115
70
  e.preventDefault();
116
- try {
117
- e.dataTransfer.dropEffect = "move";
118
- } catch (_unused2) {
119
- // Some browsers throw outside a trusted dragstart→drop chain.
120
- }
121
- if (overKey !== key) setOverKey(key);
122
- };
71
+ return;
72
+ }
73
+ dragKeyRef.current = key;
74
+ setDragKey(key);
75
+ // Mark the data transfer with the source key. Some browsers
76
+ // require a non-empty payload to allow drop (Firefox).
77
+ try {
78
+ e.dataTransfer.effectAllowed = "move";
79
+ e.dataTransfer.setData("text/plain", key);
80
+ } catch {
81
+ // Older Safari throws on certain MIME types; ignored.
82
+ }
83
+ }, [resizeIsActive]);
84
+ const onDragOver = React.useCallback(key => e => {
85
+ // CRITICAL — without preventDefault, the browser refuses the
86
+ // drop and onDrop never fires.
87
+ e.preventDefault();
88
+ try {
89
+ e.dataTransfer.dropEffect = "move";
90
+ } catch {
91
+ // Some browsers throw outside a trusted dragstart→drop chain.
92
+ }
93
+ if (overKey !== key) setOverKey(key);
123
94
  }, [overKey]);
124
- var onDragLeave = React.useCallback(function (key) {
125
- return function () {
126
- // Only clear when leaving the same key we'd entered. Without
127
- // this guard, fast moves between cells flicker the highlight.
128
- if (overKey === key) setOverKey(null);
129
- };
95
+ const onDragLeave = React.useCallback(key => () => {
96
+ // Only clear when leaving the same key we'd entered. Without
97
+ // this guard, fast moves between cells flicker the highlight.
98
+ if (overKey === key) setOverKey(null);
130
99
  }, [overKey]);
131
- var onDrop = React.useCallback(function (targetKey) {
132
- return function (e) {
133
- e.preventDefault();
134
- var sourceKey = e.dataTransfer && e.dataTransfer.getData("text/plain") || dragKeyRef.current;
135
- if (!sourceKey || sourceKey === targetKey) {
136
- reset();
137
- return;
138
- }
139
- var sourceIdx = effectiveOrder.indexOf(sourceKey);
140
- var targetIdx = effectiveOrder.indexOf(targetKey);
141
- if (sourceIdx < 0 || targetIdx < 0) {
142
- reset();
143
- return;
144
- }
145
- var newOrder = _toConsumableArray(effectiveOrder);
146
- newOrder.splice(sourceIdx, 1);
147
- // After splice the target index may shift by 1 if source was
148
- // before target. Recompute against the post-splice array.
149
- var insertIdx = newOrder.indexOf(targetKey);
150
- newOrder.splice(insertIdx, 0, sourceKey);
151
- if (onColumnOrderChange) onColumnOrderChange(newOrder);
100
+ const onDrop = React.useCallback(targetKey => e => {
101
+ e.preventDefault();
102
+ const sourceKey = e.dataTransfer && e.dataTransfer.getData("text/plain") || dragKeyRef.current;
103
+ if (!sourceKey || sourceKey === targetKey) {
152
104
  reset();
153
- };
105
+ return;
106
+ }
107
+ const sourceIdx = effectiveOrder.indexOf(sourceKey);
108
+ const targetIdx = effectiveOrder.indexOf(targetKey);
109
+ if (sourceIdx < 0 || targetIdx < 0) {
110
+ reset();
111
+ return;
112
+ }
113
+ const newOrder = [...effectiveOrder];
114
+ newOrder.splice(sourceIdx, 1);
115
+ // After splice the target index may shift by 1 if source was
116
+ // before target. Recompute against the post-splice array.
117
+ const insertIdx = newOrder.indexOf(targetKey);
118
+ newOrder.splice(insertIdx, 0, sourceKey);
119
+ if (onColumnOrderChange) onColumnOrderChange(newOrder);
120
+ reset();
154
121
  }, [effectiveOrder, onColumnOrderChange, reset]);
155
- var onDragEnd = React.useCallback(function () {
122
+ const onDragEnd = React.useCallback(() => {
156
123
  // Fires whether the drop succeeded or the user cancelled (Esc /
157
124
  // drop on a non-target). Belt-and-suspenders cleanup.
158
125
  reset();
159
126
  }, [reset]);
160
- var cellHandlers = React.useCallback(function (key) {
127
+ const cellHandlers = React.useCallback(key => ({
128
+ draggable: true,
129
+ onDragStart: onDragStart(key),
130
+ onDragOver: onDragOver(key),
131
+ onDragLeave: onDragLeave(key),
132
+ onDrop: onDrop(key),
133
+ onDragEnd
134
+ }), [onDragStart, onDragOver, onDragLeave, onDrop, onDragEnd]);
135
+ const cellSx = React.useCallback(key => {
136
+ const isDragSource = dragKey === key;
137
+ const isDropTarget = overKey === key && dragKey !== key;
138
+ if (!isDragSource && !isDropTarget) return undefined;
161
139
  return {
162
- draggable: true,
163
- onDragStart: onDragStart(key),
164
- onDragOver: onDragOver(key),
165
- onDragLeave: onDragLeave(key),
166
- onDrop: onDrop(key),
167
- onDragEnd: onDragEnd
140
+ ...(isDragSource && {
141
+ opacity: 0.5
142
+ }),
143
+ ...(isDropTarget && {
144
+ // Inset accent outline = "drop here" visual. boxShadow not
145
+ // outline so it doesn't extend beyond the cell border.
146
+ boxShadow: "inset 0 0 0 2px var(--accent)"
147
+ })
168
148
  };
169
- }, [onDragStart, onDragOver, onDragLeave, onDrop, onDragEnd]);
170
- var cellSx = React.useCallback(function (key) {
171
- var isDragSource = dragKey === key;
172
- var isDropTarget = overKey === key && dragKey !== key;
173
- if (!isDragSource && !isDropTarget) return undefined;
174
- return _objectSpread(_objectSpread({}, isDragSource && {
175
- opacity: 0.5
176
- }), isDropTarget && {
177
- // Inset accent outline = "drop here" visual. boxShadow not
178
- // outline so it doesn't extend beyond the cell border.
179
- boxShadow: "inset 0 0 0 2px var(--accent)"
180
- });
181
149
  }, [dragKey, overKey]);
182
150
 
183
151
  // ── Keyboard reorder (DG-R1) ───────────────────────────────────
184
152
  // Commit a reordered copy of effectiveOrder. All keyboard moves route
185
153
  // through here; edge/no-op cases are filtered by the callers.
186
- var commitOrder = React.useCallback(function (newOrder) {
154
+ const commitOrder = React.useCallback(newOrder => {
187
155
  if (onColumnOrderChange) onColumnOrderChange(newOrder);
188
156
  }, [onColumnOrderChange]);
189
157
 
190
158
  // Adjacent swap toward the start (dir=-1) / end (dir=+1) of the order.
191
- var swap = React.useCallback(function (key, dir) {
192
- var idx = effectiveOrder.indexOf(key);
159
+ const swap = React.useCallback((key, dir) => {
160
+ const idx = effectiveOrder.indexOf(key);
193
161
  if (idx < 0) return;
194
- var target = idx + dir;
162
+ const target = idx + dir;
195
163
  if (target < 0 || target >= effectiveOrder.length) return; // at edge
196
- var newOrder = _toConsumableArray(effectiveOrder);
197
- var a = newOrder[idx];
198
- var b = newOrder[target];
164
+ const newOrder = [...effectiveOrder];
165
+ const a = newOrder[idx];
166
+ const b = newOrder[target];
199
167
  newOrder[idx] = b;
200
168
  newOrder[target] = a;
201
169
  commitOrder(newOrder);
202
170
  }, [effectiveOrder, commitOrder]);
203
- var moveEarlier = React.useCallback(function (key) {
204
- return swap(key, -1);
205
- }, [swap]);
206
- var moveLater = React.useCallback(function (key) {
207
- return swap(key, 1);
208
- }, [swap]);
171
+ const moveEarlier = React.useCallback(key => swap(key, -1), [swap]);
172
+ const moveLater = React.useCallback(key => swap(key, 1), [swap]);
209
173
 
210
174
  // Send the column to the first / last slot (Home / End).
211
- var moveToEdge = React.useCallback(function (key, edge) {
212
- var idx = effectiveOrder.indexOf(key);
175
+ const moveToEdge = React.useCallback((key, edge) => {
176
+ const idx = effectiveOrder.indexOf(key);
213
177
  if (idx < 0) return;
214
178
  if (edge === "start" && idx === 0) return;
215
179
  if (edge === "end" && idx === effectiveOrder.length - 1) return;
216
- var newOrder = _toConsumableArray(effectiveOrder);
217
- var moved = newOrder.splice(idx, 1)[0];
180
+ const newOrder = [...effectiveOrder];
181
+ const moved = newOrder.splice(idx, 1)[0];
218
182
  if (edge === "start") newOrder.unshift(moved);else newOrder.push(moved);
219
183
  commitOrder(newOrder);
220
184
  }, [effectiveOrder, commitOrder]);
221
- var handleKeyDown = React.useCallback(function (key) {
222
- return function (e) {
223
- if (resizeIsActive) return;
224
- var isLeft = e.key === "ArrowLeft";
225
- var isRight = e.key === "ArrowRight";
226
- var isHome = e.key === "Home";
227
- var isEnd = e.key === "End";
228
- if (!isLeft && !isRight && !isHome && !isEnd) return;
229
- e.preventDefault();
230
- e.stopPropagation();
231
- if (isHome) {
232
- moveToEdge(key, "start");
233
- return;
234
- }
235
- if (isEnd) {
236
- moveToEdge(key, "end");
237
- return;
238
- }
185
+ const handleKeyDown = React.useCallback(key => e => {
186
+ if (resizeIsActive) return;
187
+ const isLeft = e.key === "ArrowLeft";
188
+ const isRight = e.key === "ArrowRight";
189
+ const isHome = e.key === "Home";
190
+ const isEnd = e.key === "End";
191
+ if (!isLeft && !isRight && !isHome && !isEnd) return;
192
+ e.preventDefault();
193
+ e.stopPropagation();
194
+ if (isHome) {
195
+ moveToEdge(key, "start");
196
+ return;
197
+ }
198
+ if (isEnd) {
199
+ moveToEdge(key, "end");
200
+ return;
201
+ }
239
202
 
240
- // RTL-aware physical-arrow mapping: in RTL the visual order is
241
- // reversed, so ArrowLeft advances toward the end of the order.
242
- var cell = e.currentTarget.closest("th");
243
- var isRtl = !!cell && typeof window !== "undefined" && typeof window.getComputedStyle === "function" && window.getComputedStyle(cell).direction === "rtl";
244
- var goLater = isRtl ? isLeft : isRight;
245
- if (goLater) moveLater(key);else moveEarlier(key);
246
- };
203
+ // RTL-aware physical-arrow mapping: in RTL the visual order is
204
+ // reversed, so ArrowLeft advances toward the end of the order.
205
+ const cell = e.currentTarget.closest("th");
206
+ const isRtl = !!cell && typeof window !== "undefined" && typeof window.getComputedStyle === "function" && window.getComputedStyle(cell).direction === "rtl";
207
+ const goLater = isRtl ? isLeft : isRight;
208
+ if (goLater) moveLater(key);else moveEarlier(key);
247
209
  }, [resizeIsActive, moveToEdge, moveEarlier, moveLater]);
248
210
  return {
249
- cellHandlers: cellHandlers,
250
- cellSx: cellSx,
211
+ cellHandlers,
212
+ cellSx,
251
213
  isReordering: dragKey != null,
252
- moveEarlier: moveEarlier,
253
- moveLater: moveLater,
254
- handleKeyDown: handleKeyDown
214
+ moveEarlier,
215
+ moveLater,
216
+ handleKeyDown
255
217
  };
256
218
  }
257
219
  //# sourceMappingURL=_useColumnReorder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_useColumnReorder.js","names":["React","useColumnReorder","columns","columnOrder","onColumnOrderChange","options","arguments","length","undefined","resizeIsActive","effectiveOrder","useMemo","map","c","key","_React$useState","useState","_React$useState2","_slicedToArray","dragKey","setDragKey","_React$useState3","_React$useState4","overKey","setOverKey","dragKeyRef","useRef","reset","useCallback","current","onDragStart","e","preventDefault","dataTransfer","effectAllowed","setData","_unused","onDragOver","dropEffect","_unused2","onDragLeave","onDrop","targetKey","sourceKey","getData","sourceIdx","indexOf","targetIdx","newOrder","_toConsumableArray","splice","insertIdx","onDragEnd","cellHandlers","draggable","cellSx","isDragSource","isDropTarget","_objectSpread","opacity","boxShadow","commitOrder","swap","dir","idx","target","a","b","moveEarlier","moveLater","moveToEdge","edge","moved","unshift","push","handleKeyDown","isLeft","isRight","isHome","isEnd","stopPropagation","cell","currentTarget","closest","isRtl","window","getComputedStyle","direction","goLater","isReordering"],"sources":["../../../../src/lib/v2/patterns/_useColumnReorder.ts"],"sourcesContent":["import * as React from \"react\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\n\r\n/**\r\n * useColumnReorder — Portnet UI v2 (private)\r\n *\r\n * Internal hook for the DataGrid + DataGridVirtualized reorder\r\n * feature. NOT exported from the patterns barrel.\r\n *\r\n * const { cellHandlers, cellSx, isReordering, moveEarlier, moveLater, handleKeyDown } =\r\n * useColumnReorder(\r\n * columns, // for fallback order resolution\r\n * columnOrder, // host-controlled Array<key> | undefined\r\n * onColumnOrderChange, // host-controlled setter\r\n * { resizeIsActive } // cross-hook signal from useColumnResize\r\n * );\r\n *\r\n * Drop semantics (pointer):\r\n * The dragged column is INSERTED AT the target column's position.\r\n * The remaining columns shift to accommodate. This is the standard\r\n * Linear / Asana / GitHub Projects UX — the user thinks \"move\r\n * column X to where Y is\", not \"swap X and Y\".\r\n *\r\n * Keyboard (DG-R1 / WCAG 2.1.1):\r\n * moveEarlier(key) / moveLater(key) swap the column with its neighbour\r\n * toward the start / end of the order (edge-safe, no-op at the ends).\r\n * handleKeyDown(key) is meant for a focusable reorder control in the\r\n * header: ArrowLeft/ArrowRight move the column (RTL-aware, so the motion\r\n * matches the physical arrow), Home/End send it to the first/last slot.\r\n * Every move commits immediately via onColumnOrderChange (no grab/drop\r\n * mode). Direction-neutral names (earlier/later = toward index 0 / end)\r\n * keep the API unambiguous under RTL; the physical-arrow mapping lives in\r\n * handleKeyDown.\r\n *\r\n * Visual feedback during drag:\r\n * - Dragged column header: opacity 0.5\r\n * - Drop target column header: 2px inset accent outline\r\n * These are returned via cellSx; the host applies them as sx\r\n * fragments on each `<th>`.\r\n *\r\n * onDragOver MUST e.preventDefault() to allow drop. This is the\r\n * single most-forgotten step of HTML5 native drag — without it,\r\n * onDrop never fires.\r\n */\r\n\r\nexport interface UseColumnReorderOptions {\r\n resizeIsActive?: boolean | undefined;\r\n}\r\n\r\nexport interface ColumnReorderCellHandlers {\r\n draggable: boolean;\r\n onDragStart: (e: React.DragEvent) => void;\r\n onDragOver: (e: React.DragEvent) => void;\r\n onDragLeave: () => void;\r\n onDrop: (e: React.DragEvent) => void;\r\n onDragEnd: () => void;\r\n}\r\n\r\nexport interface UseColumnReorderResult {\r\n cellHandlers: (key: string) => ColumnReorderCellHandlers;\r\n cellSx: (key: string) => SxProps<Theme> | undefined;\r\n isReordering: boolean;\r\n /** Move the column one slot toward the start of the order (edge-safe). */\r\n moveEarlier: (key: string) => void;\r\n /** Move the column one slot toward the end of the order (edge-safe). */\r\n moveLater: (key: string) => void;\r\n /** onKeyDown for a focusable reorder control: Arrow (RTL-aware) / Home / End. */\r\n handleKeyDown: (key: string) => (e: React.KeyboardEvent) => void;\r\n}\r\n\r\nexport default function useColumnReorder(\r\n columns: ReadonlyArray<{ key: string }>,\r\n columnOrder: string[] | undefined,\r\n onColumnOrderChange: ((order: string[]) => void) | undefined,\r\n options: UseColumnReorderOptions = {}\r\n): UseColumnReorderResult {\r\n const { resizeIsActive } = options;\r\n\r\n // Effective order = host order, or fallback to the natural columns\r\n // sequence. Memoised on the input shapes; no allocation when both\r\n // refs are stable.\r\n const effectiveOrder = React.useMemo(\r\n () => columnOrder || columns.map((c) => c.key),\r\n [columnOrder, columns]\r\n );\r\n\r\n const [dragKey, setDragKey] = React.useState<string | null>(null);\r\n const [overKey, setOverKey] = React.useState<string | null>(null);\r\n\r\n // Refs mirror state for use inside fresh-closure handlers\r\n // (the onDragEnd inside cellHandlers needs the latest dragKey\r\n // even if React hasn't yet re-rendered).\r\n const dragKeyRef = React.useRef<string | null>(null);\r\n\r\n const reset = React.useCallback(() => {\r\n dragKeyRef.current = null;\r\n setDragKey(null);\r\n setOverKey(null);\r\n }, []);\r\n\r\n const onDragStart = React.useCallback(\r\n (key: string) => (e: React.DragEvent) => {\r\n // Cross-hook: if resize is active, abort the drag. Resize fires\r\n // first via mousedown; this handler runs later via dragstart.\r\n if (resizeIsActive) {\r\n e.preventDefault();\r\n return;\r\n }\r\n dragKeyRef.current = key;\r\n setDragKey(key);\r\n // Mark the data transfer with the source key. Some browsers\r\n // require a non-empty payload to allow drop (Firefox).\r\n try {\r\n e.dataTransfer.effectAllowed = \"move\";\r\n e.dataTransfer.setData(\"text/plain\", key);\r\n } catch {\r\n // Older Safari throws on certain MIME types; ignored.\r\n }\r\n },\r\n [resizeIsActive]\r\n );\r\n\r\n const onDragOver = React.useCallback(\r\n (key: string) => (e: React.DragEvent) => {\r\n // CRITICAL — without preventDefault, the browser refuses the\r\n // drop and onDrop never fires.\r\n e.preventDefault();\r\n try {\r\n e.dataTransfer.dropEffect = \"move\";\r\n } catch {\r\n // Some browsers throw outside a trusted dragstart→drop chain.\r\n }\r\n if (overKey !== key) setOverKey(key);\r\n },\r\n [overKey]\r\n );\r\n\r\n const onDragLeave = React.useCallback(\r\n (key: string) => () => {\r\n // Only clear when leaving the same key we'd entered. Without\r\n // this guard, fast moves between cells flicker the highlight.\r\n if (overKey === key) setOverKey(null);\r\n },\r\n [overKey]\r\n );\r\n\r\n const onDrop = React.useCallback(\r\n (targetKey: string) => (e: React.DragEvent) => {\r\n e.preventDefault();\r\n const sourceKey =\r\n (e.dataTransfer && e.dataTransfer.getData(\"text/plain\")) ||\r\n dragKeyRef.current;\r\n\r\n if (!sourceKey || sourceKey === targetKey) {\r\n reset();\r\n return;\r\n }\r\n\r\n const sourceIdx = effectiveOrder.indexOf(sourceKey);\r\n const targetIdx = effectiveOrder.indexOf(targetKey);\r\n if (sourceIdx < 0 || targetIdx < 0) {\r\n reset();\r\n return;\r\n }\r\n\r\n const newOrder = [...effectiveOrder];\r\n newOrder.splice(sourceIdx, 1);\r\n // After splice the target index may shift by 1 if source was\r\n // before target. Recompute against the post-splice array.\r\n const insertIdx = newOrder.indexOf(targetKey);\r\n newOrder.splice(insertIdx, 0, sourceKey);\r\n\r\n if (onColumnOrderChange) onColumnOrderChange(newOrder);\r\n reset();\r\n },\r\n [effectiveOrder, onColumnOrderChange, reset]\r\n );\r\n\r\n const onDragEnd = React.useCallback(() => {\r\n // Fires whether the drop succeeded or the user cancelled (Esc /\r\n // drop on a non-target). Belt-and-suspenders cleanup.\r\n reset();\r\n }, [reset]);\r\n\r\n const cellHandlers = React.useCallback(\r\n (key: string): ColumnReorderCellHandlers => ({\r\n draggable: true,\r\n onDragStart: onDragStart(key),\r\n onDragOver: onDragOver(key),\r\n onDragLeave: onDragLeave(key),\r\n onDrop: onDrop(key),\r\n onDragEnd,\r\n }),\r\n [onDragStart, onDragOver, onDragLeave, onDrop, onDragEnd]\r\n );\r\n\r\n const cellSx = React.useCallback(\r\n (key: string): SxProps<Theme> | undefined => {\r\n const isDragSource = dragKey === key;\r\n const isDropTarget = overKey === key && dragKey !== key;\r\n if (!isDragSource && !isDropTarget) return undefined;\r\n return {\r\n ...(isDragSource && { opacity: 0.5 }),\r\n ...(isDropTarget && {\r\n // Inset accent outline = \"drop here\" visual. boxShadow not\r\n // outline so it doesn't extend beyond the cell border.\r\n boxShadow: \"inset 0 0 0 2px var(--accent)\",\r\n }),\r\n };\r\n },\r\n [dragKey, overKey]\r\n );\r\n\r\n // ── Keyboard reorder (DG-R1) ───────────────────────────────────\r\n // Commit a reordered copy of effectiveOrder. All keyboard moves route\r\n // through here; edge/no-op cases are filtered by the callers.\r\n const commitOrder = React.useCallback(\r\n (newOrder: string[]) => {\r\n if (onColumnOrderChange) onColumnOrderChange(newOrder);\r\n },\r\n [onColumnOrderChange]\r\n );\r\n\r\n // Adjacent swap toward the start (dir=-1) / end (dir=+1) of the order.\r\n const swap = React.useCallback(\r\n (key: string, dir: -1 | 1) => {\r\n const idx = effectiveOrder.indexOf(key);\r\n if (idx < 0) return;\r\n const target = idx + dir;\r\n if (target < 0 || target >= effectiveOrder.length) return; // at edge\r\n const newOrder = [...effectiveOrder];\r\n const a = newOrder[idx] as string;\r\n const b = newOrder[target] as string;\r\n newOrder[idx] = b;\r\n newOrder[target] = a;\r\n commitOrder(newOrder);\r\n },\r\n [effectiveOrder, commitOrder]\r\n );\r\n\r\n const moveEarlier = React.useCallback((key: string) => swap(key, -1), [swap]);\r\n const moveLater = React.useCallback((key: string) => swap(key, 1), [swap]);\r\n\r\n // Send the column to the first / last slot (Home / End).\r\n const moveToEdge = React.useCallback(\r\n (key: string, edge: \"start\" | \"end\") => {\r\n const idx = effectiveOrder.indexOf(key);\r\n if (idx < 0) return;\r\n if (edge === \"start\" && idx === 0) return;\r\n if (edge === \"end\" && idx === effectiveOrder.length - 1) return;\r\n const newOrder = [...effectiveOrder];\r\n const moved = newOrder.splice(idx, 1)[0] as string;\r\n if (edge === \"start\") newOrder.unshift(moved);\r\n else newOrder.push(moved);\r\n commitOrder(newOrder);\r\n },\r\n [effectiveOrder, commitOrder]\r\n );\r\n\r\n const handleKeyDown = React.useCallback(\r\n (key: string) => (e: React.KeyboardEvent) => {\r\n if (resizeIsActive) return;\r\n const isLeft = e.key === \"ArrowLeft\";\r\n const isRight = e.key === \"ArrowRight\";\r\n const isHome = e.key === \"Home\";\r\n const isEnd = e.key === \"End\";\r\n if (!isLeft && !isRight && !isHome && !isEnd) return;\r\n\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n if (isHome) {\r\n moveToEdge(key, \"start\");\r\n return;\r\n }\r\n if (isEnd) {\r\n moveToEdge(key, \"end\");\r\n return;\r\n }\r\n\r\n // RTL-aware physical-arrow mapping: in RTL the visual order is\r\n // reversed, so ArrowLeft advances toward the end of the order.\r\n const cell = (e.currentTarget as HTMLElement).closest(\"th\");\r\n const isRtl =\r\n !!cell &&\r\n typeof window !== \"undefined\" &&\r\n typeof window.getComputedStyle === \"function\" &&\r\n window.getComputedStyle(cell).direction === \"rtl\";\r\n\r\n const goLater = isRtl ? isLeft : isRight;\r\n if (goLater) moveLater(key);\r\n else moveEarlier(key);\r\n },\r\n [resizeIsActive, moveToEdge, moveEarlier, moveLater]\r\n );\r\n\r\n return {\r\n cellHandlers,\r\n cellSx,\r\n isReordering: dragKey != null,\r\n moveEarlier,\r\n moveLater,\r\n handleKeyDown,\r\n };\r\n}\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"_useColumnReorder.js","names":["React","useColumnReorder","columns","columnOrder","onColumnOrderChange","options","resizeIsActive","effectiveOrder","useMemo","map","c","key","dragKey","setDragKey","useState","overKey","setOverKey","dragKeyRef","useRef","reset","useCallback","current","onDragStart","e","preventDefault","dataTransfer","effectAllowed","setData","onDragOver","dropEffect","onDragLeave","onDrop","targetKey","sourceKey","getData","sourceIdx","indexOf","targetIdx","newOrder","splice","insertIdx","onDragEnd","cellHandlers","draggable","cellSx","isDragSource","isDropTarget","undefined","opacity","boxShadow","commitOrder","swap","dir","idx","target","length","a","b","moveEarlier","moveLater","moveToEdge","edge","moved","unshift","push","handleKeyDown","isLeft","isRight","isHome","isEnd","stopPropagation","cell","currentTarget","closest","isRtl","window","getComputedStyle","direction","goLater","isReordering"],"sources":["../../../../src/lib/v2/patterns/_useColumnReorder.ts"],"sourcesContent":["import * as React from \"react\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\n\r\n/**\r\n * useColumnReorder — Portnet UI v2 (private)\r\n *\r\n * Internal hook for the DataGrid + DataGridVirtualized reorder\r\n * feature. NOT exported from the patterns barrel.\r\n *\r\n * const { cellHandlers, cellSx, isReordering, moveEarlier, moveLater, handleKeyDown } =\r\n * useColumnReorder(\r\n * columns, // for fallback order resolution\r\n * columnOrder, // host-controlled Array<key> | undefined\r\n * onColumnOrderChange, // host-controlled setter\r\n * { resizeIsActive } // cross-hook signal from useColumnResize\r\n * );\r\n *\r\n * Drop semantics (pointer):\r\n * The dragged column is INSERTED AT the target column's position.\r\n * The remaining columns shift to accommodate. This is the standard\r\n * Linear / Asana / GitHub Projects UX — the user thinks \"move\r\n * column X to where Y is\", not \"swap X and Y\".\r\n *\r\n * Keyboard (DG-R1 / WCAG 2.1.1):\r\n * moveEarlier(key) / moveLater(key) swap the column with its neighbour\r\n * toward the start / end of the order (edge-safe, no-op at the ends).\r\n * handleKeyDown(key) is meant for a focusable reorder control in the\r\n * header: ArrowLeft/ArrowRight move the column (RTL-aware, so the motion\r\n * matches the physical arrow), Home/End send it to the first/last slot.\r\n * Every move commits immediately via onColumnOrderChange (no grab/drop\r\n * mode). Direction-neutral names (earlier/later = toward index 0 / end)\r\n * keep the API unambiguous under RTL; the physical-arrow mapping lives in\r\n * handleKeyDown.\r\n *\r\n * Visual feedback during drag:\r\n * - Dragged column header: opacity 0.5\r\n * - Drop target column header: 2px inset accent outline\r\n * These are returned via cellSx; the host applies them as sx\r\n * fragments on each `<th>`.\r\n *\r\n * onDragOver MUST e.preventDefault() to allow drop. This is the\r\n * single most-forgotten step of HTML5 native drag — without it,\r\n * onDrop never fires.\r\n */\r\n\r\nexport interface UseColumnReorderOptions {\r\n resizeIsActive?: boolean | undefined;\r\n}\r\n\r\nexport interface ColumnReorderCellHandlers {\r\n draggable: boolean;\r\n onDragStart: (e: React.DragEvent) => void;\r\n onDragOver: (e: React.DragEvent) => void;\r\n onDragLeave: () => void;\r\n onDrop: (e: React.DragEvent) => void;\r\n onDragEnd: () => void;\r\n}\r\n\r\nexport interface UseColumnReorderResult {\r\n cellHandlers: (key: string) => ColumnReorderCellHandlers;\r\n cellSx: (key: string) => SxProps<Theme> | undefined;\r\n isReordering: boolean;\r\n /** Move the column one slot toward the start of the order (edge-safe). */\r\n moveEarlier: (key: string) => void;\r\n /** Move the column one slot toward the end of the order (edge-safe). */\r\n moveLater: (key: string) => void;\r\n /** onKeyDown for a focusable reorder control: Arrow (RTL-aware) / Home / End. */\r\n handleKeyDown: (key: string) => (e: React.KeyboardEvent) => void;\r\n}\r\n\r\nexport default function useColumnReorder(\r\n columns: ReadonlyArray<{ key: string }>,\r\n columnOrder: string[] | undefined,\r\n onColumnOrderChange: ((order: string[]) => void) | undefined,\r\n options: UseColumnReorderOptions = {}\r\n): UseColumnReorderResult {\r\n const { resizeIsActive } = options;\r\n\r\n // Effective order = host order, or fallback to the natural columns\r\n // sequence. Memoised on the input shapes; no allocation when both\r\n // refs are stable.\r\n const effectiveOrder = React.useMemo(\r\n () => columnOrder || columns.map((c) => c.key),\r\n [columnOrder, columns]\r\n );\r\n\r\n const [dragKey, setDragKey] = React.useState<string | null>(null);\r\n const [overKey, setOverKey] = React.useState<string | null>(null);\r\n\r\n // Refs mirror state for use inside fresh-closure handlers\r\n // (the onDragEnd inside cellHandlers needs the latest dragKey\r\n // even if React hasn't yet re-rendered).\r\n const dragKeyRef = React.useRef<string | null>(null);\r\n\r\n const reset = React.useCallback(() => {\r\n dragKeyRef.current = null;\r\n setDragKey(null);\r\n setOverKey(null);\r\n }, []);\r\n\r\n const onDragStart = React.useCallback(\r\n (key: string) => (e: React.DragEvent) => {\r\n // Cross-hook: if resize is active, abort the drag. Resize fires\r\n // first via mousedown; this handler runs later via dragstart.\r\n if (resizeIsActive) {\r\n e.preventDefault();\r\n return;\r\n }\r\n dragKeyRef.current = key;\r\n setDragKey(key);\r\n // Mark the data transfer with the source key. Some browsers\r\n // require a non-empty payload to allow drop (Firefox).\r\n try {\r\n e.dataTransfer.effectAllowed = \"move\";\r\n e.dataTransfer.setData(\"text/plain\", key);\r\n } catch {\r\n // Older Safari throws on certain MIME types; ignored.\r\n }\r\n },\r\n [resizeIsActive]\r\n );\r\n\r\n const onDragOver = React.useCallback(\r\n (key: string) => (e: React.DragEvent) => {\r\n // CRITICAL — without preventDefault, the browser refuses the\r\n // drop and onDrop never fires.\r\n e.preventDefault();\r\n try {\r\n e.dataTransfer.dropEffect = \"move\";\r\n } catch {\r\n // Some browsers throw outside a trusted dragstart→drop chain.\r\n }\r\n if (overKey !== key) setOverKey(key);\r\n },\r\n [overKey]\r\n );\r\n\r\n const onDragLeave = React.useCallback(\r\n (key: string) => () => {\r\n // Only clear when leaving the same key we'd entered. Without\r\n // this guard, fast moves between cells flicker the highlight.\r\n if (overKey === key) setOverKey(null);\r\n },\r\n [overKey]\r\n );\r\n\r\n const onDrop = React.useCallback(\r\n (targetKey: string) => (e: React.DragEvent) => {\r\n e.preventDefault();\r\n const sourceKey =\r\n (e.dataTransfer && e.dataTransfer.getData(\"text/plain\")) ||\r\n dragKeyRef.current;\r\n\r\n if (!sourceKey || sourceKey === targetKey) {\r\n reset();\r\n return;\r\n }\r\n\r\n const sourceIdx = effectiveOrder.indexOf(sourceKey);\r\n const targetIdx = effectiveOrder.indexOf(targetKey);\r\n if (sourceIdx < 0 || targetIdx < 0) {\r\n reset();\r\n return;\r\n }\r\n\r\n const newOrder = [...effectiveOrder];\r\n newOrder.splice(sourceIdx, 1);\r\n // After splice the target index may shift by 1 if source was\r\n // before target. Recompute against the post-splice array.\r\n const insertIdx = newOrder.indexOf(targetKey);\r\n newOrder.splice(insertIdx, 0, sourceKey);\r\n\r\n if (onColumnOrderChange) onColumnOrderChange(newOrder);\r\n reset();\r\n },\r\n [effectiveOrder, onColumnOrderChange, reset]\r\n );\r\n\r\n const onDragEnd = React.useCallback(() => {\r\n // Fires whether the drop succeeded or the user cancelled (Esc /\r\n // drop on a non-target). Belt-and-suspenders cleanup.\r\n reset();\r\n }, [reset]);\r\n\r\n const cellHandlers = React.useCallback(\r\n (key: string): ColumnReorderCellHandlers => ({\r\n draggable: true,\r\n onDragStart: onDragStart(key),\r\n onDragOver: onDragOver(key),\r\n onDragLeave: onDragLeave(key),\r\n onDrop: onDrop(key),\r\n onDragEnd,\r\n }),\r\n [onDragStart, onDragOver, onDragLeave, onDrop, onDragEnd]\r\n );\r\n\r\n const cellSx = React.useCallback(\r\n (key: string): SxProps<Theme> | undefined => {\r\n const isDragSource = dragKey === key;\r\n const isDropTarget = overKey === key && dragKey !== key;\r\n if (!isDragSource && !isDropTarget) return undefined;\r\n return {\r\n ...(isDragSource && { opacity: 0.5 }),\r\n ...(isDropTarget && {\r\n // Inset accent outline = \"drop here\" visual. boxShadow not\r\n // outline so it doesn't extend beyond the cell border.\r\n boxShadow: \"inset 0 0 0 2px var(--accent)\",\r\n }),\r\n };\r\n },\r\n [dragKey, overKey]\r\n );\r\n\r\n // ── Keyboard reorder (DG-R1) ───────────────────────────────────\r\n // Commit a reordered copy of effectiveOrder. All keyboard moves route\r\n // through here; edge/no-op cases are filtered by the callers.\r\n const commitOrder = React.useCallback(\r\n (newOrder: string[]) => {\r\n if (onColumnOrderChange) onColumnOrderChange(newOrder);\r\n },\r\n [onColumnOrderChange]\r\n );\r\n\r\n // Adjacent swap toward the start (dir=-1) / end (dir=+1) of the order.\r\n const swap = React.useCallback(\r\n (key: string, dir: -1 | 1) => {\r\n const idx = effectiveOrder.indexOf(key);\r\n if (idx < 0) return;\r\n const target = idx + dir;\r\n if (target < 0 || target >= effectiveOrder.length) return; // at edge\r\n const newOrder = [...effectiveOrder];\r\n const a = newOrder[idx] as string;\r\n const b = newOrder[target] as string;\r\n newOrder[idx] = b;\r\n newOrder[target] = a;\r\n commitOrder(newOrder);\r\n },\r\n [effectiveOrder, commitOrder]\r\n );\r\n\r\n const moveEarlier = React.useCallback((key: string) => swap(key, -1), [swap]);\r\n const moveLater = React.useCallback((key: string) => swap(key, 1), [swap]);\r\n\r\n // Send the column to the first / last slot (Home / End).\r\n const moveToEdge = React.useCallback(\r\n (key: string, edge: \"start\" | \"end\") => {\r\n const idx = effectiveOrder.indexOf(key);\r\n if (idx < 0) return;\r\n if (edge === \"start\" && idx === 0) return;\r\n if (edge === \"end\" && idx === effectiveOrder.length - 1) return;\r\n const newOrder = [...effectiveOrder];\r\n const moved = newOrder.splice(idx, 1)[0] as string;\r\n if (edge === \"start\") newOrder.unshift(moved);\r\n else newOrder.push(moved);\r\n commitOrder(newOrder);\r\n },\r\n [effectiveOrder, commitOrder]\r\n );\r\n\r\n const handleKeyDown = React.useCallback(\r\n (key: string) => (e: React.KeyboardEvent) => {\r\n if (resizeIsActive) return;\r\n const isLeft = e.key === \"ArrowLeft\";\r\n const isRight = e.key === \"ArrowRight\";\r\n const isHome = e.key === \"Home\";\r\n const isEnd = e.key === \"End\";\r\n if (!isLeft && !isRight && !isHome && !isEnd) return;\r\n\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n if (isHome) {\r\n moveToEdge(key, \"start\");\r\n return;\r\n }\r\n if (isEnd) {\r\n moveToEdge(key, \"end\");\r\n return;\r\n }\r\n\r\n // RTL-aware physical-arrow mapping: in RTL the visual order is\r\n // reversed, so ArrowLeft advances toward the end of the order.\r\n const cell = (e.currentTarget as HTMLElement).closest(\"th\");\r\n const isRtl =\r\n !!cell &&\r\n typeof window !== \"undefined\" &&\r\n typeof window.getComputedStyle === \"function\" &&\r\n window.getComputedStyle(cell).direction === \"rtl\";\r\n\r\n const goLater = isRtl ? isLeft : isRight;\r\n if (goLater) moveLater(key);\r\n else moveEarlier(key);\r\n },\r\n [resizeIsActive, moveToEdge, moveEarlier, moveLater]\r\n );\r\n\r\n return {\r\n cellHandlers,\r\n cellSx,\r\n isReordering: dragKey != null,\r\n moveEarlier,\r\n moveLater,\r\n handleKeyDown,\r\n };\r\n}\r\n"],"mappings":"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","ignoreList":[]}