@portnet/ui 6.0.2 → 6.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +652 -0
- package/dist/esm/index.js +72 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/v2/__tests__/AppMain.test.js +130 -0
- package/dist/esm/v2/__tests__/AppMain.test.js.map +1 -0
- package/dist/esm/v2/__tests__/ChartFigure.test.js +180 -0
- package/dist/esm/v2/__tests__/ChartFigure.test.js.map +1 -0
- package/dist/esm/v2/__tests__/DataGridRowActionsPropagation.test.js +150 -0
- package/dist/esm/v2/__tests__/DataGridRowActionsPropagation.test.js.map +1 -0
- package/dist/esm/v2/__tests__/DrawerTactileTargets.test.js +93 -0
- package/dist/esm/v2/__tests__/DrawerTactileTargets.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FieldError.test.js +71 -38
- package/dist/esm/v2/__tests__/FieldError.test.js.map +1 -1
- package/dist/esm/v2/__tests__/FieldNaming.test.js +160 -0
- package/dist/esm/v2/__tests__/FieldNaming.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FieldWidth.test.js +11 -11
- package/dist/esm/v2/__tests__/FieldWidth.test.js.map +1 -1
- package/dist/esm/v2/__tests__/FileCard.test.js +18 -17
- package/dist/esm/v2/__tests__/FileCard.test.js.map +1 -1
- package/dist/esm/v2/__tests__/FormikCheckbox.test.js +87 -179
- package/dist/esm/v2/__tests__/FormikCheckbox.test.js.map +1 -1
- package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js +32 -44
- package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js.map +1 -1
- package/dist/esm/v2/__tests__/FormikDisplayWidth.test.js +101 -0
- package/dist/esm/v2/__tests__/FormikDisplayWidth.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FormikRadioGroup.test.js +118 -199
- package/dist/esm/v2/__tests__/FormikRadioGroup.test.js.map +1 -1
- package/dist/esm/v2/__tests__/MobileRowCard.test.js +44 -42
- package/dist/esm/v2/__tests__/MobileRowCard.test.js.map +1 -1
- package/dist/esm/v2/__tests__/PreviewDrawer.test.js +165 -0
- package/dist/esm/v2/__tests__/PreviewDrawer.test.js.map +1 -0
- package/dist/esm/v2/__tests__/ReferentielFieldContainer.test.js +156 -0
- package/dist/esm/v2/__tests__/ReferentielFieldContainer.test.js.map +1 -0
- package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js +37 -52
- package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js.map +1 -1
- package/dist/esm/v2/__tests__/apiError.test.js +50 -69
- package/dist/esm/v2/__tests__/apiError.test.js.map +1 -1
- package/dist/esm/v2/__tests__/banned-patterns.test.js +41 -122
- package/dist/esm/v2/__tests__/banned-patterns.test.js.map +1 -1
- package/dist/esm/v2/__tests__/chart-palette.test.js +204 -0
- package/dist/esm/v2/__tests__/chart-palette.test.js.map +1 -0
- package/dist/esm/v2/__tests__/contrast-palette.test.js +42 -74
- package/dist/esm/v2/__tests__/contrast-palette.test.js.map +1 -1
- package/dist/esm/v2/__tests__/cssVariables.test.js +44 -51
- package/dist/esm/v2/__tests__/cssVariables.test.js.map +1 -1
- package/dist/esm/v2/__tests__/fileValidation.test.js +134 -0
- package/dist/esm/v2/__tests__/fileValidation.test.js.map +1 -0
- package/dist/esm/v2/__tests__/filterCriteria.test.js +321 -0
- package/dist/esm/v2/__tests__/filterCriteria.test.js.map +1 -0
- package/dist/esm/v2/__tests__/fmtDate.test.js +68 -0
- package/dist/esm/v2/__tests__/fmtDate.test.js.map +1 -0
- package/dist/esm/v2/__tests__/gap-leakage-refonte.test.js +218 -0
- package/dist/esm/v2/__tests__/gap-leakage-refonte.test.js.map +1 -0
- package/dist/esm/v2/__tests__/labels-merge.test.js +17 -21
- package/dist/esm/v2/__tests__/labels-merge.test.js.map +1 -1
- package/dist/esm/v2/__tests__/locale-fallback.test.js +35 -40
- package/dist/esm/v2/__tests__/locale-fallback.test.js.map +1 -1
- package/dist/esm/v2/__tests__/reviveSavedCriteria.test.js +143 -0
- package/dist/esm/v2/__tests__/reviveSavedCriteria.test.js.map +1 -0
- package/dist/esm/v2/__tests__/rowActions.test.js +182 -0
- package/dist/esm/v2/__tests__/rowActions.test.js.map +1 -0
- package/dist/esm/v2/__tests__/useFocusOnRouteChange.test.js +155 -0
- package/dist/esm/v2/__tests__/useFocusOnRouteChange.test.js.map +1 -0
- package/dist/esm/v2/__tests__/useFocusTrap.test.js +266 -402
- package/dist/esm/v2/__tests__/useFocusTrap.test.js.map +1 -1
- package/dist/esm/v2/__tests__/usePrefersReducedMotion.test.js +120 -0
- package/dist/esm/v2/__tests__/usePrefersReducedMotion.test.js.map +1 -0
- package/dist/esm/v2/components/Accordion.js +48 -70
- package/dist/esm/v2/components/Accordion.js.map +1 -1
- package/dist/esm/v2/components/ActionStrip.js +31 -43
- package/dist/esm/v2/components/ActionStrip.js.map +1 -1
- package/dist/esm/v2/components/Banner.js +25 -22
- package/dist/esm/v2/components/Banner.js.map +1 -1
- package/dist/esm/v2/components/Busy.js +14 -19
- package/dist/esm/v2/components/Busy.js.map +1 -1
- package/dist/esm/v2/components/Button.js +34 -45
- package/dist/esm/v2/components/Button.js.map +1 -1
- package/dist/esm/v2/components/CategoryTag.js +44 -27
- package/dist/esm/v2/components/CategoryTag.js.map +1 -1
- package/dist/esm/v2/components/Checkbox.js +32 -38
- package/dist/esm/v2/components/Checkbox.js.map +1 -1
- package/dist/esm/v2/components/Chip.js +23 -36
- package/dist/esm/v2/components/Chip.js.map +1 -1
- package/dist/esm/v2/components/Combobox.js +112 -136
- package/dist/esm/v2/components/Combobox.js.map +1 -1
- package/dist/esm/v2/components/CommandPalette.js +113 -198
- package/dist/esm/v2/components/CommandPalette.js.map +1 -1
- package/dist/esm/v2/components/ConfirmDialog.js +36 -45
- package/dist/esm/v2/components/ConfirmDialog.js.map +1 -1
- package/dist/esm/v2/components/DatePicker.js +78 -81
- package/dist/esm/v2/components/DatePicker.js.map +1 -1
- package/dist/esm/v2/components/DateRangePicker.js +63 -74
- package/dist/esm/v2/components/DateRangePicker.js.map +1 -1
- package/dist/esm/v2/components/DateTimePicker.js +81 -86
- package/dist/esm/v2/components/DateTimePicker.js.map +1 -1
- package/dist/esm/v2/components/Drawer.js +71 -65
- package/dist/esm/v2/components/Drawer.js.map +1 -1
- package/dist/esm/v2/components/Dropzone.js +130 -177
- package/dist/esm/v2/components/Dropzone.js.map +1 -1
- package/dist/esm/v2/components/EmptyState.js +9 -9
- package/dist/esm/v2/components/EmptyState.js.map +1 -1
- package/dist/esm/v2/components/FavoriteToggle.js +24 -33
- package/dist/esm/v2/components/FavoriteToggle.js.map +1 -1
- package/dist/esm/v2/components/Field.js +155 -59
- package/dist/esm/v2/components/Field.js.map +1 -1
- package/dist/esm/v2/components/FieldError.js +9 -13
- package/dist/esm/v2/components/FieldError.js.map +1 -1
- package/dist/esm/v2/components/FieldHelp.js +28 -49
- package/dist/esm/v2/components/FieldHelp.js.map +1 -1
- package/dist/esm/v2/components/FileCard.js +14 -19
- package/dist/esm/v2/components/FileCard.js.map +1 -1
- package/dist/esm/v2/components/FilterTab.js +22 -31
- package/dist/esm/v2/components/FilterTab.js.map +1 -1
- package/dist/esm/v2/components/ForbiddenPage.js +28 -8
- package/dist/esm/v2/components/ForbiddenPage.js.map +1 -1
- package/dist/esm/v2/components/FormGrid.js +48 -54
- package/dist/esm/v2/components/FormGrid.js.map +1 -1
- package/dist/esm/v2/components/FormikDisplay.js +98 -24
- package/dist/esm/v2/components/FormikDisplay.js.map +1 -1
- package/dist/esm/v2/components/Input.js +75 -34
- package/dist/esm/v2/components/Input.js.map +1 -1
- package/dist/esm/v2/components/KPICard.js +42 -51
- package/dist/esm/v2/components/KPICard.js.map +1 -1
- package/dist/esm/v2/components/KPIStrip.js +9 -15
- package/dist/esm/v2/components/KPIStrip.js.map +1 -1
- package/dist/esm/v2/components/KV.js +16 -23
- package/dist/esm/v2/components/KV.js.map +1 -1
- package/dist/esm/v2/components/KVGrid.js +15 -23
- package/dist/esm/v2/components/KVGrid.js.map +1 -1
- package/dist/esm/v2/components/Layout.js +81 -117
- package/dist/esm/v2/components/Layout.js.map +1 -1
- package/dist/esm/v2/components/MobileRowCard.js +64 -75
- package/dist/esm/v2/components/MobileRowCard.js.map +1 -1
- package/dist/esm/v2/components/Modal.js +44 -53
- package/dist/esm/v2/components/Modal.js.map +1 -1
- package/dist/esm/v2/components/NetworkErrorPage.js +28 -11
- package/dist/esm/v2/components/NetworkErrorPage.js.map +1 -1
- package/dist/esm/v2/components/NotFoundPage.js +28 -9
- package/dist/esm/v2/components/NotFoundPage.js.map +1 -1
- package/dist/esm/v2/components/NumberInput.js +77 -107
- package/dist/esm/v2/components/NumberInput.js.map +1 -1
- package/dist/esm/v2/components/OverflowMenu.js +24 -42
- package/dist/esm/v2/components/OverflowMenu.js.map +1 -1
- package/dist/esm/v2/components/PdfViewer.js +24 -33
- package/dist/esm/v2/components/PdfViewer.js.map +1 -1
- package/dist/esm/v2/components/ProgressBar.js +28 -36
- package/dist/esm/v2/components/ProgressBar.js.map +1 -1
- package/dist/esm/v2/components/Radio.js +49 -57
- package/dist/esm/v2/components/Radio.js.map +1 -1
- package/dist/esm/v2/components/SectionErrorBoundary.js +84 -130
- package/dist/esm/v2/components/SectionErrorBoundary.js.map +1 -1
- package/dist/esm/v2/components/SectionHeader.js +24 -31
- package/dist/esm/v2/components/SectionHeader.js.map +1 -1
- package/dist/esm/v2/components/Segmented.js +59 -84
- package/dist/esm/v2/components/Segmented.js.map +1 -1
- package/dist/esm/v2/components/Select.js +100 -138
- package/dist/esm/v2/components/Select.js.map +1 -1
- package/dist/esm/v2/components/ServerErrorPage.js +27 -10
- package/dist/esm/v2/components/ServerErrorPage.js.map +1 -1
- package/dist/esm/v2/components/Skeleton.js +81 -96
- package/dist/esm/v2/components/Skeleton.js.map +1 -1
- package/dist/esm/v2/components/SkipLink.js +6 -7
- package/dist/esm/v2/components/SkipLink.js.map +1 -1
- package/dist/esm/v2/components/Spinner.js +13 -22
- package/dist/esm/v2/components/Spinner.js.map +1 -1
- package/dist/esm/v2/components/Status.js +14 -25
- package/dist/esm/v2/components/Status.js.map +1 -1
- package/dist/esm/v2/components/Stepper.js +68 -71
- package/dist/esm/v2/components/Stepper.js.map +1 -1
- package/dist/esm/v2/components/Surface.js +25 -44
- package/dist/esm/v2/components/Surface.js.map +1 -1
- package/dist/esm/v2/components/Switch.js +21 -29
- package/dist/esm/v2/components/Switch.js.map +1 -1
- package/dist/esm/v2/components/TabPanel.js +84 -0
- package/dist/esm/v2/components/TabPanel.js.map +1 -0
- package/dist/esm/v2/components/Tabs.js +43 -19
- package/dist/esm/v2/components/Tabs.js.map +1 -1
- package/dist/esm/v2/components/TelInput.js +75 -108
- package/dist/esm/v2/components/TelInput.js.map +1 -1
- package/dist/esm/v2/components/Textarea.js +21 -30
- package/dist/esm/v2/components/Textarea.js.map +1 -1
- package/dist/esm/v2/components/TimePicker.js +59 -69
- package/dist/esm/v2/components/TimePicker.js.map +1 -1
- package/dist/esm/v2/components/Toast.js +109 -163
- package/dist/esm/v2/components/Toast.js.map +1 -1
- package/dist/esm/v2/components/Tooltip.js +18 -31
- package/dist/esm/v2/components/Tooltip.js.map +1 -1
- package/dist/esm/v2/components/_ErrorPageBody.js +6 -5
- package/dist/esm/v2/components/_ErrorPageBody.js.map +1 -1
- package/dist/esm/v2/components/_pickerShared.js +2 -2
- package/dist/esm/v2/components/_pickerShared.js.map +1 -1
- package/dist/esm/v2/components/index.js +37 -0
- package/dist/esm/v2/components/index.js.map +1 -1
- package/dist/esm/v2/hooks/index.js +62 -0
- package/dist/esm/v2/hooks/index.js.map +1 -1
- package/dist/esm/v2/hooks/useAppliedFilters.js +112 -0
- package/dist/esm/v2/hooks/useAppliedFilters.js.map +1 -0
- package/dist/esm/v2/hooks/useDebouncedCallback.js +82 -0
- package/dist/esm/v2/hooks/useDebouncedCallback.js.map +1 -0
- package/dist/esm/v2/hooks/useDelayedFlag.js +5 -19
- package/dist/esm/v2/hooks/useDelayedFlag.js.map +1 -1
- package/dist/esm/v2/hooks/useDensity.js +13 -17
- package/dist/esm/v2/hooks/useDensity.js.map +1 -1
- package/dist/esm/v2/hooks/useFocusFirstError.js +25 -33
- package/dist/esm/v2/hooks/useFocusFirstError.js.map +1 -1
- package/dist/esm/v2/hooks/useFocusOnRouteChange.js +81 -0
- package/dist/esm/v2/hooks/useFocusOnRouteChange.js.map +1 -0
- package/dist/esm/v2/hooks/useFocusTrap.js +19 -23
- package/dist/esm/v2/hooks/useFocusTrap.js.map +1 -1
- package/dist/esm/v2/hooks/useFormAutoSave.js +38 -53
- package/dist/esm/v2/hooks/useFormAutoSave.js.map +1 -1
- package/dist/esm/v2/hooks/useFormCompletionProgress.js +32 -51
- package/dist/esm/v2/hooks/useFormCompletionProgress.js.map +1 -1
- package/dist/esm/v2/hooks/useKeyboardShortcuts.js +125 -0
- package/dist/esm/v2/hooks/useKeyboardShortcuts.js.map +1 -0
- package/dist/esm/v2/hooks/usePrefersReducedMotion.js +99 -0
- package/dist/esm/v2/hooks/usePrefersReducedMotion.js.map +1 -0
- package/dist/esm/v2/hooks/useResolvedDensity.js +2 -10
- package/dist/esm/v2/hooks/useResolvedDensity.js.map +1 -1
- package/dist/esm/v2/hooks/useSortedRows.js +3 -5
- package/dist/esm/v2/hooks/useSortedRows.js.map +1 -1
- package/dist/esm/v2/hooks/useTabLoading.js +6 -21
- package/dist/esm/v2/hooks/useTabLoading.js.map +1 -1
- package/dist/esm/v2/index.js +2 -3
- package/dist/esm/v2/index.js.map +1 -1
- package/dist/esm/v2/modalContext.js +2 -2
- package/dist/esm/v2/modalContext.js.map +1 -1
- package/dist/esm/v2/models/favorite.js.map +1 -1
- package/dist/esm/v2/models/personalization.js.map +1 -1
- package/dist/esm/v2/models/referentiel.js.map +1 -1
- package/dist/esm/v2/models/savedFilter.js.map +1 -1
- package/dist/esm/v2/patterns/ActionBar.js +115 -159
- package/dist/esm/v2/patterns/ActionBar.js.map +1 -1
- package/dist/esm/v2/patterns/AppMain.js +108 -0
- package/dist/esm/v2/patterns/AppMain.js.map +1 -0
- package/dist/esm/v2/patterns/BulkActionBar.js +31 -34
- package/dist/esm/v2/patterns/BulkActionBar.js.map +1 -1
- package/dist/esm/v2/patterns/ChartFigure.js +151 -0
- package/dist/esm/v2/patterns/ChartFigure.js.map +1 -0
- package/dist/esm/v2/patterns/CollapsibleDataGrid.js +111 -152
- package/dist/esm/v2/patterns/CollapsibleDataGrid.js.map +1 -1
- package/dist/esm/v2/patterns/ColumnsToggle.js +43 -77
- package/dist/esm/v2/patterns/ColumnsToggle.js.map +1 -1
- package/dist/esm/v2/patterns/DataGrid.js +221 -255
- package/dist/esm/v2/patterns/DataGrid.js.map +1 -1
- package/dist/esm/v2/patterns/DataGridSettingsMenu.js +76 -94
- package/dist/esm/v2/patterns/DataGridSettingsMenu.js.map +1 -1
- package/dist/esm/v2/patterns/DataGridToolbar.js +85 -89
- package/dist/esm/v2/patterns/DataGridToolbar.js.map +1 -1
- package/dist/esm/v2/patterns/DataGridVirtualized.js +141 -182
- package/dist/esm/v2/patterns/DataGridVirtualized.js.map +1 -1
- package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js +26 -30
- package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
- package/dist/esm/v2/patterns/DetailSplit.js +108 -0
- package/dist/esm/v2/patterns/DetailSplit.js.map +1 -0
- package/dist/esm/v2/patterns/FavoriteColumn.js +15 -17
- package/dist/esm/v2/patterns/FavoriteColumn.js.map +1 -1
- package/dist/esm/v2/patterns/FavoritesFilter.js +30 -39
- package/dist/esm/v2/patterns/FavoritesFilter.js.map +1 -1
- package/dist/esm/v2/patterns/FilterTabBar.js +112 -0
- package/dist/esm/v2/patterns/FilterTabBar.js.map +1 -0
- package/dist/esm/v2/patterns/FormErrorSummary.js +12 -13
- package/dist/esm/v2/patterns/FormErrorSummary.js.map +1 -1
- package/dist/esm/v2/patterns/FormPageShell.js +43 -41
- package/dist/esm/v2/patterns/FormPageShell.js.map +1 -1
- package/dist/esm/v2/patterns/FormSection.js +30 -38
- package/dist/esm/v2/patterns/FormSection.js.map +1 -1
- package/dist/esm/v2/patterns/FormikCheckbox.js +29 -39
- package/dist/esm/v2/patterns/FormikCheckbox.js.map +1 -1
- package/dist/esm/v2/patterns/FormikCheckboxGroup.js +56 -60
- package/dist/esm/v2/patterns/FormikCheckboxGroup.js.map +1 -1
- package/dist/esm/v2/patterns/FormikCombobox.js +51 -69
- package/dist/esm/v2/patterns/FormikCombobox.js.map +1 -1
- package/dist/esm/v2/patterns/FormikDatePicker.js +44 -58
- package/dist/esm/v2/patterns/FormikDatePicker.js.map +1 -1
- package/dist/esm/v2/patterns/FormikDateTimePicker.js +44 -58
- package/dist/esm/v2/patterns/FormikDateTimePicker.js.map +1 -1
- package/dist/esm/v2/patterns/FormikErrorFocus.js +22 -23
- package/dist/esm/v2/patterns/FormikErrorFocus.js.map +1 -1
- package/dist/esm/v2/patterns/FormikErrorSummary.js +89 -0
- package/dist/esm/v2/patterns/FormikErrorSummary.js.map +1 -0
- package/dist/esm/v2/patterns/FormikFile.js +94 -78
- package/dist/esm/v2/patterns/FormikFile.js.map +1 -1
- package/dist/esm/v2/patterns/FormikInput.js +40 -53
- package/dist/esm/v2/patterns/FormikInput.js.map +1 -1
- package/dist/esm/v2/patterns/FormikRadioGroup.js +39 -51
- package/dist/esm/v2/patterns/FormikRadioGroup.js.map +1 -1
- package/dist/esm/v2/patterns/FormikReferentielField.js +49 -59
- package/dist/esm/v2/patterns/FormikReferentielField.js.map +1 -1
- package/dist/esm/v2/patterns/FormikSelect.js +64 -87
- package/dist/esm/v2/patterns/FormikSelect.js.map +1 -1
- package/dist/esm/v2/patterns/FormikTextarea.js +30 -46
- package/dist/esm/v2/patterns/FormikTextarea.js.map +1 -1
- package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js +53 -71
- package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
- package/dist/esm/v2/patterns/NetworkErrorBanner.js +6 -7
- package/dist/esm/v2/patterns/NetworkErrorBanner.js.map +1 -1
- package/dist/esm/v2/patterns/PageContent.js +10 -14
- package/dist/esm/v2/patterns/PageContent.js.map +1 -1
- package/dist/esm/v2/patterns/PreviewDrawer.js +153 -0
- package/dist/esm/v2/patterns/PreviewDrawer.js.map +1 -0
- package/dist/esm/v2/patterns/ReferentielField.js +327 -312
- package/dist/esm/v2/patterns/ReferentielField.js.map +1 -1
- package/dist/esm/v2/patterns/RowFavoriteToggle.js +27 -22
- package/dist/esm/v2/patterns/RowFavoriteToggle.js.map +1 -1
- package/dist/esm/v2/patterns/SaveFilterDialog.js +38 -66
- package/dist/esm/v2/patterns/SaveFilterDialog.js.map +1 -1
- package/dist/esm/v2/patterns/SavedFiltersMenu.js +62 -81
- package/dist/esm/v2/patterns/SavedFiltersMenu.js.map +1 -1
- package/dist/esm/v2/patterns/SkeletonPageShell.js +106 -129
- package/dist/esm/v2/patterns/SkeletonPageShell.js.map +1 -1
- package/dist/esm/v2/patterns/SortableHeader.js +22 -45
- package/dist/esm/v2/patterns/SortableHeader.js.map +1 -1
- package/dist/esm/v2/patterns/Tour.js +94 -120
- package/dist/esm/v2/patterns/Tour.js.map +1 -1
- package/dist/esm/v2/patterns/_dataGridShared.js +107 -128
- package/dist/esm/v2/patterns/_dataGridShared.js.map +1 -1
- package/dist/esm/v2/patterns/_pickerSerialisation.js +6 -8
- package/dist/esm/v2/patterns/_pickerSerialisation.js.map +1 -1
- package/dist/esm/v2/patterns/_sort.js +17 -33
- package/dist/esm/v2/patterns/_sort.js.map +1 -1
- package/dist/esm/v2/patterns/_useColumnReorder.js +122 -160
- package/dist/esm/v2/patterns/_useColumnReorder.js.map +1 -1
- package/dist/esm/v2/patterns/_useColumnResize.js +78 -96
- package/dist/esm/v2/patterns/_useColumnResize.js.map +1 -1
- package/dist/esm/v2/patterns/filterCriteria.js +102 -0
- package/dist/esm/v2/patterns/filterCriteria.js.map +1 -0
- package/dist/esm/v2/patterns/index.js +152 -0
- package/dist/esm/v2/patterns/index.js.map +1 -1
- package/dist/esm/v2/patterns/rowActions.js +223 -0
- package/dist/esm/v2/patterns/rowActions.js.map +1 -0
- package/dist/esm/v2/personalization/PersonalizationProvider.js +50 -47
- package/dist/esm/v2/personalization/PersonalizationProvider.js.map +1 -1
- package/dist/esm/v2/personalization/adapters/_storageKey.js +5 -5
- package/dist/esm/v2/personalization/adapters/_storageKey.js.map +1 -1
- package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js +22 -23
- package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
- package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js +13 -13
- package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
- package/dist/esm/v2/personalization/capabilities/favorites.js +36 -60
- package/dist/esm/v2/personalization/capabilities/favorites.js.map +1 -1
- package/dist/esm/v2/personalization/capabilities/favoritesView.js +22 -34
- package/dist/esm/v2/personalization/capabilities/favoritesView.js.map +1 -1
- package/dist/esm/v2/personalization/capabilities/gridPreferences.js +28 -34
- package/dist/esm/v2/personalization/capabilities/gridPreferences.js.map +1 -1
- package/dist/esm/v2/personalization/capabilities/reviveSavedCriteria.js +119 -0
- package/dist/esm/v2/personalization/capabilities/reviveSavedCriteria.js.map +1 -0
- package/dist/esm/v2/personalization/capabilities/savedFilters.js +90 -98
- package/dist/esm/v2/personalization/capabilities/savedFilters.js.map +1 -1
- package/dist/esm/v2/personalization/createPersonalizationStore.js +78 -181
- package/dist/esm/v2/personalization/createPersonalizationStore.js.map +1 -1
- package/dist/esm/v2/personalization/index.js +17 -0
- package/dist/esm/v2/personalization/index.js.map +1 -1
- package/dist/esm/v2/personalization/personalizationContext.js +9 -9
- package/dist/esm/v2/personalization/personalizationContext.js.map +1 -1
- package/dist/esm/v2/personalization/schema.js +8 -9
- package/dist/esm/v2/personalization/schema.js.map +1 -1
- package/dist/esm/v2/referentiel/ReferentielProvider.js +27 -42
- package/dist/esm/v2/referentiel/ReferentielProvider.js.map +1 -1
- package/dist/esm/v2/referentiel/types.js +2 -0
- package/dist/esm/v2/referentiel/types.js.map +1 -0
- package/dist/esm/v2/referentiel/useReferentielClient.js +10 -11
- package/dist/esm/v2/referentiel/useReferentielClient.js.map +1 -1
- package/dist/esm/v2/referentiel/useReferentielOptions.js +60 -117
- package/dist/esm/v2/referentiel/useReferentielOptions.js.map +1 -1
- package/dist/esm/v2/referentiel/useReferentielSearch.js +37 -91
- package/dist/esm/v2/referentiel/useReferentielSearch.js.map +1 -1
- package/dist/esm/v2/theme/_brand.js +8 -24
- package/dist/esm/v2/theme/_brand.js.map +1 -1
- package/dist/esm/v2/theme/_brandSecondary.js +8 -24
- package/dist/esm/v2/theme/_brandSecondary.js.map +1 -1
- package/dist/esm/v2/theme/createPortnetTheme.js +51 -61
- package/dist/esm/v2/theme/createPortnetTheme.js.map +1 -1
- package/dist/esm/v2/theme/cssVariables.js +62 -69
- package/dist/esm/v2/theme/cssVariables.js.map +1 -1
- package/dist/esm/v2/theme/index.js +5 -5
- package/dist/esm/v2/theme/index.js.map +1 -1
- package/dist/esm/v2/tokens/breakpoints.js +14 -14
- package/dist/esm/v2/tokens/breakpoints.js.map +1 -1
- package/dist/esm/v2/tokens/chart.js +261 -0
- package/dist/esm/v2/tokens/chart.js.map +1 -0
- package/dist/esm/v2/tokens/colors.js +22 -22
- package/dist/esm/v2/tokens/colors.js.map +1 -1
- package/dist/esm/v2/tokens/density.js +62 -7
- package/dist/esm/v2/tokens/density.js.map +1 -1
- package/dist/esm/v2/tokens/index.js +49 -34
- package/dist/esm/v2/tokens/index.js.map +1 -1
- package/dist/esm/v2/tokens/motion.js +12 -20
- package/dist/esm/v2/tokens/motion.js.map +1 -1
- package/dist/esm/v2/tokens/radius.js +1 -1
- package/dist/esm/v2/tokens/radius.js.map +1 -1
- package/dist/esm/v2/tokens/shadows.js +6 -6
- package/dist/esm/v2/tokens/shadows.js.map +1 -1
- package/dist/esm/v2/tokens/spacing.js +2 -2
- package/dist/esm/v2/tokens/spacing.js.map +1 -1
- package/dist/esm/v2/tokens/state.js +1 -1
- package/dist/esm/v2/tokens/state.js.map +1 -1
- package/dist/esm/v2/tokens/statusPalette.js +17 -21
- package/dist/esm/v2/tokens/statusPalette.js.map +1 -1
- package/dist/esm/v2/tokens/tokens.json +6 -1
- package/dist/esm/v2/tokens/typography.js +13 -13
- package/dist/esm/v2/tokens/typography.js.map +1 -1
- package/dist/esm/v2/tokens/zIndex.js +1 -1
- package/dist/esm/v2/tokens/zIndex.js.map +1 -1
- package/dist/esm/v2/types/datagrid.js.map +1 -1
- package/dist/esm/v2/utils/apiError.js +16 -37
- package/dist/esm/v2/utils/apiError.js.map +1 -1
- package/dist/esm/v2/utils/contrast.js +31 -32
- package/dist/esm/v2/utils/contrast.js.map +1 -1
- package/dist/esm/v2/utils/cx.js +5 -25
- package/dist/esm/v2/utils/cx.js.map +1 -1
- package/dist/esm/v2/utils/fileDownload.js +23 -26
- package/dist/esm/v2/utils/fileDownload.js.map +1 -1
- package/dist/esm/v2/utils/fileValidation.js +209 -0
- package/dist/esm/v2/utils/fileValidation.js.map +1 -0
- package/dist/esm/v2/utils/fmtDate.js +111 -0
- package/dist/esm/v2/utils/fmtDate.js.map +1 -0
- package/dist/esm/v2/utils/fmtMoney.js +8 -10
- package/dist/esm/v2/utils/fmtMoney.js.map +1 -1
- package/dist/esm/v2/utils/formikErrors.js +78 -0
- package/dist/esm/v2/utils/formikErrors.js.map +1 -0
- package/dist/esm/v2/utils/index.js +35 -2
- package/dist/esm/v2/utils/index.js.map +1 -1
- package/dist/esm/v2/utils/mergeLabels.js +7 -12
- package/dist/esm/v2/utils/mergeLabels.js.map +1 -1
- package/dist/esm/v2/utils/networkStatus.js +12 -12
- package/dist/esm/v2/utils/networkStatus.js.map +1 -1
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +110 -49
- package/dist/index.js.map +1 -1
- package/dist/v2/__tests__/AppMain.test.js +133 -0
- package/dist/v2/__tests__/AppMain.test.js.map +1 -0
- package/dist/v2/__tests__/ChartFigure.test.js +183 -0
- package/dist/v2/__tests__/ChartFigure.test.js.map +1 -0
- package/dist/v2/__tests__/DataGridRowActionsPropagation.test.js +153 -0
- package/dist/v2/__tests__/DataGridRowActionsPropagation.test.js.map +1 -0
- package/dist/v2/__tests__/DrawerTactileTargets.test.js +94 -0
- package/dist/v2/__tests__/DrawerTactileTargets.test.js.map +1 -0
- package/dist/v2/__tests__/FieldError.test.js +82 -49
- package/dist/v2/__tests__/FieldError.test.js.map +1 -1
- package/dist/v2/__tests__/FieldNaming.test.js +161 -0
- package/dist/v2/__tests__/FieldNaming.test.js.map +1 -0
- package/dist/v2/__tests__/FieldWidth.test.js +23 -25
- package/dist/v2/__tests__/FieldWidth.test.js.map +1 -1
- package/dist/v2/__tests__/FileCard.test.js +29 -28
- package/dist/v2/__tests__/FileCard.test.js.map +1 -1
- package/dist/v2/__tests__/FormikCheckbox.test.js +90 -183
- package/dist/v2/__tests__/FormikCheckbox.test.js.map +1 -1
- package/dist/v2/__tests__/FormikDateTimePicker.test.js +38 -48
- package/dist/v2/__tests__/FormikDateTimePicker.test.js.map +1 -1
- package/dist/v2/__tests__/FormikDisplayWidth.test.js +102 -0
- package/dist/v2/__tests__/FormikDisplayWidth.test.js.map +1 -0
- package/dist/v2/__tests__/FormikRadioGroup.test.js +123 -204
- package/dist/v2/__tests__/FormikRadioGroup.test.js.map +1 -1
- package/dist/v2/__tests__/MobileRowCard.test.js +63 -61
- package/dist/v2/__tests__/MobileRowCard.test.js.map +1 -1
- package/dist/v2/__tests__/PreviewDrawer.test.js +169 -0
- package/dist/v2/__tests__/PreviewDrawer.test.js.map +1 -0
- package/dist/v2/__tests__/ReferentielFieldContainer.test.js +159 -0
- package/dist/v2/__tests__/ReferentielFieldContainer.test.js.map +1 -0
- package/dist/v2/__tests__/SectionErrorBoundary.test.js +53 -68
- package/dist/v2/__tests__/SectionErrorBoundary.test.js.map +1 -1
- package/dist/v2/__tests__/apiError.test.js +50 -69
- package/dist/v2/__tests__/apiError.test.js.map +1 -1
- package/dist/v2/__tests__/banned-patterns.test.js +42 -123
- package/dist/v2/__tests__/banned-patterns.test.js.map +1 -1
- package/dist/v2/__tests__/chart-palette.test.js +205 -0
- package/dist/v2/__tests__/chart-palette.test.js.map +1 -0
- package/dist/v2/__tests__/contrast-palette.test.js +42 -74
- package/dist/v2/__tests__/contrast-palette.test.js.map +1 -1
- package/dist/v2/__tests__/cssVariables.test.js +44 -51
- package/dist/v2/__tests__/cssVariables.test.js.map +1 -1
- package/dist/v2/__tests__/fileValidation.test.js +136 -0
- package/dist/v2/__tests__/fileValidation.test.js.map +1 -0
- package/dist/v2/__tests__/filterCriteria.test.js +324 -0
- package/dist/v2/__tests__/filterCriteria.test.js.map +1 -0
- package/dist/v2/__tests__/fmtDate.test.js +69 -0
- package/dist/v2/__tests__/fmtDate.test.js.map +1 -0
- package/dist/v2/__tests__/gap-leakage-refonte.test.js +221 -0
- package/dist/v2/__tests__/gap-leakage-refonte.test.js.map +1 -0
- package/dist/v2/__tests__/labels-merge.test.js +23 -27
- package/dist/v2/__tests__/labels-merge.test.js.map +1 -1
- package/dist/v2/__tests__/locale-fallback.test.js +47 -52
- package/dist/v2/__tests__/locale-fallback.test.js.map +1 -1
- package/dist/v2/__tests__/reviveSavedCriteria.test.js +144 -0
- package/dist/v2/__tests__/reviveSavedCriteria.test.js.map +1 -0
- package/dist/v2/__tests__/rowActions.test.js +186 -0
- package/dist/v2/__tests__/rowActions.test.js.map +1 -0
- package/dist/v2/__tests__/useFocusOnRouteChange.test.js +156 -0
- package/dist/v2/__tests__/useFocusOnRouteChange.test.js.map +1 -0
- package/dist/v2/__tests__/useFocusTrap.test.js +270 -407
- package/dist/v2/__tests__/useFocusTrap.test.js.map +1 -1
- package/dist/v2/__tests__/usePrefersReducedMotion.test.js +123 -0
- package/dist/v2/__tests__/usePrefersReducedMotion.test.js.map +1 -0
- package/dist/v2/components/Accordion.js +60 -82
- package/dist/v2/components/Accordion.js.map +1 -1
- package/dist/v2/components/ActionStrip.js +40 -52
- package/dist/v2/components/ActionStrip.js.map +1 -1
- package/dist/v2/components/Banner.js +42 -41
- package/dist/v2/components/Banner.js.map +1 -1
- package/dist/v2/components/Busy.js +22 -27
- package/dist/v2/components/Busy.js.map +1 -1
- package/dist/v2/components/Button.js +39 -50
- package/dist/v2/components/Button.js.map +1 -1
- package/dist/v2/components/CategoryTag.d.ts.map +1 -1
- package/dist/v2/components/CategoryTag.js +49 -32
- package/dist/v2/components/CategoryTag.js.map +1 -1
- package/dist/v2/components/Checkbox.js +39 -45
- package/dist/v2/components/Checkbox.js.map +1 -1
- package/dist/v2/components/Chip.js +29 -42
- package/dist/v2/components/Chip.js.map +1 -1
- package/dist/v2/components/Combobox.js +122 -144
- package/dist/v2/components/Combobox.js.map +1 -1
- package/dist/v2/components/CommandPalette.js +138 -225
- package/dist/v2/components/CommandPalette.js.map +1 -1
- package/dist/v2/components/ConfirmDialog.js +46 -56
- package/dist/v2/components/ConfirmDialog.js.map +1 -1
- package/dist/v2/components/DatePicker.js +81 -86
- package/dist/v2/components/DatePicker.js.map +1 -1
- package/dist/v2/components/DateRangePicker.js +77 -87
- package/dist/v2/components/DateRangePicker.js.map +1 -1
- package/dist/v2/components/DateTimePicker.js +84 -91
- package/dist/v2/components/DateTimePicker.js.map +1 -1
- package/dist/v2/components/Drawer.d.ts.map +1 -1
- package/dist/v2/components/Drawer.js +93 -88
- package/dist/v2/components/Drawer.js.map +1 -1
- package/dist/v2/components/Dropzone.js +150 -196
- package/dist/v2/components/Dropzone.js.map +1 -1
- package/dist/v2/components/EmptyState.js +18 -20
- package/dist/v2/components/EmptyState.js.map +1 -1
- package/dist/v2/components/FavoriteToggle.js +28 -39
- package/dist/v2/components/FavoriteToggle.js.map +1 -1
- package/dist/v2/components/Field.d.ts +62 -4
- package/dist/v2/components/Field.d.ts.map +1 -1
- package/dist/v2/components/Field.js +169 -70
- package/dist/v2/components/Field.js.map +1 -1
- package/dist/v2/components/FieldError.js +18 -21
- package/dist/v2/components/FieldError.js.map +1 -1
- package/dist/v2/components/FieldHelp.js +40 -60
- package/dist/v2/components/FieldHelp.js.map +1 -1
- package/dist/v2/components/FileCard.js +27 -31
- package/dist/v2/components/FileCard.js.map +1 -1
- package/dist/v2/components/FilterTab.js +30 -38
- package/dist/v2/components/FilterTab.js.map +1 -1
- package/dist/v2/components/ForbiddenPage.d.ts +25 -1
- package/dist/v2/components/ForbiddenPage.d.ts.map +1 -1
- package/dist/v2/components/ForbiddenPage.js +37 -17
- package/dist/v2/components/ForbiddenPage.js.map +1 -1
- package/dist/v2/components/FormGrid.js +53 -59
- package/dist/v2/components/FormGrid.js.map +1 -1
- package/dist/v2/components/FormikDisplay.d.ts +50 -1
- package/dist/v2/components/FormikDisplay.d.ts.map +1 -1
- package/dist/v2/components/FormikDisplay.js +108 -33
- package/dist/v2/components/FormikDisplay.js.map +1 -1
- package/dist/v2/components/Input.d.ts +40 -0
- package/dist/v2/components/Input.d.ts.map +1 -1
- package/dist/v2/components/Input.js +81 -41
- package/dist/v2/components/Input.js.map +1 -1
- package/dist/v2/components/KPICard.js +57 -67
- package/dist/v2/components/KPICard.js.map +1 -1
- package/dist/v2/components/KPIStrip.js +16 -22
- package/dist/v2/components/KPIStrip.js.map +1 -1
- package/dist/v2/components/KV.js +25 -31
- package/dist/v2/components/KV.js.map +1 -1
- package/dist/v2/components/KVGrid.js +19 -26
- package/dist/v2/components/KVGrid.js.map +1 -1
- package/dist/v2/components/Layout.js +91 -120
- package/dist/v2/components/Layout.js.map +1 -1
- package/dist/v2/components/MobileRowCard.js +79 -91
- package/dist/v2/components/MobileRowCard.js.map +1 -1
- package/dist/v2/components/Modal.js +61 -69
- package/dist/v2/components/Modal.js.map +1 -1
- package/dist/v2/components/NetworkErrorPage.d.ts +19 -1
- package/dist/v2/components/NetworkErrorPage.d.ts.map +1 -1
- package/dist/v2/components/NetworkErrorPage.js +38 -21
- package/dist/v2/components/NetworkErrorPage.js.map +1 -1
- package/dist/v2/components/NotFoundPage.d.ts +17 -1
- package/dist/v2/components/NotFoundPage.d.ts.map +1 -1
- package/dist/v2/components/NotFoundPage.js +37 -18
- package/dist/v2/components/NotFoundPage.js.map +1 -1
- package/dist/v2/components/NumberInput.js +88 -118
- package/dist/v2/components/NumberInput.js.map +1 -1
- package/dist/v2/components/OverflowMenu.js +38 -56
- package/dist/v2/components/OverflowMenu.js.map +1 -1
- package/dist/v2/components/PdfViewer.js +34 -45
- package/dist/v2/components/PdfViewer.js.map +1 -1
- package/dist/v2/components/ProgressBar.js +42 -49
- package/dist/v2/components/ProgressBar.js.map +1 -1
- package/dist/v2/components/Radio.js +59 -67
- package/dist/v2/components/Radio.js.map +1 -1
- package/dist/v2/components/SectionErrorBoundary.js +90 -135
- package/dist/v2/components/SectionErrorBoundary.js.map +1 -1
- package/dist/v2/components/SectionHeader.js +34 -41
- package/dist/v2/components/SectionHeader.js.map +1 -1
- package/dist/v2/components/Segmented.js +69 -93
- package/dist/v2/components/Segmented.js.map +1 -1
- package/dist/v2/components/Select.d.ts +26 -2
- package/dist/v2/components/Select.d.ts.map +1 -1
- package/dist/v2/components/Select.js +120 -155
- package/dist/v2/components/Select.js.map +1 -1
- package/dist/v2/components/ServerErrorPage.d.ts +27 -1
- package/dist/v2/components/ServerErrorPage.d.ts.map +1 -1
- package/dist/v2/components/ServerErrorPage.js +37 -20
- package/dist/v2/components/ServerErrorPage.js.map +1 -1
- package/dist/v2/components/Skeleton.js +86 -100
- package/dist/v2/components/Skeleton.js.map +1 -1
- package/dist/v2/components/SkipLink.js +9 -12
- package/dist/v2/components/SkipLink.js.map +1 -1
- package/dist/v2/components/Spinner.js +16 -25
- package/dist/v2/components/Spinner.js.map +1 -1
- package/dist/v2/components/Status.js +18 -29
- package/dist/v2/components/Status.js.map +1 -1
- package/dist/v2/components/Stepper.js +80 -82
- package/dist/v2/components/Stepper.js.map +1 -1
- package/dist/v2/components/Surface.js +34 -49
- package/dist/v2/components/Surface.js.map +1 -1
- package/dist/v2/components/Switch.js +29 -37
- package/dist/v2/components/Switch.js.map +1 -1
- package/dist/v2/components/TabPanel.d.ts +17 -0
- package/dist/v2/components/TabPanel.d.ts.map +1 -0
- package/dist/v2/components/TabPanel.js +90 -0
- package/dist/v2/components/TabPanel.js.map +1 -0
- package/dist/v2/components/Tabs.d.ts +25 -0
- package/dist/v2/components/Tabs.d.ts.map +1 -1
- package/dist/v2/components/Tabs.js +53 -29
- package/dist/v2/components/Tabs.js.map +1 -1
- package/dist/v2/components/TelInput.js +80 -115
- package/dist/v2/components/TelInput.js.map +1 -1
- package/dist/v2/components/Textarea.js +26 -35
- package/dist/v2/components/Textarea.js.map +1 -1
- package/dist/v2/components/TimePicker.js +62 -74
- package/dist/v2/components/TimePicker.js.map +1 -1
- package/dist/v2/components/Toast.js +119 -174
- package/dist/v2/components/Toast.js.map +1 -1
- package/dist/v2/components/Tooltip.js +23 -38
- package/dist/v2/components/Tooltip.js.map +1 -1
- package/dist/v2/components/_ErrorPageBody.js +15 -16
- package/dist/v2/components/_ErrorPageBody.js.map +1 -1
- package/dist/v2/components/_pickerShared.js +5 -5
- package/dist/v2/components/_pickerShared.js.map +1 -1
- package/dist/v2/components/index.d.ts +40 -1
- package/dist/v2/components/index.d.ts.map +1 -1
- package/dist/v2/components/index.js +153 -136
- package/dist/v2/components/index.js.map +1 -1
- package/dist/v2/hooks/index.d.ts +65 -0
- package/dist/v2/hooks/index.d.ts.map +1 -1
- package/dist/v2/hooks/index.js +63 -24
- package/dist/v2/hooks/index.js.map +1 -1
- package/dist/v2/hooks/useAppliedFilters.d.ts +102 -0
- package/dist/v2/hooks/useAppliedFilters.d.ts.map +1 -0
- package/dist/v2/hooks/useAppliedFilters.js +117 -0
- package/dist/v2/hooks/useAppliedFilters.js.map +1 -0
- package/dist/v2/hooks/useDebouncedCallback.d.ts +64 -0
- package/dist/v2/hooks/useDebouncedCallback.d.ts.map +1 -0
- package/dist/v2/hooks/useDebouncedCallback.js +87 -0
- package/dist/v2/hooks/useDebouncedCallback.js.map +1 -0
- package/dist/v2/hooks/useDelayedFlag.js +6 -20
- package/dist/v2/hooks/useDelayedFlag.js.map +1 -1
- package/dist/v2/hooks/useDensity.d.ts.map +1 -1
- package/dist/v2/hooks/useDensity.js +14 -18
- package/dist/v2/hooks/useDensity.js.map +1 -1
- package/dist/v2/hooks/useFocusFirstError.js +26 -34
- package/dist/v2/hooks/useFocusFirstError.js.map +1 -1
- package/dist/v2/hooks/useFocusOnRouteChange.d.ts +65 -0
- package/dist/v2/hooks/useFocusOnRouteChange.d.ts.map +1 -0
- package/dist/v2/hooks/useFocusOnRouteChange.js +88 -0
- package/dist/v2/hooks/useFocusOnRouteChange.js.map +1 -0
- package/dist/v2/hooks/useFocusTrap.js +20 -24
- package/dist/v2/hooks/useFocusTrap.js.map +1 -1
- package/dist/v2/hooks/useFormAutoSave.d.ts +4 -4
- package/dist/v2/hooks/useFormAutoSave.d.ts.map +1 -1
- package/dist/v2/hooks/useFormAutoSave.js +39 -54
- package/dist/v2/hooks/useFormAutoSave.js.map +1 -1
- package/dist/v2/hooks/useFormCompletionProgress.d.ts +1 -1
- package/dist/v2/hooks/useFormCompletionProgress.d.ts.map +1 -1
- package/dist/v2/hooks/useFormCompletionProgress.js +33 -52
- package/dist/v2/hooks/useFormCompletionProgress.js.map +1 -1
- package/dist/v2/hooks/useKeyboardShortcuts.d.ts +25 -0
- package/dist/v2/hooks/useKeyboardShortcuts.d.ts.map +1 -0
- package/dist/v2/hooks/useKeyboardShortcuts.js +132 -0
- package/dist/v2/hooks/useKeyboardShortcuts.js.map +1 -0
- package/dist/v2/hooks/usePrefersReducedMotion.d.ts +56 -0
- package/dist/v2/hooks/usePrefersReducedMotion.d.ts.map +1 -0
- package/dist/v2/hooks/usePrefersReducedMotion.js +105 -0
- package/dist/v2/hooks/usePrefersReducedMotion.js.map +1 -0
- package/dist/v2/hooks/useResolvedDensity.js +5 -13
- package/dist/v2/hooks/useResolvedDensity.js.map +1 -1
- package/dist/v2/hooks/useSortedRows.js +4 -6
- package/dist/v2/hooks/useSortedRows.js.map +1 -1
- package/dist/v2/hooks/useTabLoading.js +7 -22
- package/dist/v2/hooks/useTabLoading.js.map +1 -1
- package/dist/v2/index.js +143 -145
- package/dist/v2/index.js.map +1 -1
- package/dist/v2/modalContext.js +2 -2
- package/dist/v2/modalContext.js.map +1 -1
- package/dist/v2/models/favorite.d.ts +8 -9
- package/dist/v2/models/favorite.d.ts.map +1 -1
- package/dist/v2/models/favorite.js.map +1 -1
- package/dist/v2/models/index.js +4 -4
- package/dist/v2/models/index.js.map +1 -1
- package/dist/v2/models/personalization.d.ts +44 -48
- package/dist/v2/models/personalization.d.ts.map +1 -1
- package/dist/v2/models/personalization.js.map +1 -1
- package/dist/v2/models/referentiel.d.ts +32 -50
- package/dist/v2/models/referentiel.d.ts.map +1 -1
- package/dist/v2/models/referentiel.js.map +1 -1
- package/dist/v2/models/savedFilter.d.ts +8 -17
- package/dist/v2/models/savedFilter.d.ts.map +1 -1
- package/dist/v2/models/savedFilter.js.map +1 -1
- package/dist/v2/patterns/ActionBar.js +152 -187
- package/dist/v2/patterns/ActionBar.js.map +1 -1
- package/dist/v2/patterns/AppMain.d.ts +109 -0
- package/dist/v2/patterns/AppMain.d.ts.map +1 -0
- package/dist/v2/patterns/AppMain.js +115 -0
- package/dist/v2/patterns/AppMain.js.map +1 -0
- package/dist/v2/patterns/BulkActionBar.js +40 -42
- package/dist/v2/patterns/BulkActionBar.js.map +1 -1
- package/dist/v2/patterns/ChartFigure.d.ts +124 -0
- package/dist/v2/patterns/ChartFigure.d.ts.map +1 -0
- package/dist/v2/patterns/ChartFigure.js +159 -0
- package/dist/v2/patterns/ChartFigure.js.map +1 -0
- package/dist/v2/patterns/CollapsibleDataGrid.js +138 -174
- package/dist/v2/patterns/CollapsibleDataGrid.js.map +1 -1
- package/dist/v2/patterns/ColumnsToggle.js +60 -94
- package/dist/v2/patterns/ColumnsToggle.js.map +1 -1
- package/dist/v2/patterns/DataGrid.d.ts.map +1 -1
- package/dist/v2/patterns/DataGrid.js +262 -297
- package/dist/v2/patterns/DataGrid.js.map +1 -1
- package/dist/v2/patterns/DataGridSettingsMenu.d.ts +12 -0
- package/dist/v2/patterns/DataGridSettingsMenu.d.ts.map +1 -1
- package/dist/v2/patterns/DataGridSettingsMenu.js +104 -121
- package/dist/v2/patterns/DataGridSettingsMenu.js.map +1 -1
- package/dist/v2/patterns/DataGridToolbar.js +103 -106
- package/dist/v2/patterns/DataGridToolbar.js.map +1 -1
- package/dist/v2/patterns/DataGridVirtualized.js +179 -217
- package/dist/v2/patterns/DataGridVirtualized.js.map +1 -1
- package/dist/v2/patterns/DeleteResourceConfirmDialog.js +32 -35
- package/dist/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
- package/dist/v2/patterns/DetailSplit.d.ts +87 -0
- package/dist/v2/patterns/DetailSplit.d.ts.map +1 -0
- package/dist/v2/patterns/DetailSplit.js +116 -0
- package/dist/v2/patterns/DetailSplit.js.map +1 -0
- package/dist/v2/patterns/FavoriteColumn.js +22 -23
- package/dist/v2/patterns/FavoriteColumn.js.map +1 -1
- package/dist/v2/patterns/FavoritesFilter.js +36 -44
- package/dist/v2/patterns/FavoritesFilter.js.map +1 -1
- package/dist/v2/patterns/FilterTabBar.d.ts +28 -0
- package/dist/v2/patterns/FilterTabBar.d.ts.map +1 -0
- package/dist/v2/patterns/FilterTabBar.js +120 -0
- package/dist/v2/patterns/FilterTabBar.js.map +1 -0
- package/dist/v2/patterns/FormErrorSummary.js +20 -23
- package/dist/v2/patterns/FormErrorSummary.js.map +1 -1
- package/dist/v2/patterns/FormPageShell.js +53 -50
- package/dist/v2/patterns/FormPageShell.js.map +1 -1
- package/dist/v2/patterns/FormSection.d.ts +8 -3
- package/dist/v2/patterns/FormSection.d.ts.map +1 -1
- package/dist/v2/patterns/FormSection.js +44 -51
- package/dist/v2/patterns/FormSection.js.map +1 -1
- package/dist/v2/patterns/FormikCheckbox.js +36 -45
- package/dist/v2/patterns/FormikCheckbox.js.map +1 -1
- package/dist/v2/patterns/FormikCheckboxGroup.d.ts +17 -1
- package/dist/v2/patterns/FormikCheckboxGroup.d.ts.map +1 -1
- package/dist/v2/patterns/FormikCheckboxGroup.js +62 -65
- package/dist/v2/patterns/FormikCheckboxGroup.js.map +1 -1
- package/dist/v2/patterns/FormikCombobox.js +55 -72
- package/dist/v2/patterns/FormikCombobox.js.map +1 -1
- package/dist/v2/patterns/FormikDatePicker.js +50 -64
- package/dist/v2/patterns/FormikDatePicker.js.map +1 -1
- package/dist/v2/patterns/FormikDateTimePicker.js +50 -64
- package/dist/v2/patterns/FormikDateTimePicker.js.map +1 -1
- package/dist/v2/patterns/FormikErrorFocus.js +25 -26
- package/dist/v2/patterns/FormikErrorFocus.js.map +1 -1
- package/dist/v2/patterns/FormikErrorSummary.d.ts +74 -0
- package/dist/v2/patterns/FormikErrorSummary.d.ts.map +1 -0
- package/dist/v2/patterns/FormikErrorSummary.js +97 -0
- package/dist/v2/patterns/FormikErrorSummary.js.map +1 -0
- package/dist/v2/patterns/FormikFile.d.ts +14 -1
- package/dist/v2/patterns/FormikFile.d.ts.map +1 -1
- package/dist/v2/patterns/FormikFile.js +99 -83
- package/dist/v2/patterns/FormikFile.js.map +1 -1
- package/dist/v2/patterns/FormikInput.js +45 -58
- package/dist/v2/patterns/FormikInput.js.map +1 -1
- package/dist/v2/patterns/FormikRadioGroup.js +45 -56
- package/dist/v2/patterns/FormikRadioGroup.js.map +1 -1
- package/dist/v2/patterns/FormikReferentielField.d.ts +12 -1
- package/dist/v2/patterns/FormikReferentielField.d.ts.map +1 -1
- package/dist/v2/patterns/FormikReferentielField.js +54 -64
- package/dist/v2/patterns/FormikReferentielField.js.map +1 -1
- package/dist/v2/patterns/FormikSelect.js +70 -92
- package/dist/v2/patterns/FormikSelect.js.map +1 -1
- package/dist/v2/patterns/FormikTextarea.js +35 -51
- package/dist/v2/patterns/FormikTextarea.js.map +1 -1
- package/dist/v2/patterns/KeyboardShortcutsHelp.js +60 -80
- package/dist/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
- package/dist/v2/patterns/NetworkErrorBanner.js +13 -16
- package/dist/v2/patterns/NetworkErrorBanner.js.map +1 -1
- package/dist/v2/patterns/PageContent.js +17 -20
- package/dist/v2/patterns/PageContent.js.map +1 -1
- package/dist/v2/patterns/PreviewDrawer.d.ts +49 -0
- package/dist/v2/patterns/PreviewDrawer.d.ts.map +1 -0
- package/dist/v2/patterns/PreviewDrawer.js +159 -0
- package/dist/v2/patterns/PreviewDrawer.js.map +1 -0
- package/dist/v2/patterns/ReferentielField.d.ts +86 -2
- package/dist/v2/patterns/ReferentielField.d.ts.map +1 -1
- package/dist/v2/patterns/ReferentielField.js +347 -327
- package/dist/v2/patterns/ReferentielField.js.map +1 -1
- package/dist/v2/patterns/RowFavoriteToggle.d.ts +6 -0
- package/dist/v2/patterns/RowFavoriteToggle.d.ts.map +1 -1
- package/dist/v2/patterns/RowFavoriteToggle.js +38 -30
- package/dist/v2/patterns/RowFavoriteToggle.js.map +1 -1
- package/dist/v2/patterns/SaveFilterDialog.js +50 -77
- package/dist/v2/patterns/SaveFilterDialog.js.map +1 -1
- package/dist/v2/patterns/SavedFiltersMenu.js +89 -107
- package/dist/v2/patterns/SavedFiltersMenu.js.map +1 -1
- package/dist/v2/patterns/SkeletonPageShell.js +122 -143
- package/dist/v2/patterns/SkeletonPageShell.js.map +1 -1
- package/dist/v2/patterns/SortableHeader.js +35 -57
- package/dist/v2/patterns/SortableHeader.js.map +1 -1
- package/dist/v2/patterns/Tour.js +121 -142
- package/dist/v2/patterns/Tour.js.map +1 -1
- package/dist/v2/patterns/_dataGridShared.d.ts.map +1 -1
- package/dist/v2/patterns/_dataGridShared.js +131 -147
- package/dist/v2/patterns/_dataGridShared.js.map +1 -1
- package/dist/v2/patterns/_pickerSerialisation.js +9 -10
- package/dist/v2/patterns/_pickerSerialisation.js.map +1 -1
- package/dist/v2/patterns/_sort.js +17 -33
- package/dist/v2/patterns/_sort.js.map +1 -1
- package/dist/v2/patterns/_useColumnReorder.js +124 -163
- package/dist/v2/patterns/_useColumnReorder.js.map +1 -1
- package/dist/v2/patterns/_useColumnResize.js +80 -99
- package/dist/v2/patterns/_useColumnResize.js.map +1 -1
- package/dist/v2/patterns/filterCriteria.d.ts +78 -0
- package/dist/v2/patterns/filterCriteria.d.ts.map +1 -0
- package/dist/v2/patterns/filterCriteria.js +110 -0
- package/dist/v2/patterns/filterCriteria.js.map +1 -0
- package/dist/v2/patterns/index.d.ts +160 -0
- package/dist/v2/patterns/index.d.ts.map +1 -1
- package/dist/v2/patterns/index.js +157 -79
- package/dist/v2/patterns/index.js.map +1 -1
- package/dist/v2/patterns/rowActions.d.ts +150 -0
- package/dist/v2/patterns/rowActions.d.ts.map +1 -0
- package/dist/v2/patterns/rowActions.js +232 -0
- package/dist/v2/patterns/rowActions.js.map +1 -0
- package/dist/v2/personalization/PersonalizationProvider.d.ts.map +1 -1
- package/dist/v2/personalization/PersonalizationProvider.js +57 -53
- package/dist/v2/personalization/PersonalizationProvider.js.map +1 -1
- package/dist/v2/personalization/adapters/_storageKey.js +5 -5
- package/dist/v2/personalization/adapters/_storageKey.js.map +1 -1
- package/dist/v2/personalization/adapters/createLocalStorageAdapter.js +25 -24
- package/dist/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
- package/dist/v2/personalization/adapters/createMemoryAdapter.js +14 -14
- package/dist/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
- package/dist/v2/personalization/adapters/index.js +5 -5
- package/dist/v2/personalization/adapters/index.js.map +1 -1
- package/dist/v2/personalization/capabilities/favorites.js +39 -62
- package/dist/v2/personalization/capabilities/favorites.js.map +1 -1
- package/dist/v2/personalization/capabilities/favoritesView.js +25 -37
- package/dist/v2/personalization/capabilities/favoritesView.js.map +1 -1
- package/dist/v2/personalization/capabilities/gridPreferences.js +31 -36
- package/dist/v2/personalization/capabilities/gridPreferences.js.map +1 -1
- package/dist/v2/personalization/capabilities/index.js +12 -12
- package/dist/v2/personalization/capabilities/reviveSavedCriteria.d.ts +88 -0
- package/dist/v2/personalization/capabilities/reviveSavedCriteria.d.ts.map +1 -0
- package/dist/v2/personalization/capabilities/reviveSavedCriteria.js +126 -0
- package/dist/v2/personalization/capabilities/reviveSavedCriteria.js.map +1 -0
- package/dist/v2/personalization/capabilities/savedFilters.js +93 -100
- package/dist/v2/personalization/capabilities/savedFilters.js.map +1 -1
- package/dist/v2/personalization/createPersonalizationStore.d.ts.map +1 -1
- package/dist/v2/personalization/createPersonalizationStore.js +81 -182
- package/dist/v2/personalization/createPersonalizationStore.js.map +1 -1
- package/dist/v2/personalization/index.d.ts +16 -0
- package/dist/v2/personalization/index.d.ts.map +1 -1
- package/dist/v2/personalization/index.js +30 -23
- package/dist/v2/personalization/index.js.map +1 -1
- package/dist/v2/personalization/personalizationContext.js +10 -12
- package/dist/v2/personalization/personalizationContext.js.map +1 -1
- package/dist/v2/personalization/schema.js +8 -9
- package/dist/v2/personalization/schema.js.map +1 -1
- package/dist/v2/referentiel/ReferentielProvider.js +31 -45
- package/dist/v2/referentiel/ReferentielProvider.js.map +1 -1
- package/dist/v2/referentiel/index.js +11 -13
- package/dist/v2/referentiel/index.js.map +1 -1
- package/dist/v2/referentiel/types.d.ts +105 -0
- package/dist/v2/referentiel/types.d.ts.map +1 -0
- package/dist/v2/referentiel/types.js +6 -0
- package/dist/v2/referentiel/types.js.map +1 -0
- package/dist/v2/referentiel/useReferentielClient.js +13 -16
- package/dist/v2/referentiel/useReferentielClient.js.map +1 -1
- package/dist/v2/referentiel/useReferentielOptions.d.ts +7 -17
- package/dist/v2/referentiel/useReferentielOptions.d.ts.map +1 -1
- package/dist/v2/referentiel/useReferentielOptions.js +63 -120
- package/dist/v2/referentiel/useReferentielOptions.js.map +1 -1
- package/dist/v2/referentiel/useReferentielSearch.d.ts +7 -48
- package/dist/v2/referentiel/useReferentielSearch.d.ts.map +1 -1
- package/dist/v2/referentiel/useReferentielSearch.js +40 -95
- package/dist/v2/referentiel/useReferentielSearch.js.map +1 -1
- package/dist/v2/theme/_brand.js +12 -26
- package/dist/v2/theme/_brand.js.map +1 -1
- package/dist/v2/theme/_brandSecondary.js +12 -26
- package/dist/v2/theme/_brandSecondary.js.map +1 -1
- package/dist/v2/theme/createPortnetTheme.js +41 -49
- package/dist/v2/theme/createPortnetTheme.js.map +1 -1
- package/dist/v2/theme/cssVariables.d.ts +3 -3
- package/dist/v2/theme/cssVariables.d.ts.map +1 -1
- package/dist/v2/theme/cssVariables.js +65 -70
- package/dist/v2/theme/cssVariables.js.map +1 -1
- package/dist/v2/theme/index.js +10 -10
- package/dist/v2/theme/index.js.map +1 -1
- package/dist/v2/tokens/breakpoints.js +16 -16
- package/dist/v2/tokens/breakpoints.js.map +1 -1
- package/dist/v2/tokens/chart.d.ts +103 -0
- package/dist/v2/tokens/chart.d.ts.map +1 -0
- package/dist/v2/tokens/chart.js +270 -0
- package/dist/v2/tokens/chart.js.map +1 -0
- package/dist/v2/tokens/colors.js +24 -24
- package/dist/v2/tokens/colors.js.map +1 -1
- package/dist/v2/tokens/density.d.ts +104 -0
- package/dist/v2/tokens/density.d.ts.map +1 -1
- package/dist/v2/tokens/density.js +67 -12
- package/dist/v2/tokens/density.js.map +1 -1
- package/dist/v2/tokens/index.d.ts +50 -1
- package/dist/v2/tokens/index.d.ts.map +1 -1
- package/dist/v2/tokens/index.js +116 -68
- package/dist/v2/tokens/index.js.map +1 -1
- package/dist/v2/tokens/motion.js +16 -22
- package/dist/v2/tokens/motion.js.map +1 -1
- package/dist/v2/tokens/radius.js +3 -3
- package/dist/v2/tokens/radius.js.map +1 -1
- package/dist/v2/tokens/shadows.js +8 -8
- package/dist/v2/tokens/shadows.js.map +1 -1
- package/dist/v2/tokens/spacing.js +4 -4
- package/dist/v2/tokens/spacing.js.map +1 -1
- package/dist/v2/tokens/state.js +3 -3
- package/dist/v2/tokens/state.js.map +1 -1
- package/dist/v2/tokens/statusPalette.js +21 -23
- package/dist/v2/tokens/statusPalette.js.map +1 -1
- package/dist/v2/tokens/tokens.json +6 -1
- package/dist/v2/tokens/typography.js +15 -15
- package/dist/v2/tokens/typography.js.map +1 -1
- package/dist/v2/tokens/zIndex.js +3 -3
- package/dist/v2/tokens/zIndex.js.map +1 -1
- package/dist/v2/types/datagrid.d.ts +9 -1
- package/dist/v2/types/datagrid.d.ts.map +1 -1
- package/dist/v2/types/datagrid.js.map +1 -1
- package/dist/v2/types/index.js +2 -2
- package/dist/v2/types/index.js.map +1 -1
- package/dist/v2/utils/apiError.js +16 -37
- package/dist/v2/utils/apiError.js.map +1 -1
- package/dist/v2/utils/contrast.js +31 -32
- package/dist/v2/utils/contrast.js.map +1 -1
- package/dist/v2/utils/cx.js +7 -27
- package/dist/v2/utils/cx.js.map +1 -1
- package/dist/v2/utils/fileDownload.js +25 -28
- package/dist/v2/utils/fileDownload.js.map +1 -1
- package/dist/v2/utils/fileValidation.d.ts +116 -0
- package/dist/v2/utils/fileValidation.d.ts.map +1 -0
- package/dist/v2/utils/fileValidation.js +220 -0
- package/dist/v2/utils/fileValidation.js.map +1 -0
- package/dist/v2/utils/fmtDate.d.ts +103 -0
- package/dist/v2/utils/fmtDate.d.ts.map +1 -0
- package/dist/v2/utils/fmtDate.js +119 -0
- package/dist/v2/utils/fmtDate.js.map +1 -0
- package/dist/v2/utils/fmtMoney.d.ts +3 -3
- package/dist/v2/utils/fmtMoney.d.ts.map +1 -1
- package/dist/v2/utils/fmtMoney.js +9 -11
- package/dist/v2/utils/fmtMoney.js.map +1 -1
- package/dist/v2/utils/formikErrors.d.ts +67 -0
- package/dist/v2/utils/formikErrors.d.ts.map +1 -0
- package/dist/v2/utils/formikErrors.js +85 -0
- package/dist/v2/utils/formikErrors.js.map +1 -0
- package/dist/v2/utils/index.d.ts +5 -0
- package/dist/v2/utils/index.d.ts.map +1 -1
- package/dist/v2/utils/index.js +67 -18
- package/dist/v2/utils/index.js.map +1 -1
- package/dist/v2/utils/mergeLabels.js +9 -14
- package/dist/v2/utils/mergeLabels.js.map +1 -1
- package/dist/v2/utils/networkStatus.js +14 -14
- package/dist/v2/utils/networkStatus.js.map +1 -1
- package/package.json +26 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReferentielField.js","names":["React","_interopRequireWildcard","require","_Box","_interopRequireDefault","_IconButton","_Search","_Close","_Field","_Input","_Combobox","_DatePicker","_Button","_Banner","_Modal","_DataGrid","_EmptyState","_mergeLabels","_jsxRuntime","obj","__esModule","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_regeneratorRuntime","exports","Op","hasOwn","value","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","enumerable","configurable","writable","err","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","create","context","Context","makeInvokeMethod","tryCatch","fn","arg","type","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","forEach","method","_invoke","AsyncIterator","PromiseImpl","invoke","resolve","reject","record","result","__await","then","unwrapped","error","previousPromise","callInvokeWithMethodAndArg","state","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","done","methodName","undefined","TypeError","info","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","length","i","displayName","isGeneratorFunction","genFun","ctor","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","iter","keys","val","object","reverse","pop","skipTempReset","prev","charAt","slice","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","_catch","thrown","delegateYield","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","args","arguments","apply","_slicedToArray","arr","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","o","minLen","_arrayLikeToArray","n","toString","Array","from","test","len","arr2","_i","_s","_e","_x","_r","_arr","_n","_d","isArray","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","filter","sym","_objectSpread","target","source","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","_toPrimitive","String","input","hint","prim","toPrimitive","res","Number","DEFAULT_LABELS","freeze","searchAria","clearAria","modalCancel","modalConfirm","searchSubmit","resultsHeading","concat","initialEmptyTitle","initialEmptyHint","noResultsTitle","noResultsHint","errorTitle","errorRetry","loadingHint","placeholder","DEFAULT_PAGE_SIZE","DEFAULT_PAGE_SIZES","defaultGetRowId","row","id","renderCriterionField","c","onChange","_c$options","kind","jsx","_target$value","_target","extracted","options","loading","Boolean","getOptionLabel","disableFuture","e","ReferentielField","_ref","getDisplayValue","_ref$disabled","disabled","_ref$readOnly","readOnly","_ref$clearable","clearable","_ref$title","title","subtitle","_ref$size","size","modalProps","search","_ref$criteria","criteria","initialCriteria","_ref$columns","columns","_ref$pageSize","pageSize","pageSizeProp","_ref$pageSizes","pageSizes","_ref$getRowId","getRowId","_ref$confirmOnSelecti","confirmOnSelection","sort","onSortChange","labels","locale","ariaInvalid","ariaRequired","ariaDescribedBy","L","useMemo","mergeLabels","_React$useState","useState","_React$useState2","open","setOpen","triggerRef","useRef","openModal","useCallback","closeModal","setTimeout","el","current","focus","preventScroll","seedCriteria","seed","_React$useState3","_React$useState4","draft","setDraft","useEffect","_React$useState5","_React$useState6","page","setPage","_React$useState7","_React$useState8","setPageSize","_React$useState9","_React$useState0","items","setItems","_React$useState1","_React$useState10","total","setTotal","_React$useState11","_React$useState12","setLoading","_React$useState13","_React$useState14","setError","_React$useState15","_React$useState16","hasSearched","setHasSearched","_React$useState17","_React$useState18","pendingSelection","setPendingSelection","requestSeq","runSearch","_callee","_overrides$criteria","_overrides$page","_overrides$pageSize","overrides","myReq","effective","nextTotal","_args","_callee$","_context","isFinite","t0","onSubmitCriteria","preventDefault","onPageChange","nextPage","onPageSizeChange","nextPageSize","handleRowClick","handleConfirmSelection","handleClear","stopPropagation","display","_getDisplayValue","_unused","v","description","label","code","pagination","initialEmpty","variant","filteredEmpty","errorState","action","onClick","children","message","showClear","triggerAria","trigger","ref","onKeyDown","inputProps","sx","cursor","endIcon","jsxs","alignItems","gap","edge","color","fontSize","criteriaRow","component","onSubmit","gridTemplateColumns","xs","sm","md","Math","min","marginBottom","map","d","justifyContent","liveResults","className","decoratedRows","pendingId","r","__pending","footer","Fragment","onClose","rows","onRowClick","emptyState","filteredEmptyState","filtered","rowFlashId","_default"],"sources":["../../../src/lib/v2/patterns/ReferentielField.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport SearchIcon from \"@mui/icons-material/Search\";\r\nimport ClearIcon from \"@mui/icons-material/Close\";\r\n\r\nimport Field from \"../components/Field\";\r\nimport Input from \"../components/Input\";\r\nimport Combobox from \"../components/Combobox\";\r\nimport type { ComboboxOption, ComboboxOptionValue, ComboboxValue } from \"../components/Combobox\";\r\nimport DatePicker from \"../components/DatePicker\";\r\nimport Button from \"../components/Button\";\r\nimport Banner from \"../components/Banner\";\r\nimport Modal from \"../components/Modal\";\r\nimport DataGrid from \"./DataGrid\";\r\nimport EmptyState from \"../components/EmptyState\";\r\nimport type { DataGridColumn } from \"../types/datagrid\";\r\nimport type { RowId, SortDescriptor } from \"../types/common\";\r\nimport { mergeLabels } from \"../utils/mergeLabels\";\r\n\r\n/**\r\n * ReferentielField — Portnet UI v2 (pattern)\r\n *\r\n * Charter §03 · Component \"Referentiel · Search-and-select\".\r\n *\r\n * Use this when:\r\n * - The selectable population is too large for <Combobox> to load.\r\n * - The host needs MULTI-CRITERIA search.\r\n * - The result rows benefit from a structured view.\r\n *\r\n * Criteria shape (B17 extension)\r\n * ------------------------------\r\n * Each criterion descriptor accepts:\r\n *\r\n * { name, label, placeholder, hint, kind, options, loading,\r\n * getOptionValue, getOptionLabel, disableFuture }\r\n *\r\n * - kind — discriminator: \"input\" (default) | \"combobox\" | \"date\"\r\n *\r\n * The B17 extension is purely additive: existing call sites with\r\n * `criteria=[{name, label}]` keep rendering plain Inputs because\r\n * `kind` defaults to \"input\".\r\n *\r\n * A11y trigger (audit Batch 5, finding B4-3):\r\n * The trigger Input acts as a combobox-like disclosure for a dialog\r\n * (the search Modal). aria-haspopup=\"dialog\" + aria-expanded MUST sit\r\n * on the FOCUSABLE element (the <input/>), so every aria-* on the\r\n * trigger is routed through `inputProps` → slotProps.input. This\r\n * includes the Field-injected aria-invalid / aria-required /\r\n * aria-describedby so the whole aria contract lives on one element.\r\n */\r\n\r\n/** Localisable strings; `resultsHeading` is a function for plural rules. */\r\nexport interface ReferentielFieldLabels {\r\n searchAria?: string | undefined;\r\n clearAria?: string | undefined;\r\n modalCancel?: React.ReactNode | undefined;\r\n modalConfirm?: React.ReactNode | undefined;\r\n searchSubmit?: React.ReactNode | undefined;\r\n resultsHeading?: ((n: number) => string) | undefined;\r\n initialEmptyTitle?: React.ReactNode | undefined;\r\n initialEmptyHint?: React.ReactNode | undefined;\r\n noResultsTitle?: React.ReactNode | undefined;\r\n noResultsHint?: React.ReactNode | undefined;\r\n errorTitle?: React.ReactNode | undefined;\r\n errorRetry?: React.ReactNode | undefined;\r\n loadingHint?: React.ReactNode | undefined;\r\n placeholder?: string | undefined;\r\n}\r\n\r\n/** One search criterion. combobox/date-only fields reuse the real\r\n * component prop types so they stay exactly aligned. */\r\nexport interface ReferentielCriterion {\r\n name: string;\r\n label: React.ReactNode;\r\n placeholder?: string | undefined;\r\n hint?: React.ReactNode | undefined;\r\n kind?: \"input\" | \"combobox\" | \"date\" | undefined;\r\n options?: React.ComponentProps<typeof Combobox>[\"options\"] | undefined;\r\n loading?: boolean | undefined;\r\n /**\r\n * Accepted for backward API compatibility with older criterion configs.\r\n * Combobox has no equivalent hook (it resolves value/label straight off\r\n * each option's own .value/.label), so this is currently NOT wired into\r\n * the \"combobox\" kind's render below — kept typed rather than removed so\r\n * any existing caller that sets it doesn't get a compile error.\r\n */\r\n getOptionValue?: ((option: ComboboxOption | ComboboxOptionValue) => ComboboxOptionValue) | undefined;\r\n getOptionLabel?: React.ComponentProps<typeof Combobox>[\"getOptionLabel\"] | undefined;\r\n disableFuture?: boolean | undefined;\r\n}\r\n\r\nexport interface ReferentielSearchParams {\r\n criteria: Record<string, unknown>;\r\n page: number;\r\n pageSize: number;\r\n sort: SortDescriptor[] | undefined;\r\n}\r\n\r\nexport interface ReferentielSearchResult<T> {\r\n items: T[];\r\n total?: number | undefined;\r\n}\r\n\r\nexport interface ReferentielFieldProps<T> {\r\n // Value contract\r\n value?: T | null | undefined;\r\n onChange?: ((value: T | null) => void) | undefined;\r\n getDisplayValue?: ((value: T) => string) | undefined;\r\n placeholder?: string | undefined;\r\n disabled?: boolean | undefined;\r\n readOnly?: boolean | undefined;\r\n clearable?: boolean | undefined;\r\n // Modal\r\n title?: React.ReactNode | undefined;\r\n subtitle?: React.ReactNode | undefined;\r\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\" | undefined;\r\n modalProps?: Partial<React.ComponentProps<typeof Modal>> | undefined;\r\n // Search contract\r\n search: (\r\n params: ReferentielSearchParams\r\n ) => ReferentielSearchResult<T> | Promise<ReferentielSearchResult<T>>;\r\n criteria?: ReferentielCriterion[] | undefined;\r\n initialCriteria?: Record<string, unknown> | undefined;\r\n columns: DataGridColumn<T>[];\r\n pageSize?: number | undefined;\r\n pageSizes?: number[] | undefined;\r\n getRowId?: ((row: T) => RowId) | undefined;\r\n // Selection UX\r\n confirmOnSelection?: boolean | undefined;\r\n // Sort (delegated to DataGrid)\r\n sort?: SortDescriptor[] | undefined;\r\n onSortChange?: React.Dispatch<React.SetStateAction<SortDescriptor[]>> | undefined;\r\n // Localisation\r\n labels?: ReferentielFieldLabels | undefined;\r\n locale?: string | undefined;\r\n // Forwarded down so Field can wire id / aria-* / name\r\n id?: string | undefined;\r\n name?: string | undefined;\r\n \"aria-invalid\"?: React.AriaAttributes[\"aria-invalid\"] | undefined;\r\n \"aria-required\"?: React.AriaAttributes[\"aria-required\"] | undefined;\r\n \"aria-describedby\"?: string | undefined;\r\n}\r\n\r\nconst DEFAULT_LABELS = Object.freeze({\r\n searchAria: \"Rechercher\",\r\n clearAria: \"Effacer la sélection\",\r\n modalCancel: \"Annuler\",\r\n modalConfirm: \"Sélectionner\",\r\n searchSubmit: \"Rechercher\",\r\n resultsHeading: (n: number) => `${n} résultat${n > 1 ? \"s\" : \"\"}`,\r\n initialEmptyTitle: \"Aucune recherche\",\r\n initialEmptyHint: \"Saisissez un critère puis lancez la recherche.\",\r\n noResultsTitle: \"Aucun résultat\",\r\n noResultsHint: \"Modifiez vos critères et relancez la recherche.\",\r\n errorTitle: \"Recherche impossible\",\r\n errorRetry: \"Réessayer\",\r\n loadingHint: \"Recherche en cours…\",\r\n placeholder: \"Sélectionner…\",\r\n});\r\n\r\nconst DEFAULT_PAGE_SIZE = 25;\r\nconst DEFAULT_PAGE_SIZES = [25, 50, 100];\r\n\r\n/* Default getRowId (`(r) => r.id`); `(unknown) => RowId` is assignable to\r\n * the declared `(row: T) => RowId` by parameter contravariance. */\r\nconst defaultGetRowId = (row: unknown): RowId => (row as { id: RowId }).id;\r\n\r\n/* B17 — render a single criterion based on its `kind` discriminator.\r\n * Falls back to Input for unknown kinds. The draft value is `unknown`\r\n * (criteria are heterogeneous); one assertion at each value seam. */\r\nfunction renderCriterionField(\r\n c: ReferentielCriterion,\r\n value: unknown,\r\n onChange: (next: unknown) => void\r\n): React.ReactElement {\r\n const kind = c.kind || \"input\";\r\n\r\n switch (kind) {\r\n case \"combobox\":\r\n return (\r\n <Combobox\r\n value={(value ?? \"\") as ComboboxValue}\r\n onChange={(next) => {\r\n // Combobox may emit either a raw value or an event-like object;\r\n // extract defensively in a way that is sound for any shape.\r\n const extracted =\r\n next && typeof next === \"object\" && \"target\" in next\r\n ? ((next as { target?: { value?: unknown } }).target?.value ??\r\n next)\r\n : next;\r\n onChange(extracted);\r\n }}\r\n options={c.options ?? []}\r\n loading={Boolean(c.loading)}\r\n {...(c.getOptionLabel !== undefined ? { getOptionLabel: c.getOptionLabel } : {})}\r\n {...(c.placeholder !== undefined ? { placeholder: c.placeholder } : {})}\r\n />\r\n );\r\n case \"date\":\r\n return (\r\n <DatePicker\r\n name={c.name}\r\n value={(value ?? null) as Date | null}\r\n onChange={(next) => onChange(next)}\r\n disableFuture={Boolean(c.disableFuture)}\r\n {...(c.placeholder !== undefined ? { placeholder: c.placeholder } : {})}\r\n />\r\n );\r\n case \"input\":\r\n default:\r\n return (\r\n <Input\r\n name={c.name}\r\n value={(value ?? \"\") as string}\r\n onChange={(e) => onChange(e.target.value)}\r\n placeholder={c.placeholder}\r\n />\r\n );\r\n }\r\n}\r\n\r\nfunction ReferentielField<T>({\r\n value,\r\n onChange,\r\n // Display / trigger\r\n getDisplayValue,\r\n placeholder,\r\n disabled = false,\r\n readOnly = false,\r\n clearable = true,\r\n // Modal content\r\n title = \"Rechercher\",\r\n subtitle,\r\n size = \"lg\",\r\n modalProps,\r\n // Search contract\r\n search,\r\n criteria = [],\r\n initialCriteria,\r\n columns = [],\r\n pageSize: pageSizeProp = DEFAULT_PAGE_SIZE,\r\n pageSizes = DEFAULT_PAGE_SIZES,\r\n getRowId = defaultGetRowId,\r\n // Selection UX\r\n confirmOnSelection = false,\r\n // Sort (delegated to DataGrid)\r\n sort,\r\n onSortChange,\r\n // Localisation\r\n labels,\r\n locale,\r\n // Forwarded down so Field can wire id / aria-* / name\r\n id,\r\n name,\r\n \"aria-invalid\": ariaInvalid,\r\n \"aria-required\": ariaRequired,\r\n \"aria-describedby\": ariaDescribedBy,\r\n}: ReferentielFieldProps<T>) {\r\n const L = React.useMemo(\r\n () => (mergeLabels(DEFAULT_LABELS, labels)),\r\n [labels]\r\n );\r\n\r\n /* ── Modal lifecycle ──────────────────────────────────────── */\r\n const [open, setOpen] = React.useState(false);\r\n const triggerRef = React.useRef<React.ElementRef<typeof Input>>(null);\r\n\r\n const openModal = React.useCallback(() => {\r\n if (disabled || readOnly) return;\r\n setOpen(true);\r\n }, [disabled, readOnly]);\r\n\r\n const closeModal = React.useCallback(() => {\r\n setOpen(false);\r\n setTimeout(() => {\r\n // triggerRef's element type resolves to `{}` via React.ElementRef<typeof\r\n // Input> (a TS inference gap, not a real absence of .focus at runtime —\r\n // Input forwards its ref to a real focusable element). Cast narrowly at\r\n // the point of use rather than widening the ref's declared type, so the\r\n // `ref={triggerRef}` binding on <Input> below is unaffected.\r\n const el = triggerRef.current as { focus?: (options?: FocusOptions) => void } | null;\r\n if (el && typeof el.focus === \"function\") {\r\n el.focus({ preventScroll: true });\r\n }\r\n }, 0);\r\n }, []);\r\n\r\n /* ── Criteria draft + search state ───────────────────────── */\r\n const seedCriteria = React.useMemo(() => {\r\n const seed: Record<string, unknown> = {};\r\n (criteria || []).forEach((c) => {\r\n seed[c.name] = (initialCriteria && initialCriteria[c.name]) || \"\";\r\n });\r\n return seed;\r\n }, [criteria, initialCriteria]);\r\n\r\n const [draft, setDraft] = React.useState<Record<string, unknown>>(seedCriteria);\r\n\r\n React.useEffect(() => {\r\n if (open) setDraft(seedCriteria);\r\n }, [open, seedCriteria]);\r\n\r\n const [page, setPage] = React.useState(1);\r\n const [pageSize, setPageSize] = React.useState(pageSizeProp);\r\n\r\n const [items, setItems] = React.useState<T[]>([]);\r\n const [total, setTotal] = React.useState(0);\r\n const [loading, setLoading] = React.useState(false);\r\n const [error, setError] = React.useState<Error | null>(null);\r\n const [hasSearched, setHasSearched] = React.useState(false);\r\n const [pendingSelection, setPendingSelection] = React.useState<T | null>(null);\r\n\r\n /* ── Search executor ─────────────────────────────────────── */\r\n const requestSeq = React.useRef(0);\r\n\r\n const runSearch = React.useCallback(\r\n async (\r\n overrides: {\r\n criteria?: Record<string, unknown>;\r\n page?: number;\r\n pageSize?: number;\r\n } = {}\r\n ) => {\r\n if (typeof search !== \"function\") return;\r\n const myReq = ++requestSeq.current;\r\n const effective: ReferentielSearchParams = {\r\n criteria: overrides.criteria ?? draft,\r\n page: overrides.page ?? 1,\r\n pageSize: overrides.pageSize ?? pageSize,\r\n sort,\r\n };\r\n setLoading(true);\r\n setError(null);\r\n setHasSearched(true);\r\n try {\r\n const result = await search(effective);\r\n if (myReq !== requestSeq.current) return;\r\n setItems(Array.isArray(result.items) ? result.items : []);\r\n const nextTotal =\r\n typeof result.total === \"number\" && Number.isFinite(result.total)\r\n ? result.total\r\n : result.items.length;\r\n setTotal(nextTotal);\r\n setPage(effective.page);\r\n setPageSize(effective.pageSize);\r\n } catch (e) {\r\n if (myReq !== requestSeq.current) return;\r\n setError(e instanceof Error ? e : new Error(\"search failed\"));\r\n setItems([]);\r\n setTotal(0);\r\n } finally {\r\n if (myReq === requestSeq.current) setLoading(false);\r\n }\r\n },\r\n [search, draft, pageSize, sort]\r\n );\r\n\r\n /* ── Form submission inside the modal ────────────────────── */\r\n const onSubmitCriteria = (e: React.FormEvent<HTMLFormElement>) => {\r\n e.preventDefault();\r\n setPendingSelection(null);\r\n runSearch({ criteria: draft, page: 1 });\r\n };\r\n\r\n const onPageChange = (nextPage: number) => {\r\n runSearch({ page: nextPage });\r\n };\r\n const onPageSizeChange = (nextPageSize: number) => {\r\n runSearch({ page: 1, pageSize: nextPageSize });\r\n };\r\n\r\n /* ── Selection ───────────────────────────────────────────── */\r\n const handleRowClick = (row: T) => {\r\n if (confirmOnSelection) {\r\n setPendingSelection(row);\r\n return;\r\n }\r\n onChange?.(row);\r\n closeModal();\r\n };\r\n\r\n const handleConfirmSelection = () => {\r\n if (!pendingSelection) return;\r\n onChange?.(pendingSelection);\r\n setPendingSelection(null);\r\n closeModal();\r\n };\r\n\r\n const handleClear = (e: React.MouseEvent<HTMLButtonElement>) => {\r\n e.stopPropagation();\r\n if (disabled || readOnly) return;\r\n onChange?.(null);\r\n };\r\n\r\n /* ── Trigger display ─────────────────────────────────────── */\r\n const display = React.useMemo<string>(() => {\r\n if (value == null || value === \"\") return \"\";\r\n if (typeof getDisplayValue === \"function\") {\r\n try {\r\n return getDisplayValue(value) ?? \"\";\r\n } catch {\r\n return \"\";\r\n }\r\n }\r\n if (typeof value === \"string\") return value;\r\n if (value && typeof value === \"object\") {\r\n const v = value as {\r\n description?: string;\r\n label?: string;\r\n name?: string;\r\n code?: string;\r\n };\r\n return v.description || v.label || v.name || v.code || \"\";\r\n }\r\n return String(value);\r\n }, [value, getDisplayValue]);\r\n\r\n /* ── DataGrid pagination contract ────────────────────────── */\r\n const pagination = React.useMemo(\r\n () => ({\r\n page,\r\n pageSize,\r\n total,\r\n pageSizes,\r\n onPageChange,\r\n onPageSizeChange,\r\n }),\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [page, pageSize, total, pageSizes]\r\n );\r\n\r\n /* ── Empty / error states for DataGrid ───────────────────── */\r\n const initialEmpty = (\r\n <EmptyState\r\n variant=\"initial\"\r\n title={L.initialEmptyTitle}\r\n description={L.initialEmptyHint}\r\n />\r\n );\r\n const filteredEmpty = (\r\n <EmptyState\r\n variant=\"filtered\"\r\n title={L.noResultsTitle}\r\n description={L.noResultsHint}\r\n />\r\n );\r\n const errorState = (\r\n <Banner\r\n variant=\"error\"\r\n title={L.errorTitle}\r\n action={{ label: L.errorRetry, onClick: () => runSearch({ page: 1 }) }}\r\n >\r\n {error?.message || String(error || \"\")}\r\n </Banner>\r\n );\r\n\r\n /* ── Render the trigger ──────────────────────────────────── */\r\n const showClear = clearable && !disabled && !readOnly && Boolean(display);\r\n\r\n // B4-3 fix — bundle every aria-* attribute of the trigger so v2.Input\r\n // routes them into slotProps.input → the native <input/>. Typed as\r\n // AriaAttributes so \"aria-haspopup\":\"dialog\" stays a valid literal.\r\n const triggerAria = React.useMemo<React.AriaAttributes>(\r\n () => ({\r\n \"aria-haspopup\": \"dialog\",\r\n \"aria-expanded\": open,\r\n ...(ariaInvalid != null ? { \"aria-invalid\": ariaInvalid } : {}),\r\n ...(ariaRequired != null ? { \"aria-required\": ariaRequired } : {}),\r\n ...(ariaDescribedBy ? { \"aria-describedby\": ariaDescribedBy } : {}),\r\n }),\r\n [open, ariaInvalid, ariaRequired, ariaDescribedBy]\r\n );\r\n\r\n const trigger = (\r\n <Input\r\n ref={triggerRef}\r\n id={id}\r\n name={name}\r\n value={display}\r\n placeholder={placeholder ?? L.placeholder}\r\n readOnly\r\n disabled={disabled}\r\n onClick={openModal}\r\n onKeyDown={(e) => {\r\n if (e.key === \"Enter\" || e.key === \" \") {\r\n e.preventDefault();\r\n openModal();\r\n }\r\n }}\r\n inputProps={triggerAria}\r\n sx={{\r\n cursor: disabled ? \"not-allowed\" : \"pointer\",\r\n \"& input\": { cursor: disabled ? \"not-allowed\" : \"pointer\" },\r\n }}\r\n endIcon={\r\n <Box\r\n sx={{ display: \"inline-flex\", alignItems: \"center\", gap: \"var(--s-1)\" }}\r\n >\r\n {showClear && (\r\n <IconButton\r\n type=\"button\"\r\n size=\"small\"\r\n onClick={handleClear}\r\n aria-label={L.clearAria}\r\n edge=\"end\"\r\n sx={{ color: \"var(--fg-subtle)\" }}\r\n >\r\n <ClearIcon fontSize=\"small\" />\r\n </IconButton>\r\n )}\r\n <IconButton\r\n type=\"button\"\r\n size=\"small\"\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n openModal();\r\n }}\r\n aria-label={L.searchAria}\r\n edge=\"end\"\r\n disabled={disabled}\r\n sx={{ color: \"var(--accent)\" }}\r\n >\r\n <SearchIcon fontSize=\"small\" />\r\n </IconButton>\r\n </Box>\r\n }\r\n />\r\n );\r\n\r\n /* ── Modal body ──────────────────────────────────────────── */\r\n const criteriaRow = criteria.length > 0 && (\r\n <Box\r\n component=\"form\"\r\n onSubmit={onSubmitCriteria}\r\n sx={{\r\n display: \"grid\",\r\n gap: \"var(--s-3)\",\r\n gridTemplateColumns: {\r\n xs: \"1fr\",\r\n sm: criteria.length > 1 ? \"1fr 1fr\" : \"1fr\",\r\n md: `repeat(${Math.min(criteria.length, 3)}, 1fr) auto`,\r\n },\r\n alignItems: \"end\",\r\n marginBottom: \"var(--s-4)\",\r\n }}\r\n >\r\n {criteria.map((c) => (\r\n <Field key={c.name} label={c.label} hint={c.hint}>\r\n {renderCriterionField(c, draft[c.name], (next) =>\r\n setDraft((d) => ({ ...d, [c.name]: next }))\r\n )}\r\n </Field>\r\n ))}\r\n <Box sx={{ display: \"flex\", justifyContent: \"flex-end\" }}>\r\n <Button variant=\"primary\" type=\"submit\" loading={loading}>\r\n {L.searchSubmit}\r\n </Button>\r\n </Box>\r\n </Box>\r\n );\r\n\r\n const liveResults = (\r\n <Box aria-live=\"polite\" aria-atomic=\"true\" className=\"pui-sr-only\">\r\n {hasSearched && !loading && !error ? L.resultsHeading(total) : \"\"}\r\n </Box>\r\n );\r\n\r\n const decoratedRows = React.useMemo<T[]>(() => {\r\n if (!confirmOnSelection || !pendingSelection) return items;\r\n const pendingId = getRowId(pendingSelection);\r\n return items.map((r) =>\r\n getRowId(r) === pendingId ? { ...r, __pending: true } : r\r\n );\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [items, pendingSelection, confirmOnSelection]);\r\n\r\n /* ── Modal footer ────────────────────────────────────────── */\r\n const footer = (\r\n <>\r\n <Button variant=\"ghost\" onClick={closeModal}>\r\n {L.modalCancel}\r\n </Button>\r\n {confirmOnSelection && (\r\n <Button\r\n variant=\"primary\"\r\n disabled={!pendingSelection}\r\n onClick={handleConfirmSelection}\r\n >\r\n {L.modalConfirm}\r\n </Button>\r\n )}\r\n </>\r\n );\r\n\r\n return (\r\n <>\r\n {trigger}\r\n <Modal\r\n open={open}\r\n onClose={closeModal}\r\n title={title}\r\n subtitle={subtitle}\r\n size={size}\r\n footer={footer}\r\n {...modalProps}\r\n >\r\n {criteriaRow}\r\n {liveResults}\r\n <DataGrid\r\n rows={decoratedRows}\r\n columns={columns}\r\n loading={loading}\r\n error={error}\r\n onRowClick={handleRowClick}\r\n pagination={pagination}\r\n getRowId={getRowId}\r\n emptyState={initialEmpty}\r\n filteredEmptyState={filteredEmpty}\r\n errorState={errorState}\r\n filtered={hasSearched}\r\n {...(sort !== undefined ? { sort } : {})}\r\n {...(onSortChange !== undefined ? { onSortChange } : {})}\r\n {...(locale !== undefined ? { locale } : {})}\r\n {...(confirmOnSelection && pendingSelection\r\n ? { rowFlashId: getRowId(pendingSelection) }\r\n : {})}\r\n />\r\n </Modal>\r\n </>\r\n );\r\n}\r\n\r\nexport default ReferentielField;\r\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ReferentielField.js","names":["React","_interopRequireWildcard","require","_Box","_interopRequireDefault","_IconButton","_Search","_Close","_Field","_Input","_Combobox","_DatePicker","_Button","_Banner","_Modal","_Drawer","_DataGrid","_EmptyState","_KV","_KVGrid","_mergeLabels","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","DEFAULT_LABELS","freeze","searchAria","clearAria","modalCancel","modalConfirm","searchSubmit","resultsHeading","initialEmptyTitle","initialEmptyHint","noResultsTitle","noResultsHint","errorTitle","errorRetry","loadingHint","placeholder","DEFAULT_PAGE_SIZE","DEFAULT_PAGE_SIZES","defaultGetRowId","row","id","renderCriterionField","c","value","onChange","kind","jsx","next","extracted","target","options","loading","Boolean","getOptionLabel","undefined","name","disableFuture","maxLength","inputProps","ReferentielField","getDisplayValue","disabled","readOnly","clearable","title","subtitle","size","modalProps","container","drawerWidth","searchOnOpen","search","criteria","initialCriteria","columns","pageSize","pageSizeProp","pageSizes","getRowId","confirmOnSelection","sort","onSortChange","labels","locale","renderMobileCard","mobileBreakpoint","ariaInvalid","ariaRequired","ariaDescribedBy","L","useMemo","mergeLabels","open","setOpen","useState","triggerRef","useRef","openModal","useCallback","closeModal","setTimeout","el","current","focus","preventScroll","seedCriteria","seed","forEach","draft","setDraft","useEffect","page","setPage","setPageSize","items","setItems","total","setTotal","setLoading","error","setError","hasSearched","setHasSearched","pendingSelection","setPendingSelection","requestSeq","runSearch","overrides","myReq","effective","result","Array","isArray","nextTotal","Number","isFinite","length","Error","onSubmitCriteria","preventDefault","searchedOnOpenRef","onPageChange","nextPage","onPageSizeChange","nextPageSize","handleRowClick","handleConfirmSelection","handleClear","stopPropagation","cellContent","col","render","getValue","v","String","raw","key","effectiveMobileCard","sx","display","flexDirection","gap","children","minColumnWidth","map","label","header","description","code","pagination","initialEmpty","variant","filteredEmpty","errorState","action","onClick","message","showClear","triggerAria","trigger","ref","onKeyDown","cursor","endIcon","jsxs","alignItems","type","edge","color","fontSize","criteriaRow","component","onSubmit","gridTemplateColumns","xs","sm","md","Math","min","marginBottom","hint","d","justifyContent","liveResults","className","decoratedRows","pendingId","__pending","footer","Fragment","pickerBody","rows","onRowClick","emptyState","filteredEmptyState","filtered","rowFlashId","onClose","width","actions","_default","exports"],"sources":["../../../src/lib/v2/patterns/ReferentielField.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport SearchIcon from \"@mui/icons-material/Search\";\r\nimport ClearIcon from \"@mui/icons-material/Close\";\r\n\r\nimport Field from \"../components/Field\";\r\nimport Input from \"../components/Input\";\r\nimport Combobox from \"../components/Combobox\";\r\nimport type { ComboboxOption, ComboboxOptionValue, ComboboxValue } from \"../components/Combobox\";\r\nimport DatePicker from \"../components/DatePicker\";\r\nimport Button from \"../components/Button\";\r\nimport Banner from \"../components/Banner\";\r\nimport Modal from \"../components/Modal\";\r\nimport Drawer from \"../components/Drawer\";\r\nimport DataGrid from \"./DataGrid\";\r\nimport EmptyState from \"../components/EmptyState\";\r\nimport type { DataGridColumn } from \"../types/datagrid\";\r\nimport type { Breakpoint, RowId, SortDescriptor } from \"../types/common\";\r\nimport KV from \"../components/KV\";\r\nimport KVGrid from \"../components/KVGrid\";\r\nimport { mergeLabels } from \"../utils/mergeLabels\";\r\n\r\n/**\r\n * ReferentielField — Portnet UI v2 (pattern)\r\n *\r\n * Charter §03 · Component \"Referentiel · Search-and-select\".\r\n *\r\n * Use this when:\r\n * - The selectable population is too large for <Combobox> to load.\r\n * - The host needs MULTI-CRITERIA search.\r\n * - The result rows benefit from a structured view.\r\n *\r\n * Criteria shape (B17 extension)\r\n * ------------------------------\r\n * Each criterion descriptor accepts:\r\n *\r\n * { name, label, placeholder, hint, kind, options, loading,\r\n * getOptionValue, getOptionLabel, disableFuture }\r\n *\r\n * - kind — discriminator: \"input\" (default) | \"combobox\" | \"date\"\r\n *\r\n * The B17 extension is purely additive: existing call sites with\r\n * `criteria=[{name, label}]` keep rendering plain Inputs because\r\n * `kind` defaults to \"input\".\r\n *\r\n * A11y trigger (audit Batch 5, finding B4-3):\r\n * The trigger Input acts as a combobox-like disclosure for a dialog\r\n * (the search Modal). aria-haspopup=\"dialog\" + aria-expanded MUST sit\r\n * on the FOCUSABLE element (the <input/>), so every aria-* on the\r\n * trigger is routed through `inputProps` → slotProps.input. This\r\n * includes the Field-injected aria-invalid / aria-required /\r\n * aria-describedby so the whole aria contract lives on one element.\r\n */\r\n\r\n/** Localisable strings; `resultsHeading` is a function for plural rules. */\r\nexport interface ReferentielFieldLabels {\r\n searchAria?: string | undefined;\r\n clearAria?: string | undefined;\r\n modalCancel?: React.ReactNode | undefined;\r\n modalConfirm?: React.ReactNode | undefined;\r\n searchSubmit?: React.ReactNode | undefined;\r\n resultsHeading?: ((n: number) => string) | undefined;\r\n initialEmptyTitle?: React.ReactNode | undefined;\r\n initialEmptyHint?: React.ReactNode | undefined;\r\n noResultsTitle?: React.ReactNode | undefined;\r\n noResultsHint?: React.ReactNode | undefined;\r\n errorTitle?: React.ReactNode | undefined;\r\n errorRetry?: React.ReactNode | undefined;\r\n loadingHint?: React.ReactNode | undefined;\r\n placeholder?: string | undefined;\r\n}\r\n\r\n/** One search criterion. combobox/date-only fields reuse the real\r\n * component prop types so they stay exactly aligned. */\r\nexport interface ReferentielCriterion {\r\n name: string;\r\n label: React.ReactNode;\r\n placeholder?: string | undefined;\r\n hint?: React.ReactNode | undefined;\r\n kind?: \"input\" | \"combobox\" | \"date\" | undefined;\r\n options?: React.ComponentProps<typeof Combobox>[\"options\"] | undefined;\r\n loading?: boolean | undefined;\r\n /**\r\n * Accepted for backward API compatibility with older criterion configs.\r\n * Combobox has no equivalent hook (it resolves value/label straight off\r\n * each option's own .value/.label), so this is currently NOT wired into\r\n * the \"combobox\" kind's render below — kept typed rather than removed so\r\n * any existing caller that sets it doesn't get a compile error.\r\n */\r\n getOptionValue?: ((option: ComboboxOption | ComboboxOptionValue) => ComboboxOptionValue) | undefined;\r\n getOptionLabel?: React.ComponentProps<typeof Combobox>[\"getOptionLabel\"] | undefined;\r\n disableFuture?: boolean | undefined;\r\n /**\r\n * Native `maxLength` for an `\"input\"` criterion (ignored by the combobox and\r\n * date kinds, which have no free-text entry).\r\n *\r\n * Added closing a gap found migrating ms-ti-fe off its local\r\n * `AppFormikSearchField`: every criterion in that module's six search forms\r\n * carried `inputProps={{ maxLength: 32 | 64 }}`, mirroring the column widths\r\n * the backend accepts, and this descriptor had no way to carry it — so the\r\n * migration would have SILENTLY DROPPED an input constraint on every\r\n * criterion. A host could not work around it either: `criteria` descriptors\r\n * are rendered by this component, not by the caller, so there is no element\r\n * to put the attribute on.\r\n *\r\n * Deliberately narrow: `maxLength` only, not an open `inputProps` passthrough.\r\n * A criterion is a search box owned by this pattern; letting hosts spray\r\n * arbitrary input attributes into it would reopen the same drift the\r\n * descriptor exists to prevent.\r\n */\r\n maxLength?: number | undefined;\r\n}\r\n\r\nexport interface ReferentielSearchParams {\r\n criteria: Record<string, unknown>;\r\n page: number;\r\n pageSize: number;\r\n sort: SortDescriptor[] | undefined;\r\n}\r\n\r\nexport interface ReferentielSearchResult<T> {\r\n items: T[];\r\n total?: number | undefined;\r\n}\r\n\r\nexport interface ReferentielFieldProps<T> {\r\n // Value contract\r\n value?: T | null | undefined;\r\n onChange?: ((value: T | null) => void) | undefined;\r\n getDisplayValue?: ((value: T) => string) | undefined;\r\n placeholder?: string | undefined;\r\n disabled?: boolean | undefined;\r\n readOnly?: boolean | undefined;\r\n clearable?: boolean | undefined;\r\n // Modal\r\n title?: React.ReactNode | undefined;\r\n subtitle?: React.ReactNode | undefined;\r\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\" | undefined;\r\n modalProps?: Partial<React.ComponentProps<typeof Modal>> | undefined;\r\n /**\r\n * Conteneur du sélecteur. `\"modal\"` par défaut — aucun appelant existant ne\r\n * change.\r\n *\r\n * ─── POURQUOI CE CHOIX EXISTE (gap S-1) ─────────────────────────────\r\n *\r\n * R-M.5 est explicite : « Drawer plutôt que Modal pour ≥ 3 champs ou contenu\r\n * défilable long ». Un sélecteur à critères PLUS une grille paginée satisfait\r\n * les DEUX branches, et §Drawer Pattern réserve par ailleurs le drawer à la\r\n * « consultation rapide » — ce qu'est le choix d'une ligne de référentiel.\r\n *\r\n * Le conteneur était en dur (`Modal`), et `modalProps` étant un\r\n * `Partial<ComponentProps<typeof Modal>>`, aucun réglage ne pouvait le\r\n * changer. Un hôte qui LIT R-M.5 ne pouvait donc pas adopter ce pattern — et\r\n * c'est l'une des deux raisons pour lesquelles `addm-fe` gardait deux\r\n * sélecteurs locaux de 14 Ko chacun (Area 3, lot 3E).\r\n */\r\n container?: \"modal\" | \"drawer\" | undefined;\r\n /**\r\n * Largeur du drawer, quand `container=\"drawer\"`. Défaut : `layout.drawer` du\r\n * socle, via le défaut propre de `Drawer` — non réécrit ici pour qu'une\r\n * révision du token s'applique aussi à ce pattern.\r\n */\r\n drawerWidth?: number | undefined;\r\n /**\r\n * Lance une recherche à critères vides à l'ouverture, au lieu d'afficher\r\n * l'état « Aucune recherche ».\r\n *\r\n * ─── POURQUOI (gap S-2) ──────────────────────────────────────\r\n *\r\n * « Saisissez un critère puis lancez la recherche » est le bon état initial\r\n * quand la population est trop grande pour être listée — c'est le cas d'usage\r\n * que décrit l'en-tête de ce fichier. Mais certaines populations sont COURTES\r\n * et CONNUES : les mandatants habilités d'un transitaire, la nomenclature\r\n * paginable par cinq. La réponse attendue y est la liste, pas un formulaire\r\n * vide, et c'est le comportement hérité des écrans v1.\r\n *\r\n * `initialCriteria` ne couvrait pas ce besoin : il SEME les critères sans\r\n * déclencher d'appel. Seconde raison pour laquelle `addm-fe` ne pouvait pas\r\n * adopter ce pattern.\r\n *\r\n * La recherche part UNE fois par ouverture : un changement de critère dans le\r\n * formulaire ne la relance pas (c'est le rôle du bouton), et une fermeture\r\n * réarme le déclencheur.\r\n */\r\n searchOnOpen?: boolean | undefined;\r\n // Search contract\r\n search: (\r\n params: ReferentielSearchParams\r\n ) => ReferentielSearchResult<T> | Promise<ReferentielSearchResult<T>>;\r\n criteria?: ReferentielCriterion[] | undefined;\r\n initialCriteria?: Record<string, unknown> | undefined;\r\n columns: DataGridColumn<T>[];\r\n pageSize?: number | undefined;\r\n pageSizes?: number[] | undefined;\r\n getRowId?: ((row: T) => RowId) | undefined;\r\n // Selection UX\r\n confirmOnSelection?: boolean | undefined;\r\n // Sort (delegated to DataGrid)\r\n sort?: SortDescriptor[] | undefined;\r\n onSortChange?: React.Dispatch<React.SetStateAction<SortDescriptor[]>> | undefined;\r\n // Localisation\r\n labels?: ReferentielFieldLabels | undefined;\r\n locale?: string | undefined;\r\n /**\r\n * Card renderer for the result grid below `mobileBreakpoint`.\r\n *\r\n * RESPONSIVE GAP (found auditing ms-ti-fe, Area 9). This pattern rendered\r\n * its `DataGrid` with no card renderer at all, and `DataGrid` falls back to\r\n * HORIZONTAL SCROLL when none is supplied. Every referentiel picker in the\r\n * fleet therefore scrolled sideways on a phone — ms-ti-fe's comptes-bancaires\r\n * picker is 778px of fixed column widths inside a `size=\"lg\"` modal, on\r\n * viewports the Platform standard lists down to 320px, against \"No horizontal\r\n * scrolling except for justified business cases\".\r\n *\r\n * A host could not fix it either: the grid is rendered here, not by the\r\n * caller. Omit this prop and a card is DERIVED from `columns` (header ->\r\n * label, `render` / `getValue` / `row[key]` -> value), so the card can never\r\n * drift from the table; pass it to override.\r\n */\r\n renderMobileCard?: ((row: T) => React.ReactNode) | undefined;\r\n /** Breakpoint below which the result grid switches to cards (default \"sm\"). */\r\n mobileBreakpoint?: Breakpoint | undefined;\r\n // Forwarded down so Field can wire id / aria-* / name\r\n id?: string | undefined;\r\n name?: string | undefined;\r\n \"aria-invalid\"?: React.AriaAttributes[\"aria-invalid\"] | undefined;\r\n \"aria-required\"?: React.AriaAttributes[\"aria-required\"] | undefined;\r\n \"aria-describedby\"?: string | undefined;\r\n}\r\n\r\nconst DEFAULT_LABELS = Object.freeze({\r\n searchAria: \"Rechercher\",\r\n clearAria: \"Effacer la sélection\",\r\n modalCancel: \"Annuler\",\r\n modalConfirm: \"Sélectionner\",\r\n searchSubmit: \"Rechercher\",\r\n resultsHeading: (n: number) => `${n} résultat${n > 1 ? \"s\" : \"\"}`,\r\n initialEmptyTitle: \"Aucune recherche\",\r\n initialEmptyHint: \"Saisissez un critère puis lancez la recherche.\",\r\n noResultsTitle: \"Aucun résultat\",\r\n noResultsHint: \"Modifiez vos critères et relancez la recherche.\",\r\n errorTitle: \"Recherche impossible\",\r\n errorRetry: \"Réessayer\",\r\n loadingHint: \"Recherche en cours…\",\r\n placeholder: \"Sélectionner…\",\r\n});\r\n\r\nconst DEFAULT_PAGE_SIZE = 25;\r\nconst DEFAULT_PAGE_SIZES = [25, 50, 100];\r\n\r\n/* Default getRowId (`(r) => r.id`); `(unknown) => RowId` is assignable to\r\n * the declared `(row: T) => RowId` by parameter contravariance. */\r\nconst defaultGetRowId = (row: unknown): RowId => (row as { id: RowId }).id;\r\n\r\n/* B17 — render a single criterion based on its `kind` discriminator.\r\n * Falls back to Input for unknown kinds. The draft value is `unknown`\r\n * (criteria are heterogeneous); one assertion at each value seam. */\r\nfunction renderCriterionField(\r\n c: ReferentielCriterion,\r\n value: unknown,\r\n onChange: (next: unknown) => void\r\n): React.ReactElement {\r\n const kind = c.kind || \"input\";\r\n\r\n switch (kind) {\r\n case \"combobox\":\r\n return (\r\n <Combobox\r\n value={(value ?? \"\") as ComboboxValue}\r\n onChange={(next) => {\r\n // Combobox may emit either a raw value or an event-like object;\r\n // extract defensively in a way that is sound for any shape.\r\n const extracted =\r\n next && typeof next === \"object\" && \"target\" in next\r\n ? ((next as { target?: { value?: unknown } }).target?.value ??\r\n next)\r\n : next;\r\n onChange(extracted);\r\n }}\r\n options={c.options ?? []}\r\n loading={Boolean(c.loading)}\r\n {...(c.getOptionLabel !== undefined ? { getOptionLabel: c.getOptionLabel } : {})}\r\n {...(c.placeholder !== undefined ? { placeholder: c.placeholder } : {})}\r\n />\r\n );\r\n case \"date\":\r\n return (\r\n <DatePicker\r\n name={c.name}\r\n value={(value ?? null) as Date | null}\r\n onChange={(next) => onChange(next)}\r\n disableFuture={Boolean(c.disableFuture)}\r\n {...(c.placeholder !== undefined ? { placeholder: c.placeholder } : {})}\r\n />\r\n );\r\n case \"input\":\r\n default:\r\n return (\r\n <Input\r\n name={c.name}\r\n value={(value ?? \"\") as string}\r\n onChange={(e) => onChange(e.target.value)}\r\n placeholder={c.placeholder}\r\n {...(c.maxLength != null ? { inputProps: { maxLength: c.maxLength } } : {})}\r\n />\r\n );\r\n }\r\n}\r\n\r\nfunction ReferentielField<T>({\r\n value,\r\n onChange,\r\n // Display / trigger\r\n getDisplayValue,\r\n placeholder,\r\n disabled = false,\r\n readOnly = false,\r\n clearable = true,\r\n // Modal content\r\n title = \"Rechercher\",\r\n subtitle,\r\n size = \"lg\",\r\n modalProps,\r\n container = \"modal\",\r\n drawerWidth,\r\n searchOnOpen = false,\r\n // Search contract\r\n search,\r\n criteria = [],\r\n initialCriteria,\r\n columns = [],\r\n pageSize: pageSizeProp = DEFAULT_PAGE_SIZE,\r\n pageSizes = DEFAULT_PAGE_SIZES,\r\n getRowId = defaultGetRowId,\r\n // Selection UX\r\n confirmOnSelection = false,\r\n // Sort (delegated to DataGrid)\r\n sort,\r\n onSortChange,\r\n // Localisation\r\n labels,\r\n locale,\r\n renderMobileCard,\r\n mobileBreakpoint = \"sm\",\r\n // Forwarded down so Field can wire id / aria-* / name\r\n id,\r\n name,\r\n \"aria-invalid\": ariaInvalid,\r\n \"aria-required\": ariaRequired,\r\n \"aria-describedby\": ariaDescribedBy,\r\n}: ReferentielFieldProps<T>) {\r\n const L = React.useMemo(\r\n () => (mergeLabels(DEFAULT_LABELS, labels)),\r\n [labels]\r\n );\r\n\r\n /* ── Modal lifecycle ──────────────────────────────────────── */\r\n const [open, setOpen] = React.useState(false);\r\n const triggerRef = React.useRef<React.ElementRef<typeof Input>>(null);\r\n\r\n const openModal = React.useCallback(() => {\r\n if (disabled || readOnly) return;\r\n setOpen(true);\r\n }, [disabled, readOnly]);\r\n\r\n const closeModal = React.useCallback(() => {\r\n setOpen(false);\r\n setTimeout(() => {\r\n // triggerRef's element type resolves to `{}` via React.ElementRef<typeof\r\n // Input> (a TS inference gap, not a real absence of .focus at runtime —\r\n // Input forwards its ref to a real focusable element). Cast narrowly at\r\n // the point of use rather than widening the ref's declared type, so the\r\n // `ref={triggerRef}` binding on <Input> below is unaffected.\r\n const el = triggerRef.current as { focus?: (options?: FocusOptions) => void } | null;\r\n if (el && typeof el.focus === \"function\") {\r\n el.focus({ preventScroll: true });\r\n }\r\n }, 0);\r\n }, []);\r\n\r\n /* ── Criteria draft + search state ───────────────────────── */\r\n const seedCriteria = React.useMemo(() => {\r\n const seed: Record<string, unknown> = {};\r\n (criteria || []).forEach((c) => {\r\n seed[c.name] = (initialCriteria && initialCriteria[c.name]) || \"\";\r\n });\r\n return seed;\r\n }, [criteria, initialCriteria]);\r\n\r\n const [draft, setDraft] = React.useState<Record<string, unknown>>(seedCriteria);\r\n\r\n React.useEffect(() => {\r\n if (open) setDraft(seedCriteria);\r\n }, [open, seedCriteria]);\r\n\r\n const [page, setPage] = React.useState(1);\r\n const [pageSize, setPageSize] = React.useState(pageSizeProp);\r\n\r\n const [items, setItems] = React.useState<T[]>([]);\r\n const [total, setTotal] = React.useState(0);\r\n const [loading, setLoading] = React.useState(false);\r\n const [error, setError] = React.useState<Error | null>(null);\r\n const [hasSearched, setHasSearched] = React.useState(false);\r\n const [pendingSelection, setPendingSelection] = React.useState<T | null>(null);\r\n\r\n /* ── Search executor ─────────────────────────────────────── */\r\n const requestSeq = React.useRef(0);\r\n\r\n const runSearch = React.useCallback(\r\n async (\r\n overrides: {\r\n criteria?: Record<string, unknown>;\r\n page?: number;\r\n pageSize?: number;\r\n } = {}\r\n ) => {\r\n if (typeof search !== \"function\") return;\r\n const myReq = ++requestSeq.current;\r\n const effective: ReferentielSearchParams = {\r\n criteria: overrides.criteria ?? draft,\r\n page: overrides.page ?? 1,\r\n pageSize: overrides.pageSize ?? pageSize,\r\n sort,\r\n };\r\n setLoading(true);\r\n setError(null);\r\n setHasSearched(true);\r\n try {\r\n const result = await search(effective);\r\n if (myReq !== requestSeq.current) return;\r\n setItems(Array.isArray(result.items) ? result.items : []);\r\n const nextTotal =\r\n typeof result.total === \"number\" && Number.isFinite(result.total)\r\n ? result.total\r\n : result.items.length;\r\n setTotal(nextTotal);\r\n setPage(effective.page);\r\n setPageSize(effective.pageSize);\r\n } catch (e) {\r\n if (myReq !== requestSeq.current) return;\r\n setError(e instanceof Error ? e : new Error(\"search failed\"));\r\n setItems([]);\r\n setTotal(0);\r\n } finally {\r\n if (myReq === requestSeq.current) setLoading(false);\r\n }\r\n },\r\n [search, draft, pageSize, sort]\r\n );\r\n\r\n /* ── Form submission inside the modal ────────────────────── */\r\n const onSubmitCriteria = (e: React.FormEvent<HTMLFormElement>) => {\r\n e.preventDefault();\r\n setPendingSelection(null);\r\n runSearch({ criteria: draft, page: 1 });\r\n };\r\n\r\n /**\r\n * S-2 — une recherche à vide par ouverture, quand `searchOnOpen` est demandé.\r\n *\r\n * Placé APRÈS `runSearch` délibérément : un effet qui référence une valeur\r\n * déclarée plus bas s'exécute correctement (les effets partent après le\r\n * rendu) mais se lit mal, et `no-use-before-define` le refuserait.\r\n *\r\n * Le drapeau est un ref et non de l'état : `runSearch` dépend de `draft`,\r\n * donc sans garde l'effet repartirait à chaque frappe dans un critère —\r\n * exactement ce que le bouton « Rechercher » existe pour éviter. Une\r\n * fermeture le réarme.\r\n *\r\n * Les critères semés sont passés EXPLICITEMENT : `runSearch` lirait sinon le\r\n * `draft` du rendu courant, que le `setDraft` de l'effet d'ouverture n'a pas\r\n * encore appliqué.\r\n */\r\n const searchedOnOpenRef = React.useRef(false);\r\n\r\n React.useEffect(() => {\r\n if (!open) {\r\n searchedOnOpenRef.current = false;\r\n return;\r\n }\r\n if (!searchOnOpen || searchedOnOpenRef.current) return;\r\n searchedOnOpenRef.current = true;\r\n void runSearch({ criteria: seedCriteria, page: 1 });\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [open, searchOnOpen, seedCriteria]);\r\n\r\n const onPageChange = (nextPage: number) => {\r\n runSearch({ page: nextPage });\r\n };\r\n const onPageSizeChange = (nextPageSize: number) => {\r\n runSearch({ page: 1, pageSize: nextPageSize });\r\n };\r\n\r\n /* ── Selection ───────────────────────────────────────────── */\r\n const handleRowClick = (row: T) => {\r\n if (confirmOnSelection) {\r\n setPendingSelection(row);\r\n return;\r\n }\r\n onChange?.(row);\r\n closeModal();\r\n };\r\n\r\n const handleConfirmSelection = () => {\r\n if (!pendingSelection) return;\r\n onChange?.(pendingSelection);\r\n setPendingSelection(null);\r\n closeModal();\r\n };\r\n\r\n const handleClear = (e: React.MouseEvent<HTMLButtonElement>) => {\r\n e.stopPropagation();\r\n if (disabled || readOnly) return;\r\n onChange?.(null);\r\n };\r\n\r\n /* ── Result-grid mobile card (A9) ───────────────────────────\r\n * Derived from the same `columns` the table uses, so the two cannot\r\n * disagree. `getValue` is declared `(row) => unknown` by the grid contract,\r\n * so its result is stringified here rather than handed to `KV` as a\r\n * ReactNode; `render` already returns one. */\r\n const cellContent = React.useCallback(\r\n (col: DataGridColumn<T>, row: T): React.ReactNode => {\r\n if (typeof col.render === \"function\") return col.render(row);\r\n if (typeof col.getValue === \"function\") {\r\n const v = col.getValue(row);\r\n return v == null ? \"\" : String(v);\r\n }\r\n const raw = (row as Record<string, unknown> | null)?.[col.key];\r\n return raw == null ? \"\" : String(raw);\r\n },\r\n []\r\n );\r\n\r\n const effectiveMobileCard = React.useCallback(\r\n (row: T): React.ReactNode => {\r\n if (typeof renderMobileCard === \"function\") return renderMobileCard(row);\r\n return (\r\n <Box sx={{ display: \"flex\", flexDirection: \"column\", gap: \"var(--s-2)\" }}>\r\n <KVGrid minColumnWidth={140}>\r\n {columns.map((col) => (\r\n <KV key={col.key} label={col.header} value={cellContent(col, row)} />\r\n ))}\r\n </KVGrid>\r\n </Box>\r\n );\r\n },\r\n [renderMobileCard, columns, cellContent]\r\n );\r\n\r\n /* ── Trigger display ─────────────────────────────────────── */\r\n const display = React.useMemo<string>(() => {\r\n if (value == null || value === \"\") return \"\";\r\n if (typeof getDisplayValue === \"function\") {\r\n try {\r\n return getDisplayValue(value) ?? \"\";\r\n } catch {\r\n return \"\";\r\n }\r\n }\r\n if (typeof value === \"string\") return value;\r\n if (value && typeof value === \"object\") {\r\n const v = value as {\r\n description?: string;\r\n label?: string;\r\n name?: string;\r\n code?: string;\r\n };\r\n return v.description || v.label || v.name || v.code || \"\";\r\n }\r\n return String(value);\r\n }, [value, getDisplayValue]);\r\n\r\n /* ── DataGrid pagination contract ────────────────────────── */\r\n const pagination = React.useMemo(\r\n () => ({\r\n page,\r\n pageSize,\r\n total,\r\n pageSizes,\r\n onPageChange,\r\n onPageSizeChange,\r\n }),\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [page, pageSize, total, pageSizes]\r\n );\r\n\r\n /* ── Empty / error states for DataGrid ───────────────────── */\r\n const initialEmpty = (\r\n <EmptyState\r\n variant=\"initial\"\r\n title={L.initialEmptyTitle}\r\n description={L.initialEmptyHint}\r\n />\r\n );\r\n const filteredEmpty = (\r\n <EmptyState\r\n variant=\"filtered\"\r\n title={L.noResultsTitle}\r\n description={L.noResultsHint}\r\n />\r\n );\r\n const errorState = (\r\n <Banner\r\n variant=\"error\"\r\n title={L.errorTitle}\r\n action={{ label: L.errorRetry, onClick: () => runSearch({ page: 1 }) }}\r\n >\r\n {error?.message || String(error || \"\")}\r\n </Banner>\r\n );\r\n\r\n /* ── Render the trigger ──────────────────────────────────── */\r\n const showClear = clearable && !disabled && !readOnly && Boolean(display);\r\n\r\n // B4-3 fix — bundle every aria-* attribute of the trigger so v2.Input\r\n // routes them into slotProps.input → the native <input/>. Typed as\r\n // AriaAttributes so \"aria-haspopup\":\"dialog\" stays a valid literal.\r\n const triggerAria = React.useMemo<React.AriaAttributes>(\r\n () => ({\r\n \"aria-haspopup\": \"dialog\",\r\n \"aria-expanded\": open,\r\n ...(ariaInvalid != null ? { \"aria-invalid\": ariaInvalid } : {}),\r\n ...(ariaRequired != null ? { \"aria-required\": ariaRequired } : {}),\r\n ...(ariaDescribedBy ? { \"aria-describedby\": ariaDescribedBy } : {}),\r\n }),\r\n [open, ariaInvalid, ariaRequired, ariaDescribedBy]\r\n );\r\n\r\n const trigger = (\r\n <Input\r\n ref={triggerRef}\r\n id={id}\r\n name={name}\r\n value={display}\r\n placeholder={placeholder ?? L.placeholder}\r\n readOnly\r\n disabled={disabled}\r\n onClick={openModal}\r\n onKeyDown={(e) => {\r\n if (e.key === \"Enter\" || e.key === \" \") {\r\n e.preventDefault();\r\n openModal();\r\n }\r\n }}\r\n inputProps={triggerAria}\r\n sx={{\r\n cursor: disabled ? \"not-allowed\" : \"pointer\",\r\n \"& input\": { cursor: disabled ? \"not-allowed\" : \"pointer\" },\r\n }}\r\n endIcon={\r\n <Box\r\n sx={{ display: \"inline-flex\", alignItems: \"center\", gap: \"var(--s-1)\" }}\r\n >\r\n {showClear && (\r\n <IconButton\r\n type=\"button\"\r\n size=\"small\"\r\n onClick={handleClear}\r\n aria-label={L.clearAria}\r\n edge=\"end\"\r\n sx={{ color: \"var(--fg-subtle)\" }}\r\n >\r\n <ClearIcon fontSize=\"small\" />\r\n </IconButton>\r\n )}\r\n <IconButton\r\n type=\"button\"\r\n size=\"small\"\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n openModal();\r\n }}\r\n aria-label={L.searchAria}\r\n edge=\"end\"\r\n disabled={disabled}\r\n sx={{ color: \"var(--accent)\" }}\r\n >\r\n <SearchIcon fontSize=\"small\" />\r\n </IconButton>\r\n </Box>\r\n }\r\n />\r\n );\r\n\r\n /* ── Modal body ──────────────────────────────────────────── */\r\n const criteriaRow = criteria.length > 0 && (\r\n <Box\r\n component=\"form\"\r\n onSubmit={onSubmitCriteria}\r\n sx={{\r\n display: \"grid\",\r\n gap: \"var(--s-3)\",\r\n gridTemplateColumns: {\r\n xs: \"1fr\",\r\n sm: criteria.length > 1 ? \"1fr 1fr\" : \"1fr\",\r\n md: `repeat(${Math.min(criteria.length, 3)}, 1fr) auto`,\r\n },\r\n alignItems: \"end\",\r\n marginBottom: \"var(--s-4)\",\r\n }}\r\n >\r\n {criteria.map((c) => (\r\n <Field key={c.name} label={c.label} hint={c.hint}>\r\n {renderCriterionField(c, draft[c.name], (next) =>\r\n setDraft((d) => ({ ...d, [c.name]: next }))\r\n )}\r\n </Field>\r\n ))}\r\n <Box sx={{ display: \"flex\", justifyContent: \"flex-end\" }}>\r\n <Button variant=\"primary\" type=\"submit\" loading={loading}>\r\n {L.searchSubmit}\r\n </Button>\r\n </Box>\r\n </Box>\r\n );\r\n\r\n const liveResults = (\r\n <Box aria-live=\"polite\" aria-atomic=\"true\" className=\"pui-sr-only\">\r\n {hasSearched && !loading && !error ? L.resultsHeading(total) : \"\"}\r\n </Box>\r\n );\r\n\r\n const decoratedRows = React.useMemo<T[]>(() => {\r\n if (!confirmOnSelection || !pendingSelection) return items;\r\n const pendingId = getRowId(pendingSelection);\r\n return items.map((r) =>\r\n getRowId(r) === pendingId ? { ...r, __pending: true } : r\r\n );\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [items, pendingSelection, confirmOnSelection]);\r\n\r\n /* ── Modal footer ────────────────────────────────────────── */\r\n const footer = (\r\n <>\r\n <Button variant=\"ghost\" onClick={closeModal}>\r\n {L.modalCancel}\r\n </Button>\r\n {confirmOnSelection && (\r\n <Button\r\n variant=\"primary\"\r\n disabled={!pendingSelection}\r\n onClick={handleConfirmSelection}\r\n >\r\n {L.modalConfirm}\r\n </Button>\r\n )}\r\n </>\r\n );\r\n\r\n /* ── Corps commun aux deux conteneurs (S-1) ──────────────────────\r\n *\r\n * Extrait pour que `Modal` et `Drawer` reçoivent LE MÊME contenu : aucun\r\n * comportement de recherche, de sélection ou de pagination ne peut diverger\r\n * entre les deux conteneurs, puisqu'il n'en existe qu'une expression.\r\n *\r\n * Déclaré ICI et non plus haut : `criteriaRow`, `liveResults` et\r\n * `decoratedRows` sont des `const` du même corps de fonction, évaluées\r\n * PENDANT le rendu. Les lire avant leur déclaration est une vraie TDZ —\r\n * contrairement à un effet, qui ne s'exécute qu'après. */\r\n const pickerBody = (\r\n <>\r\n {criteriaRow}\r\n {liveResults}\r\n <DataGrid\r\n rows={decoratedRows}\r\n columns={columns}\r\n loading={loading}\r\n error={error}\r\n onRowClick={handleRowClick}\r\n pagination={pagination}\r\n getRowId={getRowId}\r\n emptyState={initialEmpty}\r\n filteredEmptyState={filteredEmpty}\r\n errorState={errorState}\r\n filtered={hasSearched}\r\n renderMobileCard={(row) => effectiveMobileCard(row)}\r\n mobileBreakpoint={mobileBreakpoint}\r\n {...(sort !== undefined ? { sort } : {})}\r\n {...(onSortChange !== undefined ? { onSortChange } : {})}\r\n {...(locale !== undefined ? { locale } : {})}\r\n {...(confirmOnSelection && pendingSelection\r\n ? { rowFlashId: getRowId(pendingSelection) }\r\n : {})}\r\n />\r\n </>\r\n );\r\n\r\n return (\r\n <>\r\n {trigger}\r\n {container === \"drawer\" ? (\r\n /* S-1 — R-M.5 : un sélecteur à critères + grille paginée est à la fois\r\n * « ≥ 3 champs » et « contenu défilable long ». Le corps est\r\n * IDENTIQUE dans les deux branches : seule l'enveloppe change, donc\r\n * aucun comportement de recherche, de sélection ou de pagination ne\r\n * peut diverger entre les deux conteneurs.\r\n *\r\n * `footer` devient `actions` : c'est le nom du même emplacement sur\r\n * `Drawer`. `size` n'a pas d'équivalent — un drawer est borné par sa\r\n * largeur, pas par un gabarit de modale — et `modalProps` n'est\r\n * délibérément PAS transmis ici : son type est celui de `Modal`, le\r\n * faire fuiter sur un `Drawer` serait un mensonge de typage. */\r\n <Drawer\r\n open={open}\r\n onClose={closeModal}\r\n title={title}\r\n {...(subtitle !== undefined ? { subtitle } : {})}\r\n {...(drawerWidth !== undefined ? { width: drawerWidth } : {})}\r\n actions={footer}\r\n >\r\n {pickerBody}\r\n </Drawer>\r\n ) : (\r\n <Modal\r\n open={open}\r\n onClose={closeModal}\r\n title={title}\r\n subtitle={subtitle}\r\n size={size}\r\n footer={footer}\r\n {...modalProps}\r\n >\r\n {pickerBody}\r\n </Modal>\r\n )}\r\n </>\r\n );\r\n}\r\n\r\nexport default ReferentielField;\r\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,IAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,WAAA,GAAAD,sBAAA,CAAAF,OAAA;AACA,IAAAI,OAAA,GAAAF,sBAAA,CAAAF,OAAA;AACA,IAAAK,MAAA,GAAAH,sBAAA,CAAAF,OAAA;AAEA,IAAAM,MAAA,GAAAJ,sBAAA,CAAAF,OAAA;AACA,IAAAO,MAAA,GAAAL,sBAAA,CAAAF,OAAA;AACA,IAAAQ,SAAA,GAAAN,sBAAA,CAAAF,OAAA;AAEA,IAAAS,WAAA,GAAAP,sBAAA,CAAAF,OAAA;AACA,IAAAU,OAAA,GAAAR,sBAAA,CAAAF,OAAA;AACA,IAAAW,OAAA,GAAAT,sBAAA,CAAAF,OAAA;AACA,IAAAY,MAAA,GAAAV,sBAAA,CAAAF,OAAA;AACA,IAAAa,OAAA,GAAAX,sBAAA,CAAAF,OAAA;AACA,IAAAc,SAAA,GAAAZ,sBAAA,CAAAF,OAAA;AACA,IAAAe,WAAA,GAAAb,sBAAA,CAAAF,OAAA;AAGA,IAAAgB,GAAA,GAAAd,sBAAA,CAAAF,OAAA;AACA,IAAAiB,OAAA,GAAAf,sBAAA,CAAAF,OAAA;AACA,IAAAkB,YAAA,GAAAlB,OAAA;AAAmD,IAAAmB,WAAA,GAAAnB,OAAA;AAAA,SAAAE,uBAAAkB,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAArB,wBAAAqB,CAAA,EAAAG,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAzB,uBAAA,YAAAA,CAAAqB,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;AAEnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAkBA;AACA;;AA6JA,MAAMgB,cAAc,GAAGH,MAAM,CAACI,MAAM,CAAC;EACnCC,UAAU,EAAE,YAAY;EACxBC,SAAS,EAAE,sBAAsB;EACjCC,WAAW,EAAE,SAAS;EACtBC,YAAY,EAAE,cAAc;EAC5BC,YAAY,EAAE,YAAY;EAC1BC,cAAc,EAAGpB,CAAS,IAAK,GAAGA,CAAC,YAAYA,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,EAAE;EACjEqB,iBAAiB,EAAE,kBAAkB;EACrCC,gBAAgB,EAAE,gDAAgD;EAClEC,cAAc,EAAE,gBAAgB;EAChCC,aAAa,EAAE,iDAAiD;EAChEC,UAAU,EAAE,sBAAsB;EAClCC,UAAU,EAAE,WAAW;EACvBC,WAAW,EAAE,qBAAqB;EAClCC,WAAW,EAAE;AACf,CAAC,CAAC;AAEF,MAAMC,iBAAiB,GAAG,EAAE;AAC5B,MAAMC,kBAAkB,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;;AAExC;AACA;AACA,MAAMC,eAAe,GAAIC,GAAY,IAAaA,GAAG,CAAmBC,EAAE;;AAE1E;AACA;AACA;AACA,SAASC,oBAAoBA,CAC3BC,CAAuB,EACvBC,KAAc,EACdC,QAAiC,EACb;EACpB,MAAMC,IAAI,GAAGH,CAAC,CAACG,IAAI,IAAI,OAAO;EAE9B,QAAQA,IAAI;IACV,KAAK,UAAU;MACb,oBACE,IAAA7C,WAAA,CAAA8C,GAAA,EAACzD,SAAA,CAAAc,OAAQ;QACPwC,KAAK,EAAGA,KAAK,IAAI,EAAqB;QACtCC,QAAQ,EAAGG,IAAI,IAAK;UAClB;UACA;UACA,MAAMC,SAAS,GACbD,IAAI,IAAI,OAAOA,IAAI,KAAK,QAAQ,IAAI,QAAQ,IAAIA,IAAI,GAC9CA,IAAI,CAAsCE,MAAM,EAAEN,KAAK,IACzDI,IAAI,GACJA,IAAI;UACVH,QAAQ,CAACI,SAAS,CAAC;QACrB,CAAE;QACFE,OAAO,EAAER,CAAC,CAACQ,OAAO,IAAI,EAAG;QACzBC,OAAO,EAAEC,OAAO,CAACV,CAAC,CAACS,OAAO,CAAE;QAAA,IACvBT,CAAC,CAACW,cAAc,KAAKC,SAAS,GAAG;UAAED,cAAc,EAAEX,CAAC,CAACW;QAAe,CAAC,GAAG,CAAC,CAAC;QAAA,IAC1EX,CAAC,CAACP,WAAW,KAAKmB,SAAS,GAAG;UAAEnB,WAAW,EAAEO,CAAC,CAACP;QAAY,CAAC,GAAG,CAAC,CAAC;MAAA,CACvE,CAAC;IAEN,KAAK,MAAM;MACT,oBACE,IAAAnC,WAAA,CAAA8C,GAAA,EAACxD,WAAA,CAAAa,OAAU;QACToD,IAAI,EAAEb,CAAC,CAACa,IAAK;QACbZ,KAAK,EAAGA,KAAK,IAAI,IAAqB;QACtCC,QAAQ,EAAGG,IAAI,IAAKH,QAAQ,CAACG,IAAI,CAAE;QACnCS,aAAa,EAAEJ,OAAO,CAACV,CAAC,CAACc,aAAa,CAAE;QAAA,IACnCd,CAAC,CAACP,WAAW,KAAKmB,SAAS,GAAG;UAAEnB,WAAW,EAAEO,CAAC,CAACP;QAAY,CAAC,GAAG,CAAC,CAAC;MAAA,CACvE,CAAC;IAEN,KAAK,OAAO;IACZ;MACE,oBACE,IAAAnC,WAAA,CAAA8C,GAAA,EAAC1D,MAAA,CAAAe,OAAK;QACJoD,IAAI,EAAEb,CAAC,CAACa,IAAK;QACbZ,KAAK,EAAGA,KAAK,IAAI,EAAc;QAC/BC,QAAQ,EAAG3C,CAAC,IAAK2C,QAAQ,CAAC3C,CAAC,CAACgD,MAAM,CAACN,KAAK,CAAE;QAC1CR,WAAW,EAAEO,CAAC,CAACP,WAAY;QAAA,IACtBO,CAAC,CAACe,SAAS,IAAI,IAAI,GAAG;UAAEC,UAAU,EAAE;YAAED,SAAS,EAAEf,CAAC,CAACe;UAAU;QAAE,CAAC,GAAG,CAAC,CAAC;MAAA,CAC3E,CAAC;EAER;AACF;AAEA,SAASE,gBAAgBA,CAAI;EAC3BhB,KAAK;EACLC,QAAQ;EACR;EACAgB,eAAe;EACfzB,WAAW;EACX0B,QAAQ,GAAG,KAAK;EAChBC,QAAQ,GAAG,KAAK;EAChBC,SAAS,GAAG,IAAI;EAChB;EACAC,KAAK,GAAG,YAAY;EACpBC,QAAQ;EACRC,IAAI,GAAG,IAAI;EACXC,UAAU;EACVC,SAAS,GAAG,OAAO;EACnBC,WAAW;EACXC,YAAY,GAAG,KAAK;EACpB;EACAC,MAAM;EACNC,QAAQ,GAAG,EAAE;EACbC,eAAe;EACfC,OAAO,GAAG,EAAE;EACZC,QAAQ,EAAEC,YAAY,GAAGxC,iBAAiB;EAC1CyC,SAAS,GAAGxC,kBAAkB;EAC9ByC,QAAQ,GAAGxC,eAAe;EAC1B;EACAyC,kBAAkB,GAAG,KAAK;EAC1B;EACAC,IAAI;EACJC,YAAY;EACZ;EACAC,MAAM;EACNC,MAAM;EACNC,gBAAgB;EAChBC,gBAAgB,GAAG,IAAI;EACvB;EACA7C,EAAE;EACFe,IAAI;EACJ,cAAc,EAAE+B,WAAW;EAC3B,eAAe,EAAEC,YAAY;EAC7B,kBAAkB,EAAEC;AACI,CAAC,EAAE;EAC3B,MAAMC,CAAC,GAAG9G,KAAK,CAAC+G,OAAO,CACrB,MAAO,IAAAC,wBAAW,EAACvE,cAAc,EAAE8D,MAAM,CAAE,EAC3C,CAACA,MAAM,CACT,CAAC;;EAED;EACA,MAAM,CAACU,IAAI,EAAEC,OAAO,CAAC,GAAGlH,KAAK,CAACmH,QAAQ,CAAC,KAAK,CAAC;EAC7C,MAAMC,UAAU,GAAGpH,KAAK,CAACqH,MAAM,CAAiC,IAAI,CAAC;EAErE,MAAMC,SAAS,GAAGtH,KAAK,CAACuH,WAAW,CAAC,MAAM;IACxC,IAAIrC,QAAQ,IAAIC,QAAQ,EAAE;IAC1B+B,OAAO,CAAC,IAAI,CAAC;EACf,CAAC,EAAE,CAAChC,QAAQ,EAAEC,QAAQ,CAAC,CAAC;EAExB,MAAMqC,UAAU,GAAGxH,KAAK,CAACuH,WAAW,CAAC,MAAM;IACzCL,OAAO,CAAC,KAAK,CAAC;IACdO,UAAU,CAAC,MAAM;MACf;MACA;MACA;MACA;MACA;MACA,MAAMC,EAAE,GAAGN,UAAU,CAACO,OAA8D;MACpF,IAAID,EAAE,IAAI,OAAOA,EAAE,CAACE,KAAK,KAAK,UAAU,EAAE;QACxCF,EAAE,CAACE,KAAK,CAAC;UAAEC,aAAa,EAAE;QAAK,CAAC,CAAC;MACnC;IACF,CAAC,EAAE,CAAC,CAAC;EACP,CAAC,EAAE,EAAE,CAAC;;EAEN;EACA,MAAMC,YAAY,GAAG9H,KAAK,CAAC+G,OAAO,CAAC,MAAM;IACvC,MAAMgB,IAA6B,GAAG,CAAC,CAAC;IACxC,CAAClC,QAAQ,IAAI,EAAE,EAAEmC,OAAO,CAAEjE,CAAC,IAAK;MAC9BgE,IAAI,CAAChE,CAAC,CAACa,IAAI,CAAC,GAAIkB,eAAe,IAAIA,eAAe,CAAC/B,CAAC,CAACa,IAAI,CAAC,IAAK,EAAE;IACnE,CAAC,CAAC;IACF,OAAOmD,IAAI;EACb,CAAC,EAAE,CAAClC,QAAQ,EAAEC,eAAe,CAAC,CAAC;EAE/B,MAAM,CAACmC,KAAK,EAAEC,QAAQ,CAAC,GAAGlI,KAAK,CAACmH,QAAQ,CAA0BW,YAAY,CAAC;EAE/E9H,KAAK,CAACmI,SAAS,CAAC,MAAM;IACpB,IAAIlB,IAAI,EAAEiB,QAAQ,CAACJ,YAAY,CAAC;EAClC,CAAC,EAAE,CAACb,IAAI,EAAEa,YAAY,CAAC,CAAC;EAExB,MAAM,CAACM,IAAI,EAAEC,OAAO,CAAC,GAAGrI,KAAK,CAACmH,QAAQ,CAAC,CAAC,CAAC;EACzC,MAAM,CAACnB,QAAQ,EAAEsC,WAAW,CAAC,GAAGtI,KAAK,CAACmH,QAAQ,CAAClB,YAAY,CAAC;EAE5D,MAAM,CAACsC,KAAK,EAAEC,QAAQ,CAAC,GAAGxI,KAAK,CAACmH,QAAQ,CAAM,EAAE,CAAC;EACjD,MAAM,CAACsB,KAAK,EAAEC,QAAQ,CAAC,GAAG1I,KAAK,CAACmH,QAAQ,CAAC,CAAC,CAAC;EAC3C,MAAM,CAAC3C,OAAO,EAAEmE,UAAU,CAAC,GAAG3I,KAAK,CAACmH,QAAQ,CAAC,KAAK,CAAC;EACnD,MAAM,CAACyB,KAAK,EAAEC,QAAQ,CAAC,GAAG7I,KAAK,CAACmH,QAAQ,CAAe,IAAI,CAAC;EAC5D,MAAM,CAAC2B,WAAW,EAAEC,cAAc,CAAC,GAAG/I,KAAK,CAACmH,QAAQ,CAAC,KAAK,CAAC;EAC3D,MAAM,CAAC6B,gBAAgB,EAAEC,mBAAmB,CAAC,GAAGjJ,KAAK,CAACmH,QAAQ,CAAW,IAAI,CAAC;;EAE9E;EACA,MAAM+B,UAAU,GAAGlJ,KAAK,CAACqH,MAAM,CAAC,CAAC,CAAC;EAElC,MAAM8B,SAAS,GAAGnJ,KAAK,CAACuH,WAAW,CACjC,OACE6B,SAIC,GAAG,CAAC,CAAC,KACH;IACH,IAAI,OAAOxD,MAAM,KAAK,UAAU,EAAE;IAClC,MAAMyD,KAAK,GAAG,EAAEH,UAAU,CAACvB,OAAO;IAClC,MAAM2B,SAAkC,GAAG;MACzCzD,QAAQ,EAAEuD,SAAS,CAACvD,QAAQ,IAAIoC,KAAK;MACrCG,IAAI,EAAEgB,SAAS,CAAChB,IAAI,IAAI,CAAC;MACzBpC,QAAQ,EAAEoD,SAAS,CAACpD,QAAQ,IAAIA,QAAQ;MACxCK;IACF,CAAC;IACDsC,UAAU,CAAC,IAAI,CAAC;IAChBE,QAAQ,CAAC,IAAI,CAAC;IACdE,cAAc,CAAC,IAAI,CAAC;IACpB,IAAI;MACF,MAAMQ,MAAM,GAAG,MAAM3D,MAAM,CAAC0D,SAAS,CAAC;MACtC,IAAID,KAAK,KAAKH,UAAU,CAACvB,OAAO,EAAE;MAClCa,QAAQ,CAACgB,KAAK,CAACC,OAAO,CAACF,MAAM,CAAChB,KAAK,CAAC,GAAGgB,MAAM,CAAChB,KAAK,GAAG,EAAE,CAAC;MACzD,MAAMmB,SAAS,GACb,OAAOH,MAAM,CAACd,KAAK,KAAK,QAAQ,IAAIkB,MAAM,CAACC,QAAQ,CAACL,MAAM,CAACd,KAAK,CAAC,GAC7Dc,MAAM,CAACd,KAAK,GACZc,MAAM,CAAChB,KAAK,CAACsB,MAAM;MACzBnB,QAAQ,CAACgB,SAAS,CAAC;MACnBrB,OAAO,CAACiB,SAAS,CAAClB,IAAI,CAAC;MACvBE,WAAW,CAACgB,SAAS,CAACtD,QAAQ,CAAC;IACjC,CAAC,CAAC,OAAO1E,CAAC,EAAE;MACV,IAAI+H,KAAK,KAAKH,UAAU,CAACvB,OAAO,EAAE;MAClCkB,QAAQ,CAACvH,CAAC,YAAYwI,KAAK,GAAGxI,CAAC,GAAG,IAAIwI,KAAK,CAAC,eAAe,CAAC,CAAC;MAC7DtB,QAAQ,CAAC,EAAE,CAAC;MACZE,QAAQ,CAAC,CAAC,CAAC;IACb,CAAC,SAAS;MACR,IAAIW,KAAK,KAAKH,UAAU,CAACvB,OAAO,EAAEgB,UAAU,CAAC,KAAK,CAAC;IACrD;EACF,CAAC,EACD,CAAC/C,MAAM,EAAEqC,KAAK,EAAEjC,QAAQ,EAAEK,IAAI,CAChC,CAAC;;EAED;EACA,MAAM0D,gBAAgB,GAAIzI,CAAmC,IAAK;IAChEA,CAAC,CAAC0I,cAAc,CAAC,CAAC;IAClBf,mBAAmB,CAAC,IAAI,CAAC;IACzBE,SAAS,CAAC;MAAEtD,QAAQ,EAAEoC,KAAK;MAAEG,IAAI,EAAE;IAAE,CAAC,CAAC;EACzC,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAM6B,iBAAiB,GAAGjK,KAAK,CAACqH,MAAM,CAAC,KAAK,CAAC;EAE7CrH,KAAK,CAACmI,SAAS,CAAC,MAAM;IACpB,IAAI,CAAClB,IAAI,EAAE;MACTgD,iBAAiB,CAACtC,OAAO,GAAG,KAAK;MACjC;IACF;IACA,IAAI,CAAChC,YAAY,IAAIsE,iBAAiB,CAACtC,OAAO,EAAE;IAChDsC,iBAAiB,CAACtC,OAAO,GAAG,IAAI;IAChC,KAAKwB,SAAS,CAAC;MAAEtD,QAAQ,EAAEiC,YAAY;MAAEM,IAAI,EAAE;IAAE,CAAC,CAAC;IACnD;EACF,CAAC,EAAE,CAACnB,IAAI,EAAEtB,YAAY,EAAEmC,YAAY,CAAC,CAAC;EAEtC,MAAMoC,YAAY,GAAIC,QAAgB,IAAK;IACzChB,SAAS,CAAC;MAAEf,IAAI,EAAE+B;IAAS,CAAC,CAAC;EAC/B,CAAC;EACD,MAAMC,gBAAgB,GAAIC,YAAoB,IAAK;IACjDlB,SAAS,CAAC;MAAEf,IAAI,EAAE,CAAC;MAAEpC,QAAQ,EAAEqE;IAAa,CAAC,CAAC;EAChD,CAAC;;EAED;EACA,MAAMC,cAAc,GAAI1G,GAAM,IAAK;IACjC,IAAIwC,kBAAkB,EAAE;MACtB6C,mBAAmB,CAACrF,GAAG,CAAC;MACxB;IACF;IACAK,QAAQ,GAAGL,GAAG,CAAC;IACf4D,UAAU,CAAC,CAAC;EACd,CAAC;EAED,MAAM+C,sBAAsB,GAAGA,CAAA,KAAM;IACnC,IAAI,CAACvB,gBAAgB,EAAE;IACvB/E,QAAQ,GAAG+E,gBAAgB,CAAC;IAC5BC,mBAAmB,CAAC,IAAI,CAAC;IACzBzB,UAAU,CAAC,CAAC;EACd,CAAC;EAED,MAAMgD,WAAW,GAAIlJ,CAAsC,IAAK;IAC9DA,CAAC,CAACmJ,eAAe,CAAC,CAAC;IACnB,IAAIvF,QAAQ,IAAIC,QAAQ,EAAE;IAC1BlB,QAAQ,GAAG,IAAI,CAAC;EAClB,CAAC;;EAED;AACF;AACA;AACA;AACA;EACE,MAAMyG,WAAW,GAAG1K,KAAK,CAACuH,WAAW,CACnC,CAACoD,GAAsB,EAAE/G,GAAM,KAAsB;IACnD,IAAI,OAAO+G,GAAG,CAACC,MAAM,KAAK,UAAU,EAAE,OAAOD,GAAG,CAACC,MAAM,CAAChH,GAAG,CAAC;IAC5D,IAAI,OAAO+G,GAAG,CAACE,QAAQ,KAAK,UAAU,EAAE;MACtC,MAAMC,CAAC,GAAGH,GAAG,CAACE,QAAQ,CAACjH,GAAG,CAAC;MAC3B,OAAOkH,CAAC,IAAI,IAAI,GAAG,EAAE,GAAGC,MAAM,CAACD,CAAC,CAAC;IACnC;IACA,MAAME,GAAG,GAAIpH,GAAG,GAAsC+G,GAAG,CAACM,GAAG,CAAC;IAC9D,OAAOD,GAAG,IAAI,IAAI,GAAG,EAAE,GAAGD,MAAM,CAACC,GAAG,CAAC;EACvC,CAAC,EACD,EACF,CAAC;EAED,MAAME,mBAAmB,GAAGlL,KAAK,CAACuH,WAAW,CAC1C3D,GAAM,IAAsB;IAC3B,IAAI,OAAO6C,gBAAgB,KAAK,UAAU,EAAE,OAAOA,gBAAgB,CAAC7C,GAAG,CAAC;IACxE,oBACE,IAAAvC,WAAA,CAAA8C,GAAA,EAAChE,IAAA,CAAAqB,OAAG;MAAC2J,EAAE,EAAE;QAAEC,OAAO,EAAE,MAAM;QAAEC,aAAa,EAAE,QAAQ;QAAEC,GAAG,EAAE;MAAa,CAAE;MAAAC,QAAA,eACvE,IAAAlK,WAAA,CAAA8C,GAAA,EAAChD,OAAA,CAAAK,OAAM;QAACgK,cAAc,EAAE,GAAI;QAAAD,QAAA,EACzBxF,OAAO,CAAC0F,GAAG,CAAEd,GAAG,iBACf,IAAAtJ,WAAA,CAAA8C,GAAA,EAACjD,GAAA,CAAAM,OAAE;UAAekK,KAAK,EAAEf,GAAG,CAACgB,MAAO;UAAC3H,KAAK,EAAE0G,WAAW,CAACC,GAAG,EAAE/G,GAAG;QAAE,GAAzD+G,GAAG,CAACM,GAAuD,CACrE;MAAC,CACI;IAAC,CACN,CAAC;EAEV,CAAC,EACD,CAACxE,gBAAgB,EAAEV,OAAO,EAAE2E,WAAW,CACzC,CAAC;;EAED;EACA,MAAMU,OAAO,GAAGpL,KAAK,CAAC+G,OAAO,CAAS,MAAM;IAC1C,IAAI/C,KAAK,IAAI,IAAI,IAAIA,KAAK,KAAK,EAAE,EAAE,OAAO,EAAE;IAC5C,IAAI,OAAOiB,eAAe,KAAK,UAAU,EAAE;MACzC,IAAI;QACF,OAAOA,eAAe,CAACjB,KAAK,CAAC,IAAI,EAAE;MACrC,CAAC,CAAC,MAAM;QACN,OAAO,EAAE;MACX;IACF;IACA,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE,OAAOA,KAAK;IAC3C,IAAIA,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;MACtC,MAAM8G,CAAC,GAAG9G,KAKT;MACD,OAAO8G,CAAC,CAACc,WAAW,IAAId,CAAC,CAACY,KAAK,IAAIZ,CAAC,CAAClG,IAAI,IAAIkG,CAAC,CAACe,IAAI,IAAI,EAAE;IAC3D;IACA,OAAOd,MAAM,CAAC/G,KAAK,CAAC;EACtB,CAAC,EAAE,CAACA,KAAK,EAAEiB,eAAe,CAAC,CAAC;;EAE5B;EACA,MAAM6G,UAAU,GAAG9L,KAAK,CAAC+G,OAAO,CAC9B,OAAO;IACLqB,IAAI;IACJpC,QAAQ;IACRyC,KAAK;IACLvC,SAAS;IACTgE,YAAY;IACZE;EACF,CAAC,CAAC;EACF;EACA,CAAChC,IAAI,EAAEpC,QAAQ,EAAEyC,KAAK,EAAEvC,SAAS,CACnC,CAAC;;EAED;EACA,MAAM6F,YAAY,gBAChB,IAAA1K,WAAA,CAAA8C,GAAA,EAAClD,WAAA,CAAAO,OAAU;IACTwK,OAAO,EAAC,SAAS;IACjB3G,KAAK,EAAEyB,CAAC,CAAC7D,iBAAkB;IAC3B2I,WAAW,EAAE9E,CAAC,CAAC5D;EAAiB,CACjC,CACF;EACD,MAAM+I,aAAa,gBACjB,IAAA5K,WAAA,CAAA8C,GAAA,EAAClD,WAAA,CAAAO,OAAU;IACTwK,OAAO,EAAC,UAAU;IAClB3G,KAAK,EAAEyB,CAAC,CAAC3D,cAAe;IACxByI,WAAW,EAAE9E,CAAC,CAAC1D;EAAc,CAC9B,CACF;EACD,MAAM8I,UAAU,gBACd,IAAA7K,WAAA,CAAA8C,GAAA,EAACtD,OAAA,CAAAW,OAAM;IACLwK,OAAO,EAAC,OAAO;IACf3G,KAAK,EAAEyB,CAAC,CAACzD,UAAW;IACpB8I,MAAM,EAAE;MAAET,KAAK,EAAE5E,CAAC,CAACxD,UAAU;MAAE8I,OAAO,EAAEA,CAAA,KAAMjD,SAAS,CAAC;QAAEf,IAAI,EAAE;MAAE,CAAC;IAAE,CAAE;IAAAmD,QAAA,EAEtE3C,KAAK,EAAEyD,OAAO,IAAItB,MAAM,CAACnC,KAAK,IAAI,EAAE;EAAC,CAChC,CACT;;EAED;EACA,MAAM0D,SAAS,GAAGlH,SAAS,IAAI,CAACF,QAAQ,IAAI,CAACC,QAAQ,IAAIV,OAAO,CAAC2G,OAAO,CAAC;;EAEzE;EACA;EACA;EACA,MAAMmB,WAAW,GAAGvM,KAAK,CAAC+G,OAAO,CAC/B,OAAO;IACL,eAAe,EAAE,QAAQ;IACzB,eAAe,EAAEE,IAAI;IACrB,IAAIN,WAAW,IAAI,IAAI,GAAG;MAAE,cAAc,EAAEA;IAAY,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/D,IAAIC,YAAY,IAAI,IAAI,GAAG;MAAE,eAAe,EAAEA;IAAa,CAAC,GAAG,CAAC,CAAC,CAAC;IAClE,IAAIC,eAAe,GAAG;MAAE,kBAAkB,EAAEA;IAAgB,CAAC,GAAG,CAAC,CAAC;EACpE,CAAC,CAAC,EACF,CAACI,IAAI,EAAEN,WAAW,EAAEC,YAAY,EAAEC,eAAe,CACnD,CAAC;EAED,MAAM2F,OAAO,gBACX,IAAAnL,WAAA,CAAA8C,GAAA,EAAC1D,MAAA,CAAAe,OAAK;IACJiL,GAAG,EAAErF,UAAW;IAChBvD,EAAE,EAAEA,EAAG;IACPe,IAAI,EAAEA,IAAK;IACXZ,KAAK,EAAEoH,OAAQ;IACf5H,WAAW,EAAEA,WAAW,IAAIsD,CAAC,CAACtD,WAAY;IAC1C2B,QAAQ;IACRD,QAAQ,EAAEA,QAAS;IACnBkH,OAAO,EAAE9E,SAAU;IACnBoF,SAAS,EAAGpL,CAAC,IAAK;MAChB,IAAIA,CAAC,CAAC2J,GAAG,KAAK,OAAO,IAAI3J,CAAC,CAAC2J,GAAG,KAAK,GAAG,EAAE;QACtC3J,CAAC,CAAC0I,cAAc,CAAC,CAAC;QAClB1C,SAAS,CAAC,CAAC;MACb;IACF,CAAE;IACFvC,UAAU,EAAEwH,WAAY;IACxBpB,EAAE,EAAE;MACFwB,MAAM,EAAEzH,QAAQ,GAAG,aAAa,GAAG,SAAS;MAC5C,SAAS,EAAE;QAAEyH,MAAM,EAAEzH,QAAQ,GAAG,aAAa,GAAG;MAAU;IAC5D,CAAE;IACF0H,OAAO,eACL,IAAAvL,WAAA,CAAAwL,IAAA,EAAC1M,IAAA,CAAAqB,OAAG;MACF2J,EAAE,EAAE;QAAEC,OAAO,EAAE,aAAa;QAAE0B,UAAU,EAAE,QAAQ;QAAExB,GAAG,EAAE;MAAa,CAAE;MAAAC,QAAA,GAEvEe,SAAS,iBACR,IAAAjL,WAAA,CAAA8C,GAAA,EAAC9D,WAAA,CAAAmB,OAAU;QACTuL,IAAI,EAAC,QAAQ;QACbxH,IAAI,EAAC,OAAO;QACZ6G,OAAO,EAAE5B,WAAY;QACrB,cAAY1D,CAAC,CAAClE,SAAU;QACxBoK,IAAI,EAAC,KAAK;QACV7B,EAAE,EAAE;UAAE8B,KAAK,EAAE;QAAmB,CAAE;QAAA1B,QAAA,eAElC,IAAAlK,WAAA,CAAA8C,GAAA,EAAC5D,MAAA,CAAAiB,OAAS;UAAC0L,QAAQ,EAAC;QAAO,CAAE;MAAC,CACpB,CACb,eACD,IAAA7L,WAAA,CAAA8C,GAAA,EAAC9D,WAAA,CAAAmB,OAAU;QACTuL,IAAI,EAAC,QAAQ;QACbxH,IAAI,EAAC,OAAO;QACZ6G,OAAO,EAAG9K,CAAC,IAAK;UACdA,CAAC,CAACmJ,eAAe,CAAC,CAAC;UACnBnD,SAAS,CAAC,CAAC;QACb,CAAE;QACF,cAAYR,CAAC,CAACnE,UAAW;QACzBqK,IAAI,EAAC,KAAK;QACV9H,QAAQ,EAAEA,QAAS;QACnBiG,EAAE,EAAE;UAAE8B,KAAK,EAAE;QAAgB,CAAE;QAAA1B,QAAA,eAE/B,IAAAlK,WAAA,CAAA8C,GAAA,EAAC7D,OAAA,CAAAkB,OAAU;UAAC0L,QAAQ,EAAC;QAAO,CAAE;MAAC,CACrB,CAAC;IAAA,CACV;EACN,CACF,CACF;;EAED;EACA,MAAMC,WAAW,GAAGtH,QAAQ,CAACgE,MAAM,GAAG,CAAC,iBACrC,IAAAxI,WAAA,CAAAwL,IAAA,EAAC1M,IAAA,CAAAqB,OAAG;IACF4L,SAAS,EAAC,MAAM;IAChBC,QAAQ,EAAEtD,gBAAiB;IAC3BoB,EAAE,EAAE;MACFC,OAAO,EAAE,MAAM;MACfE,GAAG,EAAE,YAAY;MACjBgC,mBAAmB,EAAE;QACnBC,EAAE,EAAE,KAAK;QACTC,EAAE,EAAE3H,QAAQ,CAACgE,MAAM,GAAG,CAAC,GAAG,SAAS,GAAG,KAAK;QAC3C4D,EAAE,EAAE,UAAUC,IAAI,CAACC,GAAG,CAAC9H,QAAQ,CAACgE,MAAM,EAAE,CAAC,CAAC;MAC5C,CAAC;MACDiD,UAAU,EAAE,KAAK;MACjBc,YAAY,EAAE;IAChB,CAAE;IAAArC,QAAA,GAED1F,QAAQ,CAAC4F,GAAG,CAAE1H,CAAC,iBACd,IAAA1C,WAAA,CAAA8C,GAAA,EAAC3D,MAAA,CAAAgB,OAAK;MAAckK,KAAK,EAAE3H,CAAC,CAAC2H,KAAM;MAACmC,IAAI,EAAE9J,CAAC,CAAC8J,IAAK;MAAAtC,QAAA,EAC9CzH,oBAAoB,CAACC,CAAC,EAAEkE,KAAK,CAAClE,CAAC,CAACa,IAAI,CAAC,EAAGR,IAAI,IAC3C8D,QAAQ,CAAE4F,CAAC,KAAM;QAAE,GAAGA,CAAC;QAAE,CAAC/J,CAAC,CAACa,IAAI,GAAGR;MAAK,CAAC,CAAC,CAC5C;IAAC,GAHSL,CAAC,CAACa,IAIP,CACR,CAAC,eACF,IAAAvD,WAAA,CAAA8C,GAAA,EAAChE,IAAA,CAAAqB,OAAG;MAAC2J,EAAE,EAAE;QAAEC,OAAO,EAAE,MAAM;QAAE2C,cAAc,EAAE;MAAW,CAAE;MAAAxC,QAAA,eACvD,IAAAlK,WAAA,CAAA8C,GAAA,EAACvD,OAAA,CAAAY,OAAM;QAACwK,OAAO,EAAC,SAAS;QAACe,IAAI,EAAC,QAAQ;QAACvI,OAAO,EAAEA,OAAQ;QAAA+G,QAAA,EACtDzE,CAAC,CAAC/D;MAAY,CACT;IAAC,CACN,CAAC;EAAA,CACH,CACN;EAED,MAAMiL,WAAW,gBACf,IAAA3M,WAAA,CAAA8C,GAAA,EAAChE,IAAA,CAAAqB,OAAG;IAAC,aAAU,QAAQ;IAAC,eAAY,MAAM;IAACyM,SAAS,EAAC,aAAa;IAAA1C,QAAA,EAC/DzC,WAAW,IAAI,CAACtE,OAAO,IAAI,CAACoE,KAAK,GAAG9B,CAAC,CAAC9D,cAAc,CAACyF,KAAK,CAAC,GAAG;EAAE,CAC9D,CACN;EAED,MAAMyF,aAAa,GAAGlO,KAAK,CAAC+G,OAAO,CAAM,MAAM;IAC7C,IAAI,CAACX,kBAAkB,IAAI,CAAC4C,gBAAgB,EAAE,OAAOT,KAAK;IAC1D,MAAM4F,SAAS,GAAGhI,QAAQ,CAAC6C,gBAAgB,CAAC;IAC5C,OAAOT,KAAK,CAACkD,GAAG,CAAE9J,CAAC,IACjBwE,QAAQ,CAACxE,CAAC,CAAC,KAAKwM,SAAS,GAAG;MAAE,GAAGxM,CAAC;MAAEyM,SAAS,EAAE;IAAK,CAAC,GAAGzM,CAC1D,CAAC;IACD;EACF,CAAC,EAAE,CAAC4G,KAAK,EAAES,gBAAgB,EAAE5C,kBAAkB,CAAC,CAAC;;EAEjD;EACA,MAAMiI,MAAM,gBACV,IAAAhN,WAAA,CAAAwL,IAAA,EAAAxL,WAAA,CAAAiN,QAAA;IAAA/C,QAAA,gBACE,IAAAlK,WAAA,CAAA8C,GAAA,EAACvD,OAAA,CAAAY,OAAM;MAACwK,OAAO,EAAC,OAAO;MAACI,OAAO,EAAE5E,UAAW;MAAA+D,QAAA,EACzCzE,CAAC,CAACjE;IAAW,CACR,CAAC,EACRuD,kBAAkB,iBACjB,IAAA/E,WAAA,CAAA8C,GAAA,EAACvD,OAAA,CAAAY,OAAM;MACLwK,OAAO,EAAC,SAAS;MACjB9G,QAAQ,EAAE,CAAC8D,gBAAiB;MAC5BoD,OAAO,EAAE7B,sBAAuB;MAAAgB,QAAA,EAE/BzE,CAAC,CAAChE;IAAY,CACT,CACT;EAAA,CACD,CACH;;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAMyL,UAAU,gBACd,IAAAlN,WAAA,CAAAwL,IAAA,EAAAxL,WAAA,CAAAiN,QAAA;IAAA/C,QAAA,GACG4B,WAAW,EACXa,WAAW,eACZ,IAAA3M,WAAA,CAAA8C,GAAA,EAACnD,SAAA,CAAAQ,OAAQ;MACPgN,IAAI,EAAEN,aAAc;MACpBnI,OAAO,EAAEA,OAAQ;MACjBvB,OAAO,EAAEA,OAAQ;MACjBoE,KAAK,EAAEA,KAAM;MACb6F,UAAU,EAAEnE,cAAe;MAC3BwB,UAAU,EAAEA,UAAW;MACvB3F,QAAQ,EAAEA,QAAS;MACnBuI,UAAU,EAAE3C,YAAa;MACzB4C,kBAAkB,EAAE1C,aAAc;MAClCC,UAAU,EAAEA,UAAW;MACvB0C,QAAQ,EAAE9F,WAAY;MACtBrC,gBAAgB,EAAG7C,GAAG,IAAKsH,mBAAmB,CAACtH,GAAG,CAAE;MACpD8C,gBAAgB,EAAEA,gBAAiB;MAAA,IAC9BL,IAAI,KAAK1B,SAAS,GAAG;QAAE0B;MAAK,CAAC,GAAG,CAAC,CAAC;MAAA,IAClCC,YAAY,KAAK3B,SAAS,GAAG;QAAE2B;MAAa,CAAC,GAAG,CAAC,CAAC;MAAA,IAClDE,MAAM,KAAK7B,SAAS,GAAG;QAAE6B;MAAO,CAAC,GAAG,CAAC,CAAC;MAAA,IACtCJ,kBAAkB,IAAI4C,gBAAgB,GACvC;QAAE6F,UAAU,EAAE1I,QAAQ,CAAC6C,gBAAgB;MAAE,CAAC,GAC1C,CAAC,CAAC;IAAA,CACP,CAAC;EAAA,CACF,CACH;EAED,oBACE,IAAA3H,WAAA,CAAAwL,IAAA,EAAAxL,WAAA,CAAAiN,QAAA;IAAA/C,QAAA,GACGiB,OAAO,EACP/G,SAAS,KAAK,QAAQ;IAAA;IACrB;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACQ,IAAApE,WAAA,CAAA8C,GAAA,EAACpD,OAAA,CAAAS,OAAM;MACLyF,IAAI,EAAEA,IAAK;MACX6H,OAAO,EAAEtH,UAAW;MACpBnC,KAAK,EAAEA,KAAM;MAAA,IACRC,QAAQ,KAAKX,SAAS,GAAG;QAAEW;MAAS,CAAC,GAAG,CAAC,CAAC;MAAA,IAC1CI,WAAW,KAAKf,SAAS,GAAG;QAAEoK,KAAK,EAAErJ;MAAY,CAAC,GAAG,CAAC,CAAC;MAC5DsJ,OAAO,EAAEX,MAAO;MAAA9C,QAAA,EAEfgD;IAAU,CACL,CAAC,gBAET,IAAAlN,WAAA,CAAA8C,GAAA,EAACrD,MAAA,CAAAU,OAAK;MACJyF,IAAI,EAAEA,IAAK;MACX6H,OAAO,EAAEtH,UAAW;MACpBnC,KAAK,EAAEA,KAAM;MACbC,QAAQ,EAAEA,QAAS;MACnBC,IAAI,EAAEA,IAAK;MACX8I,MAAM,EAAEA,MAAO;MAAA,GACX7I,UAAU;MAAA+F,QAAA,EAEbgD;IAAU,CACN,CACR;EAAA,CACD,CAAC;AAEP;AAAC,IAAAU,QAAA,GAAAC,OAAA,CAAA1N,OAAA,GAEcwD,gBAAgB","ignoreList":[]}
|
|
@@ -58,6 +58,12 @@ import type { RowId } from "../types/common";
|
|
|
58
58
|
* `aria-label` is therefore ALWAYS supplied, which also stops Tooltip from
|
|
59
59
|
* mirroring its title onto the trigger and producing a doubled name.
|
|
60
60
|
*
|
|
61
|
+
* P-6: labels go through `mergeLabels` rather than an object spread, so a
|
|
62
|
+
* caller passing an explicit `undefined` for one label falls back to the
|
|
63
|
+
* default instead of deleting it. A spread would leave this icon-only button
|
|
64
|
+
* with no accessible name at all — reachable by accident whenever an i18n
|
|
65
|
+
* lookup misses in non-throwing mode.
|
|
66
|
+
*
|
|
61
67
|
* Requires a <UserPersonalizationProvider> ancestor (`useIsFavorite` throws
|
|
62
68
|
* otherwise). `rowId` MUST be the same id the grid uses, so the follow and the
|
|
63
69
|
* row agree.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RowFavoriteToggle.d.ts","sourceRoot":"","sources":["../../../src/lib/v2/patterns/RowFavoriteToggle.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,cAAc,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"RowFavoriteToggle.d.ts","sourceRoot":"","sources":["../../../src/lib/v2/patterns/RowFavoriteToggle.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,cAAc,MAAM,8BAA8B,CAAC;AAI1D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkEG;AAEH,0EAA0E;AAC1E,MAAM,MAAM,kBAAkB,GAAG,WAAW,CAC1C,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CACpD,CAAC;AAEF,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,2BAA2B;;;;;EAKJ,CAAC;AAErC,MAAM,WAAW,sBAAsB;IACrC,4EAA4E;IAC5E,WAAW,EAAE,MAAM,CAAC;IACpB,sEAAsE;IACtE,KAAK,EAAE,KAAK,CAAC;IACb,sEAAsE;IACtE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,8DAA8D;IAC9D,IAAI,CAAC,EAAE,kBAAkB,GAAG,SAAS,CAAC;IACtC,MAAM,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,GAAG,SAAS,CAAC;CACvD;AAED,iBAAS,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAuC3E;AAED,eAAe,iBAAiB,CAAC"}
|
|
@@ -3,21 +3,16 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports
|
|
6
|
+
exports.default = exports.DEFAULT_ROW_FAVORITE_LABELS = void 0;
|
|
7
7
|
var React = _interopRequireWildcard(require("react"));
|
|
8
8
|
var _FavoriteToggle = _interopRequireDefault(require("../components/FavoriteToggle"));
|
|
9
9
|
var _Tooltip = _interopRequireDefault(require("../components/Tooltip"));
|
|
10
10
|
var _favorites = require("../personalization/capabilities/favorites");
|
|
11
|
+
var _mergeLabels = require("../utils/mergeLabels");
|
|
11
12
|
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); } /**
|
|
13
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
|
+
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); }
|
|
15
|
+
/**
|
|
21
16
|
* RowFavoriteToggle — Portnet UI v2 (pattern)
|
|
22
17
|
*
|
|
23
18
|
* A store-connected follow star for ONE row. Reads `useIsFavorite`, renders
|
|
@@ -74,43 +69,56 @@ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input ==
|
|
|
74
69
|
* `aria-label` is therefore ALWAYS supplied, which also stops Tooltip from
|
|
75
70
|
* mirroring its title onto the trigger and producing a doubled name.
|
|
76
71
|
*
|
|
72
|
+
* P-6: labels go through `mergeLabels` rather than an object spread, so a
|
|
73
|
+
* caller passing an explicit `undefined` for one label falls back to the
|
|
74
|
+
* default instead of deleting it. A spread would leave this icon-only button
|
|
75
|
+
* with no accessible name at all — reachable by accident whenever an i18n
|
|
76
|
+
* lookup misses in non-throwing mode.
|
|
77
|
+
*
|
|
77
78
|
* Requires a <UserPersonalizationProvider> ancestor (`useIsFavorite` throws
|
|
78
79
|
* otherwise). `rowId` MUST be the same id the grid uses, so the follow and the
|
|
79
80
|
* row agree.
|
|
80
|
-
*/
|
|
81
|
-
|
|
81
|
+
*/
|
|
82
|
+
|
|
83
|
+
/** `FavoriteToggle`'s own size union, re-derived rather than restated. */
|
|
84
|
+
|
|
85
|
+
const DEFAULT_ROW_FAVORITE_LABELS = exports.DEFAULT_ROW_FAVORITE_LABELS = Object.freeze({
|
|
82
86
|
addFavorite: "Suivre",
|
|
83
87
|
removeFavorite: "Ne plus suivre",
|
|
84
88
|
statusFollowed: "Suivi",
|
|
85
89
|
statusNotFollowed: "Non suivi"
|
|
86
90
|
});
|
|
87
91
|
function RowFavoriteToggle(props) {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
size =
|
|
93
|
-
labels
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
92
|
+
const {
|
|
93
|
+
resourceKey,
|
|
94
|
+
rowId,
|
|
95
|
+
rowLabel,
|
|
96
|
+
size = "sm",
|
|
97
|
+
labels
|
|
98
|
+
} = props;
|
|
99
|
+
// P-6 — undefined-safe merge; a spread would let an explicit undefined
|
|
100
|
+
// delete a default and leave the button unnamed.
|
|
101
|
+
const L = (0, _mergeLabels.mergeLabels)(DEFAULT_ROW_FAVORITE_LABELS, labels);
|
|
102
|
+
const {
|
|
103
|
+
isFavorite,
|
|
104
|
+
toggle
|
|
105
|
+
} = (0, _favorites.useIsFavorite)(resourceKey, rowId);
|
|
106
|
+
const action = isFavorite ? L.removeFavorite : L.addFavorite;
|
|
107
|
+
const ariaLabel = rowLabel ? action + " : " + rowLabel : action;
|
|
108
|
+
const statusLabel = isFavorite ? L.statusFollowed : L.statusNotFollowed;
|
|
109
|
+
const handleChange = function handleChange(_next, e) {
|
|
102
110
|
// Don't let the toggle's click bubble to the row's onRowClick.
|
|
103
111
|
if (e && typeof e.stopPropagation === "function") e.stopPropagation();
|
|
104
112
|
toggle();
|
|
105
113
|
};
|
|
106
|
-
|
|
114
|
+
const handleKeyDown = function handleKeyDown(e) {
|
|
107
115
|
// Prevent row-level Enter/Space (onRowClick) from also firing; the
|
|
108
116
|
// button's own native activation is unaffected.
|
|
109
117
|
e.stopPropagation();
|
|
110
118
|
};
|
|
111
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Tooltip
|
|
119
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Tooltip.default, {
|
|
112
120
|
title: statusLabel,
|
|
113
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_FavoriteToggle
|
|
121
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_FavoriteToggle.default, {
|
|
114
122
|
pressed: isFavorite,
|
|
115
123
|
onChange: handleChange,
|
|
116
124
|
onKeyDown: handleKeyDown,
|
|
@@ -123,5 +131,5 @@ function RowFavoriteToggle(props) {
|
|
|
123
131
|
})
|
|
124
132
|
});
|
|
125
133
|
}
|
|
126
|
-
var _default = exports
|
|
134
|
+
var _default = exports.default = RowFavoriteToggle;
|
|
127
135
|
//# sourceMappingURL=RowFavoriteToggle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RowFavoriteToggle.js","names":["React","_interopRequireWildcard","require","_FavoriteToggle","_interopRequireDefault","_Tooltip","_favorites","_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","DEFAULT_ROW_FAVORITE_LABELS","exports","freeze","addFavorite","removeFavorite","statusFollowed","statusNotFollowed","RowFavoriteToggle","props","resourceKey","rowId","rowLabel","_props$size","size","labels","L","_useIsFavorite","useIsFavorite","isFavorite","toggle","action","ariaLabel","statusLabel","handleChange","_next","e","stopPropagation","handleKeyDown","jsx","title","children","pressed","onChange","onKeyDown","_default"],"sources":["../../../src/lib/v2/patterns/RowFavoriteToggle.tsx"],"sourcesContent":["import * as React from \"react\";\r\n\r\nimport FavoriteToggle from \"../components/FavoriteToggle\";\r\nimport Tooltip from \"../components/Tooltip\";\r\nimport { useIsFavorite } from \"../personalization/capabilities/favorites\";\r\nimport type { RowId } from \"../types/common\";\r\n\r\n/**\r\n * RowFavoriteToggle — Portnet UI v2 (pattern)\r\n *\r\n * A store-connected follow star for ONE row. Reads `useIsFavorite`, renders\r\n * `FavoriteToggle`, and stops its own click/keydown from reaching the row's\r\n * `onRowClick`.\r\n *\r\n * ─────────────────────────────────────────────────────────────────────────────\r\n * WHY THIS BELONGS IN THE LIBRARY (capability gap G-36)\r\n *\r\n * This exact component already existed — as `FavoriteCell`, private inside\r\n * `makeFavoriteColumn`. So the follow star was reachable in ONE context only:\r\n * as a DataGrid column. Every other place a row appears had to rebuild it.\r\n *\r\n * The place that always appears is the MOBILE CARD. `DataGrid` swaps to\r\n * `renderMobileCard` below its `mobileBreakpoint`, and `MobileRowCard` has a\r\n * `leading` slot precisely for a per-row control — but a column definition\r\n * cannot be rendered into a slot, so the host had to re-derive the star by\r\n * hand. Observed in `onssa-export-fe` as a local `MobileFavoriteToggle`, and\r\n * `ms-ti-fe` destructures the identical `MobileRowCard` + `FavoriteToggle` +\r\n * `useIsFavorite` trio for the same reason.\r\n *\r\n * This is the same failure mode G-10 recorded for the card recipe welded\r\n * inside `FormSection`: the library owned the behaviour but exposed it at only\r\n * one composition point, so consumers reimplemented it at the others. And it\r\n * was not a harmless copy — the local twin drifted on the part that matters\r\n * least visibly and most to a screen-reader user. It labelled itself\r\n * \"Ajouter aux favoris\" / \"Retirer des favoris\" while the grid column on the\r\n * SAME page said \"Suivre\" / \"Ne plus suivre\", and it omitted the status\r\n * Tooltip entirely. One list, one control, two accessible names, depending on\r\n * viewport width — exactly what R-2.1 forbids.\r\n *\r\n * `makeFavoriteColumn` now renders this component, so the desktop column and\r\n * the mobile card are guaranteed to agree by construction rather than by\r\n * review.\r\n * ─────────────────────────────────────────────────────────────────────────────\r\n *\r\n * Usage — mobile card `leading` slot:\r\n *\r\n * <MobileRowCard\r\n * leading={\r\n * <RowFavoriteToggle\r\n * resourceKey=\"ti:list\"\r\n * rowId={row.reference}\r\n * rowLabel={row.reference}\r\n * />\r\n * }\r\n * title={row.reference}\r\n * … />\r\n *\r\n * a11y. The accessible name is ACTION-oriented (\"Suivre\" / \"Ne plus suivre\",\r\n * optionally enriched with `rowLabel`) because that is the toggle convention;\r\n * `aria-pressed` — set by `FavoriteToggle` — carries the state. The visible\r\n * status (\"Suivi\" / \"Non suivi\") is shown as a Tooltip on hover/focus. An\r\n * `aria-label` is therefore ALWAYS supplied, which also stops Tooltip from\r\n * mirroring its title onto the trigger and producing a doubled name.\r\n *\r\n * Requires a <UserPersonalizationProvider> ancestor (`useIsFavorite` throws\r\n * otherwise). `rowId` MUST be the same id the grid uses, so the follow and the\r\n * row agree.\r\n */\r\n\r\n/** `FavoriteToggle`'s own size union, re-derived rather than restated. */\r\nexport type FavoriteToggleSize = NonNullable<\r\n React.ComponentProps<typeof FavoriteToggle>[\"size\"]\r\n>;\r\n\r\nexport interface RowFavoriteToggleLabels {\r\n addFavorite: string;\r\n removeFavorite: string;\r\n statusFollowed: string;\r\n statusNotFollowed: string;\r\n}\r\n\r\nexport const DEFAULT_ROW_FAVORITE_LABELS = Object.freeze({\r\n addFavorite: \"Suivre\",\r\n removeFavorite: \"Ne plus suivre\",\r\n statusFollowed: \"Suivi\",\r\n statusNotFollowed: \"Non suivi\",\r\n} satisfies RowFavoriteToggleLabels);\r\n\r\nexport interface RowFavoriteToggleProps {\r\n /** Follow namespace — must match the list's other personalization calls. */\r\n resourceKey: string;\r\n /** Business row id. MUST match the grid's `getRowId` for this row. */\r\n rowId: RowId;\r\n /** Enriches the per-row accessible name (\"Suivre : 2025-IM-0042\"). */\r\n rowLabel?: string | undefined;\r\n /** @default \"sm\" — fits dense rows and card leading slots. */\r\n size?: FavoriteToggleSize | undefined;\r\n labels?: Partial<RowFavoriteToggleLabels> | undefined;\r\n}\r\n\r\nfunction RowFavoriteToggle(props: RowFavoriteToggleProps): React.JSX.Element {\r\n const { resourceKey, rowId, rowLabel, size = \"sm\", labels } = props;\r\n const L: RowFavoriteToggleLabels = labels\r\n ? { ...DEFAULT_ROW_FAVORITE_LABELS, ...labels }\r\n : DEFAULT_ROW_FAVORITE_LABELS;\r\n\r\n const { isFavorite, toggle } = useIsFavorite(resourceKey, rowId);\r\n\r\n const action = isFavorite ? L.removeFavorite : L.addFavorite;\r\n const ariaLabel = rowLabel ? action + \" : \" + rowLabel : action;\r\n const statusLabel = isFavorite ? L.statusFollowed : L.statusNotFollowed;\r\n\r\n const handleChange: NonNullable<\r\n React.ComponentProps<typeof FavoriteToggle>[\"onChange\"]\r\n > = function handleChange(_next, e) {\r\n // Don't let the toggle's click bubble to the row's onRowClick.\r\n if (e && typeof e.stopPropagation === \"function\") e.stopPropagation();\r\n toggle();\r\n };\r\n const handleKeyDown: NonNullable<\r\n React.ComponentProps<typeof FavoriteToggle>[\"onKeyDown\"]\r\n > = function handleKeyDown(e) {\r\n // Prevent row-level Enter/Space (onRowClick) from also firing; the\r\n // button's own native activation is unaffected.\r\n e.stopPropagation();\r\n };\r\n\r\n return (\r\n <Tooltip title={statusLabel}>\r\n <FavoriteToggle\r\n pressed={isFavorite}\r\n onChange={handleChange}\r\n onKeyDown={handleKeyDown}\r\n size={size}\r\n labels={{ addFavorite: L.addFavorite, removeFavorite: L.removeFavorite }}\r\n aria-label={ariaLabel}\r\n />\r\n </Tooltip>\r\n );\r\n}\r\n\r\nexport default RowFavoriteToggle;\r\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"RowFavoriteToggle.js","names":["React","_interopRequireWildcard","require","_FavoriteToggle","_interopRequireDefault","_Tooltip","_favorites","_mergeLabels","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","DEFAULT_ROW_FAVORITE_LABELS","exports","freeze","addFavorite","removeFavorite","statusFollowed","statusNotFollowed","RowFavoriteToggle","props","resourceKey","rowId","rowLabel","size","labels","L","mergeLabels","isFavorite","toggle","useIsFavorite","action","ariaLabel","statusLabel","handleChange","_next","stopPropagation","handleKeyDown","jsx","title","children","pressed","onChange","onKeyDown","_default"],"sources":["../../../src/lib/v2/patterns/RowFavoriteToggle.tsx"],"sourcesContent":["import * as React from \"react\";\r\n\r\nimport FavoriteToggle from \"../components/FavoriteToggle\";\r\nimport Tooltip from \"../components/Tooltip\";\r\nimport { useIsFavorite } from \"../personalization/capabilities/favorites\";\r\nimport { mergeLabels } from \"../utils/mergeLabels\";\r\nimport type { RowId } from \"../types/common\";\r\n\r\n/**\r\n * RowFavoriteToggle — Portnet UI v2 (pattern)\r\n *\r\n * A store-connected follow star for ONE row. Reads `useIsFavorite`, renders\r\n * `FavoriteToggle`, and stops its own click/keydown from reaching the row's\r\n * `onRowClick`.\r\n *\r\n * ─────────────────────────────────────────────────────────────────────────────\r\n * WHY THIS BELONGS IN THE LIBRARY (capability gap G-36)\r\n *\r\n * This exact component already existed — as `FavoriteCell`, private inside\r\n * `makeFavoriteColumn`. So the follow star was reachable in ONE context only:\r\n * as a DataGrid column. Every other place a row appears had to rebuild it.\r\n *\r\n * The place that always appears is the MOBILE CARD. `DataGrid` swaps to\r\n * `renderMobileCard` below its `mobileBreakpoint`, and `MobileRowCard` has a\r\n * `leading` slot precisely for a per-row control — but a column definition\r\n * cannot be rendered into a slot, so the host had to re-derive the star by\r\n * hand. Observed in `onssa-export-fe` as a local `MobileFavoriteToggle`, and\r\n * `ms-ti-fe` destructures the identical `MobileRowCard` + `FavoriteToggle` +\r\n * `useIsFavorite` trio for the same reason.\r\n *\r\n * This is the same failure mode G-10 recorded for the card recipe welded\r\n * inside `FormSection`: the library owned the behaviour but exposed it at only\r\n * one composition point, so consumers reimplemented it at the others. And it\r\n * was not a harmless copy — the local twin drifted on the part that matters\r\n * least visibly and most to a screen-reader user. It labelled itself\r\n * \"Ajouter aux favoris\" / \"Retirer des favoris\" while the grid column on the\r\n * SAME page said \"Suivre\" / \"Ne plus suivre\", and it omitted the status\r\n * Tooltip entirely. One list, one control, two accessible names, depending on\r\n * viewport width — exactly what R-2.1 forbids.\r\n *\r\n * `makeFavoriteColumn` now renders this component, so the desktop column and\r\n * the mobile card are guaranteed to agree by construction rather than by\r\n * review.\r\n * ─────────────────────────────────────────────────────────────────────────────\r\n *\r\n * Usage — mobile card `leading` slot:\r\n *\r\n * <MobileRowCard\r\n * leading={\r\n * <RowFavoriteToggle\r\n * resourceKey=\"ti:list\"\r\n * rowId={row.reference}\r\n * rowLabel={row.reference}\r\n * />\r\n * }\r\n * title={row.reference}\r\n * … />\r\n *\r\n * a11y. The accessible name is ACTION-oriented (\"Suivre\" / \"Ne plus suivre\",\r\n * optionally enriched with `rowLabel`) because that is the toggle convention;\r\n * `aria-pressed` — set by `FavoriteToggle` — carries the state. The visible\r\n * status (\"Suivi\" / \"Non suivi\") is shown as a Tooltip on hover/focus. An\r\n * `aria-label` is therefore ALWAYS supplied, which also stops Tooltip from\r\n * mirroring its title onto the trigger and producing a doubled name.\r\n *\r\n * P-6: labels go through `mergeLabels` rather than an object spread, so a\r\n * caller passing an explicit `undefined` for one label falls back to the\r\n * default instead of deleting it. A spread would leave this icon-only button\r\n * with no accessible name at all — reachable by accident whenever an i18n\r\n * lookup misses in non-throwing mode.\r\n *\r\n * Requires a <UserPersonalizationProvider> ancestor (`useIsFavorite` throws\r\n * otherwise). `rowId` MUST be the same id the grid uses, so the follow and the\r\n * row agree.\r\n */\r\n\r\n/** `FavoriteToggle`'s own size union, re-derived rather than restated. */\r\nexport type FavoriteToggleSize = NonNullable<\r\n React.ComponentProps<typeof FavoriteToggle>[\"size\"]\r\n>;\r\n\r\nexport interface RowFavoriteToggleLabels {\r\n addFavorite: string;\r\n removeFavorite: string;\r\n statusFollowed: string;\r\n statusNotFollowed: string;\r\n}\r\n\r\nexport const DEFAULT_ROW_FAVORITE_LABELS = Object.freeze({\r\n addFavorite: \"Suivre\",\r\n removeFavorite: \"Ne plus suivre\",\r\n statusFollowed: \"Suivi\",\r\n statusNotFollowed: \"Non suivi\",\r\n} satisfies RowFavoriteToggleLabels);\r\n\r\nexport interface RowFavoriteToggleProps {\r\n /** Follow namespace — must match the list's other personalization calls. */\r\n resourceKey: string;\r\n /** Business row id. MUST match the grid's `getRowId` for this row. */\r\n rowId: RowId;\r\n /** Enriches the per-row accessible name (\"Suivre : 2025-IM-0042\"). */\r\n rowLabel?: string | undefined;\r\n /** @default \"sm\" — fits dense rows and card leading slots. */\r\n size?: FavoriteToggleSize | undefined;\r\n labels?: Partial<RowFavoriteToggleLabels> | undefined;\r\n}\r\n\r\nfunction RowFavoriteToggle(props: RowFavoriteToggleProps): React.JSX.Element {\r\n const { resourceKey, rowId, rowLabel, size = \"sm\", labels } = props;\r\n // P-6 — undefined-safe merge; a spread would let an explicit undefined\r\n // delete a default and leave the button unnamed.\r\n const L: RowFavoriteToggleLabels = mergeLabels(DEFAULT_ROW_FAVORITE_LABELS, labels);\r\n\r\n const { isFavorite, toggle } = useIsFavorite(resourceKey, rowId);\r\n\r\n const action = isFavorite ? L.removeFavorite : L.addFavorite;\r\n const ariaLabel = rowLabel ? action + \" : \" + rowLabel : action;\r\n const statusLabel = isFavorite ? L.statusFollowed : L.statusNotFollowed;\r\n\r\n const handleChange: NonNullable<\r\n React.ComponentProps<typeof FavoriteToggle>[\"onChange\"]\r\n > = function handleChange(_next, e) {\r\n // Don't let the toggle's click bubble to the row's onRowClick.\r\n if (e && typeof e.stopPropagation === \"function\") e.stopPropagation();\r\n toggle();\r\n };\r\n const handleKeyDown: NonNullable<\r\n React.ComponentProps<typeof FavoriteToggle>[\"onKeyDown\"]\r\n > = function handleKeyDown(e) {\r\n // Prevent row-level Enter/Space (onRowClick) from also firing; the\r\n // button's own native activation is unaffected.\r\n e.stopPropagation();\r\n };\r\n\r\n return (\r\n <Tooltip title={statusLabel}>\r\n <FavoriteToggle\r\n pressed={isFavorite}\r\n onChange={handleChange}\r\n onKeyDown={handleKeyDown}\r\n size={size}\r\n labels={{ addFavorite: L.addFavorite, removeFavorite: L.removeFavorite }}\r\n aria-label={ariaLabel}\r\n />\r\n </Tooltip>\r\n );\r\n}\r\n\r\nexport default RowFavoriteToggle;\r\n"],"mappings":"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","ignoreList":[]}
|