@portnet/ui 6.0.1 → 6.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +737 -0
- package/dist/esm/index.js +90 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/v2/__tests__/AppMain.test.js +130 -0
- package/dist/esm/v2/__tests__/AppMain.test.js.map +1 -0
- package/dist/esm/v2/__tests__/ChartFigure.test.js +180 -0
- package/dist/esm/v2/__tests__/ChartFigure.test.js.map +1 -0
- package/dist/esm/v2/__tests__/DataGridRowActionsPropagation.test.js +150 -0
- package/dist/esm/v2/__tests__/DataGridRowActionsPropagation.test.js.map +1 -0
- package/dist/esm/v2/__tests__/DrawerTactileTargets.test.js +93 -0
- package/dist/esm/v2/__tests__/DrawerTactileTargets.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FieldError.test.js +71 -39
- package/dist/esm/v2/__tests__/FieldError.test.js.map +1 -1
- package/dist/esm/v2/__tests__/FieldNaming.test.js +160 -0
- package/dist/esm/v2/__tests__/FieldNaming.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FieldWidth.test.js +146 -0
- package/dist/esm/v2/__tests__/FieldWidth.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FileCard.test.js +18 -18
- package/dist/esm/v2/__tests__/FileCard.test.js.map +1 -1
- package/dist/esm/v2/__tests__/FormikCheckbox.test.js +173 -0
- package/dist/esm/v2/__tests__/FormikCheckbox.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js +236 -0
- package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FormikDisplayWidth.test.js +101 -0
- package/dist/esm/v2/__tests__/FormikDisplayWidth.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FormikRadioGroup.test.js +299 -0
- package/dist/esm/v2/__tests__/FormikRadioGroup.test.js.map +1 -0
- package/dist/esm/v2/__tests__/MobileRowCard.test.js +44 -43
- package/dist/esm/v2/__tests__/MobileRowCard.test.js.map +1 -1
- package/dist/esm/v2/__tests__/PreviewDrawer.test.js +165 -0
- package/dist/esm/v2/__tests__/PreviewDrawer.test.js.map +1 -0
- package/dist/esm/v2/__tests__/ReferentielFieldContainer.test.js +156 -0
- package/dist/esm/v2/__tests__/ReferentielFieldContainer.test.js.map +1 -0
- package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js +37 -52
- package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js.map +1 -1
- package/dist/esm/v2/__tests__/apiError.test.js +50 -69
- package/dist/esm/v2/__tests__/apiError.test.js.map +1 -1
- package/dist/esm/v2/__tests__/banned-patterns.test.js +41 -122
- package/dist/esm/v2/__tests__/banned-patterns.test.js.map +1 -1
- package/dist/esm/v2/__tests__/chart-palette.test.js +204 -0
- package/dist/esm/v2/__tests__/chart-palette.test.js.map +1 -0
- package/dist/esm/v2/__tests__/contrast-palette.test.js +42 -74
- package/dist/esm/v2/__tests__/contrast-palette.test.js.map +1 -1
- package/dist/esm/v2/__tests__/cssVariables.test.js +44 -51
- package/dist/esm/v2/__tests__/cssVariables.test.js.map +1 -1
- package/dist/esm/v2/__tests__/fileValidation.test.js +134 -0
- package/dist/esm/v2/__tests__/fileValidation.test.js.map +1 -0
- package/dist/esm/v2/__tests__/filterCriteria.test.js +321 -0
- package/dist/esm/v2/__tests__/filterCriteria.test.js.map +1 -0
- package/dist/esm/v2/__tests__/fmtDate.test.js +68 -0
- package/dist/esm/v2/__tests__/fmtDate.test.js.map +1 -0
- package/dist/esm/v2/__tests__/gap-leakage-refonte.test.js +218 -0
- package/dist/esm/v2/__tests__/gap-leakage-refonte.test.js.map +1 -0
- package/dist/esm/v2/__tests__/labels-merge.test.js +17 -22
- package/dist/esm/v2/__tests__/labels-merge.test.js.map +1 -1
- package/dist/esm/v2/__tests__/locale-fallback.test.js +35 -40
- package/dist/esm/v2/__tests__/locale-fallback.test.js.map +1 -1
- package/dist/esm/v2/__tests__/reviveSavedCriteria.test.js +143 -0
- package/dist/esm/v2/__tests__/reviveSavedCriteria.test.js.map +1 -0
- package/dist/esm/v2/__tests__/rowActions.test.js +182 -0
- package/dist/esm/v2/__tests__/rowActions.test.js.map +1 -0
- package/dist/esm/v2/__tests__/useFocusOnRouteChange.test.js +155 -0
- package/dist/esm/v2/__tests__/useFocusOnRouteChange.test.js.map +1 -0
- package/dist/esm/v2/__tests__/useFocusTrap.test.js +266 -402
- package/dist/esm/v2/__tests__/useFocusTrap.test.js.map +1 -1
- package/dist/esm/v2/__tests__/usePrefersReducedMotion.test.js +120 -0
- package/dist/esm/v2/__tests__/usePrefersReducedMotion.test.js.map +1 -0
- package/dist/esm/v2/components/Accordion.js +48 -70
- package/dist/esm/v2/components/Accordion.js.map +1 -1
- package/dist/esm/v2/components/ActionStrip.js +31 -43
- package/dist/esm/v2/components/ActionStrip.js.map +1 -1
- package/dist/esm/v2/components/Banner.js +25 -22
- package/dist/esm/v2/components/Banner.js.map +1 -1
- package/dist/esm/v2/components/Busy.js +14 -19
- package/dist/esm/v2/components/Busy.js.map +1 -1
- package/dist/esm/v2/components/Button.js +34 -45
- package/dist/esm/v2/components/Button.js.map +1 -1
- package/dist/esm/v2/components/CategoryTag.js +44 -27
- package/dist/esm/v2/components/CategoryTag.js.map +1 -1
- package/dist/esm/v2/components/Checkbox.js +32 -38
- package/dist/esm/v2/components/Checkbox.js.map +1 -1
- package/dist/esm/v2/components/Chip.js +23 -36
- package/dist/esm/v2/components/Chip.js.map +1 -1
- package/dist/esm/v2/components/Combobox.js +112 -136
- package/dist/esm/v2/components/Combobox.js.map +1 -1
- package/dist/esm/v2/components/CommandPalette.js +113 -198
- package/dist/esm/v2/components/CommandPalette.js.map +1 -1
- package/dist/esm/v2/components/ConfirmDialog.js +36 -45
- package/dist/esm/v2/components/ConfirmDialog.js.map +1 -1
- package/dist/esm/v2/components/DatePicker.js +78 -81
- package/dist/esm/v2/components/DatePicker.js.map +1 -1
- package/dist/esm/v2/components/DateRangePicker.js +63 -74
- package/dist/esm/v2/components/DateRangePicker.js.map +1 -1
- package/dist/esm/v2/components/DateTimePicker.js +118 -90
- package/dist/esm/v2/components/DateTimePicker.js.map +1 -1
- package/dist/esm/v2/components/Drawer.js +71 -65
- package/dist/esm/v2/components/Drawer.js.map +1 -1
- package/dist/esm/v2/components/Dropzone.js +130 -177
- package/dist/esm/v2/components/Dropzone.js.map +1 -1
- package/dist/esm/v2/components/EmptyState.js +9 -9
- package/dist/esm/v2/components/EmptyState.js.map +1 -1
- package/dist/esm/v2/components/FavoriteToggle.js +24 -33
- package/dist/esm/v2/components/FavoriteToggle.js.map +1 -1
- package/dist/esm/v2/components/Field.js +210 -52
- package/dist/esm/v2/components/Field.js.map +1 -1
- package/dist/esm/v2/components/FieldError.js +9 -13
- package/dist/esm/v2/components/FieldError.js.map +1 -1
- package/dist/esm/v2/components/FieldHelp.js +28 -49
- package/dist/esm/v2/components/FieldHelp.js.map +1 -1
- package/dist/esm/v2/components/FileCard.js +14 -19
- package/dist/esm/v2/components/FileCard.js.map +1 -1
- package/dist/esm/v2/components/FilterTab.js +22 -31
- package/dist/esm/v2/components/FilterTab.js.map +1 -1
- package/dist/esm/v2/components/ForbiddenPage.js +28 -8
- package/dist/esm/v2/components/ForbiddenPage.js.map +1 -1
- package/dist/esm/v2/components/FormGrid.js +48 -54
- package/dist/esm/v2/components/FormGrid.js.map +1 -1
- package/dist/esm/v2/components/FormikDisplay.js +98 -24
- package/dist/esm/v2/components/FormikDisplay.js.map +1 -1
- package/dist/esm/v2/components/Input.js +75 -34
- package/dist/esm/v2/components/Input.js.map +1 -1
- package/dist/esm/v2/components/KPICard.js +42 -51
- package/dist/esm/v2/components/KPICard.js.map +1 -1
- package/dist/esm/v2/components/KPIStrip.js +9 -15
- package/dist/esm/v2/components/KPIStrip.js.map +1 -1
- package/dist/esm/v2/components/KV.js +16 -23
- package/dist/esm/v2/components/KV.js.map +1 -1
- package/dist/esm/v2/components/KVGrid.js +15 -23
- package/dist/esm/v2/components/KVGrid.js.map +1 -1
- package/dist/esm/v2/components/Layout.js +81 -117
- package/dist/esm/v2/components/Layout.js.map +1 -1
- package/dist/esm/v2/components/MobileRowCard.js +64 -75
- package/dist/esm/v2/components/MobileRowCard.js.map +1 -1
- package/dist/esm/v2/components/Modal.js +44 -53
- package/dist/esm/v2/components/Modal.js.map +1 -1
- package/dist/esm/v2/components/NetworkErrorPage.js +28 -11
- package/dist/esm/v2/components/NetworkErrorPage.js.map +1 -1
- package/dist/esm/v2/components/NotFoundPage.js +28 -9
- package/dist/esm/v2/components/NotFoundPage.js.map +1 -1
- package/dist/esm/v2/components/NumberInput.js +77 -107
- package/dist/esm/v2/components/NumberInput.js.map +1 -1
- package/dist/esm/v2/components/OverflowMenu.js +24 -42
- package/dist/esm/v2/components/OverflowMenu.js.map +1 -1
- package/dist/esm/v2/components/PdfViewer.js +24 -33
- package/dist/esm/v2/components/PdfViewer.js.map +1 -1
- package/dist/esm/v2/components/ProgressBar.js +28 -36
- package/dist/esm/v2/components/ProgressBar.js.map +1 -1
- package/dist/esm/v2/components/Radio.js +49 -57
- package/dist/esm/v2/components/Radio.js.map +1 -1
- package/dist/esm/v2/components/SectionErrorBoundary.js +84 -130
- package/dist/esm/v2/components/SectionErrorBoundary.js.map +1 -1
- package/dist/esm/v2/components/SectionHeader.js +24 -31
- package/dist/esm/v2/components/SectionHeader.js.map +1 -1
- package/dist/esm/v2/components/Segmented.js +59 -84
- package/dist/esm/v2/components/Segmented.js.map +1 -1
- package/dist/esm/v2/components/Select.js +100 -138
- package/dist/esm/v2/components/Select.js.map +1 -1
- package/dist/esm/v2/components/ServerErrorPage.js +27 -10
- package/dist/esm/v2/components/ServerErrorPage.js.map +1 -1
- package/dist/esm/v2/components/Skeleton.js +81 -96
- package/dist/esm/v2/components/Skeleton.js.map +1 -1
- package/dist/esm/v2/components/SkipLink.js +6 -7
- package/dist/esm/v2/components/SkipLink.js.map +1 -1
- package/dist/esm/v2/components/Spinner.js +13 -22
- package/dist/esm/v2/components/Spinner.js.map +1 -1
- package/dist/esm/v2/components/Status.js +14 -25
- package/dist/esm/v2/components/Status.js.map +1 -1
- package/dist/esm/v2/components/Stepper.js +68 -71
- package/dist/esm/v2/components/Stepper.js.map +1 -1
- package/dist/esm/v2/components/Surface.js +25 -44
- package/dist/esm/v2/components/Surface.js.map +1 -1
- package/dist/esm/v2/components/Switch.js +21 -29
- package/dist/esm/v2/components/Switch.js.map +1 -1
- package/dist/esm/v2/components/TabPanel.js +84 -0
- package/dist/esm/v2/components/TabPanel.js.map +1 -0
- package/dist/esm/v2/components/Tabs.js +43 -19
- package/dist/esm/v2/components/Tabs.js.map +1 -1
- package/dist/esm/v2/components/TelInput.js +75 -108
- package/dist/esm/v2/components/TelInput.js.map +1 -1
- package/dist/esm/v2/components/Textarea.js +21 -30
- package/dist/esm/v2/components/Textarea.js.map +1 -1
- package/dist/esm/v2/components/TimePicker.js +59 -69
- package/dist/esm/v2/components/TimePicker.js.map +1 -1
- package/dist/esm/v2/components/Toast.js +109 -163
- package/dist/esm/v2/components/Toast.js.map +1 -1
- package/dist/esm/v2/components/Tooltip.js +18 -31
- package/dist/esm/v2/components/Tooltip.js.map +1 -1
- package/dist/esm/v2/components/_ErrorPageBody.js +6 -5
- package/dist/esm/v2/components/_ErrorPageBody.js.map +1 -1
- package/dist/esm/v2/components/_pickerShared.js +2 -2
- package/dist/esm/v2/components/_pickerShared.js.map +1 -1
- package/dist/esm/v2/components/index.js +64 -0
- package/dist/esm/v2/components/index.js.map +1 -1
- package/dist/esm/v2/hooks/index.js +62 -0
- package/dist/esm/v2/hooks/index.js.map +1 -1
- package/dist/esm/v2/hooks/useAppliedFilters.js +112 -0
- package/dist/esm/v2/hooks/useAppliedFilters.js.map +1 -0
- package/dist/esm/v2/hooks/useDebouncedCallback.js +82 -0
- package/dist/esm/v2/hooks/useDebouncedCallback.js.map +1 -0
- package/dist/esm/v2/hooks/useDelayedFlag.js +5 -19
- package/dist/esm/v2/hooks/useDelayedFlag.js.map +1 -1
- package/dist/esm/v2/hooks/useDensity.js +13 -17
- package/dist/esm/v2/hooks/useDensity.js.map +1 -1
- package/dist/esm/v2/hooks/useFocusFirstError.js +25 -33
- package/dist/esm/v2/hooks/useFocusFirstError.js.map +1 -1
- package/dist/esm/v2/hooks/useFocusOnRouteChange.js +81 -0
- package/dist/esm/v2/hooks/useFocusOnRouteChange.js.map +1 -0
- package/dist/esm/v2/hooks/useFocusTrap.js +19 -23
- package/dist/esm/v2/hooks/useFocusTrap.js.map +1 -1
- package/dist/esm/v2/hooks/useFormAutoSave.js +38 -53
- package/dist/esm/v2/hooks/useFormAutoSave.js.map +1 -1
- package/dist/esm/v2/hooks/useFormCompletionProgress.js +32 -51
- package/dist/esm/v2/hooks/useFormCompletionProgress.js.map +1 -1
- package/dist/esm/v2/hooks/useKeyboardShortcuts.js +125 -0
- package/dist/esm/v2/hooks/useKeyboardShortcuts.js.map +1 -0
- package/dist/esm/v2/hooks/usePrefersReducedMotion.js +99 -0
- package/dist/esm/v2/hooks/usePrefersReducedMotion.js.map +1 -0
- package/dist/esm/v2/hooks/useResolvedDensity.js +2 -10
- package/dist/esm/v2/hooks/useResolvedDensity.js.map +1 -1
- package/dist/esm/v2/hooks/useSortedRows.js +3 -5
- package/dist/esm/v2/hooks/useSortedRows.js.map +1 -1
- package/dist/esm/v2/hooks/useTabLoading.js +6 -21
- package/dist/esm/v2/hooks/useTabLoading.js.map +1 -1
- package/dist/esm/v2/index.js +14 -4
- package/dist/esm/v2/index.js.map +1 -1
- package/dist/esm/v2/modalContext.js +2 -2
- package/dist/esm/v2/modalContext.js.map +1 -1
- package/dist/esm/v2/models/favorite.js.map +1 -1
- package/dist/esm/v2/models/personalization.js.map +1 -1
- package/dist/esm/v2/models/referentiel.js.map +1 -1
- package/dist/esm/v2/models/savedFilter.js.map +1 -1
- package/dist/esm/v2/patterns/ActionBar.js +115 -159
- package/dist/esm/v2/patterns/ActionBar.js.map +1 -1
- package/dist/esm/v2/patterns/AppMain.js +108 -0
- package/dist/esm/v2/patterns/AppMain.js.map +1 -0
- package/dist/esm/v2/patterns/BulkActionBar.js +31 -34
- package/dist/esm/v2/patterns/BulkActionBar.js.map +1 -1
- package/dist/esm/v2/patterns/ChartFigure.js +151 -0
- package/dist/esm/v2/patterns/ChartFigure.js.map +1 -0
- package/dist/esm/v2/patterns/CollapsibleDataGrid.js +111 -152
- package/dist/esm/v2/patterns/CollapsibleDataGrid.js.map +1 -1
- package/dist/esm/v2/patterns/ColumnsToggle.js +43 -77
- package/dist/esm/v2/patterns/ColumnsToggle.js.map +1 -1
- package/dist/esm/v2/patterns/DataGrid.js +221 -255
- package/dist/esm/v2/patterns/DataGrid.js.map +1 -1
- package/dist/esm/v2/patterns/DataGridSettingsMenu.js +76 -94
- package/dist/esm/v2/patterns/DataGridSettingsMenu.js.map +1 -1
- package/dist/esm/v2/patterns/DataGridToolbar.js +85 -89
- package/dist/esm/v2/patterns/DataGridToolbar.js.map +1 -1
- package/dist/esm/v2/patterns/DataGridVirtualized.js +141 -182
- package/dist/esm/v2/patterns/DataGridVirtualized.js.map +1 -1
- package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js +26 -30
- package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
- package/dist/esm/v2/patterns/DetailSplit.js +108 -0
- package/dist/esm/v2/patterns/DetailSplit.js.map +1 -0
- package/dist/esm/v2/patterns/FavoriteColumn.js +26 -75
- package/dist/esm/v2/patterns/FavoriteColumn.js.map +1 -1
- package/dist/esm/v2/patterns/FavoritesFilter.js +30 -39
- package/dist/esm/v2/patterns/FavoritesFilter.js.map +1 -1
- package/dist/esm/v2/patterns/FilterTabBar.js +112 -0
- package/dist/esm/v2/patterns/FilterTabBar.js.map +1 -0
- package/dist/esm/v2/patterns/FormErrorSummary.js +12 -13
- package/dist/esm/v2/patterns/FormErrorSummary.js.map +1 -1
- package/dist/esm/v2/patterns/FormPageShell.js +43 -41
- package/dist/esm/v2/patterns/FormPageShell.js.map +1 -1
- package/dist/esm/v2/patterns/FormSection.js +30 -38
- package/dist/esm/v2/patterns/FormSection.js.map +1 -1
- package/dist/esm/v2/patterns/FormikCheckbox.js +130 -0
- package/dist/esm/v2/patterns/FormikCheckbox.js.map +1 -0
- package/dist/esm/v2/patterns/FormikCheckboxGroup.js +56 -60
- package/dist/esm/v2/patterns/FormikCheckboxGroup.js.map +1 -1
- package/dist/esm/v2/patterns/FormikCombobox.js +51 -66
- package/dist/esm/v2/patterns/FormikCombobox.js.map +1 -1
- package/dist/esm/v2/patterns/FormikDatePicker.js +51 -99
- package/dist/esm/v2/patterns/FormikDatePicker.js.map +1 -1
- package/dist/esm/v2/patterns/FormikDateTimePicker.js +136 -0
- package/dist/esm/v2/patterns/FormikDateTimePicker.js.map +1 -0
- package/dist/esm/v2/patterns/FormikErrorFocus.js +22 -23
- package/dist/esm/v2/patterns/FormikErrorFocus.js.map +1 -1
- package/dist/esm/v2/patterns/FormikErrorSummary.js +89 -0
- package/dist/esm/v2/patterns/FormikErrorSummary.js.map +1 -0
- package/dist/esm/v2/patterns/FormikFile.js +94 -78
- package/dist/esm/v2/patterns/FormikFile.js.map +1 -1
- package/dist/esm/v2/patterns/FormikInput.js +40 -50
- package/dist/esm/v2/patterns/FormikInput.js.map +1 -1
- package/dist/esm/v2/patterns/FormikRadioGroup.js +129 -0
- package/dist/esm/v2/patterns/FormikRadioGroup.js.map +1 -0
- package/dist/esm/v2/patterns/FormikReferentielField.js +49 -59
- package/dist/esm/v2/patterns/FormikReferentielField.js.map +1 -1
- package/dist/esm/v2/patterns/FormikSelect.js +64 -84
- package/dist/esm/v2/patterns/FormikSelect.js.map +1 -1
- package/dist/esm/v2/patterns/FormikTextarea.js +30 -43
- package/dist/esm/v2/patterns/FormikTextarea.js.map +1 -1
- package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js +64 -65
- package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
- package/dist/esm/v2/patterns/NetworkErrorBanner.js +6 -7
- package/dist/esm/v2/patterns/NetworkErrorBanner.js.map +1 -1
- package/dist/esm/v2/patterns/PageContent.js +10 -14
- package/dist/esm/v2/patterns/PageContent.js.map +1 -1
- package/dist/esm/v2/patterns/PreviewDrawer.js +153 -0
- package/dist/esm/v2/patterns/PreviewDrawer.js.map +1 -0
- package/dist/esm/v2/patterns/ReferentielField.js +327 -312
- package/dist/esm/v2/patterns/ReferentielField.js.map +1 -1
- package/dist/esm/v2/patterns/RowFavoriteToggle.js +127 -0
- package/dist/esm/v2/patterns/RowFavoriteToggle.js.map +1 -0
- package/dist/esm/v2/patterns/SaveFilterDialog.js +38 -66
- package/dist/esm/v2/patterns/SaveFilterDialog.js.map +1 -1
- package/dist/esm/v2/patterns/SavedFiltersMenu.js +62 -81
- package/dist/esm/v2/patterns/SavedFiltersMenu.js.map +1 -1
- package/dist/esm/v2/patterns/SkeletonPageShell.js +106 -129
- package/dist/esm/v2/patterns/SkeletonPageShell.js.map +1 -1
- package/dist/esm/v2/patterns/SortableHeader.js +22 -45
- package/dist/esm/v2/patterns/SortableHeader.js.map +1 -1
- package/dist/esm/v2/patterns/Tour.js +94 -120
- package/dist/esm/v2/patterns/Tour.js.map +1 -1
- package/dist/esm/v2/patterns/_dataGridShared.js +107 -128
- package/dist/esm/v2/patterns/_dataGridShared.js.map +1 -1
- package/dist/esm/v2/patterns/_pickerSerialisation.js +72 -0
- package/dist/esm/v2/patterns/_pickerSerialisation.js.map +1 -0
- package/dist/esm/v2/patterns/_sort.js +17 -33
- package/dist/esm/v2/patterns/_sort.js.map +1 -1
- package/dist/esm/v2/patterns/_useColumnReorder.js +122 -160
- package/dist/esm/v2/patterns/_useColumnReorder.js.map +1 -1
- package/dist/esm/v2/patterns/_useColumnResize.js +78 -96
- package/dist/esm/v2/patterns/_useColumnResize.js.map +1 -1
- package/dist/esm/v2/patterns/filterCriteria.js +102 -0
- package/dist/esm/v2/patterns/filterCriteria.js.map +1 -0
- package/dist/esm/v2/patterns/index.js +235 -0
- package/dist/esm/v2/patterns/index.js.map +1 -1
- package/dist/esm/v2/patterns/rowActions.js +223 -0
- package/dist/esm/v2/patterns/rowActions.js.map +1 -0
- package/dist/esm/v2/personalization/PersonalizationProvider.js +50 -47
- package/dist/esm/v2/personalization/PersonalizationProvider.js.map +1 -1
- package/dist/esm/v2/personalization/adapters/_storageKey.js +5 -5
- package/dist/esm/v2/personalization/adapters/_storageKey.js.map +1 -1
- package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js +22 -23
- package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
- package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js +13 -13
- package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
- package/dist/esm/v2/personalization/capabilities/favorites.js +36 -60
- package/dist/esm/v2/personalization/capabilities/favorites.js.map +1 -1
- package/dist/esm/v2/personalization/capabilities/favoritesView.js +22 -34
- package/dist/esm/v2/personalization/capabilities/favoritesView.js.map +1 -1
- package/dist/esm/v2/personalization/capabilities/gridPreferences.js +203 -0
- package/dist/esm/v2/personalization/capabilities/gridPreferences.js.map +1 -0
- package/dist/esm/v2/personalization/capabilities/index.js +5 -0
- package/dist/esm/v2/personalization/capabilities/index.js.map +1 -1
- package/dist/esm/v2/personalization/capabilities/reviveSavedCriteria.js +119 -0
- package/dist/esm/v2/personalization/capabilities/reviveSavedCriteria.js.map +1 -0
- package/dist/esm/v2/personalization/capabilities/savedFilters.js +90 -98
- package/dist/esm/v2/personalization/capabilities/savedFilters.js.map +1 -1
- package/dist/esm/v2/personalization/createPersonalizationStore.js +78 -181
- package/dist/esm/v2/personalization/createPersonalizationStore.js.map +1 -1
- package/dist/esm/v2/personalization/index.js +35 -0
- package/dist/esm/v2/personalization/index.js.map +1 -1
- package/dist/esm/v2/personalization/personalizationContext.js +9 -9
- package/dist/esm/v2/personalization/personalizationContext.js.map +1 -1
- package/dist/esm/v2/personalization/schema.js +8 -9
- package/dist/esm/v2/personalization/schema.js.map +1 -1
- package/dist/esm/v2/referentiel/ReferentielProvider.js +27 -42
- package/dist/esm/v2/referentiel/ReferentielProvider.js.map +1 -1
- package/dist/esm/v2/referentiel/types.js +2 -0
- package/dist/esm/v2/referentiel/types.js.map +1 -0
- package/dist/esm/v2/referentiel/useReferentielClient.js +10 -11
- package/dist/esm/v2/referentiel/useReferentielClient.js.map +1 -1
- package/dist/esm/v2/referentiel/useReferentielOptions.js +60 -117
- package/dist/esm/v2/referentiel/useReferentielOptions.js.map +1 -1
- package/dist/esm/v2/referentiel/useReferentielSearch.js +37 -91
- package/dist/esm/v2/referentiel/useReferentielSearch.js.map +1 -1
- package/dist/esm/v2/theme/_brand.js +8 -24
- package/dist/esm/v2/theme/_brand.js.map +1 -1
- package/dist/esm/v2/theme/_brandSecondary.js +8 -24
- package/dist/esm/v2/theme/_brandSecondary.js.map +1 -1
- package/dist/esm/v2/theme/createPortnetTheme.js +51 -61
- package/dist/esm/v2/theme/createPortnetTheme.js.map +1 -1
- package/dist/esm/v2/theme/cssVariables.js +62 -69
- package/dist/esm/v2/theme/cssVariables.js.map +1 -1
- package/dist/esm/v2/theme/index.js +5 -5
- package/dist/esm/v2/theme/index.js.map +1 -1
- package/dist/esm/v2/tokens/breakpoints.js +14 -14
- package/dist/esm/v2/tokens/breakpoints.js.map +1 -1
- package/dist/esm/v2/tokens/chart.js +261 -0
- package/dist/esm/v2/tokens/chart.js.map +1 -0
- package/dist/esm/v2/tokens/colors.js +22 -22
- package/dist/esm/v2/tokens/colors.js.map +1 -1
- package/dist/esm/v2/tokens/density.js +62 -7
- package/dist/esm/v2/tokens/density.js.map +1 -1
- package/dist/esm/v2/tokens/index.js +49 -34
- package/dist/esm/v2/tokens/index.js.map +1 -1
- package/dist/esm/v2/tokens/motion.js +12 -20
- package/dist/esm/v2/tokens/motion.js.map +1 -1
- package/dist/esm/v2/tokens/radius.js +1 -1
- package/dist/esm/v2/tokens/radius.js.map +1 -1
- package/dist/esm/v2/tokens/shadows.js +6 -6
- package/dist/esm/v2/tokens/shadows.js.map +1 -1
- package/dist/esm/v2/tokens/spacing.js +2 -2
- package/dist/esm/v2/tokens/spacing.js.map +1 -1
- package/dist/esm/v2/tokens/state.js +1 -1
- package/dist/esm/v2/tokens/state.js.map +1 -1
- package/dist/esm/v2/tokens/statusPalette.js +17 -21
- package/dist/esm/v2/tokens/statusPalette.js.map +1 -1
- package/dist/esm/v2/tokens/tokens.json +6 -1
- package/dist/esm/v2/tokens/typography.js +13 -13
- package/dist/esm/v2/tokens/typography.js.map +1 -1
- package/dist/esm/v2/tokens/zIndex.js +1 -1
- package/dist/esm/v2/tokens/zIndex.js.map +1 -1
- package/dist/esm/v2/types/datagrid.js.map +1 -1
- package/dist/esm/v2/utils/apiError.js +16 -37
- package/dist/esm/v2/utils/apiError.js.map +1 -1
- package/dist/esm/v2/utils/contrast.js +31 -32
- package/dist/esm/v2/utils/contrast.js.map +1 -1
- package/dist/esm/v2/utils/cx.js +5 -25
- package/dist/esm/v2/utils/cx.js.map +1 -1
- package/dist/esm/v2/utils/fileDownload.js +23 -26
- package/dist/esm/v2/utils/fileDownload.js.map +1 -1
- package/dist/esm/v2/utils/fileValidation.js +209 -0
- package/dist/esm/v2/utils/fileValidation.js.map +1 -0
- package/dist/esm/v2/utils/fmtDate.js +111 -0
- package/dist/esm/v2/utils/fmtDate.js.map +1 -0
- package/dist/esm/v2/utils/fmtMoney.js +8 -10
- package/dist/esm/v2/utils/fmtMoney.js.map +1 -1
- package/dist/esm/v2/utils/formikErrors.js +78 -0
- package/dist/esm/v2/utils/formikErrors.js.map +1 -0
- package/dist/esm/v2/utils/index.js +35 -2
- package/dist/esm/v2/utils/index.js.map +1 -1
- package/dist/esm/v2/utils/mergeLabels.js +7 -12
- package/dist/esm/v2/utils/mergeLabels.js.map +1 -1
- package/dist/esm/v2/utils/networkStatus.js +12 -12
- package/dist/esm/v2/utils/networkStatus.js.map +1 -1
- package/dist/index.d.ts +9 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +122 -47
- package/dist/index.js.map +1 -1
- package/dist/v2/__tests__/AppMain.test.js +133 -0
- package/dist/v2/__tests__/AppMain.test.js.map +1 -0
- package/dist/v2/__tests__/ChartFigure.test.js +183 -0
- package/dist/v2/__tests__/ChartFigure.test.js.map +1 -0
- package/dist/v2/__tests__/DataGridRowActionsPropagation.test.js +153 -0
- package/dist/v2/__tests__/DataGridRowActionsPropagation.test.js.map +1 -0
- package/dist/v2/__tests__/DrawerTactileTargets.test.js +94 -0
- package/dist/v2/__tests__/DrawerTactileTargets.test.js.map +1 -0
- package/dist/v2/__tests__/FieldError.test.js +98 -69
- package/dist/v2/__tests__/FieldError.test.js.map +1 -1
- package/dist/v2/__tests__/FieldNaming.test.js +161 -0
- package/dist/v2/__tests__/FieldNaming.test.js.map +1 -0
- package/dist/v2/__tests__/FieldWidth.test.js +148 -0
- package/dist/v2/__tests__/FieldWidth.test.js.map +1 -0
- package/dist/v2/__tests__/FileCard.test.js +45 -48
- package/dist/v2/__tests__/FileCard.test.js.map +1 -1
- package/dist/v2/__tests__/FormikCheckbox.test.js +175 -0
- package/dist/v2/__tests__/FormikCheckbox.test.js.map +1 -0
- package/dist/v2/__tests__/FormikDateTimePicker.test.js +237 -0
- package/dist/v2/__tests__/FormikDateTimePicker.test.js.map +1 -0
- package/dist/v2/__tests__/FormikDisplayWidth.test.js +102 -0
- package/dist/v2/__tests__/FormikDisplayWidth.test.js.map +1 -0
- package/dist/v2/__tests__/FormikRadioGroup.test.js +300 -0
- package/dist/v2/__tests__/FormikRadioGroup.test.js.map +1 -0
- package/dist/v2/__tests__/MobileRowCard.test.js +100 -102
- package/dist/v2/__tests__/MobileRowCard.test.js.map +1 -1
- package/dist/v2/__tests__/PreviewDrawer.test.js +169 -0
- package/dist/v2/__tests__/PreviewDrawer.test.js.map +1 -0
- package/dist/v2/__tests__/ReferentielFieldContainer.test.js +159 -0
- package/dist/v2/__tests__/ReferentielFieldContainer.test.js.map +1 -0
- package/dist/v2/__tests__/SectionErrorBoundary.test.js +53 -68
- package/dist/v2/__tests__/SectionErrorBoundary.test.js.map +1 -1
- package/dist/v2/__tests__/apiError.test.js +50 -69
- package/dist/v2/__tests__/apiError.test.js.map +1 -1
- package/dist/v2/__tests__/banned-patterns.test.js +42 -123
- package/dist/v2/__tests__/banned-patterns.test.js.map +1 -1
- package/dist/v2/__tests__/chart-palette.test.js +205 -0
- package/dist/v2/__tests__/chart-palette.test.js.map +1 -0
- package/dist/v2/__tests__/contrast-palette.test.js +42 -74
- package/dist/v2/__tests__/contrast-palette.test.js.map +1 -1
- package/dist/v2/__tests__/cssVariables.test.js +44 -51
- package/dist/v2/__tests__/cssVariables.test.js.map +1 -1
- package/dist/v2/__tests__/fileValidation.test.js +136 -0
- package/dist/v2/__tests__/fileValidation.test.js.map +1 -0
- package/dist/v2/__tests__/filterCriteria.test.js +324 -0
- package/dist/v2/__tests__/filterCriteria.test.js.map +1 -0
- package/dist/v2/__tests__/fmtDate.test.js +69 -0
- package/dist/v2/__tests__/fmtDate.test.js.map +1 -0
- package/dist/v2/__tests__/gap-leakage-refonte.test.js +221 -0
- package/dist/v2/__tests__/gap-leakage-refonte.test.js.map +1 -0
- package/dist/v2/__tests__/labels-merge.test.js +38 -46
- package/dist/v2/__tests__/labels-merge.test.js.map +1 -1
- package/dist/v2/__tests__/locale-fallback.test.js +47 -52
- package/dist/v2/__tests__/locale-fallback.test.js.map +1 -1
- package/dist/v2/__tests__/reviveSavedCriteria.test.js +144 -0
- package/dist/v2/__tests__/reviveSavedCriteria.test.js.map +1 -0
- package/dist/v2/__tests__/rowActions.test.js +186 -0
- package/dist/v2/__tests__/rowActions.test.js.map +1 -0
- package/dist/v2/__tests__/useFocusOnRouteChange.test.js +156 -0
- package/dist/v2/__tests__/useFocusOnRouteChange.test.js.map +1 -0
- package/dist/v2/__tests__/useFocusTrap.test.js +270 -407
- package/dist/v2/__tests__/useFocusTrap.test.js.map +1 -1
- package/dist/v2/__tests__/usePrefersReducedMotion.test.js +123 -0
- package/dist/v2/__tests__/usePrefersReducedMotion.test.js.map +1 -0
- package/dist/v2/components/Accordion.js +60 -82
- package/dist/v2/components/Accordion.js.map +1 -1
- package/dist/v2/components/ActionStrip.js +40 -52
- package/dist/v2/components/ActionStrip.js.map +1 -1
- package/dist/v2/components/Banner.js +42 -41
- package/dist/v2/components/Banner.js.map +1 -1
- package/dist/v2/components/Busy.js +22 -27
- package/dist/v2/components/Busy.js.map +1 -1
- package/dist/v2/components/Button.js +39 -50
- package/dist/v2/components/Button.js.map +1 -1
- package/dist/v2/components/CategoryTag.d.ts.map +1 -1
- package/dist/v2/components/CategoryTag.js +49 -32
- package/dist/v2/components/CategoryTag.js.map +1 -1
- package/dist/v2/components/Checkbox.js +39 -45
- package/dist/v2/components/Checkbox.js.map +1 -1
- package/dist/v2/components/Chip.js +29 -42
- package/dist/v2/components/Chip.js.map +1 -1
- package/dist/v2/components/Combobox.js +122 -144
- package/dist/v2/components/Combobox.js.map +1 -1
- package/dist/v2/components/CommandPalette.js +138 -225
- package/dist/v2/components/CommandPalette.js.map +1 -1
- package/dist/v2/components/ConfirmDialog.js +46 -56
- package/dist/v2/components/ConfirmDialog.js.map +1 -1
- package/dist/v2/components/DatePicker.js +81 -86
- package/dist/v2/components/DatePicker.js.map +1 -1
- package/dist/v2/components/DateRangePicker.js +77 -87
- package/dist/v2/components/DateRangePicker.js.map +1 -1
- package/dist/v2/components/DateTimePicker.d.ts.map +1 -1
- package/dist/v2/components/DateTimePicker.js +121 -95
- package/dist/v2/components/DateTimePicker.js.map +1 -1
- package/dist/v2/components/Drawer.d.ts.map +1 -1
- package/dist/v2/components/Drawer.js +93 -88
- package/dist/v2/components/Drawer.js.map +1 -1
- package/dist/v2/components/Dropzone.js +150 -196
- package/dist/v2/components/Dropzone.js.map +1 -1
- package/dist/v2/components/EmptyState.js +18 -20
- package/dist/v2/components/EmptyState.js.map +1 -1
- package/dist/v2/components/FavoriteToggle.js +28 -39
- package/dist/v2/components/FavoriteToggle.js.map +1 -1
- package/dist/v2/components/Field.d.ts +121 -5
- package/dist/v2/components/Field.d.ts.map +1 -1
- package/dist/v2/components/Field.js +221 -62
- package/dist/v2/components/Field.js.map +1 -1
- package/dist/v2/components/FieldError.js +18 -21
- package/dist/v2/components/FieldError.js.map +1 -1
- package/dist/v2/components/FieldHelp.js +40 -60
- package/dist/v2/components/FieldHelp.js.map +1 -1
- package/dist/v2/components/FileCard.js +27 -31
- package/dist/v2/components/FileCard.js.map +1 -1
- package/dist/v2/components/FilterTab.js +30 -38
- package/dist/v2/components/FilterTab.js.map +1 -1
- package/dist/v2/components/ForbiddenPage.d.ts +25 -1
- package/dist/v2/components/ForbiddenPage.d.ts.map +1 -1
- package/dist/v2/components/ForbiddenPage.js +37 -17
- package/dist/v2/components/ForbiddenPage.js.map +1 -1
- package/dist/v2/components/FormGrid.js +53 -59
- package/dist/v2/components/FormGrid.js.map +1 -1
- package/dist/v2/components/FormikDisplay.d.ts +50 -1
- package/dist/v2/components/FormikDisplay.d.ts.map +1 -1
- package/dist/v2/components/FormikDisplay.js +108 -33
- package/dist/v2/components/FormikDisplay.js.map +1 -1
- package/dist/v2/components/Input.d.ts +40 -0
- package/dist/v2/components/Input.d.ts.map +1 -1
- package/dist/v2/components/Input.js +81 -41
- package/dist/v2/components/Input.js.map +1 -1
- package/dist/v2/components/KPICard.js +57 -67
- package/dist/v2/components/KPICard.js.map +1 -1
- package/dist/v2/components/KPIStrip.js +16 -22
- package/dist/v2/components/KPIStrip.js.map +1 -1
- package/dist/v2/components/KV.js +25 -31
- package/dist/v2/components/KV.js.map +1 -1
- package/dist/v2/components/KVGrid.js +19 -26
- package/dist/v2/components/KVGrid.js.map +1 -1
- package/dist/v2/components/Layout.js +91 -120
- package/dist/v2/components/Layout.js.map +1 -1
- package/dist/v2/components/MobileRowCard.js +79 -91
- package/dist/v2/components/MobileRowCard.js.map +1 -1
- package/dist/v2/components/Modal.js +61 -69
- package/dist/v2/components/Modal.js.map +1 -1
- package/dist/v2/components/NetworkErrorPage.d.ts +19 -1
- package/dist/v2/components/NetworkErrorPage.d.ts.map +1 -1
- package/dist/v2/components/NetworkErrorPage.js +38 -21
- package/dist/v2/components/NetworkErrorPage.js.map +1 -1
- package/dist/v2/components/NotFoundPage.d.ts +17 -1
- package/dist/v2/components/NotFoundPage.d.ts.map +1 -1
- package/dist/v2/components/NotFoundPage.js +37 -18
- package/dist/v2/components/NotFoundPage.js.map +1 -1
- package/dist/v2/components/NumberInput.js +88 -118
- package/dist/v2/components/NumberInput.js.map +1 -1
- package/dist/v2/components/OverflowMenu.js +38 -56
- package/dist/v2/components/OverflowMenu.js.map +1 -1
- package/dist/v2/components/PdfViewer.js +34 -45
- package/dist/v2/components/PdfViewer.js.map +1 -1
- package/dist/v2/components/ProgressBar.js +42 -49
- package/dist/v2/components/ProgressBar.js.map +1 -1
- package/dist/v2/components/Radio.js +59 -67
- package/dist/v2/components/Radio.js.map +1 -1
- package/dist/v2/components/SectionErrorBoundary.js +90 -135
- package/dist/v2/components/SectionErrorBoundary.js.map +1 -1
- package/dist/v2/components/SectionHeader.js +34 -41
- package/dist/v2/components/SectionHeader.js.map +1 -1
- package/dist/v2/components/Segmented.js +69 -93
- package/dist/v2/components/Segmented.js.map +1 -1
- package/dist/v2/components/Select.d.ts +26 -2
- package/dist/v2/components/Select.d.ts.map +1 -1
- package/dist/v2/components/Select.js +120 -155
- package/dist/v2/components/Select.js.map +1 -1
- package/dist/v2/components/ServerErrorPage.d.ts +27 -1
- package/dist/v2/components/ServerErrorPage.d.ts.map +1 -1
- package/dist/v2/components/ServerErrorPage.js +37 -20
- package/dist/v2/components/ServerErrorPage.js.map +1 -1
- package/dist/v2/components/Skeleton.js +86 -100
- package/dist/v2/components/Skeleton.js.map +1 -1
- package/dist/v2/components/SkipLink.js +9 -12
- package/dist/v2/components/SkipLink.js.map +1 -1
- package/dist/v2/components/Spinner.js +16 -25
- package/dist/v2/components/Spinner.js.map +1 -1
- package/dist/v2/components/Status.js +18 -29
- package/dist/v2/components/Status.js.map +1 -1
- package/dist/v2/components/Stepper.js +80 -82
- package/dist/v2/components/Stepper.js.map +1 -1
- package/dist/v2/components/Surface.js +34 -49
- package/dist/v2/components/Surface.js.map +1 -1
- package/dist/v2/components/Switch.js +29 -37
- package/dist/v2/components/Switch.js.map +1 -1
- package/dist/v2/components/TabPanel.d.ts +17 -0
- package/dist/v2/components/TabPanel.d.ts.map +1 -0
- package/dist/v2/components/TabPanel.js +90 -0
- package/dist/v2/components/TabPanel.js.map +1 -0
- package/dist/v2/components/Tabs.d.ts +25 -0
- package/dist/v2/components/Tabs.d.ts.map +1 -1
- package/dist/v2/components/Tabs.js +53 -29
- package/dist/v2/components/Tabs.js.map +1 -1
- package/dist/v2/components/TelInput.js +80 -115
- package/dist/v2/components/TelInput.js.map +1 -1
- package/dist/v2/components/Textarea.js +26 -35
- package/dist/v2/components/Textarea.js.map +1 -1
- package/dist/v2/components/TimePicker.js +62 -74
- package/dist/v2/components/TimePicker.js.map +1 -1
- package/dist/v2/components/Toast.js +119 -174
- package/dist/v2/components/Toast.js.map +1 -1
- package/dist/v2/components/Tooltip.js +23 -38
- package/dist/v2/components/Tooltip.js.map +1 -1
- package/dist/v2/components/_ErrorPageBody.js +15 -16
- package/dist/v2/components/_ErrorPageBody.js.map +1 -1
- package/dist/v2/components/_pickerShared.js +5 -5
- package/dist/v2/components/_pickerShared.js.map +1 -1
- package/dist/v2/components/index.d.ts +67 -1
- package/dist/v2/components/index.d.ts.map +1 -1
- package/dist/v2/components/index.js +153 -136
- package/dist/v2/components/index.js.map +1 -1
- package/dist/v2/hooks/index.d.ts +65 -0
- package/dist/v2/hooks/index.d.ts.map +1 -1
- package/dist/v2/hooks/index.js +63 -24
- package/dist/v2/hooks/index.js.map +1 -1
- package/dist/v2/hooks/useAppliedFilters.d.ts +102 -0
- package/dist/v2/hooks/useAppliedFilters.d.ts.map +1 -0
- package/dist/v2/hooks/useAppliedFilters.js +117 -0
- package/dist/v2/hooks/useAppliedFilters.js.map +1 -0
- package/dist/v2/hooks/useDebouncedCallback.d.ts +64 -0
- package/dist/v2/hooks/useDebouncedCallback.d.ts.map +1 -0
- package/dist/v2/hooks/useDebouncedCallback.js +87 -0
- package/dist/v2/hooks/useDebouncedCallback.js.map +1 -0
- package/dist/v2/hooks/useDelayedFlag.js +6 -20
- package/dist/v2/hooks/useDelayedFlag.js.map +1 -1
- package/dist/v2/hooks/useDensity.d.ts.map +1 -1
- package/dist/v2/hooks/useDensity.js +14 -18
- package/dist/v2/hooks/useDensity.js.map +1 -1
- package/dist/v2/hooks/useFocusFirstError.js +26 -34
- package/dist/v2/hooks/useFocusFirstError.js.map +1 -1
- package/dist/v2/hooks/useFocusOnRouteChange.d.ts +65 -0
- package/dist/v2/hooks/useFocusOnRouteChange.d.ts.map +1 -0
- package/dist/v2/hooks/useFocusOnRouteChange.js +88 -0
- package/dist/v2/hooks/useFocusOnRouteChange.js.map +1 -0
- package/dist/v2/hooks/useFocusTrap.js +20 -24
- package/dist/v2/hooks/useFocusTrap.js.map +1 -1
- package/dist/v2/hooks/useFormAutoSave.d.ts +4 -4
- package/dist/v2/hooks/useFormAutoSave.d.ts.map +1 -1
- package/dist/v2/hooks/useFormAutoSave.js +39 -54
- package/dist/v2/hooks/useFormAutoSave.js.map +1 -1
- package/dist/v2/hooks/useFormCompletionProgress.d.ts +1 -1
- package/dist/v2/hooks/useFormCompletionProgress.d.ts.map +1 -1
- package/dist/v2/hooks/useFormCompletionProgress.js +33 -52
- package/dist/v2/hooks/useFormCompletionProgress.js.map +1 -1
- package/dist/v2/hooks/useKeyboardShortcuts.d.ts +25 -0
- package/dist/v2/hooks/useKeyboardShortcuts.d.ts.map +1 -0
- package/dist/v2/hooks/useKeyboardShortcuts.js +132 -0
- package/dist/v2/hooks/useKeyboardShortcuts.js.map +1 -0
- package/dist/v2/hooks/usePrefersReducedMotion.d.ts +56 -0
- package/dist/v2/hooks/usePrefersReducedMotion.d.ts.map +1 -0
- package/dist/v2/hooks/usePrefersReducedMotion.js +105 -0
- package/dist/v2/hooks/usePrefersReducedMotion.js.map +1 -0
- package/dist/v2/hooks/useResolvedDensity.js +5 -13
- package/dist/v2/hooks/useResolvedDensity.js.map +1 -1
- package/dist/v2/hooks/useSortedRows.js +4 -6
- package/dist/v2/hooks/useSortedRows.js.map +1 -1
- package/dist/v2/hooks/useTabLoading.js +7 -22
- package/dist/v2/hooks/useTabLoading.js.map +1 -1
- package/dist/v2/index.d.ts.map +1 -1
- package/dist/v2/index.js +143 -145
- package/dist/v2/index.js.map +1 -1
- package/dist/v2/modalContext.js +2 -2
- package/dist/v2/modalContext.js.map +1 -1
- package/dist/v2/models/favorite.d.ts +8 -9
- package/dist/v2/models/favorite.d.ts.map +1 -1
- package/dist/v2/models/favorite.js.map +1 -1
- package/dist/v2/models/index.js +4 -4
- package/dist/v2/models/index.js.map +1 -1
- package/dist/v2/models/personalization.d.ts +44 -48
- package/dist/v2/models/personalization.d.ts.map +1 -1
- package/dist/v2/models/personalization.js.map +1 -1
- package/dist/v2/models/referentiel.d.ts +32 -50
- package/dist/v2/models/referentiel.d.ts.map +1 -1
- package/dist/v2/models/referentiel.js.map +1 -1
- package/dist/v2/models/savedFilter.d.ts +8 -17
- package/dist/v2/models/savedFilter.d.ts.map +1 -1
- package/dist/v2/models/savedFilter.js.map +1 -1
- package/dist/v2/patterns/ActionBar.js +152 -187
- package/dist/v2/patterns/ActionBar.js.map +1 -1
- package/dist/v2/patterns/AppMain.d.ts +109 -0
- package/dist/v2/patterns/AppMain.d.ts.map +1 -0
- package/dist/v2/patterns/AppMain.js +115 -0
- package/dist/v2/patterns/AppMain.js.map +1 -0
- package/dist/v2/patterns/BulkActionBar.js +40 -42
- package/dist/v2/patterns/BulkActionBar.js.map +1 -1
- package/dist/v2/patterns/ChartFigure.d.ts +124 -0
- package/dist/v2/patterns/ChartFigure.d.ts.map +1 -0
- package/dist/v2/patterns/ChartFigure.js +159 -0
- package/dist/v2/patterns/ChartFigure.js.map +1 -0
- package/dist/v2/patterns/CollapsibleDataGrid.js +138 -174
- package/dist/v2/patterns/CollapsibleDataGrid.js.map +1 -1
- package/dist/v2/patterns/ColumnsToggle.js +60 -94
- package/dist/v2/patterns/ColumnsToggle.js.map +1 -1
- package/dist/v2/patterns/DataGrid.d.ts.map +1 -1
- package/dist/v2/patterns/DataGrid.js +262 -297
- package/dist/v2/patterns/DataGrid.js.map +1 -1
- package/dist/v2/patterns/DataGridSettingsMenu.d.ts +12 -0
- package/dist/v2/patterns/DataGridSettingsMenu.d.ts.map +1 -1
- package/dist/v2/patterns/DataGridSettingsMenu.js +104 -121
- package/dist/v2/patterns/DataGridSettingsMenu.js.map +1 -1
- package/dist/v2/patterns/DataGridToolbar.js +103 -106
- package/dist/v2/patterns/DataGridToolbar.js.map +1 -1
- package/dist/v2/patterns/DataGridVirtualized.js +179 -217
- package/dist/v2/patterns/DataGridVirtualized.js.map +1 -1
- package/dist/v2/patterns/DeleteResourceConfirmDialog.js +32 -35
- package/dist/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
- package/dist/v2/patterns/DetailSplit.d.ts +87 -0
- package/dist/v2/patterns/DetailSplit.d.ts.map +1 -0
- package/dist/v2/patterns/DetailSplit.js +116 -0
- package/dist/v2/patterns/DetailSplit.js.map +1 -0
- package/dist/v2/patterns/FavoriteColumn.d.ts +9 -9
- package/dist/v2/patterns/FavoriteColumn.d.ts.map +1 -1
- package/dist/v2/patterns/FavoriteColumn.js +32 -80
- package/dist/v2/patterns/FavoriteColumn.js.map +1 -1
- package/dist/v2/patterns/FavoritesFilter.js +36 -44
- package/dist/v2/patterns/FavoritesFilter.js.map +1 -1
- package/dist/v2/patterns/FilterTabBar.d.ts +28 -0
- package/dist/v2/patterns/FilterTabBar.d.ts.map +1 -0
- package/dist/v2/patterns/FilterTabBar.js +120 -0
- package/dist/v2/patterns/FilterTabBar.js.map +1 -0
- package/dist/v2/patterns/FormErrorSummary.js +20 -23
- package/dist/v2/patterns/FormErrorSummary.js.map +1 -1
- package/dist/v2/patterns/FormPageShell.js +53 -50
- package/dist/v2/patterns/FormPageShell.js.map +1 -1
- package/dist/v2/patterns/FormSection.d.ts +8 -3
- package/dist/v2/patterns/FormSection.d.ts.map +1 -1
- package/dist/v2/patterns/FormSection.js +44 -51
- package/dist/v2/patterns/FormSection.js.map +1 -1
- package/dist/v2/patterns/FormikCheckbox.d.ts +77 -0
- package/dist/v2/patterns/FormikCheckbox.d.ts.map +1 -0
- package/dist/v2/patterns/FormikCheckbox.js +138 -0
- package/dist/v2/patterns/FormikCheckbox.js.map +1 -0
- package/dist/v2/patterns/FormikCheckboxGroup.d.ts +17 -1
- package/dist/v2/patterns/FormikCheckboxGroup.d.ts.map +1 -1
- package/dist/v2/patterns/FormikCheckboxGroup.js +62 -65
- package/dist/v2/patterns/FormikCheckboxGroup.js.map +1 -1
- package/dist/v2/patterns/FormikCombobox.d.ts +7 -1
- package/dist/v2/patterns/FormikCombobox.d.ts.map +1 -1
- package/dist/v2/patterns/FormikCombobox.js +55 -69
- package/dist/v2/patterns/FormikCombobox.js.map +1 -1
- package/dist/v2/patterns/FormikDatePicker.d.ts +13 -1
- package/dist/v2/patterns/FormikDatePicker.d.ts.map +1 -1
- package/dist/v2/patterns/FormikDatePicker.js +59 -106
- package/dist/v2/patterns/FormikDatePicker.js.map +1 -1
- package/dist/v2/patterns/FormikDateTimePicker.d.ts +111 -0
- package/dist/v2/patterns/FormikDateTimePicker.d.ts.map +1 -0
- package/dist/v2/patterns/FormikDateTimePicker.js +144 -0
- package/dist/v2/patterns/FormikDateTimePicker.js.map +1 -0
- package/dist/v2/patterns/FormikErrorFocus.js +25 -26
- package/dist/v2/patterns/FormikErrorFocus.js.map +1 -1
- package/dist/v2/patterns/FormikErrorSummary.d.ts +74 -0
- package/dist/v2/patterns/FormikErrorSummary.d.ts.map +1 -0
- package/dist/v2/patterns/FormikErrorSummary.js +97 -0
- package/dist/v2/patterns/FormikErrorSummary.js.map +1 -0
- package/dist/v2/patterns/FormikFile.d.ts +14 -1
- package/dist/v2/patterns/FormikFile.d.ts.map +1 -1
- package/dist/v2/patterns/FormikFile.js +99 -83
- package/dist/v2/patterns/FormikFile.js.map +1 -1
- package/dist/v2/patterns/FormikInput.d.ts +11 -1
- package/dist/v2/patterns/FormikInput.d.ts.map +1 -1
- package/dist/v2/patterns/FormikInput.js +45 -55
- package/dist/v2/patterns/FormikInput.js.map +1 -1
- package/dist/v2/patterns/FormikRadioGroup.d.ts +80 -0
- package/dist/v2/patterns/FormikRadioGroup.d.ts.map +1 -0
- package/dist/v2/patterns/FormikRadioGroup.js +137 -0
- package/dist/v2/patterns/FormikRadioGroup.js.map +1 -0
- package/dist/v2/patterns/FormikReferentielField.d.ts +12 -1
- package/dist/v2/patterns/FormikReferentielField.d.ts.map +1 -1
- package/dist/v2/patterns/FormikReferentielField.js +54 -64
- package/dist/v2/patterns/FormikReferentielField.js.map +1 -1
- package/dist/v2/patterns/FormikSelect.d.ts +9 -1
- package/dist/v2/patterns/FormikSelect.d.ts.map +1 -1
- package/dist/v2/patterns/FormikSelect.js +70 -89
- package/dist/v2/patterns/FormikSelect.js.map +1 -1
- package/dist/v2/patterns/FormikTextarea.d.ts +9 -1
- package/dist/v2/patterns/FormikTextarea.d.ts.map +1 -1
- package/dist/v2/patterns/FormikTextarea.js +35 -48
- package/dist/v2/patterns/FormikTextarea.js.map +1 -1
- package/dist/v2/patterns/KeyboardShortcutsHelp.d.ts +14 -1
- package/dist/v2/patterns/KeyboardShortcutsHelp.d.ts.map +1 -1
- package/dist/v2/patterns/KeyboardShortcutsHelp.js +71 -74
- package/dist/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
- package/dist/v2/patterns/NetworkErrorBanner.js +13 -16
- package/dist/v2/patterns/NetworkErrorBanner.js.map +1 -1
- package/dist/v2/patterns/PageContent.js +17 -20
- package/dist/v2/patterns/PageContent.js.map +1 -1
- package/dist/v2/patterns/PreviewDrawer.d.ts +49 -0
- package/dist/v2/patterns/PreviewDrawer.d.ts.map +1 -0
- package/dist/v2/patterns/PreviewDrawer.js +159 -0
- package/dist/v2/patterns/PreviewDrawer.js.map +1 -0
- package/dist/v2/patterns/ReferentielField.d.ts +86 -2
- package/dist/v2/patterns/ReferentielField.d.ts.map +1 -1
- package/dist/v2/patterns/ReferentielField.js +347 -327
- package/dist/v2/patterns/ReferentielField.js.map +1 -1
- package/dist/v2/patterns/RowFavoriteToggle.d.ts +98 -0
- package/dist/v2/patterns/RowFavoriteToggle.d.ts.map +1 -0
- package/dist/v2/patterns/RowFavoriteToggle.js +135 -0
- package/dist/v2/patterns/RowFavoriteToggle.js.map +1 -0
- package/dist/v2/patterns/SaveFilterDialog.js +50 -77
- package/dist/v2/patterns/SaveFilterDialog.js.map +1 -1
- package/dist/v2/patterns/SavedFiltersMenu.js +89 -107
- package/dist/v2/patterns/SavedFiltersMenu.js.map +1 -1
- package/dist/v2/patterns/SkeletonPageShell.js +122 -143
- package/dist/v2/patterns/SkeletonPageShell.js.map +1 -1
- package/dist/v2/patterns/SortableHeader.js +35 -57
- package/dist/v2/patterns/SortableHeader.js.map +1 -1
- package/dist/v2/patterns/Tour.js +121 -142
- package/dist/v2/patterns/Tour.js.map +1 -1
- package/dist/v2/patterns/_dataGridShared.d.ts.map +1 -1
- package/dist/v2/patterns/_dataGridShared.js +131 -147
- package/dist/v2/patterns/_dataGridShared.js.map +1 -1
- package/dist/v2/patterns/_pickerSerialisation.d.ts +44 -0
- package/dist/v2/patterns/_pickerSerialisation.d.ts.map +1 -0
- package/dist/v2/patterns/_pickerSerialisation.js +80 -0
- package/dist/v2/patterns/_pickerSerialisation.js.map +1 -0
- package/dist/v2/patterns/_sort.js +17 -33
- package/dist/v2/patterns/_sort.js.map +1 -1
- package/dist/v2/patterns/_useColumnReorder.js +124 -163
- package/dist/v2/patterns/_useColumnReorder.js.map +1 -1
- package/dist/v2/patterns/_useColumnResize.js +80 -99
- package/dist/v2/patterns/_useColumnResize.js.map +1 -1
- package/dist/v2/patterns/filterCriteria.d.ts +78 -0
- package/dist/v2/patterns/filterCriteria.d.ts.map +1 -0
- package/dist/v2/patterns/filterCriteria.js +110 -0
- package/dist/v2/patterns/filterCriteria.js.map +1 -0
- package/dist/v2/patterns/index.d.ts +247 -0
- package/dist/v2/patterns/index.d.ts.map +1 -1
- package/dist/v2/patterns/index.js +182 -70
- package/dist/v2/patterns/index.js.map +1 -1
- package/dist/v2/patterns/rowActions.d.ts +150 -0
- package/dist/v2/patterns/rowActions.d.ts.map +1 -0
- package/dist/v2/patterns/rowActions.js +232 -0
- package/dist/v2/patterns/rowActions.js.map +1 -0
- package/dist/v2/personalization/PersonalizationProvider.d.ts.map +1 -1
- package/dist/v2/personalization/PersonalizationProvider.js +57 -53
- package/dist/v2/personalization/PersonalizationProvider.js.map +1 -1
- package/dist/v2/personalization/adapters/_storageKey.js +5 -5
- package/dist/v2/personalization/adapters/_storageKey.js.map +1 -1
- package/dist/v2/personalization/adapters/createLocalStorageAdapter.js +25 -24
- package/dist/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
- package/dist/v2/personalization/adapters/createMemoryAdapter.js +14 -14
- package/dist/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
- package/dist/v2/personalization/adapters/index.js +5 -5
- package/dist/v2/personalization/adapters/index.js.map +1 -1
- package/dist/v2/personalization/capabilities/favorites.js +39 -62
- package/dist/v2/personalization/capabilities/favorites.js.map +1 -1
- package/dist/v2/personalization/capabilities/favoritesView.js +25 -37
- package/dist/v2/personalization/capabilities/favoritesView.js.map +1 -1
- package/dist/v2/personalization/capabilities/gridPreferences.d.ts +100 -0
- package/dist/v2/personalization/capabilities/gridPreferences.d.ts.map +1 -0
- package/dist/v2/personalization/capabilities/gridPreferences.js +210 -0
- package/dist/v2/personalization/capabilities/gridPreferences.js.map +1 -0
- package/dist/v2/personalization/capabilities/index.d.ts +6 -0
- package/dist/v2/personalization/capabilities/index.d.ts.map +1 -1
- package/dist/v2/personalization/capabilities/index.js +23 -10
- package/dist/v2/personalization/capabilities/index.js.map +1 -1
- package/dist/v2/personalization/capabilities/reviveSavedCriteria.d.ts +88 -0
- package/dist/v2/personalization/capabilities/reviveSavedCriteria.d.ts.map +1 -0
- package/dist/v2/personalization/capabilities/reviveSavedCriteria.js +126 -0
- package/dist/v2/personalization/capabilities/reviveSavedCriteria.js.map +1 -0
- package/dist/v2/personalization/capabilities/savedFilters.js +93 -100
- package/dist/v2/personalization/capabilities/savedFilters.js.map +1 -1
- package/dist/v2/personalization/createPersonalizationStore.d.ts.map +1 -1
- package/dist/v2/personalization/createPersonalizationStore.js +81 -182
- package/dist/v2/personalization/createPersonalizationStore.js.map +1 -1
- package/dist/v2/personalization/index.d.ts +34 -0
- package/dist/v2/personalization/index.d.ts.map +1 -1
- package/dist/v2/personalization/index.js +41 -21
- package/dist/v2/personalization/index.js.map +1 -1
- package/dist/v2/personalization/personalizationContext.js +10 -12
- package/dist/v2/personalization/personalizationContext.js.map +1 -1
- package/dist/v2/personalization/schema.js +8 -9
- package/dist/v2/personalization/schema.js.map +1 -1
- package/dist/v2/referentiel/ReferentielProvider.js +31 -45
- package/dist/v2/referentiel/ReferentielProvider.js.map +1 -1
- package/dist/v2/referentiel/index.js +11 -13
- package/dist/v2/referentiel/index.js.map +1 -1
- package/dist/v2/referentiel/types.d.ts +105 -0
- package/dist/v2/referentiel/types.d.ts.map +1 -0
- package/dist/v2/referentiel/types.js +6 -0
- package/dist/v2/referentiel/types.js.map +1 -0
- package/dist/v2/referentiel/useReferentielClient.js +13 -16
- package/dist/v2/referentiel/useReferentielClient.js.map +1 -1
- package/dist/v2/referentiel/useReferentielOptions.d.ts +7 -17
- package/dist/v2/referentiel/useReferentielOptions.d.ts.map +1 -1
- package/dist/v2/referentiel/useReferentielOptions.js +63 -120
- package/dist/v2/referentiel/useReferentielOptions.js.map +1 -1
- package/dist/v2/referentiel/useReferentielSearch.d.ts +7 -48
- package/dist/v2/referentiel/useReferentielSearch.d.ts.map +1 -1
- package/dist/v2/referentiel/useReferentielSearch.js +40 -95
- package/dist/v2/referentiel/useReferentielSearch.js.map +1 -1
- package/dist/v2/theme/_brand.js +12 -26
- package/dist/v2/theme/_brand.js.map +1 -1
- package/dist/v2/theme/_brandSecondary.js +12 -26
- package/dist/v2/theme/_brandSecondary.js.map +1 -1
- package/dist/v2/theme/createPortnetTheme.js +41 -49
- package/dist/v2/theme/createPortnetTheme.js.map +1 -1
- package/dist/v2/theme/cssVariables.d.ts +3 -3
- package/dist/v2/theme/cssVariables.d.ts.map +1 -1
- package/dist/v2/theme/cssVariables.js +65 -70
- package/dist/v2/theme/cssVariables.js.map +1 -1
- package/dist/v2/theme/index.js +10 -10
- package/dist/v2/theme/index.js.map +1 -1
- package/dist/v2/tokens/breakpoints.js +16 -16
- package/dist/v2/tokens/breakpoints.js.map +1 -1
- package/dist/v2/tokens/chart.d.ts +103 -0
- package/dist/v2/tokens/chart.d.ts.map +1 -0
- package/dist/v2/tokens/chart.js +270 -0
- package/dist/v2/tokens/chart.js.map +1 -0
- package/dist/v2/tokens/colors.js +24 -24
- package/dist/v2/tokens/colors.js.map +1 -1
- package/dist/v2/tokens/density.d.ts +104 -0
- package/dist/v2/tokens/density.d.ts.map +1 -1
- package/dist/v2/tokens/density.js +67 -12
- package/dist/v2/tokens/density.js.map +1 -1
- package/dist/v2/tokens/index.d.ts +50 -1
- package/dist/v2/tokens/index.d.ts.map +1 -1
- package/dist/v2/tokens/index.js +116 -68
- package/dist/v2/tokens/index.js.map +1 -1
- package/dist/v2/tokens/motion.js +16 -22
- package/dist/v2/tokens/motion.js.map +1 -1
- package/dist/v2/tokens/radius.js +3 -3
- package/dist/v2/tokens/radius.js.map +1 -1
- package/dist/v2/tokens/shadows.js +8 -8
- package/dist/v2/tokens/shadows.js.map +1 -1
- package/dist/v2/tokens/spacing.js +4 -4
- package/dist/v2/tokens/spacing.js.map +1 -1
- package/dist/v2/tokens/state.js +3 -3
- package/dist/v2/tokens/state.js.map +1 -1
- package/dist/v2/tokens/statusPalette.js +21 -23
- package/dist/v2/tokens/statusPalette.js.map +1 -1
- package/dist/v2/tokens/tokens.json +6 -1
- package/dist/v2/tokens/typography.js +15 -15
- package/dist/v2/tokens/typography.js.map +1 -1
- package/dist/v2/tokens/zIndex.js +3 -3
- package/dist/v2/tokens/zIndex.js.map +1 -1
- package/dist/v2/types/datagrid.d.ts +9 -1
- package/dist/v2/types/datagrid.d.ts.map +1 -1
- package/dist/v2/types/datagrid.js.map +1 -1
- package/dist/v2/types/index.js +2 -2
- package/dist/v2/types/index.js.map +1 -1
- package/dist/v2/utils/apiError.js +16 -37
- package/dist/v2/utils/apiError.js.map +1 -1
- package/dist/v2/utils/contrast.js +31 -32
- package/dist/v2/utils/contrast.js.map +1 -1
- package/dist/v2/utils/cx.js +7 -27
- package/dist/v2/utils/cx.js.map +1 -1
- package/dist/v2/utils/fileDownload.js +25 -28
- package/dist/v2/utils/fileDownload.js.map +1 -1
- package/dist/v2/utils/fileValidation.d.ts +116 -0
- package/dist/v2/utils/fileValidation.d.ts.map +1 -0
- package/dist/v2/utils/fileValidation.js +220 -0
- package/dist/v2/utils/fileValidation.js.map +1 -0
- package/dist/v2/utils/fmtDate.d.ts +103 -0
- package/dist/v2/utils/fmtDate.d.ts.map +1 -0
- package/dist/v2/utils/fmtDate.js +119 -0
- package/dist/v2/utils/fmtDate.js.map +1 -0
- package/dist/v2/utils/fmtMoney.d.ts +3 -3
- package/dist/v2/utils/fmtMoney.d.ts.map +1 -1
- package/dist/v2/utils/fmtMoney.js +9 -11
- package/dist/v2/utils/fmtMoney.js.map +1 -1
- package/dist/v2/utils/formikErrors.d.ts +67 -0
- package/dist/v2/utils/formikErrors.d.ts.map +1 -0
- package/dist/v2/utils/formikErrors.js +85 -0
- package/dist/v2/utils/formikErrors.js.map +1 -0
- package/dist/v2/utils/index.d.ts +5 -0
- package/dist/v2/utils/index.d.ts.map +1 -1
- package/dist/v2/utils/index.js +67 -18
- package/dist/v2/utils/index.js.map +1 -1
- package/dist/v2/utils/mergeLabels.js +9 -14
- package/dist/v2/utils/mergeLabels.js.map +1 -1
- package/dist/v2/utils/networkStatus.js +14 -14
- package/dist/v2/utils/networkStatus.js.map +1 -1
- package/package.json +26 -9
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChartFigure.js","names":["React","SectionErrorBoundary","SectionHeader","Surface","jsx","_jsx","jsxs","_jsxs","ChartFigure","title","caption","children","level","minHeight","hideCanvasFromScreenReaders","className","component","padding","elevation","sx","margin","display","flexDirection","gap","undefined","style","fontSize","lineHeight","color"],"sources":["../../../../src/lib/v2/patterns/ChartFigure.tsx"],"sourcesContent":["import * as React from \"react\";\r\n\r\nimport SectionErrorBoundary from \"../components/SectionErrorBoundary\";\r\nimport SectionHeader from \"../components/SectionHeader\";\r\nimport Surface from \"../components/Surface\";\r\nimport type { SectionHeaderLevel } from \"../components/SectionHeader\";\r\n\r\n/**\r\n * ChartFigure — a chart, its title, and its TEXT EQUIVALENT (pattern)\r\n *\r\n * Usage:\r\n *\r\n * <ChartFigure\r\n * title=\"Dossiers par type de demande\"\r\n * caption=\"Admission : 128 dossiers (64 %). Renouvellement : 72 (36 %).\"\r\n * >\r\n * <HighchartsReact highcharts={Highcharts} options={options} />\r\n * </ChartFigure>\r\n *\r\n * ─────────────────────────────────────────────────────────────────────────────\r\n * WHY THIS BELONGS IN THE LIBRARY (capability gap G-55)\r\n *\r\n * `tokens/chart` states the obligation and provides nothing to meet it, in its\r\n * own words: \"COLOUR IS NEVER THE ONLY CHANNEL (WCAG 1.4.1). This palette makes\r\n * slices distinguishable; it does not make a chart accessible. Every consumer\r\n * still owes a legend with text labels, and a text equivalent of the data —\r\n * 1.1.1 for the chart as a whole.\"\r\n *\r\n * A rule stated without a component to carry it gets met by whoever remembers\r\n * it. So the same three-part assembly was written per screen — a `Surface`, a\r\n * `SectionHeader`, and a paragraph of numbers under the canvas — and it is the\r\n * third part that goes missing first, because it is the only one nobody SEES\r\n * missing. A chart with no text equivalent looks finished.\r\n *\r\n * `caption` is therefore REQUIRED, not optional. That is the whole design\r\n * decision of this component: a chart rendered through here cannot ship without\r\n * its numbers in text. Making it optional would reproduce, one layer up, the\r\n * situation this closes.\r\n *\r\n * Observed in `autorisation-admis-pour-conforme-fe` (Area 5): three bilan\r\n * screens repeating Surface + SectionHeader + an `aria-hidden` canvas + a\r\n * caption paragraph, with the caption's own styling (`--text-xs`,\r\n * `--fg-subtle`) copied along with it.\r\n *\r\n * `Surface`'s docblock already points here: \"Surface deliberately has NO title,\r\n * NO actions and NO header. A titled section is FormSection; a metric tile is\r\n * KPICard […]. Those compose this.\"\r\n * ─────────────────────────────────────────────────────────────────────────────\r\n *\r\n * WHY THE CANVAS IS `aria-hidden`. A chart renderer emits dozens of SVG text\r\n * nodes — axis ticks, slice percentages, tooltips — which a screen reader walks\r\n * one by one, in visual order, with no structure. That is noise, not\r\n * information, and it is WORSE than silence because it takes minutes to get\r\n * through. The canvas is hidden and the `figcaption` speaks for it.\r\n *\r\n * COROLLARY, and it is a hard constraint: do NOT put interactive controls\r\n * inside. `aria-hidden` on a focusable ancestor produces an element that can be\r\n * tabbed to and cannot be announced, which fails WCAG 4.1.2 more plainly than\r\n * the noise it was meant to avoid. A period selector or an export button goes\r\n * OUTSIDE this component. (A renderer's own accessibility module, which builds\r\n * a proper keyboard-navigable data table, is a different story — a consumer\r\n * enabling one should pass `hideCanvasFromScreenReaders={false}` and own the\r\n * result.)\r\n *\r\n * The caption is VISIBLE, deliberately, and not a visually-hidden string: the\r\n * numbers under a chart help the reader who can see it too — that is the whole\r\n * point of a `figcaption` — and a caption nobody can see is a caption nobody\r\n * notices has gone stale.\r\n *\r\n * ── THE CANVAS IS FAULT-ISOLATED (ISO/IEC 25010 § Reliability) ────\r\n *\r\n * The chart slot is wrapped in `SectionErrorBoundary`. Hosting a THIRD-PARTY\r\n * renderer is what this component is for, and that renderer is fed aggregates\r\n * from a back-end whose wire models declare every field optional — the exact\r\n * situation `SectionErrorBoundary`'s own header describes: \"an `articles` field\r\n * arriving as an object where `.map` is called\". React's default behaviour on a\r\n * render exception is to unmount the WHOLE tree, so one malformed series took\r\n * down the entire page, KPI strip and data table included — the table that\r\n * carries the same numbers the chart was drawing.\r\n *\r\n * With the boundary, a failing chart shows a banner INSIDE its own card, and\r\n * everything around it keeps working. The `figcaption` survives too, which\r\n * matters more here than anywhere else: the caption holds the figures in text,\r\n * so the reader still gets the DATA when the drawing is gone.\r\n *\r\n * The boundary sits ABOVE the `aria-hidden` canvas wrapper, not inside it —\r\n * placed inside, its error banner would inherit that `aria-hidden` and no\r\n * screen reader would announce the failure. A sighted user would see the\r\n * breakage; a blind user would get silence.\r\n *\r\n * Not opt-out. A host rendering a hand-written inline SVG gains nothing from\r\n * the boundary but loses nothing either — an unconditional guarantee is worth\r\n * more than a prop nobody remembers to pass.\r\n */\r\n\r\nexport interface ChartFigureProps {\r\n /**\r\n * Visible heading of the figure. Keep the chart renderer's own `title` option\r\n * EMPTY and use this: real HTML text is selectable, translatable, sized by\r\n * the token scale, and reachable by a screen reader — an SVG title is none of\r\n * those. Two titles is the failure this prop exists to prevent.\r\n */\r\n title: React.ReactNode;\r\n /**\r\n * The text equivalent of the data (WCAG 1.1.1). REQUIRED — see the header.\r\n * Give the figures, not a description of the chart: \"Approuvés : 128 (64 %)\"\r\n * tells a reader what the slices say; \"répartition des statuts\" does not.\r\n */\r\n caption: React.ReactNode;\r\n /** The chart itself. */\r\n children?: React.ReactNode | undefined;\r\n /** Heading level. Default `\"h3\"` — one below the page's `ActionBar` h1. */\r\n level?: SectionHeaderLevel | undefined;\r\n /**\r\n * Height reserved for the canvas before the chart paints (R-R.4, anti-CLS).\r\n * Pass it when the renderer sizes itself from its container, otherwise the\r\n * caption jumps down the page on first render.\r\n */\r\n minHeight?: number | string | undefined;\r\n /**\r\n * Escape hatch for a renderer that exposes its own accessible data table.\r\n * Defaults to `true`; setting it to `false` un-hides the canvas and hands the\r\n * screen-reader experience to that renderer. The caption stays required.\r\n */\r\n hideCanvasFromScreenReaders?: boolean | undefined;\r\n className?: string | undefined;\r\n}\r\n\r\nfunction ChartFigure({\r\n title,\r\n caption,\r\n children,\r\n level = \"h3\",\r\n minHeight,\r\n hideCanvasFromScreenReaders = true,\r\n className,\r\n}: ChartFigureProps) {\r\n return (\r\n /* `figure` + `figcaption` is the native pairing for \"content plus its\r\n description\", so the association needs no ARIA. Rendered THROUGH\r\n `Surface` via its `component` prop rather than nested inside it — one\r\n element instead of two, and the card padding lands on the figure itself.\r\n `margin: 0` because the UA stylesheet gives a figure large margins. */\r\n <Surface\r\n component=\"figure\"\r\n padding=\"default\"\r\n elevation=\"xs\"\r\n sx={{\r\n margin: 0,\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n gap: \"var(--s-3)\",\r\n }}\r\n {...(className !== undefined ? { className } : {})}\r\n >\r\n <SectionHeader level={level} title={title} />\r\n\r\n {/* La frontière enveloppe le canevas AU-DESSUS du `div` `aria-hidden`, et\r\n l'ordre n'est pas indifférent : placée à l'intérieur, sa bannière\r\n d'erreur hériterait de l'`aria-hidden` du canevas et aucun lecteur\r\n d'écran ne l'annoncerait — un voyant verrait la panne, un non-voyant\r\n n'entendrait rien. Ici, le canevas reste masqué aux technologies\r\n d'assistance ET l'erreur leur parvient.\r\n\r\n `title` n'est transmis que s'il est une chaîne : `SectionErrorBoundary`\r\n nomme la panne dans sa bannière et dans le journal, et un nœud JSX n'y\r\n a pas sa place. */}\r\n <SectionErrorBoundary {...(typeof title === \"string\" ? { title } : {})}>\r\n <div\r\n {...(hideCanvasFromScreenReaders ? { \"aria-hidden\": true } : {})}\r\n style={minHeight !== undefined ? { minHeight } : {}}\r\n >\r\n {children}\r\n </div>\r\n </SectionErrorBoundary>\r\n\r\n <figcaption\r\n style={{\r\n fontSize: \"var(--text-xs)\",\r\n lineHeight: \"var(--lh-normal)\",\r\n color: \"var(--fg-subtle)\",\r\n }}\r\n >\r\n {caption}\r\n </figcaption>\r\n </Surface>\r\n );\r\n}\r\n\r\nexport default ChartFigure;\r\n"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,OAAOC,oBAAoB,MAAM,oCAAoC;AACrE,OAAOC,aAAa,MAAM,6BAA6B;AACvD,OAAOC,OAAO,MAAM,uBAAuB;;AAG3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAtFA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAyHA,SAASC,WAAWA,CAAC;EACnBC,KAAK;EACLC,OAAO;EACPC,QAAQ;EACRC,KAAK,GAAG,IAAI;EACZC,SAAS;EACTC,2BAA2B,GAAG,IAAI;EAClCC;AACgB,CAAC,EAAE;EACnB;IAAA;IACE;AACJ;AACA;AACA;AACA;IACIR,KAAA,CAACJ,OAAO;MACNa,SAAS,EAAC,QAAQ;MAClBC,OAAO,EAAC,SAAS;MACjBC,SAAS,EAAC,IAAI;MACdC,EAAE,EAAE;QACFC,MAAM,EAAE,CAAC;QACTC,OAAO,EAAE,MAAM;QACfC,aAAa,EAAE,QAAQ;QACvBC,GAAG,EAAE;MACP,CAAE;MAAA,IACGR,SAAS,KAAKS,SAAS,GAAG;QAAET;MAAU,CAAC,GAAG,CAAC,CAAC;MAAAJ,QAAA,gBAEjDN,IAAA,CAACH,aAAa;QAACU,KAAK,EAAEA,KAAM;QAACH,KAAK,EAAEA;MAAM,CAAE,CAAC,eAY7CJ,IAAA,CAACJ,oBAAoB;QAAA,IAAM,OAAOQ,KAAK,KAAK,QAAQ,GAAG;UAAEA;QAAM,CAAC,GAAG,CAAC,CAAC;QAAAE,QAAA,eACnEN,IAAA;UAAA,IACOS,2BAA2B,GAAG;YAAE,aAAa,EAAE;UAAK,CAAC,GAAG,CAAC,CAAC;UAC/DW,KAAK,EAAEZ,SAAS,KAAKW,SAAS,GAAG;YAAEX;UAAU,CAAC,GAAG,CAAC,CAAE;UAAAF,QAAA,EAEnDA;QAAQ,CACN;MAAC,CACc,CAAC,eAEvBN,IAAA;QACEoB,KAAK,EAAE;UACLC,QAAQ,EAAE,gBAAgB;UAC1BC,UAAU,EAAE,kBAAkB;UAC9BC,KAAK,EAAE;QACT,CAAE;QAAAjB,QAAA,EAEDD;MAAO,CACE,CAAC;IAAA,CACN;EAAC;AAEd;AAEA,eAAeF,WAAW","ignoreList":[]}
|
|
@@ -1,15 +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 _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
3
|
-
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."); }
|
|
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 _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; }
|
|
6
|
-
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; } }
|
|
7
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
8
|
-
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; }
|
|
9
|
-
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; }
|
|
10
|
-
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; }
|
|
11
|
-
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
12
|
-
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); }
|
|
13
1
|
import * as React from "react";
|
|
14
2
|
import Box from "@mui/material/Box";
|
|
15
3
|
import Table from "@mui/material/Table";
|
|
@@ -57,7 +45,7 @@ import { mergeLabels, TABLE_BY_DENSITY, CONTAINER_SX, DEFAULT_MAX_BODY_HEIGHT, R
|
|
|
57
45
|
|
|
58
46
|
/** DataGrid labels + the expansion-specific names. */
|
|
59
47
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
60
|
-
|
|
48
|
+
const EMPTY = "—";
|
|
61
49
|
|
|
62
50
|
/* Default value accessor for an unconstrained row type — typed against
|
|
63
51
|
* `unknown` so the single assertion is legal (mirrors DataGrid). */
|
|
@@ -67,101 +55,78 @@ function readCellValue(row, key) {
|
|
|
67
55
|
|
|
68
56
|
/* Default getRowId (`(r) => r.id`); `(unknown) => RowId` is assignable to
|
|
69
57
|
* the declared `(row: T) => RowId` by parameter contravariance. */
|
|
70
|
-
|
|
71
|
-
return row.id;
|
|
72
|
-
};
|
|
58
|
+
const defaultGetRowId = row => row.id;
|
|
73
59
|
function resolveCell(col, row) {
|
|
74
60
|
if (col.render) return col.render(row);
|
|
75
|
-
|
|
61
|
+
const value = col.getValue ? col.getValue(row) : readCellValue(row, col.key);
|
|
76
62
|
return value == null || value === "" ? EMPTY : value;
|
|
77
63
|
}
|
|
78
64
|
function alignOf(col) {
|
|
79
65
|
return col.align || (col.numeric ? "right" : "left");
|
|
80
66
|
}
|
|
81
67
|
function numericSx(col) {
|
|
82
|
-
return
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
68
|
+
return {
|
|
69
|
+
...(col.mono ? {
|
|
70
|
+
fontFamily: "var(--font-mono)"
|
|
71
|
+
} : {}),
|
|
72
|
+
...(col.numeric || col.mono ? {
|
|
73
|
+
fontVariantNumeric: "tabular-nums"
|
|
74
|
+
} : {})
|
|
75
|
+
};
|
|
87
76
|
}
|
|
88
|
-
function CollapsibleDataGrid(
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
_ref$pageSizes = _ref.pageSizes,
|
|
110
|
-
pageSizes = _ref$pageSizes === void 0 ? [10, 25, 100] : _ref$pageSizes,
|
|
111
|
-
_ref$maxBodyHeight = _ref.maxBodyHeight,
|
|
112
|
-
maxBodyHeight = _ref$maxBodyHeight === void 0 ? DEFAULT_MAX_BODY_HEIGHT : _ref$maxBodyHeight;
|
|
113
|
-
var L = React.useMemo(function () {
|
|
114
|
-
return mergeLabels(labels);
|
|
115
|
-
}, [labels]);
|
|
116
|
-
var tableAria = ariaLabel != null ? ariaLabel : L.tableAria;
|
|
117
|
-
var expandLabel = (_labels$expandRow = labels === null || labels === void 0 ? void 0 : labels.expandRow) !== null && _labels$expandRow !== void 0 ? _labels$expandRow : "Afficher le détail";
|
|
118
|
-
var collapseLabel = (_labels$collapseRow = labels === null || labels === void 0 ? void 0 : labels.collapseRow) !== null && _labels$collapseRow !== void 0 ? _labels$collapseRow : "Réduire le détail";
|
|
119
|
-
var detailAria = (_labels$detailAria = labels === null || labels === void 0 ? void 0 : labels.detailAria) !== null && _labels$detailAria !== void 0 ? _labels$detailAria : "Détail de la ligne";
|
|
120
|
-
var rowHasDetail = React.useCallback(function (row) {
|
|
77
|
+
function CollapsibleDataGrid({
|
|
78
|
+
rows = [],
|
|
79
|
+
columns = [],
|
|
80
|
+
detailColumns = [],
|
|
81
|
+
getRowId = defaultGetRowId,
|
|
82
|
+
hasDetail,
|
|
83
|
+
density = "comfortable",
|
|
84
|
+
ariaLabel,
|
|
85
|
+
locale = "fr-FR",
|
|
86
|
+
labels,
|
|
87
|
+
loading = false,
|
|
88
|
+
pageSize: pageSizeProp = 10,
|
|
89
|
+
pageSizes = [10, 25, 100],
|
|
90
|
+
maxBodyHeight = DEFAULT_MAX_BODY_HEIGHT
|
|
91
|
+
}) {
|
|
92
|
+
const L = React.useMemo(() => mergeLabels(labels), [labels]);
|
|
93
|
+
const tableAria = ariaLabel != null ? ariaLabel : L.tableAria;
|
|
94
|
+
const expandLabel = labels?.expandRow ?? "Afficher le détail";
|
|
95
|
+
const collapseLabel = labels?.collapseRow ?? "Réduire le détail";
|
|
96
|
+
const detailAria = labels?.detailAria ?? "Détail de la ligne";
|
|
97
|
+
const rowHasDetail = React.useCallback(row => {
|
|
121
98
|
if (typeof hasDetail === "function") return hasDetail(row);
|
|
122
99
|
if (!detailColumns.length) return false;
|
|
123
|
-
|
|
100
|
+
const first = detailColumns[0];
|
|
124
101
|
if (!first) return false;
|
|
125
|
-
|
|
102
|
+
const v = first.getValue ? first.getValue(row) : readCellValue(row, first.key);
|
|
126
103
|
return v != null && v !== "";
|
|
127
104
|
}, [hasDetail, detailColumns]);
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
setPage = _React$useState2[1];
|
|
132
|
-
var _React$useState3 = React.useState(pageSizeProp),
|
|
133
|
-
_React$useState4 = _slicedToArray(_React$useState3, 2),
|
|
134
|
-
pageSize = _React$useState4[0],
|
|
135
|
-
setPageSize = _React$useState4[1];
|
|
136
|
-
var _React$useState5 = React.useState({}),
|
|
137
|
-
_React$useState6 = _slicedToArray(_React$useState5, 2),
|
|
138
|
-
open = _React$useState6[0],
|
|
139
|
-
setOpen = _React$useState6[1];
|
|
105
|
+
const [page, setPage] = React.useState(1);
|
|
106
|
+
const [pageSize, setPageSize] = React.useState(pageSizeProp);
|
|
107
|
+
const [open, setOpen] = React.useState({});
|
|
140
108
|
|
|
141
109
|
// Reset to the first page when the data set size changes so the slice
|
|
142
110
|
// never lands past the end of a shrunken list.
|
|
143
|
-
|
|
144
|
-
React.useEffect(
|
|
111
|
+
const total = rows.length;
|
|
112
|
+
React.useEffect(() => {
|
|
145
113
|
setPage(1);
|
|
146
114
|
}, [total]);
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, id, !prev[id]));
|
|
163
|
-
});
|
|
164
|
-
};
|
|
115
|
+
const tableSx = React.useMemo(() => ({
|
|
116
|
+
...(TABLE_BY_DENSITY[density] || TABLE_BY_DENSITY.comfortable),
|
|
117
|
+
width: "100%"
|
|
118
|
+
}), [density]);
|
|
119
|
+
const detailTableSx = React.useMemo(() => ({
|
|
120
|
+
...TABLE_BY_DENSITY.compact,
|
|
121
|
+
width: "100%"
|
|
122
|
+
}), []);
|
|
123
|
+
const start = (page - 1) * pageSize;
|
|
124
|
+
const paged = rows.slice(start, start + pageSize);
|
|
125
|
+
const masterColCount = columns.length;
|
|
126
|
+
const toggle = id => setOpen(prev => ({
|
|
127
|
+
...prev,
|
|
128
|
+
[id]: !prev[id]
|
|
129
|
+
}));
|
|
165
130
|
return /*#__PURE__*/_jsxs(Box, {
|
|
166
131
|
sx: CONTAINER_SX,
|
|
167
132
|
children: [/*#__PURE__*/_jsx(Box, {
|
|
@@ -176,59 +141,57 @@ function CollapsibleDataGrid(_ref) {
|
|
|
176
141
|
sx: tableSx,
|
|
177
142
|
children: [/*#__PURE__*/_jsx(TableHead, {
|
|
178
143
|
children: /*#__PURE__*/_jsx(TableRow, {
|
|
179
|
-
children: columns.map(
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
}, col.width != null ? {
|
|
144
|
+
children: columns.map(col => /*#__PURE__*/_jsx(TableCell, {
|
|
145
|
+
align: alignOf(col),
|
|
146
|
+
sx: {
|
|
147
|
+
position: "sticky",
|
|
148
|
+
top: 0,
|
|
149
|
+
zIndex: 1,
|
|
150
|
+
...(col.width != null ? {
|
|
187
151
|
width: col.width
|
|
188
|
-
} : {})
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
})
|
|
152
|
+
} : {})
|
|
153
|
+
},
|
|
154
|
+
children: col.header
|
|
155
|
+
}, col.key))
|
|
192
156
|
})
|
|
193
157
|
}), /*#__PURE__*/_jsx(TableBody, {
|
|
194
|
-
children: paged.map(
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
158
|
+
children: paged.map(row => {
|
|
159
|
+
const id = getRowId(row);
|
|
160
|
+
const expandable = rowHasDetail(row);
|
|
161
|
+
const isOpen = Boolean(open[id]);
|
|
162
|
+
const detailId = `pui-cdg-detail-${id}`;
|
|
199
163
|
return /*#__PURE__*/_jsxs(React.Fragment, {
|
|
200
164
|
children: [/*#__PURE__*/_jsx(TableRow, {
|
|
201
165
|
hover: true,
|
|
202
166
|
sx: ROW_STATIC_SX,
|
|
203
|
-
children: columns.map(
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
167
|
+
children: columns.map((col, index) => /*#__PURE__*/_jsx(TableCell, {
|
|
168
|
+
align: alignOf(col),
|
|
169
|
+
sx: {
|
|
170
|
+
...numericSx(col),
|
|
171
|
+
...(col.width != null ? {
|
|
207
172
|
width: col.width
|
|
208
|
-
} : {})
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
}, col.key);
|
|
231
|
-
})
|
|
173
|
+
} : {})
|
|
174
|
+
},
|
|
175
|
+
children: /*#__PURE__*/_jsxs(Box, {
|
|
176
|
+
sx: {
|
|
177
|
+
display: "flex",
|
|
178
|
+
alignItems: "center",
|
|
179
|
+
gap: "var(--s-1)"
|
|
180
|
+
},
|
|
181
|
+
children: [index === 0 && expandable && /*#__PURE__*/_jsx(IconButton, {
|
|
182
|
+
size: "small",
|
|
183
|
+
"aria-label": isOpen ? collapseLabel : expandLabel,
|
|
184
|
+
"aria-expanded": isOpen,
|
|
185
|
+
"aria-controls": detailId,
|
|
186
|
+
onClick: () => toggle(id),
|
|
187
|
+
children: isOpen ? /*#__PURE__*/_jsx(KeyboardArrowUpIcon, {
|
|
188
|
+
fontSize: "small"
|
|
189
|
+
}) : /*#__PURE__*/_jsx(KeyboardArrowDownIcon, {
|
|
190
|
+
fontSize: "small"
|
|
191
|
+
})
|
|
192
|
+
}), resolveCell(col, row)]
|
|
193
|
+
})
|
|
194
|
+
}, col.key))
|
|
232
195
|
}), expandable && /*#__PURE__*/_jsx(TableRow, {
|
|
233
196
|
children: /*#__PURE__*/_jsx(TableCell, {
|
|
234
197
|
colSpan: masterColCount,
|
|
@@ -238,7 +201,7 @@ function CollapsibleDataGrid(_ref) {
|
|
|
238
201
|
},
|
|
239
202
|
children: /*#__PURE__*/_jsx(Collapse, {
|
|
240
203
|
id: detailId,
|
|
241
|
-
|
|
204
|
+
in: isOpen,
|
|
242
205
|
timeout: "auto",
|
|
243
206
|
unmountOnExit: true,
|
|
244
207
|
children: /*#__PURE__*/_jsx(Box, {
|
|
@@ -252,26 +215,22 @@ function CollapsibleDataGrid(_ref) {
|
|
|
252
215
|
sx: detailTableSx,
|
|
253
216
|
children: [/*#__PURE__*/_jsx(TableHead, {
|
|
254
217
|
children: /*#__PURE__*/_jsx(TableRow, {
|
|
255
|
-
children: detailColumns.map(
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
}, col.key);
|
|
263
|
-
})
|
|
218
|
+
children: detailColumns.map(col => /*#__PURE__*/_jsx(TableCell, {
|
|
219
|
+
align: alignOf(col),
|
|
220
|
+
sx: col.width != null ? {
|
|
221
|
+
width: col.width
|
|
222
|
+
} : {},
|
|
223
|
+
children: col.header
|
|
224
|
+
}, col.key))
|
|
264
225
|
})
|
|
265
226
|
}), /*#__PURE__*/_jsx(TableBody, {
|
|
266
227
|
children: /*#__PURE__*/_jsx(TableRow, {
|
|
267
228
|
sx: ROW_STATIC_SX,
|
|
268
|
-
children: detailColumns.map(
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
}, col.key);
|
|
274
|
-
})
|
|
229
|
+
children: detailColumns.map(col => /*#__PURE__*/_jsx(TableCell, {
|
|
230
|
+
align: alignOf(col),
|
|
231
|
+
sx: numericSx(col),
|
|
232
|
+
children: resolveCell(col, row)
|
|
233
|
+
}, col.key))
|
|
275
234
|
})
|
|
276
235
|
})]
|
|
277
236
|
})
|
|
@@ -288,7 +247,7 @@ function CollapsibleDataGrid(_ref) {
|
|
|
288
247
|
pageSize: pageSize,
|
|
289
248
|
total: total,
|
|
290
249
|
onPageChange: setPage,
|
|
291
|
-
onPageSizeChange:
|
|
250
|
+
onPageSizeChange: s => {
|
|
292
251
|
setPageSize(s);
|
|
293
252
|
setPage(1);
|
|
294
253
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CollapsibleDataGrid.js","names":["React","Box","Table","TableHead","TableBody","TableRow","TableCell","IconButton","Collapse","KeyboardArrowDownIcon","KeyboardArrowUpIcon","mergeLabels","TABLE_BY_DENSITY","CONTAINER_SX","DEFAULT_MAX_BODY_HEIGHT","ROW_STATIC_SX","Pagination","jsx","_jsx","jsxs","_jsxs","EMPTY","readCellValue","row","key","defaultGetRowId","id","resolveCell","col","render","value","getValue","alignOf","align","numeric","numericSx","_objectSpread","mono","fontFamily","fontVariantNumeric","CollapsibleDataGrid","_ref","_labels$expandRow","_labels$collapseRow","_labels$detailAria","_ref$rows","rows","_ref$columns","columns","_ref$detailColumns","detailColumns","_ref$getRowId","getRowId","hasDetail","_ref$density","density","ariaLabel","_ref$locale","locale","labels","_ref$loading","loading","_ref$pageSize","pageSize","pageSizeProp","_ref$pageSizes","pageSizes","_ref$maxBodyHeight","maxBodyHeight","L","useMemo","tableAria","expandLabel","expandRow","collapseLabel","collapseRow","detailAria","rowHasDetail","useCallback","length","first","v","_React$useState","useState","_React$useState2","_slicedToArray","page","setPage","_React$useState3","_React$useState4","setPageSize","_React$useState5","_React$useState6","open","setOpen","total","useEffect","tableSx","comfortable","width","detailTableSx","compact","start","paged","slice","masterColCount","toggle","prev","_defineProperty","sx","children","overflow","maxHeight","stickyHeader","map","position","top","zIndex","header","expandable","isOpen","Boolean","detailId","concat","Fragment","hover","index","display","alignItems","gap","size","onClick","fontSize","colSpan","paddingTop","paddingBottom","timeout","unmountOnExit","onPageChange","onPageSizeChange","s","pagination"],"sources":["../../../../src/lib/v2/patterns/CollapsibleDataGrid.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport Table from \"@mui/material/Table\";\r\nimport TableHead from \"@mui/material/TableHead\";\r\nimport TableBody from \"@mui/material/TableBody\";\r\nimport TableRow from \"@mui/material/TableRow\";\r\nimport TableCell from \"@mui/material/TableCell\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport Collapse from \"@mui/material/Collapse\";\r\nimport KeyboardArrowDownIcon from \"@mui/icons-material/KeyboardArrowDown\";\r\nimport KeyboardArrowUpIcon from \"@mui/icons-material/KeyboardArrowUp\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\nimport type { SystemStyleObject } from \"@mui/system\";\r\n\r\nimport {\r\n mergeLabels,\r\n TABLE_BY_DENSITY,\r\n CONTAINER_SX,\r\n DEFAULT_MAX_BODY_HEIGHT,\r\n ROW_STATIC_SX,\r\n Pagination,\r\n} from \"./_dataGridShared\";\r\nimport type { DataGridColumn, DataGridLabels } from \"../types/datagrid\";\r\nimport type { Alignment, Density, RowId } from \"../types/common\";\r\n\r\n/**\r\n * CollapsibleDataGrid — Portnet UI v2 (pattern)\r\n *\r\n * Charter §03 · master/detail table with per-row expansion. Companion to\r\n * DataGrid for the case DataGrid intentionally does not cover: a row that\r\n * expands to reveal a secondary record (e.g. a decision and its visa\r\n * detail). Refactor of the legacy host-local CollapsibleTableClientSide\r\n * (ms-dfd-fe), lifted into the lib so modules consume it instead of\r\n * re-implementing an expandable MUI Table.\r\n *\r\n * Columns use the v2-native shape, identical to DataGrid:\r\n * { key, header, render(row), getValue(row), width, align, numeric, mono }\r\n *\r\n * `columns` master row cells (the first cell hosts the expand toggle).\r\n * `detailColumns` the expanded panel; values are read from the SAME row\r\n * object (a row carries both its master and detail fields).\r\n *\r\n * A row is expandable when `hasDetail(row)` is true. Default: the first\r\n * detail column resolves to a non-nullish value. Pass `hasDetail` to override.\r\n *\r\n * Pagination is client-side (the host passes the full row set) and uses the\r\n * shared v2 Pagination — 1-based, tabular range, optional page-size select.\r\n *\r\n * Accessibility (WCAG 2.2 AA · Charter R-DG):\r\n * - the expand control is a real <button> with aria-expanded +\r\n * aria-controls pointing at the detail region id;\r\n * - the detail region is labelled (labels.detailAria);\r\n * - the table carries a contextual name (ariaLabel | labels.tableAria).\r\n */\r\n\r\n/** The read subset of the DataGrid column contract that this pattern honours. */\r\nexport type CollapsibleColumn<T> = Pick<\r\n DataGridColumn<T>,\r\n \"key\" | \"header\" | \"align\" | \"numeric\" | \"mono\" | \"width\" | \"render\" | \"getValue\"\r\n>;\r\n\r\n/** DataGrid labels + the expansion-specific names. */\r\nexport interface CollapsibleDataGridLabels extends DataGridLabels {\r\n expandRow?: string | undefined;\r\n collapseRow?: string | undefined;\r\n detailAria?: string | undefined;\r\n}\r\n\r\nexport interface CollapsibleDataGridProps<T> {\r\n rows?: T[] | undefined;\r\n columns: CollapsibleColumn<T>[];\r\n detailColumns?: CollapsibleColumn<T>[] | undefined;\r\n /** Row identity (default `(row) => row.id`). */\r\n getRowId?: ((row: T) => RowId) | undefined;\r\n /** Override the \"row is expandable\" test (default: first detail value is non-nullish). */\r\n hasDetail?: ((row: T) => boolean) | undefined;\r\n density?: Density | undefined;\r\n /** Contextual accessible table name (WCAG 1.3.1 / Charter R-DG). */\r\n ariaLabel?: string | undefined;\r\n /** BCP-47 locale for pagination number formatting (default \"fr-FR\"). */\r\n locale?: string | undefined;\r\n labels?: CollapsibleDataGridLabels | undefined;\r\n loading?: boolean | undefined;\r\n pageSize?: number | undefined;\r\n pageSizes?: number[] | undefined;\r\n maxBodyHeight?: number | string | undefined;\r\n}\r\n\r\nconst EMPTY = \"—\";\r\n\r\n/* Default value accessor for an unconstrained row type — typed against\r\n * `unknown` so the single assertion is legal (mirrors DataGrid). */\r\nfunction readCellValue(row: unknown, key: string): unknown {\r\n return (row as Record<string, unknown>)[key];\r\n}\r\n\r\n/* Default getRowId (`(r) => r.id`); `(unknown) => RowId` is assignable to\r\n * the declared `(row: T) => RowId` by parameter contravariance. */\r\nconst defaultGetRowId = (row: unknown): RowId => (row as { id: RowId }).id;\r\n\r\nfunction resolveCell<T>(col: CollapsibleColumn<T>, row: T): React.ReactNode {\r\n if (col.render) return col.render(row);\r\n const value = col.getValue ? col.getValue(row) : readCellValue(row, col.key);\r\n return value == null || value === \"\" ? EMPTY : (value as React.ReactNode);\r\n}\r\n\r\nfunction alignOf(col: Pick<DataGridColumn<unknown>, \"align\" | \"numeric\">): Alignment {\r\n return col.align || (col.numeric ? \"right\" : \"left\");\r\n}\r\n\r\nfunction numericSx(\r\n col: Pick<DataGridColumn<unknown>, \"numeric\" | \"mono\">\r\n): SystemStyleObject<Theme> {\r\n return {\r\n ...(col.mono ? { fontFamily: \"var(--font-mono)\" } : {}),\r\n ...(col.numeric || col.mono ? { fontVariantNumeric: \"tabular-nums\" } : {}),\r\n };\r\n}\r\n\r\nfunction CollapsibleDataGrid<T>({\r\n rows = [],\r\n columns = [],\r\n detailColumns = [],\r\n getRowId = defaultGetRowId,\r\n hasDetail,\r\n density = \"comfortable\",\r\n ariaLabel,\r\n locale = \"fr-FR\",\r\n labels,\r\n loading = false,\r\n pageSize: pageSizeProp = 10,\r\n pageSizes = [10, 25, 100],\r\n maxBodyHeight = DEFAULT_MAX_BODY_HEIGHT,\r\n}: CollapsibleDataGridProps<T>) {\r\n const L = React.useMemo(() => mergeLabels(labels), [labels]);\r\n const tableAria = ariaLabel != null ? ariaLabel : L.tableAria;\r\n const expandLabel = labels?.expandRow ?? \"Afficher le détail\";\r\n const collapseLabel = labels?.collapseRow ?? \"Réduire le détail\";\r\n const detailAria = labels?.detailAria ?? \"Détail de la ligne\";\r\n\r\n const rowHasDetail = React.useCallback(\r\n (row: T): boolean => {\r\n if (typeof hasDetail === \"function\") return hasDetail(row);\r\n if (!detailColumns.length) return false;\r\n const first = detailColumns[0];\r\n if (!first) return false;\r\n const v = first.getValue ? first.getValue(row) : readCellValue(row, first.key);\r\n return v != null && v !== \"\";\r\n },\r\n [hasDetail, detailColumns]\r\n );\r\n\r\n const [page, setPage] = React.useState(1);\r\n const [pageSize, setPageSize] = React.useState(pageSizeProp);\r\n const [open, setOpen] = React.useState<Record<RowId, boolean>>({});\r\n\r\n // Reset to the first page when the data set size changes so the slice\r\n // never lands past the end of a shrunken list.\r\n const total = rows.length;\r\n React.useEffect(() => {\r\n setPage(1);\r\n }, [total]);\r\n\r\n const tableSx = React.useMemo<SxProps<Theme>>(\r\n () => ({\r\n ...((TABLE_BY_DENSITY[density] ||\r\n TABLE_BY_DENSITY.comfortable) as SystemStyleObject<Theme>),\r\n width: \"100%\",\r\n }),\r\n [density]\r\n );\r\n const detailTableSx = React.useMemo<SxProps<Theme>>(\r\n () => ({\r\n ...(TABLE_BY_DENSITY.compact as SystemStyleObject<Theme>),\r\n width: \"100%\",\r\n }),\r\n []\r\n );\r\n\r\n const start = (page - 1) * pageSize;\r\n const paged = rows.slice(start, start + pageSize);\r\n const masterColCount = columns.length;\r\n\r\n const toggle = (id: RowId) =>\r\n setOpen((prev) => ({ ...prev, [id]: !prev[id] }));\r\n\r\n return (\r\n <Box sx={CONTAINER_SX}>\r\n <Box sx={{ overflow: \"auto\", maxHeight: maxBodyHeight, width: \"100%\" }}>\r\n <Table aria-label={tableAria} stickyHeader sx={tableSx}>\r\n <TableHead>\r\n <TableRow>\r\n {columns.map((col) => (\r\n <TableCell\r\n key={col.key}\r\n align={alignOf(col)}\r\n sx={{\r\n position: \"sticky\",\r\n top: 0,\r\n zIndex: 1,\r\n ...(col.width != null ? { width: col.width } : {}),\r\n }}\r\n >\r\n {col.header}\r\n </TableCell>\r\n ))}\r\n </TableRow>\r\n </TableHead>\r\n <TableBody>\r\n {paged.map((row) => {\r\n const id = getRowId(row);\r\n const expandable = rowHasDetail(row);\r\n const isOpen = Boolean(open[id]);\r\n const detailId = `pui-cdg-detail-${id}`;\r\n return (\r\n <React.Fragment key={id}>\r\n <TableRow hover sx={ROW_STATIC_SX}>\r\n {columns.map((col, index) => (\r\n <TableCell\r\n key={col.key}\r\n align={alignOf(col)}\r\n sx={{\r\n ...numericSx(col),\r\n ...(col.width != null ? { width: col.width } : {}),\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"var(--s-1)\",\r\n }}\r\n >\r\n {index === 0 && expandable && (\r\n <IconButton\r\n size=\"small\"\r\n aria-label={isOpen ? collapseLabel : expandLabel}\r\n aria-expanded={isOpen}\r\n aria-controls={detailId}\r\n onClick={() => toggle(id)}\r\n >\r\n {isOpen ? (\r\n <KeyboardArrowUpIcon fontSize=\"small\" />\r\n ) : (\r\n <KeyboardArrowDownIcon fontSize=\"small\" />\r\n )}\r\n </IconButton>\r\n )}\r\n {resolveCell(col, row)}\r\n </Box>\r\n </TableCell>\r\n ))}\r\n </TableRow>\r\n\r\n {expandable && (\r\n <TableRow>\r\n <TableCell\r\n colSpan={masterColCount}\r\n sx={{ paddingTop: 0, paddingBottom: 0 }}\r\n >\r\n <Collapse\r\n id={detailId}\r\n in={isOpen}\r\n timeout=\"auto\"\r\n unmountOnExit\r\n >\r\n <Box\r\n sx={{\r\n paddingTop: \"var(--s-3)\",\r\n paddingBottom: \"var(--s-3)\",\r\n }}\r\n >\r\n <Table\r\n size=\"small\"\r\n aria-label={detailAria}\r\n sx={detailTableSx}\r\n >\r\n <TableHead>\r\n <TableRow>\r\n {detailColumns.map((col) => (\r\n <TableCell\r\n key={col.key}\r\n align={alignOf(col)}\r\n sx={\r\n col.width != null\r\n ? { width: col.width }\r\n : {}\r\n }\r\n >\r\n {col.header}\r\n </TableCell>\r\n ))}\r\n </TableRow>\r\n </TableHead>\r\n <TableBody>\r\n <TableRow sx={ROW_STATIC_SX}>\r\n {detailColumns.map((col) => (\r\n <TableCell\r\n key={col.key}\r\n align={alignOf(col)}\r\n sx={numericSx(col)}\r\n >\r\n {resolveCell(col, row)}\r\n </TableCell>\r\n ))}\r\n </TableRow>\r\n </TableBody>\r\n </Table>\r\n </Box>\r\n </Collapse>\r\n </TableCell>\r\n </TableRow>\r\n )}\r\n </React.Fragment>\r\n );\r\n })}\r\n </TableBody>\r\n </Table>\r\n </Box>\r\n <Pagination\r\n page={page}\r\n pageSize={pageSize}\r\n total={total}\r\n onPageChange={setPage}\r\n onPageSizeChange={(s) => {\r\n setPageSize(s);\r\n setPage(1);\r\n }}\r\n pageSizes={pageSizes}\r\n loading={loading}\r\n locale={locale}\r\n labels={L.pagination}\r\n />\r\n </Box>\r\n );\r\n}\r\n\r\nexport default CollapsibleDataGrid;\r\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"CollapsibleDataGrid.js","names":["React","Box","Table","TableHead","TableBody","TableRow","TableCell","IconButton","Collapse","KeyboardArrowDownIcon","KeyboardArrowUpIcon","mergeLabels","TABLE_BY_DENSITY","CONTAINER_SX","DEFAULT_MAX_BODY_HEIGHT","ROW_STATIC_SX","Pagination","jsx","_jsx","jsxs","_jsxs","EMPTY","readCellValue","row","key","defaultGetRowId","id","resolveCell","col","render","value","getValue","alignOf","align","numeric","numericSx","mono","fontFamily","fontVariantNumeric","CollapsibleDataGrid","rows","columns","detailColumns","getRowId","hasDetail","density","ariaLabel","locale","labels","loading","pageSize","pageSizeProp","pageSizes","maxBodyHeight","L","useMemo","tableAria","expandLabel","expandRow","collapseLabel","collapseRow","detailAria","rowHasDetail","useCallback","length","first","v","page","setPage","useState","setPageSize","open","setOpen","total","useEffect","tableSx","comfortable","width","detailTableSx","compact","start","paged","slice","masterColCount","toggle","prev","sx","children","overflow","maxHeight","stickyHeader","map","position","top","zIndex","header","expandable","isOpen","Boolean","detailId","Fragment","hover","index","display","alignItems","gap","size","onClick","fontSize","colSpan","paddingTop","paddingBottom","in","timeout","unmountOnExit","onPageChange","onPageSizeChange","s","pagination"],"sources":["../../../../src/lib/v2/patterns/CollapsibleDataGrid.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport Table from \"@mui/material/Table\";\r\nimport TableHead from \"@mui/material/TableHead\";\r\nimport TableBody from \"@mui/material/TableBody\";\r\nimport TableRow from \"@mui/material/TableRow\";\r\nimport TableCell from \"@mui/material/TableCell\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport Collapse from \"@mui/material/Collapse\";\r\nimport KeyboardArrowDownIcon from \"@mui/icons-material/KeyboardArrowDown\";\r\nimport KeyboardArrowUpIcon from \"@mui/icons-material/KeyboardArrowUp\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\nimport type { SystemStyleObject } from \"@mui/system\";\r\n\r\nimport {\r\n mergeLabels,\r\n TABLE_BY_DENSITY,\r\n CONTAINER_SX,\r\n DEFAULT_MAX_BODY_HEIGHT,\r\n ROW_STATIC_SX,\r\n Pagination,\r\n} from \"./_dataGridShared\";\r\nimport type { DataGridColumn, DataGridLabels } from \"../types/datagrid\";\r\nimport type { Alignment, Density, RowId } from \"../types/common\";\r\n\r\n/**\r\n * CollapsibleDataGrid — Portnet UI v2 (pattern)\r\n *\r\n * Charter §03 · master/detail table with per-row expansion. Companion to\r\n * DataGrid for the case DataGrid intentionally does not cover: a row that\r\n * expands to reveal a secondary record (e.g. a decision and its visa\r\n * detail). Refactor of the legacy host-local CollapsibleTableClientSide\r\n * (ms-dfd-fe), lifted into the lib so modules consume it instead of\r\n * re-implementing an expandable MUI Table.\r\n *\r\n * Columns use the v2-native shape, identical to DataGrid:\r\n * { key, header, render(row), getValue(row), width, align, numeric, mono }\r\n *\r\n * `columns` master row cells (the first cell hosts the expand toggle).\r\n * `detailColumns` the expanded panel; values are read from the SAME row\r\n * object (a row carries both its master and detail fields).\r\n *\r\n * A row is expandable when `hasDetail(row)` is true. Default: the first\r\n * detail column resolves to a non-nullish value. Pass `hasDetail` to override.\r\n *\r\n * Pagination is client-side (the host passes the full row set) and uses the\r\n * shared v2 Pagination — 1-based, tabular range, optional page-size select.\r\n *\r\n * Accessibility (WCAG 2.2 AA · Charter R-DG):\r\n * - the expand control is a real <button> with aria-expanded +\r\n * aria-controls pointing at the detail region id;\r\n * - the detail region is labelled (labels.detailAria);\r\n * - the table carries a contextual name (ariaLabel | labels.tableAria).\r\n */\r\n\r\n/** The read subset of the DataGrid column contract that this pattern honours. */\r\nexport type CollapsibleColumn<T> = Pick<\r\n DataGridColumn<T>,\r\n \"key\" | \"header\" | \"align\" | \"numeric\" | \"mono\" | \"width\" | \"render\" | \"getValue\"\r\n>;\r\n\r\n/** DataGrid labels + the expansion-specific names. */\r\nexport interface CollapsibleDataGridLabels extends DataGridLabels {\r\n expandRow?: string | undefined;\r\n collapseRow?: string | undefined;\r\n detailAria?: string | undefined;\r\n}\r\n\r\nexport interface CollapsibleDataGridProps<T> {\r\n rows?: T[] | undefined;\r\n columns: CollapsibleColumn<T>[];\r\n detailColumns?: CollapsibleColumn<T>[] | undefined;\r\n /** Row identity (default `(row) => row.id`). */\r\n getRowId?: ((row: T) => RowId) | undefined;\r\n /** Override the \"row is expandable\" test (default: first detail value is non-nullish). */\r\n hasDetail?: ((row: T) => boolean) | undefined;\r\n density?: Density | undefined;\r\n /** Contextual accessible table name (WCAG 1.3.1 / Charter R-DG). */\r\n ariaLabel?: string | undefined;\r\n /** BCP-47 locale for pagination number formatting (default \"fr-FR\"). */\r\n locale?: string | undefined;\r\n labels?: CollapsibleDataGridLabels | undefined;\r\n loading?: boolean | undefined;\r\n pageSize?: number | undefined;\r\n pageSizes?: number[] | undefined;\r\n maxBodyHeight?: number | string | undefined;\r\n}\r\n\r\nconst EMPTY = \"—\";\r\n\r\n/* Default value accessor for an unconstrained row type — typed against\r\n * `unknown` so the single assertion is legal (mirrors DataGrid). */\r\nfunction readCellValue(row: unknown, key: string): unknown {\r\n return (row as Record<string, unknown>)[key];\r\n}\r\n\r\n/* Default getRowId (`(r) => r.id`); `(unknown) => RowId` is assignable to\r\n * the declared `(row: T) => RowId` by parameter contravariance. */\r\nconst defaultGetRowId = (row: unknown): RowId => (row as { id: RowId }).id;\r\n\r\nfunction resolveCell<T>(col: CollapsibleColumn<T>, row: T): React.ReactNode {\r\n if (col.render) return col.render(row);\r\n const value = col.getValue ? col.getValue(row) : readCellValue(row, col.key);\r\n return value == null || value === \"\" ? EMPTY : (value as React.ReactNode);\r\n}\r\n\r\nfunction alignOf(col: Pick<DataGridColumn<unknown>, \"align\" | \"numeric\">): Alignment {\r\n return col.align || (col.numeric ? \"right\" : \"left\");\r\n}\r\n\r\nfunction numericSx(\r\n col: Pick<DataGridColumn<unknown>, \"numeric\" | \"mono\">\r\n): SystemStyleObject<Theme> {\r\n return {\r\n ...(col.mono ? { fontFamily: \"var(--font-mono)\" } : {}),\r\n ...(col.numeric || col.mono ? { fontVariantNumeric: \"tabular-nums\" } : {}),\r\n };\r\n}\r\n\r\nfunction CollapsibleDataGrid<T>({\r\n rows = [],\r\n columns = [],\r\n detailColumns = [],\r\n getRowId = defaultGetRowId,\r\n hasDetail,\r\n density = \"comfortable\",\r\n ariaLabel,\r\n locale = \"fr-FR\",\r\n labels,\r\n loading = false,\r\n pageSize: pageSizeProp = 10,\r\n pageSizes = [10, 25, 100],\r\n maxBodyHeight = DEFAULT_MAX_BODY_HEIGHT,\r\n}: CollapsibleDataGridProps<T>) {\r\n const L = React.useMemo(() => mergeLabels(labels), [labels]);\r\n const tableAria = ariaLabel != null ? ariaLabel : L.tableAria;\r\n const expandLabel = labels?.expandRow ?? \"Afficher le détail\";\r\n const collapseLabel = labels?.collapseRow ?? \"Réduire le détail\";\r\n const detailAria = labels?.detailAria ?? \"Détail de la ligne\";\r\n\r\n const rowHasDetail = React.useCallback(\r\n (row: T): boolean => {\r\n if (typeof hasDetail === \"function\") return hasDetail(row);\r\n if (!detailColumns.length) return false;\r\n const first = detailColumns[0];\r\n if (!first) return false;\r\n const v = first.getValue ? first.getValue(row) : readCellValue(row, first.key);\r\n return v != null && v !== \"\";\r\n },\r\n [hasDetail, detailColumns]\r\n );\r\n\r\n const [page, setPage] = React.useState(1);\r\n const [pageSize, setPageSize] = React.useState(pageSizeProp);\r\n const [open, setOpen] = React.useState<Record<RowId, boolean>>({});\r\n\r\n // Reset to the first page when the data set size changes so the slice\r\n // never lands past the end of a shrunken list.\r\n const total = rows.length;\r\n React.useEffect(() => {\r\n setPage(1);\r\n }, [total]);\r\n\r\n const tableSx = React.useMemo<SxProps<Theme>>(\r\n () => ({\r\n ...((TABLE_BY_DENSITY[density] ||\r\n TABLE_BY_DENSITY.comfortable) as SystemStyleObject<Theme>),\r\n width: \"100%\",\r\n }),\r\n [density]\r\n );\r\n const detailTableSx = React.useMemo<SxProps<Theme>>(\r\n () => ({\r\n ...(TABLE_BY_DENSITY.compact as SystemStyleObject<Theme>),\r\n width: \"100%\",\r\n }),\r\n []\r\n );\r\n\r\n const start = (page - 1) * pageSize;\r\n const paged = rows.slice(start, start + pageSize);\r\n const masterColCount = columns.length;\r\n\r\n const toggle = (id: RowId) =>\r\n setOpen((prev) => ({ ...prev, [id]: !prev[id] }));\r\n\r\n return (\r\n <Box sx={CONTAINER_SX}>\r\n <Box sx={{ overflow: \"auto\", maxHeight: maxBodyHeight, width: \"100%\" }}>\r\n <Table aria-label={tableAria} stickyHeader sx={tableSx}>\r\n <TableHead>\r\n <TableRow>\r\n {columns.map((col) => (\r\n <TableCell\r\n key={col.key}\r\n align={alignOf(col)}\r\n sx={{\r\n position: \"sticky\",\r\n top: 0,\r\n zIndex: 1,\r\n ...(col.width != null ? { width: col.width } : {}),\r\n }}\r\n >\r\n {col.header}\r\n </TableCell>\r\n ))}\r\n </TableRow>\r\n </TableHead>\r\n <TableBody>\r\n {paged.map((row) => {\r\n const id = getRowId(row);\r\n const expandable = rowHasDetail(row);\r\n const isOpen = Boolean(open[id]);\r\n const detailId = `pui-cdg-detail-${id}`;\r\n return (\r\n <React.Fragment key={id}>\r\n <TableRow hover sx={ROW_STATIC_SX}>\r\n {columns.map((col, index) => (\r\n <TableCell\r\n key={col.key}\r\n align={alignOf(col)}\r\n sx={{\r\n ...numericSx(col),\r\n ...(col.width != null ? { width: col.width } : {}),\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"var(--s-1)\",\r\n }}\r\n >\r\n {index === 0 && expandable && (\r\n <IconButton\r\n size=\"small\"\r\n aria-label={isOpen ? collapseLabel : expandLabel}\r\n aria-expanded={isOpen}\r\n aria-controls={detailId}\r\n onClick={() => toggle(id)}\r\n >\r\n {isOpen ? (\r\n <KeyboardArrowUpIcon fontSize=\"small\" />\r\n ) : (\r\n <KeyboardArrowDownIcon fontSize=\"small\" />\r\n )}\r\n </IconButton>\r\n )}\r\n {resolveCell(col, row)}\r\n </Box>\r\n </TableCell>\r\n ))}\r\n </TableRow>\r\n\r\n {expandable && (\r\n <TableRow>\r\n <TableCell\r\n colSpan={masterColCount}\r\n sx={{ paddingTop: 0, paddingBottom: 0 }}\r\n >\r\n <Collapse\r\n id={detailId}\r\n in={isOpen}\r\n timeout=\"auto\"\r\n unmountOnExit\r\n >\r\n <Box\r\n sx={{\r\n paddingTop: \"var(--s-3)\",\r\n paddingBottom: \"var(--s-3)\",\r\n }}\r\n >\r\n <Table\r\n size=\"small\"\r\n aria-label={detailAria}\r\n sx={detailTableSx}\r\n >\r\n <TableHead>\r\n <TableRow>\r\n {detailColumns.map((col) => (\r\n <TableCell\r\n key={col.key}\r\n align={alignOf(col)}\r\n sx={\r\n col.width != null\r\n ? { width: col.width }\r\n : {}\r\n }\r\n >\r\n {col.header}\r\n </TableCell>\r\n ))}\r\n </TableRow>\r\n </TableHead>\r\n <TableBody>\r\n <TableRow sx={ROW_STATIC_SX}>\r\n {detailColumns.map((col) => (\r\n <TableCell\r\n key={col.key}\r\n align={alignOf(col)}\r\n sx={numericSx(col)}\r\n >\r\n {resolveCell(col, row)}\r\n </TableCell>\r\n ))}\r\n </TableRow>\r\n </TableBody>\r\n </Table>\r\n </Box>\r\n </Collapse>\r\n </TableCell>\r\n </TableRow>\r\n )}\r\n </React.Fragment>\r\n );\r\n })}\r\n </TableBody>\r\n </Table>\r\n </Box>\r\n <Pagination\r\n page={page}\r\n pageSize={pageSize}\r\n total={total}\r\n onPageChange={setPage}\r\n onPageSizeChange={(s) => {\r\n setPageSize(s);\r\n setPage(1);\r\n }}\r\n pageSizes={pageSizes}\r\n loading={loading}\r\n locale={locale}\r\n labels={L.pagination}\r\n />\r\n </Box>\r\n );\r\n}\r\n\r\nexport default CollapsibleDataGrid;\r\n"],"mappings":"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","ignoreList":[]}
|