@portnet/ui 6.0.0 → 6.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +85 -0
- package/dist/esm/index.js +214 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/v2/__tests__/FieldError.test.js +159 -0
- package/dist/esm/v2/__tests__/FieldError.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FieldWidth.test.js +146 -0
- package/dist/esm/v2/__tests__/FieldWidth.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FileCard.test.js +143 -0
- package/dist/esm/v2/__tests__/FileCard.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FormikCheckbox.test.js +265 -0
- package/dist/esm/v2/__tests__/FormikCheckbox.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js +248 -0
- package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FormikRadioGroup.test.js +380 -0
- package/dist/esm/v2/__tests__/FormikRadioGroup.test.js.map +1 -0
- package/dist/esm/v2/__tests__/MobileRowCard.test.js +332 -0
- package/dist/esm/v2/__tests__/MobileRowCard.test.js.map +1 -0
- package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js +235 -0
- package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js.map +1 -0
- package/dist/esm/v2/__tests__/apiError.test.js +181 -0
- package/dist/esm/v2/__tests__/apiError.test.js.map +1 -0
- package/dist/esm/v2/__tests__/banned-patterns.test.js +270 -0
- package/dist/esm/v2/__tests__/banned-patterns.test.js.map +1 -0
- package/dist/esm/v2/__tests__/contrast-palette.test.js +224 -0
- package/dist/esm/v2/__tests__/contrast-palette.test.js.map +1 -0
- package/dist/esm/v2/__tests__/cssVariables.test.js +157 -0
- package/dist/esm/v2/__tests__/cssVariables.test.js.map +1 -0
- package/dist/esm/v2/__tests__/labels-merge.test.js +146 -0
- package/dist/esm/v2/__tests__/labels-merge.test.js.map +1 -0
- package/dist/esm/v2/__tests__/locale-fallback.test.js +109 -0
- package/dist/esm/v2/__tests__/locale-fallback.test.js.map +1 -0
- package/dist/esm/v2/__tests__/useFocusTrap.test.js +514 -0
- package/dist/esm/v2/__tests__/useFocusTrap.test.js.map +1 -0
- package/dist/esm/v2/components/Accordion.js +230 -0
- package/dist/esm/v2/components/Accordion.js.map +1 -0
- package/dist/esm/v2/components/ActionStrip.js +146 -0
- package/dist/esm/v2/components/ActionStrip.js.map +1 -0
- package/dist/esm/v2/components/Banner.js +254 -0
- package/dist/esm/v2/components/Banner.js.map +1 -0
- package/dist/esm/v2/components/Busy.js +97 -0
- package/dist/esm/v2/components/Busy.js.map +1 -0
- package/dist/esm/v2/components/Button.js +114 -0
- package/dist/esm/v2/components/Button.js.map +1 -0
- package/dist/esm/v2/components/CategoryTag.js +81 -0
- package/dist/esm/v2/components/CategoryTag.js.map +1 -0
- package/dist/esm/v2/components/Checkbox.js +124 -0
- package/dist/esm/v2/components/Checkbox.js.map +1 -0
- package/dist/esm/v2/components/Chip.js +124 -0
- package/dist/esm/v2/components/Chip.js.map +1 -0
- package/dist/esm/v2/components/Combobox.js +394 -0
- package/dist/esm/v2/components/Combobox.js.map +1 -0
- package/dist/esm/v2/components/CommandPalette.js +660 -0
- package/dist/esm/v2/components/CommandPalette.js.map +1 -0
- package/dist/esm/v2/components/ConfirmDialog.js +144 -0
- package/dist/esm/v2/components/ConfirmDialog.js.map +1 -0
- package/dist/esm/v2/components/DatePicker.js +200 -0
- package/dist/esm/v2/components/DatePicker.js.map +1 -0
- package/dist/esm/v2/components/DateRangePicker.js +289 -0
- package/dist/esm/v2/components/DateRangePicker.js.map +1 -0
- package/dist/esm/v2/components/DateTimePicker.js +215 -0
- package/dist/esm/v2/components/DateTimePicker.js.map +1 -0
- package/dist/esm/v2/components/Drawer.js +333 -0
- package/dist/esm/v2/components/Drawer.js.map +1 -0
- package/dist/esm/v2/components/Dropzone.js +540 -0
- package/dist/esm/v2/components/Dropzone.js.map +1 -0
- package/dist/esm/v2/components/EmptyState.js +102 -0
- package/dist/esm/v2/components/EmptyState.js.map +1 -0
- package/dist/esm/v2/components/FavoriteToggle.js +127 -0
- package/dist/esm/v2/components/FavoriteToggle.js.map +1 -0
- package/dist/esm/v2/components/Field.js +259 -0
- package/dist/esm/v2/components/Field.js.map +1 -0
- package/dist/esm/v2/components/FieldError.js +124 -0
- package/dist/esm/v2/components/FieldError.js.map +1 -0
- package/dist/esm/v2/components/FieldHelp.js +202 -0
- package/dist/esm/v2/components/FieldHelp.js.map +1 -0
- package/dist/esm/v2/components/FileCard.js +162 -0
- package/dist/esm/v2/components/FileCard.js.map +1 -0
- package/dist/esm/v2/components/FilterTab.js +138 -0
- package/dist/esm/v2/components/FilterTab.js.map +1 -0
- package/dist/esm/v2/components/ForbiddenPage.js +74 -0
- package/dist/esm/v2/components/ForbiddenPage.js.map +1 -0
- package/dist/esm/v2/components/FormGrid.js +179 -0
- package/dist/esm/v2/components/FormGrid.js.map +1 -0
- package/dist/esm/v2/components/FormikDisplay.js +118 -0
- package/dist/esm/v2/components/FormikDisplay.js.map +1 -0
- package/dist/esm/v2/components/Input.js +107 -0
- package/dist/esm/v2/components/Input.js.map +1 -0
- package/dist/esm/v2/components/KPICard.js +237 -0
- package/dist/esm/v2/components/KPICard.js.map +1 -0
- package/dist/esm/v2/components/KPIStrip.js +84 -0
- package/dist/esm/v2/components/KPIStrip.js.map +1 -0
- package/dist/esm/v2/components/KV.js +75 -0
- package/dist/esm/v2/components/KV.js.map +1 -0
- package/dist/esm/v2/components/KVGrid.js +74 -0
- package/dist/esm/v2/components/KVGrid.js.map +1 -0
- package/dist/esm/v2/components/Layout.js +284 -0
- package/dist/esm/v2/components/Layout.js.map +1 -0
- package/dist/esm/v2/components/MobileRowCard.js +314 -0
- package/dist/esm/v2/components/MobileRowCard.js.map +1 -0
- package/dist/esm/v2/components/Modal.js +276 -0
- package/dist/esm/v2/components/Modal.js.map +1 -0
- package/dist/esm/v2/components/NetworkErrorPage.js +78 -0
- package/dist/esm/v2/components/NetworkErrorPage.js.map +1 -0
- package/dist/esm/v2/components/NotFoundPage.js +58 -0
- package/dist/esm/v2/components/NotFoundPage.js.map +1 -0
- package/dist/esm/v2/components/NumberInput.js +309 -0
- package/dist/esm/v2/components/NumberInput.js.map +1 -0
- package/dist/esm/v2/components/OverflowMenu.js +184 -0
- package/dist/esm/v2/components/OverflowMenu.js.map +1 -0
- package/dist/esm/v2/components/PdfViewer.js +122 -0
- package/dist/esm/v2/components/PdfViewer.js.map +1 -0
- package/dist/esm/v2/components/ProgressBar.js +202 -0
- package/dist/esm/v2/components/ProgressBar.js.map +1 -0
- package/dist/esm/v2/components/Radio.js +228 -0
- package/dist/esm/v2/components/Radio.js.map +1 -0
- package/dist/esm/v2/components/SectionErrorBoundary.js +214 -0
- package/dist/esm/v2/components/SectionErrorBoundary.js.map +1 -0
- package/dist/esm/v2/components/SectionHeader.js +132 -0
- package/dist/esm/v2/components/SectionHeader.js.map +1 -0
- package/dist/esm/v2/components/Segmented.js +254 -0
- package/dist/esm/v2/components/Segmented.js.map +1 -0
- package/dist/esm/v2/components/Select.js +490 -0
- package/dist/esm/v2/components/Select.js.map +1 -0
- package/dist/esm/v2/components/ServerErrorPage.js +74 -0
- package/dist/esm/v2/components/ServerErrorPage.js.map +1 -0
- package/dist/esm/v2/components/Skeleton.js +269 -0
- package/dist/esm/v2/components/Skeleton.js.map +1 -0
- package/dist/esm/v2/components/SkipLink.js +49 -0
- package/dist/esm/v2/components/SkipLink.js.map +1 -0
- package/dist/esm/v2/components/Spinner.js +69 -0
- package/dist/esm/v2/components/Spinner.js.map +1 -0
- package/dist/esm/v2/components/Status.js +64 -0
- package/dist/esm/v2/components/Status.js.map +1 -0
- package/dist/esm/v2/components/Stepper.js +432 -0
- package/dist/esm/v2/components/Stepper.js.map +1 -0
- package/dist/esm/v2/components/Surface.js +159 -0
- package/dist/esm/v2/components/Surface.js.map +1 -0
- package/dist/esm/v2/components/Switch.js +128 -0
- package/dist/esm/v2/components/Switch.js.map +1 -0
- package/dist/esm/v2/components/Tabs.js +150 -0
- package/dist/esm/v2/components/Tabs.js.map +1 -0
- package/dist/esm/v2/components/TelInput.js +274 -0
- package/dist/esm/v2/components/TelInput.js.map +1 -0
- package/dist/esm/v2/components/Textarea.js +72 -0
- package/dist/esm/v2/components/Textarea.js.map +1 -0
- package/dist/esm/v2/components/TimePicker.js +134 -0
- package/dist/esm/v2/components/TimePicker.js.map +1 -0
- package/dist/esm/v2/components/Toast.js +376 -0
- package/dist/esm/v2/components/Toast.js.map +1 -0
- package/dist/esm/v2/components/Tooltip.js +161 -0
- package/dist/esm/v2/components/Tooltip.js.map +1 -0
- package/dist/esm/v2/components/_ErrorPageBody.js +85 -0
- package/dist/esm/v2/components/_ErrorPageBody.js.map +1 -0
- package/dist/esm/v2/components/_pickerShared.js +60 -0
- package/dist/esm/v2/components/_pickerShared.js.map +1 -0
- package/dist/esm/v2/components/index.js +271 -0
- package/dist/esm/v2/components/index.js.map +1 -0
- package/dist/esm/v2/hooks/index.js +10 -0
- package/dist/esm/v2/hooks/index.js.map +1 -0
- package/dist/esm/v2/hooks/useDelayedFlag.js +55 -0
- package/dist/esm/v2/hooks/useDelayedFlag.js.map +1 -0
- package/dist/esm/v2/hooks/useDensity.js +119 -0
- package/dist/esm/v2/hooks/useDensity.js.map +1 -0
- package/dist/esm/v2/hooks/useFocusFirstError.js +197 -0
- package/dist/esm/v2/hooks/useFocusFirstError.js.map +1 -0
- package/dist/esm/v2/hooks/useFocusTrap.js +202 -0
- package/dist/esm/v2/hooks/useFocusTrap.js.map +1 -0
- package/dist/esm/v2/hooks/useFormAutoSave.js +181 -0
- package/dist/esm/v2/hooks/useFormAutoSave.js.map +1 -0
- package/dist/esm/v2/hooks/useFormCompletionProgress.js +131 -0
- package/dist/esm/v2/hooks/useFormCompletionProgress.js.map +1 -0
- package/dist/esm/v2/hooks/useResolvedDensity.js +44 -0
- package/dist/esm/v2/hooks/useResolvedDensity.js.map +1 -0
- package/dist/esm/v2/hooks/useSortedRows.js +32 -0
- package/dist/esm/v2/hooks/useSortedRows.js.map +1 -0
- package/dist/esm/v2/hooks/useTabLoading.js +79 -0
- package/dist/esm/v2/hooks/useTabLoading.js.map +1 -0
- package/dist/esm/v2/index.js +132 -0
- package/dist/esm/v2/index.js.map +1 -0
- package/dist/esm/v2/modalContext.js +108 -0
- package/dist/esm/v2/modalContext.js.map +1 -0
- package/dist/esm/v2/models/favorite.js +2 -0
- package/dist/esm/v2/models/favorite.js.map +1 -0
- package/dist/esm/v2/models/index.js +12 -0
- package/dist/esm/v2/models/index.js.map +1 -0
- package/dist/esm/v2/models/personalization.js +2 -0
- package/dist/esm/v2/models/personalization.js.map +1 -0
- package/dist/esm/v2/models/referentiel.js +2 -0
- package/dist/esm/v2/models/referentiel.js.map +1 -0
- package/dist/esm/v2/models/savedFilter.js +2 -0
- package/dist/esm/v2/models/savedFilter.js.map +1 -0
- package/dist/esm/v2/patterns/ActionBar.js +603 -0
- package/dist/esm/v2/patterns/ActionBar.js.map +1 -0
- package/dist/esm/v2/patterns/BulkActionBar.js +147 -0
- package/dist/esm/v2/patterns/BulkActionBar.js.map +1 -0
- package/dist/esm/v2/patterns/CollapsibleDataGrid.js +303 -0
- package/dist/esm/v2/patterns/CollapsibleDataGrid.js.map +1 -0
- package/dist/esm/v2/patterns/ColumnsToggle.js +301 -0
- package/dist/esm/v2/patterns/ColumnsToggle.js.map +1 -0
- package/dist/esm/v2/patterns/DataGrid.js +820 -0
- package/dist/esm/v2/patterns/DataGrid.js.map +1 -0
- package/dist/esm/v2/patterns/DataGridSettingsMenu.js +375 -0
- package/dist/esm/v2/patterns/DataGridSettingsMenu.js.map +1 -0
- package/dist/esm/v2/patterns/DataGridToolbar.js +249 -0
- package/dist/esm/v2/patterns/DataGridToolbar.js.map +1 -0
- package/dist/esm/v2/patterns/DataGridVirtualized.js +523 -0
- package/dist/esm/v2/patterns/DataGridVirtualized.js.map +1 -0
- package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js +70 -0
- package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -0
- package/dist/esm/v2/patterns/FavoriteColumn.js +117 -0
- package/dist/esm/v2/patterns/FavoriteColumn.js.map +1 -0
- package/dist/esm/v2/patterns/FavoritesFilter.js +91 -0
- package/dist/esm/v2/patterns/FavoritesFilter.js.map +1 -0
- package/dist/esm/v2/patterns/FormErrorSummary.js +101 -0
- package/dist/esm/v2/patterns/FormErrorSummary.js.map +1 -0
- package/dist/esm/v2/patterns/FormPageShell.js +126 -0
- package/dist/esm/v2/patterns/FormPageShell.js.map +1 -0
- package/dist/esm/v2/patterns/FormSection.js +190 -0
- package/dist/esm/v2/patterns/FormSection.js.map +1 -0
- package/dist/esm/v2/patterns/FormikCheckbox.js +140 -0
- package/dist/esm/v2/patterns/FormikCheckbox.js.map +1 -0
- package/dist/esm/v2/patterns/FormikCheckboxGroup.js +110 -0
- package/dist/esm/v2/patterns/FormikCheckboxGroup.js.map +1 -0
- package/dist/esm/v2/patterns/FormikCombobox.js +118 -0
- package/dist/esm/v2/patterns/FormikCombobox.js.map +1 -0
- package/dist/esm/v2/patterns/FormikDatePicker.js +162 -0
- package/dist/esm/v2/patterns/FormikDatePicker.js.map +1 -0
- package/dist/esm/v2/patterns/FormikDateTimePicker.js +150 -0
- package/dist/esm/v2/patterns/FormikDateTimePicker.js.map +1 -0
- package/dist/esm/v2/patterns/FormikErrorFocus.js +77 -0
- package/dist/esm/v2/patterns/FormikErrorFocus.js.map +1 -0
- package/dist/esm/v2/patterns/FormikFile.js +148 -0
- package/dist/esm/v2/patterns/FormikFile.js.map +1 -0
- package/dist/esm/v2/patterns/FormikInput.js +130 -0
- package/dist/esm/v2/patterns/FormikInput.js.map +1 -0
- package/dist/esm/v2/patterns/FormikRadioGroup.js +141 -0
- package/dist/esm/v2/patterns/FormikRadioGroup.js.map +1 -0
- package/dist/esm/v2/patterns/FormikReferentielField.js +116 -0
- package/dist/esm/v2/patterns/FormikReferentielField.js.map +1 -0
- package/dist/esm/v2/patterns/FormikSelect.js +162 -0
- package/dist/esm/v2/patterns/FormikSelect.js.map +1 -0
- package/dist/esm/v2/patterns/FormikTextarea.js +79 -0
- package/dist/esm/v2/patterns/FormikTextarea.js.map +1 -0
- package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js +212 -0
- package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js.map +1 -0
- package/dist/esm/v2/patterns/NetworkErrorBanner.js +72 -0
- package/dist/esm/v2/patterns/NetworkErrorBanner.js.map +1 -0
- package/dist/esm/v2/patterns/PageContent.js +62 -0
- package/dist/esm/v2/patterns/PageContent.js.map +1 -0
- package/dist/esm/v2/patterns/ReferentielField.js +615 -0
- package/dist/esm/v2/patterns/ReferentielField.js.map +1 -0
- package/dist/esm/v2/patterns/RowFavoriteToggle.js +122 -0
- package/dist/esm/v2/patterns/RowFavoriteToggle.js.map +1 -0
- package/dist/esm/v2/patterns/SaveFilterDialog.js +197 -0
- package/dist/esm/v2/patterns/SaveFilterDialog.js.map +1 -0
- package/dist/esm/v2/patterns/SavedFiltersMenu.js +406 -0
- package/dist/esm/v2/patterns/SavedFiltersMenu.js.map +1 -0
- package/dist/esm/v2/patterns/SkeletonPageShell.js +342 -0
- package/dist/esm/v2/patterns/SkeletonPageShell.js.map +1 -0
- package/dist/esm/v2/patterns/SortableHeader.js +179 -0
- package/dist/esm/v2/patterns/SortableHeader.js.map +1 -0
- package/dist/esm/v2/patterns/Tour.js +471 -0
- package/dist/esm/v2/patterns/Tour.js.map +1 -0
- package/dist/esm/v2/patterns/_dataGridShared.js +431 -0
- package/dist/esm/v2/patterns/_dataGridShared.js.map +1 -0
- package/dist/esm/v2/patterns/_pickerSerialisation.js +74 -0
- package/dist/esm/v2/patterns/_pickerSerialisation.js.map +1 -0
- package/dist/esm/v2/patterns/_sort.js +112 -0
- package/dist/esm/v2/patterns/_sort.js.map +1 -0
- package/dist/esm/v2/patterns/_useColumnReorder.js +257 -0
- package/dist/esm/v2/patterns/_useColumnReorder.js.map +1 -0
- package/dist/esm/v2/patterns/_useColumnResize.js +191 -0
- package/dist/esm/v2/patterns/_useColumnResize.js.map +1 -0
- package/dist/esm/v2/patterns/index.js +178 -0
- package/dist/esm/v2/patterns/index.js.map +1 -0
- package/dist/esm/v2/personalization/PersonalizationProvider.js +168 -0
- package/dist/esm/v2/personalization/PersonalizationProvider.js.map +1 -0
- package/dist/esm/v2/personalization/adapters/_storageKey.js +60 -0
- package/dist/esm/v2/personalization/adapters/_storageKey.js.map +1 -0
- package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js +124 -0
- package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -0
- package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js +70 -0
- package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js.map +1 -0
- package/dist/esm/v2/personalization/adapters/index.js +11 -0
- package/dist/esm/v2/personalization/adapters/index.js.map +1 -0
- package/dist/esm/v2/personalization/capabilities/favorites.js +216 -0
- package/dist/esm/v2/personalization/capabilities/favorites.js.map +1 -0
- package/dist/esm/v2/personalization/capabilities/favoritesView.js +111 -0
- package/dist/esm/v2/personalization/capabilities/favoritesView.js.map +1 -0
- package/dist/esm/v2/personalization/capabilities/gridPreferences.js +209 -0
- package/dist/esm/v2/personalization/capabilities/gridPreferences.js.map +1 -0
- package/dist/esm/v2/personalization/capabilities/index.js +22 -0
- package/dist/esm/v2/personalization/capabilities/index.js.map +1 -0
- package/dist/esm/v2/personalization/capabilities/savedFilters.js +291 -0
- package/dist/esm/v2/personalization/capabilities/savedFilters.js.map +1 -0
- package/dist/esm/v2/personalization/createPersonalizationStore.js +472 -0
- package/dist/esm/v2/personalization/createPersonalizationStore.js.map +1 -0
- package/dist/esm/v2/personalization/index.js +64 -0
- package/dist/esm/v2/personalization/index.js.map +1 -0
- package/dist/esm/v2/personalization/personalizationContext.js +108 -0
- package/dist/esm/v2/personalization/personalizationContext.js.map +1 -0
- package/dist/esm/v2/personalization/schema.js +92 -0
- package/dist/esm/v2/personalization/schema.js.map +1 -0
- package/dist/esm/v2/personalization/types.js +2 -0
- package/dist/esm/v2/personalization/types.js.map +1 -0
- package/dist/esm/v2/referentiel/ReferentielProvider.js +87 -0
- package/dist/esm/v2/referentiel/ReferentielProvider.js.map +1 -0
- package/dist/esm/v2/referentiel/index.js +15 -0
- package/dist/esm/v2/referentiel/index.js.map +1 -0
- package/dist/esm/v2/referentiel/useReferentielClient.js +37 -0
- package/dist/esm/v2/referentiel/useReferentielClient.js.map +1 -0
- package/dist/esm/v2/referentiel/useReferentielOptions.js +169 -0
- package/dist/esm/v2/referentiel/useReferentielOptions.js.map +1 -0
- package/dist/esm/v2/referentiel/useReferentielSearch.js +132 -0
- package/dist/esm/v2/referentiel/useReferentielSearch.js.map +1 -0
- package/dist/esm/v2/styles/base.css +425 -0
- package/dist/esm/v2/styles/css.d.ts +10 -0
- package/dist/esm/v2/styles/index.js +12 -0
- package/dist/esm/v2/styles/index.js.map +1 -0
- package/dist/esm/v2/theme/_brand.js +64 -0
- package/dist/esm/v2/theme/_brand.js.map +1 -0
- package/dist/esm/v2/theme/_brandSecondary.js +60 -0
- package/dist/esm/v2/theme/_brandSecondary.js.map +1 -0
- package/dist/esm/v2/theme/createPortnetTheme.js +548 -0
- package/dist/esm/v2/theme/createPortnetTheme.js.map +1 -0
- package/dist/esm/v2/theme/cssVariables.js +198 -0
- package/dist/esm/v2/theme/cssVariables.js.map +1 -0
- package/dist/esm/v2/theme/index.js +32 -0
- package/dist/esm/v2/theme/index.js.map +1 -0
- package/dist/esm/v2/tokens/breakpoints.js +106 -0
- package/dist/esm/v2/tokens/breakpoints.js.map +1 -0
- package/dist/esm/v2/tokens/colors.js +219 -0
- package/dist/esm/v2/tokens/colors.js.map +1 -0
- package/dist/esm/v2/tokens/density.js +98 -0
- package/dist/esm/v2/tokens/density.js.map +1 -0
- package/dist/esm/v2/tokens/index.js +80 -0
- package/dist/esm/v2/tokens/index.js.map +1 -0
- package/dist/esm/v2/tokens/motion.js +88 -0
- package/dist/esm/v2/tokens/motion.js.map +1 -0
- package/dist/esm/v2/tokens/radius.js +22 -0
- package/dist/esm/v2/tokens/radius.js.map +1 -0
- package/dist/esm/v2/tokens/shadows.js +40 -0
- package/dist/esm/v2/tokens/shadows.js.map +1 -0
- package/dist/esm/v2/tokens/spacing.js +51 -0
- package/dist/esm/v2/tokens/spacing.js.map +1 -0
- package/dist/esm/v2/tokens/state.js +41 -0
- package/dist/esm/v2/tokens/state.js.map +1 -0
- package/dist/esm/v2/tokens/statusPalette.js +66 -0
- package/dist/esm/v2/tokens/statusPalette.js.map +1 -0
- package/dist/esm/v2/tokens/tokens.json +153 -0
- package/dist/esm/v2/tokens/typography.js +149 -0
- package/dist/esm/v2/tokens/typography.js.map +1 -0
- package/dist/esm/v2/tokens/zIndex.js +44 -0
- package/dist/esm/v2/tokens/zIndex.js.map +1 -0
- package/dist/esm/v2/types/common.js +2 -0
- package/dist/esm/v2/types/common.js.map +1 -0
- package/dist/esm/v2/types/datagrid.js +2 -0
- package/dist/esm/v2/types/datagrid.js.map +1 -0
- package/dist/esm/v2/types/index.js +12 -0
- package/dist/esm/v2/types/index.js.map +1 -0
- package/dist/esm/v2/utils/apiError.js +281 -0
- package/dist/esm/v2/utils/apiError.js.map +1 -0
- package/dist/esm/v2/utils/contrast.js +157 -0
- package/dist/esm/v2/utils/contrast.js.map +1 -0
- package/dist/esm/v2/utils/cx.js +38 -0
- package/dist/esm/v2/utils/cx.js.map +1 -0
- package/dist/esm/v2/utils/fileDownload.js +226 -0
- package/dist/esm/v2/utils/fileDownload.js.map +1 -0
- package/dist/esm/v2/utils/fmtMoney.js +78 -0
- package/dist/esm/v2/utils/fmtMoney.js.map +1 -0
- package/dist/esm/v2/utils/index.js +43 -0
- package/dist/esm/v2/utils/index.js.map +1 -0
- package/dist/esm/v2/utils/mergeLabels.js +86 -0
- package/dist/esm/v2/utils/mergeLabels.js.map +1 -0
- package/dist/esm/v2/utils/networkStatus.js +114 -0
- package/dist/esm/v2/utils/networkStatus.js.map +1 -0
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +35 -0
- package/dist/index.js.map +1 -1
- package/dist/v2/__tests__/FieldError.test.js +160 -0
- package/dist/v2/__tests__/FieldError.test.js.map +1 -0
- package/dist/v2/__tests__/FieldWidth.test.js +150 -0
- package/dist/v2/__tests__/FieldWidth.test.js.map +1 -0
- package/dist/v2/__tests__/FileCard.test.js +144 -0
- package/dist/v2/__tests__/FileCard.test.js.map +1 -0
- package/dist/v2/__tests__/FormikCheckbox.test.js +268 -0
- package/dist/v2/__tests__/FormikCheckbox.test.js.map +1 -0
- package/dist/v2/__tests__/FormikDateTimePicker.test.js +247 -0
- package/dist/v2/__tests__/FormikDateTimePicker.test.js.map +1 -0
- package/dist/v2/__tests__/FormikRadioGroup.test.js +381 -0
- package/dist/v2/__tests__/FormikRadioGroup.test.js.map +1 -0
- package/dist/v2/__tests__/MobileRowCard.test.js +52 -56
- package/dist/v2/__tests__/MobileRowCard.test.js.map +1 -1
- package/dist/v2/__tests__/SectionErrorBoundary.test.js +237 -0
- package/dist/v2/__tests__/SectionErrorBoundary.test.js.map +1 -0
- package/dist/v2/__tests__/labels-merge.test.js +20 -24
- package/dist/v2/__tests__/labels-merge.test.js.map +1 -1
- package/dist/v2/components/Accordion.d.ts +6 -6
- package/dist/v2/components/Accordion.d.ts.map +1 -1
- package/dist/v2/components/Accordion.js.map +1 -1
- package/dist/v2/components/ActionStrip.d.ts +12 -12
- package/dist/v2/components/ActionStrip.d.ts.map +1 -1
- package/dist/v2/components/ActionStrip.js.map +1 -1
- package/dist/v2/components/Banner.d.ts +48 -9
- package/dist/v2/components/Banner.d.ts.map +1 -1
- package/dist/v2/components/Banner.js +116 -35
- package/dist/v2/components/Banner.js.map +1 -1
- package/dist/v2/components/Busy.d.ts +3 -3
- package/dist/v2/components/Busy.d.ts.map +1 -1
- package/dist/v2/components/Busy.js.map +1 -1
- package/dist/v2/components/Button.d.ts +6 -6
- package/dist/v2/components/Button.d.ts.map +1 -1
- package/dist/v2/components/Button.js.map +1 -1
- package/dist/v2/components/CategoryTag.d.ts +3 -3
- package/dist/v2/components/CategoryTag.d.ts.map +1 -1
- package/dist/v2/components/CategoryTag.js.map +1 -1
- package/dist/v2/components/Checkbox.d.ts +11 -11
- package/dist/v2/components/Checkbox.d.ts.map +1 -1
- package/dist/v2/components/Checkbox.js.map +1 -1
- package/dist/v2/components/Chip.d.ts +8 -8
- package/dist/v2/components/Chip.d.ts.map +1 -1
- package/dist/v2/components/Chip.js +2 -1
- package/dist/v2/components/Chip.js.map +1 -1
- package/dist/v2/components/Combobox.d.ts +27 -27
- package/dist/v2/components/Combobox.d.ts.map +1 -1
- package/dist/v2/components/Combobox.js +3 -2
- package/dist/v2/components/Combobox.js.map +1 -1
- package/dist/v2/components/CommandPalette.d.ts +20 -20
- package/dist/v2/components/CommandPalette.d.ts.map +1 -1
- package/dist/v2/components/CommandPalette.js +2 -6
- package/dist/v2/components/CommandPalette.js.map +1 -1
- package/dist/v2/components/ConfirmDialog.d.ts +13 -13
- package/dist/v2/components/ConfirmDialog.d.ts.map +1 -1
- package/dist/v2/components/ConfirmDialog.js +2 -1
- package/dist/v2/components/ConfirmDialog.js.map +1 -1
- package/dist/v2/components/DatePicker.d.ts +11 -11
- package/dist/v2/components/DatePicker.d.ts.map +1 -1
- package/dist/v2/components/DatePicker.js.map +1 -1
- package/dist/v2/components/DateRangePicker.d.ts +16 -16
- package/dist/v2/components/DateRangePicker.d.ts.map +1 -1
- package/dist/v2/components/DateRangePicker.js +2 -1
- package/dist/v2/components/DateRangePicker.js.map +1 -1
- package/dist/v2/components/DateTimePicker.d.ts +11 -11
- package/dist/v2/components/DateTimePicker.d.ts.map +1 -1
- package/dist/v2/components/DateTimePicker.js +37 -4
- package/dist/v2/components/DateTimePicker.js.map +1 -1
- package/dist/v2/components/Drawer.d.ts +18 -18
- package/dist/v2/components/Drawer.d.ts.map +1 -1
- package/dist/v2/components/Drawer.js +2 -1
- package/dist/v2/components/Drawer.js.map +1 -1
- package/dist/v2/components/Dropzone.d.ts +34 -34
- package/dist/v2/components/Dropzone.d.ts.map +1 -1
- package/dist/v2/components/Dropzone.js +11 -3
- package/dist/v2/components/Dropzone.js.map +1 -1
- package/dist/v2/components/EmptyState.d.ts +7 -7
- package/dist/v2/components/EmptyState.d.ts.map +1 -1
- package/dist/v2/components/EmptyState.js.map +1 -1
- package/dist/v2/components/FavoriteToggle.d.ts +7 -7
- package/dist/v2/components/FavoriteToggle.d.ts.map +1 -1
- package/dist/v2/components/FavoriteToggle.js +2 -1
- package/dist/v2/components/FavoriteToggle.js.map +1 -1
- package/dist/v2/components/Field.d.ts +76 -13
- package/dist/v2/components/Field.d.ts.map +1 -1
- package/dist/v2/components/Field.js +87 -9
- package/dist/v2/components/Field.js.map +1 -1
- package/dist/v2/components/FieldError.d.ts +78 -0
- package/dist/v2/components/FieldError.d.ts.map +1 -0
- package/dist/v2/components/FieldError.js +131 -0
- package/dist/v2/components/FieldError.js.map +1 -0
- package/dist/v2/components/FieldHelp.d.ts +7 -7
- package/dist/v2/components/FieldHelp.d.ts.map +1 -1
- package/dist/v2/components/FieldHelp.js.map +1 -1
- package/dist/v2/components/FileCard.d.ts +75 -0
- package/dist/v2/components/FileCard.d.ts.map +1 -0
- package/dist/v2/components/FileCard.js +169 -0
- package/dist/v2/components/FileCard.js.map +1 -0
- package/dist/v2/components/FilterTab.d.ts +9 -9
- package/dist/v2/components/FilterTab.d.ts.map +1 -1
- package/dist/v2/components/FilterTab.js +2 -1
- package/dist/v2/components/FilterTab.js.map +1 -1
- package/dist/v2/components/FormGrid.d.ts +9 -4
- package/dist/v2/components/FormGrid.d.ts.map +1 -1
- package/dist/v2/components/FormGrid.js +11 -1
- package/dist/v2/components/FormGrid.js.map +1 -1
- package/dist/v2/components/FormikDisplay.d.ts +6 -6
- package/dist/v2/components/FormikDisplay.d.ts.map +1 -1
- package/dist/v2/components/FormikDisplay.js.map +1 -1
- package/dist/v2/components/Input.d.ts +6 -6
- package/dist/v2/components/Input.d.ts.map +1 -1
- package/dist/v2/components/Input.js.map +1 -1
- package/dist/v2/components/KPICard.d.ts +43 -13
- package/dist/v2/components/KPICard.d.ts.map +1 -1
- package/dist/v2/components/KPICard.js +53 -14
- package/dist/v2/components/KPICard.js.map +1 -1
- package/dist/v2/components/KPIStrip.d.ts +68 -0
- package/dist/v2/components/KPIStrip.d.ts.map +1 -0
- package/dist/v2/components/KPIStrip.js +92 -0
- package/dist/v2/components/KPIStrip.js.map +1 -0
- package/dist/v2/components/KV.d.ts +3 -3
- package/dist/v2/components/KV.d.ts.map +1 -1
- package/dist/v2/components/KV.js.map +1 -1
- package/dist/v2/components/KVGrid.d.ts +2 -2
- package/dist/v2/components/KVGrid.d.ts.map +1 -1
- package/dist/v2/components/KVGrid.js +8 -1
- package/dist/v2/components/KVGrid.js.map +1 -1
- package/dist/v2/components/Layout.d.ts +7 -7
- package/dist/v2/components/Layout.d.ts.map +1 -1
- package/dist/v2/components/Layout.js.map +1 -1
- package/dist/v2/components/MobileRowCard.d.ts +13 -13
- package/dist/v2/components/MobileRowCard.d.ts.map +1 -1
- package/dist/v2/components/MobileRowCard.js.map +1 -1
- package/dist/v2/components/Modal.d.ts +12 -12
- package/dist/v2/components/Modal.d.ts.map +1 -1
- package/dist/v2/components/Modal.js.map +1 -1
- package/dist/v2/components/NetworkErrorPage.d.ts +1 -1
- package/dist/v2/components/NetworkErrorPage.d.ts.map +1 -1
- package/dist/v2/components/NetworkErrorPage.js.map +1 -1
- package/dist/v2/components/NumberInput.d.ts +14 -14
- package/dist/v2/components/NumberInput.d.ts.map +1 -1
- package/dist/v2/components/NumberInput.js +7 -6
- package/dist/v2/components/NumberInput.js.map +1 -1
- package/dist/v2/components/OverflowMenu.d.ts +14 -14
- package/dist/v2/components/OverflowMenu.d.ts.map +1 -1
- package/dist/v2/components/OverflowMenu.js +4 -8
- package/dist/v2/components/OverflowMenu.js.map +1 -1
- package/dist/v2/components/PdfViewer.d.ts +9 -9
- package/dist/v2/components/PdfViewer.d.ts.map +1 -1
- package/dist/v2/components/PdfViewer.js.map +1 -1
- package/dist/v2/components/ProgressBar.d.ts +10 -10
- package/dist/v2/components/ProgressBar.d.ts.map +1 -1
- package/dist/v2/components/ProgressBar.js.map +1 -1
- package/dist/v2/components/Radio.d.ts +7 -7
- package/dist/v2/components/Radio.d.ts.map +1 -1
- package/dist/v2/components/Radio.js.map +1 -1
- package/dist/v2/components/SectionErrorBoundary.d.ts +89 -0
- package/dist/v2/components/SectionErrorBoundary.d.ts.map +1 -0
- package/dist/v2/components/SectionErrorBoundary.js +221 -0
- package/dist/v2/components/SectionErrorBoundary.js.map +1 -0
- package/dist/v2/components/SectionHeader.d.ts +5 -5
- package/dist/v2/components/SectionHeader.d.ts.map +1 -1
- package/dist/v2/components/SectionHeader.js.map +1 -1
- package/dist/v2/components/Segmented.d.ts +11 -11
- package/dist/v2/components/Segmented.d.ts.map +1 -1
- package/dist/v2/components/Segmented.js.map +1 -1
- package/dist/v2/components/Select.d.ts +33 -15
- package/dist/v2/components/Select.d.ts.map +1 -1
- package/dist/v2/components/Select.js +147 -30
- package/dist/v2/components/Select.js.map +1 -1
- package/dist/v2/components/ServerErrorPage.d.ts +1 -1
- package/dist/v2/components/ServerErrorPage.d.ts.map +1 -1
- package/dist/v2/components/ServerErrorPage.js.map +1 -1
- package/dist/v2/components/Skeleton.d.ts +15 -15
- package/dist/v2/components/Skeleton.d.ts.map +1 -1
- package/dist/v2/components/Skeleton.js.map +1 -1
- package/dist/v2/components/SkipLink.d.ts +2 -2
- package/dist/v2/components/SkipLink.d.ts.map +1 -1
- package/dist/v2/components/SkipLink.js.map +1 -1
- package/dist/v2/components/Status.d.ts +3 -3
- package/dist/v2/components/Status.d.ts.map +1 -1
- package/dist/v2/components/Status.js.map +1 -1
- package/dist/v2/components/Stepper.d.ts +28 -22
- package/dist/v2/components/Stepper.d.ts.map +1 -1
- package/dist/v2/components/Stepper.js +31 -5
- package/dist/v2/components/Stepper.js.map +1 -1
- package/dist/v2/components/Surface.d.ts +94 -0
- package/dist/v2/components/Surface.d.ts.map +1 -0
- package/dist/v2/components/Surface.js +163 -0
- package/dist/v2/components/Surface.js.map +1 -0
- package/dist/v2/components/Switch.d.ts +4 -4
- package/dist/v2/components/Switch.d.ts.map +1 -1
- package/dist/v2/components/Switch.js.map +1 -1
- package/dist/v2/components/Tabs.d.ts +6 -6
- package/dist/v2/components/Tabs.d.ts.map +1 -1
- package/dist/v2/components/Tabs.js.map +1 -1
- package/dist/v2/components/TelInput.d.ts +8 -8
- package/dist/v2/components/TelInput.d.ts.map +1 -1
- package/dist/v2/components/TelInput.js +18 -18
- package/dist/v2/components/TelInput.js.map +1 -1
- package/dist/v2/components/Textarea.d.ts +1 -1
- package/dist/v2/components/Textarea.d.ts.map +1 -1
- package/dist/v2/components/Textarea.js.map +1 -1
- package/dist/v2/components/TimePicker.d.ts +11 -11
- package/dist/v2/components/TimePicker.d.ts.map +1 -1
- package/dist/v2/components/TimePicker.js.map +1 -1
- package/dist/v2/components/Toast.d.ts +6 -6
- package/dist/v2/components/Toast.d.ts.map +1 -1
- package/dist/v2/components/Toast.js +9 -8
- package/dist/v2/components/Toast.js.map +1 -1
- package/dist/v2/components/Tooltip.d.ts +1 -1
- package/dist/v2/components/Tooltip.d.ts.map +1 -1
- package/dist/v2/components/Tooltip.js.map +1 -1
- package/dist/v2/components/index.d.ts +170 -0
- package/dist/v2/components/index.d.ts.map +1 -1
- package/dist/v2/components/index.js +35 -0
- package/dist/v2/components/index.js.map +1 -1
- package/dist/v2/index.d.ts.map +1 -1
- package/dist/v2/index.js.map +1 -1
- package/dist/v2/models/favorite.d.ts +1 -1
- package/dist/v2/models/favorite.d.ts.map +1 -1
- package/dist/v2/models/favorite.js.map +1 -1
- package/dist/v2/models/personalization.d.ts +13 -13
- package/dist/v2/models/personalization.d.ts.map +1 -1
- package/dist/v2/models/personalization.js.map +1 -1
- package/dist/v2/models/referentiel.d.ts +11 -11
- package/dist/v2/models/referentiel.d.ts.map +1 -1
- package/dist/v2/models/referentiel.js.map +1 -1
- package/dist/v2/models/savedFilter.d.ts +8 -8
- package/dist/v2/models/savedFilter.d.ts.map +1 -1
- package/dist/v2/models/savedFilter.js.map +1 -1
- package/dist/v2/patterns/ActionBar.d.ts +33 -33
- package/dist/v2/patterns/ActionBar.d.ts.map +1 -1
- package/dist/v2/patterns/ActionBar.js +2 -1
- package/dist/v2/patterns/ActionBar.js.map +1 -1
- package/dist/v2/patterns/BulkActionBar.d.ts +12 -12
- package/dist/v2/patterns/BulkActionBar.d.ts.map +1 -1
- package/dist/v2/patterns/BulkActionBar.js +2 -1
- package/dist/v2/patterns/BulkActionBar.js.map +1 -1
- package/dist/v2/patterns/CollapsibleDataGrid.d.ts +15 -15
- package/dist/v2/patterns/CollapsibleDataGrid.d.ts.map +1 -1
- package/dist/v2/patterns/CollapsibleDataGrid.js.map +1 -1
- package/dist/v2/patterns/ColumnsToggle.d.ts +7 -7
- package/dist/v2/patterns/ColumnsToggle.d.ts.map +1 -1
- package/dist/v2/patterns/ColumnsToggle.js +4 -8
- package/dist/v2/patterns/ColumnsToggle.js.map +1 -1
- package/dist/v2/patterns/DataGridSettingsMenu.d.ts +12 -12
- package/dist/v2/patterns/DataGridSettingsMenu.d.ts.map +1 -1
- package/dist/v2/patterns/DataGridSettingsMenu.js +9 -8
- package/dist/v2/patterns/DataGridSettingsMenu.js.map +1 -1
- package/dist/v2/patterns/DataGridToolbar.d.ts +40 -40
- package/dist/v2/patterns/DataGridToolbar.d.ts.map +1 -1
- package/dist/v2/patterns/DataGridToolbar.js +2 -1
- package/dist/v2/patterns/DataGridToolbar.js.map +1 -1
- package/dist/v2/patterns/DataGridVirtualized.d.ts +27 -27
- package/dist/v2/patterns/DataGridVirtualized.d.ts.map +1 -1
- package/dist/v2/patterns/DataGridVirtualized.js.map +1 -1
- package/dist/v2/patterns/DeleteResourceConfirmDialog.d.ts +5 -5
- package/dist/v2/patterns/DeleteResourceConfirmDialog.d.ts.map +1 -1
- package/dist/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
- package/dist/v2/patterns/FavoriteColumn.d.ts +15 -15
- package/dist/v2/patterns/FavoriteColumn.d.ts.map +1 -1
- package/dist/v2/patterns/FavoriteColumn.js +14 -61
- package/dist/v2/patterns/FavoriteColumn.js.map +1 -1
- package/dist/v2/patterns/FavoritesFilter.d.ts +10 -10
- package/dist/v2/patterns/FavoritesFilter.d.ts.map +1 -1
- package/dist/v2/patterns/FavoritesFilter.js +2 -1
- package/dist/v2/patterns/FavoritesFilter.js.map +1 -1
- package/dist/v2/patterns/FormErrorSummary.d.ts +4 -4
- package/dist/v2/patterns/FormErrorSummary.d.ts.map +1 -1
- package/dist/v2/patterns/FormErrorSummary.js.map +1 -1
- package/dist/v2/patterns/FormPageShell.d.ts +4 -4
- package/dist/v2/patterns/FormPageShell.d.ts.map +1 -1
- package/dist/v2/patterns/FormPageShell.js.map +1 -1
- package/dist/v2/patterns/FormSection.d.ts +19 -8
- package/dist/v2/patterns/FormSection.d.ts.map +1 -1
- package/dist/v2/patterns/FormSection.js +106 -71
- package/dist/v2/patterns/FormSection.js.map +1 -1
- package/dist/v2/patterns/FormikCheckbox.d.ts +77 -0
- package/dist/v2/patterns/FormikCheckbox.d.ts.map +1 -0
- package/dist/v2/patterns/FormikCheckbox.js +147 -0
- package/dist/v2/patterns/FormikCheckbox.js.map +1 -0
- package/dist/v2/patterns/FormikCheckboxGroup.d.ts +6 -6
- package/dist/v2/patterns/FormikCheckboxGroup.d.ts.map +1 -1
- package/dist/v2/patterns/FormikCheckboxGroup.js.map +1 -1
- package/dist/v2/patterns/FormikCombobox.d.ts +18 -12
- package/dist/v2/patterns/FormikCombobox.d.ts.map +1 -1
- package/dist/v2/patterns/FormikCombobox.js +5 -2
- package/dist/v2/patterns/FormikCombobox.js.map +1 -1
- package/dist/v2/patterns/FormikDatePicker.d.ts +48 -8
- package/dist/v2/patterns/FormikDatePicker.d.ts.map +1 -1
- package/dist/v2/patterns/FormikDatePicker.js +58 -65
- package/dist/v2/patterns/FormikDatePicker.js.map +1 -1
- package/dist/v2/patterns/FormikDateTimePicker.d.ts +111 -0
- package/dist/v2/patterns/FormikDateTimePicker.d.ts.map +1 -0
- package/dist/v2/patterns/FormikDateTimePicker.js +158 -0
- package/dist/v2/patterns/FormikDateTimePicker.js.map +1 -0
- package/dist/v2/patterns/FormikErrorFocus.d.ts +3 -3
- package/dist/v2/patterns/FormikErrorFocus.d.ts.map +1 -1
- package/dist/v2/patterns/FormikErrorFocus.js.map +1 -1
- package/dist/v2/patterns/FormikFile.d.ts +8 -8
- package/dist/v2/patterns/FormikFile.d.ts.map +1 -1
- package/dist/v2/patterns/FormikFile.js.map +1 -1
- package/dist/v2/patterns/FormikInput.d.ts +51 -6
- package/dist/v2/patterns/FormikInput.d.ts.map +1 -1
- package/dist/v2/patterns/FormikInput.js +53 -2
- package/dist/v2/patterns/FormikInput.js.map +1 -1
- package/dist/v2/patterns/FormikRadioGroup.d.ts +80 -0
- package/dist/v2/patterns/FormikRadioGroup.d.ts.map +1 -0
- package/dist/v2/patterns/FormikRadioGroup.js +148 -0
- package/dist/v2/patterns/FormikRadioGroup.js.map +1 -0
- package/dist/v2/patterns/FormikReferentielField.d.ts +8 -8
- package/dist/v2/patterns/FormikReferentielField.d.ts.map +1 -1
- package/dist/v2/patterns/FormikReferentielField.js.map +1 -1
- package/dist/v2/patterns/FormikSelect.d.ts +41 -12
- package/dist/v2/patterns/FormikSelect.d.ts.map +1 -1
- package/dist/v2/patterns/FormikSelect.js +32 -3
- package/dist/v2/patterns/FormikSelect.js.map +1 -1
- package/dist/v2/patterns/FormikTextarea.d.ts +14 -6
- package/dist/v2/patterns/FormikTextarea.d.ts.map +1 -1
- package/dist/v2/patterns/FormikTextarea.js +5 -2
- package/dist/v2/patterns/FormikTextarea.js.map +1 -1
- package/dist/v2/patterns/KeyboardShortcutsHelp.d.ts +21 -8
- package/dist/v2/patterns/KeyboardShortcutsHelp.d.ts.map +1 -1
- package/dist/v2/patterns/KeyboardShortcutsHelp.js +27 -14
- package/dist/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
- package/dist/v2/patterns/NetworkErrorBanner.d.ts +4 -4
- package/dist/v2/patterns/NetworkErrorBanner.d.ts.map +1 -1
- package/dist/v2/patterns/NetworkErrorBanner.js.map +1 -1
- package/dist/v2/patterns/PageContent.d.ts +3 -3
- package/dist/v2/patterns/PageContent.d.ts.map +1 -1
- package/dist/v2/patterns/PageContent.js.map +1 -1
- package/dist/v2/patterns/ReferentielField.d.ts +49 -49
- package/dist/v2/patterns/ReferentielField.d.ts.map +1 -1
- package/dist/v2/patterns/ReferentielField.js +2 -1
- package/dist/v2/patterns/ReferentielField.js.map +1 -1
- package/dist/v2/patterns/RowFavoriteToggle.d.ts +92 -0
- package/dist/v2/patterns/RowFavoriteToggle.d.ts.map +1 -0
- package/dist/v2/patterns/RowFavoriteToggle.js +127 -0
- package/dist/v2/patterns/RowFavoriteToggle.js.map +1 -0
- package/dist/v2/patterns/SaveFilterDialog.d.ts +10 -10
- package/dist/v2/patterns/SaveFilterDialog.d.ts.map +1 -1
- package/dist/v2/patterns/SaveFilterDialog.js +9 -8
- package/dist/v2/patterns/SaveFilterDialog.js.map +1 -1
- package/dist/v2/patterns/SavedFiltersMenu.d.ts +7 -7
- package/dist/v2/patterns/SavedFiltersMenu.d.ts.map +1 -1
- package/dist/v2/patterns/SavedFiltersMenu.js +9 -8
- package/dist/v2/patterns/SavedFiltersMenu.js.map +1 -1
- package/dist/v2/patterns/SkeletonPageShell.d.ts +7 -7
- package/dist/v2/patterns/SkeletonPageShell.d.ts.map +1 -1
- package/dist/v2/patterns/SkeletonPageShell.js.map +1 -1
- package/dist/v2/patterns/SortableHeader.d.ts +1 -1
- package/dist/v2/patterns/SortableHeader.d.ts.map +1 -1
- package/dist/v2/patterns/SortableHeader.js.map +1 -1
- package/dist/v2/patterns/Tour.d.ts +12 -12
- package/dist/v2/patterns/Tour.d.ts.map +1 -1
- package/dist/v2/patterns/Tour.js +9 -8
- package/dist/v2/patterns/Tour.js.map +1 -1
- package/dist/v2/patterns/_dataGridShared.d.ts +25 -6
- package/dist/v2/patterns/_dataGridShared.d.ts.map +1 -1
- package/dist/v2/patterns/_dataGridShared.js +37 -3
- package/dist/v2/patterns/_dataGridShared.js.map +1 -1
- package/dist/v2/patterns/_pickerSerialisation.d.ts +44 -0
- package/dist/v2/patterns/_pickerSerialisation.d.ts.map +1 -0
- package/dist/v2/patterns/_pickerSerialisation.js +81 -0
- package/dist/v2/patterns/_pickerSerialisation.js.map +1 -0
- package/dist/v2/patterns/_useColumnReorder.d.ts +1 -1
- package/dist/v2/patterns/_useColumnReorder.d.ts.map +1 -1
- package/dist/v2/patterns/_useColumnReorder.js.map +1 -1
- package/dist/v2/patterns/_useColumnResize.d.ts +1 -1
- package/dist/v2/patterns/_useColumnResize.d.ts.map +1 -1
- package/dist/v2/patterns/_useColumnResize.js.map +1 -1
- package/dist/v2/patterns/index.d.ts +114 -0
- package/dist/v2/patterns/index.d.ts.map +1 -1
- package/dist/v2/patterns/index.js +34 -0
- package/dist/v2/patterns/index.js.map +1 -1
- package/dist/v2/personalization/PersonalizationProvider.d.ts +9 -9
- package/dist/v2/personalization/PersonalizationProvider.d.ts.map +1 -1
- package/dist/v2/personalization/PersonalizationProvider.js.map +1 -1
- package/dist/v2/personalization/adapters/createLocalStorageAdapter.d.ts +1 -1
- package/dist/v2/personalization/adapters/createLocalStorageAdapter.d.ts.map +1 -1
- package/dist/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
- package/dist/v2/personalization/adapters/createMemoryAdapter.d.ts +1 -1
- package/dist/v2/personalization/adapters/createMemoryAdapter.d.ts.map +1 -1
- package/dist/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
- package/dist/v2/personalization/capabilities/favoritesView.d.ts +3 -3
- package/dist/v2/personalization/capabilities/favoritesView.d.ts.map +1 -1
- package/dist/v2/personalization/capabilities/favoritesView.js.map +1 -1
- package/dist/v2/personalization/capabilities/gridPreferences.d.ts +100 -0
- package/dist/v2/personalization/capabilities/gridPreferences.d.ts.map +1 -0
- package/dist/v2/personalization/capabilities/gridPreferences.js +215 -0
- package/dist/v2/personalization/capabilities/gridPreferences.js.map +1 -0
- package/dist/v2/personalization/capabilities/index.d.ts +6 -0
- package/dist/v2/personalization/capabilities/index.d.ts.map +1 -1
- package/dist/v2/personalization/capabilities/index.js +13 -0
- package/dist/v2/personalization/capabilities/index.js.map +1 -1
- package/dist/v2/personalization/capabilities/savedFilters.d.ts +3 -3
- package/dist/v2/personalization/capabilities/savedFilters.d.ts.map +1 -1
- package/dist/v2/personalization/capabilities/savedFilters.js.map +1 -1
- package/dist/v2/personalization/createPersonalizationStore.d.ts +8 -8
- package/dist/v2/personalization/createPersonalizationStore.d.ts.map +1 -1
- package/dist/v2/personalization/createPersonalizationStore.js.map +1 -1
- package/dist/v2/personalization/index.d.ts +18 -0
- package/dist/v2/personalization/index.d.ts.map +1 -1
- package/dist/v2/personalization/index.js +13 -0
- package/dist/v2/personalization/index.js.map +1 -1
- package/dist/v2/personalization/schema.d.ts +2 -2
- package/dist/v2/personalization/schema.d.ts.map +1 -1
- package/dist/v2/personalization/schema.js.map +1 -1
- package/dist/v2/personalization/types.d.ts +19 -19
- package/dist/v2/personalization/types.d.ts.map +1 -1
- package/dist/v2/personalization/types.js.map +1 -1
- package/dist/v2/referentiel/ReferentielProvider.d.ts +4 -4
- package/dist/v2/referentiel/ReferentielProvider.d.ts.map +1 -1
- package/dist/v2/referentiel/ReferentielProvider.js.map +1 -1
- package/dist/v2/referentiel/useReferentielOptions.d.ts +4 -4
- package/dist/v2/referentiel/useReferentielOptions.d.ts.map +1 -1
- package/dist/v2/referentiel/useReferentielOptions.js.map +1 -1
- package/dist/v2/referentiel/useReferentielSearch.d.ts +3 -3
- package/dist/v2/referentiel/useReferentielSearch.d.ts.map +1 -1
- package/dist/v2/referentiel/useReferentielSearch.js.map +1 -1
- package/dist/v2/theme/createPortnetTheme.d.ts +32 -7
- package/dist/v2/theme/createPortnetTheme.d.ts.map +1 -1
- package/dist/v2/theme/createPortnetTheme.js +25 -1
- package/dist/v2/theme/createPortnetTheme.js.map +1 -1
- package/dist/v2/types/datagrid.d.ts +59 -59
- package/dist/v2/types/datagrid.d.ts.map +1 -1
- package/dist/v2/types/datagrid.js.map +1 -1
- package/dist/v2/utils/apiError.d.ts +65 -4
- package/dist/v2/utils/apiError.d.ts.map +1 -1
- package/dist/v2/utils/apiError.js +69 -6
- package/dist/v2/utils/apiError.js.map +1 -1
- package/dist/v2/utils/index.d.ts +1 -0
- package/dist/v2/utils/index.d.ts.map +1 -1
- package/dist/v2/utils/index.js +7 -0
- package/dist/v2/utils/index.js.map +1 -1
- package/dist/v2/utils/mergeLabels.d.ts +59 -0
- package/dist/v2/utils/mergeLabels.d.ts.map +1 -0
- package/dist/v2/utils/mergeLabels.js +93 -0
- package/dist/v2/utils/mergeLabels.js.map +1 -0
- package/package.json +23 -15
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.GRID_PREFERENCES_CAPABILITY_ID = void 0;
|
|
7
|
+
exports.useGridPreferences = useGridPreferences;
|
|
8
|
+
var React = _interopRequireWildcard(require("react"));
|
|
9
|
+
var _schema = require("../schema");
|
|
10
|
+
var _personalizationContext = require("../personalizationContext");
|
|
11
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
12
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
13
|
+
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; }
|
|
14
|
+
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; }
|
|
15
|
+
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; }
|
|
16
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
17
|
+
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); }
|
|
18
|
+
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); } /**
|
|
19
|
+
* gridPreferences — Portnet UI v2 · personalization capability
|
|
20
|
+
*
|
|
21
|
+
* Per-user, per-resource DataGrid preferences. Self-registers the
|
|
22
|
+
* "gridPreferences" capability with the schema registry at import time, so the
|
|
23
|
+
* capability-agnostic foundation discovers its schemaVersion / defaultState /
|
|
24
|
+
* migrate without any hardcoding.
|
|
25
|
+
*
|
|
26
|
+
* State model (the capability payload):
|
|
27
|
+
* { [resourceKey]: { hiddenColumns: string[] } }
|
|
28
|
+
*
|
|
29
|
+
* ─────────────────────────────────────────────────────────────────────────────
|
|
30
|
+
* WHY THIS BELONGS IN THE LIBRARY (capability gap G-35)
|
|
31
|
+
*
|
|
32
|
+
* `DataGridToolbar` owns the column-visibility UI (`hiddenColumns` +
|
|
33
|
+
* `onHiddenColumnsChange`) but deliberately holds no state, so PERSISTING the
|
|
34
|
+
* choice is left to the host. Every listing screen therefore reached for raw
|
|
35
|
+
* `localStorage` — observed in onssa-export-fe as
|
|
36
|
+
* `"onssaCertificates:listing:hiddenColumns"`, hand-written JSON.parse
|
|
37
|
+
* included.
|
|
38
|
+
*
|
|
39
|
+
* That is not merely duplication. A bare `localStorage` key is NOT USER-SCOPED,
|
|
40
|
+
* while this foundation's own key scheme is:
|
|
41
|
+
*
|
|
42
|
+
* portnet-ui:perso:v1:{tenantId?}:{userId}:{capabilityId}
|
|
43
|
+
*
|
|
44
|
+
* So on a shared workstation — the norm at a port — user B inherited user A's
|
|
45
|
+
* hidden columns, and a column A had hidden stayed invisible to B with no
|
|
46
|
+
* affordance explaining why. Favorites and saved filters were already immune
|
|
47
|
+
* because they route through this foundation; column visibility was the one
|
|
48
|
+
* grid preference that did not.
|
|
49
|
+
*
|
|
50
|
+
* It could not be fixed in a host, either. `registerCapability` is exported as
|
|
51
|
+
* a "capability registration seam — for custom/host-defined capabilities", but
|
|
52
|
+
* the two primitives every capability hook needs — `usePersonalizationStore`
|
|
53
|
+
* and `useStoreSelector` — are deliberately private ("architecture doc §2.8 —
|
|
54
|
+
* minimum API surface"). A host could register a descriptor and then had no way
|
|
55
|
+
* to read or write its payload. The seam was advertised but not complete, so
|
|
56
|
+
* the slice has to live here, exactly like favorites and savedFilters.
|
|
57
|
+
*
|
|
58
|
+
* DENSITY IS DELIBERATELY NOT PART OF THIS. `useDensity` (v2/hooks) owns the
|
|
59
|
+
* density preference as a GLOBAL, non-resource-scoped value on its own
|
|
60
|
+
* `portnet-ui-density` key, and it applies `data-density` to <html>. Folding it
|
|
61
|
+
* in here would give one preference two owners. Note however that it is
|
|
62
|
+
* unscoped for the same reason this capability exists — tracked separately,
|
|
63
|
+
* since moving it into the foundation changes its storage key and would make it
|
|
64
|
+
* require a provider (a breaking change for current callers).
|
|
65
|
+
* ─────────────────────────────────────────────────────────────────────────────
|
|
66
|
+
*
|
|
67
|
+
* Usage:
|
|
68
|
+
*
|
|
69
|
+
* const { hiddenColumns, setHiddenColumns } = useGridPreferences("ti:list");
|
|
70
|
+
*
|
|
71
|
+
* <DataGridToolbar
|
|
72
|
+
* columns={columns}
|
|
73
|
+
* hiddenColumns={hiddenColumns}
|
|
74
|
+
* onHiddenColumnsChange={setHiddenColumns}
|
|
75
|
+
* … />
|
|
76
|
+
* <DataGrid columns={columns} hiddenColumns={hiddenColumns} … />
|
|
77
|
+
*
|
|
78
|
+
* `resourceKey` namespaces preferences per list (e.g. "ti:list",
|
|
79
|
+
* "declarations:list") so two grids in one app never collide. Requires a
|
|
80
|
+
* <UserPersonalizationProvider> ancestor.
|
|
81
|
+
*
|
|
82
|
+
* Performance: the pure helpers rebuild only the touched resourceKey's entry
|
|
83
|
+
* and shallow-copy the map, so the store's structural sharing keeps every OTHER
|
|
84
|
+
* resource's preferences referentially stable — and the exposed `Set` is
|
|
85
|
+
* memoised on the stored array, so its identity survives re-renders and does
|
|
86
|
+
* not defeat DataGrid's memoisation.
|
|
87
|
+
*/
|
|
88
|
+
/** One resource's grid preferences. Optional members so the shape can grow
|
|
89
|
+
* (column order, widths) without a schemaVersion bump. */
|
|
90
|
+
|
|
91
|
+
/** The gridPreferences capability payload: entries keyed by resourceKey. */
|
|
92
|
+
|
|
93
|
+
var GRID_PREFERENCES_CAPABILITY_ID = exports.GRID_PREFERENCES_CAPABILITY_ID = "gridPreferences";
|
|
94
|
+
var SCHEMA_VERSION = 1;
|
|
95
|
+
var EMPTY_LIST = Object.freeze([]);
|
|
96
|
+
var EMPTY_MAP = Object.freeze({});
|
|
97
|
+
function isString(value) {
|
|
98
|
+
return typeof value === "string";
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/* Register at import time — the foundation reads this at hydration. */
|
|
102
|
+
(0, _schema.registerCapability)({
|
|
103
|
+
id: GRID_PREFERENCES_CAPABILITY_ID,
|
|
104
|
+
schemaVersion: SCHEMA_VERSION,
|
|
105
|
+
defaultState: EMPTY_MAP,
|
|
106
|
+
// { [resourceKey]: { hiddenColumns: string[] } }
|
|
107
|
+
migrate: function migrateGridPreferences(_fromVersion, payload) {
|
|
108
|
+
/* v1 is the initial schema, so there is no version to upgrade FROM — but
|
|
109
|
+
* this is the load-time trust boundary for a payload that came back from
|
|
110
|
+
* storage, and it is the right place to normalise it. A column key is used
|
|
111
|
+
* to hide grid columns; a number or an object arriving from an older build
|
|
112
|
+
* (or from hand-edited devtools storage) must not reach the DataGrid as if
|
|
113
|
+
* it were one. Anything unrecognised is dropped rather than repaired. */
|
|
114
|
+
if (!payload || _typeof(payload) !== "object") return {};
|
|
115
|
+
var source = payload;
|
|
116
|
+
var next = {};
|
|
117
|
+
for (var _i = 0, _Object$keys = Object.keys(source); _i < _Object$keys.length; _i++) {
|
|
118
|
+
var resourceKey = _Object$keys[_i];
|
|
119
|
+
var entry = source[resourceKey];
|
|
120
|
+
if (!entry || _typeof(entry) !== "object") continue;
|
|
121
|
+
var raw = entry["hiddenColumns"];
|
|
122
|
+
if (!Array.isArray(raw)) continue;
|
|
123
|
+
var keys = raw.filter(isString);
|
|
124
|
+
if (keys.length > 0) next[resourceKey] = {
|
|
125
|
+
hiddenColumns: keys
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
return next;
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
/* ── pure, resourceKey-scoped state helpers (structural sharing) ────── */
|
|
133
|
+
|
|
134
|
+
function listFor(map, resourceKey) {
|
|
135
|
+
var entry = map ? map[resourceKey] : undefined;
|
|
136
|
+
var list = entry ? entry.hiddenColumns : undefined;
|
|
137
|
+
return Array.isArray(list) ? list : EMPTY_LIST;
|
|
138
|
+
}
|
|
139
|
+
function sameMembers(a, b) {
|
|
140
|
+
if (a.length !== b.length) return false;
|
|
141
|
+
for (var i = 0; i < a.length; i++) {
|
|
142
|
+
if (a[i] !== b[i]) return false;
|
|
143
|
+
}
|
|
144
|
+
return true;
|
|
145
|
+
}
|
|
146
|
+
function setList(map, resourceKey, keys) {
|
|
147
|
+
var base = map || EMPTY_MAP;
|
|
148
|
+
// No-op when unchanged → the store short-circuits and nothing re-renders.
|
|
149
|
+
if (sameMembers(listFor(base, resourceKey), keys)) return base;
|
|
150
|
+
var next = Object.assign({}, base);
|
|
151
|
+
if (keys.length === 0) {
|
|
152
|
+
// Nothing hidden is the default; drop the entry rather than persist an
|
|
153
|
+
// empty array, so the payload stays tidy and a reset leaves no residue.
|
|
154
|
+
delete next[resourceKey];
|
|
155
|
+
} else {
|
|
156
|
+
// Spread, not Object.assign: `base[resourceKey]` is
|
|
157
|
+
// `GridPreferencesEntry | undefined` under noUncheckedIndexedAccess, and
|
|
158
|
+
// passing undefined as an Object.assign source yields an intersection
|
|
159
|
+
// containing undefined. Spreading undefined is well-defined ({}), and it
|
|
160
|
+
// preserves any sibling preference a future schema adds alongside
|
|
161
|
+
// hiddenColumns.
|
|
162
|
+
next[resourceKey] = _objectSpread(_objectSpread({}, base[resourceKey]), {}, {
|
|
163
|
+
hiddenColumns: keys.slice()
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
return next;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/* ── hook ───────────────────────────────────────────────────────────── */
|
|
170
|
+
|
|
171
|
+
function useEnsureGridPreferences(store) {
|
|
172
|
+
React.useEffect(function ensure() {
|
|
173
|
+
store.ensureCapability(GRID_PREFERENCES_CAPABILITY_ID);
|
|
174
|
+
}, [store]);
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* useGridPreferences(resourceKey) — persisted, per-user grid preferences for
|
|
178
|
+
* one resource.
|
|
179
|
+
*/
|
|
180
|
+
function useGridPreferences(resourceKey) {
|
|
181
|
+
var store = (0, _personalizationContext.usePersonalizationStore)();
|
|
182
|
+
useEnsureGridPreferences(store);
|
|
183
|
+
var selectList = React.useCallback(function selectList(snapshot) {
|
|
184
|
+
var slice = snapshot[GRID_PREFERENCES_CAPABILITY_ID];
|
|
185
|
+
return slice ? listFor(slice, resourceKey) : EMPTY_LIST;
|
|
186
|
+
}, [resourceKey]);
|
|
187
|
+
var keys = (0, _personalizationContext.useStoreSelector)(selectList);
|
|
188
|
+
|
|
189
|
+
// Stable while `keys` is stable (structural sharing), so the Set identity
|
|
190
|
+
// does not churn on every render and DataGrid's memoisation still holds.
|
|
191
|
+
var hiddenColumns = React.useMemo(function buildSet() {
|
|
192
|
+
return new Set(keys);
|
|
193
|
+
}, [keys]);
|
|
194
|
+
var setHiddenColumns = React.useCallback(function setHiddenColumns(hidden) {
|
|
195
|
+
// Normalise at the write boundary too: the caller is UI code, but the
|
|
196
|
+
// value is about to be persisted and re-read by a later session.
|
|
197
|
+
var nextKeys = Array.from(hidden).filter(isString);
|
|
198
|
+
store.write(GRID_PREFERENCES_CAPABILITY_ID, function (prev) {
|
|
199
|
+
return setList(prev, resourceKey, nextKeys);
|
|
200
|
+
});
|
|
201
|
+
}, [store, resourceKey]);
|
|
202
|
+
var resetHiddenColumns = React.useCallback(function resetHiddenColumns() {
|
|
203
|
+
store.write(GRID_PREFERENCES_CAPABILITY_ID, function (prev) {
|
|
204
|
+
return setList(prev, resourceKey, EMPTY_LIST);
|
|
205
|
+
});
|
|
206
|
+
}, [store, resourceKey]);
|
|
207
|
+
return React.useMemo(function value() {
|
|
208
|
+
return {
|
|
209
|
+
hiddenColumns: hiddenColumns,
|
|
210
|
+
setHiddenColumns: setHiddenColumns,
|
|
211
|
+
resetHiddenColumns: resetHiddenColumns
|
|
212
|
+
};
|
|
213
|
+
}, [hiddenColumns, setHiddenColumns, resetHiddenColumns]);
|
|
214
|
+
}
|
|
215
|
+
//# sourceMappingURL=gridPreferences.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gridPreferences.js","names":["React","_interopRequireWildcard","require","_schema","_personalizationContext","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","TypeError","Number","iterator","constructor","GRID_PREFERENCES_CAPABILITY_ID","exports","SCHEMA_VERSION","EMPTY_LIST","freeze","EMPTY_MAP","isString","registerCapability","id","schemaVersion","defaultState","migrate","migrateGridPreferences","_fromVersion","payload","next","_i","_Object$keys","resourceKey","entry","raw","Array","isArray","hiddenColumns","listFor","map","list","sameMembers","a","b","setList","base","assign","slice","useEnsureGridPreferences","store","useEffect","ensure","ensureCapability","useGridPreferences","usePersonalizationStore","selectList","useCallback","snapshot","useStoreSelector","useMemo","buildSet","Set","setHiddenColumns","hidden","nextKeys","from","write","prev","resetHiddenColumns"],"sources":["../../../../src/lib/v2/personalization/capabilities/gridPreferences.ts"],"sourcesContent":["/**\r\n * gridPreferences — Portnet UI v2 · personalization capability\r\n *\r\n * Per-user, per-resource DataGrid preferences. Self-registers the\r\n * \"gridPreferences\" capability with the schema registry at import time, so the\r\n * capability-agnostic foundation discovers its schemaVersion / defaultState /\r\n * migrate without any hardcoding.\r\n *\r\n * State model (the capability payload):\r\n * { [resourceKey]: { hiddenColumns: string[] } }\r\n *\r\n * ─────────────────────────────────────────────────────────────────────────────\r\n * WHY THIS BELONGS IN THE LIBRARY (capability gap G-35)\r\n *\r\n * `DataGridToolbar` owns the column-visibility UI (`hiddenColumns` +\r\n * `onHiddenColumnsChange`) but deliberately holds no state, so PERSISTING the\r\n * choice is left to the host. Every listing screen therefore reached for raw\r\n * `localStorage` — observed in onssa-export-fe as\r\n * `\"onssaCertificates:listing:hiddenColumns\"`, hand-written JSON.parse\r\n * included.\r\n *\r\n * That is not merely duplication. A bare `localStorage` key is NOT USER-SCOPED,\r\n * while this foundation's own key scheme is:\r\n *\r\n * portnet-ui:perso:v1:{tenantId?}:{userId}:{capabilityId}\r\n *\r\n * So on a shared workstation — the norm at a port — user B inherited user A's\r\n * hidden columns, and a column A had hidden stayed invisible to B with no\r\n * affordance explaining why. Favorites and saved filters were already immune\r\n * because they route through this foundation; column visibility was the one\r\n * grid preference that did not.\r\n *\r\n * It could not be fixed in a host, either. `registerCapability` is exported as\r\n * a \"capability registration seam — for custom/host-defined capabilities\", but\r\n * the two primitives every capability hook needs — `usePersonalizationStore`\r\n * and `useStoreSelector` — are deliberately private (\"architecture doc §2.8 —\r\n * minimum API surface\"). A host could register a descriptor and then had no way\r\n * to read or write its payload. The seam was advertised but not complete, so\r\n * the slice has to live here, exactly like favorites and savedFilters.\r\n *\r\n * DENSITY IS DELIBERATELY NOT PART OF THIS. `useDensity` (v2/hooks) owns the\r\n * density preference as a GLOBAL, non-resource-scoped value on its own\r\n * `portnet-ui-density` key, and it applies `data-density` to <html>. Folding it\r\n * in here would give one preference two owners. Note however that it is\r\n * unscoped for the same reason this capability exists — tracked separately,\r\n * since moving it into the foundation changes its storage key and would make it\r\n * require a provider (a breaking change for current callers).\r\n * ─────────────────────────────────────────────────────────────────────────────\r\n *\r\n * Usage:\r\n *\r\n * const { hiddenColumns, setHiddenColumns } = useGridPreferences(\"ti:list\");\r\n *\r\n * <DataGridToolbar\r\n * columns={columns}\r\n * hiddenColumns={hiddenColumns}\r\n * onHiddenColumnsChange={setHiddenColumns}\r\n * … />\r\n * <DataGrid columns={columns} hiddenColumns={hiddenColumns} … />\r\n *\r\n * `resourceKey` namespaces preferences per list (e.g. \"ti:list\",\r\n * \"declarations:list\") so two grids in one app never collide. Requires a\r\n * <UserPersonalizationProvider> ancestor.\r\n *\r\n * Performance: the pure helpers rebuild only the touched resourceKey's entry\r\n * and shallow-copy the map, so the store's structural sharing keeps every OTHER\r\n * resource's preferences referentially stable — and the exposed `Set` is\r\n * memoised on the stored array, so its identity survives re-renders and does\r\n * not defeat DataGrid's memoisation.\r\n */\r\n\r\nimport * as React from \"react\";\r\n\r\nimport { registerCapability } from \"../schema\";\r\nimport {\r\n usePersonalizationStore,\r\n useStoreSelector,\r\n} from \"../personalizationContext\";\r\nimport type {\r\n PersonalizationSnapshot,\r\n PersonalizationStore,\r\n} from \"../createPersonalizationStore\";\r\n\r\n/** One resource's grid preferences. Optional members so the shape can grow\r\n * (column order, widths) without a schemaVersion bump. */\r\nexport interface GridPreferencesEntry {\r\n hiddenColumns?: string[] | undefined;\r\n}\r\n\r\n/** The gridPreferences capability payload: entries keyed by resourceKey. */\r\ntype GridPreferencesState = Record<string, GridPreferencesEntry>;\r\n\r\nexport const GRID_PREFERENCES_CAPABILITY_ID = \"gridPreferences\";\r\nconst SCHEMA_VERSION = 1;\r\n\r\nconst EMPTY_LIST: readonly string[] = Object.freeze([]);\r\nconst EMPTY_MAP: GridPreferencesState = Object.freeze({});\r\n\r\nfunction isString(value: unknown): value is string {\r\n return typeof value === \"string\";\r\n}\r\n\r\n/* Register at import time — the foundation reads this at hydration. */\r\nregisterCapability({\r\n id: GRID_PREFERENCES_CAPABILITY_ID,\r\n schemaVersion: SCHEMA_VERSION,\r\n defaultState: EMPTY_MAP, // { [resourceKey]: { hiddenColumns: string[] } }\r\n migrate: function migrateGridPreferences(\r\n _fromVersion: number,\r\n payload: unknown\r\n ): unknown {\r\n /* v1 is the initial schema, so there is no version to upgrade FROM — but\r\n * this is the load-time trust boundary for a payload that came back from\r\n * storage, and it is the right place to normalise it. A column key is used\r\n * to hide grid columns; a number or an object arriving from an older build\r\n * (or from hand-edited devtools storage) must not reach the DataGrid as if\r\n * it were one. Anything unrecognised is dropped rather than repaired. */\r\n if (!payload || typeof payload !== \"object\") return {};\r\n const source = payload as Record<string, unknown>;\r\n const next: GridPreferencesState = {};\r\n for (const resourceKey of Object.keys(source)) {\r\n const entry = source[resourceKey];\r\n if (!entry || typeof entry !== \"object\") continue;\r\n const raw = (entry as Record<string, unknown>)[\"hiddenColumns\"];\r\n if (!Array.isArray(raw)) continue;\r\n const keys = raw.filter(isString);\r\n if (keys.length > 0) next[resourceKey] = { hiddenColumns: keys };\r\n }\r\n return next;\r\n },\r\n});\r\n\r\n/* ── pure, resourceKey-scoped state helpers (structural sharing) ────── */\r\n\r\nfunction listFor(\r\n map: GridPreferencesState | null | undefined,\r\n resourceKey: string\r\n): readonly string[] {\r\n const entry = map ? map[resourceKey] : undefined;\r\n const list = entry ? entry.hiddenColumns : undefined;\r\n return Array.isArray(list) ? list : EMPTY_LIST;\r\n}\r\n\r\nfunction sameMembers(a: readonly string[], b: readonly string[]): boolean {\r\n if (a.length !== b.length) return false;\r\n for (let i = 0; i < a.length; i++) {\r\n if (a[i] !== b[i]) return false;\r\n }\r\n return true;\r\n}\r\n\r\nfunction setList(\r\n map: GridPreferencesState | null | undefined,\r\n resourceKey: string,\r\n keys: readonly string[]\r\n): GridPreferencesState {\r\n const base = map || EMPTY_MAP;\r\n // No-op when unchanged → the store short-circuits and nothing re-renders.\r\n if (sameMembers(listFor(base, resourceKey), keys)) return base;\r\n\r\n const next: GridPreferencesState = Object.assign({}, base);\r\n if (keys.length === 0) {\r\n // Nothing hidden is the default; drop the entry rather than persist an\r\n // empty array, so the payload stays tidy and a reset leaves no residue.\r\n delete next[resourceKey];\r\n } else {\r\n // Spread, not Object.assign: `base[resourceKey]` is\r\n // `GridPreferencesEntry | undefined` under noUncheckedIndexedAccess, and\r\n // passing undefined as an Object.assign source yields an intersection\r\n // containing undefined. Spreading undefined is well-defined ({}), and it\r\n // preserves any sibling preference a future schema adds alongside\r\n // hiddenColumns.\r\n next[resourceKey] = {\r\n ...base[resourceKey],\r\n hiddenColumns: keys.slice(),\r\n };\r\n }\r\n return next;\r\n}\r\n\r\n/* ── hook ───────────────────────────────────────────────────────────── */\r\n\r\nfunction useEnsureGridPreferences(store: PersonalizationStore): void {\r\n React.useEffect(\r\n function ensure() {\r\n store.ensureCapability(GRID_PREFERENCES_CAPABILITY_ID);\r\n },\r\n [store]\r\n );\r\n}\r\n\r\nexport interface UseGridPreferencesResult {\r\n /**\r\n * Hidden column keys, ready to hand straight to DataGrid /\r\n * DataGridToolbar.\r\n *\r\n * A mutable `Set`, not a `ReadonlySet`, on purpose: both components declare\r\n * `hiddenColumns?: Set<string> | string[]`, and `ReadonlySet` is not\r\n * assignable to `Set` (no add/delete/clear), so a readonly type would force\r\n * every call site into a cast. This mirrors `useFavorites().ids`. Treat it\r\n * as read-only regardless — it is memoised and shared, so mutating it in\r\n * place would desynchronise the store without persisting anything.\r\n */\r\n hiddenColumns: Set<string>;\r\n /** Replace the hidden-column set. Accepts a Set or an array. */\r\n setHiddenColumns: (hidden: Iterable<string>) => void;\r\n /** Show every column again (drops this resource's entry). */\r\n resetHiddenColumns: () => void;\r\n}\r\n\r\n/**\r\n * useGridPreferences(resourceKey) — persisted, per-user grid preferences for\r\n * one resource.\r\n */\r\nexport function useGridPreferences(\r\n resourceKey: string\r\n): UseGridPreferencesResult {\r\n const store = usePersonalizationStore();\r\n useEnsureGridPreferences(store);\r\n\r\n const selectList = React.useCallback(\r\n function selectList(snapshot: PersonalizationSnapshot): readonly string[] {\r\n const slice = snapshot[GRID_PREFERENCES_CAPABILITY_ID] as\r\n | GridPreferencesState\r\n | undefined;\r\n return slice ? listFor(slice, resourceKey) : EMPTY_LIST;\r\n },\r\n [resourceKey]\r\n );\r\n const keys = useStoreSelector(selectList);\r\n\r\n // Stable while `keys` is stable (structural sharing), so the Set identity\r\n // does not churn on every render and DataGrid's memoisation still holds.\r\n const hiddenColumns = React.useMemo(\r\n function buildSet(): Set<string> {\r\n return new Set<string>(keys);\r\n },\r\n [keys]\r\n );\r\n\r\n const setHiddenColumns = React.useCallback(\r\n function setHiddenColumns(hidden: Iterable<string>): void {\r\n // Normalise at the write boundary too: the caller is UI code, but the\r\n // value is about to be persisted and re-read by a later session.\r\n const nextKeys = Array.from(hidden).filter(isString);\r\n store.write<GridPreferencesState>(\r\n GRID_PREFERENCES_CAPABILITY_ID,\r\n function (prev) {\r\n return setList(prev, resourceKey, nextKeys);\r\n }\r\n );\r\n },\r\n [store, resourceKey]\r\n );\r\n\r\n const resetHiddenColumns = React.useCallback(\r\n function resetHiddenColumns(): void {\r\n store.write<GridPreferencesState>(\r\n GRID_PREFERENCES_CAPABILITY_ID,\r\n function (prev) {\r\n return setList(prev, resourceKey, EMPTY_LIST);\r\n }\r\n );\r\n },\r\n [store, resourceKey]\r\n );\r\n\r\n return React.useMemo(\r\n function value(): UseGridPreferencesResult {\r\n return {\r\n hiddenColumns: hiddenColumns,\r\n setHiddenColumns: setHiddenColumns,\r\n resetHiddenColumns: resetHiddenColumns,\r\n };\r\n },\r\n [hiddenColumns, setHiddenColumns, resetHiddenColumns]\r\n );\r\n}\r\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -9,8 +9,14 @@
|
|
|
9
9
|
* (Batch 5) — useFavoritesView + filter/sort helpers
|
|
10
10
|
* - savedFilters (Batch 4) — useSavedFilters (+ SaveFilterDialog,
|
|
11
11
|
* SavedFiltersMenu in patterns/)
|
|
12
|
+
* - gridPreferences — useGridPreferences (hidden columns; the
|
|
13
|
+
* DataGridToolbar column-visibility UI holds
|
|
14
|
+
* no state, so hosts were persisting it in
|
|
15
|
+
* unscoped localStorage — gap G-35)
|
|
12
16
|
*/
|
|
13
17
|
export { useFavorites, useIsFavorite, FAVORITES_CAPABILITY_ID, } from "./favorites";
|
|
14
18
|
export { useSavedFilters, SAVED_FILTERS_CAPABILITY_ID } from "./savedFilters";
|
|
19
|
+
export { useGridPreferences, GRID_PREFERENCES_CAPABILITY_ID, } from "./gridPreferences";
|
|
20
|
+
export type { UseGridPreferencesResult, GridPreferencesEntry, } from "./gridPreferences";
|
|
15
21
|
export { useFavoritesView, filterRowsByFavorites, sortRowsByFavorites, FAVORITES_FILTER, FAVORITES_SORT, } from "./favoritesView";
|
|
16
22
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/v2/personalization/capabilities/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/v2/personalization/capabilities/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EACL,YAAY,EACZ,aAAa,EACb,uBAAuB,GACxB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EACL,kBAAkB,EAClB,8BAA8B,GAC/B,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,GACf,MAAM,iBAAiB,CAAC"}
|
|
@@ -21,6 +21,12 @@ Object.defineProperty(exports, "FAVORITES_SORT", {
|
|
|
21
21
|
return _favoritesView.FAVORITES_SORT;
|
|
22
22
|
}
|
|
23
23
|
});
|
|
24
|
+
Object.defineProperty(exports, "GRID_PREFERENCES_CAPABILITY_ID", {
|
|
25
|
+
enumerable: true,
|
|
26
|
+
get: function get() {
|
|
27
|
+
return _gridPreferences.GRID_PREFERENCES_CAPABILITY_ID;
|
|
28
|
+
}
|
|
29
|
+
});
|
|
24
30
|
Object.defineProperty(exports, "SAVED_FILTERS_CAPABILITY_ID", {
|
|
25
31
|
enumerable: true,
|
|
26
32
|
get: function get() {
|
|
@@ -51,6 +57,12 @@ Object.defineProperty(exports, "useFavoritesView", {
|
|
|
51
57
|
return _favoritesView.useFavoritesView;
|
|
52
58
|
}
|
|
53
59
|
});
|
|
60
|
+
Object.defineProperty(exports, "useGridPreferences", {
|
|
61
|
+
enumerable: true,
|
|
62
|
+
get: function get() {
|
|
63
|
+
return _gridPreferences.useGridPreferences;
|
|
64
|
+
}
|
|
65
|
+
});
|
|
54
66
|
Object.defineProperty(exports, "useIsFavorite", {
|
|
55
67
|
enumerable: true,
|
|
56
68
|
get: function get() {
|
|
@@ -65,5 +77,6 @@ Object.defineProperty(exports, "useSavedFilters", {
|
|
|
65
77
|
});
|
|
66
78
|
var _favorites = require("./favorites");
|
|
67
79
|
var _savedFilters = require("./savedFilters");
|
|
80
|
+
var _gridPreferences = require("./gridPreferences");
|
|
68
81
|
var _favoritesView = require("./favoritesView");
|
|
69
82
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_favorites","require","_savedFilters","_favoritesView"],"sources":["../../../../src/lib/v2/personalization/capabilities/index.ts"],"sourcesContent":["/**\r\n * capabilities — Portnet UI v2 · personalization\r\n *\r\n * Capability slices. Each slice self-registers with the schema registry\r\n * at import time, so importing a slice's hook is enough to activate its\r\n * capability — no manual wiring on the host.\r\n *\r\n * - favorites (Batch 3) — useFavorites, useIsFavorite\r\n * (Batch 5) — useFavoritesView + filter/sort helpers\r\n * - savedFilters (Batch 4) — useSavedFilters (+ SaveFilterDialog,\r\n * SavedFiltersMenu in patterns/)\r\n */\r\n\r\nexport {\r\n useFavorites,\r\n useIsFavorite,\r\n FAVORITES_CAPABILITY_ID,\r\n} from \"./favorites\";\r\nexport { useSavedFilters, SAVED_FILTERS_CAPABILITY_ID } from \"./savedFilters\";\r\nexport {\r\n useFavoritesView,\r\n filterRowsByFavorites,\r\n sortRowsByFavorites,\r\n FAVORITES_FILTER,\r\n FAVORITES_SORT,\r\n} from \"./favoritesView\";\r\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","names":["_favorites","require","_savedFilters","_gridPreferences","_favoritesView"],"sources":["../../../../src/lib/v2/personalization/capabilities/index.ts"],"sourcesContent":["/**\r\n * capabilities — Portnet UI v2 · personalization\r\n *\r\n * Capability slices. Each slice self-registers with the schema registry\r\n * at import time, so importing a slice's hook is enough to activate its\r\n * capability — no manual wiring on the host.\r\n *\r\n * - favorites (Batch 3) — useFavorites, useIsFavorite\r\n * (Batch 5) — useFavoritesView + filter/sort helpers\r\n * - savedFilters (Batch 4) — useSavedFilters (+ SaveFilterDialog,\r\n * SavedFiltersMenu in patterns/)\r\n * - gridPreferences — useGridPreferences (hidden columns; the\r\n * DataGridToolbar column-visibility UI holds\r\n * no state, so hosts were persisting it in\r\n * unscoped localStorage — gap G-35)\r\n */\r\n\r\nexport {\r\n useFavorites,\r\n useIsFavorite,\r\n FAVORITES_CAPABILITY_ID,\r\n} from \"./favorites\";\r\nexport { useSavedFilters, SAVED_FILTERS_CAPABILITY_ID } from \"./savedFilters\";\r\nexport {\r\n useGridPreferences,\r\n GRID_PREFERENCES_CAPABILITY_ID,\r\n} from \"./gridPreferences\";\r\nexport type {\r\n UseGridPreferencesResult,\r\n GridPreferencesEntry,\r\n} from \"./gridPreferences\";\r\nexport {\r\n useFavoritesView,\r\n filterRowsByFavorites,\r\n sortRowsByFavorites,\r\n FAVORITES_FILTER,\r\n FAVORITES_SORT,\r\n} from \"./favoritesView\";\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA,IAAAA,UAAA,GAAAC,OAAA;AAKA,IAAAC,aAAA,GAAAD,OAAA;AACA,IAAAE,gBAAA,GAAAF,OAAA;AAQA,IAAAG,cAAA,GAAAH,OAAA","ignoreList":[]}
|
|
@@ -34,9 +34,9 @@ export declare const SAVED_FILTERS_CAPABILITY_ID = "savedFilters";
|
|
|
34
34
|
export interface SaveFilterInput {
|
|
35
35
|
name: string;
|
|
36
36
|
/** Opaque host filter payload — stored and re-emitted verbatim. */
|
|
37
|
-
criteria?: Record<string, unknown
|
|
38
|
-
isDefault?: boolean;
|
|
39
|
-
shared?: boolean;
|
|
37
|
+
criteria?: Record<string, unknown> | undefined;
|
|
38
|
+
isDefault?: boolean | undefined;
|
|
39
|
+
shared?: boolean | undefined;
|
|
40
40
|
}
|
|
41
41
|
export interface UseSavedFiltersResult {
|
|
42
42
|
filters: readonly SavedFilter[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"savedFilters.d.ts","sourceRoot":"","sources":["../../../../src/lib/v2/personalization/capabilities/savedFilters.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAWH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAK5C,eAAO,MAAM,2BAA2B,iBAAiB,CAAC;AA2J1D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"savedFilters.d.ts","sourceRoot":"","sources":["../../../../src/lib/v2/personalization/capabilities/savedFilters.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAWH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAK5C,eAAO,MAAM,2BAA2B,iBAAiB,CAAC;AA2J1D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IAC/C,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAChC,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC9B;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;IAChC,aAAa,EAAE,WAAW,GAAG,IAAI,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,WAAW,CAAC;IAC9C,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IAC1D,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,WAAW,GAAG,IAAI,CAAC;CAC7C;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,qBAAqB,CA0J1E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"savedFilters.js","names":["React","_interopRequireWildcard","require","_uuid","_schema","_personalizationContext","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","step","next","_e2","minLen","_arrayLikeToArray","toString","slice","constructor","name","from","test","arr","len","arr2","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","enumerable","push","apply","_objectSpread","target","arguments","source","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","toPrimitive","undefined","res","Number","SAVED_FILTERS_CAPABILITY_ID","exports","SCHEMA_VERSION","EMPTY_LIST","freeze","EMPTY_MAP","registerCapability","id","schemaVersion","defaultState","migrate","migrateSavedFilters","_fromVersion","payload","listFor","map","resourceKey","list","appendFilter","updatedAt","base","isDefault","demote","concat","patchFilter","patch","some","nextList","applyPatch","merged","demoteOthers","deleteFilter","keep","markDefault","changed","setFlag","shouldBe","unmarkDefault","clearFlag","useSavedFilters","store","usePersonalizationStore","useEffect","ensure","ensureCapability","selectList","useCallback","snapshot","filters","useStoreSelector","defaultFilter","useMemo","findDefault","_iterator","_step","save","now","Date","toISOString","scope","getScope","criteria","ownerId","userId","uuidv4","shared","createdAt","write","prev","update","rename","remove","setDefault","clearDefault","getById","_iterator2","_step2","count"],"sources":["../../../../src/lib/v2/personalization/capabilities/savedFilters.ts"],"sourcesContent":["/**\r\n * savedFilters — Portnet UI v2 · personalization capability\r\n *\r\n * The Saved Filters framework (Odoo-inspired \"saved searches\"). Lets a\r\n * user name and persist the current state of any list's filters, recall\r\n * them later, and optionally mark one as the default applied on open.\r\n *\r\n * Self-registers the \"savedFilters\" capability with the schema registry\r\n * at import time, so the capability-agnostic foundation discovers it\r\n * without hardcoding.\r\n *\r\n * State model (the capability payload):\r\n * { [resourceKey]: SavedFilter[] }\r\n * SavedFilter = {\r\n * id, name, resourceKey,\r\n * criteria, // OPAQUE — the host's own filter payload\r\n * ownerId,\r\n * isDefault, shared,\r\n * createdAt, updatedAt,\r\n * }\r\n *\r\n * `criteria` is never interpreted here — it is stored and re-emitted\r\n * verbatim, which is what keeps the framework reusable across every list\r\n * regardless of its filter schema (the host owns apply()). `shared` is\r\n * modelled but NOT enforced in Phase 1 (local persistence): it round-trips\r\n * for a future backend adapter and lets the UI show a shared indicator.\r\n *\r\n * Performance: the pure helpers rebuild only the touched resourceKey's\r\n * array and shallow-copy the map, so the store's structural sharing keeps\r\n * every OTHER resource's list referentially stable.\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport { v4 as uuidv4 } from \"uuid\";\r\n\r\nimport { registerCapability } from \"../schema\";\r\nimport {\r\n usePersonalizationStore,\r\n useStoreSelector,\r\n} from \"../personalizationContext\";\r\nimport type { PersonalizationSnapshot } from \"../createPersonalizationStore\";\r\nimport type { SavedFilter } from \"../types\";\r\n\r\n/** The saved-filters capability payload: SavedFilter arrays keyed by resourceKey. */\r\ntype SavedFiltersState = Record<string, SavedFilter[]>;\r\n\r\nexport const SAVED_FILTERS_CAPABILITY_ID = \"savedFilters\";\r\nconst SCHEMA_VERSION = 1;\r\n\r\nconst EMPTY_LIST: readonly SavedFilter[] = Object.freeze([]);\r\nconst EMPTY_MAP: SavedFiltersState = Object.freeze({});\r\n\r\n/* Register at import time — the foundation reads this at hydration. */\r\nregisterCapability({\r\n id: SAVED_FILTERS_CAPABILITY_ID,\r\n schemaVersion: SCHEMA_VERSION,\r\n defaultState: EMPTY_MAP, // { [resourceKey]: SavedFilter[] }\r\n migrate: function migrateSavedFilters(\r\n _fromVersion: number,\r\n payload: unknown\r\n ): unknown {\r\n // v1 is the initial schema. Defensive normalisation only.\r\n return payload && typeof payload === \"object\" ? payload : {};\r\n },\r\n});\r\n\r\n/* ── pure, resourceKey-scoped state helpers (structural sharing) ────── */\r\n\r\nfunction listFor(\r\n map: SavedFiltersState | null | undefined,\r\n resourceKey: string\r\n): readonly SavedFilter[] {\r\n const list = map ? map[resourceKey] : undefined;\r\n return Array.isArray(list) ? list : EMPTY_LIST;\r\n}\r\n\r\n// Append a fully-formed filter. Enforces a single default per resource:\r\n// when the new filter is default, demote any previous default.\r\nfunction appendFilter(\r\n map: SavedFiltersState | null | undefined,\r\n resourceKey: string,\r\n filter: SavedFilter,\r\n updatedAt: string\r\n): SavedFiltersState {\r\n const base = map || EMPTY_MAP;\r\n let list = listFor(base, resourceKey);\r\n if (filter.isDefault) {\r\n list = list.map(function demote(f) {\r\n return f.isDefault ? { ...f, isDefault: false, updatedAt: updatedAt } : f;\r\n });\r\n }\r\n const next: SavedFiltersState = { ...base };\r\n next[resourceKey] = list.concat([filter]);\r\n return next;\r\n}\r\n\r\n// Merge a patch into one filter (id/resourceKey are immutable). When the\r\n// patch promotes it to default, demote the others.\r\nfunction patchFilter(\r\n map: SavedFiltersState | null | undefined,\r\n resourceKey: string,\r\n id: string,\r\n patch: Partial<SavedFilter>,\r\n updatedAt: string\r\n): SavedFiltersState {\r\n const base = map || EMPTY_MAP;\r\n const list = listFor(base, resourceKey);\r\n if (\r\n !list.some(function (f) {\r\n return f.id === id;\r\n })\r\n ) {\r\n return base; // no-op\r\n }\r\n let nextList = list.map(function applyPatch(f) {\r\n if (f.id !== id) return f;\r\n const merged: SavedFilter = {\r\n ...f,\r\n ...patch,\r\n id: f.id,\r\n updatedAt: updatedAt,\r\n ...(f.resourceKey !== undefined ? { resourceKey: f.resourceKey } : {}),\r\n };\r\n return merged;\r\n });\r\n if (patch && patch.isDefault === true) {\r\n nextList = nextList.map(function demoteOthers(f) {\r\n if (f.id === id) return f;\r\n return f.isDefault ? { ...f, isDefault: false, updatedAt: updatedAt } : f;\r\n });\r\n }\r\n const next: SavedFiltersState = { ...base };\r\n next[resourceKey] = nextList;\r\n return next;\r\n}\r\n\r\nfunction deleteFilter(\r\n map: SavedFiltersState | null | undefined,\r\n resourceKey: string,\r\n id: string\r\n): SavedFiltersState {\r\n const base = map || EMPTY_MAP;\r\n const list = listFor(base, resourceKey);\r\n if (\r\n !list.some(function (f) {\r\n return f.id === id;\r\n })\r\n ) {\r\n return base; // no-op\r\n }\r\n const nextList = list.filter(function keep(f) {\r\n return f.id !== id;\r\n });\r\n const next: SavedFiltersState = { ...base };\r\n if (nextList.length === 0) delete next[resourceKey]; // keep the map tidy\r\n else next[resourceKey] = nextList;\r\n return next;\r\n}\r\n\r\nfunction markDefault(\r\n map: SavedFiltersState | null | undefined,\r\n resourceKey: string,\r\n id: string,\r\n updatedAt: string\r\n): SavedFiltersState {\r\n const base = map || EMPTY_MAP;\r\n const list = listFor(base, resourceKey);\r\n let changed = false;\r\n const nextList = list.map(function setFlag(f) {\r\n const shouldBe = f.id === id;\r\n if (!!f.isDefault === shouldBe) return f;\r\n changed = true;\r\n return { ...f, isDefault: shouldBe, updatedAt: updatedAt };\r\n });\r\n if (!changed) return base;\r\n const next: SavedFiltersState = { ...base };\r\n next[resourceKey] = nextList;\r\n return next;\r\n}\r\n\r\nfunction unmarkDefault(\r\n map: SavedFiltersState | null | undefined,\r\n resourceKey: string,\r\n updatedAt: string\r\n): SavedFiltersState {\r\n const base = map || EMPTY_MAP;\r\n const list = listFor(base, resourceKey);\r\n let changed = false;\r\n const nextList = list.map(function clearFlag(f) {\r\n if (!f.isDefault) return f;\r\n changed = true;\r\n return { ...f, isDefault: false, updatedAt: updatedAt };\r\n });\r\n if (!changed) return base;\r\n const next: SavedFiltersState = { ...base };\r\n next[resourceKey] = nextList;\r\n return next;\r\n}\r\n\r\n/* ── hook ───────────────────────────────────────────────────────────── */\r\n\r\nexport interface SaveFilterInput {\r\n name: string;\r\n /** Opaque host filter payload — stored and re-emitted verbatim. */\r\n criteria?: Record<string, unknown>;\r\n isDefault?: boolean;\r\n shared?: boolean;\r\n}\r\n\r\nexport interface UseSavedFiltersResult {\r\n filters: readonly SavedFilter[];\r\n defaultFilter: SavedFilter | null;\r\n count: number;\r\n save: (input: SaveFilterInput) => SavedFilter;\r\n update: (id: string, patch: Partial<SavedFilter>) => void;\r\n rename: (id: string, name: string) => void;\r\n remove: (id: string) => void;\r\n setDefault: (id: string) => void;\r\n clearDefault: () => void;\r\n getById: (id: string) => SavedFilter | null;\r\n}\r\n\r\n/**\r\n * useSavedFilters(resourceKey) — list, default, and CRUD for one resource.\r\n *\r\n * Applying a filter is the host's concern (it owns the criteria\r\n * semantics): read `getById(id).criteria` / a filter's `criteria` and set\r\n * your own filter state. SavedFiltersMenu wires this for you.\r\n */\r\nexport function useSavedFilters(resourceKey: string): UseSavedFiltersResult {\r\n const store = usePersonalizationStore();\r\n\r\n React.useEffect(\r\n function ensure() {\r\n store.ensureCapability(SAVED_FILTERS_CAPABILITY_ID);\r\n },\r\n [store]\r\n );\r\n\r\n const selectList = React.useCallback(\r\n function selectList(snapshot: PersonalizationSnapshot): readonly SavedFilter[] {\r\n const slice = snapshot[SAVED_FILTERS_CAPABILITY_ID] as\r\n | SavedFiltersState\r\n | undefined;\r\n return slice ? listFor(slice, resourceKey) : EMPTY_LIST;\r\n },\r\n [resourceKey]\r\n );\r\n const filters = useStoreSelector(selectList);\r\n\r\n const defaultFilter = React.useMemo(\r\n function findDefault(): SavedFilter | null {\r\n for (const f of filters) {\r\n if (f.isDefault) return f;\r\n }\r\n return null;\r\n },\r\n [filters]\r\n );\r\n\r\n const save = React.useCallback(\r\n function save(input: SaveFilterInput): SavedFilter {\r\n const now = new Date().toISOString();\r\n const scope = store.getScope ? store.getScope() : null;\r\n const criteria = input ? input.criteria : undefined;\r\n const ownerId = scope ? scope.userId : undefined;\r\n const filter: SavedFilter = {\r\n id: uuidv4(),\r\n name: input && input.name ? input.name : \"\",\r\n resourceKey: resourceKey,\r\n isDefault: !!(input && input.isDefault),\r\n shared: !!(input && input.shared),\r\n createdAt: now,\r\n updatedAt: now,\r\n ...(criteria !== undefined ? { criteria } : {}),\r\n ...(ownerId !== undefined ? { ownerId } : {}),\r\n };\r\n store.write<SavedFiltersState>(\r\n SAVED_FILTERS_CAPABILITY_ID,\r\n function (prev) {\r\n return appendFilter(prev, resourceKey, filter, now);\r\n }\r\n );\r\n return filter;\r\n },\r\n [store, resourceKey]\r\n );\r\n\r\n const update = React.useCallback(\r\n function update(id: string, patch: Partial<SavedFilter>): void {\r\n const now = new Date().toISOString();\r\n store.write<SavedFiltersState>(\r\n SAVED_FILTERS_CAPABILITY_ID,\r\n function (prev) {\r\n return patchFilter(prev, resourceKey, id, patch || {}, now);\r\n }\r\n );\r\n },\r\n [store, resourceKey]\r\n );\r\n\r\n const rename = React.useCallback(\r\n function rename(id: string, name: string): void {\r\n update(id, { name: name });\r\n },\r\n [update]\r\n );\r\n\r\n const remove = React.useCallback(\r\n function remove(id: string): void {\r\n store.write<SavedFiltersState>(\r\n SAVED_FILTERS_CAPABILITY_ID,\r\n function (prev) {\r\n return deleteFilter(prev, resourceKey, id);\r\n }\r\n );\r\n },\r\n [store, resourceKey]\r\n );\r\n\r\n const setDefault = React.useCallback(\r\n function setDefault(id: string): void {\r\n const now = new Date().toISOString();\r\n store.write<SavedFiltersState>(\r\n SAVED_FILTERS_CAPABILITY_ID,\r\n function (prev) {\r\n return markDefault(prev, resourceKey, id, now);\r\n }\r\n );\r\n },\r\n [store, resourceKey]\r\n );\r\n\r\n const clearDefault = React.useCallback(\r\n function clearDefault(): void {\r\n const now = new Date().toISOString();\r\n store.write<SavedFiltersState>(\r\n SAVED_FILTERS_CAPABILITY_ID,\r\n function (prev) {\r\n return unmarkDefault(prev, resourceKey, now);\r\n }\r\n );\r\n },\r\n [store, resourceKey]\r\n );\r\n\r\n const getById = React.useCallback(\r\n function getById(id: string): SavedFilter | null {\r\n for (const f of filters) {\r\n if (f.id === id) return f;\r\n }\r\n return null;\r\n },\r\n [filters]\r\n );\r\n\r\n return React.useMemo(\r\n function value(): UseSavedFiltersResult {\r\n return {\r\n filters: filters,\r\n defaultFilter: defaultFilter,\r\n count: filters.length,\r\n save: save,\r\n update: update,\r\n rename: rename,\r\n remove: remove,\r\n setDefault: setDefault,\r\n clearDefault: clearDefault,\r\n getById: getById,\r\n };\r\n },\r\n [\r\n filters,\r\n defaultFilter,\r\n save,\r\n update,\r\n rename,\r\n remove,\r\n setDefault,\r\n clearDefault,\r\n getById,\r\n ]\r\n );\r\n}\r\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"savedFilters.js","names":["React","_interopRequireWildcard","require","_uuid","_schema","_personalizationContext","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","step","next","_e2","minLen","_arrayLikeToArray","toString","slice","constructor","name","from","test","arr","len","arr2","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","enumerable","push","apply","_objectSpread","target","arguments","source","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","toPrimitive","undefined","res","Number","SAVED_FILTERS_CAPABILITY_ID","exports","SCHEMA_VERSION","EMPTY_LIST","freeze","EMPTY_MAP","registerCapability","id","schemaVersion","defaultState","migrate","migrateSavedFilters","_fromVersion","payload","listFor","map","resourceKey","list","appendFilter","updatedAt","base","isDefault","demote","concat","patchFilter","patch","some","nextList","applyPatch","merged","demoteOthers","deleteFilter","keep","markDefault","changed","setFlag","shouldBe","unmarkDefault","clearFlag","useSavedFilters","store","usePersonalizationStore","useEffect","ensure","ensureCapability","selectList","useCallback","snapshot","filters","useStoreSelector","defaultFilter","useMemo","findDefault","_iterator","_step","save","now","Date","toISOString","scope","getScope","criteria","ownerId","userId","uuidv4","shared","createdAt","write","prev","update","rename","remove","setDefault","clearDefault","getById","_iterator2","_step2","count"],"sources":["../../../../src/lib/v2/personalization/capabilities/savedFilters.ts"],"sourcesContent":["/**\r\n * savedFilters — Portnet UI v2 · personalization capability\r\n *\r\n * The Saved Filters framework (Odoo-inspired \"saved searches\"). Lets a\r\n * user name and persist the current state of any list's filters, recall\r\n * them later, and optionally mark one as the default applied on open.\r\n *\r\n * Self-registers the \"savedFilters\" capability with the schema registry\r\n * at import time, so the capability-agnostic foundation discovers it\r\n * without hardcoding.\r\n *\r\n * State model (the capability payload):\r\n * { [resourceKey]: SavedFilter[] }\r\n * SavedFilter = {\r\n * id, name, resourceKey,\r\n * criteria, // OPAQUE — the host's own filter payload\r\n * ownerId,\r\n * isDefault, shared,\r\n * createdAt, updatedAt,\r\n * }\r\n *\r\n * `criteria` is never interpreted here — it is stored and re-emitted\r\n * verbatim, which is what keeps the framework reusable across every list\r\n * regardless of its filter schema (the host owns apply()). `shared` is\r\n * modelled but NOT enforced in Phase 1 (local persistence): it round-trips\r\n * for a future backend adapter and lets the UI show a shared indicator.\r\n *\r\n * Performance: the pure helpers rebuild only the touched resourceKey's\r\n * array and shallow-copy the map, so the store's structural sharing keeps\r\n * every OTHER resource's list referentially stable.\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport { v4 as uuidv4 } from \"uuid\";\r\n\r\nimport { registerCapability } from \"../schema\";\r\nimport {\r\n usePersonalizationStore,\r\n useStoreSelector,\r\n} from \"../personalizationContext\";\r\nimport type { PersonalizationSnapshot } from \"../createPersonalizationStore\";\r\nimport type { SavedFilter } from \"../types\";\r\n\r\n/** The saved-filters capability payload: SavedFilter arrays keyed by resourceKey. */\r\ntype SavedFiltersState = Record<string, SavedFilter[]>;\r\n\r\nexport const SAVED_FILTERS_CAPABILITY_ID = \"savedFilters\";\r\nconst SCHEMA_VERSION = 1;\r\n\r\nconst EMPTY_LIST: readonly SavedFilter[] = Object.freeze([]);\r\nconst EMPTY_MAP: SavedFiltersState = Object.freeze({});\r\n\r\n/* Register at import time — the foundation reads this at hydration. */\r\nregisterCapability({\r\n id: SAVED_FILTERS_CAPABILITY_ID,\r\n schemaVersion: SCHEMA_VERSION,\r\n defaultState: EMPTY_MAP, // { [resourceKey]: SavedFilter[] }\r\n migrate: function migrateSavedFilters(\r\n _fromVersion: number,\r\n payload: unknown\r\n ): unknown {\r\n // v1 is the initial schema. Defensive normalisation only.\r\n return payload && typeof payload === \"object\" ? payload : {};\r\n },\r\n});\r\n\r\n/* ── pure, resourceKey-scoped state helpers (structural sharing) ────── */\r\n\r\nfunction listFor(\r\n map: SavedFiltersState | null | undefined,\r\n resourceKey: string\r\n): readonly SavedFilter[] {\r\n const list = map ? map[resourceKey] : undefined;\r\n return Array.isArray(list) ? list : EMPTY_LIST;\r\n}\r\n\r\n// Append a fully-formed filter. Enforces a single default per resource:\r\n// when the new filter is default, demote any previous default.\r\nfunction appendFilter(\r\n map: SavedFiltersState | null | undefined,\r\n resourceKey: string,\r\n filter: SavedFilter,\r\n updatedAt: string\r\n): SavedFiltersState {\r\n const base = map || EMPTY_MAP;\r\n let list = listFor(base, resourceKey);\r\n if (filter.isDefault) {\r\n list = list.map(function demote(f) {\r\n return f.isDefault ? { ...f, isDefault: false, updatedAt: updatedAt } : f;\r\n });\r\n }\r\n const next: SavedFiltersState = { ...base };\r\n next[resourceKey] = list.concat([filter]);\r\n return next;\r\n}\r\n\r\n// Merge a patch into one filter (id/resourceKey are immutable). When the\r\n// patch promotes it to default, demote the others.\r\nfunction patchFilter(\r\n map: SavedFiltersState | null | undefined,\r\n resourceKey: string,\r\n id: string,\r\n patch: Partial<SavedFilter>,\r\n updatedAt: string\r\n): SavedFiltersState {\r\n const base = map || EMPTY_MAP;\r\n const list = listFor(base, resourceKey);\r\n if (\r\n !list.some(function (f) {\r\n return f.id === id;\r\n })\r\n ) {\r\n return base; // no-op\r\n }\r\n let nextList = list.map(function applyPatch(f) {\r\n if (f.id !== id) return f;\r\n const merged: SavedFilter = {\r\n ...f,\r\n ...patch,\r\n id: f.id,\r\n updatedAt: updatedAt,\r\n ...(f.resourceKey !== undefined ? { resourceKey: f.resourceKey } : {}),\r\n };\r\n return merged;\r\n });\r\n if (patch && patch.isDefault === true) {\r\n nextList = nextList.map(function demoteOthers(f) {\r\n if (f.id === id) return f;\r\n return f.isDefault ? { ...f, isDefault: false, updatedAt: updatedAt } : f;\r\n });\r\n }\r\n const next: SavedFiltersState = { ...base };\r\n next[resourceKey] = nextList;\r\n return next;\r\n}\r\n\r\nfunction deleteFilter(\r\n map: SavedFiltersState | null | undefined,\r\n resourceKey: string,\r\n id: string\r\n): SavedFiltersState {\r\n const base = map || EMPTY_MAP;\r\n const list = listFor(base, resourceKey);\r\n if (\r\n !list.some(function (f) {\r\n return f.id === id;\r\n })\r\n ) {\r\n return base; // no-op\r\n }\r\n const nextList = list.filter(function keep(f) {\r\n return f.id !== id;\r\n });\r\n const next: SavedFiltersState = { ...base };\r\n if (nextList.length === 0) delete next[resourceKey]; // keep the map tidy\r\n else next[resourceKey] = nextList;\r\n return next;\r\n}\r\n\r\nfunction markDefault(\r\n map: SavedFiltersState | null | undefined,\r\n resourceKey: string,\r\n id: string,\r\n updatedAt: string\r\n): SavedFiltersState {\r\n const base = map || EMPTY_MAP;\r\n const list = listFor(base, resourceKey);\r\n let changed = false;\r\n const nextList = list.map(function setFlag(f) {\r\n const shouldBe = f.id === id;\r\n if (!!f.isDefault === shouldBe) return f;\r\n changed = true;\r\n return { ...f, isDefault: shouldBe, updatedAt: updatedAt };\r\n });\r\n if (!changed) return base;\r\n const next: SavedFiltersState = { ...base };\r\n next[resourceKey] = nextList;\r\n return next;\r\n}\r\n\r\nfunction unmarkDefault(\r\n map: SavedFiltersState | null | undefined,\r\n resourceKey: string,\r\n updatedAt: string\r\n): SavedFiltersState {\r\n const base = map || EMPTY_MAP;\r\n const list = listFor(base, resourceKey);\r\n let changed = false;\r\n const nextList = list.map(function clearFlag(f) {\r\n if (!f.isDefault) return f;\r\n changed = true;\r\n return { ...f, isDefault: false, updatedAt: updatedAt };\r\n });\r\n if (!changed) return base;\r\n const next: SavedFiltersState = { ...base };\r\n next[resourceKey] = nextList;\r\n return next;\r\n}\r\n\r\n/* ── hook ───────────────────────────────────────────────────────────── */\r\n\r\nexport interface SaveFilterInput {\r\n name: string;\r\n /** Opaque host filter payload — stored and re-emitted verbatim. */\r\n criteria?: Record<string, unknown> | undefined;\r\n isDefault?: boolean | undefined;\r\n shared?: boolean | undefined;\r\n}\r\n\r\nexport interface UseSavedFiltersResult {\r\n filters: readonly SavedFilter[];\r\n defaultFilter: SavedFilter | null;\r\n count: number;\r\n save: (input: SaveFilterInput) => SavedFilter;\r\n update: (id: string, patch: Partial<SavedFilter>) => void;\r\n rename: (id: string, name: string) => void;\r\n remove: (id: string) => void;\r\n setDefault: (id: string) => void;\r\n clearDefault: () => void;\r\n getById: (id: string) => SavedFilter | null;\r\n}\r\n\r\n/**\r\n * useSavedFilters(resourceKey) — list, default, and CRUD for one resource.\r\n *\r\n * Applying a filter is the host's concern (it owns the criteria\r\n * semantics): read `getById(id).criteria` / a filter's `criteria` and set\r\n * your own filter state. SavedFiltersMenu wires this for you.\r\n */\r\nexport function useSavedFilters(resourceKey: string): UseSavedFiltersResult {\r\n const store = usePersonalizationStore();\r\n\r\n React.useEffect(\r\n function ensure() {\r\n store.ensureCapability(SAVED_FILTERS_CAPABILITY_ID);\r\n },\r\n [store]\r\n );\r\n\r\n const selectList = React.useCallback(\r\n function selectList(snapshot: PersonalizationSnapshot): readonly SavedFilter[] {\r\n const slice = snapshot[SAVED_FILTERS_CAPABILITY_ID] as\r\n | SavedFiltersState\r\n | undefined;\r\n return slice ? listFor(slice, resourceKey) : EMPTY_LIST;\r\n },\r\n [resourceKey]\r\n );\r\n const filters = useStoreSelector(selectList);\r\n\r\n const defaultFilter = React.useMemo(\r\n function findDefault(): SavedFilter | null {\r\n for (const f of filters) {\r\n if (f.isDefault) return f;\r\n }\r\n return null;\r\n },\r\n [filters]\r\n );\r\n\r\n const save = React.useCallback(\r\n function save(input: SaveFilterInput): SavedFilter {\r\n const now = new Date().toISOString();\r\n const scope = store.getScope ? store.getScope() : null;\r\n const criteria = input ? input.criteria : undefined;\r\n const ownerId = scope ? scope.userId : undefined;\r\n const filter: SavedFilter = {\r\n id: uuidv4(),\r\n name: input && input.name ? input.name : \"\",\r\n resourceKey: resourceKey,\r\n isDefault: !!(input && input.isDefault),\r\n shared: !!(input && input.shared),\r\n createdAt: now,\r\n updatedAt: now,\r\n ...(criteria !== undefined ? { criteria } : {}),\r\n ...(ownerId !== undefined ? { ownerId } : {}),\r\n };\r\n store.write<SavedFiltersState>(\r\n SAVED_FILTERS_CAPABILITY_ID,\r\n function (prev) {\r\n return appendFilter(prev, resourceKey, filter, now);\r\n }\r\n );\r\n return filter;\r\n },\r\n [store, resourceKey]\r\n );\r\n\r\n const update = React.useCallback(\r\n function update(id: string, patch: Partial<SavedFilter>): void {\r\n const now = new Date().toISOString();\r\n store.write<SavedFiltersState>(\r\n SAVED_FILTERS_CAPABILITY_ID,\r\n function (prev) {\r\n return patchFilter(prev, resourceKey, id, patch || {}, now);\r\n }\r\n );\r\n },\r\n [store, resourceKey]\r\n );\r\n\r\n const rename = React.useCallback(\r\n function rename(id: string, name: string): void {\r\n update(id, { name: name });\r\n },\r\n [update]\r\n );\r\n\r\n const remove = React.useCallback(\r\n function remove(id: string): void {\r\n store.write<SavedFiltersState>(\r\n SAVED_FILTERS_CAPABILITY_ID,\r\n function (prev) {\r\n return deleteFilter(prev, resourceKey, id);\r\n }\r\n );\r\n },\r\n [store, resourceKey]\r\n );\r\n\r\n const setDefault = React.useCallback(\r\n function setDefault(id: string): void {\r\n const now = new Date().toISOString();\r\n store.write<SavedFiltersState>(\r\n SAVED_FILTERS_CAPABILITY_ID,\r\n function (prev) {\r\n return markDefault(prev, resourceKey, id, now);\r\n }\r\n );\r\n },\r\n [store, resourceKey]\r\n );\r\n\r\n const clearDefault = React.useCallback(\r\n function clearDefault(): void {\r\n const now = new Date().toISOString();\r\n store.write<SavedFiltersState>(\r\n SAVED_FILTERS_CAPABILITY_ID,\r\n function (prev) {\r\n return unmarkDefault(prev, resourceKey, now);\r\n }\r\n );\r\n },\r\n [store, resourceKey]\r\n );\r\n\r\n const getById = React.useCallback(\r\n function getById(id: string): SavedFilter | null {\r\n for (const f of filters) {\r\n if (f.id === id) return f;\r\n }\r\n return null;\r\n },\r\n [filters]\r\n );\r\n\r\n return React.useMemo(\r\n function value(): UseSavedFiltersResult {\r\n return {\r\n filters: filters,\r\n defaultFilter: defaultFilter,\r\n count: filters.length,\r\n save: save,\r\n update: update,\r\n rename: rename,\r\n remove: remove,\r\n setDefault: setDefault,\r\n clearDefault: clearDefault,\r\n getById: getById,\r\n };\r\n },\r\n [\r\n filters,\r\n defaultFilter,\r\n save,\r\n update,\r\n rename,\r\n remove,\r\n setDefault,\r\n clearDefault,\r\n getById,\r\n ]\r\n );\r\n}\r\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -32,7 +32,7 @@ export type PersonalizationSnapshot = Record<string, unknown>;
|
|
|
32
32
|
export type PersonalizationUpdater<T = unknown> = T | ((previous: T) => T);
|
|
33
33
|
export interface WriteOptions {
|
|
34
34
|
/** Set false for an in-memory-only write (no adapter persist). */
|
|
35
|
-
persist?: boolean;
|
|
35
|
+
persist?: boolean | undefined;
|
|
36
36
|
}
|
|
37
37
|
export interface PersonalizationErrorContext {
|
|
38
38
|
scope: Scope;
|
|
@@ -40,19 +40,19 @@ export interface PersonalizationErrorContext {
|
|
|
40
40
|
}
|
|
41
41
|
export type PersonalizationErrorHandler = (error: Error, context: PersonalizationErrorContext) => void;
|
|
42
42
|
export interface PersonalizationRuntimeOptions {
|
|
43
|
-
onError?: PersonalizationErrorHandler;
|
|
44
|
-
hydrateStrategy?: HydrateStrategy;
|
|
43
|
+
onError?: PersonalizationErrorHandler | undefined;
|
|
44
|
+
hydrateStrategy?: HydrateStrategy | undefined;
|
|
45
45
|
}
|
|
46
46
|
export interface PersonalizationStoreConfig {
|
|
47
47
|
/** Identity the store persists against. Defaults to { userId: "anonymous" }. */
|
|
48
|
-
scope?: Scope;
|
|
48
|
+
scope?: Scope | undefined;
|
|
49
49
|
/** Storage adapter. When null the store is a pure in-memory session. */
|
|
50
|
-
adapter?: Adapter | null;
|
|
50
|
+
adapter?: Adapter | null | undefined;
|
|
51
51
|
/** Per-capability seed overrides, read at creation/hydration. */
|
|
52
|
-
defaults?: Record<string, unknown> | null;
|
|
53
|
-
onError?: PersonalizationErrorHandler;
|
|
52
|
+
defaults?: Record<string, unknown> | null | undefined;
|
|
53
|
+
onError?: PersonalizationErrorHandler | undefined;
|
|
54
54
|
/** @default "remote-wins" */
|
|
55
|
-
hydrateStrategy?: HydrateStrategy;
|
|
55
|
+
hydrateStrategy?: HydrateStrategy | undefined;
|
|
56
56
|
}
|
|
57
57
|
/** The store handle returned by createPersonalizationStore. */
|
|
58
58
|
export interface PersonalizationStore {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createPersonalizationStore.d.ts","sourceRoot":"","sources":["../../../src/lib/v2/personalization/createPersonalizationStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAOH,OAAO,KAAK,EAAE,OAAO,EAAY,eAAe,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEzE,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE9E,mEAAmE;AACnE,MAAM,MAAM,uBAAuB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE9D,mEAAmE;AACnE,MAAM,MAAM,sBAAsB,CAAC,CAAC,GAAG,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAE3E,MAAM,WAAW,YAAY;IAC3B,kEAAkE;IAClE,OAAO,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"createPersonalizationStore.d.ts","sourceRoot":"","sources":["../../../src/lib/v2/personalization/createPersonalizationStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAOH,OAAO,KAAK,EAAE,OAAO,EAAY,eAAe,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEzE,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE9E,mEAAmE;AACnE,MAAM,MAAM,uBAAuB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE9D,mEAAmE;AACnE,MAAM,MAAM,sBAAsB,CAAC,CAAC,GAAG,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAE3E,MAAM,WAAW,YAAY;IAC3B,kEAAkE;IAClE,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC/B;AAED,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,KAAK,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,2BAA2B,GAAG,CACxC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,2BAA2B,KACjC,IAAI,CAAC;AAEV,MAAM,WAAW,6BAA6B;IAC5C,OAAO,CAAC,EAAE,2BAA2B,GAAG,SAAS,CAAC;IAClD,eAAe,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;CAC/C;AAED,MAAM,WAAW,0BAA0B;IACzC,gFAAgF;IAChF,KAAK,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC;IAC1B,wEAAwE;IACxE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;IACrC,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IACtD,OAAO,CAAC,EAAE,2BAA2B,GAAG,SAAS,CAAC;IAClD,6BAA6B;IAC7B,eAAe,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;CAC/C;AAED,+DAA+D;AAC/D,MAAM,WAAW,oBAAoB;IAEnC,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;IAChD,WAAW,EAAE,MAAM,uBAAuB,CAAC;IAC3C,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;IAEjD,IAAI,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,YAAY,EAAE,MAAM,KAAK,CAAC,CAAC;IAC/C,KAAK,EAAE,CAAC,CAAC,GAAG,OAAO,EACjB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC,EAClC,OAAO,CAAC,EAAE,YAAY,KACnB,CAAC,GAAG,SAAS,CAAC;IACnB,gBAAgB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,eAAe,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IAEhD,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,OAAO,EAAE,MAAM,MAAM,IAAI,CAAC;IAC1B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE,6BAA6B,KAAK,IAAI,CAAC;IAE3D,MAAM,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,qBAAqB,CAAC;IACxD,KAAK,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,KAAK,GAAG,IAAI,CAAC;IAC9C,UAAU,EAAE,MAAM,OAAO,CAAC;IAC1B,QAAQ,EAAE,MAAM,KAAK,CAAC;CACvB;AAcD,MAAM,CAAC,OAAO,UAAU,0BAA0B,CAChD,MAAM,CAAC,EAAE,0BAA0B,GAClC,oBAAoB,CAyXtB"}
|