@portnet/ui 6.0.2 → 6.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +652 -0
- package/dist/esm/index.js +72 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/v2/__tests__/AppMain.test.js +130 -0
- package/dist/esm/v2/__tests__/AppMain.test.js.map +1 -0
- package/dist/esm/v2/__tests__/ChartFigure.test.js +180 -0
- package/dist/esm/v2/__tests__/ChartFigure.test.js.map +1 -0
- package/dist/esm/v2/__tests__/DataGridRowActionsPropagation.test.js +150 -0
- package/dist/esm/v2/__tests__/DataGridRowActionsPropagation.test.js.map +1 -0
- package/dist/esm/v2/__tests__/DrawerTactileTargets.test.js +93 -0
- package/dist/esm/v2/__tests__/DrawerTactileTargets.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FieldError.test.js +71 -38
- package/dist/esm/v2/__tests__/FieldError.test.js.map +1 -1
- package/dist/esm/v2/__tests__/FieldNaming.test.js +160 -0
- package/dist/esm/v2/__tests__/FieldNaming.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FieldWidth.test.js +11 -11
- package/dist/esm/v2/__tests__/FieldWidth.test.js.map +1 -1
- package/dist/esm/v2/__tests__/FileCard.test.js +18 -17
- package/dist/esm/v2/__tests__/FileCard.test.js.map +1 -1
- package/dist/esm/v2/__tests__/FormikCheckbox.test.js +87 -179
- package/dist/esm/v2/__tests__/FormikCheckbox.test.js.map +1 -1
- package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js +32 -44
- package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js.map +1 -1
- package/dist/esm/v2/__tests__/FormikDisplayWidth.test.js +101 -0
- package/dist/esm/v2/__tests__/FormikDisplayWidth.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FormikRadioGroup.test.js +118 -199
- package/dist/esm/v2/__tests__/FormikRadioGroup.test.js.map +1 -1
- package/dist/esm/v2/__tests__/MobileRowCard.test.js +44 -42
- package/dist/esm/v2/__tests__/MobileRowCard.test.js.map +1 -1
- package/dist/esm/v2/__tests__/PreviewDrawer.test.js +165 -0
- package/dist/esm/v2/__tests__/PreviewDrawer.test.js.map +1 -0
- package/dist/esm/v2/__tests__/ReferentielFieldContainer.test.js +156 -0
- package/dist/esm/v2/__tests__/ReferentielFieldContainer.test.js.map +1 -0
- package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js +37 -52
- package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js.map +1 -1
- package/dist/esm/v2/__tests__/apiError.test.js +50 -69
- package/dist/esm/v2/__tests__/apiError.test.js.map +1 -1
- package/dist/esm/v2/__tests__/banned-patterns.test.js +41 -122
- package/dist/esm/v2/__tests__/banned-patterns.test.js.map +1 -1
- package/dist/esm/v2/__tests__/chart-palette.test.js +204 -0
- package/dist/esm/v2/__tests__/chart-palette.test.js.map +1 -0
- package/dist/esm/v2/__tests__/contrast-palette.test.js +42 -74
- package/dist/esm/v2/__tests__/contrast-palette.test.js.map +1 -1
- package/dist/esm/v2/__tests__/cssVariables.test.js +44 -51
- package/dist/esm/v2/__tests__/cssVariables.test.js.map +1 -1
- package/dist/esm/v2/__tests__/fileValidation.test.js +134 -0
- package/dist/esm/v2/__tests__/fileValidation.test.js.map +1 -0
- package/dist/esm/v2/__tests__/filterCriteria.test.js +321 -0
- package/dist/esm/v2/__tests__/filterCriteria.test.js.map +1 -0
- package/dist/esm/v2/__tests__/fmtDate.test.js +68 -0
- package/dist/esm/v2/__tests__/fmtDate.test.js.map +1 -0
- package/dist/esm/v2/__tests__/gap-leakage-refonte.test.js +218 -0
- package/dist/esm/v2/__tests__/gap-leakage-refonte.test.js.map +1 -0
- package/dist/esm/v2/__tests__/labels-merge.test.js +17 -21
- package/dist/esm/v2/__tests__/labels-merge.test.js.map +1 -1
- package/dist/esm/v2/__tests__/locale-fallback.test.js +35 -40
- package/dist/esm/v2/__tests__/locale-fallback.test.js.map +1 -1
- package/dist/esm/v2/__tests__/reviveSavedCriteria.test.js +143 -0
- package/dist/esm/v2/__tests__/reviveSavedCriteria.test.js.map +1 -0
- package/dist/esm/v2/__tests__/rowActions.test.js +182 -0
- package/dist/esm/v2/__tests__/rowActions.test.js.map +1 -0
- package/dist/esm/v2/__tests__/useFocusOnRouteChange.test.js +155 -0
- package/dist/esm/v2/__tests__/useFocusOnRouteChange.test.js.map +1 -0
- package/dist/esm/v2/__tests__/useFocusTrap.test.js +266 -402
- package/dist/esm/v2/__tests__/useFocusTrap.test.js.map +1 -1
- package/dist/esm/v2/__tests__/usePrefersReducedMotion.test.js +120 -0
- package/dist/esm/v2/__tests__/usePrefersReducedMotion.test.js.map +1 -0
- package/dist/esm/v2/components/Accordion.js +48 -70
- package/dist/esm/v2/components/Accordion.js.map +1 -1
- package/dist/esm/v2/components/ActionStrip.js +31 -43
- package/dist/esm/v2/components/ActionStrip.js.map +1 -1
- package/dist/esm/v2/components/Banner.js +25 -22
- package/dist/esm/v2/components/Banner.js.map +1 -1
- package/dist/esm/v2/components/Busy.js +14 -19
- package/dist/esm/v2/components/Busy.js.map +1 -1
- package/dist/esm/v2/components/Button.js +34 -45
- package/dist/esm/v2/components/Button.js.map +1 -1
- package/dist/esm/v2/components/CategoryTag.js +44 -27
- package/dist/esm/v2/components/CategoryTag.js.map +1 -1
- package/dist/esm/v2/components/Checkbox.js +32 -38
- package/dist/esm/v2/components/Checkbox.js.map +1 -1
- package/dist/esm/v2/components/Chip.js +23 -36
- package/dist/esm/v2/components/Chip.js.map +1 -1
- package/dist/esm/v2/components/Combobox.js +112 -136
- package/dist/esm/v2/components/Combobox.js.map +1 -1
- package/dist/esm/v2/components/CommandPalette.js +113 -198
- package/dist/esm/v2/components/CommandPalette.js.map +1 -1
- package/dist/esm/v2/components/ConfirmDialog.js +36 -45
- package/dist/esm/v2/components/ConfirmDialog.js.map +1 -1
- package/dist/esm/v2/components/DatePicker.js +78 -81
- package/dist/esm/v2/components/DatePicker.js.map +1 -1
- package/dist/esm/v2/components/DateRangePicker.js +63 -74
- package/dist/esm/v2/components/DateRangePicker.js.map +1 -1
- package/dist/esm/v2/components/DateTimePicker.js +81 -86
- package/dist/esm/v2/components/DateTimePicker.js.map +1 -1
- package/dist/esm/v2/components/Drawer.js +71 -65
- package/dist/esm/v2/components/Drawer.js.map +1 -1
- package/dist/esm/v2/components/Dropzone.js +130 -177
- package/dist/esm/v2/components/Dropzone.js.map +1 -1
- package/dist/esm/v2/components/EmptyState.js +9 -9
- package/dist/esm/v2/components/EmptyState.js.map +1 -1
- package/dist/esm/v2/components/FavoriteToggle.js +24 -33
- package/dist/esm/v2/components/FavoriteToggle.js.map +1 -1
- package/dist/esm/v2/components/Field.js +155 -59
- package/dist/esm/v2/components/Field.js.map +1 -1
- package/dist/esm/v2/components/FieldError.js +9 -13
- package/dist/esm/v2/components/FieldError.js.map +1 -1
- package/dist/esm/v2/components/FieldHelp.js +28 -49
- package/dist/esm/v2/components/FieldHelp.js.map +1 -1
- package/dist/esm/v2/components/FileCard.js +14 -19
- package/dist/esm/v2/components/FileCard.js.map +1 -1
- package/dist/esm/v2/components/FilterTab.js +22 -31
- package/dist/esm/v2/components/FilterTab.js.map +1 -1
- package/dist/esm/v2/components/ForbiddenPage.js +28 -8
- package/dist/esm/v2/components/ForbiddenPage.js.map +1 -1
- package/dist/esm/v2/components/FormGrid.js +48 -54
- package/dist/esm/v2/components/FormGrid.js.map +1 -1
- package/dist/esm/v2/components/FormikDisplay.js +98 -24
- package/dist/esm/v2/components/FormikDisplay.js.map +1 -1
- package/dist/esm/v2/components/Input.js +75 -34
- package/dist/esm/v2/components/Input.js.map +1 -1
- package/dist/esm/v2/components/KPICard.js +42 -51
- package/dist/esm/v2/components/KPICard.js.map +1 -1
- package/dist/esm/v2/components/KPIStrip.js +9 -15
- package/dist/esm/v2/components/KPIStrip.js.map +1 -1
- package/dist/esm/v2/components/KV.js +16 -23
- package/dist/esm/v2/components/KV.js.map +1 -1
- package/dist/esm/v2/components/KVGrid.js +15 -23
- package/dist/esm/v2/components/KVGrid.js.map +1 -1
- package/dist/esm/v2/components/Layout.js +81 -117
- package/dist/esm/v2/components/Layout.js.map +1 -1
- package/dist/esm/v2/components/MobileRowCard.js +64 -75
- package/dist/esm/v2/components/MobileRowCard.js.map +1 -1
- package/dist/esm/v2/components/Modal.js +44 -53
- package/dist/esm/v2/components/Modal.js.map +1 -1
- package/dist/esm/v2/components/NetworkErrorPage.js +28 -11
- package/dist/esm/v2/components/NetworkErrorPage.js.map +1 -1
- package/dist/esm/v2/components/NotFoundPage.js +28 -9
- package/dist/esm/v2/components/NotFoundPage.js.map +1 -1
- package/dist/esm/v2/components/NumberInput.js +77 -107
- package/dist/esm/v2/components/NumberInput.js.map +1 -1
- package/dist/esm/v2/components/OverflowMenu.js +24 -42
- package/dist/esm/v2/components/OverflowMenu.js.map +1 -1
- package/dist/esm/v2/components/PdfViewer.js +24 -33
- package/dist/esm/v2/components/PdfViewer.js.map +1 -1
- package/dist/esm/v2/components/ProgressBar.js +28 -36
- package/dist/esm/v2/components/ProgressBar.js.map +1 -1
- package/dist/esm/v2/components/Radio.js +49 -57
- package/dist/esm/v2/components/Radio.js.map +1 -1
- package/dist/esm/v2/components/SectionErrorBoundary.js +84 -130
- package/dist/esm/v2/components/SectionErrorBoundary.js.map +1 -1
- package/dist/esm/v2/components/SectionHeader.js +24 -31
- package/dist/esm/v2/components/SectionHeader.js.map +1 -1
- package/dist/esm/v2/components/Segmented.js +59 -84
- package/dist/esm/v2/components/Segmented.js.map +1 -1
- package/dist/esm/v2/components/Select.js +100 -138
- package/dist/esm/v2/components/Select.js.map +1 -1
- package/dist/esm/v2/components/ServerErrorPage.js +27 -10
- package/dist/esm/v2/components/ServerErrorPage.js.map +1 -1
- package/dist/esm/v2/components/Skeleton.js +81 -96
- package/dist/esm/v2/components/Skeleton.js.map +1 -1
- package/dist/esm/v2/components/SkipLink.js +6 -7
- package/dist/esm/v2/components/SkipLink.js.map +1 -1
- package/dist/esm/v2/components/Spinner.js +13 -22
- package/dist/esm/v2/components/Spinner.js.map +1 -1
- package/dist/esm/v2/components/Status.js +14 -25
- package/dist/esm/v2/components/Status.js.map +1 -1
- package/dist/esm/v2/components/Stepper.js +68 -71
- package/dist/esm/v2/components/Stepper.js.map +1 -1
- package/dist/esm/v2/components/Surface.js +25 -44
- package/dist/esm/v2/components/Surface.js.map +1 -1
- package/dist/esm/v2/components/Switch.js +21 -29
- package/dist/esm/v2/components/Switch.js.map +1 -1
- package/dist/esm/v2/components/TabPanel.js +84 -0
- package/dist/esm/v2/components/TabPanel.js.map +1 -0
- package/dist/esm/v2/components/Tabs.js +43 -19
- package/dist/esm/v2/components/Tabs.js.map +1 -1
- package/dist/esm/v2/components/TelInput.js +75 -108
- package/dist/esm/v2/components/TelInput.js.map +1 -1
- package/dist/esm/v2/components/Textarea.js +21 -30
- package/dist/esm/v2/components/Textarea.js.map +1 -1
- package/dist/esm/v2/components/TimePicker.js +59 -69
- package/dist/esm/v2/components/TimePicker.js.map +1 -1
- package/dist/esm/v2/components/Toast.js +109 -163
- package/dist/esm/v2/components/Toast.js.map +1 -1
- package/dist/esm/v2/components/Tooltip.js +18 -31
- package/dist/esm/v2/components/Tooltip.js.map +1 -1
- package/dist/esm/v2/components/_ErrorPageBody.js +6 -5
- package/dist/esm/v2/components/_ErrorPageBody.js.map +1 -1
- package/dist/esm/v2/components/_pickerShared.js +2 -2
- package/dist/esm/v2/components/_pickerShared.js.map +1 -1
- package/dist/esm/v2/components/index.js +37 -0
- package/dist/esm/v2/components/index.js.map +1 -1
- package/dist/esm/v2/hooks/index.js +62 -0
- package/dist/esm/v2/hooks/index.js.map +1 -1
- package/dist/esm/v2/hooks/useAppliedFilters.js +112 -0
- package/dist/esm/v2/hooks/useAppliedFilters.js.map +1 -0
- package/dist/esm/v2/hooks/useDebouncedCallback.js +82 -0
- package/dist/esm/v2/hooks/useDebouncedCallback.js.map +1 -0
- package/dist/esm/v2/hooks/useDelayedFlag.js +5 -19
- package/dist/esm/v2/hooks/useDelayedFlag.js.map +1 -1
- package/dist/esm/v2/hooks/useDensity.js +13 -17
- package/dist/esm/v2/hooks/useDensity.js.map +1 -1
- package/dist/esm/v2/hooks/useFocusFirstError.js +25 -33
- package/dist/esm/v2/hooks/useFocusFirstError.js.map +1 -1
- package/dist/esm/v2/hooks/useFocusOnRouteChange.js +81 -0
- package/dist/esm/v2/hooks/useFocusOnRouteChange.js.map +1 -0
- package/dist/esm/v2/hooks/useFocusTrap.js +19 -23
- package/dist/esm/v2/hooks/useFocusTrap.js.map +1 -1
- package/dist/esm/v2/hooks/useFormAutoSave.js +38 -53
- package/dist/esm/v2/hooks/useFormAutoSave.js.map +1 -1
- package/dist/esm/v2/hooks/useFormCompletionProgress.js +32 -51
- package/dist/esm/v2/hooks/useFormCompletionProgress.js.map +1 -1
- package/dist/esm/v2/hooks/useKeyboardShortcuts.js +125 -0
- package/dist/esm/v2/hooks/useKeyboardShortcuts.js.map +1 -0
- package/dist/esm/v2/hooks/usePrefersReducedMotion.js +99 -0
- package/dist/esm/v2/hooks/usePrefersReducedMotion.js.map +1 -0
- package/dist/esm/v2/hooks/useResolvedDensity.js +2 -10
- package/dist/esm/v2/hooks/useResolvedDensity.js.map +1 -1
- package/dist/esm/v2/hooks/useSortedRows.js +3 -5
- package/dist/esm/v2/hooks/useSortedRows.js.map +1 -1
- package/dist/esm/v2/hooks/useTabLoading.js +6 -21
- package/dist/esm/v2/hooks/useTabLoading.js.map +1 -1
- package/dist/esm/v2/index.js +2 -3
- package/dist/esm/v2/index.js.map +1 -1
- package/dist/esm/v2/modalContext.js +2 -2
- package/dist/esm/v2/modalContext.js.map +1 -1
- package/dist/esm/v2/models/favorite.js.map +1 -1
- package/dist/esm/v2/models/personalization.js.map +1 -1
- package/dist/esm/v2/models/referentiel.js.map +1 -1
- package/dist/esm/v2/models/savedFilter.js.map +1 -1
- package/dist/esm/v2/patterns/ActionBar.js +115 -159
- package/dist/esm/v2/patterns/ActionBar.js.map +1 -1
- package/dist/esm/v2/patterns/AppMain.js +108 -0
- package/dist/esm/v2/patterns/AppMain.js.map +1 -0
- package/dist/esm/v2/patterns/BulkActionBar.js +31 -34
- package/dist/esm/v2/patterns/BulkActionBar.js.map +1 -1
- package/dist/esm/v2/patterns/ChartFigure.js +151 -0
- package/dist/esm/v2/patterns/ChartFigure.js.map +1 -0
- package/dist/esm/v2/patterns/CollapsibleDataGrid.js +111 -152
- package/dist/esm/v2/patterns/CollapsibleDataGrid.js.map +1 -1
- package/dist/esm/v2/patterns/ColumnsToggle.js +43 -77
- package/dist/esm/v2/patterns/ColumnsToggle.js.map +1 -1
- package/dist/esm/v2/patterns/DataGrid.js +221 -255
- package/dist/esm/v2/patterns/DataGrid.js.map +1 -1
- package/dist/esm/v2/patterns/DataGridSettingsMenu.js +76 -94
- package/dist/esm/v2/patterns/DataGridSettingsMenu.js.map +1 -1
- package/dist/esm/v2/patterns/DataGridToolbar.js +85 -89
- package/dist/esm/v2/patterns/DataGridToolbar.js.map +1 -1
- package/dist/esm/v2/patterns/DataGridVirtualized.js +141 -182
- package/dist/esm/v2/patterns/DataGridVirtualized.js.map +1 -1
- package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js +26 -30
- package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
- package/dist/esm/v2/patterns/DetailSplit.js +108 -0
- package/dist/esm/v2/patterns/DetailSplit.js.map +1 -0
- package/dist/esm/v2/patterns/FavoriteColumn.js +15 -17
- package/dist/esm/v2/patterns/FavoriteColumn.js.map +1 -1
- package/dist/esm/v2/patterns/FavoritesFilter.js +30 -39
- package/dist/esm/v2/patterns/FavoritesFilter.js.map +1 -1
- package/dist/esm/v2/patterns/FilterTabBar.js +112 -0
- package/dist/esm/v2/patterns/FilterTabBar.js.map +1 -0
- package/dist/esm/v2/patterns/FormErrorSummary.js +12 -13
- package/dist/esm/v2/patterns/FormErrorSummary.js.map +1 -1
- package/dist/esm/v2/patterns/FormPageShell.js +43 -41
- package/dist/esm/v2/patterns/FormPageShell.js.map +1 -1
- package/dist/esm/v2/patterns/FormSection.js +30 -38
- package/dist/esm/v2/patterns/FormSection.js.map +1 -1
- package/dist/esm/v2/patterns/FormikCheckbox.js +29 -39
- package/dist/esm/v2/patterns/FormikCheckbox.js.map +1 -1
- package/dist/esm/v2/patterns/FormikCheckboxGroup.js +56 -60
- package/dist/esm/v2/patterns/FormikCheckboxGroup.js.map +1 -1
- package/dist/esm/v2/patterns/FormikCombobox.js +51 -69
- package/dist/esm/v2/patterns/FormikCombobox.js.map +1 -1
- package/dist/esm/v2/patterns/FormikDatePicker.js +44 -58
- package/dist/esm/v2/patterns/FormikDatePicker.js.map +1 -1
- package/dist/esm/v2/patterns/FormikDateTimePicker.js +44 -58
- package/dist/esm/v2/patterns/FormikDateTimePicker.js.map +1 -1
- package/dist/esm/v2/patterns/FormikErrorFocus.js +22 -23
- package/dist/esm/v2/patterns/FormikErrorFocus.js.map +1 -1
- package/dist/esm/v2/patterns/FormikErrorSummary.js +89 -0
- package/dist/esm/v2/patterns/FormikErrorSummary.js.map +1 -0
- package/dist/esm/v2/patterns/FormikFile.js +94 -78
- package/dist/esm/v2/patterns/FormikFile.js.map +1 -1
- package/dist/esm/v2/patterns/FormikInput.js +40 -53
- package/dist/esm/v2/patterns/FormikInput.js.map +1 -1
- package/dist/esm/v2/patterns/FormikRadioGroup.js +39 -51
- package/dist/esm/v2/patterns/FormikRadioGroup.js.map +1 -1
- package/dist/esm/v2/patterns/FormikReferentielField.js +49 -59
- package/dist/esm/v2/patterns/FormikReferentielField.js.map +1 -1
- package/dist/esm/v2/patterns/FormikSelect.js +64 -87
- package/dist/esm/v2/patterns/FormikSelect.js.map +1 -1
- package/dist/esm/v2/patterns/FormikTextarea.js +30 -46
- package/dist/esm/v2/patterns/FormikTextarea.js.map +1 -1
- package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js +53 -71
- package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
- package/dist/esm/v2/patterns/NetworkErrorBanner.js +6 -7
- package/dist/esm/v2/patterns/NetworkErrorBanner.js.map +1 -1
- package/dist/esm/v2/patterns/PageContent.js +10 -14
- package/dist/esm/v2/patterns/PageContent.js.map +1 -1
- package/dist/esm/v2/patterns/PreviewDrawer.js +153 -0
- package/dist/esm/v2/patterns/PreviewDrawer.js.map +1 -0
- package/dist/esm/v2/patterns/ReferentielField.js +327 -312
- package/dist/esm/v2/patterns/ReferentielField.js.map +1 -1
- package/dist/esm/v2/patterns/RowFavoriteToggle.js +27 -22
- package/dist/esm/v2/patterns/RowFavoriteToggle.js.map +1 -1
- package/dist/esm/v2/patterns/SaveFilterDialog.js +38 -66
- package/dist/esm/v2/patterns/SaveFilterDialog.js.map +1 -1
- package/dist/esm/v2/patterns/SavedFiltersMenu.js +62 -81
- package/dist/esm/v2/patterns/SavedFiltersMenu.js.map +1 -1
- package/dist/esm/v2/patterns/SkeletonPageShell.js +106 -129
- package/dist/esm/v2/patterns/SkeletonPageShell.js.map +1 -1
- package/dist/esm/v2/patterns/SortableHeader.js +22 -45
- package/dist/esm/v2/patterns/SortableHeader.js.map +1 -1
- package/dist/esm/v2/patterns/Tour.js +94 -120
- package/dist/esm/v2/patterns/Tour.js.map +1 -1
- package/dist/esm/v2/patterns/_dataGridShared.js +107 -128
- package/dist/esm/v2/patterns/_dataGridShared.js.map +1 -1
- package/dist/esm/v2/patterns/_pickerSerialisation.js +6 -8
- package/dist/esm/v2/patterns/_pickerSerialisation.js.map +1 -1
- package/dist/esm/v2/patterns/_sort.js +17 -33
- package/dist/esm/v2/patterns/_sort.js.map +1 -1
- package/dist/esm/v2/patterns/_useColumnReorder.js +122 -160
- package/dist/esm/v2/patterns/_useColumnReorder.js.map +1 -1
- package/dist/esm/v2/patterns/_useColumnResize.js +78 -96
- package/dist/esm/v2/patterns/_useColumnResize.js.map +1 -1
- package/dist/esm/v2/patterns/filterCriteria.js +102 -0
- package/dist/esm/v2/patterns/filterCriteria.js.map +1 -0
- package/dist/esm/v2/patterns/index.js +152 -0
- package/dist/esm/v2/patterns/index.js.map +1 -1
- package/dist/esm/v2/patterns/rowActions.js +223 -0
- package/dist/esm/v2/patterns/rowActions.js.map +1 -0
- package/dist/esm/v2/personalization/PersonalizationProvider.js +50 -47
- package/dist/esm/v2/personalization/PersonalizationProvider.js.map +1 -1
- package/dist/esm/v2/personalization/adapters/_storageKey.js +5 -5
- package/dist/esm/v2/personalization/adapters/_storageKey.js.map +1 -1
- package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js +22 -23
- package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
- package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js +13 -13
- package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
- package/dist/esm/v2/personalization/capabilities/favorites.js +36 -60
- package/dist/esm/v2/personalization/capabilities/favorites.js.map +1 -1
- package/dist/esm/v2/personalization/capabilities/favoritesView.js +22 -34
- package/dist/esm/v2/personalization/capabilities/favoritesView.js.map +1 -1
- package/dist/esm/v2/personalization/capabilities/gridPreferences.js +28 -34
- package/dist/esm/v2/personalization/capabilities/gridPreferences.js.map +1 -1
- package/dist/esm/v2/personalization/capabilities/reviveSavedCriteria.js +119 -0
- package/dist/esm/v2/personalization/capabilities/reviveSavedCriteria.js.map +1 -0
- package/dist/esm/v2/personalization/capabilities/savedFilters.js +90 -98
- package/dist/esm/v2/personalization/capabilities/savedFilters.js.map +1 -1
- package/dist/esm/v2/personalization/createPersonalizationStore.js +78 -181
- package/dist/esm/v2/personalization/createPersonalizationStore.js.map +1 -1
- package/dist/esm/v2/personalization/index.js +17 -0
- package/dist/esm/v2/personalization/index.js.map +1 -1
- package/dist/esm/v2/personalization/personalizationContext.js +9 -9
- package/dist/esm/v2/personalization/personalizationContext.js.map +1 -1
- package/dist/esm/v2/personalization/schema.js +8 -9
- package/dist/esm/v2/personalization/schema.js.map +1 -1
- package/dist/esm/v2/referentiel/ReferentielProvider.js +27 -42
- package/dist/esm/v2/referentiel/ReferentielProvider.js.map +1 -1
- package/dist/esm/v2/referentiel/types.js +2 -0
- package/dist/esm/v2/referentiel/types.js.map +1 -0
- package/dist/esm/v2/referentiel/useReferentielClient.js +10 -11
- package/dist/esm/v2/referentiel/useReferentielClient.js.map +1 -1
- package/dist/esm/v2/referentiel/useReferentielOptions.js +60 -117
- package/dist/esm/v2/referentiel/useReferentielOptions.js.map +1 -1
- package/dist/esm/v2/referentiel/useReferentielSearch.js +37 -91
- package/dist/esm/v2/referentiel/useReferentielSearch.js.map +1 -1
- package/dist/esm/v2/theme/_brand.js +8 -24
- package/dist/esm/v2/theme/_brand.js.map +1 -1
- package/dist/esm/v2/theme/_brandSecondary.js +8 -24
- package/dist/esm/v2/theme/_brandSecondary.js.map +1 -1
- package/dist/esm/v2/theme/createPortnetTheme.js +51 -61
- package/dist/esm/v2/theme/createPortnetTheme.js.map +1 -1
- package/dist/esm/v2/theme/cssVariables.js +62 -69
- package/dist/esm/v2/theme/cssVariables.js.map +1 -1
- package/dist/esm/v2/theme/index.js +5 -5
- package/dist/esm/v2/theme/index.js.map +1 -1
- package/dist/esm/v2/tokens/breakpoints.js +14 -14
- package/dist/esm/v2/tokens/breakpoints.js.map +1 -1
- package/dist/esm/v2/tokens/chart.js +261 -0
- package/dist/esm/v2/tokens/chart.js.map +1 -0
- package/dist/esm/v2/tokens/colors.js +22 -22
- package/dist/esm/v2/tokens/colors.js.map +1 -1
- package/dist/esm/v2/tokens/density.js +62 -7
- package/dist/esm/v2/tokens/density.js.map +1 -1
- package/dist/esm/v2/tokens/index.js +49 -34
- package/dist/esm/v2/tokens/index.js.map +1 -1
- package/dist/esm/v2/tokens/motion.js +12 -20
- package/dist/esm/v2/tokens/motion.js.map +1 -1
- package/dist/esm/v2/tokens/radius.js +1 -1
- package/dist/esm/v2/tokens/radius.js.map +1 -1
- package/dist/esm/v2/tokens/shadows.js +6 -6
- package/dist/esm/v2/tokens/shadows.js.map +1 -1
- package/dist/esm/v2/tokens/spacing.js +2 -2
- package/dist/esm/v2/tokens/spacing.js.map +1 -1
- package/dist/esm/v2/tokens/state.js +1 -1
- package/dist/esm/v2/tokens/state.js.map +1 -1
- package/dist/esm/v2/tokens/statusPalette.js +17 -21
- package/dist/esm/v2/tokens/statusPalette.js.map +1 -1
- package/dist/esm/v2/tokens/tokens.json +6 -1
- package/dist/esm/v2/tokens/typography.js +13 -13
- package/dist/esm/v2/tokens/typography.js.map +1 -1
- package/dist/esm/v2/tokens/zIndex.js +1 -1
- package/dist/esm/v2/tokens/zIndex.js.map +1 -1
- package/dist/esm/v2/types/datagrid.js.map +1 -1
- package/dist/esm/v2/utils/apiError.js +16 -37
- package/dist/esm/v2/utils/apiError.js.map +1 -1
- package/dist/esm/v2/utils/contrast.js +31 -32
- package/dist/esm/v2/utils/contrast.js.map +1 -1
- package/dist/esm/v2/utils/cx.js +5 -25
- package/dist/esm/v2/utils/cx.js.map +1 -1
- package/dist/esm/v2/utils/fileDownload.js +23 -26
- package/dist/esm/v2/utils/fileDownload.js.map +1 -1
- package/dist/esm/v2/utils/fileValidation.js +209 -0
- package/dist/esm/v2/utils/fileValidation.js.map +1 -0
- package/dist/esm/v2/utils/fmtDate.js +111 -0
- package/dist/esm/v2/utils/fmtDate.js.map +1 -0
- package/dist/esm/v2/utils/fmtMoney.js +8 -10
- package/dist/esm/v2/utils/fmtMoney.js.map +1 -1
- package/dist/esm/v2/utils/formikErrors.js +78 -0
- package/dist/esm/v2/utils/formikErrors.js.map +1 -0
- package/dist/esm/v2/utils/index.js +35 -2
- package/dist/esm/v2/utils/index.js.map +1 -1
- package/dist/esm/v2/utils/mergeLabels.js +7 -12
- package/dist/esm/v2/utils/mergeLabels.js.map +1 -1
- package/dist/esm/v2/utils/networkStatus.js +12 -12
- package/dist/esm/v2/utils/networkStatus.js.map +1 -1
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +110 -49
- package/dist/index.js.map +1 -1
- package/dist/v2/__tests__/AppMain.test.js +133 -0
- package/dist/v2/__tests__/AppMain.test.js.map +1 -0
- package/dist/v2/__tests__/ChartFigure.test.js +183 -0
- package/dist/v2/__tests__/ChartFigure.test.js.map +1 -0
- package/dist/v2/__tests__/DataGridRowActionsPropagation.test.js +153 -0
- package/dist/v2/__tests__/DataGridRowActionsPropagation.test.js.map +1 -0
- package/dist/v2/__tests__/DrawerTactileTargets.test.js +94 -0
- package/dist/v2/__tests__/DrawerTactileTargets.test.js.map +1 -0
- package/dist/v2/__tests__/FieldError.test.js +82 -49
- package/dist/v2/__tests__/FieldError.test.js.map +1 -1
- package/dist/v2/__tests__/FieldNaming.test.js +161 -0
- package/dist/v2/__tests__/FieldNaming.test.js.map +1 -0
- package/dist/v2/__tests__/FieldWidth.test.js +23 -25
- package/dist/v2/__tests__/FieldWidth.test.js.map +1 -1
- package/dist/v2/__tests__/FileCard.test.js +29 -28
- package/dist/v2/__tests__/FileCard.test.js.map +1 -1
- package/dist/v2/__tests__/FormikCheckbox.test.js +90 -183
- package/dist/v2/__tests__/FormikCheckbox.test.js.map +1 -1
- package/dist/v2/__tests__/FormikDateTimePicker.test.js +38 -48
- package/dist/v2/__tests__/FormikDateTimePicker.test.js.map +1 -1
- package/dist/v2/__tests__/FormikDisplayWidth.test.js +102 -0
- package/dist/v2/__tests__/FormikDisplayWidth.test.js.map +1 -0
- package/dist/v2/__tests__/FormikRadioGroup.test.js +123 -204
- package/dist/v2/__tests__/FormikRadioGroup.test.js.map +1 -1
- package/dist/v2/__tests__/MobileRowCard.test.js +63 -61
- package/dist/v2/__tests__/MobileRowCard.test.js.map +1 -1
- package/dist/v2/__tests__/PreviewDrawer.test.js +169 -0
- package/dist/v2/__tests__/PreviewDrawer.test.js.map +1 -0
- package/dist/v2/__tests__/ReferentielFieldContainer.test.js +159 -0
- package/dist/v2/__tests__/ReferentielFieldContainer.test.js.map +1 -0
- package/dist/v2/__tests__/SectionErrorBoundary.test.js +53 -68
- package/dist/v2/__tests__/SectionErrorBoundary.test.js.map +1 -1
- package/dist/v2/__tests__/apiError.test.js +50 -69
- package/dist/v2/__tests__/apiError.test.js.map +1 -1
- package/dist/v2/__tests__/banned-patterns.test.js +42 -123
- package/dist/v2/__tests__/banned-patterns.test.js.map +1 -1
- package/dist/v2/__tests__/chart-palette.test.js +205 -0
- package/dist/v2/__tests__/chart-palette.test.js.map +1 -0
- package/dist/v2/__tests__/contrast-palette.test.js +42 -74
- package/dist/v2/__tests__/contrast-palette.test.js.map +1 -1
- package/dist/v2/__tests__/cssVariables.test.js +44 -51
- package/dist/v2/__tests__/cssVariables.test.js.map +1 -1
- package/dist/v2/__tests__/fileValidation.test.js +136 -0
- package/dist/v2/__tests__/fileValidation.test.js.map +1 -0
- package/dist/v2/__tests__/filterCriteria.test.js +324 -0
- package/dist/v2/__tests__/filterCriteria.test.js.map +1 -0
- package/dist/v2/__tests__/fmtDate.test.js +69 -0
- package/dist/v2/__tests__/fmtDate.test.js.map +1 -0
- package/dist/v2/__tests__/gap-leakage-refonte.test.js +221 -0
- package/dist/v2/__tests__/gap-leakage-refonte.test.js.map +1 -0
- package/dist/v2/__tests__/labels-merge.test.js +23 -27
- package/dist/v2/__tests__/labels-merge.test.js.map +1 -1
- package/dist/v2/__tests__/locale-fallback.test.js +47 -52
- package/dist/v2/__tests__/locale-fallback.test.js.map +1 -1
- package/dist/v2/__tests__/reviveSavedCriteria.test.js +144 -0
- package/dist/v2/__tests__/reviveSavedCriteria.test.js.map +1 -0
- package/dist/v2/__tests__/rowActions.test.js +186 -0
- package/dist/v2/__tests__/rowActions.test.js.map +1 -0
- package/dist/v2/__tests__/useFocusOnRouteChange.test.js +156 -0
- package/dist/v2/__tests__/useFocusOnRouteChange.test.js.map +1 -0
- package/dist/v2/__tests__/useFocusTrap.test.js +270 -407
- package/dist/v2/__tests__/useFocusTrap.test.js.map +1 -1
- package/dist/v2/__tests__/usePrefersReducedMotion.test.js +123 -0
- package/dist/v2/__tests__/usePrefersReducedMotion.test.js.map +1 -0
- package/dist/v2/components/Accordion.js +60 -82
- package/dist/v2/components/Accordion.js.map +1 -1
- package/dist/v2/components/ActionStrip.js +40 -52
- package/dist/v2/components/ActionStrip.js.map +1 -1
- package/dist/v2/components/Banner.js +42 -41
- package/dist/v2/components/Banner.js.map +1 -1
- package/dist/v2/components/Busy.js +22 -27
- package/dist/v2/components/Busy.js.map +1 -1
- package/dist/v2/components/Button.js +39 -50
- package/dist/v2/components/Button.js.map +1 -1
- package/dist/v2/components/CategoryTag.d.ts.map +1 -1
- package/dist/v2/components/CategoryTag.js +49 -32
- package/dist/v2/components/CategoryTag.js.map +1 -1
- package/dist/v2/components/Checkbox.js +39 -45
- package/dist/v2/components/Checkbox.js.map +1 -1
- package/dist/v2/components/Chip.js +29 -42
- package/dist/v2/components/Chip.js.map +1 -1
- package/dist/v2/components/Combobox.js +122 -144
- package/dist/v2/components/Combobox.js.map +1 -1
- package/dist/v2/components/CommandPalette.js +138 -225
- package/dist/v2/components/CommandPalette.js.map +1 -1
- package/dist/v2/components/ConfirmDialog.js +46 -56
- package/dist/v2/components/ConfirmDialog.js.map +1 -1
- package/dist/v2/components/DatePicker.js +81 -86
- package/dist/v2/components/DatePicker.js.map +1 -1
- package/dist/v2/components/DateRangePicker.js +77 -87
- package/dist/v2/components/DateRangePicker.js.map +1 -1
- package/dist/v2/components/DateTimePicker.js +84 -91
- package/dist/v2/components/DateTimePicker.js.map +1 -1
- package/dist/v2/components/Drawer.d.ts.map +1 -1
- package/dist/v2/components/Drawer.js +93 -88
- package/dist/v2/components/Drawer.js.map +1 -1
- package/dist/v2/components/Dropzone.js +150 -196
- package/dist/v2/components/Dropzone.js.map +1 -1
- package/dist/v2/components/EmptyState.js +18 -20
- package/dist/v2/components/EmptyState.js.map +1 -1
- package/dist/v2/components/FavoriteToggle.js +28 -39
- package/dist/v2/components/FavoriteToggle.js.map +1 -1
- package/dist/v2/components/Field.d.ts +62 -4
- package/dist/v2/components/Field.d.ts.map +1 -1
- package/dist/v2/components/Field.js +169 -70
- package/dist/v2/components/Field.js.map +1 -1
- package/dist/v2/components/FieldError.js +18 -21
- package/dist/v2/components/FieldError.js.map +1 -1
- package/dist/v2/components/FieldHelp.js +40 -60
- package/dist/v2/components/FieldHelp.js.map +1 -1
- package/dist/v2/components/FileCard.js +27 -31
- package/dist/v2/components/FileCard.js.map +1 -1
- package/dist/v2/components/FilterTab.js +30 -38
- package/dist/v2/components/FilterTab.js.map +1 -1
- package/dist/v2/components/ForbiddenPage.d.ts +25 -1
- package/dist/v2/components/ForbiddenPage.d.ts.map +1 -1
- package/dist/v2/components/ForbiddenPage.js +37 -17
- package/dist/v2/components/ForbiddenPage.js.map +1 -1
- package/dist/v2/components/FormGrid.js +53 -59
- package/dist/v2/components/FormGrid.js.map +1 -1
- package/dist/v2/components/FormikDisplay.d.ts +50 -1
- package/dist/v2/components/FormikDisplay.d.ts.map +1 -1
- package/dist/v2/components/FormikDisplay.js +108 -33
- package/dist/v2/components/FormikDisplay.js.map +1 -1
- package/dist/v2/components/Input.d.ts +40 -0
- package/dist/v2/components/Input.d.ts.map +1 -1
- package/dist/v2/components/Input.js +81 -41
- package/dist/v2/components/Input.js.map +1 -1
- package/dist/v2/components/KPICard.js +57 -67
- package/dist/v2/components/KPICard.js.map +1 -1
- package/dist/v2/components/KPIStrip.js +16 -22
- package/dist/v2/components/KPIStrip.js.map +1 -1
- package/dist/v2/components/KV.js +25 -31
- package/dist/v2/components/KV.js.map +1 -1
- package/dist/v2/components/KVGrid.js +19 -26
- package/dist/v2/components/KVGrid.js.map +1 -1
- package/dist/v2/components/Layout.js +91 -120
- package/dist/v2/components/Layout.js.map +1 -1
- package/dist/v2/components/MobileRowCard.js +79 -91
- package/dist/v2/components/MobileRowCard.js.map +1 -1
- package/dist/v2/components/Modal.js +61 -69
- package/dist/v2/components/Modal.js.map +1 -1
- package/dist/v2/components/NetworkErrorPage.d.ts +19 -1
- package/dist/v2/components/NetworkErrorPage.d.ts.map +1 -1
- package/dist/v2/components/NetworkErrorPage.js +38 -21
- package/dist/v2/components/NetworkErrorPage.js.map +1 -1
- package/dist/v2/components/NotFoundPage.d.ts +17 -1
- package/dist/v2/components/NotFoundPage.d.ts.map +1 -1
- package/dist/v2/components/NotFoundPage.js +37 -18
- package/dist/v2/components/NotFoundPage.js.map +1 -1
- package/dist/v2/components/NumberInput.js +88 -118
- package/dist/v2/components/NumberInput.js.map +1 -1
- package/dist/v2/components/OverflowMenu.js +38 -56
- package/dist/v2/components/OverflowMenu.js.map +1 -1
- package/dist/v2/components/PdfViewer.js +34 -45
- package/dist/v2/components/PdfViewer.js.map +1 -1
- package/dist/v2/components/ProgressBar.js +42 -49
- package/dist/v2/components/ProgressBar.js.map +1 -1
- package/dist/v2/components/Radio.js +59 -67
- package/dist/v2/components/Radio.js.map +1 -1
- package/dist/v2/components/SectionErrorBoundary.js +90 -135
- package/dist/v2/components/SectionErrorBoundary.js.map +1 -1
- package/dist/v2/components/SectionHeader.js +34 -41
- package/dist/v2/components/SectionHeader.js.map +1 -1
- package/dist/v2/components/Segmented.js +69 -93
- package/dist/v2/components/Segmented.js.map +1 -1
- package/dist/v2/components/Select.d.ts +26 -2
- package/dist/v2/components/Select.d.ts.map +1 -1
- package/dist/v2/components/Select.js +120 -155
- package/dist/v2/components/Select.js.map +1 -1
- package/dist/v2/components/ServerErrorPage.d.ts +27 -1
- package/dist/v2/components/ServerErrorPage.d.ts.map +1 -1
- package/dist/v2/components/ServerErrorPage.js +37 -20
- package/dist/v2/components/ServerErrorPage.js.map +1 -1
- package/dist/v2/components/Skeleton.js +86 -100
- package/dist/v2/components/Skeleton.js.map +1 -1
- package/dist/v2/components/SkipLink.js +9 -12
- package/dist/v2/components/SkipLink.js.map +1 -1
- package/dist/v2/components/Spinner.js +16 -25
- package/dist/v2/components/Spinner.js.map +1 -1
- package/dist/v2/components/Status.js +18 -29
- package/dist/v2/components/Status.js.map +1 -1
- package/dist/v2/components/Stepper.js +80 -82
- package/dist/v2/components/Stepper.js.map +1 -1
- package/dist/v2/components/Surface.js +34 -49
- package/dist/v2/components/Surface.js.map +1 -1
- package/dist/v2/components/Switch.js +29 -37
- package/dist/v2/components/Switch.js.map +1 -1
- package/dist/v2/components/TabPanel.d.ts +17 -0
- package/dist/v2/components/TabPanel.d.ts.map +1 -0
- package/dist/v2/components/TabPanel.js +90 -0
- package/dist/v2/components/TabPanel.js.map +1 -0
- package/dist/v2/components/Tabs.d.ts +25 -0
- package/dist/v2/components/Tabs.d.ts.map +1 -1
- package/dist/v2/components/Tabs.js +53 -29
- package/dist/v2/components/Tabs.js.map +1 -1
- package/dist/v2/components/TelInput.js +80 -115
- package/dist/v2/components/TelInput.js.map +1 -1
- package/dist/v2/components/Textarea.js +26 -35
- package/dist/v2/components/Textarea.js.map +1 -1
- package/dist/v2/components/TimePicker.js +62 -74
- package/dist/v2/components/TimePicker.js.map +1 -1
- package/dist/v2/components/Toast.js +119 -174
- package/dist/v2/components/Toast.js.map +1 -1
- package/dist/v2/components/Tooltip.js +23 -38
- package/dist/v2/components/Tooltip.js.map +1 -1
- package/dist/v2/components/_ErrorPageBody.js +15 -16
- package/dist/v2/components/_ErrorPageBody.js.map +1 -1
- package/dist/v2/components/_pickerShared.js +5 -5
- package/dist/v2/components/_pickerShared.js.map +1 -1
- package/dist/v2/components/index.d.ts +40 -1
- package/dist/v2/components/index.d.ts.map +1 -1
- package/dist/v2/components/index.js +153 -136
- package/dist/v2/components/index.js.map +1 -1
- package/dist/v2/hooks/index.d.ts +65 -0
- package/dist/v2/hooks/index.d.ts.map +1 -1
- package/dist/v2/hooks/index.js +63 -24
- package/dist/v2/hooks/index.js.map +1 -1
- package/dist/v2/hooks/useAppliedFilters.d.ts +102 -0
- package/dist/v2/hooks/useAppliedFilters.d.ts.map +1 -0
- package/dist/v2/hooks/useAppliedFilters.js +117 -0
- package/dist/v2/hooks/useAppliedFilters.js.map +1 -0
- package/dist/v2/hooks/useDebouncedCallback.d.ts +64 -0
- package/dist/v2/hooks/useDebouncedCallback.d.ts.map +1 -0
- package/dist/v2/hooks/useDebouncedCallback.js +87 -0
- package/dist/v2/hooks/useDebouncedCallback.js.map +1 -0
- package/dist/v2/hooks/useDelayedFlag.js +6 -20
- package/dist/v2/hooks/useDelayedFlag.js.map +1 -1
- package/dist/v2/hooks/useDensity.d.ts.map +1 -1
- package/dist/v2/hooks/useDensity.js +14 -18
- package/dist/v2/hooks/useDensity.js.map +1 -1
- package/dist/v2/hooks/useFocusFirstError.js +26 -34
- package/dist/v2/hooks/useFocusFirstError.js.map +1 -1
- package/dist/v2/hooks/useFocusOnRouteChange.d.ts +65 -0
- package/dist/v2/hooks/useFocusOnRouteChange.d.ts.map +1 -0
- package/dist/v2/hooks/useFocusOnRouteChange.js +88 -0
- package/dist/v2/hooks/useFocusOnRouteChange.js.map +1 -0
- package/dist/v2/hooks/useFocusTrap.js +20 -24
- package/dist/v2/hooks/useFocusTrap.js.map +1 -1
- package/dist/v2/hooks/useFormAutoSave.d.ts +4 -4
- package/dist/v2/hooks/useFormAutoSave.d.ts.map +1 -1
- package/dist/v2/hooks/useFormAutoSave.js +39 -54
- package/dist/v2/hooks/useFormAutoSave.js.map +1 -1
- package/dist/v2/hooks/useFormCompletionProgress.d.ts +1 -1
- package/dist/v2/hooks/useFormCompletionProgress.d.ts.map +1 -1
- package/dist/v2/hooks/useFormCompletionProgress.js +33 -52
- package/dist/v2/hooks/useFormCompletionProgress.js.map +1 -1
- package/dist/v2/hooks/useKeyboardShortcuts.d.ts +25 -0
- package/dist/v2/hooks/useKeyboardShortcuts.d.ts.map +1 -0
- package/dist/v2/hooks/useKeyboardShortcuts.js +132 -0
- package/dist/v2/hooks/useKeyboardShortcuts.js.map +1 -0
- package/dist/v2/hooks/usePrefersReducedMotion.d.ts +56 -0
- package/dist/v2/hooks/usePrefersReducedMotion.d.ts.map +1 -0
- package/dist/v2/hooks/usePrefersReducedMotion.js +105 -0
- package/dist/v2/hooks/usePrefersReducedMotion.js.map +1 -0
- package/dist/v2/hooks/useResolvedDensity.js +5 -13
- package/dist/v2/hooks/useResolvedDensity.js.map +1 -1
- package/dist/v2/hooks/useSortedRows.js +4 -6
- package/dist/v2/hooks/useSortedRows.js.map +1 -1
- package/dist/v2/hooks/useTabLoading.js +7 -22
- package/dist/v2/hooks/useTabLoading.js.map +1 -1
- package/dist/v2/index.js +143 -145
- package/dist/v2/index.js.map +1 -1
- package/dist/v2/modalContext.js +2 -2
- package/dist/v2/modalContext.js.map +1 -1
- package/dist/v2/models/favorite.d.ts +8 -9
- package/dist/v2/models/favorite.d.ts.map +1 -1
- package/dist/v2/models/favorite.js.map +1 -1
- package/dist/v2/models/index.js +4 -4
- package/dist/v2/models/index.js.map +1 -1
- package/dist/v2/models/personalization.d.ts +44 -48
- package/dist/v2/models/personalization.d.ts.map +1 -1
- package/dist/v2/models/personalization.js.map +1 -1
- package/dist/v2/models/referentiel.d.ts +32 -50
- package/dist/v2/models/referentiel.d.ts.map +1 -1
- package/dist/v2/models/referentiel.js.map +1 -1
- package/dist/v2/models/savedFilter.d.ts +8 -17
- package/dist/v2/models/savedFilter.d.ts.map +1 -1
- package/dist/v2/models/savedFilter.js.map +1 -1
- package/dist/v2/patterns/ActionBar.js +152 -187
- package/dist/v2/patterns/ActionBar.js.map +1 -1
- package/dist/v2/patterns/AppMain.d.ts +109 -0
- package/dist/v2/patterns/AppMain.d.ts.map +1 -0
- package/dist/v2/patterns/AppMain.js +115 -0
- package/dist/v2/patterns/AppMain.js.map +1 -0
- package/dist/v2/patterns/BulkActionBar.js +40 -42
- package/dist/v2/patterns/BulkActionBar.js.map +1 -1
- package/dist/v2/patterns/ChartFigure.d.ts +124 -0
- package/dist/v2/patterns/ChartFigure.d.ts.map +1 -0
- package/dist/v2/patterns/ChartFigure.js +159 -0
- package/dist/v2/patterns/ChartFigure.js.map +1 -0
- package/dist/v2/patterns/CollapsibleDataGrid.js +138 -174
- package/dist/v2/patterns/CollapsibleDataGrid.js.map +1 -1
- package/dist/v2/patterns/ColumnsToggle.js +60 -94
- package/dist/v2/patterns/ColumnsToggle.js.map +1 -1
- package/dist/v2/patterns/DataGrid.d.ts.map +1 -1
- package/dist/v2/patterns/DataGrid.js +262 -297
- package/dist/v2/patterns/DataGrid.js.map +1 -1
- package/dist/v2/patterns/DataGridSettingsMenu.d.ts +12 -0
- package/dist/v2/patterns/DataGridSettingsMenu.d.ts.map +1 -1
- package/dist/v2/patterns/DataGridSettingsMenu.js +104 -121
- package/dist/v2/patterns/DataGridSettingsMenu.js.map +1 -1
- package/dist/v2/patterns/DataGridToolbar.js +103 -106
- package/dist/v2/patterns/DataGridToolbar.js.map +1 -1
- package/dist/v2/patterns/DataGridVirtualized.js +179 -217
- package/dist/v2/patterns/DataGridVirtualized.js.map +1 -1
- package/dist/v2/patterns/DeleteResourceConfirmDialog.js +32 -35
- package/dist/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
- package/dist/v2/patterns/DetailSplit.d.ts +87 -0
- package/dist/v2/patterns/DetailSplit.d.ts.map +1 -0
- package/dist/v2/patterns/DetailSplit.js +116 -0
- package/dist/v2/patterns/DetailSplit.js.map +1 -0
- package/dist/v2/patterns/FavoriteColumn.js +22 -23
- package/dist/v2/patterns/FavoriteColumn.js.map +1 -1
- package/dist/v2/patterns/FavoritesFilter.js +36 -44
- package/dist/v2/patterns/FavoritesFilter.js.map +1 -1
- package/dist/v2/patterns/FilterTabBar.d.ts +28 -0
- package/dist/v2/patterns/FilterTabBar.d.ts.map +1 -0
- package/dist/v2/patterns/FilterTabBar.js +120 -0
- package/dist/v2/patterns/FilterTabBar.js.map +1 -0
- package/dist/v2/patterns/FormErrorSummary.js +20 -23
- package/dist/v2/patterns/FormErrorSummary.js.map +1 -1
- package/dist/v2/patterns/FormPageShell.js +53 -50
- package/dist/v2/patterns/FormPageShell.js.map +1 -1
- package/dist/v2/patterns/FormSection.d.ts +8 -3
- package/dist/v2/patterns/FormSection.d.ts.map +1 -1
- package/dist/v2/patterns/FormSection.js +44 -51
- package/dist/v2/patterns/FormSection.js.map +1 -1
- package/dist/v2/patterns/FormikCheckbox.js +36 -45
- package/dist/v2/patterns/FormikCheckbox.js.map +1 -1
- package/dist/v2/patterns/FormikCheckboxGroup.d.ts +17 -1
- package/dist/v2/patterns/FormikCheckboxGroup.d.ts.map +1 -1
- package/dist/v2/patterns/FormikCheckboxGroup.js +62 -65
- package/dist/v2/patterns/FormikCheckboxGroup.js.map +1 -1
- package/dist/v2/patterns/FormikCombobox.js +55 -72
- package/dist/v2/patterns/FormikCombobox.js.map +1 -1
- package/dist/v2/patterns/FormikDatePicker.js +50 -64
- package/dist/v2/patterns/FormikDatePicker.js.map +1 -1
- package/dist/v2/patterns/FormikDateTimePicker.js +50 -64
- package/dist/v2/patterns/FormikDateTimePicker.js.map +1 -1
- package/dist/v2/patterns/FormikErrorFocus.js +25 -26
- package/dist/v2/patterns/FormikErrorFocus.js.map +1 -1
- package/dist/v2/patterns/FormikErrorSummary.d.ts +74 -0
- package/dist/v2/patterns/FormikErrorSummary.d.ts.map +1 -0
- package/dist/v2/patterns/FormikErrorSummary.js +97 -0
- package/dist/v2/patterns/FormikErrorSummary.js.map +1 -0
- package/dist/v2/patterns/FormikFile.d.ts +14 -1
- package/dist/v2/patterns/FormikFile.d.ts.map +1 -1
- package/dist/v2/patterns/FormikFile.js +99 -83
- package/dist/v2/patterns/FormikFile.js.map +1 -1
- package/dist/v2/patterns/FormikInput.js +45 -58
- package/dist/v2/patterns/FormikInput.js.map +1 -1
- package/dist/v2/patterns/FormikRadioGroup.js +45 -56
- package/dist/v2/patterns/FormikRadioGroup.js.map +1 -1
- package/dist/v2/patterns/FormikReferentielField.d.ts +12 -1
- package/dist/v2/patterns/FormikReferentielField.d.ts.map +1 -1
- package/dist/v2/patterns/FormikReferentielField.js +54 -64
- package/dist/v2/patterns/FormikReferentielField.js.map +1 -1
- package/dist/v2/patterns/FormikSelect.js +70 -92
- package/dist/v2/patterns/FormikSelect.js.map +1 -1
- package/dist/v2/patterns/FormikTextarea.js +35 -51
- package/dist/v2/patterns/FormikTextarea.js.map +1 -1
- package/dist/v2/patterns/KeyboardShortcutsHelp.js +60 -80
- package/dist/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
- package/dist/v2/patterns/NetworkErrorBanner.js +13 -16
- package/dist/v2/patterns/NetworkErrorBanner.js.map +1 -1
- package/dist/v2/patterns/PageContent.js +17 -20
- package/dist/v2/patterns/PageContent.js.map +1 -1
- package/dist/v2/patterns/PreviewDrawer.d.ts +49 -0
- package/dist/v2/patterns/PreviewDrawer.d.ts.map +1 -0
- package/dist/v2/patterns/PreviewDrawer.js +159 -0
- package/dist/v2/patterns/PreviewDrawer.js.map +1 -0
- package/dist/v2/patterns/ReferentielField.d.ts +86 -2
- package/dist/v2/patterns/ReferentielField.d.ts.map +1 -1
- package/dist/v2/patterns/ReferentielField.js +347 -327
- package/dist/v2/patterns/ReferentielField.js.map +1 -1
- package/dist/v2/patterns/RowFavoriteToggle.d.ts +6 -0
- package/dist/v2/patterns/RowFavoriteToggle.d.ts.map +1 -1
- package/dist/v2/patterns/RowFavoriteToggle.js +38 -30
- package/dist/v2/patterns/RowFavoriteToggle.js.map +1 -1
- package/dist/v2/patterns/SaveFilterDialog.js +50 -77
- package/dist/v2/patterns/SaveFilterDialog.js.map +1 -1
- package/dist/v2/patterns/SavedFiltersMenu.js +89 -107
- package/dist/v2/patterns/SavedFiltersMenu.js.map +1 -1
- package/dist/v2/patterns/SkeletonPageShell.js +122 -143
- package/dist/v2/patterns/SkeletonPageShell.js.map +1 -1
- package/dist/v2/patterns/SortableHeader.js +35 -57
- package/dist/v2/patterns/SortableHeader.js.map +1 -1
- package/dist/v2/patterns/Tour.js +121 -142
- package/dist/v2/patterns/Tour.js.map +1 -1
- package/dist/v2/patterns/_dataGridShared.d.ts.map +1 -1
- package/dist/v2/patterns/_dataGridShared.js +131 -147
- package/dist/v2/patterns/_dataGridShared.js.map +1 -1
- package/dist/v2/patterns/_pickerSerialisation.js +9 -10
- package/dist/v2/patterns/_pickerSerialisation.js.map +1 -1
- package/dist/v2/patterns/_sort.js +17 -33
- package/dist/v2/patterns/_sort.js.map +1 -1
- package/dist/v2/patterns/_useColumnReorder.js +124 -163
- package/dist/v2/patterns/_useColumnReorder.js.map +1 -1
- package/dist/v2/patterns/_useColumnResize.js +80 -99
- package/dist/v2/patterns/_useColumnResize.js.map +1 -1
- package/dist/v2/patterns/filterCriteria.d.ts +78 -0
- package/dist/v2/patterns/filterCriteria.d.ts.map +1 -0
- package/dist/v2/patterns/filterCriteria.js +110 -0
- package/dist/v2/patterns/filterCriteria.js.map +1 -0
- package/dist/v2/patterns/index.d.ts +160 -0
- package/dist/v2/patterns/index.d.ts.map +1 -1
- package/dist/v2/patterns/index.js +157 -79
- package/dist/v2/patterns/index.js.map +1 -1
- package/dist/v2/patterns/rowActions.d.ts +150 -0
- package/dist/v2/patterns/rowActions.d.ts.map +1 -0
- package/dist/v2/patterns/rowActions.js +232 -0
- package/dist/v2/patterns/rowActions.js.map +1 -0
- package/dist/v2/personalization/PersonalizationProvider.d.ts.map +1 -1
- package/dist/v2/personalization/PersonalizationProvider.js +57 -53
- package/dist/v2/personalization/PersonalizationProvider.js.map +1 -1
- package/dist/v2/personalization/adapters/_storageKey.js +5 -5
- package/dist/v2/personalization/adapters/_storageKey.js.map +1 -1
- package/dist/v2/personalization/adapters/createLocalStorageAdapter.js +25 -24
- package/dist/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
- package/dist/v2/personalization/adapters/createMemoryAdapter.js +14 -14
- package/dist/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
- package/dist/v2/personalization/adapters/index.js +5 -5
- package/dist/v2/personalization/adapters/index.js.map +1 -1
- package/dist/v2/personalization/capabilities/favorites.js +39 -62
- package/dist/v2/personalization/capabilities/favorites.js.map +1 -1
- package/dist/v2/personalization/capabilities/favoritesView.js +25 -37
- package/dist/v2/personalization/capabilities/favoritesView.js.map +1 -1
- package/dist/v2/personalization/capabilities/gridPreferences.js +31 -36
- package/dist/v2/personalization/capabilities/gridPreferences.js.map +1 -1
- package/dist/v2/personalization/capabilities/index.js +12 -12
- package/dist/v2/personalization/capabilities/reviveSavedCriteria.d.ts +88 -0
- package/dist/v2/personalization/capabilities/reviveSavedCriteria.d.ts.map +1 -0
- package/dist/v2/personalization/capabilities/reviveSavedCriteria.js +126 -0
- package/dist/v2/personalization/capabilities/reviveSavedCriteria.js.map +1 -0
- package/dist/v2/personalization/capabilities/savedFilters.js +93 -100
- package/dist/v2/personalization/capabilities/savedFilters.js.map +1 -1
- package/dist/v2/personalization/createPersonalizationStore.d.ts.map +1 -1
- package/dist/v2/personalization/createPersonalizationStore.js +81 -182
- package/dist/v2/personalization/createPersonalizationStore.js.map +1 -1
- package/dist/v2/personalization/index.d.ts +16 -0
- package/dist/v2/personalization/index.d.ts.map +1 -1
- package/dist/v2/personalization/index.js +30 -23
- package/dist/v2/personalization/index.js.map +1 -1
- package/dist/v2/personalization/personalizationContext.js +10 -12
- package/dist/v2/personalization/personalizationContext.js.map +1 -1
- package/dist/v2/personalization/schema.js +8 -9
- package/dist/v2/personalization/schema.js.map +1 -1
- package/dist/v2/referentiel/ReferentielProvider.js +31 -45
- package/dist/v2/referentiel/ReferentielProvider.js.map +1 -1
- package/dist/v2/referentiel/index.js +11 -13
- package/dist/v2/referentiel/index.js.map +1 -1
- package/dist/v2/referentiel/types.d.ts +105 -0
- package/dist/v2/referentiel/types.d.ts.map +1 -0
- package/dist/v2/referentiel/types.js +6 -0
- package/dist/v2/referentiel/types.js.map +1 -0
- package/dist/v2/referentiel/useReferentielClient.js +13 -16
- package/dist/v2/referentiel/useReferentielClient.js.map +1 -1
- package/dist/v2/referentiel/useReferentielOptions.d.ts +7 -17
- package/dist/v2/referentiel/useReferentielOptions.d.ts.map +1 -1
- package/dist/v2/referentiel/useReferentielOptions.js +63 -120
- package/dist/v2/referentiel/useReferentielOptions.js.map +1 -1
- package/dist/v2/referentiel/useReferentielSearch.d.ts +7 -48
- package/dist/v2/referentiel/useReferentielSearch.d.ts.map +1 -1
- package/dist/v2/referentiel/useReferentielSearch.js +40 -95
- package/dist/v2/referentiel/useReferentielSearch.js.map +1 -1
- package/dist/v2/theme/_brand.js +12 -26
- package/dist/v2/theme/_brand.js.map +1 -1
- package/dist/v2/theme/_brandSecondary.js +12 -26
- package/dist/v2/theme/_brandSecondary.js.map +1 -1
- package/dist/v2/theme/createPortnetTheme.js +41 -49
- package/dist/v2/theme/createPortnetTheme.js.map +1 -1
- package/dist/v2/theme/cssVariables.d.ts +3 -3
- package/dist/v2/theme/cssVariables.d.ts.map +1 -1
- package/dist/v2/theme/cssVariables.js +65 -70
- package/dist/v2/theme/cssVariables.js.map +1 -1
- package/dist/v2/theme/index.js +10 -10
- package/dist/v2/theme/index.js.map +1 -1
- package/dist/v2/tokens/breakpoints.js +16 -16
- package/dist/v2/tokens/breakpoints.js.map +1 -1
- package/dist/v2/tokens/chart.d.ts +103 -0
- package/dist/v2/tokens/chart.d.ts.map +1 -0
- package/dist/v2/tokens/chart.js +270 -0
- package/dist/v2/tokens/chart.js.map +1 -0
- package/dist/v2/tokens/colors.js +24 -24
- package/dist/v2/tokens/colors.js.map +1 -1
- package/dist/v2/tokens/density.d.ts +104 -0
- package/dist/v2/tokens/density.d.ts.map +1 -1
- package/dist/v2/tokens/density.js +67 -12
- package/dist/v2/tokens/density.js.map +1 -1
- package/dist/v2/tokens/index.d.ts +50 -1
- package/dist/v2/tokens/index.d.ts.map +1 -1
- package/dist/v2/tokens/index.js +116 -68
- package/dist/v2/tokens/index.js.map +1 -1
- package/dist/v2/tokens/motion.js +16 -22
- package/dist/v2/tokens/motion.js.map +1 -1
- package/dist/v2/tokens/radius.js +3 -3
- package/dist/v2/tokens/radius.js.map +1 -1
- package/dist/v2/tokens/shadows.js +8 -8
- package/dist/v2/tokens/shadows.js.map +1 -1
- package/dist/v2/tokens/spacing.js +4 -4
- package/dist/v2/tokens/spacing.js.map +1 -1
- package/dist/v2/tokens/state.js +3 -3
- package/dist/v2/tokens/state.js.map +1 -1
- package/dist/v2/tokens/statusPalette.js +21 -23
- package/dist/v2/tokens/statusPalette.js.map +1 -1
- package/dist/v2/tokens/tokens.json +6 -1
- package/dist/v2/tokens/typography.js +15 -15
- package/dist/v2/tokens/typography.js.map +1 -1
- package/dist/v2/tokens/zIndex.js +3 -3
- package/dist/v2/tokens/zIndex.js.map +1 -1
- package/dist/v2/types/datagrid.d.ts +9 -1
- package/dist/v2/types/datagrid.d.ts.map +1 -1
- package/dist/v2/types/datagrid.js.map +1 -1
- package/dist/v2/types/index.js +2 -2
- package/dist/v2/types/index.js.map +1 -1
- package/dist/v2/utils/apiError.js +16 -37
- package/dist/v2/utils/apiError.js.map +1 -1
- package/dist/v2/utils/contrast.js +31 -32
- package/dist/v2/utils/contrast.js.map +1 -1
- package/dist/v2/utils/cx.js +7 -27
- package/dist/v2/utils/cx.js.map +1 -1
- package/dist/v2/utils/fileDownload.js +25 -28
- package/dist/v2/utils/fileDownload.js.map +1 -1
- package/dist/v2/utils/fileValidation.d.ts +116 -0
- package/dist/v2/utils/fileValidation.d.ts.map +1 -0
- package/dist/v2/utils/fileValidation.js +220 -0
- package/dist/v2/utils/fileValidation.js.map +1 -0
- package/dist/v2/utils/fmtDate.d.ts +103 -0
- package/dist/v2/utils/fmtDate.d.ts.map +1 -0
- package/dist/v2/utils/fmtDate.js +119 -0
- package/dist/v2/utils/fmtDate.js.map +1 -0
- package/dist/v2/utils/fmtMoney.d.ts +3 -3
- package/dist/v2/utils/fmtMoney.d.ts.map +1 -1
- package/dist/v2/utils/fmtMoney.js +9 -11
- package/dist/v2/utils/fmtMoney.js.map +1 -1
- package/dist/v2/utils/formikErrors.d.ts +67 -0
- package/dist/v2/utils/formikErrors.d.ts.map +1 -0
- package/dist/v2/utils/formikErrors.js +85 -0
- package/dist/v2/utils/formikErrors.js.map +1 -0
- package/dist/v2/utils/index.d.ts +5 -0
- package/dist/v2/utils/index.d.ts.map +1 -1
- package/dist/v2/utils/index.js +67 -18
- package/dist/v2/utils/index.js.map +1 -1
- package/dist/v2/utils/mergeLabels.js +9 -14
- package/dist/v2/utils/mergeLabels.js.map +1 -1
- package/dist/v2/utils/networkStatus.js +14 -14
- package/dist/v2/utils/networkStatus.js.map +1 -1
- package/package.json +26 -9
|
@@ -3,21 +3,22 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports
|
|
6
|
+
exports.default = void 0;
|
|
7
7
|
var _Box = _interopRequireDefault(require("@mui/material/Box"));
|
|
8
8
|
var _ArrowBack = _interopRequireDefault(require("@mui/icons-material/ArrowBack"));
|
|
9
9
|
var _SearchOff = _interopRequireDefault(require("@mui/icons-material/SearchOff"));
|
|
10
10
|
var _ActionBar = _interopRequireDefault(require("../patterns/ActionBar"));
|
|
11
11
|
var _Button = _interopRequireDefault(require("./Button"));
|
|
12
12
|
var _ErrorPageBody = _interopRequireDefault(require("./_ErrorPageBody"));
|
|
13
|
+
var _mergeLabels = require("../utils/mergeLabels");
|
|
13
14
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
14
|
-
function _interopRequireDefault(
|
|
15
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
15
16
|
/**
|
|
16
17
|
* NotFoundPage — Portnet UI v2 (component)
|
|
17
18
|
*
|
|
18
19
|
* Charter §07 · 404 / Page introuvable.
|
|
19
20
|
*
|
|
20
|
-
* Router-agnostic. See ForbiddenPage.
|
|
21
|
+
* Router-agnostic. See ForbiddenPage.tsx for the full contract and
|
|
21
22
|
* design rationale (onBack + onHome callback props).
|
|
22
23
|
*
|
|
23
24
|
* import { NotFoundPage } from "@portnet/ui/lib/v2";
|
|
@@ -27,40 +28,58 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
|
|
|
27
28
|
* const navigate = useNavigate();
|
|
28
29
|
* return <NotFoundPage onBack={() => navigate(-1)} onHome={() => navigate("/")} />;
|
|
29
30
|
* }
|
|
31
|
+
*
|
|
32
|
+
* Localisation (P-4): every visible string is overridable through
|
|
33
|
+
* `labels`, defaulting to French. The shape matches the other three
|
|
34
|
+
* error pages so one translation object can serve all of them.
|
|
35
|
+
*
|
|
36
|
+
* No retry here, deliberately: a 404 is a statement about an address
|
|
37
|
+
* rather than about a moment, so retrying cannot change the outcome.
|
|
30
38
|
*/
|
|
31
39
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
40
|
+
const DEFAULT_LABELS = Object.freeze({
|
|
41
|
+
breadcrumbRoot: "Erreur",
|
|
42
|
+
breadcrumbCurrent: "Page introuvable",
|
|
43
|
+
title: "Page introuvable",
|
|
44
|
+
heading: "La page demandée n'existe pas",
|
|
45
|
+
description: "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.",
|
|
46
|
+
home: "Retour à l'accueil"
|
|
47
|
+
});
|
|
48
|
+
function NotFoundPage({
|
|
49
|
+
onBack,
|
|
50
|
+
onHome,
|
|
51
|
+
labels
|
|
52
|
+
}) {
|
|
53
|
+
const L = (0, _mergeLabels.mergeLabels)(DEFAULT_LABELS, labels);
|
|
35
54
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
36
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_ActionBar
|
|
55
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_ActionBar.default, {
|
|
37
56
|
back: onBack,
|
|
38
|
-
breadcrumb: [
|
|
39
|
-
title:
|
|
40
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ErrorPageBody
|
|
41
|
-
icon: /*#__PURE__*/(0, _jsxRuntime.jsx)(_SearchOff
|
|
57
|
+
breadcrumb: [L.breadcrumbRoot, L.breadcrumbCurrent],
|
|
58
|
+
title: L.title
|
|
59
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ErrorPageBody.default, {
|
|
60
|
+
icon: /*#__PURE__*/(0, _jsxRuntime.jsx)(_SearchOff.default, {
|
|
42
61
|
sx: {
|
|
43
62
|
fontSize: 64,
|
|
44
63
|
color: "var(--info)"
|
|
45
64
|
}
|
|
46
65
|
}),
|
|
47
66
|
code: "404",
|
|
48
|
-
title:
|
|
49
|
-
description:
|
|
50
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box
|
|
67
|
+
title: L.heading,
|
|
68
|
+
description: L.description
|
|
69
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
|
|
51
70
|
sx: {
|
|
52
71
|
display: "flex",
|
|
53
72
|
justifyContent: "center",
|
|
54
73
|
paddingBottom: "var(--s-7)"
|
|
55
74
|
},
|
|
56
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button
|
|
75
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
|
|
57
76
|
variant: "primary",
|
|
58
|
-
icon: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ArrowBack
|
|
77
|
+
icon: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ArrowBack.default, {}),
|
|
59
78
|
onClick: onHome,
|
|
60
|
-
children:
|
|
79
|
+
children: L.home
|
|
61
80
|
})
|
|
62
81
|
})]
|
|
63
82
|
});
|
|
64
83
|
}
|
|
65
|
-
var _default = exports
|
|
84
|
+
var _default = exports.default = NotFoundPage;
|
|
66
85
|
//# sourceMappingURL=NotFoundPage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NotFoundPage.js","names":["_Box","_interopRequireDefault","require","_ArrowBack","_SearchOff","_ActionBar","_Button","_ErrorPageBody","_jsxRuntime","
|
|
1
|
+
{"version":3,"file":"NotFoundPage.js","names":["_Box","_interopRequireDefault","require","_ArrowBack","_SearchOff","_ActionBar","_Button","_ErrorPageBody","_mergeLabels","_jsxRuntime","e","__esModule","default","DEFAULT_LABELS","Object","freeze","breadcrumbRoot","breadcrumbCurrent","title","heading","description","home","NotFoundPage","onBack","onHome","labels","L","mergeLabels","jsxs","Fragment","children","jsx","back","breadcrumb","icon","sx","fontSize","color","code","display","justifyContent","paddingBottom","variant","onClick","_default","exports"],"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":";;;;;;AAuBA,IAAAA,IAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,UAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,UAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,OAAA,GAAAL,sBAAA,CAAAC,OAAA;AACA,IAAAK,cAAA,GAAAN,sBAAA,CAAAC,OAAA;AACA,IAAAM,YAAA,GAAAN,OAAA;AAAmD,IAAAO,WAAA,GAAAP,OAAA;AAAA,SAAAD,uBAAAS,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AA7BnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAwBA,MAAMG,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,GAAG,IAAAC,wBAAW,EAACd,cAAc,EAAEY,MAAM,CAAC;EAE7C,oBACE,IAAAhB,WAAA,CAAAmB,IAAA,EAAAnB,WAAA,CAAAoB,QAAA;IAAAC,QAAA,gBACE,IAAArB,WAAA,CAAAsB,GAAA,EAAC1B,UAAA,CAAAO,OAAS;MACRoB,IAAI,EAAET,MAAO;MACbU,UAAU,EAAE,CAACP,CAAC,CAACV,cAAc,EAAEU,CAAC,CAACT,iBAAiB,CAAE;MACpDC,KAAK,EAAEQ,CAAC,CAACR;IAAM,CAChB,CAAC,eACF,IAAAT,WAAA,CAAAsB,GAAA,EAACxB,cAAA,CAAAK,OAAa;MACZsB,IAAI,eAAE,IAAAzB,WAAA,CAAAsB,GAAA,EAAC3B,UAAA,CAAAQ,OAAS;QAACuB,EAAE,EAAE;UAAEC,QAAQ,EAAE,EAAE;UAAEC,KAAK,EAAE;QAAc;MAAE,CAAE,CAAE;MAChEC,IAAI,EAAC,KAAK;MACVpB,KAAK,EAAEQ,CAAC,CAACP,OAAQ;MACjBC,WAAW,EAAEM,CAAC,CAACN;IAAY,CAC5B,CAAC,eACF,IAAAX,WAAA,CAAAsB,GAAA,EAAC/B,IAAA,CAAAY,OAAG;MAACuB,EAAE,EAAE;QAAEI,OAAO,EAAE,MAAM;QAAEC,cAAc,EAAE,QAAQ;QAAEC,aAAa,EAAE;MAAa,CAAE;MAAAX,QAAA,eAClF,IAAArB,WAAA,CAAAsB,GAAA,EAACzB,OAAA,CAAAM,OAAM;QAAC8B,OAAO,EAAC,SAAS;QAACR,IAAI,eAAE,IAAAzB,WAAA,CAAAsB,GAAA,EAAC5B,UAAA,CAAAS,OAAS,IAAE,CAAE;QAAC+B,OAAO,EAAEnB,MAAO;QAAAM,QAAA,EAC5DJ,CAAC,CAACL;MAAI,CACD;IAAC,CACN,CAAC;EAAA,CACN,CAAC;AAEP;AAAC,IAAAuB,QAAA,GAAAC,OAAA,CAAAjC,OAAA,GAEcU,YAAY","ignoreList":[]}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
4
3
|
Object.defineProperty(exports, "__esModule", {
|
|
5
4
|
value: true
|
|
6
5
|
});
|
|
7
|
-
exports
|
|
6
|
+
exports.default = exports.FR_THOUSAND_SEPARATOR = exports.FR_DECIMAL_SEPARATOR = void 0;
|
|
8
7
|
var React = _interopRequireWildcard(require("react"));
|
|
9
8
|
var _OutlinedInput = _interopRequireDefault(require("@mui/material/OutlinedInput"));
|
|
10
9
|
var _InputAdornment = _interopRequireDefault(require("@mui/material/InputAdornment"));
|
|
@@ -13,7 +12,8 @@ var _Add = _interopRequireDefault(require("@mui/icons-material/Add"));
|
|
|
13
12
|
var _Remove = _interopRequireDefault(require("@mui/icons-material/Remove"));
|
|
14
13
|
var _mergeLabels = require("../utils/mergeLabels");
|
|
15
14
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
16
|
-
|
|
15
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
16
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
17
17
|
/**
|
|
18
18
|
* NumberInput — Portnet UI v2
|
|
19
19
|
*
|
|
@@ -67,36 +67,20 @@ var _excluded = ["value", "onChange", "onBlur", "min", "max", "step", "decimals"
|
|
|
67
67
|
* users requiring larger targets can type or use keyboard nav.
|
|
68
68
|
* Documented exception, see Batch 14 charter-exceptions log.
|
|
69
69
|
*/
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
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; }
|
|
74
|
-
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; }
|
|
75
|
-
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; }
|
|
76
|
-
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
77
|
-
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); }
|
|
78
|
-
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
79
|
-
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."); }
|
|
80
|
-
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); }
|
|
81
|
-
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; }
|
|
82
|
-
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; } }
|
|
83
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
84
|
-
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; }
|
|
85
|
-
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; }
|
|
86
|
-
var FR_DECIMAL_SEP = ",";
|
|
87
|
-
var FR_THOUSAND_SEP = " ";
|
|
70
|
+
|
|
71
|
+
const FR_DECIMAL_SEP = ",";
|
|
72
|
+
const FR_THOUSAND_SEP = " ";
|
|
88
73
|
|
|
89
74
|
// Stepper button hit area — WCAG 2.5.8 AA (24 × 24). See JSDoc above
|
|
90
75
|
// for the rationale for not pursuing 44 × 44 / R-Tg.1 here.
|
|
91
|
-
|
|
92
|
-
|
|
76
|
+
const STEPPER_HIT_AREA = 24;
|
|
77
|
+
const DEFAULT_LABELS = Object.freeze({
|
|
93
78
|
decrement: "Diminuer",
|
|
94
79
|
increment: "Augmenter"
|
|
95
80
|
});
|
|
96
|
-
function formatForDisplay(num, decimals) {
|
|
97
|
-
var locale = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "fr-FR";
|
|
81
|
+
function formatForDisplay(num, decimals, locale = "fr-FR") {
|
|
98
82
|
if (num == null || Number.isNaN(num)) return "";
|
|
99
|
-
|
|
83
|
+
const opts = decimals != null ? {
|
|
100
84
|
minimumFractionDigits: decimals,
|
|
101
85
|
maximumFractionDigits: decimals
|
|
102
86
|
} : {
|
|
@@ -104,7 +88,7 @@ function formatForDisplay(num, decimals) {
|
|
|
104
88
|
};
|
|
105
89
|
try {
|
|
106
90
|
return new Intl.NumberFormat(locale, opts).format(num);
|
|
107
|
-
} catch
|
|
91
|
+
} catch {
|
|
108
92
|
// Invalid BCP-47 tag — fall back to fr-FR rather than throwing.
|
|
109
93
|
return new Intl.NumberFormat("fr-FR", opts).format(num);
|
|
110
94
|
}
|
|
@@ -113,95 +97,82 @@ function parseFromUser(str) {
|
|
|
113
97
|
if (str == null || str === "") return null;
|
|
114
98
|
// Accept BOTH `,` and `.` as decimal separator; strip every whitespace
|
|
115
99
|
// (regular space, NBSP, narrow NBSP). Locale-agnostic by design.
|
|
116
|
-
|
|
100
|
+
const cleaned = String(str).replace(/[\u00A0\u202F]/g, " ").replace(/\s+/g, "").replace(",", ".");
|
|
117
101
|
if (cleaned === "" || cleaned === "-" || cleaned === ".") return null;
|
|
118
|
-
|
|
102
|
+
const n = Number(cleaned);
|
|
119
103
|
return Number.isFinite(n) ? n : null;
|
|
120
104
|
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
var _React$useState = React.useState(function () {
|
|
149
|
-
return formatForDisplay(value, decimals, locale);
|
|
150
|
-
}),
|
|
151
|
-
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
152
|
-
display = _React$useState2[0],
|
|
153
|
-
setDisplay = _React$useState2[1];
|
|
154
|
-
var _React$useState3 = React.useState(false),
|
|
155
|
-
_React$useState4 = _slicedToArray(_React$useState3, 2),
|
|
156
|
-
focused = _React$useState4[0],
|
|
157
|
-
setFocused = _React$useState4[1];
|
|
158
|
-
React.useEffect(function () {
|
|
105
|
+
const NumberInput = /*#__PURE__*/React.forwardRef(function NumberInput({
|
|
106
|
+
value,
|
|
107
|
+
onChange,
|
|
108
|
+
onBlur,
|
|
109
|
+
min,
|
|
110
|
+
max,
|
|
111
|
+
step = 1,
|
|
112
|
+
decimals,
|
|
113
|
+
placeholder,
|
|
114
|
+
disabled,
|
|
115
|
+
error,
|
|
116
|
+
readOnly,
|
|
117
|
+
fullWidth = true,
|
|
118
|
+
showSpinner = false,
|
|
119
|
+
prefix,
|
|
120
|
+
suffix,
|
|
121
|
+
inputProps,
|
|
122
|
+
onValidate,
|
|
123
|
+
locale = "fr-FR",
|
|
124
|
+
labels,
|
|
125
|
+
sx,
|
|
126
|
+
...rest
|
|
127
|
+
}, ref) {
|
|
128
|
+
const mergedLabels = (0, _mergeLabels.mergeLabels)(DEFAULT_LABELS, labels);
|
|
129
|
+
const [display, setDisplay] = React.useState(() => formatForDisplay(value, decimals, locale));
|
|
130
|
+
const [focused, setFocused] = React.useState(false);
|
|
131
|
+
React.useEffect(() => {
|
|
159
132
|
if (!focused) setDisplay(formatForDisplay(value, decimals, locale));
|
|
160
133
|
}, [value, decimals, locale, focused]);
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
134
|
+
const allowMinus = min == null || min < 0;
|
|
135
|
+
const onUserChange = e => {
|
|
136
|
+
const raw = e.target.value;
|
|
137
|
+
const re = allowMinus ? /^-?[0-9]*[.,]?[0-9]*$/ : /^[0-9]*[.,]?[0-9]*$/;
|
|
165
138
|
if (raw !== "" && !re.test(raw)) return;
|
|
166
139
|
setDisplay(raw);
|
|
167
|
-
|
|
168
|
-
onChange
|
|
140
|
+
const parsed = parseFromUser(raw);
|
|
141
|
+
onChange?.(parsed);
|
|
169
142
|
};
|
|
170
|
-
|
|
143
|
+
const clamp = n => {
|
|
171
144
|
if (n == null) return n;
|
|
172
|
-
|
|
145
|
+
let out = n;
|
|
173
146
|
if (typeof min === "number" && out < min) out = min;
|
|
174
147
|
if (typeof max === "number" && out > max) out = max;
|
|
175
148
|
return out;
|
|
176
149
|
};
|
|
177
|
-
|
|
150
|
+
const handleBlur = e => {
|
|
178
151
|
setFocused(false);
|
|
179
|
-
|
|
180
|
-
|
|
152
|
+
const parsed = parseFromUser(display);
|
|
153
|
+
const clamped = clamp(parsed);
|
|
181
154
|
if (clamped !== parsed) {
|
|
182
|
-
onChange
|
|
155
|
+
onChange?.(clamped);
|
|
183
156
|
setDisplay(formatForDisplay(clamped, decimals, locale));
|
|
184
157
|
} else {
|
|
185
158
|
setDisplay(formatForDisplay(parsed, decimals, locale));
|
|
186
159
|
}
|
|
187
160
|
if (onValidate) {
|
|
188
|
-
|
|
161
|
+
const violation = parsed == null ? null : typeof min === "number" && parsed < min ? "min" : typeof max === "number" && parsed > max ? "max" : null;
|
|
189
162
|
onValidate({
|
|
190
163
|
value: parsed,
|
|
191
|
-
clamped
|
|
192
|
-
violation
|
|
164
|
+
clamped,
|
|
165
|
+
violation
|
|
193
166
|
});
|
|
194
167
|
}
|
|
195
|
-
onBlur
|
|
196
|
-
};
|
|
197
|
-
var handleFocus = function handleFocus() {
|
|
198
|
-
return setFocused(true);
|
|
168
|
+
onBlur?.(e);
|
|
199
169
|
};
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
170
|
+
const handleFocus = () => setFocused(true);
|
|
171
|
+
const bumpBy = delta => {
|
|
172
|
+
const next = clamp((value ?? 0) + delta);
|
|
173
|
+
onChange?.(next);
|
|
203
174
|
};
|
|
204
|
-
|
|
175
|
+
const onKeyDown = e => {
|
|
205
176
|
if (e.key === "ArrowUp") {
|
|
206
177
|
e.preventDefault();
|
|
207
178
|
bumpBy(+step);
|
|
@@ -211,24 +182,24 @@ var NumberInput = /*#__PURE__*/React.forwardRef(function NumberInput(_ref, ref)
|
|
|
211
182
|
bumpBy(-step);
|
|
212
183
|
}
|
|
213
184
|
};
|
|
214
|
-
|
|
185
|
+
const ariaValueText = React.useMemo(() => {
|
|
215
186
|
if (value == null || Number.isNaN(value)) return undefined;
|
|
216
|
-
|
|
187
|
+
const formatted = formatForDisplay(value, decimals, locale);
|
|
217
188
|
if (typeof suffix === "string" && suffix.trim()) {
|
|
218
|
-
return
|
|
189
|
+
return `${formatted} ${suffix}`.trim();
|
|
219
190
|
}
|
|
220
191
|
return formatted || undefined;
|
|
221
192
|
}, [value, decimals, locale, suffix]);
|
|
222
193
|
|
|
223
194
|
// Shared sx for both stepper IconButtons. WCAG 2.5.8 AA floor (24×24),
|
|
224
195
|
// padding 0 so the icon centres without cropping.
|
|
225
|
-
|
|
196
|
+
const stepperSx = {
|
|
226
197
|
color: "var(--fg-muted)",
|
|
227
198
|
minWidth: STEPPER_HIT_AREA,
|
|
228
199
|
minHeight: STEPPER_HIT_AREA,
|
|
229
200
|
padding: 0
|
|
230
201
|
};
|
|
231
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_OutlinedInput
|
|
202
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_OutlinedInput.default, {
|
|
232
203
|
ref: ref,
|
|
233
204
|
type: "text",
|
|
234
205
|
inputMode: "decimal",
|
|
@@ -242,11 +213,11 @@ var NumberInput = /*#__PURE__*/React.forwardRef(function NumberInput(_ref, ref)
|
|
|
242
213
|
readOnly: readOnly,
|
|
243
214
|
error: !!error,
|
|
244
215
|
fullWidth: fullWidth,
|
|
245
|
-
startAdornment: prefix ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_InputAdornment
|
|
216
|
+
startAdornment: prefix ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_InputAdornment.default, {
|
|
246
217
|
position: "start",
|
|
247
218
|
children: prefix
|
|
248
219
|
}) : undefined,
|
|
249
|
-
endAdornment: suffix || showSpinner ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_InputAdornment
|
|
220
|
+
endAdornment: suffix || showSpinner ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_InputAdornment.default, {
|
|
250
221
|
position: "end",
|
|
251
222
|
sx: {
|
|
252
223
|
gap: 0.25
|
|
@@ -254,28 +225,24 @@ var NumberInput = /*#__PURE__*/React.forwardRef(function NumberInput(_ref, ref)
|
|
|
254
225
|
children: [suffix && /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
|
|
255
226
|
children: suffix
|
|
256
227
|
}), showSpinner && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
257
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton
|
|
228
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton.default, {
|
|
258
229
|
size: "small",
|
|
259
|
-
onClick:
|
|
260
|
-
return bumpBy(-step);
|
|
261
|
-
},
|
|
230
|
+
onClick: () => bumpBy(-step),
|
|
262
231
|
disabled: disabled || readOnly || typeof min === "number" && value != null && value <= min,
|
|
263
232
|
"aria-label": mergedLabels.decrement,
|
|
264
233
|
sx: stepperSx,
|
|
265
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Remove
|
|
234
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Remove.default, {
|
|
266
235
|
sx: {
|
|
267
236
|
fontSize: 14
|
|
268
237
|
}
|
|
269
238
|
})
|
|
270
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton
|
|
239
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton.default, {
|
|
271
240
|
size: "small",
|
|
272
|
-
onClick:
|
|
273
|
-
return bumpBy(+step);
|
|
274
|
-
},
|
|
241
|
+
onClick: () => bumpBy(+step),
|
|
275
242
|
disabled: disabled || readOnly || typeof max === "number" && value != null && value >= max,
|
|
276
243
|
"aria-label": mergedLabels.increment,
|
|
277
244
|
sx: stepperSx,
|
|
278
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Add
|
|
245
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Add.default, {
|
|
279
246
|
sx: {
|
|
280
247
|
fontSize: 14
|
|
281
248
|
}
|
|
@@ -290,28 +257,31 @@ var NumberInput = /*#__PURE__*/React.forwardRef(function NumberInput(_ref, ref)
|
|
|
290
257
|
// migrated for v9 alignment (audit Batch 3). Spread order
|
|
291
258
|
// preserved: consumer-supplied inputProps comes LAST so it
|
|
292
259
|
// can override aria-* attributes (same semantics as v5).
|
|
293
|
-
input:
|
|
260
|
+
input: {
|
|
294
261
|
role: "spinbutton",
|
|
295
|
-
"aria-valuenow": value
|
|
262
|
+
"aria-valuenow": value ?? undefined,
|
|
296
263
|
"aria-valuemin": min,
|
|
297
264
|
"aria-valuemax": max,
|
|
298
|
-
"aria-valuetext": ariaValueText
|
|
299
|
-
|
|
265
|
+
"aria-valuetext": ariaValueText,
|
|
266
|
+
...inputProps
|
|
267
|
+
}
|
|
300
268
|
},
|
|
301
|
-
sx:
|
|
269
|
+
sx: {
|
|
302
270
|
// R-T.3 — tabular-nums for vertical alignment in tables/forms
|
|
303
271
|
"& input": {
|
|
304
272
|
fontVariantNumeric: "tabular-nums",
|
|
305
273
|
textAlign: "right"
|
|
306
|
-
}
|
|
307
|
-
|
|
308
|
-
|
|
274
|
+
},
|
|
275
|
+
...sx
|
|
276
|
+
},
|
|
277
|
+
...rest
|
|
278
|
+
});
|
|
309
279
|
});
|
|
310
280
|
|
|
311
281
|
// Locale separators exported so callers can mirror exact display elsewhere
|
|
312
282
|
// without re-implementing. Kept for back-compat; for full locale-correct
|
|
313
283
|
// formatting prefer `Intl.NumberFormat(locale)` directly.
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
var _default = exports
|
|
284
|
+
const FR_DECIMAL_SEPARATOR = exports.FR_DECIMAL_SEPARATOR = FR_DECIMAL_SEP;
|
|
285
|
+
const FR_THOUSAND_SEPARATOR = exports.FR_THOUSAND_SEPARATOR = FR_THOUSAND_SEP;
|
|
286
|
+
var _default = exports.default = NumberInput;
|
|
317
287
|
//# sourceMappingURL=NumberInput.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NumberInput.js","names":["React","_interopRequireWildcard","require","_OutlinedInput","_interopRequireDefault","_InputAdornment","_IconButton","_Add","_Remove","_mergeLabels","_jsxRuntime","_excluded","obj","__esModule","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","TypeError","Number","_slicedToArray","arr","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","o","minLen","_arrayLikeToArray","n","toString","slice","constructor","name","Array","from","test","len","arr2","_i","iterator","_s","_e","_x","_r","_arr","_n","_d","next","done","err","isArray","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","sourceSymbolKeys","indexOf","propertyIsEnumerable","sourceKeys","FR_DECIMAL_SEP","FR_THOUSAND_SEP","STEPPER_HIT_AREA","DEFAULT_LABELS","freeze","decrement","increment","formatForDisplay","num","decimals","locale","isNaN","opts","minimumFractionDigits","maximumFractionDigits","Intl","NumberFormat","format","_unused","parseFromUser","str","cleaned","replace","isFinite","NumberInput","forwardRef","_ref","ref","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","mergedLabels","mergeLabels","_React$useState","useState","_React$useState2","display","setDisplay","_React$useState3","_React$useState4","focused","setFocused","useEffect","allowMinus","onUserChange","e","raw","re","parsed","clamp","out","handleBlur","clamped","violation","handleFocus","bumpBy","delta","onKeyDown","preventDefault","ariaValueText","useMemo","formatted","trim","concat","stepperSx","color","minWidth","minHeight","padding","jsx","type","inputMode","onFocus","startAdornment","position","children","endAdornment","jsxs","gap","Fragment","size","onClick","fontSize","slotProps","role","fontVariantNumeric","textAlign","FR_DECIMAL_SEPARATOR","exports","FR_THOUSAND_SEPARATOR","_default"],"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","_interopRequireWildcard","require","_OutlinedInput","_interopRequireDefault","_InputAdornment","_IconButton","_Add","_Remove","_mergeLabels","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","FR_DECIMAL_SEP","FR_THOUSAND_SEP","STEPPER_HIT_AREA","DEFAULT_LABELS","freeze","decrement","increment","formatForDisplay","num","decimals","locale","Number","isNaN","opts","minimumFractionDigits","maximumFractionDigits","Intl","NumberFormat","format","parseFromUser","str","cleaned","String","replace","isFinite","NumberInput","forwardRef","value","onChange","onBlur","min","max","step","placeholder","disabled","error","readOnly","fullWidth","showSpinner","prefix","suffix","inputProps","onValidate","labels","sx","rest","ref","mergedLabels","mergeLabels","display","setDisplay","useState","focused","setFocused","useEffect","allowMinus","onUserChange","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","jsx","type","inputMode","onFocus","startAdornment","position","children","endAdornment","jsxs","gap","Fragment","size","onClick","fontSize","slotProps","input","role","fontVariantNumeric","textAlign","FR_DECIMAL_SEPARATOR","exports","FR_THOUSAND_SEPARATOR","_default"],"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":[]}
|