@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,330 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { InjectionToken, inject, Directive, HostAttributeToken, ElementRef, afterNextRender, input, booleanAttribute, output, contentChild, computed, linkedSignal, forwardRef, ViewEncapsulation, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
|
+
import { SlGlyph, SlIcon } from '@slotted/angular/icon';
|
|
4
|
+
import { toneFrom, initialsFrom } from '@slotted/core/identity';
|
|
5
|
+
|
|
6
|
+
const FALLBACK = {
|
|
7
|
+
locale: undefined,
|
|
8
|
+
shape: 'circle',
|
|
9
|
+
size: 'md',
|
|
10
|
+
tone: 'auto',
|
|
11
|
+
variant: 'soft',
|
|
12
|
+
};
|
|
13
|
+
const AVATAR_DEFAULTS = new InjectionToken('slotted avatar defaults', {
|
|
14
|
+
providedIn: 'root',
|
|
15
|
+
factory: () => FALLBACK,
|
|
16
|
+
});
|
|
17
|
+
/**
|
|
18
|
+
* An application decides once how its avatars are shaped, how large they are,
|
|
19
|
+
* how they are painted and — the one that matters most — which locale cases
|
|
20
|
+
* their initials, rather than repeating four inputs on every avatar. An avatar
|
|
21
|
+
* that states any of them itself still wins: an explicit input is never
|
|
22
|
+
* overridden by the token.
|
|
23
|
+
*
|
|
24
|
+
* `SlAvatarGroup` provides the same token rather than a channel of its own,
|
|
25
|
+
* which is what keeps a member's explicit `size` winning over the group's.
|
|
26
|
+
*/
|
|
27
|
+
function provideAvatarDefaults(defaults) {
|
|
28
|
+
return {
|
|
29
|
+
provide: AVATAR_DEFAULTS,
|
|
30
|
+
useFactory: () => ({
|
|
31
|
+
locale: defaults.locale ?? FALLBACK.locale,
|
|
32
|
+
shape: defaults.shape ?? FALLBACK.shape,
|
|
33
|
+
size: defaults.size ?? FALLBACK.size,
|
|
34
|
+
tone: defaults.tone ?? FALLBACK.tone,
|
|
35
|
+
variant: defaults.variant ?? FALLBACK.variant,
|
|
36
|
+
}),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/** What an avatar renders as here, before it states anything of its own. */
|
|
40
|
+
function injectAvatarDefaults() {
|
|
41
|
+
return inject(AVATAR_DEFAULTS);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Content that stands in for the picture, in place of the initials and the
|
|
46
|
+
* glyph: a company mark, a product logo, an `sl-icon`.
|
|
47
|
+
*
|
|
48
|
+
* It is a marker rather than a bare `<ng-content>` because Angular cannot ask
|
|
49
|
+
* whether anything was projected, and an avatar that wrote its initials
|
|
50
|
+
* *and* the consumer's logo into the same disc would be drawing two fallbacks.
|
|
51
|
+
* React answers the same question by looking at `children`.
|
|
52
|
+
*/
|
|
53
|
+
class SlAvatarFallback {
|
|
54
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlAvatarFallback, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
55
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlAvatarFallback, isStandalone: true, selector: "[slAvatarFallback]", exportAs: ["slAvatarFallback"], ngImport: i0 });
|
|
56
|
+
}
|
|
57
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlAvatarFallback, decorators: [{
|
|
58
|
+
type: Directive,
|
|
59
|
+
args: [{
|
|
60
|
+
selector: '[slAvatarFallback]',
|
|
61
|
+
standalone: true,
|
|
62
|
+
exportAs: 'slAvatarFallback',
|
|
63
|
+
}]
|
|
64
|
+
}] });
|
|
65
|
+
|
|
66
|
+
const AVATAR_IMAGE_HOST = new InjectionToken('slotted avatar image host');
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* The picture inside an avatar.
|
|
70
|
+
*
|
|
71
|
+
* It is written on an `<img>` the consumer owns, which is what lets
|
|
72
|
+
* `NgOptimizedImage` do its work: `ngSrc`, the priority hint, the generated
|
|
73
|
+
* `srcset` and the size warnings all belong to a real `<img>` in the
|
|
74
|
+
* consumer's template, and none of them survive being handed a `src` string
|
|
75
|
+
* through an input. React has no equivalent, and its `renderImage` is the other
|
|
76
|
+
* half of the same idea.
|
|
77
|
+
*
|
|
78
|
+
* `alt` is written empty only when the consumer wrote none: the avatar's name
|
|
79
|
+
* is on the root, so naming the picture as well would read the person twice —
|
|
80
|
+
* and would name them differently before the picture arrives.
|
|
81
|
+
*/
|
|
82
|
+
class SlAvatarImage {
|
|
83
|
+
avatar = inject(AVATAR_IMAGE_HOST);
|
|
84
|
+
/** A static `alt` the consumer wrote is read before the host binding writes one. */
|
|
85
|
+
alt = inject(new HostAttributeToken('alt'), { optional: true }) ?? '';
|
|
86
|
+
element = inject(ElementRef).nativeElement;
|
|
87
|
+
constructor() {
|
|
88
|
+
/**
|
|
89
|
+
* A picture already in the browser cache finishes decoding before the
|
|
90
|
+
* listener is attached, so the element is asked whether it is already
|
|
91
|
+
* complete rather than waited on for an event that has been and gone.
|
|
92
|
+
* Without it an avatar shows initials over a picture that is already there.
|
|
93
|
+
*/
|
|
94
|
+
afterNextRender(() => {
|
|
95
|
+
if (this.element.complete && this.element.naturalWidth > 0) {
|
|
96
|
+
this.avatar.reportStatus('loaded');
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlAvatarImage, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
101
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlAvatarImage, isStandalone: true, selector: "img[slAvatarImage]", host: { attributes: { "data-part": "image" }, listeners: { "load": "avatar.reportStatus(\"loaded\")", "error": "avatar.reportStatus(\"error\")" }, properties: { "attr.alt": "alt" } }, exportAs: ["slAvatarImage"], ngImport: i0 });
|
|
102
|
+
}
|
|
103
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlAvatarImage, decorators: [{
|
|
104
|
+
type: Directive,
|
|
105
|
+
args: [{
|
|
106
|
+
selector: 'img[slAvatarImage]',
|
|
107
|
+
standalone: true,
|
|
108
|
+
exportAs: 'slAvatarImage',
|
|
109
|
+
host: {
|
|
110
|
+
'data-part': 'image',
|
|
111
|
+
'[attr.alt]': 'alt',
|
|
112
|
+
'(load)': 'avatar.reportStatus("loaded")',
|
|
113
|
+
'(error)': 'avatar.reportStatus("error")',
|
|
114
|
+
},
|
|
115
|
+
}]
|
|
116
|
+
}], ctorParameters: () => [] });
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* The palette `tone="auto"` chooses from, in the order the hash indexes it.
|
|
120
|
+
* Five is a small palette and collisions are frequent by construction: the
|
|
121
|
+
* colour is an aid to scanning a list of faces, and the name is what identifies
|
|
122
|
+
* the person — which is why it is on the root in every one of the four
|
|
123
|
+
* statuses.
|
|
124
|
+
*/
|
|
125
|
+
const AUTO_TONES = [
|
|
126
|
+
'accent',
|
|
127
|
+
'secondary',
|
|
128
|
+
'success',
|
|
129
|
+
'warning',
|
|
130
|
+
'danger',
|
|
131
|
+
];
|
|
132
|
+
/** At the smallest step there is room for one letter, which is Fluent's rule at 16 pixels. */
|
|
133
|
+
const INITIALS_MAX = { xs: 1, sm: 2, md: 2, lg: 2, xl: 2 };
|
|
134
|
+
/**
|
|
135
|
+
* A picture of a person or an entity, and what stands in when there is none:
|
|
136
|
+
* the initials taken from the name, then a glyph the family owns. A request
|
|
137
|
+
* that fails never paints the browser's torn-page mark, because the picture is
|
|
138
|
+
* out of sight until it reports that it arrived.
|
|
139
|
+
*
|
|
140
|
+
* The component is written on the element the page chose, so a `span` in a
|
|
141
|
+
* table cell, an `a` that opens a profile and a `button` that opens a menu are
|
|
142
|
+
* all the same avatar.
|
|
143
|
+
*
|
|
144
|
+
* The name lives on the root and the picture takes an empty `alt`, so the
|
|
145
|
+
* avatar announces the same thing before and after the photograph loads. Every
|
|
146
|
+
* surveyed implementation names the image instead, which makes the same avatar
|
|
147
|
+
* “Ada Lovelace” once the picture arrives and “AL” before it.
|
|
148
|
+
*
|
|
149
|
+
* `status` is an input with an output beside it rather than a `model()`. A
|
|
150
|
+
* `model()` promises a two-way binding for a value the browser owns: the
|
|
151
|
+
* component would write over whatever the consumer passed the first time an
|
|
152
|
+
* image loaded. Here the consumer's value simply wins, and the output reports
|
|
153
|
+
* the derivation — a load event is a fact rather than a request, so there is
|
|
154
|
+
* nothing to cancel and no reason from the closed vocabulary that fits it.
|
|
155
|
+
*/
|
|
156
|
+
class SlAvatar {
|
|
157
|
+
/**
|
|
158
|
+
* The person or entity this is a picture of. It is the accessible name in
|
|
159
|
+
* every status, the source of the initials, and the seed of the colour.
|
|
160
|
+
*/
|
|
161
|
+
name = input(undefined, /* @ts-ignore */
|
|
162
|
+
...(ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []));
|
|
163
|
+
/** The picture. Absent, the avatar is its fallback and nothing is requested. */
|
|
164
|
+
src = input(undefined, /* @ts-ignore */
|
|
165
|
+
...(ngDevMode ? [{ debugName: "src" }] : /* istanbul ignore next */ []));
|
|
166
|
+
/**
|
|
167
|
+
* The letters to draw, in place of the ones derived from the name. Two
|
|
168
|
+
* graphemes at most is what the box holds; `xs` draws one.
|
|
169
|
+
*/
|
|
170
|
+
initialsOverride = input(undefined, { ...(ngDevMode ? { debugName: "initialsOverride" } : /* istanbul ignore next */ {}), alias: 'initials' });
|
|
171
|
+
/**
|
|
172
|
+
* A stable identifier to derive the colour from, when the name is not stable
|
|
173
|
+
* or two people share one. Defaults to `name`.
|
|
174
|
+
*/
|
|
175
|
+
idFor = input(undefined, /* @ts-ignore */
|
|
176
|
+
...(ngDevMode ? [{ debugName: "idFor" }] : /* istanbul ignore next */ []));
|
|
177
|
+
/** BCP 47, for the case of the initials. Defaults to the provider, then to the runtime. */
|
|
178
|
+
locale = input(undefined, /* @ts-ignore */
|
|
179
|
+
...(ngDevMode ? [{ debugName: "locale" }] : /* istanbul ignore next */ []));
|
|
180
|
+
/** Defaults to the provider, then to `md`. */
|
|
181
|
+
size = input(undefined, /* @ts-ignore */
|
|
182
|
+
...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
|
|
183
|
+
/** Defaults to the provider, then to `circle`. */
|
|
184
|
+
shape = input(undefined, /* @ts-ignore */
|
|
185
|
+
...(ngDevMode ? [{ debugName: "shape" }] : /* istanbul ignore next */ []));
|
|
186
|
+
/** Defaults to the provider, then to `auto`, which derives it from the name. */
|
|
187
|
+
tone = input(undefined, /* @ts-ignore */
|
|
188
|
+
...(ngDevMode ? [{ debugName: "tone" }] : /* istanbul ignore next */ []));
|
|
189
|
+
/** Defaults to the provider, then to `soft`. */
|
|
190
|
+
variant = input(undefined, /* @ts-ignore */
|
|
191
|
+
...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
|
|
192
|
+
/** A deactivated account, or an avatar inside a control the page has turned off. */
|
|
193
|
+
disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
194
|
+
/**
|
|
195
|
+
* Takes the avatar out of the accessibility tree. For an avatar beside the
|
|
196
|
+
* name it belongs to, where announcing it would read the person twice.
|
|
197
|
+
*/
|
|
198
|
+
decorative = input(false, { ...(ngDevMode ? { debugName: "decorative" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
199
|
+
/**
|
|
200
|
+
* Where the picture is. Supplied, it wins over what the component derives
|
|
201
|
+
* from the element — for a server that already knows, or a loader the family
|
|
202
|
+
* cannot see.
|
|
203
|
+
*/
|
|
204
|
+
status = input(undefined, /* @ts-ignore */
|
|
205
|
+
...(ngDevMode ? [{ debugName: "status" }] : /* istanbul ignore next */ []));
|
|
206
|
+
/** Reports the derived status. Never emits for a status passed in. */
|
|
207
|
+
statusChange = output();
|
|
208
|
+
defaults = injectAvatarDefaults();
|
|
209
|
+
/** An explicit role the consumer wrote is never replaced by an inferred one. */
|
|
210
|
+
writtenRole = inject(new HostAttributeToken('role'), { optional: true });
|
|
211
|
+
custom = contentChild(SlAvatarFallback, /* @ts-ignore */
|
|
212
|
+
...(ngDevMode ? [{ debugName: "custom" }] : /* istanbul ignore next */ []));
|
|
213
|
+
projected = contentChild(SlAvatarImage, /* @ts-ignore */
|
|
214
|
+
...(ngDevMode ? [{ debugName: "projected" }] : /* istanbul ignore next */ []));
|
|
215
|
+
resolvedSize = computed(() => this.size() ?? this.defaults.size, /* @ts-ignore */
|
|
216
|
+
...(ngDevMode ? [{ debugName: "resolvedSize" }] : /* istanbul ignore next */ []));
|
|
217
|
+
resolvedShape = computed(() => this.shape() ?? this.defaults.shape, /* @ts-ignore */
|
|
218
|
+
...(ngDevMode ? [{ debugName: "resolvedShape" }] : /* istanbul ignore next */ []));
|
|
219
|
+
resolvedVariant = computed(() => this.variant() ?? this.defaults.variant, /* @ts-ignore */
|
|
220
|
+
...(ngDevMode ? [{ debugName: "resolvedVariant" }] : /* istanbul ignore next */ []));
|
|
221
|
+
resolvedLocale = computed(() => this.locale() ?? this.defaults.locale, /* @ts-ignore */
|
|
222
|
+
...(ngDevMode ? [{ debugName: "resolvedLocale" }] : /* istanbul ignore next */ []));
|
|
223
|
+
/**
|
|
224
|
+
* The derivation, and the picture it belongs to. A new request makes the
|
|
225
|
+
* previous answer describe nothing, so the status starts again from what the
|
|
226
|
+
* props alone can say — which is also what a server render and the hydration
|
|
227
|
+
* after it both compute, so nothing flashes between them.
|
|
228
|
+
*/
|
|
229
|
+
derived = linkedSignal({ ...(ngDevMode ? { debugName: "derived" } : /* istanbul ignore next */ {}), source: () => `${this.src() ?? ''}|${this.projected() === undefined ? '' : 'projected'}`,
|
|
230
|
+
computation: (request) => (request === '|' ? 'idle' : 'loading') });
|
|
231
|
+
resolvedStatus = computed(() => this.status() ?? this.derived(), /* @ts-ignore */
|
|
232
|
+
...(ngDevMode ? [{ debugName: "resolvedStatus" }] : /* istanbul ignore next */ []));
|
|
233
|
+
resolvedTone = computed(() => {
|
|
234
|
+
const tone = this.tone() ?? this.defaults.tone;
|
|
235
|
+
if (tone !== 'auto')
|
|
236
|
+
return tone;
|
|
237
|
+
return toneFrom({ seed: this.idFor() ?? this.name(), tones: AUTO_TONES }) ?? 'secondary';
|
|
238
|
+
}, /* @ts-ignore */
|
|
239
|
+
...(ngDevMode ? [{ debugName: "resolvedTone" }] : /* istanbul ignore next */ []));
|
|
240
|
+
initials = computed(() => this.initialsOverride() ??
|
|
241
|
+
initialsFrom({
|
|
242
|
+
name: this.name(),
|
|
243
|
+
max: INITIALS_MAX[this.resolvedSize()],
|
|
244
|
+
locale: this.resolvedLocale(),
|
|
245
|
+
}), /* @ts-ignore */
|
|
246
|
+
...(ngDevMode ? [{ debugName: "initials" }] : /* istanbul ignore next */ []));
|
|
247
|
+
/**
|
|
248
|
+
* The W3C `alt` decision tree, in this library's vocabulary and with the rule
|
|
249
|
+
* `icon` already took: a name present decides `role="img"`, an absent one
|
|
250
|
+
* decides `aria-hidden`. `decorative` is the third case — a name that is
|
|
251
|
+
* written beside the avatar, where announcing it reads the person twice.
|
|
252
|
+
*/
|
|
253
|
+
silent = computed(() => {
|
|
254
|
+
const name = this.name();
|
|
255
|
+
return this.decorative() || name === undefined || name.trim() === '';
|
|
256
|
+
}, /* @ts-ignore */
|
|
257
|
+
...(ngDevMode ? [{ debugName: "silent" }] : /* istanbul ignore next */ []));
|
|
258
|
+
role = computed(() => this.writtenRole ?? (this.silent() ? null : 'img'), /* @ts-ignore */
|
|
259
|
+
...(ngDevMode ? [{ debugName: "role" }] : /* istanbul ignore next */ []));
|
|
260
|
+
ariaLabel = computed(() => (this.silent() ? null : (this.name() ?? null)), /* @ts-ignore */
|
|
261
|
+
...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
|
|
262
|
+
ariaHidden = computed(() => (this.silent() ? 'true' : null), /* @ts-ignore */
|
|
263
|
+
...(ngDevMode ? [{ debugName: "ariaHidden" }] : /* istanbul ignore next */ []));
|
|
264
|
+
/** Called by the picture, whichever of the two elements it turned out to be. */
|
|
265
|
+
reportStatus(status) {
|
|
266
|
+
this.derived.set(status);
|
|
267
|
+
this.statusChange.emit(status);
|
|
268
|
+
}
|
|
269
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlAvatar, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
270
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: SlAvatar, isStandalone: true, selector: "[slAvatar]", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, src: { classPropertyName: "src", publicName: "src", isSignal: true, isRequired: false, transformFunction: null }, initialsOverride: { classPropertyName: "initialsOverride", publicName: "initials", isSignal: true, isRequired: false, transformFunction: null }, idFor: { classPropertyName: "idFor", publicName: "idFor", isSignal: true, isRequired: false, transformFunction: null }, locale: { classPropertyName: "locale", publicName: "locale", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, shape: { classPropertyName: "shape", publicName: "shape", isSignal: true, isRequired: false, transformFunction: null }, tone: { classPropertyName: "tone", publicName: "tone", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, decorative: { classPropertyName: "decorative", publicName: "decorative", isSignal: true, isRequired: false, transformFunction: null }, status: { classPropertyName: "status", publicName: "status", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { statusChange: "statusChange" }, host: { attributes: { "data-ui": "avatar", "data-part": "root" }, properties: { "attr.data-size": "resolvedSize()", "attr.data-shape": "resolvedShape()", "attr.data-tone": "resolvedTone()", "attr.data-variant": "resolvedVariant()", "attr.data-status": "resolvedStatus()", "attr.data-disabled": "disabled() ? '' : null", "attr.role": "role()", "attr.aria-label": "ariaLabel()", "attr.aria-hidden": "ariaHidden()" } }, providers: [
|
|
271
|
+
/* The component is its own image host, and a decorator is evaluated before
|
|
272
|
+
the class it decorates exists. */
|
|
273
|
+
{ provide: AVATAR_IMAGE_HOST, useExisting: forwardRef(() => SlAvatar) },
|
|
274
|
+
], queries: [{ propertyName: "custom", first: true, predicate: SlAvatarFallback, descendants: true, isSignal: true }, { propertyName: "projected", first: true, predicate: SlAvatarImage, descendants: true, isSignal: true }], exportAs: ["slAvatar"], ngImport: i0, template: `@if (src(); as source) {
|
|
275
|
+
<img slAvatarImage [src]="source" />
|
|
276
|
+
}
|
|
277
|
+
<ng-content select="img"></ng-content
|
|
278
|
+
><span data-part="fallback">
|
|
279
|
+
@if (custom() === undefined) {
|
|
280
|
+
<!-- No picture and no name to take initials from: the person glyph. -->
|
|
281
|
+
@if (initials() === '') {
|
|
282
|
+
<span slIcon><svg slGlyph name="person"></svg></span>
|
|
283
|
+
} @else {
|
|
284
|
+
{{ initials() }}
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
<ng-content select="[slAvatarFallback]"></ng-content
|
|
288
|
+
></span>`, isInline: true, styles: ["@layer slotted.components{[data-ui=avatar][data-part=root]{--_solid: var(--slotted-tone-secondary-solid-hover);--_on-solid: var(--slotted-tone-secondary-on-solid);--_surface: var(--slotted-tone-secondary-surface);--_border: var(--slotted-tone-secondary-border);--_text: var(--slotted-tone-secondary-text);--_size: var(--slotted-avatar-size, var(--slotted-avatar-size-md, 36px));--_initials-size: var(--slotted-avatar-initials-size, calc(var(--_size) * .4));--_glyph-size: var(--slotted-avatar-glyph-size, calc(var(--_size) * .68));--_radius: var(--slotted-radius-full, 9999px);--_edge-width: var(--slotted-avatar-border-width, var(--slotted-border-width-thin, 1px));--_edge: var(--_border);--_solid-edge: var(--_border);--_ring-width: var(--slotted-avatar-ring-width, 0);--_ring-color: var(--slotted-avatar-ring-color, var(--slotted-surface, Canvas));--_elevation: var(--slotted-avatar-elevation, 0 0 transparent);align-items:center;appearance:none;block-size:var(--_size);border-color:var(--_edge);border-radius:var(--_radius);border-style:solid;border-width:var(--_edge-width);box-shadow:0 0 0 var(--_ring-width) var(--_ring-color),var(--_elevation);box-sizing:border-box;display:inline-flex;flex:none;font-family:var(--slotted-avatar-font-family, var(--slotted-control-font-family, sans-serif));font-size:var(--_initials-size);font-weight:var(--slotted-avatar-font-weight, var(--slotted-font-weight-medium, 500));inline-size:var(--_size);justify-content:center;line-height:1;padding:0;isolation:isolate;position:relative;text-decoration:none;transition:border-color var(--slotted-duration-short) var(--slotted-easing-standard),background-color var(--slotted-duration-short) var(--slotted-easing-standard),box-shadow var(--slotted-duration-short) var(--slotted-easing-standard),transform var(--slotted-duration-short) var(--slotted-easing-standard);-webkit-user-select:none;user-select:none;vertical-align:middle}[data-ui=avatar][data-part=root][data-tone=accent]{--_solid: var(--slotted-tone-accent-solid);--_solid-edge: var(--slotted-tone-accent-solid);--_on-solid: var(--slotted-tone-accent-on-solid);--_surface: var(--slotted-tone-accent-surface);--_border: var(--slotted-tone-accent-border);--_text: var(--slotted-tone-accent-text)}[data-ui=avatar][data-part=root][data-tone=success]{--_solid: var(--slotted-tone-success-solid);--_solid-edge: var(--slotted-tone-success-solid);--_on-solid: var(--slotted-tone-success-on-solid);--_surface: var(--slotted-tone-success-surface);--_border: var(--slotted-tone-success-border);--_text: var(--slotted-tone-success-text)}[data-ui=avatar][data-part=root][data-tone=warning]{--_solid: var(--slotted-tone-warning-solid);--_solid-edge: var(--slotted-tone-warning-solid);--_on-solid: var(--slotted-tone-warning-on-solid);--_surface: var(--slotted-tone-warning-surface);--_border: var(--slotted-tone-warning-border);--_text: var(--slotted-tone-warning-text)}[data-ui=avatar][data-part=root][data-tone=danger]{--_solid: var(--slotted-tone-danger-solid);--_solid-edge: var(--slotted-tone-danger-solid);--_on-solid: var(--slotted-tone-danger-on-solid);--_surface: var(--slotted-tone-danger-surface);--_border: var(--slotted-tone-danger-border);--_text: var(--slotted-tone-danger-text)}[data-ui=avatar][data-part=root][data-variant=soft]{--_ground: var(--_surface, ButtonFace);background-color:var(--_ground);color:var(--_text, ButtonText)}[data-ui=avatar][data-part=root][data-variant=solid]{--_edge: var(--_solid-edge);--_ground: var(--_solid, ButtonFace);background-color:var(--_ground);color:var(--_on-solid, ButtonText)}[data-ui=avatar][data-part=root][data-shape=square]{--_radius: var(--slotted-avatar-radius, round(nearest, calc(var(--_size) / 6), 1px))}[data-ui=avatar][data-part=root][data-size=xs]{--slotted-avatar-size: var(--slotted-avatar-size-xs, 24px)}[data-ui=avatar][data-part=root][data-size=sm]{--slotted-avatar-size: var(--slotted-avatar-size-sm, 28px)}[data-ui=avatar][data-part=root][data-size=md]{--slotted-avatar-size: var(--slotted-avatar-size-md, 36px)}[data-ui=avatar][data-part=root][data-size=lg]{--slotted-avatar-size: var(--slotted-avatar-size-lg, 48px)}[data-ui=avatar][data-part=root][data-size=xl]{--slotted-avatar-size: var(--slotted-avatar-size-xl, 64px)}[data-ui=avatar] [data-part=image]{block-size:100%;border-radius:inherit;inline-size:100%;inset:0;object-fit:cover;opacity:0;position:absolute;transition:opacity var(--slotted-duration-short) var(--slotted-easing-exit)}[data-ui=avatar][data-status=loaded] [data-part=image]{opacity:1;transition-timing-function:var(--slotted-easing-enter)}[data-ui=avatar] [data-part=fallback]{--slotted-icon-size: var(--_glyph-size);align-items:center;block-size:100%;border-radius:inherit;display:flex;inline-size:100%;justify-content:center;overflow:hidden;transition:opacity var(--slotted-duration-short) var(--slotted-easing-enter)}[data-ui=avatar][data-status=loaded] [data-part=fallback]{opacity:0;transition-timing-function:var(--slotted-easing-exit)}@supports (text-box: trim-both cap alphabetic){[data-ui=avatar] [data-part=fallback]:not(:has(>*)){align-content:center;display:block;text-align:center;text-box:trim-both cap alphabetic}}[data-ui=avatar][data-part=root][data-status=loaded]{--_edge: var(--slotted-border-subtle, ButtonBorder)}[data-ui=avatar][data-part=root][data-disabled]{--_solid: var(--slotted-disabled-background, Canvas);--_on-solid: var(--slotted-disabled-foreground, GrayText);--_surface: var(--slotted-disabled-background, Canvas);--_text: var(--slotted-disabled-foreground, GrayText);--_edge: var(--slotted-disabled-border, GrayText)}[data-ui=avatar][data-part=root][data-disabled] [data-part=image]{filter:var(--slotted-avatar-disabled-image-filter, grayscale(1) opacity(.5))}[data-ui=avatar][data-part=root]:any-link,button[data-ui=avatar][data-part=root],[data-ui=avatar][data-part=root][tabindex]{cursor:pointer;overflow:clip;overflow-clip-margin:var(--slotted-target-min, 24px)}[data-ui=avatar][data-part=root]:any-link:not([data-disabled]):hover,button[data-ui=avatar][data-part=root]:not([data-disabled]):hover,[data-ui=avatar][data-part=root][tabindex]:not([data-disabled]):hover{background-color:color-mix(in oklab,var(--_ground),currentColor var(--slotted-avatar-state-layer-hover, 8%))}[data-ui=avatar][data-part=root]:any-link:not([data-disabled]):active,button[data-ui=avatar][data-part=root]:not([data-disabled]):active,[data-ui=avatar][data-part=root][tabindex]:not([data-disabled]):active{background-color:color-mix(in oklab,var(--_ground),currentColor var(--slotted-avatar-state-layer-active, 14%))}[data-ui=avatar][data-status=loaded]:any-link:not([data-disabled]):hover,button[data-ui=avatar][data-status=loaded]:not([data-disabled]):hover,[data-ui=avatar][data-status=loaded][tabindex]:not([data-disabled]):hover{--_edge: var(--slotted-border-strong, CanvasText);--slotted-avatar-ring-width: var(--slotted-border-width-thin, 1px);--slotted-avatar-ring-color: var(--slotted-border-strong, CanvasText)}[data-ui=avatar][data-status=loaded]:any-link:not([data-disabled]):active,button[data-ui=avatar][data-status=loaded]:not([data-disabled]):active,[data-ui=avatar][data-status=loaded][tabindex]:not([data-disabled]):active{--slotted-avatar-ring-width: var(--slotted-border-width-thick, 2px)}[data-ui=avatar][data-part=root]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-focus-ring-offset, 2px)}[data-ui=avatar][data-part=root]:any-link:after,button[data-ui=avatar][data-part=root]:after,[data-ui=avatar][data-part=root][tabindex]:after{content:\"\";inset:min(0px,calc((100% - var(--slotted-target-min, 24px)) / 2));position:absolute}@media(forced-colors:active){[data-ui=avatar][data-part=root]{--_edge: currentColor}}}\n"], dependencies: [{ kind: "directive", type: SlAvatarImage, selector: "img[slAvatarImage]", exportAs: ["slAvatarImage"] }, { kind: "component", type: SlGlyph, selector: "svg[slGlyph]", inputs: ["name", "solid"] }, { kind: "component", type: SlIcon, selector: "[slIcon]", inputs: ["directional", "label", "size", "tone"], exportAs: ["slIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
289
|
+
}
|
|
290
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlAvatar, decorators: [{
|
|
291
|
+
type: Component,
|
|
292
|
+
args: [{ selector: '[slAvatar]', standalone: true, exportAs: 'slAvatar', imports: [SlAvatarImage, SlGlyph, SlIcon], providers: [
|
|
293
|
+
/* The component is its own image host, and a decorator is evaluated before
|
|
294
|
+
the class it decorates exists. */
|
|
295
|
+
{ provide: AVATAR_IMAGE_HOST, useExisting: forwardRef(() => SlAvatar) },
|
|
296
|
+
], template: `@if (src(); as source) {
|
|
297
|
+
<img slAvatarImage [src]="source" />
|
|
298
|
+
}
|
|
299
|
+
<ng-content select="img"></ng-content
|
|
300
|
+
><span data-part="fallback">
|
|
301
|
+
@if (custom() === undefined) {
|
|
302
|
+
<!-- No picture and no name to take initials from: the person glyph. -->
|
|
303
|
+
@if (initials() === '') {
|
|
304
|
+
<span slIcon><svg slGlyph name="person"></svg></span>
|
|
305
|
+
} @else {
|
|
306
|
+
{{ initials() }}
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
<ng-content select="[slAvatarFallback]"></ng-content
|
|
310
|
+
></span>`, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
311
|
+
'data-ui': 'avatar',
|
|
312
|
+
'data-part': 'root',
|
|
313
|
+
'[attr.data-size]': 'resolvedSize()',
|
|
314
|
+
'[attr.data-shape]': 'resolvedShape()',
|
|
315
|
+
'[attr.data-tone]': 'resolvedTone()',
|
|
316
|
+
'[attr.data-variant]': 'resolvedVariant()',
|
|
317
|
+
'[attr.data-status]': 'resolvedStatus()',
|
|
318
|
+
'[attr.data-disabled]': "disabled() ? '' : null",
|
|
319
|
+
'[attr.role]': 'role()',
|
|
320
|
+
'[attr.aria-label]': 'ariaLabel()',
|
|
321
|
+
'[attr.aria-hidden]': 'ariaHidden()',
|
|
322
|
+
}, styles: ["@layer slotted.components{[data-ui=avatar][data-part=root]{--_solid: var(--slotted-tone-secondary-solid-hover);--_on-solid: var(--slotted-tone-secondary-on-solid);--_surface: var(--slotted-tone-secondary-surface);--_border: var(--slotted-tone-secondary-border);--_text: var(--slotted-tone-secondary-text);--_size: var(--slotted-avatar-size, var(--slotted-avatar-size-md, 36px));--_initials-size: var(--slotted-avatar-initials-size, calc(var(--_size) * .4));--_glyph-size: var(--slotted-avatar-glyph-size, calc(var(--_size) * .68));--_radius: var(--slotted-radius-full, 9999px);--_edge-width: var(--slotted-avatar-border-width, var(--slotted-border-width-thin, 1px));--_edge: var(--_border);--_solid-edge: var(--_border);--_ring-width: var(--slotted-avatar-ring-width, 0);--_ring-color: var(--slotted-avatar-ring-color, var(--slotted-surface, Canvas));--_elevation: var(--slotted-avatar-elevation, 0 0 transparent);align-items:center;appearance:none;block-size:var(--_size);border-color:var(--_edge);border-radius:var(--_radius);border-style:solid;border-width:var(--_edge-width);box-shadow:0 0 0 var(--_ring-width) var(--_ring-color),var(--_elevation);box-sizing:border-box;display:inline-flex;flex:none;font-family:var(--slotted-avatar-font-family, var(--slotted-control-font-family, sans-serif));font-size:var(--_initials-size);font-weight:var(--slotted-avatar-font-weight, var(--slotted-font-weight-medium, 500));inline-size:var(--_size);justify-content:center;line-height:1;padding:0;isolation:isolate;position:relative;text-decoration:none;transition:border-color var(--slotted-duration-short) var(--slotted-easing-standard),background-color var(--slotted-duration-short) var(--slotted-easing-standard),box-shadow var(--slotted-duration-short) var(--slotted-easing-standard),transform var(--slotted-duration-short) var(--slotted-easing-standard);-webkit-user-select:none;user-select:none;vertical-align:middle}[data-ui=avatar][data-part=root][data-tone=accent]{--_solid: var(--slotted-tone-accent-solid);--_solid-edge: var(--slotted-tone-accent-solid);--_on-solid: var(--slotted-tone-accent-on-solid);--_surface: var(--slotted-tone-accent-surface);--_border: var(--slotted-tone-accent-border);--_text: var(--slotted-tone-accent-text)}[data-ui=avatar][data-part=root][data-tone=success]{--_solid: var(--slotted-tone-success-solid);--_solid-edge: var(--slotted-tone-success-solid);--_on-solid: var(--slotted-tone-success-on-solid);--_surface: var(--slotted-tone-success-surface);--_border: var(--slotted-tone-success-border);--_text: var(--slotted-tone-success-text)}[data-ui=avatar][data-part=root][data-tone=warning]{--_solid: var(--slotted-tone-warning-solid);--_solid-edge: var(--slotted-tone-warning-solid);--_on-solid: var(--slotted-tone-warning-on-solid);--_surface: var(--slotted-tone-warning-surface);--_border: var(--slotted-tone-warning-border);--_text: var(--slotted-tone-warning-text)}[data-ui=avatar][data-part=root][data-tone=danger]{--_solid: var(--slotted-tone-danger-solid);--_solid-edge: var(--slotted-tone-danger-solid);--_on-solid: var(--slotted-tone-danger-on-solid);--_surface: var(--slotted-tone-danger-surface);--_border: var(--slotted-tone-danger-border);--_text: var(--slotted-tone-danger-text)}[data-ui=avatar][data-part=root][data-variant=soft]{--_ground: var(--_surface, ButtonFace);background-color:var(--_ground);color:var(--_text, ButtonText)}[data-ui=avatar][data-part=root][data-variant=solid]{--_edge: var(--_solid-edge);--_ground: var(--_solid, ButtonFace);background-color:var(--_ground);color:var(--_on-solid, ButtonText)}[data-ui=avatar][data-part=root][data-shape=square]{--_radius: var(--slotted-avatar-radius, round(nearest, calc(var(--_size) / 6), 1px))}[data-ui=avatar][data-part=root][data-size=xs]{--slotted-avatar-size: var(--slotted-avatar-size-xs, 24px)}[data-ui=avatar][data-part=root][data-size=sm]{--slotted-avatar-size: var(--slotted-avatar-size-sm, 28px)}[data-ui=avatar][data-part=root][data-size=md]{--slotted-avatar-size: var(--slotted-avatar-size-md, 36px)}[data-ui=avatar][data-part=root][data-size=lg]{--slotted-avatar-size: var(--slotted-avatar-size-lg, 48px)}[data-ui=avatar][data-part=root][data-size=xl]{--slotted-avatar-size: var(--slotted-avatar-size-xl, 64px)}[data-ui=avatar] [data-part=image]{block-size:100%;border-radius:inherit;inline-size:100%;inset:0;object-fit:cover;opacity:0;position:absolute;transition:opacity var(--slotted-duration-short) var(--slotted-easing-exit)}[data-ui=avatar][data-status=loaded] [data-part=image]{opacity:1;transition-timing-function:var(--slotted-easing-enter)}[data-ui=avatar] [data-part=fallback]{--slotted-icon-size: var(--_glyph-size);align-items:center;block-size:100%;border-radius:inherit;display:flex;inline-size:100%;justify-content:center;overflow:hidden;transition:opacity var(--slotted-duration-short) var(--slotted-easing-enter)}[data-ui=avatar][data-status=loaded] [data-part=fallback]{opacity:0;transition-timing-function:var(--slotted-easing-exit)}@supports (text-box: trim-both cap alphabetic){[data-ui=avatar] [data-part=fallback]:not(:has(>*)){align-content:center;display:block;text-align:center;text-box:trim-both cap alphabetic}}[data-ui=avatar][data-part=root][data-status=loaded]{--_edge: var(--slotted-border-subtle, ButtonBorder)}[data-ui=avatar][data-part=root][data-disabled]{--_solid: var(--slotted-disabled-background, Canvas);--_on-solid: var(--slotted-disabled-foreground, GrayText);--_surface: var(--slotted-disabled-background, Canvas);--_text: var(--slotted-disabled-foreground, GrayText);--_edge: var(--slotted-disabled-border, GrayText)}[data-ui=avatar][data-part=root][data-disabled] [data-part=image]{filter:var(--slotted-avatar-disabled-image-filter, grayscale(1) opacity(.5))}[data-ui=avatar][data-part=root]:any-link,button[data-ui=avatar][data-part=root],[data-ui=avatar][data-part=root][tabindex]{cursor:pointer;overflow:clip;overflow-clip-margin:var(--slotted-target-min, 24px)}[data-ui=avatar][data-part=root]:any-link:not([data-disabled]):hover,button[data-ui=avatar][data-part=root]:not([data-disabled]):hover,[data-ui=avatar][data-part=root][tabindex]:not([data-disabled]):hover{background-color:color-mix(in oklab,var(--_ground),currentColor var(--slotted-avatar-state-layer-hover, 8%))}[data-ui=avatar][data-part=root]:any-link:not([data-disabled]):active,button[data-ui=avatar][data-part=root]:not([data-disabled]):active,[data-ui=avatar][data-part=root][tabindex]:not([data-disabled]):active{background-color:color-mix(in oklab,var(--_ground),currentColor var(--slotted-avatar-state-layer-active, 14%))}[data-ui=avatar][data-status=loaded]:any-link:not([data-disabled]):hover,button[data-ui=avatar][data-status=loaded]:not([data-disabled]):hover,[data-ui=avatar][data-status=loaded][tabindex]:not([data-disabled]):hover{--_edge: var(--slotted-border-strong, CanvasText);--slotted-avatar-ring-width: var(--slotted-border-width-thin, 1px);--slotted-avatar-ring-color: var(--slotted-border-strong, CanvasText)}[data-ui=avatar][data-status=loaded]:any-link:not([data-disabled]):active,button[data-ui=avatar][data-status=loaded]:not([data-disabled]):active,[data-ui=avatar][data-status=loaded][tabindex]:not([data-disabled]):active{--slotted-avatar-ring-width: var(--slotted-border-width-thick, 2px)}[data-ui=avatar][data-part=root]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-focus-ring-offset, 2px)}[data-ui=avatar][data-part=root]:any-link:after,button[data-ui=avatar][data-part=root]:after,[data-ui=avatar][data-part=root][tabindex]:after{content:\"\";inset:min(0px,calc((100% - var(--slotted-target-min, 24px)) / 2));position:absolute}@media(forced-colors:active){[data-ui=avatar][data-part=root]{--_edge: currentColor}}}\n"] }]
|
|
323
|
+
}], propDecorators: { name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], src: [{ type: i0.Input, args: [{ isSignal: true, alias: "src", required: false }] }], initialsOverride: [{ type: i0.Input, args: [{ isSignal: true, alias: "initials", required: false }] }], idFor: [{ type: i0.Input, args: [{ isSignal: true, alias: "idFor", required: false }] }], locale: [{ type: i0.Input, args: [{ isSignal: true, alias: "locale", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], shape: [{ type: i0.Input, args: [{ isSignal: true, alias: "shape", required: false }] }], tone: [{ type: i0.Input, args: [{ isSignal: true, alias: "tone", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], decorative: [{ type: i0.Input, args: [{ isSignal: true, alias: "decorative", required: false }] }], status: [{ type: i0.Input, args: [{ isSignal: true, alias: "status", required: false }] }], statusChange: [{ type: i0.Output, args: ["statusChange"] }], custom: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SlAvatarFallback), { isSignal: true }] }], projected: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SlAvatarImage), { isSignal: true }] }] } });
|
|
324
|
+
|
|
325
|
+
/**
|
|
326
|
+
* Generated bundle index. Do not edit.
|
|
327
|
+
*/
|
|
328
|
+
|
|
329
|
+
export { AVATAR_DEFAULTS, AVATAR_IMAGE_HOST, SlAvatar, SlAvatarFallback, SlAvatarImage, injectAvatarDefaults, provideAvatarDefaults };
|
|
330
|
+
//# sourceMappingURL=slotted-angular-avatar.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slotted-angular-avatar.mjs","sources":["../../avatar/src/avatar-defaults.ts","../../avatar/src/avatar-fallback.ts","../../avatar/src/avatar-image-host.ts","../../avatar/src/avatar-image.ts","../../avatar/src/avatar.ts","../../avatar/src/slotted-angular-avatar.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\n\n/**\n * Which of the five semantic colours the fallback is painted in. `auto` derives\n * it from the name, so the same person keeps the same colour in a list that is\n * re-sorted and in a table that is paged.\n */\nexport type AvatarTone = 'auto' | 'accent' | 'secondary' | 'success' | 'warning' | 'danger';\n\n/** The palette `auto` chooses from, in the order the hash indexes it. */\nexport type AvatarResolvedTone = Exclude<AvatarTone, 'auto'>;\n\n/** How that colour is painted. `soft` is the tinted disc an avatar usually is. */\nexport type AvatarVariant = 'soft' | 'solid';\n\nexport type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n/** A circle is a person; a square is a team, an organisation or a bot. */\nexport type AvatarShape = 'circle' | 'square';\n\n/** Where the picture is. Four values, because a boolean cannot say why there is none. */\nexport type AvatarStatus = 'idle' | 'loading' | 'loaded' | 'error';\n\nexport type AvatarGroupLayout = 'stack' | 'spread';\n\nexport interface AvatarDefaults {\n /** BCP 47. Used to case the initials, and by the group to join names. */\n locale: string | undefined;\n shape: AvatarShape;\n size: AvatarSize;\n tone: AvatarTone;\n variant: AvatarVariant;\n}\n\nconst FALLBACK: AvatarDefaults = {\n locale: undefined,\n shape: 'circle',\n size: 'md',\n tone: 'auto',\n variant: 'soft',\n};\n\nexport const AVATAR_DEFAULTS = new InjectionToken<AvatarDefaults>('slotted avatar defaults', {\n providedIn: 'root',\n factory: () => FALLBACK,\n});\n\n/**\n * An application decides once how its avatars are shaped, how large they are,\n * how they are painted and — the one that matters most — which locale cases\n * their initials, rather than repeating four inputs on every avatar. An avatar\n * that states any of them itself still wins: an explicit input is never\n * overridden by the token.\n *\n * `SlAvatarGroup` provides the same token rather than a channel of its own,\n * which is what keeps a member's explicit `size` winning over the group's.\n */\nexport function provideAvatarDefaults(defaults: Partial<AvatarDefaults>) {\n return {\n provide: AVATAR_DEFAULTS,\n useFactory: (): AvatarDefaults => ({\n locale: defaults.locale ?? FALLBACK.locale,\n shape: defaults.shape ?? FALLBACK.shape,\n size: defaults.size ?? FALLBACK.size,\n tone: defaults.tone ?? FALLBACK.tone,\n variant: defaults.variant ?? FALLBACK.variant,\n }),\n };\n}\n\n/** What an avatar renders as here, before it states anything of its own. */\nexport function injectAvatarDefaults(): AvatarDefaults {\n return inject(AVATAR_DEFAULTS);\n}\n","import { Directive } from '@angular/core';\n\n/**\n * Content that stands in for the picture, in place of the initials and the\n * glyph: a company mark, a product logo, an `sl-icon`.\n *\n * It is a marker rather than a bare `<ng-content>` because Angular cannot ask\n * whether anything was projected, and an avatar that wrote its initials\n * *and* the consumer's logo into the same disc would be drawing two fallbacks.\n * React answers the same question by looking at `children`.\n */\n@Directive({\n selector: '[slAvatarFallback]',\n standalone: true,\n exportAs: 'slAvatarFallback',\n})\nexport class SlAvatarFallback {}\n","import { InjectionToken } from '@angular/core';\n\nimport type { AvatarStatus } from './avatar-defaults';\n\n/**\n * What the picture tells the avatar it sits in.\n *\n * It is a token rather than the component's own class so that one directive can\n * serve both pictures the family knows about: the `<img>` the avatar renders\n * for its own `src`, and the `<img>` the consumer projects — which is the one\n * that carries `ngSrc`, and therefore the one `NgOptimizedImage` can reach. A\n * directive that injected the component directly would put a cycle between the\n * two files, and the component imports the directive for its own template.\n */\nexport interface AvatarImageHost {\n reportStatus(status: AvatarStatus): void;\n}\n\nexport const AVATAR_IMAGE_HOST = new InjectionToken<AvatarImageHost>('slotted avatar image host');\n","import { afterNextRender, Directive, ElementRef, HostAttributeToken, inject } from '@angular/core';\n\nimport { AVATAR_IMAGE_HOST } from './avatar-image-host';\n\n/**\n * The picture inside an avatar.\n *\n * It is written on an `<img>` the consumer owns, which is what lets\n * `NgOptimizedImage` do its work: `ngSrc`, the priority hint, the generated\n * `srcset` and the size warnings all belong to a real `<img>` in the\n * consumer's template, and none of them survive being handed a `src` string\n * through an input. React has no equivalent, and its `renderImage` is the other\n * half of the same idea.\n *\n * `alt` is written empty only when the consumer wrote none: the avatar's name\n * is on the root, so naming the picture as well would read the person twice —\n * and would name them differently before the picture arrives.\n */\n@Directive({\n selector: 'img[slAvatarImage]',\n standalone: true,\n exportAs: 'slAvatarImage',\n host: {\n 'data-part': 'image',\n '[attr.alt]': 'alt',\n '(load)': 'avatar.reportStatus(\"loaded\")',\n '(error)': 'avatar.reportStatus(\"error\")',\n },\n})\nexport class SlAvatarImage {\n protected readonly avatar = inject(AVATAR_IMAGE_HOST);\n\n /** A static `alt` the consumer wrote is read before the host binding writes one. */\n protected readonly alt = inject(new HostAttributeToken('alt'), { optional: true }) ?? '';\n\n private readonly element = inject<ElementRef<HTMLImageElement>>(ElementRef).nativeElement;\n\n constructor() {\n /**\n * A picture already in the browser cache finishes decoding before the\n * listener is attached, so the element is asked whether it is already\n * complete rather than waited on for an event that has been and gone.\n * Without it an avatar shows initials over a picture that is already there.\n */\n afterNextRender(() => {\n if (this.element.complete && this.element.naturalWidth > 0) {\n this.avatar.reportStatus('loaded');\n }\n });\n }\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n forwardRef,\n HostAttributeToken,\n inject,\n input,\n linkedSignal,\n output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\n\nimport { initialsFrom, toneFrom } from '@slotted/core/identity';\n\nimport {\n injectAvatarDefaults,\n type AvatarResolvedTone,\n type AvatarShape,\n type AvatarSize,\n type AvatarStatus,\n type AvatarTone,\n type AvatarVariant,\n} from './avatar-defaults';\nimport { SlAvatarFallback } from './avatar-fallback';\nimport { AVATAR_IMAGE_HOST } from './avatar-image-host';\nimport { SlAvatarImage } from './avatar-image';\n\nexport type {\n AvatarDefaults,\n AvatarGroupLayout,\n AvatarResolvedTone,\n AvatarShape,\n AvatarSize,\n AvatarStatus,\n AvatarTone,\n AvatarVariant,\n} from './avatar-defaults';\n\n/**\n * The palette `tone=\"auto\"` chooses from, in the order the hash indexes it.\n * Five is a small palette and collisions are frequent by construction: the\n * colour is an aid to scanning a list of faces, and the name is what identifies\n * the person — which is why it is on the root in every one of the four\n * statuses.\n */\nconst AUTO_TONES: readonly AvatarResolvedTone[] = [\n 'accent',\n 'secondary',\n 'success',\n 'warning',\n 'danger',\n];\n\n/** At the smallest step there is room for one letter, which is Fluent's rule at 16 pixels. */\nconst INITIALS_MAX: Record<AvatarSize, number> = { xs: 1, sm: 2, md: 2, lg: 2, xl: 2 };\n\n/**\n * A picture of a person or an entity, and what stands in when there is none:\n * the initials taken from the name, then a glyph the family owns. A request\n * that fails never paints the browser's torn-page mark, because the picture is\n * out of sight until it reports that it arrived.\n *\n * The component is written on the element the page chose, so a `span` in a\n * table cell, an `a` that opens a profile and a `button` that opens a menu are\n * all the same avatar.\n *\n * The name lives on the root and the picture takes an empty `alt`, so the\n * avatar announces the same thing before and after the photograph loads. Every\n * surveyed implementation names the image instead, which makes the same avatar\n * “Ada Lovelace” once the picture arrives and “AL” before it.\n *\n * `status` is an input with an output beside it rather than a `model()`. A\n * `model()` promises a two-way binding for a value the browser owns: the\n * component would write over whatever the consumer passed the first time an\n * image loaded. Here the consumer's value simply wins, and the output reports\n * the derivation — a load event is a fact rather than a request, so there is\n * nothing to cancel and no reason from the closed vocabulary that fits it.\n */\n@Component({\n selector: '[slAvatar]',\n standalone: true,\n exportAs: 'slAvatar',\n imports: [SlAvatarImage, SlGlyph, SlIcon],\n providers: [\n /* The component is its own image host, and a decorator is evaluated before\n the class it decorates exists. */\n { provide: AVATAR_IMAGE_HOST, useExisting: forwardRef(() => SlAvatar) },\n ],\n template: `@if (src(); as source) {\n <img slAvatarImage [src]=\"source\" />\n }\n <ng-content select=\"img\"></ng-content\n ><span data-part=\"fallback\">\n @if (custom() === undefined) {\n <!-- No picture and no name to take initials from: the person glyph. -->\n @if (initials() === '') {\n <span slIcon><svg slGlyph name=\"person\"></svg></span>\n } @else {\n {{ initials() }}\n }\n }\n <ng-content select=\"[slAvatarFallback]\"></ng-content\n ></span>`,\n styleUrl: '../../../styles/src/avatar/avatar.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'avatar',\n 'data-part': 'root',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-shape]': 'resolvedShape()',\n '[attr.data-tone]': 'resolvedTone()',\n '[attr.data-variant]': 'resolvedVariant()',\n '[attr.data-status]': 'resolvedStatus()',\n '[attr.data-disabled]': \"disabled() ? '' : null\",\n '[attr.role]': 'role()',\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.aria-hidden]': 'ariaHidden()',\n },\n})\nexport class SlAvatar {\n /**\n * The person or entity this is a picture of. It is the accessible name in\n * every status, the source of the initials, and the seed of the colour.\n */\n readonly name = input<string | undefined>(undefined);\n /** The picture. Absent, the avatar is its fallback and nothing is requested. */\n readonly src = input<string | undefined>(undefined);\n /**\n * The letters to draw, in place of the ones derived from the name. Two\n * graphemes at most is what the box holds; `xs` draws one.\n */\n readonly initialsOverride = input<string | undefined>(undefined, { alias: 'initials' });\n /**\n * A stable identifier to derive the colour from, when the name is not stable\n * or two people share one. Defaults to `name`.\n */\n readonly idFor = input<string | undefined>(undefined);\n /** BCP 47, for the case of the initials. Defaults to the provider, then to the runtime. */\n readonly locale = input<string | undefined>(undefined);\n /** Defaults to the provider, then to `md`. */\n readonly size = input<AvatarSize | undefined>(undefined);\n /** Defaults to the provider, then to `circle`. */\n readonly shape = input<AvatarShape | undefined>(undefined);\n /** Defaults to the provider, then to `auto`, which derives it from the name. */\n readonly tone = input<AvatarTone | undefined>(undefined);\n /** Defaults to the provider, then to `soft`. */\n readonly variant = input<AvatarVariant | undefined>(undefined);\n /** A deactivated account, or an avatar inside a control the page has turned off. */\n readonly disabled = input(false, { transform: booleanAttribute });\n /**\n * Takes the avatar out of the accessibility tree. For an avatar beside the\n * name it belongs to, where announcing it would read the person twice.\n */\n readonly decorative = input(false, { transform: booleanAttribute });\n /**\n * Where the picture is. Supplied, it wins over what the component derives\n * from the element — for a server that already knows, or a loader the family\n * cannot see.\n */\n readonly status = input<AvatarStatus | undefined>(undefined);\n\n /** Reports the derived status. Never emits for a status passed in. */\n readonly statusChange = output<AvatarStatus>();\n\n private readonly defaults = injectAvatarDefaults();\n /** An explicit role the consumer wrote is never replaced by an inferred one. */\n private readonly writtenRole = inject(new HostAttributeToken('role'), { optional: true });\n\n protected readonly custom = contentChild(SlAvatarFallback);\n private readonly projected = contentChild(SlAvatarImage);\n\n protected readonly resolvedSize = computed(() => this.size() ?? this.defaults.size);\n protected readonly resolvedShape = computed(() => this.shape() ?? this.defaults.shape);\n protected readonly resolvedVariant = computed(() => this.variant() ?? this.defaults.variant);\n private readonly resolvedLocale = computed(() => this.locale() ?? this.defaults.locale);\n\n /**\n * The derivation, and the picture it belongs to. A new request makes the\n * previous answer describe nothing, so the status starts again from what the\n * props alone can say — which is also what a server render and the hydration\n * after it both compute, so nothing flashes between them.\n */\n private readonly derived = linkedSignal<string, AvatarStatus>({\n source: () => `${this.src() ?? ''}|${this.projected() === undefined ? '' : 'projected'}`,\n computation: (request) => (request === '|' ? 'idle' : 'loading'),\n });\n\n protected readonly resolvedStatus = computed(() => this.status() ?? this.derived());\n\n protected readonly resolvedTone = computed<AvatarResolvedTone>(() => {\n const tone = this.tone() ?? this.defaults.tone;\n if (tone !== 'auto') return tone;\n return toneFrom({ seed: this.idFor() ?? this.name(), tones: AUTO_TONES }) ?? 'secondary';\n });\n\n protected readonly initials = computed(\n () =>\n this.initialsOverride() ??\n initialsFrom({\n name: this.name(),\n max: INITIALS_MAX[this.resolvedSize()],\n locale: this.resolvedLocale(),\n }),\n );\n\n /**\n * The W3C `alt` decision tree, in this library's vocabulary and with the rule\n * `icon` already took: a name present decides `role=\"img\"`, an absent one\n * decides `aria-hidden`. `decorative` is the third case — a name that is\n * written beside the avatar, where announcing it reads the person twice.\n */\n private readonly silent = computed(() => {\n const name = this.name();\n return this.decorative() || name === undefined || name.trim() === '';\n });\n\n protected readonly role = computed(() => this.writtenRole ?? (this.silent() ? null : 'img'));\n protected readonly ariaLabel = computed(() => (this.silent() ? null : (this.name() ?? null)));\n protected readonly ariaHidden = computed(() => (this.silent() ? 'true' : null));\n\n /** Called by the picture, whichever of the two elements it turned out to be. */\n reportStatus(status: AvatarStatus) {\n this.derived.set(status);\n this.statusChange.emit(status);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|