@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 @@
|
|
|
1
|
+
{"version":3,"file":"slotted-angular-side-navigation.mjs","sources":["../../side-navigation/src/side-navigation-defaults.ts","../../side-navigation/src/side-navigation.ts","../../side-navigation/src/side-navigation-parts.ts","../../side-navigation/src/slotted-angular-side-navigation.ts"],"sourcesContent":["import { inject, Injectable, InjectionToken } from '@angular/core';\n\n/** The row height step. `md` reads the geometry `app-shell` publishes. */\nexport type SideNavigationSize = 'sm' | 'md' | 'lg';\n\n/**\n * How the column reads the room it has. `auto` is compact below `compactAt`\n * pixels of its own width and labelled above; the other two force one.\n */\nexport type SideNavigationMode = 'auto' | 'expanded' | 'compact';\n\n/**\n * Where a label that does not fit is cut. `end` is the stylesheet's ellipsis;\n * `middle` keeps the start and the tail, measured by the binding; `none` wraps.\n */\nexport type SideNavigationTruncate = 'end' | 'middle' | 'none';\n\n/** Why the set of open groups moved. */\nexport type SideNavigationExpandedReason =\n 'pointer' | 'keyboard' | 'select' | 'escape' | 'programmatic';\n\n/** Why the flyout opened or closed. */\nexport type SideNavigationFlyoutReason =\n | 'pointer'\n | 'keyboard'\n | 'select'\n | 'escape'\n | 'outsidePress'\n | 'blur'\n | 'resize'\n | 'programmatic';\n\n/** Why the current destination moved. */\nexport type SideNavigationValueReason = 'pointer' | 'keyboard' | 'programmatic';\n\nexport interface SideNavigationDefaults {\n autoExpand: boolean;\n compactAt: number;\n guides: boolean;\n landmark: boolean;\n mode: SideNavigationMode;\n multiple: boolean;\n size: SideNavigationSize;\n truncate: SideNavigationTruncate;\n}\n\n/** The contract's defaults, and the width the rail is read at. */\nexport const SIDE_NAVIGATION_FALLBACK: SideNavigationDefaults = {\n autoExpand: true,\n compactAt: 96,\n guides: true,\n landmark: true,\n mode: 'auto',\n multiple: true,\n size: 'md',\n truncate: 'end',\n};\n\nexport const SIDE_NAVIGATION_DEFAULTS = new InjectionToken<SideNavigationDefaults>(\n 'slotted side-navigation defaults',\n { providedIn: 'root', factory: () => SIDE_NAVIGATION_FALLBACK },\n);\n\n/**\n * An application decides once how its columns read — the rail's width, the\n * cut, whether groups open one at a time — rather than repeating it on every\n * navigation in a product. A column that states any of them itself still wins.\n * Its words come from the language in force (`provideSlotted`).\n */\nexport function provideSideNavigationDefaults(defaults: Partial<SideNavigationDefaults>) {\n return {\n provide: SIDE_NAVIGATION_DEFAULTS,\n useFactory: (): SideNavigationDefaults => ({ ...SIDE_NAVIGATION_FALLBACK, ...defaults }),\n };\n}\n\n/** What a column renders as here, before it states anything of its own. */\nexport function injectSideNavigationDefaults(): SideNavigationDefaults {\n return inject(SIDE_NAVIGATION_DEFAULTS);\n}\n\n/**\n * Application-scoped rather than module-scoped, for the reason `field` records:\n * a module-level counter produces colliding sequences when two applications\n * render in one server process, and the server and the client sequences must\n * match for hydration.\n */\n@Injectable({ providedIn: 'root' })\nexport class SlSideNavigationIdFactory {\n private count = 0;\n\n next() {\n this.count += 1;\n return `slotted-side-navigation-${this.count}`;\n }\n}\n","import { nextOpenValues, sameOpenValues } from '@slotted/core/disclosure';\nimport { createWidthGate } from '@slotted/core/measure';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeRequest } from '@slotted/core/state';\nimport { SlAppShellNav } from '@slotted/angular/app-shell';\nimport { injectMessages } from '@slotted/angular/i18n';\nimport {\n sideNavigationMessages,\n type PartialMessages,\n type SideNavigationMessages,\n} from '@slotted/core/i18n';\nimport {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n ElementRef,\n HostAttributeToken,\n inject,\n input,\n model,\n numberAttribute,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { injectSideNavigationDefaults } from './side-navigation-defaults';\nimport type {\n SideNavigationExpandedReason,\n SideNavigationFlyoutReason,\n SideNavigationMode,\n SideNavigationSize,\n SideNavigationTruncate,\n SideNavigationValueReason,\n} from './side-navigation-defaults';\n\nexport type {\n SideNavigationDefaults,\n SideNavigationExpandedReason,\n SideNavigationFlyoutReason,\n SideNavigationMode,\n SideNavigationSize,\n SideNavigationTruncate,\n SideNavigationValueReason,\n} from './side-navigation-defaults';\n\n/** Every row a reader can land on, in the order the DOM holds them. */\nexport const SIDE_NAVIGATION_ROW_SELECTOR = '[data-part=\"link\"], [data-part=\"trigger\"]';\n\n/**\n * A row the keyboard may land on: not inside a closed group. Read from the\n * structure rather than from the layout, so the answer is the same before the\n * stylesheet has loaded and in an environment with no layout at all.\n */\nfunction visible(element: HTMLElement, root: HTMLElement): boolean {\n for (\n let group = element.closest<HTMLElement>('[data-part=\"group\"]');\n group !== null && root.contains(group);\n group = group.parentElement?.closest<HTMLElement>('[data-part=\"group\"]') ?? null\n ) {\n if (!group.parentElement?.hasAttribute('data-expanded')) return false;\n }\n return true;\n}\n\n/**\n * A column of destinations: nested groups, a current destination, and a rail\n * when the room it has is under `compactAt` pixels.\n *\n * The directive goes on the consumer's own element — `<nav slSideNavigation>`\n * standing alone, `<div slSideNavigation>` inside `app-shell`'s nav region,\n * which is already the navigation landmark. `landmark` decides whether the\n * name is written; the element is the consumer's, as it is everywhere in this\n * ecosystem.\n *\n * **Three values, three models.** `value` is the current destination and\n * `expanded` the set of open groups; `flyout` is the one group shown beside the\n * rail, transient by design, and it never writes into `expanded`.\n *\n * **The rail is a width.** The stylesheet decides the picture from the root's\n * own inline size, before any script; the width gate here writes\n * `data-compact` afterwards, and that is what turns on the tooltip and the\n * flyout.\n */\n@Component({\n selector: '[slSideNavigation]',\n standalone: true,\n exportAs: 'slSideNavigation',\n template: '<ng-content />',\n styleUrl: '../../../styles/src/side-navigation/side-navigation.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'side-navigation',\n 'data-part': 'root',\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.data-mode]': 'resolvedMode()',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-truncate]': 'resolvedTruncate()',\n '[attr.data-guides]': \"resolvedGuides() ? '' : null\",\n '[attr.data-compact]': \"compact() ? '' : null\",\n '(keydown)': 'onKeyDown($event)',\n },\n})\nexport class SlSideNavigation {\n /** The current destination's value. Two-way, so a template may bind it directly. */\n readonly value = model<string | null>(null);\n /** The set of open groups. */\n readonly expanded = model<readonly string[]>([]);\n /** The one group presented beside the rail, or null. */\n readonly flyout = model<string | null>(null);\n\n readonly size = input<SideNavigationSize | undefined>(undefined);\n readonly mode = input<SideNavigationMode | undefined>(undefined);\n readonly truncate = input<SideNavigationTruncate | undefined>(undefined);\n readonly multiple = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (state) => (state === undefined ? undefined : booleanAttribute(state)),\n });\n readonly autoExpand = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (state) => (state === undefined ? undefined : booleanAttribute(state)),\n });\n readonly guides = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (state) => (state === undefined ? undefined : booleanAttribute(state)),\n });\n /**\n * Whether the root is the navigation landmark. Unstated, it is one on its\n * own and not inside `app-shell`'s nav region, which already is.\n */\n readonly landmark = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (state) => (state === undefined ? undefined : booleanAttribute(state)),\n });\n /** The width, in CSS pixels, under which `mode=\"auto\"` is compact. */\n readonly compactAt = input<number | undefined, number | string | undefined>(undefined, {\n transform: (state) => (state === undefined ? undefined : numberAttribute(state)),\n });\n /**\n * Words laid over the catalog of the language in force: the landmark's name\n * (`navigation`). A static `aria-label` still wins.\n */\n readonly messages = input<PartialMessages<SideNavigationMessages> | undefined>(undefined);\n\n /** One output for one transition, carrying the reason and the event. */\n readonly valueChangeRequest = output<ChangeRequest<string | null>>();\n readonly expandedChangeRequest = output<ChangeRequest<readonly string[]>>();\n readonly flyoutChangeRequest = output<ChangeRequest<string | null>>();\n\n private readonly defaults = injectSideNavigationDefaults();\n private readonly shell = inject(SlAppShellNav, { optional: true });\n /** The name the consumer wrote, kept over the family's own. */\n private readonly writtenLabel = inject(new HostAttributeToken('aria-label'), { optional: true });\n readonly host: HTMLElement = inject(ElementRef).nativeElement;\n\n readonly resolvedSize = computed(() => this.size() ?? this.defaults.size);\n readonly resolvedMode = computed(() => this.mode() ?? this.defaults.mode);\n readonly resolvedTruncate = computed(() => this.truncate() ?? this.defaults.truncate);\n readonly resolvedMultiple = computed(() => this.multiple() ?? this.defaults.multiple);\n readonly resolvedAutoExpand = computed(() => this.autoExpand() ?? this.defaults.autoExpand);\n readonly resolvedGuides = computed(() => this.guides() ?? this.defaults.guides);\n readonly resolvedCompactAt = computed(() => this.compactAt() ?? this.defaults.compactAt);\n readonly resolvedLandmark = computed(\n () => this.landmark() ?? (this.shell === null ? this.defaults.landmark : false),\n );\n /** The family's words in the language in force, with this column's `messages` laid over them. */\n readonly t = injectMessages(sideNavigationMessages, this.messages);\n\n protected readonly ariaLabel = computed(() =>\n this.resolvedLandmark() ? (this.writtenLabel ?? this.t('navigation')) : null,\n );\n\n /** Whether the root is under `compactAt`, measured. */\n private readonly narrow = signal(false);\n readonly compact = computed(\n () => this.resolvedMode() === 'compact' || (this.resolvedMode() === 'auto' && this.narrow()),\n );\n\n /** Moves when the root was resized or the fonts arrived, so a label measures again. */\n readonly measureTick = signal(0);\n\n /** The layer the flyout is drawn in, so the keyboard can walk into it. */\n readonly flyoutNode = signal<HTMLElement | null>(null);\n\n /** Every item's parent, so the ancestors of a destination can be opened. */\n private readonly parents = new Map<string, string | null>();\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n\n /* After the first render and not in the constructor: a measure there\n forced a style pass before any binding existed — `compactAt` was still\n its default, and inside app-shell the column resolved at rail width and\n then animated open. */\n afterNextRender(() => {\n if (typeof ResizeObserver === 'undefined') return;\n const gate = createWidthGate(this.host, {\n at: this.resolvedCompactAt(),\n onChange: (narrow) => this.narrow.set(narrow),\n });\n this.narrow.set(gate.narrow());\n destroyRef.onDestroy(() => gate.destroy());\n\n const observer = new ResizeObserver(() => this.measureTick.update((tick) => tick + 1));\n observer.observe(this.host);\n destroyRef.onDestroy(() => observer.disconnect());\n void this.host.ownerDocument.fonts?.ready.then(() =>\n this.measureTick.update((tick) => tick + 1),\n );\n });\n\n /* Compact mode ending takes the flyout with it: there is no rail to stand beside. */\n effect(() => {\n if (!this.compact() && this.flyout() !== null) this.setFlyout(null, 'resize');\n });\n\n /* The ancestors of the current destination open, with the reason select. */\n effect(() => {\n const current = this.value();\n if (!this.resolvedAutoExpand() || current === null) return;\n const open = this.expanded();\n const missing: string[] = [];\n for (\n let parent = this.parents.get(current) ?? null;\n parent !== null;\n parent = this.parents.get(parent) ?? null\n ) {\n if (!open.includes(parent)) missing.push(parent);\n }\n if (missing.length === 0) return;\n const next = this.resolvedMultiple()\n ? [...open, ...missing]\n : [missing[missing.length - 1] as string];\n this.requestExpanded(next, 'select');\n });\n }\n\n isExpanded(value: string): boolean {\n return this.expanded().includes(value);\n }\n\n /** An item says where it stands. */\n registerItem(value: string, parent: string | null): () => void {\n this.parents.set(value, parent);\n return () => {\n this.parents.delete(value);\n };\n }\n\n private requestExpanded(\n next: readonly string[],\n reason: SideNavigationExpandedReason,\n source?: Event,\n ) {\n const state = createControllable<readonly string[]>({\n equals: sameOpenValues,\n initial: this.expanded(),\n onRequest: (request) => this.expandedChangeRequest.emit(request),\n });\n if (state.request(next, reason, source)) this.expanded.set(next);\n }\n\n /** Asks the set of open groups to include or drop one value. */\n toggleExpanded(\n value: string,\n next: boolean,\n reason: SideNavigationExpandedReason,\n source?: Event,\n ) {\n const current = this.expanded();\n if (current.includes(value) === next) return;\n this.requestExpanded(\n nextOpenValues(current, value, { multiple: this.resolvedMultiple() }),\n reason,\n source,\n );\n }\n\n /** Asks the flyout to show one group, or none. */\n setFlyout(next: string | null, reason: SideNavigationFlyoutReason, source?: Event) {\n const state = createControllable<string | null>({\n initial: this.flyout(),\n onRequest: (request) => this.flyoutChangeRequest.emit(request),\n });\n if (state.request(next, reason, source)) this.flyout.set(next);\n }\n\n /** Asks the current destination to move. */\n select(next: string, reason: SideNavigationValueReason, source?: Event) {\n const state = createControllable<string | null>({\n initial: this.value(),\n onRequest: (request) => this.valueChangeRequest.emit(request),\n });\n if (state.request(next, reason, source)) this.value.set(next);\n }\n\n /** Opens one group, with the reason `programmatic`. */\n expand(value: string) {\n this.toggleExpanded(value, true, 'programmatic');\n }\n\n /** Closes one group, with the reason `programmatic`. */\n collapse(value: string) {\n this.toggleExpanded(value, false, 'programmatic');\n }\n\n /** Focuses the first link or trigger in the column. */\n focus() {\n this.rows()[0]?.focus();\n }\n\n /** The rows the arrow keys walk, with the flyout's spliced in after its trigger. */\n rows(): HTMLElement[] {\n const inColumn = [\n ...this.host.querySelectorAll<HTMLElement>(SIDE_NAVIGATION_ROW_SELECTOR),\n ].filter((row) => visible(row, this.host));\n const layer = this.flyoutNode();\n const open = this.flyout();\n if (layer === null || open === null) return inColumn;\n const inLayer = [...layer.querySelectorAll<HTMLElement>(SIDE_NAVIGATION_ROW_SELECTOR)];\n const at = inColumn.findIndex(\n (row) => row.closest('[data-part=\"item\"]')?.getAttribute('data-value') === open,\n );\n if (at === -1) return [...inColumn, ...inLayer];\n return [...inColumn.slice(0, at + 1), ...inLayer, ...inColumn.slice(at + 1)];\n }\n\n protected onKeyDown(event: KeyboardEvent) {\n if (event.defaultPrevented) return;\n const target = event.target as HTMLElement;\n if (!target.matches(SIDE_NAVIGATION_ROW_SELECTOR)) return;\n\n if (event.key === 'Escape') {\n /* Inside the layer, the dismissable layer has already answered. */\n if (this.flyoutNode()?.contains(target)) return;\n const group = target.closest<HTMLElement>('[data-part=\"group\"]');\n const item = group?.parentElement;\n const value = item?.getAttribute('data-value');\n if (!group || !item || !value || !item.hasAttribute('data-expanded')) return;\n event.preventDefault();\n this.toggleExpanded(value, false, 'escape', event);\n item.querySelector<HTMLElement>(':scope > [data-part=\"trigger\"]')?.focus();\n return;\n }\n\n const step =\n event.key === 'ArrowDown' || event.key === 'ArrowRight'\n ? 1\n : event.key === 'ArrowUp' || event.key === 'ArrowLeft'\n ? -1\n : 0;\n if (step === 0 && event.key !== 'Home' && event.key !== 'End') return;\n\n const all = this.rows();\n if (all.length === 0) return;\n event.preventDefault();\n const index = all.indexOf(target);\n const next =\n event.key === 'Home'\n ? 0\n : event.key === 'End'\n ? all.length - 1\n : Math.min(all.length - 1, Math.max(0, index + step));\n all[next]?.focus();\n }\n}\n","import { createDismissableLayer } from '@slotted/core/dismissable-layer';\nimport type { DismissableLayerHandle } from '@slotted/core/dismissable-layer';\nimport { createPortalRoot } from '@slotted/core/portal';\nimport type { PortalRootHandle } from '@slotted/core/portal';\nimport { createPositioner } from '@slotted/core/positioner';\nimport type { PositionerHandle } from '@slotted/core/positioner';\nimport { createPresence } from '@slotted/core/presence';\nimport type { PresenceStatus } from '@slotted/core/presence';\nimport { truncateMiddle } from '@slotted/core/text';\nimport { SlSkeleton } from '@slotted/angular/skeleton';\nimport {\n provideTooltipDefaults,\n SlTooltip,\n SlTooltipContent,\n SlTooltipLayer,\n} from '@slotted/angular/tooltip';\nimport {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n HostAttributeToken,\n inject,\n input,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport type { Signal } from '@angular/core';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\n\nimport { SlSideNavigation } from './side-navigation';\nimport { SlSideNavigationIdFactory } from './side-navigation-defaults';\nimport type { SideNavigationFlyoutReason } from './side-navigation-defaults';\n\n/** A click synthesised by the keyboard reports no detail; a real one reports the count. */\nfunction activationReason(event: MouseEvent) {\n return event.detail === 0 ? ('keyboard' as const) : ('pointer' as const);\n}\n\n/* ── Section, its title, and a list ─────────────────────────────────────── */\n\n/** A titled run of destinations. Several may stand under one root. */\n@Directive({\n selector: '[slSideNavigationSection]',\n standalone: true,\n host: { 'data-part': 'section' },\n})\nexport class SlSideNavigationSection {}\n\n/** The section's title. In compact mode it becomes a rule. */\n@Directive({\n selector: '[slSideNavigationSectionLabel]',\n standalone: true,\n host: { 'data-part': 'section-label' },\n})\nexport class SlSideNavigationSectionLabel {}\n\n/** The items of one level: the top level, or a section's. */\n@Directive({\n selector: 'ul[slSideNavigationList]',\n standalone: true,\n host: { 'data-part': 'list' },\n})\nexport class SlSideNavigationList {}\n\n/* ── The item ───────────────────────────────────────────────────────────── */\n\n/**\n * A row: a link, a trigger, or both, with optional actions and a group.\n *\n * It carries the states the stylesheet reads. `data-current` is on it while\n * its own link is the destination, and while a descendant is and the group is\n * closed or the column is a rail — the reader sees where they are when the\n * destination itself is out of sight.\n */\n@Directive({\n selector: 'li[slSideNavigationItem]',\n standalone: true,\n exportAs: 'slSideNavigationItem',\n host: {\n 'data-part': 'item',\n '[attr.data-value]': 'value()',\n '[attr.data-current]': \"marked() ? '' : null\",\n '[attr.data-expanded]': \"expanded() ? '' : null\",\n '[attr.data-open]': \"flyoutOpen() ? '' : null\",\n '[attr.data-disabled]': \"resolvedDisabled() ? '' : null\",\n },\n})\nexport class SlSideNavigationItem {\n /** The item's identity: what `value`, `expanded` and `flyout` name it by. */\n readonly value = input.required<string>();\n /** The row and everything in it refuse interaction. */\n readonly disabled = input(false, { transform: booleanAttribute });\n\n readonly navigation = inject(SlSideNavigation);\n /** The item above, or nothing at the top level. */\n readonly parent = inject(SlSideNavigationItem, { optional: true, skipSelf: true });\n private readonly generated = inject(SlSideNavigationIdFactory).next();\n\n readonly ids = {\n groupId: `${this.generated}-group`,\n labelId: `${this.generated}-label`,\n triggerId: `${this.generated}-trigger`,\n };\n\n readonly hasLink = signal(false);\n readonly hasGroup = signal(false);\n /** Whether the label was measured as clipped, which is what opens the tooltip. */\n readonly clipped = signal(false);\n /** The label's whole text, for the tooltip and for `aria-label` under a middle cut. */\n readonly labelText = signal('');\n readonly descriptionText = signal('');\n readonly triggerNode = signal<HTMLElement | null>(null);\n private readonly descendants = signal<readonly string[]>([]);\n\n readonly expanded = computed(() => this.navigation.isExpanded(this.value()));\n readonly flyoutOpen = computed(\n () => this.navigation.compact() && this.navigation.flyout() === this.value(),\n );\n /** Whether the current destination is this item's own link. */\n readonly current = computed(() => this.hasLink() && this.navigation.value() === this.value());\n /** Whether the current destination is somewhere under this item. */\n readonly holdsCurrent = computed(() => this.descendants().length > 0);\n readonly resolvedDisabled: Signal<boolean> = computed(\n () => this.disabled() || (this.parent?.resolvedDisabled() ?? false),\n );\n protected readonly marked = computed(\n () =>\n this.current() || (this.holdsCurrent() && (!this.expanded() || this.navigation.compact())),\n );\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n let release: (() => void) | null = null;\n effect(() => {\n release?.();\n release = this.navigation.registerItem(this.value(), this.parent?.value() ?? null);\n });\n destroyRef.onDestroy(() => release?.());\n\n /* Where the reader is, said upward: own link, or anything under it. */\n const parent = this.parent;\n if (parent !== null) {\n effect(() => parent.reportCurrent(this.value(), this.current() || this.holdsCurrent()));\n destroyRef.onDestroy(() => parent.reportCurrent(this.value(), false));\n }\n }\n\n /** A descendant says whether it holds the current destination. */\n reportCurrent(descendant: string, isCurrent: boolean) {\n this.descendants.update((known) => {\n const has = known.includes(descendant);\n if (isCurrent === has) return known;\n return isCurrent ? [...known, descendant] : known.filter((item) => item !== descendant);\n });\n }\n}\n\n/* ── The row's hint ─────────────────────────────────────────────────────── */\n\n/**\n * What a link and a trigger share: the tooltip a row opens when it cannot\n * show its own words. `SlTooltip` is a host directive holding the state and\n * the delays; the row dispatches the pointer and the focus to it only while a\n * hint is due, because the family — not the consumer's template — decides\n * when a row is a trigger. The layer is stamped under `@if`, so an idle row\n * mounts nothing.\n */\n@Directive()\nabstract class SideNavigationRow {\n readonly item = inject(SlSideNavigationItem);\n readonly navigation = inject(SlSideNavigation);\n protected readonly tooltip = inject(SlTooltip);\n protected readonly native: HTMLElement = inject(ElementRef).nativeElement;\n\n abstract readonly hint: () => boolean;\n\n constructor() {\n this.tooltip.triggerNode.set(this.native);\n inject(DestroyRef).onDestroy(() => this.tooltip.triggerNode.set(null));\n }\n\n protected readonly describedBy = computed(() =>\n this.hint() && this.tooltip.isOpen() ? this.tooltip.contentId : null,\n );\n\n protected onPointerEnter(event: PointerEvent) {\n if (!this.hint() || event.pointerType === 'touch') return;\n this.tooltip.openAfterDelay(event);\n }\n\n protected onPointerLeave(event: PointerEvent) {\n if (!this.hint()) return;\n this.tooltip.closeAfterDelay(event);\n }\n\n protected onPointerDown(event: PointerEvent) {\n if (!this.hint()) return;\n if (event.pointerType === 'touch') this.tooltip.pressAndHold(event);\n else if (this.tooltip.isOpen()) this.tooltip.toggle(false, 'pointer', event);\n }\n\n protected onPointerUp() {\n this.tooltip.cancelPending();\n }\n\n protected onFocus(event: FocusEvent) {\n if (!this.hint() || !this.native.matches(':focus-visible')) return;\n this.tooltip.toggle(true, 'keyboard', event);\n }\n\n protected onBlur(event: FocusEvent) {\n if (this.tooltip.isOpen()) this.tooltip.toggle(false, 'blur', event);\n }\n}\n\nconst HINT_TEMPLATE = `<ng-content />\n@if (hint()) {\n <ng-template slTooltipLayer>\n <div slTooltipContent>\n {{ item.labelText() }}\n @if (item.descriptionText()) {\n <br />\n {{ item.descriptionText() }}\n }\n </div>\n </ng-template>\n}`;\n\nconst HINT_HOST = {\n '[attr.aria-describedby]': 'describedBy()',\n '(pointerenter)': 'onPointerEnter($event)',\n '(pointerleave)': 'onPointerLeave($event)',\n '(pointerdown)': 'onPointerDown($event)',\n '(pointerup)': 'onPointerUp()',\n '(pointercancel)': 'onPointerUp()',\n '(focus)': 'onFocus($event)',\n '(blur)': 'onBlur($event)',\n};\n\n/* ── The link ───────────────────────────────────────────────────────────── */\n\n/**\n * The destination, or a command. On an `a` with an `href` it is a destination\n * and takes `aria-current`; on a `button` it is a command in the column with\n * the same row. `routerLink` and `routerLinkActive` live on the same element,\n * and an `aria-current` the router wrote is read and kept.\n */\n@Component({\n selector: 'a[slSideNavigationLink], button[slSideNavigationLink]',\n standalone: true,\n exportAs: 'slSideNavigationLink',\n imports: [SlTooltipLayer, SlTooltipContent],\n template: HINT_TEMPLATE,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n hostDirectives: [SlTooltip],\n providers: [\n provideTooltipDefaults({ describes: 'description', openOn: 'hover', side: 'inline-end' }),\n ],\n host: {\n ...HINT_HOST,\n 'data-part': 'link',\n '[attr.aria-current]': \"resolvedCurrent() ? 'page' : null\",\n '[attr.aria-disabled]': \"item.resolvedDisabled() ? 'true' : null\",\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.data-current]': \"resolvedCurrent() ? '' : null\",\n '(click)': 'onClick($event)',\n },\n})\nexport class SlSideNavigationLink extends SideNavigationRow {\n /**\n * Whether this is the current destination, stated on the row itself. It\n * wins over the root's `value`; unstated, an `aria-current` the router wrote\n * on the element is read instead.\n */\n readonly current = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (state) => (state === undefined ? undefined : booleanAttribute(state)),\n });\n\n private readonly isDestination = this.native.tagName === 'A';\n private readonly writtenCurrent = inject(new HostAttributeToken('aria-current'), {\n optional: true,\n });\n\n readonly resolvedCurrent = computed(() => {\n const stated = this.current();\n if (stated !== undefined) return stated;\n if (this.writtenCurrent !== null) return this.writtenCurrent !== 'false';\n return this.isDestination && this.navigation.value() === this.item.value();\n });\n\n readonly hint = computed(() => this.navigation.compact() || this.item.clipped());\n\n protected readonly ariaLabel = computed(() =>\n this.navigation.resolvedTruncate() === 'middle' && this.item.clipped()\n ? this.item.labelText()\n : null,\n );\n\n constructor() {\n super();\n this.item.hasLink.set(true);\n inject(DestroyRef).onDestroy(() => this.item.hasLink.set(false));\n }\n\n protected onClick(event: Event) {\n if (this.item.resolvedDisabled()) {\n event.preventDefault();\n return;\n }\n if (event.defaultPrevented) return;\n const reason = activationReason(event as MouseEvent);\n if (this.isDestination) this.navigation.select(this.item.value(), reason, event);\n if (this.navigation.compact() && this.navigation.flyout() !== null) {\n this.navigation.setFlyout(null, 'select', event);\n }\n }\n}\n\n/* ── The trigger ────────────────────────────────────────────────────────── */\n\n/**\n * The disclosure button of the group. Alone, it is the whole row and carries\n * the label; beside a link it is a mark-only button named by the row's label\n * through `aria-labelledby`. In the rail, a trigger without a link opens the\n * flyout instead of the inline group.\n */\n@Component({\n selector: 'button[slSideNavigationTrigger]',\n standalone: true,\n exportAs: 'slSideNavigationTrigger',\n imports: [SlGlyph, SlIcon, SlTooltipLayer, SlTooltipContent],\n template: `<ng-content />\n <span data-part=\"indicator\" aria-hidden=\"true\"\n ><span slIcon directional><svg slGlyph name=\"chevron-right\"></svg></span\n ></span>\n @if (hint()) {\n <ng-template slTooltipLayer>\n <div slTooltipContent>{{ item.labelText() }}</div>\n </ng-template>\n }`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n hostDirectives: [SlTooltip],\n providers: [\n provideTooltipDefaults({ describes: 'description', openOn: 'hover', side: 'inline-end' }),\n ],\n host: {\n ...HINT_HOST,\n 'data-part': 'trigger',\n type: 'button',\n '[attr.id]': 'item.ids.triggerId',\n '[attr.aria-controls]': 'item.ids.groupId',\n '[attr.aria-expanded]': 'item.flyoutOpen() || item.expanded()',\n '[attr.aria-labelledby]': 'item.hasLink() ? item.ids.labelId : null',\n '[disabled]': 'item.resolvedDisabled()',\n '(click)': 'onClick($event)',\n },\n})\nexport class SlSideNavigationTrigger extends SideNavigationRow {\n readonly hint = computed(\n () => !this.item.hasLink() && (this.navigation.compact() || this.item.clipped()),\n );\n\n constructor() {\n super();\n this.item.triggerNode.set(this.native);\n inject(DestroyRef).onDestroy(() => this.item.triggerNode.set(null));\n }\n\n protected onClick(event: Event) {\n if (event.defaultPrevented) return;\n const reason = activationReason(event as MouseEvent);\n if (this.navigation.compact() && !this.item.hasLink()) {\n this.navigation.setFlyout(this.item.flyoutOpen() ? null : this.item.value(), reason, event);\n return;\n }\n this.navigation.toggleExpanded(this.item.value(), !this.item.expanded(), reason, event);\n }\n}\n\n/* ── The parts of a row ─────────────────────────────────────────────────── */\n\n/** The box the mark stands in. What is left of a row in the rail. */\n@Directive({\n selector: '[slSideNavigationIcon]',\n standalone: true,\n host: { 'data-part': 'icon', 'aria-hidden': 'true' },\n})\nexport class SlSideNavigationIcon {}\n\n/**\n * The row's text. It registers its words with the item, for the tooltip and\n * for the accessible name under a middle cut, and measures itself whenever\n * the column was resized: a label that overflows its box marks the row\n * clipped, which is what opens the tooltip on a row that fits nothing.\n */\n@Directive({\n selector: '[slSideNavigationLabel]',\n standalone: true,\n host: { 'data-part': 'label', '[attr.id]': 'item.ids.labelId' },\n})\nexport class SlSideNavigationLabel {\n protected readonly item = inject(SlSideNavigationItem);\n private readonly navigation = inject(SlSideNavigation);\n private readonly native: HTMLElement = inject(ElementRef).nativeElement;\n /** The words as the consumer wrote them, kept while a middle cut is shown. */\n private whole: string | null = null;\n\n constructor() {\n afterNextRender(() => {\n this.whole = this.native.textContent ?? '';\n this.item.labelText.set(this.whole);\n this.measure();\n });\n effect(() => {\n this.navigation.measureTick();\n this.navigation.compact();\n this.navigation.resolvedTruncate();\n if (this.whole !== null) this.measure();\n });\n }\n\n private measure() {\n const whole = this.whole ?? '';\n const truncate = this.navigation.resolvedTruncate();\n if (truncate === 'none' || this.navigation.compact()) {\n if (this.native.textContent !== whole) this.native.textContent = whole;\n this.item.clipped.set(this.navigation.compact());\n return;\n }\n if (truncate === 'middle') {\n const style = getComputedStyle(this.native);\n const canvas = this.native.ownerDocument.createElement('canvas').getContext('2d');\n const room = this.native.clientWidth;\n if (canvas === null || room === 0) return;\n /* The parts rather than the shorthand: Firefox reports the shorthand empty. */\n canvas.font = `${style.fontStyle} ${style.fontWeight} ${style.fontSize} ${style.fontFamily}`;\n const cut = truncateMiddle(whole, (candidate) => canvas.measureText(candidate).width <= room);\n if (this.native.textContent !== cut) this.native.textContent = cut;\n this.item.clipped.set(cut !== whole);\n return;\n }\n if (this.native.textContent !== whole) this.native.textContent = whole;\n this.item.clipped.set(this.native.scrollWidth > this.native.clientWidth + 1);\n }\n}\n\n/** The second line under the title. */\n@Directive({\n selector: '[slSideNavigationDescription]',\n standalone: true,\n host: { 'data-part': 'description' },\n})\nexport class SlSideNavigationDescription {\n private readonly item = inject(SlSideNavigationItem);\n private readonly native: HTMLElement = inject(ElementRef).nativeElement;\n\n constructor() {\n afterNextRender(() => this.item.descriptionText.set(this.native.textContent ?? ''));\n }\n}\n\n/** A quantity beside a destination, drawn as tabular figures. Never cut. */\n@Directive({\n selector: '[slSideNavigationCount]',\n standalone: true,\n host: { 'data-part': 'count' },\n})\nexport class SlSideNavigationCount {}\n\n/** The suffix with a tone: a badge, a key. */\n@Directive({\n selector: '[slSideNavigationEnd]',\n standalone: true,\n host: { 'data-part': 'end' },\n})\nexport class SlSideNavigationEnd {}\n\n/** Controls beside the row, outside its `a` or `button`. */\n@Directive({\n selector: '[slSideNavigationActions]',\n standalone: true,\n host: { 'data-part': 'actions' },\n})\nexport class SlSideNavigationActions {}\n\n/** A rule between items that keeps the list a list. */\n@Directive({\n selector: 'li[slSideNavigationDivider]',\n standalone: true,\n host: { 'data-part': 'divider', role: 'separator' },\n})\nexport class SlSideNavigationDivider {}\n\n/** A row still arriving: an item's geometry with `skeleton` boxes in it. */\n@Component({\n selector: 'li[slSideNavigationSkeleton]',\n standalone: true,\n imports: [SlSkeleton],\n template: `<span data-part=\"icon\"><span slSkeleton shape=\"square\" size=\"xs\"></span></span>\n <span data-part=\"label\"\n ><span slSkeleton shape=\"text\" [inlineSize]=\"labelSize()\"></span\n ></span>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { 'data-part': 'skeleton', 'aria-hidden': 'true' },\n})\nexport class SlSideNavigationSkeleton {\n /** How wide the label's bar is drawn, as any CSS length. */\n readonly labelSize = input('60%');\n}\n\n/* ── The group, inline or in the flyout ─────────────────────────────────── */\n\n/**\n * An item's children. Inline, it is the second track of the item's grid and\n * opens with it. In the rail the same `ul` is moved into a layer beside the\n * trigger — composed from `portal`, `positioner`, `presence` and\n * `dismissable-layer`, the four modules every overlay in the library takes —\n * and moved back when the layer has left, which is what the CDK's\n * `DomPortalOutlet` does with a template's nodes.\n */\n@Directive({\n selector: 'ul[slSideNavigationGroup]',\n standalone: true,\n exportAs: 'slSideNavigationGroup',\n host: {\n 'data-part': 'group',\n '[attr.id]': 'item.ids.groupId',\n '[attr.aria-labelledby]': 'item.ids.labelId',\n },\n})\nexport class SlSideNavigationGroup {\n protected readonly item = inject(SlSideNavigationItem);\n private readonly navigation = inject(SlSideNavigation);\n private readonly native: HTMLElement = inject(ElementRef).nativeElement;\n\n private layer: HTMLElement | null = null;\n private home: { parent: Node; next: Node | null } | null = null;\n private portal: PortalRootHandle | null = null;\n private positioner: PositionerHandle | null = null;\n private dismissable: DismissableLayerHandle | null = null;\n private readonly status = signal<PresenceStatus>('unmounted');\n private readonly presence = createPresence({\n present: false,\n onStatusChange: (next) => this.status.set(next),\n });\n\n constructor() {\n this.item.hasGroup.set(true);\n effect(() => this.presence.sync(this.item.flyoutOpen()));\n effect(() => (this.status() === 'unmounted' ? this.teardown() : this.build()));\n effect(() => this.stack());\n inject(DestroyRef).onDestroy(() => {\n this.item.hasGroup.set(false);\n this.presence.destroy();\n this.teardown();\n });\n }\n\n private build() {\n if (this.layer !== null) return;\n const anchor = this.item.triggerNode();\n const document = this.native.ownerDocument;\n const layer = document.createElement('div');\n layer.setAttribute('data-ui', 'side-navigation');\n layer.setAttribute('data-part', 'flyout');\n layer.setAttribute('data-size', this.navigation.resolvedSize());\n layer.setAttribute('data-truncate', this.navigation.resolvedTruncate());\n if (this.navigation.resolvedGuides()) layer.setAttribute('data-guides', '');\n layer.addEventListener('focusout', this.onFocusOut);\n\n this.home = { parent: this.native.parentNode as Node, next: this.native.nextSibling };\n layer.appendChild(this.native);\n\n const portal = createPortalRoot({ origin: anchor });\n (portal.container ?? this.home.parent).appendChild(layer);\n\n this.portal = portal;\n this.layer = layer;\n this.presence.setNode(layer);\n this.navigation.flyoutNode.set(layer);\n\n if (anchor !== null) {\n this.positioner = createPositioner(anchor, layer, {\n align: 'start',\n flip: true,\n shift: true,\n side: 'inline-end',\n sideOffset: 0,\n strategy: 'fixed',\n });\n void this.positioner.update().then(() => {\n if (this.layer === layer && this.item.flyoutOpen()) layer.setAttribute('data-open', '');\n });\n }\n }\n\n /** The layer joins the single stack only while it is open; the trigger is a branch. */\n private stack() {\n const open = this.item.flyoutOpen();\n const layer = this.layer;\n this.dismissable?.destroy();\n this.dismissable = null;\n if (layer === null || !open) {\n layer?.removeAttribute('data-open');\n return;\n }\n const anchor = this.item.triggerNode();\n this.dismissable = createDismissableLayer(layer, {\n escape: true,\n focusOutside: false,\n modal: false,\n outsidePress: true,\n scrollLock: false,\n ...(anchor ? { branches: [anchor] } : {}),\n onDismiss: (request) => {\n const reason: SideNavigationFlyoutReason =\n request.reason === 'escape' ? 'escape' : 'outsidePress';\n this.navigation.setFlyout(null, reason, request.source);\n if (reason === 'escape') anchor?.focus();\n },\n });\n }\n\n private readonly onFocusOut = (event: FocusEvent) => {\n const next = event.relatedTarget as Node | null;\n const layer = this.layer;\n if (next === null || layer === null || !this.item.flyoutOpen()) return;\n if (layer.contains(next) || this.item.triggerNode()?.contains(next)) return;\n this.navigation.setFlyout(null, 'blur', event);\n };\n\n private teardown() {\n const layer = this.layer;\n if (layer === null) return;\n this.dismissable?.destroy();\n this.dismissable = null;\n this.positioner?.destroy();\n this.positioner = null;\n layer.removeEventListener('focusout', this.onFocusOut);\n if (this.home !== null) this.home.parent.insertBefore(this.native, this.home.next);\n this.home = null;\n this.presence.setNode(null);\n layer.remove();\n this.portal?.release();\n this.portal = null;\n this.layer = null;\n if (this.navigation.flyoutNode() === layer) this.navigation.flyoutNode.set(null);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,316 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { InjectionToken, inject, input, booleanAttribute, output, computed, signal, DestroyRef, effect, untracked, ViewEncapsulation, ChangeDetectionStrategy, Component, numberAttribute, HostAttributeToken } from '@angular/core';
|
|
3
|
+
import { skeletonMessages } from '@slotted/core/i18n';
|
|
4
|
+
import { initialLoadingVisibility, nextLoadingVisibility } from '@slotted/core/loading';
|
|
5
|
+
import { injectMessages } from '@slotted/angular/i18n';
|
|
6
|
+
|
|
7
|
+
const SKELETON_DEFAULTS_TOKEN = new InjectionToken('slotted skeleton defaults', { providedIn: 'root', factory: () => ({}) });
|
|
8
|
+
/**
|
|
9
|
+
* An application decides once how its placeholders are animated, how long a
|
|
10
|
+
* wait has to last before one appears, how long one is held once it has, and
|
|
11
|
+
* what a screen reader hears when the content arrives. A region or a box that
|
|
12
|
+
* states any of those still wins: an explicit input is never overridden by the
|
|
13
|
+
* token. The words the family writes come from the language in force
|
|
14
|
+
* (`provideSlotted`).
|
|
15
|
+
*/
|
|
16
|
+
function provideSkeletonDefaults(defaults) {
|
|
17
|
+
return { provide: SKELETON_DEFAULTS_TOKEN, useValue: defaults };
|
|
18
|
+
}
|
|
19
|
+
function injectSkeletonDefaults() {
|
|
20
|
+
return inject(SKELETON_DEFAULTS_TOKEN);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const SKELETON_DEFAULT_ANIMATION = 'shimmer';
|
|
24
|
+
const SKELETON_DEFAULT_SHAPE = 'text';
|
|
25
|
+
const SKELETON_DEFAULT_SIZE = 'md';
|
|
26
|
+
const SKELETON_DEFAULT_LIVE = 'polite';
|
|
27
|
+
const SKELETON_DEFAULT_LINES = 3;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* The thing that is loading, rather than the shapes drawn on it.
|
|
31
|
+
*
|
|
32
|
+
* It owns four facts the boxes inside it cannot own on their own. It carries
|
|
33
|
+
* `aria-busy`, which is the platform's own answer — ARIA 1.2 asks an author to
|
|
34
|
+
* set it "on the container element before the first change" and clear it "when
|
|
35
|
+
* the last change is complete". It holds the one announcement: twelve
|
|
36
|
+
* placeholders are one wait, and PatternFly, the only surveyed library that
|
|
37
|
+
* announces at all, puts the text on each box and then has to warn its readers
|
|
38
|
+
* to give every one of them different words. It takes its whole subtree out of
|
|
39
|
+
* the tab order. And it drives the animation phase every placeholder inside it
|
|
40
|
+
* reads, so a region pulses as one surface instead of as twelve blinks.
|
|
41
|
+
*
|
|
42
|
+
* The selector is a bare attribute, so the element stays the consumer's: a
|
|
43
|
+
* region is whatever already wraps the content — a `section`, a `tbody`, a
|
|
44
|
+
* list item — and wrapping it in a second element would change their layout to
|
|
45
|
+
* carry an attribute.
|
|
46
|
+
*
|
|
47
|
+
* The region itself is never `inert`, and that is deliberate rather than an
|
|
48
|
+
* omission: an inert subtree is not announced, so marking the region would
|
|
49
|
+
* silence the one thing it has to say.
|
|
50
|
+
*/
|
|
51
|
+
class SlSkeletonRegion {
|
|
52
|
+
loading = input(true, { ...(ngDevMode ? { debugName: "loading" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
53
|
+
animation = input(undefined, /* @ts-ignore */
|
|
54
|
+
...(ngDevMode ? [{ debugName: "animation" }] : /* istanbul ignore next */ []));
|
|
55
|
+
live = input(undefined, /* @ts-ignore */
|
|
56
|
+
...(ngDevMode ? [{ debugName: "live" }] : /* istanbul ignore next */ []));
|
|
57
|
+
/**
|
|
58
|
+
* Words laid over the catalog of the language in force, key by key: what a
|
|
59
|
+
* screen reader hears once, while the region is waiting (`label`).
|
|
60
|
+
*/
|
|
61
|
+
messages = input(undefined, /* @ts-ignore */
|
|
62
|
+
...(ngDevMode ? [{ debugName: "messages" }] : /* istanbul ignore next */ []));
|
|
63
|
+
loadedLabel = input(undefined, /* @ts-ignore */
|
|
64
|
+
...(ngDevMode ? [{ debugName: "loadedLabel" }] : /* istanbul ignore next */ []));
|
|
65
|
+
delay = input(undefined, { ...(ngDevMode ? { debugName: "delay" } : /* istanbul ignore next */ {}), transform: optionalNumber });
|
|
66
|
+
minDuration = input(undefined, { ...(ngDevMode ? { debugName: "minDuration" } : /* istanbul ignore next */ {}), transform: optionalNumber });
|
|
67
|
+
/**
|
|
68
|
+
* The moment the placeholders are actually withdrawn, which is later than
|
|
69
|
+
* `loading` turning false whenever `minDuration` is holding them. An
|
|
70
|
+
* application moving focus on the input alone would move it into
|
|
71
|
+
* placeholders.
|
|
72
|
+
*/
|
|
73
|
+
reveal = output();
|
|
74
|
+
defaults = injectSkeletonDefaults();
|
|
75
|
+
/** The family's words in the language in force, with this region's `messages` laid over them. */
|
|
76
|
+
t = injectMessages(skeletonMessages, this.messages);
|
|
77
|
+
animationValue = computed(() => this.animation() ?? this.defaults.animation ?? SKELETON_DEFAULT_ANIMATION, /* @ts-ignore */
|
|
78
|
+
...(ngDevMode ? [{ debugName: "animationValue" }] : /* istanbul ignore next */ []));
|
|
79
|
+
liveValue = computed(() => this.live() ?? this.defaults.live ?? SKELETON_DEFAULT_LIVE, /* @ts-ignore */
|
|
80
|
+
...(ngDevMode ? [{ debugName: "liveValue" }] : /* istanbul ignore next */ []));
|
|
81
|
+
delayValue = computed(() => this.delay() ?? this.defaults.delay ?? 0, /* @ts-ignore */
|
|
82
|
+
...(ngDevMode ? [{ debugName: "delayValue" }] : /* istanbul ignore next */ []));
|
|
83
|
+
holdValue = computed(() => this.minDuration() ?? this.defaults.minDuration ?? 0, /* @ts-ignore */
|
|
84
|
+
...(ngDevMode ? [{ debugName: "holdValue" }] : /* istanbul ignore next */ []));
|
|
85
|
+
/** Whether the placeholders are painted, which is not the `loading` input. */
|
|
86
|
+
painted = signal(false, /* @ts-ignore */
|
|
87
|
+
...(ngDevMode ? [{ debugName: "painted" }] : /* istanbul ignore next */ []));
|
|
88
|
+
/**
|
|
89
|
+
* Emptying a live region announces nothing, which is what makes one load one
|
|
90
|
+
* announcement rather than two. A completion message is opt-in for the same
|
|
91
|
+
* reason: a page of six regions would otherwise say six things nobody asked
|
|
92
|
+
* to hear.
|
|
93
|
+
*/
|
|
94
|
+
announcement = computed(() => this.painted() ? this.t('label') : (this.loadedLabel() ?? this.defaults.loadedLabel ?? ''), /* @ts-ignore */
|
|
95
|
+
...(ngDevMode ? [{ debugName: "announcement" }] : /* istanbul ignore next */ []));
|
|
96
|
+
machine = initialLoadingVisibility;
|
|
97
|
+
timer;
|
|
98
|
+
constructor() {
|
|
99
|
+
inject(DestroyRef).onDestroy(() => clearTimeout(this.timer));
|
|
100
|
+
effect(() => {
|
|
101
|
+
const request = {
|
|
102
|
+
loading: this.loading(),
|
|
103
|
+
delay: this.delayValue(),
|
|
104
|
+
minDuration: this.holdValue(),
|
|
105
|
+
};
|
|
106
|
+
untracked(() => this.settle(request));
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* One step of the shared machine, plus at most one timer. The rule lives in
|
|
111
|
+
* `@slotted/core/loading` rather than here so React and Angular cannot
|
|
112
|
+
* disagree about when a placeholder appears — a difference no test that
|
|
113
|
+
* looked at either binding alone would report.
|
|
114
|
+
*/
|
|
115
|
+
settle(request) {
|
|
116
|
+
clearTimeout(this.timer);
|
|
117
|
+
const answer = nextLoadingVisibility({ ...request, now: Date.now(), state: this.machine });
|
|
118
|
+
this.machine = answer.state;
|
|
119
|
+
const was = this.painted();
|
|
120
|
+
this.painted.set(answer.state.visible);
|
|
121
|
+
if (was && !answer.state.visible)
|
|
122
|
+
this.reveal.emit();
|
|
123
|
+
if (answer.wait === null)
|
|
124
|
+
return;
|
|
125
|
+
this.timer = setTimeout(() => this.settle(request), answer.wait);
|
|
126
|
+
}
|
|
127
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlSkeletonRegion, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
128
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: SlSkeletonRegion, isStandalone: true, selector: "[slSkeletonRegion]", inputs: { loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, animation: { classPropertyName: "animation", publicName: "animation", isSignal: true, isRequired: false, transformFunction: null }, live: { classPropertyName: "live", publicName: "live", isSignal: true, isRequired: false, transformFunction: null }, messages: { classPropertyName: "messages", publicName: "messages", isSignal: true, isRequired: false, transformFunction: null }, loadedLabel: { classPropertyName: "loadedLabel", publicName: "loadedLabel", isSignal: true, isRequired: false, transformFunction: null }, delay: { classPropertyName: "delay", publicName: "delay", isSignal: true, isRequired: false, transformFunction: null }, minDuration: { classPropertyName: "minDuration", publicName: "minDuration", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { reveal: "reveal" }, host: { attributes: { "data-ui": "skeleton", "data-part": "region" }, properties: { "attr.data-animation": "animationValue()", "attr.data-loading": "painted() ? \"\" : null", "attr.aria-busy": "painted() ? \"true\" : null" } }, exportAs: ["slSkeletonRegion"], ngImport: i0, template: `@if (liveValue() !== 'off') {
|
|
129
|
+
<span data-part="announcement" data-ui="visually-hidden" role="status">{{
|
|
130
|
+
announcement()
|
|
131
|
+
}}</span>
|
|
132
|
+
}
|
|
133
|
+
<ng-content />`, isInline: true, styles: ["@layer slotted.components{[data-ui=skeleton][data-part=root][data-loading],[data-ui=skeleton][data-part=text][data-loading] [data-part=line]{--_fill: var( --slotted-skeleton-fill, color-mix( in oklab, var(--slotted-disabled-background, ButtonFace) 92%, var(--slotted-text, CanvasText) ) );--_edge: var(--slotted-skeleton-border-color, var(--slotted-border-subtle, ButtonBorder));--_highlight: var( --slotted-skeleton-highlight-color, color-mix(in oklab, var(--_fill) 86%, var(--slotted-text, CanvasText)) );--_trough: var( --slotted-skeleton-trough-color, color-mix(in oklab, var(--_fill) 60%, var(--slotted-surface-sunken, Canvas)) );background-color:var(--_fill);border:var(--slotted-skeleton-border-width, var(--slotted-border-width-thin, 1px)) solid var(--_edge);box-sizing:border-box;-webkit-user-select:none;user-select:none}[data-ui=skeleton][data-part=root]{display:inline-block;min-block-size:var(--slotted-skeleton-border-width, var(--slotted-border-width-thin, 1px))}[data-ui=skeleton][data-part=root][data-shape=text]{--_line: var(--slotted-skeleton-line-size, 1cap);block-size:var(--slotted-skeleton-block-size, var(--_line));border-radius:var(--slotted-radius-full, 9999px);inline-size:var(--slotted-skeleton-inline-size, 100%);vertical-align:calc(.5cap - .5 * var(--_line))}[data-ui=skeleton][data-part=root][data-shape=block]{block-size:var(--slotted-skeleton-block-size, auto);border-radius:var(--slotted-skeleton-radius, var(--slotted-radius-md, 6px));display:block;inline-size:var(--slotted-skeleton-inline-size, 100%);min-block-size:var(--slotted-skeleton-min-block-size, 1lh)}[data-ui=skeleton][data-part=root][data-shape=circle],[data-ui=skeleton][data-part=root][data-shape=square]{--_size: var(--slotted-skeleton-size, var(--slotted-avatar-size-md, 36px));block-size:var(--slotted-skeleton-block-size, var(--_size));inline-size:var(--slotted-skeleton-inline-size, var(--_size))}[data-ui=skeleton][data-part=root][data-shape=circle]{border-radius:var(--slotted-radius-full, 9999px)}[data-ui=skeleton][data-part=root][data-shape=square]{border-radius:var(--slotted-skeleton-radius, calc(var(--_size) / 6))}[data-ui=skeleton][data-part=root][data-shape=circle][data-size=xs],[data-ui=skeleton][data-part=root][data-shape=square][data-size=xs]{--_size: var(--slotted-skeleton-size, var(--slotted-avatar-size-xs, 24px))}[data-ui=skeleton][data-part=root][data-shape=circle][data-size=sm],[data-ui=skeleton][data-part=root][data-shape=square][data-size=sm]{--_size: var(--slotted-skeleton-size, var(--slotted-avatar-size-sm, 28px))}[data-ui=skeleton][data-part=root][data-shape=circle][data-size=md],[data-ui=skeleton][data-part=root][data-shape=square][data-size=md]{--_size: var(--slotted-skeleton-size, var(--slotted-avatar-size-md, 36px))}[data-ui=skeleton][data-part=root][data-shape=circle][data-size=lg],[data-ui=skeleton][data-part=root][data-shape=square][data-size=lg]{--_size: var(--slotted-skeleton-size, var(--slotted-avatar-size-lg, 48px))}[data-ui=skeleton][data-part=root][data-shape=circle][data-size=xl],[data-ui=skeleton][data-part=root][data-shape=square][data-size=xl]{--_size: var(--slotted-skeleton-size, var(--slotted-avatar-size-xl, 64px))}[data-ui=skeleton][data-part=root][data-loading]:not(:empty){block-size:var(--slotted-skeleton-block-size, auto);color:transparent;inline-size:var(--slotted-skeleton-inline-size, auto)}[data-ui=skeleton][data-part=root][data-loading]:not(:empty)>*{visibility:hidden}[data-ui=skeleton][data-part=text]{align-items:center;display:grid;grid-auto-rows:var(--slotted-skeleton-row-size, 1lh);inline-size:var(--slotted-skeleton-inline-size, 100%)}[data-ui=skeleton] [data-part=line]{block-size:var(--slotted-skeleton-line-size, 1cap);border-radius:var(--slotted-radius-full, 9999px);inline-size:100%}[data-ui=skeleton] [data-part=line]:last-child:not(:only-child){inline-size:var(--slotted-skeleton-last-line-size, 62%)}[data-ui=skeleton][data-part=root]:not([data-loading]),[data-ui=skeleton][data-part=text]:not([data-loading]){display:contents}[data-ui=skeleton][data-part=region]{inline-size:var(--slotted-skeleton-inline-size, 100%);min-inline-size:0}[data-ui=skeleton][data-part=root][data-loading]:not([data-animation=none]),[data-ui=skeleton][data-part=text][data-loading]:not([data-animation=none]) [data-part=line]{overflow:clip;position:relative}[data-ui=skeleton][data-part=root][data-animation=pulse][data-loading]:after,[data-ui=skeleton][data-part=root][data-animation=shimmer][data-loading]:after,[data-ui=skeleton][data-animation=pulse][data-loading] [data-part=line]:after,[data-ui=skeleton][data-animation=shimmer][data-loading] [data-part=line]:after{animation-delay:calc(var(--slotted-skeleton-phase, 0) * var(--slotted-duration-loop-slow) * -1);animation-duration:var(--slotted-duration-loop-slow);animation-iteration-count:infinite;content:\"\";inset-block:0;inset-inline:0;pointer-events:none;position:absolute}[data-ui=skeleton][data-part=root][data-animation=pulse][data-loading]:after,[data-ui=skeleton][data-animation=pulse][data-loading] [data-part=line]:after{animation-timing-function:ease-in-out;background-color:var(--_trough);opacity:0}[data-ui=skeleton][data-part=root][data-animation=shimmer][data-loading]:after,[data-ui=skeleton][data-animation=shimmer][data-loading] [data-part=line]:after{animation-timing-function:linear;background-image:linear-gradient(90deg,transparent 14%,var(--_highlight) 50%,transparent 86%)}[data-ui=skeleton][data-part=root][data-animation=shimmer][data-loading]:dir(rtl):after,[data-ui=skeleton][data-animation=shimmer][data-loading]:dir(rtl) [data-part=line]:after{animation-direction:reverse}@media(prefers-reduced-motion:no-preference){[data-ui=skeleton][data-part=root][data-animation=pulse][data-loading]:after,[data-ui=skeleton][data-animation=pulse][data-loading] [data-part=line]:after{animation-name:slotted-skeleton-pulse}[data-ui=skeleton][data-part=root][data-animation=shimmer][data-loading]:after,[data-ui=skeleton][data-animation=shimmer][data-loading] [data-part=line]:after{animation-name:slotted-skeleton-sweep}}@keyframes slotted-skeleton-pulse{50%{opacity:1}}@keyframes slotted-skeleton-sweep{0%{transform:translate(-100%)}to{transform:translate(100%)}}@media(prefers-reduced-motion:reduce){[data-ui=skeleton]:after,[data-ui=skeleton] [data-part=line]:after{animation:none}}@media(forced-colors:active){[data-ui=skeleton][data-part=root][data-loading]:after,[data-ui=skeleton][data-part=text][data-loading] [data-part=line]:after{background-image:none}}}\n", "@layer slotted.components{[data-ui=visually-hidden]:not([data-focusable]:focus-within){block-size:1px;border:0;clip-path:inset(50%);inline-size:1px;inset-block-start:0;inset-inline-start:0;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
134
|
+
}
|
|
135
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlSkeletonRegion, decorators: [{
|
|
136
|
+
type: Component,
|
|
137
|
+
args: [{ selector: '[slSkeletonRegion]', standalone: true, template: `@if (liveValue() !== 'off') {
|
|
138
|
+
<span data-part="announcement" data-ui="visually-hidden" role="status">{{
|
|
139
|
+
announcement()
|
|
140
|
+
}}</span>
|
|
141
|
+
}
|
|
142
|
+
<ng-content />`, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, exportAs: 'slSkeletonRegion', host: {
|
|
143
|
+
'data-ui': 'skeleton',
|
|
144
|
+
'data-part': 'region',
|
|
145
|
+
'[attr.data-animation]': 'animationValue()',
|
|
146
|
+
'[attr.data-loading]': 'painted() ? "" : null',
|
|
147
|
+
'[attr.aria-busy]': 'painted() ? "true" : null',
|
|
148
|
+
}, styles: ["@layer slotted.components{[data-ui=skeleton][data-part=root][data-loading],[data-ui=skeleton][data-part=text][data-loading] [data-part=line]{--_fill: var( --slotted-skeleton-fill, color-mix( in oklab, var(--slotted-disabled-background, ButtonFace) 92%, var(--slotted-text, CanvasText) ) );--_edge: var(--slotted-skeleton-border-color, var(--slotted-border-subtle, ButtonBorder));--_highlight: var( --slotted-skeleton-highlight-color, color-mix(in oklab, var(--_fill) 86%, var(--slotted-text, CanvasText)) );--_trough: var( --slotted-skeleton-trough-color, color-mix(in oklab, var(--_fill) 60%, var(--slotted-surface-sunken, Canvas)) );background-color:var(--_fill);border:var(--slotted-skeleton-border-width, var(--slotted-border-width-thin, 1px)) solid var(--_edge);box-sizing:border-box;-webkit-user-select:none;user-select:none}[data-ui=skeleton][data-part=root]{display:inline-block;min-block-size:var(--slotted-skeleton-border-width, var(--slotted-border-width-thin, 1px))}[data-ui=skeleton][data-part=root][data-shape=text]{--_line: var(--slotted-skeleton-line-size, 1cap);block-size:var(--slotted-skeleton-block-size, var(--_line));border-radius:var(--slotted-radius-full, 9999px);inline-size:var(--slotted-skeleton-inline-size, 100%);vertical-align:calc(.5cap - .5 * var(--_line))}[data-ui=skeleton][data-part=root][data-shape=block]{block-size:var(--slotted-skeleton-block-size, auto);border-radius:var(--slotted-skeleton-radius, var(--slotted-radius-md, 6px));display:block;inline-size:var(--slotted-skeleton-inline-size, 100%);min-block-size:var(--slotted-skeleton-min-block-size, 1lh)}[data-ui=skeleton][data-part=root][data-shape=circle],[data-ui=skeleton][data-part=root][data-shape=square]{--_size: var(--slotted-skeleton-size, var(--slotted-avatar-size-md, 36px));block-size:var(--slotted-skeleton-block-size, var(--_size));inline-size:var(--slotted-skeleton-inline-size, var(--_size))}[data-ui=skeleton][data-part=root][data-shape=circle]{border-radius:var(--slotted-radius-full, 9999px)}[data-ui=skeleton][data-part=root][data-shape=square]{border-radius:var(--slotted-skeleton-radius, calc(var(--_size) / 6))}[data-ui=skeleton][data-part=root][data-shape=circle][data-size=xs],[data-ui=skeleton][data-part=root][data-shape=square][data-size=xs]{--_size: var(--slotted-skeleton-size, var(--slotted-avatar-size-xs, 24px))}[data-ui=skeleton][data-part=root][data-shape=circle][data-size=sm],[data-ui=skeleton][data-part=root][data-shape=square][data-size=sm]{--_size: var(--slotted-skeleton-size, var(--slotted-avatar-size-sm, 28px))}[data-ui=skeleton][data-part=root][data-shape=circle][data-size=md],[data-ui=skeleton][data-part=root][data-shape=square][data-size=md]{--_size: var(--slotted-skeleton-size, var(--slotted-avatar-size-md, 36px))}[data-ui=skeleton][data-part=root][data-shape=circle][data-size=lg],[data-ui=skeleton][data-part=root][data-shape=square][data-size=lg]{--_size: var(--slotted-skeleton-size, var(--slotted-avatar-size-lg, 48px))}[data-ui=skeleton][data-part=root][data-shape=circle][data-size=xl],[data-ui=skeleton][data-part=root][data-shape=square][data-size=xl]{--_size: var(--slotted-skeleton-size, var(--slotted-avatar-size-xl, 64px))}[data-ui=skeleton][data-part=root][data-loading]:not(:empty){block-size:var(--slotted-skeleton-block-size, auto);color:transparent;inline-size:var(--slotted-skeleton-inline-size, auto)}[data-ui=skeleton][data-part=root][data-loading]:not(:empty)>*{visibility:hidden}[data-ui=skeleton][data-part=text]{align-items:center;display:grid;grid-auto-rows:var(--slotted-skeleton-row-size, 1lh);inline-size:var(--slotted-skeleton-inline-size, 100%)}[data-ui=skeleton] [data-part=line]{block-size:var(--slotted-skeleton-line-size, 1cap);border-radius:var(--slotted-radius-full, 9999px);inline-size:100%}[data-ui=skeleton] [data-part=line]:last-child:not(:only-child){inline-size:var(--slotted-skeleton-last-line-size, 62%)}[data-ui=skeleton][data-part=root]:not([data-loading]),[data-ui=skeleton][data-part=text]:not([data-loading]){display:contents}[data-ui=skeleton][data-part=region]{inline-size:var(--slotted-skeleton-inline-size, 100%);min-inline-size:0}[data-ui=skeleton][data-part=root][data-loading]:not([data-animation=none]),[data-ui=skeleton][data-part=text][data-loading]:not([data-animation=none]) [data-part=line]{overflow:clip;position:relative}[data-ui=skeleton][data-part=root][data-animation=pulse][data-loading]:after,[data-ui=skeleton][data-part=root][data-animation=shimmer][data-loading]:after,[data-ui=skeleton][data-animation=pulse][data-loading] [data-part=line]:after,[data-ui=skeleton][data-animation=shimmer][data-loading] [data-part=line]:after{animation-delay:calc(var(--slotted-skeleton-phase, 0) * var(--slotted-duration-loop-slow) * -1);animation-duration:var(--slotted-duration-loop-slow);animation-iteration-count:infinite;content:\"\";inset-block:0;inset-inline:0;pointer-events:none;position:absolute}[data-ui=skeleton][data-part=root][data-animation=pulse][data-loading]:after,[data-ui=skeleton][data-animation=pulse][data-loading] [data-part=line]:after{animation-timing-function:ease-in-out;background-color:var(--_trough);opacity:0}[data-ui=skeleton][data-part=root][data-animation=shimmer][data-loading]:after,[data-ui=skeleton][data-animation=shimmer][data-loading] [data-part=line]:after{animation-timing-function:linear;background-image:linear-gradient(90deg,transparent 14%,var(--_highlight) 50%,transparent 86%)}[data-ui=skeleton][data-part=root][data-animation=shimmer][data-loading]:dir(rtl):after,[data-ui=skeleton][data-animation=shimmer][data-loading]:dir(rtl) [data-part=line]:after{animation-direction:reverse}@media(prefers-reduced-motion:no-preference){[data-ui=skeleton][data-part=root][data-animation=pulse][data-loading]:after,[data-ui=skeleton][data-animation=pulse][data-loading] [data-part=line]:after{animation-name:slotted-skeleton-pulse}[data-ui=skeleton][data-part=root][data-animation=shimmer][data-loading]:after,[data-ui=skeleton][data-animation=shimmer][data-loading] [data-part=line]:after{animation-name:slotted-skeleton-sweep}}@keyframes slotted-skeleton-pulse{50%{opacity:1}}@keyframes slotted-skeleton-sweep{0%{transform:translate(-100%)}to{transform:translate(100%)}}@media(prefers-reduced-motion:reduce){[data-ui=skeleton]:after,[data-ui=skeleton] [data-part=line]:after{animation:none}}@media(forced-colors:active){[data-ui=skeleton][data-part=root][data-loading]:after,[data-ui=skeleton][data-part=text][data-loading] [data-part=line]:after{background-image:none}}}\n", "@layer slotted.components{[data-ui=visually-hidden]:not([data-focusable]:focus-within){block-size:1px;border:0;clip-path:inset(50%);inline-size:1px;inset-block-start:0;inset-inline-start:0;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap}}\n"] }]
|
|
149
|
+
}], ctorParameters: () => [], propDecorators: { loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], animation: [{ type: i0.Input, args: [{ isSignal: true, alias: "animation", required: false }] }], live: [{ type: i0.Input, args: [{ isSignal: true, alias: "live", required: false }] }], messages: [{ type: i0.Input, args: [{ isSignal: true, alias: "messages", required: false }] }], loadedLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "loadedLabel", required: false }] }], delay: [{ type: i0.Input, args: [{ isSignal: true, alias: "delay", required: false }] }], minDuration: [{ type: i0.Input, args: [{ isSignal: true, alias: "minDuration", required: false }] }], reveal: [{ type: i0.Output, args: ["reveal"] }] } });
|
|
150
|
+
/**
|
|
151
|
+
* Absence has to survive the transform. `numberAttribute` maps an unset input
|
|
152
|
+
* to `NaN`, and `NaN` is a value: it would stop the application's own timing
|
|
153
|
+
* decision from ever reaching a region that says nothing.
|
|
154
|
+
*/
|
|
155
|
+
function optionalNumber(value) {
|
|
156
|
+
return value === undefined || value === null || value === '' ? undefined : numberAttribute(value);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* One placeholder box.
|
|
161
|
+
*
|
|
162
|
+
* With no projected content it draws the geometry `shape` and `size` describe.
|
|
163
|
+
* With content it takes *that* content's geometry and covers it, which is the
|
|
164
|
+
* only form in which the reserved space cannot disagree with what replaces it
|
|
165
|
+
* — MUI infers the box from `children` and React Spectrum clones the child
|
|
166
|
+
* with a skeleton class, and both arrive here. The stylesheet tells the two
|
|
167
|
+
* apart with `:empty`, so nothing has to be declared about which one this is.
|
|
168
|
+
*
|
|
169
|
+
* Hidden from assistive technology and taken out of the tab order while it is
|
|
170
|
+
* painted: reading out the absence of something is noise, and focus must not
|
|
171
|
+
* fall into content that is not ready. An `aria-hidden` the consumer wrote on
|
|
172
|
+
* their own element is read once through `HostAttributeToken` and kept, which
|
|
173
|
+
* is the escape hatch this family established in August.
|
|
174
|
+
*
|
|
175
|
+
* The selector is a bare attribute, so the element stays the consumer's: a
|
|
176
|
+
* placeholder standing in for a word belongs in a `span` and one standing in
|
|
177
|
+
* for a card belongs in whatever the card is.
|
|
178
|
+
*/
|
|
179
|
+
class SlSkeleton {
|
|
180
|
+
shape = input(SKELETON_DEFAULT_SHAPE, /* @ts-ignore */
|
|
181
|
+
...(ngDevMode ? [{ debugName: "shape" }] : /* istanbul ignore next */ []));
|
|
182
|
+
size = input(SKELETON_DEFAULT_SIZE, /* @ts-ignore */
|
|
183
|
+
...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
|
|
184
|
+
animation = input(undefined, /* @ts-ignore */
|
|
185
|
+
...(ngDevMode ? [{ debugName: "animation" }] : /* istanbul ignore next */ []));
|
|
186
|
+
loading = input(undefined, { ...(ngDevMode ? { debugName: "loading" } : /* istanbul ignore next */ {}), transform: optionalBoolean });
|
|
187
|
+
/**
|
|
188
|
+
* The geometry, named for the axes the layout is written in rather than for
|
|
189
|
+
* the screen's. Every rule in this library is logical, and a `width` input
|
|
190
|
+
* feeding an `inline-size` declaration would be one word lying about the
|
|
191
|
+
* other.
|
|
192
|
+
*/
|
|
193
|
+
inlineSize = input(undefined, /* @ts-ignore */
|
|
194
|
+
...(ngDevMode ? [{ debugName: "inlineSize" }] : /* istanbul ignore next */ []));
|
|
195
|
+
blockSize = input(undefined, /* @ts-ignore */
|
|
196
|
+
...(ngDevMode ? [{ debugName: "blockSize" }] : /* istanbul ignore next */ []));
|
|
197
|
+
defaults = injectSkeletonDefaults();
|
|
198
|
+
/** `null` outside a region, which is how "nobody said" differs from "false". */
|
|
199
|
+
region = inject(SlSkeletonRegion, { optional: true, skipSelf: true });
|
|
200
|
+
ownAriaHidden = inject(new HostAttributeToken('aria-hidden'), {
|
|
201
|
+
optional: true,
|
|
202
|
+
});
|
|
203
|
+
painted = computed(() => this.loading() ?? this.region?.painted() ?? true, /* @ts-ignore */
|
|
204
|
+
...(ngDevMode ? [{ debugName: "painted" }] : /* istanbul ignore next */ []));
|
|
205
|
+
animationValue = computed(() => this.animation() ??
|
|
206
|
+
this.region?.animationValue() ??
|
|
207
|
+
this.defaults.animation ??
|
|
208
|
+
SKELETON_DEFAULT_ANIMATION, /* @ts-ignore */
|
|
209
|
+
...(ngDevMode ? [{ debugName: "animationValue" }] : /* istanbul ignore next */ []));
|
|
210
|
+
ariaHidden = computed(() => this.painted() ? (this.ownAriaHidden ?? 'true') : this.ownAriaHidden, /* @ts-ignore */
|
|
211
|
+
...(ngDevMode ? [{ debugName: "ariaHidden" }] : /* istanbul ignore next */ []));
|
|
212
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlSkeleton, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
213
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.7", type: SlSkeleton, isStandalone: true, selector: "[slSkeleton]", inputs: { shape: { classPropertyName: "shape", publicName: "shape", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, animation: { classPropertyName: "animation", publicName: "animation", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, inlineSize: { classPropertyName: "inlineSize", publicName: "inlineSize", isSignal: true, isRequired: false, transformFunction: null }, blockSize: { classPropertyName: "blockSize", publicName: "blockSize", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-ui": "skeleton", "data-part": "root" }, properties: { "attr.data-shape": "shape()", "attr.data-size": "size()", "attr.data-animation": "animationValue()", "attr.data-loading": "painted() ? \"\" : null", "attr.aria-hidden": "ariaHidden()", "attr.inert": "painted() ? \"\" : null", "style.--slotted-skeleton-inline-size": "inlineSize()", "style.--slotted-skeleton-block-size": "blockSize()" } }, exportAs: ["slSkeleton"], ngImport: i0, template: '<ng-content />', isInline: true, styles: ["@layer slotted.components{[data-ui=skeleton][data-part=root][data-loading],[data-ui=skeleton][data-part=text][data-loading] [data-part=line]{--_fill: var( --slotted-skeleton-fill, color-mix( in oklab, var(--slotted-disabled-background, ButtonFace) 92%, var(--slotted-text, CanvasText) ) );--_edge: var(--slotted-skeleton-border-color, var(--slotted-border-subtle, ButtonBorder));--_highlight: var( --slotted-skeleton-highlight-color, color-mix(in oklab, var(--_fill) 86%, var(--slotted-text, CanvasText)) );--_trough: var( --slotted-skeleton-trough-color, color-mix(in oklab, var(--_fill) 60%, var(--slotted-surface-sunken, Canvas)) );background-color:var(--_fill);border:var(--slotted-skeleton-border-width, var(--slotted-border-width-thin, 1px)) solid var(--_edge);box-sizing:border-box;-webkit-user-select:none;user-select:none}[data-ui=skeleton][data-part=root]{display:inline-block;min-block-size:var(--slotted-skeleton-border-width, var(--slotted-border-width-thin, 1px))}[data-ui=skeleton][data-part=root][data-shape=text]{--_line: var(--slotted-skeleton-line-size, 1cap);block-size:var(--slotted-skeleton-block-size, var(--_line));border-radius:var(--slotted-radius-full, 9999px);inline-size:var(--slotted-skeleton-inline-size, 100%);vertical-align:calc(.5cap - .5 * var(--_line))}[data-ui=skeleton][data-part=root][data-shape=block]{block-size:var(--slotted-skeleton-block-size, auto);border-radius:var(--slotted-skeleton-radius, var(--slotted-radius-md, 6px));display:block;inline-size:var(--slotted-skeleton-inline-size, 100%);min-block-size:var(--slotted-skeleton-min-block-size, 1lh)}[data-ui=skeleton][data-part=root][data-shape=circle],[data-ui=skeleton][data-part=root][data-shape=square]{--_size: var(--slotted-skeleton-size, var(--slotted-avatar-size-md, 36px));block-size:var(--slotted-skeleton-block-size, var(--_size));inline-size:var(--slotted-skeleton-inline-size, var(--_size))}[data-ui=skeleton][data-part=root][data-shape=circle]{border-radius:var(--slotted-radius-full, 9999px)}[data-ui=skeleton][data-part=root][data-shape=square]{border-radius:var(--slotted-skeleton-radius, calc(var(--_size) / 6))}[data-ui=skeleton][data-part=root][data-shape=circle][data-size=xs],[data-ui=skeleton][data-part=root][data-shape=square][data-size=xs]{--_size: var(--slotted-skeleton-size, var(--slotted-avatar-size-xs, 24px))}[data-ui=skeleton][data-part=root][data-shape=circle][data-size=sm],[data-ui=skeleton][data-part=root][data-shape=square][data-size=sm]{--_size: var(--slotted-skeleton-size, var(--slotted-avatar-size-sm, 28px))}[data-ui=skeleton][data-part=root][data-shape=circle][data-size=md],[data-ui=skeleton][data-part=root][data-shape=square][data-size=md]{--_size: var(--slotted-skeleton-size, var(--slotted-avatar-size-md, 36px))}[data-ui=skeleton][data-part=root][data-shape=circle][data-size=lg],[data-ui=skeleton][data-part=root][data-shape=square][data-size=lg]{--_size: var(--slotted-skeleton-size, var(--slotted-avatar-size-lg, 48px))}[data-ui=skeleton][data-part=root][data-shape=circle][data-size=xl],[data-ui=skeleton][data-part=root][data-shape=square][data-size=xl]{--_size: var(--slotted-skeleton-size, var(--slotted-avatar-size-xl, 64px))}[data-ui=skeleton][data-part=root][data-loading]:not(:empty){block-size:var(--slotted-skeleton-block-size, auto);color:transparent;inline-size:var(--slotted-skeleton-inline-size, auto)}[data-ui=skeleton][data-part=root][data-loading]:not(:empty)>*{visibility:hidden}[data-ui=skeleton][data-part=text]{align-items:center;display:grid;grid-auto-rows:var(--slotted-skeleton-row-size, 1lh);inline-size:var(--slotted-skeleton-inline-size, 100%)}[data-ui=skeleton] [data-part=line]{block-size:var(--slotted-skeleton-line-size, 1cap);border-radius:var(--slotted-radius-full, 9999px);inline-size:100%}[data-ui=skeleton] [data-part=line]:last-child:not(:only-child){inline-size:var(--slotted-skeleton-last-line-size, 62%)}[data-ui=skeleton][data-part=root]:not([data-loading]),[data-ui=skeleton][data-part=text]:not([data-loading]){display:contents}[data-ui=skeleton][data-part=region]{inline-size:var(--slotted-skeleton-inline-size, 100%);min-inline-size:0}[data-ui=skeleton][data-part=root][data-loading]:not([data-animation=none]),[data-ui=skeleton][data-part=text][data-loading]:not([data-animation=none]) [data-part=line]{overflow:clip;position:relative}[data-ui=skeleton][data-part=root][data-animation=pulse][data-loading]:after,[data-ui=skeleton][data-part=root][data-animation=shimmer][data-loading]:after,[data-ui=skeleton][data-animation=pulse][data-loading] [data-part=line]:after,[data-ui=skeleton][data-animation=shimmer][data-loading] [data-part=line]:after{animation-delay:calc(var(--slotted-skeleton-phase, 0) * var(--slotted-duration-loop-slow) * -1);animation-duration:var(--slotted-duration-loop-slow);animation-iteration-count:infinite;content:\"\";inset-block:0;inset-inline:0;pointer-events:none;position:absolute}[data-ui=skeleton][data-part=root][data-animation=pulse][data-loading]:after,[data-ui=skeleton][data-animation=pulse][data-loading] [data-part=line]:after{animation-timing-function:ease-in-out;background-color:var(--_trough);opacity:0}[data-ui=skeleton][data-part=root][data-animation=shimmer][data-loading]:after,[data-ui=skeleton][data-animation=shimmer][data-loading] [data-part=line]:after{animation-timing-function:linear;background-image:linear-gradient(90deg,transparent 14%,var(--_highlight) 50%,transparent 86%)}[data-ui=skeleton][data-part=root][data-animation=shimmer][data-loading]:dir(rtl):after,[data-ui=skeleton][data-animation=shimmer][data-loading]:dir(rtl) [data-part=line]:after{animation-direction:reverse}@media(prefers-reduced-motion:no-preference){[data-ui=skeleton][data-part=root][data-animation=pulse][data-loading]:after,[data-ui=skeleton][data-animation=pulse][data-loading] [data-part=line]:after{animation-name:slotted-skeleton-pulse}[data-ui=skeleton][data-part=root][data-animation=shimmer][data-loading]:after,[data-ui=skeleton][data-animation=shimmer][data-loading] [data-part=line]:after{animation-name:slotted-skeleton-sweep}}@keyframes slotted-skeleton-pulse{50%{opacity:1}}@keyframes slotted-skeleton-sweep{0%{transform:translate(-100%)}to{transform:translate(100%)}}@media(prefers-reduced-motion:reduce){[data-ui=skeleton]:after,[data-ui=skeleton] [data-part=line]:after{animation:none}}@media(forced-colors:active){[data-ui=skeleton][data-part=root][data-loading]:after,[data-ui=skeleton][data-part=text][data-loading] [data-part=line]:after{background-image:none}}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
214
|
+
}
|
|
215
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlSkeleton, decorators: [{
|
|
216
|
+
type: Component,
|
|
217
|
+
args: [{ selector: '[slSkeleton]', standalone: true, template: '<ng-content />', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, exportAs: 'slSkeleton', host: {
|
|
218
|
+
'data-ui': 'skeleton',
|
|
219
|
+
'data-part': 'root',
|
|
220
|
+
'[attr.data-shape]': 'shape()',
|
|
221
|
+
'[attr.data-size]': 'size()',
|
|
222
|
+
'[attr.data-animation]': 'animationValue()',
|
|
223
|
+
'[attr.data-loading]': 'painted() ? "" : null',
|
|
224
|
+
'[attr.aria-hidden]': 'ariaHidden()',
|
|
225
|
+
'[attr.inert]': 'painted() ? "" : null',
|
|
226
|
+
'[style.--slotted-skeleton-inline-size]': 'inlineSize()',
|
|
227
|
+
'[style.--slotted-skeleton-block-size]': 'blockSize()',
|
|
228
|
+
}, styles: ["@layer slotted.components{[data-ui=skeleton][data-part=root][data-loading],[data-ui=skeleton][data-part=text][data-loading] [data-part=line]{--_fill: var( --slotted-skeleton-fill, color-mix( in oklab, var(--slotted-disabled-background, ButtonFace) 92%, var(--slotted-text, CanvasText) ) );--_edge: var(--slotted-skeleton-border-color, var(--slotted-border-subtle, ButtonBorder));--_highlight: var( --slotted-skeleton-highlight-color, color-mix(in oklab, var(--_fill) 86%, var(--slotted-text, CanvasText)) );--_trough: var( --slotted-skeleton-trough-color, color-mix(in oklab, var(--_fill) 60%, var(--slotted-surface-sunken, Canvas)) );background-color:var(--_fill);border:var(--slotted-skeleton-border-width, var(--slotted-border-width-thin, 1px)) solid var(--_edge);box-sizing:border-box;-webkit-user-select:none;user-select:none}[data-ui=skeleton][data-part=root]{display:inline-block;min-block-size:var(--slotted-skeleton-border-width, var(--slotted-border-width-thin, 1px))}[data-ui=skeleton][data-part=root][data-shape=text]{--_line: var(--slotted-skeleton-line-size, 1cap);block-size:var(--slotted-skeleton-block-size, var(--_line));border-radius:var(--slotted-radius-full, 9999px);inline-size:var(--slotted-skeleton-inline-size, 100%);vertical-align:calc(.5cap - .5 * var(--_line))}[data-ui=skeleton][data-part=root][data-shape=block]{block-size:var(--slotted-skeleton-block-size, auto);border-radius:var(--slotted-skeleton-radius, var(--slotted-radius-md, 6px));display:block;inline-size:var(--slotted-skeleton-inline-size, 100%);min-block-size:var(--slotted-skeleton-min-block-size, 1lh)}[data-ui=skeleton][data-part=root][data-shape=circle],[data-ui=skeleton][data-part=root][data-shape=square]{--_size: var(--slotted-skeleton-size, var(--slotted-avatar-size-md, 36px));block-size:var(--slotted-skeleton-block-size, var(--_size));inline-size:var(--slotted-skeleton-inline-size, var(--_size))}[data-ui=skeleton][data-part=root][data-shape=circle]{border-radius:var(--slotted-radius-full, 9999px)}[data-ui=skeleton][data-part=root][data-shape=square]{border-radius:var(--slotted-skeleton-radius, calc(var(--_size) / 6))}[data-ui=skeleton][data-part=root][data-shape=circle][data-size=xs],[data-ui=skeleton][data-part=root][data-shape=square][data-size=xs]{--_size: var(--slotted-skeleton-size, var(--slotted-avatar-size-xs, 24px))}[data-ui=skeleton][data-part=root][data-shape=circle][data-size=sm],[data-ui=skeleton][data-part=root][data-shape=square][data-size=sm]{--_size: var(--slotted-skeleton-size, var(--slotted-avatar-size-sm, 28px))}[data-ui=skeleton][data-part=root][data-shape=circle][data-size=md],[data-ui=skeleton][data-part=root][data-shape=square][data-size=md]{--_size: var(--slotted-skeleton-size, var(--slotted-avatar-size-md, 36px))}[data-ui=skeleton][data-part=root][data-shape=circle][data-size=lg],[data-ui=skeleton][data-part=root][data-shape=square][data-size=lg]{--_size: var(--slotted-skeleton-size, var(--slotted-avatar-size-lg, 48px))}[data-ui=skeleton][data-part=root][data-shape=circle][data-size=xl],[data-ui=skeleton][data-part=root][data-shape=square][data-size=xl]{--_size: var(--slotted-skeleton-size, var(--slotted-avatar-size-xl, 64px))}[data-ui=skeleton][data-part=root][data-loading]:not(:empty){block-size:var(--slotted-skeleton-block-size, auto);color:transparent;inline-size:var(--slotted-skeleton-inline-size, auto)}[data-ui=skeleton][data-part=root][data-loading]:not(:empty)>*{visibility:hidden}[data-ui=skeleton][data-part=text]{align-items:center;display:grid;grid-auto-rows:var(--slotted-skeleton-row-size, 1lh);inline-size:var(--slotted-skeleton-inline-size, 100%)}[data-ui=skeleton] [data-part=line]{block-size:var(--slotted-skeleton-line-size, 1cap);border-radius:var(--slotted-radius-full, 9999px);inline-size:100%}[data-ui=skeleton] [data-part=line]:last-child:not(:only-child){inline-size:var(--slotted-skeleton-last-line-size, 62%)}[data-ui=skeleton][data-part=root]:not([data-loading]),[data-ui=skeleton][data-part=text]:not([data-loading]){display:contents}[data-ui=skeleton][data-part=region]{inline-size:var(--slotted-skeleton-inline-size, 100%);min-inline-size:0}[data-ui=skeleton][data-part=root][data-loading]:not([data-animation=none]),[data-ui=skeleton][data-part=text][data-loading]:not([data-animation=none]) [data-part=line]{overflow:clip;position:relative}[data-ui=skeleton][data-part=root][data-animation=pulse][data-loading]:after,[data-ui=skeleton][data-part=root][data-animation=shimmer][data-loading]:after,[data-ui=skeleton][data-animation=pulse][data-loading] [data-part=line]:after,[data-ui=skeleton][data-animation=shimmer][data-loading] [data-part=line]:after{animation-delay:calc(var(--slotted-skeleton-phase, 0) * var(--slotted-duration-loop-slow) * -1);animation-duration:var(--slotted-duration-loop-slow);animation-iteration-count:infinite;content:\"\";inset-block:0;inset-inline:0;pointer-events:none;position:absolute}[data-ui=skeleton][data-part=root][data-animation=pulse][data-loading]:after,[data-ui=skeleton][data-animation=pulse][data-loading] [data-part=line]:after{animation-timing-function:ease-in-out;background-color:var(--_trough);opacity:0}[data-ui=skeleton][data-part=root][data-animation=shimmer][data-loading]:after,[data-ui=skeleton][data-animation=shimmer][data-loading] [data-part=line]:after{animation-timing-function:linear;background-image:linear-gradient(90deg,transparent 14%,var(--_highlight) 50%,transparent 86%)}[data-ui=skeleton][data-part=root][data-animation=shimmer][data-loading]:dir(rtl):after,[data-ui=skeleton][data-animation=shimmer][data-loading]:dir(rtl) [data-part=line]:after{animation-direction:reverse}@media(prefers-reduced-motion:no-preference){[data-ui=skeleton][data-part=root][data-animation=pulse][data-loading]:after,[data-ui=skeleton][data-animation=pulse][data-loading] [data-part=line]:after{animation-name:slotted-skeleton-pulse}[data-ui=skeleton][data-part=root][data-animation=shimmer][data-loading]:after,[data-ui=skeleton][data-animation=shimmer][data-loading] [data-part=line]:after{animation-name:slotted-skeleton-sweep}}@keyframes slotted-skeleton-pulse{50%{opacity:1}}@keyframes slotted-skeleton-sweep{0%{transform:translate(-100%)}to{transform:translate(100%)}}@media(prefers-reduced-motion:reduce){[data-ui=skeleton]:after,[data-ui=skeleton] [data-part=line]:after{animation:none}}@media(forced-colors:active){[data-ui=skeleton][data-part=root][data-loading]:after,[data-ui=skeleton][data-part=text][data-loading] [data-part=line]:after{background-image:none}}}\n"] }]
|
|
229
|
+
}], propDecorators: { shape: [{ type: i0.Input, args: [{ isSignal: true, alias: "shape", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], animation: [{ type: i0.Input, args: [{ isSignal: true, alias: "animation", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], inlineSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "inlineSize", required: false }] }], blockSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "blockSize", required: false }] }] } });
|
|
230
|
+
/**
|
|
231
|
+
* Absence has to survive the transform. `booleanAttribute` maps an unset input
|
|
232
|
+
* to `false`, and `false` is a value: it would stop the region's own answer
|
|
233
|
+
* from ever reaching a placeholder that says nothing.
|
|
234
|
+
*/
|
|
235
|
+
function optionalBoolean(value) {
|
|
236
|
+
return value === undefined ? undefined : booleanAttribute(value);
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
/**
|
|
240
|
+
* The rows of a paragraph that has not arrived.
|
|
241
|
+
*
|
|
242
|
+
* Each row is exactly one line box and the bar inside it is one em, so `lines`
|
|
243
|
+
* rows occupy exactly the `lines` lines of the paragraph they stand in — at
|
|
244
|
+
* every type size and every density, because both come from the type the rows
|
|
245
|
+
* are placed in rather than from a number typed here. Every implementation
|
|
246
|
+
* surveyed while this family was rebuilt states a pixel height instead, and is
|
|
247
|
+
* therefore right at one density and wrong at the others.
|
|
248
|
+
*
|
|
249
|
+
* The last row is drawn short, which is what makes a stack of bars read as
|
|
250
|
+
* prose rather than as a barcode — and only when there is more than one, since
|
|
251
|
+
* a lone row cut to 62% stands for a sentence that was never there. The widths
|
|
252
|
+
* are fixed rather than random: Carbon randomises them, and a randomised width
|
|
253
|
+
* is a hydration mismatch waiting for its first server-rendered page.
|
|
254
|
+
*/
|
|
255
|
+
class SlSkeletonText {
|
|
256
|
+
lines = input(SKELETON_DEFAULT_LINES, { ...(ngDevMode ? { debugName: "lines" } : /* istanbul ignore next */ {}), transform: numberAttribute });
|
|
257
|
+
animation = input(undefined, /* @ts-ignore */
|
|
258
|
+
...(ngDevMode ? [{ debugName: "animation" }] : /* istanbul ignore next */ []));
|
|
259
|
+
loading = input(undefined, { ...(ngDevMode ? { debugName: "loading" } : /* istanbul ignore next */ {}), transform: optionalBoolean });
|
|
260
|
+
lastLineSize = input(undefined, /* @ts-ignore */
|
|
261
|
+
...(ngDevMode ? [{ debugName: "lastLineSize" }] : /* istanbul ignore next */ []));
|
|
262
|
+
inlineSize = input(undefined, /* @ts-ignore */
|
|
263
|
+
...(ngDevMode ? [{ debugName: "inlineSize" }] : /* istanbul ignore next */ []));
|
|
264
|
+
defaults = injectSkeletonDefaults();
|
|
265
|
+
region = inject(SlSkeletonRegion, { optional: true, skipSelf: true });
|
|
266
|
+
painted = computed(() => this.loading() ?? this.region?.painted() ?? true, /* @ts-ignore */
|
|
267
|
+
...(ngDevMode ? [{ debugName: "painted" }] : /* istanbul ignore next */ []));
|
|
268
|
+
animationValue = computed(() => this.animation() ??
|
|
269
|
+
this.region?.animationValue() ??
|
|
270
|
+
this.defaults.animation ??
|
|
271
|
+
SKELETON_DEFAULT_ANIMATION, /* @ts-ignore */
|
|
272
|
+
...(ngDevMode ? [{ debugName: "animationValue" }] : /* istanbul ignore next */ []));
|
|
273
|
+
lastLineSizeValue = computed(() => this.lastLineSize() ?? this.defaults.lastLineSize, /* @ts-ignore */
|
|
274
|
+
...(ngDevMode ? [{ debugName: "lastLineSizeValue" }] : /* istanbul ignore next */ []));
|
|
275
|
+
/**
|
|
276
|
+
* No rows at all once the paragraph has arrived. The element stays, and the
|
|
277
|
+
* stylesheet takes it out of layout, so nothing the consumer wrote beside it
|
|
278
|
+
* is remounted on the way through.
|
|
279
|
+
*
|
|
280
|
+
* A paragraph of no rows is not a paragraph, whatever arithmetic produced
|
|
281
|
+
* the number, so the count never falls below one.
|
|
282
|
+
*/
|
|
283
|
+
rows = computed(() => {
|
|
284
|
+
if (!this.painted())
|
|
285
|
+
return [];
|
|
286
|
+
const count = Math.max(1, Math.trunc(this.lines()) || 1);
|
|
287
|
+
return Array.from({ length: count }, (_, row) => row);
|
|
288
|
+
}, /* @ts-ignore */
|
|
289
|
+
...(ngDevMode ? [{ debugName: "rows" }] : /* istanbul ignore next */ []));
|
|
290
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlSkeletonText, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
291
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: SlSkeletonText, isStandalone: true, selector: "[slSkeletonText]", inputs: { lines: { classPropertyName: "lines", publicName: "lines", isSignal: true, isRequired: false, transformFunction: null }, animation: { classPropertyName: "animation", publicName: "animation", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, lastLineSize: { classPropertyName: "lastLineSize", publicName: "lastLineSize", isSignal: true, isRequired: false, transformFunction: null }, inlineSize: { classPropertyName: "inlineSize", publicName: "inlineSize", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-ui": "skeleton", "data-part": "text" }, properties: { "attr.data-animation": "animationValue()", "attr.data-loading": "painted() ? \"\" : null", "attr.aria-hidden": "painted() ? \"true\" : null", "attr.inert": "painted() ? \"\" : null", "style.--slotted-skeleton-inline-size": "inlineSize()", "style.--slotted-skeleton-last-line-size": "lastLineSizeValue()" } }, exportAs: ["slSkeletonText"], ngImport: i0, template: `@for (row of rows(); track row) {
|
|
292
|
+
<span data-part="line"></span>
|
|
293
|
+
}`, isInline: true, styles: ["@layer slotted.components{[data-ui=skeleton][data-part=root][data-loading],[data-ui=skeleton][data-part=text][data-loading] [data-part=line]{--_fill: var( --slotted-skeleton-fill, color-mix( in oklab, var(--slotted-disabled-background, ButtonFace) 92%, var(--slotted-text, CanvasText) ) );--_edge: var(--slotted-skeleton-border-color, var(--slotted-border-subtle, ButtonBorder));--_highlight: var( --slotted-skeleton-highlight-color, color-mix(in oklab, var(--_fill) 86%, var(--slotted-text, CanvasText)) );--_trough: var( --slotted-skeleton-trough-color, color-mix(in oklab, var(--_fill) 60%, var(--slotted-surface-sunken, Canvas)) );background-color:var(--_fill);border:var(--slotted-skeleton-border-width, var(--slotted-border-width-thin, 1px)) solid var(--_edge);box-sizing:border-box;-webkit-user-select:none;user-select:none}[data-ui=skeleton][data-part=root]{display:inline-block;min-block-size:var(--slotted-skeleton-border-width, var(--slotted-border-width-thin, 1px))}[data-ui=skeleton][data-part=root][data-shape=text]{--_line: var(--slotted-skeleton-line-size, 1cap);block-size:var(--slotted-skeleton-block-size, var(--_line));border-radius:var(--slotted-radius-full, 9999px);inline-size:var(--slotted-skeleton-inline-size, 100%);vertical-align:calc(.5cap - .5 * var(--_line))}[data-ui=skeleton][data-part=root][data-shape=block]{block-size:var(--slotted-skeleton-block-size, auto);border-radius:var(--slotted-skeleton-radius, var(--slotted-radius-md, 6px));display:block;inline-size:var(--slotted-skeleton-inline-size, 100%);min-block-size:var(--slotted-skeleton-min-block-size, 1lh)}[data-ui=skeleton][data-part=root][data-shape=circle],[data-ui=skeleton][data-part=root][data-shape=square]{--_size: var(--slotted-skeleton-size, var(--slotted-avatar-size-md, 36px));block-size:var(--slotted-skeleton-block-size, var(--_size));inline-size:var(--slotted-skeleton-inline-size, var(--_size))}[data-ui=skeleton][data-part=root][data-shape=circle]{border-radius:var(--slotted-radius-full, 9999px)}[data-ui=skeleton][data-part=root][data-shape=square]{border-radius:var(--slotted-skeleton-radius, calc(var(--_size) / 6))}[data-ui=skeleton][data-part=root][data-shape=circle][data-size=xs],[data-ui=skeleton][data-part=root][data-shape=square][data-size=xs]{--_size: var(--slotted-skeleton-size, var(--slotted-avatar-size-xs, 24px))}[data-ui=skeleton][data-part=root][data-shape=circle][data-size=sm],[data-ui=skeleton][data-part=root][data-shape=square][data-size=sm]{--_size: var(--slotted-skeleton-size, var(--slotted-avatar-size-sm, 28px))}[data-ui=skeleton][data-part=root][data-shape=circle][data-size=md],[data-ui=skeleton][data-part=root][data-shape=square][data-size=md]{--_size: var(--slotted-skeleton-size, var(--slotted-avatar-size-md, 36px))}[data-ui=skeleton][data-part=root][data-shape=circle][data-size=lg],[data-ui=skeleton][data-part=root][data-shape=square][data-size=lg]{--_size: var(--slotted-skeleton-size, var(--slotted-avatar-size-lg, 48px))}[data-ui=skeleton][data-part=root][data-shape=circle][data-size=xl],[data-ui=skeleton][data-part=root][data-shape=square][data-size=xl]{--_size: var(--slotted-skeleton-size, var(--slotted-avatar-size-xl, 64px))}[data-ui=skeleton][data-part=root][data-loading]:not(:empty){block-size:var(--slotted-skeleton-block-size, auto);color:transparent;inline-size:var(--slotted-skeleton-inline-size, auto)}[data-ui=skeleton][data-part=root][data-loading]:not(:empty)>*{visibility:hidden}[data-ui=skeleton][data-part=text]{align-items:center;display:grid;grid-auto-rows:var(--slotted-skeleton-row-size, 1lh);inline-size:var(--slotted-skeleton-inline-size, 100%)}[data-ui=skeleton] [data-part=line]{block-size:var(--slotted-skeleton-line-size, 1cap);border-radius:var(--slotted-radius-full, 9999px);inline-size:100%}[data-ui=skeleton] [data-part=line]:last-child:not(:only-child){inline-size:var(--slotted-skeleton-last-line-size, 62%)}[data-ui=skeleton][data-part=root]:not([data-loading]),[data-ui=skeleton][data-part=text]:not([data-loading]){display:contents}[data-ui=skeleton][data-part=region]{inline-size:var(--slotted-skeleton-inline-size, 100%);min-inline-size:0}[data-ui=skeleton][data-part=root][data-loading]:not([data-animation=none]),[data-ui=skeleton][data-part=text][data-loading]:not([data-animation=none]) [data-part=line]{overflow:clip;position:relative}[data-ui=skeleton][data-part=root][data-animation=pulse][data-loading]:after,[data-ui=skeleton][data-part=root][data-animation=shimmer][data-loading]:after,[data-ui=skeleton][data-animation=pulse][data-loading] [data-part=line]:after,[data-ui=skeleton][data-animation=shimmer][data-loading] [data-part=line]:after{animation-delay:calc(var(--slotted-skeleton-phase, 0) * var(--slotted-duration-loop-slow) * -1);animation-duration:var(--slotted-duration-loop-slow);animation-iteration-count:infinite;content:\"\";inset-block:0;inset-inline:0;pointer-events:none;position:absolute}[data-ui=skeleton][data-part=root][data-animation=pulse][data-loading]:after,[data-ui=skeleton][data-animation=pulse][data-loading] [data-part=line]:after{animation-timing-function:ease-in-out;background-color:var(--_trough);opacity:0}[data-ui=skeleton][data-part=root][data-animation=shimmer][data-loading]:after,[data-ui=skeleton][data-animation=shimmer][data-loading] [data-part=line]:after{animation-timing-function:linear;background-image:linear-gradient(90deg,transparent 14%,var(--_highlight) 50%,transparent 86%)}[data-ui=skeleton][data-part=root][data-animation=shimmer][data-loading]:dir(rtl):after,[data-ui=skeleton][data-animation=shimmer][data-loading]:dir(rtl) [data-part=line]:after{animation-direction:reverse}@media(prefers-reduced-motion:no-preference){[data-ui=skeleton][data-part=root][data-animation=pulse][data-loading]:after,[data-ui=skeleton][data-animation=pulse][data-loading] [data-part=line]:after{animation-name:slotted-skeleton-pulse}[data-ui=skeleton][data-part=root][data-animation=shimmer][data-loading]:after,[data-ui=skeleton][data-animation=shimmer][data-loading] [data-part=line]:after{animation-name:slotted-skeleton-sweep}}@keyframes slotted-skeleton-pulse{50%{opacity:1}}@keyframes slotted-skeleton-sweep{0%{transform:translate(-100%)}to{transform:translate(100%)}}@media(prefers-reduced-motion:reduce){[data-ui=skeleton]:after,[data-ui=skeleton] [data-part=line]:after{animation:none}}@media(forced-colors:active){[data-ui=skeleton][data-part=root][data-loading]:after,[data-ui=skeleton][data-part=text][data-loading] [data-part=line]:after{background-image:none}}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
294
|
+
}
|
|
295
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlSkeletonText, decorators: [{
|
|
296
|
+
type: Component,
|
|
297
|
+
args: [{ selector: '[slSkeletonText]', standalone: true, template: `@for (row of rows(); track row) {
|
|
298
|
+
<span data-part="line"></span>
|
|
299
|
+
}`, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, exportAs: 'slSkeletonText', host: {
|
|
300
|
+
'data-ui': 'skeleton',
|
|
301
|
+
'data-part': 'text',
|
|
302
|
+
'[attr.data-animation]': 'animationValue()',
|
|
303
|
+
'[attr.data-loading]': 'painted() ? "" : null',
|
|
304
|
+
'[attr.aria-hidden]': 'painted() ? "true" : null',
|
|
305
|
+
'[attr.inert]': 'painted() ? "" : null',
|
|
306
|
+
'[style.--slotted-skeleton-inline-size]': 'inlineSize()',
|
|
307
|
+
'[style.--slotted-skeleton-last-line-size]': 'lastLineSizeValue()',
|
|
308
|
+
}, styles: ["@layer slotted.components{[data-ui=skeleton][data-part=root][data-loading],[data-ui=skeleton][data-part=text][data-loading] [data-part=line]{--_fill: var( --slotted-skeleton-fill, color-mix( in oklab, var(--slotted-disabled-background, ButtonFace) 92%, var(--slotted-text, CanvasText) ) );--_edge: var(--slotted-skeleton-border-color, var(--slotted-border-subtle, ButtonBorder));--_highlight: var( --slotted-skeleton-highlight-color, color-mix(in oklab, var(--_fill) 86%, var(--slotted-text, CanvasText)) );--_trough: var( --slotted-skeleton-trough-color, color-mix(in oklab, var(--_fill) 60%, var(--slotted-surface-sunken, Canvas)) );background-color:var(--_fill);border:var(--slotted-skeleton-border-width, var(--slotted-border-width-thin, 1px)) solid var(--_edge);box-sizing:border-box;-webkit-user-select:none;user-select:none}[data-ui=skeleton][data-part=root]{display:inline-block;min-block-size:var(--slotted-skeleton-border-width, var(--slotted-border-width-thin, 1px))}[data-ui=skeleton][data-part=root][data-shape=text]{--_line: var(--slotted-skeleton-line-size, 1cap);block-size:var(--slotted-skeleton-block-size, var(--_line));border-radius:var(--slotted-radius-full, 9999px);inline-size:var(--slotted-skeleton-inline-size, 100%);vertical-align:calc(.5cap - .5 * var(--_line))}[data-ui=skeleton][data-part=root][data-shape=block]{block-size:var(--slotted-skeleton-block-size, auto);border-radius:var(--slotted-skeleton-radius, var(--slotted-radius-md, 6px));display:block;inline-size:var(--slotted-skeleton-inline-size, 100%);min-block-size:var(--slotted-skeleton-min-block-size, 1lh)}[data-ui=skeleton][data-part=root][data-shape=circle],[data-ui=skeleton][data-part=root][data-shape=square]{--_size: var(--slotted-skeleton-size, var(--slotted-avatar-size-md, 36px));block-size:var(--slotted-skeleton-block-size, var(--_size));inline-size:var(--slotted-skeleton-inline-size, var(--_size))}[data-ui=skeleton][data-part=root][data-shape=circle]{border-radius:var(--slotted-radius-full, 9999px)}[data-ui=skeleton][data-part=root][data-shape=square]{border-radius:var(--slotted-skeleton-radius, calc(var(--_size) / 6))}[data-ui=skeleton][data-part=root][data-shape=circle][data-size=xs],[data-ui=skeleton][data-part=root][data-shape=square][data-size=xs]{--_size: var(--slotted-skeleton-size, var(--slotted-avatar-size-xs, 24px))}[data-ui=skeleton][data-part=root][data-shape=circle][data-size=sm],[data-ui=skeleton][data-part=root][data-shape=square][data-size=sm]{--_size: var(--slotted-skeleton-size, var(--slotted-avatar-size-sm, 28px))}[data-ui=skeleton][data-part=root][data-shape=circle][data-size=md],[data-ui=skeleton][data-part=root][data-shape=square][data-size=md]{--_size: var(--slotted-skeleton-size, var(--slotted-avatar-size-md, 36px))}[data-ui=skeleton][data-part=root][data-shape=circle][data-size=lg],[data-ui=skeleton][data-part=root][data-shape=square][data-size=lg]{--_size: var(--slotted-skeleton-size, var(--slotted-avatar-size-lg, 48px))}[data-ui=skeleton][data-part=root][data-shape=circle][data-size=xl],[data-ui=skeleton][data-part=root][data-shape=square][data-size=xl]{--_size: var(--slotted-skeleton-size, var(--slotted-avatar-size-xl, 64px))}[data-ui=skeleton][data-part=root][data-loading]:not(:empty){block-size:var(--slotted-skeleton-block-size, auto);color:transparent;inline-size:var(--slotted-skeleton-inline-size, auto)}[data-ui=skeleton][data-part=root][data-loading]:not(:empty)>*{visibility:hidden}[data-ui=skeleton][data-part=text]{align-items:center;display:grid;grid-auto-rows:var(--slotted-skeleton-row-size, 1lh);inline-size:var(--slotted-skeleton-inline-size, 100%)}[data-ui=skeleton] [data-part=line]{block-size:var(--slotted-skeleton-line-size, 1cap);border-radius:var(--slotted-radius-full, 9999px);inline-size:100%}[data-ui=skeleton] [data-part=line]:last-child:not(:only-child){inline-size:var(--slotted-skeleton-last-line-size, 62%)}[data-ui=skeleton][data-part=root]:not([data-loading]),[data-ui=skeleton][data-part=text]:not([data-loading]){display:contents}[data-ui=skeleton][data-part=region]{inline-size:var(--slotted-skeleton-inline-size, 100%);min-inline-size:0}[data-ui=skeleton][data-part=root][data-loading]:not([data-animation=none]),[data-ui=skeleton][data-part=text][data-loading]:not([data-animation=none]) [data-part=line]{overflow:clip;position:relative}[data-ui=skeleton][data-part=root][data-animation=pulse][data-loading]:after,[data-ui=skeleton][data-part=root][data-animation=shimmer][data-loading]:after,[data-ui=skeleton][data-animation=pulse][data-loading] [data-part=line]:after,[data-ui=skeleton][data-animation=shimmer][data-loading] [data-part=line]:after{animation-delay:calc(var(--slotted-skeleton-phase, 0) * var(--slotted-duration-loop-slow) * -1);animation-duration:var(--slotted-duration-loop-slow);animation-iteration-count:infinite;content:\"\";inset-block:0;inset-inline:0;pointer-events:none;position:absolute}[data-ui=skeleton][data-part=root][data-animation=pulse][data-loading]:after,[data-ui=skeleton][data-animation=pulse][data-loading] [data-part=line]:after{animation-timing-function:ease-in-out;background-color:var(--_trough);opacity:0}[data-ui=skeleton][data-part=root][data-animation=shimmer][data-loading]:after,[data-ui=skeleton][data-animation=shimmer][data-loading] [data-part=line]:after{animation-timing-function:linear;background-image:linear-gradient(90deg,transparent 14%,var(--_highlight) 50%,transparent 86%)}[data-ui=skeleton][data-part=root][data-animation=shimmer][data-loading]:dir(rtl):after,[data-ui=skeleton][data-animation=shimmer][data-loading]:dir(rtl) [data-part=line]:after{animation-direction:reverse}@media(prefers-reduced-motion:no-preference){[data-ui=skeleton][data-part=root][data-animation=pulse][data-loading]:after,[data-ui=skeleton][data-animation=pulse][data-loading] [data-part=line]:after{animation-name:slotted-skeleton-pulse}[data-ui=skeleton][data-part=root][data-animation=shimmer][data-loading]:after,[data-ui=skeleton][data-animation=shimmer][data-loading] [data-part=line]:after{animation-name:slotted-skeleton-sweep}}@keyframes slotted-skeleton-pulse{50%{opacity:1}}@keyframes slotted-skeleton-sweep{0%{transform:translate(-100%)}to{transform:translate(100%)}}@media(prefers-reduced-motion:reduce){[data-ui=skeleton]:after,[data-ui=skeleton] [data-part=line]:after{animation:none}}@media(forced-colors:active){[data-ui=skeleton][data-part=root][data-loading]:after,[data-ui=skeleton][data-part=text][data-loading] [data-part=line]:after{background-image:none}}}\n"] }]
|
|
309
|
+
}], propDecorators: { lines: [{ type: i0.Input, args: [{ isSignal: true, alias: "lines", required: false }] }], animation: [{ type: i0.Input, args: [{ isSignal: true, alias: "animation", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], lastLineSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "lastLineSize", required: false }] }], inlineSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "inlineSize", required: false }] }] } });
|
|
310
|
+
|
|
311
|
+
/**
|
|
312
|
+
* Generated bundle index. Do not edit.
|
|
313
|
+
*/
|
|
314
|
+
|
|
315
|
+
export { SKELETON_DEFAULTS_TOKEN, SlSkeleton, SlSkeletonRegion, SlSkeletonText, injectSkeletonDefaults, provideSkeletonDefaults };
|
|
316
|
+
//# sourceMappingURL=slotted-angular-skeleton.mjs.map
|