@portnet/ui 6.0.1 → 6.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +737 -0
- package/dist/esm/index.js +90 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/v2/__tests__/AppMain.test.js +130 -0
- package/dist/esm/v2/__tests__/AppMain.test.js.map +1 -0
- package/dist/esm/v2/__tests__/ChartFigure.test.js +180 -0
- package/dist/esm/v2/__tests__/ChartFigure.test.js.map +1 -0
- package/dist/esm/v2/__tests__/DataGridRowActionsPropagation.test.js +150 -0
- package/dist/esm/v2/__tests__/DataGridRowActionsPropagation.test.js.map +1 -0
- package/dist/esm/v2/__tests__/DrawerTactileTargets.test.js +93 -0
- package/dist/esm/v2/__tests__/DrawerTactileTargets.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FieldError.test.js +71 -39
- package/dist/esm/v2/__tests__/FieldError.test.js.map +1 -1
- package/dist/esm/v2/__tests__/FieldNaming.test.js +160 -0
- package/dist/esm/v2/__tests__/FieldNaming.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FieldWidth.test.js +146 -0
- package/dist/esm/v2/__tests__/FieldWidth.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FileCard.test.js +18 -18
- package/dist/esm/v2/__tests__/FileCard.test.js.map +1 -1
- package/dist/esm/v2/__tests__/FormikCheckbox.test.js +173 -0
- package/dist/esm/v2/__tests__/FormikCheckbox.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js +236 -0
- package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FormikDisplayWidth.test.js +101 -0
- package/dist/esm/v2/__tests__/FormikDisplayWidth.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FormikRadioGroup.test.js +299 -0
- package/dist/esm/v2/__tests__/FormikRadioGroup.test.js.map +1 -0
- package/dist/esm/v2/__tests__/MobileRowCard.test.js +44 -43
- package/dist/esm/v2/__tests__/MobileRowCard.test.js.map +1 -1
- package/dist/esm/v2/__tests__/PreviewDrawer.test.js +165 -0
- package/dist/esm/v2/__tests__/PreviewDrawer.test.js.map +1 -0
- package/dist/esm/v2/__tests__/ReferentielFieldContainer.test.js +156 -0
- package/dist/esm/v2/__tests__/ReferentielFieldContainer.test.js.map +1 -0
- package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js +37 -52
- package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js.map +1 -1
- package/dist/esm/v2/__tests__/apiError.test.js +50 -69
- package/dist/esm/v2/__tests__/apiError.test.js.map +1 -1
- package/dist/esm/v2/__tests__/banned-patterns.test.js +41 -122
- package/dist/esm/v2/__tests__/banned-patterns.test.js.map +1 -1
- package/dist/esm/v2/__tests__/chart-palette.test.js +204 -0
- package/dist/esm/v2/__tests__/chart-palette.test.js.map +1 -0
- package/dist/esm/v2/__tests__/contrast-palette.test.js +42 -74
- package/dist/esm/v2/__tests__/contrast-palette.test.js.map +1 -1
- package/dist/esm/v2/__tests__/cssVariables.test.js +44 -51
- package/dist/esm/v2/__tests__/cssVariables.test.js.map +1 -1
- package/dist/esm/v2/__tests__/fileValidation.test.js +134 -0
- package/dist/esm/v2/__tests__/fileValidation.test.js.map +1 -0
- package/dist/esm/v2/__tests__/filterCriteria.test.js +321 -0
- package/dist/esm/v2/__tests__/filterCriteria.test.js.map +1 -0
- package/dist/esm/v2/__tests__/fmtDate.test.js +68 -0
- package/dist/esm/v2/__tests__/fmtDate.test.js.map +1 -0
- package/dist/esm/v2/__tests__/gap-leakage-refonte.test.js +218 -0
- package/dist/esm/v2/__tests__/gap-leakage-refonte.test.js.map +1 -0
- package/dist/esm/v2/__tests__/labels-merge.test.js +17 -22
- package/dist/esm/v2/__tests__/labels-merge.test.js.map +1 -1
- package/dist/esm/v2/__tests__/locale-fallback.test.js +35 -40
- package/dist/esm/v2/__tests__/locale-fallback.test.js.map +1 -1
- package/dist/esm/v2/__tests__/reviveSavedCriteria.test.js +143 -0
- package/dist/esm/v2/__tests__/reviveSavedCriteria.test.js.map +1 -0
- package/dist/esm/v2/__tests__/rowActions.test.js +182 -0
- package/dist/esm/v2/__tests__/rowActions.test.js.map +1 -0
- package/dist/esm/v2/__tests__/useFocusOnRouteChange.test.js +155 -0
- package/dist/esm/v2/__tests__/useFocusOnRouteChange.test.js.map +1 -0
- package/dist/esm/v2/__tests__/useFocusTrap.test.js +266 -402
- package/dist/esm/v2/__tests__/useFocusTrap.test.js.map +1 -1
- package/dist/esm/v2/__tests__/usePrefersReducedMotion.test.js +120 -0
- package/dist/esm/v2/__tests__/usePrefersReducedMotion.test.js.map +1 -0
- package/dist/esm/v2/components/Accordion.js +48 -70
- package/dist/esm/v2/components/Accordion.js.map +1 -1
- package/dist/esm/v2/components/ActionStrip.js +31 -43
- package/dist/esm/v2/components/ActionStrip.js.map +1 -1
- package/dist/esm/v2/components/Banner.js +25 -22
- package/dist/esm/v2/components/Banner.js.map +1 -1
- package/dist/esm/v2/components/Busy.js +14 -19
- package/dist/esm/v2/components/Busy.js.map +1 -1
- package/dist/esm/v2/components/Button.js +34 -45
- package/dist/esm/v2/components/Button.js.map +1 -1
- package/dist/esm/v2/components/CategoryTag.js +44 -27
- package/dist/esm/v2/components/CategoryTag.js.map +1 -1
- package/dist/esm/v2/components/Checkbox.js +32 -38
- package/dist/esm/v2/components/Checkbox.js.map +1 -1
- package/dist/esm/v2/components/Chip.js +23 -36
- package/dist/esm/v2/components/Chip.js.map +1 -1
- package/dist/esm/v2/components/Combobox.js +112 -136
- package/dist/esm/v2/components/Combobox.js.map +1 -1
- package/dist/esm/v2/components/CommandPalette.js +113 -198
- package/dist/esm/v2/components/CommandPalette.js.map +1 -1
- package/dist/esm/v2/components/ConfirmDialog.js +36 -45
- package/dist/esm/v2/components/ConfirmDialog.js.map +1 -1
- package/dist/esm/v2/components/DatePicker.js +78 -81
- package/dist/esm/v2/components/DatePicker.js.map +1 -1
- package/dist/esm/v2/components/DateRangePicker.js +63 -74
- package/dist/esm/v2/components/DateRangePicker.js.map +1 -1
- package/dist/esm/v2/components/DateTimePicker.js +118 -90
- package/dist/esm/v2/components/DateTimePicker.js.map +1 -1
- package/dist/esm/v2/components/Drawer.js +71 -65
- package/dist/esm/v2/components/Drawer.js.map +1 -1
- package/dist/esm/v2/components/Dropzone.js +130 -177
- package/dist/esm/v2/components/Dropzone.js.map +1 -1
- package/dist/esm/v2/components/EmptyState.js +9 -9
- package/dist/esm/v2/components/EmptyState.js.map +1 -1
- package/dist/esm/v2/components/FavoriteToggle.js +24 -33
- package/dist/esm/v2/components/FavoriteToggle.js.map +1 -1
- package/dist/esm/v2/components/Field.js +210 -52
- package/dist/esm/v2/components/Field.js.map +1 -1
- package/dist/esm/v2/components/FieldError.js +9 -13
- package/dist/esm/v2/components/FieldError.js.map +1 -1
- package/dist/esm/v2/components/FieldHelp.js +28 -49
- package/dist/esm/v2/components/FieldHelp.js.map +1 -1
- package/dist/esm/v2/components/FileCard.js +14 -19
- package/dist/esm/v2/components/FileCard.js.map +1 -1
- package/dist/esm/v2/components/FilterTab.js +22 -31
- package/dist/esm/v2/components/FilterTab.js.map +1 -1
- package/dist/esm/v2/components/ForbiddenPage.js +28 -8
- package/dist/esm/v2/components/ForbiddenPage.js.map +1 -1
- package/dist/esm/v2/components/FormGrid.js +48 -54
- package/dist/esm/v2/components/FormGrid.js.map +1 -1
- package/dist/esm/v2/components/FormikDisplay.js +98 -24
- package/dist/esm/v2/components/FormikDisplay.js.map +1 -1
- package/dist/esm/v2/components/Input.js +75 -34
- package/dist/esm/v2/components/Input.js.map +1 -1
- package/dist/esm/v2/components/KPICard.js +42 -51
- package/dist/esm/v2/components/KPICard.js.map +1 -1
- package/dist/esm/v2/components/KPIStrip.js +9 -15
- package/dist/esm/v2/components/KPIStrip.js.map +1 -1
- package/dist/esm/v2/components/KV.js +16 -23
- package/dist/esm/v2/components/KV.js.map +1 -1
- package/dist/esm/v2/components/KVGrid.js +15 -23
- package/dist/esm/v2/components/KVGrid.js.map +1 -1
- package/dist/esm/v2/components/Layout.js +81 -117
- package/dist/esm/v2/components/Layout.js.map +1 -1
- package/dist/esm/v2/components/MobileRowCard.js +64 -75
- package/dist/esm/v2/components/MobileRowCard.js.map +1 -1
- package/dist/esm/v2/components/Modal.js +44 -53
- package/dist/esm/v2/components/Modal.js.map +1 -1
- package/dist/esm/v2/components/NetworkErrorPage.js +28 -11
- package/dist/esm/v2/components/NetworkErrorPage.js.map +1 -1
- package/dist/esm/v2/components/NotFoundPage.js +28 -9
- package/dist/esm/v2/components/NotFoundPage.js.map +1 -1
- package/dist/esm/v2/components/NumberInput.js +77 -107
- package/dist/esm/v2/components/NumberInput.js.map +1 -1
- package/dist/esm/v2/components/OverflowMenu.js +24 -42
- package/dist/esm/v2/components/OverflowMenu.js.map +1 -1
- package/dist/esm/v2/components/PdfViewer.js +24 -33
- package/dist/esm/v2/components/PdfViewer.js.map +1 -1
- package/dist/esm/v2/components/ProgressBar.js +28 -36
- package/dist/esm/v2/components/ProgressBar.js.map +1 -1
- package/dist/esm/v2/components/Radio.js +49 -57
- package/dist/esm/v2/components/Radio.js.map +1 -1
- package/dist/esm/v2/components/SectionErrorBoundary.js +84 -130
- package/dist/esm/v2/components/SectionErrorBoundary.js.map +1 -1
- package/dist/esm/v2/components/SectionHeader.js +24 -31
- package/dist/esm/v2/components/SectionHeader.js.map +1 -1
- package/dist/esm/v2/components/Segmented.js +59 -84
- package/dist/esm/v2/components/Segmented.js.map +1 -1
- package/dist/esm/v2/components/Select.js +100 -138
- package/dist/esm/v2/components/Select.js.map +1 -1
- package/dist/esm/v2/components/ServerErrorPage.js +27 -10
- package/dist/esm/v2/components/ServerErrorPage.js.map +1 -1
- package/dist/esm/v2/components/Skeleton.js +81 -96
- package/dist/esm/v2/components/Skeleton.js.map +1 -1
- package/dist/esm/v2/components/SkipLink.js +6 -7
- package/dist/esm/v2/components/SkipLink.js.map +1 -1
- package/dist/esm/v2/components/Spinner.js +13 -22
- package/dist/esm/v2/components/Spinner.js.map +1 -1
- package/dist/esm/v2/components/Status.js +14 -25
- package/dist/esm/v2/components/Status.js.map +1 -1
- package/dist/esm/v2/components/Stepper.js +68 -71
- package/dist/esm/v2/components/Stepper.js.map +1 -1
- package/dist/esm/v2/components/Surface.js +25 -44
- package/dist/esm/v2/components/Surface.js.map +1 -1
- package/dist/esm/v2/components/Switch.js +21 -29
- package/dist/esm/v2/components/Switch.js.map +1 -1
- package/dist/esm/v2/components/TabPanel.js +84 -0
- package/dist/esm/v2/components/TabPanel.js.map +1 -0
- package/dist/esm/v2/components/Tabs.js +43 -19
- package/dist/esm/v2/components/Tabs.js.map +1 -1
- package/dist/esm/v2/components/TelInput.js +75 -108
- package/dist/esm/v2/components/TelInput.js.map +1 -1
- package/dist/esm/v2/components/Textarea.js +21 -30
- package/dist/esm/v2/components/Textarea.js.map +1 -1
- package/dist/esm/v2/components/TimePicker.js +59 -69
- package/dist/esm/v2/components/TimePicker.js.map +1 -1
- package/dist/esm/v2/components/Toast.js +109 -163
- package/dist/esm/v2/components/Toast.js.map +1 -1
- package/dist/esm/v2/components/Tooltip.js +18 -31
- package/dist/esm/v2/components/Tooltip.js.map +1 -1
- package/dist/esm/v2/components/_ErrorPageBody.js +6 -5
- package/dist/esm/v2/components/_ErrorPageBody.js.map +1 -1
- package/dist/esm/v2/components/_pickerShared.js +2 -2
- package/dist/esm/v2/components/_pickerShared.js.map +1 -1
- package/dist/esm/v2/components/index.js +64 -0
- package/dist/esm/v2/components/index.js.map +1 -1
- package/dist/esm/v2/hooks/index.js +62 -0
- package/dist/esm/v2/hooks/index.js.map +1 -1
- package/dist/esm/v2/hooks/useAppliedFilters.js +112 -0
- package/dist/esm/v2/hooks/useAppliedFilters.js.map +1 -0
- package/dist/esm/v2/hooks/useDebouncedCallback.js +82 -0
- package/dist/esm/v2/hooks/useDebouncedCallback.js.map +1 -0
- package/dist/esm/v2/hooks/useDelayedFlag.js +5 -19
- package/dist/esm/v2/hooks/useDelayedFlag.js.map +1 -1
- package/dist/esm/v2/hooks/useDensity.js +13 -17
- package/dist/esm/v2/hooks/useDensity.js.map +1 -1
- package/dist/esm/v2/hooks/useFocusFirstError.js +25 -33
- package/dist/esm/v2/hooks/useFocusFirstError.js.map +1 -1
- package/dist/esm/v2/hooks/useFocusOnRouteChange.js +81 -0
- package/dist/esm/v2/hooks/useFocusOnRouteChange.js.map +1 -0
- package/dist/esm/v2/hooks/useFocusTrap.js +19 -23
- package/dist/esm/v2/hooks/useFocusTrap.js.map +1 -1
- package/dist/esm/v2/hooks/useFormAutoSave.js +38 -53
- package/dist/esm/v2/hooks/useFormAutoSave.js.map +1 -1
- package/dist/esm/v2/hooks/useFormCompletionProgress.js +32 -51
- package/dist/esm/v2/hooks/useFormCompletionProgress.js.map +1 -1
- package/dist/esm/v2/hooks/useKeyboardShortcuts.js +125 -0
- package/dist/esm/v2/hooks/useKeyboardShortcuts.js.map +1 -0
- package/dist/esm/v2/hooks/usePrefersReducedMotion.js +99 -0
- package/dist/esm/v2/hooks/usePrefersReducedMotion.js.map +1 -0
- package/dist/esm/v2/hooks/useResolvedDensity.js +2 -10
- package/dist/esm/v2/hooks/useResolvedDensity.js.map +1 -1
- package/dist/esm/v2/hooks/useSortedRows.js +3 -5
- package/dist/esm/v2/hooks/useSortedRows.js.map +1 -1
- package/dist/esm/v2/hooks/useTabLoading.js +6 -21
- package/dist/esm/v2/hooks/useTabLoading.js.map +1 -1
- package/dist/esm/v2/index.js +14 -4
- package/dist/esm/v2/index.js.map +1 -1
- package/dist/esm/v2/modalContext.js +2 -2
- package/dist/esm/v2/modalContext.js.map +1 -1
- package/dist/esm/v2/models/favorite.js.map +1 -1
- package/dist/esm/v2/models/personalization.js.map +1 -1
- package/dist/esm/v2/models/referentiel.js.map +1 -1
- package/dist/esm/v2/models/savedFilter.js.map +1 -1
- package/dist/esm/v2/patterns/ActionBar.js +115 -159
- package/dist/esm/v2/patterns/ActionBar.js.map +1 -1
- package/dist/esm/v2/patterns/AppMain.js +108 -0
- package/dist/esm/v2/patterns/AppMain.js.map +1 -0
- package/dist/esm/v2/patterns/BulkActionBar.js +31 -34
- package/dist/esm/v2/patterns/BulkActionBar.js.map +1 -1
- package/dist/esm/v2/patterns/ChartFigure.js +151 -0
- package/dist/esm/v2/patterns/ChartFigure.js.map +1 -0
- package/dist/esm/v2/patterns/CollapsibleDataGrid.js +111 -152
- package/dist/esm/v2/patterns/CollapsibleDataGrid.js.map +1 -1
- package/dist/esm/v2/patterns/ColumnsToggle.js +43 -77
- package/dist/esm/v2/patterns/ColumnsToggle.js.map +1 -1
- package/dist/esm/v2/patterns/DataGrid.js +221 -255
- package/dist/esm/v2/patterns/DataGrid.js.map +1 -1
- package/dist/esm/v2/patterns/DataGridSettingsMenu.js +76 -94
- package/dist/esm/v2/patterns/DataGridSettingsMenu.js.map +1 -1
- package/dist/esm/v2/patterns/DataGridToolbar.js +85 -89
- package/dist/esm/v2/patterns/DataGridToolbar.js.map +1 -1
- package/dist/esm/v2/patterns/DataGridVirtualized.js +141 -182
- package/dist/esm/v2/patterns/DataGridVirtualized.js.map +1 -1
- package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js +26 -30
- package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
- package/dist/esm/v2/patterns/DetailSplit.js +108 -0
- package/dist/esm/v2/patterns/DetailSplit.js.map +1 -0
- package/dist/esm/v2/patterns/FavoriteColumn.js +26 -75
- package/dist/esm/v2/patterns/FavoriteColumn.js.map +1 -1
- package/dist/esm/v2/patterns/FavoritesFilter.js +30 -39
- package/dist/esm/v2/patterns/FavoritesFilter.js.map +1 -1
- package/dist/esm/v2/patterns/FilterTabBar.js +112 -0
- package/dist/esm/v2/patterns/FilterTabBar.js.map +1 -0
- package/dist/esm/v2/patterns/FormErrorSummary.js +12 -13
- package/dist/esm/v2/patterns/FormErrorSummary.js.map +1 -1
- package/dist/esm/v2/patterns/FormPageShell.js +43 -41
- package/dist/esm/v2/patterns/FormPageShell.js.map +1 -1
- package/dist/esm/v2/patterns/FormSection.js +30 -38
- package/dist/esm/v2/patterns/FormSection.js.map +1 -1
- package/dist/esm/v2/patterns/FormikCheckbox.js +130 -0
- package/dist/esm/v2/patterns/FormikCheckbox.js.map +1 -0
- package/dist/esm/v2/patterns/FormikCheckboxGroup.js +56 -60
- package/dist/esm/v2/patterns/FormikCheckboxGroup.js.map +1 -1
- package/dist/esm/v2/patterns/FormikCombobox.js +51 -66
- package/dist/esm/v2/patterns/FormikCombobox.js.map +1 -1
- package/dist/esm/v2/patterns/FormikDatePicker.js +51 -99
- package/dist/esm/v2/patterns/FormikDatePicker.js.map +1 -1
- package/dist/esm/v2/patterns/FormikDateTimePicker.js +136 -0
- package/dist/esm/v2/patterns/FormikDateTimePicker.js.map +1 -0
- package/dist/esm/v2/patterns/FormikErrorFocus.js +22 -23
- package/dist/esm/v2/patterns/FormikErrorFocus.js.map +1 -1
- package/dist/esm/v2/patterns/FormikErrorSummary.js +89 -0
- package/dist/esm/v2/patterns/FormikErrorSummary.js.map +1 -0
- package/dist/esm/v2/patterns/FormikFile.js +94 -78
- package/dist/esm/v2/patterns/FormikFile.js.map +1 -1
- package/dist/esm/v2/patterns/FormikInput.js +40 -50
- package/dist/esm/v2/patterns/FormikInput.js.map +1 -1
- package/dist/esm/v2/patterns/FormikRadioGroup.js +129 -0
- package/dist/esm/v2/patterns/FormikRadioGroup.js.map +1 -0
- package/dist/esm/v2/patterns/FormikReferentielField.js +49 -59
- package/dist/esm/v2/patterns/FormikReferentielField.js.map +1 -1
- package/dist/esm/v2/patterns/FormikSelect.js +64 -84
- package/dist/esm/v2/patterns/FormikSelect.js.map +1 -1
- package/dist/esm/v2/patterns/FormikTextarea.js +30 -43
- package/dist/esm/v2/patterns/FormikTextarea.js.map +1 -1
- package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js +64 -65
- package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
- package/dist/esm/v2/patterns/NetworkErrorBanner.js +6 -7
- package/dist/esm/v2/patterns/NetworkErrorBanner.js.map +1 -1
- package/dist/esm/v2/patterns/PageContent.js +10 -14
- package/dist/esm/v2/patterns/PageContent.js.map +1 -1
- package/dist/esm/v2/patterns/PreviewDrawer.js +153 -0
- package/dist/esm/v2/patterns/PreviewDrawer.js.map +1 -0
- package/dist/esm/v2/patterns/ReferentielField.js +327 -312
- package/dist/esm/v2/patterns/ReferentielField.js.map +1 -1
- package/dist/esm/v2/patterns/RowFavoriteToggle.js +127 -0
- package/dist/esm/v2/patterns/RowFavoriteToggle.js.map +1 -0
- package/dist/esm/v2/patterns/SaveFilterDialog.js +38 -66
- package/dist/esm/v2/patterns/SaveFilterDialog.js.map +1 -1
- package/dist/esm/v2/patterns/SavedFiltersMenu.js +62 -81
- package/dist/esm/v2/patterns/SavedFiltersMenu.js.map +1 -1
- package/dist/esm/v2/patterns/SkeletonPageShell.js +106 -129
- package/dist/esm/v2/patterns/SkeletonPageShell.js.map +1 -1
- package/dist/esm/v2/patterns/SortableHeader.js +22 -45
- package/dist/esm/v2/patterns/SortableHeader.js.map +1 -1
- package/dist/esm/v2/patterns/Tour.js +94 -120
- package/dist/esm/v2/patterns/Tour.js.map +1 -1
- package/dist/esm/v2/patterns/_dataGridShared.js +107 -128
- package/dist/esm/v2/patterns/_dataGridShared.js.map +1 -1
- package/dist/esm/v2/patterns/_pickerSerialisation.js +72 -0
- package/dist/esm/v2/patterns/_pickerSerialisation.js.map +1 -0
- package/dist/esm/v2/patterns/_sort.js +17 -33
- package/dist/esm/v2/patterns/_sort.js.map +1 -1
- package/dist/esm/v2/patterns/_useColumnReorder.js +122 -160
- package/dist/esm/v2/patterns/_useColumnReorder.js.map +1 -1
- package/dist/esm/v2/patterns/_useColumnResize.js +78 -96
- package/dist/esm/v2/patterns/_useColumnResize.js.map +1 -1
- package/dist/esm/v2/patterns/filterCriteria.js +102 -0
- package/dist/esm/v2/patterns/filterCriteria.js.map +1 -0
- package/dist/esm/v2/patterns/index.js +235 -0
- package/dist/esm/v2/patterns/index.js.map +1 -1
- package/dist/esm/v2/patterns/rowActions.js +223 -0
- package/dist/esm/v2/patterns/rowActions.js.map +1 -0
- package/dist/esm/v2/personalization/PersonalizationProvider.js +50 -47
- package/dist/esm/v2/personalization/PersonalizationProvider.js.map +1 -1
- package/dist/esm/v2/personalization/adapters/_storageKey.js +5 -5
- package/dist/esm/v2/personalization/adapters/_storageKey.js.map +1 -1
- package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js +22 -23
- package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
- package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js +13 -13
- package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
- package/dist/esm/v2/personalization/capabilities/favorites.js +36 -60
- package/dist/esm/v2/personalization/capabilities/favorites.js.map +1 -1
- package/dist/esm/v2/personalization/capabilities/favoritesView.js +22 -34
- package/dist/esm/v2/personalization/capabilities/favoritesView.js.map +1 -1
- package/dist/esm/v2/personalization/capabilities/gridPreferences.js +203 -0
- package/dist/esm/v2/personalization/capabilities/gridPreferences.js.map +1 -0
- package/dist/esm/v2/personalization/capabilities/index.js +5 -0
- package/dist/esm/v2/personalization/capabilities/index.js.map +1 -1
- package/dist/esm/v2/personalization/capabilities/reviveSavedCriteria.js +119 -0
- package/dist/esm/v2/personalization/capabilities/reviveSavedCriteria.js.map +1 -0
- package/dist/esm/v2/personalization/capabilities/savedFilters.js +90 -98
- package/dist/esm/v2/personalization/capabilities/savedFilters.js.map +1 -1
- package/dist/esm/v2/personalization/createPersonalizationStore.js +78 -181
- package/dist/esm/v2/personalization/createPersonalizationStore.js.map +1 -1
- package/dist/esm/v2/personalization/index.js +35 -0
- package/dist/esm/v2/personalization/index.js.map +1 -1
- package/dist/esm/v2/personalization/personalizationContext.js +9 -9
- package/dist/esm/v2/personalization/personalizationContext.js.map +1 -1
- package/dist/esm/v2/personalization/schema.js +8 -9
- package/dist/esm/v2/personalization/schema.js.map +1 -1
- package/dist/esm/v2/referentiel/ReferentielProvider.js +27 -42
- package/dist/esm/v2/referentiel/ReferentielProvider.js.map +1 -1
- package/dist/esm/v2/referentiel/types.js +2 -0
- package/dist/esm/v2/referentiel/types.js.map +1 -0
- package/dist/esm/v2/referentiel/useReferentielClient.js +10 -11
- package/dist/esm/v2/referentiel/useReferentielClient.js.map +1 -1
- package/dist/esm/v2/referentiel/useReferentielOptions.js +60 -117
- package/dist/esm/v2/referentiel/useReferentielOptions.js.map +1 -1
- package/dist/esm/v2/referentiel/useReferentielSearch.js +37 -91
- package/dist/esm/v2/referentiel/useReferentielSearch.js.map +1 -1
- package/dist/esm/v2/theme/_brand.js +8 -24
- package/dist/esm/v2/theme/_brand.js.map +1 -1
- package/dist/esm/v2/theme/_brandSecondary.js +8 -24
- package/dist/esm/v2/theme/_brandSecondary.js.map +1 -1
- package/dist/esm/v2/theme/createPortnetTheme.js +51 -61
- package/dist/esm/v2/theme/createPortnetTheme.js.map +1 -1
- package/dist/esm/v2/theme/cssVariables.js +62 -69
- package/dist/esm/v2/theme/cssVariables.js.map +1 -1
- package/dist/esm/v2/theme/index.js +5 -5
- package/dist/esm/v2/theme/index.js.map +1 -1
- package/dist/esm/v2/tokens/breakpoints.js +14 -14
- package/dist/esm/v2/tokens/breakpoints.js.map +1 -1
- package/dist/esm/v2/tokens/chart.js +261 -0
- package/dist/esm/v2/tokens/chart.js.map +1 -0
- package/dist/esm/v2/tokens/colors.js +22 -22
- package/dist/esm/v2/tokens/colors.js.map +1 -1
- package/dist/esm/v2/tokens/density.js +62 -7
- package/dist/esm/v2/tokens/density.js.map +1 -1
- package/dist/esm/v2/tokens/index.js +49 -34
- package/dist/esm/v2/tokens/index.js.map +1 -1
- package/dist/esm/v2/tokens/motion.js +12 -20
- package/dist/esm/v2/tokens/motion.js.map +1 -1
- package/dist/esm/v2/tokens/radius.js +1 -1
- package/dist/esm/v2/tokens/radius.js.map +1 -1
- package/dist/esm/v2/tokens/shadows.js +6 -6
- package/dist/esm/v2/tokens/shadows.js.map +1 -1
- package/dist/esm/v2/tokens/spacing.js +2 -2
- package/dist/esm/v2/tokens/spacing.js.map +1 -1
- package/dist/esm/v2/tokens/state.js +1 -1
- package/dist/esm/v2/tokens/state.js.map +1 -1
- package/dist/esm/v2/tokens/statusPalette.js +17 -21
- package/dist/esm/v2/tokens/statusPalette.js.map +1 -1
- package/dist/esm/v2/tokens/tokens.json +6 -1
- package/dist/esm/v2/tokens/typography.js +13 -13
- package/dist/esm/v2/tokens/typography.js.map +1 -1
- package/dist/esm/v2/tokens/zIndex.js +1 -1
- package/dist/esm/v2/tokens/zIndex.js.map +1 -1
- package/dist/esm/v2/types/datagrid.js.map +1 -1
- package/dist/esm/v2/utils/apiError.js +16 -37
- package/dist/esm/v2/utils/apiError.js.map +1 -1
- package/dist/esm/v2/utils/contrast.js +31 -32
- package/dist/esm/v2/utils/contrast.js.map +1 -1
- package/dist/esm/v2/utils/cx.js +5 -25
- package/dist/esm/v2/utils/cx.js.map +1 -1
- package/dist/esm/v2/utils/fileDownload.js +23 -26
- package/dist/esm/v2/utils/fileDownload.js.map +1 -1
- package/dist/esm/v2/utils/fileValidation.js +209 -0
- package/dist/esm/v2/utils/fileValidation.js.map +1 -0
- package/dist/esm/v2/utils/fmtDate.js +111 -0
- package/dist/esm/v2/utils/fmtDate.js.map +1 -0
- package/dist/esm/v2/utils/fmtMoney.js +8 -10
- package/dist/esm/v2/utils/fmtMoney.js.map +1 -1
- package/dist/esm/v2/utils/formikErrors.js +78 -0
- package/dist/esm/v2/utils/formikErrors.js.map +1 -0
- package/dist/esm/v2/utils/index.js +35 -2
- package/dist/esm/v2/utils/index.js.map +1 -1
- package/dist/esm/v2/utils/mergeLabels.js +7 -12
- package/dist/esm/v2/utils/mergeLabels.js.map +1 -1
- package/dist/esm/v2/utils/networkStatus.js +12 -12
- package/dist/esm/v2/utils/networkStatus.js.map +1 -1
- package/dist/index.d.ts +9 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +122 -47
- package/dist/index.js.map +1 -1
- package/dist/v2/__tests__/AppMain.test.js +133 -0
- package/dist/v2/__tests__/AppMain.test.js.map +1 -0
- package/dist/v2/__tests__/ChartFigure.test.js +183 -0
- package/dist/v2/__tests__/ChartFigure.test.js.map +1 -0
- package/dist/v2/__tests__/DataGridRowActionsPropagation.test.js +153 -0
- package/dist/v2/__tests__/DataGridRowActionsPropagation.test.js.map +1 -0
- package/dist/v2/__tests__/DrawerTactileTargets.test.js +94 -0
- package/dist/v2/__tests__/DrawerTactileTargets.test.js.map +1 -0
- package/dist/v2/__tests__/FieldError.test.js +98 -69
- package/dist/v2/__tests__/FieldError.test.js.map +1 -1
- package/dist/v2/__tests__/FieldNaming.test.js +161 -0
- package/dist/v2/__tests__/FieldNaming.test.js.map +1 -0
- package/dist/v2/__tests__/FieldWidth.test.js +148 -0
- package/dist/v2/__tests__/FieldWidth.test.js.map +1 -0
- package/dist/v2/__tests__/FileCard.test.js +45 -48
- package/dist/v2/__tests__/FileCard.test.js.map +1 -1
- package/dist/v2/__tests__/FormikCheckbox.test.js +175 -0
- package/dist/v2/__tests__/FormikCheckbox.test.js.map +1 -0
- package/dist/v2/__tests__/FormikDateTimePicker.test.js +237 -0
- package/dist/v2/__tests__/FormikDateTimePicker.test.js.map +1 -0
- package/dist/v2/__tests__/FormikDisplayWidth.test.js +102 -0
- package/dist/v2/__tests__/FormikDisplayWidth.test.js.map +1 -0
- package/dist/v2/__tests__/FormikRadioGroup.test.js +300 -0
- package/dist/v2/__tests__/FormikRadioGroup.test.js.map +1 -0
- package/dist/v2/__tests__/MobileRowCard.test.js +100 -102
- package/dist/v2/__tests__/MobileRowCard.test.js.map +1 -1
- package/dist/v2/__tests__/PreviewDrawer.test.js +169 -0
- package/dist/v2/__tests__/PreviewDrawer.test.js.map +1 -0
- package/dist/v2/__tests__/ReferentielFieldContainer.test.js +159 -0
- package/dist/v2/__tests__/ReferentielFieldContainer.test.js.map +1 -0
- package/dist/v2/__tests__/SectionErrorBoundary.test.js +53 -68
- package/dist/v2/__tests__/SectionErrorBoundary.test.js.map +1 -1
- package/dist/v2/__tests__/apiError.test.js +50 -69
- package/dist/v2/__tests__/apiError.test.js.map +1 -1
- package/dist/v2/__tests__/banned-patterns.test.js +42 -123
- package/dist/v2/__tests__/banned-patterns.test.js.map +1 -1
- package/dist/v2/__tests__/chart-palette.test.js +205 -0
- package/dist/v2/__tests__/chart-palette.test.js.map +1 -0
- package/dist/v2/__tests__/contrast-palette.test.js +42 -74
- package/dist/v2/__tests__/contrast-palette.test.js.map +1 -1
- package/dist/v2/__tests__/cssVariables.test.js +44 -51
- package/dist/v2/__tests__/cssVariables.test.js.map +1 -1
- package/dist/v2/__tests__/fileValidation.test.js +136 -0
- package/dist/v2/__tests__/fileValidation.test.js.map +1 -0
- package/dist/v2/__tests__/filterCriteria.test.js +324 -0
- package/dist/v2/__tests__/filterCriteria.test.js.map +1 -0
- package/dist/v2/__tests__/fmtDate.test.js +69 -0
- package/dist/v2/__tests__/fmtDate.test.js.map +1 -0
- package/dist/v2/__tests__/gap-leakage-refonte.test.js +221 -0
- package/dist/v2/__tests__/gap-leakage-refonte.test.js.map +1 -0
- package/dist/v2/__tests__/labels-merge.test.js +38 -46
- package/dist/v2/__tests__/labels-merge.test.js.map +1 -1
- package/dist/v2/__tests__/locale-fallback.test.js +47 -52
- package/dist/v2/__tests__/locale-fallback.test.js.map +1 -1
- package/dist/v2/__tests__/reviveSavedCriteria.test.js +144 -0
- package/dist/v2/__tests__/reviveSavedCriteria.test.js.map +1 -0
- package/dist/v2/__tests__/rowActions.test.js +186 -0
- package/dist/v2/__tests__/rowActions.test.js.map +1 -0
- package/dist/v2/__tests__/useFocusOnRouteChange.test.js +156 -0
- package/dist/v2/__tests__/useFocusOnRouteChange.test.js.map +1 -0
- package/dist/v2/__tests__/useFocusTrap.test.js +270 -407
- package/dist/v2/__tests__/useFocusTrap.test.js.map +1 -1
- package/dist/v2/__tests__/usePrefersReducedMotion.test.js +123 -0
- package/dist/v2/__tests__/usePrefersReducedMotion.test.js.map +1 -0
- package/dist/v2/components/Accordion.js +60 -82
- package/dist/v2/components/Accordion.js.map +1 -1
- package/dist/v2/components/ActionStrip.js +40 -52
- package/dist/v2/components/ActionStrip.js.map +1 -1
- package/dist/v2/components/Banner.js +42 -41
- package/dist/v2/components/Banner.js.map +1 -1
- package/dist/v2/components/Busy.js +22 -27
- package/dist/v2/components/Busy.js.map +1 -1
- package/dist/v2/components/Button.js +39 -50
- package/dist/v2/components/Button.js.map +1 -1
- package/dist/v2/components/CategoryTag.d.ts.map +1 -1
- package/dist/v2/components/CategoryTag.js +49 -32
- package/dist/v2/components/CategoryTag.js.map +1 -1
- package/dist/v2/components/Checkbox.js +39 -45
- package/dist/v2/components/Checkbox.js.map +1 -1
- package/dist/v2/components/Chip.js +29 -42
- package/dist/v2/components/Chip.js.map +1 -1
- package/dist/v2/components/Combobox.js +122 -144
- package/dist/v2/components/Combobox.js.map +1 -1
- package/dist/v2/components/CommandPalette.js +138 -225
- package/dist/v2/components/CommandPalette.js.map +1 -1
- package/dist/v2/components/ConfirmDialog.js +46 -56
- package/dist/v2/components/ConfirmDialog.js.map +1 -1
- package/dist/v2/components/DatePicker.js +81 -86
- package/dist/v2/components/DatePicker.js.map +1 -1
- package/dist/v2/components/DateRangePicker.js +77 -87
- package/dist/v2/components/DateRangePicker.js.map +1 -1
- package/dist/v2/components/DateTimePicker.d.ts.map +1 -1
- package/dist/v2/components/DateTimePicker.js +121 -95
- package/dist/v2/components/DateTimePicker.js.map +1 -1
- package/dist/v2/components/Drawer.d.ts.map +1 -1
- package/dist/v2/components/Drawer.js +93 -88
- package/dist/v2/components/Drawer.js.map +1 -1
- package/dist/v2/components/Dropzone.js +150 -196
- package/dist/v2/components/Dropzone.js.map +1 -1
- package/dist/v2/components/EmptyState.js +18 -20
- package/dist/v2/components/EmptyState.js.map +1 -1
- package/dist/v2/components/FavoriteToggle.js +28 -39
- package/dist/v2/components/FavoriteToggle.js.map +1 -1
- package/dist/v2/components/Field.d.ts +121 -5
- package/dist/v2/components/Field.d.ts.map +1 -1
- package/dist/v2/components/Field.js +221 -62
- package/dist/v2/components/Field.js.map +1 -1
- package/dist/v2/components/FieldError.js +18 -21
- package/dist/v2/components/FieldError.js.map +1 -1
- package/dist/v2/components/FieldHelp.js +40 -60
- package/dist/v2/components/FieldHelp.js.map +1 -1
- package/dist/v2/components/FileCard.js +27 -31
- package/dist/v2/components/FileCard.js.map +1 -1
- package/dist/v2/components/FilterTab.js +30 -38
- package/dist/v2/components/FilterTab.js.map +1 -1
- package/dist/v2/components/ForbiddenPage.d.ts +25 -1
- package/dist/v2/components/ForbiddenPage.d.ts.map +1 -1
- package/dist/v2/components/ForbiddenPage.js +37 -17
- package/dist/v2/components/ForbiddenPage.js.map +1 -1
- package/dist/v2/components/FormGrid.js +53 -59
- package/dist/v2/components/FormGrid.js.map +1 -1
- package/dist/v2/components/FormikDisplay.d.ts +50 -1
- package/dist/v2/components/FormikDisplay.d.ts.map +1 -1
- package/dist/v2/components/FormikDisplay.js +108 -33
- package/dist/v2/components/FormikDisplay.js.map +1 -1
- package/dist/v2/components/Input.d.ts +40 -0
- package/dist/v2/components/Input.d.ts.map +1 -1
- package/dist/v2/components/Input.js +81 -41
- package/dist/v2/components/Input.js.map +1 -1
- package/dist/v2/components/KPICard.js +57 -67
- package/dist/v2/components/KPICard.js.map +1 -1
- package/dist/v2/components/KPIStrip.js +16 -22
- package/dist/v2/components/KPIStrip.js.map +1 -1
- package/dist/v2/components/KV.js +25 -31
- package/dist/v2/components/KV.js.map +1 -1
- package/dist/v2/components/KVGrid.js +19 -26
- package/dist/v2/components/KVGrid.js.map +1 -1
- package/dist/v2/components/Layout.js +91 -120
- package/dist/v2/components/Layout.js.map +1 -1
- package/dist/v2/components/MobileRowCard.js +79 -91
- package/dist/v2/components/MobileRowCard.js.map +1 -1
- package/dist/v2/components/Modal.js +61 -69
- package/dist/v2/components/Modal.js.map +1 -1
- package/dist/v2/components/NetworkErrorPage.d.ts +19 -1
- package/dist/v2/components/NetworkErrorPage.d.ts.map +1 -1
- package/dist/v2/components/NetworkErrorPage.js +38 -21
- package/dist/v2/components/NetworkErrorPage.js.map +1 -1
- package/dist/v2/components/NotFoundPage.d.ts +17 -1
- package/dist/v2/components/NotFoundPage.d.ts.map +1 -1
- package/dist/v2/components/NotFoundPage.js +37 -18
- package/dist/v2/components/NotFoundPage.js.map +1 -1
- package/dist/v2/components/NumberInput.js +88 -118
- package/dist/v2/components/NumberInput.js.map +1 -1
- package/dist/v2/components/OverflowMenu.js +38 -56
- package/dist/v2/components/OverflowMenu.js.map +1 -1
- package/dist/v2/components/PdfViewer.js +34 -45
- package/dist/v2/components/PdfViewer.js.map +1 -1
- package/dist/v2/components/ProgressBar.js +42 -49
- package/dist/v2/components/ProgressBar.js.map +1 -1
- package/dist/v2/components/Radio.js +59 -67
- package/dist/v2/components/Radio.js.map +1 -1
- package/dist/v2/components/SectionErrorBoundary.js +90 -135
- package/dist/v2/components/SectionErrorBoundary.js.map +1 -1
- package/dist/v2/components/SectionHeader.js +34 -41
- package/dist/v2/components/SectionHeader.js.map +1 -1
- package/dist/v2/components/Segmented.js +69 -93
- package/dist/v2/components/Segmented.js.map +1 -1
- package/dist/v2/components/Select.d.ts +26 -2
- package/dist/v2/components/Select.d.ts.map +1 -1
- package/dist/v2/components/Select.js +120 -155
- package/dist/v2/components/Select.js.map +1 -1
- package/dist/v2/components/ServerErrorPage.d.ts +27 -1
- package/dist/v2/components/ServerErrorPage.d.ts.map +1 -1
- package/dist/v2/components/ServerErrorPage.js +37 -20
- package/dist/v2/components/ServerErrorPage.js.map +1 -1
- package/dist/v2/components/Skeleton.js +86 -100
- package/dist/v2/components/Skeleton.js.map +1 -1
- package/dist/v2/components/SkipLink.js +9 -12
- package/dist/v2/components/SkipLink.js.map +1 -1
- package/dist/v2/components/Spinner.js +16 -25
- package/dist/v2/components/Spinner.js.map +1 -1
- package/dist/v2/components/Status.js +18 -29
- package/dist/v2/components/Status.js.map +1 -1
- package/dist/v2/components/Stepper.js +80 -82
- package/dist/v2/components/Stepper.js.map +1 -1
- package/dist/v2/components/Surface.js +34 -49
- package/dist/v2/components/Surface.js.map +1 -1
- package/dist/v2/components/Switch.js +29 -37
- package/dist/v2/components/Switch.js.map +1 -1
- package/dist/v2/components/TabPanel.d.ts +17 -0
- package/dist/v2/components/TabPanel.d.ts.map +1 -0
- package/dist/v2/components/TabPanel.js +90 -0
- package/dist/v2/components/TabPanel.js.map +1 -0
- package/dist/v2/components/Tabs.d.ts +25 -0
- package/dist/v2/components/Tabs.d.ts.map +1 -1
- package/dist/v2/components/Tabs.js +53 -29
- package/dist/v2/components/Tabs.js.map +1 -1
- package/dist/v2/components/TelInput.js +80 -115
- package/dist/v2/components/TelInput.js.map +1 -1
- package/dist/v2/components/Textarea.js +26 -35
- package/dist/v2/components/Textarea.js.map +1 -1
- package/dist/v2/components/TimePicker.js +62 -74
- package/dist/v2/components/TimePicker.js.map +1 -1
- package/dist/v2/components/Toast.js +119 -174
- package/dist/v2/components/Toast.js.map +1 -1
- package/dist/v2/components/Tooltip.js +23 -38
- package/dist/v2/components/Tooltip.js.map +1 -1
- package/dist/v2/components/_ErrorPageBody.js +15 -16
- package/dist/v2/components/_ErrorPageBody.js.map +1 -1
- package/dist/v2/components/_pickerShared.js +5 -5
- package/dist/v2/components/_pickerShared.js.map +1 -1
- package/dist/v2/components/index.d.ts +67 -1
- package/dist/v2/components/index.d.ts.map +1 -1
- package/dist/v2/components/index.js +153 -136
- package/dist/v2/components/index.js.map +1 -1
- package/dist/v2/hooks/index.d.ts +65 -0
- package/dist/v2/hooks/index.d.ts.map +1 -1
- package/dist/v2/hooks/index.js +63 -24
- package/dist/v2/hooks/index.js.map +1 -1
- package/dist/v2/hooks/useAppliedFilters.d.ts +102 -0
- package/dist/v2/hooks/useAppliedFilters.d.ts.map +1 -0
- package/dist/v2/hooks/useAppliedFilters.js +117 -0
- package/dist/v2/hooks/useAppliedFilters.js.map +1 -0
- package/dist/v2/hooks/useDebouncedCallback.d.ts +64 -0
- package/dist/v2/hooks/useDebouncedCallback.d.ts.map +1 -0
- package/dist/v2/hooks/useDebouncedCallback.js +87 -0
- package/dist/v2/hooks/useDebouncedCallback.js.map +1 -0
- package/dist/v2/hooks/useDelayedFlag.js +6 -20
- package/dist/v2/hooks/useDelayedFlag.js.map +1 -1
- package/dist/v2/hooks/useDensity.d.ts.map +1 -1
- package/dist/v2/hooks/useDensity.js +14 -18
- package/dist/v2/hooks/useDensity.js.map +1 -1
- package/dist/v2/hooks/useFocusFirstError.js +26 -34
- package/dist/v2/hooks/useFocusFirstError.js.map +1 -1
- package/dist/v2/hooks/useFocusOnRouteChange.d.ts +65 -0
- package/dist/v2/hooks/useFocusOnRouteChange.d.ts.map +1 -0
- package/dist/v2/hooks/useFocusOnRouteChange.js +88 -0
- package/dist/v2/hooks/useFocusOnRouteChange.js.map +1 -0
- package/dist/v2/hooks/useFocusTrap.js +20 -24
- package/dist/v2/hooks/useFocusTrap.js.map +1 -1
- package/dist/v2/hooks/useFormAutoSave.d.ts +4 -4
- package/dist/v2/hooks/useFormAutoSave.d.ts.map +1 -1
- package/dist/v2/hooks/useFormAutoSave.js +39 -54
- package/dist/v2/hooks/useFormAutoSave.js.map +1 -1
- package/dist/v2/hooks/useFormCompletionProgress.d.ts +1 -1
- package/dist/v2/hooks/useFormCompletionProgress.d.ts.map +1 -1
- package/dist/v2/hooks/useFormCompletionProgress.js +33 -52
- package/dist/v2/hooks/useFormCompletionProgress.js.map +1 -1
- package/dist/v2/hooks/useKeyboardShortcuts.d.ts +25 -0
- package/dist/v2/hooks/useKeyboardShortcuts.d.ts.map +1 -0
- package/dist/v2/hooks/useKeyboardShortcuts.js +132 -0
- package/dist/v2/hooks/useKeyboardShortcuts.js.map +1 -0
- package/dist/v2/hooks/usePrefersReducedMotion.d.ts +56 -0
- package/dist/v2/hooks/usePrefersReducedMotion.d.ts.map +1 -0
- package/dist/v2/hooks/usePrefersReducedMotion.js +105 -0
- package/dist/v2/hooks/usePrefersReducedMotion.js.map +1 -0
- package/dist/v2/hooks/useResolvedDensity.js +5 -13
- package/dist/v2/hooks/useResolvedDensity.js.map +1 -1
- package/dist/v2/hooks/useSortedRows.js +4 -6
- package/dist/v2/hooks/useSortedRows.js.map +1 -1
- package/dist/v2/hooks/useTabLoading.js +7 -22
- package/dist/v2/hooks/useTabLoading.js.map +1 -1
- package/dist/v2/index.d.ts.map +1 -1
- package/dist/v2/index.js +143 -145
- package/dist/v2/index.js.map +1 -1
- package/dist/v2/modalContext.js +2 -2
- package/dist/v2/modalContext.js.map +1 -1
- package/dist/v2/models/favorite.d.ts +8 -9
- package/dist/v2/models/favorite.d.ts.map +1 -1
- package/dist/v2/models/favorite.js.map +1 -1
- package/dist/v2/models/index.js +4 -4
- package/dist/v2/models/index.js.map +1 -1
- package/dist/v2/models/personalization.d.ts +44 -48
- package/dist/v2/models/personalization.d.ts.map +1 -1
- package/dist/v2/models/personalization.js.map +1 -1
- package/dist/v2/models/referentiel.d.ts +32 -50
- package/dist/v2/models/referentiel.d.ts.map +1 -1
- package/dist/v2/models/referentiel.js.map +1 -1
- package/dist/v2/models/savedFilter.d.ts +8 -17
- package/dist/v2/models/savedFilter.d.ts.map +1 -1
- package/dist/v2/models/savedFilter.js.map +1 -1
- package/dist/v2/patterns/ActionBar.js +152 -187
- package/dist/v2/patterns/ActionBar.js.map +1 -1
- package/dist/v2/patterns/AppMain.d.ts +109 -0
- package/dist/v2/patterns/AppMain.d.ts.map +1 -0
- package/dist/v2/patterns/AppMain.js +115 -0
- package/dist/v2/patterns/AppMain.js.map +1 -0
- package/dist/v2/patterns/BulkActionBar.js +40 -42
- package/dist/v2/patterns/BulkActionBar.js.map +1 -1
- package/dist/v2/patterns/ChartFigure.d.ts +124 -0
- package/dist/v2/patterns/ChartFigure.d.ts.map +1 -0
- package/dist/v2/patterns/ChartFigure.js +159 -0
- package/dist/v2/patterns/ChartFigure.js.map +1 -0
- package/dist/v2/patterns/CollapsibleDataGrid.js +138 -174
- package/dist/v2/patterns/CollapsibleDataGrid.js.map +1 -1
- package/dist/v2/patterns/ColumnsToggle.js +60 -94
- package/dist/v2/patterns/ColumnsToggle.js.map +1 -1
- package/dist/v2/patterns/DataGrid.d.ts.map +1 -1
- package/dist/v2/patterns/DataGrid.js +262 -297
- package/dist/v2/patterns/DataGrid.js.map +1 -1
- package/dist/v2/patterns/DataGridSettingsMenu.d.ts +12 -0
- package/dist/v2/patterns/DataGridSettingsMenu.d.ts.map +1 -1
- package/dist/v2/patterns/DataGridSettingsMenu.js +104 -121
- package/dist/v2/patterns/DataGridSettingsMenu.js.map +1 -1
- package/dist/v2/patterns/DataGridToolbar.js +103 -106
- package/dist/v2/patterns/DataGridToolbar.js.map +1 -1
- package/dist/v2/patterns/DataGridVirtualized.js +179 -217
- package/dist/v2/patterns/DataGridVirtualized.js.map +1 -1
- package/dist/v2/patterns/DeleteResourceConfirmDialog.js +32 -35
- package/dist/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
- package/dist/v2/patterns/DetailSplit.d.ts +87 -0
- package/dist/v2/patterns/DetailSplit.d.ts.map +1 -0
- package/dist/v2/patterns/DetailSplit.js +116 -0
- package/dist/v2/patterns/DetailSplit.js.map +1 -0
- package/dist/v2/patterns/FavoriteColumn.d.ts +9 -9
- package/dist/v2/patterns/FavoriteColumn.d.ts.map +1 -1
- package/dist/v2/patterns/FavoriteColumn.js +32 -80
- package/dist/v2/patterns/FavoriteColumn.js.map +1 -1
- package/dist/v2/patterns/FavoritesFilter.js +36 -44
- package/dist/v2/patterns/FavoritesFilter.js.map +1 -1
- package/dist/v2/patterns/FilterTabBar.d.ts +28 -0
- package/dist/v2/patterns/FilterTabBar.d.ts.map +1 -0
- package/dist/v2/patterns/FilterTabBar.js +120 -0
- package/dist/v2/patterns/FilterTabBar.js.map +1 -0
- package/dist/v2/patterns/FormErrorSummary.js +20 -23
- package/dist/v2/patterns/FormErrorSummary.js.map +1 -1
- package/dist/v2/patterns/FormPageShell.js +53 -50
- package/dist/v2/patterns/FormPageShell.js.map +1 -1
- package/dist/v2/patterns/FormSection.d.ts +8 -3
- package/dist/v2/patterns/FormSection.d.ts.map +1 -1
- package/dist/v2/patterns/FormSection.js +44 -51
- package/dist/v2/patterns/FormSection.js.map +1 -1
- package/dist/v2/patterns/FormikCheckbox.d.ts +77 -0
- package/dist/v2/patterns/FormikCheckbox.d.ts.map +1 -0
- package/dist/v2/patterns/FormikCheckbox.js +138 -0
- package/dist/v2/patterns/FormikCheckbox.js.map +1 -0
- package/dist/v2/patterns/FormikCheckboxGroup.d.ts +17 -1
- package/dist/v2/patterns/FormikCheckboxGroup.d.ts.map +1 -1
- package/dist/v2/patterns/FormikCheckboxGroup.js +62 -65
- package/dist/v2/patterns/FormikCheckboxGroup.js.map +1 -1
- package/dist/v2/patterns/FormikCombobox.d.ts +7 -1
- package/dist/v2/patterns/FormikCombobox.d.ts.map +1 -1
- package/dist/v2/patterns/FormikCombobox.js +55 -69
- package/dist/v2/patterns/FormikCombobox.js.map +1 -1
- package/dist/v2/patterns/FormikDatePicker.d.ts +13 -1
- package/dist/v2/patterns/FormikDatePicker.d.ts.map +1 -1
- package/dist/v2/patterns/FormikDatePicker.js +59 -106
- package/dist/v2/patterns/FormikDatePicker.js.map +1 -1
- package/dist/v2/patterns/FormikDateTimePicker.d.ts +111 -0
- package/dist/v2/patterns/FormikDateTimePicker.d.ts.map +1 -0
- package/dist/v2/patterns/FormikDateTimePicker.js +144 -0
- package/dist/v2/patterns/FormikDateTimePicker.js.map +1 -0
- package/dist/v2/patterns/FormikErrorFocus.js +25 -26
- package/dist/v2/patterns/FormikErrorFocus.js.map +1 -1
- package/dist/v2/patterns/FormikErrorSummary.d.ts +74 -0
- package/dist/v2/patterns/FormikErrorSummary.d.ts.map +1 -0
- package/dist/v2/patterns/FormikErrorSummary.js +97 -0
- package/dist/v2/patterns/FormikErrorSummary.js.map +1 -0
- package/dist/v2/patterns/FormikFile.d.ts +14 -1
- package/dist/v2/patterns/FormikFile.d.ts.map +1 -1
- package/dist/v2/patterns/FormikFile.js +99 -83
- package/dist/v2/patterns/FormikFile.js.map +1 -1
- package/dist/v2/patterns/FormikInput.d.ts +11 -1
- package/dist/v2/patterns/FormikInput.d.ts.map +1 -1
- package/dist/v2/patterns/FormikInput.js +45 -55
- package/dist/v2/patterns/FormikInput.js.map +1 -1
- package/dist/v2/patterns/FormikRadioGroup.d.ts +80 -0
- package/dist/v2/patterns/FormikRadioGroup.d.ts.map +1 -0
- package/dist/v2/patterns/FormikRadioGroup.js +137 -0
- package/dist/v2/patterns/FormikRadioGroup.js.map +1 -0
- package/dist/v2/patterns/FormikReferentielField.d.ts +12 -1
- package/dist/v2/patterns/FormikReferentielField.d.ts.map +1 -1
- package/dist/v2/patterns/FormikReferentielField.js +54 -64
- package/dist/v2/patterns/FormikReferentielField.js.map +1 -1
- package/dist/v2/patterns/FormikSelect.d.ts +9 -1
- package/dist/v2/patterns/FormikSelect.d.ts.map +1 -1
- package/dist/v2/patterns/FormikSelect.js +70 -89
- package/dist/v2/patterns/FormikSelect.js.map +1 -1
- package/dist/v2/patterns/FormikTextarea.d.ts +9 -1
- package/dist/v2/patterns/FormikTextarea.d.ts.map +1 -1
- package/dist/v2/patterns/FormikTextarea.js +35 -48
- package/dist/v2/patterns/FormikTextarea.js.map +1 -1
- package/dist/v2/patterns/KeyboardShortcutsHelp.d.ts +14 -1
- package/dist/v2/patterns/KeyboardShortcutsHelp.d.ts.map +1 -1
- package/dist/v2/patterns/KeyboardShortcutsHelp.js +71 -74
- package/dist/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
- package/dist/v2/patterns/NetworkErrorBanner.js +13 -16
- package/dist/v2/patterns/NetworkErrorBanner.js.map +1 -1
- package/dist/v2/patterns/PageContent.js +17 -20
- package/dist/v2/patterns/PageContent.js.map +1 -1
- package/dist/v2/patterns/PreviewDrawer.d.ts +49 -0
- package/dist/v2/patterns/PreviewDrawer.d.ts.map +1 -0
- package/dist/v2/patterns/PreviewDrawer.js +159 -0
- package/dist/v2/patterns/PreviewDrawer.js.map +1 -0
- package/dist/v2/patterns/ReferentielField.d.ts +86 -2
- package/dist/v2/patterns/ReferentielField.d.ts.map +1 -1
- package/dist/v2/patterns/ReferentielField.js +347 -327
- package/dist/v2/patterns/ReferentielField.js.map +1 -1
- package/dist/v2/patterns/RowFavoriteToggle.d.ts +98 -0
- package/dist/v2/patterns/RowFavoriteToggle.d.ts.map +1 -0
- package/dist/v2/patterns/RowFavoriteToggle.js +135 -0
- package/dist/v2/patterns/RowFavoriteToggle.js.map +1 -0
- package/dist/v2/patterns/SaveFilterDialog.js +50 -77
- package/dist/v2/patterns/SaveFilterDialog.js.map +1 -1
- package/dist/v2/patterns/SavedFiltersMenu.js +89 -107
- package/dist/v2/patterns/SavedFiltersMenu.js.map +1 -1
- package/dist/v2/patterns/SkeletonPageShell.js +122 -143
- package/dist/v2/patterns/SkeletonPageShell.js.map +1 -1
- package/dist/v2/patterns/SortableHeader.js +35 -57
- package/dist/v2/patterns/SortableHeader.js.map +1 -1
- package/dist/v2/patterns/Tour.js +121 -142
- package/dist/v2/patterns/Tour.js.map +1 -1
- package/dist/v2/patterns/_dataGridShared.d.ts.map +1 -1
- package/dist/v2/patterns/_dataGridShared.js +131 -147
- package/dist/v2/patterns/_dataGridShared.js.map +1 -1
- package/dist/v2/patterns/_pickerSerialisation.d.ts +44 -0
- package/dist/v2/patterns/_pickerSerialisation.d.ts.map +1 -0
- package/dist/v2/patterns/_pickerSerialisation.js +80 -0
- package/dist/v2/patterns/_pickerSerialisation.js.map +1 -0
- package/dist/v2/patterns/_sort.js +17 -33
- package/dist/v2/patterns/_sort.js.map +1 -1
- package/dist/v2/patterns/_useColumnReorder.js +124 -163
- package/dist/v2/patterns/_useColumnReorder.js.map +1 -1
- package/dist/v2/patterns/_useColumnResize.js +80 -99
- package/dist/v2/patterns/_useColumnResize.js.map +1 -1
- package/dist/v2/patterns/filterCriteria.d.ts +78 -0
- package/dist/v2/patterns/filterCriteria.d.ts.map +1 -0
- package/dist/v2/patterns/filterCriteria.js +110 -0
- package/dist/v2/patterns/filterCriteria.js.map +1 -0
- package/dist/v2/patterns/index.d.ts +247 -0
- package/dist/v2/patterns/index.d.ts.map +1 -1
- package/dist/v2/patterns/index.js +182 -70
- package/dist/v2/patterns/index.js.map +1 -1
- package/dist/v2/patterns/rowActions.d.ts +150 -0
- package/dist/v2/patterns/rowActions.d.ts.map +1 -0
- package/dist/v2/patterns/rowActions.js +232 -0
- package/dist/v2/patterns/rowActions.js.map +1 -0
- package/dist/v2/personalization/PersonalizationProvider.d.ts.map +1 -1
- package/dist/v2/personalization/PersonalizationProvider.js +57 -53
- package/dist/v2/personalization/PersonalizationProvider.js.map +1 -1
- package/dist/v2/personalization/adapters/_storageKey.js +5 -5
- package/dist/v2/personalization/adapters/_storageKey.js.map +1 -1
- package/dist/v2/personalization/adapters/createLocalStorageAdapter.js +25 -24
- package/dist/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
- package/dist/v2/personalization/adapters/createMemoryAdapter.js +14 -14
- package/dist/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
- package/dist/v2/personalization/adapters/index.js +5 -5
- package/dist/v2/personalization/adapters/index.js.map +1 -1
- package/dist/v2/personalization/capabilities/favorites.js +39 -62
- package/dist/v2/personalization/capabilities/favorites.js.map +1 -1
- package/dist/v2/personalization/capabilities/favoritesView.js +25 -37
- package/dist/v2/personalization/capabilities/favoritesView.js.map +1 -1
- package/dist/v2/personalization/capabilities/gridPreferences.d.ts +100 -0
- package/dist/v2/personalization/capabilities/gridPreferences.d.ts.map +1 -0
- package/dist/v2/personalization/capabilities/gridPreferences.js +210 -0
- package/dist/v2/personalization/capabilities/gridPreferences.js.map +1 -0
- package/dist/v2/personalization/capabilities/index.d.ts +6 -0
- package/dist/v2/personalization/capabilities/index.d.ts.map +1 -1
- package/dist/v2/personalization/capabilities/index.js +23 -10
- package/dist/v2/personalization/capabilities/index.js.map +1 -1
- package/dist/v2/personalization/capabilities/reviveSavedCriteria.d.ts +88 -0
- package/dist/v2/personalization/capabilities/reviveSavedCriteria.d.ts.map +1 -0
- package/dist/v2/personalization/capabilities/reviveSavedCriteria.js +126 -0
- package/dist/v2/personalization/capabilities/reviveSavedCriteria.js.map +1 -0
- package/dist/v2/personalization/capabilities/savedFilters.js +93 -100
- package/dist/v2/personalization/capabilities/savedFilters.js.map +1 -1
- package/dist/v2/personalization/createPersonalizationStore.d.ts.map +1 -1
- package/dist/v2/personalization/createPersonalizationStore.js +81 -182
- package/dist/v2/personalization/createPersonalizationStore.js.map +1 -1
- package/dist/v2/personalization/index.d.ts +34 -0
- package/dist/v2/personalization/index.d.ts.map +1 -1
- package/dist/v2/personalization/index.js +41 -21
- package/dist/v2/personalization/index.js.map +1 -1
- package/dist/v2/personalization/personalizationContext.js +10 -12
- package/dist/v2/personalization/personalizationContext.js.map +1 -1
- package/dist/v2/personalization/schema.js +8 -9
- package/dist/v2/personalization/schema.js.map +1 -1
- package/dist/v2/referentiel/ReferentielProvider.js +31 -45
- package/dist/v2/referentiel/ReferentielProvider.js.map +1 -1
- package/dist/v2/referentiel/index.js +11 -13
- package/dist/v2/referentiel/index.js.map +1 -1
- package/dist/v2/referentiel/types.d.ts +105 -0
- package/dist/v2/referentiel/types.d.ts.map +1 -0
- package/dist/v2/referentiel/types.js +6 -0
- package/dist/v2/referentiel/types.js.map +1 -0
- package/dist/v2/referentiel/useReferentielClient.js +13 -16
- package/dist/v2/referentiel/useReferentielClient.js.map +1 -1
- package/dist/v2/referentiel/useReferentielOptions.d.ts +7 -17
- package/dist/v2/referentiel/useReferentielOptions.d.ts.map +1 -1
- package/dist/v2/referentiel/useReferentielOptions.js +63 -120
- package/dist/v2/referentiel/useReferentielOptions.js.map +1 -1
- package/dist/v2/referentiel/useReferentielSearch.d.ts +7 -48
- package/dist/v2/referentiel/useReferentielSearch.d.ts.map +1 -1
- package/dist/v2/referentiel/useReferentielSearch.js +40 -95
- package/dist/v2/referentiel/useReferentielSearch.js.map +1 -1
- package/dist/v2/theme/_brand.js +12 -26
- package/dist/v2/theme/_brand.js.map +1 -1
- package/dist/v2/theme/_brandSecondary.js +12 -26
- package/dist/v2/theme/_brandSecondary.js.map +1 -1
- package/dist/v2/theme/createPortnetTheme.js +41 -49
- package/dist/v2/theme/createPortnetTheme.js.map +1 -1
- package/dist/v2/theme/cssVariables.d.ts +3 -3
- package/dist/v2/theme/cssVariables.d.ts.map +1 -1
- package/dist/v2/theme/cssVariables.js +65 -70
- package/dist/v2/theme/cssVariables.js.map +1 -1
- package/dist/v2/theme/index.js +10 -10
- package/dist/v2/theme/index.js.map +1 -1
- package/dist/v2/tokens/breakpoints.js +16 -16
- package/dist/v2/tokens/breakpoints.js.map +1 -1
- package/dist/v2/tokens/chart.d.ts +103 -0
- package/dist/v2/tokens/chart.d.ts.map +1 -0
- package/dist/v2/tokens/chart.js +270 -0
- package/dist/v2/tokens/chart.js.map +1 -0
- package/dist/v2/tokens/colors.js +24 -24
- package/dist/v2/tokens/colors.js.map +1 -1
- package/dist/v2/tokens/density.d.ts +104 -0
- package/dist/v2/tokens/density.d.ts.map +1 -1
- package/dist/v2/tokens/density.js +67 -12
- package/dist/v2/tokens/density.js.map +1 -1
- package/dist/v2/tokens/index.d.ts +50 -1
- package/dist/v2/tokens/index.d.ts.map +1 -1
- package/dist/v2/tokens/index.js +116 -68
- package/dist/v2/tokens/index.js.map +1 -1
- package/dist/v2/tokens/motion.js +16 -22
- package/dist/v2/tokens/motion.js.map +1 -1
- package/dist/v2/tokens/radius.js +3 -3
- package/dist/v2/tokens/radius.js.map +1 -1
- package/dist/v2/tokens/shadows.js +8 -8
- package/dist/v2/tokens/shadows.js.map +1 -1
- package/dist/v2/tokens/spacing.js +4 -4
- package/dist/v2/tokens/spacing.js.map +1 -1
- package/dist/v2/tokens/state.js +3 -3
- package/dist/v2/tokens/state.js.map +1 -1
- package/dist/v2/tokens/statusPalette.js +21 -23
- package/dist/v2/tokens/statusPalette.js.map +1 -1
- package/dist/v2/tokens/tokens.json +6 -1
- package/dist/v2/tokens/typography.js +15 -15
- package/dist/v2/tokens/typography.js.map +1 -1
- package/dist/v2/tokens/zIndex.js +3 -3
- package/dist/v2/tokens/zIndex.js.map +1 -1
- package/dist/v2/types/datagrid.d.ts +9 -1
- package/dist/v2/types/datagrid.d.ts.map +1 -1
- package/dist/v2/types/datagrid.js.map +1 -1
- package/dist/v2/types/index.js +2 -2
- package/dist/v2/types/index.js.map +1 -1
- package/dist/v2/utils/apiError.js +16 -37
- package/dist/v2/utils/apiError.js.map +1 -1
- package/dist/v2/utils/contrast.js +31 -32
- package/dist/v2/utils/contrast.js.map +1 -1
- package/dist/v2/utils/cx.js +7 -27
- package/dist/v2/utils/cx.js.map +1 -1
- package/dist/v2/utils/fileDownload.js +25 -28
- package/dist/v2/utils/fileDownload.js.map +1 -1
- package/dist/v2/utils/fileValidation.d.ts +116 -0
- package/dist/v2/utils/fileValidation.d.ts.map +1 -0
- package/dist/v2/utils/fileValidation.js +220 -0
- package/dist/v2/utils/fileValidation.js.map +1 -0
- package/dist/v2/utils/fmtDate.d.ts +103 -0
- package/dist/v2/utils/fmtDate.d.ts.map +1 -0
- package/dist/v2/utils/fmtDate.js +119 -0
- package/dist/v2/utils/fmtDate.js.map +1 -0
- package/dist/v2/utils/fmtMoney.d.ts +3 -3
- package/dist/v2/utils/fmtMoney.d.ts.map +1 -1
- package/dist/v2/utils/fmtMoney.js +9 -11
- package/dist/v2/utils/fmtMoney.js.map +1 -1
- package/dist/v2/utils/formikErrors.d.ts +67 -0
- package/dist/v2/utils/formikErrors.d.ts.map +1 -0
- package/dist/v2/utils/formikErrors.js +85 -0
- package/dist/v2/utils/formikErrors.js.map +1 -0
- package/dist/v2/utils/index.d.ts +5 -0
- package/dist/v2/utils/index.d.ts.map +1 -1
- package/dist/v2/utils/index.js +67 -18
- package/dist/v2/utils/index.js.map +1 -1
- package/dist/v2/utils/mergeLabels.js +9 -14
- package/dist/v2/utils/mergeLabels.js.map +1 -1
- package/dist/v2/utils/networkStatus.js +14 -14
- package/dist/v2/utils/networkStatus.js.map +1 -1
- package/package.json +26 -9
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
2
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
3
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
4
|
-
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
5
|
-
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
6
|
-
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
7
1
|
import { useFormikContext } from "formik";
|
|
8
2
|
import useFocusFirstError from "../hooks/useFocusFirstError";
|
|
9
3
|
|
|
@@ -45,12 +39,11 @@ import useFocusFirstError from "../hooks/useFocusFirstError";
|
|
|
45
39
|
* rather than a Formik submit, so there is no submitCount to react to.
|
|
46
40
|
*/
|
|
47
41
|
|
|
48
|
-
function FormikErrorFocus(
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
enabled = _ref$enabled === void 0 ? true : _ref$enabled;
|
|
42
|
+
function FormikErrorFocus({
|
|
43
|
+
order,
|
|
44
|
+
scroll = true,
|
|
45
|
+
enabled = true
|
|
46
|
+
}) {
|
|
54
47
|
/*
|
|
55
48
|
* Record<string, unknown> rather than the host's own values type, and
|
|
56
49
|
* rather than a cast. FormikErrors<Record<string, unknown>> resolves to
|
|
@@ -60,17 +53,23 @@ function FormikErrorFocus(_ref) {
|
|
|
60
53
|
* parameter against the provider, so this stays valid whatever the form's
|
|
61
54
|
* value shape is.
|
|
62
55
|
*/
|
|
63
|
-
|
|
64
|
-
errors
|
|
65
|
-
submitCount
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
56
|
+
const {
|
|
57
|
+
errors,
|
|
58
|
+
submitCount
|
|
59
|
+
} = useFormikContext();
|
|
60
|
+
useFocusFirstError({
|
|
61
|
+
errors,
|
|
62
|
+
submitCount,
|
|
63
|
+
scroll,
|
|
64
|
+
enabled,
|
|
65
|
+
/* Conditional spread: `order` is optional here and declared
|
|
66
|
+
`readonly string[] | undefined` on the hook, and the library compiles
|
|
67
|
+
under exactOptionalPropertyTypes, which rejects an explicitly-passed
|
|
68
|
+
undefined. */
|
|
69
|
+
...(order !== undefined ? {
|
|
70
|
+
order
|
|
71
|
+
} : {})
|
|
72
|
+
});
|
|
74
73
|
return null;
|
|
75
74
|
}
|
|
76
75
|
export default FormikErrorFocus;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormikErrorFocus.js","names":["useFormikContext","useFocusFirstError","FormikErrorFocus","
|
|
1
|
+
{"version":3,"file":"FormikErrorFocus.js","names":["useFormikContext","useFocusFirstError","FormikErrorFocus","order","scroll","enabled","errors","submitCount","undefined"],"sources":["../../../../src/lib/v2/patterns/FormikErrorFocus.tsx"],"sourcesContent":["import { useFormikContext } from \"formik\";\r\nimport useFocusFirstError from \"../hooks/useFocusFirstError\";\r\n\r\n/**\r\n * FormikErrorFocus — Portnet UI v2 (pattern)\r\n *\r\n * Charter §05.3 R-F.3 / §04.1 R-FV.3. Renders NOTHING; it exists purely to\r\n * move focus to the first field in error after a failed submit.\r\n *\r\n * The companion to FormErrorSummary: that component makes the errors\r\n * visible and reachable by click, this one puts the caret in the first of\r\n * them. R-FV.2 and R-FV.3 are separate MUST rules and a form needs both.\r\n *\r\n * <Formik initialValues={…} validationSchema={…} onSubmit={…}>\r\n * <Form>\r\n * <FormikErrorFocus order={[\"numeroFacture\", \"fournisseur\", \"dateFacture\"]} />\r\n * <FormikInput name=\"numeroFacture\" label=\"N° de la facture\" required />\r\n * <FormikInput name=\"fournisseur\" label=\"Fournisseur\" required />\r\n * <FormikDatePicker name=\"dateFacture\" label=\"Date de la facture\" required />\r\n * </Form>\r\n * </Formik>\r\n *\r\n * Placement inside the form is free — it renders null, so it has no layout\r\n * or tab-order effect. It MUST be a descendant of <Formik>, since it reads\r\n * the context.\r\n *\r\n * ── WHY A COMPONENT AND NOT JUST THE HOOK ───────────────────────────\r\n *\r\n * The prevailing Formik shape in the modules is `<Formik><Form>…</Form>\r\n * </Formik>` with STATIC children. The hosting component's body is outside\r\n * the provider, so useFormikContext cannot be called there; and passing\r\n * innerRef does not help, because a ref mutation does not re-render the\r\n * holder when `errors` changes. A null-rendering descendant is the only\r\n * place the context is both available and reactive.\r\n *\r\n * Where a component already sits inside the provider — a form section using\r\n * useFormikContext, like the mjcc-fe publication and facture blocs — call\r\n * `focusFieldByName` directly instead. Those guards run on a button click\r\n * rather than a Formik submit, so there is no submitCount to react to.\r\n */\r\n\r\nexport interface FormikErrorFocusProps {\r\n /**\r\n * Field names in RENDERED order, top to bottom.\r\n *\r\n * SUPPLY THIS. The fallback is `Object.keys(errors)` — the order the\r\n * validator wrote its keys, which bears no relation to the layout, so\r\n * \"first field in error\" can resolve to the last field on screen.\r\n */\r\n order?: readonly string[] | undefined;\r\n /** Scroll the field into view before focusing. @default true */\r\n scroll?: boolean | undefined;\r\n /**\r\n * Set false to suspend the behaviour — e.g. a read-only mode where the\r\n * submit path is closed and moving focus would be noise.\r\n *\r\n * @default true\r\n */\r\n enabled?: boolean | undefined;\r\n}\r\n\r\nfunction FormikErrorFocus({\r\n order,\r\n scroll = true,\r\n enabled = true,\r\n}: FormikErrorFocusProps) {\r\n /*\r\n * Record<string, unknown> rather than the host's own values type, and\r\n * rather than a cast. FormikErrors<Record<string, unknown>> resolves to\r\n * an index-signature map of optional strings, which is assignable to the\r\n * hook's Readonly<Record<string, unknown>> — so the two contracts meet\r\n * without an assertion. useFormikContext does not check its type\r\n * parameter against the provider, so this stays valid whatever the form's\r\n * value shape is.\r\n */\r\n const { errors, submitCount } = useFormikContext<Record<string, unknown>>();\r\n\r\n useFocusFirstError({\r\n errors,\r\n submitCount,\r\n scroll,\r\n enabled,\r\n /* Conditional spread: `order` is optional here and declared\r\n `readonly string[] | undefined` on the hook, and the library compiles\r\n under exactOptionalPropertyTypes, which rejects an explicitly-passed\r\n undefined. */\r\n ...(order !== undefined ? { order } : {}),\r\n });\r\n\r\n return null;\r\n}\r\n\r\nexport default FormikErrorFocus;\r\n"],"mappings":"AAAA,SAASA,gBAAgB,QAAQ,QAAQ;AACzC,OAAOC,kBAAkB,MAAM,6BAA6B;;AAE5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAsBA,SAASC,gBAAgBA,CAAC;EACxBC,KAAK;EACLC,MAAM,GAAG,IAAI;EACbC,OAAO,GAAG;AACW,CAAC,EAAE;EACxB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAM;IAAEC,MAAM;IAAEC;EAAY,CAAC,GAAGP,gBAAgB,CAA0B,CAAC;EAE3EC,kBAAkB,CAAC;IACjBK,MAAM;IACNC,WAAW;IACXH,MAAM;IACNC,OAAO;IACP;AACJ;AACA;AACA;IACI,IAAIF,KAAK,KAAKK,SAAS,GAAG;MAAEL;IAAM,CAAC,GAAG,CAAC,CAAC;EAC1C,CAAC,CAAC;EAEF,OAAO,IAAI;AACb;AAEA,eAAeD,gBAAgB","ignoreList":[]}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { useFormikContext } from "formik";
|
|
3
|
+
import FormErrorSummary from "./FormErrorSummary";
|
|
4
|
+
import { flattenFormikErrors } from "../utils/formikErrors";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* FormikErrorSummary — Portnet UI v2 (pattern)
|
|
8
|
+
*
|
|
9
|
+
* Charter §04.1 R-FV.2 / §05 R-4.2 MUST — "Submit échoué → bandeau de synthèse
|
|
10
|
+
* en haut du formulaire". The Formik bridge for `FormErrorSummary`, and the
|
|
11
|
+
* companion of `FormikErrorFocus`: that one puts the caret in the first field
|
|
12
|
+
* in error, this one lists them all with jump-links.
|
|
13
|
+
*
|
|
14
|
+
* <Formik …>
|
|
15
|
+
* <Form>
|
|
16
|
+
* <FormikErrorSummary
|
|
17
|
+
* labelByName={{ numeroFormule: "N° de formule", montant: "Montant" }}
|
|
18
|
+
* onItemClick={focusFieldByName}
|
|
19
|
+
* />
|
|
20
|
+
* …fields…
|
|
21
|
+
* </Form>
|
|
22
|
+
* </Formik>
|
|
23
|
+
*
|
|
24
|
+
* ── WHY THIS EXISTS (ms-ti-fe, Area 11) ─────────────────────────────
|
|
25
|
+
*
|
|
26
|
+
* The library owned all three parts of the failed-submit recipe and no way to
|
|
27
|
+
* assemble them inside the prevailing form shape:
|
|
28
|
+
*
|
|
29
|
+
* · `FormErrorSummary` — renders the banner, takes a flat list;
|
|
30
|
+
* · `flattenFormikErrors`— produces that list from Formik's error tree (G-38);
|
|
31
|
+
* · `focusFieldByName` — resolves an item's name to a control (R-FV.3).
|
|
32
|
+
*
|
|
33
|
+
* Reaching `errors` and `submitCount` requires the Formik CONTEXT, and modules
|
|
34
|
+
* overwhelmingly write `<Formik><Form>…</Form></Formik>` with STATIC children:
|
|
35
|
+
* the hosting component's body sits OUTSIDE the provider, so it cannot call
|
|
36
|
+
* `useFormikContext`, and `innerRef` does not help — mutating a ref does not
|
|
37
|
+
* re-render the holder when `errors` changes. Each host therefore had to either
|
|
38
|
+
* convert its form to a render-prop purely to reach the errors, or write a
|
|
39
|
+
* local null-rendering context reader.
|
|
40
|
+
*
|
|
41
|
+
* ms-ti-fe has ELEVEN Formik forms. ONE had the banner; wiring the other ten
|
|
42
|
+
* meant ten copies of that wrapper. `FormikErrorFocus` exists for precisely
|
|
43
|
+
* this reason on the sibling rule, which is why field adoption of the two
|
|
44
|
+
* MUSTs diverged so sharply — 1 of 11 for R-FV.2 against 0 of 11 for R-FV.3,
|
|
45
|
+
* the one with a bridge being the one nobody could apply without boilerplate.
|
|
46
|
+
*
|
|
47
|
+
* GOVERNANCE NOTE. This is a BRIDGE over an already-certified component — the
|
|
48
|
+
* thirteenth, after FormikInput / Select / Combobox / DatePicker /
|
|
49
|
+
* DateTimePicker / Textarea / File / Checkbox / CheckboxGroup / RadioGroup /
|
|
50
|
+
* ReferentielField / ErrorFocus. It renders no markup of its own, introduces no
|
|
51
|
+
* design decision, and adds no token. If the DS team holds that even a bridge
|
|
52
|
+
* takes the §10.2 component-proposal path, treat this file as the proposal.
|
|
53
|
+
*/
|
|
54
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
55
|
+
function FormikErrorSummary({
|
|
56
|
+
labelByName,
|
|
57
|
+
onItemClick,
|
|
58
|
+
title,
|
|
59
|
+
afterSubmitOnly = true
|
|
60
|
+
}) {
|
|
61
|
+
const {
|
|
62
|
+
errors,
|
|
63
|
+
submitCount
|
|
64
|
+
} = useFormikContext();
|
|
65
|
+
|
|
66
|
+
/* Recomputed only when the tree or the attempt count changes: the recursion
|
|
67
|
+
* walks every leaf, and a form rejected on submit re-renders on every
|
|
68
|
+
* keystroke that follows while the user fixes it. */
|
|
69
|
+
const flat = React.useMemo(() => flattenFormikErrors(errors), [errors]);
|
|
70
|
+
if (afterSubmitOnly && submitCount === 0) return null;
|
|
71
|
+
|
|
72
|
+
/* `FormErrorSummary` already returns null on an empty list, so mounting this
|
|
73
|
+
* unconditionally is safe and keeps the banner's appearance/disappearance in
|
|
74
|
+
* one place rather than duplicating the guard at every call site. */
|
|
75
|
+
return /*#__PURE__*/_jsx(FormErrorSummary, {
|
|
76
|
+
errors: flat,
|
|
77
|
+
...(labelByName !== undefined ? {
|
|
78
|
+
labelByName
|
|
79
|
+
} : {}),
|
|
80
|
+
...(onItemClick !== undefined ? {
|
|
81
|
+
onItemClick
|
|
82
|
+
} : {}),
|
|
83
|
+
...(title !== undefined ? {
|
|
84
|
+
title
|
|
85
|
+
} : {})
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
export default FormikErrorSummary;
|
|
89
|
+
//# sourceMappingURL=FormikErrorSummary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormikErrorSummary.js","names":["React","useFormikContext","FormErrorSummary","flattenFormikErrors","jsx","_jsx","FormikErrorSummary","labelByName","onItemClick","title","afterSubmitOnly","errors","submitCount","flat","useMemo","undefined"],"sources":["../../../../src/lib/v2/patterns/FormikErrorSummary.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { useFormikContext } from \"formik\";\r\nimport FormErrorSummary from \"./FormErrorSummary\";\r\nimport { flattenFormikErrors } from \"../utils/formikErrors\";\r\n\r\n/**\r\n * FormikErrorSummary — Portnet UI v2 (pattern)\r\n *\r\n * Charter §04.1 R-FV.2 / §05 R-4.2 MUST — \"Submit échoué → bandeau de synthèse\r\n * en haut du formulaire\". The Formik bridge for `FormErrorSummary`, and the\r\n * companion of `FormikErrorFocus`: that one puts the caret in the first field\r\n * in error, this one lists them all with jump-links.\r\n *\r\n * <Formik …>\r\n * <Form>\r\n * <FormikErrorSummary\r\n * labelByName={{ numeroFormule: \"N° de formule\", montant: \"Montant\" }}\r\n * onItemClick={focusFieldByName}\r\n * />\r\n * …fields…\r\n * </Form>\r\n * </Formik>\r\n *\r\n * ── WHY THIS EXISTS (ms-ti-fe, Area 11) ─────────────────────────────\r\n *\r\n * The library owned all three parts of the failed-submit recipe and no way to\r\n * assemble them inside the prevailing form shape:\r\n *\r\n * · `FormErrorSummary` — renders the banner, takes a flat list;\r\n * · `flattenFormikErrors`— produces that list from Formik's error tree (G-38);\r\n * · `focusFieldByName` — resolves an item's name to a control (R-FV.3).\r\n *\r\n * Reaching `errors` and `submitCount` requires the Formik CONTEXT, and modules\r\n * overwhelmingly write `<Formik><Form>…</Form></Formik>` with STATIC children:\r\n * the hosting component's body sits OUTSIDE the provider, so it cannot call\r\n * `useFormikContext`, and `innerRef` does not help — mutating a ref does not\r\n * re-render the holder when `errors` changes. Each host therefore had to either\r\n * convert its form to a render-prop purely to reach the errors, or write a\r\n * local null-rendering context reader.\r\n *\r\n * ms-ti-fe has ELEVEN Formik forms. ONE had the banner; wiring the other ten\r\n * meant ten copies of that wrapper. `FormikErrorFocus` exists for precisely\r\n * this reason on the sibling rule, which is why field adoption of the two\r\n * MUSTs diverged so sharply — 1 of 11 for R-FV.2 against 0 of 11 for R-FV.3,\r\n * the one with a bridge being the one nobody could apply without boilerplate.\r\n *\r\n * GOVERNANCE NOTE. This is a BRIDGE over an already-certified component — the\r\n * thirteenth, after FormikInput / Select / Combobox / DatePicker /\r\n * DateTimePicker / Textarea / File / Checkbox / CheckboxGroup / RadioGroup /\r\n * ReferentielField / ErrorFocus. It renders no markup of its own, introduces no\r\n * design decision, and adds no token. If the DS team holds that even a bridge\r\n * takes the §10.2 component-proposal path, treat this file as the proposal.\r\n */\r\nexport interface FormikErrorSummaryProps {\r\n /**\r\n * Field name → human label. Without it the banner lists RAW field paths\r\n * (`donneesTI.categorieTitre`), which satisfies R-FV.2's letter and fails\r\n * R-4.4's intent (\"messages actionnables\"). Supply it.\r\n */\r\n labelByName?: Record<string, string> | undefined;\r\n /**\r\n * Jump-to-field behaviour. Pass the exported `focusFieldByName` for a\r\n * single-page form. Wrap it when the target may be on an unmounted wizard\r\n * step or inside a collapsed section, so the owner opens first —\r\n * `focusFieldByName` deliberately refuses a control with no client rects.\r\n */\r\n onItemClick?: ((name: string) => void) | undefined;\r\n title?: string | undefined;\r\n /**\r\n * Hold the banner back until the first submit attempt, so a pristine form is\r\n * not pre-scolded (R-I.4 — validate on blur, never on keystroke).\r\n * @default true\r\n */\r\n afterSubmitOnly?: boolean | undefined;\r\n}\r\n\r\nfunction FormikErrorSummary({\r\n labelByName,\r\n onItemClick,\r\n title,\r\n afterSubmitOnly = true,\r\n}: FormikErrorSummaryProps) {\r\n const { errors, submitCount } = useFormikContext<Record<string, unknown>>();\r\n\r\n /* Recomputed only when the tree or the attempt count changes: the recursion\r\n * walks every leaf, and a form rejected on submit re-renders on every\r\n * keystroke that follows while the user fixes it. */\r\n const flat = React.useMemo(() => flattenFormikErrors(errors), [errors]);\r\n\r\n if (afterSubmitOnly && submitCount === 0) return null;\r\n\r\n /* `FormErrorSummary` already returns null on an empty list, so mounting this\r\n * unconditionally is safe and keeps the banner's appearance/disappearance in\r\n * one place rather than duplicating the guard at every call site. */\r\n return (\r\n <FormErrorSummary\r\n errors={flat}\r\n {...(labelByName !== undefined ? { labelByName } : {})}\r\n {...(onItemClick !== undefined ? { onItemClick } : {})}\r\n {...(title !== undefined ? { title } : {})}\r\n />\r\n );\r\n}\r\n\r\nexport default FormikErrorSummary;\r\n"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,gBAAgB,QAAQ,QAAQ;AACzC,OAAOC,gBAAgB,MAAM,oBAAoB;AACjD,SAASC,mBAAmB,QAAQ,uBAAuB;;AAE3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA/CA,SAAAC,GAAA,IAAAC,IAAA;AAuEA,SAASC,kBAAkBA,CAAC;EAC1BC,WAAW;EACXC,WAAW;EACXC,KAAK;EACLC,eAAe,GAAG;AACK,CAAC,EAAE;EAC1B,MAAM;IAAEC,MAAM;IAAEC;EAAY,CAAC,GAAGX,gBAAgB,CAA0B,CAAC;;EAE3E;AACF;AACA;EACE,MAAMY,IAAI,GAAGb,KAAK,CAACc,OAAO,CAAC,MAAMX,mBAAmB,CAACQ,MAAM,CAAC,EAAE,CAACA,MAAM,CAAC,CAAC;EAEvE,IAAID,eAAe,IAAIE,WAAW,KAAK,CAAC,EAAE,OAAO,IAAI;;EAErD;AACF;AACA;EACE,oBACEP,IAAA,CAACH,gBAAgB;IACfS,MAAM,EAAEE,IAAK;IAAA,IACRN,WAAW,KAAKQ,SAAS,GAAG;MAAER;IAAY,CAAC,GAAG,CAAC,CAAC;IAAA,IAChDC,WAAW,KAAKO,SAAS,GAAG;MAAEP;IAAY,CAAC,GAAG,CAAC,CAAC;IAAA,IAChDC,KAAK,KAAKM,SAAS,GAAG;MAAEN;IAAM,CAAC,GAAG,CAAC,CAAC;EAAA,CAC1C,CAAC;AAEN;AAEA,eAAeH,kBAAkB","ignoreList":[]}
|
|
@@ -1,22 +1,3 @@
|
|
|
1
|
-
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
2
|
-
var _excluded = ["name", "label", "hint", "accept", "maxSize", "required", "disabled", "mode", "companionFields"];
|
|
3
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
4
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
5
|
-
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
6
|
-
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
7
|
-
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
8
|
-
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
9
|
-
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
10
|
-
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
11
|
-
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
12
|
-
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
13
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
14
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
15
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
16
|
-
function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) { ; } } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
|
|
17
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
18
|
-
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; }
|
|
19
|
-
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; }
|
|
20
1
|
/**
|
|
21
2
|
* FormikFile — bridge between Formik state and v2.Dropzone.
|
|
22
3
|
*
|
|
@@ -43,106 +24,141 @@ import { useField, useFormikContext } from "formik";
|
|
|
43
24
|
import Field from "../components/Field";
|
|
44
25
|
import Dropzone from "../components/Dropzone";
|
|
45
26
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
46
|
-
|
|
27
|
+
const DEFAULT_COMPANION_FIELDS = Object.freeze({
|
|
47
28
|
ext: "fileExtension",
|
|
48
29
|
size: "fileSize",
|
|
49
30
|
type: "fileType",
|
|
50
31
|
name: "nom"
|
|
51
32
|
});
|
|
52
33
|
|
|
53
|
-
/*
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
34
|
+
/* ── Surrogate file ids (defect D-2) ──────────────────────────────────
|
|
35
|
+
*
|
|
36
|
+
* A File carries no stable identifier, and this bridge previously used
|
|
37
|
+
* `file.name` as the Dropzone entry id — with `handleRemove` filtering the
|
|
38
|
+
* array by that same name. Two files called "facture.pdf" therefore shared a
|
|
39
|
+
* React key AND removing either one removed BOTH, silently.
|
|
40
|
+
*
|
|
41
|
+
* That is not an edge case: scans, exports and generated documents routinely
|
|
42
|
+
* arrive with generic names, so a user attaching two scans from different
|
|
43
|
+
* folders hits it immediately. A host could not work around it either, since
|
|
44
|
+
* the id was synthesised in here with nowhere to inject a key.
|
|
45
|
+
*
|
|
46
|
+
* A WeakMap keyed by the File OBJECT fixes all of it:
|
|
47
|
+
* - two files with the same name are different objects → different ids;
|
|
48
|
+
* - the same File across re-renders is the same object → the same id, so
|
|
49
|
+
* React keys stay stable and rows do not remount while uploading;
|
|
50
|
+
* - entries die with the File, so there is nothing to clean up.
|
|
51
|
+
*
|
|
52
|
+
* The id is opaque to Dropzone (it hands it straight back to onRemove) and is
|
|
53
|
+
* session-scoped — never persisted, never sent anywhere.
|
|
54
|
+
*/
|
|
55
|
+
const FILE_IDS = new WeakMap();
|
|
56
|
+
let fileIdSeq = 0;
|
|
57
|
+
const idFor = file => {
|
|
58
|
+
const existing = FILE_IDS.get(file);
|
|
59
|
+
if (existing !== undefined) return existing;
|
|
60
|
+
fileIdSeq += 1;
|
|
61
|
+
const id = `pui-file-${fileIdSeq}`;
|
|
62
|
+
FILE_IDS.set(file, id);
|
|
63
|
+
return id;
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
/* v2.Dropzone displays a row per entry in `value`. We synthesise the row
|
|
67
|
+
shape from the File held in Formik, with a surrogate id (see above). */
|
|
68
|
+
const toDropzoneShape = file => {
|
|
58
69
|
if (file == null || !(file instanceof File)) return null;
|
|
59
70
|
return {
|
|
60
|
-
id: file
|
|
71
|
+
id: idFor(file),
|
|
61
72
|
name: file.name,
|
|
62
73
|
size: file.size
|
|
63
74
|
};
|
|
64
75
|
};
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
var value = (isBulk ? (Array.isArray(field.value) ? field.value : []).map(toDropzoneShape) : field.value instanceof File ? [toDropzoneShape(field.value)] : []).filter(function (x) {
|
|
88
|
-
return x != null;
|
|
89
|
-
});
|
|
90
|
-
var writeCompanions = function writeCompanions(file) {
|
|
76
|
+
const FormikFile = ({
|
|
77
|
+
name,
|
|
78
|
+
label,
|
|
79
|
+
hint,
|
|
80
|
+
accept,
|
|
81
|
+
maxSize,
|
|
82
|
+
required,
|
|
83
|
+
disabled,
|
|
84
|
+
mode = "single",
|
|
85
|
+
companionFields = DEFAULT_COMPANION_FIELDS,
|
|
86
|
+
htmlFor,
|
|
87
|
+
...rest
|
|
88
|
+
}) => {
|
|
89
|
+
const [field, meta] = useField(name);
|
|
90
|
+
const {
|
|
91
|
+
setFieldValue,
|
|
92
|
+
setFieldTouched
|
|
93
|
+
} = useFormikContext();
|
|
94
|
+
const hasError = Boolean(meta.touched && meta.error);
|
|
95
|
+
const isBulk = mode === "bulk";
|
|
96
|
+
const value = (isBulk ? (Array.isArray(field.value) ? field.value : []).map(toDropzoneShape) : field.value instanceof File ? [toDropzoneShape(field.value)] : []).filter(x => x != null);
|
|
97
|
+
const writeCompanions = file => {
|
|
91
98
|
if (isBulk) return;
|
|
92
99
|
setFieldValue(companionFields.ext, file ? file.name.split(".").pop() : "");
|
|
93
100
|
setFieldValue(companionFields.size, file ? file.size : null);
|
|
94
101
|
setFieldValue(companionFields.type, file ? file.type : "");
|
|
95
102
|
setFieldValue(companionFields.name, file ? file.name : "");
|
|
96
103
|
};
|
|
97
|
-
|
|
104
|
+
const handleAdd = files => {
|
|
98
105
|
if (!files || files.length === 0) return;
|
|
99
106
|
if (isBulk) {
|
|
100
|
-
|
|
107
|
+
const merged = [...(Array.isArray(field.value) ? field.value : []), ...files];
|
|
101
108
|
setFieldValue(name, merged);
|
|
102
109
|
setFieldTouched(name, true, false);
|
|
103
110
|
} else {
|
|
104
|
-
|
|
111
|
+
const file = files[0];
|
|
105
112
|
setFieldValue(name, file);
|
|
106
|
-
writeCompanions(file
|
|
113
|
+
writeCompanions(file ?? null);
|
|
107
114
|
setFieldTouched(name, true, false);
|
|
108
115
|
}
|
|
109
116
|
};
|
|
110
117
|
|
|
111
|
-
/* Dropzone calls onRemove(id)
|
|
112
|
-
|
|
113
|
-
|
|
118
|
+
/* Dropzone calls onRemove(id) with the surrogate id issued above. In bulk
|
|
119
|
+
mode we resolve each entry through the same WeakMap so two files sharing
|
|
120
|
+
a name are distinguished; non-File entries are left untouched, preserving
|
|
121
|
+
the defensive tolerance for a malformed array. */
|
|
122
|
+
const handleRemove = id => {
|
|
114
123
|
if (isBulk) {
|
|
115
|
-
|
|
116
|
-
return f.name !== id;
|
|
117
|
-
});
|
|
124
|
+
const remaining = (Array.isArray(field.value) ? field.value : []).filter(f => !(f instanceof File) || idFor(f) !== id);
|
|
118
125
|
setFieldValue(name, remaining);
|
|
119
126
|
} else {
|
|
120
127
|
setFieldValue(name, null);
|
|
121
128
|
writeCompanions(null);
|
|
122
129
|
}
|
|
123
130
|
};
|
|
124
|
-
return /*#__PURE__*/_jsx(Field,
|
|
131
|
+
return /*#__PURE__*/_jsx(Field, {
|
|
125
132
|
label: label,
|
|
126
133
|
error: hasError ? meta.error : null
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
134
|
+
/* P-2 — a predictable id, so focusFieldByName can resolve [id=…] and
|
|
135
|
+
FormikErrorFocus can reach this field after a failed submit. Matches
|
|
136
|
+
FormikInput / FormikSelect / FormikCombobox. */,
|
|
137
|
+
htmlFor: htmlFor || name,
|
|
138
|
+
...(required !== undefined ? {
|
|
139
|
+
required
|
|
140
|
+
} : {}),
|
|
141
|
+
...(disabled !== undefined ? {
|
|
142
|
+
disabled
|
|
143
|
+
} : {}),
|
|
144
|
+
children: /*#__PURE__*/_jsx(Dropzone, {
|
|
133
145
|
multiple: isBulk,
|
|
134
146
|
value: value,
|
|
135
147
|
hint: hint,
|
|
136
148
|
onAdd: handleAdd,
|
|
137
|
-
onRemove: handleRemove
|
|
138
|
-
|
|
139
|
-
accept
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
149
|
+
onRemove: handleRemove,
|
|
150
|
+
...rest,
|
|
151
|
+
...(accept !== undefined ? {
|
|
152
|
+
accept
|
|
153
|
+
} : {}),
|
|
154
|
+
...(disabled !== undefined ? {
|
|
155
|
+
disabled
|
|
156
|
+
} : {}),
|
|
157
|
+
...(maxSize !== undefined ? {
|
|
158
|
+
maxSize
|
|
159
|
+
} : {})
|
|
160
|
+
})
|
|
161
|
+
});
|
|
146
162
|
};
|
|
147
163
|
export default FormikFile;
|
|
148
164
|
//# sourceMappingURL=FormikFile.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormikFile.js","names":["React","useField","useFormikContext","Field","Dropzone","jsx","_jsx","DEFAULT_COMPANION_FIELDS","Object","freeze","ext","size","type","name","toDropzoneShape","file","File","id","FormikFile","_ref","label","hint","accept","maxSize","required","disabled","_ref$mode","mode","_ref$companionFields","companionFields","rest","_objectWithoutProperties","_excluded","_useField","_useField2","_slicedToArray","field","meta","_useFormikContext","setFieldValue","setFieldTouched","hasError","Boolean","touched","error","isBulk","value","Array","isArray","map","filter","x","writeCompanions","split","pop","handleAdd","files","length","merged","concat","_toConsumableArray","handleRemove","remaining","f","_objectSpread","undefined","children","multiple","onAdd","onRemove"],"sources":["../../../../src/lib/v2/patterns/FormikFile.tsx"],"sourcesContent":["/**\r\n * FormikFile — bridge between Formik state and v2.Dropzone.\r\n *\r\n * Two modes:\r\n * - mode=\"single\" (default): File or null in Formik. Writes\r\n * companion metadata fields (extension/size/type/name) on\r\n * add; clears them on remove.\r\n * - mode=\"bulk\": File[] in Formik. No companion writes.\r\n *\r\n * Companion-field naming defaults to ms-ti-fe convention\r\n * (fileExtension / fileSize / fileType / nom). Override with\r\n * `companionFields` prop if your module differs.\r\n *\r\n * v2.Dropzone contract used:\r\n * - value: [{id, name, size}]\r\n * - onAdd(File[]): receives accepted files (already validated)\r\n * - onRemove(id): receives the id of the entry to remove\r\n *\r\n * Charter R-FU.*. Peer dep: formik >= 2.x.\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport { useField, useFormikContext } from \"formik\";\r\nimport Field from \"../components/Field\";\r\nimport Dropzone from \"../components/Dropzone\";\r\nimport type { DropzoneFile, DropzoneProps } from \"../components/Dropzone\";\r\n\r\nexport type FormikFileMode = \"single\" | \"bulk\";\r\n\r\nexport interface FormikFileCompanionFields {\r\n ext: string;\r\n size: string;\r\n type: string;\r\n name: string;\r\n}\r\n\r\nexport interface FormikFileProps\r\n extends Omit<\r\n DropzoneProps,\r\n \"value\" | \"onAdd\" | \"onRemove\" | \"multiple\" | \"accept\" | \"maxSize\" | \"hint\" | \"disabled\" | \"label\"\r\n > {\r\n name: string;\r\n label?: React.ReactNode | undefined;\r\n hint?: React.ReactNode | undefined;\r\n accept?: string | undefined;\r\n maxSize?: number | undefined;\r\n required?: boolean | undefined;\r\n disabled?: boolean | undefined;\r\n mode?: FormikFileMode | undefined;\r\n companionFields?: FormikFileCompanionFields | undefined;\r\n}\r\n\r\nconst DEFAULT_COMPANION_FIELDS: FormikFileCompanionFields = Object.freeze({\r\n ext: \"fileExtension\",\r\n size: \"fileSize\",\r\n type: \"fileType\",\r\n name: \"nom\",\r\n});\r\n\r\n/* v2.Dropzone displays a row per entry in `value`. We synthesise\r\n the row shape from the File object held in Formik. We use\r\n `file.name` as the id since File has no stable identifier of\r\n its own — Dropzone passes this id back to onRemove. */\r\nconst toDropzoneShape = (file: unknown): DropzoneFile | null => {\r\n if (file == null || !(file instanceof File)) return null;\r\n return { id: file.name, name: file.name, size: file.size };\r\n};\r\n\r\nconst FormikFile = ({\r\n name,\r\n label,\r\n hint,\r\n accept,\r\n maxSize,\r\n required,\r\n disabled,\r\n mode = \"single\",\r\n companionFields = DEFAULT_COMPANION_FIELDS,\r\n ...rest\r\n}: FormikFileProps) => {\r\n const [field, meta] = useField(name);\r\n const { setFieldValue, setFieldTouched } = useFormikContext();\r\n const hasError = Boolean(meta.touched && meta.error);\r\n\r\n const isBulk = mode === \"bulk\";\r\n\r\n const value: DropzoneFile[] = (\r\n isBulk\r\n ? (Array.isArray(field.value) ? field.value : []).map(toDropzoneShape)\r\n : field.value instanceof File\r\n ? [toDropzoneShape(field.value)]\r\n : []\r\n ).filter((x): x is DropzoneFile => x != null);\r\n\r\n const writeCompanions = (file: File | null) => {\r\n if (isBulk) return;\r\n setFieldValue(companionFields.ext, file ? file.name.split(\".\").pop() : \"\");\r\n setFieldValue(companionFields.size, file ? file.size : null);\r\n setFieldValue(companionFields.type, file ? file.type : \"\");\r\n setFieldValue(companionFields.name, file ? file.name : \"\");\r\n };\r\n\r\n const handleAdd = (files: File[]) => {\r\n if (!files || files.length === 0) return;\r\n if (isBulk) {\r\n const merged = [\r\n ...(Array.isArray(field.value) ? field.value : []),\r\n ...files,\r\n ];\r\n setFieldValue(name, merged);\r\n setFieldTouched(name, true, false);\r\n } else {\r\n const file = files[0];\r\n setFieldValue(name, file);\r\n writeCompanions(file ?? null);\r\n setFieldTouched(name, true, false);\r\n }\r\n };\r\n\r\n /* Dropzone calls onRemove(id). In single mode the id was the\r\n File's name; in bulk mode we filter by the same key. */\r\n const handleRemove = (id: string | number) => {\r\n if (isBulk) {\r\n const remaining = (Array.isArray(field.value) ? field.value : []).filter(\r\n (f) => f.name !== id\r\n );\r\n setFieldValue(name, remaining);\r\n } else {\r\n setFieldValue(name, null);\r\n writeCompanions(null);\r\n }\r\n };\r\n\r\n return (\r\n <Field\r\n label={label}\r\n error={hasError ? meta.error : null}\r\n {...(required !== undefined ? { required } : {})}\r\n {...(disabled !== undefined ? { disabled } : {})}\r\n >\r\n <Dropzone\r\n multiple={isBulk}\r\n value={value}\r\n hint={hint}\r\n onAdd={handleAdd}\r\n onRemove={handleRemove}\r\n {...rest}\r\n {...(accept !== undefined ? { accept } : {})}\r\n {...(disabled !== undefined ? { disabled } : {})}\r\n {...(maxSize !== undefined ? { maxSize } : {})}\r\n />\r\n </Field>\r\n );\r\n};\r\n\r\nexport default FormikFile;\r\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"FormikFile.js","names":["React","useField","useFormikContext","Field","Dropzone","jsx","_jsx","DEFAULT_COMPANION_FIELDS","Object","freeze","ext","size","type","name","FILE_IDS","WeakMap","fileIdSeq","idFor","file","existing","get","undefined","id","set","toDropzoneShape","File","FormikFile","label","hint","accept","maxSize","required","disabled","mode","companionFields","htmlFor","rest","field","meta","setFieldValue","setFieldTouched","hasError","Boolean","touched","error","isBulk","value","Array","isArray","map","filter","x","writeCompanions","split","pop","handleAdd","files","length","merged","handleRemove","remaining","f","children","multiple","onAdd","onRemove"],"sources":["../../../../src/lib/v2/patterns/FormikFile.tsx"],"sourcesContent":["/**\r\n * FormikFile — bridge between Formik state and v2.Dropzone.\r\n *\r\n * Two modes:\r\n * - mode=\"single\" (default): File or null in Formik. Writes\r\n * companion metadata fields (extension/size/type/name) on\r\n * add; clears them on remove.\r\n * - mode=\"bulk\": File[] in Formik. No companion writes.\r\n *\r\n * Companion-field naming defaults to ms-ti-fe convention\r\n * (fileExtension / fileSize / fileType / nom). Override with\r\n * `companionFields` prop if your module differs.\r\n *\r\n * v2.Dropzone contract used:\r\n * - value: [{id, name, size}]\r\n * - onAdd(File[]): receives accepted files (already validated)\r\n * - onRemove(id): receives the id of the entry to remove\r\n *\r\n * Charter R-FU.*. Peer dep: formik >= 2.x.\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport { useField, useFormikContext } from \"formik\";\r\nimport Field from \"../components/Field\";\r\nimport Dropzone from \"../components/Dropzone\";\r\nimport type { DropzoneFile, DropzoneProps } from \"../components/Dropzone\";\r\n\r\nexport type FormikFileMode = \"single\" | \"bulk\";\r\n\r\nexport interface FormikFileCompanionFields {\r\n ext: string;\r\n size: string;\r\n type: string;\r\n name: string;\r\n}\r\n\r\nexport interface FormikFileProps\r\n extends Omit<\r\n DropzoneProps,\r\n \"value\" | \"onAdd\" | \"onRemove\" | \"multiple\" | \"accept\" | \"maxSize\" | \"hint\" | \"disabled\" | \"label\"\r\n > {\r\n name: string;\r\n label?: React.ReactNode | undefined;\r\n hint?: React.ReactNode | undefined;\r\n accept?: string | undefined;\r\n maxSize?: number | undefined;\r\n required?: boolean | undefined;\r\n disabled?: boolean | undefined;\r\n mode?: FormikFileMode | undefined;\r\n companionFields?: FormikFileCompanionFields | undefined;\r\n /**\r\n * Id given to the control, and the target of the label's `htmlFor`.\r\n * Defaults to `name` (P-2).\r\n *\r\n * This is what makes the field reachable by `focusFieldByName`, and so by\r\n * `FormikErrorFocus` after a failed submit (R-F.3). Without it Field falls\r\n * back to a `useId` value — stable, but not derivable from the field name,\r\n * so [id=…] cannot be resolved and the field is silently skipped.\r\n *\r\n * Override only if the id must match something external, and keep it in\r\n * step with FormikErrorFocus's `order`, which addresses fields by `name`.\r\n */\r\n htmlFor?: string | undefined;\r\n}\r\n\r\nconst DEFAULT_COMPANION_FIELDS: FormikFileCompanionFields = Object.freeze({\r\n ext: \"fileExtension\",\r\n size: \"fileSize\",\r\n type: \"fileType\",\r\n name: \"nom\",\r\n});\r\n\r\n/* ── Surrogate file ids (defect D-2) ──────────────────────────────────\r\n *\r\n * A File carries no stable identifier, and this bridge previously used\r\n * `file.name` as the Dropzone entry id — with `handleRemove` filtering the\r\n * array by that same name. Two files called \"facture.pdf\" therefore shared a\r\n * React key AND removing either one removed BOTH, silently.\r\n *\r\n * That is not an edge case: scans, exports and generated documents routinely\r\n * arrive with generic names, so a user attaching two scans from different\r\n * folders hits it immediately. A host could not work around it either, since\r\n * the id was synthesised in here with nowhere to inject a key.\r\n *\r\n * A WeakMap keyed by the File OBJECT fixes all of it:\r\n * - two files with the same name are different objects → different ids;\r\n * - the same File across re-renders is the same object → the same id, so\r\n * React keys stay stable and rows do not remount while uploading;\r\n * - entries die with the File, so there is nothing to clean up.\r\n *\r\n * The id is opaque to Dropzone (it hands it straight back to onRemove) and is\r\n * session-scoped — never persisted, never sent anywhere.\r\n */\r\nconst FILE_IDS = new WeakMap<File, string>();\r\nlet fileIdSeq = 0;\r\n\r\nconst idFor = (file: File): string => {\r\n const existing = FILE_IDS.get(file);\r\n if (existing !== undefined) return existing;\r\n fileIdSeq += 1;\r\n const id = `pui-file-${fileIdSeq}`;\r\n FILE_IDS.set(file, id);\r\n return id;\r\n};\r\n\r\n/* v2.Dropzone displays a row per entry in `value`. We synthesise the row\r\n shape from the File held in Formik, with a surrogate id (see above). */\r\nconst toDropzoneShape = (file: unknown): DropzoneFile | null => {\r\n if (file == null || !(file instanceof File)) return null;\r\n return { id: idFor(file), name: file.name, size: file.size };\r\n};\r\n\r\nconst FormikFile = ({\r\n name,\r\n label,\r\n hint,\r\n accept,\r\n maxSize,\r\n required,\r\n disabled,\r\n mode = \"single\",\r\n companionFields = DEFAULT_COMPANION_FIELDS,\r\n htmlFor,\r\n ...rest\r\n}: FormikFileProps) => {\r\n const [field, meta] = useField(name);\r\n const { setFieldValue, setFieldTouched } = useFormikContext();\r\n const hasError = Boolean(meta.touched && meta.error);\r\n\r\n const isBulk = mode === \"bulk\";\r\n\r\n const value: DropzoneFile[] = (\r\n isBulk\r\n ? (Array.isArray(field.value) ? field.value : []).map(toDropzoneShape)\r\n : field.value instanceof File\r\n ? [toDropzoneShape(field.value)]\r\n : []\r\n ).filter((x): x is DropzoneFile => x != null);\r\n\r\n const writeCompanions = (file: File | null) => {\r\n if (isBulk) return;\r\n setFieldValue(companionFields.ext, file ? file.name.split(\".\").pop() : \"\");\r\n setFieldValue(companionFields.size, file ? file.size : null);\r\n setFieldValue(companionFields.type, file ? file.type : \"\");\r\n setFieldValue(companionFields.name, file ? file.name : \"\");\r\n };\r\n\r\n const handleAdd = (files: File[]) => {\r\n if (!files || files.length === 0) return;\r\n if (isBulk) {\r\n const merged = [\r\n ...(Array.isArray(field.value) ? field.value : []),\r\n ...files,\r\n ];\r\n setFieldValue(name, merged);\r\n setFieldTouched(name, true, false);\r\n } else {\r\n const file = files[0];\r\n setFieldValue(name, file);\r\n writeCompanions(file ?? null);\r\n setFieldTouched(name, true, false);\r\n }\r\n };\r\n\r\n /* Dropzone calls onRemove(id) with the surrogate id issued above. In bulk\r\n mode we resolve each entry through the same WeakMap so two files sharing\r\n a name are distinguished; non-File entries are left untouched, preserving\r\n the defensive tolerance for a malformed array. */\r\n const handleRemove = (id: string | number) => {\r\n if (isBulk) {\r\n const remaining = (Array.isArray(field.value) ? field.value : []).filter(\r\n (f) => !(f instanceof File) || idFor(f) !== id\r\n );\r\n setFieldValue(name, remaining);\r\n } else {\r\n setFieldValue(name, null);\r\n writeCompanions(null);\r\n }\r\n };\r\n\r\n return (\r\n <Field\r\n label={label}\r\n error={hasError ? meta.error : null}\r\n /* P-2 — a predictable id, so focusFieldByName can resolve [id=…] and\r\n FormikErrorFocus can reach this field after a failed submit. Matches\r\n FormikInput / FormikSelect / FormikCombobox. */\r\n htmlFor={htmlFor || name}\r\n {...(required !== undefined ? { required } : {})}\r\n {...(disabled !== undefined ? { disabled } : {})}\r\n >\r\n <Dropzone\r\n multiple={isBulk}\r\n value={value}\r\n hint={hint}\r\n onAdd={handleAdd}\r\n onRemove={handleRemove}\r\n {...rest}\r\n {...(accept !== undefined ? { accept } : {})}\r\n {...(disabled !== undefined ? { disabled } : {})}\r\n {...(maxSize !== undefined ? { maxSize } : {})}\r\n />\r\n </Field>\r\n );\r\n};\r\n\r\nexport default FormikFile;\r\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,18 +1,3 @@
|
|
|
1
|
-
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
2
|
-
var _excluded = ["name", "label", "required", "disabled", "readOnly", "mono", "htmlFor", "hint"];
|
|
3
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
4
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
5
|
-
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
6
|
-
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
7
|
-
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
8
|
-
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
9
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
10
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
11
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
12
|
-
function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) { ; } } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
|
|
13
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
14
|
-
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
15
|
-
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
16
1
|
/**
|
|
17
2
|
* FormikInput — bridge between Formik state and v2.Field + v2.Input.
|
|
18
3
|
*
|
|
@@ -75,53 +60,58 @@ import Field from "../components/Field";
|
|
|
75
60
|
import Input from "../components/Input";
|
|
76
61
|
import FormikDisplay from "../components/FormikDisplay";
|
|
77
62
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
meta = _useField2[1];
|
|
93
|
-
var hasError = Boolean(meta.touched && meta.error);
|
|
63
|
+
const FormikInput = ({
|
|
64
|
+
name,
|
|
65
|
+
label,
|
|
66
|
+
required,
|
|
67
|
+
disabled,
|
|
68
|
+
readOnly,
|
|
69
|
+
mono,
|
|
70
|
+
htmlFor,
|
|
71
|
+
hint,
|
|
72
|
+
width,
|
|
73
|
+
...rest
|
|
74
|
+
}) => {
|
|
75
|
+
const [field, meta] = useField(name);
|
|
76
|
+
const hasError = Boolean(meta.touched && meta.error);
|
|
94
77
|
|
|
95
78
|
/* Read-only display. `disabled` takes precedence deliberately — see header.
|
|
96
79
|
* `required` is dropped: an asterisk on information the user cannot supply is
|
|
97
80
|
* noise, and validation cannot fire on a field with no input. */
|
|
98
81
|
if (readOnly && !disabled) {
|
|
99
|
-
return /*#__PURE__*/_jsx(FormikDisplay,
|
|
82
|
+
return /*#__PURE__*/_jsx(FormikDisplay, {
|
|
100
83
|
name: name,
|
|
101
|
-
label: label
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
mono
|
|
106
|
-
|
|
84
|
+
label: label,
|
|
85
|
+
...(hint !== undefined ? {
|
|
86
|
+
hint
|
|
87
|
+
} : {}),
|
|
88
|
+
...(mono !== undefined ? {
|
|
89
|
+
mono
|
|
90
|
+
} : {})
|
|
91
|
+
});
|
|
107
92
|
}
|
|
108
|
-
return /*#__PURE__*/_jsx(Field,
|
|
93
|
+
return /*#__PURE__*/_jsx(Field, {
|
|
109
94
|
label: label,
|
|
110
95
|
error: hasError ? meta.error : null,
|
|
111
96
|
hint: !hasError ? hint : undefined,
|
|
112
|
-
htmlFor: htmlFor || name
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
disabled
|
|
117
|
-
|
|
118
|
-
|
|
97
|
+
htmlFor: htmlFor || name,
|
|
98
|
+
...(required !== undefined ? {
|
|
99
|
+
required
|
|
100
|
+
} : {}),
|
|
101
|
+
...(disabled !== undefined ? {
|
|
102
|
+
disabled
|
|
103
|
+
} : {}),
|
|
104
|
+
...(width !== undefined ? {
|
|
105
|
+
width
|
|
106
|
+
} : {}),
|
|
107
|
+
children: /*#__PURE__*/_jsx(Input, {
|
|
119
108
|
name: field.name,
|
|
120
|
-
value:
|
|
109
|
+
value: field.value ?? "",
|
|
121
110
|
onChange: field.onChange,
|
|
122
|
-
onBlur: field.onBlur
|
|
123
|
-
|
|
124
|
-
|
|
111
|
+
onBlur: field.onBlur,
|
|
112
|
+
...rest
|
|
113
|
+
})
|
|
114
|
+
});
|
|
125
115
|
};
|
|
126
116
|
export default FormikInput;
|
|
127
117
|
//# sourceMappingURL=FormikInput.js.map
|