@slotted/angular 0.1.0-beta.1 → 0.1.0-beta.10
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/README.md +4 -0
- package/docs/AGENTS.snippet.md +12 -0
- package/docs/alert.json +7 -1
- package/docs/alert.md +3 -3
- package/docs/app-shell.examples.md +1 -1
- package/docs/app-shell.json +5 -5
- package/docs/app-shell.md +2 -2
- package/docs/avatar.json +22 -1
- package/docs/avatar.md +5 -3
- package/docs/badge.json +7 -1
- package/docs/badge.md +3 -3
- package/docs/button-group.json +2 -0
- package/docs/button-group.md +1 -1
- package/docs/button.json +51 -11
- package/docs/button.md +10 -6
- package/docs/calendar.json +8 -1
- package/docs/calendar.md +1 -0
- package/docs/cascader.json +1 -0
- package/docs/cascader.md +1 -1
- package/docs/chart.examples.md +1 -1
- package/docs/chart.json +10 -1
- package/docs/chart.md +3 -2
- package/docs/checkbox.json +7 -0
- package/docs/checkbox.md +1 -0
- package/docs/code-block.json +92 -92
- package/docs/code-block.md +69 -69
- package/docs/combobox.json +1 -0
- package/docs/combobox.md +1 -1
- package/docs/currency-field.json +40 -1
- package/docs/currency-field.md +5 -1
- package/docs/data-grid.examples.md +2 -2
- package/docs/data-grid.json +24 -7
- package/docs/data-grid.md +1 -1
- package/docs/data-grid.props.md +6 -4
- package/docs/data-list.json +2 -1
- package/docs/data-list.md +1 -1
- package/docs/date-field.json +9 -1
- package/docs/date-field.md +3 -2
- package/docs/date-picker.examples.md +36 -0
- package/docs/date-picker.json +20 -5
- package/docs/date-picker.md +5 -4
- package/docs/datetime-field.json +1 -0
- package/docs/datetime-field.md +1 -1
- package/docs/dialog.examples.md +158 -136
- package/docs/dialog.json +35 -11
- package/docs/dialog.md +4 -2
- package/docs/dialog.props.md +1 -1
- package/docs/drawer.json +5 -0
- package/docs/drawer.md +1 -0
- package/docs/entity-picker.json +19 -4
- package/docs/entity-picker.md +8 -6
- package/docs/event-calendar.json +7 -0
- package/docs/event-calendar.md +1 -0
- package/docs/filter-bar.json +118 -118
- package/docs/filter-bar.md +79 -79
- package/docs/form.json +2 -1
- package/docs/form.md +1 -1
- package/docs/guidelines/README.md +27 -0
- package/docs/guidelines/async-feedback.md +129 -0
- package/docs/guidelines/browsing.md +74 -0
- package/docs/guidelines/builders.md +97 -0
- package/docs/guidelines/composition.md +143 -0
- package/docs/guidelines/conversations.md +59 -0
- package/docs/guidelines/errors-and-conflicts.md +71 -0
- package/docs/guidelines/forms.md +202 -0
- package/docs/guidelines/index.md +129 -0
- package/docs/guidelines/layout-alignment.md +95 -0
- package/docs/guidelines/ledgers.md +45 -0
- package/docs/guidelines/list-pages.md +206 -0
- package/docs/guidelines/overviews.md +76 -0
- package/docs/guidelines/own-elements.md +115 -0
- package/docs/guidelines/reading-permissions.md +55 -0
- package/docs/guidelines/record-pages.md +178 -0
- package/docs/guidelines/reports.md +123 -0
- package/docs/guidelines/shell-composition.md +94 -0
- package/docs/guidelines/workspaces.md +46 -0
- package/docs/icon.json +3 -1
- package/docs/icon.md +3 -3
- package/docs/index.md +12 -0
- package/docs/inline-message.json +14 -2
- package/docs/inline-message.md +4 -3
- package/docs/list-item.json +9 -1
- package/docs/list-item.md +3 -3
- package/docs/list.json +19 -1
- package/docs/list.md +3 -1
- package/docs/markdown.json +79 -79
- package/docs/markdown.md +65 -65
- package/docs/menu.json +12 -0
- package/docs/menu.md +2 -0
- package/docs/message.json +7 -1
- package/docs/message.md +3 -3
- package/docs/multi-select.json +1 -0
- package/docs/multi-select.md +1 -1
- package/docs/notification-center.json +4 -0
- package/docs/notification-center.md +2 -2
- package/docs/number-field.json +1 -0
- package/docs/number-field.md +1 -1
- package/docs/otp-input.json +1 -0
- package/docs/otp-input.md +1 -1
- package/docs/page-header.json +4 -3
- package/docs/page-header.md +2 -2
- package/docs/page.json +1 -0
- package/docs/page.md +1 -0
- package/docs/popover.json +1 -1
- package/docs/progress-indicator.json +4 -3
- package/docs/progress-indicator.md +4 -4
- package/docs/prompt-composer.json +41 -1
- package/docs/prompt-composer.md +5 -1
- package/docs/rating.json +5 -3
- package/docs/rating.md +5 -5
- package/docs/section.json +27 -15
- package/docs/section.md +11 -9
- package/docs/segmented-control.json +36 -12
- package/docs/segmented-control.md +17 -1
- package/docs/select.json +1 -0
- package/docs/select.md +1 -1
- package/docs/side-navigation.json +1 -0
- package/docs/side-navigation.md +1 -1
- package/docs/skills/build-own-element/SKILL.md +90 -0
- package/docs/skills/compose-screen/SKILL.md +95 -0
- package/docs/skills/index.md +9 -0
- package/docs/skills/review-screen/SKILL.md +77 -0
- package/docs/skills/theme-app/SKILL.md +87 -0
- package/docs/skills/waiting-states/SKILL.md +143 -0
- package/docs/sparkline.json +5 -2
- package/docs/sparkline.md +4 -4
- package/docs/split-button.json +4 -1
- package/docs/split-button.md +3 -3
- package/docs/stat-card.json +5 -1
- package/docs/stat-card.md +3 -3
- package/docs/table.examples.md +3 -3
- package/docs/table.json +85 -3
- package/docs/table.md +12 -1
- package/docs/tabs.json +17 -7
- package/docs/tabs.md +3 -2
- package/docs/tag.json +14 -4
- package/docs/tag.md +6 -6
- package/docs/tags-input.json +29 -2
- package/docs/tags-input.md +4 -1
- package/docs/text-field.json +2 -1
- package/docs/text-field.md +2 -2
- package/docs/textarea.json +1 -0
- package/docs/textarea.md +1 -1
- package/docs/time-field.json +1 -0
- package/docs/time-field.md +1 -1
- package/docs/timeline.json +138 -132
- package/docs/timeline.md +125 -125
- package/docs/toast.json +7 -1
- package/docs/toast.md +3 -3
- package/docs/toggle-group.json +14 -3
- package/docs/toggle-group.md +3 -3
- package/docs/toggle.json +12 -3
- package/docs/toggle.md +3 -3
- package/docs/tokens.md +467 -0
- package/docs/tour.json +1 -1
- package/docs/typography.json +4 -2
- package/docs/typography.md +4 -4
- package/fesm2022/slotted-angular-accordion.mjs +4 -2
- package/fesm2022/slotted-angular-accordion.mjs.map +1 -1
- package/fesm2022/slotted-angular-action-bar.mjs +22 -11
- package/fesm2022/slotted-angular-action-bar.mjs.map +1 -1
- package/fesm2022/slotted-angular-action-sheet.mjs +42 -29
- package/fesm2022/slotted-angular-action-sheet.mjs.map +1 -1
- package/fesm2022/slotted-angular-alert.mjs +18 -11
- package/fesm2022/slotted-angular-alert.mjs.map +1 -1
- package/fesm2022/slotted-angular-app-shell.mjs +111 -61
- package/fesm2022/slotted-angular-app-shell.mjs.map +1 -1
- package/fesm2022/slotted-angular-aspect-ratio.mjs +4 -2
- package/fesm2022/slotted-angular-aspect-ratio.mjs.map +1 -1
- package/fesm2022/slotted-angular-attachment.mjs +31 -20
- package/fesm2022/slotted-angular-attachment.mjs.map +1 -1
- package/fesm2022/slotted-angular-avatar-group.mjs +9 -6
- package/fesm2022/slotted-angular-avatar-group.mjs.map +1 -1
- package/fesm2022/slotted-angular-avatar.mjs +14 -7
- package/fesm2022/slotted-angular-avatar.mjs.map +1 -1
- package/fesm2022/slotted-angular-badge.mjs +14 -10
- package/fesm2022/slotted-angular-badge.mjs.map +1 -1
- package/fesm2022/slotted-angular-breadcrumb.mjs +26 -18
- package/fesm2022/slotted-angular-breadcrumb.mjs.map +1 -1
- package/fesm2022/slotted-angular-button-group.mjs +7 -4
- package/fesm2022/slotted-angular-button-group.mjs.map +1 -1
- package/fesm2022/slotted-angular-button.mjs +90 -29
- package/fesm2022/slotted-angular-button.mjs.map +1 -1
- package/fesm2022/slotted-angular-calendar.mjs +235 -58
- package/fesm2022/slotted-angular-calendar.mjs.map +1 -1
- package/fesm2022/slotted-angular-card.mjs +18 -16
- package/fesm2022/slotted-angular-card.mjs.map +1 -1
- package/fesm2022/slotted-angular-carousel.mjs +22 -11
- package/fesm2022/slotted-angular-carousel.mjs.map +1 -1
- package/fesm2022/slotted-angular-cascader.mjs +166 -66
- package/fesm2022/slotted-angular-cascader.mjs.map +1 -1
- package/fesm2022/slotted-angular-chart.mjs +53 -20
- package/fesm2022/slotted-angular-chart.mjs.map +1 -1
- package/fesm2022/slotted-angular-checkbox-group.mjs +5 -3
- package/fesm2022/slotted-angular-checkbox-group.mjs.map +1 -1
- package/fesm2022/slotted-angular-checkbox.mjs +23 -9
- package/fesm2022/slotted-angular-checkbox.mjs.map +1 -1
- package/fesm2022/slotted-angular-code-block.mjs +29 -15
- package/fesm2022/slotted-angular-code-block.mjs.map +1 -1
- package/fesm2022/slotted-angular-collapsible.mjs +20 -15
- package/fesm2022/slotted-angular-collapsible.mjs.map +1 -1
- package/fesm2022/slotted-angular-color-picker.mjs +77 -22
- package/fesm2022/slotted-angular-color-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-column-manager.mjs +68 -31
- package/fesm2022/slotted-angular-column-manager.mjs.map +1 -1
- package/fesm2022/slotted-angular-combobox.mjs +112 -39
- package/fesm2022/slotted-angular-combobox.mjs.map +1 -1
- package/fesm2022/slotted-angular-command-palette.mjs +150 -54
- package/fesm2022/slotted-angular-command-palette.mjs.map +1 -1
- package/fesm2022/slotted-angular-container.mjs +6 -4
- package/fesm2022/slotted-angular-container.mjs.map +1 -1
- package/fesm2022/slotted-angular-context-menu.mjs +5 -4
- package/fesm2022/slotted-angular-context-menu.mjs.map +1 -1
- package/fesm2022/slotted-angular-currency-field.mjs +149 -32
- package/fesm2022/slotted-angular-currency-field.mjs.map +1 -1
- package/fesm2022/slotted-angular-dashboard-grid.mjs +142 -63
- package/fesm2022/slotted-angular-dashboard-grid.mjs.map +1 -1
- package/fesm2022/slotted-angular-data-grid.mjs +354 -113
- package/fesm2022/slotted-angular-data-grid.mjs.map +1 -1
- package/fesm2022/slotted-angular-data-list.mjs +83 -50
- package/fesm2022/slotted-angular-data-list.mjs.map +1 -1
- package/fesm2022/slotted-angular-date-field.mjs +74 -25
- package/fesm2022/slotted-angular-date-field.mjs.map +1 -1
- package/fesm2022/slotted-angular-date-picker.mjs +112 -40
- package/fesm2022/slotted-angular-date-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-date-range-picker.mjs +45 -22
- package/fesm2022/slotted-angular-date-range-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-datetime-field.mjs +48 -16
- package/fesm2022/slotted-angular-datetime-field.mjs.map +1 -1
- package/fesm2022/slotted-angular-datetime-picker.mjs +41 -29
- package/fesm2022/slotted-angular-datetime-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-datetime-range-picker.mjs +115 -48
- package/fesm2022/slotted-angular-datetime-range-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-description-list.mjs +33 -19
- package/fesm2022/slotted-angular-description-list.mjs.map +1 -1
- package/fesm2022/slotted-angular-detail-panel.mjs +29 -18
- package/fesm2022/slotted-angular-detail-panel.mjs.map +1 -1
- package/fesm2022/slotted-angular-dialog.mjs +72 -30
- package/fesm2022/slotted-angular-dialog.mjs.map +1 -1
- package/fesm2022/slotted-angular-divider.mjs +7 -5
- package/fesm2022/slotted-angular-divider.mjs.map +1 -1
- package/fesm2022/slotted-angular-drawer.mjs +53 -29
- package/fesm2022/slotted-angular-drawer.mjs.map +1 -1
- package/fesm2022/slotted-angular-entity-picker.mjs +468 -75
- package/fesm2022/slotted-angular-entity-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-event-calendar.mjs +275 -108
- package/fesm2022/slotted-angular-event-calendar.mjs.map +1 -1
- package/fesm2022/slotted-angular-field-group.mjs +14 -7
- package/fesm2022/slotted-angular-field-group.mjs.map +1 -1
- package/fesm2022/slotted-angular-field.mjs +35 -15
- package/fesm2022/slotted-angular-field.mjs.map +1 -1
- package/fesm2022/slotted-angular-filter-bar.mjs +112 -51
- package/fesm2022/slotted-angular-filter-bar.mjs.map +1 -1
- package/fesm2022/slotted-angular-form.mjs +18 -10
- package/fesm2022/slotted-angular-form.mjs.map +1 -1
- package/fesm2022/slotted-angular-fullscreen.mjs +14 -8
- package/fesm2022/slotted-angular-fullscreen.mjs.map +1 -1
- package/fesm2022/slotted-angular-grid.mjs +4 -2
- package/fesm2022/slotted-angular-grid.mjs.map +1 -1
- package/fesm2022/slotted-angular-highlight.mjs +5 -3
- package/fesm2022/slotted-angular-highlight.mjs.map +1 -1
- package/fesm2022/slotted-angular-hover-card.mjs +5 -4
- package/fesm2022/slotted-angular-hover-card.mjs.map +1 -1
- package/fesm2022/slotted-angular-icon.mjs +6 -3
- package/fesm2022/slotted-angular-icon.mjs.map +1 -1
- package/fesm2022/slotted-angular-image.mjs +13 -10
- package/fesm2022/slotted-angular-image.mjs.map +1 -1
- package/fesm2022/slotted-angular-import-export-center.mjs +167 -99
- package/fesm2022/slotted-angular-import-export-center.mjs.map +1 -1
- package/fesm2022/slotted-angular-inline-message.mjs +88 -13
- package/fesm2022/slotted-angular-inline-message.mjs.map +1 -1
- package/fesm2022/slotted-angular-inline.mjs +4 -2
- package/fesm2022/slotted-angular-inline.mjs.map +1 -1
- package/fesm2022/slotted-angular-kbd.mjs +11 -7
- package/fesm2022/slotted-angular-kbd.mjs.map +1 -1
- package/fesm2022/slotted-angular-link.mjs +5 -3
- package/fesm2022/slotted-angular-link.mjs.map +1 -1
- package/fesm2022/slotted-angular-list-item.mjs +21 -18
- package/fesm2022/slotted-angular-list-item.mjs.map +1 -1
- package/fesm2022/slotted-angular-list.mjs +37 -22
- package/fesm2022/slotted-angular-list.mjs.map +1 -1
- package/fesm2022/slotted-angular-listbox.mjs +39 -21
- package/fesm2022/slotted-angular-listbox.mjs.map +1 -1
- package/fesm2022/slotted-angular-loading-overlay.mjs +59 -22
- package/fesm2022/slotted-angular-loading-overlay.mjs.map +1 -1
- package/fesm2022/slotted-angular-markdown.mjs +31 -19
- package/fesm2022/slotted-angular-markdown.mjs.map +1 -1
- package/fesm2022/slotted-angular-menu.mjs +51 -29
- package/fesm2022/slotted-angular-menu.mjs.map +1 -1
- package/fesm2022/slotted-angular-menubar.mjs +4 -2
- package/fesm2022/slotted-angular-menubar.mjs.map +1 -1
- package/fesm2022/slotted-angular-message-scroller.mjs +28 -15
- package/fesm2022/slotted-angular-message-scroller.mjs.map +1 -1
- package/fesm2022/slotted-angular-message.mjs +113 -51
- package/fesm2022/slotted-angular-message.mjs.map +1 -1
- package/fesm2022/slotted-angular-multi-select.mjs +189 -87
- package/fesm2022/slotted-angular-multi-select.mjs.map +1 -1
- package/fesm2022/slotted-angular-navigation-menu.mjs +34 -26
- package/fesm2022/slotted-angular-navigation-menu.mjs.map +1 -1
- package/fesm2022/slotted-angular-notification-center.mjs +108 -65
- package/fesm2022/slotted-angular-notification-center.mjs.map +1 -1
- package/fesm2022/slotted-angular-number-field.mjs +23 -11
- package/fesm2022/slotted-angular-number-field.mjs.map +1 -1
- package/fesm2022/slotted-angular-otp-input.mjs +13 -8
- package/fesm2022/slotted-angular-otp-input.mjs.map +1 -1
- package/fesm2022/slotted-angular-page-header.mjs +75 -45
- package/fesm2022/slotted-angular-page-header.mjs.map +1 -1
- package/fesm2022/slotted-angular-page.mjs +38 -10
- package/fesm2022/slotted-angular-page.mjs.map +1 -1
- package/fesm2022/slotted-angular-pagination.mjs +35 -22
- package/fesm2022/slotted-angular-pagination.mjs.map +1 -1
- package/fesm2022/slotted-angular-popover.mjs +32 -19
- package/fesm2022/slotted-angular-popover.mjs.map +1 -1
- package/fesm2022/slotted-angular-progress-indicator.mjs +236 -52
- package/fesm2022/slotted-angular-progress-indicator.mjs.map +1 -1
- package/fesm2022/slotted-angular-prompt-composer.mjs +41 -20
- package/fesm2022/slotted-angular-prompt-composer.mjs.map +1 -1
- package/fesm2022/slotted-angular-prose.mjs +14 -11
- package/fesm2022/slotted-angular-prose.mjs.map +1 -1
- package/fesm2022/slotted-angular-radio-group.mjs +15 -9
- package/fesm2022/slotted-angular-radio-group.mjs.map +1 -1
- package/fesm2022/slotted-angular-rating.mjs +138 -82
- package/fesm2022/slotted-angular-rating.mjs.map +1 -1
- package/fesm2022/slotted-angular-result-state.mjs +16 -12
- package/fesm2022/slotted-angular-result-state.mjs.map +1 -1
- package/fesm2022/slotted-angular-saved-views.mjs +43 -16
- package/fesm2022/slotted-angular-saved-views.mjs.map +1 -1
- package/fesm2022/slotted-angular-scroll-area.mjs +13 -5
- package/fesm2022/slotted-angular-scroll-area.mjs.map +1 -1
- package/fesm2022/slotted-angular-section.mjs +53 -18
- package/fesm2022/slotted-angular-section.mjs.map +1 -1
- package/fesm2022/slotted-angular-segmented-control.mjs +37 -11
- package/fesm2022/slotted-angular-segmented-control.mjs.map +1 -1
- package/fesm2022/slotted-angular-select.mjs +184 -94
- package/fesm2022/slotted-angular-select.mjs.map +1 -1
- package/fesm2022/slotted-angular-side-navigation.mjs +46 -35
- package/fesm2022/slotted-angular-side-navigation.mjs.map +1 -1
- package/fesm2022/slotted-angular-skeleton.mjs +32 -16
- package/fesm2022/slotted-angular-skeleton.mjs.map +1 -1
- package/fesm2022/slotted-angular-slider.mjs +31 -11
- package/fesm2022/slotted-angular-slider.mjs.map +1 -1
- package/fesm2022/slotted-angular-sparkline.mjs +41 -14
- package/fesm2022/slotted-angular-sparkline.mjs.map +1 -1
- package/fesm2022/slotted-angular-split-button.mjs +25 -11
- package/fesm2022/slotted-angular-split-button.mjs.map +1 -1
- package/fesm2022/slotted-angular-splitter.mjs +11 -9
- package/fesm2022/slotted-angular-splitter.mjs.map +1 -1
- package/fesm2022/slotted-angular-stack.mjs +4 -2
- package/fesm2022/slotted-angular-stack.mjs.map +1 -1
- package/fesm2022/slotted-angular-stat-card.mjs +35 -28
- package/fesm2022/slotted-angular-stat-card.mjs.map +1 -1
- package/fesm2022/slotted-angular-status-indicator.mjs +22 -8
- package/fesm2022/slotted-angular-status-indicator.mjs.map +1 -1
- package/fesm2022/slotted-angular-stepper.mjs +40 -15
- package/fesm2022/slotted-angular-stepper.mjs.map +1 -1
- package/fesm2022/slotted-angular-switch.mjs +15 -10
- package/fesm2022/slotted-angular-switch.mjs.map +1 -1
- package/fesm2022/slotted-angular-table-of-contents.mjs +29 -21
- package/fesm2022/slotted-angular-table-of-contents.mjs.map +1 -1
- package/fesm2022/slotted-angular-table.mjs +243 -73
- package/fesm2022/slotted-angular-table.mjs.map +1 -1
- package/fesm2022/slotted-angular-tabs.mjs +42 -18
- package/fesm2022/slotted-angular-tabs.mjs.map +1 -1
- package/fesm2022/slotted-angular-tag.mjs +19 -12
- package/fesm2022/slotted-angular-tag.mjs.map +1 -1
- package/fesm2022/slotted-angular-tags-input.mjs +253 -28
- package/fesm2022/slotted-angular-tags-input.mjs.map +1 -1
- package/fesm2022/slotted-angular-text-field.mjs +49 -15
- package/fesm2022/slotted-angular-text-field.mjs.map +1 -1
- package/fesm2022/slotted-angular-textarea.mjs +5 -3
- package/fesm2022/slotted-angular-textarea.mjs.map +1 -1
- package/fesm2022/slotted-angular-time-field.mjs +48 -14
- package/fesm2022/slotted-angular-time-field.mjs.map +1 -1
- package/fesm2022/slotted-angular-time-picker.mjs +32 -20
- package/fesm2022/slotted-angular-time-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-time-range-picker.mjs +113 -46
- package/fesm2022/slotted-angular-time-range-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-timeline.mjs +135 -64
- package/fesm2022/slotted-angular-timeline.mjs.map +1 -1
- package/fesm2022/slotted-angular-toast.mjs +43 -31
- package/fesm2022/slotted-angular-toast.mjs.map +1 -1
- package/fesm2022/slotted-angular-toggle-group.mjs +25 -8
- package/fesm2022/slotted-angular-toggle-group.mjs.map +1 -1
- package/fesm2022/slotted-angular-toggle.mjs +9 -4
- package/fesm2022/slotted-angular-toggle.mjs.map +1 -1
- package/fesm2022/slotted-angular-toolbar.mjs +22 -11
- package/fesm2022/slotted-angular-toolbar.mjs.map +1 -1
- package/fesm2022/slotted-angular-tooltip.mjs +15 -6
- package/fesm2022/slotted-angular-tooltip.mjs.map +1 -1
- package/fesm2022/slotted-angular-top-navigation.mjs +64 -44
- package/fesm2022/slotted-angular-top-navigation.mjs.map +1 -1
- package/fesm2022/slotted-angular-tour.mjs +47 -22
- package/fesm2022/slotted-angular-tour.mjs.map +1 -1
- package/fesm2022/slotted-angular-transfer.mjs +69 -30
- package/fesm2022/slotted-angular-transfer.mjs.map +1 -1
- package/fesm2022/slotted-angular-tree.mjs +74 -26
- package/fesm2022/slotted-angular-tree.mjs.map +1 -1
- package/fesm2022/slotted-angular-typography.mjs +8 -4
- package/fesm2022/slotted-angular-typography.mjs.map +1 -1
- package/fesm2022/slotted-angular-upload.mjs +125 -57
- package/fesm2022/slotted-angular-upload.mjs.map +1 -1
- package/fesm2022/slotted-angular-visually-hidden.mjs +4 -2
- package/fesm2022/slotted-angular-visually-hidden.mjs.map +1 -1
- package/fesm2022/slotted-angular-wizard.mjs +163 -65
- package/fesm2022/slotted-angular-wizard.mjs.map +1 -1
- package/package.json +3 -3
- package/types/slotted-angular-accordion.d.ts.map +1 -1
- package/types/slotted-angular-action-bar.d.ts.map +1 -1
- package/types/slotted-angular-action-sheet.d.ts.map +1 -1
- package/types/slotted-angular-alert.d.ts +2 -2
- package/types/slotted-angular-alert.d.ts.map +1 -1
- package/types/slotted-angular-app-shell.d.ts +11 -3
- package/types/slotted-angular-app-shell.d.ts.map +1 -1
- package/types/slotted-angular-aspect-ratio.d.ts.map +1 -1
- package/types/slotted-angular-attachment.d.ts +1 -1
- package/types/slotted-angular-attachment.d.ts.map +1 -1
- package/types/slotted-angular-avatar-group.d.ts.map +1 -1
- package/types/slotted-angular-avatar.d.ts +11 -3
- package/types/slotted-angular-avatar.d.ts.map +1 -1
- package/types/slotted-angular-badge.d.ts +1 -1
- package/types/slotted-angular-badge.d.ts.map +1 -1
- package/types/slotted-angular-breadcrumb.d.ts.map +1 -1
- package/types/slotted-angular-button-group.d.ts +1 -1
- package/types/slotted-angular-button-group.d.ts.map +1 -1
- package/types/slotted-angular-button.d.ts +33 -13
- package/types/slotted-angular-button.d.ts.map +1 -1
- package/types/slotted-angular-calendar.d.ts +30 -2
- package/types/slotted-angular-calendar.d.ts.map +1 -1
- package/types/slotted-angular-card.d.ts.map +1 -1
- package/types/slotted-angular-carousel.d.ts.map +1 -1
- package/types/slotted-angular-cascader.d.ts.map +1 -1
- package/types/slotted-angular-chart.d.ts +10 -0
- package/types/slotted-angular-chart.d.ts.map +1 -1
- package/types/slotted-angular-checkbox-group.d.ts.map +1 -1
- package/types/slotted-angular-checkbox.d.ts +7 -1
- package/types/slotted-angular-checkbox.d.ts.map +1 -1
- package/types/slotted-angular-code-block.d.ts +1 -1
- package/types/slotted-angular-code-block.d.ts.map +1 -1
- package/types/slotted-angular-collapsible.d.ts +1 -1
- package/types/slotted-angular-collapsible.d.ts.map +1 -1
- package/types/slotted-angular-color-picker.d.ts.map +1 -1
- package/types/slotted-angular-column-manager.d.ts.map +1 -1
- package/types/slotted-angular-combobox.d.ts +5 -1
- package/types/slotted-angular-combobox.d.ts.map +1 -1
- package/types/slotted-angular-command-palette.d.ts +10 -1
- package/types/slotted-angular-command-palette.d.ts.map +1 -1
- package/types/slotted-angular-container.d.ts.map +1 -1
- package/types/slotted-angular-context-menu.d.ts.map +1 -1
- package/types/slotted-angular-currency-field.d.ts +63 -15
- package/types/slotted-angular-currency-field.d.ts.map +1 -1
- package/types/slotted-angular-dashboard-grid.d.ts.map +1 -1
- package/types/slotted-angular-data-grid.d.ts +49 -4
- package/types/slotted-angular-data-grid.d.ts.map +1 -1
- package/types/slotted-angular-data-list.d.ts.map +1 -1
- package/types/slotted-angular-date-field.d.ts +11 -1
- package/types/slotted-angular-date-field.d.ts.map +1 -1
- package/types/slotted-angular-date-picker.d.ts +38 -12
- package/types/slotted-angular-date-picker.d.ts.map +1 -1
- package/types/slotted-angular-date-range-picker.d.ts +0 -1
- package/types/slotted-angular-date-range-picker.d.ts.map +1 -1
- package/types/slotted-angular-datetime-field.d.ts.map +1 -1
- package/types/slotted-angular-datetime-picker.d.ts +0 -1
- package/types/slotted-angular-datetime-picker.d.ts.map +1 -1
- package/types/slotted-angular-datetime-range-picker.d.ts +0 -1
- package/types/slotted-angular-datetime-range-picker.d.ts.map +1 -1
- package/types/slotted-angular-description-list.d.ts.map +1 -1
- package/types/slotted-angular-detail-panel.d.ts.map +1 -1
- package/types/slotted-angular-dialog.d.ts +10 -3
- package/types/slotted-angular-dialog.d.ts.map +1 -1
- package/types/slotted-angular-divider.d.ts.map +1 -1
- package/types/slotted-angular-drawer.d.ts +7 -1
- package/types/slotted-angular-drawer.d.ts.map +1 -1
- package/types/slotted-angular-entity-picker.d.ts +63 -15
- package/types/slotted-angular-entity-picker.d.ts.map +1 -1
- package/types/slotted-angular-event-calendar.d.ts +9 -2
- package/types/slotted-angular-event-calendar.d.ts.map +1 -1
- package/types/slotted-angular-field-group.d.ts.map +1 -1
- package/types/slotted-angular-field.d.ts.map +1 -1
- package/types/slotted-angular-filter-bar.d.ts.map +1 -1
- package/types/slotted-angular-form.d.ts.map +1 -1
- package/types/slotted-angular-fullscreen.d.ts.map +1 -1
- package/types/slotted-angular-grid.d.ts.map +1 -1
- package/types/slotted-angular-highlight.d.ts.map +1 -1
- package/types/slotted-angular-hover-card.d.ts.map +1 -1
- package/types/slotted-angular-icon.d.ts +2 -2
- package/types/slotted-angular-icon.d.ts.map +1 -1
- package/types/slotted-angular-image.d.ts.map +1 -1
- package/types/slotted-angular-import-export-center.d.ts.map +1 -1
- package/types/slotted-angular-inline-message.d.ts +25 -25
- package/types/slotted-angular-inline-message.d.ts.map +1 -1
- package/types/slotted-angular-inline.d.ts.map +1 -1
- package/types/slotted-angular-kbd.d.ts.map +1 -1
- package/types/slotted-angular-link.d.ts.map +1 -1
- package/types/slotted-angular-list-item.d.ts +1 -1
- package/types/slotted-angular-list-item.d.ts.map +1 -1
- package/types/slotted-angular-list.d.ts +42 -27
- package/types/slotted-angular-list.d.ts.map +1 -1
- package/types/slotted-angular-listbox.d.ts.map +1 -1
- package/types/slotted-angular-loading-overlay.d.ts.map +1 -1
- package/types/slotted-angular-markdown.d.ts.map +1 -1
- package/types/slotted-angular-menu.d.ts +11 -2
- package/types/slotted-angular-menu.d.ts.map +1 -1
- package/types/slotted-angular-menubar.d.ts.map +1 -1
- package/types/slotted-angular-message-scroller.d.ts.map +1 -1
- package/types/slotted-angular-message.d.ts +1 -1
- package/types/slotted-angular-message.d.ts.map +1 -1
- package/types/slotted-angular-multi-select.d.ts +15 -1
- package/types/slotted-angular-multi-select.d.ts.map +1 -1
- package/types/slotted-angular-navigation-menu.d.ts.map +1 -1
- package/types/slotted-angular-notification-center.d.ts +1 -1
- package/types/slotted-angular-notification-center.d.ts.map +1 -1
- package/types/slotted-angular-number-field.d.ts.map +1 -1
- package/types/slotted-angular-otp-input.d.ts.map +1 -1
- package/types/slotted-angular-page-header.d.ts +4 -4
- package/types/slotted-angular-page-header.d.ts.map +1 -1
- package/types/slotted-angular-page.d.ts.map +1 -1
- package/types/slotted-angular-pagination.d.ts.map +1 -1
- package/types/slotted-angular-popover.d.ts.map +1 -1
- package/types/slotted-angular-progress-indicator.d.ts +8 -1
- package/types/slotted-angular-progress-indicator.d.ts.map +1 -1
- package/types/slotted-angular-prompt-composer.d.ts +11 -2
- package/types/slotted-angular-prompt-composer.d.ts.map +1 -1
- package/types/slotted-angular-prose.d.ts.map +1 -1
- package/types/slotted-angular-radio-group.d.ts.map +1 -1
- package/types/slotted-angular-rating.d.ts +1 -1
- package/types/slotted-angular-rating.d.ts.map +1 -1
- package/types/slotted-angular-result-state.d.ts.map +1 -1
- package/types/slotted-angular-saved-views.d.ts.map +1 -1
- package/types/slotted-angular-scroll-area.d.ts.map +1 -1
- package/types/slotted-angular-section.d.ts +11 -3
- package/types/slotted-angular-section.d.ts.map +1 -1
- package/types/slotted-angular-segmented-control.d.ts +15 -2
- package/types/slotted-angular-segmented-control.d.ts.map +1 -1
- package/types/slotted-angular-select.d.ts +12 -2
- package/types/slotted-angular-select.d.ts.map +1 -1
- package/types/slotted-angular-side-navigation.d.ts.map +1 -1
- package/types/slotted-angular-skeleton.d.ts.map +1 -1
- package/types/slotted-angular-slider.d.ts.map +1 -1
- package/types/slotted-angular-sparkline.d.ts +7 -1
- package/types/slotted-angular-sparkline.d.ts.map +1 -1
- package/types/slotted-angular-split-button.d.ts +2 -2
- package/types/slotted-angular-split-button.d.ts.map +1 -1
- package/types/slotted-angular-splitter.d.ts.map +1 -1
- package/types/slotted-angular-stack.d.ts.map +1 -1
- package/types/slotted-angular-stat-card.d.ts +1 -1
- package/types/slotted-angular-stat-card.d.ts.map +1 -1
- package/types/slotted-angular-status-indicator.d.ts +1 -1
- package/types/slotted-angular-status-indicator.d.ts.map +1 -1
- package/types/slotted-angular-stepper.d.ts +1 -1
- package/types/slotted-angular-stepper.d.ts.map +1 -1
- package/types/slotted-angular-switch.d.ts.map +1 -1
- package/types/slotted-angular-table-of-contents.d.ts.map +1 -1
- package/types/slotted-angular-table.d.ts +63 -6
- package/types/slotted-angular-table.d.ts.map +1 -1
- package/types/slotted-angular-tabs.d.ts +3 -4
- package/types/slotted-angular-tabs.d.ts.map +1 -1
- package/types/slotted-angular-tag.d.ts +1 -1
- package/types/slotted-angular-tag.d.ts.map +1 -1
- package/types/slotted-angular-tags-input.d.ts +33 -1
- package/types/slotted-angular-tags-input.d.ts.map +1 -1
- package/types/slotted-angular-text-field.d.ts.map +1 -1
- package/types/slotted-angular-textarea.d.ts.map +1 -1
- package/types/slotted-angular-theme.d.ts +1 -1
- package/types/slotted-angular-time-field.d.ts.map +1 -1
- package/types/slotted-angular-time-picker.d.ts +0 -1
- package/types/slotted-angular-time-picker.d.ts.map +1 -1
- package/types/slotted-angular-time-range-picker.d.ts +0 -1
- package/types/slotted-angular-time-range-picker.d.ts.map +1 -1
- package/types/slotted-angular-timeline.d.ts +1 -1
- package/types/slotted-angular-timeline.d.ts.map +1 -1
- package/types/slotted-angular-toast.d.ts +3 -3
- package/types/slotted-angular-toast.d.ts.map +1 -1
- package/types/slotted-angular-toggle-group.d.ts +8 -2
- package/types/slotted-angular-toggle-group.d.ts.map +1 -1
- package/types/slotted-angular-toggle.d.ts +1 -1
- package/types/slotted-angular-toggle.d.ts.map +1 -1
- package/types/slotted-angular-toolbar.d.ts.map +1 -1
- package/types/slotted-angular-tooltip.d.ts.map +1 -1
- package/types/slotted-angular-top-navigation.d.ts.map +1 -1
- package/types/slotted-angular-tour.d.ts.map +1 -1
- package/types/slotted-angular-transfer.d.ts.map +1 -1
- package/types/slotted-angular-tree.d.ts.map +1 -1
- package/types/slotted-angular-typography.d.ts +1 -1
- package/types/slotted-angular-typography.d.ts.map +1 -1
- package/types/slotted-angular-upload.d.ts +2 -2
- package/types/slotted-angular-upload.d.ts.map +1 -1
- package/types/slotted-angular-visually-hidden.d.ts.map +1 -1
- package/types/slotted-angular-wizard.d.ts.map +1 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { writeSelectorKey } from '@slotted/core/selector-key';
|
|
1
2
|
import { NgTemplateOutlet } from '@angular/common';
|
|
2
3
|
import * as i0 from '@angular/core';
|
|
3
4
|
import { Injectable, input, inject, ElementRef, afterNextRender, Directive, model, booleanAttribute, output, Injector, HostAttributeToken, viewChild, signal, computed, ViewEncapsulation, ChangeDetectionStrategy, Component, effect, untracked } from '@angular/core';
|
|
@@ -46,7 +47,7 @@ class SlSavedViewsPart {
|
|
|
46
47
|
...(ngDevMode ? [{ debugName: "slSavedViewsPart" }] : /* istanbul ignore next */ []));
|
|
47
48
|
constructor() {
|
|
48
49
|
const element = inject(ElementRef).nativeElement;
|
|
49
|
-
afterNextRender(() => element
|
|
50
|
+
afterNextRender(() => writeSelectorKey(element, 'part', this.slSavedViewsPart()));
|
|
50
51
|
}
|
|
51
52
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlSavedViewsPart, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
52
53
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.7", type: SlSavedViewsPart, isStandalone: true, selector: "[slSavedViewsPart]", inputs: { slSavedViewsPart: { classPropertyName: "slSavedViewsPart", publicName: "slSavedViewsPart", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 });
|
|
@@ -388,7 +389,7 @@ class SlSavedViews {
|
|
|
388
389
|
}, { injector: this.injector });
|
|
389
390
|
}
|
|
390
391
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlSavedViews, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
391
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: SlSavedViews, isStandalone: true, selector: "sl-saved-views", inputs: { current: { classPropertyName: "current", publicName: "current", isSignal: true, isRequired: true, transformFunction: null }, builtIn: { classPropertyName: "builtIn", publicName: "builtIn", isSignal: true, isRequired: true, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, state: { classPropertyName: "state", publicName: "state", isSignal: true, isRequired: false, transformFunction: null }, defaultState: { classPropertyName: "defaultState", publicName: "defaultState", isSignal: true, isRequired: false, transformFunction: null }, open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, defaultOpen: { classPropertyName: "defaultOpen", publicName: "defaultOpen", isSignal: true, isRequired: false, transformFunction: null }, messages: { classPropertyName: "messages", publicName: "messages", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { state: "stateChange", open: "openChange", stateChangeRequest: "stateChangeRequest", openChangeRequest: "openChangeRequest", viewApply: "viewApply" }, host: { attributes: { "data-ui": "saved-views", "data-part": "root" }, properties: { "attr.role": "role", "attr.aria-label": "resolvedLabel()", "attr.data-modified": "modified() ? \"\" : null", "attr.data-open": "isOpen() ? \"\" : null" } }, viewQueries: [{ propertyName: "triggerRef", first: true, predicate: ["trigger"], descendants: true, isSignal: true }], exportAs: ["slSavedViews"], ngImport: i0, template: `
|
|
392
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: SlSavedViews, isStandalone: true, selector: "sl-saved-views", inputs: { current: { classPropertyName: "current", publicName: "current", isSignal: true, isRequired: true, transformFunction: null }, builtIn: { classPropertyName: "builtIn", publicName: "builtIn", isSignal: true, isRequired: true, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, state: { classPropertyName: "state", publicName: "state", isSignal: true, isRequired: false, transformFunction: null }, defaultState: { classPropertyName: "defaultState", publicName: "defaultState", isSignal: true, isRequired: false, transformFunction: null }, open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, defaultOpen: { classPropertyName: "defaultOpen", publicName: "defaultOpen", isSignal: true, isRequired: false, transformFunction: null }, messages: { classPropertyName: "messages", publicName: "messages", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { state: "stateChange", open: "openChange", stateChangeRequest: "stateChangeRequest", openChangeRequest: "openChangeRequest", viewApply: "viewApply" }, host: { attributes: { "data-ui": "saved-views", "data-ui-saved-views": "", "data-part": "root", "data-part-root": "" }, properties: { "attr.role": "role", "attr.aria-label": "resolvedLabel()", "attr.data-modified": "modified() ? \"\" : null", "attr.data-open": "isOpen() ? \"\" : null" } }, viewQueries: [{ propertyName: "triggerRef", first: true, predicate: ["trigger"], descendants: true, isSignal: true }], exportAs: ["slSavedViews"], ngImport: i0, template: `
|
|
392
393
|
<ng-container
|
|
393
394
|
slPopover
|
|
394
395
|
initialFocus="[aria-current='true']"
|
|
@@ -400,11 +401,12 @@ class SlSavedViews {
|
|
|
400
401
|
slPopoverTrigger
|
|
401
402
|
type="button"
|
|
402
403
|
data-part="trigger"
|
|
404
|
+
data-part-trigger=""
|
|
403
405
|
[attr.title]="activeName()"
|
|
404
406
|
>
|
|
405
407
|
<span data-label>{{ activeName() }}</span>
|
|
406
408
|
@if (modified()) {
|
|
407
|
-
<span data-part="modified">{{ t('modified') }}</span>
|
|
409
|
+
<span data-part="modified" data-part-modified="">{{ t('modified') }}</span>
|
|
408
410
|
}
|
|
409
411
|
<span slIcon size="md"><svg slGlyph name="chevron-down"></svg></span>
|
|
410
412
|
</button>
|
|
@@ -413,11 +415,18 @@ class SlSavedViews {
|
|
|
413
415
|
<div slPopoverContent [attr.aria-label]="resolvedLabel()">
|
|
414
416
|
<!-- The family's identifier is on its own element rather than on
|
|
415
417
|
the popover's: slPopoverContent names its own part. -->
|
|
416
|
-
<div
|
|
417
|
-
|
|
418
|
+
<div
|
|
419
|
+
data-ui="saved-views"
|
|
420
|
+
data-ui-saved-views=""
|
|
421
|
+
data-part="panel"
|
|
422
|
+
data-part-panel=""
|
|
423
|
+
[id]="panelId"
|
|
424
|
+
>
|
|
425
|
+
<ul data-part="list" data-part-list="" role="list">
|
|
418
426
|
@for (row of rows(); track row.key) {
|
|
419
427
|
<li
|
|
420
428
|
data-part="item"
|
|
429
|
+
data-part-item=""
|
|
421
430
|
[attr.data-view]="row.key"
|
|
422
431
|
[attr.data-current]="row.current ? '' : null"
|
|
423
432
|
[attr.data-default]="row.isDefault ? '' : null"
|
|
@@ -434,6 +443,7 @@ class SlSavedViews {
|
|
|
434
443
|
@case ('delete') {
|
|
435
444
|
<div
|
|
436
445
|
data-part="confirm"
|
|
446
|
+
data-part-confirm=""
|
|
437
447
|
role="group"
|
|
438
448
|
[attr.aria-labelledby]="panelId + '-confirm-' + row.key"
|
|
439
449
|
>
|
|
@@ -465,6 +475,7 @@ class SlSavedViews {
|
|
|
465
475
|
@default {
|
|
466
476
|
<button
|
|
467
477
|
data-part="apply"
|
|
478
|
+
data-part-apply=""
|
|
468
479
|
type="button"
|
|
469
480
|
[attr.aria-current]="row.current ? 'true' : null"
|
|
470
481
|
(click)="apply(row.id, pressReason($event), $event)"
|
|
@@ -474,7 +485,7 @@ class SlSavedViews {
|
|
|
474
485
|
}
|
|
475
486
|
<span data-label>{{ row.name }}</span>
|
|
476
487
|
@if (row.isDefault) {
|
|
477
|
-
<span data-part="default-mark"
|
|
488
|
+
<span data-part="default-mark" data-part-default-mark=""
|
|
478
489
|
><span slIcon size="sm"><svg slGlyph name="pin"></svg></span
|
|
479
490
|
><span>{{ t('isDefault') }}</span></span
|
|
480
491
|
>
|
|
@@ -483,6 +494,7 @@ class SlSavedViews {
|
|
|
483
494
|
<button
|
|
484
495
|
type="button"
|
|
485
496
|
data-part="actions"
|
|
497
|
+
data-part-actions=""
|
|
486
498
|
slSavedViewsPart="actions"
|
|
487
499
|
[slMenuTriggerFor]="menu"
|
|
488
500
|
[attr.aria-label]="t('actions', { name: row.name })"
|
|
@@ -519,7 +531,7 @@ class SlSavedViews {
|
|
|
519
531
|
[ngTemplateOutletContext]="{ kind: 'create', name: '' }"
|
|
520
532
|
/>
|
|
521
533
|
}
|
|
522
|
-
<div data-part="footer">
|
|
534
|
+
<div data-part="footer" data-part-footer="">
|
|
523
535
|
<button
|
|
524
536
|
slButton
|
|
525
537
|
data-save-as
|
|
@@ -540,7 +552,7 @@ class SlSavedViews {
|
|
|
540
552
|
</ng-container>
|
|
541
553
|
|
|
542
554
|
@if (modified()) {
|
|
543
|
-
<button data-part="revert" type="button" (click)="revert($event)">
|
|
555
|
+
<button data-part="revert" data-part-revert="" type="button" (click)="revert($event)">
|
|
544
556
|
<!-- An arrow that turns back turns the other way in a right-to-left document. -->
|
|
545
557
|
<span slIcon size="sm" directional><svg slGlyph name="rotate-ccw"></svg></span>
|
|
546
558
|
{{ t('revert') }}
|
|
@@ -550,6 +562,7 @@ class SlSavedViews {
|
|
|
550
562
|
<ng-template #nameForm let-kind="kind" let-name="name">
|
|
551
563
|
<form
|
|
552
564
|
data-part="form"
|
|
565
|
+
data-part-form=""
|
|
553
566
|
novalidate
|
|
554
567
|
[attr.aria-label]="kind === 'create' ? t('saveAs') : t('renameView', { name: name })"
|
|
555
568
|
(submit)="submit($event)"
|
|
@@ -585,7 +598,7 @@ class SlSavedViews {
|
|
|
585
598
|
</div>
|
|
586
599
|
</form>
|
|
587
600
|
</ng-template>
|
|
588
|
-
`, isInline: true, styles: ["@layer slotted.components{[data-ui=saved-views]{--_text: var(--slotted-text, CanvasText);--_muted: var(--slotted-text-muted, GrayText);--_hover: var(--slotted-tone-secondary-subtle-hover, ButtonFace);--_active: var(--slotted-tone-secondary-subtle-active, ButtonFace);--_height: var(--slotted-control-height-md, 34px);--_height-sm: var(--slotted-control-height-sm, 30px);--_padding-inline: var(--slotted-control-padding-inline-md, 13px);--_gap: var(--slotted-control-gap-md, 8px);--_font-size: var(--slotted-control-font-size-md, 13px);--_icon-size: var(--slotted-control-icon-size-md, 16px);--_icon-size-sm: var(--slotted-control-icon-size-sm, 14px);--_radius: var(--slotted-control-radius, 4px);--_duration: var(--slotted-control-transition-duration);--_easing: var(--slotted-control-transition-easing);box-sizing:border-box;color:var(--_text);font-family:var(--slotted-font-family-sans, ui-sans-serif, system-ui, sans-serif);font-size:var(--_font-size);line-height:var(--slotted-line-height-md, 1.5)}[data-ui=saved-views][data-part=root]{display:inline-flex;flex-wrap:wrap;align-items:center;gap:var(--slotted-space-3, .375rem);min-inline-size:0;max-inline-size:100%}[data-ui=saved-views]>[data-part=trigger]{display:inline-flex;align-items:center;gap:var(--_gap);box-sizing:border-box;min-inline-size:0;max-inline-size:100%;min-block-size:var(--_height);margin:0;padding-block:0;padding-inline:var(--_padding-inline);border:var(--slotted-control-border-width, 1px) solid var(--slotted-control-border-color, ButtonBorder);border-radius:var(--_radius);background:var(--slotted-control-surface, Canvas);box-shadow:var(--slotted-control-shadow, none);color:var(--_text);font:inherit;font-weight:var(--slotted-font-weight-medium, 500);cursor:pointer;transition:background-color var(--_duration) var(--_easing)}[data-ui=saved-views]>[data-part=trigger]>[data-label]{min-inline-size:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}[data-ui=saved-views]>[data-part=trigger]>[data-ui=icon]{margin-inline-end:calc(var(--slotted-space-2, .25rem) * -1);color:var(--_muted);transition:rotate var(--_duration) var(--_easing)}[data-ui=saved-views][data-open]>[data-part=trigger]>[data-ui=icon]{rotate:180deg}[data-ui=saved-views]>[data-part=trigger]:hover:not(:disabled){background:var(--_hover)}[data-ui=saved-views]>[data-part=trigger]:active:not(:disabled){background:var(--_active);transition-duration:var(--slotted-duration-instant)}[data-ui=saved-views]>[data-part=trigger]>[data-part=modified]{display:inline-flex;flex:none;align-items:center;gap:var(--slotted-space-2, .25rem);color:var(--_muted);font-size:inherit;font-weight:var(--slotted-font-weight-regular, 400)}[data-ui=saved-views]>[data-part=trigger]>[data-part=modified]:before{content:\"\";flex:none;inline-size:var(--slotted-space-4, .5rem);block-size:var(--slotted-space-4, .5rem);border-radius:var(--slotted-radius-full, 9999px);background-color:var(--slotted-tone-accent-solid)}[data-ui=saved-views]>[data-part=revert]{display:inline-flex;align-items:center;gap:var(--slotted-space-3, .375rem);box-sizing:border-box;min-block-size:var(--_height);margin:0;padding-block:0;padding-inline:var(--slotted-space-4, .5rem);border:var(--slotted-control-border-width, 1px) solid transparent;border-radius:var(--_radius);background:transparent;color:var(--slotted-tone-accent-text, LinkText);font:inherit;font-weight:var(--slotted-font-weight-medium, 500);cursor:pointer;transition:background-color var(--_duration) var(--_easing)}[data-ui=saved-views]>[data-part=revert]:hover:not(:disabled){background:var(--slotted-tone-accent-subtle-hover, ButtonFace)}[data-ui=saved-views]>[data-part=revert]:active:not(:disabled){background:var(--slotted-tone-accent-subtle-active, ButtonFace);transition-duration:var(--slotted-duration-instant)}[data-ui=saved-views]>[data-part=trigger]:focus-visible,[data-ui=saved-views]>[data-part=revert]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-focus-ring-offset, 2px)}[data-ui=saved-views][data-part=panel]{display:grid;grid-template-columns:minmax(0,var(--slotted-saved-views-panel-inline-size, 18rem));gap:var(--slotted-space-4, .5rem);max-inline-size:100%;padding:var(--slotted-space-2, .25rem)}[data-ui=saved-views][data-part=panel]>[data-part=list]{display:grid;gap:var(--slotted-space-1, .125rem);margin:0;padding:0;list-style:none}[data-ui=saved-views][data-part=panel]>[data-part=list]>[data-part=item]{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:var(--slotted-space-1, .125rem);margin:0}[data-ui=saved-views][data-part=panel]>[data-part=list]>[data-part=item][data-editing]{grid-template-columns:minmax(0,1fr)}[data-ui=saved-views][data-part=panel] [data-part=apply]{display:grid;grid-template-columns:var(--_icon-size-sm) minmax(0,max-content) auto;justify-content:start;align-content:center;align-items:baseline;column-gap:var(--slotted-space-4, .5rem);box-sizing:border-box;inline-size:100%;min-block-size:var(--_height-sm);margin:0;padding-block:var(--slotted-space-2, .25rem);padding-inline:var(--slotted-space-4, .5rem);border:0;border-radius:var(--_radius);background:transparent;color:var(--_text);font:inherit;text-align:start;cursor:pointer;transition:background-color var(--_duration) var(--_easing)}[data-ui=saved-views][data-part=panel] [data-part=apply]>[data-ui=icon]{color:var(--slotted-tone-accent-text);translate:0 calc(var(--_icon-size-sm) / 2 - (1cap + 1ex) / 4)}[data-ui=saved-views][data-part=panel] [data-part=item][data-current]>[data-part=apply]{font-weight:var(--slotted-font-weight-medium, 500)}[data-ui=saved-views][data-part=panel] [data-part=apply]>[data-label]{grid-column:2;min-inline-size:0;overflow-wrap:anywhere}[data-ui=saved-views][data-part=panel] [data-part=apply]:hover:not(:disabled),[data-ui=saved-views][data-part=panel] [data-part=actions]:hover:not(:disabled){background:var(--_hover)}[data-ui=saved-views][data-part=panel] [data-part=apply]:active:not(:disabled),[data-ui=saved-views][data-part=panel] [data-part=actions]:active:not(:disabled){background:var(--_active);transition-duration:var(--slotted-duration-instant)}[data-ui=saved-views][data-part=panel] [data-part=apply]>[data-part=default-mark]{display:flex;position:relative;inline-size:var(--_icon-size-sm);block-size:var(--_icon-size-sm);margin-inline-start:calc(var(--slotted-space-2, .25rem) - var(--slotted-space-4, .5rem));translate:0 calc(var(--_icon-size-sm) / 2 - (1cap + 1ex) / 4);color:var(--_muted)}[data-ui=saved-views][data-part=panel] [data-part=default-mark]>span:not([data-ui=icon]){position:absolute;inline-size:1px;block-size:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}[data-ui=saved-views][data-part=panel] [data-part=actions]{display:inline-grid;place-items:center;box-sizing:border-box;inline-size:var(--_height-sm);block-size:var(--_height-sm);margin:0;padding:0;border:0;border-radius:var(--_radius);background:transparent;color:var(--_muted);cursor:pointer;transition:background-color var(--_duration) var(--_easing),color var(--_duration) var(--_easing)}[data-ui=saved-views][data-part=panel] [data-part=actions][data-open],[data-ui=saved-views][data-part=panel] [data-part=actions]:hover:not(:disabled){color:var(--_text)}[data-ui=saved-views][data-part=panel] [data-part=apply]:focus-visible,[data-ui=saved-views][data-part=panel] [data-part=actions]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:calc(var(--slotted-focus-ring-offset, 2px) * -1)}[data-ui=saved-views][data-part=panel] [data-part=form],[data-ui=saved-views][data-part=panel] [data-part=confirm]{display:grid;gap:var(--slotted-space-4, .5rem);margin:0;padding:var(--slotted-space-4, .5rem);border-radius:var(--_radius);background:var(--slotted-surface-sunken, Canvas)}[data-ui=saved-views][data-part=panel] [data-part=confirm]>p{margin:0;overflow-wrap:anywhere}[data-ui=saved-views][data-part=panel] :is([data-part=form],[data-part=confirm])>[data-buttons]{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--slotted-space-3, .375rem)}[data-ui=saved-views][data-part=panel]>[data-part=footer]{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--slotted-space-3, .375rem);padding-block-start:var(--slotted-space-4, .5rem);border-block-start:var(--slotted-border-width-thin, 1px) solid var(--slotted-border-subtle, transparent)}@media(forced-colors:active){[data-ui=saved-views]>[data-part=trigger]>[data-part=modified]:before{forced-color-adjust:none}}}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SlButton, selector: "button[slButton]", inputs: ["disabled", "focusableWhenDisabled", "fullWidth", "loading", "loadingDelay", "messages", "size", "tone", "type", "variant"], exportAs: ["slButton"] }, { kind: "component", type: SlField, selector: "[slField]", inputs: ["size", "labelPlacement", "necessity", "messages", "disabled", "invalid", "required", "readOnly"], exportAs: ["slField"] }, { kind: "directive", type: SlFieldError, selector: "[slFieldError]", exportAs: ["slFieldError"] }, { kind: "component", type: SlFieldLabel, selector: "label[slFieldLabel]", exportAs: ["slFieldLabel"] }, { kind: "component", type: SlGlyph, selector: "svg[slGlyph]", inputs: ["name", "solid"] }, { kind: "component", type: SlIcon, selector: "[slIcon]", inputs: ["directional", "label", "size", "tone"], exportAs: ["slIcon"] }, { kind: "component", type: SlMenu, selector: "sl-menu", inputs: ["value", "aria-label", "aria-describedby", "open", "align", "side", "size", "mount", "strategy", "sideOffset", "alignOffset", "collisionPadding", "submenuOpenDelay", "submenuCloseDelay", "typeaheadTimeout", "disabled", "loop", "typeahead", "openOnHover", "closeOnSelect", "closeOnEscape", "closeOnOutsidePress", "flip", "shift", "hideWhenDetached", "portal", "loading"], outputs: ["openChange", "openChangeRequest"], exportAs: ["slMenu"] }, { kind: "component", type: SlMenuItem, selector: "button[slMenuItem], a[slMenuItem], button[slMenuCheckboxItem], button[slMenuRadioItem]", inputs: ["disabled", "textValue", "tone", "shortcut", "closeOnSelect", "value", "checked"], outputs: ["checkedChange", "checkedChangeRequest", "select"], exportAs: ["slMenuItem"] }, { kind: "directive", type: SlMenuTrigger, selector: "[slMenuTriggerFor]", inputs: ["slMenuTriggerFor"], exportAs: ["slMenuTrigger"] }, { kind: "directive", type: SlPopover, selector: "[slPopover]", inputs: ["open", "defaultOpen", "disabled", "size", "width", "side", "align", "mount", "strategy", "messages", "initialFocus", "finalFocus", "arrow", "autoFocus", "closeOnEscape", "closeOnOutsidePress", "flip", "shift", "hideWhenDetached", "portal", "sideOffset", "alignOffset", "collisionPadding", "arrowPadding"], outputs: ["openChange", "openChangeRequest"], exportAs: ["slPopover"] }, { kind: "component", type: SlPopoverContent, selector: "[slPopoverContent]", exportAs: ["slPopoverContent"] }, { kind: "directive", type: SlPopoverLayer, selector: "ng-template[slPopoverLayer]", exportAs: ["slPopoverLayer"] }, { kind: "directive", type: SlPopoverTrigger, selector: "[slPopoverTrigger]", exportAs: ["slPopoverTrigger"] }, { kind: "directive", type: SlSavedViewsPart, selector: "[slSavedViewsPart]", inputs: ["slSavedViewsPart"] }, { kind: "component", type: SlTextField, selector: "[slTextField]", inputs: ["size", "variant", "mono", "clearable", "revealable", "copyable", "messages", "loading"], outputs: ["valueCopy"], exportAs: ["slTextField"] }, { kind: "directive", type: SlTextFieldInput, selector: "input[slTextFieldInput]", inputs: ["value", "defaultValue", "disabled", "readOnly", "invalid", "showCount", "countMax", "revealed", "defaultRevealed", "type"], outputs: ["valueChange", "revealedChange"], exportAs: ["slTextFieldInput"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
601
|
+
`, isInline: true, styles: ["@layer slotted.components{[data-ui-saved-views]{--_text: var(--slotted-text, CanvasText);--_muted: var(--slotted-text-muted, GrayText);--_hover: var(--slotted-tone-secondary-subtle-hover, ButtonFace);--_active: var(--slotted-tone-secondary-subtle-active, ButtonFace);--_height: var(--slotted-control-height-md, 34px);--_height-sm: var(--slotted-control-height-sm, 30px);--_padding-inline: var(--slotted-control-padding-inline-md, 13px);--_gap: var(--slotted-control-gap-md, 8px);--_font-size: var(--slotted-control-font-size-md, 13px);--_icon-size: var(--slotted-control-icon-size-md, 16px);--_icon-size-sm: var(--slotted-control-icon-size-sm, 14px);--_radius: var(--slotted-control-radius, 4px);--_duration: var(--slotted-control-transition-duration);--_easing: var(--slotted-control-transition-easing);box-sizing:border-box;color:var(--_text);font-family:var(--slotted-font-family-sans, ui-sans-serif, system-ui, sans-serif);font-size:var(--_font-size);line-height:var(--slotted-line-height-md, 1.5)}[data-ui-saved-views][data-part-root]{display:inline-flex;flex-wrap:wrap;align-items:center;gap:var(--slotted-space-3, .375rem);min-inline-size:0;max-inline-size:100%}[data-ui-saved-views]>[data-part-trigger]{display:inline-flex;align-items:center;gap:var(--_gap);box-sizing:border-box;min-inline-size:0;max-inline-size:100%;min-block-size:var(--_height);margin:0;padding-block:0;padding-inline:var(--_padding-inline);border:var(--slotted-control-border-width, 1px) solid var(--slotted-control-border-color, ButtonBorder);border-radius:var(--_radius);background:var(--slotted-control-surface, Canvas);box-shadow:var(--slotted-control-shadow, none);color:var(--_text);font:inherit;font-weight:var(--slotted-font-weight-medium, 500);cursor:pointer;transition:background-color var(--_duration) var(--_easing)}[data-ui-saved-views]>[data-part-trigger]>[data-label]{min-inline-size:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}[data-ui-saved-views]>[data-part-trigger]>[data-ui-icon]{margin-inline-end:calc(var(--slotted-space-2, .25rem) * -1);color:var(--_muted);transition:rotate var(--_duration) var(--_easing)}[data-ui-saved-views][data-open]>[data-part-trigger]>[data-ui-icon]{rotate:180deg}[data-ui-saved-views]>[data-part-trigger]:hover:not(:disabled){background:var(--_hover)}[data-ui-saved-views]>[data-part-trigger]:active:not(:disabled){background:var(--_active);transition-duration:var(--slotted-duration-instant)}[data-ui-saved-views]>[data-part-trigger]>[data-part-modified]{display:inline-flex;flex:none;align-items:center;gap:var(--slotted-space-2, .25rem);color:var(--_muted);font-size:inherit;font-weight:var(--slotted-font-weight-regular, 400)}[data-ui-saved-views]>[data-part-trigger]>[data-part-modified]:before{content:\"\";flex:none;inline-size:var(--slotted-space-4, .5rem);block-size:var(--slotted-space-4, .5rem);border-radius:var(--slotted-radius-full, 9999px);background-color:var(--slotted-tone-accent-solid)}[data-ui-saved-views]>[data-part-revert]{display:inline-flex;align-items:center;gap:var(--slotted-space-3, .375rem);box-sizing:border-box;min-block-size:var(--_height);margin:0;padding-block:0;padding-inline:var(--slotted-space-4, .5rem);border:var(--slotted-control-border-width, 1px) solid transparent;border-radius:var(--_radius);background:transparent;color:var(--slotted-tone-accent-text, LinkText);font:inherit;font-weight:var(--slotted-font-weight-medium, 500);cursor:pointer;transition:background-color var(--_duration) var(--_easing)}[data-ui-saved-views]>[data-part-revert]:hover:not(:disabled){background:var(--slotted-tone-accent-subtle-hover, ButtonFace)}[data-ui-saved-views]>[data-part-revert]:active:not(:disabled){background:var(--slotted-tone-accent-subtle-active, ButtonFace);transition-duration:var(--slotted-duration-instant)}[data-ui-saved-views]>[data-part-trigger]:focus-visible,[data-ui-saved-views]>[data-part-revert]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-focus-ring-offset, 2px)}[data-ui-saved-views][data-part-panel]{display:grid;grid-template-columns:minmax(0,var(--slotted-saved-views-panel-inline-size, 18rem));gap:var(--slotted-space-4, .5rem);max-inline-size:100%;padding:var(--slotted-space-2, .25rem)}[data-ui-saved-views][data-part-panel]>[data-part-list]{display:grid;gap:var(--slotted-space-1, .125rem);margin:0;padding:0;list-style:none}[data-ui-saved-views][data-part-panel]>[data-part-list]>[data-part-item]{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:var(--slotted-space-1, .125rem);margin:0}[data-ui-saved-views][data-part-panel]>[data-part-list]>[data-part-item][data-editing]{grid-template-columns:minmax(0,1fr)}[data-ui-saved-views][data-part-panel] [data-part-apply]{display:grid;grid-template-columns:var(--_icon-size-sm) minmax(0,max-content) auto;justify-content:start;align-content:center;align-items:baseline;column-gap:var(--slotted-space-4, .5rem);box-sizing:border-box;inline-size:100%;min-block-size:var(--_height-sm);margin:0;padding-block:var(--slotted-space-2, .25rem);padding-inline:var(--slotted-space-4, .5rem);border:0;border-radius:var(--_radius);background:transparent;color:var(--_text);font:inherit;text-align:start;cursor:pointer;transition:background-color var(--_duration) var(--_easing)}[data-ui-saved-views][data-part-panel] [data-part-apply]>[data-ui-icon]{color:var(--slotted-tone-accent-text);translate:0 calc(var(--_icon-size-sm) / 2 - (1cap + 1ex) / 4)}[data-ui-saved-views][data-part-panel] [data-part-item][data-current]>[data-part-apply]{font-weight:var(--slotted-font-weight-medium, 500)}[data-ui-saved-views][data-part-panel] [data-part-apply]>[data-label]{grid-column:2;min-inline-size:0;overflow-wrap:anywhere}[data-ui-saved-views][data-part-panel] [data-part-apply]:hover:not(:disabled),[data-ui-saved-views][data-part-panel] [data-part-actions]:hover:not(:disabled){background:var(--_hover)}[data-ui-saved-views][data-part-panel] [data-part-apply]:active:not(:disabled),[data-ui-saved-views][data-part-panel] [data-part-actions]:active:not(:disabled){background:var(--_active);transition-duration:var(--slotted-duration-instant)}[data-ui-saved-views][data-part-panel] [data-part-apply]>[data-part-default-mark]{display:flex;position:relative;inline-size:var(--_icon-size-sm);block-size:var(--_icon-size-sm);margin-inline-start:calc(var(--slotted-space-2, .25rem) - var(--slotted-space-4, .5rem));translate:0 calc(var(--_icon-size-sm) / 2 - (1cap + 1ex) / 4);color:var(--_muted)}[data-ui-saved-views][data-part-panel] [data-part-default-mark]>span:not([data-ui-icon]){position:absolute;inline-size:1px;block-size:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}[data-ui-saved-views][data-part-panel] [data-part-actions]{display:inline-grid;place-items:center;box-sizing:border-box;inline-size:var(--_height-sm);block-size:var(--_height-sm);margin:0;padding:0;border:0;border-radius:var(--_radius);background:transparent;color:var(--_muted);cursor:pointer;transition:background-color var(--_duration) var(--_easing),color var(--_duration) var(--_easing)}[data-ui-saved-views][data-part-panel] [data-part-actions][data-open],[data-ui-saved-views][data-part-panel] [data-part-actions]:hover:not(:disabled){color:var(--_text)}[data-ui-saved-views][data-part-panel] [data-part-apply]:focus-visible,[data-ui-saved-views][data-part-panel] [data-part-actions]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:calc(var(--slotted-focus-ring-offset, 2px) * -1)}[data-ui-saved-views][data-part-panel] [data-part-form],[data-ui-saved-views][data-part-panel] [data-part-confirm]{display:grid;gap:var(--slotted-space-4, .5rem);margin:0;padding:var(--slotted-space-4, .5rem);border-radius:var(--_radius);background:var(--slotted-surface-sunken, Canvas)}[data-ui-saved-views][data-part-panel] [data-part-confirm]>p{margin:0;overflow-wrap:anywhere}[data-ui-saved-views][data-part-panel] :is([data-part-form],[data-part-confirm])>[data-buttons]{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--slotted-space-3, .375rem)}[data-ui-saved-views][data-part-panel]>[data-part-footer]{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--slotted-space-3, .375rem);padding-block-start:var(--slotted-space-4, .5rem);border-block-start:var(--slotted-border-width-thin, 1px) solid var(--slotted-border-subtle, transparent)}@media(forced-colors:active){[data-ui-saved-views]>[data-part-trigger]>[data-part-modified]:before{forced-color-adjust:none}}}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SlButton, selector: "button[slButton]", inputs: ["disabled", "focusableWhenDisabled", "fullWidth", "justify", "loading", "loadingDelay", "messages", "size", "tone", "type", "variant"], exportAs: ["slButton"] }, { kind: "component", type: SlField, selector: "[slField]", inputs: ["size", "labelPlacement", "necessity", "messages", "disabled", "invalid", "required", "readOnly"], exportAs: ["slField"] }, { kind: "directive", type: SlFieldError, selector: "[slFieldError]", exportAs: ["slFieldError"] }, { kind: "component", type: SlFieldLabel, selector: "label[slFieldLabel]", exportAs: ["slFieldLabel"] }, { kind: "component", type: SlGlyph, selector: "svg[slGlyph]", inputs: ["name", "solid"] }, { kind: "component", type: SlIcon, selector: "[slIcon]", inputs: ["directional", "label", "size", "tone"], exportAs: ["slIcon"] }, { kind: "component", type: SlMenu, selector: "sl-menu", inputs: ["value", "aria-label", "aria-describedby", "open", "align", "side", "size", "width", "mount", "strategy", "sideOffset", "alignOffset", "collisionPadding", "submenuOpenDelay", "submenuCloseDelay", "typeaheadTimeout", "disabled", "loop", "typeahead", "openOnHover", "closeOnSelect", "closeOnEscape", "closeOnOutsidePress", "flip", "shift", "hideWhenDetached", "portal", "loading"], outputs: ["openChange", "openChangeRequest"], exportAs: ["slMenu"] }, { kind: "component", type: SlMenuItem, selector: "button[slMenuItem], a[slMenuItem], button[slMenuCheckboxItem], button[slMenuRadioItem]", inputs: ["disabled", "textValue", "tone", "shortcut", "closeOnSelect", "value", "checked"], outputs: ["checkedChange", "checkedChangeRequest", "select"], exportAs: ["slMenuItem"] }, { kind: "directive", type: SlMenuTrigger, selector: "[slMenuTriggerFor]", inputs: ["slMenuTriggerFor"], exportAs: ["slMenuTrigger"] }, { kind: "directive", type: SlPopover, selector: "[slPopover]", inputs: ["open", "defaultOpen", "disabled", "size", "width", "side", "align", "mount", "strategy", "messages", "initialFocus", "finalFocus", "arrow", "autoFocus", "closeOnEscape", "closeOnOutsidePress", "flip", "shift", "hideWhenDetached", "portal", "sideOffset", "alignOffset", "collisionPadding", "arrowPadding"], outputs: ["openChange", "openChangeRequest"], exportAs: ["slPopover"] }, { kind: "component", type: SlPopoverContent, selector: "[slPopoverContent]", exportAs: ["slPopoverContent"] }, { kind: "directive", type: SlPopoverLayer, selector: "ng-template[slPopoverLayer]", exportAs: ["slPopoverLayer"] }, { kind: "directive", type: SlPopoverTrigger, selector: "[slPopoverTrigger]", exportAs: ["slPopoverTrigger"] }, { kind: "directive", type: SlSavedViewsPart, selector: "[slSavedViewsPart]", inputs: ["slSavedViewsPart"] }, { kind: "component", type: SlTextField, selector: "[slTextField]", inputs: ["size", "variant", "mono", "clearable", "revealable", "copyable", "messages", "loading"], outputs: ["valueCopy"], exportAs: ["slTextField"] }, { kind: "directive", type: SlTextFieldInput, selector: "input[slTextFieldInput]", inputs: ["value", "defaultValue", "disabled", "readOnly", "invalid", "showCount", "countMax", "revealed", "defaultRevealed", "type"], outputs: ["valueChange", "revealedChange"], exportAs: ["slTextFieldInput"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
589
602
|
}
|
|
590
603
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlSavedViews, decorators: [{
|
|
591
604
|
type: Component,
|
|
@@ -609,7 +622,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
609
622
|
SlTextFieldInput,
|
|
610
623
|
], host: {
|
|
611
624
|
'data-ui': 'saved-views',
|
|
625
|
+
'data-ui-saved-views': '',
|
|
612
626
|
'data-part': 'root',
|
|
627
|
+
'data-part-root': '',
|
|
613
628
|
'[attr.role]': 'role',
|
|
614
629
|
'[attr.aria-label]': 'resolvedLabel()',
|
|
615
630
|
'[attr.data-modified]': 'modified() ? "" : null',
|
|
@@ -626,11 +641,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
626
641
|
slPopoverTrigger
|
|
627
642
|
type="button"
|
|
628
643
|
data-part="trigger"
|
|
644
|
+
data-part-trigger=""
|
|
629
645
|
[attr.title]="activeName()"
|
|
630
646
|
>
|
|
631
647
|
<span data-label>{{ activeName() }}</span>
|
|
632
648
|
@if (modified()) {
|
|
633
|
-
<span data-part="modified">{{ t('modified') }}</span>
|
|
649
|
+
<span data-part="modified" data-part-modified="">{{ t('modified') }}</span>
|
|
634
650
|
}
|
|
635
651
|
<span slIcon size="md"><svg slGlyph name="chevron-down"></svg></span>
|
|
636
652
|
</button>
|
|
@@ -639,11 +655,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
639
655
|
<div slPopoverContent [attr.aria-label]="resolvedLabel()">
|
|
640
656
|
<!-- The family's identifier is on its own element rather than on
|
|
641
657
|
the popover's: slPopoverContent names its own part. -->
|
|
642
|
-
<div
|
|
643
|
-
|
|
658
|
+
<div
|
|
659
|
+
data-ui="saved-views"
|
|
660
|
+
data-ui-saved-views=""
|
|
661
|
+
data-part="panel"
|
|
662
|
+
data-part-panel=""
|
|
663
|
+
[id]="panelId"
|
|
664
|
+
>
|
|
665
|
+
<ul data-part="list" data-part-list="" role="list">
|
|
644
666
|
@for (row of rows(); track row.key) {
|
|
645
667
|
<li
|
|
646
668
|
data-part="item"
|
|
669
|
+
data-part-item=""
|
|
647
670
|
[attr.data-view]="row.key"
|
|
648
671
|
[attr.data-current]="row.current ? '' : null"
|
|
649
672
|
[attr.data-default]="row.isDefault ? '' : null"
|
|
@@ -660,6 +683,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
660
683
|
@case ('delete') {
|
|
661
684
|
<div
|
|
662
685
|
data-part="confirm"
|
|
686
|
+
data-part-confirm=""
|
|
663
687
|
role="group"
|
|
664
688
|
[attr.aria-labelledby]="panelId + '-confirm-' + row.key"
|
|
665
689
|
>
|
|
@@ -691,6 +715,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
691
715
|
@default {
|
|
692
716
|
<button
|
|
693
717
|
data-part="apply"
|
|
718
|
+
data-part-apply=""
|
|
694
719
|
type="button"
|
|
695
720
|
[attr.aria-current]="row.current ? 'true' : null"
|
|
696
721
|
(click)="apply(row.id, pressReason($event), $event)"
|
|
@@ -700,7 +725,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
700
725
|
}
|
|
701
726
|
<span data-label>{{ row.name }}</span>
|
|
702
727
|
@if (row.isDefault) {
|
|
703
|
-
<span data-part="default-mark"
|
|
728
|
+
<span data-part="default-mark" data-part-default-mark=""
|
|
704
729
|
><span slIcon size="sm"><svg slGlyph name="pin"></svg></span
|
|
705
730
|
><span>{{ t('isDefault') }}</span></span
|
|
706
731
|
>
|
|
@@ -709,6 +734,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
709
734
|
<button
|
|
710
735
|
type="button"
|
|
711
736
|
data-part="actions"
|
|
737
|
+
data-part-actions=""
|
|
712
738
|
slSavedViewsPart="actions"
|
|
713
739
|
[slMenuTriggerFor]="menu"
|
|
714
740
|
[attr.aria-label]="t('actions', { name: row.name })"
|
|
@@ -745,7 +771,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
745
771
|
[ngTemplateOutletContext]="{ kind: 'create', name: '' }"
|
|
746
772
|
/>
|
|
747
773
|
}
|
|
748
|
-
<div data-part="footer">
|
|
774
|
+
<div data-part="footer" data-part-footer="">
|
|
749
775
|
<button
|
|
750
776
|
slButton
|
|
751
777
|
data-save-as
|
|
@@ -766,7 +792,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
766
792
|
</ng-container>
|
|
767
793
|
|
|
768
794
|
@if (modified()) {
|
|
769
|
-
<button data-part="revert" type="button" (click)="revert($event)">
|
|
795
|
+
<button data-part="revert" data-part-revert="" type="button" (click)="revert($event)">
|
|
770
796
|
<!-- An arrow that turns back turns the other way in a right-to-left document. -->
|
|
771
797
|
<span slIcon size="sm" directional><svg slGlyph name="rotate-ccw"></svg></span>
|
|
772
798
|
{{ t('revert') }}
|
|
@@ -776,6 +802,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
776
802
|
<ng-template #nameForm let-kind="kind" let-name="name">
|
|
777
803
|
<form
|
|
778
804
|
data-part="form"
|
|
805
|
+
data-part-form=""
|
|
779
806
|
novalidate
|
|
780
807
|
[attr.aria-label]="kind === 'create' ? t('saveAs') : t('renameView', { name: name })"
|
|
781
808
|
(submit)="submit($event)"
|
|
@@ -811,7 +838,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
811
838
|
</div>
|
|
812
839
|
</form>
|
|
813
840
|
</ng-template>
|
|
814
|
-
`, styles: ["@layer slotted.components{[data-ui
|
|
841
|
+
`, styles: ["@layer slotted.components{[data-ui-saved-views]{--_text: var(--slotted-text, CanvasText);--_muted: var(--slotted-text-muted, GrayText);--_hover: var(--slotted-tone-secondary-subtle-hover, ButtonFace);--_active: var(--slotted-tone-secondary-subtle-active, ButtonFace);--_height: var(--slotted-control-height-md, 34px);--_height-sm: var(--slotted-control-height-sm, 30px);--_padding-inline: var(--slotted-control-padding-inline-md, 13px);--_gap: var(--slotted-control-gap-md, 8px);--_font-size: var(--slotted-control-font-size-md, 13px);--_icon-size: var(--slotted-control-icon-size-md, 16px);--_icon-size-sm: var(--slotted-control-icon-size-sm, 14px);--_radius: var(--slotted-control-radius, 4px);--_duration: var(--slotted-control-transition-duration);--_easing: var(--slotted-control-transition-easing);box-sizing:border-box;color:var(--_text);font-family:var(--slotted-font-family-sans, ui-sans-serif, system-ui, sans-serif);font-size:var(--_font-size);line-height:var(--slotted-line-height-md, 1.5)}[data-ui-saved-views][data-part-root]{display:inline-flex;flex-wrap:wrap;align-items:center;gap:var(--slotted-space-3, .375rem);min-inline-size:0;max-inline-size:100%}[data-ui-saved-views]>[data-part-trigger]{display:inline-flex;align-items:center;gap:var(--_gap);box-sizing:border-box;min-inline-size:0;max-inline-size:100%;min-block-size:var(--_height);margin:0;padding-block:0;padding-inline:var(--_padding-inline);border:var(--slotted-control-border-width, 1px) solid var(--slotted-control-border-color, ButtonBorder);border-radius:var(--_radius);background:var(--slotted-control-surface, Canvas);box-shadow:var(--slotted-control-shadow, none);color:var(--_text);font:inherit;font-weight:var(--slotted-font-weight-medium, 500);cursor:pointer;transition:background-color var(--_duration) var(--_easing)}[data-ui-saved-views]>[data-part-trigger]>[data-label]{min-inline-size:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}[data-ui-saved-views]>[data-part-trigger]>[data-ui-icon]{margin-inline-end:calc(var(--slotted-space-2, .25rem) * -1);color:var(--_muted);transition:rotate var(--_duration) var(--_easing)}[data-ui-saved-views][data-open]>[data-part-trigger]>[data-ui-icon]{rotate:180deg}[data-ui-saved-views]>[data-part-trigger]:hover:not(:disabled){background:var(--_hover)}[data-ui-saved-views]>[data-part-trigger]:active:not(:disabled){background:var(--_active);transition-duration:var(--slotted-duration-instant)}[data-ui-saved-views]>[data-part-trigger]>[data-part-modified]{display:inline-flex;flex:none;align-items:center;gap:var(--slotted-space-2, .25rem);color:var(--_muted);font-size:inherit;font-weight:var(--slotted-font-weight-regular, 400)}[data-ui-saved-views]>[data-part-trigger]>[data-part-modified]:before{content:\"\";flex:none;inline-size:var(--slotted-space-4, .5rem);block-size:var(--slotted-space-4, .5rem);border-radius:var(--slotted-radius-full, 9999px);background-color:var(--slotted-tone-accent-solid)}[data-ui-saved-views]>[data-part-revert]{display:inline-flex;align-items:center;gap:var(--slotted-space-3, .375rem);box-sizing:border-box;min-block-size:var(--_height);margin:0;padding-block:0;padding-inline:var(--slotted-space-4, .5rem);border:var(--slotted-control-border-width, 1px) solid transparent;border-radius:var(--_radius);background:transparent;color:var(--slotted-tone-accent-text, LinkText);font:inherit;font-weight:var(--slotted-font-weight-medium, 500);cursor:pointer;transition:background-color var(--_duration) var(--_easing)}[data-ui-saved-views]>[data-part-revert]:hover:not(:disabled){background:var(--slotted-tone-accent-subtle-hover, ButtonFace)}[data-ui-saved-views]>[data-part-revert]:active:not(:disabled){background:var(--slotted-tone-accent-subtle-active, ButtonFace);transition-duration:var(--slotted-duration-instant)}[data-ui-saved-views]>[data-part-trigger]:focus-visible,[data-ui-saved-views]>[data-part-revert]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-focus-ring-offset, 2px)}[data-ui-saved-views][data-part-panel]{display:grid;grid-template-columns:minmax(0,var(--slotted-saved-views-panel-inline-size, 18rem));gap:var(--slotted-space-4, .5rem);max-inline-size:100%;padding:var(--slotted-space-2, .25rem)}[data-ui-saved-views][data-part-panel]>[data-part-list]{display:grid;gap:var(--slotted-space-1, .125rem);margin:0;padding:0;list-style:none}[data-ui-saved-views][data-part-panel]>[data-part-list]>[data-part-item]{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:var(--slotted-space-1, .125rem);margin:0}[data-ui-saved-views][data-part-panel]>[data-part-list]>[data-part-item][data-editing]{grid-template-columns:minmax(0,1fr)}[data-ui-saved-views][data-part-panel] [data-part-apply]{display:grid;grid-template-columns:var(--_icon-size-sm) minmax(0,max-content) auto;justify-content:start;align-content:center;align-items:baseline;column-gap:var(--slotted-space-4, .5rem);box-sizing:border-box;inline-size:100%;min-block-size:var(--_height-sm);margin:0;padding-block:var(--slotted-space-2, .25rem);padding-inline:var(--slotted-space-4, .5rem);border:0;border-radius:var(--_radius);background:transparent;color:var(--_text);font:inherit;text-align:start;cursor:pointer;transition:background-color var(--_duration) var(--_easing)}[data-ui-saved-views][data-part-panel] [data-part-apply]>[data-ui-icon]{color:var(--slotted-tone-accent-text);translate:0 calc(var(--_icon-size-sm) / 2 - (1cap + 1ex) / 4)}[data-ui-saved-views][data-part-panel] [data-part-item][data-current]>[data-part-apply]{font-weight:var(--slotted-font-weight-medium, 500)}[data-ui-saved-views][data-part-panel] [data-part-apply]>[data-label]{grid-column:2;min-inline-size:0;overflow-wrap:anywhere}[data-ui-saved-views][data-part-panel] [data-part-apply]:hover:not(:disabled),[data-ui-saved-views][data-part-panel] [data-part-actions]:hover:not(:disabled){background:var(--_hover)}[data-ui-saved-views][data-part-panel] [data-part-apply]:active:not(:disabled),[data-ui-saved-views][data-part-panel] [data-part-actions]:active:not(:disabled){background:var(--_active);transition-duration:var(--slotted-duration-instant)}[data-ui-saved-views][data-part-panel] [data-part-apply]>[data-part-default-mark]{display:flex;position:relative;inline-size:var(--_icon-size-sm);block-size:var(--_icon-size-sm);margin-inline-start:calc(var(--slotted-space-2, .25rem) - var(--slotted-space-4, .5rem));translate:0 calc(var(--_icon-size-sm) / 2 - (1cap + 1ex) / 4);color:var(--_muted)}[data-ui-saved-views][data-part-panel] [data-part-default-mark]>span:not([data-ui-icon]){position:absolute;inline-size:1px;block-size:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}[data-ui-saved-views][data-part-panel] [data-part-actions]{display:inline-grid;place-items:center;box-sizing:border-box;inline-size:var(--_height-sm);block-size:var(--_height-sm);margin:0;padding:0;border:0;border-radius:var(--_radius);background:transparent;color:var(--_muted);cursor:pointer;transition:background-color var(--_duration) var(--_easing),color var(--_duration) var(--_easing)}[data-ui-saved-views][data-part-panel] [data-part-actions][data-open],[data-ui-saved-views][data-part-panel] [data-part-actions]:hover:not(:disabled){color:var(--_text)}[data-ui-saved-views][data-part-panel] [data-part-apply]:focus-visible,[data-ui-saved-views][data-part-panel] [data-part-actions]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:calc(var(--slotted-focus-ring-offset, 2px) * -1)}[data-ui-saved-views][data-part-panel] [data-part-form],[data-ui-saved-views][data-part-panel] [data-part-confirm]{display:grid;gap:var(--slotted-space-4, .5rem);margin:0;padding:var(--slotted-space-4, .5rem);border-radius:var(--_radius);background:var(--slotted-surface-sunken, Canvas)}[data-ui-saved-views][data-part-panel] [data-part-confirm]>p{margin:0;overflow-wrap:anywhere}[data-ui-saved-views][data-part-panel] :is([data-part-form],[data-part-confirm])>[data-buttons]{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--slotted-space-3, .375rem)}[data-ui-saved-views][data-part-panel]>[data-part-footer]{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--slotted-space-3, .375rem);padding-block-start:var(--slotted-space-4, .5rem);border-block-start:var(--slotted-border-width-thin, 1px) solid var(--slotted-border-subtle, transparent)}@media(forced-colors:active){[data-ui-saved-views]>[data-part-trigger]>[data-part-modified]:before{forced-color-adjust:none}}}\n"] }]
|
|
815
842
|
}], propDecorators: { current: [{ type: i0.Input, args: [{ isSignal: true, alias: "current", required: true }] }], builtIn: [{ type: i0.Input, args: [{ isSignal: true, alias: "builtIn", required: true }] }], columns: [{ type: i0.Input, args: [{ isSignal: true, alias: "columns", required: false }] }], state: [{ type: i0.Input, args: [{ isSignal: true, alias: "state", required: false }] }, { type: i0.Output, args: ["stateChange"] }], defaultState: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultState", required: false }] }], open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }, { type: i0.Output, args: ["openChange"] }], defaultOpen: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultOpen", required: false }] }], messages: [{ type: i0.Input, args: [{ isSignal: true, alias: "messages", required: false }] }], stateChangeRequest: [{ type: i0.Output, args: ["stateChangeRequest"] }], openChangeRequest: [{ type: i0.Output, args: ["openChangeRequest"] }], viewApply: [{ type: i0.Output, args: ["viewApply"] }], triggerRef: [{ type: i0.ViewChild, args: ['trigger', { isSignal: true }] }] } });
|
|
816
843
|
|
|
817
844
|
function defaultStorage() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slotted-angular-saved-views.mjs","sources":["../../saved-views/src/saved-views-defaults.ts","../../saved-views/src/saved-views.ts","../../saved-views/src/persisted-saved-views.ts","../../saved-views/src/slotted-angular-saved-views.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport type { GridView, SavedViewsState } from '@slotted/core/grid';\nimport type { ChangeRequest } from '@slotted/core/state';\n\n/** What the reader did. One state object answers seven different presses. */\nexport type SavedViewsAction =\n 'apply' | 'save' | 'create' | 'rename' | 'delete' | 'default' | 'revert';\n\n/** Why the views moved. `submit` is a form; `remove` a confirmed delete. */\nexport type SavedViewsReason = 'pointer' | 'keyboard' | 'submit' | 'remove' | 'programmatic';\n\n/** Why the layer opened or closed: the popover's own reasons. */\nexport type SavedViewsOpenReason = Extract<\n ChangeRequest<boolean>['reason'],\n 'pointer' | 'keyboard' | 'escape' | 'outsidePress' | 'dismiss' | 'programmatic'\n>;\n\n/**\n * The request every change carries: the state asked for, the one it\n * replaces, the reason, what the reader did, the originating event, and a\n * refusal that stops the change before anything commits.\n */\nexport interface SavedViewsRequest {\n readonly value: SavedViewsState;\n readonly previous: SavedViewsState;\n readonly reason: SavedViewsReason;\n readonly action: SavedViewsAction;\n readonly source?: Event | undefined;\n readonly cancelled: boolean;\n /** Refuses the request. Nothing commits and no view is applied. */\n cancel(): void;\n}\n\n/** What `viewApply` emits: the view to write into the grid, and the request that caused it. */\nexport interface SavedViewApply {\n readonly view: GridView;\n readonly request: SavedViewsRequest;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class SlSavedViewsIdFactory {\n private count = 0;\n\n next() {\n this.count += 1;\n return `slotted-saved-views-${this.count}`;\n }\n}\n\nlet counter = 0;\n\n/** `crypto.randomUUID()` where the platform has it, and a counter otherwise. */\nexport function newSavedViewId(): string {\n const crypto = (globalThis as { crypto?: { randomUUID?: () => string } }).crypto;\n if (typeof crypto?.randomUUID === 'function') return crypto.randomUUID();\n counter += 1;\n return `view-${Date.now().toString(36)}-${counter}`;\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n Directive,\n ElementRef,\n HostAttributeToken,\n inject,\n Injector,\n input,\n model,\n output,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { injectMessages } from '@slotted/angular/i18n';\nimport { SlButton } from '@slotted/angular/button';\nimport { SlField, SlFieldError, SlFieldLabel } from '@slotted/angular/field';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport { SlMenu, SlMenuItem, SlMenuTrigger } from '@slotted/angular/menu';\nimport type { MenuSelectEvent } from '@slotted/angular/menu';\nimport {\n SlPopover,\n SlPopoverContent,\n SlPopoverLayer,\n SlPopoverTrigger,\n} from '@slotted/angular/popover';\nimport { SlTextField, SlTextFieldInput } from '@slotted/angular/text-field';\nimport {\n BUILT_IN_VIEW_ID,\n emptySavedViews,\n isViewNameTaken,\n parseGridView,\n sameSavedView,\n savedViewText,\n serializeSavedViews,\n withActiveView,\n withDefaultView,\n withViewCreated,\n withViewDeleted,\n withViewRenamed,\n withViewSaved,\n type GridColumn,\n type GridView,\n type SavedView,\n type SavedViewsState,\n} from '@slotted/core/grid';\nimport {\n type PartialMessages,\n savedViewsMessages,\n type SavedViewsMessages,\n} from '@slotted/core/i18n';\nimport { getLiveAnnouncer } from '@slotted/core/live-announcer';\nimport type { ChangeRequest } from '@slotted/core/state';\n\nimport {\n newSavedViewId,\n SlSavedViewsIdFactory,\n type SavedViewApply,\n type SavedViewsAction,\n type SavedViewsOpenReason,\n type SavedViewsReason,\n type SavedViewsRequest,\n} from './saved-views-defaults';\n\n/** What replaces a row, or opens above the footer. */\ntype Editing =\n { kind: 'create' } | { kind: 'rename'; id: string } | { kind: 'delete'; id: string } | null;\n\n/** Where focus goes after the render a change causes. */\ntype FocusTarget =\n | { id: string; part: 'apply' | 'actions' | 'input' | 'cancel' }\n | { id: null; part: 'input' | 'save-as' | 'trigger' };\n\n/** One row of the list: the built-in view has no id and no saved view. */\ninterface Row {\n readonly id: string | null;\n readonly key: string;\n readonly name: string;\n readonly view: SavedView | null;\n readonly current: boolean;\n readonly isDefault: boolean;\n}\n\n/**\n * `slMenuTriggerFor` binds `[attr.data-part]` and resolves it to `null` on a\n * trigger that is neither a bar's item nor a submenu's; a host binding of\n * `null` removes the part the template wrote. The part is written back after\n * the first change detection, where the constant binding is not applied again.\n */\n@Directive({ selector: '[slSavedViewsPart]', standalone: true })\nexport class SlSavedViewsPart {\n readonly slSavedViewsPart = input.required<string>();\n\n constructor() {\n const element: HTMLElement = inject(ElementRef).nativeElement;\n afterNextRender(() => element.setAttribute('data-part', this.slSavedViewsPart()));\n }\n}\n\n/**\n * The named views of a grid, and the one in use: a trigger naming it, a mark\n * and a revert while the grid differs from it, and a popover listing every\n * view with its actions. The family applies nothing to a grid — it asks with\n * `stateChangeRequest` and hands the consumer the view to write through\n * `viewApply`.\n */\n@Component({\n selector: 'sl-saved-views',\n standalone: true,\n exportAs: 'slSavedViews',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styleUrl: '../../../styles/src/saved-views/saved-views.css',\n imports: [\n NgTemplateOutlet,\n SlButton,\n SlField,\n SlFieldError,\n SlFieldLabel,\n SlGlyph,\n SlIcon,\n SlMenu,\n SlMenuItem,\n SlMenuTrigger,\n SlPopover,\n SlPopoverContent,\n SlPopoverLayer,\n SlPopoverTrigger,\n SlSavedViewsPart,\n SlTextField,\n SlTextFieldInput,\n ],\n host: {\n 'data-ui': 'saved-views',\n 'data-part': 'root',\n '[attr.role]': 'role',\n '[attr.aria-label]': 'resolvedLabel()',\n '[attr.data-modified]': 'modified() ? \"\" : null',\n '[attr.data-open]': 'isOpen() ? \"\" : null',\n },\n template: `\n <ng-container\n slPopover\n initialFocus=\"[aria-current='true']\"\n [open]=\"isOpen()\"\n (openChangeRequest)=\"onLayerRequest($event)\"\n >\n <button\n #trigger\n slPopoverTrigger\n type=\"button\"\n data-part=\"trigger\"\n [attr.title]=\"activeName()\"\n >\n <span data-label>{{ activeName() }}</span>\n @if (modified()) {\n <span data-part=\"modified\">{{ t('modified') }}</span>\n }\n <span slIcon size=\"md\"><svg slGlyph name=\"chevron-down\"></svg></span>\n </button>\n\n <ng-template slPopoverLayer>\n <div slPopoverContent [attr.aria-label]=\"resolvedLabel()\">\n <!-- The family's identifier is on its own element rather than on\n the popover's: slPopoverContent names its own part. -->\n <div data-ui=\"saved-views\" data-part=\"panel\" [id]=\"panelId\">\n <ul data-part=\"list\" role=\"list\">\n @for (row of rows(); track row.key) {\n <li\n data-part=\"item\"\n [attr.data-view]=\"row.key\"\n [attr.data-current]=\"row.current ? '' : null\"\n [attr.data-default]=\"row.isDefault ? '' : null\"\n [attr.data-built-in]=\"row.view === null ? '' : null\"\n [attr.data-editing]=\"editingKind(row) !== null ? '' : null\"\n >\n @switch (editingKind(row)) {\n @case ('rename') {\n <ng-container\n [ngTemplateOutlet]=\"nameForm\"\n [ngTemplateOutletContext]=\"{ kind: 'rename', name: row.name }\"\n />\n }\n @case ('delete') {\n <div\n data-part=\"confirm\"\n role=\"group\"\n [attr.aria-labelledby]=\"panelId + '-confirm-' + row.key\"\n >\n <p [id]=\"panelId + '-confirm-' + row.key\">\n {{ t('confirmDelete', { name: row.name }) }}\n </p>\n <div data-buttons>\n <button\n slButton\n data-cancel\n size=\"sm\"\n tone=\"secondary\"\n variant=\"ghost\"\n (click)=\"cancelEditing()\"\n >\n {{ t('cancel') }}\n </button>\n <button\n slButton\n size=\"sm\"\n tone=\"danger\"\n (click)=\"confirmDelete(row.key, $event)\"\n >\n {{ t('delete') }}\n </button>\n </div>\n </div>\n }\n @default {\n <button\n data-part=\"apply\"\n type=\"button\"\n [attr.aria-current]=\"row.current ? 'true' : null\"\n (click)=\"apply(row.id, pressReason($event), $event)\"\n >\n @if (row.current) {\n <span slIcon size=\"sm\"><svg slGlyph name=\"check\"></svg></span>\n }\n <span data-label>{{ row.name }}</span>\n @if (row.isDefault) {\n <span data-part=\"default-mark\"\n ><span slIcon size=\"sm\"><svg slGlyph name=\"pin\"></svg></span\n ><span>{{ t('isDefault') }}</span></span\n >\n }\n </button>\n <button\n type=\"button\"\n data-part=\"actions\"\n slSavedViewsPart=\"actions\"\n [slMenuTriggerFor]=\"menu\"\n [attr.aria-label]=\"t('actions', { name: row.name })\"\n >\n <span slIcon size=\"md\"><svg slGlyph name=\"ellipsis\"></svg></span>\n </button>\n <sl-menu #menu>\n @if (row.view; as view) {\n <button slMenuItem (select)=\"startRename(view)\">\n {{ t('rename') }}\n </button>\n }\n <button\n slMenuItem\n [disabled]=\"row.isDefault\"\n (select)=\"setDefault(row.id, $event)\"\n >\n {{ t('setDefault') }}\n </button>\n @if (row.view; as view) {\n <button slMenuItem tone=\"danger\" (select)=\"startDelete(view)\">\n {{ t('delete') }}\n </button>\n }\n </sl-menu>\n }\n }\n </li>\n }\n </ul>\n @if (editing()?.kind === 'create') {\n <ng-container\n [ngTemplateOutlet]=\"nameForm\"\n [ngTemplateOutletContext]=\"{ kind: 'create', name: '' }\"\n />\n }\n <div data-part=\"footer\">\n <button\n slButton\n data-save-as\n size=\"sm\"\n tone=\"secondary\"\n variant=\"ghost\"\n (click)=\"startCreate()\"\n >\n {{ t('saveAs') }}\n </button>\n <button slButton size=\"sm\" [disabled]=\"!canSave()\" (click)=\"save($event)\">\n {{ t('save') }}\n </button>\n </div>\n </div>\n </div>\n </ng-template>\n </ng-container>\n\n @if (modified()) {\n <button data-part=\"revert\" type=\"button\" (click)=\"revert($event)\">\n <!-- An arrow that turns back turns the other way in a right-to-left document. -->\n <span slIcon size=\"sm\" directional><svg slGlyph name=\"rotate-ccw\"></svg></span>\n {{ t('revert') }}\n </button>\n }\n\n <ng-template #nameForm let-kind=\"kind\" let-name=\"name\">\n <form\n data-part=\"form\"\n novalidate\n [attr.aria-label]=\"kind === 'create' ? t('saveAs') : t('renameView', { name: name })\"\n (submit)=\"submit($event)\"\n >\n <div slField size=\"sm\" [invalid]=\"error() !== null\">\n <label slFieldLabel>{{ t('name') }}</label>\n <div slTextField size=\"sm\">\n <input\n slTextFieldInput\n autocomplete=\"off\"\n [value]=\"draft()\"\n (valueChange)=\"onDraft($event.value)\"\n />\n </div>\n @if (error(); as reason) {\n <span slFieldError>{{ reason === 'empty' ? t('empty') : t('duplicate') }}</span>\n }\n </div>\n <div data-buttons>\n <button\n slButton\n data-cancel\n size=\"sm\"\n tone=\"secondary\"\n variant=\"ghost\"\n (click)=\"cancelEditing()\"\n >\n {{ t('cancel') }}\n </button>\n <button slButton type=\"submit\" size=\"sm\">\n {{ kind === 'create' ? t('create') : t('rename') }}\n </button>\n </div>\n </form>\n </ng-template>\n `,\n})\nexport class SlSavedViews {\n /** The view the grid shows now. */\n readonly current = input.required<GridView>();\n /** The built-in view: the application's defaults. */\n readonly builtIn = input.required<GridView>();\n /** The model, so a view is serialized and compared against the columns it names. */\n readonly columns = input<readonly GridColumn<never>[] | undefined>(undefined);\n /** The views. Two-way, so a template may bind it directly; cancel the request to hold it. */\n readonly state = model<SavedViewsState | undefined>(undefined);\n /** The views an unbound instance starts from. */\n readonly defaultState = input<SavedViewsState | undefined>(undefined);\n /** Whether the layer is open. Two-way. */\n readonly open = model<boolean | undefined>(undefined);\n readonly defaultOpen = input(false, { transform: booleanAttribute });\n /**\n * Words laid over the catalog of the language in force, key by key: the\n * group's and the panel's name (`label`), the controls, the forms and the\n * announcements. A host `aria-label` names both instead.\n */\n readonly messages = input<PartialMessages<SavedViewsMessages> | undefined>(undefined);\n\n /** Every change to the views, carrying the action and the reason; cancellable. */\n readonly stateChangeRequest = output<SavedViewsRequest>();\n /** One output for one transition of the layer. */\n readonly openChangeRequest = output<ChangeRequest<boolean>>();\n /** After apply and revert: the view to write into the grid. */\n readonly viewApply = output<SavedViewApply>();\n\n private readonly injector = inject(Injector);\n private readonly host: HTMLElement = inject(ElementRef).nativeElement;\n protected readonly role = inject(new HostAttributeToken('role'), { optional: true }) ?? 'group';\n protected readonly writtenLabel = inject(new HostAttributeToken('aria-label'), {\n optional: true,\n });\n readonly panelId = `${inject(SlSavedViewsIdFactory).next()}-panel`;\n\n private readonly triggerRef = viewChild.required<ElementRef<HTMLButtonElement>>('trigger');\n\n protected readonly editing = signal<Editing>(null);\n protected readonly draft = signal('');\n protected readonly error = signal<'empty' | 'duplicate' | null>(null);\n\n /** The family's words in the language in force, with this control's `messages` laid over them. */\n readonly t = injectMessages(savedViewsMessages, this.messages);\n readonly resolvedLabel = computed(() => this.writtenLabel ?? this.t('label'));\n readonly resolvedState = computed<SavedViewsState>(\n () => this.state() ?? this.defaultState() ?? emptySavedViews(),\n );\n readonly isOpen = computed(() => this.open() ?? this.defaultOpen());\n readonly active = computed(() => {\n const state = this.resolvedState();\n return state.views.find((view) => view.id === state.activeId) ?? null;\n });\n readonly activeView = computed<GridView>(() => {\n const active = this.active();\n return active ? parseGridView(active.view, this.columns()) : this.builtIn();\n });\n readonly modified = computed(\n () => !sameSavedView(this.current(), this.activeView(), this.columns()),\n );\n readonly activeName = computed(() => this.active()?.name ?? this.t('builtIn'));\n readonly canSave = computed(() => this.active() !== null && this.modified());\n readonly rows = computed<readonly Row[]>(() => {\n const state = this.resolvedState();\n return [\n {\n id: null,\n key: BUILT_IN_VIEW_ID,\n name: this.t('builtIn'),\n view: null,\n current: state.activeId === null,\n isDefault: state.defaultId === null,\n },\n ...state.views.map((view) => ({\n id: view.id,\n key: view.id,\n name: view.name,\n view,\n current: state.activeId === view.id,\n isDefault: state.defaultId === view.id,\n })),\n ];\n });\n\n /** A click the keyboard produced has no pointer detail. */\n protected pressReason(event: MouseEvent): 'pointer' | 'keyboard' {\n return event.detail === 0 ? 'keyboard' : 'pointer';\n }\n\n protected editingKind(row: Row): 'rename' | 'delete' | null {\n const editing = this.editing();\n if (editing === null || editing.kind === 'create' || editing.id !== row.id) return null;\n return editing.kind;\n }\n\n /** Opens the layer, carrying `programmatic`. */\n show() {\n this.setOpen(true, 'programmatic');\n }\n\n /** Closes the layer, carrying `programmatic`. */\n hide() {\n this.setOpen(false, 'programmatic');\n }\n\n /** Moves focus to the trigger. */\n focus() {\n this.triggerRef().nativeElement.focus();\n }\n\n /** Applies a view by id — `null` is the built-in view — carrying the reason. */\n apply(id: string | null, reason: SavedViewsReason = 'programmatic', source?: Event) {\n const state = this.resolvedState();\n const target = id === null ? null : (state.views.find((view) => view.id === id) ?? null);\n if (id !== null && target === null) return;\n const request = this.request(withActiveView(state, id), 'apply', reason, source);\n if (request === null) return;\n const view = target ? parseGridView(target.view, this.columns()) : this.builtIn();\n this.viewApply.emit({ view, request });\n this.announce(this.t('applied', { name: target?.name ?? this.t('builtIn') }));\n this.setOpen(\n false,\n reason === 'keyboard' || reason === 'pointer' ? reason : 'programmatic',\n source,\n );\n }\n\n protected revert(event: MouseEvent) {\n const request = this.request(this.resolvedState(), 'revert', this.pressReason(event), event);\n if (request === null) return;\n this.viewApply.emit({ view: this.activeView(), request });\n this.announce(this.t('applied', { name: this.activeName() }));\n this.focusAfterRender({ id: null, part: 'trigger' });\n }\n\n protected save(event: MouseEvent) {\n const active = this.active();\n if (active === null || !this.modified()) return;\n const reason = this.pressReason(event);\n const next = withViewSaved(\n this.resolvedState(),\n active.id,\n savedViewText(this.current(), this.columns()),\n );\n if (this.request(next, 'save', reason, event) === null) return;\n this.announce(this.t('saved', { name: active.name }));\n this.setOpen(false, reason, event);\n }\n\n protected setDefault(id: string | null, event: MenuSelectEvent) {\n const state = this.resolvedState();\n const request = this.request(withDefaultView(state, id), 'default', event.reason, event.source);\n if (request === null) return;\n const name = state.views.find((view) => view.id === id)?.name ?? this.t('builtIn');\n this.announce(this.t('defaultChanged', { name }));\n }\n\n protected startCreate() {\n this.editing.set({ kind: 'create' });\n this.draft.set('');\n this.error.set(null);\n this.focusAfterRender({ id: null, part: 'input' });\n }\n\n protected startRename(view: SavedView) {\n this.editing.set({ kind: 'rename', id: view.id });\n this.draft.set(view.name);\n this.error.set(null);\n this.focusAfterRender({ id: view.id, part: 'input' });\n }\n\n protected startDelete(view: SavedView) {\n this.editing.set({ kind: 'delete', id: view.id });\n this.error.set(null);\n this.focusAfterRender({ id: view.id, part: 'cancel' });\n }\n\n /** Cancelling returns focus to the control that opened the form. */\n protected cancelEditing() {\n const was = this.editing();\n this.closeForms();\n if (was === null) return;\n this.focusAfterRender(\n was.kind === 'create' ? { id: null, part: 'save-as' } : { id: was.id, part: 'actions' },\n );\n }\n\n protected onDraft(value: string | undefined) {\n this.draft.set(value ?? '');\n this.error.set(null);\n }\n\n protected submit(event: Event) {\n event.preventDefault();\n const editing = this.editing();\n if (editing === null || editing.kind === 'delete') return;\n const state = this.resolvedState();\n const name = this.draft().trim();\n const except = editing.kind === 'rename' ? editing.id : null;\n const builtIn = this.t('builtIn').trim().toLocaleLowerCase();\n if (name === '') this.error.set('empty');\n else if (isViewNameTaken(state, name, except) || name.toLocaleLowerCase() === builtIn) {\n this.error.set('duplicate');\n }\n if (this.error() !== null) {\n this.focusAfterRender({ id: except, part: 'input' } as FocusTarget);\n return;\n }\n if (editing.kind === 'create') {\n const id = newSavedViewId();\n const next = withViewCreated(state, name, savedViewText(this.current(), this.columns()), id);\n if (this.request(next, 'create', 'submit', event) === null) return;\n this.announce(this.t('saved', { name }));\n this.closeForms();\n this.focusAfterRender({ id, part: 'apply' });\n return;\n }\n if (\n this.request(withViewRenamed(state, editing.id, name), 'rename', 'submit', event) === null\n ) {\n return;\n }\n this.announce(this.t('renamed', { name }));\n this.closeForms();\n this.focusAfterRender({ id: editing.id, part: 'apply' });\n }\n\n protected confirmDelete(id: string, event: MouseEvent) {\n const state = this.resolvedState();\n const index = state.views.findIndex((view) => view.id === id);\n const view = state.views[index];\n if (view === undefined) return;\n if (this.request(withViewDeleted(state, id), 'delete', 'remove', event) === null) return;\n this.announce(this.t('deleted', { name: view.name }));\n this.closeForms();\n this.focusAfterRender({ id: state.views[index - 1]?.id ?? BUILT_IN_VIEW_ID, part: 'apply' });\n }\n\n /**\n * The dismissable layer asks in the capture phase. The popover's own move is\n * always refused here and replayed as this family's request, so the layer\n * follows one open state; a form open inside is cancelled first and the\n * close is refused.\n */\n protected onLayerRequest(request: ChangeRequest<boolean>) {\n request.cancel();\n if (!request.value && request.reason === 'escape' && this.editing() !== null) {\n this.cancelEditing();\n return;\n }\n this.setOpen(\n request.value,\n request.reason as SavedViewsOpenReason,\n request.source as Event | undefined,\n );\n }\n\n private setOpen(next: boolean, reason: SavedViewsOpenReason, source?: Event) {\n if (next === this.isOpen()) return;\n let cancelled = false;\n const request: ChangeRequest<boolean> = {\n value: next,\n previous: !next,\n reason,\n source,\n get cancelled() {\n return cancelled;\n },\n cancel() {\n cancelled = true;\n },\n };\n this.openChangeRequest.emit(request);\n if (cancelled) return;\n this.open.set(next);\n if (!next) this.closeForms();\n }\n\n /** Asks for a new state. Not emitted when nothing would change; refused when cancelled. */\n private request(\n next: SavedViewsState,\n action: SavedViewsAction,\n reason: SavedViewsReason,\n source?: Event,\n ): SavedViewsRequest | null {\n const previous = this.resolvedState();\n let cancelled = false;\n const request: SavedViewsRequest = {\n value: next,\n previous,\n reason,\n action,\n source,\n get cancelled() {\n return cancelled;\n },\n cancel() {\n cancelled = true;\n },\n };\n if (serializeSavedViews(next) === serializeSavedViews(previous)) return request;\n this.stateChangeRequest.emit(request);\n if (cancelled) return null;\n this.state.set(next);\n return request;\n }\n\n private closeForms() {\n this.editing.set(null);\n this.draft.set('');\n this.error.set(null);\n }\n\n private announce(text: string) {\n getLiveAnnouncer(this.host.ownerDocument).announce(text);\n }\n\n private focusAfterRender(target: FocusTarget) {\n afterNextRender(\n () => {\n if (target.part === 'trigger') {\n this.focus();\n return;\n }\n const panel = this.host.ownerDocument.getElementById(this.panelId);\n if (panel === null) return;\n const scope =\n target.id === null\n ? panel\n : ([...panel.querySelectorAll<HTMLElement>('[data-part=\"item\"]')].find(\n (item) => item.dataset['view'] === target.id,\n ) ?? null);\n const selector = {\n apply: '[data-part=\"apply\"]',\n actions: '[data-part=\"actions\"]',\n input: target.id === null ? ':scope > [data-part=\"form\"] input' : 'input',\n cancel: '[data-cancel]',\n 'save-as': '[data-save-as]',\n }[target.part];\n scope?.querySelector<HTMLElement>(selector)?.focus();\n },\n { injector: this.injector },\n );\n }\n}\n","import { effect, signal, untracked, type Injector, type WritableSignal } from '@angular/core';\nimport {\n parseGridView,\n parseSavedViews,\n serializeSavedViews,\n withActiveView,\n type GridColumn,\n type GridView,\n type GridViewStorage,\n type SavedViewsState,\n} from '@slotted/core/grid';\n\nexport interface PersistedSavedViewsOptions {\n /** The entry the views are kept under. */\n readonly key: string;\n /** Default `window.localStorage`; `null` keeps the views in memory only. */\n readonly storage?: GridViewStorage | null | undefined;\n /** The model, so the default view a visit opens on is parsed against it. */\n readonly columns?: readonly GridColumn<never>[] | undefined;\n /** Required outside an injection context. */\n readonly injector?: Injector | undefined;\n}\n\nexport interface PersistedSavedViews {\n /** Bind with `[(state)]`. */\n readonly state: WritableSignal<SavedViewsState>;\n /**\n * The default view this visit opened on, when the store held no view in use\n * and a default: the state already names it as active, and the grid still\n * has to be given it once. `null` otherwise.\n */\n readonly openedDefault: GridView | null;\n}\n\nfunction defaultStorage(): GridViewStorage | null {\n try {\n return typeof window === 'undefined' ? null : window.localStorage;\n } catch {\n return null;\n }\n}\n\n/**\n * A reader's saved views, kept across visits: read once from the store with\n * `parseSavedViews` — which is total, so a malformed entry is no views — and\n * written with `serializeSavedViews` after every change. A store that holds\n * no view in use and a default opens the visit on the default. The store is\n * reached inside `try` both ways, as `persistedGridView` reaches it.\n */\nexport function persistedSavedViews({\n key,\n storage,\n columns,\n injector,\n}: PersistedSavedViewsOptions): PersistedSavedViews {\n const store = storage === undefined ? defaultStorage() : storage;\n let text: string | null;\n try {\n text = store?.getItem(key) ?? null;\n } catch {\n text = null;\n }\n let initial = parseSavedViews(text);\n let openedDefault: GridView | null = null;\n if (initial.activeId === null && initial.defaultId !== null) {\n const opened = initial.views.find((view) => view.id === initial.defaultId);\n initial = withActiveView(initial, initial.defaultId);\n openedDefault = opened ? parseGridView(opened.view, columns) : null;\n }\n const state = signal<SavedViewsState>(initial);\n\n /* The first run is the read; every run after is a change to write. */\n let settled = false;\n effect(\n () => {\n const current = state();\n if (!settled) {\n settled = true;\n return;\n }\n untracked(() => {\n if (!store) return;\n try {\n store.setItem(key, serializeSavedViews(current));\n } catch {\n /* The store refused; the views stay in memory. */\n }\n });\n },\n injector ? { injector } : undefined,\n );\n\n return { state, openedDefault };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"slotted-angular-saved-views.mjs","sources":["../../saved-views/src/saved-views-defaults.ts","../../saved-views/src/saved-views.ts","../../saved-views/src/persisted-saved-views.ts","../../saved-views/src/slotted-angular-saved-views.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport type { GridView, SavedViewsState } from '@slotted/core/grid';\nimport type { ChangeRequest } from '@slotted/core/state';\n\n/** What the reader did. One state object answers seven different presses. */\nexport type SavedViewsAction =\n 'apply' | 'save' | 'create' | 'rename' | 'delete' | 'default' | 'revert';\n\n/** Why the views moved. `submit` is a form; `remove` a confirmed delete. */\nexport type SavedViewsReason = 'pointer' | 'keyboard' | 'submit' | 'remove' | 'programmatic';\n\n/** Why the layer opened or closed: the popover's own reasons. */\nexport type SavedViewsOpenReason = Extract<\n ChangeRequest<boolean>['reason'],\n 'pointer' | 'keyboard' | 'escape' | 'outsidePress' | 'dismiss' | 'programmatic'\n>;\n\n/**\n * The request every change carries: the state asked for, the one it\n * replaces, the reason, what the reader did, the originating event, and a\n * refusal that stops the change before anything commits.\n */\nexport interface SavedViewsRequest {\n readonly value: SavedViewsState;\n readonly previous: SavedViewsState;\n readonly reason: SavedViewsReason;\n readonly action: SavedViewsAction;\n readonly source?: Event | undefined;\n readonly cancelled: boolean;\n /** Refuses the request. Nothing commits and no view is applied. */\n cancel(): void;\n}\n\n/** What `viewApply` emits: the view to write into the grid, and the request that caused it. */\nexport interface SavedViewApply {\n readonly view: GridView;\n readonly request: SavedViewsRequest;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class SlSavedViewsIdFactory {\n private count = 0;\n\n next() {\n this.count += 1;\n return `slotted-saved-views-${this.count}`;\n }\n}\n\nlet counter = 0;\n\n/** `crypto.randomUUID()` where the platform has it, and a counter otherwise. */\nexport function newSavedViewId(): string {\n const crypto = (globalThis as { crypto?: { randomUUID?: () => string } }).crypto;\n if (typeof crypto?.randomUUID === 'function') return crypto.randomUUID();\n counter += 1;\n return `view-${Date.now().toString(36)}-${counter}`;\n}\n","import { writeSelectorKey } from '@slotted/core/selector-key';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n Directive,\n ElementRef,\n HostAttributeToken,\n inject,\n Injector,\n input,\n model,\n output,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { injectMessages } from '@slotted/angular/i18n';\nimport { SlButton } from '@slotted/angular/button';\nimport { SlField, SlFieldError, SlFieldLabel } from '@slotted/angular/field';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport { SlMenu, SlMenuItem, SlMenuTrigger } from '@slotted/angular/menu';\nimport type { MenuSelectEvent } from '@slotted/angular/menu';\nimport {\n SlPopover,\n SlPopoverContent,\n SlPopoverLayer,\n SlPopoverTrigger,\n} from '@slotted/angular/popover';\nimport { SlTextField, SlTextFieldInput } from '@slotted/angular/text-field';\nimport {\n BUILT_IN_VIEW_ID,\n emptySavedViews,\n isViewNameTaken,\n parseGridView,\n sameSavedView,\n savedViewText,\n serializeSavedViews,\n withActiveView,\n withDefaultView,\n withViewCreated,\n withViewDeleted,\n withViewRenamed,\n withViewSaved,\n type GridColumn,\n type GridView,\n type SavedView,\n type SavedViewsState,\n} from '@slotted/core/grid';\nimport {\n type PartialMessages,\n savedViewsMessages,\n type SavedViewsMessages,\n} from '@slotted/core/i18n';\nimport { getLiveAnnouncer } from '@slotted/core/live-announcer';\nimport type { ChangeRequest } from '@slotted/core/state';\n\nimport {\n newSavedViewId,\n SlSavedViewsIdFactory,\n type SavedViewApply,\n type SavedViewsAction,\n type SavedViewsOpenReason,\n type SavedViewsReason,\n type SavedViewsRequest,\n} from './saved-views-defaults';\n\n/** What replaces a row, or opens above the footer. */\ntype Editing =\n { kind: 'create' } | { kind: 'rename'; id: string } | { kind: 'delete'; id: string } | null;\n\n/** Where focus goes after the render a change causes. */\ntype FocusTarget =\n | { id: string; part: 'apply' | 'actions' | 'input' | 'cancel' }\n | { id: null; part: 'input' | 'save-as' | 'trigger' };\n\n/** One row of the list: the built-in view has no id and no saved view. */\ninterface Row {\n readonly id: string | null;\n readonly key: string;\n readonly name: string;\n readonly view: SavedView | null;\n readonly current: boolean;\n readonly isDefault: boolean;\n}\n\n/**\n * `slMenuTriggerFor` binds `[attr.data-part]` and resolves it to `null` on a\n * trigger that is neither a bar's item nor a submenu's; a host binding of\n * `null` removes the part the template wrote. The part is written back after\n * the first change detection, where the constant binding is not applied again.\n */\n@Directive({ selector: '[slSavedViewsPart]', standalone: true })\nexport class SlSavedViewsPart {\n readonly slSavedViewsPart = input.required<string>();\n\n constructor() {\n const element: HTMLElement = inject(ElementRef).nativeElement;\n afterNextRender(() => writeSelectorKey(element, 'part', this.slSavedViewsPart()));\n }\n}\n\n/**\n * The named views of a grid, and the one in use: a trigger naming it, a mark\n * and a revert while the grid differs from it, and a popover listing every\n * view with its actions. The family applies nothing to a grid — it asks with\n * `stateChangeRequest` and hands the consumer the view to write through\n * `viewApply`.\n */\n@Component({\n selector: 'sl-saved-views',\n standalone: true,\n exportAs: 'slSavedViews',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styleUrl: '../../../styles/src/saved-views/saved-views.css',\n imports: [\n NgTemplateOutlet,\n SlButton,\n SlField,\n SlFieldError,\n SlFieldLabel,\n SlGlyph,\n SlIcon,\n SlMenu,\n SlMenuItem,\n SlMenuTrigger,\n SlPopover,\n SlPopoverContent,\n SlPopoverLayer,\n SlPopoverTrigger,\n SlSavedViewsPart,\n SlTextField,\n SlTextFieldInput,\n ],\n host: {\n 'data-ui': 'saved-views',\n 'data-ui-saved-views': '',\n 'data-part': 'root',\n 'data-part-root': '',\n '[attr.role]': 'role',\n '[attr.aria-label]': 'resolvedLabel()',\n '[attr.data-modified]': 'modified() ? \"\" : null',\n '[attr.data-open]': 'isOpen() ? \"\" : null',\n },\n template: `\n <ng-container\n slPopover\n initialFocus=\"[aria-current='true']\"\n [open]=\"isOpen()\"\n (openChangeRequest)=\"onLayerRequest($event)\"\n >\n <button\n #trigger\n slPopoverTrigger\n type=\"button\"\n data-part=\"trigger\"\n data-part-trigger=\"\"\n [attr.title]=\"activeName()\"\n >\n <span data-label>{{ activeName() }}</span>\n @if (modified()) {\n <span data-part=\"modified\" data-part-modified=\"\">{{ t('modified') }}</span>\n }\n <span slIcon size=\"md\"><svg slGlyph name=\"chevron-down\"></svg></span>\n </button>\n\n <ng-template slPopoverLayer>\n <div slPopoverContent [attr.aria-label]=\"resolvedLabel()\">\n <!-- The family's identifier is on its own element rather than on\n the popover's: slPopoverContent names its own part. -->\n <div\n data-ui=\"saved-views\"\n data-ui-saved-views=\"\"\n data-part=\"panel\"\n data-part-panel=\"\"\n [id]=\"panelId\"\n >\n <ul data-part=\"list\" data-part-list=\"\" role=\"list\">\n @for (row of rows(); track row.key) {\n <li\n data-part=\"item\"\n data-part-item=\"\"\n [attr.data-view]=\"row.key\"\n [attr.data-current]=\"row.current ? '' : null\"\n [attr.data-default]=\"row.isDefault ? '' : null\"\n [attr.data-built-in]=\"row.view === null ? '' : null\"\n [attr.data-editing]=\"editingKind(row) !== null ? '' : null\"\n >\n @switch (editingKind(row)) {\n @case ('rename') {\n <ng-container\n [ngTemplateOutlet]=\"nameForm\"\n [ngTemplateOutletContext]=\"{ kind: 'rename', name: row.name }\"\n />\n }\n @case ('delete') {\n <div\n data-part=\"confirm\"\n data-part-confirm=\"\"\n role=\"group\"\n [attr.aria-labelledby]=\"panelId + '-confirm-' + row.key\"\n >\n <p [id]=\"panelId + '-confirm-' + row.key\">\n {{ t('confirmDelete', { name: row.name }) }}\n </p>\n <div data-buttons>\n <button\n slButton\n data-cancel\n size=\"sm\"\n tone=\"secondary\"\n variant=\"ghost\"\n (click)=\"cancelEditing()\"\n >\n {{ t('cancel') }}\n </button>\n <button\n slButton\n size=\"sm\"\n tone=\"danger\"\n (click)=\"confirmDelete(row.key, $event)\"\n >\n {{ t('delete') }}\n </button>\n </div>\n </div>\n }\n @default {\n <button\n data-part=\"apply\"\n data-part-apply=\"\"\n type=\"button\"\n [attr.aria-current]=\"row.current ? 'true' : null\"\n (click)=\"apply(row.id, pressReason($event), $event)\"\n >\n @if (row.current) {\n <span slIcon size=\"sm\"><svg slGlyph name=\"check\"></svg></span>\n }\n <span data-label>{{ row.name }}</span>\n @if (row.isDefault) {\n <span data-part=\"default-mark\" data-part-default-mark=\"\"\n ><span slIcon size=\"sm\"><svg slGlyph name=\"pin\"></svg></span\n ><span>{{ t('isDefault') }}</span></span\n >\n }\n </button>\n <button\n type=\"button\"\n data-part=\"actions\"\n data-part-actions=\"\"\n slSavedViewsPart=\"actions\"\n [slMenuTriggerFor]=\"menu\"\n [attr.aria-label]=\"t('actions', { name: row.name })\"\n >\n <span slIcon size=\"md\"><svg slGlyph name=\"ellipsis\"></svg></span>\n </button>\n <sl-menu #menu>\n @if (row.view; as view) {\n <button slMenuItem (select)=\"startRename(view)\">\n {{ t('rename') }}\n </button>\n }\n <button\n slMenuItem\n [disabled]=\"row.isDefault\"\n (select)=\"setDefault(row.id, $event)\"\n >\n {{ t('setDefault') }}\n </button>\n @if (row.view; as view) {\n <button slMenuItem tone=\"danger\" (select)=\"startDelete(view)\">\n {{ t('delete') }}\n </button>\n }\n </sl-menu>\n }\n }\n </li>\n }\n </ul>\n @if (editing()?.kind === 'create') {\n <ng-container\n [ngTemplateOutlet]=\"nameForm\"\n [ngTemplateOutletContext]=\"{ kind: 'create', name: '' }\"\n />\n }\n <div data-part=\"footer\" data-part-footer=\"\">\n <button\n slButton\n data-save-as\n size=\"sm\"\n tone=\"secondary\"\n variant=\"ghost\"\n (click)=\"startCreate()\"\n >\n {{ t('saveAs') }}\n </button>\n <button slButton size=\"sm\" [disabled]=\"!canSave()\" (click)=\"save($event)\">\n {{ t('save') }}\n </button>\n </div>\n </div>\n </div>\n </ng-template>\n </ng-container>\n\n @if (modified()) {\n <button data-part=\"revert\" data-part-revert=\"\" type=\"button\" (click)=\"revert($event)\">\n <!-- An arrow that turns back turns the other way in a right-to-left document. -->\n <span slIcon size=\"sm\" directional><svg slGlyph name=\"rotate-ccw\"></svg></span>\n {{ t('revert') }}\n </button>\n }\n\n <ng-template #nameForm let-kind=\"kind\" let-name=\"name\">\n <form\n data-part=\"form\"\n data-part-form=\"\"\n novalidate\n [attr.aria-label]=\"kind === 'create' ? t('saveAs') : t('renameView', { name: name })\"\n (submit)=\"submit($event)\"\n >\n <div slField size=\"sm\" [invalid]=\"error() !== null\">\n <label slFieldLabel>{{ t('name') }}</label>\n <div slTextField size=\"sm\">\n <input\n slTextFieldInput\n autocomplete=\"off\"\n [value]=\"draft()\"\n (valueChange)=\"onDraft($event.value)\"\n />\n </div>\n @if (error(); as reason) {\n <span slFieldError>{{ reason === 'empty' ? t('empty') : t('duplicate') }}</span>\n }\n </div>\n <div data-buttons>\n <button\n slButton\n data-cancel\n size=\"sm\"\n tone=\"secondary\"\n variant=\"ghost\"\n (click)=\"cancelEditing()\"\n >\n {{ t('cancel') }}\n </button>\n <button slButton type=\"submit\" size=\"sm\">\n {{ kind === 'create' ? t('create') : t('rename') }}\n </button>\n </div>\n </form>\n </ng-template>\n `,\n})\nexport class SlSavedViews {\n /** The view the grid shows now. */\n readonly current = input.required<GridView>();\n /** The built-in view: the application's defaults. */\n readonly builtIn = input.required<GridView>();\n /** The model, so a view is serialized and compared against the columns it names. */\n readonly columns = input<readonly GridColumn<never>[] | undefined>(undefined);\n /** The views. Two-way, so a template may bind it directly; cancel the request to hold it. */\n readonly state = model<SavedViewsState | undefined>(undefined);\n /** The views an unbound instance starts from. */\n readonly defaultState = input<SavedViewsState | undefined>(undefined);\n /** Whether the layer is open. Two-way. */\n readonly open = model<boolean | undefined>(undefined);\n readonly defaultOpen = input(false, { transform: booleanAttribute });\n /**\n * Words laid over the catalog of the language in force, key by key: the\n * group's and the panel's name (`label`), the controls, the forms and the\n * announcements. A host `aria-label` names both instead.\n */\n readonly messages = input<PartialMessages<SavedViewsMessages> | undefined>(undefined);\n\n /** Every change to the views, carrying the action and the reason; cancellable. */\n readonly stateChangeRequest = output<SavedViewsRequest>();\n /** One output for one transition of the layer. */\n readonly openChangeRequest = output<ChangeRequest<boolean>>();\n /** After apply and revert: the view to write into the grid. */\n readonly viewApply = output<SavedViewApply>();\n\n private readonly injector = inject(Injector);\n private readonly host: HTMLElement = inject(ElementRef).nativeElement;\n protected readonly role = inject(new HostAttributeToken('role'), { optional: true }) ?? 'group';\n protected readonly writtenLabel = inject(new HostAttributeToken('aria-label'), {\n optional: true,\n });\n readonly panelId = `${inject(SlSavedViewsIdFactory).next()}-panel`;\n\n private readonly triggerRef = viewChild.required<ElementRef<HTMLButtonElement>>('trigger');\n\n protected readonly editing = signal<Editing>(null);\n protected readonly draft = signal('');\n protected readonly error = signal<'empty' | 'duplicate' | null>(null);\n\n /** The family's words in the language in force, with this control's `messages` laid over them. */\n readonly t = injectMessages(savedViewsMessages, this.messages);\n readonly resolvedLabel = computed(() => this.writtenLabel ?? this.t('label'));\n readonly resolvedState = computed<SavedViewsState>(\n () => this.state() ?? this.defaultState() ?? emptySavedViews(),\n );\n readonly isOpen = computed(() => this.open() ?? this.defaultOpen());\n readonly active = computed(() => {\n const state = this.resolvedState();\n return state.views.find((view) => view.id === state.activeId) ?? null;\n });\n readonly activeView = computed<GridView>(() => {\n const active = this.active();\n return active ? parseGridView(active.view, this.columns()) : this.builtIn();\n });\n readonly modified = computed(\n () => !sameSavedView(this.current(), this.activeView(), this.columns()),\n );\n readonly activeName = computed(() => this.active()?.name ?? this.t('builtIn'));\n readonly canSave = computed(() => this.active() !== null && this.modified());\n readonly rows = computed<readonly Row[]>(() => {\n const state = this.resolvedState();\n return [\n {\n id: null,\n key: BUILT_IN_VIEW_ID,\n name: this.t('builtIn'),\n view: null,\n current: state.activeId === null,\n isDefault: state.defaultId === null,\n },\n ...state.views.map((view) => ({\n id: view.id,\n key: view.id,\n name: view.name,\n view,\n current: state.activeId === view.id,\n isDefault: state.defaultId === view.id,\n })),\n ];\n });\n\n /** A click the keyboard produced has no pointer detail. */\n protected pressReason(event: MouseEvent): 'pointer' | 'keyboard' {\n return event.detail === 0 ? 'keyboard' : 'pointer';\n }\n\n protected editingKind(row: Row): 'rename' | 'delete' | null {\n const editing = this.editing();\n if (editing === null || editing.kind === 'create' || editing.id !== row.id) return null;\n return editing.kind;\n }\n\n /** Opens the layer, carrying `programmatic`. */\n show() {\n this.setOpen(true, 'programmatic');\n }\n\n /** Closes the layer, carrying `programmatic`. */\n hide() {\n this.setOpen(false, 'programmatic');\n }\n\n /** Moves focus to the trigger. */\n focus() {\n this.triggerRef().nativeElement.focus();\n }\n\n /** Applies a view by id — `null` is the built-in view — carrying the reason. */\n apply(id: string | null, reason: SavedViewsReason = 'programmatic', source?: Event) {\n const state = this.resolvedState();\n const target = id === null ? null : (state.views.find((view) => view.id === id) ?? null);\n if (id !== null && target === null) return;\n const request = this.request(withActiveView(state, id), 'apply', reason, source);\n if (request === null) return;\n const view = target ? parseGridView(target.view, this.columns()) : this.builtIn();\n this.viewApply.emit({ view, request });\n this.announce(this.t('applied', { name: target?.name ?? this.t('builtIn') }));\n this.setOpen(\n false,\n reason === 'keyboard' || reason === 'pointer' ? reason : 'programmatic',\n source,\n );\n }\n\n protected revert(event: MouseEvent) {\n const request = this.request(this.resolvedState(), 'revert', this.pressReason(event), event);\n if (request === null) return;\n this.viewApply.emit({ view: this.activeView(), request });\n this.announce(this.t('applied', { name: this.activeName() }));\n this.focusAfterRender({ id: null, part: 'trigger' });\n }\n\n protected save(event: MouseEvent) {\n const active = this.active();\n if (active === null || !this.modified()) return;\n const reason = this.pressReason(event);\n const next = withViewSaved(\n this.resolvedState(),\n active.id,\n savedViewText(this.current(), this.columns()),\n );\n if (this.request(next, 'save', reason, event) === null) return;\n this.announce(this.t('saved', { name: active.name }));\n this.setOpen(false, reason, event);\n }\n\n protected setDefault(id: string | null, event: MenuSelectEvent) {\n const state = this.resolvedState();\n const request = this.request(withDefaultView(state, id), 'default', event.reason, event.source);\n if (request === null) return;\n const name = state.views.find((view) => view.id === id)?.name ?? this.t('builtIn');\n this.announce(this.t('defaultChanged', { name }));\n }\n\n protected startCreate() {\n this.editing.set({ kind: 'create' });\n this.draft.set('');\n this.error.set(null);\n this.focusAfterRender({ id: null, part: 'input' });\n }\n\n protected startRename(view: SavedView) {\n this.editing.set({ kind: 'rename', id: view.id });\n this.draft.set(view.name);\n this.error.set(null);\n this.focusAfterRender({ id: view.id, part: 'input' });\n }\n\n protected startDelete(view: SavedView) {\n this.editing.set({ kind: 'delete', id: view.id });\n this.error.set(null);\n this.focusAfterRender({ id: view.id, part: 'cancel' });\n }\n\n /** Cancelling returns focus to the control that opened the form. */\n protected cancelEditing() {\n const was = this.editing();\n this.closeForms();\n if (was === null) return;\n this.focusAfterRender(\n was.kind === 'create' ? { id: null, part: 'save-as' } : { id: was.id, part: 'actions' },\n );\n }\n\n protected onDraft(value: string | undefined) {\n this.draft.set(value ?? '');\n this.error.set(null);\n }\n\n protected submit(event: Event) {\n event.preventDefault();\n const editing = this.editing();\n if (editing === null || editing.kind === 'delete') return;\n const state = this.resolvedState();\n const name = this.draft().trim();\n const except = editing.kind === 'rename' ? editing.id : null;\n const builtIn = this.t('builtIn').trim().toLocaleLowerCase();\n if (name === '') this.error.set('empty');\n else if (isViewNameTaken(state, name, except) || name.toLocaleLowerCase() === builtIn) {\n this.error.set('duplicate');\n }\n if (this.error() !== null) {\n this.focusAfterRender({ id: except, part: 'input' } as FocusTarget);\n return;\n }\n if (editing.kind === 'create') {\n const id = newSavedViewId();\n const next = withViewCreated(state, name, savedViewText(this.current(), this.columns()), id);\n if (this.request(next, 'create', 'submit', event) === null) return;\n this.announce(this.t('saved', { name }));\n this.closeForms();\n this.focusAfterRender({ id, part: 'apply' });\n return;\n }\n if (\n this.request(withViewRenamed(state, editing.id, name), 'rename', 'submit', event) === null\n ) {\n return;\n }\n this.announce(this.t('renamed', { name }));\n this.closeForms();\n this.focusAfterRender({ id: editing.id, part: 'apply' });\n }\n\n protected confirmDelete(id: string, event: MouseEvent) {\n const state = this.resolvedState();\n const index = state.views.findIndex((view) => view.id === id);\n const view = state.views[index];\n if (view === undefined) return;\n if (this.request(withViewDeleted(state, id), 'delete', 'remove', event) === null) return;\n this.announce(this.t('deleted', { name: view.name }));\n this.closeForms();\n this.focusAfterRender({ id: state.views[index - 1]?.id ?? BUILT_IN_VIEW_ID, part: 'apply' });\n }\n\n /**\n * The dismissable layer asks in the capture phase. The popover's own move is\n * always refused here and replayed as this family's request, so the layer\n * follows one open state; a form open inside is cancelled first and the\n * close is refused.\n */\n protected onLayerRequest(request: ChangeRequest<boolean>) {\n request.cancel();\n if (!request.value && request.reason === 'escape' && this.editing() !== null) {\n this.cancelEditing();\n return;\n }\n this.setOpen(\n request.value,\n request.reason as SavedViewsOpenReason,\n request.source as Event | undefined,\n );\n }\n\n private setOpen(next: boolean, reason: SavedViewsOpenReason, source?: Event) {\n if (next === this.isOpen()) return;\n let cancelled = false;\n const request: ChangeRequest<boolean> = {\n value: next,\n previous: !next,\n reason,\n source,\n get cancelled() {\n return cancelled;\n },\n cancel() {\n cancelled = true;\n },\n };\n this.openChangeRequest.emit(request);\n if (cancelled) return;\n this.open.set(next);\n if (!next) this.closeForms();\n }\n\n /** Asks for a new state. Not emitted when nothing would change; refused when cancelled. */\n private request(\n next: SavedViewsState,\n action: SavedViewsAction,\n reason: SavedViewsReason,\n source?: Event,\n ): SavedViewsRequest | null {\n const previous = this.resolvedState();\n let cancelled = false;\n const request: SavedViewsRequest = {\n value: next,\n previous,\n reason,\n action,\n source,\n get cancelled() {\n return cancelled;\n },\n cancel() {\n cancelled = true;\n },\n };\n if (serializeSavedViews(next) === serializeSavedViews(previous)) return request;\n this.stateChangeRequest.emit(request);\n if (cancelled) return null;\n this.state.set(next);\n return request;\n }\n\n private closeForms() {\n this.editing.set(null);\n this.draft.set('');\n this.error.set(null);\n }\n\n private announce(text: string) {\n getLiveAnnouncer(this.host.ownerDocument).announce(text);\n }\n\n private focusAfterRender(target: FocusTarget) {\n afterNextRender(\n () => {\n if (target.part === 'trigger') {\n this.focus();\n return;\n }\n const panel = this.host.ownerDocument.getElementById(this.panelId);\n if (panel === null) return;\n const scope =\n target.id === null\n ? panel\n : ([...panel.querySelectorAll<HTMLElement>('[data-part=\"item\"]')].find(\n (item) => item.dataset['view'] === target.id,\n ) ?? null);\n const selector = {\n apply: '[data-part=\"apply\"]',\n actions: '[data-part=\"actions\"]',\n input: target.id === null ? ':scope > [data-part=\"form\"] input' : 'input',\n cancel: '[data-cancel]',\n 'save-as': '[data-save-as]',\n }[target.part];\n scope?.querySelector<HTMLElement>(selector)?.focus();\n },\n { injector: this.injector },\n );\n }\n}\n","import { effect, signal, untracked, type Injector, type WritableSignal } from '@angular/core';\nimport {\n parseGridView,\n parseSavedViews,\n serializeSavedViews,\n withActiveView,\n type GridColumn,\n type GridView,\n type GridViewStorage,\n type SavedViewsState,\n} from '@slotted/core/grid';\n\nexport interface PersistedSavedViewsOptions {\n /** The entry the views are kept under. */\n readonly key: string;\n /** Default `window.localStorage`; `null` keeps the views in memory only. */\n readonly storage?: GridViewStorage | null | undefined;\n /** The model, so the default view a visit opens on is parsed against it. */\n readonly columns?: readonly GridColumn<never>[] | undefined;\n /** Required outside an injection context. */\n readonly injector?: Injector | undefined;\n}\n\nexport interface PersistedSavedViews {\n /** Bind with `[(state)]`. */\n readonly state: WritableSignal<SavedViewsState>;\n /**\n * The default view this visit opened on, when the store held no view in use\n * and a default: the state already names it as active, and the grid still\n * has to be given it once. `null` otherwise.\n */\n readonly openedDefault: GridView | null;\n}\n\nfunction defaultStorage(): GridViewStorage | null {\n try {\n return typeof window === 'undefined' ? null : window.localStorage;\n } catch {\n return null;\n }\n}\n\n/**\n * A reader's saved views, kept across visits: read once from the store with\n * `parseSavedViews` — which is total, so a malformed entry is no views — and\n * written with `serializeSavedViews` after every change. A store that holds\n * no view in use and a default opens the visit on the default. The store is\n * reached inside `try` both ways, as `persistedGridView` reaches it.\n */\nexport function persistedSavedViews({\n key,\n storage,\n columns,\n injector,\n}: PersistedSavedViewsOptions): PersistedSavedViews {\n const store = storage === undefined ? defaultStorage() : storage;\n let text: string | null;\n try {\n text = store?.getItem(key) ?? null;\n } catch {\n text = null;\n }\n let initial = parseSavedViews(text);\n let openedDefault: GridView | null = null;\n if (initial.activeId === null && initial.defaultId !== null) {\n const opened = initial.views.find((view) => view.id === initial.defaultId);\n initial = withActiveView(initial, initial.defaultId);\n openedDefault = opened ? parseGridView(opened.view, columns) : null;\n }\n const state = signal<SavedViewsState>(initial);\n\n /* The first run is the read; every run after is a change to write. */\n let settled = false;\n effect(\n () => {\n const current = state();\n if (!settled) {\n settled = true;\n return;\n }\n untracked(() => {\n if (!store) return;\n try {\n store.setItem(key, serializeSavedViews(current));\n } catch {\n /* The store refused; the views stay in memory. */\n }\n });\n },\n injector ? { injector } : undefined,\n );\n\n return { state, openedDefault };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|