@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-color-picker.mjs","sources":["../../color-picker/src/color-picker-defaults.ts","../../color-picker/src/color-picker.ts","../../color-picker/src/color-field.ts","../../color-picker/src/slotted-angular-color-picker.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\nimport type { ColorFormat } from '@slotted/core/color';\n\nexport type { ColorFormat };\nexport type ColorPickerSize = 'sm' | 'md' | 'lg';\n\nexport interface ColorPickerDefaults {\n format: ColorFormat;\n presets: readonly string[] | undefined;\n size: ColorPickerSize;\n}\n\nconst FALLBACK: ColorPickerDefaults = {\n format: 'hex',\n presets: undefined,\n size: 'md',\n};\n\nexport const COLOR_PICKER_DEFAULTS = new InjectionToken<ColorPickerDefaults>(\n 'slotted color picker defaults',\n { providedIn: 'root', factory: () => FALLBACK },\n);\n\n/**\n * An application decides once its notation, its palette and its size. The\n * words come from the language in force (`provideSlotted`).\n */\nexport function provideColorPickerDefaults(defaults: Partial<ColorPickerDefaults>) {\n return {\n provide: COLOR_PICKER_DEFAULTS,\n useFactory: (): ColorPickerDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\nexport function injectColorPickerDefaults(): ColorPickerDefaults {\n return inject(COLOR_PICKER_DEFAULTS);\n}\n","import {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n forwardRef,\n inject,\n input,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type { ControlValueAccessor } from '@angular/forms';\nimport { SlField } from '@slotted/angular/field';\nimport { injectMessages } from '@slotted/angular/i18n';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport { SlMenu, SlMenuItem, SlMenuRadioGroup, SlMenuTrigger } from '@slotted/angular/menu';\nimport {\n clampToGamut,\n COLOR_FORMATS,\n contrastLevel,\n contrastRatio,\n formatColor,\n hsvaToRgba,\n parseColor,\n rgbaToHsva,\n toCss,\n} from '@slotted/core/color';\nimport type { ColorFormat, ContrastLevel, Hsva } from '@slotted/core/color';\nimport {\n colorPickerMessages,\n type ColorPickerMessages,\n type PartialMessages,\n} from '@slotted/core/i18n';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeReason, ChangeRequest } from '@slotted/core/state';\n\nimport { injectColorPickerDefaults } from './color-picker-defaults';\nimport type { ColorPickerSize } from './color-picker-defaults';\n\n/** The catalog key of each WCAG outcome. */\nconst CONTRAST_LEVEL_KEYS = {\n AAA: 'contrastLevels.AAA',\n AA: 'contrastLevels.AA',\n 'AA-large': 'contrastLevels.AALarge',\n fail: 'contrastLevels.fail',\n} as const satisfies Record<ContrastLevel, string>;\n\nconst clamp = (value: number, min: number, max: number) => Math.min(max, Math.max(min, value));\n\nfunction sameColor(a: string, b: string): boolean {\n const pa = parseColor(a);\n const pb = parseColor(b);\n return pa !== null && pb !== null && formatColor(pa.rgba, 'hex') === formatColor(pb.rgba, 'hex');\n}\n\nfunction isRtl(element: Element): boolean {\n return getComputedStyle(element).direction === 'rtl';\n}\n\nfunction sliderStep(\n event: KeyboardEvent,\n rtl: boolean,\n small: number,\n large: number,\n): number | null {\n const step = event.shiftKey ? large : small;\n switch (event.key) {\n case 'ArrowRight':\n return rtl ? -step : step;\n case 'ArrowLeft':\n return rtl ? step : -step;\n case 'ArrowUp':\n return step;\n case 'ArrowDown':\n return -step;\n case 'PageUp':\n return large;\n case 'PageDown':\n return -large;\n default:\n return null;\n }\n}\n\nconst optionalBoolean = (value: boolean | string | undefined) =>\n value === undefined ? undefined : booleanAttribute(value);\n\n/**\n * Choosing a colour: an area, a hue channel, an alpha channel, the preview of\n * now beside before, the value as text with its notation and the eyedropper,\n * the presets, and the contrast against `contrastWith`.\n *\n * The value is a string in the notation shown, and it comes back in that\n * notation; every colour the stylesheet paints is written on the host as a\n * runtime property from what `@slotted/core/color` parsed. It belongs in a\n * form as it stands. React lets a consumer choose the parts by passing them as\n * children; an attribute directive cannot see what was projected before it\n * renders, so here the parts are chosen by inputs — `alpha`, `presets`,\n * `contrastWith` — and the eyedropper by the platform.\n */\n@Component({\n selector: 'div[slColorPicker]',\n standalone: true,\n exportAs: 'slColorPicker',\n imports: [SlGlyph, SlIcon, SlMenu, SlMenuItem, SlMenuRadioGroup, SlMenuTrigger],\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SlColorPicker), multi: true },\n ],\n template: `\n <div\n data-part=\"area\"\n [attr.data-dragging]=\"dragging() === 'area' ? '' : null\"\n (pointerdown)=\"down($event, 'area')\"\n (pointermove)=\"move($event, 'area')\"\n (pointerup)=\"dragging.set(null)\"\n (pointercancel)=\"dragging.set(null)\"\n >\n <div\n data-part=\"area-thumb\"\n role=\"slider\"\n [attr.aria-roledescription]=\"t('areaRoleDescription')\"\n [attr.aria-label]=\"t('area')\"\n [attr.aria-valuetext]=\"percent(hsva().s) + ', ' + percent(hsva().v)\"\n [attr.aria-disabled]=\"off() || null\"\n [attr.tabindex]=\"resolvedDisabled() ? -1 : 0\"\n (keydown)=\"areaKey($event)\"\n ></div>\n </div>\n @for (channel of channels(); track channel) {\n <div\n data-part=\"channel\"\n [attr.data-channel]=\"channel\"\n [attr.data-dragging]=\"dragging() === channel ? '' : null\"\n (pointerdown)=\"down($event, channel)\"\n (pointermove)=\"move($event, channel)\"\n (pointerup)=\"dragging.set(null)\"\n (pointercancel)=\"dragging.set(null)\"\n >\n <div\n data-part=\"channel-thumb\"\n role=\"slider\"\n [attr.data-channel]=\"channel\"\n [attr.aria-label]=\"channel === 'hue' ? t('hue') : t('alpha')\"\n aria-valuemin=\"0\"\n [attr.aria-valuemax]=\"channel === 'hue' ? 360 : 100\"\n [attr.aria-valuenow]=\"channel === 'hue' ? round(hsva().h) : round(hsva().a * 100)\"\n [attr.aria-valuetext]=\"channel === 'hue' ? round(hsva().h) + '°' : percent(hsva().a)\"\n [attr.aria-disabled]=\"off() || null\"\n [attr.tabindex]=\"resolvedDisabled() ? -1 : 0\"\n (keydown)=\"channelKey($event, channel)\"\n ></div>\n </div>\n }\n <div data-part=\"row\">\n <span data-part=\"swatch\" role=\"img\" [attr.aria-label]=\"current()\"></span>\n <button\n data-part=\"previous\"\n type=\"button\"\n [attr.aria-label]=\"t('previous', { color: previous() ?? current() })\"\n [disabled]=\"off()\"\n (click)=\"request(previous() ?? current(), 'select', $event)\"\n >\n <span slIcon><svg slGlyph name=\"rotate-ccw\"></svg></span>\n </button>\n <div\n data-ui=\"text-field\"\n data-part=\"root\"\n data-size=\"sm\"\n data-variant=\"outline\"\n data-mono=\"\"\n [attr.data-invalid]=\"inputInvalid() ? '' : null\"\n [attr.data-disabled]=\"resolvedDisabled() ? '' : null\"\n [attr.data-readonly]=\"resolvedReadOnly() ? '' : null\"\n >\n <input\n data-part=\"input\"\n dir=\"ltr\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [attr.aria-label]=\"t('input')\"\n [attr.aria-invalid]=\"inputInvalid() ? 'true' : null\"\n [disabled]=\"resolvedDisabled()\"\n [readOnly]=\"resolvedReadOnly()\"\n [value]=\"draft() ?? current()\"\n (input)=\"draft.set($any($event.target).value)\"\n (keydown.enter)=\"$event.preventDefault(); commit($event)\"\n (blur)=\"commit($event); onTouched()\"\n />\n </div>\n <button\n data-part=\"format\"\n type=\"button\"\n [attr.aria-label]=\"t('format', { format: resolvedFormat() })\"\n [disabled]=\"off()\"\n [slMenuTriggerFor]=\"formats\"\n >\n {{ resolvedFormat() }}<span slIcon><svg slGlyph name=\"chevron-down\"></svg></span>\n </button>\n <sl-menu #formats>\n <sl-menu-radio-group\n [value]=\"resolvedFormat()\"\n (valueChange)=\"requestFormat($any($event), null)\"\n >\n @for (format of formatNames; track format) {\n <button slMenuRadioItem [value]=\"format\">{{ format.toUpperCase() }}</button>\n }\n </sl-menu-radio-group>\n </sl-menu>\n @if (eyedropper()) {\n <button\n data-part=\"eyedropper\"\n type=\"button\"\n [attr.aria-label]=\"t('eyedropper')\"\n [disabled]=\"off()\"\n (click)=\"pick($event)\"\n >\n <span slIcon><svg slGlyph name=\"pipette\"></svg></span>\n </button>\n }\n </div>\n @if (outOfGamut()) {\n <p data-part=\"gamut\" role=\"status\">\n <span slIcon><svg slGlyph name=\"circle-alert\"></svg></span>{{ t('gamut') }}\n </p>\n }\n @if (resolvedPresets().length > 0) {\n <div data-part=\"presets\" role=\"radiogroup\" [attr.aria-label]=\"t('presets')\">\n @for (preset of resolvedPresets(); track preset; let index = $index) {\n <button\n data-part=\"preset\"\n type=\"button\"\n role=\"radio\"\n [attr.aria-label]=\"preset\"\n [attr.aria-checked]=\"index === selectedPreset()\"\n [attr.data-selected]=\"index === selectedPreset() ? '' : null\"\n [attr.tabindex]=\"index === (selectedPreset() === -1 ? 0 : selectedPreset()) ? 0 : -1\"\n [style.--slotted-color-picker-preset]=\"preset\"\n [disabled]=\"off()\"\n (click)=\"choose(preset, $event)\"\n (keydown)=\"presetKey($event, index)\"\n ></button>\n }\n </div>\n }\n @if (contrast(); as measured) {\n <div data-part=\"contrast\" aria-live=\"polite\" [attr.data-level]=\"measured.level\">\n <span data-part=\"contrast-sample\" aria-hidden=\"true\">{{ t('contrastSample') }}</span>\n <span data-part=\"contrast-ratio\">{{ measured.ratio }}:1</span>\n <span data-part=\"contrast-level\">{{ t(measured.key) }}</span>\n </div>\n }\n `,\n styleUrls: [\n '../../../styles/src/color-picker/color-picker.css',\n '../../../styles/src/text-field/text-field.css',\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'color-picker',\n 'data-part': 'root',\n '[attr.data-size]': 'size() ?? field?.resolvedSize() ?? defaults.size',\n '[attr.data-format]': 'resolvedFormat()',\n '[attr.data-disabled]': \"resolvedDisabled() ? '' : null\",\n '[attr.data-readonly]': \"resolvedReadOnly() ? '' : null\",\n '[attr.data-invalid]': \"resolvedInvalid() ? '' : null\",\n '[attr.data-out-of-gamut]': \"outOfGamut() ? '' : null\",\n '[style.--slotted-color-picker-color]': 'css()',\n '[style.--slotted-color-picker-opaque]': 'opaque()',\n '[style.--slotted-color-picker-hue]': 'hsva().h',\n '[style.--slotted-color-picker-x]': 'hsva().s',\n '[style.--slotted-color-picker-y]': 'hsva().v',\n '[style.--slotted-color-picker-alpha]': 'hsva().a',\n '[style.--slotted-color-picker-previous]': 'previousCss()',\n '[style.--slotted-color-picker-contrast-with]': 'contrastCss()',\n },\n})\nexport class SlColorPicker implements ControlValueAccessor {\n /** Present means the consumer owns the value: a colour in any supported notation. */\n readonly value = input<string | undefined>(undefined);\n readonly defaultValue = input<string | undefined>(undefined);\n /** The notation the value is written in. */\n readonly format = input<ColorFormat | undefined>(undefined);\n readonly defaultFormat = input<ColorFormat | undefined>(undefined);\n readonly alpha = input(true, { transform: booleanAttribute });\n readonly presets = input<readonly string[] | undefined>(undefined);\n /** The background the contrast is measured against; absent, no contrast is drawn. */\n readonly contrastWith = input<string | undefined>(undefined);\n readonly size = input<ColorPickerSize | undefined>(undefined);\n readonly disabled = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: optionalBoolean,\n });\n readonly readOnly = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: optionalBoolean,\n });\n readonly invalid = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: optionalBoolean,\n });\n /**\n * Words laid over the catalog of the language in force, key by key: every\n * control's name, the gamut sentence and the contrast levels.\n */\n readonly messages = input<PartialMessages<ColorPickerMessages> | undefined>(undefined);\n\n /** Before the colour moves: `pointer`, `keyboard`, `select` or `programmatic` (the eyedropper). */\n readonly valueChange = output<ChangeRequest<string>>();\n readonly formatChange = output<ChangeRequest<ColorFormat>>();\n\n protected readonly defaults = injectColorPickerDefaults();\n /** The family's words in the language in force, with this picker's `messages` laid over them. */\n readonly t = injectMessages(colorPickerMessages, this.messages);\n protected readonly field = inject(SlField, { optional: true });\n private readonly element: HTMLElement = inject(ElementRef).nativeElement;\n protected readonly formatNames = COLOR_FORMATS;\n\n private readonly own = signal<string | undefined>(undefined);\n private readonly ownFormat = signal<ColorFormat | undefined>(undefined);\n private readonly formDisabled = signal<boolean | undefined>(undefined);\n private readonly memory = { h: 0, s: 0 };\n protected readonly dragging = signal<'area' | 'hue' | 'alpha' | null>(null);\n protected readonly draft = signal<string | null>(null);\n protected readonly eyedropper = signal(false);\n /** The colour the panel opened with, read once after the first render. */\n protected readonly previous = signal<string | null>(null);\n private onChangeFn: (value: string) => void = () => undefined;\n protected onTouched: () => void = () => undefined;\n\n readonly current = computed(() => this.value() ?? this.own() ?? this.defaultValue() ?? '#000000');\n private readonly parsed = computed(() => parseColor(this.current()));\n readonly resolvedFormat = computed(\n () =>\n this.format() ??\n this.ownFormat() ??\n this.defaultFormat() ??\n parseColor(this.value() ?? this.defaultValue() ?? '')?.format ??\n this.defaults.format,\n );\n protected readonly resolvedDisabled = computed(\n () => this.disabled() ?? this.formDisabled() ?? this.field?.resolvedDisabled() ?? false,\n );\n protected readonly resolvedReadOnly = computed(\n () => this.readOnly() ?? this.field?.resolvedReadOnly() ?? false,\n );\n protected readonly off = computed(() => this.resolvedDisabled() || this.resolvedReadOnly());\n protected readonly channels = computed<('hue' | 'alpha')[]>(() =>\n this.alpha() ? ['hue', 'alpha'] : ['hue'],\n );\n private readonly rgba = computed(() =>\n clampToGamut(this.parsed()?.rgba ?? { r: 0, g: 0, b: 0, a: 1 }),\n );\n protected readonly hsva = computed<Hsva>(() => {\n const next = rgbaToHsva(this.rgba());\n if (next.v === 0) next.s = this.memory.s;\n else this.memory.s = next.s;\n if (next.s === 0 || next.v === 0) next.h = this.memory.h;\n else this.memory.h = next.h;\n return next;\n });\n protected readonly css = computed(() => toCss(this.rgba()));\n protected readonly opaque = computed(() => toCss(this.rgba(), true));\n protected readonly outOfGamut = computed(() => this.parsed()?.inGamut === false);\n protected readonly draftValid = computed(() => {\n const draft = this.draft();\n return draft === null || parseColor(draft) !== null;\n });\n protected readonly resolvedInvalid = computed(\n () => this.invalid() === true || this.field?.invalid() === true,\n );\n /** The panel has no frame of its own, so a picker the form calls invalid says so on its text. */\n protected readonly inputInvalid = computed(() => !this.draftValid() || this.resolvedInvalid());\n protected readonly resolvedPresets = computed(\n () => this.presets() ?? this.defaults.presets ?? [],\n );\n protected readonly selectedPreset = computed(() =>\n this.resolvedPresets().findIndex((preset) => sameColor(preset, this.current())),\n );\n protected readonly previousCss = computed(() =>\n toCss(parseColor(this.previous() ?? this.current())?.rgba ?? this.rgba()),\n );\n private readonly background = computed(() => {\n const value = this.contrastWith();\n return value === undefined ? null : parseColor(value);\n });\n protected readonly contrastCss = computed(() => {\n const background = this.background();\n return background === null ? null : toCss(background.rgba);\n });\n protected readonly contrast = computed(() => {\n const background = this.background();\n const parsed = this.parsed();\n if (background === null || parsed === null) return null;\n const ratio = contrastRatio(parsed.rgba, background.rgba);\n const level = contrastLevel(ratio);\n return { level, ratio: ratio.toFixed(2), key: CONTRAST_LEVEL_KEYS[level] };\n });\n\n constructor() {\n afterNextRender(() => {\n this.previous.set(this.current());\n this.eyedropper.set('EyeDropper' in window);\n /* slMenuTriggerFor binds data-part to null outside a bar, and the\n binding is a constant: the part is written back once, the rule\n menu records for its own trigger. */\n this.element.querySelector('[aria-haspopup=\"menu\"]')?.setAttribute('data-part', 'format');\n });\n }\n\n protected round(value: number) {\n return Math.round(value);\n }\n\n protected percent(value: number) {\n return `${Math.round(value * 100)} %`;\n }\n\n writeValue(value: string | null | undefined) {\n if (value != null) this.own.set(value);\n }\n\n registerOnChange(fn: (value: string) => void) {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.formDisabled.set(isDisabled);\n }\n\n /** Asks to move to `next`, and moves an uncontrolled value once nobody refused. */\n request(next: string, reason: ChangeReason, source: Event | null) {\n const state = createControllable<string>({\n controlled: this.value(),\n initial: this.current(),\n onRequest: (change) => this.valueChange.emit(change),\n });\n if (state.request(next, reason, source ?? undefined)) {\n this.own.set(next);\n this.onChangeFn(next);\n }\n }\n\n private requestHsva(next: Hsva, reason: ChangeReason, source: Event) {\n this.memory.h = next.h;\n this.memory.s = next.s;\n const rgba = hsvaToRgba({ ...next, a: this.alpha() ? next.a : 1 });\n this.request(formatColor(rgba, this.resolvedFormat()), reason, source);\n }\n\n protected requestFormat(next: ColorFormat, source: Event | null) {\n const state = createControllable<ColorFormat>({\n controlled: this.format(),\n initial: this.resolvedFormat(),\n onRequest: (change) => this.formatChange.emit(change),\n });\n if (state.request(next, 'select', source ?? undefined) && this.format() === undefined) {\n this.ownFormat.set(next);\n }\n const parsed = this.parsed();\n if (parsed !== null) this.request(formatColor(parsed.rgba, next), 'select', source);\n }\n\n protected down(event: PointerEvent, target: 'area' | 'hue' | 'alpha') {\n if (event.button !== 0 || this.off()) return;\n const box = event.currentTarget as HTMLElement;\n box.setPointerCapture(event.pointerId);\n this.dragging.set(target);\n this.place(event, target, box);\n (box.querySelector('[role=\"slider\"]') as HTMLElement | null)?.focus({ preventScroll: true });\n }\n\n protected move(event: PointerEvent, target: 'area' | 'hue' | 'alpha') {\n if (this.dragging() === target) this.place(event, target, event.currentTarget as HTMLElement);\n }\n\n private place(event: PointerEvent, target: 'area' | 'hue' | 'alpha', box: HTMLElement) {\n const rect = box.getBoundingClientRect();\n let x = clamp((event.clientX - rect.left) / rect.width, 0, 1);\n const y = clamp((event.clientY - rect.top) / rect.height, 0, 1);\n if (isRtl(box)) x = 1 - x;\n const hsva = this.hsva();\n if (target === 'area') this.requestHsva({ ...hsva, s: x, v: 1 - y }, 'pointer', event);\n else if (target === 'hue') this.requestHsva({ ...hsva, h: x * 360 }, 'pointer', event);\n else this.requestHsva({ ...hsva, a: x }, 'pointer', event);\n }\n\n protected areaKey(event: KeyboardEvent) {\n if (this.off()) return;\n const step = sliderStep(event, isRtl(this.element), 0.01, 0.1);\n if (step === null) return;\n event.preventDefault();\n const hsva = this.hsva();\n const horizontal = event.key === 'ArrowLeft' || event.key === 'ArrowRight';\n this.requestHsva(\n horizontal\n ? { ...hsva, s: clamp(hsva.s + step, 0, 1) }\n : { ...hsva, v: clamp(hsva.v + step, 0, 1) },\n 'keyboard',\n event,\n );\n }\n\n protected channelKey(event: KeyboardEvent, channel: 'hue' | 'alpha') {\n if (this.off()) return;\n const hue = channel === 'hue';\n const max = hue ? 360 : 1;\n const hsva = this.hsva();\n const current = hue ? hsva.h : hsva.a;\n let next: number | null = null;\n if (event.key === 'Home') next = 0;\n else if (event.key === 'End') next = max;\n else {\n const step = sliderStep(event, isRtl(this.element), hue ? 1 : 0.01, hue ? 10 : 0.1);\n if (step !== null) next = current + step;\n }\n if (next === null) return;\n event.preventDefault();\n this.requestHsva({ ...hsva, [hue ? 'h' : 'a']: clamp(next, 0, max) }, 'keyboard', event);\n }\n\n protected commit(event: Event) {\n const draft = this.draft();\n if (draft === null) return;\n const parsed = parseColor(draft);\n if (parsed !== null && !sameColor(draft, this.current())) {\n this.request(formatColor(parsed.rgba, this.resolvedFormat()), 'keyboard', event);\n }\n this.draft.set(null);\n }\n\n protected choose(preset: string, event: Event) {\n const parsed = parseColor(preset);\n if (parsed !== null)\n this.request(formatColor(parsed.rgba, this.resolvedFormat()), 'select', event);\n }\n\n protected presetKey(event: KeyboardEvent, index: number) {\n const rtl = isRtl(this.element);\n const forward = event.key === (rtl ? 'ArrowLeft' : 'ArrowRight') || event.key === 'ArrowDown';\n const back = event.key === (rtl ? 'ArrowRight' : 'ArrowLeft') || event.key === 'ArrowUp';\n if (!forward && !back) return;\n event.preventDefault();\n const presets = this.resolvedPresets();\n const next = (index + (forward ? 1 : -1) + presets.length) % presets.length;\n const sibling = (event.currentTarget as HTMLElement).parentElement?.children[next] as\n HTMLElement | undefined;\n sibling?.focus();\n this.choose(presets[next]!, event);\n }\n\n protected async pick(event: Event) {\n const EyeDropper = (\n window as unknown as {\n EyeDropper: new () => { open: () => Promise<{ sRGBHex: string }> };\n }\n ).EyeDropper;\n try {\n const { sRGBHex } = await new EyeDropper().open();\n const parsed = parseColor(sRGBHex);\n if (parsed !== null) {\n this.request(formatColor(parsed.rgba, this.resolvedFormat()), 'programmatic', event);\n }\n } catch {\n /* The reader pressed Escape: nothing was picked. */\n }\n }\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n forwardRef,\n HostAttributeToken,\n inject,\n input,\n model,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type { ControlValueAccessor } from '@angular/forms';\nimport {\n SlPopover,\n SlPopoverAnchor,\n SlPopoverBody,\n SlPopoverContent,\n SlPopoverLayer,\n SlPopoverTrigger,\n} from '@slotted/angular/popover';\nimport { injectMessages } from '@slotted/angular/i18n';\nimport { SlTextField, SlTextFieldInput, SlTextFieldStart } from '@slotted/angular/text-field';\nimport { clampToGamut, formatColor, parseColor, toCss } from '@slotted/core/color';\nimport type { ColorFormat } from '@slotted/core/color';\nimport {\n colorPickerMessages,\n type ColorPickerMessages,\n type PartialMessages,\n} from '@slotted/core/i18n';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeReason, ChangeRequest } from '@slotted/core/state';\n\nimport { SlColorPicker } from './color-picker';\nimport { injectColorPickerDefaults } from './color-picker-defaults';\nimport type { ColorPickerSize } from './color-picker-defaults';\n\nfunction sameColor(a: string, b: string): boolean {\n const pa = parseColor(a);\n const pb = parseColor(b);\n return pa !== null && pb !== null && formatColor(pa.rgba, 'hex') === formatColor(pb.rgba, 'hex');\n}\n\n/**\n * A `text-field` holding a colour: the swatch in its start opens the panel in\n * a popover, and the value can be typed in any notation and is kept in the\n * one shown. The text is the field's control, so a `slField` label names it;\n * the host is the consumer's element and the form control.\n */\n@Component({\n selector: 'div[slColorField]',\n standalone: true,\n exportAs: 'slColorField',\n imports: [\n SlColorPicker,\n SlPopover,\n SlPopoverAnchor,\n SlPopoverBody,\n SlPopoverContent,\n SlPopoverLayer,\n SlPopoverTrigger,\n SlTextField,\n SlTextFieldInput,\n SlTextFieldStart,\n ],\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SlColorField), multi: true },\n ],\n template: `\n <ng-container slPopover side=\"bottom\" align=\"start\" [(open)]=\"open\">\n <div slTextField slPopoverAnchor mono [size]=\"size()\">\n <span slTextFieldStart>\n <button\n slPopoverTrigger\n type=\"button\"\n data-ui=\"color-picker\"\n data-part=\"trigger\"\n [attr.aria-label]=\"t('trigger')\"\n [disabled]=\"resolvedDisabled()\"\n [style.--slotted-color-picker-color]=\"css()\"\n ></button>\n </span>\n <input\n slTextFieldInput\n dir=\"ltr\"\n spellcheck=\"false\"\n autocomplete=\"off\"\n [attr.aria-label]=\"label\"\n [disabled]=\"resolvedDisabled()\"\n [invalid]=\"draftValid() ? undefined : true\"\n [value]=\"draft() ?? current()\"\n (valueChange)=\"draft.set($event.value)\"\n (keydown.enter)=\"$event.preventDefault(); commit($event)\"\n (blur)=\"commit($event); onTouched()\"\n />\n </div>\n <ng-template slPopoverLayer>\n <div slPopoverContent [attr.aria-label]=\"t('trigger')\">\n <div slPopoverBody>\n <div\n slColorPicker\n [value]=\"current()\"\n [format]=\"resolvedFormat()\"\n [alpha]=\"alpha()\"\n [presets]=\"presets()\"\n [contrastWith]=\"contrastWith()\"\n [messages]=\"messages()\"\n (valueChange)=\"request($event.value, $event.reason, $event.source)\"\n (formatChange)=\"ownFormat.set($event.value); formatChange.emit($event)\"\n ></div>\n </div>\n </div>\n </ng-template>\n </ng-container>\n `,\n /* The swatch's stylesheet: carried by the panel alone, it arrived on the first open. */\n styleUrls: ['../../../styles/src/color-picker/color-picker.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { '[attr.aria-label]': 'null' },\n})\nexport class SlColorField implements ControlValueAccessor {\n readonly value = input<string | undefined>(undefined);\n readonly defaultValue = input<string | undefined>(undefined);\n readonly format = input<ColorFormat | undefined>(undefined);\n readonly alpha = input(true, { transform: booleanAttribute });\n readonly presets = input<readonly string[] | undefined>(undefined);\n readonly contrastWith = input<string | undefined>(undefined);\n readonly size = input<ColorPickerSize | undefined>(undefined);\n readonly disabled = input(false, { transform: booleanAttribute });\n /** Words laid over the catalog of the language in force, for the trigger and the panel. */\n readonly messages = input<PartialMessages<ColorPickerMessages> | undefined>(undefined);\n /** Whether the panel is open. */\n readonly open = model(false);\n\n readonly valueChange = output<ChangeRequest<string>>();\n readonly formatChange = output<ChangeRequest<ColorFormat>>();\n\n protected readonly defaults = injectColorPickerDefaults();\n /** The family's words in the language in force, with this field's `messages` laid over them. */\n readonly t = injectMessages(colorPickerMessages, this.messages);\n /** The consumer's name for the field, moved onto the text it names. */\n protected readonly label = inject(new HostAttributeToken('aria-label'), { optional: true });\n\n private readonly own = signal<string | undefined>(undefined);\n protected readonly ownFormat = signal<ColorFormat | undefined>(undefined);\n private readonly formDisabled = signal(false);\n protected readonly draft = signal<string | null>(null);\n private onChangeFn: (value: string) => void = () => undefined;\n protected onTouched: () => void = () => undefined;\n\n readonly current = computed(() => this.value() ?? this.own() ?? this.defaultValue() ?? '#000000');\n protected readonly resolvedFormat = computed(\n () =>\n this.format() ??\n this.ownFormat() ??\n parseColor(this.current())?.format ??\n this.defaults.format,\n );\n protected readonly resolvedDisabled = computed(() => this.disabled() || this.formDisabled());\n protected readonly css = computed(() =>\n toCss(clampToGamut(parseColor(this.current())?.rgba ?? { r: 0, g: 0, b: 0, a: 1 })),\n );\n protected readonly draftValid = computed(() => {\n const draft = this.draft();\n return draft === null || parseColor(draft) !== null;\n });\n\n writeValue(value: string | null | undefined) {\n if (value != null) this.own.set(value);\n }\n\n registerOnChange(fn: (value: string) => void) {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.formDisabled.set(isDisabled);\n }\n\n protected request(next: string, reason: ChangeReason, source: unknown) {\n const state = createControllable<string>({\n controlled: this.value(),\n initial: this.current(),\n onRequest: (change) => this.valueChange.emit(change),\n });\n if (state.request(next, reason, source)) {\n this.own.set(next);\n this.onChangeFn(next);\n }\n }\n\n protected commit(event: Event) {\n const draft = this.draft();\n if (draft === null) return;\n const parsed = parseColor(draft);\n if (parsed !== null && !sameColor(draft, this.current())) {\n this.request(formatColor(parsed.rgba, this.resolvedFormat()), 'keyboard', event);\n }\n this.draft.set(null);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["sameColor"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"slotted-angular-color-picker.mjs","sources":["../../color-picker/src/color-picker-defaults.ts","../../color-picker/src/color-picker.ts","../../color-picker/src/color-field.ts","../../color-picker/src/slotted-angular-color-picker.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\nimport type { ColorFormat } from '@slotted/core/color';\n\nexport type { ColorFormat };\nexport type ColorPickerSize = 'sm' | 'md' | 'lg';\n\nexport interface ColorPickerDefaults {\n format: ColorFormat;\n presets: readonly string[] | undefined;\n size: ColorPickerSize;\n}\n\nconst FALLBACK: ColorPickerDefaults = {\n format: 'hex',\n presets: undefined,\n size: 'md',\n};\n\nexport const COLOR_PICKER_DEFAULTS = new InjectionToken<ColorPickerDefaults>(\n 'slotted color picker defaults',\n { providedIn: 'root', factory: () => FALLBACK },\n);\n\n/**\n * An application decides once its notation, its palette and its size. The\n * words come from the language in force (`provideSlotted`).\n */\nexport function provideColorPickerDefaults(defaults: Partial<ColorPickerDefaults>) {\n return {\n provide: COLOR_PICKER_DEFAULTS,\n useFactory: (): ColorPickerDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\nexport function injectColorPickerDefaults(): ColorPickerDefaults {\n return inject(COLOR_PICKER_DEFAULTS);\n}\n","import {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n forwardRef,\n inject,\n input,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { writeSelectorKey } from '@slotted/core/selector-key';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type { ControlValueAccessor } from '@angular/forms';\nimport { SlField } from '@slotted/angular/field';\nimport { injectMessages } from '@slotted/angular/i18n';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport { SlMenu, SlMenuItem, SlMenuRadioGroup, SlMenuTrigger } from '@slotted/angular/menu';\nimport {\n clampToGamut,\n COLOR_FORMATS,\n contrastLevel,\n contrastRatio,\n formatColor,\n hsvaToRgba,\n parseColor,\n rgbaToHsva,\n toCss,\n} from '@slotted/core/color';\nimport type { ColorFormat, ContrastLevel, Hsva } from '@slotted/core/color';\nimport {\n colorPickerMessages,\n type ColorPickerMessages,\n type PartialMessages,\n} from '@slotted/core/i18n';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeReason, ChangeRequest } from '@slotted/core/state';\n\nimport { injectColorPickerDefaults } from './color-picker-defaults';\nimport type { ColorPickerSize } from './color-picker-defaults';\n\n/** The catalog key of each WCAG outcome. */\nconst CONTRAST_LEVEL_KEYS = {\n AAA: 'contrastLevels.AAA',\n AA: 'contrastLevels.AA',\n 'AA-large': 'contrastLevels.AALarge',\n fail: 'contrastLevels.fail',\n} as const satisfies Record<ContrastLevel, string>;\n\nconst clamp = (value: number, min: number, max: number) => Math.min(max, Math.max(min, value));\n\nfunction sameColor(a: string, b: string): boolean {\n const pa = parseColor(a);\n const pb = parseColor(b);\n return pa !== null && pb !== null && formatColor(pa.rgba, 'hex') === formatColor(pb.rgba, 'hex');\n}\n\nfunction isRtl(element: Element): boolean {\n return getComputedStyle(element).direction === 'rtl';\n}\n\nfunction sliderStep(\n event: KeyboardEvent,\n rtl: boolean,\n small: number,\n large: number,\n): number | null {\n const step = event.shiftKey ? large : small;\n switch (event.key) {\n case 'ArrowRight':\n return rtl ? -step : step;\n case 'ArrowLeft':\n return rtl ? step : -step;\n case 'ArrowUp':\n return step;\n case 'ArrowDown':\n return -step;\n case 'PageUp':\n return large;\n case 'PageDown':\n return -large;\n default:\n return null;\n }\n}\n\nconst optionalBoolean = (value: boolean | string | undefined) =>\n value === undefined ? undefined : booleanAttribute(value);\n\n/**\n * Choosing a colour: an area, a hue channel, an alpha channel, the preview of\n * now beside before, the value as text with its notation and the eyedropper,\n * the presets, and the contrast against `contrastWith`.\n *\n * The value is a string in the notation shown, and it comes back in that\n * notation; every colour the stylesheet paints is written on the host as a\n * runtime property from what `@slotted/core/color` parsed. It belongs in a\n * form as it stands. React lets a consumer choose the parts by passing them as\n * children; an attribute directive cannot see what was projected before it\n * renders, so here the parts are chosen by inputs — `alpha`, `presets`,\n * `contrastWith` — and the eyedropper by the platform.\n */\n@Component({\n selector: 'div[slColorPicker]',\n standalone: true,\n exportAs: 'slColorPicker',\n imports: [SlGlyph, SlIcon, SlMenu, SlMenuItem, SlMenuRadioGroup, SlMenuTrigger],\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SlColorPicker), multi: true },\n ],\n template: `\n <div\n data-part=\"area\"\n data-part-area=\"\"\n [attr.data-dragging]=\"dragging() === 'area' ? '' : null\"\n (pointerdown)=\"down($event, 'area')\"\n (pointermove)=\"move($event, 'area')\"\n (pointerup)=\"dragging.set(null)\"\n (pointercancel)=\"dragging.set(null)\"\n >\n <div\n data-part=\"area-thumb\"\n data-part-area-thumb=\"\"\n role=\"slider\"\n [attr.aria-roledescription]=\"t('areaRoleDescription')\"\n [attr.aria-label]=\"t('area')\"\n [attr.aria-valuetext]=\"percent(hsva().s) + ', ' + percent(hsva().v)\"\n [attr.aria-disabled]=\"off() || null\"\n [attr.tabindex]=\"resolvedDisabled() ? -1 : 0\"\n (keydown)=\"areaKey($event)\"\n ></div>\n </div>\n @for (channel of channels(); track channel) {\n <div\n data-part=\"channel\"\n data-part-channel=\"\"\n [attr.data-channel]=\"channel\"\n [attr.data-dragging]=\"dragging() === channel ? '' : null\"\n (pointerdown)=\"down($event, channel)\"\n (pointermove)=\"move($event, channel)\"\n (pointerup)=\"dragging.set(null)\"\n (pointercancel)=\"dragging.set(null)\"\n >\n <div\n data-part=\"channel-thumb\"\n data-part-channel-thumb=\"\"\n role=\"slider\"\n [attr.data-channel]=\"channel\"\n [attr.aria-label]=\"channel === 'hue' ? t('hue') : t('alpha')\"\n aria-valuemin=\"0\"\n [attr.aria-valuemax]=\"channel === 'hue' ? 360 : 100\"\n [attr.aria-valuenow]=\"channel === 'hue' ? round(hsva().h) : round(hsva().a * 100)\"\n [attr.aria-valuetext]=\"channel === 'hue' ? round(hsva().h) + '°' : percent(hsva().a)\"\n [attr.aria-disabled]=\"off() || null\"\n [attr.tabindex]=\"resolvedDisabled() ? -1 : 0\"\n (keydown)=\"channelKey($event, channel)\"\n ></div>\n </div>\n }\n <div data-part=\"row\" data-part-row=\"\">\n <span data-part=\"swatch\" data-part-swatch=\"\" role=\"img\" [attr.aria-label]=\"current()\"></span>\n <button\n data-part=\"previous\"\n data-part-previous=\"\"\n type=\"button\"\n [attr.aria-label]=\"t('previous', { color: previous() ?? current() })\"\n [disabled]=\"off()\"\n (click)=\"request(previous() ?? current(), 'select', $event)\"\n >\n <span slIcon><svg slGlyph name=\"rotate-ccw\"></svg></span>\n </button>\n <div\n data-ui=\"text-field\"\n data-ui-text-field=\"\"\n data-part=\"root\"\n data-part-root=\"\"\n data-size=\"sm\"\n data-variant=\"outline\"\n data-mono=\"\"\n [attr.data-invalid]=\"inputInvalid() ? '' : null\"\n [attr.data-disabled]=\"resolvedDisabled() ? '' : null\"\n [attr.data-readonly]=\"resolvedReadOnly() ? '' : null\"\n >\n <input\n data-part=\"input\"\n data-part-input=\"\"\n dir=\"ltr\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [attr.aria-label]=\"t('input')\"\n [attr.aria-invalid]=\"inputInvalid() ? 'true' : null\"\n [disabled]=\"resolvedDisabled()\"\n [readOnly]=\"resolvedReadOnly()\"\n [value]=\"draft() ?? current()\"\n (input)=\"draft.set($any($event.target).value)\"\n (keydown.enter)=\"$event.preventDefault(); commit($event)\"\n (blur)=\"commit($event); onTouched()\"\n />\n </div>\n <button\n data-part=\"format\"\n data-part-format=\"\"\n type=\"button\"\n [attr.aria-label]=\"t('format', { format: resolvedFormat() })\"\n [disabled]=\"off()\"\n [slMenuTriggerFor]=\"formats\"\n >\n {{ resolvedFormat() }}<span slIcon><svg slGlyph name=\"chevron-down\"></svg></span>\n </button>\n <sl-menu #formats>\n <sl-menu-radio-group\n [value]=\"resolvedFormat()\"\n (valueChange)=\"requestFormat($any($event), null)\"\n >\n @for (format of formatNames; track format) {\n <button slMenuRadioItem [value]=\"format\">{{ format.toUpperCase() }}</button>\n }\n </sl-menu-radio-group>\n </sl-menu>\n @if (eyedropper()) {\n <button\n data-part=\"eyedropper\"\n data-part-eyedropper=\"\"\n type=\"button\"\n [attr.aria-label]=\"t('eyedropper')\"\n [disabled]=\"off()\"\n (click)=\"pick($event)\"\n >\n <span slIcon><svg slGlyph name=\"pipette\"></svg></span>\n </button>\n }\n </div>\n @if (outOfGamut()) {\n <p data-part=\"gamut\" data-part-gamut=\"\" role=\"status\">\n <span slIcon><svg slGlyph name=\"circle-alert\"></svg></span>{{ t('gamut') }}\n </p>\n }\n @if (resolvedPresets().length > 0) {\n <div\n data-part=\"presets\"\n data-part-presets=\"\"\n role=\"radiogroup\"\n [attr.aria-label]=\"t('presets')\"\n >\n @for (preset of resolvedPresets(); track preset; let index = $index) {\n <button\n data-part=\"preset\"\n data-part-preset=\"\"\n type=\"button\"\n role=\"radio\"\n [attr.aria-label]=\"preset\"\n [attr.aria-checked]=\"index === selectedPreset()\"\n [attr.data-selected]=\"index === selectedPreset() ? '' : null\"\n [attr.tabindex]=\"index === (selectedPreset() === -1 ? 0 : selectedPreset()) ? 0 : -1\"\n [style.--slotted-color-picker-preset]=\"preset\"\n [disabled]=\"off()\"\n (click)=\"choose(preset, $event)\"\n (keydown)=\"presetKey($event, index)\"\n ></button>\n }\n </div>\n }\n @if (contrast(); as measured) {\n <div\n data-part=\"contrast\"\n data-part-contrast=\"\"\n aria-live=\"polite\"\n [attr.data-level]=\"measured.level\"\n >\n <span data-part=\"contrast-sample\" data-part-contrast-sample=\"\" aria-hidden=\"true\">{{\n t('contrastSample')\n }}</span>\n <span data-part=\"contrast-ratio\" data-part-contrast-ratio=\"\">{{ measured.ratio }}:1</span>\n <span data-part=\"contrast-level\" data-part-contrast-level=\"\">{{ t(measured.key) }}</span>\n </div>\n }\n `,\n styleUrls: [\n '../../../styles/src/color-picker/color-picker.css',\n '../../../styles/src/text-field/text-field.css',\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'color-picker',\n 'data-ui-color-picker': '',\n 'data-part': 'root',\n 'data-part-root': '',\n '[attr.data-size]': 'size() ?? field?.resolvedSize() ?? defaults.size',\n '[attr.data-format]': 'resolvedFormat()',\n '[attr.data-disabled]': \"resolvedDisabled() ? '' : null\",\n '[attr.data-readonly]': \"resolvedReadOnly() ? '' : null\",\n '[attr.data-invalid]': \"resolvedInvalid() ? '' : null\",\n '[attr.data-out-of-gamut]': \"outOfGamut() ? '' : null\",\n '[style.--slotted-color-picker-color]': 'css()',\n '[style.--slotted-color-picker-opaque]': 'opaque()',\n '[style.--slotted-color-picker-hue]': 'hsva().h',\n '[style.--slotted-color-picker-x]': 'hsva().s',\n '[style.--slotted-color-picker-y]': 'hsva().v',\n '[style.--slotted-color-picker-alpha]': 'hsva().a',\n '[style.--slotted-color-picker-previous]': 'previousCss()',\n '[style.--slotted-color-picker-contrast-with]': 'contrastCss()',\n },\n})\nexport class SlColorPicker implements ControlValueAccessor {\n /** Present means the consumer owns the value: a colour in any supported notation. */\n readonly value = input<string | undefined>(undefined);\n readonly defaultValue = input<string | undefined>(undefined);\n /** The notation the value is written in. */\n readonly format = input<ColorFormat | undefined>(undefined);\n readonly defaultFormat = input<ColorFormat | undefined>(undefined);\n readonly alpha = input(true, { transform: booleanAttribute });\n readonly presets = input<readonly string[] | undefined>(undefined);\n /** The background the contrast is measured against; absent, no contrast is drawn. */\n readonly contrastWith = input<string | undefined>(undefined);\n readonly size = input<ColorPickerSize | undefined>(undefined);\n readonly disabled = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: optionalBoolean,\n });\n readonly readOnly = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: optionalBoolean,\n });\n readonly invalid = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: optionalBoolean,\n });\n /**\n * Words laid over the catalog of the language in force, key by key: every\n * control's name, the gamut sentence and the contrast levels.\n */\n readonly messages = input<PartialMessages<ColorPickerMessages> | undefined>(undefined);\n\n /** Before the colour moves: `pointer`, `keyboard`, `select` or `programmatic` (the eyedropper). */\n readonly valueChange = output<ChangeRequest<string>>();\n readonly formatChange = output<ChangeRequest<ColorFormat>>();\n\n protected readonly defaults = injectColorPickerDefaults();\n /** The family's words in the language in force, with this picker's `messages` laid over them. */\n readonly t = injectMessages(colorPickerMessages, this.messages);\n protected readonly field = inject(SlField, { optional: true });\n private readonly element: HTMLElement = inject(ElementRef).nativeElement;\n protected readonly formatNames = COLOR_FORMATS;\n\n private readonly own = signal<string | undefined>(undefined);\n private readonly ownFormat = signal<ColorFormat | undefined>(undefined);\n private readonly formDisabled = signal<boolean | undefined>(undefined);\n private readonly memory = { h: 0, s: 0 };\n protected readonly dragging = signal<'area' | 'hue' | 'alpha' | null>(null);\n protected readonly draft = signal<string | null>(null);\n protected readonly eyedropper = signal(false);\n /** The colour the panel opened with, read once after the first render. */\n protected readonly previous = signal<string | null>(null);\n private onChangeFn: (value: string) => void = () => undefined;\n protected onTouched: () => void = () => undefined;\n\n readonly current = computed(() => this.value() ?? this.own() ?? this.defaultValue() ?? '#000000');\n private readonly parsed = computed(() => parseColor(this.current()));\n readonly resolvedFormat = computed(\n () =>\n this.format() ??\n this.ownFormat() ??\n this.defaultFormat() ??\n parseColor(this.value() ?? this.defaultValue() ?? '')?.format ??\n this.defaults.format,\n );\n protected readonly resolvedDisabled = computed(\n () => this.disabled() ?? this.formDisabled() ?? this.field?.resolvedDisabled() ?? false,\n );\n protected readonly resolvedReadOnly = computed(\n () => this.readOnly() ?? this.field?.resolvedReadOnly() ?? false,\n );\n protected readonly off = computed(() => this.resolvedDisabled() || this.resolvedReadOnly());\n protected readonly channels = computed<('hue' | 'alpha')[]>(() =>\n this.alpha() ? ['hue', 'alpha'] : ['hue'],\n );\n private readonly rgba = computed(() =>\n clampToGamut(this.parsed()?.rgba ?? { r: 0, g: 0, b: 0, a: 1 }),\n );\n protected readonly hsva = computed<Hsva>(() => {\n const next = rgbaToHsva(this.rgba());\n if (next.v === 0) next.s = this.memory.s;\n else this.memory.s = next.s;\n if (next.s === 0 || next.v === 0) next.h = this.memory.h;\n else this.memory.h = next.h;\n return next;\n });\n protected readonly css = computed(() => toCss(this.rgba()));\n protected readonly opaque = computed(() => toCss(this.rgba(), true));\n protected readonly outOfGamut = computed(() => this.parsed()?.inGamut === false);\n protected readonly draftValid = computed(() => {\n const draft = this.draft();\n return draft === null || parseColor(draft) !== null;\n });\n protected readonly resolvedInvalid = computed(\n () => this.invalid() === true || this.field?.invalid() === true,\n );\n /** The panel has no frame of its own, so a picker the form calls invalid says so on its text. */\n protected readonly inputInvalid = computed(() => !this.draftValid() || this.resolvedInvalid());\n protected readonly resolvedPresets = computed(\n () => this.presets() ?? this.defaults.presets ?? [],\n );\n protected readonly selectedPreset = computed(() =>\n this.resolvedPresets().findIndex((preset) => sameColor(preset, this.current())),\n );\n protected readonly previousCss = computed(() =>\n toCss(parseColor(this.previous() ?? this.current())?.rgba ?? this.rgba()),\n );\n private readonly background = computed(() => {\n const value = this.contrastWith();\n return value === undefined ? null : parseColor(value);\n });\n protected readonly contrastCss = computed(() => {\n const background = this.background();\n return background === null ? null : toCss(background.rgba);\n });\n protected readonly contrast = computed(() => {\n const background = this.background();\n const parsed = this.parsed();\n if (background === null || parsed === null) return null;\n const ratio = contrastRatio(parsed.rgba, background.rgba);\n const level = contrastLevel(ratio);\n return { level, ratio: ratio.toFixed(2), key: CONTRAST_LEVEL_KEYS[level] };\n });\n\n constructor() {\n afterNextRender(() => {\n this.previous.set(this.current());\n this.eyedropper.set('EyeDropper' in window);\n /* slMenuTriggerFor binds data-part to null outside a bar, and the\n binding is a constant: the part is written back once, the rule\n menu records for its own trigger. */\n const format = this.element.querySelector('[aria-haspopup=\"menu\"]');\n if (format !== null) writeSelectorKey(format, 'part', 'format');\n });\n }\n\n protected round(value: number) {\n return Math.round(value);\n }\n\n protected percent(value: number) {\n return `${Math.round(value * 100)} %`;\n }\n\n writeValue(value: string | null | undefined) {\n if (value != null) this.own.set(value);\n }\n\n registerOnChange(fn: (value: string) => void) {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.formDisabled.set(isDisabled);\n }\n\n /** Asks to move to `next`, and moves an uncontrolled value once nobody refused. */\n request(next: string, reason: ChangeReason, source: Event | null) {\n const state = createControllable<string>({\n controlled: this.value(),\n initial: this.current(),\n onRequest: (change) => this.valueChange.emit(change),\n });\n if (state.request(next, reason, source ?? undefined)) {\n this.own.set(next);\n this.onChangeFn(next);\n }\n }\n\n private requestHsva(next: Hsva, reason: ChangeReason, source: Event) {\n this.memory.h = next.h;\n this.memory.s = next.s;\n const rgba = hsvaToRgba({ ...next, a: this.alpha() ? next.a : 1 });\n this.request(formatColor(rgba, this.resolvedFormat()), reason, source);\n }\n\n protected requestFormat(next: ColorFormat, source: Event | null) {\n const state = createControllable<ColorFormat>({\n controlled: this.format(),\n initial: this.resolvedFormat(),\n onRequest: (change) => this.formatChange.emit(change),\n });\n if (state.request(next, 'select', source ?? undefined) && this.format() === undefined) {\n this.ownFormat.set(next);\n }\n const parsed = this.parsed();\n if (parsed !== null) this.request(formatColor(parsed.rgba, next), 'select', source);\n }\n\n protected down(event: PointerEvent, target: 'area' | 'hue' | 'alpha') {\n if (event.button !== 0 || this.off()) return;\n const box = event.currentTarget as HTMLElement;\n box.setPointerCapture(event.pointerId);\n this.dragging.set(target);\n this.place(event, target, box);\n (box.querySelector('[role=\"slider\"]') as HTMLElement | null)?.focus({ preventScroll: true });\n }\n\n protected move(event: PointerEvent, target: 'area' | 'hue' | 'alpha') {\n if (this.dragging() === target) this.place(event, target, event.currentTarget as HTMLElement);\n }\n\n private place(event: PointerEvent, target: 'area' | 'hue' | 'alpha', box: HTMLElement) {\n const rect = box.getBoundingClientRect();\n let x = clamp((event.clientX - rect.left) / rect.width, 0, 1);\n const y = clamp((event.clientY - rect.top) / rect.height, 0, 1);\n if (isRtl(box)) x = 1 - x;\n const hsva = this.hsva();\n if (target === 'area') this.requestHsva({ ...hsva, s: x, v: 1 - y }, 'pointer', event);\n else if (target === 'hue') this.requestHsva({ ...hsva, h: x * 360 }, 'pointer', event);\n else this.requestHsva({ ...hsva, a: x }, 'pointer', event);\n }\n\n protected areaKey(event: KeyboardEvent) {\n if (this.off()) return;\n const step = sliderStep(event, isRtl(this.element), 0.01, 0.1);\n if (step === null) return;\n event.preventDefault();\n const hsva = this.hsva();\n const horizontal = event.key === 'ArrowLeft' || event.key === 'ArrowRight';\n this.requestHsva(\n horizontal\n ? { ...hsva, s: clamp(hsva.s + step, 0, 1) }\n : { ...hsva, v: clamp(hsva.v + step, 0, 1) },\n 'keyboard',\n event,\n );\n }\n\n protected channelKey(event: KeyboardEvent, channel: 'hue' | 'alpha') {\n if (this.off()) return;\n const hue = channel === 'hue';\n const max = hue ? 360 : 1;\n const hsva = this.hsva();\n const current = hue ? hsva.h : hsva.a;\n let next: number | null = null;\n if (event.key === 'Home') next = 0;\n else if (event.key === 'End') next = max;\n else {\n const step = sliderStep(event, isRtl(this.element), hue ? 1 : 0.01, hue ? 10 : 0.1);\n if (step !== null) next = current + step;\n }\n if (next === null) return;\n event.preventDefault();\n this.requestHsva({ ...hsva, [hue ? 'h' : 'a']: clamp(next, 0, max) }, 'keyboard', event);\n }\n\n protected commit(event: Event) {\n const draft = this.draft();\n if (draft === null) return;\n const parsed = parseColor(draft);\n if (parsed !== null && !sameColor(draft, this.current())) {\n this.request(formatColor(parsed.rgba, this.resolvedFormat()), 'keyboard', event);\n }\n this.draft.set(null);\n }\n\n protected choose(preset: string, event: Event) {\n const parsed = parseColor(preset);\n if (parsed !== null)\n this.request(formatColor(parsed.rgba, this.resolvedFormat()), 'select', event);\n }\n\n protected presetKey(event: KeyboardEvent, index: number) {\n const rtl = isRtl(this.element);\n const forward = event.key === (rtl ? 'ArrowLeft' : 'ArrowRight') || event.key === 'ArrowDown';\n const back = event.key === (rtl ? 'ArrowRight' : 'ArrowLeft') || event.key === 'ArrowUp';\n if (!forward && !back) return;\n event.preventDefault();\n const presets = this.resolvedPresets();\n const next = (index + (forward ? 1 : -1) + presets.length) % presets.length;\n const sibling = (event.currentTarget as HTMLElement).parentElement?.children[next] as\n HTMLElement | undefined;\n sibling?.focus();\n this.choose(presets[next]!, event);\n }\n\n protected async pick(event: Event) {\n const EyeDropper = (\n window as unknown as {\n EyeDropper: new () => { open: () => Promise<{ sRGBHex: string }> };\n }\n ).EyeDropper;\n try {\n const { sRGBHex } = await new EyeDropper().open();\n const parsed = parseColor(sRGBHex);\n if (parsed !== null) {\n this.request(formatColor(parsed.rgba, this.resolvedFormat()), 'programmatic', event);\n }\n } catch {\n /* The reader pressed Escape: nothing was picked. */\n }\n }\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n forwardRef,\n HostAttributeToken,\n inject,\n input,\n model,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type { ControlValueAccessor } from '@angular/forms';\nimport {\n SlPopover,\n SlPopoverAnchor,\n SlPopoverBody,\n SlPopoverContent,\n SlPopoverLayer,\n SlPopoverTrigger,\n} from '@slotted/angular/popover';\nimport { injectMessages } from '@slotted/angular/i18n';\nimport { SlTextField, SlTextFieldInput, SlTextFieldStart } from '@slotted/angular/text-field';\nimport { clampToGamut, formatColor, parseColor, toCss } from '@slotted/core/color';\nimport type { ColorFormat } from '@slotted/core/color';\nimport {\n colorPickerMessages,\n type ColorPickerMessages,\n type PartialMessages,\n} from '@slotted/core/i18n';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeReason, ChangeRequest } from '@slotted/core/state';\n\nimport { SlColorPicker } from './color-picker';\nimport { injectColorPickerDefaults } from './color-picker-defaults';\nimport type { ColorPickerSize } from './color-picker-defaults';\n\nfunction sameColor(a: string, b: string): boolean {\n const pa = parseColor(a);\n const pb = parseColor(b);\n return pa !== null && pb !== null && formatColor(pa.rgba, 'hex') === formatColor(pb.rgba, 'hex');\n}\n\n/**\n * A `text-field` holding a colour: the swatch in its start opens the panel in\n * a popover, and the value can be typed in any notation and is kept in the\n * one shown. The text is the field's control, so a `slField` label names it;\n * the host is the consumer's element and the form control.\n */\n@Component({\n selector: 'div[slColorField]',\n standalone: true,\n exportAs: 'slColorField',\n imports: [\n SlColorPicker,\n SlPopover,\n SlPopoverAnchor,\n SlPopoverBody,\n SlPopoverContent,\n SlPopoverLayer,\n SlPopoverTrigger,\n SlTextField,\n SlTextFieldInput,\n SlTextFieldStart,\n ],\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SlColorField), multi: true },\n ],\n template: `\n <ng-container slPopover side=\"bottom\" align=\"start\" [(open)]=\"open\">\n <div slTextField slPopoverAnchor mono [size]=\"size()\">\n <span slTextFieldStart>\n <button\n slPopoverTrigger\n type=\"button\"\n data-ui=\"color-picker\"\n data-ui-color-picker=\"\"\n data-part=\"trigger\"\n data-part-trigger=\"\"\n [attr.aria-label]=\"t('trigger')\"\n [disabled]=\"resolvedDisabled()\"\n [style.--slotted-color-picker-color]=\"css()\"\n ></button>\n </span>\n <input\n slTextFieldInput\n dir=\"ltr\"\n spellcheck=\"false\"\n autocomplete=\"off\"\n [attr.aria-label]=\"label\"\n [disabled]=\"resolvedDisabled()\"\n [invalid]=\"draftValid() ? undefined : true\"\n [value]=\"draft() ?? current()\"\n (valueChange)=\"draft.set($event.value)\"\n (keydown.enter)=\"$event.preventDefault(); commit($event)\"\n (blur)=\"commit($event); onTouched()\"\n />\n </div>\n <ng-template slPopoverLayer>\n <div slPopoverContent [attr.aria-label]=\"t('trigger')\">\n <div slPopoverBody>\n <div\n slColorPicker\n [value]=\"current()\"\n [format]=\"resolvedFormat()\"\n [alpha]=\"alpha()\"\n [presets]=\"presets()\"\n [contrastWith]=\"contrastWith()\"\n [messages]=\"messages()\"\n (valueChange)=\"request($event.value, $event.reason, $event.source)\"\n (formatChange)=\"ownFormat.set($event.value); formatChange.emit($event)\"\n ></div>\n </div>\n </div>\n </ng-template>\n </ng-container>\n `,\n /* The swatch's stylesheet: carried by the panel alone, it arrived on the first open. */\n styleUrls: ['../../../styles/src/color-picker/color-picker.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { '[attr.aria-label]': 'null' },\n})\nexport class SlColorField implements ControlValueAccessor {\n readonly value = input<string | undefined>(undefined);\n readonly defaultValue = input<string | undefined>(undefined);\n readonly format = input<ColorFormat | undefined>(undefined);\n readonly alpha = input(true, { transform: booleanAttribute });\n readonly presets = input<readonly string[] | undefined>(undefined);\n readonly contrastWith = input<string | undefined>(undefined);\n readonly size = input<ColorPickerSize | undefined>(undefined);\n readonly disabled = input(false, { transform: booleanAttribute });\n /** Words laid over the catalog of the language in force, for the trigger and the panel. */\n readonly messages = input<PartialMessages<ColorPickerMessages> | undefined>(undefined);\n /** Whether the panel is open. */\n readonly open = model(false);\n\n readonly valueChange = output<ChangeRequest<string>>();\n readonly formatChange = output<ChangeRequest<ColorFormat>>();\n\n protected readonly defaults = injectColorPickerDefaults();\n /** The family's words in the language in force, with this field's `messages` laid over them. */\n readonly t = injectMessages(colorPickerMessages, this.messages);\n /** The consumer's name for the field, moved onto the text it names. */\n protected readonly label = inject(new HostAttributeToken('aria-label'), { optional: true });\n\n private readonly own = signal<string | undefined>(undefined);\n protected readonly ownFormat = signal<ColorFormat | undefined>(undefined);\n private readonly formDisabled = signal(false);\n protected readonly draft = signal<string | null>(null);\n private onChangeFn: (value: string) => void = () => undefined;\n protected onTouched: () => void = () => undefined;\n\n readonly current = computed(() => this.value() ?? this.own() ?? this.defaultValue() ?? '#000000');\n protected readonly resolvedFormat = computed(\n () =>\n this.format() ??\n this.ownFormat() ??\n parseColor(this.current())?.format ??\n this.defaults.format,\n );\n protected readonly resolvedDisabled = computed(() => this.disabled() || this.formDisabled());\n protected readonly css = computed(() =>\n toCss(clampToGamut(parseColor(this.current())?.rgba ?? { r: 0, g: 0, b: 0, a: 1 })),\n );\n protected readonly draftValid = computed(() => {\n const draft = this.draft();\n return draft === null || parseColor(draft) !== null;\n });\n\n writeValue(value: string | null | undefined) {\n if (value != null) this.own.set(value);\n }\n\n registerOnChange(fn: (value: string) => void) {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.formDisabled.set(isDisabled);\n }\n\n protected request(next: string, reason: ChangeReason, source: unknown) {\n const state = createControllable<string>({\n controlled: this.value(),\n initial: this.current(),\n onRequest: (change) => this.valueChange.emit(change),\n });\n if (state.request(next, reason, source)) {\n this.own.set(next);\n this.onChangeFn(next);\n }\n }\n\n protected commit(event: Event) {\n const draft = this.draft();\n if (draft === null) return;\n const parsed = parseColor(draft);\n if (parsed !== null && !sameColor(draft, this.current())) {\n this.request(formatColor(parsed.rgba, this.resolvedFormat()), 'keyboard', event);\n }\n this.draft.set(null);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["sameColor"],"mappings":"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"}
|