@portnet/ui 6.0.0 → 6.0.2
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 +85 -0
- package/dist/esm/index.js +214 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/v2/__tests__/FieldError.test.js +159 -0
- package/dist/esm/v2/__tests__/FieldError.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FieldWidth.test.js +146 -0
- package/dist/esm/v2/__tests__/FieldWidth.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FileCard.test.js +143 -0
- package/dist/esm/v2/__tests__/FileCard.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FormikCheckbox.test.js +265 -0
- package/dist/esm/v2/__tests__/FormikCheckbox.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js +248 -0
- package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FormikRadioGroup.test.js +380 -0
- package/dist/esm/v2/__tests__/FormikRadioGroup.test.js.map +1 -0
- package/dist/esm/v2/__tests__/MobileRowCard.test.js +332 -0
- package/dist/esm/v2/__tests__/MobileRowCard.test.js.map +1 -0
- package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js +235 -0
- package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js.map +1 -0
- package/dist/esm/v2/__tests__/apiError.test.js +181 -0
- package/dist/esm/v2/__tests__/apiError.test.js.map +1 -0
- package/dist/esm/v2/__tests__/banned-patterns.test.js +270 -0
- package/dist/esm/v2/__tests__/banned-patterns.test.js.map +1 -0
- package/dist/esm/v2/__tests__/contrast-palette.test.js +224 -0
- package/dist/esm/v2/__tests__/contrast-palette.test.js.map +1 -0
- package/dist/esm/v2/__tests__/cssVariables.test.js +157 -0
- package/dist/esm/v2/__tests__/cssVariables.test.js.map +1 -0
- package/dist/esm/v2/__tests__/labels-merge.test.js +146 -0
- package/dist/esm/v2/__tests__/labels-merge.test.js.map +1 -0
- package/dist/esm/v2/__tests__/locale-fallback.test.js +109 -0
- package/dist/esm/v2/__tests__/locale-fallback.test.js.map +1 -0
- package/dist/esm/v2/__tests__/useFocusTrap.test.js +514 -0
- package/dist/esm/v2/__tests__/useFocusTrap.test.js.map +1 -0
- package/dist/esm/v2/components/Accordion.js +230 -0
- package/dist/esm/v2/components/Accordion.js.map +1 -0
- package/dist/esm/v2/components/ActionStrip.js +146 -0
- package/dist/esm/v2/components/ActionStrip.js.map +1 -0
- package/dist/esm/v2/components/Banner.js +254 -0
- package/dist/esm/v2/components/Banner.js.map +1 -0
- package/dist/esm/v2/components/Busy.js +97 -0
- package/dist/esm/v2/components/Busy.js.map +1 -0
- package/dist/esm/v2/components/Button.js +114 -0
- package/dist/esm/v2/components/Button.js.map +1 -0
- package/dist/esm/v2/components/CategoryTag.js +81 -0
- package/dist/esm/v2/components/CategoryTag.js.map +1 -0
- package/dist/esm/v2/components/Checkbox.js +124 -0
- package/dist/esm/v2/components/Checkbox.js.map +1 -0
- package/dist/esm/v2/components/Chip.js +124 -0
- package/dist/esm/v2/components/Chip.js.map +1 -0
- package/dist/esm/v2/components/Combobox.js +394 -0
- package/dist/esm/v2/components/Combobox.js.map +1 -0
- package/dist/esm/v2/components/CommandPalette.js +660 -0
- package/dist/esm/v2/components/CommandPalette.js.map +1 -0
- package/dist/esm/v2/components/ConfirmDialog.js +144 -0
- package/dist/esm/v2/components/ConfirmDialog.js.map +1 -0
- package/dist/esm/v2/components/DatePicker.js +200 -0
- package/dist/esm/v2/components/DatePicker.js.map +1 -0
- package/dist/esm/v2/components/DateRangePicker.js +289 -0
- package/dist/esm/v2/components/DateRangePicker.js.map +1 -0
- package/dist/esm/v2/components/DateTimePicker.js +215 -0
- package/dist/esm/v2/components/DateTimePicker.js.map +1 -0
- package/dist/esm/v2/components/Drawer.js +333 -0
- package/dist/esm/v2/components/Drawer.js.map +1 -0
- package/dist/esm/v2/components/Dropzone.js +540 -0
- package/dist/esm/v2/components/Dropzone.js.map +1 -0
- package/dist/esm/v2/components/EmptyState.js +102 -0
- package/dist/esm/v2/components/EmptyState.js.map +1 -0
- package/dist/esm/v2/components/FavoriteToggle.js +127 -0
- package/dist/esm/v2/components/FavoriteToggle.js.map +1 -0
- package/dist/esm/v2/components/Field.js +259 -0
- package/dist/esm/v2/components/Field.js.map +1 -0
- package/dist/esm/v2/components/FieldError.js +124 -0
- package/dist/esm/v2/components/FieldError.js.map +1 -0
- package/dist/esm/v2/components/FieldHelp.js +202 -0
- package/dist/esm/v2/components/FieldHelp.js.map +1 -0
- package/dist/esm/v2/components/FileCard.js +162 -0
- package/dist/esm/v2/components/FileCard.js.map +1 -0
- package/dist/esm/v2/components/FilterTab.js +138 -0
- package/dist/esm/v2/components/FilterTab.js.map +1 -0
- package/dist/esm/v2/components/ForbiddenPage.js +74 -0
- package/dist/esm/v2/components/ForbiddenPage.js.map +1 -0
- package/dist/esm/v2/components/FormGrid.js +179 -0
- package/dist/esm/v2/components/FormGrid.js.map +1 -0
- package/dist/esm/v2/components/FormikDisplay.js +118 -0
- package/dist/esm/v2/components/FormikDisplay.js.map +1 -0
- package/dist/esm/v2/components/Input.js +107 -0
- package/dist/esm/v2/components/Input.js.map +1 -0
- package/dist/esm/v2/components/KPICard.js +237 -0
- package/dist/esm/v2/components/KPICard.js.map +1 -0
- package/dist/esm/v2/components/KPIStrip.js +84 -0
- package/dist/esm/v2/components/KPIStrip.js.map +1 -0
- package/dist/esm/v2/components/KV.js +75 -0
- package/dist/esm/v2/components/KV.js.map +1 -0
- package/dist/esm/v2/components/KVGrid.js +74 -0
- package/dist/esm/v2/components/KVGrid.js.map +1 -0
- package/dist/esm/v2/components/Layout.js +284 -0
- package/dist/esm/v2/components/Layout.js.map +1 -0
- package/dist/esm/v2/components/MobileRowCard.js +314 -0
- package/dist/esm/v2/components/MobileRowCard.js.map +1 -0
- package/dist/esm/v2/components/Modal.js +276 -0
- package/dist/esm/v2/components/Modal.js.map +1 -0
- package/dist/esm/v2/components/NetworkErrorPage.js +78 -0
- package/dist/esm/v2/components/NetworkErrorPage.js.map +1 -0
- package/dist/esm/v2/components/NotFoundPage.js +58 -0
- package/dist/esm/v2/components/NotFoundPage.js.map +1 -0
- package/dist/esm/v2/components/NumberInput.js +309 -0
- package/dist/esm/v2/components/NumberInput.js.map +1 -0
- package/dist/esm/v2/components/OverflowMenu.js +184 -0
- package/dist/esm/v2/components/OverflowMenu.js.map +1 -0
- package/dist/esm/v2/components/PdfViewer.js +122 -0
- package/dist/esm/v2/components/PdfViewer.js.map +1 -0
- package/dist/esm/v2/components/ProgressBar.js +202 -0
- package/dist/esm/v2/components/ProgressBar.js.map +1 -0
- package/dist/esm/v2/components/Radio.js +228 -0
- package/dist/esm/v2/components/Radio.js.map +1 -0
- package/dist/esm/v2/components/SectionErrorBoundary.js +214 -0
- package/dist/esm/v2/components/SectionErrorBoundary.js.map +1 -0
- package/dist/esm/v2/components/SectionHeader.js +132 -0
- package/dist/esm/v2/components/SectionHeader.js.map +1 -0
- package/dist/esm/v2/components/Segmented.js +254 -0
- package/dist/esm/v2/components/Segmented.js.map +1 -0
- package/dist/esm/v2/components/Select.js +490 -0
- package/dist/esm/v2/components/Select.js.map +1 -0
- package/dist/esm/v2/components/ServerErrorPage.js +74 -0
- package/dist/esm/v2/components/ServerErrorPage.js.map +1 -0
- package/dist/esm/v2/components/Skeleton.js +269 -0
- package/dist/esm/v2/components/Skeleton.js.map +1 -0
- package/dist/esm/v2/components/SkipLink.js +49 -0
- package/dist/esm/v2/components/SkipLink.js.map +1 -0
- package/dist/esm/v2/components/Spinner.js +69 -0
- package/dist/esm/v2/components/Spinner.js.map +1 -0
- package/dist/esm/v2/components/Status.js +64 -0
- package/dist/esm/v2/components/Status.js.map +1 -0
- package/dist/esm/v2/components/Stepper.js +432 -0
- package/dist/esm/v2/components/Stepper.js.map +1 -0
- package/dist/esm/v2/components/Surface.js +159 -0
- package/dist/esm/v2/components/Surface.js.map +1 -0
- package/dist/esm/v2/components/Switch.js +128 -0
- package/dist/esm/v2/components/Switch.js.map +1 -0
- package/dist/esm/v2/components/Tabs.js +150 -0
- package/dist/esm/v2/components/Tabs.js.map +1 -0
- package/dist/esm/v2/components/TelInput.js +274 -0
- package/dist/esm/v2/components/TelInput.js.map +1 -0
- package/dist/esm/v2/components/Textarea.js +72 -0
- package/dist/esm/v2/components/Textarea.js.map +1 -0
- package/dist/esm/v2/components/TimePicker.js +134 -0
- package/dist/esm/v2/components/TimePicker.js.map +1 -0
- package/dist/esm/v2/components/Toast.js +376 -0
- package/dist/esm/v2/components/Toast.js.map +1 -0
- package/dist/esm/v2/components/Tooltip.js +161 -0
- package/dist/esm/v2/components/Tooltip.js.map +1 -0
- package/dist/esm/v2/components/_ErrorPageBody.js +85 -0
- package/dist/esm/v2/components/_ErrorPageBody.js.map +1 -0
- package/dist/esm/v2/components/_pickerShared.js +60 -0
- package/dist/esm/v2/components/_pickerShared.js.map +1 -0
- package/dist/esm/v2/components/index.js +271 -0
- package/dist/esm/v2/components/index.js.map +1 -0
- package/dist/esm/v2/hooks/index.js +10 -0
- package/dist/esm/v2/hooks/index.js.map +1 -0
- package/dist/esm/v2/hooks/useDelayedFlag.js +55 -0
- package/dist/esm/v2/hooks/useDelayedFlag.js.map +1 -0
- package/dist/esm/v2/hooks/useDensity.js +119 -0
- package/dist/esm/v2/hooks/useDensity.js.map +1 -0
- package/dist/esm/v2/hooks/useFocusFirstError.js +197 -0
- package/dist/esm/v2/hooks/useFocusFirstError.js.map +1 -0
- package/dist/esm/v2/hooks/useFocusTrap.js +202 -0
- package/dist/esm/v2/hooks/useFocusTrap.js.map +1 -0
- package/dist/esm/v2/hooks/useFormAutoSave.js +181 -0
- package/dist/esm/v2/hooks/useFormAutoSave.js.map +1 -0
- package/dist/esm/v2/hooks/useFormCompletionProgress.js +131 -0
- package/dist/esm/v2/hooks/useFormCompletionProgress.js.map +1 -0
- package/dist/esm/v2/hooks/useResolvedDensity.js +44 -0
- package/dist/esm/v2/hooks/useResolvedDensity.js.map +1 -0
- package/dist/esm/v2/hooks/useSortedRows.js +32 -0
- package/dist/esm/v2/hooks/useSortedRows.js.map +1 -0
- package/dist/esm/v2/hooks/useTabLoading.js +79 -0
- package/dist/esm/v2/hooks/useTabLoading.js.map +1 -0
- package/dist/esm/v2/index.js +132 -0
- package/dist/esm/v2/index.js.map +1 -0
- package/dist/esm/v2/modalContext.js +108 -0
- package/dist/esm/v2/modalContext.js.map +1 -0
- package/dist/esm/v2/models/favorite.js +2 -0
- package/dist/esm/v2/models/favorite.js.map +1 -0
- package/dist/esm/v2/models/index.js +12 -0
- package/dist/esm/v2/models/index.js.map +1 -0
- package/dist/esm/v2/models/personalization.js +2 -0
- package/dist/esm/v2/models/personalization.js.map +1 -0
- package/dist/esm/v2/models/referentiel.js +2 -0
- package/dist/esm/v2/models/referentiel.js.map +1 -0
- package/dist/esm/v2/models/savedFilter.js +2 -0
- package/dist/esm/v2/models/savedFilter.js.map +1 -0
- package/dist/esm/v2/patterns/ActionBar.js +603 -0
- package/dist/esm/v2/patterns/ActionBar.js.map +1 -0
- package/dist/esm/v2/patterns/BulkActionBar.js +147 -0
- package/dist/esm/v2/patterns/BulkActionBar.js.map +1 -0
- package/dist/esm/v2/patterns/CollapsibleDataGrid.js +303 -0
- package/dist/esm/v2/patterns/CollapsibleDataGrid.js.map +1 -0
- package/dist/esm/v2/patterns/ColumnsToggle.js +301 -0
- package/dist/esm/v2/patterns/ColumnsToggle.js.map +1 -0
- package/dist/esm/v2/patterns/DataGrid.js +820 -0
- package/dist/esm/v2/patterns/DataGrid.js.map +1 -0
- package/dist/esm/v2/patterns/DataGridSettingsMenu.js +375 -0
- package/dist/esm/v2/patterns/DataGridSettingsMenu.js.map +1 -0
- package/dist/esm/v2/patterns/DataGridToolbar.js +249 -0
- package/dist/esm/v2/patterns/DataGridToolbar.js.map +1 -0
- package/dist/esm/v2/patterns/DataGridVirtualized.js +523 -0
- package/dist/esm/v2/patterns/DataGridVirtualized.js.map +1 -0
- package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js +70 -0
- package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -0
- package/dist/esm/v2/patterns/FavoriteColumn.js +117 -0
- package/dist/esm/v2/patterns/FavoriteColumn.js.map +1 -0
- package/dist/esm/v2/patterns/FavoritesFilter.js +91 -0
- package/dist/esm/v2/patterns/FavoritesFilter.js.map +1 -0
- package/dist/esm/v2/patterns/FormErrorSummary.js +101 -0
- package/dist/esm/v2/patterns/FormErrorSummary.js.map +1 -0
- package/dist/esm/v2/patterns/FormPageShell.js +126 -0
- package/dist/esm/v2/patterns/FormPageShell.js.map +1 -0
- package/dist/esm/v2/patterns/FormSection.js +190 -0
- package/dist/esm/v2/patterns/FormSection.js.map +1 -0
- package/dist/esm/v2/patterns/FormikCheckbox.js +140 -0
- package/dist/esm/v2/patterns/FormikCheckbox.js.map +1 -0
- package/dist/esm/v2/patterns/FormikCheckboxGroup.js +110 -0
- package/dist/esm/v2/patterns/FormikCheckboxGroup.js.map +1 -0
- package/dist/esm/v2/patterns/FormikCombobox.js +118 -0
- package/dist/esm/v2/patterns/FormikCombobox.js.map +1 -0
- package/dist/esm/v2/patterns/FormikDatePicker.js +162 -0
- package/dist/esm/v2/patterns/FormikDatePicker.js.map +1 -0
- package/dist/esm/v2/patterns/FormikDateTimePicker.js +150 -0
- package/dist/esm/v2/patterns/FormikDateTimePicker.js.map +1 -0
- package/dist/esm/v2/patterns/FormikErrorFocus.js +77 -0
- package/dist/esm/v2/patterns/FormikErrorFocus.js.map +1 -0
- package/dist/esm/v2/patterns/FormikFile.js +148 -0
- package/dist/esm/v2/patterns/FormikFile.js.map +1 -0
- package/dist/esm/v2/patterns/FormikInput.js +130 -0
- package/dist/esm/v2/patterns/FormikInput.js.map +1 -0
- package/dist/esm/v2/patterns/FormikRadioGroup.js +141 -0
- package/dist/esm/v2/patterns/FormikRadioGroup.js.map +1 -0
- package/dist/esm/v2/patterns/FormikReferentielField.js +116 -0
- package/dist/esm/v2/patterns/FormikReferentielField.js.map +1 -0
- package/dist/esm/v2/patterns/FormikSelect.js +162 -0
- package/dist/esm/v2/patterns/FormikSelect.js.map +1 -0
- package/dist/esm/v2/patterns/FormikTextarea.js +79 -0
- package/dist/esm/v2/patterns/FormikTextarea.js.map +1 -0
- package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js +212 -0
- package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js.map +1 -0
- package/dist/esm/v2/patterns/NetworkErrorBanner.js +72 -0
- package/dist/esm/v2/patterns/NetworkErrorBanner.js.map +1 -0
- package/dist/esm/v2/patterns/PageContent.js +62 -0
- package/dist/esm/v2/patterns/PageContent.js.map +1 -0
- package/dist/esm/v2/patterns/ReferentielField.js +615 -0
- package/dist/esm/v2/patterns/ReferentielField.js.map +1 -0
- package/dist/esm/v2/patterns/RowFavoriteToggle.js +122 -0
- package/dist/esm/v2/patterns/RowFavoriteToggle.js.map +1 -0
- package/dist/esm/v2/patterns/SaveFilterDialog.js +197 -0
- package/dist/esm/v2/patterns/SaveFilterDialog.js.map +1 -0
- package/dist/esm/v2/patterns/SavedFiltersMenu.js +406 -0
- package/dist/esm/v2/patterns/SavedFiltersMenu.js.map +1 -0
- package/dist/esm/v2/patterns/SkeletonPageShell.js +342 -0
- package/dist/esm/v2/patterns/SkeletonPageShell.js.map +1 -0
- package/dist/esm/v2/patterns/SortableHeader.js +179 -0
- package/dist/esm/v2/patterns/SortableHeader.js.map +1 -0
- package/dist/esm/v2/patterns/Tour.js +471 -0
- package/dist/esm/v2/patterns/Tour.js.map +1 -0
- package/dist/esm/v2/patterns/_dataGridShared.js +431 -0
- package/dist/esm/v2/patterns/_dataGridShared.js.map +1 -0
- package/dist/esm/v2/patterns/_pickerSerialisation.js +74 -0
- package/dist/esm/v2/patterns/_pickerSerialisation.js.map +1 -0
- package/dist/esm/v2/patterns/_sort.js +112 -0
- package/dist/esm/v2/patterns/_sort.js.map +1 -0
- package/dist/esm/v2/patterns/_useColumnReorder.js +257 -0
- package/dist/esm/v2/patterns/_useColumnReorder.js.map +1 -0
- package/dist/esm/v2/patterns/_useColumnResize.js +191 -0
- package/dist/esm/v2/patterns/_useColumnResize.js.map +1 -0
- package/dist/esm/v2/patterns/index.js +178 -0
- package/dist/esm/v2/patterns/index.js.map +1 -0
- package/dist/esm/v2/personalization/PersonalizationProvider.js +168 -0
- package/dist/esm/v2/personalization/PersonalizationProvider.js.map +1 -0
- package/dist/esm/v2/personalization/adapters/_storageKey.js +60 -0
- package/dist/esm/v2/personalization/adapters/_storageKey.js.map +1 -0
- package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js +124 -0
- package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -0
- package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js +70 -0
- package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js.map +1 -0
- package/dist/esm/v2/personalization/adapters/index.js +11 -0
- package/dist/esm/v2/personalization/adapters/index.js.map +1 -0
- package/dist/esm/v2/personalization/capabilities/favorites.js +216 -0
- package/dist/esm/v2/personalization/capabilities/favorites.js.map +1 -0
- package/dist/esm/v2/personalization/capabilities/favoritesView.js +111 -0
- package/dist/esm/v2/personalization/capabilities/favoritesView.js.map +1 -0
- package/dist/esm/v2/personalization/capabilities/gridPreferences.js +209 -0
- package/dist/esm/v2/personalization/capabilities/gridPreferences.js.map +1 -0
- package/dist/esm/v2/personalization/capabilities/index.js +22 -0
- package/dist/esm/v2/personalization/capabilities/index.js.map +1 -0
- package/dist/esm/v2/personalization/capabilities/savedFilters.js +291 -0
- package/dist/esm/v2/personalization/capabilities/savedFilters.js.map +1 -0
- package/dist/esm/v2/personalization/createPersonalizationStore.js +472 -0
- package/dist/esm/v2/personalization/createPersonalizationStore.js.map +1 -0
- package/dist/esm/v2/personalization/index.js +64 -0
- package/dist/esm/v2/personalization/index.js.map +1 -0
- package/dist/esm/v2/personalization/personalizationContext.js +108 -0
- package/dist/esm/v2/personalization/personalizationContext.js.map +1 -0
- package/dist/esm/v2/personalization/schema.js +92 -0
- package/dist/esm/v2/personalization/schema.js.map +1 -0
- package/dist/esm/v2/personalization/types.js +2 -0
- package/dist/esm/v2/personalization/types.js.map +1 -0
- package/dist/esm/v2/referentiel/ReferentielProvider.js +87 -0
- package/dist/esm/v2/referentiel/ReferentielProvider.js.map +1 -0
- package/dist/esm/v2/referentiel/index.js +15 -0
- package/dist/esm/v2/referentiel/index.js.map +1 -0
- package/dist/esm/v2/referentiel/useReferentielClient.js +37 -0
- package/dist/esm/v2/referentiel/useReferentielClient.js.map +1 -0
- package/dist/esm/v2/referentiel/useReferentielOptions.js +169 -0
- package/dist/esm/v2/referentiel/useReferentielOptions.js.map +1 -0
- package/dist/esm/v2/referentiel/useReferentielSearch.js +132 -0
- package/dist/esm/v2/referentiel/useReferentielSearch.js.map +1 -0
- package/dist/esm/v2/styles/base.css +425 -0
- package/dist/esm/v2/styles/css.d.ts +10 -0
- package/dist/esm/v2/styles/index.js +12 -0
- package/dist/esm/v2/styles/index.js.map +1 -0
- package/dist/esm/v2/theme/_brand.js +64 -0
- package/dist/esm/v2/theme/_brand.js.map +1 -0
- package/dist/esm/v2/theme/_brandSecondary.js +60 -0
- package/dist/esm/v2/theme/_brandSecondary.js.map +1 -0
- package/dist/esm/v2/theme/createPortnetTheme.js +548 -0
- package/dist/esm/v2/theme/createPortnetTheme.js.map +1 -0
- package/dist/esm/v2/theme/cssVariables.js +198 -0
- package/dist/esm/v2/theme/cssVariables.js.map +1 -0
- package/dist/esm/v2/theme/index.js +32 -0
- package/dist/esm/v2/theme/index.js.map +1 -0
- package/dist/esm/v2/tokens/breakpoints.js +106 -0
- package/dist/esm/v2/tokens/breakpoints.js.map +1 -0
- package/dist/esm/v2/tokens/colors.js +219 -0
- package/dist/esm/v2/tokens/colors.js.map +1 -0
- package/dist/esm/v2/tokens/density.js +98 -0
- package/dist/esm/v2/tokens/density.js.map +1 -0
- package/dist/esm/v2/tokens/index.js +80 -0
- package/dist/esm/v2/tokens/index.js.map +1 -0
- package/dist/esm/v2/tokens/motion.js +88 -0
- package/dist/esm/v2/tokens/motion.js.map +1 -0
- package/dist/esm/v2/tokens/radius.js +22 -0
- package/dist/esm/v2/tokens/radius.js.map +1 -0
- package/dist/esm/v2/tokens/shadows.js +40 -0
- package/dist/esm/v2/tokens/shadows.js.map +1 -0
- package/dist/esm/v2/tokens/spacing.js +51 -0
- package/dist/esm/v2/tokens/spacing.js.map +1 -0
- package/dist/esm/v2/tokens/state.js +41 -0
- package/dist/esm/v2/tokens/state.js.map +1 -0
- package/dist/esm/v2/tokens/statusPalette.js +66 -0
- package/dist/esm/v2/tokens/statusPalette.js.map +1 -0
- package/dist/esm/v2/tokens/tokens.json +153 -0
- package/dist/esm/v2/tokens/typography.js +149 -0
- package/dist/esm/v2/tokens/typography.js.map +1 -0
- package/dist/esm/v2/tokens/zIndex.js +44 -0
- package/dist/esm/v2/tokens/zIndex.js.map +1 -0
- package/dist/esm/v2/types/common.js +2 -0
- package/dist/esm/v2/types/common.js.map +1 -0
- package/dist/esm/v2/types/datagrid.js +2 -0
- package/dist/esm/v2/types/datagrid.js.map +1 -0
- package/dist/esm/v2/types/index.js +12 -0
- package/dist/esm/v2/types/index.js.map +1 -0
- package/dist/esm/v2/utils/apiError.js +281 -0
- package/dist/esm/v2/utils/apiError.js.map +1 -0
- package/dist/esm/v2/utils/contrast.js +157 -0
- package/dist/esm/v2/utils/contrast.js.map +1 -0
- package/dist/esm/v2/utils/cx.js +38 -0
- package/dist/esm/v2/utils/cx.js.map +1 -0
- package/dist/esm/v2/utils/fileDownload.js +226 -0
- package/dist/esm/v2/utils/fileDownload.js.map +1 -0
- package/dist/esm/v2/utils/fmtMoney.js +78 -0
- package/dist/esm/v2/utils/fmtMoney.js.map +1 -0
- package/dist/esm/v2/utils/index.js +43 -0
- package/dist/esm/v2/utils/index.js.map +1 -0
- package/dist/esm/v2/utils/mergeLabels.js +86 -0
- package/dist/esm/v2/utils/mergeLabels.js.map +1 -0
- package/dist/esm/v2/utils/networkStatus.js +114 -0
- package/dist/esm/v2/utils/networkStatus.js.map +1 -0
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +35 -0
- package/dist/index.js.map +1 -1
- package/dist/v2/__tests__/FieldError.test.js +160 -0
- package/dist/v2/__tests__/FieldError.test.js.map +1 -0
- package/dist/v2/__tests__/FieldWidth.test.js +150 -0
- package/dist/v2/__tests__/FieldWidth.test.js.map +1 -0
- package/dist/v2/__tests__/FileCard.test.js +144 -0
- package/dist/v2/__tests__/FileCard.test.js.map +1 -0
- package/dist/v2/__tests__/FormikCheckbox.test.js +268 -0
- package/dist/v2/__tests__/FormikCheckbox.test.js.map +1 -0
- package/dist/v2/__tests__/FormikDateTimePicker.test.js +247 -0
- package/dist/v2/__tests__/FormikDateTimePicker.test.js.map +1 -0
- package/dist/v2/__tests__/FormikRadioGroup.test.js +381 -0
- package/dist/v2/__tests__/FormikRadioGroup.test.js.map +1 -0
- package/dist/v2/__tests__/MobileRowCard.test.js +52 -56
- package/dist/v2/__tests__/MobileRowCard.test.js.map +1 -1
- package/dist/v2/__tests__/SectionErrorBoundary.test.js +237 -0
- package/dist/v2/__tests__/SectionErrorBoundary.test.js.map +1 -0
- package/dist/v2/__tests__/labels-merge.test.js +20 -24
- package/dist/v2/__tests__/labels-merge.test.js.map +1 -1
- package/dist/v2/components/Accordion.d.ts +6 -6
- package/dist/v2/components/Accordion.d.ts.map +1 -1
- package/dist/v2/components/Accordion.js.map +1 -1
- package/dist/v2/components/ActionStrip.d.ts +12 -12
- package/dist/v2/components/ActionStrip.d.ts.map +1 -1
- package/dist/v2/components/ActionStrip.js.map +1 -1
- package/dist/v2/components/Banner.d.ts +48 -9
- package/dist/v2/components/Banner.d.ts.map +1 -1
- package/dist/v2/components/Banner.js +116 -35
- package/dist/v2/components/Banner.js.map +1 -1
- package/dist/v2/components/Busy.d.ts +3 -3
- package/dist/v2/components/Busy.d.ts.map +1 -1
- package/dist/v2/components/Busy.js.map +1 -1
- package/dist/v2/components/Button.d.ts +6 -6
- package/dist/v2/components/Button.d.ts.map +1 -1
- package/dist/v2/components/Button.js.map +1 -1
- package/dist/v2/components/CategoryTag.d.ts +3 -3
- package/dist/v2/components/CategoryTag.d.ts.map +1 -1
- package/dist/v2/components/CategoryTag.js.map +1 -1
- package/dist/v2/components/Checkbox.d.ts +11 -11
- package/dist/v2/components/Checkbox.d.ts.map +1 -1
- package/dist/v2/components/Checkbox.js.map +1 -1
- package/dist/v2/components/Chip.d.ts +8 -8
- package/dist/v2/components/Chip.d.ts.map +1 -1
- package/dist/v2/components/Chip.js +2 -1
- package/dist/v2/components/Chip.js.map +1 -1
- package/dist/v2/components/Combobox.d.ts +27 -27
- package/dist/v2/components/Combobox.d.ts.map +1 -1
- package/dist/v2/components/Combobox.js +3 -2
- package/dist/v2/components/Combobox.js.map +1 -1
- package/dist/v2/components/CommandPalette.d.ts +20 -20
- package/dist/v2/components/CommandPalette.d.ts.map +1 -1
- package/dist/v2/components/CommandPalette.js +2 -6
- package/dist/v2/components/CommandPalette.js.map +1 -1
- package/dist/v2/components/ConfirmDialog.d.ts +13 -13
- package/dist/v2/components/ConfirmDialog.d.ts.map +1 -1
- package/dist/v2/components/ConfirmDialog.js +2 -1
- package/dist/v2/components/ConfirmDialog.js.map +1 -1
- package/dist/v2/components/DatePicker.d.ts +11 -11
- package/dist/v2/components/DatePicker.d.ts.map +1 -1
- package/dist/v2/components/DatePicker.js.map +1 -1
- package/dist/v2/components/DateRangePicker.d.ts +16 -16
- package/dist/v2/components/DateRangePicker.d.ts.map +1 -1
- package/dist/v2/components/DateRangePicker.js +2 -1
- package/dist/v2/components/DateRangePicker.js.map +1 -1
- package/dist/v2/components/DateTimePicker.d.ts +11 -11
- package/dist/v2/components/DateTimePicker.d.ts.map +1 -1
- package/dist/v2/components/DateTimePicker.js +37 -4
- package/dist/v2/components/DateTimePicker.js.map +1 -1
- package/dist/v2/components/Drawer.d.ts +18 -18
- package/dist/v2/components/Drawer.d.ts.map +1 -1
- package/dist/v2/components/Drawer.js +2 -1
- package/dist/v2/components/Drawer.js.map +1 -1
- package/dist/v2/components/Dropzone.d.ts +34 -34
- package/dist/v2/components/Dropzone.d.ts.map +1 -1
- package/dist/v2/components/Dropzone.js +11 -3
- package/dist/v2/components/Dropzone.js.map +1 -1
- package/dist/v2/components/EmptyState.d.ts +7 -7
- package/dist/v2/components/EmptyState.d.ts.map +1 -1
- package/dist/v2/components/EmptyState.js.map +1 -1
- package/dist/v2/components/FavoriteToggle.d.ts +7 -7
- package/dist/v2/components/FavoriteToggle.d.ts.map +1 -1
- package/dist/v2/components/FavoriteToggle.js +2 -1
- package/dist/v2/components/FavoriteToggle.js.map +1 -1
- package/dist/v2/components/Field.d.ts +76 -13
- package/dist/v2/components/Field.d.ts.map +1 -1
- package/dist/v2/components/Field.js +87 -9
- package/dist/v2/components/Field.js.map +1 -1
- package/dist/v2/components/FieldError.d.ts +78 -0
- package/dist/v2/components/FieldError.d.ts.map +1 -0
- package/dist/v2/components/FieldError.js +131 -0
- package/dist/v2/components/FieldError.js.map +1 -0
- package/dist/v2/components/FieldHelp.d.ts +7 -7
- package/dist/v2/components/FieldHelp.d.ts.map +1 -1
- package/dist/v2/components/FieldHelp.js.map +1 -1
- package/dist/v2/components/FileCard.d.ts +75 -0
- package/dist/v2/components/FileCard.d.ts.map +1 -0
- package/dist/v2/components/FileCard.js +169 -0
- package/dist/v2/components/FileCard.js.map +1 -0
- package/dist/v2/components/FilterTab.d.ts +9 -9
- package/dist/v2/components/FilterTab.d.ts.map +1 -1
- package/dist/v2/components/FilterTab.js +2 -1
- package/dist/v2/components/FilterTab.js.map +1 -1
- package/dist/v2/components/FormGrid.d.ts +9 -4
- package/dist/v2/components/FormGrid.d.ts.map +1 -1
- package/dist/v2/components/FormGrid.js +11 -1
- package/dist/v2/components/FormGrid.js.map +1 -1
- package/dist/v2/components/FormikDisplay.d.ts +6 -6
- package/dist/v2/components/FormikDisplay.d.ts.map +1 -1
- package/dist/v2/components/FormikDisplay.js.map +1 -1
- package/dist/v2/components/Input.d.ts +6 -6
- package/dist/v2/components/Input.d.ts.map +1 -1
- package/dist/v2/components/Input.js.map +1 -1
- package/dist/v2/components/KPICard.d.ts +43 -13
- package/dist/v2/components/KPICard.d.ts.map +1 -1
- package/dist/v2/components/KPICard.js +53 -14
- package/dist/v2/components/KPICard.js.map +1 -1
- package/dist/v2/components/KPIStrip.d.ts +68 -0
- package/dist/v2/components/KPIStrip.d.ts.map +1 -0
- package/dist/v2/components/KPIStrip.js +92 -0
- package/dist/v2/components/KPIStrip.js.map +1 -0
- package/dist/v2/components/KV.d.ts +3 -3
- package/dist/v2/components/KV.d.ts.map +1 -1
- package/dist/v2/components/KV.js.map +1 -1
- package/dist/v2/components/KVGrid.d.ts +2 -2
- package/dist/v2/components/KVGrid.d.ts.map +1 -1
- package/dist/v2/components/KVGrid.js +8 -1
- package/dist/v2/components/KVGrid.js.map +1 -1
- package/dist/v2/components/Layout.d.ts +7 -7
- package/dist/v2/components/Layout.d.ts.map +1 -1
- package/dist/v2/components/Layout.js.map +1 -1
- package/dist/v2/components/MobileRowCard.d.ts +13 -13
- package/dist/v2/components/MobileRowCard.d.ts.map +1 -1
- package/dist/v2/components/MobileRowCard.js.map +1 -1
- package/dist/v2/components/Modal.d.ts +12 -12
- package/dist/v2/components/Modal.d.ts.map +1 -1
- package/dist/v2/components/Modal.js.map +1 -1
- package/dist/v2/components/NetworkErrorPage.d.ts +1 -1
- package/dist/v2/components/NetworkErrorPage.d.ts.map +1 -1
- package/dist/v2/components/NetworkErrorPage.js.map +1 -1
- package/dist/v2/components/NumberInput.d.ts +14 -14
- package/dist/v2/components/NumberInput.d.ts.map +1 -1
- package/dist/v2/components/NumberInput.js +7 -6
- package/dist/v2/components/NumberInput.js.map +1 -1
- package/dist/v2/components/OverflowMenu.d.ts +14 -14
- package/dist/v2/components/OverflowMenu.d.ts.map +1 -1
- package/dist/v2/components/OverflowMenu.js +4 -8
- package/dist/v2/components/OverflowMenu.js.map +1 -1
- package/dist/v2/components/PdfViewer.d.ts +9 -9
- package/dist/v2/components/PdfViewer.d.ts.map +1 -1
- package/dist/v2/components/PdfViewer.js.map +1 -1
- package/dist/v2/components/ProgressBar.d.ts +10 -10
- package/dist/v2/components/ProgressBar.d.ts.map +1 -1
- package/dist/v2/components/ProgressBar.js.map +1 -1
- package/dist/v2/components/Radio.d.ts +7 -7
- package/dist/v2/components/Radio.d.ts.map +1 -1
- package/dist/v2/components/Radio.js.map +1 -1
- package/dist/v2/components/SectionErrorBoundary.d.ts +89 -0
- package/dist/v2/components/SectionErrorBoundary.d.ts.map +1 -0
- package/dist/v2/components/SectionErrorBoundary.js +221 -0
- package/dist/v2/components/SectionErrorBoundary.js.map +1 -0
- package/dist/v2/components/SectionHeader.d.ts +5 -5
- package/dist/v2/components/SectionHeader.d.ts.map +1 -1
- package/dist/v2/components/SectionHeader.js.map +1 -1
- package/dist/v2/components/Segmented.d.ts +11 -11
- package/dist/v2/components/Segmented.d.ts.map +1 -1
- package/dist/v2/components/Segmented.js.map +1 -1
- package/dist/v2/components/Select.d.ts +33 -15
- package/dist/v2/components/Select.d.ts.map +1 -1
- package/dist/v2/components/Select.js +147 -30
- package/dist/v2/components/Select.js.map +1 -1
- package/dist/v2/components/ServerErrorPage.d.ts +1 -1
- package/dist/v2/components/ServerErrorPage.d.ts.map +1 -1
- package/dist/v2/components/ServerErrorPage.js.map +1 -1
- package/dist/v2/components/Skeleton.d.ts +15 -15
- package/dist/v2/components/Skeleton.d.ts.map +1 -1
- package/dist/v2/components/Skeleton.js.map +1 -1
- package/dist/v2/components/SkipLink.d.ts +2 -2
- package/dist/v2/components/SkipLink.d.ts.map +1 -1
- package/dist/v2/components/SkipLink.js.map +1 -1
- package/dist/v2/components/Status.d.ts +3 -3
- package/dist/v2/components/Status.d.ts.map +1 -1
- package/dist/v2/components/Status.js.map +1 -1
- package/dist/v2/components/Stepper.d.ts +28 -22
- package/dist/v2/components/Stepper.d.ts.map +1 -1
- package/dist/v2/components/Stepper.js +31 -5
- package/dist/v2/components/Stepper.js.map +1 -1
- package/dist/v2/components/Surface.d.ts +94 -0
- package/dist/v2/components/Surface.d.ts.map +1 -0
- package/dist/v2/components/Surface.js +163 -0
- package/dist/v2/components/Surface.js.map +1 -0
- package/dist/v2/components/Switch.d.ts +4 -4
- package/dist/v2/components/Switch.d.ts.map +1 -1
- package/dist/v2/components/Switch.js.map +1 -1
- package/dist/v2/components/Tabs.d.ts +6 -6
- package/dist/v2/components/Tabs.d.ts.map +1 -1
- package/dist/v2/components/Tabs.js.map +1 -1
- package/dist/v2/components/TelInput.d.ts +8 -8
- package/dist/v2/components/TelInput.d.ts.map +1 -1
- package/dist/v2/components/TelInput.js +18 -18
- package/dist/v2/components/TelInput.js.map +1 -1
- package/dist/v2/components/Textarea.d.ts +1 -1
- package/dist/v2/components/Textarea.d.ts.map +1 -1
- package/dist/v2/components/Textarea.js.map +1 -1
- package/dist/v2/components/TimePicker.d.ts +11 -11
- package/dist/v2/components/TimePicker.d.ts.map +1 -1
- package/dist/v2/components/TimePicker.js.map +1 -1
- package/dist/v2/components/Toast.d.ts +6 -6
- package/dist/v2/components/Toast.d.ts.map +1 -1
- package/dist/v2/components/Toast.js +9 -8
- package/dist/v2/components/Toast.js.map +1 -1
- package/dist/v2/components/Tooltip.d.ts +1 -1
- package/dist/v2/components/Tooltip.d.ts.map +1 -1
- package/dist/v2/components/Tooltip.js.map +1 -1
- package/dist/v2/components/index.d.ts +170 -0
- package/dist/v2/components/index.d.ts.map +1 -1
- package/dist/v2/components/index.js +35 -0
- package/dist/v2/components/index.js.map +1 -1
- package/dist/v2/index.d.ts.map +1 -1
- package/dist/v2/index.js.map +1 -1
- package/dist/v2/models/favorite.d.ts +1 -1
- package/dist/v2/models/favorite.d.ts.map +1 -1
- package/dist/v2/models/favorite.js.map +1 -1
- package/dist/v2/models/personalization.d.ts +13 -13
- 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 +11 -11
- 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 -8
- package/dist/v2/models/savedFilter.d.ts.map +1 -1
- package/dist/v2/models/savedFilter.js.map +1 -1
- package/dist/v2/patterns/ActionBar.d.ts +33 -33
- package/dist/v2/patterns/ActionBar.d.ts.map +1 -1
- package/dist/v2/patterns/ActionBar.js +2 -1
- package/dist/v2/patterns/ActionBar.js.map +1 -1
- package/dist/v2/patterns/BulkActionBar.d.ts +12 -12
- package/dist/v2/patterns/BulkActionBar.d.ts.map +1 -1
- package/dist/v2/patterns/BulkActionBar.js +2 -1
- package/dist/v2/patterns/BulkActionBar.js.map +1 -1
- package/dist/v2/patterns/CollapsibleDataGrid.d.ts +15 -15
- package/dist/v2/patterns/CollapsibleDataGrid.d.ts.map +1 -1
- package/dist/v2/patterns/CollapsibleDataGrid.js.map +1 -1
- package/dist/v2/patterns/ColumnsToggle.d.ts +7 -7
- package/dist/v2/patterns/ColumnsToggle.d.ts.map +1 -1
- package/dist/v2/patterns/ColumnsToggle.js +4 -8
- package/dist/v2/patterns/ColumnsToggle.js.map +1 -1
- package/dist/v2/patterns/DataGridSettingsMenu.d.ts +12 -12
- package/dist/v2/patterns/DataGridSettingsMenu.d.ts.map +1 -1
- package/dist/v2/patterns/DataGridSettingsMenu.js +9 -8
- package/dist/v2/patterns/DataGridSettingsMenu.js.map +1 -1
- package/dist/v2/patterns/DataGridToolbar.d.ts +40 -40
- package/dist/v2/patterns/DataGridToolbar.d.ts.map +1 -1
- package/dist/v2/patterns/DataGridToolbar.js +2 -1
- package/dist/v2/patterns/DataGridToolbar.js.map +1 -1
- package/dist/v2/patterns/DataGridVirtualized.d.ts +27 -27
- package/dist/v2/patterns/DataGridVirtualized.d.ts.map +1 -1
- package/dist/v2/patterns/DataGridVirtualized.js.map +1 -1
- package/dist/v2/patterns/DeleteResourceConfirmDialog.d.ts +5 -5
- package/dist/v2/patterns/DeleteResourceConfirmDialog.d.ts.map +1 -1
- package/dist/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
- package/dist/v2/patterns/FavoriteColumn.d.ts +15 -15
- package/dist/v2/patterns/FavoriteColumn.d.ts.map +1 -1
- package/dist/v2/patterns/FavoriteColumn.js +14 -61
- package/dist/v2/patterns/FavoriteColumn.js.map +1 -1
- package/dist/v2/patterns/FavoritesFilter.d.ts +10 -10
- package/dist/v2/patterns/FavoritesFilter.d.ts.map +1 -1
- package/dist/v2/patterns/FavoritesFilter.js +2 -1
- package/dist/v2/patterns/FavoritesFilter.js.map +1 -1
- package/dist/v2/patterns/FormErrorSummary.d.ts +4 -4
- package/dist/v2/patterns/FormErrorSummary.d.ts.map +1 -1
- package/dist/v2/patterns/FormErrorSummary.js.map +1 -1
- package/dist/v2/patterns/FormPageShell.d.ts +4 -4
- package/dist/v2/patterns/FormPageShell.d.ts.map +1 -1
- package/dist/v2/patterns/FormPageShell.js.map +1 -1
- package/dist/v2/patterns/FormSection.d.ts +19 -8
- package/dist/v2/patterns/FormSection.d.ts.map +1 -1
- package/dist/v2/patterns/FormSection.js +106 -71
- package/dist/v2/patterns/FormSection.js.map +1 -1
- package/dist/v2/patterns/FormikCheckbox.d.ts +77 -0
- package/dist/v2/patterns/FormikCheckbox.d.ts.map +1 -0
- package/dist/v2/patterns/FormikCheckbox.js +147 -0
- package/dist/v2/patterns/FormikCheckbox.js.map +1 -0
- package/dist/v2/patterns/FormikCheckboxGroup.d.ts +6 -6
- package/dist/v2/patterns/FormikCheckboxGroup.d.ts.map +1 -1
- package/dist/v2/patterns/FormikCheckboxGroup.js.map +1 -1
- package/dist/v2/patterns/FormikCombobox.d.ts +18 -12
- package/dist/v2/patterns/FormikCombobox.d.ts.map +1 -1
- package/dist/v2/patterns/FormikCombobox.js +5 -2
- package/dist/v2/patterns/FormikCombobox.js.map +1 -1
- package/dist/v2/patterns/FormikDatePicker.d.ts +48 -8
- package/dist/v2/patterns/FormikDatePicker.d.ts.map +1 -1
- package/dist/v2/patterns/FormikDatePicker.js +58 -65
- package/dist/v2/patterns/FormikDatePicker.js.map +1 -1
- package/dist/v2/patterns/FormikDateTimePicker.d.ts +111 -0
- package/dist/v2/patterns/FormikDateTimePicker.d.ts.map +1 -0
- package/dist/v2/patterns/FormikDateTimePicker.js +158 -0
- package/dist/v2/patterns/FormikDateTimePicker.js.map +1 -0
- package/dist/v2/patterns/FormikErrorFocus.d.ts +3 -3
- package/dist/v2/patterns/FormikErrorFocus.d.ts.map +1 -1
- package/dist/v2/patterns/FormikErrorFocus.js.map +1 -1
- package/dist/v2/patterns/FormikFile.d.ts +8 -8
- package/dist/v2/patterns/FormikFile.d.ts.map +1 -1
- package/dist/v2/patterns/FormikFile.js.map +1 -1
- package/dist/v2/patterns/FormikInput.d.ts +51 -6
- package/dist/v2/patterns/FormikInput.d.ts.map +1 -1
- package/dist/v2/patterns/FormikInput.js +53 -2
- package/dist/v2/patterns/FormikInput.js.map +1 -1
- package/dist/v2/patterns/FormikRadioGroup.d.ts +80 -0
- package/dist/v2/patterns/FormikRadioGroup.d.ts.map +1 -0
- package/dist/v2/patterns/FormikRadioGroup.js +148 -0
- package/dist/v2/patterns/FormikRadioGroup.js.map +1 -0
- package/dist/v2/patterns/FormikReferentielField.d.ts +8 -8
- package/dist/v2/patterns/FormikReferentielField.d.ts.map +1 -1
- package/dist/v2/patterns/FormikReferentielField.js.map +1 -1
- package/dist/v2/patterns/FormikSelect.d.ts +41 -12
- package/dist/v2/patterns/FormikSelect.d.ts.map +1 -1
- package/dist/v2/patterns/FormikSelect.js +32 -3
- package/dist/v2/patterns/FormikSelect.js.map +1 -1
- package/dist/v2/patterns/FormikTextarea.d.ts +14 -6
- package/dist/v2/patterns/FormikTextarea.d.ts.map +1 -1
- package/dist/v2/patterns/FormikTextarea.js +5 -2
- package/dist/v2/patterns/FormikTextarea.js.map +1 -1
- package/dist/v2/patterns/KeyboardShortcutsHelp.d.ts +21 -8
- package/dist/v2/patterns/KeyboardShortcutsHelp.d.ts.map +1 -1
- package/dist/v2/patterns/KeyboardShortcutsHelp.js +27 -14
- package/dist/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
- package/dist/v2/patterns/NetworkErrorBanner.d.ts +4 -4
- package/dist/v2/patterns/NetworkErrorBanner.d.ts.map +1 -1
- package/dist/v2/patterns/NetworkErrorBanner.js.map +1 -1
- package/dist/v2/patterns/PageContent.d.ts +3 -3
- package/dist/v2/patterns/PageContent.d.ts.map +1 -1
- package/dist/v2/patterns/PageContent.js.map +1 -1
- package/dist/v2/patterns/ReferentielField.d.ts +49 -49
- package/dist/v2/patterns/ReferentielField.d.ts.map +1 -1
- package/dist/v2/patterns/ReferentielField.js +2 -1
- package/dist/v2/patterns/ReferentielField.js.map +1 -1
- package/dist/v2/patterns/RowFavoriteToggle.d.ts +92 -0
- package/dist/v2/patterns/RowFavoriteToggle.d.ts.map +1 -0
- package/dist/v2/patterns/RowFavoriteToggle.js +127 -0
- package/dist/v2/patterns/RowFavoriteToggle.js.map +1 -0
- package/dist/v2/patterns/SaveFilterDialog.d.ts +10 -10
- package/dist/v2/patterns/SaveFilterDialog.d.ts.map +1 -1
- package/dist/v2/patterns/SaveFilterDialog.js +9 -8
- package/dist/v2/patterns/SaveFilterDialog.js.map +1 -1
- package/dist/v2/patterns/SavedFiltersMenu.d.ts +7 -7
- package/dist/v2/patterns/SavedFiltersMenu.d.ts.map +1 -1
- package/dist/v2/patterns/SavedFiltersMenu.js +9 -8
- package/dist/v2/patterns/SavedFiltersMenu.js.map +1 -1
- package/dist/v2/patterns/SkeletonPageShell.d.ts +7 -7
- package/dist/v2/patterns/SkeletonPageShell.d.ts.map +1 -1
- package/dist/v2/patterns/SkeletonPageShell.js.map +1 -1
- package/dist/v2/patterns/SortableHeader.d.ts +1 -1
- package/dist/v2/patterns/SortableHeader.d.ts.map +1 -1
- package/dist/v2/patterns/SortableHeader.js.map +1 -1
- package/dist/v2/patterns/Tour.d.ts +12 -12
- package/dist/v2/patterns/Tour.d.ts.map +1 -1
- package/dist/v2/patterns/Tour.js +9 -8
- package/dist/v2/patterns/Tour.js.map +1 -1
- package/dist/v2/patterns/_dataGridShared.d.ts +25 -6
- package/dist/v2/patterns/_dataGridShared.d.ts.map +1 -1
- package/dist/v2/patterns/_dataGridShared.js +37 -3
- package/dist/v2/patterns/_dataGridShared.js.map +1 -1
- package/dist/v2/patterns/_pickerSerialisation.d.ts +44 -0
- package/dist/v2/patterns/_pickerSerialisation.d.ts.map +1 -0
- package/dist/v2/patterns/_pickerSerialisation.js +81 -0
- package/dist/v2/patterns/_pickerSerialisation.js.map +1 -0
- package/dist/v2/patterns/_useColumnReorder.d.ts +1 -1
- package/dist/v2/patterns/_useColumnReorder.d.ts.map +1 -1
- package/dist/v2/patterns/_useColumnReorder.js.map +1 -1
- package/dist/v2/patterns/_useColumnResize.d.ts +1 -1
- package/dist/v2/patterns/_useColumnResize.d.ts.map +1 -1
- package/dist/v2/patterns/_useColumnResize.js.map +1 -1
- package/dist/v2/patterns/index.d.ts +114 -0
- package/dist/v2/patterns/index.d.ts.map +1 -1
- package/dist/v2/patterns/index.js +34 -0
- package/dist/v2/patterns/index.js.map +1 -1
- package/dist/v2/personalization/PersonalizationProvider.d.ts +9 -9
- package/dist/v2/personalization/PersonalizationProvider.d.ts.map +1 -1
- package/dist/v2/personalization/PersonalizationProvider.js.map +1 -1
- package/dist/v2/personalization/adapters/createLocalStorageAdapter.d.ts +1 -1
- package/dist/v2/personalization/adapters/createLocalStorageAdapter.d.ts.map +1 -1
- package/dist/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
- package/dist/v2/personalization/adapters/createMemoryAdapter.d.ts +1 -1
- package/dist/v2/personalization/adapters/createMemoryAdapter.d.ts.map +1 -1
- package/dist/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
- package/dist/v2/personalization/capabilities/favoritesView.d.ts +3 -3
- package/dist/v2/personalization/capabilities/favoritesView.d.ts.map +1 -1
- package/dist/v2/personalization/capabilities/favoritesView.js.map +1 -1
- package/dist/v2/personalization/capabilities/gridPreferences.d.ts +100 -0
- package/dist/v2/personalization/capabilities/gridPreferences.d.ts.map +1 -0
- package/dist/v2/personalization/capabilities/gridPreferences.js +215 -0
- package/dist/v2/personalization/capabilities/gridPreferences.js.map +1 -0
- package/dist/v2/personalization/capabilities/index.d.ts +6 -0
- package/dist/v2/personalization/capabilities/index.d.ts.map +1 -1
- package/dist/v2/personalization/capabilities/index.js +13 -0
- package/dist/v2/personalization/capabilities/index.js.map +1 -1
- package/dist/v2/personalization/capabilities/savedFilters.d.ts +3 -3
- package/dist/v2/personalization/capabilities/savedFilters.d.ts.map +1 -1
- package/dist/v2/personalization/capabilities/savedFilters.js.map +1 -1
- package/dist/v2/personalization/createPersonalizationStore.d.ts +8 -8
- package/dist/v2/personalization/createPersonalizationStore.d.ts.map +1 -1
- package/dist/v2/personalization/createPersonalizationStore.js.map +1 -1
- package/dist/v2/personalization/index.d.ts +18 -0
- package/dist/v2/personalization/index.d.ts.map +1 -1
- package/dist/v2/personalization/index.js +13 -0
- package/dist/v2/personalization/index.js.map +1 -1
- package/dist/v2/personalization/schema.d.ts +2 -2
- package/dist/v2/personalization/schema.d.ts.map +1 -1
- package/dist/v2/personalization/schema.js.map +1 -1
- package/dist/v2/personalization/types.d.ts +19 -19
- package/dist/v2/personalization/types.d.ts.map +1 -1
- package/dist/v2/personalization/types.js.map +1 -1
- package/dist/v2/referentiel/ReferentielProvider.d.ts +4 -4
- package/dist/v2/referentiel/ReferentielProvider.d.ts.map +1 -1
- package/dist/v2/referentiel/ReferentielProvider.js.map +1 -1
- package/dist/v2/referentiel/useReferentielOptions.d.ts +4 -4
- package/dist/v2/referentiel/useReferentielOptions.d.ts.map +1 -1
- package/dist/v2/referentiel/useReferentielOptions.js.map +1 -1
- package/dist/v2/referentiel/useReferentielSearch.d.ts +3 -3
- package/dist/v2/referentiel/useReferentielSearch.d.ts.map +1 -1
- package/dist/v2/referentiel/useReferentielSearch.js.map +1 -1
- package/dist/v2/theme/createPortnetTheme.d.ts +32 -7
- package/dist/v2/theme/createPortnetTheme.d.ts.map +1 -1
- package/dist/v2/theme/createPortnetTheme.js +25 -1
- package/dist/v2/theme/createPortnetTheme.js.map +1 -1
- package/dist/v2/types/datagrid.d.ts +59 -59
- package/dist/v2/types/datagrid.d.ts.map +1 -1
- package/dist/v2/types/datagrid.js.map +1 -1
- package/dist/v2/utils/apiError.d.ts +65 -4
- package/dist/v2/utils/apiError.d.ts.map +1 -1
- package/dist/v2/utils/apiError.js +69 -6
- package/dist/v2/utils/apiError.js.map +1 -1
- package/dist/v2/utils/index.d.ts +1 -0
- package/dist/v2/utils/index.d.ts.map +1 -1
- package/dist/v2/utils/index.js +7 -0
- package/dist/v2/utils/index.js.map +1 -1
- package/dist/v2/utils/mergeLabels.d.ts +59 -0
- package/dist/v2/utils/mergeLabels.d.ts.map +1 -0
- package/dist/v2/utils/mergeLabels.js +93 -0
- package/dist/v2/utils/mergeLabels.js.map +1 -0
- package/package.json +23 -15
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
require("@testing-library/jest-dom");
|
|
4
|
+
var _react = require("@testing-library/react");
|
|
5
|
+
var _FileCard = _interopRequireDefault(require("../components/FileCard"));
|
|
6
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
7
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
8
|
+
/**
|
|
9
|
+
* FileCard — contract tests.
|
|
10
|
+
*
|
|
11
|
+
* WHY THIS FILE EXISTS
|
|
12
|
+
* --------------------
|
|
13
|
+
* §10.3 R-G.6 MUST — "Snapshot Storybook + tests Jest/Testing-Library". The
|
|
14
|
+
* component was extracted from THREE hand-written copies found in addpe-fe
|
|
15
|
+
* (Attachment, AutorisationPreviewDrawer, AutorisationDetail), which had drifted
|
|
16
|
+
* to three different paddings for one concept. Consolidating them means a single
|
|
17
|
+
* change now moves every attachment row in the fleet, so the contracts below are
|
|
18
|
+
* the ones that must not move silently.
|
|
19
|
+
*
|
|
20
|
+
* NOT COVERED — deliberately
|
|
21
|
+
* The width negotiation is the most fragile part of this component and it is
|
|
22
|
+
* NOT tested here: `text-overflow: ellipsis`, `minWidth: 0` on the identity
|
|
23
|
+
* block and `flexShrink: 0` on the action cluster are LAYOUT, and jsdom computes
|
|
24
|
+
* no layout. A test asserting them would pass while the card is broken on a
|
|
25
|
+
* phone — worse than no coverage, because it would look like coverage. That
|
|
26
|
+
* contract lives in FileCard.stories.tsx ("Long filename"), which is where a
|
|
27
|
+
* browser can actually check it. Same reasoning as MobileRowCard.test.tsx
|
|
28
|
+
* records for R-G.3.
|
|
29
|
+
*/describe("FileCard — identity", function () {
|
|
30
|
+
test("renders the filename and mirrors it into title for the truncated case", function () {
|
|
31
|
+
var name = "autorisation-de-depot-prealable-a-l-exportation-2025-IM-0042-revision-finale.pdf";
|
|
32
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_FileCard["default"], {
|
|
33
|
+
name: name
|
|
34
|
+
}));
|
|
35
|
+
|
|
36
|
+
/* The title attribute is the ONLY reason `name` is typed `string` rather
|
|
37
|
+
* than ReactNode: once the CSS ellipsis hides the tail, the attribute is
|
|
38
|
+
* what keeps the full filename reachable. Losing it is invisible in every
|
|
39
|
+
* screenshot and only hurts the user with the long filename. */
|
|
40
|
+
expect(_react.screen.getByText(name)).toHaveAttribute("title", name);
|
|
41
|
+
});
|
|
42
|
+
test("renders the meta line when supplied", function () {
|
|
43
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_FileCard["default"], {
|
|
44
|
+
name: "facture.pdf",
|
|
45
|
+
meta: "1,24 Mo"
|
|
46
|
+
}));
|
|
47
|
+
expect(_react.screen.getByText("1,24 Mo")).toBeInTheDocument();
|
|
48
|
+
});
|
|
49
|
+
test("omits the meta line entirely when absent or empty", function () {
|
|
50
|
+
/* Not rendered rather than rendered blank: an empty second line reads as
|
|
51
|
+
* missing data, and it changes the row height, which breaks the alignment
|
|
52
|
+
* of a list of files. Both `undefined` and `""` are covered because a host
|
|
53
|
+
* formatting a byte count from an optional field produces either.
|
|
54
|
+
*
|
|
55
|
+
* Queried by testid, not by walking parentElement: "absent, not empty"
|
|
56
|
+
* cannot be expressed as a text query, and the repo's eslint config forbids
|
|
57
|
+
* direct node access — correctly, since a structural child count would also
|
|
58
|
+
* break the moment the component gains an unrelated third line. */
|
|
59
|
+
var _render = (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_FileCard["default"], {
|
|
60
|
+
name: "a.pdf"
|
|
61
|
+
})),
|
|
62
|
+
rerender = _render.rerender;
|
|
63
|
+
expect(_react.screen.getByText("a.pdf")).toBeInTheDocument();
|
|
64
|
+
expect(_react.screen.queryByTestId("filecard-meta")).not.toBeInTheDocument();
|
|
65
|
+
rerender(/*#__PURE__*/(0, _jsxRuntime.jsx)(_FileCard["default"], {
|
|
66
|
+
name: "a.pdf",
|
|
67
|
+
meta: ""
|
|
68
|
+
}));
|
|
69
|
+
expect(_react.screen.queryByTestId("filecard-meta")).not.toBeInTheDocument();
|
|
70
|
+
rerender(/*#__PURE__*/(0, _jsxRuntime.jsx)(_FileCard["default"], {
|
|
71
|
+
name: "a.pdf",
|
|
72
|
+
meta: "248 Ko"
|
|
73
|
+
}));
|
|
74
|
+
expect(_react.screen.getByTestId("filecard-meta")).toHaveTextContent("248 Ko");
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
describe("FileCard — actions slot", function () {
|
|
78
|
+
test("renders host-supplied actions", function () {
|
|
79
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_FileCard["default"], {
|
|
80
|
+
name: "a.pdf",
|
|
81
|
+
actions: /*#__PURE__*/(0, _jsxRuntime.jsx)("button", {
|
|
82
|
+
type: "button",
|
|
83
|
+
children: "T\xE9l\xE9charger"
|
|
84
|
+
})
|
|
85
|
+
}));
|
|
86
|
+
expect(_react.screen.getByRole("button", {
|
|
87
|
+
name: "Télécharger"
|
|
88
|
+
})).toBeInTheDocument();
|
|
89
|
+
});
|
|
90
|
+
test("renders no action cluster when actions is absent", function () {
|
|
91
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_FileCard["default"], {
|
|
92
|
+
name: "a.pdf"
|
|
93
|
+
}));
|
|
94
|
+
expect(_react.screen.queryByRole("button")).not.toBeInTheDocument();
|
|
95
|
+
});
|
|
96
|
+
test("does not invent any action of its own", function () {
|
|
97
|
+
/* Regression guard on the component's SCOPE, not its rendering. FileCard is
|
|
98
|
+
* presentational: a download link, a delete confirmation and a blob URL all
|
|
99
|
+
* belong to the host. If a future change adds a built-in button, this fails
|
|
100
|
+
* — which is the intent. */
|
|
101
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_FileCard["default"], {
|
|
102
|
+
name: "a.pdf",
|
|
103
|
+
meta: "1 Ko"
|
|
104
|
+
}));
|
|
105
|
+
expect(_react.screen.queryByRole("button")).not.toBeInTheDocument();
|
|
106
|
+
expect(_react.screen.queryByRole("link")).not.toBeInTheDocument();
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
describe("FileCard — accessibility", function () {
|
|
110
|
+
test("the leading icon is hidden from assistive tech", function () {
|
|
111
|
+
/* R-Ar.2 — the filename IS the accessible name; a decorative glyph carrying
|
|
112
|
+
* one would make a screen reader announce the row twice. The wrapper has no
|
|
113
|
+
* role and no name by design, so there is no semantic query for it: the
|
|
114
|
+
* component exposes a stable testid for exactly this assertion. */
|
|
115
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_FileCard["default"], {
|
|
116
|
+
name: "a.pdf"
|
|
117
|
+
}));
|
|
118
|
+
expect(_react.screen.getByTestId("filecard-icon")).toHaveAttribute("aria-hidden", "true");
|
|
119
|
+
});
|
|
120
|
+
test("a custom icon replaces the default and stays hidden", function () {
|
|
121
|
+
/* The second assertion is the one that matters: a host passing its own glyph
|
|
122
|
+
* must not be able to leak it into the accessibility tree. */
|
|
123
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_FileCard["default"], {
|
|
124
|
+
name: "a.pdf",
|
|
125
|
+
icon: /*#__PURE__*/(0, _jsxRuntime.jsx)("svg", {
|
|
126
|
+
"data-testid": "custom"
|
|
127
|
+
})
|
|
128
|
+
}));
|
|
129
|
+
expect(_react.screen.getByTestId("custom")).toBeInTheDocument();
|
|
130
|
+
expect(_react.screen.getByTestId("filecard-icon")).toHaveAttribute("aria-hidden", "true");
|
|
131
|
+
});
|
|
132
|
+
test("carries no role of its own", function () {
|
|
133
|
+
/* The card is not interactive — only its actions are. Giving it role=button
|
|
134
|
+
* or wrapping it in a group without an accessible name would add noise to
|
|
135
|
+
* the SR tree. Asserted so a future "make the whole row clickable" change
|
|
136
|
+
* has to be a deliberate decision rather than a drive-by. */
|
|
137
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_FileCard["default"], {
|
|
138
|
+
name: "a.pdf"
|
|
139
|
+
}));
|
|
140
|
+
expect(_react.screen.queryByRole("button")).not.toBeInTheDocument();
|
|
141
|
+
expect(_react.screen.queryByRole("group")).not.toBeInTheDocument();
|
|
142
|
+
});
|
|
143
|
+
});
|
|
144
|
+
//# sourceMappingURL=FileCard.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileCard.test.js","names":["require","_react","_FileCard","_interopRequireDefault","_jsxRuntime","obj","__esModule","describe","test","name","render","jsx","expect","screen","getByText","toHaveAttribute","meta","toBeInTheDocument","_render","rerender","queryByTestId","not","getByTestId","toHaveTextContent","actions","type","children","getByRole","queryByRole","icon"],"sources":["../../../src/lib/v2/__tests__/FileCard.test.tsx"],"sourcesContent":["import \"@testing-library/jest-dom\";\r\nimport { render, screen } from \"@testing-library/react\";\r\nimport FileCard from \"../components/FileCard\";\r\n\r\n/**\r\n * FileCard — contract tests.\r\n *\r\n * WHY THIS FILE EXISTS\r\n * --------------------\r\n * §10.3 R-G.6 MUST — \"Snapshot Storybook + tests Jest/Testing-Library\". The\r\n * component was extracted from THREE hand-written copies found in addpe-fe\r\n * (Attachment, AutorisationPreviewDrawer, AutorisationDetail), which had drifted\r\n * to three different paddings for one concept. Consolidating them means a single\r\n * change now moves every attachment row in the fleet, so the contracts below are\r\n * the ones that must not move silently.\r\n *\r\n * NOT COVERED — deliberately\r\n * The width negotiation is the most fragile part of this component and it is\r\n * NOT tested here: `text-overflow: ellipsis`, `minWidth: 0` on the identity\r\n * block and `flexShrink: 0` on the action cluster are LAYOUT, and jsdom computes\r\n * no layout. A test asserting them would pass while the card is broken on a\r\n * phone — worse than no coverage, because it would look like coverage. That\r\n * contract lives in FileCard.stories.tsx (\"Long filename\"), which is where a\r\n * browser can actually check it. Same reasoning as MobileRowCard.test.tsx\r\n * records for R-G.3.\r\n */\r\ndescribe(\"FileCard — identity\", () => {\r\n test(\"renders the filename and mirrors it into title for the truncated case\", () => {\r\n const name =\r\n \"autorisation-de-depot-prealable-a-l-exportation-2025-IM-0042-revision-finale.pdf\";\r\n render(<FileCard name={name} />);\r\n\r\n /* The title attribute is the ONLY reason `name` is typed `string` rather\r\n * than ReactNode: once the CSS ellipsis hides the tail, the attribute is\r\n * what keeps the full filename reachable. Losing it is invisible in every\r\n * screenshot and only hurts the user with the long filename. */\r\n expect(screen.getByText(name)).toHaveAttribute(\"title\", name);\r\n });\r\n\r\n test(\"renders the meta line when supplied\", () => {\r\n render(<FileCard name=\"facture.pdf\" meta=\"1,24 Mo\" />);\r\n expect(screen.getByText(\"1,24 Mo\")).toBeInTheDocument();\r\n });\r\n\r\n test(\"omits the meta line entirely when absent or empty\", () => {\r\n /* Not rendered rather than rendered blank: an empty second line reads as\r\n * missing data, and it changes the row height, which breaks the alignment\r\n * of a list of files. Both `undefined` and `\"\"` are covered because a host\r\n * formatting a byte count from an optional field produces either.\r\n *\r\n * Queried by testid, not by walking parentElement: \"absent, not empty\"\r\n * cannot be expressed as a text query, and the repo's eslint config forbids\r\n * direct node access — correctly, since a structural child count would also\r\n * break the moment the component gains an unrelated third line. */\r\n const { rerender } = render(<FileCard name=\"a.pdf\" />);\r\n expect(screen.getByText(\"a.pdf\")).toBeInTheDocument();\r\n expect(screen.queryByTestId(\"filecard-meta\")).not.toBeInTheDocument();\r\n\r\n rerender(<FileCard name=\"a.pdf\" meta=\"\" />);\r\n expect(screen.queryByTestId(\"filecard-meta\")).not.toBeInTheDocument();\r\n\r\n rerender(<FileCard name=\"a.pdf\" meta=\"248 Ko\" />);\r\n expect(screen.getByTestId(\"filecard-meta\")).toHaveTextContent(\"248 Ko\");\r\n });\r\n});\r\n\r\ndescribe(\"FileCard — actions slot\", () => {\r\n test(\"renders host-supplied actions\", () => {\r\n render(\r\n <FileCard\r\n name=\"a.pdf\"\r\n actions={<button type=\"button\">Télécharger</button>}\r\n />\r\n );\r\n expect(screen.getByRole(\"button\", { name: \"Télécharger\" })).toBeInTheDocument();\r\n });\r\n\r\n test(\"renders no action cluster when actions is absent\", () => {\r\n render(<FileCard name=\"a.pdf\" />);\r\n expect(screen.queryByRole(\"button\")).not.toBeInTheDocument();\r\n });\r\n\r\n test(\"does not invent any action of its own\", () => {\r\n /* Regression guard on the component's SCOPE, not its rendering. FileCard is\r\n * presentational: a download link, a delete confirmation and a blob URL all\r\n * belong to the host. If a future change adds a built-in button, this fails\r\n * — which is the intent. */\r\n render(<FileCard name=\"a.pdf\" meta=\"1 Ko\" />);\r\n expect(screen.queryByRole(\"button\")).not.toBeInTheDocument();\r\n expect(screen.queryByRole(\"link\")).not.toBeInTheDocument();\r\n });\r\n});\r\n\r\ndescribe(\"FileCard — accessibility\", () => {\r\n test(\"the leading icon is hidden from assistive tech\", () => {\r\n /* R-Ar.2 — the filename IS the accessible name; a decorative glyph carrying\r\n * one would make a screen reader announce the row twice. The wrapper has no\r\n * role and no name by design, so there is no semantic query for it: the\r\n * component exposes a stable testid for exactly this assertion. */\r\n render(<FileCard name=\"a.pdf\" />);\r\n expect(screen.getByTestId(\"filecard-icon\")).toHaveAttribute(\"aria-hidden\", \"true\");\r\n });\r\n\r\n test(\"a custom icon replaces the default and stays hidden\", () => {\r\n /* The second assertion is the one that matters: a host passing its own glyph\r\n * must not be able to leak it into the accessibility tree. */\r\n render(<FileCard name=\"a.pdf\" icon={<svg data-testid=\"custom\" />} />);\r\n expect(screen.getByTestId(\"custom\")).toBeInTheDocument();\r\n expect(screen.getByTestId(\"filecard-icon\")).toHaveAttribute(\"aria-hidden\", \"true\");\r\n });\r\n\r\n test(\"carries no role of its own\", () => {\r\n /* The card is not interactive — only its actions are. Giving it role=button\r\n * or wrapping it in a group without an accessible name would add noise to\r\n * the SR tree. Asserted so a future \"make the whole row clickable\" change\r\n * has to be a deliberate decision rather than a drive-by. */\r\n render(<FileCard name=\"a.pdf\" />);\r\n expect(screen.queryByRole(\"button\")).not.toBeInTheDocument();\r\n expect(screen.queryByRole(\"group\")).not.toBeInTheDocument();\r\n });\r\n});\r\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
4
|
+
require("@testing-library/jest-dom");
|
|
5
|
+
var React = _interopRequireWildcard(require("react"));
|
|
6
|
+
var _react2 = require("@testing-library/react");
|
|
7
|
+
var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
|
|
8
|
+
var _formik = require("formik");
|
|
9
|
+
var _FormikCheckbox = _interopRequireDefault(require("../patterns/FormikCheckbox"));
|
|
10
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
|
+
var _excluded = ["initialValue", "required", "onValues"];
|
|
12
|
+
/**
|
|
13
|
+
* FormikCheckbox — contract tests (gap G-A).
|
|
14
|
+
*
|
|
15
|
+
* WHY THIS FILE EXISTS
|
|
16
|
+
* --------------------
|
|
17
|
+
* §10.3 R-G.6 MUST. But the contracts worth pinning here are the ones a
|
|
18
|
+
* screenshot cannot see, and each of them is a real defect this bridge was
|
|
19
|
+
* created to stop repeating:
|
|
20
|
+
*
|
|
21
|
+
* 1. THE VALUE SHAPE. This component exists because `FormikCheckboxGroup`
|
|
22
|
+
* writes an ARRAY. If a refactor ever routed this bridge through the group,
|
|
23
|
+
* hosts would start sending `["on"]` where their payload declares a
|
|
24
|
+
* boolean — visually identical, and wrong all the way to the database.
|
|
25
|
+
*
|
|
26
|
+
* 2. TOUCHED-ON-CHANGE. A checkbox has no meaningful blur-before-change, so
|
|
27
|
+
* if the field is only marked touched on blur, a required-checkbox error
|
|
28
|
+
* stays invisible however many times the user clicks. That is exactly the
|
|
29
|
+
* defect reported from refonte-frontend, where a hand-rolled bridge
|
|
30
|
+
* rendered no message at all.
|
|
31
|
+
*
|
|
32
|
+
* 3. `aria-required` LANDS ON THE INPUT. `Field` injects it onto its child,
|
|
33
|
+
* which here is the CheckboxGroup — a `role="group"` div that does not
|
|
34
|
+
* forward it. Assert the input, not the group.
|
|
35
|
+
*
|
|
36
|
+
* 4. NO `error` ATTRIBUTE ON THE DOM. `Field` clones its child with
|
|
37
|
+
* `error`/`disabled` for the v2 inputs that read them directly. A bare
|
|
38
|
+
* `Checkbox` would spread `error` down to the native input; the
|
|
39
|
+
* CheckboxGroup wrapper is what absorbs it. Drop the wrapper and React
|
|
40
|
+
* starts warning while every pixel stays identical.
|
|
41
|
+
*
|
|
42
|
+
* NOT COVERED — deliberately: the asterisk colour and the grey error panel are
|
|
43
|
+
* CSS variables, which jsdom does not resolve. Those belong to the story.
|
|
44
|
+
*/
|
|
45
|
+
/** Minimal host: a Formik form exposing its values for assertion. */
|
|
46
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
47
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
48
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
49
|
+
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; }
|
|
50
|
+
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); } }
|
|
51
|
+
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); }); }; }
|
|
52
|
+
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; }
|
|
53
|
+
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; }
|
|
54
|
+
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; }
|
|
55
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
56
|
+
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); }
|
|
57
|
+
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; }
|
|
58
|
+
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; }
|
|
59
|
+
function Hote(_ref) {
|
|
60
|
+
var initialValue = _ref.initialValue,
|
|
61
|
+
required = _ref.required,
|
|
62
|
+
onValues = _ref.onValues,
|
|
63
|
+
props = _objectWithoutProperties(_ref, _excluded);
|
|
64
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_formik.Formik, {
|
|
65
|
+
initialValues: {
|
|
66
|
+
flag: initialValue
|
|
67
|
+
},
|
|
68
|
+
validate: function validate(values) {
|
|
69
|
+
return required && values.flag !== true ? {
|
|
70
|
+
flag: "Cochez cette case pour continuer."
|
|
71
|
+
} : {};
|
|
72
|
+
},
|
|
73
|
+
onSubmit: function onSubmit() {
|
|
74
|
+
return undefined;
|
|
75
|
+
},
|
|
76
|
+
children: function children(_ref2) {
|
|
77
|
+
var values = _ref2.values;
|
|
78
|
+
onValues === null || onValues === void 0 ? void 0 : onValues(values);
|
|
79
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_formik.Form, {
|
|
80
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_FormikCheckbox["default"], _objectSpread(_objectSpread({
|
|
81
|
+
name: "flag",
|
|
82
|
+
label: "Premi\xE8re d\xE9claration"
|
|
83
|
+
}, required !== undefined ? {
|
|
84
|
+
required: required
|
|
85
|
+
} : {}), props))
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
describe("FormikCheckbox — the value stays a BOOLEAN", function () {
|
|
91
|
+
test("toggling writes `true`, untoggling writes `false` — never an array", /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
92
|
+
var vues;
|
|
93
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
94
|
+
while (1) {
|
|
95
|
+
switch (_context.prev = _context.next) {
|
|
96
|
+
case 0:
|
|
97
|
+
vues = [];
|
|
98
|
+
(0, _react2.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(Hote, {
|
|
99
|
+
initialValue: false,
|
|
100
|
+
onValues: function onValues(v) {
|
|
101
|
+
return vues.push(v.flag);
|
|
102
|
+
}
|
|
103
|
+
}));
|
|
104
|
+
_context.next = 4;
|
|
105
|
+
return _userEvent["default"].click(_react2.screen.getByRole("checkbox"));
|
|
106
|
+
case 4:
|
|
107
|
+
expect(vues.at(-1)).toBe(true);
|
|
108
|
+
_context.next = 7;
|
|
109
|
+
return _userEvent["default"].click(_react2.screen.getByRole("checkbox"));
|
|
110
|
+
case 7:
|
|
111
|
+
expect(vues.at(-1)).toBe(false);
|
|
112
|
+
|
|
113
|
+
/* The point of the assertion: not one intermediate value was an array. */
|
|
114
|
+
expect(vues.some(function (v) {
|
|
115
|
+
return Array.isArray(v);
|
|
116
|
+
})).toBe(false);
|
|
117
|
+
case 9:
|
|
118
|
+
case "end":
|
|
119
|
+
return _context.stop();
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}, _callee);
|
|
123
|
+
})));
|
|
124
|
+
test("a `null` seed renders a CONTROLLED, unchecked input", function () {
|
|
125
|
+
/* Hosts seed these flags with `null` (« not answered yet »). Passing that
|
|
126
|
+
* straight to `checked` makes React treat the input as uncontrolled for one
|
|
127
|
+
* render, then warn and lose the first click. */
|
|
128
|
+
var avertissements = [];
|
|
129
|
+
var spy = jest.spyOn(console, "error").mockImplementation(function () {
|
|
130
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
131
|
+
args[_key] = arguments[_key];
|
|
132
|
+
}
|
|
133
|
+
avertissements.push(args);
|
|
134
|
+
});
|
|
135
|
+
(0, _react2.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(Hote, {
|
|
136
|
+
initialValue: null
|
|
137
|
+
}));
|
|
138
|
+
expect(_react2.screen.getByRole("checkbox")).not.toBeChecked();
|
|
139
|
+
expect(avertissements.some(function (a) {
|
|
140
|
+
return String(a[0]).includes("uncontrolled");
|
|
141
|
+
})).toBe(false);
|
|
142
|
+
spy.mockRestore();
|
|
143
|
+
});
|
|
144
|
+
});
|
|
145
|
+
describe("FormikCheckbox — the error is reachable without a blur", function () {
|
|
146
|
+
test("clicking marks the field touched, so the message appears", /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
|
|
147
|
+
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
148
|
+
while (1) {
|
|
149
|
+
switch (_context2.prev = _context2.next) {
|
|
150
|
+
case 0:
|
|
151
|
+
(0, _react2.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(Hote, {
|
|
152
|
+
initialValue: false,
|
|
153
|
+
required: true
|
|
154
|
+
}));
|
|
155
|
+
|
|
156
|
+
/* Untouched: no message, however invalid the value is. */
|
|
157
|
+
expect(_react2.screen.queryByRole("alert")).not.toBeInTheDocument();
|
|
158
|
+
|
|
159
|
+
/* Check then uncheck — the field is now touched AND invalid. */
|
|
160
|
+
_context2.next = 4;
|
|
161
|
+
return _userEvent["default"].click(_react2.screen.getByRole("checkbox"));
|
|
162
|
+
case 4:
|
|
163
|
+
_context2.next = 6;
|
|
164
|
+
return _userEvent["default"].click(_react2.screen.getByRole("checkbox"));
|
|
165
|
+
case 6:
|
|
166
|
+
expect(_react2.screen.getByRole("alert")).toHaveTextContent("Cochez cette case pour continuer.");
|
|
167
|
+
case 7:
|
|
168
|
+
case "end":
|
|
169
|
+
return _context2.stop();
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}, _callee2);
|
|
173
|
+
})));
|
|
174
|
+
test("the message becomes the group's accessible description", /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
|
|
175
|
+
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
176
|
+
while (1) {
|
|
177
|
+
switch (_context3.prev = _context3.next) {
|
|
178
|
+
case 0:
|
|
179
|
+
(0, _react2.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(Hote, {
|
|
180
|
+
initialValue: false,
|
|
181
|
+
required: true
|
|
182
|
+
}));
|
|
183
|
+
_context3.next = 3;
|
|
184
|
+
return _userEvent["default"].click(_react2.screen.getByRole("checkbox"));
|
|
185
|
+
case 3:
|
|
186
|
+
_context3.next = 5;
|
|
187
|
+
return _userEvent["default"].click(_react2.screen.getByRole("checkbox"));
|
|
188
|
+
case 5:
|
|
189
|
+
expect(_react2.screen.getByRole("group")).toHaveAccessibleDescription("Cochez cette case pour continuer.");
|
|
190
|
+
case 6:
|
|
191
|
+
case "end":
|
|
192
|
+
return _context3.stop();
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}, _callee3);
|
|
196
|
+
})));
|
|
197
|
+
test("the hint shows while valid and is suppressed by the error", /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
|
|
198
|
+
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
199
|
+
while (1) {
|
|
200
|
+
switch (_context4.prev = _context4.next) {
|
|
201
|
+
case 0:
|
|
202
|
+
(0, _react2.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(Hote, {
|
|
203
|
+
initialValue: false,
|
|
204
|
+
required: true,
|
|
205
|
+
hint: "Obligatoire pour soumettre la demande"
|
|
206
|
+
}));
|
|
207
|
+
expect(_react2.screen.getByText("Obligatoire pour soumettre la demande")).toBeInTheDocument();
|
|
208
|
+
_context4.next = 4;
|
|
209
|
+
return _userEvent["default"].click(_react2.screen.getByRole("checkbox"));
|
|
210
|
+
case 4:
|
|
211
|
+
_context4.next = 6;
|
|
212
|
+
return _userEvent["default"].click(_react2.screen.getByRole("checkbox"));
|
|
213
|
+
case 6:
|
|
214
|
+
expect(_react2.screen.queryByText("Obligatoire pour soumettre la demande")).not.toBeInTheDocument();
|
|
215
|
+
case 7:
|
|
216
|
+
case "end":
|
|
217
|
+
return _context4.stop();
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}, _callee4);
|
|
221
|
+
})));
|
|
222
|
+
});
|
|
223
|
+
describe("FormikCheckbox — ARIA and DOM hygiene", function () {
|
|
224
|
+
test("`required` puts aria-required on the INPUT, not on the group", function () {
|
|
225
|
+
/* Field's own injection lands on the CheckboxGroup, which is a role=group
|
|
226
|
+
* div and does not forward it — hence the explicit inputProps route. */
|
|
227
|
+
(0, _react2.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(Hote, {
|
|
228
|
+
initialValue: false,
|
|
229
|
+
required: true
|
|
230
|
+
}));
|
|
231
|
+
expect(_react2.screen.getByRole("checkbox")).toHaveAttribute("aria-required", "true");
|
|
232
|
+
});
|
|
233
|
+
test("the label names the checkbox", function () {
|
|
234
|
+
(0, _react2.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(Hote, {
|
|
235
|
+
initialValue: false
|
|
236
|
+
}));
|
|
237
|
+
expect(_react2.screen.getByRole("checkbox", {
|
|
238
|
+
name: /Première déclaration/
|
|
239
|
+
})).toBeInTheDocument();
|
|
240
|
+
});
|
|
241
|
+
test("no `error` attribute leaks onto the native input", /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {
|
|
242
|
+
return _regeneratorRuntime().wrap(function _callee5$(_context5) {
|
|
243
|
+
while (1) {
|
|
244
|
+
switch (_context5.prev = _context5.next) {
|
|
245
|
+
case 0:
|
|
246
|
+
/* The CheckboxGroup wrapper is what absorbs Field's `error` clone. Without
|
|
247
|
+
* it React warns and the DOM carries an invalid attribute — with no visual
|
|
248
|
+
* tell whatsoever. */
|
|
249
|
+
(0, _react2.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(Hote, {
|
|
250
|
+
initialValue: false,
|
|
251
|
+
required: true
|
|
252
|
+
}));
|
|
253
|
+
_context5.next = 3;
|
|
254
|
+
return _userEvent["default"].click(_react2.screen.getByRole("checkbox"));
|
|
255
|
+
case 3:
|
|
256
|
+
_context5.next = 5;
|
|
257
|
+
return _userEvent["default"].click(_react2.screen.getByRole("checkbox"));
|
|
258
|
+
case 5:
|
|
259
|
+
expect(_react2.screen.getByRole("checkbox")).not.toHaveAttribute("error");
|
|
260
|
+
case 6:
|
|
261
|
+
case "end":
|
|
262
|
+
return _context5.stop();
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
}, _callee5);
|
|
266
|
+
})));
|
|
267
|
+
});
|
|
268
|
+
//# sourceMappingURL=FormikCheckbox.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormikCheckbox.test.js","names":["require","React","_interopRequireWildcard","_react2","_userEvent","_interopRequireDefault","_formik","_FormikCheckbox","_jsxRuntime","_excluded","obj","__esModule","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_regeneratorRuntime","exports","Op","hasOwn","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","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","forEach","method","_invoke","AsyncIterator","PromiseImpl","invoke","resolve","reject","record","result","__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","_objectSpread","target","source","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","_toPrimitive","String","input","hint","prim","toPrimitive","res","Number","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","sourceSymbolKeys","indexOf","propertyIsEnumerable","sourceKeys","Hote","_ref","initialValue","required","onValues","props","jsx","Formik","initialValues","flag","validate","onSubmit","children","_ref2","Form","label","describe","test","_callee","vues","_callee$","_context","render","v","userEvent","click","screen","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":[]}
|