@portnet/ui 6.0.2 → 6.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +652 -0
- package/dist/esm/index.js +72 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/v2/__tests__/AppMain.test.js +130 -0
- package/dist/esm/v2/__tests__/AppMain.test.js.map +1 -0
- package/dist/esm/v2/__tests__/ChartFigure.test.js +180 -0
- package/dist/esm/v2/__tests__/ChartFigure.test.js.map +1 -0
- package/dist/esm/v2/__tests__/DataGridRowActionsPropagation.test.js +150 -0
- package/dist/esm/v2/__tests__/DataGridRowActionsPropagation.test.js.map +1 -0
- package/dist/esm/v2/__tests__/DrawerTactileTargets.test.js +93 -0
- package/dist/esm/v2/__tests__/DrawerTactileTargets.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FieldError.test.js +71 -38
- package/dist/esm/v2/__tests__/FieldError.test.js.map +1 -1
- package/dist/esm/v2/__tests__/FieldNaming.test.js +160 -0
- package/dist/esm/v2/__tests__/FieldNaming.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FieldWidth.test.js +11 -11
- package/dist/esm/v2/__tests__/FieldWidth.test.js.map +1 -1
- package/dist/esm/v2/__tests__/FileCard.test.js +18 -17
- package/dist/esm/v2/__tests__/FileCard.test.js.map +1 -1
- package/dist/esm/v2/__tests__/FormikCheckbox.test.js +87 -179
- package/dist/esm/v2/__tests__/FormikCheckbox.test.js.map +1 -1
- package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js +32 -44
- package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js.map +1 -1
- package/dist/esm/v2/__tests__/FormikDisplayWidth.test.js +101 -0
- package/dist/esm/v2/__tests__/FormikDisplayWidth.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FormikRadioGroup.test.js +118 -199
- package/dist/esm/v2/__tests__/FormikRadioGroup.test.js.map +1 -1
- package/dist/esm/v2/__tests__/MobileRowCard.test.js +44 -42
- package/dist/esm/v2/__tests__/MobileRowCard.test.js.map +1 -1
- package/dist/esm/v2/__tests__/PreviewDrawer.test.js +165 -0
- package/dist/esm/v2/__tests__/PreviewDrawer.test.js.map +1 -0
- package/dist/esm/v2/__tests__/ReferentielFieldContainer.test.js +156 -0
- package/dist/esm/v2/__tests__/ReferentielFieldContainer.test.js.map +1 -0
- package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js +37 -52
- package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js.map +1 -1
- package/dist/esm/v2/__tests__/apiError.test.js +50 -69
- package/dist/esm/v2/__tests__/apiError.test.js.map +1 -1
- package/dist/esm/v2/__tests__/banned-patterns.test.js +41 -122
- package/dist/esm/v2/__tests__/banned-patterns.test.js.map +1 -1
- package/dist/esm/v2/__tests__/chart-palette.test.js +204 -0
- package/dist/esm/v2/__tests__/chart-palette.test.js.map +1 -0
- package/dist/esm/v2/__tests__/contrast-palette.test.js +42 -74
- package/dist/esm/v2/__tests__/contrast-palette.test.js.map +1 -1
- package/dist/esm/v2/__tests__/cssVariables.test.js +44 -51
- package/dist/esm/v2/__tests__/cssVariables.test.js.map +1 -1
- package/dist/esm/v2/__tests__/fileValidation.test.js +134 -0
- package/dist/esm/v2/__tests__/fileValidation.test.js.map +1 -0
- package/dist/esm/v2/__tests__/filterCriteria.test.js +321 -0
- package/dist/esm/v2/__tests__/filterCriteria.test.js.map +1 -0
- package/dist/esm/v2/__tests__/fmtDate.test.js +68 -0
- package/dist/esm/v2/__tests__/fmtDate.test.js.map +1 -0
- package/dist/esm/v2/__tests__/gap-leakage-refonte.test.js +218 -0
- package/dist/esm/v2/__tests__/gap-leakage-refonte.test.js.map +1 -0
- package/dist/esm/v2/__tests__/labels-merge.test.js +17 -21
- package/dist/esm/v2/__tests__/labels-merge.test.js.map +1 -1
- package/dist/esm/v2/__tests__/locale-fallback.test.js +35 -40
- package/dist/esm/v2/__tests__/locale-fallback.test.js.map +1 -1
- package/dist/esm/v2/__tests__/reviveSavedCriteria.test.js +143 -0
- package/dist/esm/v2/__tests__/reviveSavedCriteria.test.js.map +1 -0
- package/dist/esm/v2/__tests__/rowActions.test.js +182 -0
- package/dist/esm/v2/__tests__/rowActions.test.js.map +1 -0
- package/dist/esm/v2/__tests__/useFocusOnRouteChange.test.js +155 -0
- package/dist/esm/v2/__tests__/useFocusOnRouteChange.test.js.map +1 -0
- package/dist/esm/v2/__tests__/useFocusTrap.test.js +266 -402
- package/dist/esm/v2/__tests__/useFocusTrap.test.js.map +1 -1
- package/dist/esm/v2/__tests__/usePrefersReducedMotion.test.js +120 -0
- package/dist/esm/v2/__tests__/usePrefersReducedMotion.test.js.map +1 -0
- package/dist/esm/v2/components/Accordion.js +48 -70
- package/dist/esm/v2/components/Accordion.js.map +1 -1
- package/dist/esm/v2/components/ActionStrip.js +31 -43
- package/dist/esm/v2/components/ActionStrip.js.map +1 -1
- package/dist/esm/v2/components/Banner.js +25 -22
- package/dist/esm/v2/components/Banner.js.map +1 -1
- package/dist/esm/v2/components/Busy.js +14 -19
- package/dist/esm/v2/components/Busy.js.map +1 -1
- package/dist/esm/v2/components/Button.js +34 -45
- package/dist/esm/v2/components/Button.js.map +1 -1
- package/dist/esm/v2/components/CategoryTag.js +44 -27
- package/dist/esm/v2/components/CategoryTag.js.map +1 -1
- package/dist/esm/v2/components/Checkbox.js +32 -38
- package/dist/esm/v2/components/Checkbox.js.map +1 -1
- package/dist/esm/v2/components/Chip.js +23 -36
- package/dist/esm/v2/components/Chip.js.map +1 -1
- package/dist/esm/v2/components/Combobox.js +112 -136
- package/dist/esm/v2/components/Combobox.js.map +1 -1
- package/dist/esm/v2/components/CommandPalette.js +113 -198
- package/dist/esm/v2/components/CommandPalette.js.map +1 -1
- package/dist/esm/v2/components/ConfirmDialog.js +36 -45
- package/dist/esm/v2/components/ConfirmDialog.js.map +1 -1
- package/dist/esm/v2/components/DatePicker.js +78 -81
- package/dist/esm/v2/components/DatePicker.js.map +1 -1
- package/dist/esm/v2/components/DateRangePicker.js +63 -74
- package/dist/esm/v2/components/DateRangePicker.js.map +1 -1
- package/dist/esm/v2/components/DateTimePicker.js +81 -86
- package/dist/esm/v2/components/DateTimePicker.js.map +1 -1
- package/dist/esm/v2/components/Drawer.js +71 -65
- package/dist/esm/v2/components/Drawer.js.map +1 -1
- package/dist/esm/v2/components/Dropzone.js +130 -177
- package/dist/esm/v2/components/Dropzone.js.map +1 -1
- package/dist/esm/v2/components/EmptyState.js +9 -9
- package/dist/esm/v2/components/EmptyState.js.map +1 -1
- package/dist/esm/v2/components/FavoriteToggle.js +24 -33
- package/dist/esm/v2/components/FavoriteToggle.js.map +1 -1
- package/dist/esm/v2/components/Field.js +155 -59
- package/dist/esm/v2/components/Field.js.map +1 -1
- package/dist/esm/v2/components/FieldError.js +9 -13
- package/dist/esm/v2/components/FieldError.js.map +1 -1
- package/dist/esm/v2/components/FieldHelp.js +28 -49
- package/dist/esm/v2/components/FieldHelp.js.map +1 -1
- package/dist/esm/v2/components/FileCard.js +14 -19
- package/dist/esm/v2/components/FileCard.js.map +1 -1
- package/dist/esm/v2/components/FilterTab.js +22 -31
- package/dist/esm/v2/components/FilterTab.js.map +1 -1
- package/dist/esm/v2/components/ForbiddenPage.js +28 -8
- package/dist/esm/v2/components/ForbiddenPage.js.map +1 -1
- package/dist/esm/v2/components/FormGrid.js +48 -54
- package/dist/esm/v2/components/FormGrid.js.map +1 -1
- package/dist/esm/v2/components/FormikDisplay.js +98 -24
- package/dist/esm/v2/components/FormikDisplay.js.map +1 -1
- package/dist/esm/v2/components/Input.js +75 -34
- package/dist/esm/v2/components/Input.js.map +1 -1
- package/dist/esm/v2/components/KPICard.js +42 -51
- package/dist/esm/v2/components/KPICard.js.map +1 -1
- package/dist/esm/v2/components/KPIStrip.js +9 -15
- package/dist/esm/v2/components/KPIStrip.js.map +1 -1
- package/dist/esm/v2/components/KV.js +16 -23
- package/dist/esm/v2/components/KV.js.map +1 -1
- package/dist/esm/v2/components/KVGrid.js +15 -23
- package/dist/esm/v2/components/KVGrid.js.map +1 -1
- package/dist/esm/v2/components/Layout.js +81 -117
- package/dist/esm/v2/components/Layout.js.map +1 -1
- package/dist/esm/v2/components/MobileRowCard.js +64 -75
- package/dist/esm/v2/components/MobileRowCard.js.map +1 -1
- package/dist/esm/v2/components/Modal.js +44 -53
- package/dist/esm/v2/components/Modal.js.map +1 -1
- package/dist/esm/v2/components/NetworkErrorPage.js +28 -11
- package/dist/esm/v2/components/NetworkErrorPage.js.map +1 -1
- package/dist/esm/v2/components/NotFoundPage.js +28 -9
- package/dist/esm/v2/components/NotFoundPage.js.map +1 -1
- package/dist/esm/v2/components/NumberInput.js +77 -107
- package/dist/esm/v2/components/NumberInput.js.map +1 -1
- package/dist/esm/v2/components/OverflowMenu.js +24 -42
- package/dist/esm/v2/components/OverflowMenu.js.map +1 -1
- package/dist/esm/v2/components/PdfViewer.js +24 -33
- package/dist/esm/v2/components/PdfViewer.js.map +1 -1
- package/dist/esm/v2/components/ProgressBar.js +28 -36
- package/dist/esm/v2/components/ProgressBar.js.map +1 -1
- package/dist/esm/v2/components/Radio.js +49 -57
- package/dist/esm/v2/components/Radio.js.map +1 -1
- package/dist/esm/v2/components/SectionErrorBoundary.js +84 -130
- package/dist/esm/v2/components/SectionErrorBoundary.js.map +1 -1
- package/dist/esm/v2/components/SectionHeader.js +24 -31
- package/dist/esm/v2/components/SectionHeader.js.map +1 -1
- package/dist/esm/v2/components/Segmented.js +59 -84
- package/dist/esm/v2/components/Segmented.js.map +1 -1
- package/dist/esm/v2/components/Select.js +100 -138
- package/dist/esm/v2/components/Select.js.map +1 -1
- package/dist/esm/v2/components/ServerErrorPage.js +27 -10
- package/dist/esm/v2/components/ServerErrorPage.js.map +1 -1
- package/dist/esm/v2/components/Skeleton.js +81 -96
- package/dist/esm/v2/components/Skeleton.js.map +1 -1
- package/dist/esm/v2/components/SkipLink.js +6 -7
- package/dist/esm/v2/components/SkipLink.js.map +1 -1
- package/dist/esm/v2/components/Spinner.js +13 -22
- package/dist/esm/v2/components/Spinner.js.map +1 -1
- package/dist/esm/v2/components/Status.js +14 -25
- package/dist/esm/v2/components/Status.js.map +1 -1
- package/dist/esm/v2/components/Stepper.js +68 -71
- package/dist/esm/v2/components/Stepper.js.map +1 -1
- package/dist/esm/v2/components/Surface.js +25 -44
- package/dist/esm/v2/components/Surface.js.map +1 -1
- package/dist/esm/v2/components/Switch.js +21 -29
- package/dist/esm/v2/components/Switch.js.map +1 -1
- package/dist/esm/v2/components/TabPanel.js +84 -0
- package/dist/esm/v2/components/TabPanel.js.map +1 -0
- package/dist/esm/v2/components/Tabs.js +43 -19
- package/dist/esm/v2/components/Tabs.js.map +1 -1
- package/dist/esm/v2/components/TelInput.js +75 -108
- package/dist/esm/v2/components/TelInput.js.map +1 -1
- package/dist/esm/v2/components/Textarea.js +21 -30
- package/dist/esm/v2/components/Textarea.js.map +1 -1
- package/dist/esm/v2/components/TimePicker.js +59 -69
- package/dist/esm/v2/components/TimePicker.js.map +1 -1
- package/dist/esm/v2/components/Toast.js +109 -163
- package/dist/esm/v2/components/Toast.js.map +1 -1
- package/dist/esm/v2/components/Tooltip.js +18 -31
- package/dist/esm/v2/components/Tooltip.js.map +1 -1
- package/dist/esm/v2/components/_ErrorPageBody.js +6 -5
- package/dist/esm/v2/components/_ErrorPageBody.js.map +1 -1
- package/dist/esm/v2/components/_pickerShared.js +2 -2
- package/dist/esm/v2/components/_pickerShared.js.map +1 -1
- package/dist/esm/v2/components/index.js +37 -0
- package/dist/esm/v2/components/index.js.map +1 -1
- package/dist/esm/v2/hooks/index.js +62 -0
- package/dist/esm/v2/hooks/index.js.map +1 -1
- package/dist/esm/v2/hooks/useAppliedFilters.js +112 -0
- package/dist/esm/v2/hooks/useAppliedFilters.js.map +1 -0
- package/dist/esm/v2/hooks/useDebouncedCallback.js +82 -0
- package/dist/esm/v2/hooks/useDebouncedCallback.js.map +1 -0
- package/dist/esm/v2/hooks/useDelayedFlag.js +5 -19
- package/dist/esm/v2/hooks/useDelayedFlag.js.map +1 -1
- package/dist/esm/v2/hooks/useDensity.js +13 -17
- package/dist/esm/v2/hooks/useDensity.js.map +1 -1
- package/dist/esm/v2/hooks/useFocusFirstError.js +25 -33
- package/dist/esm/v2/hooks/useFocusFirstError.js.map +1 -1
- package/dist/esm/v2/hooks/useFocusOnRouteChange.js +81 -0
- package/dist/esm/v2/hooks/useFocusOnRouteChange.js.map +1 -0
- package/dist/esm/v2/hooks/useFocusTrap.js +19 -23
- package/dist/esm/v2/hooks/useFocusTrap.js.map +1 -1
- package/dist/esm/v2/hooks/useFormAutoSave.js +38 -53
- package/dist/esm/v2/hooks/useFormAutoSave.js.map +1 -1
- package/dist/esm/v2/hooks/useFormCompletionProgress.js +32 -51
- package/dist/esm/v2/hooks/useFormCompletionProgress.js.map +1 -1
- package/dist/esm/v2/hooks/useKeyboardShortcuts.js +125 -0
- package/dist/esm/v2/hooks/useKeyboardShortcuts.js.map +1 -0
- package/dist/esm/v2/hooks/usePrefersReducedMotion.js +99 -0
- package/dist/esm/v2/hooks/usePrefersReducedMotion.js.map +1 -0
- package/dist/esm/v2/hooks/useResolvedDensity.js +2 -10
- package/dist/esm/v2/hooks/useResolvedDensity.js.map +1 -1
- package/dist/esm/v2/hooks/useSortedRows.js +3 -5
- package/dist/esm/v2/hooks/useSortedRows.js.map +1 -1
- package/dist/esm/v2/hooks/useTabLoading.js +6 -21
- package/dist/esm/v2/hooks/useTabLoading.js.map +1 -1
- package/dist/esm/v2/index.js +2 -3
- package/dist/esm/v2/index.js.map +1 -1
- package/dist/esm/v2/modalContext.js +2 -2
- package/dist/esm/v2/modalContext.js.map +1 -1
- package/dist/esm/v2/models/favorite.js.map +1 -1
- package/dist/esm/v2/models/personalization.js.map +1 -1
- package/dist/esm/v2/models/referentiel.js.map +1 -1
- package/dist/esm/v2/models/savedFilter.js.map +1 -1
- package/dist/esm/v2/patterns/ActionBar.js +115 -159
- package/dist/esm/v2/patterns/ActionBar.js.map +1 -1
- package/dist/esm/v2/patterns/AppMain.js +108 -0
- package/dist/esm/v2/patterns/AppMain.js.map +1 -0
- package/dist/esm/v2/patterns/BulkActionBar.js +31 -34
- package/dist/esm/v2/patterns/BulkActionBar.js.map +1 -1
- package/dist/esm/v2/patterns/ChartFigure.js +151 -0
- package/dist/esm/v2/patterns/ChartFigure.js.map +1 -0
- package/dist/esm/v2/patterns/CollapsibleDataGrid.js +111 -152
- package/dist/esm/v2/patterns/CollapsibleDataGrid.js.map +1 -1
- package/dist/esm/v2/patterns/ColumnsToggle.js +43 -77
- package/dist/esm/v2/patterns/ColumnsToggle.js.map +1 -1
- package/dist/esm/v2/patterns/DataGrid.js +221 -255
- package/dist/esm/v2/patterns/DataGrid.js.map +1 -1
- package/dist/esm/v2/patterns/DataGridSettingsMenu.js +76 -94
- package/dist/esm/v2/patterns/DataGridSettingsMenu.js.map +1 -1
- package/dist/esm/v2/patterns/DataGridToolbar.js +85 -89
- package/dist/esm/v2/patterns/DataGridToolbar.js.map +1 -1
- package/dist/esm/v2/patterns/DataGridVirtualized.js +141 -182
- package/dist/esm/v2/patterns/DataGridVirtualized.js.map +1 -1
- package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js +26 -30
- package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
- package/dist/esm/v2/patterns/DetailSplit.js +108 -0
- package/dist/esm/v2/patterns/DetailSplit.js.map +1 -0
- package/dist/esm/v2/patterns/FavoriteColumn.js +15 -17
- package/dist/esm/v2/patterns/FavoriteColumn.js.map +1 -1
- package/dist/esm/v2/patterns/FavoritesFilter.js +30 -39
- package/dist/esm/v2/patterns/FavoritesFilter.js.map +1 -1
- package/dist/esm/v2/patterns/FilterTabBar.js +112 -0
- package/dist/esm/v2/patterns/FilterTabBar.js.map +1 -0
- package/dist/esm/v2/patterns/FormErrorSummary.js +12 -13
- package/dist/esm/v2/patterns/FormErrorSummary.js.map +1 -1
- package/dist/esm/v2/patterns/FormPageShell.js +43 -41
- package/dist/esm/v2/patterns/FormPageShell.js.map +1 -1
- package/dist/esm/v2/patterns/FormSection.js +30 -38
- package/dist/esm/v2/patterns/FormSection.js.map +1 -1
- package/dist/esm/v2/patterns/FormikCheckbox.js +29 -39
- package/dist/esm/v2/patterns/FormikCheckbox.js.map +1 -1
- package/dist/esm/v2/patterns/FormikCheckboxGroup.js +56 -60
- package/dist/esm/v2/patterns/FormikCheckboxGroup.js.map +1 -1
- package/dist/esm/v2/patterns/FormikCombobox.js +51 -69
- package/dist/esm/v2/patterns/FormikCombobox.js.map +1 -1
- package/dist/esm/v2/patterns/FormikDatePicker.js +44 -58
- package/dist/esm/v2/patterns/FormikDatePicker.js.map +1 -1
- package/dist/esm/v2/patterns/FormikDateTimePicker.js +44 -58
- package/dist/esm/v2/patterns/FormikDateTimePicker.js.map +1 -1
- package/dist/esm/v2/patterns/FormikErrorFocus.js +22 -23
- package/dist/esm/v2/patterns/FormikErrorFocus.js.map +1 -1
- package/dist/esm/v2/patterns/FormikErrorSummary.js +89 -0
- package/dist/esm/v2/patterns/FormikErrorSummary.js.map +1 -0
- package/dist/esm/v2/patterns/FormikFile.js +94 -78
- package/dist/esm/v2/patterns/FormikFile.js.map +1 -1
- package/dist/esm/v2/patterns/FormikInput.js +40 -53
- package/dist/esm/v2/patterns/FormikInput.js.map +1 -1
- package/dist/esm/v2/patterns/FormikRadioGroup.js +39 -51
- package/dist/esm/v2/patterns/FormikRadioGroup.js.map +1 -1
- package/dist/esm/v2/patterns/FormikReferentielField.js +49 -59
- package/dist/esm/v2/patterns/FormikReferentielField.js.map +1 -1
- package/dist/esm/v2/patterns/FormikSelect.js +64 -87
- package/dist/esm/v2/patterns/FormikSelect.js.map +1 -1
- package/dist/esm/v2/patterns/FormikTextarea.js +30 -46
- package/dist/esm/v2/patterns/FormikTextarea.js.map +1 -1
- package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js +53 -71
- package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
- package/dist/esm/v2/patterns/NetworkErrorBanner.js +6 -7
- package/dist/esm/v2/patterns/NetworkErrorBanner.js.map +1 -1
- package/dist/esm/v2/patterns/PageContent.js +10 -14
- package/dist/esm/v2/patterns/PageContent.js.map +1 -1
- package/dist/esm/v2/patterns/PreviewDrawer.js +153 -0
- package/dist/esm/v2/patterns/PreviewDrawer.js.map +1 -0
- package/dist/esm/v2/patterns/ReferentielField.js +327 -312
- package/dist/esm/v2/patterns/ReferentielField.js.map +1 -1
- package/dist/esm/v2/patterns/RowFavoriteToggle.js +27 -22
- package/dist/esm/v2/patterns/RowFavoriteToggle.js.map +1 -1
- package/dist/esm/v2/patterns/SaveFilterDialog.js +38 -66
- package/dist/esm/v2/patterns/SaveFilterDialog.js.map +1 -1
- package/dist/esm/v2/patterns/SavedFiltersMenu.js +62 -81
- package/dist/esm/v2/patterns/SavedFiltersMenu.js.map +1 -1
- package/dist/esm/v2/patterns/SkeletonPageShell.js +106 -129
- package/dist/esm/v2/patterns/SkeletonPageShell.js.map +1 -1
- package/dist/esm/v2/patterns/SortableHeader.js +22 -45
- package/dist/esm/v2/patterns/SortableHeader.js.map +1 -1
- package/dist/esm/v2/patterns/Tour.js +94 -120
- package/dist/esm/v2/patterns/Tour.js.map +1 -1
- package/dist/esm/v2/patterns/_dataGridShared.js +107 -128
- package/dist/esm/v2/patterns/_dataGridShared.js.map +1 -1
- package/dist/esm/v2/patterns/_pickerSerialisation.js +6 -8
- package/dist/esm/v2/patterns/_pickerSerialisation.js.map +1 -1
- package/dist/esm/v2/patterns/_sort.js +17 -33
- package/dist/esm/v2/patterns/_sort.js.map +1 -1
- package/dist/esm/v2/patterns/_useColumnReorder.js +122 -160
- package/dist/esm/v2/patterns/_useColumnReorder.js.map +1 -1
- package/dist/esm/v2/patterns/_useColumnResize.js +78 -96
- package/dist/esm/v2/patterns/_useColumnResize.js.map +1 -1
- package/dist/esm/v2/patterns/filterCriteria.js +102 -0
- package/dist/esm/v2/patterns/filterCriteria.js.map +1 -0
- package/dist/esm/v2/patterns/index.js +152 -0
- package/dist/esm/v2/patterns/index.js.map +1 -1
- package/dist/esm/v2/patterns/rowActions.js +223 -0
- package/dist/esm/v2/patterns/rowActions.js.map +1 -0
- package/dist/esm/v2/personalization/PersonalizationProvider.js +50 -47
- package/dist/esm/v2/personalization/PersonalizationProvider.js.map +1 -1
- package/dist/esm/v2/personalization/adapters/_storageKey.js +5 -5
- package/dist/esm/v2/personalization/adapters/_storageKey.js.map +1 -1
- package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js +22 -23
- package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
- package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js +13 -13
- package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
- package/dist/esm/v2/personalization/capabilities/favorites.js +36 -60
- package/dist/esm/v2/personalization/capabilities/favorites.js.map +1 -1
- package/dist/esm/v2/personalization/capabilities/favoritesView.js +22 -34
- package/dist/esm/v2/personalization/capabilities/favoritesView.js.map +1 -1
- package/dist/esm/v2/personalization/capabilities/gridPreferences.js +28 -34
- package/dist/esm/v2/personalization/capabilities/gridPreferences.js.map +1 -1
- package/dist/esm/v2/personalization/capabilities/reviveSavedCriteria.js +119 -0
- package/dist/esm/v2/personalization/capabilities/reviveSavedCriteria.js.map +1 -0
- package/dist/esm/v2/personalization/capabilities/savedFilters.js +90 -98
- package/dist/esm/v2/personalization/capabilities/savedFilters.js.map +1 -1
- package/dist/esm/v2/personalization/createPersonalizationStore.js +78 -181
- package/dist/esm/v2/personalization/createPersonalizationStore.js.map +1 -1
- package/dist/esm/v2/personalization/index.js +17 -0
- package/dist/esm/v2/personalization/index.js.map +1 -1
- package/dist/esm/v2/personalization/personalizationContext.js +9 -9
- package/dist/esm/v2/personalization/personalizationContext.js.map +1 -1
- package/dist/esm/v2/personalization/schema.js +8 -9
- package/dist/esm/v2/personalization/schema.js.map +1 -1
- package/dist/esm/v2/referentiel/ReferentielProvider.js +27 -42
- package/dist/esm/v2/referentiel/ReferentielProvider.js.map +1 -1
- package/dist/esm/v2/referentiel/types.js +2 -0
- package/dist/esm/v2/referentiel/types.js.map +1 -0
- package/dist/esm/v2/referentiel/useReferentielClient.js +10 -11
- package/dist/esm/v2/referentiel/useReferentielClient.js.map +1 -1
- package/dist/esm/v2/referentiel/useReferentielOptions.js +60 -117
- package/dist/esm/v2/referentiel/useReferentielOptions.js.map +1 -1
- package/dist/esm/v2/referentiel/useReferentielSearch.js +37 -91
- package/dist/esm/v2/referentiel/useReferentielSearch.js.map +1 -1
- package/dist/esm/v2/theme/_brand.js +8 -24
- package/dist/esm/v2/theme/_brand.js.map +1 -1
- package/dist/esm/v2/theme/_brandSecondary.js +8 -24
- package/dist/esm/v2/theme/_brandSecondary.js.map +1 -1
- package/dist/esm/v2/theme/createPortnetTheme.js +51 -61
- package/dist/esm/v2/theme/createPortnetTheme.js.map +1 -1
- package/dist/esm/v2/theme/cssVariables.js +62 -69
- package/dist/esm/v2/theme/cssVariables.js.map +1 -1
- package/dist/esm/v2/theme/index.js +5 -5
- package/dist/esm/v2/theme/index.js.map +1 -1
- package/dist/esm/v2/tokens/breakpoints.js +14 -14
- package/dist/esm/v2/tokens/breakpoints.js.map +1 -1
- package/dist/esm/v2/tokens/chart.js +261 -0
- package/dist/esm/v2/tokens/chart.js.map +1 -0
- package/dist/esm/v2/tokens/colors.js +22 -22
- package/dist/esm/v2/tokens/colors.js.map +1 -1
- package/dist/esm/v2/tokens/density.js +62 -7
- package/dist/esm/v2/tokens/density.js.map +1 -1
- package/dist/esm/v2/tokens/index.js +49 -34
- package/dist/esm/v2/tokens/index.js.map +1 -1
- package/dist/esm/v2/tokens/motion.js +12 -20
- package/dist/esm/v2/tokens/motion.js.map +1 -1
- package/dist/esm/v2/tokens/radius.js +1 -1
- package/dist/esm/v2/tokens/radius.js.map +1 -1
- package/dist/esm/v2/tokens/shadows.js +6 -6
- package/dist/esm/v2/tokens/shadows.js.map +1 -1
- package/dist/esm/v2/tokens/spacing.js +2 -2
- package/dist/esm/v2/tokens/spacing.js.map +1 -1
- package/dist/esm/v2/tokens/state.js +1 -1
- package/dist/esm/v2/tokens/state.js.map +1 -1
- package/dist/esm/v2/tokens/statusPalette.js +17 -21
- package/dist/esm/v2/tokens/statusPalette.js.map +1 -1
- package/dist/esm/v2/tokens/tokens.json +6 -1
- package/dist/esm/v2/tokens/typography.js +13 -13
- package/dist/esm/v2/tokens/typography.js.map +1 -1
- package/dist/esm/v2/tokens/zIndex.js +1 -1
- package/dist/esm/v2/tokens/zIndex.js.map +1 -1
- package/dist/esm/v2/types/datagrid.js.map +1 -1
- package/dist/esm/v2/utils/apiError.js +16 -37
- package/dist/esm/v2/utils/apiError.js.map +1 -1
- package/dist/esm/v2/utils/contrast.js +31 -32
- package/dist/esm/v2/utils/contrast.js.map +1 -1
- package/dist/esm/v2/utils/cx.js +5 -25
- package/dist/esm/v2/utils/cx.js.map +1 -1
- package/dist/esm/v2/utils/fileDownload.js +23 -26
- package/dist/esm/v2/utils/fileDownload.js.map +1 -1
- package/dist/esm/v2/utils/fileValidation.js +209 -0
- package/dist/esm/v2/utils/fileValidation.js.map +1 -0
- package/dist/esm/v2/utils/fmtDate.js +111 -0
- package/dist/esm/v2/utils/fmtDate.js.map +1 -0
- package/dist/esm/v2/utils/fmtMoney.js +8 -10
- package/dist/esm/v2/utils/fmtMoney.js.map +1 -1
- package/dist/esm/v2/utils/formikErrors.js +78 -0
- package/dist/esm/v2/utils/formikErrors.js.map +1 -0
- package/dist/esm/v2/utils/index.js +35 -2
- package/dist/esm/v2/utils/index.js.map +1 -1
- package/dist/esm/v2/utils/mergeLabels.js +7 -12
- package/dist/esm/v2/utils/mergeLabels.js.map +1 -1
- package/dist/esm/v2/utils/networkStatus.js +12 -12
- package/dist/esm/v2/utils/networkStatus.js.map +1 -1
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +110 -49
- package/dist/index.js.map +1 -1
- package/dist/v2/__tests__/AppMain.test.js +133 -0
- package/dist/v2/__tests__/AppMain.test.js.map +1 -0
- package/dist/v2/__tests__/ChartFigure.test.js +183 -0
- package/dist/v2/__tests__/ChartFigure.test.js.map +1 -0
- package/dist/v2/__tests__/DataGridRowActionsPropagation.test.js +153 -0
- package/dist/v2/__tests__/DataGridRowActionsPropagation.test.js.map +1 -0
- package/dist/v2/__tests__/DrawerTactileTargets.test.js +94 -0
- package/dist/v2/__tests__/DrawerTactileTargets.test.js.map +1 -0
- package/dist/v2/__tests__/FieldError.test.js +82 -49
- package/dist/v2/__tests__/FieldError.test.js.map +1 -1
- package/dist/v2/__tests__/FieldNaming.test.js +161 -0
- package/dist/v2/__tests__/FieldNaming.test.js.map +1 -0
- package/dist/v2/__tests__/FieldWidth.test.js +23 -25
- package/dist/v2/__tests__/FieldWidth.test.js.map +1 -1
- package/dist/v2/__tests__/FileCard.test.js +29 -28
- package/dist/v2/__tests__/FileCard.test.js.map +1 -1
- package/dist/v2/__tests__/FormikCheckbox.test.js +90 -183
- package/dist/v2/__tests__/FormikCheckbox.test.js.map +1 -1
- package/dist/v2/__tests__/FormikDateTimePicker.test.js +38 -48
- package/dist/v2/__tests__/FormikDateTimePicker.test.js.map +1 -1
- package/dist/v2/__tests__/FormikDisplayWidth.test.js +102 -0
- package/dist/v2/__tests__/FormikDisplayWidth.test.js.map +1 -0
- package/dist/v2/__tests__/FormikRadioGroup.test.js +123 -204
- package/dist/v2/__tests__/FormikRadioGroup.test.js.map +1 -1
- package/dist/v2/__tests__/MobileRowCard.test.js +63 -61
- package/dist/v2/__tests__/MobileRowCard.test.js.map +1 -1
- package/dist/v2/__tests__/PreviewDrawer.test.js +169 -0
- package/dist/v2/__tests__/PreviewDrawer.test.js.map +1 -0
- package/dist/v2/__tests__/ReferentielFieldContainer.test.js +159 -0
- package/dist/v2/__tests__/ReferentielFieldContainer.test.js.map +1 -0
- package/dist/v2/__tests__/SectionErrorBoundary.test.js +53 -68
- package/dist/v2/__tests__/SectionErrorBoundary.test.js.map +1 -1
- package/dist/v2/__tests__/apiError.test.js +50 -69
- package/dist/v2/__tests__/apiError.test.js.map +1 -1
- package/dist/v2/__tests__/banned-patterns.test.js +42 -123
- package/dist/v2/__tests__/banned-patterns.test.js.map +1 -1
- package/dist/v2/__tests__/chart-palette.test.js +205 -0
- package/dist/v2/__tests__/chart-palette.test.js.map +1 -0
- package/dist/v2/__tests__/contrast-palette.test.js +42 -74
- package/dist/v2/__tests__/contrast-palette.test.js.map +1 -1
- package/dist/v2/__tests__/cssVariables.test.js +44 -51
- package/dist/v2/__tests__/cssVariables.test.js.map +1 -1
- package/dist/v2/__tests__/fileValidation.test.js +136 -0
- package/dist/v2/__tests__/fileValidation.test.js.map +1 -0
- package/dist/v2/__tests__/filterCriteria.test.js +324 -0
- package/dist/v2/__tests__/filterCriteria.test.js.map +1 -0
- package/dist/v2/__tests__/fmtDate.test.js +69 -0
- package/dist/v2/__tests__/fmtDate.test.js.map +1 -0
- package/dist/v2/__tests__/gap-leakage-refonte.test.js +221 -0
- package/dist/v2/__tests__/gap-leakage-refonte.test.js.map +1 -0
- package/dist/v2/__tests__/labels-merge.test.js +23 -27
- package/dist/v2/__tests__/labels-merge.test.js.map +1 -1
- package/dist/v2/__tests__/locale-fallback.test.js +47 -52
- package/dist/v2/__tests__/locale-fallback.test.js.map +1 -1
- package/dist/v2/__tests__/reviveSavedCriteria.test.js +144 -0
- package/dist/v2/__tests__/reviveSavedCriteria.test.js.map +1 -0
- package/dist/v2/__tests__/rowActions.test.js +186 -0
- package/dist/v2/__tests__/rowActions.test.js.map +1 -0
- package/dist/v2/__tests__/useFocusOnRouteChange.test.js +156 -0
- package/dist/v2/__tests__/useFocusOnRouteChange.test.js.map +1 -0
- package/dist/v2/__tests__/useFocusTrap.test.js +270 -407
- package/dist/v2/__tests__/useFocusTrap.test.js.map +1 -1
- package/dist/v2/__tests__/usePrefersReducedMotion.test.js +123 -0
- package/dist/v2/__tests__/usePrefersReducedMotion.test.js.map +1 -0
- package/dist/v2/components/Accordion.js +60 -82
- package/dist/v2/components/Accordion.js.map +1 -1
- package/dist/v2/components/ActionStrip.js +40 -52
- package/dist/v2/components/ActionStrip.js.map +1 -1
- package/dist/v2/components/Banner.js +42 -41
- package/dist/v2/components/Banner.js.map +1 -1
- package/dist/v2/components/Busy.js +22 -27
- package/dist/v2/components/Busy.js.map +1 -1
- package/dist/v2/components/Button.js +39 -50
- package/dist/v2/components/Button.js.map +1 -1
- package/dist/v2/components/CategoryTag.d.ts.map +1 -1
- package/dist/v2/components/CategoryTag.js +49 -32
- package/dist/v2/components/CategoryTag.js.map +1 -1
- package/dist/v2/components/Checkbox.js +39 -45
- package/dist/v2/components/Checkbox.js.map +1 -1
- package/dist/v2/components/Chip.js +29 -42
- package/dist/v2/components/Chip.js.map +1 -1
- package/dist/v2/components/Combobox.js +122 -144
- package/dist/v2/components/Combobox.js.map +1 -1
- package/dist/v2/components/CommandPalette.js +138 -225
- package/dist/v2/components/CommandPalette.js.map +1 -1
- package/dist/v2/components/ConfirmDialog.js +46 -56
- package/dist/v2/components/ConfirmDialog.js.map +1 -1
- package/dist/v2/components/DatePicker.js +81 -86
- package/dist/v2/components/DatePicker.js.map +1 -1
- package/dist/v2/components/DateRangePicker.js +77 -87
- package/dist/v2/components/DateRangePicker.js.map +1 -1
- package/dist/v2/components/DateTimePicker.js +84 -91
- package/dist/v2/components/DateTimePicker.js.map +1 -1
- package/dist/v2/components/Drawer.d.ts.map +1 -1
- package/dist/v2/components/Drawer.js +93 -88
- package/dist/v2/components/Drawer.js.map +1 -1
- package/dist/v2/components/Dropzone.js +150 -196
- package/dist/v2/components/Dropzone.js.map +1 -1
- package/dist/v2/components/EmptyState.js +18 -20
- package/dist/v2/components/EmptyState.js.map +1 -1
- package/dist/v2/components/FavoriteToggle.js +28 -39
- package/dist/v2/components/FavoriteToggle.js.map +1 -1
- package/dist/v2/components/Field.d.ts +62 -4
- package/dist/v2/components/Field.d.ts.map +1 -1
- package/dist/v2/components/Field.js +169 -70
- package/dist/v2/components/Field.js.map +1 -1
- package/dist/v2/components/FieldError.js +18 -21
- package/dist/v2/components/FieldError.js.map +1 -1
- package/dist/v2/components/FieldHelp.js +40 -60
- package/dist/v2/components/FieldHelp.js.map +1 -1
- package/dist/v2/components/FileCard.js +27 -31
- package/dist/v2/components/FileCard.js.map +1 -1
- package/dist/v2/components/FilterTab.js +30 -38
- package/dist/v2/components/FilterTab.js.map +1 -1
- package/dist/v2/components/ForbiddenPage.d.ts +25 -1
- package/dist/v2/components/ForbiddenPage.d.ts.map +1 -1
- package/dist/v2/components/ForbiddenPage.js +37 -17
- package/dist/v2/components/ForbiddenPage.js.map +1 -1
- package/dist/v2/components/FormGrid.js +53 -59
- package/dist/v2/components/FormGrid.js.map +1 -1
- package/dist/v2/components/FormikDisplay.d.ts +50 -1
- package/dist/v2/components/FormikDisplay.d.ts.map +1 -1
- package/dist/v2/components/FormikDisplay.js +108 -33
- package/dist/v2/components/FormikDisplay.js.map +1 -1
- package/dist/v2/components/Input.d.ts +40 -0
- package/dist/v2/components/Input.d.ts.map +1 -1
- package/dist/v2/components/Input.js +81 -41
- package/dist/v2/components/Input.js.map +1 -1
- package/dist/v2/components/KPICard.js +57 -67
- package/dist/v2/components/KPICard.js.map +1 -1
- package/dist/v2/components/KPIStrip.js +16 -22
- package/dist/v2/components/KPIStrip.js.map +1 -1
- package/dist/v2/components/KV.js +25 -31
- package/dist/v2/components/KV.js.map +1 -1
- package/dist/v2/components/KVGrid.js +19 -26
- package/dist/v2/components/KVGrid.js.map +1 -1
- package/dist/v2/components/Layout.js +91 -120
- package/dist/v2/components/Layout.js.map +1 -1
- package/dist/v2/components/MobileRowCard.js +79 -91
- package/dist/v2/components/MobileRowCard.js.map +1 -1
- package/dist/v2/components/Modal.js +61 -69
- package/dist/v2/components/Modal.js.map +1 -1
- package/dist/v2/components/NetworkErrorPage.d.ts +19 -1
- package/dist/v2/components/NetworkErrorPage.d.ts.map +1 -1
- package/dist/v2/components/NetworkErrorPage.js +38 -21
- package/dist/v2/components/NetworkErrorPage.js.map +1 -1
- package/dist/v2/components/NotFoundPage.d.ts +17 -1
- package/dist/v2/components/NotFoundPage.d.ts.map +1 -1
- package/dist/v2/components/NotFoundPage.js +37 -18
- package/dist/v2/components/NotFoundPage.js.map +1 -1
- package/dist/v2/components/NumberInput.js +88 -118
- package/dist/v2/components/NumberInput.js.map +1 -1
- package/dist/v2/components/OverflowMenu.js +38 -56
- package/dist/v2/components/OverflowMenu.js.map +1 -1
- package/dist/v2/components/PdfViewer.js +34 -45
- package/dist/v2/components/PdfViewer.js.map +1 -1
- package/dist/v2/components/ProgressBar.js +42 -49
- package/dist/v2/components/ProgressBar.js.map +1 -1
- package/dist/v2/components/Radio.js +59 -67
- package/dist/v2/components/Radio.js.map +1 -1
- package/dist/v2/components/SectionErrorBoundary.js +90 -135
- package/dist/v2/components/SectionErrorBoundary.js.map +1 -1
- package/dist/v2/components/SectionHeader.js +34 -41
- package/dist/v2/components/SectionHeader.js.map +1 -1
- package/dist/v2/components/Segmented.js +69 -93
- package/dist/v2/components/Segmented.js.map +1 -1
- package/dist/v2/components/Select.d.ts +26 -2
- package/dist/v2/components/Select.d.ts.map +1 -1
- package/dist/v2/components/Select.js +120 -155
- package/dist/v2/components/Select.js.map +1 -1
- package/dist/v2/components/ServerErrorPage.d.ts +27 -1
- package/dist/v2/components/ServerErrorPage.d.ts.map +1 -1
- package/dist/v2/components/ServerErrorPage.js +37 -20
- package/dist/v2/components/ServerErrorPage.js.map +1 -1
- package/dist/v2/components/Skeleton.js +86 -100
- package/dist/v2/components/Skeleton.js.map +1 -1
- package/dist/v2/components/SkipLink.js +9 -12
- package/dist/v2/components/SkipLink.js.map +1 -1
- package/dist/v2/components/Spinner.js +16 -25
- package/dist/v2/components/Spinner.js.map +1 -1
- package/dist/v2/components/Status.js +18 -29
- package/dist/v2/components/Status.js.map +1 -1
- package/dist/v2/components/Stepper.js +80 -82
- package/dist/v2/components/Stepper.js.map +1 -1
- package/dist/v2/components/Surface.js +34 -49
- package/dist/v2/components/Surface.js.map +1 -1
- package/dist/v2/components/Switch.js +29 -37
- package/dist/v2/components/Switch.js.map +1 -1
- package/dist/v2/components/TabPanel.d.ts +17 -0
- package/dist/v2/components/TabPanel.d.ts.map +1 -0
- package/dist/v2/components/TabPanel.js +90 -0
- package/dist/v2/components/TabPanel.js.map +1 -0
- package/dist/v2/components/Tabs.d.ts +25 -0
- package/dist/v2/components/Tabs.d.ts.map +1 -1
- package/dist/v2/components/Tabs.js +53 -29
- package/dist/v2/components/Tabs.js.map +1 -1
- package/dist/v2/components/TelInput.js +80 -115
- package/dist/v2/components/TelInput.js.map +1 -1
- package/dist/v2/components/Textarea.js +26 -35
- package/dist/v2/components/Textarea.js.map +1 -1
- package/dist/v2/components/TimePicker.js +62 -74
- package/dist/v2/components/TimePicker.js.map +1 -1
- package/dist/v2/components/Toast.js +119 -174
- package/dist/v2/components/Toast.js.map +1 -1
- package/dist/v2/components/Tooltip.js +23 -38
- package/dist/v2/components/Tooltip.js.map +1 -1
- package/dist/v2/components/_ErrorPageBody.js +15 -16
- package/dist/v2/components/_ErrorPageBody.js.map +1 -1
- package/dist/v2/components/_pickerShared.js +5 -5
- package/dist/v2/components/_pickerShared.js.map +1 -1
- package/dist/v2/components/index.d.ts +40 -1
- package/dist/v2/components/index.d.ts.map +1 -1
- package/dist/v2/components/index.js +153 -136
- package/dist/v2/components/index.js.map +1 -1
- package/dist/v2/hooks/index.d.ts +65 -0
- package/dist/v2/hooks/index.d.ts.map +1 -1
- package/dist/v2/hooks/index.js +63 -24
- package/dist/v2/hooks/index.js.map +1 -1
- package/dist/v2/hooks/useAppliedFilters.d.ts +102 -0
- package/dist/v2/hooks/useAppliedFilters.d.ts.map +1 -0
- package/dist/v2/hooks/useAppliedFilters.js +117 -0
- package/dist/v2/hooks/useAppliedFilters.js.map +1 -0
- package/dist/v2/hooks/useDebouncedCallback.d.ts +64 -0
- package/dist/v2/hooks/useDebouncedCallback.d.ts.map +1 -0
- package/dist/v2/hooks/useDebouncedCallback.js +87 -0
- package/dist/v2/hooks/useDebouncedCallback.js.map +1 -0
- package/dist/v2/hooks/useDelayedFlag.js +6 -20
- package/dist/v2/hooks/useDelayedFlag.js.map +1 -1
- package/dist/v2/hooks/useDensity.d.ts.map +1 -1
- package/dist/v2/hooks/useDensity.js +14 -18
- package/dist/v2/hooks/useDensity.js.map +1 -1
- package/dist/v2/hooks/useFocusFirstError.js +26 -34
- package/dist/v2/hooks/useFocusFirstError.js.map +1 -1
- package/dist/v2/hooks/useFocusOnRouteChange.d.ts +65 -0
- package/dist/v2/hooks/useFocusOnRouteChange.d.ts.map +1 -0
- package/dist/v2/hooks/useFocusOnRouteChange.js +88 -0
- package/dist/v2/hooks/useFocusOnRouteChange.js.map +1 -0
- package/dist/v2/hooks/useFocusTrap.js +20 -24
- package/dist/v2/hooks/useFocusTrap.js.map +1 -1
- package/dist/v2/hooks/useFormAutoSave.d.ts +4 -4
- package/dist/v2/hooks/useFormAutoSave.d.ts.map +1 -1
- package/dist/v2/hooks/useFormAutoSave.js +39 -54
- package/dist/v2/hooks/useFormAutoSave.js.map +1 -1
- package/dist/v2/hooks/useFormCompletionProgress.d.ts +1 -1
- package/dist/v2/hooks/useFormCompletionProgress.d.ts.map +1 -1
- package/dist/v2/hooks/useFormCompletionProgress.js +33 -52
- package/dist/v2/hooks/useFormCompletionProgress.js.map +1 -1
- package/dist/v2/hooks/useKeyboardShortcuts.d.ts +25 -0
- package/dist/v2/hooks/useKeyboardShortcuts.d.ts.map +1 -0
- package/dist/v2/hooks/useKeyboardShortcuts.js +132 -0
- package/dist/v2/hooks/useKeyboardShortcuts.js.map +1 -0
- package/dist/v2/hooks/usePrefersReducedMotion.d.ts +56 -0
- package/dist/v2/hooks/usePrefersReducedMotion.d.ts.map +1 -0
- package/dist/v2/hooks/usePrefersReducedMotion.js +105 -0
- package/dist/v2/hooks/usePrefersReducedMotion.js.map +1 -0
- package/dist/v2/hooks/useResolvedDensity.js +5 -13
- package/dist/v2/hooks/useResolvedDensity.js.map +1 -1
- package/dist/v2/hooks/useSortedRows.js +4 -6
- package/dist/v2/hooks/useSortedRows.js.map +1 -1
- package/dist/v2/hooks/useTabLoading.js +7 -22
- package/dist/v2/hooks/useTabLoading.js.map +1 -1
- package/dist/v2/index.js +143 -145
- package/dist/v2/index.js.map +1 -1
- package/dist/v2/modalContext.js +2 -2
- package/dist/v2/modalContext.js.map +1 -1
- package/dist/v2/models/favorite.d.ts +8 -9
- package/dist/v2/models/favorite.d.ts.map +1 -1
- package/dist/v2/models/favorite.js.map +1 -1
- package/dist/v2/models/index.js +4 -4
- package/dist/v2/models/index.js.map +1 -1
- package/dist/v2/models/personalization.d.ts +44 -48
- package/dist/v2/models/personalization.d.ts.map +1 -1
- package/dist/v2/models/personalization.js.map +1 -1
- package/dist/v2/models/referentiel.d.ts +32 -50
- package/dist/v2/models/referentiel.d.ts.map +1 -1
- package/dist/v2/models/referentiel.js.map +1 -1
- package/dist/v2/models/savedFilter.d.ts +8 -17
- package/dist/v2/models/savedFilter.d.ts.map +1 -1
- package/dist/v2/models/savedFilter.js.map +1 -1
- package/dist/v2/patterns/ActionBar.js +152 -187
- package/dist/v2/patterns/ActionBar.js.map +1 -1
- package/dist/v2/patterns/AppMain.d.ts +109 -0
- package/dist/v2/patterns/AppMain.d.ts.map +1 -0
- package/dist/v2/patterns/AppMain.js +115 -0
- package/dist/v2/patterns/AppMain.js.map +1 -0
- package/dist/v2/patterns/BulkActionBar.js +40 -42
- package/dist/v2/patterns/BulkActionBar.js.map +1 -1
- package/dist/v2/patterns/ChartFigure.d.ts +124 -0
- package/dist/v2/patterns/ChartFigure.d.ts.map +1 -0
- package/dist/v2/patterns/ChartFigure.js +159 -0
- package/dist/v2/patterns/ChartFigure.js.map +1 -0
- package/dist/v2/patterns/CollapsibleDataGrid.js +138 -174
- package/dist/v2/patterns/CollapsibleDataGrid.js.map +1 -1
- package/dist/v2/patterns/ColumnsToggle.js +60 -94
- package/dist/v2/patterns/ColumnsToggle.js.map +1 -1
- package/dist/v2/patterns/DataGrid.d.ts.map +1 -1
- package/dist/v2/patterns/DataGrid.js +262 -297
- package/dist/v2/patterns/DataGrid.js.map +1 -1
- package/dist/v2/patterns/DataGridSettingsMenu.d.ts +12 -0
- package/dist/v2/patterns/DataGridSettingsMenu.d.ts.map +1 -1
- package/dist/v2/patterns/DataGridSettingsMenu.js +104 -121
- package/dist/v2/patterns/DataGridSettingsMenu.js.map +1 -1
- package/dist/v2/patterns/DataGridToolbar.js +103 -106
- package/dist/v2/patterns/DataGridToolbar.js.map +1 -1
- package/dist/v2/patterns/DataGridVirtualized.js +179 -217
- package/dist/v2/patterns/DataGridVirtualized.js.map +1 -1
- package/dist/v2/patterns/DeleteResourceConfirmDialog.js +32 -35
- package/dist/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
- package/dist/v2/patterns/DetailSplit.d.ts +87 -0
- package/dist/v2/patterns/DetailSplit.d.ts.map +1 -0
- package/dist/v2/patterns/DetailSplit.js +116 -0
- package/dist/v2/patterns/DetailSplit.js.map +1 -0
- package/dist/v2/patterns/FavoriteColumn.js +22 -23
- package/dist/v2/patterns/FavoriteColumn.js.map +1 -1
- package/dist/v2/patterns/FavoritesFilter.js +36 -44
- package/dist/v2/patterns/FavoritesFilter.js.map +1 -1
- package/dist/v2/patterns/FilterTabBar.d.ts +28 -0
- package/dist/v2/patterns/FilterTabBar.d.ts.map +1 -0
- package/dist/v2/patterns/FilterTabBar.js +120 -0
- package/dist/v2/patterns/FilterTabBar.js.map +1 -0
- package/dist/v2/patterns/FormErrorSummary.js +20 -23
- package/dist/v2/patterns/FormErrorSummary.js.map +1 -1
- package/dist/v2/patterns/FormPageShell.js +53 -50
- package/dist/v2/patterns/FormPageShell.js.map +1 -1
- package/dist/v2/patterns/FormSection.d.ts +8 -3
- package/dist/v2/patterns/FormSection.d.ts.map +1 -1
- package/dist/v2/patterns/FormSection.js +44 -51
- package/dist/v2/patterns/FormSection.js.map +1 -1
- package/dist/v2/patterns/FormikCheckbox.js +36 -45
- package/dist/v2/patterns/FormikCheckbox.js.map +1 -1
- package/dist/v2/patterns/FormikCheckboxGroup.d.ts +17 -1
- package/dist/v2/patterns/FormikCheckboxGroup.d.ts.map +1 -1
- package/dist/v2/patterns/FormikCheckboxGroup.js +62 -65
- package/dist/v2/patterns/FormikCheckboxGroup.js.map +1 -1
- package/dist/v2/patterns/FormikCombobox.js +55 -72
- package/dist/v2/patterns/FormikCombobox.js.map +1 -1
- package/dist/v2/patterns/FormikDatePicker.js +50 -64
- package/dist/v2/patterns/FormikDatePicker.js.map +1 -1
- package/dist/v2/patterns/FormikDateTimePicker.js +50 -64
- package/dist/v2/patterns/FormikDateTimePicker.js.map +1 -1
- package/dist/v2/patterns/FormikErrorFocus.js +25 -26
- package/dist/v2/patterns/FormikErrorFocus.js.map +1 -1
- package/dist/v2/patterns/FormikErrorSummary.d.ts +74 -0
- package/dist/v2/patterns/FormikErrorSummary.d.ts.map +1 -0
- package/dist/v2/patterns/FormikErrorSummary.js +97 -0
- package/dist/v2/patterns/FormikErrorSummary.js.map +1 -0
- package/dist/v2/patterns/FormikFile.d.ts +14 -1
- package/dist/v2/patterns/FormikFile.d.ts.map +1 -1
- package/dist/v2/patterns/FormikFile.js +99 -83
- package/dist/v2/patterns/FormikFile.js.map +1 -1
- package/dist/v2/patterns/FormikInput.js +45 -58
- package/dist/v2/patterns/FormikInput.js.map +1 -1
- package/dist/v2/patterns/FormikRadioGroup.js +45 -56
- package/dist/v2/patterns/FormikRadioGroup.js.map +1 -1
- package/dist/v2/patterns/FormikReferentielField.d.ts +12 -1
- package/dist/v2/patterns/FormikReferentielField.d.ts.map +1 -1
- package/dist/v2/patterns/FormikReferentielField.js +54 -64
- package/dist/v2/patterns/FormikReferentielField.js.map +1 -1
- package/dist/v2/patterns/FormikSelect.js +70 -92
- package/dist/v2/patterns/FormikSelect.js.map +1 -1
- package/dist/v2/patterns/FormikTextarea.js +35 -51
- package/dist/v2/patterns/FormikTextarea.js.map +1 -1
- package/dist/v2/patterns/KeyboardShortcutsHelp.js +60 -80
- package/dist/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
- package/dist/v2/patterns/NetworkErrorBanner.js +13 -16
- package/dist/v2/patterns/NetworkErrorBanner.js.map +1 -1
- package/dist/v2/patterns/PageContent.js +17 -20
- package/dist/v2/patterns/PageContent.js.map +1 -1
- package/dist/v2/patterns/PreviewDrawer.d.ts +49 -0
- package/dist/v2/patterns/PreviewDrawer.d.ts.map +1 -0
- package/dist/v2/patterns/PreviewDrawer.js +159 -0
- package/dist/v2/patterns/PreviewDrawer.js.map +1 -0
- package/dist/v2/patterns/ReferentielField.d.ts +86 -2
- package/dist/v2/patterns/ReferentielField.d.ts.map +1 -1
- package/dist/v2/patterns/ReferentielField.js +347 -327
- package/dist/v2/patterns/ReferentielField.js.map +1 -1
- package/dist/v2/patterns/RowFavoriteToggle.d.ts +6 -0
- package/dist/v2/patterns/RowFavoriteToggle.d.ts.map +1 -1
- package/dist/v2/patterns/RowFavoriteToggle.js +38 -30
- package/dist/v2/patterns/RowFavoriteToggle.js.map +1 -1
- package/dist/v2/patterns/SaveFilterDialog.js +50 -77
- package/dist/v2/patterns/SaveFilterDialog.js.map +1 -1
- package/dist/v2/patterns/SavedFiltersMenu.js +89 -107
- package/dist/v2/patterns/SavedFiltersMenu.js.map +1 -1
- package/dist/v2/patterns/SkeletonPageShell.js +122 -143
- package/dist/v2/patterns/SkeletonPageShell.js.map +1 -1
- package/dist/v2/patterns/SortableHeader.js +35 -57
- package/dist/v2/patterns/SortableHeader.js.map +1 -1
- package/dist/v2/patterns/Tour.js +121 -142
- package/dist/v2/patterns/Tour.js.map +1 -1
- package/dist/v2/patterns/_dataGridShared.d.ts.map +1 -1
- package/dist/v2/patterns/_dataGridShared.js +131 -147
- package/dist/v2/patterns/_dataGridShared.js.map +1 -1
- package/dist/v2/patterns/_pickerSerialisation.js +9 -10
- package/dist/v2/patterns/_pickerSerialisation.js.map +1 -1
- package/dist/v2/patterns/_sort.js +17 -33
- package/dist/v2/patterns/_sort.js.map +1 -1
- package/dist/v2/patterns/_useColumnReorder.js +124 -163
- package/dist/v2/patterns/_useColumnReorder.js.map +1 -1
- package/dist/v2/patterns/_useColumnResize.js +80 -99
- package/dist/v2/patterns/_useColumnResize.js.map +1 -1
- package/dist/v2/patterns/filterCriteria.d.ts +78 -0
- package/dist/v2/patterns/filterCriteria.d.ts.map +1 -0
- package/dist/v2/patterns/filterCriteria.js +110 -0
- package/dist/v2/patterns/filterCriteria.js.map +1 -0
- package/dist/v2/patterns/index.d.ts +160 -0
- package/dist/v2/patterns/index.d.ts.map +1 -1
- package/dist/v2/patterns/index.js +157 -79
- package/dist/v2/patterns/index.js.map +1 -1
- package/dist/v2/patterns/rowActions.d.ts +150 -0
- package/dist/v2/patterns/rowActions.d.ts.map +1 -0
- package/dist/v2/patterns/rowActions.js +232 -0
- package/dist/v2/patterns/rowActions.js.map +1 -0
- package/dist/v2/personalization/PersonalizationProvider.d.ts.map +1 -1
- package/dist/v2/personalization/PersonalizationProvider.js +57 -53
- package/dist/v2/personalization/PersonalizationProvider.js.map +1 -1
- package/dist/v2/personalization/adapters/_storageKey.js +5 -5
- package/dist/v2/personalization/adapters/_storageKey.js.map +1 -1
- package/dist/v2/personalization/adapters/createLocalStorageAdapter.js +25 -24
- package/dist/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
- package/dist/v2/personalization/adapters/createMemoryAdapter.js +14 -14
- package/dist/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
- package/dist/v2/personalization/adapters/index.js +5 -5
- package/dist/v2/personalization/adapters/index.js.map +1 -1
- package/dist/v2/personalization/capabilities/favorites.js +39 -62
- package/dist/v2/personalization/capabilities/favorites.js.map +1 -1
- package/dist/v2/personalization/capabilities/favoritesView.js +25 -37
- package/dist/v2/personalization/capabilities/favoritesView.js.map +1 -1
- package/dist/v2/personalization/capabilities/gridPreferences.js +31 -36
- package/dist/v2/personalization/capabilities/gridPreferences.js.map +1 -1
- package/dist/v2/personalization/capabilities/index.js +12 -12
- package/dist/v2/personalization/capabilities/reviveSavedCriteria.d.ts +88 -0
- package/dist/v2/personalization/capabilities/reviveSavedCriteria.d.ts.map +1 -0
- package/dist/v2/personalization/capabilities/reviveSavedCriteria.js +126 -0
- package/dist/v2/personalization/capabilities/reviveSavedCriteria.js.map +1 -0
- package/dist/v2/personalization/capabilities/savedFilters.js +93 -100
- package/dist/v2/personalization/capabilities/savedFilters.js.map +1 -1
- package/dist/v2/personalization/createPersonalizationStore.d.ts.map +1 -1
- package/dist/v2/personalization/createPersonalizationStore.js +81 -182
- package/dist/v2/personalization/createPersonalizationStore.js.map +1 -1
- package/dist/v2/personalization/index.d.ts +16 -0
- package/dist/v2/personalization/index.d.ts.map +1 -1
- package/dist/v2/personalization/index.js +30 -23
- package/dist/v2/personalization/index.js.map +1 -1
- package/dist/v2/personalization/personalizationContext.js +10 -12
- package/dist/v2/personalization/personalizationContext.js.map +1 -1
- package/dist/v2/personalization/schema.js +8 -9
- package/dist/v2/personalization/schema.js.map +1 -1
- package/dist/v2/referentiel/ReferentielProvider.js +31 -45
- package/dist/v2/referentiel/ReferentielProvider.js.map +1 -1
- package/dist/v2/referentiel/index.js +11 -13
- package/dist/v2/referentiel/index.js.map +1 -1
- package/dist/v2/referentiel/types.d.ts +105 -0
- package/dist/v2/referentiel/types.d.ts.map +1 -0
- package/dist/v2/referentiel/types.js +6 -0
- package/dist/v2/referentiel/types.js.map +1 -0
- package/dist/v2/referentiel/useReferentielClient.js +13 -16
- package/dist/v2/referentiel/useReferentielClient.js.map +1 -1
- package/dist/v2/referentiel/useReferentielOptions.d.ts +7 -17
- package/dist/v2/referentiel/useReferentielOptions.d.ts.map +1 -1
- package/dist/v2/referentiel/useReferentielOptions.js +63 -120
- package/dist/v2/referentiel/useReferentielOptions.js.map +1 -1
- package/dist/v2/referentiel/useReferentielSearch.d.ts +7 -48
- package/dist/v2/referentiel/useReferentielSearch.d.ts.map +1 -1
- package/dist/v2/referentiel/useReferentielSearch.js +40 -95
- package/dist/v2/referentiel/useReferentielSearch.js.map +1 -1
- package/dist/v2/theme/_brand.js +12 -26
- package/dist/v2/theme/_brand.js.map +1 -1
- package/dist/v2/theme/_brandSecondary.js +12 -26
- package/dist/v2/theme/_brandSecondary.js.map +1 -1
- package/dist/v2/theme/createPortnetTheme.js +41 -49
- package/dist/v2/theme/createPortnetTheme.js.map +1 -1
- package/dist/v2/theme/cssVariables.d.ts +3 -3
- package/dist/v2/theme/cssVariables.d.ts.map +1 -1
- package/dist/v2/theme/cssVariables.js +65 -70
- package/dist/v2/theme/cssVariables.js.map +1 -1
- package/dist/v2/theme/index.js +10 -10
- package/dist/v2/theme/index.js.map +1 -1
- package/dist/v2/tokens/breakpoints.js +16 -16
- package/dist/v2/tokens/breakpoints.js.map +1 -1
- package/dist/v2/tokens/chart.d.ts +103 -0
- package/dist/v2/tokens/chart.d.ts.map +1 -0
- package/dist/v2/tokens/chart.js +270 -0
- package/dist/v2/tokens/chart.js.map +1 -0
- package/dist/v2/tokens/colors.js +24 -24
- package/dist/v2/tokens/colors.js.map +1 -1
- package/dist/v2/tokens/density.d.ts +104 -0
- package/dist/v2/tokens/density.d.ts.map +1 -1
- package/dist/v2/tokens/density.js +67 -12
- package/dist/v2/tokens/density.js.map +1 -1
- package/dist/v2/tokens/index.d.ts +50 -1
- package/dist/v2/tokens/index.d.ts.map +1 -1
- package/dist/v2/tokens/index.js +116 -68
- package/dist/v2/tokens/index.js.map +1 -1
- package/dist/v2/tokens/motion.js +16 -22
- package/dist/v2/tokens/motion.js.map +1 -1
- package/dist/v2/tokens/radius.js +3 -3
- package/dist/v2/tokens/radius.js.map +1 -1
- package/dist/v2/tokens/shadows.js +8 -8
- package/dist/v2/tokens/shadows.js.map +1 -1
- package/dist/v2/tokens/spacing.js +4 -4
- package/dist/v2/tokens/spacing.js.map +1 -1
- package/dist/v2/tokens/state.js +3 -3
- package/dist/v2/tokens/state.js.map +1 -1
- package/dist/v2/tokens/statusPalette.js +21 -23
- package/dist/v2/tokens/statusPalette.js.map +1 -1
- package/dist/v2/tokens/tokens.json +6 -1
- package/dist/v2/tokens/typography.js +15 -15
- package/dist/v2/tokens/typography.js.map +1 -1
- package/dist/v2/tokens/zIndex.js +3 -3
- package/dist/v2/tokens/zIndex.js.map +1 -1
- package/dist/v2/types/datagrid.d.ts +9 -1
- package/dist/v2/types/datagrid.d.ts.map +1 -1
- package/dist/v2/types/datagrid.js.map +1 -1
- package/dist/v2/types/index.js +2 -2
- package/dist/v2/types/index.js.map +1 -1
- package/dist/v2/utils/apiError.js +16 -37
- package/dist/v2/utils/apiError.js.map +1 -1
- package/dist/v2/utils/contrast.js +31 -32
- package/dist/v2/utils/contrast.js.map +1 -1
- package/dist/v2/utils/cx.js +7 -27
- package/dist/v2/utils/cx.js.map +1 -1
- package/dist/v2/utils/fileDownload.js +25 -28
- package/dist/v2/utils/fileDownload.js.map +1 -1
- package/dist/v2/utils/fileValidation.d.ts +116 -0
- package/dist/v2/utils/fileValidation.d.ts.map +1 -0
- package/dist/v2/utils/fileValidation.js +220 -0
- package/dist/v2/utils/fileValidation.js.map +1 -0
- package/dist/v2/utils/fmtDate.d.ts +103 -0
- package/dist/v2/utils/fmtDate.d.ts.map +1 -0
- package/dist/v2/utils/fmtDate.js +119 -0
- package/dist/v2/utils/fmtDate.js.map +1 -0
- package/dist/v2/utils/fmtMoney.d.ts +3 -3
- package/dist/v2/utils/fmtMoney.d.ts.map +1 -1
- package/dist/v2/utils/fmtMoney.js +9 -11
- package/dist/v2/utils/fmtMoney.js.map +1 -1
- package/dist/v2/utils/formikErrors.d.ts +67 -0
- package/dist/v2/utils/formikErrors.d.ts.map +1 -0
- package/dist/v2/utils/formikErrors.js +85 -0
- package/dist/v2/utils/formikErrors.js.map +1 -0
- package/dist/v2/utils/index.d.ts +5 -0
- package/dist/v2/utils/index.d.ts.map +1 -1
- package/dist/v2/utils/index.js +67 -18
- package/dist/v2/utils/index.js.map +1 -1
- package/dist/v2/utils/mergeLabels.js +9 -14
- package/dist/v2/utils/mergeLabels.js.map +1 -1
- package/dist/v2/utils/networkStatus.js +14 -14
- package/dist/v2/utils/networkStatus.js.map +1 -1
- package/package.json +26 -9
|
@@ -3,20 +3,14 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports
|
|
6
|
+
exports.default = void 0;
|
|
7
7
|
var React = _interopRequireWildcard(require("react"));
|
|
8
8
|
var _Box = _interopRequireDefault(require("@mui/material/Box"));
|
|
9
9
|
var _ErrorOutlined = _interopRequireDefault(require("@mui/icons-material/ErrorOutlined"));
|
|
10
10
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
|
-
function _interopRequireDefault(
|
|
12
|
-
function
|
|
13
|
-
|
|
14
|
-
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); }
|
|
15
|
-
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; }
|
|
16
|
-
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; }
|
|
17
|
-
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; }
|
|
18
|
-
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
19
|
-
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } /**
|
|
11
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
13
|
+
/**
|
|
20
14
|
* FieldError — Portnet UI v2
|
|
21
15
|
*
|
|
22
16
|
* Charter R-4.1 MUST: « Toute erreur de champ s'affiche SOUS le champ, en rouge,
|
|
@@ -75,14 +69,16 @@ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input ==
|
|
|
75
69
|
* No `!important` — the previous `FormHelperText` needed one to beat MUI's own
|
|
76
70
|
* `Mui-error` colour; rendering a plain Box removes the specificity fight.
|
|
77
71
|
*/
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
72
|
+
|
|
73
|
+
function FieldError({
|
|
74
|
+
children,
|
|
75
|
+
id,
|
|
76
|
+
sx
|
|
77
|
+
}) {
|
|
78
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
|
|
83
79
|
role: "alert",
|
|
84
80
|
id: id,
|
|
85
|
-
sx:
|
|
81
|
+
sx: {
|
|
86
82
|
display: "flex",
|
|
87
83
|
// `flex-start`, not `center`: a message that wraps to two lines must
|
|
88
84
|
// keep its icon aligned with the FIRST line, not vertically centred
|
|
@@ -97,9 +93,10 @@ function FieldError(_ref) {
|
|
|
97
93
|
lineHeight: "var(--lh-normal)",
|
|
98
94
|
// RTL-safe: resets the logical inline-start edge, so the message is
|
|
99
95
|
// flush with the control in both directions.
|
|
100
|
-
marginInlineStart: 0
|
|
101
|
-
|
|
102
|
-
|
|
96
|
+
marginInlineStart: 0,
|
|
97
|
+
...sx
|
|
98
|
+
},
|
|
99
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_ErrorOutlined.default, {
|
|
103
100
|
"aria-hidden": "true"
|
|
104
101
|
/* Test hook — the glyph has no role and no accessible name by design
|
|
105
102
|
* (R-Ar.2), so no semantic query reaches it. Same sanctioned escape
|
|
@@ -121,11 +118,11 @@ function FieldError(_ref) {
|
|
|
121
118
|
style: {
|
|
122
119
|
marginTop: 1
|
|
123
120
|
}
|
|
124
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box
|
|
121
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
|
|
125
122
|
component: "span",
|
|
126
123
|
children: children
|
|
127
124
|
})]
|
|
128
125
|
});
|
|
129
126
|
}
|
|
130
|
-
var _default = exports
|
|
127
|
+
var _default = exports.default = FieldError;
|
|
131
128
|
//# sourceMappingURL=FieldError.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FieldError.js","names":["React","_interopRequireWildcard","require","_Box","_interopRequireDefault","_ErrorOutlined","_jsxRuntime","obj","__esModule","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","Symbol","iterator","constructor","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","toPrimitive","undefined","res","TypeError","Number","FieldError","_ref","children","id","sx","jsxs","role","display","alignItems","gap","color","fontSize","fontWeight","lineHeight","marginInlineStart","jsx","flexShrink","style","marginTop","component","_default","exports"],"sources":["../../../src/lib/v2/components/FieldError.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\nimport ErrorIcon from \"@mui/icons-material/ErrorOutlined\";\r\n\r\n/**\r\n * FieldError — Portnet UI v2\r\n *\r\n * Charter R-4.1 MUST: « Toute erreur de champ s'affiche SOUS le champ, en rouge,\r\n * AVEC ICÔNE, max 1 phrase, verbe d'action. »\r\n *\r\n * ─────────────────────────────────────────────────────────────────────────────\r\n * WHY THIS BELONGS IN THE LIBRARY (capability gap G-18)\r\n *\r\n * Two defects closed at once, and they were the same defect seen from both ends.\r\n *\r\n * 1. `Field` rendered its error message as a bare `FormHelperText` — red, under\r\n * the field, one sentence, and NO ICON. R-4.1 is a MUST and the canonical\r\n * field wrapper of the design system did not satisfy it, so every module\r\n * inherited the gap on every form.\r\n *\r\n * 2. A field error is not always attached to a `Field`. A LIST-level error\r\n * (`errors.articles`, `errors.autorisationPdf` — a Formik array or an upload\r\n * slot) has no single control to wrap, and `Field` requires exactly one\r\n * `children` element. Hosts therefore hand-rolled the block: addpe-fe's\r\n * `InlineFieldAlert` reimplemented the icon + `role=\"alert\"` + danger token\r\n * recipe locally — and, ironically, was MORE charter-compliant than the\r\n * shared component it could not use.\r\n *\r\n * Owning the renderer here means the two paths cannot drift: the error a user\r\n * sees under an `<Input>` and the one under an articles table are the same\r\n * component.\r\n * ─────────────────────────────────────────────────────────────────────────────\r\n *\r\n * Used INSIDE `Field` (it supplies `id`, wired to the control's\r\n * `aria-describedby`), and standalone by a host:\r\n *\r\n * {typeof errors.articles === \"string\" && (\r\n * <FieldError sx={{ marginTop: \"var(--s-2)\" }}>{errors.articles}</FieldError>\r\n * )}\r\n *\r\n * Accessibility\r\n * - `role=\"alert\"`: the element MOUNTS when the error appears, which is what\r\n * makes a screen reader announce it. Do not render it permanently with empty\r\n * content — an always-present live region announces nothing on change.\r\n * - The icon is `aria-hidden`: it is redundant with the message, and R-Ar.2\r\n * forbids a decorative icon carrying an accessible name.\r\n * - Iconography is deliberately the SAME as `Banner`'s error variant\r\n * (`ErrorOutlined`), so \"something is wrong\" reads identically whether it\r\n * surfaces inline or in a banner.\r\n *\r\n * Colour: the message TEXT takes `--danger-fg`, the icon takes `--danger`. That\r\n * split is not cosmetic and it is the rule `KPICard` already documents for its\r\n * delta indicator: `--danger` is the VIVID UI colour, held to WCAG 1.4.11's 3:1\r\n * non-text threshold, while `--danger-fg` is the TEXT colour, held to 1.4.3's\r\n * 4.5:1. Using `--danger` for the message would render it at a ratio calibrated\r\n * for icons and borders — which is what the module-local `InlineFieldAlert` this\r\n * component replaced did, and what `Field`'s own error text did before it\r\n * delegated here. Promoting that mistake into a shared component would have made\r\n * it fleet-wide, on every field error of every module.\r\n *\r\n * No `!important` — the previous `FormHelperText` needed one to beat MUI's own\r\n * `Mui-error` colour; rendering a plain Box removes the specificity fight.\r\n */\r\n\r\nexport interface FieldErrorProps {\r\n /** The message. One sentence, action verb (Charter §09.3). */\r\n children: React.ReactNode;\r\n /**\r\n * DOM id referenced by the control's `aria-describedby`. `Field` supplies it;\r\n * a standalone list-level error usually has nothing to bind to and omits it.\r\n */\r\n id?: string | undefined;\r\n /**\r\n * Spacing / layout overrides. Standalone call sites typically need a\r\n * `marginTop`; inside `Field` the vertical rhythm is already handled.\r\n */\r\n sx?: SxProps<Theme> | undefined;\r\n}\r\n\r\nfunction FieldError({ children, id, sx }: FieldErrorProps) {\r\n return (\r\n <Box\r\n role=\"alert\"\r\n id={id}\r\n sx={{\r\n display: \"flex\",\r\n // `flex-start`, not `center`: a message that wraps to two lines must\r\n // keep its icon aligned with the FIRST line, not vertically centred\r\n // against the whole block.\r\n alignItems: \"flex-start\",\r\n gap: \"var(--s-1)\",\r\n // WCAG 1.4.3 — message text at the 4.5:1-calibrated token, NOT `--danger`\r\n // (see the colour note in this file's header).\r\n color: \"var(--danger-fg)\",\r\n fontSize: \"var(--text-xs)\",\r\n fontWeight: \"var(--fw-medium)\",\r\n lineHeight: \"var(--lh-normal)\",\r\n // RTL-safe: resets the logical inline-start edge, so the message is\r\n // flush with the control in both directions.\r\n marginInlineStart: 0,\r\n ...sx,\r\n }}\r\n >\r\n <ErrorIcon\r\n aria-hidden=\"true\"\r\n /* Test hook — the glyph has no role and no accessible name by design\r\n * (R-Ar.2), so no semantic query reaches it. Same sanctioned escape\r\n * hatch as FileCard's filecard-icon, and it guards the same contract:\r\n * a decorative icon must not be announced. */\r\n data-testid=\"fielderror-icon\"\r\n sx={{\r\n // --text-h3 is the 16px token; matches the message's optical scale.\r\n fontSize: \"var(--text-h3)\",\r\n flexShrink: 0,\r\n // WCAG 1.4.11 — the glyph stays VIVID at the 3:1 non-text threshold,\r\n // which is the whole point of keeping two danger tokens.\r\n color: \"var(--danger)\",\r\n }}\r\n // Optical alignment of the glyph with the first text line. Same\r\n // rationale (and same 1px order of magnitude) as Banner's leading icon:\r\n // a deliberate non-token value, not a spacing-scale concern.\r\n style={{ marginTop: 1 }}\r\n />\r\n <Box component=\"span\">{children}</Box>\r\n </Box>\r\n );\r\n}\r\n\r\nexport default FieldError;\r\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"FieldError.js","names":["React","_interopRequireWildcard","require","_Box","_interopRequireDefault","_ErrorOutlined","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","FieldError","children","id","sx","jsxs","role","display","alignItems","gap","color","fontSize","fontWeight","lineHeight","marginInlineStart","jsx","flexShrink","style","marginTop","component","_default","exports"],"sources":["../../../src/lib/v2/components/FieldError.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\nimport ErrorIcon from \"@mui/icons-material/ErrorOutlined\";\r\n\r\n/**\r\n * FieldError — Portnet UI v2\r\n *\r\n * Charter R-4.1 MUST: « Toute erreur de champ s'affiche SOUS le champ, en rouge,\r\n * AVEC ICÔNE, max 1 phrase, verbe d'action. »\r\n *\r\n * ─────────────────────────────────────────────────────────────────────────────\r\n * WHY THIS BELONGS IN THE LIBRARY (capability gap G-18)\r\n *\r\n * Two defects closed at once, and they were the same defect seen from both ends.\r\n *\r\n * 1. `Field` rendered its error message as a bare `FormHelperText` — red, under\r\n * the field, one sentence, and NO ICON. R-4.1 is a MUST and the canonical\r\n * field wrapper of the design system did not satisfy it, so every module\r\n * inherited the gap on every form.\r\n *\r\n * 2. A field error is not always attached to a `Field`. A LIST-level error\r\n * (`errors.articles`, `errors.autorisationPdf` — a Formik array or an upload\r\n * slot) has no single control to wrap, and `Field` requires exactly one\r\n * `children` element. Hosts therefore hand-rolled the block: addpe-fe's\r\n * `InlineFieldAlert` reimplemented the icon + `role=\"alert\"` + danger token\r\n * recipe locally — and, ironically, was MORE charter-compliant than the\r\n * shared component it could not use.\r\n *\r\n * Owning the renderer here means the two paths cannot drift: the error a user\r\n * sees under an `<Input>` and the one under an articles table are the same\r\n * component.\r\n * ─────────────────────────────────────────────────────────────────────────────\r\n *\r\n * Used INSIDE `Field` (it supplies `id`, wired to the control's\r\n * `aria-describedby`), and standalone by a host:\r\n *\r\n * {typeof errors.articles === \"string\" && (\r\n * <FieldError sx={{ marginTop: \"var(--s-2)\" }}>{errors.articles}</FieldError>\r\n * )}\r\n *\r\n * Accessibility\r\n * - `role=\"alert\"`: the element MOUNTS when the error appears, which is what\r\n * makes a screen reader announce it. Do not render it permanently with empty\r\n * content — an always-present live region announces nothing on change.\r\n * - The icon is `aria-hidden`: it is redundant with the message, and R-Ar.2\r\n * forbids a decorative icon carrying an accessible name.\r\n * - Iconography is deliberately the SAME as `Banner`'s error variant\r\n * (`ErrorOutlined`), so \"something is wrong\" reads identically whether it\r\n * surfaces inline or in a banner.\r\n *\r\n * Colour: the message TEXT takes `--danger-fg`, the icon takes `--danger`. That\r\n * split is not cosmetic and it is the rule `KPICard` already documents for its\r\n * delta indicator: `--danger` is the VIVID UI colour, held to WCAG 1.4.11's 3:1\r\n * non-text threshold, while `--danger-fg` is the TEXT colour, held to 1.4.3's\r\n * 4.5:1. Using `--danger` for the message would render it at a ratio calibrated\r\n * for icons and borders — which is what the module-local `InlineFieldAlert` this\r\n * component replaced did, and what `Field`'s own error text did before it\r\n * delegated here. Promoting that mistake into a shared component would have made\r\n * it fleet-wide, on every field error of every module.\r\n *\r\n * No `!important` — the previous `FormHelperText` needed one to beat MUI's own\r\n * `Mui-error` colour; rendering a plain Box removes the specificity fight.\r\n */\r\n\r\nexport interface FieldErrorProps {\r\n /** The message. One sentence, action verb (Charter §09.3). */\r\n children: React.ReactNode;\r\n /**\r\n * DOM id referenced by the control's `aria-describedby`. `Field` supplies it;\r\n * a standalone list-level error usually has nothing to bind to and omits it.\r\n */\r\n id?: string | undefined;\r\n /**\r\n * Spacing / layout overrides. Standalone call sites typically need a\r\n * `marginTop`; inside `Field` the vertical rhythm is already handled.\r\n */\r\n sx?: SxProps<Theme> | undefined;\r\n}\r\n\r\nfunction FieldError({ children, id, sx }: FieldErrorProps) {\r\n return (\r\n <Box\r\n role=\"alert\"\r\n id={id}\r\n sx={{\r\n display: \"flex\",\r\n // `flex-start`, not `center`: a message that wraps to two lines must\r\n // keep its icon aligned with the FIRST line, not vertically centred\r\n // against the whole block.\r\n alignItems: \"flex-start\",\r\n gap: \"var(--s-1)\",\r\n // WCAG 1.4.3 — message text at the 4.5:1-calibrated token, NOT `--danger`\r\n // (see the colour note in this file's header).\r\n color: \"var(--danger-fg)\",\r\n fontSize: \"var(--text-xs)\",\r\n fontWeight: \"var(--fw-medium)\",\r\n lineHeight: \"var(--lh-normal)\",\r\n // RTL-safe: resets the logical inline-start edge, so the message is\r\n // flush with the control in both directions.\r\n marginInlineStart: 0,\r\n ...sx,\r\n }}\r\n >\r\n <ErrorIcon\r\n aria-hidden=\"true\"\r\n /* Test hook — the glyph has no role and no accessible name by design\r\n * (R-Ar.2), so no semantic query reaches it. Same sanctioned escape\r\n * hatch as FileCard's filecard-icon, and it guards the same contract:\r\n * a decorative icon must not be announced. */\r\n data-testid=\"fielderror-icon\"\r\n sx={{\r\n // --text-h3 is the 16px token; matches the message's optical scale.\r\n fontSize: \"var(--text-h3)\",\r\n flexShrink: 0,\r\n // WCAG 1.4.11 — the glyph stays VIVID at the 3:1 non-text threshold,\r\n // which is the whole point of keeping two danger tokens.\r\n color: \"var(--danger)\",\r\n }}\r\n // Optical alignment of the glyph with the first text line. Same\r\n // rationale (and same 1px order of magnitude) as Banner's leading icon:\r\n // a deliberate non-token value, not a spacing-scale concern.\r\n style={{ marginTop: 1 }}\r\n />\r\n <Box component=\"span\">{children}</Box>\r\n </Box>\r\n );\r\n}\r\n\r\nexport default FieldError;\r\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
4
3
|
Object.defineProperty(exports, "__esModule", {
|
|
5
4
|
value: true
|
|
6
5
|
});
|
|
7
|
-
exports
|
|
6
|
+
exports.default = void 0;
|
|
8
7
|
var React = _interopRequireWildcard(require("react"));
|
|
9
8
|
var _Tooltip = _interopRequireDefault(require("@mui/material/Tooltip"));
|
|
10
9
|
var _IconButton = _interopRequireDefault(require("@mui/material/IconButton"));
|
|
@@ -13,20 +12,9 @@ var _Popover = _interopRequireDefault(require("@mui/material/Popover"));
|
|
|
13
12
|
var _HelpOutlineOutlined = _interopRequireDefault(require("@mui/icons-material/HelpOutlineOutlined"));
|
|
14
13
|
var _InfoOutlined = _interopRequireDefault(require("@mui/icons-material/InfoOutlined"));
|
|
15
14
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
16
|
-
function _interopRequireDefault(
|
|
17
|
-
function
|
|
18
|
-
|
|
19
|
-
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; }
|
|
20
|
-
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; }
|
|
21
|
-
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; }
|
|
22
|
-
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
23
|
-
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); }
|
|
24
|
-
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
25
|
-
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."); }
|
|
26
|
-
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); }
|
|
27
|
-
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; }
|
|
28
|
-
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; } }
|
|
29
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } /**
|
|
15
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
16
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
17
|
+
/**
|
|
30
18
|
* FieldHelp - Portnet UI v2 (component)
|
|
31
19
|
*
|
|
32
20
|
* Charter §03 · Component "FieldHelp · Contextual help".
|
|
@@ -59,8 +47,9 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } /**
|
|
|
59
47
|
* dialog to assistive tech. Tooltip variant relies on MUI
|
|
60
48
|
* Tooltip's automatic aria-describedby plumbing on the wrapped child.
|
|
61
49
|
*/
|
|
62
|
-
|
|
63
|
-
|
|
50
|
+
|
|
51
|
+
const HELP_THRESHOLD_CHARS = 80;
|
|
52
|
+
const HELP_ICON_SX = Object.freeze({
|
|
64
53
|
padding: "2px",
|
|
65
54
|
color: "var(--fg-subtle)",
|
|
66
55
|
marginInlineStart: "var(--s-1)",
|
|
@@ -69,7 +58,7 @@ var HELP_ICON_SX = Object.freeze({
|
|
|
69
58
|
background: "var(--bg-hover)"
|
|
70
59
|
}
|
|
71
60
|
});
|
|
72
|
-
|
|
61
|
+
const POPOVER_PAPER_SX = Object.freeze({
|
|
73
62
|
// Cap at 360 on desktop, but never exceed the viewport on small
|
|
74
63
|
// phones (320–392px): MUI Popover positions the anchor but does NOT
|
|
75
64
|
// shrink the paper width to the viewport, so a bare maxWidth:360
|
|
@@ -82,13 +71,13 @@ var POPOVER_PAPER_SX = Object.freeze({
|
|
|
82
71
|
border: "1px solid var(--border)",
|
|
83
72
|
boxShadow: "var(--shadow-md)"
|
|
84
73
|
});
|
|
85
|
-
|
|
74
|
+
const POPOVER_TITLE_SX = Object.freeze({
|
|
86
75
|
fontSize: "var(--text-sm)",
|
|
87
76
|
fontWeight: "var(--fw-semibold)",
|
|
88
77
|
color: "var(--fg)",
|
|
89
78
|
marginBottom: "var(--s-1)"
|
|
90
79
|
});
|
|
91
|
-
|
|
80
|
+
const POPOVER_BODY_SX = Object.freeze({
|
|
92
81
|
fontSize: "var(--text-sm)",
|
|
93
82
|
color: "var(--fg-muted)",
|
|
94
83
|
// --lh-loose = 1.6 (typography.js). Was `var(--lh-relaxed, 1.6)` —
|
|
@@ -106,32 +95,26 @@ function resolveVariant(variant, content, title) {
|
|
|
106
95
|
}
|
|
107
96
|
return "tooltip";
|
|
108
97
|
}
|
|
109
|
-
function FieldHelp(
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
_ref$ariaLabel = _ref.ariaLabel,
|
|
119
|
-
ariaLabel = _ref$ariaLabel === void 0 ? "Aide" : _ref$ariaLabel;
|
|
120
|
-
var _React$useState = React.useState(null),
|
|
121
|
-
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
122
|
-
anchorEl = _React$useState2[0],
|
|
123
|
-
setAnchorEl = _React$useState2[1];
|
|
98
|
+
function FieldHelp({
|
|
99
|
+
content,
|
|
100
|
+
title,
|
|
101
|
+
variant = "auto",
|
|
102
|
+
icon = "help",
|
|
103
|
+
placement = "top",
|
|
104
|
+
ariaLabel = "Aide"
|
|
105
|
+
}) {
|
|
106
|
+
const [anchorEl, setAnchorEl] = React.useState(null);
|
|
124
107
|
// FH-1 — stable id so the dialog paper can be labelled by its visible
|
|
125
108
|
// title (used only when a title is rendered; see slotProps below).
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
109
|
+
const titleId = React.useId();
|
|
110
|
+
const effectiveVariant = resolveVariant(variant, content, title);
|
|
111
|
+
const IconComponent = icon === "info" ? _InfoOutlined.default : _HelpOutlineOutlined.default;
|
|
129
112
|
if (effectiveVariant === "tooltip") {
|
|
130
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Tooltip
|
|
113
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Tooltip.default, {
|
|
131
114
|
title: content,
|
|
132
115
|
arrow: true,
|
|
133
116
|
placement: placement,
|
|
134
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton
|
|
117
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton.default, {
|
|
135
118
|
size: "small",
|
|
136
119
|
"aria-label": ariaLabel,
|
|
137
120
|
sx: HELP_ICON_SX,
|
|
@@ -144,15 +127,11 @@ function FieldHelp(_ref) {
|
|
|
144
127
|
})
|
|
145
128
|
});
|
|
146
129
|
}
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
var handleClose = function handleClose() {
|
|
151
|
-
return setAnchorEl(null);
|
|
152
|
-
};
|
|
153
|
-
var open = !!anchorEl;
|
|
130
|
+
const handleOpen = e => setAnchorEl(e.currentTarget);
|
|
131
|
+
const handleClose = () => setAnchorEl(null);
|
|
132
|
+
const open = !!anchorEl;
|
|
154
133
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
155
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton
|
|
134
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton.default, {
|
|
156
135
|
size: "small",
|
|
157
136
|
"aria-label": ariaLabel
|
|
158
137
|
// R-Ar.6 / WAI-ARIA disclosure pattern — surfaces the
|
|
@@ -169,7 +148,7 @@ function FieldHelp(_ref) {
|
|
|
169
148
|
fontSize: 16
|
|
170
149
|
}
|
|
171
150
|
})
|
|
172
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Popover
|
|
151
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Popover.default, {
|
|
173
152
|
open: open,
|
|
174
153
|
anchorEl: anchorEl,
|
|
175
154
|
onClose: handleClose,
|
|
@@ -182,28 +161,29 @@ function FieldHelp(_ref) {
|
|
|
182
161
|
horizontal: "left"
|
|
183
162
|
},
|
|
184
163
|
slotProps: {
|
|
185
|
-
paper:
|
|
164
|
+
paper: {
|
|
186
165
|
sx: POPOVER_PAPER_SX,
|
|
187
166
|
// FH-1 — the trigger promises a dialog; make the paper one and
|
|
188
167
|
// name it. Prefer the visible title (aria-labelledby, avoids a
|
|
189
168
|
// Label-in-Name mismatch); fall back to the ariaLabel prop.
|
|
190
|
-
role: "dialog"
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
169
|
+
role: "dialog",
|
|
170
|
+
...(title ? {
|
|
171
|
+
"aria-labelledby": titleId
|
|
172
|
+
} : {
|
|
173
|
+
"aria-label": ariaLabel
|
|
174
|
+
})
|
|
175
|
+
}
|
|
196
176
|
},
|
|
197
|
-
children: [title && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box
|
|
177
|
+
children: [title && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
|
|
198
178
|
id: titleId,
|
|
199
179
|
sx: POPOVER_TITLE_SX,
|
|
200
180
|
children: title
|
|
201
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box
|
|
181
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
|
|
202
182
|
sx: POPOVER_BODY_SX,
|
|
203
183
|
children: content
|
|
204
184
|
})]
|
|
205
185
|
})]
|
|
206
186
|
});
|
|
207
187
|
}
|
|
208
|
-
var _default = exports
|
|
188
|
+
var _default = exports.default = FieldHelp;
|
|
209
189
|
//# sourceMappingURL=FieldHelp.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FieldHelp.js","names":["React","_interopRequireWildcard","require","_Tooltip","_interopRequireDefault","_IconButton","_Box","_Popover","_HelpOutlineOutlined","_InfoOutlined","_jsxRuntime","obj","__esModule","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","TypeError","Number","_slicedToArray","arr","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","o","minLen","_arrayLikeToArray","n","toString","slice","constructor","name","Array","from","test","len","arr2","_i","iterator","_s","_e","_x","_r","_arr","_n","_d","next","done","err","isArray","HELP_THRESHOLD_CHARS","HELP_ICON_SX","freeze","padding","color","marginInlineStart","background","POPOVER_PAPER_SX","maxWidth","borderRadius","border","boxShadow","POPOVER_TITLE_SX","fontSize","fontWeight","marginBottom","POPOVER_BODY_SX","lineHeight","resolveVariant","variant","content","title","FieldHelp","_ref","_ref$variant","_ref$icon","icon","_ref$placement","placement","_ref$ariaLabel","ariaLabel","_React$useState","useState","_React$useState2","anchorEl","setAnchorEl","titleId","useId","effectiveVariant","IconComponent","InfoOutlinedIcon","HelpOutlineIcon","jsx","arrow","children","size","sx","tabIndex","handleOpen","e","currentTarget","handleClose","open","jsxs","Fragment","onClick","onClose","anchorOrigin","vertical","horizontal","transformOrigin","slotProps","paper","role","id","_default","exports"],"sources":["../../../src/lib/v2/components/FieldHelp.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Tooltip from \"@mui/material/Tooltip\";\r\nimport type { TooltipProps } from \"@mui/material/Tooltip\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport Box from \"@mui/material/Box\";\r\nimport Popover from \"@mui/material/Popover\";\r\nimport HelpOutlineIcon from \"@mui/icons-material/HelpOutlineOutlined\";\r\nimport InfoOutlinedIcon from \"@mui/icons-material/InfoOutlined\";\r\n\r\n/**\r\n * FieldHelp - Portnet UI v2 (component)\r\n *\r\n * Charter §03 · Component \"FieldHelp · Contextual help\".\r\n *\r\n * A small icon-button affordance that hosts drop next to labels,\r\n * section titles, or anywhere a user might benefit from just-in-\r\n * time guidance without cluttering the primary visual hierarchy.\r\n *\r\n * Behaviour modes:\r\n * - tooltip: MUI Tooltip (default for short string content).\r\n * - popover: MUI Popover, click to open. Used when content is\r\n * long (>80 chars) or when a distinct `title` is provided.\r\n * - auto: Picks tooltip vs popover via the heuristic above.\r\n *\r\n * Usage:\r\n * <FieldHelp content=\"Référence unique de l'autorisation\" />\r\n * <FieldHelp\r\n * title=\"Détails\"\r\n * content={<>Texte long avec <b>JSX</b>.</>}\r\n * variant=\"popover\"\r\n * />\r\n *\r\n * A11y (audit Batch 5, finding B5-1; Batch 19, FH-1):\r\n * Popover variant trigger carries aria-haspopup=\"dialog\" +\r\n * aria-expanded reflecting the open state — WAI-ARIA disclosure\r\n * pattern. The Popover paper itself carries role=\"dialog\" and an\r\n * accessible name (FH-1): aria-labelledby the visible title when\r\n * one is rendered, else aria-label from the ariaLabel prop — so\r\n * the region the trigger promises actually resolves as a named\r\n * dialog to assistive tech. Tooltip variant relies on MUI\r\n * Tooltip's automatic aria-describedby plumbing on the wrapped child.\r\n */\r\n\r\nexport type FieldHelpVariant = \"auto\" | \"tooltip\" | \"popover\";\r\nexport type FieldHelpIcon = \"help\" | \"info\";\r\n\r\nexport interface FieldHelpProps {\r\n /** Help content (tooltip title or popover body). */\r\n content: React.ReactNode;\r\n /** Optional popover title. When present, forces the popover variant. */\r\n title?: React.ReactNode | undefined;\r\n /** @default \"auto\" */\r\n variant?: FieldHelpVariant | undefined;\r\n /** @default \"help\" */\r\n icon?: FieldHelpIcon | undefined;\r\n /** Tooltip placement. @default \"top\" */\r\n placement?: TooltipProps[\"placement\"] | undefined;\r\n /** @default \"Aide\" */\r\n ariaLabel?: string | undefined;\r\n}\r\n\r\nconst HELP_THRESHOLD_CHARS = 80;\r\n\r\nconst HELP_ICON_SX = Object.freeze({\r\n padding: \"2px\",\r\n color: \"var(--fg-subtle)\",\r\n marginInlineStart: \"var(--s-1)\",\r\n \"&:hover, &:focus-visible\": {\r\n color: \"var(--accent)\",\r\n background: \"var(--bg-hover)\",\r\n },\r\n});\r\n\r\nconst POPOVER_PAPER_SX = Object.freeze({\r\n // Cap at 360 on desktop, but never exceed the viewport on small\r\n // phones (320–392px): MUI Popover positions the anchor but does NOT\r\n // shrink the paper width to the viewport, so a bare maxWidth:360\r\n // overflows the screen edge and forces horizontal scroll (WCAG 1.4.10\r\n // Reflow). The min() inset keeps the paper on screen with a single\r\n // --s-4 gutter on either side.\r\n maxWidth: \"min(360px, calc(100vw - var(--s-4) * 2))\",\r\n padding: \"var(--s-4)\",\r\n borderRadius: \"var(--r-md)\",\r\n border: \"1px solid var(--border)\",\r\n boxShadow: \"var(--shadow-md)\",\r\n});\r\n\r\nconst POPOVER_TITLE_SX = Object.freeze({\r\n fontSize: \"var(--text-sm)\",\r\n fontWeight: \"var(--fw-semibold)\",\r\n color: \"var(--fg)\",\r\n marginBottom: \"var(--s-1)\",\r\n});\r\n\r\nconst POPOVER_BODY_SX = Object.freeze({\r\n fontSize: \"var(--text-sm)\",\r\n color: \"var(--fg-muted)\",\r\n // --lh-loose = 1.6 (typography.js). Was `var(--lh-relaxed, 1.6)` —\r\n // a dangling reference to a token that doesn't exist in the v2\r\n // lineHeight scale (only tight/snug/normal/loose are emitted). The\r\n // fallback `1.6` happened to match --lh-loose by coincidence; this\r\n // makes the dependency explicit and lets future retuning flow.\r\n lineHeight: \"var(--lh-loose)\",\r\n});\r\n\r\nfunction resolveVariant(\r\n variant: FieldHelpVariant,\r\n content: React.ReactNode,\r\n title: React.ReactNode,\r\n): \"tooltip\" | \"popover\" {\r\n if (variant !== \"auto\") return variant;\r\n if (title) return \"popover\";\r\n if (typeof content === \"string\" && content.length > HELP_THRESHOLD_CHARS) {\r\n return \"popover\";\r\n }\r\n return \"tooltip\";\r\n}\r\n\r\nfunction FieldHelp({\r\n content,\r\n title,\r\n variant = \"auto\",\r\n icon = \"help\",\r\n placement = \"top\",\r\n ariaLabel = \"Aide\",\r\n}: FieldHelpProps) {\r\n const [anchorEl, setAnchorEl] = React.useState<HTMLElement | null>(null);\r\n // FH-1 — stable id so the dialog paper can be labelled by its visible\r\n // title (used only when a title is rendered; see slotProps below).\r\n const titleId = React.useId();\r\n\r\n const effectiveVariant = resolveVariant(variant, content, title);\r\n const IconComponent = icon === \"info\" ? InfoOutlinedIcon : HelpOutlineIcon;\r\n\r\n if (effectiveVariant === \"tooltip\") {\r\n return (\r\n <Tooltip title={content} arrow placement={placement}>\r\n <IconButton\r\n size=\"small\"\r\n aria-label={ariaLabel}\r\n sx={HELP_ICON_SX}\r\n tabIndex={0}\r\n >\r\n <IconComponent sx={{ fontSize: 16 }} />\r\n </IconButton>\r\n </Tooltip>\r\n );\r\n }\r\n\r\n const handleOpen = (e: React.MouseEvent<HTMLElement>) => setAnchorEl(e.currentTarget);\r\n const handleClose = () => setAnchorEl(null);\r\n const open = !!anchorEl;\r\n\r\n return (\r\n <>\r\n <IconButton\r\n size=\"small\"\r\n aria-label={ariaLabel}\r\n // R-Ar.6 / WAI-ARIA disclosure pattern — surfaces the\r\n // overlay nature of the trigger to assistive tech. Without\r\n // these attrs SR users hear a generic \"Aide button\" with\r\n // no indication that activation opens content.\r\n aria-haspopup=\"dialog\"\r\n aria-expanded={open}\r\n onClick={handleOpen}\r\n sx={HELP_ICON_SX}\r\n >\r\n <IconComponent sx={{ fontSize: 16 }} />\r\n </IconButton>\r\n <Popover\r\n open={open}\r\n anchorEl={anchorEl}\r\n onClose={handleClose}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"left\" }}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"left\" }}\r\n slotProps={{\r\n paper: {\r\n sx: POPOVER_PAPER_SX,\r\n // FH-1 — the trigger promises a dialog; make the paper one and\r\n // name it. Prefer the visible title (aria-labelledby, avoids a\r\n // Label-in-Name mismatch); fall back to the ariaLabel prop.\r\n role: \"dialog\",\r\n ...(title\r\n ? { \"aria-labelledby\": titleId }\r\n : { \"aria-label\": ariaLabel }),\r\n },\r\n }}\r\n >\r\n {title && (\r\n <Box id={titleId} sx={POPOVER_TITLE_SX}>\r\n {title}\r\n </Box>\r\n )}\r\n <Box sx={POPOVER_BODY_SX}>{content}</Box>\r\n </Popover>\r\n </>\r\n );\r\n}\r\n\r\nexport default FieldHelp;\r\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"FieldHelp.js","names":["React","_interopRequireWildcard","require","_Tooltip","_interopRequireDefault","_IconButton","_Box","_Popover","_HelpOutlineOutlined","_InfoOutlined","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","HELP_THRESHOLD_CHARS","HELP_ICON_SX","freeze","padding","color","marginInlineStart","background","POPOVER_PAPER_SX","maxWidth","borderRadius","border","boxShadow","POPOVER_TITLE_SX","fontSize","fontWeight","marginBottom","POPOVER_BODY_SX","lineHeight","resolveVariant","variant","content","title","length","FieldHelp","icon","placement","ariaLabel","anchorEl","setAnchorEl","useState","titleId","useId","effectiveVariant","IconComponent","InfoOutlinedIcon","HelpOutlineIcon","jsx","arrow","children","size","sx","tabIndex","handleOpen","currentTarget","handleClose","open","jsxs","Fragment","onClick","onClose","anchorOrigin","vertical","horizontal","transformOrigin","slotProps","paper","role","id","_default","exports"],"sources":["../../../src/lib/v2/components/FieldHelp.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Tooltip from \"@mui/material/Tooltip\";\r\nimport type { TooltipProps } from \"@mui/material/Tooltip\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport Box from \"@mui/material/Box\";\r\nimport Popover from \"@mui/material/Popover\";\r\nimport HelpOutlineIcon from \"@mui/icons-material/HelpOutlineOutlined\";\r\nimport InfoOutlinedIcon from \"@mui/icons-material/InfoOutlined\";\r\n\r\n/**\r\n * FieldHelp - Portnet UI v2 (component)\r\n *\r\n * Charter §03 · Component \"FieldHelp · Contextual help\".\r\n *\r\n * A small icon-button affordance that hosts drop next to labels,\r\n * section titles, or anywhere a user might benefit from just-in-\r\n * time guidance without cluttering the primary visual hierarchy.\r\n *\r\n * Behaviour modes:\r\n * - tooltip: MUI Tooltip (default for short string content).\r\n * - popover: MUI Popover, click to open. Used when content is\r\n * long (>80 chars) or when a distinct `title` is provided.\r\n * - auto: Picks tooltip vs popover via the heuristic above.\r\n *\r\n * Usage:\r\n * <FieldHelp content=\"Référence unique de l'autorisation\" />\r\n * <FieldHelp\r\n * title=\"Détails\"\r\n * content={<>Texte long avec <b>JSX</b>.</>}\r\n * variant=\"popover\"\r\n * />\r\n *\r\n * A11y (audit Batch 5, finding B5-1; Batch 19, FH-1):\r\n * Popover variant trigger carries aria-haspopup=\"dialog\" +\r\n * aria-expanded reflecting the open state — WAI-ARIA disclosure\r\n * pattern. The Popover paper itself carries role=\"dialog\" and an\r\n * accessible name (FH-1): aria-labelledby the visible title when\r\n * one is rendered, else aria-label from the ariaLabel prop — so\r\n * the region the trigger promises actually resolves as a named\r\n * dialog to assistive tech. Tooltip variant relies on MUI\r\n * Tooltip's automatic aria-describedby plumbing on the wrapped child.\r\n */\r\n\r\nexport type FieldHelpVariant = \"auto\" | \"tooltip\" | \"popover\";\r\nexport type FieldHelpIcon = \"help\" | \"info\";\r\n\r\nexport interface FieldHelpProps {\r\n /** Help content (tooltip title or popover body). */\r\n content: React.ReactNode;\r\n /** Optional popover title. When present, forces the popover variant. */\r\n title?: React.ReactNode | undefined;\r\n /** @default \"auto\" */\r\n variant?: FieldHelpVariant | undefined;\r\n /** @default \"help\" */\r\n icon?: FieldHelpIcon | undefined;\r\n /** Tooltip placement. @default \"top\" */\r\n placement?: TooltipProps[\"placement\"] | undefined;\r\n /** @default \"Aide\" */\r\n ariaLabel?: string | undefined;\r\n}\r\n\r\nconst HELP_THRESHOLD_CHARS = 80;\r\n\r\nconst HELP_ICON_SX = Object.freeze({\r\n padding: \"2px\",\r\n color: \"var(--fg-subtle)\",\r\n marginInlineStart: \"var(--s-1)\",\r\n \"&:hover, &:focus-visible\": {\r\n color: \"var(--accent)\",\r\n background: \"var(--bg-hover)\",\r\n },\r\n});\r\n\r\nconst POPOVER_PAPER_SX = Object.freeze({\r\n // Cap at 360 on desktop, but never exceed the viewport on small\r\n // phones (320–392px): MUI Popover positions the anchor but does NOT\r\n // shrink the paper width to the viewport, so a bare maxWidth:360\r\n // overflows the screen edge and forces horizontal scroll (WCAG 1.4.10\r\n // Reflow). The min() inset keeps the paper on screen with a single\r\n // --s-4 gutter on either side.\r\n maxWidth: \"min(360px, calc(100vw - var(--s-4) * 2))\",\r\n padding: \"var(--s-4)\",\r\n borderRadius: \"var(--r-md)\",\r\n border: \"1px solid var(--border)\",\r\n boxShadow: \"var(--shadow-md)\",\r\n});\r\n\r\nconst POPOVER_TITLE_SX = Object.freeze({\r\n fontSize: \"var(--text-sm)\",\r\n fontWeight: \"var(--fw-semibold)\",\r\n color: \"var(--fg)\",\r\n marginBottom: \"var(--s-1)\",\r\n});\r\n\r\nconst POPOVER_BODY_SX = Object.freeze({\r\n fontSize: \"var(--text-sm)\",\r\n color: \"var(--fg-muted)\",\r\n // --lh-loose = 1.6 (typography.js). Was `var(--lh-relaxed, 1.6)` —\r\n // a dangling reference to a token that doesn't exist in the v2\r\n // lineHeight scale (only tight/snug/normal/loose are emitted). The\r\n // fallback `1.6` happened to match --lh-loose by coincidence; this\r\n // makes the dependency explicit and lets future retuning flow.\r\n lineHeight: \"var(--lh-loose)\",\r\n});\r\n\r\nfunction resolveVariant(\r\n variant: FieldHelpVariant,\r\n content: React.ReactNode,\r\n title: React.ReactNode,\r\n): \"tooltip\" | \"popover\" {\r\n if (variant !== \"auto\") return variant;\r\n if (title) return \"popover\";\r\n if (typeof content === \"string\" && content.length > HELP_THRESHOLD_CHARS) {\r\n return \"popover\";\r\n }\r\n return \"tooltip\";\r\n}\r\n\r\nfunction FieldHelp({\r\n content,\r\n title,\r\n variant = \"auto\",\r\n icon = \"help\",\r\n placement = \"top\",\r\n ariaLabel = \"Aide\",\r\n}: FieldHelpProps) {\r\n const [anchorEl, setAnchorEl] = React.useState<HTMLElement | null>(null);\r\n // FH-1 — stable id so the dialog paper can be labelled by its visible\r\n // title (used only when a title is rendered; see slotProps below).\r\n const titleId = React.useId();\r\n\r\n const effectiveVariant = resolveVariant(variant, content, title);\r\n const IconComponent = icon === \"info\" ? InfoOutlinedIcon : HelpOutlineIcon;\r\n\r\n if (effectiveVariant === \"tooltip\") {\r\n return (\r\n <Tooltip title={content} arrow placement={placement}>\r\n <IconButton\r\n size=\"small\"\r\n aria-label={ariaLabel}\r\n sx={HELP_ICON_SX}\r\n tabIndex={0}\r\n >\r\n <IconComponent sx={{ fontSize: 16 }} />\r\n </IconButton>\r\n </Tooltip>\r\n );\r\n }\r\n\r\n const handleOpen = (e: React.MouseEvent<HTMLElement>) => setAnchorEl(e.currentTarget);\r\n const handleClose = () => setAnchorEl(null);\r\n const open = !!anchorEl;\r\n\r\n return (\r\n <>\r\n <IconButton\r\n size=\"small\"\r\n aria-label={ariaLabel}\r\n // R-Ar.6 / WAI-ARIA disclosure pattern — surfaces the\r\n // overlay nature of the trigger to assistive tech. Without\r\n // these attrs SR users hear a generic \"Aide button\" with\r\n // no indication that activation opens content.\r\n aria-haspopup=\"dialog\"\r\n aria-expanded={open}\r\n onClick={handleOpen}\r\n sx={HELP_ICON_SX}\r\n >\r\n <IconComponent sx={{ fontSize: 16 }} />\r\n </IconButton>\r\n <Popover\r\n open={open}\r\n anchorEl={anchorEl}\r\n onClose={handleClose}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"left\" }}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"left\" }}\r\n slotProps={{\r\n paper: {\r\n sx: POPOVER_PAPER_SX,\r\n // FH-1 — the trigger promises a dialog; make the paper one and\r\n // name it. Prefer the visible title (aria-labelledby, avoids a\r\n // Label-in-Name mismatch); fall back to the ariaLabel prop.\r\n role: \"dialog\",\r\n ...(title\r\n ? { \"aria-labelledby\": titleId }\r\n : { \"aria-label\": ariaLabel }),\r\n },\r\n }}\r\n >\r\n {title && (\r\n <Box id={titleId} sx={POPOVER_TITLE_SX}>\r\n {title}\r\n </Box>\r\n )}\r\n <Box sx={POPOVER_BODY_SX}>{content}</Box>\r\n </Popover>\r\n </>\r\n );\r\n}\r\n\r\nexport default FieldHelp;\r\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,QAAA,GAAAC,sBAAA,CAAAF,OAAA;AAEA,IAAAG,WAAA,GAAAD,sBAAA,CAAAF,OAAA;AACA,IAAAI,IAAA,GAAAF,sBAAA,CAAAF,OAAA;AACA,IAAAK,QAAA,GAAAH,sBAAA,CAAAF,OAAA;AACA,IAAAM,oBAAA,GAAAJ,sBAAA,CAAAF,OAAA;AACA,IAAAO,aAAA,GAAAL,sBAAA,CAAAF,OAAA;AAAgE,IAAAQ,WAAA,GAAAR,OAAA;AAAA,SAAAE,uBAAAO,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAV,wBAAAU,CAAA,EAAAG,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAd,uBAAA,YAAAA,CAAAU,CAAA,EAAAG,CAAA,SAAAA,CAAA,IAAAH,CAAA,IAAAA,CAAA,CAAAC,UAAA,SAAAD,CAAA,MAAAO,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAR,OAAA,EAAAF,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAS,CAAA,MAAAF,CAAA,GAAAJ,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAE,CAAA,CAAAI,GAAA,CAAAX,CAAA,UAAAO,CAAA,CAAAK,GAAA,CAAAZ,CAAA,GAAAO,CAAA,CAAAM,GAAA,CAAAb,CAAA,EAAAS,CAAA,gBAAAN,CAAA,IAAAH,CAAA,gBAAAG,CAAA,OAAAW,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAG,CAAA,OAAAK,CAAA,IAAAD,CAAA,GAAAS,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAG,CAAA,OAAAK,CAAA,CAAAI,GAAA,IAAAJ,CAAA,CAAAK,GAAA,IAAAN,CAAA,CAAAE,CAAA,EAAAN,CAAA,EAAAK,CAAA,IAAAC,CAAA,CAAAN,CAAA,IAAAH,CAAA,CAAAG,CAAA,WAAAM,CAAA,KAAAT,CAAA,EAAAG,CAAA;AAEhE;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;;AAoBA,MAAMgB,oBAAoB,GAAG,EAAE;AAE/B,MAAMC,YAAY,GAAGJ,MAAM,CAACK,MAAM,CAAC;EACjCC,OAAO,EAAE,KAAK;EACdC,KAAK,EAAE,kBAAkB;EACzBC,iBAAiB,EAAE,YAAY;EAC/B,0BAA0B,EAAE;IAC1BD,KAAK,EAAE,eAAe;IACtBE,UAAU,EAAE;EACd;AACF,CAAC,CAAC;AAEF,MAAMC,gBAAgB,GAAGV,MAAM,CAACK,MAAM,CAAC;EACrC;EACA;EACA;EACA;EACA;EACA;EACAM,QAAQ,EAAE,0CAA0C;EACpDL,OAAO,EAAE,YAAY;EACrBM,YAAY,EAAE,aAAa;EAC3BC,MAAM,EAAE,yBAAyB;EACjCC,SAAS,EAAE;AACb,CAAC,CAAC;AAEF,MAAMC,gBAAgB,GAAGf,MAAM,CAACK,MAAM,CAAC;EACrCW,QAAQ,EAAE,gBAAgB;EAC1BC,UAAU,EAAE,oBAAoB;EAChCV,KAAK,EAAE,WAAW;EAClBW,YAAY,EAAE;AAChB,CAAC,CAAC;AAEF,MAAMC,eAAe,GAAGnB,MAAM,CAACK,MAAM,CAAC;EACpCW,QAAQ,EAAE,gBAAgB;EAC1BT,KAAK,EAAE,iBAAiB;EACxB;EACA;EACA;EACA;EACA;EACAa,UAAU,EAAE;AACd,CAAC,CAAC;AAEF,SAASC,cAAcA,CACrBC,OAAyB,EACzBC,OAAwB,EACxBC,KAAsB,EACC;EACvB,IAAIF,OAAO,KAAK,MAAM,EAAE,OAAOA,OAAO;EACtC,IAAIE,KAAK,EAAE,OAAO,SAAS;EAC3B,IAAI,OAAOD,OAAO,KAAK,QAAQ,IAAIA,OAAO,CAACE,MAAM,GAAGtB,oBAAoB,EAAE;IACxE,OAAO,SAAS;EAClB;EACA,OAAO,SAAS;AAClB;AAEA,SAASuB,SAASA,CAAC;EACjBH,OAAO;EACPC,KAAK;EACLF,OAAO,GAAG,MAAM;EAChBK,IAAI,GAAG,MAAM;EACbC,SAAS,GAAG,KAAK;EACjBC,SAAS,GAAG;AACE,CAAC,EAAE;EACjB,MAAM,CAACC,QAAQ,EAAEC,WAAW,CAAC,GAAG1D,KAAK,CAAC2D,QAAQ,CAAqB,IAAI,CAAC;EACxE;EACA;EACA,MAAMC,OAAO,GAAG5D,KAAK,CAAC6D,KAAK,CAAC,CAAC;EAE7B,MAAMC,gBAAgB,GAAGd,cAAc,CAACC,OAAO,EAAEC,OAAO,EAAEC,KAAK,CAAC;EAChE,MAAMY,aAAa,GAAGT,IAAI,KAAK,MAAM,GAAGU,qBAAgB,GAAGC,4BAAe;EAE1E,IAAIH,gBAAgB,KAAK,SAAS,EAAE;IAClC,oBACE,IAAApD,WAAA,CAAAwD,GAAA,EAAC/D,QAAA,CAAAU,OAAO;MAACsC,KAAK,EAAED,OAAQ;MAACiB,KAAK;MAACZ,SAAS,EAAEA,SAAU;MAAAa,QAAA,eAClD,IAAA1D,WAAA,CAAAwD,GAAA,EAAC7D,WAAA,CAAAQ,OAAU;QACTwD,IAAI,EAAC,OAAO;QACZ,cAAYb,SAAU;QACtBc,EAAE,EAAEvC,YAAa;QACjBwC,QAAQ,EAAE,CAAE;QAAAH,QAAA,eAEZ,IAAA1D,WAAA,CAAAwD,GAAA,EAACH,aAAa;UAACO,EAAE,EAAE;YAAE3B,QAAQ,EAAE;UAAG;QAAE,CAAE;MAAC,CAC7B;IAAC,CACN,CAAC;EAEd;EAEA,MAAM6B,UAAU,GAAI7D,CAAgC,IAAK+C,WAAW,CAAC/C,CAAC,CAAC8D,aAAa,CAAC;EACrF,MAAMC,WAAW,GAAGA,CAAA,KAAMhB,WAAW,CAAC,IAAI,CAAC;EAC3C,MAAMiB,IAAI,GAAG,CAAC,CAAClB,QAAQ;EAEvB,oBACE,IAAA/C,WAAA,CAAAkE,IAAA,EAAAlE,WAAA,CAAAmE,QAAA;IAAAT,QAAA,gBACE,IAAA1D,WAAA,CAAAwD,GAAA,EAAC7D,WAAA,CAAAQ,OAAU;MACTwD,IAAI,EAAC,OAAO;MACZ,cAAYb;MACZ;MACA;MACA;MACA;MAAA;MACA,iBAAc,QAAQ;MACtB,iBAAemB,IAAK;MACpBG,OAAO,EAAEN,UAAW;MACpBF,EAAE,EAAEvC,YAAa;MAAAqC,QAAA,eAEjB,IAAA1D,WAAA,CAAAwD,GAAA,EAACH,aAAa;QAACO,EAAE,EAAE;UAAE3B,QAAQ,EAAE;QAAG;MAAE,CAAE;IAAC,CAC7B,CAAC,eACb,IAAAjC,WAAA,CAAAkE,IAAA,EAACrE,QAAA,CAAAM,OAAO;MACN8D,IAAI,EAAEA,IAAK;MACXlB,QAAQ,EAAEA,QAAS;MACnBsB,OAAO,EAAEL,WAAY;MACrBM,YAAY,EAAE;QAAEC,QAAQ,EAAE,QAAQ;QAAEC,UAAU,EAAE;MAAO,CAAE;MACzDC,eAAe,EAAE;QAAEF,QAAQ,EAAE,KAAK;QAAEC,UAAU,EAAE;MAAO,CAAE;MACzDE,SAAS,EAAE;QACTC,KAAK,EAAE;UACLf,EAAE,EAAEjC,gBAAgB;UACpB;UACA;UACA;UACAiD,IAAI,EAAE,QAAQ;UACd,IAAInC,KAAK,GACL;YAAE,iBAAiB,EAAES;UAAQ,CAAC,GAC9B;YAAE,YAAY,EAAEJ;UAAU,CAAC;QACjC;MACF,CAAE;MAAAY,QAAA,GAEDjB,KAAK,iBACJ,IAAAzC,WAAA,CAAAwD,GAAA,EAAC5D,IAAA,CAAAO,OAAG;QAAC0E,EAAE,EAAE3B,OAAQ;QAACU,EAAE,EAAE5B,gBAAiB;QAAA0B,QAAA,EACpCjB;MAAK,CACH,CACN,eACD,IAAAzC,WAAA,CAAAwD,GAAA,EAAC5D,IAAA,CAAAO,OAAG;QAACyD,EAAE,EAAExB,eAAgB;QAAAsB,QAAA,EAAElB;MAAO,CAAM,CAAC;IAAA,CAClC,CAAC;EAAA,CACV,CAAC;AAEP;AAAC,IAAAsC,QAAA,GAAAC,OAAA,CAAA5E,OAAA,GAEcwC,SAAS","ignoreList":[]}
|
|
@@ -3,21 +3,15 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports
|
|
6
|
+
exports.default = void 0;
|
|
7
7
|
var React = _interopRequireWildcard(require("react"));
|
|
8
8
|
var _Box = _interopRequireDefault(require("@mui/material/Box"));
|
|
9
9
|
var _InsertDriveFileOutlined = _interopRequireDefault(require("@mui/icons-material/InsertDriveFileOutlined"));
|
|
10
10
|
var _Surface = _interopRequireDefault(require("./Surface"));
|
|
11
11
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
|
-
function _interopRequireDefault(
|
|
13
|
-
function
|
|
14
|
-
|
|
15
|
-
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); }
|
|
16
|
-
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; }
|
|
17
|
-
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; }
|
|
18
|
-
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; }
|
|
19
|
-
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
20
|
-
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); } /**
|
|
12
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
14
|
+
/**
|
|
21
15
|
* FileCard — Portnet UI v2
|
|
22
16
|
*
|
|
23
17
|
* A single attached document, as a row: leading icon, filename, optional meta
|
|
@@ -69,27 +63,29 @@ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input ==
|
|
|
69
63
|
* type also lets the component set `title={name}` so the full filename stays
|
|
70
64
|
* reachable on hover once it is ellipsized.
|
|
71
65
|
*/
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
66
|
+
|
|
67
|
+
function FileCard({
|
|
68
|
+
name,
|
|
69
|
+
meta,
|
|
70
|
+
icon,
|
|
71
|
+
actions,
|
|
72
|
+
sx
|
|
73
|
+
}) {
|
|
74
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Surface.default, {
|
|
79
75
|
tone: "subtle",
|
|
80
76
|
radius: "md",
|
|
81
|
-
padding: "compact"
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box
|
|
77
|
+
padding: "compact",
|
|
78
|
+
...(sx !== undefined ? {
|
|
79
|
+
sx
|
|
80
|
+
} : {}),
|
|
81
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
|
|
86
82
|
sx: {
|
|
87
83
|
display: "flex",
|
|
88
84
|
alignItems: "center",
|
|
89
85
|
justifyContent: "space-between",
|
|
90
86
|
gap: "var(--s-3)"
|
|
91
87
|
},
|
|
92
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box
|
|
88
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
|
|
93
89
|
sx: {
|
|
94
90
|
display: "flex",
|
|
95
91
|
alignItems: "center",
|
|
@@ -97,7 +93,7 @@ function FileCard(_ref) {
|
|
|
97
93
|
minWidth: 0,
|
|
98
94
|
flex: 1
|
|
99
95
|
},
|
|
100
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Box
|
|
96
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
|
|
101
97
|
component: "span",
|
|
102
98
|
"aria-hidden": "true"
|
|
103
99
|
/* Test hook. The icon wrapper carries no role and no accessible
|
|
@@ -117,12 +113,12 @@ function FileCard(_ref) {
|
|
|
117
113
|
fontSize: "var(--text-display)"
|
|
118
114
|
}
|
|
119
115
|
},
|
|
120
|
-
children: icon
|
|
121
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box
|
|
116
|
+
children: icon ?? /*#__PURE__*/(0, _jsxRuntime.jsx)(_InsertDriveFileOutlined.default, {})
|
|
117
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
|
|
122
118
|
sx: {
|
|
123
119
|
minWidth: 0
|
|
124
120
|
},
|
|
125
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Box
|
|
121
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
|
|
126
122
|
title: name,
|
|
127
123
|
sx: {
|
|
128
124
|
fontSize: "var(--text-sm)",
|
|
@@ -133,7 +129,7 @@ function FileCard(_ref) {
|
|
|
133
129
|
textOverflow: "ellipsis"
|
|
134
130
|
},
|
|
135
131
|
children: name
|
|
136
|
-
}), meta != null && meta !== "" && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box
|
|
132
|
+
}), meta != null && meta !== "" && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default
|
|
137
133
|
/* Test hook — same rationale as filecard-icon. The contract is
|
|
138
134
|
* that this line is ABSENT rather than empty: a blank second
|
|
139
135
|
* line reads as missing data and changes the row height, which
|
|
@@ -153,7 +149,7 @@ function FileCard(_ref) {
|
|
|
153
149
|
/*#__PURE__*/
|
|
154
150
|
/* `flexShrink: 0` — the buttons keep their intrinsic width; it is the
|
|
155
151
|
filename that yields. The inverse produced squashed labels. */
|
|
156
|
-
(0, _jsxRuntime.jsx)(_Box
|
|
152
|
+
(0, _jsxRuntime.jsx)(_Box.default, {
|
|
157
153
|
sx: {
|
|
158
154
|
display: "flex",
|
|
159
155
|
alignItems: "center",
|
|
@@ -163,7 +159,7 @@ function FileCard(_ref) {
|
|
|
163
159
|
children: actions
|
|
164
160
|
})]
|
|
165
161
|
})
|
|
166
|
-
})
|
|
162
|
+
});
|
|
167
163
|
}
|
|
168
|
-
var _default = exports
|
|
164
|
+
var _default = exports.default = FileCard;
|
|
169
165
|
//# sourceMappingURL=FileCard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileCard.js","names":["React","_interopRequireWildcard","require","_Box","_interopRequireDefault","_InsertDriveFileOutlined","_Surface","_jsxRuntime","obj","__esModule","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","Symbol","iterator","constructor","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","toPrimitive","undefined","res","TypeError","Number","FileCard","_ref","name","meta","icon","actions","sx","jsx","tone","radius","padding","children","jsxs","display","alignItems","justifyContent","gap","minWidth","flex","component","flexShrink","color","fontSize","title","fontWeight","whiteSpace","overflow","textOverflow","fontVariantNumeric","_default","exports"],"sources":["../../../src/lib/v2/components/FileCard.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\nimport InsertDriveFileIcon from \"@mui/icons-material/InsertDriveFileOutlined\";\r\nimport Surface from \"./Surface\";\r\n\r\n/**\r\n * FileCard — Portnet UI v2\r\n *\r\n * A single attached document, as a row: leading icon, filename, optional meta\r\n * line, action cluster on the trailing edge.\r\n *\r\n * ─────────────────────────────────────────────────────────────────────────────\r\n * WHY THIS BELONGS IN THE LIBRARY (capability gap G-12)\r\n *\r\n * The library shipped `Dropzone` — the UPLOAD affordance — and nothing for the\r\n * state right after it: the file, once attached, being displayed. So every\r\n * screen that shows an attachment rebuilt the same row. In addpe-fe it exists\r\n * THREE times, in three files, written by hand each time:\r\n *\r\n * - Attachment (uploaded state) padding --s-3 --s-4\r\n * - AutorisationPreviewDrawer (tab) padding --s-4\r\n * - AutorisationDetail (tab) padding --s-4 --s-5\r\n *\r\n * Read that padding column: three values for ONE concept. Nobody decided that —\r\n * it is what happens when a recipe is retyped from memory three times, and it is\r\n * exactly what Charter R-2.1 forbids (« un même concept = un même composant +\r\n * un même libellé partout »). This component standardises on the compact\r\n * `Surface` padding; the divergence was accidental, not intentional.\r\n *\r\n * The ellipsis logic is the other reason to own this. A filename is\r\n * user-supplied, arbitrarily long, and must truncate without pushing the action\r\n * buttons off the card — which needs `minWidth: 0` on the right ancestors and\r\n * `flexShrink: 0` on the wrong ones. Two of the three local copies had it; the\r\n * third relied on its container being wide enough.\r\n * ─────────────────────────────────────────────────────────────────────────────\r\n *\r\n * <FileCard\r\n * name={doc.documentName || \"Document.pdf\"}\r\n * meta=\"248,50 Ko\"\r\n * actions={\r\n * <Button variant=\"secondary\" size=\"sm\" icon={<CloudDownload />} onClick={dl}>\r\n * Télécharger\r\n * </Button>\r\n * }\r\n * />\r\n *\r\n * Presentational by design: no href, no fetching, no delete confirmation. Hosts\r\n * own those (a blob URL, an API call, a `ConfirmDialog`) and pass the resulting\r\n * buttons through `actions`.\r\n *\r\n * `name` is REQUIRED and typed `string`, deliberately. A filename fallback\r\n * (\"Document.pdf\") is French copy and a business decision about what an unnamed\r\n * attachment is called — that belongs to the host, not to the design system, and\r\n * defaulting it here would silently hide a missing backend field. The `string`\r\n * type also lets the component set `title={name}` so the full filename stays\r\n * reachable on hover once it is ellipsized.\r\n */\r\n\r\nexport interface FileCardProps {\r\n /** Filename. Ellipsized when it overflows; mirrored into `title`. */\r\n name: string;\r\n /**\r\n * Secondary line — size, date, content type. Rendered with tabular numerals\r\n * so a column of file sizes aligns (R-T.3).\r\n */\r\n meta?: React.ReactNode | undefined;\r\n /**\r\n * Leading icon. Defaults to a generic document glyph; pass a specific one when\r\n * the card's primary action is what identifies it (a download cloud, say).\r\n * Rendered `aria-hidden` — the filename is the accessible name (R-Ar.2).\r\n */\r\n icon?: React.ReactNode | undefined;\r\n /** Trailing action cluster. Pass `Button`s; the card does not invent any. */\r\n actions?: React.ReactNode | undefined;\r\n sx?: SxProps<Theme> | undefined;\r\n}\r\n\r\nfunction FileCard({ name, meta, icon, actions, sx }: FileCardProps) {\r\n return (\r\n <Surface\r\n tone=\"subtle\"\r\n radius=\"md\"\r\n padding=\"compact\"\r\n {...(sx !== undefined ? { sx } : {})}\r\n >\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n gap: \"var(--s-3)\",\r\n }}\r\n >\r\n {/* Identity block. `minWidth: 0` is load-bearing: without it a flex item\r\n refuses to shrink below its content width and the filename pushes the\r\n action cluster out of the card instead of truncating. */}\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"var(--s-3)\",\r\n minWidth: 0,\r\n flex: 1,\r\n }}\r\n >\r\n <Box\r\n component=\"span\"\r\n aria-hidden=\"true\"\r\n /* Test hook. The icon wrapper carries no role and no accessible\r\n * name — by design — so there is no semantic query that can reach\r\n * it, and the repo's eslint config rightly forbids container\r\n * queries and direct node access in tests. A stable testid is the\r\n * sanctioned escape hatch, and the contract it guards (R-Ar.2: a\r\n * decorative glyph must NOT be announced) is worth a hook. */\r\n data-testid=\"filecard-icon\"\r\n sx={{\r\n display: \"inline-flex\",\r\n flexShrink: 0,\r\n color: \"var(--accent)\",\r\n // --text-display is the 26px token; the glyph sits at the optical\r\n // scale the three local copies had converged on.\r\n \"& > *\": { fontSize: \"var(--text-display)\" },\r\n }}\r\n >\r\n {icon ?? <InsertDriveFileIcon />}\r\n </Box>\r\n\r\n <Box sx={{ minWidth: 0 }}>\r\n <Box\r\n title={name}\r\n sx={{\r\n fontSize: \"var(--text-sm)\",\r\n fontWeight: \"var(--fw-semibold)\",\r\n color: \"var(--fg)\",\r\n whiteSpace: \"nowrap\",\r\n overflow: \"hidden\",\r\n textOverflow: \"ellipsis\",\r\n }}\r\n >\r\n {name}\r\n </Box>\r\n {meta != null && meta !== \"\" && (\r\n <Box\r\n /* Test hook — same rationale as filecard-icon. The contract is\r\n * that this line is ABSENT rather than empty: a blank second\r\n * line reads as missing data and changes the row height, which\r\n * breaks the alignment of a list of files. \"Absent, not empty\"\r\n * cannot be expressed by a text query. */\r\n data-testid=\"filecard-meta\"\r\n sx={{\r\n fontSize: \"var(--text-xs)\",\r\n color: \"var(--fg-subtle)\",\r\n // R-T.3 — tabular numerals on any numeric run.\r\n fontVariantNumeric: \"tabular-nums\",\r\n }}\r\n >\r\n {meta}\r\n </Box>\r\n )}\r\n </Box>\r\n </Box>\r\n\r\n {actions != null && (\r\n /* `flexShrink: 0` — the buttons keep their intrinsic width; it is the\r\n filename that yields. The inverse produced squashed labels. */\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"var(--s-2)\",\r\n flexShrink: 0,\r\n }}\r\n >\r\n {actions}\r\n </Box>\r\n )}\r\n </Box>\r\n </Surface>\r\n );\r\n}\r\n\r\nexport default FileCard;\r\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"FileCard.js","names":["React","_interopRequireWildcard","require","_Box","_interopRequireDefault","_InsertDriveFileOutlined","_Surface","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","FileCard","name","meta","icon","actions","sx","jsx","tone","radius","padding","undefined","children","jsxs","display","alignItems","justifyContent","gap","minWidth","flex","component","flexShrink","color","fontSize","title","fontWeight","whiteSpace","overflow","textOverflow","fontVariantNumeric","_default","exports"],"sources":["../../../src/lib/v2/components/FileCard.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\nimport InsertDriveFileIcon from \"@mui/icons-material/InsertDriveFileOutlined\";\r\nimport Surface from \"./Surface\";\r\n\r\n/**\r\n * FileCard — Portnet UI v2\r\n *\r\n * A single attached document, as a row: leading icon, filename, optional meta\r\n * line, action cluster on the trailing edge.\r\n *\r\n * ─────────────────────────────────────────────────────────────────────────────\r\n * WHY THIS BELONGS IN THE LIBRARY (capability gap G-12)\r\n *\r\n * The library shipped `Dropzone` — the UPLOAD affordance — and nothing for the\r\n * state right after it: the file, once attached, being displayed. So every\r\n * screen that shows an attachment rebuilt the same row. In addpe-fe it exists\r\n * THREE times, in three files, written by hand each time:\r\n *\r\n * - Attachment (uploaded state) padding --s-3 --s-4\r\n * - AutorisationPreviewDrawer (tab) padding --s-4\r\n * - AutorisationDetail (tab) padding --s-4 --s-5\r\n *\r\n * Read that padding column: three values for ONE concept. Nobody decided that —\r\n * it is what happens when a recipe is retyped from memory three times, and it is\r\n * exactly what Charter R-2.1 forbids (« un même concept = un même composant +\r\n * un même libellé partout »). This component standardises on the compact\r\n * `Surface` padding; the divergence was accidental, not intentional.\r\n *\r\n * The ellipsis logic is the other reason to own this. A filename is\r\n * user-supplied, arbitrarily long, and must truncate without pushing the action\r\n * buttons off the card — which needs `minWidth: 0` on the right ancestors and\r\n * `flexShrink: 0` on the wrong ones. Two of the three local copies had it; the\r\n * third relied on its container being wide enough.\r\n * ─────────────────────────────────────────────────────────────────────────────\r\n *\r\n * <FileCard\r\n * name={doc.documentName || \"Document.pdf\"}\r\n * meta=\"248,50 Ko\"\r\n * actions={\r\n * <Button variant=\"secondary\" size=\"sm\" icon={<CloudDownload />} onClick={dl}>\r\n * Télécharger\r\n * </Button>\r\n * }\r\n * />\r\n *\r\n * Presentational by design: no href, no fetching, no delete confirmation. Hosts\r\n * own those (a blob URL, an API call, a `ConfirmDialog`) and pass the resulting\r\n * buttons through `actions`.\r\n *\r\n * `name` is REQUIRED and typed `string`, deliberately. A filename fallback\r\n * (\"Document.pdf\") is French copy and a business decision about what an unnamed\r\n * attachment is called — that belongs to the host, not to the design system, and\r\n * defaulting it here would silently hide a missing backend field. The `string`\r\n * type also lets the component set `title={name}` so the full filename stays\r\n * reachable on hover once it is ellipsized.\r\n */\r\n\r\nexport interface FileCardProps {\r\n /** Filename. Ellipsized when it overflows; mirrored into `title`. */\r\n name: string;\r\n /**\r\n * Secondary line — size, date, content type. Rendered with tabular numerals\r\n * so a column of file sizes aligns (R-T.3).\r\n */\r\n meta?: React.ReactNode | undefined;\r\n /**\r\n * Leading icon. Defaults to a generic document glyph; pass a specific one when\r\n * the card's primary action is what identifies it (a download cloud, say).\r\n * Rendered `aria-hidden` — the filename is the accessible name (R-Ar.2).\r\n */\r\n icon?: React.ReactNode | undefined;\r\n /** Trailing action cluster. Pass `Button`s; the card does not invent any. */\r\n actions?: React.ReactNode | undefined;\r\n sx?: SxProps<Theme> | undefined;\r\n}\r\n\r\nfunction FileCard({ name, meta, icon, actions, sx }: FileCardProps) {\r\n return (\r\n <Surface\r\n tone=\"subtle\"\r\n radius=\"md\"\r\n padding=\"compact\"\r\n {...(sx !== undefined ? { sx } : {})}\r\n >\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n gap: \"var(--s-3)\",\r\n }}\r\n >\r\n {/* Identity block. `minWidth: 0` is load-bearing: without it a flex item\r\n refuses to shrink below its content width and the filename pushes the\r\n action cluster out of the card instead of truncating. */}\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"var(--s-3)\",\r\n minWidth: 0,\r\n flex: 1,\r\n }}\r\n >\r\n <Box\r\n component=\"span\"\r\n aria-hidden=\"true\"\r\n /* Test hook. The icon wrapper carries no role and no accessible\r\n * name — by design — so there is no semantic query that can reach\r\n * it, and the repo's eslint config rightly forbids container\r\n * queries and direct node access in tests. A stable testid is the\r\n * sanctioned escape hatch, and the contract it guards (R-Ar.2: a\r\n * decorative glyph must NOT be announced) is worth a hook. */\r\n data-testid=\"filecard-icon\"\r\n sx={{\r\n display: \"inline-flex\",\r\n flexShrink: 0,\r\n color: \"var(--accent)\",\r\n // --text-display is the 26px token; the glyph sits at the optical\r\n // scale the three local copies had converged on.\r\n \"& > *\": { fontSize: \"var(--text-display)\" },\r\n }}\r\n >\r\n {icon ?? <InsertDriveFileIcon />}\r\n </Box>\r\n\r\n <Box sx={{ minWidth: 0 }}>\r\n <Box\r\n title={name}\r\n sx={{\r\n fontSize: \"var(--text-sm)\",\r\n fontWeight: \"var(--fw-semibold)\",\r\n color: \"var(--fg)\",\r\n whiteSpace: \"nowrap\",\r\n overflow: \"hidden\",\r\n textOverflow: \"ellipsis\",\r\n }}\r\n >\r\n {name}\r\n </Box>\r\n {meta != null && meta !== \"\" && (\r\n <Box\r\n /* Test hook — same rationale as filecard-icon. The contract is\r\n * that this line is ABSENT rather than empty: a blank second\r\n * line reads as missing data and changes the row height, which\r\n * breaks the alignment of a list of files. \"Absent, not empty\"\r\n * cannot be expressed by a text query. */\r\n data-testid=\"filecard-meta\"\r\n sx={{\r\n fontSize: \"var(--text-xs)\",\r\n color: \"var(--fg-subtle)\",\r\n // R-T.3 — tabular numerals on any numeric run.\r\n fontVariantNumeric: \"tabular-nums\",\r\n }}\r\n >\r\n {meta}\r\n </Box>\r\n )}\r\n </Box>\r\n </Box>\r\n\r\n {actions != null && (\r\n /* `flexShrink: 0` — the buttons keep their intrinsic width; it is the\r\n filename that yields. The inverse produced squashed labels. */\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"var(--s-2)\",\r\n flexShrink: 0,\r\n }}\r\n >\r\n {actions}\r\n </Box>\r\n )}\r\n </Box>\r\n </Surface>\r\n );\r\n}\r\n\r\nexport default FileCard;\r\n"],"mappings":"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","ignoreList":[]}
|