@slotted/angular 0.1.0-beta.0 → 0.1.0-beta.10
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/README.md +4 -0
- package/docs/AGENTS.snippet.md +12 -0
- package/docs/alert.json +7 -1
- package/docs/alert.md +3 -3
- package/docs/app-shell.examples.md +1 -1
- package/docs/app-shell.json +5 -5
- package/docs/app-shell.md +2 -2
- package/docs/avatar.json +22 -1
- package/docs/avatar.md +5 -3
- package/docs/badge.json +7 -1
- package/docs/badge.md +3 -3
- package/docs/button-group.json +2 -0
- package/docs/button-group.md +1 -1
- package/docs/button.json +51 -11
- package/docs/button.md +10 -6
- package/docs/calendar.json +8 -1
- package/docs/calendar.md +1 -0
- package/docs/cascader.json +1 -0
- package/docs/cascader.md +1 -1
- package/docs/chart.examples.md +1 -1
- package/docs/chart.json +10 -1
- package/docs/chart.md +3 -2
- package/docs/checkbox.json +7 -0
- package/docs/checkbox.md +1 -0
- package/docs/code-block.json +92 -92
- package/docs/code-block.md +69 -69
- package/docs/combobox.json +1 -0
- package/docs/combobox.md +1 -1
- package/docs/currency-field.json +40 -1
- package/docs/currency-field.md +5 -1
- package/docs/data-grid.examples.md +2 -2
- package/docs/data-grid.json +24 -7
- package/docs/data-grid.md +1 -1
- package/docs/data-grid.props.md +6 -4
- package/docs/data-list.json +2 -1
- package/docs/data-list.md +1 -1
- package/docs/date-field.json +9 -1
- package/docs/date-field.md +3 -2
- package/docs/date-picker.examples.md +36 -0
- package/docs/date-picker.json +20 -5
- package/docs/date-picker.md +5 -4
- package/docs/datetime-field.json +1 -0
- package/docs/datetime-field.md +1 -1
- package/docs/dialog.examples.md +158 -136
- package/docs/dialog.json +35 -11
- package/docs/dialog.md +4 -2
- package/docs/dialog.props.md +1 -1
- package/docs/drawer.json +5 -0
- package/docs/drawer.md +1 -0
- package/docs/entity-picker.json +19 -4
- package/docs/entity-picker.md +8 -6
- package/docs/event-calendar.json +7 -0
- package/docs/event-calendar.md +1 -0
- package/docs/filter-bar.json +118 -118
- package/docs/filter-bar.md +79 -79
- package/docs/form.json +2 -1
- package/docs/form.md +1 -1
- package/docs/guidelines/README.md +27 -0
- package/docs/guidelines/async-feedback.md +129 -0
- package/docs/guidelines/browsing.md +74 -0
- package/docs/guidelines/builders.md +97 -0
- package/docs/guidelines/composition.md +143 -0
- package/docs/guidelines/conversations.md +59 -0
- package/docs/guidelines/errors-and-conflicts.md +71 -0
- package/docs/guidelines/forms.md +202 -0
- package/docs/guidelines/index.md +129 -0
- package/docs/guidelines/layout-alignment.md +95 -0
- package/docs/guidelines/ledgers.md +45 -0
- package/docs/guidelines/list-pages.md +206 -0
- package/docs/guidelines/overviews.md +76 -0
- package/docs/guidelines/own-elements.md +115 -0
- package/docs/guidelines/reading-permissions.md +55 -0
- package/docs/guidelines/record-pages.md +178 -0
- package/docs/guidelines/reports.md +123 -0
- package/docs/guidelines/shell-composition.md +94 -0
- package/docs/guidelines/workspaces.md +46 -0
- package/docs/icon.json +3 -1
- package/docs/icon.md +3 -3
- package/docs/index.md +12 -0
- package/docs/inline-message.json +14 -2
- package/docs/inline-message.md +4 -3
- package/docs/list-item.json +9 -1
- package/docs/list-item.md +3 -3
- package/docs/list.json +19 -1
- package/docs/list.md +3 -1
- package/docs/markdown.json +79 -79
- package/docs/markdown.md +65 -65
- package/docs/menu.json +12 -0
- package/docs/menu.md +2 -0
- package/docs/message.json +7 -1
- package/docs/message.md +3 -3
- package/docs/multi-select.json +1 -0
- package/docs/multi-select.md +1 -1
- package/docs/notification-center.json +4 -0
- package/docs/notification-center.md +2 -2
- package/docs/number-field.json +1 -0
- package/docs/number-field.md +1 -1
- package/docs/otp-input.json +1 -0
- package/docs/otp-input.md +1 -1
- package/docs/page-header.json +4 -3
- package/docs/page-header.md +2 -2
- package/docs/page.json +1 -0
- package/docs/page.md +1 -0
- package/docs/popover.json +1 -1
- package/docs/progress-indicator.json +4 -3
- package/docs/progress-indicator.md +4 -4
- package/docs/prompt-composer.json +41 -1
- package/docs/prompt-composer.md +5 -1
- package/docs/rating.json +5 -3
- package/docs/rating.md +5 -5
- package/docs/section.json +27 -15
- package/docs/section.md +11 -9
- package/docs/segmented-control.json +36 -12
- package/docs/segmented-control.md +17 -1
- package/docs/select.json +1 -0
- package/docs/select.md +1 -1
- package/docs/side-navigation.json +1 -0
- package/docs/side-navigation.md +1 -1
- package/docs/skills/build-own-element/SKILL.md +90 -0
- package/docs/skills/compose-screen/SKILL.md +95 -0
- package/docs/skills/index.md +9 -0
- package/docs/skills/review-screen/SKILL.md +77 -0
- package/docs/skills/theme-app/SKILL.md +87 -0
- package/docs/skills/waiting-states/SKILL.md +143 -0
- package/docs/sparkline.json +5 -2
- package/docs/sparkline.md +4 -4
- package/docs/split-button.json +4 -1
- package/docs/split-button.md +3 -3
- package/docs/stat-card.json +5 -1
- package/docs/stat-card.md +3 -3
- package/docs/table.examples.md +3 -3
- package/docs/table.json +85 -3
- package/docs/table.md +12 -1
- package/docs/tabs.json +17 -7
- package/docs/tabs.md +3 -2
- package/docs/tag.json +14 -4
- package/docs/tag.md +6 -6
- package/docs/tags-input.json +29 -2
- package/docs/tags-input.md +4 -1
- package/docs/text-field.json +2 -1
- package/docs/text-field.md +2 -2
- package/docs/textarea.json +1 -0
- package/docs/textarea.md +1 -1
- package/docs/time-field.json +1 -0
- package/docs/time-field.md +1 -1
- package/docs/timeline.json +138 -132
- package/docs/timeline.md +125 -125
- package/docs/toast.json +7 -1
- package/docs/toast.md +3 -3
- package/docs/toggle-group.json +14 -3
- package/docs/toggle-group.md +3 -3
- package/docs/toggle.json +12 -3
- package/docs/toggle.md +3 -3
- package/docs/tokens.md +467 -0
- package/docs/tour.json +1 -1
- package/docs/typography.json +4 -2
- package/docs/typography.md +4 -4
- package/fesm2022/slotted-angular-accordion.mjs +4 -2
- package/fesm2022/slotted-angular-accordion.mjs.map +1 -1
- package/fesm2022/slotted-angular-action-bar.mjs +22 -11
- package/fesm2022/slotted-angular-action-bar.mjs.map +1 -1
- package/fesm2022/slotted-angular-action-sheet.mjs +42 -29
- package/fesm2022/slotted-angular-action-sheet.mjs.map +1 -1
- package/fesm2022/slotted-angular-alert.mjs +18 -11
- package/fesm2022/slotted-angular-alert.mjs.map +1 -1
- package/fesm2022/slotted-angular-app-shell.mjs +111 -61
- package/fesm2022/slotted-angular-app-shell.mjs.map +1 -1
- package/fesm2022/slotted-angular-aspect-ratio.mjs +4 -2
- package/fesm2022/slotted-angular-aspect-ratio.mjs.map +1 -1
- package/fesm2022/slotted-angular-attachment.mjs +31 -20
- package/fesm2022/slotted-angular-attachment.mjs.map +1 -1
- package/fesm2022/slotted-angular-avatar-group.mjs +9 -6
- package/fesm2022/slotted-angular-avatar-group.mjs.map +1 -1
- package/fesm2022/slotted-angular-avatar.mjs +14 -7
- package/fesm2022/slotted-angular-avatar.mjs.map +1 -1
- package/fesm2022/slotted-angular-badge.mjs +14 -10
- package/fesm2022/slotted-angular-badge.mjs.map +1 -1
- package/fesm2022/slotted-angular-breadcrumb.mjs +26 -18
- package/fesm2022/slotted-angular-breadcrumb.mjs.map +1 -1
- package/fesm2022/slotted-angular-button-group.mjs +7 -4
- package/fesm2022/slotted-angular-button-group.mjs.map +1 -1
- package/fesm2022/slotted-angular-button.mjs +90 -29
- package/fesm2022/slotted-angular-button.mjs.map +1 -1
- package/fesm2022/slotted-angular-calendar.mjs +235 -58
- package/fesm2022/slotted-angular-calendar.mjs.map +1 -1
- package/fesm2022/slotted-angular-card.mjs +18 -16
- package/fesm2022/slotted-angular-card.mjs.map +1 -1
- package/fesm2022/slotted-angular-carousel.mjs +22 -11
- package/fesm2022/slotted-angular-carousel.mjs.map +1 -1
- package/fesm2022/slotted-angular-cascader.mjs +166 -66
- package/fesm2022/slotted-angular-cascader.mjs.map +1 -1
- package/fesm2022/slotted-angular-chart.mjs +53 -20
- package/fesm2022/slotted-angular-chart.mjs.map +1 -1
- package/fesm2022/slotted-angular-checkbox-group.mjs +5 -3
- package/fesm2022/slotted-angular-checkbox-group.mjs.map +1 -1
- package/fesm2022/slotted-angular-checkbox.mjs +23 -9
- package/fesm2022/slotted-angular-checkbox.mjs.map +1 -1
- package/fesm2022/slotted-angular-code-block.mjs +29 -15
- package/fesm2022/slotted-angular-code-block.mjs.map +1 -1
- package/fesm2022/slotted-angular-collapsible.mjs +20 -15
- package/fesm2022/slotted-angular-collapsible.mjs.map +1 -1
- package/fesm2022/slotted-angular-color-picker.mjs +77 -22
- package/fesm2022/slotted-angular-color-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-column-manager.mjs +68 -31
- package/fesm2022/slotted-angular-column-manager.mjs.map +1 -1
- package/fesm2022/slotted-angular-combobox.mjs +112 -39
- package/fesm2022/slotted-angular-combobox.mjs.map +1 -1
- package/fesm2022/slotted-angular-command-palette.mjs +150 -54
- package/fesm2022/slotted-angular-command-palette.mjs.map +1 -1
- package/fesm2022/slotted-angular-container.mjs +6 -4
- package/fesm2022/slotted-angular-container.mjs.map +1 -1
- package/fesm2022/slotted-angular-context-menu.mjs +5 -4
- package/fesm2022/slotted-angular-context-menu.mjs.map +1 -1
- package/fesm2022/slotted-angular-currency-field.mjs +149 -32
- package/fesm2022/slotted-angular-currency-field.mjs.map +1 -1
- package/fesm2022/slotted-angular-dashboard-grid.mjs +142 -63
- package/fesm2022/slotted-angular-dashboard-grid.mjs.map +1 -1
- package/fesm2022/slotted-angular-data-grid.mjs +354 -113
- package/fesm2022/slotted-angular-data-grid.mjs.map +1 -1
- package/fesm2022/slotted-angular-data-list.mjs +83 -50
- package/fesm2022/slotted-angular-data-list.mjs.map +1 -1
- package/fesm2022/slotted-angular-date-field.mjs +74 -25
- package/fesm2022/slotted-angular-date-field.mjs.map +1 -1
- package/fesm2022/slotted-angular-date-picker.mjs +112 -40
- package/fesm2022/slotted-angular-date-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-date-range-picker.mjs +45 -22
- package/fesm2022/slotted-angular-date-range-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-datetime-field.mjs +48 -16
- package/fesm2022/slotted-angular-datetime-field.mjs.map +1 -1
- package/fesm2022/slotted-angular-datetime-picker.mjs +41 -29
- package/fesm2022/slotted-angular-datetime-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-datetime-range-picker.mjs +115 -48
- package/fesm2022/slotted-angular-datetime-range-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-description-list.mjs +33 -19
- package/fesm2022/slotted-angular-description-list.mjs.map +1 -1
- package/fesm2022/slotted-angular-detail-panel.mjs +29 -18
- package/fesm2022/slotted-angular-detail-panel.mjs.map +1 -1
- package/fesm2022/slotted-angular-dialog.mjs +72 -30
- package/fesm2022/slotted-angular-dialog.mjs.map +1 -1
- package/fesm2022/slotted-angular-divider.mjs +7 -5
- package/fesm2022/slotted-angular-divider.mjs.map +1 -1
- package/fesm2022/slotted-angular-drawer.mjs +53 -29
- package/fesm2022/slotted-angular-drawer.mjs.map +1 -1
- package/fesm2022/slotted-angular-entity-picker.mjs +468 -75
- package/fesm2022/slotted-angular-entity-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-event-calendar.mjs +275 -108
- package/fesm2022/slotted-angular-event-calendar.mjs.map +1 -1
- package/fesm2022/slotted-angular-field-group.mjs +14 -7
- package/fesm2022/slotted-angular-field-group.mjs.map +1 -1
- package/fesm2022/slotted-angular-field.mjs +35 -15
- package/fesm2022/slotted-angular-field.mjs.map +1 -1
- package/fesm2022/slotted-angular-filter-bar.mjs +112 -51
- package/fesm2022/slotted-angular-filter-bar.mjs.map +1 -1
- package/fesm2022/slotted-angular-form.mjs +18 -10
- package/fesm2022/slotted-angular-form.mjs.map +1 -1
- package/fesm2022/slotted-angular-fullscreen.mjs +14 -8
- package/fesm2022/slotted-angular-fullscreen.mjs.map +1 -1
- package/fesm2022/slotted-angular-grid.mjs +4 -2
- package/fesm2022/slotted-angular-grid.mjs.map +1 -1
- package/fesm2022/slotted-angular-highlight.mjs +5 -3
- package/fesm2022/slotted-angular-highlight.mjs.map +1 -1
- package/fesm2022/slotted-angular-hover-card.mjs +5 -4
- package/fesm2022/slotted-angular-hover-card.mjs.map +1 -1
- package/fesm2022/slotted-angular-icon.mjs +6 -3
- package/fesm2022/slotted-angular-icon.mjs.map +1 -1
- package/fesm2022/slotted-angular-image.mjs +13 -10
- package/fesm2022/slotted-angular-image.mjs.map +1 -1
- package/fesm2022/slotted-angular-import-export-center.mjs +167 -99
- package/fesm2022/slotted-angular-import-export-center.mjs.map +1 -1
- package/fesm2022/slotted-angular-inline-message.mjs +88 -13
- package/fesm2022/slotted-angular-inline-message.mjs.map +1 -1
- package/fesm2022/slotted-angular-inline.mjs +4 -2
- package/fesm2022/slotted-angular-inline.mjs.map +1 -1
- package/fesm2022/slotted-angular-kbd.mjs +11 -7
- package/fesm2022/slotted-angular-kbd.mjs.map +1 -1
- package/fesm2022/slotted-angular-link.mjs +5 -3
- package/fesm2022/slotted-angular-link.mjs.map +1 -1
- package/fesm2022/slotted-angular-list-item.mjs +21 -18
- package/fesm2022/slotted-angular-list-item.mjs.map +1 -1
- package/fesm2022/slotted-angular-list.mjs +37 -22
- package/fesm2022/slotted-angular-list.mjs.map +1 -1
- package/fesm2022/slotted-angular-listbox.mjs +39 -21
- package/fesm2022/slotted-angular-listbox.mjs.map +1 -1
- package/fesm2022/slotted-angular-loading-overlay.mjs +59 -22
- package/fesm2022/slotted-angular-loading-overlay.mjs.map +1 -1
- package/fesm2022/slotted-angular-markdown.mjs +31 -19
- package/fesm2022/slotted-angular-markdown.mjs.map +1 -1
- package/fesm2022/slotted-angular-menu.mjs +51 -29
- package/fesm2022/slotted-angular-menu.mjs.map +1 -1
- package/fesm2022/slotted-angular-menubar.mjs +4 -2
- package/fesm2022/slotted-angular-menubar.mjs.map +1 -1
- package/fesm2022/slotted-angular-message-scroller.mjs +28 -15
- package/fesm2022/slotted-angular-message-scroller.mjs.map +1 -1
- package/fesm2022/slotted-angular-message.mjs +113 -51
- package/fesm2022/slotted-angular-message.mjs.map +1 -1
- package/fesm2022/slotted-angular-multi-select.mjs +189 -87
- package/fesm2022/slotted-angular-multi-select.mjs.map +1 -1
- package/fesm2022/slotted-angular-navigation-menu.mjs +34 -26
- package/fesm2022/slotted-angular-navigation-menu.mjs.map +1 -1
- package/fesm2022/slotted-angular-notification-center.mjs +108 -65
- package/fesm2022/slotted-angular-notification-center.mjs.map +1 -1
- package/fesm2022/slotted-angular-number-field.mjs +23 -11
- package/fesm2022/slotted-angular-number-field.mjs.map +1 -1
- package/fesm2022/slotted-angular-otp-input.mjs +13 -8
- package/fesm2022/slotted-angular-otp-input.mjs.map +1 -1
- package/fesm2022/slotted-angular-page-header.mjs +75 -45
- package/fesm2022/slotted-angular-page-header.mjs.map +1 -1
- package/fesm2022/slotted-angular-page.mjs +38 -10
- package/fesm2022/slotted-angular-page.mjs.map +1 -1
- package/fesm2022/slotted-angular-pagination.mjs +35 -22
- package/fesm2022/slotted-angular-pagination.mjs.map +1 -1
- package/fesm2022/slotted-angular-popover.mjs +32 -19
- package/fesm2022/slotted-angular-popover.mjs.map +1 -1
- package/fesm2022/slotted-angular-progress-indicator.mjs +236 -52
- package/fesm2022/slotted-angular-progress-indicator.mjs.map +1 -1
- package/fesm2022/slotted-angular-prompt-composer.mjs +41 -20
- package/fesm2022/slotted-angular-prompt-composer.mjs.map +1 -1
- package/fesm2022/slotted-angular-prose.mjs +14 -11
- package/fesm2022/slotted-angular-prose.mjs.map +1 -1
- package/fesm2022/slotted-angular-radio-group.mjs +15 -9
- package/fesm2022/slotted-angular-radio-group.mjs.map +1 -1
- package/fesm2022/slotted-angular-rating.mjs +138 -82
- package/fesm2022/slotted-angular-rating.mjs.map +1 -1
- package/fesm2022/slotted-angular-result-state.mjs +16 -12
- package/fesm2022/slotted-angular-result-state.mjs.map +1 -1
- package/fesm2022/slotted-angular-saved-views.mjs +43 -16
- package/fesm2022/slotted-angular-saved-views.mjs.map +1 -1
- package/fesm2022/slotted-angular-scroll-area.mjs +13 -5
- package/fesm2022/slotted-angular-scroll-area.mjs.map +1 -1
- package/fesm2022/slotted-angular-section.mjs +53 -18
- package/fesm2022/slotted-angular-section.mjs.map +1 -1
- package/fesm2022/slotted-angular-segmented-control.mjs +37 -11
- package/fesm2022/slotted-angular-segmented-control.mjs.map +1 -1
- package/fesm2022/slotted-angular-select.mjs +184 -94
- package/fesm2022/slotted-angular-select.mjs.map +1 -1
- package/fesm2022/slotted-angular-side-navigation.mjs +46 -35
- package/fesm2022/slotted-angular-side-navigation.mjs.map +1 -1
- package/fesm2022/slotted-angular-skeleton.mjs +32 -16
- package/fesm2022/slotted-angular-skeleton.mjs.map +1 -1
- package/fesm2022/slotted-angular-slider.mjs +31 -11
- package/fesm2022/slotted-angular-slider.mjs.map +1 -1
- package/fesm2022/slotted-angular-sparkline.mjs +41 -14
- package/fesm2022/slotted-angular-sparkline.mjs.map +1 -1
- package/fesm2022/slotted-angular-split-button.mjs +25 -11
- package/fesm2022/slotted-angular-split-button.mjs.map +1 -1
- package/fesm2022/slotted-angular-splitter.mjs +11 -9
- package/fesm2022/slotted-angular-splitter.mjs.map +1 -1
- package/fesm2022/slotted-angular-stack.mjs +4 -2
- package/fesm2022/slotted-angular-stack.mjs.map +1 -1
- package/fesm2022/slotted-angular-stat-card.mjs +35 -28
- package/fesm2022/slotted-angular-stat-card.mjs.map +1 -1
- package/fesm2022/slotted-angular-status-indicator.mjs +22 -8
- package/fesm2022/slotted-angular-status-indicator.mjs.map +1 -1
- package/fesm2022/slotted-angular-stepper.mjs +40 -15
- package/fesm2022/slotted-angular-stepper.mjs.map +1 -1
- package/fesm2022/slotted-angular-switch.mjs +15 -10
- package/fesm2022/slotted-angular-switch.mjs.map +1 -1
- package/fesm2022/slotted-angular-table-of-contents.mjs +29 -21
- package/fesm2022/slotted-angular-table-of-contents.mjs.map +1 -1
- package/fesm2022/slotted-angular-table.mjs +243 -73
- package/fesm2022/slotted-angular-table.mjs.map +1 -1
- package/fesm2022/slotted-angular-tabs.mjs +42 -18
- package/fesm2022/slotted-angular-tabs.mjs.map +1 -1
- package/fesm2022/slotted-angular-tag.mjs +19 -12
- package/fesm2022/slotted-angular-tag.mjs.map +1 -1
- package/fesm2022/slotted-angular-tags-input.mjs +253 -28
- package/fesm2022/slotted-angular-tags-input.mjs.map +1 -1
- package/fesm2022/slotted-angular-text-field.mjs +49 -15
- package/fesm2022/slotted-angular-text-field.mjs.map +1 -1
- package/fesm2022/slotted-angular-textarea.mjs +5 -3
- package/fesm2022/slotted-angular-textarea.mjs.map +1 -1
- package/fesm2022/slotted-angular-time-field.mjs +48 -14
- package/fesm2022/slotted-angular-time-field.mjs.map +1 -1
- package/fesm2022/slotted-angular-time-picker.mjs +32 -20
- package/fesm2022/slotted-angular-time-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-time-range-picker.mjs +113 -46
- package/fesm2022/slotted-angular-time-range-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-timeline.mjs +135 -64
- package/fesm2022/slotted-angular-timeline.mjs.map +1 -1
- package/fesm2022/slotted-angular-toast.mjs +43 -31
- package/fesm2022/slotted-angular-toast.mjs.map +1 -1
- package/fesm2022/slotted-angular-toggle-group.mjs +25 -8
- package/fesm2022/slotted-angular-toggle-group.mjs.map +1 -1
- package/fesm2022/slotted-angular-toggle.mjs +9 -4
- package/fesm2022/slotted-angular-toggle.mjs.map +1 -1
- package/fesm2022/slotted-angular-toolbar.mjs +22 -11
- package/fesm2022/slotted-angular-toolbar.mjs.map +1 -1
- package/fesm2022/slotted-angular-tooltip.mjs +15 -6
- package/fesm2022/slotted-angular-tooltip.mjs.map +1 -1
- package/fesm2022/slotted-angular-top-navigation.mjs +64 -44
- package/fesm2022/slotted-angular-top-navigation.mjs.map +1 -1
- package/fesm2022/slotted-angular-tour.mjs +47 -22
- package/fesm2022/slotted-angular-tour.mjs.map +1 -1
- package/fesm2022/slotted-angular-transfer.mjs +69 -30
- package/fesm2022/slotted-angular-transfer.mjs.map +1 -1
- package/fesm2022/slotted-angular-tree.mjs +74 -26
- package/fesm2022/slotted-angular-tree.mjs.map +1 -1
- package/fesm2022/slotted-angular-typography.mjs +8 -4
- package/fesm2022/slotted-angular-typography.mjs.map +1 -1
- package/fesm2022/slotted-angular-upload.mjs +125 -57
- package/fesm2022/slotted-angular-upload.mjs.map +1 -1
- package/fesm2022/slotted-angular-visually-hidden.mjs +4 -2
- package/fesm2022/slotted-angular-visually-hidden.mjs.map +1 -1
- package/fesm2022/slotted-angular-wizard.mjs +163 -65
- package/fesm2022/slotted-angular-wizard.mjs.map +1 -1
- package/package.json +3 -3
- package/types/slotted-angular-accordion.d.ts.map +1 -1
- package/types/slotted-angular-action-bar.d.ts.map +1 -1
- package/types/slotted-angular-action-sheet.d.ts.map +1 -1
- package/types/slotted-angular-alert.d.ts +2 -2
- package/types/slotted-angular-alert.d.ts.map +1 -1
- package/types/slotted-angular-app-shell.d.ts +11 -3
- package/types/slotted-angular-app-shell.d.ts.map +1 -1
- package/types/slotted-angular-aspect-ratio.d.ts.map +1 -1
- package/types/slotted-angular-attachment.d.ts +1 -1
- package/types/slotted-angular-attachment.d.ts.map +1 -1
- package/types/slotted-angular-avatar-group.d.ts.map +1 -1
- package/types/slotted-angular-avatar.d.ts +11 -3
- package/types/slotted-angular-avatar.d.ts.map +1 -1
- package/types/slotted-angular-badge.d.ts +1 -1
- package/types/slotted-angular-badge.d.ts.map +1 -1
- package/types/slotted-angular-breadcrumb.d.ts.map +1 -1
- package/types/slotted-angular-button-group.d.ts +1 -1
- package/types/slotted-angular-button-group.d.ts.map +1 -1
- package/types/slotted-angular-button.d.ts +33 -13
- package/types/slotted-angular-button.d.ts.map +1 -1
- package/types/slotted-angular-calendar.d.ts +30 -2
- package/types/slotted-angular-calendar.d.ts.map +1 -1
- package/types/slotted-angular-card.d.ts.map +1 -1
- package/types/slotted-angular-carousel.d.ts.map +1 -1
- package/types/slotted-angular-cascader.d.ts.map +1 -1
- package/types/slotted-angular-chart.d.ts +10 -0
- package/types/slotted-angular-chart.d.ts.map +1 -1
- package/types/slotted-angular-checkbox-group.d.ts.map +1 -1
- package/types/slotted-angular-checkbox.d.ts +7 -1
- package/types/slotted-angular-checkbox.d.ts.map +1 -1
- package/types/slotted-angular-code-block.d.ts +1 -1
- package/types/slotted-angular-code-block.d.ts.map +1 -1
- package/types/slotted-angular-collapsible.d.ts +1 -1
- package/types/slotted-angular-collapsible.d.ts.map +1 -1
- package/types/slotted-angular-color-picker.d.ts.map +1 -1
- package/types/slotted-angular-column-manager.d.ts.map +1 -1
- package/types/slotted-angular-combobox.d.ts +5 -1
- package/types/slotted-angular-combobox.d.ts.map +1 -1
- package/types/slotted-angular-command-palette.d.ts +10 -1
- package/types/slotted-angular-command-palette.d.ts.map +1 -1
- package/types/slotted-angular-container.d.ts.map +1 -1
- package/types/slotted-angular-context-menu.d.ts.map +1 -1
- package/types/slotted-angular-currency-field.d.ts +63 -15
- package/types/slotted-angular-currency-field.d.ts.map +1 -1
- package/types/slotted-angular-dashboard-grid.d.ts.map +1 -1
- package/types/slotted-angular-data-grid.d.ts +49 -4
- package/types/slotted-angular-data-grid.d.ts.map +1 -1
- package/types/slotted-angular-data-list.d.ts.map +1 -1
- package/types/slotted-angular-date-field.d.ts +11 -1
- package/types/slotted-angular-date-field.d.ts.map +1 -1
- package/types/slotted-angular-date-picker.d.ts +38 -12
- package/types/slotted-angular-date-picker.d.ts.map +1 -1
- package/types/slotted-angular-date-range-picker.d.ts +0 -1
- package/types/slotted-angular-date-range-picker.d.ts.map +1 -1
- package/types/slotted-angular-datetime-field.d.ts.map +1 -1
- package/types/slotted-angular-datetime-picker.d.ts +0 -1
- package/types/slotted-angular-datetime-picker.d.ts.map +1 -1
- package/types/slotted-angular-datetime-range-picker.d.ts +0 -1
- package/types/slotted-angular-datetime-range-picker.d.ts.map +1 -1
- package/types/slotted-angular-description-list.d.ts.map +1 -1
- package/types/slotted-angular-detail-panel.d.ts.map +1 -1
- package/types/slotted-angular-dialog.d.ts +10 -3
- package/types/slotted-angular-dialog.d.ts.map +1 -1
- package/types/slotted-angular-divider.d.ts.map +1 -1
- package/types/slotted-angular-drawer.d.ts +7 -1
- package/types/slotted-angular-drawer.d.ts.map +1 -1
- package/types/slotted-angular-entity-picker.d.ts +63 -15
- package/types/slotted-angular-entity-picker.d.ts.map +1 -1
- package/types/slotted-angular-event-calendar.d.ts +9 -2
- package/types/slotted-angular-event-calendar.d.ts.map +1 -1
- package/types/slotted-angular-field-group.d.ts.map +1 -1
- package/types/slotted-angular-field.d.ts.map +1 -1
- package/types/slotted-angular-filter-bar.d.ts.map +1 -1
- package/types/slotted-angular-form.d.ts.map +1 -1
- package/types/slotted-angular-fullscreen.d.ts.map +1 -1
- package/types/slotted-angular-grid.d.ts.map +1 -1
- package/types/slotted-angular-highlight.d.ts.map +1 -1
- package/types/slotted-angular-hover-card.d.ts.map +1 -1
- package/types/slotted-angular-icon.d.ts +2 -2
- package/types/slotted-angular-icon.d.ts.map +1 -1
- package/types/slotted-angular-image.d.ts.map +1 -1
- package/types/slotted-angular-import-export-center.d.ts.map +1 -1
- package/types/slotted-angular-inline-message.d.ts +25 -25
- package/types/slotted-angular-inline-message.d.ts.map +1 -1
- package/types/slotted-angular-inline.d.ts.map +1 -1
- package/types/slotted-angular-kbd.d.ts.map +1 -1
- package/types/slotted-angular-link.d.ts.map +1 -1
- package/types/slotted-angular-list-item.d.ts +1 -1
- package/types/slotted-angular-list-item.d.ts.map +1 -1
- package/types/slotted-angular-list.d.ts +42 -27
- package/types/slotted-angular-list.d.ts.map +1 -1
- package/types/slotted-angular-listbox.d.ts.map +1 -1
- package/types/slotted-angular-loading-overlay.d.ts.map +1 -1
- package/types/slotted-angular-markdown.d.ts.map +1 -1
- package/types/slotted-angular-menu.d.ts +11 -2
- package/types/slotted-angular-menu.d.ts.map +1 -1
- package/types/slotted-angular-menubar.d.ts.map +1 -1
- package/types/slotted-angular-message-scroller.d.ts.map +1 -1
- package/types/slotted-angular-message.d.ts +1 -1
- package/types/slotted-angular-message.d.ts.map +1 -1
- package/types/slotted-angular-multi-select.d.ts +15 -1
- package/types/slotted-angular-multi-select.d.ts.map +1 -1
- package/types/slotted-angular-navigation-menu.d.ts.map +1 -1
- package/types/slotted-angular-notification-center.d.ts +1 -1
- package/types/slotted-angular-notification-center.d.ts.map +1 -1
- package/types/slotted-angular-number-field.d.ts.map +1 -1
- package/types/slotted-angular-otp-input.d.ts.map +1 -1
- package/types/slotted-angular-page-header.d.ts +4 -4
- package/types/slotted-angular-page-header.d.ts.map +1 -1
- package/types/slotted-angular-page.d.ts.map +1 -1
- package/types/slotted-angular-pagination.d.ts.map +1 -1
- package/types/slotted-angular-popover.d.ts.map +1 -1
- package/types/slotted-angular-progress-indicator.d.ts +8 -1
- package/types/slotted-angular-progress-indicator.d.ts.map +1 -1
- package/types/slotted-angular-prompt-composer.d.ts +11 -2
- package/types/slotted-angular-prompt-composer.d.ts.map +1 -1
- package/types/slotted-angular-prose.d.ts.map +1 -1
- package/types/slotted-angular-radio-group.d.ts.map +1 -1
- package/types/slotted-angular-rating.d.ts +1 -1
- package/types/slotted-angular-rating.d.ts.map +1 -1
- package/types/slotted-angular-result-state.d.ts.map +1 -1
- package/types/slotted-angular-saved-views.d.ts.map +1 -1
- package/types/slotted-angular-scroll-area.d.ts.map +1 -1
- package/types/slotted-angular-section.d.ts +11 -3
- package/types/slotted-angular-section.d.ts.map +1 -1
- package/types/slotted-angular-segmented-control.d.ts +15 -2
- package/types/slotted-angular-segmented-control.d.ts.map +1 -1
- package/types/slotted-angular-select.d.ts +12 -2
- package/types/slotted-angular-select.d.ts.map +1 -1
- package/types/slotted-angular-side-navigation.d.ts.map +1 -1
- package/types/slotted-angular-skeleton.d.ts.map +1 -1
- package/types/slotted-angular-slider.d.ts.map +1 -1
- package/types/slotted-angular-sparkline.d.ts +7 -1
- package/types/slotted-angular-sparkline.d.ts.map +1 -1
- package/types/slotted-angular-split-button.d.ts +2 -2
- package/types/slotted-angular-split-button.d.ts.map +1 -1
- package/types/slotted-angular-splitter.d.ts.map +1 -1
- package/types/slotted-angular-stack.d.ts.map +1 -1
- package/types/slotted-angular-stat-card.d.ts +1 -1
- package/types/slotted-angular-stat-card.d.ts.map +1 -1
- package/types/slotted-angular-status-indicator.d.ts +1 -1
- package/types/slotted-angular-status-indicator.d.ts.map +1 -1
- package/types/slotted-angular-stepper.d.ts +1 -1
- package/types/slotted-angular-stepper.d.ts.map +1 -1
- package/types/slotted-angular-switch.d.ts.map +1 -1
- package/types/slotted-angular-table-of-contents.d.ts.map +1 -1
- package/types/slotted-angular-table.d.ts +63 -6
- package/types/slotted-angular-table.d.ts.map +1 -1
- package/types/slotted-angular-tabs.d.ts +3 -4
- package/types/slotted-angular-tabs.d.ts.map +1 -1
- package/types/slotted-angular-tag.d.ts +1 -1
- package/types/slotted-angular-tag.d.ts.map +1 -1
- package/types/slotted-angular-tags-input.d.ts +33 -1
- package/types/slotted-angular-tags-input.d.ts.map +1 -1
- package/types/slotted-angular-text-field.d.ts.map +1 -1
- package/types/slotted-angular-textarea.d.ts.map +1 -1
- package/types/slotted-angular-theme.d.ts +1 -1
- package/types/slotted-angular-time-field.d.ts.map +1 -1
- package/types/slotted-angular-time-picker.d.ts +0 -1
- package/types/slotted-angular-time-picker.d.ts.map +1 -1
- package/types/slotted-angular-time-range-picker.d.ts +0 -1
- package/types/slotted-angular-time-range-picker.d.ts.map +1 -1
- package/types/slotted-angular-timeline.d.ts +1 -1
- package/types/slotted-angular-timeline.d.ts.map +1 -1
- package/types/slotted-angular-toast.d.ts +3 -3
- package/types/slotted-angular-toast.d.ts.map +1 -1
- package/types/slotted-angular-toggle-group.d.ts +8 -2
- package/types/slotted-angular-toggle-group.d.ts.map +1 -1
- package/types/slotted-angular-toggle.d.ts +1 -1
- package/types/slotted-angular-toggle.d.ts.map +1 -1
- package/types/slotted-angular-toolbar.d.ts.map +1 -1
- package/types/slotted-angular-tooltip.d.ts.map +1 -1
- package/types/slotted-angular-top-navigation.d.ts.map +1 -1
- package/types/slotted-angular-tour.d.ts.map +1 -1
- package/types/slotted-angular-transfer.d.ts.map +1 -1
- package/types/slotted-angular-tree.d.ts.map +1 -1
- package/types/slotted-angular-typography.d.ts +1 -1
- package/types/slotted-angular-typography.d.ts.map +1 -1
- package/types/slotted-angular-upload.d.ts +2 -2
- package/types/slotted-angular-upload.d.ts.map +1 -1
- package/types/slotted-angular-visually-hidden.d.ts.map +1 -1
- package/types/slotted-angular-wizard.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slotted-angular-detail-panel.mjs","sources":["../../detail-panel/src/detail-panel-defaults.ts","../../detail-panel/src/detail-panel.ts","../../detail-panel/src/detail-panel-parts.ts","../../detail-panel/src/slotted-angular-detail-panel.ts"],"sourcesContent":["import { inject, Injectable, InjectionToken } from '@angular/core';\n\n/** Every section in the flow with a heading each, or a strip with one section shown. */\nexport type DetailPanelLayout = 'stacked' | 'tabs';\n\n/** Which side the aside column takes above 600 pixels; `none` when the consumer renders no aside. */\nexport type DetailPanelAside = 'end' | 'start' | 'none';\n\n/** The heading rank the page-header defaults to. Stacked sections take the rank below. */\nexport type DetailPanelLevel = '1' | '2' | '3';\n\n/** The page-header's size default, the sections' size, the body's gap and inset. */\nexport type DetailPanelSize = 'sm' | 'md' | 'lg';\n\n/** Who scrolls: the host, or the root itself. */\nexport type DetailPanelScroll = 'ancestor' | 'self';\n\n/** Under `tabs`, when a section's content exists. Inert under `stacked`. */\nexport type DetailPanelMount = 'active' | 'lazy' | 'eager';\n\n/** Whether the record is there. Under either failure the columns give way to the message. */\nexport type DetailPanelStatus = 'ready' | 'not-found' | 'error';\n\n/** Why the current section moved. */\nexport type DetailPanelSectionReason = 'pointer' | 'keyboard' | 'programmatic';\n\nexport interface DetailPanelDefaults {\n aside: DetailPanelAside;\n layout: DetailPanelLayout;\n level: DetailPanelLevel;\n mount: DetailPanelMount;\n scroll: DetailPanelScroll;\n size: DetailPanelSize;\n}\n\nconst FALLBACK: DetailPanelDefaults = {\n aside: 'end',\n layout: 'stacked',\n level: '2',\n mount: 'active',\n scroll: 'ancestor',\n size: 'md',\n};\n\nexport const DETAIL_PANEL_DEFAULTS = new InjectionToken<DetailPanelDefaults>(\n 'slotted detail-panel defaults',\n { providedIn: 'root', factory: () => FALLBACK },\n);\n\n/**\n * An application decides once how its records read — stacked or tabbed, the\n * aside's side, the rank, the size, who scrolls — rather than repeating them\n * on every screen. A panel that states any of them itself still wins. Its\n * words come from the language in force (`provideSlotted`).\n */\nexport function provideDetailPanelDefaults(defaults: Partial<DetailPanelDefaults>) {\n return {\n provide: DETAIL_PANEL_DEFAULTS,\n useFactory: (): DetailPanelDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\nexport function injectDetailPanelDefaults(): DetailPanelDefaults {\n return inject(DETAIL_PANEL_DEFAULTS);\n}\n\n@Injectable({ providedIn: 'root' })\nexport class SlDetailPanelIdFactory {\n private count = 0;\n\n next() {\n this.count += 1;\n return `slotted-detail-panel-${this.count}`;\n }\n}\n","import { createControllable } from '@slotted/core/state';\nimport type { ChangeRequest } from '@slotted/core/state';\nimport { findScrollParent } from '@slotted/core/sticky-header';\nimport { injectMessages } from '@slotted/angular/i18n';\nimport {\n detailPanelMessages,\n type DetailPanelMessages,\n type PartialMessages,\n} from '@slotted/core/i18n';\nimport { PAGE_HEADER_DEFAULTS } from '@slotted/angular/page-header';\nimport type { PageHeaderDefaults } from '@slotted/angular/page-header';\nimport {\n afterRenderEffect,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n Directive,\n effect,\n ElementRef,\n HostAttributeToken,\n inject,\n input,\n model,\n output,\n signal,\n TemplateRef,\n untracked,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { injectDetailPanelDefaults, SlDetailPanelIdFactory } from './detail-panel-defaults';\nimport type {\n DetailPanelAside,\n DetailPanelLayout,\n DetailPanelLevel,\n DetailPanelMount,\n DetailPanelScroll,\n DetailPanelSectionReason,\n DetailPanelSize,\n DetailPanelStatus,\n} from './detail-panel-defaults';\n\nexport type {\n DetailPanelAside,\n DetailPanelDefaults,\n DetailPanelLayout,\n DetailPanelLevel,\n DetailPanelMount,\n DetailPanelScroll,\n DetailPanelSectionReason,\n DetailPanelSize,\n DetailPanelStatus,\n} from './detail-panel-defaults';\n\n/** The ids the strip's tabs family returns for one section name. */\nexport interface DetailPanelIdentity {\n panelId: string;\n tabId: string;\n}\n\n/** The selector for the heading the panel is named by and focuses: the page-header's. */\nconst HEADING_SELECTOR = ':scope > [data-ui=\"page-header\"] [data-part=\"heading\"]';\n\n/**\n * One named unit of content, declared as a template so the panel decides\n * when it exists: `mount` under `tabs`, and `loading` under both layouts.\n *\n * ```html\n * <ng-template slDetailPanelSection name=\"linhas\" label=\"Linhas\" [count]=\"4\">\n * …\n * </ng-template>\n * ```\n */\n@Directive({\n selector: 'ng-template[slDetailPanelSection]',\n standalone: true,\n exportAs: 'slDetailPanelSection',\n})\nexport class SlDetailPanelSection {\n /** The value the section is named by in `section` and the URL. */\n readonly name = input.required<string>();\n /** The tab's words, and the stacked heading. */\n readonly label = input.required<string>();\n /** Drawn in the tab, or as a badge after the stacked heading. */\n readonly count = input<number | undefined>(undefined);\n /** Takes the tab out of the strip's sequence. Inert under `stacked`. */\n readonly disabled = input(false, { transform: booleanAttribute });\n /** The section's own controls, as a template: in the stacked heading's actions column, or in a row above a tabbed section. */\n readonly actions = input<TemplateRef<unknown> | undefined>(undefined);\n\n readonly template = inject(TemplateRef<unknown>);\n}\n\n/**\n * One record on screen: what identifies it, what state it is in, what can be\n * done to it, and what happened to it.\n *\n * **The top is a `[slPageHeader]` the consumer writes**, the root's first\n * child. The panel provides `PAGE_HEADER_DEFAULTS` for its subtree from its\n * own `level` and `size`, so a header that states neither takes the panel's;\n * one that does still wins.\n *\n * **One value moves: the current section.** `section` is a model; every move\n * is first a request on `sectionRequest`, carrying the reason and `cancel()`.\n * Under `layout=\"tabs\"` the strip (`[slDetailPanelTabs]`, placed in the\n * header's tabs slot) asks with `pointer` or `keyboard`; under `stacked` the\n * value arrives as `programmatic` and the named section is scrolled under the\n * chrome and marked `data-current`.\n *\n * **Focus follows the record.** When `recordKey` changes while focus is\n * inside the root, the heading takes focus and the scroller returns to its\n * start.\n */\n@Component({\n selector: '[slDetailPanel]',\n standalone: true,\n exportAs: 'slDetailPanel',\n template: '<ng-content />',\n styleUrl: '../../../styles/src/detail-panel/detail-panel.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: PAGE_HEADER_DEFAULTS,\n useFactory: (): PageHeaderDefaults => {\n const inherited = inject(PAGE_HEADER_DEFAULTS, { skipSelf: true });\n const panel = inject(SlDetailPanel);\n /* Getters over signals: a computed in the page-header that reads\n `defaults.level` tracks the panel's own resolved level. */\n return {\n get collapse() {\n return inherited.collapse;\n },\n get level() {\n return panel.resolvedLevel();\n },\n get size() {\n return panel.resolvedSize();\n },\n get variant() {\n return inherited.variant;\n },\n };\n },\n },\n ],\n host: {\n 'data-ui': 'detail-panel',\n 'data-part': 'root',\n '[attr.data-layout]': 'resolvedLayout()',\n '[attr.data-aside]': 'resolvedAside()',\n '[attr.data-level]': 'resolvedLevel()',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-scroll]': 'resolvedScroll()',\n '[attr.data-mount]': 'resolvedMount()',\n '[attr.data-status]': 'status()',\n '[attr.data-loading]': \"loading() ? '' : null\",\n '[attr.aria-busy]': \"loading() ? 'true' : null\",\n '[attr.data-key]': 'recordKey() ?? null',\n '[attr.aria-labelledby]': 'labelledBy()',\n '[attr.aria-label]': 'label()',\n },\n})\nexport class SlDetailPanel {\n readonly layout = input<DetailPanelLayout | undefined>(undefined);\n readonly aside = input<DetailPanelAside | undefined>(undefined);\n readonly level = input<DetailPanelLevel | undefined>(undefined);\n readonly size = input<DetailPanelSize | undefined>(undefined);\n readonly scroll = input<DetailPanelScroll | undefined>(undefined);\n readonly mount = input<DetailPanelMount | undefined>(undefined);\n readonly status = input<DetailPanelStatus>('ready');\n /** The record has not arrived: `aria-busy`, and skeleton lines in every section. */\n readonly loading = input(false, { transform: booleanAttribute });\n /** The identity of the record on screen. */\n readonly recordKey = input<string | number | undefined>(undefined);\n /**\n * Words laid over the catalog of the language in force, key by key: the\n * aside's name (`aside`) and the root's name while loading (`loading`).\n */\n readonly messages = input<PartialMessages<DetailPanelMessages> | undefined>(undefined);\n /** The current section. Two-way, so a template may bind it directly. */\n readonly section = model<string | undefined>(undefined);\n\n /** One output for one move of the current section, carrying the reason and the event. */\n readonly sectionRequest = output<ChangeRequest<string | undefined>>();\n\n private readonly defaults = injectDetailPanelDefaults();\n private readonly native: HTMLElement = inject(ElementRef).nativeElement;\n private readonly writtenLabel = inject(new HostAttributeToken('aria-label'), { optional: true });\n private readonly writtenLabelledBy = inject(new HostAttributeToken('aria-labelledby'), {\n optional: true,\n });\n readonly id = inject(SlDetailPanelIdFactory).next();\n\n /** Every section declared inside the panel, in declaration order. */\n readonly sections = contentChildren(SlDetailPanelSection, { descendants: true });\n /** The strip's ids for a section, once the strip has attached. */\n readonly identify = signal<((name: string) => DetailPanelIdentity) | undefined>(undefined);\n private readonly headingId = signal<string | undefined>(undefined);\n private readonly seen = new Set<string>();\n\n readonly resolvedLayout = computed(() => this.layout() ?? this.defaults.layout);\n readonly resolvedAside = computed(() => this.aside() ?? this.defaults.aside);\n readonly resolvedLevel = computed(() => this.level() ?? this.defaults.level);\n readonly resolvedSize = computed(() => this.size() ?? this.defaults.size);\n readonly resolvedScroll = computed(() => this.scroll() ?? this.defaults.scroll);\n readonly resolvedMount = computed(() => this.mount() ?? this.defaults.mount);\n /** The family's words in the language in force, with this panel's `messages` laid over them. */\n readonly t = injectMessages(detailPanelMessages, this.messages);\n /** The current section: the model, or under tabs the first section when nothing is named. */\n readonly current = computed(() => {\n const named = this.section();\n if (named !== undefined) return named;\n return this.resolvedLayout() === 'tabs' ? this.sections()[0]?.name() : undefined;\n });\n\n protected readonly labelledBy = computed(() => {\n if (this.writtenLabel !== null || this.writtenLabelledBy !== null)\n return this.writtenLabelledBy;\n return this.headingId() ?? null;\n });\n protected readonly label = computed(() => {\n if (this.writtenLabel !== null) return this.writtenLabel;\n if (this.writtenLabelledBy !== null || this.headingId() !== undefined) return null;\n return this.loading() ? this.t('loading') : null;\n });\n\n constructor() {\n effect(() => {\n const current = this.current();\n if (current !== undefined) this.seen.add(current);\n });\n\n /**\n * The root is named by the page-header's heading, which is in the DOM\n * once the consumer's header has rendered. Read there rather than\n * passed, because the heading's id is the page-header's to give.\n */\n afterRenderEffect(() => {\n this.loading();\n this.recordKey();\n const heading = this.native.querySelector<HTMLElement>(HEADING_SELECTOR);\n untracked(() => this.headingId.set(heading?.id || undefined));\n });\n\n /**\n * Focus follows the record. The first key is the record the panel\n * opened on and moves nothing; a later one is the previous or next\n * control, or the application, changing what is under the reader.\n */\n let seenKey = untracked(() => this.recordKey());\n afterRenderEffect(() => {\n const key = this.recordKey();\n if (key === seenKey) return;\n seenKey = key;\n const active = this.native.ownerDocument.activeElement;\n if (active === null || !this.native.contains(active)) return;\n this.scroller()?.scrollTo({ top: 0 });\n this.focus();\n });\n\n /**\n * Under `stacked` the current section is a place, so a value that\n * arrived is scrolled under the chrome; the section's\n * `scroll-margin-block-start` reads the chrome's height.\n */\n let scrolledTo: string | undefined;\n afterRenderEffect(() => {\n const current = this.current();\n if (this.resolvedLayout() !== 'stacked' || current === undefined) return;\n if (scrolledTo === current) return;\n scrolledTo = current;\n this.native\n .querySelector<HTMLElement>(`[data-part=\"section\"][data-name=\"${CSS.escape(current)}\"]`)\n ?.scrollIntoView({ block: 'start' });\n });\n }\n\n /** Whether a section has been current at least once, which is what `lazy` reads. */\n hasSeen(name: string): boolean {\n return this.seen.has(name);\n }\n\n /** Asks to move the current section, carrying the reason and the originating event. */\n select(next: string, reason: DetailPanelSectionReason, source?: Event) {\n if (next === this.current()) return;\n let cancelled = false;\n const state = createControllable<string | undefined>({\n initial: this.current(),\n onRequest: (request) => {\n this.sectionRequest.emit(request);\n cancelled = request.cancelled;\n },\n });\n const moved = state.request(next, reason, source);\n if (cancelled || !moved) return;\n this.section.set(next);\n }\n\n /** Scrolls a stacked section under the chrome, or shows a tabbed one, with the reason `programmatic`. */\n scrollToSection(name: string) {\n this.select(name, 'programmatic');\n }\n\n /** Puts focus on the page-header's heading, which is where a new record starts. */\n focus() {\n const heading = this.native.querySelector<HTMLElement>(HEADING_SELECTOR);\n if (heading === null) return;\n if (!heading.hasAttribute('tabindex')) heading.setAttribute('tabindex', '-1');\n heading.focus({ preventScroll: true });\n }\n\n private scroller(): HTMLElement | null {\n return this.resolvedScroll() === 'self' ? this.native : findScrollParent(this.native);\n }\n}\n","import type { ChangeRequest } from '@slotted/core/state';\nimport { SlBadge } from '@slotted/angular/badge';\nimport { SlContainer } from '@slotted/angular/container';\nimport { SlPage } from '@slotted/angular/page';\nimport { SlPageHeaderTabs } from '@slotted/angular/page-header';\nimport {\n SlSection,\n SlSectionActions,\n SlSectionBody,\n SlSectionHeader,\n SlSectionHeading,\n SlSectionTitle,\n} from '@slotted/angular/section';\nimport type { SectionLevel } from '@slotted/angular/section';\nimport { SlSkeletonText } from '@slotted/angular/skeleton';\nimport { SlTab, SlTabList, SlTabs } from '@slotted/angular/tabs';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n Directive,\n effect,\n HostAttributeToken,\n inject,\n input,\n untracked,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { SlDetailPanel } from './detail-panel';\nimport type { DetailPanelSectionReason } from './detail-panel-defaults';\n\n/** How many placeholder lines a waiting section and a waiting aside draw. */\nconst SECTION_SKELETON_LINES = 3;\nconst ASIDE_SKELETON_LINES = 4;\n\n/** An alert about the record, above the columns. */\n@Directive({ selector: '[slDetailPanelBanner]', standalone: true, host: { 'data-part': 'banner' } })\nexport class SlDetailPanelBanner {}\n\n/** What stands in place of the columns when the record is not there: a result-state. */\n@Directive({\n selector: '[slDetailPanelMessage]',\n standalone: true,\n host: { 'data-part': 'message' },\n})\nexport class SlDetailPanelMessage {}\n\n/**\n * The metadata column beside the sections. An `aside` element, named by\n * the `aside` message unless the consumer names it; while the panel is loading\n * it shows four short skeleton lines in place of its content.\n */\n@Component({\n selector: 'aside[slDetailPanelAside]',\n standalone: true,\n exportAs: 'slDetailPanelAside',\n imports: [SlSkeletonText],\n template: `@if (panel.loading()) {\n <span slSkeletonText [lines]=\"lines\" inlineSize=\"60%\"></span>\n } @else {\n <ng-content />\n }`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-part': 'aside',\n '[attr.aria-label]': 'name()',\n },\n})\nexport class SlDetailPanelAside {\n protected readonly panel = inject(SlDetailPanel);\n protected readonly lines = ASIDE_SKELETON_LINES;\n private readonly written = inject(new HostAttributeToken('aria-label'), { optional: true });\n protected readonly name = computed(() => this.written ?? this.panel.t('aside'));\n}\n\n/**\n * The row that stays at the bottom: an action-bar, aligned with the column\n * above through a container at the page's width and inset.\n */\n@Component({\n selector: 'footer[slDetailPanelFooter]',\n standalone: true,\n exportAs: 'slDetailPanelFooter',\n imports: [SlContainer],\n template: `<div slContainer [size]=\"page?.resolvedWidth()\" [inset]=\"page?.resolvedInset()\">\n <ng-content />\n </div>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { 'data-part': 'footer' },\n})\nexport class SlDetailPanelFooter {\n protected readonly page = inject(SlPage, { optional: true });\n}\n\n/**\n * The column under the header: a container at the page's width and inset,\n * so the columns align with the header's own; the banner above, the two\n * columns — the sections and the aside — and, when the record is not\n * there, the message in their place.\n *\n * The sections are the panel's `ng-template[slDetailPanelSection]`s,\n * rendered here in either shape: a tabpanel wired to the strip's tab, or a\n * `[slSection]` at the rank below the panel's. Rendering a template is what\n * lets `mount` and `loading` decide whether the consumer's view exists.\n */\n@Component({\n selector: '[slDetailPanelBody]',\n standalone: true,\n exportAs: 'slDetailPanelBody',\n imports: [\n NgTemplateOutlet,\n SlBadge,\n SlContainer,\n SlSection,\n SlSectionActions,\n SlSectionBody,\n SlSectionHeader,\n SlSectionHeading,\n SlSectionTitle,\n SlSkeletonText,\n ],\n template: `<div slContainer [size]=\"page?.resolvedWidth()\" [inset]=\"page?.resolvedInset()\">\n <ng-content select=\"[slDetailPanelBanner]\" />\n @if (panel.status() === 'ready') {\n <div data-part=\"columns\">\n <div data-part=\"main\">\n @for (section of panel.sections(); track section.name()) {\n @if (tabbed()) {\n <div\n data-part=\"section\"\n role=\"tabpanel\"\n tabindex=\"0\"\n [attr.id]=\"identity(section.name())?.panelId\"\n [attr.aria-labelledby]=\"identity(section.name())?.tabId\"\n [attr.data-name]=\"section.name()\"\n [attr.data-current]=\"panel.current() === section.name() ? '' : null\"\n [hidden]=\"panel.current() !== section.name()\"\n >\n @if (section.actions(); as actions) {\n <div data-part=\"section-actions\">\n <ng-container *ngTemplateOutlet=\"actions\" />\n </div>\n }\n @if (present(section.name())) {\n @if (panel.loading()) {\n <span slSkeletonText [lines]=\"lines\"></span>\n } @else {\n <ng-container *ngTemplateOutlet=\"section.template\" />\n }\n }\n </div>\n } @else {\n <div\n data-part=\"section\"\n [attr.data-name]=\"section.name()\"\n [attr.data-current]=\"panel.current() === section.name() ? '' : null\"\n >\n <section slSection [level]=\"sectionLevel()\" [size]=\"panel.resolvedSize()\">\n <div slSectionHeader>\n <div slSectionTitle>\n <div slSectionHeading>\n {{ section.label() }}&ngsp;\n @if (section.count() !== undefined) {\n <span\n slBadge\n [count]=\"section.count()\"\n shape=\"pill\"\n size=\"sm\"\n tone=\"secondary\"\n variant=\"soft\"\n ></span>\n }\n </div>\n </div>\n @if (section.actions(); as actions) {\n <div slSectionActions>\n <ng-container *ngTemplateOutlet=\"actions\" />\n </div>\n }\n </div>\n <div slSectionBody>\n @if (panel.loading()) {\n <span slSkeletonText [lines]=\"lines\"></span>\n } @else {\n <ng-container *ngTemplateOutlet=\"section.template\" />\n }\n </div>\n </section>\n </div>\n }\n }\n </div>\n @if (panel.resolvedAside() !== 'none' && aside() !== undefined) {\n <ng-content select=\"aside[slDetailPanelAside]\" />\n }\n </div>\n } @else {\n <ng-content select=\"[slDetailPanelMessage]\" />\n }\n </div>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { 'data-part': 'body' },\n})\nexport class SlDetailPanelBody {\n protected readonly panel = inject(SlDetailPanel);\n protected readonly page = inject(SlPage, { optional: true });\n protected readonly aside = contentChild(SlDetailPanelAside);\n protected readonly lines = SECTION_SKELETON_LINES;\n\n protected readonly tabbed = computed(() => this.panel.resolvedLayout() === 'tabs');\n protected readonly sectionLevel = computed<SectionLevel>(\n () => String(Math.min(Number(this.panel.resolvedLevel()) + 1, 6)) as SectionLevel,\n );\n\n protected identity(name: string) {\n return this.panel.identify()?.(name);\n }\n\n /** Whether a tabbed section's content exists, by the mount axis. */\n protected present(name: string): boolean {\n const mount = this.panel.resolvedMount();\n if (mount === 'eager') return true;\n if (this.panel.current() === name) return true;\n return mount === 'lazy' && this.panel.hasSeen(name);\n }\n}\n\n/**\n * The strip: a `[slTabs]` list rendered from the panel's sections, placed\n * on the element in the page-header's tabs slot — `slPageHeaderTabs` is a\n * host directive, so the element is that slot. It holds the list alone; the\n * panels are the body's sections, wired by the ids this strip hands the\n * panel. A toolbar beside the list is the consumer's own `[slTabActions]`\n * element, projected into the strip. Under `layout=\"stacked\"` it renders\n * nothing.\n */\n@Component({\n selector: '[slDetailPanelTabs]',\n standalone: true,\n exportAs: 'slDetailPanelTabs',\n hostDirectives: [SlPageHeaderTabs],\n imports: [SlBadge, SlTab, SlTabList, SlTabs],\n template: `@if (panel.resolvedLayout() === 'tabs') {\n <div slTabs track=\"none\" [value]=\"panel.current()\" (valueChange)=\"forward($event)\">\n <div slTabList [attr.aria-label]=\"label()\">\n @for (section of panel.sections(); track section.name()) {\n <div slTab [value]=\"section.name()\" [disabled]=\"section.disabled()\">\n {{ section.label() }}&ngsp;\n @if (section.count() !== undefined) {\n <span\n slBadge\n [count]=\"section.count()\"\n shape=\"pill\"\n size=\"sm\"\n tone=\"secondary\"\n variant=\"soft\"\n ></span>\n }\n </div>\n }\n </div>\n <ng-content select=\"[slTabActions]\" />\n </div>\n }`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class SlDetailPanelTabs {\n /** The list's accessible name. */\n readonly label = input.required<string>();\n\n protected readonly panel = inject(SlDetailPanel);\n private readonly tabs = viewChild(SlTabs);\n\n constructor() {\n /* The strip hands the panel its ids, so the sections can be wired to the tabs. */\n effect((onCleanup) => {\n const tabs = this.tabs();\n untracked(() =>\n this.panel.identify.set(tabs === undefined ? undefined : (name) => tabs.identify(name)),\n );\n onCleanup(() => this.panel.identify.set(undefined));\n });\n }\n\n protected forward(request: ChangeRequest<string | undefined>) {\n if (request.value === undefined) return;\n this.panel.select(\n request.value,\n request.reason as DetailPanelSectionReason,\n request.source as Event | undefined,\n );\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"slotted-angular-detail-panel.mjs","sources":["../../detail-panel/src/detail-panel-defaults.ts","../../detail-panel/src/detail-panel.ts","../../detail-panel/src/detail-panel-parts.ts","../../detail-panel/src/slotted-angular-detail-panel.ts"],"sourcesContent":["import { inject, Injectable, InjectionToken } from '@angular/core';\n\n/** Every section in the flow with a heading each, or a strip with one section shown. */\nexport type DetailPanelLayout = 'stacked' | 'tabs';\n\n/** Which side the aside column takes above 600 pixels; `none` when the consumer renders no aside. */\nexport type DetailPanelAside = 'end' | 'start' | 'none';\n\n/** The heading rank the page-header defaults to. Stacked sections take the rank below. */\nexport type DetailPanelLevel = '1' | '2' | '3';\n\n/** The page-header's size default, the sections' size, the body's gap and inset. */\nexport type DetailPanelSize = 'sm' | 'md' | 'lg';\n\n/** Who scrolls: the host, or the root itself. */\nexport type DetailPanelScroll = 'ancestor' | 'self';\n\n/** Under `tabs`, when a section's content exists. Inert under `stacked`. */\nexport type DetailPanelMount = 'active' | 'lazy' | 'eager';\n\n/** Whether the record is there. Under either failure the columns give way to the message. */\nexport type DetailPanelStatus = 'ready' | 'not-found' | 'error';\n\n/** Why the current section moved. */\nexport type DetailPanelSectionReason = 'pointer' | 'keyboard' | 'programmatic';\n\nexport interface DetailPanelDefaults {\n aside: DetailPanelAside;\n layout: DetailPanelLayout;\n level: DetailPanelLevel;\n mount: DetailPanelMount;\n scroll: DetailPanelScroll;\n size: DetailPanelSize;\n}\n\nconst FALLBACK: DetailPanelDefaults = {\n aside: 'end',\n layout: 'stacked',\n level: '2',\n mount: 'active',\n scroll: 'ancestor',\n size: 'md',\n};\n\nexport const DETAIL_PANEL_DEFAULTS = new InjectionToken<DetailPanelDefaults>(\n 'slotted detail-panel defaults',\n { providedIn: 'root', factory: () => FALLBACK },\n);\n\n/**\n * An application decides once how its records read — stacked or tabbed, the\n * aside's side, the rank, the size, who scrolls — rather than repeating them\n * on every screen. A panel that states any of them itself still wins. Its\n * words come from the language in force (`provideSlotted`).\n */\nexport function provideDetailPanelDefaults(defaults: Partial<DetailPanelDefaults>) {\n return {\n provide: DETAIL_PANEL_DEFAULTS,\n useFactory: (): DetailPanelDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\nexport function injectDetailPanelDefaults(): DetailPanelDefaults {\n return inject(DETAIL_PANEL_DEFAULTS);\n}\n\n@Injectable({ providedIn: 'root' })\nexport class SlDetailPanelIdFactory {\n private count = 0;\n\n next() {\n this.count += 1;\n return `slotted-detail-panel-${this.count}`;\n }\n}\n","import { createControllable } from '@slotted/core/state';\nimport type { ChangeRequest } from '@slotted/core/state';\nimport { findScrollParent } from '@slotted/core/sticky-header';\nimport { injectMessages } from '@slotted/angular/i18n';\nimport {\n detailPanelMessages,\n type DetailPanelMessages,\n type PartialMessages,\n} from '@slotted/core/i18n';\nimport { PAGE_HEADER_DEFAULTS } from '@slotted/angular/page-header';\nimport type { PageHeaderDefaults } from '@slotted/angular/page-header';\nimport {\n afterRenderEffect,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n Directive,\n effect,\n ElementRef,\n HostAttributeToken,\n inject,\n input,\n model,\n output,\n signal,\n TemplateRef,\n untracked,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { injectDetailPanelDefaults, SlDetailPanelIdFactory } from './detail-panel-defaults';\nimport type {\n DetailPanelAside,\n DetailPanelLayout,\n DetailPanelLevel,\n DetailPanelMount,\n DetailPanelScroll,\n DetailPanelSectionReason,\n DetailPanelSize,\n DetailPanelStatus,\n} from './detail-panel-defaults';\n\nexport type {\n DetailPanelAside,\n DetailPanelDefaults,\n DetailPanelLayout,\n DetailPanelLevel,\n DetailPanelMount,\n DetailPanelScroll,\n DetailPanelSectionReason,\n DetailPanelSize,\n DetailPanelStatus,\n} from './detail-panel-defaults';\n\n/** The ids the strip's tabs family returns for one section name. */\nexport interface DetailPanelIdentity {\n panelId: string;\n tabId: string;\n}\n\n/** The selector for the heading the panel is named by and focuses: the page-header's. */\nconst HEADING_SELECTOR = ':scope > [data-ui=\"page-header\"] [data-part=\"heading\"]';\n\n/**\n * One named unit of content, declared as a template so the panel decides\n * when it exists: `mount` under `tabs`, and `loading` under both layouts.\n *\n * ```html\n * <ng-template slDetailPanelSection name=\"linhas\" label=\"Linhas\" [count]=\"4\">\n * …\n * </ng-template>\n * ```\n */\n@Directive({\n selector: 'ng-template[slDetailPanelSection]',\n standalone: true,\n exportAs: 'slDetailPanelSection',\n})\nexport class SlDetailPanelSection {\n /** The value the section is named by in `section` and the URL. */\n readonly name = input.required<string>();\n /** The tab's words, and the stacked heading. */\n readonly label = input.required<string>();\n /** Drawn in the tab, or as a badge after the stacked heading. */\n readonly count = input<number | undefined>(undefined);\n /** Takes the tab out of the strip's sequence. Inert under `stacked`. */\n readonly disabled = input(false, { transform: booleanAttribute });\n /** The section's own controls, as a template: in the stacked heading's actions column, or in a row above a tabbed section. */\n readonly actions = input<TemplateRef<unknown> | undefined>(undefined);\n\n readonly template = inject(TemplateRef<unknown>);\n}\n\n/**\n * One record on screen: what identifies it, what state it is in, what can be\n * done to it, and what happened to it.\n *\n * **The top is a `[slPageHeader]` the consumer writes**, the root's first\n * child. The panel provides `PAGE_HEADER_DEFAULTS` for its subtree from its\n * own `level` and `size`, so a header that states neither takes the panel's;\n * one that does still wins.\n *\n * **One value moves: the current section.** `section` is a model; every move\n * is first a request on `sectionRequest`, carrying the reason and `cancel()`.\n * Under `layout=\"tabs\"` the strip (`[slDetailPanelTabs]`, placed in the\n * header's tabs slot) asks with `pointer` or `keyboard`; under `stacked` the\n * value arrives as `programmatic` and the named section is scrolled under the\n * chrome and marked `data-current`.\n *\n * **Focus follows the record.** When `recordKey` changes while focus is\n * inside the root, the heading takes focus and the scroller returns to its\n * start.\n */\n@Component({\n selector: '[slDetailPanel]',\n standalone: true,\n exportAs: 'slDetailPanel',\n template: '<ng-content />',\n styleUrl: '../../../styles/src/detail-panel/detail-panel.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: PAGE_HEADER_DEFAULTS,\n useFactory: (): PageHeaderDefaults => {\n const inherited = inject(PAGE_HEADER_DEFAULTS, { skipSelf: true });\n const panel = inject(SlDetailPanel);\n /* Getters over signals: a computed in the page-header that reads\n `defaults.level` tracks the panel's own resolved level. */\n return {\n get collapse() {\n return inherited.collapse;\n },\n get level() {\n return panel.resolvedLevel();\n },\n get size() {\n return panel.resolvedSize();\n },\n get variant() {\n return inherited.variant;\n },\n };\n },\n },\n ],\n host: {\n 'data-ui': 'detail-panel',\n 'data-ui-detail-panel': '',\n 'data-part': 'root',\n 'data-part-root': '',\n '[attr.data-layout]': 'resolvedLayout()',\n '[attr.data-aside]': 'resolvedAside()',\n '[attr.data-level]': 'resolvedLevel()',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-scroll]': 'resolvedScroll()',\n '[attr.data-mount]': 'resolvedMount()',\n '[attr.data-status]': 'status()',\n '[attr.data-loading]': \"loading() ? '' : null\",\n '[attr.aria-busy]': \"loading() ? 'true' : null\",\n '[attr.data-key]': 'recordKey() ?? null',\n '[attr.aria-labelledby]': 'labelledBy()',\n '[attr.aria-label]': 'label()',\n },\n})\nexport class SlDetailPanel {\n readonly layout = input<DetailPanelLayout | undefined>(undefined);\n readonly aside = input<DetailPanelAside | undefined>(undefined);\n readonly level = input<DetailPanelLevel | undefined>(undefined);\n readonly size = input<DetailPanelSize | undefined>(undefined);\n readonly scroll = input<DetailPanelScroll | undefined>(undefined);\n readonly mount = input<DetailPanelMount | undefined>(undefined);\n readonly status = input<DetailPanelStatus>('ready');\n /** The record has not arrived: `aria-busy`, and skeleton lines in every section. */\n readonly loading = input(false, { transform: booleanAttribute });\n /** The identity of the record on screen. */\n readonly recordKey = input<string | number | undefined>(undefined);\n /**\n * Words laid over the catalog of the language in force, key by key: the\n * aside's name (`aside`) and the root's name while loading (`loading`).\n */\n readonly messages = input<PartialMessages<DetailPanelMessages> | undefined>(undefined);\n /** The current section. Two-way, so a template may bind it directly. */\n readonly section = model<string | undefined>(undefined);\n\n /** One output for one move of the current section, carrying the reason and the event. */\n readonly sectionRequest = output<ChangeRequest<string | undefined>>();\n\n private readonly defaults = injectDetailPanelDefaults();\n private readonly native: HTMLElement = inject(ElementRef).nativeElement;\n private readonly writtenLabel = inject(new HostAttributeToken('aria-label'), { optional: true });\n private readonly writtenLabelledBy = inject(new HostAttributeToken('aria-labelledby'), {\n optional: true,\n });\n readonly id = inject(SlDetailPanelIdFactory).next();\n\n /** Every section declared inside the panel, in declaration order. */\n readonly sections = contentChildren(SlDetailPanelSection, { descendants: true });\n /** The strip's ids for a section, once the strip has attached. */\n readonly identify = signal<((name: string) => DetailPanelIdentity) | undefined>(undefined);\n private readonly headingId = signal<string | undefined>(undefined);\n private readonly seen = new Set<string>();\n\n readonly resolvedLayout = computed(() => this.layout() ?? this.defaults.layout);\n readonly resolvedAside = computed(() => this.aside() ?? this.defaults.aside);\n readonly resolvedLevel = computed(() => this.level() ?? this.defaults.level);\n readonly resolvedSize = computed(() => this.size() ?? this.defaults.size);\n readonly resolvedScroll = computed(() => this.scroll() ?? this.defaults.scroll);\n readonly resolvedMount = computed(() => this.mount() ?? this.defaults.mount);\n /** The family's words in the language in force, with this panel's `messages` laid over them. */\n readonly t = injectMessages(detailPanelMessages, this.messages);\n /** The current section: the model, or under tabs the first section when nothing is named. */\n readonly current = computed(() => {\n const named = this.section();\n if (named !== undefined) return named;\n return this.resolvedLayout() === 'tabs' ? this.sections()[0]?.name() : undefined;\n });\n\n protected readonly labelledBy = computed(() => {\n if (this.writtenLabel !== null || this.writtenLabelledBy !== null)\n return this.writtenLabelledBy;\n return this.headingId() ?? null;\n });\n protected readonly label = computed(() => {\n if (this.writtenLabel !== null) return this.writtenLabel;\n if (this.writtenLabelledBy !== null || this.headingId() !== undefined) return null;\n return this.loading() ? this.t('loading') : null;\n });\n\n constructor() {\n effect(() => {\n const current = this.current();\n if (current !== undefined) this.seen.add(current);\n });\n\n /**\n * The root is named by the page-header's heading, which is in the DOM\n * once the consumer's header has rendered. Read there rather than\n * passed, because the heading's id is the page-header's to give.\n */\n afterRenderEffect(() => {\n this.loading();\n this.recordKey();\n const heading = this.native.querySelector<HTMLElement>(HEADING_SELECTOR);\n untracked(() => this.headingId.set(heading?.id || undefined));\n });\n\n /**\n * Focus follows the record. The first key is the record the panel\n * opened on and moves nothing; a later one is the previous or next\n * control, or the application, changing what is under the reader.\n */\n let seenKey = untracked(() => this.recordKey());\n afterRenderEffect(() => {\n const key = this.recordKey();\n if (key === seenKey) return;\n seenKey = key;\n const active = this.native.ownerDocument.activeElement;\n if (active === null || !this.native.contains(active)) return;\n this.scroller()?.scrollTo({ top: 0 });\n this.focus();\n });\n\n /**\n * Under `stacked` the current section is a place, so a value that\n * arrived is scrolled under the chrome; the section's\n * `scroll-margin-block-start` reads the chrome's height.\n */\n let scrolledTo: string | undefined;\n afterRenderEffect(() => {\n const current = this.current();\n if (this.resolvedLayout() !== 'stacked' || current === undefined) return;\n if (scrolledTo === current) return;\n scrolledTo = current;\n this.native\n .querySelector<HTMLElement>(`[data-part=\"section\"][data-name=\"${CSS.escape(current)}\"]`)\n ?.scrollIntoView({ block: 'start' });\n });\n }\n\n /** Whether a section has been current at least once, which is what `lazy` reads. */\n hasSeen(name: string): boolean {\n return this.seen.has(name);\n }\n\n /** Asks to move the current section, carrying the reason and the originating event. */\n select(next: string, reason: DetailPanelSectionReason, source?: Event) {\n if (next === this.current()) return;\n let cancelled = false;\n const state = createControllable<string | undefined>({\n initial: this.current(),\n onRequest: (request) => {\n this.sectionRequest.emit(request);\n cancelled = request.cancelled;\n },\n });\n const moved = state.request(next, reason, source);\n if (cancelled || !moved) return;\n this.section.set(next);\n }\n\n /** Scrolls a stacked section under the chrome, or shows a tabbed one, with the reason `programmatic`. */\n scrollToSection(name: string) {\n this.select(name, 'programmatic');\n }\n\n /** Puts focus on the page-header's heading, which is where a new record starts. */\n focus() {\n const heading = this.native.querySelector<HTMLElement>(HEADING_SELECTOR);\n if (heading === null) return;\n if (!heading.hasAttribute('tabindex')) heading.setAttribute('tabindex', '-1');\n heading.focus({ preventScroll: true });\n }\n\n private scroller(): HTMLElement | null {\n return this.resolvedScroll() === 'self' ? this.native : findScrollParent(this.native);\n }\n}\n","import type { ChangeRequest } from '@slotted/core/state';\nimport { SlBadge } from '@slotted/angular/badge';\nimport { SlContainer } from '@slotted/angular/container';\nimport { SlPage } from '@slotted/angular/page';\nimport { SlPageHeaderTabs } from '@slotted/angular/page-header';\nimport {\n SlSection,\n SlSectionActions,\n SlSectionBody,\n SlSectionHeader,\n SlSectionHeading,\n SlSectionTitle,\n} from '@slotted/angular/section';\nimport type { SectionLevel } from '@slotted/angular/section';\nimport { SlSkeletonText } from '@slotted/angular/skeleton';\nimport { SlTab, SlTabList, SlTabs } from '@slotted/angular/tabs';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n Directive,\n effect,\n HostAttributeToken,\n inject,\n input,\n untracked,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { SlDetailPanel } from './detail-panel';\nimport type { DetailPanelSectionReason } from './detail-panel-defaults';\n\n/** How many placeholder lines a waiting section and a waiting aside draw. */\nconst SECTION_SKELETON_LINES = 3;\nconst ASIDE_SKELETON_LINES = 4;\n\n/** An alert about the record, above the columns. */\n@Directive({\n selector: '[slDetailPanelBanner]',\n standalone: true,\n host: { 'data-part': 'banner', 'data-part-banner': '' },\n})\nexport class SlDetailPanelBanner {}\n\n/** What stands in place of the columns when the record is not there: a result-state. */\n@Directive({\n selector: '[slDetailPanelMessage]',\n standalone: true,\n host: { 'data-part': 'message', 'data-part-message': '' },\n})\nexport class SlDetailPanelMessage {}\n\n/**\n * The metadata column beside the sections. An `aside` element, named by\n * the `aside` message unless the consumer names it; while the panel is loading\n * it shows four short skeleton lines in place of its content.\n */\n@Component({\n selector: 'aside[slDetailPanelAside]',\n standalone: true,\n exportAs: 'slDetailPanelAside',\n imports: [SlSkeletonText],\n template: `@if (panel.loading()) {\n <span slSkeletonText [lines]=\"lines\" inlineSize=\"60%\"></span>\n } @else {\n <ng-content />\n }`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-part': 'aside',\n 'data-part-aside': '',\n '[attr.aria-label]': 'name()',\n },\n})\nexport class SlDetailPanelAside {\n protected readonly panel = inject(SlDetailPanel);\n protected readonly lines = ASIDE_SKELETON_LINES;\n private readonly written = inject(new HostAttributeToken('aria-label'), { optional: true });\n protected readonly name = computed(() => this.written ?? this.panel.t('aside'));\n}\n\n/**\n * The row that stays at the bottom: an action-bar, aligned with the column\n * above through a container at the page's width and inset.\n */\n@Component({\n selector: 'footer[slDetailPanelFooter]',\n standalone: true,\n exportAs: 'slDetailPanelFooter',\n imports: [SlContainer],\n template: `<div slContainer [size]=\"page?.resolvedWidth()\" [inset]=\"page?.resolvedInset()\">\n <ng-content />\n </div>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { 'data-part': 'footer', 'data-part-footer': '' },\n})\nexport class SlDetailPanelFooter {\n protected readonly page = inject(SlPage, { optional: true });\n}\n\n/**\n * The column under the header: a container at the page's width and inset,\n * so the columns align with the header's own; the banner above, the two\n * columns — the sections and the aside — and, when the record is not\n * there, the message in their place.\n *\n * The sections are the panel's `ng-template[slDetailPanelSection]`s,\n * rendered here in either shape: a tabpanel wired to the strip's tab, or a\n * `[slSection]` at the rank below the panel's. Rendering a template is what\n * lets `mount` and `loading` decide whether the consumer's view exists.\n */\n@Component({\n selector: '[slDetailPanelBody]',\n standalone: true,\n exportAs: 'slDetailPanelBody',\n imports: [\n NgTemplateOutlet,\n SlBadge,\n SlContainer,\n SlSection,\n SlSectionActions,\n SlSectionBody,\n SlSectionHeader,\n SlSectionHeading,\n SlSectionTitle,\n SlSkeletonText,\n ],\n template: `<div slContainer [size]=\"page?.resolvedWidth()\" [inset]=\"page?.resolvedInset()\">\n <ng-content select=\"[slDetailPanelBanner]\" />\n @if (panel.status() === 'ready') {\n <div data-part=\"columns\" data-part-columns=\"\">\n <div data-part=\"main\" data-part-main=\"\">\n @for (section of panel.sections(); track section.name()) {\n @if (tabbed()) {\n <div\n data-part=\"section\"\n data-part-section=\"\"\n role=\"tabpanel\"\n tabindex=\"0\"\n [attr.id]=\"identity(section.name())?.panelId\"\n [attr.aria-labelledby]=\"identity(section.name())?.tabId\"\n [attr.data-name]=\"section.name()\"\n [attr.data-current]=\"panel.current() === section.name() ? '' : null\"\n [hidden]=\"panel.current() !== section.name()\"\n >\n @if (section.actions(); as actions) {\n <div data-part=\"section-actions\" data-part-section-actions=\"\">\n <ng-container *ngTemplateOutlet=\"actions\" />\n </div>\n }\n @if (present(section.name())) {\n @if (panel.loading()) {\n <span slSkeletonText [lines]=\"lines\"></span>\n } @else {\n <ng-container *ngTemplateOutlet=\"section.template\" />\n }\n }\n </div>\n } @else {\n <div\n data-part=\"section\"\n data-part-section=\"\"\n [attr.data-name]=\"section.name()\"\n [attr.data-current]=\"panel.current() === section.name() ? '' : null\"\n >\n <section slSection [level]=\"sectionLevel()\" [size]=\"panel.resolvedSize()\">\n <div slSectionHeader>\n <div slSectionTitle>\n <div slSectionHeading>\n {{ section.label() }}&ngsp;\n @if (section.count() !== undefined) {\n <span\n slBadge\n [count]=\"section.count()\"\n shape=\"pill\"\n size=\"sm\"\n tone=\"secondary\"\n variant=\"soft\"\n ></span>\n }\n </div>\n </div>\n @if (section.actions(); as actions) {\n <div slSectionActions>\n <ng-container *ngTemplateOutlet=\"actions\" />\n </div>\n }\n </div>\n <div slSectionBody>\n @if (panel.loading()) {\n <span slSkeletonText [lines]=\"lines\"></span>\n } @else {\n <ng-container *ngTemplateOutlet=\"section.template\" />\n }\n </div>\n </section>\n </div>\n }\n }\n </div>\n @if (panel.resolvedAside() !== 'none' && aside() !== undefined) {\n <ng-content select=\"aside[slDetailPanelAside]\" />\n }\n </div>\n } @else {\n <ng-content select=\"[slDetailPanelMessage]\" />\n }\n </div>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { 'data-part': 'body', 'data-part-body': '' },\n})\nexport class SlDetailPanelBody {\n protected readonly panel = inject(SlDetailPanel);\n protected readonly page = inject(SlPage, { optional: true });\n protected readonly aside = contentChild(SlDetailPanelAside);\n protected readonly lines = SECTION_SKELETON_LINES;\n\n protected readonly tabbed = computed(() => this.panel.resolvedLayout() === 'tabs');\n protected readonly sectionLevel = computed<SectionLevel>(\n () => String(Math.min(Number(this.panel.resolvedLevel()) + 1, 6)) as SectionLevel,\n );\n\n protected identity(name: string) {\n return this.panel.identify()?.(name);\n }\n\n /** Whether a tabbed section's content exists, by the mount axis. */\n protected present(name: string): boolean {\n const mount = this.panel.resolvedMount();\n if (mount === 'eager') return true;\n if (this.panel.current() === name) return true;\n return mount === 'lazy' && this.panel.hasSeen(name);\n }\n}\n\n/**\n * The strip: a `[slTabs]` list rendered from the panel's sections, placed\n * on the element in the page-header's tabs slot — `slPageHeaderTabs` is a\n * host directive, so the element is that slot. It holds the list alone; the\n * panels are the body's sections, wired by the ids this strip hands the\n * panel. A toolbar beside the list is the consumer's own `[slTabActions]`\n * element, projected into the strip. Under `layout=\"stacked\"` it renders\n * nothing.\n */\n@Component({\n selector: '[slDetailPanelTabs]',\n standalone: true,\n exportAs: 'slDetailPanelTabs',\n hostDirectives: [SlPageHeaderTabs],\n imports: [SlBadge, SlTab, SlTabList, SlTabs],\n template: `@if (panel.resolvedLayout() === 'tabs') {\n <div slTabs track=\"none\" [value]=\"panel.current()\" (valueChange)=\"forward($event)\">\n <div slTabList [attr.aria-label]=\"label()\">\n @for (section of panel.sections(); track section.name()) {\n <div slTab [value]=\"section.name()\" [disabled]=\"section.disabled()\">\n {{ section.label() }}&ngsp;\n @if (section.count() !== undefined) {\n <span\n slBadge\n [count]=\"section.count()\"\n shape=\"pill\"\n size=\"sm\"\n tone=\"secondary\"\n variant=\"soft\"\n ></span>\n }\n </div>\n }\n </div>\n <ng-content select=\"[slTabActions]\" />\n </div>\n }`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class SlDetailPanelTabs {\n /** The list's accessible name. */\n readonly label = input.required<string>();\n\n protected readonly panel = inject(SlDetailPanel);\n private readonly tabs = viewChild(SlTabs);\n\n constructor() {\n /* The strip hands the panel its ids, so the sections can be wired to the tabs. */\n effect((onCleanup) => {\n const tabs = this.tabs();\n untracked(() =>\n this.panel.identify.set(tabs === undefined ? undefined : (name) => tabs.identify(name)),\n );\n onCleanup(() => this.panel.identify.set(undefined));\n });\n }\n\n protected forward(request: ChangeRequest<string | undefined>) {\n if (request.value === undefined) return;\n this.panel.select(\n request.value,\n request.reason as DetailPanelSectionReason,\n request.source as Event | undefined,\n );\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|