@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,821 @@
|
|
|
1
|
+
<!-- index: ./index.md -->
|
|
2
|
+
# text-field
|
|
3
|
+
|
|
4
|
+
`data-ui="text-field"` · Single-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. Type into it: the clear button appears only once there is something to clear.
|
|
11
|
+
|
|
12
|
+
Excerpt — not a complete module
|
|
13
|
+
|
|
14
|
+
```html
|
|
15
|
+
<div slField>
|
|
16
|
+
<label slFieldLabel>E-mail</label>
|
|
17
|
+
<div slTextField clearable>
|
|
18
|
+
<input slTextFieldInput type="email" placeholder="voce@empresa.com.br" />
|
|
19
|
+
</div>
|
|
20
|
+
<span slFieldDescription>Usaremos este endereço para a cobrança.</span>
|
|
21
|
+
</div>
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### The step the control sits at
|
|
25
|
+
|
|
26
|
+
Three steps, and inside a field the control takes the field’s rather than its own: a small field holding a medium control is a field and a control disagreeing about one row.
|
|
27
|
+
|
|
28
|
+
Example
|
|
29
|
+
|
|
30
|
+
```ts
|
|
31
|
+
import { Component } from '@angular/core';
|
|
32
|
+
import { SlGlyph, SlIcon } from '@slotted/angular/icon';
|
|
33
|
+
import { SlStack } from '@slotted/angular/stack';
|
|
34
|
+
import { SlTextField, SlTextFieldInput, SlTextFieldStart } from '@slotted/angular/text-field';
|
|
35
|
+
|
|
36
|
+
@Component({
|
|
37
|
+
selector: 'app-text-field-sizes',
|
|
38
|
+
imports: [SlGlyph, SlIcon, SlStack, SlTextField, SlTextFieldInput, SlTextFieldStart],
|
|
39
|
+
template: `
|
|
40
|
+
<div slStack [gap]="4">
|
|
41
|
+
<div slTextField size="sm">
|
|
42
|
+
<span slTextFieldStart>
|
|
43
|
+
<span slIcon><svg slGlyph name="search"></svg></span>
|
|
44
|
+
</span>
|
|
45
|
+
<input
|
|
46
|
+
slTextFieldInput
|
|
47
|
+
type="search"
|
|
48
|
+
aria-label="Filter order lines"
|
|
49
|
+
placeholder="Filter order lines"
|
|
50
|
+
/>
|
|
51
|
+
</div>
|
|
52
|
+
<div slTextField size="md">
|
|
53
|
+
<span slTextFieldStart>
|
|
54
|
+
<span slIcon><svg slGlyph name="search"></svg></span>
|
|
55
|
+
</span>
|
|
56
|
+
<input
|
|
57
|
+
slTextFieldInput
|
|
58
|
+
type="search"
|
|
59
|
+
aria-label="Search customers"
|
|
60
|
+
placeholder="Search customers"
|
|
61
|
+
/>
|
|
62
|
+
</div>
|
|
63
|
+
<div slTextField size="lg">
|
|
64
|
+
<span slTextFieldStart>
|
|
65
|
+
<span slIcon><svg slGlyph name="search"></svg></span>
|
|
66
|
+
</span>
|
|
67
|
+
<input
|
|
68
|
+
slTextFieldInput
|
|
69
|
+
type="search"
|
|
70
|
+
aria-label="Search the catalog"
|
|
71
|
+
placeholder="Search the catalog"
|
|
72
|
+
/>
|
|
73
|
+
</div>
|
|
74
|
+
</div>
|
|
75
|
+
`,
|
|
76
|
+
})
|
|
77
|
+
export class TextFieldSizes {}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### How much frame the control shows
|
|
81
|
+
|
|
82
|
+
outline takes the ground it is placed on, subtle sinks into the page, and plain shows nothing until the pointer or the caret arrives — which is what a dense table cell needs.
|
|
83
|
+
|
|
84
|
+
Example
|
|
85
|
+
|
|
86
|
+
```ts
|
|
87
|
+
import { Component } from '@angular/core';
|
|
88
|
+
import { SlField, SlFieldLabel } from '@slotted/angular/field';
|
|
89
|
+
import { SlStack } from '@slotted/angular/stack';
|
|
90
|
+
import { SlTextField, SlTextFieldInput } from '@slotted/angular/text-field';
|
|
91
|
+
|
|
92
|
+
@Component({
|
|
93
|
+
selector: 'app-text-field-variants',
|
|
94
|
+
imports: [SlField, SlFieldLabel, SlStack, SlTextField, SlTextFieldInput],
|
|
95
|
+
template: `
|
|
96
|
+
<div slStack [gap]="4">
|
|
97
|
+
<div slField>
|
|
98
|
+
<label slFieldLabel>Customer</label>
|
|
99
|
+
<div slTextField variant="outline">
|
|
100
|
+
<input slTextFieldInput defaultValue="Northwind Traders" />
|
|
101
|
+
</div>
|
|
102
|
+
</div>
|
|
103
|
+
<div slField>
|
|
104
|
+
<label slFieldLabel>Purchase order</label>
|
|
105
|
+
<div slTextField variant="subtle">
|
|
106
|
+
<input slTextFieldInput defaultValue="PO-2026-0412" />
|
|
107
|
+
</div>
|
|
108
|
+
</div>
|
|
109
|
+
<div slField>
|
|
110
|
+
<label slFieldLabel>SKU</label>
|
|
111
|
+
<div slTextField variant="plain" mono>
|
|
112
|
+
<input slTextFieldInput defaultValue="NW-TEA-1042" />
|
|
113
|
+
</div>
|
|
114
|
+
</div>
|
|
115
|
+
</div>
|
|
116
|
+
`,
|
|
117
|
+
})
|
|
118
|
+
export class TextFieldVariants {}
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### What sits inside the border
|
|
122
|
+
|
|
123
|
+
start and end name the reading direction rather than a side, so the currency mark stays before the amount in Arabic as well. Neither of them is ever squeezed: the value gives up width first.
|
|
124
|
+
|
|
125
|
+
Example
|
|
126
|
+
|
|
127
|
+
```ts
|
|
128
|
+
import { Component } from '@angular/core';
|
|
129
|
+
import { SlField, SlFieldLabel } from '@slotted/angular/field';
|
|
130
|
+
import { SlGlyph, SlIcon } from '@slotted/angular/icon';
|
|
131
|
+
import { SlKbd } from '@slotted/angular/kbd';
|
|
132
|
+
import { SlStack } from '@slotted/angular/stack';
|
|
133
|
+
import {
|
|
134
|
+
SlTextField,
|
|
135
|
+
SlTextFieldEnd,
|
|
136
|
+
SlTextFieldInput,
|
|
137
|
+
SlTextFieldStart,
|
|
138
|
+
} from '@slotted/angular/text-field';
|
|
139
|
+
|
|
140
|
+
@Component({
|
|
141
|
+
selector: 'app-text-field-adornments',
|
|
142
|
+
imports: [
|
|
143
|
+
SlField,
|
|
144
|
+
SlFieldLabel,
|
|
145
|
+
SlGlyph,
|
|
146
|
+
SlIcon,
|
|
147
|
+
SlKbd,
|
|
148
|
+
SlStack,
|
|
149
|
+
SlTextField,
|
|
150
|
+
SlTextFieldEnd,
|
|
151
|
+
SlTextFieldInput,
|
|
152
|
+
SlTextFieldStart,
|
|
153
|
+
],
|
|
154
|
+
template: `
|
|
155
|
+
<div slStack [gap]="4">
|
|
156
|
+
<div slField>
|
|
157
|
+
<label slFieldLabel>Unit price</label>
|
|
158
|
+
<div slTextField>
|
|
159
|
+
<span slTextFieldStart>$</span>
|
|
160
|
+
<input slTextFieldInput inputmode="decimal" defaultValue="24.90" />
|
|
161
|
+
<span slTextFieldEnd>USD</span>
|
|
162
|
+
</div>
|
|
163
|
+
</div>
|
|
164
|
+
<div slField>
|
|
165
|
+
<label slFieldLabel>Shipping weight</label>
|
|
166
|
+
<div slTextField>
|
|
167
|
+
<input slTextFieldInput inputmode="decimal" defaultValue="1.25" />
|
|
168
|
+
<span slTextFieldEnd>kg</span>
|
|
169
|
+
</div>
|
|
170
|
+
</div>
|
|
171
|
+
<div slField>
|
|
172
|
+
<label slFieldLabel>Storefront address</label>
|
|
173
|
+
<div slTextField>
|
|
174
|
+
<span slTextFieldStart>https://</span>
|
|
175
|
+
<input slTextFieldInput defaultValue="shop.northwind.com" />
|
|
176
|
+
</div>
|
|
177
|
+
</div>
|
|
178
|
+
<div slTextField>
|
|
179
|
+
<span slTextFieldStart>
|
|
180
|
+
<span slIcon><svg slGlyph name="search"></svg></span>
|
|
181
|
+
</span>
|
|
182
|
+
<input
|
|
183
|
+
slTextFieldInput
|
|
184
|
+
type="search"
|
|
185
|
+
aria-label="Search orders"
|
|
186
|
+
placeholder="Search orders"
|
|
187
|
+
/>
|
|
188
|
+
<span slTextFieldEnd><kbd slKbd>/</kbd></span>
|
|
189
|
+
</div>
|
|
190
|
+
</div>
|
|
191
|
+
`,
|
|
192
|
+
})
|
|
193
|
+
export class TextFieldAdornments {}
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
### The two buttons the frame draws
|
|
197
|
+
|
|
198
|
+
Both are real buttons inside the frame, both keep the caret, and both are held to the 24-pixel minimum. Tab into the field and press Tab again: the ring moves to the button rather than staying around the box.
|
|
199
|
+
|
|
200
|
+
Excerpt — not a complete module
|
|
201
|
+
|
|
202
|
+
```html
|
|
203
|
+
<div slTextField clearable>
|
|
204
|
+
<input slTextFieldInput type="search" defaultValue="nota fiscal 2026" />
|
|
205
|
+
</div>
|
|
206
|
+
|
|
207
|
+
<div slTextField revealable>
|
|
208
|
+
<input slTextFieldInput type="password" autocomplete="current-password" />
|
|
209
|
+
</div>
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
### A button of your own inside the frame
|
|
213
|
+
|
|
214
|
+
A country code that opens a menu, a category beside a search, a submit named in words, an overflow mark: each is a real button in start or end. Open one — it stays pressed while its menu is open, and the value keeps its place beside it.
|
|
215
|
+
|
|
216
|
+
Example
|
|
217
|
+
|
|
218
|
+
```ts
|
|
219
|
+
import { Component, signal } from '@angular/core';
|
|
220
|
+
import { SlField, SlFieldLabel } from '@slotted/angular/field';
|
|
221
|
+
import { SlGlyph, SlIcon } from '@slotted/angular/icon';
|
|
222
|
+
import { SlMenu, SlMenuItem, SlMenuRadioGroup, SlMenuTrigger } from '@slotted/angular/menu';
|
|
223
|
+
import {
|
|
224
|
+
SlTextField,
|
|
225
|
+
SlTextFieldAction,
|
|
226
|
+
SlTextFieldInput,
|
|
227
|
+
SlTextFieldStart,
|
|
228
|
+
} from '@slotted/angular/text-field';
|
|
229
|
+
import { SlVisuallyHidden } from '@slotted/angular/visually-hidden';
|
|
230
|
+
|
|
231
|
+
@Component({
|
|
232
|
+
selector: 'app-text-field-menu',
|
|
233
|
+
imports: [
|
|
234
|
+
SlField,
|
|
235
|
+
SlFieldLabel,
|
|
236
|
+
SlGlyph,
|
|
237
|
+
SlIcon,
|
|
238
|
+
SlMenu,
|
|
239
|
+
SlMenuItem,
|
|
240
|
+
SlMenuRadioGroup,
|
|
241
|
+
SlMenuTrigger,
|
|
242
|
+
SlTextField,
|
|
243
|
+
SlTextFieldAction,
|
|
244
|
+
SlTextFieldInput,
|
|
245
|
+
SlTextFieldStart,
|
|
246
|
+
SlVisuallyHidden,
|
|
247
|
+
],
|
|
248
|
+
template: `
|
|
249
|
+
<div slField>
|
|
250
|
+
<label slFieldLabel>Phone</label>
|
|
251
|
+
<div slTextField>
|
|
252
|
+
<span slTextFieldStart>
|
|
253
|
+
<button slTextFieldAction [slMenuTriggerFor]="countries">
|
|
254
|
+
<span slVisuallyHidden>Country code</span>{{ country() }}
|
|
255
|
+
<span slIcon><svg slGlyph name="chevron-down"></svg></span>
|
|
256
|
+
</button>
|
|
257
|
+
</span>
|
|
258
|
+
<input
|
|
259
|
+
slTextFieldInput
|
|
260
|
+
type="tel"
|
|
261
|
+
autocomplete="tel-national"
|
|
262
|
+
defaultValue="206 555 0134"
|
|
263
|
+
/>
|
|
264
|
+
</div>
|
|
265
|
+
<sl-menu #countries>
|
|
266
|
+
<sl-menu-radio-group [(value)]="country">
|
|
267
|
+
<button slMenuRadioItem value="+1">United States +1</button>
|
|
268
|
+
<button slMenuRadioItem value="+44">United Kingdom +44</button>
|
|
269
|
+
<button slMenuRadioItem value="+49">Germany +49</button>
|
|
270
|
+
<button slMenuRadioItem value="+81">Japan +81</button>
|
|
271
|
+
</sl-menu-radio-group>
|
|
272
|
+
</sl-menu>
|
|
273
|
+
</div>
|
|
274
|
+
`,
|
|
275
|
+
})
|
|
276
|
+
export class TextFieldMenu {
|
|
277
|
+
protected readonly country = signal('+1');
|
|
278
|
+
}
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
### Copying a value somebody has to paste elsewhere
|
|
282
|
+
|
|
283
|
+
Press the copy button: the mark turns to a check in the success ink for two seconds and the outcome is announced. A clipboard that refuses — an insecure page, a denied permission — is announced as a failure and shows no check.
|
|
284
|
+
|
|
285
|
+
Example
|
|
286
|
+
|
|
287
|
+
```ts
|
|
288
|
+
import { Component } from '@angular/core';
|
|
289
|
+
import { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';
|
|
290
|
+
import { SlStack } from '@slotted/angular/stack';
|
|
291
|
+
import { SlTextField, SlTextFieldInput } from '@slotted/angular/text-field';
|
|
292
|
+
|
|
293
|
+
@Component({
|
|
294
|
+
selector: 'app-text-field-copy',
|
|
295
|
+
imports: [SlField, SlFieldDescription, SlFieldLabel, SlStack, SlTextField, SlTextFieldInput],
|
|
296
|
+
template: `
|
|
297
|
+
<div slStack [gap]="5">
|
|
298
|
+
<div slField>
|
|
299
|
+
<label slFieldLabel>Invite link</label>
|
|
300
|
+
<div slTextField copyable>
|
|
301
|
+
<input
|
|
302
|
+
slTextFieldInput
|
|
303
|
+
readonly
|
|
304
|
+
defaultValue="https://northwind.slotted.app/join/8f3a2c"
|
|
305
|
+
/>
|
|
306
|
+
</div>
|
|
307
|
+
<span slFieldDescription>Anyone with the link joins as a viewer.</span>
|
|
308
|
+
</div>
|
|
309
|
+
<div slField>
|
|
310
|
+
<label slFieldLabel>Webhook signing secret</label>
|
|
311
|
+
<div slTextField copyable mono>
|
|
312
|
+
<input slTextFieldInput readonly defaultValue="whsec_4f9c2a7e1b8d6350" />
|
|
313
|
+
</div>
|
|
314
|
+
</div>
|
|
315
|
+
</div>
|
|
316
|
+
`,
|
|
317
|
+
})
|
|
318
|
+
export class TextFieldCopy {}
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
### A password: showing it, and warning about Caps Lock
|
|
322
|
+
|
|
323
|
+
Focus the password and turn Caps Lock on: the warning mark appears before the eye and is announced once. The eye swaps to a crossed eye and back, and the caret stays where it was.
|
|
324
|
+
|
|
325
|
+
Example
|
|
326
|
+
|
|
327
|
+
```ts
|
|
328
|
+
import { Component } from '@angular/core';
|
|
329
|
+
import { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';
|
|
330
|
+
import { SlGlyph, SlIcon } from '@slotted/angular/icon';
|
|
331
|
+
import { SlTextField, SlTextFieldInput, SlTextFieldStart } from '@slotted/angular/text-field';
|
|
332
|
+
|
|
333
|
+
@Component({
|
|
334
|
+
selector: 'app-text-field-password',
|
|
335
|
+
imports: [
|
|
336
|
+
SlField,
|
|
337
|
+
SlFieldDescription,
|
|
338
|
+
SlFieldLabel,
|
|
339
|
+
SlGlyph,
|
|
340
|
+
SlIcon,
|
|
341
|
+
SlTextField,
|
|
342
|
+
SlTextFieldInput,
|
|
343
|
+
SlTextFieldStart,
|
|
344
|
+
],
|
|
345
|
+
template: `
|
|
346
|
+
<div slField required>
|
|
347
|
+
<label slFieldLabel>New password</label>
|
|
348
|
+
<div slTextField revealable>
|
|
349
|
+
<span slTextFieldStart>
|
|
350
|
+
<span slIcon><svg slGlyph name="lock"></svg></span>
|
|
351
|
+
</span>
|
|
352
|
+
<input slTextFieldInput type="password" autocomplete="new-password" minlength="12" />
|
|
353
|
+
</div>
|
|
354
|
+
<span slFieldDescription>At least 12 characters.</span>
|
|
355
|
+
</div>
|
|
356
|
+
`,
|
|
357
|
+
})
|
|
358
|
+
export class TextFieldPassword {}
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
### Checking the value while the reader keeps typing
|
|
362
|
+
|
|
363
|
+
A user name checked against the server: the ring stands before the buttons and the input is aria-busy, but it stays editable. Turn loading off and the ring shrinks out rather than vanishing.
|
|
364
|
+
|
|
365
|
+
Example
|
|
366
|
+
|
|
367
|
+
```ts
|
|
368
|
+
import { Component, DestroyRef, inject, signal } from '@angular/core';
|
|
369
|
+
import { SlField, SlFieldDescription, SlFieldError, SlFieldLabel } from '@slotted/angular/field';
|
|
370
|
+
import { SlTextField, SlTextFieldInput, SlTextFieldStart } from '@slotted/angular/text-field';
|
|
371
|
+
|
|
372
|
+
/** Stands in for the request that checks whether a handle is free. */
|
|
373
|
+
const TAKEN = new Set(['admin', 'northwind', 'support']);
|
|
374
|
+
|
|
375
|
+
@Component({
|
|
376
|
+
selector: 'app-text-field-loading',
|
|
377
|
+
imports: [
|
|
378
|
+
SlField,
|
|
379
|
+
SlFieldDescription,
|
|
380
|
+
SlFieldError,
|
|
381
|
+
SlFieldLabel,
|
|
382
|
+
SlTextField,
|
|
383
|
+
SlTextFieldInput,
|
|
384
|
+
SlTextFieldStart,
|
|
385
|
+
],
|
|
386
|
+
template: `
|
|
387
|
+
<div slField [invalid]="taken() ? true : undefined">
|
|
388
|
+
<label slFieldLabel>Handle</label>
|
|
389
|
+
<div slTextField clearable [loading]="checking()">
|
|
390
|
+
<span slTextFieldStart>@</span>
|
|
391
|
+
<input
|
|
392
|
+
slTextFieldInput
|
|
393
|
+
autocomplete="username"
|
|
394
|
+
spellcheck="false"
|
|
395
|
+
[value]="handle()"
|
|
396
|
+
(valueChange)="change($event.value)"
|
|
397
|
+
/>
|
|
398
|
+
</div>
|
|
399
|
+
<span slFieldDescription>Lowercase letters, digits and hyphens.</span>
|
|
400
|
+
<span slFieldError live="polite" reserve>
|
|
401
|
+
{{ taken() ? '@' + handle() + ' is already taken.' : '' }}
|
|
402
|
+
</span>
|
|
403
|
+
</div>
|
|
404
|
+
`,
|
|
405
|
+
})
|
|
406
|
+
export class TextFieldLoading {
|
|
407
|
+
protected readonly handle = signal('northwind-ops');
|
|
408
|
+
protected readonly checking = signal(false);
|
|
409
|
+
protected readonly taken = signal(false);
|
|
410
|
+
private timer: ReturnType<typeof setTimeout> | undefined;
|
|
411
|
+
|
|
412
|
+
constructor() {
|
|
413
|
+
inject(DestroyRef).onDestroy(() => clearTimeout(this.timer));
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
protected change(next: string) {
|
|
417
|
+
this.handle.set(next);
|
|
418
|
+
this.taken.set(false);
|
|
419
|
+
clearTimeout(this.timer);
|
|
420
|
+
this.checking.set(next !== '');
|
|
421
|
+
if (next === '') return;
|
|
422
|
+
this.timer = setTimeout(() => {
|
|
423
|
+
this.checking.set(false);
|
|
424
|
+
this.taken.set(TAKEN.has(next));
|
|
425
|
+
}, 900);
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
```
|
|
429
|
+
|
|
430
|
+
### The four states the frame paints
|
|
431
|
+
|
|
432
|
+
Read-only keeps full-strength ink and only its ground changes, because the value is real and still submitted; disabled is muted to a measured colour rather than faded, so a disabled form still says what it holds.
|
|
433
|
+
|
|
434
|
+
Example
|
|
435
|
+
|
|
436
|
+
```ts
|
|
437
|
+
import { Component } from '@angular/core';
|
|
438
|
+
import { SlField, SlFieldDescription, SlFieldError, SlFieldLabel } from '@slotted/angular/field';
|
|
439
|
+
import { SlStack } from '@slotted/angular/stack';
|
|
440
|
+
import { SlTextField, SlTextFieldInput } from '@slotted/angular/text-field';
|
|
441
|
+
|
|
442
|
+
@Component({
|
|
443
|
+
selector: 'app-text-field-states',
|
|
444
|
+
imports: [
|
|
445
|
+
SlField,
|
|
446
|
+
SlFieldDescription,
|
|
447
|
+
SlFieldError,
|
|
448
|
+
SlFieldLabel,
|
|
449
|
+
SlStack,
|
|
450
|
+
SlTextField,
|
|
451
|
+
SlTextFieldInput,
|
|
452
|
+
],
|
|
453
|
+
template: `
|
|
454
|
+
<div slStack [gap]="5">
|
|
455
|
+
<div slField invalid>
|
|
456
|
+
<label slFieldLabel>VAT number</label>
|
|
457
|
+
<div slTextField><input slTextFieldInput defaultValue="DE 81234" /></div>
|
|
458
|
+
<span slFieldError>A German VAT number has nine digits after DE.</span>
|
|
459
|
+
</div>
|
|
460
|
+
<div slField readOnly>
|
|
461
|
+
<label slFieldLabel>Order number</label>
|
|
462
|
+
<div slTextField mono><input slTextFieldInput defaultValue="SO-2026-00418" /></div>
|
|
463
|
+
<span slFieldDescription>Assigned when the order was placed.</span>
|
|
464
|
+
</div>
|
|
465
|
+
<div slField disabled>
|
|
466
|
+
<label slFieldLabel>Currency</label>
|
|
467
|
+
<div slTextField><input slTextFieldInput defaultValue="USD" /></div>
|
|
468
|
+
<span slFieldDescription>Set by the customer’s price list.</span>
|
|
469
|
+
</div>
|
|
470
|
+
</div>
|
|
471
|
+
`,
|
|
472
|
+
})
|
|
473
|
+
export class TextFieldStates {}
|
|
474
|
+
```
|
|
475
|
+
|
|
476
|
+
### Counting what has been typed
|
|
477
|
+
|
|
478
|
+
The control counts and the field places it, in the spare column of the label row. Pass countMax without maxlength and the limit becomes a soft one: the value may pass it, and the counter turns before validation runs.
|
|
479
|
+
|
|
480
|
+
Example
|
|
481
|
+
|
|
482
|
+
```ts
|
|
483
|
+
import { Component } from '@angular/core';
|
|
484
|
+
import { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';
|
|
485
|
+
import { SlStack } from '@slotted/angular/stack';
|
|
486
|
+
import { SlTextField, SlTextFieldInput } from '@slotted/angular/text-field';
|
|
487
|
+
|
|
488
|
+
@Component({
|
|
489
|
+
selector: 'app-text-field-count',
|
|
490
|
+
imports: [SlField, SlFieldDescription, SlFieldLabel, SlStack, SlTextField, SlTextFieldInput],
|
|
491
|
+
template: `
|
|
492
|
+
<div slStack [gap]="5">
|
|
493
|
+
<div slField>
|
|
494
|
+
<label slFieldLabel>Email subject</label>
|
|
495
|
+
<div slTextField>
|
|
496
|
+
<input
|
|
497
|
+
slTextFieldInput
|
|
498
|
+
showCount
|
|
499
|
+
maxlength="60"
|
|
500
|
+
defaultValue="Your order SO-2026-00418 has shipped"
|
|
501
|
+
/>
|
|
502
|
+
</div>
|
|
503
|
+
</div>
|
|
504
|
+
<div slField>
|
|
505
|
+
<label slFieldLabel>SMS sender name</label>
|
|
506
|
+
<div slTextField>
|
|
507
|
+
<input slTextFieldInput showCount countMax="11" defaultValue="Northwind" />
|
|
508
|
+
</div>
|
|
509
|
+
<span slFieldDescription>Carriers cut sender names after 11 characters.</span>
|
|
510
|
+
</div>
|
|
511
|
+
</div>
|
|
512
|
+
`,
|
|
513
|
+
})
|
|
514
|
+
export class TextFieldCount {}
|
|
515
|
+
```
|
|
516
|
+
|
|
517
|
+
### What kind of text this is
|
|
518
|
+
|
|
519
|
+
type is the element’s own, and so is everything that travels with it. A phone field that offers the wrong keyboard on a phone is a field nobody fills in twice.
|
|
520
|
+
|
|
521
|
+
Example
|
|
522
|
+
|
|
523
|
+
```ts
|
|
524
|
+
import { Component } from '@angular/core';
|
|
525
|
+
import { SlField, SlFieldLabel } from '@slotted/angular/field';
|
|
526
|
+
import { SlStack } from '@slotted/angular/stack';
|
|
527
|
+
import { SlTextField, SlTextFieldInput } from '@slotted/angular/text-field';
|
|
528
|
+
|
|
529
|
+
@Component({
|
|
530
|
+
selector: 'app-text-field-types',
|
|
531
|
+
imports: [SlField, SlFieldLabel, SlStack, SlTextField, SlTextFieldInput],
|
|
532
|
+
template: `
|
|
533
|
+
<div slStack [gap]="4">
|
|
534
|
+
<div slField>
|
|
535
|
+
<label slFieldLabel>Work email</label>
|
|
536
|
+
<div slTextField>
|
|
537
|
+
<input
|
|
538
|
+
slTextFieldInput
|
|
539
|
+
type="email"
|
|
540
|
+
autocomplete="email"
|
|
541
|
+
placeholder="name@northwind.com"
|
|
542
|
+
/>
|
|
543
|
+
</div>
|
|
544
|
+
</div>
|
|
545
|
+
<div slField>
|
|
546
|
+
<label slFieldLabel>Phone</label>
|
|
547
|
+
<div slTextField>
|
|
548
|
+
<input slTextFieldInput type="tel" autocomplete="tel" placeholder="+1 206 555 0134" />
|
|
549
|
+
</div>
|
|
550
|
+
</div>
|
|
551
|
+
<div slField>
|
|
552
|
+
<label slFieldLabel>Website</label>
|
|
553
|
+
<div slTextField>
|
|
554
|
+
<input
|
|
555
|
+
slTextFieldInput
|
|
556
|
+
type="url"
|
|
557
|
+
autocomplete="url"
|
|
558
|
+
placeholder="https://northwind.com"
|
|
559
|
+
/>
|
|
560
|
+
</div>
|
|
561
|
+
</div>
|
|
562
|
+
<div slField>
|
|
563
|
+
<label slFieldLabel>ZIP code</label>
|
|
564
|
+
<div slTextField>
|
|
565
|
+
<input
|
|
566
|
+
slTextFieldInput
|
|
567
|
+
autocomplete="postal-code"
|
|
568
|
+
inputmode="numeric"
|
|
569
|
+
placeholder="98101"
|
|
570
|
+
/>
|
|
571
|
+
</div>
|
|
572
|
+
</div>
|
|
573
|
+
</div>
|
|
574
|
+
`,
|
|
575
|
+
})
|
|
576
|
+
export class TextFieldTypes {}
|
|
577
|
+
```
|
|
578
|
+
|
|
579
|
+
### Content the family did not choose
|
|
580
|
+
|
|
581
|
+
A value longer than the control ellipsises rather than clipping mid-glyph; an unbroken token scrolls, which is the platform’s answer; and at 240 pixels the value surrenders width while the adornments keep their target size.
|
|
582
|
+
|
|
583
|
+
Excerpt — not a complete module
|
|
584
|
+
|
|
585
|
+
```html
|
|
586
|
+
<div slTextField>
|
|
587
|
+
<input slTextFieldInput defaultValue="Kraftfahrzeug-Haftpflichtversicherungsnummer" />
|
|
588
|
+
</div>
|
|
589
|
+
|
|
590
|
+
<!-- Nothing is removed from the DOM: the whole value stays selectable. -->
|
|
591
|
+
<div slTextField clearable>
|
|
592
|
+
<input slTextFieldInput dir="rtl" defaultValue="مرحبا بالعالم" />
|
|
593
|
+
</div>
|
|
594
|
+
```
|
|
595
|
+
|
|
596
|
+
### Setting it once, and reaching past it
|
|
597
|
+
|
|
598
|
+
provideTextFieldDefaults carries the decisions an application takes once; exportAs reaches the instance, and inputElement is the native element with focus, select and setSelectionRange already on it.
|
|
599
|
+
|
|
600
|
+
Excerpt — not a complete module
|
|
601
|
+
|
|
602
|
+
```html
|
|
603
|
+
<!-- ControlValueAccessor: the control belongs in a form as it stands. -->
|
|
604
|
+
<div slTextField clearable>
|
|
605
|
+
<input slTextFieldInput [formControl]="email" type="email" />
|
|
606
|
+
</div>
|
|
607
|
+
|
|
608
|
+
<!-- exportAs, for the element the template has to reach. -->
|
|
609
|
+
<div slTextField>
|
|
610
|
+
<input slTextFieldInput #campo="slTextFieldInput" />
|
|
611
|
+
<span slTextFieldEnd>
|
|
612
|
+
<button slTextFieldAction (click)="campo.inputElement.select()">Selecionar</button>
|
|
613
|
+
</span>
|
|
614
|
+
</div>
|
|
615
|
+
```
|
|
616
|
+
|
|
617
|
+
### What the keyboard does, and what it deliberately does not
|
|
618
|
+
|
|
619
|
+
Tab reaches the value, then each button in turn. Nothing is bound to Escape: some user agents clear a search input on it, and a control that swallowed the key inside a dialog would be one a keyboard user cannot leave.
|
|
620
|
+
|
|
621
|
+
Excerpt — not a complete module
|
|
622
|
+
|
|
623
|
+
```html
|
|
624
|
+
<form (ngSubmit)="buscar()">
|
|
625
|
+
<div slTextField clearable>
|
|
626
|
+
<input slTextFieldInput type="search" name="q" [(ngModel)]="q" />
|
|
627
|
+
</div>
|
|
628
|
+
</form>
|
|
629
|
+
```
|
|
630
|
+
|
|
631
|
+
### action.ts
|
|
632
|
+
|
|
633
|
+
Example
|
|
634
|
+
|
|
635
|
+
```ts
|
|
636
|
+
import { Component, signal } from '@angular/core';
|
|
637
|
+
import { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';
|
|
638
|
+
import {
|
|
639
|
+
SlTextField,
|
|
640
|
+
SlTextFieldAction,
|
|
641
|
+
SlTextFieldEnd,
|
|
642
|
+
SlTextFieldInput,
|
|
643
|
+
} from '@slotted/angular/text-field';
|
|
644
|
+
|
|
645
|
+
@Component({
|
|
646
|
+
selector: 'app-text-field-action',
|
|
647
|
+
imports: [
|
|
648
|
+
SlField,
|
|
649
|
+
SlFieldDescription,
|
|
650
|
+
SlFieldLabel,
|
|
651
|
+
SlTextField,
|
|
652
|
+
SlTextFieldAction,
|
|
653
|
+
SlTextFieldEnd,
|
|
654
|
+
SlTextFieldInput,
|
|
655
|
+
],
|
|
656
|
+
template: `
|
|
657
|
+
<form (submit)="apply($event)">
|
|
658
|
+
<div slField>
|
|
659
|
+
<label slFieldLabel>Discount code</label>
|
|
660
|
+
<div slTextField mono>
|
|
661
|
+
<input slTextFieldInput name="code" autocomplete="off" defaultValue="SPRING10" />
|
|
662
|
+
<span slTextFieldEnd><button slTextFieldAction type="submit">Apply</button></span>
|
|
663
|
+
</div>
|
|
664
|
+
<span slFieldDescription>
|
|
665
|
+
{{ applied() === '' ? 'One code per order.' : applied() + ' is applied to this order.' }}
|
|
666
|
+
</span>
|
|
667
|
+
</div>
|
|
668
|
+
</form>
|
|
669
|
+
`,
|
|
670
|
+
})
|
|
671
|
+
export class TextFieldActionExample {
|
|
672
|
+
protected readonly applied = signal('');
|
|
673
|
+
|
|
674
|
+
protected apply(event: SubmitEvent) {
|
|
675
|
+
event.preventDefault();
|
|
676
|
+
const code = new FormData(event.target as HTMLFormElement).get('code');
|
|
677
|
+
this.applied.set(typeof code === 'string' ? code.trim().toUpperCase() : '');
|
|
678
|
+
}
|
|
679
|
+
}
|
|
680
|
+
```
|
|
681
|
+
|
|
682
|
+
### clearable.ts
|
|
683
|
+
|
|
684
|
+
Example
|
|
685
|
+
|
|
686
|
+
```ts
|
|
687
|
+
import { Component } from '@angular/core';
|
|
688
|
+
import { SlGlyph, SlIcon } from '@slotted/angular/icon';
|
|
689
|
+
import { SlTextField, SlTextFieldInput, SlTextFieldStart } from '@slotted/angular/text-field';
|
|
690
|
+
|
|
691
|
+
@Component({
|
|
692
|
+
selector: 'app-text-field-clearable',
|
|
693
|
+
imports: [SlGlyph, SlIcon, SlTextField, SlTextFieldInput, SlTextFieldStart],
|
|
694
|
+
template: `
|
|
695
|
+
<div slTextField clearable>
|
|
696
|
+
<span slTextFieldStart>
|
|
697
|
+
<span slIcon><svg slGlyph name="search"></svg></span>
|
|
698
|
+
</span>
|
|
699
|
+
<input
|
|
700
|
+
slTextFieldInput
|
|
701
|
+
type="search"
|
|
702
|
+
aria-label="Search invoices"
|
|
703
|
+
enterkeyhint="search"
|
|
704
|
+
defaultValue="invoice 2026"
|
|
705
|
+
/>
|
|
706
|
+
</div>
|
|
707
|
+
`,
|
|
708
|
+
})
|
|
709
|
+
export class TextFieldClearable {}
|
|
710
|
+
```
|
|
711
|
+
|
|
712
|
+
### defaults.ts
|
|
713
|
+
|
|
714
|
+
Example
|
|
715
|
+
|
|
716
|
+
```ts
|
|
717
|
+
import { Component } from '@angular/core';
|
|
718
|
+
import { SlGrid } from '@slotted/angular/grid';
|
|
719
|
+
import {
|
|
720
|
+
provideTextFieldDefaults,
|
|
721
|
+
SlTextField,
|
|
722
|
+
SlTextFieldInput,
|
|
723
|
+
} from '@slotted/angular/text-field';
|
|
724
|
+
|
|
725
|
+
@Component({
|
|
726
|
+
selector: 'app-text-field-defaults',
|
|
727
|
+
imports: [SlGrid, SlTextField, SlTextFieldInput],
|
|
728
|
+
providers: [provideTextFieldDefaults({ size: 'sm', variant: 'subtle' })],
|
|
729
|
+
template: `
|
|
730
|
+
<div slGrid [gap]="2" minItemWidth="xs">
|
|
731
|
+
<div slTextField clearable>
|
|
732
|
+
<input slTextFieldInput aria-label="Customer" placeholder="Customer" />
|
|
733
|
+
</div>
|
|
734
|
+
<div slTextField mono>
|
|
735
|
+
<input slTextFieldInput aria-label="Order number" placeholder="Order number" />
|
|
736
|
+
</div>
|
|
737
|
+
<div slTextField>
|
|
738
|
+
<input slTextFieldInput aria-label="Ship to city" placeholder="Ship to city" />
|
|
739
|
+
</div>
|
|
740
|
+
</div>
|
|
741
|
+
`,
|
|
742
|
+
})
|
|
743
|
+
export class TextFieldDefaults {}
|
|
744
|
+
```
|
|
745
|
+
|
|
746
|
+
### validation.ts
|
|
747
|
+
|
|
748
|
+
Example
|
|
749
|
+
|
|
750
|
+
```ts
|
|
751
|
+
import { Component, computed, signal } from '@angular/core';
|
|
752
|
+
import { toSignal } from '@angular/core/rxjs-interop';
|
|
753
|
+
import { FormControl, ReactiveFormsModule, Validators } from '@angular/forms';
|
|
754
|
+
import { SlButton } from '@slotted/angular/button';
|
|
755
|
+
import { SlField, SlFieldError, SlFieldLabel } from '@slotted/angular/field';
|
|
756
|
+
import { SlInline } from '@slotted/angular/inline';
|
|
757
|
+
import { SlStack } from '@slotted/angular/stack';
|
|
758
|
+
import { SlTextField, SlTextFieldInput } from '@slotted/angular/text-field';
|
|
759
|
+
|
|
760
|
+
const EMAIL = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
761
|
+
|
|
762
|
+
@Component({
|
|
763
|
+
selector: 'app-text-field-validation',
|
|
764
|
+
imports: [
|
|
765
|
+
ReactiveFormsModule,
|
|
766
|
+
SlButton,
|
|
767
|
+
SlField,
|
|
768
|
+
SlFieldError,
|
|
769
|
+
SlFieldLabel,
|
|
770
|
+
SlInline,
|
|
771
|
+
SlStack,
|
|
772
|
+
SlTextField,
|
|
773
|
+
SlTextFieldInput,
|
|
774
|
+
],
|
|
775
|
+
template: `
|
|
776
|
+
<form novalidate (submit)="submit($event)">
|
|
777
|
+
<div slStack [gap]="4">
|
|
778
|
+
<div slField required [invalid]="error() !== '' ? true : undefined">
|
|
779
|
+
<label slFieldLabel>Billing email</label>
|
|
780
|
+
<div slTextField>
|
|
781
|
+
<input
|
|
782
|
+
slTextFieldInput
|
|
783
|
+
type="email"
|
|
784
|
+
autocomplete="email"
|
|
785
|
+
[formControl]="email"
|
|
786
|
+
(valueChange)="sent.set(false)"
|
|
787
|
+
/>
|
|
788
|
+
</div>
|
|
789
|
+
<span slFieldError live="polite" reserve>{{ error() }}</span>
|
|
790
|
+
</div>
|
|
791
|
+
<div slInline [gap]="3" align="center">
|
|
792
|
+
<button slButton type="submit">Send invoice</button>
|
|
793
|
+
@if (sent()) {
|
|
794
|
+
<span role="status">Invoice sent.</span>
|
|
795
|
+
}
|
|
796
|
+
</div>
|
|
797
|
+
</div>
|
|
798
|
+
</form>
|
|
799
|
+
`,
|
|
800
|
+
})
|
|
801
|
+
export class TextFieldValidation {
|
|
802
|
+
readonly email = new FormControl('', {
|
|
803
|
+
nonNullable: true,
|
|
804
|
+
validators: [Validators.required, Validators.pattern(EMAIL)],
|
|
805
|
+
});
|
|
806
|
+
readonly value = toSignal(this.email.valueChanges, { initialValue: this.email.value });
|
|
807
|
+
readonly submitted = signal(false);
|
|
808
|
+
readonly sent = signal(false);
|
|
809
|
+
readonly error = computed(() => {
|
|
810
|
+
if (!this.submitted()) return '';
|
|
811
|
+
if (this.value().trim() === '') return 'Enter the address the invoice goes to.';
|
|
812
|
+
return EMAIL.test(this.value()) ? '' : 'Enter an address in the format name@company.com.';
|
|
813
|
+
});
|
|
814
|
+
|
|
815
|
+
submit(event: Event): void {
|
|
816
|
+
event.preventDefault();
|
|
817
|
+
this.submitted.set(true);
|
|
818
|
+
this.sent.set(this.email.valid);
|
|
819
|
+
}
|
|
820
|
+
}
|
|
821
|
+
```
|