@slotted/angular 0.0.0-stage → 0.1.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +51 -2
- package/docs/AGENTS.snippet.md +10 -0
- package/docs/accordion.json +345 -0
- package/docs/accordion.md +207 -0
- package/docs/action-bar.json +421 -0
- package/docs/action-bar.md +364 -0
- package/docs/action-sheet.json +210 -0
- package/docs/action-sheet.md +19 -0
- package/docs/alert.json +407 -0
- package/docs/alert.md +239 -0
- package/docs/app-shell.examples.md +349 -0
- package/docs/app-shell.json +835 -0
- package/docs/app-shell.md +214 -0
- package/docs/aspect-ratio.json +159 -0
- package/docs/aspect-ratio.md +134 -0
- package/docs/attachment.json +486 -0
- package/docs/attachment.md +253 -0
- package/docs/avatar-group.json +208 -0
- package/docs/avatar-group.md +130 -0
- package/docs/avatar.json +342 -0
- package/docs/avatar.md +142 -0
- package/docs/badge.json +334 -0
- package/docs/badge.md +138 -0
- package/docs/breadcrumb.json +368 -0
- package/docs/breadcrumb.md +237 -0
- package/docs/button-group.json +158 -0
- package/docs/button-group.md +72 -0
- package/docs/button.examples.md +621 -0
- package/docs/button.json +977 -0
- package/docs/button.md +200 -0
- package/docs/calendar.json +592 -0
- package/docs/calendar.md +242 -0
- package/docs/card.json +283 -0
- package/docs/card.md +130 -0
- package/docs/carousel.json +560 -0
- package/docs/carousel.md +357 -0
- package/docs/cascader.json +933 -0
- package/docs/cascader.md +379 -0
- package/docs/chart.examples.md +582 -0
- package/docs/chart.json +1359 -0
- package/docs/chart.md +187 -0
- package/docs/checkbox-group.examples.md +612 -0
- package/docs/checkbox-group.json +395 -0
- package/docs/checkbox-group.md +106 -0
- package/docs/checkbox.examples.md +546 -0
- package/docs/checkbox.json +506 -0
- package/docs/checkbox.md +104 -0
- package/docs/code-block.json +616 -0
- package/docs/code-block.md +303 -0
- package/docs/collapsible.json +456 -0
- package/docs/collapsible.md +261 -0
- package/docs/color-picker.json +523 -0
- package/docs/color-picker.md +201 -0
- package/docs/column-manager.json +486 -0
- package/docs/column-manager.md +277 -0
- package/docs/combobox.examples.md +1732 -0
- package/docs/combobox.json +1250 -0
- package/docs/combobox.md +209 -0
- package/docs/command-palette.json +800 -0
- package/docs/command-palette.md +419 -0
- package/docs/container.json +156 -0
- package/docs/container.md +92 -0
- package/docs/context-menu.json +231 -0
- package/docs/context-menu.md +176 -0
- package/docs/currency-field.examples.md +321 -0
- package/docs/currency-field.json +649 -0
- package/docs/currency-field.md +128 -0
- package/docs/dashboard-grid.json +680 -0
- package/docs/dashboard-grid.md +265 -0
- package/docs/data-grid.examples.md +3064 -0
- package/docs/data-grid.json +1577 -0
- package/docs/data-grid.md +237 -0
- package/docs/data-grid.props.md +81 -0
- package/docs/data-list.json +685 -0
- package/docs/data-list.md +327 -0
- package/docs/date-field.json +490 -0
- package/docs/date-field.md +235 -0
- package/docs/date-picker.examples.md +1226 -0
- package/docs/date-picker.json +696 -0
- package/docs/date-picker.md +121 -0
- package/docs/date-range-picker.examples.md +1300 -0
- package/docs/date-range-picker.json +903 -0
- package/docs/date-range-picker.md +142 -0
- package/docs/datetime-field.json +665 -0
- package/docs/datetime-field.md +337 -0
- package/docs/datetime-picker.examples.md +1269 -0
- package/docs/datetime-picker.json +928 -0
- package/docs/datetime-picker.md +150 -0
- package/docs/datetime-range-picker.examples.md +225 -0
- package/docs/datetime-range-picker.json +1015 -0
- package/docs/datetime-range-picker.md +162 -0
- package/docs/description-list.json +471 -0
- package/docs/description-list.md +268 -0
- package/docs/detail-panel.json +530 -0
- package/docs/detail-panel.md +361 -0
- package/docs/dialog.examples.md +2467 -0
- package/docs/dialog.json +1141 -0
- package/docs/dialog.md +217 -0
- package/docs/dialog.props.md +63 -0
- package/docs/divider.json +148 -0
- package/docs/divider.md +83 -0
- package/docs/drawer.examples.md +1929 -0
- package/docs/drawer.json +753 -0
- package/docs/drawer.md +199 -0
- package/docs/entity-picker.json +946 -0
- package/docs/entity-picker.md +365 -0
- package/docs/event-calendar.examples.md +308 -0
- package/docs/event-calendar.json +1202 -0
- package/docs/event-calendar.md +201 -0
- package/docs/field-group.json +333 -0
- package/docs/field-group.md +181 -0
- package/docs/field.examples.md +676 -0
- package/docs/field.json +528 -0
- package/docs/field.md +127 -0
- package/docs/filter-bar.json +817 -0
- package/docs/filter-bar.md +380 -0
- package/docs/form.json +378 -0
- package/docs/form.md +235 -0
- package/docs/fullscreen.json +395 -0
- package/docs/fullscreen.md +225 -0
- package/docs/grid.json +176 -0
- package/docs/grid.md +74 -0
- package/docs/highlight.json +279 -0
- package/docs/highlight.md +210 -0
- package/docs/hover-card.json +254 -0
- package/docs/hover-card.md +213 -0
- package/docs/icon.json +173 -0
- package/docs/icon.md +101 -0
- package/docs/image.json +476 -0
- package/docs/image.md +254 -0
- package/docs/import-export-center.json +836 -0
- package/docs/import-export-center.md +345 -0
- package/docs/index.md +141 -0
- package/docs/inline-message.json +312 -0
- package/docs/inline-message.md +191 -0
- package/docs/inline.json +149 -0
- package/docs/inline.md +72 -0
- package/docs/kbd.json +350 -0
- package/docs/kbd.md +210 -0
- package/docs/link.json +264 -0
- package/docs/link.md +167 -0
- package/docs/list-item.json +463 -0
- package/docs/list-item.md +236 -0
- package/docs/list.json +321 -0
- package/docs/list.md +185 -0
- package/docs/listbox.json +807 -0
- package/docs/listbox.md +413 -0
- package/docs/loading-overlay.json +440 -0
- package/docs/loading-overlay.md +248 -0
- package/docs/markdown.json +461 -0
- package/docs/markdown.md +266 -0
- package/docs/menu.examples.md +1651 -0
- package/docs/menu.json +922 -0
- package/docs/menu.md +155 -0
- package/docs/menubar.json +292 -0
- package/docs/menubar.md +173 -0
- package/docs/message-scroller.json +401 -0
- package/docs/message-scroller.md +212 -0
- package/docs/message.json +862 -0
- package/docs/message.md +473 -0
- package/docs/multi-select.examples.md +1922 -0
- package/docs/multi-select.json +1314 -0
- package/docs/multi-select.md +213 -0
- package/docs/navigation-menu.json +529 -0
- package/docs/navigation-menu.md +329 -0
- package/docs/notification-center.json +664 -0
- package/docs/notification-center.md +372 -0
- package/docs/number-field.examples.md +1078 -0
- package/docs/number-field.json +668 -0
- package/docs/number-field.md +137 -0
- package/docs/otp-input.json +479 -0
- package/docs/otp-input.md +291 -0
- package/docs/page-header.json +574 -0
- package/docs/page-header.md +338 -0
- package/docs/page.json +332 -0
- package/docs/page.md +184 -0
- package/docs/pagination.json +434 -0
- package/docs/pagination.md +238 -0
- package/docs/popover.examples.md +1235 -0
- package/docs/popover.json +656 -0
- package/docs/popover.md +199 -0
- package/docs/progress-indicator.json +501 -0
- package/docs/progress-indicator.md +329 -0
- package/docs/prompt-composer.json +498 -0
- package/docs/prompt-composer.md +278 -0
- package/docs/prose.json +357 -0
- package/docs/prose.md +226 -0
- package/docs/radio-group.examples.md +626 -0
- package/docs/radio-group.json +541 -0
- package/docs/radio-group.md +112 -0
- package/docs/rating.json +1053 -0
- package/docs/rating.md +435 -0
- package/docs/result-state.json +376 -0
- package/docs/result-state.md +286 -0
- package/docs/saved-views.json +384 -0
- package/docs/saved-views.md +242 -0
- package/docs/scroll-area.json +120 -0
- package/docs/scroll-area.md +8 -0
- package/docs/section.json +344 -0
- package/docs/section.md +208 -0
- package/docs/segmented-control.json +429 -0
- package/docs/segmented-control.md +240 -0
- package/docs/select.examples.md +1214 -0
- package/docs/select.json +1147 -0
- package/docs/select.md +199 -0
- package/docs/side-navigation.json +632 -0
- package/docs/side-navigation.md +430 -0
- package/docs/skeleton.json +358 -0
- package/docs/skeleton.md +223 -0
- package/docs/slider.json +522 -0
- package/docs/slider.md +261 -0
- package/docs/sparkline.json +426 -0
- package/docs/sparkline.md +206 -0
- package/docs/split-button.json +361 -0
- package/docs/split-button.md +275 -0
- package/docs/splitter.json +142 -0
- package/docs/splitter.md +14 -0
- package/docs/stack.json +135 -0
- package/docs/stack.md +74 -0
- package/docs/stat-card.json +529 -0
- package/docs/stat-card.md +270 -0
- package/docs/status-indicator.json +314 -0
- package/docs/status-indicator.md +197 -0
- package/docs/stepper.json +451 -0
- package/docs/stepper.md +250 -0
- package/docs/switch.json +451 -0
- package/docs/switch.md +508 -0
- package/docs/table-of-contents.json +553 -0
- package/docs/table-of-contents.md +289 -0
- package/docs/table.examples.md +1981 -0
- package/docs/table.json +1059 -0
- package/docs/table.md +290 -0
- package/docs/tabs.examples.md +1370 -0
- package/docs/tabs.json +661 -0
- package/docs/tabs.md +211 -0
- package/docs/tag.json +813 -0
- package/docs/tag.md +241 -0
- package/docs/tags-input.json +771 -0
- package/docs/tags-input.md +361 -0
- package/docs/text-field.examples.md +821 -0
- package/docs/text-field.json +604 -0
- package/docs/text-field.md +125 -0
- package/docs/textarea.examples.md +612 -0
- package/docs/textarea.json +440 -0
- package/docs/textarea.md +98 -0
- package/docs/time-field.json +584 -0
- package/docs/time-field.md +291 -0
- package/docs/time-picker.json +679 -0
- package/docs/time-picker.md +315 -0
- package/docs/time-range-picker.examples.md +191 -0
- package/docs/time-range-picker.json +924 -0
- package/docs/time-range-picker.md +152 -0
- package/docs/timeline.json +839 -0
- package/docs/timeline.md +401 -0
- package/docs/toast.json +642 -0
- package/docs/toast.md +311 -0
- package/docs/toggle-group.json +417 -0
- package/docs/toggle-group.md +255 -0
- package/docs/toggle.json +326 -0
- package/docs/toggle.md +222 -0
- package/docs/toolbar.json +380 -0
- package/docs/toolbar.md +240 -0
- package/docs/tooltip.examples.md +664 -0
- package/docs/tooltip.json +604 -0
- package/docs/tooltip.md +146 -0
- package/docs/top-navigation.examples.md +287 -0
- package/docs/top-navigation.json +648 -0
- package/docs/top-navigation.md +138 -0
- package/docs/tour.json +759 -0
- package/docs/tour.md +337 -0
- package/docs/transfer.json +746 -0
- package/docs/transfer.md +273 -0
- package/docs/tree.json +918 -0
- package/docs/tree.md +397 -0
- package/docs/typography.json +317 -0
- package/docs/typography.md +107 -0
- package/docs/upload.examples.md +358 -0
- package/docs/upload.json +1103 -0
- package/docs/upload.md +166 -0
- package/docs/visually-hidden.json +71 -0
- package/docs/visually-hidden.md +42 -0
- package/docs/wizard.json +724 -0
- package/docs/wizard.md +295 -0
- package/fesm2022/slotted-angular-accordion.mjs +247 -0
- package/fesm2022/slotted-angular-accordion.mjs.map +1 -0
- package/fesm2022/slotted-angular-action-bar.mjs +639 -0
- package/fesm2022/slotted-angular-action-bar.mjs.map +1 -0
- package/fesm2022/slotted-angular-action-sheet.mjs +749 -0
- package/fesm2022/slotted-angular-action-sheet.mjs.map +1 -0
- package/fesm2022/slotted-angular-alert.mjs +427 -0
- package/fesm2022/slotted-angular-alert.mjs.map +1 -0
- package/fesm2022/slotted-angular-app-shell.mjs +1334 -0
- package/fesm2022/slotted-angular-app-shell.mjs.map +1 -0
- package/fesm2022/slotted-angular-aspect-ratio.mjs +63 -0
- package/fesm2022/slotted-angular-aspect-ratio.mjs.map +1 -0
- package/fesm2022/slotted-angular-attachment.mjs +595 -0
- package/fesm2022/slotted-angular-attachment.mjs.map +1 -0
- package/fesm2022/slotted-angular-avatar-group.mjs +230 -0
- package/fesm2022/slotted-angular-avatar-group.mjs.map +1 -0
- package/fesm2022/slotted-angular-avatar.mjs +330 -0
- package/fesm2022/slotted-angular-avatar.mjs.map +1 -0
- package/fesm2022/slotted-angular-badge.mjs +255 -0
- package/fesm2022/slotted-angular-badge.mjs.map +1 -0
- package/fesm2022/slotted-angular-breadcrumb.mjs +544 -0
- package/fesm2022/slotted-angular-breadcrumb.mjs.map +1 -0
- package/fesm2022/slotted-angular-button-group.mjs +146 -0
- package/fesm2022/slotted-angular-button-group.mjs.map +1 -0
- package/fesm2022/slotted-angular-button.mjs +692 -0
- package/fesm2022/slotted-angular-button.mjs.map +1 -0
- package/fesm2022/slotted-angular-calendar.mjs +916 -0
- package/fesm2022/slotted-angular-calendar.mjs.map +1 -0
- package/fesm2022/slotted-angular-card.mjs +225 -0
- package/fesm2022/slotted-angular-card.mjs.map +1 -0
- package/fesm2022/slotted-angular-carousel.mjs +840 -0
- package/fesm2022/slotted-angular-carousel.mjs.map +1 -0
- package/fesm2022/slotted-angular-cascader.mjs +1839 -0
- package/fesm2022/slotted-angular-cascader.mjs.map +1 -0
- package/fesm2022/slotted-angular-chart.mjs +974 -0
- package/fesm2022/slotted-angular-chart.mjs.map +1 -0
- package/fesm2022/slotted-angular-checkbox-group.mjs +283 -0
- package/fesm2022/slotted-angular-checkbox-group.mjs.map +1 -0
- package/fesm2022/slotted-angular-checkbox.mjs +468 -0
- package/fesm2022/slotted-angular-checkbox.mjs.map +1 -0
- package/fesm2022/slotted-angular-code-block.mjs +476 -0
- package/fesm2022/slotted-angular-code-block.mjs.map +1 -0
- package/fesm2022/slotted-angular-collapsible.mjs +479 -0
- package/fesm2022/slotted-angular-collapsible.mjs.map +1 -0
- package/fesm2022/slotted-angular-color-picker.mjs +910 -0
- package/fesm2022/slotted-angular-color-picker.mjs.map +1 -0
- package/fesm2022/slotted-angular-column-manager.mjs +1037 -0
- package/fesm2022/slotted-angular-column-manager.mjs.map +1 -0
- package/fesm2022/slotted-angular-combobox.mjs +1480 -0
- package/fesm2022/slotted-angular-combobox.mjs.map +1 -0
- package/fesm2022/slotted-angular-command-palette.mjs +1283 -0
- package/fesm2022/slotted-angular-command-palette.mjs.map +1 -0
- package/fesm2022/slotted-angular-container.mjs +105 -0
- package/fesm2022/slotted-angular-container.mjs.map +1 -0
- package/fesm2022/slotted-angular-context-menu.mjs +221 -0
- package/fesm2022/slotted-angular-context-menu.mjs.map +1 -0
- package/fesm2022/slotted-angular-currency-field.mjs +1131 -0
- package/fesm2022/slotted-angular-currency-field.mjs.map +1 -0
- package/fesm2022/slotted-angular-dashboard-grid.mjs +1928 -0
- package/fesm2022/slotted-angular-dashboard-grid.mjs.map +1 -0
- package/fesm2022/slotted-angular-data-grid.mjs +6697 -0
- package/fesm2022/slotted-angular-data-grid.mjs.map +1 -0
- package/fesm2022/slotted-angular-data-list.mjs +1418 -0
- package/fesm2022/slotted-angular-data-list.mjs.map +1 -0
- package/fesm2022/slotted-angular-date-field.mjs +772 -0
- package/fesm2022/slotted-angular-date-field.mjs.map +1 -0
- package/fesm2022/slotted-angular-date-picker.mjs +690 -0
- package/fesm2022/slotted-angular-date-picker.mjs.map +1 -0
- package/fesm2022/slotted-angular-date-range-picker.mjs +1150 -0
- package/fesm2022/slotted-angular-date-range-picker.mjs.map +1 -0
- package/fesm2022/slotted-angular-datetime-field.mjs +1058 -0
- package/fesm2022/slotted-angular-datetime-field.mjs.map +1 -0
- package/fesm2022/slotted-angular-datetime-picker.mjs +1362 -0
- package/fesm2022/slotted-angular-datetime-picker.mjs.map +1 -0
- package/fesm2022/slotted-angular-datetime-range-picker.mjs +1872 -0
- package/fesm2022/slotted-angular-datetime-range-picker.mjs.map +1 -0
- package/fesm2022/slotted-angular-description-list.mjs +545 -0
- package/fesm2022/slotted-angular-description-list.mjs.map +1 -0
- package/fesm2022/slotted-angular-detail-panel.mjs +754 -0
- package/fesm2022/slotted-angular-detail-panel.mjs.map +1 -0
- package/fesm2022/slotted-angular-dialog.mjs +980 -0
- package/fesm2022/slotted-angular-dialog.mjs.map +1 -0
- package/fesm2022/slotted-angular-divider.mjs +76 -0
- package/fesm2022/slotted-angular-divider.mjs.map +1 -0
- package/fesm2022/slotted-angular-drawer.mjs +1397 -0
- package/fesm2022/slotted-angular-drawer.mjs.map +1 -0
- package/fesm2022/slotted-angular-entity-picker.mjs +1987 -0
- package/fesm2022/slotted-angular-entity-picker.mjs.map +1 -0
- package/fesm2022/slotted-angular-event-calendar.mjs +2934 -0
- package/fesm2022/slotted-angular-event-calendar.mjs.map +1 -0
- package/fesm2022/slotted-angular-field-group.mjs +301 -0
- package/fesm2022/slotted-angular-field-group.mjs.map +1 -0
- package/fesm2022/slotted-angular-field.mjs +928 -0
- package/fesm2022/slotted-angular-field.mjs.map +1 -0
- package/fesm2022/slotted-angular-filter-bar.mjs +3107 -0
- package/fesm2022/slotted-angular-filter-bar.mjs.map +1 -0
- package/fesm2022/slotted-angular-form.mjs +592 -0
- package/fesm2022/slotted-angular-form.mjs.map +1 -0
- package/fesm2022/slotted-angular-fullscreen.mjs +314 -0
- package/fesm2022/slotted-angular-fullscreen.mjs.map +1 -0
- package/fesm2022/slotted-angular-grid.mjs +58 -0
- package/fesm2022/slotted-angular-grid.mjs.map +1 -0
- package/fesm2022/slotted-angular-highlight.mjs +123 -0
- package/fesm2022/slotted-angular-highlight.mjs.map +1 -0
- package/fesm2022/slotted-angular-hover-card.mjs +326 -0
- package/fesm2022/slotted-angular-hover-card.mjs.map +1 -0
- package/fesm2022/slotted-angular-i18n.mjs +75 -0
- package/fesm2022/slotted-angular-i18n.mjs.map +1 -0
- package/fesm2022/slotted-angular-icon.mjs +232 -0
- package/fesm2022/slotted-angular-icon.mjs.map +1 -0
- package/fesm2022/slotted-angular-image.mjs +442 -0
- package/fesm2022/slotted-angular-image.mjs.map +1 -0
- package/fesm2022/slotted-angular-import-export-center.mjs +1792 -0
- package/fesm2022/slotted-angular-import-export-center.mjs.map +1 -0
- package/fesm2022/slotted-angular-inline-message.mjs +280 -0
- package/fesm2022/slotted-angular-inline-message.mjs.map +1 -0
- package/fesm2022/slotted-angular-inline.mjs +52 -0
- package/fesm2022/slotted-angular-inline.mjs.map +1 -0
- package/fesm2022/slotted-angular-kbd.mjs +284 -0
- package/fesm2022/slotted-angular-kbd.mjs.map +1 -0
- package/fesm2022/slotted-angular-link.mjs +182 -0
- package/fesm2022/slotted-angular-link.mjs.map +1 -0
- package/fesm2022/slotted-angular-list-item.mjs +367 -0
- package/fesm2022/slotted-angular-list-item.mjs.map +1 -0
- package/fesm2022/slotted-angular-list.mjs +256 -0
- package/fesm2022/slotted-angular-list.mjs.map +1 -0
- package/fesm2022/slotted-angular-listbox.mjs +1274 -0
- package/fesm2022/slotted-angular-listbox.mjs.map +1 -0
- package/fesm2022/slotted-angular-loading-overlay.mjs +451 -0
- package/fesm2022/slotted-angular-loading-overlay.mjs.map +1 -0
- package/fesm2022/slotted-angular-markdown.mjs +914 -0
- package/fesm2022/slotted-angular-markdown.mjs.map +1 -0
- package/fesm2022/slotted-angular-menu.mjs +1211 -0
- package/fesm2022/slotted-angular-menu.mjs.map +1 -0
- package/fesm2022/slotted-angular-menubar.mjs +230 -0
- package/fesm2022/slotted-angular-menubar.mjs.map +1 -0
- package/fesm2022/slotted-angular-message-scroller.mjs +378 -0
- package/fesm2022/slotted-angular-message-scroller.mjs.map +1 -0
- package/fesm2022/slotted-angular-message.mjs +866 -0
- package/fesm2022/slotted-angular-message.mjs.map +1 -0
- package/fesm2022/slotted-angular-multi-select.mjs +1939 -0
- package/fesm2022/slotted-angular-multi-select.mjs.map +1 -0
- package/fesm2022/slotted-angular-navigation-menu.mjs +770 -0
- package/fesm2022/slotted-angular-navigation-menu.mjs.map +1 -0
- package/fesm2022/slotted-angular-notification-center.mjs +1172 -0
- package/fesm2022/slotted-angular-notification-center.mjs.map +1 -0
- package/fesm2022/slotted-angular-number-field.mjs +966 -0
- package/fesm2022/slotted-angular-number-field.mjs.map +1 -0
- package/fesm2022/slotted-angular-otp-input.mjs +629 -0
- package/fesm2022/slotted-angular-otp-input.mjs.map +1 -0
- package/fesm2022/slotted-angular-page-header.mjs +788 -0
- package/fesm2022/slotted-angular-page-header.mjs.map +1 -0
- package/fesm2022/slotted-angular-page.mjs +255 -0
- package/fesm2022/slotted-angular-page.mjs.map +1 -0
- package/fesm2022/slotted-angular-pagination.mjs +562 -0
- package/fesm2022/slotted-angular-pagination.mjs.map +1 -0
- package/fesm2022/slotted-angular-popover.mjs +799 -0
- package/fesm2022/slotted-angular-popover.mjs.map +1 -0
- package/fesm2022/slotted-angular-progress-indicator.mjs +572 -0
- package/fesm2022/slotted-angular-progress-indicator.mjs.map +1 -0
- package/fesm2022/slotted-angular-prompt-composer.mjs +596 -0
- package/fesm2022/slotted-angular-prompt-composer.mjs.map +1 -0
- package/fesm2022/slotted-angular-prose.mjs +314 -0
- package/fesm2022/slotted-angular-prose.mjs.map +1 -0
- package/fesm2022/slotted-angular-radio-group.mjs +469 -0
- package/fesm2022/slotted-angular-radio-group.mjs.map +1 -0
- package/fesm2022/slotted-angular-rating.mjs +1174 -0
- package/fesm2022/slotted-angular-rating.mjs.map +1 -0
- package/fesm2022/slotted-angular-result-state.mjs +330 -0
- package/fesm2022/slotted-angular-result-state.mjs.map +1 -0
- package/fesm2022/slotted-angular-saved-views.mjs +877 -0
- package/fesm2022/slotted-angular-saved-views.mjs.map +1 -0
- package/fesm2022/slotted-angular-scroll-area.mjs +294 -0
- package/fesm2022/slotted-angular-scroll-area.mjs.map +1 -0
- package/fesm2022/slotted-angular-section.mjs +266 -0
- package/fesm2022/slotted-angular-section.mjs.map +1 -0
- package/fesm2022/slotted-angular-segmented-control.mjs +454 -0
- package/fesm2022/slotted-angular-segmented-control.mjs.map +1 -0
- package/fesm2022/slotted-angular-select.mjs +1899 -0
- package/fesm2022/slotted-angular-select.mjs.map +1 -0
- package/fesm2022/slotted-angular-side-navigation.mjs +1042 -0
- package/fesm2022/slotted-angular-side-navigation.mjs.map +1 -0
- package/fesm2022/slotted-angular-skeleton.mjs +316 -0
- package/fesm2022/slotted-angular-skeleton.mjs.map +1 -0
- package/fesm2022/slotted-angular-slider.mjs +586 -0
- package/fesm2022/slotted-angular-slider.mjs.map +1 -0
- package/fesm2022/slotted-angular-sparkline.mjs +235 -0
- package/fesm2022/slotted-angular-sparkline.mjs.map +1 -0
- package/fesm2022/slotted-angular-split-button.mjs +331 -0
- package/fesm2022/slotted-angular-split-button.mjs.map +1 -0
- package/fesm2022/slotted-angular-splitter.mjs +516 -0
- package/fesm2022/slotted-angular-splitter.mjs.map +1 -0
- package/fesm2022/slotted-angular-stack.mjs +48 -0
- package/fesm2022/slotted-angular-stack.mjs.map +1 -0
- package/fesm2022/slotted-angular-stat-card.mjs +478 -0
- package/fesm2022/slotted-angular-stat-card.mjs.map +1 -0
- package/fesm2022/slotted-angular-status-indicator.mjs +155 -0
- package/fesm2022/slotted-angular-status-indicator.mjs.map +1 -0
- package/fesm2022/slotted-angular-stepper.mjs +536 -0
- package/fesm2022/slotted-angular-stepper.mjs.map +1 -0
- package/fesm2022/slotted-angular-switch.mjs +447 -0
- package/fesm2022/slotted-angular-switch.mjs.map +1 -0
- package/fesm2022/slotted-angular-table-of-contents.mjs +750 -0
- package/fesm2022/slotted-angular-table-of-contents.mjs.map +1 -0
- package/fesm2022/slotted-angular-table.mjs +2518 -0
- package/fesm2022/slotted-angular-table.mjs.map +1 -0
- package/fesm2022/slotted-angular-tabs.mjs +829 -0
- package/fesm2022/slotted-angular-tabs.mjs.map +1 -0
- package/fesm2022/slotted-angular-tag.mjs +595 -0
- package/fesm2022/slotted-angular-tag.mjs.map +1 -0
- package/fesm2022/slotted-angular-tags-input.mjs +1211 -0
- package/fesm2022/slotted-angular-tags-input.mjs.map +1 -0
- package/fesm2022/slotted-angular-text-field.mjs +674 -0
- package/fesm2022/slotted-angular-text-field.mjs.map +1 -0
- package/fesm2022/slotted-angular-textarea.mjs +275 -0
- package/fesm2022/slotted-angular-textarea.mjs.map +1 -0
- package/fesm2022/slotted-angular-theme.mjs +45 -0
- package/fesm2022/slotted-angular-theme.mjs.map +1 -0
- package/fesm2022/slotted-angular-time-field.mjs +895 -0
- package/fesm2022/slotted-angular-time-field.mjs.map +1 -0
- package/fesm2022/slotted-angular-time-picker.mjs +856 -0
- package/fesm2022/slotted-angular-time-picker.mjs.map +1 -0
- package/fesm2022/slotted-angular-time-range-picker.mjs +1534 -0
- package/fesm2022/slotted-angular-time-range-picker.mjs.map +1 -0
- package/fesm2022/slotted-angular-timeline.mjs +928 -0
- package/fesm2022/slotted-angular-timeline.mjs.map +1 -0
- package/fesm2022/slotted-angular-toast.mjs +917 -0
- package/fesm2022/slotted-angular-toast.mjs.map +1 -0
- package/fesm2022/slotted-angular-toggle-group.mjs +311 -0
- package/fesm2022/slotted-angular-toggle-group.mjs.map +1 -0
- package/fesm2022/slotted-angular-toggle.mjs +162 -0
- package/fesm2022/slotted-angular-toggle.mjs.map +1 -0
- package/fesm2022/slotted-angular-toolbar.mjs +536 -0
- package/fesm2022/slotted-angular-toolbar.mjs.map +1 -0
- package/fesm2022/slotted-angular-tooltip.mjs +798 -0
- package/fesm2022/slotted-angular-tooltip.mjs.map +1 -0
- package/fesm2022/slotted-angular-top-navigation.mjs +1308 -0
- package/fesm2022/slotted-angular-top-navigation.mjs.map +1 -0
- package/fesm2022/slotted-angular-tour.mjs +1330 -0
- package/fesm2022/slotted-angular-tour.mjs.map +1 -0
- package/fesm2022/slotted-angular-transfer.mjs +1406 -0
- package/fesm2022/slotted-angular-transfer.mjs.map +1 -0
- package/fesm2022/slotted-angular-tree.mjs +1448 -0
- package/fesm2022/slotted-angular-tree.mjs.map +1 -0
- package/fesm2022/slotted-angular-typography.mjs +184 -0
- package/fesm2022/slotted-angular-typography.mjs.map +1 -0
- package/fesm2022/slotted-angular-upload.mjs +1523 -0
- package/fesm2022/slotted-angular-upload.mjs.map +1 -0
- package/fesm2022/slotted-angular-visually-hidden.mjs +32 -0
- package/fesm2022/slotted-angular-visually-hidden.mjs.map +1 -0
- package/fesm2022/slotted-angular-wizard.mjs +1715 -0
- package/fesm2022/slotted-angular-wizard.mjs.map +1 -0
- package/fesm2022/slotted-angular.mjs +4 -0
- package/fesm2022/slotted-angular.mjs.map +1 -0
- package/package.json +537 -3
- package/types/slotted-angular-accordion.d.ts +156 -0
- package/types/slotted-angular-accordion.d.ts.map +1 -0
- package/types/slotted-angular-action-bar.d.ts +291 -0
- package/types/slotted-angular-action-bar.d.ts.map +1 -0
- package/types/slotted-angular-action-sheet.d.ts +294 -0
- package/types/slotted-angular-action-sheet.d.ts.map +1 -0
- package/types/slotted-angular-alert.d.ts +214 -0
- package/types/slotted-angular-alert.d.ts.map +1 -0
- package/types/slotted-angular-app-shell.d.ts +549 -0
- package/types/slotted-angular-app-shell.d.ts.map +1 -0
- package/types/slotted-angular-aspect-ratio.d.ts +57 -0
- package/types/slotted-angular-aspect-ratio.d.ts.map +1 -0
- package/types/slotted-angular-attachment.d.ts +294 -0
- package/types/slotted-angular-attachment.d.ts.map +1 -0
- package/types/slotted-angular-avatar-group.d.ts +119 -0
- package/types/slotted-angular-avatar-group.d.ts.map +1 -0
- package/types/slotted-angular-avatar.d.ts +202 -0
- package/types/slotted-angular-avatar.d.ts.map +1 -0
- package/types/slotted-angular-badge.d.ts +166 -0
- package/types/slotted-angular-badge.d.ts.map +1 -0
- package/types/slotted-angular-breadcrumb.d.ts +251 -0
- package/types/slotted-angular-breadcrumb.d.ts.map +1 -0
- package/types/slotted-angular-button-group.d.ts +89 -0
- package/types/slotted-angular-button-group.d.ts.map +1 -0
- package/types/slotted-angular-button.d.ts +390 -0
- package/types/slotted-angular-button.d.ts.map +1 -0
- package/types/slotted-angular-calendar.d.ts +280 -0
- package/types/slotted-angular-calendar.d.ts.map +1 -0
- package/types/slotted-angular-card.d.ts +140 -0
- package/types/slotted-angular-card.d.ts.map +1 -0
- package/types/slotted-angular-carousel.d.ts +288 -0
- package/types/slotted-angular-carousel.d.ts.map +1 -0
- package/types/slotted-angular-cascader.d.ts +351 -0
- package/types/slotted-angular-cascader.d.ts.map +1 -0
- package/types/slotted-angular-chart.d.ts +319 -0
- package/types/slotted-angular-chart.d.ts.map +1 -0
- package/types/slotted-angular-checkbox-group.d.ts +156 -0
- package/types/slotted-angular-checkbox-group.d.ts.map +1 -0
- package/types/slotted-angular-checkbox.d.ts +197 -0
- package/types/slotted-angular-checkbox.d.ts.map +1 -0
- package/types/slotted-angular-code-block.d.ts +158 -0
- package/types/slotted-angular-code-block.d.ts.map +1 -0
- package/types/slotted-angular-collapsible.d.ts +272 -0
- package/types/slotted-angular-collapsible.d.ts.map +1 -0
- package/types/slotted-angular-color-picker.d.ts +181 -0
- package/types/slotted-angular-color-picker.d.ts.map +1 -0
- package/types/slotted-angular-column-manager.d.ts +200 -0
- package/types/slotted-angular-column-manager.d.ts.map +1 -0
- package/types/slotted-angular-combobox.d.ts +449 -0
- package/types/slotted-angular-combobox.d.ts.map +1 -0
- package/types/slotted-angular-command-palette.d.ts +256 -0
- package/types/slotted-angular-command-palette.d.ts.map +1 -0
- package/types/slotted-angular-container.d.ts +84 -0
- package/types/slotted-angular-container.d.ts.map +1 -0
- package/types/slotted-angular-context-menu.d.ts +84 -0
- package/types/slotted-angular-context-menu.d.ts.map +1 -0
- package/types/slotted-angular-currency-field.d.ts +480 -0
- package/types/slotted-angular-currency-field.d.ts.map +1 -0
- package/types/slotted-angular-dashboard-grid.d.ts +341 -0
- package/types/slotted-angular-dashboard-grid.d.ts.map +1 -0
- package/types/slotted-angular-data-grid.d.ts +1077 -0
- package/types/slotted-angular-data-grid.d.ts.map +1 -0
- package/types/slotted-angular-data-list.d.ts +272 -0
- package/types/slotted-angular-data-list.d.ts.map +1 -0
- package/types/slotted-angular-date-field.d.ts +320 -0
- package/types/slotted-angular-date-field.d.ts.map +1 -0
- package/types/slotted-angular-date-picker.d.ts +224 -0
- package/types/slotted-angular-date-picker.d.ts.map +1 -0
- package/types/slotted-angular-date-range-picker.d.ts +310 -0
- package/types/slotted-angular-date-range-picker.d.ts.map +1 -0
- package/types/slotted-angular-datetime-field.d.ts +362 -0
- package/types/slotted-angular-datetime-field.d.ts.map +1 -0
- package/types/slotted-angular-datetime-picker.d.ts +370 -0
- package/types/slotted-angular-datetime-picker.d.ts.map +1 -0
- package/types/slotted-angular-datetime-range-picker.d.ts +459 -0
- package/types/slotted-angular-datetime-range-picker.d.ts.map +1 -0
- package/types/slotted-angular-description-list.d.ts +281 -0
- package/types/slotted-angular-description-list.d.ts.map +1 -0
- package/types/slotted-angular-detail-panel.d.ts +240 -0
- package/types/slotted-angular-detail-panel.d.ts.map +1 -0
- package/types/slotted-angular-dialog.d.ts +497 -0
- package/types/slotted-angular-dialog.d.ts.map +1 -0
- package/types/slotted-angular-divider.d.ts +40 -0
- package/types/slotted-angular-divider.d.ts.map +1 -0
- package/types/slotted-angular-drawer.d.ts +532 -0
- package/types/slotted-angular-drawer.d.ts.map +1 -0
- package/types/slotted-angular-entity-picker.d.ts +338 -0
- package/types/slotted-angular-entity-picker.d.ts.map +1 -0
- package/types/slotted-angular-event-calendar.d.ts +574 -0
- package/types/slotted-angular-event-calendar.d.ts.map +1 -0
- package/types/slotted-angular-field-group.d.ts +152 -0
- package/types/slotted-angular-field-group.d.ts.map +1 -0
- package/types/slotted-angular-field.d.ts +535 -0
- package/types/slotted-angular-field.d.ts.map +1 -0
- package/types/slotted-angular-filter-bar.d.ts +573 -0
- package/types/slotted-angular-filter-bar.d.ts.map +1 -0
- package/types/slotted-angular-form.d.ts +298 -0
- package/types/slotted-angular-form.d.ts.map +1 -0
- package/types/slotted-angular-fullscreen.d.ts +145 -0
- package/types/slotted-angular-fullscreen.d.ts.map +1 -0
- package/types/slotted-angular-grid.d.ts +50 -0
- package/types/slotted-angular-grid.d.ts.map +1 -0
- package/types/slotted-angular-highlight.d.ts +93 -0
- package/types/slotted-angular-highlight.d.ts.map +1 -0
- package/types/slotted-angular-hover-card.d.ts +140 -0
- package/types/slotted-angular-hover-card.d.ts.map +1 -0
- package/types/slotted-angular-i18n.d.ts +46 -0
- package/types/slotted-angular-i18n.d.ts.map +1 -0
- package/types/slotted-angular-icon.d.ts +94 -0
- package/types/slotted-angular-icon.d.ts.map +1 -0
- package/types/slotted-angular-image.d.ts +251 -0
- package/types/slotted-angular-image.d.ts.map +1 -0
- package/types/slotted-angular-import-export-center.d.ts +351 -0
- package/types/slotted-angular-import-export-center.d.ts.map +1 -0
- package/types/slotted-angular-inline-message.d.ts +195 -0
- package/types/slotted-angular-inline-message.d.ts.map +1 -0
- package/types/slotted-angular-inline.d.ts +41 -0
- package/types/slotted-angular-inline.d.ts.map +1 -0
- package/types/slotted-angular-kbd.d.ts +174 -0
- package/types/slotted-angular-kbd.d.ts.map +1 -0
- package/types/slotted-angular-link.d.ts +94 -0
- package/types/slotted-angular-link.d.ts.map +1 -0
- package/types/slotted-angular-list-item.d.ts +210 -0
- package/types/slotted-angular-list-item.d.ts.map +1 -0
- package/types/slotted-angular-list.d.ts +176 -0
- package/types/slotted-angular-list.d.ts.map +1 -0
- package/types/slotted-angular-listbox.d.ts +470 -0
- package/types/slotted-angular-listbox.d.ts.map +1 -0
- package/types/slotted-angular-loading-overlay.d.ts +219 -0
- package/types/slotted-angular-loading-overlay.d.ts.map +1 -0
- package/types/slotted-angular-markdown.d.ts +172 -0
- package/types/slotted-angular-markdown.d.ts.map +1 -0
- package/types/slotted-angular-menu.d.ts +448 -0
- package/types/slotted-angular-menu.d.ts.map +1 -0
- package/types/slotted-angular-menubar.d.ts +90 -0
- package/types/slotted-angular-menubar.d.ts.map +1 -0
- package/types/slotted-angular-message-scroller.d.ts +151 -0
- package/types/slotted-angular-message-scroller.d.ts.map +1 -0
- package/types/slotted-angular-message.d.ts +348 -0
- package/types/slotted-angular-message.d.ts.map +1 -0
- package/types/slotted-angular-multi-select.d.ts +462 -0
- package/types/slotted-angular-multi-select.d.ts.map +1 -0
- package/types/slotted-angular-navigation-menu.d.ts +309 -0
- package/types/slotted-angular-navigation-menu.d.ts.map +1 -0
- package/types/slotted-angular-notification-center.d.ts +318 -0
- package/types/slotted-angular-notification-center.d.ts.map +1 -0
- package/types/slotted-angular-number-field.d.ts +402 -0
- package/types/slotted-angular-number-field.d.ts.map +1 -0
- package/types/slotted-angular-otp-input.d.ts +286 -0
- package/types/slotted-angular-otp-input.d.ts.map +1 -0
- package/types/slotted-angular-page-header.d.ts +334 -0
- package/types/slotted-angular-page-header.d.ts.map +1 -0
- package/types/slotted-angular-page.d.ts +141 -0
- package/types/slotted-angular-page.d.ts.map +1 -0
- package/types/slotted-angular-pagination.d.ts +213 -0
- package/types/slotted-angular-pagination.d.ts.map +1 -0
- package/types/slotted-angular-popover.d.ts +366 -0
- package/types/slotted-angular-popover.d.ts.map +1 -0
- package/types/slotted-angular-progress-indicator.d.ts +312 -0
- package/types/slotted-angular-progress-indicator.d.ts.map +1 -0
- package/types/slotted-angular-prompt-composer.d.ts +242 -0
- package/types/slotted-angular-prompt-composer.d.ts.map +1 -0
- package/types/slotted-angular-prose.d.ts +171 -0
- package/types/slotted-angular-prose.d.ts.map +1 -0
- package/types/slotted-angular-radio-group.d.ts +268 -0
- package/types/slotted-angular-radio-group.d.ts.map +1 -0
- package/types/slotted-angular-rating.d.ts +374 -0
- package/types/slotted-angular-rating.d.ts.map +1 -0
- package/types/slotted-angular-result-state.d.ts +217 -0
- package/types/slotted-angular-result-state.d.ts.map +1 -0
- package/types/slotted-angular-saved-views.d.ts +198 -0
- package/types/slotted-angular-saved-views.d.ts.map +1 -0
- package/types/slotted-angular-scroll-area.d.ts +186 -0
- package/types/slotted-angular-scroll-area.d.ts.map +1 -0
- package/types/slotted-angular-section.d.ts +143 -0
- package/types/slotted-angular-section.d.ts.map +1 -0
- package/types/slotted-angular-segmented-control.d.ts +251 -0
- package/types/slotted-angular-segmented-control.d.ts.map +1 -0
- package/types/slotted-angular-select.d.ts +507 -0
- package/types/slotted-angular-select.d.ts.map +1 -0
- package/types/slotted-angular-side-navigation.d.ts +373 -0
- package/types/slotted-angular-side-navigation.d.ts.map +1 -0
- package/types/slotted-angular-skeleton.d.ts +198 -0
- package/types/slotted-angular-skeleton.d.ts.map +1 -0
- package/types/slotted-angular-slider.d.ts +216 -0
- package/types/slotted-angular-slider.d.ts.map +1 -0
- package/types/slotted-angular-sparkline.d.ts +106 -0
- package/types/slotted-angular-sparkline.d.ts.map +1 -0
- package/types/slotted-angular-split-button.d.ts +180 -0
- package/types/slotted-angular-split-button.d.ts.map +1 -0
- package/types/slotted-angular-splitter.d.ts +206 -0
- package/types/slotted-angular-splitter.d.ts.map +1 -0
- package/types/slotted-angular-stack.d.ts +38 -0
- package/types/slotted-angular-stack.d.ts.map +1 -0
- package/types/slotted-angular-stat-card.d.ts +232 -0
- package/types/slotted-angular-stat-card.d.ts.map +1 -0
- package/types/slotted-angular-status-indicator.d.ts +106 -0
- package/types/slotted-angular-status-indicator.d.ts.map +1 -0
- package/types/slotted-angular-stepper.d.ts +198 -0
- package/types/slotted-angular-stepper.d.ts.map +1 -0
- package/types/slotted-angular-switch.d.ts +243 -0
- package/types/slotted-angular-switch.d.ts.map +1 -0
- package/types/slotted-angular-table-of-contents.d.ts +210 -0
- package/types/slotted-angular-table-of-contents.d.ts.map +1 -0
- package/types/slotted-angular-table.d.ts +888 -0
- package/types/slotted-angular-table.d.ts.map +1 -0
- package/types/slotted-angular-tabs.d.ts +340 -0
- package/types/slotted-angular-tabs.d.ts.map +1 -0
- package/types/slotted-angular-tag.d.ts +279 -0
- package/types/slotted-angular-tag.d.ts.map +1 -0
- package/types/slotted-angular-tags-input.d.ts +302 -0
- package/types/slotted-angular-tags-input.d.ts.map +1 -0
- package/types/slotted-angular-text-field.d.ts +334 -0
- package/types/slotted-angular-text-field.d.ts.map +1 -0
- package/types/slotted-angular-textarea.d.ts +150 -0
- package/types/slotted-angular-textarea.d.ts.map +1 -0
- package/types/slotted-angular-theme.d.ts +26 -0
- package/types/slotted-angular-theme.d.ts.map +1 -0
- package/types/slotted-angular-time-field.d.ts +300 -0
- package/types/slotted-angular-time-field.d.ts.map +1 -0
- package/types/slotted-angular-time-picker.d.ts +260 -0
- package/types/slotted-angular-time-picker.d.ts.map +1 -0
- package/types/slotted-angular-time-range-picker.d.ts +401 -0
- package/types/slotted-angular-time-range-picker.d.ts.map +1 -0
- package/types/slotted-angular-timeline.d.ts +329 -0
- package/types/slotted-angular-timeline.d.ts.map +1 -0
- package/types/slotted-angular-toast.d.ts +340 -0
- package/types/slotted-angular-toast.d.ts.map +1 -0
- package/types/slotted-angular-toggle-group.d.ts +167 -0
- package/types/slotted-angular-toggle-group.d.ts.map +1 -0
- package/types/slotted-angular-toggle.d.ts +106 -0
- package/types/slotted-angular-toggle.d.ts.map +1 -0
- package/types/slotted-angular-toolbar.d.ts +252 -0
- package/types/slotted-angular-toolbar.d.ts.map +1 -0
- package/types/slotted-angular-tooltip.d.ts +388 -0
- package/types/slotted-angular-tooltip.d.ts.map +1 -0
- package/types/slotted-angular-top-navigation.d.ts +442 -0
- package/types/slotted-angular-top-navigation.d.ts.map +1 -0
- package/types/slotted-angular-tour.d.ts +440 -0
- package/types/slotted-angular-tour.d.ts.map +1 -0
- package/types/slotted-angular-transfer.d.ts +296 -0
- package/types/slotted-angular-transfer.d.ts.map +1 -0
- package/types/slotted-angular-tree.d.ts +499 -0
- package/types/slotted-angular-tree.d.ts.map +1 -0
- package/types/slotted-angular-typography.d.ts +89 -0
- package/types/slotted-angular-typography.d.ts.map +1 -0
- package/types/slotted-angular-upload.d.ts +365 -0
- package/types/slotted-angular-upload.d.ts.map +1 -0
- package/types/slotted-angular-visually-hidden.d.ts +19 -0
- package/types/slotted-angular-visually-hidden.d.ts.map +1 -0
- package/types/slotted-angular-wizard.d.ts +441 -0
- package/types/slotted-angular-wizard.d.ts.map +1 -0
- package/types/slotted-angular.d.ts +3 -0
- package/types/slotted-angular.d.ts.map +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slotted-angular-dashboard-grid.mjs","sources":["../../dashboard-grid/src/dashboard-grid-defaults.ts","../../dashboard-grid/src/dashboard-widget.ts","../../dashboard-grid/src/dashboard-grid.ts","../../dashboard-grid/src/persisted-dashboard-layout.ts","../../dashboard-grid/src/slotted-angular-dashboard-grid.ts"],"sourcesContent":["import { inject, Injectable, InjectionToken } from '@angular/core';\nimport type {\n DashboardColumnsInput,\n DashboardLayout,\n DashboardLayoutChange,\n} from '@slotted/core/dashboard-grid';\nimport type { ChangeReason, ChangeRequest } from '@slotted/core/state';\n\nexport type {\n DashboardColumnsInput,\n DashboardLayout,\n DashboardLayoutChange,\n DashboardLayoutItem,\n} from '@slotted/core/dashboard-grid';\n\nexport type DashboardHeadingLevel = 2 | 3 | 4 | 5 | 6;\n\nexport type DashboardLayoutReason = Extract<\n ChangeReason,\n 'pointer' | 'keyboard' | 'remove' | 'dismiss' | 'programmatic'\n>;\n\nexport type DashboardEditingReason = Extract<\n ChangeReason,\n 'pointer' | 'keyboard' | 'submit' | 'dismiss' | 'programmatic'\n>;\n\n/** The request for a new layout: the layout, why, and what the gesture was. */\nexport interface DashboardLayoutRequest extends ChangeRequest<DashboardLayout> {\n readonly reason: DashboardLayoutReason;\n readonly change: DashboardLayoutChange;\n}\n\nexport interface DashboardEditingRequest extends ChangeRequest<boolean> {\n readonly reason: DashboardEditingReason;\n}\n\nexport type DashboardWidgetStatus = 'ready' | 'empty' | 'error';\n\nexport interface DashboardGridDefaults {\n columns: DashboardColumnsInput;\n editBar: boolean;\n headingLevel: DashboardHeadingLevel;\n}\n\nconst FALLBACK: DashboardGridDefaults = {\n columns: 12,\n editBar: true,\n headingLevel: 3,\n};\n\nexport const DASHBOARD_GRID_DEFAULTS = new InjectionToken<DashboardGridDefaults>(\n 'slotted dashboard-grid defaults',\n { providedIn: 'root', factory: () => FALLBACK },\n);\n\n/**\n * An application decides once how many columns its dashboards have, whether\n * the family draws the edit bar and the level of a widget's title. A grid that\n * states any of it itself still wins. Its words come from the language in force\n * (`provideSlotted`).\n */\nexport function provideDashboardGridDefaults(defaults: Partial<DashboardGridDefaults>) {\n return {\n provide: DASHBOARD_GRID_DEFAULTS,\n useFactory: (): DashboardGridDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\nexport function injectDashboardGridDefaults(): DashboardGridDefaults {\n return inject(DASHBOARD_GRID_DEFAULTS);\n}\n\n@Injectable({ providedIn: 'root' })\nexport class SlDashboardGridIdFactory {\n private count = 0;\n\n next() {\n this.count += 1;\n return `slotted-dashboard-grid-${this.count}`;\n }\n}\n","import {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n contentChild,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n numberAttribute,\n output,\n signal,\n TemplateRef,\n untracked,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport type { CardFill, CardSize } from '@slotted/angular/card';\nimport { injectSkeletonDefaults } from '@slotted/angular/skeleton';\nimport type { DashboardWidgetSpec } from '@slotted/core/dashboard-grid';\nimport { initialLoadingVisibility, nextLoadingVisibility } from '@slotted/core/loading';\n\nimport type { DashboardHeadingLevel, DashboardWidgetStatus } from './dashboard-grid-defaults';\n\nconst optionalNumber = (given: number | string | undefined) =>\n given === undefined ? undefined : numberAttribute(given);\nconst optionalBoolean = (given: boolean | string | undefined) =>\n given === undefined ? undefined : booleanAttribute(given);\n\n/** Controls in the header's corner, before the detail action: `<button slDashboardWidgetActions>`. */\n@Directive({ selector: '[slDashboardWidgetActions]', standalone: true })\nexport class SlDashboardWidgetActions {}\n\n/** The skeleton of the body's own anatomy, shown while the widget loads. */\n@Directive({ selector: '[slDashboardWidgetSkeleton]', standalone: true })\nexport class SlDashboardWidgetSkeleton {}\n\n/** The action under the empty message: the one that creates the first entry. */\n@Directive({ selector: '[slDashboardWidgetEmptyAction]', standalone: true })\nexport class SlDashboardWidgetEmptyAction {}\n\n/** Content under the body. */\n@Directive({ selector: '[slDashboardWidgetFooter]', standalone: true })\nexport class SlDashboardWidgetFooter {}\n\n/**\n * Writes this family's part name on a control of another family. `slButton`\n * and `slIconButton` write `data-part=\"root\"` as a static host attribute, and\n * `slMenuTriggerFor` binds the attribute to `null` on a lone trigger; both\n * erase the part the template wrote, so it is written back after the first\n * render. The erasing expressions are constants, so nothing writes over it\n * again.\n */\n@Directive({ selector: '[slDashboardPart]', standalone: true })\nexport class SlDashboardPart {\n readonly part = input.required<string>({ alias: 'slDashboardPart' });\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n\n constructor() {\n afterNextRender(() => this.host.nativeElement.setAttribute('data-part', this.part()));\n }\n}\n\n/**\n * One widget, declared. It draws nothing where it is written: its content is\n * kept in templates the grid renders inside its own `li` and card, in the\n * order the layout says — the way `mat-tab` hands its content to the tab\n * group. `value` is the widget's key in the layout.\n */\n@Component({\n selector: 'sl-dashboard-widget',\n standalone: true,\n exportAs: 'slDashboardWidget',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { style: 'display: none' },\n template: `\n <ng-template #body><ng-content /></ng-template>\n <ng-template #actions><ng-content select=\"[slDashboardWidgetActions]\" /></ng-template>\n <ng-template #skeleton><ng-content select=\"[slDashboardWidgetSkeleton]\" /></ng-template>\n <ng-template #emptyAction><ng-content select=\"[slDashboardWidgetEmptyAction]\" /></ng-template>\n <ng-template #footer><ng-content select=\"[slDashboardWidgetFooter]\" /></ng-template>\n `,\n})\nexport class SlDashboardWidget {\n readonly value = input.required<string>();\n /** The widget's name: its heading, its accessible name and its entry in Add widget. */\n readonly title = input.required<string>();\n readonly description = input<string | undefined>(undefined);\n readonly headingLevel = input<DashboardHeadingLevel | undefined>(undefined);\n\n readonly defaultColumns = input<number | undefined, number | string | undefined>(undefined, {\n transform: optionalNumber,\n });\n readonly defaultRows = input<number | undefined, number | string | undefined>(undefined, {\n transform: optionalNumber,\n });\n readonly minColumns = input<number | undefined, number | string | undefined>(undefined, {\n transform: optionalNumber,\n });\n readonly maxColumns = input<number | undefined, number | string | undefined>(undefined, {\n transform: optionalNumber,\n });\n readonly minRows = input<number | undefined, number | string | undefined>(undefined, {\n transform: optionalNumber,\n });\n readonly maxRows = input<number | undefined, number | string | undefined>(undefined, {\n transform: optionalNumber,\n });\n readonly movable = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: optionalBoolean,\n });\n readonly resizable = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: optionalBoolean,\n });\n readonly removable = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: optionalBoolean,\n });\n\n /** The first answer has not arrived: the body shows a skeleton. */\n readonly loading = input(false, { transform: booleanAttribute });\n /** A refresh of data already shown: the content stays and the region is busy. */\n readonly busy = input(false, { transform: booleanAttribute });\n readonly status = input<DashboardWidgetStatus>('ready');\n readonly emptyTitle = input<string | undefined>(undefined);\n readonly emptyDescription = input<string | undefined>(undefined);\n readonly errorTitle = input<string | undefined>(undefined);\n readonly errorDescription = input<string | undefined>(undefined);\n /** Draws Try again under the error message; `retry` fires when it is pressed. */\n readonly retryable = input(false, { transform: booleanAttribute });\n /** The widget's own page. */\n readonly detailHref = input<string | undefined>(undefined);\n /** Draws the detail action as a button; `detail` fires when it is pressed. */\n readonly detailable = input(false, { transform: booleanAttribute });\n readonly fill = input<CardFill | undefined>(undefined);\n readonly size = input<CardSize | undefined>(undefined);\n\n readonly retry = output<MouseEvent>();\n readonly detail = output<MouseEvent>();\n\n readonly bodyTemplate = viewChild.required<TemplateRef<unknown>>('body');\n readonly actionsTemplate = viewChild.required<TemplateRef<unknown>>('actions');\n readonly skeletonTemplate = viewChild.required<TemplateRef<unknown>>('skeleton');\n readonly emptyActionTemplate = viewChild.required<TemplateRef<unknown>>('emptyAction');\n readonly footerTemplate = viewChild.required<TemplateRef<unknown>>('footer');\n\n readonly hasActions = contentChild(SlDashboardWidgetActions);\n readonly hasSkeleton = contentChild(SlDashboardWidgetSkeleton);\n readonly hasEmptyAction = contentChild(SlDashboardWidgetEmptyAction);\n readonly hasFooter = contentChild(SlDashboardWidgetFooter);\n\n /** Whether the skeleton is on screen: `loading` held back by the skeleton family's timing. */\n readonly painted = signal(false);\n\n private readonly skeletonDefaults = injectSkeletonDefaults();\n private visibility = initialLoadingVisibility;\n private timer: ReturnType<typeof setTimeout> | undefined;\n\n constructor() {\n effect(() => {\n const loading = this.loading();\n untracked(() => this.tick(loading));\n });\n inject(DestroyRef).onDestroy(() => clearTimeout(this.timer));\n }\n\n /** What the grid's layout arithmetic reads. */\n spec(): DashboardWidgetSpec {\n const given = {\n defaultColumns: this.defaultColumns(),\n defaultRows: this.defaultRows(),\n minColumns: this.minColumns(),\n maxColumns: this.maxColumns(),\n minRows: this.minRows(),\n maxRows: this.maxRows(),\n movable: this.movable(),\n resizable: this.resizable(),\n removable: this.removable(),\n };\n return {\n key: this.value(),\n ...Object.fromEntries(Object.entries(given).filter(([, value]) => value !== undefined)),\n };\n }\n\n private tick(loading: boolean): void {\n const answer = nextLoadingVisibility({\n delay: this.skeletonDefaults.delay ?? 0,\n loading,\n minDuration: this.skeletonDefaults.minDuration ?? 0,\n now: Date.now(),\n state: this.visibility,\n });\n this.visibility = answer.state;\n this.painted.set(answer.state.visible);\n clearTimeout(this.timer);\n if (answer.wait !== null) {\n this.timer = setTimeout(() => this.tick(this.loading()), answer.wait);\n }\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n afterEveryRender,\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n DestroyRef,\n ElementRef,\n inject,\n input,\n model,\n output,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { SlButton, SlButtonStart, SlIconButton } from '@slotted/angular/button';\nimport {\n SlCard,\n SlCardActions,\n SlCardBody,\n SlCardFooter,\n SlCardHeader,\n} from '@slotted/angular/card';\nimport { injectMessages } from '@slotted/angular/i18n';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport {\n SlMenu,\n SlMenuItem,\n SlMenuSeparator,\n SlMenuTrigger,\n type MenuSelectEvent,\n} from '@slotted/angular/menu';\nimport {\n SlResultState,\n SlResultStateActions,\n SlResultStateContent,\n SlResultStateDescription,\n SlResultStateTitle,\n} from '@slotted/angular/result-state';\nimport { SlSkeleton } from '@slotted/angular/skeleton';\nimport {\n cellAt,\n dashboardKeyIntent,\n handleShortcuts,\n layoutsEqual,\n materializeLayout,\n measureTiles,\n moveTile,\n moveTileBy,\n parseDuration,\n playFlip,\n playResize,\n resizeTileBy,\n resizeTileInClass,\n resolveColumns,\n resolveTiles,\n setTileHidden,\n sizeClassOf,\n spanFromTravel,\n swapTiles,\n tileStyle,\n type DashboardBox,\n type DashboardColumnsInput,\n type DashboardDirection,\n type DashboardLayout,\n type DashboardLayoutChange,\n type DashboardSizeClass,\n type DashboardTile,\n type MeasuredTile,\n} from '@slotted/core/dashboard-grid';\nimport { createDragController, type DropTarget } from '@slotted/core/drag';\nimport {\n dashboardGridMessages,\n dragMessages,\n type DashboardGridMessages,\n type PartialMessages,\n} from '@slotted/core/i18n';\nimport { getLiveAnnouncer } from '@slotted/core/live-announcer';\nimport type { ChangeReason } from '@slotted/core/state';\n\nimport {\n injectDashboardGridDefaults,\n SlDashboardGridIdFactory,\n type DashboardEditingReason,\n type DashboardEditingRequest,\n type DashboardHeadingLevel,\n type DashboardLayoutReason,\n type DashboardLayoutRequest,\n} from './dashboard-grid-defaults';\nimport { SlDashboardPart, SlDashboardWidget } from './dashboard-widget';\n\nconst EMPTY_LAYOUT: DashboardLayout = [];\nconst GRID = 'dashboard-grid';\nconst ADD = `${GRID}:add`;\nconst PLACEHOLDER = '\\u0000placeholder';\n\n/** An edge a widget is pulled by. The top is not one: gravity decides it. */\ntype DashboardEdge = 'start' | 'end' | 'bottom' | 'bottom-start' | 'bottom-end';\n\nconst EDGES: readonly DashboardEdge[] = ['start', 'end', 'bottom', 'bottom-start', 'bottom-end'];\n\n/** A click with no coordinates is a key. */\nfunction pressReason(event: MouseEvent): 'pointer' | 'keyboard' {\n return event.detail === 0 ? 'keyboard' : 'pointer';\n}\n\nfunction directionOf(element: Element): 'ltr' | 'rtl' {\n return getComputedStyle(element).direction === 'rtl' ? 'rtl' : 'ltr';\n}\n\n/** A grid not laid out yet — hidden, or in a test — is drawn in its stored class. */\nfunction classOf(root: HTMLElement): DashboardSizeClass {\n return root.clientWidth > 0 ? sizeClassOf(root.clientWidth) : 'expanded';\n}\n\nfunction makeRequest<T, Extra extends object>(\n value: T,\n previous: T,\n reason: ChangeReason,\n source: unknown,\n extra: Extra,\n) {\n let cancelled = false;\n return {\n value,\n previous,\n reason,\n source,\n ...extra,\n get cancelled() {\n return cancelled;\n },\n cancel() {\n cancelled = true;\n },\n };\n}\n\n/** The tracks the grid is drawn with in the class it is in, read from its style. */\ninterface Tracks {\n readonly columns: number;\n readonly track: number;\n readonly columnGap: number;\n readonly row: number;\n readonly rowGap: number;\n}\n\nfunction tracksOf(list: HTMLElement, columns: number): Tracks {\n const styles = getComputedStyle(list);\n const columnGap = parseFloat(styles.columnGap) || 0;\n const rowGap = parseFloat(styles.rowGap) || 0;\n const track = (list.clientWidth - columnGap * (columns - 1)) / Math.max(1, columns);\n return { columns, track, columnGap, row: parseFloat(styles.gridAutoRows) || 0, rowGap };\n}\n\n/** Where a widget was picked up, relative to the grid, in logical terms. */\ninterface Origin {\n readonly inlineStart: number;\n readonly blockStart: number;\n readonly inlineSize: number;\n readonly blockSize: number;\n}\n\nfunction originOf(element: HTMLElement, list: HTMLElement, rtl: boolean): Origin {\n const box = element.getBoundingClientRect();\n const frame = list.getBoundingClientRect();\n return {\n inlineStart: rtl ? frame.right - box.right : box.left - frame.left,\n blockStart: box.top - frame.top,\n inlineSize: box.width,\n blockSize: box.height,\n };\n}\n\nfunction writeOrigin(element: HTMLElement, origin: Origin) {\n element.style.setProperty('--_dg-origin-inline-start', `${origin.inlineStart}px`);\n element.style.setProperty('--_dg-origin-block-start', `${origin.blockStart}px`);\n element.style.setProperty('--_dg-origin-inline-size', `${origin.inlineSize}px`);\n element.style.setProperty('--_dg-origin-block-size', `${origin.blockSize}px`);\n}\n\nfunction clearLift(element: HTMLElement | undefined) {\n if (element === undefined) return;\n for (const name of [\n '--_dg-origin-inline-start',\n '--_dg-origin-block-start',\n '--_dg-origin-inline-size',\n '--_dg-origin-block-size',\n '--_dg-lift-x',\n '--_dg-lift-y',\n ]) {\n element.style.removeProperty(name);\n }\n}\n\nfunction boxOf(element: HTMLElement): MeasuredTile {\n const { left, top, width, height } = element.getBoundingClientRect();\n return { left, top, width, height };\n}\n\n/** What a gesture has reached, as the grid draws it. */\ntype Gesture =\n | { readonly kind: 'move'; readonly key: string; readonly preview: DashboardLayout }\n | {\n readonly kind: 'resize';\n readonly key: string;\n readonly edge: DashboardEdge;\n readonly preview: DashboardLayout;\n readonly sizeClass: DashboardSizeClass;\n };\n\n/** What the template draws for one widget. */\ninterface Slot {\n readonly widget: SlDashboardWidget;\n readonly tile: DashboardTile;\n readonly style: Record<string, string>;\n readonly dragging: boolean;\n readonly resizing: boolean;\n /** The edge a pointer is pulling, while it pulls. */\n readonly edge: DashboardEdge | null;\n /** The size the pull has reached, already filled. */\n readonly readout: string | null;\n /** Whether the widget has a size to change in the class it is drawn in. */\n readonly sizable: boolean;\n readonly handle: boolean;\n readonly can: {\n readonly up: boolean;\n readonly down: boolean;\n readonly left: boolean;\n readonly right: boolean;\n readonly wider: boolean;\n readonly narrower: boolean;\n readonly taller: boolean;\n readonly shorter: boolean;\n };\n}\n\n/**\n * A surface of widgets the reader places and sizes. The widgets are\n * `sl-dashboard-widget` children, each with its own `value`; the grid draws\n * them where the layout puts them, by row and then column, which is the\n * reading order, the focus order and the picture at every width.\n *\n * The host is the root. `aria-label` and `aria-labelledby` written on it name\n * the list inside, which is what a reader meets.\n */\n@Component({\n selector: '[slDashboardGrid]',\n standalone: true,\n exportAs: 'slDashboardGrid',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styleUrls: [\n '../../../styles/src/dashboard-grid/dashboard-grid.css',\n '../../../styles/src/visually-hidden/visually-hidden.css',\n ],\n imports: [\n NgTemplateOutlet,\n SlButton,\n SlButtonStart,\n SlCard,\n SlCardActions,\n SlCardBody,\n SlCardFooter,\n SlCardHeader,\n SlDashboardPart,\n SlGlyph,\n SlIcon,\n SlIconButton,\n SlMenu,\n SlMenuItem,\n SlMenuSeparator,\n SlMenuTrigger,\n SlResultState,\n SlResultStateActions,\n SlResultStateContent,\n SlResultStateDescription,\n SlResultStateTitle,\n SlSkeleton,\n ],\n host: {\n 'data-ui': 'dashboard-grid',\n 'data-part': 'root',\n '[attr.data-editing]': 'isEditing() ? \"\" : null',\n '[attr.data-gesture]': 'gesture() === null ? null : \"\"',\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[style.--_dg-columns-expanded]': 'grid().expanded',\n '[style.--_dg-columns-medium]': 'grid().medium',\n '[style.--_dg-columns-compact]': 'grid().compact',\n },\n template: `\n @if (isEditing() && resolvedEditBar()) {\n <div data-part=\"edit-bar\" role=\"group\" [attr.aria-label]=\"t('editBar')\">\n <p data-part=\"edit-status\" [id]=\"statusId\">{{ t('editStatus') }}</p>\n <div data-part=\"edit-actions\">\n @if (hiddenTiles().length > 0) {\n <button\n slButton\n slDashboardPart=\"add\"\n data-dashboard-add\n size=\"sm\"\n tone=\"secondary\"\n variant=\"outline\"\n [slMenuTriggerFor]=\"addMenu\"\n >\n <span slButtonStart\n ><span slIcon><svg slGlyph name=\"plus\"></svg></span></span\n >{{ t('add') }}\n </button>\n <sl-menu #addMenu>\n @for (tile of hiddenTiles(); track tile.key) {\n <button slMenuItem (select)=\"show(tile.key, reasonOf($event), $event.source)\">\n {{ titleOf(tile.key) }}\n </button>\n }\n </sl-menu>\n }\n <button\n slButton\n slDashboardPart=\"reset\"\n size=\"sm\"\n tone=\"secondary\"\n variant=\"ghost\"\n (click)=\"reset(pressReason($event), $event)\"\n >\n {{ t('reset') }}\n </button>\n <button\n slButton\n slDashboardPart=\"cancel\"\n size=\"sm\"\n tone=\"secondary\"\n variant=\"outline\"\n (click)=\"cancelEditing(pressReason($event), $event)\"\n >\n {{ t('cancel') }}\n </button>\n <button\n slButton\n slDashboardPart=\"done\"\n size=\"sm\"\n tone=\"accent\"\n variant=\"solid\"\n (click)=\"commitEditing('submit', $event)\"\n >\n {{ t('done') }}\n </button>\n </div>\n </div>\n }\n @if (isEditing() && !resolvedEditBar()) {\n <p data-part=\"edit-status\" data-ui=\"visually-hidden\" [id]=\"statusId\">\n {{ t('editStatus') }}\n </p>\n }\n <ul\n #list\n data-part=\"grid\"\n role=\"list\"\n [attr.aria-label]=\"ariaLabel() ?? null\"\n [attr.aria-labelledby]=\"ariaLabelledBy() ?? null\"\n [hidden]=\"slots().length === 0\"\n >\n @for (slot of slots(); track slot.tile.key) {\n <li\n data-part=\"widget\"\n [attr.data-key]=\"slot.tile.key\"\n [attr.data-status]=\"slot.widget.status()\"\n [attr.data-loading]=\"slot.widget.painted() ? '' : null\"\n [attr.data-movable]=\"slot.tile.movable ? '' : null\"\n [attr.data-resizable]=\"slot.tile.resizable ? '' : null\"\n [attr.data-dragging]=\"slot.dragging ? '' : null\"\n [attr.data-resizing]=\"slot.resizing ? '' : null\"\n [style]=\"slot.style\"\n >\n <article\n slCard\n [fill]=\"slot.widget.fill()\"\n [size]=\"slot.widget.size()\"\n [attr.aria-labelledby]=\"titleId(slot.tile.key)\"\n [attr.aria-describedby]=\"\n slot.widget.description() === undefined\n ? null\n : titleId(slot.tile.key) + '-description'\n \"\n [attr.aria-busy]=\"slot.widget.painted() || slot.widget.busy() ? true : null\"\n >\n <div slCardHeader>\n @switch (levelOf(slot.widget)) {\n @case (2) {\n <h2 data-part=\"title\" [id]=\"titleId(slot.tile.key)\">{{ slot.widget.title() }}</h2>\n }\n @case (4) {\n <h4 data-part=\"title\" [id]=\"titleId(slot.tile.key)\">{{ slot.widget.title() }}</h4>\n }\n @case (5) {\n <h5 data-part=\"title\" [id]=\"titleId(slot.tile.key)\">{{ slot.widget.title() }}</h5>\n }\n @case (6) {\n <h6 data-part=\"title\" [id]=\"titleId(slot.tile.key)\">{{ slot.widget.title() }}</h6>\n }\n @default {\n <h3 data-part=\"title\" [id]=\"titleId(slot.tile.key)\">{{ slot.widget.title() }}</h3>\n }\n }\n @if (slot.widget.description(); as description) {\n <p data-part=\"description\" [id]=\"titleId(slot.tile.key) + '-description'\">\n {{ description }}\n </p>\n }\n @if (\n slot.widget.hasActions() ||\n slot.widget.detailHref() !== undefined ||\n slot.widget.detailable()\n ) {\n <div slCardActions>\n <ng-container [ngTemplateOutlet]=\"slot.widget.actionsTemplate()\" />\n @if (slot.widget.detailHref(); as href) {\n <a\n data-ui=\"button\"\n data-part=\"detail\"\n data-tone=\"secondary\"\n data-variant=\"ghost\"\n data-size=\"sm\"\n data-shape=\"square\"\n [attr.href]=\"href\"\n [attr.aria-label]=\"t('detail', { title: slot.widget.title() })\"\n (click)=\"slot.widget.detail.emit($event)\"\n ><span data-part=\"icon\" aria-hidden=\"true\"\n ><span slIcon directional><svg slGlyph name=\"external\"></svg></span></span\n ></a>\n } @else if (slot.widget.detailable()) {\n <button\n slIconButton\n slDashboardPart=\"detail\"\n size=\"sm\"\n tone=\"secondary\"\n variant=\"ghost\"\n [attr.aria-label]=\"t('detail', { title: slot.widget.title() })\"\n (click)=\"slot.widget.detail.emit($event)\"\n >\n <span slIcon directional><svg slGlyph name=\"external\"></svg></span>\n </button>\n }\n </div>\n }\n </div>\n <div slCardBody>\n @if (slot.widget.busy() && !slot.widget.painted()) {\n <span data-part=\"busy-indicator\" aria-hidden=\"true\"></span>\n }\n @if (slot.widget.painted()) {\n <div data-part=\"skeleton\">\n @if (slot.widget.hasSkeleton()) {\n <ng-container [ngTemplateOutlet]=\"slot.widget.skeletonTemplate()\" />\n } @else {\n <span slSkeleton shape=\"block\"></span>\n }\n </div>\n } @else if (slot.widget.status() === 'empty') {\n <div data-part=\"message\">\n <section slResultState status=\"empty\" reach=\"section\" align=\"center\" live=\"off\">\n <div slResultStateContent>\n <div slResultStateTitle>\n {{ slot.widget.emptyTitle() ?? t('emptyTitle') }}\n </div>\n @if (slot.widget.emptyDescription(); as description) {\n <p slResultStateDescription>{{ description }}</p>\n }\n </div>\n @if (slot.widget.hasEmptyAction()) {\n <div slResultStateActions>\n <ng-container [ngTemplateOutlet]=\"slot.widget.emptyActionTemplate()\" />\n </div>\n }\n </section>\n </div>\n } @else if (slot.widget.status() === 'error') {\n <div data-part=\"message\">\n <section\n slResultState\n status=\"error\"\n reach=\"section\"\n align=\"center\"\n live=\"polite\"\n >\n <div slResultStateContent>\n <div slResultStateTitle>\n {{ slot.widget.errorTitle() ?? t('errorTitle') }}\n </div>\n @if (slot.widget.errorDescription(); as description) {\n <p slResultStateDescription>{{ description }}</p>\n }\n </div>\n @if (slot.widget.retryable()) {\n <div slResultStateActions>\n <button\n slButton\n slDashboardPart=\"retry\"\n size=\"sm\"\n tone=\"secondary\"\n variant=\"outline\"\n (click)=\"slot.widget.retry.emit($event)\"\n >\n <span slButtonStart\n ><span slIcon><svg slGlyph name=\"rotate-ccw\"></svg></span></span\n >{{ t('retry') }}\n </button>\n </div>\n }\n </section>\n </div>\n } @else {\n <ng-container [ngTemplateOutlet]=\"slot.widget.bodyTemplate()\" />\n }\n </div>\n @if (slot.widget.hasFooter()) {\n <div slCardFooter>\n <ng-container [ngTemplateOutlet]=\"slot.widget.footerTemplate()\" />\n </div>\n }\n </article>\n @if (slot.handle) {\n <button\n slDashboardPart=\"handle\"\n [attr.data-handle]=\"slot.tile.key\"\n [attr.aria-label]=\"t('handle', { title: slot.widget.title() })\"\n [attr.aria-describedby]=\"statusId\"\n [attr.aria-keyshortcuts]=\"shortcuts(slot.tile.removable)\"\n [slMenuTriggerFor]=\"handleMenu\"\n >\n <span slIcon><svg slGlyph name=\"grip-horizontal\"></svg></span>\n </button>\n <sl-menu #handleMenu>\n @if (slot.tile.movable) {\n <button\n slMenuItem\n shortcut=\"Alt+ArrowUp\"\n [disabled]=\"!slot.can.up\"\n (select)=\"move(slot.tile.key, 'up', reasonOf($event), $event.source)\"\n >\n {{ t('moveUp') }}\n </button>\n <button\n slMenuItem\n shortcut=\"Alt+ArrowDown\"\n [disabled]=\"!slot.can.down\"\n (select)=\"move(slot.tile.key, 'down', reasonOf($event), $event.source)\"\n >\n {{ t('moveDown') }}\n </button>\n @if (!flows()) {\n <button\n slMenuItem\n shortcut=\"Alt+ArrowLeft\"\n [disabled]=\"!slot.can.left\"\n (select)=\"move(slot.tile.key, 'left', reasonOf($event), $event.source)\"\n >\n {{ t('moveStart') }}\n </button>\n <button\n slMenuItem\n shortcut=\"Alt+ArrowRight\"\n [disabled]=\"!slot.can.right\"\n (select)=\"move(slot.tile.key, 'right', reasonOf($event), $event.source)\"\n >\n {{ t('moveEnd') }}\n </button>\n }\n }\n @if (slot.tile.movable && slot.sizable) {\n <hr slMenuSeparator />\n }\n @if (slot.sizable) {\n <button\n slMenuItem\n shortcut=\"Shift+ArrowRight\"\n [disabled]=\"!slot.can.wider\"\n (select)=\"resize(slot.tile.key, 1, 0, reasonOf($event), $event.source)\"\n >\n {{ t('wider') }}\n </button>\n <button\n slMenuItem\n shortcut=\"Shift+ArrowLeft\"\n [disabled]=\"!slot.can.narrower\"\n (select)=\"resize(slot.tile.key, -1, 0, reasonOf($event), $event.source)\"\n >\n {{ t('narrower') }}\n </button>\n <button\n slMenuItem\n shortcut=\"Shift+ArrowDown\"\n [disabled]=\"!slot.can.taller\"\n (select)=\"resize(slot.tile.key, 0, 1, reasonOf($event), $event.source)\"\n >\n {{ t('taller') }}\n </button>\n <button\n slMenuItem\n shortcut=\"Shift+ArrowUp\"\n [disabled]=\"!slot.can.shorter\"\n (select)=\"resize(slot.tile.key, 0, -1, reasonOf($event), $event.source)\"\n >\n {{ t('shorter') }}\n </button>\n }\n @if (slot.tile.removable) {\n @if (slot.tile.movable || slot.sizable) {\n <hr slMenuSeparator />\n }\n <button\n slMenuItem\n tone=\"danger\"\n shortcut=\"Delete\"\n (select)=\"hide(slot.tile.key, 'remove', $event.source)\"\n >\n {{ t('hide') }}\n </button>\n }\n </sl-menu>\n }\n @if (isEditing() && slot.sizable) {\n @for (edge of edges; track edge) {\n <span\n data-part=\"resize-handle\"\n aria-hidden=\"true\"\n [attr.data-edge]=\"edge\"\n [attr.data-active]=\"slot.edge === edge ? '' : null\"\n (pointerdown)=\"onResizePointerDown(slot.tile.key, edge, $event)\"\n ></span>\n }\n }\n @if (slot.readout !== null) {\n <span data-part=\"size-readout\" aria-hidden=\"true\" [attr.data-edge]=\"slot.edge\">{{\n slot.readout\n }}</span>\n }\n </li>\n }\n @if (placeholder(); as style) {\n <li data-part=\"placeholder\" aria-hidden=\"true\" [style]=\"style\"></li>\n }\n </ul>\n @if (slots().length === 0) {\n <div data-part=\"empty\">\n <section slResultState status=\"empty\" reach=\"section\" live=\"polite\">\n <div slResultStateContent>\n <div slResultStateTitle>{{ t('empty') }}</div>\n @if (isEditing()) {\n <p slResultStateDescription>{{ t('emptyEditing') }}</p>\n }\n </div>\n </section>\n </div>\n }\n `,\n})\nexport class SlDashboardGrid {\n /**\n * Where each widget stands and how big it is: `[{ key, x, y, w, h, hidden? }]`\n * in cells of the expanded class. Bound at all, it is the value; unbound,\n * the grid keeps its own.\n */\n readonly layout = model<DashboardLayout | undefined>(undefined);\n /** The layout an unbound grid starts from. Default: every widget at its defaults. */\n readonly defaultLayout = input<DashboardLayout | undefined>(undefined);\n readonly editing = model<boolean | undefined>(undefined);\n readonly defaultEditing = input(false, { transform: booleanAttribute });\n /** Columns of the expanded class, or one count per class. Default 12, 6, 1. */\n readonly columns = input<DashboardColumnsInput | undefined>(undefined);\n readonly editBar = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (given) => (given === undefined ? undefined : booleanAttribute(given)),\n });\n readonly headingLevel = input<DashboardHeadingLevel | undefined>(undefined);\n /** Words laid over the catalog of the language in force, key by key. */\n readonly messages = input<PartialMessages<DashboardGridMessages> | undefined>(undefined);\n readonly ariaLabel = input<string | undefined>(undefined, { alias: 'aria-label' });\n readonly ariaLabelledBy = input<string | undefined>(undefined, { alias: 'aria-labelledby' });\n\n readonly layoutChangeRequest = output<DashboardLayoutRequest>();\n readonly editingChangeRequest = output<DashboardEditingRequest>();\n\n /* ── State ────────────────────────────────────────────────────────── */\n\n private readonly defaults = injectDashboardGridDefaults();\n private readonly base = inject(SlDashboardGridIdFactory).next();\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly destroyRef = inject(DestroyRef);\n private readonly list = viewChild<ElementRef<HTMLUListElement>>('list');\n protected readonly widgets = contentChildren(SlDashboardWidget);\n\n protected readonly statusId = `${this.base}-edit-status`;\n protected readonly edges = EDGES;\n protected readonly pressReason = pressReason;\n protected readonly shortcuts = handleShortcuts;\n\n /** The family's words in the language in force, with this grid's `messages` laid over them. */\n protected readonly t = injectMessages(dashboardGridMessages, this.messages);\n /** What a drag of a widget says when no position is left, in the language in force. */\n private readonly dragT = injectMessages(dragMessages);\n protected readonly grid = computed(() => resolveColumns(this.columns() ?? this.defaults.columns));\n protected readonly resolvedEditBar = computed(() => this.editBar() ?? this.defaults.editBar);\n\n readonly currentLayout = computed(() => this.layout() ?? this.defaultLayout() ?? EMPTY_LAYOUT);\n readonly isEditing = computed(() => this.editing() ?? this.defaultEditing());\n\n private readonly specs = computed(() => this.widgets().map((widget) => widget.spec()));\n private readonly byKey = computed(\n () => new Map(this.widgets().map((widget) => [widget.value(), widget])),\n );\n private readonly tiles = computed(() =>\n resolveTiles(this.currentLayout(), this.specs(), this.grid()),\n );\n private readonly visible = computed(() => this.tiles().filter((tile) => !tile.hidden));\n protected readonly hiddenTiles = computed(() => this.tiles().filter((tile) => tile.hidden));\n\n protected readonly gesture = signal<Gesture | null>(null);\n /* The class the grid is drawn in, observed after the first render, so a\n server render and the first client render agree on `expanded`. */\n private readonly drawnClass = signal<DashboardSizeClass>('expanded');\n protected readonly flows = computed(() => this.drawnClass() !== 'expanded');\n\n /** What is drawn: the committed layout, or the one a gesture previews. */\n private readonly drawn = computed(() => {\n const gesture = this.gesture();\n return gesture === null\n ? this.tiles()\n : resolveTiles(gesture.preview, this.specs(), this.grid());\n });\n private readonly drawnVisible = computed(() => this.drawn().filter((tile) => !tile.hidden));\n\n protected readonly slots = computed<Slot[]>(() => {\n const gesture = this.gesture();\n const drawn = this.drawn();\n const order = new Map(this.drawnVisible().map((tile, index) => [tile.key, index]));\n const widgets = this.byKey();\n const editing = this.isEditing();\n const drawnClass = this.drawnClass();\n const layout = this.currentLayout();\n const specs = this.specs();\n const grid = this.grid();\n const committed = materializeLayout(layout, specs, grid);\n const differs = (next: DashboardLayout) =>\n !layoutsEqual(materializeLayout(next, specs, grid), committed);\n const slots: Slot[] = [];\n for (const tile of this.visible()) {\n const widget = widgets.get(tile.key);\n if (widget === undefined) continue;\n const shown = drawn.find((each) => each.key === tile.key) ?? tile;\n const inHand = gesture !== null && gesture.key === tile.key;\n const resizing = inHand && gesture.kind === 'resize';\n const sizable = tile.resizable && drawnClass !== 'compact';\n const at = (direction: DashboardDirection) =>\n editing && differs(moveTileBy(layout, specs, grid, tile.key, direction, drawnClass));\n const by = (columns: number, rows: number) =>\n editing &&\n differs(resizeTileBy(layout, specs, grid, tile.key, { columns, rows }, drawnClass));\n const style = tileStyle(shown);\n if (gesture !== null) style['order'] = String(order.get(tile.key) ?? 0);\n slots.push({\n widget,\n tile: shown,\n style,\n dragging: inHand && gesture.kind === 'move',\n resizing,\n edge: resizing ? gesture.edge : null,\n readout: resizing\n ? this.t('size', {\n columns: gesture.sizeClass === 'medium' ? shown.medium : shown.w,\n rows: shown.h,\n })\n : null,\n sizable,\n handle: editing && (tile.movable || sizable || tile.removable),\n can: {\n up: at('up'),\n down: at('down'),\n left: at('left'),\n right: at('right'),\n wider: by(1, 0),\n narrower: by(-1, 0),\n taller: by(0, 1),\n shorter: by(0, -1),\n },\n });\n }\n return slots;\n });\n\n /** The cells the widget in hand will land in, while a gesture lasts. */\n protected readonly placeholder = computed<Record<string, string> | null>(() => {\n const gesture = this.gesture();\n if (gesture === null) return null;\n const visible = this.drawnVisible();\n const index = visible.findIndex((tile) => tile.key === gesture.key);\n const tile = visible[index];\n return tile === undefined ? null : { ...tileStyle(tile), order: String(index) };\n });\n\n /** Measured before a change of what is drawn, played after it lands. */\n private flipFrom: Map<string, MeasuredTile> | null = null;\n private settleFrom: { key: string; box: MeasuredTile } | null = null;\n private focusAfter: string | null = null;\n private snapshot: DashboardLayout | null = null;\n private returnFocus: Element | null = null;\n private wasEditing = false;\n private resizeTeardown: (() => void) | null = null;\n private dragTeardown: (() => void) | null = null;\n private dragKeys = '';\n\n constructor() {\n const onKeyDown = (event: KeyboardEvent) => this.onHandleKeyDown(event);\n afterNextRender(() => {\n this.host.nativeElement.addEventListener('keydown', onKeyDown, true);\n if (typeof ResizeObserver === 'undefined') return;\n const root = this.host.nativeElement;\n const observer = new ResizeObserver(() => this.drawnClass.set(classOf(root)));\n observer.observe(root);\n this.drawnClass.set(classOf(root));\n this.destroyRef.onDestroy(() => observer.disconnect());\n });\n this.destroyRef.onDestroy(() => {\n this.host.nativeElement.removeEventListener('keydown', onKeyDown, true);\n this.resizeTeardown?.();\n this.dragTeardown?.();\n });\n\n afterEveryRender(() => {\n this.syncEditing();\n this.syncDrag();\n this.settle();\n });\n }\n\n /* ── Reading ──────────────────────────────────────────────────────── */\n\n protected titleId(key: string) {\n return `${this.base}-${key}-title`;\n }\n\n protected titleOf(key: string) {\n return this.byKey().get(key)?.title() ?? key;\n }\n\n protected levelOf(widget: SlDashboardWidget): DashboardHeadingLevel {\n return widget.headingLevel() ?? this.headingLevel() ?? this.defaults.headingLevel;\n }\n\n protected reasonOf(event: MenuSelectEvent): DashboardLayoutReason {\n return event.reason === 'keyboard' ? 'keyboard' : 'pointer';\n }\n\n private sizeClass(): DashboardSizeClass {\n return classOf(this.host.nativeElement);\n }\n\n private widgetNodes() {\n const nodes = new Map<string, HTMLElement>();\n for (const node of this.list()?.nativeElement.querySelectorAll<HTMLElement>(\n ':scope > [data-part=\"widget\"]',\n ) ?? []) {\n const key = node.dataset['key'];\n if (key !== undefined) nodes.set(key, node);\n }\n return nodes;\n }\n\n private placeholderNode() {\n return (\n this.list()?.nativeElement.querySelector<HTMLElement>(':scope > [data-part=\"placeholder\"]') ??\n null\n );\n }\n\n private handleOf(key: string) {\n return (\n this.widgetNodes().get(key)?.querySelector<HTMLElement>(':scope > [data-handle]') ?? null\n );\n }\n\n private cardOf(key: string) {\n return (\n this.widgetNodes().get(key)?.querySelector<HTMLElement>(':scope > [data-ui=\"card\"]') ?? null\n );\n }\n\n /** The widgets that glide, and the placeholder; not the one in hand. */\n private flipNodes() {\n const nodes = this.widgetNodes();\n const key = this.gesture()?.key;\n if (key !== undefined) nodes.delete(key);\n const placeholder = this.placeholderNode();\n if (placeholder !== null) nodes.set(PLACEHOLDER, placeholder);\n return nodes;\n }\n\n private measureAll() {\n this.flipFrom = measureTiles(this.flipNodes());\n }\n\n private setGesture(next: Gesture | null) {\n this.measureAll();\n this.gesture.set(next);\n }\n\n /* ── Requests ─────────────────────────────────────────────────────── */\n\n private announce(message: string) {\n if (message !== '') getLiveAnnouncer(this.host.nativeElement.ownerDocument).announce(message);\n }\n\n private full(layout: DashboardLayout) {\n return materializeLayout(layout, this.specs(), this.grid());\n }\n\n private change(\n next: DashboardLayout,\n reason: DashboardLayoutReason,\n change: DashboardLayoutChange,\n source: unknown,\n message: (layout: DashboardLayout) => string,\n ): boolean {\n const full = this.full(next);\n const previous = this.full(this.currentLayout());\n if (layoutsEqual(full, previous)) return false;\n if (this.flipFrom === null) this.measureAll();\n const request = makeRequest(full, previous, reason, source, { change });\n this.layoutChangeRequest.emit(request as DashboardLayoutRequest);\n if (request.cancelled) {\n this.flipFrom = null;\n return false;\n }\n this.layout.set(full);\n this.announce(message(full));\n return true;\n }\n\n private requestEditing(next: boolean, reason: DashboardEditingReason, source: unknown) {\n const previous = this.isEditing();\n if (previous === next) return;\n const request = makeRequest(next, previous, reason, source, {});\n this.editingChangeRequest.emit(request as DashboardEditingRequest);\n if (request.cancelled) return;\n this.editing.set(next);\n }\n\n private movedMessage(key: string, drawnIn: DashboardSizeClass) {\n return (layout: DashboardLayout) => {\n const placed = resolveTiles(layout, this.specs(), this.grid()).filter((tile) => !tile.hidden);\n const index = placed.findIndex((tile) => tile.key === key);\n const tile = placed[index];\n if (tile === undefined) return '';\n return drawnIn === 'expanded'\n ? this.t('moved', {\n title: this.titleOf(key),\n row: tile.y + 1,\n column: tile.x + 1,\n })\n : this.t('movedInOrder', {\n title: this.titleOf(key),\n position: index + 1,\n total: placed.length,\n });\n };\n }\n\n private resizedMessage(key: string, drawnIn: DashboardSizeClass) {\n return (layout: DashboardLayout) => {\n const tile = resolveTiles(layout, this.specs(), this.grid()).find((each) => each.key === key);\n return tile === undefined\n ? ''\n : this.t('resized', {\n title: this.titleOf(key),\n columns: drawnIn === 'medium' ? tile.medium : tile.w,\n rows: tile.h,\n });\n };\n }\n\n protected move(\n key: string,\n direction: DashboardDirection,\n reason: DashboardLayoutReason,\n source?: unknown,\n ) {\n const drawnIn = this.sizeClass();\n const next = moveTileBy(\n this.currentLayout(),\n this.specs(),\n this.grid(),\n key,\n direction,\n drawnIn,\n );\n this.focusAfter = key;\n if (\n !this.change(next, reason, { kind: 'move', key }, source, this.movedMessage(key, drawnIn))\n ) {\n this.focusAfter = null;\n }\n }\n\n protected resize(\n key: string,\n columns: number,\n rows: number,\n reason: DashboardLayoutReason,\n source?: unknown,\n ) {\n const drawnIn = this.sizeClass();\n const next = resizeTileBy(\n this.currentLayout(),\n this.specs(),\n this.grid(),\n key,\n { columns, rows },\n drawnIn,\n );\n this.focusAfter = key;\n const message = this.resizedMessage(key, drawnIn);\n if (!this.change(next, reason, { kind: 'resize', key }, source, message)) {\n this.focusAfter = null;\n }\n }\n\n protected hide(key: string, reason: DashboardLayoutReason, source?: unknown) {\n const visible = this.visible();\n const at = visible.findIndex((tile) => tile.key === key);\n const tile = visible[at];\n if (tile === undefined || !tile.removable) return;\n this.focusAfter = (visible[at + 1] ?? visible[at - 1])?.key ?? ADD;\n const next = setTileHidden(this.currentLayout(), this.specs(), this.grid(), key, true);\n const done = this.change(next, reason, { kind: 'hide', key }, source, () =>\n this.t('hidden', { title: this.titleOf(key) }),\n );\n if (!done) this.focusAfter = null;\n }\n\n protected show(key: string, reason: DashboardLayoutReason, source?: unknown) {\n this.focusAfter = key;\n const next = setTileHidden(this.currentLayout(), this.specs(), this.grid(), key, false);\n this.change(next, reason, { kind: 'show', key }, source, () =>\n this.t('shown', { title: this.titleOf(key) }),\n );\n }\n\n protected reset(reason: DashboardLayoutReason, source?: unknown) {\n this.change(EMPTY_LAYOUT, reason, { kind: 'reset', key: null }, source, () =>\n this.t('resetDone'),\n );\n }\n\n /** Leaves editing, as Done does. */\n commitEditing(reason: DashboardEditingReason = 'programmatic', source?: unknown) {\n this.requestEditing(false, reason, source);\n }\n\n /** Asks for the layout editing began from, then leaves, as Cancel does. */\n cancelEditing(reason: DashboardEditingReason = 'programmatic', source?: unknown) {\n const back = this.snapshot;\n if (back !== null) {\n this.change(back, 'dismiss', { kind: 'cancel', key: null }, source, () =>\n this.t('cancelled'),\n );\n }\n this.requestEditing(false, reason, source);\n }\n\n /** Focuses a widget's handle while editing, or the widget's first control. */\n focusWidget(key: string) {\n const target =\n (this.isEditing() ? this.handleOf(key) : null) ??\n this.widgetNodes()\n .get(key)\n ?.querySelector<HTMLElement>(\n 'a[href], button:not([disabled]), [tabindex]:not([tabindex=\"-1\"])',\n );\n target?.focus();\n }\n\n /* ── Keyboard ─────────────────────────────────────────────────────── */\n\n /**\n * Taken in the capture phase, before the handle's menu trigger reads\n * ArrowDown and ArrowUp: `Alt` and `Shift` with an arrow belong to the\n * layout, and the trigger does not look at modifiers.\n */\n private onHandleKeyDown(event: KeyboardEvent) {\n const handle = (event.target as HTMLElement | null)?.closest<HTMLElement>('[data-handle]');\n const key = handle?.getAttribute('data-handle');\n if (!handle || !key || !this.isEditing()) return;\n const intent = dashboardKeyIntent(event, directionOf(handle));\n if (intent === null) return;\n const tile = this.visible().find((each) => each.key === key);\n if (tile === undefined) return;\n event.preventDefault();\n event.stopPropagation();\n if (intent.kind === 'move' && tile.movable) this.move(key, intent.direction, 'keyboard', event);\n if (intent.kind === 'resize' && tile.resizable) {\n this.resize(key, intent.columns, intent.rows, 'keyboard', event);\n }\n if (intent.kind === 'hide') this.hide(key, 'remove', event);\n }\n\n /* ── Pointer: resize ──────────────────────────────────────────────── */\n\n protected onResizePointerDown(key: string, edge: DashboardEdge, event: PointerEvent) {\n if (event.button !== 0 || this.resizeTeardown !== null) return;\n const tile = this.visible().find((each) => each.key === key);\n const list = this.list()?.nativeElement;\n const element = this.widgetNodes().get(key);\n if (tile === undefined || !tile.resizable || list === undefined || element === undefined) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n const drawnIn = this.sizeClass();\n if (drawnIn === 'compact') return;\n const handle = event.currentTarget as HTMLElement;\n const rtl = directionOf(list) === 'rtl';\n const tracks = tracksOf(list, this.grid()[drawnIn]);\n const origin = originOf(element, list, rtl);\n const start = { x: event.clientX, y: event.clientY };\n const span = drawnIn === 'medium' ? tile.medium : tile.w;\n const pullsStart = edge === 'start' || edge === 'bottom-start';\n const pullsEnd = edge === 'end' || edge === 'bottom-end';\n const pullsBottom = edge !== 'start' && edge !== 'end';\n let snapped: DashboardBox = { x: tile.x, y: tile.y, w: span, h: tile.h };\n let preview: DashboardLayout = this.full(this.currentLayout());\n\n writeOrigin(element, origin);\n this.setGesture({ kind: 'resize', key, edge, preview, sizeClass: drawnIn });\n\n const onMove = (moved: PointerEvent) => {\n const dx = moved.clientX - start.x;\n const dy = moved.clientY - start.y;\n /* Travel toward the inline end, whichever way the document reads. */\n const along = rtl ? -dx : dx;\n const floor = tracks.track;\n const inlineSize = pullsEnd\n ? Math.max(floor, origin.inlineSize + along)\n : pullsStart\n ? Math.max(floor, origin.inlineSize - along)\n : origin.inlineSize;\n const blockSize = pullsBottom\n ? Math.max(tracks.row, origin.blockSize + dy)\n : origin.blockSize;\n element.style.setProperty('--_dg-origin-inline-size', `${inlineSize}px`);\n element.style.setProperty('--_dg-origin-block-size', `${blockSize}px`);\n /* Pulled by its start, the widget keeps its end still: the element is\n anchored at its start, so it moves by what it grew. */\n const shift = pullsStart ? origin.inlineSize - inlineSize : 0;\n element.style.setProperty('--_dg-lift-x', `${rtl ? -shift : shift}px`);\n\n const w = spanFromTravel({\n span,\n track: tracks.track,\n gap: tracks.columnGap,\n travel: inlineSize - origin.inlineSize,\n });\n const h = pullsBottom\n ? spanFromTravel({\n span: tile.h,\n track: tracks.row,\n gap: tracks.rowGap,\n travel: blockSize - origin.blockSize,\n })\n : tile.h;\n const x = pullsStart ? tile.x + tile.w - w : tile.x;\n if (w === snapped.w && h === snapped.h && x === snapped.x) return;\n snapped = { x, y: tile.y, w, h };\n preview = resizeTileInClass(\n this.currentLayout(),\n this.specs(),\n this.grid(),\n key,\n snapped,\n drawnIn,\n );\n this.setGesture({ kind: 'resize', key, edge, preview, sizeClass: drawnIn });\n };\n\n const finish = (commit: boolean, source?: Event) => {\n this.resizeTeardown?.();\n this.settleFrom = { key, box: boxOf(element) };\n clearLift(element);\n this.setGesture(null);\n if (!commit) return;\n this.change(\n preview,\n 'pointer',\n { kind: 'resize', key },\n source,\n this.resizedMessage(key, drawnIn),\n );\n };\n const onUp = (up: PointerEvent) => finish(true, up);\n const onCancel = () => finish(false);\n const onKey = (down: KeyboardEvent) => {\n if (down.key !== 'Escape') return;\n down.preventDefault();\n down.stopPropagation();\n finish(false);\n };\n const document = handle.ownerDocument;\n handle.setPointerCapture?.(event.pointerId);\n handle.addEventListener('pointermove', onMove);\n handle.addEventListener('pointerup', onUp);\n handle.addEventListener('pointercancel', onCancel);\n document.addEventListener('keydown', onKey, true);\n this.resizeTeardown = () => {\n this.resizeTeardown = null;\n handle.removeEventListener('pointermove', onMove);\n handle.removeEventListener('pointerup', onUp);\n handle.removeEventListener('pointercancel', onCancel);\n document.removeEventListener('keydown', onKey, true);\n if (handle.hasPointerCapture?.(event.pointerId)) {\n handle.releasePointerCapture(event.pointerId);\n }\n };\n }\n\n /* ── Pointer: move ────────────────────────────────────────────────── */\n\n /**\n * One drag controller while editing, rebuilt when the set of widgets that\n * can be picked up changes, and never while one is carried. A widget is\n * picked up by its card, by a mouse or a pen — a finger on a card scrolls\n * the page — and by its handle, by anything.\n */\n private syncDrag() {\n const list = this.list()?.nativeElement;\n const keys = this.isEditing()\n ? this.visible()\n .filter((tile) => tile.movable)\n .map((tile) => tile.key)\n .sort()\n .join('\\n')\n : '';\n if (keys === this.dragKeys && (keys === '' || this.dragTeardown !== null)) return;\n if (this.gesture()?.kind === 'move') return;\n this.dragTeardown?.();\n this.dragTeardown = null;\n this.dragKeys = keys;\n if (keys === '' || list === undefined) return;\n\n const root = this.host.nativeElement;\n const document = root.ownerDocument;\n\n /** Where the press landed, and where in the widget. */\n let press: { x: number; y: number; grabX: number; grabY: number } | null = null;\n let target: string | null = null;\n let drawnIn: DashboardSizeClass = 'expanded';\n let rtl = false;\n let tracks: Tracks | null = null;\n\n const onPress = (event: PointerEvent) => {\n const element = (event.target as Element | null)?.closest<HTMLElement>(\n '[data-part=\"widget\"]',\n );\n if (!element || element.parentElement !== list) return;\n const box = element.getBoundingClientRect();\n press = {\n x: event.clientX,\n y: event.clientY,\n grabX: event.clientX - box.left,\n grabY: event.clientY - box.top,\n };\n };\n list.addEventListener('pointerdown', onPress, true);\n\n /** The preview a target stands for. */\n const previewOf = (key: string, at: string): DashboardLayout => {\n if (at.startsWith('swap:')) {\n return swapTiles(this.currentLayout(), this.specs(), this.grid(), key, at.slice(5));\n }\n const [x, y] = at.split(',').map(Number);\n return moveTile(this.currentLayout(), this.specs(), this.grid(), key, {\n x: x ?? 0,\n y: y ?? 0,\n });\n };\n\n const controller = createDragController({\n document,\n restoreFocus: false,\n preview: false,\n autoScroll: { axis: 'y' },\n t: this.dragT,\n /* The move says what happened once, in the family's own words. */\n silent: ['pickedUp', 'moved', 'dropped', 'cancelled'],\n /**\n * In the expanded class the target is a cell: the one the card's leading\n * corner is nearest, so a widget lands where it is drawn under the\n * pointer. In the classes that flow the target is the widget under the\n * pointer, which the carried one exchanges places with.\n */\n resolveTarget: (point) => {\n const carried = controller.state.items[0];\n if (carried === undefined || press === null || tracks === null) return null;\n const frame = list.getBoundingClientRect();\n if (drawnIn === 'expanded') {\n const left = point.x - press.grabX;\n const top = point.y - press.grabY;\n const tile = this.visible().find((each) => each.key === carried);\n const width = tile ? tile.w * tracks.track + (tile.w - 1) * tracks.columnGap : 0;\n const lead = rtl ? left + width - tracks.track / 2 : left + tracks.track / 2;\n const cell = cellAt(\n { x: lead, y: top + tracks.row / 2 },\n { left: frame.left, top: frame.top, width: frame.width },\n { columns: tracks.columns, row: tracks.row, gap: tracks.columnGap },\n rtl ? 'rtl' : 'ltr',\n );\n target = `${cell.x},${cell.y}`;\n } else {\n for (const [key, element] of this.widgetNodes()) {\n if (key === carried) continue;\n const rect = element.getBoundingClientRect();\n if (\n point.x >= rect.left &&\n point.x <= rect.right &&\n point.y >= rect.top &&\n point.y <= rect.bottom\n ) {\n target = `swap:${key}`;\n break;\n }\n }\n }\n return target === null\n ? null\n : ({ kind: 'on', container: GRID, key: target } satisfies DropTarget);\n },\n onTargetChange: ({ state }) => {\n const key = state.items[0];\n if (key === undefined || state.target?.kind !== 'on') return;\n this.setGesture({ kind: 'move', key, preview: previewOf(key, state.target.key) });\n },\n onDrop: ({ items, target: dropped, reason, event }) => {\n const key = items[0];\n if (key === undefined || dropped.kind !== 'on') return;\n this.focusAfter = null;\n this.change(\n previewOf(key, dropped.key),\n reason === 'keyboard' ? 'keyboard' : 'pointer',\n { kind: 'move', key },\n event,\n this.movedMessage(key, drawnIn),\n );\n },\n });\n\n const unregister = controller.registerContainer({\n key: GRID,\n items: () => this.visible().map((tile) => tile.key),\n orientation: 'grid',\n targets: ['on'],\n element: () => list,\n itemElement: (key) => this.widgetNodes().get(key) ?? null,\n label: () => this.t('editBar'),\n itemLabel: (key) => this.titleOf(key),\n });\n\n /* The click the browser fires after a pointer drag belongs to the drag,\n not to the handle it started on, which would open the handle's menu. */\n let swallow = false;\n let dragging: string | null = null;\n const onClick = (event: Event) => {\n if (!swallow) return;\n swallow = false;\n event.preventDefault();\n event.stopPropagation();\n };\n root.addEventListener('click', onClick, true);\n\n const unsubscribe = controller.subscribe((state) => {\n if (state.status !== 'dragging') {\n if (dragging !== null) {\n const element = this.widgetNodes().get(dragging);\n if (element) this.settleFrom = { key: dragging, box: boxOf(element) };\n clearLift(element);\n swallow = state.reason === 'pointer' || state.reason === null;\n setTimeout(() => (swallow = false), 0);\n dragging = null;\n target = null;\n if (this.gesture()?.kind === 'move') this.setGesture(null);\n }\n return;\n }\n const key = state.items[0];\n if (key === undefined || press === null) return;\n const element = this.widgetNodes().get(key);\n if (element === undefined) return;\n if (dragging === null) {\n dragging = key;\n drawnIn = classOf(root);\n rtl = directionOf(list) === 'rtl';\n tracks = tracksOf(list, this.grid()[drawnIn]);\n writeOrigin(element, originOf(element, list, rtl));\n this.setGesture({ kind: 'move', key, preview: this.full(this.currentLayout()) });\n }\n if (state.point !== null) {\n element.style.setProperty('--_dg-lift-x', `${state.point.x - press.x}px`);\n element.style.setProperty('--_dg-lift-y', `${state.point.y - press.y}px`);\n }\n });\n\n const detachments: (() => void)[] = [];\n const nodes = this.widgetNodes();\n for (const tile of this.visible()) {\n if (!tile.movable) continue;\n const element = nodes.get(tile.key);\n if (element === undefined) continue;\n const card = this.cardOf(tile.key);\n const handle = this.handleOf(tile.key);\n if (card !== null) {\n detachments.push(\n controller.attachDraggable(element, {\n container: GRID,\n key: tile.key,\n handle: () => card,\n canDrag: (event) => event.pointerType !== 'touch',\n }),\n );\n }\n if (handle !== null) {\n detachments.push(\n controller.attachDraggable(element, {\n container: GRID,\n key: tile.key,\n handle: () => handle,\n delay: { touch: 0 },\n }),\n );\n }\n }\n\n this.dragTeardown = () => {\n for (const detach of detachments) detach();\n list.removeEventListener('pointerdown', onPress, true);\n root.removeEventListener('click', onClick, true);\n unsubscribe();\n unregister();\n controller.destroy();\n };\n }\n\n /* ── After a render ───────────────────────────────────────────────── */\n\n private syncEditing() {\n const editing = this.isEditing();\n const document = this.host.nativeElement.ownerDocument;\n if (editing && !this.wasEditing) {\n this.snapshot = this.full(this.currentLayout());\n this.returnFocus = document.activeElement;\n }\n if (!editing && this.wasEditing) {\n const active = document.activeElement;\n const lost = active === null || active === document.body || !active.isConnected;\n const back = this.returnFocus;\n if (lost && back instanceof HTMLElement && back.isConnected) back.focus();\n this.snapshot = null;\n this.returnFocus = null;\n }\n this.wasEditing = editing;\n }\n\n private timing() {\n const styles = getComputedStyle(this.host.nativeElement);\n return {\n duration: parseDuration(styles.getPropertyValue('--slotted-duration-medium')),\n easing: styles.getPropertyValue('--slotted-easing-standard').trim() || 'ease',\n };\n }\n\n private settle() {\n const root = this.host.nativeElement;\n const before = this.flipFrom;\n if (before !== null) {\n this.flipFrom = null;\n playFlip(this.flipNodes(), before, this.timing());\n }\n const settling = this.settleFrom;\n if (settling !== null && this.gesture() === null) {\n this.settleFrom = null;\n const element = this.widgetNodes().get(settling.key);\n if (element) playResize(element, settling.box, this.timing());\n }\n const key = this.focusAfter;\n if (key === null) return;\n this.focusAfter = null;\n const target =\n key === ADD\n ? root.querySelector<HTMLElement>('[data-dashboard-add]')\n : this.isEditing()\n ? this.handleOf(key)\n : null;\n if (target && target !== root.ownerDocument.activeElement) target.focus();\n }\n}\n","import { effect, signal, untracked, type Injector, type WritableSignal } from '@angular/core';\nimport {\n parseDashboardLayout,\n serializeDashboardLayout,\n type DashboardLayout,\n} from '@slotted/core/dashboard-grid';\n\nexport interface DashboardLayoutStorage {\n getItem(key: string): string | null;\n setItem(key: string, value: string): void;\n removeItem(key: string): void;\n}\n\nexport interface PersistedDashboardLayoutOptions {\n /** The key the layout is stored under. */\n readonly key: string;\n /** Default `localStorage`, when the platform has it. */\n readonly storage?: DashboardLayoutStorage | null | undefined;\n /** What the grid shows when nothing is stored. Default: every widget at its defaults. */\n readonly defaultLayout?: DashboardLayout | undefined;\n /** Needed outside an injection context, as `effect` is. */\n readonly injector?: Injector | undefined;\n}\n\nexport interface PersistedDashboardLayout {\n /** Bind with `[(layout)]`: it is read once from the store and written after every change. */\n readonly layout: WritableSignal<DashboardLayout>;\n /** Forgets what is stored and returns to the default. */\n clear(): void;\n}\n\n/** What the store holds under the key; a store that throws holds nothing. */\nfunction readStored(store: DashboardLayoutStorage | null, key: string): string | null {\n try {\n return store?.getItem(key) ?? null;\n } catch {\n return null;\n }\n}\n\nfunction defaultStorage(): DashboardLayoutStorage | null {\n try {\n return typeof window === 'undefined' ? null : window.localStorage;\n } catch {\n return null;\n }\n}\n\n/**\n * The reader's layout, kept across visits. The store is reached inside `try`\n * both ways — a private window, a full quota or a blocked origin reads as\n * nothing stored and writes nothing. The component itself never writes; the\n * store and its key are the application's to name.\n */\nexport function persistedDashboardLayout({\n key,\n storage,\n defaultLayout = [],\n injector,\n}: PersistedDashboardLayoutOptions): PersistedDashboardLayout {\n const store = storage === undefined ? defaultStorage() : storage;\n const text = readStored(store, key);\n const layout = signal<DashboardLayout>(\n (text === null ? null : parseDashboardLayout(text)) ?? defaultLayout,\n );\n /* What the store already holds: the value just read is not written back,\n so a reader who never changed anything stores nothing. An effect's first\n run is deferred, so this compares values rather than counting runs. */\n let held: DashboardLayout = layout();\n effect(\n () => {\n const next = layout();\n untracked(() => {\n if (next === held) return;\n held = next;\n try {\n store?.setItem(key, serializeDashboardLayout(next));\n } catch {\n /* Nothing stored: the next visit starts from the default. */\n }\n });\n },\n injector === undefined ? {} : { injector },\n );\n return {\n layout,\n clear() {\n try {\n store?.removeItem(key);\n } catch {\n /* Nothing to forget. */\n }\n held = defaultLayout;\n layout.set(defaultLayout);\n },\n };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|