@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-tag.mjs","sources":["../../tag/src/tag-defaults.ts","../../tag/src/tag-group.ts","../../tag/src/tag.ts","../../tag/src/tag-body.ts","../../tag/src/tag-content.ts","../../tag/src/tag-remove.ts","../../tag/src/tag-toggle.ts","../../tag/src/slotted-angular-tag.ts"],"sourcesContent":["import { inject, Injectable, InjectionToken } from '@angular/core';\n\n/** Which of the five semantic colours the tag speaks in. */\nexport type TagTone = 'accent' | 'secondary' | 'success' | 'warning' | 'danger';\n\n/** How that colour is painted. `soft` is the tinted chip a tag usually is. */\nexport type TagVariant = 'solid' | 'soft' | 'outline';\n\nexport type TagSize = 'sm' | 'md' | 'lg';\n\nexport type TagShape = 'pill' | 'square';\n\nexport type TagOrientation = 'horizontal' | 'vertical';\n\nexport interface TagDefaults {\n shape: TagShape;\n size: TagSize;\n tone: TagTone;\n variant: TagVariant;\n}\n\nconst FALLBACK: TagDefaults = {\n shape: 'pill',\n size: 'md',\n tone: 'secondary',\n variant: 'soft',\n};\n\nexport const TAG_DEFAULTS = new InjectionToken<TagDefaults>('slotted tag defaults', {\n providedIn: 'root',\n factory: () => FALLBACK,\n});\n\n/**\n * An application decides once how its tags are painted and how large they are,\n * rather than repeating four inputs on every chip in a filter bar. A tag that\n * states any of them itself still wins: an explicit input is never overridden\n * by the token. The remove control's word comes from the language in force\n * (`provideSlotted`).\n */\nexport function provideTagDefaults(defaults: Partial<TagDefaults>) {\n return {\n provide: TAG_DEFAULTS,\n useFactory: (): TagDefaults => ({\n shape: defaults.shape ?? FALLBACK.shape,\n size: defaults.size ?? FALLBACK.size,\n tone: defaults.tone ?? FALLBACK.tone,\n variant: defaults.variant ?? FALLBACK.variant,\n }),\n };\n}\n\n/** What a tag renders as here, before it states anything of its own. */\nexport function injectTagDefaults(): TagDefaults {\n return inject(TAG_DEFAULTS);\n}\n\n/**\n * Application-scoped rather than module-scoped, for the reason the field\n * primitive records: a module-level counter produces colliding sequences when\n * two applications render in one server process, and the server and the client\n * sequences must match for hydration.\n */\n@Injectable({ providedIn: 'root' })\nexport class SlTagIdFactory {\n private count = 0;\n\n next() {\n this.count += 1;\n return `slotted-tag-${this.count}`;\n }\n}\n","import { createRemovalFocus, createRovingTabindex } from '@slotted/core/focus';\nimport type { RemovalFocusHandle, RovingTabindexHandle } from '@slotted/core/focus';\nimport {\n afterNextRender,\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n ElementRef,\n HostAttributeToken,\n inject,\n input,\n} from '@angular/core';\n\nimport type { TagOrientation } from './tag-defaults';\n\n/**\n * Every control the keyboard moves between, in the order the DOM holds them: a\n * chip's own control, then its remove control, then the next chip's. Read\n * literally from the APG Toolbar pattern, which needs no second axis to reach\n * a control inside an item.\n */\nconst CONTROL_SELECTOR = '[data-part=\"body\"]:is(a, button), [data-part=\"remove\"]';\n\n/**\n * The run of tags, and the keyboard that belongs to it.\n *\n * It is a toolbar: the APG pattern for \"a container for grouping a set of\n * controls, such as buttons\". One tab stop, arrow keys between the controls\n * inside it, `Home` and `End` at the ends. React Aria and Angular Material\n * reach for the Grid pattern instead, which buys a second axis at the price of\n * two wrapper elements per chip and a `gridcell` role over every button; a\n * single wrapping run does not need the second axis.\n *\n * Writing `role=\"list\"` on the element turns the keyboard off and makes every\n * chip a `listitem`. A list is a structure rather than a widget, its items are\n * not controls to move between, and a screen reader announces its length.\n */\n@Directive({\n selector: '[slTagGroup]',\n standalone: true,\n exportAs: 'slTagGroup',\n host: {\n 'data-ui': 'tag',\n 'data-part': 'group',\n tabindex: '-1',\n '[attr.data-orientation]': 'orientation()',\n '[attr.role]': 'role()',\n '[attr.aria-orientation]': 'ariaOrientation()',\n },\n})\nexport class SlTagGroup {\n /** Which way the run reads. `vertical` also writes `aria-orientation`. */\n readonly orientation = input<TagOrientation>('horizontal');\n /** Whether the arrow keys wrap past the ends of the run. */\n readonly loop = input(true, { transform: booleanAttribute });\n\n private readonly element = inject(ElementRef<HTMLElement>).nativeElement;\n private readonly writtenRole = inject(new HostAttributeToken('role'), { optional: true });\n\n protected readonly role = computed(() => this.writtenRole ?? 'toolbar');\n private readonly roving = computed(() => this.role() === 'toolbar');\n protected readonly ariaOrientation = computed(() =>\n /* `horizontal` is the toolbar role's own default, so only the other one is\n written; a list has no orientation to state. */\n this.roving() && this.orientation() === 'vertical' ? 'vertical' : null,\n );\n\n /** What a chip inside this run calls itself. A toolbar's items are its controls. */\n readonly itemRole = computed(() => (this.role() === 'list' ? 'listitem' : undefined));\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n\n afterNextRender(() => {\n if (!this.roving()) return;\n\n const tabindex: RovingTabindexHandle = createRovingTabindex(this.element, {\n itemSelector: CONTROL_SELECTOR,\n loop: this.loop(),\n orientation: () => this.orientation(),\n });\n /**\n * Where the keyboard goes when the chip it was on is taken away. The\n * container is the last resort, which is why it holds `tabindex=\"-1\"`: a\n * group emptied by its final removal keeps focus rather than returning\n * it to the top of the page.\n */\n const removal: RemovalFocusHandle = createRemovalFocus(this.element, {\n itemSelector: CONTROL_SELECTOR,\n });\n /**\n * The tab stop has to survive a chip arriving or leaving, and neither\n * binding can be told by the other's change detection. The DOM is the\n * one thing both of them agree on.\n */\n const observer = new MutationObserver(() => tabindex.refresh());\n observer.observe(this.element, { childList: true, subtree: true });\n\n destroyRef.onDestroy(() => {\n observer.disconnect();\n removal.destroy();\n tabindex.destroy();\n });\n });\n }\n}\n","import { tagMessages, type PartialMessages, type TagMessages } from '@slotted/core/i18n';\nimport type { ChangeReason } from '@slotted/core/state';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n HostAttributeToken,\n inject,\n input,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { injectMessages } from '@slotted/angular/i18n';\n\nimport { injectTagDefaults, SlTagIdFactory } from './tag-defaults';\nimport type { TagShape, TagSize, TagTone, TagVariant } from './tag-defaults';\nimport { SlTagGroup } from './tag-group';\n\nexport type { TagOrientation, TagShape, TagSize, TagTone, TagVariant } from './tag-defaults';\n\n/**\n * How the removal was asked for. `remove` is the control at the end of the\n * chip; `keyboard` is `Backspace` or `Delete` pressed on it.\n */\nexport type TagRemoveReason = Extract<ChangeReason, 'remove' | 'keyboard'>;\n\n/**\n * A request to be taken out of the collection that holds the tag, and never a\n * value: the tag does not own whether it exists. Refusing it is what stops the\n * group from moving focus, which is the one thing the family would otherwise\n * commit on its own.\n */\nexport interface TagRemoveRequest {\n readonly reason: TagRemoveReason;\n readonly source: Event;\n readonly cancelled: boolean;\n cancel(): void;\n}\n\n/**\n * The chip box: an entity, a filter or a compact value. It is not metadata —\n * that is `badge`, and the two share this tone and this type scale on purpose.\n *\n * **The root is never the interactive element.** A `button` cannot contain a\n * `button` and an `a` cannot contain either, so a chip that both acts and\n * removes has to put its two controls side by side. The chip is written on the\n * consumer's own `span`; what the chip *is* is decided by the element under\n * `slTagBody`: a `span` does nothing, a `button` runs a command, an `a`\n * navigates, and `slTagToggle` holds a selection. The element is the member,\n * which is what keeps `routerLink`, `type` and every native attribute on the\n * element that owns them.\n */\n@Component({\n selector: '[slTag]',\n standalone: true,\n exportAs: 'slTag',\n template: '<ng-content></ng-content>',\n styleUrl: '../../../styles/src/tag/tag.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'tag',\n 'data-part': 'root',\n '[attr.data-tone]': 'resolvedTone()',\n '[attr.data-variant]': 'resolvedVariant()',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-shape]': 'resolvedShape()',\n '[attr.data-disabled]': \"disabled() ? '' : null\",\n '[attr.data-selected]': \"selected() ? '' : null\",\n '[attr.role]': 'role()',\n '(keydown)': 'onKeydown($event)',\n },\n})\nexport class SlTag {\n /** Defaults to the provider, then to `secondary`. */\n readonly tone = input<TagTone | undefined>(undefined);\n /** Defaults to the provider, then to `soft`. */\n readonly variant = input<TagVariant | undefined>(undefined);\n /** Defaults to the provider, then to `md`. */\n readonly size = input<TagSize | undefined>(undefined);\n /** Defaults to the provider, then to `pill`. */\n readonly shape = input<TagShape | undefined>(undefined);\n /** Refuses every interaction the tag offers, including its removal. */\n readonly disabled = input(false, { transform: booleanAttribute });\n /**\n * Whether the chip can be removed at all. React reads the same fact from\n * whether a handler was passed; Angular cannot see whether an output was\n * subscribed, so the opt-in is stated — the asymmetry `button` recorded for\n * its own toggle.\n */\n readonly removable = input(false, { transform: booleanAttribute });\n /** Refuses the removal while the rest of the tag stays operable. */\n readonly removeDisabled = input(false, { transform: booleanAttribute });\n /**\n * Words laid over the catalog of the language in force, key by key: `remove`\n * is the word the remove control announces before the tag's own label, so it\n * reads \"Remove Design\" rather than \"Remove\".\n */\n readonly messages = input<PartialMessages<TagMessages> | undefined>(undefined);\n\n /** One output for one transition, carrying the reason, the event and `cancel()`. */\n readonly remove = output<TagRemoveRequest>();\n\n private readonly defaults = injectTagDefaults();\n private readonly group = inject(SlTagGroup, { optional: true, skipSelf: true });\n /** An explicit role the consumer wrote is never replaced by an inferred one. */\n private readonly writtenRole = inject(new HostAttributeToken('role'), { optional: true });\n\n /**\n * One identifier for the chip, from which the label's and the hidden word's\n * are derived. Deriving beats registering: the remove control needs the\n * label's id before the body has had a chance to announce one.\n */\n readonly id = inject(SlTagIdFactory).next();\n readonly labelId = `${this.id}-label`;\n readonly removeWordId = `${this.id}-remove`;\n\n /** Set by `slTagToggle`, which is the one member that holds a selection. */\n private readonly selectedState = signal(false);\n\n protected readonly resolvedTone = computed(() => this.tone() ?? this.defaults.tone);\n protected readonly resolvedVariant = computed(() => this.variant() ?? this.defaults.variant);\n protected readonly resolvedSize = computed(() => this.size() ?? this.defaults.size);\n protected readonly resolvedShape = computed(() => this.shape() ?? this.defaults.shape);\n protected readonly role = computed(() => this.writtenRole ?? this.group?.itemRole() ?? null);\n\n readonly selected = computed(() => this.selectedState());\n /** The family's words in the language in force, with this tag's `messages` laid over them. */\n readonly t = injectMessages(tagMessages, this.messages);\n readonly removeRefused = computed(() => this.disabled() || this.removeDisabled());\n\n /** Called by the toggle, which owns the value and only reports it here. */\n setSelected(selected: boolean) {\n this.selectedState.set(selected);\n }\n\n /**\n * The request the remove control and the keyboard both make. Nothing is\n * committed here: the tag does not own whether it exists, and a consumer\n * that refuses the request leaves the chip and the keyboard where they were.\n */\n requestRemoval(reason: TagRemoveReason, source: Event) {\n if (!this.removable() || this.removeRefused()) return;\n\n let cancelled = false;\n this.remove.emit({\n reason,\n source,\n get cancelled() {\n return cancelled;\n },\n cancel() {\n cancelled = true;\n },\n });\n }\n\n /**\n * `Backspace` and `Delete` on a removable chip, which is the shortcut MUI,\n * Primer, React Aria and Angular Material all ship. It is bound to the chip\n * box rather than to either control, so it answers wherever focus is inside\n * the chip, and a consumer's own handler runs first and can refuse it by\n * calling `preventDefault`.\n *\n * A held key repeats, and a repeat would remove the chip focus has just\n * landed on. The default is prevented because `Backspace` still navigates\n * back in some browsers when nothing is being edited.\n */\n protected onKeydown(event: KeyboardEvent) {\n if (event.repeat || event.defaultPrevented) return;\n if (event.key !== 'Backspace' && event.key !== 'Delete') return;\n if (!this.removable() || this.removeRefused()) return;\n\n event.preventDefault();\n this.requestRemoval('keyboard', event);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n ElementRef,\n inject,\n Renderer2,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { SlTag } from './tag';\n\n/**\n * The template every content box shares. The words get a box of their own — it\n * is what `text-box` needs to trim the line to the cap and the baseline, what\n * `text-overflow` needs to clip a long value, and what `aria-labelledby` on\n * the remove control points at so it announces the value rather than the word\n * \"Remove\" on its own.\n *\n * Every space between these tags is load-bearing: Angular collapses a newline\n * between two nodes into a space, and a space beside the label box would put a\n * word gap inside the chip that the family's own `gap` is already drawing.\n */\nexport const TAG_BODY_TEMPLATE =\n '<ng-content select=\"[slTagStart]\"></ng-content>' +\n '<span data-part=\"label\" [id]=\"tag.labelId\"><ng-content></ng-content></span>' +\n '<ng-content select=\"[slTagEnd]\"></ng-content>';\n\n/**\n * The content box, and the primary target when there is one. It is written on\n * the element the chip *is*: a `span` that does nothing, a `button` that runs\n * a command, an `a` that navigates. The element is the member, which is what\n * keeps `routerLink`, `type`, `download` and every native listener on the\n * element that owns them.\n *\n * `disabled` belongs to the chip rather than to this element, because a chip\n * is unavailable as a whole. What that means depends on the element, and the\n * platform only offers one of the two forms per element.\n */\n@Component({\n selector: '[slTagBody]',\n standalone: true,\n exportAs: 'slTagBody',\n template: TAG_BODY_TEMPLATE,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-part': 'body',\n '[attr.disabled]': 'nativelyDisabled()',\n '[attr.aria-disabled]': 'ariaDisabled()',\n '[attr.role]': 'anchorRole()',\n },\n})\nexport class SlTagBody {\n protected readonly tag = inject(SlTag);\n\n private readonly element = inject(ElementRef<HTMLElement>).nativeElement;\n private readonly renderer = inject(Renderer2);\n private readonly isButton = this.element.tagName === 'BUTTON';\n private readonly isAnchor = this.element.tagName === 'A';\n\n protected readonly nativelyDisabled = computed(() =>\n this.isButton && this.tag.disabled() ? '' : null,\n );\n protected readonly ariaDisabled = computed(() =>\n this.isAnchor && this.tag.disabled() ? 'true' : null,\n );\n /** An anchor without a destination is no longer a link, so it says it is one. */\n protected readonly anchorRole = computed(() =>\n this.isAnchor && this.tag.disabled() ? 'link' : null,\n );\n\n /**\n * A disabled anchor keeps its place in the tab sequence and loses its\n * destination, which is the line `link` draws for the same case: an anchor\n * without an `href` would drop out of the tab sequence and take its own\n * explanation with it. The attribute is withheld rather than overwritten, so\n * it is given back the moment the chip becomes available again.\n */\n private withheldHref: string | null = null;\n\n constructor() {\n if (this.isAnchor) {\n effect(() => {\n if (this.tag.disabled()) {\n this.withheldHref ??= this.element.getAttribute('href');\n this.renderer.removeAttribute(this.element, 'href');\n this.renderer.setAttribute(this.element, 'tabindex', '0');\n return;\n }\n if (this.withheldHref !== null) {\n this.renderer.setAttribute(this.element, 'href', this.withheldHref);\n this.withheldHref = null;\n }\n });\n }\n\n /**\n * The capture phase, because a control that is unavailable must refuse the\n * activation before any listener the consumer attached to it can run. A\n * natively disabled button needs none of this; an anchor and a `span` with\n * a listener on it do.\n */\n if (!this.isButton) {\n const destroyRef = inject(DestroyRef);\n const refuse = (event: Event) => {\n if (!this.tag.disabled()) return;\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n };\n for (const type of ['click', 'auxclick', 'keydown']) {\n this.element.addEventListener(type, refuse, { capture: true });\n destroyRef.onDestroy(() =>\n this.element.removeEventListener(type, refuse, { capture: true }),\n );\n }\n }\n }\n}\n","import { Directive } from '@angular/core';\n\n/**\n * A glyph or an avatar before the words. The artwork is the consumer's, and\n * the part gives it a box that is sized and centred; the directive is written\n * on the element the page already has, so nothing is wrapped.\n */\n@Directive({\n selector: '[slTagStart]',\n standalone: true,\n exportAs: 'slTagStart',\n host: { 'data-part': 'start' },\n})\nexport class SlTagStart {}\n\n/** A glyph after the words. */\n@Directive({\n selector: '[slTagEnd]',\n standalone: true,\n exportAs: 'slTagEnd',\n host: { 'data-part': 'end' },\n})\nexport class SlTagEnd {}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n ViewEncapsulation,\n} from '@angular/core';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\n\nimport { SlTag } from './tag';\n\n/**\n * The control at the end of the chip, on the consumer's own button so its\n * listeners and its attributes stay theirs. The glyph is the family's `x`,\n * drawn as the `Glyph` element unless the consumer wrote content of their own:\n * a character is never an icon.\n *\n * Its name is composed rather than repeated. The hidden word and the tag's own\n * label are joined by `aria-labelledby`, so it announces \"Remove Design\"\n * without the consumer writing the value a second time — the string four of\n * the surveyed implementations make the consumer keep in step with the value\n * by hand. Text referenced by `aria-labelledby` counts even when the element\n * holding it is hidden, which is what lets the word cost no space.\n */\n@Component({\n selector: 'button[slTagRemove]',\n standalone: true,\n exportAs: 'slTagRemove',\n imports: [SlGlyph, SlIcon],\n template: `<ng-content\n ><span slIcon><svg slGlyph name=\"x\"></svg></span></ng-content\n ><span hidden [id]=\"tag.removeWordId\">{{ tag.t('remove') }}</span>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-part': 'remove',\n type: 'button',\n '[attr.aria-labelledby]': 'labelledBy()',\n '[attr.disabled]': \"tag.removeRefused() ? '' : null\",\n '(click)': 'onClick($event)',\n },\n})\nexport class SlTagRemove {\n protected readonly tag = inject(SlTag);\n\n protected readonly labelledBy = computed(() => `${this.tag.removeWordId} ${this.tag.labelId}`);\n\n protected onClick(event: MouseEvent) {\n /* The X is its own target. A handler the consumer put on the chip is about\n the chip, and a removal is not a press of it. */\n event.stopPropagation();\n this.tag.requestRemoval('remove', event);\n }\n}\n","import { createControllable } from '@slotted/core/state';\nimport type { ChangeReason, ChangeRequest } from '@slotted/core/state';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport type { Signal, WritableSignal } from '@angular/core';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\n\nimport { SlTag } from './tag';\nimport { TAG_BODY_TEMPLATE } from './tag-body';\n\n/**\n * A native button fires the same `click` for a pointer, for Space and for\n * Enter, which is why the family uses one — and why the reason a selection\n * moved has to be recovered from the event. A click synthesised by the\n * keyboard reports no detail; a real one reports the click count.\n */\nfunction activationReason(event: Event): ChangeReason {\n return event instanceof MouseEvent && event.detail === 0 ? 'keyboard' : 'pointer';\n}\n\n/**\n * The controlled and uncontrolled pair, decided by whether the consumer passed\n * a value. `@slotted/core/state` owns that decision so the two bindings cannot\n * disagree about who holds the value; the signal below is only where an\n * uncontrolled chip keeps its own.\n */\nclass SelectionState {\n private readonly own: WritableSignal<boolean | undefined> = signal(undefined);\n\n constructor(\n private readonly source: {\n selected: Signal<boolean | undefined>;\n defaultSelected: Signal<boolean>;\n emit: (request: ChangeRequest<boolean>) => void;\n },\n ) {}\n\n readonly value = () => this.source.selected() ?? this.own() ?? this.source.defaultSelected();\n\n request(event: Event) {\n const next = !this.value();\n const state = createControllable<boolean>({\n controlled: this.source.selected(),\n initial: this.value(),\n onRequest: (request) => this.source.emit(request),\n });\n\n if (state.request(next, activationReason(event), event)) this.own.set(next);\n }\n}\n\n/**\n * A chip that holds a selection: a filter that is on, a facet that is chosen.\n * Carbon calls it a selectable tag, Ant a checkable tag, Fluent a selected\n * tag — and none of them ships the uncontrolled half, so a filter bar cannot\n * be written without a piece of application state for every chip in it.\n *\n * It announces `aria-pressed` rather than `aria-selected`, which is a\n * deliberate departure with a cost: `aria-selected` is only valid inside a\n * `listbox`, a `grid` or a `tree`, and an `option` may not contain the remove\n * control this family puts beside the label. The family keeps `selected` as\n * its own word and writes `data-selected` for styling.\n *\n * The label never changes with the state — the APG's rule for a toggle — so\n * \"Aberto\" stays \"Aberto\" and the state is announced beside it.\n */\n@Component({\n selector: 'button[slTagToggle]',\n standalone: true,\n exportAs: 'slTagToggle',\n imports: [SlGlyph, SlIcon],\n /* The selection mark's check, which the sheet uncovers when the chip is on. */\n template: `<span aria-hidden=\"true\" data-part=\"indicator\"\n ><span slIcon><svg slGlyph name=\"check\"></svg></span></span\n >${TAG_BODY_TEMPLATE}`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-part': 'body',\n type: 'button',\n '[attr.aria-pressed]': 'isSelected()',\n '[attr.disabled]': \"tag.disabled() ? '' : null\",\n '(click)': 'onClick($event)',\n },\n})\nexport class SlTagToggle {\n /** Present means controlled, for the life of the component. */\n readonly selected = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly defaultSelected = input(false, { transform: booleanAttribute });\n /**\n * One output for one transition, carrying the value, the value it replaces,\n * the reason, the originating event and `cancel()`. There is no\n * `[(selected)]` because a two-way binding has one slot and cannot carry any\n * of those, and a second output for the same transition would be the same\n * failure stated twice.\n */\n readonly selectedChange = output<ChangeRequest<boolean>>();\n\n protected readonly tag = inject(SlTag);\n\n private readonly state = new SelectionState({\n selected: this.selected,\n defaultSelected: this.defaultSelected,\n emit: (request) => this.selectedChange.emit(request),\n });\n\n protected readonly isSelected = computed(() => this.state.value());\n\n constructor() {\n /* The chip box paints the selection; the control owns it. */\n effect(() => this.tag.setSelected(this.isSelected()));\n }\n\n protected onClick(event: MouseEvent) {\n if (this.tag.disabled()) return;\n /* A consumer that calls preventDefault has refused the activation, and a\n refused activation moves nothing. */\n if (event.defaultPrevented) return;\n this.state.request(event);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;AAqBA,MAAM,QAAQ,GAAgB;AAC5B,IAAA,KAAK,EAAE,MAAM;AACb,IAAA,IAAI,EAAE,IAAI;AACV,IAAA,IAAI,EAAE,WAAW;AACjB,IAAA,OAAO,EAAE,MAAM;CAChB;MAEY,YAAY,GAAG,IAAI,cAAc,CAAc,sBAAsB,EAAE;AAClF,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE,MAAM,QAAQ;AACxB,CAAA;AAED;;;;;;AAMG;AACG,SAAU,kBAAkB,CAAC,QAA8B,EAAA;IAC/D,OAAO;AACL,QAAA,OAAO,EAAE,YAAY;AACrB,QAAA,UAAU,EAAE,OAAoB;AAC9B,YAAA,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK;AACvC,YAAA,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI;AACpC,YAAA,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI;AACpC,YAAA,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO;SAC9C,CAAC;KACH;AACH;AAEA;SACgB,iBAAiB,GAAA;AAC/B,IAAA,OAAO,MAAM,CAAC,YAAY,CAAC;AAC7B;AAEA;;;;;AAKG;MAEU,cAAc,CAAA;IACjB,KAAK,GAAG,CAAC;IAEjB,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,KAAK,IAAI,CAAC;AACf,QAAA,OAAO,CAAA,YAAA,EAAe,IAAI,CAAC,KAAK,EAAE;IACpC;uGANW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAd,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cADD,MAAM,EAAA,CAAA;;2FACnB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;AC/ClC;;;;;AAKG;AACH,MAAM,gBAAgB,GAAG,wDAAwD;AAEjF;;;;;;;;;;;;;AAaG;MAcU,UAAU,CAAA;;IAEZ,WAAW,GAAG,KAAK,CAAiB,YAAY;oFAAC;;IAEjD,IAAI,GAAG,KAAK,CAAC,IAAI,4EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IAE3C,OAAO,GAAG,MAAM,EAAC,UAAuB,EAAC,CAAC,aAAa;AACvD,IAAA,WAAW,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAEtE,IAAI,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,IAAI,SAAS;6EAAC;IACtD,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,KAAK,SAAS;+EAAC;AAChD,IAAA,eAAe,GAAG,QAAQ,CAAC;AAC5C;AACkD;AAClD,IAAA,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,UAAU,GAAG,UAAU,GAAG,IAAI;wFACvE;;IAGQ,QAAQ,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;iFAAC;AAErF,IAAA,WAAA,GAAA;AACE,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QAErC,eAAe,CAAC,MAAK;AACnB,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAAE;AAEpB,YAAA,MAAM,QAAQ,GAAyB,oBAAoB,CAAC,IAAI,CAAC,OAAO,EAAE;AACxE,gBAAA,YAAY,EAAE,gBAAgB;AAC9B,gBAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AACjB,gBAAA,WAAW,EAAE,MAAM,IAAI,CAAC,WAAW,EAAE;AACtC,aAAA,CAAC;AACF;;;;;AAKG;AACH,YAAA,MAAM,OAAO,GAAuB,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE;AACnE,gBAAA,YAAY,EAAE,gBAAgB;AAC/B,aAAA,CAAC;AACF;;;;AAIG;AACH,YAAA,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;AAC/D,YAAA,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAElE,YAAA,UAAU,CAAC,SAAS,CAAC,MAAK;gBACxB,QAAQ,CAAC,UAAU,EAAE;gBACrB,OAAO,CAAC,OAAO,EAAE;gBACjB,QAAQ,CAAC,OAAO,EAAE;AACpB,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;uGAtDW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAV,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,KAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,WAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBAbtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,KAAK;AAChB,wBAAA,WAAW,EAAE,OAAO;AACpB,wBAAA,QAAQ,EAAE,IAAI;AACd,wBAAA,yBAAyB,EAAE,eAAe;AAC1C,wBAAA,aAAa,EAAE,QAAQ;AACvB,wBAAA,yBAAyB,EAAE,mBAAmB;AAC/C,qBAAA;AACF,iBAAA;;;ACTD;;;;;;;;;;;;AAYG;MAsBU,KAAK,CAAA;;IAEP,IAAI,GAAG,KAAK,CAAsB,SAAS;6EAAC;;IAE5C,OAAO,GAAG,KAAK,CAAyB,SAAS;gFAAC;;IAElD,IAAI,GAAG,KAAK,CAAsB,SAAS;6EAAC;;IAE5C,KAAK,GAAG,KAAK,CAAuB,SAAS;8EAAC;;IAE9C,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACjE;;;;;AAKG;IACM,SAAS,GAAG,KAAK,CAAC,KAAK,iFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;IAEzD,cAAc,GAAG,KAAK,CAAC,KAAK,sFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACvE;;;;AAIG;IACM,QAAQ,GAAG,KAAK,CAA2C,SAAS;iFAAC;;IAGrE,MAAM,GAAG,MAAM,EAAoB;IAE3B,QAAQ,GAAG,iBAAiB,EAAE;AAC9B,IAAA,KAAK,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;AAE9D,IAAA,WAAW,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAEzF;;;;AAIG;IACM,EAAE,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,EAAE;AAClC,IAAA,OAAO,GAAG,CAAA,EAAG,IAAI,CAAC,EAAE,QAAQ;AAC5B,IAAA,YAAY,GAAG,CAAA,EAAG,IAAI,CAAC,EAAE,SAAS;;IAG1B,aAAa,GAAG,MAAM,CAAC,KAAK;sFAAC;AAE3B,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI;qFAAC;AAChE,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO;wFAAC;AACzE,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI;qFAAC;AAChE,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK;sFAAC;AACnE,IAAA,IAAI,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,IAAI;6EAAC;IAEnF,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE;iFAAC;;IAE/C,CAAC,GAAG,cAAc,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC;AAC9C,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE;sFAAC;;AAGjF,IAAA,WAAW,CAAC,QAAiB,EAAA;AAC3B,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClC;AAEA;;;;AAIG;IACH,cAAc,CAAC,MAAuB,EAAE,MAAa,EAAA;QACnD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE;YAAE;QAE/C,IAAI,SAAS,GAAG,KAAK;AACrB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YACf,MAAM;YACN,MAAM;AACN,YAAA,IAAI,SAAS,GAAA;AACX,gBAAA,OAAO,SAAS;YAClB,CAAC;YACD,MAAM,GAAA;gBACJ,SAAS,GAAG,IAAI;YAClB,CAAC;AACF,SAAA,CAAC;IACJ;AAEA;;;;;;;;;;AAUG;AACO,IAAA,SAAS,CAAC,KAAoB,EAAA;AACtC,QAAA,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,gBAAgB;YAAE;QAC5C,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ;YAAE;QACzD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE;YAAE;QAE/C,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,KAAK,CAAC;IACxC;uGAtGW,KAAK,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAL,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAK,2gDAjBN,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,kgZAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAiB1B,KAAK,EAAA,UAAA,EAAA,CAAA;kBArBjB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,EAAA,UAAA,EACP,IAAI,EAAA,QAAA,EACN,OAAO,YACP,2BAA2B,EAAA,eAAA,EAEpB,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACJ,wBAAA,SAAS,EAAE,KAAK;AAChB,wBAAA,WAAW,EAAE,MAAM;AACnB,wBAAA,kBAAkB,EAAE,gBAAgB;AACpC,wBAAA,qBAAqB,EAAE,mBAAmB;AAC1C,wBAAA,kBAAkB,EAAE,gBAAgB;AACpC,wBAAA,mBAAmB,EAAE,iBAAiB;AACtC,wBAAA,sBAAsB,EAAE,wBAAwB;AAChD,wBAAA,sBAAsB,EAAE,wBAAwB;AAChD,wBAAA,aAAa,EAAE,QAAQ;AACvB,wBAAA,WAAW,EAAE,mBAAmB;AACjC,qBAAA,EAAA,MAAA,EAAA,CAAA,kgZAAA,CAAA,EAAA;;;AC3DH;;;;;;;;;;AAUG;AACI,MAAM,iBAAiB,GAC5B,iDAAiD;IACjD,6EAA6E;AAC7E,IAAA,+CAA+C;AAEjD;;;;;;;;;;AAUG;MAeU,SAAS,CAAA;AACD,IAAA,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC;IAErB,OAAO,GAAG,MAAM,EAAC,UAAuB,EAAC,CAAC,aAAa;AACvD,IAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;IAC5B,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,QAAQ;IAC5C,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,GAAG;IAErC,gBAAgB,GAAG,QAAQ,CAAC,MAC7C,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,IAAI;yFACjD;IACkB,YAAY,GAAG,QAAQ,CAAC,MACzC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,MAAM,GAAG,IAAI;qFACrD;;IAEkB,UAAU,GAAG,QAAQ,CAAC,MACvC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,MAAM,GAAG,IAAI;mFACrD;AAED;;;;;;AAMG;IACK,YAAY,GAAkB,IAAI;AAE1C,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,MAAM,CAAC,MAAK;AACV,gBAAA,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE;oBACvB,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC;oBACvD,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;AACnD,oBAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,CAAC;oBACzD;gBACF;AACA,gBAAA,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE;AAC9B,oBAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC;AACnE,oBAAA,IAAI,CAAC,YAAY,GAAG,IAAI;gBAC1B;AACF,YAAA,CAAC,CAAC;QACJ;AAEA;;;;;AAKG;AACH,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AACrC,YAAA,MAAM,MAAM,GAAG,CAAC,KAAY,KAAI;AAC9B,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE;oBAAE;gBAC1B,KAAK,CAAC,cAAc,EAAE;gBACtB,KAAK,CAAC,eAAe,EAAE;gBACvB,KAAK,CAAC,wBAAwB,EAAE;AAClC,YAAA,CAAC;YACD,KAAK,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE;AACnD,gBAAA,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBAC9D,UAAU,CAAC,SAAS,CAAC,MACnB,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAClE;YACH;QACF;IACF;uGAjEW,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAT,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,iLAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAAT,SAAS,EAAA,UAAA,EAAA,CAAA;kBAdrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,QAAQ,EAAE,iBAAiB;oBAC3B,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,IAAI,EAAE;AACJ,wBAAA,WAAW,EAAE,MAAM;AACnB,wBAAA,iBAAiB,EAAE,oBAAoB;AACvC,wBAAA,sBAAsB,EAAE,gBAAgB;AACxC,wBAAA,aAAa,EAAE,cAAc;AAC9B,qBAAA;AACF,iBAAA;;;ACpDD;;;;AAIG;MAOU,UAAU,CAAA;uGAAV,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAV,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,OAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBANtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,IAAI,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE;AAC/B,iBAAA;;AAGD;MAOa,QAAQ,CAAA;uGAAR,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAR,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,KAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAR,QAAQ,EAAA,UAAA,EAAA,CAAA;kBANpB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,IAAI,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE;AAC7B,iBAAA;;;ACVD;;;;;;;;;;;;AAYG;MAmBU,WAAW,CAAA;AACH,IAAA,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC;AAEnB,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAA,CAAA,EAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAA,CAAE;mFAAC;AAEpF,IAAA,OAAO,CAAC,KAAiB,EAAA;AACjC;AACmD;QACnD,KAAK,CAAC,eAAe,EAAE;QACvB,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC;IAC1C;uGAVW,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iCAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAbZ,CAAA;;uEAE2D,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAH3D,OAAO,oFAAE,MAAM,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAcd,WAAW,EAAA,UAAA,EAAA,CAAA;kBAlBvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;AAC1B,oBAAA,QAAQ,EAAE,CAAA;;AAE2D,sEAAA,CAAA;oBACrE,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,IAAI,EAAE;AACJ,wBAAA,WAAW,EAAE,QAAQ;AACrB,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,wBAAwB,EAAE,cAAc;AACxC,wBAAA,iBAAiB,EAAE,iCAAiC;AACpD,wBAAA,SAAS,EAAE,iBAAiB;AAC7B,qBAAA;AACF,iBAAA;;;ACrBD;;;;;AAKG;AACH,SAAS,gBAAgB,CAAC,KAAY,EAAA;AACpC,IAAA,OAAO,KAAK,YAAY,UAAU,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,GAAG,UAAU,GAAG,SAAS;AACnF;AAEA;;;;;AAKG;AACH,MAAM,cAAc,CAAA;AAIC,IAAA,MAAA;IAHF,GAAG,GAAwC,MAAM,CAAC,SAAS;4EAAC;AAE7E,IAAA,WAAA,CACmB,MAIhB,EAAA;QAJgB,IAAA,CAAA,MAAM,GAAN,MAAM;IAKtB;IAEM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE;AAE5F,IAAA,OAAO,CAAC,KAAY,EAAA;AAClB,QAAA,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE;QAC1B,MAAM,KAAK,GAAG,kBAAkB,CAAU;AACxC,YAAA,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;AAClC,YAAA,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE;AACrB,YAAA,SAAS,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;AAClD,SAAA,CAAC;AAEF,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,gBAAgB,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;AAAE,YAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;IAC7E;AACD;AAED;;;;;;;;;;;;;;AAcG;MAoBU,WAAW,CAAA;;AAEb,IAAA,QAAQ,GAAG,KAAK,CAAoD,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,CAAA,EACpF,SAAS,EAAE,CAAC,KAAK,MAAM,KAAK,KAAK,SAAS,GAAG,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,GACjF;IACO,eAAe,GAAG,KAAK,CAAC,KAAK,uFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACxE;;;;;;AAMG;IACM,cAAc,GAAG,MAAM,EAA0B;AAEvC,IAAA,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC;IAErB,KAAK,GAAG,IAAI,cAAc,CAAC;QAC1C,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,eAAe,EAAE,IAAI,CAAC,eAAe;AACrC,QAAA,IAAI,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;AACrD,KAAA,CAAC;IAEiB,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;mFAAC;AAElE,IAAA,WAAA,GAAA;;AAEE,QAAA,MAAM,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IACvD;AAEU,IAAA,OAAO,CAAC,KAAiB,EAAA;AACjC,QAAA,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE;YAAE;AACzB;AACuC;QACvC,IAAI,KAAK,CAAC,gBAAgB;YAAE;AAC5B,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;IAC3B;uGApCW,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,4BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,+SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAfZ,OAAO,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,MAAM,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAed,WAAW,EAAA,UAAA,EAAA,CAAA;kBAnBvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;;AAE1B,oBAAA,QAAQ,EAAE,CAAA;;AAEL,KAAA,EAAA,iBAAiB,CAAA,CAAE;oBACxB,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,IAAI,EAAE;AACJ,wBAAA,WAAW,EAAE,MAAM;AACnB,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,qBAAqB,EAAE,cAAc;AACrC,wBAAA,iBAAiB,EAAE,4BAA4B;AAC/C,wBAAA,SAAS,EAAE,iBAAiB;AAC7B,qBAAA;AACF,iBAAA;;;AC9FD;;AAEG;;"}
|
|
1
|
+
{"version":3,"file":"slotted-angular-tag.mjs","sources":["../../tag/src/tag-defaults.ts","../../tag/src/tag-group.ts","../../tag/src/tag.ts","../../tag/src/tag-body.ts","../../tag/src/tag-content.ts","../../tag/src/tag-remove.ts","../../tag/src/tag-toggle.ts","../../tag/src/slotted-angular-tag.ts"],"sourcesContent":["import { inject, Injectable, InjectionToken } from '@angular/core';\n\n/** Which of the five semantic colours the tag speaks in. */\nexport type TagTone = 'accent' | 'secondary' | 'success' | 'warning' | 'danger';\n\n/** How that colour is painted. `soft` is the tinted chip a tag usually is. */\nexport type TagVariant = 'solid' | 'soft' | 'outline';\n\nexport type TagSize = 'sm' | 'md' | 'lg';\n\nexport type TagShape = 'pill' | 'square';\n\nexport type TagOrientation = 'horizontal' | 'vertical';\n\nexport interface TagDefaults {\n shape: TagShape;\n size: TagSize;\n tone: TagTone;\n variant: TagVariant;\n}\n\nconst FALLBACK: TagDefaults = {\n shape: 'pill',\n size: 'md',\n tone: 'secondary',\n variant: 'soft',\n};\n\nexport const TAG_DEFAULTS = new InjectionToken<TagDefaults>('slotted tag defaults', {\n providedIn: 'root',\n factory: () => FALLBACK,\n});\n\n/**\n * An application decides once how its tags are painted and how large they are,\n * rather than repeating four inputs on every chip in a filter bar. A tag that\n * states any of them itself still wins: an explicit input is never overridden\n * by the token. The remove control's word comes from the language in force\n * (`provideSlotted`).\n */\nexport function provideTagDefaults(defaults: Partial<TagDefaults>) {\n return {\n provide: TAG_DEFAULTS,\n useFactory: (): TagDefaults => ({\n shape: defaults.shape ?? FALLBACK.shape,\n size: defaults.size ?? FALLBACK.size,\n tone: defaults.tone ?? FALLBACK.tone,\n variant: defaults.variant ?? FALLBACK.variant,\n }),\n };\n}\n\n/** What a tag renders as here, before it states anything of its own. */\nexport function injectTagDefaults(): TagDefaults {\n return inject(TAG_DEFAULTS);\n}\n\n/**\n * Application-scoped rather than module-scoped, for the reason the field\n * primitive records: a module-level counter produces colliding sequences when\n * two applications render in one server process, and the server and the client\n * sequences must match for hydration.\n */\n@Injectable({ providedIn: 'root' })\nexport class SlTagIdFactory {\n private count = 0;\n\n next() {\n this.count += 1;\n return `slotted-tag-${this.count}`;\n }\n}\n","import { createRemovalFocus, createRovingTabindex } from '@slotted/core/focus';\nimport type { RemovalFocusHandle, RovingTabindexHandle } from '@slotted/core/focus';\nimport {\n afterNextRender,\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n ElementRef,\n HostAttributeToken,\n inject,\n input,\n} from '@angular/core';\n\nimport type { TagOrientation } from './tag-defaults';\n\n/**\n * Every control the keyboard moves between, in the order the DOM holds them: a\n * chip's own control, then its remove control, then the next chip's. Read\n * literally from the APG Toolbar pattern, which needs no second axis to reach\n * a control inside an item.\n */\nconst CONTROL_SELECTOR = '[data-part=\"body\"]:is(a, button), [data-part=\"remove\"]';\n\n/**\n * The run of tags, and the keyboard that belongs to it.\n *\n * It is a toolbar: the APG pattern for \"a container for grouping a set of\n * controls, such as buttons\". One tab stop, arrow keys between the controls\n * inside it, `Home` and `End` at the ends. React Aria and Angular Material\n * reach for the Grid pattern instead, which buys a second axis at the price of\n * two wrapper elements per chip and a `gridcell` role over every button; a\n * single wrapping run does not need the second axis.\n *\n * Writing `role=\"list\"` on the element turns the keyboard off and makes every\n * chip a `listitem`. A list is a structure rather than a widget, its items are\n * not controls to move between, and a screen reader announces its length.\n */\n@Directive({\n selector: '[slTagGroup]',\n standalone: true,\n exportAs: 'slTagGroup',\n host: {\n 'data-ui': 'tag',\n 'data-ui-tag': '',\n 'data-part': 'group',\n 'data-part-group': '',\n tabindex: '-1',\n '[attr.data-orientation]': 'orientation()',\n '[attr.role]': 'role()',\n '[attr.aria-orientation]': 'ariaOrientation()',\n },\n})\nexport class SlTagGroup {\n /** Which way the run reads. `vertical` also writes `aria-orientation`. */\n readonly orientation = input<TagOrientation>('horizontal');\n /** Whether the arrow keys wrap past the ends of the run. */\n readonly loop = input(true, { transform: booleanAttribute });\n\n private readonly element = inject(ElementRef<HTMLElement>).nativeElement;\n private readonly writtenRole = inject(new HostAttributeToken('role'), { optional: true });\n\n protected readonly role = computed(() => this.writtenRole ?? 'toolbar');\n private readonly roving = computed(() => this.role() === 'toolbar');\n protected readonly ariaOrientation = computed(() =>\n /* `horizontal` is the toolbar role's own default, so only the other one is\n written; a list has no orientation to state. */\n this.roving() && this.orientation() === 'vertical' ? 'vertical' : null,\n );\n\n /** What a chip inside this run calls itself. A toolbar's items are its controls. */\n readonly itemRole = computed(() => (this.role() === 'list' ? 'listitem' : undefined));\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n\n afterNextRender(() => {\n if (!this.roving()) return;\n\n const tabindex: RovingTabindexHandle = createRovingTabindex(this.element, {\n itemSelector: CONTROL_SELECTOR,\n loop: this.loop(),\n orientation: () => this.orientation(),\n });\n /**\n * Where the keyboard goes when the chip it was on is taken away. The\n * container is the last resort, which is why it holds `tabindex=\"-1\"`: a\n * group emptied by its final removal keeps focus rather than returning\n * it to the top of the page.\n */\n const removal: RemovalFocusHandle = createRemovalFocus(this.element, {\n itemSelector: CONTROL_SELECTOR,\n });\n /**\n * The tab stop has to survive a chip arriving or leaving, and neither\n * binding can be told by the other's change detection. The DOM is the\n * one thing both of them agree on.\n */\n const observer = new MutationObserver(() => tabindex.refresh());\n observer.observe(this.element, { childList: true, subtree: true });\n\n destroyRef.onDestroy(() => {\n observer.disconnect();\n removal.destroy();\n tabindex.destroy();\n });\n });\n }\n}\n","import { tagMessages, type PartialMessages, type TagMessages } from '@slotted/core/i18n';\nimport type { ChangeReason } from '@slotted/core/state';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n HostAttributeToken,\n inject,\n input,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { injectMessages } from '@slotted/angular/i18n';\n\nimport { injectTagDefaults, SlTagIdFactory } from './tag-defaults';\nimport type { TagShape, TagSize, TagTone, TagVariant } from './tag-defaults';\nimport { SlTagGroup } from './tag-group';\n\nexport type { TagOrientation, TagShape, TagSize, TagTone, TagVariant } from './tag-defaults';\n\n/**\n * How the removal was asked for. `remove` is the control at the end of the\n * chip; `keyboard` is `Backspace` or `Delete` pressed on it.\n */\nexport type TagRemoveReason = Extract<ChangeReason, 'remove' | 'keyboard'>;\n\n/**\n * A request to be taken out of the collection that holds the tag, and never a\n * value: the tag does not own whether it exists. Refusing it is what stops the\n * group from moving focus, which is the one thing the family would otherwise\n * commit on its own.\n */\nexport interface TagRemoveRequest {\n readonly reason: TagRemoveReason;\n readonly source: Event;\n readonly cancelled: boolean;\n cancel(): void;\n}\n\n/**\n * The chip box: an entity, a filter or a compact value. It is not metadata —\n * that is `badge`, and the two share this tone and this type scale on purpose.\n *\n * **The root is never the interactive element.** A `button` cannot contain a\n * `button` and an `a` cannot contain either, so a chip that both acts and\n * removes has to put its two controls side by side. The chip is written on the\n * consumer's own `span`; what the chip *is* is decided by the element under\n * `slTagBody`: a `span` does nothing, a `button` runs a command, an `a`\n * navigates, and `slTagToggle` holds a selection. The element is the member,\n * which is what keeps `routerLink`, `type` and every native attribute on the\n * element that owns them.\n */\n@Component({\n selector: '[slTag]',\n standalone: true,\n exportAs: 'slTag',\n template: '<ng-content></ng-content>',\n styleUrl: '../../../styles/src/tag/tag.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'tag',\n 'data-ui-tag': '',\n 'data-part': 'root',\n 'data-part-root': '',\n '[attr.data-tone]': 'resolvedTone()',\n '[attr.data-variant]': 'resolvedVariant()',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-shape]': 'resolvedShape()',\n '[attr.data-disabled]': \"disabled() ? '' : null\",\n '[attr.data-selected]': \"selected() ? '' : null\",\n '[attr.role]': 'role()',\n '(keydown)': 'onKeydown($event)',\n },\n})\nexport class SlTag {\n /** Defaults to the provider, then to `secondary`. */\n readonly tone = input<TagTone | undefined>(undefined);\n /** Defaults to the provider, then to `soft`. */\n readonly variant = input<TagVariant | undefined>(undefined);\n /** Defaults to the provider, then to `md`. */\n readonly size = input<TagSize | undefined>(undefined);\n /** Defaults to the provider, then to `pill`. */\n readonly shape = input<TagShape | undefined>(undefined);\n /** Refuses every interaction the tag offers, including its removal. */\n readonly disabled = input(false, { transform: booleanAttribute });\n /**\n * Whether the chip can be removed at all. React reads the same fact from\n * whether a handler was passed; Angular cannot see whether an output was\n * subscribed, so the opt-in is stated — the asymmetry `button` recorded for\n * its own toggle.\n */\n readonly removable = input(false, { transform: booleanAttribute });\n /** Refuses the removal while the rest of the tag stays operable. */\n readonly removeDisabled = input(false, { transform: booleanAttribute });\n /**\n * Words laid over the catalog of the language in force, key by key: `remove`\n * is the word the remove control announces before the tag's own label, so it\n * reads \"Remove Design\" rather than \"Remove\".\n */\n readonly messages = input<PartialMessages<TagMessages> | undefined>(undefined);\n\n /** One output for one transition, carrying the reason, the event and `cancel()`. */\n readonly remove = output<TagRemoveRequest>();\n\n private readonly defaults = injectTagDefaults();\n private readonly group = inject(SlTagGroup, { optional: true, skipSelf: true });\n /** An explicit role the consumer wrote is never replaced by an inferred one. */\n private readonly writtenRole = inject(new HostAttributeToken('role'), { optional: true });\n\n /**\n * One identifier for the chip, from which the label's and the hidden word's\n * are derived. Deriving beats registering: the remove control needs the\n * label's id before the body has had a chance to announce one.\n */\n readonly id = inject(SlTagIdFactory).next();\n readonly labelId = `${this.id}-label`;\n readonly removeWordId = `${this.id}-remove`;\n\n /** Set by `slTagToggle`, which is the one member that holds a selection. */\n private readonly selectedState = signal(false);\n\n protected readonly resolvedTone = computed(() => this.tone() ?? this.defaults.tone);\n protected readonly resolvedVariant = computed(() => this.variant() ?? this.defaults.variant);\n protected readonly resolvedSize = computed(() => this.size() ?? this.defaults.size);\n protected readonly resolvedShape = computed(() => this.shape() ?? this.defaults.shape);\n protected readonly role = computed(() => this.writtenRole ?? this.group?.itemRole() ?? null);\n\n readonly selected = computed(() => this.selectedState());\n /** The family's words in the language in force, with this tag's `messages` laid over them. */\n readonly t = injectMessages(tagMessages, this.messages);\n readonly removeRefused = computed(() => this.disabled() || this.removeDisabled());\n\n /** Called by the toggle, which owns the value and only reports it here. */\n setSelected(selected: boolean) {\n this.selectedState.set(selected);\n }\n\n /**\n * The request the remove control and the keyboard both make. Nothing is\n * committed here: the tag does not own whether it exists, and a consumer\n * that refuses the request leaves the chip and the keyboard where they were.\n */\n requestRemoval(reason: TagRemoveReason, source: Event) {\n if (!this.removable() || this.removeRefused()) return;\n\n let cancelled = false;\n this.remove.emit({\n reason,\n source,\n get cancelled() {\n return cancelled;\n },\n cancel() {\n cancelled = true;\n },\n });\n }\n\n /**\n * `Backspace` and `Delete` on a removable chip, which is the shortcut MUI,\n * Primer, React Aria and Angular Material all ship. It is bound to the chip\n * box rather than to either control, so it answers wherever focus is inside\n * the chip, and a consumer's own handler runs first and can refuse it by\n * calling `preventDefault`.\n *\n * A held key repeats, and a repeat would remove the chip focus has just\n * landed on. The default is prevented because `Backspace` still navigates\n * back in some browsers when nothing is being edited.\n */\n protected onKeydown(event: KeyboardEvent) {\n if (event.repeat || event.defaultPrevented) return;\n if (event.key !== 'Backspace' && event.key !== 'Delete') return;\n if (!this.removable() || this.removeRefused()) return;\n\n event.preventDefault();\n this.requestRemoval('keyboard', event);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n ElementRef,\n inject,\n Renderer2,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { SlTag } from './tag';\n\n/**\n * The template every content box shares. The words get a box of their own — it\n * is what `text-box` needs to trim the line to the cap and the baseline, what\n * `text-overflow` needs to clip a long value, and what `aria-labelledby` on\n * the remove control points at so it announces the value rather than the word\n * \"Remove\" on its own.\n *\n * Every space between these tags is load-bearing: Angular collapses a newline\n * between two nodes into a space, and a space beside the label box would put a\n * word gap inside the chip that the family's own `gap` is already drawing.\n */\nexport const TAG_BODY_TEMPLATE =\n '<ng-content select=\"[slTagStart]\"></ng-content>' +\n '<span data-part=\"label\" data-part-label=\"\" [id]=\"tag.labelId\"><ng-content></ng-content></span>' +\n '<ng-content select=\"[slTagEnd]\"></ng-content>';\n\n/**\n * The content box, and the primary target when there is one. It is written on\n * the element the chip *is*: a `span` that does nothing, a `button` that runs\n * a command, an `a` that navigates. The element is the member, which is what\n * keeps `routerLink`, `type`, `download` and every native listener on the\n * element that owns them.\n *\n * `disabled` belongs to the chip rather than to this element, because a chip\n * is unavailable as a whole. What that means depends on the element, and the\n * platform only offers one of the two forms per element.\n */\n@Component({\n selector: '[slTagBody]',\n standalone: true,\n exportAs: 'slTagBody',\n template: TAG_BODY_TEMPLATE,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-part': 'body',\n 'data-part-body': '',\n '[attr.disabled]': 'nativelyDisabled()',\n '[attr.aria-disabled]': 'ariaDisabled()',\n '[attr.role]': 'anchorRole()',\n },\n})\nexport class SlTagBody {\n protected readonly tag = inject(SlTag);\n\n private readonly element = inject(ElementRef<HTMLElement>).nativeElement;\n private readonly renderer = inject(Renderer2);\n private readonly isButton = this.element.tagName === 'BUTTON';\n private readonly isAnchor = this.element.tagName === 'A';\n\n protected readonly nativelyDisabled = computed(() =>\n this.isButton && this.tag.disabled() ? '' : null,\n );\n protected readonly ariaDisabled = computed(() =>\n this.isAnchor && this.tag.disabled() ? 'true' : null,\n );\n /** An anchor without a destination is no longer a link, so it says it is one. */\n protected readonly anchorRole = computed(() =>\n this.isAnchor && this.tag.disabled() ? 'link' : null,\n );\n\n /**\n * A disabled anchor keeps its place in the tab sequence and loses its\n * destination, which is the line `link` draws for the same case: an anchor\n * without an `href` would drop out of the tab sequence and take its own\n * explanation with it. The attribute is withheld rather than overwritten, so\n * it is given back the moment the chip becomes available again.\n */\n private withheldHref: string | null = null;\n\n constructor() {\n if (this.isAnchor) {\n effect(() => {\n if (this.tag.disabled()) {\n this.withheldHref ??= this.element.getAttribute('href');\n this.renderer.removeAttribute(this.element, 'href');\n this.renderer.setAttribute(this.element, 'tabindex', '0');\n return;\n }\n if (this.withheldHref !== null) {\n this.renderer.setAttribute(this.element, 'href', this.withheldHref);\n this.withheldHref = null;\n }\n });\n }\n\n /**\n * The capture phase, because a control that is unavailable must refuse the\n * activation before any listener the consumer attached to it can run. A\n * natively disabled button needs none of this; an anchor and a `span` with\n * a listener on it do.\n */\n if (!this.isButton) {\n const destroyRef = inject(DestroyRef);\n const refuse = (event: Event) => {\n if (!this.tag.disabled()) return;\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n };\n for (const type of ['click', 'auxclick', 'keydown']) {\n this.element.addEventListener(type, refuse, { capture: true });\n destroyRef.onDestroy(() =>\n this.element.removeEventListener(type, refuse, { capture: true }),\n );\n }\n }\n }\n}\n","import { Directive } from '@angular/core';\n\n/**\n * A glyph or an avatar before the words. The artwork is the consumer's, and\n * the part gives it a box that is sized and centred; the directive is written\n * on the element the page already has, so nothing is wrapped.\n */\n@Directive({\n selector: '[slTagStart]',\n standalone: true,\n exportAs: 'slTagStart',\n host: { 'data-part': 'start', 'data-part-start': '' },\n})\nexport class SlTagStart {}\n\n/** A glyph after the words. */\n@Directive({\n selector: '[slTagEnd]',\n standalone: true,\n exportAs: 'slTagEnd',\n host: { 'data-part': 'end', 'data-part-end': '' },\n})\nexport class SlTagEnd {}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n ViewEncapsulation,\n} from '@angular/core';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\n\nimport { SlTag } from './tag';\n\n/**\n * The control at the end of the chip, on the consumer's own button so its\n * listeners and its attributes stay theirs. The glyph is the family's `x`,\n * drawn as the `Glyph` element unless the consumer wrote content of their own:\n * a character is never an icon.\n *\n * Its name is composed rather than repeated. The hidden word and the tag's own\n * label are joined by `aria-labelledby`, so it announces \"Remove Design\"\n * without the consumer writing the value a second time — the string four of\n * the surveyed implementations make the consumer keep in step with the value\n * by hand. Text referenced by `aria-labelledby` counts even when the element\n * holding it is hidden, which is what lets the word cost no space.\n */\n@Component({\n selector: 'button[slTagRemove]',\n standalone: true,\n exportAs: 'slTagRemove',\n imports: [SlGlyph, SlIcon],\n template: `<ng-content\n ><span slIcon><svg slGlyph name=\"x\"></svg></span></ng-content\n ><span hidden [id]=\"tag.removeWordId\">{{ tag.t('remove') }}</span>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-part': 'remove',\n 'data-part-remove': '',\n type: 'button',\n '[attr.aria-labelledby]': 'labelledBy()',\n '[attr.disabled]': \"tag.removeRefused() ? '' : null\",\n '(click)': 'onClick($event)',\n },\n})\nexport class SlTagRemove {\n protected readonly tag = inject(SlTag);\n\n protected readonly labelledBy = computed(() => `${this.tag.removeWordId} ${this.tag.labelId}`);\n\n protected onClick(event: MouseEvent) {\n /* The X is its own target. A handler the consumer put on the chip is about\n the chip, and a removal is not a press of it. */\n event.stopPropagation();\n this.tag.requestRemoval('remove', event);\n }\n}\n","import { createControllable } from '@slotted/core/state';\nimport type { ChangeReason, ChangeRequest } from '@slotted/core/state';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport type { Signal, WritableSignal } from '@angular/core';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\n\nimport { SlTag } from './tag';\nimport { TAG_BODY_TEMPLATE } from './tag-body';\n\n/**\n * A native button fires the same `click` for a pointer, for Space and for\n * Enter, which is why the family uses one — and why the reason a selection\n * moved has to be recovered from the event. A click synthesised by the\n * keyboard reports no detail; a real one reports the click count.\n */\nfunction activationReason(event: Event): ChangeReason {\n return event instanceof MouseEvent && event.detail === 0 ? 'keyboard' : 'pointer';\n}\n\n/**\n * The controlled and uncontrolled pair, decided by whether the consumer passed\n * a value. `@slotted/core/state` owns that decision so the two bindings cannot\n * disagree about who holds the value; the signal below is only where an\n * uncontrolled chip keeps its own.\n */\nclass SelectionState {\n private readonly own: WritableSignal<boolean | undefined> = signal(undefined);\n\n constructor(\n private readonly source: {\n selected: Signal<boolean | undefined>;\n defaultSelected: Signal<boolean>;\n emit: (request: ChangeRequest<boolean>) => void;\n },\n ) {}\n\n readonly value = () => this.source.selected() ?? this.own() ?? this.source.defaultSelected();\n\n request(event: Event) {\n const next = !this.value();\n const state = createControllable<boolean>({\n controlled: this.source.selected(),\n initial: this.value(),\n onRequest: (request) => this.source.emit(request),\n });\n\n if (state.request(next, activationReason(event), event)) this.own.set(next);\n }\n}\n\n/**\n * A chip that holds a selection: a filter that is on, a facet that is chosen.\n * Carbon calls it a selectable tag, Ant a checkable tag, Fluent a selected\n * tag — and none of them ships the uncontrolled half, so a filter bar cannot\n * be written without a piece of application state for every chip in it.\n *\n * It announces `aria-pressed` rather than `aria-selected`, which is a\n * deliberate departure with a cost: `aria-selected` is only valid inside a\n * `listbox`, a `grid` or a `tree`, and an `option` may not contain the remove\n * control this family puts beside the label. The family keeps `selected` as\n * its own word and writes `data-selected` for styling.\n *\n * The label never changes with the state — the APG's rule for a toggle — so\n * \"Aberto\" stays \"Aberto\" and the state is announced beside it.\n */\n@Component({\n selector: 'button[slTagToggle]',\n standalone: true,\n exportAs: 'slTagToggle',\n imports: [SlGlyph, SlIcon],\n /* The selection mark's check, which the sheet uncovers when the chip is on. */\n template: `<span aria-hidden=\"true\" data-part=\"indicator\" data-part-indicator=\"\"\n ><span slIcon><svg slGlyph name=\"check\"></svg></span></span\n >${TAG_BODY_TEMPLATE}`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-part': 'body',\n 'data-part-body': '',\n type: 'button',\n '[attr.aria-pressed]': 'isSelected()',\n '[attr.disabled]': \"tag.disabled() ? '' : null\",\n '(click)': 'onClick($event)',\n },\n})\nexport class SlTagToggle {\n /** Present means controlled, for the life of the component. */\n readonly selected = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly defaultSelected = input(false, { transform: booleanAttribute });\n /**\n * One output for one transition, carrying the value, the value it replaces,\n * the reason, the originating event and `cancel()`. There is no\n * `[(selected)]` because a two-way binding has one slot and cannot carry any\n * of those, and a second output for the same transition would be the same\n * failure stated twice.\n */\n readonly selectedChange = output<ChangeRequest<boolean>>();\n\n protected readonly tag = inject(SlTag);\n\n private readonly state = new SelectionState({\n selected: this.selected,\n defaultSelected: this.defaultSelected,\n emit: (request) => this.selectedChange.emit(request),\n });\n\n protected readonly isSelected = computed(() => this.state.value());\n\n constructor() {\n /* The chip box paints the selection; the control owns it. */\n effect(() => this.tag.setSelected(this.isSelected()));\n }\n\n protected onClick(event: MouseEvent) {\n if (this.tag.disabled()) return;\n /* A consumer that calls preventDefault has refused the activation, and a\n refused activation moves nothing. */\n if (event.defaultPrevented) return;\n this.state.request(event);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|