@slotted/angular 0.1.0-beta.8 → 0.1.0-beta.9
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/docs/code-block.json +92 -92
- package/docs/code-block.md +69 -69
- package/docs/currency-field.json +7 -0
- package/docs/currency-field.md +1 -0
- package/docs/data-grid.examples.md +1 -1
- package/docs/data-grid.json +21 -4
- package/docs/data-grid.md +1 -1
- package/docs/data-grid.props.md +5 -3
- package/docs/dialog.examples.md +138 -136
- package/docs/dialog.json +8 -8
- package/docs/filter-bar.json +118 -118
- package/docs/filter-bar.md +79 -79
- package/docs/guidelines/async-feedback.md +10 -0
- package/docs/guidelines/composition.md +11 -7
- package/docs/guidelines/index.md +6 -1
- package/docs/guidelines/list-pages.md +30 -0
- package/docs/guidelines/overviews.md +10 -0
- package/docs/markdown.json +79 -79
- package/docs/markdown.md +65 -65
- package/docs/page-header.json +1 -1
- package/docs/skills/compose-screen/SKILL.md +22 -10
- package/docs/skills/review-screen/SKILL.md +6 -0
- package/docs/skills/waiting-states/SKILL.md +4 -1
- package/docs/tags-input.json +28 -2
- package/docs/tags-input.md +4 -1
- package/docs/timeline.json +131 -131
- package/docs/timeline.md +123 -123
- package/fesm2022/slotted-angular-accordion.mjs +4 -2
- package/fesm2022/slotted-angular-accordion.mjs.map +1 -1
- package/fesm2022/slotted-angular-action-bar.mjs +21 -10
- 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 +17 -11
- package/fesm2022/slotted-angular-alert.mjs.map +1 -1
- package/fesm2022/slotted-angular-app-shell.mjs +52 -40
- 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 +9 -6
- 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 +53 -25
- package/fesm2022/slotted-angular-button.mjs.map +1 -1
- package/fesm2022/slotted-angular-calendar.mjs +68 -26
- 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 +158 -64
- package/fesm2022/slotted-angular-cascader.mjs.map +1 -1
- package/fesm2022/slotted-angular-chart.mjs +4 -2
- 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 +13 -8
- 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 +77 -31
- package/fesm2022/slotted-angular-combobox.mjs.map +1 -1
- package/fesm2022/slotted-angular-command-palette.mjs +128 -51
- 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 +98 -32
- package/fesm2022/slotted-angular-currency-field.mjs.map +1 -1
- package/fesm2022/slotted-angular-dashboard-grid.mjs +127 -44
- package/fesm2022/slotted-angular-dashboard-grid.mjs.map +1 -1
- package/fesm2022/slotted-angular-data-grid.mjs +309 -104
- 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 +38 -12
- package/fesm2022/slotted-angular-date-field.mjs.map +1 -1
- package/fesm2022/slotted-angular-date-picker.mjs +19 -9
- package/fesm2022/slotted-angular-date-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-date-range-picker.mjs +41 -16
- package/fesm2022/slotted-angular-date-range-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-datetime-field.mjs +46 -14
- package/fesm2022/slotted-angular-datetime-field.mjs.map +1 -1
- package/fesm2022/slotted-angular-datetime-picker.mjs +37 -23
- package/fesm2022/slotted-angular-datetime-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-datetime-range-picker.mjs +111 -42
- 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 +39 -28
- 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 +32 -24
- package/fesm2022/slotted-angular-drawer.mjs.map +1 -1
- package/fesm2022/slotted-angular-entity-picker.mjs +195 -67
- package/fesm2022/slotted-angular-entity-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-event-calendar.mjs +259 -102
- 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 +104 -43
- 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 +10 -8
- 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 +14 -10
- 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 +41 -27
- 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 +133 -57
- 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 +107 -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 +72 -42
- package/fesm2022/slotted-angular-page-header.mjs.map +1 -1
- package/fesm2022/slotted-angular-page.mjs +18 -9
- 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 +25 -18
- package/fesm2022/slotted-angular-popover.mjs.map +1 -1
- package/fesm2022/slotted-angular-progress-indicator.mjs +122 -30
- package/fesm2022/slotted-angular-progress-indicator.mjs.map +1 -1
- package/fesm2022/slotted-angular-prompt-composer.mjs +24 -18
- 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 +9 -5
- package/fesm2022/slotted-angular-scroll-area.mjs.map +1 -1
- package/fesm2022/slotted-angular-section.mjs +34 -15
- package/fesm2022/slotted-angular-section.mjs.map +1 -1
- package/fesm2022/slotted-angular-segmented-control.mjs +15 -9
- package/fesm2022/slotted-angular-segmented-control.mjs.map +1 -1
- package/fesm2022/slotted-angular-select.mjs +135 -53
- 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 +29 -13
- 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 +135 -72
- package/fesm2022/slotted-angular-table.mjs.map +1 -1
- package/fesm2022/slotted-angular-tabs.mjs +31 -14
- 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 +46 -12
- package/fesm2022/slotted-angular-time-field.mjs.map +1 -1
- package/fesm2022/slotted-angular-time-picker.mjs +28 -14
- package/fesm2022/slotted-angular-time-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-time-range-picker.mjs +109 -40
- 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 +42 -31
- package/fesm2022/slotted-angular-toast.mjs.map +1 -1
- package/fesm2022/slotted-angular-toggle-group.mjs +10 -6
- 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 +21 -10
- package/fesm2022/slotted-angular-toolbar.mjs.map +1 -1
- package/fesm2022/slotted-angular-tooltip.mjs +8 -5
- 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 +46 -21
- 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 +1 -1
- package/types/slotted-angular-alert.d.ts.map +1 -1
- 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.map +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.map +1 -1
- package/types/slotted-angular-button.d.ts.map +1 -1
- 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.map +1 -1
- package/types/slotted-angular-checkbox-group.d.ts.map +1 -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 +1 -1
- package/types/slotted-angular-combobox.d.ts.map +1 -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 +39 -13
- 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 +26 -2
- 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.map +1 -1
- package/types/slotted-angular-date-picker.d.ts.map +1 -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.map +1 -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 +2 -1
- 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.map +1 -1
- package/types/slotted-angular-entity-picker.d.ts.map +1 -1
- 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 +1 -1
- 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 +1 -1
- 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.map +1 -1
- 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.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.map +1 -1
- package/types/slotted-angular-multi-select.d.ts +1 -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.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 +1 -1
- 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.map +1 -1
- 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.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.map +1 -1
- package/types/slotted-angular-segmented-control.d.ts.map +1 -1
- package/types/slotted-angular-select.d.ts +1 -1
- 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.map +1 -1
- 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.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.map +1 -1
- package/types/slotted-angular-tabs.d.ts.map +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-time-field.d.ts.map +1 -1
- package/types/slotted-angular-time-picker.d.ts.map +1 -1
- package/types/slotted-angular-time-range-picker.d.ts.map +1 -1
- package/types/slotted-angular-timeline.d.ts.map +1 -1
- package/types/slotted-angular-toast.d.ts +2 -2
- package/types/slotted-angular-toast.d.ts.map +1 -1
- package/types/slotted-angular-toggle-group.d.ts.map +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.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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slotted-angular-command-palette.mjs","sources":["../../command-palette/src/command-palette-defaults.ts","../../command-palette/src/command-palette.ts","../../command-palette/src/slotted-angular-command-palette.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\nimport type { Provider, TemplateRef } from '@angular/core';\n\nimport type { CommandItem } from '@slotted/core/commands';\nimport type { DialogDismissPolicy } from '@slotted/angular/dialog';\n\nexport type { CommandGroup, CommandRanker } from '@slotted/core/commands';\n\n/**\n * Where the panel stands. `dialog` composes the dialog family; `inline` draws\n * the panel where it was written — the filtered menu `menu` refused.\n */\nexport type CommandPalettePresentation = 'dialog' | 'inline';\nexport type CommandPaletteSize = 'sm' | 'md' | 'lg';\n\nexport type CommandPaletteOpenReason =\n 'pointer' | 'keyboard' | 'escape' | 'outsidePress' | 'select' | 'dismiss' | 'programmatic';\nexport type CommandPaletteQueryReason = 'keyboard' | 'clear' | 'select' | 'programmatic';\nexport type CommandPaletteHighlightReason = 'pointer' | 'keyboard' | 'programmatic';\nexport type CommandPalettePagesReason = 'select' | 'keyboard' | 'pointer' | 'programmatic';\nexport type CommandPaletteSelectReason = 'pointer' | 'keyboard';\n\n/**\n * What an executed item is handed. `keepOpen()` holds the palette open after\n * the handler returns.\n */\nexport interface CommandPaletteSelectRequest<Item extends CommandPaletteItem = CommandPaletteItem> {\n readonly item: Item;\n readonly reason: CommandPaletteSelectReason;\n readonly source: Event | undefined;\n keepOpen: () => void;\n}\n\n/**\n * One command. `id`, `label` and `keywords` are what the ranker reads; the rest\n * is what the row draws. `children` opens a page; `href` is a destination.\n * The mark in the first column comes from the item template, which is where\n * an Angular consumer writes an icon.\n */\nexport interface CommandPaletteItem extends CommandItem {\n readonly meta?: string | undefined;\n /** In the library's notation, `mod+shift+p`; drawn by `kbd` and announced. */\n readonly shortcut?: string | undefined;\n readonly href?: string | undefined;\n readonly target?: string | undefined;\n /** Runs before the root's `select` output. A promise keeps the palette open. */\n readonly onSelect?:\n ((request: CommandPaletteSelectRequest) => void | Promise<unknown>) | undefined;\n readonly children?: readonly CommandPaletteItem[] | undefined;\n}\n\n/** What the item template receives. */\nexport interface CommandPaletteItemContext<Item extends CommandPaletteItem = CommandPaletteItem> {\n $implicit: Item;\n current: boolean;\n disabled: boolean;\n pending: boolean;\n query: string;\n /** The label's runs, marked where the query matched. */\n runs: readonly { text: string; matched: boolean }[];\n}\n\nexport type CommandPaletteItemTemplate<Item extends CommandPaletteItem = CommandPaletteItem> =\n TemplateRef<CommandPaletteItemContext<Item>>;\n\nexport interface CommandPaletteDefaults {\n presentation: CommandPalettePresentation;\n size: CommandPaletteSize;\n outsidePress: DialogDismissPolicy;\n loop: boolean;\n autoHighlight: boolean;\n closeOnSelect: boolean;\n clearOnClose: boolean;\n highlightMatch: boolean;\n /** The chord that opens the palette anywhere in the document; `null` for none. */\n hotkey: string | null;\n recentLimit: number;\n}\n\n/**\n * The numbers, and why they are these numbers: the React binding's\n * `COMMAND_PALETTE_FALLBACK` records them, and the two lists are one list.\n */\nexport const COMMAND_PALETTE_FALLBACK: CommandPaletteDefaults = {\n presentation: 'dialog',\n size: 'md',\n outsidePress: 'close',\n loop: true,\n autoHighlight: true,\n closeOnSelect: true,\n clearOnClose: true,\n highlightMatch: true,\n hotkey: 'mod+k',\n recentLimit: 5,\n};\n\nexport const COMMAND_PALETTE_DEFAULTS = new InjectionToken<CommandPaletteDefaults>(\n 'COMMAND_PALETTE_DEFAULTS',\n { providedIn: 'root', factory: () => COMMAND_PALETTE_FALLBACK },\n);\n\n/**\n * The decisions an application takes once. The sentences the family speaks\n * come from the language in force (`provideSlotted`).\n */\nexport function provideCommandPaletteDefaults(defaults: Partial<CommandPaletteDefaults>): Provider {\n return {\n provide: COMMAND_PALETTE_DEFAULTS,\n useValue: { ...COMMAND_PALETTE_FALLBACK, ...defaults },\n };\n}\n\nexport function injectCommandPaletteDefaults(): CommandPaletteDefaults {\n return inject(COMMAND_PALETTE_DEFAULTS);\n}\n","import { DOCUMENT, NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n HostAttributeToken,\n inject,\n input,\n model,\n numberAttribute,\n output,\n signal,\n TemplateRef,\n untracked,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\n\nimport { SlDialog, SlDialogTitle } from '@slotted/angular/dialog';\nimport type { DialogChangeRequest, DialogDismissPolicy } from '@slotted/angular/dialog';\nimport { SlHighlight } from '@slotted/angular/highlight';\nimport { injectLocale, injectMessages } from '@slotted/angular/i18n';\nimport { injectKbdPlatform, SlShortcut } from '@slotted/angular/kbd';\nimport { moveIndex, splitByMatch } from '@slotted/core/collection';\nimport type { MoveIntent } from '@slotted/core/collection';\nimport { createCommandRanker, pushRecent, resolveCommands } from '@slotted/core/commands';\nimport type { CommandGroup, CommandRanker } from '@slotted/core/commands';\nimport {\n commandPaletteMessages,\n type CommandPaletteMessages,\n type PartialMessages,\n} from '@slotted/core/i18n';\nimport { canonicalKey, isEditableTarget, matchesShortcut, parseShortcut } from '@slotted/core/keys';\nimport type { KbdPlatform } from '@slotted/core/keys';\nimport { getLiveAnnouncer } from '@slotted/core/live-announcer';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeRequest } from '@slotted/core/state';\n\nimport { injectCommandPaletteDefaults } from './command-palette-defaults';\nimport type {\n CommandPaletteHighlightReason,\n CommandPaletteItem,\n CommandPaletteItemContext,\n CommandPaletteOpenReason,\n CommandPalettePagesReason,\n CommandPalettePresentation,\n CommandPaletteQueryReason,\n CommandPaletteSelectReason,\n CommandPaletteSelectRequest,\n CommandPaletteSize,\n} from './command-palette-defaults';\n\n/**\n * A search that executes.\n *\n * `<sl-command-palette>` is written in place and its template holds the\n * `<sl-dialog>` — the layer, the scrim, the focus containment and the\n * dismissal are the dialog family's, as `upload-viewer` composes them — or,\n * under `presentation=\"inline\"`, the panel itself. DOM focus stays on the\n * input and the list is walked with `aria-activedescendant`, the model\n * `combobox` uses. Which rows are drawn, in which order, is\n * `@slotted/core/commands`, the same function the React binding asks.\n */\n\nlet nextId = 0;\n\n/**\n * The shortcut as `aria-keyshortcuts` states it; a sequence is drawn only.\n *\n * The attribute's grammar is the UI Events `key` values — `Control`, `Alt`,\n * `Meta`, `Shift` — which a screen reader parses and speaks in its own\n * language. They are tokens rather than words, so they stay out of the\n * catalog: a translated or platform-named modifier (`Option`, `Command`) is\n * not a value the attribute accepts.\n */\nfunction announceShortcut(keys: string, platform: KbdPlatform): string | null {\n const steps = parseShortcut(keys);\n if (steps.length !== 1) return null;\n return (\n steps[0]\n ?.map((token) => {\n const canonical = canonicalKey(token);\n if (canonical === 'mod') return platform === 'mac' ? 'Meta' : 'Control';\n if (canonical === 'ctrl') return 'Control';\n const word = canonical ?? token;\n return word.length === 1 ? word.toUpperCase() : `${word[0]?.toUpperCase()}${word.slice(1)}`;\n })\n .join('+') ?? null\n );\n}\n\n/** The content of a row, written by the consumer on an `ng-template`. */\n@Directive({ selector: 'ng-template[slCommandPaletteItem]', standalone: true })\nexport class SlCommandPaletteItem<Item extends CommandPaletteItem = CommandPaletteItem> {\n readonly template = inject<TemplateRef<CommandPaletteItemContext<Item>>>(TemplateRef);\n /* Types the template's context, so `let-item` is an `Item` in the template. */\n static ngTemplateContextGuard<Item extends CommandPaletteItem>(\n _directive: SlCommandPaletteItem<Item>,\n context: unknown,\n ): context is CommandPaletteItemContext<Item> {\n return context !== null;\n }\n}\n\n/** The footer's content, in place of the family's hints. */\n@Directive({ selector: 'ng-template[slCommandPaletteFooter]', standalone: true })\nexport class SlCommandPaletteFooter {\n readonly template = inject<TemplateRef<unknown>>(TemplateRef);\n}\n\n/** The empty message, in place of the catalog's `empty`. */\n@Directive({ selector: 'ng-template[slCommandPaletteEmpty]', standalone: true })\nexport class SlCommandPaletteEmpty {\n readonly template = inject<TemplateRef<unknown>>(TemplateRef);\n}\n\n@Component({\n selector: 'sl-command-palette',\n standalone: true,\n exportAs: 'slCommandPalette',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [NgTemplateOutlet, SlDialog, SlDialogTitle, SlGlyph, SlHighlight, SlIcon, SlShortcut],\n styleUrls: [\n '../../../styles/src/command-palette/command-palette.css',\n '../../../styles/src/skeleton/skeleton.css',\n '../../../styles/src/spinner/spinner.css',\n ],\n host: { '[style.display]': \"'contents'\" },\n template: `\n @if (inline()) {\n <ng-container *ngTemplateOutlet=\"panel\" />\n } @else {\n <sl-dialog\n [open]=\"isOpen()\"\n (openChangeRequest)=\"onDialogRequest($event)\"\n [container]=\"container()\"\n [size]=\"resolvedSize()\"\n [outsidePress]=\"resolvedOutsidePress()\"\n [initialFocus]=\"inputElement()\"\n escape=\"none\"\n fullScreen=\"narrow\"\n placement=\"top\"\n surface=\"plain\"\n >\n <!-- The dialog takes its name from a title it points at; the title is\n read by assistive technology and hidden from the eye, because the\n field under it is the name a reader sees. -->\n <h2 slDialogTitle hidden>{{ t('label') }}</h2>\n <ng-container *ngTemplateOutlet=\"panel\" />\n </sl-dialog>\n }\n\n <ng-template #panel>\n <div\n data-ui=\"command-palette\"\n data-part=\"root\"\n [attr.data-presentation]=\"resolvedPresentation()\"\n [attr.data-size]=\"resolvedSize()\"\n [attr.data-open]=\"isOpen() ? '' : null\"\n [attr.data-loading]=\"loading() ? '' : null\"\n [attr.data-disabled]=\"disabled() ? '' : null\"\n [attr.data-query]=\"query() === '' ? null : ''\"\n [attr.data-empty]=\"isEmpty() ? '' : null\"\n (mousedown)=\"keepFocus($event)\"\n >\n <div data-part=\"header\">\n @if (loading()) {\n <span data-part=\"busy\" data-ui=\"spinner\" aria-hidden=\"true\"></span>\n } @else {\n <span data-part=\"search\" aria-hidden=\"true\"\n ><span slIcon><svg slGlyph name=\"search\"></svg></span\n ></span>\n }\n @if (rows().trail.length > 0) {\n <ol data-part=\"pages\" [attr.aria-label]=\"t('back')\">\n @for (entry of rows().trail; track entry.id; let index = $index) {\n <li>\n <!-- The chevron between two pages, mirrored in a right-to-left document. -->\n @if (index > 0) {\n <span slIcon directional><svg slGlyph name=\"chevron-right\"></svg></span>\n }\n <button data-part=\"page\" type=\"button\" (click)=\"returnTo(index, $event)\">\n <span>{{ entry.label }}</span>\n </button>\n </li>\n }\n </ol>\n }\n <input\n #field\n data-part=\"input\"\n type=\"text\"\n role=\"combobox\"\n aria-expanded=\"true\"\n aria-autocomplete=\"list\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [id]=\"inputId\"\n [attr.aria-label]=\"t('input')\"\n [attr.aria-controls]=\"listId\"\n [attr.aria-activedescendant]=\"activeDescendant()\"\n [attr.placeholder]=\"t('placeholder')\"\n [disabled]=\"disabled()\"\n [value]=\"query()\"\n (input)=\"onInput($event)\"\n (keydown)=\"onKeyDown($event)\"\n />\n <button\n data-part=\"clear\"\n type=\"button\"\n tabindex=\"-1\"\n [attr.aria-label]=\"t('clear')\"\n (click)=\"clear($event)\"\n >\n <span slIcon><svg slGlyph name=\"x\"></svg></span>\n </button>\n @if (!inline()) {\n <!-- The way out where the scrim is not: shown by the stylesheet\n under the dialog's full-screen query alone. -->\n <button data-part=\"close\" type=\"button\" (click)=\"setOpen(false, 'dismiss', $event)\">\n {{ t('close') }}\n </button>\n }\n </div>\n\n <div\n #list\n data-part=\"list\"\n role=\"listbox\"\n [id]=\"listId\"\n [attr.aria-label]=\"t('input')\"\n [attr.aria-busy]=\"loading() ? 'true' : null\"\n [attr.data-loading]=\"loading() ? '' : null\"\n >\n @if (loading() && rows().count === 0) {\n <div data-part=\"placeholder\" aria-hidden=\"true\">\n @for (row of [0, 1, 2]; track row) {\n <div>\n <span data-ui=\"skeleton\" data-part=\"root\" data-shape=\"text\" data-loading></span>\n </div>\n }\n </div>\n }\n @if (isEmpty()) {\n <div data-part=\"empty\">\n @if (emptyTemplate(); as template) {\n <ng-container *ngTemplateOutlet=\"template.template\" />\n } @else {\n {{ t('empty') }}\n }\n </div>\n }\n @for (section of rows().sections; track $index; let sectionIndex = $index) {\n @if (sectionIndex > 0) {\n <div data-part=\"separator\" role=\"separator\"></div>\n }\n @if (headingOf(section); as heading) {\n <div\n data-part=\"group\"\n role=\"group\"\n [attr.aria-labelledby]=\"baseId + '-group-' + sectionIndex\"\n >\n <div\n data-part=\"group-label\"\n role=\"presentation\"\n [id]=\"baseId + '-group-' + sectionIndex\"\n >\n {{ heading }}\n </div>\n @for (item of section.items; track item.id) {\n <ng-container *ngTemplateOutlet=\"row; context: { $implicit: item }\" />\n }\n </div>\n } @else {\n @for (item of section.items; track item.id) {\n <ng-container *ngTemplateOutlet=\"row; context: { $implicit: item }\" />\n }\n }\n }\n </div>\n\n <div data-part=\"status\" role=\"status\">{{ status() }}</div>\n\n @if (footerTemplate(); as footer) {\n <div data-part=\"footer\" aria-hidden=\"true\">\n <ng-container *ngTemplateOutlet=\"footer.template\" />\n </div>\n } @else if (!hideFooter()) {\n <div data-part=\"footer\" aria-hidden=\"true\">\n <span data-part=\"hint\">\n <kbd slShortcut keys=\"up\" separator=\"\" size=\"inherit\" variant=\"outline\"></kbd>\n <kbd slShortcut keys=\"down\" separator=\"\" size=\"inherit\" variant=\"outline\"></kbd>\n <span>{{ t('hintNavigate') }}</span>\n </span>\n <span data-part=\"hint\">\n <kbd slShortcut keys=\"enter\" separator=\"\" size=\"inherit\" variant=\"outline\"></kbd>\n <span>{{ t('hintSelect') }}</span>\n </span>\n @if (pages().length > 0) {\n <span data-part=\"hint\">\n <kbd\n slShortcut\n keys=\"backspace\"\n separator=\"\"\n size=\"inherit\"\n variant=\"outline\"\n ></kbd>\n <span>{{ t('hintBack') }}</span>\n </span>\n }\n @if (!inline()) {\n <span data-part=\"hint\">\n <kbd slShortcut keys=\"escape\" separator=\"\" size=\"inherit\" variant=\"outline\"></kbd>\n <span>{{ t('hintClose') }}</span>\n </span>\n }\n </div>\n }\n </div>\n </ng-template>\n\n <ng-template #row let-item>\n @if (item.href; as href) {\n <a\n data-part=\"item\"\n role=\"option\"\n [id]=\"domId(item.id)\"\n [href]=\"href\"\n [attr.target]=\"item.target ?? null\"\n [attr.title]=\"item.label\"\n [attr.aria-selected]=\"highlightedId() === item.id\"\n [attr.aria-disabled]=\"item.disabled ? 'true' : null\"\n [attr.aria-busy]=\"pending().has(item.id) ? 'true' : null\"\n [attr.aria-keyshortcuts]=\"keyshortcuts(item)\"\n [attr.data-current]=\"highlightedId() === item.id ? '' : null\"\n [attr.data-disabled]=\"item.disabled ? '' : null\"\n [attr.data-loading]=\"pending().has(item.id) ? '' : null\"\n [attr.data-page]=\"item.children ? '' : null\"\n (pointermove)=\"hover(item, $event)\"\n (click)=\"press(item, $event)\"\n >\n <ng-container *ngTemplateOutlet=\"cells; context: { $implicit: item }\" />\n </a>\n } @else {\n <div\n data-part=\"item\"\n role=\"option\"\n [id]=\"domId(item.id)\"\n [attr.title]=\"item.label\"\n [attr.aria-selected]=\"highlightedId() === item.id\"\n [attr.aria-disabled]=\"item.disabled ? 'true' : null\"\n [attr.aria-busy]=\"pending().has(item.id) ? 'true' : null\"\n [attr.aria-keyshortcuts]=\"keyshortcuts(item)\"\n [attr.data-current]=\"highlightedId() === item.id ? '' : null\"\n [attr.data-disabled]=\"item.disabled ? '' : null\"\n [attr.data-loading]=\"pending().has(item.id) ? '' : null\"\n [attr.data-page]=\"item.children ? '' : null\"\n (pointermove)=\"hover(item, $event)\"\n (click)=\"press(item, $event)\"\n >\n <ng-container *ngTemplateOutlet=\"cells; context: { $implicit: item }\" />\n </div>\n }\n </ng-template>\n\n <ng-template #cells let-item>\n @if (itemTemplate(); as custom) {\n <ng-container\n *ngTemplateOutlet=\"\n custom.template;\n context: {\n $implicit: item,\n current: highlightedId() === item.id,\n disabled: item.disabled === true,\n pending: pending().has(item.id),\n query: query(),\n runs: runsOf(item),\n }\n \"\n />\n } @else {\n <span data-part=\"icon\"></span>\n <span data-part=\"label\">\n @if (marking()) {\n <span\n slHighlight\n [text]=\"item.label\"\n [query]=\"query()\"\n [locale]=\"resolvedLocale()\"\n ></span>\n } @else {\n {{ item.label }}\n }\n </span>\n @if (item.description; as description) {\n <span data-part=\"description\">{{ description }}</span>\n }\n @if (item.meta; as meta) {\n <span data-part=\"meta\" aria-hidden=\"true\">{{ meta }}</span>\n }\n @if (!item.children && item.shortcut; as shortcut) {\n <span data-part=\"shortcut\" aria-hidden=\"true\">\n <kbd slShortcut [keys]=\"shortcut\" size=\"inherit\" separator=\"\" variant=\"outline\"></kbd>\n </span>\n }\n @if (item.children) {\n <!-- The mark that says the item opens a page, mirrored in a right-to-left document. -->\n <span data-part=\"arrow\" aria-hidden=\"true\"\n ><span slIcon directional><svg slGlyph name=\"chevron-right\"></svg></span\n ></span>\n }\n @if (pending().has(item.id)) {\n <span data-part=\"busy\" data-ui=\"spinner\" aria-hidden=\"true\"></span>\n }\n }\n </ng-template>\n `,\n})\nexport class SlCommandPalette<Item extends CommandPaletteItem = CommandPaletteItem> {\n private static flag(value: unknown) {\n return value === undefined ? undefined : booleanAttribute(value);\n }\n\n private static count(value: unknown) {\n return value === undefined ? undefined : numberAttribute(value);\n }\n\n private readonly defaults = injectCommandPaletteDefaults();\n private readonly platformOf = injectKbdPlatform();\n private readonly document = inject(DOCUMENT);\n private readonly destroyRef = inject(DestroyRef);\n private readonly host: HTMLElement = inject(ElementRef).nativeElement;\n\n protected readonly baseId =\n inject(new HostAttributeToken('id'), { optional: true }) ?? `sl-command-palette-${nextId++}`;\n protected readonly inputId = `${this.baseId}-input`;\n protected readonly listId = `${this.baseId}-list`;\n\n /* ── Inputs ───────────────────────────────────────────────────────────── */\n\n readonly items = input.required<readonly Item[]>();\n readonly groups = input<readonly CommandGroup[] | undefined>(undefined);\n /** The adapter. Absent takes the core ranker; `null` shows the items as they came. */\n readonly rank = input<CommandRanker<Item> | null | undefined>(undefined);\n /** BCP 47, for the comparison the default ranker makes. Defaults to the language in force. */\n readonly locale = input<string | undefined>(undefined);\n readonly limit = input(undefined, { transform: SlCommandPalette.count });\n\n readonly presentation = input<CommandPalettePresentation | undefined>(undefined);\n readonly size = input<CommandPaletteSize | undefined>(undefined);\n readonly outsidePress = input<DialogDismissPolicy | undefined>(undefined);\n readonly loop = input(undefined, { transform: SlCommandPalette.flag });\n readonly autoHighlight = input(undefined, { transform: SlCommandPalette.flag });\n readonly closeOnSelect = input(undefined, { transform: SlCommandPalette.flag });\n readonly clearOnClose = input(undefined, { transform: SlCommandPalette.flag });\n readonly highlightMatch = input(undefined, { transform: SlCommandPalette.flag });\n /** `null` turns the hotkey off; absent takes the provider's. */\n readonly hotkey = input<string | null | undefined>(undefined);\n readonly recentLimit = input(undefined, { transform: SlCommandPalette.count });\n readonly loading = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n /** A parent for the layer alone, instead of the portal root the dialog makes beside this host. */\n readonly container = input<Element | null | undefined>(undefined);\n /** Removes the footer. An `ng-template[slCommandPaletteFooter]` replaces it instead. */\n readonly hideFooter = input(false, { transform: booleanAttribute });\n\n /**\n * Words laid over the catalog of the language in force, key by key: the\n * dialog's name (`label`), the input's name and placeholder, the empty,\n * loading, count and error sentences, the recents heading, the clear, close\n * and back controls, and the footer's hints.\n */\n readonly messages = input<PartialMessages<CommandPaletteMessages> | undefined>(undefined);\n\n /* ── The five values ──────────────────────────────────────────────────── */\n\n readonly open = model<boolean>(false);\n readonly openChangeRequest = output<ChangeRequest<boolean>>();\n\n readonly query = model<string>('');\n readonly queryChangeRequest = output<ChangeRequest<string>>();\n\n readonly highlightedId = model<string | null>(null);\n readonly highlightedIdChangeRequest = output<ChangeRequest<string | null>>();\n\n readonly pages = model<readonly string[]>([]);\n readonly pagesChangeRequest = output<ChangeRequest<readonly string[]>>();\n\n readonly recent = model<readonly string[]>([]);\n readonly recentChangeRequest = output<ChangeRequest<readonly string[]>>();\n\n /** Every executed item, after the item's own handler. */\n readonly select = output<CommandPaletteSelectRequest<Item>>();\n\n /* ── Content ──────────────────────────────────────────────────────────── */\n\n protected readonly itemTemplate = contentChild(SlCommandPaletteItem<Item>);\n protected readonly footerTemplate = contentChild(SlCommandPaletteFooter);\n protected readonly emptyTemplate = contentChild(SlCommandPaletteEmpty);\n\n /** The layer, while there is one; the trigger registers itself on it. */\n readonly dialog = viewChild(SlDialog);\n\n private readonly field = viewChild<ElementRef<HTMLInputElement>>('field');\n private readonly list = viewChild<ElementRef<HTMLDivElement>>('list');\n\n /* ── Resolution ───────────────────────────────────────────────────────── */\n\n protected readonly resolvedPresentation = computed(\n () => this.presentation() ?? this.defaults.presentation,\n );\n protected readonly inline = computed(() => this.resolvedPresentation() === 'inline');\n protected readonly resolvedSize = computed(() => this.size() ?? this.defaults.size);\n protected readonly resolvedOutsidePress = computed(\n () => this.outsidePress() ?? this.defaults.outsidePress,\n );\n protected readonly resolvedLoop = computed(() => this.loop() ?? this.defaults.loop);\n protected readonly resolvedAutoHighlight = computed(\n () => this.autoHighlight() ?? this.defaults.autoHighlight,\n );\n protected readonly resolvedCloseOnSelect = computed(\n () => this.closeOnSelect() ?? this.defaults.closeOnSelect,\n );\n protected readonly resolvedClearOnClose = computed(\n () => this.clearOnClose() ?? this.defaults.clearOnClose,\n );\n protected readonly resolvedHighlightMatch = computed(\n () => this.highlightMatch() ?? this.defaults.highlightMatch,\n );\n protected readonly resolvedHotkey = computed(() => {\n const own = this.hotkey();\n return own === undefined ? this.defaults.hotkey : own;\n });\n protected readonly resolvedRecentLimit = computed(\n () => this.recentLimit() ?? this.defaults.recentLimit,\n );\n /** The family's words in the language in force, with this palette's `messages` laid over them. */\n readonly t = injectMessages(commandPaletteMessages, this.messages);\n private readonly appLocale = injectLocale();\n protected readonly resolvedLocale = computed(() => this.locale() ?? this.appLocale());\n\n /** Open for the stylesheet and the dialog: an inline palette is always open. */\n protected readonly isOpen = computed(() => this.inline() || this.open());\n protected readonly inputElement = computed(() => this.field()?.nativeElement ?? undefined);\n\n /* ── The rows ─────────────────────────────────────────────────────────── */\n\n private readonly ranker = computed<CommandRanker<Item> | null>(() => {\n const own = this.rank();\n return own === undefined ? createCommandRanker<Item>({ locale: this.resolvedLocale() }) : own;\n });\n\n protected readonly rows = computed(() =>\n resolveCommands<Item>({\n items: this.items(),\n query: this.query(),\n pages: this.pages(),\n recent: this.recent(),\n groups: this.groups(),\n rank: this.ranker(),\n limit: this.limit(),\n }),\n );\n private readonly rowIds = computed(() => this.rows().rows.map((item) => item.id));\n private readonly enabled = computed(() => this.rows().rows.map((item) => item.disabled !== true));\n\n protected readonly isEmpty = computed(() => !this.loading() && this.rows().count === 0);\n protected readonly activeDescendant = computed(() => {\n const id = this.highlightedId();\n return id === null ? null : this.domId(id);\n });\n\n protected readonly pending = signal<ReadonlySet<string>>(new Set());\n private readonly error = signal<string | null>(null);\n\n protected readonly status = computed(() => {\n if (this.loading()) return this.t('loading');\n const failure = this.error();\n if (failure !== null) return this.t('error', { message: failure });\n return this.t('count', { count: this.rows().count });\n });\n\n constructor() {\n /* Where the highlight stands once the rows have changed: on the row it was\n on, on the first enabled row with autoHighlight, and nowhere otherwise. */\n effect(() => {\n if (!this.isOpen()) return;\n const ids = this.rowIds();\n const enabled = this.enabled();\n const current = this.highlightedId();\n const at = current === null ? -1 : ids.indexOf(current);\n if (at !== -1 && enabled[at] === true) return;\n const first = this.resolvedAutoHighlight()\n ? moveIndex({ enabled, from: -1, intent: 'first', loop: false })\n : -1;\n untracked(() =>\n this.setHighlighted(first === -1 ? null : (ids[first] ?? null), 'programmatic'),\n );\n });\n\n /* The row the highlight is on scrolls into view; it holds no focus. A row\n the pointer highlighted is already under it, and scrolling it would\n fight a finger or a wheel moving the list. */\n effect(() => {\n const id = this.highlightedId();\n if (id === null || id === this.pointerHighlight) return;\n const node = this.list()?.nativeElement.querySelector<HTMLElement>(\n `#${CSS.escape(this.domId(id))}`,\n );\n if (typeof node?.scrollIntoView === 'function') node.scrollIntoView({ block: 'nearest' });\n });\n\n /* Closing puts the palette back where it started, each value by its own\n request, so a consumer owning one of them hears about it. */\n let wasOpen = untracked(() => this.isOpen());\n effect(() => {\n const open = this.isOpen();\n if (wasOpen && !open && untracked(() => this.resolvedClearOnClose())) {\n untracked(() => {\n this.setQuery('', 'programmatic');\n this.setPages([], 'programmatic');\n this.setHighlighted(null, 'programmatic');\n });\n }\n wasOpen = open;\n });\n\n /* The count, the wait and the failure, said once each. */\n effect(() => {\n if (!this.isOpen()) return;\n const message = this.status();\n getLiveAnnouncer(this.document).announce(message);\n });\n\n /* A failure belongs to the moment it happened: typing or turning a page clears it. */\n effect(() => {\n this.query();\n this.pages();\n untracked(() => this.error.set(null));\n });\n\n /* The hotkey, on the document, in the capture phase. */\n const onKey = (event: KeyboardEvent) => {\n const keys = this.resolvedHotkey();\n if (keys === null || this.inline() || this.disabled()) return;\n const platform = this.platformOf();\n if (!matchesShortcut(event, keys, platform)) return;\n const bare = parseShortcut(keys)[0]?.every(\n (token) => !['mod', 'meta', 'ctrl', 'alt'].includes(canonicalKey(token) ?? ''),\n );\n if (bare === true && isEditableTarget(event)) return;\n event.preventDefault();\n if (this.isOpen()) {\n this.focus();\n return;\n }\n this.setOpen(true, 'keyboard', event);\n };\n this.document.addEventListener('keydown', onKey, true);\n this.destroyRef.onDestroy(() => this.document.removeEventListener('keydown', onKey, true));\n }\n\n /* ── Requests ─────────────────────────────────────────────────────────── */\n\n setOpen(next: boolean, reason: CommandPaletteOpenReason, source?: Event) {\n if (this.inline() || next === this.open()) return;\n const state = createControllable<boolean>({\n initial: this.open(),\n onRequest: (request) => this.openChangeRequest.emit(request),\n });\n if (state.request(next, reason, source)) this.open.set(next);\n }\n\n setQuery(next: string, reason: CommandPaletteQueryReason, source?: Event) {\n if (next === this.query()) return;\n const state = createControllable<string>({\n initial: this.query(),\n onRequest: (request) => this.queryChangeRequest.emit(request),\n });\n if (state.request(next, reason, source)) this.query.set(next);\n }\n\n /** The row the pointer last highlighted, which never scrolls the list. */\n private pointerHighlight: string | null = null;\n\n setHighlighted(next: string | null, reason: CommandPaletteHighlightReason, source?: Event) {\n if (next === this.highlightedId()) return;\n this.pointerHighlight = reason === 'pointer' ? next : null;\n const state = createControllable<string | null>({\n initial: this.highlightedId(),\n onRequest: (request) => this.highlightedIdChangeRequest.emit(request),\n });\n if (state.request(next, reason, source)) this.highlightedId.set(next);\n }\n\n setPages(next: readonly string[], reason: CommandPalettePagesReason, source?: Event) {\n const current = this.pages();\n if (next.length === current.length && next.every((id, index) => id === current[index])) return;\n const state = createControllable<readonly string[]>({\n initial: current,\n onRequest: (request) => this.pagesChangeRequest.emit(request),\n equals: () => false,\n });\n if (state.request(next, reason, source)) this.pages.set(next);\n }\n\n private setRecent(next: readonly string[], source?: Event) {\n const state = createControllable<readonly string[]>({\n initial: this.recent(),\n onRequest: (request) => this.recentChangeRequest.emit(request),\n equals: (a, b) => a.length === b.length && a.every((id, index) => id === b[index]),\n });\n if (state.request(next, 'select', source)) this.recent.set(next);\n }\n\n /* ── The handle ───────────────────────────────────────────────────────── */\n\n openPalette() {\n this.setOpen(true, 'programmatic');\n }\n\n close() {\n this.setOpen(false, 'programmatic');\n }\n\n toggle() {\n this.setOpen(!this.open(), 'programmatic');\n }\n\n /** Focuses the input and selects the query. */\n focus() {\n const node = this.field()?.nativeElement;\n if (node === undefined) return;\n node.focus();\n node.select();\n }\n\n /** Highlights the row with this id and scrolls it into view. */\n scrollToId(id: string) {\n this.setHighlighted(id, 'programmatic');\n }\n\n /* ── Executing ────────────────────────────────────────────────────────── */\n\n private execute(item: Item, reason: CommandPaletteSelectReason, source: Event | undefined) {\n if (item.disabled === true || this.pending().has(item.id)) return;\n\n if (item.children !== undefined) {\n this.setPages(\n [...this.pages(), item.id],\n reason === 'pointer' ? 'pointer' : 'select',\n source,\n );\n this.setQuery('', 'select', source);\n return;\n }\n\n let keep = false;\n const request: CommandPaletteSelectRequest<Item> = {\n item,\n reason,\n source,\n keepOpen: () => {\n keep = true;\n },\n };\n\n const finish = () => {\n this.setRecent(pushRecent(this.recent(), item.id, this.resolvedRecentLimit()), source);\n this.select.emit(request);\n if (this.resolvedCloseOnSelect() && !keep) this.setOpen(false, 'select', source);\n };\n\n const settle = () => {\n this.pending.update((previous) => {\n const next = new Set(previous);\n next.delete(item.id);\n return next;\n });\n };\n\n let outcome: unknown;\n try {\n outcome = item.onSelect?.(request);\n } catch (thrown) {\n this.error.set(thrown instanceof Error ? thrown.message : String(thrown));\n return;\n }\n\n if (outcome instanceof Promise) {\n this.error.set(null);\n this.pending.update((previous) => new Set(previous).add(item.id));\n void outcome.then(\n () => {\n settle();\n finish();\n },\n (thrown: unknown) => {\n settle();\n this.error.set(thrown instanceof Error ? thrown.message : String(thrown));\n },\n );\n return;\n }\n\n finish();\n }\n\n /* ── Template helpers ─────────────────────────────────────────────────── */\n\n protected domId(id: string) {\n return `${this.baseId}-${id.replace(/[^\\w-]/g, (character) => `_${character.charCodeAt(0).toString(16)}`)}`;\n }\n\n protected headingOf(section: { recent: boolean; label: string | undefined }) {\n return section.recent ? this.t('recent') : section.label;\n }\n\n /** Whether the rows mark the query: the family's own switch, and a query to mark. */\n protected readonly marking = computed(\n () => this.resolvedHighlightMatch() && this.query().trim() !== '',\n );\n\n /**\n * The runs of a row's label, handed to a consumer's own row template as\n * `runs`. The default row renders the `highlight` family instead; the\n * context keeps the runs for a template written before wave 10.\n */\n protected runsOf(item: Item) {\n const query = this.query();\n if (!this.resolvedHighlightMatch() || query.trim() === '') {\n return [{ text: item.label, matched: false }];\n }\n return splitByMatch(item.label, query, { locale: this.resolvedLocale() });\n }\n\n protected keyshortcuts(item: Item) {\n if (item.children !== undefined || item.shortcut === undefined) return null;\n return announceShortcut(item.shortcut, this.platformOf());\n }\n\n protected onInput(event: Event) {\n this.setQuery((event.target as HTMLInputElement).value, 'keyboard', event);\n }\n\n protected clear(event: Event) {\n this.setQuery('', 'clear', event);\n this.field()?.nativeElement.focus();\n }\n\n protected returnTo(index: number, event: Event) {\n this.setPages(this.pages().slice(0, index + 1), 'pointer', event);\n }\n\n /**\n * Focus stays in the input while the palette is open, as in a platform\n * search field: a press anywhere else — a group label, the list's empty\n * space, a row — keeps it there, and on a phone the keyboard stays up. The\n * press's click still runs.\n */\n protected keepFocus(event: MouseEvent) {\n if (event.target !== this.field()?.nativeElement) event.preventDefault();\n }\n\n protected hover(item: Item, event: PointerEvent) {\n /* A finger on the list is a scroll until it ends as a tap: the tap's click\n executes, and a highlight on the way would trail the finger. */\n if (item.disabled === true || event.pointerType === 'touch') return;\n this.setHighlighted(item.id, 'pointer', event);\n }\n\n protected press(item: Item, event: MouseEvent) {\n if (item.disabled === true || this.pending().has(item.id)) {\n event.preventDefault();\n return;\n }\n /* A link with a modifier is the browser's: a new tab, a download. */\n if (item.href !== undefined && (event.metaKey || event.ctrlKey || event.shiftKey)) return;\n this.execute(item, 'pointer', event);\n }\n\n protected onDialogRequest(request: DialogChangeRequest) {\n const reason: CommandPaletteOpenReason =\n request.reason === 'outsidePress' || request.reason === 'escape'\n ? request.reason\n : request.reason === 'pointer' || request.reason === 'keyboard'\n ? request.reason\n : 'dismiss';\n const state = createControllable<boolean>({\n initial: this.open(),\n onRequest: (own) => this.openChangeRequest.emit(own),\n });\n if (!state.request(request.value, reason, request.source)) {\n request.cancel();\n return;\n }\n this.open.set(request.value);\n }\n\n private move(intent: MoveIntent, event: KeyboardEvent) {\n const ids = this.rowIds();\n const current = this.highlightedId();\n const from = current === null ? -1 : ids.indexOf(current);\n const paged = intent === 'pageDown' || intent === 'pageUp';\n const next = moveIndex({\n enabled: this.enabled(),\n from,\n intent,\n loop: this.resolvedLoop() && !paged,\n });\n event.preventDefault();\n if (next === -1) return;\n this.setHighlighted(ids[next] ?? null, 'keyboard', event);\n }\n\n protected onKeyDown(event: KeyboardEvent) {\n if (event.isComposing) return;\n switch (event.key) {\n case 'ArrowDown':\n this.move('next', event);\n return;\n case 'ArrowUp':\n this.move('previous', event);\n return;\n case 'PageDown':\n this.move('pageDown', event);\n return;\n case 'PageUp':\n this.move('pageUp', event);\n return;\n case 'Home':\n if (event.ctrlKey) this.move('first', event);\n return;\n case 'End':\n if (event.ctrlKey) this.move('last', event);\n return;\n case 'Enter': {\n const id = this.highlightedId();\n const item = id === null ? undefined : this.rows().rows.find((row) => row.id === id);\n if (item === undefined) return;\n event.preventDefault();\n if (item.href !== undefined) {\n const node = this.list()?.nativeElement.querySelector<HTMLAnchorElement>(\n `#${CSS.escape(this.domId(item.id))}`,\n );\n if (event.metaKey || event.ctrlKey || event.shiftKey) {\n node?.dispatchEvent(\n new MouseEvent('click', {\n bubbles: true,\n cancelable: true,\n metaKey: event.metaKey,\n ctrlKey: event.ctrlKey,\n shiftKey: event.shiftKey,\n }),\n );\n return;\n }\n this.execute(item, 'keyboard', event);\n node?.click();\n return;\n }\n this.execute(item, 'keyboard', event);\n return;\n }\n case 'Escape':\n if (this.query() !== '') {\n event.preventDefault();\n event.stopPropagation();\n this.setQuery('', 'clear', event);\n return;\n }\n if (this.pages().length > 0) {\n event.preventDefault();\n event.stopPropagation();\n this.setPages(this.pages().slice(0, -1), 'keyboard', event);\n return;\n }\n if (!this.inline()) {\n event.preventDefault();\n this.setOpen(false, 'escape', event);\n }\n return;\n case 'Backspace':\n if (this.query() === '' && this.pages().length > 0) {\n event.preventDefault();\n this.setPages(this.pages().slice(0, -1), 'keyboard', event);\n }\n return;\n default:\n return;\n }\n }\n}\n\n/**\n * The control that opens the palette, on the consumer's own element. The\n * dialog family's trigger is not composed here because it needs the dialog\n * instance, which lives inside this component's template; what the trigger\n * needs from it — the open, the `aria-expanded`, the `aria-haspopup` — is\n * written from the palette instead, and the focus returns to the element\n * that held it when the layer opened, which is this one.\n */\n@Directive({\n selector: '[slCommandPaletteTrigger]',\n standalone: true,\n exportAs: 'slCommandPaletteTrigger',\n host: {\n 'data-part': 'trigger',\n 'aria-haspopup': 'dialog',\n '[attr.aria-expanded]': 'palette().open()',\n '[attr.data-open]': 'palette().open() ? \"\" : null',\n '[attr.disabled]': 'palette().disabled() ? \"\" : null',\n '(click)': 'onClick($event)',\n },\n})\nexport class SlCommandPaletteTrigger {\n readonly palette = input.required<SlCommandPalette>({ alias: 'slCommandPaletteTrigger' });\n\n private readonly native: HTMLElement = inject(ElementRef).nativeElement;\n\n constructor() {\n /* The dialog's own trigger registers its node as the layer's focus origin\n and as a branch the outside press ignores; this one does the same, on\n the dialog the palette holds, whenever that dialog exists. */\n effect(() => {\n const dialog = this.palette().dialog();\n if (dialog === undefined) return;\n untracked(() => dialog.triggerNode.set(this.native));\n });\n inject(DestroyRef).onDestroy(() => {\n const dialog = this.palette().dialog();\n if (dialog?.triggerNode() === this.native) dialog.triggerNode.set(null);\n });\n }\n\n protected onClick(event: MouseEvent) {\n if (event.defaultPrevented) return;\n this.palette().setOpen(true, event.detail === 0 ? 'keyboard' : 'pointer', event);\n }\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-command-palette.mjs","sources":["../../command-palette/src/command-palette-defaults.ts","../../command-palette/src/command-palette.ts","../../command-palette/src/slotted-angular-command-palette.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\nimport type { Provider, TemplateRef } from '@angular/core';\n\nimport type { CommandItem } from '@slotted/core/commands';\nimport type { DialogDismissPolicy } from '@slotted/angular/dialog';\n\nexport type { CommandGroup, CommandRanker } from '@slotted/core/commands';\n\n/**\n * Where the panel stands. `dialog` composes the dialog family; `inline` draws\n * the panel where it was written — the filtered menu `menu` refused.\n */\nexport type CommandPalettePresentation = 'dialog' | 'inline';\nexport type CommandPaletteSize = 'sm' | 'md' | 'lg';\n\nexport type CommandPaletteOpenReason =\n 'pointer' | 'keyboard' | 'escape' | 'outsidePress' | 'select' | 'dismiss' | 'programmatic';\nexport type CommandPaletteQueryReason = 'keyboard' | 'clear' | 'select' | 'programmatic';\nexport type CommandPaletteHighlightReason = 'pointer' | 'keyboard' | 'programmatic';\nexport type CommandPalettePagesReason = 'select' | 'keyboard' | 'pointer' | 'programmatic';\nexport type CommandPaletteSelectReason = 'pointer' | 'keyboard';\n\n/**\n * What an executed item is handed. `keepOpen()` holds the palette open after\n * the handler returns.\n */\nexport interface CommandPaletteSelectRequest<Item extends CommandPaletteItem = CommandPaletteItem> {\n readonly item: Item;\n readonly reason: CommandPaletteSelectReason;\n readonly source: Event | undefined;\n keepOpen: () => void;\n}\n\n/**\n * One command. `id`, `label` and `keywords` are what the ranker reads; the rest\n * is what the row draws. `children` opens a page; `href` is a destination.\n * The mark in the first column comes from the item template, which is where\n * an Angular consumer writes an icon.\n */\nexport interface CommandPaletteItem extends CommandItem {\n readonly meta?: string | undefined;\n /** In the library's notation, `mod+shift+p`; drawn by `kbd` and announced. */\n readonly shortcut?: string | undefined;\n readonly href?: string | undefined;\n readonly target?: string | undefined;\n /** Runs before the root's `select` output. A promise keeps the palette open. */\n readonly onSelect?:\n ((request: CommandPaletteSelectRequest) => void | Promise<unknown>) | undefined;\n readonly children?: readonly CommandPaletteItem[] | undefined;\n}\n\n/** What the item template receives. */\nexport interface CommandPaletteItemContext<Item extends CommandPaletteItem = CommandPaletteItem> {\n $implicit: Item;\n current: boolean;\n disabled: boolean;\n pending: boolean;\n query: string;\n /** The label's runs, marked where the query matched. */\n runs: readonly { text: string; matched: boolean }[];\n}\n\nexport type CommandPaletteItemTemplate<Item extends CommandPaletteItem = CommandPaletteItem> =\n TemplateRef<CommandPaletteItemContext<Item>>;\n\nexport interface CommandPaletteDefaults {\n presentation: CommandPalettePresentation;\n size: CommandPaletteSize;\n outsidePress: DialogDismissPolicy;\n loop: boolean;\n autoHighlight: boolean;\n closeOnSelect: boolean;\n clearOnClose: boolean;\n highlightMatch: boolean;\n /** The chord that opens the palette anywhere in the document; `null` for none. */\n hotkey: string | null;\n recentLimit: number;\n}\n\n/**\n * The numbers, and why they are these numbers: the React binding's\n * `COMMAND_PALETTE_FALLBACK` records them, and the two lists are one list.\n */\nexport const COMMAND_PALETTE_FALLBACK: CommandPaletteDefaults = {\n presentation: 'dialog',\n size: 'md',\n outsidePress: 'close',\n loop: true,\n autoHighlight: true,\n closeOnSelect: true,\n clearOnClose: true,\n highlightMatch: true,\n hotkey: 'mod+k',\n recentLimit: 5,\n};\n\nexport const COMMAND_PALETTE_DEFAULTS = new InjectionToken<CommandPaletteDefaults>(\n 'COMMAND_PALETTE_DEFAULTS',\n { providedIn: 'root', factory: () => COMMAND_PALETTE_FALLBACK },\n);\n\n/**\n * The decisions an application takes once. The sentences the family speaks\n * come from the language in force (`provideSlotted`).\n */\nexport function provideCommandPaletteDefaults(defaults: Partial<CommandPaletteDefaults>): Provider {\n return {\n provide: COMMAND_PALETTE_DEFAULTS,\n useValue: { ...COMMAND_PALETTE_FALLBACK, ...defaults },\n };\n}\n\nexport function injectCommandPaletteDefaults(): CommandPaletteDefaults {\n return inject(COMMAND_PALETTE_DEFAULTS);\n}\n","import { DOCUMENT, NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n HostAttributeToken,\n inject,\n input,\n model,\n numberAttribute,\n output,\n signal,\n TemplateRef,\n untracked,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\n\nimport { SlDialog, SlDialogTitle } from '@slotted/angular/dialog';\nimport type { DialogChangeRequest, DialogDismissPolicy } from '@slotted/angular/dialog';\nimport { SlHighlight } from '@slotted/angular/highlight';\nimport { injectLocale, injectMessages } from '@slotted/angular/i18n';\nimport { injectKbdPlatform, SlShortcut } from '@slotted/angular/kbd';\nimport { moveIndex, splitByMatch } from '@slotted/core/collection';\nimport type { MoveIntent } from '@slotted/core/collection';\nimport { createCommandRanker, pushRecent, resolveCommands } from '@slotted/core/commands';\nimport type { CommandGroup, CommandRanker } from '@slotted/core/commands';\nimport {\n commandPaletteMessages,\n type CommandPaletteMessages,\n type PartialMessages,\n} from '@slotted/core/i18n';\nimport { canonicalKey, isEditableTarget, matchesShortcut, parseShortcut } from '@slotted/core/keys';\nimport type { KbdPlatform } from '@slotted/core/keys';\nimport { getLiveAnnouncer } from '@slotted/core/live-announcer';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeRequest } from '@slotted/core/state';\n\nimport { injectCommandPaletteDefaults } from './command-palette-defaults';\nimport type {\n CommandPaletteHighlightReason,\n CommandPaletteItem,\n CommandPaletteItemContext,\n CommandPaletteOpenReason,\n CommandPalettePagesReason,\n CommandPalettePresentation,\n CommandPaletteQueryReason,\n CommandPaletteSelectReason,\n CommandPaletteSelectRequest,\n CommandPaletteSize,\n} from './command-palette-defaults';\n\n/**\n * A search that executes.\n *\n * `<sl-command-palette>` is written in place and its template holds the\n * `<sl-dialog>` — the layer, the scrim, the focus containment and the\n * dismissal are the dialog family's, as `upload-viewer` composes them — or,\n * under `presentation=\"inline\"`, the panel itself. DOM focus stays on the\n * input and the list is walked with `aria-activedescendant`, the model\n * `combobox` uses. Which rows are drawn, in which order, is\n * `@slotted/core/commands`, the same function the React binding asks.\n */\n\nlet nextId = 0;\n\n/**\n * The shortcut as `aria-keyshortcuts` states it; a sequence is drawn only.\n *\n * The attribute's grammar is the UI Events `key` values — `Control`, `Alt`,\n * `Meta`, `Shift` — which a screen reader parses and speaks in its own\n * language. They are tokens rather than words, so they stay out of the\n * catalog: a translated or platform-named modifier (`Option`, `Command`) is\n * not a value the attribute accepts.\n */\nfunction announceShortcut(keys: string, platform: KbdPlatform): string | null {\n const steps = parseShortcut(keys);\n if (steps.length !== 1) return null;\n return (\n steps[0]\n ?.map((token) => {\n const canonical = canonicalKey(token);\n if (canonical === 'mod') return platform === 'mac' ? 'Meta' : 'Control';\n if (canonical === 'ctrl') return 'Control';\n const word = canonical ?? token;\n return word.length === 1 ? word.toUpperCase() : `${word[0]?.toUpperCase()}${word.slice(1)}`;\n })\n .join('+') ?? null\n );\n}\n\n/** The content of a row, written by the consumer on an `ng-template`. */\n@Directive({ selector: 'ng-template[slCommandPaletteItem]', standalone: true })\nexport class SlCommandPaletteItem<Item extends CommandPaletteItem = CommandPaletteItem> {\n readonly template = inject<TemplateRef<CommandPaletteItemContext<Item>>>(TemplateRef);\n /* Types the template's context, so `let-item` is an `Item` in the template. */\n static ngTemplateContextGuard<Item extends CommandPaletteItem>(\n _directive: SlCommandPaletteItem<Item>,\n context: unknown,\n ): context is CommandPaletteItemContext<Item> {\n return context !== null;\n }\n}\n\n/** The footer's content, in place of the family's hints. */\n@Directive({ selector: 'ng-template[slCommandPaletteFooter]', standalone: true })\nexport class SlCommandPaletteFooter {\n readonly template = inject<TemplateRef<unknown>>(TemplateRef);\n}\n\n/** The empty message, in place of the catalog's `empty`. */\n@Directive({ selector: 'ng-template[slCommandPaletteEmpty]', standalone: true })\nexport class SlCommandPaletteEmpty {\n readonly template = inject<TemplateRef<unknown>>(TemplateRef);\n}\n\n@Component({\n selector: 'sl-command-palette',\n standalone: true,\n exportAs: 'slCommandPalette',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [NgTemplateOutlet, SlDialog, SlDialogTitle, SlGlyph, SlHighlight, SlIcon, SlShortcut],\n styleUrls: [\n '../../../styles/src/command-palette/command-palette.css',\n '../../../styles/src/skeleton/skeleton.css',\n '../../../styles/src/spinner/spinner.css',\n ],\n host: { '[style.display]': \"'contents'\" },\n template: `\n @if (inline()) {\n <ng-container *ngTemplateOutlet=\"panel\" />\n } @else {\n <sl-dialog\n [open]=\"isOpen()\"\n (openChangeRequest)=\"onDialogRequest($event)\"\n [container]=\"container()\"\n [size]=\"resolvedSize()\"\n [outsidePress]=\"resolvedOutsidePress()\"\n [initialFocus]=\"inputElement()\"\n escape=\"none\"\n fullScreen=\"narrow\"\n placement=\"top\"\n surface=\"plain\"\n >\n <!-- The dialog takes its name from a title it points at; the title is\n read by assistive technology and hidden from the eye, because the\n field under it is the name a reader sees. -->\n <h2 slDialogTitle hidden>{{ t('label') }}</h2>\n <ng-container *ngTemplateOutlet=\"panel\" />\n </sl-dialog>\n }\n\n <ng-template #panel>\n <div\n data-ui=\"command-palette\"\n data-ui-command-palette=\"\"\n data-part=\"root\"\n data-part-root=\"\"\n [attr.data-presentation]=\"resolvedPresentation()\"\n [attr.data-size]=\"resolvedSize()\"\n [attr.data-open]=\"isOpen() ? '' : null\"\n [attr.data-loading]=\"loading() ? '' : null\"\n [attr.data-disabled]=\"disabled() ? '' : null\"\n [attr.data-query]=\"query() === '' ? null : ''\"\n [attr.data-empty]=\"isEmpty() ? '' : null\"\n (mousedown)=\"keepFocus($event)\"\n >\n <div data-part=\"header\" data-part-header=\"\">\n @if (loading()) {\n <span\n data-part=\"busy\"\n data-part-busy=\"\"\n data-ui=\"spinner\"\n data-ui-spinner=\"\"\n aria-hidden=\"true\"\n ></span>\n } @else {\n <span data-part=\"search\" data-part-search=\"\" aria-hidden=\"true\"\n ><span slIcon><svg slGlyph name=\"search\"></svg></span\n ></span>\n }\n @if (rows().trail.length > 0) {\n <ol data-part=\"pages\" data-part-pages=\"\" [attr.aria-label]=\"t('back')\">\n @for (entry of rows().trail; track entry.id; let index = $index) {\n <li>\n <!-- The chevron between two pages, mirrored in a right-to-left document. -->\n @if (index > 0) {\n <span slIcon directional><svg slGlyph name=\"chevron-right\"></svg></span>\n }\n <button\n data-part=\"page\"\n data-part-page=\"\"\n type=\"button\"\n (click)=\"returnTo(index, $event)\"\n >\n <span>{{ entry.label }}</span>\n </button>\n </li>\n }\n </ol>\n }\n <input\n #field\n data-part=\"input\"\n data-part-input=\"\"\n type=\"text\"\n role=\"combobox\"\n aria-expanded=\"true\"\n aria-autocomplete=\"list\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [id]=\"inputId\"\n [attr.aria-label]=\"t('input')\"\n [attr.aria-controls]=\"listId\"\n [attr.aria-activedescendant]=\"activeDescendant()\"\n [attr.placeholder]=\"t('placeholder')\"\n [disabled]=\"disabled()\"\n [value]=\"query()\"\n (input)=\"onInput($event)\"\n (keydown)=\"onKeyDown($event)\"\n />\n <button\n data-part=\"clear\"\n data-part-clear=\"\"\n type=\"button\"\n tabindex=\"-1\"\n [attr.aria-label]=\"t('clear')\"\n (click)=\"clear($event)\"\n >\n <span slIcon><svg slGlyph name=\"x\"></svg></span>\n </button>\n @if (!inline()) {\n <!-- The way out where the scrim is not: shown by the stylesheet\n under the dialog's full-screen query alone. -->\n <button\n data-part=\"close\"\n data-part-close=\"\"\n type=\"button\"\n (click)=\"setOpen(false, 'dismiss', $event)\"\n >\n {{ t('close') }}\n </button>\n }\n </div>\n\n <div\n #list\n data-part=\"list\"\n data-part-list=\"\"\n role=\"listbox\"\n [id]=\"listId\"\n [attr.aria-label]=\"t('input')\"\n [attr.aria-busy]=\"loading() ? 'true' : null\"\n [attr.data-loading]=\"loading() ? '' : null\"\n >\n @if (loading() && rows().count === 0) {\n <div data-part=\"placeholder\" data-part-placeholder=\"\" aria-hidden=\"true\">\n @for (row of [0, 1, 2]; track row) {\n <div>\n <span\n data-ui=\"skeleton\"\n data-ui-skeleton=\"\"\n data-part=\"root\"\n data-part-root=\"\"\n data-shape=\"text\"\n data-loading\n ></span>\n </div>\n }\n </div>\n }\n @if (isEmpty()) {\n <div data-part=\"empty\" data-part-empty=\"\">\n @if (emptyTemplate(); as template) {\n <ng-container *ngTemplateOutlet=\"template.template\" />\n } @else {\n {{ t('empty') }}\n }\n </div>\n }\n @for (section of rows().sections; track $index; let sectionIndex = $index) {\n @if (sectionIndex > 0) {\n <div data-part=\"separator\" data-part-separator=\"\" role=\"separator\"></div>\n }\n @if (headingOf(section); as heading) {\n <div\n data-part=\"group\"\n data-part-group=\"\"\n role=\"group\"\n [attr.aria-labelledby]=\"baseId + '-group-' + sectionIndex\"\n >\n <div\n data-part=\"group-label\"\n data-part-group-label=\"\"\n role=\"presentation\"\n [id]=\"baseId + '-group-' + sectionIndex\"\n >\n {{ heading }}\n </div>\n @for (item of section.items; track item.id) {\n <ng-container *ngTemplateOutlet=\"row; context: { $implicit: item }\" />\n }\n </div>\n } @else {\n @for (item of section.items; track item.id) {\n <ng-container *ngTemplateOutlet=\"row; context: { $implicit: item }\" />\n }\n }\n }\n </div>\n\n <div data-part=\"status\" data-part-status=\"\" role=\"status\">{{ status() }}</div>\n\n @if (footerTemplate(); as footer) {\n <div data-part=\"footer\" data-part-footer=\"\" aria-hidden=\"true\">\n <ng-container *ngTemplateOutlet=\"footer.template\" />\n </div>\n } @else if (!hideFooter()) {\n <div data-part=\"footer\" data-part-footer=\"\" aria-hidden=\"true\">\n <span data-part=\"hint\" data-part-hint=\"\">\n <kbd slShortcut keys=\"up\" separator=\"\" size=\"inherit\" variant=\"outline\"></kbd>\n <kbd slShortcut keys=\"down\" separator=\"\" size=\"inherit\" variant=\"outline\"></kbd>\n <span>{{ t('hintNavigate') }}</span>\n </span>\n <span data-part=\"hint\" data-part-hint=\"\">\n <kbd slShortcut keys=\"enter\" separator=\"\" size=\"inherit\" variant=\"outline\"></kbd>\n <span>{{ t('hintSelect') }}</span>\n </span>\n @if (pages().length > 0) {\n <span data-part=\"hint\" data-part-hint=\"\">\n <kbd\n slShortcut\n keys=\"backspace\"\n separator=\"\"\n size=\"inherit\"\n variant=\"outline\"\n ></kbd>\n <span>{{ t('hintBack') }}</span>\n </span>\n }\n @if (!inline()) {\n <span data-part=\"hint\" data-part-hint=\"\">\n <kbd slShortcut keys=\"escape\" separator=\"\" size=\"inherit\" variant=\"outline\"></kbd>\n <span>{{ t('hintClose') }}</span>\n </span>\n }\n </div>\n }\n </div>\n </ng-template>\n\n <ng-template #row let-item>\n @if (item.href; as href) {\n <a\n data-part=\"item\"\n data-part-item=\"\"\n role=\"option\"\n [id]=\"domId(item.id)\"\n [href]=\"href\"\n [attr.target]=\"item.target ?? null\"\n [attr.title]=\"item.label\"\n [attr.aria-selected]=\"highlightedId() === item.id\"\n [attr.aria-disabled]=\"item.disabled ? 'true' : null\"\n [attr.aria-busy]=\"pending().has(item.id) ? 'true' : null\"\n [attr.aria-keyshortcuts]=\"keyshortcuts(item)\"\n [attr.data-current]=\"highlightedId() === item.id ? '' : null\"\n [attr.data-disabled]=\"item.disabled ? '' : null\"\n [attr.data-loading]=\"pending().has(item.id) ? '' : null\"\n [attr.data-page]=\"item.children ? '' : null\"\n (pointermove)=\"hover(item, $event)\"\n (click)=\"press(item, $event)\"\n >\n <ng-container *ngTemplateOutlet=\"cells; context: { $implicit: item }\" />\n </a>\n } @else {\n <div\n data-part=\"item\"\n data-part-item=\"\"\n role=\"option\"\n [id]=\"domId(item.id)\"\n [attr.title]=\"item.label\"\n [attr.aria-selected]=\"highlightedId() === item.id\"\n [attr.aria-disabled]=\"item.disabled ? 'true' : null\"\n [attr.aria-busy]=\"pending().has(item.id) ? 'true' : null\"\n [attr.aria-keyshortcuts]=\"keyshortcuts(item)\"\n [attr.data-current]=\"highlightedId() === item.id ? '' : null\"\n [attr.data-disabled]=\"item.disabled ? '' : null\"\n [attr.data-loading]=\"pending().has(item.id) ? '' : null\"\n [attr.data-page]=\"item.children ? '' : null\"\n (pointermove)=\"hover(item, $event)\"\n (click)=\"press(item, $event)\"\n >\n <ng-container *ngTemplateOutlet=\"cells; context: { $implicit: item }\" />\n </div>\n }\n </ng-template>\n\n <ng-template #cells let-item>\n @if (itemTemplate(); as custom) {\n <ng-container\n *ngTemplateOutlet=\"\n custom.template;\n context: {\n $implicit: item,\n current: highlightedId() === item.id,\n disabled: item.disabled === true,\n pending: pending().has(item.id),\n query: query(),\n runs: runsOf(item),\n }\n \"\n />\n } @else {\n <span data-part=\"icon\" data-part-icon=\"\"></span>\n <span data-part=\"label\" data-part-label=\"\">\n @if (marking()) {\n <span\n slHighlight\n [text]=\"item.label\"\n [query]=\"query()\"\n [locale]=\"resolvedLocale()\"\n ></span>\n } @else {\n {{ item.label }}\n }\n </span>\n @if (item.description; as description) {\n <span data-part=\"description\" data-part-description=\"\">{{ description }}</span>\n }\n @if (item.meta; as meta) {\n <span data-part=\"meta\" data-part-meta=\"\" aria-hidden=\"true\">{{ meta }}</span>\n }\n @if (!item.children && item.shortcut; as shortcut) {\n <span data-part=\"shortcut\" data-part-shortcut=\"\" aria-hidden=\"true\">\n <kbd slShortcut [keys]=\"shortcut\" size=\"inherit\" separator=\"\" variant=\"outline\"></kbd>\n </span>\n }\n @if (item.children) {\n <!-- The mark that says the item opens a page, mirrored in a right-to-left document. -->\n <span data-part=\"arrow\" data-part-arrow=\"\" aria-hidden=\"true\"\n ><span slIcon directional><svg slGlyph name=\"chevron-right\"></svg></span\n ></span>\n }\n @if (pending().has(item.id)) {\n <span\n data-part=\"busy\"\n data-part-busy=\"\"\n data-ui=\"spinner\"\n data-ui-spinner=\"\"\n aria-hidden=\"true\"\n ></span>\n }\n }\n </ng-template>\n `,\n})\nexport class SlCommandPalette<Item extends CommandPaletteItem = CommandPaletteItem> {\n private static flag(value: unknown) {\n return value === undefined ? undefined : booleanAttribute(value);\n }\n\n private static count(value: unknown) {\n return value === undefined ? undefined : numberAttribute(value);\n }\n\n private readonly defaults = injectCommandPaletteDefaults();\n private readonly platformOf = injectKbdPlatform();\n private readonly document = inject(DOCUMENT);\n private readonly destroyRef = inject(DestroyRef);\n private readonly host: HTMLElement = inject(ElementRef).nativeElement;\n\n protected readonly baseId =\n inject(new HostAttributeToken('id'), { optional: true }) ?? `sl-command-palette-${nextId++}`;\n protected readonly inputId = `${this.baseId}-input`;\n protected readonly listId = `${this.baseId}-list`;\n\n /* ── Inputs ───────────────────────────────────────────────────────────── */\n\n readonly items = input.required<readonly Item[]>();\n readonly groups = input<readonly CommandGroup[] | undefined>(undefined);\n /** The adapter. Absent takes the core ranker; `null` shows the items as they came. */\n readonly rank = input<CommandRanker<Item> | null | undefined>(undefined);\n /** BCP 47, for the comparison the default ranker makes. Defaults to the language in force. */\n readonly locale = input<string | undefined>(undefined);\n readonly limit = input(undefined, { transform: SlCommandPalette.count });\n\n readonly presentation = input<CommandPalettePresentation | undefined>(undefined);\n readonly size = input<CommandPaletteSize | undefined>(undefined);\n readonly outsidePress = input<DialogDismissPolicy | undefined>(undefined);\n readonly loop = input(undefined, { transform: SlCommandPalette.flag });\n readonly autoHighlight = input(undefined, { transform: SlCommandPalette.flag });\n readonly closeOnSelect = input(undefined, { transform: SlCommandPalette.flag });\n readonly clearOnClose = input(undefined, { transform: SlCommandPalette.flag });\n readonly highlightMatch = input(undefined, { transform: SlCommandPalette.flag });\n /** `null` turns the hotkey off; absent takes the provider's. */\n readonly hotkey = input<string | null | undefined>(undefined);\n readonly recentLimit = input(undefined, { transform: SlCommandPalette.count });\n readonly loading = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n /** A parent for the layer alone, instead of the portal root the dialog makes beside this host. */\n readonly container = input<Element | null | undefined>(undefined);\n /** Removes the footer. An `ng-template[slCommandPaletteFooter]` replaces it instead. */\n readonly hideFooter = input(false, { transform: booleanAttribute });\n\n /**\n * Words laid over the catalog of the language in force, key by key: the\n * dialog's name (`label`), the input's name and placeholder, the empty,\n * loading, count and error sentences, the recents heading, the clear, close\n * and back controls, and the footer's hints.\n */\n readonly messages = input<PartialMessages<CommandPaletteMessages> | undefined>(undefined);\n\n /* ── The five values ──────────────────────────────────────────────────── */\n\n readonly open = model<boolean>(false);\n readonly openChangeRequest = output<ChangeRequest<boolean>>();\n\n readonly query = model<string>('');\n readonly queryChangeRequest = output<ChangeRequest<string>>();\n\n readonly highlightedId = model<string | null>(null);\n readonly highlightedIdChangeRequest = output<ChangeRequest<string | null>>();\n\n readonly pages = model<readonly string[]>([]);\n readonly pagesChangeRequest = output<ChangeRequest<readonly string[]>>();\n\n readonly recent = model<readonly string[]>([]);\n readonly recentChangeRequest = output<ChangeRequest<readonly string[]>>();\n\n /** Every executed item, after the item's own handler. */\n readonly select = output<CommandPaletteSelectRequest<Item>>();\n\n /* ── Content ──────────────────────────────────────────────────────────── */\n\n protected readonly itemTemplate = contentChild(SlCommandPaletteItem<Item>);\n protected readonly footerTemplate = contentChild(SlCommandPaletteFooter);\n protected readonly emptyTemplate = contentChild(SlCommandPaletteEmpty);\n\n /** The layer, while there is one; the trigger registers itself on it. */\n readonly dialog = viewChild(SlDialog);\n\n private readonly field = viewChild<ElementRef<HTMLInputElement>>('field');\n private readonly list = viewChild<ElementRef<HTMLDivElement>>('list');\n\n /* ── Resolution ───────────────────────────────────────────────────────── */\n\n protected readonly resolvedPresentation = computed(\n () => this.presentation() ?? this.defaults.presentation,\n );\n protected readonly inline = computed(() => this.resolvedPresentation() === 'inline');\n protected readonly resolvedSize = computed(() => this.size() ?? this.defaults.size);\n protected readonly resolvedOutsidePress = computed(\n () => this.outsidePress() ?? this.defaults.outsidePress,\n );\n protected readonly resolvedLoop = computed(() => this.loop() ?? this.defaults.loop);\n protected readonly resolvedAutoHighlight = computed(\n () => this.autoHighlight() ?? this.defaults.autoHighlight,\n );\n protected readonly resolvedCloseOnSelect = computed(\n () => this.closeOnSelect() ?? this.defaults.closeOnSelect,\n );\n protected readonly resolvedClearOnClose = computed(\n () => this.clearOnClose() ?? this.defaults.clearOnClose,\n );\n protected readonly resolvedHighlightMatch = computed(\n () => this.highlightMatch() ?? this.defaults.highlightMatch,\n );\n protected readonly resolvedHotkey = computed(() => {\n const own = this.hotkey();\n return own === undefined ? this.defaults.hotkey : own;\n });\n protected readonly resolvedRecentLimit = computed(\n () => this.recentLimit() ?? this.defaults.recentLimit,\n );\n /** The family's words in the language in force, with this palette's `messages` laid over them. */\n readonly t = injectMessages(commandPaletteMessages, this.messages);\n private readonly appLocale = injectLocale();\n protected readonly resolvedLocale = computed(() => this.locale() ?? this.appLocale());\n\n /** Open for the stylesheet and the dialog: an inline palette is always open. */\n protected readonly isOpen = computed(() => this.inline() || this.open());\n protected readonly inputElement = computed(() => this.field()?.nativeElement ?? undefined);\n\n /* ── The rows ─────────────────────────────────────────────────────────── */\n\n private readonly ranker = computed<CommandRanker<Item> | null>(() => {\n const own = this.rank();\n return own === undefined ? createCommandRanker<Item>({ locale: this.resolvedLocale() }) : own;\n });\n\n protected readonly rows = computed(() =>\n resolveCommands<Item>({\n items: this.items(),\n query: this.query(),\n pages: this.pages(),\n recent: this.recent(),\n groups: this.groups(),\n rank: this.ranker(),\n limit: this.limit(),\n }),\n );\n private readonly rowIds = computed(() => this.rows().rows.map((item) => item.id));\n private readonly enabled = computed(() => this.rows().rows.map((item) => item.disabled !== true));\n\n protected readonly isEmpty = computed(() => !this.loading() && this.rows().count === 0);\n protected readonly activeDescendant = computed(() => {\n const id = this.highlightedId();\n return id === null ? null : this.domId(id);\n });\n\n protected readonly pending = signal<ReadonlySet<string>>(new Set());\n private readonly error = signal<string | null>(null);\n\n protected readonly status = computed(() => {\n if (this.loading()) return this.t('loading');\n const failure = this.error();\n if (failure !== null) return this.t('error', { message: failure });\n return this.t('count', { count: this.rows().count });\n });\n\n constructor() {\n /* Where the highlight stands once the rows have changed: on the row it was\n on, on the first enabled row with autoHighlight, and nowhere otherwise. */\n effect(() => {\n if (!this.isOpen()) return;\n const ids = this.rowIds();\n const enabled = this.enabled();\n const current = this.highlightedId();\n const at = current === null ? -1 : ids.indexOf(current);\n if (at !== -1 && enabled[at] === true) return;\n const first = this.resolvedAutoHighlight()\n ? moveIndex({ enabled, from: -1, intent: 'first', loop: false })\n : -1;\n untracked(() =>\n this.setHighlighted(first === -1 ? null : (ids[first] ?? null), 'programmatic'),\n );\n });\n\n /* The row the highlight is on scrolls into view; it holds no focus. A row\n the pointer highlighted is already under it, and scrolling it would\n fight a finger or a wheel moving the list. */\n effect(() => {\n const id = this.highlightedId();\n if (id === null || id === this.pointerHighlight) return;\n const node = this.list()?.nativeElement.querySelector<HTMLElement>(\n `#${CSS.escape(this.domId(id))}`,\n );\n if (typeof node?.scrollIntoView === 'function') node.scrollIntoView({ block: 'nearest' });\n });\n\n /* Closing puts the palette back where it started, each value by its own\n request, so a consumer owning one of them hears about it. */\n let wasOpen = untracked(() => this.isOpen());\n effect(() => {\n const open = this.isOpen();\n if (wasOpen && !open && untracked(() => this.resolvedClearOnClose())) {\n untracked(() => {\n this.setQuery('', 'programmatic');\n this.setPages([], 'programmatic');\n this.setHighlighted(null, 'programmatic');\n });\n }\n wasOpen = open;\n });\n\n /* The count, the wait and the failure, said once each. */\n effect(() => {\n if (!this.isOpen()) return;\n const message = this.status();\n getLiveAnnouncer(this.document).announce(message);\n });\n\n /* A failure belongs to the moment it happened: typing or turning a page clears it. */\n effect(() => {\n this.query();\n this.pages();\n untracked(() => this.error.set(null));\n });\n\n /* The hotkey, on the document, in the capture phase. */\n const onKey = (event: KeyboardEvent) => {\n const keys = this.resolvedHotkey();\n if (keys === null || this.inline() || this.disabled()) return;\n const platform = this.platformOf();\n if (!matchesShortcut(event, keys, platform)) return;\n const bare = parseShortcut(keys)[0]?.every(\n (token) => !['mod', 'meta', 'ctrl', 'alt'].includes(canonicalKey(token) ?? ''),\n );\n if (bare === true && isEditableTarget(event)) return;\n event.preventDefault();\n if (this.isOpen()) {\n this.focus();\n return;\n }\n this.setOpen(true, 'keyboard', event);\n };\n this.document.addEventListener('keydown', onKey, true);\n this.destroyRef.onDestroy(() => this.document.removeEventListener('keydown', onKey, true));\n }\n\n /* ── Requests ─────────────────────────────────────────────────────────── */\n\n setOpen(next: boolean, reason: CommandPaletteOpenReason, source?: Event) {\n if (this.inline() || next === this.open()) return;\n const state = createControllable<boolean>({\n initial: this.open(),\n onRequest: (request) => this.openChangeRequest.emit(request),\n });\n if (state.request(next, reason, source)) this.open.set(next);\n }\n\n setQuery(next: string, reason: CommandPaletteQueryReason, source?: Event) {\n if (next === this.query()) return;\n const state = createControllable<string>({\n initial: this.query(),\n onRequest: (request) => this.queryChangeRequest.emit(request),\n });\n if (state.request(next, reason, source)) this.query.set(next);\n }\n\n /** The row the pointer last highlighted, which never scrolls the list. */\n private pointerHighlight: string | null = null;\n\n setHighlighted(next: string | null, reason: CommandPaletteHighlightReason, source?: Event) {\n if (next === this.highlightedId()) return;\n this.pointerHighlight = reason === 'pointer' ? next : null;\n const state = createControllable<string | null>({\n initial: this.highlightedId(),\n onRequest: (request) => this.highlightedIdChangeRequest.emit(request),\n });\n if (state.request(next, reason, source)) this.highlightedId.set(next);\n }\n\n setPages(next: readonly string[], reason: CommandPalettePagesReason, source?: Event) {\n const current = this.pages();\n if (next.length === current.length && next.every((id, index) => id === current[index])) return;\n const state = createControllable<readonly string[]>({\n initial: current,\n onRequest: (request) => this.pagesChangeRequest.emit(request),\n equals: () => false,\n });\n if (state.request(next, reason, source)) this.pages.set(next);\n }\n\n private setRecent(next: readonly string[], source?: Event) {\n const state = createControllable<readonly string[]>({\n initial: this.recent(),\n onRequest: (request) => this.recentChangeRequest.emit(request),\n equals: (a, b) => a.length === b.length && a.every((id, index) => id === b[index]),\n });\n if (state.request(next, 'select', source)) this.recent.set(next);\n }\n\n /* ── The handle ───────────────────────────────────────────────────────── */\n\n openPalette() {\n this.setOpen(true, 'programmatic');\n }\n\n close() {\n this.setOpen(false, 'programmatic');\n }\n\n toggle() {\n this.setOpen(!this.open(), 'programmatic');\n }\n\n /** Focuses the input and selects the query. */\n focus() {\n const node = this.field()?.nativeElement;\n if (node === undefined) return;\n node.focus();\n node.select();\n }\n\n /** Highlights the row with this id and scrolls it into view. */\n scrollToId(id: string) {\n this.setHighlighted(id, 'programmatic');\n }\n\n /* ── Executing ────────────────────────────────────────────────────────── */\n\n private execute(item: Item, reason: CommandPaletteSelectReason, source: Event | undefined) {\n if (item.disabled === true || this.pending().has(item.id)) return;\n\n if (item.children !== undefined) {\n this.setPages(\n [...this.pages(), item.id],\n reason === 'pointer' ? 'pointer' : 'select',\n source,\n );\n this.setQuery('', 'select', source);\n return;\n }\n\n let keep = false;\n const request: CommandPaletteSelectRequest<Item> = {\n item,\n reason,\n source,\n keepOpen: () => {\n keep = true;\n },\n };\n\n const finish = () => {\n this.setRecent(pushRecent(this.recent(), item.id, this.resolvedRecentLimit()), source);\n this.select.emit(request);\n if (this.resolvedCloseOnSelect() && !keep) this.setOpen(false, 'select', source);\n };\n\n const settle = () => {\n this.pending.update((previous) => {\n const next = new Set(previous);\n next.delete(item.id);\n return next;\n });\n };\n\n let outcome: unknown;\n try {\n outcome = item.onSelect?.(request);\n } catch (thrown) {\n this.error.set(thrown instanceof Error ? thrown.message : String(thrown));\n return;\n }\n\n if (outcome instanceof Promise) {\n this.error.set(null);\n this.pending.update((previous) => new Set(previous).add(item.id));\n void outcome.then(\n () => {\n settle();\n finish();\n },\n (thrown: unknown) => {\n settle();\n this.error.set(thrown instanceof Error ? thrown.message : String(thrown));\n },\n );\n return;\n }\n\n finish();\n }\n\n /* ── Template helpers ─────────────────────────────────────────────────── */\n\n protected domId(id: string) {\n return `${this.baseId}-${id.replace(/[^\\w-]/g, (character) => `_${character.charCodeAt(0).toString(16)}`)}`;\n }\n\n protected headingOf(section: { recent: boolean; label: string | undefined }) {\n return section.recent ? this.t('recent') : section.label;\n }\n\n /** Whether the rows mark the query: the family's own switch, and a query to mark. */\n protected readonly marking = computed(\n () => this.resolvedHighlightMatch() && this.query().trim() !== '',\n );\n\n /**\n * The runs of a row's label, handed to a consumer's own row template as\n * `runs`. The default row renders the `highlight` family instead; the\n * context keeps the runs for a template written before wave 10.\n */\n protected runsOf(item: Item) {\n const query = this.query();\n if (!this.resolvedHighlightMatch() || query.trim() === '') {\n return [{ text: item.label, matched: false }];\n }\n return splitByMatch(item.label, query, { locale: this.resolvedLocale() });\n }\n\n protected keyshortcuts(item: Item) {\n if (item.children !== undefined || item.shortcut === undefined) return null;\n return announceShortcut(item.shortcut, this.platformOf());\n }\n\n protected onInput(event: Event) {\n this.setQuery((event.target as HTMLInputElement).value, 'keyboard', event);\n }\n\n protected clear(event: Event) {\n this.setQuery('', 'clear', event);\n this.field()?.nativeElement.focus();\n }\n\n protected returnTo(index: number, event: Event) {\n this.setPages(this.pages().slice(0, index + 1), 'pointer', event);\n }\n\n /**\n * Focus stays in the input while the palette is open, as in a platform\n * search field: a press anywhere else — a group label, the list's empty\n * space, a row — keeps it there, and on a phone the keyboard stays up. The\n * press's click still runs.\n */\n protected keepFocus(event: MouseEvent) {\n if (event.target !== this.field()?.nativeElement) event.preventDefault();\n }\n\n protected hover(item: Item, event: PointerEvent) {\n /* A finger on the list is a scroll until it ends as a tap: the tap's click\n executes, and a highlight on the way would trail the finger. */\n if (item.disabled === true || event.pointerType === 'touch') return;\n this.setHighlighted(item.id, 'pointer', event);\n }\n\n protected press(item: Item, event: MouseEvent) {\n if (item.disabled === true || this.pending().has(item.id)) {\n event.preventDefault();\n return;\n }\n /* A link with a modifier is the browser's: a new tab, a download. */\n if (item.href !== undefined && (event.metaKey || event.ctrlKey || event.shiftKey)) return;\n this.execute(item, 'pointer', event);\n }\n\n protected onDialogRequest(request: DialogChangeRequest) {\n const reason: CommandPaletteOpenReason =\n request.reason === 'outsidePress' || request.reason === 'escape'\n ? request.reason\n : request.reason === 'pointer' || request.reason === 'keyboard'\n ? request.reason\n : 'dismiss';\n const state = createControllable<boolean>({\n initial: this.open(),\n onRequest: (own) => this.openChangeRequest.emit(own),\n });\n if (!state.request(request.value, reason, request.source)) {\n request.cancel();\n return;\n }\n this.open.set(request.value);\n }\n\n private move(intent: MoveIntent, event: KeyboardEvent) {\n const ids = this.rowIds();\n const current = this.highlightedId();\n const from = current === null ? -1 : ids.indexOf(current);\n const paged = intent === 'pageDown' || intent === 'pageUp';\n const next = moveIndex({\n enabled: this.enabled(),\n from,\n intent,\n loop: this.resolvedLoop() && !paged,\n });\n event.preventDefault();\n if (next === -1) return;\n this.setHighlighted(ids[next] ?? null, 'keyboard', event);\n }\n\n protected onKeyDown(event: KeyboardEvent) {\n if (event.isComposing) return;\n switch (event.key) {\n case 'ArrowDown':\n this.move('next', event);\n return;\n case 'ArrowUp':\n this.move('previous', event);\n return;\n case 'PageDown':\n this.move('pageDown', event);\n return;\n case 'PageUp':\n this.move('pageUp', event);\n return;\n case 'Home':\n if (event.ctrlKey) this.move('first', event);\n return;\n case 'End':\n if (event.ctrlKey) this.move('last', event);\n return;\n case 'Enter': {\n const id = this.highlightedId();\n const item = id === null ? undefined : this.rows().rows.find((row) => row.id === id);\n if (item === undefined) return;\n event.preventDefault();\n if (item.href !== undefined) {\n const node = this.list()?.nativeElement.querySelector<HTMLAnchorElement>(\n `#${CSS.escape(this.domId(item.id))}`,\n );\n if (event.metaKey || event.ctrlKey || event.shiftKey) {\n node?.dispatchEvent(\n new MouseEvent('click', {\n bubbles: true,\n cancelable: true,\n metaKey: event.metaKey,\n ctrlKey: event.ctrlKey,\n shiftKey: event.shiftKey,\n }),\n );\n return;\n }\n this.execute(item, 'keyboard', event);\n node?.click();\n return;\n }\n this.execute(item, 'keyboard', event);\n return;\n }\n case 'Escape':\n if (this.query() !== '') {\n event.preventDefault();\n event.stopPropagation();\n this.setQuery('', 'clear', event);\n return;\n }\n if (this.pages().length > 0) {\n event.preventDefault();\n event.stopPropagation();\n this.setPages(this.pages().slice(0, -1), 'keyboard', event);\n return;\n }\n if (!this.inline()) {\n event.preventDefault();\n this.setOpen(false, 'escape', event);\n }\n return;\n case 'Backspace':\n if (this.query() === '' && this.pages().length > 0) {\n event.preventDefault();\n this.setPages(this.pages().slice(0, -1), 'keyboard', event);\n }\n return;\n default:\n return;\n }\n }\n}\n\n/**\n * The control that opens the palette, on the consumer's own element. The\n * dialog family's trigger is not composed here because it needs the dialog\n * instance, which lives inside this component's template; what the trigger\n * needs from it — the open, the `aria-expanded`, the `aria-haspopup` — is\n * written from the palette instead, and the focus returns to the element\n * that held it when the layer opened, which is this one.\n */\n@Directive({\n selector: '[slCommandPaletteTrigger]',\n standalone: true,\n exportAs: 'slCommandPaletteTrigger',\n host: {\n 'data-part': 'trigger',\n 'data-part-trigger': '',\n 'aria-haspopup': 'dialog',\n '[attr.aria-expanded]': 'palette().open()',\n '[attr.data-open]': 'palette().open() ? \"\" : null',\n '[attr.disabled]': 'palette().disabled() ? \"\" : null',\n '(click)': 'onClick($event)',\n },\n})\nexport class SlCommandPaletteTrigger {\n readonly palette = input.required<SlCommandPalette>({ alias: 'slCommandPaletteTrigger' });\n\n private readonly native: HTMLElement = inject(ElementRef).nativeElement;\n\n constructor() {\n /* The dialog's own trigger registers its node as the layer's focus origin\n and as a branch the outside press ignores; this one does the same, on\n the dialog the palette holds, whenever that dialog exists. */\n effect(() => {\n const dialog = this.palette().dialog();\n if (dialog === undefined) return;\n untracked(() => dialog.triggerNode.set(this.native));\n });\n inject(DestroyRef).onDestroy(() => {\n const dialog = this.palette().dialog();\n if (dialog?.triggerNode() === this.native) dialog.triggerNode.set(null);\n });\n }\n\n protected onClick(event: MouseEvent) {\n if (event.defaultPrevented) return;\n this.palette().setOpen(true, event.detail === 0 ? 'keyboard' : 'pointer', event);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -62,17 +62,19 @@ class SlContainer {
|
|
|
62
62
|
resolvedAlign = computed(() => this.align() ?? this.defaults.align, /* @ts-ignore */
|
|
63
63
|
...(ngDevMode ? [{ debugName: "resolvedAlign" }] : /* istanbul ignore next */ []));
|
|
64
64
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlContainer, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
65
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.7", type: SlContainer, isStandalone: true, selector: "[slContainer]", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, inset: { classPropertyName: "inset", publicName: "inset", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-ui": "container", "data-part": "root" }, properties: { "attr.data-size": "resolvedSize()", "attr.data-inset": "resolvedInset()", "attr.data-align": "resolvedAlign()" } }, exportAs: ["slContainer"], ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: ["@layer slotted.components{[data-ui
|
|
65
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.7", type: SlContainer, isStandalone: true, selector: "[slContainer]", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, inset: { classPropertyName: "inset", publicName: "inset", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-ui": "container", "data-ui-container": "", "data-part": "root", "data-part-root": "" }, properties: { "attr.data-size": "resolvedSize()", "attr.data-inset": "resolvedInset()", "attr.data-align": "resolvedAlign()" } }, exportAs: ["slContainer"], ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: ["@layer slotted.components{[data-ui-container]{--_max: var(--slotted-container-content, 56rem);--_inset: var(--slotted-space-6, 1rem);--_start-track: 1fr;--_end-track: 1fr;display:grid;grid-template-columns:[full-start] minmax(var(--_inset),var(--_start-track)) [content-start] min(100% - 2 * var(--_inset),var(--_max)) [content-end] minmax(var(--_inset),var(--_end-track)) [full-end];inline-size:100%}[data-ui-container]>*{grid-column:content;min-inline-size:0}[data-ui-container]>[data-part-breakout]{grid-column:full}[data-ui-container][data-size=measure]{--_max: var(--slotted-container-measure, 65ch)}[data-ui-container][data-size=content]{--_max: var(--slotted-container-content, 56rem)}[data-ui-container][data-size=wide]{--_max: var(--slotted-container-wide, 80rem)}[data-ui-container][data-size=full]{--_max: var(--slotted-container-full, 120rem)}[data-ui-container][data-size=bleed]{--_max: 100%}[data-ui-container][data-inset=\"0\"]{--_inset: 0px}[data-ui-container][data-inset=\"1\"]{--_inset: var(--slotted-space-1, .125rem)}[data-ui-container][data-inset=\"2\"]{--_inset: var(--slotted-space-2, .25rem)}[data-ui-container][data-inset=\"3\"]{--_inset: var(--slotted-space-3, .375rem)}[data-ui-container][data-inset=\"4\"]{--_inset: var(--slotted-space-4, .5rem)}[data-ui-container][data-inset=\"5\"]{--_inset: var(--slotted-space-5, .75rem)}[data-ui-container][data-inset=\"6\"]{--_inset: var(--slotted-space-6, 1rem)}[data-ui-container][data-inset=\"7\"]{--_inset: var(--slotted-space-7, 1.25rem)}[data-ui-container][data-inset=\"8\"]{--_inset: var(--slotted-space-8, 1.5rem)}[data-ui-container][data-inset=\"9\"]{--_inset: var(--slotted-space-9, 2rem)}[data-ui-container][data-inset=\"10\"]{--_inset: var(--slotted-space-10, 2.5rem)}[data-ui-container][data-inset=\"11\"]{--_inset: var(--slotted-space-11, 3rem)}[data-ui-container][data-inset=\"12\"]{--_inset: var(--slotted-space-12, 4rem)}[data-ui-container][data-align=center]{--_start-track: 1fr;--_end-track: 1fr}[data-ui-container][data-align=start]{--_start-track: var(--_inset)}[data-ui-container][data-align=end]{--_end-track: var(--_inset)}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
66
66
|
}
|
|
67
67
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlContainer, decorators: [{
|
|
68
68
|
type: Component,
|
|
69
69
|
args: [{ selector: '[slContainer]', standalone: true, exportAs: 'slContainer', template: '<ng-content></ng-content>', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
70
70
|
'data-ui': 'container',
|
|
71
|
+
'data-ui-container': '',
|
|
71
72
|
'data-part': 'root',
|
|
73
|
+
'data-part-root': '',
|
|
72
74
|
'[attr.data-size]': 'resolvedSize()',
|
|
73
75
|
'[attr.data-inset]': 'resolvedInset()',
|
|
74
76
|
'[attr.data-align]': 'resolvedAlign()',
|
|
75
|
-
}, styles: ["@layer slotted.components{[data-ui
|
|
77
|
+
}, styles: ["@layer slotted.components{[data-ui-container]{--_max: var(--slotted-container-content, 56rem);--_inset: var(--slotted-space-6, 1rem);--_start-track: 1fr;--_end-track: 1fr;display:grid;grid-template-columns:[full-start] minmax(var(--_inset),var(--_start-track)) [content-start] min(100% - 2 * var(--_inset),var(--_max)) [content-end] minmax(var(--_inset),var(--_end-track)) [full-end];inline-size:100%}[data-ui-container]>*{grid-column:content;min-inline-size:0}[data-ui-container]>[data-part-breakout]{grid-column:full}[data-ui-container][data-size=measure]{--_max: var(--slotted-container-measure, 65ch)}[data-ui-container][data-size=content]{--_max: var(--slotted-container-content, 56rem)}[data-ui-container][data-size=wide]{--_max: var(--slotted-container-wide, 80rem)}[data-ui-container][data-size=full]{--_max: var(--slotted-container-full, 120rem)}[data-ui-container][data-size=bleed]{--_max: 100%}[data-ui-container][data-inset=\"0\"]{--_inset: 0px}[data-ui-container][data-inset=\"1\"]{--_inset: var(--slotted-space-1, .125rem)}[data-ui-container][data-inset=\"2\"]{--_inset: var(--slotted-space-2, .25rem)}[data-ui-container][data-inset=\"3\"]{--_inset: var(--slotted-space-3, .375rem)}[data-ui-container][data-inset=\"4\"]{--_inset: var(--slotted-space-4, .5rem)}[data-ui-container][data-inset=\"5\"]{--_inset: var(--slotted-space-5, .75rem)}[data-ui-container][data-inset=\"6\"]{--_inset: var(--slotted-space-6, 1rem)}[data-ui-container][data-inset=\"7\"]{--_inset: var(--slotted-space-7, 1.25rem)}[data-ui-container][data-inset=\"8\"]{--_inset: var(--slotted-space-8, 1.5rem)}[data-ui-container][data-inset=\"9\"]{--_inset: var(--slotted-space-9, 2rem)}[data-ui-container][data-inset=\"10\"]{--_inset: var(--slotted-space-10, 2.5rem)}[data-ui-container][data-inset=\"11\"]{--_inset: var(--slotted-space-11, 3rem)}[data-ui-container][data-inset=\"12\"]{--_inset: var(--slotted-space-12, 4rem)}[data-ui-container][data-align=center]{--_start-track: 1fr;--_end-track: 1fr}[data-ui-container][data-align=start]{--_start-track: var(--_inset)}[data-ui-container][data-align=end]{--_end-track: var(--_inset)}}\n"] }]
|
|
76
78
|
}], propDecorators: { size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], inset: [{ type: i0.Input, args: [{ isSignal: true, alias: "inset", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }] } });
|
|
77
79
|
|
|
78
80
|
/**
|
|
@@ -85,7 +87,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
85
87
|
*/
|
|
86
88
|
class SlContainerBreakout {
|
|
87
89
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlContainerBreakout, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
88
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlContainerBreakout, isStandalone: true, selector: "[slContainerBreakout]", host: { attributes: { "data-part": "breakout" } }, exportAs: ["slContainerBreakout"], ngImport: i0 });
|
|
90
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlContainerBreakout, isStandalone: true, selector: "[slContainerBreakout]", host: { attributes: { "data-part": "breakout", "data-part-breakout": "" } }, exportAs: ["slContainerBreakout"], ngImport: i0 });
|
|
89
91
|
}
|
|
90
92
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlContainerBreakout, decorators: [{
|
|
91
93
|
type: Directive,
|
|
@@ -93,7 +95,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
93
95
|
selector: '[slContainerBreakout]',
|
|
94
96
|
standalone: true,
|
|
95
97
|
exportAs: 'slContainerBreakout',
|
|
96
|
-
host: { 'data-part': 'breakout' },
|
|
98
|
+
host: { 'data-part': 'breakout', 'data-part-breakout': '' },
|
|
97
99
|
}]
|
|
98
100
|
}] });
|
|
99
101
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slotted-angular-container.mjs","sources":["../../container/src/container-defaults.ts","../../container/src/container.ts","../../container/src/container-breakout.ts","../../container/src/slotted-angular-container.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\n\n/**\n * What the column bounds, rather than how big it is. `sm`/`md`/`lg` is this\n * library's word for control geometry; a container's maximum is chosen by what\n * is inside it, and a letter hides the choice.\n *\n * `measure` is the comfortable reading line, counted in characters so it\n * follows the inherited type and the reader's zoom. `full` removes the\n * maximum and keeps the inset.\n */\nexport type ContainerSize = 'measure' | 'content' | 'wide' | 'full' | 'bleed';\n\n/**\n * The gap between the column and the edge of the space the container was\n * given, as a step on the space scale — the same scale Stack, Inline and Grid\n * take their `gap` from. `0` is the absence of an inset.\n */\nexport type ContainerInset = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;\n\n/** Where the column sits when there is space left over. */\nexport type ContainerAlign = 'center' | 'start' | 'end';\n\nexport interface ContainerDefaults {\n align: ContainerAlign;\n inset: ContainerInset;\n size: ContainerSize;\n}\n\n/**\n * `content` rather than the widest bounded step, which is what the four\n * surveyed libraries that state a default all choose. A dashboard that\n * inherits `content` looks too narrow the first time it is opened and is\n * corrected; a settings page that inherits `wide` merely has lines that are\n * somewhat too long, which nobody reports.\n */\nconst FALLBACK: ContainerDefaults = { align: 'center', inset: 6, size: 'content' };\n\nexport const CONTAINER_DEFAULTS = new InjectionToken<ContainerDefaults>(\n 'slotted container defaults',\n { providedIn: 'root', factory: (): ContainerDefaults => ({ ...FALLBACK }) },\n);\n\n/**\n * An application decides once what its pages are bounded to and how far they\n * are inset, rather than repeating three inputs on every container. A\n * container that states any of them itself still wins: an explicit input is\n * never overridden by the token.\n */\nexport function provideContainerDefaults(defaults: Partial<ContainerDefaults>) {\n return {\n provide: CONTAINER_DEFAULTS,\n useFactory: (): ContainerDefaults => ({\n align: defaults.align ?? FALLBACK.align,\n inset: defaults.inset ?? FALLBACK.inset,\n size: defaults.size ?? FALLBACK.size,\n }),\n };\n}\n\n/** What a container bounds here, before it states anything of its own. */\nexport function injectContainerDefaults(): ContainerDefaults {\n return inject(CONTAINER_DEFAULTS);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { injectContainerDefaults } from './container-defaults';\nimport type { ContainerAlign, ContainerInset, ContainerSize } from './container-defaults';\n\nexport type { ContainerAlign, ContainerInset, ContainerSize } from './container-defaults';\n\n/**\n * Bounds the inline size of a region, insets it from the edge of the space it\n * was given, and places it inside that space. It paints nothing, separates\n * nothing and claims no semantics: the directive is written on the element the\n * page chose, so a `main`, a `section` and an `article` are all the same\n * container.\n *\n * The root is a three-track grid rather than a box with a maximum, because a\n * `slContainerBreakout` child needs a track to span. A run of text written\n * directly inside it becomes an item nothing can select and is placed in the\n * start gutter; wrap text in an element, as every layout family in this\n * library already requires.\n */\n@Component({\n selector: '[slContainer]',\n standalone: true,\n exportAs: 'slContainer',\n template: '<ng-content></ng-content>',\n styleUrl: '../../../styles/src/container/container.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'container',\n 'data-part': 'root',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-inset]': 'resolvedInset()',\n '[attr.data-align]': 'resolvedAlign()',\n },\n})\nexport class SlContainer {\n /** What the column bounds. Falls back to the injected default. */\n readonly size = input<ContainerSize>();\n /** The gap between the column and the edge, as a step on the space scale. */\n readonly inset = input<ContainerInset>();\n /** Where the column sits when there is space left over. */\n readonly align = input<ContainerAlign>();\n\n private readonly defaults = injectContainerDefaults();\n\n protected readonly resolvedSize = computed(() => this.size() ?? this.defaults.size);\n protected readonly resolvedInset = computed(() => String(this.inset() ?? this.defaults.inset));\n protected readonly resolvedAlign = computed(() => this.align() ?? this.defaults.align);\n}\n","import { Directive } from '@angular/core';\n\n/**\n * A child that leaves the bound behind and reaches both edges of the\n * container: a table, a banner, a strip of media inside a page of prose.\n *\n * It answers the container rather than the viewport, so it is still correct\n * nested, inside a scroll region, and in a container that does not fill the\n * page. Bounded content returns inside it by nesting another `slContainer`.\n */\n@Directive({\n selector: '[slContainerBreakout]',\n standalone: true,\n exportAs: 'slContainerBreakout',\n host: { 'data-part': 'breakout' },\n})\nexport class SlContainerBreakout {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;AA6BA;;;;;;AAMG;AACH,MAAM,QAAQ,GAAsB,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE;AAE3E,MAAM,kBAAkB,GAAG,IAAI,cAAc,CAClD,4BAA4B,EAC5B,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAA0B,EAAE,GAAG,QAAQ,EAAE,CAAC,EAAE;AAG7E;;;;;AAKG;AACG,SAAU,wBAAwB,CAAC,QAAoC,EAAA;IAC3E,OAAO;AACL,QAAA,OAAO,EAAE,kBAAkB;AAC3B,QAAA,UAAU,EAAE,OAA0B;AACpC,YAAA,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK;AACvC,YAAA,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK;AACvC,YAAA,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI;SACrC,CAAC;KACH;AACH;AAEA;SACgB,uBAAuB,GAAA;AACrC,IAAA,OAAO,MAAM,CAAC,kBAAkB,CAAC;AACnC;;AClDA;;;;;;;;;;;;AAYG;
|
|
1
|
+
{"version":3,"file":"slotted-angular-container.mjs","sources":["../../container/src/container-defaults.ts","../../container/src/container.ts","../../container/src/container-breakout.ts","../../container/src/slotted-angular-container.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\n\n/**\n * What the column bounds, rather than how big it is. `sm`/`md`/`lg` is this\n * library's word for control geometry; a container's maximum is chosen by what\n * is inside it, and a letter hides the choice.\n *\n * `measure` is the comfortable reading line, counted in characters so it\n * follows the inherited type and the reader's zoom. `full` removes the\n * maximum and keeps the inset.\n */\nexport type ContainerSize = 'measure' | 'content' | 'wide' | 'full' | 'bleed';\n\n/**\n * The gap between the column and the edge of the space the container was\n * given, as a step on the space scale — the same scale Stack, Inline and Grid\n * take their `gap` from. `0` is the absence of an inset.\n */\nexport type ContainerInset = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;\n\n/** Where the column sits when there is space left over. */\nexport type ContainerAlign = 'center' | 'start' | 'end';\n\nexport interface ContainerDefaults {\n align: ContainerAlign;\n inset: ContainerInset;\n size: ContainerSize;\n}\n\n/**\n * `content` rather than the widest bounded step, which is what the four\n * surveyed libraries that state a default all choose. A dashboard that\n * inherits `content` looks too narrow the first time it is opened and is\n * corrected; a settings page that inherits `wide` merely has lines that are\n * somewhat too long, which nobody reports.\n */\nconst FALLBACK: ContainerDefaults = { align: 'center', inset: 6, size: 'content' };\n\nexport const CONTAINER_DEFAULTS = new InjectionToken<ContainerDefaults>(\n 'slotted container defaults',\n { providedIn: 'root', factory: (): ContainerDefaults => ({ ...FALLBACK }) },\n);\n\n/**\n * An application decides once what its pages are bounded to and how far they\n * are inset, rather than repeating three inputs on every container. A\n * container that states any of them itself still wins: an explicit input is\n * never overridden by the token.\n */\nexport function provideContainerDefaults(defaults: Partial<ContainerDefaults>) {\n return {\n provide: CONTAINER_DEFAULTS,\n useFactory: (): ContainerDefaults => ({\n align: defaults.align ?? FALLBACK.align,\n inset: defaults.inset ?? FALLBACK.inset,\n size: defaults.size ?? FALLBACK.size,\n }),\n };\n}\n\n/** What a container bounds here, before it states anything of its own. */\nexport function injectContainerDefaults(): ContainerDefaults {\n return inject(CONTAINER_DEFAULTS);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { injectContainerDefaults } from './container-defaults';\nimport type { ContainerAlign, ContainerInset, ContainerSize } from './container-defaults';\n\nexport type { ContainerAlign, ContainerInset, ContainerSize } from './container-defaults';\n\n/**\n * Bounds the inline size of a region, insets it from the edge of the space it\n * was given, and places it inside that space. It paints nothing, separates\n * nothing and claims no semantics: the directive is written on the element the\n * page chose, so a `main`, a `section` and an `article` are all the same\n * container.\n *\n * The root is a three-track grid rather than a box with a maximum, because a\n * `slContainerBreakout` child needs a track to span. A run of text written\n * directly inside it becomes an item nothing can select and is placed in the\n * start gutter; wrap text in an element, as every layout family in this\n * library already requires.\n */\n@Component({\n selector: '[slContainer]',\n standalone: true,\n exportAs: 'slContainer',\n template: '<ng-content></ng-content>',\n styleUrl: '../../../styles/src/container/container.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'container',\n 'data-ui-container': '',\n 'data-part': 'root',\n 'data-part-root': '',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-inset]': 'resolvedInset()',\n '[attr.data-align]': 'resolvedAlign()',\n },\n})\nexport class SlContainer {\n /** What the column bounds. Falls back to the injected default. */\n readonly size = input<ContainerSize>();\n /** The gap between the column and the edge, as a step on the space scale. */\n readonly inset = input<ContainerInset>();\n /** Where the column sits when there is space left over. */\n readonly align = input<ContainerAlign>();\n\n private readonly defaults = injectContainerDefaults();\n\n protected readonly resolvedSize = computed(() => this.size() ?? this.defaults.size);\n protected readonly resolvedInset = computed(() => String(this.inset() ?? this.defaults.inset));\n protected readonly resolvedAlign = computed(() => this.align() ?? this.defaults.align);\n}\n","import { Directive } from '@angular/core';\n\n/**\n * A child that leaves the bound behind and reaches both edges of the\n * container: a table, a banner, a strip of media inside a page of prose.\n *\n * It answers the container rather than the viewport, so it is still correct\n * nested, inside a scroll region, and in a container that does not fill the\n * page. Bounded content returns inside it by nesting another `slContainer`.\n */\n@Directive({\n selector: '[slContainerBreakout]',\n standalone: true,\n exportAs: 'slContainerBreakout',\n host: { 'data-part': 'breakout', 'data-part-breakout': '' },\n})\nexport class SlContainerBreakout {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;AA6BA;;;;;;AAMG;AACH,MAAM,QAAQ,GAAsB,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE;AAE3E,MAAM,kBAAkB,GAAG,IAAI,cAAc,CAClD,4BAA4B,EAC5B,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAA0B,EAAE,GAAG,QAAQ,EAAE,CAAC,EAAE;AAG7E;;;;;AAKG;AACG,SAAU,wBAAwB,CAAC,QAAoC,EAAA;IAC3E,OAAO;AACL,QAAA,OAAO,EAAE,kBAAkB;AAC3B,QAAA,UAAU,EAAE,OAA0B;AACpC,YAAA,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK;AACvC,YAAA,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK;AACvC,YAAA,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI;SACrC,CAAC;KACH;AACH;AAEA;SACgB,uBAAuB,GAAA;AACrC,IAAA,OAAO,MAAM,CAAC,kBAAkB,CAAC;AACnC;;AClDA;;;;;;;;;;;;AAYG;MAmBU,WAAW,CAAA;;AAEb,IAAA,IAAI,GAAG,KAAK;wFAAiB;;AAE7B,IAAA,KAAK,GAAG,KAAK;yFAAkB;;AAE/B,IAAA,KAAK,GAAG,KAAK;yFAAkB;IAEvB,QAAQ,GAAG,uBAAuB,EAAE;AAElC,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI;qFAAC;AAChE,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;sFAAC;AAC3E,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK;sFAAC;uGAZ3E,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,2sBAdZ,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,ukEAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAc1B,WAAW,EAAA,UAAA,EAAA,CAAA;kBAlBvB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,UAAA,EACb,IAAI,EAAA,QAAA,EACN,aAAa,YACb,2BAA2B,EAAA,eAAA,EAEpB,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACJ,wBAAA,SAAS,EAAE,WAAW;AACtB,wBAAA,mBAAmB,EAAE,EAAE;AACvB,wBAAA,WAAW,EAAE,MAAM;AACnB,wBAAA,gBAAgB,EAAE,EAAE;AACpB,wBAAA,kBAAkB,EAAE,gBAAgB;AACpC,wBAAA,mBAAmB,EAAE,iBAAiB;AACtC,wBAAA,mBAAmB,EAAE,iBAAiB;AACvC,qBAAA,EAAA,MAAA,EAAA,CAAA,ukEAAA,CAAA,EAAA;;;ACxCH;;;;;;;AAOG;MAOU,mBAAmB,CAAA;uGAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,qBAAqB;oBAC/B,IAAI,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,oBAAoB,EAAE,EAAE,EAAE;AAC5D,iBAAA;;;ACfD;;AAEG;;"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { hostSelectorKey } from '@slotted/core/selector-key';
|
|
1
2
|
import * as i0 from '@angular/core';
|
|
2
3
|
import { InjectionToken, inject, input, booleanAttribute, numberAttribute, ElementRef, HostAttributeToken, signal, computed, DestroyRef, effect, afterNextRender, ViewEncapsulation, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
4
|
|
|
@@ -67,8 +68,8 @@ class SlContextMenuTrigger {
|
|
|
67
68
|
writtenUi = inject(new HostAttributeToken('data-ui'), { optional: true });
|
|
68
69
|
writtenPart = inject(new HostAttributeToken('data-part'), { optional: true });
|
|
69
70
|
writtenId = inject(new HostAttributeToken('id'), { optional: true });
|
|
70
|
-
ui = this.writtenUi ?? 'context-menu';
|
|
71
|
-
part = this.writtenPart ?? 'root';
|
|
71
|
+
ui = hostSelectorKey(this.element, 'ui', this.writtenUi ?? 'context-menu');
|
|
72
|
+
part = hostSelectorKey(this.element, 'part', this.writtenPart ?? 'root');
|
|
72
73
|
/** The menu names its surface after this element unless given `aria-label`. */
|
|
73
74
|
get id() {
|
|
74
75
|
return this.writtenId ?? this.menu().triggerId;
|
|
@@ -193,7 +194,7 @@ class SlContextMenuTrigger {
|
|
|
193
194
|
this.pressed.set(false);
|
|
194
195
|
}
|
|
195
196
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlContextMenuTrigger, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
196
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.7", type: SlContextMenuTrigger, isStandalone: true, selector: "[slContextMenuTriggerFor]", inputs: { menu: { classPropertyName: "menu", publicName: "slContextMenuTriggerFor", isSignal: true, isRequired: true, transformFunction: null }, longPress: { classPropertyName: "longPress", publicName: "longPress", isSignal: true, isRequired: false, transformFunction: null }, longPressDelay: { classPropertyName: "longPressDelay", publicName: "longPressDelay", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "contextmenu": "onContextMenu($event)", "keydown": "onKeyDown($event)", "pointerdown": "onPointerDown($event)", "pointermove": "onPointerMove($event)", "pointerup": "cancelPress()", "pointercancel": "cancelPress()" }, properties: { "attr.data-ui": "ui", "attr.data-part": "part", "attr.id": "id", "attr.data-open": "menu().isOpen() ? \"\" : null", "attr.data-pressed": "pressed() ? \"\" : null", "attr.data-disabled": "menu().resolvedDisabled() ? \"\" : null" } }, exportAs: ["slContextMenuTrigger"], ngImport: i0, template: '<ng-content />', isInline: true, styles: ["@layer slotted.components{[data-ui
|
|
197
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.7", type: SlContextMenuTrigger, isStandalone: true, selector: "[slContextMenuTriggerFor]", inputs: { menu: { classPropertyName: "menu", publicName: "slContextMenuTriggerFor", isSignal: true, isRequired: true, transformFunction: null }, longPress: { classPropertyName: "longPress", publicName: "longPress", isSignal: true, isRequired: false, transformFunction: null }, longPressDelay: { classPropertyName: "longPressDelay", publicName: "longPressDelay", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "contextmenu": "onContextMenu($event)", "keydown": "onKeyDown($event)", "pointerdown": "onPointerDown($event)", "pointermove": "onPointerMove($event)", "pointerup": "cancelPress()", "pointercancel": "cancelPress()" }, properties: { "attr.data-ui": "ui", "attr.data-part": "part", "attr.id": "id", "attr.data-open": "menu().isOpen() ? \"\" : null", "attr.data-pressed": "pressed() ? \"\" : null", "attr.data-disabled": "menu().resolvedDisabled() ? \"\" : null" } }, exportAs: ["slContextMenuTrigger"], ngImport: i0, template: '<ng-content />', isInline: true, styles: ["@layer slotted.components{[data-ui-context-menu]{--_mark-width: var(--slotted-context-menu-mark-width, var(--slotted-border-width-thin, 1px));--_mark-color: var(--slotted-context-menu-mark-color, var(--slotted-border-strong, CanvasText))}@media(pointer:coarse){[data-ui-context-menu]{-webkit-touch-callout:none}}[data-ui-context-menu][data-pressed]{-webkit-user-select:none;user-select:none}[data-ui-context-menu]{position:relative}[data-ui-context-menu]:after{border-radius:inherit;box-shadow:inset 0 0 0 var(--_mark-width) transparent;content:\"\";inset:0;pointer-events:none;position:absolute;transition:box-shadow var(--slotted-duration-short) var(--slotted-easing-standard)}[data-ui-context-menu][data-open]:after{box-shadow:inset 0 0 0 var(--_mark-width) var(--_mark-color)}[data-ui-context-menu]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-focus-ring-offset, 2px)}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
197
198
|
}
|
|
198
199
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlContextMenuTrigger, decorators: [{
|
|
199
200
|
type: Component,
|
|
@@ -210,7 +211,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
210
211
|
'(pointermove)': 'onPointerMove($event)',
|
|
211
212
|
'(pointerup)': 'cancelPress()',
|
|
212
213
|
'(pointercancel)': 'cancelPress()',
|
|
213
|
-
}, styles: ["@layer slotted.components{[data-ui
|
|
214
|
+
}, styles: ["@layer slotted.components{[data-ui-context-menu]{--_mark-width: var(--slotted-context-menu-mark-width, var(--slotted-border-width-thin, 1px));--_mark-color: var(--slotted-context-menu-mark-color, var(--slotted-border-strong, CanvasText))}@media(pointer:coarse){[data-ui-context-menu]{-webkit-touch-callout:none}}[data-ui-context-menu][data-pressed]{-webkit-user-select:none;user-select:none}[data-ui-context-menu]{position:relative}[data-ui-context-menu]:after{border-radius:inherit;box-shadow:inset 0 0 0 var(--_mark-width) transparent;content:\"\";inset:0;pointer-events:none;position:absolute;transition:box-shadow var(--slotted-duration-short) var(--slotted-easing-standard)}[data-ui-context-menu][data-open]:after{box-shadow:inset 0 0 0 var(--_mark-width) var(--_mark-color)}[data-ui-context-menu]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-focus-ring-offset, 2px)}}\n"] }]
|
|
214
215
|
}], ctorParameters: () => [], propDecorators: { menu: [{ type: i0.Input, args: [{ isSignal: true, alias: "slContextMenuTriggerFor", required: true }] }], longPress: [{ type: i0.Input, args: [{ isSignal: true, alias: "longPress", required: false }] }], longPressDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "longPressDelay", required: false }] }] } });
|
|
215
216
|
|
|
216
217
|
/**
|