@slotted/angular 0.1.0-beta.7 → 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/calendar.json +1 -1
- 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 +82 -30
- 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 +150 -54
- package/fesm2022/slotted-angular-command-palette.mjs.map +1 -1
- package/fesm2022/slotted-angular-container.mjs +6 -4
- package/fesm2022/slotted-angular-container.mjs.map +1 -1
- package/fesm2022/slotted-angular-context-menu.mjs +5 -4
- package/fesm2022/slotted-angular-context-menu.mjs.map +1 -1
- package/fesm2022/slotted-angular-currency-field.mjs +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 +40 -14
- 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 +48 -16
- 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 +61 -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 +38 -26
- 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 +48 -14
- 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 +2 -0
- 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 +10 -1
- package/types/slotted-angular-command-palette.d.ts.map +1 -1
- package/types/slotted-angular-container.d.ts.map +1 -1
- package/types/slotted-angular-context-menu.d.ts.map +1 -1
- package/types/slotted-angular-currency-field.d.ts +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-accordion.mjs","sources":["../../accordion/src/accordion-defaults.ts","../../accordion/src/accordion.ts","../../accordion/src/slotted-angular-accordion.ts"],"sourcesContent":["import { inject, Injectable, InjectionToken } from '@angular/core';\n\n/** The type step the set and its items sit at. */\nexport type AccordionSize = 'sm' | 'md' | 'lg';\n\n/**\n * How the set is drawn. `plain` paints nothing, `ruled` puts one hairline per\n * seam, `framed` wraps the ruled set in one frame, and `separated` gives every\n * item a card of its own.\n */\nexport type AccordionVariant = 'plain' | 'ruled' | 'framed' | 'separated';\n\n/** The mark each header carries. Handed to every item. */\nexport type AccordionIndicator = 'chevron' | 'plus-minus' | 'none';\n\n/** Which side of the words that mark stands on. Handed to every item. */\nexport type AccordionTogglePlacement = 'end' | 'start';\n\n/**\n * The heading level every item's header answers to. `3` is the default, which\n * is the level the APG's own example uses for a set inside a section.\n */\nexport type AccordionHeadingLevel = 'none' | '1' | '2' | '3' | '4' | '5' | '6';\n\n/** When each panel's content exists. Handed to every item. */\nexport type AccordionMount = 'active' | 'lazy' | 'eager' | 'until-found';\n\n/** Why the set of open panels moved. */\nexport type AccordionSelectionReason = 'pointer' | 'keyboard' | 'select' | 'programmatic';\n\nexport interface AccordionDefaults {\n headingLevel: AccordionHeadingLevel;\n indicator: AccordionIndicator;\n loop: boolean;\n mount: AccordionMount;\n multiple: boolean;\n requireOpen: boolean;\n size: AccordionSize;\n togglePlacement: AccordionTogglePlacement;\n truncate: boolean;\n variant: AccordionVariant;\n}\n\nconst FALLBACK: AccordionDefaults = {\n headingLevel: '3',\n indicator: 'chevron',\n loop: true,\n mount: 'eager',\n multiple: false,\n requireOpen: false,\n size: 'md',\n togglePlacement: 'end',\n truncate: false,\n variant: 'ruled',\n};\n\nexport const ACCORDION_DEFAULTS = new InjectionToken<AccordionDefaults>(\n 'slotted accordion defaults',\n { providedIn: 'root', factory: () => FALLBACK },\n);\n\n/**\n * An application decides once how its accordions look and behave, rather than\n * repeating the same ten inputs on every set in a product. A set that states\n * any of them itself still wins.\n */\nexport function provideAccordionDefaults(defaults: Partial<AccordionDefaults>) {\n return {\n provide: ACCORDION_DEFAULTS,\n useFactory: (): AccordionDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\n/** What an accordion renders as here, before it states anything of its own. */\nexport function injectAccordionDefaults(): AccordionDefaults {\n return inject(ACCORDION_DEFAULTS);\n}\n\n/**\n * Application-scoped rather than module-scoped, for the reason `field` records:\n * a module-level counter produces colliding sequences when two applications\n * render in one server process, and the server and the client sequences must\n * match for hydration.\n */\n@Injectable({ providedIn: 'root' })\nexport class SlAccordionIdFactory {\n private count = 0;\n\n next() {\n this.count += 1;\n return `slotted-collapsible-${this.count}`;\n }\n}\n","import { isHeldOpen, nextOpenValues, sameOpenValues } from '@slotted/core/disclosure';\nimport { createArrowNavigation } from '@slotted/core/focus';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeRequest } from '@slotted/core/state';\nimport {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n inject,\n input,\n model,\n output,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { ACCORDION_DEFAULTS, injectAccordionDefaults } from './accordion-defaults';\nimport type {\n AccordionHeadingLevel,\n AccordionIndicator,\n AccordionMount,\n AccordionSelectionReason,\n AccordionSize,\n AccordionTogglePlacement,\n AccordionVariant,\n} from './accordion-defaults';\n\nexport type {\n AccordionDefaults,\n AccordionHeadingLevel,\n AccordionIndicator,\n AccordionMount,\n AccordionSelectionReason,\n AccordionSize,\n AccordionTogglePlacement,\n AccordionVariant,\n} from './accordion-defaults';\n\n/**\n * The header of every item this set owns, and of no set nested inside it.\n * `:scope` is what keeps a nested accordion's headers out of the outer one's\n * arrow ring: root, item, header, trigger is exactly four levels.\n */\nexport const ACCORDION_TRIGGER_SELECTOR =\n ':scope > * > [data-part=\"header\"] > [data-part=\"trigger\"]';\n\n/** The variant the set hands its items, per variant the set is drawn in. */\nconst ITEM_VARIANT: Record<AccordionVariant, 'plain' | 'ruled' | 'framed'> = {\n plain: 'plain',\n ruled: 'ruled',\n framed: 'ruled',\n separated: 'framed',\n};\n\n/**\n * A set of disclosures that share a value.\n *\n * **The keyboard is the pattern's, plus four keys that are not.** `Enter`,\n * `Space`, `Tab` and `Shift + Tab` are the platform's, and every header stays\n * in the page tab sequence — `w3c/aria-practices#3434` removed the roving\n * alternative from the pattern, and Base UI deprecated its own `loopFocus` and\n * `orientation` in the same change. `ArrowDown`, `ArrowUp`, `Home` and `End`\n * are shipped on top of that sequence, because Radix and Ark both ship them and\n * readers have learned them; they move focus and write no `tabindex`.\n *\n * **`requireOpen` marks the header it holds.** The pattern asks an accordion\n * that does not permit a panel to be collapsed to write `aria-disabled=\"true\"`\n * on that header, and the APG's own example is the only surveyed source that\n * ships it.\n *\n * **The items are `collapsible`s, and nothing here selects into them.** The set\n * hands each one its appearance as a value, which is the rule `checkbox-group`\n * set for every group family in the library.\n */\n@Component({\n selector: '[slAccordion]',\n standalone: true,\n exportAs: 'slAccordion',\n template: '<ng-content />',\n styleUrl: '../../../styles/src/accordion/accordion.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'accordion',\n 'data-part': 'root',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-variant]': 'resolvedVariant()',\n '[attr.data-disabled]': \"disabled() ? '' : null\",\n },\n})\nexport class SlAccordion {\n /** The set of open values. Two-way, so a template may bind it directly. */\n readonly value = model<readonly string[]>([]);\n readonly multiple = input(false, { transform: booleanAttribute });\n /**\n * Whether the set refuses to empty. The one open header then carries\n * `aria-disabled=\"true\"`, which is what the pattern asks of an accordion that\n * does not permit its panel to be collapsed.\n */\n readonly requireOpen = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly size = input<AccordionSize | undefined>(undefined);\n readonly variant = input<AccordionVariant | undefined>(undefined);\n readonly indicator = input<AccordionIndicator | undefined>(undefined);\n readonly togglePlacement = input<AccordionTogglePlacement | undefined>(undefined);\n readonly headingLevel = input<AccordionHeadingLevel | undefined>(undefined);\n readonly mount = input<AccordionMount | undefined>(undefined);\n readonly truncate = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (state) => (state === undefined ? undefined : booleanAttribute(state)),\n });\n readonly loop = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (state) => (state === undefined ? undefined : booleanAttribute(state)),\n });\n\n /**\n * One output for one transition, carrying the reason and the event. `value`\n * is the two-way half the ecosystem expects; this is the half a boolean\n * cannot say.\n */\n readonly valueChangeRequest = output<ChangeRequest<readonly string[]>>();\n\n private readonly defaults = injectAccordionDefaults();\n private readonly host: HTMLElement = inject(ElementRef).nativeElement;\n private readonly destroyRef = inject(DestroyRef);\n\n readonly resolvedSize = computed(() => this.size() ?? this.defaults.size);\n readonly resolvedVariant = computed(() => this.variant() ?? this.defaults.variant);\n readonly resolvedIndicator = computed(() => this.indicator() ?? this.defaults.indicator);\n readonly resolvedTogglePlacement = computed(\n () => this.togglePlacement() ?? this.defaults.togglePlacement,\n );\n readonly resolvedHeadingLevel = computed(() => this.headingLevel() ?? this.defaults.headingLevel);\n readonly resolvedMount = computed(() => this.mount() ?? this.defaults.mount);\n readonly resolvedTruncate = computed(() => this.truncate() ?? this.defaults.truncate);\n readonly resolvedLoop = computed(() => this.loop() ?? this.defaults.loop);\n readonly resolvedMultiple = computed(() => this.multiple() ?? this.defaults.multiple);\n readonly resolvedRequireOpen = computed(() => this.requireOpen() ?? this.defaults.requireOpen);\n\n /** The variant this set hands each of its items, which is not always its own. */\n readonly itemVariant = computed(() => ITEM_VARIANT[this.resolvedVariant()]);\n\n constructor() {\n /**\n * The arrows move focus and nothing else. The engine writes no `tabindex`,\n * which is the whole difference between it and the roving stop `tabs` uses.\n */\n afterNextRender(() => {\n const navigation = createArrowNavigation(this.host, {\n itemSelector: ACCORDION_TRIGGER_SELECTOR,\n loop: () => this.resolvedLoop(),\n orientation: () => 'vertical',\n });\n const observer = new MutationObserver(() => navigation.refresh());\n observer.observe(this.host, { childList: true, subtree: true });\n\n this.destroyRef.onDestroy(() => {\n observer.disconnect();\n navigation.destroy();\n });\n });\n }\n\n private options() {\n return { multiple: this.resolvedMultiple(), requireOpen: this.resolvedRequireOpen() };\n }\n\n /** Whether this value is one of the open ones. */\n holds(value: string): boolean {\n return this.value().includes(value);\n }\n\n /** Whether this value is open and the set refuses to let it close. */\n isHeld(value: string): boolean {\n return isHeldOpen(this.value(), value, this.options());\n }\n\n /** Asks the set to open or close one value. */\n toggle(value: string, reason: AccordionSelectionReason, source?: Event) {\n const next = nextOpenValues(this.value(), value, this.options());\n if (next === this.value()) return;\n this.commit(next, reason, source);\n }\n\n /**\n * Opens every item that is not disabled. It is Angular Material's `openAll`,\n * and it is reached through `exportAs` rather than through a handle.\n */\n openAll() {\n const values = this.items()\n .filter((item) => !item.hasAttribute('data-disabled'))\n .map((item) => item.getAttribute('data-value') ?? '');\n this.commit(this.resolvedMultiple() ? values : values.slice(0, 1), 'programmatic');\n }\n\n /** Closes every item, unless `requireOpen` holds the last one. */\n closeAll() {\n const current = this.value();\n if (this.resolvedRequireOpen() && current.length > 0) {\n this.commit(current.slice(0, 1), 'programmatic');\n return;\n }\n this.commit([], 'programmatic');\n }\n\n /**\n * The items, read from the DOM rather than from a registry. It is the one\n * order that is never stale, and it is how `tabs` reads its own collection.\n */\n private items(): HTMLElement[] {\n return [...this.host.querySelectorAll<HTMLElement>(':scope > [data-value]')];\n }\n\n private commit(next: readonly string[], reason: AccordionSelectionReason, source?: Event) {\n let cancelled = false;\n const state = createControllable<readonly string[]>({\n /* A `model` writes the change back itself, so the state is owned here and\n the request is what a consumer inspects and may refuse. */\n initial: this.value(),\n /* Two arrays are never `Object.is`, so a set states its own equality or\n emits a request on every change detection. */\n equals: sameOpenValues,\n onRequest: (request) => {\n this.valueChangeRequest.emit(request);\n cancelled = request.cancelled;\n },\n });\n const moved = state.request(next, reason, source);\n if (cancelled || !moved) return;\n this.value.set(next);\n }\n}\n\nexport { ACCORDION_DEFAULTS, injectAccordionDefaults };\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-accordion.mjs","sources":["../../accordion/src/accordion-defaults.ts","../../accordion/src/accordion.ts","../../accordion/src/slotted-angular-accordion.ts"],"sourcesContent":["import { inject, Injectable, InjectionToken } from '@angular/core';\n\n/** The type step the set and its items sit at. */\nexport type AccordionSize = 'sm' | 'md' | 'lg';\n\n/**\n * How the set is drawn. `plain` paints nothing, `ruled` puts one hairline per\n * seam, `framed` wraps the ruled set in one frame, and `separated` gives every\n * item a card of its own.\n */\nexport type AccordionVariant = 'plain' | 'ruled' | 'framed' | 'separated';\n\n/** The mark each header carries. Handed to every item. */\nexport type AccordionIndicator = 'chevron' | 'plus-minus' | 'none';\n\n/** Which side of the words that mark stands on. Handed to every item. */\nexport type AccordionTogglePlacement = 'end' | 'start';\n\n/**\n * The heading level every item's header answers to. `3` is the default, which\n * is the level the APG's own example uses for a set inside a section.\n */\nexport type AccordionHeadingLevel = 'none' | '1' | '2' | '3' | '4' | '5' | '6';\n\n/** When each panel's content exists. Handed to every item. */\nexport type AccordionMount = 'active' | 'lazy' | 'eager' | 'until-found';\n\n/** Why the set of open panels moved. */\nexport type AccordionSelectionReason = 'pointer' | 'keyboard' | 'select' | 'programmatic';\n\nexport interface AccordionDefaults {\n headingLevel: AccordionHeadingLevel;\n indicator: AccordionIndicator;\n loop: boolean;\n mount: AccordionMount;\n multiple: boolean;\n requireOpen: boolean;\n size: AccordionSize;\n togglePlacement: AccordionTogglePlacement;\n truncate: boolean;\n variant: AccordionVariant;\n}\n\nconst FALLBACK: AccordionDefaults = {\n headingLevel: '3',\n indicator: 'chevron',\n loop: true,\n mount: 'eager',\n multiple: false,\n requireOpen: false,\n size: 'md',\n togglePlacement: 'end',\n truncate: false,\n variant: 'ruled',\n};\n\nexport const ACCORDION_DEFAULTS = new InjectionToken<AccordionDefaults>(\n 'slotted accordion defaults',\n { providedIn: 'root', factory: () => FALLBACK },\n);\n\n/**\n * An application decides once how its accordions look and behave, rather than\n * repeating the same ten inputs on every set in a product. A set that states\n * any of them itself still wins.\n */\nexport function provideAccordionDefaults(defaults: Partial<AccordionDefaults>) {\n return {\n provide: ACCORDION_DEFAULTS,\n useFactory: (): AccordionDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\n/** What an accordion renders as here, before it states anything of its own. */\nexport function injectAccordionDefaults(): AccordionDefaults {\n return inject(ACCORDION_DEFAULTS);\n}\n\n/**\n * Application-scoped rather than module-scoped, for the reason `field` records:\n * a module-level counter produces colliding sequences when two applications\n * render in one server process, and the server and the client sequences must\n * match for hydration.\n */\n@Injectable({ providedIn: 'root' })\nexport class SlAccordionIdFactory {\n private count = 0;\n\n next() {\n this.count += 1;\n return `slotted-collapsible-${this.count}`;\n }\n}\n","import { isHeldOpen, nextOpenValues, sameOpenValues } from '@slotted/core/disclosure';\nimport { createArrowNavigation } from '@slotted/core/focus';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeRequest } from '@slotted/core/state';\nimport {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n inject,\n input,\n model,\n output,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { ACCORDION_DEFAULTS, injectAccordionDefaults } from './accordion-defaults';\nimport type {\n AccordionHeadingLevel,\n AccordionIndicator,\n AccordionMount,\n AccordionSelectionReason,\n AccordionSize,\n AccordionTogglePlacement,\n AccordionVariant,\n} from './accordion-defaults';\n\nexport type {\n AccordionDefaults,\n AccordionHeadingLevel,\n AccordionIndicator,\n AccordionMount,\n AccordionSelectionReason,\n AccordionSize,\n AccordionTogglePlacement,\n AccordionVariant,\n} from './accordion-defaults';\n\n/**\n * The header of every item this set owns, and of no set nested inside it.\n * `:scope` is what keeps a nested accordion's headers out of the outer one's\n * arrow ring: root, item, header, trigger is exactly four levels.\n */\nexport const ACCORDION_TRIGGER_SELECTOR =\n ':scope > * > [data-part=\"header\"] > [data-part=\"trigger\"]';\n\n/** The variant the set hands its items, per variant the set is drawn in. */\nconst ITEM_VARIANT: Record<AccordionVariant, 'plain' | 'ruled' | 'framed'> = {\n plain: 'plain',\n ruled: 'ruled',\n framed: 'ruled',\n separated: 'framed',\n};\n\n/**\n * A set of disclosures that share a value.\n *\n * **The keyboard is the pattern's, plus four keys that are not.** `Enter`,\n * `Space`, `Tab` and `Shift + Tab` are the platform's, and every header stays\n * in the page tab sequence — `w3c/aria-practices#3434` removed the roving\n * alternative from the pattern, and Base UI deprecated its own `loopFocus` and\n * `orientation` in the same change. `ArrowDown`, `ArrowUp`, `Home` and `End`\n * are shipped on top of that sequence, because Radix and Ark both ship them and\n * readers have learned them; they move focus and write no `tabindex`.\n *\n * **`requireOpen` marks the header it holds.** The pattern asks an accordion\n * that does not permit a panel to be collapsed to write `aria-disabled=\"true\"`\n * on that header, and the APG's own example is the only surveyed source that\n * ships it.\n *\n * **The items are `collapsible`s, and nothing here selects into them.** The set\n * hands each one its appearance as a value, which is the rule `checkbox-group`\n * set for every group family in the library.\n */\n@Component({\n selector: '[slAccordion]',\n standalone: true,\n exportAs: 'slAccordion',\n template: '<ng-content />',\n styleUrl: '../../../styles/src/accordion/accordion.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'accordion',\n 'data-ui-accordion': '',\n 'data-part': 'root',\n 'data-part-root': '',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-variant]': 'resolvedVariant()',\n '[attr.data-disabled]': \"disabled() ? '' : null\",\n },\n})\nexport class SlAccordion {\n /** The set of open values. Two-way, so a template may bind it directly. */\n readonly value = model<readonly string[]>([]);\n readonly multiple = input(false, { transform: booleanAttribute });\n /**\n * Whether the set refuses to empty. The one open header then carries\n * `aria-disabled=\"true\"`, which is what the pattern asks of an accordion that\n * does not permit its panel to be collapsed.\n */\n readonly requireOpen = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly size = input<AccordionSize | undefined>(undefined);\n readonly variant = input<AccordionVariant | undefined>(undefined);\n readonly indicator = input<AccordionIndicator | undefined>(undefined);\n readonly togglePlacement = input<AccordionTogglePlacement | undefined>(undefined);\n readonly headingLevel = input<AccordionHeadingLevel | undefined>(undefined);\n readonly mount = input<AccordionMount | undefined>(undefined);\n readonly truncate = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (state) => (state === undefined ? undefined : booleanAttribute(state)),\n });\n readonly loop = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (state) => (state === undefined ? undefined : booleanAttribute(state)),\n });\n\n /**\n * One output for one transition, carrying the reason and the event. `value`\n * is the two-way half the ecosystem expects; this is the half a boolean\n * cannot say.\n */\n readonly valueChangeRequest = output<ChangeRequest<readonly string[]>>();\n\n private readonly defaults = injectAccordionDefaults();\n private readonly host: HTMLElement = inject(ElementRef).nativeElement;\n private readonly destroyRef = inject(DestroyRef);\n\n readonly resolvedSize = computed(() => this.size() ?? this.defaults.size);\n readonly resolvedVariant = computed(() => this.variant() ?? this.defaults.variant);\n readonly resolvedIndicator = computed(() => this.indicator() ?? this.defaults.indicator);\n readonly resolvedTogglePlacement = computed(\n () => this.togglePlacement() ?? this.defaults.togglePlacement,\n );\n readonly resolvedHeadingLevel = computed(() => this.headingLevel() ?? this.defaults.headingLevel);\n readonly resolvedMount = computed(() => this.mount() ?? this.defaults.mount);\n readonly resolvedTruncate = computed(() => this.truncate() ?? this.defaults.truncate);\n readonly resolvedLoop = computed(() => this.loop() ?? this.defaults.loop);\n readonly resolvedMultiple = computed(() => this.multiple() ?? this.defaults.multiple);\n readonly resolvedRequireOpen = computed(() => this.requireOpen() ?? this.defaults.requireOpen);\n\n /** The variant this set hands each of its items, which is not always its own. */\n readonly itemVariant = computed(() => ITEM_VARIANT[this.resolvedVariant()]);\n\n constructor() {\n /**\n * The arrows move focus and nothing else. The engine writes no `tabindex`,\n * which is the whole difference between it and the roving stop `tabs` uses.\n */\n afterNextRender(() => {\n const navigation = createArrowNavigation(this.host, {\n itemSelector: ACCORDION_TRIGGER_SELECTOR,\n loop: () => this.resolvedLoop(),\n orientation: () => 'vertical',\n });\n const observer = new MutationObserver(() => navigation.refresh());\n observer.observe(this.host, { childList: true, subtree: true });\n\n this.destroyRef.onDestroy(() => {\n observer.disconnect();\n navigation.destroy();\n });\n });\n }\n\n private options() {\n return { multiple: this.resolvedMultiple(), requireOpen: this.resolvedRequireOpen() };\n }\n\n /** Whether this value is one of the open ones. */\n holds(value: string): boolean {\n return this.value().includes(value);\n }\n\n /** Whether this value is open and the set refuses to let it close. */\n isHeld(value: string): boolean {\n return isHeldOpen(this.value(), value, this.options());\n }\n\n /** Asks the set to open or close one value. */\n toggle(value: string, reason: AccordionSelectionReason, source?: Event) {\n const next = nextOpenValues(this.value(), value, this.options());\n if (next === this.value()) return;\n this.commit(next, reason, source);\n }\n\n /**\n * Opens every item that is not disabled. It is Angular Material's `openAll`,\n * and it is reached through `exportAs` rather than through a handle.\n */\n openAll() {\n const values = this.items()\n .filter((item) => !item.hasAttribute('data-disabled'))\n .map((item) => item.getAttribute('data-value') ?? '');\n this.commit(this.resolvedMultiple() ? values : values.slice(0, 1), 'programmatic');\n }\n\n /** Closes every item, unless `requireOpen` holds the last one. */\n closeAll() {\n const current = this.value();\n if (this.resolvedRequireOpen() && current.length > 0) {\n this.commit(current.slice(0, 1), 'programmatic');\n return;\n }\n this.commit([], 'programmatic');\n }\n\n /**\n * The items, read from the DOM rather than from a registry. It is the one\n * order that is never stale, and it is how `tabs` reads its own collection.\n */\n private items(): HTMLElement[] {\n return [...this.host.querySelectorAll<HTMLElement>(':scope > [data-value]')];\n }\n\n private commit(next: readonly string[], reason: AccordionSelectionReason, source?: Event) {\n let cancelled = false;\n const state = createControllable<readonly string[]>({\n /* A `model` writes the change back itself, so the state is owned here and\n the request is what a consumer inspects and may refuse. */\n initial: this.value(),\n /* Two arrays are never `Object.is`, so a set states its own equality or\n emits a request on every change detection. */\n equals: sameOpenValues,\n onRequest: (request) => {\n this.valueChangeRequest.emit(request);\n cancelled = request.cancelled;\n },\n });\n const moved = state.request(next, reason, source);\n if (cancelled || !moved) return;\n this.value.set(next);\n }\n}\n\nexport { ACCORDION_DEFAULTS, injectAccordionDefaults };\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import { createPresence } from '@slotted/core/presence';
|
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
4
|
import { InjectionToken, inject, input, booleanAttribute, output, ElementRef, HostAttributeToken, signal, computed, DestroyRef, effect, afterNextRender, ViewEncapsulation, ChangeDetectionStrategy, Component, Directive, viewChild, Injector } from '@angular/core';
|
|
5
5
|
import { BUTTON_DEFAULTS_TOKEN } from '@slotted/angular/button';
|
|
6
|
+
import { writeSelectorKey } from '@slotted/core/selector-key';
|
|
6
7
|
import { NgTemplateOutlet } from '@angular/common';
|
|
7
8
|
import { SlGlyph, SlIcon } from '@slotted/angular/icon';
|
|
8
9
|
import { SlMenu, SlMenuSeparator, SlMenuTrigger } from '@slotted/angular/menu';
|
|
@@ -319,13 +320,15 @@ class SlActionBar {
|
|
|
319
320
|
this.collapse?.refresh();
|
|
320
321
|
}
|
|
321
322
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlActionBar, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
322
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.7", type: SlActionBar, isStandalone: true, selector: "[slActionBar]", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, sticky: { classPropertyName: "sticky", publicName: "sticky", isSignal: true, isRequired: false, transformFunction: null }, present: { classPropertyName: "present", publicName: "present", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { overflowChange: "overflowChange" }, host: { attributes: { "data-ui": "action-bar", "data-part": "root" }, properties: { "attr.role": "role()", "attr.data-variant": "resolvedVariant()", "attr.data-size": "resolvedSize()", "attr.data-align": "resolvedAlign()", "attr.data-sticky": "resolvedSticky() ? \"\" : null", "attr.data-collapsed": "collapsedCount()", "attr.data-status": "presenceAttribute()", "style.display": "mounted() ? null : \"none\"" } }, providers: [provideBarStep()], exportAs: ["slActionBar"], ngImport: i0, template: '<ng-content />', isInline: true, styles: ["@layer slotted.components{[data-ui
|
|
323
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.7", type: SlActionBar, isStandalone: true, selector: "[slActionBar]", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, sticky: { classPropertyName: "sticky", publicName: "sticky", isSignal: true, isRequired: false, transformFunction: null }, present: { classPropertyName: "present", publicName: "present", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { overflowChange: "overflowChange" }, host: { attributes: { "data-ui": "action-bar", "data-ui-action-bar": "", "data-part": "root", "data-part-root": "" }, properties: { "attr.role": "role()", "attr.data-variant": "resolvedVariant()", "attr.data-size": "resolvedSize()", "attr.data-align": "resolvedAlign()", "attr.data-sticky": "resolvedSticky() ? \"\" : null", "attr.data-collapsed": "collapsedCount()", "attr.data-status": "presenceAttribute()", "style.display": "mounted() ? null : \"none\"" } }, providers: [provideBarStep()], exportAs: ["slActionBar"], ngImport: i0, template: '<ng-content />', isInline: true, styles: ["@layer slotted.components{[data-ui-action-bar]{--_gap: var(--slotted-control-gap-md, .5rem);--_inset-block: var(--slotted-space-4, .5rem);--_inset-inline: var(--slotted-space-5, .75rem);--_height: var(--slotted-control-height-md, 34px);--_font-size: var(--slotted-control-font-size-md, .8125rem);--_icon-size: var(--slotted-control-icon-size-md, 16px);--_separator-inset: var(--slotted-space-2, .25rem);--_duration: var(--slotted-control-transition-duration);--_easing: var(--slotted-control-transition-easing);align-items:center;box-sizing:border-box;container-name:slotted-action-bar;container-type:inline-size;display:flex;flex-wrap:wrap;gap:var(--slotted-action-bar-gap, var(--_gap));inline-size:100%;min-block-size:calc(var(--_height) + 2 * var(--_inset-block));min-inline-size:0;padding-block:var(--slotted-action-bar-inset-block, var(--_inset-block));padding-inline:var(--slotted-action-bar-inset-inline, var(--_inset-inline))}[data-ui-action-bar][data-size=sm]{--_gap: var(--slotted-control-gap-sm, .375rem);--_inset-block: var(--slotted-space-3, .375rem);--_inset-inline: var(--slotted-space-4, .5rem);--_height: var(--slotted-control-height-sm, 30px);--_font-size: var(--slotted-control-font-size-sm, .75rem);--_icon-size: var(--slotted-control-icon-size-sm, 14px);--_separator-inset: var(--slotted-space-1, .125rem)}[data-ui-action-bar][data-size=lg]{--_gap: var(--slotted-control-gap-lg, .5rem);--_inset-block: var(--slotted-space-5, .75rem);--_inset-inline: var(--slotted-space-6, 1rem);--_height: var(--slotted-control-height-lg, 38px);--_font-size: var(--slotted-control-font-size-lg, .875rem);--_icon-size: var(--slotted-control-icon-size-lg, 18px);--_separator-inset: var(--slotted-space-3, .375rem)}[data-ui-action-bar]:not(:has([data-part-actions]>*:not([hidden]))):not(:has([data-part-status])){display:none}[data-ui-action-bar][data-variant=raised]{background-color:var(--slotted-action-bar-background, var(--slotted-surface, Canvas));border-block-start:var(--slotted-border-width-thin, 1px) solid var(--slotted-action-bar-border-color, var(--slotted-border-subtle, ButtonBorder))}[data-ui-action-bar][data-sticky]{inset-block-end:var(--slotted-page-sticky-bottom, 0px);position:sticky;z-index:var(--slotted-z-index-sticky, 100)}[data-ui-action-bar][data-status]{transition:translate var(--_duration) var(--_easing),opacity var(--_duration) var(--_easing)}[data-ui-action-bar]:is([data-status=entering],[data-status=exiting]){opacity:0;translate:0 100%}[data-ui-action-bar] [data-part-status]{align-items:center;color:var(--slotted-action-bar-status-color, var(--slotted-text-muted, GrayText));display:flex;flex:1 1 auto;font-family:var(--slotted-control-font-family, inherit);font-size:var(--_font-size);gap:var(--_gap);min-inline-size:0}[data-ui-action-bar] [data-part-actions]{align-items:center;display:flex;flex:0 0 auto;flex-wrap:wrap;gap:var(--_gap);justify-content:flex-end;margin-inline-start:auto;max-inline-size:100%;min-inline-size:0}[data-ui-action-bar][data-align=start] [data-part-actions]{justify-content:flex-start;margin-inline:0 auto}[data-ui-action-bar][data-align=center] [data-part-actions]{justify-content:center;margin-inline:auto}[data-ui-action-bar][data-align=center]:not(:has([data-part-status])) [data-part-actions]{margin-inline:auto}[data-ui-action-bar] [data-part-action]{align-items:center;display:inline-flex;flex:none;min-inline-size:0}[data-ui-action-bar] :is([data-part-action],[data-part-separator],[data-part-overflow])[hidden]{display:none}[data-ui-action-bar] [data-part-separator]{align-self:stretch;background-color:var( --slotted-action-bar-separator-color, var(--slotted-border-strong, ButtonBorder) );border:0;flex:none;inline-size:var(--slotted-border-width-thin, 1px);margin-block:var(--_separator-inset);margin-inline:calc(var(--_gap) / 2);min-block-size:calc(var(--_height) - 2 * var(--_separator-inset))}[data-ui-action-bar] [data-part-overflow]{align-items:center;appearance:none;background-color:transparent;border:0;--slotted-icon-size: var(--_icon-size);border-radius:var(--slotted-control-radius, 4px);color:var(--slotted-action-bar-overflow-color, var(--slotted-text-muted, GrayText));cursor:pointer;display:inline-flex;flex:none;font-family:var(--slotted-control-font-family, inherit);justify-content:center;line-height:1;margin-inline-start:calc(var(--_gap) / 2);min-block-size:var(--_height);min-inline-size:max(var(--slotted-target-min, 24px),var(--_height));padding:0;transition:background-color var(--_duration) var(--_easing),color var(--_duration) var(--_easing)}[data-ui-action-bar] [data-part-overflow]:not(:disabled):hover{background-color:var( --slotted-action-bar-overflow-hover-background, var(--slotted-tone-secondary-subtle-hover) );color:var(--slotted-action-bar-overflow-hover-color, var(--slotted-text, CanvasText))}[data-ui-action-bar] [data-part-overflow]:not(:disabled):active{background-color:var( --slotted-action-bar-overflow-active-background, var(--slotted-tone-secondary-subtle-active) )}[data-ui-action-bar] [data-part-overflow][data-open]{background-color:var( --slotted-action-bar-overflow-open-background, var(--slotted-tone-secondary-subtle-active) );color:var(--slotted-action-bar-overflow-hover-color, var(--slotted-text, CanvasText))}[data-ui-action-bar] [data-part-overflow]:disabled{color:var(--slotted-disabled-foreground, GrayText);cursor:default}[data-ui-action-bar] [data-part-overflow]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-focus-ring-offset, 2px)}@container slotted-action-bar (width < 24rem){[data-ui-action-bar] [data-part-actions]{--_stacked: 1;align-items:stretch;flex:1 1 100%;flex-direction:column-reverse;margin-inline:0}[data-ui-action-bar] [data-part-action]>*{inline-size:100%}[data-ui-action-bar] [data-part-overflow]{display:none}[data-ui-action-bar] [data-part-separator]{block-size:var(--slotted-border-width-thin, 1px);inline-size:auto;margin-block:calc(var(--_gap) / 2);margin-inline:var(--_separator-inset);min-block-size:0}[data-ui-action-bar] [data-part-status]{flex:1 1 100%}[data-ui-action-bar] [data-part-status]>*{align-content:space-between;inline-size:100%}}@media(forced-colors:active){[data-ui-action-bar] [data-part-separator]{background-color:CanvasText;forced-color-adjust:none}}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
323
324
|
}
|
|
324
325
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlActionBar, decorators: [{
|
|
325
326
|
type: Component,
|
|
326
327
|
args: [{ selector: '[slActionBar]', standalone: true, exportAs: 'slActionBar', template: '<ng-content />', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [provideBarStep()], host: {
|
|
327
328
|
'data-ui': 'action-bar',
|
|
329
|
+
'data-ui-action-bar': '',
|
|
328
330
|
'data-part': 'root',
|
|
331
|
+
'data-part-root': '',
|
|
329
332
|
'[attr.role]': 'role()',
|
|
330
333
|
'[attr.data-variant]': 'resolvedVariant()',
|
|
331
334
|
'[attr.data-size]': 'resolvedSize()',
|
|
@@ -334,7 +337,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
334
337
|
'[attr.data-collapsed]': 'collapsedCount()',
|
|
335
338
|
'[attr.data-status]': 'presenceAttribute()',
|
|
336
339
|
'[style.display]': 'mounted() ? null : "none"',
|
|
337
|
-
}, styles: ["@layer slotted.components{[data-ui
|
|
340
|
+
}, styles: ["@layer slotted.components{[data-ui-action-bar]{--_gap: var(--slotted-control-gap-md, .5rem);--_inset-block: var(--slotted-space-4, .5rem);--_inset-inline: var(--slotted-space-5, .75rem);--_height: var(--slotted-control-height-md, 34px);--_font-size: var(--slotted-control-font-size-md, .8125rem);--_icon-size: var(--slotted-control-icon-size-md, 16px);--_separator-inset: var(--slotted-space-2, .25rem);--_duration: var(--slotted-control-transition-duration);--_easing: var(--slotted-control-transition-easing);align-items:center;box-sizing:border-box;container-name:slotted-action-bar;container-type:inline-size;display:flex;flex-wrap:wrap;gap:var(--slotted-action-bar-gap, var(--_gap));inline-size:100%;min-block-size:calc(var(--_height) + 2 * var(--_inset-block));min-inline-size:0;padding-block:var(--slotted-action-bar-inset-block, var(--_inset-block));padding-inline:var(--slotted-action-bar-inset-inline, var(--_inset-inline))}[data-ui-action-bar][data-size=sm]{--_gap: var(--slotted-control-gap-sm, .375rem);--_inset-block: var(--slotted-space-3, .375rem);--_inset-inline: var(--slotted-space-4, .5rem);--_height: var(--slotted-control-height-sm, 30px);--_font-size: var(--slotted-control-font-size-sm, .75rem);--_icon-size: var(--slotted-control-icon-size-sm, 14px);--_separator-inset: var(--slotted-space-1, .125rem)}[data-ui-action-bar][data-size=lg]{--_gap: var(--slotted-control-gap-lg, .5rem);--_inset-block: var(--slotted-space-5, .75rem);--_inset-inline: var(--slotted-space-6, 1rem);--_height: var(--slotted-control-height-lg, 38px);--_font-size: var(--slotted-control-font-size-lg, .875rem);--_icon-size: var(--slotted-control-icon-size-lg, 18px);--_separator-inset: var(--slotted-space-3, .375rem)}[data-ui-action-bar]:not(:has([data-part-actions]>*:not([hidden]))):not(:has([data-part-status])){display:none}[data-ui-action-bar][data-variant=raised]{background-color:var(--slotted-action-bar-background, var(--slotted-surface, Canvas));border-block-start:var(--slotted-border-width-thin, 1px) solid var(--slotted-action-bar-border-color, var(--slotted-border-subtle, ButtonBorder))}[data-ui-action-bar][data-sticky]{inset-block-end:var(--slotted-page-sticky-bottom, 0px);position:sticky;z-index:var(--slotted-z-index-sticky, 100)}[data-ui-action-bar][data-status]{transition:translate var(--_duration) var(--_easing),opacity var(--_duration) var(--_easing)}[data-ui-action-bar]:is([data-status=entering],[data-status=exiting]){opacity:0;translate:0 100%}[data-ui-action-bar] [data-part-status]{align-items:center;color:var(--slotted-action-bar-status-color, var(--slotted-text-muted, GrayText));display:flex;flex:1 1 auto;font-family:var(--slotted-control-font-family, inherit);font-size:var(--_font-size);gap:var(--_gap);min-inline-size:0}[data-ui-action-bar] [data-part-actions]{align-items:center;display:flex;flex:0 0 auto;flex-wrap:wrap;gap:var(--_gap);justify-content:flex-end;margin-inline-start:auto;max-inline-size:100%;min-inline-size:0}[data-ui-action-bar][data-align=start] [data-part-actions]{justify-content:flex-start;margin-inline:0 auto}[data-ui-action-bar][data-align=center] [data-part-actions]{justify-content:center;margin-inline:auto}[data-ui-action-bar][data-align=center]:not(:has([data-part-status])) [data-part-actions]{margin-inline:auto}[data-ui-action-bar] [data-part-action]{align-items:center;display:inline-flex;flex:none;min-inline-size:0}[data-ui-action-bar] :is([data-part-action],[data-part-separator],[data-part-overflow])[hidden]{display:none}[data-ui-action-bar] [data-part-separator]{align-self:stretch;background-color:var( --slotted-action-bar-separator-color, var(--slotted-border-strong, ButtonBorder) );border:0;flex:none;inline-size:var(--slotted-border-width-thin, 1px);margin-block:var(--_separator-inset);margin-inline:calc(var(--_gap) / 2);min-block-size:calc(var(--_height) - 2 * var(--_separator-inset))}[data-ui-action-bar] [data-part-overflow]{align-items:center;appearance:none;background-color:transparent;border:0;--slotted-icon-size: var(--_icon-size);border-radius:var(--slotted-control-radius, 4px);color:var(--slotted-action-bar-overflow-color, var(--slotted-text-muted, GrayText));cursor:pointer;display:inline-flex;flex:none;font-family:var(--slotted-control-font-family, inherit);justify-content:center;line-height:1;margin-inline-start:calc(var(--_gap) / 2);min-block-size:var(--_height);min-inline-size:max(var(--slotted-target-min, 24px),var(--_height));padding:0;transition:background-color var(--_duration) var(--_easing),color var(--_duration) var(--_easing)}[data-ui-action-bar] [data-part-overflow]:not(:disabled):hover{background-color:var( --slotted-action-bar-overflow-hover-background, var(--slotted-tone-secondary-subtle-hover) );color:var(--slotted-action-bar-overflow-hover-color, var(--slotted-text, CanvasText))}[data-ui-action-bar] [data-part-overflow]:not(:disabled):active{background-color:var( --slotted-action-bar-overflow-active-background, var(--slotted-tone-secondary-subtle-active) )}[data-ui-action-bar] [data-part-overflow][data-open]{background-color:var( --slotted-action-bar-overflow-open-background, var(--slotted-tone-secondary-subtle-active) );color:var(--slotted-action-bar-overflow-hover-color, var(--slotted-text, CanvasText))}[data-ui-action-bar] [data-part-overflow]:disabled{color:var(--slotted-disabled-foreground, GrayText);cursor:default}[data-ui-action-bar] [data-part-overflow]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-focus-ring-offset, 2px)}@container slotted-action-bar (width < 24rem){[data-ui-action-bar] [data-part-actions]{--_stacked: 1;align-items:stretch;flex:1 1 100%;flex-direction:column-reverse;margin-inline:0}[data-ui-action-bar] [data-part-action]>*{inline-size:100%}[data-ui-action-bar] [data-part-overflow]{display:none}[data-ui-action-bar] [data-part-separator]{block-size:var(--slotted-border-width-thin, 1px);inline-size:auto;margin-block:calc(var(--_gap) / 2);margin-inline:var(--_separator-inset);min-block-size:0}[data-ui-action-bar] [data-part-status]{flex:1 1 100%}[data-ui-action-bar] [data-part-status]>*{align-content:space-between;inline-size:100%}}@media(forced-colors:active){[data-ui-action-bar] [data-part-separator]{background-color:CanvasText;forced-color-adjust:none}}}\n"] }]
|
|
338
341
|
}], ctorParameters: () => [], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], sticky: [{ type: i0.Input, args: [{ isSignal: true, alias: "sticky", required: false }] }], present: [{ type: i0.Input, args: [{ isSignal: true, alias: "present", required: false }] }], overflowChange: [{ type: i0.Output, args: ["overflowChange"] }] } });
|
|
339
342
|
/**
|
|
340
343
|
* The sentence at the start of the bar: a dirty-state marker, a timestamp, the
|
|
@@ -346,7 +349,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
346
349
|
*/
|
|
347
350
|
class SlActionBarStatus {
|
|
348
351
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlActionBarStatus, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
349
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlActionBarStatus, isStandalone: true, selector: "[slActionBarStatus]", host: { attributes: { "data-part": "status" } }, exportAs: ["slActionBarStatus"], ngImport: i0 });
|
|
352
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlActionBarStatus, isStandalone: true, selector: "[slActionBarStatus]", host: { attributes: { "data-part": "status", "data-part-status": "" } }, exportAs: ["slActionBarStatus"], ngImport: i0 });
|
|
350
353
|
}
|
|
351
354
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlActionBarStatus, decorators: [{
|
|
352
355
|
type: Directive,
|
|
@@ -354,7 +357,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
354
357
|
selector: '[slActionBarStatus]',
|
|
355
358
|
standalone: true,
|
|
356
359
|
exportAs: 'slActionBarStatus',
|
|
357
|
-
host: { 'data-part': 'status' },
|
|
360
|
+
host: { 'data-part': 'status', 'data-part-status': '' },
|
|
358
361
|
}]
|
|
359
362
|
}] });
|
|
360
363
|
/**
|
|
@@ -372,7 +375,7 @@ class SlActionBarActions {
|
|
|
372
375
|
inject(DestroyRef).onDestroy(() => this.bar.registerActions(null));
|
|
373
376
|
}
|
|
374
377
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlActionBarActions, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
375
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlActionBarActions, isStandalone: true, selector: "[slActionBarActions]", host: { attributes: { "data-part": "actions" } }, exportAs: ["slActionBarActions"], ngImport: i0 });
|
|
378
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlActionBarActions, isStandalone: true, selector: "[slActionBarActions]", host: { attributes: { "data-part": "actions", "data-part-actions": "" } }, exportAs: ["slActionBarActions"], ngImport: i0 });
|
|
376
379
|
}
|
|
377
380
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlActionBarActions, decorators: [{
|
|
378
381
|
type: Directive,
|
|
@@ -380,7 +383,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
380
383
|
selector: '[slActionBarActions]',
|
|
381
384
|
standalone: true,
|
|
382
385
|
exportAs: 'slActionBarActions',
|
|
383
|
-
host: { 'data-part': 'actions' },
|
|
386
|
+
host: { 'data-part': 'actions', 'data-part-actions': '' },
|
|
384
387
|
}]
|
|
385
388
|
}], ctorParameters: () => [] });
|
|
386
389
|
/**
|
|
@@ -438,7 +441,7 @@ class SlActionBarAction {
|
|
|
438
441
|
inject(DestroyRef).onDestroy(() => bar?.releaseUnit(this.identity));
|
|
439
442
|
}
|
|
440
443
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlActionBarAction, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
441
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.7", type: SlActionBarAction, isStandalone: true, selector: "[slActionBarAction]", inputs: { counterpart: { classPropertyName: "counterpart", publicName: "slActionBarActionCounterpart", isSignal: true, isRequired: false, transformFunction: null }, priority: { classPropertyName: "priority", publicName: "slActionBarAction", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-part": "action" }, properties: { "attr.data-unit": "unitId()", "attr.data-priority": "resolvedPriority()", "attr.hidden": "resolvedPriority() === \"always\" ? \"\" : null" } }, exportAs: ["slActionBarAction"], ngImport: i0 });
|
|
444
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.7", type: SlActionBarAction, isStandalone: true, selector: "[slActionBarAction]", inputs: { counterpart: { classPropertyName: "counterpart", publicName: "slActionBarActionCounterpart", isSignal: true, isRequired: false, transformFunction: null }, priority: { classPropertyName: "priority", publicName: "slActionBarAction", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-part": "action", "data-part-action": "" }, properties: { "attr.data-unit": "unitId()", "attr.data-priority": "resolvedPriority()", "attr.hidden": "resolvedPriority() === \"always\" ? \"\" : null" } }, exportAs: ["slActionBarAction"], ngImport: i0 });
|
|
442
445
|
}
|
|
443
446
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlActionBarAction, decorators: [{
|
|
444
447
|
type: Directive,
|
|
@@ -448,6 +451,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
448
451
|
exportAs: 'slActionBarAction',
|
|
449
452
|
host: {
|
|
450
453
|
'data-part': 'action',
|
|
454
|
+
'data-part-action': '',
|
|
451
455
|
'[attr.data-unit]': 'unitId()',
|
|
452
456
|
'[attr.data-priority]': 'resolvedPriority()',
|
|
453
457
|
'[attr.hidden]': 'resolvedPriority() === "always" ? "" : null',
|
|
@@ -465,7 +469,7 @@ let unitCount = 0;
|
|
|
465
469
|
*/
|
|
466
470
|
class SlActionBarSeparator {
|
|
467
471
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlActionBarSeparator, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
468
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlActionBarSeparator, isStandalone: true, selector: "[slActionBarSeparator]", host: { attributes: { "data-part": "separator", "role": "separator", "aria-orientation": "vertical" } }, exportAs: ["slActionBarSeparator"], ngImport: i0 });
|
|
472
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlActionBarSeparator, isStandalone: true, selector: "[slActionBarSeparator]", host: { attributes: { "data-part": "separator", "data-part-separator": "", "role": "separator", "aria-orientation": "vertical" } }, exportAs: ["slActionBarSeparator"], ngImport: i0 });
|
|
469
473
|
}
|
|
470
474
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlActionBarSeparator, decorators: [{
|
|
471
475
|
type: Directive,
|
|
@@ -473,7 +477,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
473
477
|
selector: '[slActionBarSeparator]',
|
|
474
478
|
standalone: true,
|
|
475
479
|
exportAs: 'slActionBarSeparator',
|
|
476
|
-
host: {
|
|
480
|
+
host: {
|
|
481
|
+
'data-part': 'separator',
|
|
482
|
+
'data-part-separator': '',
|
|
483
|
+
role: 'separator',
|
|
484
|
+
'aria-orientation': 'vertical',
|
|
485
|
+
},
|
|
477
486
|
}]
|
|
478
487
|
}] });
|
|
479
488
|
|
|
@@ -572,7 +581,7 @@ class SlActionBarOverflow {
|
|
|
572
581
|
* it once. `docs/build-briefing.md` records the rule; `toolbar` is where
|
|
573
582
|
* it was learnt.
|
|
574
583
|
*/
|
|
575
|
-
element
|
|
584
|
+
writeSelectorKey(element, 'part', 'overflow');
|
|
576
585
|
/* The bar measures the control, so it has to hold it. */
|
|
577
586
|
this.bar.registerTrigger(element);
|
|
578
587
|
});
|
|
@@ -583,6 +592,7 @@ class SlActionBarOverflow {
|
|
|
583
592
|
<button
|
|
584
593
|
#trigger
|
|
585
594
|
data-part="overflow"
|
|
595
|
+
data-part-overflow=""
|
|
586
596
|
type="button"
|
|
587
597
|
[slMenuTriggerFor]="surface"
|
|
588
598
|
[attr.aria-label]="name()"
|
|
@@ -613,6 +623,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
613
623
|
<button
|
|
614
624
|
#trigger
|
|
615
625
|
data-part="overflow"
|
|
626
|
+
data-part-overflow=""
|
|
616
627
|
type="button"
|
|
617
628
|
[slMenuTriggerFor]="surface"
|
|
618
629
|
[attr.aria-label]="name()"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slotted-angular-action-bar.mjs","sources":["../../action-bar/src/action-bar-defaults.ts","../../action-bar/src/action-bar.ts","../../action-bar/src/action-bar-overflow.ts","../../action-bar/src/slotted-angular-action-bar.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\n\n/** Whether the bar paints a ground and a rule of its own. */\nexport type ActionBarVariant = 'plain' | 'raised';\n\n/** The step the bar's own inset, gap and separator sit at. */\nexport type ActionBarSize = 'sm' | 'md' | 'lg';\n\n/** Where the run of actions sits in the room left after the status. */\nexport type ActionBarAlign = 'end' | 'start' | 'center';\n\n/**\n * Where an action stands in the order of giving way.\n *\n * The five are adapted from `sap.m.OverflowToolbarPriority`, and they exist here\n * and not in `toolbar` because the two bars read in opposite directions. In a\n * bar of tools the first control is the most used, so giving way from the end\n * gives up the least used one. In a bar of actions the action that confirms is\n * at the **end** of the line, so giving way from the end would give up Save\n * first.\n *\n * - `pinned` never gives way.\n * - `high` gives way after `low` and `hide`, into the surface.\n * - `low` is the first rank to reach the surface, and the default for an action\n * that declares a counterpart.\n * - `hide` gives way before every other rank and is **not** offered in the\n * surface: a control that is not worth a row in a menu.\n * - `always` is never drawn in the bar; its counterpart is in the surface from\n * the start.\n */\nexport type ActionBarPriority = 'pinned' | 'high' | 'low' | 'hide' | 'always';\n\nexport interface ActionBarDefaults {\n align: ActionBarAlign;\n size: ActionBarSize;\n sticky: boolean;\n variant: ActionBarVariant;\n}\n\nconst FALLBACK: ActionBarDefaults = {\n align: 'end',\n size: 'md',\n sticky: false,\n variant: 'plain',\n};\n\nexport const ACTION_BAR_DEFAULTS = new InjectionToken<ActionBarDefaults>(\n 'slotted action bar defaults',\n { providedIn: 'root', factory: () => FALLBACK },\n);\n\n/**\n * An application decides once how its action bars are drawn — a product whose\n * bars are all raised, compact and stuck to the bottom of the page says so in\n * one place rather than on every bar. A bar that states any of them itself\n * still wins.\n */\nexport function provideActionBarDefaults(defaults: Partial<ActionBarDefaults>) {\n return {\n provide: ACTION_BAR_DEFAULTS,\n useFactory: (): ActionBarDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\n/** What a bar renders as here, before it states anything of its own. */\nexport function injectActionBarDefaults(): ActionBarDefaults {\n return inject(ACTION_BAR_DEFAULTS);\n}\n","import { createCollapse } from '@slotted/core/overflow';\nimport type { CollapseHandle } from '@slotted/core/overflow';\nimport { createPresence } from '@slotted/core/presence';\nimport type { PresenceStatus } from '@slotted/core/presence';\nimport {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n HostAttributeToken,\n inject,\n input,\n output,\n signal,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { BUTTON_DEFAULTS_TOKEN } from '@slotted/angular/button';\nimport type { ButtonDefaults } from '@slotted/angular/button';\n\nimport { injectActionBarDefaults } from './action-bar-defaults';\nimport type {\n ActionBarAlign,\n ActionBarPriority,\n ActionBarSize,\n ActionBarVariant,\n} from './action-bar-defaults';\n\nexport type {\n ActionBarAlign,\n ActionBarDefaults,\n ActionBarPriority,\n ActionBarSize,\n ActionBarVariant,\n} from './action-bar-defaults';\n\n/**\n * The accessible name of the control that holds what did not fit. A string is\n * used verbatim; a function is given the number of actions behind the control,\n * because three dots say nothing about how much is behind them.\n */\nexport type ActionBarOverflowLabel = string | ((hidden: number) => string);\n\n/** One action the surface holds, in the order the bar holds it. */\nexport interface ActionBarSurfaceUnit {\n readonly id: string;\n readonly separatorBefore: boolean;\n}\n\n/** The attribute that says an action has somewhere to go. */\nexport const ACTION_BAR_UNIT_ATTRIBUTE = 'data-unit';\n\n/** The attribute the measurement reads a rank from. */\nexport const ACTION_BAR_PRIORITY_ATTRIBUTE = 'data-priority';\n\n/**\n * The custom property the stacking query raises, read back by the measurement.\n *\n * The breakpoint is literal because `@container (width < var(--x))` is invalid,\n * and it is written once — in the stylesheet. The binding asks CSS what it\n * decided rather than comparing widths of its own, so the layout and the\n * measurement cannot disagree about where the bar becomes a column.\n */\nexport const ACTION_BAR_STACK_PROPERTY = '--_stacked';\n\n/**\n * Where each rank stands in the order of giving way: the lowest goes first, and\n * position decides inside one rank.\n */\nexport const ACTION_BAR_RANK: Readonly<Record<ActionBarPriority, number>> = Object.freeze({\n always: 0,\n hide: 0,\n high: 2,\n low: 1,\n pinned: 0,\n});\n\nfunction priorityOf(unit: HTMLElement): ActionBarPriority {\n return (unit.getAttribute(ACTION_BAR_PRIORITY_ATTRIBUTE) as ActionBarPriority | null) ?? 'pinned';\n}\n\n/**\n * Everything the run lays out.\n *\n * The trigger is not one of them — a control that took part in its own\n * measurement would be counted twice, and the Angular trigger sits inside a\n * `display: contents` host of its own — and neither is an `always` action, which\n * is never in the bar to give way.\n */\nfunction unitsOf(container: HTMLElement) {\n return [...container.children].filter(\n (child): child is HTMLElement =>\n child instanceof HTMLElement &&\n child.getAttribute('data-part') !== 'overflow' &&\n child.querySelector('[data-part=\"overflow\"]') === null &&\n child.getAttribute(ACTION_BAR_PRIORITY_ATTRIBUTE) !== 'always',\n );\n}\n\n/**\n * Whether one of the bar's own rules sits between two units that are both in the\n * surface. It is read from the DOM because a separator is a sibling of the units\n * it divides and nothing in the component tree relates them.\n */\nfunction ruleBetween(from: Element, to: Element) {\n for (\n let node = from.nextElementSibling;\n node !== null && node !== to;\n node = node.nextElementSibling\n ) {\n if (node.getAttribute('data-part') === 'separator') return true;\n }\n return false;\n}\n\n/**\n * The one axis the bar hands down to the buttons inside it, through the button\n * family's own defaults token rather than through a second channel of this\n * family's invention. That is what keeps an explicit `size` on a button winning\n * over the bar, because it is the rule `button` already implements.\n *\n * The value is read through a getter so that a button's `computed` tracks the\n * bar's signal: a plain snapshot would fix the step at the moment the first\n * button was created and never move again.\n */\nfunction provideBarStep() {\n return {\n provide: BUTTON_DEFAULTS_TOKEN,\n useFactory: (): ButtonDefaults => {\n const bar = inject(SlActionBar);\n const inherited = inject(BUTTON_DEFAULTS_TOKEN, { skipSelf: true });\n\n return {\n ...inherited,\n get size() {\n return bar.resolvedSize();\n },\n };\n },\n };\n}\n\n/**\n * The actions that finish a task on a page or in a panel.\n *\n * **It is not a composite.** `Tab` reaches every action, in the order the author\n * wrote them, and the arrows are not bound. The controls here are the page's own\n * form actions, and a reader walking a form expects to arrive at Cancel and then\n * at Save; roving focus would make the whole bar one tab stop and put Save\n * behind an arrow key that announces nothing. A strip of ten icon buttons is a\n * `toolbar`, and that family binds the arrows against the APG.\n *\n * **What gives way is decided by rank, not by position**, which is the whole of\n * why this family stands beside `toolbar` rather than configuring it.\n *\n * **The action that confirms does not move.** The run carries an `auto` margin\n * against the bar's end edge, so a message appearing in the status, a button\n * going busy and a permission filter removing a control all move what is\n * *before* the last action and never the last action itself.\n */\n@Component({\n selector: '[slActionBar]',\n standalone: true,\n exportAs: 'slActionBar',\n template: '<ng-content />',\n styleUrl: '../../../styles/src/action-bar/action-bar.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [provideBarStep()],\n host: {\n 'data-ui': 'action-bar',\n 'data-part': 'root',\n '[attr.role]': 'role()',\n '[attr.data-variant]': 'resolvedVariant()',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-align]': 'resolvedAlign()',\n '[attr.data-sticky]': 'resolvedSticky() ? \"\" : null',\n '[attr.data-collapsed]': 'collapsedCount()',\n '[attr.data-status]': 'presenceAttribute()',\n '[style.display]': 'mounted() ? null : \"none\"',\n },\n})\nexport class SlActionBar {\n readonly variant = input<ActionBarVariant | undefined>(undefined);\n readonly size = input<ActionBarSize | undefined>(undefined);\n readonly align = input<ActionBarAlign | undefined>(undefined);\n readonly sticky = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (state) => (state === undefined ? undefined : booleanAttribute(state)),\n });\n /**\n * Whether the bar belongs on screen at all. A bulk bar exists while there is a\n * selection and a contextual save bar while there are unsaved changes.\n *\n * It is an input rather than a two-way value: the bar never asks to appear or\n * to leave, so there is nothing to cancel.\n */\n readonly present = input<boolean, boolean | string | undefined>(true, {\n transform: (state) => (state === undefined ? true : booleanAttribute(state)),\n });\n\n /**\n * Reports how many actions gave way, once per change. The collapsed set is a\n * measurement rather than a value, so there is no two-way binding over it.\n */\n readonly overflowChange = output<number>();\n\n private readonly defaults = injectActionBarDefaults();\n private readonly element = inject(ElementRef<HTMLElement>).nativeElement;\n\n /**\n * A consumer who has ten icon-only actions and wants the composite may write\n * `role=\"toolbar\"` themselves, and what they wrote survives the host binding.\n * The arrows are still not bound, so that consumer wants `toolbar`.\n */\n private readonly statedRole = inject(new HostAttributeToken('role'), { optional: true });\n\n private readonly counterparts = signal(new Map<string, TemplateRef<unknown>>());\n private readonly trigger = signal<HTMLElement | null>(null);\n private readonly actions = signal<HTMLElement | null>(null);\n private readonly stacked = signal(false);\n private readonly ready = signal(false);\n private collapse: CollapseHandle | null = null;\n\n /** What the surface holds: the collapsed actions and every `always` one. */\n readonly surfaceUnits = signal<readonly ActionBarSurfaceUnit[]>([]);\n\n readonly resolvedVariant = computed(() => this.variant() ?? this.defaults.variant);\n readonly resolvedSize = computed(() => this.size() ?? this.defaults.size);\n readonly resolvedAlign = computed(() => this.align() ?? this.defaults.align);\n readonly resolvedSticky = computed(() => this.sticky() ?? this.defaults.sticky);\n\n protected readonly role = computed(() => this.statedRole ?? 'group');\n\n private readonly status = signal<PresenceStatus>('open');\n protected readonly mounted = computed(() => this.status() !== 'unmounted');\n protected readonly presenceAttribute = computed(() => {\n const status = this.status();\n return status === 'open' || status === 'unmounted' ? null : status;\n });\n\n protected readonly collapsedCount = computed(() =>\n this.trigger() === null ? null : String(this.surfaceUnits().length),\n );\n\n /** Records what an action becomes in the surface. */\n registerUnit(id: string, template: TemplateRef<unknown>) {\n this.counterparts.update((held) => new Map(held).set(id, template));\n }\n\n releaseUnit(id: string) {\n this.counterparts.update((held) => {\n const next = new Map(held);\n next.delete(id);\n return next;\n });\n }\n\n counterpart(id: string) {\n return this.counterparts().get(id) ?? null;\n }\n\n /** The control that opens what did not fit. The bar measures it. */\n registerTrigger(element: HTMLElement | null) {\n this.trigger.set(element);\n }\n\n /** The run, which is the box the collapse measures rather than the root. */\n registerActions(element: HTMLElement | null) {\n this.actions.set(element);\n }\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n\n /**\n * The bar is held through its exit, so a bulk bar slides out rather than\n * vanishing. Carbon keeps its batch bar mounted and writes `aria-hidden` on\n * the root instead, which leaves the buttons inside reachable by `Tab`.\n */\n const presence = createPresence({\n present: true,\n skipInitialAnimation: true,\n onStatusChange: (next) => this.status.set(next),\n });\n presence.setNode(this.element);\n destroyRef.onDestroy(() => presence.destroy());\n\n effect(() => presence.sync(this.present()));\n\n afterNextRender(() => this.ready.set(true));\n\n /**\n * Whether the bar is drawn as a column. The number lives in the stylesheet's\n * container query, and this asks CSS what it decided rather than comparing\n * widths against a copy of it.\n */\n effect((onCleanup) => {\n const container = this.actions();\n if (container === null || !this.ready()) return;\n\n const read = () => {\n const view = container.ownerDocument?.defaultView;\n const raised =\n view?.getComputedStyle(container).getPropertyValue(ACTION_BAR_STACK_PROPERTY).trim() ===\n '1';\n if (this.stacked() !== raised) this.stacked.set(raised);\n };\n\n read();\n if (typeof ResizeObserver === 'undefined') return;\n const observer = new ResizeObserver(read);\n observer.observe(container);\n onCleanup(() => observer.disconnect());\n });\n\n /**\n * The collapse. It does not run while the bar is a column: a column has room\n * for every action, and a surface holding what did not fit would be a menu\n * for nothing. Leaving the effect destroys the handle, which reveals every\n * unit it had hidden.\n */\n effect((onCleanup) => {\n const container = this.actions();\n const trigger = this.trigger();\n if (container === null || !this.ready() || this.stacked()) return;\n\n const sync = (collapsedUnits: readonly HTMLElement[]) => {\n const collapsed = new Set(collapsedUnits);\n const held = [...container.children].filter(\n (child): child is HTMLElement =>\n child instanceof HTMLElement &&\n child.hasAttribute(ACTION_BAR_UNIT_ATTRIBUTE) &&\n (collapsed.has(child) ||\n child.getAttribute(ACTION_BAR_PRIORITY_ATTRIBUTE) === 'always'),\n );\n\n this.surfaceUnits.set(\n held.map((unit, index) => {\n const previous = held[index - 1];\n return {\n id: unit.getAttribute(ACTION_BAR_UNIT_ATTRIBUTE) ?? '',\n separatorBefore: previous !== undefined && ruleBetween(previous, unit),\n };\n }),\n );\n };\n\n const handle: CollapseHandle = createCollapse(container, {\n /* A pinned action has nowhere to go. Every other rank does, and `hide`'s\n somewhere is nowhere — it gives way and is not offered in the\n surface. */\n collapsible: (unit) => priorityOf(unit) !== 'pinned',\n divides: (unit) => unit.getAttribute('data-part') === 'separator',\n onChange: (units) => {\n sync(units);\n this.overflowChange.emit(\n units.filter((unit) => unit.hasAttribute(ACTION_BAR_UNIT_ATTRIBUTE)).length,\n );\n },\n rank: (unit) => ACTION_BAR_RANK[priorityOf(unit)],\n trigger: () => trigger,\n /* An `always` action is in the surface while every other one still fits,\n and a control that hid itself then would be a menu nobody can open. */\n triggerAlways: () =>\n container.querySelector(`[${ACTION_BAR_PRIORITY_ATTRIBUTE}='always']`) !== null,\n units: () => unitsOf(container),\n });\n\n this.collapse = handle;\n sync(handle.collapsed());\n\n /**\n * An action arriving or leaving invalidates the measurement — a bar that\n * grows a button collapses one — and an `always` action arriving changes\n * what the surface holds without changing what collapsed.\n */\n const observer = new MutationObserver(() => {\n handle.refresh();\n sync(handle.collapsed());\n });\n observer.observe(container, { childList: true, subtree: true });\n\n onCleanup(() => {\n observer.disconnect();\n handle.destroy();\n this.collapse = null;\n this.surfaceUnits.set([]);\n });\n });\n }\n\n /** Measures again, after the consumer changed something the DOM cannot report. */\n refresh() {\n this.collapse?.refresh();\n }\n}\n\n/**\n * The sentence at the start of the bar: a dirty-state marker, a timestamp, the\n * count of what is selected and the control that selects the rest.\n *\n * It is a slot rather than a component: the library already has\n * `inline-message`, `status-indicator` and `badge`, and `table` already owns the\n * selection and its count.\n */\n@Directive({\n selector: '[slActionBarStatus]',\n standalone: true,\n exportAs: 'slActionBarStatus',\n host: { 'data-part': 'status' },\n})\nexport class SlActionBarStatus {}\n\n/**\n * The run of actions, and the box the collapse measures.\n *\n * It is the run rather than the root, because the root is the query container\n * and a container is a container for its descendants and not for itself — so the\n * rule that turns the run into a column has to reach a descendant.\n */\n@Directive({\n selector: '[slActionBarActions]',\n standalone: true,\n exportAs: 'slActionBarActions',\n host: { 'data-part': 'actions' },\n})\nexport class SlActionBarActions {\n private readonly bar = inject(SlActionBar);\n\n constructor() {\n const element = inject(ElementRef<HTMLElement>).nativeElement;\n this.bar.registerActions(element);\n inject(DestroyRef).onDestroy(() => this.bar.registerActions(null));\n }\n}\n\n/**\n * One action the bar may give up, its rank, and what it becomes when it goes.\n *\n * The rank and the counterpart are one fact seen from two sides. A control with\n * nothing to become in the surface is pinned — it has nowhere to go, which is\n * why the action that confirms stays visible — and a rank that needs somewhere\n * to go and has nowhere behaves as pinned too, so a consumer error leaves the\n * control on the bar rather than hiding it silently.\n */\n@Directive({\n selector: '[slActionBarAction]',\n standalone: true,\n exportAs: 'slActionBarAction',\n host: {\n 'data-part': 'action',\n '[attr.data-unit]': 'unitId()',\n '[attr.data-priority]': 'resolvedPriority()',\n '[attr.hidden]': 'resolvedPriority() === \"always\" ? \"\" : null',\n },\n})\nexport class SlActionBarAction {\n /**\n * What the action becomes in the surface when the bar has no room for it.\n *\n * It is deliberately not called `overflow`: that word names what a container\n * does with more content than it has room for, and one term with two meanings\n * is the ambiguity the contract exists to prevent.\n */\n readonly counterpart = input<TemplateRef<unknown> | undefined>(undefined, {\n alias: 'slActionBarActionCounterpart',\n });\n\n /**\n * Where this action stands in the order of giving way.\n *\n * It is the selector's own value, so the terse form reads as the sentence it\n * is — `slActionBarAction=\"high\"`. A bare `slActionBarAction` hands the\n * directive an empty string, which is the attribute being present rather than\n * a rank, and the transform reads it as unstated.\n */\n readonly priority = input<ActionBarPriority | undefined, ActionBarPriority | '' | undefined>(\n undefined,\n { alias: 'slActionBarAction', transform: (rank) => (rank === '' ? undefined : rank) },\n );\n\n private readonly bar = inject(SlActionBar, { optional: true });\n private readonly identity = `slotted-action-bar-unit-${(unitCount += 1)}`;\n\n protected readonly unitId = computed(() =>\n this.counterpart() === undefined ? null : this.identity,\n );\n\n readonly resolvedPriority = computed<ActionBarPriority>(() => {\n const stated = this.priority();\n const declared = this.counterpart() !== undefined;\n if (stated === undefined) return declared ? 'low' : 'pinned';\n if (stated === 'hide' || stated === 'pinned') return stated;\n return declared ? stated : 'pinned';\n });\n\n constructor() {\n const bar = this.bar;\n effect(() => {\n const template = this.counterpart();\n if (bar === null) return;\n if (template === undefined) bar.releaseUnit(this.identity);\n else bar.registerUnit(this.identity, template);\n });\n\n inject(DestroyRef).onDestroy(() => bar?.releaseUnit(this.identity));\n }\n}\n\nlet unitCount = 0;\n\n/**\n * A hairline between two runs of actions.\n *\n * It is the answer to the one line of `docs/component-features.md` §5 that names\n * no mechanism: a destructive action does not sit flush against a frequent one.\n * It is a part of this family rather than a `divider` because its geometry\n * belongs to the bar.\n */\n@Directive({\n selector: '[slActionBarSeparator]',\n standalone: true,\n exportAs: 'slActionBarSeparator',\n host: { 'data-part': 'separator', role: 'separator', 'aria-orientation': 'vertical' },\n})\nexport class SlActionBarSeparator {}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n HostAttributeToken,\n inject,\n Injector,\n input,\n ViewEncapsulation,\n viewChild,\n} from '@angular/core';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport { SlMenu, SlMenuSeparator, SlMenuTrigger } from '@slotted/angular/menu';\nimport type { MenuAlign, MenuSide, MenuSize } from '@slotted/angular/menu';\n\nimport { SlActionBar } from './action-bar';\nimport type { ActionBarOverflowLabel } from './action-bar';\n\n/**\n * The control that opens what did not fit, and the surface holding it.\n *\n * It is `menu`'s own trigger and surface wearing this family's geometry, so the\n * keyboard, the dismissal and the focus return are `menu`'s and are not written\n * twice. What this family adds is the measurement: the bar decides which actions\n * give way, **by rank**, and the counterparts they declared are rendered here in\n * the order the bar holds them — with a separator wherever one of the bar's own\n * rules sits between two of them.\n *\n * The surface also holds every action ranked `always`, which was never drawn in\n * the bar at all. A reader opening the menu sees one list, so the two sources\n * are read together and in the bar's own order.\n *\n * The counterpart is an `ng-template` rendered through `NgTemplateOutlet` only\n * while its action is in the surface, so a menu item that is never reached\n * builds nothing. That is where the two bindings differ most, and it is idiom\n * rather than asymmetry: React's `ReactNode` is built with the element that\n * declares it, which is React's own answer and its own cost.\n *\n * **A template resolves its dependencies where it was written, not where it is\n * rendered.** The counterpart is authored beside the control it replaces, which\n * is outside the surface, so `slMenuItem` would look for the `SlMenu` above the\n * bar and find none. The outlet is therefore given an injector that provides the\n * surface this component draws.\n *\n * The host is `display: contents`, so the `button` below is a child of the run\n * itself: the part that carries the geometry has to be the box the bar lays out.\n *\n * **The `hidden` attribute on the trigger belongs to the bar.** `createCollapse`\n * writes it, because the same measurement that decides whether the control is\n * needed is the one that has to reveal it to read its width.\n */\n@Component({\n selector: 'sl-action-bar-overflow',\n standalone: true,\n exportAs: 'slActionBarOverflow',\n imports: [NgTemplateOutlet, SlGlyph, SlIcon, SlMenu, SlMenuSeparator, SlMenuTrigger],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { style: 'display: contents' },\n template: `\n <button\n #trigger\n data-part=\"overflow\"\n type=\"button\"\n [slMenuTriggerFor]=\"surface\"\n [attr.aria-label]=\"name()\"\n >\n <span slIcon><svg slGlyph name=\"ellipsis\"></svg></span>\n </button>\n <sl-menu #surface [align]=\"align()\" [side]=\"side()\" [size]=\"size()\">\n @for (unit of bar.surfaceUnits(); track unit.id) {\n @if (unit.separatorBefore) {\n <hr slMenuSeparator />\n }\n <ng-container *ngTemplateOutlet=\"bar.counterpart(unit.id)!; injector: surfaceInjector()\" />\n }\n </sl-menu>\n `,\n})\nexport class SlActionBarOverflow {\n /** Where the surface sits against the trigger. */\n readonly align = input<MenuAlign | undefined>(undefined);\n readonly side = input<MenuSide | undefined>(undefined);\n /** The surface's own measure, which is `menu`'s axis rather than the bar's. */\n readonly size = input<MenuSize | undefined>(undefined);\n /**\n * The accessible name. Defaults to a count — \"3 more actions\" — because the\n * mark says nothing about how much is behind it.\n */\n readonly label = input<ActionBarOverflowLabel | undefined>(undefined);\n\n protected readonly bar = inject(SlActionBar);\n\n /** A name the consumer wrote on the host survives the counted default. */\n private readonly stated = inject(new HostAttributeToken('aria-label'), { optional: true });\n\n protected readonly name = computed(() => {\n if (this.stated !== null) return this.stated;\n const given = this.label();\n const hidden = this.bar.surfaceUnits().length;\n if (typeof given === 'function') return given(hidden);\n if (given !== undefined) return given;\n return `${hidden} more ${hidden === 1 ? 'action' : 'actions'}`;\n });\n\n private readonly trigger = viewChild.required<ElementRef<HTMLElement>>('trigger');\n private readonly surface = viewChild(SlMenu);\n private readonly injector = inject(Injector);\n\n /**\n * `null` until the view exists, which is also while the surface holds nothing\n * and the outlet renders nothing.\n */\n protected readonly surfaceInjector = computed(() => {\n const menu = this.surface();\n if (menu === undefined) return null;\n return Injector.create({\n parent: this.injector,\n providers: [{ provide: SlMenu, useValue: menu }],\n });\n });\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n\n afterNextRender(() => {\n const element = this.trigger().nativeElement;\n\n /**\n * `slMenuTriggerFor` binds `[attr.data-part]` and resolves it to `null`\n * for a trigger that is neither a bar's item nor a submenu's, and a host\n * binding of `null` removes the attribute the author wrote. The part is\n * therefore written back after the first change detection, where nothing\n * writes over it again: the expression is a constant, so Angular applies\n * it once. `docs/build-briefing.md` records the rule; `toolbar` is where\n * it was learnt.\n */\n element.setAttribute('data-part', 'overflow');\n\n /* The bar measures the control, so it has to hold it. */\n this.bar.registerTrigger(element);\n });\n destroyRef.onDestroy(() => this.bar.registerTrigger(null));\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-action-bar.mjs","sources":["../../action-bar/src/action-bar-defaults.ts","../../action-bar/src/action-bar.ts","../../action-bar/src/action-bar-overflow.ts","../../action-bar/src/slotted-angular-action-bar.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\n\n/** Whether the bar paints a ground and a rule of its own. */\nexport type ActionBarVariant = 'plain' | 'raised';\n\n/** The step the bar's own inset, gap and separator sit at. */\nexport type ActionBarSize = 'sm' | 'md' | 'lg';\n\n/** Where the run of actions sits in the room left after the status. */\nexport type ActionBarAlign = 'end' | 'start' | 'center';\n\n/**\n * Where an action stands in the order of giving way.\n *\n * The five are adapted from `sap.m.OverflowToolbarPriority`, and they exist here\n * and not in `toolbar` because the two bars read in opposite directions. In a\n * bar of tools the first control is the most used, so giving way from the end\n * gives up the least used one. In a bar of actions the action that confirms is\n * at the **end** of the line, so giving way from the end would give up Save\n * first.\n *\n * - `pinned` never gives way.\n * - `high` gives way after `low` and `hide`, into the surface.\n * - `low` is the first rank to reach the surface, and the default for an action\n * that declares a counterpart.\n * - `hide` gives way before every other rank and is **not** offered in the\n * surface: a control that is not worth a row in a menu.\n * - `always` is never drawn in the bar; its counterpart is in the surface from\n * the start.\n */\nexport type ActionBarPriority = 'pinned' | 'high' | 'low' | 'hide' | 'always';\n\nexport interface ActionBarDefaults {\n align: ActionBarAlign;\n size: ActionBarSize;\n sticky: boolean;\n variant: ActionBarVariant;\n}\n\nconst FALLBACK: ActionBarDefaults = {\n align: 'end',\n size: 'md',\n sticky: false,\n variant: 'plain',\n};\n\nexport const ACTION_BAR_DEFAULTS = new InjectionToken<ActionBarDefaults>(\n 'slotted action bar defaults',\n { providedIn: 'root', factory: () => FALLBACK },\n);\n\n/**\n * An application decides once how its action bars are drawn — a product whose\n * bars are all raised, compact and stuck to the bottom of the page says so in\n * one place rather than on every bar. A bar that states any of them itself\n * still wins.\n */\nexport function provideActionBarDefaults(defaults: Partial<ActionBarDefaults>) {\n return {\n provide: ACTION_BAR_DEFAULTS,\n useFactory: (): ActionBarDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\n/** What a bar renders as here, before it states anything of its own. */\nexport function injectActionBarDefaults(): ActionBarDefaults {\n return inject(ACTION_BAR_DEFAULTS);\n}\n","import { createCollapse } from '@slotted/core/overflow';\nimport type { CollapseHandle } from '@slotted/core/overflow';\nimport { createPresence } from '@slotted/core/presence';\nimport type { PresenceStatus } from '@slotted/core/presence';\nimport {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n HostAttributeToken,\n inject,\n input,\n output,\n signal,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { BUTTON_DEFAULTS_TOKEN } from '@slotted/angular/button';\nimport type { ButtonDefaults } from '@slotted/angular/button';\n\nimport { injectActionBarDefaults } from './action-bar-defaults';\nimport type {\n ActionBarAlign,\n ActionBarPriority,\n ActionBarSize,\n ActionBarVariant,\n} from './action-bar-defaults';\n\nexport type {\n ActionBarAlign,\n ActionBarDefaults,\n ActionBarPriority,\n ActionBarSize,\n ActionBarVariant,\n} from './action-bar-defaults';\n\n/**\n * The accessible name of the control that holds what did not fit. A string is\n * used verbatim; a function is given the number of actions behind the control,\n * because three dots say nothing about how much is behind them.\n */\nexport type ActionBarOverflowLabel = string | ((hidden: number) => string);\n\n/** One action the surface holds, in the order the bar holds it. */\nexport interface ActionBarSurfaceUnit {\n readonly id: string;\n readonly separatorBefore: boolean;\n}\n\n/** The attribute that says an action has somewhere to go. */\nexport const ACTION_BAR_UNIT_ATTRIBUTE = 'data-unit';\n\n/** The attribute the measurement reads a rank from. */\nexport const ACTION_BAR_PRIORITY_ATTRIBUTE = 'data-priority';\n\n/**\n * The custom property the stacking query raises, read back by the measurement.\n *\n * The breakpoint is literal because `@container (width < var(--x))` is invalid,\n * and it is written once — in the stylesheet. The binding asks CSS what it\n * decided rather than comparing widths of its own, so the layout and the\n * measurement cannot disagree about where the bar becomes a column.\n */\nexport const ACTION_BAR_STACK_PROPERTY = '--_stacked';\n\n/**\n * Where each rank stands in the order of giving way: the lowest goes first, and\n * position decides inside one rank.\n */\nexport const ACTION_BAR_RANK: Readonly<Record<ActionBarPriority, number>> = Object.freeze({\n always: 0,\n hide: 0,\n high: 2,\n low: 1,\n pinned: 0,\n});\n\nfunction priorityOf(unit: HTMLElement): ActionBarPriority {\n return (unit.getAttribute(ACTION_BAR_PRIORITY_ATTRIBUTE) as ActionBarPriority | null) ?? 'pinned';\n}\n\n/**\n * Everything the run lays out.\n *\n * The trigger is not one of them — a control that took part in its own\n * measurement would be counted twice, and the Angular trigger sits inside a\n * `display: contents` host of its own — and neither is an `always` action, which\n * is never in the bar to give way.\n */\nfunction unitsOf(container: HTMLElement) {\n return [...container.children].filter(\n (child): child is HTMLElement =>\n child instanceof HTMLElement &&\n child.getAttribute('data-part') !== 'overflow' &&\n child.querySelector('[data-part=\"overflow\"]') === null &&\n child.getAttribute(ACTION_BAR_PRIORITY_ATTRIBUTE) !== 'always',\n );\n}\n\n/**\n * Whether one of the bar's own rules sits between two units that are both in the\n * surface. It is read from the DOM because a separator is a sibling of the units\n * it divides and nothing in the component tree relates them.\n */\nfunction ruleBetween(from: Element, to: Element) {\n for (\n let node = from.nextElementSibling;\n node !== null && node !== to;\n node = node.nextElementSibling\n ) {\n if (node.getAttribute('data-part') === 'separator') return true;\n }\n return false;\n}\n\n/**\n * The one axis the bar hands down to the buttons inside it, through the button\n * family's own defaults token rather than through a second channel of this\n * family's invention. That is what keeps an explicit `size` on a button winning\n * over the bar, because it is the rule `button` already implements.\n *\n * The value is read through a getter so that a button's `computed` tracks the\n * bar's signal: a plain snapshot would fix the step at the moment the first\n * button was created and never move again.\n */\nfunction provideBarStep() {\n return {\n provide: BUTTON_DEFAULTS_TOKEN,\n useFactory: (): ButtonDefaults => {\n const bar = inject(SlActionBar);\n const inherited = inject(BUTTON_DEFAULTS_TOKEN, { skipSelf: true });\n\n return {\n ...inherited,\n get size() {\n return bar.resolvedSize();\n },\n };\n },\n };\n}\n\n/**\n * The actions that finish a task on a page or in a panel.\n *\n * **It is not a composite.** `Tab` reaches every action, in the order the author\n * wrote them, and the arrows are not bound. The controls here are the page's own\n * form actions, and a reader walking a form expects to arrive at Cancel and then\n * at Save; roving focus would make the whole bar one tab stop and put Save\n * behind an arrow key that announces nothing. A strip of ten icon buttons is a\n * `toolbar`, and that family binds the arrows against the APG.\n *\n * **What gives way is decided by rank, not by position**, which is the whole of\n * why this family stands beside `toolbar` rather than configuring it.\n *\n * **The action that confirms does not move.** The run carries an `auto` margin\n * against the bar's end edge, so a message appearing in the status, a button\n * going busy and a permission filter removing a control all move what is\n * *before* the last action and never the last action itself.\n */\n@Component({\n selector: '[slActionBar]',\n standalone: true,\n exportAs: 'slActionBar',\n template: '<ng-content />',\n styleUrl: '../../../styles/src/action-bar/action-bar.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [provideBarStep()],\n host: {\n 'data-ui': 'action-bar',\n 'data-ui-action-bar': '',\n 'data-part': 'root',\n 'data-part-root': '',\n '[attr.role]': 'role()',\n '[attr.data-variant]': 'resolvedVariant()',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-align]': 'resolvedAlign()',\n '[attr.data-sticky]': 'resolvedSticky() ? \"\" : null',\n '[attr.data-collapsed]': 'collapsedCount()',\n '[attr.data-status]': 'presenceAttribute()',\n '[style.display]': 'mounted() ? null : \"none\"',\n },\n})\nexport class SlActionBar {\n readonly variant = input<ActionBarVariant | undefined>(undefined);\n readonly size = input<ActionBarSize | undefined>(undefined);\n readonly align = input<ActionBarAlign | undefined>(undefined);\n readonly sticky = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (state) => (state === undefined ? undefined : booleanAttribute(state)),\n });\n /**\n * Whether the bar belongs on screen at all. A bulk bar exists while there is a\n * selection and a contextual save bar while there are unsaved changes.\n *\n * It is an input rather than a two-way value: the bar never asks to appear or\n * to leave, so there is nothing to cancel.\n */\n readonly present = input<boolean, boolean | string | undefined>(true, {\n transform: (state) => (state === undefined ? true : booleanAttribute(state)),\n });\n\n /**\n * Reports how many actions gave way, once per change. The collapsed set is a\n * measurement rather than a value, so there is no two-way binding over it.\n */\n readonly overflowChange = output<number>();\n\n private readonly defaults = injectActionBarDefaults();\n private readonly element = inject(ElementRef<HTMLElement>).nativeElement;\n\n /**\n * A consumer who has ten icon-only actions and wants the composite may write\n * `role=\"toolbar\"` themselves, and what they wrote survives the host binding.\n * The arrows are still not bound, so that consumer wants `toolbar`.\n */\n private readonly statedRole = inject(new HostAttributeToken('role'), { optional: true });\n\n private readonly counterparts = signal(new Map<string, TemplateRef<unknown>>());\n private readonly trigger = signal<HTMLElement | null>(null);\n private readonly actions = signal<HTMLElement | null>(null);\n private readonly stacked = signal(false);\n private readonly ready = signal(false);\n private collapse: CollapseHandle | null = null;\n\n /** What the surface holds: the collapsed actions and every `always` one. */\n readonly surfaceUnits = signal<readonly ActionBarSurfaceUnit[]>([]);\n\n readonly resolvedVariant = computed(() => this.variant() ?? this.defaults.variant);\n readonly resolvedSize = computed(() => this.size() ?? this.defaults.size);\n readonly resolvedAlign = computed(() => this.align() ?? this.defaults.align);\n readonly resolvedSticky = computed(() => this.sticky() ?? this.defaults.sticky);\n\n protected readonly role = computed(() => this.statedRole ?? 'group');\n\n private readonly status = signal<PresenceStatus>('open');\n protected readonly mounted = computed(() => this.status() !== 'unmounted');\n protected readonly presenceAttribute = computed(() => {\n const status = this.status();\n return status === 'open' || status === 'unmounted' ? null : status;\n });\n\n protected readonly collapsedCount = computed(() =>\n this.trigger() === null ? null : String(this.surfaceUnits().length),\n );\n\n /** Records what an action becomes in the surface. */\n registerUnit(id: string, template: TemplateRef<unknown>) {\n this.counterparts.update((held) => new Map(held).set(id, template));\n }\n\n releaseUnit(id: string) {\n this.counterparts.update((held) => {\n const next = new Map(held);\n next.delete(id);\n return next;\n });\n }\n\n counterpart(id: string) {\n return this.counterparts().get(id) ?? null;\n }\n\n /** The control that opens what did not fit. The bar measures it. */\n registerTrigger(element: HTMLElement | null) {\n this.trigger.set(element);\n }\n\n /** The run, which is the box the collapse measures rather than the root. */\n registerActions(element: HTMLElement | null) {\n this.actions.set(element);\n }\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n\n /**\n * The bar is held through its exit, so a bulk bar slides out rather than\n * vanishing. Carbon keeps its batch bar mounted and writes `aria-hidden` on\n * the root instead, which leaves the buttons inside reachable by `Tab`.\n */\n const presence = createPresence({\n present: true,\n skipInitialAnimation: true,\n onStatusChange: (next) => this.status.set(next),\n });\n presence.setNode(this.element);\n destroyRef.onDestroy(() => presence.destroy());\n\n effect(() => presence.sync(this.present()));\n\n afterNextRender(() => this.ready.set(true));\n\n /**\n * Whether the bar is drawn as a column. The number lives in the stylesheet's\n * container query, and this asks CSS what it decided rather than comparing\n * widths against a copy of it.\n */\n effect((onCleanup) => {\n const container = this.actions();\n if (container === null || !this.ready()) return;\n\n const read = () => {\n const view = container.ownerDocument?.defaultView;\n const raised =\n view?.getComputedStyle(container).getPropertyValue(ACTION_BAR_STACK_PROPERTY).trim() ===\n '1';\n if (this.stacked() !== raised) this.stacked.set(raised);\n };\n\n read();\n if (typeof ResizeObserver === 'undefined') return;\n const observer = new ResizeObserver(read);\n observer.observe(container);\n onCleanup(() => observer.disconnect());\n });\n\n /**\n * The collapse. It does not run while the bar is a column: a column has room\n * for every action, and a surface holding what did not fit would be a menu\n * for nothing. Leaving the effect destroys the handle, which reveals every\n * unit it had hidden.\n */\n effect((onCleanup) => {\n const container = this.actions();\n const trigger = this.trigger();\n if (container === null || !this.ready() || this.stacked()) return;\n\n const sync = (collapsedUnits: readonly HTMLElement[]) => {\n const collapsed = new Set(collapsedUnits);\n const held = [...container.children].filter(\n (child): child is HTMLElement =>\n child instanceof HTMLElement &&\n child.hasAttribute(ACTION_BAR_UNIT_ATTRIBUTE) &&\n (collapsed.has(child) ||\n child.getAttribute(ACTION_BAR_PRIORITY_ATTRIBUTE) === 'always'),\n );\n\n this.surfaceUnits.set(\n held.map((unit, index) => {\n const previous = held[index - 1];\n return {\n id: unit.getAttribute(ACTION_BAR_UNIT_ATTRIBUTE) ?? '',\n separatorBefore: previous !== undefined && ruleBetween(previous, unit),\n };\n }),\n );\n };\n\n const handle: CollapseHandle = createCollapse(container, {\n /* A pinned action has nowhere to go. Every other rank does, and `hide`'s\n somewhere is nowhere — it gives way and is not offered in the\n surface. */\n collapsible: (unit) => priorityOf(unit) !== 'pinned',\n divides: (unit) => unit.getAttribute('data-part') === 'separator',\n onChange: (units) => {\n sync(units);\n this.overflowChange.emit(\n units.filter((unit) => unit.hasAttribute(ACTION_BAR_UNIT_ATTRIBUTE)).length,\n );\n },\n rank: (unit) => ACTION_BAR_RANK[priorityOf(unit)],\n trigger: () => trigger,\n /* An `always` action is in the surface while every other one still fits,\n and a control that hid itself then would be a menu nobody can open. */\n triggerAlways: () =>\n container.querySelector(`[${ACTION_BAR_PRIORITY_ATTRIBUTE}='always']`) !== null,\n units: () => unitsOf(container),\n });\n\n this.collapse = handle;\n sync(handle.collapsed());\n\n /**\n * An action arriving or leaving invalidates the measurement — a bar that\n * grows a button collapses one — and an `always` action arriving changes\n * what the surface holds without changing what collapsed.\n */\n const observer = new MutationObserver(() => {\n handle.refresh();\n sync(handle.collapsed());\n });\n observer.observe(container, { childList: true, subtree: true });\n\n onCleanup(() => {\n observer.disconnect();\n handle.destroy();\n this.collapse = null;\n this.surfaceUnits.set([]);\n });\n });\n }\n\n /** Measures again, after the consumer changed something the DOM cannot report. */\n refresh() {\n this.collapse?.refresh();\n }\n}\n\n/**\n * The sentence at the start of the bar: a dirty-state marker, a timestamp, the\n * count of what is selected and the control that selects the rest.\n *\n * It is a slot rather than a component: the library already has\n * `inline-message`, `status-indicator` and `badge`, and `table` already owns the\n * selection and its count.\n */\n@Directive({\n selector: '[slActionBarStatus]',\n standalone: true,\n exportAs: 'slActionBarStatus',\n host: { 'data-part': 'status', 'data-part-status': '' },\n})\nexport class SlActionBarStatus {}\n\n/**\n * The run of actions, and the box the collapse measures.\n *\n * It is the run rather than the root, because the root is the query container\n * and a container is a container for its descendants and not for itself — so the\n * rule that turns the run into a column has to reach a descendant.\n */\n@Directive({\n selector: '[slActionBarActions]',\n standalone: true,\n exportAs: 'slActionBarActions',\n host: { 'data-part': 'actions', 'data-part-actions': '' },\n})\nexport class SlActionBarActions {\n private readonly bar = inject(SlActionBar);\n\n constructor() {\n const element = inject(ElementRef<HTMLElement>).nativeElement;\n this.bar.registerActions(element);\n inject(DestroyRef).onDestroy(() => this.bar.registerActions(null));\n }\n}\n\n/**\n * One action the bar may give up, its rank, and what it becomes when it goes.\n *\n * The rank and the counterpart are one fact seen from two sides. A control with\n * nothing to become in the surface is pinned — it has nowhere to go, which is\n * why the action that confirms stays visible — and a rank that needs somewhere\n * to go and has nowhere behaves as pinned too, so a consumer error leaves the\n * control on the bar rather than hiding it silently.\n */\n@Directive({\n selector: '[slActionBarAction]',\n standalone: true,\n exportAs: 'slActionBarAction',\n host: {\n 'data-part': 'action',\n 'data-part-action': '',\n '[attr.data-unit]': 'unitId()',\n '[attr.data-priority]': 'resolvedPriority()',\n '[attr.hidden]': 'resolvedPriority() === \"always\" ? \"\" : null',\n },\n})\nexport class SlActionBarAction {\n /**\n * What the action becomes in the surface when the bar has no room for it.\n *\n * It is deliberately not called `overflow`: that word names what a container\n * does with more content than it has room for, and one term with two meanings\n * is the ambiguity the contract exists to prevent.\n */\n readonly counterpart = input<TemplateRef<unknown> | undefined>(undefined, {\n alias: 'slActionBarActionCounterpart',\n });\n\n /**\n * Where this action stands in the order of giving way.\n *\n * It is the selector's own value, so the terse form reads as the sentence it\n * is — `slActionBarAction=\"high\"`. A bare `slActionBarAction` hands the\n * directive an empty string, which is the attribute being present rather than\n * a rank, and the transform reads it as unstated.\n */\n readonly priority = input<ActionBarPriority | undefined, ActionBarPriority | '' | undefined>(\n undefined,\n { alias: 'slActionBarAction', transform: (rank) => (rank === '' ? undefined : rank) },\n );\n\n private readonly bar = inject(SlActionBar, { optional: true });\n private readonly identity = `slotted-action-bar-unit-${(unitCount += 1)}`;\n\n protected readonly unitId = computed(() =>\n this.counterpart() === undefined ? null : this.identity,\n );\n\n readonly resolvedPriority = computed<ActionBarPriority>(() => {\n const stated = this.priority();\n const declared = this.counterpart() !== undefined;\n if (stated === undefined) return declared ? 'low' : 'pinned';\n if (stated === 'hide' || stated === 'pinned') return stated;\n return declared ? stated : 'pinned';\n });\n\n constructor() {\n const bar = this.bar;\n effect(() => {\n const template = this.counterpart();\n if (bar === null) return;\n if (template === undefined) bar.releaseUnit(this.identity);\n else bar.registerUnit(this.identity, template);\n });\n\n inject(DestroyRef).onDestroy(() => bar?.releaseUnit(this.identity));\n }\n}\n\nlet unitCount = 0;\n\n/**\n * A hairline between two runs of actions.\n *\n * It is the answer to the one line of `docs/component-features.md` §5 that names\n * no mechanism: a destructive action does not sit flush against a frequent one.\n * It is a part of this family rather than a `divider` because its geometry\n * belongs to the bar.\n */\n@Directive({\n selector: '[slActionBarSeparator]',\n standalone: true,\n exportAs: 'slActionBarSeparator',\n host: {\n 'data-part': 'separator',\n 'data-part-separator': '',\n role: 'separator',\n 'aria-orientation': 'vertical',\n },\n})\nexport class SlActionBarSeparator {}\n","import { writeSelectorKey } from '@slotted/core/selector-key';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n HostAttributeToken,\n inject,\n Injector,\n input,\n ViewEncapsulation,\n viewChild,\n} from '@angular/core';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport { SlMenu, SlMenuSeparator, SlMenuTrigger } from '@slotted/angular/menu';\nimport type { MenuAlign, MenuSide, MenuSize } from '@slotted/angular/menu';\n\nimport { SlActionBar } from './action-bar';\nimport type { ActionBarOverflowLabel } from './action-bar';\n\n/**\n * The control that opens what did not fit, and the surface holding it.\n *\n * It is `menu`'s own trigger and surface wearing this family's geometry, so the\n * keyboard, the dismissal and the focus return are `menu`'s and are not written\n * twice. What this family adds is the measurement: the bar decides which actions\n * give way, **by rank**, and the counterparts they declared are rendered here in\n * the order the bar holds them — with a separator wherever one of the bar's own\n * rules sits between two of them.\n *\n * The surface also holds every action ranked `always`, which was never drawn in\n * the bar at all. A reader opening the menu sees one list, so the two sources\n * are read together and in the bar's own order.\n *\n * The counterpart is an `ng-template` rendered through `NgTemplateOutlet` only\n * while its action is in the surface, so a menu item that is never reached\n * builds nothing. That is where the two bindings differ most, and it is idiom\n * rather than asymmetry: React's `ReactNode` is built with the element that\n * declares it, which is React's own answer and its own cost.\n *\n * **A template resolves its dependencies where it was written, not where it is\n * rendered.** The counterpart is authored beside the control it replaces, which\n * is outside the surface, so `slMenuItem` would look for the `SlMenu` above the\n * bar and find none. The outlet is therefore given an injector that provides the\n * surface this component draws.\n *\n * The host is `display: contents`, so the `button` below is a child of the run\n * itself: the part that carries the geometry has to be the box the bar lays out.\n *\n * **The `hidden` attribute on the trigger belongs to the bar.** `createCollapse`\n * writes it, because the same measurement that decides whether the control is\n * needed is the one that has to reveal it to read its width.\n */\n@Component({\n selector: 'sl-action-bar-overflow',\n standalone: true,\n exportAs: 'slActionBarOverflow',\n imports: [NgTemplateOutlet, SlGlyph, SlIcon, SlMenu, SlMenuSeparator, SlMenuTrigger],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { style: 'display: contents' },\n template: `\n <button\n #trigger\n data-part=\"overflow\"\n data-part-overflow=\"\"\n type=\"button\"\n [slMenuTriggerFor]=\"surface\"\n [attr.aria-label]=\"name()\"\n >\n <span slIcon><svg slGlyph name=\"ellipsis\"></svg></span>\n </button>\n <sl-menu #surface [align]=\"align()\" [side]=\"side()\" [size]=\"size()\">\n @for (unit of bar.surfaceUnits(); track unit.id) {\n @if (unit.separatorBefore) {\n <hr slMenuSeparator />\n }\n <ng-container *ngTemplateOutlet=\"bar.counterpart(unit.id)!; injector: surfaceInjector()\" />\n }\n </sl-menu>\n `,\n})\nexport class SlActionBarOverflow {\n /** Where the surface sits against the trigger. */\n readonly align = input<MenuAlign | undefined>(undefined);\n readonly side = input<MenuSide | undefined>(undefined);\n /** The surface's own measure, which is `menu`'s axis rather than the bar's. */\n readonly size = input<MenuSize | undefined>(undefined);\n /**\n * The accessible name. Defaults to a count — \"3 more actions\" — because the\n * mark says nothing about how much is behind it.\n */\n readonly label = input<ActionBarOverflowLabel | undefined>(undefined);\n\n protected readonly bar = inject(SlActionBar);\n\n /** A name the consumer wrote on the host survives the counted default. */\n private readonly stated = inject(new HostAttributeToken('aria-label'), { optional: true });\n\n protected readonly name = computed(() => {\n if (this.stated !== null) return this.stated;\n const given = this.label();\n const hidden = this.bar.surfaceUnits().length;\n if (typeof given === 'function') return given(hidden);\n if (given !== undefined) return given;\n return `${hidden} more ${hidden === 1 ? 'action' : 'actions'}`;\n });\n\n private readonly trigger = viewChild.required<ElementRef<HTMLElement>>('trigger');\n private readonly surface = viewChild(SlMenu);\n private readonly injector = inject(Injector);\n\n /**\n * `null` until the view exists, which is also while the surface holds nothing\n * and the outlet renders nothing.\n */\n protected readonly surfaceInjector = computed(() => {\n const menu = this.surface();\n if (menu === undefined) return null;\n return Injector.create({\n parent: this.injector,\n providers: [{ provide: SlMenu, useValue: menu }],\n });\n });\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n\n afterNextRender(() => {\n const element = this.trigger().nativeElement;\n\n /**\n * `slMenuTriggerFor` binds `[attr.data-part]` and resolves it to `null`\n * for a trigger that is neither a bar's item nor a submenu's, and a host\n * binding of `null` removes the attribute the author wrote. The part is\n * therefore written back after the first change detection, where nothing\n * writes over it again: the expression is a constant, so Angular applies\n * it once. `docs/build-briefing.md` records the rule; `toolbar` is where\n * it was learnt.\n */\n writeSelectorKey(element, 'part', 'overflow');\n\n /* The bar measures the control, so it has to hold it. */\n this.bar.registerTrigger(element);\n });\n destroyRef.onDestroy(() => this.bar.registerTrigger(null));\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|