@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":"NotFoundPage.js","names":["Box","ArrowBack","SearchOff","ActionBar","Button","ErrorPageBody","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","
|
|
1
|
+
{"version":3,"file":"NotFoundPage.js","names":["Box","ArrowBack","SearchOff","ActionBar","Button","ErrorPageBody","mergeLabels","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","DEFAULT_LABELS","Object","freeze","breadcrumbRoot","breadcrumbCurrent","title","heading","description","home","NotFoundPage","onBack","onHome","labels","L","children","back","breadcrumb","icon","sx","fontSize","color","code","display","justifyContent","paddingBottom","variant","onClick"],"sources":["../../../../src/lib/v2/components/NotFoundPage.tsx"],"sourcesContent":["/**\r\n * NotFoundPage — Portnet UI v2 (component)\r\n *\r\n * Charter §07 · 404 / Page introuvable.\r\n *\r\n * Router-agnostic. See ForbiddenPage.tsx for the full contract and\r\n * design rationale (onBack + onHome callback props).\r\n *\r\n * import { NotFoundPage } from \"@portnet/ui/lib/v2\";\r\n * import { useNavigate } from \"react-router-dom\";\r\n *\r\n * function NotFoundRoute() {\r\n * const navigate = useNavigate();\r\n * return <NotFoundPage onBack={() => navigate(-1)} onHome={() => navigate(\"/\")} />;\r\n * }\r\n *\r\n * Localisation (P-4): every visible string is overridable through\r\n * `labels`, defaulting to French. The shape matches the other three\r\n * error pages so one translation object can serve all of them.\r\n *\r\n * No retry here, deliberately: a 404 is a statement about an address\r\n * rather than about a moment, so retrying cannot change the outcome.\r\n */\r\nimport Box from \"@mui/material/Box\";\r\nimport ArrowBack from \"@mui/icons-material/ArrowBack\";\r\nimport SearchOff from \"@mui/icons-material/SearchOff\";\r\nimport ActionBar from \"../patterns/ActionBar\";\r\nimport Button from \"./Button\";\r\nimport ErrorPageBody from \"./_ErrorPageBody\";\r\nimport { mergeLabels } from \"../utils/mergeLabels\";\r\n\r\nexport interface NotFoundPageLabels {\r\n /** First breadcrumb crumb. */\r\n breadcrumbRoot?: string | undefined;\r\n /** Last breadcrumb crumb — aria-current=\"page\". */\r\n breadcrumbCurrent?: string | undefined;\r\n /** ActionBar heading (the page's <h1>). */\r\n title?: string | undefined;\r\n /** Descriptive sentence under the code ornament (the <h2>). */\r\n heading?: string | undefined;\r\n /** Body paragraph — names the likely causes and the one action. */\r\n description?: string | undefined;\r\n /** Primary CTA label. */\r\n home?: string | undefined;\r\n}\r\n\r\nconst DEFAULT_LABELS = Object.freeze({\r\n breadcrumbRoot: \"Erreur\",\r\n breadcrumbCurrent: \"Page introuvable\",\r\n title: \"Page introuvable\",\r\n heading: \"La page demandée n'existe pas\",\r\n description:\r\n \"Le lien suivi est peut-être obsolète, ou la page a été déplacée. Vérifiez l'adresse, ou retournez à l'accueil pour reprendre votre navigation.\",\r\n home: \"Retour à l'accueil\",\r\n});\r\n\r\nexport interface NotFoundPageProps {\r\n /** Callback for the back button (top-bar arrow). */\r\n onBack: () => void;\r\n /** Callback for the primary \"Retour à l'accueil\" CTA. */\r\n onHome: () => void;\r\n /** Overrides for the page's French defaults (P-4). */\r\n labels?: NotFoundPageLabels | undefined;\r\n}\r\n\r\nfunction NotFoundPage({ onBack, onHome, labels }: NotFoundPageProps) {\r\n const L = mergeLabels(DEFAULT_LABELS, labels);\r\n\r\n return (\r\n <>\r\n <ActionBar\r\n back={onBack}\r\n breadcrumb={[L.breadcrumbRoot, L.breadcrumbCurrent]}\r\n title={L.title}\r\n />\r\n <ErrorPageBody\r\n icon={<SearchOff sx={{ fontSize: 64, color: \"var(--info)\" }} />}\r\n code=\"404\"\r\n title={L.heading}\r\n description={L.description}\r\n />\r\n <Box sx={{ display: \"flex\", justifyContent: \"center\", paddingBottom: \"var(--s-7)\" }}>\r\n <Button variant=\"primary\" icon={<ArrowBack />} onClick={onHome}>\r\n {L.home}\r\n </Button>\r\n </Box>\r\n </>\r\n );\r\n}\r\n\r\nexport default NotFoundPage;\r\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAOA,GAAG,MAAM,mBAAmB;AACnC,OAAOC,SAAS,MAAM,+BAA+B;AACrD,OAAOC,SAAS,MAAM,+BAA+B;AACrD,OAAOC,SAAS,MAAM,uBAAuB;AAC7C,OAAOC,MAAM,MAAM,UAAU;AAC7B,OAAOC,aAAa,MAAM,kBAAkB;AAC5C,SAASC,WAAW,QAAQ,sBAAsB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,QAAA,IAAAC,SAAA,EAAAC,IAAA,IAAAC,KAAA;AAiBnD,MAAMC,cAAc,GAAGC,MAAM,CAACC,MAAM,CAAC;EACnCC,cAAc,EAAK,QAAQ;EAC3BC,iBAAiB,EAAE,kBAAkB;EACrCC,KAAK,EAAc,kBAAkB;EACrCC,OAAO,EAAY,+BAA+B;EAClDC,WAAW,EACT,gJAAgJ;EAClJC,IAAI,EAAe;AACrB,CAAC,CAAC;AAWF,SAASC,YAAYA,CAAC;EAAEC,MAAM;EAAEC,MAAM;EAAEC;AAA0B,CAAC,EAAE;EACnE,MAAMC,CAAC,GAAGpB,WAAW,CAACO,cAAc,EAAEY,MAAM,CAAC;EAE7C,oBACEb,KAAA,CAAAF,SAAA;IAAAiB,QAAA,gBACEnB,IAAA,CAACL,SAAS;MACRyB,IAAI,EAAEL,MAAO;MACbM,UAAU,EAAE,CAACH,CAAC,CAACV,cAAc,EAAEU,CAAC,CAACT,iBAAiB,CAAE;MACpDC,KAAK,EAAEQ,CAAC,CAACR;IAAM,CAChB,CAAC,eACFV,IAAA,CAACH,aAAa;MACZyB,IAAI,eAAEtB,IAAA,CAACN,SAAS;QAAC6B,EAAE,EAAE;UAAEC,QAAQ,EAAE,EAAE;UAAEC,KAAK,EAAE;QAAc;MAAE,CAAE,CAAE;MAChEC,IAAI,EAAC,KAAK;MACVhB,KAAK,EAAEQ,CAAC,CAACP,OAAQ;MACjBC,WAAW,EAAEM,CAAC,CAACN;IAAY,CAC5B,CAAC,eACFZ,IAAA,CAACR,GAAG;MAAC+B,EAAE,EAAE;QAAEI,OAAO,EAAE,MAAM;QAAEC,cAAc,EAAE,QAAQ;QAAEC,aAAa,EAAE;MAAa,CAAE;MAAAV,QAAA,eAClFnB,IAAA,CAACJ,MAAM;QAACkC,OAAO,EAAC,SAAS;QAACR,IAAI,eAAEtB,IAAA,CAACP,SAAS,IAAE,CAAE;QAACsC,OAAO,EAAEf,MAAO;QAAAG,QAAA,EAC5DD,CAAC,CAACL;MAAI,CACD;IAAC,CACN,CAAC;EAAA,CACN,CAAC;AAEP;AAEA,eAAeC,YAAY","ignoreList":[]}
|
|
@@ -1,18 +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
|
-
var _excluded = ["value", "onChange", "onBlur", "min", "max", "step", "decimals", "placeholder", "disabled", "error", "readOnly", "fullWidth", "showSpinner", "prefix", "suffix", "inputProps", "onValidate", "locale", "labels", "sx"];
|
|
3
|
-
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; }
|
|
4
|
-
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; }
|
|
5
|
-
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; }
|
|
6
|
-
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
7
|
-
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); }
|
|
8
|
-
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
9
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
10
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
11
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
12
|
-
function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) { ; } } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
|
|
13
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
14
|
-
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
15
|
-
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
16
1
|
import * as React from "react";
|
|
17
2
|
import OutlinedInput from "@mui/material/OutlinedInput";
|
|
18
3
|
import InputAdornment from "@mui/material/InputAdornment";
|
|
@@ -75,20 +60,19 @@ import { mergeLabels } from "../utils/mergeLabels";
|
|
|
75
60
|
* Documented exception, see Batch 14 charter-exceptions log.
|
|
76
61
|
*/
|
|
77
62
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
78
|
-
|
|
79
|
-
|
|
63
|
+
const FR_DECIMAL_SEP = ",";
|
|
64
|
+
const FR_THOUSAND_SEP = " ";
|
|
80
65
|
|
|
81
66
|
// Stepper button hit area — WCAG 2.5.8 AA (24 × 24). See JSDoc above
|
|
82
67
|
// for the rationale for not pursuing 44 × 44 / R-Tg.1 here.
|
|
83
|
-
|
|
84
|
-
|
|
68
|
+
const STEPPER_HIT_AREA = 24;
|
|
69
|
+
const DEFAULT_LABELS = Object.freeze({
|
|
85
70
|
decrement: "Diminuer",
|
|
86
71
|
increment: "Augmenter"
|
|
87
72
|
});
|
|
88
|
-
function formatForDisplay(num, decimals) {
|
|
89
|
-
var locale = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "fr-FR";
|
|
73
|
+
function formatForDisplay(num, decimals, locale = "fr-FR") {
|
|
90
74
|
if (num == null || Number.isNaN(num)) return "";
|
|
91
|
-
|
|
75
|
+
const opts = decimals != null ? {
|
|
92
76
|
minimumFractionDigits: decimals,
|
|
93
77
|
maximumFractionDigits: decimals
|
|
94
78
|
} : {
|
|
@@ -96,7 +80,7 @@ function formatForDisplay(num, decimals) {
|
|
|
96
80
|
};
|
|
97
81
|
try {
|
|
98
82
|
return new Intl.NumberFormat(locale, opts).format(num);
|
|
99
|
-
} catch
|
|
83
|
+
} catch {
|
|
100
84
|
// Invalid BCP-47 tag — fall back to fr-FR rather than throwing.
|
|
101
85
|
return new Intl.NumberFormat("fr-FR", opts).format(num);
|
|
102
86
|
}
|
|
@@ -105,95 +89,82 @@ function parseFromUser(str) {
|
|
|
105
89
|
if (str == null || str === "") return null;
|
|
106
90
|
// Accept BOTH `,` and `.` as decimal separator; strip every whitespace
|
|
107
91
|
// (regular space, NBSP, narrow NBSP). Locale-agnostic by design.
|
|
108
|
-
|
|
92
|
+
const cleaned = String(str).replace(/[\u00A0\u202F]/g, " ").replace(/\s+/g, "").replace(",", ".");
|
|
109
93
|
if (cleaned === "" || cleaned === "-" || cleaned === ".") return null;
|
|
110
|
-
|
|
94
|
+
const n = Number(cleaned);
|
|
111
95
|
return Number.isFinite(n) ? n : null;
|
|
112
96
|
}
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
var _React$useState = React.useState(function () {
|
|
141
|
-
return formatForDisplay(value, decimals, locale);
|
|
142
|
-
}),
|
|
143
|
-
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
144
|
-
display = _React$useState2[0],
|
|
145
|
-
setDisplay = _React$useState2[1];
|
|
146
|
-
var _React$useState3 = React.useState(false),
|
|
147
|
-
_React$useState4 = _slicedToArray(_React$useState3, 2),
|
|
148
|
-
focused = _React$useState4[0],
|
|
149
|
-
setFocused = _React$useState4[1];
|
|
150
|
-
React.useEffect(function () {
|
|
97
|
+
const NumberInput = /*#__PURE__*/React.forwardRef(function NumberInput({
|
|
98
|
+
value,
|
|
99
|
+
onChange,
|
|
100
|
+
onBlur,
|
|
101
|
+
min,
|
|
102
|
+
max,
|
|
103
|
+
step = 1,
|
|
104
|
+
decimals,
|
|
105
|
+
placeholder,
|
|
106
|
+
disabled,
|
|
107
|
+
error,
|
|
108
|
+
readOnly,
|
|
109
|
+
fullWidth = true,
|
|
110
|
+
showSpinner = false,
|
|
111
|
+
prefix,
|
|
112
|
+
suffix,
|
|
113
|
+
inputProps,
|
|
114
|
+
onValidate,
|
|
115
|
+
locale = "fr-FR",
|
|
116
|
+
labels,
|
|
117
|
+
sx,
|
|
118
|
+
...rest
|
|
119
|
+
}, ref) {
|
|
120
|
+
const mergedLabels = mergeLabels(DEFAULT_LABELS, labels);
|
|
121
|
+
const [display, setDisplay] = React.useState(() => formatForDisplay(value, decimals, locale));
|
|
122
|
+
const [focused, setFocused] = React.useState(false);
|
|
123
|
+
React.useEffect(() => {
|
|
151
124
|
if (!focused) setDisplay(formatForDisplay(value, decimals, locale));
|
|
152
125
|
}, [value, decimals, locale, focused]);
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
126
|
+
const allowMinus = min == null || min < 0;
|
|
127
|
+
const onUserChange = e => {
|
|
128
|
+
const raw = e.target.value;
|
|
129
|
+
const re = allowMinus ? /^-?[0-9]*[.,]?[0-9]*$/ : /^[0-9]*[.,]?[0-9]*$/;
|
|
157
130
|
if (raw !== "" && !re.test(raw)) return;
|
|
158
131
|
setDisplay(raw);
|
|
159
|
-
|
|
160
|
-
onChange
|
|
132
|
+
const parsed = parseFromUser(raw);
|
|
133
|
+
onChange?.(parsed);
|
|
161
134
|
};
|
|
162
|
-
|
|
135
|
+
const clamp = n => {
|
|
163
136
|
if (n == null) return n;
|
|
164
|
-
|
|
137
|
+
let out = n;
|
|
165
138
|
if (typeof min === "number" && out < min) out = min;
|
|
166
139
|
if (typeof max === "number" && out > max) out = max;
|
|
167
140
|
return out;
|
|
168
141
|
};
|
|
169
|
-
|
|
142
|
+
const handleBlur = e => {
|
|
170
143
|
setFocused(false);
|
|
171
|
-
|
|
172
|
-
|
|
144
|
+
const parsed = parseFromUser(display);
|
|
145
|
+
const clamped = clamp(parsed);
|
|
173
146
|
if (clamped !== parsed) {
|
|
174
|
-
onChange
|
|
147
|
+
onChange?.(clamped);
|
|
175
148
|
setDisplay(formatForDisplay(clamped, decimals, locale));
|
|
176
149
|
} else {
|
|
177
150
|
setDisplay(formatForDisplay(parsed, decimals, locale));
|
|
178
151
|
}
|
|
179
152
|
if (onValidate) {
|
|
180
|
-
|
|
153
|
+
const violation = parsed == null ? null : typeof min === "number" && parsed < min ? "min" : typeof max === "number" && parsed > max ? "max" : null;
|
|
181
154
|
onValidate({
|
|
182
155
|
value: parsed,
|
|
183
|
-
clamped
|
|
184
|
-
violation
|
|
156
|
+
clamped,
|
|
157
|
+
violation
|
|
185
158
|
});
|
|
186
159
|
}
|
|
187
|
-
onBlur
|
|
160
|
+
onBlur?.(e);
|
|
188
161
|
};
|
|
189
|
-
|
|
190
|
-
|
|
162
|
+
const handleFocus = () => setFocused(true);
|
|
163
|
+
const bumpBy = delta => {
|
|
164
|
+
const next = clamp((value ?? 0) + delta);
|
|
165
|
+
onChange?.(next);
|
|
191
166
|
};
|
|
192
|
-
|
|
193
|
-
var next = clamp((value !== null && value !== void 0 ? value : 0) + delta);
|
|
194
|
-
onChange === null || onChange === void 0 ? void 0 : onChange(next);
|
|
195
|
-
};
|
|
196
|
-
var onKeyDown = function onKeyDown(e) {
|
|
167
|
+
const onKeyDown = e => {
|
|
197
168
|
if (e.key === "ArrowUp") {
|
|
198
169
|
e.preventDefault();
|
|
199
170
|
bumpBy(+step);
|
|
@@ -203,24 +174,24 @@ var NumberInput = /*#__PURE__*/React.forwardRef(function NumberInput(_ref, ref)
|
|
|
203
174
|
bumpBy(-step);
|
|
204
175
|
}
|
|
205
176
|
};
|
|
206
|
-
|
|
177
|
+
const ariaValueText = React.useMemo(() => {
|
|
207
178
|
if (value == null || Number.isNaN(value)) return undefined;
|
|
208
|
-
|
|
179
|
+
const formatted = formatForDisplay(value, decimals, locale);
|
|
209
180
|
if (typeof suffix === "string" && suffix.trim()) {
|
|
210
|
-
return
|
|
181
|
+
return `${formatted} ${suffix}`.trim();
|
|
211
182
|
}
|
|
212
183
|
return formatted || undefined;
|
|
213
184
|
}, [value, decimals, locale, suffix]);
|
|
214
185
|
|
|
215
186
|
// Shared sx for both stepper IconButtons. WCAG 2.5.8 AA floor (24×24),
|
|
216
187
|
// padding 0 so the icon centres without cropping.
|
|
217
|
-
|
|
188
|
+
const stepperSx = {
|
|
218
189
|
color: "var(--fg-muted)",
|
|
219
190
|
minWidth: STEPPER_HIT_AREA,
|
|
220
191
|
minHeight: STEPPER_HIT_AREA,
|
|
221
192
|
padding: 0
|
|
222
193
|
};
|
|
223
|
-
return /*#__PURE__*/_jsx(OutlinedInput,
|
|
194
|
+
return /*#__PURE__*/_jsx(OutlinedInput, {
|
|
224
195
|
ref: ref,
|
|
225
196
|
type: "text",
|
|
226
197
|
inputMode: "decimal",
|
|
@@ -248,9 +219,7 @@ var NumberInput = /*#__PURE__*/React.forwardRef(function NumberInput(_ref, ref)
|
|
|
248
219
|
}), showSpinner && /*#__PURE__*/_jsxs(_Fragment, {
|
|
249
220
|
children: [/*#__PURE__*/_jsx(IconButton, {
|
|
250
221
|
size: "small",
|
|
251
|
-
onClick:
|
|
252
|
-
return bumpBy(-step);
|
|
253
|
-
},
|
|
222
|
+
onClick: () => bumpBy(-step),
|
|
254
223
|
disabled: disabled || readOnly || typeof min === "number" && value != null && value <= min,
|
|
255
224
|
"aria-label": mergedLabels.decrement,
|
|
256
225
|
sx: stepperSx,
|
|
@@ -261,9 +230,7 @@ var NumberInput = /*#__PURE__*/React.forwardRef(function NumberInput(_ref, ref)
|
|
|
261
230
|
})
|
|
262
231
|
}), /*#__PURE__*/_jsx(IconButton, {
|
|
263
232
|
size: "small",
|
|
264
|
-
onClick:
|
|
265
|
-
return bumpBy(+step);
|
|
266
|
-
},
|
|
233
|
+
onClick: () => bumpBy(+step),
|
|
267
234
|
disabled: disabled || readOnly || typeof max === "number" && value != null && value >= max,
|
|
268
235
|
"aria-label": mergedLabels.increment,
|
|
269
236
|
sx: stepperSx,
|
|
@@ -282,28 +249,31 @@ var NumberInput = /*#__PURE__*/React.forwardRef(function NumberInput(_ref, ref)
|
|
|
282
249
|
// migrated for v9 alignment (audit Batch 3). Spread order
|
|
283
250
|
// preserved: consumer-supplied inputProps comes LAST so it
|
|
284
251
|
// can override aria-* attributes (same semantics as v5).
|
|
285
|
-
input:
|
|
252
|
+
input: {
|
|
286
253
|
role: "spinbutton",
|
|
287
|
-
"aria-valuenow": value
|
|
254
|
+
"aria-valuenow": value ?? undefined,
|
|
288
255
|
"aria-valuemin": min,
|
|
289
256
|
"aria-valuemax": max,
|
|
290
|
-
"aria-valuetext": ariaValueText
|
|
291
|
-
|
|
257
|
+
"aria-valuetext": ariaValueText,
|
|
258
|
+
...inputProps
|
|
259
|
+
}
|
|
292
260
|
},
|
|
293
|
-
sx:
|
|
261
|
+
sx: {
|
|
294
262
|
// R-T.3 — tabular-nums for vertical alignment in tables/forms
|
|
295
263
|
"& input": {
|
|
296
264
|
fontVariantNumeric: "tabular-nums",
|
|
297
265
|
textAlign: "right"
|
|
298
|
-
}
|
|
299
|
-
|
|
300
|
-
|
|
266
|
+
},
|
|
267
|
+
...sx
|
|
268
|
+
},
|
|
269
|
+
...rest
|
|
270
|
+
});
|
|
301
271
|
});
|
|
302
272
|
|
|
303
273
|
// Locale separators exported so callers can mirror exact display elsewhere
|
|
304
274
|
// without re-implementing. Kept for back-compat; for full locale-correct
|
|
305
275
|
// formatting prefer `Intl.NumberFormat(locale)` directly.
|
|
306
|
-
export
|
|
307
|
-
export
|
|
276
|
+
export const FR_DECIMAL_SEPARATOR = FR_DECIMAL_SEP;
|
|
277
|
+
export const FR_THOUSAND_SEPARATOR = FR_THOUSAND_SEP;
|
|
308
278
|
export default NumberInput;
|
|
309
279
|
//# sourceMappingURL=NumberInput.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NumberInput.js","names":["React","OutlinedInput","InputAdornment","IconButton","AddIcon","RemoveIcon","mergeLabels","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","FR_DECIMAL_SEP","FR_THOUSAND_SEP","STEPPER_HIT_AREA","DEFAULT_LABELS","Object","freeze","decrement","increment","formatForDisplay","num","decimals","locale","arguments","length","undefined","Number","isNaN","opts","minimumFractionDigits","maximumFractionDigits","Intl","NumberFormat","format","_unused","parseFromUser","str","cleaned","String","replace","n","isFinite","NumberInput","forwardRef","_ref","ref","value","onChange","onBlur","min","max","_ref$step","step","placeholder","disabled","error","readOnly","_ref$fullWidth","fullWidth","_ref$showSpinner","showSpinner","prefix","suffix","inputProps","onValidate","_ref$locale","labels","sx","rest","_objectWithoutProperties","_excluded","mergedLabels","_React$useState","useState","_React$useState2","_slicedToArray","display","setDisplay","_React$useState3","_React$useState4","focused","setFocused","useEffect","allowMinus","onUserChange","e","raw","target","re","test","parsed","clamp","out","handleBlur","clamped","violation","handleFocus","bumpBy","delta","next","onKeyDown","key","preventDefault","ariaValueText","useMemo","formatted","trim","concat","stepperSx","color","minWidth","minHeight","padding","_objectSpread","type","inputMode","onFocus","startAdornment","position","children","endAdornment","gap","size","onClick","fontSize","slotProps","input","role","fontVariantNumeric","textAlign","FR_DECIMAL_SEPARATOR","FR_THOUSAND_SEPARATOR"],"sources":["../../../../src/lib/v2/components/NumberInput.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport OutlinedInput from \"@mui/material/OutlinedInput\";\r\nimport type { OutlinedInputProps } from \"@mui/material/OutlinedInput\";\r\nimport InputAdornment from \"@mui/material/InputAdornment\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport AddIcon from \"@mui/icons-material/Add\";\r\nimport RemoveIcon from \"@mui/icons-material/Remove\";\r\nimport { mergeLabels } from \"../utils/mergeLabels\";\r\n\r\n/**\r\n * NumberInput — Portnet UI v2\r\n *\r\n * Charter §03 · Component \"NumberInput\". Locale-aware numeric input.\r\n *\r\n * <Field label=\"Montant\">\r\n * <NumberInput\r\n * value={amount} onChange={setAmount}\r\n * min={0} max={1000000} decimals={2} suffix=\"MAD\"\r\n * />\r\n * </Field>\r\n *\r\n * Locale (multi-locale platform — FR / EN / AR)\r\n * <NumberInput\r\n * locale=\"en-US\"\r\n * labels={{ decrement: \"Decrease\", increment: \"Increase\" }}\r\n * value={amount} onChange={setAmount}\r\n * />\r\n *\r\n * - `locale` controls DISPLAY formatting only. Parsing is\r\n * permissive: `,` and `.` both accepted as decimal separator,\r\n * all whitespace stripped — pasting from any locale just works.\r\n * - `labels` overrides the FR defaults on the spinner buttons.\r\n *\r\n * Value contract:\r\n * onChange(null) on empty input\r\n * onChange(123.45) on valid number\r\n * Display formatting (separators, decimals) is purely visual,\r\n * reapplied on blur.\r\n *\r\n * A11y (aria-valuetext):\r\n * aria-valuenow holds the raw number; aria-valuetext holds the\r\n * localised, suffix-bearing string (\"1 234,56 MAD\") so SR users\r\n * hear the same thing sighted users see.\r\n *\r\n * MUI v9 surface notes (audit Batch 3):\r\n * The spinbutton aria contract (role + aria-value*) is injected\r\n * via slotProps.input — MUI v9 idiomatic location for native\r\n * <input/> attributes on OutlinedInput. Migrated from the\r\n * deprecated `inputProps={...}` form to match the rest of the\r\n * v2 surface (Switch, Combobox, DataGrid family).\r\n * Consumer-passed `inputProps` remains merged in via spread —\r\n * same order as the pre-migration code, so override semantics\r\n * are preserved bit-for-bit.\r\n *\r\n * Tactile contract — known R-Tg.1 deviation (charter exception):\r\n * The stepper buttons (showSpinner) are sized to 24 × 24 — the\r\n * WCAG 2.5.8 AA floor — NOT the 44 × 44 R-Tg.1 AAA floor. The\r\n * stepper is opt-in convenience UI on top of the keyboard\r\n * ArrowUp / ArrowDown handler that the input itself provides;\r\n * users requiring larger targets can type or use keyboard nav.\r\n * Documented exception, see Batch 14 charter-exceptions log.\r\n */\r\n\r\nexport interface NumberInputLabels {\r\n decrement?: string | undefined;\r\n increment?: string | undefined;\r\n}\r\n\r\nexport interface NumberInputValidateResult {\r\n value: number | null;\r\n clamped: number | null;\r\n violation: \"min\" | \"max\" | null;\r\n}\r\n\r\nexport interface NumberInputProps\r\n extends Omit<OutlinedInputProps, \"value\" | \"onChange\" | \"prefix\" | \"suffix\"> {\r\n value?: number | null | undefined;\r\n onChange?: ((value: number | null) => void) | undefined;\r\n min?: number | undefined;\r\n max?: number | undefined;\r\n step?: number | undefined;\r\n decimals?: number | undefined;\r\n showSpinner?: boolean | undefined;\r\n prefix?: React.ReactNode | undefined;\r\n suffix?: React.ReactNode | undefined;\r\n onValidate?: ((result: NumberInputValidateResult) => void) | undefined;\r\n locale?: string | undefined;\r\n labels?: NumberInputLabels | undefined;\r\n}\r\n\r\nconst FR_DECIMAL_SEP = \",\";\r\nconst FR_THOUSAND_SEP = \" \";\r\n\r\n// Stepper button hit area — WCAG 2.5.8 AA (24 × 24). See JSDoc above\r\n// for the rationale for not pursuing 44 × 44 / R-Tg.1 here.\r\nconst STEPPER_HIT_AREA = 24;\r\n\r\nconst DEFAULT_LABELS = Object.freeze({\r\n decrement: \"Diminuer\",\r\n increment: \"Augmenter\",\r\n});\r\n\r\nfunction formatForDisplay(\r\n num: number | null | undefined,\r\n decimals: number | undefined,\r\n locale = \"fr-FR\",\r\n): string {\r\n if (num == null || Number.isNaN(num)) return \"\";\r\n const opts: Intl.NumberFormatOptions = decimals != null\r\n ? { minimumFractionDigits: decimals, maximumFractionDigits: decimals }\r\n : { maximumFractionDigits: 6 };\r\n try {\r\n return new Intl.NumberFormat(locale, opts).format(num);\r\n } catch {\r\n // Invalid BCP-47 tag — fall back to fr-FR rather than throwing.\r\n return new Intl.NumberFormat(\"fr-FR\", opts).format(num);\r\n }\r\n}\r\n\r\nfunction parseFromUser(str: string | null | undefined): number | null {\r\n if (str == null || str === \"\") return null;\r\n // Accept BOTH `,` and `.` as decimal separator; strip every whitespace\r\n // (regular space, NBSP, narrow NBSP). Locale-agnostic by design.\r\n const cleaned = String(str)\r\n .replace(/[\\u00A0\\u202F]/g, \" \")\r\n .replace(/\\s+/g, \"\")\r\n .replace(\",\", \".\");\r\n if (cleaned === \"\" || cleaned === \"-\" || cleaned === \".\") return null;\r\n const n = Number(cleaned);\r\n return Number.isFinite(n) ? n : null;\r\n}\r\n\r\nconst NumberInput = React.forwardRef<React.ComponentRef<typeof OutlinedInput>, NumberInputProps>(function NumberInput(\r\n {\r\n value, onChange, onBlur,\r\n min, max, step = 1, decimals,\r\n placeholder, disabled, error, readOnly,\r\n fullWidth = true, showSpinner = false,\r\n prefix, suffix, inputProps, onValidate,\r\n locale = \"fr-FR\",\r\n labels,\r\n sx,\r\n ...rest\r\n },\r\n ref,\r\n) {\r\n const mergedLabels = mergeLabels(DEFAULT_LABELS, labels);\r\n\r\n const [display, setDisplay] = React.useState<string>(() => formatForDisplay(value, decimals, locale));\r\n const [focused, setFocused] = React.useState(false);\r\n\r\n React.useEffect(() => {\r\n if (!focused) setDisplay(formatForDisplay(value, decimals, locale));\r\n }, [value, decimals, locale, focused]);\r\n\r\n const allowMinus = min == null || min < 0;\r\n\r\n const onUserChange: NonNullable<OutlinedInputProps[\"onChange\"]> = (e) => {\r\n const raw = e.target.value;\r\n const re = allowMinus ? /^-?[0-9]*[.,]?[0-9]*$/ : /^[0-9]*[.,]?[0-9]*$/;\r\n if (raw !== \"\" && !re.test(raw)) return;\r\n setDisplay(raw);\r\n const parsed = parseFromUser(raw);\r\n onChange?.(parsed);\r\n };\r\n\r\n const clamp = (n: number | null): number | null => {\r\n if (n == null) return n;\r\n let out = n;\r\n if (typeof min === \"number\" && out < min) out = min;\r\n if (typeof max === \"number\" && out > max) out = max;\r\n return out;\r\n };\r\n\r\n const handleBlur: NonNullable<OutlinedInputProps[\"onBlur\"]> = (e) => {\r\n setFocused(false);\r\n const parsed = parseFromUser(display);\r\n const clamped = clamp(parsed);\r\n if (clamped !== parsed) {\r\n onChange?.(clamped);\r\n setDisplay(formatForDisplay(clamped, decimals, locale));\r\n } else {\r\n setDisplay(formatForDisplay(parsed, decimals, locale));\r\n }\r\n if (onValidate) {\r\n const violation: \"min\" | \"max\" | null =\r\n parsed == null ? null :\r\n (typeof min === \"number\" && parsed < min) ? \"min\" :\r\n (typeof max === \"number\" && parsed > max) ? \"max\" :\r\n null;\r\n onValidate({ value: parsed, clamped, violation });\r\n }\r\n onBlur?.(e);\r\n };\r\n\r\n const handleFocus = () => setFocused(true);\r\n\r\n const bumpBy = (delta: number) => {\r\n const next = clamp((value ?? 0) + delta);\r\n onChange?.(next);\r\n };\r\n\r\n const onKeyDown: NonNullable<OutlinedInputProps[\"onKeyDown\"]> = (e) => {\r\n if (e.key === \"ArrowUp\") { e.preventDefault(); bumpBy(+step); }\r\n if (e.key === \"ArrowDown\") { e.preventDefault(); bumpBy(-step); }\r\n };\r\n\r\n const ariaValueText = React.useMemo(() => {\r\n if (value == null || Number.isNaN(value)) return undefined;\r\n const formatted = formatForDisplay(value, decimals, locale);\r\n if (typeof suffix === \"string\" && suffix.trim()) {\r\n return `${formatted} ${suffix}`.trim();\r\n }\r\n return formatted || undefined;\r\n }, [value, decimals, locale, suffix]);\r\n\r\n // Shared sx for both stepper IconButtons. WCAG 2.5.8 AA floor (24×24),\r\n // padding 0 so the icon centres without cropping.\r\n const stepperSx = {\r\n color: \"var(--fg-muted)\",\r\n minWidth: STEPPER_HIT_AREA,\r\n minHeight: STEPPER_HIT_AREA,\r\n padding: 0,\r\n };\r\n\r\n return (\r\n <OutlinedInput\r\n ref={ref}\r\n type=\"text\"\r\n inputMode=\"decimal\"\r\n value={display}\r\n onChange={onUserChange}\r\n onFocus={handleFocus}\r\n onBlur={handleBlur}\r\n onKeyDown={onKeyDown}\r\n placeholder={placeholder}\r\n disabled={disabled}\r\n readOnly={readOnly}\r\n error={!!error}\r\n fullWidth={fullWidth}\r\n startAdornment={\r\n prefix ? <InputAdornment position=\"start\">{prefix}</InputAdornment> : undefined\r\n }\r\n endAdornment={\r\n (suffix || showSpinner) ? (\r\n <InputAdornment position=\"end\" sx={{ gap: 0.25 }}>\r\n {suffix && <span>{suffix}</span>}\r\n {showSpinner && (\r\n <>\r\n <IconButton\r\n size=\"small\"\r\n onClick={() => bumpBy(-step)}\r\n disabled={disabled || readOnly || (typeof min === \"number\" && value != null && value <= min)}\r\n aria-label={mergedLabels.decrement}\r\n sx={stepperSx}\r\n >\r\n <RemoveIcon sx={{ fontSize: 14 }} />\r\n </IconButton>\r\n <IconButton\r\n size=\"small\"\r\n onClick={() => bumpBy(+step)}\r\n disabled={disabled || readOnly || (typeof max === \"number\" && value != null && value >= max)}\r\n aria-label={mergedLabels.increment}\r\n sx={stepperSx}\r\n >\r\n <AddIcon sx={{ fontSize: 14 }} />\r\n </IconButton>\r\n </>\r\n )}\r\n </InputAdornment>\r\n ) : undefined\r\n }\r\n slotProps={{\r\n // MUI v9: the input slot bag forwards directly to the\r\n // internal <input/> element on OutlinedInput. Was\r\n // `inputProps={...}` at the top level — deprecated in v6,\r\n // migrated for v9 alignment (audit Batch 3). Spread order\r\n // preserved: consumer-supplied inputProps comes LAST so it\r\n // can override aria-* attributes (same semantics as v5).\r\n input: {\r\n role: \"spinbutton\" as const,\r\n \"aria-valuenow\": value ?? undefined,\r\n \"aria-valuemin\": min,\r\n \"aria-valuemax\": max,\r\n \"aria-valuetext\": ariaValueText,\r\n ...inputProps,\r\n },\r\n }}\r\n sx={{\r\n // R-T.3 — tabular-nums for vertical alignment in tables/forms\r\n \"& input\": { fontVariantNumeric: \"tabular-nums\", textAlign: \"right\" },\r\n ...sx,\r\n }}\r\n {...rest}\r\n />\r\n );\r\n});\r\n\r\n// Locale separators exported so callers can mirror exact display elsewhere\r\n// without re-implementing. Kept for back-compat; for full locale-correct\r\n// formatting prefer `Intl.NumberFormat(locale)` directly.\r\nexport const FR_DECIMAL_SEPARATOR = FR_DECIMAL_SEP;\r\nexport const FR_THOUSAND_SEPARATOR = FR_THOUSAND_SEP;\r\n\r\nexport default NumberInput;\r\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"NumberInput.js","names":["React","OutlinedInput","InputAdornment","IconButton","AddIcon","RemoveIcon","mergeLabels","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","FR_DECIMAL_SEP","FR_THOUSAND_SEP","STEPPER_HIT_AREA","DEFAULT_LABELS","Object","freeze","decrement","increment","formatForDisplay","num","decimals","locale","Number","isNaN","opts","minimumFractionDigits","maximumFractionDigits","Intl","NumberFormat","format","parseFromUser","str","cleaned","String","replace","n","isFinite","NumberInput","forwardRef","value","onChange","onBlur","min","max","step","placeholder","disabled","error","readOnly","fullWidth","showSpinner","prefix","suffix","inputProps","onValidate","labels","sx","rest","ref","mergedLabels","display","setDisplay","useState","focused","setFocused","useEffect","allowMinus","onUserChange","e","raw","target","re","test","parsed","clamp","out","handleBlur","clamped","violation","handleFocus","bumpBy","delta","next","onKeyDown","key","preventDefault","ariaValueText","useMemo","undefined","formatted","trim","stepperSx","color","minWidth","minHeight","padding","type","inputMode","onFocus","startAdornment","position","children","endAdornment","gap","size","onClick","fontSize","slotProps","input","role","fontVariantNumeric","textAlign","FR_DECIMAL_SEPARATOR","FR_THOUSAND_SEPARATOR"],"sources":["../../../../src/lib/v2/components/NumberInput.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport OutlinedInput from \"@mui/material/OutlinedInput\";\r\nimport type { OutlinedInputProps } from \"@mui/material/OutlinedInput\";\r\nimport InputAdornment from \"@mui/material/InputAdornment\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport AddIcon from \"@mui/icons-material/Add\";\r\nimport RemoveIcon from \"@mui/icons-material/Remove\";\r\nimport { mergeLabels } from \"../utils/mergeLabels\";\r\n\r\n/**\r\n * NumberInput — Portnet UI v2\r\n *\r\n * Charter §03 · Component \"NumberInput\". Locale-aware numeric input.\r\n *\r\n * <Field label=\"Montant\">\r\n * <NumberInput\r\n * value={amount} onChange={setAmount}\r\n * min={0} max={1000000} decimals={2} suffix=\"MAD\"\r\n * />\r\n * </Field>\r\n *\r\n * Locale (multi-locale platform — FR / EN / AR)\r\n * <NumberInput\r\n * locale=\"en-US\"\r\n * labels={{ decrement: \"Decrease\", increment: \"Increase\" }}\r\n * value={amount} onChange={setAmount}\r\n * />\r\n *\r\n * - `locale` controls DISPLAY formatting only. Parsing is\r\n * permissive: `,` and `.` both accepted as decimal separator,\r\n * all whitespace stripped — pasting from any locale just works.\r\n * - `labels` overrides the FR defaults on the spinner buttons.\r\n *\r\n * Value contract:\r\n * onChange(null) on empty input\r\n * onChange(123.45) on valid number\r\n * Display formatting (separators, decimals) is purely visual,\r\n * reapplied on blur.\r\n *\r\n * A11y (aria-valuetext):\r\n * aria-valuenow holds the raw number; aria-valuetext holds the\r\n * localised, suffix-bearing string (\"1 234,56 MAD\") so SR users\r\n * hear the same thing sighted users see.\r\n *\r\n * MUI v9 surface notes (audit Batch 3):\r\n * The spinbutton aria contract (role + aria-value*) is injected\r\n * via slotProps.input — MUI v9 idiomatic location for native\r\n * <input/> attributes on OutlinedInput. Migrated from the\r\n * deprecated `inputProps={...}` form to match the rest of the\r\n * v2 surface (Switch, Combobox, DataGrid family).\r\n * Consumer-passed `inputProps` remains merged in via spread —\r\n * same order as the pre-migration code, so override semantics\r\n * are preserved bit-for-bit.\r\n *\r\n * Tactile contract — known R-Tg.1 deviation (charter exception):\r\n * The stepper buttons (showSpinner) are sized to 24 × 24 — the\r\n * WCAG 2.5.8 AA floor — NOT the 44 × 44 R-Tg.1 AAA floor. The\r\n * stepper is opt-in convenience UI on top of the keyboard\r\n * ArrowUp / ArrowDown handler that the input itself provides;\r\n * users requiring larger targets can type or use keyboard nav.\r\n * Documented exception, see Batch 14 charter-exceptions log.\r\n */\r\n\r\nexport interface NumberInputLabels {\r\n decrement?: string | undefined;\r\n increment?: string | undefined;\r\n}\r\n\r\nexport interface NumberInputValidateResult {\r\n value: number | null;\r\n clamped: number | null;\r\n violation: \"min\" | \"max\" | null;\r\n}\r\n\r\nexport interface NumberInputProps\r\n extends Omit<OutlinedInputProps, \"value\" | \"onChange\" | \"prefix\" | \"suffix\"> {\r\n value?: number | null | undefined;\r\n onChange?: ((value: number | null) => void) | undefined;\r\n min?: number | undefined;\r\n max?: number | undefined;\r\n step?: number | undefined;\r\n decimals?: number | undefined;\r\n showSpinner?: boolean | undefined;\r\n prefix?: React.ReactNode | undefined;\r\n suffix?: React.ReactNode | undefined;\r\n onValidate?: ((result: NumberInputValidateResult) => void) | undefined;\r\n locale?: string | undefined;\r\n labels?: NumberInputLabels | undefined;\r\n}\r\n\r\nconst FR_DECIMAL_SEP = \",\";\r\nconst FR_THOUSAND_SEP = \" \";\r\n\r\n// Stepper button hit area — WCAG 2.5.8 AA (24 × 24). See JSDoc above\r\n// for the rationale for not pursuing 44 × 44 / R-Tg.1 here.\r\nconst STEPPER_HIT_AREA = 24;\r\n\r\nconst DEFAULT_LABELS = Object.freeze({\r\n decrement: \"Diminuer\",\r\n increment: \"Augmenter\",\r\n});\r\n\r\nfunction formatForDisplay(\r\n num: number | null | undefined,\r\n decimals: number | undefined,\r\n locale = \"fr-FR\",\r\n): string {\r\n if (num == null || Number.isNaN(num)) return \"\";\r\n const opts: Intl.NumberFormatOptions = decimals != null\r\n ? { minimumFractionDigits: decimals, maximumFractionDigits: decimals }\r\n : { maximumFractionDigits: 6 };\r\n try {\r\n return new Intl.NumberFormat(locale, opts).format(num);\r\n } catch {\r\n // Invalid BCP-47 tag — fall back to fr-FR rather than throwing.\r\n return new Intl.NumberFormat(\"fr-FR\", opts).format(num);\r\n }\r\n}\r\n\r\nfunction parseFromUser(str: string | null | undefined): number | null {\r\n if (str == null || str === \"\") return null;\r\n // Accept BOTH `,` and `.` as decimal separator; strip every whitespace\r\n // (regular space, NBSP, narrow NBSP). Locale-agnostic by design.\r\n const cleaned = String(str)\r\n .replace(/[\\u00A0\\u202F]/g, \" \")\r\n .replace(/\\s+/g, \"\")\r\n .replace(\",\", \".\");\r\n if (cleaned === \"\" || cleaned === \"-\" || cleaned === \".\") return null;\r\n const n = Number(cleaned);\r\n return Number.isFinite(n) ? n : null;\r\n}\r\n\r\nconst NumberInput = React.forwardRef<React.ComponentRef<typeof OutlinedInput>, NumberInputProps>(function NumberInput(\r\n {\r\n value, onChange, onBlur,\r\n min, max, step = 1, decimals,\r\n placeholder, disabled, error, readOnly,\r\n fullWidth = true, showSpinner = false,\r\n prefix, suffix, inputProps, onValidate,\r\n locale = \"fr-FR\",\r\n labels,\r\n sx,\r\n ...rest\r\n },\r\n ref,\r\n) {\r\n const mergedLabels = mergeLabels(DEFAULT_LABELS, labels);\r\n\r\n const [display, setDisplay] = React.useState<string>(() => formatForDisplay(value, decimals, locale));\r\n const [focused, setFocused] = React.useState(false);\r\n\r\n React.useEffect(() => {\r\n if (!focused) setDisplay(formatForDisplay(value, decimals, locale));\r\n }, [value, decimals, locale, focused]);\r\n\r\n const allowMinus = min == null || min < 0;\r\n\r\n const onUserChange: NonNullable<OutlinedInputProps[\"onChange\"]> = (e) => {\r\n const raw = e.target.value;\r\n const re = allowMinus ? /^-?[0-9]*[.,]?[0-9]*$/ : /^[0-9]*[.,]?[0-9]*$/;\r\n if (raw !== \"\" && !re.test(raw)) return;\r\n setDisplay(raw);\r\n const parsed = parseFromUser(raw);\r\n onChange?.(parsed);\r\n };\r\n\r\n const clamp = (n: number | null): number | null => {\r\n if (n == null) return n;\r\n let out = n;\r\n if (typeof min === \"number\" && out < min) out = min;\r\n if (typeof max === \"number\" && out > max) out = max;\r\n return out;\r\n };\r\n\r\n const handleBlur: NonNullable<OutlinedInputProps[\"onBlur\"]> = (e) => {\r\n setFocused(false);\r\n const parsed = parseFromUser(display);\r\n const clamped = clamp(parsed);\r\n if (clamped !== parsed) {\r\n onChange?.(clamped);\r\n setDisplay(formatForDisplay(clamped, decimals, locale));\r\n } else {\r\n setDisplay(formatForDisplay(parsed, decimals, locale));\r\n }\r\n if (onValidate) {\r\n const violation: \"min\" | \"max\" | null =\r\n parsed == null ? null :\r\n (typeof min === \"number\" && parsed < min) ? \"min\" :\r\n (typeof max === \"number\" && parsed > max) ? \"max\" :\r\n null;\r\n onValidate({ value: parsed, clamped, violation });\r\n }\r\n onBlur?.(e);\r\n };\r\n\r\n const handleFocus = () => setFocused(true);\r\n\r\n const bumpBy = (delta: number) => {\r\n const next = clamp((value ?? 0) + delta);\r\n onChange?.(next);\r\n };\r\n\r\n const onKeyDown: NonNullable<OutlinedInputProps[\"onKeyDown\"]> = (e) => {\r\n if (e.key === \"ArrowUp\") { e.preventDefault(); bumpBy(+step); }\r\n if (e.key === \"ArrowDown\") { e.preventDefault(); bumpBy(-step); }\r\n };\r\n\r\n const ariaValueText = React.useMemo(() => {\r\n if (value == null || Number.isNaN(value)) return undefined;\r\n const formatted = formatForDisplay(value, decimals, locale);\r\n if (typeof suffix === \"string\" && suffix.trim()) {\r\n return `${formatted} ${suffix}`.trim();\r\n }\r\n return formatted || undefined;\r\n }, [value, decimals, locale, suffix]);\r\n\r\n // Shared sx for both stepper IconButtons. WCAG 2.5.8 AA floor (24×24),\r\n // padding 0 so the icon centres without cropping.\r\n const stepperSx = {\r\n color: \"var(--fg-muted)\",\r\n minWidth: STEPPER_HIT_AREA,\r\n minHeight: STEPPER_HIT_AREA,\r\n padding: 0,\r\n };\r\n\r\n return (\r\n <OutlinedInput\r\n ref={ref}\r\n type=\"text\"\r\n inputMode=\"decimal\"\r\n value={display}\r\n onChange={onUserChange}\r\n onFocus={handleFocus}\r\n onBlur={handleBlur}\r\n onKeyDown={onKeyDown}\r\n placeholder={placeholder}\r\n disabled={disabled}\r\n readOnly={readOnly}\r\n error={!!error}\r\n fullWidth={fullWidth}\r\n startAdornment={\r\n prefix ? <InputAdornment position=\"start\">{prefix}</InputAdornment> : undefined\r\n }\r\n endAdornment={\r\n (suffix || showSpinner) ? (\r\n <InputAdornment position=\"end\" sx={{ gap: 0.25 }}>\r\n {suffix && <span>{suffix}</span>}\r\n {showSpinner && (\r\n <>\r\n <IconButton\r\n size=\"small\"\r\n onClick={() => bumpBy(-step)}\r\n disabled={disabled || readOnly || (typeof min === \"number\" && value != null && value <= min)}\r\n aria-label={mergedLabels.decrement}\r\n sx={stepperSx}\r\n >\r\n <RemoveIcon sx={{ fontSize: 14 }} />\r\n </IconButton>\r\n <IconButton\r\n size=\"small\"\r\n onClick={() => bumpBy(+step)}\r\n disabled={disabled || readOnly || (typeof max === \"number\" && value != null && value >= max)}\r\n aria-label={mergedLabels.increment}\r\n sx={stepperSx}\r\n >\r\n <AddIcon sx={{ fontSize: 14 }} />\r\n </IconButton>\r\n </>\r\n )}\r\n </InputAdornment>\r\n ) : undefined\r\n }\r\n slotProps={{\r\n // MUI v9: the input slot bag forwards directly to the\r\n // internal <input/> element on OutlinedInput. Was\r\n // `inputProps={...}` at the top level — deprecated in v6,\r\n // migrated for v9 alignment (audit Batch 3). Spread order\r\n // preserved: consumer-supplied inputProps comes LAST so it\r\n // can override aria-* attributes (same semantics as v5).\r\n input: {\r\n role: \"spinbutton\" as const,\r\n \"aria-valuenow\": value ?? undefined,\r\n \"aria-valuemin\": min,\r\n \"aria-valuemax\": max,\r\n \"aria-valuetext\": ariaValueText,\r\n ...inputProps,\r\n },\r\n }}\r\n sx={{\r\n // R-T.3 — tabular-nums for vertical alignment in tables/forms\r\n \"& input\": { fontVariantNumeric: \"tabular-nums\", textAlign: \"right\" },\r\n ...sx,\r\n }}\r\n {...rest}\r\n />\r\n );\r\n});\r\n\r\n// Locale separators exported so callers can mirror exact display elsewhere\r\n// without re-implementing. Kept for back-compat; for full locale-correct\r\n// formatting prefer `Intl.NumberFormat(locale)` directly.\r\nexport const FR_DECIMAL_SEPARATOR = FR_DECIMAL_SEP;\r\nexport const FR_THOUSAND_SEPARATOR = FR_THOUSAND_SEP;\r\n\r\nexport default NumberInput;\r\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
2
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
3
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
4
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
5
|
-
function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) { ; } } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
|
|
6
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
7
1
|
import * as React from "react";
|
|
8
2
|
import IconButton from "@mui/material/IconButton";
|
|
9
3
|
import Menu from "@mui/material/Menu";
|
|
@@ -37,18 +31,16 @@ import { mergeLabels } from "../utils/mergeLabels";
|
|
|
37
31
|
* both are passed, for back-compat.
|
|
38
32
|
*/
|
|
39
33
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
40
|
-
|
|
34
|
+
const DEFAULT_LABELS = Object.freeze({
|
|
41
35
|
trigger: "Plus d'actions",
|
|
42
|
-
shortcut:
|
|
43
|
-
return "Raccourci ".concat(s);
|
|
44
|
-
}
|
|
36
|
+
shortcut: s => `Raccourci ${s}`
|
|
45
37
|
});
|
|
46
38
|
|
|
47
39
|
// MUI v9: slot bag for the Menu. The component already used slotProps.paper
|
|
48
40
|
// for the paper slot; this commit moves MenuListProps onto the same path
|
|
49
41
|
// via the `list` slot key. Hoisted so the reference is stable across
|
|
50
42
|
// renders. `role: "menu" as const` keeps the AriaRole literal.
|
|
51
|
-
|
|
43
|
+
const MENU_SLOT_PROPS = Object.freeze({
|
|
52
44
|
paper: {
|
|
53
45
|
sx: {
|
|
54
46
|
minWidth: 200,
|
|
@@ -62,41 +54,32 @@ var MENU_SLOT_PROPS = Object.freeze({
|
|
|
62
54
|
dense: true
|
|
63
55
|
}
|
|
64
56
|
});
|
|
65
|
-
function OverflowMenu(
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
var L = mergeLabels(DEFAULT_LABELS, labels);
|
|
57
|
+
function OverflowMenu({
|
|
58
|
+
actions = [],
|
|
59
|
+
trigger,
|
|
60
|
+
ariaLabel,
|
|
61
|
+
align = "right",
|
|
62
|
+
labels
|
|
63
|
+
}) {
|
|
64
|
+
const L = mergeLabels(DEFAULT_LABELS, labels);
|
|
74
65
|
// Legacy ariaLabel prop wins over labels.trigger.
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
anchor = _React$useState2[0],
|
|
79
|
-
setAnchor = _React$useState2[1];
|
|
80
|
-
var open = Boolean(anchor);
|
|
66
|
+
const triggerAria = ariaLabel ?? L.trigger;
|
|
67
|
+
const [anchor, setAnchor] = React.useState(null);
|
|
68
|
+
const open = Boolean(anchor);
|
|
81
69
|
if (process.env["NODE_ENV"] !== "production" && actions.length > 7) {
|
|
82
70
|
// eslint-disable-next-line no-console
|
|
83
71
|
console.warn("[@portnet/ui v2] <OverflowMenu> over 7 items - charter recommends ≤ 7.");
|
|
84
72
|
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
};
|
|
88
|
-
var handleClose = function handleClose() {
|
|
89
|
-
return setAnchor(null);
|
|
90
|
-
};
|
|
73
|
+
const handleOpen = e => setAnchor(e.currentTarget);
|
|
74
|
+
const handleClose = () => setAnchor(null);
|
|
91
75
|
|
|
92
76
|
// R-2.1 - when a host passes a custom trigger, preserve its existing
|
|
93
77
|
// onClick (analytics, focus capture, optimistic UI etc.) by chaining
|
|
94
78
|
// it before our handleOpen. Without this, cloneElement silently
|
|
95
79
|
// overwrites the host's handler.
|
|
96
|
-
|
|
97
|
-
onClick:
|
|
98
|
-
|
|
99
|
-
(_onClick = (_ref2 = trigger.props).onClick) === null || _onClick === void 0 ? void 0 : _onClick.call(_ref2, event);
|
|
80
|
+
const triggerNode = trigger ? /*#__PURE__*/React.cloneElement(trigger, {
|
|
81
|
+
onClick: event => {
|
|
82
|
+
trigger.props.onClick?.(event);
|
|
100
83
|
handleOpen(event);
|
|
101
84
|
},
|
|
102
85
|
"aria-haspopup": "menu",
|
|
@@ -128,19 +111,18 @@ function OverflowMenu(_ref) {
|
|
|
128
111
|
horizontal: align === "right" ? "right" : "left"
|
|
129
112
|
},
|
|
130
113
|
slotProps: MENU_SLOT_PROPS,
|
|
131
|
-
children: actions.map(
|
|
114
|
+
children: actions.map((a, i) => {
|
|
132
115
|
if (a.divider) return /*#__PURE__*/_jsx(Divider, {
|
|
133
116
|
sx: {
|
|
134
117
|
borderColor: "var(--border)"
|
|
135
118
|
}
|
|
136
|
-
},
|
|
119
|
+
}, `d-${i}`);
|
|
137
120
|
return /*#__PURE__*/_jsxs(MenuItem, {
|
|
138
121
|
role: "menuitem",
|
|
139
122
|
disabled: a.disabled,
|
|
140
|
-
onClick:
|
|
141
|
-
var _a$onClick;
|
|
123
|
+
onClick: () => {
|
|
142
124
|
handleClose();
|
|
143
|
-
|
|
125
|
+
a.onClick?.();
|
|
144
126
|
},
|
|
145
127
|
sx: {
|
|
146
128
|
fontSize: "var(--text-sm)",
|
|
@@ -163,7 +145,7 @@ function OverflowMenu(_ref) {
|
|
|
163
145
|
children: a.label
|
|
164
146
|
}), a.shortcut && /*#__PURE__*/_jsx(Box, {
|
|
165
147
|
component: "kbd",
|
|
166
|
-
"aria-label": typeof L.shortcut === "function" ? L.shortcut(a.shortcut) :
|
|
148
|
+
"aria-label": typeof L.shortcut === "function" ? L.shortcut(a.shortcut) : `${L.shortcut} ${a.shortcut}`,
|
|
167
149
|
sx: {
|
|
168
150
|
fontSize: "var(--text-xs)",
|
|
169
151
|
color: "var(--fg-subtle)",
|