@slotted/angular 0.1.0-beta.1 → 0.1.0-beta.11
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/action-bar.json +4 -4
- package/docs/action-bar.md +3 -3
- 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 +3 -2
- 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/command-palette.json +1 -0
- package/docs/command-palette.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 +45 -7
- package/docs/data-grid.md +3 -1
- package/docs/data-grid.props.md +7 -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/detail-panel.json +4 -2
- package/docs/detail-panel.md +8 -3
- package/docs/dialog.examples.md +158 -136
- package/docs/dialog.json +36 -11
- package/docs/dialog.md +4 -2
- package/docs/dialog.props.md +1 -1
- package/docs/drawer.json +11 -4
- package/docs/drawer.md +4 -3
- 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 +3 -2
- 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 +130 -0
- package/docs/guidelines/layout-alignment.md +105 -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 +22 -5
- package/docs/page-header.md +6 -4
- package/docs/page.json +2 -0
- package/docs/page.md +2 -1
- 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 +6 -6
- package/docs/section.json +28 -16
- package/docs/section.md +12 -10
- 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 +103 -0
- package/docs/skills/index.md +9 -0
- package/docs/skills/review-screen/SKILL.md +79 -0
- package/docs/skills/theme-app/SKILL.md +98 -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 +8 -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/toolbar.json +1 -1
- package/docs/toolbar.md +1 -1
- package/docs/tour.json +1 -1
- package/docs/typography.json +4 -2
- package/docs/typography.md +5 -5
- package/fesm2022/slotted-angular-accordion.mjs +4 -2
- package/fesm2022/slotted-angular-accordion.mjs.map +1 -1
- package/fesm2022/slotted-angular-action-bar.mjs +27 -12
- package/fesm2022/slotted-angular-action-bar.mjs.map +1 -1
- package/fesm2022/slotted-angular-action-sheet.mjs +48 -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 +120 -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 +180 -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 +118 -39
- package/fesm2022/slotted-angular-combobox.mjs.map +1 -1
- package/fesm2022/slotted-angular-command-palette.mjs +162 -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 +480 -129
- 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 +48 -30
- 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 +91 -37
- package/fesm2022/slotted-angular-drawer.mjs.map +1 -1
- package/fesm2022/slotted-angular-entity-picker.mjs +474 -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 +118 -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 +175 -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 +34 -15
- package/fesm2022/slotted-angular-message-scroller.mjs.map +1 -1
- package/fesm2022/slotted-angular-message.mjs +119 -51
- package/fesm2022/slotted-angular-message.mjs.map +1 -1
- package/fesm2022/slotted-angular-multi-select.mjs +195 -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 +90 -48
- 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 +57 -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 +190 -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 +37 -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 +55 -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 +147 -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 +27 -12
- 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 +80 -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 +2 -0
- 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 +72 -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 +12 -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 +15 -6
- 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 +2 -0
- 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,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, inject, input, ElementRef, HostAttributeToken, signal, computed, DestroyRef, afterNextRender, ViewEncapsulation, ChangeDetectionStrategy, Component, booleanAttribute, numberAttribute } from '@angular/core';
|
|
2
|
+
import { InjectionToken, inject, input, ElementRef, HostAttributeToken, signal, computed, linkedSignal, DestroyRef, afterNextRender, ViewEncapsulation, ChangeDetectionStrategy, Component, booleanAttribute, numberAttribute } from '@angular/core';
|
|
3
3
|
import { injectMessages, injectLocale } from '@slotted/angular/i18n';
|
|
4
4
|
import { sparklineMessages } from '@slotted/core/i18n';
|
|
5
5
|
import { SPARKLINE_STEPS, layoutSparkline, sparklineInset, describeSparkline, observeSparklineBox } from '@slotted/core/sparkline';
|
|
@@ -98,6 +98,16 @@ class SlSparkline {
|
|
|
98
98
|
...(ngDevMode ? [{ debugName: "height" }] : /* istanbul ignore next */ []));
|
|
99
99
|
viewBox = computed(() => `0 0 ${this.width()} ${this.height()}`, /* @ts-ignore */
|
|
100
100
|
...(ngDevMode ? [{ debugName: "viewBox" }] : /* istanbul ignore next */ []));
|
|
101
|
+
/**
|
|
102
|
+
* Only a change of `data` animates the marks. A box that settles after the
|
|
103
|
+
* first render — a table cell sizing its column — redraws at once: a path
|
|
104
|
+
* that eased to the new width read as the series growing.
|
|
105
|
+
*/
|
|
106
|
+
animate = linkedSignal({ ...(ngDevMode ? { debugName: "animate" } : /* istanbul ignore next */ {}), source: () => ({ data: this.data(), width: this.width(), height: this.height() }),
|
|
107
|
+
computation: (now, previous) => previous !== undefined &&
|
|
108
|
+
previous.source.data !== now.data &&
|
|
109
|
+
previous.source.width === now.width &&
|
|
110
|
+
previous.source.height === now.height });
|
|
101
111
|
layout = computed(() => layoutSparkline({
|
|
102
112
|
data: this.data(),
|
|
103
113
|
width: this.width(),
|
|
@@ -143,25 +153,32 @@ class SlSparkline {
|
|
|
143
153
|
});
|
|
144
154
|
}
|
|
145
155
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlSparkline, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
146
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: SlSparkline, isStandalone: true, selector: "[slSparkline]", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, curve: { classPropertyName: "curve", publicName: "curve", isSignal: true, isRequired: false, transformFunction: null }, area: { classPropertyName: "area", publicName: "area", isSignal: true, isRequired: false, transformFunction: null }, marker: { classPropertyName: "marker", publicName: "marker", isSignal: true, isRequired: false, transformFunction: null }, reference: { classPropertyName: "reference", publicName: "reference", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, tone: { classPropertyName: "tone", publicName: "tone", isSignal: true, isRequired: false, transformFunction: null }, series: { classPropertyName: "series", publicName: "series", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, formatOptions: { classPropertyName: "formatOptions", publicName: "formatOptions", isSignal: true, isRequired: false, transformFunction: null }, valueFormatter: { classPropertyName: "valueFormatter", publicName: "valueFormatter", isSignal: true, isRequired: false, transformFunction: null }, locale: { classPropertyName: "locale", publicName: "locale", isSignal: true, isRequired: false, transformFunction: null }, messages: { classPropertyName: "messages", publicName: "messages", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-ui": "sparkline", "data-part": "root", "role": "img" }, properties: { "attr.aria-label": "name()", "attr.data-type": "type()", "attr.data-size": "size()", "attr.data-curve": "resolvedCurve()", "attr.data-tone": "tone() ?? null", "attr.data-series": "series() ?? null" } }, exportAs: ["slSparkline"], ngImport: i0, template: `<svg
|
|
156
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: SlSparkline, isStandalone: true, selector: "[slSparkline]", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, curve: { classPropertyName: "curve", publicName: "curve", isSignal: true, isRequired: false, transformFunction: null }, area: { classPropertyName: "area", publicName: "area", isSignal: true, isRequired: false, transformFunction: null }, marker: { classPropertyName: "marker", publicName: "marker", isSignal: true, isRequired: false, transformFunction: null }, reference: { classPropertyName: "reference", publicName: "reference", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, tone: { classPropertyName: "tone", publicName: "tone", isSignal: true, isRequired: false, transformFunction: null }, series: { classPropertyName: "series", publicName: "series", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, formatOptions: { classPropertyName: "formatOptions", publicName: "formatOptions", isSignal: true, isRequired: false, transformFunction: null }, valueFormatter: { classPropertyName: "valueFormatter", publicName: "valueFormatter", isSignal: true, isRequired: false, transformFunction: null }, locale: { classPropertyName: "locale", publicName: "locale", isSignal: true, isRequired: false, transformFunction: null }, messages: { classPropertyName: "messages", publicName: "messages", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-ui": "sparkline", "data-ui-sparkline": "", "data-part": "root", "data-part-root": "", "role": "img" }, properties: { "attr.aria-label": "name()", "attr.data-type": "type()", "attr.data-size": "size()", "attr.data-curve": "resolvedCurve()", "attr.data-tone": "tone() ?? null", "attr.data-series": "series() ?? null", "attr.data-animate": "animate() ? '' : null" } }, exportAs: ["slSparkline"], ngImport: i0, template: `<svg
|
|
147
157
|
data-part="plot"
|
|
158
|
+
data-part-plot=""
|
|
148
159
|
aria-hidden="true"
|
|
149
160
|
focusable="false"
|
|
150
161
|
preserveAspectRatio="none"
|
|
151
162
|
[attr.viewBox]="viewBox()"
|
|
152
163
|
>
|
|
153
164
|
@if (layout().area) {
|
|
154
|
-
<path data-part="area" [attr.d]="layout().area" />
|
|
165
|
+
<path data-part="area" data-part-area="" [attr.d]="layout().area" />
|
|
155
166
|
}
|
|
156
167
|
@if (layout().line) {
|
|
157
|
-
<path data-part="line" [attr.d]="layout().line" />
|
|
168
|
+
<path data-part="line" data-part-line="" [attr.d]="layout().line" />
|
|
158
169
|
}
|
|
159
170
|
@for (bar of layout().bars; track bar.index; let last = $last) {
|
|
160
|
-
<path
|
|
171
|
+
<path
|
|
172
|
+
data-part="bar"
|
|
173
|
+
data-part-bar=""
|
|
174
|
+
[attr.data-current]="last ? '' : null"
|
|
175
|
+
[attr.d]="bar.path"
|
|
176
|
+
/>
|
|
161
177
|
}
|
|
162
178
|
@if (layout().reference !== null) {
|
|
163
179
|
<line
|
|
164
180
|
data-part="reference"
|
|
181
|
+
data-part-reference=""
|
|
165
182
|
x1="0"
|
|
166
183
|
[attr.x2]="width()"
|
|
167
184
|
[attr.y1]="layout().reference"
|
|
@@ -169,32 +186,39 @@ class SlSparkline {
|
|
|
169
186
|
/>
|
|
170
187
|
}
|
|
171
188
|
@if (markerPath()) {
|
|
172
|
-
<path data-part="ring" [attr.d]="markerPath()" />
|
|
173
|
-
<path data-part="marker" [attr.d]="markerPath()" />
|
|
189
|
+
<path data-part="ring" data-part-ring="" [attr.d]="markerPath()" />
|
|
190
|
+
<path data-part="marker" data-part-marker="" [attr.d]="markerPath()" />
|
|
174
191
|
}
|
|
175
|
-
</svg>`, isInline: true, styles: ["@layer slotted.components{[data-ui
|
|
192
|
+
</svg>`, isInline: true, styles: ["@layer slotted.components{[data-ui-sparkline]{--_size: var(--slotted-sparkline-block-size, var(--slotted-space-9, 2rem));--_stroke: var(--slotted-sparkline-line-width, var(--slotted-border-width-thick, 2px));--_marker: var(--slotted-sparkline-marker-size, var(--slotted-space-3, .375rem));--_ring: var(--slotted-sparkline-ring-width, var(--slotted-border-width-thick, 2px));--_ring-color: var(--slotted-sparkline-ring-color, var(--slotted-surface-raised, Canvas));--_area-opacity: var(--slotted-sparkline-area-opacity, .18);--_bar-share: var(--slotted-sparkline-bar-share, 62%);--_bar-dim: color-mix( in oklab, var(--_color) var(--_bar-share), var(--slotted-border-strong, ButtonBorder) );--_reference-color: var( --slotted-sparkline-reference-color, var(--slotted-border-strong, ButtonBorder) );--_color: var(--slotted-sparkline-color, var(--slotted-data-1));block-size:var(--_size);box-sizing:border-box;display:inline-block;inline-size:100%;line-height:0;min-inline-size:var(--slotted-sparkline-min-inline-size, 6rem);vertical-align:middle}[data-ui-sparkline][data-size=sm]{--_size: var(--slotted-sparkline-block-size-sm, var(--slotted-space-7, 1.25rem));--_stroke: var(--slotted-sparkline-line-width-sm, var(--slotted-border-width-medium, 1.5px));--_marker: var(--slotted-sparkline-marker-size-sm, var(--slotted-space-2, .25rem));--_ring: var(--slotted-sparkline-ring-width-sm, var(--slotted-border-width-medium, 1.5px))}[data-ui-sparkline][data-size=lg]{--_size: var(--slotted-sparkline-block-size-lg, var(--slotted-space-11, 3rem));--_marker: var(--slotted-sparkline-marker-size-lg, var(--slotted-space-4, .5rem))}[data-ui-sparkline][data-series=\"1\"]{--_color: var(--slotted-data-1)}[data-ui-sparkline][data-series=\"2\"]{--_color: var(--slotted-data-2)}[data-ui-sparkline][data-series=\"3\"]{--_color: var(--slotted-data-3)}[data-ui-sparkline][data-series=\"4\"]{--_color: var(--slotted-data-4)}[data-ui-sparkline][data-series=\"5\"]{--_color: var(--slotted-data-5)}[data-ui-sparkline][data-series=\"6\"]{--_color: var(--slotted-data-6)}[data-ui-sparkline][data-series=\"7\"]{--_color: var(--slotted-data-7)}[data-ui-sparkline][data-series=\"8\"]{--_color: var(--slotted-data-8)}[data-ui-sparkline][data-tone=neutral]{--_color: var(--slotted-text-muted, GrayText)}[data-ui-sparkline][data-tone=accent]{--_color: var(--slotted-tone-accent-text)}[data-ui-sparkline][data-tone=secondary]{--_color: var(--slotted-tone-secondary-text)}[data-ui-sparkline][data-tone=success]{--_color: var(--slotted-tone-success-text)}[data-ui-sparkline][data-tone=info]{--_color: var(--slotted-tone-info-text)}[data-ui-sparkline][data-tone=warning]{--_color: var(--slotted-tone-warning-text)}[data-ui-sparkline][data-tone=danger]{--_color: var(--slotted-tone-danger-text)}[data-ui-sparkline] [data-part-plot]{block-size:100%;display:block;inline-size:100%;overflow:visible}[data-ui-sparkline] [data-part-area]{fill:var(--_color);fill-opacity:var(--_area-opacity);-webkit-mask-image:linear-gradient(to bottom,black,transparent);mask-image:linear-gradient(to bottom,black,transparent);stroke:none}[data-ui-sparkline] [data-part-line]{fill:none;stroke:var(--_color);stroke-linecap:round;stroke-linejoin:round;stroke-width:var(--_stroke);vector-effect:non-scaling-stroke}[data-ui-sparkline] [data-part-bar]{fill:var(--_bar-dim);stroke:none;transition:fill var(--slotted-duration-short) var(--slotted-easing-standard)}[data-ui-sparkline] [data-part-bar][data-current]{fill:var(--_color)}[data-ui-sparkline] [data-part-reference]{fill:none;stroke:var(--_reference-color);stroke-dasharray:2 3;stroke-linecap:round;stroke-width:var(--slotted-border-width-thin, 1px);vector-effect:non-scaling-stroke}[data-ui-sparkline] [data-part-ring],[data-ui-sparkline] [data-part-marker]{fill:none;stroke-linecap:round;vector-effect:non-scaling-stroke}@media(prefers-reduced-motion:no-preference){[data-ui-sparkline][data-animate] :is([data-part-area],[data-part-line],[data-part-ring],[data-part-marker]){transition:d var(--slotted-duration-medium) var(--slotted-easing-standard)}[data-ui-sparkline][data-animate] [data-part-bar]{transition:d var(--slotted-duration-medium) var(--slotted-easing-standard),fill var(--slotted-duration-short) var(--slotted-easing-standard)}}[data-ui-sparkline] [data-part-ring]{stroke:var(--_ring-color);stroke-width:calc(var(--_marker) + 2 * var(--_ring))}[data-ui-sparkline] [data-part-marker]{stroke:var(--_color);stroke-width:var(--_marker)}[data-ui-sparkline]:dir(rtl) [data-part-plot]{transform:scaleX(-1)}@media(forced-colors:active){[data-ui-sparkline] [data-part-area]{display:none}[data-ui-sparkline] [data-part-bar]{fill:GrayText}[data-ui-sparkline] [data-part-bar][data-current]{fill:CanvasText}[data-ui-sparkline] [data-part-ring]{stroke:Canvas}}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
176
193
|
}
|
|
177
194
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlSparkline, decorators: [{
|
|
178
195
|
type: Component,
|
|
179
196
|
args: [{ selector: '[slSparkline]', standalone: true, template: `<svg
|
|
180
197
|
data-part="plot"
|
|
198
|
+
data-part-plot=""
|
|
181
199
|
aria-hidden="true"
|
|
182
200
|
focusable="false"
|
|
183
201
|
preserveAspectRatio="none"
|
|
184
202
|
[attr.viewBox]="viewBox()"
|
|
185
203
|
>
|
|
186
204
|
@if (layout().area) {
|
|
187
|
-
<path data-part="area" [attr.d]="layout().area" />
|
|
205
|
+
<path data-part="area" data-part-area="" [attr.d]="layout().area" />
|
|
188
206
|
}
|
|
189
207
|
@if (layout().line) {
|
|
190
|
-
<path data-part="line" [attr.d]="layout().line" />
|
|
208
|
+
<path data-part="line" data-part-line="" [attr.d]="layout().line" />
|
|
191
209
|
}
|
|
192
210
|
@for (bar of layout().bars; track bar.index; let last = $last) {
|
|
193
|
-
<path
|
|
211
|
+
<path
|
|
212
|
+
data-part="bar"
|
|
213
|
+
data-part-bar=""
|
|
214
|
+
[attr.data-current]="last ? '' : null"
|
|
215
|
+
[attr.d]="bar.path"
|
|
216
|
+
/>
|
|
194
217
|
}
|
|
195
218
|
@if (layout().reference !== null) {
|
|
196
219
|
<line
|
|
197
220
|
data-part="reference"
|
|
221
|
+
data-part-reference=""
|
|
198
222
|
x1="0"
|
|
199
223
|
[attr.x2]="width()"
|
|
200
224
|
[attr.y1]="layout().reference"
|
|
@@ -202,12 +226,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
202
226
|
/>
|
|
203
227
|
}
|
|
204
228
|
@if (markerPath()) {
|
|
205
|
-
<path data-part="ring" [attr.d]="markerPath()" />
|
|
206
|
-
<path data-part="marker" [attr.d]="markerPath()" />
|
|
229
|
+
<path data-part="ring" data-part-ring="" [attr.d]="markerPath()" />
|
|
230
|
+
<path data-part="marker" data-part-marker="" [attr.d]="markerPath()" />
|
|
207
231
|
}
|
|
208
232
|
</svg>`, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, exportAs: 'slSparkline', host: {
|
|
209
233
|
'data-ui': 'sparkline',
|
|
234
|
+
'data-ui-sparkline': '',
|
|
210
235
|
'data-part': 'root',
|
|
236
|
+
'data-part-root': '',
|
|
211
237
|
role: 'img',
|
|
212
238
|
'[attr.aria-label]': 'name()',
|
|
213
239
|
'[attr.data-type]': 'type()',
|
|
@@ -215,7 +241,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
215
241
|
'[attr.data-curve]': 'resolvedCurve()',
|
|
216
242
|
'[attr.data-tone]': 'tone() ?? null',
|
|
217
243
|
'[attr.data-series]': 'series() ?? null',
|
|
218
|
-
|
|
244
|
+
'[attr.data-animate]': "animate() ? '' : null",
|
|
245
|
+
}, styles: ["@layer slotted.components{[data-ui-sparkline]{--_size: var(--slotted-sparkline-block-size, var(--slotted-space-9, 2rem));--_stroke: var(--slotted-sparkline-line-width, var(--slotted-border-width-thick, 2px));--_marker: var(--slotted-sparkline-marker-size, var(--slotted-space-3, .375rem));--_ring: var(--slotted-sparkline-ring-width, var(--slotted-border-width-thick, 2px));--_ring-color: var(--slotted-sparkline-ring-color, var(--slotted-surface-raised, Canvas));--_area-opacity: var(--slotted-sparkline-area-opacity, .18);--_bar-share: var(--slotted-sparkline-bar-share, 62%);--_bar-dim: color-mix( in oklab, var(--_color) var(--_bar-share), var(--slotted-border-strong, ButtonBorder) );--_reference-color: var( --slotted-sparkline-reference-color, var(--slotted-border-strong, ButtonBorder) );--_color: var(--slotted-sparkline-color, var(--slotted-data-1));block-size:var(--_size);box-sizing:border-box;display:inline-block;inline-size:100%;line-height:0;min-inline-size:var(--slotted-sparkline-min-inline-size, 6rem);vertical-align:middle}[data-ui-sparkline][data-size=sm]{--_size: var(--slotted-sparkline-block-size-sm, var(--slotted-space-7, 1.25rem));--_stroke: var(--slotted-sparkline-line-width-sm, var(--slotted-border-width-medium, 1.5px));--_marker: var(--slotted-sparkline-marker-size-sm, var(--slotted-space-2, .25rem));--_ring: var(--slotted-sparkline-ring-width-sm, var(--slotted-border-width-medium, 1.5px))}[data-ui-sparkline][data-size=lg]{--_size: var(--slotted-sparkline-block-size-lg, var(--slotted-space-11, 3rem));--_marker: var(--slotted-sparkline-marker-size-lg, var(--slotted-space-4, .5rem))}[data-ui-sparkline][data-series=\"1\"]{--_color: var(--slotted-data-1)}[data-ui-sparkline][data-series=\"2\"]{--_color: var(--slotted-data-2)}[data-ui-sparkline][data-series=\"3\"]{--_color: var(--slotted-data-3)}[data-ui-sparkline][data-series=\"4\"]{--_color: var(--slotted-data-4)}[data-ui-sparkline][data-series=\"5\"]{--_color: var(--slotted-data-5)}[data-ui-sparkline][data-series=\"6\"]{--_color: var(--slotted-data-6)}[data-ui-sparkline][data-series=\"7\"]{--_color: var(--slotted-data-7)}[data-ui-sparkline][data-series=\"8\"]{--_color: var(--slotted-data-8)}[data-ui-sparkline][data-tone=neutral]{--_color: var(--slotted-text-muted, GrayText)}[data-ui-sparkline][data-tone=accent]{--_color: var(--slotted-tone-accent-text)}[data-ui-sparkline][data-tone=secondary]{--_color: var(--slotted-tone-secondary-text)}[data-ui-sparkline][data-tone=success]{--_color: var(--slotted-tone-success-text)}[data-ui-sparkline][data-tone=info]{--_color: var(--slotted-tone-info-text)}[data-ui-sparkline][data-tone=warning]{--_color: var(--slotted-tone-warning-text)}[data-ui-sparkline][data-tone=danger]{--_color: var(--slotted-tone-danger-text)}[data-ui-sparkline] [data-part-plot]{block-size:100%;display:block;inline-size:100%;overflow:visible}[data-ui-sparkline] [data-part-area]{fill:var(--_color);fill-opacity:var(--_area-opacity);-webkit-mask-image:linear-gradient(to bottom,black,transparent);mask-image:linear-gradient(to bottom,black,transparent);stroke:none}[data-ui-sparkline] [data-part-line]{fill:none;stroke:var(--_color);stroke-linecap:round;stroke-linejoin:round;stroke-width:var(--_stroke);vector-effect:non-scaling-stroke}[data-ui-sparkline] [data-part-bar]{fill:var(--_bar-dim);stroke:none;transition:fill var(--slotted-duration-short) var(--slotted-easing-standard)}[data-ui-sparkline] [data-part-bar][data-current]{fill:var(--_color)}[data-ui-sparkline] [data-part-reference]{fill:none;stroke:var(--_reference-color);stroke-dasharray:2 3;stroke-linecap:round;stroke-width:var(--slotted-border-width-thin, 1px);vector-effect:non-scaling-stroke}[data-ui-sparkline] [data-part-ring],[data-ui-sparkline] [data-part-marker]{fill:none;stroke-linecap:round;vector-effect:non-scaling-stroke}@media(prefers-reduced-motion:no-preference){[data-ui-sparkline][data-animate] :is([data-part-area],[data-part-line],[data-part-ring],[data-part-marker]){transition:d var(--slotted-duration-medium) var(--slotted-easing-standard)}[data-ui-sparkline][data-animate] [data-part-bar]{transition:d var(--slotted-duration-medium) var(--slotted-easing-standard),fill var(--slotted-duration-short) var(--slotted-easing-standard)}}[data-ui-sparkline] [data-part-ring]{stroke:var(--_ring-color);stroke-width:calc(var(--_marker) + 2 * var(--_ring))}[data-ui-sparkline] [data-part-marker]{stroke:var(--_color);stroke-width:var(--_marker)}[data-ui-sparkline]:dir(rtl) [data-part-plot]{transform:scaleX(-1)}@media(forced-colors:active){[data-ui-sparkline] [data-part-area]{display:none}[data-ui-sparkline] [data-part-bar]{fill:GrayText}[data-ui-sparkline] [data-part-bar][data-current]{fill:CanvasText}[data-ui-sparkline] [data-part-ring]{stroke:Canvas}}}\n"] }]
|
|
219
246
|
}], ctorParameters: () => [], propDecorators: { data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], curve: [{ type: i0.Input, args: [{ isSignal: true, alias: "curve", required: false }] }], area: [{ type: i0.Input, args: [{ isSignal: true, alias: "area", required: false }] }], marker: [{ type: i0.Input, args: [{ isSignal: true, alias: "marker", required: false }] }], reference: [{ type: i0.Input, args: [{ isSignal: true, alias: "reference", required: false }] }], min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], tone: [{ type: i0.Input, args: [{ isSignal: true, alias: "tone", required: false }] }], series: [{ type: i0.Input, args: [{ isSignal: true, alias: "series", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], description: [{ type: i0.Input, args: [{ isSignal: true, alias: "description", required: false }] }], formatOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "formatOptions", required: false }] }], valueFormatter: [{ type: i0.Input, args: [{ isSignal: true, alias: "valueFormatter", required: false }] }], locale: [{ type: i0.Input, args: [{ isSignal: true, alias: "locale", required: false }] }], messages: [{ type: i0.Input, args: [{ isSignal: true, alias: "messages", required: false }] }] } });
|
|
220
247
|
/** Absence has to survive the transform: an unset input defers to the defaults. */
|
|
221
248
|
function optionalBoolean(value) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slotted-angular-sparkline.mjs","sources":["../../sparkline/src/sparkline-defaults.ts","../../sparkline/src/sparkline.constants.ts","../../sparkline/src/sparkline.ts","../../sparkline/src/slotted-angular-sparkline.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\n\nimport type { SparklineCurve } from './sparkline.constants';\n\n/**\n * What every sparkline in an application does before any of them states\n * anything of its own: how a number is read out, whether a line is smoothed,\n * washed and marked. Its words and locale come from the language in force\n * (`provideSlotted`).\n */\nexport interface SparklineDefaults {\n area?: boolean;\n curve?: SparklineCurve;\n formatOptions?: Intl.NumberFormatOptions;\n marker?: boolean;\n}\n\nexport const SPARKLINE_DEFAULTS_TOKEN = new InjectionToken<SparklineDefaults>(\n 'slotted sparkline defaults',\n { providedIn: 'root', factory: (): SparklineDefaults => ({}) },\n);\n\n/**\n * An application decides once how its sparklines are drawn and read out, and\n * every sparkline inherits it. A sparkline that states any of those still\n * wins: an explicit input is never overridden by the token.\n */\nexport function provideSparklineDefaults(defaults: SparklineDefaults) {\n return { provide: SPARKLINE_DEFAULTS_TOKEN, useValue: defaults };\n}\n\nexport function injectSparklineDefaults(): SparklineDefaults {\n return inject(SPARKLINE_DEFAULTS_TOKEN);\n}\n","export type SparklineType = 'line' | 'bar';\nexport type SparklineSize = 'sm' | 'md' | 'lg';\nexport type SparklineCurve = 'linear' | 'monotone';\nexport type SparklineTone = 'neutral' | 'accent' | 'secondary' | 'success' | 'warning' | 'danger';\nexport type SparklineSeries = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;\n\n/** The bar's corner and the space between two bars, in pixels; the stylesheet's geometry. */\nexport const SPARKLINE_BAR_GAP = 2;\nexport const SPARKLINE_BAR_RADIUS = 2;\n","import {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n HostAttributeToken,\n inject,\n input,\n numberAttribute,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { injectLocale, injectMessages } from '@slotted/angular/i18n';\nimport {\n type PartialMessages,\n sparklineMessages,\n type SparklineMessages,\n} from '@slotted/core/i18n';\nimport {\n describeSparkline,\n layoutSparkline,\n observeSparklineBox,\n SPARKLINE_STEPS,\n sparklineInset,\n} from '@slotted/core/sparkline';\nimport type { SparklineBox, SparklineDatum } from '@slotted/core/sparkline';\n\nimport { injectSparklineDefaults } from './sparkline-defaults';\nimport {\n SPARKLINE_BAR_GAP,\n SPARKLINE_BAR_RADIUS,\n type SparklineCurve,\n type SparklineSeries,\n type SparklineSize,\n type SparklineTone,\n type SparklineType,\n} from './sparkline.constants';\n\n/**\n * A series of numbers drawn in a box: a line through them or a bar per\n * period, a disc on the last point, a dashed line at a reference. The\n * geometry is `@slotted/core/sparkline`'s and the paint is the stylesheet's;\n * what this binding decides is when to measure and what to say.\n *\n * The box is measured after the first render, so the first browser paint is\n * on the real grid; on the server the drawing is laid out on the nominal\n * grid of its size step and stretched to the box, where\n * `vector-effect: non-scaling-stroke` keeps every stroke and both discs at\n * their screen size. The host is `role=\"img\"` with the generated description\n * as its name — an `aria-label` the consumer wrote on the element wins — and\n * the `svg` is hidden: a drawing with no interaction is an image.\n */\n@Component({\n selector: '[slSparkline]',\n standalone: true,\n template: `<svg\n data-part=\"plot\"\n aria-hidden=\"true\"\n focusable=\"false\"\n preserveAspectRatio=\"none\"\n [attr.viewBox]=\"viewBox()\"\n >\n @if (layout().area) {\n <path data-part=\"area\" [attr.d]=\"layout().area\" />\n }\n @if (layout().line) {\n <path data-part=\"line\" [attr.d]=\"layout().line\" />\n }\n @for (bar of layout().bars; track bar.index; let last = $last) {\n <path data-part=\"bar\" [attr.data-current]=\"last ? '' : null\" [attr.d]=\"bar.path\" />\n }\n @if (layout().reference !== null) {\n <line\n data-part=\"reference\"\n x1=\"0\"\n [attr.x2]=\"width()\"\n [attr.y1]=\"layout().reference\"\n [attr.y2]=\"layout().reference\"\n />\n }\n @if (markerPath()) {\n <path data-part=\"ring\" [attr.d]=\"markerPath()\" />\n <path data-part=\"marker\" [attr.d]=\"markerPath()\" />\n }\n </svg>`,\n styleUrl: '../../../styles/src/sparkline/sparkline.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'slSparkline',\n host: {\n 'data-ui': 'sparkline',\n 'data-part': 'root',\n role: 'img',\n '[attr.aria-label]': 'name()',\n '[attr.data-type]': 'type()',\n '[attr.data-size]': 'size()',\n '[attr.data-curve]': 'resolvedCurve()',\n '[attr.data-tone]': 'tone() ?? null',\n '[attr.data-series]': 'series() ?? null',\n },\n})\nexport class SlSparkline {\n /** The series, oldest first. `null` is a gap: the line breaks, the bar is not drawn. */\n readonly data = input<readonly SparklineDatum[]>([]);\n readonly type = input<SparklineType>('line');\n readonly size = input<SparklineSize>('md');\n /** Straight segments, or a monotone curve that never overshoots a point. */\n readonly curve = input<SparklineCurve | undefined>(undefined);\n /** The wash under a line. */\n readonly area = input<boolean | undefined, unknown>(undefined, { transform: optionalBoolean });\n /** A disc on the last real point. */\n readonly marker = input<boolean | undefined, unknown>(undefined, { transform: optionalBoolean });\n /** A dashed line at this value, which widens the extent to hold it. */\n readonly reference = input<number | undefined, unknown>(undefined, { transform: optionalNumber });\n /** The extent, when the data's own is not the one to draw. The data widens it, never narrows it. */\n readonly min = input<number | undefined, unknown>(undefined, { transform: optionalNumber });\n readonly max = input<number | undefined, unknown>(undefined, { transform: optionalNumber });\n /** How the series is doing. Wins over `series`. */\n readonly tone = input<SparklineTone | undefined>(undefined);\n /** Which series this is, as a slot of the data scale. */\n readonly series = input<SparklineSeries | undefined>(undefined);\n /** What the series is, said first in the description. */\n readonly label = input<string | undefined>(undefined);\n /** The whole accessible name, replacing the generated description. */\n readonly description = input<string | undefined>(undefined);\n readonly formatOptions = input<Intl.NumberFormatOptions | undefined>(undefined);\n readonly valueFormatter = input<((value: number) => string) | undefined>(undefined);\n /** The locale numbers are written in; the language in force when absent. */\n readonly locale = input<string | undefined>(undefined);\n /** Words laid over the catalog of the language in force, key by key: the description's sentences. */\n readonly messages = input<PartialMessages<SparklineMessages> | undefined>(undefined);\n\n private readonly defaults = injectSparklineDefaults();\n private readonly host: HTMLElement = inject(ElementRef).nativeElement;\n /** An `aria-label` the consumer wrote on their own element, which wins. */\n private readonly ownLabel = inject(new HostAttributeToken('aria-label'), { optional: true });\n private readonly box = signal<SparklineBox | null>(null);\n\n readonly resolvedCurve = computed(() => this.curve() ?? this.defaults.curve ?? 'linear');\n readonly resolvedArea = computed(() => this.area() ?? this.defaults.area ?? false);\n readonly resolvedMarker = computed(() => this.marker() ?? this.defaults.marker ?? true);\n /** The family's words in the language in force, with this sparkline's `messages` laid over them. */\n readonly t = injectMessages(sparklineMessages, this.messages);\n private readonly appLocale = injectLocale();\n\n readonly width = computed(() => this.box()?.width || SPARKLINE_STEPS[this.size()].width);\n readonly height = computed(() => this.box()?.height || SPARKLINE_STEPS[this.size()].height);\n readonly viewBox = computed(() => `0 0 ${this.width()} ${this.height()}`);\n\n readonly layout = computed(() =>\n layoutSparkline({\n data: this.data(),\n width: this.width(),\n height: this.height(),\n inset: sparklineInset(this.size(), this.type(), this.resolvedMarker()),\n type: this.type(),\n curve: this.resolvedCurve(),\n area: this.resolvedArea(),\n min: this.min(),\n max: this.max(),\n reference: this.reference(),\n gap: SPARKLINE_BAR_GAP,\n radius: SPARKLINE_BAR_RADIUS,\n }),\n );\n\n readonly markerPath = computed(() => {\n const marker = this.layout().marker;\n if (!this.resolvedMarker() || this.type() !== 'line' || marker === null) return null;\n return `M${marker.x} ${marker.y}h0.001`;\n });\n\n readonly name = computed(() => {\n if (this.ownLabel) return this.ownLabel;\n const description = this.description();\n if (description !== undefined) return description;\n const own = this.valueFormatter();\n const formatter = new Intl.NumberFormat(\n this.locale() ?? this.appLocale(),\n this.formatOptions() ?? this.defaults.formatOptions,\n );\n return describeSparkline(this.data(), {\n t: this.t,\n format: own ?? ((value) => formatter.format(value)),\n label: this.label(),\n });\n });\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n afterNextRender(() => {\n const handle = observeSparklineBox(this.host, (box) => this.box.set(box));\n destroyRef.onDestroy(() => handle.destroy());\n });\n }\n}\n\n/** Absence has to survive the transform: an unset input defers to the defaults. */\nexport function optionalBoolean(value: unknown): boolean | undefined {\n return value === undefined ? undefined : booleanAttribute(value);\n}\n\nexport function optionalNumber(value: unknown): number | undefined {\n if (value === undefined || value === null || value === '') return undefined;\n return numberAttribute(value);\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-sparkline.mjs","sources":["../../sparkline/src/sparkline-defaults.ts","../../sparkline/src/sparkline.constants.ts","../../sparkline/src/sparkline.ts","../../sparkline/src/slotted-angular-sparkline.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\n\nimport type { SparklineCurve } from './sparkline.constants';\n\n/**\n * What every sparkline in an application does before any of them states\n * anything of its own: how a number is read out, whether a line is smoothed,\n * washed and marked. Its words and locale come from the language in force\n * (`provideSlotted`).\n */\nexport interface SparklineDefaults {\n area?: boolean;\n curve?: SparklineCurve;\n formatOptions?: Intl.NumberFormatOptions;\n marker?: boolean;\n}\n\nexport const SPARKLINE_DEFAULTS_TOKEN = new InjectionToken<SparklineDefaults>(\n 'slotted sparkline defaults',\n { providedIn: 'root', factory: (): SparklineDefaults => ({}) },\n);\n\n/**\n * An application decides once how its sparklines are drawn and read out, and\n * every sparkline inherits it. A sparkline that states any of those still\n * wins: an explicit input is never overridden by the token.\n */\nexport function provideSparklineDefaults(defaults: SparklineDefaults) {\n return { provide: SPARKLINE_DEFAULTS_TOKEN, useValue: defaults };\n}\n\nexport function injectSparklineDefaults(): SparklineDefaults {\n return inject(SPARKLINE_DEFAULTS_TOKEN);\n}\n","export type SparklineType = 'line' | 'bar';\nexport type SparklineSize = 'sm' | 'md' | 'lg';\nexport type SparklineCurve = 'linear' | 'monotone';\nexport type SparklineTone =\n 'neutral' | 'accent' | 'secondary' | 'info' | 'success' | 'warning' | 'danger';\nexport type SparklineSeries = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;\n\n/** The bar's corner and the space between two bars, in pixels; the stylesheet's geometry. */\nexport const SPARKLINE_BAR_GAP = 2;\nexport const SPARKLINE_BAR_RADIUS = 2;\n","import {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n HostAttributeToken,\n inject,\n input,\n linkedSignal,\n numberAttribute,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { injectLocale, injectMessages } from '@slotted/angular/i18n';\nimport {\n type PartialMessages,\n sparklineMessages,\n type SparklineMessages,\n} from '@slotted/core/i18n';\nimport {\n describeSparkline,\n layoutSparkline,\n observeSparklineBox,\n SPARKLINE_STEPS,\n sparklineInset,\n} from '@slotted/core/sparkline';\nimport type { SparklineBox, SparklineDatum } from '@slotted/core/sparkline';\n\nimport { injectSparklineDefaults } from './sparkline-defaults';\nimport {\n SPARKLINE_BAR_GAP,\n SPARKLINE_BAR_RADIUS,\n type SparklineCurve,\n type SparklineSeries,\n type SparklineSize,\n type SparklineTone,\n type SparklineType,\n} from './sparkline.constants';\n\n/**\n * A series of numbers drawn in a box: a line through them or a bar per\n * period, a disc on the last point, a dashed line at a reference. The\n * geometry is `@slotted/core/sparkline`'s and the paint is the stylesheet's;\n * what this binding decides is when to measure and what to say.\n *\n * The box is measured after the first render, so the first browser paint is\n * on the real grid; on the server the drawing is laid out on the nominal\n * grid of its size step and stretched to the box, where\n * `vector-effect: non-scaling-stroke` keeps every stroke and both discs at\n * their screen size. The host is `role=\"img\"` with the generated description\n * as its name — an `aria-label` the consumer wrote on the element wins — and\n * the `svg` is hidden: a drawing with no interaction is an image.\n */\n@Component({\n selector: '[slSparkline]',\n standalone: true,\n template: `<svg\n data-part=\"plot\"\n data-part-plot=\"\"\n aria-hidden=\"true\"\n focusable=\"false\"\n preserveAspectRatio=\"none\"\n [attr.viewBox]=\"viewBox()\"\n >\n @if (layout().area) {\n <path data-part=\"area\" data-part-area=\"\" [attr.d]=\"layout().area\" />\n }\n @if (layout().line) {\n <path data-part=\"line\" data-part-line=\"\" [attr.d]=\"layout().line\" />\n }\n @for (bar of layout().bars; track bar.index; let last = $last) {\n <path\n data-part=\"bar\"\n data-part-bar=\"\"\n [attr.data-current]=\"last ? '' : null\"\n [attr.d]=\"bar.path\"\n />\n }\n @if (layout().reference !== null) {\n <line\n data-part=\"reference\"\n data-part-reference=\"\"\n x1=\"0\"\n [attr.x2]=\"width()\"\n [attr.y1]=\"layout().reference\"\n [attr.y2]=\"layout().reference\"\n />\n }\n @if (markerPath()) {\n <path data-part=\"ring\" data-part-ring=\"\" [attr.d]=\"markerPath()\" />\n <path data-part=\"marker\" data-part-marker=\"\" [attr.d]=\"markerPath()\" />\n }\n </svg>`,\n styleUrl: '../../../styles/src/sparkline/sparkline.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'slSparkline',\n host: {\n 'data-ui': 'sparkline',\n 'data-ui-sparkline': '',\n 'data-part': 'root',\n 'data-part-root': '',\n role: 'img',\n '[attr.aria-label]': 'name()',\n '[attr.data-type]': 'type()',\n '[attr.data-size]': 'size()',\n '[attr.data-curve]': 'resolvedCurve()',\n '[attr.data-tone]': 'tone() ?? null',\n '[attr.data-series]': 'series() ?? null',\n '[attr.data-animate]': \"animate() ? '' : null\",\n },\n})\nexport class SlSparkline {\n /** The series, oldest first. `null` is a gap: the line breaks, the bar is not drawn. */\n readonly data = input<readonly SparklineDatum[]>([]);\n readonly type = input<SparklineType>('line');\n readonly size = input<SparklineSize>('md');\n /** Straight segments, or a monotone curve that never overshoots a point. */\n readonly curve = input<SparklineCurve | undefined>(undefined);\n /** The wash under a line. */\n readonly area = input<boolean | undefined, unknown>(undefined, { transform: optionalBoolean });\n /** A disc on the last real point. */\n readonly marker = input<boolean | undefined, unknown>(undefined, { transform: optionalBoolean });\n /** A dashed line at this value, which widens the extent to hold it. */\n readonly reference = input<number | undefined, unknown>(undefined, { transform: optionalNumber });\n /** The extent, when the data's own is not the one to draw. The data widens it, never narrows it. */\n readonly min = input<number | undefined, unknown>(undefined, { transform: optionalNumber });\n readonly max = input<number | undefined, unknown>(undefined, { transform: optionalNumber });\n /** How the series is doing. Wins over `series`. */\n readonly tone = input<SparklineTone | undefined>(undefined);\n /** Which series this is, as a slot of the data scale. */\n readonly series = input<SparklineSeries | undefined>(undefined);\n /** What the series is, said first in the description. */\n readonly label = input<string | undefined>(undefined);\n /** The whole accessible name, replacing the generated description. */\n readonly description = input<string | undefined>(undefined);\n readonly formatOptions = input<Intl.NumberFormatOptions | undefined>(undefined);\n readonly valueFormatter = input<((value: number) => string) | undefined>(undefined);\n /** The locale numbers are written in; the language in force when absent. */\n readonly locale = input<string | undefined>(undefined);\n /** Words laid over the catalog of the language in force, key by key: the description's sentences. */\n readonly messages = input<PartialMessages<SparklineMessages> | undefined>(undefined);\n\n private readonly defaults = injectSparklineDefaults();\n private readonly host: HTMLElement = inject(ElementRef).nativeElement;\n /** An `aria-label` the consumer wrote on their own element, which wins. */\n private readonly ownLabel = inject(new HostAttributeToken('aria-label'), { optional: true });\n private readonly box = signal<SparklineBox | null>(null);\n\n readonly resolvedCurve = computed(() => this.curve() ?? this.defaults.curve ?? 'linear');\n readonly resolvedArea = computed(() => this.area() ?? this.defaults.area ?? false);\n readonly resolvedMarker = computed(() => this.marker() ?? this.defaults.marker ?? true);\n /** The family's words in the language in force, with this sparkline's `messages` laid over them. */\n readonly t = injectMessages(sparklineMessages, this.messages);\n private readonly appLocale = injectLocale();\n\n readonly width = computed(() => this.box()?.width || SPARKLINE_STEPS[this.size()].width);\n readonly height = computed(() => this.box()?.height || SPARKLINE_STEPS[this.size()].height);\n readonly viewBox = computed(() => `0 0 ${this.width()} ${this.height()}`);\n /**\n * Only a change of `data` animates the marks. A box that settles after the\n * first render — a table cell sizing its column — redraws at once: a path\n * that eased to the new width read as the series growing.\n */\n readonly animate = linkedSignal<\n { data: readonly SparklineDatum[]; width: number; height: number },\n boolean\n >({\n source: () => ({ data: this.data(), width: this.width(), height: this.height() }),\n computation: (now, previous) =>\n previous !== undefined &&\n previous.source.data !== now.data &&\n previous.source.width === now.width &&\n previous.source.height === now.height,\n });\n\n readonly layout = computed(() =>\n layoutSparkline({\n data: this.data(),\n width: this.width(),\n height: this.height(),\n inset: sparklineInset(this.size(), this.type(), this.resolvedMarker()),\n type: this.type(),\n curve: this.resolvedCurve(),\n area: this.resolvedArea(),\n min: this.min(),\n max: this.max(),\n reference: this.reference(),\n gap: SPARKLINE_BAR_GAP,\n radius: SPARKLINE_BAR_RADIUS,\n }),\n );\n\n readonly markerPath = computed(() => {\n const marker = this.layout().marker;\n if (!this.resolvedMarker() || this.type() !== 'line' || marker === null) return null;\n return `M${marker.x} ${marker.y}h0.001`;\n });\n\n readonly name = computed(() => {\n if (this.ownLabel) return this.ownLabel;\n const description = this.description();\n if (description !== undefined) return description;\n const own = this.valueFormatter();\n const formatter = new Intl.NumberFormat(\n this.locale() ?? this.appLocale(),\n this.formatOptions() ?? this.defaults.formatOptions,\n );\n return describeSparkline(this.data(), {\n t: this.t,\n format: own ?? ((value) => formatter.format(value)),\n label: this.label(),\n });\n });\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n afterNextRender(() => {\n const handle = observeSparklineBox(this.host, (box) => this.box.set(box));\n destroyRef.onDestroy(() => handle.destroy());\n });\n }\n}\n\n/** Absence has to survive the transform: an unset input defers to the defaults. */\nexport function optionalBoolean(value: unknown): boolean | undefined {\n return value === undefined ? undefined : booleanAttribute(value);\n}\n\nexport function optionalNumber(value: unknown): number | undefined {\n if (value === undefined || value === null || value === '') return undefined;\n return numberAttribute(value);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|