@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
|
@@ -0,0 +1,395 @@
|
|
|
1
|
+
{
|
|
2
|
+
"family": "checkbox-group",
|
|
3
|
+
"ui": "checkbox-group",
|
|
4
|
+
"binding": "angular",
|
|
5
|
+
"catalog": {
|
|
6
|
+
"group": "Forms",
|
|
7
|
+
"summary": "Set of checkboxes under one label."
|
|
8
|
+
},
|
|
9
|
+
"axes": {
|
|
10
|
+
"size": [
|
|
11
|
+
"sm",
|
|
12
|
+
"md",
|
|
13
|
+
"lg"
|
|
14
|
+
],
|
|
15
|
+
"variant": [
|
|
16
|
+
"plain",
|
|
17
|
+
"tile"
|
|
18
|
+
],
|
|
19
|
+
"orientation": [
|
|
20
|
+
"vertical",
|
|
21
|
+
"horizontal"
|
|
22
|
+
],
|
|
23
|
+
"labelPlacement": [
|
|
24
|
+
"end",
|
|
25
|
+
"start"
|
|
26
|
+
]
|
|
27
|
+
},
|
|
28
|
+
"members": {
|
|
29
|
+
"checkboxGroup": {
|
|
30
|
+
"nativeElement": "div",
|
|
31
|
+
"defaults": {
|
|
32
|
+
"size": "md",
|
|
33
|
+
"variant": "plain",
|
|
34
|
+
"orientation": "vertical",
|
|
35
|
+
"labelPlacement": "end",
|
|
36
|
+
"showCount": false
|
|
37
|
+
},
|
|
38
|
+
"capabilities": [
|
|
39
|
+
"selection",
|
|
40
|
+
"orientation",
|
|
41
|
+
"size",
|
|
42
|
+
"appearance",
|
|
43
|
+
"placement",
|
|
44
|
+
"disabled",
|
|
45
|
+
"invalid",
|
|
46
|
+
"required",
|
|
47
|
+
"readOnly",
|
|
48
|
+
"wiring"
|
|
49
|
+
],
|
|
50
|
+
"states": [
|
|
51
|
+
"default",
|
|
52
|
+
"disabled",
|
|
53
|
+
"readonly",
|
|
54
|
+
"invalid"
|
|
55
|
+
],
|
|
56
|
+
"parts": [
|
|
57
|
+
"root"
|
|
58
|
+
]
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
"docs": {
|
|
62
|
+
"checkboxGroup": {
|
|
63
|
+
"imports": {
|
|
64
|
+
"source": "import {\n provideCheckboxGroupDefaults,\n SlCheckboxGroup,\n} from '@slotted/angular/checkbox-group';",
|
|
65
|
+
"selector": "[slCheckboxGroup]",
|
|
66
|
+
"exportAs": "slCheckboxGroup"
|
|
67
|
+
},
|
|
68
|
+
"anatomy": [
|
|
69
|
+
{
|
|
70
|
+
"part": "root",
|
|
71
|
+
"element": "the element carrying slCheckboxGroup",
|
|
72
|
+
"required": true,
|
|
73
|
+
"purpose": "The only part. It arranges the boxes, holds the selection, and carries data-ui=\"checkbox-group\", data-size, data-variant and data-orientation, and data-disabled, data-invalid and data-readonly. Its role is group; inside a field group the role is withdrawn, because the fieldset and its legend already name the set. Inside a field, aria-labelledby points at the field’s label. The value accessor and the validator are on this element, so formControlName goes here too."
|
|
74
|
+
}
|
|
75
|
+
],
|
|
76
|
+
"api": [
|
|
77
|
+
{
|
|
78
|
+
"name": "value",
|
|
79
|
+
"type": "readonly string[]",
|
|
80
|
+
"defaultValue": "—",
|
|
81
|
+
"appliesTo": "SlCheckboxGroup",
|
|
82
|
+
"description": "The controlled selection. When present, the consumer owns the selection. When absent, the checkbox group owns it and starts from defaultValue, or from the form control bound to the root."
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"name": "defaultValue",
|
|
86
|
+
"type": "readonly string[]",
|
|
87
|
+
"defaultValue": "[]",
|
|
88
|
+
"appliesTo": "SlCheckboxGroup",
|
|
89
|
+
"description": "The selection an uncontrolled group starts from, read once when the directive initialises."
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"name": "allValues",
|
|
93
|
+
"type": "readonly string[]",
|
|
94
|
+
"defaultValue": "—",
|
|
95
|
+
"appliesTo": "SlCheckboxGroup",
|
|
96
|
+
"description": "Every value the checkbox group holds. A parent slCheckbox needs it: the parent is checked when every value is selected and mixed when some are, which a selection alone cannot tell. It also keeps the selection in the order of this list rather than in the order the boxes were pressed."
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"name": "variant",
|
|
100
|
+
"type": "'plain' | 'tile'",
|
|
101
|
+
"defaultValue": "plain",
|
|
102
|
+
"appliesTo": "SlCheckboxGroup, provideCheckboxGroupDefaults",
|
|
103
|
+
"description": "How every choice is drawn, passed to every box. tile frames each choice and makes its whole surface the target. Arranging the tiles is left to slGrid."
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"name": "orientation",
|
|
107
|
+
"type": "'vertical' | 'horizontal'",
|
|
108
|
+
"defaultValue": "vertical",
|
|
109
|
+
"appliesTo": "SlCheckboxGroup, provideCheckboxGroupDefaults",
|
|
110
|
+
"description": "How the choices flow. A horizontal set wraps instead of scrolling."
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"name": "size",
|
|
114
|
+
"type": "'sm' | 'md' | 'lg'",
|
|
115
|
+
"defaultValue": "md",
|
|
116
|
+
"appliesTo": "SlCheckboxGroup, provideCheckboxGroupDefaults",
|
|
117
|
+
"description": "The type step, passed to every box. A field or field group around the checkbox group decides it first, then the provider."
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
"name": "labelPlacement",
|
|
121
|
+
"type": "'end' | 'start'",
|
|
122
|
+
"defaultValue": "end",
|
|
123
|
+
"appliesTo": "SlCheckboxGroup, provideCheckboxGroupDefaults",
|
|
124
|
+
"description": "Which side of its label each box is on, set once for the set so the boxes line up."
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
"name": "name",
|
|
128
|
+
"type": "string",
|
|
129
|
+
"defaultValue": "—",
|
|
130
|
+
"appliesTo": "SlCheckboxGroup",
|
|
131
|
+
"description": "The submission name every box shares when it sets none of its own. No name is generated: the platform does not group checkboxes by name the way it groups radios."
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
"name": "disabled",
|
|
135
|
+
"type": "boolean",
|
|
136
|
+
"defaultValue": "from the field, or false",
|
|
137
|
+
"appliesTo": "SlCheckboxGroup",
|
|
138
|
+
"description": "Unset rather than false. Reaches every box as the native attribute. A disabled form control sets it too, through setDisabledState."
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
"name": "readOnly",
|
|
142
|
+
"type": "boolean",
|
|
143
|
+
"defaultValue": "from the field, or false",
|
|
144
|
+
"appliesTo": "SlCheckboxGroup",
|
|
145
|
+
"description": "Unset rather than false. Every box keeps its tab stop, its focus ring and its contrast, writes aria-readonly, and refuses every change."
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"name": "invalid",
|
|
149
|
+
"type": "boolean",
|
|
150
|
+
"defaultValue": "from the field, or false",
|
|
151
|
+
"appliesTo": "SlCheckboxGroup",
|
|
152
|
+
"description": "Unset rather than false. Writes aria-invalid on the group and on every box, and data-invalid on the group’s root and on every box’s root."
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
"name": "required",
|
|
156
|
+
"type": "boolean",
|
|
157
|
+
"defaultValue": "from the field, or false",
|
|
158
|
+
"appliesTo": "SlCheckboxGroup",
|
|
159
|
+
"description": "Unset rather than false. Writes aria-required on the group, and makes the group’s validator fail while the selection is empty. It is never the native required, which on a checkbox would demand that one particular box be checked."
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
"name": "showCount",
|
|
163
|
+
"type": "boolean",
|
|
164
|
+
"defaultValue": "false",
|
|
165
|
+
"appliesTo": "SlCheckboxGroup",
|
|
166
|
+
"description": "Inside a field, draws how many of allValues are selected at the end of the field’s label row, as 2/4, and adds that count to the group’s accessible description."
|
|
167
|
+
}
|
|
168
|
+
],
|
|
169
|
+
"composition": [
|
|
170
|
+
{
|
|
171
|
+
"name": "exportAs=\"slCheckboxGroup\"",
|
|
172
|
+
"type": "SlCheckboxGroup",
|
|
173
|
+
"defaultValue": "—",
|
|
174
|
+
"appliesTo": "a template",
|
|
175
|
+
"description": "Reaches the instance, with the resolved axes and the selection for a template to read."
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
"name": "ControlValueAccessor and Validator",
|
|
179
|
+
"type": "formControl, formControlName, ngModel",
|
|
180
|
+
"defaultValue": "—",
|
|
181
|
+
"appliesTo": "the host element",
|
|
182
|
+
"description": "Both are on the root, so a form binding goes on the element that carries slCheckboxGroup. required becomes a validator over the whole selection."
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
"name": "provideCheckboxGroupDefaults()",
|
|
186
|
+
"type": "{ size, variant, orientation, labelPlacement }",
|
|
187
|
+
"defaultValue": "—",
|
|
188
|
+
"appliesTo": "an injector",
|
|
189
|
+
"description": "The four decisions an application takes once for every checkbox group under it. A field or field group around a checkbox group decides size before the provider."
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
"name": "the host element",
|
|
193
|
+
"type": "any element",
|
|
194
|
+
"defaultValue": "—",
|
|
195
|
+
"appliesTo": "SlCheckboxGroup",
|
|
196
|
+
"description": "The host element is the root, so a set of choices can be a ul with each box written as an li."
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
"name": "role",
|
|
200
|
+
"type": "string",
|
|
201
|
+
"defaultValue": "group, or none inside a field group",
|
|
202
|
+
"appliesTo": "the host element",
|
|
203
|
+
"description": "A role written as a static attribute on the host wins. Otherwise the role is group, withdrawn inside a field group, because a fieldset with a legend is already a named group and a second group named by the same legend announces the set twice."
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
"name": "aria-label / aria-labelledby",
|
|
207
|
+
"type": "string",
|
|
208
|
+
"defaultValue": "the field’s label, inside a field",
|
|
209
|
+
"appliesTo": "the host element",
|
|
210
|
+
"description": "Names the group. Inside a field, aria-labelledby points at the field’s label unless either attribute is written as a static attribute on the host. Outside a field and a field group, write one of them, because a group needs a name."
|
|
211
|
+
}
|
|
212
|
+
],
|
|
213
|
+
"events": [
|
|
214
|
+
{
|
|
215
|
+
"name": "(valueChange)",
|
|
216
|
+
"payload": "ChangeRequest<readonly string[]>",
|
|
217
|
+
"when": "Before the selection moves. $event.value is the new array and $event.previous the array it replaces. $event.reason is pointer or keyboard, recovered from the box’s click; $event.source is the originating event; $event.cancel() refuses the move before anything commits. There is no [(value)], because a two-way binding carries only the value and none of the rest."
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
"name": "ControlValueAccessor and Validator",
|
|
221
|
+
"payload": "readonly string[]",
|
|
222
|
+
"when": "Whenever the selection moves under a formControl, formControlName or ngModel bound on the root. The checkbox group also validates the selection: when required, an empty selection fails with { required: true }, a rule about the whole set that no single box can check."
|
|
223
|
+
}
|
|
224
|
+
],
|
|
225
|
+
"accessibility": [
|
|
226
|
+
"The WAI-ARIA Authoring Practices have no pattern for a group of checkboxes: the Checkbox pattern covers one box, and grouping is a question of naming rather than of keyboard behaviour. The sources are the ARIA group role and the Providing Accessible Names and Descriptions practice (w3.org/WAI/ARIA/apg/practices/names-and-descriptions/).",
|
|
227
|
+
"Every box is its own tab stop, and Space toggles the box that has focus. The platform provides this whole keyboard model. It is what sets a checkbox group apart from a radio group, where the set is a single tab stop and the arrow keys move the choice.",
|
|
228
|
+
"The role depends on the container. A field group is a fieldset with a legend, which is already a named group; a role=\"group\" inside it, named by the same legend, would announce the set twice. Inside a field group the checkbox group renders no role, and the legend names the set. Inside a field, the field’s label names the group through aria-labelledby.",
|
|
229
|
+
"The group writes aria-required, never the native required on a box. The native attribute on a checkbox demands that one particular box be checked, which is not what \"choose at least one\" means. That rule is about the whole selection, so the checkbox group, not the box, is the validator.",
|
|
230
|
+
"A checkbox has no native read-only state, so the checkbox group enforces one: every box refuses the activation, aria-readonly announces it, and every tab stop and focus ring stays.",
|
|
231
|
+
"The parent box is derived from the set rather than kept as a state of its own, so it always agrees with the boxes it controls. It reports aria-checked=\"mixed\" through the platform’s indeterminate property, and pressing it replaces the selection instead of adding a value of its own."
|
|
232
|
+
]
|
|
233
|
+
}
|
|
234
|
+
},
|
|
235
|
+
"tokens": [
|
|
236
|
+
"--slotted-checkbox-group-gap",
|
|
237
|
+
"--slotted-control-gap-lg",
|
|
238
|
+
"--slotted-control-gap-md",
|
|
239
|
+
"--slotted-control-gap-sm"
|
|
240
|
+
],
|
|
241
|
+
"examples": [
|
|
242
|
+
{
|
|
243
|
+
"id": "playground",
|
|
244
|
+
"title": "Playground",
|
|
245
|
+
"note": "One set with every axis on it, driven by the controls below the canvas. Tick two options and watch the array in the actions panel: the order is the set’s, never the click order.",
|
|
246
|
+
"language": "html",
|
|
247
|
+
"source": "<div slCheckboxGroup name=\"days\" [allValues]=\"days\" [defaultValue]=\"['mon']\">\n <div slCheckbox value=\"mon\">Segunda</div>\n <div slCheckbox value=\"wed\">Quarta</div>\n <div slCheckbox value=\"fri\">Sexta</div>\n</div>\n",
|
|
248
|
+
"verdict": "excerpt"
|
|
249
|
+
},
|
|
250
|
+
{
|
|
251
|
+
"id": "orientation",
|
|
252
|
+
"title": "How the choices flow",
|
|
253
|
+
"note": "A horizontal set wraps rather than scrolling or clipping, because a row whose last option nobody can see is worse than two rows — and the distance between two choices is twice the distance between a box and its own label.",
|
|
254
|
+
"language": "ts",
|
|
255
|
+
"source": "import { Component } from '@angular/core';\nimport { SlCheckbox } from '@slotted/angular/checkbox';\nimport { SlCheckboxGroup } from '@slotted/angular/checkbox-group';\nimport { SlFieldGroup, SlFieldGroupLegend } from '@slotted/angular/field-group';\n\n@Component({\n selector: 'app-checkbox-group-orientation',\n imports: [SlCheckbox, SlCheckboxGroup, SlFieldGroup, SlFieldGroupLegend],\n template: `\n <fieldset slFieldGroup>\n <legend slFieldGroupLegend>Invoice status</legend>\n <div slCheckboxGroup orientation=\"horizontal\" [defaultValue]=\"['open', 'overdue']\">\n <div slCheckbox value=\"draft\">Draft</div>\n <div slCheckbox value=\"open\">Open</div>\n <div slCheckbox value=\"paid\">Paid</div>\n <div slCheckbox value=\"overdue\">Overdue</div>\n <div slCheckbox value=\"void\">Void</div>\n </div>\n </fieldset>\n `,\n})\nexport class CheckboxGroupOrientation {}\n",
|
|
256
|
+
"verdict": "example"
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
"id": "tile",
|
|
260
|
+
"title": "A set of framed choices",
|
|
261
|
+
"note": "The variant belongs to the group, not to each box: a set with one plain choice among four tiles is a set nobody meant to write. Arrangement is not the group’s — Grid already owns columns, minItemWidth and a stretching alignment, so tiles in a row come out the same width and the same height.",
|
|
262
|
+
"language": "html",
|
|
263
|
+
"source": "<div slCheckboxGroup variant=\"tile\" [defaultValue]=\"['pix']\">\n <div slGrid minItemWidth=\"sm\">\n <div slCheckbox value=\"pix\">\n Pix\n <p slCheckboxDescription>Compensação imediata.</p>\n </div>\n <div slCheckbox value=\"card\">\n Cartão de crédito\n <p slCheckboxDescription>Parcelamento em até doze vezes.</p>\n </div>\n </div>\n</div>\n",
|
|
264
|
+
"verdict": "excerpt"
|
|
265
|
+
},
|
|
266
|
+
{
|
|
267
|
+
"id": "parent",
|
|
268
|
+
"title": "One box that commands the set",
|
|
269
|
+
"note": "The parent is derived and never entered: ticked when every value is selected, mixed between the two, and its request replaces the whole selection rather than toggling a value of its own.",
|
|
270
|
+
"language": "ts",
|
|
271
|
+
"source": "import { Component } from '@angular/core';\nimport { SlCheckbox } from '@slotted/angular/checkbox';\nimport { SlCheckboxGroup } from '@slotted/angular/checkbox-group';\nimport { SlFieldGroup, SlFieldGroupLegend } from '@slotted/angular/field-group';\n\n@Component({\n selector: 'app-checkbox-group-parent',\n imports: [SlCheckbox, SlCheckboxGroup, SlFieldGroup, SlFieldGroupLegend],\n template: `\n <fieldset slFieldGroup>\n <legend slFieldGroupLegend>Columns to export</legend>\n <div\n slCheckboxGroup\n name=\"columns\"\n [allValues]=\"columns\"\n [defaultValue]=\"['order', 'customer', 'total']\"\n >\n <div slCheckbox parent>All columns</div>\n <div slCheckbox value=\"order\">Order number</div>\n <div slCheckbox value=\"customer\">Customer</div>\n <div slCheckbox value=\"placed\">Placed on</div>\n <div slCheckbox value=\"total\">Total</div>\n <div slCheckbox value=\"status\">Status</div>\n </div>\n </fieldset>\n `,\n})\nexport class CheckboxGroupParent {\n readonly columns = ['order', 'customer', 'placed', 'total', 'status'];\n}\n",
|
|
272
|
+
"verdict": "example"
|
|
273
|
+
},
|
|
274
|
+
{
|
|
275
|
+
"id": "states",
|
|
276
|
+
"title": "What the group says to every box in it",
|
|
277
|
+
"note": "Each of the four is unstated rather than false, so a group defers to the field around it and a box defers to the group; stated anywhere, it wins from there down and every box paints it.",
|
|
278
|
+
"language": "ts",
|
|
279
|
+
"source": "import { Component } from '@angular/core';\nimport { SlCheckbox } from '@slotted/angular/checkbox';\nimport { SlCheckboxGroup } from '@slotted/angular/checkbox-group';\nimport {\n SlFieldGroup,\n SlFieldGroupDescription,\n SlFieldGroupError,\n SlFieldGroupLegend,\n} from '@slotted/angular/field-group';\nimport { SlStack } from '@slotted/angular/stack';\n\n@Component({\n selector: 'app-checkbox-group-states',\n imports: [\n SlCheckbox,\n SlCheckboxGroup,\n SlFieldGroup,\n SlFieldGroupDescription,\n SlFieldGroupError,\n SlFieldGroupLegend,\n SlStack,\n ],\n template: `\n <div slStack [gap]=\"6\">\n <fieldset slFieldGroup required>\n <legend slFieldGroupLegend>Sales regions</legend>\n <span slFieldGroupError>Choose at least one region for this price list.</span>\n <div slCheckboxGroup invalid orientation=\"horizontal\">\n <div slCheckbox value=\"us\">United States</div>\n <div slCheckbox value=\"ca\">Canada</div>\n <div slCheckbox value=\"eu\">European Union</div>\n </div>\n </fieldset>\n <fieldset slFieldGroup readOnly>\n <legend slFieldGroupLegend>Tax exemptions</legend>\n <span slFieldGroupDescription>Set by the finance team on the customer record.</span>\n <div slCheckboxGroup orientation=\"horizontal\" [defaultValue]=\"['resale']\">\n <div slCheckbox value=\"resale\">Resale</div>\n <div slCheckbox value=\"nonprofit\">Nonprofit</div>\n </div>\n </fieldset>\n <fieldset slFieldGroup disabled>\n <legend slFieldGroupLegend>Carriers</legend>\n <span slFieldGroupDescription>Carriers open once a ship-from address is saved.</span>\n <div slCheckboxGroup orientation=\"horizontal\" [defaultValue]=\"['ups']\">\n <div slCheckbox value=\"ups\">UPS</div>\n <div slCheckbox value=\"fedex\">FedEx</div>\n <div slCheckbox value=\"usps\">USPS</div>\n </div>\n </fieldset>\n </div>\n `,\n})\nexport class CheckboxGroupStates {}\n",
|
|
280
|
+
"verdict": "example"
|
|
281
|
+
},
|
|
282
|
+
{
|
|
283
|
+
"id": "count",
|
|
284
|
+
"title": "How many of them are chosen",
|
|
285
|
+
"note": "The number reaches the field’s label row through the channel a text field opened for characters, so a reader finds \"2/5\" where they already look for a count rather than in a sentence under the set.",
|
|
286
|
+
"language": "ts",
|
|
287
|
+
"source": "import { Component } from '@angular/core';\nimport { SlCheckbox } from '@slotted/angular/checkbox';\nimport { SlCheckboxGroup } from '@slotted/angular/checkbox-group';\nimport { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';\n\n@Component({\n selector: 'app-checkbox-group-count',\n imports: [SlCheckbox, SlCheckboxGroup, SlField, SlFieldDescription, SlFieldLabel],\n template: `\n <div slField>\n <label slFieldLabel>Fulfil from</label>\n <div\n slCheckboxGroup\n name=\"warehouses\"\n showCount\n [allValues]=\"warehouses\"\n [defaultValue]=\"['seattle', 'tacoma']\"\n >\n <div slCheckbox value=\"seattle\">Seattle</div>\n <div slCheckbox value=\"tacoma\">Tacoma</div>\n <div slCheckbox value=\"portland\">Portland</div>\n <div slCheckbox value=\"boise\">Boise</div>\n </div>\n <span slFieldDescription>Orders ship from the nearest selected warehouse.</span>\n </div>\n `,\n})\nexport class CheckboxGroupCount {\n readonly warehouses = ['seattle', 'tacoma', 'portland', 'boise'];\n}\n",
|
|
288
|
+
"verdict": "example"
|
|
289
|
+
},
|
|
290
|
+
{
|
|
291
|
+
"id": "field",
|
|
292
|
+
"title": "Inside a group of fields, and in a reactive form",
|
|
293
|
+
"note": "The fieldset and its legend are what group and name the set, so this group withdraws its own role — and the same element takes formControlName, because the accessor and the validator both live on the root.",
|
|
294
|
+
"language": "html",
|
|
295
|
+
"source": "<fieldset slFieldGroup required>\n <legend slFieldGroupLegend>Notificações</legend>\n <div slCheckboxGroup required formControlName=\"alerts\">\n <div slCheckbox value=\"approved\">Pedido aprovado</div>\n <div slCheckbox value=\"refused\">Pedido recusado</div>\n </div>\n</fieldset>\n",
|
|
296
|
+
"verdict": "excerpt"
|
|
297
|
+
},
|
|
298
|
+
{
|
|
299
|
+
"id": "content",
|
|
300
|
+
"title": "Content the family did not choose",
|
|
301
|
+
"note": "A set of long options keeps every box on the first line of its own label, a narrow column turns a horizontal set into a stack without a media query, and a right-to-left set mirrors whole rather than rearranging.",
|
|
302
|
+
"language": "html",
|
|
303
|
+
"source": "<div slCheckboxGroup orientation=\"horizontal\">\n <div slCheckbox value=\"a\">\n Autorizo o uso dos dados de navegação para personalizar as recomendações\n </div>\n <div slCheckbox value=\"b\">E também para medir o alcance das campanhas</div>\n</div>\n",
|
|
304
|
+
"verdict": "excerpt"
|
|
305
|
+
},
|
|
306
|
+
{
|
|
307
|
+
"id": "composition",
|
|
308
|
+
"title": "Setting it once, and reaching past it",
|
|
309
|
+
"note": "The token carries the three decisions an application takes once, exportAs reaches the instance, and the root is the consumer’s own element — so a set of choices can be a real list.",
|
|
310
|
+
"language": "html",
|
|
311
|
+
"source": "<ul slCheckboxGroup class=\"slotted-demo-list\" [defaultValue]=\"['a']\">\n <li slCheckbox value=\"a\">Um item</li>\n <li slCheckbox value=\"b\">E outro abaixo dele</li>\n</ul>\n",
|
|
312
|
+
"verdict": "excerpt"
|
|
313
|
+
},
|
|
314
|
+
{
|
|
315
|
+
"id": "keyboard",
|
|
316
|
+
"title": "What the keyboard does, and who implements it",
|
|
317
|
+
"note": "Every box is its own tab stop and Space toggles it, because a checkbox is one choice made on its own — which is exactly what tells this family apart from a radio group, where the whole set is one stop.",
|
|
318
|
+
"language": "html",
|
|
319
|
+
"source": "<!-- The group binds no key at all: each box is a native checkbox, so Tab\n reaches every one of them and Space toggles the one that has focus. -->\n<div slCheckboxGroup>\n <div slCheckbox value=\"a\">Tab até aqui</div>\n <div slCheckbox value=\"b\">E de novo até aqui</div>\n</div>\n",
|
|
320
|
+
"verdict": "excerpt"
|
|
321
|
+
},
|
|
322
|
+
{
|
|
323
|
+
"id": "basic",
|
|
324
|
+
"title": "basic.ts",
|
|
325
|
+
"note": null,
|
|
326
|
+
"language": "ts",
|
|
327
|
+
"source": "import { Component } from '@angular/core';\nimport { SlCheckbox } from '@slotted/angular/checkbox';\nimport { SlCheckboxGroup } from '@slotted/angular/checkbox-group';\nimport { SlFieldGroup, SlFieldGroupLegend } from '@slotted/angular/field-group';\n\n@Component({\n selector: 'app-checkbox-group-basic',\n imports: [SlCheckbox, SlCheckboxGroup, SlFieldGroup, SlFieldGroupLegend],\n template: `\n <fieldset slFieldGroup>\n <legend slFieldGroupLegend>Notify me about failed payments by</legend>\n <div slCheckboxGroup name=\"channels\" [defaultValue]=\"['email', 'in-app']\">\n <div slCheckbox value=\"email\">Email</div>\n <div slCheckbox value=\"sms\">Text message</div>\n <div slCheckbox value=\"in-app\">In-app notification</div>\n <div slCheckbox value=\"slack\">Slack, #billing-alerts</div>\n </div>\n </fieldset>\n `,\n})\nexport class CheckboxGroupBasic {}\n",
|
|
328
|
+
"verdict": "example"
|
|
329
|
+
},
|
|
330
|
+
{
|
|
331
|
+
"id": "controlled",
|
|
332
|
+
"title": "controlled.ts",
|
|
333
|
+
"note": null,
|
|
334
|
+
"language": "ts",
|
|
335
|
+
"source": "import { Component, computed, signal } from '@angular/core';\nimport { SlCheckbox } from '@slotted/angular/checkbox';\nimport { SlCheckboxGroup } from '@slotted/angular/checkbox-group';\nimport { SlFieldGroup, SlFieldGroupLegend } from '@slotted/angular/field-group';\nimport { SlStack } from '@slotted/angular/stack';\n\nconst ORDERS: Record<string, number> = { card: 812, transfer: 145, paypal: 96 };\n\n@Component({\n selector: 'app-checkbox-group-controlled',\n imports: [SlCheckbox, SlCheckboxGroup, SlFieldGroup, SlFieldGroupLegend, SlStack],\n template: `\n <div slStack [gap]=\"4\">\n <fieldset slFieldGroup>\n <legend slFieldGroupLegend>Payment method</legend>\n <div\n slCheckboxGroup\n orientation=\"horizontal\"\n [value]=\"methods()\"\n (valueChange)=\"methods.set($event.value)\"\n >\n <div slCheckbox value=\"card\">Card</div>\n <div slCheckbox value=\"transfer\">Bank transfer</div>\n <div slCheckbox value=\"paypal\">PayPal</div>\n </div>\n </fieldset>\n <span>Showing {{ shown() }} orders</span>\n </div>\n `,\n})\nexport class CheckboxGroupControlled {\n readonly methods = signal<readonly string[]>(['card', 'transfer']);\n readonly shown = computed(() =>\n this.methods().reduce((sum, method) => sum + (ORDERS[method] ?? 0), 0),\n );\n}\n",
|
|
336
|
+
"verdict": "example"
|
|
337
|
+
},
|
|
338
|
+
{
|
|
339
|
+
"id": "defaults",
|
|
340
|
+
"title": "defaults.ts",
|
|
341
|
+
"note": null,
|
|
342
|
+
"language": "ts",
|
|
343
|
+
"source": "import { Component } from '@angular/core';\nimport { SlCheckbox } from '@slotted/angular/checkbox';\nimport { provideCheckboxGroupDefaults, SlCheckboxGroup } from '@slotted/angular/checkbox-group';\nimport { SlFieldGroup, SlFieldGroupLegend } from '@slotted/angular/field-group';\nimport { SlStack } from '@slotted/angular/stack';\n\n@Component({\n selector: 'app-checkbox-group-defaults',\n imports: [SlCheckbox, SlCheckboxGroup, SlFieldGroup, SlFieldGroupLegend, SlStack],\n providers: [provideCheckboxGroupDefaults({ orientation: 'horizontal' })],\n template: `\n <div slStack [gap]=\"5\">\n <fieldset slFieldGroup>\n <legend slFieldGroupLegend>Fulfilment</legend>\n <div slCheckboxGroup [defaultValue]=\"['unfulfilled', 'partial']\">\n <div slCheckbox value=\"unfulfilled\">Unfulfilled</div>\n <div slCheckbox value=\"partial\">Partial</div>\n <div slCheckbox value=\"fulfilled\">Fulfilled</div>\n </div>\n </fieldset>\n <fieldset slFieldGroup>\n <legend slFieldGroupLegend>Sales channel</legend>\n <div slCheckboxGroup [defaultValue]=\"['online']\">\n <div slCheckbox value=\"online\">Online</div>\n <div slCheckbox value=\"retail\">Retail</div>\n <div slCheckbox value=\"wholesale\">Wholesale</div>\n </div>\n </fieldset>\n </div>\n `,\n})\nexport class CheckboxGroupDefaults {}\n",
|
|
344
|
+
"verdict": "example"
|
|
345
|
+
},
|
|
346
|
+
{
|
|
347
|
+
"id": "descriptions",
|
|
348
|
+
"title": "descriptions.ts",
|
|
349
|
+
"note": null,
|
|
350
|
+
"language": "ts",
|
|
351
|
+
"source": "import { Component } from '@angular/core';\nimport { SlCheckbox, SlCheckboxDescription } from '@slotted/angular/checkbox';\nimport { SlCheckboxGroup } from '@slotted/angular/checkbox-group';\nimport { SlFieldGroup, SlFieldGroupLegend } from '@slotted/angular/field-group';\n\n@Component({\n selector: 'app-checkbox-group-descriptions',\n imports: [SlCheckbox, SlCheckboxDescription, SlCheckboxGroup, SlFieldGroup, SlFieldGroupLegend],\n template: `\n <fieldset slFieldGroup>\n <legend slFieldGroupLegend>When stock runs low</legend>\n <div slCheckboxGroup [defaultValue]=\"['alert']\">\n <div slCheckbox value=\"alert\">\n Alert the buyer\n <p slCheckboxDescription>\n Sent to the buyer for the SKU when on-hand drops below the reorder point.\n </p>\n </div>\n <div slCheckbox value=\"draft-po\">\n Draft a purchase order\n <p slCheckboxDescription>\n Created for the preferred supplier at the usual order quantity, waiting for approval.\n </p>\n </div>\n <div slCheckbox value=\"hide\">\n Stop selling online at zero\n <p slCheckboxDescription>\n The product page shows Out of stock instead of a delivery date.\n </p>\n </div>\n </div>\n </fieldset>\n `,\n})\nexport class CheckboxGroupDescriptions {}\n",
|
|
352
|
+
"verdict": "example"
|
|
353
|
+
},
|
|
354
|
+
{
|
|
355
|
+
"id": "disabled-option",
|
|
356
|
+
"title": "disabled-option.ts",
|
|
357
|
+
"note": null,
|
|
358
|
+
"language": "ts",
|
|
359
|
+
"source": "import { Component } from '@angular/core';\nimport { SlCheckbox, SlCheckboxDescription } from '@slotted/angular/checkbox';\nimport { SlCheckboxGroup } from '@slotted/angular/checkbox-group';\nimport { SlFieldGroup, SlFieldGroupLegend } from '@slotted/angular/field-group';\n\n@Component({\n selector: 'app-checkbox-group-disabled-option',\n imports: [SlCheckbox, SlCheckboxDescription, SlCheckboxGroup, SlFieldGroup, SlFieldGroupLegend],\n template: `\n <fieldset slFieldGroup>\n <legend slFieldGroupLegend>Send order updates by</legend>\n <div slCheckboxGroup name=\"updates\" [defaultValue]=\"['email']\">\n <div slCheckbox value=\"email\">Email</div>\n <div slCheckbox value=\"sms\" disabled>\n Text message\n <p slCheckboxDescription>Add a mobile number to the customer record to turn this on.</p>\n </div>\n <div slCheckbox value=\"webhook\">Webhook to the storefront</div>\n </div>\n </fieldset>\n `,\n})\nexport class CheckboxGroupDisabledOption {}\n",
|
|
360
|
+
"verdict": "example"
|
|
361
|
+
},
|
|
362
|
+
{
|
|
363
|
+
"id": "label-placement",
|
|
364
|
+
"title": "label-placement.ts",
|
|
365
|
+
"note": null,
|
|
366
|
+
"language": "ts",
|
|
367
|
+
"source": "import { Component } from '@angular/core';\nimport { SlCheckbox } from '@slotted/angular/checkbox';\nimport { SlCheckboxGroup } from '@slotted/angular/checkbox-group';\nimport { SlFieldGroup, SlFieldGroupLegend } from '@slotted/angular/field-group';\n\n@Component({\n selector: 'app-checkbox-group-label-placement',\n imports: [SlCheckbox, SlCheckboxGroup, SlFieldGroup, SlFieldGroupLegend],\n template: `\n <fieldset slFieldGroup>\n <legend slFieldGroupLegend>Email reports</legend>\n <div slCheckboxGroup labelPlacement=\"start\" [defaultValue]=\"['weekly']\">\n <div slCheckbox value=\"daily\">Daily sales summary</div>\n <div slCheckbox value=\"weekly\">Weekly stock report</div>\n <div slCheckbox value=\"monthly\">Monthly statement</div>\n </div>\n </fieldset>\n `,\n})\nexport class CheckboxGroupLabelPlacement {}\n",
|
|
368
|
+
"verdict": "example"
|
|
369
|
+
},
|
|
370
|
+
{
|
|
371
|
+
"id": "sizes",
|
|
372
|
+
"title": "sizes.ts",
|
|
373
|
+
"note": null,
|
|
374
|
+
"language": "ts",
|
|
375
|
+
"source": "import { Component } from '@angular/core';\nimport { SlCheckbox } from '@slotted/angular/checkbox';\nimport { SlCheckboxGroup } from '@slotted/angular/checkbox-group';\nimport { SlFieldGroup, SlFieldGroupLegend } from '@slotted/angular/field-group';\nimport { SlStack } from '@slotted/angular/stack';\n\n@Component({\n selector: 'app-checkbox-group-sizes',\n imports: [SlCheckbox, SlCheckboxGroup, SlFieldGroup, SlFieldGroupLegend, SlStack],\n template: `\n <div slStack [gap]=\"5\">\n <fieldset slFieldGroup size=\"sm\">\n <legend slFieldGroupLegend>Show columns</legend>\n <div slCheckboxGroup orientation=\"horizontal\" [defaultValue]=\"['sku', 'on-hand']\">\n <div slCheckbox value=\"sku\">SKU</div>\n <div slCheckbox value=\"on-hand\">On hand</div>\n <div slCheckbox value=\"reserved\">Reserved</div>\n </div>\n </fieldset>\n <fieldset slFieldGroup size=\"md\">\n <legend slFieldGroupLegend>Ship from</legend>\n <div slCheckboxGroup orientation=\"horizontal\" [defaultValue]=\"['seattle']\">\n <div slCheckbox value=\"seattle\">Seattle</div>\n <div slCheckbox value=\"tacoma\">Tacoma</div>\n <div slCheckbox value=\"portland\">Portland</div>\n </div>\n </fieldset>\n <fieldset slFieldGroup size=\"lg\">\n <legend slFieldGroupLegend>Accept payment by</legend>\n <div slCheckboxGroup orientation=\"horizontal\" [defaultValue]=\"['card', 'transfer']\">\n <div slCheckbox value=\"card\">Card</div>\n <div slCheckbox value=\"transfer\">Bank transfer</div>\n </div>\n </fieldset>\n </div>\n `,\n})\nexport class CheckboxGroupSizes {}\n",
|
|
376
|
+
"verdict": "example"
|
|
377
|
+
},
|
|
378
|
+
{
|
|
379
|
+
"id": "tiles",
|
|
380
|
+
"title": "tiles.ts",
|
|
381
|
+
"note": null,
|
|
382
|
+
"language": "ts",
|
|
383
|
+
"source": "import { Component } from '@angular/core';\nimport { SlCheckbox, SlCheckboxDescription } from '@slotted/angular/checkbox';\nimport { SlCheckboxGroup } from '@slotted/angular/checkbox-group';\nimport { SlFieldGroup, SlFieldGroupLegend } from '@slotted/angular/field-group';\nimport { SlGrid } from '@slotted/angular/grid';\n\n@Component({\n selector: 'app-checkbox-group-tiles',\n imports: [\n SlCheckbox,\n SlCheckboxDescription,\n SlCheckboxGroup,\n SlFieldGroup,\n SlFieldGroupLegend,\n SlGrid,\n ],\n template: `\n <fieldset slFieldGroup>\n <legend slFieldGroupLegend>Add-ons</legend>\n <div slCheckboxGroup name=\"add-ons\" variant=\"tile\" [defaultValue]=\"['audit-log']\">\n <div slGrid minItemWidth=\"xs\">\n <div slCheckbox value=\"audit-log\">\n Audit log\n <p slCheckboxDescription>$29 per month. Every change kept for a year.</p>\n </div>\n <div slCheckbox value=\"sso\">\n Single sign-on\n <p slCheckboxDescription>$49 per month. SAML and SCIM provisioning.</p>\n </div>\n <div slCheckbox value=\"support\">\n Priority support\n <p slCheckboxDescription>$99 per month. Replies within four hours.</p>\n </div>\n </div>\n </div>\n </fieldset>\n `,\n})\nexport class CheckboxGroupTiles {}\n",
|
|
384
|
+
"verdict": "example"
|
|
385
|
+
},
|
|
386
|
+
{
|
|
387
|
+
"id": "validation",
|
|
388
|
+
"title": "validation.ts",
|
|
389
|
+
"note": null,
|
|
390
|
+
"language": "ts",
|
|
391
|
+
"source": "import { Component, signal } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { SlButton } from '@slotted/angular/button';\nimport { SlCheckbox } from '@slotted/angular/checkbox';\nimport { SlCheckboxGroup } from '@slotted/angular/checkbox-group';\nimport { SlFieldGroup, SlFieldGroupError, SlFieldGroupLegend } from '@slotted/angular/field-group';\nimport { SlInline } from '@slotted/angular/inline';\nimport { SlStack } from '@slotted/angular/stack';\n\n@Component({\n selector: 'app-checkbox-group-validation',\n imports: [\n ReactiveFormsModule,\n SlButton,\n SlCheckbox,\n SlCheckboxGroup,\n SlFieldGroup,\n SlFieldGroupError,\n SlFieldGroupLegend,\n SlInline,\n SlStack,\n ],\n template: `\n <form novalidate (submit)=\"submit($event)\">\n <div slStack [gap]=\"4\">\n <fieldset slFieldGroup required>\n <legend slFieldGroupLegend>Send shipping confirmations by</legend>\n <span slFieldGroupError live=\"polite\" reserve>{{\n missing ? 'Choose at least one channel.' : ''\n }}</span>\n <div slCheckboxGroup [formControl]=\"channels\" [invalid]=\"missing ? true : undefined\">\n <div slCheckbox value=\"email\">Email</div>\n <div slCheckbox value=\"sms\">Text message</div>\n <div slCheckbox value=\"in-app\">In-app notification</div>\n </div>\n </fieldset>\n <div slInline [gap]=\"3\" align=\"center\">\n <button slButton type=\"submit\">Save preferences</button>\n @if (submitted() && channels.valid) {\n <span role=\"status\">Preferences saved.</span>\n }\n </div>\n </div>\n </form>\n `,\n})\nexport class CheckboxGroupValidation {\n /* The group is the form control and its validator: inside a required field\n group, an empty selection fails with { required: true }. */\n readonly channels = new FormControl<readonly string[]>([], { nonNullable: true });\n readonly submitted = signal(false);\n\n get missing(): boolean {\n return this.submitted() && this.channels.invalid;\n }\n\n submit(event: Event): void {\n event.preventDefault();\n this.submitted.set(true);\n }\n}\n",
|
|
392
|
+
"verdict": "example"
|
|
393
|
+
}
|
|
394
|
+
]
|
|
395
|
+
}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
<!-- index: ./index.md -->
|
|
2
|
+
# checkbox-group
|
|
3
|
+
|
|
4
|
+
`data-ui="checkbox-group"` · Set of checkboxes under one label.
|
|
5
|
+
|
|
6
|
+
## Import
|
|
7
|
+
|
|
8
|
+
```ts
|
|
9
|
+
import {
|
|
10
|
+
provideCheckboxGroupDefaults,
|
|
11
|
+
SlCheckboxGroup,
|
|
12
|
+
} from '@slotted/angular/checkbox-group';
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Selector: `[slCheckboxGroup]` · exportAs: `slCheckboxGroup`
|
|
16
|
+
|
|
17
|
+
## Minimal example
|
|
18
|
+
|
|
19
|
+
Example
|
|
20
|
+
|
|
21
|
+
```ts
|
|
22
|
+
import { Component } from '@angular/core';
|
|
23
|
+
import { SlCheckbox } from '@slotted/angular/checkbox';
|
|
24
|
+
import { SlCheckboxGroup } from '@slotted/angular/checkbox-group';
|
|
25
|
+
import { SlFieldGroup, SlFieldGroupLegend } from '@slotted/angular/field-group';
|
|
26
|
+
|
|
27
|
+
@Component({
|
|
28
|
+
selector: 'app-checkbox-group-basic',
|
|
29
|
+
imports: [SlCheckbox, SlCheckboxGroup, SlFieldGroup, SlFieldGroupLegend],
|
|
30
|
+
template: `
|
|
31
|
+
<fieldset slFieldGroup>
|
|
32
|
+
<legend slFieldGroupLegend>Notify me about failed payments by</legend>
|
|
33
|
+
<div slCheckboxGroup name="channels" [defaultValue]="['email', 'in-app']">
|
|
34
|
+
<div slCheckbox value="email">Email</div>
|
|
35
|
+
<div slCheckbox value="sms">Text message</div>
|
|
36
|
+
<div slCheckbox value="in-app">In-app notification</div>
|
|
37
|
+
<div slCheckbox value="slack">Slack, #billing-alerts</div>
|
|
38
|
+
</div>
|
|
39
|
+
</fieldset>
|
|
40
|
+
`,
|
|
41
|
+
})
|
|
42
|
+
export class CheckboxGroupBasic {}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Anatomy
|
|
46
|
+
|
|
47
|
+
| Part | Element | Required |
|
|
48
|
+
| --- | --- | --- |
|
|
49
|
+
| `root` | the element carrying slCheckboxGroup | yes |
|
|
50
|
+
|
|
51
|
+
## Props
|
|
52
|
+
|
|
53
|
+
| Name | Type | Default | Applies to | Description |
|
|
54
|
+
| --- | --- | --- | --- | --- |
|
|
55
|
+
| `value` | `readonly string[]` | — | SlCheckboxGroup | The controlled selection. When present, the consumer owns the selection. When absent, the checkbox group owns it and starts from defaultValue, or from the form control bound to the root. |
|
|
56
|
+
| `defaultValue` | `readonly string[]` | [] | SlCheckboxGroup | The selection an uncontrolled group starts from, read once when the directive initialises. |
|
|
57
|
+
| `allValues` | `readonly string[]` | — | SlCheckboxGroup | Every value the checkbox group holds. A parent slCheckbox needs it: the parent is checked when every value is selected and mixed when some are, which a selection alone cannot tell. It also keeps the selection in the order of this list rather than in the order the boxes were pressed. |
|
|
58
|
+
| `variant` | `'plain' \| 'tile'` | plain | SlCheckboxGroup, provideCheckboxGroupDefaults | How every choice is drawn, passed to every box. tile frames each choice and makes its whole surface the target. Arranging the tiles is left to slGrid. |
|
|
59
|
+
| `orientation` | `'vertical' \| 'horizontal'` | vertical | SlCheckboxGroup, provideCheckboxGroupDefaults | How the choices flow. A horizontal set wraps instead of scrolling. |
|
|
60
|
+
| `size` | `'sm' \| 'md' \| 'lg'` | md | SlCheckboxGroup, provideCheckboxGroupDefaults | The type step, passed to every box. A field or field group around the checkbox group decides it first, then the provider. |
|
|
61
|
+
| `labelPlacement` | `'end' \| 'start'` | end | SlCheckboxGroup, provideCheckboxGroupDefaults | Which side of its label each box is on, set once for the set so the boxes line up. |
|
|
62
|
+
| `name` | `string` | — | SlCheckboxGroup | The submission name every box shares when it sets none of its own. No name is generated: the platform does not group checkboxes by name the way it groups radios. |
|
|
63
|
+
| `disabled` | `boolean` | from the field, or false | SlCheckboxGroup | Unset rather than false. Reaches every box as the native attribute. A disabled form control sets it too, through setDisabledState. |
|
|
64
|
+
| `readOnly` | `boolean` | from the field, or false | SlCheckboxGroup | Unset rather than false. Every box keeps its tab stop, its focus ring and its contrast, writes aria-readonly, and refuses every change. |
|
|
65
|
+
| `invalid` | `boolean` | from the field, or false | SlCheckboxGroup | Unset rather than false. Writes aria-invalid on the group and on every box, and data-invalid on the group’s root and on every box’s root. |
|
|
66
|
+
| `required` | `boolean` | from the field, or false | SlCheckboxGroup | Unset rather than false. Writes aria-required on the group, and makes the group’s validator fail while the selection is empty. It is never the native required, which on a checkbox would demand that one particular box be checked. |
|
|
67
|
+
| `showCount` | `boolean` | false | SlCheckboxGroup | Inside a field, draws how many of allValues are selected at the end of the field’s label row, as 2/4, and adds that count to the group’s accessible description. |
|
|
68
|
+
| `exportAs="slCheckboxGroup"` | `SlCheckboxGroup` | — | a template | Reaches the instance, with the resolved axes and the selection for a template to read. |
|
|
69
|
+
| `ControlValueAccessor and Validator` | `formControl, formControlName, ngModel` | — | the host element | Both are on the root, so a form binding goes on the element that carries slCheckboxGroup. required becomes a validator over the whole selection. |
|
|
70
|
+
| `provideCheckboxGroupDefaults()` | `{ size, variant, orientation, labelPlacement }` | — | an injector | The four decisions an application takes once for every checkbox group under it. A field or field group around a checkbox group decides size before the provider. |
|
|
71
|
+
| `the host element` | `any element` | — | SlCheckboxGroup | The host element is the root, so a set of choices can be a ul with each box written as an li. |
|
|
72
|
+
| `role` | `string` | group, or none inside a field group | the host element | A role written as a static attribute on the host wins. Otherwise the role is group, withdrawn inside a field group, because a fieldset with a legend is already a named group and a second group named by the same legend announces the set twice. |
|
|
73
|
+
| `aria-label / aria-labelledby` | `string` | the field’s label, inside a field | the host element | Names the group. Inside a field, aria-labelledby points at the field’s label unless either attribute is written as a static attribute on the host. Outside a field and a field group, write one of them, because a group needs a name. |
|
|
74
|
+
|
|
75
|
+
## Events
|
|
76
|
+
|
|
77
|
+
| Name | Payload | When |
|
|
78
|
+
| --- | --- | --- |
|
|
79
|
+
| `(valueChange)` | `ChangeRequest<readonly string[]>` | Before the selection moves. $event.value is the new array and $event.previous the array it replaces. $event.reason is pointer or keyboard, recovered from the box’s click; $event.source is the originating event; $event.cancel() refuses the move before anything commits. There is no [(value)], because a two-way binding carries only the value and none of the rest. |
|
|
80
|
+
| `ControlValueAccessor and Validator` | `readonly string[]` | Whenever the selection moves under a formControl, formControlName or ngModel bound on the root. The checkbox group also validates the selection: when required, an empty selection fails with { required: true }, a rule about the whole set that no single box can check. |
|
|
81
|
+
|
|
82
|
+
## Axes and defaults
|
|
83
|
+
|
|
84
|
+
| Axis | Values | Default |
|
|
85
|
+
| --- | --- | --- |
|
|
86
|
+
| `size` | `sm`, `md`, `lg` | `md` |
|
|
87
|
+
| `variant` | `plain`, `tile` | `plain` |
|
|
88
|
+
| `orientation` | `vertical`, `horizontal` | `vertical` |
|
|
89
|
+
| `labelPlacement` | `end`, `start` | `end` |
|
|
90
|
+
|
|
91
|
+
## Rules
|
|
92
|
+
|
|
93
|
+
- The WAI-ARIA Authoring Practices have no pattern for a group of checkboxes: the Checkbox pattern covers one box, and grouping is a question of naming rather than of keyboard behaviour. The sources are the ARIA group role and the Providing Accessible Names and Descriptions practice (w3.org/WAI/ARIA/apg/practices/names-and-descriptions/).
|
|
94
|
+
- Every box is its own tab stop, and Space toggles the box that has focus. The platform provides this whole keyboard model. It is what sets a checkbox group apart from a radio group, where the set is a single tab stop and the arrow keys move the choice.
|
|
95
|
+
- The role depends on the container. A field group is a fieldset with a legend, which is already a named group; a role="group" inside it, named by the same legend, would announce the set twice. Inside a field group the checkbox group renders no role, and the legend names the set. Inside a field, the field’s label names the group through aria-labelledby.
|
|
96
|
+
- The group writes aria-required, never the native required on a box. The native attribute on a checkbox demands that one particular box be checked, which is not what "choose at least one" means. That rule is about the whole selection, so the checkbox group, not the box, is the validator.
|
|
97
|
+
- A checkbox has no native read-only state, so the checkbox group enforces one: every box refuses the activation, aria-readonly announces it, and every tab stop and focus ring stays.
|
|
98
|
+
- The parent box is derived from the set rather than kept as a state of its own, so it always agrees with the boxes it controls. It reports aria-checked="mixed" through the platform’s indeterminate property, and pressing it replaces the selection instead of adding a value of its own.
|
|
99
|
+
|
|
100
|
+
## Tokens
|
|
101
|
+
|
|
102
|
+
`--slotted-checkbox-group-gap`, `--slotted-control-gap-lg`, `--slotted-control-gap-md`, `--slotted-control-gap-sm`
|
|
103
|
+
|
|
104
|
+
## Examples
|
|
105
|
+
|
|
106
|
+
See [checkbox-group.examples.md](./checkbox-group.examples.md).
|