@portnet/ui 6.0.1 → 6.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +737 -0
- package/dist/esm/index.js +90 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/v2/__tests__/AppMain.test.js +130 -0
- package/dist/esm/v2/__tests__/AppMain.test.js.map +1 -0
- package/dist/esm/v2/__tests__/ChartFigure.test.js +180 -0
- package/dist/esm/v2/__tests__/ChartFigure.test.js.map +1 -0
- package/dist/esm/v2/__tests__/DataGridRowActionsPropagation.test.js +150 -0
- package/dist/esm/v2/__tests__/DataGridRowActionsPropagation.test.js.map +1 -0
- package/dist/esm/v2/__tests__/DrawerTactileTargets.test.js +93 -0
- package/dist/esm/v2/__tests__/DrawerTactileTargets.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FieldError.test.js +71 -39
- package/dist/esm/v2/__tests__/FieldError.test.js.map +1 -1
- package/dist/esm/v2/__tests__/FieldNaming.test.js +160 -0
- package/dist/esm/v2/__tests__/FieldNaming.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FieldWidth.test.js +146 -0
- package/dist/esm/v2/__tests__/FieldWidth.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FileCard.test.js +18 -18
- package/dist/esm/v2/__tests__/FileCard.test.js.map +1 -1
- package/dist/esm/v2/__tests__/FormikCheckbox.test.js +173 -0
- package/dist/esm/v2/__tests__/FormikCheckbox.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js +236 -0
- package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FormikDisplayWidth.test.js +101 -0
- package/dist/esm/v2/__tests__/FormikDisplayWidth.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FormikRadioGroup.test.js +299 -0
- package/dist/esm/v2/__tests__/FormikRadioGroup.test.js.map +1 -0
- package/dist/esm/v2/__tests__/MobileRowCard.test.js +44 -43
- package/dist/esm/v2/__tests__/MobileRowCard.test.js.map +1 -1
- package/dist/esm/v2/__tests__/PreviewDrawer.test.js +165 -0
- package/dist/esm/v2/__tests__/PreviewDrawer.test.js.map +1 -0
- package/dist/esm/v2/__tests__/ReferentielFieldContainer.test.js +156 -0
- package/dist/esm/v2/__tests__/ReferentielFieldContainer.test.js.map +1 -0
- package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js +37 -52
- package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js.map +1 -1
- package/dist/esm/v2/__tests__/apiError.test.js +50 -69
- package/dist/esm/v2/__tests__/apiError.test.js.map +1 -1
- package/dist/esm/v2/__tests__/banned-patterns.test.js +41 -122
- package/dist/esm/v2/__tests__/banned-patterns.test.js.map +1 -1
- package/dist/esm/v2/__tests__/chart-palette.test.js +204 -0
- package/dist/esm/v2/__tests__/chart-palette.test.js.map +1 -0
- package/dist/esm/v2/__tests__/contrast-palette.test.js +42 -74
- package/dist/esm/v2/__tests__/contrast-palette.test.js.map +1 -1
- package/dist/esm/v2/__tests__/cssVariables.test.js +44 -51
- package/dist/esm/v2/__tests__/cssVariables.test.js.map +1 -1
- package/dist/esm/v2/__tests__/fileValidation.test.js +134 -0
- package/dist/esm/v2/__tests__/fileValidation.test.js.map +1 -0
- package/dist/esm/v2/__tests__/filterCriteria.test.js +321 -0
- package/dist/esm/v2/__tests__/filterCriteria.test.js.map +1 -0
- package/dist/esm/v2/__tests__/fmtDate.test.js +68 -0
- package/dist/esm/v2/__tests__/fmtDate.test.js.map +1 -0
- package/dist/esm/v2/__tests__/gap-leakage-refonte.test.js +218 -0
- package/dist/esm/v2/__tests__/gap-leakage-refonte.test.js.map +1 -0
- package/dist/esm/v2/__tests__/labels-merge.test.js +17 -22
- package/dist/esm/v2/__tests__/labels-merge.test.js.map +1 -1
- package/dist/esm/v2/__tests__/locale-fallback.test.js +35 -40
- package/dist/esm/v2/__tests__/locale-fallback.test.js.map +1 -1
- package/dist/esm/v2/__tests__/reviveSavedCriteria.test.js +143 -0
- package/dist/esm/v2/__tests__/reviveSavedCriteria.test.js.map +1 -0
- package/dist/esm/v2/__tests__/rowActions.test.js +182 -0
- package/dist/esm/v2/__tests__/rowActions.test.js.map +1 -0
- package/dist/esm/v2/__tests__/useFocusOnRouteChange.test.js +155 -0
- package/dist/esm/v2/__tests__/useFocusOnRouteChange.test.js.map +1 -0
- package/dist/esm/v2/__tests__/useFocusTrap.test.js +266 -402
- package/dist/esm/v2/__tests__/useFocusTrap.test.js.map +1 -1
- package/dist/esm/v2/__tests__/usePrefersReducedMotion.test.js +120 -0
- package/dist/esm/v2/__tests__/usePrefersReducedMotion.test.js.map +1 -0
- package/dist/esm/v2/components/Accordion.js +48 -70
- package/dist/esm/v2/components/Accordion.js.map +1 -1
- package/dist/esm/v2/components/ActionStrip.js +31 -43
- package/dist/esm/v2/components/ActionStrip.js.map +1 -1
- package/dist/esm/v2/components/Banner.js +25 -22
- package/dist/esm/v2/components/Banner.js.map +1 -1
- package/dist/esm/v2/components/Busy.js +14 -19
- package/dist/esm/v2/components/Busy.js.map +1 -1
- package/dist/esm/v2/components/Button.js +34 -45
- package/dist/esm/v2/components/Button.js.map +1 -1
- package/dist/esm/v2/components/CategoryTag.js +44 -27
- package/dist/esm/v2/components/CategoryTag.js.map +1 -1
- package/dist/esm/v2/components/Checkbox.js +32 -38
- package/dist/esm/v2/components/Checkbox.js.map +1 -1
- package/dist/esm/v2/components/Chip.js +23 -36
- package/dist/esm/v2/components/Chip.js.map +1 -1
- package/dist/esm/v2/components/Combobox.js +112 -136
- package/dist/esm/v2/components/Combobox.js.map +1 -1
- package/dist/esm/v2/components/CommandPalette.js +113 -198
- package/dist/esm/v2/components/CommandPalette.js.map +1 -1
- package/dist/esm/v2/components/ConfirmDialog.js +36 -45
- package/dist/esm/v2/components/ConfirmDialog.js.map +1 -1
- package/dist/esm/v2/components/DatePicker.js +78 -81
- package/dist/esm/v2/components/DatePicker.js.map +1 -1
- package/dist/esm/v2/components/DateRangePicker.js +63 -74
- package/dist/esm/v2/components/DateRangePicker.js.map +1 -1
- package/dist/esm/v2/components/DateTimePicker.js +118 -90
- package/dist/esm/v2/components/DateTimePicker.js.map +1 -1
- package/dist/esm/v2/components/Drawer.js +71 -65
- package/dist/esm/v2/components/Drawer.js.map +1 -1
- package/dist/esm/v2/components/Dropzone.js +130 -177
- package/dist/esm/v2/components/Dropzone.js.map +1 -1
- package/dist/esm/v2/components/EmptyState.js +9 -9
- package/dist/esm/v2/components/EmptyState.js.map +1 -1
- package/dist/esm/v2/components/FavoriteToggle.js +24 -33
- package/dist/esm/v2/components/FavoriteToggle.js.map +1 -1
- package/dist/esm/v2/components/Field.js +210 -52
- package/dist/esm/v2/components/Field.js.map +1 -1
- package/dist/esm/v2/components/FieldError.js +9 -13
- package/dist/esm/v2/components/FieldError.js.map +1 -1
- package/dist/esm/v2/components/FieldHelp.js +28 -49
- package/dist/esm/v2/components/FieldHelp.js.map +1 -1
- package/dist/esm/v2/components/FileCard.js +14 -19
- package/dist/esm/v2/components/FileCard.js.map +1 -1
- package/dist/esm/v2/components/FilterTab.js +22 -31
- package/dist/esm/v2/components/FilterTab.js.map +1 -1
- package/dist/esm/v2/components/ForbiddenPage.js +28 -8
- package/dist/esm/v2/components/ForbiddenPage.js.map +1 -1
- package/dist/esm/v2/components/FormGrid.js +48 -54
- package/dist/esm/v2/components/FormGrid.js.map +1 -1
- package/dist/esm/v2/components/FormikDisplay.js +98 -24
- package/dist/esm/v2/components/FormikDisplay.js.map +1 -1
- package/dist/esm/v2/components/Input.js +75 -34
- package/dist/esm/v2/components/Input.js.map +1 -1
- package/dist/esm/v2/components/KPICard.js +42 -51
- package/dist/esm/v2/components/KPICard.js.map +1 -1
- package/dist/esm/v2/components/KPIStrip.js +9 -15
- package/dist/esm/v2/components/KPIStrip.js.map +1 -1
- package/dist/esm/v2/components/KV.js +16 -23
- package/dist/esm/v2/components/KV.js.map +1 -1
- package/dist/esm/v2/components/KVGrid.js +15 -23
- package/dist/esm/v2/components/KVGrid.js.map +1 -1
- package/dist/esm/v2/components/Layout.js +81 -117
- package/dist/esm/v2/components/Layout.js.map +1 -1
- package/dist/esm/v2/components/MobileRowCard.js +64 -75
- package/dist/esm/v2/components/MobileRowCard.js.map +1 -1
- package/dist/esm/v2/components/Modal.js +44 -53
- package/dist/esm/v2/components/Modal.js.map +1 -1
- package/dist/esm/v2/components/NetworkErrorPage.js +28 -11
- package/dist/esm/v2/components/NetworkErrorPage.js.map +1 -1
- package/dist/esm/v2/components/NotFoundPage.js +28 -9
- package/dist/esm/v2/components/NotFoundPage.js.map +1 -1
- package/dist/esm/v2/components/NumberInput.js +77 -107
- package/dist/esm/v2/components/NumberInput.js.map +1 -1
- package/dist/esm/v2/components/OverflowMenu.js +24 -42
- package/dist/esm/v2/components/OverflowMenu.js.map +1 -1
- package/dist/esm/v2/components/PdfViewer.js +24 -33
- package/dist/esm/v2/components/PdfViewer.js.map +1 -1
- package/dist/esm/v2/components/ProgressBar.js +28 -36
- package/dist/esm/v2/components/ProgressBar.js.map +1 -1
- package/dist/esm/v2/components/Radio.js +49 -57
- package/dist/esm/v2/components/Radio.js.map +1 -1
- package/dist/esm/v2/components/SectionErrorBoundary.js +84 -130
- package/dist/esm/v2/components/SectionErrorBoundary.js.map +1 -1
- package/dist/esm/v2/components/SectionHeader.js +24 -31
- package/dist/esm/v2/components/SectionHeader.js.map +1 -1
- package/dist/esm/v2/components/Segmented.js +59 -84
- package/dist/esm/v2/components/Segmented.js.map +1 -1
- package/dist/esm/v2/components/Select.js +100 -138
- package/dist/esm/v2/components/Select.js.map +1 -1
- package/dist/esm/v2/components/ServerErrorPage.js +27 -10
- package/dist/esm/v2/components/ServerErrorPage.js.map +1 -1
- package/dist/esm/v2/components/Skeleton.js +81 -96
- package/dist/esm/v2/components/Skeleton.js.map +1 -1
- package/dist/esm/v2/components/SkipLink.js +6 -7
- package/dist/esm/v2/components/SkipLink.js.map +1 -1
- package/dist/esm/v2/components/Spinner.js +13 -22
- package/dist/esm/v2/components/Spinner.js.map +1 -1
- package/dist/esm/v2/components/Status.js +14 -25
- package/dist/esm/v2/components/Status.js.map +1 -1
- package/dist/esm/v2/components/Stepper.js +68 -71
- package/dist/esm/v2/components/Stepper.js.map +1 -1
- package/dist/esm/v2/components/Surface.js +25 -44
- package/dist/esm/v2/components/Surface.js.map +1 -1
- package/dist/esm/v2/components/Switch.js +21 -29
- package/dist/esm/v2/components/Switch.js.map +1 -1
- package/dist/esm/v2/components/TabPanel.js +84 -0
- package/dist/esm/v2/components/TabPanel.js.map +1 -0
- package/dist/esm/v2/components/Tabs.js +43 -19
- package/dist/esm/v2/components/Tabs.js.map +1 -1
- package/dist/esm/v2/components/TelInput.js +75 -108
- package/dist/esm/v2/components/TelInput.js.map +1 -1
- package/dist/esm/v2/components/Textarea.js +21 -30
- package/dist/esm/v2/components/Textarea.js.map +1 -1
- package/dist/esm/v2/components/TimePicker.js +59 -69
- package/dist/esm/v2/components/TimePicker.js.map +1 -1
- package/dist/esm/v2/components/Toast.js +109 -163
- package/dist/esm/v2/components/Toast.js.map +1 -1
- package/dist/esm/v2/components/Tooltip.js +18 -31
- package/dist/esm/v2/components/Tooltip.js.map +1 -1
- package/dist/esm/v2/components/_ErrorPageBody.js +6 -5
- package/dist/esm/v2/components/_ErrorPageBody.js.map +1 -1
- package/dist/esm/v2/components/_pickerShared.js +2 -2
- package/dist/esm/v2/components/_pickerShared.js.map +1 -1
- package/dist/esm/v2/components/index.js +64 -0
- package/dist/esm/v2/components/index.js.map +1 -1
- package/dist/esm/v2/hooks/index.js +62 -0
- package/dist/esm/v2/hooks/index.js.map +1 -1
- package/dist/esm/v2/hooks/useAppliedFilters.js +112 -0
- package/dist/esm/v2/hooks/useAppliedFilters.js.map +1 -0
- package/dist/esm/v2/hooks/useDebouncedCallback.js +82 -0
- package/dist/esm/v2/hooks/useDebouncedCallback.js.map +1 -0
- package/dist/esm/v2/hooks/useDelayedFlag.js +5 -19
- package/dist/esm/v2/hooks/useDelayedFlag.js.map +1 -1
- package/dist/esm/v2/hooks/useDensity.js +13 -17
- package/dist/esm/v2/hooks/useDensity.js.map +1 -1
- package/dist/esm/v2/hooks/useFocusFirstError.js +25 -33
- package/dist/esm/v2/hooks/useFocusFirstError.js.map +1 -1
- package/dist/esm/v2/hooks/useFocusOnRouteChange.js +81 -0
- package/dist/esm/v2/hooks/useFocusOnRouteChange.js.map +1 -0
- package/dist/esm/v2/hooks/useFocusTrap.js +19 -23
- package/dist/esm/v2/hooks/useFocusTrap.js.map +1 -1
- package/dist/esm/v2/hooks/useFormAutoSave.js +38 -53
- package/dist/esm/v2/hooks/useFormAutoSave.js.map +1 -1
- package/dist/esm/v2/hooks/useFormCompletionProgress.js +32 -51
- package/dist/esm/v2/hooks/useFormCompletionProgress.js.map +1 -1
- package/dist/esm/v2/hooks/useKeyboardShortcuts.js +125 -0
- package/dist/esm/v2/hooks/useKeyboardShortcuts.js.map +1 -0
- package/dist/esm/v2/hooks/usePrefersReducedMotion.js +99 -0
- package/dist/esm/v2/hooks/usePrefersReducedMotion.js.map +1 -0
- package/dist/esm/v2/hooks/useResolvedDensity.js +2 -10
- package/dist/esm/v2/hooks/useResolvedDensity.js.map +1 -1
- package/dist/esm/v2/hooks/useSortedRows.js +3 -5
- package/dist/esm/v2/hooks/useSortedRows.js.map +1 -1
- package/dist/esm/v2/hooks/useTabLoading.js +6 -21
- package/dist/esm/v2/hooks/useTabLoading.js.map +1 -1
- package/dist/esm/v2/index.js +14 -4
- package/dist/esm/v2/index.js.map +1 -1
- package/dist/esm/v2/modalContext.js +2 -2
- package/dist/esm/v2/modalContext.js.map +1 -1
- package/dist/esm/v2/models/favorite.js.map +1 -1
- package/dist/esm/v2/models/personalization.js.map +1 -1
- package/dist/esm/v2/models/referentiel.js.map +1 -1
- package/dist/esm/v2/models/savedFilter.js.map +1 -1
- package/dist/esm/v2/patterns/ActionBar.js +115 -159
- package/dist/esm/v2/patterns/ActionBar.js.map +1 -1
- package/dist/esm/v2/patterns/AppMain.js +108 -0
- package/dist/esm/v2/patterns/AppMain.js.map +1 -0
- package/dist/esm/v2/patterns/BulkActionBar.js +31 -34
- package/dist/esm/v2/patterns/BulkActionBar.js.map +1 -1
- package/dist/esm/v2/patterns/ChartFigure.js +151 -0
- package/dist/esm/v2/patterns/ChartFigure.js.map +1 -0
- package/dist/esm/v2/patterns/CollapsibleDataGrid.js +111 -152
- package/dist/esm/v2/patterns/CollapsibleDataGrid.js.map +1 -1
- package/dist/esm/v2/patterns/ColumnsToggle.js +43 -77
- package/dist/esm/v2/patterns/ColumnsToggle.js.map +1 -1
- package/dist/esm/v2/patterns/DataGrid.js +221 -255
- package/dist/esm/v2/patterns/DataGrid.js.map +1 -1
- package/dist/esm/v2/patterns/DataGridSettingsMenu.js +76 -94
- package/dist/esm/v2/patterns/DataGridSettingsMenu.js.map +1 -1
- package/dist/esm/v2/patterns/DataGridToolbar.js +85 -89
- package/dist/esm/v2/patterns/DataGridToolbar.js.map +1 -1
- package/dist/esm/v2/patterns/DataGridVirtualized.js +141 -182
- package/dist/esm/v2/patterns/DataGridVirtualized.js.map +1 -1
- package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js +26 -30
- package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
- package/dist/esm/v2/patterns/DetailSplit.js +108 -0
- package/dist/esm/v2/patterns/DetailSplit.js.map +1 -0
- package/dist/esm/v2/patterns/FavoriteColumn.js +26 -75
- package/dist/esm/v2/patterns/FavoriteColumn.js.map +1 -1
- package/dist/esm/v2/patterns/FavoritesFilter.js +30 -39
- package/dist/esm/v2/patterns/FavoritesFilter.js.map +1 -1
- package/dist/esm/v2/patterns/FilterTabBar.js +112 -0
- package/dist/esm/v2/patterns/FilterTabBar.js.map +1 -0
- package/dist/esm/v2/patterns/FormErrorSummary.js +12 -13
- package/dist/esm/v2/patterns/FormErrorSummary.js.map +1 -1
- package/dist/esm/v2/patterns/FormPageShell.js +43 -41
- package/dist/esm/v2/patterns/FormPageShell.js.map +1 -1
- package/dist/esm/v2/patterns/FormSection.js +30 -38
- package/dist/esm/v2/patterns/FormSection.js.map +1 -1
- package/dist/esm/v2/patterns/FormikCheckbox.js +130 -0
- package/dist/esm/v2/patterns/FormikCheckbox.js.map +1 -0
- package/dist/esm/v2/patterns/FormikCheckboxGroup.js +56 -60
- package/dist/esm/v2/patterns/FormikCheckboxGroup.js.map +1 -1
- package/dist/esm/v2/patterns/FormikCombobox.js +51 -66
- package/dist/esm/v2/patterns/FormikCombobox.js.map +1 -1
- package/dist/esm/v2/patterns/FormikDatePicker.js +51 -99
- package/dist/esm/v2/patterns/FormikDatePicker.js.map +1 -1
- package/dist/esm/v2/patterns/FormikDateTimePicker.js +136 -0
- package/dist/esm/v2/patterns/FormikDateTimePicker.js.map +1 -0
- package/dist/esm/v2/patterns/FormikErrorFocus.js +22 -23
- package/dist/esm/v2/patterns/FormikErrorFocus.js.map +1 -1
- package/dist/esm/v2/patterns/FormikErrorSummary.js +89 -0
- package/dist/esm/v2/patterns/FormikErrorSummary.js.map +1 -0
- package/dist/esm/v2/patterns/FormikFile.js +94 -78
- package/dist/esm/v2/patterns/FormikFile.js.map +1 -1
- package/dist/esm/v2/patterns/FormikInput.js +40 -50
- package/dist/esm/v2/patterns/FormikInput.js.map +1 -1
- package/dist/esm/v2/patterns/FormikRadioGroup.js +129 -0
- package/dist/esm/v2/patterns/FormikRadioGroup.js.map +1 -0
- package/dist/esm/v2/patterns/FormikReferentielField.js +49 -59
- package/dist/esm/v2/patterns/FormikReferentielField.js.map +1 -1
- package/dist/esm/v2/patterns/FormikSelect.js +64 -84
- package/dist/esm/v2/patterns/FormikSelect.js.map +1 -1
- package/dist/esm/v2/patterns/FormikTextarea.js +30 -43
- package/dist/esm/v2/patterns/FormikTextarea.js.map +1 -1
- package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js +64 -65
- package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
- package/dist/esm/v2/patterns/NetworkErrorBanner.js +6 -7
- package/dist/esm/v2/patterns/NetworkErrorBanner.js.map +1 -1
- package/dist/esm/v2/patterns/PageContent.js +10 -14
- package/dist/esm/v2/patterns/PageContent.js.map +1 -1
- package/dist/esm/v2/patterns/PreviewDrawer.js +153 -0
- package/dist/esm/v2/patterns/PreviewDrawer.js.map +1 -0
- package/dist/esm/v2/patterns/ReferentielField.js +327 -312
- package/dist/esm/v2/patterns/ReferentielField.js.map +1 -1
- package/dist/esm/v2/patterns/RowFavoriteToggle.js +127 -0
- package/dist/esm/v2/patterns/RowFavoriteToggle.js.map +1 -0
- package/dist/esm/v2/patterns/SaveFilterDialog.js +38 -66
- package/dist/esm/v2/patterns/SaveFilterDialog.js.map +1 -1
- package/dist/esm/v2/patterns/SavedFiltersMenu.js +62 -81
- package/dist/esm/v2/patterns/SavedFiltersMenu.js.map +1 -1
- package/dist/esm/v2/patterns/SkeletonPageShell.js +106 -129
- package/dist/esm/v2/patterns/SkeletonPageShell.js.map +1 -1
- package/dist/esm/v2/patterns/SortableHeader.js +22 -45
- package/dist/esm/v2/patterns/SortableHeader.js.map +1 -1
- package/dist/esm/v2/patterns/Tour.js +94 -120
- package/dist/esm/v2/patterns/Tour.js.map +1 -1
- package/dist/esm/v2/patterns/_dataGridShared.js +107 -128
- package/dist/esm/v2/patterns/_dataGridShared.js.map +1 -1
- package/dist/esm/v2/patterns/_pickerSerialisation.js +72 -0
- package/dist/esm/v2/patterns/_pickerSerialisation.js.map +1 -0
- package/dist/esm/v2/patterns/_sort.js +17 -33
- package/dist/esm/v2/patterns/_sort.js.map +1 -1
- package/dist/esm/v2/patterns/_useColumnReorder.js +122 -160
- package/dist/esm/v2/patterns/_useColumnReorder.js.map +1 -1
- package/dist/esm/v2/patterns/_useColumnResize.js +78 -96
- package/dist/esm/v2/patterns/_useColumnResize.js.map +1 -1
- package/dist/esm/v2/patterns/filterCriteria.js +102 -0
- package/dist/esm/v2/patterns/filterCriteria.js.map +1 -0
- package/dist/esm/v2/patterns/index.js +235 -0
- package/dist/esm/v2/patterns/index.js.map +1 -1
- package/dist/esm/v2/patterns/rowActions.js +223 -0
- package/dist/esm/v2/patterns/rowActions.js.map +1 -0
- package/dist/esm/v2/personalization/PersonalizationProvider.js +50 -47
- package/dist/esm/v2/personalization/PersonalizationProvider.js.map +1 -1
- package/dist/esm/v2/personalization/adapters/_storageKey.js +5 -5
- package/dist/esm/v2/personalization/adapters/_storageKey.js.map +1 -1
- package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js +22 -23
- package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
- package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js +13 -13
- package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
- package/dist/esm/v2/personalization/capabilities/favorites.js +36 -60
- package/dist/esm/v2/personalization/capabilities/favorites.js.map +1 -1
- package/dist/esm/v2/personalization/capabilities/favoritesView.js +22 -34
- package/dist/esm/v2/personalization/capabilities/favoritesView.js.map +1 -1
- package/dist/esm/v2/personalization/capabilities/gridPreferences.js +203 -0
- package/dist/esm/v2/personalization/capabilities/gridPreferences.js.map +1 -0
- package/dist/esm/v2/personalization/capabilities/index.js +5 -0
- package/dist/esm/v2/personalization/capabilities/index.js.map +1 -1
- package/dist/esm/v2/personalization/capabilities/reviveSavedCriteria.js +119 -0
- package/dist/esm/v2/personalization/capabilities/reviveSavedCriteria.js.map +1 -0
- package/dist/esm/v2/personalization/capabilities/savedFilters.js +90 -98
- package/dist/esm/v2/personalization/capabilities/savedFilters.js.map +1 -1
- package/dist/esm/v2/personalization/createPersonalizationStore.js +78 -181
- package/dist/esm/v2/personalization/createPersonalizationStore.js.map +1 -1
- package/dist/esm/v2/personalization/index.js +35 -0
- package/dist/esm/v2/personalization/index.js.map +1 -1
- package/dist/esm/v2/personalization/personalizationContext.js +9 -9
- package/dist/esm/v2/personalization/personalizationContext.js.map +1 -1
- package/dist/esm/v2/personalization/schema.js +8 -9
- package/dist/esm/v2/personalization/schema.js.map +1 -1
- package/dist/esm/v2/referentiel/ReferentielProvider.js +27 -42
- package/dist/esm/v2/referentiel/ReferentielProvider.js.map +1 -1
- package/dist/esm/v2/referentiel/types.js +2 -0
- package/dist/esm/v2/referentiel/types.js.map +1 -0
- package/dist/esm/v2/referentiel/useReferentielClient.js +10 -11
- package/dist/esm/v2/referentiel/useReferentielClient.js.map +1 -1
- package/dist/esm/v2/referentiel/useReferentielOptions.js +60 -117
- package/dist/esm/v2/referentiel/useReferentielOptions.js.map +1 -1
- package/dist/esm/v2/referentiel/useReferentielSearch.js +37 -91
- package/dist/esm/v2/referentiel/useReferentielSearch.js.map +1 -1
- package/dist/esm/v2/theme/_brand.js +8 -24
- package/dist/esm/v2/theme/_brand.js.map +1 -1
- package/dist/esm/v2/theme/_brandSecondary.js +8 -24
- package/dist/esm/v2/theme/_brandSecondary.js.map +1 -1
- package/dist/esm/v2/theme/createPortnetTheme.js +51 -61
- package/dist/esm/v2/theme/createPortnetTheme.js.map +1 -1
- package/dist/esm/v2/theme/cssVariables.js +62 -69
- package/dist/esm/v2/theme/cssVariables.js.map +1 -1
- package/dist/esm/v2/theme/index.js +5 -5
- package/dist/esm/v2/theme/index.js.map +1 -1
- package/dist/esm/v2/tokens/breakpoints.js +14 -14
- package/dist/esm/v2/tokens/breakpoints.js.map +1 -1
- package/dist/esm/v2/tokens/chart.js +261 -0
- package/dist/esm/v2/tokens/chart.js.map +1 -0
- package/dist/esm/v2/tokens/colors.js +22 -22
- package/dist/esm/v2/tokens/colors.js.map +1 -1
- package/dist/esm/v2/tokens/density.js +62 -7
- package/dist/esm/v2/tokens/density.js.map +1 -1
- package/dist/esm/v2/tokens/index.js +49 -34
- package/dist/esm/v2/tokens/index.js.map +1 -1
- package/dist/esm/v2/tokens/motion.js +12 -20
- package/dist/esm/v2/tokens/motion.js.map +1 -1
- package/dist/esm/v2/tokens/radius.js +1 -1
- package/dist/esm/v2/tokens/radius.js.map +1 -1
- package/dist/esm/v2/tokens/shadows.js +6 -6
- package/dist/esm/v2/tokens/shadows.js.map +1 -1
- package/dist/esm/v2/tokens/spacing.js +2 -2
- package/dist/esm/v2/tokens/spacing.js.map +1 -1
- package/dist/esm/v2/tokens/state.js +1 -1
- package/dist/esm/v2/tokens/state.js.map +1 -1
- package/dist/esm/v2/tokens/statusPalette.js +17 -21
- package/dist/esm/v2/tokens/statusPalette.js.map +1 -1
- package/dist/esm/v2/tokens/tokens.json +6 -1
- package/dist/esm/v2/tokens/typography.js +13 -13
- package/dist/esm/v2/tokens/typography.js.map +1 -1
- package/dist/esm/v2/tokens/zIndex.js +1 -1
- package/dist/esm/v2/tokens/zIndex.js.map +1 -1
- package/dist/esm/v2/types/datagrid.js.map +1 -1
- package/dist/esm/v2/utils/apiError.js +16 -37
- package/dist/esm/v2/utils/apiError.js.map +1 -1
- package/dist/esm/v2/utils/contrast.js +31 -32
- package/dist/esm/v2/utils/contrast.js.map +1 -1
- package/dist/esm/v2/utils/cx.js +5 -25
- package/dist/esm/v2/utils/cx.js.map +1 -1
- package/dist/esm/v2/utils/fileDownload.js +23 -26
- package/dist/esm/v2/utils/fileDownload.js.map +1 -1
- package/dist/esm/v2/utils/fileValidation.js +209 -0
- package/dist/esm/v2/utils/fileValidation.js.map +1 -0
- package/dist/esm/v2/utils/fmtDate.js +111 -0
- package/dist/esm/v2/utils/fmtDate.js.map +1 -0
- package/dist/esm/v2/utils/fmtMoney.js +8 -10
- package/dist/esm/v2/utils/fmtMoney.js.map +1 -1
- package/dist/esm/v2/utils/formikErrors.js +78 -0
- package/dist/esm/v2/utils/formikErrors.js.map +1 -0
- package/dist/esm/v2/utils/index.js +35 -2
- package/dist/esm/v2/utils/index.js.map +1 -1
- package/dist/esm/v2/utils/mergeLabels.js +7 -12
- package/dist/esm/v2/utils/mergeLabels.js.map +1 -1
- package/dist/esm/v2/utils/networkStatus.js +12 -12
- package/dist/esm/v2/utils/networkStatus.js.map +1 -1
- package/dist/index.d.ts +9 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +122 -47
- package/dist/index.js.map +1 -1
- package/dist/v2/__tests__/AppMain.test.js +133 -0
- package/dist/v2/__tests__/AppMain.test.js.map +1 -0
- package/dist/v2/__tests__/ChartFigure.test.js +183 -0
- package/dist/v2/__tests__/ChartFigure.test.js.map +1 -0
- package/dist/v2/__tests__/DataGridRowActionsPropagation.test.js +153 -0
- package/dist/v2/__tests__/DataGridRowActionsPropagation.test.js.map +1 -0
- package/dist/v2/__tests__/DrawerTactileTargets.test.js +94 -0
- package/dist/v2/__tests__/DrawerTactileTargets.test.js.map +1 -0
- package/dist/v2/__tests__/FieldError.test.js +98 -69
- package/dist/v2/__tests__/FieldError.test.js.map +1 -1
- package/dist/v2/__tests__/FieldNaming.test.js +161 -0
- package/dist/v2/__tests__/FieldNaming.test.js.map +1 -0
- package/dist/v2/__tests__/FieldWidth.test.js +148 -0
- package/dist/v2/__tests__/FieldWidth.test.js.map +1 -0
- package/dist/v2/__tests__/FileCard.test.js +45 -48
- package/dist/v2/__tests__/FileCard.test.js.map +1 -1
- package/dist/v2/__tests__/FormikCheckbox.test.js +175 -0
- package/dist/v2/__tests__/FormikCheckbox.test.js.map +1 -0
- package/dist/v2/__tests__/FormikDateTimePicker.test.js +237 -0
- package/dist/v2/__tests__/FormikDateTimePicker.test.js.map +1 -0
- package/dist/v2/__tests__/FormikDisplayWidth.test.js +102 -0
- package/dist/v2/__tests__/FormikDisplayWidth.test.js.map +1 -0
- package/dist/v2/__tests__/FormikRadioGroup.test.js +300 -0
- package/dist/v2/__tests__/FormikRadioGroup.test.js.map +1 -0
- package/dist/v2/__tests__/MobileRowCard.test.js +100 -102
- package/dist/v2/__tests__/MobileRowCard.test.js.map +1 -1
- package/dist/v2/__tests__/PreviewDrawer.test.js +169 -0
- package/dist/v2/__tests__/PreviewDrawer.test.js.map +1 -0
- package/dist/v2/__tests__/ReferentielFieldContainer.test.js +159 -0
- package/dist/v2/__tests__/ReferentielFieldContainer.test.js.map +1 -0
- package/dist/v2/__tests__/SectionErrorBoundary.test.js +53 -68
- package/dist/v2/__tests__/SectionErrorBoundary.test.js.map +1 -1
- package/dist/v2/__tests__/apiError.test.js +50 -69
- package/dist/v2/__tests__/apiError.test.js.map +1 -1
- package/dist/v2/__tests__/banned-patterns.test.js +42 -123
- package/dist/v2/__tests__/banned-patterns.test.js.map +1 -1
- package/dist/v2/__tests__/chart-palette.test.js +205 -0
- package/dist/v2/__tests__/chart-palette.test.js.map +1 -0
- package/dist/v2/__tests__/contrast-palette.test.js +42 -74
- package/dist/v2/__tests__/contrast-palette.test.js.map +1 -1
- package/dist/v2/__tests__/cssVariables.test.js +44 -51
- package/dist/v2/__tests__/cssVariables.test.js.map +1 -1
- package/dist/v2/__tests__/fileValidation.test.js +136 -0
- package/dist/v2/__tests__/fileValidation.test.js.map +1 -0
- package/dist/v2/__tests__/filterCriteria.test.js +324 -0
- package/dist/v2/__tests__/filterCriteria.test.js.map +1 -0
- package/dist/v2/__tests__/fmtDate.test.js +69 -0
- package/dist/v2/__tests__/fmtDate.test.js.map +1 -0
- package/dist/v2/__tests__/gap-leakage-refonte.test.js +221 -0
- package/dist/v2/__tests__/gap-leakage-refonte.test.js.map +1 -0
- package/dist/v2/__tests__/labels-merge.test.js +38 -46
- package/dist/v2/__tests__/labels-merge.test.js.map +1 -1
- package/dist/v2/__tests__/locale-fallback.test.js +47 -52
- package/dist/v2/__tests__/locale-fallback.test.js.map +1 -1
- package/dist/v2/__tests__/reviveSavedCriteria.test.js +144 -0
- package/dist/v2/__tests__/reviveSavedCriteria.test.js.map +1 -0
- package/dist/v2/__tests__/rowActions.test.js +186 -0
- package/dist/v2/__tests__/rowActions.test.js.map +1 -0
- package/dist/v2/__tests__/useFocusOnRouteChange.test.js +156 -0
- package/dist/v2/__tests__/useFocusOnRouteChange.test.js.map +1 -0
- package/dist/v2/__tests__/useFocusTrap.test.js +270 -407
- package/dist/v2/__tests__/useFocusTrap.test.js.map +1 -1
- package/dist/v2/__tests__/usePrefersReducedMotion.test.js +123 -0
- package/dist/v2/__tests__/usePrefersReducedMotion.test.js.map +1 -0
- package/dist/v2/components/Accordion.js +60 -82
- package/dist/v2/components/Accordion.js.map +1 -1
- package/dist/v2/components/ActionStrip.js +40 -52
- package/dist/v2/components/ActionStrip.js.map +1 -1
- package/dist/v2/components/Banner.js +42 -41
- package/dist/v2/components/Banner.js.map +1 -1
- package/dist/v2/components/Busy.js +22 -27
- package/dist/v2/components/Busy.js.map +1 -1
- package/dist/v2/components/Button.js +39 -50
- package/dist/v2/components/Button.js.map +1 -1
- package/dist/v2/components/CategoryTag.d.ts.map +1 -1
- package/dist/v2/components/CategoryTag.js +49 -32
- package/dist/v2/components/CategoryTag.js.map +1 -1
- package/dist/v2/components/Checkbox.js +39 -45
- package/dist/v2/components/Checkbox.js.map +1 -1
- package/dist/v2/components/Chip.js +29 -42
- package/dist/v2/components/Chip.js.map +1 -1
- package/dist/v2/components/Combobox.js +122 -144
- package/dist/v2/components/Combobox.js.map +1 -1
- package/dist/v2/components/CommandPalette.js +138 -225
- package/dist/v2/components/CommandPalette.js.map +1 -1
- package/dist/v2/components/ConfirmDialog.js +46 -56
- package/dist/v2/components/ConfirmDialog.js.map +1 -1
- package/dist/v2/components/DatePicker.js +81 -86
- package/dist/v2/components/DatePicker.js.map +1 -1
- package/dist/v2/components/DateRangePicker.js +77 -87
- package/dist/v2/components/DateRangePicker.js.map +1 -1
- package/dist/v2/components/DateTimePicker.d.ts.map +1 -1
- package/dist/v2/components/DateTimePicker.js +121 -95
- package/dist/v2/components/DateTimePicker.js.map +1 -1
- package/dist/v2/components/Drawer.d.ts.map +1 -1
- package/dist/v2/components/Drawer.js +93 -88
- package/dist/v2/components/Drawer.js.map +1 -1
- package/dist/v2/components/Dropzone.js +150 -196
- package/dist/v2/components/Dropzone.js.map +1 -1
- package/dist/v2/components/EmptyState.js +18 -20
- package/dist/v2/components/EmptyState.js.map +1 -1
- package/dist/v2/components/FavoriteToggle.js +28 -39
- package/dist/v2/components/FavoriteToggle.js.map +1 -1
- package/dist/v2/components/Field.d.ts +121 -5
- package/dist/v2/components/Field.d.ts.map +1 -1
- package/dist/v2/components/Field.js +221 -62
- package/dist/v2/components/Field.js.map +1 -1
- package/dist/v2/components/FieldError.js +18 -21
- package/dist/v2/components/FieldError.js.map +1 -1
- package/dist/v2/components/FieldHelp.js +40 -60
- package/dist/v2/components/FieldHelp.js.map +1 -1
- package/dist/v2/components/FileCard.js +27 -31
- package/dist/v2/components/FileCard.js.map +1 -1
- package/dist/v2/components/FilterTab.js +30 -38
- package/dist/v2/components/FilterTab.js.map +1 -1
- package/dist/v2/components/ForbiddenPage.d.ts +25 -1
- package/dist/v2/components/ForbiddenPage.d.ts.map +1 -1
- package/dist/v2/components/ForbiddenPage.js +37 -17
- package/dist/v2/components/ForbiddenPage.js.map +1 -1
- package/dist/v2/components/FormGrid.js +53 -59
- package/dist/v2/components/FormGrid.js.map +1 -1
- package/dist/v2/components/FormikDisplay.d.ts +50 -1
- package/dist/v2/components/FormikDisplay.d.ts.map +1 -1
- package/dist/v2/components/FormikDisplay.js +108 -33
- package/dist/v2/components/FormikDisplay.js.map +1 -1
- package/dist/v2/components/Input.d.ts +40 -0
- package/dist/v2/components/Input.d.ts.map +1 -1
- package/dist/v2/components/Input.js +81 -41
- package/dist/v2/components/Input.js.map +1 -1
- package/dist/v2/components/KPICard.js +57 -67
- package/dist/v2/components/KPICard.js.map +1 -1
- package/dist/v2/components/KPIStrip.js +16 -22
- package/dist/v2/components/KPIStrip.js.map +1 -1
- package/dist/v2/components/KV.js +25 -31
- package/dist/v2/components/KV.js.map +1 -1
- package/dist/v2/components/KVGrid.js +19 -26
- package/dist/v2/components/KVGrid.js.map +1 -1
- package/dist/v2/components/Layout.js +91 -120
- package/dist/v2/components/Layout.js.map +1 -1
- package/dist/v2/components/MobileRowCard.js +79 -91
- package/dist/v2/components/MobileRowCard.js.map +1 -1
- package/dist/v2/components/Modal.js +61 -69
- package/dist/v2/components/Modal.js.map +1 -1
- package/dist/v2/components/NetworkErrorPage.d.ts +19 -1
- package/dist/v2/components/NetworkErrorPage.d.ts.map +1 -1
- package/dist/v2/components/NetworkErrorPage.js +38 -21
- package/dist/v2/components/NetworkErrorPage.js.map +1 -1
- package/dist/v2/components/NotFoundPage.d.ts +17 -1
- package/dist/v2/components/NotFoundPage.d.ts.map +1 -1
- package/dist/v2/components/NotFoundPage.js +37 -18
- package/dist/v2/components/NotFoundPage.js.map +1 -1
- package/dist/v2/components/NumberInput.js +88 -118
- package/dist/v2/components/NumberInput.js.map +1 -1
- package/dist/v2/components/OverflowMenu.js +38 -56
- package/dist/v2/components/OverflowMenu.js.map +1 -1
- package/dist/v2/components/PdfViewer.js +34 -45
- package/dist/v2/components/PdfViewer.js.map +1 -1
- package/dist/v2/components/ProgressBar.js +42 -49
- package/dist/v2/components/ProgressBar.js.map +1 -1
- package/dist/v2/components/Radio.js +59 -67
- package/dist/v2/components/Radio.js.map +1 -1
- package/dist/v2/components/SectionErrorBoundary.js +90 -135
- package/dist/v2/components/SectionErrorBoundary.js.map +1 -1
- package/dist/v2/components/SectionHeader.js +34 -41
- package/dist/v2/components/SectionHeader.js.map +1 -1
- package/dist/v2/components/Segmented.js +69 -93
- package/dist/v2/components/Segmented.js.map +1 -1
- package/dist/v2/components/Select.d.ts +26 -2
- package/dist/v2/components/Select.d.ts.map +1 -1
- package/dist/v2/components/Select.js +120 -155
- package/dist/v2/components/Select.js.map +1 -1
- package/dist/v2/components/ServerErrorPage.d.ts +27 -1
- package/dist/v2/components/ServerErrorPage.d.ts.map +1 -1
- package/dist/v2/components/ServerErrorPage.js +37 -20
- package/dist/v2/components/ServerErrorPage.js.map +1 -1
- package/dist/v2/components/Skeleton.js +86 -100
- package/dist/v2/components/Skeleton.js.map +1 -1
- package/dist/v2/components/SkipLink.js +9 -12
- package/dist/v2/components/SkipLink.js.map +1 -1
- package/dist/v2/components/Spinner.js +16 -25
- package/dist/v2/components/Spinner.js.map +1 -1
- package/dist/v2/components/Status.js +18 -29
- package/dist/v2/components/Status.js.map +1 -1
- package/dist/v2/components/Stepper.js +80 -82
- package/dist/v2/components/Stepper.js.map +1 -1
- package/dist/v2/components/Surface.js +34 -49
- package/dist/v2/components/Surface.js.map +1 -1
- package/dist/v2/components/Switch.js +29 -37
- package/dist/v2/components/Switch.js.map +1 -1
- package/dist/v2/components/TabPanel.d.ts +17 -0
- package/dist/v2/components/TabPanel.d.ts.map +1 -0
- package/dist/v2/components/TabPanel.js +90 -0
- package/dist/v2/components/TabPanel.js.map +1 -0
- package/dist/v2/components/Tabs.d.ts +25 -0
- package/dist/v2/components/Tabs.d.ts.map +1 -1
- package/dist/v2/components/Tabs.js +53 -29
- package/dist/v2/components/Tabs.js.map +1 -1
- package/dist/v2/components/TelInput.js +80 -115
- package/dist/v2/components/TelInput.js.map +1 -1
- package/dist/v2/components/Textarea.js +26 -35
- package/dist/v2/components/Textarea.js.map +1 -1
- package/dist/v2/components/TimePicker.js +62 -74
- package/dist/v2/components/TimePicker.js.map +1 -1
- package/dist/v2/components/Toast.js +119 -174
- package/dist/v2/components/Toast.js.map +1 -1
- package/dist/v2/components/Tooltip.js +23 -38
- package/dist/v2/components/Tooltip.js.map +1 -1
- package/dist/v2/components/_ErrorPageBody.js +15 -16
- package/dist/v2/components/_ErrorPageBody.js.map +1 -1
- package/dist/v2/components/_pickerShared.js +5 -5
- package/dist/v2/components/_pickerShared.js.map +1 -1
- package/dist/v2/components/index.d.ts +67 -1
- package/dist/v2/components/index.d.ts.map +1 -1
- package/dist/v2/components/index.js +153 -136
- package/dist/v2/components/index.js.map +1 -1
- package/dist/v2/hooks/index.d.ts +65 -0
- package/dist/v2/hooks/index.d.ts.map +1 -1
- package/dist/v2/hooks/index.js +63 -24
- package/dist/v2/hooks/index.js.map +1 -1
- package/dist/v2/hooks/useAppliedFilters.d.ts +102 -0
- package/dist/v2/hooks/useAppliedFilters.d.ts.map +1 -0
- package/dist/v2/hooks/useAppliedFilters.js +117 -0
- package/dist/v2/hooks/useAppliedFilters.js.map +1 -0
- package/dist/v2/hooks/useDebouncedCallback.d.ts +64 -0
- package/dist/v2/hooks/useDebouncedCallback.d.ts.map +1 -0
- package/dist/v2/hooks/useDebouncedCallback.js +87 -0
- package/dist/v2/hooks/useDebouncedCallback.js.map +1 -0
- package/dist/v2/hooks/useDelayedFlag.js +6 -20
- package/dist/v2/hooks/useDelayedFlag.js.map +1 -1
- package/dist/v2/hooks/useDensity.d.ts.map +1 -1
- package/dist/v2/hooks/useDensity.js +14 -18
- package/dist/v2/hooks/useDensity.js.map +1 -1
- package/dist/v2/hooks/useFocusFirstError.js +26 -34
- package/dist/v2/hooks/useFocusFirstError.js.map +1 -1
- package/dist/v2/hooks/useFocusOnRouteChange.d.ts +65 -0
- package/dist/v2/hooks/useFocusOnRouteChange.d.ts.map +1 -0
- package/dist/v2/hooks/useFocusOnRouteChange.js +88 -0
- package/dist/v2/hooks/useFocusOnRouteChange.js.map +1 -0
- package/dist/v2/hooks/useFocusTrap.js +20 -24
- package/dist/v2/hooks/useFocusTrap.js.map +1 -1
- package/dist/v2/hooks/useFormAutoSave.d.ts +4 -4
- package/dist/v2/hooks/useFormAutoSave.d.ts.map +1 -1
- package/dist/v2/hooks/useFormAutoSave.js +39 -54
- package/dist/v2/hooks/useFormAutoSave.js.map +1 -1
- package/dist/v2/hooks/useFormCompletionProgress.d.ts +1 -1
- package/dist/v2/hooks/useFormCompletionProgress.d.ts.map +1 -1
- package/dist/v2/hooks/useFormCompletionProgress.js +33 -52
- package/dist/v2/hooks/useFormCompletionProgress.js.map +1 -1
- package/dist/v2/hooks/useKeyboardShortcuts.d.ts +25 -0
- package/dist/v2/hooks/useKeyboardShortcuts.d.ts.map +1 -0
- package/dist/v2/hooks/useKeyboardShortcuts.js +132 -0
- package/dist/v2/hooks/useKeyboardShortcuts.js.map +1 -0
- package/dist/v2/hooks/usePrefersReducedMotion.d.ts +56 -0
- package/dist/v2/hooks/usePrefersReducedMotion.d.ts.map +1 -0
- package/dist/v2/hooks/usePrefersReducedMotion.js +105 -0
- package/dist/v2/hooks/usePrefersReducedMotion.js.map +1 -0
- package/dist/v2/hooks/useResolvedDensity.js +5 -13
- package/dist/v2/hooks/useResolvedDensity.js.map +1 -1
- package/dist/v2/hooks/useSortedRows.js +4 -6
- package/dist/v2/hooks/useSortedRows.js.map +1 -1
- package/dist/v2/hooks/useTabLoading.js +7 -22
- package/dist/v2/hooks/useTabLoading.js.map +1 -1
- package/dist/v2/index.d.ts.map +1 -1
- package/dist/v2/index.js +143 -145
- package/dist/v2/index.js.map +1 -1
- package/dist/v2/modalContext.js +2 -2
- package/dist/v2/modalContext.js.map +1 -1
- package/dist/v2/models/favorite.d.ts +8 -9
- package/dist/v2/models/favorite.d.ts.map +1 -1
- package/dist/v2/models/favorite.js.map +1 -1
- package/dist/v2/models/index.js +4 -4
- package/dist/v2/models/index.js.map +1 -1
- package/dist/v2/models/personalization.d.ts +44 -48
- package/dist/v2/models/personalization.d.ts.map +1 -1
- package/dist/v2/models/personalization.js.map +1 -1
- package/dist/v2/models/referentiel.d.ts +32 -50
- package/dist/v2/models/referentiel.d.ts.map +1 -1
- package/dist/v2/models/referentiel.js.map +1 -1
- package/dist/v2/models/savedFilter.d.ts +8 -17
- package/dist/v2/models/savedFilter.d.ts.map +1 -1
- package/dist/v2/models/savedFilter.js.map +1 -1
- package/dist/v2/patterns/ActionBar.js +152 -187
- package/dist/v2/patterns/ActionBar.js.map +1 -1
- package/dist/v2/patterns/AppMain.d.ts +109 -0
- package/dist/v2/patterns/AppMain.d.ts.map +1 -0
- package/dist/v2/patterns/AppMain.js +115 -0
- package/dist/v2/patterns/AppMain.js.map +1 -0
- package/dist/v2/patterns/BulkActionBar.js +40 -42
- package/dist/v2/patterns/BulkActionBar.js.map +1 -1
- package/dist/v2/patterns/ChartFigure.d.ts +124 -0
- package/dist/v2/patterns/ChartFigure.d.ts.map +1 -0
- package/dist/v2/patterns/ChartFigure.js +159 -0
- package/dist/v2/patterns/ChartFigure.js.map +1 -0
- package/dist/v2/patterns/CollapsibleDataGrid.js +138 -174
- package/dist/v2/patterns/CollapsibleDataGrid.js.map +1 -1
- package/dist/v2/patterns/ColumnsToggle.js +60 -94
- package/dist/v2/patterns/ColumnsToggle.js.map +1 -1
- package/dist/v2/patterns/DataGrid.d.ts.map +1 -1
- package/dist/v2/patterns/DataGrid.js +262 -297
- package/dist/v2/patterns/DataGrid.js.map +1 -1
- package/dist/v2/patterns/DataGridSettingsMenu.d.ts +12 -0
- package/dist/v2/patterns/DataGridSettingsMenu.d.ts.map +1 -1
- package/dist/v2/patterns/DataGridSettingsMenu.js +104 -121
- package/dist/v2/patterns/DataGridSettingsMenu.js.map +1 -1
- package/dist/v2/patterns/DataGridToolbar.js +103 -106
- package/dist/v2/patterns/DataGridToolbar.js.map +1 -1
- package/dist/v2/patterns/DataGridVirtualized.js +179 -217
- package/dist/v2/patterns/DataGridVirtualized.js.map +1 -1
- package/dist/v2/patterns/DeleteResourceConfirmDialog.js +32 -35
- package/dist/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
- package/dist/v2/patterns/DetailSplit.d.ts +87 -0
- package/dist/v2/patterns/DetailSplit.d.ts.map +1 -0
- package/dist/v2/patterns/DetailSplit.js +116 -0
- package/dist/v2/patterns/DetailSplit.js.map +1 -0
- package/dist/v2/patterns/FavoriteColumn.d.ts +9 -9
- package/dist/v2/patterns/FavoriteColumn.d.ts.map +1 -1
- package/dist/v2/patterns/FavoriteColumn.js +32 -80
- package/dist/v2/patterns/FavoriteColumn.js.map +1 -1
- package/dist/v2/patterns/FavoritesFilter.js +36 -44
- package/dist/v2/patterns/FavoritesFilter.js.map +1 -1
- package/dist/v2/patterns/FilterTabBar.d.ts +28 -0
- package/dist/v2/patterns/FilterTabBar.d.ts.map +1 -0
- package/dist/v2/patterns/FilterTabBar.js +120 -0
- package/dist/v2/patterns/FilterTabBar.js.map +1 -0
- package/dist/v2/patterns/FormErrorSummary.js +20 -23
- package/dist/v2/patterns/FormErrorSummary.js.map +1 -1
- package/dist/v2/patterns/FormPageShell.js +53 -50
- package/dist/v2/patterns/FormPageShell.js.map +1 -1
- package/dist/v2/patterns/FormSection.d.ts +8 -3
- package/dist/v2/patterns/FormSection.d.ts.map +1 -1
- package/dist/v2/patterns/FormSection.js +44 -51
- package/dist/v2/patterns/FormSection.js.map +1 -1
- package/dist/v2/patterns/FormikCheckbox.d.ts +77 -0
- package/dist/v2/patterns/FormikCheckbox.d.ts.map +1 -0
- package/dist/v2/patterns/FormikCheckbox.js +138 -0
- package/dist/v2/patterns/FormikCheckbox.js.map +1 -0
- package/dist/v2/patterns/FormikCheckboxGroup.d.ts +17 -1
- package/dist/v2/patterns/FormikCheckboxGroup.d.ts.map +1 -1
- package/dist/v2/patterns/FormikCheckboxGroup.js +62 -65
- package/dist/v2/patterns/FormikCheckboxGroup.js.map +1 -1
- package/dist/v2/patterns/FormikCombobox.d.ts +7 -1
- package/dist/v2/patterns/FormikCombobox.d.ts.map +1 -1
- package/dist/v2/patterns/FormikCombobox.js +55 -69
- package/dist/v2/patterns/FormikCombobox.js.map +1 -1
- package/dist/v2/patterns/FormikDatePicker.d.ts +13 -1
- package/dist/v2/patterns/FormikDatePicker.d.ts.map +1 -1
- package/dist/v2/patterns/FormikDatePicker.js +59 -106
- package/dist/v2/patterns/FormikDatePicker.js.map +1 -1
- package/dist/v2/patterns/FormikDateTimePicker.d.ts +111 -0
- package/dist/v2/patterns/FormikDateTimePicker.d.ts.map +1 -0
- package/dist/v2/patterns/FormikDateTimePicker.js +144 -0
- package/dist/v2/patterns/FormikDateTimePicker.js.map +1 -0
- package/dist/v2/patterns/FormikErrorFocus.js +25 -26
- package/dist/v2/patterns/FormikErrorFocus.js.map +1 -1
- package/dist/v2/patterns/FormikErrorSummary.d.ts +74 -0
- package/dist/v2/patterns/FormikErrorSummary.d.ts.map +1 -0
- package/dist/v2/patterns/FormikErrorSummary.js +97 -0
- package/dist/v2/patterns/FormikErrorSummary.js.map +1 -0
- package/dist/v2/patterns/FormikFile.d.ts +14 -1
- package/dist/v2/patterns/FormikFile.d.ts.map +1 -1
- package/dist/v2/patterns/FormikFile.js +99 -83
- package/dist/v2/patterns/FormikFile.js.map +1 -1
- package/dist/v2/patterns/FormikInput.d.ts +11 -1
- package/dist/v2/patterns/FormikInput.d.ts.map +1 -1
- package/dist/v2/patterns/FormikInput.js +45 -55
- package/dist/v2/patterns/FormikInput.js.map +1 -1
- package/dist/v2/patterns/FormikRadioGroup.d.ts +80 -0
- package/dist/v2/patterns/FormikRadioGroup.d.ts.map +1 -0
- package/dist/v2/patterns/FormikRadioGroup.js +137 -0
- package/dist/v2/patterns/FormikRadioGroup.js.map +1 -0
- package/dist/v2/patterns/FormikReferentielField.d.ts +12 -1
- package/dist/v2/patterns/FormikReferentielField.d.ts.map +1 -1
- package/dist/v2/patterns/FormikReferentielField.js +54 -64
- package/dist/v2/patterns/FormikReferentielField.js.map +1 -1
- package/dist/v2/patterns/FormikSelect.d.ts +9 -1
- package/dist/v2/patterns/FormikSelect.d.ts.map +1 -1
- package/dist/v2/patterns/FormikSelect.js +70 -89
- package/dist/v2/patterns/FormikSelect.js.map +1 -1
- package/dist/v2/patterns/FormikTextarea.d.ts +9 -1
- package/dist/v2/patterns/FormikTextarea.d.ts.map +1 -1
- package/dist/v2/patterns/FormikTextarea.js +35 -48
- package/dist/v2/patterns/FormikTextarea.js.map +1 -1
- package/dist/v2/patterns/KeyboardShortcutsHelp.d.ts +14 -1
- package/dist/v2/patterns/KeyboardShortcutsHelp.d.ts.map +1 -1
- package/dist/v2/patterns/KeyboardShortcutsHelp.js +71 -74
- package/dist/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
- package/dist/v2/patterns/NetworkErrorBanner.js +13 -16
- package/dist/v2/patterns/NetworkErrorBanner.js.map +1 -1
- package/dist/v2/patterns/PageContent.js +17 -20
- package/dist/v2/patterns/PageContent.js.map +1 -1
- package/dist/v2/patterns/PreviewDrawer.d.ts +49 -0
- package/dist/v2/patterns/PreviewDrawer.d.ts.map +1 -0
- package/dist/v2/patterns/PreviewDrawer.js +159 -0
- package/dist/v2/patterns/PreviewDrawer.js.map +1 -0
- package/dist/v2/patterns/ReferentielField.d.ts +86 -2
- package/dist/v2/patterns/ReferentielField.d.ts.map +1 -1
- package/dist/v2/patterns/ReferentielField.js +347 -327
- package/dist/v2/patterns/ReferentielField.js.map +1 -1
- package/dist/v2/patterns/RowFavoriteToggle.d.ts +98 -0
- package/dist/v2/patterns/RowFavoriteToggle.d.ts.map +1 -0
- package/dist/v2/patterns/RowFavoriteToggle.js +135 -0
- package/dist/v2/patterns/RowFavoriteToggle.js.map +1 -0
- package/dist/v2/patterns/SaveFilterDialog.js +50 -77
- package/dist/v2/patterns/SaveFilterDialog.js.map +1 -1
- package/dist/v2/patterns/SavedFiltersMenu.js +89 -107
- package/dist/v2/patterns/SavedFiltersMenu.js.map +1 -1
- package/dist/v2/patterns/SkeletonPageShell.js +122 -143
- package/dist/v2/patterns/SkeletonPageShell.js.map +1 -1
- package/dist/v2/patterns/SortableHeader.js +35 -57
- package/dist/v2/patterns/SortableHeader.js.map +1 -1
- package/dist/v2/patterns/Tour.js +121 -142
- package/dist/v2/patterns/Tour.js.map +1 -1
- package/dist/v2/patterns/_dataGridShared.d.ts.map +1 -1
- package/dist/v2/patterns/_dataGridShared.js +131 -147
- package/dist/v2/patterns/_dataGridShared.js.map +1 -1
- package/dist/v2/patterns/_pickerSerialisation.d.ts +44 -0
- package/dist/v2/patterns/_pickerSerialisation.d.ts.map +1 -0
- package/dist/v2/patterns/_pickerSerialisation.js +80 -0
- package/dist/v2/patterns/_pickerSerialisation.js.map +1 -0
- package/dist/v2/patterns/_sort.js +17 -33
- package/dist/v2/patterns/_sort.js.map +1 -1
- package/dist/v2/patterns/_useColumnReorder.js +124 -163
- package/dist/v2/patterns/_useColumnReorder.js.map +1 -1
- package/dist/v2/patterns/_useColumnResize.js +80 -99
- package/dist/v2/patterns/_useColumnResize.js.map +1 -1
- package/dist/v2/patterns/filterCriteria.d.ts +78 -0
- package/dist/v2/patterns/filterCriteria.d.ts.map +1 -0
- package/dist/v2/patterns/filterCriteria.js +110 -0
- package/dist/v2/patterns/filterCriteria.js.map +1 -0
- package/dist/v2/patterns/index.d.ts +247 -0
- package/dist/v2/patterns/index.d.ts.map +1 -1
- package/dist/v2/patterns/index.js +182 -70
- package/dist/v2/patterns/index.js.map +1 -1
- package/dist/v2/patterns/rowActions.d.ts +150 -0
- package/dist/v2/patterns/rowActions.d.ts.map +1 -0
- package/dist/v2/patterns/rowActions.js +232 -0
- package/dist/v2/patterns/rowActions.js.map +1 -0
- package/dist/v2/personalization/PersonalizationProvider.d.ts.map +1 -1
- package/dist/v2/personalization/PersonalizationProvider.js +57 -53
- package/dist/v2/personalization/PersonalizationProvider.js.map +1 -1
- package/dist/v2/personalization/adapters/_storageKey.js +5 -5
- package/dist/v2/personalization/adapters/_storageKey.js.map +1 -1
- package/dist/v2/personalization/adapters/createLocalStorageAdapter.js +25 -24
- package/dist/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
- package/dist/v2/personalization/adapters/createMemoryAdapter.js +14 -14
- package/dist/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
- package/dist/v2/personalization/adapters/index.js +5 -5
- package/dist/v2/personalization/adapters/index.js.map +1 -1
- package/dist/v2/personalization/capabilities/favorites.js +39 -62
- package/dist/v2/personalization/capabilities/favorites.js.map +1 -1
- package/dist/v2/personalization/capabilities/favoritesView.js +25 -37
- package/dist/v2/personalization/capabilities/favoritesView.js.map +1 -1
- package/dist/v2/personalization/capabilities/gridPreferences.d.ts +100 -0
- package/dist/v2/personalization/capabilities/gridPreferences.d.ts.map +1 -0
- package/dist/v2/personalization/capabilities/gridPreferences.js +210 -0
- package/dist/v2/personalization/capabilities/gridPreferences.js.map +1 -0
- package/dist/v2/personalization/capabilities/index.d.ts +6 -0
- package/dist/v2/personalization/capabilities/index.d.ts.map +1 -1
- package/dist/v2/personalization/capabilities/index.js +23 -10
- package/dist/v2/personalization/capabilities/index.js.map +1 -1
- package/dist/v2/personalization/capabilities/reviveSavedCriteria.d.ts +88 -0
- package/dist/v2/personalization/capabilities/reviveSavedCriteria.d.ts.map +1 -0
- package/dist/v2/personalization/capabilities/reviveSavedCriteria.js +126 -0
- package/dist/v2/personalization/capabilities/reviveSavedCriteria.js.map +1 -0
- package/dist/v2/personalization/capabilities/savedFilters.js +93 -100
- package/dist/v2/personalization/capabilities/savedFilters.js.map +1 -1
- package/dist/v2/personalization/createPersonalizationStore.d.ts.map +1 -1
- package/dist/v2/personalization/createPersonalizationStore.js +81 -182
- package/dist/v2/personalization/createPersonalizationStore.js.map +1 -1
- package/dist/v2/personalization/index.d.ts +34 -0
- package/dist/v2/personalization/index.d.ts.map +1 -1
- package/dist/v2/personalization/index.js +41 -21
- package/dist/v2/personalization/index.js.map +1 -1
- package/dist/v2/personalization/personalizationContext.js +10 -12
- package/dist/v2/personalization/personalizationContext.js.map +1 -1
- package/dist/v2/personalization/schema.js +8 -9
- package/dist/v2/personalization/schema.js.map +1 -1
- package/dist/v2/referentiel/ReferentielProvider.js +31 -45
- package/dist/v2/referentiel/ReferentielProvider.js.map +1 -1
- package/dist/v2/referentiel/index.js +11 -13
- package/dist/v2/referentiel/index.js.map +1 -1
- package/dist/v2/referentiel/types.d.ts +105 -0
- package/dist/v2/referentiel/types.d.ts.map +1 -0
- package/dist/v2/referentiel/types.js +6 -0
- package/dist/v2/referentiel/types.js.map +1 -0
- package/dist/v2/referentiel/useReferentielClient.js +13 -16
- package/dist/v2/referentiel/useReferentielClient.js.map +1 -1
- package/dist/v2/referentiel/useReferentielOptions.d.ts +7 -17
- package/dist/v2/referentiel/useReferentielOptions.d.ts.map +1 -1
- package/dist/v2/referentiel/useReferentielOptions.js +63 -120
- package/dist/v2/referentiel/useReferentielOptions.js.map +1 -1
- package/dist/v2/referentiel/useReferentielSearch.d.ts +7 -48
- package/dist/v2/referentiel/useReferentielSearch.d.ts.map +1 -1
- package/dist/v2/referentiel/useReferentielSearch.js +40 -95
- package/dist/v2/referentiel/useReferentielSearch.js.map +1 -1
- package/dist/v2/theme/_brand.js +12 -26
- package/dist/v2/theme/_brand.js.map +1 -1
- package/dist/v2/theme/_brandSecondary.js +12 -26
- package/dist/v2/theme/_brandSecondary.js.map +1 -1
- package/dist/v2/theme/createPortnetTheme.js +41 -49
- package/dist/v2/theme/createPortnetTheme.js.map +1 -1
- package/dist/v2/theme/cssVariables.d.ts +3 -3
- package/dist/v2/theme/cssVariables.d.ts.map +1 -1
- package/dist/v2/theme/cssVariables.js +65 -70
- package/dist/v2/theme/cssVariables.js.map +1 -1
- package/dist/v2/theme/index.js +10 -10
- package/dist/v2/theme/index.js.map +1 -1
- package/dist/v2/tokens/breakpoints.js +16 -16
- package/dist/v2/tokens/breakpoints.js.map +1 -1
- package/dist/v2/tokens/chart.d.ts +103 -0
- package/dist/v2/tokens/chart.d.ts.map +1 -0
- package/dist/v2/tokens/chart.js +270 -0
- package/dist/v2/tokens/chart.js.map +1 -0
- package/dist/v2/tokens/colors.js +24 -24
- package/dist/v2/tokens/colors.js.map +1 -1
- package/dist/v2/tokens/density.d.ts +104 -0
- package/dist/v2/tokens/density.d.ts.map +1 -1
- package/dist/v2/tokens/density.js +67 -12
- package/dist/v2/tokens/density.js.map +1 -1
- package/dist/v2/tokens/index.d.ts +50 -1
- package/dist/v2/tokens/index.d.ts.map +1 -1
- package/dist/v2/tokens/index.js +116 -68
- package/dist/v2/tokens/index.js.map +1 -1
- package/dist/v2/tokens/motion.js +16 -22
- package/dist/v2/tokens/motion.js.map +1 -1
- package/dist/v2/tokens/radius.js +3 -3
- package/dist/v2/tokens/radius.js.map +1 -1
- package/dist/v2/tokens/shadows.js +8 -8
- package/dist/v2/tokens/shadows.js.map +1 -1
- package/dist/v2/tokens/spacing.js +4 -4
- package/dist/v2/tokens/spacing.js.map +1 -1
- package/dist/v2/tokens/state.js +3 -3
- package/dist/v2/tokens/state.js.map +1 -1
- package/dist/v2/tokens/statusPalette.js +21 -23
- package/dist/v2/tokens/statusPalette.js.map +1 -1
- package/dist/v2/tokens/tokens.json +6 -1
- package/dist/v2/tokens/typography.js +15 -15
- package/dist/v2/tokens/typography.js.map +1 -1
- package/dist/v2/tokens/zIndex.js +3 -3
- package/dist/v2/tokens/zIndex.js.map +1 -1
- package/dist/v2/types/datagrid.d.ts +9 -1
- package/dist/v2/types/datagrid.d.ts.map +1 -1
- package/dist/v2/types/datagrid.js.map +1 -1
- package/dist/v2/types/index.js +2 -2
- package/dist/v2/types/index.js.map +1 -1
- package/dist/v2/utils/apiError.js +16 -37
- package/dist/v2/utils/apiError.js.map +1 -1
- package/dist/v2/utils/contrast.js +31 -32
- package/dist/v2/utils/contrast.js.map +1 -1
- package/dist/v2/utils/cx.js +7 -27
- package/dist/v2/utils/cx.js.map +1 -1
- package/dist/v2/utils/fileDownload.js +25 -28
- package/dist/v2/utils/fileDownload.js.map +1 -1
- package/dist/v2/utils/fileValidation.d.ts +116 -0
- package/dist/v2/utils/fileValidation.d.ts.map +1 -0
- package/dist/v2/utils/fileValidation.js +220 -0
- package/dist/v2/utils/fileValidation.js.map +1 -0
- package/dist/v2/utils/fmtDate.d.ts +103 -0
- package/dist/v2/utils/fmtDate.d.ts.map +1 -0
- package/dist/v2/utils/fmtDate.js +119 -0
- package/dist/v2/utils/fmtDate.js.map +1 -0
- package/dist/v2/utils/fmtMoney.d.ts +3 -3
- package/dist/v2/utils/fmtMoney.d.ts.map +1 -1
- package/dist/v2/utils/fmtMoney.js +9 -11
- package/dist/v2/utils/fmtMoney.js.map +1 -1
- package/dist/v2/utils/formikErrors.d.ts +67 -0
- package/dist/v2/utils/formikErrors.d.ts.map +1 -0
- package/dist/v2/utils/formikErrors.js +85 -0
- package/dist/v2/utils/formikErrors.js.map +1 -0
- package/dist/v2/utils/index.d.ts +5 -0
- package/dist/v2/utils/index.d.ts.map +1 -1
- package/dist/v2/utils/index.js +67 -18
- package/dist/v2/utils/index.js.map +1 -1
- package/dist/v2/utils/mergeLabels.js +9 -14
- package/dist/v2/utils/mergeLabels.js.map +1 -1
- package/dist/v2/utils/networkStatus.js +14 -14
- package/dist/v2/utils/networkStatus.js.map +1 -1
- package/package.json +26 -9
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _fmtDate = require("../utils/fmtDate");
|
|
4
|
+
/* Local time, deliberately (see the file header): the assertions below build
|
|
5
|
+
* their expectations from a local-time Date so the suite passes in any CI
|
|
6
|
+
* timezone. Where an ISO instant is used as input, only the parts that cannot
|
|
7
|
+
* shift with the zone are asserted. */
|
|
8
|
+
|
|
9
|
+
describe("fmtDate", () => {
|
|
10
|
+
it("formats a Date as DD/MM/YYYY", () => {
|
|
11
|
+
expect((0, _fmtDate.fmtDate)(new Date(2026, 2, 5))).toBe("05/03/2026");
|
|
12
|
+
});
|
|
13
|
+
it("pads day and month to two digits", () => {
|
|
14
|
+
expect((0, _fmtDate.fmtDate)(new Date(2026, 0, 9))).toBe("09/01/2026");
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
/* THE DEFECT THIS EXISTS FOR. Every module copy fed `new Date(undefined)`
|
|
18
|
+
* into `getDate()`, whose accessors all return NaN — so an optional date
|
|
19
|
+
* field rendered the literal "NaN/NaN/NaN". */
|
|
20
|
+
it("never renders NaN for an absent or unparseable value", () => {
|
|
21
|
+
expect((0, _fmtDate.fmtDate)(undefined)).toBe("—");
|
|
22
|
+
expect((0, _fmtDate.fmtDate)(null)).toBe("—");
|
|
23
|
+
expect((0, _fmtDate.fmtDate)("")).toBe("—");
|
|
24
|
+
expect((0, _fmtDate.fmtDate)("pas une date")).toBe("—");
|
|
25
|
+
expect((0, _fmtDate.fmtDate)(new Date("nope"))).toBe("—");
|
|
26
|
+
expect((0, _fmtDate.fmtDate)(undefined)).not.toContain("NaN");
|
|
27
|
+
expect((0, _fmtDate.fmtDateTime)(undefined)).not.toContain("NaN");
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
/* An absent date must be DISTINGUISHABLE from a cell that failed to render,
|
|
31
|
+
* which an empty string is not. */
|
|
32
|
+
it("marks absence with an em dash by default", () => {
|
|
33
|
+
expect((0, _fmtDate.fmtDate)(null)).toBe("—");
|
|
34
|
+
});
|
|
35
|
+
it("accepts a caller-chosen absence mark, for a deliberately empty cell", () => {
|
|
36
|
+
expect((0, _fmtDate.fmtDate)(null, {
|
|
37
|
+
absent: ""
|
|
38
|
+
})).toBe("");
|
|
39
|
+
expect((0, _fmtDate.fmtDateTime)(null, {
|
|
40
|
+
absent: ""
|
|
41
|
+
})).toBe("");
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
/* `new Date(0)` is a real instant (1970) while `new Date("")` is Invalid: a
|
|
45
|
+
* falsy guard would conflate them, so epoch 0 must survive. */
|
|
46
|
+
it("treats epoch 0 as a date, not as absent", () => {
|
|
47
|
+
expect((0, _fmtDate.fmtDate)(0)).not.toBe("—");
|
|
48
|
+
expect((0, _fmtDate.fmtDate)(0)).toMatch(/^\d{2}\/\d{2}\/19(69|70)$/);
|
|
49
|
+
});
|
|
50
|
+
it("parses an ISO string from the API", () => {
|
|
51
|
+
// Day can shift with the runner's zone; the month and year cannot here.
|
|
52
|
+
expect((0, _fmtDate.fmtDate)("2026-03-05T12:00:00Z")).toMatch(/^\d{2}\/03\/2026$/);
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
describe("fmtDateTime", () => {
|
|
56
|
+
it("formats a Date as DD/MM/YYYY HH:mm", () => {
|
|
57
|
+
expect((0, _fmtDate.fmtDateTime)(new Date(2026, 2, 5, 14, 30))).toBe("05/03/2026 14:30");
|
|
58
|
+
});
|
|
59
|
+
it("pads hours and minutes", () => {
|
|
60
|
+
expect((0, _fmtDate.fmtDateTime)(new Date(2026, 2, 5, 9, 5))).toBe("05/03/2026 09:05");
|
|
61
|
+
});
|
|
62
|
+
it("omits seconds", () => {
|
|
63
|
+
expect((0, _fmtDate.fmtDateTime)(new Date(2026, 2, 5, 14, 30, 59))).toBe("05/03/2026 14:30");
|
|
64
|
+
});
|
|
65
|
+
it("renders midnight as 00:00, not as absent", () => {
|
|
66
|
+
expect((0, _fmtDate.fmtDateTime)(new Date(2026, 2, 5, 0, 0))).toBe("05/03/2026 00:00");
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
//# sourceMappingURL=fmtDate.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fmtDate.test.js","names":["_fmtDate","require","describe","it","expect","fmtDate","Date","toBe","undefined","not","toContain","fmtDateTime","absent","toMatch"],"sources":["../../../src/lib/v2/__tests__/fmtDate.test.ts"],"sourcesContent":["import { fmtDate, fmtDateTime } from \"../utils/fmtDate\";\r\n\r\n/* Local time, deliberately (see the file header): the assertions below build\r\n * their expectations from a local-time Date so the suite passes in any CI\r\n * timezone. Where an ISO instant is used as input, only the parts that cannot\r\n * shift with the zone are asserted. */\r\n\r\ndescribe(\"fmtDate\", () => {\r\n it(\"formats a Date as DD/MM/YYYY\", () => {\r\n expect(fmtDate(new Date(2026, 2, 5))).toBe(\"05/03/2026\");\r\n });\r\n\r\n it(\"pads day and month to two digits\", () => {\r\n expect(fmtDate(new Date(2026, 0, 9))).toBe(\"09/01/2026\");\r\n });\r\n\r\n /* THE DEFECT THIS EXISTS FOR. Every module copy fed `new Date(undefined)`\r\n * into `getDate()`, whose accessors all return NaN — so an optional date\r\n * field rendered the literal \"NaN/NaN/NaN\". */\r\n it(\"never renders NaN for an absent or unparseable value\", () => {\r\n expect(fmtDate(undefined)).toBe(\"—\");\r\n expect(fmtDate(null)).toBe(\"—\");\r\n expect(fmtDate(\"\")).toBe(\"—\");\r\n expect(fmtDate(\"pas une date\")).toBe(\"—\");\r\n expect(fmtDate(new Date(\"nope\"))).toBe(\"—\");\r\n\r\n expect(fmtDate(undefined)).not.toContain(\"NaN\");\r\n expect(fmtDateTime(undefined)).not.toContain(\"NaN\");\r\n });\r\n\r\n /* An absent date must be DISTINGUISHABLE from a cell that failed to render,\r\n * which an empty string is not. */\r\n it(\"marks absence with an em dash by default\", () => {\r\n expect(fmtDate(null)).toBe(\"—\");\r\n });\r\n\r\n it(\"accepts a caller-chosen absence mark, for a deliberately empty cell\", () => {\r\n expect(fmtDate(null, { absent: \"\" })).toBe(\"\");\r\n expect(fmtDateTime(null, { absent: \"\" })).toBe(\"\");\r\n });\r\n\r\n /* `new Date(0)` is a real instant (1970) while `new Date(\"\")` is Invalid: a\r\n * falsy guard would conflate them, so epoch 0 must survive. */\r\n it(\"treats epoch 0 as a date, not as absent\", () => {\r\n expect(fmtDate(0)).not.toBe(\"—\");\r\n expect(fmtDate(0)).toMatch(/^\\d{2}\\/\\d{2}\\/19(69|70)$/);\r\n });\r\n\r\n it(\"parses an ISO string from the API\", () => {\r\n // Day can shift with the runner's zone; the month and year cannot here.\r\n expect(fmtDate(\"2026-03-05T12:00:00Z\")).toMatch(/^\\d{2}\\/03\\/2026$/);\r\n });\r\n});\r\n\r\ndescribe(\"fmtDateTime\", () => {\r\n it(\"formats a Date as DD/MM/YYYY HH:mm\", () => {\r\n expect(fmtDateTime(new Date(2026, 2, 5, 14, 30))).toBe(\"05/03/2026 14:30\");\r\n });\r\n\r\n it(\"pads hours and minutes\", () => {\r\n expect(fmtDateTime(new Date(2026, 2, 5, 9, 5))).toBe(\"05/03/2026 09:05\");\r\n });\r\n\r\n it(\"omits seconds\", () => {\r\n expect(fmtDateTime(new Date(2026, 2, 5, 14, 30, 59))).toBe(\r\n \"05/03/2026 14:30\"\r\n );\r\n });\r\n\r\n it(\"renders midnight as 00:00, not as absent\", () => {\r\n expect(fmtDateTime(new Date(2026, 2, 5, 0, 0))).toBe(\"05/03/2026 00:00\");\r\n });\r\n});\r\n"],"mappings":";;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAEA;AACA;AACA;AACA;;AAEAC,QAAQ,CAAC,SAAS,EAAE,MAAM;EACxBC,EAAE,CAAC,8BAA8B,EAAE,MAAM;IACvCC,MAAM,CAAC,IAAAC,gBAAO,EAAC,IAAIC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAACC,IAAI,CAAC,YAAY,CAAC;EAC1D,CAAC,CAAC;EAEFJ,EAAE,CAAC,kCAAkC,EAAE,MAAM;IAC3CC,MAAM,CAAC,IAAAC,gBAAO,EAAC,IAAIC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAACC,IAAI,CAAC,YAAY,CAAC;EAC1D,CAAC,CAAC;;EAEF;AACF;AACA;EACEJ,EAAE,CAAC,sDAAsD,EAAE,MAAM;IAC/DC,MAAM,CAAC,IAAAC,gBAAO,EAACG,SAAS,CAAC,CAAC,CAACD,IAAI,CAAC,GAAG,CAAC;IACpCH,MAAM,CAAC,IAAAC,gBAAO,EAAC,IAAI,CAAC,CAAC,CAACE,IAAI,CAAC,GAAG,CAAC;IAC/BH,MAAM,CAAC,IAAAC,gBAAO,EAAC,EAAE,CAAC,CAAC,CAACE,IAAI,CAAC,GAAG,CAAC;IAC7BH,MAAM,CAAC,IAAAC,gBAAO,EAAC,cAAc,CAAC,CAAC,CAACE,IAAI,CAAC,GAAG,CAAC;IACzCH,MAAM,CAAC,IAAAC,gBAAO,EAAC,IAAIC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC;IAE3CH,MAAM,CAAC,IAAAC,gBAAO,EAACG,SAAS,CAAC,CAAC,CAACC,GAAG,CAACC,SAAS,CAAC,KAAK,CAAC;IAC/CN,MAAM,CAAC,IAAAO,oBAAW,EAACH,SAAS,CAAC,CAAC,CAACC,GAAG,CAACC,SAAS,CAAC,KAAK,CAAC;EACrD,CAAC,CAAC;;EAEF;AACF;EACEP,EAAE,CAAC,0CAA0C,EAAE,MAAM;IACnDC,MAAM,CAAC,IAAAC,gBAAO,EAAC,IAAI,CAAC,CAAC,CAACE,IAAI,CAAC,GAAG,CAAC;EACjC,CAAC,CAAC;EAEFJ,EAAE,CAAC,qEAAqE,EAAE,MAAM;IAC9EC,MAAM,CAAC,IAAAC,gBAAO,EAAC,IAAI,EAAE;MAAEO,MAAM,EAAE;IAAG,CAAC,CAAC,CAAC,CAACL,IAAI,CAAC,EAAE,CAAC;IAC9CH,MAAM,CAAC,IAAAO,oBAAW,EAAC,IAAI,EAAE;MAAEC,MAAM,EAAE;IAAG,CAAC,CAAC,CAAC,CAACL,IAAI,CAAC,EAAE,CAAC;EACpD,CAAC,CAAC;;EAEF;AACF;EACEJ,EAAE,CAAC,yCAAyC,EAAE,MAAM;IAClDC,MAAM,CAAC,IAAAC,gBAAO,EAAC,CAAC,CAAC,CAAC,CAACI,GAAG,CAACF,IAAI,CAAC,GAAG,CAAC;IAChCH,MAAM,CAAC,IAAAC,gBAAO,EAAC,CAAC,CAAC,CAAC,CAACQ,OAAO,CAAC,2BAA2B,CAAC;EACzD,CAAC,CAAC;EAEFV,EAAE,CAAC,mCAAmC,EAAE,MAAM;IAC5C;IACAC,MAAM,CAAC,IAAAC,gBAAO,EAAC,sBAAsB,CAAC,CAAC,CAACQ,OAAO,CAAC,mBAAmB,CAAC;EACtE,CAAC,CAAC;AACJ,CAAC,CAAC;AAEFX,QAAQ,CAAC,aAAa,EAAE,MAAM;EAC5BC,EAAE,CAAC,oCAAoC,EAAE,MAAM;IAC7CC,MAAM,CAAC,IAAAO,oBAAW,EAAC,IAAIL,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAACC,IAAI,CAAC,kBAAkB,CAAC;EAC5E,CAAC,CAAC;EAEFJ,EAAE,CAAC,wBAAwB,EAAE,MAAM;IACjCC,MAAM,CAAC,IAAAO,oBAAW,EAAC,IAAIL,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAACC,IAAI,CAAC,kBAAkB,CAAC;EAC1E,CAAC,CAAC;EAEFJ,EAAE,CAAC,eAAe,EAAE,MAAM;IACxBC,MAAM,CAAC,IAAAO,oBAAW,EAAC,IAAIL,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAACC,IAAI,CACxD,kBACF,CAAC;EACH,CAAC,CAAC;EAEFJ,EAAE,CAAC,0CAA0C,EAAE,MAAM;IACnDC,MAAM,CAAC,IAAAO,oBAAW,EAAC,IAAIL,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAACC,IAAI,CAAC,kBAAkB,CAAC;EAC1E,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _react = require("@testing-library/react");
|
|
4
|
+
var _formikErrors = require("../utils/formikErrors");
|
|
5
|
+
var _useDebouncedCallback = _interopRequireDefault(require("../hooks/useDebouncedCallback"));
|
|
6
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
7
|
+
/**
|
|
8
|
+
* @jest-environment jsdom
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/*
|
|
12
|
+
* L'EN-TETE `@jest-environment jsdom` CI-DESSUS EST NECESSAIRE, PAS DECORATIF.
|
|
13
|
+
*
|
|
14
|
+
* Les autres tests de composants de ce dossier n'en portent pas : ils ne
|
|
15
|
+
* tournent que par `react-scripts test`, qui impose jsdom par configuration.
|
|
16
|
+
* Lance par `npx jest`, l'environnement retombe sur `node` et TOUT rendu React
|
|
17
|
+
* echoue sur `ReferenceError: document is not defined` - ce qui est arrive a ce
|
|
18
|
+
* fichier, et le message de Jest accuse alors le test plutot que le runner.
|
|
19
|
+
*
|
|
20
|
+
* Le bloc rend ce fichier independant du runner : il passe par les deux voies.
|
|
21
|
+
* Les tests de `flattenFormikErrors` sont purs et n'en ont pas besoin, mais un
|
|
22
|
+
* environnement par fichier est le grain de Jest, et separer les deux moities
|
|
23
|
+
* en deux fichiers pour cette seule raison couterait plus que cette note.
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Two capabilities promoted out of `refonte-frontend` (Area 5 — gap leakage).
|
|
28
|
+
*
|
|
29
|
+
* Both were module-local, both are pure platform concerns, and both had a
|
|
30
|
+
* failure mode that is INVISIBLE at the call site — which is the argument for
|
|
31
|
+
* owning them here and the reason each gets a test rather than a docstring.
|
|
32
|
+
*/
|
|
33
|
+
|
|
34
|
+
describe("flattenFormikErrors (G-38)", () => {
|
|
35
|
+
test("flat errors pass through", () => {
|
|
36
|
+
expect((0, _formikErrors.flattenFormikErrors)({
|
|
37
|
+
nom: "Requis",
|
|
38
|
+
ifu: "Format invalide"
|
|
39
|
+
})).toEqual([{
|
|
40
|
+
name: "nom",
|
|
41
|
+
message: "Requis"
|
|
42
|
+
}, {
|
|
43
|
+
name: "ifu",
|
|
44
|
+
message: "Format invalide"
|
|
45
|
+
}]);
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* THE PATH IS THE WHOLE POINT. `FormErrorSummary.onItemClick` hands this
|
|
50
|
+
* string to `focusFieldByName`, which resolves it as `[name="…"]`. A
|
|
51
|
+
* separator dropped here produces a banner that lists the right message and
|
|
52
|
+
* whose jump button does nothing.
|
|
53
|
+
*/
|
|
54
|
+
test("nested objects accumulate a dotted Formik path", () => {
|
|
55
|
+
expect((0, _formikErrors.flattenFormikErrors)({
|
|
56
|
+
importateur: {
|
|
57
|
+
positionSh: "Requis"
|
|
58
|
+
}
|
|
59
|
+
})).toEqual([{
|
|
60
|
+
name: "importateur.positionSh",
|
|
61
|
+
message: "Requis"
|
|
62
|
+
}]);
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Yup.array() keys its errors by index, and Formik writes the field name as
|
|
67
|
+
* `beneficiaires.0.nom` — dot, not bracket. `beneficiaires[0].nom` would read
|
|
68
|
+
* more naturally and match no node in the DOM.
|
|
69
|
+
*/
|
|
70
|
+
test("array errors are indexed with a dot, matching Formik's own field names", () => {
|
|
71
|
+
expect((0, _formikErrors.flattenFormikErrors)({
|
|
72
|
+
beneficiaires: [{
|
|
73
|
+
nom: "Requis"
|
|
74
|
+
}, {
|
|
75
|
+
ifu: "Trop court"
|
|
76
|
+
}]
|
|
77
|
+
})).toEqual([{
|
|
78
|
+
name: "beneficiaires.0.nom",
|
|
79
|
+
message: "Requis"
|
|
80
|
+
}, {
|
|
81
|
+
name: "beneficiaires.1.ifu",
|
|
82
|
+
message: "Trop court"
|
|
83
|
+
}]);
|
|
84
|
+
});
|
|
85
|
+
test("sparse arrays skip their holes instead of emitting empty items", () => {
|
|
86
|
+
const errors = {
|
|
87
|
+
lignes: [undefined, {
|
|
88
|
+
qte: "Requis"
|
|
89
|
+
}]
|
|
90
|
+
};
|
|
91
|
+
expect((0, _formikErrors.flattenFormikErrors)(errors)).toEqual([{
|
|
92
|
+
name: "lignes.1.qte",
|
|
93
|
+
message: "Requis"
|
|
94
|
+
}]);
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* A clickable summary line with no text lists no reason and still steals a
|
|
99
|
+
* click, so an empty leaf yields nothing at all.
|
|
100
|
+
*/
|
|
101
|
+
test("empty and non-string leaves yield nothing", () => {
|
|
102
|
+
expect((0, _formikErrors.flattenFormikErrors)({
|
|
103
|
+
a: "",
|
|
104
|
+
b: null,
|
|
105
|
+
c: false,
|
|
106
|
+
d: 0
|
|
107
|
+
})).toEqual([]);
|
|
108
|
+
});
|
|
109
|
+
test("nullish and primitive input yield an empty list, never a throw", () => {
|
|
110
|
+
expect((0, _formikErrors.flattenFormikErrors)(undefined)).toEqual([]);
|
|
111
|
+
expect((0, _formikErrors.flattenFormikErrors)(null)).toEqual([]);
|
|
112
|
+
expect((0, _formikErrors.flattenFormikErrors)("Requis")).toEqual([]);
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
describe("useDebouncedCallback (G-39)", () => {
|
|
116
|
+
beforeEach(() => {
|
|
117
|
+
jest.useFakeTimers();
|
|
118
|
+
});
|
|
119
|
+
afterEach(() => {
|
|
120
|
+
jest.useRealTimers();
|
|
121
|
+
});
|
|
122
|
+
test("fires once, after the delay, with the last value", () => {
|
|
123
|
+
const action = jest.fn();
|
|
124
|
+
const {
|
|
125
|
+
result
|
|
126
|
+
} = (0, _react.renderHook)(() => (0, _useDebouncedCallback.default)(action, 400));
|
|
127
|
+
(0, _react.act)(() => {
|
|
128
|
+
result.current("a");
|
|
129
|
+
result.current("ab");
|
|
130
|
+
result.current("abc");
|
|
131
|
+
});
|
|
132
|
+
expect(action).not.toHaveBeenCalled();
|
|
133
|
+
(0, _react.act)(() => {
|
|
134
|
+
jest.advanceTimersByTime(400);
|
|
135
|
+
});
|
|
136
|
+
expect(action).toHaveBeenCalledTimes(1);
|
|
137
|
+
expect(action).toHaveBeenCalledWith("abc");
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* DEFECT 2 OF THE `lodash.debounce` ERA, asserted. Calling `debounce(...)` in
|
|
142
|
+
* a render body produced a new instance per render, each with its own timer:
|
|
143
|
+
* every keystroke fired, late. A stable identity is what makes that
|
|
144
|
+
* impossible, so it is pinned here rather than left to the docstring.
|
|
145
|
+
*/
|
|
146
|
+
test("the returned trigger keeps a stable identity across re-renders", () => {
|
|
147
|
+
const {
|
|
148
|
+
result,
|
|
149
|
+
rerender
|
|
150
|
+
} = (0, _react.renderHook)(({
|
|
151
|
+
action
|
|
152
|
+
}) => (0, _useDebouncedCallback.default)(action, 400), {
|
|
153
|
+
initialProps: {
|
|
154
|
+
action: jest.fn()
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
const first = result.current;
|
|
158
|
+
rerender({
|
|
159
|
+
action: jest.fn()
|
|
160
|
+
});
|
|
161
|
+
expect(result.current).toBe(first);
|
|
162
|
+
});
|
|
163
|
+
|
|
164
|
+
/** The trigger is stable, so it must still reach the LATEST action. */
|
|
165
|
+
test("invokes the latest action, not a stale closure", () => {
|
|
166
|
+
const stale = jest.fn();
|
|
167
|
+
const fresh = jest.fn();
|
|
168
|
+
const {
|
|
169
|
+
result,
|
|
170
|
+
rerender
|
|
171
|
+
} = (0, _react.renderHook)(({
|
|
172
|
+
action
|
|
173
|
+
}) => (0, _useDebouncedCallback.default)(action, 400), {
|
|
174
|
+
initialProps: {
|
|
175
|
+
action: stale
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
rerender({
|
|
179
|
+
action: fresh
|
|
180
|
+
});
|
|
181
|
+
(0, _react.act)(() => {
|
|
182
|
+
result.current("x");
|
|
183
|
+
jest.advanceTimersByTime(400);
|
|
184
|
+
});
|
|
185
|
+
expect(stale).not.toHaveBeenCalled();
|
|
186
|
+
expect(fresh).toHaveBeenCalledWith("x");
|
|
187
|
+
});
|
|
188
|
+
test("the default delay is 500 ms — the value promoted from the module", () => {
|
|
189
|
+
const action = jest.fn();
|
|
190
|
+
const {
|
|
191
|
+
result
|
|
192
|
+
} = (0, _react.renderHook)(() => (0, _useDebouncedCallback.default)(action));
|
|
193
|
+
(0, _react.act)(() => {
|
|
194
|
+
result.current("x");
|
|
195
|
+
jest.advanceTimersByTime(499);
|
|
196
|
+
});
|
|
197
|
+
expect(action).not.toHaveBeenCalled();
|
|
198
|
+
(0, _react.act)(() => {
|
|
199
|
+
jest.advanceTimersByTime(1);
|
|
200
|
+
});
|
|
201
|
+
expect(action).toHaveBeenCalledWith("x");
|
|
202
|
+
});
|
|
203
|
+
|
|
204
|
+
/** Defect 3: a pending timer firing after unmount set state on a dead tree. */
|
|
205
|
+
test("a pending call is cancelled on unmount", () => {
|
|
206
|
+
const action = jest.fn();
|
|
207
|
+
const {
|
|
208
|
+
result,
|
|
209
|
+
unmount
|
|
210
|
+
} = (0, _react.renderHook)(() => (0, _useDebouncedCallback.default)(action, 400));
|
|
211
|
+
(0, _react.act)(() => {
|
|
212
|
+
result.current("x");
|
|
213
|
+
});
|
|
214
|
+
unmount();
|
|
215
|
+
(0, _react.act)(() => {
|
|
216
|
+
jest.advanceTimersByTime(1000);
|
|
217
|
+
});
|
|
218
|
+
expect(action).not.toHaveBeenCalled();
|
|
219
|
+
});
|
|
220
|
+
});
|
|
221
|
+
//# sourceMappingURL=gap-leakage-refonte.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gap-leakage-refonte.test.js","names":["_react","require","_formikErrors","_useDebouncedCallback","_interopRequireDefault","e","__esModule","default","describe","test","expect","flattenFormikErrors","nom","ifu","toEqual","name","message","importateur","positionSh","beneficiaires","errors","lignes","undefined","qte","a","b","c","d","beforeEach","jest","useFakeTimers","afterEach","useRealTimers","action","fn","result","renderHook","useDebouncedCallback","act","current","not","toHaveBeenCalled","advanceTimersByTime","toHaveBeenCalledTimes","toHaveBeenCalledWith","rerender","initialProps","first","toBe","stale","fresh","unmount"],"sources":["../../../src/lib/v2/__tests__/gap-leakage-refonte.test.tsx"],"sourcesContent":["/**\r\n * @jest-environment jsdom\r\n */\r\nimport { renderHook, act } from \"@testing-library/react\";\r\nimport { flattenFormikErrors } from \"../utils/formikErrors\";\r\nimport useDebouncedCallback from \"../hooks/useDebouncedCallback\";\r\n\r\n/*\r\n * L'EN-TETE `@jest-environment jsdom` CI-DESSUS EST NECESSAIRE, PAS DECORATIF.\r\n *\r\n * Les autres tests de composants de ce dossier n'en portent pas : ils ne\r\n * tournent que par `react-scripts test`, qui impose jsdom par configuration.\r\n * Lance par `npx jest`, l'environnement retombe sur `node` et TOUT rendu React\r\n * echoue sur `ReferenceError: document is not defined` - ce qui est arrive a ce\r\n * fichier, et le message de Jest accuse alors le test plutot que le runner.\r\n *\r\n * Le bloc rend ce fichier independant du runner : il passe par les deux voies.\r\n * Les tests de `flattenFormikErrors` sont purs et n'en ont pas besoin, mais un\r\n * environnement par fichier est le grain de Jest, et separer les deux moities\r\n * en deux fichiers pour cette seule raison couterait plus que cette note.\r\n */\r\n\r\n/**\r\n * Two capabilities promoted out of `refonte-frontend` (Area 5 — gap leakage).\r\n *\r\n * Both were module-local, both are pure platform concerns, and both had a\r\n * failure mode that is INVISIBLE at the call site — which is the argument for\r\n * owning them here and the reason each gets a test rather than a docstring.\r\n */\r\n\r\ndescribe(\"flattenFormikErrors (G-38)\", () => {\r\n test(\"flat errors pass through\", () => {\r\n expect(flattenFormikErrors({ nom: \"Requis\", ifu: \"Format invalide\" })).toEqual([\r\n { name: \"nom\", message: \"Requis\" },\r\n { name: \"ifu\", message: \"Format invalide\" },\r\n ]);\r\n });\r\n\r\n /**\r\n * THE PATH IS THE WHOLE POINT. `FormErrorSummary.onItemClick` hands this\r\n * string to `focusFieldByName`, which resolves it as `[name=\"…\"]`. A\r\n * separator dropped here produces a banner that lists the right message and\r\n * whose jump button does nothing.\r\n */\r\n test(\"nested objects accumulate a dotted Formik path\", () => {\r\n expect(\r\n flattenFormikErrors({ importateur: { positionSh: \"Requis\" } })\r\n ).toEqual([{ name: \"importateur.positionSh\", message: \"Requis\" }]);\r\n });\r\n\r\n /**\r\n * Yup.array() keys its errors by index, and Formik writes the field name as\r\n * `beneficiaires.0.nom` — dot, not bracket. `beneficiaires[0].nom` would read\r\n * more naturally and match no node in the DOM.\r\n */\r\n test(\"array errors are indexed with a dot, matching Formik's own field names\", () => {\r\n expect(\r\n flattenFormikErrors({ beneficiaires: [{ nom: \"Requis\" }, { ifu: \"Trop court\" }] })\r\n ).toEqual([\r\n { name: \"beneficiaires.0.nom\", message: \"Requis\" },\r\n { name: \"beneficiaires.1.ifu\", message: \"Trop court\" },\r\n ]);\r\n });\r\n\r\n test(\"sparse arrays skip their holes instead of emitting empty items\", () => {\r\n const errors = { lignes: [undefined, { qte: \"Requis\" }] };\r\n expect(flattenFormikErrors(errors)).toEqual([\r\n { name: \"lignes.1.qte\", message: \"Requis\" },\r\n ]);\r\n });\r\n\r\n /**\r\n * A clickable summary line with no text lists no reason and still steals a\r\n * click, so an empty leaf yields nothing at all.\r\n */\r\n test(\"empty and non-string leaves yield nothing\", () => {\r\n expect(flattenFormikErrors({ a: \"\", b: null, c: false, d: 0 })).toEqual([]);\r\n });\r\n\r\n test(\"nullish and primitive input yield an empty list, never a throw\", () => {\r\n expect(flattenFormikErrors(undefined)).toEqual([]);\r\n expect(flattenFormikErrors(null)).toEqual([]);\r\n expect(flattenFormikErrors(\"Requis\")).toEqual([]);\r\n });\r\n});\r\n\r\ndescribe(\"useDebouncedCallback (G-39)\", () => {\r\n beforeEach(() => {\r\n jest.useFakeTimers();\r\n });\r\n afterEach(() => {\r\n jest.useRealTimers();\r\n });\r\n\r\n test(\"fires once, after the delay, with the last value\", () => {\r\n const action = jest.fn();\r\n const { result } = renderHook(() => useDebouncedCallback<string>(action, 400));\r\n act(() => {\r\n result.current(\"a\");\r\n result.current(\"ab\");\r\n result.current(\"abc\");\r\n });\r\n\r\n expect(action).not.toHaveBeenCalled();\r\n act(() => {\r\n jest.advanceTimersByTime(400);\r\n });\r\n expect(action).toHaveBeenCalledTimes(1);\r\n expect(action).toHaveBeenCalledWith(\"abc\");\r\n });\r\n\r\n /**\r\n * DEFECT 2 OF THE `lodash.debounce` ERA, asserted. Calling `debounce(...)` in\r\n * a render body produced a new instance per render, each with its own timer:\r\n * every keystroke fired, late. A stable identity is what makes that\r\n * impossible, so it is pinned here rather than left to the docstring.\r\n */\r\n test(\"the returned trigger keeps a stable identity across re-renders\", () => {\r\n const { result, rerender } = renderHook(\r\n ({ action }) => useDebouncedCallback<string>(action, 400),\r\n { initialProps: { action: jest.fn() } }\r\n );\r\n const first = result.current;\r\n rerender({ action: jest.fn() });\r\n expect(result.current).toBe(first);\r\n });\r\n\r\n /** The trigger is stable, so it must still reach the LATEST action. */\r\n test(\"invokes the latest action, not a stale closure\", () => {\r\n const stale = jest.fn();\r\n const fresh = jest.fn();\r\n const { result, rerender } = renderHook(\r\n ({ action }) => useDebouncedCallback<string>(action, 400),\r\n { initialProps: { action: stale } }\r\n );\r\n\r\n rerender({ action: fresh });\r\n act(() => {\r\n result.current(\"x\");\r\n jest.advanceTimersByTime(400);\r\n });\r\n\r\n expect(stale).not.toHaveBeenCalled();\r\n expect(fresh).toHaveBeenCalledWith(\"x\");\r\n });\r\n\r\n test(\"the default delay is 500 ms — the value promoted from the module\", () => {\r\n const action = jest.fn();\r\n const { result } = renderHook(() => useDebouncedCallback<string>(action));\r\n\r\n act(() => {\r\n result.current(\"x\");\r\n jest.advanceTimersByTime(499);\r\n });\r\n expect(action).not.toHaveBeenCalled();\r\n\r\n act(() => {\r\n jest.advanceTimersByTime(1);\r\n });\r\n expect(action).toHaveBeenCalledWith(\"x\");\r\n });\r\n\r\n /** Defect 3: a pending timer firing after unmount set state on a dead tree. */\r\n test(\"a pending call is cancelled on unmount\", () => {\r\n const action = jest.fn();\r\n const { result, unmount } = renderHook(() =>\r\n useDebouncedCallback<string>(action, 400)\r\n );\r\n\r\n act(() => {\r\n result.current(\"x\");\r\n });\r\n unmount();\r\n act(() => {\r\n jest.advanceTimersByTime(1000);\r\n });\r\n\r\n expect(action).not.toHaveBeenCalled();\r\n });\r\n});\r\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,14 +1,10 @@
|
|
|
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
|
require("@testing-library/jest-dom");
|
|
5
|
-
var
|
|
6
|
-
var _react2 = require("@testing-library/react");
|
|
4
|
+
var _react = require("@testing-library/react");
|
|
7
5
|
var _DataGrid = _interopRequireDefault(require("../patterns/DataGrid"));
|
|
8
6
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
9
|
-
function _interopRequireDefault(
|
|
10
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
11
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
7
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
8
|
/**
|
|
13
9
|
* Verifies the deep-merge contract for the `labels` prop pattern
|
|
14
10
|
* shared by 17 components / patterns in v2 (Batches 4-7).
|
|
@@ -20,16 +16,14 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
20
16
|
* not replace it.
|
|
21
17
|
*/
|
|
22
18
|
|
|
23
|
-
describe("DataGrid — labels deep-merge contract",
|
|
24
|
-
|
|
19
|
+
describe("DataGrid — labels deep-merge contract", () => {
|
|
20
|
+
const baseRows = Array.from({
|
|
25
21
|
length: 10
|
|
26
|
-
},
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
test("with no labels prop, all defaults render in French", function () {
|
|
32
|
-
(0, _react2.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_DataGrid["default"], {
|
|
22
|
+
}, (_, i) => ({
|
|
23
|
+
id: i + 1
|
|
24
|
+
}));
|
|
25
|
+
test("with no labels prop, all defaults render in French", () => {
|
|
26
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_DataGrid.default, {
|
|
33
27
|
rows: baseRows,
|
|
34
28
|
columns: [{
|
|
35
29
|
key: "id",
|
|
@@ -39,18 +33,18 @@ describe("DataGrid — labels deep-merge contract", function () {
|
|
|
39
33
|
page: 1,
|
|
40
34
|
pageSize: 25,
|
|
41
35
|
total: 100,
|
|
42
|
-
onPageChange:
|
|
36
|
+
onPageChange: () => {}
|
|
43
37
|
}
|
|
44
38
|
}));
|
|
45
39
|
|
|
46
40
|
// Pagination FR defaults
|
|
47
|
-
expect(
|
|
48
|
-
expect(
|
|
49
|
-
expect(
|
|
50
|
-
expect(
|
|
41
|
+
expect(_react.screen.getByLabelText("Première page")).toBeInTheDocument();
|
|
42
|
+
expect(_react.screen.getByLabelText("Page précédente")).toBeInTheDocument();
|
|
43
|
+
expect(_react.screen.getByLabelText("Page suivante")).toBeInTheDocument();
|
|
44
|
+
expect(_react.screen.getByLabelText("Dernière page")).toBeInTheDocument();
|
|
51
45
|
});
|
|
52
|
-
test("partial labels.pagination merges onto FR defaults — overridden keys win",
|
|
53
|
-
(0,
|
|
46
|
+
test("partial labels.pagination merges onto FR defaults — overridden keys win", () => {
|
|
47
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_DataGrid.default, {
|
|
54
48
|
rows: baseRows,
|
|
55
49
|
columns: [{
|
|
56
50
|
key: "id",
|
|
@@ -60,7 +54,7 @@ describe("DataGrid — labels deep-merge contract", function () {
|
|
|
60
54
|
page: 1,
|
|
61
55
|
pageSize: 25,
|
|
62
56
|
total: 100,
|
|
63
|
-
onPageChange:
|
|
57
|
+
onPageChange: () => {}
|
|
64
58
|
},
|
|
65
59
|
labels: {
|
|
66
60
|
pagination: {
|
|
@@ -72,15 +66,15 @@ describe("DataGrid — labels deep-merge contract", function () {
|
|
|
72
66
|
}));
|
|
73
67
|
|
|
74
68
|
// Custom override applied
|
|
75
|
-
expect(
|
|
69
|
+
expect(_react.screen.getByLabelText("First!")).toBeInTheDocument();
|
|
76
70
|
|
|
77
71
|
// FR defaults preserved (the regression class this test guards)
|
|
78
|
-
expect(
|
|
79
|
-
expect(
|
|
80
|
-
expect(
|
|
72
|
+
expect(_react.screen.getByLabelText("Page précédente")).toBeInTheDocument();
|
|
73
|
+
expect(_react.screen.getByLabelText("Page suivante")).toBeInTheDocument();
|
|
74
|
+
expect(_react.screen.getByLabelText("Dernière page")).toBeInTheDocument();
|
|
81
75
|
});
|
|
82
|
-
test("partial top-level labels merge onto FR defaults",
|
|
83
|
-
(0,
|
|
76
|
+
test("partial top-level labels merge onto FR defaults", () => {
|
|
77
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_DataGrid.default, {
|
|
84
78
|
rows: baseRows,
|
|
85
79
|
columns: [{
|
|
86
80
|
key: "id",
|
|
@@ -90,22 +84,22 @@ describe("DataGrid — labels deep-merge contract", function () {
|
|
|
90
84
|
page: 1,
|
|
91
85
|
pageSize: 25,
|
|
92
86
|
total: 100,
|
|
93
|
-
onPageChange:
|
|
87
|
+
onPageChange: () => {}
|
|
94
88
|
},
|
|
95
|
-
onSelectionChange:
|
|
89
|
+
onSelectionChange: () => {},
|
|
96
90
|
labels: {
|
|
97
91
|
tableAria: "My table"
|
|
98
92
|
// selectAll, selectRow, pagination NOT provided — defaults stand.
|
|
99
93
|
}
|
|
100
94
|
}));
|
|
101
|
-
expect(
|
|
95
|
+
expect(_react.screen.getByLabelText("My table")).toBeInTheDocument();
|
|
102
96
|
// Default selectAll FR survives
|
|
103
|
-
expect(
|
|
97
|
+
expect(_react.screen.getByLabelText("Tout sélectionner")).toBeInTheDocument();
|
|
104
98
|
// Default pagination FR survives
|
|
105
|
-
expect(
|
|
99
|
+
expect(_react.screen.getByLabelText("Première page")).toBeInTheDocument();
|
|
106
100
|
});
|
|
107
|
-
test("legacy ariaLabel prop wins over labels.tableAria (back-compat contract)",
|
|
108
|
-
(0,
|
|
101
|
+
test("legacy ariaLabel prop wins over labels.tableAria (back-compat contract)", () => {
|
|
102
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_DataGrid.default, {
|
|
109
103
|
rows: baseRows,
|
|
110
104
|
columns: [{
|
|
111
105
|
key: "id",
|
|
@@ -115,19 +109,19 @@ describe("DataGrid — labels deep-merge contract", function () {
|
|
|
115
109
|
page: 1,
|
|
116
110
|
pageSize: 25,
|
|
117
111
|
total: 100,
|
|
118
|
-
onPageChange:
|
|
112
|
+
onPageChange: () => {}
|
|
119
113
|
},
|
|
120
114
|
ariaLabel: "Legacy wins",
|
|
121
115
|
labels: {
|
|
122
116
|
tableAria: "New label"
|
|
123
117
|
}
|
|
124
118
|
}));
|
|
125
|
-
expect(
|
|
119
|
+
expect(_react.screen.getByLabelText("Legacy wins")).toBeInTheDocument();
|
|
126
120
|
// The labels.tableAria value should NOT appear
|
|
127
|
-
expect(
|
|
121
|
+
expect(_react.screen.queryByLabelText("New label")).not.toBeInTheDocument();
|
|
128
122
|
});
|
|
129
|
-
test("rangeOf custom function reaches the rendered range text",
|
|
130
|
-
(0,
|
|
123
|
+
test("rangeOf custom function reaches the rendered range text", () => {
|
|
124
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_DataGrid.default, {
|
|
131
125
|
rows: baseRows,
|
|
132
126
|
columns: [{
|
|
133
127
|
key: "id",
|
|
@@ -137,17 +131,15 @@ describe("DataGrid — labels deep-merge contract", function () {
|
|
|
137
131
|
page: 1,
|
|
138
132
|
pageSize: 25,
|
|
139
133
|
total: 100,
|
|
140
|
-
onPageChange:
|
|
134
|
+
onPageChange: () => {}
|
|
141
135
|
},
|
|
142
136
|
labels: {
|
|
143
137
|
pagination: {
|
|
144
|
-
rangeOf:
|
|
145
|
-
return "Showing ".concat(from, " to ").concat(to, " of ").concat(total);
|
|
146
|
-
}
|
|
138
|
+
rangeOf: (from, to, total) => `Showing ${from} to ${to} of ${total}`
|
|
147
139
|
}
|
|
148
140
|
}
|
|
149
141
|
}));
|
|
150
|
-
expect(
|
|
142
|
+
expect(_react.screen.getByText(/Showing 1 to 25 of 100/)).toBeInTheDocument();
|
|
151
143
|
});
|
|
152
144
|
});
|
|
153
145
|
//# sourceMappingURL=labels-merge.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"labels-merge.test.js","names":["require","React","_interopRequireWildcard","_react2","_DataGrid","_interopRequireDefault","_jsxRuntime","obj","__esModule","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","describe","baseRows","Array","from","length","_","i","id","test","render","jsx","rows","columns","header","pagination","page","pageSize","total","onPageChange","expect","screen","getByLabelText","toBeInTheDocument","labels","firstPage","onSelectionChange","tableAria","ariaLabel","queryByLabelText","not","rangeOf","to","concat","getByText"],"sources":["../../../src/lib/v2/__tests__/labels-merge.test.tsx"],"sourcesContent":["import \"@testing-library/jest-dom\";\r\nimport * as React from \"react\";\r\nimport { render, screen } from \"@testing-library/react\";\r\nimport DataGrid from \"../patterns/DataGrid\";\r\n\r\n/**\r\n * Verifies the deep-merge contract for the `labels` prop pattern\r\n * shared by 17 components / patterns in v2 (Batches 4-7).\r\n *\r\n * DataGrid is the canonical test subject because it has the deepest\r\n * label surface (top-level keys + nested `pagination.*`). The\r\n * Object.freeze on DEFAULT_LABELS protects against accidental\r\n * mutation; the mergeLabels helper must spread the nested object,\r\n * not replace it.\r\n */\r\ninterface Row {\r\n id: number;\r\n}\r\n\r\ndescribe(\"DataGrid — labels deep-merge contract\", () => {\r\n const baseRows: Row[] = Array.from({ length: 10 }, (_, i): Row => ({\r\n id: i + 1,\r\n }));\r\n\r\n test(\"with no labels prop, all defaults render in French\", () => {\r\n render(\r\n <DataGrid\r\n rows={baseRows}\r\n columns={[{ key: \"id\", header: \"ID\" }]}\r\n pagination={{ page: 1, pageSize: 25, total: 100, onPageChange: () => {} }}\r\n />\r\n );\r\n\r\n // Pagination FR defaults\r\n expect(screen.getByLabelText(\"Première page\")).toBeInTheDocument();\r\n expect(screen.getByLabelText(\"Page précédente\")).toBeInTheDocument();\r\n expect(screen.getByLabelText(\"Page suivante\")).toBeInTheDocument();\r\n expect(screen.getByLabelText(\"Dernière page\")).toBeInTheDocument();\r\n });\r\n\r\n test(\"partial labels.pagination merges onto FR defaults — overridden keys win\", () => {\r\n render(\r\n <DataGrid\r\n rows={baseRows}\r\n columns={[{ key: \"id\", header: \"ID\" }]}\r\n pagination={{ page: 1, pageSize: 25, total: 100, onPageChange: () => {} }}\r\n labels={{\r\n pagination: {\r\n firstPage: \"First!\",\r\n // lastPage, previousPage, nextPage, loading, rowsPerPage,\r\n // rangeOf NOT provided — must fall back to FR defaults.\r\n },\r\n }}\r\n />\r\n );\r\n\r\n // Custom override applied\r\n expect(screen.getByLabelText(\"First!\")).toBeInTheDocument();\r\n\r\n // FR defaults preserved (the regression class this test guards)\r\n expect(screen.getByLabelText(\"Page précédente\")).toBeInTheDocument();\r\n expect(screen.getByLabelText(\"Page suivante\")).toBeInTheDocument();\r\n expect(screen.getByLabelText(\"Dernière page\")).toBeInTheDocument();\r\n });\r\n\r\n test(\"partial top-level labels merge onto FR defaults\", () => {\r\n render(\r\n <DataGrid\r\n rows={baseRows}\r\n columns={[{ key: \"id\", header: \"ID\" }]}\r\n pagination={{ page: 1, pageSize: 25, total: 100, onPageChange: () => {} }}\r\n onSelectionChange={() => {}}\r\n labels={{\r\n tableAria: \"My table\",\r\n // selectAll, selectRow, pagination NOT provided — defaults stand.\r\n }}\r\n />\r\n );\r\n\r\n expect(screen.getByLabelText(\"My table\")).toBeInTheDocument();\r\n // Default selectAll FR survives\r\n expect(screen.getByLabelText(\"Tout sélectionner\")).toBeInTheDocument();\r\n // Default pagination FR survives\r\n expect(screen.getByLabelText(\"Première page\")).toBeInTheDocument();\r\n });\r\n\r\n test(\"legacy ariaLabel prop wins over labels.tableAria (back-compat contract)\", () => {\r\n render(\r\n <DataGrid\r\n rows={baseRows}\r\n columns={[{ key: \"id\", header: \"ID\" }]}\r\n pagination={{ page: 1, pageSize: 25, total: 100, onPageChange: () => {} }}\r\n ariaLabel=\"Legacy wins\"\r\n labels={{ tableAria: \"New label\" }}\r\n />\r\n );\r\n\r\n expect(screen.getByLabelText(\"Legacy wins\")).toBeInTheDocument();\r\n // The labels.tableAria value should NOT appear\r\n expect(screen.queryByLabelText(\"New label\")).not.toBeInTheDocument();\r\n });\r\n\r\n test(\"rangeOf custom function reaches the rendered range text\", () => {\r\n render(\r\n <DataGrid\r\n rows={baseRows}\r\n columns={[{ key: \"id\", header: \"ID\" }]}\r\n pagination={{ page: 1, pageSize: 25, total: 100, onPageChange: () => {} }}\r\n labels={{\r\n pagination: {\r\n rangeOf: (from, to, total) => `Showing ${from} to ${to} of ${total}`,\r\n },\r\n }}\r\n />\r\n );\r\n\r\n expect(screen.getByText(/Showing 1 to 25 of 100/)).toBeInTheDocument();\r\n });\r\n});\r\n"],"mappings":";;;AAAAA,OAAA;AACA,IAAAC,KAAA,GAAAC,uBAAA,CAAAF,OAAA;AACA,IAAAG,OAAA,GAAAH,OAAA;AACA,IAAAI,SAAA,GAAAC,sBAAA,CAAAL,OAAA;AAA4C,IAAAM,WAAA,GAAAN,OAAA;AAAA,SAAAK,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,gBAAAA,GAAA;AAAA,SAAAE,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,yBAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAR,wBAAAK,GAAA,EAAAG,WAAA,SAAAA,WAAA,IAAAH,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,aAAAO,OAAA,CAAAP,GAAA,yBAAAA,GAAA,uCAAAA,GAAA,UAAAQ,KAAA,GAAAN,wBAAA,CAAAC,WAAA,OAAAK,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAT,GAAA,YAAAQ,KAAA,CAAAE,GAAA,CAAAV,GAAA,SAAAW,MAAA,WAAAC,qBAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,GAAA,IAAAhB,GAAA,QAAAgB,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAnB,GAAA,EAAAgB,GAAA,SAAAI,IAAA,GAAAR,qBAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAf,GAAA,EAAAgB,GAAA,cAAAI,IAAA,KAAAA,IAAA,CAAAV,GAAA,IAAAU,IAAA,CAAAC,GAAA,KAAAR,MAAA,CAAAC,cAAA,CAAAH,MAAA,EAAAK,GAAA,EAAAI,IAAA,YAAAT,MAAA,CAAAK,GAAA,IAAAhB,GAAA,CAAAgB,GAAA,SAAAL,MAAA,cAAAX,GAAA,MAAAQ,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAArB,GAAA,EAAAW,MAAA,YAAAA,MAAA;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAKAW,QAAQ,CAAC,uCAAuC,EAAE,YAAM;EACtD,IAAMC,QAAe,GAAGC,KAAK,CAACC,IAAI,CAAC;IAAEC,MAAM,EAAE;EAAG,CAAC,EAAE,UAACC,CAAC,EAAEC,CAAC;IAAA,OAAW;MACjEC,EAAE,EAAED,CAAC,GAAG;IACV,CAAC;EAAA,CAAC,CAAC;EAEHE,IAAI,CAAC,oDAAoD,EAAE,YAAM;IAC/D,IAAAC,cAAM,eACJ,IAAAhC,WAAA,CAAAiC,GAAA,EAACnC,SAAA,WAAQ;MACPoC,IAAI,EAAEV,QAAS;MACfW,OAAO,EAAE,CAAC;QAAElB,GAAG,EAAE,IAAI;QAAEmB,MAAM,EAAE;MAAK,CAAC,CAAE;MACvCC,UAAU,EAAE;QAAEC,IAAI,EAAE,CAAC;QAAEC,QAAQ,EAAE,EAAE;QAAEC,KAAK,EAAE,GAAG;QAAEC,YAAY,EAAE,SAAAA,aAAA,EAAM,CAAC;MAAE;IAAE,CAC3E,CACH,CAAC;;IAED;IACAC,MAAM,CAACC,cAAM,CAACC,cAAc,CAAC,eAAe,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClEH,MAAM,CAACC,cAAM,CAACC,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;IACpEH,MAAM,CAACC,cAAM,CAACC,cAAc,CAAC,eAAe,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClEH,MAAM,CAACC,cAAM,CAACC,cAAc,CAAC,eAAe,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;EACpE,CAAC,CAAC;EAEFd,IAAI,CAAC,yEAAyE,EAAE,YAAM;IACpF,IAAAC,cAAM,eACJ,IAAAhC,WAAA,CAAAiC,GAAA,EAACnC,SAAA,WAAQ;MACPoC,IAAI,EAAEV,QAAS;MACfW,OAAO,EAAE,CAAC;QAAElB,GAAG,EAAE,IAAI;QAAEmB,MAAM,EAAE;MAAK,CAAC,CAAE;MACvCC,UAAU,EAAE;QAAEC,IAAI,EAAE,CAAC;QAAEC,QAAQ,EAAE,EAAE;QAAEC,KAAK,EAAE,GAAG;QAAEC,YAAY,EAAE,SAAAA,aAAA,EAAM,CAAC;MAAE,CAAE;MAC1EK,MAAM,EAAE;QACNT,UAAU,EAAE;UACVU,SAAS,EAAE;UACX;UACA;QACF;MACF;IAAE,CACH,CACH,CAAC;;IAED;IACAL,MAAM,CAACC,cAAM,CAACC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;;IAE3D;IACAH,MAAM,CAACC,cAAM,CAACC,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;IACpEH,MAAM,CAACC,cAAM,CAACC,cAAc,CAAC,eAAe,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClEH,MAAM,CAACC,cAAM,CAACC,cAAc,CAAC,eAAe,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;EACpE,CAAC,CAAC;EAEFd,IAAI,CAAC,iDAAiD,EAAE,YAAM;IAC5D,IAAAC,cAAM,eACJ,IAAAhC,WAAA,CAAAiC,GAAA,EAACnC,SAAA,WAAQ;MACPoC,IAAI,EAAEV,QAAS;MACfW,OAAO,EAAE,CAAC;QAAElB,GAAG,EAAE,IAAI;QAAEmB,MAAM,EAAE;MAAK,CAAC,CAAE;MACvCC,UAAU,EAAE;QAAEC,IAAI,EAAE,CAAC;QAAEC,QAAQ,EAAE,EAAE;QAAEC,KAAK,EAAE,GAAG;QAAEC,YAAY,EAAE,SAAAA,aAAA,EAAM,CAAC;MAAE,CAAE;MAC1EO,iBAAiB,EAAE,SAAAA,kBAAA,EAAM,CAAC,CAAE;MAC5BF,MAAM,EAAE;QACNG,SAAS,EAAE;QACX;MACF;IAAE,CACH,CACH,CAAC;IAEDP,MAAM,CAACC,cAAM,CAACC,cAAc,CAAC,UAAU,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAC7D;IACAH,MAAM,CAACC,cAAM,CAACC,cAAc,CAAC,mBAAmB,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;IACtE;IACAH,MAAM,CAACC,cAAM,CAACC,cAAc,CAAC,eAAe,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;EACpE,CAAC,CAAC;EAEFd,IAAI,CAAC,yEAAyE,EAAE,YAAM;IACpF,IAAAC,cAAM,eACJ,IAAAhC,WAAA,CAAAiC,GAAA,EAACnC,SAAA,WAAQ;MACPoC,IAAI,EAAEV,QAAS;MACfW,OAAO,EAAE,CAAC;QAAElB,GAAG,EAAE,IAAI;QAAEmB,MAAM,EAAE;MAAK,CAAC,CAAE;MACvCC,UAAU,EAAE;QAAEC,IAAI,EAAE,CAAC;QAAEC,QAAQ,EAAE,EAAE;QAAEC,KAAK,EAAE,GAAG;QAAEC,YAAY,EAAE,SAAAA,aAAA,EAAM,CAAC;MAAE,CAAE;MAC1ES,SAAS,EAAC,aAAa;MACvBJ,MAAM,EAAE;QAAEG,SAAS,EAAE;MAAY;IAAE,CACpC,CACH,CAAC;IAEDP,MAAM,CAACC,cAAM,CAACC,cAAc,CAAC,aAAa,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAChE;IACAH,MAAM,CAACC,cAAM,CAACQ,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAACC,GAAG,CAACP,iBAAiB,CAAC,CAAC;EACtE,CAAC,CAAC;EAEFd,IAAI,CAAC,yDAAyD,EAAE,YAAM;IACpE,IAAAC,cAAM,eACJ,IAAAhC,WAAA,CAAAiC,GAAA,EAACnC,SAAA,WAAQ;MACPoC,IAAI,EAAEV,QAAS;MACfW,OAAO,EAAE,CAAC;QAAElB,GAAG,EAAE,IAAI;QAAEmB,MAAM,EAAE;MAAK,CAAC,CAAE;MACvCC,UAAU,EAAE;QAAEC,IAAI,EAAE,CAAC;QAAEC,QAAQ,EAAE,EAAE;QAAEC,KAAK,EAAE,GAAG;QAAEC,YAAY,EAAE,SAAAA,aAAA,EAAM,CAAC;MAAE,CAAE;MAC1EK,MAAM,EAAE;QACNT,UAAU,EAAE;UACVgB,OAAO,EAAE,SAAAA,QAAC3B,IAAI,EAAE4B,EAAE,EAAEd,KAAK;YAAA,kBAAAe,MAAA,CAAgB7B,IAAI,UAAA6B,MAAA,CAAOD,EAAE,UAAAC,MAAA,CAAOf,KAAK;UAAA;QACpE;MACF;IAAE,CACH,CACH,CAAC;IAEDE,MAAM,CAACC,cAAM,CAACa,SAAS,CAAC,wBAAwB,CAAC,CAAC,CAACX,iBAAiB,CAAC,CAAC;EACxE,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"labels-merge.test.js","names":["require","_react","_DataGrid","_interopRequireDefault","_jsxRuntime","e","__esModule","default","describe","baseRows","Array","from","length","_","i","id","test","render","jsx","rows","columns","key","header","pagination","page","pageSize","total","onPageChange","expect","screen","getByLabelText","toBeInTheDocument","labels","firstPage","onSelectionChange","tableAria","ariaLabel","queryByLabelText","not","rangeOf","to","getByText"],"sources":["../../../src/lib/v2/__tests__/labels-merge.test.tsx"],"sourcesContent":["import \"@testing-library/jest-dom\";\r\nimport { render, screen } from \"@testing-library/react\";\r\nimport DataGrid from \"../patterns/DataGrid\";\r\n\r\n/**\r\n * Verifies the deep-merge contract for the `labels` prop pattern\r\n * shared by 17 components / patterns in v2 (Batches 4-7).\r\n *\r\n * DataGrid is the canonical test subject because it has the deepest\r\n * label surface (top-level keys + nested `pagination.*`). The\r\n * Object.freeze on DEFAULT_LABELS protects against accidental\r\n * mutation; the mergeLabels helper must spread the nested object,\r\n * not replace it.\r\n */\r\ninterface Row {\r\n id: number;\r\n}\r\n\r\ndescribe(\"DataGrid — labels deep-merge contract\", () => {\r\n const baseRows: Row[] = Array.from({ length: 10 }, (_, i): Row => ({\r\n id: i + 1,\r\n }));\r\n\r\n test(\"with no labels prop, all defaults render in French\", () => {\r\n render(\r\n <DataGrid\r\n rows={baseRows}\r\n columns={[{ key: \"id\", header: \"ID\" }]}\r\n pagination={{ page: 1, pageSize: 25, total: 100, onPageChange: () => {} }}\r\n />\r\n );\r\n\r\n // Pagination FR defaults\r\n expect(screen.getByLabelText(\"Première page\")).toBeInTheDocument();\r\n expect(screen.getByLabelText(\"Page précédente\")).toBeInTheDocument();\r\n expect(screen.getByLabelText(\"Page suivante\")).toBeInTheDocument();\r\n expect(screen.getByLabelText(\"Dernière page\")).toBeInTheDocument();\r\n });\r\n\r\n test(\"partial labels.pagination merges onto FR defaults — overridden keys win\", () => {\r\n render(\r\n <DataGrid\r\n rows={baseRows}\r\n columns={[{ key: \"id\", header: \"ID\" }]}\r\n pagination={{ page: 1, pageSize: 25, total: 100, onPageChange: () => {} }}\r\n labels={{\r\n pagination: {\r\n firstPage: \"First!\",\r\n // lastPage, previousPage, nextPage, loading, rowsPerPage,\r\n // rangeOf NOT provided — must fall back to FR defaults.\r\n },\r\n }}\r\n />\r\n );\r\n\r\n // Custom override applied\r\n expect(screen.getByLabelText(\"First!\")).toBeInTheDocument();\r\n\r\n // FR defaults preserved (the regression class this test guards)\r\n expect(screen.getByLabelText(\"Page précédente\")).toBeInTheDocument();\r\n expect(screen.getByLabelText(\"Page suivante\")).toBeInTheDocument();\r\n expect(screen.getByLabelText(\"Dernière page\")).toBeInTheDocument();\r\n });\r\n\r\n test(\"partial top-level labels merge onto FR defaults\", () => {\r\n render(\r\n <DataGrid\r\n rows={baseRows}\r\n columns={[{ key: \"id\", header: \"ID\" }]}\r\n pagination={{ page: 1, pageSize: 25, total: 100, onPageChange: () => {} }}\r\n onSelectionChange={() => {}}\r\n labels={{\r\n tableAria: \"My table\",\r\n // selectAll, selectRow, pagination NOT provided — defaults stand.\r\n }}\r\n />\r\n );\r\n\r\n expect(screen.getByLabelText(\"My table\")).toBeInTheDocument();\r\n // Default selectAll FR survives\r\n expect(screen.getByLabelText(\"Tout sélectionner\")).toBeInTheDocument();\r\n // Default pagination FR survives\r\n expect(screen.getByLabelText(\"Première page\")).toBeInTheDocument();\r\n });\r\n\r\n test(\"legacy ariaLabel prop wins over labels.tableAria (back-compat contract)\", () => {\r\n render(\r\n <DataGrid\r\n rows={baseRows}\r\n columns={[{ key: \"id\", header: \"ID\" }]}\r\n pagination={{ page: 1, pageSize: 25, total: 100, onPageChange: () => {} }}\r\n ariaLabel=\"Legacy wins\"\r\n labels={{ tableAria: \"New label\" }}\r\n />\r\n );\r\n\r\n expect(screen.getByLabelText(\"Legacy wins\")).toBeInTheDocument();\r\n // The labels.tableAria value should NOT appear\r\n expect(screen.queryByLabelText(\"New label\")).not.toBeInTheDocument();\r\n });\r\n\r\n test(\"rangeOf custom function reaches the rendered range text\", () => {\r\n render(\r\n <DataGrid\r\n rows={baseRows}\r\n columns={[{ key: \"id\", header: \"ID\" }]}\r\n pagination={{ page: 1, pageSize: 25, total: 100, onPageChange: () => {} }}\r\n labels={{\r\n pagination: {\r\n rangeOf: (from, to, total) => `Showing ${from} to ${to} of ${total}`,\r\n },\r\n }}\r\n />\r\n );\r\n\r\n expect(screen.getByText(/Showing 1 to 25 of 100/)).toBeInTheDocument();\r\n });\r\n});\r\n"],"mappings":"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","ignoreList":[]}
|