@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":"useFocusTrap.test.js","names":["require","React","_interopRequireWildcard","_react2","_userEvent","_interopRequireDefault","_useFocusTrap","_jsxRuntime","obj","__esModule","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","Symbol","iterator","constructor","_regeneratorRuntime","exports","Op","hasOwn","value","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","enumerable","configurable","writable","err","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","create","context","Context","makeInvokeMethod","tryCatch","fn","arg","type","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","forEach","method","_invoke","AsyncIterator","PromiseImpl","invoke","resolve","reject","record","result","__await","then","unwrapped","error","previousPromise","callInvokeWithMethodAndArg","state","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","done","methodName","undefined","TypeError","info","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","length","i","displayName","isGeneratorFunction","genFun","ctor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","iter","keys","val","object","reverse","pop","skipTempReset","prev","charAt","slice","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","_catch","thrown","delegateYield","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","args","arguments","apply","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","filter","sym","_objectSpread","target","source","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","_toPrimitive","String","input","hint","prim","toPrimitive","res","Number","realGetClientRects","Element","getClientRects","beforeAll","rect","x","y","top","left","right","bottom","width","height","toJSON","list","assign","item","_list$i","afterAll","Trapped","_ref","children","_ref$active","active","containerProps","ref","useRef","useFocusTrap","jsx","isFocused","el","expect","toHaveFocus","_unused","afterEach","cleanup","describe","test","_callee","_callee$","_context","render","jsxs","waitFor","screen","getByRole","_callee2","_callee2$","_context2","autoFocus","_callee3","_callee3$","_context3","not","toThrow","_callee4","_callee4$","_context4","userEvent","tab","_callee5","_callee5$","_context5","shift","_callee6","_callee6$","_context6","disabled","_callee7","_callee7$","_context7","NestedHarness","_ref9","innerActive","_callee8","_render","rerender","_callee8$","_context8","_callee9","_render2","outer1","outer2","_callee9$","_context9","toBe"],"sources":["../../../src/lib/v2/__tests__/useFocusTrap.test.tsx"],"sourcesContent":["import \"@testing-library/jest-dom\";\r\nimport * as React from \"react\";\r\nimport { render, waitFor, cleanup, screen } from \"@testing-library/react\";\r\nimport userEvent from \"@testing-library/user-event\";\r\nimport useFocusTrap from \"../hooks/useFocusTrap\";\r\n\r\n/* ── jsdom LAYOUT SHIM — REQUIRED, NOT A CONVENIENCE ────────────────────────\r\n *\r\n * Without this, EVERY test in this file fails at its first `waitFor`, with focus\r\n * sitting on <body>. The cause is not the hook:\r\n *\r\n * `useFocusTrap.isVisuallyFocusable` rejects an element whose\r\n * `getClientRects()` is empty — a cheap, correct test for `display:none` and\r\n * `visibility:hidden` in a real browser.\r\n *\r\n * jsdom PERFORMS NO LAYOUT. `getClientRects()` returns an empty list for every\r\n * element, always. So the filter discards all candidates, `getFocusable()`\r\n * returns `[]`, nothing is focused, and all eight assertions fail for one\r\n * reason that has nothing to do with focus management.\r\n *\r\n * This shim gives every element a non-zero rect so the visibility filter behaves\r\n * as it does in a browser. It does NOT weaken the tests: the hook's other\r\n * exclusions — `disabled`, `aria-disabled`, and the ancestor walk for `hidden` /\r\n * `aria-hidden` / `inert` — are all ATTRIBUTE-based, work correctly in jsdom, and\r\n * remain fully exercised (see the \"disabled / aria-hidden filtering\" block).\r\n *\r\n * ⚠ Diagnosed during the procuration-portnet-fe certification audit, where these\r\n * eight failures were initially suspected of being a real WCAG R-M.2 breach\r\n * across all consuming modules. They were not. Do NOT \"fix\" this by relaxing the\r\n * rect check in the hook — that check is what stops a trap focusing an invisible\r\n * control in production.\r\n *\r\n * Restored in `afterAll` so the patch cannot leak into other suites. */\r\nconst realGetClientRects = Element.prototype.getClientRects;\r\n\r\nbeforeAll(() => {\r\n Element.prototype.getClientRects = function getClientRects(this: Element) {\r\n const rect: DOMRect = {\r\n x: 0,\r\n y: 0,\r\n top: 0,\r\n left: 0,\r\n right: 10,\r\n bottom: 10,\r\n width: 10,\r\n height: 10,\r\n toJSON: () => ({}),\r\n };\r\n const list = [rect];\r\n return Object.assign(list, {\r\n item: (i: number): DOMRect | null => list[i] ?? null,\r\n }) as unknown as DOMRectList;\r\n };\r\n});\r\n\r\nafterAll(() => {\r\n Element.prototype.getClientRects = realGetClientRects;\r\n});\r\n\r\n/**\r\n * Smoke + contract tests for the Batch 3 useFocusTrap refactor.\r\n *\r\n * Test harness — a minimal trap container component. Defaults to\r\n * active=true so tests don't have to flip props.\r\n */\r\ntype ContainerProps = React.HTMLAttributes<HTMLDivElement> & {\r\n [key: `data-${string}`]: string;\r\n};\r\n\r\ninterface TrappedProps {\r\n children?: React.ReactNode;\r\n active?: boolean;\r\n containerProps?: ContainerProps;\r\n}\r\n\r\nfunction Trapped({\r\n children,\r\n active = true,\r\n containerProps,\r\n}: TrappedProps): React.JSX.Element {\r\n const ref = React.useRef<HTMLDivElement>(null);\r\n useFocusTrap(ref, active);\r\n return (\r\n <div ref={ref} {...containerProps}>\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\n/**\r\n * Returns whether `el` currently has focus, without touching\r\n * document.activeElement directly (testing-library/no-node-access) —\r\n * delegates to jest-dom's toHaveFocus() matcher and converts its pass/fail\r\n * into a boolean so several candidates can be checked in a single\r\n * \"focus is on ONE of these\" assertion (see the \"outer trap resumes\" test).\r\n */\r\nfunction isFocused(el: HTMLElement): boolean {\r\n try {\r\n expect(el).toHaveFocus();\r\n return true;\r\n } catch {\r\n return false;\r\n }\r\n}\r\n\r\nafterEach(() => {\r\n cleanup();\r\n});\r\n\r\ndescribe(\"useFocusTrap — initial focus\", () => {\r\n test(\"focuses the first focusable element when activated\", async () => {\r\n render(\r\n <Trapped>\r\n <button>First</button>\r\n <button>Second</button>\r\n </Trapped>\r\n );\r\n await waitFor(() => {\r\n expect(screen.getByRole(\"button\", { name: \"First\" })).toHaveFocus();\r\n });\r\n });\r\n\r\n test(\"[autofocus] priority wins over the first focusable\", async () => {\r\n render(\r\n <Trapped>\r\n <button>First</button>\r\n <button autoFocus>Auto</button>\r\n <button>Last</button>\r\n </Trapped>\r\n );\r\n await waitFor(() => {\r\n expect(screen.getByRole(\"button\", { name: \"Auto\" })).toHaveFocus();\r\n });\r\n });\r\n\r\n test(\"[data-autofocus] priority is honoured (alternative attribute)\", async () => {\r\n render(\r\n <Trapped>\r\n <button>First</button>\r\n <button data-autofocus>Marker</button>\r\n <button>Last</button>\r\n </Trapped>\r\n );\r\n await waitFor(() => {\r\n expect(screen.getByRole(\"button\", { name: \"Marker\" })).toHaveFocus();\r\n });\r\n });\r\n\r\n test(\"does not crash when the trap container is empty\", () => {\r\n expect(() =>\r\n render(<Trapped containerProps={{ \"data-testid\": \"empty\" }} />)\r\n ).not.toThrow();\r\n });\r\n});\r\n\r\ndescribe(\"useFocusTrap — Tab cycling\", () => {\r\n test(\"Tab cycles forward and wraps to the first element\", async () => {\r\n render(\r\n <Trapped>\r\n <button>First</button>\r\n <button>Second</button>\r\n <button>Third</button>\r\n </Trapped>\r\n );\r\n await waitFor(() => {\r\n expect(screen.getByRole(\"button\", { name: \"First\" })).toHaveFocus();\r\n });\r\n\r\n await userEvent.tab();\r\n expect(screen.getByRole(\"button\", { name: \"Second\" })).toHaveFocus();\r\n\r\n await userEvent.tab();\r\n expect(screen.getByRole(\"button\", { name: \"Third\" })).toHaveFocus();\r\n\r\n // Wrap from last to first\r\n await userEvent.tab();\r\n expect(screen.getByRole(\"button\", { name: \"First\" })).toHaveFocus();\r\n });\r\n\r\n test(\"Shift+Tab from the first wraps to the last\", async () => {\r\n render(\r\n <Trapped>\r\n <button>First</button>\r\n <button>Second</button>\r\n <button>Last</button>\r\n </Trapped>\r\n );\r\n await waitFor(() => {\r\n expect(screen.getByRole(\"button\", { name: \"First\" })).toHaveFocus();\r\n });\r\n\r\n await userEvent.tab({ shift: true });\r\n expect(screen.getByRole(\"button\", { name: \"Last\" })).toHaveFocus();\r\n });\r\n});\r\n\r\ndescribe(\"useFocusTrap — disabled / aria-hidden filtering\", () => {\r\n test(\"disabled buttons are skipped during cycling\", async () => {\r\n render(\r\n <Trapped>\r\n <button>First</button>\r\n <button disabled>Disabled</button>\r\n <button>Third</button>\r\n </Trapped>\r\n );\r\n await waitFor(() => {\r\n expect(screen.getByRole(\"button\", { name: \"First\" })).toHaveFocus();\r\n });\r\n\r\n // Tab should jump from First → Third, skipping Disabled.\r\n await userEvent.tab();\r\n expect(screen.getByRole(\"button\", { name: \"Third\" })).toHaveFocus();\r\n });\r\n\r\n test(\"[aria-hidden=true] subtree is excluded from the cycle boundary\", async () => {\r\n /* WHY THE aria-hidden SUBTREE IS LAST, AND WHY THIS ASSERTS THE WRAP\r\n *\r\n * This test previously placed the aria-hidden subtree in the MIDDLE and\r\n * expected a single Tab to jump First → Third. It failed, and the hook was\r\n * not at fault: of the three attributes isVisuallyFocusable walks,\r\n * `hidden` and `inert` remove an element from the NATIVE tab order, but\r\n * `aria-hidden` does NOT — per spec it annotates the accessibility tree\r\n * only. useFocusTrap intercepts Tab at the cycle BOUNDARIES (first/last)\r\n * and defers mid-cycle moves to the browser, so a native Tab lands on the\r\n * aria-hidden button no matter what getFocusable() returned.\r\n *\r\n * A focusable control inside aria-hidden=\"true\" is a CONTENT defect (axe\r\n * `aria-hidden-focus`); use `inert` (or `hidden`) to take a subtree out of\r\n * interaction. What the filter genuinely guarantees is that such an element\r\n * is never treated as the cycle's first/last — so the trap never DELIVERS\r\n * focus into it. That is what is asserted here: with the subtree last,\r\n * `last` is still \"Third\", so Tab from Third wraps to First instead of\r\n * proceeding natively into \"Hidden\".\r\n *\r\n * Do NOT restore the mid-cycle form without also converting the hook to\r\n * intercept every Tab — see the boundary-scope note in useFocusTrap.ts. */\r\n render(\r\n <Trapped>\r\n <button>First</button>\r\n <button>Third</button>\r\n <div aria-hidden=\"true\">\r\n <button>Hidden</button>\r\n </div>\r\n </Trapped>\r\n );\r\n await waitFor(() => {\r\n expect(screen.getByRole(\"button\", { name: \"First\" })).toHaveFocus();\r\n });\r\n\r\n await userEvent.tab();\r\n expect(screen.getByRole(\"button\", { name: \"Third\" })).toHaveFocus();\r\n\r\n // \"Third\" is the LAST focusable the trap recognises: the aria-hidden\r\n // button is filtered out, so Tab wraps rather than entering it.\r\n await userEvent.tab();\r\n expect(screen.getByRole(\"button\", { name: \"First\" })).toHaveFocus();\r\n });\r\n});\r\n\r\ndescribe(\"useFocusTrap — nested traps (Batch 3 stack contract)\", () => {\r\n /**\r\n * Nested-trap harness. Outer trap is always-active; inner trap is\r\n * controlled by `innerActive`. When the inner mounts, Tab cycles\r\n * inside it; when the inner unmounts, the outer trap resumes.\r\n */\r\n interface NestedHarnessProps {\r\n innerActive: boolean;\r\n }\r\n\r\n function NestedHarness({ innerActive }: NestedHarnessProps): React.JSX.Element {\r\n return (\r\n <Trapped>\r\n <button>Outer-1</button>\r\n <button>Outer-2</button>\r\n {innerActive && (\r\n <Trapped containerProps={{ \"data-testid\": \"inner\" }}>\r\n <button>Inner-A</button>\r\n <button>Inner-B</button>\r\n </Trapped>\r\n )}\r\n </Trapped>\r\n );\r\n }\r\n\r\n test(\"inner trap takes over Tab cycling when active\", async () => {\r\n const { rerender } = render(<NestedHarness innerActive={false} />);\r\n await waitFor(() => {\r\n expect(screen.getByRole(\"button\", { name: \"Outer-1\" })).toHaveFocus();\r\n });\r\n\r\n // Mount the inner trap — it should grab focus and confine Tab.\r\n rerender(<NestedHarness innerActive={true} />);\r\n await waitFor(() => {\r\n expect(screen.getByRole(\"button\", { name: \"Inner-A\" })).toHaveFocus();\r\n });\r\n\r\n await userEvent.tab();\r\n expect(screen.getByRole(\"button\", { name: \"Inner-B\" })).toHaveFocus();\r\n\r\n // Wrap inside the inner trap, NOT escape to Outer-2.\r\n await userEvent.tab();\r\n expect(screen.getByRole(\"button\", { name: \"Inner-A\" })).toHaveFocus();\r\n });\r\n\r\n test(\"outer trap resumes after inner unmounts\", async () => {\r\n const { rerender } = render(<NestedHarness innerActive={true} />);\r\n await waitFor(() => {\r\n expect(screen.getByRole(\"button\", { name: \"Inner-A\" })).toHaveFocus();\r\n });\r\n\r\n // Unmount inner. Outer trap should resume duty.\r\n rerender(<NestedHarness innerActive={false} />);\r\n\r\n // Tab inside the outer container — must stay inside, not leak to body.\r\n // (We don't assert the exact focused element after rerender because\r\n // restoration depends on whether the previously-focused element is\r\n // still mounted; we DO assert that focus lands on one of the outer\r\n // buttons — isFocused() catches both \"lost to body\" and \"landed\r\n // somewhere unexpected\" in one check, without reading\r\n // document.activeElement directly.)\r\n await userEvent.tab();\r\n const outer1 = screen.getByRole(\"button\", { name: \"Outer-1\" });\r\n const outer2 = screen.getByRole(\"button\", { name: \"Outer-2\" });\r\n expect(isFocused(outer1) || isFocused(outer2)).toBe(true);\r\n });\r\n});\r\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"useFocusTrap.test.js","names":["require","React","_interopRequireWildcard","_react2","_userEvent","_interopRequireDefault","_useFocusTrap","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","realGetClientRects","Element","prototype","getClientRects","beforeAll","rect","x","y","top","left","right","bottom","width","height","toJSON","list","assign","item","afterAll","Trapped","children","active","containerProps","ref","useRef","useFocusTrap","jsx","isFocused","el","expect","toHaveFocus","afterEach","cleanup","describe","test","render","jsxs","waitFor","screen","getByRole","name","autoFocus","not","toThrow","userEvent","tab","shift","disabled","NestedHarness","innerActive","rerender","outer1","outer2","toBe"],"sources":["../../../src/lib/v2/__tests__/useFocusTrap.test.tsx"],"sourcesContent":["import \"@testing-library/jest-dom\";\r\nimport * as React from \"react\";\r\nimport { render, waitFor, cleanup, screen } from \"@testing-library/react\";\r\nimport userEvent from \"@testing-library/user-event\";\r\nimport useFocusTrap from \"../hooks/useFocusTrap\";\r\n\r\n/* ── jsdom LAYOUT SHIM — REQUIRED, NOT A CONVENIENCE ────────────────────────\r\n *\r\n * Without this, EVERY test in this file fails at its first `waitFor`, with focus\r\n * sitting on <body>. The cause is not the hook:\r\n *\r\n * `useFocusTrap.isVisuallyFocusable` rejects an element whose\r\n * `getClientRects()` is empty — a cheap, correct test for `display:none` and\r\n * `visibility:hidden` in a real browser.\r\n *\r\n * jsdom PERFORMS NO LAYOUT. `getClientRects()` returns an empty list for every\r\n * element, always. So the filter discards all candidates, `getFocusable()`\r\n * returns `[]`, nothing is focused, and all eight assertions fail for one\r\n * reason that has nothing to do with focus management.\r\n *\r\n * This shim gives every element a non-zero rect so the visibility filter behaves\r\n * as it does in a browser. It does NOT weaken the tests: the hook's other\r\n * exclusions — `disabled`, `aria-disabled`, and the ancestor walk for `hidden` /\r\n * `aria-hidden` / `inert` — are all ATTRIBUTE-based, work correctly in jsdom, and\r\n * remain fully exercised (see the \"disabled / aria-hidden filtering\" block).\r\n *\r\n * ⚠ Diagnosed during the procuration-portnet-fe certification audit, where these\r\n * eight failures were initially suspected of being a real WCAG R-M.2 breach\r\n * across all consuming modules. They were not. Do NOT \"fix\" this by relaxing the\r\n * rect check in the hook — that check is what stops a trap focusing an invisible\r\n * control in production.\r\n *\r\n * Restored in `afterAll` so the patch cannot leak into other suites. */\r\nconst realGetClientRects = Element.prototype.getClientRects;\r\n\r\nbeforeAll(() => {\r\n Element.prototype.getClientRects = function getClientRects(this: Element) {\r\n const rect: DOMRect = {\r\n x: 0,\r\n y: 0,\r\n top: 0,\r\n left: 0,\r\n right: 10,\r\n bottom: 10,\r\n width: 10,\r\n height: 10,\r\n toJSON: () => ({}),\r\n };\r\n const list = [rect];\r\n return Object.assign(list, {\r\n item: (i: number): DOMRect | null => list[i] ?? null,\r\n }) as unknown as DOMRectList;\r\n };\r\n});\r\n\r\nafterAll(() => {\r\n Element.prototype.getClientRects = realGetClientRects;\r\n});\r\n\r\n/**\r\n * Smoke + contract tests for the Batch 3 useFocusTrap refactor.\r\n *\r\n * Test harness — a minimal trap container component. Defaults to\r\n * active=true so tests don't have to flip props.\r\n */\r\ntype ContainerProps = React.HTMLAttributes<HTMLDivElement> & {\r\n [key: `data-${string}`]: string;\r\n};\r\n\r\ninterface TrappedProps {\r\n children?: React.ReactNode;\r\n active?: boolean;\r\n containerProps?: ContainerProps;\r\n}\r\n\r\nfunction Trapped({\r\n children,\r\n active = true,\r\n containerProps,\r\n}: TrappedProps): React.JSX.Element {\r\n const ref = React.useRef<HTMLDivElement>(null);\r\n useFocusTrap(ref, active);\r\n return (\r\n <div ref={ref} {...containerProps}>\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\n/**\r\n * Returns whether `el` currently has focus, without touching\r\n * document.activeElement directly (testing-library/no-node-access) —\r\n * delegates to jest-dom's toHaveFocus() matcher and converts its pass/fail\r\n * into a boolean so several candidates can be checked in a single\r\n * \"focus is on ONE of these\" assertion (see the \"outer trap resumes\" test).\r\n */\r\nfunction isFocused(el: HTMLElement): boolean {\r\n try {\r\n expect(el).toHaveFocus();\r\n return true;\r\n } catch {\r\n return false;\r\n }\r\n}\r\n\r\nafterEach(() => {\r\n cleanup();\r\n});\r\n\r\ndescribe(\"useFocusTrap — initial focus\", () => {\r\n test(\"focuses the first focusable element when activated\", async () => {\r\n render(\r\n <Trapped>\r\n <button>First</button>\r\n <button>Second</button>\r\n </Trapped>\r\n );\r\n await waitFor(() => {\r\n expect(screen.getByRole(\"button\", { name: \"First\" })).toHaveFocus();\r\n });\r\n });\r\n\r\n test(\"[autofocus] priority wins over the first focusable\", async () => {\r\n render(\r\n <Trapped>\r\n <button>First</button>\r\n <button autoFocus>Auto</button>\r\n <button>Last</button>\r\n </Trapped>\r\n );\r\n await waitFor(() => {\r\n expect(screen.getByRole(\"button\", { name: \"Auto\" })).toHaveFocus();\r\n });\r\n });\r\n\r\n test(\"[data-autofocus] priority is honoured (alternative attribute)\", async () => {\r\n render(\r\n <Trapped>\r\n <button>First</button>\r\n <button data-autofocus>Marker</button>\r\n <button>Last</button>\r\n </Trapped>\r\n );\r\n await waitFor(() => {\r\n expect(screen.getByRole(\"button\", { name: \"Marker\" })).toHaveFocus();\r\n });\r\n });\r\n\r\n test(\"does not crash when the trap container is empty\", () => {\r\n expect(() =>\r\n render(<Trapped containerProps={{ \"data-testid\": \"empty\" }} />)\r\n ).not.toThrow();\r\n });\r\n});\r\n\r\ndescribe(\"useFocusTrap — Tab cycling\", () => {\r\n test(\"Tab cycles forward and wraps to the first element\", async () => {\r\n render(\r\n <Trapped>\r\n <button>First</button>\r\n <button>Second</button>\r\n <button>Third</button>\r\n </Trapped>\r\n );\r\n await waitFor(() => {\r\n expect(screen.getByRole(\"button\", { name: \"First\" })).toHaveFocus();\r\n });\r\n\r\n await userEvent.tab();\r\n expect(screen.getByRole(\"button\", { name: \"Second\" })).toHaveFocus();\r\n\r\n await userEvent.tab();\r\n expect(screen.getByRole(\"button\", { name: \"Third\" })).toHaveFocus();\r\n\r\n // Wrap from last to first\r\n await userEvent.tab();\r\n expect(screen.getByRole(\"button\", { name: \"First\" })).toHaveFocus();\r\n });\r\n\r\n test(\"Shift+Tab from the first wraps to the last\", async () => {\r\n render(\r\n <Trapped>\r\n <button>First</button>\r\n <button>Second</button>\r\n <button>Last</button>\r\n </Trapped>\r\n );\r\n await waitFor(() => {\r\n expect(screen.getByRole(\"button\", { name: \"First\" })).toHaveFocus();\r\n });\r\n\r\n await userEvent.tab({ shift: true });\r\n expect(screen.getByRole(\"button\", { name: \"Last\" })).toHaveFocus();\r\n });\r\n});\r\n\r\ndescribe(\"useFocusTrap — disabled / aria-hidden filtering\", () => {\r\n test(\"disabled buttons are skipped during cycling\", async () => {\r\n render(\r\n <Trapped>\r\n <button>First</button>\r\n <button disabled>Disabled</button>\r\n <button>Third</button>\r\n </Trapped>\r\n );\r\n await waitFor(() => {\r\n expect(screen.getByRole(\"button\", { name: \"First\" })).toHaveFocus();\r\n });\r\n\r\n // Tab should jump from First → Third, skipping Disabled.\r\n await userEvent.tab();\r\n expect(screen.getByRole(\"button\", { name: \"Third\" })).toHaveFocus();\r\n });\r\n\r\n test(\"[aria-hidden=true] subtree is excluded from the cycle boundary\", async () => {\r\n /* WHY THE aria-hidden SUBTREE IS LAST, AND WHY THIS ASSERTS THE WRAP\r\n *\r\n * This test previously placed the aria-hidden subtree in the MIDDLE and\r\n * expected a single Tab to jump First → Third. It failed, and the hook was\r\n * not at fault: of the three attributes isVisuallyFocusable walks,\r\n * `hidden` and `inert` remove an element from the NATIVE tab order, but\r\n * `aria-hidden` does NOT — per spec it annotates the accessibility tree\r\n * only. useFocusTrap intercepts Tab at the cycle BOUNDARIES (first/last)\r\n * and defers mid-cycle moves to the browser, so a native Tab lands on the\r\n * aria-hidden button no matter what getFocusable() returned.\r\n *\r\n * A focusable control inside aria-hidden=\"true\" is a CONTENT defect (axe\r\n * `aria-hidden-focus`); use `inert` (or `hidden`) to take a subtree out of\r\n * interaction. What the filter genuinely guarantees is that such an element\r\n * is never treated as the cycle's first/last — so the trap never DELIVERS\r\n * focus into it. That is what is asserted here: with the subtree last,\r\n * `last` is still \"Third\", so Tab from Third wraps to First instead of\r\n * proceeding natively into \"Hidden\".\r\n *\r\n * Do NOT restore the mid-cycle form without also converting the hook to\r\n * intercept every Tab — see the boundary-scope note in useFocusTrap.ts. */\r\n render(\r\n <Trapped>\r\n <button>First</button>\r\n <button>Third</button>\r\n <div aria-hidden=\"true\">\r\n <button>Hidden</button>\r\n </div>\r\n </Trapped>\r\n );\r\n await waitFor(() => {\r\n expect(screen.getByRole(\"button\", { name: \"First\" })).toHaveFocus();\r\n });\r\n\r\n await userEvent.tab();\r\n expect(screen.getByRole(\"button\", { name: \"Third\" })).toHaveFocus();\r\n\r\n // \"Third\" is the LAST focusable the trap recognises: the aria-hidden\r\n // button is filtered out, so Tab wraps rather than entering it.\r\n await userEvent.tab();\r\n expect(screen.getByRole(\"button\", { name: \"First\" })).toHaveFocus();\r\n });\r\n});\r\n\r\ndescribe(\"useFocusTrap — nested traps (Batch 3 stack contract)\", () => {\r\n /**\r\n * Nested-trap harness. Outer trap is always-active; inner trap is\r\n * controlled by `innerActive`. When the inner mounts, Tab cycles\r\n * inside it; when the inner unmounts, the outer trap resumes.\r\n */\r\n interface NestedHarnessProps {\r\n innerActive: boolean;\r\n }\r\n\r\n function NestedHarness({ innerActive }: NestedHarnessProps): React.JSX.Element {\r\n return (\r\n <Trapped>\r\n <button>Outer-1</button>\r\n <button>Outer-2</button>\r\n {innerActive && (\r\n <Trapped containerProps={{ \"data-testid\": \"inner\" }}>\r\n <button>Inner-A</button>\r\n <button>Inner-B</button>\r\n </Trapped>\r\n )}\r\n </Trapped>\r\n );\r\n }\r\n\r\n test(\"inner trap takes over Tab cycling when active\", async () => {\r\n const { rerender } = render(<NestedHarness innerActive={false} />);\r\n await waitFor(() => {\r\n expect(screen.getByRole(\"button\", { name: \"Outer-1\" })).toHaveFocus();\r\n });\r\n\r\n // Mount the inner trap — it should grab focus and confine Tab.\r\n rerender(<NestedHarness innerActive={true} />);\r\n await waitFor(() => {\r\n expect(screen.getByRole(\"button\", { name: \"Inner-A\" })).toHaveFocus();\r\n });\r\n\r\n await userEvent.tab();\r\n expect(screen.getByRole(\"button\", { name: \"Inner-B\" })).toHaveFocus();\r\n\r\n // Wrap inside the inner trap, NOT escape to Outer-2.\r\n await userEvent.tab();\r\n expect(screen.getByRole(\"button\", { name: \"Inner-A\" })).toHaveFocus();\r\n });\r\n\r\n test(\"outer trap resumes after inner unmounts\", async () => {\r\n const { rerender } = render(<NestedHarness innerActive={true} />);\r\n await waitFor(() => {\r\n expect(screen.getByRole(\"button\", { name: \"Inner-A\" })).toHaveFocus();\r\n });\r\n\r\n // Unmount inner. Outer trap should resume duty.\r\n rerender(<NestedHarness innerActive={false} />);\r\n\r\n // Tab inside the outer container — must stay inside, not leak to body.\r\n // (We don't assert the exact focused element after rerender because\r\n // restoration depends on whether the previously-focused element is\r\n // still mounted; we DO assert that focus lands on one of the outer\r\n // buttons — isFocused() catches both \"lost to body\" and \"landed\r\n // somewhere unexpected\" in one check, without reading\r\n // document.activeElement directly.)\r\n await userEvent.tab();\r\n const outer1 = screen.getByRole(\"button\", { name: \"Outer-1\" });\r\n const outer2 = screen.getByRole(\"button\", { name: \"Outer-2\" });\r\n expect(isFocused(outer1) || isFocused(outer2)).toBe(true);\r\n });\r\n});\r\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
require("@testing-library/jest-dom");
|
|
4
|
+
var _react = require("@testing-library/react");
|
|
5
|
+
var _usePrefersReducedMotion = _interopRequireWildcard(require("../hooks/usePrefersReducedMotion"));
|
|
6
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
7
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
8
|
+
/* ── Why a hand-rolled MediaQueryList ───────────────────────────────────────
|
|
9
|
+
*
|
|
10
|
+
* jsdom implements `window.matchMedia`, but it does not EVALUATE the query: it
|
|
11
|
+
* answers `matches: false` for everything and never emits a `change` event. So
|
|
12
|
+
* jsdom can tell us the hook does not crash, and nothing else — not the value
|
|
13
|
+
* it reads, and above all not the subscription, which is the entire reason the
|
|
14
|
+
* hook exists (see its header: every host copy was a non-subscribing snapshot).
|
|
15
|
+
*
|
|
16
|
+
* The fake below is therefore the subject under test as much as the hook is: it
|
|
17
|
+
* records the query string, lets a test flip `matches`, and emits `change` the
|
|
18
|
+
* way a browser does. */
|
|
19
|
+
|
|
20
|
+
const createFakeMql = initial => {
|
|
21
|
+
const listeners = new Set();
|
|
22
|
+
const mql = {
|
|
23
|
+
media: "",
|
|
24
|
+
matches: initial,
|
|
25
|
+
listeners,
|
|
26
|
+
addEventListener: jest.fn((type, listener) => {
|
|
27
|
+
if (type === "change") listeners.add(listener);
|
|
28
|
+
}),
|
|
29
|
+
removeEventListener: jest.fn((type, listener) => {
|
|
30
|
+
if (type === "change") listeners.delete(listener);
|
|
31
|
+
}),
|
|
32
|
+
emit: next => {
|
|
33
|
+
mql.matches = next;
|
|
34
|
+
listeners.forEach(listener => listener({
|
|
35
|
+
matches: next
|
|
36
|
+
}));
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
return mql;
|
|
40
|
+
};
|
|
41
|
+
function Probe() {
|
|
42
|
+
const reduced = (0, _usePrefersReducedMotion.default)();
|
|
43
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
|
|
44
|
+
"data-testid": "value",
|
|
45
|
+
children: reduced ? "reduced" : "full"
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
const realMatchMedia = window.matchMedia;
|
|
49
|
+
afterEach(() => {
|
|
50
|
+
(0, _react.cleanup)();
|
|
51
|
+
Object.defineProperty(window, "matchMedia", {
|
|
52
|
+
configurable: true,
|
|
53
|
+
writable: true,
|
|
54
|
+
value: realMatchMedia
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
const installMatchMedia = mql => {
|
|
58
|
+
const impl = jest.fn(query => {
|
|
59
|
+
if (mql === null) throw new Error("matchMedia should not have been called");
|
|
60
|
+
mql.media = query;
|
|
61
|
+
return mql;
|
|
62
|
+
});
|
|
63
|
+
Object.defineProperty(window, "matchMedia", {
|
|
64
|
+
configurable: true,
|
|
65
|
+
writable: true,
|
|
66
|
+
value: impl
|
|
67
|
+
});
|
|
68
|
+
return impl;
|
|
69
|
+
};
|
|
70
|
+
describe("usePrefersReducedMotion", () => {
|
|
71
|
+
it("reads the preference on first render", () => {
|
|
72
|
+
const mql = createFakeMql(true);
|
|
73
|
+
installMatchMedia(mql);
|
|
74
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(Probe, {}));
|
|
75
|
+
expect(_react.screen.getByTestId("value")).toHaveTextContent("reduced");
|
|
76
|
+
expect(mql.media).toBe(_usePrefersReducedMotion.PREFERS_REDUCED_MOTION_QUERY);
|
|
77
|
+
});
|
|
78
|
+
it("returns false when no preference is stated", () => {
|
|
79
|
+
installMatchMedia(createFakeMql(false));
|
|
80
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(Probe, {}));
|
|
81
|
+
expect(_react.screen.getByTestId("value")).toHaveTextContent("full");
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
/* THE REGRESSION THIS FILE EXISTS FOR — R-7.5 is present tense. The helper
|
|
85
|
+
* this hook replaces read `matches` once during render, so a user enabling
|
|
86
|
+
* the preference mid-session kept every animation until an unrelated
|
|
87
|
+
* re-render. */
|
|
88
|
+
it("re-renders when the preference changes while mounted", () => {
|
|
89
|
+
const mql = createFakeMql(false);
|
|
90
|
+
installMatchMedia(mql);
|
|
91
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(Probe, {}));
|
|
92
|
+
expect(_react.screen.getByTestId("value")).toHaveTextContent("full");
|
|
93
|
+
(0, _react.act)(() => mql.emit(true));
|
|
94
|
+
expect(_react.screen.getByTestId("value")).toHaveTextContent("reduced");
|
|
95
|
+
(0, _react.act)(() => mql.emit(false));
|
|
96
|
+
expect(_react.screen.getByTestId("value")).toHaveTextContent("full");
|
|
97
|
+
});
|
|
98
|
+
it("unsubscribes on unmount", () => {
|
|
99
|
+
const mql = createFakeMql(false);
|
|
100
|
+
installMatchMedia(mql);
|
|
101
|
+
const {
|
|
102
|
+
unmount
|
|
103
|
+
} = (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(Probe, {}));
|
|
104
|
+
expect(mql.listeners.size).toBe(1);
|
|
105
|
+
unmount();
|
|
106
|
+
expect(mql.listeners.size).toBe(0);
|
|
107
|
+
expect(mql.removeEventListener).toHaveBeenCalled();
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
/* An environment without `matchMedia` must render, not throw: the hook is
|
|
111
|
+
* consumed by module code that also runs in tests and tooling where the
|
|
112
|
+
* method is absent. */
|
|
113
|
+
it("falls back to false when matchMedia is unavailable", () => {
|
|
114
|
+
Object.defineProperty(window, "matchMedia", {
|
|
115
|
+
configurable: true,
|
|
116
|
+
writable: true,
|
|
117
|
+
value: undefined
|
|
118
|
+
});
|
|
119
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(Probe, {}));
|
|
120
|
+
expect(_react.screen.getByTestId("value")).toHaveTextContent("full");
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
//# sourceMappingURL=usePrefersReducedMotion.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePrefersReducedMotion.test.js","names":["require","_react","_usePrefersReducedMotion","_interopRequireWildcard","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","createFakeMql","initial","listeners","Set","mql","media","matches","addEventListener","jest","fn","type","listener","add","removeEventListener","delete","emit","next","forEach","Probe","reduced","usePrefersReducedMotion","jsx","children","realMatchMedia","window","matchMedia","afterEach","cleanup","configurable","writable","value","installMatchMedia","impl","query","Error","describe","it","render","expect","screen","getByTestId","toHaveTextContent","toBe","PREFERS_REDUCED_MOTION_QUERY","act","unmount","size","toHaveBeenCalled","undefined"],"sources":["../../../src/lib/v2/__tests__/usePrefersReducedMotion.test.tsx"],"sourcesContent":["import \"@testing-library/jest-dom\";\r\nimport { render, screen, act, cleanup } from \"@testing-library/react\";\r\nimport usePrefersReducedMotion, {\r\n PREFERS_REDUCED_MOTION_QUERY,\r\n} from \"../hooks/usePrefersReducedMotion\";\r\n\r\n/* ── Why a hand-rolled MediaQueryList ───────────────────────────────────────\r\n *\r\n * jsdom implements `window.matchMedia`, but it does not EVALUATE the query: it\r\n * answers `matches: false` for everything and never emits a `change` event. So\r\n * jsdom can tell us the hook does not crash, and nothing else — not the value\r\n * it reads, and above all not the subscription, which is the entire reason the\r\n * hook exists (see its header: every host copy was a non-subscribing snapshot).\r\n *\r\n * The fake below is therefore the subject under test as much as the hook is: it\r\n * records the query string, lets a test flip `matches`, and emits `change` the\r\n * way a browser does. */\r\ntype Listener = (event: MediaQueryListEvent) => void;\r\n\r\ninterface FakeMql {\r\n media: string;\r\n matches: boolean;\r\n listeners: Set<Listener>;\r\n addEventListener: jest.Mock;\r\n removeEventListener: jest.Mock;\r\n /** Flips the preference and notifies, as the platform would. */\r\n emit: (next: boolean) => void;\r\n}\r\n\r\nconst createFakeMql = (initial: boolean): FakeMql => {\r\n const listeners = new Set<Listener>();\r\n const mql: FakeMql = {\r\n media: \"\",\r\n matches: initial,\r\n listeners,\r\n addEventListener: jest.fn((type: string, listener: Listener) => {\r\n if (type === \"change\") listeners.add(listener);\r\n }),\r\n removeEventListener: jest.fn((type: string, listener: Listener) => {\r\n if (type === \"change\") listeners.delete(listener);\r\n }),\r\n emit: (next: boolean) => {\r\n mql.matches = next;\r\n listeners.forEach((listener) =>\r\n listener({ matches: next } as MediaQueryListEvent)\r\n );\r\n },\r\n };\r\n return mql;\r\n};\r\n\r\nfunction Probe() {\r\n const reduced = usePrefersReducedMotion();\r\n return <span data-testid=\"value\">{reduced ? \"reduced\" : \"full\"}</span>;\r\n}\r\n\r\nconst realMatchMedia = window.matchMedia;\r\n\r\nafterEach(() => {\r\n cleanup();\r\n Object.defineProperty(window, \"matchMedia\", {\r\n configurable: true,\r\n writable: true,\r\n value: realMatchMedia,\r\n });\r\n});\r\n\r\nconst installMatchMedia = (mql: FakeMql | null): jest.Mock => {\r\n const impl = jest.fn((query: string) => {\r\n if (mql === null) throw new Error(\"matchMedia should not have been called\");\r\n mql.media = query;\r\n return mql as unknown as MediaQueryList;\r\n });\r\n Object.defineProperty(window, \"matchMedia\", {\r\n configurable: true,\r\n writable: true,\r\n value: impl,\r\n });\r\n return impl;\r\n};\r\n\r\ndescribe(\"usePrefersReducedMotion\", () => {\r\n it(\"reads the preference on first render\", () => {\r\n const mql = createFakeMql(true);\r\n installMatchMedia(mql);\r\n\r\n render(<Probe />);\r\n\r\n expect(screen.getByTestId(\"value\")).toHaveTextContent(\"reduced\");\r\n expect(mql.media).toBe(PREFERS_REDUCED_MOTION_QUERY);\r\n });\r\n\r\n it(\"returns false when no preference is stated\", () => {\r\n installMatchMedia(createFakeMql(false));\r\n\r\n render(<Probe />);\r\n\r\n expect(screen.getByTestId(\"value\")).toHaveTextContent(\"full\");\r\n });\r\n\r\n /* THE REGRESSION THIS FILE EXISTS FOR — R-7.5 is present tense. The helper\r\n * this hook replaces read `matches` once during render, so a user enabling\r\n * the preference mid-session kept every animation until an unrelated\r\n * re-render. */\r\n it(\"re-renders when the preference changes while mounted\", () => {\r\n const mql = createFakeMql(false);\r\n installMatchMedia(mql);\r\n\r\n render(<Probe />);\r\n expect(screen.getByTestId(\"value\")).toHaveTextContent(\"full\");\r\n\r\n act(() => mql.emit(true));\r\n expect(screen.getByTestId(\"value\")).toHaveTextContent(\"reduced\");\r\n\r\n act(() => mql.emit(false));\r\n expect(screen.getByTestId(\"value\")).toHaveTextContent(\"full\");\r\n });\r\n\r\n it(\"unsubscribes on unmount\", () => {\r\n const mql = createFakeMql(false);\r\n installMatchMedia(mql);\r\n\r\n const { unmount } = render(<Probe />);\r\n expect(mql.listeners.size).toBe(1);\r\n\r\n unmount();\r\n expect(mql.listeners.size).toBe(0);\r\n expect(mql.removeEventListener).toHaveBeenCalled();\r\n });\r\n\r\n /* An environment without `matchMedia` must render, not throw: the hook is\r\n * consumed by module code that also runs in tests and tooling where the\r\n * method is absent. */\r\n it(\"falls back to false when matchMedia is unavailable\", () => {\r\n Object.defineProperty(window, \"matchMedia\", {\r\n configurable: true,\r\n writable: true,\r\n value: undefined,\r\n });\r\n\r\n render(<Probe />);\r\n\r\n expect(screen.getByTestId(\"value\")).toHaveTextContent(\"full\");\r\n });\r\n});\r\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
4
3
|
Object.defineProperty(exports, "__esModule", {
|
|
5
4
|
value: true
|
|
6
5
|
});
|
|
7
|
-
exports
|
|
6
|
+
exports.default = void 0;
|
|
8
7
|
var React = _interopRequireWildcard(require("react"));
|
|
9
8
|
var _ExpandMore = _interopRequireDefault(require("@mui/icons-material/ExpandMore"));
|
|
10
9
|
var _Box = _interopRequireDefault(require("@mui/material/Box"));
|
|
11
10
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
14
13
|
/**
|
|
15
14
|
* Accordion — Portnet UI v2
|
|
16
15
|
*
|
|
@@ -45,71 +44,48 @@ var _excluded = ["children", "defaultOpen", "open", "onChange", "mode", "sx"],
|
|
|
45
44
|
* "single" — only one item open at a time
|
|
46
45
|
* (mutually-exclusive accordion)
|
|
47
46
|
*/
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
function
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
var AccordionContext = /*#__PURE__*/React.createContext(null);
|
|
65
|
-
function Accordion(_ref) {
|
|
66
|
-
var children = _ref.children,
|
|
67
|
-
defaultOpen = _ref.defaultOpen,
|
|
68
|
-
open = _ref.open,
|
|
69
|
-
onChange = _ref.onChange,
|
|
70
|
-
_ref$mode = _ref.mode,
|
|
71
|
-
mode = _ref$mode === void 0 ? "multiple" : _ref$mode,
|
|
72
|
-
sx = _ref.sx,
|
|
73
|
-
rest = _objectWithoutProperties(_ref, _excluded);
|
|
74
|
-
var controlled = open !== undefined;
|
|
75
|
-
var _React$useState = React.useState(function () {
|
|
76
|
-
return new Set(defaultOpen || []);
|
|
77
|
-
}),
|
|
78
|
-
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
79
|
-
internalOpen = _React$useState2[0],
|
|
80
|
-
setInternalOpen = _React$useState2[1];
|
|
81
|
-
var openSet = React.useMemo(function () {
|
|
82
|
-
return controlled ? new Set(open) : internalOpen;
|
|
83
|
-
}, [controlled, open, internalOpen]);
|
|
84
|
-
var toggle = React.useCallback(function (id) {
|
|
85
|
-
var next = new Set(openSet);
|
|
47
|
+
|
|
48
|
+
const AccordionContext = /*#__PURE__*/React.createContext(null);
|
|
49
|
+
function Accordion({
|
|
50
|
+
children,
|
|
51
|
+
defaultOpen,
|
|
52
|
+
open,
|
|
53
|
+
onChange,
|
|
54
|
+
mode = "multiple",
|
|
55
|
+
sx,
|
|
56
|
+
...rest
|
|
57
|
+
}) {
|
|
58
|
+
const controlled = open !== undefined;
|
|
59
|
+
const [internalOpen, setInternalOpen] = React.useState(() => new Set(defaultOpen || []));
|
|
60
|
+
const openSet = React.useMemo(() => controlled ? new Set(open) : internalOpen, [controlled, open, internalOpen]);
|
|
61
|
+
const toggle = React.useCallback(id => {
|
|
62
|
+
const next = new Set(openSet);
|
|
86
63
|
if (next.has(id)) {
|
|
87
|
-
next
|
|
64
|
+
next.delete(id);
|
|
88
65
|
} else {
|
|
89
66
|
if (mode === "single") next.clear();
|
|
90
67
|
next.add(id);
|
|
91
68
|
}
|
|
92
|
-
|
|
69
|
+
const nextArr = Array.from(next);
|
|
93
70
|
if (!controlled) setInternalOpen(next);
|
|
94
|
-
onChange
|
|
71
|
+
onChange?.(nextArr);
|
|
95
72
|
}, [openSet, mode, controlled, onChange]);
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
};
|
|
101
|
-
}, [openSet, toggle]);
|
|
73
|
+
const ctx = React.useMemo(() => ({
|
|
74
|
+
openSet,
|
|
75
|
+
toggle
|
|
76
|
+
}), [openSet, toggle]);
|
|
102
77
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(AccordionContext.Provider, {
|
|
103
78
|
value: ctx,
|
|
104
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box
|
|
105
|
-
sx:
|
|
79
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
|
|
80
|
+
sx: {
|
|
106
81
|
display: "flex",
|
|
107
82
|
flexDirection: "column",
|
|
108
|
-
gap: "var(--s-2)"
|
|
109
|
-
|
|
110
|
-
|
|
83
|
+
gap: "var(--s-2)",
|
|
84
|
+
...sx
|
|
85
|
+
},
|
|
86
|
+
...rest,
|
|
111
87
|
children: children
|
|
112
|
-
})
|
|
88
|
+
})
|
|
113
89
|
});
|
|
114
90
|
}
|
|
115
91
|
|
|
@@ -122,33 +98,34 @@ function Accordion(_ref) {
|
|
|
122
98
|
// context state and is never meant to be re-parented or native-name-grouped,
|
|
123
99
|
// so neither should be an externally settable prop.
|
|
124
100
|
|
|
125
|
-
function AccordionItem(
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
101
|
+
function AccordionItem({
|
|
102
|
+
id,
|
|
103
|
+
title,
|
|
104
|
+
badge,
|
|
105
|
+
icon,
|
|
106
|
+
children,
|
|
107
|
+
sx,
|
|
108
|
+
...rest
|
|
109
|
+
}) {
|
|
110
|
+
const ctx = React.useContext(AccordionContext);
|
|
134
111
|
if (!ctx) {
|
|
135
112
|
throw new Error("Accordion.Item must be rendered inside <Accordion>.");
|
|
136
113
|
}
|
|
137
|
-
|
|
114
|
+
const isOpen = ctx.openSet.has(id);
|
|
138
115
|
|
|
139
116
|
/* React's controlled <details>/open is fiddly — we use the native
|
|
140
117
|
* element but intercept the click on the summary, preventing the
|
|
141
118
|
* default toggle so our state stays the single source of truth. */
|
|
142
|
-
|
|
119
|
+
const handleClick = e => {
|
|
143
120
|
e.preventDefault();
|
|
144
121
|
ctx.toggle(id);
|
|
145
122
|
};
|
|
146
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box
|
|
123
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
|
|
147
124
|
component: "details"
|
|
148
125
|
// We re-render with the boolean so React/DOM stay in sync.
|
|
149
126
|
,
|
|
150
127
|
open: isOpen || undefined,
|
|
151
|
-
sx:
|
|
128
|
+
sx: {
|
|
152
129
|
border: "1px solid var(--border)",
|
|
153
130
|
borderRadius: "var(--r-md)",
|
|
154
131
|
background: "var(--surface)",
|
|
@@ -159,10 +136,11 @@ function AccordionItem(_ref2) {
|
|
|
159
136
|
},
|
|
160
137
|
"& > summary": {
|
|
161
138
|
listStyle: "none"
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
139
|
+
},
|
|
140
|
+
...sx
|
|
141
|
+
},
|
|
142
|
+
...rest,
|
|
143
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
|
|
166
144
|
component: "summary",
|
|
167
145
|
onClick: handleClick,
|
|
168
146
|
sx: {
|
|
@@ -181,7 +159,7 @@ function AccordionItem(_ref2) {
|
|
|
181
159
|
outlineOffset: "var(--pui-outline-offset)"
|
|
182
160
|
}
|
|
183
161
|
},
|
|
184
|
-
children: [icon && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box
|
|
162
|
+
children: [icon && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
|
|
185
163
|
"aria-hidden": "true",
|
|
186
164
|
sx: {
|
|
187
165
|
color: "var(--fg-muted)",
|
|
@@ -191,13 +169,13 @@ function AccordionItem(_ref2) {
|
|
|
191
169
|
}
|
|
192
170
|
},
|
|
193
171
|
children: icon
|
|
194
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box
|
|
172
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
|
|
195
173
|
sx: {
|
|
196
174
|
flex: 1,
|
|
197
175
|
minWidth: 0
|
|
198
176
|
},
|
|
199
177
|
children: title
|
|
200
|
-
}), badge != null && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box
|
|
178
|
+
}), badge != null && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
|
|
201
179
|
sx: {
|
|
202
180
|
fontSize: "var(--text-xs)",
|
|
203
181
|
fontWeight: "var(--fw-medium)",
|
|
@@ -207,7 +185,7 @@ function AccordionItem(_ref2) {
|
|
|
207
185
|
padding: "2px 8px"
|
|
208
186
|
},
|
|
209
187
|
children: badge
|
|
210
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box
|
|
188
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
|
|
211
189
|
"aria-hidden": "true",
|
|
212
190
|
sx: {
|
|
213
191
|
display: "inline-flex",
|
|
@@ -221,18 +199,18 @@ function AccordionItem(_ref2) {
|
|
|
221
199
|
transition: "none"
|
|
222
200
|
}
|
|
223
201
|
},
|
|
224
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ExpandMore
|
|
202
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ExpandMore.default, {})
|
|
225
203
|
})]
|
|
226
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box
|
|
204
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
|
|
227
205
|
sx: {
|
|
228
206
|
padding: "var(--s-2) var(--s-4) var(--s-4)",
|
|
229
207
|
borderTop: "1px solid var(--border-subtle, var(--border))"
|
|
230
208
|
},
|
|
231
209
|
children: children
|
|
232
210
|
})]
|
|
233
|
-
})
|
|
211
|
+
});
|
|
234
212
|
}
|
|
235
|
-
var _default = exports
|
|
213
|
+
var _default = exports.default = Object.assign(Accordion, {
|
|
236
214
|
Item: AccordionItem
|
|
237
215
|
});
|
|
238
216
|
//# sourceMappingURL=Accordion.js.map
|