@slotted/angular 0.0.0-stage → 0.1.0-beta.0
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,440 @@
|
|
|
1
|
+
{
|
|
2
|
+
"family": "textarea",
|
|
3
|
+
"ui": "textarea",
|
|
4
|
+
"binding": "angular",
|
|
5
|
+
"catalog": {
|
|
6
|
+
"group": "Forms",
|
|
7
|
+
"summary": "Multi-line text input."
|
|
8
|
+
},
|
|
9
|
+
"axes": {
|
|
10
|
+
"size": [
|
|
11
|
+
"sm",
|
|
12
|
+
"md",
|
|
13
|
+
"lg"
|
|
14
|
+
],
|
|
15
|
+
"variant": [
|
|
16
|
+
"outline",
|
|
17
|
+
"subtle",
|
|
18
|
+
"plain"
|
|
19
|
+
],
|
|
20
|
+
"resize": [
|
|
21
|
+
"block",
|
|
22
|
+
"none",
|
|
23
|
+
"both"
|
|
24
|
+
]
|
|
25
|
+
},
|
|
26
|
+
"members": {
|
|
27
|
+
"textarea": {
|
|
28
|
+
"nativeElement": "textarea",
|
|
29
|
+
"defaults": {
|
|
30
|
+
"size": "md",
|
|
31
|
+
"variant": "outline",
|
|
32
|
+
"mono": false,
|
|
33
|
+
"resize": "block",
|
|
34
|
+
"autoSize": false,
|
|
35
|
+
"rows": 3,
|
|
36
|
+
"maxRows": 12,
|
|
37
|
+
"showCount": false
|
|
38
|
+
},
|
|
39
|
+
"capabilities": [
|
|
40
|
+
"value",
|
|
41
|
+
"appearance",
|
|
42
|
+
"size",
|
|
43
|
+
"disabled",
|
|
44
|
+
"invalid",
|
|
45
|
+
"required",
|
|
46
|
+
"readOnly",
|
|
47
|
+
"wiring"
|
|
48
|
+
],
|
|
49
|
+
"states": [
|
|
50
|
+
"default",
|
|
51
|
+
"hover",
|
|
52
|
+
"focus-visible",
|
|
53
|
+
"disabled",
|
|
54
|
+
"invalid",
|
|
55
|
+
"readonly"
|
|
56
|
+
],
|
|
57
|
+
"parts": [
|
|
58
|
+
"root"
|
|
59
|
+
]
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
"docs": {
|
|
63
|
+
"textarea": {
|
|
64
|
+
"imports": {
|
|
65
|
+
"source": "import { provideTextareaDefaults, SlTextarea } from '@slotted/angular/textarea';",
|
|
66
|
+
"selector": "textarea[slTextarea]",
|
|
67
|
+
"exportAs": "slTextarea"
|
|
68
|
+
},
|
|
69
|
+
"anatomy": [
|
|
70
|
+
{
|
|
71
|
+
"part": "root",
|
|
72
|
+
"element": "textarea[slTextarea]",
|
|
73
|
+
"required": true,
|
|
74
|
+
"purpose": "The textarea element, which is both the control and its frame. It carries data-ui=\"textarea\", data-size, data-variant and data-resize, data-mono and data-auto-size when they are on, and data-disabled, data-invalid and data-readonly. It has no wrapper: the text field wraps its input so that buttons can sit inside one border, but no adornment sits inside a textarea, and its corner holds the resize handle. It is also the ControlValueAccessor, so the textarea binds to a reactive or template form as it stands."
|
|
75
|
+
}
|
|
76
|
+
],
|
|
77
|
+
"api": [
|
|
78
|
+
{
|
|
79
|
+
"name": "value",
|
|
80
|
+
"type": "string",
|
|
81
|
+
"defaultValue": "—",
|
|
82
|
+
"appliesTo": "slTextarea",
|
|
83
|
+
"description": "Makes the value controlled: it is written to the element whenever it changes, the way a form control’s value is. Without it the element keeps its own value."
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"name": "defaultValue",
|
|
87
|
+
"type": "string",
|
|
88
|
+
"defaultValue": "—",
|
|
89
|
+
"appliesTo": "slTextarea",
|
|
90
|
+
"description": "The value the textarea starts from when no value or form control writes one. It is read once the inputs are bound."
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"name": "size",
|
|
94
|
+
"type": "'sm' | 'md' | 'lg'",
|
|
95
|
+
"defaultValue": "md",
|
|
96
|
+
"appliesTo": "slTextarea, provideTextareaDefaults",
|
|
97
|
+
"description": "The step of the control scale. When unset, the textarea takes the size of its field, then of provideTextareaDefaults. The vertical padding is derived from the step, so a textarea of one row is as tall as a text field of the same step at every density."
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"name": "variant",
|
|
101
|
+
"type": "'outline' | 'subtle' | 'plain'",
|
|
102
|
+
"defaultValue": "outline",
|
|
103
|
+
"appliesTo": "slTextarea, provideTextareaDefaults",
|
|
104
|
+
"description": "How much frame the textarea draws: the three frames of the text field, read from the same tokens. When unset, the textarea takes the variant set by provideTextareaDefaults."
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"name": "mono",
|
|
108
|
+
"type": "boolean",
|
|
109
|
+
"defaultValue": "false",
|
|
110
|
+
"appliesTo": "slTextarea, provideTextareaDefaults",
|
|
111
|
+
"description": "Sets the value in the monospaced font with tabular figures, for a payload, a template or a diff."
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"name": "resize",
|
|
115
|
+
"type": "'block' | 'none' | 'both'",
|
|
116
|
+
"defaultValue": "block",
|
|
117
|
+
"appliesTo": "slTextarea, provideTextareaDefaults",
|
|
118
|
+
"description": "Which way the resize handle drags. The default is block rather than the platform’s both, because a textarea wider than its field breaks the field’s grid. While autoSize is on, the handle is removed."
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
"name": "autoSize",
|
|
122
|
+
"type": "boolean",
|
|
123
|
+
"defaultValue": "false",
|
|
124
|
+
"appliesTo": "slTextarea",
|
|
125
|
+
"description": "Grows the textarea with its content through CSS field-sizing, with no measurement in script, which cdkTextareaAutosize performs. rows becomes the floor and maxRows the ceiling."
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
"name": "rows",
|
|
129
|
+
"type": "number",
|
|
130
|
+
"defaultValue": "3",
|
|
131
|
+
"appliesTo": "slTextarea",
|
|
132
|
+
"description": "The starting height in lines, and the floor while autoSize is on. The default is 3 rather than the platform’s 2, because a box of two rows reads as a mistyped input."
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"name": "maxRows",
|
|
136
|
+
"type": "number",
|
|
137
|
+
"defaultValue": "12",
|
|
138
|
+
"appliesTo": "slTextarea",
|
|
139
|
+
"description": "The ceiling autoSize grows to, in lines; past it the textarea scrolls. It cannot be removed, because a textarea that grows without limit pushes the page out from under the caret."
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
"name": "showCount",
|
|
143
|
+
"type": "boolean",
|
|
144
|
+
"defaultValue": "false",
|
|
145
|
+
"appliesTo": "slTextarea",
|
|
146
|
+
"description": "Publishes the length of the value to the field around it, which draws the count at the end of its label row."
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
"name": "countMax",
|
|
150
|
+
"type": "number",
|
|
151
|
+
"defaultValue": "maxlength",
|
|
152
|
+
"appliesTo": "slTextarea",
|
|
153
|
+
"description": "The limit the count is measured against; it defaults to maxlength. Without maxlength it is a soft limit: the value may pass it, and the count is then drawn as invalid."
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
"name": "maxLength",
|
|
157
|
+
"type": "number",
|
|
158
|
+
"defaultValue": "—",
|
|
159
|
+
"appliesTo": "slTextarea",
|
|
160
|
+
"description": "The native limit, which refuses input past it. Bound as [maxLength] or written as a static maxlength attribute, it reaches the element as maxlength and the count is measured against it."
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
"name": "disabled",
|
|
164
|
+
"type": "boolean",
|
|
165
|
+
"defaultValue": "from the field, or false",
|
|
166
|
+
"appliesTo": "slTextarea",
|
|
167
|
+
"description": "Unset rather than false, so the textarea follows the field around it and a disabled form control. When set, it wins and writes the native disabled."
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
"name": "readOnly",
|
|
171
|
+
"type": "boolean",
|
|
172
|
+
"defaultValue": "from the field, or false",
|
|
173
|
+
"appliesTo": "slTextarea",
|
|
174
|
+
"description": "Unset rather than false, so the textarea follows the field around it. Writes the native readonly: the textarea stays focusable, selectable and submitted, and keeps its resize handle. A static readonly attribute on the element counts as set."
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
"name": "invalid",
|
|
178
|
+
"type": "boolean",
|
|
179
|
+
"defaultValue": "from the field, or false",
|
|
180
|
+
"appliesTo": "slTextarea",
|
|
181
|
+
"description": "Unset rather than false, so the textarea follows the field around it. Writes aria-invalid and data-invalid."
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
"name": "required",
|
|
185
|
+
"type": "boolean",
|
|
186
|
+
"defaultValue": "—",
|
|
187
|
+
"appliesTo": "the textarea element",
|
|
188
|
+
"description": "The element’s own attribute; SlTextarea never writes it. Inside a required field, the textarea receives aria-required instead, because the native attribute turns on browser constraint validation."
|
|
189
|
+
}
|
|
190
|
+
],
|
|
191
|
+
"composition": [
|
|
192
|
+
{
|
|
193
|
+
"name": "the directive itself",
|
|
194
|
+
"type": "slTextarea",
|
|
195
|
+
"defaultValue": "—",
|
|
196
|
+
"appliesTo": "the consumer’s own textarea",
|
|
197
|
+
"description": "slTextarea sits on your own textarea element, which is its only part. Every native attribute, listener and form binding you write stays on that element."
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
"name": "exportAs",
|
|
201
|
+
"type": "'slTextarea'",
|
|
202
|
+
"defaultValue": "—",
|
|
203
|
+
"appliesTo": "a template",
|
|
204
|
+
"description": "Reaches the directive instance. Its textareaElement is the native element, with focus(), select() and setSelectionRange()."
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
"name": "provideTextareaDefaults()",
|
|
208
|
+
"type": "{ size, variant, mono, resize }",
|
|
209
|
+
"defaultValue": "—",
|
|
210
|
+
"appliesTo": "an injector",
|
|
211
|
+
"description": "Sets size, variant, mono and resize once for every textarea under the injector. A textarea that states a value keeps it, and a textarea inside a field takes the field’s size over the token’s."
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
"name": "ControlValueAccessor",
|
|
215
|
+
"type": "formControl, formControlName, ngModel",
|
|
216
|
+
"defaultValue": "—",
|
|
217
|
+
"appliesTo": "slTextarea",
|
|
218
|
+
"description": "formControl, formControlName and ngModel bind the textarea directly. It registers no validator: SlTextarea owns no validity, and the form decides it."
|
|
219
|
+
}
|
|
220
|
+
],
|
|
221
|
+
"events": [
|
|
222
|
+
{
|
|
223
|
+
"name": "(valueChange)",
|
|
224
|
+
"payload": "ChangeRequest<string>",
|
|
225
|
+
"when": "Before the value moves. request.value is the new value and request.previous the value it replaces. request.reason is always keyboard, because only an edit in the textarea moves the value, and request.source is the originating event. request.cancel() refuses the change: the form control and the count do not move, and the element keeps what was typed."
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
"name": "ControlValueAccessor",
|
|
229
|
+
"payload": "the form’s own value and touched state",
|
|
230
|
+
"when": "Whenever the value moves and the request was not cancelled, and on blur for touched. It is the two-way binding Angular forms expect, which is why there is no [(value)]: a two-way binding carries neither a reason nor cancel()."
|
|
231
|
+
}
|
|
232
|
+
],
|
|
233
|
+
"accessibility": [
|
|
234
|
+
"The WAI-ARIA Authoring Practices define no pattern for a multi-line text control. Textarea follows the HTML specification for the element and the ARIA textbox role, whose aria-multiline the native element supplies.",
|
|
235
|
+
"Inside a field, the textarea takes its accessible name from the field’s label, whose for attribute points at the identifier the field generates. aria-describedby lists any value you write first, then the ones the field adds: help, description, count and error.",
|
|
236
|
+
"A required field sets aria-required, not the native required. Every value you write on the element (id, aria-describedby, aria-invalid, aria-required and readonly) is read before the host bindings compute and is never overwritten, although an Angular host binding otherwise wins over a static attribute.",
|
|
237
|
+
"Enter adds a line and never submits the form. WAI-ARIA describes this as the difference between a single-line and a multi-line text control, and a comment box that submitted on Enter would lose what was being written.",
|
|
238
|
+
"Tab moves focus out of the textarea. No key is bound, so no shortcut holds keyboard focus inside it.",
|
|
239
|
+
"Growth with the content is CSS, not script: the textarea takes its new height with no animation, so a screen reader announces nothing and a reader who asked for reduced motion sees no movement."
|
|
240
|
+
]
|
|
241
|
+
}
|
|
242
|
+
},
|
|
243
|
+
"tokens": [
|
|
244
|
+
"--slotted-border-subtle",
|
|
245
|
+
"--slotted-control-border-color",
|
|
246
|
+
"--slotted-control-border-width",
|
|
247
|
+
"--slotted-control-font-family",
|
|
248
|
+
"--slotted-control-font-size-lg",
|
|
249
|
+
"--slotted-control-font-size-md",
|
|
250
|
+
"--slotted-control-font-size-sm",
|
|
251
|
+
"--slotted-control-height-lg",
|
|
252
|
+
"--slotted-control-height-md",
|
|
253
|
+
"--slotted-control-height-sm",
|
|
254
|
+
"--slotted-control-invalid-edge-width",
|
|
255
|
+
"--slotted-control-padding-inline-lg",
|
|
256
|
+
"--slotted-control-padding-inline-md",
|
|
257
|
+
"--slotted-control-padding-inline-sm",
|
|
258
|
+
"--slotted-control-radius",
|
|
259
|
+
"--slotted-control-shadow",
|
|
260
|
+
"--slotted-control-shadow-focus-geometry",
|
|
261
|
+
"--slotted-control-surface",
|
|
262
|
+
"--slotted-control-transition-duration",
|
|
263
|
+
"--slotted-control-transition-easing",
|
|
264
|
+
"--slotted-disabled-background",
|
|
265
|
+
"--slotted-disabled-border",
|
|
266
|
+
"--slotted-disabled-foreground",
|
|
267
|
+
"--slotted-focus-ring-color",
|
|
268
|
+
"--slotted-focus-ring-color-invalid",
|
|
269
|
+
"--slotted-focus-ring-offset",
|
|
270
|
+
"--slotted-focus-ring-width",
|
|
271
|
+
"--slotted-font-family-mono",
|
|
272
|
+
"--slotted-line-height-md",
|
|
273
|
+
"--slotted-radius-none",
|
|
274
|
+
"--slotted-surface-sunken",
|
|
275
|
+
"--slotted-text",
|
|
276
|
+
"--slotted-text-muted",
|
|
277
|
+
"--slotted-textarea-background",
|
|
278
|
+
"--slotted-textarea-border-color",
|
|
279
|
+
"--slotted-textarea-color",
|
|
280
|
+
"--slotted-textarea-disabled-background",
|
|
281
|
+
"--slotted-textarea-disabled-border-color",
|
|
282
|
+
"--slotted-textarea-disabled-color",
|
|
283
|
+
"--slotted-textarea-hover-border-color",
|
|
284
|
+
"--slotted-textarea-invalid-border-color",
|
|
285
|
+
"--slotted-textarea-invalid-edge-width",
|
|
286
|
+
"--slotted-textarea-invalid-focus-ring-color",
|
|
287
|
+
"--slotted-textarea-line-height",
|
|
288
|
+
"--slotted-textarea-max-rows",
|
|
289
|
+
"--slotted-textarea-placeholder-color",
|
|
290
|
+
"--slotted-textarea-plain-hover-background",
|
|
291
|
+
"--slotted-textarea-radius",
|
|
292
|
+
"--slotted-textarea-readonly-background",
|
|
293
|
+
"--slotted-textarea-rows",
|
|
294
|
+
"--slotted-textarea-shadow",
|
|
295
|
+
"--slotted-textarea-subtle-background",
|
|
296
|
+
"--slotted-textarea-subtle-border-color",
|
|
297
|
+
"--slotted-textarea-subtle-hover-background",
|
|
298
|
+
"--slotted-tone-accent-border",
|
|
299
|
+
"--slotted-tone-danger-border",
|
|
300
|
+
"--slotted-tone-secondary-subtle-hover"
|
|
301
|
+
],
|
|
302
|
+
"examples": [
|
|
303
|
+
{
|
|
304
|
+
"id": "playground",
|
|
305
|
+
"title": "Playground",
|
|
306
|
+
"note": "One control with every axis on it, driven by the controls below the canvas. Turn autoSize on and type: the box grows to the ceiling and then scrolls.",
|
|
307
|
+
"language": "html",
|
|
308
|
+
"source": "<div slField>\n <label slFieldLabel>Observações</label>\n <textarea slTextarea [rows]=\"3\" placeholder=\"Descreva o que aconteceu\"></textarea>\n <span slFieldDescription>Aparece no histórico do chamado.</span>\n</div>\n",
|
|
309
|
+
"verdict": "excerpt"
|
|
310
|
+
},
|
|
311
|
+
{
|
|
312
|
+
"id": "sizes",
|
|
313
|
+
"title": "The step the control sits at",
|
|
314
|
+
"note": "The block padding is derived rather than chosen — half of what is left when one line box comes out of the control height — so a one-row textarea is exactly as tall as an input of the same step, at every density.",
|
|
315
|
+
"language": "ts",
|
|
316
|
+
"source": "import { Component } from '@angular/core';\nimport { SlField, SlFieldLabel } from '@slotted/angular/field';\nimport { SlStack } from '@slotted/angular/stack';\nimport { SlTextarea } from '@slotted/angular/textarea';\n\n@Component({\n selector: 'app-textarea-sizes',\n imports: [SlField, SlFieldLabel, SlStack, SlTextarea],\n template: `\n <div slStack [gap]=\"5\">\n <div slField size=\"sm\">\n <label slFieldLabel>Line item note</label>\n <textarea\n slTextarea\n [rows]=\"2\"\n defaultValue=\"Pack the glass bottles separately.\"\n ></textarea>\n </div>\n <div slField size=\"md\">\n <label slFieldLabel>Order note</label>\n <textarea\n slTextarea\n [rows]=\"2\"\n defaultValue=\"The customer asked for delivery before noon on Friday.\"\n ></textarea>\n </div>\n <div slField size=\"lg\">\n <label slFieldLabel>Message to the supplier</label>\n <textarea\n slTextarea\n [rows]=\"2\"\n defaultValue=\"Please confirm the revised quantities by Wednesday.\"\n ></textarea>\n </div>\n </div>\n `,\n})\nexport class TextareaSizes {}\n",
|
|
317
|
+
"verdict": "example"
|
|
318
|
+
},
|
|
319
|
+
{
|
|
320
|
+
"id": "variants",
|
|
321
|
+
"title": "How much frame the control shows",
|
|
322
|
+
"note": "The same three frames the single-line control paints, against the same tokens: one that takes the ground it is placed on, one that sinks into the page, and one that shows nothing until it is used.",
|
|
323
|
+
"language": "ts",
|
|
324
|
+
"source": "import { Component } from '@angular/core';\nimport { SlField, SlFieldLabel } from '@slotted/angular/field';\nimport { SlStack } from '@slotted/angular/stack';\nimport { SlTextarea } from '@slotted/angular/textarea';\n\n@Component({\n selector: 'app-textarea-variants',\n imports: [SlField, SlFieldLabel, SlStack, SlTextarea],\n template: `\n <div slStack [gap]=\"5\">\n <div slField>\n <label slFieldLabel>Return reason</label>\n <textarea\n slTextarea\n variant=\"outline\"\n [rows]=\"2\"\n defaultValue=\"Two jars arrived with broken seals.\"\n ></textarea>\n </div>\n <div slField>\n <label slFieldLabel>Warehouse note</label>\n <textarea\n slTextarea\n variant=\"subtle\"\n [rows]=\"2\"\n defaultValue=\"Restock on shelf B4 after inspection.\"\n ></textarea>\n </div>\n <div slField>\n <label slFieldLabel>Picker comment</label>\n <textarea\n slTextarea\n variant=\"plain\"\n [rows]=\"2\"\n defaultValue=\"Counted twice, 46 units on hand.\"\n ></textarea>\n </div>\n </div>\n `,\n})\nexport class TextareaVariants {}\n",
|
|
325
|
+
"verdict": "example"
|
|
326
|
+
},
|
|
327
|
+
{
|
|
328
|
+
"id": "auto-size",
|
|
329
|
+
"title": "Growing with the content",
|
|
330
|
+
"note": "Nothing is measured on the main thread: CSS field-sizing grows the box, rows is the floor and maxRows the ceiling. Type past four lines in the first example and the control scrolls rather than pushing the page.",
|
|
331
|
+
"language": "ts",
|
|
332
|
+
"source": "import { Component } from '@angular/core';\nimport { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';\nimport { SlTextarea } from '@slotted/angular/textarea';\n\n@Component({\n selector: 'app-textarea-auto-size',\n imports: [SlField, SlFieldDescription, SlFieldLabel, SlTextarea],\n template: `\n <div slField>\n <label slFieldLabel>Picking note</label>\n <textarea\n slTextarea\n autoSize\n [rows]=\"2\"\n [maxRows]=\"6\"\n defaultValue=\"Use the reinforced boxes for the olive oil.\"\n ></textarea>\n <span slFieldDescription>Shown to the picker on the warehouse screen.</span>\n </div>\n `,\n})\nexport class TextareaAutoSize {}\n",
|
|
333
|
+
"verdict": "example"
|
|
334
|
+
},
|
|
335
|
+
{
|
|
336
|
+
"id": "resize",
|
|
337
|
+
"title": "The handle in the corner",
|
|
338
|
+
"note": "block is the default rather than the platform’s both, because a control wider than its field breaks the field’s own grid. The handle is withdrawn entirely while autoSize is on, since the two would disagree on the next keystroke.",
|
|
339
|
+
"language": "html",
|
|
340
|
+
"source": "<textarea slTextarea resize=\"none\"></textarea>\n<textarea slTextarea resize=\"both\"></textarea>\n\n<!-- autoSize wins: the handle is withdrawn rather than left to fight. -->\n<textarea slTextarea autoSize resize=\"both\"></textarea>\n",
|
|
341
|
+
"verdict": "excerpt"
|
|
342
|
+
},
|
|
343
|
+
{
|
|
344
|
+
"id": "states",
|
|
345
|
+
"title": "The four states the control paints",
|
|
346
|
+
"note": "Read-only keeps full-strength ink and its handle, because the commonest thing a read-only textarea holds is a value someone has to copy; disabled loses the handle as well, since a handle on a control nobody can type in is a handle that lies.",
|
|
347
|
+
"language": "ts",
|
|
348
|
+
"source": "import { Component } from '@angular/core';\nimport { SlField, SlFieldDescription, SlFieldError, SlFieldLabel } from '@slotted/angular/field';\nimport { SlStack } from '@slotted/angular/stack';\nimport { SlTextarea } from '@slotted/angular/textarea';\n\n@Component({\n selector: 'app-textarea-states',\n imports: [SlField, SlFieldDescription, SlFieldError, SlFieldLabel, SlStack, SlTextarea],\n template: `\n <div slStack [gap]=\"5\">\n <div slField invalid required>\n <label slFieldLabel>Damage report</label>\n <textarea slTextarea [rows]=\"2\" defaultValue=\"Box dented.\"></textarea>\n <span slFieldError>Describe the damage in at least 20 characters.</span>\n </div>\n <div slField readOnly>\n <label slFieldLabel>Customer note</label>\n <textarea\n slTextarea\n [rows]=\"2\"\n defaultValue=\"Please ring the bell twice. The office is on the second floor.\"\n ></textarea>\n <span slFieldDescription>Written by the customer at checkout.</span>\n </div>\n <div slField disabled>\n <label slFieldLabel>Carrier instructions</label>\n <textarea slTextarea [rows]=\"2\" defaultValue=\"Leave with the building manager.\"></textarea>\n <span slFieldDescription>Locked once the shipment is booked.</span>\n </div>\n </div>\n `,\n})\nexport class TextareaStates {}\n",
|
|
349
|
+
"verdict": "example"
|
|
350
|
+
},
|
|
351
|
+
{
|
|
352
|
+
"id": "count",
|
|
353
|
+
"title": "Counting what has been typed",
|
|
354
|
+
"note": "The control counts and the field draws it in the spare column of the label row, so a count that appears on the first keystroke never shares a row with the error and pushes it — which is where Angular Material puts it.",
|
|
355
|
+
"language": "ts",
|
|
356
|
+
"source": "import { Component } from '@angular/core';\nimport { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';\nimport { SlStack } from '@slotted/angular/stack';\nimport { SlTextarea } from '@slotted/angular/textarea';\n\n@Component({\n selector: 'app-textarea-count',\n imports: [SlField, SlFieldDescription, SlFieldLabel, SlStack, SlTextarea],\n template: `\n <div slStack [gap]=\"5\">\n <div slField>\n <label slFieldLabel>Gift message</label>\n <textarea\n slTextarea\n [rows]=\"2\"\n maxlength=\"150\"\n showCount\n defaultValue=\"Happy anniversary to the whole team at Alfreds Futterkiste.\"\n ></textarea>\n <span slFieldDescription>Printed on a card inside the box.</span>\n </div>\n <div slField>\n <label slFieldLabel>Product summary</label>\n <textarea\n slTextarea\n [rows]=\"3\"\n countMax=\"120\"\n showCount\n defaultValue=\"Hand-picked Darjeeling first flush, packed in resealable tins of 100 grams. Ships within two days.\"\n ></textarea>\n <span slFieldDescription>Search results cut summaries after 120 characters.</span>\n </div>\n </div>\n `,\n})\nexport class TextareaCount {}\n",
|
|
357
|
+
"verdict": "example"
|
|
358
|
+
},
|
|
359
|
+
{
|
|
360
|
+
"id": "content",
|
|
361
|
+
"title": "Content the family did not choose",
|
|
362
|
+
"note": "A pasted token with no break in it — a signed URL, a certificate, a container digest — wraps instead of taking the page’s horizontal scrollbar with it, and nothing is removed from the value.",
|
|
363
|
+
"language": "html",
|
|
364
|
+
"source": "<textarea slTextarea [rows]=\"3\">{{ jwt }}</textarea>\n\n<!-- overflow-wrap: anywhere in the stylesheet, so the whole string stays\n selectable, copyable and reachable with the caret. -->\n<textarea slTextarea dir=\"rtl\" [rows]=\"3\">مرحبا بالعالم</textarea>\n",
|
|
365
|
+
"verdict": "excerpt"
|
|
366
|
+
},
|
|
367
|
+
{
|
|
368
|
+
"id": "composition",
|
|
369
|
+
"title": "Setting it once, and reaching past it",
|
|
370
|
+
"note": "provideTextareaDefaults carries the four decisions an application takes once; exportAs reaches the instance, and textareaElement is the native element with focus, select and setSelectionRange already on it.",
|
|
371
|
+
"language": "html",
|
|
372
|
+
"source": "<!-- ControlValueAccessor: the control belongs in a form as it stands. -->\n<textarea slTextarea [formControl]=\"notes\" autoSize></textarea>\n\n<!-- exportAs, for the element the template has to reach. -->\n<textarea slTextarea #campo=\"slTextarea\"></textarea>\n<button type=\"button\" (click)=\"campo.textareaElement.select()\">Selecionar</button>\n",
|
|
373
|
+
"verdict": "excerpt"
|
|
374
|
+
},
|
|
375
|
+
{
|
|
376
|
+
"id": "keyboard",
|
|
377
|
+
"title": "What the keyboard does, and what it deliberately does not",
|
|
378
|
+
"note": "Enter makes a line and never submits — the difference WAI-ARIA notes between a single-line and a multi-line control — and Tab leaves the control rather than inserting a tab, so a keyboard user is never trapped in a comment box.",
|
|
379
|
+
"language": "html",
|
|
380
|
+
"source": "<form (ngSubmit)=\"enviar()\">\n <textarea slTextarea [formControl]=\"notes\" [rows]=\"3\"></textarea>\n <button slButton type=\"submit\">Enviar</button>\n</form>\n",
|
|
381
|
+
"verdict": "excerpt"
|
|
382
|
+
},
|
|
383
|
+
{
|
|
384
|
+
"id": "basic",
|
|
385
|
+
"title": "basic.ts",
|
|
386
|
+
"note": null,
|
|
387
|
+
"language": "ts",
|
|
388
|
+
"source": "import { Component } from '@angular/core';\nimport { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';\nimport { SlTextarea } from '@slotted/angular/textarea';\n\n@Component({\n selector: 'app-textarea-basic',\n imports: [SlField, SlFieldDescription, SlFieldLabel, SlTextarea],\n template: `\n <div slField>\n <label slFieldLabel>Delivery instructions</label>\n <textarea slTextarea placeholder=\"Gate code, loading dock, opening hours\"></textarea>\n <span slFieldDescription>Printed on the packing slip for the carrier.</span>\n </div>\n `,\n})\nexport class TextareaBasic {}\n",
|
|
389
|
+
"verdict": "example"
|
|
390
|
+
},
|
|
391
|
+
{
|
|
392
|
+
"id": "comment-composer",
|
|
393
|
+
"title": "comment-composer.ts",
|
|
394
|
+
"note": null,
|
|
395
|
+
"language": "ts",
|
|
396
|
+
"source": "import { Component, signal } from '@angular/core';\nimport { SlButton } from '@slotted/angular/button';\nimport { SlField, SlFieldLabel } from '@slotted/angular/field';\nimport { SlInline } from '@slotted/angular/inline';\nimport { SlStack } from '@slotted/angular/stack';\nimport { SlTextarea } from '@slotted/angular/textarea';\nimport { SlText } from '@slotted/angular/typography';\n\ninterface Comment {\n id: number;\n author: string;\n time: string;\n body: string;\n}\n\nconst THREAD: Comment[] = [\n {\n id: 1,\n author: 'Maria Anders',\n time: '09:12',\n body: 'The customer called: the pallet has to arrive before the store opens at 8:00.',\n },\n {\n id: 2,\n author: 'Thomas Hardy',\n time: '10:47',\n body: 'Booked with the early carrier. Tracking follows once the truck is loaded.',\n },\n];\n\n@Component({\n selector: 'app-textarea-comment-composer',\n imports: [SlButton, SlField, SlFieldLabel, SlInline, SlStack, SlTextarea, SlText],\n template: `\n <div slStack [gap]=\"6\">\n <div slStack [gap]=\"4\">\n @for (comment of comments(); track comment.id) {\n <div slStack [gap]=\"1\">\n <div slInline [gap]=\"2\" align=\"baseline\">\n <span slText size=\"sm\" weight=\"semibold\">{{ comment.author }}</span>\n <span slText size=\"sm\" tone=\"muted\">{{ comment.time }}</span>\n </div>\n <span slText size=\"sm\">{{ comment.body }}</span>\n </div>\n }\n </div>\n <form (submit)=\"submit($event)\">\n <div slStack [gap]=\"3\">\n <div slField>\n <label slFieldLabel>Comment on order 10248</label>\n <textarea\n slTextarea\n autoSize\n [rows]=\"2\"\n [maxRows]=\"8\"\n placeholder=\"Write an update for the team\"\n [value]=\"draft()\"\n (valueChange)=\"draft.set($event.value)\"\n ></textarea>\n </div>\n <div slInline justify=\"end\">\n <button slButton type=\"submit\">Post comment</button>\n </div>\n </div>\n </form>\n </div>\n `,\n})\nexport class TextareaCommentComposer {\n readonly comments = signal(THREAD);\n readonly draft = signal('');\n\n submit(event: Event): void {\n event.preventDefault();\n const body = this.draft().trim();\n if (body === '') return;\n this.comments.update((current) => [\n ...current,\n { id: current.length + 1, author: 'You', time: 'Just now', body },\n ]);\n this.draft.set('');\n }\n}\n",
|
|
397
|
+
"verdict": "example"
|
|
398
|
+
},
|
|
399
|
+
{
|
|
400
|
+
"id": "defaults",
|
|
401
|
+
"title": "defaults.ts",
|
|
402
|
+
"note": null,
|
|
403
|
+
"language": "ts",
|
|
404
|
+
"source": "import { Component } from '@angular/core';\nimport { SlField, SlFieldLabel } from '@slotted/angular/field';\nimport { SlStack } from '@slotted/angular/stack';\nimport { provideTextareaDefaults, SlTextarea } from '@slotted/angular/textarea';\n\n@Component({\n selector: 'app-textarea-defaults',\n imports: [SlField, SlFieldLabel, SlStack, SlTextarea],\n providers: [provideTextareaDefaults({ variant: 'subtle', resize: 'none' })],\n template: `\n <div slStack [gap]=\"5\">\n <div slField>\n <label slFieldLabel>Reply to the customer</label>\n <textarea slTextarea [rows]=\"2\" defaultValue=\"Your refund was issued today.\"></textarea>\n </div>\n <div slField>\n <label slFieldLabel>Internal note</label>\n <textarea slTextarea [rows]=\"2\" defaultValue=\"Refund approved by finance.\"></textarea>\n </div>\n <div slField>\n <label slFieldLabel>Escalation summary</label>\n <textarea\n slTextarea\n variant=\"outline\"\n [rows]=\"2\"\n defaultValue=\"Second refund request this quarter.\"\n ></textarea>\n </div>\n </div>\n `,\n})\nexport class TextareaDefaults {}\n",
|
|
405
|
+
"verdict": "example"
|
|
406
|
+
},
|
|
407
|
+
{
|
|
408
|
+
"id": "mono",
|
|
409
|
+
"title": "mono.ts",
|
|
410
|
+
"note": null,
|
|
411
|
+
"language": "ts",
|
|
412
|
+
"source": "import { Component } from '@angular/core';\nimport { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';\nimport { SlTextarea } from '@slotted/angular/textarea';\n\nconst PAYLOAD = `{\n \"event\": \"order.shipped\",\n \"orderId\": 10248,\n \"carrier\": \"Federal Shipping\",\n \"tracking\": \"FS-2026-0042-7731\"\n}`;\n\n@Component({\n selector: 'app-textarea-mono',\n imports: [SlField, SlFieldDescription, SlFieldLabel, SlTextarea],\n template: `\n <div slField>\n <label slFieldLabel>Test payload</label>\n <textarea\n slTextarea\n mono\n variant=\"subtle\"\n [rows]=\"7\"\n spellcheck=\"false\"\n [defaultValue]=\"payload\"\n ></textarea>\n <span slFieldDescription>Sent to your endpoint when you press Send test event.</span>\n </div>\n `,\n})\nexport class TextareaMono {\n readonly payload = PAYLOAD;\n}\n",
|
|
413
|
+
"verdict": "example"
|
|
414
|
+
},
|
|
415
|
+
{
|
|
416
|
+
"id": "read-only",
|
|
417
|
+
"title": "read-only.ts",
|
|
418
|
+
"note": null,
|
|
419
|
+
"language": "ts",
|
|
420
|
+
"source": "import { Component } from '@angular/core';\nimport { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';\nimport { SlTextarea } from '@slotted/angular/textarea';\n\nconst TERMS = `1. Payment. Invoices are payable within 30 days of the invoice date. Late payments carry interest of 1% per month.\n\n2. Delivery. The supplier ships within five business days of a confirmed purchase order. Partial shipments are invoiced separately.\n\n3. Returns. Goods damaged in transit are reported within 48 hours of receipt, with photographs of the packaging.\n\n4. Prices. Prices are fixed for the term of this agreement and reviewed every January.\n\n5. Termination. Either party may end this agreement with 60 days' written notice.`;\n\n@Component({\n selector: 'app-textarea-read-only',\n imports: [SlField, SlFieldDescription, SlFieldLabel, SlTextarea],\n template: `\n <div slField>\n <label slFieldLabel>Supplier terms</label>\n <textarea slTextarea readOnly [rows]=\"6\" [defaultValue]=\"terms\"></textarea>\n <span slFieldDescription>Agreed with Exotic Liquids on 3 March 2026.</span>\n </div>\n `,\n})\nexport class TextareaReadOnly {\n readonly terms = TERMS;\n}\n",
|
|
421
|
+
"verdict": "example"
|
|
422
|
+
},
|
|
423
|
+
{
|
|
424
|
+
"id": "rows",
|
|
425
|
+
"title": "rows.ts",
|
|
426
|
+
"note": null,
|
|
427
|
+
"language": "ts",
|
|
428
|
+
"source": "import { Component } from '@angular/core';\nimport { SlField, SlFieldLabel } from '@slotted/angular/field';\nimport { SlStack } from '@slotted/angular/stack';\nimport { SlTextarea } from '@slotted/angular/textarea';\n\n@Component({\n selector: 'app-textarea-rows',\n imports: [SlField, SlFieldLabel, SlStack, SlTextarea],\n template: `\n <div slStack [gap]=\"5\">\n <div slField>\n <label slFieldLabel>Gift message</label>\n <textarea\n slTextarea\n [rows]=\"2\"\n resize=\"none\"\n defaultValue=\"Happy birthday, Laura. Enjoy the tea.\"\n ></textarea>\n </div>\n <div slField>\n <label slFieldLabel>Incident report</label>\n <textarea\n slTextarea\n [rows]=\"5\"\n placeholder=\"What happened, when, and who was involved\"\n ></textarea>\n </div>\n <div slField>\n <label slFieldLabel>Reply draft</label>\n <textarea\n slTextarea\n resize=\"both\"\n placeholder=\"Drag the corner to resize in both directions\"\n ></textarea>\n </div>\n </div>\n `,\n})\nexport class TextareaRows {}\n",
|
|
429
|
+
"verdict": "example"
|
|
430
|
+
},
|
|
431
|
+
{
|
|
432
|
+
"id": "validation",
|
|
433
|
+
"title": "validation.ts",
|
|
434
|
+
"note": null,
|
|
435
|
+
"language": "ts",
|
|
436
|
+
"source": "import { Component, computed, signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { FormControl, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { SlButton } from '@slotted/angular/button';\nimport { SlField, SlFieldError, SlFieldLabel } from '@slotted/angular/field';\nimport { SlInline } from '@slotted/angular/inline';\nimport { SlStack } from '@slotted/angular/stack';\nimport { SlTextarea } from '@slotted/angular/textarea';\n\nconst MIN_LENGTH = 20;\n\n@Component({\n selector: 'app-textarea-validation',\n imports: [\n ReactiveFormsModule,\n SlButton,\n SlField,\n SlFieldError,\n SlFieldLabel,\n SlInline,\n SlStack,\n SlTextarea,\n ],\n template: `\n <form novalidate (submit)=\"submit($event)\">\n <div slStack [gap]=\"4\">\n <div slField required [invalid]=\"error() !== '' ? true : undefined\">\n <label slFieldLabel>What is wrong with the item?</label>\n <textarea slTextarea [formControl]=\"details\" (valueChange)=\"sent.set(false)\"></textarea>\n <span slFieldError live=\"polite\" reserve>{{ error() }}</span>\n </div>\n <div slInline [gap]=\"3\" align=\"center\">\n <button slButton type=\"submit\">Request a return</button>\n @if (sent()) {\n <span role=\"status\">Return requested.</span>\n }\n </div>\n </div>\n </form>\n `,\n})\nexport class TextareaValidation {\n readonly details = new FormControl('', {\n nonNullable: true,\n validators: [Validators.required, Validators.minLength(MIN_LENGTH)],\n });\n readonly value = toSignal(this.details.valueChanges, { initialValue: this.details.value });\n readonly submitted = signal(false);\n readonly sent = signal(false);\n readonly error = computed(() => {\n this.value();\n if (!this.submitted()) return '';\n if (this.details.hasError('required')) return 'Describe what is wrong with the item.';\n if (this.details.hasError('minlength')) {\n return `Add more detail: at least ${MIN_LENGTH} characters.`;\n }\n return '';\n });\n\n submit(event: Event): void {\n event.preventDefault();\n this.submitted.set(true);\n this.sent.set(this.details.valid);\n }\n}\n",
|
|
437
|
+
"verdict": "example"
|
|
438
|
+
}
|
|
439
|
+
]
|
|
440
|
+
}
|
package/docs/textarea.md
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
<!-- index: ./index.md -->
|
|
2
|
+
# textarea
|
|
3
|
+
|
|
4
|
+
`data-ui="textarea"` · Multi-line text input.
|
|
5
|
+
|
|
6
|
+
## Import
|
|
7
|
+
|
|
8
|
+
```ts
|
|
9
|
+
import { provideTextareaDefaults, SlTextarea } from '@slotted/angular/textarea';
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
Selector: `textarea[slTextarea]` · exportAs: `slTextarea`
|
|
13
|
+
|
|
14
|
+
## Minimal example
|
|
15
|
+
|
|
16
|
+
Example
|
|
17
|
+
|
|
18
|
+
```ts
|
|
19
|
+
import { Component } from '@angular/core';
|
|
20
|
+
import { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';
|
|
21
|
+
import { SlTextarea } from '@slotted/angular/textarea';
|
|
22
|
+
|
|
23
|
+
@Component({
|
|
24
|
+
selector: 'app-textarea-basic',
|
|
25
|
+
imports: [SlField, SlFieldDescription, SlFieldLabel, SlTextarea],
|
|
26
|
+
template: `
|
|
27
|
+
<div slField>
|
|
28
|
+
<label slFieldLabel>Delivery instructions</label>
|
|
29
|
+
<textarea slTextarea placeholder="Gate code, loading dock, opening hours"></textarea>
|
|
30
|
+
<span slFieldDescription>Printed on the packing slip for the carrier.</span>
|
|
31
|
+
</div>
|
|
32
|
+
`,
|
|
33
|
+
})
|
|
34
|
+
export class TextareaBasic {}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Anatomy
|
|
38
|
+
|
|
39
|
+
| Part | Element | Required |
|
|
40
|
+
| --- | --- | --- |
|
|
41
|
+
| `root` | textarea[slTextarea] | yes |
|
|
42
|
+
|
|
43
|
+
## Props
|
|
44
|
+
|
|
45
|
+
| Name | Type | Default | Applies to | Description |
|
|
46
|
+
| --- | --- | --- | --- | --- |
|
|
47
|
+
| `value` | `string` | — | slTextarea | Makes the value controlled: it is written to the element whenever it changes, the way a form control’s value is. Without it the element keeps its own value. |
|
|
48
|
+
| `defaultValue` | `string` | — | slTextarea | The value the textarea starts from when no value or form control writes one. It is read once the inputs are bound. |
|
|
49
|
+
| `size` | `'sm' \| 'md' \| 'lg'` | md | slTextarea, provideTextareaDefaults | The step of the control scale. When unset, the textarea takes the size of its field, then of provideTextareaDefaults. The vertical padding is derived from the step, so a textarea of one row is as tall as a text field of the same step at every density. |
|
|
50
|
+
| `variant` | `'outline' \| 'subtle' \| 'plain'` | outline | slTextarea, provideTextareaDefaults | How much frame the textarea draws: the three frames of the text field, read from the same tokens. When unset, the textarea takes the variant set by provideTextareaDefaults. |
|
|
51
|
+
| `mono` | `boolean` | false | slTextarea, provideTextareaDefaults | Sets the value in the monospaced font with tabular figures, for a payload, a template or a diff. |
|
|
52
|
+
| `resize` | `'block' \| 'none' \| 'both'` | block | slTextarea, provideTextareaDefaults | Which way the resize handle drags. The default is block rather than the platform’s both, because a textarea wider than its field breaks the field’s grid. While autoSize is on, the handle is removed. |
|
|
53
|
+
| `autoSize` | `boolean` | false | slTextarea | Grows the textarea with its content through CSS field-sizing, with no measurement in script, which cdkTextareaAutosize performs. rows becomes the floor and maxRows the ceiling. |
|
|
54
|
+
| `rows` | `number` | 3 | slTextarea | The starting height in lines, and the floor while autoSize is on. The default is 3 rather than the platform’s 2, because a box of two rows reads as a mistyped input. |
|
|
55
|
+
| `maxRows` | `number` | 12 | slTextarea | The ceiling autoSize grows to, in lines; past it the textarea scrolls. It cannot be removed, because a textarea that grows without limit pushes the page out from under the caret. |
|
|
56
|
+
| `showCount` | `boolean` | false | slTextarea | Publishes the length of the value to the field around it, which draws the count at the end of its label row. |
|
|
57
|
+
| `countMax` | `number` | maxlength | slTextarea | The limit the count is measured against; it defaults to maxlength. Without maxlength it is a soft limit: the value may pass it, and the count is then drawn as invalid. |
|
|
58
|
+
| `maxLength` | `number` | — | slTextarea | The native limit, which refuses input past it. Bound as [maxLength] or written as a static maxlength attribute, it reaches the element as maxlength and the count is measured against it. |
|
|
59
|
+
| `disabled` | `boolean` | from the field, or false | slTextarea | Unset rather than false, so the textarea follows the field around it and a disabled form control. When set, it wins and writes the native disabled. |
|
|
60
|
+
| `readOnly` | `boolean` | from the field, or false | slTextarea | Unset rather than false, so the textarea follows the field around it. Writes the native readonly: the textarea stays focusable, selectable and submitted, and keeps its resize handle. A static readonly attribute on the element counts as set. |
|
|
61
|
+
| `invalid` | `boolean` | from the field, or false | slTextarea | Unset rather than false, so the textarea follows the field around it. Writes aria-invalid and data-invalid. |
|
|
62
|
+
| `required` | `boolean` | — | the textarea element | The element’s own attribute; SlTextarea never writes it. Inside a required field, the textarea receives aria-required instead, because the native attribute turns on browser constraint validation. |
|
|
63
|
+
| `the directive itself` | `slTextarea` | — | the consumer’s own textarea | slTextarea sits on your own textarea element, which is its only part. Every native attribute, listener and form binding you write stays on that element. |
|
|
64
|
+
| `exportAs` | `'slTextarea'` | — | a template | Reaches the directive instance. Its textareaElement is the native element, with focus(), select() and setSelectionRange(). |
|
|
65
|
+
| `provideTextareaDefaults()` | `{ size, variant, mono, resize }` | — | an injector | Sets size, variant, mono and resize once for every textarea under the injector. A textarea that states a value keeps it, and a textarea inside a field takes the field’s size over the token’s. |
|
|
66
|
+
| `ControlValueAccessor` | `formControl, formControlName, ngModel` | — | slTextarea | formControl, formControlName and ngModel bind the textarea directly. It registers no validator: SlTextarea owns no validity, and the form decides it. |
|
|
67
|
+
|
|
68
|
+
## Events
|
|
69
|
+
|
|
70
|
+
| Name | Payload | When |
|
|
71
|
+
| --- | --- | --- |
|
|
72
|
+
| `(valueChange)` | `ChangeRequest<string>` | Before the value moves. request.value is the new value and request.previous the value it replaces. request.reason is always keyboard, because only an edit in the textarea moves the value, and request.source is the originating event. request.cancel() refuses the change: the form control and the count do not move, and the element keeps what was typed. |
|
|
73
|
+
| `ControlValueAccessor` | `the form’s own value and touched state` | Whenever the value moves and the request was not cancelled, and on blur for touched. It is the two-way binding Angular forms expect, which is why there is no [(value)]: a two-way binding carries neither a reason nor cancel(). |
|
|
74
|
+
|
|
75
|
+
## Axes and defaults
|
|
76
|
+
|
|
77
|
+
| Axis | Values | Default |
|
|
78
|
+
| --- | --- | --- |
|
|
79
|
+
| `size` | `sm`, `md`, `lg` | `md` |
|
|
80
|
+
| `variant` | `outline`, `subtle`, `plain` | `outline` |
|
|
81
|
+
| `resize` | `block`, `none`, `both` | `block` |
|
|
82
|
+
|
|
83
|
+
## Rules
|
|
84
|
+
|
|
85
|
+
- The WAI-ARIA Authoring Practices define no pattern for a multi-line text control. Textarea follows the HTML specification for the element and the ARIA textbox role, whose aria-multiline the native element supplies.
|
|
86
|
+
- Inside a field, the textarea takes its accessible name from the field’s label, whose for attribute points at the identifier the field generates. aria-describedby lists any value you write first, then the ones the field adds: help, description, count and error.
|
|
87
|
+
- A required field sets aria-required, not the native required. Every value you write on the element (id, aria-describedby, aria-invalid, aria-required and readonly) is read before the host bindings compute and is never overwritten, although an Angular host binding otherwise wins over a static attribute.
|
|
88
|
+
- Enter adds a line and never submits the form. WAI-ARIA describes this as the difference between a single-line and a multi-line text control, and a comment box that submitted on Enter would lose what was being written.
|
|
89
|
+
- Tab moves focus out of the textarea. No key is bound, so no shortcut holds keyboard focus inside it.
|
|
90
|
+
- Growth with the content is CSS, not script: the textarea takes its new height with no animation, so a screen reader announces nothing and a reader who asked for reduced motion sees no movement.
|
|
91
|
+
|
|
92
|
+
## Tokens
|
|
93
|
+
|
|
94
|
+
`--slotted-border-subtle`, `--slotted-control-border-color`, `--slotted-control-border-width`, `--slotted-control-font-family`, `--slotted-control-font-size-lg`, `--slotted-control-font-size-md`, `--slotted-control-font-size-sm`, `--slotted-control-height-lg`, `--slotted-control-height-md`, `--slotted-control-height-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-shadow-focus-geometry`, `--slotted-control-surface`, `--slotted-control-transition-duration`, `--slotted-control-transition-easing`, `--slotted-disabled-background`, `--slotted-disabled-border`, `--slotted-disabled-foreground`, `--slotted-focus-ring-color`, `--slotted-focus-ring-color-invalid`, `--slotted-focus-ring-offset`, `--slotted-focus-ring-width`, `--slotted-font-family-mono`, `--slotted-line-height-md`, `--slotted-radius-none`, `--slotted-surface-sunken`, `--slotted-text`, `--slotted-text-muted`, `--slotted-textarea-background`, `--slotted-textarea-border-color`, `--slotted-textarea-color`, `--slotted-textarea-disabled-background`, `--slotted-textarea-disabled-border-color`, `--slotted-textarea-disabled-color`, `--slotted-textarea-hover-border-color`, `--slotted-textarea-invalid-border-color`, `--slotted-textarea-invalid-edge-width`, `--slotted-textarea-invalid-focus-ring-color`, `--slotted-textarea-line-height`, `--slotted-textarea-max-rows`, `--slotted-textarea-placeholder-color`, `--slotted-textarea-plain-hover-background`, `--slotted-textarea-radius`, `--slotted-textarea-readonly-background`, `--slotted-textarea-rows`, `--slotted-textarea-shadow`, `--slotted-textarea-subtle-background`, `--slotted-textarea-subtle-border-color`, `--slotted-textarea-subtle-hover-background`, `--slotted-tone-accent-border`, `--slotted-tone-danger-border`, `--slotted-tone-secondary-subtle-hover`
|
|
95
|
+
|
|
96
|
+
## Examples
|
|
97
|
+
|
|
98
|
+
See [textarea.examples.md](./textarea.examples.md).
|