@slotted/angular 0.1.0-beta.0 → 0.1.0-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/docs/AGENTS.snippet.md +12 -0
- package/docs/alert.json +7 -1
- package/docs/alert.md +3 -3
- package/docs/app-shell.examples.md +1 -1
- package/docs/app-shell.json +5 -5
- package/docs/app-shell.md +2 -2
- package/docs/avatar.json +22 -1
- package/docs/avatar.md +5 -3
- package/docs/badge.json +7 -1
- package/docs/badge.md +3 -3
- package/docs/button-group.json +2 -0
- package/docs/button-group.md +1 -1
- package/docs/button.json +51 -11
- package/docs/button.md +10 -6
- package/docs/calendar.json +8 -1
- package/docs/calendar.md +1 -0
- package/docs/cascader.json +1 -0
- package/docs/cascader.md +1 -1
- package/docs/chart.examples.md +1 -1
- package/docs/chart.json +10 -1
- package/docs/chart.md +3 -2
- package/docs/checkbox.json +7 -0
- package/docs/checkbox.md +1 -0
- package/docs/code-block.json +92 -92
- package/docs/code-block.md +69 -69
- package/docs/combobox.json +1 -0
- package/docs/combobox.md +1 -1
- package/docs/currency-field.json +40 -1
- package/docs/currency-field.md +5 -1
- package/docs/data-grid.examples.md +2 -2
- package/docs/data-grid.json +24 -7
- package/docs/data-grid.md +1 -1
- package/docs/data-grid.props.md +6 -4
- package/docs/data-list.json +2 -1
- package/docs/data-list.md +1 -1
- package/docs/date-field.json +9 -1
- package/docs/date-field.md +3 -2
- package/docs/date-picker.examples.md +36 -0
- package/docs/date-picker.json +20 -5
- package/docs/date-picker.md +5 -4
- package/docs/datetime-field.json +1 -0
- package/docs/datetime-field.md +1 -1
- package/docs/dialog.examples.md +158 -136
- package/docs/dialog.json +35 -11
- package/docs/dialog.md +4 -2
- package/docs/dialog.props.md +1 -1
- package/docs/drawer.json +5 -0
- package/docs/drawer.md +1 -0
- package/docs/entity-picker.json +19 -4
- package/docs/entity-picker.md +8 -6
- package/docs/event-calendar.json +7 -0
- package/docs/event-calendar.md +1 -0
- package/docs/filter-bar.json +118 -118
- package/docs/filter-bar.md +79 -79
- package/docs/form.json +2 -1
- package/docs/form.md +1 -1
- package/docs/guidelines/README.md +27 -0
- package/docs/guidelines/async-feedback.md +129 -0
- package/docs/guidelines/browsing.md +74 -0
- package/docs/guidelines/builders.md +97 -0
- package/docs/guidelines/composition.md +143 -0
- package/docs/guidelines/conversations.md +59 -0
- package/docs/guidelines/errors-and-conflicts.md +71 -0
- package/docs/guidelines/forms.md +202 -0
- package/docs/guidelines/index.md +129 -0
- package/docs/guidelines/layout-alignment.md +95 -0
- package/docs/guidelines/ledgers.md +45 -0
- package/docs/guidelines/list-pages.md +206 -0
- package/docs/guidelines/overviews.md +76 -0
- package/docs/guidelines/own-elements.md +115 -0
- package/docs/guidelines/reading-permissions.md +55 -0
- package/docs/guidelines/record-pages.md +178 -0
- package/docs/guidelines/reports.md +123 -0
- package/docs/guidelines/shell-composition.md +94 -0
- package/docs/guidelines/workspaces.md +46 -0
- package/docs/icon.json +3 -1
- package/docs/icon.md +3 -3
- package/docs/index.md +12 -0
- package/docs/inline-message.json +14 -2
- package/docs/inline-message.md +4 -3
- package/docs/list-item.json +9 -1
- package/docs/list-item.md +3 -3
- package/docs/list.json +19 -1
- package/docs/list.md +3 -1
- package/docs/markdown.json +79 -79
- package/docs/markdown.md +65 -65
- package/docs/menu.json +12 -0
- package/docs/menu.md +2 -0
- package/docs/message.json +7 -1
- package/docs/message.md +3 -3
- package/docs/multi-select.json +1 -0
- package/docs/multi-select.md +1 -1
- package/docs/notification-center.json +4 -0
- package/docs/notification-center.md +2 -2
- package/docs/number-field.json +1 -0
- package/docs/number-field.md +1 -1
- package/docs/otp-input.json +1 -0
- package/docs/otp-input.md +1 -1
- package/docs/page-header.json +4 -3
- package/docs/page-header.md +2 -2
- package/docs/page.json +1 -0
- package/docs/page.md +1 -0
- package/docs/popover.json +1 -1
- package/docs/progress-indicator.json +4 -3
- package/docs/progress-indicator.md +4 -4
- package/docs/prompt-composer.json +41 -1
- package/docs/prompt-composer.md +5 -1
- package/docs/rating.json +5 -3
- package/docs/rating.md +5 -5
- package/docs/section.json +27 -15
- package/docs/section.md +11 -9
- package/docs/segmented-control.json +36 -12
- package/docs/segmented-control.md +17 -1
- package/docs/select.json +1 -0
- package/docs/select.md +1 -1
- package/docs/side-navigation.json +1 -0
- package/docs/side-navigation.md +1 -1
- package/docs/skills/build-own-element/SKILL.md +90 -0
- package/docs/skills/compose-screen/SKILL.md +95 -0
- package/docs/skills/index.md +9 -0
- package/docs/skills/review-screen/SKILL.md +77 -0
- package/docs/skills/theme-app/SKILL.md +87 -0
- package/docs/skills/waiting-states/SKILL.md +143 -0
- package/docs/sparkline.json +5 -2
- package/docs/sparkline.md +4 -4
- package/docs/split-button.json +4 -1
- package/docs/split-button.md +3 -3
- package/docs/stat-card.json +5 -1
- package/docs/stat-card.md +3 -3
- package/docs/table.examples.md +3 -3
- package/docs/table.json +85 -3
- package/docs/table.md +12 -1
- package/docs/tabs.json +17 -7
- package/docs/tabs.md +3 -2
- package/docs/tag.json +14 -4
- package/docs/tag.md +6 -6
- package/docs/tags-input.json +29 -2
- package/docs/tags-input.md +4 -1
- package/docs/text-field.json +2 -1
- package/docs/text-field.md +2 -2
- package/docs/textarea.json +1 -0
- package/docs/textarea.md +1 -1
- package/docs/time-field.json +1 -0
- package/docs/time-field.md +1 -1
- package/docs/timeline.json +138 -132
- package/docs/timeline.md +125 -125
- package/docs/toast.json +7 -1
- package/docs/toast.md +3 -3
- package/docs/toggle-group.json +14 -3
- package/docs/toggle-group.md +3 -3
- package/docs/toggle.json +12 -3
- package/docs/toggle.md +3 -3
- package/docs/tokens.md +467 -0
- package/docs/tour.json +1 -1
- package/docs/typography.json +4 -2
- package/docs/typography.md +4 -4
- package/fesm2022/slotted-angular-accordion.mjs +4 -2
- package/fesm2022/slotted-angular-accordion.mjs.map +1 -1
- package/fesm2022/slotted-angular-action-bar.mjs +22 -11
- package/fesm2022/slotted-angular-action-bar.mjs.map +1 -1
- package/fesm2022/slotted-angular-action-sheet.mjs +42 -29
- package/fesm2022/slotted-angular-action-sheet.mjs.map +1 -1
- package/fesm2022/slotted-angular-alert.mjs +18 -11
- package/fesm2022/slotted-angular-alert.mjs.map +1 -1
- package/fesm2022/slotted-angular-app-shell.mjs +111 -61
- package/fesm2022/slotted-angular-app-shell.mjs.map +1 -1
- package/fesm2022/slotted-angular-aspect-ratio.mjs +4 -2
- package/fesm2022/slotted-angular-aspect-ratio.mjs.map +1 -1
- package/fesm2022/slotted-angular-attachment.mjs +31 -20
- package/fesm2022/slotted-angular-attachment.mjs.map +1 -1
- package/fesm2022/slotted-angular-avatar-group.mjs +9 -6
- package/fesm2022/slotted-angular-avatar-group.mjs.map +1 -1
- package/fesm2022/slotted-angular-avatar.mjs +14 -7
- package/fesm2022/slotted-angular-avatar.mjs.map +1 -1
- package/fesm2022/slotted-angular-badge.mjs +14 -10
- package/fesm2022/slotted-angular-badge.mjs.map +1 -1
- package/fesm2022/slotted-angular-breadcrumb.mjs +26 -18
- package/fesm2022/slotted-angular-breadcrumb.mjs.map +1 -1
- package/fesm2022/slotted-angular-button-group.mjs +7 -4
- package/fesm2022/slotted-angular-button-group.mjs.map +1 -1
- package/fesm2022/slotted-angular-button.mjs +90 -29
- package/fesm2022/slotted-angular-button.mjs.map +1 -1
- package/fesm2022/slotted-angular-calendar.mjs +235 -58
- package/fesm2022/slotted-angular-calendar.mjs.map +1 -1
- package/fesm2022/slotted-angular-card.mjs +18 -16
- package/fesm2022/slotted-angular-card.mjs.map +1 -1
- package/fesm2022/slotted-angular-carousel.mjs +22 -11
- package/fesm2022/slotted-angular-carousel.mjs.map +1 -1
- package/fesm2022/slotted-angular-cascader.mjs +166 -66
- package/fesm2022/slotted-angular-cascader.mjs.map +1 -1
- package/fesm2022/slotted-angular-chart.mjs +53 -20
- package/fesm2022/slotted-angular-chart.mjs.map +1 -1
- package/fesm2022/slotted-angular-checkbox-group.mjs +5 -3
- package/fesm2022/slotted-angular-checkbox-group.mjs.map +1 -1
- package/fesm2022/slotted-angular-checkbox.mjs +23 -9
- package/fesm2022/slotted-angular-checkbox.mjs.map +1 -1
- package/fesm2022/slotted-angular-code-block.mjs +29 -15
- package/fesm2022/slotted-angular-code-block.mjs.map +1 -1
- package/fesm2022/slotted-angular-collapsible.mjs +20 -15
- package/fesm2022/slotted-angular-collapsible.mjs.map +1 -1
- package/fesm2022/slotted-angular-color-picker.mjs +77 -22
- package/fesm2022/slotted-angular-color-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-column-manager.mjs +68 -31
- package/fesm2022/slotted-angular-column-manager.mjs.map +1 -1
- package/fesm2022/slotted-angular-combobox.mjs +112 -39
- package/fesm2022/slotted-angular-combobox.mjs.map +1 -1
- package/fesm2022/slotted-angular-command-palette.mjs +150 -54
- package/fesm2022/slotted-angular-command-palette.mjs.map +1 -1
- package/fesm2022/slotted-angular-container.mjs +6 -4
- package/fesm2022/slotted-angular-container.mjs.map +1 -1
- package/fesm2022/slotted-angular-context-menu.mjs +5 -4
- package/fesm2022/slotted-angular-context-menu.mjs.map +1 -1
- package/fesm2022/slotted-angular-currency-field.mjs +149 -32
- package/fesm2022/slotted-angular-currency-field.mjs.map +1 -1
- package/fesm2022/slotted-angular-dashboard-grid.mjs +142 -63
- package/fesm2022/slotted-angular-dashboard-grid.mjs.map +1 -1
- package/fesm2022/slotted-angular-data-grid.mjs +354 -113
- package/fesm2022/slotted-angular-data-grid.mjs.map +1 -1
- package/fesm2022/slotted-angular-data-list.mjs +83 -50
- package/fesm2022/slotted-angular-data-list.mjs.map +1 -1
- package/fesm2022/slotted-angular-date-field.mjs +74 -25
- package/fesm2022/slotted-angular-date-field.mjs.map +1 -1
- package/fesm2022/slotted-angular-date-picker.mjs +112 -40
- package/fesm2022/slotted-angular-date-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-date-range-picker.mjs +45 -22
- package/fesm2022/slotted-angular-date-range-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-datetime-field.mjs +48 -16
- package/fesm2022/slotted-angular-datetime-field.mjs.map +1 -1
- package/fesm2022/slotted-angular-datetime-picker.mjs +41 -29
- package/fesm2022/slotted-angular-datetime-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-datetime-range-picker.mjs +115 -48
- package/fesm2022/slotted-angular-datetime-range-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-description-list.mjs +33 -19
- package/fesm2022/slotted-angular-description-list.mjs.map +1 -1
- package/fesm2022/slotted-angular-detail-panel.mjs +29 -18
- package/fesm2022/slotted-angular-detail-panel.mjs.map +1 -1
- package/fesm2022/slotted-angular-dialog.mjs +72 -30
- package/fesm2022/slotted-angular-dialog.mjs.map +1 -1
- package/fesm2022/slotted-angular-divider.mjs +7 -5
- package/fesm2022/slotted-angular-divider.mjs.map +1 -1
- package/fesm2022/slotted-angular-drawer.mjs +53 -29
- package/fesm2022/slotted-angular-drawer.mjs.map +1 -1
- package/fesm2022/slotted-angular-entity-picker.mjs +468 -75
- package/fesm2022/slotted-angular-entity-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-event-calendar.mjs +275 -108
- package/fesm2022/slotted-angular-event-calendar.mjs.map +1 -1
- package/fesm2022/slotted-angular-field-group.mjs +14 -7
- package/fesm2022/slotted-angular-field-group.mjs.map +1 -1
- package/fesm2022/slotted-angular-field.mjs +35 -15
- package/fesm2022/slotted-angular-field.mjs.map +1 -1
- package/fesm2022/slotted-angular-filter-bar.mjs +112 -51
- package/fesm2022/slotted-angular-filter-bar.mjs.map +1 -1
- package/fesm2022/slotted-angular-form.mjs +18 -10
- package/fesm2022/slotted-angular-form.mjs.map +1 -1
- package/fesm2022/slotted-angular-fullscreen.mjs +14 -8
- package/fesm2022/slotted-angular-fullscreen.mjs.map +1 -1
- package/fesm2022/slotted-angular-grid.mjs +4 -2
- package/fesm2022/slotted-angular-grid.mjs.map +1 -1
- package/fesm2022/slotted-angular-highlight.mjs +5 -3
- package/fesm2022/slotted-angular-highlight.mjs.map +1 -1
- package/fesm2022/slotted-angular-hover-card.mjs +5 -4
- package/fesm2022/slotted-angular-hover-card.mjs.map +1 -1
- package/fesm2022/slotted-angular-icon.mjs +6 -3
- package/fesm2022/slotted-angular-icon.mjs.map +1 -1
- package/fesm2022/slotted-angular-image.mjs +13 -10
- package/fesm2022/slotted-angular-image.mjs.map +1 -1
- package/fesm2022/slotted-angular-import-export-center.mjs +167 -99
- package/fesm2022/slotted-angular-import-export-center.mjs.map +1 -1
- package/fesm2022/slotted-angular-inline-message.mjs +88 -13
- package/fesm2022/slotted-angular-inline-message.mjs.map +1 -1
- package/fesm2022/slotted-angular-inline.mjs +4 -2
- package/fesm2022/slotted-angular-inline.mjs.map +1 -1
- package/fesm2022/slotted-angular-kbd.mjs +11 -7
- package/fesm2022/slotted-angular-kbd.mjs.map +1 -1
- package/fesm2022/slotted-angular-link.mjs +5 -3
- package/fesm2022/slotted-angular-link.mjs.map +1 -1
- package/fesm2022/slotted-angular-list-item.mjs +21 -18
- package/fesm2022/slotted-angular-list-item.mjs.map +1 -1
- package/fesm2022/slotted-angular-list.mjs +37 -22
- package/fesm2022/slotted-angular-list.mjs.map +1 -1
- package/fesm2022/slotted-angular-listbox.mjs +39 -21
- package/fesm2022/slotted-angular-listbox.mjs.map +1 -1
- package/fesm2022/slotted-angular-loading-overlay.mjs +59 -22
- package/fesm2022/slotted-angular-loading-overlay.mjs.map +1 -1
- package/fesm2022/slotted-angular-markdown.mjs +31 -19
- package/fesm2022/slotted-angular-markdown.mjs.map +1 -1
- package/fesm2022/slotted-angular-menu.mjs +51 -29
- package/fesm2022/slotted-angular-menu.mjs.map +1 -1
- package/fesm2022/slotted-angular-menubar.mjs +4 -2
- package/fesm2022/slotted-angular-menubar.mjs.map +1 -1
- package/fesm2022/slotted-angular-message-scroller.mjs +28 -15
- package/fesm2022/slotted-angular-message-scroller.mjs.map +1 -1
- package/fesm2022/slotted-angular-message.mjs +113 -51
- package/fesm2022/slotted-angular-message.mjs.map +1 -1
- package/fesm2022/slotted-angular-multi-select.mjs +189 -87
- package/fesm2022/slotted-angular-multi-select.mjs.map +1 -1
- package/fesm2022/slotted-angular-navigation-menu.mjs +34 -26
- package/fesm2022/slotted-angular-navigation-menu.mjs.map +1 -1
- package/fesm2022/slotted-angular-notification-center.mjs +108 -65
- package/fesm2022/slotted-angular-notification-center.mjs.map +1 -1
- package/fesm2022/slotted-angular-number-field.mjs +23 -11
- package/fesm2022/slotted-angular-number-field.mjs.map +1 -1
- package/fesm2022/slotted-angular-otp-input.mjs +13 -8
- package/fesm2022/slotted-angular-otp-input.mjs.map +1 -1
- package/fesm2022/slotted-angular-page-header.mjs +75 -45
- package/fesm2022/slotted-angular-page-header.mjs.map +1 -1
- package/fesm2022/slotted-angular-page.mjs +38 -10
- package/fesm2022/slotted-angular-page.mjs.map +1 -1
- package/fesm2022/slotted-angular-pagination.mjs +35 -22
- package/fesm2022/slotted-angular-pagination.mjs.map +1 -1
- package/fesm2022/slotted-angular-popover.mjs +32 -19
- package/fesm2022/slotted-angular-popover.mjs.map +1 -1
- package/fesm2022/slotted-angular-progress-indicator.mjs +236 -52
- package/fesm2022/slotted-angular-progress-indicator.mjs.map +1 -1
- package/fesm2022/slotted-angular-prompt-composer.mjs +41 -20
- package/fesm2022/slotted-angular-prompt-composer.mjs.map +1 -1
- package/fesm2022/slotted-angular-prose.mjs +14 -11
- package/fesm2022/slotted-angular-prose.mjs.map +1 -1
- package/fesm2022/slotted-angular-radio-group.mjs +15 -9
- package/fesm2022/slotted-angular-radio-group.mjs.map +1 -1
- package/fesm2022/slotted-angular-rating.mjs +138 -82
- package/fesm2022/slotted-angular-rating.mjs.map +1 -1
- package/fesm2022/slotted-angular-result-state.mjs +16 -12
- package/fesm2022/slotted-angular-result-state.mjs.map +1 -1
- package/fesm2022/slotted-angular-saved-views.mjs +43 -16
- package/fesm2022/slotted-angular-saved-views.mjs.map +1 -1
- package/fesm2022/slotted-angular-scroll-area.mjs +13 -5
- package/fesm2022/slotted-angular-scroll-area.mjs.map +1 -1
- package/fesm2022/slotted-angular-section.mjs +53 -18
- package/fesm2022/slotted-angular-section.mjs.map +1 -1
- package/fesm2022/slotted-angular-segmented-control.mjs +37 -11
- package/fesm2022/slotted-angular-segmented-control.mjs.map +1 -1
- package/fesm2022/slotted-angular-select.mjs +184 -94
- package/fesm2022/slotted-angular-select.mjs.map +1 -1
- package/fesm2022/slotted-angular-side-navigation.mjs +46 -35
- package/fesm2022/slotted-angular-side-navigation.mjs.map +1 -1
- package/fesm2022/slotted-angular-skeleton.mjs +32 -16
- package/fesm2022/slotted-angular-skeleton.mjs.map +1 -1
- package/fesm2022/slotted-angular-slider.mjs +31 -11
- package/fesm2022/slotted-angular-slider.mjs.map +1 -1
- package/fesm2022/slotted-angular-sparkline.mjs +41 -14
- package/fesm2022/slotted-angular-sparkline.mjs.map +1 -1
- package/fesm2022/slotted-angular-split-button.mjs +25 -11
- package/fesm2022/slotted-angular-split-button.mjs.map +1 -1
- package/fesm2022/slotted-angular-splitter.mjs +11 -9
- package/fesm2022/slotted-angular-splitter.mjs.map +1 -1
- package/fesm2022/slotted-angular-stack.mjs +4 -2
- package/fesm2022/slotted-angular-stack.mjs.map +1 -1
- package/fesm2022/slotted-angular-stat-card.mjs +35 -28
- package/fesm2022/slotted-angular-stat-card.mjs.map +1 -1
- package/fesm2022/slotted-angular-status-indicator.mjs +22 -8
- package/fesm2022/slotted-angular-status-indicator.mjs.map +1 -1
- package/fesm2022/slotted-angular-stepper.mjs +40 -15
- package/fesm2022/slotted-angular-stepper.mjs.map +1 -1
- package/fesm2022/slotted-angular-switch.mjs +15 -10
- package/fesm2022/slotted-angular-switch.mjs.map +1 -1
- package/fesm2022/slotted-angular-table-of-contents.mjs +29 -21
- package/fesm2022/slotted-angular-table-of-contents.mjs.map +1 -1
- package/fesm2022/slotted-angular-table.mjs +243 -73
- package/fesm2022/slotted-angular-table.mjs.map +1 -1
- package/fesm2022/slotted-angular-tabs.mjs +42 -18
- package/fesm2022/slotted-angular-tabs.mjs.map +1 -1
- package/fesm2022/slotted-angular-tag.mjs +19 -12
- package/fesm2022/slotted-angular-tag.mjs.map +1 -1
- package/fesm2022/slotted-angular-tags-input.mjs +253 -28
- package/fesm2022/slotted-angular-tags-input.mjs.map +1 -1
- package/fesm2022/slotted-angular-text-field.mjs +49 -15
- package/fesm2022/slotted-angular-text-field.mjs.map +1 -1
- package/fesm2022/slotted-angular-textarea.mjs +5 -3
- package/fesm2022/slotted-angular-textarea.mjs.map +1 -1
- package/fesm2022/slotted-angular-time-field.mjs +48 -14
- package/fesm2022/slotted-angular-time-field.mjs.map +1 -1
- package/fesm2022/slotted-angular-time-picker.mjs +32 -20
- package/fesm2022/slotted-angular-time-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-time-range-picker.mjs +113 -46
- package/fesm2022/slotted-angular-time-range-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-timeline.mjs +135 -64
- package/fesm2022/slotted-angular-timeline.mjs.map +1 -1
- package/fesm2022/slotted-angular-toast.mjs +43 -31
- package/fesm2022/slotted-angular-toast.mjs.map +1 -1
- package/fesm2022/slotted-angular-toggle-group.mjs +25 -8
- package/fesm2022/slotted-angular-toggle-group.mjs.map +1 -1
- package/fesm2022/slotted-angular-toggle.mjs +9 -4
- package/fesm2022/slotted-angular-toggle.mjs.map +1 -1
- package/fesm2022/slotted-angular-toolbar.mjs +22 -11
- package/fesm2022/slotted-angular-toolbar.mjs.map +1 -1
- package/fesm2022/slotted-angular-tooltip.mjs +15 -6
- package/fesm2022/slotted-angular-tooltip.mjs.map +1 -1
- package/fesm2022/slotted-angular-top-navigation.mjs +64 -44
- package/fesm2022/slotted-angular-top-navigation.mjs.map +1 -1
- package/fesm2022/slotted-angular-tour.mjs +47 -22
- package/fesm2022/slotted-angular-tour.mjs.map +1 -1
- package/fesm2022/slotted-angular-transfer.mjs +69 -30
- package/fesm2022/slotted-angular-transfer.mjs.map +1 -1
- package/fesm2022/slotted-angular-tree.mjs +74 -26
- package/fesm2022/slotted-angular-tree.mjs.map +1 -1
- package/fesm2022/slotted-angular-typography.mjs +8 -4
- package/fesm2022/slotted-angular-typography.mjs.map +1 -1
- package/fesm2022/slotted-angular-upload.mjs +125 -57
- package/fesm2022/slotted-angular-upload.mjs.map +1 -1
- package/fesm2022/slotted-angular-visually-hidden.mjs +4 -2
- package/fesm2022/slotted-angular-visually-hidden.mjs.map +1 -1
- package/fesm2022/slotted-angular-wizard.mjs +163 -65
- package/fesm2022/slotted-angular-wizard.mjs.map +1 -1
- package/package.json +3 -3
- package/types/slotted-angular-accordion.d.ts.map +1 -1
- package/types/slotted-angular-action-bar.d.ts.map +1 -1
- package/types/slotted-angular-action-sheet.d.ts.map +1 -1
- package/types/slotted-angular-alert.d.ts +2 -2
- package/types/slotted-angular-alert.d.ts.map +1 -1
- package/types/slotted-angular-app-shell.d.ts +11 -3
- package/types/slotted-angular-app-shell.d.ts.map +1 -1
- package/types/slotted-angular-aspect-ratio.d.ts.map +1 -1
- package/types/slotted-angular-attachment.d.ts +1 -1
- package/types/slotted-angular-attachment.d.ts.map +1 -1
- package/types/slotted-angular-avatar-group.d.ts.map +1 -1
- package/types/slotted-angular-avatar.d.ts +11 -3
- package/types/slotted-angular-avatar.d.ts.map +1 -1
- package/types/slotted-angular-badge.d.ts +1 -1
- package/types/slotted-angular-badge.d.ts.map +1 -1
- package/types/slotted-angular-breadcrumb.d.ts.map +1 -1
- package/types/slotted-angular-button-group.d.ts +1 -1
- package/types/slotted-angular-button-group.d.ts.map +1 -1
- package/types/slotted-angular-button.d.ts +33 -13
- package/types/slotted-angular-button.d.ts.map +1 -1
- package/types/slotted-angular-calendar.d.ts +30 -2
- package/types/slotted-angular-calendar.d.ts.map +1 -1
- package/types/slotted-angular-card.d.ts.map +1 -1
- package/types/slotted-angular-carousel.d.ts.map +1 -1
- package/types/slotted-angular-cascader.d.ts.map +1 -1
- package/types/slotted-angular-chart.d.ts +10 -0
- package/types/slotted-angular-chart.d.ts.map +1 -1
- package/types/slotted-angular-checkbox-group.d.ts.map +1 -1
- package/types/slotted-angular-checkbox.d.ts +7 -1
- package/types/slotted-angular-checkbox.d.ts.map +1 -1
- package/types/slotted-angular-code-block.d.ts +1 -1
- package/types/slotted-angular-code-block.d.ts.map +1 -1
- package/types/slotted-angular-collapsible.d.ts +1 -1
- package/types/slotted-angular-collapsible.d.ts.map +1 -1
- package/types/slotted-angular-color-picker.d.ts.map +1 -1
- package/types/slotted-angular-column-manager.d.ts.map +1 -1
- package/types/slotted-angular-combobox.d.ts +5 -1
- package/types/slotted-angular-combobox.d.ts.map +1 -1
- package/types/slotted-angular-command-palette.d.ts +10 -1
- package/types/slotted-angular-command-palette.d.ts.map +1 -1
- package/types/slotted-angular-container.d.ts.map +1 -1
- package/types/slotted-angular-context-menu.d.ts.map +1 -1
- package/types/slotted-angular-currency-field.d.ts +63 -15
- package/types/slotted-angular-currency-field.d.ts.map +1 -1
- package/types/slotted-angular-dashboard-grid.d.ts.map +1 -1
- package/types/slotted-angular-data-grid.d.ts +49 -4
- package/types/slotted-angular-data-grid.d.ts.map +1 -1
- package/types/slotted-angular-data-list.d.ts.map +1 -1
- package/types/slotted-angular-date-field.d.ts +11 -1
- package/types/slotted-angular-date-field.d.ts.map +1 -1
- package/types/slotted-angular-date-picker.d.ts +38 -12
- package/types/slotted-angular-date-picker.d.ts.map +1 -1
- package/types/slotted-angular-date-range-picker.d.ts +0 -1
- package/types/slotted-angular-date-range-picker.d.ts.map +1 -1
- package/types/slotted-angular-datetime-field.d.ts.map +1 -1
- package/types/slotted-angular-datetime-picker.d.ts +0 -1
- package/types/slotted-angular-datetime-picker.d.ts.map +1 -1
- package/types/slotted-angular-datetime-range-picker.d.ts +0 -1
- package/types/slotted-angular-datetime-range-picker.d.ts.map +1 -1
- package/types/slotted-angular-description-list.d.ts.map +1 -1
- package/types/slotted-angular-detail-panel.d.ts.map +1 -1
- package/types/slotted-angular-dialog.d.ts +10 -3
- package/types/slotted-angular-dialog.d.ts.map +1 -1
- package/types/slotted-angular-divider.d.ts.map +1 -1
- package/types/slotted-angular-drawer.d.ts +7 -1
- package/types/slotted-angular-drawer.d.ts.map +1 -1
- package/types/slotted-angular-entity-picker.d.ts +63 -15
- package/types/slotted-angular-entity-picker.d.ts.map +1 -1
- package/types/slotted-angular-event-calendar.d.ts +9 -2
- package/types/slotted-angular-event-calendar.d.ts.map +1 -1
- package/types/slotted-angular-field-group.d.ts.map +1 -1
- package/types/slotted-angular-field.d.ts.map +1 -1
- package/types/slotted-angular-filter-bar.d.ts.map +1 -1
- package/types/slotted-angular-form.d.ts.map +1 -1
- package/types/slotted-angular-fullscreen.d.ts.map +1 -1
- package/types/slotted-angular-grid.d.ts.map +1 -1
- package/types/slotted-angular-highlight.d.ts.map +1 -1
- package/types/slotted-angular-hover-card.d.ts.map +1 -1
- package/types/slotted-angular-icon.d.ts +2 -2
- package/types/slotted-angular-icon.d.ts.map +1 -1
- package/types/slotted-angular-image.d.ts.map +1 -1
- package/types/slotted-angular-import-export-center.d.ts.map +1 -1
- package/types/slotted-angular-inline-message.d.ts +25 -25
- package/types/slotted-angular-inline-message.d.ts.map +1 -1
- package/types/slotted-angular-inline.d.ts.map +1 -1
- package/types/slotted-angular-kbd.d.ts.map +1 -1
- package/types/slotted-angular-link.d.ts.map +1 -1
- package/types/slotted-angular-list-item.d.ts +1 -1
- package/types/slotted-angular-list-item.d.ts.map +1 -1
- package/types/slotted-angular-list.d.ts +42 -27
- package/types/slotted-angular-list.d.ts.map +1 -1
- package/types/slotted-angular-listbox.d.ts.map +1 -1
- package/types/slotted-angular-loading-overlay.d.ts.map +1 -1
- package/types/slotted-angular-markdown.d.ts.map +1 -1
- package/types/slotted-angular-menu.d.ts +11 -2
- package/types/slotted-angular-menu.d.ts.map +1 -1
- package/types/slotted-angular-menubar.d.ts.map +1 -1
- package/types/slotted-angular-message-scroller.d.ts.map +1 -1
- package/types/slotted-angular-message.d.ts +1 -1
- package/types/slotted-angular-message.d.ts.map +1 -1
- package/types/slotted-angular-multi-select.d.ts +15 -1
- package/types/slotted-angular-multi-select.d.ts.map +1 -1
- package/types/slotted-angular-navigation-menu.d.ts.map +1 -1
- package/types/slotted-angular-notification-center.d.ts +1 -1
- package/types/slotted-angular-notification-center.d.ts.map +1 -1
- package/types/slotted-angular-number-field.d.ts.map +1 -1
- package/types/slotted-angular-otp-input.d.ts.map +1 -1
- package/types/slotted-angular-page-header.d.ts +4 -4
- package/types/slotted-angular-page-header.d.ts.map +1 -1
- package/types/slotted-angular-page.d.ts.map +1 -1
- package/types/slotted-angular-pagination.d.ts.map +1 -1
- package/types/slotted-angular-popover.d.ts.map +1 -1
- package/types/slotted-angular-progress-indicator.d.ts +8 -1
- package/types/slotted-angular-progress-indicator.d.ts.map +1 -1
- package/types/slotted-angular-prompt-composer.d.ts +11 -2
- package/types/slotted-angular-prompt-composer.d.ts.map +1 -1
- package/types/slotted-angular-prose.d.ts.map +1 -1
- package/types/slotted-angular-radio-group.d.ts.map +1 -1
- package/types/slotted-angular-rating.d.ts +1 -1
- package/types/slotted-angular-rating.d.ts.map +1 -1
- package/types/slotted-angular-result-state.d.ts.map +1 -1
- package/types/slotted-angular-saved-views.d.ts.map +1 -1
- package/types/slotted-angular-scroll-area.d.ts.map +1 -1
- package/types/slotted-angular-section.d.ts +11 -3
- package/types/slotted-angular-section.d.ts.map +1 -1
- package/types/slotted-angular-segmented-control.d.ts +15 -2
- package/types/slotted-angular-segmented-control.d.ts.map +1 -1
- package/types/slotted-angular-select.d.ts +12 -2
- package/types/slotted-angular-select.d.ts.map +1 -1
- package/types/slotted-angular-side-navigation.d.ts.map +1 -1
- package/types/slotted-angular-skeleton.d.ts.map +1 -1
- package/types/slotted-angular-slider.d.ts.map +1 -1
- package/types/slotted-angular-sparkline.d.ts +7 -1
- package/types/slotted-angular-sparkline.d.ts.map +1 -1
- package/types/slotted-angular-split-button.d.ts +2 -2
- package/types/slotted-angular-split-button.d.ts.map +1 -1
- package/types/slotted-angular-splitter.d.ts.map +1 -1
- package/types/slotted-angular-stack.d.ts.map +1 -1
- package/types/slotted-angular-stat-card.d.ts +1 -1
- package/types/slotted-angular-stat-card.d.ts.map +1 -1
- package/types/slotted-angular-status-indicator.d.ts +1 -1
- package/types/slotted-angular-status-indicator.d.ts.map +1 -1
- package/types/slotted-angular-stepper.d.ts +1 -1
- package/types/slotted-angular-stepper.d.ts.map +1 -1
- package/types/slotted-angular-switch.d.ts.map +1 -1
- package/types/slotted-angular-table-of-contents.d.ts.map +1 -1
- package/types/slotted-angular-table.d.ts +63 -6
- package/types/slotted-angular-table.d.ts.map +1 -1
- package/types/slotted-angular-tabs.d.ts +3 -4
- package/types/slotted-angular-tabs.d.ts.map +1 -1
- package/types/slotted-angular-tag.d.ts +1 -1
- package/types/slotted-angular-tag.d.ts.map +1 -1
- package/types/slotted-angular-tags-input.d.ts +33 -1
- package/types/slotted-angular-tags-input.d.ts.map +1 -1
- package/types/slotted-angular-text-field.d.ts.map +1 -1
- package/types/slotted-angular-textarea.d.ts.map +1 -1
- package/types/slotted-angular-theme.d.ts +1 -1
- package/types/slotted-angular-time-field.d.ts.map +1 -1
- package/types/slotted-angular-time-picker.d.ts +0 -1
- package/types/slotted-angular-time-picker.d.ts.map +1 -1
- package/types/slotted-angular-time-range-picker.d.ts +0 -1
- package/types/slotted-angular-time-range-picker.d.ts.map +1 -1
- package/types/slotted-angular-timeline.d.ts +1 -1
- package/types/slotted-angular-timeline.d.ts.map +1 -1
- package/types/slotted-angular-toast.d.ts +3 -3
- package/types/slotted-angular-toast.d.ts.map +1 -1
- package/types/slotted-angular-toggle-group.d.ts +8 -2
- package/types/slotted-angular-toggle-group.d.ts.map +1 -1
- package/types/slotted-angular-toggle.d.ts +1 -1
- package/types/slotted-angular-toggle.d.ts.map +1 -1
- package/types/slotted-angular-toolbar.d.ts.map +1 -1
- package/types/slotted-angular-tooltip.d.ts.map +1 -1
- package/types/slotted-angular-top-navigation.d.ts.map +1 -1
- package/types/slotted-angular-tour.d.ts.map +1 -1
- package/types/slotted-angular-transfer.d.ts.map +1 -1
- package/types/slotted-angular-tree.d.ts.map +1 -1
- package/types/slotted-angular-typography.d.ts +1 -1
- package/types/slotted-angular-typography.d.ts.map +1 -1
- package/types/slotted-angular-upload.d.ts +2 -2
- package/types/slotted-angular-upload.d.ts.map +1 -1
- package/types/slotted-angular-visually-hidden.d.ts.map +1 -1
- package/types/slotted-angular-wizard.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slotted-angular-tags-input.mjs","sources":["../../tags-input/src/tags-input-defaults.ts","../../tags-input/src/tags-input.ts","../../tags-input/src/slotted-angular-tags-input.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\nimport type { Provider } from '@angular/core';\nimport type { ClipboardOutcome } from '@slotted/core/clipboard';\nimport type { TagsRefuseCause, TagsValidator } from '@slotted/core/tags';\n\nexport type TagsInputSize = 'sm' | 'md' | 'lg';\nexport type TagsInputVariant = 'outline' | 'subtle' | 'plain';\n\n/** What the row does with more chips than fit on one line. */\nexport type TagsInputOverflow = 'wrap' | 'collapse';\n/** What becomes of a value that fails the judgement: a marked chip, or a report. */\nexport type TagsInputInvalidValues = 'keep' | 'refuse';\n/** What becomes of the pending text when focus leaves the control. */\nexport type TagsInputPendingOnBlur = 'commit' | 'keep' | 'discard';\n\n/**\n * Why the list moved. The five words the React binding states in full, and\n * for the same reason: a consumer writes a different handler for each, and\n * `keyboard` is reorder alone.\n */\nexport type TagsInputValueReason = 'submit' | 'remove' | 'clear' | 'keyboard' | 'programmatic';\nexport type TagsInputInputReason = 'keyboard' | 'submit' | 'clear' | 'blur' | 'programmatic';\nexport type TagsInputRefuseCause = TagsRefuseCause;\nexport type TagsInputValidator = TagsValidator;\nexport type TagsInputCopyOutcome = ClipboardOutcome;\n\nexport interface TagsInputDefaults {\n addOnPaste: boolean;\n allowDuplicates: boolean;\n clearable: boolean;\n /** The characters that commit the typed text, and split a paste. */\n delimiters: readonly string[];\n disabled: boolean;\n editable: boolean;\n fullWidth: boolean;\n invalid: boolean;\n invalidValues: TagsInputInvalidValues;\n /** The most values the list may hold, or `null` for no limit. */\n max: number | null;\n overflow: TagsInputOverflow;\n pendingOnBlur: TagsInputPendingOnBlur;\n readOnly: boolean;\n reorderable: boolean;\n required: boolean;\n size: TagsInputSize;\n variant: TagsInputVariant;\n}\n\n/**\n * The numbers, and why they are these numbers. The React binding's\n * `TAGS_INPUT_FALLBACK` states the reasoning; the values are the same, and\n * they have to be — an application that renders both bindings would otherwise\n * ship two controls that behave differently under the same name.\n */\nexport const TAGS_INPUT_FALLBACK: TagsInputDefaults = {\n addOnPaste: true,\n allowDuplicates: false,\n clearable: true,\n delimiters: [','],\n disabled: false,\n editable: false,\n fullWidth: true,\n invalid: false,\n invalidValues: 'keep',\n max: null,\n overflow: 'wrap',\n pendingOnBlur: 'commit',\n readOnly: false,\n reorderable: false,\n required: false,\n size: 'md',\n variant: 'outline',\n};\n\nexport const TAGS_INPUT_DEFAULTS = new InjectionToken<TagsInputDefaults>('TAGS_INPUT_DEFAULTS', {\n providedIn: 'root',\n factory: () => TAGS_INPUT_FALLBACK,\n});\n\n/**\n * The decisions an application takes once. Its words come from the language in\n * force (`provideSlotted`).\n */\nexport function provideTagsInputDefaults(defaults: Partial<TagsInputDefaults>): Provider {\n return { provide: TAGS_INPUT_DEFAULTS, useValue: { ...TAGS_INPUT_FALLBACK, ...defaults } };\n}\n\nexport function injectTagsInputDefaults(): TagsInputDefaults {\n return inject(TAGS_INPUT_DEFAULTS);\n}\n","import { writeToClipboard } from '@slotted/core/clipboard';\nimport { createFilter } from '@slotted/core/collection';\nimport type { Filter } from '@slotted/core/collection';\nimport { createArrowNavigation, createRemovalFocus } from '@slotted/core/focus';\nimport type { ArrowNavigationHandle, RemovalFocusHandle } from '@slotted/core/focus';\nimport {\n tagsInputMessages,\n type PartialMessages,\n type TagsInputMessages,\n} from '@slotted/core/i18n';\nimport { getLiveAnnouncer } from '@slotted/core/live-announcer';\nimport { createWidthGate } from '@slotted/core/measure';\nimport type { WidthGateHandle } from '@slotted/core/measure';\nimport { createCollapse } from '@slotted/core/overflow';\nimport type { CollapseHandle } from '@slotted/core/overflow';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeRequest } from '@slotted/core/state';\nimport { admitValues, constraintVerdict, joinValues, splitValues } from '@slotted/core/tags';\nimport type { TagsVerdict } from '@slotted/core/tags';\nimport {\n afterNextRender,\n afterRenderEffect,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n ElementRef,\n forwardRef,\n HostAttributeToken,\n inject,\n input,\n model,\n numberAttribute,\n output,\n signal,\n untracked,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport type { OnInit } from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type { ControlValueAccessor, ValidationErrors, Validator } from '@angular/forms';\nimport { injectLocale, injectMessages } from '@slotted/angular/i18n';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport { SlField } from '@slotted/angular/field';\n\nimport { injectTagsInputDefaults } from './tags-input-defaults';\nimport type {\n TagsInputCopyOutcome,\n TagsInputInputReason,\n TagsInputInvalidValues,\n TagsInputOverflow,\n TagsInputPendingOnBlur,\n TagsInputRefuseCause,\n TagsInputSize,\n TagsInputValidator,\n TagsInputValueReason,\n TagsInputVariant,\n} from './tags-input-defaults';\n\n/** The chips in the row, in the order the row holds them. */\nexport const CHIP_SELECTOR = \"[data-part='chips'] > [role='gridcell']:not([data-part='field'])\";\n\n/** The width, in CSS pixels, under which a chip has no room for a word. */\nexport const NARROW_WIDTH = 120;\n\nfunction same(a: readonly string[], b: readonly string[]) {\n return a.length === b.length && a.every((value, index) => value === b[index]);\n}\n\n/** How long the chip that answered a duplicate stays marked: the theme's long step. */\nfunction longDuration(element: HTMLElement) {\n const raw = element.ownerDocument.defaultView\n ?.getComputedStyle(element)\n .getPropertyValue('--slotted-duration-long')\n .trim();\n if (raw === undefined || raw === '') return 320;\n const number = Number.parseFloat(raw);\n if (!Number.isFinite(number)) return 320;\n return raw.endsWith('ms') ? number : number * 1000;\n}\n\n/**\n * A frame of typed values, with a field that adds more.\n *\n * **The host element is the frame**, as `sl-multi-select`'s is: it carries\n * `data-ui`, and the grid, the chips, the field, the counter and the clear\n * button are its template.\n *\n * **The value is a list of texts, and the text is the label.** There is no\n * collection behind it, which is what separates this family from\n * `multi-select`.\n *\n * **A value that fails is held and shown.** Every value is judged at render —\n * by `validate`, or by the input's own constraints through the browser — and a\n * value that fails wears the danger tone, the alert mark and a description,\n * marks the host, puts `invalidValues` on the form control through the\n * `Validator`, and blocks the native submit through `setCustomValidity`.\n *\n * **What is refused is reported, not dropped.** `valueRefuse` carries the\n * values that did not get in and the cause.\n */\n@Component({\n selector: 'sl-tags-input',\n standalone: true,\n exportAs: 'slTagsInput',\n imports: [SlGlyph, SlIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n /* `tag`'s sheet beside this family's own: the chips wear its identifier. */\n styleUrls: ['../../../styles/src/tags-input/tags-input.css', '../../../styles/src/tag/tag.css'],\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SlTagsInput), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => SlTagsInput), multi: true },\n ],\n host: {\n 'data-ui': 'tags-input',\n 'data-part': 'root',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-variant]': 'resolvedVariant()',\n '[attr.data-overflow]': 'resolvedOverflow()',\n '[attr.data-full-width]': \"resolvedFullWidth() ? '' : null\",\n '[attr.data-disabled]': \"resolvedDisabled() ? '' : null\",\n '[attr.data-readonly]': \"resolvedReadOnly() ? '' : null\",\n '[attr.data-invalid]': \"isInvalid() ? '' : null\",\n '[attr.data-required]': \"resolvedRequired() ? '' : null\",\n '[attr.data-complete]': \"full() ? '' : null\",\n '[attr.data-narrow]': \"narrow() ? '' : null\",\n '[attr.data-expanded]': \"resolvedOverflow() === 'collapse' && expanded() ? '' : null\",\n '(focusin)': 'onFocusIn()',\n '(focusout)': 'onFocusOut($event)',\n },\n template: `\n <div\n data-part=\"control\"\n role=\"grid\"\n [attr.aria-label]=\"gridLabel()\"\n [attr.aria-labelledby]=\"gridLabelledBy()\"\n >\n <div\n data-part=\"chips\"\n role=\"row\"\n #row\n [attr.aria-label]=\"countText()\"\n [attr.aria-describedby]=\"hintId\"\n >\n @for (chip of value(); track trackChip(index, chip); let index = $index) {\n @if (editingIndex() === index) {\n <span\n role=\"gridcell\"\n tabindex=\"-1\"\n data-ui=\"tag\"\n data-part=\"root\"\n data-size=\"sm\"\n data-variant=\"soft\"\n [attr.data-value]=\"chip\"\n >\n <span data-part=\"body\">\n <input\n type=\"text\"\n [attr.aria-label]=\"labelFor(chip)\"\n [value]=\"editingText()\"\n [size]=\"chip.length || 1\"\n (input)=\"onEditInput($event)\"\n (blur)=\"commitEdit(index, $event)\"\n (keydown)=\"onEditKeyDown(index, $event)\"\n />\n </span>\n </span>\n } @else {\n <span\n role=\"gridcell\"\n tabindex=\"-1\"\n data-ui=\"tag\"\n data-part=\"root\"\n data-size=\"sm\"\n data-variant=\"soft\"\n [attr.data-value]=\"chip\"\n [attr.data-disabled]=\"isLocked(chip) || resolvedDisabled() ? '' : null\"\n [attr.data-invalid]=\"messageFor(index) === null ? null : ''\"\n [attr.data-tone]=\"messageFor(index) === null ? null : 'danger'\"\n [attr.data-current]=\"current() === chip ? '' : null\"\n [attr.aria-invalid]=\"messageFor(index) === null ? null : true\"\n [attr.aria-describedby]=\"messageFor(index) === null ? null : messageId(index)\"\n [attr.aria-label]=\"chipLabel(chip, index)\"\n [attr.title]=\"messageFor(index)\"\n (keydown)=\"onChipKeyDown(chip, index, $event)\"\n (dblclick)=\"onChipDoubleClick(chip, index)\"\n >\n <span data-part=\"body\">\n @if (messageFor(index); as message) {\n <span data-part=\"start\"\n ><span slIcon><svg slGlyph name=\"circle-alert\"></svg></span\n ></span>\n }\n <span data-part=\"label\">{{ labelFor(chip) }}</span>\n </span>\n @if (messageFor(index); as message) {\n <span data-part=\"message\" [id]=\"messageId(index)\">{{ message }}</span>\n }\n @if (!chipFrozen(chip)) {\n <button\n type=\"button\"\n tabindex=\"-1\"\n data-part=\"remove\"\n [attr.aria-label]=\"removeLabelFor(chip)\"\n (click)=\"onRemoveClick(index, $event)\"\n >\n <span slIcon><svg slGlyph name=\"x\"></svg></span>\n </button>\n }\n </span>\n }\n }\n @if (collapsing()) {\n <span\n #count\n hidden\n role=\"gridcell\"\n tabindex=\"-1\"\n data-count\n data-ui=\"tag\"\n data-part=\"root\"\n data-size=\"sm\"\n data-variant=\"outline\"\n (click)=\"focus()\"\n >\n <span data-part=\"body\">\n <span data-part=\"label\">+{{ hiddenCount() }}</span>\n </span>\n </span>\n }\n <span data-part=\"field\" role=\"gridcell\">\n <input\n #control\n data-part=\"input\"\n [type]=\"type()\"\n [id]=\"controlId()\"\n [value]=\"inputValue()\"\n [disabled]=\"resolvedDisabled()\"\n [readOnly]=\"resolvedReadOnly()\"\n [required]=\"resolvedRequired() && value().length === 0\"\n [placeholder]=\"placeholder()\"\n [attr.name]=\"null\"\n [attr.list]=\"list() ?? null\"\n [attr.pattern]=\"pattern() ?? null\"\n [attr.minlength]=\"minLength() ?? null\"\n [attr.maxlength]=\"maxLength() ?? null\"\n [attr.inputmode]=\"inputMode() ?? null\"\n [attr.autocomplete]=\"autocomplete() ?? null\"\n [attr.aria-label]=\"ariaLabel() ?? null\"\n [attr.aria-describedby]=\"describedBy()\"\n [attr.aria-invalid]=\"isInvalid() ? true : null\"\n (input)=\"onInput($event)\"\n (keydown)=\"onKeyDown($event)\"\n (paste)=\"onPaste($event)\"\n (blur)=\"onBlur($event)\"\n />\n </span>\n </div>\n </div>\n\n @if (counterText(); as counter) {\n <span data-part=\"counter\" aria-hidden=\"true\">{{ counter }}</span>\n }\n @if (showClear()) {\n <button\n type=\"button\"\n data-part=\"clear\"\n [attr.aria-label]=\"t('clear')\"\n (click)=\"onClear($event)\"\n >\n <span slIcon><svg slGlyph name=\"x\"></svg></span>\n </button>\n }\n <span data-part=\"hint\" [id]=\"hintId\">{{ hintText() }}</span>\n\n <!--\n One hidden input per value, all under the same name: that is how a plain\n FormData receives several values under one key.\n -->\n @if (name(); as submissionName) {\n @for (held of value(); track trackChip(index, held); let index = $index) {\n <input type=\"hidden\" [name]=\"submissionName\" [attr.form]=\"form() ?? null\" [value]=\"held\" />\n }\n }\n `,\n})\nexport class SlTagsInput implements ControlValueAccessor, OnInit, Validator {\n private static readonly flag = (given: boolean | string | undefined) =>\n given === undefined ? undefined : booleanAttribute(given);\n private static readonly count = (given: number | string | undefined) =>\n given === undefined ? undefined : numberAttribute(given);\n\n /** The values, in the order the reader gave them. */\n readonly value = model<readonly string[]>([]);\n readonly valueChangeRequest = output<ChangeRequest<readonly string[]>>();\n /** What an unbound `value` starts from, read once. */\n readonly defaultValue = input<readonly string[] | undefined>(undefined);\n\n /** The characters in the field, which are not yet a value. */\n readonly inputValue = model<string>('');\n readonly inputValueChangeRequest = output<ChangeRequest<string>>();\n\n /** What the family refused, and why. It holds no state and cancels nothing. */\n readonly valueRefuse = output<{ values: readonly string[]; cause: TagsInputRefuseCause }>();\n /** What was put on the clipboard, and whether it got there. */\n readonly valueCopy = output<{ values: readonly string[]; outcome: TagsInputCopyOutcome }>();\n\n readonly ariaLabel = input<string | undefined>(undefined, { alias: 'aria-label' });\n readonly placeholder = input<string>('');\n readonly name = input<string | undefined>(undefined);\n readonly form = input<string | undefined>(undefined);\n readonly type = input<'text' | 'email' | 'url' | 'tel' | 'search'>('text');\n readonly list = input<string | undefined>(undefined);\n readonly pattern = input<string | undefined>(undefined);\n readonly minLength = input(undefined, { transform: SlTagsInput.count });\n readonly maxLength = input(undefined, { transform: SlTagsInput.count });\n readonly inputMode = input<string | undefined>(undefined);\n readonly autocomplete = input<string | undefined>(undefined);\n /** BCP 47, for the comparison the duplicate rule makes. The language in force when absent. */\n readonly locale = input<string | undefined>(undefined);\n /** `validateValue` rather than `validate`, which is the Validator's own method. */\n readonly validateValue = input<TagsInputValidator | undefined>(undefined);\n /** Runs before a value is judged. Trim by default. */\n readonly normalize = input<((text: string) => string) | undefined>(undefined);\n /** How a paste is split. The default splits on the delimiters and on line breaks. */\n readonly split = input<((text: string) => readonly string[]) | undefined>(undefined);\n /** The chip's text for a value. */\n readonly formatLabel = input<((value: string) => string) | undefined>(undefined);\n /** The values the reader may not remove. */\n readonly lockedValues = input<readonly string[]>([]);\n readonly delimiters = input<readonly string[] | undefined>(undefined);\n readonly max = input(undefined, { transform: SlTagsInput.count });\n\n readonly size = input<TagsInputSize | undefined>(undefined);\n readonly variant = input<TagsInputVariant | undefined>(undefined);\n readonly overflow = input<TagsInputOverflow | undefined>(undefined);\n readonly invalidValues = input<TagsInputInvalidValues | undefined>(undefined);\n readonly pendingOnBlur = input<TagsInputPendingOnBlur | undefined>(undefined);\n\n /**\n * Words laid over the catalog of the language in force, key by key: the\n * clear button, the chips, the counter, the hint, and the sentences the\n * announcer says.\n */\n readonly messages = input<PartialMessages<TagsInputMessages> | undefined>(undefined);\n\n readonly addOnPaste = input(undefined, { transform: SlTagsInput.flag });\n readonly allowDuplicates = input(undefined, { transform: SlTagsInput.flag });\n readonly editable = input(undefined, { transform: SlTagsInput.flag });\n readonly reorderable = input(undefined, { transform: SlTagsInput.flag });\n readonly clearable = input(undefined, { transform: SlTagsInput.flag });\n readonly fullWidth = input(undefined, { transform: SlTagsInput.flag });\n readonly disabled = input(undefined, { transform: SlTagsInput.flag });\n readonly readOnly = input(undefined, { transform: SlTagsInput.flag });\n readonly required = input(undefined, { transform: SlTagsInput.flag });\n readonly invalid = input(undefined, { transform: SlTagsInput.flag });\n\n private readonly defaults = injectTagsInputDefaults();\n /** The family's words in the language in force, with this control's `messages` laid over them. */\n readonly t = injectMessages(tagsInputMessages, this.messages);\n private readonly inForceLocale = injectLocale();\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly controlRef = viewChild.required<{ nativeElement: HTMLInputElement }>('control');\n private readonly rowRef = viewChild.required<{ nativeElement: HTMLElement }>('row');\n private readonly countRef = viewChild<{ nativeElement: HTMLElement }>('count');\n\n readonly field = inject(SlField, { optional: true });\n\n private readonly identifier = Math.random().toString(36).slice(2, 8);\n private readonly ownId = `sl-tags-input-${this.identifier}`;\n readonly hintId = `${this.ownId}-hint`;\n\n readonly hiddenCount = signal(1);\n readonly narrow = signal(false);\n readonly expanded = signal(false);\n /** The value a refused duplicate is already held under, marked for one long step. */\n readonly current = signal<string | null>(null);\n readonly editingIndex = signal<number | null>(null);\n readonly editingText = signal('');\n\n private ring: ArrowNavigationHandle | null = null;\n private removal: RemovalFocusHandle | null = null;\n private collapse: CollapseHandle | null = null;\n private gate: WidthGateHandle | null = null;\n private currentTimer: ReturnType<typeof setTimeout> | null = null;\n private reverting = false;\n private disabledByForm = signal<boolean | undefined>(undefined);\n\n private readonly hostId = inject(new HostAttributeToken('id'), { optional: true });\n\n private onChange: (value: readonly string[]) => void = () => undefined;\n private onTouched: () => void = () => undefined;\n private validatorChange: () => void = () => undefined;\n\n readonly resolvedSize = computed(() => this.size() ?? this.field?.size() ?? this.defaults.size);\n readonly resolvedVariant = computed(() => this.variant() ?? this.defaults.variant);\n readonly resolvedOverflow = computed(() => this.overflow() ?? this.defaults.overflow);\n readonly resolvedInvalidValues = computed(\n () => this.invalidValues() ?? this.defaults.invalidValues,\n );\n readonly resolvedPendingOnBlur = computed(\n () => this.pendingOnBlur() ?? this.defaults.pendingOnBlur,\n );\n readonly resolvedClearable = computed(() => this.clearable() ?? this.defaults.clearable);\n readonly resolvedFullWidth = computed(() => this.fullWidth() ?? this.defaults.fullWidth);\n readonly resolvedEditable = computed(() => this.editable() ?? this.defaults.editable);\n readonly resolvedReorderable = computed(() => this.reorderable() ?? this.defaults.reorderable);\n readonly resolvedAddOnPaste = computed(() => this.addOnPaste() ?? this.defaults.addOnPaste);\n readonly resolvedAllowDuplicates = computed(\n () => this.allowDuplicates() ?? this.defaults.allowDuplicates,\n );\n readonly resolvedDelimiters = computed(() => this.delimiters() ?? this.defaults.delimiters);\n readonly resolvedMax = computed(() => this.max() ?? this.defaults.max);\n\n readonly resolvedDisabled = computed(\n () =>\n this.disabled() ?? this.disabledByForm() ?? this.field?.disabled() ?? this.defaults.disabled,\n );\n readonly resolvedReadOnly = computed(\n () => this.readOnly() ?? this.field?.readOnly() ?? this.defaults.readOnly,\n );\n readonly resolvedRequired = computed(\n () => this.required() ?? this.field?.required() ?? this.defaults.required,\n );\n readonly resolvedInvalid = computed(\n () => this.invalid() ?? this.field?.invalid() ?? this.defaults.invalid,\n );\n\n readonly controlId = computed(() => this.hostId ?? this.field?.ids().control ?? this.ownId);\n readonly describedBy = computed(() => this.field?.describedBy() ?? null);\n readonly frozen = computed(() => this.resolvedReadOnly() || this.resolvedDisabled());\n readonly collapsing = computed(() => this.resolvedOverflow() === 'collapse' && !this.expanded());\n /** The list has reached `max` and takes nothing more. */\n readonly full = computed(() => {\n const limit = this.resolvedMax();\n return limit !== null && this.value().length >= limit;\n });\n\n private readonly collator = computed<Filter>(() =>\n createFilter({ locale: this.locale() ?? this.inForceLocale() }),\n );\n\n /**\n * A detached input carrying the visible one's constraints, rebuilt when they\n * change, so the platform's judgement reads the attributes the template is\n * about to write rather than the ones it wrote last time.\n */\n private readonly probe = computed(() => {\n const element = this.host.nativeElement.ownerDocument.createElement('input');\n element.type = this.type();\n const pattern = this.pattern();\n if (pattern !== undefined) element.setAttribute('pattern', pattern);\n const minLength = this.minLength();\n if (minLength !== undefined) element.minLength = minLength;\n const maxLength = this.maxLength();\n if (maxLength !== undefined) element.maxLength = maxLength;\n return element;\n });\n\n /**\n * Validity is a function of the value alone, judged at render, so a value a\n * form wrote in with an invalid entry is marked like one the reader typed.\n */\n readonly verdicts = computed<readonly TagsVerdict[]>(() =>\n this.value().map((entry) => this.judge(entry)),\n );\n readonly firstFailure = computed(() => this.verdicts().find((verdict) => !verdict.valid));\n readonly isInvalid = computed(() => {\n const limit = this.resolvedMax();\n return (\n this.resolvedInvalid() ||\n this.firstFailure() !== undefined ||\n (limit !== null && this.value().length > limit)\n );\n });\n\n readonly countText = computed(() => this.t('count', { count: this.value().length }));\n readonly gridLabel = computed(() => {\n const label = this.ariaLabel();\n return label === undefined ? null : this.t('countNamed', { label, count: this.value().length });\n });\n readonly gridLabelledBy = computed(() =>\n this.ariaLabel() === undefined && this.field ? this.field.ids().label : null,\n );\n readonly hintText = computed(() =>\n this.resolvedEditable() ? this.t('editHint') : this.t('hint'),\n );\n\n readonly showClear = computed(\n () =>\n this.resolvedClearable() &&\n (this.value().some((entry) => !this.isLocked(entry)) || this.inputValue() !== '') &&\n !this.frozen(),\n );\n\n readonly counterText = computed(() => {\n const limit = this.resolvedMax();\n if (limit !== null) {\n return this.t('counter', { count: this.value().length, max: limit });\n }\n if (this.narrow() && this.value().length > 0) return this.countText();\n return null;\n });\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n\n afterNextRender(() => this.bindRow());\n\n /* A value arriving or leaving changes what there is to fit, and which cells\n the ring walks. */\n afterRenderEffect(() => {\n this.value();\n this.collapsing();\n untracked(() => {\n this.ring?.refresh();\n this.collapse?.refresh();\n });\n });\n\n /**\n * The platform's own gate: while the list holds an invalid value, or more\n * than `max`, the visible input carries the verdict as its custom validity,\n * so a plain form refuses to submit and shows the browser's bubble on the\n * control the reader is looking at.\n */\n afterRenderEffect(() => {\n const failure = this.firstFailure();\n const limit = this.resolvedMax();\n const count = this.value().length;\n const message =\n failure === undefined\n ? limit !== null && count > limit\n ? this.t('counter', { count, max: limit })\n : ''\n : failure.message || this.t('invalid');\n untracked(() => this.controlRef().nativeElement.setCustomValidity(message));\n });\n\n /* A Reactive Form is told when what the family judges has changed. */\n effect(() => {\n this.verdicts();\n this.resolvedMax();\n this.resolvedRequired();\n untracked(() => this.validatorChange());\n });\n\n destroyRef.onDestroy(() => {\n this.ring?.destroy();\n this.removal?.destroy();\n this.collapse?.destroy();\n this.gate?.destroy();\n if (this.currentTimer !== null) clearTimeout(this.currentTimer);\n });\n }\n\n ngOnInit() {\n const seed = this.defaultValue();\n if (seed === undefined || this.value().length > 0) return;\n this.value.set([...seed]);\n }\n\n protected trackChip(index: number, value: string) {\n /* The value, and its ordinal among equal values when duplicates are\n allowed, so a reorder keeps the chip — and the focus on it. */\n let times = 0;\n const held = this.value();\n for (let at = 0; at < index; at += 1) if (held[at] === value) times += 1;\n return times === 0 ? value : `${value}\u0000${times}`;\n }\n\n labelFor(value: string): string {\n const format = this.formatLabel();\n return format === undefined ? value : format(value);\n }\n\n isLocked(value: string): boolean {\n return this.lockedValues().includes(value);\n }\n\n protected chipFrozen(value: string): boolean {\n return this.frozen() || this.isLocked(value);\n }\n\n protected messageId(index: number) {\n return `${this.ownId}-message-${index}`;\n }\n\n protected messageFor(index: number): string | null {\n const verdict = this.verdicts()[index];\n if (verdict === undefined || verdict.valid) return null;\n return verdict.message || this.t('invalid');\n }\n\n protected removeLabelFor(value: string) {\n return this.t('remove', { label: this.labelFor(value) });\n }\n\n protected chipLabel(value: string, index: number) {\n if (!this.resolvedReorderable()) return null;\n return this.t('reorder', {\n label: this.labelFor(value),\n position: index + 1,\n count: this.value().length,\n });\n }\n\n private judge(text: string): TagsVerdict {\n const validate = this.validateValue();\n if (validate === undefined) return constraintVerdict(this.probe(), text);\n const answer = validate(text);\n if (answer === true) return { valid: true };\n return { valid: false, message: answer === false ? '' : answer };\n }\n\n focus() {\n this.controlRef().nativeElement.focus({ preventScroll: true });\n }\n\n private announce(message: string) {\n if (message === '') return;\n getLiveAnnouncer(this.host.nativeElement.ownerDocument).announce(message, { repeat: true });\n }\n\n setInputValue(next: string, reason: TagsInputInputReason, source?: Event) {\n if (next === this.inputValue()) return;\n const state = createControllable<string>({\n initial: this.inputValue(),\n onRequest: (request) => this.inputValueChangeRequest.emit(request),\n });\n if (state.request(next, reason, source)) this.inputValue.set(next);\n }\n\n /** One request for one transition, whatever moved the list. */\n private commit(next: readonly string[], reason: TagsInputValueReason, source?: Event) {\n if (same(next, this.value())) return false;\n const state = createControllable<readonly string[]>({\n initial: this.value(),\n onRequest: (request) => this.valueChangeRequest.emit(request),\n });\n if (!state.request(next, reason, source)) return false;\n this.value.set(next);\n this.onChange(next);\n this.onTouched();\n return true;\n }\n\n /**\n * The one door into the list. Every candidate runs the sequence\n * `@slotted/core/tags` states — normalise, judge, deduplicate, cap — and each\n * refusal is reported under its cause rather than dropped.\n */\n admit(candidates: readonly string[], source?: Event, replacing?: number) {\n const normalize = this.normalize() ?? ((text: string) => text.trim());\n const result = admitValues({\n values: this.value(),\n candidates,\n max: this.resolvedMax(),\n allowDuplicates: this.resolvedAllowDuplicates(),\n invalidValues: this.resolvedInvalidValues(),\n normalize,\n judge: (text) => this.judge(text),\n equals: this.collator().equals,\n ...(replacing === undefined ? {} : { replacing }),\n });\n\n if (result.added.length > 0 && this.commit(result.next, 'submit', source)) {\n const last = result.added[result.added.length - 1] as string;\n const verdict = this.judge(last);\n const label = this.labelFor(last);\n const count = result.next.length;\n this.announce(\n verdict.valid\n ? this.t('added', { label, count })\n : this.t('addedInvalid', { label, count, reason: verdict.message || this.t('invalid') }),\n );\n }\n\n for (const cause of ['duplicate', 'limit', 'invalid'] as const) {\n if (result.refused[cause].length === 0) continue;\n this.valueRefuse.emit({ values: result.refused[cause], cause });\n }\n if (result.existing.length > 0) {\n const existing = result.existing[0] as string;\n this.markCurrent(existing);\n this.announce(this.t('duplicate', { label: this.labelFor(existing) }));\n queueMicrotask(() => this.focusChip(existing));\n }\n const limit = this.resolvedMax();\n if (result.refused.limit.length > 0 && limit !== null) {\n this.announce(this.t('counter', { count: limit, max: limit }));\n }\n if (result.refused.invalid.length > 0) this.announce(this.t('invalid'));\n return result;\n }\n\n /** The chip that answered a duplicate stays marked for one long step. */\n private markCurrent(value: string) {\n this.current.set(value);\n if (this.currentTimer !== null) clearTimeout(this.currentTimer);\n this.currentTimer = setTimeout(() => {\n this.current.set(null);\n this.currentTimer = null;\n }, longDuration(this.host.nativeElement));\n }\n\n remove(index: number, source?: Event) {\n const held = this.value();\n const target = held[index];\n if (target === undefined || this.isLocked(target)) return;\n const next = held.filter((_, at) => at !== index);\n if (this.commit(next, 'remove', source)) {\n this.announce(this.t('removed', { label: this.labelFor(target), count: next.length }));\n }\n }\n\n clear(source?: Event) {\n const kept = this.value().filter((entry) => this.isLocked(entry));\n this.commit(kept, 'clear', source);\n this.setInputValue('', 'clear', source);\n }\n\n /** Reorder, and the only shape it has: one value moving to one index. */\n move(from: number, to: number, source?: Event) {\n const held = this.value();\n if (from < 0 || from >= held.length) return;\n const target = Math.min(Math.max(to, 0), held.length - 1);\n if (target === from) return;\n\n const next = [...held];\n const [moved] = next.splice(from, 1);\n next.splice(target, 0, moved as string);\n if (!this.commit(next, 'keyboard', source)) return;\n this.announce(\n this.t('reorder', {\n label: this.labelFor(moved as string),\n position: target + 1,\n count: next.length,\n }),\n );\n /* The chip travelled with the reader's focus; the ring has to be told the\n cells moved under it. */\n queueMicrotask(() => {\n this.ring?.refresh();\n this.chips()[target]?.focus({ preventScroll: true });\n });\n }\n\n async copy(values: readonly string[]) {\n if (values.length === 0) return;\n const outcome = await writeToClipboard(\n joinValues(values, this.resolvedDelimiters()),\n this.host.nativeElement.ownerDocument,\n );\n this.valueCopy.emit({ values, outcome });\n if (outcome !== 'refused') {\n this.announce(this.t('copied', { count: values.length }));\n }\n }\n\n setValue(values: readonly string[], reason: TagsInputValueReason = 'programmatic') {\n this.commit([...values], reason);\n }\n\n private chips(): HTMLElement[] {\n return [...this.host.nativeElement.querySelectorAll<HTMLElement>(CHIP_SELECTOR)];\n }\n\n private focusChip(value: string) {\n const chip = this.chips().find((candidate) => candidate.dataset['value'] === value);\n chip?.focus({ preventScroll: true });\n }\n\n private splitText(text: string): readonly string[] {\n const split = this.split();\n return split === undefined ? splitValues(text, this.resolvedDelimiters()) : split(text);\n }\n\n /** The typed text, committed as one or several values. */\n private commitText(source?: Event) {\n const text = this.inputValue();\n if (text.trim() === '') return false;\n this.admit(this.splitText(text), source);\n this.setInputValue('', 'submit', source);\n return true;\n }\n\n protected onInput(event: Event) {\n this.setInputValue((event.target as HTMLInputElement).value, 'keyboard', event);\n }\n\n protected onEditInput(event: Event) {\n this.editingText.set((event.target as HTMLInputElement).value);\n }\n\n protected onEditKeyDown(index: number, event: KeyboardEvent) {\n if (event.key === 'Enter') {\n event.preventDefault();\n this.commitEdit(index, event);\n return;\n }\n if (event.key === 'Escape') {\n event.preventDefault();\n /* The field blurs on the way out, and the blur must not commit what the\n key just reverted. */\n this.reverting = true;\n this.editingIndex.set(null);\n queueMicrotask(() => this.chips()[index]?.focus({ preventScroll: true }));\n }\n }\n\n protected commitEdit(index: number, event: Event) {\n if (this.reverting) {\n this.reverting = false;\n return;\n }\n if (this.editingIndex() !== index) return;\n const text = this.editingText();\n const held = this.value()[index];\n this.editingIndex.set(null);\n if (text.trim() !== '' && text !== held) this.admit([text], event, index);\n queueMicrotask(() => this.chips()[index]?.focus({ preventScroll: true }));\n }\n\n private beginEdit(value: string, index: number) {\n this.reverting = false;\n this.editingText.set(value);\n this.editingIndex.set(index);\n queueMicrotask(() => {\n this.chips()[index]?.querySelector('input')?.focus({ preventScroll: true });\n });\n }\n\n protected onChipDoubleClick(value: string, index: number) {\n if (this.chipFrozen(value) || !this.resolvedEditable()) return;\n this.beginEdit(value, index);\n }\n\n protected onChipKeyDown(value: string, index: number, event: KeyboardEvent) {\n if (event.defaultPrevented) return;\n const meta = event.ctrlKey || event.metaKey;\n const frozen = this.chipFrozen(value);\n\n if (meta && (event.key === 'c' || event.key === 'C')) {\n event.preventDefault();\n void this.copy([value]);\n return;\n }\n if (meta && (event.key === 'x' || event.key === 'X')) {\n if (frozen) return;\n event.preventDefault();\n void this.copy([value]);\n this.remove(index, event);\n return;\n }\n\n switch (event.key) {\n case 'Delete':\n case 'Backspace':\n if (frozen) return;\n event.preventDefault();\n this.remove(index, event);\n return;\n case 'Enter':\n if (frozen || !this.resolvedEditable()) return;\n event.preventDefault();\n this.beginEdit(value, index);\n return;\n case 'Escape':\n event.preventDefault();\n this.focus();\n return;\n default:\n break;\n }\n\n /* Reorder: `Alt` and an arrow, following the writing direction. */\n if (this.resolvedReorderable() && event.altKey && !frozen) {\n const target = event.currentTarget as HTMLElement;\n const rtl = target.ownerDocument.defaultView?.getComputedStyle(target).direction === 'rtl';\n const forward = rtl ? 'ArrowLeft' : 'ArrowRight';\n const back = rtl ? 'ArrowRight' : 'ArrowLeft';\n const count = this.value().length;\n const to =\n event.key === forward\n ? index + 1\n : event.key === back\n ? index - 1\n : event.key === 'Home'\n ? 0\n : event.key === 'End'\n ? count - 1\n : null;\n if (to !== null) {\n event.preventDefault();\n this.move(index, to, event);\n return;\n }\n }\n\n /* A printable character returns to the field and types itself there. */\n if (event.key.length === 1 && !meta && !event.altKey) this.focus();\n }\n\n protected onKeyDown(event: KeyboardEvent) {\n if (this.resolvedDisabled()) return;\n const meta = event.ctrlKey || event.metaKey;\n\n if (!this.frozen() && this.resolvedDelimiters().includes(event.key) && !event.altKey && !meta) {\n event.preventDefault();\n this.commitText(event);\n return;\n }\n\n switch (event.key) {\n case 'Enter':\n /* With text, commits and never submits; with none, the platform's\n implicit submission is left alone. */\n if (this.frozen()) return;\n if (this.commitText(event)) event.preventDefault();\n return;\n case 'Escape':\n if (this.inputValue() === '') return;\n event.preventDefault();\n this.setInputValue('', 'clear', event);\n return;\n case 'Backspace': {\n /* §6's rule: from an empty field the first press moves focus to the\n last chip the reader may remove and removes nothing; the second\n press — on the chip — removes it. */\n if (this.inputValue() !== '' || this.frozen()) return;\n const control = event.currentTarget as HTMLInputElement;\n if (control.selectionStart !== 0) return;\n const last = this.chips()\n .reverse()\n .find((chip) => !chip.hasAttribute('data-disabled') && !chip.hasAttribute('data-count'));\n if (last === undefined) return;\n event.preventDefault();\n last.focus({ preventScroll: true });\n return;\n }\n case 'c':\n case 'C':\n if (!meta || this.inputValue() !== '' || this.value().length === 0) return;\n event.preventDefault();\n void this.copy(this.value());\n return;\n default:\n break;\n }\n }\n\n /** A paste that carries several values, split by the same rule the key reads. */\n protected onPaste(event: ClipboardEvent) {\n if (!this.resolvedAddOnPaste() || this.frozen()) return;\n const text = event.clipboardData?.getData('text') ?? '';\n const parts = this.splitText(text);\n if (parts.length < 2) return;\n event.preventDefault();\n this.admit(parts, event);\n this.setInputValue('', 'submit', event);\n }\n\n protected onBlur(event: FocusEvent) {\n this.onTouched();\n const next = event.relatedTarget;\n if (next instanceof Node && this.host.nativeElement.contains(next)) return;\n if (this.frozen()) return;\n const policy = this.resolvedPendingOnBlur();\n if (policy === 'commit') this.commitText(event);\n else if (policy === 'discard') this.setInputValue('', 'blur', event);\n }\n\n /* The collapsed row opens while focus is anywhere inside the frame. */\n protected onFocusIn() {\n this.expanded.set(true);\n }\n\n protected onFocusOut(event: FocusEvent) {\n const next = event.relatedTarget;\n if (next instanceof Node && this.host.nativeElement.contains(next)) return;\n this.expanded.set(false);\n }\n\n protected onClear(event: MouseEvent) {\n this.clear(event);\n this.focus();\n }\n\n protected onRemoveClick(index: number, event: MouseEvent) {\n event.stopPropagation();\n this.remove(index, event);\n }\n\n private bindRow() {\n const row = this.rowRef().nativeElement;\n\n this.ring = createArrowNavigation(row, {\n itemSelector: `${CHIP_SELECTOR}, [data-part='field'] > [data-part='input']`,\n loop: false,\n /* The field keeps the caret keys while there is anything to move the\n caret through, and gives them up when the text is empty. */\n ownedKeys: (item) =>\n item instanceof HTMLInputElement && item.value !== ''\n ? ['ArrowLeft', 'ArrowRight', 'Home', 'End']\n : [],\n });\n\n this.removal = createRemovalFocus(row, {\n fallback: () => this.controlRef().nativeElement,\n itemSelector: CHIP_SELECTOR,\n });\n\n this.gate = createWidthGate(this.host.nativeElement, {\n at: NARROW_WIDTH,\n onChange: (narrow) => this.narrow.set(narrow),\n });\n\n this.collapse = createCollapse(row, {\n collapsible: () => this.collapsing(),\n onChange: (units) => this.hiddenCount.set(Math.max(units.length, 1)),\n trigger: () => this.countRef()?.nativeElement ?? null,\n /* The count is the trigger, not a unit. */\n units: () =>\n [...row.querySelectorAll<HTMLElement>(CHIP_SELECTOR)].filter(\n (unit) => !unit.hasAttribute('data-count'),\n ),\n });\n }\n\n writeValue(value: readonly string[] | null) {\n this.value.set(value === null ? [] : [...value]);\n }\n\n registerOnChange(fn: (value: readonly string[]) => void) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n registerOnValidatorChange(fn: () => void) {\n this.validatorChange = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabledByForm.set(isDisabled);\n }\n\n /**\n * Four validities the family owns: a required control holding nothing, a\n * list over its limit, a list holding a value twice where duplicates are\n * refused, and — the one no other family reports — the values in the list\n * that failed the judgement, by name, so a form can say which.\n */\n validate(): ValidationErrors | null {\n const held = this.value();\n if (this.resolvedRequired() && held.length === 0) return { required: true };\n\n const limit = this.resolvedMax();\n if (limit !== null && held.length > limit) {\n return { tooMany: { max: limit, actual: held.length } };\n }\n\n const failed = held.filter((_, index) => this.verdicts()[index]?.valid === false);\n if (failed.length > 0) return { invalidValues: failed };\n\n if (!this.resolvedAllowDuplicates() && new Set(held).size !== held.length) {\n return { duplicate: true };\n }\n return 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-tags-input.mjs","sources":["../../tags-input/src/tags-input-defaults.ts","../../tags-input/src/tags-input.ts","../../tags-input/src/slotted-angular-tags-input.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\nimport type { Provider } from '@angular/core';\nimport type { ClipboardOutcome } from '@slotted/core/clipboard';\nimport type { TagsRefuseCause, TagsValidator } from '@slotted/core/tags';\n\nexport type TagsInputSize = 'sm' | 'md' | 'lg';\nexport type TagsInputVariant = 'outline' | 'subtle' | 'plain';\n\n/** What the row does with more chips than fit on one line. */\nexport type TagsInputOverflow = 'wrap' | 'collapse';\n/** What becomes of a value that fails the judgement: a marked chip, or a report. */\nexport type TagsInputInvalidValues = 'keep' | 'refuse';\n/** What becomes of the pending text when focus leaves the control. */\nexport type TagsInputPendingOnBlur = 'commit' | 'keep' | 'discard';\n\n/**\n * Why the list moved. The five words the React binding states in full, and\n * for the same reason: a consumer writes a different handler for each, and\n * `keyboard` is reorder alone.\n */\nexport type TagsInputValueReason = 'submit' | 'remove' | 'clear' | 'keyboard' | 'programmatic';\nexport type TagsInputInputReason = 'keyboard' | 'submit' | 'clear' | 'blur' | 'programmatic';\nexport type TagsInputRefuseCause = TagsRefuseCause;\nexport type TagsInputValidator = TagsValidator;\nexport type TagsInputCopyOutcome = ClipboardOutcome;\n\nexport interface TagsInputDefaults {\n addOnPaste: boolean;\n allowDuplicates: boolean;\n clearable: boolean;\n /** The characters that commit the typed text, and split a paste. */\n delimiters: readonly string[];\n disabled: boolean;\n editable: boolean;\n fullWidth: boolean;\n invalid: boolean;\n invalidValues: TagsInputInvalidValues;\n /** The most values the list may hold, or `null` for no limit. */\n max: number | null;\n overflow: TagsInputOverflow;\n pendingOnBlur: TagsInputPendingOnBlur;\n readOnly: boolean;\n reorderable: boolean;\n required: boolean;\n size: TagsInputSize;\n variant: TagsInputVariant;\n}\n\n/**\n * The numbers, and why they are these numbers. The React binding's\n * `TAGS_INPUT_FALLBACK` states the reasoning; the values are the same, and\n * they have to be — an application that renders both bindings would otherwise\n * ship two controls that behave differently under the same name.\n */\nexport const TAGS_INPUT_FALLBACK: TagsInputDefaults = {\n addOnPaste: true,\n allowDuplicates: false,\n clearable: true,\n delimiters: [','],\n disabled: false,\n editable: false,\n fullWidth: true,\n invalid: false,\n invalidValues: 'keep',\n max: null,\n overflow: 'wrap',\n pendingOnBlur: 'commit',\n readOnly: false,\n reorderable: false,\n required: false,\n size: 'md',\n variant: 'outline',\n};\n\nexport const TAGS_INPUT_DEFAULTS = new InjectionToken<TagsInputDefaults>('TAGS_INPUT_DEFAULTS', {\n providedIn: 'root',\n factory: () => TAGS_INPUT_FALLBACK,\n});\n\n/**\n * The decisions an application takes once. Its words come from the language in\n * force (`provideSlotted`).\n */\nexport function provideTagsInputDefaults(defaults: Partial<TagsInputDefaults>): Provider {\n return { provide: TAGS_INPUT_DEFAULTS, useValue: { ...TAGS_INPUT_FALLBACK, ...defaults } };\n}\n\nexport function injectTagsInputDefaults(): TagsInputDefaults {\n return inject(TAGS_INPUT_DEFAULTS);\n}\n","import { writeToClipboard } from '@slotted/core/clipboard';\nimport { createFilter, revealWithin } from '@slotted/core/collection';\nimport type { Filter } from '@slotted/core/collection';\nimport { createArrowNavigation, createRemovalFocus } from '@slotted/core/focus';\nimport type { ArrowNavigationHandle, RemovalFocusHandle } from '@slotted/core/focus';\nimport {\n tagsInputMessages,\n type PartialMessages,\n type TagsInputMessages,\n} from '@slotted/core/i18n';\nimport { getLiveAnnouncer } from '@slotted/core/live-announcer';\nimport { createWidthGate } from '@slotted/core/measure';\nimport type { WidthGateHandle } from '@slotted/core/measure';\nimport { createCollapse } from '@slotted/core/overflow';\nimport type { CollapseHandle } from '@slotted/core/overflow';\nimport { createPositioner } from '@slotted/core/positioner';\nimport type { PositionerHandle } from '@slotted/core/positioner';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeRequest } from '@slotted/core/state';\nimport { admitValues, constraintVerdict, joinValues, splitValues } from '@slotted/core/tags';\nimport type { TagsVerdict } from '@slotted/core/tags';\nimport {\n afterNextRender,\n afterRenderEffect,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n ElementRef,\n forwardRef,\n HostAttributeToken,\n inject,\n input,\n model,\n numberAttribute,\n output,\n signal,\n untracked,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport type { OnInit } from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type { ControlValueAccessor, ValidationErrors, Validator } from '@angular/forms';\nimport { injectLocale, injectMessages } from '@slotted/angular/i18n';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport { SlField } from '@slotted/angular/field';\n\nimport { injectTagsInputDefaults } from './tags-input-defaults';\nimport type {\n TagsInputCopyOutcome,\n TagsInputInputReason,\n TagsInputInvalidValues,\n TagsInputOverflow,\n TagsInputPendingOnBlur,\n TagsInputRefuseCause,\n TagsInputSize,\n TagsInputValidator,\n TagsInputValueReason,\n TagsInputVariant,\n} from './tags-input-defaults';\n\n/** The chips in the row, in the order the row holds them. */\nexport const CHIP_SELECTOR = \"[data-part='chips'] > [role='gridcell']:not([data-part='field'])\";\n\n/** The width, in CSS pixels, under which a chip has no room for a word. */\nexport const NARROW_WIDTH = 120;\n\nfunction same(a: readonly string[], b: readonly string[]) {\n return a.length === b.length && a.every((value, index) => value === b[index]);\n}\n\n/** How long the chip that answered a duplicate stays marked: the theme's long step. */\nfunction longDuration(element: HTMLElement) {\n const raw = element.ownerDocument.defaultView\n ?.getComputedStyle(element)\n .getPropertyValue('--slotted-duration-long')\n .trim();\n if (raw === undefined || raw === '') return 320;\n const number = Number.parseFloat(raw);\n if (!Number.isFinite(number)) return 320;\n return raw.endsWith('ms') ? number : number * 1000;\n}\n\n/**\n * A frame of typed values, with a field that adds more.\n *\n * **The host element is the frame**, as `sl-multi-select`'s is: it carries\n * `data-ui`, and the grid, the chips, the field, the counter and the clear\n * button are its template.\n *\n * **The value is a list of texts, and the text is the label.** There is no\n * collection behind it, which is what separates this family from\n * `multi-select`.\n *\n * **A value that fails is held and shown.** Every value is judged at render —\n * by `validate`, or by the input's own constraints through the browser — and a\n * value that fails wears the danger tone, the alert mark and a description,\n * marks the host, puts `invalidValues` on the form control through the\n * `Validator`, and blocks the native submit through `setCustomValidity`.\n *\n * **What is refused is reported, not dropped.** `valueRefuse` carries the\n * values that did not get in and the cause.\n *\n * **Suggestions make the input a combobox.** With `suggestions` the input\n * takes the APG combobox's list autocomplete without automatic selection: the\n * listbox under the frame holds what the typed text matches, nothing is\n * highlighted until an arrow key moves, and the text the reader typed still\n * commits as it does without them.\n */\n@Component({\n selector: 'sl-tags-input',\n standalone: true,\n exportAs: 'slTagsInput',\n imports: [SlGlyph, SlIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n /* `tag`'s sheet beside this family's own: the chips wear its identifier. */\n styleUrls: ['../../../styles/src/tags-input/tags-input.css', '../../../styles/src/tag/tag.css'],\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SlTagsInput), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => SlTagsInput), multi: true },\n ],\n host: {\n 'data-ui': 'tags-input',\n 'data-ui-tags-input': '',\n 'data-part': 'root',\n 'data-part-root': '',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-variant]': 'resolvedVariant()',\n '[attr.data-overflow]': 'resolvedOverflow()',\n '[attr.data-full-width]': \"resolvedFullWidth() ? '' : null\",\n '[attr.data-disabled]': \"resolvedDisabled() ? '' : null\",\n '[attr.data-readonly]': \"resolvedReadOnly() ? '' : null\",\n '[attr.data-invalid]': \"isInvalid() ? '' : null\",\n '[attr.data-required]': \"resolvedRequired() ? '' : null\",\n '[attr.data-complete]': \"full() ? '' : null\",\n '[attr.data-narrow]': \"narrow() ? '' : null\",\n '[attr.data-expanded]': \"resolvedOverflow() === 'collapse' && expanded() ? '' : null\",\n '(focusin)': 'onFocusIn()',\n '(focusout)': 'onFocusOut($event)',\n },\n template: `\n <div\n data-part=\"control\"\n data-part-control=\"\"\n role=\"grid\"\n [attr.aria-label]=\"gridLabel()\"\n [attr.aria-labelledby]=\"gridLabelledBy()\"\n >\n <div\n data-part=\"chips\"\n data-part-chips=\"\"\n role=\"row\"\n #row\n [attr.aria-label]=\"countText()\"\n [attr.aria-describedby]=\"hintId\"\n >\n @for (chip of value(); track trackChip(index, chip); let index = $index) {\n @if (editingIndex() === index) {\n <span\n role=\"gridcell\"\n tabindex=\"-1\"\n data-ui=\"tag\"\n data-ui-tag=\"\"\n data-part=\"root\"\n data-part-root=\"\"\n data-size=\"sm\"\n data-variant=\"soft\"\n [attr.data-value]=\"chip\"\n >\n <span data-part=\"body\" data-part-body=\"\">\n <input\n type=\"text\"\n [attr.aria-label]=\"labelFor(chip)\"\n [value]=\"editingText()\"\n [size]=\"chip.length || 1\"\n (input)=\"onEditInput($event)\"\n (blur)=\"commitEdit(index, $event)\"\n (keydown)=\"onEditKeyDown(index, $event)\"\n />\n </span>\n </span>\n } @else {\n <span\n role=\"gridcell\"\n tabindex=\"-1\"\n data-ui=\"tag\"\n data-ui-tag=\"\"\n data-part=\"root\"\n data-part-root=\"\"\n data-size=\"sm\"\n data-variant=\"soft\"\n [attr.data-value]=\"chip\"\n [attr.data-disabled]=\"isLocked(chip) || resolvedDisabled() ? '' : null\"\n [attr.data-invalid]=\"messageFor(index) === null ? null : ''\"\n [attr.data-tone]=\"messageFor(index) === null ? null : 'danger'\"\n [attr.data-current]=\"current() === chip ? '' : null\"\n [attr.aria-invalid]=\"messageFor(index) === null ? null : true\"\n [attr.aria-describedby]=\"messageFor(index) === null ? null : messageId(index)\"\n [attr.aria-label]=\"chipLabel(chip, index)\"\n [attr.title]=\"messageFor(index)\"\n (keydown)=\"onChipKeyDown(chip, index, $event)\"\n (dblclick)=\"onChipDoubleClick(chip, index)\"\n >\n <span data-part=\"body\" data-part-body=\"\">\n @if (messageFor(index); as message) {\n <span data-part=\"start\" data-part-start=\"\"\n ><span slIcon><svg slGlyph name=\"circle-alert\"></svg></span\n ></span>\n }\n <span data-part=\"label\" data-part-label=\"\">{{ labelFor(chip) }}</span>\n </span>\n @if (messageFor(index); as message) {\n <span data-part=\"message\" data-part-message=\"\" [id]=\"messageId(index)\">{{\n message\n }}</span>\n }\n @if (!chipFrozen(chip)) {\n <button\n type=\"button\"\n tabindex=\"-1\"\n data-part=\"remove\"\n data-part-remove=\"\"\n [attr.aria-label]=\"removeLabelFor(chip)\"\n (click)=\"onRemoveClick(index, $event)\"\n >\n <span slIcon><svg slGlyph name=\"x\"></svg></span>\n </button>\n }\n </span>\n }\n }\n @if (collapsing()) {\n <span\n #count\n hidden\n role=\"gridcell\"\n tabindex=\"-1\"\n data-count\n data-ui=\"tag\"\n data-ui-tag=\"\"\n data-part=\"root\"\n data-part-root=\"\"\n data-size=\"sm\"\n data-variant=\"outline\"\n (click)=\"focus()\"\n >\n <span data-part=\"body\" data-part-body=\"\">\n <span data-part=\"label\" data-part-label=\"\">+{{ hiddenCount() }}</span>\n </span>\n </span>\n }\n <span data-part=\"field\" data-part-field=\"\" role=\"gridcell\">\n <input\n #control\n data-part=\"input\"\n data-part-input=\"\"\n [type]=\"type()\"\n [id]=\"controlId()\"\n [value]=\"inputValue()\"\n [disabled]=\"resolvedDisabled()\"\n [readOnly]=\"resolvedReadOnly()\"\n [required]=\"resolvedRequired() && value().length === 0\"\n [placeholder]=\"placeholder()\"\n [attr.name]=\"null\"\n [attr.list]=\"list() ?? null\"\n [attr.pattern]=\"pattern() ?? null\"\n [attr.minlength]=\"minLength() ?? null\"\n [attr.maxlength]=\"maxLength() ?? null\"\n [attr.inputmode]=\"inputMode() ?? null\"\n [attr.autocomplete]=\"autocomplete() ?? null\"\n [attr.aria-label]=\"ariaLabel() ?? null\"\n [attr.aria-describedby]=\"describedBy()\"\n [attr.aria-invalid]=\"isInvalid() ? true : null\"\n [attr.role]=\"suggestions() === undefined ? null : 'combobox'\"\n [attr.aria-autocomplete]=\"suggestions() === undefined ? null : 'list'\"\n [attr.aria-expanded]=\"suggestions() === undefined ? null : popup()\"\n [attr.aria-controls]=\"popup() ? listboxId : null\"\n [attr.aria-activedescendant]=\"active() < 0 ? null : optionId(active())\"\n (input)=\"onInput($event)\"\n (keydown)=\"onKeyDown($event)\"\n (paste)=\"onPaste($event)\"\n (blur)=\"onBlur($event)\"\n />\n </span>\n </div>\n </div>\n\n @if (counterText(); as counter) {\n <span data-part=\"counter\" data-part-counter=\"\" aria-hidden=\"true\">{{ counter }}</span>\n }\n @if (showClear()) {\n <button\n type=\"button\"\n data-part=\"clear\"\n data-part-clear=\"\"\n [attr.aria-label]=\"t('clear')\"\n (click)=\"onClear($event)\"\n >\n <span slIcon><svg slGlyph name=\"x\"></svg></span>\n </button>\n }\n <span data-part=\"hint\" data-part-hint=\"\" [id]=\"hintId\">{{ hintText() }}</span>\n @if (popup()) {\n <div\n #suggestionList\n data-part=\"suggestions\"\n data-part-suggestions=\"\"\n role=\"listbox\"\n [id]=\"listboxId\"\n [attr.aria-label]=\"t('suggestions')\"\n >\n @for (entry of matches(); track $index) {\n <!-- Focus stays in the input: the option is chosen, not focused. -->\n <div\n data-part=\"suggestion\"\n data-part-suggestion=\"\"\n role=\"option\"\n [id]=\"optionId($index)\"\n [attr.aria-selected]=\"$index === active()\"\n [attr.data-highlighted]=\"$index === active() ? '' : null\"\n (pointerdown)=\"$event.preventDefault()\"\n (pointermove)=\"highlight.set($index)\"\n (click)=\"choose(entry, $event)\"\n >\n {{ labelFor(entry) }}\n </div>\n }\n </div>\n }\n\n <!--\n One hidden input per value, all under the same name: that is how a plain\n FormData receives several values under one key.\n -->\n @if (name(); as submissionName) {\n @for (held of value(); track trackChip(index, held); let index = $index) {\n <input type=\"hidden\" [name]=\"submissionName\" [attr.form]=\"form() ?? null\" [value]=\"held\" />\n }\n }\n `,\n})\nexport class SlTagsInput implements ControlValueAccessor, OnInit, Validator {\n private static readonly flag = (given: boolean | string | undefined) =>\n given === undefined ? undefined : booleanAttribute(given);\n private static readonly count = (given: number | string | undefined) =>\n given === undefined ? undefined : numberAttribute(given);\n\n /** The values, in the order the reader gave them. */\n readonly value = model<readonly string[]>([]);\n readonly valueChangeRequest = output<ChangeRequest<readonly string[]>>();\n /** What an unbound `value` starts from, read once. */\n readonly defaultValue = input<readonly string[] | undefined>(undefined);\n\n /** The characters in the field, which are not yet a value. */\n readonly inputValue = model<string>('');\n readonly inputValueChangeRequest = output<ChangeRequest<string>>();\n\n /** What the family refused, and why. It holds no state and cancels nothing. */\n readonly valueRefuse = output<{ values: readonly string[]; cause: TagsInputRefuseCause }>();\n /** What was put on the clipboard, and whether it got there. */\n readonly valueCopy = output<{ values: readonly string[]; outcome: TagsInputCopyOutcome }>();\n\n readonly ariaLabel = input<string | undefined>(undefined, { alias: 'aria-label' });\n readonly placeholder = input<string>('');\n readonly name = input<string | undefined>(undefined);\n readonly form = input<string | undefined>(undefined);\n readonly type = input<'text' | 'email' | 'url' | 'tel' | 'search'>('text');\n readonly list = input<string | undefined>(undefined);\n readonly pattern = input<string | undefined>(undefined);\n readonly minLength = input(undefined, { transform: SlTagsInput.count });\n readonly maxLength = input(undefined, { transform: SlTagsInput.count });\n readonly inputMode = input<string | undefined>(undefined);\n readonly autocomplete = input<string | undefined>(undefined);\n /** BCP 47, for the comparison the duplicate rule makes. The language in force when absent. */\n readonly locale = input<string | undefined>(undefined);\n /** `validateValue` rather than `validate`, which is the Validator's own method. */\n readonly validateValue = input<TagsInputValidator | undefined>(undefined);\n /** Runs before a value is judged. Trim by default. */\n readonly normalize = input<((text: string) => string) | undefined>(undefined);\n /**\n * Values the reader may choose instead of typing them whole. Present, the\n * input is a combobox: a listbox under the field holds the suggestions the\n * typed text matches by the locale's collator, minus the values already\n * chosen; ArrowDown and ArrowUp move through it and Enter adds the\n * highlighted one. A chosen suggestion is normalized, judged, deduplicated\n * and capped like typed text, and typed text still commits as it does\n * without suggestions.\n */\n readonly suggestions = input<readonly string[] | undefined>(undefined);\n /** How a paste is split. The default splits on the delimiters and on line breaks. */\n readonly split = input<((text: string) => readonly string[]) | undefined>(undefined);\n /** The chip's text for a value. */\n readonly formatLabel = input<((value: string) => string) | undefined>(undefined);\n /** The values the reader may not remove. */\n readonly lockedValues = input<readonly string[]>([]);\n readonly delimiters = input<readonly string[] | undefined>(undefined);\n readonly max = input(undefined, { transform: SlTagsInput.count });\n\n readonly size = input<TagsInputSize | undefined>(undefined);\n readonly variant = input<TagsInputVariant | undefined>(undefined);\n readonly overflow = input<TagsInputOverflow | undefined>(undefined);\n readonly invalidValues = input<TagsInputInvalidValues | undefined>(undefined);\n readonly pendingOnBlur = input<TagsInputPendingOnBlur | undefined>(undefined);\n\n /**\n * Words laid over the catalog of the language in force, key by key: the\n * clear button, the chips, the counter, the hint, and the sentences the\n * announcer says.\n */\n readonly messages = input<PartialMessages<TagsInputMessages> | undefined>(undefined);\n\n readonly addOnPaste = input(undefined, { transform: SlTagsInput.flag });\n readonly allowDuplicates = input(undefined, { transform: SlTagsInput.flag });\n readonly editable = input(undefined, { transform: SlTagsInput.flag });\n readonly reorderable = input(undefined, { transform: SlTagsInput.flag });\n readonly clearable = input(undefined, { transform: SlTagsInput.flag });\n readonly fullWidth = input(undefined, { transform: SlTagsInput.flag });\n readonly disabled = input(undefined, { transform: SlTagsInput.flag });\n readonly readOnly = input(undefined, { transform: SlTagsInput.flag });\n readonly required = input(undefined, { transform: SlTagsInput.flag });\n readonly invalid = input(undefined, { transform: SlTagsInput.flag });\n\n private readonly defaults = injectTagsInputDefaults();\n /** The family's words in the language in force, with this control's `messages` laid over them. */\n readonly t = injectMessages(tagsInputMessages, this.messages);\n private readonly inForceLocale = injectLocale();\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly controlRef = viewChild.required<{ nativeElement: HTMLInputElement }>('control');\n private readonly rowRef = viewChild.required<{ nativeElement: HTMLElement }>('row');\n private readonly countRef = viewChild<{ nativeElement: HTMLElement }>('count');\n private readonly listRef = viewChild<{ nativeElement: HTMLElement }>('suggestionList');\n\n readonly field = inject(SlField, { optional: true });\n\n private readonly identifier = Math.random().toString(36).slice(2, 8);\n private readonly ownId = `sl-tags-input-${this.identifier}`;\n readonly hintId = `${this.ownId}-hint`;\n readonly listboxId = `${this.ownId}-suggestions`;\n\n readonly hiddenCount = signal(1);\n readonly narrow = signal(false);\n readonly expanded = signal(false);\n /** The value a refused duplicate is already held under, marked for one long step. */\n readonly current = signal<string | null>(null);\n readonly editingIndex = signal<number | null>(null);\n readonly editingText = signal('');\n /** Whether the reader asked for the suggestions, by typing or by an arrow key. */\n private readonly suggesting = signal(false);\n /** The highlighted suggestion's index, or -1 while none is. */\n readonly highlight = signal(-1);\n\n private ring: ArrowNavigationHandle | null = null;\n private removal: RemovalFocusHandle | null = null;\n private collapse: CollapseHandle | null = null;\n private gate: WidthGateHandle | null = null;\n private currentTimer: ReturnType<typeof setTimeout> | null = null;\n private placement: PositionerHandle | null = null;\n private placedOn: HTMLElement | null = null;\n private reverting = false;\n private disabledByForm = signal<boolean | undefined>(undefined);\n\n private readonly hostId = inject(new HostAttributeToken('id'), { optional: true });\n\n private onChange: (value: readonly string[]) => void = () => undefined;\n private onTouched: () => void = () => undefined;\n private validatorChange: () => void = () => undefined;\n\n readonly resolvedSize = computed(() => this.size() ?? this.field?.size() ?? this.defaults.size);\n readonly resolvedVariant = computed(() => this.variant() ?? this.defaults.variant);\n readonly resolvedOverflow = computed(() => this.overflow() ?? this.defaults.overflow);\n readonly resolvedInvalidValues = computed(\n () => this.invalidValues() ?? this.defaults.invalidValues,\n );\n readonly resolvedPendingOnBlur = computed(\n () => this.pendingOnBlur() ?? this.defaults.pendingOnBlur,\n );\n readonly resolvedClearable = computed(() => this.clearable() ?? this.defaults.clearable);\n readonly resolvedFullWidth = computed(() => this.fullWidth() ?? this.defaults.fullWidth);\n readonly resolvedEditable = computed(() => this.editable() ?? this.defaults.editable);\n readonly resolvedReorderable = computed(() => this.reorderable() ?? this.defaults.reorderable);\n readonly resolvedAddOnPaste = computed(() => this.addOnPaste() ?? this.defaults.addOnPaste);\n readonly resolvedAllowDuplicates = computed(\n () => this.allowDuplicates() ?? this.defaults.allowDuplicates,\n );\n readonly resolvedDelimiters = computed(() => this.delimiters() ?? this.defaults.delimiters);\n readonly resolvedMax = computed(() => this.max() ?? this.defaults.max);\n\n readonly resolvedDisabled = computed(\n () =>\n this.disabled() ?? this.disabledByForm() ?? this.field?.disabled() ?? this.defaults.disabled,\n );\n readonly resolvedReadOnly = computed(\n () => this.readOnly() ?? this.field?.readOnly() ?? this.defaults.readOnly,\n );\n readonly resolvedRequired = computed(\n () => this.required() ?? this.field?.required() ?? this.defaults.required,\n );\n readonly resolvedInvalid = computed(\n () => this.invalid() ?? this.field?.invalid() ?? this.defaults.invalid,\n );\n\n readonly controlId = computed(() => this.hostId ?? this.field?.ids().control ?? this.ownId);\n readonly describedBy = computed(() => this.field?.describedBy() ?? null);\n readonly frozen = computed(() => this.resolvedReadOnly() || this.resolvedDisabled());\n readonly collapsing = computed(() => this.resolvedOverflow() === 'collapse' && !this.expanded());\n /** The list has reached `max` and takes nothing more. */\n readonly full = computed(() => {\n const limit = this.resolvedMax();\n return limit !== null && this.value().length >= limit;\n });\n\n private readonly collator = computed<Filter>(() =>\n createFilter({ locale: this.locale() ?? this.inForceLocale() }),\n );\n\n /** What the typed text matches, by the locale's collator, minus what is already chosen. */\n readonly matches = computed<readonly string[]>(() => {\n const suggestions = this.suggestions();\n if (suggestions === undefined) return [];\n const { contains, equals } = this.collator();\n const query = this.inputValue().trim();\n const held = this.value();\n return suggestions.filter(\n (entry) => contains(entry, query) && !held.some((chosen) => equals(chosen, entry)),\n );\n });\n readonly popup = computed(\n () =>\n this.suggestions() !== undefined &&\n this.suggesting() &&\n !this.frozen() &&\n this.matches().length > 0,\n );\n readonly active = computed(() =>\n this.popup() && this.highlight() < this.matches().length ? this.highlight() : -1,\n );\n\n /**\n * A detached input carrying the visible one's constraints, rebuilt when they\n * change, so the platform's judgement reads the attributes the template is\n * about to write rather than the ones it wrote last time.\n */\n private readonly probe = computed(() => {\n const element = this.host.nativeElement.ownerDocument.createElement('input');\n element.type = this.type();\n const pattern = this.pattern();\n if (pattern !== undefined) element.setAttribute('pattern', pattern);\n const minLength = this.minLength();\n if (minLength !== undefined) element.minLength = minLength;\n const maxLength = this.maxLength();\n if (maxLength !== undefined) element.maxLength = maxLength;\n return element;\n });\n\n /**\n * Validity is a function of the value alone, judged at render, so a value a\n * form wrote in with an invalid entry is marked like one the reader typed.\n */\n readonly verdicts = computed<readonly TagsVerdict[]>(() =>\n this.value().map((entry) => this.judge(entry)),\n );\n readonly firstFailure = computed(() => this.verdicts().find((verdict) => !verdict.valid));\n readonly isInvalid = computed(() => {\n const limit = this.resolvedMax();\n return (\n this.resolvedInvalid() ||\n this.firstFailure() !== undefined ||\n (limit !== null && this.value().length > limit)\n );\n });\n\n readonly countText = computed(() => this.t('count', { count: this.value().length }));\n readonly gridLabel = computed(() => {\n const label = this.ariaLabel();\n return label === undefined ? null : this.t('countNamed', { label, count: this.value().length });\n });\n readonly gridLabelledBy = computed(() =>\n this.ariaLabel() === undefined && this.field ? this.field.ids().label : null,\n );\n readonly hintText = computed(() =>\n this.resolvedEditable() ? this.t('editHint') : this.t('hint'),\n );\n\n readonly showClear = computed(\n () =>\n this.resolvedClearable() &&\n (this.value().some((entry) => !this.isLocked(entry)) || this.inputValue() !== '') &&\n !this.frozen(),\n );\n\n readonly counterText = computed(() => {\n const limit = this.resolvedMax();\n if (limit !== null) {\n return this.t('counter', { count: this.value().length, max: limit });\n }\n if (this.narrow() && this.value().length > 0) return this.countText();\n return null;\n });\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n\n afterNextRender(() => this.bindRow());\n\n /* A value arriving or leaving changes what there is to fit, and which cells\n the ring walks. */\n afterRenderEffect(() => {\n this.value();\n this.collapsing();\n untracked(() => {\n this.ring?.refresh();\n this.collapse?.refresh();\n });\n });\n\n /**\n * The platform's own gate: while the list holds an invalid value, or more\n * than `max`, the visible input carries the verdict as its custom validity,\n * so a plain form refuses to submit and shows the browser's bubble on the\n * control the reader is looking at.\n */\n afterRenderEffect(() => {\n const failure = this.firstFailure();\n const limit = this.resolvedMax();\n const count = this.value().length;\n const message =\n failure === undefined\n ? limit !== null && count > limit\n ? this.t('counter', { count, max: limit })\n : ''\n : failure.message || this.t('invalid');\n untracked(() => this.controlRef().nativeElement.setCustomValidity(message));\n });\n\n /* Under the frame and as wide as it, flipped above when there is no room. */\n afterRenderEffect(() => {\n const list = this.listRef()?.nativeElement ?? null;\n untracked(() => {\n if (list === this.placedOn) return;\n this.placement?.destroy();\n this.placement = null;\n this.placedOn = list;\n if (list === null) return;\n this.placement = createPositioner(this.host.nativeElement, list, {\n side: 'bottom',\n align: 'start',\n sideOffset: 4,\n matchWidth: true,\n strategy: 'fixed',\n });\n void this.placement.update();\n });\n });\n\n /* The highlighted suggestion is kept in sight inside a list that scrolls. */\n afterRenderEffect(() => {\n const active = this.active();\n const list = this.listRef()?.nativeElement;\n if (active < 0 || list === undefined) return;\n const option = list.querySelector<HTMLElement>(`[id=\"${this.optionId(active)}\"]`);\n if (option !== null) revealWithin(option, list);\n });\n\n /* A Reactive Form is told when what the family judges has changed. */\n effect(() => {\n this.verdicts();\n this.resolvedMax();\n this.resolvedRequired();\n untracked(() => this.validatorChange());\n });\n\n destroyRef.onDestroy(() => {\n this.ring?.destroy();\n this.removal?.destroy();\n this.collapse?.destroy();\n this.gate?.destroy();\n this.placement?.destroy();\n if (this.currentTimer !== null) clearTimeout(this.currentTimer);\n });\n }\n\n ngOnInit() {\n const seed = this.defaultValue();\n if (seed === undefined || this.value().length > 0) return;\n this.value.set([...seed]);\n }\n\n protected trackChip(index: number, value: string) {\n /* The value, and its ordinal among equal values when duplicates are\n allowed, so a reorder keeps the chip — and the focus on it. */\n let times = 0;\n const held = this.value();\n for (let at = 0; at < index; at += 1) if (held[at] === value) times += 1;\n return times === 0 ? value : `${value}\u0000${times}`;\n }\n\n labelFor(value: string): string {\n const format = this.formatLabel();\n return format === undefined ? value : format(value);\n }\n\n isLocked(value: string): boolean {\n return this.lockedValues().includes(value);\n }\n\n protected chipFrozen(value: string): boolean {\n return this.frozen() || this.isLocked(value);\n }\n\n protected optionId(index: number) {\n return `${this.listboxId}-${index}`;\n }\n\n protected messageId(index: number) {\n return `${this.ownId}-message-${index}`;\n }\n\n protected messageFor(index: number): string | null {\n const verdict = this.verdicts()[index];\n if (verdict === undefined || verdict.valid) return null;\n return verdict.message || this.t('invalid');\n }\n\n protected removeLabelFor(value: string) {\n return this.t('remove', { label: this.labelFor(value) });\n }\n\n protected chipLabel(value: string, index: number) {\n if (!this.resolvedReorderable()) return null;\n return this.t('reorder', {\n label: this.labelFor(value),\n position: index + 1,\n count: this.value().length,\n });\n }\n\n private judge(text: string): TagsVerdict {\n const validate = this.validateValue();\n if (validate === undefined) return constraintVerdict(this.probe(), text);\n const answer = validate(text);\n if (answer === true) return { valid: true };\n return { valid: false, message: answer === false ? '' : answer };\n }\n\n focus() {\n this.controlRef().nativeElement.focus({ preventScroll: true });\n }\n\n private announce(message: string) {\n if (message === '') return;\n getLiveAnnouncer(this.host.nativeElement.ownerDocument).announce(message, { repeat: true });\n }\n\n setInputValue(next: string, reason: TagsInputInputReason, source?: Event) {\n if (next === this.inputValue()) return;\n const state = createControllable<string>({\n initial: this.inputValue(),\n onRequest: (request) => this.inputValueChangeRequest.emit(request),\n });\n if (state.request(next, reason, source)) this.inputValue.set(next);\n }\n\n /** One request for one transition, whatever moved the list. */\n private commit(next: readonly string[], reason: TagsInputValueReason, source?: Event) {\n if (same(next, this.value())) return false;\n const state = createControllable<readonly string[]>({\n initial: this.value(),\n onRequest: (request) => this.valueChangeRequest.emit(request),\n });\n if (!state.request(next, reason, source)) return false;\n this.value.set(next);\n this.onChange(next);\n this.onTouched();\n return true;\n }\n\n /**\n * The one door into the list. Every candidate runs the sequence\n * `@slotted/core/tags` states — normalise, judge, deduplicate, cap — and each\n * refusal is reported under its cause rather than dropped.\n */\n admit(candidates: readonly string[], source?: Event, replacing?: number) {\n const normalize = this.normalize() ?? ((text: string) => text.trim());\n const result = admitValues({\n values: this.value(),\n candidates,\n max: this.resolvedMax(),\n allowDuplicates: this.resolvedAllowDuplicates(),\n invalidValues: this.resolvedInvalidValues(),\n normalize,\n judge: (text) => this.judge(text),\n equals: this.collator().equals,\n ...(replacing === undefined ? {} : { replacing }),\n });\n\n if (result.added.length > 0 && this.commit(result.next, 'submit', source)) {\n const last = result.added[result.added.length - 1] as string;\n const verdict = this.judge(last);\n const label = this.labelFor(last);\n const count = result.next.length;\n this.announce(\n verdict.valid\n ? this.t('added', { label, count })\n : this.t('addedInvalid', { label, count, reason: verdict.message || this.t('invalid') }),\n );\n }\n\n for (const cause of ['duplicate', 'limit', 'invalid'] as const) {\n if (result.refused[cause].length === 0) continue;\n this.valueRefuse.emit({ values: result.refused[cause], cause });\n }\n if (result.existing.length > 0) {\n const existing = result.existing[0] as string;\n this.markCurrent(existing);\n this.announce(this.t('duplicate', { label: this.labelFor(existing) }));\n queueMicrotask(() => this.focusChip(existing));\n }\n const limit = this.resolvedMax();\n if (result.refused.limit.length > 0 && limit !== null) {\n this.announce(this.t('counter', { count: limit, max: limit }));\n }\n if (result.refused.invalid.length > 0) this.announce(this.t('invalid'));\n return result;\n }\n\n /** The chip that answered a duplicate stays marked for one long step. */\n private markCurrent(value: string) {\n this.current.set(value);\n if (this.currentTimer !== null) clearTimeout(this.currentTimer);\n this.currentTimer = setTimeout(() => {\n this.current.set(null);\n this.currentTimer = null;\n }, longDuration(this.host.nativeElement));\n }\n\n remove(index: number, source?: Event) {\n const held = this.value();\n const target = held[index];\n if (target === undefined || this.isLocked(target)) return;\n const next = held.filter((_, at) => at !== index);\n if (this.commit(next, 'remove', source)) {\n this.announce(this.t('removed', { label: this.labelFor(target), count: next.length }));\n }\n }\n\n clear(source?: Event) {\n const kept = this.value().filter((entry) => this.isLocked(entry));\n this.commit(kept, 'clear', source);\n this.setInputValue('', 'clear', source);\n }\n\n /** Reorder, and the only shape it has: one value moving to one index. */\n move(from: number, to: number, source?: Event) {\n const held = this.value();\n if (from < 0 || from >= held.length) return;\n const target = Math.min(Math.max(to, 0), held.length - 1);\n if (target === from) return;\n\n const next = [...held];\n const [moved] = next.splice(from, 1);\n next.splice(target, 0, moved as string);\n if (!this.commit(next, 'keyboard', source)) return;\n this.announce(\n this.t('reorder', {\n label: this.labelFor(moved as string),\n position: target + 1,\n count: next.length,\n }),\n );\n /* The chip travelled with the reader's focus; the ring has to be told the\n cells moved under it. */\n queueMicrotask(() => {\n this.ring?.refresh();\n this.chips()[target]?.focus({ preventScroll: true });\n });\n }\n\n async copy(values: readonly string[]) {\n if (values.length === 0) return;\n const outcome = await writeToClipboard(\n joinValues(values, this.resolvedDelimiters()),\n this.host.nativeElement.ownerDocument,\n );\n this.valueCopy.emit({ values, outcome });\n if (outcome !== 'refused') {\n this.announce(this.t('copied', { count: values.length }));\n }\n }\n\n setValue(values: readonly string[], reason: TagsInputValueReason = 'programmatic') {\n this.commit([...values], reason);\n }\n\n private chips(): HTMLElement[] {\n return [...this.host.nativeElement.querySelectorAll<HTMLElement>(CHIP_SELECTOR)];\n }\n\n private focusChip(value: string) {\n const chip = this.chips().find((candidate) => candidate.dataset['value'] === value);\n chip?.focus({ preventScroll: true });\n }\n\n private splitText(text: string): readonly string[] {\n const split = this.split();\n return split === undefined ? splitValues(text, this.resolvedDelimiters()) : split(text);\n }\n\n /** The typed text, committed as one or several values. */\n private commitText(source?: Event) {\n this.closeSuggestions();\n const text = this.inputValue();\n if (text.trim() === '') return false;\n this.admit(this.splitText(text), source);\n this.setInputValue('', 'submit', source);\n return true;\n }\n\n protected onInput(event: Event) {\n const text = (event.target as HTMLInputElement).value;\n this.suggesting.set(text.trim() !== '');\n this.highlight.set(-1);\n this.setInputValue(text, 'keyboard', event);\n }\n\n private closeSuggestions() {\n this.suggesting.set(false);\n this.highlight.set(-1);\n }\n\n /** A suggestion, through the same door as typed text. */\n protected choose(entry: string, source?: Event) {\n this.admit([entry], source);\n this.setInputValue('', 'submit', source);\n this.closeSuggestions();\n }\n\n protected onEditInput(event: Event) {\n this.editingText.set((event.target as HTMLInputElement).value);\n }\n\n protected onEditKeyDown(index: number, event: KeyboardEvent) {\n if (event.key === 'Enter') {\n event.preventDefault();\n this.commitEdit(index, event);\n return;\n }\n if (event.key === 'Escape') {\n event.preventDefault();\n /* The field blurs on the way out, and the blur must not commit what the\n key just reverted. */\n this.reverting = true;\n this.editingIndex.set(null);\n queueMicrotask(() => this.chips()[index]?.focus({ preventScroll: true }));\n }\n }\n\n protected commitEdit(index: number, event: Event) {\n if (this.reverting) {\n this.reverting = false;\n return;\n }\n if (this.editingIndex() !== index) return;\n const text = this.editingText();\n const held = this.value()[index];\n this.editingIndex.set(null);\n if (text.trim() !== '' && text !== held) this.admit([text], event, index);\n queueMicrotask(() => this.chips()[index]?.focus({ preventScroll: true }));\n }\n\n private beginEdit(value: string, index: number) {\n this.reverting = false;\n this.editingText.set(value);\n this.editingIndex.set(index);\n queueMicrotask(() => {\n this.chips()[index]?.querySelector('input')?.focus({ preventScroll: true });\n });\n }\n\n protected onChipDoubleClick(value: string, index: number) {\n if (this.chipFrozen(value) || !this.resolvedEditable()) return;\n this.beginEdit(value, index);\n }\n\n protected onChipKeyDown(value: string, index: number, event: KeyboardEvent) {\n if (event.defaultPrevented) return;\n const meta = event.ctrlKey || event.metaKey;\n const frozen = this.chipFrozen(value);\n\n if (meta && (event.key === 'c' || event.key === 'C')) {\n event.preventDefault();\n void this.copy([value]);\n return;\n }\n if (meta && (event.key === 'x' || event.key === 'X')) {\n if (frozen) return;\n event.preventDefault();\n void this.copy([value]);\n this.remove(index, event);\n return;\n }\n\n switch (event.key) {\n case 'Delete':\n case 'Backspace':\n if (frozen) return;\n event.preventDefault();\n this.remove(index, event);\n return;\n case 'Enter':\n if (frozen || !this.resolvedEditable()) return;\n event.preventDefault();\n this.beginEdit(value, index);\n return;\n case 'Escape':\n event.preventDefault();\n this.focus();\n return;\n default:\n break;\n }\n\n /* Reorder: `Alt` and an arrow, following the writing direction. */\n if (this.resolvedReorderable() && event.altKey && !frozen) {\n const target = event.currentTarget as HTMLElement;\n const rtl = target.ownerDocument.defaultView?.getComputedStyle(target).direction === 'rtl';\n const forward = rtl ? 'ArrowLeft' : 'ArrowRight';\n const back = rtl ? 'ArrowRight' : 'ArrowLeft';\n const count = this.value().length;\n const to =\n event.key === forward\n ? index + 1\n : event.key === back\n ? index - 1\n : event.key === 'Home'\n ? 0\n : event.key === 'End'\n ? count - 1\n : null;\n if (to !== null) {\n event.preventDefault();\n this.move(index, to, event);\n return;\n }\n }\n\n /* A printable character returns to the field and types itself there. */\n if (event.key.length === 1 && !meta && !event.altKey) this.focus();\n }\n\n protected onKeyDown(event: KeyboardEvent) {\n if (this.resolvedDisabled()) return;\n const meta = event.ctrlKey || event.metaKey;\n\n if (!this.frozen() && this.resolvedDelimiters().includes(event.key) && !event.altKey && !meta) {\n event.preventDefault();\n this.commitText(event);\n return;\n }\n\n switch (event.key) {\n case 'ArrowDown':\n case 'ArrowUp': {\n if (this.suggestions() === undefined || this.frozen()) return;\n event.preventDefault();\n const down = event.key === 'ArrowDown';\n const count = this.matches().length;\n const active = this.active();\n if (!this.popup()) {\n this.suggesting.set(true);\n this.highlight.set(down ? 0 : count - 1);\n return;\n }\n /* The APG's list autocomplete: past either end, round to the other. */\n if (active < 0) this.highlight.set(down ? 0 : count - 1);\n else this.highlight.set((active + (down ? 1 : count - 1)) % count);\n return;\n }\n case 'Tab':\n this.closeSuggestions();\n return;\n case 'Enter': {\n /* With text, commits and never submits; with none, the platform's\n implicit submission is left alone. */\n if (this.frozen()) return;\n const active = this.active();\n if (active >= 0) {\n event.preventDefault();\n this.choose(this.matches()[active] as string, event);\n return;\n }\n if (this.commitText(event)) event.preventDefault();\n return;\n }\n case 'Escape':\n /* An open list closes first, and the text stays. */\n if (this.popup()) {\n event.preventDefault();\n this.closeSuggestions();\n return;\n }\n if (this.inputValue() === '') return;\n event.preventDefault();\n this.setInputValue('', 'clear', event);\n return;\n case 'Backspace': {\n /* §6's rule: from an empty field the first press moves focus to the\n last chip the reader may remove and removes nothing; the second\n press — on the chip — removes it. */\n if (this.inputValue() !== '' || this.frozen()) return;\n const control = event.currentTarget as HTMLInputElement;\n if (control.selectionStart !== 0) return;\n const last = this.chips()\n .reverse()\n .find((chip) => !chip.hasAttribute('data-disabled') && !chip.hasAttribute('data-count'));\n if (last === undefined) return;\n event.preventDefault();\n last.focus({ preventScroll: true });\n return;\n }\n case 'c':\n case 'C':\n if (!meta || this.inputValue() !== '' || this.value().length === 0) return;\n event.preventDefault();\n void this.copy(this.value());\n return;\n default:\n break;\n }\n }\n\n /** A paste that carries several values, split by the same rule the key reads. */\n protected onPaste(event: ClipboardEvent) {\n if (!this.resolvedAddOnPaste() || this.frozen()) return;\n const text = event.clipboardData?.getData('text') ?? '';\n const parts = this.splitText(text);\n if (parts.length < 2) return;\n event.preventDefault();\n this.admit(parts, event);\n this.setInputValue('', 'submit', event);\n }\n\n protected onBlur(event: FocusEvent) {\n this.onTouched();\n this.closeSuggestions();\n const next = event.relatedTarget;\n if (next instanceof Node && this.host.nativeElement.contains(next)) return;\n if (this.frozen()) return;\n const policy = this.resolvedPendingOnBlur();\n if (policy === 'commit') this.commitText(event);\n else if (policy === 'discard') this.setInputValue('', 'blur', event);\n }\n\n /* The collapsed row opens while focus is anywhere inside the frame. */\n protected onFocusIn() {\n this.expanded.set(true);\n }\n\n protected onFocusOut(event: FocusEvent) {\n const next = event.relatedTarget;\n if (next instanceof Node && this.host.nativeElement.contains(next)) return;\n this.expanded.set(false);\n }\n\n protected onClear(event: MouseEvent) {\n this.clear(event);\n this.focus();\n }\n\n protected onRemoveClick(index: number, event: MouseEvent) {\n event.stopPropagation();\n this.remove(index, event);\n }\n\n private bindRow() {\n const row = this.rowRef().nativeElement;\n\n this.ring = createArrowNavigation(row, {\n itemSelector: `${CHIP_SELECTOR}, [data-part='field'] > [data-part='input']`,\n loop: false,\n /* The field keeps the caret keys while there is anything to move the\n caret through, and gives them up when the text is empty. */\n ownedKeys: (item) =>\n item instanceof HTMLInputElement && item.value !== ''\n ? ['ArrowLeft', 'ArrowRight', 'Home', 'End']\n : [],\n });\n\n this.removal = createRemovalFocus(row, {\n fallback: () => this.controlRef().nativeElement,\n itemSelector: CHIP_SELECTOR,\n });\n\n this.gate = createWidthGate(this.host.nativeElement, {\n at: NARROW_WIDTH,\n onChange: (narrow) => this.narrow.set(narrow),\n });\n\n this.collapse = createCollapse(row, {\n collapsible: () => this.collapsing(),\n onChange: (units) => this.hiddenCount.set(Math.max(units.length, 1)),\n trigger: () => this.countRef()?.nativeElement ?? null,\n /* The count is the trigger, not a unit. */\n units: () =>\n [...row.querySelectorAll<HTMLElement>(CHIP_SELECTOR)].filter(\n (unit) => !unit.hasAttribute('data-count'),\n ),\n });\n }\n\n writeValue(value: readonly string[] | null) {\n this.value.set(value === null ? [] : [...value]);\n }\n\n registerOnChange(fn: (value: readonly string[]) => void) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n registerOnValidatorChange(fn: () => void) {\n this.validatorChange = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabledByForm.set(isDisabled);\n }\n\n /**\n * Four validities the family owns: a required control holding nothing, a\n * list over its limit, a list holding a value twice where duplicates are\n * refused, and — the one no other family reports — the values in the list\n * that failed the judgement, by name, so a form can say which.\n */\n validate(): ValidationErrors | null {\n const held = this.value();\n if (this.resolvedRequired() && held.length === 0) return { required: true };\n\n const limit = this.resolvedMax();\n if (limit !== null && held.length > limit) {\n return { tooMany: { max: limit, actual: held.length } };\n }\n\n const failed = held.filter((_, index) => this.verdicts()[index]?.valid === false);\n if (failed.length > 0) return { invalidValues: failed };\n\n if (!this.resolvedAllowDuplicates() && new Set(held).size !== held.length) {\n return { duplicate: true };\n }\n return null;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|