@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,612 @@
|
|
|
1
|
+
<!-- index: ./index.md -->
|
|
2
|
+
# textarea
|
|
3
|
+
|
|
4
|
+
`data-ui="textarea"` · Multi-line text input.
|
|
5
|
+
|
|
6
|
+
## Examples
|
|
7
|
+
|
|
8
|
+
### Playground
|
|
9
|
+
|
|
10
|
+
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.
|
|
11
|
+
|
|
12
|
+
Excerpt — not a complete module
|
|
13
|
+
|
|
14
|
+
```html
|
|
15
|
+
<div slField>
|
|
16
|
+
<label slFieldLabel>Observações</label>
|
|
17
|
+
<textarea slTextarea [rows]="3" placeholder="Descreva o que aconteceu"></textarea>
|
|
18
|
+
<span slFieldDescription>Aparece no histórico do chamado.</span>
|
|
19
|
+
</div>
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### The step the control sits at
|
|
23
|
+
|
|
24
|
+
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.
|
|
25
|
+
|
|
26
|
+
Example
|
|
27
|
+
|
|
28
|
+
```ts
|
|
29
|
+
import { Component } from '@angular/core';
|
|
30
|
+
import { SlField, SlFieldLabel } from '@slotted/angular/field';
|
|
31
|
+
import { SlStack } from '@slotted/angular/stack';
|
|
32
|
+
import { SlTextarea } from '@slotted/angular/textarea';
|
|
33
|
+
|
|
34
|
+
@Component({
|
|
35
|
+
selector: 'app-textarea-sizes',
|
|
36
|
+
imports: [SlField, SlFieldLabel, SlStack, SlTextarea],
|
|
37
|
+
template: `
|
|
38
|
+
<div slStack [gap]="5">
|
|
39
|
+
<div slField size="sm">
|
|
40
|
+
<label slFieldLabel>Line item note</label>
|
|
41
|
+
<textarea
|
|
42
|
+
slTextarea
|
|
43
|
+
[rows]="2"
|
|
44
|
+
defaultValue="Pack the glass bottles separately."
|
|
45
|
+
></textarea>
|
|
46
|
+
</div>
|
|
47
|
+
<div slField size="md">
|
|
48
|
+
<label slFieldLabel>Order note</label>
|
|
49
|
+
<textarea
|
|
50
|
+
slTextarea
|
|
51
|
+
[rows]="2"
|
|
52
|
+
defaultValue="The customer asked for delivery before noon on Friday."
|
|
53
|
+
></textarea>
|
|
54
|
+
</div>
|
|
55
|
+
<div slField size="lg">
|
|
56
|
+
<label slFieldLabel>Message to the supplier</label>
|
|
57
|
+
<textarea
|
|
58
|
+
slTextarea
|
|
59
|
+
[rows]="2"
|
|
60
|
+
defaultValue="Please confirm the revised quantities by Wednesday."
|
|
61
|
+
></textarea>
|
|
62
|
+
</div>
|
|
63
|
+
</div>
|
|
64
|
+
`,
|
|
65
|
+
})
|
|
66
|
+
export class TextareaSizes {}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### How much frame the control shows
|
|
70
|
+
|
|
71
|
+
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.
|
|
72
|
+
|
|
73
|
+
Example
|
|
74
|
+
|
|
75
|
+
```ts
|
|
76
|
+
import { Component } from '@angular/core';
|
|
77
|
+
import { SlField, SlFieldLabel } from '@slotted/angular/field';
|
|
78
|
+
import { SlStack } from '@slotted/angular/stack';
|
|
79
|
+
import { SlTextarea } from '@slotted/angular/textarea';
|
|
80
|
+
|
|
81
|
+
@Component({
|
|
82
|
+
selector: 'app-textarea-variants',
|
|
83
|
+
imports: [SlField, SlFieldLabel, SlStack, SlTextarea],
|
|
84
|
+
template: `
|
|
85
|
+
<div slStack [gap]="5">
|
|
86
|
+
<div slField>
|
|
87
|
+
<label slFieldLabel>Return reason</label>
|
|
88
|
+
<textarea
|
|
89
|
+
slTextarea
|
|
90
|
+
variant="outline"
|
|
91
|
+
[rows]="2"
|
|
92
|
+
defaultValue="Two jars arrived with broken seals."
|
|
93
|
+
></textarea>
|
|
94
|
+
</div>
|
|
95
|
+
<div slField>
|
|
96
|
+
<label slFieldLabel>Warehouse note</label>
|
|
97
|
+
<textarea
|
|
98
|
+
slTextarea
|
|
99
|
+
variant="subtle"
|
|
100
|
+
[rows]="2"
|
|
101
|
+
defaultValue="Restock on shelf B4 after inspection."
|
|
102
|
+
></textarea>
|
|
103
|
+
</div>
|
|
104
|
+
<div slField>
|
|
105
|
+
<label slFieldLabel>Picker comment</label>
|
|
106
|
+
<textarea
|
|
107
|
+
slTextarea
|
|
108
|
+
variant="plain"
|
|
109
|
+
[rows]="2"
|
|
110
|
+
defaultValue="Counted twice, 46 units on hand."
|
|
111
|
+
></textarea>
|
|
112
|
+
</div>
|
|
113
|
+
</div>
|
|
114
|
+
`,
|
|
115
|
+
})
|
|
116
|
+
export class TextareaVariants {}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### Growing with the content
|
|
120
|
+
|
|
121
|
+
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.
|
|
122
|
+
|
|
123
|
+
Example
|
|
124
|
+
|
|
125
|
+
```ts
|
|
126
|
+
import { Component } from '@angular/core';
|
|
127
|
+
import { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';
|
|
128
|
+
import { SlTextarea } from '@slotted/angular/textarea';
|
|
129
|
+
|
|
130
|
+
@Component({
|
|
131
|
+
selector: 'app-textarea-auto-size',
|
|
132
|
+
imports: [SlField, SlFieldDescription, SlFieldLabel, SlTextarea],
|
|
133
|
+
template: `
|
|
134
|
+
<div slField>
|
|
135
|
+
<label slFieldLabel>Picking note</label>
|
|
136
|
+
<textarea
|
|
137
|
+
slTextarea
|
|
138
|
+
autoSize
|
|
139
|
+
[rows]="2"
|
|
140
|
+
[maxRows]="6"
|
|
141
|
+
defaultValue="Use the reinforced boxes for the olive oil."
|
|
142
|
+
></textarea>
|
|
143
|
+
<span slFieldDescription>Shown to the picker on the warehouse screen.</span>
|
|
144
|
+
</div>
|
|
145
|
+
`,
|
|
146
|
+
})
|
|
147
|
+
export class TextareaAutoSize {}
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
### The handle in the corner
|
|
151
|
+
|
|
152
|
+
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.
|
|
153
|
+
|
|
154
|
+
Excerpt — not a complete module
|
|
155
|
+
|
|
156
|
+
```html
|
|
157
|
+
<textarea slTextarea resize="none"></textarea>
|
|
158
|
+
<textarea slTextarea resize="both"></textarea>
|
|
159
|
+
|
|
160
|
+
<!-- autoSize wins: the handle is withdrawn rather than left to fight. -->
|
|
161
|
+
<textarea slTextarea autoSize resize="both"></textarea>
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### The four states the control paints
|
|
165
|
+
|
|
166
|
+
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.
|
|
167
|
+
|
|
168
|
+
Example
|
|
169
|
+
|
|
170
|
+
```ts
|
|
171
|
+
import { Component } from '@angular/core';
|
|
172
|
+
import { SlField, SlFieldDescription, SlFieldError, SlFieldLabel } from '@slotted/angular/field';
|
|
173
|
+
import { SlStack } from '@slotted/angular/stack';
|
|
174
|
+
import { SlTextarea } from '@slotted/angular/textarea';
|
|
175
|
+
|
|
176
|
+
@Component({
|
|
177
|
+
selector: 'app-textarea-states',
|
|
178
|
+
imports: [SlField, SlFieldDescription, SlFieldError, SlFieldLabel, SlStack, SlTextarea],
|
|
179
|
+
template: `
|
|
180
|
+
<div slStack [gap]="5">
|
|
181
|
+
<div slField invalid required>
|
|
182
|
+
<label slFieldLabel>Damage report</label>
|
|
183
|
+
<textarea slTextarea [rows]="2" defaultValue="Box dented."></textarea>
|
|
184
|
+
<span slFieldError>Describe the damage in at least 20 characters.</span>
|
|
185
|
+
</div>
|
|
186
|
+
<div slField readOnly>
|
|
187
|
+
<label slFieldLabel>Customer note</label>
|
|
188
|
+
<textarea
|
|
189
|
+
slTextarea
|
|
190
|
+
[rows]="2"
|
|
191
|
+
defaultValue="Please ring the bell twice. The office is on the second floor."
|
|
192
|
+
></textarea>
|
|
193
|
+
<span slFieldDescription>Written by the customer at checkout.</span>
|
|
194
|
+
</div>
|
|
195
|
+
<div slField disabled>
|
|
196
|
+
<label slFieldLabel>Carrier instructions</label>
|
|
197
|
+
<textarea slTextarea [rows]="2" defaultValue="Leave with the building manager."></textarea>
|
|
198
|
+
<span slFieldDescription>Locked once the shipment is booked.</span>
|
|
199
|
+
</div>
|
|
200
|
+
</div>
|
|
201
|
+
`,
|
|
202
|
+
})
|
|
203
|
+
export class TextareaStates {}
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
### Counting what has been typed
|
|
207
|
+
|
|
208
|
+
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.
|
|
209
|
+
|
|
210
|
+
Example
|
|
211
|
+
|
|
212
|
+
```ts
|
|
213
|
+
import { Component } from '@angular/core';
|
|
214
|
+
import { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';
|
|
215
|
+
import { SlStack } from '@slotted/angular/stack';
|
|
216
|
+
import { SlTextarea } from '@slotted/angular/textarea';
|
|
217
|
+
|
|
218
|
+
@Component({
|
|
219
|
+
selector: 'app-textarea-count',
|
|
220
|
+
imports: [SlField, SlFieldDescription, SlFieldLabel, SlStack, SlTextarea],
|
|
221
|
+
template: `
|
|
222
|
+
<div slStack [gap]="5">
|
|
223
|
+
<div slField>
|
|
224
|
+
<label slFieldLabel>Gift message</label>
|
|
225
|
+
<textarea
|
|
226
|
+
slTextarea
|
|
227
|
+
[rows]="2"
|
|
228
|
+
maxlength="150"
|
|
229
|
+
showCount
|
|
230
|
+
defaultValue="Happy anniversary to the whole team at Alfreds Futterkiste."
|
|
231
|
+
></textarea>
|
|
232
|
+
<span slFieldDescription>Printed on a card inside the box.</span>
|
|
233
|
+
</div>
|
|
234
|
+
<div slField>
|
|
235
|
+
<label slFieldLabel>Product summary</label>
|
|
236
|
+
<textarea
|
|
237
|
+
slTextarea
|
|
238
|
+
[rows]="3"
|
|
239
|
+
countMax="120"
|
|
240
|
+
showCount
|
|
241
|
+
defaultValue="Hand-picked Darjeeling first flush, packed in resealable tins of 100 grams. Ships within two days."
|
|
242
|
+
></textarea>
|
|
243
|
+
<span slFieldDescription>Search results cut summaries after 120 characters.</span>
|
|
244
|
+
</div>
|
|
245
|
+
</div>
|
|
246
|
+
`,
|
|
247
|
+
})
|
|
248
|
+
export class TextareaCount {}
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
### Content the family did not choose
|
|
252
|
+
|
|
253
|
+
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.
|
|
254
|
+
|
|
255
|
+
Excerpt — not a complete module
|
|
256
|
+
|
|
257
|
+
```html
|
|
258
|
+
<textarea slTextarea [rows]="3">{{ jwt }}</textarea>
|
|
259
|
+
|
|
260
|
+
<!-- overflow-wrap: anywhere in the stylesheet, so the whole string stays
|
|
261
|
+
selectable, copyable and reachable with the caret. -->
|
|
262
|
+
<textarea slTextarea dir="rtl" [rows]="3">مرحبا بالعالم</textarea>
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
### Setting it once, and reaching past it
|
|
266
|
+
|
|
267
|
+
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.
|
|
268
|
+
|
|
269
|
+
Excerpt — not a complete module
|
|
270
|
+
|
|
271
|
+
```html
|
|
272
|
+
<!-- ControlValueAccessor: the control belongs in a form as it stands. -->
|
|
273
|
+
<textarea slTextarea [formControl]="notes" autoSize></textarea>
|
|
274
|
+
|
|
275
|
+
<!-- exportAs, for the element the template has to reach. -->
|
|
276
|
+
<textarea slTextarea #campo="slTextarea"></textarea>
|
|
277
|
+
<button type="button" (click)="campo.textareaElement.select()">Selecionar</button>
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
### What the keyboard does, and what it deliberately does not
|
|
281
|
+
|
|
282
|
+
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.
|
|
283
|
+
|
|
284
|
+
Excerpt — not a complete module
|
|
285
|
+
|
|
286
|
+
```html
|
|
287
|
+
<form (ngSubmit)="enviar()">
|
|
288
|
+
<textarea slTextarea [formControl]="notes" [rows]="3"></textarea>
|
|
289
|
+
<button slButton type="submit">Enviar</button>
|
|
290
|
+
</form>
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
### comment-composer.ts
|
|
294
|
+
|
|
295
|
+
Example
|
|
296
|
+
|
|
297
|
+
```ts
|
|
298
|
+
import { Component, signal } from '@angular/core';
|
|
299
|
+
import { SlButton } from '@slotted/angular/button';
|
|
300
|
+
import { SlField, SlFieldLabel } from '@slotted/angular/field';
|
|
301
|
+
import { SlInline } from '@slotted/angular/inline';
|
|
302
|
+
import { SlStack } from '@slotted/angular/stack';
|
|
303
|
+
import { SlTextarea } from '@slotted/angular/textarea';
|
|
304
|
+
import { SlText } from '@slotted/angular/typography';
|
|
305
|
+
|
|
306
|
+
interface Comment {
|
|
307
|
+
id: number;
|
|
308
|
+
author: string;
|
|
309
|
+
time: string;
|
|
310
|
+
body: string;
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
const THREAD: Comment[] = [
|
|
314
|
+
{
|
|
315
|
+
id: 1,
|
|
316
|
+
author: 'Maria Anders',
|
|
317
|
+
time: '09:12',
|
|
318
|
+
body: 'The customer called: the pallet has to arrive before the store opens at 8:00.',
|
|
319
|
+
},
|
|
320
|
+
{
|
|
321
|
+
id: 2,
|
|
322
|
+
author: 'Thomas Hardy',
|
|
323
|
+
time: '10:47',
|
|
324
|
+
body: 'Booked with the early carrier. Tracking follows once the truck is loaded.',
|
|
325
|
+
},
|
|
326
|
+
];
|
|
327
|
+
|
|
328
|
+
@Component({
|
|
329
|
+
selector: 'app-textarea-comment-composer',
|
|
330
|
+
imports: [SlButton, SlField, SlFieldLabel, SlInline, SlStack, SlTextarea, SlText],
|
|
331
|
+
template: `
|
|
332
|
+
<div slStack [gap]="6">
|
|
333
|
+
<div slStack [gap]="4">
|
|
334
|
+
@for (comment of comments(); track comment.id) {
|
|
335
|
+
<div slStack [gap]="1">
|
|
336
|
+
<div slInline [gap]="2" align="baseline">
|
|
337
|
+
<span slText size="sm" weight="semibold">{{ comment.author }}</span>
|
|
338
|
+
<span slText size="sm" tone="muted">{{ comment.time }}</span>
|
|
339
|
+
</div>
|
|
340
|
+
<span slText size="sm">{{ comment.body }}</span>
|
|
341
|
+
</div>
|
|
342
|
+
}
|
|
343
|
+
</div>
|
|
344
|
+
<form (submit)="submit($event)">
|
|
345
|
+
<div slStack [gap]="3">
|
|
346
|
+
<div slField>
|
|
347
|
+
<label slFieldLabel>Comment on order 10248</label>
|
|
348
|
+
<textarea
|
|
349
|
+
slTextarea
|
|
350
|
+
autoSize
|
|
351
|
+
[rows]="2"
|
|
352
|
+
[maxRows]="8"
|
|
353
|
+
placeholder="Write an update for the team"
|
|
354
|
+
[value]="draft()"
|
|
355
|
+
(valueChange)="draft.set($event.value)"
|
|
356
|
+
></textarea>
|
|
357
|
+
</div>
|
|
358
|
+
<div slInline justify="end">
|
|
359
|
+
<button slButton type="submit">Post comment</button>
|
|
360
|
+
</div>
|
|
361
|
+
</div>
|
|
362
|
+
</form>
|
|
363
|
+
</div>
|
|
364
|
+
`,
|
|
365
|
+
})
|
|
366
|
+
export class TextareaCommentComposer {
|
|
367
|
+
readonly comments = signal(THREAD);
|
|
368
|
+
readonly draft = signal('');
|
|
369
|
+
|
|
370
|
+
submit(event: Event): void {
|
|
371
|
+
event.preventDefault();
|
|
372
|
+
const body = this.draft().trim();
|
|
373
|
+
if (body === '') return;
|
|
374
|
+
this.comments.update((current) => [
|
|
375
|
+
...current,
|
|
376
|
+
{ id: current.length + 1, author: 'You', time: 'Just now', body },
|
|
377
|
+
]);
|
|
378
|
+
this.draft.set('');
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
### defaults.ts
|
|
384
|
+
|
|
385
|
+
Example
|
|
386
|
+
|
|
387
|
+
```ts
|
|
388
|
+
import { Component } from '@angular/core';
|
|
389
|
+
import { SlField, SlFieldLabel } from '@slotted/angular/field';
|
|
390
|
+
import { SlStack } from '@slotted/angular/stack';
|
|
391
|
+
import { provideTextareaDefaults, SlTextarea } from '@slotted/angular/textarea';
|
|
392
|
+
|
|
393
|
+
@Component({
|
|
394
|
+
selector: 'app-textarea-defaults',
|
|
395
|
+
imports: [SlField, SlFieldLabel, SlStack, SlTextarea],
|
|
396
|
+
providers: [provideTextareaDefaults({ variant: 'subtle', resize: 'none' })],
|
|
397
|
+
template: `
|
|
398
|
+
<div slStack [gap]="5">
|
|
399
|
+
<div slField>
|
|
400
|
+
<label slFieldLabel>Reply to the customer</label>
|
|
401
|
+
<textarea slTextarea [rows]="2" defaultValue="Your refund was issued today."></textarea>
|
|
402
|
+
</div>
|
|
403
|
+
<div slField>
|
|
404
|
+
<label slFieldLabel>Internal note</label>
|
|
405
|
+
<textarea slTextarea [rows]="2" defaultValue="Refund approved by finance."></textarea>
|
|
406
|
+
</div>
|
|
407
|
+
<div slField>
|
|
408
|
+
<label slFieldLabel>Escalation summary</label>
|
|
409
|
+
<textarea
|
|
410
|
+
slTextarea
|
|
411
|
+
variant="outline"
|
|
412
|
+
[rows]="2"
|
|
413
|
+
defaultValue="Second refund request this quarter."
|
|
414
|
+
></textarea>
|
|
415
|
+
</div>
|
|
416
|
+
</div>
|
|
417
|
+
`,
|
|
418
|
+
})
|
|
419
|
+
export class TextareaDefaults {}
|
|
420
|
+
```
|
|
421
|
+
|
|
422
|
+
### mono.ts
|
|
423
|
+
|
|
424
|
+
Example
|
|
425
|
+
|
|
426
|
+
```ts
|
|
427
|
+
import { Component } from '@angular/core';
|
|
428
|
+
import { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';
|
|
429
|
+
import { SlTextarea } from '@slotted/angular/textarea';
|
|
430
|
+
|
|
431
|
+
const PAYLOAD = `{
|
|
432
|
+
"event": "order.shipped",
|
|
433
|
+
"orderId": 10248,
|
|
434
|
+
"carrier": "Federal Shipping",
|
|
435
|
+
"tracking": "FS-2026-0042-7731"
|
|
436
|
+
}`;
|
|
437
|
+
|
|
438
|
+
@Component({
|
|
439
|
+
selector: 'app-textarea-mono',
|
|
440
|
+
imports: [SlField, SlFieldDescription, SlFieldLabel, SlTextarea],
|
|
441
|
+
template: `
|
|
442
|
+
<div slField>
|
|
443
|
+
<label slFieldLabel>Test payload</label>
|
|
444
|
+
<textarea
|
|
445
|
+
slTextarea
|
|
446
|
+
mono
|
|
447
|
+
variant="subtle"
|
|
448
|
+
[rows]="7"
|
|
449
|
+
spellcheck="false"
|
|
450
|
+
[defaultValue]="payload"
|
|
451
|
+
></textarea>
|
|
452
|
+
<span slFieldDescription>Sent to your endpoint when you press Send test event.</span>
|
|
453
|
+
</div>
|
|
454
|
+
`,
|
|
455
|
+
})
|
|
456
|
+
export class TextareaMono {
|
|
457
|
+
readonly payload = PAYLOAD;
|
|
458
|
+
}
|
|
459
|
+
```
|
|
460
|
+
|
|
461
|
+
### read-only.ts
|
|
462
|
+
|
|
463
|
+
Example
|
|
464
|
+
|
|
465
|
+
```ts
|
|
466
|
+
import { Component } from '@angular/core';
|
|
467
|
+
import { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';
|
|
468
|
+
import { SlTextarea } from '@slotted/angular/textarea';
|
|
469
|
+
|
|
470
|
+
const TERMS = `1. Payment. Invoices are payable within 30 days of the invoice date. Late payments carry interest of 1% per month.
|
|
471
|
+
|
|
472
|
+
2. Delivery. The supplier ships within five business days of a confirmed purchase order. Partial shipments are invoiced separately.
|
|
473
|
+
|
|
474
|
+
3. Returns. Goods damaged in transit are reported within 48 hours of receipt, with photographs of the packaging.
|
|
475
|
+
|
|
476
|
+
4. Prices. Prices are fixed for the term of this agreement and reviewed every January.
|
|
477
|
+
|
|
478
|
+
5. Termination. Either party may end this agreement with 60 days' written notice.`;
|
|
479
|
+
|
|
480
|
+
@Component({
|
|
481
|
+
selector: 'app-textarea-read-only',
|
|
482
|
+
imports: [SlField, SlFieldDescription, SlFieldLabel, SlTextarea],
|
|
483
|
+
template: `
|
|
484
|
+
<div slField>
|
|
485
|
+
<label slFieldLabel>Supplier terms</label>
|
|
486
|
+
<textarea slTextarea readOnly [rows]="6" [defaultValue]="terms"></textarea>
|
|
487
|
+
<span slFieldDescription>Agreed with Exotic Liquids on 3 March 2026.</span>
|
|
488
|
+
</div>
|
|
489
|
+
`,
|
|
490
|
+
})
|
|
491
|
+
export class TextareaReadOnly {
|
|
492
|
+
readonly terms = TERMS;
|
|
493
|
+
}
|
|
494
|
+
```
|
|
495
|
+
|
|
496
|
+
### rows.ts
|
|
497
|
+
|
|
498
|
+
Example
|
|
499
|
+
|
|
500
|
+
```ts
|
|
501
|
+
import { Component } from '@angular/core';
|
|
502
|
+
import { SlField, SlFieldLabel } from '@slotted/angular/field';
|
|
503
|
+
import { SlStack } from '@slotted/angular/stack';
|
|
504
|
+
import { SlTextarea } from '@slotted/angular/textarea';
|
|
505
|
+
|
|
506
|
+
@Component({
|
|
507
|
+
selector: 'app-textarea-rows',
|
|
508
|
+
imports: [SlField, SlFieldLabel, SlStack, SlTextarea],
|
|
509
|
+
template: `
|
|
510
|
+
<div slStack [gap]="5">
|
|
511
|
+
<div slField>
|
|
512
|
+
<label slFieldLabel>Gift message</label>
|
|
513
|
+
<textarea
|
|
514
|
+
slTextarea
|
|
515
|
+
[rows]="2"
|
|
516
|
+
resize="none"
|
|
517
|
+
defaultValue="Happy birthday, Laura. Enjoy the tea."
|
|
518
|
+
></textarea>
|
|
519
|
+
</div>
|
|
520
|
+
<div slField>
|
|
521
|
+
<label slFieldLabel>Incident report</label>
|
|
522
|
+
<textarea
|
|
523
|
+
slTextarea
|
|
524
|
+
[rows]="5"
|
|
525
|
+
placeholder="What happened, when, and who was involved"
|
|
526
|
+
></textarea>
|
|
527
|
+
</div>
|
|
528
|
+
<div slField>
|
|
529
|
+
<label slFieldLabel>Reply draft</label>
|
|
530
|
+
<textarea
|
|
531
|
+
slTextarea
|
|
532
|
+
resize="both"
|
|
533
|
+
placeholder="Drag the corner to resize in both directions"
|
|
534
|
+
></textarea>
|
|
535
|
+
</div>
|
|
536
|
+
</div>
|
|
537
|
+
`,
|
|
538
|
+
})
|
|
539
|
+
export class TextareaRows {}
|
|
540
|
+
```
|
|
541
|
+
|
|
542
|
+
### validation.ts
|
|
543
|
+
|
|
544
|
+
Example
|
|
545
|
+
|
|
546
|
+
```ts
|
|
547
|
+
import { Component, computed, signal } from '@angular/core';
|
|
548
|
+
import { toSignal } from '@angular/core/rxjs-interop';
|
|
549
|
+
import { FormControl, ReactiveFormsModule, Validators } from '@angular/forms';
|
|
550
|
+
import { SlButton } from '@slotted/angular/button';
|
|
551
|
+
import { SlField, SlFieldError, SlFieldLabel } from '@slotted/angular/field';
|
|
552
|
+
import { SlInline } from '@slotted/angular/inline';
|
|
553
|
+
import { SlStack } from '@slotted/angular/stack';
|
|
554
|
+
import { SlTextarea } from '@slotted/angular/textarea';
|
|
555
|
+
|
|
556
|
+
const MIN_LENGTH = 20;
|
|
557
|
+
|
|
558
|
+
@Component({
|
|
559
|
+
selector: 'app-textarea-validation',
|
|
560
|
+
imports: [
|
|
561
|
+
ReactiveFormsModule,
|
|
562
|
+
SlButton,
|
|
563
|
+
SlField,
|
|
564
|
+
SlFieldError,
|
|
565
|
+
SlFieldLabel,
|
|
566
|
+
SlInline,
|
|
567
|
+
SlStack,
|
|
568
|
+
SlTextarea,
|
|
569
|
+
],
|
|
570
|
+
template: `
|
|
571
|
+
<form novalidate (submit)="submit($event)">
|
|
572
|
+
<div slStack [gap]="4">
|
|
573
|
+
<div slField required [invalid]="error() !== '' ? true : undefined">
|
|
574
|
+
<label slFieldLabel>What is wrong with the item?</label>
|
|
575
|
+
<textarea slTextarea [formControl]="details" (valueChange)="sent.set(false)"></textarea>
|
|
576
|
+
<span slFieldError live="polite" reserve>{{ error() }}</span>
|
|
577
|
+
</div>
|
|
578
|
+
<div slInline [gap]="3" align="center">
|
|
579
|
+
<button slButton type="submit">Request a return</button>
|
|
580
|
+
@if (sent()) {
|
|
581
|
+
<span role="status">Return requested.</span>
|
|
582
|
+
}
|
|
583
|
+
</div>
|
|
584
|
+
</div>
|
|
585
|
+
</form>
|
|
586
|
+
`,
|
|
587
|
+
})
|
|
588
|
+
export class TextareaValidation {
|
|
589
|
+
readonly details = new FormControl('', {
|
|
590
|
+
nonNullable: true,
|
|
591
|
+
validators: [Validators.required, Validators.minLength(MIN_LENGTH)],
|
|
592
|
+
});
|
|
593
|
+
readonly value = toSignal(this.details.valueChanges, { initialValue: this.details.value });
|
|
594
|
+
readonly submitted = signal(false);
|
|
595
|
+
readonly sent = signal(false);
|
|
596
|
+
readonly error = computed(() => {
|
|
597
|
+
this.value();
|
|
598
|
+
if (!this.submitted()) return '';
|
|
599
|
+
if (this.details.hasError('required')) return 'Describe what is wrong with the item.';
|
|
600
|
+
if (this.details.hasError('minlength')) {
|
|
601
|
+
return `Add more detail: at least ${MIN_LENGTH} characters.`;
|
|
602
|
+
}
|
|
603
|
+
return '';
|
|
604
|
+
});
|
|
605
|
+
|
|
606
|
+
submit(event: Event): void {
|
|
607
|
+
event.preventDefault();
|
|
608
|
+
this.submitted.set(true);
|
|
609
|
+
this.sent.set(this.details.valid);
|
|
610
|
+
}
|
|
611
|
+
}
|
|
612
|
+
```
|