@slotted/angular 0.0.0-stage → 0.1.0-beta.1
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/LICENSE +21 -0
- package/README.md +51 -2
- package/docs/AGENTS.snippet.md +10 -0
- package/docs/accordion.json +345 -0
- package/docs/accordion.md +207 -0
- package/docs/action-bar.json +421 -0
- package/docs/action-bar.md +364 -0
- package/docs/action-sheet.json +210 -0
- package/docs/action-sheet.md +19 -0
- package/docs/alert.json +407 -0
- package/docs/alert.md +239 -0
- package/docs/app-shell.examples.md +349 -0
- package/docs/app-shell.json +835 -0
- package/docs/app-shell.md +214 -0
- package/docs/aspect-ratio.json +159 -0
- package/docs/aspect-ratio.md +134 -0
- package/docs/attachment.json +486 -0
- package/docs/attachment.md +253 -0
- package/docs/avatar-group.json +208 -0
- package/docs/avatar-group.md +130 -0
- package/docs/avatar.json +342 -0
- package/docs/avatar.md +142 -0
- package/docs/badge.json +334 -0
- package/docs/badge.md +138 -0
- package/docs/breadcrumb.json +368 -0
- package/docs/breadcrumb.md +237 -0
- package/docs/button-group.json +158 -0
- package/docs/button-group.md +72 -0
- package/docs/button.examples.md +621 -0
- package/docs/button.json +977 -0
- package/docs/button.md +200 -0
- package/docs/calendar.json +592 -0
- package/docs/calendar.md +242 -0
- package/docs/card.json +283 -0
- package/docs/card.md +130 -0
- package/docs/carousel.json +560 -0
- package/docs/carousel.md +357 -0
- package/docs/cascader.json +933 -0
- package/docs/cascader.md +379 -0
- package/docs/chart.examples.md +582 -0
- package/docs/chart.json +1359 -0
- package/docs/chart.md +187 -0
- package/docs/checkbox-group.examples.md +612 -0
- package/docs/checkbox-group.json +395 -0
- package/docs/checkbox-group.md +106 -0
- package/docs/checkbox.examples.md +546 -0
- package/docs/checkbox.json +506 -0
- package/docs/checkbox.md +104 -0
- package/docs/code-block.json +616 -0
- package/docs/code-block.md +303 -0
- package/docs/collapsible.json +456 -0
- package/docs/collapsible.md +261 -0
- package/docs/color-picker.json +523 -0
- package/docs/color-picker.md +201 -0
- package/docs/column-manager.json +486 -0
- package/docs/column-manager.md +277 -0
- package/docs/combobox.examples.md +1732 -0
- package/docs/combobox.json +1250 -0
- package/docs/combobox.md +209 -0
- package/docs/command-palette.json +800 -0
- package/docs/command-palette.md +419 -0
- package/docs/container.json +156 -0
- package/docs/container.md +92 -0
- package/docs/context-menu.json +231 -0
- package/docs/context-menu.md +176 -0
- package/docs/currency-field.examples.md +321 -0
- package/docs/currency-field.json +649 -0
- package/docs/currency-field.md +128 -0
- package/docs/dashboard-grid.json +680 -0
- package/docs/dashboard-grid.md +265 -0
- package/docs/data-grid.examples.md +3064 -0
- package/docs/data-grid.json +1577 -0
- package/docs/data-grid.md +237 -0
- package/docs/data-grid.props.md +81 -0
- package/docs/data-list.json +685 -0
- package/docs/data-list.md +327 -0
- package/docs/date-field.json +490 -0
- package/docs/date-field.md +235 -0
- package/docs/date-picker.examples.md +1226 -0
- package/docs/date-picker.json +696 -0
- package/docs/date-picker.md +121 -0
- package/docs/date-range-picker.examples.md +1300 -0
- package/docs/date-range-picker.json +903 -0
- package/docs/date-range-picker.md +142 -0
- package/docs/datetime-field.json +665 -0
- package/docs/datetime-field.md +337 -0
- package/docs/datetime-picker.examples.md +1269 -0
- package/docs/datetime-picker.json +928 -0
- package/docs/datetime-picker.md +150 -0
- package/docs/datetime-range-picker.examples.md +225 -0
- package/docs/datetime-range-picker.json +1015 -0
- package/docs/datetime-range-picker.md +162 -0
- package/docs/description-list.json +471 -0
- package/docs/description-list.md +268 -0
- package/docs/detail-panel.json +530 -0
- package/docs/detail-panel.md +361 -0
- package/docs/dialog.examples.md +2467 -0
- package/docs/dialog.json +1141 -0
- package/docs/dialog.md +217 -0
- package/docs/dialog.props.md +63 -0
- package/docs/divider.json +148 -0
- package/docs/divider.md +83 -0
- package/docs/drawer.examples.md +1929 -0
- package/docs/drawer.json +753 -0
- package/docs/drawer.md +199 -0
- package/docs/entity-picker.json +946 -0
- package/docs/entity-picker.md +365 -0
- package/docs/event-calendar.examples.md +308 -0
- package/docs/event-calendar.json +1202 -0
- package/docs/event-calendar.md +201 -0
- package/docs/field-group.json +333 -0
- package/docs/field-group.md +181 -0
- package/docs/field.examples.md +676 -0
- package/docs/field.json +528 -0
- package/docs/field.md +127 -0
- package/docs/filter-bar.json +817 -0
- package/docs/filter-bar.md +380 -0
- package/docs/form.json +378 -0
- package/docs/form.md +235 -0
- package/docs/fullscreen.json +395 -0
- package/docs/fullscreen.md +225 -0
- package/docs/grid.json +176 -0
- package/docs/grid.md +74 -0
- package/docs/highlight.json +279 -0
- package/docs/highlight.md +210 -0
- package/docs/hover-card.json +254 -0
- package/docs/hover-card.md +213 -0
- package/docs/icon.json +173 -0
- package/docs/icon.md +101 -0
- package/docs/image.json +476 -0
- package/docs/image.md +254 -0
- package/docs/import-export-center.json +836 -0
- package/docs/import-export-center.md +345 -0
- package/docs/index.md +141 -0
- package/docs/inline-message.json +312 -0
- package/docs/inline-message.md +191 -0
- package/docs/inline.json +149 -0
- package/docs/inline.md +72 -0
- package/docs/kbd.json +350 -0
- package/docs/kbd.md +210 -0
- package/docs/link.json +264 -0
- package/docs/link.md +167 -0
- package/docs/list-item.json +463 -0
- package/docs/list-item.md +236 -0
- package/docs/list.json +321 -0
- package/docs/list.md +185 -0
- package/docs/listbox.json +807 -0
- package/docs/listbox.md +413 -0
- package/docs/loading-overlay.json +440 -0
- package/docs/loading-overlay.md +248 -0
- package/docs/markdown.json +461 -0
- package/docs/markdown.md +266 -0
- package/docs/menu.examples.md +1651 -0
- package/docs/menu.json +922 -0
- package/docs/menu.md +155 -0
- package/docs/menubar.json +292 -0
- package/docs/menubar.md +173 -0
- package/docs/message-scroller.json +401 -0
- package/docs/message-scroller.md +212 -0
- package/docs/message.json +862 -0
- package/docs/message.md +473 -0
- package/docs/multi-select.examples.md +1922 -0
- package/docs/multi-select.json +1314 -0
- package/docs/multi-select.md +213 -0
- package/docs/navigation-menu.json +529 -0
- package/docs/navigation-menu.md +329 -0
- package/docs/notification-center.json +664 -0
- package/docs/notification-center.md +372 -0
- package/docs/number-field.examples.md +1078 -0
- package/docs/number-field.json +668 -0
- package/docs/number-field.md +137 -0
- package/docs/otp-input.json +479 -0
- package/docs/otp-input.md +291 -0
- package/docs/page-header.json +574 -0
- package/docs/page-header.md +338 -0
- package/docs/page.json +332 -0
- package/docs/page.md +184 -0
- package/docs/pagination.json +434 -0
- package/docs/pagination.md +238 -0
- package/docs/popover.examples.md +1235 -0
- package/docs/popover.json +656 -0
- package/docs/popover.md +199 -0
- package/docs/progress-indicator.json +501 -0
- package/docs/progress-indicator.md +329 -0
- package/docs/prompt-composer.json +498 -0
- package/docs/prompt-composer.md +278 -0
- package/docs/prose.json +357 -0
- package/docs/prose.md +226 -0
- package/docs/radio-group.examples.md +626 -0
- package/docs/radio-group.json +541 -0
- package/docs/radio-group.md +112 -0
- package/docs/rating.json +1053 -0
- package/docs/rating.md +435 -0
- package/docs/result-state.json +376 -0
- package/docs/result-state.md +286 -0
- package/docs/saved-views.json +384 -0
- package/docs/saved-views.md +242 -0
- package/docs/scroll-area.json +120 -0
- package/docs/scroll-area.md +8 -0
- package/docs/section.json +344 -0
- package/docs/section.md +208 -0
- package/docs/segmented-control.json +429 -0
- package/docs/segmented-control.md +240 -0
- package/docs/select.examples.md +1214 -0
- package/docs/select.json +1147 -0
- package/docs/select.md +199 -0
- package/docs/side-navigation.json +632 -0
- package/docs/side-navigation.md +430 -0
- package/docs/skeleton.json +358 -0
- package/docs/skeleton.md +223 -0
- package/docs/slider.json +522 -0
- package/docs/slider.md +261 -0
- package/docs/sparkline.json +426 -0
- package/docs/sparkline.md +206 -0
- package/docs/split-button.json +361 -0
- package/docs/split-button.md +275 -0
- package/docs/splitter.json +142 -0
- package/docs/splitter.md +14 -0
- package/docs/stack.json +135 -0
- package/docs/stack.md +74 -0
- package/docs/stat-card.json +529 -0
- package/docs/stat-card.md +270 -0
- package/docs/status-indicator.json +314 -0
- package/docs/status-indicator.md +197 -0
- package/docs/stepper.json +451 -0
- package/docs/stepper.md +250 -0
- package/docs/switch.json +451 -0
- package/docs/switch.md +508 -0
- package/docs/table-of-contents.json +553 -0
- package/docs/table-of-contents.md +289 -0
- package/docs/table.examples.md +1981 -0
- package/docs/table.json +1059 -0
- package/docs/table.md +290 -0
- package/docs/tabs.examples.md +1370 -0
- package/docs/tabs.json +661 -0
- package/docs/tabs.md +211 -0
- package/docs/tag.json +813 -0
- package/docs/tag.md +241 -0
- package/docs/tags-input.json +771 -0
- package/docs/tags-input.md +361 -0
- package/docs/text-field.examples.md +821 -0
- package/docs/text-field.json +604 -0
- package/docs/text-field.md +125 -0
- package/docs/textarea.examples.md +612 -0
- package/docs/textarea.json +440 -0
- package/docs/textarea.md +98 -0
- package/docs/time-field.json +584 -0
- package/docs/time-field.md +291 -0
- package/docs/time-picker.json +679 -0
- package/docs/time-picker.md +315 -0
- package/docs/time-range-picker.examples.md +191 -0
- package/docs/time-range-picker.json +924 -0
- package/docs/time-range-picker.md +152 -0
- package/docs/timeline.json +839 -0
- package/docs/timeline.md +401 -0
- package/docs/toast.json +642 -0
- package/docs/toast.md +311 -0
- package/docs/toggle-group.json +417 -0
- package/docs/toggle-group.md +255 -0
- package/docs/toggle.json +326 -0
- package/docs/toggle.md +222 -0
- package/docs/toolbar.json +380 -0
- package/docs/toolbar.md +240 -0
- package/docs/tooltip.examples.md +664 -0
- package/docs/tooltip.json +604 -0
- package/docs/tooltip.md +146 -0
- package/docs/top-navigation.examples.md +287 -0
- package/docs/top-navigation.json +648 -0
- package/docs/top-navigation.md +138 -0
- package/docs/tour.json +759 -0
- package/docs/tour.md +337 -0
- package/docs/transfer.json +746 -0
- package/docs/transfer.md +273 -0
- package/docs/tree.json +918 -0
- package/docs/tree.md +397 -0
- package/docs/typography.json +317 -0
- package/docs/typography.md +107 -0
- package/docs/upload.examples.md +358 -0
- package/docs/upload.json +1103 -0
- package/docs/upload.md +166 -0
- package/docs/visually-hidden.json +71 -0
- package/docs/visually-hidden.md +42 -0
- package/docs/wizard.json +724 -0
- package/docs/wizard.md +295 -0
- package/fesm2022/slotted-angular-accordion.mjs +247 -0
- package/fesm2022/slotted-angular-accordion.mjs.map +1 -0
- package/fesm2022/slotted-angular-action-bar.mjs +639 -0
- package/fesm2022/slotted-angular-action-bar.mjs.map +1 -0
- package/fesm2022/slotted-angular-action-sheet.mjs +749 -0
- package/fesm2022/slotted-angular-action-sheet.mjs.map +1 -0
- package/fesm2022/slotted-angular-alert.mjs +427 -0
- package/fesm2022/slotted-angular-alert.mjs.map +1 -0
- package/fesm2022/slotted-angular-app-shell.mjs +1334 -0
- package/fesm2022/slotted-angular-app-shell.mjs.map +1 -0
- package/fesm2022/slotted-angular-aspect-ratio.mjs +63 -0
- package/fesm2022/slotted-angular-aspect-ratio.mjs.map +1 -0
- package/fesm2022/slotted-angular-attachment.mjs +595 -0
- package/fesm2022/slotted-angular-attachment.mjs.map +1 -0
- package/fesm2022/slotted-angular-avatar-group.mjs +230 -0
- package/fesm2022/slotted-angular-avatar-group.mjs.map +1 -0
- package/fesm2022/slotted-angular-avatar.mjs +330 -0
- package/fesm2022/slotted-angular-avatar.mjs.map +1 -0
- package/fesm2022/slotted-angular-badge.mjs +255 -0
- package/fesm2022/slotted-angular-badge.mjs.map +1 -0
- package/fesm2022/slotted-angular-breadcrumb.mjs +544 -0
- package/fesm2022/slotted-angular-breadcrumb.mjs.map +1 -0
- package/fesm2022/slotted-angular-button-group.mjs +146 -0
- package/fesm2022/slotted-angular-button-group.mjs.map +1 -0
- package/fesm2022/slotted-angular-button.mjs +692 -0
- package/fesm2022/slotted-angular-button.mjs.map +1 -0
- package/fesm2022/slotted-angular-calendar.mjs +916 -0
- package/fesm2022/slotted-angular-calendar.mjs.map +1 -0
- package/fesm2022/slotted-angular-card.mjs +225 -0
- package/fesm2022/slotted-angular-card.mjs.map +1 -0
- package/fesm2022/slotted-angular-carousel.mjs +840 -0
- package/fesm2022/slotted-angular-carousel.mjs.map +1 -0
- package/fesm2022/slotted-angular-cascader.mjs +1839 -0
- package/fesm2022/slotted-angular-cascader.mjs.map +1 -0
- package/fesm2022/slotted-angular-chart.mjs +974 -0
- package/fesm2022/slotted-angular-chart.mjs.map +1 -0
- package/fesm2022/slotted-angular-checkbox-group.mjs +283 -0
- package/fesm2022/slotted-angular-checkbox-group.mjs.map +1 -0
- package/fesm2022/slotted-angular-checkbox.mjs +468 -0
- package/fesm2022/slotted-angular-checkbox.mjs.map +1 -0
- package/fesm2022/slotted-angular-code-block.mjs +476 -0
- package/fesm2022/slotted-angular-code-block.mjs.map +1 -0
- package/fesm2022/slotted-angular-collapsible.mjs +479 -0
- package/fesm2022/slotted-angular-collapsible.mjs.map +1 -0
- package/fesm2022/slotted-angular-color-picker.mjs +910 -0
- package/fesm2022/slotted-angular-color-picker.mjs.map +1 -0
- package/fesm2022/slotted-angular-column-manager.mjs +1037 -0
- package/fesm2022/slotted-angular-column-manager.mjs.map +1 -0
- package/fesm2022/slotted-angular-combobox.mjs +1480 -0
- package/fesm2022/slotted-angular-combobox.mjs.map +1 -0
- package/fesm2022/slotted-angular-command-palette.mjs +1283 -0
- package/fesm2022/slotted-angular-command-palette.mjs.map +1 -0
- package/fesm2022/slotted-angular-container.mjs +105 -0
- package/fesm2022/slotted-angular-container.mjs.map +1 -0
- package/fesm2022/slotted-angular-context-menu.mjs +221 -0
- package/fesm2022/slotted-angular-context-menu.mjs.map +1 -0
- package/fesm2022/slotted-angular-currency-field.mjs +1131 -0
- package/fesm2022/slotted-angular-currency-field.mjs.map +1 -0
- package/fesm2022/slotted-angular-dashboard-grid.mjs +1928 -0
- package/fesm2022/slotted-angular-dashboard-grid.mjs.map +1 -0
- package/fesm2022/slotted-angular-data-grid.mjs +6697 -0
- package/fesm2022/slotted-angular-data-grid.mjs.map +1 -0
- package/fesm2022/slotted-angular-data-list.mjs +1418 -0
- package/fesm2022/slotted-angular-data-list.mjs.map +1 -0
- package/fesm2022/slotted-angular-date-field.mjs +772 -0
- package/fesm2022/slotted-angular-date-field.mjs.map +1 -0
- package/fesm2022/slotted-angular-date-picker.mjs +690 -0
- package/fesm2022/slotted-angular-date-picker.mjs.map +1 -0
- package/fesm2022/slotted-angular-date-range-picker.mjs +1150 -0
- package/fesm2022/slotted-angular-date-range-picker.mjs.map +1 -0
- package/fesm2022/slotted-angular-datetime-field.mjs +1058 -0
- package/fesm2022/slotted-angular-datetime-field.mjs.map +1 -0
- package/fesm2022/slotted-angular-datetime-picker.mjs +1362 -0
- package/fesm2022/slotted-angular-datetime-picker.mjs.map +1 -0
- package/fesm2022/slotted-angular-datetime-range-picker.mjs +1872 -0
- package/fesm2022/slotted-angular-datetime-range-picker.mjs.map +1 -0
- package/fesm2022/slotted-angular-description-list.mjs +545 -0
- package/fesm2022/slotted-angular-description-list.mjs.map +1 -0
- package/fesm2022/slotted-angular-detail-panel.mjs +754 -0
- package/fesm2022/slotted-angular-detail-panel.mjs.map +1 -0
- package/fesm2022/slotted-angular-dialog.mjs +980 -0
- package/fesm2022/slotted-angular-dialog.mjs.map +1 -0
- package/fesm2022/slotted-angular-divider.mjs +76 -0
- package/fesm2022/slotted-angular-divider.mjs.map +1 -0
- package/fesm2022/slotted-angular-drawer.mjs +1397 -0
- package/fesm2022/slotted-angular-drawer.mjs.map +1 -0
- package/fesm2022/slotted-angular-entity-picker.mjs +1987 -0
- package/fesm2022/slotted-angular-entity-picker.mjs.map +1 -0
- package/fesm2022/slotted-angular-event-calendar.mjs +2934 -0
- package/fesm2022/slotted-angular-event-calendar.mjs.map +1 -0
- package/fesm2022/slotted-angular-field-group.mjs +301 -0
- package/fesm2022/slotted-angular-field-group.mjs.map +1 -0
- package/fesm2022/slotted-angular-field.mjs +928 -0
- package/fesm2022/slotted-angular-field.mjs.map +1 -0
- package/fesm2022/slotted-angular-filter-bar.mjs +3107 -0
- package/fesm2022/slotted-angular-filter-bar.mjs.map +1 -0
- package/fesm2022/slotted-angular-form.mjs +592 -0
- package/fesm2022/slotted-angular-form.mjs.map +1 -0
- package/fesm2022/slotted-angular-fullscreen.mjs +314 -0
- package/fesm2022/slotted-angular-fullscreen.mjs.map +1 -0
- package/fesm2022/slotted-angular-grid.mjs +58 -0
- package/fesm2022/slotted-angular-grid.mjs.map +1 -0
- package/fesm2022/slotted-angular-highlight.mjs +123 -0
- package/fesm2022/slotted-angular-highlight.mjs.map +1 -0
- package/fesm2022/slotted-angular-hover-card.mjs +326 -0
- package/fesm2022/slotted-angular-hover-card.mjs.map +1 -0
- package/fesm2022/slotted-angular-i18n.mjs +75 -0
- package/fesm2022/slotted-angular-i18n.mjs.map +1 -0
- package/fesm2022/slotted-angular-icon.mjs +232 -0
- package/fesm2022/slotted-angular-icon.mjs.map +1 -0
- package/fesm2022/slotted-angular-image.mjs +442 -0
- package/fesm2022/slotted-angular-image.mjs.map +1 -0
- package/fesm2022/slotted-angular-import-export-center.mjs +1792 -0
- package/fesm2022/slotted-angular-import-export-center.mjs.map +1 -0
- package/fesm2022/slotted-angular-inline-message.mjs +280 -0
- package/fesm2022/slotted-angular-inline-message.mjs.map +1 -0
- package/fesm2022/slotted-angular-inline.mjs +52 -0
- package/fesm2022/slotted-angular-inline.mjs.map +1 -0
- package/fesm2022/slotted-angular-kbd.mjs +284 -0
- package/fesm2022/slotted-angular-kbd.mjs.map +1 -0
- package/fesm2022/slotted-angular-link.mjs +182 -0
- package/fesm2022/slotted-angular-link.mjs.map +1 -0
- package/fesm2022/slotted-angular-list-item.mjs +367 -0
- package/fesm2022/slotted-angular-list-item.mjs.map +1 -0
- package/fesm2022/slotted-angular-list.mjs +256 -0
- package/fesm2022/slotted-angular-list.mjs.map +1 -0
- package/fesm2022/slotted-angular-listbox.mjs +1274 -0
- package/fesm2022/slotted-angular-listbox.mjs.map +1 -0
- package/fesm2022/slotted-angular-loading-overlay.mjs +451 -0
- package/fesm2022/slotted-angular-loading-overlay.mjs.map +1 -0
- package/fesm2022/slotted-angular-markdown.mjs +914 -0
- package/fesm2022/slotted-angular-markdown.mjs.map +1 -0
- package/fesm2022/slotted-angular-menu.mjs +1211 -0
- package/fesm2022/slotted-angular-menu.mjs.map +1 -0
- package/fesm2022/slotted-angular-menubar.mjs +230 -0
- package/fesm2022/slotted-angular-menubar.mjs.map +1 -0
- package/fesm2022/slotted-angular-message-scroller.mjs +378 -0
- package/fesm2022/slotted-angular-message-scroller.mjs.map +1 -0
- package/fesm2022/slotted-angular-message.mjs +866 -0
- package/fesm2022/slotted-angular-message.mjs.map +1 -0
- package/fesm2022/slotted-angular-multi-select.mjs +1939 -0
- package/fesm2022/slotted-angular-multi-select.mjs.map +1 -0
- package/fesm2022/slotted-angular-navigation-menu.mjs +770 -0
- package/fesm2022/slotted-angular-navigation-menu.mjs.map +1 -0
- package/fesm2022/slotted-angular-notification-center.mjs +1172 -0
- package/fesm2022/slotted-angular-notification-center.mjs.map +1 -0
- package/fesm2022/slotted-angular-number-field.mjs +966 -0
- package/fesm2022/slotted-angular-number-field.mjs.map +1 -0
- package/fesm2022/slotted-angular-otp-input.mjs +629 -0
- package/fesm2022/slotted-angular-otp-input.mjs.map +1 -0
- package/fesm2022/slotted-angular-page-header.mjs +788 -0
- package/fesm2022/slotted-angular-page-header.mjs.map +1 -0
- package/fesm2022/slotted-angular-page.mjs +255 -0
- package/fesm2022/slotted-angular-page.mjs.map +1 -0
- package/fesm2022/slotted-angular-pagination.mjs +562 -0
- package/fesm2022/slotted-angular-pagination.mjs.map +1 -0
- package/fesm2022/slotted-angular-popover.mjs +799 -0
- package/fesm2022/slotted-angular-popover.mjs.map +1 -0
- package/fesm2022/slotted-angular-progress-indicator.mjs +572 -0
- package/fesm2022/slotted-angular-progress-indicator.mjs.map +1 -0
- package/fesm2022/slotted-angular-prompt-composer.mjs +596 -0
- package/fesm2022/slotted-angular-prompt-composer.mjs.map +1 -0
- package/fesm2022/slotted-angular-prose.mjs +314 -0
- package/fesm2022/slotted-angular-prose.mjs.map +1 -0
- package/fesm2022/slotted-angular-radio-group.mjs +469 -0
- package/fesm2022/slotted-angular-radio-group.mjs.map +1 -0
- package/fesm2022/slotted-angular-rating.mjs +1174 -0
- package/fesm2022/slotted-angular-rating.mjs.map +1 -0
- package/fesm2022/slotted-angular-result-state.mjs +330 -0
- package/fesm2022/slotted-angular-result-state.mjs.map +1 -0
- package/fesm2022/slotted-angular-saved-views.mjs +877 -0
- package/fesm2022/slotted-angular-saved-views.mjs.map +1 -0
- package/fesm2022/slotted-angular-scroll-area.mjs +294 -0
- package/fesm2022/slotted-angular-scroll-area.mjs.map +1 -0
- package/fesm2022/slotted-angular-section.mjs +266 -0
- package/fesm2022/slotted-angular-section.mjs.map +1 -0
- package/fesm2022/slotted-angular-segmented-control.mjs +454 -0
- package/fesm2022/slotted-angular-segmented-control.mjs.map +1 -0
- package/fesm2022/slotted-angular-select.mjs +1899 -0
- package/fesm2022/slotted-angular-select.mjs.map +1 -0
- package/fesm2022/slotted-angular-side-navigation.mjs +1042 -0
- package/fesm2022/slotted-angular-side-navigation.mjs.map +1 -0
- package/fesm2022/slotted-angular-skeleton.mjs +316 -0
- package/fesm2022/slotted-angular-skeleton.mjs.map +1 -0
- package/fesm2022/slotted-angular-slider.mjs +586 -0
- package/fesm2022/slotted-angular-slider.mjs.map +1 -0
- package/fesm2022/slotted-angular-sparkline.mjs +235 -0
- package/fesm2022/slotted-angular-sparkline.mjs.map +1 -0
- package/fesm2022/slotted-angular-split-button.mjs +331 -0
- package/fesm2022/slotted-angular-split-button.mjs.map +1 -0
- package/fesm2022/slotted-angular-splitter.mjs +516 -0
- package/fesm2022/slotted-angular-splitter.mjs.map +1 -0
- package/fesm2022/slotted-angular-stack.mjs +48 -0
- package/fesm2022/slotted-angular-stack.mjs.map +1 -0
- package/fesm2022/slotted-angular-stat-card.mjs +478 -0
- package/fesm2022/slotted-angular-stat-card.mjs.map +1 -0
- package/fesm2022/slotted-angular-status-indicator.mjs +155 -0
- package/fesm2022/slotted-angular-status-indicator.mjs.map +1 -0
- package/fesm2022/slotted-angular-stepper.mjs +536 -0
- package/fesm2022/slotted-angular-stepper.mjs.map +1 -0
- package/fesm2022/slotted-angular-switch.mjs +447 -0
- package/fesm2022/slotted-angular-switch.mjs.map +1 -0
- package/fesm2022/slotted-angular-table-of-contents.mjs +750 -0
- package/fesm2022/slotted-angular-table-of-contents.mjs.map +1 -0
- package/fesm2022/slotted-angular-table.mjs +2518 -0
- package/fesm2022/slotted-angular-table.mjs.map +1 -0
- package/fesm2022/slotted-angular-tabs.mjs +829 -0
- package/fesm2022/slotted-angular-tabs.mjs.map +1 -0
- package/fesm2022/slotted-angular-tag.mjs +595 -0
- package/fesm2022/slotted-angular-tag.mjs.map +1 -0
- package/fesm2022/slotted-angular-tags-input.mjs +1211 -0
- package/fesm2022/slotted-angular-tags-input.mjs.map +1 -0
- package/fesm2022/slotted-angular-text-field.mjs +674 -0
- package/fesm2022/slotted-angular-text-field.mjs.map +1 -0
- package/fesm2022/slotted-angular-textarea.mjs +275 -0
- package/fesm2022/slotted-angular-textarea.mjs.map +1 -0
- package/fesm2022/slotted-angular-theme.mjs +45 -0
- package/fesm2022/slotted-angular-theme.mjs.map +1 -0
- package/fesm2022/slotted-angular-time-field.mjs +895 -0
- package/fesm2022/slotted-angular-time-field.mjs.map +1 -0
- package/fesm2022/slotted-angular-time-picker.mjs +856 -0
- package/fesm2022/slotted-angular-time-picker.mjs.map +1 -0
- package/fesm2022/slotted-angular-time-range-picker.mjs +1534 -0
- package/fesm2022/slotted-angular-time-range-picker.mjs.map +1 -0
- package/fesm2022/slotted-angular-timeline.mjs +928 -0
- package/fesm2022/slotted-angular-timeline.mjs.map +1 -0
- package/fesm2022/slotted-angular-toast.mjs +917 -0
- package/fesm2022/slotted-angular-toast.mjs.map +1 -0
- package/fesm2022/slotted-angular-toggle-group.mjs +311 -0
- package/fesm2022/slotted-angular-toggle-group.mjs.map +1 -0
- package/fesm2022/slotted-angular-toggle.mjs +162 -0
- package/fesm2022/slotted-angular-toggle.mjs.map +1 -0
- package/fesm2022/slotted-angular-toolbar.mjs +536 -0
- package/fesm2022/slotted-angular-toolbar.mjs.map +1 -0
- package/fesm2022/slotted-angular-tooltip.mjs +798 -0
- package/fesm2022/slotted-angular-tooltip.mjs.map +1 -0
- package/fesm2022/slotted-angular-top-navigation.mjs +1308 -0
- package/fesm2022/slotted-angular-top-navigation.mjs.map +1 -0
- package/fesm2022/slotted-angular-tour.mjs +1330 -0
- package/fesm2022/slotted-angular-tour.mjs.map +1 -0
- package/fesm2022/slotted-angular-transfer.mjs +1406 -0
- package/fesm2022/slotted-angular-transfer.mjs.map +1 -0
- package/fesm2022/slotted-angular-tree.mjs +1448 -0
- package/fesm2022/slotted-angular-tree.mjs.map +1 -0
- package/fesm2022/slotted-angular-typography.mjs +184 -0
- package/fesm2022/slotted-angular-typography.mjs.map +1 -0
- package/fesm2022/slotted-angular-upload.mjs +1523 -0
- package/fesm2022/slotted-angular-upload.mjs.map +1 -0
- package/fesm2022/slotted-angular-visually-hidden.mjs +32 -0
- package/fesm2022/slotted-angular-visually-hidden.mjs.map +1 -0
- package/fesm2022/slotted-angular-wizard.mjs +1715 -0
- package/fesm2022/slotted-angular-wizard.mjs.map +1 -0
- package/fesm2022/slotted-angular.mjs +4 -0
- package/fesm2022/slotted-angular.mjs.map +1 -0
- package/package.json +537 -3
- package/types/slotted-angular-accordion.d.ts +156 -0
- package/types/slotted-angular-accordion.d.ts.map +1 -0
- package/types/slotted-angular-action-bar.d.ts +291 -0
- package/types/slotted-angular-action-bar.d.ts.map +1 -0
- package/types/slotted-angular-action-sheet.d.ts +294 -0
- package/types/slotted-angular-action-sheet.d.ts.map +1 -0
- package/types/slotted-angular-alert.d.ts +214 -0
- package/types/slotted-angular-alert.d.ts.map +1 -0
- package/types/slotted-angular-app-shell.d.ts +549 -0
- package/types/slotted-angular-app-shell.d.ts.map +1 -0
- package/types/slotted-angular-aspect-ratio.d.ts +57 -0
- package/types/slotted-angular-aspect-ratio.d.ts.map +1 -0
- package/types/slotted-angular-attachment.d.ts +294 -0
- package/types/slotted-angular-attachment.d.ts.map +1 -0
- package/types/slotted-angular-avatar-group.d.ts +119 -0
- package/types/slotted-angular-avatar-group.d.ts.map +1 -0
- package/types/slotted-angular-avatar.d.ts +202 -0
- package/types/slotted-angular-avatar.d.ts.map +1 -0
- package/types/slotted-angular-badge.d.ts +166 -0
- package/types/slotted-angular-badge.d.ts.map +1 -0
- package/types/slotted-angular-breadcrumb.d.ts +251 -0
- package/types/slotted-angular-breadcrumb.d.ts.map +1 -0
- package/types/slotted-angular-button-group.d.ts +89 -0
- package/types/slotted-angular-button-group.d.ts.map +1 -0
- package/types/slotted-angular-button.d.ts +390 -0
- package/types/slotted-angular-button.d.ts.map +1 -0
- package/types/slotted-angular-calendar.d.ts +280 -0
- package/types/slotted-angular-calendar.d.ts.map +1 -0
- package/types/slotted-angular-card.d.ts +140 -0
- package/types/slotted-angular-card.d.ts.map +1 -0
- package/types/slotted-angular-carousel.d.ts +288 -0
- package/types/slotted-angular-carousel.d.ts.map +1 -0
- package/types/slotted-angular-cascader.d.ts +351 -0
- package/types/slotted-angular-cascader.d.ts.map +1 -0
- package/types/slotted-angular-chart.d.ts +319 -0
- package/types/slotted-angular-chart.d.ts.map +1 -0
- package/types/slotted-angular-checkbox-group.d.ts +156 -0
- package/types/slotted-angular-checkbox-group.d.ts.map +1 -0
- package/types/slotted-angular-checkbox.d.ts +197 -0
- package/types/slotted-angular-checkbox.d.ts.map +1 -0
- package/types/slotted-angular-code-block.d.ts +158 -0
- package/types/slotted-angular-code-block.d.ts.map +1 -0
- package/types/slotted-angular-collapsible.d.ts +272 -0
- package/types/slotted-angular-collapsible.d.ts.map +1 -0
- package/types/slotted-angular-color-picker.d.ts +181 -0
- package/types/slotted-angular-color-picker.d.ts.map +1 -0
- package/types/slotted-angular-column-manager.d.ts +200 -0
- package/types/slotted-angular-column-manager.d.ts.map +1 -0
- package/types/slotted-angular-combobox.d.ts +449 -0
- package/types/slotted-angular-combobox.d.ts.map +1 -0
- package/types/slotted-angular-command-palette.d.ts +256 -0
- package/types/slotted-angular-command-palette.d.ts.map +1 -0
- package/types/slotted-angular-container.d.ts +84 -0
- package/types/slotted-angular-container.d.ts.map +1 -0
- package/types/slotted-angular-context-menu.d.ts +84 -0
- package/types/slotted-angular-context-menu.d.ts.map +1 -0
- package/types/slotted-angular-currency-field.d.ts +480 -0
- package/types/slotted-angular-currency-field.d.ts.map +1 -0
- package/types/slotted-angular-dashboard-grid.d.ts +341 -0
- package/types/slotted-angular-dashboard-grid.d.ts.map +1 -0
- package/types/slotted-angular-data-grid.d.ts +1077 -0
- package/types/slotted-angular-data-grid.d.ts.map +1 -0
- package/types/slotted-angular-data-list.d.ts +272 -0
- package/types/slotted-angular-data-list.d.ts.map +1 -0
- package/types/slotted-angular-date-field.d.ts +320 -0
- package/types/slotted-angular-date-field.d.ts.map +1 -0
- package/types/slotted-angular-date-picker.d.ts +224 -0
- package/types/slotted-angular-date-picker.d.ts.map +1 -0
- package/types/slotted-angular-date-range-picker.d.ts +310 -0
- package/types/slotted-angular-date-range-picker.d.ts.map +1 -0
- package/types/slotted-angular-datetime-field.d.ts +362 -0
- package/types/slotted-angular-datetime-field.d.ts.map +1 -0
- package/types/slotted-angular-datetime-picker.d.ts +370 -0
- package/types/slotted-angular-datetime-picker.d.ts.map +1 -0
- package/types/slotted-angular-datetime-range-picker.d.ts +459 -0
- package/types/slotted-angular-datetime-range-picker.d.ts.map +1 -0
- package/types/slotted-angular-description-list.d.ts +281 -0
- package/types/slotted-angular-description-list.d.ts.map +1 -0
- package/types/slotted-angular-detail-panel.d.ts +240 -0
- package/types/slotted-angular-detail-panel.d.ts.map +1 -0
- package/types/slotted-angular-dialog.d.ts +497 -0
- package/types/slotted-angular-dialog.d.ts.map +1 -0
- package/types/slotted-angular-divider.d.ts +40 -0
- package/types/slotted-angular-divider.d.ts.map +1 -0
- package/types/slotted-angular-drawer.d.ts +532 -0
- package/types/slotted-angular-drawer.d.ts.map +1 -0
- package/types/slotted-angular-entity-picker.d.ts +338 -0
- package/types/slotted-angular-entity-picker.d.ts.map +1 -0
- package/types/slotted-angular-event-calendar.d.ts +574 -0
- package/types/slotted-angular-event-calendar.d.ts.map +1 -0
- package/types/slotted-angular-field-group.d.ts +152 -0
- package/types/slotted-angular-field-group.d.ts.map +1 -0
- package/types/slotted-angular-field.d.ts +535 -0
- package/types/slotted-angular-field.d.ts.map +1 -0
- package/types/slotted-angular-filter-bar.d.ts +573 -0
- package/types/slotted-angular-filter-bar.d.ts.map +1 -0
- package/types/slotted-angular-form.d.ts +298 -0
- package/types/slotted-angular-form.d.ts.map +1 -0
- package/types/slotted-angular-fullscreen.d.ts +145 -0
- package/types/slotted-angular-fullscreen.d.ts.map +1 -0
- package/types/slotted-angular-grid.d.ts +50 -0
- package/types/slotted-angular-grid.d.ts.map +1 -0
- package/types/slotted-angular-highlight.d.ts +93 -0
- package/types/slotted-angular-highlight.d.ts.map +1 -0
- package/types/slotted-angular-hover-card.d.ts +140 -0
- package/types/slotted-angular-hover-card.d.ts.map +1 -0
- package/types/slotted-angular-i18n.d.ts +46 -0
- package/types/slotted-angular-i18n.d.ts.map +1 -0
- package/types/slotted-angular-icon.d.ts +94 -0
- package/types/slotted-angular-icon.d.ts.map +1 -0
- package/types/slotted-angular-image.d.ts +251 -0
- package/types/slotted-angular-image.d.ts.map +1 -0
- package/types/slotted-angular-import-export-center.d.ts +351 -0
- package/types/slotted-angular-import-export-center.d.ts.map +1 -0
- package/types/slotted-angular-inline-message.d.ts +195 -0
- package/types/slotted-angular-inline-message.d.ts.map +1 -0
- package/types/slotted-angular-inline.d.ts +41 -0
- package/types/slotted-angular-inline.d.ts.map +1 -0
- package/types/slotted-angular-kbd.d.ts +174 -0
- package/types/slotted-angular-kbd.d.ts.map +1 -0
- package/types/slotted-angular-link.d.ts +94 -0
- package/types/slotted-angular-link.d.ts.map +1 -0
- package/types/slotted-angular-list-item.d.ts +210 -0
- package/types/slotted-angular-list-item.d.ts.map +1 -0
- package/types/slotted-angular-list.d.ts +176 -0
- package/types/slotted-angular-list.d.ts.map +1 -0
- package/types/slotted-angular-listbox.d.ts +470 -0
- package/types/slotted-angular-listbox.d.ts.map +1 -0
- package/types/slotted-angular-loading-overlay.d.ts +219 -0
- package/types/slotted-angular-loading-overlay.d.ts.map +1 -0
- package/types/slotted-angular-markdown.d.ts +172 -0
- package/types/slotted-angular-markdown.d.ts.map +1 -0
- package/types/slotted-angular-menu.d.ts +448 -0
- package/types/slotted-angular-menu.d.ts.map +1 -0
- package/types/slotted-angular-menubar.d.ts +90 -0
- package/types/slotted-angular-menubar.d.ts.map +1 -0
- package/types/slotted-angular-message-scroller.d.ts +151 -0
- package/types/slotted-angular-message-scroller.d.ts.map +1 -0
- package/types/slotted-angular-message.d.ts +348 -0
- package/types/slotted-angular-message.d.ts.map +1 -0
- package/types/slotted-angular-multi-select.d.ts +462 -0
- package/types/slotted-angular-multi-select.d.ts.map +1 -0
- package/types/slotted-angular-navigation-menu.d.ts +309 -0
- package/types/slotted-angular-navigation-menu.d.ts.map +1 -0
- package/types/slotted-angular-notification-center.d.ts +318 -0
- package/types/slotted-angular-notification-center.d.ts.map +1 -0
- package/types/slotted-angular-number-field.d.ts +402 -0
- package/types/slotted-angular-number-field.d.ts.map +1 -0
- package/types/slotted-angular-otp-input.d.ts +286 -0
- package/types/slotted-angular-otp-input.d.ts.map +1 -0
- package/types/slotted-angular-page-header.d.ts +334 -0
- package/types/slotted-angular-page-header.d.ts.map +1 -0
- package/types/slotted-angular-page.d.ts +141 -0
- package/types/slotted-angular-page.d.ts.map +1 -0
- package/types/slotted-angular-pagination.d.ts +213 -0
- package/types/slotted-angular-pagination.d.ts.map +1 -0
- package/types/slotted-angular-popover.d.ts +366 -0
- package/types/slotted-angular-popover.d.ts.map +1 -0
- package/types/slotted-angular-progress-indicator.d.ts +312 -0
- package/types/slotted-angular-progress-indicator.d.ts.map +1 -0
- package/types/slotted-angular-prompt-composer.d.ts +242 -0
- package/types/slotted-angular-prompt-composer.d.ts.map +1 -0
- package/types/slotted-angular-prose.d.ts +171 -0
- package/types/slotted-angular-prose.d.ts.map +1 -0
- package/types/slotted-angular-radio-group.d.ts +268 -0
- package/types/slotted-angular-radio-group.d.ts.map +1 -0
- package/types/slotted-angular-rating.d.ts +374 -0
- package/types/slotted-angular-rating.d.ts.map +1 -0
- package/types/slotted-angular-result-state.d.ts +217 -0
- package/types/slotted-angular-result-state.d.ts.map +1 -0
- package/types/slotted-angular-saved-views.d.ts +198 -0
- package/types/slotted-angular-saved-views.d.ts.map +1 -0
- package/types/slotted-angular-scroll-area.d.ts +186 -0
- package/types/slotted-angular-scroll-area.d.ts.map +1 -0
- package/types/slotted-angular-section.d.ts +143 -0
- package/types/slotted-angular-section.d.ts.map +1 -0
- package/types/slotted-angular-segmented-control.d.ts +251 -0
- package/types/slotted-angular-segmented-control.d.ts.map +1 -0
- package/types/slotted-angular-select.d.ts +507 -0
- package/types/slotted-angular-select.d.ts.map +1 -0
- package/types/slotted-angular-side-navigation.d.ts +373 -0
- package/types/slotted-angular-side-navigation.d.ts.map +1 -0
- package/types/slotted-angular-skeleton.d.ts +198 -0
- package/types/slotted-angular-skeleton.d.ts.map +1 -0
- package/types/slotted-angular-slider.d.ts +216 -0
- package/types/slotted-angular-slider.d.ts.map +1 -0
- package/types/slotted-angular-sparkline.d.ts +106 -0
- package/types/slotted-angular-sparkline.d.ts.map +1 -0
- package/types/slotted-angular-split-button.d.ts +180 -0
- package/types/slotted-angular-split-button.d.ts.map +1 -0
- package/types/slotted-angular-splitter.d.ts +206 -0
- package/types/slotted-angular-splitter.d.ts.map +1 -0
- package/types/slotted-angular-stack.d.ts +38 -0
- package/types/slotted-angular-stack.d.ts.map +1 -0
- package/types/slotted-angular-stat-card.d.ts +232 -0
- package/types/slotted-angular-stat-card.d.ts.map +1 -0
- package/types/slotted-angular-status-indicator.d.ts +106 -0
- package/types/slotted-angular-status-indicator.d.ts.map +1 -0
- package/types/slotted-angular-stepper.d.ts +198 -0
- package/types/slotted-angular-stepper.d.ts.map +1 -0
- package/types/slotted-angular-switch.d.ts +243 -0
- package/types/slotted-angular-switch.d.ts.map +1 -0
- package/types/slotted-angular-table-of-contents.d.ts +210 -0
- package/types/slotted-angular-table-of-contents.d.ts.map +1 -0
- package/types/slotted-angular-table.d.ts +888 -0
- package/types/slotted-angular-table.d.ts.map +1 -0
- package/types/slotted-angular-tabs.d.ts +340 -0
- package/types/slotted-angular-tabs.d.ts.map +1 -0
- package/types/slotted-angular-tag.d.ts +279 -0
- package/types/slotted-angular-tag.d.ts.map +1 -0
- package/types/slotted-angular-tags-input.d.ts +302 -0
- package/types/slotted-angular-tags-input.d.ts.map +1 -0
- package/types/slotted-angular-text-field.d.ts +334 -0
- package/types/slotted-angular-text-field.d.ts.map +1 -0
- package/types/slotted-angular-textarea.d.ts +150 -0
- package/types/slotted-angular-textarea.d.ts.map +1 -0
- package/types/slotted-angular-theme.d.ts +26 -0
- package/types/slotted-angular-theme.d.ts.map +1 -0
- package/types/slotted-angular-time-field.d.ts +300 -0
- package/types/slotted-angular-time-field.d.ts.map +1 -0
- package/types/slotted-angular-time-picker.d.ts +260 -0
- package/types/slotted-angular-time-picker.d.ts.map +1 -0
- package/types/slotted-angular-time-range-picker.d.ts +401 -0
- package/types/slotted-angular-time-range-picker.d.ts.map +1 -0
- package/types/slotted-angular-timeline.d.ts +329 -0
- package/types/slotted-angular-timeline.d.ts.map +1 -0
- package/types/slotted-angular-toast.d.ts +340 -0
- package/types/slotted-angular-toast.d.ts.map +1 -0
- package/types/slotted-angular-toggle-group.d.ts +167 -0
- package/types/slotted-angular-toggle-group.d.ts.map +1 -0
- package/types/slotted-angular-toggle.d.ts +106 -0
- package/types/slotted-angular-toggle.d.ts.map +1 -0
- package/types/slotted-angular-toolbar.d.ts +252 -0
- package/types/slotted-angular-toolbar.d.ts.map +1 -0
- package/types/slotted-angular-tooltip.d.ts +388 -0
- package/types/slotted-angular-tooltip.d.ts.map +1 -0
- package/types/slotted-angular-top-navigation.d.ts +442 -0
- package/types/slotted-angular-top-navigation.d.ts.map +1 -0
- package/types/slotted-angular-tour.d.ts +440 -0
- package/types/slotted-angular-tour.d.ts.map +1 -0
- package/types/slotted-angular-transfer.d.ts +296 -0
- package/types/slotted-angular-transfer.d.ts.map +1 -0
- package/types/slotted-angular-tree.d.ts +499 -0
- package/types/slotted-angular-tree.d.ts.map +1 -0
- package/types/slotted-angular-typography.d.ts +89 -0
- package/types/slotted-angular-typography.d.ts.map +1 -0
- package/types/slotted-angular-upload.d.ts +365 -0
- package/types/slotted-angular-upload.d.ts.map +1 -0
- package/types/slotted-angular-visually-hidden.d.ts +19 -0
- package/types/slotted-angular-visually-hidden.d.ts.map +1 -0
- package/types/slotted-angular-wizard.d.ts +441 -0
- package/types/slotted-angular-wizard.d.ts.map +1 -0
- package/types/slotted-angular.d.ts +3 -0
- package/types/slotted-angular.d.ts.map +1 -0
package/docs/listbox.md
ADDED
|
@@ -0,0 +1,413 @@
|
|
|
1
|
+
<!-- index: ./index.md -->
|
|
2
|
+
# listbox
|
|
3
|
+
|
|
4
|
+
`data-ui="listbox"` · List of options for single or multiple choice.
|
|
5
|
+
|
|
6
|
+
## Import
|
|
7
|
+
|
|
8
|
+
```ts
|
|
9
|
+
import {
|
|
10
|
+
SlListbox,
|
|
11
|
+
SlListboxDescription,
|
|
12
|
+
SlListboxEmpty,
|
|
13
|
+
SlListboxGroup,
|
|
14
|
+
SlListboxIcon,
|
|
15
|
+
SlListboxIndicator,
|
|
16
|
+
SlListboxLabel,
|
|
17
|
+
SlListboxLoader,
|
|
18
|
+
SlListboxMeta,
|
|
19
|
+
SlListboxOption,
|
|
20
|
+
SlListboxOptionContent,
|
|
21
|
+
} from '@slotted/angular/listbox';
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Selector: `[slListbox], [slListboxOption], [slListboxGroup], [slListboxIndicator], [slListboxIcon], [slListboxLabel], [slListboxDescription], [slListboxMeta], [slListboxEmpty], [slListboxLoader], [slListboxOptionContent]` · exportAs: `slListbox, slListboxOption, slListboxGroup`
|
|
25
|
+
|
|
26
|
+
## Minimal example
|
|
27
|
+
|
|
28
|
+
Excerpt — not a complete module
|
|
29
|
+
|
|
30
|
+
```html
|
|
31
|
+
<div slListbox aria-label="Region" defaultValue="europe">
|
|
32
|
+
@for (region of regions; track region.id) {
|
|
33
|
+
<div slListboxOption [value]="region.id">
|
|
34
|
+
<span slListboxIndicator></span>
|
|
35
|
+
<span slListboxLabel>{{ region.name }}</span>
|
|
36
|
+
<span slListboxMeta>{{ region.count }}</span>
|
|
37
|
+
</div>
|
|
38
|
+
}
|
|
39
|
+
</div>
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Anatomy
|
|
43
|
+
|
|
44
|
+
| Part | Element | Required |
|
|
45
|
+
| --- | --- | --- |
|
|
46
|
+
| `root` | the element the directive is on | yes |
|
|
47
|
+
| `canvas` | div with role="presentation" | no |
|
|
48
|
+
| `group` | the element slListboxGroup is on | no |
|
|
49
|
+
| `group-label` | div | no |
|
|
50
|
+
| `option` | the element slListboxOption is on | yes |
|
|
51
|
+
| `indicator` | the element slListboxIndicator is on | no |
|
|
52
|
+
| `icon` | the element slListboxIcon is on | no |
|
|
53
|
+
| `label` | the element slListboxLabel is on | yes |
|
|
54
|
+
| `description` | the element slListboxDescription is on | no |
|
|
55
|
+
| `meta` | the element slListboxMeta is on | no |
|
|
56
|
+
| `empty` | the element slListboxEmpty is on | no |
|
|
57
|
+
| `loader` | the element slListboxLoader is on | no |
|
|
58
|
+
|
|
59
|
+
## Props
|
|
60
|
+
|
|
61
|
+
| Name | Type | Default | Applies to | Description |
|
|
62
|
+
| --- | --- | --- | --- | --- |
|
|
63
|
+
| `value` | `string \| readonly string[] \| null, or string` | — | SlListbox, SlListboxOption | On the listbox: the chosen key, or the set of them; present means controlled, for the life of the component. On an option: the key it chooses |
|
|
64
|
+
| `defaultValue` | `string \| readonly string[] \| null` | — | SlListbox | What an uncontrolled listbox starts from, read once at init |
|
|
65
|
+
| `activeKey` | `string \| null` | — | SlListbox | Which option the keyboard is on. Present means controlled |
|
|
66
|
+
| `defaultActiveKey` | `string \| null` | — | SlListbox | Where the keyboard starts, read once at init |
|
|
67
|
+
| `selectionMode` | `'none' \| 'single' \| 'multiple'` | single | SlListbox | How many options may be chosen. multiple writes aria-multiselectable |
|
|
68
|
+
| `selectionBehavior` | `'toggle' \| 'replace'` | toggle | SlListbox | toggle is the model the pattern recommends; replace is the desktop one, where a plain press replaces |
|
|
69
|
+
| `size` | `'sm' \| 'md' \| 'lg'` | md | SlListbox | The type and control geometry step |
|
|
70
|
+
| `variant` | `'plain' \| 'framed'` | framed | SlListbox | framed is the standalone control; plain is what a layer already frames |
|
|
71
|
+
| `orientation` | `'vertical' \| 'horizontal'` | vertical | SlListbox | Which axis the arrows move along. horizontal is mirrored in a right-to-left document |
|
|
72
|
+
| `focusMode` | `'auto' \| 'roving' \| 'activedescendant'` | auto | SlListbox | auto answers activedescendant whenever the set is windowed, because a roving tab stop cannot survive a recycled row |
|
|
73
|
+
| `indicator` | `'check' \| 'none'` | check | SlListbox | Whether a chosen option draws a mark as well as its ground and its ink |
|
|
74
|
+
| `loop` | `boolean` | false | SlListbox | Whether the arrows wrap past the ends |
|
|
75
|
+
| `typeahead` | `boolean` | true | SlListbox | Whether printable characters move the highlight |
|
|
76
|
+
| `typeaheadTimeout` | `number` | 500 | SlListbox | Milliseconds of silence before a new typeahead sequence begins |
|
|
77
|
+
| `selectOnFocus` | `boolean` | false | SlListbox | Whether moving the highlight also chooses. The pattern names the accessibility cost, so the default is the safe one |
|
|
78
|
+
| `navigateDisabled` | `boolean` | false | SlListbox | Whether the arrows land on a disabled option, which the pattern allows where discoverability matters |
|
|
79
|
+
| `disallowEmptySelection` | `boolean` | false | SlListbox | Refuses the press that would leave nothing chosen |
|
|
80
|
+
| `disallowSelectAll` | `boolean` | false | SlListbox | Refuses the select-all accelerator |
|
|
81
|
+
| `rows` | `number` | 7 | SlListbox | How many options tall the box is before it scrolls. select size under another name |
|
|
82
|
+
| `columns` | `number` | 1 | SlListbox | How many options across. The arrows step by this number down a column |
|
|
83
|
+
| `pageSize` | `number` | 10 | SlListbox | How far PageUp and PageDown travel |
|
|
84
|
+
| `disabled` | `boolean` | false | SlListbox, SlListboxOption | On the listbox, unstated it defers to the form and stated it wins. On an option it is aria-disabled and never the native attribute, so the option keeps its place in the set |
|
|
85
|
+
| `readOnly` | `boolean` | false | SlListbox | Every option stays reachable and every change is refused. Writes aria-readonly |
|
|
86
|
+
| `required` | `boolean` | false | SlListbox | Writes aria-required, and is the validity a Reactive Form reads |
|
|
87
|
+
| `invalid` | `boolean` | false | SlListbox | Writes aria-invalid and turns the edge and the ring |
|
|
88
|
+
| `loading` | `boolean` | false | SlListbox | Writes aria-busy, which ARIA asks of a container whose options have not arrived |
|
|
89
|
+
| `items` | `readonly T[]` | — | SlListbox | The whole collection. Without it the collection is read from the rendered options |
|
|
90
|
+
| `sections` | `readonly ListboxSection<T>[]` | — | SlListbox | A grouped collection. Mutually exclusive with items |
|
|
91
|
+
| `getKey` | `(item: T) => string` | — | SlListbox | The identity that survives a reorder. It is a string, so no comparator is needed |
|
|
92
|
+
| `getLabel` | `(item: T) => string` | — | SlListbox | What typeahead matches and what a reader hears |
|
|
93
|
+
| `isItemDisabled` | `(item: T) => boolean` | — | SlListbox | Whether one item refuses to be chosen |
|
|
94
|
+
| `totalCount` | `number` | — | SlListbox | How large the whole set is when only part of it has loaded. Writes aria-setsize |
|
|
95
|
+
| `virtual` | `boolean` | false | SlListbox | Renders only the options the viewport covers, plus the pinned ones |
|
|
96
|
+
| `itemSize` | `number` | 36 | SlListbox | The block size of one option. Required whenever virtual is set |
|
|
97
|
+
| `sectionSize` | `number` | 28 | SlListbox | The block size of a group label row. Defaults to itemSize |
|
|
98
|
+
| `overscan` | `number` | 4 | SlListbox | Options rendered either side of the viewport |
|
|
99
|
+
| `hasMore` | `boolean` | false | SlListbox | Whether the consumer has another page to give |
|
|
100
|
+
| `loadMoreThreshold` | `number` | 0 | SlListbox | How many options before the end the request goes out |
|
|
101
|
+
| `textValue` | `string` | — | SlListboxOption | What typeahead matches, when the visible text is not it |
|
|
102
|
+
| `pinned` | `boolean` | false | SlListboxOption | Rendered outside the window that covers it, at its own place on the canvas. The listbox sets it; nothing else should |
|
|
103
|
+
| `label` | `string` | — | SlListboxGroup | The group accessible name, rendered as its own label row |
|
|
104
|
+
| `groupLabel` | `string` | — | SlListboxGroup | The name without the row, which is what a windowed group takes when its label has scrolled out of the slice |
|
|
105
|
+
| `renderOption` | `ng-template slListboxOptionContent` | — | SlListbox | What one option of a handed collection holds. Angular projects a template where React takes a function |
|
|
106
|
+
| `provideListboxDefaults` | `(defaults: Partial<ListboxDefaults>) => Provider` | — | an injector | Sets nineteen axes once for every listbox under it. An explicit input still wins |
|
|
107
|
+
| `exportAs` | `slListbox, slListboxOption, slListboxGroup` | — | a template | Reaches the instance, and with it focus(), scrollToKey(key, align) and getActiveKey() |
|
|
108
|
+
| `slListboxOptionContent` | `ng-template` | — | a handed collection | What one option holds. The family renders the option element around it, so the template never wires anything |
|
|
109
|
+
| `ng-content` | `projection` | — | SlListbox, SlListboxOption, SlListboxGroup | Options, groups, the empty message and the loader are all projected content, so a template decides when each appears |
|
|
110
|
+
| `role` | `string` | — | SlListbox | A role the consumer wrote is read with HostAttributeToken before the host bindings write anything, and is never replaced |
|
|
111
|
+
| `ControlValueAccessor / Validator` | `formControl, ngModel` | — | SlListbox | A Reactive Form or a template form reads and writes the value; required is the collection validity, which no single option can see |
|
|
112
|
+
|
|
113
|
+
## Events
|
|
114
|
+
|
|
115
|
+
| Name | Payload | When |
|
|
116
|
+
| --- | --- | --- |
|
|
117
|
+
| `valueChange` | `ChangeRequest<string \| readonly string[] \| null>` | Before the selection moves. The value is one key in single and none, and the set in multiple. The request carries the value it replaces, the reason — pointer, keyboard, select, clear or programmatic — the originating event, and cancel(). |
|
|
118
|
+
| `activeKeyChange` | `ChangeRequest<string \| null>` | Before the option the keyboard is on moves. Reasons: pointer, keyboard, programmatic. It is a value of its own, because the pattern makes focus and selection two things. |
|
|
119
|
+
| `loadMore` | `void` | Once the rendered window has come within loadMoreThreshold options of the end of what has been loaded, and only while hasMore is true and loading is false. |
|
|
120
|
+
|
|
121
|
+
## Axes and defaults
|
|
122
|
+
|
|
123
|
+
| Axis | Values | Default |
|
|
124
|
+
| --- | --- | --- |
|
|
125
|
+
| `size` | `sm`, `md`, `lg` | `md` |
|
|
126
|
+
| `variant` | `plain`, `framed` | `framed` |
|
|
127
|
+
| `selectionMode` | `none`, `single`, `multiple` | `single` |
|
|
128
|
+
| `selectionBehavior` | `toggle`, `replace` | `toggle` |
|
|
129
|
+
| `orientation` | `vertical`, `horizontal` | `vertical` |
|
|
130
|
+
| `focusMode` | `auto`, `roving`, `activedescendant` | `auto` |
|
|
131
|
+
| `indicator` | `check`, `none` | `check` |
|
|
132
|
+
| `loop` | `true`, `false` | `false` |
|
|
133
|
+
| `typeahead` | `true`, `false` | `true` |
|
|
134
|
+
| `selectOnFocus` | `true`, `false` | `false` |
|
|
135
|
+
| `navigateDisabled` | `true`, `false` | `false` |
|
|
136
|
+
| `disallowEmptySelection` | `true`, `false` | `false` |
|
|
137
|
+
| `disallowSelectAll` | `true`, `false` | `false` |
|
|
138
|
+
| `virtual` | `true`, `false` | `false` |
|
|
139
|
+
| `disabled` | `true`, `false` | `false` |
|
|
140
|
+
|
|
141
|
+
## Rules
|
|
142
|
+
|
|
143
|
+
- The pattern is https://www.w3.org/WAI/ARIA/apg/patterns/listbox/, read on 4 September 2026 from the rendered page and from the pattern source in w3c/aria-practices, so the optional keys and both selection models come from the source rather than from the summary. The root carries role="listbox", every option carries role="option", and a group carries role="group" with the accessible name the pattern requires of it.
|
|
144
|
+
- Selection is aria-selected on every selectable option, true or false and never absent, and aria-checked on none of them: the pattern forbids a listbox that carries both. A chosen option says so three ways — a tinted ground, a start-edge bar and a mark — because under forced colours the ground becomes Canvas and a family that spoke only in colour would say nothing in the mode that needs it most.
|
|
145
|
+
- There is one tab stop for the whole set. Under the roving model it lives on the active option, and under aria-activedescendant it lives on the root; focusMode="auto" chooses the second whenever the set is windowed, because an element carrying tabindex="0" that is recycled out of the DOM takes focus to the body with it. The active option is pinned into the rendered window for the same reason: a property naming an id that is not in the document leaves a reader operating a widget with no focused option.
|
|
146
|
+
- aria-setsize and aria-posinset are written on every option of a collection the family was handed and on none written in the template. That is the pattern condition — the pair is required when the complete set is not in the DOM — and with options in the template the whole set is in the DOM and the platform counts it.
|
|
147
|
+
- A disabled option carries aria-disabled rather than the native attribute, so it keeps its place in the set and can still be reached when navigateDisabled says discoverability matters more. readonly keeps every option reachable and refuses every change; disabled outranks selected, so a chosen option that is disabled keeps its mark and loses the ground that said it was yours to change.
|
|
148
|
+
- Keyboard: Tab in and out, arrows along the axis, Home and End, PageUp and PageDown, Space and Enter to choose, Shift with an arrow to move and toggle, Shift+Space for a range, Control+Shift+Home or End to select to an end, Control+A to select everything and again to clear, Control with an arrow to move without choosing under the alternative model, and printable characters for typeahead — where a space is a character once a sequence is open, which is what makes an option named in two words reachable.
|
|
149
|
+
- A role the consumer wrote is read with HostAttributeToken before the host bindings run and is never replaced, so a template wiring the element into something else keeps what it wrote.
|
|
150
|
+
|
|
151
|
+
## Tokens
|
|
152
|
+
|
|
153
|
+
`--slotted-border-subtle`, `--slotted-border-width-thin`, `--slotted-control-border-color`, `--slotted-control-font-size-lg`, `--slotted-control-font-size-md`, `--slotted-control-font-size-sm`, `--slotted-control-gap-lg`, `--slotted-control-gap-md`, `--slotted-control-gap-sm`, `--slotted-control-height-lg`, `--slotted-control-height-md`, `--slotted-control-height-sm`, `--slotted-control-icon-size-lg`, `--slotted-control-icon-size-md`, `--slotted-control-icon-size-sm`, `--slotted-control-invalid-edge-width`, `--slotted-control-padding-inline-lg`, `--slotted-control-padding-inline-md`, `--slotted-control-padding-inline-sm`, `--slotted-control-radius`, `--slotted-control-shadow`, `--slotted-control-transition-duration`, `--slotted-control-transition-easing`, `--slotted-disabled-background`, `--slotted-disabled-border`, `--slotted-disabled-foreground`, `--slotted-duration-loop`, `--slotted-duration-short`, `--slotted-easing-standard`, `--slotted-focus-ring-color`, `--slotted-focus-ring-color-invalid`, `--slotted-focus-ring-offset`, `--slotted-focus-ring-width`, `--slotted-font-family-sans`, `--slotted-font-size-xs`, `--slotted-font-weight-semibold`, `--slotted-line-height-md`, `--slotted-line-height-sm`, `--slotted-listbox-border-color`, `--slotted-listbox-columns`, `--slotted-listbox-group-border-color`, `--slotted-listbox-highlight`, `--slotted-listbox-highlight-active`, `--slotted-listbox-measure`, `--slotted-listbox-option-radius`, `--slotted-listbox-padding-block`, `--slotted-listbox-padding-inline`, `--slotted-listbox-radius`, `--slotted-listbox-rows`, `--slotted-listbox-selected-surface`, `--slotted-listbox-selected-text`, `--slotted-listbox-shadow`, `--slotted-listbox-surface`, `--slotted-listbox-text`, `--slotted-listbox-text-muted`, `--slotted-radius-md`, `--slotted-space-1`, `--slotted-space-2`, `--slotted-space-5`, `--slotted-space-6`, `--slotted-surface`, `--slotted-text`, `--slotted-text-muted`, `--slotted-tone-accent-subtle-active`, `--slotted-tone-accent-subtle-hover`, `--slotted-tone-accent-surface`, `--slotted-tone-accent-text`, `--slotted-tone-danger-border`, `--slotted-tone-secondary-subtle-active`, `--slotted-tone-secondary-subtle-hover`
|
|
154
|
+
|
|
155
|
+
## Examples
|
|
156
|
+
|
|
157
|
+
### One choice, several, or none
|
|
158
|
+
|
|
159
|
+
Three listboxes side by side. The multi-select one writes aria-multiselectable; the read-only one refuses every change and still lets the arrows through.
|
|
160
|
+
|
|
161
|
+
Excerpt — not a complete module
|
|
162
|
+
|
|
163
|
+
```html
|
|
164
|
+
<div slListbox aria-label="Contents" selectionMode="multiple" [defaultValue]="['cheese']">
|
|
165
|
+
@for (filling of fillings; track filling) {
|
|
166
|
+
<div slListboxOption [value]="filling">
|
|
167
|
+
<span slListboxIndicator></span>
|
|
168
|
+
<span slListboxLabel>{{ filling }}</span>
|
|
169
|
+
</div>
|
|
170
|
+
}
|
|
171
|
+
</div>
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
### Both of the selection models the pattern offers
|
|
175
|
+
|
|
176
|
+
The recommended model needs no modifier; the alternative replaces on a plain press and extends with Control. Press one, then Control-press another, in each.
|
|
177
|
+
|
|
178
|
+
Excerpt — not a complete module
|
|
179
|
+
|
|
180
|
+
```html
|
|
181
|
+
<div
|
|
182
|
+
slListbox
|
|
183
|
+
aria-label="Files"
|
|
184
|
+
selectionMode="multiple"
|
|
185
|
+
selectionBehavior="replace"
|
|
186
|
+
[defaultValue]="['budget.xlsx']"
|
|
187
|
+
>
|
|
188
|
+
@for (file of files; track file) {
|
|
189
|
+
<div slListboxOption [value]="file">
|
|
190
|
+
<span slListboxLabel>{{ file }}</span>
|
|
191
|
+
</div>
|
|
192
|
+
}
|
|
193
|
+
</div>
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
### Groups, and the name each one needs
|
|
197
|
+
|
|
198
|
+
Every group carries an accessible name, which the pattern requires of it. Land inside one with the arrows and a screen reader says which group you are in.
|
|
199
|
+
|
|
200
|
+
Excerpt — not a complete module
|
|
201
|
+
|
|
202
|
+
```html
|
|
203
|
+
<div slListbox aria-label="Fruit">
|
|
204
|
+
<div slListboxGroup label="Pome">
|
|
205
|
+
<div slListboxOption value="apple">
|
|
206
|
+
<span slListboxIndicator></span>
|
|
207
|
+
<span slListboxLabel>Apple</span>
|
|
208
|
+
</div>
|
|
209
|
+
</div>
|
|
210
|
+
</div>
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
### Three steps of type and control geometry
|
|
214
|
+
|
|
215
|
+
An option is a control, so its height, inset, type and glyph all read the control scale. Switch the density in the toolbar and the meaning does not change with the size.
|
|
216
|
+
|
|
217
|
+
Excerpt — not a complete module
|
|
218
|
+
|
|
219
|
+
```html
|
|
220
|
+
<div slListbox aria-label="Plan" size="lg">
|
|
221
|
+
@for (plan of plans; track plan.id) {
|
|
222
|
+
<div slListboxOption [value]="plan.id">
|
|
223
|
+
<span slListboxLabel>{{ plan.name }}</span>
|
|
224
|
+
<span slListboxMeta>{{ plan.price }}</span>
|
|
225
|
+
</div>
|
|
226
|
+
}
|
|
227
|
+
</div>
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
### A control on its own, or a list inside a layer
|
|
231
|
+
|
|
232
|
+
framed draws the edge, the ground and the shadow a standalone control needs; plain draws none of them, because the layer around it already has an edge.
|
|
233
|
+
|
|
234
|
+
Excerpt — not a complete module
|
|
235
|
+
|
|
236
|
+
```html
|
|
237
|
+
<div slListbox aria-label="Sort by" variant="plain">
|
|
238
|
+
@for (order of orders; track order) {
|
|
239
|
+
<div slListboxOption [value]="order">
|
|
240
|
+
<span slListboxIndicator></span>
|
|
241
|
+
<span slListboxLabel>{{ order }}</span>
|
|
242
|
+
</div>
|
|
243
|
+
}
|
|
244
|
+
</div>
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
### Two dimensions, and one along the inline axis
|
|
248
|
+
|
|
249
|
+
With columns the arrows step by one across and by columns down; horizontal turns the axes and mirrors them in a right-to-left document.
|
|
250
|
+
|
|
251
|
+
Excerpt — not a complete module
|
|
252
|
+
|
|
253
|
+
```html
|
|
254
|
+
<div slListbox aria-label="Planets" columns="3" selectionMode="multiple">
|
|
255
|
+
@for (planet of planets; track planet) {
|
|
256
|
+
<div slListboxOption [value]="planet">
|
|
257
|
+
<span slListboxIndicator></span>
|
|
258
|
+
<span slListboxLabel>{{ planet }}</span>
|
|
259
|
+
</div>
|
|
260
|
+
}
|
|
261
|
+
</div>
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
### Every state the contract declares
|
|
265
|
+
|
|
266
|
+
Disabled outranks selected, so a chosen option that is disabled keeps its mark and loses its ground. Read-only keeps every option reachable and refuses each change.
|
|
267
|
+
|
|
268
|
+
Excerpt — not a complete module
|
|
269
|
+
|
|
270
|
+
```html
|
|
271
|
+
<div slListbox aria-label="Region" defaultValue="europe">
|
|
272
|
+
<div slListboxOption value="europe">
|
|
273
|
+
<span slListboxIndicator></span>
|
|
274
|
+
<span slListboxLabel>Europe</span>
|
|
275
|
+
</div>
|
|
276
|
+
<div slListboxOption value="antarctica" disabled>
|
|
277
|
+
<span slListboxIndicator></span>
|
|
278
|
+
<span slListboxLabel>Antarctica</span>
|
|
279
|
+
</div>
|
|
280
|
+
</div>
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
### Typing at a long list
|
|
284
|
+
|
|
285
|
+
Type the first letters of an option and the highlight goes there; the same letter pressed again cycles through the options beginning with it. Space mid-sequence is a character.
|
|
286
|
+
|
|
287
|
+
Excerpt — not a complete module
|
|
288
|
+
|
|
289
|
+
```html
|
|
290
|
+
<div slListbox aria-label="Airports">
|
|
291
|
+
@for (airport of airports; track airport.iata) {
|
|
292
|
+
<div slListboxOption [value]="airport.iata" [textValue]="airport.city">
|
|
293
|
+
<span slListboxLabel>{{ airport.city }}</span>
|
|
294
|
+
<span slListboxMeta>{{ airport.iata }}</span>
|
|
295
|
+
</div>
|
|
296
|
+
}
|
|
297
|
+
</div>
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
### Nothing yet, and nothing at all
|
|
301
|
+
|
|
302
|
+
The message lives inside the listbox: outside it a reader hears "listbox, zero items" and then silence, and the words fall outside the box a framed listbox paints.
|
|
303
|
+
|
|
304
|
+
Excerpt — not a complete module
|
|
305
|
+
|
|
306
|
+
```html
|
|
307
|
+
<div slListbox aria-label="Results">
|
|
308
|
+
@if (matches.length === 0) {
|
|
309
|
+
<div slListboxEmpty>No region matches that name.</div>
|
|
310
|
+
}
|
|
311
|
+
</div>
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
### Ten thousand options, and the ones that are rendered
|
|
315
|
+
|
|
316
|
+
Scroll it, then arrow through it: the highlight survives a recycled row, because the active option is pinned and the listbox names it rather than roving a tab stop onto it.
|
|
317
|
+
|
|
318
|
+
Excerpt — not a complete module
|
|
319
|
+
|
|
320
|
+
```html
|
|
321
|
+
<div
|
|
322
|
+
slListbox
|
|
323
|
+
aria-label="Cities"
|
|
324
|
+
virtual
|
|
325
|
+
itemSize="34"
|
|
326
|
+
[items]="cities"
|
|
327
|
+
[getKey]="cityKey"
|
|
328
|
+
[getLabel]="cityLabel"
|
|
329
|
+
>
|
|
330
|
+
<ng-template slListboxOptionContent let-city>
|
|
331
|
+
<span slListboxIndicator></span>
|
|
332
|
+
<span slListboxLabel>{{ city.name }}</span>
|
|
333
|
+
<span slListboxMeta>{{ city.country }}</span>
|
|
334
|
+
</ng-template>
|
|
335
|
+
</div>
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
### Content the family did not choose
|
|
339
|
+
|
|
340
|
+
A label long enough to wrap onto three lines, an unbroken URL, a compound German noun and a right-to-left string. The mark stays on the first line and the value never moves.
|
|
341
|
+
|
|
342
|
+
Excerpt — not a complete module
|
|
343
|
+
|
|
344
|
+
```html
|
|
345
|
+
<div slListboxOption value="asia-pacific">
|
|
346
|
+
<span slListboxIndicator></span>
|
|
347
|
+
<span slListboxLabel>Asia Pacific</span>
|
|
348
|
+
<span slListboxDescription>Sydney, Tokyo, Singapore</span>
|
|
349
|
+
<span slListboxMeta>28</span>
|
|
350
|
+
</div>
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
### A choice a form carries
|
|
354
|
+
|
|
355
|
+
The listbox is a ControlValueAccessor and a Validator, so a Reactive Form reads the value and required is the collection own validity rather than any one option.
|
|
356
|
+
|
|
357
|
+
Excerpt — not a complete module
|
|
358
|
+
|
|
359
|
+
```html
|
|
360
|
+
<div slField>
|
|
361
|
+
<label slFieldLabel>Region</label>
|
|
362
|
+
<div slListbox aria-label="Region" required [formControl]="region">
|
|
363
|
+
@for (option of regions; track option.id) {
|
|
364
|
+
<div slListboxOption [value]="option.id">
|
|
365
|
+
<span slListboxIndicator></span>
|
|
366
|
+
<span slListboxLabel>{{ option.name }}</span>
|
|
367
|
+
</div>
|
|
368
|
+
}
|
|
369
|
+
</div>
|
|
370
|
+
</div>
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
### What an application decides once
|
|
374
|
+
|
|
375
|
+
provideListboxDefaults sets nineteen axes for every listbox under the injector, and an instance that states one still wins. exportAs reaches the instance from the template.
|
|
376
|
+
|
|
377
|
+
Excerpt — not a complete module
|
|
378
|
+
|
|
379
|
+
```ts
|
|
380
|
+
bootstrapApplication(App, {
|
|
381
|
+
providers: [provideListboxDefaults({ size: 'sm', loop: true, selectionBehavior: 'replace' })],
|
|
382
|
+
});
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
### The whole keyboard, one press at a time
|
|
386
|
+
|
|
387
|
+
Tab in, then arrow, page, Home, End, Shift and Control. The panel beside the listbox names the option the keyboard is on and how it got there.
|
|
388
|
+
|
|
389
|
+
Excerpt — not a complete module
|
|
390
|
+
|
|
391
|
+
```html
|
|
392
|
+
<div
|
|
393
|
+
slListbox
|
|
394
|
+
aria-label="Regions"
|
|
395
|
+
loop
|
|
396
|
+
[activeKey]="activeKey()"
|
|
397
|
+
(activeKeyChange)="activeKey.set($event.value)"
|
|
398
|
+
>
|
|
399
|
+
<ng-content />
|
|
400
|
+
</div>
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
### What a reader hears
|
|
404
|
+
|
|
405
|
+
The same listbox under the two focus models, side by side. One roves a tab stop; the other keeps focus on the box and names the active option.
|
|
406
|
+
|
|
407
|
+
Excerpt — not a complete module
|
|
408
|
+
|
|
409
|
+
```html
|
|
410
|
+
<div slListbox aria-label="Suggestions" focusMode="activedescendant" [activeKey]="highlighted()">
|
|
411
|
+
<ng-content />
|
|
412
|
+
</div>
|
|
413
|
+
```
|