@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,668 @@
|
|
|
1
|
+
{
|
|
2
|
+
"family": "number-field",
|
|
3
|
+
"ui": "number-field",
|
|
4
|
+
"binding": "angular",
|
|
5
|
+
"catalog": {
|
|
6
|
+
"group": "Forms",
|
|
7
|
+
"summary": "Number input with steppers and formatting."
|
|
8
|
+
},
|
|
9
|
+
"axes": {
|
|
10
|
+
"size": [
|
|
11
|
+
"sm",
|
|
12
|
+
"md",
|
|
13
|
+
"lg"
|
|
14
|
+
],
|
|
15
|
+
"variant": [
|
|
16
|
+
"outline",
|
|
17
|
+
"subtle",
|
|
18
|
+
"plain"
|
|
19
|
+
],
|
|
20
|
+
"stepper": [
|
|
21
|
+
"stacked",
|
|
22
|
+
"split",
|
|
23
|
+
"none"
|
|
24
|
+
],
|
|
25
|
+
"clamp": [
|
|
26
|
+
"blur",
|
|
27
|
+
"strict",
|
|
28
|
+
"none"
|
|
29
|
+
],
|
|
30
|
+
"formatOn": [
|
|
31
|
+
"change",
|
|
32
|
+
"commit"
|
|
33
|
+
]
|
|
34
|
+
},
|
|
35
|
+
"members": {
|
|
36
|
+
"numberField": {
|
|
37
|
+
"nativeElement": "input",
|
|
38
|
+
"defaults": {
|
|
39
|
+
"size": "md",
|
|
40
|
+
"variant": "outline",
|
|
41
|
+
"stepper": "stacked",
|
|
42
|
+
"step": 1,
|
|
43
|
+
"clamp": "blur",
|
|
44
|
+
"formatOn": "change",
|
|
45
|
+
"snapToStep": false,
|
|
46
|
+
"wheel": false
|
|
47
|
+
},
|
|
48
|
+
"capabilities": [
|
|
49
|
+
"value",
|
|
50
|
+
"appearance",
|
|
51
|
+
"size",
|
|
52
|
+
"content",
|
|
53
|
+
"disabled",
|
|
54
|
+
"invalid",
|
|
55
|
+
"required",
|
|
56
|
+
"readOnly",
|
|
57
|
+
"wiring"
|
|
58
|
+
],
|
|
59
|
+
"states": [
|
|
60
|
+
"default",
|
|
61
|
+
"hover",
|
|
62
|
+
"active",
|
|
63
|
+
"focus-visible",
|
|
64
|
+
"disabled",
|
|
65
|
+
"invalid",
|
|
66
|
+
"readonly"
|
|
67
|
+
],
|
|
68
|
+
"parts": [
|
|
69
|
+
"root",
|
|
70
|
+
"input",
|
|
71
|
+
"start",
|
|
72
|
+
"end",
|
|
73
|
+
"scrub",
|
|
74
|
+
"stepper",
|
|
75
|
+
"decrement",
|
|
76
|
+
"increment"
|
|
77
|
+
]
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
"docs": {
|
|
81
|
+
"numberField": {
|
|
82
|
+
"imports": {
|
|
83
|
+
"source": "import {\n provideNumberFieldDefaults,\n SlNumberField,\n SlNumberFieldEnd,\n SlNumberFieldInput,\n SlNumberFieldScrub,\n SlNumberFieldStart,\n} from '@slotted/angular/number-field';",
|
|
84
|
+
"selector": "[slNumberField]",
|
|
85
|
+
"exportAs": "slNumberField"
|
|
86
|
+
},
|
|
87
|
+
"anatomy": [
|
|
88
|
+
{
|
|
89
|
+
"part": "root",
|
|
90
|
+
"element": "the element carrying slNumberField",
|
|
91
|
+
"required": true,
|
|
92
|
+
"purpose": "The frame. It carries data-ui=\"number-field\", data-size, data-variant and data-stepper, and data-disabled, data-invalid, data-readonly and data-scrubbing while they apply. It has no role: a spinbutton may hold only non-interactive children, so the two buttons are siblings of the input inside a box that announces nothing."
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"part": "input",
|
|
96
|
+
"element": "input[slNumberFieldInput], as text with role=\"spinbutton\"",
|
|
97
|
+
"required": true,
|
|
98
|
+
"purpose": "The control. It holds the formatted text, the id, and aria-valuenow, aria-valuemin, aria-valuemax and aria-valuetext, and it is a ControlValueAccessor, so it binds to a reactive or template-driven form as it stands. It is type=\"text\" because type=\"number\" empties itself whenever the text is not a plain decimal number, so no grouping separator or currency symbol would survive it."
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"part": "start",
|
|
102
|
+
"element": "any element carrying slNumberFieldStart",
|
|
103
|
+
"required": false,
|
|
104
|
+
"purpose": "Content before the value in the reading direction. It sits beside the number and is never selected, copied or parsed with it. A symbol that belongs inside the value comes from format instead."
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"part": "end",
|
|
108
|
+
"element": "any element carrying slNumberFieldEnd",
|
|
109
|
+
"required": false,
|
|
110
|
+
"purpose": "Content after the value in the reading direction, such as a unit or a currency code."
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"part": "scrub",
|
|
114
|
+
"element": "any element carrying slNumberFieldScrub, inside an adornment",
|
|
115
|
+
"required": false,
|
|
116
|
+
"purpose": "A mark that moves the value when it is dragged sideways: one step per sensitivity pixels towards the inline end, largeStep with Shift and smallStep with Alt. The mark and the frame carry data-scrubbing while it is dragged. It is hidden from assistive technology, because the arrow keys in the input make the same change."
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"part": "stepper",
|
|
120
|
+
"element": "span, rendered by the frame",
|
|
121
|
+
"required": false,
|
|
122
|
+
"purpose": "The column that holds both buttons under stepper=\"stacked\", inset from the frame and drawn without a border of its own; each button takes the inset back as hit area. It is not rendered under split, where the buttons are direct children of the frame."
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
"part": "decrement",
|
|
126
|
+
"element": "button[type=button][tabindex=-1], rendered by the frame",
|
|
127
|
+
"required": false,
|
|
128
|
+
"purpose": "Steps down by step, by largeStep with Shift and by smallStep with Alt, and repeats while it is held. It is disabled at min, and it is out of the tab order because the arrow keys in the input make the same change."
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"part": "increment",
|
|
132
|
+
"element": "button[type=button][tabindex=-1], rendered by the frame",
|
|
133
|
+
"required": false,
|
|
134
|
+
"purpose": "Steps up by the same amounts and is disabled at max. Both buttons carry a translatable accessible name and aria-controls pointing at the input."
|
|
135
|
+
}
|
|
136
|
+
],
|
|
137
|
+
"api": [
|
|
138
|
+
{
|
|
139
|
+
"name": "value",
|
|
140
|
+
"type": "number | null",
|
|
141
|
+
"defaultValue": "—",
|
|
142
|
+
"appliesTo": "input[slNumberFieldInput]",
|
|
143
|
+
"description": "Makes the value controlled for the life of the component. null is empty, and empty is not zero: a required amount left blank and an amount of zero are different values."
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
"name": "defaultValue",
|
|
147
|
+
"type": "number | null",
|
|
148
|
+
"defaultValue": "—",
|
|
149
|
+
"appliesTo": "input[slNumberFieldInput]",
|
|
150
|
+
"description": "The value an uncontrolled number field starts from. It is read once, in ngOnInit, because Angular binds inputs after it creates the directives."
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
"name": "min",
|
|
154
|
+
"type": "number",
|
|
155
|
+
"defaultValue": "—",
|
|
156
|
+
"appliesTo": "input[slNumberFieldInput]",
|
|
157
|
+
"description": "The smallest value. The decrement button is disabled at it, Home moves to it, and the snapToStep grid is counted from it."
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
"name": "max",
|
|
161
|
+
"type": "number",
|
|
162
|
+
"defaultValue": "—",
|
|
163
|
+
"appliesTo": "input[slNumberFieldInput]",
|
|
164
|
+
"description": "The largest value. The increment button is disabled at it, and End moves to it."
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"name": "step",
|
|
168
|
+
"type": "number",
|
|
169
|
+
"defaultValue": "1",
|
|
170
|
+
"appliesTo": "input[slNumberFieldInput]",
|
|
171
|
+
"description": "What the arrow keys and the two buttons add or subtract."
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
"name": "largeStep",
|
|
175
|
+
"type": "number",
|
|
176
|
+
"defaultValue": "step × 10",
|
|
177
|
+
"appliesTo": "input[slNumberFieldInput]",
|
|
178
|
+
"description": "What Shift with an arrow, Page Up and Page Down add or subtract, so a wide range is crossed without holding a key."
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
"name": "smallStep",
|
|
182
|
+
"type": "number",
|
|
183
|
+
"defaultValue": "step ÷ 10",
|
|
184
|
+
"appliesTo": "input[slNumberFieldInput]",
|
|
185
|
+
"description": "What Alt with an arrow adds or subtracts."
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
"name": "stepFrom",
|
|
189
|
+
"type": "number",
|
|
190
|
+
"defaultValue": "min, or 0",
|
|
191
|
+
"appliesTo": "input[slNumberFieldInput]",
|
|
192
|
+
"description": "The value the first step produces when the number field is empty."
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
"name": "snapToStep",
|
|
196
|
+
"type": "boolean",
|
|
197
|
+
"defaultValue": "false",
|
|
198
|
+
"appliesTo": "input[slNumberFieldInput]",
|
|
199
|
+
"description": "Steps to multiples of step counted from min, so with min 2 and step 3 the values are 2, 5, 8 and 11. A typed value moves to the nearest multiple when the number field commits."
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
"name": "clamp",
|
|
203
|
+
"type": "'blur' | 'strict' | 'none'",
|
|
204
|
+
"defaultValue": "blur",
|
|
205
|
+
"appliesTo": "input[slNumberFieldInput], provideNumberFieldDefaults",
|
|
206
|
+
"description": "What happens to a value outside min and max. blur returns it to the range when the number field commits, strict refuses the keystroke that would leave the range, and none keeps the value and sets aria-invalid and data-invalid while it is out of range."
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
"name": "format",
|
|
210
|
+
"type": "Intl.NumberFormatOptions",
|
|
211
|
+
"defaultValue": "—",
|
|
212
|
+
"appliesTo": "input[slNumberFieldInput]",
|
|
213
|
+
"description": "How the value is written and read back. Currency, percent and unit are formats of one number, and precision is set with minimumFractionDigits and maximumFractionDigits. When the number field commits, the number is rounded to the precision the input shows."
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
"name": "formatOn",
|
|
217
|
+
"type": "'change' | 'commit'",
|
|
218
|
+
"defaultValue": "change",
|
|
219
|
+
"appliesTo": "input[slNumberFieldInput], provideNumberFieldDefaults",
|
|
220
|
+
"description": "When the text takes the format. change regroups it on every keystroke; commit keeps the typed text until blur, Enter, a stepper press or an arrow key. Under both, the number changes on every keystroke that parses."
|
|
221
|
+
},
|
|
222
|
+
{
|
|
223
|
+
"name": "locale",
|
|
224
|
+
"type": "string",
|
|
225
|
+
"defaultValue": "the locale of provideSlotted, then en-US",
|
|
226
|
+
"appliesTo": "input[slNumberFieldInput]",
|
|
227
|
+
"description": "A BCP 47 tag. It sets the decimal separator, the grouping and the digits, for the text written and the text read back."
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
"name": "stepper",
|
|
231
|
+
"type": "'stacked' | 'split' | 'none'",
|
|
232
|
+
"defaultValue": "stacked",
|
|
233
|
+
"appliesTo": "[slNumberField], provideNumberFieldDefaults",
|
|
234
|
+
"description": "Where the two buttons sit. split places them at either end of the frame, and its targets are at least 24 CSS pixels in both directions; none removes them."
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
"name": "wheel",
|
|
238
|
+
"type": "boolean",
|
|
239
|
+
"defaultValue": "false",
|
|
240
|
+
"appliesTo": "input[slNumberFieldInput]",
|
|
241
|
+
"description": "Lets the mouse wheel step the value while the input has focus and the pointer is over it. It is off by default, so scrolling a form never changes an amount."
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
"name": "size",
|
|
245
|
+
"type": "'sm' | 'md' | 'lg'",
|
|
246
|
+
"defaultValue": "md",
|
|
247
|
+
"appliesTo": "[slNumberField], provideNumberFieldDefaults",
|
|
248
|
+
"description": "The step of the control scale. When unset, the number field takes the size of its field, then of provideNumberFieldDefaults. Height, padding, type and glyphs come from the control scale the theme sets per density."
|
|
249
|
+
},
|
|
250
|
+
{
|
|
251
|
+
"name": "variant",
|
|
252
|
+
"type": "'outline' | 'subtle' | 'plain'",
|
|
253
|
+
"defaultValue": "outline",
|
|
254
|
+
"appliesTo": "[slNumberField], provideNumberFieldDefaults",
|
|
255
|
+
"description": "How much frame the number field draws. plain draws no border at rest and keeps the same box, for a dense table cell."
|
|
256
|
+
},
|
|
257
|
+
{
|
|
258
|
+
"name": "start",
|
|
259
|
+
"type": "slNumberFieldStart",
|
|
260
|
+
"defaultValue": "—",
|
|
261
|
+
"appliesTo": "any projected element",
|
|
262
|
+
"description": "Content before the value in the reading direction. It is never selected, copied or parsed with the number."
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
"name": "end",
|
|
266
|
+
"type": "slNumberFieldEnd",
|
|
267
|
+
"defaultValue": "—",
|
|
268
|
+
"appliesTo": "any projected element",
|
|
269
|
+
"description": "Content after the value in the reading direction."
|
|
270
|
+
},
|
|
271
|
+
{
|
|
272
|
+
"name": "sensitivity",
|
|
273
|
+
"type": "number",
|
|
274
|
+
"defaultValue": "2",
|
|
275
|
+
"appliesTo": "slNumberFieldScrub",
|
|
276
|
+
"description": "Pixels of horizontal drag per step. Use fewer pixels for a wide range and more for a fine one."
|
|
277
|
+
},
|
|
278
|
+
{
|
|
279
|
+
"name": "disabled",
|
|
280
|
+
"type": "boolean",
|
|
281
|
+
"defaultValue": "from the field, or false",
|
|
282
|
+
"appliesTo": "input[slNumberFieldInput]",
|
|
283
|
+
"description": "Unset rather than false, so the number field follows the field around it. When set, it wins over the field and writes the native disabled, which removes the input from the tab order and from form submission. A disabled form control sets it too."
|
|
284
|
+
},
|
|
285
|
+
{
|
|
286
|
+
"name": "readOnly",
|
|
287
|
+
"type": "boolean",
|
|
288
|
+
"defaultValue": "from the field, or false",
|
|
289
|
+
"appliesTo": "input[slNumberFieldInput]",
|
|
290
|
+
"description": "Unset rather than false, so the number field follows the field around it. Writes the native readonly: the input stays focusable, selectable and submitted, and both buttons are disabled."
|
|
291
|
+
},
|
|
292
|
+
{
|
|
293
|
+
"name": "invalid",
|
|
294
|
+
"type": "boolean",
|
|
295
|
+
"defaultValue": "from the field, or false",
|
|
296
|
+
"appliesTo": "input[slNumberFieldInput]",
|
|
297
|
+
"description": "Unset rather than false, so the number field follows the field around it. Writes aria-invalid on the input and data-invalid on the frame."
|
|
298
|
+
},
|
|
299
|
+
{
|
|
300
|
+
"name": "required",
|
|
301
|
+
"type": "boolean",
|
|
302
|
+
"defaultValue": "—",
|
|
303
|
+
"appliesTo": "input[slNumberFieldInput]",
|
|
304
|
+
"description": "The element’s own attribute, written only by you. Inside a required field, the input receives aria-required instead, because the native attribute turns on the browser’s constraint validation."
|
|
305
|
+
},
|
|
306
|
+
{
|
|
307
|
+
"name": "name / form",
|
|
308
|
+
"type": "string",
|
|
309
|
+
"defaultValue": "—",
|
|
310
|
+
"appliesTo": "input[slNumberFieldInput]",
|
|
311
|
+
"description": "Read as static attributes and moved to a hidden input beside the visible one, which submits the raw number: 1480, not \"$1,480.00\"."
|
|
312
|
+
},
|
|
313
|
+
{
|
|
314
|
+
"name": "messages",
|
|
315
|
+
"type": "Partial<NumberFieldMessages>",
|
|
316
|
+
"defaultValue": "—",
|
|
317
|
+
"appliesTo": "[slNumberField]",
|
|
318
|
+
"description": "Replaces words of the active language, key by key: increment and decrement are the accessible names of the two buttons."
|
|
319
|
+
}
|
|
320
|
+
],
|
|
321
|
+
"composition": [
|
|
322
|
+
{
|
|
323
|
+
"name": "exportAs",
|
|
324
|
+
"type": "'slNumberField' / 'slNumberFieldInput'",
|
|
325
|
+
"defaultValue": "—",
|
|
326
|
+
"appliesTo": "both directives",
|
|
327
|
+
"description": "Hands the directive instance to the template. The input’s instance exposes inputElement, which has focus(), select() and setSelectionRange(), and increment() and decrement(), which move by one step within the bounds and report the reason programmatic."
|
|
328
|
+
},
|
|
329
|
+
{
|
|
330
|
+
"name": "ControlValueAccessor",
|
|
331
|
+
"type": "NG_VALUE_ACCESSOR",
|
|
332
|
+
"defaultValue": "—",
|
|
333
|
+
"appliesTo": "input[slNumberFieldInput]",
|
|
334
|
+
"description": "Binds the input to a reactive or template-driven form, which receives the number rather than the formatted text. The directive provides no validator: min and max are reported through aria-invalid only under clamp=\"none\", and when an error is shown is the form’s decision."
|
|
335
|
+
},
|
|
336
|
+
{
|
|
337
|
+
"name": "ng-content",
|
|
338
|
+
"type": "[slNumberFieldStart], [slNumberFieldEnd], the input",
|
|
339
|
+
"defaultValue": "—",
|
|
340
|
+
"appliesTo": "[slNumberField]",
|
|
341
|
+
"description": "Projects your own elements into three slots, so a span, an icon or a kbd keeps its own semantics. The frame is a directive on your own element."
|
|
342
|
+
},
|
|
343
|
+
{
|
|
344
|
+
"name": "provideNumberFieldDefaults",
|
|
345
|
+
"type": "{ size, variant, stepper, formatOn, clamp }",
|
|
346
|
+
"defaultValue": "—",
|
|
347
|
+
"appliesTo": "an injector",
|
|
348
|
+
"description": "Sets size, variant, stepper, formatOn and clamp once for every number field under the injector. A number field that states a value keeps it. The locale comes from provideSlotted, so every amount in the application is written and read the same way."
|
|
349
|
+
},
|
|
350
|
+
{
|
|
351
|
+
"name": "HostAttributeToken",
|
|
352
|
+
"type": "id, name, form, inputmode, aria-describedby, aria-invalid, aria-required, readonly",
|
|
353
|
+
"defaultValue": "—",
|
|
354
|
+
"appliesTo": "input[slNumberFieldInput]",
|
|
355
|
+
"description": "Each is read before the host bindings run, so a static attribute you write is never overwritten."
|
|
356
|
+
}
|
|
357
|
+
],
|
|
358
|
+
"events": [
|
|
359
|
+
{
|
|
360
|
+
"name": "(valueChange)",
|
|
361
|
+
"payload": "ChangeRequest<number | null>",
|
|
362
|
+
"when": "Before the value changes. value is the new number and previous the number it replaces. reason is keyboard for typing, an arrow, a page key, Home, End or Enter; pointer for a stepper press, a wheel turn or a scrub; blur for the commit that formats, rounds and clamps on blur; programmatic for increment() and decrement(). source is the originating event, and cancel() refuses the change before it is applied. There is no [(value)], because a two-way binding carries only the value, without the reason or cancel()."
|
|
363
|
+
},
|
|
364
|
+
{
|
|
365
|
+
"name": "ControlValueAccessor",
|
|
366
|
+
"payload": "writeValue, registerOnChange, registerOnTouched, setDisabledState",
|
|
367
|
+
"when": "Whenever a reactive or template-driven form reads or writes the input. The form receives the number, never the formatted text, and a disabled form control disables the input and both buttons."
|
|
368
|
+
},
|
|
369
|
+
{
|
|
370
|
+
"name": "the element’s own events",
|
|
371
|
+
"payload": "(input), (keydown), (blur), (focus)",
|
|
372
|
+
"when": "Whenever the input fires them. Your listener runs alongside the directive’s, and calling preventDefault() on a key stops the directive from acting on it."
|
|
373
|
+
}
|
|
374
|
+
],
|
|
375
|
+
"accessibility": [
|
|
376
|
+
"SlNumberField follows the WAI-ARIA APG Spinbutton pattern: role=\"spinbutton\" on the input with aria-valuenow, aria-valuemin, aria-valuemax and aria-valuetext, ArrowUp and ArrowDown to step, Home and End to reach the bounds, and Page Up and Page Down for the larger step.",
|
|
377
|
+
"aria-valuetext carries the formatted text, so a screen reader announces \"$1,480.00\" rather than 1480. When the number field is empty, neither aria-valuenow nor aria-valuetext is set: no value is not the value zero.",
|
|
378
|
+
"The frame has no role. WAI-ARIA requires the children of a spinbutton to be non-interactive, so the two buttons are siblings of the input inside a box that announces nothing.",
|
|
379
|
+
"The buttons are out of the tab order, as the APG pattern recommends, and stay in the accessibility tree with translatable names and aria-controls pointing at the input. A button at a bound is disabled, so its name is still announced and its appearance shows why it does nothing.",
|
|
380
|
+
"Inside a required field the input receives aria-required, never the native required, which would turn on the browser’s constraint validation. disabled and readonly are the native attributes.",
|
|
381
|
+
"The input is type=\"text\", and its inputmode comes from the inputs: numeric for a whole number at or above zero, decimal when the format allows a fraction, and text when min allows a negative, because neither numeric keypad offers a minus sign on every platform.",
|
|
382
|
+
"The mouse wheel is not bound unless wheel is set, and Escape is not bound at all, so scrolling a form never changes an amount."
|
|
383
|
+
]
|
|
384
|
+
}
|
|
385
|
+
},
|
|
386
|
+
"tokens": [
|
|
387
|
+
"--slotted-border-subtle",
|
|
388
|
+
"--slotted-control-border-color",
|
|
389
|
+
"--slotted-control-border-width",
|
|
390
|
+
"--slotted-control-font-family",
|
|
391
|
+
"--slotted-control-font-size-lg",
|
|
392
|
+
"--slotted-control-font-size-md",
|
|
393
|
+
"--slotted-control-font-size-sm",
|
|
394
|
+
"--slotted-control-gap-lg",
|
|
395
|
+
"--slotted-control-gap-md",
|
|
396
|
+
"--slotted-control-gap-sm",
|
|
397
|
+
"--slotted-control-height-lg",
|
|
398
|
+
"--slotted-control-height-md",
|
|
399
|
+
"--slotted-control-height-sm",
|
|
400
|
+
"--slotted-control-icon-size-lg",
|
|
401
|
+
"--slotted-control-icon-size-md",
|
|
402
|
+
"--slotted-control-icon-size-sm",
|
|
403
|
+
"--slotted-control-inner-size-lg",
|
|
404
|
+
"--slotted-control-inner-size-md",
|
|
405
|
+
"--slotted-control-inner-size-sm",
|
|
406
|
+
"--slotted-control-invalid-edge-width",
|
|
407
|
+
"--slotted-control-padding-inline-lg",
|
|
408
|
+
"--slotted-control-padding-inline-md",
|
|
409
|
+
"--slotted-control-padding-inline-sm",
|
|
410
|
+
"--slotted-control-radius",
|
|
411
|
+
"--slotted-control-shadow",
|
|
412
|
+
"--slotted-control-shadow-focus-geometry",
|
|
413
|
+
"--slotted-control-surface",
|
|
414
|
+
"--slotted-control-transition-duration",
|
|
415
|
+
"--slotted-control-transition-easing",
|
|
416
|
+
"--slotted-disabled-background",
|
|
417
|
+
"--slotted-disabled-border",
|
|
418
|
+
"--slotted-disabled-foreground",
|
|
419
|
+
"--slotted-focus-ring-color",
|
|
420
|
+
"--slotted-focus-ring-color-invalid",
|
|
421
|
+
"--slotted-focus-ring-offset",
|
|
422
|
+
"--slotted-focus-ring-width",
|
|
423
|
+
"--slotted-number-field-action-size",
|
|
424
|
+
"--slotted-number-field-adornment-color",
|
|
425
|
+
"--slotted-number-field-background",
|
|
426
|
+
"--slotted-number-field-border-color",
|
|
427
|
+
"--slotted-number-field-color",
|
|
428
|
+
"--slotted-number-field-disabled-background",
|
|
429
|
+
"--slotted-number-field-disabled-border-color",
|
|
430
|
+
"--slotted-number-field-disabled-color",
|
|
431
|
+
"--slotted-number-field-hover-border-color",
|
|
432
|
+
"--slotted-number-field-icon-size-min",
|
|
433
|
+
"--slotted-number-field-invalid-border-color",
|
|
434
|
+
"--slotted-number-field-invalid-edge-width",
|
|
435
|
+
"--slotted-number-field-invalid-focus-ring-color",
|
|
436
|
+
"--slotted-number-field-placeholder-color",
|
|
437
|
+
"--slotted-number-field-plain-hover-background",
|
|
438
|
+
"--slotted-number-field-radius",
|
|
439
|
+
"--slotted-number-field-readonly-background",
|
|
440
|
+
"--slotted-number-field-readonly-border-color",
|
|
441
|
+
"--slotted-number-field-scrub-active-color",
|
|
442
|
+
"--slotted-number-field-shadow",
|
|
443
|
+
"--slotted-number-field-stepper-active-background",
|
|
444
|
+
"--slotted-number-field-stepper-color",
|
|
445
|
+
"--slotted-number-field-stepper-disabled-background",
|
|
446
|
+
"--slotted-number-field-stepper-disabled-color",
|
|
447
|
+
"--slotted-number-field-stepper-hover-background",
|
|
448
|
+
"--slotted-number-field-stepper-size",
|
|
449
|
+
"--slotted-number-field-subtle-background",
|
|
450
|
+
"--slotted-number-field-subtle-border-color",
|
|
451
|
+
"--slotted-number-field-subtle-hover-background",
|
|
452
|
+
"--slotted-radius-none",
|
|
453
|
+
"--slotted-radius-xs",
|
|
454
|
+
"--slotted-space-1",
|
|
455
|
+
"--slotted-space-2",
|
|
456
|
+
"--slotted-surface-sunken",
|
|
457
|
+
"--slotted-target-comfortable",
|
|
458
|
+
"--slotted-target-min",
|
|
459
|
+
"--slotted-text",
|
|
460
|
+
"--slotted-text-muted",
|
|
461
|
+
"--slotted-tone-accent-border",
|
|
462
|
+
"--slotted-tone-danger-border",
|
|
463
|
+
"--slotted-tone-secondary-subtle-active",
|
|
464
|
+
"--slotted-tone-secondary-subtle-hover"
|
|
465
|
+
],
|
|
466
|
+
"examples": [
|
|
467
|
+
{
|
|
468
|
+
"id": "playground",
|
|
469
|
+
"title": "Playground",
|
|
470
|
+
"note": "One control with every axis on it, driven by the controls below the canvas. Type a number, then hold the increment button: it steps once, waits, and then repeats.",
|
|
471
|
+
"language": "html",
|
|
472
|
+
"source": "<div slField>\n <label slFieldLabel>Quantidade</label>\n <div slNumberField>\n <input slNumberFieldInput defaultValue=\"3\" min=\"1\" max=\"99\" />\n </div>\n <span slFieldDescription>Máximo de 99 unidades por pedido.</span>\n</div>\n",
|
|
473
|
+
"verdict": "excerpt"
|
|
474
|
+
},
|
|
475
|
+
{
|
|
476
|
+
"id": "sizes",
|
|
477
|
+
"title": "The step the control sits at",
|
|
478
|
+
"note": "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.",
|
|
479
|
+
"language": "ts",
|
|
480
|
+
"source": "import { Component } from '@angular/core';\nimport { SlNumberField, SlNumberFieldInput } from '@slotted/angular/number-field';\nimport { SlStack } from '@slotted/angular/stack';\n\n@Component({\n selector: 'app-number-field-sizes',\n imports: [SlNumberField, SlNumberFieldInput, SlStack],\n template: `\n <div slStack [gap]=\"4\">\n <div slNumberField size=\"sm\">\n <input slNumberFieldInput aria-label=\"Units per case\" defaultValue=\"24\" min=\"1\" />\n </div>\n <div slNumberField size=\"md\">\n <input slNumberFieldInput aria-label=\"Cases ordered\" defaultValue=\"12\" min=\"1\" />\n </div>\n <div slNumberField size=\"lg\">\n <input slNumberFieldInput aria-label=\"Pallets ordered\" defaultValue=\"2\" min=\"1\" />\n </div>\n </div>\n `,\n})\nexport class NumberFieldSizes {}\n",
|
|
481
|
+
"verdict": "example"
|
|
482
|
+
},
|
|
483
|
+
{
|
|
484
|
+
"id": "variants",
|
|
485
|
+
"title": "How much frame the control shows",
|
|
486
|
+
"note": "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 of amounts needs.",
|
|
487
|
+
"language": "ts",
|
|
488
|
+
"source": "import { Component } from '@angular/core';\nimport { SlField, SlFieldLabel } from '@slotted/angular/field';\nimport { SlNumberField, SlNumberFieldInput } from '@slotted/angular/number-field';\nimport { SlStack } from '@slotted/angular/stack';\n\n@Component({\n selector: 'app-number-field-variants',\n imports: [SlField, SlFieldLabel, SlNumberField, SlNumberFieldInput, SlStack],\n template: `\n <div slStack [gap]=\"4\">\n <div slField>\n <label slFieldLabel>Unit price</label>\n <div slNumberField variant=\"outline\">\n <input\n slNumberFieldInput\n defaultValue=\"18\"\n min=\"0\"\n [format]=\"{ currency: 'USD', style: 'currency' }\"\n />\n </div>\n </div>\n <div slField>\n <label slFieldLabel>Discount</label>\n <div slNumberField variant=\"subtle\">\n <input\n slNumberFieldInput\n defaultValue=\"0.05\"\n min=\"0\"\n max=\"1\"\n step=\"0.01\"\n [format]=\"{ style: 'percent' }\"\n />\n </div>\n </div>\n <div slField>\n <label slFieldLabel>Freight</label>\n <div slNumberField variant=\"plain\" stepper=\"none\">\n <input\n slNumberFieldInput\n defaultValue=\"32.38\"\n min=\"0\"\n [format]=\"{ currency: 'USD', style: 'currency' }\"\n />\n </div>\n </div>\n </div>\n `,\n})\nexport class NumberFieldVariants {}\n",
|
|
489
|
+
"verdict": "example"
|
|
490
|
+
},
|
|
491
|
+
{
|
|
492
|
+
"id": "stepper",
|
|
493
|
+
"title": "Where the two buttons sit, and whether they sit at all",
|
|
494
|
+
"note": "stacked is one column at the inline end; split puts decrement and increment at either end of the frame with the value centred between them, which is the only arrangement whose targets clear 24 pixels in both axes.",
|
|
495
|
+
"language": "html",
|
|
496
|
+
"source": "<div slNumberField stepper=\"stacked\"><input slNumberFieldInput defaultValue=\"12\" /></div>\n\n<!-- The arrangement a thumb can hit, and the one a quantity wants. -->\n<div slNumberField stepper=\"split\">\n <input slNumberFieldInput defaultValue=\"3\" min=\"1\" max=\"99\" />\n</div>\n\n<!-- Typed and never spun, which is what a dense table asks for. -->\n<div slNumberField stepper=\"none\"><input slNumberFieldInput defaultValue=\"1480\" /></div>\n",
|
|
497
|
+
"verdict": "excerpt"
|
|
498
|
+
},
|
|
499
|
+
{
|
|
500
|
+
"id": "range",
|
|
501
|
+
"title": "The bounds, the step, and what happens at the edge",
|
|
502
|
+
"note": "The stepper that would leave the range is disabled rather than silently inert. Type 400 into the first control and tab away: clamp=\"blur\" brings it back, while clamp=\"none\" leaves it where you put it and says so.",
|
|
503
|
+
"language": "ts",
|
|
504
|
+
"source": "import { Component } from '@angular/core';\nimport { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';\nimport { SlNumberField, SlNumberFieldInput } from '@slotted/angular/number-field';\nimport { SlStack } from '@slotted/angular/stack';\n\n@Component({\n selector: 'app-number-field-range',\n imports: [SlField, SlFieldDescription, SlFieldLabel, SlNumberField, SlNumberFieldInput, SlStack],\n template: `\n <div slStack [gap]=\"5\">\n <div slField>\n <label slFieldLabel>Pallets on the trailer</label>\n <div slNumberField>\n <input slNumberFieldInput defaultValue=\"26\" min=\"0\" max=\"26\" />\n </div>\n <span slFieldDescription>A 53-foot trailer holds 26 pallets.</span>\n </div>\n <div slField>\n <label slFieldLabel>Bottles of Chartreuse verte</label>\n <div slNumberField>\n <input slNumberFieldInput defaultValue=\"12\" min=\"6\" step=\"6\" snapToStep />\n </div>\n <span slFieldDescription>Sold in cases of 6. Type 20 and leave the field.</span>\n </div>\n </div>\n `,\n})\nexport class NumberFieldRange {}\n",
|
|
505
|
+
"verdict": "example"
|
|
506
|
+
},
|
|
507
|
+
{
|
|
508
|
+
"id": "format",
|
|
509
|
+
"title": "Currency, percent and unit are formattings, not types",
|
|
510
|
+
"note": "One numeric value, written by Intl.NumberFormat. The symbol inside the value comes from format and is part of what a reader copies; a symbol beside the value is an adornment instead, and the two sit side by side below.",
|
|
511
|
+
"language": "ts",
|
|
512
|
+
"source": "import { Component } from '@angular/core';\nimport { SlField, SlFieldLabel } from '@slotted/angular/field';\nimport { SlNumberField, SlNumberFieldInput } from '@slotted/angular/number-field';\nimport { SlStack } from '@slotted/angular/stack';\n\n@Component({\n selector: 'app-number-field-format',\n imports: [SlField, SlFieldLabel, SlNumberField, SlNumberFieldInput, SlStack],\n template: `\n <div slStack [gap]=\"4\">\n <div slField>\n <label slFieldLabel>Credit limit</label>\n <div slNumberField>\n <input\n slNumberFieldInput\n defaultValue=\"25000\"\n min=\"0\"\n step=\"500\"\n [format]=\"{ currency: 'USD', style: 'currency' }\"\n />\n </div>\n </div>\n <div slField>\n <label slFieldLabel>Sales tax</label>\n <div slNumberField>\n <input\n slNumberFieldInput\n defaultValue=\"0.0825\"\n min=\"0\"\n max=\"1\"\n step=\"0.0025\"\n [format]=\"{ maximumFractionDigits: 2, style: 'percent' }\"\n />\n </div>\n </div>\n <div slField>\n <label slFieldLabel>Pallet volume</label>\n <div slNumberField>\n <input\n slNumberFieldInput\n defaultValue=\"1.8\"\n min=\"0\"\n step=\"0.1\"\n [format]=\"{ style: 'unit', unit: 'liter', unitDisplay: 'long' }\"\n />\n </div>\n </div>\n </div>\n `,\n})\nexport class NumberFieldFormat {}\n",
|
|
513
|
+
"verdict": "example"
|
|
514
|
+
},
|
|
515
|
+
{
|
|
516
|
+
"id": "formatOn",
|
|
517
|
+
"title": "When the grouping appears",
|
|
518
|
+
"note": "The two amounts below are the same under both settings; the axis decides only what the field shows between two keystrokes. The number itself moves on every keystroke that parses either way.",
|
|
519
|
+
"language": "html",
|
|
520
|
+
"source": "<!-- The default. The caret stays on the character it was on, because it is\n counted in the reader's own characters rather than in string indices. -->\n<div slNumberField><input slNumberFieldInput locale=\"pt-BR\" /></div>\n\n<!-- The reader's own text until blur, Enter, a stepper press or a key step.\n For an amount that is pasted and audited rather than typed. -->\n<div slNumberField>\n <input slNumberFieldInput locale=\"pt-BR\" formatOn=\"commit\" />\n</div>\n\n<!-- Rounding and padding belong to the commit under both: 1,50 keeps its\n nought while it is being typed, and 1, keeps its separator. -->\n",
|
|
521
|
+
"verdict": "excerpt"
|
|
522
|
+
},
|
|
523
|
+
{
|
|
524
|
+
"id": "locale",
|
|
525
|
+
"title": "The separator, the grouping and the numerals",
|
|
526
|
+
"note": "Paste “R$ 1.480,00” into the Brazilian control and “١٬٤٨٠” into the Arabic one: both parse, because the parser is built from the same Intl parts the formatter writes with.",
|
|
527
|
+
"language": "ts",
|
|
528
|
+
"source": "import { Component } from '@angular/core';\nimport { SlField, SlFieldLabel } from '@slotted/angular/field';\nimport { SlNumberField, SlNumberFieldInput } from '@slotted/angular/number-field';\nimport { SlStack } from '@slotted/angular/stack';\n\n@Component({\n selector: 'app-number-field-locale',\n imports: [SlField, SlFieldLabel, SlNumberField, SlNumberFieldInput, SlStack],\n template: `\n <div slStack [gap]=\"4\">\n <div slField>\n <label slFieldLabel>Invoice total, United States</label>\n <div slNumberField>\n <input\n slNumberFieldInput\n defaultValue=\"14800.5\"\n locale=\"en-US\"\n [format]=\"{ currency: 'USD', style: 'currency' }\"\n />\n </div>\n </div>\n <div slField>\n <label slFieldLabel>Invoice total, Germany</label>\n <div slNumberField>\n <input\n slNumberFieldInput\n defaultValue=\"14800.5\"\n locale=\"de-DE\"\n [format]=\"{ currency: 'EUR', style: 'currency' }\"\n />\n </div>\n </div>\n <div slField>\n <label slFieldLabel>Invoice total, Egypt</label>\n <div slNumberField>\n <input\n slNumberFieldInput\n defaultValue=\"14800.5\"\n locale=\"ar-EG\"\n [format]=\"{ currency: 'EGP', style: 'currency' }\"\n />\n </div>\n </div>\n </div>\n `,\n})\nexport class NumberFieldLocale {}\n",
|
|
529
|
+
"verdict": "example"
|
|
530
|
+
},
|
|
531
|
+
{
|
|
532
|
+
"id": "adornments",
|
|
533
|
+
"title": "What sits beside the number",
|
|
534
|
+
"note": "start and end name the reading direction rather than a side, and neither is ever squeezed: the value gives up width first. Switch the toolbar to rtl and the mark stays before the amount.",
|
|
535
|
+
"language": "ts",
|
|
536
|
+
"source": "import { Component } from '@angular/core';\nimport { SlField, SlFieldLabel } from '@slotted/angular/field';\nimport {\n SlNumberField,\n SlNumberFieldEnd,\n SlNumberFieldInput,\n SlNumberFieldStart,\n} from '@slotted/angular/number-field';\nimport { SlStack } from '@slotted/angular/stack';\n\n@Component({\n selector: 'app-number-field-adornments',\n imports: [\n SlField,\n SlFieldLabel,\n SlNumberField,\n SlNumberFieldEnd,\n SlNumberFieldInput,\n SlNumberFieldStart,\n SlStack,\n ],\n template: `\n <div slStack [gap]=\"4\">\n <div slField>\n <label slFieldLabel>Purchase price</label>\n <div slNumberField>\n <span slNumberFieldStart>$</span>\n <input\n slNumberFieldInput\n defaultValue=\"1480\"\n min=\"0\"\n [format]=\"{ minimumFractionDigits: 2 }\"\n />\n <span slNumberFieldEnd>USD</span>\n </div>\n </div>\n <div slField>\n <label slFieldLabel>Lead time</label>\n <div slNumberField>\n <input slNumberFieldInput defaultValue=\"14\" min=\"0\" max=\"120\" />\n <span slNumberFieldEnd>days</span>\n </div>\n </div>\n </div>\n `,\n})\nexport class NumberFieldAdornments {}\n",
|
|
537
|
+
"verdict": "example"
|
|
538
|
+
},
|
|
539
|
+
{
|
|
540
|
+
"id": "scrub",
|
|
541
|
+
"title": "Drag the mark to move the number",
|
|
542
|
+
"note": "The design tools’ gesture. Press the mark and drag sideways: two pixels per step, Shift for the large step, Alt for the small one. A right-to-left document steps up towards the left, the inline end.",
|
|
543
|
+
"language": "ts",
|
|
544
|
+
"source": "import { Component } from '@angular/core';\nimport { SlField, SlFieldLabel } from '@slotted/angular/field';\nimport { SlGrid } from '@slotted/angular/grid';\nimport {\n SlNumberField,\n SlNumberFieldEnd,\n SlNumberFieldInput,\n SlNumberFieldScrub,\n SlNumberFieldStart,\n} from '@slotted/angular/number-field';\n\n@Component({\n selector: 'app-number-field-scrub',\n imports: [\n SlField,\n SlFieldLabel,\n SlGrid,\n SlNumberField,\n SlNumberFieldEnd,\n SlNumberFieldInput,\n SlNumberFieldScrub,\n SlNumberFieldStart,\n ],\n template: `\n <div slGrid [columns]=\"2\" [gap]=\"4\">\n <div slField>\n <label slFieldLabel>Label width</label>\n <div slNumberField>\n <span slNumberFieldStart><span slNumberFieldScrub>W</span></span>\n <input slNumberFieldInput defaultValue=\"100\" min=\"20\" max=\"210\" />\n <span slNumberFieldEnd>mm</span>\n </div>\n </div>\n <div slField>\n <label slFieldLabel>Label height</label>\n <div slNumberField>\n <span slNumberFieldStart><span slNumberFieldScrub [sensitivity]=\"4\">H</span></span>\n <input slNumberFieldInput defaultValue=\"150\" min=\"20\" max=\"297\" />\n <span slNumberFieldEnd>mm</span>\n </div>\n </div>\n </div>\n `,\n})\nexport class NumberFieldScrubExample {}\n",
|
|
545
|
+
"verdict": "example"
|
|
546
|
+
},
|
|
547
|
+
{
|
|
548
|
+
"id": "states",
|
|
549
|
+
"title": "The states the frame paints",
|
|
550
|
+
"note": "Read-only keeps full-strength ink and softens its edge, because the value is real and still submitted; disabled is muted to a measured colour rather than faded, and both withdraw the steppers by disabling them rather than removing them.",
|
|
551
|
+
"language": "ts",
|
|
552
|
+
"source": "import { Component } from '@angular/core';\nimport { SlField, SlFieldDescription, SlFieldError, SlFieldLabel } from '@slotted/angular/field';\nimport { SlNumberField, SlNumberFieldInput } from '@slotted/angular/number-field';\nimport { SlStack } from '@slotted/angular/stack';\n\n@Component({\n selector: 'app-number-field-states',\n imports: [\n SlField,\n SlFieldDescription,\n SlFieldError,\n SlFieldLabel,\n SlNumberField,\n SlNumberFieldInput,\n SlStack,\n ],\n template: `\n <div slStack [gap]=\"5\">\n <div slField invalid>\n <label slFieldLabel>Quantity to ship</label>\n <div slNumberField><input slNumberFieldInput defaultValue=\"120\" min=\"1\" /></div>\n <span slFieldError>Only 39 units of Chai are in stock.</span>\n </div>\n <div slField readOnly>\n <label slFieldLabel>Units on order</label>\n <div slNumberField><input slNumberFieldInput defaultValue=\"40\" /></div>\n <span slFieldDescription>Counted from open purchase orders.</span>\n </div>\n <div slField disabled>\n <label slFieldLabel>Units reserved</label>\n <div slNumberField><input slNumberFieldInput defaultValue=\"12\" /></div>\n <span slFieldDescription>Released when the order ships.</span>\n </div>\n </div>\n `,\n})\nexport class NumberFieldStates {}\n",
|
|
553
|
+
"verdict": "example"
|
|
554
|
+
},
|
|
555
|
+
{
|
|
556
|
+
"id": "content",
|
|
557
|
+
"title": "Numbers the family did not choose",
|
|
558
|
+
"note": "A value longer than the control ellipsises rather than clipping mid-glyph; a negative keeps its sign in front of the digits in both directions; and at 240 pixels the value surrenders width while the steppers keep their target size.",
|
|
559
|
+
"language": "html",
|
|
560
|
+
"source": "<div slNumberField>\n <input slNumberFieldInput defaultValue=\"1480320559774.25\" locale=\"pt-BR\" />\n</div>\n\n<!-- The digits are tabular, so nothing shifts as they are typed over,\n and the minus stays in front of the amount in an Arabic document. -->\n<div slNumberField>\n <span slNumberFieldStart>R$</span>\n <input slNumberFieldInput defaultValue=\"-1480\" locale=\"pt-BR\" />\n</div>\n",
|
|
561
|
+
"verdict": "excerpt"
|
|
562
|
+
},
|
|
563
|
+
{
|
|
564
|
+
"id": "composition",
|
|
565
|
+
"title": "Setting it once, reaching past it, and putting it in a form",
|
|
566
|
+
"note": "ControlValueAccessor is the two-way binding the ecosystem expects; exportAs hands the template the directive, which carries increment(), decrement() and the native element; name submits the raw number through a hidden input.",
|
|
567
|
+
"language": "html",
|
|
568
|
+
"source": "<div slNumberField>\n <input slNumberFieldInput [formControl]=\"quantity\" min=\"1\" max=\"99\" />\n</div>\n\n<div slNumberField>\n <input slNumberFieldInput #campo=\"slNumberFieldInput\" defaultValue=\"3\" />\n</div>\n<button type=\"button\" (click)=\"campo.increment()\">Mais um</button>\n\n<!-- The hidden input carries 1480, never \"R$ 1.480,00\". -->\n<div slNumberField>\n <input\n slNumberFieldInput\n name=\"amount\"\n defaultValue=\"1480\"\n [format]=\"{ style: 'currency', currency: 'BRL' }\"\n />\n</div>\n",
|
|
569
|
+
"verdict": "excerpt"
|
|
570
|
+
},
|
|
571
|
+
{
|
|
572
|
+
"id": "keyboard",
|
|
573
|
+
"title": "What the keyboard does, and what it deliberately does not",
|
|
574
|
+
"note": "Arrows step, Shift and the page keys move by the large amount, Alt by the small one, Home and End reach the bounds. Tab never lands on a stepper: twenty amounts in a form would be forty extra stops.",
|
|
575
|
+
"language": "ts",
|
|
576
|
+
"source": "import { Component } from '@angular/core';\nimport { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';\nimport { SlNumberField, SlNumberFieldInput } from '@slotted/angular/number-field';\nimport { SlStack } from '@slotted/angular/stack';\n\n@Component({\n selector: 'app-number-field-keyboard',\n imports: [SlField, SlFieldDescription, SlFieldLabel, SlNumberField, SlNumberFieldInput, SlStack],\n template: `\n <div slStack [gap]=\"5\">\n <div slField>\n <label slFieldLabel>Shipping weight</label>\n <div slNumberField>\n <input\n slNumberFieldInput\n defaultValue=\"12.5\"\n min=\"0\"\n step=\"1\"\n largeStep=\"10\"\n smallStep=\"0.1\"\n [format]=\"{ maximumFractionDigits: 1, style: 'unit', unit: 'kilogram' }\"\n />\n </div>\n <span slFieldDescription>Arrows: 1 kg. Shift or Page keys: 10 kg. Alt: 0.1 kg.</span>\n </div>\n <div slField>\n <label slFieldLabel>Safety stock</label>\n <div slNumberField>\n <input slNumberFieldInput defaultValue=\"15\" min=\"0\" wheel />\n </div>\n <span slFieldDescription>With the field focused, the mouse wheel steps the value.</span>\n </div>\n </div>\n `,\n})\nexport class NumberFieldKeyboard {}\n",
|
|
577
|
+
"verdict": "example"
|
|
578
|
+
},
|
|
579
|
+
{
|
|
580
|
+
"id": "basic",
|
|
581
|
+
"title": "basic.ts",
|
|
582
|
+
"note": null,
|
|
583
|
+
"language": "ts",
|
|
584
|
+
"source": "import { Component } from '@angular/core';\nimport { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';\nimport { SlNumberField, SlNumberFieldEnd, SlNumberFieldInput } from '@slotted/angular/number-field';\n\n@Component({\n selector: 'app-number-field-basic',\n imports: [\n SlField,\n SlFieldDescription,\n SlFieldLabel,\n SlNumberField,\n SlNumberFieldEnd,\n SlNumberFieldInput,\n ],\n template: `\n <div slField required>\n <label slFieldLabel>Reorder point</label>\n <div slNumberField>\n <input slNumberFieldInput defaultValue=\"25\" min=\"0\" max=\"500\" step=\"5\" />\n <span slNumberFieldEnd>units</span>\n </div>\n <span slFieldDescription>Chai is reordered when stock falls to this level.</span>\n </div>\n `,\n})\nexport class NumberFieldBasic {}\n",
|
|
585
|
+
"verdict": "example"
|
|
586
|
+
},
|
|
587
|
+
{
|
|
588
|
+
"id": "clamp",
|
|
589
|
+
"title": "clamp.ts",
|
|
590
|
+
"note": null,
|
|
591
|
+
"language": "ts",
|
|
592
|
+
"source": "import { Component } from '@angular/core';\nimport { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';\nimport { SlNumberField, SlNumberFieldEnd, SlNumberFieldInput } from '@slotted/angular/number-field';\nimport { SlStack } from '@slotted/angular/stack';\n\n@Component({\n selector: 'app-number-field-clamp',\n imports: [\n SlField,\n SlFieldDescription,\n SlFieldLabel,\n SlNumberField,\n SlNumberFieldEnd,\n SlNumberFieldInput,\n SlStack,\n ],\n template: `\n <div slStack [gap]=\"5\">\n <div slField>\n <label slFieldLabel>Line discount</label>\n <div slNumberField>\n <input slNumberFieldInput clamp=\"blur\" defaultValue=\"10\" min=\"0\" max=\"25\" />\n <span slNumberFieldEnd>%</span>\n </div>\n <span slFieldDescription>Type 40 and leave the field: it returns to 25.</span>\n </div>\n <div slField>\n <label slFieldLabel>Order discount</label>\n <div slNumberField>\n <input slNumberFieldInput clamp=\"strict\" defaultValue=\"10\" min=\"0\" max=\"25\" />\n <span slNumberFieldEnd>%</span>\n </div>\n <span slFieldDescription>A keystroke that would pass 25 is refused.</span>\n </div>\n <div slField>\n <label slFieldLabel>Contract discount</label>\n <div slNumberField>\n <input slNumberFieldInput clamp=\"none\" defaultValue=\"10\" min=\"0\" max=\"25\" />\n <span slNumberFieldEnd>%</span>\n </div>\n <span slFieldDescription>40 stays, and the field is marked invalid.</span>\n </div>\n </div>\n `,\n})\nexport class NumberFieldClamp {}\n",
|
|
593
|
+
"verdict": "example"
|
|
594
|
+
},
|
|
595
|
+
{
|
|
596
|
+
"id": "controlled",
|
|
597
|
+
"title": "controlled.ts",
|
|
598
|
+
"note": null,
|
|
599
|
+
"language": "ts",
|
|
600
|
+
"source": "import { Component, computed, signal } from '@angular/core';\nimport { SlButton } from '@slotted/angular/button';\nimport { SlField, SlFieldLabel } from '@slotted/angular/field';\nimport { SlInline } from '@slotted/angular/inline';\nimport { SlNumberField, SlNumberFieldInput } from '@slotted/angular/number-field';\nimport { SlStack } from '@slotted/angular/stack';\n\nconst USD = new Intl.NumberFormat('en-US', { currency: 'USD', style: 'currency' });\n\n@Component({\n selector: 'app-number-field-controlled',\n imports: [SlButton, SlField, SlFieldLabel, SlInline, SlNumberField, SlNumberFieldInput, SlStack],\n template: `\n <div slStack [gap]=\"4\">\n <div slField>\n <label slFieldLabel>Credit limit for Ernst Handel</label>\n <div slNumberField>\n <input\n slNumberFieldInput\n min=\"0\"\n step=\"500\"\n stepFrom=\"5000\"\n [format]=\"{ currency: 'USD', style: 'currency' }\"\n [value]=\"limit()\"\n (valueChange)=\"limit.set($event.value)\"\n />\n </div>\n </div>\n <div slInline [gap]=\"3\" justify=\"between\">\n <span>{{ summary() }}</span>\n <button slButton variant=\"outline\" [disabled]=\"limit() === null\" (click)=\"limit.set(null)\">\n Remove limit\n </button>\n </div>\n </div>\n `,\n})\nexport class NumberFieldControlled {\n readonly limit = signal<number | null>(5000);\n readonly summary = computed(() => {\n const limit = this.limit();\n return limit === null ? 'No credit limit' : `Orders up to ${USD.format(limit)}`;\n });\n}\n",
|
|
601
|
+
"verdict": "example"
|
|
602
|
+
},
|
|
603
|
+
{
|
|
604
|
+
"id": "decimals",
|
|
605
|
+
"title": "decimals.ts",
|
|
606
|
+
"note": null,
|
|
607
|
+
"language": "ts",
|
|
608
|
+
"source": "import { Component } from '@angular/core';\nimport { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';\nimport { SlNumberField, SlNumberFieldInput } from '@slotted/angular/number-field';\nimport { SlStack } from '@slotted/angular/stack';\n\n@Component({\n selector: 'app-number-field-decimals',\n imports: [SlField, SlFieldDescription, SlFieldLabel, SlNumberField, SlNumberFieldInput, SlStack],\n template: `\n <div slStack [gap]=\"5\">\n <div slField>\n <label slFieldLabel>Exchange rate, EUR to USD</label>\n <div slNumberField>\n <input\n slNumberFieldInput\n defaultValue=\"1.0842\"\n min=\"0\"\n step=\"0.0001\"\n [format]=\"{ maximumFractionDigits: 4, minimumFractionDigits: 4 }\"\n />\n </div>\n <span slFieldDescription>Four decimals: 1.1 becomes 1.1000 on blur.</span>\n </div>\n <div slField>\n <label slFieldLabel>Cartons</label>\n <div slNumberField>\n <input\n slNumberFieldInput\n defaultValue=\"40\"\n min=\"0\"\n [format]=\"{ maximumFractionDigits: 0 }\"\n />\n </div>\n <span slFieldDescription>Whole cartons: the decimal separator is refused.</span>\n </div>\n </div>\n `,\n})\nexport class NumberFieldDecimals {}\n",
|
|
609
|
+
"verdict": "example"
|
|
610
|
+
},
|
|
611
|
+
{
|
|
612
|
+
"id": "defaults",
|
|
613
|
+
"title": "defaults.ts",
|
|
614
|
+
"note": null,
|
|
615
|
+
"language": "ts",
|
|
616
|
+
"source": "import { Component } from '@angular/core';\nimport { SlField, SlFieldLabel } from '@slotted/angular/field';\nimport { SlGrid } from '@slotted/angular/grid';\nimport {\n provideNumberFieldDefaults,\n SlNumberField,\n SlNumberFieldInput,\n} from '@slotted/angular/number-field';\n\n@Component({\n selector: 'app-number-field-defaults',\n imports: [SlField, SlFieldLabel, SlGrid, SlNumberField, SlNumberFieldInput],\n providers: [provideNumberFieldDefaults({ size: 'sm', stepper: 'split', variant: 'subtle' })],\n template: `\n <div slGrid [gap]=\"3\" minItemWidth=\"xs\">\n <div slField>\n <label slFieldLabel>Cases</label>\n <div slNumberField><input slNumberFieldInput defaultValue=\"6\" min=\"0\" /></div>\n </div>\n <div slField>\n <label slFieldLabel>Loose units</label>\n <div slNumberField><input slNumberFieldInput defaultValue=\"11\" min=\"0\" /></div>\n </div>\n <div slField>\n <label slFieldLabel>Pallets</label>\n <div slNumberField stepper=\"stacked\">\n <input slNumberFieldInput defaultValue=\"1\" min=\"0\" />\n </div>\n </div>\n </div>\n `,\n})\nexport class NumberFieldDefaults {}\n",
|
|
617
|
+
"verdict": "example"
|
|
618
|
+
},
|
|
619
|
+
{
|
|
620
|
+
"id": "format-on",
|
|
621
|
+
"title": "format-on.ts",
|
|
622
|
+
"note": null,
|
|
623
|
+
"language": "ts",
|
|
624
|
+
"source": "import { Component } from '@angular/core';\nimport { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';\nimport { SlNumberField, SlNumberFieldInput } from '@slotted/angular/number-field';\nimport { SlStack } from '@slotted/angular/stack';\n\n@Component({\n selector: 'app-number-field-format-on',\n imports: [SlField, SlFieldDescription, SlFieldLabel, SlNumberField, SlNumberFieldInput, SlStack],\n template: `\n <div slStack [gap]=\"5\">\n <div slField>\n <label slFieldLabel>Annual purchase budget</label>\n <div slNumberField>\n <input\n slNumberFieldInput\n formatOn=\"change\"\n min=\"0\"\n [format]=\"{ currency: 'USD', style: 'currency' }\"\n />\n </div>\n <span slFieldDescription>Type 1250000: the grouping appears with each digit.</span>\n </div>\n <div slField>\n <label slFieldLabel>Amount from bank statement</label>\n <div slNumberField>\n <input\n slNumberFieldInput\n formatOn=\"commit\"\n min=\"0\"\n [format]=\"{ currency: 'USD', style: 'currency' }\"\n />\n </div>\n <span slFieldDescription>Your text stays as typed until Enter or blur.</span>\n </div>\n </div>\n `,\n})\nexport class NumberFieldFormatOn {}\n",
|
|
625
|
+
"verdict": "example"
|
|
626
|
+
},
|
|
627
|
+
{
|
|
628
|
+
"id": "handle",
|
|
629
|
+
"title": "handle.ts",
|
|
630
|
+
"note": null,
|
|
631
|
+
"language": "ts",
|
|
632
|
+
"source": "import { Component } from '@angular/core';\nimport { SlButton } from '@slotted/angular/button';\nimport { SlField, SlFieldLabel } from '@slotted/angular/field';\nimport { SlInline } from '@slotted/angular/inline';\nimport { SlNumberField, SlNumberFieldInput } from '@slotted/angular/number-field';\nimport { SlStack } from '@slotted/angular/stack';\n\n@Component({\n selector: 'app-number-field-handle',\n imports: [SlButton, SlField, SlFieldLabel, SlInline, SlNumberField, SlNumberFieldInput, SlStack],\n template: `\n <div slStack [gap]=\"3\">\n <div slField>\n <label slFieldLabel>Cases of Chang</label>\n <div slNumberField>\n <input slNumberFieldInput #cases=\"slNumberFieldInput\" defaultValue=\"4\" min=\"0\" max=\"48\" />\n </div>\n </div>\n <div slInline [gap]=\"2\">\n <button slButton variant=\"outline\" (click)=\"cases.decrement()\">Remove a case</button>\n <button slButton variant=\"outline\" (click)=\"cases.increment()\">Add a case</button>\n </div>\n </div>\n `,\n})\nexport class NumberFieldHandleExample {}\n",
|
|
633
|
+
"verdict": "example"
|
|
634
|
+
},
|
|
635
|
+
{
|
|
636
|
+
"id": "order-line",
|
|
637
|
+
"title": "order-line.ts",
|
|
638
|
+
"note": null,
|
|
639
|
+
"language": "ts",
|
|
640
|
+
"source": "import { Component, computed, signal } from '@angular/core';\nimport { SlGrid } from '@slotted/angular/grid';\nimport { SlInline } from '@slotted/angular/inline';\nimport { SlNumberField, SlNumberFieldInput } from '@slotted/angular/number-field';\nimport { SlStack } from '@slotted/angular/stack';\nimport { SlText } from '@slotted/angular/typography';\n\nconst USD = new Intl.NumberFormat('en-US', { currency: 'USD', style: 'currency' });\n\nconst LINES = [\n { id: 'cabrales', product: 'Queso Cabrales', price: 14, stock: 22 },\n { id: 'hokkien', product: 'Singaporean Hokkien Fried Mee', price: 9.8, stock: 26 },\n { id: 'mozzarella', product: 'Mozzarella di Giovanni', price: 34.8, stock: 14 },\n];\n\n@Component({\n selector: 'app-number-field-order-line',\n imports: [SlGrid, SlInline, SlNumberField, SlNumberFieldInput, SlStack, SlText],\n template: `\n <div slStack [gap]=\"5\">\n <div slStack [gap]=\"4\">\n @for (line of lines; track line.id) {\n <div slGrid [columns]=\"3\" [gap]=\"4\" minItemWidth=\"xs\">\n <div slStack [gap]=\"1\">\n <span slText weight=\"medium\">{{ line.product }}</span>\n <span slText size=\"sm\" tone=\"muted\"\n >{{ usd(line.price) }} each · {{ line.stock }} in stock</span\n >\n </div>\n <div slStack justify=\"center\">\n <div slNumberField size=\"sm\" stepper=\"split\">\n <input\n slNumberFieldInput\n min=\"0\"\n [attr.aria-label]=\"'Quantity of ' + line.product\"\n [max]=\"line.stock\"\n [value]=\"quantities()[line.id] ?? null\"\n (valueChange)=\"set(line.id, $event.value)\"\n />\n </div>\n </div>\n <div slStack justify=\"center\">\n <span slText align=\"end\" numeric=\"tabular\">{{\n usd(line.price * (quantities()[line.id] ?? 0))\n }}</span>\n </div>\n </div>\n }\n </div>\n <div slInline [gap]=\"4\" justify=\"between\">\n <span slText weight=\"semibold\">Order total</span>\n <span slText numeric=\"tabular\" weight=\"semibold\">{{ usd(total()) }}</span>\n </div>\n </div>\n `,\n})\nexport class NumberFieldOrderLine {\n readonly lines = LINES;\n readonly quantities = signal<Record<string, number | null>>({\n cabrales: 12,\n hokkien: 10,\n mozzarella: 5,\n });\n readonly total = computed(() =>\n LINES.reduce((sum, line) => sum + line.price * (this.quantities()[line.id] ?? 0), 0),\n );\n\n usd(amount: number): string {\n return USD.format(amount);\n }\n\n set(id: string, value: number | null): void {\n this.quantities.update((current) => ({ ...current, [id]: value }));\n }\n}\n",
|
|
641
|
+
"verdict": "example"
|
|
642
|
+
},
|
|
643
|
+
{
|
|
644
|
+
"id": "price-editor",
|
|
645
|
+
"title": "price-editor.ts",
|
|
646
|
+
"note": null,
|
|
647
|
+
"language": "ts",
|
|
648
|
+
"source": "import { Component, computed, signal } from '@angular/core';\nimport { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';\nimport { SlGrid } from '@slotted/angular/grid';\nimport { SlNumberField, SlNumberFieldInput } from '@slotted/angular/number-field';\n\n@Component({\n selector: 'app-number-field-price-editor',\n imports: [SlField, SlFieldDescription, SlFieldLabel, SlGrid, SlNumberField, SlNumberFieldInput],\n template: `\n <div slGrid [gap]=\"4\" minItemWidth=\"xs\">\n <div slField required>\n <label slFieldLabel>Unit cost</label>\n <div slNumberField>\n <input\n slNumberFieldInput\n min=\"0\"\n step=\"0.5\"\n [format]=\"currency\"\n [value]=\"cost()\"\n (valueChange)=\"cost.set($event.value)\"\n />\n </div>\n </div>\n <div slField required>\n <label slFieldLabel>Markup</label>\n <div slNumberField>\n <input\n slNumberFieldInput\n min=\"0\"\n max=\"3\"\n step=\"0.01\"\n largeStep=\"0.1\"\n [format]=\"{ style: 'percent' }\"\n [value]=\"markup()\"\n (valueChange)=\"markup.set($event.value)\"\n />\n </div>\n </div>\n <div slField readOnly>\n <label slFieldLabel>List price</label>\n <div slNumberField stepper=\"none\">\n <input slNumberFieldInput [format]=\"currency\" [value]=\"price()\" />\n </div>\n <span slFieldDescription>Unit cost plus markup.</span>\n </div>\n </div>\n `,\n})\nexport class NumberFieldPriceEditor {\n readonly currency: Intl.NumberFormatOptions = { currency: 'USD', style: 'currency' };\n readonly cost = signal<number | null>(175);\n readonly markup = signal<number | null>(0.5);\n readonly price = computed(() => {\n const cost = this.cost();\n const markup = this.markup();\n return cost === null || markup === null ? null : Math.round(cost * (1 + markup) * 100) / 100;\n });\n}\n",
|
|
649
|
+
"verdict": "example"
|
|
650
|
+
},
|
|
651
|
+
{
|
|
652
|
+
"id": "steppers",
|
|
653
|
+
"title": "steppers.ts",
|
|
654
|
+
"note": null,
|
|
655
|
+
"language": "ts",
|
|
656
|
+
"source": "import { Component } from '@angular/core';\nimport { SlField, SlFieldLabel } from '@slotted/angular/field';\nimport { SlNumberField, SlNumberFieldInput } from '@slotted/angular/number-field';\nimport { SlStack } from '@slotted/angular/stack';\n\n@Component({\n selector: 'app-number-field-steppers',\n imports: [SlField, SlFieldLabel, SlNumberField, SlNumberFieldInput, SlStack],\n template: `\n <div slStack [gap]=\"4\">\n <div slField>\n <label slFieldLabel>Reorder quantity</label>\n <div slNumberField stepper=\"stacked\">\n <input slNumberFieldInput defaultValue=\"40\" min=\"0\" step=\"10\" />\n </div>\n </div>\n <div slField>\n <label slFieldLabel>Quantity</label>\n <div slNumberField stepper=\"split\">\n <input slNumberFieldInput defaultValue=\"3\" min=\"1\" max=\"99\" />\n </div>\n </div>\n <div slField>\n <label slFieldLabel>Units in stock</label>\n <div slNumberField stepper=\"none\">\n <input slNumberFieldInput defaultValue=\"39\" min=\"0\" />\n </div>\n </div>\n </div>\n `,\n})\nexport class NumberFieldSteppers {}\n",
|
|
657
|
+
"verdict": "example"
|
|
658
|
+
},
|
|
659
|
+
{
|
|
660
|
+
"id": "validation",
|
|
661
|
+
"title": "validation.ts",
|
|
662
|
+
"note": null,
|
|
663
|
+
"language": "ts",
|
|
664
|
+
"source": "import { Component, computed, signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { FormControl, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { SlButton } from '@slotted/angular/button';\nimport { SlField, SlFieldDescription, SlFieldError, SlFieldLabel } from '@slotted/angular/field';\nimport { SlInline } from '@slotted/angular/inline';\nimport { SlNumberField, SlNumberFieldInput } from '@slotted/angular/number-field';\nimport { SlStack } from '@slotted/angular/stack';\n\n@Component({\n selector: 'app-number-field-validation',\n imports: [\n ReactiveFormsModule,\n SlButton,\n SlField,\n SlFieldDescription,\n SlFieldError,\n SlFieldLabel,\n SlInline,\n SlNumberField,\n SlNumberFieldInput,\n SlStack,\n ],\n template: `\n <form novalidate (submit)=\"submit($event)\">\n <div slStack [gap]=\"4\">\n <div slField required [invalid]=\"error() !== '' ? true : undefined\">\n <label slFieldLabel>Units of Chai to ship</label>\n <div slNumberField>\n <input\n slNumberFieldInput\n name=\"quantity\"\n min=\"1\"\n max=\"39\"\n [formControl]=\"quantity\"\n (valueChange)=\"sent.set('')\"\n />\n </div>\n <span slFieldDescription>39 units in stock.</span>\n <span slFieldError live=\"polite\" reserve>{{ error() }}</span>\n </div>\n <div slInline [gap]=\"3\">\n <button slButton type=\"submit\">Create shipment</button>\n @if (sent() !== '') {\n <span role=\"status\">{{ sent() }}</span>\n }\n </div>\n </div>\n </form>\n `,\n})\nexport class NumberFieldValidation {\n readonly quantity = new FormControl<number | null>(null, Validators.required);\n readonly value = toSignal(this.quantity.valueChanges, { initialValue: this.quantity.value });\n readonly submitted = signal(false);\n readonly sent = signal('');\n readonly error = computed(() =>\n this.submitted() && this.value() === null ? 'Enter how many units to ship.' : '',\n );\n\n submit(event: Event): void {\n event.preventDefault();\n this.submitted.set(true);\n const data = new FormData(event.target as HTMLFormElement);\n this.sent.set(this.quantity.valid ? `Sent quantity=${String(data.get('quantity'))}` : '');\n }\n}\n",
|
|
665
|
+
"verdict": "example"
|
|
666
|
+
}
|
|
667
|
+
]
|
|
668
|
+
}
|