@portnet/ui 6.0.1 → 6.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +737 -0
- package/dist/esm/index.js +90 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/v2/__tests__/AppMain.test.js +130 -0
- package/dist/esm/v2/__tests__/AppMain.test.js.map +1 -0
- package/dist/esm/v2/__tests__/ChartFigure.test.js +180 -0
- package/dist/esm/v2/__tests__/ChartFigure.test.js.map +1 -0
- package/dist/esm/v2/__tests__/DataGridRowActionsPropagation.test.js +150 -0
- package/dist/esm/v2/__tests__/DataGridRowActionsPropagation.test.js.map +1 -0
- package/dist/esm/v2/__tests__/DrawerTactileTargets.test.js +93 -0
- package/dist/esm/v2/__tests__/DrawerTactileTargets.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FieldError.test.js +71 -39
- package/dist/esm/v2/__tests__/FieldError.test.js.map +1 -1
- package/dist/esm/v2/__tests__/FieldNaming.test.js +160 -0
- package/dist/esm/v2/__tests__/FieldNaming.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FieldWidth.test.js +146 -0
- package/dist/esm/v2/__tests__/FieldWidth.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FileCard.test.js +18 -18
- package/dist/esm/v2/__tests__/FileCard.test.js.map +1 -1
- package/dist/esm/v2/__tests__/FormikCheckbox.test.js +173 -0
- package/dist/esm/v2/__tests__/FormikCheckbox.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js +236 -0
- package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FormikDisplayWidth.test.js +101 -0
- package/dist/esm/v2/__tests__/FormikDisplayWidth.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FormikRadioGroup.test.js +299 -0
- package/dist/esm/v2/__tests__/FormikRadioGroup.test.js.map +1 -0
- package/dist/esm/v2/__tests__/MobileRowCard.test.js +44 -43
- package/dist/esm/v2/__tests__/MobileRowCard.test.js.map +1 -1
- package/dist/esm/v2/__tests__/PreviewDrawer.test.js +165 -0
- package/dist/esm/v2/__tests__/PreviewDrawer.test.js.map +1 -0
- package/dist/esm/v2/__tests__/ReferentielFieldContainer.test.js +156 -0
- package/dist/esm/v2/__tests__/ReferentielFieldContainer.test.js.map +1 -0
- package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js +37 -52
- package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js.map +1 -1
- package/dist/esm/v2/__tests__/apiError.test.js +50 -69
- package/dist/esm/v2/__tests__/apiError.test.js.map +1 -1
- package/dist/esm/v2/__tests__/banned-patterns.test.js +41 -122
- package/dist/esm/v2/__tests__/banned-patterns.test.js.map +1 -1
- package/dist/esm/v2/__tests__/chart-palette.test.js +204 -0
- package/dist/esm/v2/__tests__/chart-palette.test.js.map +1 -0
- package/dist/esm/v2/__tests__/contrast-palette.test.js +42 -74
- package/dist/esm/v2/__tests__/contrast-palette.test.js.map +1 -1
- package/dist/esm/v2/__tests__/cssVariables.test.js +44 -51
- package/dist/esm/v2/__tests__/cssVariables.test.js.map +1 -1
- package/dist/esm/v2/__tests__/fileValidation.test.js +134 -0
- package/dist/esm/v2/__tests__/fileValidation.test.js.map +1 -0
- package/dist/esm/v2/__tests__/filterCriteria.test.js +321 -0
- package/dist/esm/v2/__tests__/filterCriteria.test.js.map +1 -0
- package/dist/esm/v2/__tests__/fmtDate.test.js +68 -0
- package/dist/esm/v2/__tests__/fmtDate.test.js.map +1 -0
- package/dist/esm/v2/__tests__/gap-leakage-refonte.test.js +218 -0
- package/dist/esm/v2/__tests__/gap-leakage-refonte.test.js.map +1 -0
- package/dist/esm/v2/__tests__/labels-merge.test.js +17 -22
- package/dist/esm/v2/__tests__/labels-merge.test.js.map +1 -1
- package/dist/esm/v2/__tests__/locale-fallback.test.js +35 -40
- package/dist/esm/v2/__tests__/locale-fallback.test.js.map +1 -1
- package/dist/esm/v2/__tests__/reviveSavedCriteria.test.js +143 -0
- package/dist/esm/v2/__tests__/reviveSavedCriteria.test.js.map +1 -0
- package/dist/esm/v2/__tests__/rowActions.test.js +182 -0
- package/dist/esm/v2/__tests__/rowActions.test.js.map +1 -0
- package/dist/esm/v2/__tests__/useFocusOnRouteChange.test.js +155 -0
- package/dist/esm/v2/__tests__/useFocusOnRouteChange.test.js.map +1 -0
- package/dist/esm/v2/__tests__/useFocusTrap.test.js +266 -402
- package/dist/esm/v2/__tests__/useFocusTrap.test.js.map +1 -1
- package/dist/esm/v2/__tests__/usePrefersReducedMotion.test.js +120 -0
- package/dist/esm/v2/__tests__/usePrefersReducedMotion.test.js.map +1 -0
- package/dist/esm/v2/components/Accordion.js +48 -70
- package/dist/esm/v2/components/Accordion.js.map +1 -1
- package/dist/esm/v2/components/ActionStrip.js +31 -43
- package/dist/esm/v2/components/ActionStrip.js.map +1 -1
- package/dist/esm/v2/components/Banner.js +25 -22
- package/dist/esm/v2/components/Banner.js.map +1 -1
- package/dist/esm/v2/components/Busy.js +14 -19
- package/dist/esm/v2/components/Busy.js.map +1 -1
- package/dist/esm/v2/components/Button.js +34 -45
- package/dist/esm/v2/components/Button.js.map +1 -1
- package/dist/esm/v2/components/CategoryTag.js +44 -27
- package/dist/esm/v2/components/CategoryTag.js.map +1 -1
- package/dist/esm/v2/components/Checkbox.js +32 -38
- package/dist/esm/v2/components/Checkbox.js.map +1 -1
- package/dist/esm/v2/components/Chip.js +23 -36
- package/dist/esm/v2/components/Chip.js.map +1 -1
- package/dist/esm/v2/components/Combobox.js +112 -136
- package/dist/esm/v2/components/Combobox.js.map +1 -1
- package/dist/esm/v2/components/CommandPalette.js +113 -198
- package/dist/esm/v2/components/CommandPalette.js.map +1 -1
- package/dist/esm/v2/components/ConfirmDialog.js +36 -45
- package/dist/esm/v2/components/ConfirmDialog.js.map +1 -1
- package/dist/esm/v2/components/DatePicker.js +78 -81
- package/dist/esm/v2/components/DatePicker.js.map +1 -1
- package/dist/esm/v2/components/DateRangePicker.js +63 -74
- package/dist/esm/v2/components/DateRangePicker.js.map +1 -1
- package/dist/esm/v2/components/DateTimePicker.js +118 -90
- package/dist/esm/v2/components/DateTimePicker.js.map +1 -1
- package/dist/esm/v2/components/Drawer.js +71 -65
- package/dist/esm/v2/components/Drawer.js.map +1 -1
- package/dist/esm/v2/components/Dropzone.js +130 -177
- package/dist/esm/v2/components/Dropzone.js.map +1 -1
- package/dist/esm/v2/components/EmptyState.js +9 -9
- package/dist/esm/v2/components/EmptyState.js.map +1 -1
- package/dist/esm/v2/components/FavoriteToggle.js +24 -33
- package/dist/esm/v2/components/FavoriteToggle.js.map +1 -1
- package/dist/esm/v2/components/Field.js +210 -52
- package/dist/esm/v2/components/Field.js.map +1 -1
- package/dist/esm/v2/components/FieldError.js +9 -13
- package/dist/esm/v2/components/FieldError.js.map +1 -1
- package/dist/esm/v2/components/FieldHelp.js +28 -49
- package/dist/esm/v2/components/FieldHelp.js.map +1 -1
- package/dist/esm/v2/components/FileCard.js +14 -19
- package/dist/esm/v2/components/FileCard.js.map +1 -1
- package/dist/esm/v2/components/FilterTab.js +22 -31
- package/dist/esm/v2/components/FilterTab.js.map +1 -1
- package/dist/esm/v2/components/ForbiddenPage.js +28 -8
- package/dist/esm/v2/components/ForbiddenPage.js.map +1 -1
- package/dist/esm/v2/components/FormGrid.js +48 -54
- package/dist/esm/v2/components/FormGrid.js.map +1 -1
- package/dist/esm/v2/components/FormikDisplay.js +98 -24
- package/dist/esm/v2/components/FormikDisplay.js.map +1 -1
- package/dist/esm/v2/components/Input.js +75 -34
- package/dist/esm/v2/components/Input.js.map +1 -1
- package/dist/esm/v2/components/KPICard.js +42 -51
- package/dist/esm/v2/components/KPICard.js.map +1 -1
- package/dist/esm/v2/components/KPIStrip.js +9 -15
- package/dist/esm/v2/components/KPIStrip.js.map +1 -1
- package/dist/esm/v2/components/KV.js +16 -23
- package/dist/esm/v2/components/KV.js.map +1 -1
- package/dist/esm/v2/components/KVGrid.js +15 -23
- package/dist/esm/v2/components/KVGrid.js.map +1 -1
- package/dist/esm/v2/components/Layout.js +81 -117
- package/dist/esm/v2/components/Layout.js.map +1 -1
- package/dist/esm/v2/components/MobileRowCard.js +64 -75
- package/dist/esm/v2/components/MobileRowCard.js.map +1 -1
- package/dist/esm/v2/components/Modal.js +44 -53
- package/dist/esm/v2/components/Modal.js.map +1 -1
- package/dist/esm/v2/components/NetworkErrorPage.js +28 -11
- package/dist/esm/v2/components/NetworkErrorPage.js.map +1 -1
- package/dist/esm/v2/components/NotFoundPage.js +28 -9
- package/dist/esm/v2/components/NotFoundPage.js.map +1 -1
- package/dist/esm/v2/components/NumberInput.js +77 -107
- package/dist/esm/v2/components/NumberInput.js.map +1 -1
- package/dist/esm/v2/components/OverflowMenu.js +24 -42
- package/dist/esm/v2/components/OverflowMenu.js.map +1 -1
- package/dist/esm/v2/components/PdfViewer.js +24 -33
- package/dist/esm/v2/components/PdfViewer.js.map +1 -1
- package/dist/esm/v2/components/ProgressBar.js +28 -36
- package/dist/esm/v2/components/ProgressBar.js.map +1 -1
- package/dist/esm/v2/components/Radio.js +49 -57
- package/dist/esm/v2/components/Radio.js.map +1 -1
- package/dist/esm/v2/components/SectionErrorBoundary.js +84 -130
- package/dist/esm/v2/components/SectionErrorBoundary.js.map +1 -1
- package/dist/esm/v2/components/SectionHeader.js +24 -31
- package/dist/esm/v2/components/SectionHeader.js.map +1 -1
- package/dist/esm/v2/components/Segmented.js +59 -84
- package/dist/esm/v2/components/Segmented.js.map +1 -1
- package/dist/esm/v2/components/Select.js +100 -138
- package/dist/esm/v2/components/Select.js.map +1 -1
- package/dist/esm/v2/components/ServerErrorPage.js +27 -10
- package/dist/esm/v2/components/ServerErrorPage.js.map +1 -1
- package/dist/esm/v2/components/Skeleton.js +81 -96
- package/dist/esm/v2/components/Skeleton.js.map +1 -1
- package/dist/esm/v2/components/SkipLink.js +6 -7
- package/dist/esm/v2/components/SkipLink.js.map +1 -1
- package/dist/esm/v2/components/Spinner.js +13 -22
- package/dist/esm/v2/components/Spinner.js.map +1 -1
- package/dist/esm/v2/components/Status.js +14 -25
- package/dist/esm/v2/components/Status.js.map +1 -1
- package/dist/esm/v2/components/Stepper.js +68 -71
- package/dist/esm/v2/components/Stepper.js.map +1 -1
- package/dist/esm/v2/components/Surface.js +25 -44
- package/dist/esm/v2/components/Surface.js.map +1 -1
- package/dist/esm/v2/components/Switch.js +21 -29
- package/dist/esm/v2/components/Switch.js.map +1 -1
- package/dist/esm/v2/components/TabPanel.js +84 -0
- package/dist/esm/v2/components/TabPanel.js.map +1 -0
- package/dist/esm/v2/components/Tabs.js +43 -19
- package/dist/esm/v2/components/Tabs.js.map +1 -1
- package/dist/esm/v2/components/TelInput.js +75 -108
- package/dist/esm/v2/components/TelInput.js.map +1 -1
- package/dist/esm/v2/components/Textarea.js +21 -30
- package/dist/esm/v2/components/Textarea.js.map +1 -1
- package/dist/esm/v2/components/TimePicker.js +59 -69
- package/dist/esm/v2/components/TimePicker.js.map +1 -1
- package/dist/esm/v2/components/Toast.js +109 -163
- package/dist/esm/v2/components/Toast.js.map +1 -1
- package/dist/esm/v2/components/Tooltip.js +18 -31
- package/dist/esm/v2/components/Tooltip.js.map +1 -1
- package/dist/esm/v2/components/_ErrorPageBody.js +6 -5
- package/dist/esm/v2/components/_ErrorPageBody.js.map +1 -1
- package/dist/esm/v2/components/_pickerShared.js +2 -2
- package/dist/esm/v2/components/_pickerShared.js.map +1 -1
- package/dist/esm/v2/components/index.js +64 -0
- package/dist/esm/v2/components/index.js.map +1 -1
- package/dist/esm/v2/hooks/index.js +62 -0
- package/dist/esm/v2/hooks/index.js.map +1 -1
- package/dist/esm/v2/hooks/useAppliedFilters.js +112 -0
- package/dist/esm/v2/hooks/useAppliedFilters.js.map +1 -0
- package/dist/esm/v2/hooks/useDebouncedCallback.js +82 -0
- package/dist/esm/v2/hooks/useDebouncedCallback.js.map +1 -0
- package/dist/esm/v2/hooks/useDelayedFlag.js +5 -19
- package/dist/esm/v2/hooks/useDelayedFlag.js.map +1 -1
- package/dist/esm/v2/hooks/useDensity.js +13 -17
- package/dist/esm/v2/hooks/useDensity.js.map +1 -1
- package/dist/esm/v2/hooks/useFocusFirstError.js +25 -33
- package/dist/esm/v2/hooks/useFocusFirstError.js.map +1 -1
- package/dist/esm/v2/hooks/useFocusOnRouteChange.js +81 -0
- package/dist/esm/v2/hooks/useFocusOnRouteChange.js.map +1 -0
- package/dist/esm/v2/hooks/useFocusTrap.js +19 -23
- package/dist/esm/v2/hooks/useFocusTrap.js.map +1 -1
- package/dist/esm/v2/hooks/useFormAutoSave.js +38 -53
- package/dist/esm/v2/hooks/useFormAutoSave.js.map +1 -1
- package/dist/esm/v2/hooks/useFormCompletionProgress.js +32 -51
- package/dist/esm/v2/hooks/useFormCompletionProgress.js.map +1 -1
- package/dist/esm/v2/hooks/useKeyboardShortcuts.js +125 -0
- package/dist/esm/v2/hooks/useKeyboardShortcuts.js.map +1 -0
- package/dist/esm/v2/hooks/usePrefersReducedMotion.js +99 -0
- package/dist/esm/v2/hooks/usePrefersReducedMotion.js.map +1 -0
- package/dist/esm/v2/hooks/useResolvedDensity.js +2 -10
- package/dist/esm/v2/hooks/useResolvedDensity.js.map +1 -1
- package/dist/esm/v2/hooks/useSortedRows.js +3 -5
- package/dist/esm/v2/hooks/useSortedRows.js.map +1 -1
- package/dist/esm/v2/hooks/useTabLoading.js +6 -21
- package/dist/esm/v2/hooks/useTabLoading.js.map +1 -1
- package/dist/esm/v2/index.js +14 -4
- package/dist/esm/v2/index.js.map +1 -1
- package/dist/esm/v2/modalContext.js +2 -2
- package/dist/esm/v2/modalContext.js.map +1 -1
- package/dist/esm/v2/models/favorite.js.map +1 -1
- package/dist/esm/v2/models/personalization.js.map +1 -1
- package/dist/esm/v2/models/referentiel.js.map +1 -1
- package/dist/esm/v2/models/savedFilter.js.map +1 -1
- package/dist/esm/v2/patterns/ActionBar.js +115 -159
- package/dist/esm/v2/patterns/ActionBar.js.map +1 -1
- package/dist/esm/v2/patterns/AppMain.js +108 -0
- package/dist/esm/v2/patterns/AppMain.js.map +1 -0
- package/dist/esm/v2/patterns/BulkActionBar.js +31 -34
- package/dist/esm/v2/patterns/BulkActionBar.js.map +1 -1
- package/dist/esm/v2/patterns/ChartFigure.js +151 -0
- package/dist/esm/v2/patterns/ChartFigure.js.map +1 -0
- package/dist/esm/v2/patterns/CollapsibleDataGrid.js +111 -152
- package/dist/esm/v2/patterns/CollapsibleDataGrid.js.map +1 -1
- package/dist/esm/v2/patterns/ColumnsToggle.js +43 -77
- package/dist/esm/v2/patterns/ColumnsToggle.js.map +1 -1
- package/dist/esm/v2/patterns/DataGrid.js +221 -255
- package/dist/esm/v2/patterns/DataGrid.js.map +1 -1
- package/dist/esm/v2/patterns/DataGridSettingsMenu.js +76 -94
- package/dist/esm/v2/patterns/DataGridSettingsMenu.js.map +1 -1
- package/dist/esm/v2/patterns/DataGridToolbar.js +85 -89
- package/dist/esm/v2/patterns/DataGridToolbar.js.map +1 -1
- package/dist/esm/v2/patterns/DataGridVirtualized.js +141 -182
- package/dist/esm/v2/patterns/DataGridVirtualized.js.map +1 -1
- package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js +26 -30
- package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
- package/dist/esm/v2/patterns/DetailSplit.js +108 -0
- package/dist/esm/v2/patterns/DetailSplit.js.map +1 -0
- package/dist/esm/v2/patterns/FavoriteColumn.js +26 -75
- package/dist/esm/v2/patterns/FavoriteColumn.js.map +1 -1
- package/dist/esm/v2/patterns/FavoritesFilter.js +30 -39
- package/dist/esm/v2/patterns/FavoritesFilter.js.map +1 -1
- package/dist/esm/v2/patterns/FilterTabBar.js +112 -0
- package/dist/esm/v2/patterns/FilterTabBar.js.map +1 -0
- package/dist/esm/v2/patterns/FormErrorSummary.js +12 -13
- package/dist/esm/v2/patterns/FormErrorSummary.js.map +1 -1
- package/dist/esm/v2/patterns/FormPageShell.js +43 -41
- package/dist/esm/v2/patterns/FormPageShell.js.map +1 -1
- package/dist/esm/v2/patterns/FormSection.js +30 -38
- package/dist/esm/v2/patterns/FormSection.js.map +1 -1
- package/dist/esm/v2/patterns/FormikCheckbox.js +130 -0
- package/dist/esm/v2/patterns/FormikCheckbox.js.map +1 -0
- package/dist/esm/v2/patterns/FormikCheckboxGroup.js +56 -60
- package/dist/esm/v2/patterns/FormikCheckboxGroup.js.map +1 -1
- package/dist/esm/v2/patterns/FormikCombobox.js +51 -66
- package/dist/esm/v2/patterns/FormikCombobox.js.map +1 -1
- package/dist/esm/v2/patterns/FormikDatePicker.js +51 -99
- package/dist/esm/v2/patterns/FormikDatePicker.js.map +1 -1
- package/dist/esm/v2/patterns/FormikDateTimePicker.js +136 -0
- package/dist/esm/v2/patterns/FormikDateTimePicker.js.map +1 -0
- package/dist/esm/v2/patterns/FormikErrorFocus.js +22 -23
- package/dist/esm/v2/patterns/FormikErrorFocus.js.map +1 -1
- package/dist/esm/v2/patterns/FormikErrorSummary.js +89 -0
- package/dist/esm/v2/patterns/FormikErrorSummary.js.map +1 -0
- package/dist/esm/v2/patterns/FormikFile.js +94 -78
- package/dist/esm/v2/patterns/FormikFile.js.map +1 -1
- package/dist/esm/v2/patterns/FormikInput.js +40 -50
- package/dist/esm/v2/patterns/FormikInput.js.map +1 -1
- package/dist/esm/v2/patterns/FormikRadioGroup.js +129 -0
- package/dist/esm/v2/patterns/FormikRadioGroup.js.map +1 -0
- package/dist/esm/v2/patterns/FormikReferentielField.js +49 -59
- package/dist/esm/v2/patterns/FormikReferentielField.js.map +1 -1
- package/dist/esm/v2/patterns/FormikSelect.js +64 -84
- package/dist/esm/v2/patterns/FormikSelect.js.map +1 -1
- package/dist/esm/v2/patterns/FormikTextarea.js +30 -43
- package/dist/esm/v2/patterns/FormikTextarea.js.map +1 -1
- package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js +64 -65
- package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
- package/dist/esm/v2/patterns/NetworkErrorBanner.js +6 -7
- package/dist/esm/v2/patterns/NetworkErrorBanner.js.map +1 -1
- package/dist/esm/v2/patterns/PageContent.js +10 -14
- package/dist/esm/v2/patterns/PageContent.js.map +1 -1
- package/dist/esm/v2/patterns/PreviewDrawer.js +153 -0
- package/dist/esm/v2/patterns/PreviewDrawer.js.map +1 -0
- package/dist/esm/v2/patterns/ReferentielField.js +327 -312
- package/dist/esm/v2/patterns/ReferentielField.js.map +1 -1
- package/dist/esm/v2/patterns/RowFavoriteToggle.js +127 -0
- package/dist/esm/v2/patterns/RowFavoriteToggle.js.map +1 -0
- package/dist/esm/v2/patterns/SaveFilterDialog.js +38 -66
- package/dist/esm/v2/patterns/SaveFilterDialog.js.map +1 -1
- package/dist/esm/v2/patterns/SavedFiltersMenu.js +62 -81
- package/dist/esm/v2/patterns/SavedFiltersMenu.js.map +1 -1
- package/dist/esm/v2/patterns/SkeletonPageShell.js +106 -129
- package/dist/esm/v2/patterns/SkeletonPageShell.js.map +1 -1
- package/dist/esm/v2/patterns/SortableHeader.js +22 -45
- package/dist/esm/v2/patterns/SortableHeader.js.map +1 -1
- package/dist/esm/v2/patterns/Tour.js +94 -120
- package/dist/esm/v2/patterns/Tour.js.map +1 -1
- package/dist/esm/v2/patterns/_dataGridShared.js +107 -128
- package/dist/esm/v2/patterns/_dataGridShared.js.map +1 -1
- package/dist/esm/v2/patterns/_pickerSerialisation.js +72 -0
- package/dist/esm/v2/patterns/_pickerSerialisation.js.map +1 -0
- package/dist/esm/v2/patterns/_sort.js +17 -33
- package/dist/esm/v2/patterns/_sort.js.map +1 -1
- package/dist/esm/v2/patterns/_useColumnReorder.js +122 -160
- package/dist/esm/v2/patterns/_useColumnReorder.js.map +1 -1
- package/dist/esm/v2/patterns/_useColumnResize.js +78 -96
- package/dist/esm/v2/patterns/_useColumnResize.js.map +1 -1
- package/dist/esm/v2/patterns/filterCriteria.js +102 -0
- package/dist/esm/v2/patterns/filterCriteria.js.map +1 -0
- package/dist/esm/v2/patterns/index.js +235 -0
- package/dist/esm/v2/patterns/index.js.map +1 -1
- package/dist/esm/v2/patterns/rowActions.js +223 -0
- package/dist/esm/v2/patterns/rowActions.js.map +1 -0
- package/dist/esm/v2/personalization/PersonalizationProvider.js +50 -47
- package/dist/esm/v2/personalization/PersonalizationProvider.js.map +1 -1
- package/dist/esm/v2/personalization/adapters/_storageKey.js +5 -5
- package/dist/esm/v2/personalization/adapters/_storageKey.js.map +1 -1
- package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js +22 -23
- package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
- package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js +13 -13
- package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
- package/dist/esm/v2/personalization/capabilities/favorites.js +36 -60
- package/dist/esm/v2/personalization/capabilities/favorites.js.map +1 -1
- package/dist/esm/v2/personalization/capabilities/favoritesView.js +22 -34
- package/dist/esm/v2/personalization/capabilities/favoritesView.js.map +1 -1
- package/dist/esm/v2/personalization/capabilities/gridPreferences.js +203 -0
- package/dist/esm/v2/personalization/capabilities/gridPreferences.js.map +1 -0
- package/dist/esm/v2/personalization/capabilities/index.js +5 -0
- package/dist/esm/v2/personalization/capabilities/index.js.map +1 -1
- package/dist/esm/v2/personalization/capabilities/reviveSavedCriteria.js +119 -0
- package/dist/esm/v2/personalization/capabilities/reviveSavedCriteria.js.map +1 -0
- package/dist/esm/v2/personalization/capabilities/savedFilters.js +90 -98
- package/dist/esm/v2/personalization/capabilities/savedFilters.js.map +1 -1
- package/dist/esm/v2/personalization/createPersonalizationStore.js +78 -181
- package/dist/esm/v2/personalization/createPersonalizationStore.js.map +1 -1
- package/dist/esm/v2/personalization/index.js +35 -0
- package/dist/esm/v2/personalization/index.js.map +1 -1
- package/dist/esm/v2/personalization/personalizationContext.js +9 -9
- package/dist/esm/v2/personalization/personalizationContext.js.map +1 -1
- package/dist/esm/v2/personalization/schema.js +8 -9
- package/dist/esm/v2/personalization/schema.js.map +1 -1
- package/dist/esm/v2/referentiel/ReferentielProvider.js +27 -42
- package/dist/esm/v2/referentiel/ReferentielProvider.js.map +1 -1
- package/dist/esm/v2/referentiel/types.js +2 -0
- package/dist/esm/v2/referentiel/types.js.map +1 -0
- package/dist/esm/v2/referentiel/useReferentielClient.js +10 -11
- package/dist/esm/v2/referentiel/useReferentielClient.js.map +1 -1
- package/dist/esm/v2/referentiel/useReferentielOptions.js +60 -117
- package/dist/esm/v2/referentiel/useReferentielOptions.js.map +1 -1
- package/dist/esm/v2/referentiel/useReferentielSearch.js +37 -91
- package/dist/esm/v2/referentiel/useReferentielSearch.js.map +1 -1
- package/dist/esm/v2/theme/_brand.js +8 -24
- package/dist/esm/v2/theme/_brand.js.map +1 -1
- package/dist/esm/v2/theme/_brandSecondary.js +8 -24
- package/dist/esm/v2/theme/_brandSecondary.js.map +1 -1
- package/dist/esm/v2/theme/createPortnetTheme.js +51 -61
- package/dist/esm/v2/theme/createPortnetTheme.js.map +1 -1
- package/dist/esm/v2/theme/cssVariables.js +62 -69
- package/dist/esm/v2/theme/cssVariables.js.map +1 -1
- package/dist/esm/v2/theme/index.js +5 -5
- package/dist/esm/v2/theme/index.js.map +1 -1
- package/dist/esm/v2/tokens/breakpoints.js +14 -14
- package/dist/esm/v2/tokens/breakpoints.js.map +1 -1
- package/dist/esm/v2/tokens/chart.js +261 -0
- package/dist/esm/v2/tokens/chart.js.map +1 -0
- package/dist/esm/v2/tokens/colors.js +22 -22
- package/dist/esm/v2/tokens/colors.js.map +1 -1
- package/dist/esm/v2/tokens/density.js +62 -7
- package/dist/esm/v2/tokens/density.js.map +1 -1
- package/dist/esm/v2/tokens/index.js +49 -34
- package/dist/esm/v2/tokens/index.js.map +1 -1
- package/dist/esm/v2/tokens/motion.js +12 -20
- package/dist/esm/v2/tokens/motion.js.map +1 -1
- package/dist/esm/v2/tokens/radius.js +1 -1
- package/dist/esm/v2/tokens/radius.js.map +1 -1
- package/dist/esm/v2/tokens/shadows.js +6 -6
- package/dist/esm/v2/tokens/shadows.js.map +1 -1
- package/dist/esm/v2/tokens/spacing.js +2 -2
- package/dist/esm/v2/tokens/spacing.js.map +1 -1
- package/dist/esm/v2/tokens/state.js +1 -1
- package/dist/esm/v2/tokens/state.js.map +1 -1
- package/dist/esm/v2/tokens/statusPalette.js +17 -21
- package/dist/esm/v2/tokens/statusPalette.js.map +1 -1
- package/dist/esm/v2/tokens/tokens.json +6 -1
- package/dist/esm/v2/tokens/typography.js +13 -13
- package/dist/esm/v2/tokens/typography.js.map +1 -1
- package/dist/esm/v2/tokens/zIndex.js +1 -1
- package/dist/esm/v2/tokens/zIndex.js.map +1 -1
- package/dist/esm/v2/types/datagrid.js.map +1 -1
- package/dist/esm/v2/utils/apiError.js +16 -37
- package/dist/esm/v2/utils/apiError.js.map +1 -1
- package/dist/esm/v2/utils/contrast.js +31 -32
- package/dist/esm/v2/utils/contrast.js.map +1 -1
- package/dist/esm/v2/utils/cx.js +5 -25
- package/dist/esm/v2/utils/cx.js.map +1 -1
- package/dist/esm/v2/utils/fileDownload.js +23 -26
- package/dist/esm/v2/utils/fileDownload.js.map +1 -1
- package/dist/esm/v2/utils/fileValidation.js +209 -0
- package/dist/esm/v2/utils/fileValidation.js.map +1 -0
- package/dist/esm/v2/utils/fmtDate.js +111 -0
- package/dist/esm/v2/utils/fmtDate.js.map +1 -0
- package/dist/esm/v2/utils/fmtMoney.js +8 -10
- package/dist/esm/v2/utils/fmtMoney.js.map +1 -1
- package/dist/esm/v2/utils/formikErrors.js +78 -0
- package/dist/esm/v2/utils/formikErrors.js.map +1 -0
- package/dist/esm/v2/utils/index.js +35 -2
- package/dist/esm/v2/utils/index.js.map +1 -1
- package/dist/esm/v2/utils/mergeLabels.js +7 -12
- package/dist/esm/v2/utils/mergeLabels.js.map +1 -1
- package/dist/esm/v2/utils/networkStatus.js +12 -12
- package/dist/esm/v2/utils/networkStatus.js.map +1 -1
- package/dist/index.d.ts +9 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +122 -47
- package/dist/index.js.map +1 -1
- package/dist/v2/__tests__/AppMain.test.js +133 -0
- package/dist/v2/__tests__/AppMain.test.js.map +1 -0
- package/dist/v2/__tests__/ChartFigure.test.js +183 -0
- package/dist/v2/__tests__/ChartFigure.test.js.map +1 -0
- package/dist/v2/__tests__/DataGridRowActionsPropagation.test.js +153 -0
- package/dist/v2/__tests__/DataGridRowActionsPropagation.test.js.map +1 -0
- package/dist/v2/__tests__/DrawerTactileTargets.test.js +94 -0
- package/dist/v2/__tests__/DrawerTactileTargets.test.js.map +1 -0
- package/dist/v2/__tests__/FieldError.test.js +98 -69
- package/dist/v2/__tests__/FieldError.test.js.map +1 -1
- package/dist/v2/__tests__/FieldNaming.test.js +161 -0
- package/dist/v2/__tests__/FieldNaming.test.js.map +1 -0
- package/dist/v2/__tests__/FieldWidth.test.js +148 -0
- package/dist/v2/__tests__/FieldWidth.test.js.map +1 -0
- package/dist/v2/__tests__/FileCard.test.js +45 -48
- package/dist/v2/__tests__/FileCard.test.js.map +1 -1
- package/dist/v2/__tests__/FormikCheckbox.test.js +175 -0
- package/dist/v2/__tests__/FormikCheckbox.test.js.map +1 -0
- package/dist/v2/__tests__/FormikDateTimePicker.test.js +237 -0
- package/dist/v2/__tests__/FormikDateTimePicker.test.js.map +1 -0
- package/dist/v2/__tests__/FormikDisplayWidth.test.js +102 -0
- package/dist/v2/__tests__/FormikDisplayWidth.test.js.map +1 -0
- package/dist/v2/__tests__/FormikRadioGroup.test.js +300 -0
- package/dist/v2/__tests__/FormikRadioGroup.test.js.map +1 -0
- package/dist/v2/__tests__/MobileRowCard.test.js +100 -102
- package/dist/v2/__tests__/MobileRowCard.test.js.map +1 -1
- package/dist/v2/__tests__/PreviewDrawer.test.js +169 -0
- package/dist/v2/__tests__/PreviewDrawer.test.js.map +1 -0
- package/dist/v2/__tests__/ReferentielFieldContainer.test.js +159 -0
- package/dist/v2/__tests__/ReferentielFieldContainer.test.js.map +1 -0
- package/dist/v2/__tests__/SectionErrorBoundary.test.js +53 -68
- package/dist/v2/__tests__/SectionErrorBoundary.test.js.map +1 -1
- package/dist/v2/__tests__/apiError.test.js +50 -69
- package/dist/v2/__tests__/apiError.test.js.map +1 -1
- package/dist/v2/__tests__/banned-patterns.test.js +42 -123
- package/dist/v2/__tests__/banned-patterns.test.js.map +1 -1
- package/dist/v2/__tests__/chart-palette.test.js +205 -0
- package/dist/v2/__tests__/chart-palette.test.js.map +1 -0
- package/dist/v2/__tests__/contrast-palette.test.js +42 -74
- package/dist/v2/__tests__/contrast-palette.test.js.map +1 -1
- package/dist/v2/__tests__/cssVariables.test.js +44 -51
- package/dist/v2/__tests__/cssVariables.test.js.map +1 -1
- package/dist/v2/__tests__/fileValidation.test.js +136 -0
- package/dist/v2/__tests__/fileValidation.test.js.map +1 -0
- package/dist/v2/__tests__/filterCriteria.test.js +324 -0
- package/dist/v2/__tests__/filterCriteria.test.js.map +1 -0
- package/dist/v2/__tests__/fmtDate.test.js +69 -0
- package/dist/v2/__tests__/fmtDate.test.js.map +1 -0
- package/dist/v2/__tests__/gap-leakage-refonte.test.js +221 -0
- package/dist/v2/__tests__/gap-leakage-refonte.test.js.map +1 -0
- package/dist/v2/__tests__/labels-merge.test.js +38 -46
- package/dist/v2/__tests__/labels-merge.test.js.map +1 -1
- package/dist/v2/__tests__/locale-fallback.test.js +47 -52
- package/dist/v2/__tests__/locale-fallback.test.js.map +1 -1
- package/dist/v2/__tests__/reviveSavedCriteria.test.js +144 -0
- package/dist/v2/__tests__/reviveSavedCriteria.test.js.map +1 -0
- package/dist/v2/__tests__/rowActions.test.js +186 -0
- package/dist/v2/__tests__/rowActions.test.js.map +1 -0
- package/dist/v2/__tests__/useFocusOnRouteChange.test.js +156 -0
- package/dist/v2/__tests__/useFocusOnRouteChange.test.js.map +1 -0
- package/dist/v2/__tests__/useFocusTrap.test.js +270 -407
- package/dist/v2/__tests__/useFocusTrap.test.js.map +1 -1
- package/dist/v2/__tests__/usePrefersReducedMotion.test.js +123 -0
- package/dist/v2/__tests__/usePrefersReducedMotion.test.js.map +1 -0
- package/dist/v2/components/Accordion.js +60 -82
- package/dist/v2/components/Accordion.js.map +1 -1
- package/dist/v2/components/ActionStrip.js +40 -52
- package/dist/v2/components/ActionStrip.js.map +1 -1
- package/dist/v2/components/Banner.js +42 -41
- package/dist/v2/components/Banner.js.map +1 -1
- package/dist/v2/components/Busy.js +22 -27
- package/dist/v2/components/Busy.js.map +1 -1
- package/dist/v2/components/Button.js +39 -50
- package/dist/v2/components/Button.js.map +1 -1
- package/dist/v2/components/CategoryTag.d.ts.map +1 -1
- package/dist/v2/components/CategoryTag.js +49 -32
- package/dist/v2/components/CategoryTag.js.map +1 -1
- package/dist/v2/components/Checkbox.js +39 -45
- package/dist/v2/components/Checkbox.js.map +1 -1
- package/dist/v2/components/Chip.js +29 -42
- package/dist/v2/components/Chip.js.map +1 -1
- package/dist/v2/components/Combobox.js +122 -144
- package/dist/v2/components/Combobox.js.map +1 -1
- package/dist/v2/components/CommandPalette.js +138 -225
- package/dist/v2/components/CommandPalette.js.map +1 -1
- package/dist/v2/components/ConfirmDialog.js +46 -56
- package/dist/v2/components/ConfirmDialog.js.map +1 -1
- package/dist/v2/components/DatePicker.js +81 -86
- package/dist/v2/components/DatePicker.js.map +1 -1
- package/dist/v2/components/DateRangePicker.js +77 -87
- package/dist/v2/components/DateRangePicker.js.map +1 -1
- package/dist/v2/components/DateTimePicker.d.ts.map +1 -1
- package/dist/v2/components/DateTimePicker.js +121 -95
- package/dist/v2/components/DateTimePicker.js.map +1 -1
- package/dist/v2/components/Drawer.d.ts.map +1 -1
- package/dist/v2/components/Drawer.js +93 -88
- package/dist/v2/components/Drawer.js.map +1 -1
- package/dist/v2/components/Dropzone.js +150 -196
- package/dist/v2/components/Dropzone.js.map +1 -1
- package/dist/v2/components/EmptyState.js +18 -20
- package/dist/v2/components/EmptyState.js.map +1 -1
- package/dist/v2/components/FavoriteToggle.js +28 -39
- package/dist/v2/components/FavoriteToggle.js.map +1 -1
- package/dist/v2/components/Field.d.ts +121 -5
- package/dist/v2/components/Field.d.ts.map +1 -1
- package/dist/v2/components/Field.js +221 -62
- package/dist/v2/components/Field.js.map +1 -1
- package/dist/v2/components/FieldError.js +18 -21
- package/dist/v2/components/FieldError.js.map +1 -1
- package/dist/v2/components/FieldHelp.js +40 -60
- package/dist/v2/components/FieldHelp.js.map +1 -1
- package/dist/v2/components/FileCard.js +27 -31
- package/dist/v2/components/FileCard.js.map +1 -1
- package/dist/v2/components/FilterTab.js +30 -38
- package/dist/v2/components/FilterTab.js.map +1 -1
- package/dist/v2/components/ForbiddenPage.d.ts +25 -1
- package/dist/v2/components/ForbiddenPage.d.ts.map +1 -1
- package/dist/v2/components/ForbiddenPage.js +37 -17
- package/dist/v2/components/ForbiddenPage.js.map +1 -1
- package/dist/v2/components/FormGrid.js +53 -59
- package/dist/v2/components/FormGrid.js.map +1 -1
- package/dist/v2/components/FormikDisplay.d.ts +50 -1
- package/dist/v2/components/FormikDisplay.d.ts.map +1 -1
- package/dist/v2/components/FormikDisplay.js +108 -33
- package/dist/v2/components/FormikDisplay.js.map +1 -1
- package/dist/v2/components/Input.d.ts +40 -0
- package/dist/v2/components/Input.d.ts.map +1 -1
- package/dist/v2/components/Input.js +81 -41
- package/dist/v2/components/Input.js.map +1 -1
- package/dist/v2/components/KPICard.js +57 -67
- package/dist/v2/components/KPICard.js.map +1 -1
- package/dist/v2/components/KPIStrip.js +16 -22
- package/dist/v2/components/KPIStrip.js.map +1 -1
- package/dist/v2/components/KV.js +25 -31
- package/dist/v2/components/KV.js.map +1 -1
- package/dist/v2/components/KVGrid.js +19 -26
- package/dist/v2/components/KVGrid.js.map +1 -1
- package/dist/v2/components/Layout.js +91 -120
- package/dist/v2/components/Layout.js.map +1 -1
- package/dist/v2/components/MobileRowCard.js +79 -91
- package/dist/v2/components/MobileRowCard.js.map +1 -1
- package/dist/v2/components/Modal.js +61 -69
- package/dist/v2/components/Modal.js.map +1 -1
- package/dist/v2/components/NetworkErrorPage.d.ts +19 -1
- package/dist/v2/components/NetworkErrorPage.d.ts.map +1 -1
- package/dist/v2/components/NetworkErrorPage.js +38 -21
- package/dist/v2/components/NetworkErrorPage.js.map +1 -1
- package/dist/v2/components/NotFoundPage.d.ts +17 -1
- package/dist/v2/components/NotFoundPage.d.ts.map +1 -1
- package/dist/v2/components/NotFoundPage.js +37 -18
- package/dist/v2/components/NotFoundPage.js.map +1 -1
- package/dist/v2/components/NumberInput.js +88 -118
- package/dist/v2/components/NumberInput.js.map +1 -1
- package/dist/v2/components/OverflowMenu.js +38 -56
- package/dist/v2/components/OverflowMenu.js.map +1 -1
- package/dist/v2/components/PdfViewer.js +34 -45
- package/dist/v2/components/PdfViewer.js.map +1 -1
- package/dist/v2/components/ProgressBar.js +42 -49
- package/dist/v2/components/ProgressBar.js.map +1 -1
- package/dist/v2/components/Radio.js +59 -67
- package/dist/v2/components/Radio.js.map +1 -1
- package/dist/v2/components/SectionErrorBoundary.js +90 -135
- package/dist/v2/components/SectionErrorBoundary.js.map +1 -1
- package/dist/v2/components/SectionHeader.js +34 -41
- package/dist/v2/components/SectionHeader.js.map +1 -1
- package/dist/v2/components/Segmented.js +69 -93
- package/dist/v2/components/Segmented.js.map +1 -1
- package/dist/v2/components/Select.d.ts +26 -2
- package/dist/v2/components/Select.d.ts.map +1 -1
- package/dist/v2/components/Select.js +120 -155
- package/dist/v2/components/Select.js.map +1 -1
- package/dist/v2/components/ServerErrorPage.d.ts +27 -1
- package/dist/v2/components/ServerErrorPage.d.ts.map +1 -1
- package/dist/v2/components/ServerErrorPage.js +37 -20
- package/dist/v2/components/ServerErrorPage.js.map +1 -1
- package/dist/v2/components/Skeleton.js +86 -100
- package/dist/v2/components/Skeleton.js.map +1 -1
- package/dist/v2/components/SkipLink.js +9 -12
- package/dist/v2/components/SkipLink.js.map +1 -1
- package/dist/v2/components/Spinner.js +16 -25
- package/dist/v2/components/Spinner.js.map +1 -1
- package/dist/v2/components/Status.js +18 -29
- package/dist/v2/components/Status.js.map +1 -1
- package/dist/v2/components/Stepper.js +80 -82
- package/dist/v2/components/Stepper.js.map +1 -1
- package/dist/v2/components/Surface.js +34 -49
- package/dist/v2/components/Surface.js.map +1 -1
- package/dist/v2/components/Switch.js +29 -37
- package/dist/v2/components/Switch.js.map +1 -1
- package/dist/v2/components/TabPanel.d.ts +17 -0
- package/dist/v2/components/TabPanel.d.ts.map +1 -0
- package/dist/v2/components/TabPanel.js +90 -0
- package/dist/v2/components/TabPanel.js.map +1 -0
- package/dist/v2/components/Tabs.d.ts +25 -0
- package/dist/v2/components/Tabs.d.ts.map +1 -1
- package/dist/v2/components/Tabs.js +53 -29
- package/dist/v2/components/Tabs.js.map +1 -1
- package/dist/v2/components/TelInput.js +80 -115
- package/dist/v2/components/TelInput.js.map +1 -1
- package/dist/v2/components/Textarea.js +26 -35
- package/dist/v2/components/Textarea.js.map +1 -1
- package/dist/v2/components/TimePicker.js +62 -74
- package/dist/v2/components/TimePicker.js.map +1 -1
- package/dist/v2/components/Toast.js +119 -174
- package/dist/v2/components/Toast.js.map +1 -1
- package/dist/v2/components/Tooltip.js +23 -38
- package/dist/v2/components/Tooltip.js.map +1 -1
- package/dist/v2/components/_ErrorPageBody.js +15 -16
- package/dist/v2/components/_ErrorPageBody.js.map +1 -1
- package/dist/v2/components/_pickerShared.js +5 -5
- package/dist/v2/components/_pickerShared.js.map +1 -1
- package/dist/v2/components/index.d.ts +67 -1
- package/dist/v2/components/index.d.ts.map +1 -1
- package/dist/v2/components/index.js +153 -136
- package/dist/v2/components/index.js.map +1 -1
- package/dist/v2/hooks/index.d.ts +65 -0
- package/dist/v2/hooks/index.d.ts.map +1 -1
- package/dist/v2/hooks/index.js +63 -24
- package/dist/v2/hooks/index.js.map +1 -1
- package/dist/v2/hooks/useAppliedFilters.d.ts +102 -0
- package/dist/v2/hooks/useAppliedFilters.d.ts.map +1 -0
- package/dist/v2/hooks/useAppliedFilters.js +117 -0
- package/dist/v2/hooks/useAppliedFilters.js.map +1 -0
- package/dist/v2/hooks/useDebouncedCallback.d.ts +64 -0
- package/dist/v2/hooks/useDebouncedCallback.d.ts.map +1 -0
- package/dist/v2/hooks/useDebouncedCallback.js +87 -0
- package/dist/v2/hooks/useDebouncedCallback.js.map +1 -0
- package/dist/v2/hooks/useDelayedFlag.js +6 -20
- package/dist/v2/hooks/useDelayedFlag.js.map +1 -1
- package/dist/v2/hooks/useDensity.d.ts.map +1 -1
- package/dist/v2/hooks/useDensity.js +14 -18
- package/dist/v2/hooks/useDensity.js.map +1 -1
- package/dist/v2/hooks/useFocusFirstError.js +26 -34
- package/dist/v2/hooks/useFocusFirstError.js.map +1 -1
- package/dist/v2/hooks/useFocusOnRouteChange.d.ts +65 -0
- package/dist/v2/hooks/useFocusOnRouteChange.d.ts.map +1 -0
- package/dist/v2/hooks/useFocusOnRouteChange.js +88 -0
- package/dist/v2/hooks/useFocusOnRouteChange.js.map +1 -0
- package/dist/v2/hooks/useFocusTrap.js +20 -24
- package/dist/v2/hooks/useFocusTrap.js.map +1 -1
- package/dist/v2/hooks/useFormAutoSave.d.ts +4 -4
- package/dist/v2/hooks/useFormAutoSave.d.ts.map +1 -1
- package/dist/v2/hooks/useFormAutoSave.js +39 -54
- package/dist/v2/hooks/useFormAutoSave.js.map +1 -1
- package/dist/v2/hooks/useFormCompletionProgress.d.ts +1 -1
- package/dist/v2/hooks/useFormCompletionProgress.d.ts.map +1 -1
- package/dist/v2/hooks/useFormCompletionProgress.js +33 -52
- package/dist/v2/hooks/useFormCompletionProgress.js.map +1 -1
- package/dist/v2/hooks/useKeyboardShortcuts.d.ts +25 -0
- package/dist/v2/hooks/useKeyboardShortcuts.d.ts.map +1 -0
- package/dist/v2/hooks/useKeyboardShortcuts.js +132 -0
- package/dist/v2/hooks/useKeyboardShortcuts.js.map +1 -0
- package/dist/v2/hooks/usePrefersReducedMotion.d.ts +56 -0
- package/dist/v2/hooks/usePrefersReducedMotion.d.ts.map +1 -0
- package/dist/v2/hooks/usePrefersReducedMotion.js +105 -0
- package/dist/v2/hooks/usePrefersReducedMotion.js.map +1 -0
- package/dist/v2/hooks/useResolvedDensity.js +5 -13
- package/dist/v2/hooks/useResolvedDensity.js.map +1 -1
- package/dist/v2/hooks/useSortedRows.js +4 -6
- package/dist/v2/hooks/useSortedRows.js.map +1 -1
- package/dist/v2/hooks/useTabLoading.js +7 -22
- package/dist/v2/hooks/useTabLoading.js.map +1 -1
- package/dist/v2/index.d.ts.map +1 -1
- package/dist/v2/index.js +143 -145
- package/dist/v2/index.js.map +1 -1
- package/dist/v2/modalContext.js +2 -2
- package/dist/v2/modalContext.js.map +1 -1
- package/dist/v2/models/favorite.d.ts +8 -9
- package/dist/v2/models/favorite.d.ts.map +1 -1
- package/dist/v2/models/favorite.js.map +1 -1
- package/dist/v2/models/index.js +4 -4
- package/dist/v2/models/index.js.map +1 -1
- package/dist/v2/models/personalization.d.ts +44 -48
- package/dist/v2/models/personalization.d.ts.map +1 -1
- package/dist/v2/models/personalization.js.map +1 -1
- package/dist/v2/models/referentiel.d.ts +32 -50
- package/dist/v2/models/referentiel.d.ts.map +1 -1
- package/dist/v2/models/referentiel.js.map +1 -1
- package/dist/v2/models/savedFilter.d.ts +8 -17
- package/dist/v2/models/savedFilter.d.ts.map +1 -1
- package/dist/v2/models/savedFilter.js.map +1 -1
- package/dist/v2/patterns/ActionBar.js +152 -187
- package/dist/v2/patterns/ActionBar.js.map +1 -1
- package/dist/v2/patterns/AppMain.d.ts +109 -0
- package/dist/v2/patterns/AppMain.d.ts.map +1 -0
- package/dist/v2/patterns/AppMain.js +115 -0
- package/dist/v2/patterns/AppMain.js.map +1 -0
- package/dist/v2/patterns/BulkActionBar.js +40 -42
- package/dist/v2/patterns/BulkActionBar.js.map +1 -1
- package/dist/v2/patterns/ChartFigure.d.ts +124 -0
- package/dist/v2/patterns/ChartFigure.d.ts.map +1 -0
- package/dist/v2/patterns/ChartFigure.js +159 -0
- package/dist/v2/patterns/ChartFigure.js.map +1 -0
- package/dist/v2/patterns/CollapsibleDataGrid.js +138 -174
- package/dist/v2/patterns/CollapsibleDataGrid.js.map +1 -1
- package/dist/v2/patterns/ColumnsToggle.js +60 -94
- package/dist/v2/patterns/ColumnsToggle.js.map +1 -1
- package/dist/v2/patterns/DataGrid.d.ts.map +1 -1
- package/dist/v2/patterns/DataGrid.js +262 -297
- package/dist/v2/patterns/DataGrid.js.map +1 -1
- package/dist/v2/patterns/DataGridSettingsMenu.d.ts +12 -0
- package/dist/v2/patterns/DataGridSettingsMenu.d.ts.map +1 -1
- package/dist/v2/patterns/DataGridSettingsMenu.js +104 -121
- package/dist/v2/patterns/DataGridSettingsMenu.js.map +1 -1
- package/dist/v2/patterns/DataGridToolbar.js +103 -106
- package/dist/v2/patterns/DataGridToolbar.js.map +1 -1
- package/dist/v2/patterns/DataGridVirtualized.js +179 -217
- package/dist/v2/patterns/DataGridVirtualized.js.map +1 -1
- package/dist/v2/patterns/DeleteResourceConfirmDialog.js +32 -35
- package/dist/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
- package/dist/v2/patterns/DetailSplit.d.ts +87 -0
- package/dist/v2/patterns/DetailSplit.d.ts.map +1 -0
- package/dist/v2/patterns/DetailSplit.js +116 -0
- package/dist/v2/patterns/DetailSplit.js.map +1 -0
- package/dist/v2/patterns/FavoriteColumn.d.ts +9 -9
- package/dist/v2/patterns/FavoriteColumn.d.ts.map +1 -1
- package/dist/v2/patterns/FavoriteColumn.js +32 -80
- package/dist/v2/patterns/FavoriteColumn.js.map +1 -1
- package/dist/v2/patterns/FavoritesFilter.js +36 -44
- package/dist/v2/patterns/FavoritesFilter.js.map +1 -1
- package/dist/v2/patterns/FilterTabBar.d.ts +28 -0
- package/dist/v2/patterns/FilterTabBar.d.ts.map +1 -0
- package/dist/v2/patterns/FilterTabBar.js +120 -0
- package/dist/v2/patterns/FilterTabBar.js.map +1 -0
- package/dist/v2/patterns/FormErrorSummary.js +20 -23
- package/dist/v2/patterns/FormErrorSummary.js.map +1 -1
- package/dist/v2/patterns/FormPageShell.js +53 -50
- package/dist/v2/patterns/FormPageShell.js.map +1 -1
- package/dist/v2/patterns/FormSection.d.ts +8 -3
- package/dist/v2/patterns/FormSection.d.ts.map +1 -1
- package/dist/v2/patterns/FormSection.js +44 -51
- package/dist/v2/patterns/FormSection.js.map +1 -1
- package/dist/v2/patterns/FormikCheckbox.d.ts +77 -0
- package/dist/v2/patterns/FormikCheckbox.d.ts.map +1 -0
- package/dist/v2/patterns/FormikCheckbox.js +138 -0
- package/dist/v2/patterns/FormikCheckbox.js.map +1 -0
- package/dist/v2/patterns/FormikCheckboxGroup.d.ts +17 -1
- package/dist/v2/patterns/FormikCheckboxGroup.d.ts.map +1 -1
- package/dist/v2/patterns/FormikCheckboxGroup.js +62 -65
- package/dist/v2/patterns/FormikCheckboxGroup.js.map +1 -1
- package/dist/v2/patterns/FormikCombobox.d.ts +7 -1
- package/dist/v2/patterns/FormikCombobox.d.ts.map +1 -1
- package/dist/v2/patterns/FormikCombobox.js +55 -69
- package/dist/v2/patterns/FormikCombobox.js.map +1 -1
- package/dist/v2/patterns/FormikDatePicker.d.ts +13 -1
- package/dist/v2/patterns/FormikDatePicker.d.ts.map +1 -1
- package/dist/v2/patterns/FormikDatePicker.js +59 -106
- package/dist/v2/patterns/FormikDatePicker.js.map +1 -1
- package/dist/v2/patterns/FormikDateTimePicker.d.ts +111 -0
- package/dist/v2/patterns/FormikDateTimePicker.d.ts.map +1 -0
- package/dist/v2/patterns/FormikDateTimePicker.js +144 -0
- package/dist/v2/patterns/FormikDateTimePicker.js.map +1 -0
- package/dist/v2/patterns/FormikErrorFocus.js +25 -26
- package/dist/v2/patterns/FormikErrorFocus.js.map +1 -1
- package/dist/v2/patterns/FormikErrorSummary.d.ts +74 -0
- package/dist/v2/patterns/FormikErrorSummary.d.ts.map +1 -0
- package/dist/v2/patterns/FormikErrorSummary.js +97 -0
- package/dist/v2/patterns/FormikErrorSummary.js.map +1 -0
- package/dist/v2/patterns/FormikFile.d.ts +14 -1
- package/dist/v2/patterns/FormikFile.d.ts.map +1 -1
- package/dist/v2/patterns/FormikFile.js +99 -83
- package/dist/v2/patterns/FormikFile.js.map +1 -1
- package/dist/v2/patterns/FormikInput.d.ts +11 -1
- package/dist/v2/patterns/FormikInput.d.ts.map +1 -1
- package/dist/v2/patterns/FormikInput.js +45 -55
- package/dist/v2/patterns/FormikInput.js.map +1 -1
- package/dist/v2/patterns/FormikRadioGroup.d.ts +80 -0
- package/dist/v2/patterns/FormikRadioGroup.d.ts.map +1 -0
- package/dist/v2/patterns/FormikRadioGroup.js +137 -0
- package/dist/v2/patterns/FormikRadioGroup.js.map +1 -0
- package/dist/v2/patterns/FormikReferentielField.d.ts +12 -1
- package/dist/v2/patterns/FormikReferentielField.d.ts.map +1 -1
- package/dist/v2/patterns/FormikReferentielField.js +54 -64
- package/dist/v2/patterns/FormikReferentielField.js.map +1 -1
- package/dist/v2/patterns/FormikSelect.d.ts +9 -1
- package/dist/v2/patterns/FormikSelect.d.ts.map +1 -1
- package/dist/v2/patterns/FormikSelect.js +70 -89
- package/dist/v2/patterns/FormikSelect.js.map +1 -1
- package/dist/v2/patterns/FormikTextarea.d.ts +9 -1
- package/dist/v2/patterns/FormikTextarea.d.ts.map +1 -1
- package/dist/v2/patterns/FormikTextarea.js +35 -48
- package/dist/v2/patterns/FormikTextarea.js.map +1 -1
- package/dist/v2/patterns/KeyboardShortcutsHelp.d.ts +14 -1
- package/dist/v2/patterns/KeyboardShortcutsHelp.d.ts.map +1 -1
- package/dist/v2/patterns/KeyboardShortcutsHelp.js +71 -74
- package/dist/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
- package/dist/v2/patterns/NetworkErrorBanner.js +13 -16
- package/dist/v2/patterns/NetworkErrorBanner.js.map +1 -1
- package/dist/v2/patterns/PageContent.js +17 -20
- package/dist/v2/patterns/PageContent.js.map +1 -1
- package/dist/v2/patterns/PreviewDrawer.d.ts +49 -0
- package/dist/v2/patterns/PreviewDrawer.d.ts.map +1 -0
- package/dist/v2/patterns/PreviewDrawer.js +159 -0
- package/dist/v2/patterns/PreviewDrawer.js.map +1 -0
- package/dist/v2/patterns/ReferentielField.d.ts +86 -2
- package/dist/v2/patterns/ReferentielField.d.ts.map +1 -1
- package/dist/v2/patterns/ReferentielField.js +347 -327
- package/dist/v2/patterns/ReferentielField.js.map +1 -1
- package/dist/v2/patterns/RowFavoriteToggle.d.ts +98 -0
- package/dist/v2/patterns/RowFavoriteToggle.d.ts.map +1 -0
- package/dist/v2/patterns/RowFavoriteToggle.js +135 -0
- package/dist/v2/patterns/RowFavoriteToggle.js.map +1 -0
- package/dist/v2/patterns/SaveFilterDialog.js +50 -77
- package/dist/v2/patterns/SaveFilterDialog.js.map +1 -1
- package/dist/v2/patterns/SavedFiltersMenu.js +89 -107
- package/dist/v2/patterns/SavedFiltersMenu.js.map +1 -1
- package/dist/v2/patterns/SkeletonPageShell.js +122 -143
- package/dist/v2/patterns/SkeletonPageShell.js.map +1 -1
- package/dist/v2/patterns/SortableHeader.js +35 -57
- package/dist/v2/patterns/SortableHeader.js.map +1 -1
- package/dist/v2/patterns/Tour.js +121 -142
- package/dist/v2/patterns/Tour.js.map +1 -1
- package/dist/v2/patterns/_dataGridShared.d.ts.map +1 -1
- package/dist/v2/patterns/_dataGridShared.js +131 -147
- package/dist/v2/patterns/_dataGridShared.js.map +1 -1
- package/dist/v2/patterns/_pickerSerialisation.d.ts +44 -0
- package/dist/v2/patterns/_pickerSerialisation.d.ts.map +1 -0
- package/dist/v2/patterns/_pickerSerialisation.js +80 -0
- package/dist/v2/patterns/_pickerSerialisation.js.map +1 -0
- package/dist/v2/patterns/_sort.js +17 -33
- package/dist/v2/patterns/_sort.js.map +1 -1
- package/dist/v2/patterns/_useColumnReorder.js +124 -163
- package/dist/v2/patterns/_useColumnReorder.js.map +1 -1
- package/dist/v2/patterns/_useColumnResize.js +80 -99
- package/dist/v2/patterns/_useColumnResize.js.map +1 -1
- package/dist/v2/patterns/filterCriteria.d.ts +78 -0
- package/dist/v2/patterns/filterCriteria.d.ts.map +1 -0
- package/dist/v2/patterns/filterCriteria.js +110 -0
- package/dist/v2/patterns/filterCriteria.js.map +1 -0
- package/dist/v2/patterns/index.d.ts +247 -0
- package/dist/v2/patterns/index.d.ts.map +1 -1
- package/dist/v2/patterns/index.js +182 -70
- package/dist/v2/patterns/index.js.map +1 -1
- package/dist/v2/patterns/rowActions.d.ts +150 -0
- package/dist/v2/patterns/rowActions.d.ts.map +1 -0
- package/dist/v2/patterns/rowActions.js +232 -0
- package/dist/v2/patterns/rowActions.js.map +1 -0
- package/dist/v2/personalization/PersonalizationProvider.d.ts.map +1 -1
- package/dist/v2/personalization/PersonalizationProvider.js +57 -53
- package/dist/v2/personalization/PersonalizationProvider.js.map +1 -1
- package/dist/v2/personalization/adapters/_storageKey.js +5 -5
- package/dist/v2/personalization/adapters/_storageKey.js.map +1 -1
- package/dist/v2/personalization/adapters/createLocalStorageAdapter.js +25 -24
- package/dist/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
- package/dist/v2/personalization/adapters/createMemoryAdapter.js +14 -14
- package/dist/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
- package/dist/v2/personalization/adapters/index.js +5 -5
- package/dist/v2/personalization/adapters/index.js.map +1 -1
- package/dist/v2/personalization/capabilities/favorites.js +39 -62
- package/dist/v2/personalization/capabilities/favorites.js.map +1 -1
- package/dist/v2/personalization/capabilities/favoritesView.js +25 -37
- package/dist/v2/personalization/capabilities/favoritesView.js.map +1 -1
- package/dist/v2/personalization/capabilities/gridPreferences.d.ts +100 -0
- package/dist/v2/personalization/capabilities/gridPreferences.d.ts.map +1 -0
- package/dist/v2/personalization/capabilities/gridPreferences.js +210 -0
- package/dist/v2/personalization/capabilities/gridPreferences.js.map +1 -0
- package/dist/v2/personalization/capabilities/index.d.ts +6 -0
- package/dist/v2/personalization/capabilities/index.d.ts.map +1 -1
- package/dist/v2/personalization/capabilities/index.js +23 -10
- package/dist/v2/personalization/capabilities/index.js.map +1 -1
- package/dist/v2/personalization/capabilities/reviveSavedCriteria.d.ts +88 -0
- package/dist/v2/personalization/capabilities/reviveSavedCriteria.d.ts.map +1 -0
- package/dist/v2/personalization/capabilities/reviveSavedCriteria.js +126 -0
- package/dist/v2/personalization/capabilities/reviveSavedCriteria.js.map +1 -0
- package/dist/v2/personalization/capabilities/savedFilters.js +93 -100
- package/dist/v2/personalization/capabilities/savedFilters.js.map +1 -1
- package/dist/v2/personalization/createPersonalizationStore.d.ts.map +1 -1
- package/dist/v2/personalization/createPersonalizationStore.js +81 -182
- package/dist/v2/personalization/createPersonalizationStore.js.map +1 -1
- package/dist/v2/personalization/index.d.ts +34 -0
- package/dist/v2/personalization/index.d.ts.map +1 -1
- package/dist/v2/personalization/index.js +41 -21
- package/dist/v2/personalization/index.js.map +1 -1
- package/dist/v2/personalization/personalizationContext.js +10 -12
- package/dist/v2/personalization/personalizationContext.js.map +1 -1
- package/dist/v2/personalization/schema.js +8 -9
- package/dist/v2/personalization/schema.js.map +1 -1
- package/dist/v2/referentiel/ReferentielProvider.js +31 -45
- package/dist/v2/referentiel/ReferentielProvider.js.map +1 -1
- package/dist/v2/referentiel/index.js +11 -13
- package/dist/v2/referentiel/index.js.map +1 -1
- package/dist/v2/referentiel/types.d.ts +105 -0
- package/dist/v2/referentiel/types.d.ts.map +1 -0
- package/dist/v2/referentiel/types.js +6 -0
- package/dist/v2/referentiel/types.js.map +1 -0
- package/dist/v2/referentiel/useReferentielClient.js +13 -16
- package/dist/v2/referentiel/useReferentielClient.js.map +1 -1
- package/dist/v2/referentiel/useReferentielOptions.d.ts +7 -17
- package/dist/v2/referentiel/useReferentielOptions.d.ts.map +1 -1
- package/dist/v2/referentiel/useReferentielOptions.js +63 -120
- package/dist/v2/referentiel/useReferentielOptions.js.map +1 -1
- package/dist/v2/referentiel/useReferentielSearch.d.ts +7 -48
- package/dist/v2/referentiel/useReferentielSearch.d.ts.map +1 -1
- package/dist/v2/referentiel/useReferentielSearch.js +40 -95
- package/dist/v2/referentiel/useReferentielSearch.js.map +1 -1
- package/dist/v2/theme/_brand.js +12 -26
- package/dist/v2/theme/_brand.js.map +1 -1
- package/dist/v2/theme/_brandSecondary.js +12 -26
- package/dist/v2/theme/_brandSecondary.js.map +1 -1
- package/dist/v2/theme/createPortnetTheme.js +41 -49
- package/dist/v2/theme/createPortnetTheme.js.map +1 -1
- package/dist/v2/theme/cssVariables.d.ts +3 -3
- package/dist/v2/theme/cssVariables.d.ts.map +1 -1
- package/dist/v2/theme/cssVariables.js +65 -70
- package/dist/v2/theme/cssVariables.js.map +1 -1
- package/dist/v2/theme/index.js +10 -10
- package/dist/v2/theme/index.js.map +1 -1
- package/dist/v2/tokens/breakpoints.js +16 -16
- package/dist/v2/tokens/breakpoints.js.map +1 -1
- package/dist/v2/tokens/chart.d.ts +103 -0
- package/dist/v2/tokens/chart.d.ts.map +1 -0
- package/dist/v2/tokens/chart.js +270 -0
- package/dist/v2/tokens/chart.js.map +1 -0
- package/dist/v2/tokens/colors.js +24 -24
- package/dist/v2/tokens/colors.js.map +1 -1
- package/dist/v2/tokens/density.d.ts +104 -0
- package/dist/v2/tokens/density.d.ts.map +1 -1
- package/dist/v2/tokens/density.js +67 -12
- package/dist/v2/tokens/density.js.map +1 -1
- package/dist/v2/tokens/index.d.ts +50 -1
- package/dist/v2/tokens/index.d.ts.map +1 -1
- package/dist/v2/tokens/index.js +116 -68
- package/dist/v2/tokens/index.js.map +1 -1
- package/dist/v2/tokens/motion.js +16 -22
- package/dist/v2/tokens/motion.js.map +1 -1
- package/dist/v2/tokens/radius.js +3 -3
- package/dist/v2/tokens/radius.js.map +1 -1
- package/dist/v2/tokens/shadows.js +8 -8
- package/dist/v2/tokens/shadows.js.map +1 -1
- package/dist/v2/tokens/spacing.js +4 -4
- package/dist/v2/tokens/spacing.js.map +1 -1
- package/dist/v2/tokens/state.js +3 -3
- package/dist/v2/tokens/state.js.map +1 -1
- package/dist/v2/tokens/statusPalette.js +21 -23
- package/dist/v2/tokens/statusPalette.js.map +1 -1
- package/dist/v2/tokens/tokens.json +6 -1
- package/dist/v2/tokens/typography.js +15 -15
- package/dist/v2/tokens/typography.js.map +1 -1
- package/dist/v2/tokens/zIndex.js +3 -3
- package/dist/v2/tokens/zIndex.js.map +1 -1
- package/dist/v2/types/datagrid.d.ts +9 -1
- package/dist/v2/types/datagrid.d.ts.map +1 -1
- package/dist/v2/types/datagrid.js.map +1 -1
- package/dist/v2/types/index.js +2 -2
- package/dist/v2/types/index.js.map +1 -1
- package/dist/v2/utils/apiError.js +16 -37
- package/dist/v2/utils/apiError.js.map +1 -1
- package/dist/v2/utils/contrast.js +31 -32
- package/dist/v2/utils/contrast.js.map +1 -1
- package/dist/v2/utils/cx.js +7 -27
- package/dist/v2/utils/cx.js.map +1 -1
- package/dist/v2/utils/fileDownload.js +25 -28
- package/dist/v2/utils/fileDownload.js.map +1 -1
- package/dist/v2/utils/fileValidation.d.ts +116 -0
- package/dist/v2/utils/fileValidation.d.ts.map +1 -0
- package/dist/v2/utils/fileValidation.js +220 -0
- package/dist/v2/utils/fileValidation.js.map +1 -0
- package/dist/v2/utils/fmtDate.d.ts +103 -0
- package/dist/v2/utils/fmtDate.d.ts.map +1 -0
- package/dist/v2/utils/fmtDate.js +119 -0
- package/dist/v2/utils/fmtDate.js.map +1 -0
- package/dist/v2/utils/fmtMoney.d.ts +3 -3
- package/dist/v2/utils/fmtMoney.d.ts.map +1 -1
- package/dist/v2/utils/fmtMoney.js +9 -11
- package/dist/v2/utils/fmtMoney.js.map +1 -1
- package/dist/v2/utils/formikErrors.d.ts +67 -0
- package/dist/v2/utils/formikErrors.d.ts.map +1 -0
- package/dist/v2/utils/formikErrors.js +85 -0
- package/dist/v2/utils/formikErrors.js.map +1 -0
- package/dist/v2/utils/index.d.ts +5 -0
- package/dist/v2/utils/index.d.ts.map +1 -1
- package/dist/v2/utils/index.js +67 -18
- package/dist/v2/utils/index.js.map +1 -1
- package/dist/v2/utils/mergeLabels.js +9 -14
- package/dist/v2/utils/mergeLabels.js.map +1 -1
- package/dist/v2/utils/networkStatus.js +14 -14
- package/dist/v2/utils/networkStatus.js.map +1 -1
- package/package.json +26 -9
|
@@ -1,24 +1,11 @@
|
|
|
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 = useColumnResize;
|
|
8
7
|
var React = _interopRequireWildcard(require("react"));
|
|
9
|
-
function
|
|
10
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
11
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
12
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
13
|
-
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
14
|
-
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
15
|
-
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
16
|
-
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
17
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
18
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
19
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
20
|
-
function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) { ; } } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
|
|
21
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
8
|
+
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); }
|
|
22
9
|
/**
|
|
23
10
|
* useColumnResize — Portnet UI v2 (private)
|
|
24
11
|
*
|
|
@@ -56,113 +43,104 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
|
56
43
|
*/
|
|
57
44
|
|
|
58
45
|
/** Width delta (px) applied per Arrow key press in keyboard resize. */
|
|
59
|
-
|
|
60
|
-
function useColumnResize(columnWidths, onColumnWidthsChange) {
|
|
61
|
-
|
|
62
|
-
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
63
|
-
var minWidth = (_options$minWidth = options.minWidth) !== null && _options$minWidth !== void 0 ? _options$minWidth : 50;
|
|
46
|
+
const KEYBOARD_STEP = 16;
|
|
47
|
+
function useColumnResize(columnWidths, onColumnWidthsChange, options = {}) {
|
|
48
|
+
const minWidth = options.minWidth ?? 50;
|
|
64
49
|
|
|
65
50
|
// React state for "draggingKey" + "liveWidth" drives the rendered
|
|
66
51
|
// width during drag. Refs carry the latest values across the
|
|
67
52
|
// mouseup closure (avoids the stale-closure bug).
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
var _React$useState3 = React.useState(null),
|
|
73
|
-
_React$useState4 = _slicedToArray(_React$useState3, 2),
|
|
74
|
-
liveWidth = _React$useState4[0],
|
|
75
|
-
setLiveWidth = _React$useState4[1];
|
|
76
|
-
var liveWidthRef = React.useRef(null);
|
|
77
|
-
var dragStateRef = React.useRef(null);
|
|
53
|
+
const [draggingKey, setDraggingKey] = React.useState(null);
|
|
54
|
+
const [liveWidth, setLiveWidth] = React.useState(null);
|
|
55
|
+
const liveWidthRef = React.useRef(null);
|
|
56
|
+
const dragStateRef = React.useRef(null);
|
|
78
57
|
|
|
79
58
|
// Keep the latest columnWidths reference reachable from the
|
|
80
59
|
// mouseup closure without re-binding listeners on every prop
|
|
81
60
|
// change. Avoids tearing down + re-adding the window listeners
|
|
82
61
|
// on each parent re-render that ships a fresh widths object.
|
|
83
|
-
|
|
84
|
-
React.useEffect(
|
|
62
|
+
const columnWidthsRef = React.useRef(columnWidths);
|
|
63
|
+
React.useEffect(() => {
|
|
85
64
|
columnWidthsRef.current = columnWidths;
|
|
86
65
|
}, [columnWidths]);
|
|
87
66
|
|
|
88
67
|
// Shared RTL probe for a grip's owning <th>: -1 in RTL, 1 otherwise.
|
|
89
|
-
|
|
90
|
-
|
|
68
|
+
const cellDirection = grip => {
|
|
69
|
+
const cell = grip.closest("th");
|
|
91
70
|
return cell && typeof window !== "undefined" && typeof window.getComputedStyle === "function" && window.getComputedStyle(cell).direction === "rtl" ? -1 : 1;
|
|
92
71
|
};
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
var cell = grip.closest("th");
|
|
103
|
-
if (!cell) return;
|
|
72
|
+
const handleMouseDown = React.useCallback(key => e => {
|
|
73
|
+
// Block native browser drag (text selection, image drag, the
|
|
74
|
+
// ancestor `<th draggable>` if reorder is also on) and the
|
|
75
|
+
// sortable-header click that lives next door in the same `<th>`.
|
|
76
|
+
e.preventDefault();
|
|
77
|
+
e.stopPropagation();
|
|
78
|
+
const grip = e.currentTarget;
|
|
79
|
+
const cell = grip.closest("th");
|
|
80
|
+
if (!cell) return;
|
|
104
81
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
82
|
+
// RTL detection at the cell level — most accurate (a `dir`
|
|
83
|
+
// attribute may be set anywhere up the ancestor chain).
|
|
84
|
+
const direction = cellDirection(grip);
|
|
108
85
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
};
|
|
118
|
-
liveWidthRef.current = currentWidth;
|
|
119
|
-
setLiveWidth(currentWidth);
|
|
120
|
-
setDraggingKey(key);
|
|
86
|
+
// Starting width: prefer the host-controlled value, fall back to
|
|
87
|
+
// the rendered offsetWidth for a column the host hasn't sized.
|
|
88
|
+
const currentWidth = (columnWidthsRef.current && columnWidthsRef.current[key]) ?? cell.offsetWidth;
|
|
89
|
+
dragStateRef.current = {
|
|
90
|
+
x: e.clientX,
|
|
91
|
+
width: currentWidth,
|
|
92
|
+
key,
|
|
93
|
+
direction
|
|
121
94
|
};
|
|
95
|
+
liveWidthRef.current = currentWidth;
|
|
96
|
+
setLiveWidth(currentWidth);
|
|
97
|
+
setDraggingKey(key);
|
|
122
98
|
}, []);
|
|
123
99
|
|
|
124
100
|
// DG-2 — keyboard resize on the focusable grip. Commits immediately;
|
|
125
101
|
// no drag session / window listeners involved.
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
var direction = cellDirection(grip);
|
|
138
|
-
var current = (_ref2 = columnWidthsRef.current && columnWidthsRef.current[key]) !== null && _ref2 !== void 0 ? _ref2 : cell ? cell.offsetWidth : minWidth;
|
|
102
|
+
const handleKeyDown = React.useCallback(key => e => {
|
|
103
|
+
const isLeft = e.key === "ArrowLeft";
|
|
104
|
+
const isRight = e.key === "ArrowRight";
|
|
105
|
+
const isHome = e.key === "Home";
|
|
106
|
+
if (!isLeft && !isRight && !isHome) return;
|
|
107
|
+
e.preventDefault();
|
|
108
|
+
e.stopPropagation();
|
|
109
|
+
const grip = e.currentTarget;
|
|
110
|
+
const cell = grip.closest("th");
|
|
111
|
+
const direction = cellDirection(grip);
|
|
112
|
+
const current = (columnWidthsRef.current && columnWidthsRef.current[key]) ?? (cell ? cell.offsetWidth : minWidth);
|
|
139
113
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
114
|
+
// RTL-aware so ArrowRight matches a rightward drag (which grows the
|
|
115
|
+
// column in LTR and shrinks it in RTL, the grip being on the
|
|
116
|
+
// inline-end edge).
|
|
117
|
+
const next = isHome ? minWidth : current + (isRight ? 1 : -1) * KEYBOARD_STEP * direction;
|
|
118
|
+
const clamped = Math.max(minWidth, Math.round(next));
|
|
119
|
+
if (onColumnWidthsChange) {
|
|
120
|
+
onColumnWidthsChange({
|
|
121
|
+
...(columnWidthsRef.current || {}),
|
|
122
|
+
[key]: clamped
|
|
123
|
+
});
|
|
124
|
+
}
|
|
149
125
|
}, [minWidth, onColumnWidthsChange]);
|
|
150
|
-
React.useEffect(
|
|
126
|
+
React.useEffect(() => {
|
|
151
127
|
if (!draggingKey) return undefined;
|
|
152
|
-
|
|
153
|
-
|
|
128
|
+
const onMove = e => {
|
|
129
|
+
const start = dragStateRef.current;
|
|
154
130
|
if (!start) return;
|
|
155
|
-
|
|
156
|
-
|
|
131
|
+
const delta = (e.clientX - start.x) * start.direction;
|
|
132
|
+
const next = Math.max(minWidth, start.width + delta);
|
|
157
133
|
liveWidthRef.current = next;
|
|
158
134
|
setLiveWidth(next);
|
|
159
135
|
};
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
var finalWidth = (_liveWidthRef$current = liveWidthRef.current) !== null && _liveWidthRef$current !== void 0 ? _liveWidthRef$current : start ? start.width : null;
|
|
136
|
+
const onUp = () => {
|
|
137
|
+
const start = dragStateRef.current;
|
|
138
|
+
const finalWidth = liveWidthRef.current ?? (start ? start.width : null);
|
|
164
139
|
if (start && finalWidth != null && onColumnWidthsChange) {
|
|
165
|
-
onColumnWidthsChange(
|
|
140
|
+
onColumnWidthsChange({
|
|
141
|
+
...(columnWidthsRef.current || {}),
|
|
142
|
+
[start.key]: finalWidth
|
|
143
|
+
});
|
|
166
144
|
}
|
|
167
145
|
dragStateRef.current = null;
|
|
168
146
|
liveWidthRef.current = null;
|
|
@@ -171,7 +149,7 @@ function useColumnResize(columnWidths, onColumnWidthsChange) {
|
|
|
171
149
|
};
|
|
172
150
|
window.addEventListener("mousemove", onMove);
|
|
173
151
|
window.addEventListener("mouseup", onUp);
|
|
174
|
-
return
|
|
152
|
+
return () => {
|
|
175
153
|
window.removeEventListener("mousemove", onMove);
|
|
176
154
|
window.removeEventListener("mouseup", onUp);
|
|
177
155
|
};
|
|
@@ -183,16 +161,19 @@ function useColumnResize(columnWidths, onColumnWidthsChange) {
|
|
|
183
161
|
// Live widths map = host columnWidths with the in-flight drag value
|
|
184
162
|
// patched in. Memoised on [draggingKey, liveWidth, columnWidths] so
|
|
185
163
|
// the reference is stable when nothing is dragging.
|
|
186
|
-
|
|
164
|
+
const liveWidths = React.useMemo(() => {
|
|
187
165
|
if (!draggingKey || liveWidth == null) return columnWidths;
|
|
188
|
-
return
|
|
166
|
+
return {
|
|
167
|
+
...(columnWidths || {}),
|
|
168
|
+
[draggingKey]: liveWidth
|
|
169
|
+
};
|
|
189
170
|
}, [draggingKey, liveWidth, columnWidths]);
|
|
190
171
|
return {
|
|
191
|
-
handleMouseDown
|
|
192
|
-
handleKeyDown
|
|
193
|
-
liveWidths
|
|
172
|
+
handleMouseDown,
|
|
173
|
+
handleKeyDown,
|
|
174
|
+
liveWidths,
|
|
194
175
|
isResizing: draggingKey != null,
|
|
195
|
-
minWidth
|
|
176
|
+
minWidth
|
|
196
177
|
};
|
|
197
178
|
}
|
|
198
179
|
//# sourceMappingURL=_useColumnResize.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_useColumnResize.js","names":["React","_interopRequireWildcard","require","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","TypeError","Number","_slicedToArray","arr","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","o","minLen","_arrayLikeToArray","n","toString","slice","constructor","name","Array","from","test","len","arr2","_i","iterator","_s","_e","_x","_r","_arr","_n","_d","next","done","err","isArray","KEYBOARD_STEP","useColumnResize","columnWidths","onColumnWidthsChange","_options$minWidth","options","minWidth","_React$useState","useState","_React$useState2","draggingKey","setDraggingKey","_React$useState3","_React$useState4","liveWidth","setLiveWidth","liveWidthRef","useRef","dragStateRef","columnWidthsRef","useEffect","current","cellDirection","grip","cell","closest","window","getComputedStyle","direction","handleMouseDown","useCallback","e","_ref","preventDefault","stopPropagation","currentTarget","currentWidth","offsetWidth","x","clientX","width","handleKeyDown","_ref2","isLeft","isRight","isHome","clamped","Math","max","round","onMove","start","delta","onUp","_liveWidthRef$current","finalWidth","addEventListener","removeEventListener","liveWidths","useMemo","isResizing"],"sources":["../../../src/lib/v2/patterns/_useColumnResize.ts"],"sourcesContent":["import * as React from \"react\";\r\n\r\n/**\r\n * useColumnResize — Portnet UI v2 (private)\r\n *\r\n * Internal hook for the DataGrid + DataGridVirtualized resize\r\n * feature. NOT exported from the patterns barrel; underscore filename\r\n * prefix is the convention.\r\n *\r\n * const { handleMouseDown, handleKeyDown, liveWidths, isResizing, minWidth } =\r\n * useColumnResize(\r\n * columnWidths, // controlled\r\n * onColumnWidthsChange, // controlled\r\n * { minWidth: 50 }\r\n * );\r\n *\r\n * Behaviour (pointer):\r\n * - handleMouseDown(key) returns an onMouseDown handler. Attach to\r\n * the grip element on each `<th>` border.\r\n * - On mousedown: captures starting clientX + current width + the\r\n * direction of the cell's writing mode (LTR vs RTL). Sets\r\n * `isResizing = true` so callers (e.g. the reorder hook) can\r\n * short-circuit.\r\n * - On mousemove (window-bound): computes the resize delta\r\n * respecting RTL and updates a local \"live\" width via state.\r\n * Floors at `minWidth`.\r\n * - On mouseup (window-bound): commits the live width to the host\r\n * via `onColumnWidthsChange`. Clears all internal state.\r\n *\r\n * Behaviour (keyboard, DG-2 / WCAG 2.1.1):\r\n * - handleKeyDown(key) returns an onKeyDown handler for the SAME grip\r\n * (the grip is a focusable role=\"separator\"). ArrowRight / ArrowLeft\r\n * nudge the width by KEYBOARD_STEP px, RTL-aware so the direction\r\n * matches a rightward drag; Home resets to `minWidth`. Each press\r\n * commits immediately via `onColumnWidthsChange` (no drag session).\r\n * - `minWidth` is returned so the separator can advertise aria-valuemin.\r\n */\r\n\r\nexport type ColumnWidths = Record<string, number>;\r\n\r\n/** Width delta (px) applied per Arrow key press in keyboard resize. */\r\nconst KEYBOARD_STEP = 16;\r\n\r\nexport interface UseColumnResizeOptions {\r\n minWidth?: number | undefined;\r\n}\r\n\r\nexport interface UseColumnResizeResult {\r\n handleMouseDown: (key: string) => (e: React.MouseEvent) => void;\r\n handleKeyDown: (key: string) => (e: React.KeyboardEvent) => void;\r\n liveWidths: ColumnWidths | undefined;\r\n isResizing: boolean;\r\n minWidth: number;\r\n}\r\n\r\ninterface DragState {\r\n x: number;\r\n width: number;\r\n key: string;\r\n direction: 1 | -1;\r\n}\r\n\r\nexport default function useColumnResize(\r\n columnWidths: ColumnWidths | undefined,\r\n onColumnWidthsChange: ((widths: ColumnWidths) => void) | undefined,\r\n options: UseColumnResizeOptions = {}\r\n): UseColumnResizeResult {\r\n const minWidth = options.minWidth ?? 50;\r\n\r\n // React state for \"draggingKey\" + \"liveWidth\" drives the rendered\r\n // width during drag. Refs carry the latest values across the\r\n // mouseup closure (avoids the stale-closure bug).\r\n const [draggingKey, setDraggingKey] = React.useState<string | null>(null);\r\n const [liveWidth, setLiveWidth] = React.useState<number | null>(null);\r\n const liveWidthRef = React.useRef<number | null>(null);\r\n const dragStateRef = React.useRef<DragState | null>(null);\r\n\r\n // Keep the latest columnWidths reference reachable from the\r\n // mouseup closure without re-binding listeners on every prop\r\n // change. Avoids tearing down + re-adding the window listeners\r\n // on each parent re-render that ships a fresh widths object.\r\n const columnWidthsRef = React.useRef<ColumnWidths | undefined>(columnWidths);\r\n React.useEffect(() => {\r\n columnWidthsRef.current = columnWidths;\r\n }, [columnWidths]);\r\n\r\n // Shared RTL probe for a grip's owning <th>: -1 in RTL, 1 otherwise.\r\n const cellDirection = (grip: HTMLElement): 1 | -1 => {\r\n const cell = grip.closest(\"th\");\r\n return cell &&\r\n typeof window !== \"undefined\" &&\r\n typeof window.getComputedStyle === \"function\" &&\r\n window.getComputedStyle(cell).direction === \"rtl\"\r\n ? -1\r\n : 1;\r\n };\r\n\r\n const handleMouseDown = React.useCallback((key: string) => (e: React.MouseEvent) => {\r\n // Block native browser drag (text selection, image drag, the\r\n // ancestor `<th draggable>` if reorder is also on) and the\r\n // sortable-header click that lives next door in the same `<th>`.\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n const grip = e.currentTarget as HTMLElement;\r\n const cell = grip.closest(\"th\");\r\n if (!cell) return;\r\n\r\n // RTL detection at the cell level — most accurate (a `dir`\r\n // attribute may be set anywhere up the ancestor chain).\r\n const direction = cellDirection(grip);\r\n\r\n // Starting width: prefer the host-controlled value, fall back to\r\n // the rendered offsetWidth for a column the host hasn't sized.\r\n const currentWidth =\r\n (columnWidthsRef.current && columnWidthsRef.current[key]) ??\r\n cell.offsetWidth;\r\n\r\n dragStateRef.current = {\r\n x: e.clientX,\r\n width: currentWidth,\r\n key,\r\n direction,\r\n };\r\n\r\n liveWidthRef.current = currentWidth;\r\n setLiveWidth(currentWidth);\r\n setDraggingKey(key);\r\n }, []);\r\n\r\n // DG-2 — keyboard resize on the focusable grip. Commits immediately;\r\n // no drag session / window listeners involved.\r\n const handleKeyDown = React.useCallback(\r\n (key: string) => (e: React.KeyboardEvent) => {\r\n const isLeft = e.key === \"ArrowLeft\";\r\n const isRight = e.key === \"ArrowRight\";\r\n const isHome = e.key === \"Home\";\r\n if (!isLeft && !isRight && !isHome) return;\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n const grip = e.currentTarget as HTMLElement;\r\n const cell = grip.closest(\"th\");\r\n const direction = cellDirection(grip);\r\n\r\n const current =\r\n (columnWidthsRef.current && columnWidthsRef.current[key]) ??\r\n (cell ? cell.offsetWidth : minWidth);\r\n\r\n // RTL-aware so ArrowRight matches a rightward drag (which grows the\r\n // column in LTR and shrinks it in RTL, the grip being on the\r\n // inline-end edge).\r\n const next = isHome\r\n ? minWidth\r\n : current + (isRight ? 1 : -1) * KEYBOARD_STEP * direction;\r\n\r\n const clamped = Math.max(minWidth, Math.round(next));\r\n if (onColumnWidthsChange) {\r\n onColumnWidthsChange({ ...(columnWidthsRef.current || {}), [key]: clamped });\r\n }\r\n },\r\n [minWidth, onColumnWidthsChange]\r\n );\r\n\r\n React.useEffect(() => {\r\n if (!draggingKey) return undefined;\r\n\r\n const onMove = (e: MouseEvent) => {\r\n const start = dragStateRef.current;\r\n if (!start) return;\r\n const delta = (e.clientX - start.x) * start.direction;\r\n const next = Math.max(minWidth, start.width + delta);\r\n liveWidthRef.current = next;\r\n setLiveWidth(next);\r\n };\r\n\r\n const onUp = () => {\r\n const start = dragStateRef.current;\r\n const finalWidth = liveWidthRef.current ?? (start ? start.width : null);\r\n if (start && finalWidth != null && onColumnWidthsChange) {\r\n onColumnWidthsChange({\r\n ...(columnWidthsRef.current || {}),\r\n [start.key]: finalWidth,\r\n });\r\n }\r\n dragStateRef.current = null;\r\n liveWidthRef.current = null;\r\n setLiveWidth(null);\r\n setDraggingKey(null);\r\n };\r\n\r\n window.addEventListener(\"mousemove\", onMove);\r\n window.addEventListener(\"mouseup\", onUp);\r\n return () => {\r\n window.removeEventListener(\"mousemove\", onMove);\r\n window.removeEventListener(\"mouseup\", onUp);\r\n };\r\n // onColumnWidthsChange is intentionally listed — re-creates the\r\n // mouseup closure with the latest setter ref. minWidth is rare\r\n // to change but listed for correctness.\r\n }, [draggingKey, onColumnWidthsChange, minWidth]);\r\n\r\n // Live widths map = host columnWidths with the in-flight drag value\r\n // patched in. Memoised on [draggingKey, liveWidth, columnWidths] so\r\n // the reference is stable when nothing is dragging.\r\n const liveWidths = React.useMemo(() => {\r\n if (!draggingKey || liveWidth == null) return columnWidths;\r\n return { ...(columnWidths || {}), [draggingKey]: liveWidth };\r\n }, [draggingKey, liveWidth, columnWidths]);\r\n\r\n return {\r\n handleMouseDown,\r\n handleKeyDown,\r\n liveWidths,\r\n isResizing: draggingKey != null,\r\n minWidth,\r\n };\r\n}\r\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"_useColumnResize.js","names":["React","_interopRequireWildcard","require","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","KEYBOARD_STEP","useColumnResize","columnWidths","onColumnWidthsChange","options","minWidth","draggingKey","setDraggingKey","useState","liveWidth","setLiveWidth","liveWidthRef","useRef","dragStateRef","columnWidthsRef","useEffect","current","cellDirection","grip","cell","closest","window","getComputedStyle","direction","handleMouseDown","useCallback","key","preventDefault","stopPropagation","currentTarget","currentWidth","offsetWidth","x","clientX","width","handleKeyDown","isLeft","isRight","isHome","next","clamped","Math","max","round","undefined","onMove","start","delta","onUp","finalWidth","addEventListener","removeEventListener","liveWidths","useMemo","isResizing"],"sources":["../../../src/lib/v2/patterns/_useColumnResize.ts"],"sourcesContent":["import * as React from \"react\";\r\n\r\n/**\r\n * useColumnResize — Portnet UI v2 (private)\r\n *\r\n * Internal hook for the DataGrid + DataGridVirtualized resize\r\n * feature. NOT exported from the patterns barrel; underscore filename\r\n * prefix is the convention.\r\n *\r\n * const { handleMouseDown, handleKeyDown, liveWidths, isResizing, minWidth } =\r\n * useColumnResize(\r\n * columnWidths, // controlled\r\n * onColumnWidthsChange, // controlled\r\n * { minWidth: 50 }\r\n * );\r\n *\r\n * Behaviour (pointer):\r\n * - handleMouseDown(key) returns an onMouseDown handler. Attach to\r\n * the grip element on each `<th>` border.\r\n * - On mousedown: captures starting clientX + current width + the\r\n * direction of the cell's writing mode (LTR vs RTL). Sets\r\n * `isResizing = true` so callers (e.g. the reorder hook) can\r\n * short-circuit.\r\n * - On mousemove (window-bound): computes the resize delta\r\n * respecting RTL and updates a local \"live\" width via state.\r\n * Floors at `minWidth`.\r\n * - On mouseup (window-bound): commits the live width to the host\r\n * via `onColumnWidthsChange`. Clears all internal state.\r\n *\r\n * Behaviour (keyboard, DG-2 / WCAG 2.1.1):\r\n * - handleKeyDown(key) returns an onKeyDown handler for the SAME grip\r\n * (the grip is a focusable role=\"separator\"). ArrowRight / ArrowLeft\r\n * nudge the width by KEYBOARD_STEP px, RTL-aware so the direction\r\n * matches a rightward drag; Home resets to `minWidth`. Each press\r\n * commits immediately via `onColumnWidthsChange` (no drag session).\r\n * - `minWidth` is returned so the separator can advertise aria-valuemin.\r\n */\r\n\r\nexport type ColumnWidths = Record<string, number>;\r\n\r\n/** Width delta (px) applied per Arrow key press in keyboard resize. */\r\nconst KEYBOARD_STEP = 16;\r\n\r\nexport interface UseColumnResizeOptions {\r\n minWidth?: number | undefined;\r\n}\r\n\r\nexport interface UseColumnResizeResult {\r\n handleMouseDown: (key: string) => (e: React.MouseEvent) => void;\r\n handleKeyDown: (key: string) => (e: React.KeyboardEvent) => void;\r\n liveWidths: ColumnWidths | undefined;\r\n isResizing: boolean;\r\n minWidth: number;\r\n}\r\n\r\ninterface DragState {\r\n x: number;\r\n width: number;\r\n key: string;\r\n direction: 1 | -1;\r\n}\r\n\r\nexport default function useColumnResize(\r\n columnWidths: ColumnWidths | undefined,\r\n onColumnWidthsChange: ((widths: ColumnWidths) => void) | undefined,\r\n options: UseColumnResizeOptions = {}\r\n): UseColumnResizeResult {\r\n const minWidth = options.minWidth ?? 50;\r\n\r\n // React state for \"draggingKey\" + \"liveWidth\" drives the rendered\r\n // width during drag. Refs carry the latest values across the\r\n // mouseup closure (avoids the stale-closure bug).\r\n const [draggingKey, setDraggingKey] = React.useState<string | null>(null);\r\n const [liveWidth, setLiveWidth] = React.useState<number | null>(null);\r\n const liveWidthRef = React.useRef<number | null>(null);\r\n const dragStateRef = React.useRef<DragState | null>(null);\r\n\r\n // Keep the latest columnWidths reference reachable from the\r\n // mouseup closure without re-binding listeners on every prop\r\n // change. Avoids tearing down + re-adding the window listeners\r\n // on each parent re-render that ships a fresh widths object.\r\n const columnWidthsRef = React.useRef<ColumnWidths | undefined>(columnWidths);\r\n React.useEffect(() => {\r\n columnWidthsRef.current = columnWidths;\r\n }, [columnWidths]);\r\n\r\n // Shared RTL probe for a grip's owning <th>: -1 in RTL, 1 otherwise.\r\n const cellDirection = (grip: HTMLElement): 1 | -1 => {\r\n const cell = grip.closest(\"th\");\r\n return cell &&\r\n typeof window !== \"undefined\" &&\r\n typeof window.getComputedStyle === \"function\" &&\r\n window.getComputedStyle(cell).direction === \"rtl\"\r\n ? -1\r\n : 1;\r\n };\r\n\r\n const handleMouseDown = React.useCallback((key: string) => (e: React.MouseEvent) => {\r\n // Block native browser drag (text selection, image drag, the\r\n // ancestor `<th draggable>` if reorder is also on) and the\r\n // sortable-header click that lives next door in the same `<th>`.\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n const grip = e.currentTarget as HTMLElement;\r\n const cell = grip.closest(\"th\");\r\n if (!cell) return;\r\n\r\n // RTL detection at the cell level — most accurate (a `dir`\r\n // attribute may be set anywhere up the ancestor chain).\r\n const direction = cellDirection(grip);\r\n\r\n // Starting width: prefer the host-controlled value, fall back to\r\n // the rendered offsetWidth for a column the host hasn't sized.\r\n const currentWidth =\r\n (columnWidthsRef.current && columnWidthsRef.current[key]) ??\r\n cell.offsetWidth;\r\n\r\n dragStateRef.current = {\r\n x: e.clientX,\r\n width: currentWidth,\r\n key,\r\n direction,\r\n };\r\n\r\n liveWidthRef.current = currentWidth;\r\n setLiveWidth(currentWidth);\r\n setDraggingKey(key);\r\n }, []);\r\n\r\n // DG-2 — keyboard resize on the focusable grip. Commits immediately;\r\n // no drag session / window listeners involved.\r\n const handleKeyDown = React.useCallback(\r\n (key: string) => (e: React.KeyboardEvent) => {\r\n const isLeft = e.key === \"ArrowLeft\";\r\n const isRight = e.key === \"ArrowRight\";\r\n const isHome = e.key === \"Home\";\r\n if (!isLeft && !isRight && !isHome) return;\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n const grip = e.currentTarget as HTMLElement;\r\n const cell = grip.closest(\"th\");\r\n const direction = cellDirection(grip);\r\n\r\n const current =\r\n (columnWidthsRef.current && columnWidthsRef.current[key]) ??\r\n (cell ? cell.offsetWidth : minWidth);\r\n\r\n // RTL-aware so ArrowRight matches a rightward drag (which grows the\r\n // column in LTR and shrinks it in RTL, the grip being on the\r\n // inline-end edge).\r\n const next = isHome\r\n ? minWidth\r\n : current + (isRight ? 1 : -1) * KEYBOARD_STEP * direction;\r\n\r\n const clamped = Math.max(minWidth, Math.round(next));\r\n if (onColumnWidthsChange) {\r\n onColumnWidthsChange({ ...(columnWidthsRef.current || {}), [key]: clamped });\r\n }\r\n },\r\n [minWidth, onColumnWidthsChange]\r\n );\r\n\r\n React.useEffect(() => {\r\n if (!draggingKey) return undefined;\r\n\r\n const onMove = (e: MouseEvent) => {\r\n const start = dragStateRef.current;\r\n if (!start) return;\r\n const delta = (e.clientX - start.x) * start.direction;\r\n const next = Math.max(minWidth, start.width + delta);\r\n liveWidthRef.current = next;\r\n setLiveWidth(next);\r\n };\r\n\r\n const onUp = () => {\r\n const start = dragStateRef.current;\r\n const finalWidth = liveWidthRef.current ?? (start ? start.width : null);\r\n if (start && finalWidth != null && onColumnWidthsChange) {\r\n onColumnWidthsChange({\r\n ...(columnWidthsRef.current || {}),\r\n [start.key]: finalWidth,\r\n });\r\n }\r\n dragStateRef.current = null;\r\n liveWidthRef.current = null;\r\n setLiveWidth(null);\r\n setDraggingKey(null);\r\n };\r\n\r\n window.addEventListener(\"mousemove\", onMove);\r\n window.addEventListener(\"mouseup\", onUp);\r\n return () => {\r\n window.removeEventListener(\"mousemove\", onMove);\r\n window.removeEventListener(\"mouseup\", onUp);\r\n };\r\n // onColumnWidthsChange is intentionally listed — re-creates the\r\n // mouseup closure with the latest setter ref. minWidth is rare\r\n // to change but listed for correctness.\r\n }, [draggingKey, onColumnWidthsChange, minWidth]);\r\n\r\n // Live widths map = host columnWidths with the in-flight drag value\r\n // patched in. Memoised on [draggingKey, liveWidth, columnWidths] so\r\n // the reference is stable when nothing is dragging.\r\n const liveWidths = React.useMemo(() => {\r\n if (!draggingKey || liveWidth == null) return columnWidths;\r\n return { ...(columnWidths || {}), [draggingKey]: liveWidth };\r\n }, [draggingKey, liveWidth, columnWidths]);\r\n\r\n return {\r\n handleMouseDown,\r\n handleKeyDown,\r\n liveWidths,\r\n isResizing: draggingKey != null,\r\n minWidth,\r\n };\r\n}\r\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import type { DataGridToolbarFilterChip } from "./DataGridToolbar";
|
|
2
|
+
/**
|
|
3
|
+
* filterCriteria — active search criteria as removable chips
|
|
4
|
+
* (capability gap G-42).
|
|
5
|
+
*
|
|
6
|
+
* ─────────────────────────────────────────────────────────────────────────────
|
|
7
|
+
* WHY THIS BELONGS IN THE LIBRARY
|
|
8
|
+
*
|
|
9
|
+
* The library owns HALF of this already, and the half it owns is the rendering:
|
|
10
|
+
* `DataGridToolbar.filterChips` draws one removable chip per criterion, and
|
|
11
|
+
* `DataGridToolbarFilterChip` describes an entry. That type's own docstring
|
|
12
|
+
* records where the request came from — `refonte-frontend`, whose ten listings
|
|
13
|
+
* each had to build the array — and that §Filters and §Search make removable
|
|
14
|
+
* active criteria a MUST.
|
|
15
|
+
*
|
|
16
|
+
* What was missing is the BUILDER. Ten local copies would have drifted on the
|
|
17
|
+
* two things that are not obvious:
|
|
18
|
+
*
|
|
19
|
+
* 1. WHAT COUNTS AS SET. `0` is the "unset" value of a reference mirror on
|
|
20
|
+
* some hosts (`villeEntreeId: 0`), `""` on others, `null` elsewhere. A
|
|
21
|
+
* chip that appears for `0` announces a filter nobody chose.
|
|
22
|
+
* 2. WHAT A REMOVAL MUST CLEAR. Reference criteria are held as PAIRS — a
|
|
23
|
+
* scalar mirror for the payload and an object for display
|
|
24
|
+
* (`importateurCode` / `importateurId`). Clearing only the displayed key
|
|
25
|
+
* removes the chip from the screen while the criterion STAYS IN THE
|
|
26
|
+
* PAYLOAD: the worst of both worlds, an invisible filter that still
|
|
27
|
+
* filters. Hence `linkedKeys`.
|
|
28
|
+
*
|
|
29
|
+
* >>> THIS BUILDER DOES NOT RE-RUN THE SEARCH, and that is deliberate. `onRemove`
|
|
30
|
+
* >>> hands the host the keys to clear and gives the turn back: only the host
|
|
31
|
+
* >>> knows whether to clear Formik fields, rebuild its payload and redispatch —
|
|
32
|
+
* >>> and on server-paginated listings a removal is a REQUEST, not a local
|
|
33
|
+
* >>> filtering pass. A builder that dispatched would be wrong on every screen
|
|
34
|
+
* >>> whose payload it cannot know. <<<
|
|
35
|
+
* ─────────────────────────────────────────────────────────────────────────────
|
|
36
|
+
*
|
|
37
|
+
* Promoted from `refonte-frontend` (Area 5), where it served ten listings.
|
|
38
|
+
* Pair it with `useAppliedFilters`: this builds the chips, that decides which
|
|
39
|
+
* criteria they may show — chips built from live form values announce a filter
|
|
40
|
+
* that is being typed and filters nothing.
|
|
41
|
+
*/
|
|
42
|
+
/** A filterable criterion, as the screen describes it. */
|
|
43
|
+
export interface FilterCriterion {
|
|
44
|
+
/** Form field holding the displayed value. */
|
|
45
|
+
key: string;
|
|
46
|
+
/** Label the user reads on the chip. */
|
|
47
|
+
label: string;
|
|
48
|
+
/**
|
|
49
|
+
* Fields to clear IN ADDITION to `key` — scalar mirrors, ids. See the note
|
|
50
|
+
* on pairs above: omitting them leaves the criterion in the payload.
|
|
51
|
+
*/
|
|
52
|
+
linkedKeys?: string[] | undefined;
|
|
53
|
+
/**
|
|
54
|
+
* Renders the value on the chip. Defaults to the description of a reference
|
|
55
|
+
* object, otherwise the value as-is.
|
|
56
|
+
*/
|
|
57
|
+
format?: ((value: unknown) => string) | undefined;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* `true` if a criterion is SET — exactly the rule the chips use.
|
|
61
|
+
*
|
|
62
|
+
* Exported so a "Filters" button counter can count the same criteria the chips
|
|
63
|
+
* render. Screens used to count non-empty `formik.values`, which counts every
|
|
64
|
+
* reference criterion TWICE — the pair again — so picking one category showed
|
|
65
|
+
* "2 filters".
|
|
66
|
+
*/
|
|
67
|
+
export declare function isCriterionSet(value: unknown): boolean;
|
|
68
|
+
/** Every key of every descriptor — for a "clear all". */
|
|
69
|
+
export declare function filterCriteriaKeys(criteria: readonly FilterCriterion[]): string[];
|
|
70
|
+
/**
|
|
71
|
+
* Builds the chips of the criteria that are SET.
|
|
72
|
+
*
|
|
73
|
+
* @param values current values of the search form (or the applied snapshot)
|
|
74
|
+
* @param criteria criteria to watch, in display order
|
|
75
|
+
* @param onRemove called with every key to clear for that criterion
|
|
76
|
+
*/
|
|
77
|
+
export declare function buildFilterChips(values: Record<string, unknown>, criteria: readonly FilterCriterion[], onRemove: (keys: string[]) => void): DataGridToolbarFilterChip[];
|
|
78
|
+
//# sourceMappingURL=filterCriteria.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filterCriteria.d.ts","sourceRoot":"","sources":["../../../src/lib/v2/patterns/filterCriteria.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAEnE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,0DAA0D;AAC1D,MAAM,WAAW,eAAe;IAC9B,8CAA8C;IAC9C,GAAG,EAAE,MAAM,CAAC;IACZ,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAClC;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC,GAAG,SAAS,CAAC;CACnD;AAyBD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEtD;AAED,yDAAyD;AACzD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,SAAS,eAAe,EAAE,GAAG,MAAM,EAAE,CAEjF;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,QAAQ,EAAE,SAAS,eAAe,EAAE,EACpC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,GACjC,yBAAyB,EAAE,CAc7B"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.buildFilterChips = buildFilterChips;
|
|
7
|
+
exports.filterCriteriaKeys = filterCriteriaKeys;
|
|
8
|
+
exports.isCriterionSet = isCriterionSet;
|
|
9
|
+
/**
|
|
10
|
+
* filterCriteria — active search criteria as removable chips
|
|
11
|
+
* (capability gap G-42).
|
|
12
|
+
*
|
|
13
|
+
* ─────────────────────────────────────────────────────────────────────────────
|
|
14
|
+
* WHY THIS BELONGS IN THE LIBRARY
|
|
15
|
+
*
|
|
16
|
+
* The library owns HALF of this already, and the half it owns is the rendering:
|
|
17
|
+
* `DataGridToolbar.filterChips` draws one removable chip per criterion, and
|
|
18
|
+
* `DataGridToolbarFilterChip` describes an entry. That type's own docstring
|
|
19
|
+
* records where the request came from — `refonte-frontend`, whose ten listings
|
|
20
|
+
* each had to build the array — and that §Filters and §Search make removable
|
|
21
|
+
* active criteria a MUST.
|
|
22
|
+
*
|
|
23
|
+
* What was missing is the BUILDER. Ten local copies would have drifted on the
|
|
24
|
+
* two things that are not obvious:
|
|
25
|
+
*
|
|
26
|
+
* 1. WHAT COUNTS AS SET. `0` is the "unset" value of a reference mirror on
|
|
27
|
+
* some hosts (`villeEntreeId: 0`), `""` on others, `null` elsewhere. A
|
|
28
|
+
* chip that appears for `0` announces a filter nobody chose.
|
|
29
|
+
* 2. WHAT A REMOVAL MUST CLEAR. Reference criteria are held as PAIRS — a
|
|
30
|
+
* scalar mirror for the payload and an object for display
|
|
31
|
+
* (`importateurCode` / `importateurId`). Clearing only the displayed key
|
|
32
|
+
* removes the chip from the screen while the criterion STAYS IN THE
|
|
33
|
+
* PAYLOAD: the worst of both worlds, an invisible filter that still
|
|
34
|
+
* filters. Hence `linkedKeys`.
|
|
35
|
+
*
|
|
36
|
+
* >>> THIS BUILDER DOES NOT RE-RUN THE SEARCH, and that is deliberate. `onRemove`
|
|
37
|
+
* >>> hands the host the keys to clear and gives the turn back: only the host
|
|
38
|
+
* >>> knows whether to clear Formik fields, rebuild its payload and redispatch —
|
|
39
|
+
* >>> and on server-paginated listings a removal is a REQUEST, not a local
|
|
40
|
+
* >>> filtering pass. A builder that dispatched would be wrong on every screen
|
|
41
|
+
* >>> whose payload it cannot know. <<<
|
|
42
|
+
* ─────────────────────────────────────────────────────────────────────────────
|
|
43
|
+
*
|
|
44
|
+
* Promoted from `refonte-frontend` (Area 5), where it served ten listings.
|
|
45
|
+
* Pair it with `useAppliedFilters`: this builds the chips, that decides which
|
|
46
|
+
* criteria they may show — chips built from live form values announce a filter
|
|
47
|
+
* that is being typed and filters nothing.
|
|
48
|
+
*/
|
|
49
|
+
|
|
50
|
+
/** A filterable criterion, as the screen describes it. */
|
|
51
|
+
|
|
52
|
+
/** Values that mean "not set" — see point 1 of the note above. */
|
|
53
|
+
function isEmpty(value) {
|
|
54
|
+
if (value === null || value === undefined || value === "") return true;
|
|
55
|
+
/* `0` is the "unset" value of reference mirrors on several hosts
|
|
56
|
+
* (`villeEntreeId: 0`, `importateurId: 0`). A chip for `0` would announce a
|
|
57
|
+
* criterion nobody chose. */
|
|
58
|
+
if (value === 0) return true;
|
|
59
|
+
if (Array.isArray(value) && value.length === 0) return true;
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/** Default rendering: a reference object's description, or the value. */
|
|
64
|
+
function formatDefault(value) {
|
|
65
|
+
if (value !== null && typeof value === "object") {
|
|
66
|
+
const object = value;
|
|
67
|
+
const readable = object["description"] ?? object["libelle"] ?? object["label"] ?? object["code"] ?? object["id"];
|
|
68
|
+
return readable === undefined ? "" : String(readable);
|
|
69
|
+
}
|
|
70
|
+
return String(value);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* `true` if a criterion is SET — exactly the rule the chips use.
|
|
75
|
+
*
|
|
76
|
+
* Exported so a "Filters" button counter can count the same criteria the chips
|
|
77
|
+
* render. Screens used to count non-empty `formik.values`, which counts every
|
|
78
|
+
* reference criterion TWICE — the pair again — so picking one category showed
|
|
79
|
+
* "2 filters".
|
|
80
|
+
*/
|
|
81
|
+
function isCriterionSet(value) {
|
|
82
|
+
return !isEmpty(value);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/** Every key of every descriptor — for a "clear all". */
|
|
86
|
+
function filterCriteriaKeys(criteria) {
|
|
87
|
+
return criteria.flatMap(c => [c.key, ...(c.linkedKeys ?? [])]);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Builds the chips of the criteria that are SET.
|
|
92
|
+
*
|
|
93
|
+
* @param values current values of the search form (or the applied snapshot)
|
|
94
|
+
* @param criteria criteria to watch, in display order
|
|
95
|
+
* @param onRemove called with every key to clear for that criterion
|
|
96
|
+
*/
|
|
97
|
+
function buildFilterChips(values, criteria, onRemove) {
|
|
98
|
+
return criteria.filter(criterion => !isEmpty(values[criterion.key])).map(criterion => {
|
|
99
|
+
const render = criterion.format ?? formatDefault;
|
|
100
|
+
const value = render(values[criterion.key]);
|
|
101
|
+
return {
|
|
102
|
+
key: criterion.key,
|
|
103
|
+
/* "Label: value" rather than the value alone: "AFFECTE" does not say
|
|
104
|
+
* WHICH criterion it is when three chips sit side by side. */
|
|
105
|
+
label: value ? `${criterion.label} : ${value}` : criterion.label,
|
|
106
|
+
onRemove: () => onRemove([criterion.key, ...(criterion.linkedKeys ?? [])])
|
|
107
|
+
};
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=filterCriteria.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filterCriteria.js","names":["isEmpty","value","undefined","Array","isArray","length","formatDefault","object","readable","String","isCriterionSet","filterCriteriaKeys","criteria","flatMap","c","key","linkedKeys","buildFilterChips","values","onRemove","filter","criterion","map","render","format","label"],"sources":["../../../src/lib/v2/patterns/filterCriteria.ts"],"sourcesContent":["import type { DataGridToolbarFilterChip } from \"./DataGridToolbar\";\r\n\r\n/**\r\n * filterCriteria — active search criteria as removable chips\r\n * (capability gap G-42).\r\n *\r\n * ─────────────────────────────────────────────────────────────────────────────\r\n * WHY THIS BELONGS IN THE LIBRARY\r\n *\r\n * The library owns HALF of this already, and the half it owns is the rendering:\r\n * `DataGridToolbar.filterChips` draws one removable chip per criterion, and\r\n * `DataGridToolbarFilterChip` describes an entry. That type's own docstring\r\n * records where the request came from — `refonte-frontend`, whose ten listings\r\n * each had to build the array — and that §Filters and §Search make removable\r\n * active criteria a MUST.\r\n *\r\n * What was missing is the BUILDER. Ten local copies would have drifted on the\r\n * two things that are not obvious:\r\n *\r\n * 1. WHAT COUNTS AS SET. `0` is the \"unset\" value of a reference mirror on\r\n * some hosts (`villeEntreeId: 0`), `\"\"` on others, `null` elsewhere. A\r\n * chip that appears for `0` announces a filter nobody chose.\r\n * 2. WHAT A REMOVAL MUST CLEAR. Reference criteria are held as PAIRS — a\r\n * scalar mirror for the payload and an object for display\r\n * (`importateurCode` / `importateurId`). Clearing only the displayed key\r\n * removes the chip from the screen while the criterion STAYS IN THE\r\n * PAYLOAD: the worst of both worlds, an invisible filter that still\r\n * filters. Hence `linkedKeys`.\r\n *\r\n * >>> THIS BUILDER DOES NOT RE-RUN THE SEARCH, and that is deliberate. `onRemove`\r\n * >>> hands the host the keys to clear and gives the turn back: only the host\r\n * >>> knows whether to clear Formik fields, rebuild its payload and redispatch —\r\n * >>> and on server-paginated listings a removal is a REQUEST, not a local\r\n * >>> filtering pass. A builder that dispatched would be wrong on every screen\r\n * >>> whose payload it cannot know. <<<\r\n * ─────────────────────────────────────────────────────────────────────────────\r\n *\r\n * Promoted from `refonte-frontend` (Area 5), where it served ten listings.\r\n * Pair it with `useAppliedFilters`: this builds the chips, that decides which\r\n * criteria they may show — chips built from live form values announce a filter\r\n * that is being typed and filters nothing.\r\n */\r\n\r\n/** A filterable criterion, as the screen describes it. */\r\nexport interface FilterCriterion {\r\n /** Form field holding the displayed value. */\r\n key: string;\r\n /** Label the user reads on the chip. */\r\n label: string;\r\n /**\r\n * Fields to clear IN ADDITION to `key` — scalar mirrors, ids. See the note\r\n * on pairs above: omitting them leaves the criterion in the payload.\r\n */\r\n linkedKeys?: string[] | undefined;\r\n /**\r\n * Renders the value on the chip. Defaults to the description of a reference\r\n * object, otherwise the value as-is.\r\n */\r\n format?: ((value: unknown) => string) | undefined;\r\n}\r\n\r\n/** Values that mean \"not set\" — see point 1 of the note above. */\r\nfunction isEmpty(value: unknown): boolean {\r\n if (value === null || value === undefined || value === \"\") return true;\r\n /* `0` is the \"unset\" value of reference mirrors on several hosts\r\n * (`villeEntreeId: 0`, `importateurId: 0`). A chip for `0` would announce a\r\n * criterion nobody chose. */\r\n if (value === 0) return true;\r\n if (Array.isArray(value) && value.length === 0) return true;\r\n return false;\r\n}\r\n\r\n/** Default rendering: a reference object's description, or the value. */\r\nfunction formatDefault(value: unknown): string {\r\n if (value !== null && typeof value === \"object\") {\r\n const object = value as Record<string, unknown>;\r\n const readable =\r\n object[\"description\"] ?? object[\"libelle\"] ?? object[\"label\"] ??\r\n object[\"code\"] ?? object[\"id\"];\r\n return readable === undefined ? \"\" : String(readable);\r\n }\r\n return String(value);\r\n}\r\n\r\n/**\r\n * `true` if a criterion is SET — exactly the rule the chips use.\r\n *\r\n * Exported so a \"Filters\" button counter can count the same criteria the chips\r\n * render. Screens used to count non-empty `formik.values`, which counts every\r\n * reference criterion TWICE — the pair again — so picking one category showed\r\n * \"2 filters\".\r\n */\r\nexport function isCriterionSet(value: unknown): boolean {\r\n return !isEmpty(value);\r\n}\r\n\r\n/** Every key of every descriptor — for a \"clear all\". */\r\nexport function filterCriteriaKeys(criteria: readonly FilterCriterion[]): string[] {\r\n return criteria.flatMap((c) => [c.key, ...(c.linkedKeys ?? [])]);\r\n}\r\n\r\n/**\r\n * Builds the chips of the criteria that are SET.\r\n *\r\n * @param values current values of the search form (or the applied snapshot)\r\n * @param criteria criteria to watch, in display order\r\n * @param onRemove called with every key to clear for that criterion\r\n */\r\nexport function buildFilterChips(\r\n values: Record<string, unknown>,\r\n criteria: readonly FilterCriterion[],\r\n onRemove: (keys: string[]) => void\r\n): DataGridToolbarFilterChip[] {\r\n return criteria\r\n .filter((criterion) => !isEmpty(values[criterion.key]))\r\n .map((criterion) => {\r\n const render = criterion.format ?? formatDefault;\r\n const value = render(values[criterion.key]);\r\n return {\r\n key: criterion.key,\r\n /* \"Label: value\" rather than the value alone: \"AFFECTE\" does not say\r\n * WHICH criterion it is when three chips sit side by side. */\r\n label: value ? `${criterion.label} : ${value}` : criterion.label,\r\n onRemove: () => onRemove([criterion.key, ...(criterion.linkedKeys ?? [])]),\r\n };\r\n });\r\n}\r\n"],"mappings":";;;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAkBA;AACA,SAASA,OAAOA,CAACC,KAAc,EAAW;EACxC,IAAIA,KAAK,KAAK,IAAI,IAAIA,KAAK,KAAKC,SAAS,IAAID,KAAK,KAAK,EAAE,EAAE,OAAO,IAAI;EACtE;AACF;AACA;EACE,IAAIA,KAAK,KAAK,CAAC,EAAE,OAAO,IAAI;EAC5B,IAAIE,KAAK,CAACC,OAAO,CAACH,KAAK,CAAC,IAAIA,KAAK,CAACI,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI;EAC3D,OAAO,KAAK;AACd;;AAEA;AACA,SAASC,aAAaA,CAACL,KAAc,EAAU;EAC7C,IAAIA,KAAK,KAAK,IAAI,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;IAC/C,MAAMM,MAAM,GAAGN,KAAgC;IAC/C,MAAMO,QAAQ,GACZD,MAAM,CAAC,aAAa,CAAC,IAAIA,MAAM,CAAC,SAAS,CAAC,IAAIA,MAAM,CAAC,OAAO,CAAC,IAC7DA,MAAM,CAAC,MAAM,CAAC,IAAIA,MAAM,CAAC,IAAI,CAAC;IAChC,OAAOC,QAAQ,KAAKN,SAAS,GAAG,EAAE,GAAGO,MAAM,CAACD,QAAQ,CAAC;EACvD;EACA,OAAOC,MAAM,CAACR,KAAK,CAAC;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASS,cAAcA,CAACT,KAAc,EAAW;EACtD,OAAO,CAACD,OAAO,CAACC,KAAK,CAAC;AACxB;;AAEA;AACO,SAASU,kBAAkBA,CAACC,QAAoC,EAAY;EACjF,OAAOA,QAAQ,CAACC,OAAO,CAAEC,CAAC,IAAK,CAACA,CAAC,CAACC,GAAG,EAAE,IAAID,CAAC,CAACE,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC;AAClE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,gBAAgBA,CAC9BC,MAA+B,EAC/BN,QAAoC,EACpCO,QAAkC,EACL;EAC7B,OAAOP,QAAQ,CACZQ,MAAM,CAAEC,SAAS,IAAK,CAACrB,OAAO,CAACkB,MAAM,CAACG,SAAS,CAACN,GAAG,CAAC,CAAC,CAAC,CACtDO,GAAG,CAAED,SAAS,IAAK;IAClB,MAAME,MAAM,GAAGF,SAAS,CAACG,MAAM,IAAIlB,aAAa;IAChD,MAAML,KAAK,GAAGsB,MAAM,CAACL,MAAM,CAACG,SAAS,CAACN,GAAG,CAAC,CAAC;IAC3C,OAAO;MACLA,GAAG,EAAEM,SAAS,CAACN,GAAG;MAClB;AACR;MACQU,KAAK,EAAExB,KAAK,GAAG,GAAGoB,SAAS,CAACI,KAAK,MAAMxB,KAAK,EAAE,GAAGoB,SAAS,CAACI,KAAK;MAChEN,QAAQ,EAAEA,CAAA,KAAMA,QAAQ,CAAC,CAACE,SAAS,CAACN,GAAG,EAAE,IAAIM,SAAS,CAACL,UAAU,IAAI,EAAE,CAAC,CAAC;IAC3E,CAAC;EACH,CAAC,CAAC;AACN","ignoreList":[]}
|