@portnet/ui 6.0.2 → 6.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +652 -0
- package/dist/esm/index.js +72 -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 -38
- 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 +11 -11
- package/dist/esm/v2/__tests__/FieldWidth.test.js.map +1 -1
- package/dist/esm/v2/__tests__/FileCard.test.js +18 -17
- package/dist/esm/v2/__tests__/FileCard.test.js.map +1 -1
- package/dist/esm/v2/__tests__/FormikCheckbox.test.js +87 -179
- package/dist/esm/v2/__tests__/FormikCheckbox.test.js.map +1 -1
- package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js +32 -44
- package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js.map +1 -1
- 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 +118 -199
- package/dist/esm/v2/__tests__/FormikRadioGroup.test.js.map +1 -1
- package/dist/esm/v2/__tests__/MobileRowCard.test.js +44 -42
- 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 -21
- 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 +81 -86
- 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 +155 -59
- 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 +37 -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 +2 -3
- 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 +15 -17
- 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 +29 -39
- package/dist/esm/v2/patterns/FormikCheckbox.js.map +1 -1
- 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 -69
- package/dist/esm/v2/patterns/FormikCombobox.js.map +1 -1
- package/dist/esm/v2/patterns/FormikDatePicker.js +44 -58
- package/dist/esm/v2/patterns/FormikDatePicker.js.map +1 -1
- package/dist/esm/v2/patterns/FormikDateTimePicker.js +44 -58
- package/dist/esm/v2/patterns/FormikDateTimePicker.js.map +1 -1
- 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 -53
- package/dist/esm/v2/patterns/FormikInput.js.map +1 -1
- package/dist/esm/v2/patterns/FormikRadioGroup.js +39 -51
- package/dist/esm/v2/patterns/FormikRadioGroup.js.map +1 -1
- 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 -87
- package/dist/esm/v2/patterns/FormikSelect.js.map +1 -1
- package/dist/esm/v2/patterns/FormikTextarea.js +30 -46
- package/dist/esm/v2/patterns/FormikTextarea.js.map +1 -1
- package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js +53 -71
- 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 +27 -22
- package/dist/esm/v2/patterns/RowFavoriteToggle.js.map +1 -1
- 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 +6 -8
- package/dist/esm/v2/patterns/_pickerSerialisation.js.map +1 -1
- 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 +152 -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 +28 -34
- package/dist/esm/v2/personalization/capabilities/gridPreferences.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 +17 -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 +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +110 -49
- 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 +82 -49
- 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 +23 -25
- package/dist/v2/__tests__/FieldWidth.test.js.map +1 -1
- package/dist/v2/__tests__/FileCard.test.js +29 -28
- package/dist/v2/__tests__/FileCard.test.js.map +1 -1
- package/dist/v2/__tests__/FormikCheckbox.test.js +90 -183
- package/dist/v2/__tests__/FormikCheckbox.test.js.map +1 -1
- package/dist/v2/__tests__/FormikDateTimePicker.test.js +38 -48
- package/dist/v2/__tests__/FormikDateTimePicker.test.js.map +1 -1
- 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 +123 -204
- package/dist/v2/__tests__/FormikRadioGroup.test.js.map +1 -1
- package/dist/v2/__tests__/MobileRowCard.test.js +63 -61
- 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 +23 -27
- 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.js +84 -91
- 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 +62 -4
- package/dist/v2/components/Field.d.ts.map +1 -1
- package/dist/v2/components/Field.js +169 -70
- 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 +40 -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.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.js +22 -23
- 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.js +36 -45
- package/dist/v2/patterns/FormikCheckbox.js.map +1 -1
- 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.js +55 -72
- package/dist/v2/patterns/FormikCombobox.js.map +1 -1
- package/dist/v2/patterns/FormikDatePicker.js +50 -64
- package/dist/v2/patterns/FormikDatePicker.js.map +1 -1
- package/dist/v2/patterns/FormikDateTimePicker.js +50 -64
- package/dist/v2/patterns/FormikDateTimePicker.js.map +1 -1
- 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.js +45 -58
- package/dist/v2/patterns/FormikInput.js.map +1 -1
- package/dist/v2/patterns/FormikRadioGroup.js +45 -56
- package/dist/v2/patterns/FormikRadioGroup.js.map +1 -1
- 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.js +70 -92
- package/dist/v2/patterns/FormikSelect.js.map +1 -1
- package/dist/v2/patterns/FormikTextarea.js +35 -51
- package/dist/v2/patterns/FormikTextarea.js.map +1 -1
- package/dist/v2/patterns/KeyboardShortcutsHelp.js +60 -80
- 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 +6 -0
- package/dist/v2/patterns/RowFavoriteToggle.d.ts.map +1 -1
- package/dist/v2/patterns/RowFavoriteToggle.js +38 -30
- package/dist/v2/patterns/RowFavoriteToggle.js.map +1 -1
- 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.js +9 -10
- package/dist/v2/patterns/_pickerSerialisation.js.map +1 -1
- 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 +160 -0
- package/dist/v2/patterns/index.d.ts.map +1 -1
- package/dist/v2/patterns/index.js +157 -79
- 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.js +31 -36
- package/dist/v2/personalization/capabilities/gridPreferences.js.map +1 -1
- package/dist/v2/personalization/capabilities/index.js +12 -12
- 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 +16 -0
- package/dist/v2/personalization/index.d.ts.map +1 -1
- package/dist/v2/personalization/index.js +30 -23
- 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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KeyboardShortcutsHelp.js","names":["React","Modal","mergeLabels","jsx","_jsx","jsxs","_jsxs","isFocusOnTextEntry","el","document","activeElement","tag","tagName","HTMLElement","isContentEditable","ShortcutKey","_ref","children","style","display","minWidth","padding","background","border","borderBottomColor","borderRadius","boxShadow","fontFamily","fontSize","textAlign","lineHeight","color","SHORTCUT_ROW_SX","gridTemplateColumns","gap","alignItems","borderBottom","SHORTCUT_KEYS_SX","flexWrap","HELP_FOOTNOTE_SX","marginTop","paddingTop","borderTop","DEFAULT_LABELS","Object","freeze","footnoteIntro","footnoteOutro","listAriaLabel","keyJoiner","KeyboardShortcutsHelp","_ref2","_ref2$shortcuts","shortcuts","_ref2$title","title","labels","open","onOpenChange","_React$useState","useState","_React$useState2","_slicedToArray","uncontrolledOpen","setUncontrolledOpen","isControlled","undefined","isOpen","L","isOpenRef","useRef","current","onOpenChangeRef","isControlledRef","requestOpen","useCallback","next","_onOpenChangeRef$curr","call","useEffect","handler","event","key","ctrlKey","metaKey","altKey","preventDefault","window","addEventListener","removeEventListener","Array","isArray","length","onClose","size","margin","map","sc","i","keys","k","j","Fragment","description"],"sources":["../../../../src/lib/v2/patterns/KeyboardShortcutsHelp.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Modal from \"../components/Modal\";\r\nimport { mergeLabels } from \"../utils/mergeLabels\";\r\n\r\n/* ── Body-only focus guard ────────────────────────────────────────\r\n * The \"?\" key is a printable character. If a user types \"?\" inside an\r\n * Input / Textarea / contentEditable element we must NOT hijack the\r\n * keypress to open the help — they're trying to type a question mark.\r\n *\r\n * BUTTON / A focus is NOT blocking by design: when the user has tabbed\r\n * onto an interactive non-text element, hitting \"?\" makes sense as a\r\n * help affordance (navigation mode, not text-entry mode).\r\n */\r\nfunction isFocusOnTextEntry(): boolean {\r\n const el = typeof document !== \"undefined\" ? document.activeElement : null;\r\n if (!el) return false;\r\n const tag = el.tagName;\r\n if (tag === \"INPUT\" || tag === \"TEXTAREA\" || tag === \"SELECT\") return true;\r\n if (el instanceof HTMLElement && el.isContentEditable) return true;\r\n return false;\r\n}\r\n\r\nfunction ShortcutKey({ children }: { children?: React.ReactNode }) {\r\n return (\r\n <kbd\r\n style={{\r\n display: \"inline-block\",\r\n minWidth: \"1.75em\",\r\n padding: \"0.15em 0.5em\",\r\n background: \"var(--bg-subtle)\",\r\n border: \"1px solid var(--border)\",\r\n borderBottomColor: \"var(--border-strong, var(--border))\",\r\n borderRadius: \"var(--r-sm)\",\r\n boxShadow: \"inset 0 -1px 0 var(--border)\",\r\n fontFamily: \"var(--font-mono, monospace)\",\r\n fontSize: \"var(--text-sm)\",\r\n textAlign: \"center\",\r\n lineHeight: 1.4,\r\n color: \"var(--fg)\",\r\n }}\r\n >\r\n {children}\r\n </kbd>\r\n );\r\n}\r\n\r\nconst SHORTCUT_ROW_SX: React.CSSProperties = {\r\n display: \"grid\",\r\n gridTemplateColumns: \"auto 1fr\",\r\n gap: \"var(--s-4)\",\r\n alignItems: \"center\",\r\n padding: \"var(--s-2) 0\",\r\n borderBottom: \"1px solid var(--border-subtle, var(--border))\",\r\n};\r\n\r\nconst SHORTCUT_KEYS_SX: React.CSSProperties = {\r\n display: \"flex\",\r\n gap: \"var(--s-1)\",\r\n alignItems: \"center\",\r\n flexWrap: \"wrap\",\r\n};\r\n\r\nconst HELP_FOOTNOTE_SX: React.CSSProperties = {\r\n marginTop: \"var(--s-4)\",\r\n paddingTop: \"var(--s-3)\",\r\n borderTop: \"1px solid var(--border)\",\r\n fontSize: \"var(--text-xs)\",\r\n color: \"var(--fg-subtle)\",\r\n lineHeight: 1.5,\r\n};\r\n\r\nconst DEFAULT_LABELS = Object.freeze({\r\n /* Footnote rendered below the shortcut list. Split into two parts so the\r\n * keycap can be embedded in the middle without forcing the i18n string to\r\n * carry HTML tags. */\r\n footnoteIntro: \"Astuce : appuyez sur\",\r\n footnoteOutro:\r\n \"à tout moment pour ouvrir ou fermer cette aide. Les raccourcis s'activent uniquement quand votre curseur n'est pas dans un champ de saisie.\",\r\n /* aria-label on the <dl> listing every shortcut. */\r\n listAriaLabel: \"Liste des raccourcis clavier disponibles sur cette page\",\r\n /* Joiner rendered between alternative keys for the same shortcut. */\r\n keyJoiner: \"ou\",\r\n});\r\n\r\n/**\r\n * KeyboardShortcutsHelp — Portnet UI v2\r\n *\r\n * Charter §5.2 SHOULD — discoverable help overlay for page-level keyboard\r\n * shortcuts. Listens globally for \"?\" and opens a v2.Modal listing every\r\n * shortcut as <kbd> elements (WCAG 1.3.1 semantic).\r\n *\r\n * Self-contained: the host page only declares the shortcuts array and renders\r\n * <KeyboardShortcutsHelp shortcuts={…} /> once.\r\n *\r\n * Localisation (FR / EN / AR):\r\n * <KeyboardShortcutsHelp\r\n * title=\"Keyboard shortcuts\"\r\n * labels={{\r\n * footnoteIntro: \"Tip: press\",\r\n * footnoteOutro: \"anytime to toggle this help…\",\r\n * listAriaLabel: \"List of keyboard shortcuts available on this page\",\r\n * keyJoiner: \"or\",\r\n * }}\r\n * shortcuts={…}\r\n * />\r\n *\r\n * Charter §5.2 SHOULD + WCAG 1.3.1 (semantic <kbd>) + 2.1.1 (keyboard\r\n * reachable) + R-M.* (modal focus trap inherited from v2.Modal).\r\n */\r\n\r\nexport interface KeyboardShortcut {\r\n keys: string[];\r\n description: React.ReactNode;\r\n}\r\n\r\nexport interface KeyboardShortcutsHelpLabels {\r\n footnoteIntro?: string | undefined;\r\n footnoteOutro?: string | undefined;\r\n listAriaLabel?: string | undefined;\r\n keyJoiner?: string | undefined;\r\n}\r\n\r\nexport interface KeyboardShortcutsHelpProps {\r\n shortcuts?: KeyboardShortcut[] | undefined;\r\n title?: React.ReactNode | undefined;\r\n labels?: KeyboardShortcutsHelpLabels | undefined;\r\n /**\r\n * Optional CONTROLLED open state. Omit for the original self-contained\r\n * behaviour (the \"?\" listener owns the state).\r\n *\r\n * Added because the panel had no trigger but the keystroke. Hosts wired it\r\n * correctly and users still reported the shortcuts \"missing\" — they are, in\r\n * every practical sense, if the only affordance is a key you have to already\r\n * know about. Charter §05.2 asks for DISCOVERABLE help, and a host cannot add\r\n * a menu item or button without being able to open this.\r\n */\r\n open?: boolean | undefined;\r\n /** Called with the requested next state, for both \"?\" and the close button. */\r\n onOpenChange?: ((open: boolean) => void) | undefined;\r\n}\r\n\r\nfunction KeyboardShortcutsHelp({\r\n shortcuts = [],\r\n title = \"Raccourcis clavier\",\r\n labels,\r\n open,\r\n onOpenChange,\r\n}: KeyboardShortcutsHelpProps) {\r\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(false);\r\n const isControlled = open !== undefined;\r\n const isOpen = isControlled ? open : uncontrolledOpen;\r\n const L = mergeLabels(DEFAULT_LABELS, labels);\r\n\r\n /* Refs so the \"?\" listener can stay on a `[]` dependency list — it must not\r\n * be torn down and re-added on every open/close, and in controlled mode there\r\n * is no functional-update form to fall back on. */\r\n const isOpenRef = React.useRef(isOpen);\r\n isOpenRef.current = isOpen;\r\n const onOpenChangeRef = React.useRef(onOpenChange);\r\n onOpenChangeRef.current = onOpenChange;\r\n const isControlledRef = React.useRef(isControlled);\r\n isControlledRef.current = isControlled;\r\n\r\n const requestOpen = React.useCallback((next: boolean) => {\r\n if (!isControlledRef.current) setUncontrolledOpen(next);\r\n onOpenChangeRef.current?.(next);\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n const handler = (event: KeyboardEvent) => {\r\n // Only react to \"?\" (Shift+/ on US, AltGr+, on many AZERTY layouts).\r\n // event.key gives us the resolved character regardless of physical key.\r\n if (event.key !== \"?\") return;\r\n\r\n // Modifier keys (Ctrl, Meta, Alt) reserved for browser / OS shortcuts.\r\n if (event.ctrlKey || event.metaKey || event.altKey) return;\r\n\r\n // User is typing in a text field — let \"?\" through.\r\n if (isFocusOnTextEntry()) return;\r\n\r\n event.preventDefault();\r\n requestOpen(!isOpenRef.current);\r\n };\r\n\r\n window.addEventListener(\"keydown\", handler);\r\n return () => window.removeEventListener(\"keydown\", handler);\r\n }, [requestOpen]);\r\n\r\n if (!Array.isArray(shortcuts) || shortcuts.length === 0) {\r\n return null;\r\n }\r\n\r\n return (\r\n <Modal\r\n open={isOpen}\r\n title={title}\r\n onClose={() => requestOpen(false)}\r\n size=\"md\"\r\n >\r\n <dl style={{ margin: 0, padding: 0 }} aria-label={L.listAriaLabel}>\r\n {shortcuts.map((sc, i) => (\r\n <div key={i} style={SHORTCUT_ROW_SX}>\r\n <dt style={SHORTCUT_KEYS_SX}>\r\n {sc.keys.map((k, j) => (\r\n <React.Fragment key={j}>\r\n <ShortcutKey>{k}</ShortcutKey>\r\n {j < sc.keys.length - 1 && (\r\n <span\r\n aria-hidden=\"true\"\r\n style={{\r\n color: \"var(--fg-subtle)\",\r\n fontSize: \"var(--text-xs)\",\r\n }}\r\n >\r\n {L.keyJoiner}\r\n </span>\r\n )}\r\n </React.Fragment>\r\n ))}\r\n </dt>\r\n <dd style={{ margin: 0, fontSize: \"var(--text-body)\" }}>\r\n {sc.description}\r\n </dd>\r\n </div>\r\n ))}\r\n </dl>\r\n <div style={HELP_FOOTNOTE_SX}>\r\n {L.footnoteIntro}{\" \"}\r\n <ShortcutKey>?</ShortcutKey>{\" \"}\r\n {L.footnoteOutro}\r\n </div>\r\n </Modal>\r\n );\r\n}\r\n\r\nexport default KeyboardShortcutsHelp;\r\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"KeyboardShortcutsHelp.js","names":["React","Modal","mergeLabels","jsx","_jsx","jsxs","_jsxs","isFocusOnTextEntry","el","document","activeElement","tag","tagName","HTMLElement","isContentEditable","ShortcutKey","children","style","display","minWidth","padding","background","border","borderBottomColor","borderRadius","boxShadow","fontFamily","fontSize","textAlign","lineHeight","color","SHORTCUT_ROW_SX","gridTemplateColumns","gap","alignItems","borderBottom","SHORTCUT_KEYS_SX","flexWrap","HELP_FOOTNOTE_SX","marginTop","paddingTop","borderTop","DEFAULT_LABELS","Object","freeze","footnoteIntro","footnoteOutro","listAriaLabel","keyJoiner","KeyboardShortcutsHelp","shortcuts","title","labels","open","onOpenChange","uncontrolledOpen","setUncontrolledOpen","useState","isControlled","undefined","isOpen","L","isOpenRef","useRef","current","onOpenChangeRef","isControlledRef","requestOpen","useCallback","next","useEffect","handler","event","key","ctrlKey","metaKey","altKey","preventDefault","window","addEventListener","removeEventListener","Array","isArray","length","onClose","size","margin","map","sc","i","keys","k","j","Fragment","description"],"sources":["../../../../src/lib/v2/patterns/KeyboardShortcutsHelp.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Modal from \"../components/Modal\";\r\nimport { mergeLabels } from \"../utils/mergeLabels\";\r\n\r\n/* ── Body-only focus guard ────────────────────────────────────────\r\n * The \"?\" key is a printable character. If a user types \"?\" inside an\r\n * Input / Textarea / contentEditable element we must NOT hijack the\r\n * keypress to open the help — they're trying to type a question mark.\r\n *\r\n * BUTTON / A focus is NOT blocking by design: when the user has tabbed\r\n * onto an interactive non-text element, hitting \"?\" makes sense as a\r\n * help affordance (navigation mode, not text-entry mode).\r\n */\r\nfunction isFocusOnTextEntry(): boolean {\r\n const el = typeof document !== \"undefined\" ? document.activeElement : null;\r\n if (!el) return false;\r\n const tag = el.tagName;\r\n if (tag === \"INPUT\" || tag === \"TEXTAREA\" || tag === \"SELECT\") return true;\r\n if (el instanceof HTMLElement && el.isContentEditable) return true;\r\n return false;\r\n}\r\n\r\nfunction ShortcutKey({ children }: { children?: React.ReactNode }) {\r\n return (\r\n <kbd\r\n style={{\r\n display: \"inline-block\",\r\n minWidth: \"1.75em\",\r\n padding: \"0.15em 0.5em\",\r\n background: \"var(--bg-subtle)\",\r\n border: \"1px solid var(--border)\",\r\n borderBottomColor: \"var(--border-strong, var(--border))\",\r\n borderRadius: \"var(--r-sm)\",\r\n boxShadow: \"inset 0 -1px 0 var(--border)\",\r\n fontFamily: \"var(--font-mono, monospace)\",\r\n fontSize: \"var(--text-sm)\",\r\n textAlign: \"center\",\r\n lineHeight: 1.4,\r\n color: \"var(--fg)\",\r\n }}\r\n >\r\n {children}\r\n </kbd>\r\n );\r\n}\r\n\r\nconst SHORTCUT_ROW_SX: React.CSSProperties = {\r\n display: \"grid\",\r\n gridTemplateColumns: \"auto 1fr\",\r\n gap: \"var(--s-4)\",\r\n alignItems: \"center\",\r\n padding: \"var(--s-2) 0\",\r\n borderBottom: \"1px solid var(--border-subtle, var(--border))\",\r\n};\r\n\r\nconst SHORTCUT_KEYS_SX: React.CSSProperties = {\r\n display: \"flex\",\r\n gap: \"var(--s-1)\",\r\n alignItems: \"center\",\r\n flexWrap: \"wrap\",\r\n};\r\n\r\nconst HELP_FOOTNOTE_SX: React.CSSProperties = {\r\n marginTop: \"var(--s-4)\",\r\n paddingTop: \"var(--s-3)\",\r\n borderTop: \"1px solid var(--border)\",\r\n fontSize: \"var(--text-xs)\",\r\n color: \"var(--fg-subtle)\",\r\n lineHeight: 1.5,\r\n};\r\n\r\nconst DEFAULT_LABELS = Object.freeze({\r\n /* Footnote rendered below the shortcut list. Split into two parts so the\r\n * keycap can be embedded in the middle without forcing the i18n string to\r\n * carry HTML tags. */\r\n footnoteIntro: \"Astuce : appuyez sur\",\r\n footnoteOutro:\r\n \"à tout moment pour ouvrir ou fermer cette aide. Les raccourcis s'activent uniquement quand votre curseur n'est pas dans un champ de saisie.\",\r\n /* aria-label on the <dl> listing every shortcut. */\r\n listAriaLabel: \"Liste des raccourcis clavier disponibles sur cette page\",\r\n /* Joiner rendered between alternative keys for the same shortcut. */\r\n keyJoiner: \"ou\",\r\n});\r\n\r\n/**\r\n * KeyboardShortcutsHelp — Portnet UI v2\r\n *\r\n * Charter §5.2 SHOULD — discoverable help overlay for page-level keyboard\r\n * shortcuts. Listens globally for \"?\" and opens a v2.Modal listing every\r\n * shortcut as <kbd> elements (WCAG 1.3.1 semantic).\r\n *\r\n * Self-contained: the host page only declares the shortcuts array and renders\r\n * <KeyboardShortcutsHelp shortcuts={…} /> once.\r\n *\r\n * Localisation (FR / EN / AR):\r\n * <KeyboardShortcutsHelp\r\n * title=\"Keyboard shortcuts\"\r\n * labels={{\r\n * footnoteIntro: \"Tip: press\",\r\n * footnoteOutro: \"anytime to toggle this help…\",\r\n * listAriaLabel: \"List of keyboard shortcuts available on this page\",\r\n * keyJoiner: \"or\",\r\n * }}\r\n * shortcuts={…}\r\n * />\r\n *\r\n * Charter §5.2 SHOULD + WCAG 1.3.1 (semantic <kbd>) + 2.1.1 (keyboard\r\n * reachable) + R-M.* (modal focus trap inherited from v2.Modal).\r\n */\r\n\r\nexport interface KeyboardShortcut {\r\n keys: string[];\r\n description: React.ReactNode;\r\n}\r\n\r\nexport interface KeyboardShortcutsHelpLabels {\r\n footnoteIntro?: string | undefined;\r\n footnoteOutro?: string | undefined;\r\n listAriaLabel?: string | undefined;\r\n keyJoiner?: string | undefined;\r\n}\r\n\r\nexport interface KeyboardShortcutsHelpProps {\r\n shortcuts?: KeyboardShortcut[] | undefined;\r\n title?: React.ReactNode | undefined;\r\n labels?: KeyboardShortcutsHelpLabels | undefined;\r\n /**\r\n * Optional CONTROLLED open state. Omit for the original self-contained\r\n * behaviour (the \"?\" listener owns the state).\r\n *\r\n * Added because the panel had no trigger but the keystroke. Hosts wired it\r\n * correctly and users still reported the shortcuts \"missing\" — they are, in\r\n * every practical sense, if the only affordance is a key you have to already\r\n * know about. Charter §05.2 asks for DISCOVERABLE help, and a host cannot add\r\n * a menu item or button without being able to open this.\r\n */\r\n open?: boolean | undefined;\r\n /** Called with the requested next state, for both \"?\" and the close button. */\r\n onOpenChange?: ((open: boolean) => void) | undefined;\r\n}\r\n\r\nfunction KeyboardShortcutsHelp({\r\n shortcuts = [],\r\n title = \"Raccourcis clavier\",\r\n labels,\r\n open,\r\n onOpenChange,\r\n}: KeyboardShortcutsHelpProps) {\r\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(false);\r\n const isControlled = open !== undefined;\r\n const isOpen = isControlled ? open : uncontrolledOpen;\r\n const L = mergeLabels(DEFAULT_LABELS, labels);\r\n\r\n /* Refs so the \"?\" listener can stay on a `[]` dependency list — it must not\r\n * be torn down and re-added on every open/close, and in controlled mode there\r\n * is no functional-update form to fall back on. */\r\n const isOpenRef = React.useRef(isOpen);\r\n isOpenRef.current = isOpen;\r\n const onOpenChangeRef = React.useRef(onOpenChange);\r\n onOpenChangeRef.current = onOpenChange;\r\n const isControlledRef = React.useRef(isControlled);\r\n isControlledRef.current = isControlled;\r\n\r\n const requestOpen = React.useCallback((next: boolean) => {\r\n if (!isControlledRef.current) setUncontrolledOpen(next);\r\n onOpenChangeRef.current?.(next);\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n const handler = (event: KeyboardEvent) => {\r\n // Only react to \"?\" (Shift+/ on US, AltGr+, on many AZERTY layouts).\r\n // event.key gives us the resolved character regardless of physical key.\r\n if (event.key !== \"?\") return;\r\n\r\n // Modifier keys (Ctrl, Meta, Alt) reserved for browser / OS shortcuts.\r\n if (event.ctrlKey || event.metaKey || event.altKey) return;\r\n\r\n // User is typing in a text field — let \"?\" through.\r\n if (isFocusOnTextEntry()) return;\r\n\r\n event.preventDefault();\r\n requestOpen(!isOpenRef.current);\r\n };\r\n\r\n window.addEventListener(\"keydown\", handler);\r\n return () => window.removeEventListener(\"keydown\", handler);\r\n }, [requestOpen]);\r\n\r\n if (!Array.isArray(shortcuts) || shortcuts.length === 0) {\r\n return null;\r\n }\r\n\r\n return (\r\n <Modal\r\n open={isOpen}\r\n title={title}\r\n onClose={() => requestOpen(false)}\r\n size=\"md\"\r\n >\r\n <dl style={{ margin: 0, padding: 0 }} aria-label={L.listAriaLabel}>\r\n {shortcuts.map((sc, i) => (\r\n <div key={i} style={SHORTCUT_ROW_SX}>\r\n <dt style={SHORTCUT_KEYS_SX}>\r\n {sc.keys.map((k, j) => (\r\n <React.Fragment key={j}>\r\n <ShortcutKey>{k}</ShortcutKey>\r\n {j < sc.keys.length - 1 && (\r\n <span\r\n aria-hidden=\"true\"\r\n style={{\r\n color: \"var(--fg-subtle)\",\r\n fontSize: \"var(--text-xs)\",\r\n }}\r\n >\r\n {L.keyJoiner}\r\n </span>\r\n )}\r\n </React.Fragment>\r\n ))}\r\n </dt>\r\n <dd style={{ margin: 0, fontSize: \"var(--text-body)\" }}>\r\n {sc.description}\r\n </dd>\r\n </div>\r\n ))}\r\n </dl>\r\n <div style={HELP_FOOTNOTE_SX}>\r\n {L.footnoteIntro}{\" \"}\r\n <ShortcutKey>?</ShortcutKey>{\" \"}\r\n {L.footnoteOutro}\r\n </div>\r\n </Modal>\r\n );\r\n}\r\n\r\nexport default KeyboardShortcutsHelp;\r\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -19,13 +19,12 @@ import ErrorIcon from "@mui/icons-material/ErrorOutlined";
|
|
|
19
19
|
* Defaults stay French for back-compat.
|
|
20
20
|
*/
|
|
21
21
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
22
|
-
function NetworkErrorBanner(
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
retryLabel = _ref$retryLabel === void 0 ? "Réessayer" : _ref$retryLabel;
|
|
22
|
+
function NetworkErrorBanner({
|
|
23
|
+
visible,
|
|
24
|
+
message = "Connexion perdue.",
|
|
25
|
+
onRetry,
|
|
26
|
+
retryLabel = "Réessayer"
|
|
27
|
+
}) {
|
|
29
28
|
if (!visible) return null;
|
|
30
29
|
return /*#__PURE__*/_jsxs(Box, {
|
|
31
30
|
role: "alert",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NetworkErrorBanner.js","names":["React","Box","ErrorIcon","jsx","_jsx","jsxs","_jsxs","NetworkErrorBanner","
|
|
1
|
+
{"version":3,"file":"NetworkErrorBanner.js","names":["React","Box","ErrorIcon","jsx","_jsx","jsxs","_jsxs","NetworkErrorBanner","visible","message","onRetry","retryLabel","role","className","children","fontSize","component","type","onClick","sx","background","border","color","borderRadius","padding","fontWeight","cursor","fontFamily","marginInlineStart","transition","outline","outlineOffset"],"sources":["../../../../src/lib/v2/patterns/NetworkErrorBanner.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport ErrorIcon from \"@mui/icons-material/ErrorOutlined\";\r\n\r\n/**\r\n * NetworkErrorBanner - Portnet UI v2 (pattern)\r\n *\r\n * Charter R-4.3 - erreur réseau globale = bandeau persistant top, \"Réessayer\".\r\n * Z-index 2000 (above modals).\r\n *\r\n * <NetworkErrorBanner\r\n * visible={!online}\r\n * message=\"Connexion perdue.\"\r\n * onRetry={refresh}\r\n * />\r\n *\r\n * Localisation (FR / EN / AR):\r\n * `message` and `retryLabel` are direct overrides on the props.\r\n * Defaults stay French for back-compat.\r\n */\r\n\r\nexport interface NetworkErrorBannerProps {\r\n visible?: boolean | undefined;\r\n message?: React.ReactNode | undefined;\r\n onRetry?: (() => void) | undefined;\r\n retryLabel?: React.ReactNode | undefined;\r\n}\r\n\r\nfunction NetworkErrorBanner({\r\n visible,\r\n message = \"Connexion perdue.\",\r\n onRetry,\r\n retryLabel = \"Réessayer\",\r\n}: NetworkErrorBannerProps) {\r\n if (!visible) return null;\r\n return (\r\n <Box role=\"alert\" aria-live=\"assertive\" className=\"pui-net-error-banner\">\r\n <ErrorIcon fontSize=\"small\" aria-hidden=\"true\" />\r\n <span>{message}</span>\r\n {onRetry && (\r\n <Box\r\n component=\"button\"\r\n type=\"button\"\r\n onClick={onRetry}\r\n className=\"pui-net-error-banner-retry\"\r\n sx={{\r\n // R-AI.1 - tokenised inverse colour mix (was rgba(255,255,255,...))\r\n background: \"color-mix(in srgb, var(--fg-inverse) 20%, transparent)\",\r\n border:\r\n \"1px solid color-mix(in srgb, var(--fg-inverse) 35%, transparent)\",\r\n color: \"inherit\",\r\n borderRadius: \"var(--r-sm)\",\r\n padding: \"var(--s-1) var(--s-3)\",\r\n fontSize: \"var(--text-xs)\",\r\n fontWeight: \"var(--fw-semibold)\",\r\n cursor: \"pointer\",\r\n fontFamily: \"inherit\",\r\n // NEB-1 - logical inline-start margin so it sits correctly under RTL.\r\n marginInlineStart: 0.5,\r\n transition: \"background var(--duration-fast, 80ms) ease\",\r\n \"&:hover\": {\r\n background:\r\n \"color-mix(in srgb, var(--fg-inverse) 30%, transparent)\",\r\n },\r\n // R-F.1 - focus visible required, charter §05.\r\n \"&:focus-visible\": {\r\n outline: \"2px solid var(--fg-inverse)\",\r\n outlineOffset: \"var(--pui-outline-offset)\",\r\n },\r\n }}\r\n >\r\n {retryLabel}\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n}\r\n\r\nexport default NetworkErrorBanner;\r\n"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,OAAOC,GAAG,MAAM,mBAAmB;AACnC,OAAOC,SAAS,MAAM,mCAAmC;;AAEzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAfA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAwBA,SAASC,kBAAkBA,CAAC;EAC1BC,OAAO;EACPC,OAAO,GAAG,mBAAmB;EAC7BC,OAAO;EACPC,UAAU,GAAG;AACU,CAAC,EAAE;EAC1B,IAAI,CAACH,OAAO,EAAE,OAAO,IAAI;EACzB,oBACEF,KAAA,CAACL,GAAG;IAACW,IAAI,EAAC,OAAO;IAAC,aAAU,WAAW;IAACC,SAAS,EAAC,sBAAsB;IAAAC,QAAA,gBACtEV,IAAA,CAACF,SAAS;MAACa,QAAQ,EAAC,OAAO;MAAC,eAAY;IAAM,CAAE,CAAC,eACjDX,IAAA;MAAAU,QAAA,EAAOL;IAAO,CAAO,CAAC,EACrBC,OAAO,iBACNN,IAAA,CAACH,GAAG;MACFe,SAAS,EAAC,QAAQ;MAClBC,IAAI,EAAC,QAAQ;MACbC,OAAO,EAAER,OAAQ;MACjBG,SAAS,EAAC,4BAA4B;MACtCM,EAAE,EAAE;QACF;QACAC,UAAU,EAAE,wDAAwD;QACpEC,MAAM,EACJ,kEAAkE;QACpEC,KAAK,EAAE,SAAS;QAChBC,YAAY,EAAE,aAAa;QAC3BC,OAAO,EAAE,uBAAuB;QAChCT,QAAQ,EAAE,gBAAgB;QAC1BU,UAAU,EAAE,oBAAoB;QAChCC,MAAM,EAAE,SAAS;QACjBC,UAAU,EAAE,SAAS;QACrB;QACAC,iBAAiB,EAAE,GAAG;QACtBC,UAAU,EAAE,4CAA4C;QACxD,SAAS,EAAE;UACTT,UAAU,EACR;QACJ,CAAC;QACD;QACA,iBAAiB,EAAE;UACjBU,OAAO,EAAE,6BAA6B;UACtCC,aAAa,EAAE;QACjB;MACF,CAAE;MAAAjB,QAAA,EAEDH;IAAU,CACR,CACN;EAAA,CACE,CAAC;AAEV;AAEA,eAAeJ,kBAAkB","ignoreList":[]}
|
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
2
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
3
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
4
|
-
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
5
|
-
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
6
|
-
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
7
1
|
import * as React from "react";
|
|
8
2
|
import Box from "@mui/material/Box";
|
|
9
3
|
|
|
@@ -35,12 +29,13 @@ import Box from "@mui/material/Box";
|
|
|
35
29
|
* </PageContent>
|
|
36
30
|
*/
|
|
37
31
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
38
|
-
function PageContent(
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
32
|
+
function PageContent({
|
|
33
|
+
children,
|
|
34
|
+
gap,
|
|
35
|
+
sx
|
|
36
|
+
}) {
|
|
42
37
|
return /*#__PURE__*/_jsx(Box, {
|
|
43
|
-
sx:
|
|
38
|
+
sx: {
|
|
44
39
|
/* Responsive padding — charter §7.1 bis */
|
|
45
40
|
padding: {
|
|
46
41
|
xs: "var(--s-3)" /* 12 px — mobile */,
|
|
@@ -50,11 +45,12 @@ function PageContent(_ref) {
|
|
|
50
45
|
/* Section layout */
|
|
51
46
|
display: "flex",
|
|
52
47
|
flexDirection: "column",
|
|
53
|
-
gap: gap
|
|
48
|
+
gap: gap ?? "var(--s-4)",
|
|
54
49
|
/* Prevent content from overflowing the viewport on narrow screens
|
|
55
50
|
while still allowing inner scroll containers (DataGrid) to work. */
|
|
56
|
-
minWidth: 0
|
|
57
|
-
|
|
51
|
+
minWidth: 0,
|
|
52
|
+
...sx
|
|
53
|
+
},
|
|
58
54
|
children: children
|
|
59
55
|
});
|
|
60
56
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PageContent.js","names":["React","Box","jsx","_jsx","PageContent","
|
|
1
|
+
{"version":3,"file":"PageContent.js","names":["React","Box","jsx","_jsx","PageContent","children","gap","sx","padding","xs","sm","lg","display","flexDirection","minWidth"],"sources":["../../../../src/lib/v2/patterns/PageContent.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\nimport type { SystemStyleObject } from \"@mui/system\";\r\n\r\n/**\r\n * PageContent — Portnet UI v2 (pattern)\r\n *\r\n * Charter §07 · Template canonique — zone contenu (§7.1 bis).\r\n *\r\n * Wraps the main content zone inside the shell applicatif with the\r\n * canonical responsive padding and vertical gap defined in §7.1 bis:\r\n *\r\n * xs ( 0 – 480 px ) → padding 12 px (--s-3)\r\n * sm ( 481 – 1023 px) → padding 16 px (--s-4)\r\n * lg ( 1024 px + ) → padding 24 px (--s-6)\r\n *\r\n * Usage:\r\n * import { PageContent } from \"@portnet/ui\";\r\n *\r\n * <PageContent>\r\n * <FilterCard />\r\n * <DataGrid ... />\r\n * </PageContent>\r\n *\r\n * Override gap or add extra sx when the default section gap\r\n * (var(--s-4) = 16 px) is not appropriate for the context.\r\n *\r\n * <PageContent gap=\"var(--s-6)\" sx={{ maxWidth: 720 }}>\r\n * ...\r\n * </PageContent>\r\n */\r\n\r\nexport interface PageContentProps {\r\n /** Page sections / content */\r\n children?: React.ReactNode | undefined;\r\n /** Override the vertical gap between direct children (default var(--s-4)) */\r\n gap?: string | undefined;\r\n /** MUI sx overrides applied to the root Box */\r\n sx?: SxProps<Theme> | undefined;\r\n}\r\n\r\nfunction PageContent({ children, gap, sx }: PageContentProps) {\r\n return (\r\n <Box\r\n sx={{\r\n /* Responsive padding — charter §7.1 bis */\r\n padding: {\r\n xs: \"var(--s-3)\" /* 12 px — mobile */,\r\n sm: \"var(--s-4)\" /* 16 px — tablet */,\r\n lg: \"var(--s-6)\" /* 24 px — desktop */,\r\n },\r\n /* Section layout */\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n gap: gap ?? \"var(--s-4)\",\r\n /* Prevent content from overflowing the viewport on narrow screens\r\n while still allowing inner scroll containers (DataGrid) to work. */\r\n minWidth: 0,\r\n ...(sx as SystemStyleObject<Theme>),\r\n }}\r\n >\r\n {children}\r\n </Box>\r\n );\r\n}\r\n\r\nexport default PageContent;\r\n"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,OAAOC,GAAG,MAAM,mBAAmB;;AAInC;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;AA1BA,SAAAC,GAAA,IAAAC,IAAA;AAqCA,SAASC,WAAWA,CAAC;EAAEC,QAAQ;EAAEC,GAAG;EAAEC;AAAqB,CAAC,EAAE;EAC5D,oBACEJ,IAAA,CAACF,GAAG;IACFM,EAAE,EAAE;MACF;MACAC,OAAO,EAAE;QACPC,EAAE,EAAE,YAAY,CAAC;QACjBC,EAAE,EAAE,YAAY,CAAC;QACjBC,EAAE,EAAE,YAAY,CAAC;MACnB,CAAC;MACD;MACAC,OAAO,EAAE,MAAM;MACfC,aAAa,EAAE,QAAQ;MACvBP,GAAG,EAAEA,GAAG,IAAI,YAAY;MACxB;AACR;MACQQ,QAAQ,EAAE,CAAC;MACX,GAAIP;IACN,CAAE;IAAAF,QAAA,EAEDA;EAAQ,CACN,CAAC;AAEV;AAEA,eAAeD,WAAW","ignoreList":[]}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import VisibilityIcon from "@mui/icons-material/Visibility";
|
|
3
|
+
import Button from "../components/Button";
|
|
4
|
+
import Drawer from "../components/Drawer";
|
|
5
|
+
import KV from "../components/KV";
|
|
6
|
+
import KVGrid from "../components/KVGrid";
|
|
7
|
+
import { mergeLabels } from "../utils/mergeLabels";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* PreviewDrawer — Portnet UI v2 (pattern)
|
|
11
|
+
*
|
|
12
|
+
* §Preview Drawer of the Platform Mandatory UX Patterns: the summary of a
|
|
13
|
+
* listing row — status, key information, quick actions — shown WITHOUT leaving
|
|
14
|
+
* the listing.
|
|
15
|
+
*
|
|
16
|
+
* ─────────────────────────────────────────────────────────────────────────────
|
|
17
|
+
* WHY THIS BELONGS IN THE LIBRARY (capability gap G-40)
|
|
18
|
+
*
|
|
19
|
+
* §Row Interaction and §Preview Drawer are both MUST, on EVERY listing page of
|
|
20
|
+
* the platform: rows must be clickable, and clicking one must open a preview
|
|
21
|
+
* carrying summary, status, main information and quick actions. That is not a
|
|
22
|
+
* per-module feature, it is the platform's listing contract — and the library
|
|
23
|
+
* shipped only `Drawer`, the empty shell.
|
|
24
|
+
*
|
|
25
|
+
* So each module assembled the same body by hand, and the copies drifted where
|
|
26
|
+
* it is least visible: `ms-ti-fe` renders its label/value block with
|
|
27
|
+
* `KVGrid` + `KV`, while `refonte-frontend` had built a local `<dl>` with its
|
|
28
|
+
* own two-column grid — the same concept, two renderings, which is precisely
|
|
29
|
+
* what R-2.1 forbids. That module's Area 3 pass had to correct it before this
|
|
30
|
+
* promotion could even be considered.
|
|
31
|
+
*
|
|
32
|
+
* >>> AND THE SHELL WITHOUT THE BODY IS WHAT MADE THE UNSAFE VERSION LOOK
|
|
33
|
+
* >>> REASONABLE. The promoted implementation had carried an
|
|
34
|
+
* >>> `as unknown as DemandeRow` assertion, because a single component was
|
|
35
|
+
* >>> generic over the row type while computing its DEFAULTS from one specific
|
|
36
|
+
* >>> type's fields. Its own comment recorded the consequence: without those
|
|
37
|
+
* >>> defaults "the drawer does not fail — it shows dashes and an Unknown
|
|
38
|
+
* >>> status, which is worse than an error because it is noticed late". The
|
|
39
|
+
* >>> split below is what removes the cast rather than hiding it: THIS
|
|
40
|
+
* >>> component reads NO field of `row`. It renders what it is given and hands
|
|
41
|
+
* >>> the row back to the host's callbacks. A business default therefore lives
|
|
42
|
+
* >>> in a host wrapper whose `row` is a concrete type, and neither half has to
|
|
43
|
+
* >>> assert anything. <<<
|
|
44
|
+
* ─────────────────────────────────────────────────────────────────────────────
|
|
45
|
+
*
|
|
46
|
+
* VALUES, NOT ACCESSORS, AND THE REASON IS THE CLOSING ANIMATION.
|
|
47
|
+
* `title` / `status` / `items` are optional VALUES rather than
|
|
48
|
+
* `(row: T) => …` functions. Hosts pass them through a conditional spread
|
|
49
|
+
* (`{...(row ? { title: …, items: … } : {})}`), which requiring them would
|
|
50
|
+
* make invalid — the compiler cannot see that the spread always supplies the
|
|
51
|
+
* keys. The natural workaround, mounting the drawer only when a row exists,
|
|
52
|
+
* would UNMOUNT it on close and destroy `Drawer`'s 220 ms exit animation
|
|
53
|
+
* (Charter §08).
|
|
54
|
+
*
|
|
55
|
+
* Consequence accepted: a missing `title` is not a compile error, it falls back
|
|
56
|
+
* to `labels.fallbackTitle`. The gain is that the drawer can no longer PRETEND
|
|
57
|
+
* an arbitrary row is a particular business object.
|
|
58
|
+
*
|
|
59
|
+
* Renders nothing when `row` is null, so hosts can mount it unconditionally.
|
|
60
|
+
*
|
|
61
|
+
* Usage:
|
|
62
|
+
*
|
|
63
|
+
* <PreviewDrawer<DemandeRow>
|
|
64
|
+
* open={apercuOuvert}
|
|
65
|
+
* onClose={fermer}
|
|
66
|
+
* row={ligneApercu}
|
|
67
|
+
* subtitle="Déclaration d'importation"
|
|
68
|
+
* onOpenItem={consulter}
|
|
69
|
+
* labels={{ open: "Consulter la demande" }}
|
|
70
|
+
* {...(ligneApercu ? { title: ligneApercu.identifiant, items: fiche } : {})}
|
|
71
|
+
* />
|
|
72
|
+
*/
|
|
73
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
74
|
+
const DEFAULT_LABELS = Object.freeze({
|
|
75
|
+
/** Generic on purpose: the business verb+object belongs to the host (§9.2). */
|
|
76
|
+
open: "Consulter",
|
|
77
|
+
fallbackTitle: "Détail"
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
/** One label/value line of the summary sheet. */
|
|
81
|
+
|
|
82
|
+
function PreviewDrawer({
|
|
83
|
+
open,
|
|
84
|
+
onClose,
|
|
85
|
+
row,
|
|
86
|
+
subtitle,
|
|
87
|
+
title,
|
|
88
|
+
status,
|
|
89
|
+
items,
|
|
90
|
+
minColumnWidth,
|
|
91
|
+
onOpenItem,
|
|
92
|
+
canOpenItem,
|
|
93
|
+
actions,
|
|
94
|
+
onPrev,
|
|
95
|
+
onNext,
|
|
96
|
+
hasPrev,
|
|
97
|
+
hasNext,
|
|
98
|
+
children,
|
|
99
|
+
labels
|
|
100
|
+
}) {
|
|
101
|
+
const L = mergeLabels(DEFAULT_LABELS, labels);
|
|
102
|
+
if (!row) return null;
|
|
103
|
+
const canOpen = canOpenItem ? canOpenItem(row) : true;
|
|
104
|
+
const lines = items ?? [];
|
|
105
|
+
return /*#__PURE__*/_jsxs(Drawer, {
|
|
106
|
+
open: open,
|
|
107
|
+
onClose: onClose,
|
|
108
|
+
title: title ?? L.fallbackTitle,
|
|
109
|
+
...(subtitle !== undefined ? {
|
|
110
|
+
subtitle
|
|
111
|
+
} : {}),
|
|
112
|
+
...(status !== undefined ? {
|
|
113
|
+
status
|
|
114
|
+
} : {}),
|
|
115
|
+
...(onPrev ? {
|
|
116
|
+
onPrev
|
|
117
|
+
} : {}),
|
|
118
|
+
...(onNext ? {
|
|
119
|
+
onNext
|
|
120
|
+
} : {}),
|
|
121
|
+
...(hasPrev !== undefined ? {
|
|
122
|
+
hasPrev
|
|
123
|
+
} : {}),
|
|
124
|
+
...(hasNext !== undefined ? {
|
|
125
|
+
hasNext
|
|
126
|
+
} : {}),
|
|
127
|
+
actions: actions ?? (canOpen && onOpenItem ? /*#__PURE__*/_jsx(Button, {
|
|
128
|
+
icon: /*#__PURE__*/_jsx(VisibilityIcon, {}),
|
|
129
|
+
onClick: () => onOpenItem(row),
|
|
130
|
+
children: L.open
|
|
131
|
+
}) : null),
|
|
132
|
+
children: [lines.length > 0 && /*#__PURE__*/_jsx(KVGrid, {
|
|
133
|
+
...(minColumnWidth !== undefined ? {
|
|
134
|
+
minColumnWidth
|
|
135
|
+
} : {}),
|
|
136
|
+
children: lines.map((line, index) => /*#__PURE__*/_jsx(KV
|
|
137
|
+
// Index-based key on purpose: `label` is a ReactNode, so it is
|
|
138
|
+
// not always a usable key, and this list is not reorderable —
|
|
139
|
+
// it is rebuilt whole per row (R-R.3's exception).
|
|
140
|
+
, {
|
|
141
|
+
label: line.label,
|
|
142
|
+
...(line.value !== undefined ? {
|
|
143
|
+
value: line.value
|
|
144
|
+
} : {}),
|
|
145
|
+
...(line.mono !== undefined ? {
|
|
146
|
+
mono: line.mono
|
|
147
|
+
} : {})
|
|
148
|
+
}, index))
|
|
149
|
+
}), children]
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
export default PreviewDrawer;
|
|
153
|
+
//# sourceMappingURL=PreviewDrawer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PreviewDrawer.js","names":["React","VisibilityIcon","Button","Drawer","KV","KVGrid","mergeLabels","jsx","_jsx","jsxs","_jsxs","DEFAULT_LABELS","Object","freeze","open","fallbackTitle","PreviewDrawer","onClose","row","subtitle","title","status","items","minColumnWidth","onOpenItem","canOpenItem","actions","onPrev","onNext","hasPrev","hasNext","children","labels","L","canOpen","lines","undefined","icon","onClick","length","map","line","index","label","value","mono"],"sources":["../../../../src/lib/v2/patterns/PreviewDrawer.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport VisibilityIcon from \"@mui/icons-material/Visibility\";\r\nimport Button from \"../components/Button\";\r\nimport Drawer from \"../components/Drawer\";\r\nimport KV from \"../components/KV\";\r\nimport KVGrid from \"../components/KVGrid\";\r\nimport { mergeLabels } from \"../utils/mergeLabels\";\r\n\r\n/**\r\n * PreviewDrawer — Portnet UI v2 (pattern)\r\n *\r\n * §Preview Drawer of the Platform Mandatory UX Patterns: the summary of a\r\n * listing row — status, key information, quick actions — shown WITHOUT leaving\r\n * the listing.\r\n *\r\n * ─────────────────────────────────────────────────────────────────────────────\r\n * WHY THIS BELONGS IN THE LIBRARY (capability gap G-40)\r\n *\r\n * §Row Interaction and §Preview Drawer are both MUST, on EVERY listing page of\r\n * the platform: rows must be clickable, and clicking one must open a preview\r\n * carrying summary, status, main information and quick actions. That is not a\r\n * per-module feature, it is the platform's listing contract — and the library\r\n * shipped only `Drawer`, the empty shell.\r\n *\r\n * So each module assembled the same body by hand, and the copies drifted where\r\n * it is least visible: `ms-ti-fe` renders its label/value block with\r\n * `KVGrid` + `KV`, while `refonte-frontend` had built a local `<dl>` with its\r\n * own two-column grid — the same concept, two renderings, which is precisely\r\n * what R-2.1 forbids. That module's Area 3 pass had to correct it before this\r\n * promotion could even be considered.\r\n *\r\n * >>> AND THE SHELL WITHOUT THE BODY IS WHAT MADE THE UNSAFE VERSION LOOK\r\n * >>> REASONABLE. The promoted implementation had carried an\r\n * >>> `as unknown as DemandeRow` assertion, because a single component was\r\n * >>> generic over the row type while computing its DEFAULTS from one specific\r\n * >>> type's fields. Its own comment recorded the consequence: without those\r\n * >>> defaults \"the drawer does not fail — it shows dashes and an Unknown\r\n * >>> status, which is worse than an error because it is noticed late\". The\r\n * >>> split below is what removes the cast rather than hiding it: THIS\r\n * >>> component reads NO field of `row`. It renders what it is given and hands\r\n * >>> the row back to the host's callbacks. A business default therefore lives\r\n * >>> in a host wrapper whose `row` is a concrete type, and neither half has to\r\n * >>> assert anything. <<<\r\n * ─────────────────────────────────────────────────────────────────────────────\r\n *\r\n * VALUES, NOT ACCESSORS, AND THE REASON IS THE CLOSING ANIMATION.\r\n * `title` / `status` / `items` are optional VALUES rather than\r\n * `(row: T) => …` functions. Hosts pass them through a conditional spread\r\n * (`{...(row ? { title: …, items: … } : {})}`), which requiring them would\r\n * make invalid — the compiler cannot see that the spread always supplies the\r\n * keys. The natural workaround, mounting the drawer only when a row exists,\r\n * would UNMOUNT it on close and destroy `Drawer`'s 220 ms exit animation\r\n * (Charter §08).\r\n *\r\n * Consequence accepted: a missing `title` is not a compile error, it falls back\r\n * to `labels.fallbackTitle`. The gain is that the drawer can no longer PRETEND\r\n * an arbitrary row is a particular business object.\r\n *\r\n * Renders nothing when `row` is null, so hosts can mount it unconditionally.\r\n *\r\n * Usage:\r\n *\r\n * <PreviewDrawer<DemandeRow>\r\n * open={apercuOuvert}\r\n * onClose={fermer}\r\n * row={ligneApercu}\r\n * subtitle=\"Déclaration d'importation\"\r\n * onOpenItem={consulter}\r\n * labels={{ open: \"Consulter la demande\" }}\r\n * {...(ligneApercu ? { title: ligneApercu.identifiant, items: fiche } : {})}\r\n * />\r\n */\r\n\r\nconst DEFAULT_LABELS = Object.freeze({\r\n /** Generic on purpose: the business verb+object belongs to the host (§9.2). */\r\n open: \"Consulter\",\r\n fallbackTitle: \"Détail\",\r\n});\r\n\r\nexport interface PreviewDrawerLabels {\r\n open?: string | undefined;\r\n fallbackTitle?: string | undefined;\r\n}\r\n\r\n/** One label/value line of the summary sheet. */\r\nexport interface PreviewDrawerItem {\r\n label: React.ReactNode;\r\n value?: React.ReactNode | undefined;\r\n /** Renders the value in the mono face — IDs, references, amounts (§2.2). */\r\n mono?: boolean | undefined;\r\n}\r\n\r\nexport interface PreviewDrawerProps<T> {\r\n open?: boolean | undefined;\r\n onClose?: (() => void) | undefined;\r\n /** The previewed row. `null` renders nothing. */\r\n row: T | null;\r\n /** What kind of thing this is. Host vocabulary (§9.4). */\r\n subtitle?: React.ReactNode | undefined;\r\n /** Falls back to `labels.fallbackTitle` — see the note on values vs accessors. */\r\n title?: React.ReactNode | undefined;\r\n /** Status chip. Build it from `Status` so it stays on the `--status-*` palette (R-2.2). */\r\n status?: React.ReactNode | undefined;\r\n /** The summary sheet. Rendered as `KVGrid` + `KV`. */\r\n items?: readonly PreviewDrawerItem[] | undefined;\r\n /** Track minimum of the summary grid, in px. Defaults to `KVGrid`'s own. */\r\n minColumnWidth?: number | undefined;\r\n /** Opens the full record. Without it, no default action is rendered. */\r\n onOpenItem?: ((row: T) => void) | undefined;\r\n /**\r\n * Whether the open action applies to this row.\r\n *\r\n * Defaults to ALLOWED. This component knows no business status, so it cannot\r\n * derive a masking rule — and inventing one would be worse than having none.\r\n */\r\n canOpenItem?: ((row: T) => boolean) | undefined;\r\n /** Replaces the default action entirely. */\r\n actions?: React.ReactNode | undefined;\r\n onPrev?: (() => void) | undefined;\r\n onNext?: (() => void) | undefined;\r\n hasPrev?: boolean | undefined;\r\n hasNext?: boolean | undefined;\r\n /** Rendered under the summary sheet — tabs, documents, a nested grid. */\r\n children?: React.ReactNode | undefined;\r\n labels?: PreviewDrawerLabels | undefined;\r\n}\r\n\r\nfunction PreviewDrawer<T>({\r\n open,\r\n onClose,\r\n row,\r\n subtitle,\r\n title,\r\n status,\r\n items,\r\n minColumnWidth,\r\n onOpenItem,\r\n canOpenItem,\r\n actions,\r\n onPrev,\r\n onNext,\r\n hasPrev,\r\n hasNext,\r\n children,\r\n labels,\r\n}: PreviewDrawerProps<T>) {\r\n const L = mergeLabels(DEFAULT_LABELS, labels);\r\n\r\n if (!row) return null;\r\n\r\n const canOpen = canOpenItem ? canOpenItem(row) : true;\r\n const lines: readonly PreviewDrawerItem[] = items ?? [];\r\n\r\n return (\r\n <Drawer\r\n open={open}\r\n onClose={onClose}\r\n title={title ?? L.fallbackTitle}\r\n {...(subtitle !== undefined ? { subtitle } : {})}\r\n {...(status !== undefined ? { status } : {})}\r\n {...(onPrev ? { onPrev } : {})}\r\n {...(onNext ? { onNext } : {})}\r\n {...(hasPrev !== undefined ? { hasPrev } : {})}\r\n {...(hasNext !== undefined ? { hasNext } : {})}\r\n actions={\r\n actions ??\r\n (canOpen && onOpenItem ? (\r\n <Button icon={<VisibilityIcon />} onClick={() => onOpenItem(row)}>\r\n {L.open}\r\n </Button>\r\n ) : null)\r\n }\r\n >\r\n {lines.length > 0 && (\r\n <KVGrid {...(minColumnWidth !== undefined ? { minColumnWidth } : {})}>\r\n {lines.map((line, index) => (\r\n <KV\r\n // Index-based key on purpose: `label` is a ReactNode, so it is\r\n // not always a usable key, and this list is not reorderable —\r\n // it is rebuilt whole per row (R-R.3's exception).\r\n key={index}\r\n label={line.label}\r\n {...(line.value !== undefined ? { value: line.value } : {})}\r\n {...(line.mono !== undefined ? { mono: line.mono } : {})}\r\n />\r\n ))}\r\n </KVGrid>\r\n )}\r\n {children}\r\n </Drawer>\r\n );\r\n}\r\n\r\nexport default PreviewDrawer;\r\n"],"mappings":"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","ignoreList":[]}
|