@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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePicker.js","names":["React","LocalizationProvider","DatePicker","MuiDatePicker","AdapterMoment","dateToMoment","momentToDate","jsx","_jsx","CHARTER_FORMAT","forwardRef","_ref","ref","value","onChange","onBlur","minDate","maxDate","_ref$disablePast","disablePast","_ref$disableFuture","disableFuture","_ref$disabled","disabled","_ref$readOnly","readOnly","error","_ref$placeholder","placeholder","_ref$fullWidth","fullWidth","inputProps","_ref$adapterLocale","adapterLocale","sx","rest","_objectWithoutProperties","_excluded","_ref2","fieldId","id","ariaDescribedby","ariaInvalid","ariaRequired","ariaLabelledby","domRest","_excluded2","handleChange","next","slotProps","useMemo","textField","_objectSpread","size","fontVariantNumeric","htmlInput","minDateM","maxDateM","dateAdapter","children","format","DATE_FORMAT_CHARTER"],"sources":["../../../../src/lib/v2/components/DatePicker.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { LocalizationProvider } from \"@mui/x-date-pickers/LocalizationProvider\";\r\nimport { DatePicker as MuiDatePicker } from \"@mui/x-date-pickers/DatePicker\";\r\nimport type { DatePickerProps as MuiDatePickerProps } from \"@mui/x-date-pickers/DatePicker\";\r\nimport { AdapterMoment } from \"@mui/x-date-pickers/AdapterMoment\";\r\nimport type { Moment } from \"moment\";\r\nimport \"moment/locale/fr\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\nimport { dateToMoment, momentToDate } from \"./_pickerShared\";\r\n\r\n/**\r\n * DatePicker — Portnet UI v2\r\n *\r\n * Charter §03 · Component \"DatePicker\". Format AAAA-MM-JJ.\r\n *\r\n * <Field label=\"Date d'expiration\" required>\r\n * <DatePicker\r\n * value={expDate}\r\n * onChange={setExpDate}\r\n * minDate={new Date()}\r\n * />\r\n * </Field>\r\n *\r\n * Value contract:\r\n * - value/onChange exchange JavaScript Date objects (or null).\r\n * - Invalid dates (NaN, malformed user input) are coerced to null\r\n * so consumers never receive an \"Invalid Date\" instance.\r\n * - The component handles moment conversion internally.\r\n *\r\n * Locale:\r\n * Default `adapterLocale=\"fr\"` — picker reads month / weekday names\r\n * from moment's French locale data (imported here). Hosts wanting\r\n * other locales pass the BCP-47 / moment short tag AND import the\r\n * matching moment locale data themselves:\r\n *\r\n * import \"moment/locale/ar\";\r\n * <DatePicker adapterLocale=\"ar\" />\r\n *\r\n * This component does NOT mutate moment's GLOBAL locale on import\r\n * (older versions did via `moment.locale(\"fr\")` — that leaked the\r\n * library's preference into ALL host code using moment outside the\r\n * picker).\r\n *\r\n * Format:\r\n * - Display: AAAA-MM-JJ (charter convention). MUI X v6+ derives the\r\n * input mask from this format string automatically — no need for\r\n * the v5-era `mask=\"____-__-__\"` companion prop.\r\n * - The text input accepts user typing in the same format; partial\r\n * entries are tolerated until the user blurs or hits Enter.\r\n *\r\n * Constraints:\r\n * - minDate / maxDate accept Date objects or null.\r\n * - disablePast / disableFuture for relative bounds.\r\n *\r\n * Sibling pickers in the same family:\r\n * - DateTimePicker — adds time-of-day (HH:MM) on top of the date.\r\n * - TimePicker — time only (HH:MM), date portion ignored.\r\n * - DateRangePicker — paired start/end with cross-validation and\r\n * optional preset shortcuts.\r\n * All consume the same _pickerShared boundary helpers as this file\r\n * and follow the same MUI X v9 slots / slotProps surface.\r\n *\r\n * A11y (DP-1): when used inside <Field>, Field cloneElement-injects id +\r\n * aria-describedby / aria-invalid / aria-required (label + hint/error\r\n * association) onto this child. MUI X does NOT forward top-level aria/id to the\r\n * field <input>, so those are intercepted here and routed onto the input via\r\n * slotProps.htmlInput (the <input> element slot — see the v9 note below).\r\n * Explicit `inputProps` still win.\r\n *\r\n * MUI X v9 surface notes (migrated from v5 in Batch 4):\r\n * - The v5 `renderInput` callback + `inputFormat` + `mask` triad has\r\n * been REPLACED by the v6+ `slots`/`slotProps` API and the single\r\n * `format` prop. The textField slot is the canonical entry point\r\n * for any TextField prop override.\r\n * - Inside `slotProps.textField`, the `slotProps.htmlInput` nested\r\n * bag carries what used to be TextField's `inputProps={...}`\r\n * (placeholder, aria-*, min/max, etc.). This double-nesting\r\n * reflects MUI v9's own TextField API: the htmlInput slot is the\r\n * <input/> element target, distinct from the input slot (which\r\n * wraps it).\r\n */\r\n\r\nconst CHARTER_FORMAT = \"YYYY-MM-DD\";\r\n\r\nexport interface DatePickerProps\r\n extends Omit<\r\n MuiDatePickerProps,\r\n \"value\" | \"onChange\" | \"minDate\" | \"maxDate\" | \"slots\" | \"slotProps\" | \"sx\" | \"ref\"\r\n > {\r\n value?: Date | null | undefined;\r\n onChange?: ((value: Date | null) => void) | undefined;\r\n onBlur?: React.FocusEventHandler<HTMLInputElement | HTMLTextAreaElement> | undefined;\r\n minDate?: Date | null | undefined;\r\n maxDate?: Date | null | undefined;\r\n error?: boolean | undefined;\r\n placeholder?: string | undefined;\r\n fullWidth?: boolean | undefined;\r\n inputProps?: React.InputHTMLAttributes<HTMLInputElement> | undefined;\r\n adapterLocale?: string | undefined;\r\n sx?: SxProps<Theme> | undefined;\r\n}\r\n\r\nconst DatePicker = React.forwardRef<HTMLDivElement, DatePickerProps>(function DatePicker(\r\n {\r\n value,\r\n onChange,\r\n onBlur,\r\n minDate,\r\n maxDate,\r\n disablePast = false,\r\n disableFuture = false,\r\n disabled = false,\r\n readOnly = false,\r\n error,\r\n placeholder = \"AAAA-MM-JJ\",\r\n fullWidth = true,\r\n inputProps,\r\n adapterLocale = \"fr\",\r\n sx,\r\n ...rest\r\n },\r\n ref,\r\n) {\r\n // DP-1 — Field cloneElement-injects the label + hint/error association props\r\n // onto this child; MUI X won't forward top-level aria/id to the field input,\r\n // so intercept them (cast — they aren't part of MuiDatePickerProps) and route\r\n // them onto the <input> via slotProps.htmlInput below. Everything else stays\r\n // in domRest for MuiDatePicker (real picker props: views, openTo, etc.).\r\n const {\r\n id: fieldId,\r\n \"aria-describedby\": ariaDescribedby,\r\n \"aria-invalid\": ariaInvalid,\r\n \"aria-required\": ariaRequired,\r\n \"aria-labelledby\": ariaLabelledby,\r\n ...domRest\r\n } = rest as typeof rest & {\r\n id?: string;\r\n \"aria-describedby\"?: string;\r\n \"aria-invalid\"?: boolean | \"true\" | \"false\" | \"grammar\" | \"spelling\";\r\n \"aria-required\"?: boolean | \"true\" | \"false\";\r\n \"aria-labelledby\"?: string;\r\n };\r\n\r\n const handleChange = (next: Moment | null) => {\r\n if (!onChange) return;\r\n onChange(momentToDate(next));\r\n };\r\n\r\n // MUI X v9: every input customisation flows through\r\n // slotProps.textField. The nested slotProps.htmlInput is the MUI v9\r\n // landing zone for what used to be TextField's `inputProps={...}`\r\n // (now the <input/> element slot) — and the DP-1 landing zone for the\r\n // Field-injected id + aria-* so the label / hint / error actually\r\n // associate with the date input. Memoised on the deps so the slotProps\r\n // object reference stays stable across renders.\r\n const slotProps = React.useMemo<NonNullable<MuiDatePickerProps[\"slotProps\"]>>(\r\n () => ({\r\n textField: {\r\n ref,\r\n error: !!error,\r\n fullWidth,\r\n size: \"small\",\r\n // onBlur: the textField slot types this as FocusEventHandler<HTMLDivElement>;\r\n // our public onBlur is input-based. Cast (type-only) and include only\r\n // when defined so no explicit undefined reaches the slot.\r\n ...(onBlur ? { onBlur: onBlur as unknown as React.FocusEventHandler<HTMLDivElement> } : {}),\r\n sx: {\r\n \"& .MuiOutlinedInput-input\": { fontVariantNumeric: \"tabular-nums\" },\r\n ...sx,\r\n },\r\n slotProps: {\r\n htmlInput: {\r\n placeholder,\r\n // DP-1 — Field-injected association attrs land on the <input>.\r\n ...(fieldId != null ? { id: fieldId } : {}),\r\n ...(ariaDescribedby != null\r\n ? { \"aria-describedby\": ariaDescribedby }\r\n : {}),\r\n ...(ariaInvalid != null ? { \"aria-invalid\": ariaInvalid } : {}),\r\n ...(ariaRequired != null ? { \"aria-required\": ariaRequired } : {}),\r\n ...(ariaLabelledby != null\r\n ? { \"aria-labelledby\": ariaLabelledby }\r\n : {}),\r\n // Explicit host inputProps win over the injected defaults.\r\n ...inputProps,\r\n },\r\n },\r\n },\r\n }),\r\n [\r\n ref,\r\n error,\r\n fullWidth,\r\n onBlur,\r\n sx,\r\n placeholder,\r\n inputProps,\r\n fieldId,\r\n ariaDescribedby,\r\n ariaInvalid,\r\n ariaRequired,\r\n ariaLabelledby,\r\n ],\r\n );\r\n\r\n // exactOptionalPropertyTypes: MUI's minDate/maxDate are `Moment` (not\r\n // `Moment | undefined`), so spread the key only when a bound is set\r\n // rather than passing an explicit `undefined`.\r\n const minDateM = minDate ? dateToMoment(minDate) : null;\r\n const maxDateM = maxDate ? dateToMoment(maxDate) : null;\r\n\r\n return (\r\n <LocalizationProvider dateAdapter={AdapterMoment} adapterLocale={adapterLocale}>\r\n <MuiDatePicker\r\n value={dateToMoment(value)}\r\n onChange={handleChange}\r\n {...(minDateM ? { minDate: minDateM } : {})}\r\n {...(maxDateM ? { maxDate: maxDateM } : {})}\r\n disablePast={disablePast}\r\n disableFuture={disableFuture}\r\n disabled={disabled}\r\n readOnly={readOnly}\r\n format={CHARTER_FORMAT}\r\n slotProps={slotProps}\r\n {...domRest}\r\n />\r\n </LocalizationProvider>\r\n );\r\n});\r\n\r\nexport const DATE_FORMAT_CHARTER = CHARTER_FORMAT;\r\n\r\nexport default DatePicker;\r\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"DatePicker.js","names":["React","LocalizationProvider","DatePicker","MuiDatePicker","AdapterMoment","dateToMoment","momentToDate","jsx","_jsx","CHARTER_FORMAT","forwardRef","value","onChange","onBlur","minDate","maxDate","disablePast","disableFuture","disabled","readOnly","error","placeholder","fullWidth","inputProps","adapterLocale","sx","rest","ref","id","fieldId","ariaDescribedby","ariaInvalid","ariaRequired","ariaLabelledby","domRest","handleChange","next","slotProps","useMemo","textField","size","fontVariantNumeric","htmlInput","minDateM","maxDateM","dateAdapter","children","format","DATE_FORMAT_CHARTER"],"sources":["../../../../src/lib/v2/components/DatePicker.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { LocalizationProvider } from \"@mui/x-date-pickers/LocalizationProvider\";\r\nimport { DatePicker as MuiDatePicker } from \"@mui/x-date-pickers/DatePicker\";\r\nimport type { DatePickerProps as MuiDatePickerProps } from \"@mui/x-date-pickers/DatePicker\";\r\nimport { AdapterMoment } from \"@mui/x-date-pickers/AdapterMoment\";\r\nimport type { Moment } from \"moment\";\r\nimport \"moment/locale/fr\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\nimport { dateToMoment, momentToDate } from \"./_pickerShared\";\r\n\r\n/**\r\n * DatePicker — Portnet UI v2\r\n *\r\n * Charter §03 · Component \"DatePicker\". Format AAAA-MM-JJ.\r\n *\r\n * <Field label=\"Date d'expiration\" required>\r\n * <DatePicker\r\n * value={expDate}\r\n * onChange={setExpDate}\r\n * minDate={new Date()}\r\n * />\r\n * </Field>\r\n *\r\n * Value contract:\r\n * - value/onChange exchange JavaScript Date objects (or null).\r\n * - Invalid dates (NaN, malformed user input) are coerced to null\r\n * so consumers never receive an \"Invalid Date\" instance.\r\n * - The component handles moment conversion internally.\r\n *\r\n * Locale:\r\n * Default `adapterLocale=\"fr\"` — picker reads month / weekday names\r\n * from moment's French locale data (imported here). Hosts wanting\r\n * other locales pass the BCP-47 / moment short tag AND import the\r\n * matching moment locale data themselves:\r\n *\r\n * import \"moment/locale/ar\";\r\n * <DatePicker adapterLocale=\"ar\" />\r\n *\r\n * This component does NOT mutate moment's GLOBAL locale on import\r\n * (older versions did via `moment.locale(\"fr\")` — that leaked the\r\n * library's preference into ALL host code using moment outside the\r\n * picker).\r\n *\r\n * Format:\r\n * - Display: AAAA-MM-JJ (charter convention). MUI X v6+ derives the\r\n * input mask from this format string automatically — no need for\r\n * the v5-era `mask=\"____-__-__\"` companion prop.\r\n * - The text input accepts user typing in the same format; partial\r\n * entries are tolerated until the user blurs or hits Enter.\r\n *\r\n * Constraints:\r\n * - minDate / maxDate accept Date objects or null.\r\n * - disablePast / disableFuture for relative bounds.\r\n *\r\n * Sibling pickers in the same family:\r\n * - DateTimePicker — adds time-of-day (HH:MM) on top of the date.\r\n * - TimePicker — time only (HH:MM), date portion ignored.\r\n * - DateRangePicker — paired start/end with cross-validation and\r\n * optional preset shortcuts.\r\n * All consume the same _pickerShared boundary helpers as this file\r\n * and follow the same MUI X v9 slots / slotProps surface.\r\n *\r\n * A11y (DP-1): when used inside <Field>, Field cloneElement-injects id +\r\n * aria-describedby / aria-invalid / aria-required (label + hint/error\r\n * association) onto this child. MUI X does NOT forward top-level aria/id to the\r\n * field <input>, so those are intercepted here and routed onto the input via\r\n * slotProps.htmlInput (the <input> element slot — see the v9 note below).\r\n * Explicit `inputProps` still win.\r\n *\r\n * MUI X v9 surface notes (migrated from v5 in Batch 4):\r\n * - The v5 `renderInput` callback + `inputFormat` + `mask` triad has\r\n * been REPLACED by the v6+ `slots`/`slotProps` API and the single\r\n * `format` prop. The textField slot is the canonical entry point\r\n * for any TextField prop override.\r\n * - Inside `slotProps.textField`, the `slotProps.htmlInput` nested\r\n * bag carries what used to be TextField's `inputProps={...}`\r\n * (placeholder, aria-*, min/max, etc.). This double-nesting\r\n * reflects MUI v9's own TextField API: the htmlInput slot is the\r\n * <input/> element target, distinct from the input slot (which\r\n * wraps it).\r\n */\r\n\r\nconst CHARTER_FORMAT = \"YYYY-MM-DD\";\r\n\r\nexport interface DatePickerProps\r\n extends Omit<\r\n MuiDatePickerProps,\r\n \"value\" | \"onChange\" | \"minDate\" | \"maxDate\" | \"slots\" | \"slotProps\" | \"sx\" | \"ref\"\r\n > {\r\n value?: Date | null | undefined;\r\n onChange?: ((value: Date | null) => void) | undefined;\r\n onBlur?: React.FocusEventHandler<HTMLInputElement | HTMLTextAreaElement> | undefined;\r\n minDate?: Date | null | undefined;\r\n maxDate?: Date | null | undefined;\r\n error?: boolean | undefined;\r\n placeholder?: string | undefined;\r\n fullWidth?: boolean | undefined;\r\n inputProps?: React.InputHTMLAttributes<HTMLInputElement> | undefined;\r\n adapterLocale?: string | undefined;\r\n sx?: SxProps<Theme> | undefined;\r\n}\r\n\r\nconst DatePicker = React.forwardRef<HTMLDivElement, DatePickerProps>(function DatePicker(\r\n {\r\n value,\r\n onChange,\r\n onBlur,\r\n minDate,\r\n maxDate,\r\n disablePast = false,\r\n disableFuture = false,\r\n disabled = false,\r\n readOnly = false,\r\n error,\r\n placeholder = \"AAAA-MM-JJ\",\r\n fullWidth = true,\r\n inputProps,\r\n adapterLocale = \"fr\",\r\n sx,\r\n ...rest\r\n },\r\n ref,\r\n) {\r\n // DP-1 — Field cloneElement-injects the label + hint/error association props\r\n // onto this child; MUI X won't forward top-level aria/id to the field input,\r\n // so intercept them (cast — they aren't part of MuiDatePickerProps) and route\r\n // them onto the <input> via slotProps.htmlInput below. Everything else stays\r\n // in domRest for MuiDatePicker (real picker props: views, openTo, etc.).\r\n const {\r\n id: fieldId,\r\n \"aria-describedby\": ariaDescribedby,\r\n \"aria-invalid\": ariaInvalid,\r\n \"aria-required\": ariaRequired,\r\n \"aria-labelledby\": ariaLabelledby,\r\n ...domRest\r\n } = rest as typeof rest & {\r\n id?: string;\r\n \"aria-describedby\"?: string;\r\n \"aria-invalid\"?: boolean | \"true\" | \"false\" | \"grammar\" | \"spelling\";\r\n \"aria-required\"?: boolean | \"true\" | \"false\";\r\n \"aria-labelledby\"?: string;\r\n };\r\n\r\n const handleChange = (next: Moment | null) => {\r\n if (!onChange) return;\r\n onChange(momentToDate(next));\r\n };\r\n\r\n // MUI X v9: every input customisation flows through\r\n // slotProps.textField. The nested slotProps.htmlInput is the MUI v9\r\n // landing zone for what used to be TextField's `inputProps={...}`\r\n // (now the <input/> element slot) — and the DP-1 landing zone for the\r\n // Field-injected id + aria-* so the label / hint / error actually\r\n // associate with the date input. Memoised on the deps so the slotProps\r\n // object reference stays stable across renders.\r\n const slotProps = React.useMemo<NonNullable<MuiDatePickerProps[\"slotProps\"]>>(\r\n () => ({\r\n textField: {\r\n ref,\r\n error: !!error,\r\n fullWidth,\r\n size: \"small\",\r\n // onBlur: the textField slot types this as FocusEventHandler<HTMLDivElement>;\r\n // our public onBlur is input-based. Cast (type-only) and include only\r\n // when defined so no explicit undefined reaches the slot.\r\n ...(onBlur ? { onBlur: onBlur as unknown as React.FocusEventHandler<HTMLDivElement> } : {}),\r\n sx: {\r\n \"& .MuiOutlinedInput-input\": { fontVariantNumeric: \"tabular-nums\" },\r\n ...sx,\r\n },\r\n slotProps: {\r\n htmlInput: {\r\n placeholder,\r\n // DP-1 — Field-injected association attrs land on the <input>.\r\n ...(fieldId != null ? { id: fieldId } : {}),\r\n ...(ariaDescribedby != null\r\n ? { \"aria-describedby\": ariaDescribedby }\r\n : {}),\r\n ...(ariaInvalid != null ? { \"aria-invalid\": ariaInvalid } : {}),\r\n ...(ariaRequired != null ? { \"aria-required\": ariaRequired } : {}),\r\n ...(ariaLabelledby != null\r\n ? { \"aria-labelledby\": ariaLabelledby }\r\n : {}),\r\n // Explicit host inputProps win over the injected defaults.\r\n ...inputProps,\r\n },\r\n },\r\n },\r\n }),\r\n [\r\n ref,\r\n error,\r\n fullWidth,\r\n onBlur,\r\n sx,\r\n placeholder,\r\n inputProps,\r\n fieldId,\r\n ariaDescribedby,\r\n ariaInvalid,\r\n ariaRequired,\r\n ariaLabelledby,\r\n ],\r\n );\r\n\r\n // exactOptionalPropertyTypes: MUI's minDate/maxDate are `Moment` (not\r\n // `Moment | undefined`), so spread the key only when a bound is set\r\n // rather than passing an explicit `undefined`.\r\n const minDateM = minDate ? dateToMoment(minDate) : null;\r\n const maxDateM = maxDate ? dateToMoment(maxDate) : null;\r\n\r\n return (\r\n <LocalizationProvider dateAdapter={AdapterMoment} adapterLocale={adapterLocale}>\r\n <MuiDatePicker\r\n value={dateToMoment(value)}\r\n onChange={handleChange}\r\n {...(minDateM ? { minDate: minDateM } : {})}\r\n {...(maxDateM ? { maxDate: maxDateM } : {})}\r\n disablePast={disablePast}\r\n disableFuture={disableFuture}\r\n disabled={disabled}\r\n readOnly={readOnly}\r\n format={CHARTER_FORMAT}\r\n slotProps={slotProps}\r\n {...domRest}\r\n />\r\n </LocalizationProvider>\r\n );\r\n});\r\n\r\nexport const DATE_FORMAT_CHARTER = CHARTER_FORMAT;\r\n\r\nexport default DatePicker;\r\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
2
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
3
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
4
|
-
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
5
|
-
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
6
|
-
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
7
1
|
import * as React from "react";
|
|
8
2
|
import Box from "@mui/material/Box";
|
|
9
3
|
import DatePicker from "./DatePicker";
|
|
@@ -57,7 +51,7 @@ import { mergeLabels } from "../utils/mergeLabels";
|
|
|
57
51
|
* - presets.label is host-controlled, host owns translation.
|
|
58
52
|
*/
|
|
59
53
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
60
|
-
|
|
54
|
+
const DEFAULT_LABELS = Object.freeze({
|
|
61
55
|
startLabel: "Du",
|
|
62
56
|
endLabel: "Au",
|
|
63
57
|
presetsAria: "Raccourcis"
|
|
@@ -66,7 +60,7 @@ var DEFAULT_LABELS = Object.freeze({
|
|
|
66
60
|
// Hoisted sx for visible elements that don't depend on props. The
|
|
67
61
|
// preset button sx is hoisted too — same emotion-cache rationale as
|
|
68
62
|
// Batch 14 D5.
|
|
69
|
-
|
|
63
|
+
const ROOT_SX = Object.freeze({
|
|
70
64
|
display: "flex",
|
|
71
65
|
flexDirection: {
|
|
72
66
|
xs: "column",
|
|
@@ -74,7 +68,7 @@ var ROOT_SX = Object.freeze({
|
|
|
74
68
|
},
|
|
75
69
|
gap: "var(--s-3)"
|
|
76
70
|
});
|
|
77
|
-
|
|
71
|
+
const PRESETS_GROUP_SX = Object.freeze({
|
|
78
72
|
display: "flex",
|
|
79
73
|
flexDirection: {
|
|
80
74
|
xs: "row",
|
|
@@ -86,7 +80,7 @@ var PRESETS_GROUP_SX = Object.freeze({
|
|
|
86
80
|
sm: 140
|
|
87
81
|
}
|
|
88
82
|
});
|
|
89
|
-
|
|
83
|
+
const PICKERS_ROW_SX = Object.freeze({
|
|
90
84
|
display: "flex",
|
|
91
85
|
flexDirection: {
|
|
92
86
|
xs: "column",
|
|
@@ -98,12 +92,12 @@ var PICKERS_ROW_SX = Object.freeze({
|
|
|
98
92
|
sm: "flex-end"
|
|
99
93
|
}
|
|
100
94
|
});
|
|
101
|
-
|
|
95
|
+
const FIELD_BLOCK_SX = Object.freeze({
|
|
102
96
|
flex: 1,
|
|
103
97
|
display: "flex",
|
|
104
98
|
flexDirection: "column"
|
|
105
99
|
});
|
|
106
|
-
|
|
100
|
+
const FIELD_LABEL_SX = Object.freeze({
|
|
107
101
|
fontSize: "var(--text-xs)",
|
|
108
102
|
fontWeight: "var(--fw-medium)",
|
|
109
103
|
color: "var(--fg-muted)",
|
|
@@ -114,7 +108,7 @@ var FIELD_LABEL_SX = Object.freeze({
|
|
|
114
108
|
// Visual range separator. transform: scaleX(...) flips on [dir="rtl"]
|
|
115
109
|
// via --pui-rtl-flip (declared in base.css). Hidden from SR — the
|
|
116
110
|
// labels Du / Au already convey the relationship.
|
|
117
|
-
|
|
111
|
+
const SEPARATOR_SX = Object.freeze({
|
|
118
112
|
flex: "0 0 auto",
|
|
119
113
|
color: "var(--fg-muted)",
|
|
120
114
|
fontSize: "var(--text-sm)",
|
|
@@ -123,7 +117,7 @@ var SEPARATOR_SX = Object.freeze({
|
|
|
123
117
|
paddingBottom: "var(--s-2)",
|
|
124
118
|
transform: "scaleX(var(--pui-rtl-flip, 1))"
|
|
125
119
|
});
|
|
126
|
-
|
|
120
|
+
const PRESET_BUTTON_SX = Object.freeze({
|
|
127
121
|
font: "inherit",
|
|
128
122
|
background: "transparent",
|
|
129
123
|
border: "1px solid var(--border)",
|
|
@@ -151,33 +145,28 @@ var PRESET_BUTTON_SX = Object.freeze({
|
|
|
151
145
|
cursor: "not-allowed"
|
|
152
146
|
}
|
|
153
147
|
});
|
|
154
|
-
function DateRangePicker(
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
var startDate = (_value$startDate = value === null || value === void 0 ? void 0 : value.startDate) !== null && _value$startDate !== void 0 ? _value$startDate : null;
|
|
175
|
-
var endDate = (_value$endDate = value === null || value === void 0 ? void 0 : value.endDate) !== null && _value$endDate !== void 0 ? _value$endDate : null;
|
|
176
|
-
var startInputId = React.useId();
|
|
177
|
-
var endInputId = React.useId();
|
|
178
|
-
var setStart = function setStart(next) {
|
|
148
|
+
function DateRangePicker({
|
|
149
|
+
value,
|
|
150
|
+
onChange,
|
|
151
|
+
minDate,
|
|
152
|
+
maxDate,
|
|
153
|
+
disablePast = false,
|
|
154
|
+
disableFuture = false,
|
|
155
|
+
disabled = false,
|
|
156
|
+
readOnly = false,
|
|
157
|
+
presets,
|
|
158
|
+
adapterLocale = "fr",
|
|
159
|
+
labels,
|
|
160
|
+
sx
|
|
161
|
+
}) {
|
|
162
|
+
const L = mergeLabels(DEFAULT_LABELS, labels);
|
|
163
|
+
const startDate = value?.startDate ?? null;
|
|
164
|
+
const endDate = value?.endDate ?? null;
|
|
165
|
+
const startInputId = React.useId();
|
|
166
|
+
const endInputId = React.useId();
|
|
167
|
+
const setStart = next => {
|
|
179
168
|
if (!onChange) return;
|
|
180
|
-
|
|
169
|
+
let newEnd = endDate;
|
|
181
170
|
// Cross-validation: clamp end UP if the new start exceeds it.
|
|
182
171
|
if (next && endDate && next > endDate) newEnd = next;
|
|
183
172
|
onChange({
|
|
@@ -185,9 +174,9 @@ function DateRangePicker(_ref) {
|
|
|
185
174
|
endDate: newEnd
|
|
186
175
|
});
|
|
187
176
|
};
|
|
188
|
-
|
|
177
|
+
const setEnd = next => {
|
|
189
178
|
if (!onChange) return;
|
|
190
|
-
|
|
179
|
+
let newStart = startDate;
|
|
191
180
|
// Cross-validation: clamp start DOWN if the new end precedes it.
|
|
192
181
|
if (next && startDate && next < startDate) newStart = next;
|
|
193
182
|
onChange({
|
|
@@ -195,7 +184,7 @@ function DateRangePicker(_ref) {
|
|
|
195
184
|
endDate: next
|
|
196
185
|
});
|
|
197
186
|
};
|
|
198
|
-
|
|
187
|
+
const applyPreset = preset => {
|
|
199
188
|
if (!onChange) return;
|
|
200
189
|
onChange({
|
|
201
190
|
startDate: preset.from,
|
|
@@ -207,26 +196,24 @@ function DateRangePicker(_ref) {
|
|
|
207
196
|
// Computing it here means the calendar dialog itself disables dates
|
|
208
197
|
// before the start — the cross-validation in setEnd is the fallback
|
|
209
198
|
// for direct text-typing.
|
|
210
|
-
|
|
199
|
+
const endEffectiveMinDate = startDate && minDate ? startDate > minDate ? startDate : minDate : startDate || minDate;
|
|
211
200
|
return /*#__PURE__*/_jsxs(Box, {
|
|
212
|
-
sx: sx ?
|
|
201
|
+
sx: sx ? {
|
|
202
|
+
...ROOT_SX,
|
|
203
|
+
...sx
|
|
204
|
+
} : ROOT_SX,
|
|
213
205
|
children: [presets && presets.length > 0 && /*#__PURE__*/_jsx(Box, {
|
|
214
206
|
role: "group",
|
|
215
207
|
"aria-label": L.presetsAria,
|
|
216
208
|
sx: PRESETS_GROUP_SX,
|
|
217
|
-
children: presets.map(
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
disabled: disabled || readOnly,
|
|
226
|
-
sx: PRESET_BUTTON_SX,
|
|
227
|
-
children: p.label
|
|
228
|
-
}, (_p$id = p.id) !== null && _p$id !== void 0 ? _p$id : i);
|
|
229
|
-
})
|
|
209
|
+
children: presets.map((p, i) => /*#__PURE__*/_jsx(Box, {
|
|
210
|
+
component: "button",
|
|
211
|
+
type: "button",
|
|
212
|
+
onClick: () => applyPreset(p),
|
|
213
|
+
disabled: disabled || readOnly,
|
|
214
|
+
sx: PRESET_BUTTON_SX,
|
|
215
|
+
children: p.label
|
|
216
|
+
}, p.id ?? i))
|
|
230
217
|
}), /*#__PURE__*/_jsxs(Box, {
|
|
231
218
|
sx: PICKERS_ROW_SX,
|
|
232
219
|
children: [/*#__PURE__*/_jsxs(Box, {
|
|
@@ -236,14 +223,15 @@ function DateRangePicker(_ref) {
|
|
|
236
223
|
htmlFor: startInputId,
|
|
237
224
|
sx: FIELD_LABEL_SX,
|
|
238
225
|
children: L.startLabel
|
|
239
|
-
}), /*#__PURE__*/_jsx(DatePicker,
|
|
226
|
+
}), /*#__PURE__*/_jsx(DatePicker, {
|
|
240
227
|
value: startDate,
|
|
241
|
-
onChange: setStart
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
maxDate
|
|
246
|
-
|
|
228
|
+
onChange: setStart,
|
|
229
|
+
...(minDate != null ? {
|
|
230
|
+
minDate
|
|
231
|
+
} : {}),
|
|
232
|
+
...(maxDate != null ? {
|
|
233
|
+
maxDate
|
|
234
|
+
} : {}),
|
|
247
235
|
disablePast: disablePast,
|
|
248
236
|
disableFuture: disableFuture,
|
|
249
237
|
disabled: disabled,
|
|
@@ -252,7 +240,7 @@ function DateRangePicker(_ref) {
|
|
|
252
240
|
inputProps: {
|
|
253
241
|
id: startInputId
|
|
254
242
|
}
|
|
255
|
-
})
|
|
243
|
+
})]
|
|
256
244
|
}), /*#__PURE__*/_jsx(Box, {
|
|
257
245
|
"aria-hidden": "true",
|
|
258
246
|
sx: SEPARATOR_SX,
|
|
@@ -264,14 +252,15 @@ function DateRangePicker(_ref) {
|
|
|
264
252
|
htmlFor: endInputId,
|
|
265
253
|
sx: FIELD_LABEL_SX,
|
|
266
254
|
children: L.endLabel
|
|
267
|
-
}), /*#__PURE__*/_jsx(DatePicker,
|
|
255
|
+
}), /*#__PURE__*/_jsx(DatePicker, {
|
|
268
256
|
value: endDate,
|
|
269
|
-
onChange: setEnd
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
maxDate
|
|
274
|
-
|
|
257
|
+
onChange: setEnd,
|
|
258
|
+
...(endEffectiveMinDate != null ? {
|
|
259
|
+
minDate: endEffectiveMinDate
|
|
260
|
+
} : {}),
|
|
261
|
+
...(maxDate != null ? {
|
|
262
|
+
maxDate
|
|
263
|
+
} : {}),
|
|
275
264
|
disablePast: disablePast,
|
|
276
265
|
disableFuture: disableFuture,
|
|
277
266
|
disabled: disabled,
|
|
@@ -280,7 +269,7 @@ function DateRangePicker(_ref) {
|
|
|
280
269
|
inputProps: {
|
|
281
270
|
id: endInputId
|
|
282
271
|
}
|
|
283
|
-
})
|
|
272
|
+
})]
|
|
284
273
|
})]
|
|
285
274
|
})]
|
|
286
275
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateRangePicker.js","names":["React","Box","DatePicker","mergeLabels","jsx","_jsx","jsxs","_jsxs","DEFAULT_LABELS","Object","freeze","startLabel","endLabel","presetsAria","ROOT_SX","display","flexDirection","xs","sm","gap","PRESETS_GROUP_SX","flexWrap","minWidth","PICKERS_ROW_SX","flex","alignItems","FIELD_BLOCK_SX","FIELD_LABEL_SX","fontSize","fontWeight","color","marginBottom","SEPARATOR_SX","paddingBottom","transform","PRESET_BUTTON_SX","font","background","border","padding","borderRadius","cursor","textAlign","whiteSpace","minHeight","borderColor","outline","outlineOffset","opacity","DateRangePicker","_ref","_value$startDate","_value$endDate","value","onChange","minDate","maxDate","_ref$disablePast","disablePast","_ref$disableFuture","disableFuture","_ref$disabled","disabled","_ref$readOnly","readOnly","presets","_ref$adapterLocale","adapterLocale","labels","sx","L","startDate","endDate","startInputId","useId","endInputId","setStart","next","newEnd","setEnd","newStart","applyPreset","preset","from","to","endEffectiveMinDate","_objectSpread","children","length","role","map","p","i","_p$id","component","type","onClick","label","id","htmlFor","inputProps"],"sources":["../../../../src/lib/v2/components/DateRangePicker.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\nimport DatePicker from \"./DatePicker\";\r\nimport { mergeLabels } from \"../utils/mergeLabels\";\r\n\r\n/**\r\n * DateRangePicker — Portnet UI v2\r\n *\r\n * Two DatePicker instances side-by-side with cross-validation and\r\n * optional preset shortcuts. Built without @mui/x-date-pickers-pro —\r\n * see commit message for rationale.\r\n *\r\n * <Field label=\"Période\">\r\n * <DateRangePicker\r\n * value={{ startDate: from, endDate: to }}\r\n * onChange={({ startDate, endDate }) => setRange({ from: startDate, to: endDate })}\r\n * presets={[\r\n * { label: \"Aujourd'hui\", from: today, to: today },\r\n * { label: \"7 derniers jours\", from: weekAgo, to: today },\r\n * { label: \"Ce mois\", from: monthStart, to: monthEnd },\r\n * ]}\r\n * />\r\n * </Field>\r\n *\r\n * Value contract:\r\n * - value: { startDate: Date|null, endDate: Date|null } | null\r\n * - onChange({ startDate, endDate }) — both fields always included.\r\n * - Invalid dates from inner pickers come through as null; the\r\n * range stays consistent.\r\n *\r\n * Cross-validation:\r\n * - Picking startDate > endDate clamps endDate to startDate.\r\n * - Picking endDate < startDate clamps startDate to endDate.\r\n * - The end picker's effective minDate is max(startDate, minDate\r\n * prop) so the calendar dialog itself prevents invalid selection.\r\n *\r\n * Presets:\r\n * - Host-supplied. Shape: { id?, label, from, to }.\r\n * - Clicking a preset fires onChange with the preset's range.\r\n * - Lib ships NO default presets (locale + business meaning vary).\r\n *\r\n * A11y:\r\n * - Each inner DatePicker carries its own label via React.useId\r\n * plumbed through inputProps.id + <label htmlFor>.\r\n * - The presets group is wrapped in role=\"group\" with an\r\n * aria-label so SR users hear \"Raccourcis\" before the buttons.\r\n *\r\n * Locale + i18n:\r\n * - adapterLocale forwards to BOTH inner pickers.\r\n * - labels.{startLabel, endLabel} override the FR defaults.\r\n * - presets.label is host-controlled, host owns translation.\r\n */\r\n\r\nexport interface DateRangeValue {\r\n startDate: Date | null;\r\n endDate: Date | null;\r\n}\r\n\r\nexport interface DateRangePreset {\r\n id?: string | number | undefined;\r\n label: React.ReactNode;\r\n from: Date;\r\n to: Date;\r\n}\r\n\r\nexport interface DateRangeLabels {\r\n startLabel?: React.ReactNode | undefined;\r\n endLabel?: React.ReactNode | undefined;\r\n presetsAria?: string | undefined;\r\n}\r\n\r\nexport interface DateRangePickerProps {\r\n value?: DateRangeValue | null | undefined;\r\n onChange?: ((value: DateRangeValue) => void) | undefined;\r\n minDate?: Date | null | undefined;\r\n maxDate?: Date | null | undefined;\r\n disablePast?: boolean | undefined;\r\n disableFuture?: boolean | undefined;\r\n disabled?: boolean | undefined;\r\n readOnly?: boolean | undefined;\r\n presets?: DateRangePreset[] | undefined;\r\n adapterLocale?: string | undefined;\r\n labels?: DateRangeLabels | undefined;\r\n sx?: SxProps<Theme> | undefined;\r\n}\r\n\r\nconst DEFAULT_LABELS = Object.freeze({\r\n startLabel: \"Du\",\r\n endLabel: \"Au\",\r\n presetsAria: \"Raccourcis\",\r\n});\r\n\r\n// Hoisted sx for visible elements that don't depend on props. The\r\n// preset button sx is hoisted too — same emotion-cache rationale as\r\n// Batch 14 D5.\r\nconst ROOT_SX = Object.freeze({\r\n display: \"flex\",\r\n flexDirection: { xs: \"column\", sm: \"row\" },\r\n gap: \"var(--s-3)\",\r\n} satisfies SxProps<Theme>);\r\n\r\nconst PRESETS_GROUP_SX = Object.freeze({\r\n display: \"flex\",\r\n flexDirection: { xs: \"row\", sm: \"column\" },\r\n gap: \"var(--s-1)\",\r\n flexWrap: \"wrap\",\r\n minWidth: { sm: 140 },\r\n} satisfies SxProps<Theme>);\r\n\r\nconst PICKERS_ROW_SX = Object.freeze({\r\n display: \"flex\",\r\n flexDirection: { xs: \"column\", sm: \"row\" },\r\n gap: \"var(--s-2)\",\r\n flex: 1,\r\n alignItems: { sm: \"flex-end\" },\r\n} satisfies SxProps<Theme>);\r\n\r\nconst FIELD_BLOCK_SX = Object.freeze({\r\n flex: 1,\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n} satisfies SxProps<Theme>);\r\n\r\nconst FIELD_LABEL_SX = Object.freeze({\r\n fontSize: \"var(--text-xs)\",\r\n fontWeight: \"var(--fw-medium)\",\r\n color: \"var(--fg-muted)\",\r\n display: \"block\",\r\n marginBottom: \"var(--s-1)\",\r\n} satisfies SxProps<Theme>);\r\n\r\n// Visual range separator. transform: scaleX(...) flips on [dir=\"rtl\"]\r\n// via --pui-rtl-flip (declared in base.css). Hidden from SR — the\r\n// labels Du / Au already convey the relationship.\r\nconst SEPARATOR_SX = Object.freeze({\r\n flex: \"0 0 auto\",\r\n color: \"var(--fg-muted)\",\r\n fontSize: \"var(--text-sm)\",\r\n // align with the inputs (which sit at the bottom of FIELD_BLOCK_SX\r\n // because the label is above them in the same column).\r\n paddingBottom: \"var(--s-2)\",\r\n transform: \"scaleX(var(--pui-rtl-flip, 1))\",\r\n} satisfies SxProps<Theme>);\r\n\r\nconst PRESET_BUTTON_SX = Object.freeze({\r\n font: \"inherit\",\r\n background: \"transparent\",\r\n border: \"1px solid var(--border)\",\r\n color: \"var(--fg)\",\r\n padding: \"var(--s-1) var(--s-3)\",\r\n borderRadius: \"var(--r-sm)\",\r\n fontSize: \"var(--text-xs)\",\r\n fontWeight: \"var(--fw-medium)\",\r\n cursor: \"pointer\",\r\n textAlign: \"start\", // RTL-safe equivalent of \"left\"\r\n whiteSpace: \"nowrap\",\r\n minHeight: \"var(--tactile-min)\",\r\n \"&:hover:not(:disabled)\": {\r\n background: \"var(--bg-hover)\",\r\n borderColor: \"var(--accent)\",\r\n color: \"var(--accent)\",\r\n },\r\n \"&:focus-visible\": {\r\n outline: \"2px solid var(--accent)\",\r\n outlineOffset: \"var(--pui-outline-offset)\",\r\n },\r\n \"&:disabled\": {\r\n opacity: 0.5,\r\n cursor: \"not-allowed\",\r\n },\r\n} satisfies SxProps<Theme>);\r\n\r\nfunction DateRangePicker({\r\n value,\r\n onChange,\r\n minDate,\r\n maxDate,\r\n disablePast = false,\r\n disableFuture = false,\r\n disabled = false,\r\n readOnly = false,\r\n presets,\r\n adapterLocale = \"fr\",\r\n labels,\r\n sx,\r\n}: DateRangePickerProps) {\r\n const L = mergeLabels(DEFAULT_LABELS, labels);\r\n const startDate = value?.startDate ?? null;\r\n const endDate = value?.endDate ?? null;\r\n\r\n const startInputId = React.useId();\r\n const endInputId = React.useId();\r\n\r\n const setStart = (next: Date | null) => {\r\n if (!onChange) return;\r\n let newEnd = endDate;\r\n // Cross-validation: clamp end UP if the new start exceeds it.\r\n if (next && endDate && next > endDate) newEnd = next;\r\n onChange({ startDate: next, endDate: newEnd });\r\n };\r\n\r\n const setEnd = (next: Date | null) => {\r\n if (!onChange) return;\r\n let newStart = startDate;\r\n // Cross-validation: clamp start DOWN if the new end precedes it.\r\n if (next && startDate && next < startDate) newStart = next;\r\n onChange({ startDate: newStart, endDate: next });\r\n };\r\n\r\n const applyPreset = (preset: DateRangePreset) => {\r\n if (!onChange) return;\r\n onChange({ startDate: preset.from, endDate: preset.to });\r\n };\r\n\r\n // The end picker's effective minDate is max(startDate, props.minDate).\r\n // Computing it here means the calendar dialog itself disables dates\r\n // before the start — the cross-validation in setEnd is the fallback\r\n // for direct text-typing.\r\n const endEffectiveMinDate =\r\n startDate && minDate\r\n ? (startDate > minDate ? startDate : minDate)\r\n : (startDate || minDate);\r\n\r\n return (\r\n <Box sx={sx ? { ...ROOT_SX, ...sx } : ROOT_SX}>\r\n {presets && presets.length > 0 && (\r\n <Box role=\"group\" aria-label={L.presetsAria} sx={PRESETS_GROUP_SX}>\r\n {presets.map((p, i) => (\r\n <Box\r\n component=\"button\"\r\n type=\"button\"\r\n key={p.id ?? i}\r\n onClick={() => applyPreset(p)}\r\n disabled={disabled || readOnly}\r\n sx={PRESET_BUTTON_SX}\r\n >\r\n {p.label}\r\n </Box>\r\n ))}\r\n </Box>\r\n )}\r\n\r\n <Box sx={PICKERS_ROW_SX}>\r\n <Box sx={FIELD_BLOCK_SX}>\r\n <Box component=\"label\" htmlFor={startInputId} sx={FIELD_LABEL_SX}>\r\n {L.startLabel}\r\n </Box>\r\n <DatePicker\r\n value={startDate}\r\n onChange={setStart}\r\n {...(minDate != null ? { minDate } : {})}\r\n {...(maxDate != null ? { maxDate } : {})}\r\n disablePast={disablePast}\r\n disableFuture={disableFuture}\r\n disabled={disabled}\r\n readOnly={readOnly}\r\n adapterLocale={adapterLocale}\r\n inputProps={{ id: startInputId }}\r\n />\r\n </Box>\r\n\r\n <Box aria-hidden=\"true\" sx={SEPARATOR_SX}>→</Box>\r\n\r\n <Box sx={FIELD_BLOCK_SX}>\r\n <Box component=\"label\" htmlFor={endInputId} sx={FIELD_LABEL_SX}>\r\n {L.endLabel}\r\n </Box>\r\n <DatePicker\r\n value={endDate}\r\n onChange={setEnd}\r\n {...(endEffectiveMinDate != null ? { minDate: endEffectiveMinDate } : {})}\r\n {...(maxDate != null ? { maxDate } : {})}\r\n disablePast={disablePast}\r\n disableFuture={disableFuture}\r\n disabled={disabled}\r\n readOnly={readOnly}\r\n adapterLocale={adapterLocale}\r\n inputProps={{ id: endInputId }}\r\n />\r\n </Box>\r\n </Box>\r\n </Box>\r\n );\r\n}\r\n\r\nexport default DateRangePicker;\r\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"DateRangePicker.js","names":["React","Box","DatePicker","mergeLabels","jsx","_jsx","jsxs","_jsxs","DEFAULT_LABELS","Object","freeze","startLabel","endLabel","presetsAria","ROOT_SX","display","flexDirection","xs","sm","gap","PRESETS_GROUP_SX","flexWrap","minWidth","PICKERS_ROW_SX","flex","alignItems","FIELD_BLOCK_SX","FIELD_LABEL_SX","fontSize","fontWeight","color","marginBottom","SEPARATOR_SX","paddingBottom","transform","PRESET_BUTTON_SX","font","background","border","padding","borderRadius","cursor","textAlign","whiteSpace","minHeight","borderColor","outline","outlineOffset","opacity","DateRangePicker","value","onChange","minDate","maxDate","disablePast","disableFuture","disabled","readOnly","presets","adapterLocale","labels","sx","L","startDate","endDate","startInputId","useId","endInputId","setStart","next","newEnd","setEnd","newStart","applyPreset","preset","from","to","endEffectiveMinDate","children","length","role","map","p","i","component","type","onClick","label","id","htmlFor","inputProps"],"sources":["../../../../src/lib/v2/components/DateRangePicker.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\nimport DatePicker from \"./DatePicker\";\r\nimport { mergeLabels } from \"../utils/mergeLabels\";\r\n\r\n/**\r\n * DateRangePicker — Portnet UI v2\r\n *\r\n * Two DatePicker instances side-by-side with cross-validation and\r\n * optional preset shortcuts. Built without @mui/x-date-pickers-pro —\r\n * see commit message for rationale.\r\n *\r\n * <Field label=\"Période\">\r\n * <DateRangePicker\r\n * value={{ startDate: from, endDate: to }}\r\n * onChange={({ startDate, endDate }) => setRange({ from: startDate, to: endDate })}\r\n * presets={[\r\n * { label: \"Aujourd'hui\", from: today, to: today },\r\n * { label: \"7 derniers jours\", from: weekAgo, to: today },\r\n * { label: \"Ce mois\", from: monthStart, to: monthEnd },\r\n * ]}\r\n * />\r\n * </Field>\r\n *\r\n * Value contract:\r\n * - value: { startDate: Date|null, endDate: Date|null } | null\r\n * - onChange({ startDate, endDate }) — both fields always included.\r\n * - Invalid dates from inner pickers come through as null; the\r\n * range stays consistent.\r\n *\r\n * Cross-validation:\r\n * - Picking startDate > endDate clamps endDate to startDate.\r\n * - Picking endDate < startDate clamps startDate to endDate.\r\n * - The end picker's effective minDate is max(startDate, minDate\r\n * prop) so the calendar dialog itself prevents invalid selection.\r\n *\r\n * Presets:\r\n * - Host-supplied. Shape: { id?, label, from, to }.\r\n * - Clicking a preset fires onChange with the preset's range.\r\n * - Lib ships NO default presets (locale + business meaning vary).\r\n *\r\n * A11y:\r\n * - Each inner DatePicker carries its own label via React.useId\r\n * plumbed through inputProps.id + <label htmlFor>.\r\n * - The presets group is wrapped in role=\"group\" with an\r\n * aria-label so SR users hear \"Raccourcis\" before the buttons.\r\n *\r\n * Locale + i18n:\r\n * - adapterLocale forwards to BOTH inner pickers.\r\n * - labels.{startLabel, endLabel} override the FR defaults.\r\n * - presets.label is host-controlled, host owns translation.\r\n */\r\n\r\nexport interface DateRangeValue {\r\n startDate: Date | null;\r\n endDate: Date | null;\r\n}\r\n\r\nexport interface DateRangePreset {\r\n id?: string | number | undefined;\r\n label: React.ReactNode;\r\n from: Date;\r\n to: Date;\r\n}\r\n\r\nexport interface DateRangeLabels {\r\n startLabel?: React.ReactNode | undefined;\r\n endLabel?: React.ReactNode | undefined;\r\n presetsAria?: string | undefined;\r\n}\r\n\r\nexport interface DateRangePickerProps {\r\n value?: DateRangeValue | null | undefined;\r\n onChange?: ((value: DateRangeValue) => void) | undefined;\r\n minDate?: Date | null | undefined;\r\n maxDate?: Date | null | undefined;\r\n disablePast?: boolean | undefined;\r\n disableFuture?: boolean | undefined;\r\n disabled?: boolean | undefined;\r\n readOnly?: boolean | undefined;\r\n presets?: DateRangePreset[] | undefined;\r\n adapterLocale?: string | undefined;\r\n labels?: DateRangeLabels | undefined;\r\n sx?: SxProps<Theme> | undefined;\r\n}\r\n\r\nconst DEFAULT_LABELS = Object.freeze({\r\n startLabel: \"Du\",\r\n endLabel: \"Au\",\r\n presetsAria: \"Raccourcis\",\r\n});\r\n\r\n// Hoisted sx for visible elements that don't depend on props. The\r\n// preset button sx is hoisted too — same emotion-cache rationale as\r\n// Batch 14 D5.\r\nconst ROOT_SX = Object.freeze({\r\n display: \"flex\",\r\n flexDirection: { xs: \"column\", sm: \"row\" },\r\n gap: \"var(--s-3)\",\r\n} satisfies SxProps<Theme>);\r\n\r\nconst PRESETS_GROUP_SX = Object.freeze({\r\n display: \"flex\",\r\n flexDirection: { xs: \"row\", sm: \"column\" },\r\n gap: \"var(--s-1)\",\r\n flexWrap: \"wrap\",\r\n minWidth: { sm: 140 },\r\n} satisfies SxProps<Theme>);\r\n\r\nconst PICKERS_ROW_SX = Object.freeze({\r\n display: \"flex\",\r\n flexDirection: { xs: \"column\", sm: \"row\" },\r\n gap: \"var(--s-2)\",\r\n flex: 1,\r\n alignItems: { sm: \"flex-end\" },\r\n} satisfies SxProps<Theme>);\r\n\r\nconst FIELD_BLOCK_SX = Object.freeze({\r\n flex: 1,\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n} satisfies SxProps<Theme>);\r\n\r\nconst FIELD_LABEL_SX = Object.freeze({\r\n fontSize: \"var(--text-xs)\",\r\n fontWeight: \"var(--fw-medium)\",\r\n color: \"var(--fg-muted)\",\r\n display: \"block\",\r\n marginBottom: \"var(--s-1)\",\r\n} satisfies SxProps<Theme>);\r\n\r\n// Visual range separator. transform: scaleX(...) flips on [dir=\"rtl\"]\r\n// via --pui-rtl-flip (declared in base.css). Hidden from SR — the\r\n// labels Du / Au already convey the relationship.\r\nconst SEPARATOR_SX = Object.freeze({\r\n flex: \"0 0 auto\",\r\n color: \"var(--fg-muted)\",\r\n fontSize: \"var(--text-sm)\",\r\n // align with the inputs (which sit at the bottom of FIELD_BLOCK_SX\r\n // because the label is above them in the same column).\r\n paddingBottom: \"var(--s-2)\",\r\n transform: \"scaleX(var(--pui-rtl-flip, 1))\",\r\n} satisfies SxProps<Theme>);\r\n\r\nconst PRESET_BUTTON_SX = Object.freeze({\r\n font: \"inherit\",\r\n background: \"transparent\",\r\n border: \"1px solid var(--border)\",\r\n color: \"var(--fg)\",\r\n padding: \"var(--s-1) var(--s-3)\",\r\n borderRadius: \"var(--r-sm)\",\r\n fontSize: \"var(--text-xs)\",\r\n fontWeight: \"var(--fw-medium)\",\r\n cursor: \"pointer\",\r\n textAlign: \"start\", // RTL-safe equivalent of \"left\"\r\n whiteSpace: \"nowrap\",\r\n minHeight: \"var(--tactile-min)\",\r\n \"&:hover:not(:disabled)\": {\r\n background: \"var(--bg-hover)\",\r\n borderColor: \"var(--accent)\",\r\n color: \"var(--accent)\",\r\n },\r\n \"&:focus-visible\": {\r\n outline: \"2px solid var(--accent)\",\r\n outlineOffset: \"var(--pui-outline-offset)\",\r\n },\r\n \"&:disabled\": {\r\n opacity: 0.5,\r\n cursor: \"not-allowed\",\r\n },\r\n} satisfies SxProps<Theme>);\r\n\r\nfunction DateRangePicker({\r\n value,\r\n onChange,\r\n minDate,\r\n maxDate,\r\n disablePast = false,\r\n disableFuture = false,\r\n disabled = false,\r\n readOnly = false,\r\n presets,\r\n adapterLocale = \"fr\",\r\n labels,\r\n sx,\r\n}: DateRangePickerProps) {\r\n const L = mergeLabels(DEFAULT_LABELS, labels);\r\n const startDate = value?.startDate ?? null;\r\n const endDate = value?.endDate ?? null;\r\n\r\n const startInputId = React.useId();\r\n const endInputId = React.useId();\r\n\r\n const setStart = (next: Date | null) => {\r\n if (!onChange) return;\r\n let newEnd = endDate;\r\n // Cross-validation: clamp end UP if the new start exceeds it.\r\n if (next && endDate && next > endDate) newEnd = next;\r\n onChange({ startDate: next, endDate: newEnd });\r\n };\r\n\r\n const setEnd = (next: Date | null) => {\r\n if (!onChange) return;\r\n let newStart = startDate;\r\n // Cross-validation: clamp start DOWN if the new end precedes it.\r\n if (next && startDate && next < startDate) newStart = next;\r\n onChange({ startDate: newStart, endDate: next });\r\n };\r\n\r\n const applyPreset = (preset: DateRangePreset) => {\r\n if (!onChange) return;\r\n onChange({ startDate: preset.from, endDate: preset.to });\r\n };\r\n\r\n // The end picker's effective minDate is max(startDate, props.minDate).\r\n // Computing it here means the calendar dialog itself disables dates\r\n // before the start — the cross-validation in setEnd is the fallback\r\n // for direct text-typing.\r\n const endEffectiveMinDate =\r\n startDate && minDate\r\n ? (startDate > minDate ? startDate : minDate)\r\n : (startDate || minDate);\r\n\r\n return (\r\n <Box sx={sx ? { ...ROOT_SX, ...sx } : ROOT_SX}>\r\n {presets && presets.length > 0 && (\r\n <Box role=\"group\" aria-label={L.presetsAria} sx={PRESETS_GROUP_SX}>\r\n {presets.map((p, i) => (\r\n <Box\r\n component=\"button\"\r\n type=\"button\"\r\n key={p.id ?? i}\r\n onClick={() => applyPreset(p)}\r\n disabled={disabled || readOnly}\r\n sx={PRESET_BUTTON_SX}\r\n >\r\n {p.label}\r\n </Box>\r\n ))}\r\n </Box>\r\n )}\r\n\r\n <Box sx={PICKERS_ROW_SX}>\r\n <Box sx={FIELD_BLOCK_SX}>\r\n <Box component=\"label\" htmlFor={startInputId} sx={FIELD_LABEL_SX}>\r\n {L.startLabel}\r\n </Box>\r\n <DatePicker\r\n value={startDate}\r\n onChange={setStart}\r\n {...(minDate != null ? { minDate } : {})}\r\n {...(maxDate != null ? { maxDate } : {})}\r\n disablePast={disablePast}\r\n disableFuture={disableFuture}\r\n disabled={disabled}\r\n readOnly={readOnly}\r\n adapterLocale={adapterLocale}\r\n inputProps={{ id: startInputId }}\r\n />\r\n </Box>\r\n\r\n <Box aria-hidden=\"true\" sx={SEPARATOR_SX}>→</Box>\r\n\r\n <Box sx={FIELD_BLOCK_SX}>\r\n <Box component=\"label\" htmlFor={endInputId} sx={FIELD_LABEL_SX}>\r\n {L.endLabel}\r\n </Box>\r\n <DatePicker\r\n value={endDate}\r\n onChange={setEnd}\r\n {...(endEffectiveMinDate != null ? { minDate: endEffectiveMinDate } : {})}\r\n {...(maxDate != null ? { maxDate } : {})}\r\n disablePast={disablePast}\r\n disableFuture={disableFuture}\r\n disabled={disabled}\r\n readOnly={readOnly}\r\n adapterLocale={adapterLocale}\r\n inputProps={{ id: endInputId }}\r\n />\r\n </Box>\r\n </Box>\r\n </Box>\r\n );\r\n}\r\n\r\nexport default DateRangePicker;\r\n"],"mappings":"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","ignoreList":[]}
|