@portnet/ui 6.0.2 → 6.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +652 -0
- package/dist/esm/index.js +72 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/v2/__tests__/AppMain.test.js +130 -0
- package/dist/esm/v2/__tests__/AppMain.test.js.map +1 -0
- package/dist/esm/v2/__tests__/ChartFigure.test.js +180 -0
- package/dist/esm/v2/__tests__/ChartFigure.test.js.map +1 -0
- package/dist/esm/v2/__tests__/DataGridRowActionsPropagation.test.js +150 -0
- package/dist/esm/v2/__tests__/DataGridRowActionsPropagation.test.js.map +1 -0
- package/dist/esm/v2/__tests__/DrawerTactileTargets.test.js +93 -0
- package/dist/esm/v2/__tests__/DrawerTactileTargets.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FieldError.test.js +71 -38
- package/dist/esm/v2/__tests__/FieldError.test.js.map +1 -1
- package/dist/esm/v2/__tests__/FieldNaming.test.js +160 -0
- package/dist/esm/v2/__tests__/FieldNaming.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FieldWidth.test.js +11 -11
- package/dist/esm/v2/__tests__/FieldWidth.test.js.map +1 -1
- package/dist/esm/v2/__tests__/FileCard.test.js +18 -17
- package/dist/esm/v2/__tests__/FileCard.test.js.map +1 -1
- package/dist/esm/v2/__tests__/FormikCheckbox.test.js +87 -179
- package/dist/esm/v2/__tests__/FormikCheckbox.test.js.map +1 -1
- package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js +32 -44
- package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js.map +1 -1
- package/dist/esm/v2/__tests__/FormikDisplayWidth.test.js +101 -0
- package/dist/esm/v2/__tests__/FormikDisplayWidth.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FormikRadioGroup.test.js +118 -199
- package/dist/esm/v2/__tests__/FormikRadioGroup.test.js.map +1 -1
- package/dist/esm/v2/__tests__/MobileRowCard.test.js +44 -42
- package/dist/esm/v2/__tests__/MobileRowCard.test.js.map +1 -1
- package/dist/esm/v2/__tests__/PreviewDrawer.test.js +165 -0
- package/dist/esm/v2/__tests__/PreviewDrawer.test.js.map +1 -0
- package/dist/esm/v2/__tests__/ReferentielFieldContainer.test.js +156 -0
- package/dist/esm/v2/__tests__/ReferentielFieldContainer.test.js.map +1 -0
- package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js +37 -52
- package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js.map +1 -1
- package/dist/esm/v2/__tests__/apiError.test.js +50 -69
- package/dist/esm/v2/__tests__/apiError.test.js.map +1 -1
- package/dist/esm/v2/__tests__/banned-patterns.test.js +41 -122
- package/dist/esm/v2/__tests__/banned-patterns.test.js.map +1 -1
- package/dist/esm/v2/__tests__/chart-palette.test.js +204 -0
- package/dist/esm/v2/__tests__/chart-palette.test.js.map +1 -0
- package/dist/esm/v2/__tests__/contrast-palette.test.js +42 -74
- package/dist/esm/v2/__tests__/contrast-palette.test.js.map +1 -1
- package/dist/esm/v2/__tests__/cssVariables.test.js +44 -51
- package/dist/esm/v2/__tests__/cssVariables.test.js.map +1 -1
- package/dist/esm/v2/__tests__/fileValidation.test.js +134 -0
- package/dist/esm/v2/__tests__/fileValidation.test.js.map +1 -0
- package/dist/esm/v2/__tests__/filterCriteria.test.js +321 -0
- package/dist/esm/v2/__tests__/filterCriteria.test.js.map +1 -0
- package/dist/esm/v2/__tests__/fmtDate.test.js +68 -0
- package/dist/esm/v2/__tests__/fmtDate.test.js.map +1 -0
- package/dist/esm/v2/__tests__/gap-leakage-refonte.test.js +218 -0
- package/dist/esm/v2/__tests__/gap-leakage-refonte.test.js.map +1 -0
- package/dist/esm/v2/__tests__/labels-merge.test.js +17 -21
- package/dist/esm/v2/__tests__/labels-merge.test.js.map +1 -1
- package/dist/esm/v2/__tests__/locale-fallback.test.js +35 -40
- package/dist/esm/v2/__tests__/locale-fallback.test.js.map +1 -1
- package/dist/esm/v2/__tests__/reviveSavedCriteria.test.js +143 -0
- package/dist/esm/v2/__tests__/reviveSavedCriteria.test.js.map +1 -0
- package/dist/esm/v2/__tests__/rowActions.test.js +182 -0
- package/dist/esm/v2/__tests__/rowActions.test.js.map +1 -0
- package/dist/esm/v2/__tests__/useFocusOnRouteChange.test.js +155 -0
- package/dist/esm/v2/__tests__/useFocusOnRouteChange.test.js.map +1 -0
- package/dist/esm/v2/__tests__/useFocusTrap.test.js +266 -402
- package/dist/esm/v2/__tests__/useFocusTrap.test.js.map +1 -1
- package/dist/esm/v2/__tests__/usePrefersReducedMotion.test.js +120 -0
- package/dist/esm/v2/__tests__/usePrefersReducedMotion.test.js.map +1 -0
- package/dist/esm/v2/components/Accordion.js +48 -70
- package/dist/esm/v2/components/Accordion.js.map +1 -1
- package/dist/esm/v2/components/ActionStrip.js +31 -43
- package/dist/esm/v2/components/ActionStrip.js.map +1 -1
- package/dist/esm/v2/components/Banner.js +25 -22
- package/dist/esm/v2/components/Banner.js.map +1 -1
- package/dist/esm/v2/components/Busy.js +14 -19
- package/dist/esm/v2/components/Busy.js.map +1 -1
- package/dist/esm/v2/components/Button.js +34 -45
- package/dist/esm/v2/components/Button.js.map +1 -1
- package/dist/esm/v2/components/CategoryTag.js +44 -27
- package/dist/esm/v2/components/CategoryTag.js.map +1 -1
- package/dist/esm/v2/components/Checkbox.js +32 -38
- package/dist/esm/v2/components/Checkbox.js.map +1 -1
- package/dist/esm/v2/components/Chip.js +23 -36
- package/dist/esm/v2/components/Chip.js.map +1 -1
- package/dist/esm/v2/components/Combobox.js +112 -136
- package/dist/esm/v2/components/Combobox.js.map +1 -1
- package/dist/esm/v2/components/CommandPalette.js +113 -198
- package/dist/esm/v2/components/CommandPalette.js.map +1 -1
- package/dist/esm/v2/components/ConfirmDialog.js +36 -45
- package/dist/esm/v2/components/ConfirmDialog.js.map +1 -1
- package/dist/esm/v2/components/DatePicker.js +78 -81
- package/dist/esm/v2/components/DatePicker.js.map +1 -1
- package/dist/esm/v2/components/DateRangePicker.js +63 -74
- package/dist/esm/v2/components/DateRangePicker.js.map +1 -1
- package/dist/esm/v2/components/DateTimePicker.js +81 -86
- package/dist/esm/v2/components/DateTimePicker.js.map +1 -1
- package/dist/esm/v2/components/Drawer.js +71 -65
- package/dist/esm/v2/components/Drawer.js.map +1 -1
- package/dist/esm/v2/components/Dropzone.js +130 -177
- package/dist/esm/v2/components/Dropzone.js.map +1 -1
- package/dist/esm/v2/components/EmptyState.js +9 -9
- package/dist/esm/v2/components/EmptyState.js.map +1 -1
- package/dist/esm/v2/components/FavoriteToggle.js +24 -33
- package/dist/esm/v2/components/FavoriteToggle.js.map +1 -1
- package/dist/esm/v2/components/Field.js +155 -59
- package/dist/esm/v2/components/Field.js.map +1 -1
- package/dist/esm/v2/components/FieldError.js +9 -13
- package/dist/esm/v2/components/FieldError.js.map +1 -1
- package/dist/esm/v2/components/FieldHelp.js +28 -49
- package/dist/esm/v2/components/FieldHelp.js.map +1 -1
- package/dist/esm/v2/components/FileCard.js +14 -19
- package/dist/esm/v2/components/FileCard.js.map +1 -1
- package/dist/esm/v2/components/FilterTab.js +22 -31
- package/dist/esm/v2/components/FilterTab.js.map +1 -1
- package/dist/esm/v2/components/ForbiddenPage.js +28 -8
- package/dist/esm/v2/components/ForbiddenPage.js.map +1 -1
- package/dist/esm/v2/components/FormGrid.js +48 -54
- package/dist/esm/v2/components/FormGrid.js.map +1 -1
- package/dist/esm/v2/components/FormikDisplay.js +98 -24
- package/dist/esm/v2/components/FormikDisplay.js.map +1 -1
- package/dist/esm/v2/components/Input.js +75 -34
- package/dist/esm/v2/components/Input.js.map +1 -1
- package/dist/esm/v2/components/KPICard.js +42 -51
- package/dist/esm/v2/components/KPICard.js.map +1 -1
- package/dist/esm/v2/components/KPIStrip.js +9 -15
- package/dist/esm/v2/components/KPIStrip.js.map +1 -1
- package/dist/esm/v2/components/KV.js +16 -23
- package/dist/esm/v2/components/KV.js.map +1 -1
- package/dist/esm/v2/components/KVGrid.js +15 -23
- package/dist/esm/v2/components/KVGrid.js.map +1 -1
- package/dist/esm/v2/components/Layout.js +81 -117
- package/dist/esm/v2/components/Layout.js.map +1 -1
- package/dist/esm/v2/components/MobileRowCard.js +64 -75
- package/dist/esm/v2/components/MobileRowCard.js.map +1 -1
- package/dist/esm/v2/components/Modal.js +44 -53
- package/dist/esm/v2/components/Modal.js.map +1 -1
- package/dist/esm/v2/components/NetworkErrorPage.js +28 -11
- package/dist/esm/v2/components/NetworkErrorPage.js.map +1 -1
- package/dist/esm/v2/components/NotFoundPage.js +28 -9
- package/dist/esm/v2/components/NotFoundPage.js.map +1 -1
- package/dist/esm/v2/components/NumberInput.js +77 -107
- package/dist/esm/v2/components/NumberInput.js.map +1 -1
- package/dist/esm/v2/components/OverflowMenu.js +24 -42
- package/dist/esm/v2/components/OverflowMenu.js.map +1 -1
- package/dist/esm/v2/components/PdfViewer.js +24 -33
- package/dist/esm/v2/components/PdfViewer.js.map +1 -1
- package/dist/esm/v2/components/ProgressBar.js +28 -36
- package/dist/esm/v2/components/ProgressBar.js.map +1 -1
- package/dist/esm/v2/components/Radio.js +49 -57
- package/dist/esm/v2/components/Radio.js.map +1 -1
- package/dist/esm/v2/components/SectionErrorBoundary.js +84 -130
- package/dist/esm/v2/components/SectionErrorBoundary.js.map +1 -1
- package/dist/esm/v2/components/SectionHeader.js +24 -31
- package/dist/esm/v2/components/SectionHeader.js.map +1 -1
- package/dist/esm/v2/components/Segmented.js +59 -84
- package/dist/esm/v2/components/Segmented.js.map +1 -1
- package/dist/esm/v2/components/Select.js +100 -138
- package/dist/esm/v2/components/Select.js.map +1 -1
- package/dist/esm/v2/components/ServerErrorPage.js +27 -10
- package/dist/esm/v2/components/ServerErrorPage.js.map +1 -1
- package/dist/esm/v2/components/Skeleton.js +81 -96
- package/dist/esm/v2/components/Skeleton.js.map +1 -1
- package/dist/esm/v2/components/SkipLink.js +6 -7
- package/dist/esm/v2/components/SkipLink.js.map +1 -1
- package/dist/esm/v2/components/Spinner.js +13 -22
- package/dist/esm/v2/components/Spinner.js.map +1 -1
- package/dist/esm/v2/components/Status.js +14 -25
- package/dist/esm/v2/components/Status.js.map +1 -1
- package/dist/esm/v2/components/Stepper.js +68 -71
- package/dist/esm/v2/components/Stepper.js.map +1 -1
- package/dist/esm/v2/components/Surface.js +25 -44
- package/dist/esm/v2/components/Surface.js.map +1 -1
- package/dist/esm/v2/components/Switch.js +21 -29
- package/dist/esm/v2/components/Switch.js.map +1 -1
- package/dist/esm/v2/components/TabPanel.js +84 -0
- package/dist/esm/v2/components/TabPanel.js.map +1 -0
- package/dist/esm/v2/components/Tabs.js +43 -19
- package/dist/esm/v2/components/Tabs.js.map +1 -1
- package/dist/esm/v2/components/TelInput.js +75 -108
- package/dist/esm/v2/components/TelInput.js.map +1 -1
- package/dist/esm/v2/components/Textarea.js +21 -30
- package/dist/esm/v2/components/Textarea.js.map +1 -1
- package/dist/esm/v2/components/TimePicker.js +59 -69
- package/dist/esm/v2/components/TimePicker.js.map +1 -1
- package/dist/esm/v2/components/Toast.js +109 -163
- package/dist/esm/v2/components/Toast.js.map +1 -1
- package/dist/esm/v2/components/Tooltip.js +18 -31
- package/dist/esm/v2/components/Tooltip.js.map +1 -1
- package/dist/esm/v2/components/_ErrorPageBody.js +6 -5
- package/dist/esm/v2/components/_ErrorPageBody.js.map +1 -1
- package/dist/esm/v2/components/_pickerShared.js +2 -2
- package/dist/esm/v2/components/_pickerShared.js.map +1 -1
- package/dist/esm/v2/components/index.js +37 -0
- package/dist/esm/v2/components/index.js.map +1 -1
- package/dist/esm/v2/hooks/index.js +62 -0
- package/dist/esm/v2/hooks/index.js.map +1 -1
- package/dist/esm/v2/hooks/useAppliedFilters.js +112 -0
- package/dist/esm/v2/hooks/useAppliedFilters.js.map +1 -0
- package/dist/esm/v2/hooks/useDebouncedCallback.js +82 -0
- package/dist/esm/v2/hooks/useDebouncedCallback.js.map +1 -0
- package/dist/esm/v2/hooks/useDelayedFlag.js +5 -19
- package/dist/esm/v2/hooks/useDelayedFlag.js.map +1 -1
- package/dist/esm/v2/hooks/useDensity.js +13 -17
- package/dist/esm/v2/hooks/useDensity.js.map +1 -1
- package/dist/esm/v2/hooks/useFocusFirstError.js +25 -33
- package/dist/esm/v2/hooks/useFocusFirstError.js.map +1 -1
- package/dist/esm/v2/hooks/useFocusOnRouteChange.js +81 -0
- package/dist/esm/v2/hooks/useFocusOnRouteChange.js.map +1 -0
- package/dist/esm/v2/hooks/useFocusTrap.js +19 -23
- package/dist/esm/v2/hooks/useFocusTrap.js.map +1 -1
- package/dist/esm/v2/hooks/useFormAutoSave.js +38 -53
- package/dist/esm/v2/hooks/useFormAutoSave.js.map +1 -1
- package/dist/esm/v2/hooks/useFormCompletionProgress.js +32 -51
- package/dist/esm/v2/hooks/useFormCompletionProgress.js.map +1 -1
- package/dist/esm/v2/hooks/useKeyboardShortcuts.js +125 -0
- package/dist/esm/v2/hooks/useKeyboardShortcuts.js.map +1 -0
- package/dist/esm/v2/hooks/usePrefersReducedMotion.js +99 -0
- package/dist/esm/v2/hooks/usePrefersReducedMotion.js.map +1 -0
- package/dist/esm/v2/hooks/useResolvedDensity.js +2 -10
- package/dist/esm/v2/hooks/useResolvedDensity.js.map +1 -1
- package/dist/esm/v2/hooks/useSortedRows.js +3 -5
- package/dist/esm/v2/hooks/useSortedRows.js.map +1 -1
- package/dist/esm/v2/hooks/useTabLoading.js +6 -21
- package/dist/esm/v2/hooks/useTabLoading.js.map +1 -1
- package/dist/esm/v2/index.js +2 -3
- package/dist/esm/v2/index.js.map +1 -1
- package/dist/esm/v2/modalContext.js +2 -2
- package/dist/esm/v2/modalContext.js.map +1 -1
- package/dist/esm/v2/models/favorite.js.map +1 -1
- package/dist/esm/v2/models/personalization.js.map +1 -1
- package/dist/esm/v2/models/referentiel.js.map +1 -1
- package/dist/esm/v2/models/savedFilter.js.map +1 -1
- package/dist/esm/v2/patterns/ActionBar.js +115 -159
- package/dist/esm/v2/patterns/ActionBar.js.map +1 -1
- package/dist/esm/v2/patterns/AppMain.js +108 -0
- package/dist/esm/v2/patterns/AppMain.js.map +1 -0
- package/dist/esm/v2/patterns/BulkActionBar.js +31 -34
- package/dist/esm/v2/patterns/BulkActionBar.js.map +1 -1
- package/dist/esm/v2/patterns/ChartFigure.js +151 -0
- package/dist/esm/v2/patterns/ChartFigure.js.map +1 -0
- package/dist/esm/v2/patterns/CollapsibleDataGrid.js +111 -152
- package/dist/esm/v2/patterns/CollapsibleDataGrid.js.map +1 -1
- package/dist/esm/v2/patterns/ColumnsToggle.js +43 -77
- package/dist/esm/v2/patterns/ColumnsToggle.js.map +1 -1
- package/dist/esm/v2/patterns/DataGrid.js +221 -255
- package/dist/esm/v2/patterns/DataGrid.js.map +1 -1
- package/dist/esm/v2/patterns/DataGridSettingsMenu.js +76 -94
- package/dist/esm/v2/patterns/DataGridSettingsMenu.js.map +1 -1
- package/dist/esm/v2/patterns/DataGridToolbar.js +85 -89
- package/dist/esm/v2/patterns/DataGridToolbar.js.map +1 -1
- package/dist/esm/v2/patterns/DataGridVirtualized.js +141 -182
- package/dist/esm/v2/patterns/DataGridVirtualized.js.map +1 -1
- package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js +26 -30
- package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
- package/dist/esm/v2/patterns/DetailSplit.js +108 -0
- package/dist/esm/v2/patterns/DetailSplit.js.map +1 -0
- package/dist/esm/v2/patterns/FavoriteColumn.js +15 -17
- package/dist/esm/v2/patterns/FavoriteColumn.js.map +1 -1
- package/dist/esm/v2/patterns/FavoritesFilter.js +30 -39
- package/dist/esm/v2/patterns/FavoritesFilter.js.map +1 -1
- package/dist/esm/v2/patterns/FilterTabBar.js +112 -0
- package/dist/esm/v2/patterns/FilterTabBar.js.map +1 -0
- package/dist/esm/v2/patterns/FormErrorSummary.js +12 -13
- package/dist/esm/v2/patterns/FormErrorSummary.js.map +1 -1
- package/dist/esm/v2/patterns/FormPageShell.js +43 -41
- package/dist/esm/v2/patterns/FormPageShell.js.map +1 -1
- package/dist/esm/v2/patterns/FormSection.js +30 -38
- package/dist/esm/v2/patterns/FormSection.js.map +1 -1
- package/dist/esm/v2/patterns/FormikCheckbox.js +29 -39
- package/dist/esm/v2/patterns/FormikCheckbox.js.map +1 -1
- package/dist/esm/v2/patterns/FormikCheckboxGroup.js +56 -60
- package/dist/esm/v2/patterns/FormikCheckboxGroup.js.map +1 -1
- package/dist/esm/v2/patterns/FormikCombobox.js +51 -69
- package/dist/esm/v2/patterns/FormikCombobox.js.map +1 -1
- package/dist/esm/v2/patterns/FormikDatePicker.js +44 -58
- package/dist/esm/v2/patterns/FormikDatePicker.js.map +1 -1
- package/dist/esm/v2/patterns/FormikDateTimePicker.js +44 -58
- package/dist/esm/v2/patterns/FormikDateTimePicker.js.map +1 -1
- package/dist/esm/v2/patterns/FormikErrorFocus.js +22 -23
- package/dist/esm/v2/patterns/FormikErrorFocus.js.map +1 -1
- package/dist/esm/v2/patterns/FormikErrorSummary.js +89 -0
- package/dist/esm/v2/patterns/FormikErrorSummary.js.map +1 -0
- package/dist/esm/v2/patterns/FormikFile.js +94 -78
- package/dist/esm/v2/patterns/FormikFile.js.map +1 -1
- package/dist/esm/v2/patterns/FormikInput.js +40 -53
- package/dist/esm/v2/patterns/FormikInput.js.map +1 -1
- package/dist/esm/v2/patterns/FormikRadioGroup.js +39 -51
- package/dist/esm/v2/patterns/FormikRadioGroup.js.map +1 -1
- package/dist/esm/v2/patterns/FormikReferentielField.js +49 -59
- package/dist/esm/v2/patterns/FormikReferentielField.js.map +1 -1
- package/dist/esm/v2/patterns/FormikSelect.js +64 -87
- package/dist/esm/v2/patterns/FormikSelect.js.map +1 -1
- package/dist/esm/v2/patterns/FormikTextarea.js +30 -46
- package/dist/esm/v2/patterns/FormikTextarea.js.map +1 -1
- package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js +53 -71
- package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
- package/dist/esm/v2/patterns/NetworkErrorBanner.js +6 -7
- package/dist/esm/v2/patterns/NetworkErrorBanner.js.map +1 -1
- package/dist/esm/v2/patterns/PageContent.js +10 -14
- package/dist/esm/v2/patterns/PageContent.js.map +1 -1
- package/dist/esm/v2/patterns/PreviewDrawer.js +153 -0
- package/dist/esm/v2/patterns/PreviewDrawer.js.map +1 -0
- package/dist/esm/v2/patterns/ReferentielField.js +327 -312
- package/dist/esm/v2/patterns/ReferentielField.js.map +1 -1
- package/dist/esm/v2/patterns/RowFavoriteToggle.js +27 -22
- package/dist/esm/v2/patterns/RowFavoriteToggle.js.map +1 -1
- package/dist/esm/v2/patterns/SaveFilterDialog.js +38 -66
- package/dist/esm/v2/patterns/SaveFilterDialog.js.map +1 -1
- package/dist/esm/v2/patterns/SavedFiltersMenu.js +62 -81
- package/dist/esm/v2/patterns/SavedFiltersMenu.js.map +1 -1
- package/dist/esm/v2/patterns/SkeletonPageShell.js +106 -129
- package/dist/esm/v2/patterns/SkeletonPageShell.js.map +1 -1
- package/dist/esm/v2/patterns/SortableHeader.js +22 -45
- package/dist/esm/v2/patterns/SortableHeader.js.map +1 -1
- package/dist/esm/v2/patterns/Tour.js +94 -120
- package/dist/esm/v2/patterns/Tour.js.map +1 -1
- package/dist/esm/v2/patterns/_dataGridShared.js +107 -128
- package/dist/esm/v2/patterns/_dataGridShared.js.map +1 -1
- package/dist/esm/v2/patterns/_pickerSerialisation.js +6 -8
- package/dist/esm/v2/patterns/_pickerSerialisation.js.map +1 -1
- package/dist/esm/v2/patterns/_sort.js +17 -33
- package/dist/esm/v2/patterns/_sort.js.map +1 -1
- package/dist/esm/v2/patterns/_useColumnReorder.js +122 -160
- package/dist/esm/v2/patterns/_useColumnReorder.js.map +1 -1
- package/dist/esm/v2/patterns/_useColumnResize.js +78 -96
- package/dist/esm/v2/patterns/_useColumnResize.js.map +1 -1
- package/dist/esm/v2/patterns/filterCriteria.js +102 -0
- package/dist/esm/v2/patterns/filterCriteria.js.map +1 -0
- package/dist/esm/v2/patterns/index.js +152 -0
- package/dist/esm/v2/patterns/index.js.map +1 -1
- package/dist/esm/v2/patterns/rowActions.js +223 -0
- package/dist/esm/v2/patterns/rowActions.js.map +1 -0
- package/dist/esm/v2/personalization/PersonalizationProvider.js +50 -47
- package/dist/esm/v2/personalization/PersonalizationProvider.js.map +1 -1
- package/dist/esm/v2/personalization/adapters/_storageKey.js +5 -5
- package/dist/esm/v2/personalization/adapters/_storageKey.js.map +1 -1
- package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js +22 -23
- package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
- package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js +13 -13
- package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
- package/dist/esm/v2/personalization/capabilities/favorites.js +36 -60
- package/dist/esm/v2/personalization/capabilities/favorites.js.map +1 -1
- package/dist/esm/v2/personalization/capabilities/favoritesView.js +22 -34
- package/dist/esm/v2/personalization/capabilities/favoritesView.js.map +1 -1
- package/dist/esm/v2/personalization/capabilities/gridPreferences.js +28 -34
- package/dist/esm/v2/personalization/capabilities/gridPreferences.js.map +1 -1
- package/dist/esm/v2/personalization/capabilities/reviveSavedCriteria.js +119 -0
- package/dist/esm/v2/personalization/capabilities/reviveSavedCriteria.js.map +1 -0
- package/dist/esm/v2/personalization/capabilities/savedFilters.js +90 -98
- package/dist/esm/v2/personalization/capabilities/savedFilters.js.map +1 -1
- package/dist/esm/v2/personalization/createPersonalizationStore.js +78 -181
- package/dist/esm/v2/personalization/createPersonalizationStore.js.map +1 -1
- package/dist/esm/v2/personalization/index.js +17 -0
- package/dist/esm/v2/personalization/index.js.map +1 -1
- package/dist/esm/v2/personalization/personalizationContext.js +9 -9
- package/dist/esm/v2/personalization/personalizationContext.js.map +1 -1
- package/dist/esm/v2/personalization/schema.js +8 -9
- package/dist/esm/v2/personalization/schema.js.map +1 -1
- package/dist/esm/v2/referentiel/ReferentielProvider.js +27 -42
- package/dist/esm/v2/referentiel/ReferentielProvider.js.map +1 -1
- package/dist/esm/v2/referentiel/types.js +2 -0
- package/dist/esm/v2/referentiel/types.js.map +1 -0
- package/dist/esm/v2/referentiel/useReferentielClient.js +10 -11
- package/dist/esm/v2/referentiel/useReferentielClient.js.map +1 -1
- package/dist/esm/v2/referentiel/useReferentielOptions.js +60 -117
- package/dist/esm/v2/referentiel/useReferentielOptions.js.map +1 -1
- package/dist/esm/v2/referentiel/useReferentielSearch.js +37 -91
- package/dist/esm/v2/referentiel/useReferentielSearch.js.map +1 -1
- package/dist/esm/v2/theme/_brand.js +8 -24
- package/dist/esm/v2/theme/_brand.js.map +1 -1
- package/dist/esm/v2/theme/_brandSecondary.js +8 -24
- package/dist/esm/v2/theme/_brandSecondary.js.map +1 -1
- package/dist/esm/v2/theme/createPortnetTheme.js +51 -61
- package/dist/esm/v2/theme/createPortnetTheme.js.map +1 -1
- package/dist/esm/v2/theme/cssVariables.js +62 -69
- package/dist/esm/v2/theme/cssVariables.js.map +1 -1
- package/dist/esm/v2/theme/index.js +5 -5
- package/dist/esm/v2/theme/index.js.map +1 -1
- package/dist/esm/v2/tokens/breakpoints.js +14 -14
- package/dist/esm/v2/tokens/breakpoints.js.map +1 -1
- package/dist/esm/v2/tokens/chart.js +261 -0
- package/dist/esm/v2/tokens/chart.js.map +1 -0
- package/dist/esm/v2/tokens/colors.js +22 -22
- package/dist/esm/v2/tokens/colors.js.map +1 -1
- package/dist/esm/v2/tokens/density.js +62 -7
- package/dist/esm/v2/tokens/density.js.map +1 -1
- package/dist/esm/v2/tokens/index.js +49 -34
- package/dist/esm/v2/tokens/index.js.map +1 -1
- package/dist/esm/v2/tokens/motion.js +12 -20
- package/dist/esm/v2/tokens/motion.js.map +1 -1
- package/dist/esm/v2/tokens/radius.js +1 -1
- package/dist/esm/v2/tokens/radius.js.map +1 -1
- package/dist/esm/v2/tokens/shadows.js +6 -6
- package/dist/esm/v2/tokens/shadows.js.map +1 -1
- package/dist/esm/v2/tokens/spacing.js +2 -2
- package/dist/esm/v2/tokens/spacing.js.map +1 -1
- package/dist/esm/v2/tokens/state.js +1 -1
- package/dist/esm/v2/tokens/state.js.map +1 -1
- package/dist/esm/v2/tokens/statusPalette.js +17 -21
- package/dist/esm/v2/tokens/statusPalette.js.map +1 -1
- package/dist/esm/v2/tokens/tokens.json +6 -1
- package/dist/esm/v2/tokens/typography.js +13 -13
- package/dist/esm/v2/tokens/typography.js.map +1 -1
- package/dist/esm/v2/tokens/zIndex.js +1 -1
- package/dist/esm/v2/tokens/zIndex.js.map +1 -1
- package/dist/esm/v2/types/datagrid.js.map +1 -1
- package/dist/esm/v2/utils/apiError.js +16 -37
- package/dist/esm/v2/utils/apiError.js.map +1 -1
- package/dist/esm/v2/utils/contrast.js +31 -32
- package/dist/esm/v2/utils/contrast.js.map +1 -1
- package/dist/esm/v2/utils/cx.js +5 -25
- package/dist/esm/v2/utils/cx.js.map +1 -1
- package/dist/esm/v2/utils/fileDownload.js +23 -26
- package/dist/esm/v2/utils/fileDownload.js.map +1 -1
- package/dist/esm/v2/utils/fileValidation.js +209 -0
- package/dist/esm/v2/utils/fileValidation.js.map +1 -0
- package/dist/esm/v2/utils/fmtDate.js +111 -0
- package/dist/esm/v2/utils/fmtDate.js.map +1 -0
- package/dist/esm/v2/utils/fmtMoney.js +8 -10
- package/dist/esm/v2/utils/fmtMoney.js.map +1 -1
- package/dist/esm/v2/utils/formikErrors.js +78 -0
- package/dist/esm/v2/utils/formikErrors.js.map +1 -0
- package/dist/esm/v2/utils/index.js +35 -2
- package/dist/esm/v2/utils/index.js.map +1 -1
- package/dist/esm/v2/utils/mergeLabels.js +7 -12
- package/dist/esm/v2/utils/mergeLabels.js.map +1 -1
- package/dist/esm/v2/utils/networkStatus.js +12 -12
- package/dist/esm/v2/utils/networkStatus.js.map +1 -1
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +110 -49
- package/dist/index.js.map +1 -1
- package/dist/v2/__tests__/AppMain.test.js +133 -0
- package/dist/v2/__tests__/AppMain.test.js.map +1 -0
- package/dist/v2/__tests__/ChartFigure.test.js +183 -0
- package/dist/v2/__tests__/ChartFigure.test.js.map +1 -0
- package/dist/v2/__tests__/DataGridRowActionsPropagation.test.js +153 -0
- package/dist/v2/__tests__/DataGridRowActionsPropagation.test.js.map +1 -0
- package/dist/v2/__tests__/DrawerTactileTargets.test.js +94 -0
- package/dist/v2/__tests__/DrawerTactileTargets.test.js.map +1 -0
- package/dist/v2/__tests__/FieldError.test.js +82 -49
- package/dist/v2/__tests__/FieldError.test.js.map +1 -1
- package/dist/v2/__tests__/FieldNaming.test.js +161 -0
- package/dist/v2/__tests__/FieldNaming.test.js.map +1 -0
- package/dist/v2/__tests__/FieldWidth.test.js +23 -25
- package/dist/v2/__tests__/FieldWidth.test.js.map +1 -1
- package/dist/v2/__tests__/FileCard.test.js +29 -28
- package/dist/v2/__tests__/FileCard.test.js.map +1 -1
- package/dist/v2/__tests__/FormikCheckbox.test.js +90 -183
- package/dist/v2/__tests__/FormikCheckbox.test.js.map +1 -1
- package/dist/v2/__tests__/FormikDateTimePicker.test.js +38 -48
- package/dist/v2/__tests__/FormikDateTimePicker.test.js.map +1 -1
- package/dist/v2/__tests__/FormikDisplayWidth.test.js +102 -0
- package/dist/v2/__tests__/FormikDisplayWidth.test.js.map +1 -0
- package/dist/v2/__tests__/FormikRadioGroup.test.js +123 -204
- package/dist/v2/__tests__/FormikRadioGroup.test.js.map +1 -1
- package/dist/v2/__tests__/MobileRowCard.test.js +63 -61
- package/dist/v2/__tests__/MobileRowCard.test.js.map +1 -1
- package/dist/v2/__tests__/PreviewDrawer.test.js +169 -0
- package/dist/v2/__tests__/PreviewDrawer.test.js.map +1 -0
- package/dist/v2/__tests__/ReferentielFieldContainer.test.js +159 -0
- package/dist/v2/__tests__/ReferentielFieldContainer.test.js.map +1 -0
- package/dist/v2/__tests__/SectionErrorBoundary.test.js +53 -68
- package/dist/v2/__tests__/SectionErrorBoundary.test.js.map +1 -1
- package/dist/v2/__tests__/apiError.test.js +50 -69
- package/dist/v2/__tests__/apiError.test.js.map +1 -1
- package/dist/v2/__tests__/banned-patterns.test.js +42 -123
- package/dist/v2/__tests__/banned-patterns.test.js.map +1 -1
- package/dist/v2/__tests__/chart-palette.test.js +205 -0
- package/dist/v2/__tests__/chart-palette.test.js.map +1 -0
- package/dist/v2/__tests__/contrast-palette.test.js +42 -74
- package/dist/v2/__tests__/contrast-palette.test.js.map +1 -1
- package/dist/v2/__tests__/cssVariables.test.js +44 -51
- package/dist/v2/__tests__/cssVariables.test.js.map +1 -1
- package/dist/v2/__tests__/fileValidation.test.js +136 -0
- package/dist/v2/__tests__/fileValidation.test.js.map +1 -0
- package/dist/v2/__tests__/filterCriteria.test.js +324 -0
- package/dist/v2/__tests__/filterCriteria.test.js.map +1 -0
- package/dist/v2/__tests__/fmtDate.test.js +69 -0
- package/dist/v2/__tests__/fmtDate.test.js.map +1 -0
- package/dist/v2/__tests__/gap-leakage-refonte.test.js +221 -0
- package/dist/v2/__tests__/gap-leakage-refonte.test.js.map +1 -0
- package/dist/v2/__tests__/labels-merge.test.js +23 -27
- package/dist/v2/__tests__/labels-merge.test.js.map +1 -1
- package/dist/v2/__tests__/locale-fallback.test.js +47 -52
- package/dist/v2/__tests__/locale-fallback.test.js.map +1 -1
- package/dist/v2/__tests__/reviveSavedCriteria.test.js +144 -0
- package/dist/v2/__tests__/reviveSavedCriteria.test.js.map +1 -0
- package/dist/v2/__tests__/rowActions.test.js +186 -0
- package/dist/v2/__tests__/rowActions.test.js.map +1 -0
- package/dist/v2/__tests__/useFocusOnRouteChange.test.js +156 -0
- package/dist/v2/__tests__/useFocusOnRouteChange.test.js.map +1 -0
- package/dist/v2/__tests__/useFocusTrap.test.js +270 -407
- package/dist/v2/__tests__/useFocusTrap.test.js.map +1 -1
- package/dist/v2/__tests__/usePrefersReducedMotion.test.js +123 -0
- package/dist/v2/__tests__/usePrefersReducedMotion.test.js.map +1 -0
- package/dist/v2/components/Accordion.js +60 -82
- package/dist/v2/components/Accordion.js.map +1 -1
- package/dist/v2/components/ActionStrip.js +40 -52
- package/dist/v2/components/ActionStrip.js.map +1 -1
- package/dist/v2/components/Banner.js +42 -41
- package/dist/v2/components/Banner.js.map +1 -1
- package/dist/v2/components/Busy.js +22 -27
- package/dist/v2/components/Busy.js.map +1 -1
- package/dist/v2/components/Button.js +39 -50
- package/dist/v2/components/Button.js.map +1 -1
- package/dist/v2/components/CategoryTag.d.ts.map +1 -1
- package/dist/v2/components/CategoryTag.js +49 -32
- package/dist/v2/components/CategoryTag.js.map +1 -1
- package/dist/v2/components/Checkbox.js +39 -45
- package/dist/v2/components/Checkbox.js.map +1 -1
- package/dist/v2/components/Chip.js +29 -42
- package/dist/v2/components/Chip.js.map +1 -1
- package/dist/v2/components/Combobox.js +122 -144
- package/dist/v2/components/Combobox.js.map +1 -1
- package/dist/v2/components/CommandPalette.js +138 -225
- package/dist/v2/components/CommandPalette.js.map +1 -1
- package/dist/v2/components/ConfirmDialog.js +46 -56
- package/dist/v2/components/ConfirmDialog.js.map +1 -1
- package/dist/v2/components/DatePicker.js +81 -86
- package/dist/v2/components/DatePicker.js.map +1 -1
- package/dist/v2/components/DateRangePicker.js +77 -87
- package/dist/v2/components/DateRangePicker.js.map +1 -1
- package/dist/v2/components/DateTimePicker.js +84 -91
- package/dist/v2/components/DateTimePicker.js.map +1 -1
- package/dist/v2/components/Drawer.d.ts.map +1 -1
- package/dist/v2/components/Drawer.js +93 -88
- package/dist/v2/components/Drawer.js.map +1 -1
- package/dist/v2/components/Dropzone.js +150 -196
- package/dist/v2/components/Dropzone.js.map +1 -1
- package/dist/v2/components/EmptyState.js +18 -20
- package/dist/v2/components/EmptyState.js.map +1 -1
- package/dist/v2/components/FavoriteToggle.js +28 -39
- package/dist/v2/components/FavoriteToggle.js.map +1 -1
- package/dist/v2/components/Field.d.ts +62 -4
- package/dist/v2/components/Field.d.ts.map +1 -1
- package/dist/v2/components/Field.js +169 -70
- package/dist/v2/components/Field.js.map +1 -1
- package/dist/v2/components/FieldError.js +18 -21
- package/dist/v2/components/FieldError.js.map +1 -1
- package/dist/v2/components/FieldHelp.js +40 -60
- package/dist/v2/components/FieldHelp.js.map +1 -1
- package/dist/v2/components/FileCard.js +27 -31
- package/dist/v2/components/FileCard.js.map +1 -1
- package/dist/v2/components/FilterTab.js +30 -38
- package/dist/v2/components/FilterTab.js.map +1 -1
- package/dist/v2/components/ForbiddenPage.d.ts +25 -1
- package/dist/v2/components/ForbiddenPage.d.ts.map +1 -1
- package/dist/v2/components/ForbiddenPage.js +37 -17
- package/dist/v2/components/ForbiddenPage.js.map +1 -1
- package/dist/v2/components/FormGrid.js +53 -59
- package/dist/v2/components/FormGrid.js.map +1 -1
- package/dist/v2/components/FormikDisplay.d.ts +50 -1
- package/dist/v2/components/FormikDisplay.d.ts.map +1 -1
- package/dist/v2/components/FormikDisplay.js +108 -33
- package/dist/v2/components/FormikDisplay.js.map +1 -1
- package/dist/v2/components/Input.d.ts +40 -0
- package/dist/v2/components/Input.d.ts.map +1 -1
- package/dist/v2/components/Input.js +81 -41
- package/dist/v2/components/Input.js.map +1 -1
- package/dist/v2/components/KPICard.js +57 -67
- package/dist/v2/components/KPICard.js.map +1 -1
- package/dist/v2/components/KPIStrip.js +16 -22
- package/dist/v2/components/KPIStrip.js.map +1 -1
- package/dist/v2/components/KV.js +25 -31
- package/dist/v2/components/KV.js.map +1 -1
- package/dist/v2/components/KVGrid.js +19 -26
- package/dist/v2/components/KVGrid.js.map +1 -1
- package/dist/v2/components/Layout.js +91 -120
- package/dist/v2/components/Layout.js.map +1 -1
- package/dist/v2/components/MobileRowCard.js +79 -91
- package/dist/v2/components/MobileRowCard.js.map +1 -1
- package/dist/v2/components/Modal.js +61 -69
- package/dist/v2/components/Modal.js.map +1 -1
- package/dist/v2/components/NetworkErrorPage.d.ts +19 -1
- package/dist/v2/components/NetworkErrorPage.d.ts.map +1 -1
- package/dist/v2/components/NetworkErrorPage.js +38 -21
- package/dist/v2/components/NetworkErrorPage.js.map +1 -1
- package/dist/v2/components/NotFoundPage.d.ts +17 -1
- package/dist/v2/components/NotFoundPage.d.ts.map +1 -1
- package/dist/v2/components/NotFoundPage.js +37 -18
- package/dist/v2/components/NotFoundPage.js.map +1 -1
- package/dist/v2/components/NumberInput.js +88 -118
- package/dist/v2/components/NumberInput.js.map +1 -1
- package/dist/v2/components/OverflowMenu.js +38 -56
- package/dist/v2/components/OverflowMenu.js.map +1 -1
- package/dist/v2/components/PdfViewer.js +34 -45
- package/dist/v2/components/PdfViewer.js.map +1 -1
- package/dist/v2/components/ProgressBar.js +42 -49
- package/dist/v2/components/ProgressBar.js.map +1 -1
- package/dist/v2/components/Radio.js +59 -67
- package/dist/v2/components/Radio.js.map +1 -1
- package/dist/v2/components/SectionErrorBoundary.js +90 -135
- package/dist/v2/components/SectionErrorBoundary.js.map +1 -1
- package/dist/v2/components/SectionHeader.js +34 -41
- package/dist/v2/components/SectionHeader.js.map +1 -1
- package/dist/v2/components/Segmented.js +69 -93
- package/dist/v2/components/Segmented.js.map +1 -1
- package/dist/v2/components/Select.d.ts +26 -2
- package/dist/v2/components/Select.d.ts.map +1 -1
- package/dist/v2/components/Select.js +120 -155
- package/dist/v2/components/Select.js.map +1 -1
- package/dist/v2/components/ServerErrorPage.d.ts +27 -1
- package/dist/v2/components/ServerErrorPage.d.ts.map +1 -1
- package/dist/v2/components/ServerErrorPage.js +37 -20
- package/dist/v2/components/ServerErrorPage.js.map +1 -1
- package/dist/v2/components/Skeleton.js +86 -100
- package/dist/v2/components/Skeleton.js.map +1 -1
- package/dist/v2/components/SkipLink.js +9 -12
- package/dist/v2/components/SkipLink.js.map +1 -1
- package/dist/v2/components/Spinner.js +16 -25
- package/dist/v2/components/Spinner.js.map +1 -1
- package/dist/v2/components/Status.js +18 -29
- package/dist/v2/components/Status.js.map +1 -1
- package/dist/v2/components/Stepper.js +80 -82
- package/dist/v2/components/Stepper.js.map +1 -1
- package/dist/v2/components/Surface.js +34 -49
- package/dist/v2/components/Surface.js.map +1 -1
- package/dist/v2/components/Switch.js +29 -37
- package/dist/v2/components/Switch.js.map +1 -1
- package/dist/v2/components/TabPanel.d.ts +17 -0
- package/dist/v2/components/TabPanel.d.ts.map +1 -0
- package/dist/v2/components/TabPanel.js +90 -0
- package/dist/v2/components/TabPanel.js.map +1 -0
- package/dist/v2/components/Tabs.d.ts +25 -0
- package/dist/v2/components/Tabs.d.ts.map +1 -1
- package/dist/v2/components/Tabs.js +53 -29
- package/dist/v2/components/Tabs.js.map +1 -1
- package/dist/v2/components/TelInput.js +80 -115
- package/dist/v2/components/TelInput.js.map +1 -1
- package/dist/v2/components/Textarea.js +26 -35
- package/dist/v2/components/Textarea.js.map +1 -1
- package/dist/v2/components/TimePicker.js +62 -74
- package/dist/v2/components/TimePicker.js.map +1 -1
- package/dist/v2/components/Toast.js +119 -174
- package/dist/v2/components/Toast.js.map +1 -1
- package/dist/v2/components/Tooltip.js +23 -38
- package/dist/v2/components/Tooltip.js.map +1 -1
- package/dist/v2/components/_ErrorPageBody.js +15 -16
- package/dist/v2/components/_ErrorPageBody.js.map +1 -1
- package/dist/v2/components/_pickerShared.js +5 -5
- package/dist/v2/components/_pickerShared.js.map +1 -1
- package/dist/v2/components/index.d.ts +40 -1
- package/dist/v2/components/index.d.ts.map +1 -1
- package/dist/v2/components/index.js +153 -136
- package/dist/v2/components/index.js.map +1 -1
- package/dist/v2/hooks/index.d.ts +65 -0
- package/dist/v2/hooks/index.d.ts.map +1 -1
- package/dist/v2/hooks/index.js +63 -24
- package/dist/v2/hooks/index.js.map +1 -1
- package/dist/v2/hooks/useAppliedFilters.d.ts +102 -0
- package/dist/v2/hooks/useAppliedFilters.d.ts.map +1 -0
- package/dist/v2/hooks/useAppliedFilters.js +117 -0
- package/dist/v2/hooks/useAppliedFilters.js.map +1 -0
- package/dist/v2/hooks/useDebouncedCallback.d.ts +64 -0
- package/dist/v2/hooks/useDebouncedCallback.d.ts.map +1 -0
- package/dist/v2/hooks/useDebouncedCallback.js +87 -0
- package/dist/v2/hooks/useDebouncedCallback.js.map +1 -0
- package/dist/v2/hooks/useDelayedFlag.js +6 -20
- package/dist/v2/hooks/useDelayedFlag.js.map +1 -1
- package/dist/v2/hooks/useDensity.d.ts.map +1 -1
- package/dist/v2/hooks/useDensity.js +14 -18
- package/dist/v2/hooks/useDensity.js.map +1 -1
- package/dist/v2/hooks/useFocusFirstError.js +26 -34
- package/dist/v2/hooks/useFocusFirstError.js.map +1 -1
- package/dist/v2/hooks/useFocusOnRouteChange.d.ts +65 -0
- package/dist/v2/hooks/useFocusOnRouteChange.d.ts.map +1 -0
- package/dist/v2/hooks/useFocusOnRouteChange.js +88 -0
- package/dist/v2/hooks/useFocusOnRouteChange.js.map +1 -0
- package/dist/v2/hooks/useFocusTrap.js +20 -24
- package/dist/v2/hooks/useFocusTrap.js.map +1 -1
- package/dist/v2/hooks/useFormAutoSave.d.ts +4 -4
- package/dist/v2/hooks/useFormAutoSave.d.ts.map +1 -1
- package/dist/v2/hooks/useFormAutoSave.js +39 -54
- package/dist/v2/hooks/useFormAutoSave.js.map +1 -1
- package/dist/v2/hooks/useFormCompletionProgress.d.ts +1 -1
- package/dist/v2/hooks/useFormCompletionProgress.d.ts.map +1 -1
- package/dist/v2/hooks/useFormCompletionProgress.js +33 -52
- package/dist/v2/hooks/useFormCompletionProgress.js.map +1 -1
- package/dist/v2/hooks/useKeyboardShortcuts.d.ts +25 -0
- package/dist/v2/hooks/useKeyboardShortcuts.d.ts.map +1 -0
- package/dist/v2/hooks/useKeyboardShortcuts.js +132 -0
- package/dist/v2/hooks/useKeyboardShortcuts.js.map +1 -0
- package/dist/v2/hooks/usePrefersReducedMotion.d.ts +56 -0
- package/dist/v2/hooks/usePrefersReducedMotion.d.ts.map +1 -0
- package/dist/v2/hooks/usePrefersReducedMotion.js +105 -0
- package/dist/v2/hooks/usePrefersReducedMotion.js.map +1 -0
- package/dist/v2/hooks/useResolvedDensity.js +5 -13
- package/dist/v2/hooks/useResolvedDensity.js.map +1 -1
- package/dist/v2/hooks/useSortedRows.js +4 -6
- package/dist/v2/hooks/useSortedRows.js.map +1 -1
- package/dist/v2/hooks/useTabLoading.js +7 -22
- package/dist/v2/hooks/useTabLoading.js.map +1 -1
- package/dist/v2/index.js +143 -145
- package/dist/v2/index.js.map +1 -1
- package/dist/v2/modalContext.js +2 -2
- package/dist/v2/modalContext.js.map +1 -1
- package/dist/v2/models/favorite.d.ts +8 -9
- package/dist/v2/models/favorite.d.ts.map +1 -1
- package/dist/v2/models/favorite.js.map +1 -1
- package/dist/v2/models/index.js +4 -4
- package/dist/v2/models/index.js.map +1 -1
- package/dist/v2/models/personalization.d.ts +44 -48
- package/dist/v2/models/personalization.d.ts.map +1 -1
- package/dist/v2/models/personalization.js.map +1 -1
- package/dist/v2/models/referentiel.d.ts +32 -50
- package/dist/v2/models/referentiel.d.ts.map +1 -1
- package/dist/v2/models/referentiel.js.map +1 -1
- package/dist/v2/models/savedFilter.d.ts +8 -17
- package/dist/v2/models/savedFilter.d.ts.map +1 -1
- package/dist/v2/models/savedFilter.js.map +1 -1
- package/dist/v2/patterns/ActionBar.js +152 -187
- package/dist/v2/patterns/ActionBar.js.map +1 -1
- package/dist/v2/patterns/AppMain.d.ts +109 -0
- package/dist/v2/patterns/AppMain.d.ts.map +1 -0
- package/dist/v2/patterns/AppMain.js +115 -0
- package/dist/v2/patterns/AppMain.js.map +1 -0
- package/dist/v2/patterns/BulkActionBar.js +40 -42
- package/dist/v2/patterns/BulkActionBar.js.map +1 -1
- package/dist/v2/patterns/ChartFigure.d.ts +124 -0
- package/dist/v2/patterns/ChartFigure.d.ts.map +1 -0
- package/dist/v2/patterns/ChartFigure.js +159 -0
- package/dist/v2/patterns/ChartFigure.js.map +1 -0
- package/dist/v2/patterns/CollapsibleDataGrid.js +138 -174
- package/dist/v2/patterns/CollapsibleDataGrid.js.map +1 -1
- package/dist/v2/patterns/ColumnsToggle.js +60 -94
- package/dist/v2/patterns/ColumnsToggle.js.map +1 -1
- package/dist/v2/patterns/DataGrid.d.ts.map +1 -1
- package/dist/v2/patterns/DataGrid.js +262 -297
- package/dist/v2/patterns/DataGrid.js.map +1 -1
- package/dist/v2/patterns/DataGridSettingsMenu.d.ts +12 -0
- package/dist/v2/patterns/DataGridSettingsMenu.d.ts.map +1 -1
- package/dist/v2/patterns/DataGridSettingsMenu.js +104 -121
- package/dist/v2/patterns/DataGridSettingsMenu.js.map +1 -1
- package/dist/v2/patterns/DataGridToolbar.js +103 -106
- package/dist/v2/patterns/DataGridToolbar.js.map +1 -1
- package/dist/v2/patterns/DataGridVirtualized.js +179 -217
- package/dist/v2/patterns/DataGridVirtualized.js.map +1 -1
- package/dist/v2/patterns/DeleteResourceConfirmDialog.js +32 -35
- package/dist/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
- package/dist/v2/patterns/DetailSplit.d.ts +87 -0
- package/dist/v2/patterns/DetailSplit.d.ts.map +1 -0
- package/dist/v2/patterns/DetailSplit.js +116 -0
- package/dist/v2/patterns/DetailSplit.js.map +1 -0
- package/dist/v2/patterns/FavoriteColumn.js +22 -23
- package/dist/v2/patterns/FavoriteColumn.js.map +1 -1
- package/dist/v2/patterns/FavoritesFilter.js +36 -44
- package/dist/v2/patterns/FavoritesFilter.js.map +1 -1
- package/dist/v2/patterns/FilterTabBar.d.ts +28 -0
- package/dist/v2/patterns/FilterTabBar.d.ts.map +1 -0
- package/dist/v2/patterns/FilterTabBar.js +120 -0
- package/dist/v2/patterns/FilterTabBar.js.map +1 -0
- package/dist/v2/patterns/FormErrorSummary.js +20 -23
- package/dist/v2/patterns/FormErrorSummary.js.map +1 -1
- package/dist/v2/patterns/FormPageShell.js +53 -50
- package/dist/v2/patterns/FormPageShell.js.map +1 -1
- package/dist/v2/patterns/FormSection.d.ts +8 -3
- package/dist/v2/patterns/FormSection.d.ts.map +1 -1
- package/dist/v2/patterns/FormSection.js +44 -51
- package/dist/v2/patterns/FormSection.js.map +1 -1
- package/dist/v2/patterns/FormikCheckbox.js +36 -45
- package/dist/v2/patterns/FormikCheckbox.js.map +1 -1
- package/dist/v2/patterns/FormikCheckboxGroup.d.ts +17 -1
- package/dist/v2/patterns/FormikCheckboxGroup.d.ts.map +1 -1
- package/dist/v2/patterns/FormikCheckboxGroup.js +62 -65
- package/dist/v2/patterns/FormikCheckboxGroup.js.map +1 -1
- package/dist/v2/patterns/FormikCombobox.js +55 -72
- package/dist/v2/patterns/FormikCombobox.js.map +1 -1
- package/dist/v2/patterns/FormikDatePicker.js +50 -64
- package/dist/v2/patterns/FormikDatePicker.js.map +1 -1
- package/dist/v2/patterns/FormikDateTimePicker.js +50 -64
- package/dist/v2/patterns/FormikDateTimePicker.js.map +1 -1
- package/dist/v2/patterns/FormikErrorFocus.js +25 -26
- package/dist/v2/patterns/FormikErrorFocus.js.map +1 -1
- package/dist/v2/patterns/FormikErrorSummary.d.ts +74 -0
- package/dist/v2/patterns/FormikErrorSummary.d.ts.map +1 -0
- package/dist/v2/patterns/FormikErrorSummary.js +97 -0
- package/dist/v2/patterns/FormikErrorSummary.js.map +1 -0
- package/dist/v2/patterns/FormikFile.d.ts +14 -1
- package/dist/v2/patterns/FormikFile.d.ts.map +1 -1
- package/dist/v2/patterns/FormikFile.js +99 -83
- package/dist/v2/patterns/FormikFile.js.map +1 -1
- package/dist/v2/patterns/FormikInput.js +45 -58
- package/dist/v2/patterns/FormikInput.js.map +1 -1
- package/dist/v2/patterns/FormikRadioGroup.js +45 -56
- package/dist/v2/patterns/FormikRadioGroup.js.map +1 -1
- package/dist/v2/patterns/FormikReferentielField.d.ts +12 -1
- package/dist/v2/patterns/FormikReferentielField.d.ts.map +1 -1
- package/dist/v2/patterns/FormikReferentielField.js +54 -64
- package/dist/v2/patterns/FormikReferentielField.js.map +1 -1
- package/dist/v2/patterns/FormikSelect.js +70 -92
- package/dist/v2/patterns/FormikSelect.js.map +1 -1
- package/dist/v2/patterns/FormikTextarea.js +35 -51
- package/dist/v2/patterns/FormikTextarea.js.map +1 -1
- package/dist/v2/patterns/KeyboardShortcutsHelp.js +60 -80
- package/dist/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
- package/dist/v2/patterns/NetworkErrorBanner.js +13 -16
- package/dist/v2/patterns/NetworkErrorBanner.js.map +1 -1
- package/dist/v2/patterns/PageContent.js +17 -20
- package/dist/v2/patterns/PageContent.js.map +1 -1
- package/dist/v2/patterns/PreviewDrawer.d.ts +49 -0
- package/dist/v2/patterns/PreviewDrawer.d.ts.map +1 -0
- package/dist/v2/patterns/PreviewDrawer.js +159 -0
- package/dist/v2/patterns/PreviewDrawer.js.map +1 -0
- package/dist/v2/patterns/ReferentielField.d.ts +86 -2
- package/dist/v2/patterns/ReferentielField.d.ts.map +1 -1
- package/dist/v2/patterns/ReferentielField.js +347 -327
- package/dist/v2/patterns/ReferentielField.js.map +1 -1
- package/dist/v2/patterns/RowFavoriteToggle.d.ts +6 -0
- package/dist/v2/patterns/RowFavoriteToggle.d.ts.map +1 -1
- package/dist/v2/patterns/RowFavoriteToggle.js +38 -30
- package/dist/v2/patterns/RowFavoriteToggle.js.map +1 -1
- package/dist/v2/patterns/SaveFilterDialog.js +50 -77
- package/dist/v2/patterns/SaveFilterDialog.js.map +1 -1
- package/dist/v2/patterns/SavedFiltersMenu.js +89 -107
- package/dist/v2/patterns/SavedFiltersMenu.js.map +1 -1
- package/dist/v2/patterns/SkeletonPageShell.js +122 -143
- package/dist/v2/patterns/SkeletonPageShell.js.map +1 -1
- package/dist/v2/patterns/SortableHeader.js +35 -57
- package/dist/v2/patterns/SortableHeader.js.map +1 -1
- package/dist/v2/patterns/Tour.js +121 -142
- package/dist/v2/patterns/Tour.js.map +1 -1
- package/dist/v2/patterns/_dataGridShared.d.ts.map +1 -1
- package/dist/v2/patterns/_dataGridShared.js +131 -147
- package/dist/v2/patterns/_dataGridShared.js.map +1 -1
- package/dist/v2/patterns/_pickerSerialisation.js +9 -10
- package/dist/v2/patterns/_pickerSerialisation.js.map +1 -1
- package/dist/v2/patterns/_sort.js +17 -33
- package/dist/v2/patterns/_sort.js.map +1 -1
- package/dist/v2/patterns/_useColumnReorder.js +124 -163
- package/dist/v2/patterns/_useColumnReorder.js.map +1 -1
- package/dist/v2/patterns/_useColumnResize.js +80 -99
- package/dist/v2/patterns/_useColumnResize.js.map +1 -1
- package/dist/v2/patterns/filterCriteria.d.ts +78 -0
- package/dist/v2/patterns/filterCriteria.d.ts.map +1 -0
- package/dist/v2/patterns/filterCriteria.js +110 -0
- package/dist/v2/patterns/filterCriteria.js.map +1 -0
- package/dist/v2/patterns/index.d.ts +160 -0
- package/dist/v2/patterns/index.d.ts.map +1 -1
- package/dist/v2/patterns/index.js +157 -79
- package/dist/v2/patterns/index.js.map +1 -1
- package/dist/v2/patterns/rowActions.d.ts +150 -0
- package/dist/v2/patterns/rowActions.d.ts.map +1 -0
- package/dist/v2/patterns/rowActions.js +232 -0
- package/dist/v2/patterns/rowActions.js.map +1 -0
- package/dist/v2/personalization/PersonalizationProvider.d.ts.map +1 -1
- package/dist/v2/personalization/PersonalizationProvider.js +57 -53
- package/dist/v2/personalization/PersonalizationProvider.js.map +1 -1
- package/dist/v2/personalization/adapters/_storageKey.js +5 -5
- package/dist/v2/personalization/adapters/_storageKey.js.map +1 -1
- package/dist/v2/personalization/adapters/createLocalStorageAdapter.js +25 -24
- package/dist/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
- package/dist/v2/personalization/adapters/createMemoryAdapter.js +14 -14
- package/dist/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
- package/dist/v2/personalization/adapters/index.js +5 -5
- package/dist/v2/personalization/adapters/index.js.map +1 -1
- package/dist/v2/personalization/capabilities/favorites.js +39 -62
- package/dist/v2/personalization/capabilities/favorites.js.map +1 -1
- package/dist/v2/personalization/capabilities/favoritesView.js +25 -37
- package/dist/v2/personalization/capabilities/favoritesView.js.map +1 -1
- package/dist/v2/personalization/capabilities/gridPreferences.js +31 -36
- package/dist/v2/personalization/capabilities/gridPreferences.js.map +1 -1
- package/dist/v2/personalization/capabilities/index.js +12 -12
- package/dist/v2/personalization/capabilities/reviveSavedCriteria.d.ts +88 -0
- package/dist/v2/personalization/capabilities/reviveSavedCriteria.d.ts.map +1 -0
- package/dist/v2/personalization/capabilities/reviveSavedCriteria.js +126 -0
- package/dist/v2/personalization/capabilities/reviveSavedCriteria.js.map +1 -0
- package/dist/v2/personalization/capabilities/savedFilters.js +93 -100
- package/dist/v2/personalization/capabilities/savedFilters.js.map +1 -1
- package/dist/v2/personalization/createPersonalizationStore.d.ts.map +1 -1
- package/dist/v2/personalization/createPersonalizationStore.js +81 -182
- package/dist/v2/personalization/createPersonalizationStore.js.map +1 -1
- package/dist/v2/personalization/index.d.ts +16 -0
- package/dist/v2/personalization/index.d.ts.map +1 -1
- package/dist/v2/personalization/index.js +30 -23
- package/dist/v2/personalization/index.js.map +1 -1
- package/dist/v2/personalization/personalizationContext.js +10 -12
- package/dist/v2/personalization/personalizationContext.js.map +1 -1
- package/dist/v2/personalization/schema.js +8 -9
- package/dist/v2/personalization/schema.js.map +1 -1
- package/dist/v2/referentiel/ReferentielProvider.js +31 -45
- package/dist/v2/referentiel/ReferentielProvider.js.map +1 -1
- package/dist/v2/referentiel/index.js +11 -13
- package/dist/v2/referentiel/index.js.map +1 -1
- package/dist/v2/referentiel/types.d.ts +105 -0
- package/dist/v2/referentiel/types.d.ts.map +1 -0
- package/dist/v2/referentiel/types.js +6 -0
- package/dist/v2/referentiel/types.js.map +1 -0
- package/dist/v2/referentiel/useReferentielClient.js +13 -16
- package/dist/v2/referentiel/useReferentielClient.js.map +1 -1
- package/dist/v2/referentiel/useReferentielOptions.d.ts +7 -17
- package/dist/v2/referentiel/useReferentielOptions.d.ts.map +1 -1
- package/dist/v2/referentiel/useReferentielOptions.js +63 -120
- package/dist/v2/referentiel/useReferentielOptions.js.map +1 -1
- package/dist/v2/referentiel/useReferentielSearch.d.ts +7 -48
- package/dist/v2/referentiel/useReferentielSearch.d.ts.map +1 -1
- package/dist/v2/referentiel/useReferentielSearch.js +40 -95
- package/dist/v2/referentiel/useReferentielSearch.js.map +1 -1
- package/dist/v2/theme/_brand.js +12 -26
- package/dist/v2/theme/_brand.js.map +1 -1
- package/dist/v2/theme/_brandSecondary.js +12 -26
- package/dist/v2/theme/_brandSecondary.js.map +1 -1
- package/dist/v2/theme/createPortnetTheme.js +41 -49
- package/dist/v2/theme/createPortnetTheme.js.map +1 -1
- package/dist/v2/theme/cssVariables.d.ts +3 -3
- package/dist/v2/theme/cssVariables.d.ts.map +1 -1
- package/dist/v2/theme/cssVariables.js +65 -70
- package/dist/v2/theme/cssVariables.js.map +1 -1
- package/dist/v2/theme/index.js +10 -10
- package/dist/v2/theme/index.js.map +1 -1
- package/dist/v2/tokens/breakpoints.js +16 -16
- package/dist/v2/tokens/breakpoints.js.map +1 -1
- package/dist/v2/tokens/chart.d.ts +103 -0
- package/dist/v2/tokens/chart.d.ts.map +1 -0
- package/dist/v2/tokens/chart.js +270 -0
- package/dist/v2/tokens/chart.js.map +1 -0
- package/dist/v2/tokens/colors.js +24 -24
- package/dist/v2/tokens/colors.js.map +1 -1
- package/dist/v2/tokens/density.d.ts +104 -0
- package/dist/v2/tokens/density.d.ts.map +1 -1
- package/dist/v2/tokens/density.js +67 -12
- package/dist/v2/tokens/density.js.map +1 -1
- package/dist/v2/tokens/index.d.ts +50 -1
- package/dist/v2/tokens/index.d.ts.map +1 -1
- package/dist/v2/tokens/index.js +116 -68
- package/dist/v2/tokens/index.js.map +1 -1
- package/dist/v2/tokens/motion.js +16 -22
- package/dist/v2/tokens/motion.js.map +1 -1
- package/dist/v2/tokens/radius.js +3 -3
- package/dist/v2/tokens/radius.js.map +1 -1
- package/dist/v2/tokens/shadows.js +8 -8
- package/dist/v2/tokens/shadows.js.map +1 -1
- package/dist/v2/tokens/spacing.js +4 -4
- package/dist/v2/tokens/spacing.js.map +1 -1
- package/dist/v2/tokens/state.js +3 -3
- package/dist/v2/tokens/state.js.map +1 -1
- package/dist/v2/tokens/statusPalette.js +21 -23
- package/dist/v2/tokens/statusPalette.js.map +1 -1
- package/dist/v2/tokens/tokens.json +6 -1
- package/dist/v2/tokens/typography.js +15 -15
- package/dist/v2/tokens/typography.js.map +1 -1
- package/dist/v2/tokens/zIndex.js +3 -3
- package/dist/v2/tokens/zIndex.js.map +1 -1
- package/dist/v2/types/datagrid.d.ts +9 -1
- package/dist/v2/types/datagrid.d.ts.map +1 -1
- package/dist/v2/types/datagrid.js.map +1 -1
- package/dist/v2/types/index.js +2 -2
- package/dist/v2/types/index.js.map +1 -1
- package/dist/v2/utils/apiError.js +16 -37
- package/dist/v2/utils/apiError.js.map +1 -1
- package/dist/v2/utils/contrast.js +31 -32
- package/dist/v2/utils/contrast.js.map +1 -1
- package/dist/v2/utils/cx.js +7 -27
- package/dist/v2/utils/cx.js.map +1 -1
- package/dist/v2/utils/fileDownload.js +25 -28
- package/dist/v2/utils/fileDownload.js.map +1 -1
- package/dist/v2/utils/fileValidation.d.ts +116 -0
- package/dist/v2/utils/fileValidation.d.ts.map +1 -0
- package/dist/v2/utils/fileValidation.js +220 -0
- package/dist/v2/utils/fileValidation.js.map +1 -0
- package/dist/v2/utils/fmtDate.d.ts +103 -0
- package/dist/v2/utils/fmtDate.d.ts.map +1 -0
- package/dist/v2/utils/fmtDate.js +119 -0
- package/dist/v2/utils/fmtDate.js.map +1 -0
- package/dist/v2/utils/fmtMoney.d.ts +3 -3
- package/dist/v2/utils/fmtMoney.d.ts.map +1 -1
- package/dist/v2/utils/fmtMoney.js +9 -11
- package/dist/v2/utils/fmtMoney.js.map +1 -1
- package/dist/v2/utils/formikErrors.d.ts +67 -0
- package/dist/v2/utils/formikErrors.d.ts.map +1 -0
- package/dist/v2/utils/formikErrors.js +85 -0
- package/dist/v2/utils/formikErrors.js.map +1 -0
- package/dist/v2/utils/index.d.ts +5 -0
- package/dist/v2/utils/index.d.ts.map +1 -1
- package/dist/v2/utils/index.js +67 -18
- package/dist/v2/utils/index.js.map +1 -1
- package/dist/v2/utils/mergeLabels.js +9 -14
- package/dist/v2/utils/mergeLabels.js.map +1 -1
- package/dist/v2/utils/networkStatus.js +14 -14
- package/dist/v2/utils/networkStatus.js.map +1 -1
- package/package.json +26 -9
|
@@ -1,15 +1,3 @@
|
|
|
1
|
-
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
2
|
-
var _excluded = ["initialValue", "required", "onValues"];
|
|
3
|
-
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) { if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; } return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) { keys.push(key); } return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) { "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); } }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
|
|
4
|
-
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
5
|
-
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
6
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
7
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
8
|
-
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
9
|
-
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
10
|
-
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
11
|
-
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
12
|
-
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
13
1
|
import "@testing-library/jest-dom";
|
|
14
2
|
import * as React from "react";
|
|
15
3
|
import { render, screen } from "@testing-library/react";
|
|
@@ -53,172 +41,106 @@ import FormikCheckbox from "../patterns/FormikCheckbox";
|
|
|
53
41
|
|
|
54
42
|
/** Minimal host: a Formik form exposing its values for assertion. */
|
|
55
43
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
56
|
-
function Hote(
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
44
|
+
function Hote({
|
|
45
|
+
initialValue,
|
|
46
|
+
required,
|
|
47
|
+
onValues,
|
|
48
|
+
...props
|
|
49
|
+
}) {
|
|
61
50
|
return /*#__PURE__*/_jsx(Formik, {
|
|
62
51
|
initialValues: {
|
|
63
52
|
flag: initialValue
|
|
64
53
|
},
|
|
65
|
-
validate:
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
children: function children(_ref2) {
|
|
74
|
-
var values = _ref2.values;
|
|
75
|
-
onValues === null || onValues === void 0 ? void 0 : onValues(values);
|
|
54
|
+
validate: values => required && values.flag !== true ? {
|
|
55
|
+
flag: "Cochez cette case pour continuer."
|
|
56
|
+
} : {},
|
|
57
|
+
onSubmit: () => undefined,
|
|
58
|
+
children: ({
|
|
59
|
+
values
|
|
60
|
+
}) => {
|
|
61
|
+
onValues?.(values);
|
|
76
62
|
return /*#__PURE__*/_jsx(Form, {
|
|
77
|
-
children: /*#__PURE__*/_jsx(FormikCheckbox,
|
|
63
|
+
children: /*#__PURE__*/_jsx(FormikCheckbox, {
|
|
78
64
|
name: "flag",
|
|
79
|
-
label: "Premi\xE8re d\xE9claration"
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
65
|
+
label: "Premi\xE8re d\xE9claration",
|
|
66
|
+
...(required !== undefined ? {
|
|
67
|
+
required
|
|
68
|
+
} : {}),
|
|
69
|
+
...props
|
|
70
|
+
})
|
|
83
71
|
});
|
|
84
72
|
}
|
|
85
73
|
});
|
|
86
74
|
}
|
|
87
|
-
describe("FormikCheckbox — the value stays a BOOLEAN",
|
|
88
|
-
test("toggling writes `true`, untoggling writes `false` — never an array",
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
return vues.push(v.flag);
|
|
99
|
-
}
|
|
100
|
-
}));
|
|
101
|
-
_context.next = 4;
|
|
102
|
-
return userEvent.click(screen.getByRole("checkbox"));
|
|
103
|
-
case 4:
|
|
104
|
-
expect(vues.at(-1)).toBe(true);
|
|
105
|
-
_context.next = 7;
|
|
106
|
-
return userEvent.click(screen.getByRole("checkbox"));
|
|
107
|
-
case 7:
|
|
108
|
-
expect(vues.at(-1)).toBe(false);
|
|
75
|
+
describe("FormikCheckbox — the value stays a BOOLEAN", () => {
|
|
76
|
+
test("toggling writes `true`, untoggling writes `false` — never an array", async () => {
|
|
77
|
+
const vues = [];
|
|
78
|
+
render(/*#__PURE__*/_jsx(Hote, {
|
|
79
|
+
initialValue: false,
|
|
80
|
+
onValues: v => vues.push(v.flag)
|
|
81
|
+
}));
|
|
82
|
+
await userEvent.click(screen.getByRole("checkbox"));
|
|
83
|
+
expect(vues.at(-1)).toBe(true);
|
|
84
|
+
await userEvent.click(screen.getByRole("checkbox"));
|
|
85
|
+
expect(vues.at(-1)).toBe(false);
|
|
109
86
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
case 9:
|
|
115
|
-
case "end":
|
|
116
|
-
return _context.stop();
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
}, _callee);
|
|
120
|
-
})));
|
|
121
|
-
test("a `null` seed renders a CONTROLLED, unchecked input", function () {
|
|
87
|
+
/* The point of the assertion: not one intermediate value was an array. */
|
|
88
|
+
expect(vues.some(v => Array.isArray(v))).toBe(false);
|
|
89
|
+
});
|
|
90
|
+
test("a `null` seed renders a CONTROLLED, unchecked input", () => {
|
|
122
91
|
/* Hosts seed these flags with `null` (« not answered yet »). Passing that
|
|
123
92
|
* straight to `checked` makes React treat the input as uncontrolled for one
|
|
124
93
|
* render, then warn and lose the first click. */
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
128
|
-
args[_key] = arguments[_key];
|
|
129
|
-
}
|
|
94
|
+
const avertissements = [];
|
|
95
|
+
const spy = jest.spyOn(console, "error").mockImplementation((...args) => {
|
|
130
96
|
avertissements.push(args);
|
|
131
97
|
});
|
|
132
98
|
render(/*#__PURE__*/_jsx(Hote, {
|
|
133
99
|
initialValue: null
|
|
134
100
|
}));
|
|
135
101
|
expect(screen.getByRole("checkbox")).not.toBeChecked();
|
|
136
|
-
expect(avertissements.some(
|
|
137
|
-
return String(a[0]).includes("uncontrolled");
|
|
138
|
-
})).toBe(false);
|
|
102
|
+
expect(avertissements.some(a => String(a[0]).includes("uncontrolled"))).toBe(false);
|
|
139
103
|
spy.mockRestore();
|
|
140
104
|
});
|
|
141
105
|
});
|
|
142
|
-
describe("FormikCheckbox — the error is reachable without a blur",
|
|
143
|
-
test("clicking marks the field touched, so the message appears",
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
render(/*#__PURE__*/_jsx(Hote, {
|
|
149
|
-
initialValue: false,
|
|
150
|
-
required: true
|
|
151
|
-
}));
|
|
106
|
+
describe("FormikCheckbox — the error is reachable without a blur", () => {
|
|
107
|
+
test("clicking marks the field touched, so the message appears", async () => {
|
|
108
|
+
render(/*#__PURE__*/_jsx(Hote, {
|
|
109
|
+
initialValue: false,
|
|
110
|
+
required: true
|
|
111
|
+
}));
|
|
152
112
|
|
|
153
|
-
|
|
154
|
-
|
|
113
|
+
/* Untouched: no message, however invalid the value is. */
|
|
114
|
+
expect(screen.queryByRole("alert")).not.toBeInTheDocument();
|
|
155
115
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
return userEvent.click(screen.getByRole("checkbox"));
|
|
182
|
-
case 3:
|
|
183
|
-
_context3.next = 5;
|
|
184
|
-
return userEvent.click(screen.getByRole("checkbox"));
|
|
185
|
-
case 5:
|
|
186
|
-
expect(screen.getByRole("group")).toHaveAccessibleDescription("Cochez cette case pour continuer.");
|
|
187
|
-
case 6:
|
|
188
|
-
case "end":
|
|
189
|
-
return _context3.stop();
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
}, _callee3);
|
|
193
|
-
})));
|
|
194
|
-
test("the hint shows while valid and is suppressed by the error", /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
|
|
195
|
-
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
196
|
-
while (1) {
|
|
197
|
-
switch (_context4.prev = _context4.next) {
|
|
198
|
-
case 0:
|
|
199
|
-
render(/*#__PURE__*/_jsx(Hote, {
|
|
200
|
-
initialValue: false,
|
|
201
|
-
required: true,
|
|
202
|
-
hint: "Obligatoire pour soumettre la demande"
|
|
203
|
-
}));
|
|
204
|
-
expect(screen.getByText("Obligatoire pour soumettre la demande")).toBeInTheDocument();
|
|
205
|
-
_context4.next = 4;
|
|
206
|
-
return userEvent.click(screen.getByRole("checkbox"));
|
|
207
|
-
case 4:
|
|
208
|
-
_context4.next = 6;
|
|
209
|
-
return userEvent.click(screen.getByRole("checkbox"));
|
|
210
|
-
case 6:
|
|
211
|
-
expect(screen.queryByText("Obligatoire pour soumettre la demande")).not.toBeInTheDocument();
|
|
212
|
-
case 7:
|
|
213
|
-
case "end":
|
|
214
|
-
return _context4.stop();
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
}, _callee4);
|
|
218
|
-
})));
|
|
116
|
+
/* Check then uncheck — the field is now touched AND invalid. */
|
|
117
|
+
await userEvent.click(screen.getByRole("checkbox"));
|
|
118
|
+
await userEvent.click(screen.getByRole("checkbox"));
|
|
119
|
+
expect(screen.getByRole("alert")).toHaveTextContent("Cochez cette case pour continuer.");
|
|
120
|
+
});
|
|
121
|
+
test("the message becomes the group's accessible description", async () => {
|
|
122
|
+
render(/*#__PURE__*/_jsx(Hote, {
|
|
123
|
+
initialValue: false,
|
|
124
|
+
required: true
|
|
125
|
+
}));
|
|
126
|
+
await userEvent.click(screen.getByRole("checkbox"));
|
|
127
|
+
await userEvent.click(screen.getByRole("checkbox"));
|
|
128
|
+
expect(screen.getByRole("group")).toHaveAccessibleDescription("Cochez cette case pour continuer.");
|
|
129
|
+
});
|
|
130
|
+
test("the hint shows while valid and is suppressed by the error", async () => {
|
|
131
|
+
render(/*#__PURE__*/_jsx(Hote, {
|
|
132
|
+
initialValue: false,
|
|
133
|
+
required: true,
|
|
134
|
+
hint: "Obligatoire pour soumettre la demande"
|
|
135
|
+
}));
|
|
136
|
+
expect(screen.getByText("Obligatoire pour soumettre la demande")).toBeInTheDocument();
|
|
137
|
+
await userEvent.click(screen.getByRole("checkbox"));
|
|
138
|
+
await userEvent.click(screen.getByRole("checkbox"));
|
|
139
|
+
expect(screen.queryByText("Obligatoire pour soumettre la demande")).not.toBeInTheDocument();
|
|
140
|
+
});
|
|
219
141
|
});
|
|
220
|
-
describe("FormikCheckbox — ARIA and DOM hygiene",
|
|
221
|
-
test("`required` puts aria-required on the INPUT, not on the group",
|
|
142
|
+
describe("FormikCheckbox — ARIA and DOM hygiene", () => {
|
|
143
|
+
test("`required` puts aria-required on the INPUT, not on the group", () => {
|
|
222
144
|
/* Field's own injection lands on the CheckboxGroup, which is a role=group
|
|
223
145
|
* div and does not forward it — hence the explicit inputProps route. */
|
|
224
146
|
render(/*#__PURE__*/_jsx(Hote, {
|
|
@@ -227,7 +149,7 @@ describe("FormikCheckbox — ARIA and DOM hygiene", function () {
|
|
|
227
149
|
}));
|
|
228
150
|
expect(screen.getByRole("checkbox")).toHaveAttribute("aria-required", "true");
|
|
229
151
|
});
|
|
230
|
-
test("the label names the checkbox",
|
|
152
|
+
test("the label names the checkbox", () => {
|
|
231
153
|
render(/*#__PURE__*/_jsx(Hote, {
|
|
232
154
|
initialValue: false
|
|
233
155
|
}));
|
|
@@ -235,31 +157,17 @@ describe("FormikCheckbox — ARIA and DOM hygiene", function () {
|
|
|
235
157
|
name: /Première déclaration/
|
|
236
158
|
})).toBeInTheDocument();
|
|
237
159
|
});
|
|
238
|
-
test("no `error` attribute leaks onto the native input",
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
_context5.next = 3;
|
|
251
|
-
return userEvent.click(screen.getByRole("checkbox"));
|
|
252
|
-
case 3:
|
|
253
|
-
_context5.next = 5;
|
|
254
|
-
return userEvent.click(screen.getByRole("checkbox"));
|
|
255
|
-
case 5:
|
|
256
|
-
expect(screen.getByRole("checkbox")).not.toHaveAttribute("error");
|
|
257
|
-
case 6:
|
|
258
|
-
case "end":
|
|
259
|
-
return _context5.stop();
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
}, _callee5);
|
|
263
|
-
})));
|
|
160
|
+
test("no `error` attribute leaks onto the native input", async () => {
|
|
161
|
+
/* The CheckboxGroup wrapper is what absorbs Field's `error` clone. Without
|
|
162
|
+
* it React warns and the DOM carries an invalid attribute — with no visual
|
|
163
|
+
* tell whatsoever. */
|
|
164
|
+
render(/*#__PURE__*/_jsx(Hote, {
|
|
165
|
+
initialValue: false,
|
|
166
|
+
required: true
|
|
167
|
+
}));
|
|
168
|
+
await userEvent.click(screen.getByRole("checkbox"));
|
|
169
|
+
await userEvent.click(screen.getByRole("checkbox"));
|
|
170
|
+
expect(screen.getByRole("checkbox")).not.toHaveAttribute("error");
|
|
171
|
+
});
|
|
264
172
|
});
|
|
265
173
|
//# sourceMappingURL=FormikCheckbox.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormikCheckbox.test.js","names":["_regeneratorRuntime","exports","Op","Object","prototype","hasOwn","hasOwnProperty","defineProperty","obj","key","desc","value","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","enumerable","configurable","writable","err","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","create","context","Context","makeInvokeMethod","tryCatch","fn","arg","type","call","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","forEach","method","_invoke","AsyncIterator","PromiseImpl","invoke","resolve","reject","record","result","_typeof","__await","then","unwrapped","error","previousPromise","callInvokeWithMethodAndArg","state","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","done","methodName","undefined","TypeError","info","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","length","i","displayName","isGeneratorFunction","genFun","ctor","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","iter","keys","val","object","reverse","pop","skipTempReset","prev","charAt","slice","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","_catch","thrown","delegateYield","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","args","arguments","apply","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","_objectSpread","target","source","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","_toPrimitive","String","input","hint","prim","toPrimitive","res","Number","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","sourceSymbolKeys","indexOf","propertyIsEnumerable","sourceKeys","React","render","screen","userEvent","Formik","Form","FormikCheckbox","jsx","_jsx","Hote","_ref","initialValue","required","onValues","props","_excluded","initialValues","flag","validate","onSubmit","children","_ref2","label","describe","test","_callee","vues","_callee$","_context","v","click","getByRole","expect","at","toBe","some","Array","isArray","avertissements","spy","jest","spyOn","console","mockImplementation","_len","_key","not","toBeChecked","a","includes","mockRestore","_callee2","_callee2$","_context2","queryByRole","toBeInTheDocument","toHaveTextContent","_callee3","_callee3$","_context3","toHaveAccessibleDescription","_callee4","_callee4$","_context4","getByText","queryByText","toHaveAttribute","_callee5","_callee5$","_context5"],"sources":["../../../../src/lib/v2/__tests__/FormikCheckbox.test.tsx"],"sourcesContent":["import \"@testing-library/jest-dom\";\r\nimport * as React from \"react\";\r\nimport { render, screen } from \"@testing-library/react\";\r\nimport userEvent from \"@testing-library/user-event\";\r\nimport { Formik, Form } from \"formik\";\r\nimport FormikCheckbox from \"../patterns/FormikCheckbox\";\r\n\r\n/**\r\n * FormikCheckbox — contract tests (gap G-A).\r\n *\r\n * WHY THIS FILE EXISTS\r\n * --------------------\r\n * §10.3 R-G.6 MUST. But the contracts worth pinning here are the ones a\r\n * screenshot cannot see, and each of them is a real defect this bridge was\r\n * created to stop repeating:\r\n *\r\n * 1. THE VALUE SHAPE. This component exists because `FormikCheckboxGroup`\r\n * writes an ARRAY. If a refactor ever routed this bridge through the group,\r\n * hosts would start sending `[\"on\"]` where their payload declares a\r\n * boolean — visually identical, and wrong all the way to the database.\r\n *\r\n * 2. TOUCHED-ON-CHANGE. A checkbox has no meaningful blur-before-change, so\r\n * if the field is only marked touched on blur, a required-checkbox error\r\n * stays invisible however many times the user clicks. That is exactly the\r\n * defect reported from refonte-frontend, where a hand-rolled bridge\r\n * rendered no message at all.\r\n *\r\n * 3. `aria-required` LANDS ON THE INPUT. `Field` injects it onto its child,\r\n * which here is the CheckboxGroup — a `role=\"group\"` div that does not\r\n * forward it. Assert the input, not the group.\r\n *\r\n * 4. NO `error` ATTRIBUTE ON THE DOM. `Field` clones its child with\r\n * `error`/`disabled` for the v2 inputs that read them directly. A bare\r\n * `Checkbox` would spread `error` down to the native input; the\r\n * CheckboxGroup wrapper is what absorbs it. Drop the wrapper and React\r\n * starts warning while every pixel stays identical.\r\n *\r\n * NOT COVERED — deliberately: the asterisk colour and the grey error panel are\r\n * CSS variables, which jsdom does not resolve. Those belong to the story.\r\n */\r\n\r\n/** Minimal host: a Formik form exposing its values for assertion. */\r\nfunction Hote({\r\n initialValue,\r\n required,\r\n onValues,\r\n ...props\r\n}: {\r\n initialValue: boolean | null;\r\n required?: boolean;\r\n onValues?: (values: { flag: unknown }) => void;\r\n label?: React.ReactNode;\r\n hint?: React.ReactNode;\r\n}) {\r\n return (\r\n <Formik\r\n initialValues={{ flag: initialValue }}\r\n validate={(values) =>\r\n required && values.flag !== true\r\n ? { flag: \"Cochez cette case pour continuer.\" }\r\n : {}\r\n }\r\n onSubmit={() => undefined}\r\n >\r\n {({ values }) => {\r\n onValues?.(values);\r\n return (\r\n <Form>\r\n <FormikCheckbox\r\n name=\"flag\"\r\n label=\"Première déclaration\"\r\n {...(required !== undefined ? { required } : {})}\r\n {...props}\r\n />\r\n </Form>\r\n );\r\n }}\r\n </Formik>\r\n );\r\n}\r\n\r\ndescribe(\"FormikCheckbox — the value stays a BOOLEAN\", () => {\r\n test(\"toggling writes `true`, untoggling writes `false` — never an array\", async () => {\r\n const vues: unknown[] = [];\r\n render(\r\n <Hote initialValue={false} onValues={(v) => vues.push(v.flag)} />\r\n );\r\n\r\n await userEvent.click(screen.getByRole(\"checkbox\"));\r\n expect(vues.at(-1)).toBe(true);\r\n\r\n await userEvent.click(screen.getByRole(\"checkbox\"));\r\n expect(vues.at(-1)).toBe(false);\r\n\r\n /* The point of the assertion: not one intermediate value was an array. */\r\n expect(vues.some((v) => Array.isArray(v))).toBe(false);\r\n });\r\n\r\n test(\"a `null` seed renders a CONTROLLED, unchecked input\", () => {\r\n /* Hosts seed these flags with `null` (« not answered yet »). Passing that\r\n * straight to `checked` makes React treat the input as uncontrolled for one\r\n * render, then warn and lose the first click. */\r\n const avertissements: unknown[][] = [];\r\n const spy = jest\r\n .spyOn(console, \"error\")\r\n .mockImplementation((...args: unknown[]) => {\r\n avertissements.push(args);\r\n });\r\n\r\n render(<Hote initialValue={null} />);\r\n\r\n expect(screen.getByRole(\"checkbox\")).not.toBeChecked();\r\n expect(\r\n avertissements.some((a) => String(a[0]).includes(\"uncontrolled\"))\r\n ).toBe(false);\r\n\r\n spy.mockRestore();\r\n });\r\n});\r\n\r\ndescribe(\"FormikCheckbox — the error is reachable without a blur\", () => {\r\n test(\"clicking marks the field touched, so the message appears\", async () => {\r\n render(<Hote initialValue={false} required />);\r\n\r\n /* Untouched: no message, however invalid the value is. */\r\n expect(screen.queryByRole(\"alert\")).not.toBeInTheDocument();\r\n\r\n /* Check then uncheck — the field is now touched AND invalid. */\r\n await userEvent.click(screen.getByRole(\"checkbox\"));\r\n await userEvent.click(screen.getByRole(\"checkbox\"));\r\n\r\n expect(screen.getByRole(\"alert\")).toHaveTextContent(\r\n \"Cochez cette case pour continuer.\"\r\n );\r\n });\r\n\r\n test(\"the message becomes the group's accessible description\", async () => {\r\n render(<Hote initialValue={false} required />);\r\n await userEvent.click(screen.getByRole(\"checkbox\"));\r\n await userEvent.click(screen.getByRole(\"checkbox\"));\r\n\r\n expect(screen.getByRole(\"group\")).toHaveAccessibleDescription(\r\n \"Cochez cette case pour continuer.\"\r\n );\r\n });\r\n\r\n test(\"the hint shows while valid and is suppressed by the error\", async () => {\r\n render(\r\n <Hote\r\n initialValue={false}\r\n required\r\n hint=\"Obligatoire pour soumettre la demande\"\r\n />\r\n );\r\n\r\n expect(\r\n screen.getByText(\"Obligatoire pour soumettre la demande\")\r\n ).toBeInTheDocument();\r\n\r\n await userEvent.click(screen.getByRole(\"checkbox\"));\r\n await userEvent.click(screen.getByRole(\"checkbox\"));\r\n\r\n expect(\r\n screen.queryByText(\"Obligatoire pour soumettre la demande\")\r\n ).not.toBeInTheDocument();\r\n });\r\n});\r\n\r\ndescribe(\"FormikCheckbox — ARIA and DOM hygiene\", () => {\r\n test(\"`required` puts aria-required on the INPUT, not on the group\", () => {\r\n /* Field's own injection lands on the CheckboxGroup, which is a role=group\r\n * div and does not forward it — hence the explicit inputProps route. */\r\n render(<Hote initialValue={false} required />);\r\n\r\n expect(screen.getByRole(\"checkbox\")).toHaveAttribute(\r\n \"aria-required\",\r\n \"true\"\r\n );\r\n });\r\n\r\n test(\"the label names the checkbox\", () => {\r\n render(<Hote initialValue={false} />);\r\n expect(\r\n screen.getByRole(\"checkbox\", { name: /Première déclaration/ })\r\n ).toBeInTheDocument();\r\n });\r\n\r\n test(\"no `error` attribute leaks onto the native input\", async () => {\r\n /* The CheckboxGroup wrapper is what absorbs Field's `error` clone. Without\r\n * it React warns and the DOM carries an invalid attribute — with no visual\r\n * tell whatsoever. */\r\n render(<Hote initialValue={false} required />);\r\n await userEvent.click(screen.getByRole(\"checkbox\"));\r\n await userEvent.click(screen.getByRole(\"checkbox\"));\r\n\r\n expect(screen.getByRole(\"checkbox\")).not.toHaveAttribute(\"error\");\r\n });\r\n});\r\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"FormikCheckbox.test.js","names":["React","render","screen","userEvent","Formik","Form","FormikCheckbox","jsx","_jsx","Hote","initialValue","required","onValues","props","initialValues","flag","validate","values","onSubmit","undefined","children","name","label","describe","test","vues","v","push","click","getByRole","expect","at","toBe","some","Array","isArray","avertissements","spy","jest","spyOn","console","mockImplementation","args","not","toBeChecked","a","String","includes","mockRestore","queryByRole","toBeInTheDocument","toHaveTextContent","toHaveAccessibleDescription","hint","getByText","queryByText","toHaveAttribute"],"sources":["../../../../src/lib/v2/__tests__/FormikCheckbox.test.tsx"],"sourcesContent":["import \"@testing-library/jest-dom\";\r\nimport * as React from \"react\";\r\nimport { render, screen } from \"@testing-library/react\";\r\nimport userEvent from \"@testing-library/user-event\";\r\nimport { Formik, Form } from \"formik\";\r\nimport FormikCheckbox from \"../patterns/FormikCheckbox\";\r\n\r\n/**\r\n * FormikCheckbox — contract tests (gap G-A).\r\n *\r\n * WHY THIS FILE EXISTS\r\n * --------------------\r\n * §10.3 R-G.6 MUST. But the contracts worth pinning here are the ones a\r\n * screenshot cannot see, and each of them is a real defect this bridge was\r\n * created to stop repeating:\r\n *\r\n * 1. THE VALUE SHAPE. This component exists because `FormikCheckboxGroup`\r\n * writes an ARRAY. If a refactor ever routed this bridge through the group,\r\n * hosts would start sending `[\"on\"]` where their payload declares a\r\n * boolean — visually identical, and wrong all the way to the database.\r\n *\r\n * 2. TOUCHED-ON-CHANGE. A checkbox has no meaningful blur-before-change, so\r\n * if the field is only marked touched on blur, a required-checkbox error\r\n * stays invisible however many times the user clicks. That is exactly the\r\n * defect reported from refonte-frontend, where a hand-rolled bridge\r\n * rendered no message at all.\r\n *\r\n * 3. `aria-required` LANDS ON THE INPUT. `Field` injects it onto its child,\r\n * which here is the CheckboxGroup — a `role=\"group\"` div that does not\r\n * forward it. Assert the input, not the group.\r\n *\r\n * 4. NO `error` ATTRIBUTE ON THE DOM. `Field` clones its child with\r\n * `error`/`disabled` for the v2 inputs that read them directly. A bare\r\n * `Checkbox` would spread `error` down to the native input; the\r\n * CheckboxGroup wrapper is what absorbs it. Drop the wrapper and React\r\n * starts warning while every pixel stays identical.\r\n *\r\n * NOT COVERED — deliberately: the asterisk colour and the grey error panel are\r\n * CSS variables, which jsdom does not resolve. Those belong to the story.\r\n */\r\n\r\n/** Minimal host: a Formik form exposing its values for assertion. */\r\nfunction Hote({\r\n initialValue,\r\n required,\r\n onValues,\r\n ...props\r\n}: {\r\n initialValue: boolean | null;\r\n required?: boolean;\r\n onValues?: (values: { flag: unknown }) => void;\r\n label?: React.ReactNode;\r\n hint?: React.ReactNode;\r\n}) {\r\n return (\r\n <Formik\r\n initialValues={{ flag: initialValue }}\r\n validate={(values) =>\r\n required && values.flag !== true\r\n ? { flag: \"Cochez cette case pour continuer.\" }\r\n : {}\r\n }\r\n onSubmit={() => undefined}\r\n >\r\n {({ values }) => {\r\n onValues?.(values);\r\n return (\r\n <Form>\r\n <FormikCheckbox\r\n name=\"flag\"\r\n label=\"Première déclaration\"\r\n {...(required !== undefined ? { required } : {})}\r\n {...props}\r\n />\r\n </Form>\r\n );\r\n }}\r\n </Formik>\r\n );\r\n}\r\n\r\ndescribe(\"FormikCheckbox — the value stays a BOOLEAN\", () => {\r\n test(\"toggling writes `true`, untoggling writes `false` — never an array\", async () => {\r\n const vues: unknown[] = [];\r\n render(\r\n <Hote initialValue={false} onValues={(v) => vues.push(v.flag)} />\r\n );\r\n\r\n await userEvent.click(screen.getByRole(\"checkbox\"));\r\n expect(vues.at(-1)).toBe(true);\r\n\r\n await userEvent.click(screen.getByRole(\"checkbox\"));\r\n expect(vues.at(-1)).toBe(false);\r\n\r\n /* The point of the assertion: not one intermediate value was an array. */\r\n expect(vues.some((v) => Array.isArray(v))).toBe(false);\r\n });\r\n\r\n test(\"a `null` seed renders a CONTROLLED, unchecked input\", () => {\r\n /* Hosts seed these flags with `null` (« not answered yet »). Passing that\r\n * straight to `checked` makes React treat the input as uncontrolled for one\r\n * render, then warn and lose the first click. */\r\n const avertissements: unknown[][] = [];\r\n const spy = jest\r\n .spyOn(console, \"error\")\r\n .mockImplementation((...args: unknown[]) => {\r\n avertissements.push(args);\r\n });\r\n\r\n render(<Hote initialValue={null} />);\r\n\r\n expect(screen.getByRole(\"checkbox\")).not.toBeChecked();\r\n expect(\r\n avertissements.some((a) => String(a[0]).includes(\"uncontrolled\"))\r\n ).toBe(false);\r\n\r\n spy.mockRestore();\r\n });\r\n});\r\n\r\ndescribe(\"FormikCheckbox — the error is reachable without a blur\", () => {\r\n test(\"clicking marks the field touched, so the message appears\", async () => {\r\n render(<Hote initialValue={false} required />);\r\n\r\n /* Untouched: no message, however invalid the value is. */\r\n expect(screen.queryByRole(\"alert\")).not.toBeInTheDocument();\r\n\r\n /* Check then uncheck — the field is now touched AND invalid. */\r\n await userEvent.click(screen.getByRole(\"checkbox\"));\r\n await userEvent.click(screen.getByRole(\"checkbox\"));\r\n\r\n expect(screen.getByRole(\"alert\")).toHaveTextContent(\r\n \"Cochez cette case pour continuer.\"\r\n );\r\n });\r\n\r\n test(\"the message becomes the group's accessible description\", async () => {\r\n render(<Hote initialValue={false} required />);\r\n await userEvent.click(screen.getByRole(\"checkbox\"));\r\n await userEvent.click(screen.getByRole(\"checkbox\"));\r\n\r\n expect(screen.getByRole(\"group\")).toHaveAccessibleDescription(\r\n \"Cochez cette case pour continuer.\"\r\n );\r\n });\r\n\r\n test(\"the hint shows while valid and is suppressed by the error\", async () => {\r\n render(\r\n <Hote\r\n initialValue={false}\r\n required\r\n hint=\"Obligatoire pour soumettre la demande\"\r\n />\r\n );\r\n\r\n expect(\r\n screen.getByText(\"Obligatoire pour soumettre la demande\")\r\n ).toBeInTheDocument();\r\n\r\n await userEvent.click(screen.getByRole(\"checkbox\"));\r\n await userEvent.click(screen.getByRole(\"checkbox\"));\r\n\r\n expect(\r\n screen.queryByText(\"Obligatoire pour soumettre la demande\")\r\n ).not.toBeInTheDocument();\r\n });\r\n});\r\n\r\ndescribe(\"FormikCheckbox — ARIA and DOM hygiene\", () => {\r\n test(\"`required` puts aria-required on the INPUT, not on the group\", () => {\r\n /* Field's own injection lands on the CheckboxGroup, which is a role=group\r\n * div and does not forward it — hence the explicit inputProps route. */\r\n render(<Hote initialValue={false} required />);\r\n\r\n expect(screen.getByRole(\"checkbox\")).toHaveAttribute(\r\n \"aria-required\",\r\n \"true\"\r\n );\r\n });\r\n\r\n test(\"the label names the checkbox\", () => {\r\n render(<Hote initialValue={false} />);\r\n expect(\r\n screen.getByRole(\"checkbox\", { name: /Première déclaration/ })\r\n ).toBeInTheDocument();\r\n });\r\n\r\n test(\"no `error` attribute leaks onto the native input\", async () => {\r\n /* The CheckboxGroup wrapper is what absorbs Field's `error` clone. Without\r\n * it React warns and the DOM carries an invalid attribute — with no visual\r\n * tell whatsoever. */\r\n render(<Hote initialValue={false} required />);\r\n await userEvent.click(screen.getByRole(\"checkbox\"));\r\n await userEvent.click(screen.getByRole(\"checkbox\"));\r\n\r\n expect(screen.getByRole(\"checkbox\")).not.toHaveAttribute(\"error\");\r\n });\r\n});\r\n"],"mappings":"AAAA,OAAO,2BAA2B;AAClC,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,MAAM,EAAEC,MAAM,QAAQ,wBAAwB;AACvD,OAAOC,SAAS,MAAM,6BAA6B;AACnD,SAASC,MAAM,EAAEC,IAAI,QAAQ,QAAQ;AACrC,OAAOC,cAAc,MAAM,4BAA4B;;AAEvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AAAA,SAAAC,GAAA,IAAAC,IAAA;AACA,SAASC,IAAIA,CAAC;EACZC,YAAY;EACZC,QAAQ;EACRC,QAAQ;EACR,GAAGC;AAOL,CAAC,EAAE;EACD,oBACEL,IAAA,CAACJ,MAAM;IACLU,aAAa,EAAE;MAAEC,IAAI,EAAEL;IAAa,CAAE;IACtCM,QAAQ,EAAGC,MAAM,IACfN,QAAQ,IAAIM,MAAM,CAACF,IAAI,KAAK,IAAI,GAC5B;MAAEA,IAAI,EAAE;IAAoC,CAAC,GAC7C,CAAC,CACN;IACDG,QAAQ,EAAEA,CAAA,KAAMC,SAAU;IAAAC,QAAA,EAEzBA,CAAC;MAAEH;IAAO,CAAC,KAAK;MACfL,QAAQ,GAAGK,MAAM,CAAC;MAClB,oBACET,IAAA,CAACH,IAAI;QAAAe,QAAA,eACHZ,IAAA,CAACF,cAAc;UACbe,IAAI,EAAC,MAAM;UACXC,KAAK,EAAC,4BAAsB;UAAA,IACvBX,QAAQ,KAAKQ,SAAS,GAAG;YAAER;UAAS,CAAC,GAAG,CAAC,CAAC;UAAA,GAC3CE;QAAK,CACV;MAAC,CACE,CAAC;IAEX;EAAC,CACK,CAAC;AAEb;AAEAU,QAAQ,CAAC,4CAA4C,EAAE,MAAM;EAC3DC,IAAI,CAAC,oEAAoE,EAAE,YAAY;IACrF,MAAMC,IAAe,GAAG,EAAE;IAC1BxB,MAAM,cACJO,IAAA,CAACC,IAAI;MAACC,YAAY,EAAE,KAAM;MAACE,QAAQ,EAAGc,CAAC,IAAKD,IAAI,CAACE,IAAI,CAACD,CAAC,CAACX,IAAI;IAAE,CAAE,CAClE,CAAC;IAED,MAAMZ,SAAS,CAACyB,KAAK,CAAC1B,MAAM,CAAC2B,SAAS,CAAC,UAAU,CAAC,CAAC;IACnDC,MAAM,CAACL,IAAI,CAACM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;IAE9B,MAAM7B,SAAS,CAACyB,KAAK,CAAC1B,MAAM,CAAC2B,SAAS,CAAC,UAAU,CAAC,CAAC;IACnDC,MAAM,CAACL,IAAI,CAACM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAACC,IAAI,CAAC,KAAK,CAAC;;IAE/B;IACAF,MAAM,CAACL,IAAI,CAACQ,IAAI,CAAEP,CAAC,IAAKQ,KAAK,CAACC,OAAO,CAACT,CAAC,CAAC,CAAC,CAAC,CAACM,IAAI,CAAC,KAAK,CAAC;EACxD,CAAC,CAAC;EAEFR,IAAI,CAAC,qDAAqD,EAAE,MAAM;IAChE;AACJ;AACA;IACI,MAAMY,cAA2B,GAAG,EAAE;IACtC,MAAMC,GAAG,GAAGC,IAAI,CACbC,KAAK,CAACC,OAAO,EAAE,OAAO,CAAC,CACvBC,kBAAkB,CAAC,CAAC,GAAGC,IAAe,KAAK;MAC1CN,cAAc,CAACT,IAAI,CAACe,IAAI,CAAC;IAC3B,CAAC,CAAC;IAEJzC,MAAM,cAACO,IAAA,CAACC,IAAI;MAACC,YAAY,EAAE;IAAK,CAAE,CAAC,CAAC;IAEpCoB,MAAM,CAAC5B,MAAM,CAAC2B,SAAS,CAAC,UAAU,CAAC,CAAC,CAACc,GAAG,CAACC,WAAW,CAAC,CAAC;IACtDd,MAAM,CACJM,cAAc,CAACH,IAAI,CAAEY,CAAC,IAAKC,MAAM,CAACD,CAAC,CAAC,CAAC,CAAC,CAAC,CAACE,QAAQ,CAAC,cAAc,CAAC,CAClE,CAAC,CAACf,IAAI,CAAC,KAAK,CAAC;IAEbK,GAAG,CAACW,WAAW,CAAC,CAAC;EACnB,CAAC,CAAC;AACJ,CAAC,CAAC;AAEFzB,QAAQ,CAAC,wDAAwD,EAAE,MAAM;EACvEC,IAAI,CAAC,0DAA0D,EAAE,YAAY;IAC3EvB,MAAM,cAACO,IAAA,CAACC,IAAI;MAACC,YAAY,EAAE,KAAM;MAACC,QAAQ;IAAA,CAAE,CAAC,CAAC;;IAE9C;IACAmB,MAAM,CAAC5B,MAAM,CAAC+C,WAAW,CAAC,OAAO,CAAC,CAAC,CAACN,GAAG,CAACO,iBAAiB,CAAC,CAAC;;IAE3D;IACA,MAAM/C,SAAS,CAACyB,KAAK,CAAC1B,MAAM,CAAC2B,SAAS,CAAC,UAAU,CAAC,CAAC;IACnD,MAAM1B,SAAS,CAACyB,KAAK,CAAC1B,MAAM,CAAC2B,SAAS,CAAC,UAAU,CAAC,CAAC;IAEnDC,MAAM,CAAC5B,MAAM,CAAC2B,SAAS,CAAC,OAAO,CAAC,CAAC,CAACsB,iBAAiB,CACjD,mCACF,CAAC;EACH,CAAC,CAAC;EAEF3B,IAAI,CAAC,wDAAwD,EAAE,YAAY;IACzEvB,MAAM,cAACO,IAAA,CAACC,IAAI;MAACC,YAAY,EAAE,KAAM;MAACC,QAAQ;IAAA,CAAE,CAAC,CAAC;IAC9C,MAAMR,SAAS,CAACyB,KAAK,CAAC1B,MAAM,CAAC2B,SAAS,CAAC,UAAU,CAAC,CAAC;IACnD,MAAM1B,SAAS,CAACyB,KAAK,CAAC1B,MAAM,CAAC2B,SAAS,CAAC,UAAU,CAAC,CAAC;IAEnDC,MAAM,CAAC5B,MAAM,CAAC2B,SAAS,CAAC,OAAO,CAAC,CAAC,CAACuB,2BAA2B,CAC3D,mCACF,CAAC;EACH,CAAC,CAAC;EAEF5B,IAAI,CAAC,2DAA2D,EAAE,YAAY;IAC5EvB,MAAM,cACJO,IAAA,CAACC,IAAI;MACHC,YAAY,EAAE,KAAM;MACpBC,QAAQ;MACR0C,IAAI,EAAC;IAAuC,CAC7C,CACH,CAAC;IAEDvB,MAAM,CACJ5B,MAAM,CAACoD,SAAS,CAAC,uCAAuC,CAC1D,CAAC,CAACJ,iBAAiB,CAAC,CAAC;IAErB,MAAM/C,SAAS,CAACyB,KAAK,CAAC1B,MAAM,CAAC2B,SAAS,CAAC,UAAU,CAAC,CAAC;IACnD,MAAM1B,SAAS,CAACyB,KAAK,CAAC1B,MAAM,CAAC2B,SAAS,CAAC,UAAU,CAAC,CAAC;IAEnDC,MAAM,CACJ5B,MAAM,CAACqD,WAAW,CAAC,uCAAuC,CAC5D,CAAC,CAACZ,GAAG,CAACO,iBAAiB,CAAC,CAAC;EAC3B,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF3B,QAAQ,CAAC,uCAAuC,EAAE,MAAM;EACtDC,IAAI,CAAC,8DAA8D,EAAE,MAAM;IACzE;AACJ;IACIvB,MAAM,cAACO,IAAA,CAACC,IAAI;MAACC,YAAY,EAAE,KAAM;MAACC,QAAQ;IAAA,CAAE,CAAC,CAAC;IAE9CmB,MAAM,CAAC5B,MAAM,CAAC2B,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC2B,eAAe,CAClD,eAAe,EACf,MACF,CAAC;EACH,CAAC,CAAC;EAEFhC,IAAI,CAAC,8BAA8B,EAAE,MAAM;IACzCvB,MAAM,cAACO,IAAA,CAACC,IAAI;MAACC,YAAY,EAAE;IAAM,CAAE,CAAC,CAAC;IACrCoB,MAAM,CACJ5B,MAAM,CAAC2B,SAAS,CAAC,UAAU,EAAE;MAAER,IAAI,EAAE;IAAuB,CAAC,CAC/D,CAAC,CAAC6B,iBAAiB,CAAC,CAAC;EACvB,CAAC,CAAC;EAEF1B,IAAI,CAAC,kDAAkD,EAAE,YAAY;IACnE;AACJ;AACA;IACIvB,MAAM,cAACO,IAAA,CAACC,IAAI;MAACC,YAAY,EAAE,KAAM;MAACC,QAAQ;IAAA,CAAE,CAAC,CAAC;IAC9C,MAAMR,SAAS,CAACyB,KAAK,CAAC1B,MAAM,CAAC2B,SAAS,CAAC,UAAU,CAAC,CAAC;IACnD,MAAM1B,SAAS,CAACyB,KAAK,CAAC1B,MAAM,CAAC2B,SAAS,CAAC,UAAU,CAAC,CAAC;IAEnDC,MAAM,CAAC5B,MAAM,CAAC2B,SAAS,CAAC,UAAU,CAAC,CAAC,CAACc,GAAG,CAACa,eAAe,CAAC,OAAO,CAAC;EACnE,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
2
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
3
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
4
|
-
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
5
|
-
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
6
|
-
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
7
1
|
import "@testing-library/jest-dom";
|
|
8
2
|
import { render, screen } from "@testing-library/react";
|
|
9
3
|
import { Formik, Form } from "formik";
|
|
@@ -71,31 +65,32 @@ function sectionVide(nom) {
|
|
|
71
65
|
name: nom
|
|
72
66
|
}).getAttribute("aria-valuetext") === "Empty";
|
|
73
67
|
}
|
|
74
|
-
function HoteLecture(
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
68
|
+
function HoteLecture({
|
|
69
|
+
valeurInitiale,
|
|
70
|
+
outputFormat,
|
|
71
|
+
readOnly
|
|
72
|
+
}) {
|
|
78
73
|
return /*#__PURE__*/_jsx(Formik, {
|
|
79
74
|
initialValues: {
|
|
80
75
|
dateVisite: valeurInitiale
|
|
81
76
|
},
|
|
82
|
-
onSubmit:
|
|
83
|
-
return undefined;
|
|
84
|
-
},
|
|
77
|
+
onSubmit: () => undefined,
|
|
85
78
|
children: /*#__PURE__*/_jsx(Form, {
|
|
86
|
-
children: /*#__PURE__*/_jsx(FormikDateTimePicker,
|
|
79
|
+
children: /*#__PURE__*/_jsx(FormikDateTimePicker, {
|
|
87
80
|
name: "dateVisite",
|
|
88
|
-
label: "Date de la visite"
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
readOnly
|
|
93
|
-
|
|
81
|
+
label: "Date de la visite",
|
|
82
|
+
...(outputFormat !== undefined ? {
|
|
83
|
+
outputFormat
|
|
84
|
+
} : {}),
|
|
85
|
+
...(readOnly !== undefined ? {
|
|
86
|
+
readOnly
|
|
87
|
+
} : {})
|
|
88
|
+
})
|
|
94
89
|
})
|
|
95
90
|
});
|
|
96
91
|
}
|
|
97
|
-
describe("FormikDateTimePicker — the time survives",
|
|
98
|
-
test("an hour stored in Formik reaches the field's time sections",
|
|
92
|
+
describe("FormikDateTimePicker — the time survives", () => {
|
|
93
|
+
test("an hour stored in Formik reaches the field's time sections", () => {
|
|
99
94
|
render(/*#__PURE__*/_jsx(HoteLecture, {
|
|
100
95
|
valeurInitiale: new Date(2026, 4, 31, 14, 30)
|
|
101
96
|
}));
|
|
@@ -105,14 +100,12 @@ describe("FormikDateTimePicker — the time survives", function () {
|
|
|
105
100
|
expect(sectionValeur("Day")).toBe("31");
|
|
106
101
|
expect(sectionValeur("Month")).toBe("5");
|
|
107
102
|
});
|
|
108
|
-
test("the date-only sibling has NO time section — which is why G-E exists",
|
|
103
|
+
test("the date-only sibling has NO time section — which is why G-E exists", () => {
|
|
109
104
|
render(/*#__PURE__*/_jsx(Formik, {
|
|
110
105
|
initialValues: {
|
|
111
106
|
dateVisite: new Date(2026, 4, 31, 14, 30)
|
|
112
107
|
},
|
|
113
|
-
onSubmit:
|
|
114
|
-
return undefined;
|
|
115
|
-
},
|
|
108
|
+
onSubmit: () => undefined,
|
|
116
109
|
children: /*#__PURE__*/_jsx(Form, {
|
|
117
110
|
children: /*#__PURE__*/_jsx(FormikDatePicker, {
|
|
118
111
|
name: "dateVisite",
|
|
@@ -131,8 +124,8 @@ describe("FormikDateTimePicker — the time survives", function () {
|
|
|
131
124
|
})).toBeInTheDocument();
|
|
132
125
|
});
|
|
133
126
|
});
|
|
134
|
-
describe("FormikDateTimePicker — the round-trip is symmetric (S-03)",
|
|
135
|
-
test("a value written in the charter format is read back with it",
|
|
127
|
+
describe("FormikDateTimePicker — the round-trip is symmetric (S-03)", () => {
|
|
128
|
+
test("a value written in the charter format is read back with it", () => {
|
|
136
129
|
render(/*#__PURE__*/_jsx(HoteLecture, {
|
|
137
130
|
valeurInitiale: "2026-12-31 14:30",
|
|
138
131
|
outputFormat: DATETIME_FORMAT_CHARTER
|
|
@@ -142,7 +135,7 @@ describe("FormikDateTimePicker — the round-trip is symmetric (S-03)", function
|
|
|
142
135
|
expect(sectionValeur("Hours")).toBe("14");
|
|
143
136
|
expect(sectionValeur("Minutes")).toBe("30");
|
|
144
137
|
});
|
|
145
|
-
test("a day-first stored value is NOT misread as month-first",
|
|
138
|
+
test("a day-first stored value is NOT misread as month-first", () => {
|
|
146
139
|
/* `new Date("05-03-2026 09:15")` lit MM-DD en V8 : le 3 mai au lieu du
|
|
147
140
|
* 5 mars. Avec le format declare, moment lit bien le 5 mars. C'est
|
|
148
141
|
* exactement le cas que S-03 decrit. */
|
|
@@ -155,7 +148,7 @@ describe("FormikDateTimePicker — the round-trip is symmetric (S-03)", function
|
|
|
155
148
|
expect(sectionValeur("Hours")).toBe("9");
|
|
156
149
|
expect(sectionValeur("Minutes")).toBe("15");
|
|
157
150
|
});
|
|
158
|
-
test("a malformed stored value renders EMPTY, not a guess",
|
|
151
|
+
test("a malformed stored value renders EMPTY, not a guess", () => {
|
|
159
152
|
render(/*#__PURE__*/_jsx(HoteLecture, {
|
|
160
153
|
valeurInitiale: "pas-une-date",
|
|
161
154
|
outputFormat: DATETIME_FORMAT_CHARTER
|
|
@@ -164,26 +157,21 @@ describe("FormikDateTimePicker — the round-trip is symmetric (S-03)", function
|
|
|
164
157
|
expect(sectionVide("Day")).toBe(true);
|
|
165
158
|
expect(sectionVide("Hours")).toBe(true);
|
|
166
159
|
});
|
|
167
|
-
test("`null` renders empty and does not warn about an uncontrolled input",
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
171
|
-
args[_key] = arguments[_key];
|
|
172
|
-
}
|
|
160
|
+
test("`null` renders empty and does not warn about an uncontrolled input", () => {
|
|
161
|
+
const avertissements = [];
|
|
162
|
+
const spy = jest.spyOn(console, "error").mockImplementation((...args) => {
|
|
173
163
|
avertissements.push(args);
|
|
174
164
|
});
|
|
175
165
|
render(/*#__PURE__*/_jsx(HoteLecture, {
|
|
176
166
|
valeurInitiale: null
|
|
177
167
|
}));
|
|
178
168
|
expect(sectionVide("Year")).toBe(true);
|
|
179
|
-
expect(avertissements.some(
|
|
180
|
-
return String(a[0]).includes("uncontrolled");
|
|
181
|
-
})).toBe(false);
|
|
169
|
+
expect(avertissements.some(a => String(a[0]).includes("uncontrolled"))).toBe(false);
|
|
182
170
|
spy.mockRestore();
|
|
183
171
|
});
|
|
184
172
|
});
|
|
185
|
-
describe("FormikDateTimePicker — read-only mode",
|
|
186
|
-
test("`readOnly` renders display TEXT, not a picker",
|
|
173
|
+
describe("FormikDateTimePicker — read-only mode", () => {
|
|
174
|
+
test("`readOnly` renders display TEXT, not a picker", () => {
|
|
187
175
|
/* Section Read Only Mode : « Inputs are forbidden in read-only mode. » */
|
|
188
176
|
render(/*#__PURE__*/_jsx(HoteLecture, {
|
|
189
177
|
valeurInitiale: new Date(2026, 11, 31, 14, 30),
|
|
@@ -194,7 +182,7 @@ describe("FormikDateTimePicker — read-only mode", function () {
|
|
|
194
182
|
})).not.toBeInTheDocument();
|
|
195
183
|
expect(screen.getByText(/31\/12\/2026 14:30/)).toBeInTheDocument();
|
|
196
184
|
});
|
|
197
|
-
test("an empty value in read-only mode shows the dash, not a blank panel",
|
|
185
|
+
test("an empty value in read-only mode shows the dash, not a blank panel", () => {
|
|
198
186
|
render(/*#__PURE__*/_jsx(HoteLecture, {
|
|
199
187
|
valeurInitiale: null,
|
|
200
188
|
readOnly: true
|
|
@@ -202,8 +190,8 @@ describe("FormikDateTimePicker — read-only mode", function () {
|
|
|
202
190
|
expect(screen.getByText("—")).toBeInTheDocument();
|
|
203
191
|
});
|
|
204
192
|
});
|
|
205
|
-
describe("FormikDateTimePicker — labelling",
|
|
206
|
-
test("the visible label is wired to the field id produced by Field",
|
|
193
|
+
describe("FormikDateTimePicker — labelling", () => {
|
|
194
|
+
test("the visible label is wired to the field id produced by Field", () => {
|
|
207
195
|
render(/*#__PURE__*/_jsx(HoteLecture, {
|
|
208
196
|
valeurInitiale: null
|
|
209
197
|
}));
|