@slotted/angular 0.0.0-stage → 0.1.0-beta.0
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,639 @@
|
|
|
1
|
+
import { createCollapse } from '@slotted/core/overflow';
|
|
2
|
+
import { createPresence } from '@slotted/core/presence';
|
|
3
|
+
import * as i0 from '@angular/core';
|
|
4
|
+
import { InjectionToken, inject, input, booleanAttribute, output, ElementRef, HostAttributeToken, signal, computed, DestroyRef, effect, afterNextRender, ViewEncapsulation, ChangeDetectionStrategy, Component, Directive, viewChild, Injector } from '@angular/core';
|
|
5
|
+
import { BUTTON_DEFAULTS_TOKEN } from '@slotted/angular/button';
|
|
6
|
+
import { NgTemplateOutlet } from '@angular/common';
|
|
7
|
+
import { SlGlyph, SlIcon } from '@slotted/angular/icon';
|
|
8
|
+
import { SlMenu, SlMenuSeparator, SlMenuTrigger } from '@slotted/angular/menu';
|
|
9
|
+
|
|
10
|
+
const FALLBACK = {
|
|
11
|
+
align: 'end',
|
|
12
|
+
size: 'md',
|
|
13
|
+
sticky: false,
|
|
14
|
+
variant: 'plain',
|
|
15
|
+
};
|
|
16
|
+
const ACTION_BAR_DEFAULTS = new InjectionToken('slotted action bar defaults', { providedIn: 'root', factory: () => FALLBACK });
|
|
17
|
+
/**
|
|
18
|
+
* An application decides once how its action bars are drawn — a product whose
|
|
19
|
+
* bars are all raised, compact and stuck to the bottom of the page says so in
|
|
20
|
+
* one place rather than on every bar. A bar that states any of them itself
|
|
21
|
+
* still wins.
|
|
22
|
+
*/
|
|
23
|
+
function provideActionBarDefaults(defaults) {
|
|
24
|
+
return {
|
|
25
|
+
provide: ACTION_BAR_DEFAULTS,
|
|
26
|
+
useFactory: () => ({ ...FALLBACK, ...defaults }),
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
/** What a bar renders as here, before it states anything of its own. */
|
|
30
|
+
function injectActionBarDefaults() {
|
|
31
|
+
return inject(ACTION_BAR_DEFAULTS);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/** The attribute that says an action has somewhere to go. */
|
|
35
|
+
const ACTION_BAR_UNIT_ATTRIBUTE = 'data-unit';
|
|
36
|
+
/** The attribute the measurement reads a rank from. */
|
|
37
|
+
const ACTION_BAR_PRIORITY_ATTRIBUTE = 'data-priority';
|
|
38
|
+
/**
|
|
39
|
+
* The custom property the stacking query raises, read back by the measurement.
|
|
40
|
+
*
|
|
41
|
+
* The breakpoint is literal because `@container (width < var(--x))` is invalid,
|
|
42
|
+
* and it is written once — in the stylesheet. The binding asks CSS what it
|
|
43
|
+
* decided rather than comparing widths of its own, so the layout and the
|
|
44
|
+
* measurement cannot disagree about where the bar becomes a column.
|
|
45
|
+
*/
|
|
46
|
+
const ACTION_BAR_STACK_PROPERTY = '--_stacked';
|
|
47
|
+
/**
|
|
48
|
+
* Where each rank stands in the order of giving way: the lowest goes first, and
|
|
49
|
+
* position decides inside one rank.
|
|
50
|
+
*/
|
|
51
|
+
const ACTION_BAR_RANK = Object.freeze({
|
|
52
|
+
always: 0,
|
|
53
|
+
hide: 0,
|
|
54
|
+
high: 2,
|
|
55
|
+
low: 1,
|
|
56
|
+
pinned: 0,
|
|
57
|
+
});
|
|
58
|
+
function priorityOf(unit) {
|
|
59
|
+
return unit.getAttribute(ACTION_BAR_PRIORITY_ATTRIBUTE) ?? 'pinned';
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Everything the run lays out.
|
|
63
|
+
*
|
|
64
|
+
* The trigger is not one of them — a control that took part in its own
|
|
65
|
+
* measurement would be counted twice, and the Angular trigger sits inside a
|
|
66
|
+
* `display: contents` host of its own — and neither is an `always` action, which
|
|
67
|
+
* is never in the bar to give way.
|
|
68
|
+
*/
|
|
69
|
+
function unitsOf(container) {
|
|
70
|
+
return [...container.children].filter((child) => child instanceof HTMLElement &&
|
|
71
|
+
child.getAttribute('data-part') !== 'overflow' &&
|
|
72
|
+
child.querySelector('[data-part="overflow"]') === null &&
|
|
73
|
+
child.getAttribute(ACTION_BAR_PRIORITY_ATTRIBUTE) !== 'always');
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Whether one of the bar's own rules sits between two units that are both in the
|
|
77
|
+
* surface. It is read from the DOM because a separator is a sibling of the units
|
|
78
|
+
* it divides and nothing in the component tree relates them.
|
|
79
|
+
*/
|
|
80
|
+
function ruleBetween(from, to) {
|
|
81
|
+
for (let node = from.nextElementSibling; node !== null && node !== to; node = node.nextElementSibling) {
|
|
82
|
+
if (node.getAttribute('data-part') === 'separator')
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* The one axis the bar hands down to the buttons inside it, through the button
|
|
89
|
+
* family's own defaults token rather than through a second channel of this
|
|
90
|
+
* family's invention. That is what keeps an explicit `size` on a button winning
|
|
91
|
+
* over the bar, because it is the rule `button` already implements.
|
|
92
|
+
*
|
|
93
|
+
* The value is read through a getter so that a button's `computed` tracks the
|
|
94
|
+
* bar's signal: a plain snapshot would fix the step at the moment the first
|
|
95
|
+
* button was created and never move again.
|
|
96
|
+
*/
|
|
97
|
+
function provideBarStep() {
|
|
98
|
+
return {
|
|
99
|
+
provide: BUTTON_DEFAULTS_TOKEN,
|
|
100
|
+
useFactory: () => {
|
|
101
|
+
const bar = inject(SlActionBar);
|
|
102
|
+
const inherited = inject(BUTTON_DEFAULTS_TOKEN, { skipSelf: true });
|
|
103
|
+
return {
|
|
104
|
+
...inherited,
|
|
105
|
+
get size() {
|
|
106
|
+
return bar.resolvedSize();
|
|
107
|
+
},
|
|
108
|
+
};
|
|
109
|
+
},
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* The actions that finish a task on a page or in a panel.
|
|
114
|
+
*
|
|
115
|
+
* **It is not a composite.** `Tab` reaches every action, in the order the author
|
|
116
|
+
* wrote them, and the arrows are not bound. The controls here are the page's own
|
|
117
|
+
* form actions, and a reader walking a form expects to arrive at Cancel and then
|
|
118
|
+
* at Save; roving focus would make the whole bar one tab stop and put Save
|
|
119
|
+
* behind an arrow key that announces nothing. A strip of ten icon buttons is a
|
|
120
|
+
* `toolbar`, and that family binds the arrows against the APG.
|
|
121
|
+
*
|
|
122
|
+
* **What gives way is decided by rank, not by position**, which is the whole of
|
|
123
|
+
* why this family stands beside `toolbar` rather than configuring it.
|
|
124
|
+
*
|
|
125
|
+
* **The action that confirms does not move.** The run carries an `auto` margin
|
|
126
|
+
* against the bar's end edge, so a message appearing in the status, a button
|
|
127
|
+
* going busy and a permission filter removing a control all move what is
|
|
128
|
+
* *before* the last action and never the last action itself.
|
|
129
|
+
*/
|
|
130
|
+
class SlActionBar {
|
|
131
|
+
variant = input(undefined, /* @ts-ignore */
|
|
132
|
+
...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
|
|
133
|
+
size = input(undefined, /* @ts-ignore */
|
|
134
|
+
...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
|
|
135
|
+
align = input(undefined, /* @ts-ignore */
|
|
136
|
+
...(ngDevMode ? [{ debugName: "align" }] : /* istanbul ignore next */ []));
|
|
137
|
+
sticky = input(undefined, { ...(ngDevMode ? { debugName: "sticky" } : /* istanbul ignore next */ {}), transform: (state) => (state === undefined ? undefined : booleanAttribute(state)) });
|
|
138
|
+
/**
|
|
139
|
+
* Whether the bar belongs on screen at all. A bulk bar exists while there is a
|
|
140
|
+
* selection and a contextual save bar while there are unsaved changes.
|
|
141
|
+
*
|
|
142
|
+
* It is an input rather than a two-way value: the bar never asks to appear or
|
|
143
|
+
* to leave, so there is nothing to cancel.
|
|
144
|
+
*/
|
|
145
|
+
present = input(true, { ...(ngDevMode ? { debugName: "present" } : /* istanbul ignore next */ {}), transform: (state) => (state === undefined ? true : booleanAttribute(state)) });
|
|
146
|
+
/**
|
|
147
|
+
* Reports how many actions gave way, once per change. The collapsed set is a
|
|
148
|
+
* measurement rather than a value, so there is no two-way binding over it.
|
|
149
|
+
*/
|
|
150
|
+
overflowChange = output();
|
|
151
|
+
defaults = injectActionBarDefaults();
|
|
152
|
+
element = inject((ElementRef)).nativeElement;
|
|
153
|
+
/**
|
|
154
|
+
* A consumer who has ten icon-only actions and wants the composite may write
|
|
155
|
+
* `role="toolbar"` themselves, and what they wrote survives the host binding.
|
|
156
|
+
* The arrows are still not bound, so that consumer wants `toolbar`.
|
|
157
|
+
*/
|
|
158
|
+
statedRole = inject(new HostAttributeToken('role'), { optional: true });
|
|
159
|
+
counterparts = signal(new Map(), /* @ts-ignore */
|
|
160
|
+
...(ngDevMode ? [{ debugName: "counterparts" }] : /* istanbul ignore next */ []));
|
|
161
|
+
trigger = signal(null, /* @ts-ignore */
|
|
162
|
+
...(ngDevMode ? [{ debugName: "trigger" }] : /* istanbul ignore next */ []));
|
|
163
|
+
actions = signal(null, /* @ts-ignore */
|
|
164
|
+
...(ngDevMode ? [{ debugName: "actions" }] : /* istanbul ignore next */ []));
|
|
165
|
+
stacked = signal(false, /* @ts-ignore */
|
|
166
|
+
...(ngDevMode ? [{ debugName: "stacked" }] : /* istanbul ignore next */ []));
|
|
167
|
+
ready = signal(false, /* @ts-ignore */
|
|
168
|
+
...(ngDevMode ? [{ debugName: "ready" }] : /* istanbul ignore next */ []));
|
|
169
|
+
collapse = null;
|
|
170
|
+
/** What the surface holds: the collapsed actions and every `always` one. */
|
|
171
|
+
surfaceUnits = signal([], /* @ts-ignore */
|
|
172
|
+
...(ngDevMode ? [{ debugName: "surfaceUnits" }] : /* istanbul ignore next */ []));
|
|
173
|
+
resolvedVariant = computed(() => this.variant() ?? this.defaults.variant, /* @ts-ignore */
|
|
174
|
+
...(ngDevMode ? [{ debugName: "resolvedVariant" }] : /* istanbul ignore next */ []));
|
|
175
|
+
resolvedSize = computed(() => this.size() ?? this.defaults.size, /* @ts-ignore */
|
|
176
|
+
...(ngDevMode ? [{ debugName: "resolvedSize" }] : /* istanbul ignore next */ []));
|
|
177
|
+
resolvedAlign = computed(() => this.align() ?? this.defaults.align, /* @ts-ignore */
|
|
178
|
+
...(ngDevMode ? [{ debugName: "resolvedAlign" }] : /* istanbul ignore next */ []));
|
|
179
|
+
resolvedSticky = computed(() => this.sticky() ?? this.defaults.sticky, /* @ts-ignore */
|
|
180
|
+
...(ngDevMode ? [{ debugName: "resolvedSticky" }] : /* istanbul ignore next */ []));
|
|
181
|
+
role = computed(() => this.statedRole ?? 'group', /* @ts-ignore */
|
|
182
|
+
...(ngDevMode ? [{ debugName: "role" }] : /* istanbul ignore next */ []));
|
|
183
|
+
status = signal('open', /* @ts-ignore */
|
|
184
|
+
...(ngDevMode ? [{ debugName: "status" }] : /* istanbul ignore next */ []));
|
|
185
|
+
mounted = computed(() => this.status() !== 'unmounted', /* @ts-ignore */
|
|
186
|
+
...(ngDevMode ? [{ debugName: "mounted" }] : /* istanbul ignore next */ []));
|
|
187
|
+
presenceAttribute = computed(() => {
|
|
188
|
+
const status = this.status();
|
|
189
|
+
return status === 'open' || status === 'unmounted' ? null : status;
|
|
190
|
+
}, /* @ts-ignore */
|
|
191
|
+
...(ngDevMode ? [{ debugName: "presenceAttribute" }] : /* istanbul ignore next */ []));
|
|
192
|
+
collapsedCount = computed(() => this.trigger() === null ? null : String(this.surfaceUnits().length), /* @ts-ignore */
|
|
193
|
+
...(ngDevMode ? [{ debugName: "collapsedCount" }] : /* istanbul ignore next */ []));
|
|
194
|
+
/** Records what an action becomes in the surface. */
|
|
195
|
+
registerUnit(id, template) {
|
|
196
|
+
this.counterparts.update((held) => new Map(held).set(id, template));
|
|
197
|
+
}
|
|
198
|
+
releaseUnit(id) {
|
|
199
|
+
this.counterparts.update((held) => {
|
|
200
|
+
const next = new Map(held);
|
|
201
|
+
next.delete(id);
|
|
202
|
+
return next;
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
counterpart(id) {
|
|
206
|
+
return this.counterparts().get(id) ?? null;
|
|
207
|
+
}
|
|
208
|
+
/** The control that opens what did not fit. The bar measures it. */
|
|
209
|
+
registerTrigger(element) {
|
|
210
|
+
this.trigger.set(element);
|
|
211
|
+
}
|
|
212
|
+
/** The run, which is the box the collapse measures rather than the root. */
|
|
213
|
+
registerActions(element) {
|
|
214
|
+
this.actions.set(element);
|
|
215
|
+
}
|
|
216
|
+
constructor() {
|
|
217
|
+
const destroyRef = inject(DestroyRef);
|
|
218
|
+
/**
|
|
219
|
+
* The bar is held through its exit, so a bulk bar slides out rather than
|
|
220
|
+
* vanishing. Carbon keeps its batch bar mounted and writes `aria-hidden` on
|
|
221
|
+
* the root instead, which leaves the buttons inside reachable by `Tab`.
|
|
222
|
+
*/
|
|
223
|
+
const presence = createPresence({
|
|
224
|
+
present: true,
|
|
225
|
+
skipInitialAnimation: true,
|
|
226
|
+
onStatusChange: (next) => this.status.set(next),
|
|
227
|
+
});
|
|
228
|
+
presence.setNode(this.element);
|
|
229
|
+
destroyRef.onDestroy(() => presence.destroy());
|
|
230
|
+
effect(() => presence.sync(this.present()));
|
|
231
|
+
afterNextRender(() => this.ready.set(true));
|
|
232
|
+
/**
|
|
233
|
+
* Whether the bar is drawn as a column. The number lives in the stylesheet's
|
|
234
|
+
* container query, and this asks CSS what it decided rather than comparing
|
|
235
|
+
* widths against a copy of it.
|
|
236
|
+
*/
|
|
237
|
+
effect((onCleanup) => {
|
|
238
|
+
const container = this.actions();
|
|
239
|
+
if (container === null || !this.ready())
|
|
240
|
+
return;
|
|
241
|
+
const read = () => {
|
|
242
|
+
const view = container.ownerDocument?.defaultView;
|
|
243
|
+
const raised = view?.getComputedStyle(container).getPropertyValue(ACTION_BAR_STACK_PROPERTY).trim() ===
|
|
244
|
+
'1';
|
|
245
|
+
if (this.stacked() !== raised)
|
|
246
|
+
this.stacked.set(raised);
|
|
247
|
+
};
|
|
248
|
+
read();
|
|
249
|
+
if (typeof ResizeObserver === 'undefined')
|
|
250
|
+
return;
|
|
251
|
+
const observer = new ResizeObserver(read);
|
|
252
|
+
observer.observe(container);
|
|
253
|
+
onCleanup(() => observer.disconnect());
|
|
254
|
+
});
|
|
255
|
+
/**
|
|
256
|
+
* The collapse. It does not run while the bar is a column: a column has room
|
|
257
|
+
* for every action, and a surface holding what did not fit would be a menu
|
|
258
|
+
* for nothing. Leaving the effect destroys the handle, which reveals every
|
|
259
|
+
* unit it had hidden.
|
|
260
|
+
*/
|
|
261
|
+
effect((onCleanup) => {
|
|
262
|
+
const container = this.actions();
|
|
263
|
+
const trigger = this.trigger();
|
|
264
|
+
if (container === null || !this.ready() || this.stacked())
|
|
265
|
+
return;
|
|
266
|
+
const sync = (collapsedUnits) => {
|
|
267
|
+
const collapsed = new Set(collapsedUnits);
|
|
268
|
+
const held = [...container.children].filter((child) => child instanceof HTMLElement &&
|
|
269
|
+
child.hasAttribute(ACTION_BAR_UNIT_ATTRIBUTE) &&
|
|
270
|
+
(collapsed.has(child) ||
|
|
271
|
+
child.getAttribute(ACTION_BAR_PRIORITY_ATTRIBUTE) === 'always'));
|
|
272
|
+
this.surfaceUnits.set(held.map((unit, index) => {
|
|
273
|
+
const previous = held[index - 1];
|
|
274
|
+
return {
|
|
275
|
+
id: unit.getAttribute(ACTION_BAR_UNIT_ATTRIBUTE) ?? '',
|
|
276
|
+
separatorBefore: previous !== undefined && ruleBetween(previous, unit),
|
|
277
|
+
};
|
|
278
|
+
}));
|
|
279
|
+
};
|
|
280
|
+
const handle = createCollapse(container, {
|
|
281
|
+
/* A pinned action has nowhere to go. Every other rank does, and `hide`'s
|
|
282
|
+
somewhere is nowhere — it gives way and is not offered in the
|
|
283
|
+
surface. */
|
|
284
|
+
collapsible: (unit) => priorityOf(unit) !== 'pinned',
|
|
285
|
+
divides: (unit) => unit.getAttribute('data-part') === 'separator',
|
|
286
|
+
onChange: (units) => {
|
|
287
|
+
sync(units);
|
|
288
|
+
this.overflowChange.emit(units.filter((unit) => unit.hasAttribute(ACTION_BAR_UNIT_ATTRIBUTE)).length);
|
|
289
|
+
},
|
|
290
|
+
rank: (unit) => ACTION_BAR_RANK[priorityOf(unit)],
|
|
291
|
+
trigger: () => trigger,
|
|
292
|
+
/* An `always` action is in the surface while every other one still fits,
|
|
293
|
+
and a control that hid itself then would be a menu nobody can open. */
|
|
294
|
+
triggerAlways: () => container.querySelector(`[${ACTION_BAR_PRIORITY_ATTRIBUTE}='always']`) !== null,
|
|
295
|
+
units: () => unitsOf(container),
|
|
296
|
+
});
|
|
297
|
+
this.collapse = handle;
|
|
298
|
+
sync(handle.collapsed());
|
|
299
|
+
/**
|
|
300
|
+
* An action arriving or leaving invalidates the measurement — a bar that
|
|
301
|
+
* grows a button collapses one — and an `always` action arriving changes
|
|
302
|
+
* what the surface holds without changing what collapsed.
|
|
303
|
+
*/
|
|
304
|
+
const observer = new MutationObserver(() => {
|
|
305
|
+
handle.refresh();
|
|
306
|
+
sync(handle.collapsed());
|
|
307
|
+
});
|
|
308
|
+
observer.observe(container, { childList: true, subtree: true });
|
|
309
|
+
onCleanup(() => {
|
|
310
|
+
observer.disconnect();
|
|
311
|
+
handle.destroy();
|
|
312
|
+
this.collapse = null;
|
|
313
|
+
this.surfaceUnits.set([]);
|
|
314
|
+
});
|
|
315
|
+
});
|
|
316
|
+
}
|
|
317
|
+
/** Measures again, after the consumer changed something the DOM cannot report. */
|
|
318
|
+
refresh() {
|
|
319
|
+
this.collapse?.refresh();
|
|
320
|
+
}
|
|
321
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlActionBar, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
322
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.7", type: SlActionBar, isStandalone: true, selector: "[slActionBar]", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, sticky: { classPropertyName: "sticky", publicName: "sticky", isSignal: true, isRequired: false, transformFunction: null }, present: { classPropertyName: "present", publicName: "present", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { overflowChange: "overflowChange" }, host: { attributes: { "data-ui": "action-bar", "data-part": "root" }, properties: { "attr.role": "role()", "attr.data-variant": "resolvedVariant()", "attr.data-size": "resolvedSize()", "attr.data-align": "resolvedAlign()", "attr.data-sticky": "resolvedSticky() ? \"\" : null", "attr.data-collapsed": "collapsedCount()", "attr.data-status": "presenceAttribute()", "style.display": "mounted() ? null : \"none\"" } }, providers: [provideBarStep()], exportAs: ["slActionBar"], ngImport: i0, template: '<ng-content />', isInline: true, styles: ["@layer slotted.components{[data-ui=action-bar]{--_gap: var(--slotted-control-gap-md, .5rem);--_inset-block: var(--slotted-space-4, .5rem);--_inset-inline: var(--slotted-space-5, .75rem);--_height: var(--slotted-control-height-md, 34px);--_font-size: var(--slotted-control-font-size-md, .8125rem);--_icon-size: var(--slotted-control-icon-size-md, 16px);--_separator-inset: var(--slotted-space-2, .25rem);--_duration: var(--slotted-control-transition-duration);--_easing: var(--slotted-control-transition-easing);align-items:center;box-sizing:border-box;container-name:slotted-action-bar;container-type:inline-size;display:flex;flex-wrap:wrap;gap:var(--slotted-action-bar-gap, var(--_gap));inline-size:100%;min-block-size:calc(var(--_height) + 2 * var(--_inset-block));min-inline-size:0;padding-block:var(--slotted-action-bar-inset-block, var(--_inset-block));padding-inline:var(--slotted-action-bar-inset-inline, var(--_inset-inline))}[data-ui=action-bar][data-size=sm]{--_gap: var(--slotted-control-gap-sm, .375rem);--_inset-block: var(--slotted-space-3, .375rem);--_inset-inline: var(--slotted-space-4, .5rem);--_height: var(--slotted-control-height-sm, 30px);--_font-size: var(--slotted-control-font-size-sm, .75rem);--_icon-size: var(--slotted-control-icon-size-sm, 14px);--_separator-inset: var(--slotted-space-1, .125rem)}[data-ui=action-bar][data-size=lg]{--_gap: var(--slotted-control-gap-lg, .5rem);--_inset-block: var(--slotted-space-5, .75rem);--_inset-inline: var(--slotted-space-6, 1rem);--_height: var(--slotted-control-height-lg, 38px);--_font-size: var(--slotted-control-font-size-lg, .875rem);--_icon-size: var(--slotted-control-icon-size-lg, 18px);--_separator-inset: var(--slotted-space-3, .375rem)}[data-ui=action-bar]:not(:has([data-part=actions]>*:not([hidden]))):not(:has([data-part=status])){display:none}[data-ui=action-bar][data-variant=raised]{background-color:var(--slotted-action-bar-background, var(--slotted-surface, Canvas));border-block-start:var(--slotted-border-width-thin, 1px) solid var(--slotted-action-bar-border-color, var(--slotted-border-subtle, ButtonBorder))}[data-ui=action-bar][data-sticky]{inset-block-end:var(--slotted-page-sticky-bottom, 0px);position:sticky;z-index:var(--slotted-z-index-sticky, 100)}[data-ui=action-bar][data-status]{transition:translate var(--_duration) var(--_easing),opacity var(--_duration) var(--_easing)}[data-ui=action-bar]:is([data-status=entering],[data-status=exiting]){opacity:0;translate:0 100%}[data-ui=action-bar] [data-part=status]{align-items:center;color:var(--slotted-action-bar-status-color, var(--slotted-text-muted, GrayText));display:flex;flex:1 1 auto;font-family:var(--slotted-control-font-family, inherit);font-size:var(--_font-size);gap:var(--_gap);min-inline-size:0}[data-ui=action-bar] [data-part=actions]{align-items:center;display:flex;flex:0 0 auto;flex-wrap:wrap;gap:var(--_gap);justify-content:flex-end;margin-inline-start:auto;max-inline-size:100%;min-inline-size:0}[data-ui=action-bar][data-align=start] [data-part=actions]{justify-content:flex-start;margin-inline:0 auto}[data-ui=action-bar][data-align=center] [data-part=actions]{justify-content:center;margin-inline:auto}[data-ui=action-bar][data-align=center]:not(:has([data-part=status])) [data-part=actions]{margin-inline:auto}[data-ui=action-bar] [data-part=action]{align-items:center;display:inline-flex;flex:none;min-inline-size:0}[data-ui=action-bar] :is([data-part=action],[data-part=separator],[data-part=overflow])[hidden]{display:none}[data-ui=action-bar] [data-part=separator]{align-self:stretch;background-color:var( --slotted-action-bar-separator-color, var(--slotted-border-strong, ButtonBorder) );border:0;flex:none;inline-size:var(--slotted-border-width-thin, 1px);margin-block:var(--_separator-inset);margin-inline:calc(var(--_gap) / 2);min-block-size:calc(var(--_height) - 2 * var(--_separator-inset))}[data-ui=action-bar] [data-part=overflow]{align-items:center;appearance:none;background-color:transparent;border:0;--slotted-icon-size: var(--_icon-size);border-radius:var(--slotted-control-radius, 4px);color:var(--slotted-action-bar-overflow-color, var(--slotted-text-muted, GrayText));cursor:pointer;display:inline-flex;flex:none;font-family:var(--slotted-control-font-family, inherit);justify-content:center;line-height:1;margin-inline-start:calc(var(--_gap) / 2);min-block-size:var(--_height);min-inline-size:max(var(--slotted-target-min, 24px),var(--_height));padding:0;transition:background-color var(--_duration) var(--_easing),color var(--_duration) var(--_easing)}[data-ui=action-bar] [data-part=overflow]:not(:disabled):hover{background-color:var( --slotted-action-bar-overflow-hover-background, var(--slotted-tone-secondary-subtle-hover) );color:var(--slotted-action-bar-overflow-hover-color, var(--slotted-text, CanvasText))}[data-ui=action-bar] [data-part=overflow]:not(:disabled):active{background-color:var( --slotted-action-bar-overflow-active-background, var(--slotted-tone-secondary-subtle-active) )}[data-ui=action-bar] [data-part=overflow][data-open]{background-color:var( --slotted-action-bar-overflow-open-background, var(--slotted-tone-secondary-subtle-active) );color:var(--slotted-action-bar-overflow-hover-color, var(--slotted-text, CanvasText))}[data-ui=action-bar] [data-part=overflow]:disabled{color:var(--slotted-disabled-foreground, GrayText);cursor:default}[data-ui=action-bar] [data-part=overflow]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-focus-ring-offset, 2px)}@container slotted-action-bar (width < 24rem){[data-ui=action-bar] [data-part=actions]{--_stacked: 1;align-items:stretch;flex:1 1 100%;flex-direction:column-reverse;margin-inline:0}[data-ui=action-bar] [data-part=action]>*{inline-size:100%}[data-ui=action-bar] [data-part=overflow]{display:none}[data-ui=action-bar] [data-part=separator]{block-size:var(--slotted-border-width-thin, 1px);inline-size:auto;margin-block:calc(var(--_gap) / 2);margin-inline:var(--_separator-inset);min-block-size:0}[data-ui=action-bar] [data-part=status]{flex:1 1 100%}[data-ui=action-bar] [data-part=status]>*{align-content:space-between;inline-size:100%}}@media(forced-colors:active){[data-ui=action-bar] [data-part=separator]{background-color:CanvasText;forced-color-adjust:none}}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
323
|
+
}
|
|
324
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlActionBar, decorators: [{
|
|
325
|
+
type: Component,
|
|
326
|
+
args: [{ selector: '[slActionBar]', standalone: true, exportAs: 'slActionBar', template: '<ng-content />', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [provideBarStep()], host: {
|
|
327
|
+
'data-ui': 'action-bar',
|
|
328
|
+
'data-part': 'root',
|
|
329
|
+
'[attr.role]': 'role()',
|
|
330
|
+
'[attr.data-variant]': 'resolvedVariant()',
|
|
331
|
+
'[attr.data-size]': 'resolvedSize()',
|
|
332
|
+
'[attr.data-align]': 'resolvedAlign()',
|
|
333
|
+
'[attr.data-sticky]': 'resolvedSticky() ? "" : null',
|
|
334
|
+
'[attr.data-collapsed]': 'collapsedCount()',
|
|
335
|
+
'[attr.data-status]': 'presenceAttribute()',
|
|
336
|
+
'[style.display]': 'mounted() ? null : "none"',
|
|
337
|
+
}, styles: ["@layer slotted.components{[data-ui=action-bar]{--_gap: var(--slotted-control-gap-md, .5rem);--_inset-block: var(--slotted-space-4, .5rem);--_inset-inline: var(--slotted-space-5, .75rem);--_height: var(--slotted-control-height-md, 34px);--_font-size: var(--slotted-control-font-size-md, .8125rem);--_icon-size: var(--slotted-control-icon-size-md, 16px);--_separator-inset: var(--slotted-space-2, .25rem);--_duration: var(--slotted-control-transition-duration);--_easing: var(--slotted-control-transition-easing);align-items:center;box-sizing:border-box;container-name:slotted-action-bar;container-type:inline-size;display:flex;flex-wrap:wrap;gap:var(--slotted-action-bar-gap, var(--_gap));inline-size:100%;min-block-size:calc(var(--_height) + 2 * var(--_inset-block));min-inline-size:0;padding-block:var(--slotted-action-bar-inset-block, var(--_inset-block));padding-inline:var(--slotted-action-bar-inset-inline, var(--_inset-inline))}[data-ui=action-bar][data-size=sm]{--_gap: var(--slotted-control-gap-sm, .375rem);--_inset-block: var(--slotted-space-3, .375rem);--_inset-inline: var(--slotted-space-4, .5rem);--_height: var(--slotted-control-height-sm, 30px);--_font-size: var(--slotted-control-font-size-sm, .75rem);--_icon-size: var(--slotted-control-icon-size-sm, 14px);--_separator-inset: var(--slotted-space-1, .125rem)}[data-ui=action-bar][data-size=lg]{--_gap: var(--slotted-control-gap-lg, .5rem);--_inset-block: var(--slotted-space-5, .75rem);--_inset-inline: var(--slotted-space-6, 1rem);--_height: var(--slotted-control-height-lg, 38px);--_font-size: var(--slotted-control-font-size-lg, .875rem);--_icon-size: var(--slotted-control-icon-size-lg, 18px);--_separator-inset: var(--slotted-space-3, .375rem)}[data-ui=action-bar]:not(:has([data-part=actions]>*:not([hidden]))):not(:has([data-part=status])){display:none}[data-ui=action-bar][data-variant=raised]{background-color:var(--slotted-action-bar-background, var(--slotted-surface, Canvas));border-block-start:var(--slotted-border-width-thin, 1px) solid var(--slotted-action-bar-border-color, var(--slotted-border-subtle, ButtonBorder))}[data-ui=action-bar][data-sticky]{inset-block-end:var(--slotted-page-sticky-bottom, 0px);position:sticky;z-index:var(--slotted-z-index-sticky, 100)}[data-ui=action-bar][data-status]{transition:translate var(--_duration) var(--_easing),opacity var(--_duration) var(--_easing)}[data-ui=action-bar]:is([data-status=entering],[data-status=exiting]){opacity:0;translate:0 100%}[data-ui=action-bar] [data-part=status]{align-items:center;color:var(--slotted-action-bar-status-color, var(--slotted-text-muted, GrayText));display:flex;flex:1 1 auto;font-family:var(--slotted-control-font-family, inherit);font-size:var(--_font-size);gap:var(--_gap);min-inline-size:0}[data-ui=action-bar] [data-part=actions]{align-items:center;display:flex;flex:0 0 auto;flex-wrap:wrap;gap:var(--_gap);justify-content:flex-end;margin-inline-start:auto;max-inline-size:100%;min-inline-size:0}[data-ui=action-bar][data-align=start] [data-part=actions]{justify-content:flex-start;margin-inline:0 auto}[data-ui=action-bar][data-align=center] [data-part=actions]{justify-content:center;margin-inline:auto}[data-ui=action-bar][data-align=center]:not(:has([data-part=status])) [data-part=actions]{margin-inline:auto}[data-ui=action-bar] [data-part=action]{align-items:center;display:inline-flex;flex:none;min-inline-size:0}[data-ui=action-bar] :is([data-part=action],[data-part=separator],[data-part=overflow])[hidden]{display:none}[data-ui=action-bar] [data-part=separator]{align-self:stretch;background-color:var( --slotted-action-bar-separator-color, var(--slotted-border-strong, ButtonBorder) );border:0;flex:none;inline-size:var(--slotted-border-width-thin, 1px);margin-block:var(--_separator-inset);margin-inline:calc(var(--_gap) / 2);min-block-size:calc(var(--_height) - 2 * var(--_separator-inset))}[data-ui=action-bar] [data-part=overflow]{align-items:center;appearance:none;background-color:transparent;border:0;--slotted-icon-size: var(--_icon-size);border-radius:var(--slotted-control-radius, 4px);color:var(--slotted-action-bar-overflow-color, var(--slotted-text-muted, GrayText));cursor:pointer;display:inline-flex;flex:none;font-family:var(--slotted-control-font-family, inherit);justify-content:center;line-height:1;margin-inline-start:calc(var(--_gap) / 2);min-block-size:var(--_height);min-inline-size:max(var(--slotted-target-min, 24px),var(--_height));padding:0;transition:background-color var(--_duration) var(--_easing),color var(--_duration) var(--_easing)}[data-ui=action-bar] [data-part=overflow]:not(:disabled):hover{background-color:var( --slotted-action-bar-overflow-hover-background, var(--slotted-tone-secondary-subtle-hover) );color:var(--slotted-action-bar-overflow-hover-color, var(--slotted-text, CanvasText))}[data-ui=action-bar] [data-part=overflow]:not(:disabled):active{background-color:var( --slotted-action-bar-overflow-active-background, var(--slotted-tone-secondary-subtle-active) )}[data-ui=action-bar] [data-part=overflow][data-open]{background-color:var( --slotted-action-bar-overflow-open-background, var(--slotted-tone-secondary-subtle-active) );color:var(--slotted-action-bar-overflow-hover-color, var(--slotted-text, CanvasText))}[data-ui=action-bar] [data-part=overflow]:disabled{color:var(--slotted-disabled-foreground, GrayText);cursor:default}[data-ui=action-bar] [data-part=overflow]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-focus-ring-offset, 2px)}@container slotted-action-bar (width < 24rem){[data-ui=action-bar] [data-part=actions]{--_stacked: 1;align-items:stretch;flex:1 1 100%;flex-direction:column-reverse;margin-inline:0}[data-ui=action-bar] [data-part=action]>*{inline-size:100%}[data-ui=action-bar] [data-part=overflow]{display:none}[data-ui=action-bar] [data-part=separator]{block-size:var(--slotted-border-width-thin, 1px);inline-size:auto;margin-block:calc(var(--_gap) / 2);margin-inline:var(--_separator-inset);min-block-size:0}[data-ui=action-bar] [data-part=status]{flex:1 1 100%}[data-ui=action-bar] [data-part=status]>*{align-content:space-between;inline-size:100%}}@media(forced-colors:active){[data-ui=action-bar] [data-part=separator]{background-color:CanvasText;forced-color-adjust:none}}}\n"] }]
|
|
338
|
+
}], ctorParameters: () => [], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], sticky: [{ type: i0.Input, args: [{ isSignal: true, alias: "sticky", required: false }] }], present: [{ type: i0.Input, args: [{ isSignal: true, alias: "present", required: false }] }], overflowChange: [{ type: i0.Output, args: ["overflowChange"] }] } });
|
|
339
|
+
/**
|
|
340
|
+
* The sentence at the start of the bar: a dirty-state marker, a timestamp, the
|
|
341
|
+
* count of what is selected and the control that selects the rest.
|
|
342
|
+
*
|
|
343
|
+
* It is a slot rather than a component: the library already has
|
|
344
|
+
* `inline-message`, `status-indicator` and `badge`, and `table` already owns the
|
|
345
|
+
* selection and its count.
|
|
346
|
+
*/
|
|
347
|
+
class SlActionBarStatus {
|
|
348
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlActionBarStatus, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
349
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlActionBarStatus, isStandalone: true, selector: "[slActionBarStatus]", host: { attributes: { "data-part": "status" } }, exportAs: ["slActionBarStatus"], ngImport: i0 });
|
|
350
|
+
}
|
|
351
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlActionBarStatus, decorators: [{
|
|
352
|
+
type: Directive,
|
|
353
|
+
args: [{
|
|
354
|
+
selector: '[slActionBarStatus]',
|
|
355
|
+
standalone: true,
|
|
356
|
+
exportAs: 'slActionBarStatus',
|
|
357
|
+
host: { 'data-part': 'status' },
|
|
358
|
+
}]
|
|
359
|
+
}] });
|
|
360
|
+
/**
|
|
361
|
+
* The run of actions, and the box the collapse measures.
|
|
362
|
+
*
|
|
363
|
+
* It is the run rather than the root, because the root is the query container
|
|
364
|
+
* and a container is a container for its descendants and not for itself — so the
|
|
365
|
+
* rule that turns the run into a column has to reach a descendant.
|
|
366
|
+
*/
|
|
367
|
+
class SlActionBarActions {
|
|
368
|
+
bar = inject(SlActionBar);
|
|
369
|
+
constructor() {
|
|
370
|
+
const element = inject((ElementRef)).nativeElement;
|
|
371
|
+
this.bar.registerActions(element);
|
|
372
|
+
inject(DestroyRef).onDestroy(() => this.bar.registerActions(null));
|
|
373
|
+
}
|
|
374
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlActionBarActions, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
375
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlActionBarActions, isStandalone: true, selector: "[slActionBarActions]", host: { attributes: { "data-part": "actions" } }, exportAs: ["slActionBarActions"], ngImport: i0 });
|
|
376
|
+
}
|
|
377
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlActionBarActions, decorators: [{
|
|
378
|
+
type: Directive,
|
|
379
|
+
args: [{
|
|
380
|
+
selector: '[slActionBarActions]',
|
|
381
|
+
standalone: true,
|
|
382
|
+
exportAs: 'slActionBarActions',
|
|
383
|
+
host: { 'data-part': 'actions' },
|
|
384
|
+
}]
|
|
385
|
+
}], ctorParameters: () => [] });
|
|
386
|
+
/**
|
|
387
|
+
* One action the bar may give up, its rank, and what it becomes when it goes.
|
|
388
|
+
*
|
|
389
|
+
* The rank and the counterpart are one fact seen from two sides. A control with
|
|
390
|
+
* nothing to become in the surface is pinned — it has nowhere to go, which is
|
|
391
|
+
* why the action that confirms stays visible — and a rank that needs somewhere
|
|
392
|
+
* to go and has nowhere behaves as pinned too, so a consumer error leaves the
|
|
393
|
+
* control on the bar rather than hiding it silently.
|
|
394
|
+
*/
|
|
395
|
+
class SlActionBarAction {
|
|
396
|
+
/**
|
|
397
|
+
* What the action becomes in the surface when the bar has no room for it.
|
|
398
|
+
*
|
|
399
|
+
* It is deliberately not called `overflow`: that word names what a container
|
|
400
|
+
* does with more content than it has room for, and one term with two meanings
|
|
401
|
+
* is the ambiguity the contract exists to prevent.
|
|
402
|
+
*/
|
|
403
|
+
counterpart = input(undefined, { ...(ngDevMode ? { debugName: "counterpart" } : /* istanbul ignore next */ {}), alias: 'slActionBarActionCounterpart' });
|
|
404
|
+
/**
|
|
405
|
+
* Where this action stands in the order of giving way.
|
|
406
|
+
*
|
|
407
|
+
* It is the selector's own value, so the terse form reads as the sentence it
|
|
408
|
+
* is — `slActionBarAction="high"`. A bare `slActionBarAction` hands the
|
|
409
|
+
* directive an empty string, which is the attribute being present rather than
|
|
410
|
+
* a rank, and the transform reads it as unstated.
|
|
411
|
+
*/
|
|
412
|
+
priority = input(undefined, { ...(ngDevMode ? { debugName: "priority" } : /* istanbul ignore next */ {}), alias: 'slActionBarAction', transform: (rank) => (rank === '' ? undefined : rank) });
|
|
413
|
+
bar = inject(SlActionBar, { optional: true });
|
|
414
|
+
identity = `slotted-action-bar-unit-${(unitCount += 1)}`;
|
|
415
|
+
unitId = computed(() => this.counterpart() === undefined ? null : this.identity, /* @ts-ignore */
|
|
416
|
+
...(ngDevMode ? [{ debugName: "unitId" }] : /* istanbul ignore next */ []));
|
|
417
|
+
resolvedPriority = computed(() => {
|
|
418
|
+
const stated = this.priority();
|
|
419
|
+
const declared = this.counterpart() !== undefined;
|
|
420
|
+
if (stated === undefined)
|
|
421
|
+
return declared ? 'low' : 'pinned';
|
|
422
|
+
if (stated === 'hide' || stated === 'pinned')
|
|
423
|
+
return stated;
|
|
424
|
+
return declared ? stated : 'pinned';
|
|
425
|
+
}, /* @ts-ignore */
|
|
426
|
+
...(ngDevMode ? [{ debugName: "resolvedPriority" }] : /* istanbul ignore next */ []));
|
|
427
|
+
constructor() {
|
|
428
|
+
const bar = this.bar;
|
|
429
|
+
effect(() => {
|
|
430
|
+
const template = this.counterpart();
|
|
431
|
+
if (bar === null)
|
|
432
|
+
return;
|
|
433
|
+
if (template === undefined)
|
|
434
|
+
bar.releaseUnit(this.identity);
|
|
435
|
+
else
|
|
436
|
+
bar.registerUnit(this.identity, template);
|
|
437
|
+
});
|
|
438
|
+
inject(DestroyRef).onDestroy(() => bar?.releaseUnit(this.identity));
|
|
439
|
+
}
|
|
440
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlActionBarAction, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
441
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.7", type: SlActionBarAction, isStandalone: true, selector: "[slActionBarAction]", inputs: { counterpart: { classPropertyName: "counterpart", publicName: "slActionBarActionCounterpart", isSignal: true, isRequired: false, transformFunction: null }, priority: { classPropertyName: "priority", publicName: "slActionBarAction", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-part": "action" }, properties: { "attr.data-unit": "unitId()", "attr.data-priority": "resolvedPriority()", "attr.hidden": "resolvedPriority() === \"always\" ? \"\" : null" } }, exportAs: ["slActionBarAction"], ngImport: i0 });
|
|
442
|
+
}
|
|
443
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlActionBarAction, decorators: [{
|
|
444
|
+
type: Directive,
|
|
445
|
+
args: [{
|
|
446
|
+
selector: '[slActionBarAction]',
|
|
447
|
+
standalone: true,
|
|
448
|
+
exportAs: 'slActionBarAction',
|
|
449
|
+
host: {
|
|
450
|
+
'data-part': 'action',
|
|
451
|
+
'[attr.data-unit]': 'unitId()',
|
|
452
|
+
'[attr.data-priority]': 'resolvedPriority()',
|
|
453
|
+
'[attr.hidden]': 'resolvedPriority() === "always" ? "" : null',
|
|
454
|
+
},
|
|
455
|
+
}]
|
|
456
|
+
}], ctorParameters: () => [], propDecorators: { counterpart: [{ type: i0.Input, args: [{ isSignal: true, alias: "slActionBarActionCounterpart", required: false }] }], priority: [{ type: i0.Input, args: [{ isSignal: true, alias: "slActionBarAction", required: false }] }] } });
|
|
457
|
+
let unitCount = 0;
|
|
458
|
+
/**
|
|
459
|
+
* A hairline between two runs of actions.
|
|
460
|
+
*
|
|
461
|
+
* It is the answer to the one line of `docs/component-features.md` §5 that names
|
|
462
|
+
* no mechanism: a destructive action does not sit flush against a frequent one.
|
|
463
|
+
* It is a part of this family rather than a `divider` because its geometry
|
|
464
|
+
* belongs to the bar.
|
|
465
|
+
*/
|
|
466
|
+
class SlActionBarSeparator {
|
|
467
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlActionBarSeparator, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
468
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlActionBarSeparator, isStandalone: true, selector: "[slActionBarSeparator]", host: { attributes: { "data-part": "separator", "role": "separator", "aria-orientation": "vertical" } }, exportAs: ["slActionBarSeparator"], ngImport: i0 });
|
|
469
|
+
}
|
|
470
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlActionBarSeparator, decorators: [{
|
|
471
|
+
type: Directive,
|
|
472
|
+
args: [{
|
|
473
|
+
selector: '[slActionBarSeparator]',
|
|
474
|
+
standalone: true,
|
|
475
|
+
exportAs: 'slActionBarSeparator',
|
|
476
|
+
host: { 'data-part': 'separator', role: 'separator', 'aria-orientation': 'vertical' },
|
|
477
|
+
}]
|
|
478
|
+
}] });
|
|
479
|
+
|
|
480
|
+
/**
|
|
481
|
+
* The control that opens what did not fit, and the surface holding it.
|
|
482
|
+
*
|
|
483
|
+
* It is `menu`'s own trigger and surface wearing this family's geometry, so the
|
|
484
|
+
* keyboard, the dismissal and the focus return are `menu`'s and are not written
|
|
485
|
+
* twice. What this family adds is the measurement: the bar decides which actions
|
|
486
|
+
* give way, **by rank**, and the counterparts they declared are rendered here in
|
|
487
|
+
* the order the bar holds them — with a separator wherever one of the bar's own
|
|
488
|
+
* rules sits between two of them.
|
|
489
|
+
*
|
|
490
|
+
* The surface also holds every action ranked `always`, which was never drawn in
|
|
491
|
+
* the bar at all. A reader opening the menu sees one list, so the two sources
|
|
492
|
+
* are read together and in the bar's own order.
|
|
493
|
+
*
|
|
494
|
+
* The counterpart is an `ng-template` rendered through `NgTemplateOutlet` only
|
|
495
|
+
* while its action is in the surface, so a menu item that is never reached
|
|
496
|
+
* builds nothing. That is where the two bindings differ most, and it is idiom
|
|
497
|
+
* rather than asymmetry: React's `ReactNode` is built with the element that
|
|
498
|
+
* declares it, which is React's own answer and its own cost.
|
|
499
|
+
*
|
|
500
|
+
* **A template resolves its dependencies where it was written, not where it is
|
|
501
|
+
* rendered.** The counterpart is authored beside the control it replaces, which
|
|
502
|
+
* is outside the surface, so `slMenuItem` would look for the `SlMenu` above the
|
|
503
|
+
* bar and find none. The outlet is therefore given an injector that provides the
|
|
504
|
+
* surface this component draws.
|
|
505
|
+
*
|
|
506
|
+
* The host is `display: contents`, so the `button` below is a child of the run
|
|
507
|
+
* itself: the part that carries the geometry has to be the box the bar lays out.
|
|
508
|
+
*
|
|
509
|
+
* **The `hidden` attribute on the trigger belongs to the bar.** `createCollapse`
|
|
510
|
+
* writes it, because the same measurement that decides whether the control is
|
|
511
|
+
* needed is the one that has to reveal it to read its width.
|
|
512
|
+
*/
|
|
513
|
+
class SlActionBarOverflow {
|
|
514
|
+
/** Where the surface sits against the trigger. */
|
|
515
|
+
align = input(undefined, /* @ts-ignore */
|
|
516
|
+
...(ngDevMode ? [{ debugName: "align" }] : /* istanbul ignore next */ []));
|
|
517
|
+
side = input(undefined, /* @ts-ignore */
|
|
518
|
+
...(ngDevMode ? [{ debugName: "side" }] : /* istanbul ignore next */ []));
|
|
519
|
+
/** The surface's own measure, which is `menu`'s axis rather than the bar's. */
|
|
520
|
+
size = input(undefined, /* @ts-ignore */
|
|
521
|
+
...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
|
|
522
|
+
/**
|
|
523
|
+
* The accessible name. Defaults to a count — "3 more actions" — because the
|
|
524
|
+
* mark says nothing about how much is behind it.
|
|
525
|
+
*/
|
|
526
|
+
label = input(undefined, /* @ts-ignore */
|
|
527
|
+
...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
528
|
+
bar = inject(SlActionBar);
|
|
529
|
+
/** A name the consumer wrote on the host survives the counted default. */
|
|
530
|
+
stated = inject(new HostAttributeToken('aria-label'), { optional: true });
|
|
531
|
+
name = computed(() => {
|
|
532
|
+
if (this.stated !== null)
|
|
533
|
+
return this.stated;
|
|
534
|
+
const given = this.label();
|
|
535
|
+
const hidden = this.bar.surfaceUnits().length;
|
|
536
|
+
if (typeof given === 'function')
|
|
537
|
+
return given(hidden);
|
|
538
|
+
if (given !== undefined)
|
|
539
|
+
return given;
|
|
540
|
+
return `${hidden} more ${hidden === 1 ? 'action' : 'actions'}`;
|
|
541
|
+
}, /* @ts-ignore */
|
|
542
|
+
...(ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []));
|
|
543
|
+
trigger = viewChild.required('trigger', /* @ts-ignore */
|
|
544
|
+
...(ngDevMode ? [{ debugName: "trigger" }] : /* istanbul ignore next */ []));
|
|
545
|
+
surface = viewChild(SlMenu, /* @ts-ignore */
|
|
546
|
+
...(ngDevMode ? [{ debugName: "surface" }] : /* istanbul ignore next */ []));
|
|
547
|
+
injector = inject(Injector);
|
|
548
|
+
/**
|
|
549
|
+
* `null` until the view exists, which is also while the surface holds nothing
|
|
550
|
+
* and the outlet renders nothing.
|
|
551
|
+
*/
|
|
552
|
+
surfaceInjector = computed(() => {
|
|
553
|
+
const menu = this.surface();
|
|
554
|
+
if (menu === undefined)
|
|
555
|
+
return null;
|
|
556
|
+
return Injector.create({
|
|
557
|
+
parent: this.injector,
|
|
558
|
+
providers: [{ provide: SlMenu, useValue: menu }],
|
|
559
|
+
});
|
|
560
|
+
}, /* @ts-ignore */
|
|
561
|
+
...(ngDevMode ? [{ debugName: "surfaceInjector" }] : /* istanbul ignore next */ []));
|
|
562
|
+
constructor() {
|
|
563
|
+
const destroyRef = inject(DestroyRef);
|
|
564
|
+
afterNextRender(() => {
|
|
565
|
+
const element = this.trigger().nativeElement;
|
|
566
|
+
/**
|
|
567
|
+
* `slMenuTriggerFor` binds `[attr.data-part]` and resolves it to `null`
|
|
568
|
+
* for a trigger that is neither a bar's item nor a submenu's, and a host
|
|
569
|
+
* binding of `null` removes the attribute the author wrote. The part is
|
|
570
|
+
* therefore written back after the first change detection, where nothing
|
|
571
|
+
* writes over it again: the expression is a constant, so Angular applies
|
|
572
|
+
* it once. `docs/build-briefing.md` records the rule; `toolbar` is where
|
|
573
|
+
* it was learnt.
|
|
574
|
+
*/
|
|
575
|
+
element.setAttribute('data-part', 'overflow');
|
|
576
|
+
/* The bar measures the control, so it has to hold it. */
|
|
577
|
+
this.bar.registerTrigger(element);
|
|
578
|
+
});
|
|
579
|
+
destroyRef.onDestroy(() => this.bar.registerTrigger(null));
|
|
580
|
+
}
|
|
581
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlActionBarOverflow, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
582
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: SlActionBarOverflow, isStandalone: true, selector: "sl-action-bar-overflow", inputs: { align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, side: { classPropertyName: "side", publicName: "side", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null } }, host: { styleAttribute: "display: contents" }, viewQueries: [{ propertyName: "trigger", first: true, predicate: ["trigger"], descendants: true, isSignal: true }, { propertyName: "surface", first: true, predicate: SlMenu, descendants: true, isSignal: true }], exportAs: ["slActionBarOverflow"], ngImport: i0, template: `
|
|
583
|
+
<button
|
|
584
|
+
#trigger
|
|
585
|
+
data-part="overflow"
|
|
586
|
+
type="button"
|
|
587
|
+
[slMenuTriggerFor]="surface"
|
|
588
|
+
[attr.aria-label]="name()"
|
|
589
|
+
>
|
|
590
|
+
<span slIcon><svg slGlyph name="ellipsis"></svg></span>
|
|
591
|
+
</button>
|
|
592
|
+
<sl-menu #surface [align]="align()" [side]="side()" [size]="size()">
|
|
593
|
+
@for (unit of bar.surfaceUnits(); track unit.id) {
|
|
594
|
+
@if (unit.separatorBefore) {
|
|
595
|
+
<hr slMenuSeparator />
|
|
596
|
+
}
|
|
597
|
+
<ng-container *ngTemplateOutlet="bar.counterpart(unit.id)!; injector: surfaceInjector()" />
|
|
598
|
+
}
|
|
599
|
+
</sl-menu>
|
|
600
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SlGlyph, selector: "svg[slGlyph]", inputs: ["name", "solid"] }, { kind: "component", type: SlIcon, selector: "[slIcon]", inputs: ["directional", "label", "size", "tone"], exportAs: ["slIcon"] }, { kind: "component", type: SlMenu, selector: "sl-menu", inputs: ["value", "aria-label", "aria-describedby", "open", "align", "side", "size", "mount", "strategy", "sideOffset", "alignOffset", "collisionPadding", "submenuOpenDelay", "submenuCloseDelay", "typeaheadTimeout", "disabled", "loop", "typeahead", "openOnHover", "closeOnSelect", "closeOnEscape", "closeOnOutsidePress", "flip", "shift", "hideWhenDetached", "portal", "loading"], outputs: ["openChange", "openChangeRequest"], exportAs: ["slMenu"] }, { kind: "directive", type: SlMenuSeparator, selector: "hr[slMenuSeparator]" }, { kind: "directive", type: SlMenuTrigger, selector: "[slMenuTriggerFor]", inputs: ["slMenuTriggerFor"], exportAs: ["slMenuTrigger"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
601
|
+
}
|
|
602
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlActionBarOverflow, decorators: [{
|
|
603
|
+
type: Component,
|
|
604
|
+
args: [{
|
|
605
|
+
selector: 'sl-action-bar-overflow',
|
|
606
|
+
standalone: true,
|
|
607
|
+
exportAs: 'slActionBarOverflow',
|
|
608
|
+
imports: [NgTemplateOutlet, SlGlyph, SlIcon, SlMenu, SlMenuSeparator, SlMenuTrigger],
|
|
609
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
610
|
+
encapsulation: ViewEncapsulation.None,
|
|
611
|
+
host: { style: 'display: contents' },
|
|
612
|
+
template: `
|
|
613
|
+
<button
|
|
614
|
+
#trigger
|
|
615
|
+
data-part="overflow"
|
|
616
|
+
type="button"
|
|
617
|
+
[slMenuTriggerFor]="surface"
|
|
618
|
+
[attr.aria-label]="name()"
|
|
619
|
+
>
|
|
620
|
+
<span slIcon><svg slGlyph name="ellipsis"></svg></span>
|
|
621
|
+
</button>
|
|
622
|
+
<sl-menu #surface [align]="align()" [side]="side()" [size]="size()">
|
|
623
|
+
@for (unit of bar.surfaceUnits(); track unit.id) {
|
|
624
|
+
@if (unit.separatorBefore) {
|
|
625
|
+
<hr slMenuSeparator />
|
|
626
|
+
}
|
|
627
|
+
<ng-container *ngTemplateOutlet="bar.counterpart(unit.id)!; injector: surfaceInjector()" />
|
|
628
|
+
}
|
|
629
|
+
</sl-menu>
|
|
630
|
+
`,
|
|
631
|
+
}]
|
|
632
|
+
}], ctorParameters: () => [], propDecorators: { align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], side: [{ type: i0.Input, args: [{ isSignal: true, alias: "side", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], trigger: [{ type: i0.ViewChild, args: ['trigger', { isSignal: true }] }], surface: [{ type: i0.ViewChild, args: [i0.forwardRef(() => SlMenu), { isSignal: true }] }] } });
|
|
633
|
+
|
|
634
|
+
/**
|
|
635
|
+
* Generated bundle index. Do not edit.
|
|
636
|
+
*/
|
|
637
|
+
|
|
638
|
+
export { ACTION_BAR_DEFAULTS, ACTION_BAR_PRIORITY_ATTRIBUTE, ACTION_BAR_RANK, ACTION_BAR_STACK_PROPERTY, ACTION_BAR_UNIT_ATTRIBUTE, SlActionBar, SlActionBarAction, SlActionBarActions, SlActionBarOverflow, SlActionBarSeparator, SlActionBarStatus, injectActionBarDefaults, provideActionBarDefaults };
|
|
639
|
+
//# sourceMappingURL=slotted-angular-action-bar.mjs.map
|