@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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slotted-angular-time-range-picker.mjs","sources":["../../time-range-picker/src/time-range-picker-defaults.ts","../../time-range-picker/src/time-range-picker-parts.ts","../../time-range-picker/src/time-range-picker.ts","../../time-range-picker/src/slotted-angular-time-range-picker.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\nimport { durationLabel } from '@slotted/core/date';\nimport type { PlainTime, TimeGranularity, TimeRangeValue } from '@slotted/core/date';\n\n/** A run of times, either end of which may be open. */\nexport type TimeRange = TimeRangeValue;\n\n/** Where the surface opens, before the positioner has read the room. */\nexport type TimeRangePickerPlacement =\n 'bottom-start' | 'bottom' | 'bottom-end' | 'top-start' | 'top' | 'top-end';\n\n/**\n * Whether choosing closes the surface. `auto` closes when the work becomes\n * whole — by a press in a list, by `now` or by a preset — and stays open\n * while an end is still missing, because the next press has to reach the\n * same surface.\n */\nexport type TimeRangePickerCloseOnSelect = 'auto' | 'always' | 'never';\n\n/** What a time a bound or the predicate refuses looks like in a list. */\nexport type TimeRangePickerUnavailableOptions = 'disable' | 'hide';\n\nexport type TimeRangePickerSize = 'sm' | 'md' | 'lg';\nexport type TimeRangePickerVariant = 'outline' | 'subtle' | 'plain';\nexport type TimeRangePickerHourCycle = 12 | 24;\n\n/** The end being edited: the field and the panel carrying `data-current`. */\nexport type TimeRangePickerPosition = 'start' | 'end';\n\n/** The highlighted option of each list. */\nexport interface TimeRangePickerHighlight {\n readonly start: PlainTime | null;\n readonly end: PlainTime | null;\n}\n\n/** A quarter of an hour, the step every surveyed panel defaults to within a factor of two. */\nexport const TIME_RANGE_PICKER_STEP = 900;\n/** A whole day at a one-minute step: the finest whole-day list any surveyed implementation offers. */\nexport const TIME_RANGE_PICKER_MAX_OPTIONS = 1440;\n\n/** \"2 hr 30 min\": the duration the band and the rows say, in the family's locale. */\nexport function timeRangePickerLengthLabel(seconds: number, locale?: string): string {\n return durationLabel(seconds, locale);\n}\n\nexport interface TimeRangePickerDefaults {\n closeOnSelect: TimeRangePickerCloseOnSelect;\n granularity: TimeGranularity;\n hourCycle: TimeRangePickerHourCycle | undefined;\n /** \"2 hr 30 min\", in the product's own words; seconds in, and the family's locale. */\n lengthLabel: (seconds: number, locale: string | undefined) => string;\n maxOptions: number;\n placement: TimeRangePickerPlacement;\n size: TimeRangePickerSize;\n step: number;\n timeZone: string | undefined;\n unavailableOptions: TimeRangePickerUnavailableOptions;\n variant: TimeRangePickerVariant;\n}\n\nconst FALLBACK: TimeRangePickerDefaults = {\n closeOnSelect: 'auto',\n granularity: 'minute',\n hourCycle: undefined,\n lengthLabel: timeRangePickerLengthLabel,\n maxOptions: TIME_RANGE_PICKER_MAX_OPTIONS,\n placement: 'bottom-start',\n size: 'md',\n step: TIME_RANGE_PICKER_STEP,\n timeZone: undefined,\n unavailableOptions: 'disable',\n variant: 'outline',\n};\n\nexport const TIME_RANGE_PICKER_DEFAULTS = new InjectionToken<TimeRangePickerDefaults>(\n 'slotted time range picker defaults',\n { providedIn: 'root', factory: () => FALLBACK },\n);\n\n/**\n * An application decides once what its times look like, what step its lists\n * offer and how a duration is written — rather than repeating the same inputs\n * on every picker in a form. The locale and the words come from the language\n * in force (`provideSlotted`).\n */\nexport function provideTimeRangePickerDefaults(defaults: Partial<TimeRangePickerDefaults>) {\n return {\n provide: TIME_RANGE_PICKER_DEFAULTS,\n useFactory: (): TimeRangePickerDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\n/** What a time range picker renders as here, before it states anything of its own. */\nexport function injectTimeRangePickerDefaults(): TimeRangePickerDefaults {\n return inject(TIME_RANGE_PICKER_DEFAULTS);\n}\n","import { Directive } from '@angular/core';\n\n/**\n * The consumer's own shortcuts, beside the two lists where there is room and\n * above them where there is not. Each one is a `slTimeRangePickerPreset` button.\n */\n@Directive({\n selector: '[slTimeRangePickerPresets]',\n standalone: true,\n exportAs: 'slTimeRangePickerPresets',\n host: { 'data-part': 'presets' },\n})\nexport class SlTimeRangePickerPresets {}\n\n/** The consumer's own actions, under the two lists. */\n@Directive({\n selector: '[slTimeRangePickerFooter]',\n standalone: true,\n exportAs: 'slTimeRangePickerFooter',\n host: { 'data-part': 'footer' },\n})\nexport class SlTimeRangePickerFooter {}\n\n/**\n * What one row of a list draws.\n *\n * The row is the family's — its role, its states, its keyboard and its target\n * size — and what is written inside it is the consumer's. It is a template\n * rather than a projected slot because it is re-rendered once per option. The\n * context carries the time as `$implicit`, plus `position`, `label`,\n * `duration`, `selected`, `current` and `unavailable`.\n */\n@Directive({\n selector: '[slTimeRangePickerOption]',\n standalone: true,\n exportAs: 'slTimeRangePickerOption',\n})\nexport class SlTimeRangePickerOption {}\n","import {\n compareTime,\n createTimeFormat,\n firstUnavailableIndex,\n hourJump,\n isSameTime,\n isTruncated,\n nearestIndex,\n openingIndex as openingIndexOf,\n nowIn,\n runRefusal,\n secondsOfDay,\n timeList,\n timeRangeProblems,\n timeRangeSeconds,\n toISOTime,\n} from '@slotted/core/date';\nimport type { PlainTime, TimeOption } from '@slotted/core/date';\nimport { createDismissableLayer } from '@slotted/core/dismissable-layer';\nimport type { DismissableLayerHandle } from '@slotted/core/dismissable-layer';\nimport { createPositioner } from '@slotted/core/positioner';\nimport type { PositionerHandle } from '@slotted/core/positioner';\nimport {\n timeRangePickerMessages,\n type PartialMessages,\n type TimeRangePickerMessages,\n} from '@slotted/core/i18n';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeReason, ChangeRequest } from '@slotted/core/state';\nimport { createTypeahead, isPrintable } from '@slotted/core/typeahead';\nimport type { TypeaheadHandle } from '@slotted/core/typeahead';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n ContentChild,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n forwardRef,\n inject,\n Injector,\n input,\n numberAttribute,\n output,\n signal,\n TemplateRef,\n untracked,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport type { OnInit } from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type {\n AbstractControl,\n ControlValueAccessor,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { injectLocale, injectMessages } from '@slotted/angular/i18n';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport { SlField } from '@slotted/angular/field';\nimport { SlTimeField } from '@slotted/angular/time-field';\nimport type { TimeFieldChangeRequest } from '@slotted/angular/time-field';\n\nimport { injectTimeRangePickerDefaults } from './time-range-picker-defaults';\nimport type {\n TimeRange,\n TimeRangePickerCloseOnSelect,\n TimeRangePickerDefaults,\n TimeRangePickerHighlight,\n TimeRangePickerHourCycle,\n TimeRangePickerPlacement,\n TimeRangePickerPosition,\n TimeRangePickerSize,\n TimeRangePickerUnavailableOptions,\n TimeRangePickerVariant,\n} from './time-range-picker-defaults';\nimport { SlTimeRangePickerOption } from './time-range-picker-parts';\n\n/**\n * Below this width, on a finger, the surface is a sheet rather than a popover.\n * The query is here as well as in the stylesheet because the DOM has to say\n * which presentation it is in, and a media query cannot write an attribute.\n */\nconst SHEET_QUERY = '(max-width: 480px) and (pointer: coarse)';\n/** The surface needs an identifier the trigger can point `aria-controls` at. */\nlet sequence = 0;\n\nconst EMPTY: TimeRange = { start: null, end: null };\nconst NO_HIGHLIGHT: TimeRangePickerHighlight = { start: null, end: null };\n\n/** The one word for nothing: a value whose both ends are `null` is `null`. */\nfunction normalize(range: TimeRange | null | undefined): TimeRange | null {\n return range === null || range === undefined || (range.start === null && range.end === null)\n ? null\n : range;\n}\n\nexport function isSameTimeRange(a: TimeRange | null, b: TimeRange | null): boolean {\n if (a === null || b === null) return a === b;\n return isSameTime(a.start, b.start) && isSameTime(a.end, b.end);\n}\n\n/**\n * Scrolls the list alone. `scrollIntoView` would scroll every ancestor too,\n * and a page with an open surface must not jump when a list opens on its\n * highlight. Centred when the list opens, and by the least that lands the row\n * whole when a key moves the highlight. jsdom measures nothing, so it is a\n * no-op there rather than a throw.\n */\nfunction revealRow(list: HTMLElement, row: HTMLElement, centre: boolean) {\n const box = list.getBoundingClientRect();\n const cell = row.getBoundingClientRect();\n if (box.height === 0 || cell.height === 0) return;\n const above = cell.top - box.top;\n if (centre) list.scrollTop += above - (box.height - cell.height) / 2;\n else if (above < 0) list.scrollTop += above;\n else if (cell.bottom > box.bottom) list.scrollTop += cell.bottom - box.bottom;\n}\n\nfunction other(position: TimeRangePickerPosition): TimeRangePickerPosition {\n return position === 'start' ? 'end' : 'start';\n}\n\n/**\n * A one-line frame — the value in words, a clear and the trigger — and behind\n * it one end at a time: two tabs, the field of the current end, a hint, and\n * the list of that end.\n *\n * **The frame is one line at any width.** Two segmented fields stood in it\n * first and were withdrawn at the visual gate: a segment cannot shrink, and\n * two of them broke the frame into two lines in any form column narrower than\n * they are. The field lives in the panel's band, where the reader types.\n *\n * **One end at a time.** Two lists side by side were refused at the release\n * gate as too much interface at once for a lay reader and for a phone. The\n * tab says which end, the panel shows only that end, and choosing one end\n * moves to the other — the end list appears already striking what the chosen\n * start refuses, every row saying the duration the run would have.\n *\n * **A press that leaves the work with one end is not the value.** The press\n * that completes it emits the whole run; `Escape`, an outside press and the\n * trigger abandon the work. An end typed in the field is a value on its own.\n */\n@Component({\n selector: '[slTimeRangePicker]',\n standalone: true,\n exportAs: 'slTimeRangePicker',\n imports: [NgTemplateOutlet, SlGlyph, SlIcon, SlTimeField],\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SlTimeRangePicker), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => SlTimeRangePicker), multi: true },\n ],\n template: `<div data-part=\"control\" (focusout)=\"onControlFocusOut($event)\">\n <button\n #trigger\n data-part=\"trigger\"\n type=\"button\"\n aria-haspopup=\"dialog\"\n [attr.aria-label]=\"triggerLabel()\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"isOpen() ? contentId : null\"\n [disabled]=\"!editable()\"\n (click)=\"toggle($event)\"\n (keydown)=\"onTriggerKeyDown($event)\"\n >\n <span data-part=\"summary\" [attr.data-placeholder]=\"summary() === null ? '' : null\">{{\n summary() ?? t('choose')\n }}</span>\n <span slIcon><svg slGlyph name=\"clock\"></svg></span>\n </button>\n @if (clearable() && held() !== null) {\n <button\n data-part=\"clear\"\n type=\"button\"\n [attr.aria-label]=\"t('clear')\"\n [disabled]=\"!editable()\"\n (click)=\"clear($event)\"\n >\n <span slIcon><svg slGlyph name=\"x\"></svg></span>\n </button>\n }\n <input\n data-part=\"hidden-input\"\n type=\"hidden\"\n [attr.name]=\"startName()\"\n [value]=\"startIso()\"\n />\n <input data-part=\"hidden-input\" type=\"hidden\" [attr.name]=\"endName()\" [value]=\"endIso()\" />\n </div>\n\n @if (isOpen()) {\n <div\n #layer\n data-ui=\"time-range-picker\"\n data-part=\"positioner\"\n data-open\n [attr.data-presentation]=\"sheet() ? 'sheet' : 'popover'\"\n [attr.data-positioned]=\"positioned() ? '' : null\"\n >\n <div\n data-part=\"content\"\n role=\"dialog\"\n [attr.id]=\"contentId\"\n [attr.aria-label]=\"triggerLabel()\"\n >\n <div data-part=\"head\">\n <div data-part=\"tabs\" role=\"tablist\">\n @for (position of positions; track position) {\n <button\n data-part=\"tab\"\n role=\"tab\"\n type=\"button\"\n [attr.id]=\"contentId + '-tab-' + position\"\n [attr.data-position]=\"position\"\n [attr.aria-selected]=\"currentPosition() === position\"\n [attr.aria-controls]=\"contentId + '-panel'\"\n [attr.data-current]=\"currentPosition() === position ? '' : null\"\n [attr.data-placeholder]=\"work()[position] === null ? '' : null\"\n [tabindex]=\"currentPosition() === position ? 0 : -1\"\n [disabled]=\"!editable()\"\n (click)=\"selectTab(position, $event)\"\n (keydown)=\"onTabKeyDown($event)\"\n >\n <span data-part=\"tab-label\">{{ labelFor(position) }}</span>\n <span data-part=\"tab-value\">{{ tabValue(position) }}</span>\n </button>\n }\n </div>\n <div #fieldBox data-part=\"field\" [attr.data-position]=\"currentPosition()\">\n <div\n slTimeField\n #field=\"slTimeField\"\n variant=\"plain\"\n size=\"sm\"\n [label]=\"labelFor(currentPosition())\"\n [locale]=\"resolvedLocale()\"\n [timeZone]=\"resolvedTimeZone()\"\n [hourCycle]=\"resolvedHourCycle()\"\n [granularity]=\"resolvedGranularity()\"\n [referenceTime]=\"referenceTime()\"\n [relative]=\"relative()\"\n [min]=\"currentPosition() === 'end' ? endMin() : min()\"\n [max]=\"currentPosition() === 'start' ? startMax() : max()\"\n [isTimeUnavailable]=\"isTimeUnavailable()\"\n [invalid]=\"currentPosition() === 'end' && workReversed() ? true : undefined\"\n [disabled]=\"resolvedDisabled()\"\n [readOnly]=\"resolvedReadOnly()\"\n [required]=\"resolvedRequired()\"\n [value]=\"work()[currentPosition()]\"\n (valueChange)=\"onFieldValue($event)\"\n ></div>\n </div>\n <button\n data-part=\"now\"\n type=\"button\"\n [disabled]=\"!editable()\"\n (click)=\"chooseNow($event)\"\n >\n {{ t('now') }}\n </button>\n <span\n data-part=\"hint\"\n [attr.id]=\"contentId + '-hint'\"\n [attr.data-invalid]=\"hintProblem() === undefined ? null : ''\"\n >{{ hint() }}</span\n >\n <span\n data-part=\"length\"\n aria-live=\"polite\"\n [attr.data-pending]=\"pending() === null ? null : ''\"\n >{{ spokenLength() }}</span\n >\n @if (limitText() !== null) {\n <span data-part=\"limit\">{{ limitText() }}</span>\n }\n </div>\n <ng-content select=\"[slTimeRangePickerPresets]\" />\n @if (currentPosition(); as position) {\n <div data-part=\"panel\" [attr.id]=\"contentId + '-panel'\" [attr.data-position]=\"position\">\n @if (lists()[position].length === 0) {\n <div data-part=\"empty\">{{ t('empty') }}</div>\n } @else {\n <div\n data-part=\"list\"\n role=\"listbox\"\n [attr.aria-labelledby]=\"contentId + '-tab-' + position\"\n [attr.aria-describedby]=\"hint() === '' ? null : contentId + '-hint'\"\n [attr.aria-description]=\"truncated() ? t('truncated') : null\"\n [attr.data-truncated]=\"truncated() ? '' : null\"\n (keydown)=\"onListKeyDown(position, $event)\"\n (focusin)=\"listFocused.set(true)\"\n (focusout)=\"onListFocusOut($event)\"\n (pointerleave)=\"hovered.set(null)\"\n >\n @for (option of lists()[position]; track $index) {\n <div\n data-part=\"option\"\n role=\"option\"\n [attr.aria-selected]=\"isSelected(position, option)\"\n [attr.aria-disabled]=\"option.unavailable ? 'true' : null\"\n [attr.data-disabled]=\"option.unavailable ? '' : null\"\n [attr.data-selected]=\"isSelected(position, option) ? '' : null\"\n [attr.data-current]=\"$index === highlightIndex(position) ? '' : null\"\n [tabindex]=\"$index === highlightIndex(position) ? 0 : -1\"\n (click)=\"select(position, option, $event)\"\n (pointerenter)=\"hover(position, option)\"\n >\n @if (optionTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"optionTemplate\"\n [ngTemplateOutletContext]=\"contextFor(position, option, $index)\"\n />\n } @else {\n {{ labels()[position][$index] }}\n @if (durationOf(position, option); as duration) {\n <span data-part=\"option-duration\">{{ duration }}</span>\n }\n }\n </div>\n }\n </div>\n }\n </div>\n }\n <div data-part=\"footer\">\n <ng-content select=\"[slTimeRangePickerFooter]\" />\n <button data-part=\"done\" type=\"button\" (click)=\"done($event)\">\n {{ t('done') }}\n </button>\n </div>\n </div>\n </div>\n }`,\n styleUrl: '../../../styles/src/time-range-picker/time-range-picker.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'time-range-picker',\n 'data-part': 'root',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-variant]': 'resolvedVariant()',\n '[attr.data-granularity]': 'resolvedGranularity()',\n '[attr.data-open]': \"isOpen() ? '' : null\",\n '[attr.data-disabled]': \"resolvedDisabled() === true ? '' : null\",\n '[attr.data-invalid]': \"resolvedInvalid() === true ? '' : null\",\n '[attr.data-readonly]': \"resolvedReadOnly() === true ? '' : null\",\n '[attr.data-required]': \"resolvedRequired() === true ? '' : null\",\n },\n})\nexport class SlTimeRangePicker implements ControlValueAccessor, Validator, OnInit {\n readonly value = input<TimeRange | null | undefined>(undefined);\n readonly defaultValue = input<TimeRange | null | undefined>(undefined);\n /** Present means the consumer owns whether the surface is showing. */\n readonly open = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly defaultOpen = input(false, { transform: booleanAttribute });\n /** Present means the consumer owns which end is being edited. */\n readonly position = input<TimeRangePickerPosition | undefined>(undefined);\n readonly defaultPosition = input<TimeRangePickerPosition>('start');\n /** Where the reader is in each list. Present means the consumer owns it. */\n readonly highlighted = input<TimeRangePickerHighlight | undefined>(undefined);\n readonly defaultHighlighted = input<TimeRangePickerHighlight | undefined>(undefined);\n\n readonly min = input<PlainTime | undefined>(undefined);\n readonly max = input<PlainTime | undefined>(undefined);\n readonly isTimeUnavailable = input<((time: PlainTime) => boolean) | undefined>(undefined);\n /**\n * Whether a run may cross an unavailable time. On, and with a start chosen,\n * the options beyond the first unavailable one are refused in the end list.\n */\n readonly contiguous = input(true, { transform: booleanAttribute });\n /** The shortest and longest run allowed, in seconds. */\n readonly minLength = input<number | undefined, unknown>(undefined, {\n transform: (value) =>\n value === undefined || value === null ? undefined : numberAttribute(value),\n });\n readonly maxLength = input<number | undefined, unknown>(undefined, {\n transform: (value) =>\n value === undefined || value === null ? undefined : numberAttribute(value),\n });\n readonly lengthLabel = input<TimeRangePickerDefaults['lengthLabel'] | undefined>(undefined);\n\n /** Seconds between two offered times. Ignored when `options` states the list. */\n readonly step = input<number | undefined, unknown>(undefined, {\n transform: (value) =>\n value === undefined || value === null ? undefined : numberAttribute(value),\n });\n /** The times to offer, stated rather than stepped; the same list for both ends. */\n readonly options = input<readonly PlainTime[] | undefined>(undefined);\n readonly maxOptions = input<number | undefined, unknown>(undefined, {\n transform: (value) =>\n value === undefined || value === null ? undefined : numberAttribute(value),\n });\n readonly unavailableOptions = input<TimeRangePickerUnavailableOptions | undefined>(undefined);\n\n /** BCP 47. Unset, the language in force (`provideSlotted`) decides. */\n readonly locale = input<string | undefined>(undefined);\n readonly timeZone = input<string | undefined>(undefined);\n readonly hourCycle = input<TimeRangePickerHourCycle | undefined>(undefined);\n readonly granularity = input<TimeRangePickerDefaults['granularity'] | undefined>(undefined);\n /** What \"now\" is, for a story or a test; the clock otherwise. */\n readonly referenceTime = input<PlainTime | undefined>(undefined);\n\n readonly size = input<TimeRangePickerSize | undefined>(undefined);\n readonly variant = input<TimeRangePickerVariant | undefined>(undefined);\n readonly placement = input<TimeRangePickerPlacement | undefined>(undefined);\n readonly closeOnSelect = input<TimeRangePickerCloseOnSelect | undefined>(undefined);\n\n readonly disabled = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly readOnly = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly invalid = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly required = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n\n /** Draws one clear on the frame, which empties both ends. */\n readonly clearable = input(false, { transform: booleanAttribute });\n /** Whether the two fields in the band take the relative expression. */\n readonly relative = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n /**\n * Words laid over the catalog of the language in force, key by key: the\n * trigger's names, the two ends, the hint, the limit, and what a panel says\n * when it is empty or cut short.\n */\n readonly messages = input<PartialMessages<TimeRangePickerMessages> | undefined>(undefined);\n /** The names of the two hidden inputs a plain form post reads. */\n readonly startName = input<string | undefined>(undefined);\n readonly endName = input<string | undefined>(undefined);\n\n readonly valueChange = output<ChangeRequest<TimeRange | null>>();\n readonly openChange = output<ChangeRequest<boolean>>();\n readonly positionChange = output<ChangeRequest<TimeRangePickerPosition>>();\n readonly highlightedChange = output<ChangeRequest<TimeRangePickerHighlight>>();\n\n /** What one row draws; a template, because it is re-rendered once per option. */\n @ContentChild(SlTimeRangePickerOption, { read: TemplateRef })\n protected optionTemplate?: TemplateRef<unknown>;\n @ViewChild('layer') protected layer?: ElementRef<HTMLElement>;\n /** Whether the lists were scrolled to their highlight since the surface opened. */\n private revealed = false;\n @ViewChild('trigger') protected triggerRef?: ElementRef<HTMLButtonElement>;\n @ViewChild('field') protected field?: SlTimeField;\n @ViewChild('fieldBox') protected fieldBox?: ElementRef<HTMLElement>;\n\n private readonly element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n protected readonly defaults = injectTimeRangePickerDefaults();\n private readonly appLocale = injectLocale();\n /** The family's words in the language in force, with this picker's `messages` laid over them. */\n readonly t = injectMessages(timeRangePickerMessages, this.messages);\n private readonly injector = inject(Injector);\n private readonly destroyRef = inject(DestroyRef);\n private readonly enclosing = inject(SlField, { optional: true });\n\n protected readonly contentId = `sl-time-range-picker-${String((sequence += 1))}`;\n protected readonly positions: readonly TimeRangePickerPosition[] = ['start', 'end'];\n\n private readonly ownOpen = signal(false);\n private readonly ownValue = signal<TimeRange | null>(null);\n private readonly ownPosition = signal<TimeRangePickerPosition>('start');\n private readonly ownHighlight = signal<TimeRangePickerHighlight>(NO_HIGHLIGHT);\n private readonly formDisabled = signal<boolean | undefined>(undefined);\n private readonly clock = signal<PlainTime>({ hour: 12, minute: 0, second: 0 });\n protected readonly positioned = signal(false);\n protected readonly sheet = signal(false);\n /**\n * The work: the two ends as the reader left them while the panel is open. A\n * press in a list writes it; the value is asked for when it is whole. Closed\n * by anything, it is rebuilt from the value on the next open.\n */\n protected readonly work = signal<TimeRange>(EMPTY);\n /** The option under the pointer, which enters the duration and nothing else. */\n protected readonly hovered = signal<{\n position: TimeRangePickerPosition;\n time: PlainTime;\n } | null>(null);\n /** Whether the list holds focus, so its highlight is the pending end. */\n protected readonly listFocused = signal(false);\n /** Where focus lands once the surface is drawn. */\n private focusOnOpen: 'field' | 'list' | null = null;\n\n private positioner: PositionerHandle | null = null;\n private dismissable: DismissableLayerHandle | null = null;\n private readonly typeaheads: Record<TimeRangePickerPosition, TypeaheadHandle | null> = {\n start: null,\n end: null,\n };\n\n private onChangeFn: (value: TimeRange | null) => void = () => undefined;\n private onTouchedFn: () => void = () => undefined;\n private onValidatorChangeFn: () => void = () => undefined;\n\n protected readonly isOpen = computed(() => this.open() ?? this.ownOpen());\n protected readonly held = computed(() => {\n const value = this.value();\n return value === undefined ? this.ownValue() : normalize(value);\n });\n /** The range the picker holds. Public, so a preset can compare itself to it. */\n readonly selection = computed(() => this.held());\n protected readonly currentPosition = computed(() => this.position() ?? this.ownPosition());\n protected readonly highlight = computed(() => this.highlighted() ?? this.ownHighlight());\n protected readonly start = computed(() => this.held()?.start ?? null);\n protected readonly end = computed(() => this.held()?.end ?? null);\n protected readonly startIso = computed(() => {\n const start = this.start();\n return start === null ? '' : toISOTime(start);\n });\n protected readonly endIso = computed(() => {\n const end = this.end();\n return end === null ? '' : toISOTime(end);\n });\n\n protected readonly resolvedLocale = computed(() => this.locale() ?? this.appLocale());\n protected readonly resolvedTimeZone = computed(() => this.timeZone() ?? this.defaults.timeZone);\n protected readonly resolvedHourCycle = computed(\n () => this.hourCycle() ?? this.defaults.hourCycle,\n );\n protected readonly resolvedGranularity = computed(\n () => this.granularity() ?? this.defaults.granularity,\n );\n protected readonly resolvedSize = computed(\n () => this.size() ?? this.enclosing?.resolvedSize() ?? this.defaults.size,\n );\n protected readonly resolvedVariant = computed(() => this.variant() ?? this.defaults.variant);\n protected readonly resolvedPlacement = computed(\n () => this.placement() ?? this.defaults.placement,\n );\n protected readonly resolvedDisabled = computed(\n () => this.disabled() ?? this.formDisabled() ?? this.enclosing?.resolvedDisabled(),\n );\n protected readonly resolvedReadOnly = computed(\n () => this.readOnly() ?? this.enclosing?.resolvedReadOnly(),\n );\n protected readonly resolvedRequired = computed(\n () => this.required() ?? this.enclosing?.required(),\n );\n protected readonly editable = computed(\n () => this.resolvedDisabled() !== true && this.resolvedReadOnly() !== true,\n );\n\n private readonly format = computed(() =>\n createTimeFormat({\n granularity: this.resolvedGranularity(),\n hourCycle: this.resolvedHourCycle(),\n locale: this.resolvedLocale(),\n }),\n );\n private readonly anchor = computed(() => this.referenceTime() ?? this.clock());\n private readonly lengthOf = computed(() => {\n const label = this.lengthLabel() ?? this.defaults.lengthLabel;\n const locale = this.resolvedLocale();\n return (seconds: number) => label(seconds, locale);\n });\n\n /**\n * Validity the family owns, beside the validity the consumer states: the\n * bounds, the predicate, the order of the two ends and the duration.\n */\n private readonly problems = computed(() =>\n timeRangeProblems(this.held(), {\n max: this.max(),\n maxLength: this.maxLength(),\n min: this.min(),\n minLength: this.minLength(),\n unavailable: this.isTimeUnavailable(),\n }),\n );\n protected readonly reversed = computed(() => this.problems().includes('order'));\n protected readonly resolvedInvalid = computed(() => {\n if (this.invalid() !== undefined) return this.invalid();\n if (this.problems().length > 0) return true;\n return this.enclosing?.invalid();\n });\n\n /* Crossed bounds, while the order holds. Reversed, each field keeps the\n outer bounds and the end field alone says the order is wrong. */\n private readonly workOrdered = computed(() => {\n const { start, end } = this.work();\n return start !== null && end !== null && compareTime(start, end) <= 0;\n });\n protected readonly startMax = computed(() => {\n const end = this.work().end;\n const max = this.max();\n if (!this.workOrdered() || end === null) return max;\n return max === undefined || compareTime(end, max) < 0 ? end : max;\n });\n protected readonly endMin = computed(() => {\n const start = this.work().start;\n const min = this.min();\n if (!this.workOrdered() || start === null) return min;\n return min === undefined || compareTime(start, min) > 0 ? start : min;\n });\n\n /* ── The two lists ─────────────────────────────────────────────────── */\n\n private readonly listOptions = computed(() => ({\n isTimeUnavailable: this.isTimeUnavailable(),\n max: this.max(),\n maxOptions: this.maxOptions() ?? this.defaults.maxOptions,\n min: this.min(),\n options: this.options(),\n step: this.step() ?? this.defaults.step,\n }));\n private readonly base = computed(() => timeList(this.listOptions()));\n protected readonly truncated = computed(() => isTruncated(this.listOptions()));\n\n /**\n * The list of one end: the shared list, and what the other end of the work\n * refuses of it — the options on the wrong side of it, those whose duration\n * would fall outside the limits, and with `contiguous` those beyond the\n * first refused option after it. The search runs over the list, never over\n * the seconds.\n */\n protected readonly lists = computed<Record<TimeRangePickerPosition, TimeOption[]>>(() => ({\n start: this.listFor('start'),\n end: this.listFor('end'),\n }));\n protected readonly labels = computed<Record<TimeRangePickerPosition, string[]>>(() => {\n const format = this.format();\n const lists = this.lists();\n return {\n start: lists.start.map((option) => format.format(option.time)),\n end: lists.end.map((option) => format.format(option.time)),\n };\n });\n\n private listFor(position: TimeRangePickerPosition): TimeOption[] {\n const base = this.base();\n const otherEnd = this.work()[other(position)];\n let refused: (option: TimeOption, index: number) => boolean = () => false;\n if (otherEnd !== null) {\n const direction: 1 | -1 = position === 'end' ? 1 : -1;\n const anchorSeconds = secondsOfDay(otherEnd);\n const anchorIndex = nearestIndex(base, otherEnd);\n const wall = this.contiguous() ? firstUnavailableIndex(base, anchorIndex, direction) : -1;\n const rules = { maxLength: this.maxLength(), minLength: this.minLength() };\n refused = (option, index) =>\n runRefusal(anchorSeconds, secondsOfDay(option.time), direction, rules) ||\n (wall >= 0 && (direction === 1 ? index >= wall : index <= wall));\n }\n const marked = base.map((option, index) =>\n option.unavailable || !refused(option, index) ? option : { ...option, unavailable: true },\n );\n const hide = (this.unavailableOptions() ?? this.defaults.unavailableOptions) === 'hide';\n return hide ? marked.filter((option) => !option.unavailable) : marked;\n }\n\n protected highlightIndex(position: TimeRangePickerPosition): number {\n const time = this.highlight()[position];\n if (time === null) return -1;\n return this.lists()[position].findIndex((option) => isSameTime(option.time, time));\n }\n\n protected isSelected(position: TimeRangePickerPosition, option: TimeOption): boolean {\n return isSameTime(option.time, this.work()[position]);\n }\n\n /** The name of one end: the field's, its tab's and the hint's `{end}`. */\n protected labelFor(position: TimeRangePickerPosition): string {\n return this.t(position);\n }\n\n /** The end written short in the tab, or a dash. */\n protected tabValue(position: TimeRangePickerPosition): string {\n const time = this.work()[position];\n return time === null ? '—' : this.format().format(time);\n }\n\n /** The problems of the work as it stands, once it is whole. */\n private readonly workProblems = computed(() => {\n const work = this.work();\n if (work.start === null || work.end === null) return [];\n return timeRangeProblems(work, {\n max: this.max(),\n maxLength: this.maxLength(),\n min: this.min(),\n minLength: this.minLength(),\n unavailable: this.isTimeUnavailable(),\n });\n });\n protected readonly workReversed = computed(() => this.workProblems().includes('order'));\n protected readonly hintProblem = computed(() => this.workProblems()[0]);\n\n /**\n * What the next press should be, or what is wrong: the difference between a\n * panel that refuses and a panel that explains. Empty while the work is\n * whole and valid, when the length says the duration.\n */\n protected readonly hint = computed(() => {\n const position = this.currentPosition();\n if (this.work()[position] === null)\n return this.t('chooseTime', { end: this.labelFor(position) });\n const problem = this.hintProblem();\n if (problem === undefined) return '';\n return this.t(problem === 'min' || problem === 'max' ? 'bounds' : problem);\n });\n\n /** The duration a row would make with the other end as it stands, or `null`. */\n protected durationOf(position: TimeRangePickerPosition, option: TimeOption): string | null {\n const otherEnd = this.work()[other(position)];\n if (otherEnd === null || option.unavailable) return null;\n const seconds =\n position === 'end'\n ? timeRangeSeconds(otherEnd, option.time)\n : timeRangeSeconds(option.time, otherEnd);\n return this.lengthOf()(seconds);\n }\n\n protected contextFor(position: TimeRangePickerPosition, option: TimeOption, index: number) {\n return {\n $implicit: option.time,\n current: index === this.highlightIndex(position),\n duration: this.durationOf(position, option),\n label: this.labels()[position][index] ?? '',\n position,\n selected: this.isSelected(position, option),\n unavailable: option.unavailable,\n };\n }\n\n /* ── What is said ──────────────────────────────────────────────────── */\n\n /**\n * The pending end: the option under the pointer, or the highlighted option\n * of the list that has focus.\n */\n protected readonly pending = computed(() => {\n const hovered = this.hovered();\n if (hovered !== null) return hovered;\n if (!this.listFocused()) return null;\n const position = this.currentPosition();\n const time = this.highlight()[position];\n return time === null ? null : { position, time };\n });\n protected readonly spokenLength = computed(() => {\n const pending = this.pending();\n const run: TimeRange =\n pending === null ? this.work() : { ...this.work(), [pending.position]: pending.time };\n if (run.start === null || run.end === null) return '';\n return this.lengthOf()(timeRangeSeconds(run.start, run.end));\n });\n protected readonly limitText = computed(() => {\n const min = this.minLength();\n const max = this.maxLength();\n const length = this.lengthOf();\n if (min !== undefined && max !== undefined) {\n return this.t('limit.between', { min: length(min), max: length(max) });\n }\n if (min !== undefined) return this.t('limit.atLeast', { min: length(min) });\n if (max !== undefined) return this.t('limit.atMost', { max: length(max) });\n return null;\n });\n\n /** The trigger's accessible name: focus returns here when the surface closes. */\n protected readonly triggerLabel = computed(() => {\n const start = this.start();\n const end = this.end();\n if (start === null || end === null) return this.t('choose');\n const format = this.format();\n const ends = { start: format.describe(start), end: format.describe(end) };\n return compareTime(start, end) <= 0\n ? this.t('change', { ...ends, length: this.lengthOf()(timeRangeSeconds(start, end)) })\n : this.t('changeReversed', ends);\n });\n /** The value in words, one line; `null` while nothing is chosen. */\n protected readonly summary = computed(() => {\n if (this.held() === null) return null;\n const format = this.format();\n const start = this.start();\n const end = this.end();\n return `${start === null ? '' : format.format(start)} – ${end === null ? '' : format.format(end)}`.trim();\n });\n\n constructor() {\n /* The layer is created and torn down with the surface, not with the\n component: a layer that outlived its content would hold a place in the\n single stack that nothing occupies. The work starts from the value\n every time the panel opens. */\n effect(() => {\n const open = this.isOpen();\n if (!open) {\n this.release();\n return;\n }\n /* Read untracked: the work is rebuilt when the panel opens, and not\n again when the value moves while it is open. */\n untracked(() => {\n const held = this.held();\n this.work.set(held ?? EMPTY);\n this.hovered.set(null);\n const missing: TimeRangePickerPosition | null =\n held?.start == null ? 'start' : held.end === null ? 'end' : null;\n if (missing !== null && missing !== this.currentPosition()) {\n this.setPosition(missing, 'programmatic', undefined);\n }\n });\n afterNextRender(() => this.attach(), { injector: this.injector });\n });\n\n /* The highlight of each list lands where the list opens, and follows the\n lists under it. */\n effect(() => {\n if (!this.isOpen()) return;\n const lists = this.lists();\n const current = this.highlight();\n const next = { ...current };\n for (const position of this.positions) {\n const index = this.openingIndex(position);\n next[position] = index < 0 ? null : (lists[position][index]?.time ?? null);\n }\n if (!isSameTime(next.start, current.start) || !isSameTime(next.end, current.end)) {\n this.setHighlight(next, 'programmatic', undefined);\n }\n });\n\n /* The lists open on their highlight once the layer is rendered, and follow\n it while the lists under it change. */\n effect(() => {\n if (!this.isOpen()) {\n this.revealed = false;\n return;\n }\n this.highlight();\n this.lists();\n this.currentPosition();\n afterNextRender(\n () => {\n this.revealHighlights(!this.revealed);\n this.revealed = true;\n },\n { injector: this.injector },\n );\n });\n\n /* A rule that changed is a validity that changed, and the form is told. */\n effect(() => {\n this.problems();\n this.onValidatorChangeFn();\n });\n\n this.destroyRef.onDestroy(() => this.release());\n }\n\n ngOnInit() {\n this.ownOpen.set(this.defaultOpen());\n this.ownValue.set(normalize(this.defaultValue()));\n this.ownPosition.set(this.defaultPosition());\n this.ownHighlight.set(this.defaultHighlighted() ?? NO_HIGHLIGHT);\n this.clock.set(nowIn(this.resolvedTimeZone()));\n\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') return;\n const query = window.matchMedia(SHEET_QUERY);\n const read = () => this.sheet.set(query.matches);\n read();\n query.addEventListener('change', read);\n this.destroyRef.onDestroy(() => query.removeEventListener('change', read));\n }\n\n /* ── Forms ─────────────────────────────────────────────────────────── */\n\n writeValue(value: TimeRange | null | undefined) {\n this.ownValue.set(normalize(value));\n }\n\n registerOnChange(fn: (value: TimeRange | null) => void) {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.formDisabled.set(isDisabled);\n }\n\n registerOnValidatorChange(fn: () => void) {\n this.onValidatorChangeFn = fn;\n }\n\n /**\n * The rules no other validator can see: the bounds, the predicate, the\n * order of the two ends and the duration. `required` is left to Angular's\n * own, because a form already has a word for it.\n */\n validate(control: AbstractControl): ValidationErrors | null {\n const value = normalize(control.value as TimeRange | null | undefined);\n if (value === null) return null;\n const problems = timeRangeProblems(value, {\n max: this.max(),\n maxLength: this.maxLength(),\n min: this.min(),\n minLength: this.minLength(),\n unavailable: this.isTimeUnavailable(),\n });\n if (problems.length === 0) return null;\n const errors: ValidationErrors = {};\n if (problems.includes('order')) errors['slottedTimeRangeOrder'] = { actual: value };\n if (problems.includes('min'))\n errors['slottedTimeRangeMin'] = { min: this.min(), actual: value };\n if (problems.includes('max'))\n errors['slottedTimeRangeMax'] = { max: this.max(), actual: value };\n if (problems.includes('unavailable')) errors['slottedTimeRangeUnavailable'] = { actual: value };\n if (problems.includes('length')) {\n errors['slottedTimeRangeLength'] = {\n minLength: this.minLength(),\n maxLength: this.maxLength(),\n actual: value,\n };\n }\n return errors;\n }\n\n /* ── Imperative ────────────────────────────────────────────────────── */\n\n /** Puts focus on the trigger, which is the frame. */\n focus() {\n this.triggerRef?.nativeElement.focus();\n }\n\n openSurface(source?: Event) {\n this.setOpen(true, 'programmatic', source);\n }\n\n closeSurface(source?: Event) {\n this.setOpen(false, 'programmatic', source);\n }\n\n /** A preset writes its range through here, with the `select` reason. */\n choose(range: TimeRange, source?: Event) {\n this.work.set(range);\n this.commit(range, 'select', source);\n this.setPosition('start', 'select', source);\n this.closeAfter(true, source);\n }\n\n /* ── Handlers ──────────────────────────────────────────────────────── */\n\n protected toggle(source: Event) {\n this.focusOnOpen = 'field';\n this.setOpen(!this.isOpen(), 'pointer', source);\n }\n\n protected clear(source: Event) {\n this.work.set(EMPTY);\n this.commit(null, 'clear', source);\n this.setPosition('start', 'clear', source);\n this.focus();\n }\n\n protected onTriggerKeyDown(event: KeyboardEvent) {\n if (!this.editable()) return;\n /* ChromeOS turns the chord into PageDown before the browser sees it, which\n is why the trigger is the guaranteed way in and the chord a shortcut. */\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n this.focusOnOpen = 'list';\n if (!this.isOpen()) this.setOpen(true, 'keyboard', event);\n else this.enterList(this.currentPosition());\n return;\n }\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.focusOnOpen = 'field';\n this.setOpen(!this.isOpen(), 'keyboard', event);\n }\n }\n\n protected selectTab(position: TimeRangePickerPosition, source: Event) {\n if (position !== this.currentPosition()) this.setPosition(position, 'pointer', source);\n }\n\n /** Automatic activation: the arrow moves the position with it. */\n protected onTabKeyDown(event: KeyboardEvent) {\n const next: TimeRangePickerPosition | null =\n event.key === 'ArrowRight' || event.key === 'End'\n ? 'end'\n : event.key === 'ArrowLeft' || event.key === 'Home'\n ? 'start'\n : null;\n if (next === null) return;\n event.preventDefault();\n if (next !== this.currentPosition()) this.setPosition(next, 'keyboard', event);\n this.layer?.nativeElement\n .querySelector<HTMLElement>(`[data-part=\"tab\"][data-position=\"${next}\"]`)\n ?.focus({ preventScroll: true });\n }\n\n /**\n * The way out of a sheet that fills the screen, and of an edit left half\n * way: a whole work is the value; one end alone stays as it is.\n */\n protected done(source: Event) {\n const work = this.work();\n if (work.start !== null && work.end !== null && !isSameTimeRange(work, this.held())) {\n this.commit(work, 'select', source);\n }\n this.setOpen(false, 'pointer', source);\n this.triggerRef?.nativeElement.focus({ preventScroll: true });\n }\n\n protected onControlFocusOut(event: FocusEvent) {\n const next = event.relatedTarget;\n if (next instanceof Node && this.element.contains(next)) return;\n this.onTouchedFn();\n }\n\n protected onListFocusOut(event: FocusEvent) {\n const next = event.relatedTarget;\n if (next instanceof Node && (event.currentTarget as HTMLElement).contains(next)) return;\n this.listFocused.set(false);\n }\n\n protected hover(position: TimeRangePickerPosition, option: TimeOption) {\n this.hovered.set(option.unavailable ? null : { position, time: option.time });\n }\n\n /**\n * A field in the band writes its end to the work at every request it emits,\n * with the field's own reason, and an open end is a value on its own.\n */\n protected onFieldValue(request: TimeFieldChangeRequest) {\n const next: TimeRange = { ...this.work(), [this.currentPosition()]: request.value };\n this.work.set(next);\n this.commit(next, request.reason, request.source);\n }\n\n protected chooseNow(source: Event) {\n if (!this.editable()) return;\n this.writeEnd(this.currentPosition(), this.anchor(), source);\n }\n\n protected select(position: TimeRangePickerPosition, option: TimeOption, source: Event) {\n if (option.unavailable || !this.editable()) return;\n this.writeEnd(position, option.time, source);\n }\n\n /**\n * A press in a list, or on `now`: the end of that list is written to the\n * work. Whole, the work is the value and the panel closes when the press\n * completed it; incomplete, focus carries to the end that is missing.\n */\n private writeEnd(position: TimeRangePickerPosition, time: PlainTime, source: unknown) {\n const before = this.work();\n const wasWhole = before.start !== null && before.end !== null;\n const next: TimeRange = { ...before, [position]: time };\n this.work.set(next);\n this.setHighlight({ ...this.highlight(), [position]: time }, 'pointer', source);\n if (next.start !== null && next.end !== null) {\n this.commit(next, 'select', source);\n this.setPosition(position, 'select', source);\n this.closeAfter(!wasWhole, source);\n return;\n }\n this.enterList(other(position), source);\n }\n\n private closeAfter(completed: boolean, source: unknown) {\n const axis = this.closeOnSelect() ?? this.defaults.closeOnSelect;\n if (!(axis === 'always' || (axis === 'auto' && completed))) return;\n this.setOpen(false, 'select', source);\n this.triggerRef?.nativeElement.focus({ preventScroll: true });\n }\n\n /** Where a list opens: on its end, on the nearest step to now, or on the first available option. */\n private openingIndex(position: TimeRangePickerPosition): number {\n const work = this.work();\n const otherEnd = work[other(position)];\n return openingIndexOf(\n this.lists()[position],\n work[position] ?? otherEnd ?? this.anchor(),\n otherEnd,\n position,\n );\n }\n\n /**\n * Into the list of one end: the tab moves there when it is not the current\n * one, and focus lands on its highlight after the render that drew it.\n */\n private enterList(position: TimeRangePickerPosition, source?: unknown) {\n if (position !== this.currentPosition()) this.setPosition(position, 'select', source);\n afterNextRender(\n () => {\n const at = this.highlightIndex(position);\n const index = at >= 0 ? at : this.openingIndex(position);\n if (index < 0) {\n this.field?.focus();\n return;\n }\n const option = this.lists()[position][index];\n if (option !== undefined) {\n this.setHighlight(\n { ...this.highlight(), [position]: option.time },\n 'keyboard',\n undefined,\n );\n }\n this.focusOption(position, index);\n },\n { injector: this.injector },\n );\n }\n\n private focusOption(position: TimeRangePickerPosition, index: number) {\n const rows = this.layer?.nativeElement.querySelectorAll<HTMLElement>(\n `[data-part=\"panel\"][data-position=\"${position}\"] [data-part=\"option\"]`,\n );\n const row = rows?.[index];\n row?.focus();\n const list = row?.closest<HTMLElement>('[data-part=\"list\"]');\n if (row !== undefined && list) revealRow(list, row, false);\n }\n\n /** The list scrolled to its highlight: centred as the surface opens, by the least after. */\n private revealHighlights(centre: boolean) {\n const position = this.currentPosition();\n const index = this.highlightIndex(position);\n if (index < 0) return;\n const list = this.layer?.nativeElement.querySelector<HTMLElement>('[data-part=\"list\"]');\n const row = list?.querySelectorAll<HTMLElement>('[data-part=\"option\"]')[index];\n if (list && row !== undefined) revealRow(list, row, centre);\n }\n\n /** The field, or the list where the field is not drawn (a coarse pointer). */\n private focusField() {\n const box = this.fieldBox?.nativeElement;\n if (box !== undefined && getComputedStyle(box).display === 'none') {\n this.focusOption(\n this.currentPosition(),\n Math.max(0, this.highlightIndex(this.currentPosition())),\n );\n return;\n }\n this.field?.focus();\n }\n\n /* ── The keyboard ──────────────────────────────────────────────────── */\n\n protected onListKeyDown(position: TimeRangePickerPosition, event: KeyboardEvent) {\n const list = this.lists()[position];\n const found = this.highlightIndex(position);\n const at = found >= 0 ? found : 0;\n\n const move = (index: number) => {\n event.preventDefault();\n const clamped = Math.max(0, Math.min(list.length - 1, index));\n const option = list[clamped];\n if (option === undefined) return;\n this.setHighlight({ ...this.highlight(), [position]: option.time }, 'keyboard', event);\n this.focusOption(position, clamped);\n };\n\n switch (event.key) {\n case 'ArrowDown':\n move(at + 1);\n return;\n case 'ArrowUp':\n move(at - 1);\n return;\n case 'Home':\n move(0);\n return;\n case 'End':\n move(list.length - 1);\n return;\n case 'PageDown':\n move(hourJump(list, at, 1));\n return;\n case 'PageUp':\n move(hourJump(list, at, -1));\n return;\n case 'Enter':\n case ' ': {\n event.preventDefault();\n const option = list[at];\n if (option !== undefined) this.select(position, option, event);\n return;\n }\n default:\n break;\n }\n\n const typeahead = this.typeaheads[position];\n if (typeahead === null) return;\n if (!isPrintable(event.key, typeahead.query.length > 0)) return;\n const found2 = typeahead.match(event.key, this.labels()[position], at);\n if (found2 < 0) return;\n move(found2);\n }\n\n /* ── The machinery ─────────────────────────────────────────────────── */\n\n private commit(next: TimeRange | null, reason: ChangeReason, source: unknown) {\n const normalized = normalize(next);\n let cancelled = false;\n const state = createControllable<TimeRange | null>({\n controlled: this.value() === undefined ? undefined : this.held(),\n initial: this.held(),\n equals: isSameTimeRange,\n onRequest: (request) => {\n this.valueChange.emit(request);\n cancelled = request.cancelled;\n },\n });\n if (!state.request(normalized, reason, source) || cancelled) return;\n if (this.value() === undefined) this.ownValue.set(normalized);\n this.onChangeFn(normalized);\n }\n\n private setPosition(next: TimeRangePickerPosition, reason: ChangeReason, source: unknown) {\n const state = createControllable<TimeRangePickerPosition>({\n controlled: this.position(),\n initial: this.currentPosition(),\n onRequest: (request) => this.positionChange.emit(request),\n });\n if (state.request(next, reason, source)) this.ownPosition.set(next);\n }\n\n private setHighlight(next: TimeRangePickerHighlight, reason: ChangeReason, source: unknown) {\n const state = createControllable<TimeRangePickerHighlight>({\n controlled: this.highlighted(),\n initial: this.highlight(),\n equals: (a, b) => isSameTime(a.start, b.start) && isSameTime(a.end, b.end),\n onRequest: (request) => this.highlightedChange.emit(request),\n });\n if (state.request(next, reason, source)) this.ownHighlight.set(next);\n }\n\n private setOpen(next: boolean, reason: ChangeReason, source: unknown) {\n const state = createControllable<boolean>({\n controlled: this.open(),\n initial: this.isOpen(),\n onRequest: (request) => this.openChange.emit(request),\n });\n if (state.request(next, reason, source)) this.ownOpen.set(next);\n }\n\n /** Places the layer and puts it in the single stack. */\n private attach() {\n const layer = this.layer?.nativeElement;\n if (layer === undefined) return;\n this.release();\n\n if (!this.sheet()) {\n const anchor =\n this.element.querySelector<HTMLElement>('[data-part=\"control\"]') ?? this.element;\n const [side, align] = this.resolvedPlacement().split('-') as [\n 'top' | 'bottom',\n 'start' | 'end' | undefined,\n ];\n this.positioner = createPositioner(anchor, layer, { align: align ?? 'center', side });\n void this.positioner.update().then(() => this.positioned.set(true));\n }\n\n const trigger = this.triggerRef?.nativeElement;\n this.dismissable = createDismissableLayer(layer, {\n branches: trigger === undefined ? [] : [trigger],\n escape: true,\n focusOutside: false,\n modal: false,\n outsidePress: true,\n scrollLock: false,\n onDismiss: (request) => {\n /* A field with an expression open takes Escape first: the layer asks\n in the capture phase, so the field's own attribute is what says so. */\n if (\n request.reason === 'escape' &&\n layer.querySelector('[data-ui=\"time-field\"][data-relative]') !== null\n ) {\n return;\n }\n this.setOpen(\n false,\n request.reason === 'escape' ? 'escape' : 'outsidePress',\n request.source,\n );\n if (request.reason === 'escape') {\n this.triggerRef?.nativeElement.focus({ preventScroll: true });\n }\n },\n });\n\n for (const position of this.positions) {\n this.typeaheads[position] = createTypeahead({ locale: () => this.resolvedLocale() });\n }\n\n /* Opened by Enter, Space or a press, focus lands on the first segment of\n the current end's field; by an arrow, in that end's list. */\n const where = this.focusOnOpen;\n this.focusOnOpen = null;\n if (where === 'list') this.enterList(this.currentPosition());\n else if (where === 'field') this.focusField();\n }\n\n private release() {\n this.positioner?.destroy();\n this.positioner = null;\n this.dismissable?.destroy();\n this.dismissable = null;\n for (const position of this.positions) {\n this.typeaheads[position]?.destroy();\n this.typeaheads[position] = null;\n }\n this.positioned.set(false);\n }\n}\n\n/**\n * One shortcut. It writes its range with the `select` reason and carries\n * `data-selected` while the value equals it. The list is the product's — \"the\n * morning shift\" is a business clock — and the family ships the button, not\n * the list.\n */\n@Directive({\n selector: 'button[slTimeRangePickerPreset]',\n standalone: true,\n exportAs: 'slTimeRangePickerPreset',\n host: {\n 'data-part': 'preset',\n type: 'button',\n '[attr.data-selected]': \"selected() ? '' : null\",\n '(click)': 'choose($event)',\n },\n})\nexport class SlTimeRangePickerPreset {\n /** The range the press writes, or a function resolving it at the press. */\n readonly range = input.required<TimeRange | (() => TimeRange)>({\n alias: 'slTimeRangePickerPreset',\n });\n\n private readonly picker = inject(SlTimeRangePicker);\n\n protected readonly selected = computed(() => {\n const range = this.range();\n return isSameTimeRange(this.picker.selection(), typeof range === 'function' ? range() : range);\n });\n\n protected choose(event: Event) {\n if (event.defaultPrevented) return;\n const range = this.range();\n this.picker.choose(typeof range === 'function' ? range() : range, event);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["openingIndexOf"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"slotted-angular-time-range-picker.mjs","sources":["../../time-range-picker/src/time-range-picker-defaults.ts","../../time-range-picker/src/time-range-picker-parts.ts","../../time-range-picker/src/time-range-picker.ts","../../time-range-picker/src/slotted-angular-time-range-picker.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\nimport { durationLabel } from '@slotted/core/date';\nimport type { PlainTime, TimeGranularity, TimeRangeValue } from '@slotted/core/date';\n\n/** A run of times, either end of which may be open. */\nexport type TimeRange = TimeRangeValue;\n\n/** Where the surface opens, before the positioner has read the room. */\nexport type TimeRangePickerPlacement =\n 'bottom-start' | 'bottom' | 'bottom-end' | 'top-start' | 'top' | 'top-end';\n\n/**\n * Whether choosing closes the surface. `auto` closes when the work becomes\n * whole — by a press in a list, by `now` or by a preset — and stays open\n * while an end is still missing, because the next press has to reach the\n * same surface.\n */\nexport type TimeRangePickerCloseOnSelect = 'auto' | 'always' | 'never';\n\n/** What a time a bound or the predicate refuses looks like in a list. */\nexport type TimeRangePickerUnavailableOptions = 'disable' | 'hide';\n\nexport type TimeRangePickerSize = 'sm' | 'md' | 'lg';\nexport type TimeRangePickerVariant = 'outline' | 'subtle' | 'plain';\nexport type TimeRangePickerHourCycle = 12 | 24;\n\n/** The end being edited: the field and the panel carrying `data-current`. */\nexport type TimeRangePickerPosition = 'start' | 'end';\n\n/** The highlighted option of each list. */\nexport interface TimeRangePickerHighlight {\n readonly start: PlainTime | null;\n readonly end: PlainTime | null;\n}\n\n/** A quarter of an hour, the step every surveyed panel defaults to within a factor of two. */\nexport const TIME_RANGE_PICKER_STEP = 900;\n/** A whole day at a one-minute step: the finest whole-day list any surveyed implementation offers. */\nexport const TIME_RANGE_PICKER_MAX_OPTIONS = 1440;\n\n/** \"2 hr 30 min\": the duration the band and the rows say, in the family's locale. */\nexport function timeRangePickerLengthLabel(seconds: number, locale?: string): string {\n return durationLabel(seconds, locale);\n}\n\nexport interface TimeRangePickerDefaults {\n closeOnSelect: TimeRangePickerCloseOnSelect;\n granularity: TimeGranularity;\n hourCycle: TimeRangePickerHourCycle | undefined;\n /** \"2 hr 30 min\", in the product's own words; seconds in, and the family's locale. */\n lengthLabel: (seconds: number, locale: string | undefined) => string;\n maxOptions: number;\n placement: TimeRangePickerPlacement;\n size: TimeRangePickerSize;\n step: number;\n timeZone: string | undefined;\n unavailableOptions: TimeRangePickerUnavailableOptions;\n variant: TimeRangePickerVariant;\n}\n\nconst FALLBACK: TimeRangePickerDefaults = {\n closeOnSelect: 'auto',\n granularity: 'minute',\n hourCycle: undefined,\n lengthLabel: timeRangePickerLengthLabel,\n maxOptions: TIME_RANGE_PICKER_MAX_OPTIONS,\n placement: 'bottom-start',\n size: 'md',\n step: TIME_RANGE_PICKER_STEP,\n timeZone: undefined,\n unavailableOptions: 'disable',\n variant: 'outline',\n};\n\nexport const TIME_RANGE_PICKER_DEFAULTS = new InjectionToken<TimeRangePickerDefaults>(\n 'slotted time range picker defaults',\n { providedIn: 'root', factory: () => FALLBACK },\n);\n\n/**\n * An application decides once what its times look like, what step its lists\n * offer and how a duration is written — rather than repeating the same inputs\n * on every picker in a form. The locale and the words come from the language\n * in force (`provideSlotted`).\n */\nexport function provideTimeRangePickerDefaults(defaults: Partial<TimeRangePickerDefaults>) {\n return {\n provide: TIME_RANGE_PICKER_DEFAULTS,\n useFactory: (): TimeRangePickerDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\n/** What a time range picker renders as here, before it states anything of its own. */\nexport function injectTimeRangePickerDefaults(): TimeRangePickerDefaults {\n return inject(TIME_RANGE_PICKER_DEFAULTS);\n}\n","import { Directive } from '@angular/core';\n\n/**\n * The consumer's own shortcuts, beside the two lists where there is room and\n * above them where there is not. Each one is a `slTimeRangePickerPreset` button.\n */\n@Directive({\n selector: '[slTimeRangePickerPresets]',\n standalone: true,\n exportAs: 'slTimeRangePickerPresets',\n host: { 'data-part': 'presets', 'data-part-presets': '' },\n})\nexport class SlTimeRangePickerPresets {}\n\n/** The consumer's own actions, under the two lists. */\n@Directive({\n selector: '[slTimeRangePickerFooter]',\n standalone: true,\n exportAs: 'slTimeRangePickerFooter',\n host: { 'data-part': 'footer', 'data-part-footer': '' },\n})\nexport class SlTimeRangePickerFooter {}\n\n/**\n * What one row of a list draws.\n *\n * The row is the family's — its role, its states, its keyboard and its target\n * size — and what is written inside it is the consumer's. It is a template\n * rather than a projected slot because it is re-rendered once per option. The\n * context carries the time as `$implicit`, plus `position`, `label`,\n * `duration`, `selected`, `current` and `unavailable`.\n */\n@Directive({\n selector: '[slTimeRangePickerOption]',\n standalone: true,\n exportAs: 'slTimeRangePickerOption',\n})\nexport class SlTimeRangePickerOption {}\n","import {\n compareTime,\n createTimeFormat,\n firstUnavailableIndex,\n hourJump,\n isSameTime,\n isTruncated,\n nearestIndex,\n openingIndex as openingIndexOf,\n nowIn,\n runRefusal,\n secondsOfDay,\n timeList,\n timeRangeProblems,\n timeRangeSeconds,\n toISOTime,\n} from '@slotted/core/date';\nimport type { PlainTime, TimeOption } from '@slotted/core/date';\nimport { createDismissableLayer } from '@slotted/core/dismissable-layer';\nimport type { DismissableLayerHandle } from '@slotted/core/dismissable-layer';\nimport { createPositioner } from '@slotted/core/positioner';\nimport type { PositionerHandle } from '@slotted/core/positioner';\nimport {\n timeRangePickerMessages,\n type PartialMessages,\n type TimeRangePickerMessages,\n} from '@slotted/core/i18n';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeReason, ChangeRequest } from '@slotted/core/state';\nimport { createTypeahead, isPrintable } from '@slotted/core/typeahead';\nimport type { TypeaheadHandle } from '@slotted/core/typeahead';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n ContentChild,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n forwardRef,\n inject,\n Injector,\n input,\n numberAttribute,\n output,\n signal,\n TemplateRef,\n untracked,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport type { OnInit } from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type {\n AbstractControl,\n ControlValueAccessor,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { injectLocale, injectMessages } from '@slotted/angular/i18n';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport { SlField } from '@slotted/angular/field';\nimport { SlTimeField } from '@slotted/angular/time-field';\nimport type { TimeFieldChangeRequest } from '@slotted/angular/time-field';\n\nimport { injectTimeRangePickerDefaults } from './time-range-picker-defaults';\nimport type {\n TimeRange,\n TimeRangePickerCloseOnSelect,\n TimeRangePickerDefaults,\n TimeRangePickerHighlight,\n TimeRangePickerHourCycle,\n TimeRangePickerPlacement,\n TimeRangePickerPosition,\n TimeRangePickerSize,\n TimeRangePickerUnavailableOptions,\n TimeRangePickerVariant,\n} from './time-range-picker-defaults';\nimport { SlTimeRangePickerOption } from './time-range-picker-parts';\n\n/**\n * Below this width, on a finger, the surface is a sheet rather than a popover.\n * The query is here as well as in the stylesheet because the DOM has to say\n * which presentation it is in, and a media query cannot write an attribute.\n */\nconst SHEET_QUERY = '(max-width: 480px) and (pointer: coarse)';\n/** The surface needs an identifier the trigger can point `aria-controls` at. */\nlet sequence = 0;\n\nconst EMPTY: TimeRange = { start: null, end: null };\nconst NO_HIGHLIGHT: TimeRangePickerHighlight = { start: null, end: null };\n\n/** The one word for nothing: a value whose both ends are `null` is `null`. */\nfunction normalize(range: TimeRange | null | undefined): TimeRange | null {\n return range === null || range === undefined || (range.start === null && range.end === null)\n ? null\n : range;\n}\n\nexport function isSameTimeRange(a: TimeRange | null, b: TimeRange | null): boolean {\n if (a === null || b === null) return a === b;\n return isSameTime(a.start, b.start) && isSameTime(a.end, b.end);\n}\n\n/**\n * Scrolls the list alone. `scrollIntoView` would scroll every ancestor too,\n * and a page with an open surface must not jump when a list opens on its\n * highlight. Centred when the list opens, and by the least that lands the row\n * whole when a key moves the highlight. jsdom measures nothing, so it is a\n * no-op there rather than a throw.\n */\nfunction revealRow(list: HTMLElement, row: HTMLElement, centre: boolean) {\n const box = list.getBoundingClientRect();\n const cell = row.getBoundingClientRect();\n if (box.height === 0 || cell.height === 0) return;\n const above = cell.top - box.top;\n if (centre) list.scrollTop += above - (box.height - cell.height) / 2;\n else if (above < 0) list.scrollTop += above;\n else if (cell.bottom > box.bottom) list.scrollTop += cell.bottom - box.bottom;\n}\n\nfunction other(position: TimeRangePickerPosition): TimeRangePickerPosition {\n return position === 'start' ? 'end' : 'start';\n}\n\n/**\n * A one-line frame — the value in words, a clear and the trigger — and behind\n * it one end at a time: two tabs, the field of the current end, a hint, and\n * the list of that end.\n *\n * **The frame is one line at any width.** Two segmented fields stood in it\n * first and were withdrawn at the visual gate: a segment cannot shrink, and\n * two of them broke the frame into two lines in any form column narrower than\n * they are. The field lives in the panel's band, where the reader types.\n *\n * **One end at a time.** Two lists side by side were refused at the release\n * gate as too much interface at once for a lay reader and for a phone. The\n * tab says which end, the panel shows only that end, and choosing one end\n * moves to the other — the end list appears already striking what the chosen\n * start refuses, every row saying the duration the run would have.\n *\n * **A press that leaves the work with one end is not the value.** The press\n * that completes it emits the whole run; `Escape`, an outside press and the\n * trigger abandon the work. An end typed in the field is a value on its own.\n */\n@Component({\n selector: '[slTimeRangePicker]',\n standalone: true,\n exportAs: 'slTimeRangePicker',\n imports: [NgTemplateOutlet, SlGlyph, SlIcon, SlTimeField],\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SlTimeRangePicker), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => SlTimeRangePicker), multi: true },\n ],\n template: `<div data-part=\"control\" data-part-control=\"\" (focusout)=\"onControlFocusOut($event)\">\n <button\n #trigger\n data-part=\"trigger\"\n data-part-trigger=\"\"\n type=\"button\"\n aria-haspopup=\"dialog\"\n [attr.aria-label]=\"triggerLabel()\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"isOpen() ? contentId : null\"\n [disabled]=\"!editable()\"\n (click)=\"toggle($event)\"\n (keydown)=\"onTriggerKeyDown($event)\"\n >\n <span\n data-part=\"summary\"\n data-part-summary=\"\"\n [attr.data-placeholder]=\"summary() === null ? '' : null\"\n >{{ summary() ?? t('choose') }}</span\n >\n <span slIcon><svg slGlyph name=\"clock\"></svg></span>\n </button>\n @if (clearable() && held() !== null) {\n <button\n data-part=\"clear\"\n data-part-clear=\"\"\n type=\"button\"\n [attr.aria-label]=\"t('clear')\"\n [disabled]=\"!editable()\"\n (click)=\"clear($event)\"\n >\n <span slIcon><svg slGlyph name=\"x\"></svg></span>\n </button>\n }\n <input\n data-part=\"hidden-input\"\n data-part-hidden-input=\"\"\n type=\"hidden\"\n [attr.name]=\"startName()\"\n [value]=\"startIso()\"\n />\n <input\n data-part=\"hidden-input\"\n data-part-hidden-input=\"\"\n type=\"hidden\"\n [attr.name]=\"endName()\"\n [value]=\"endIso()\"\n />\n </div>\n\n @if (isOpen()) {\n <div\n #layer\n data-ui=\"time-range-picker\"\n data-ui-time-range-picker=\"\"\n data-part=\"positioner\"\n data-part-positioner=\"\"\n data-open\n [attr.data-presentation]=\"sheet() ? 'sheet' : 'popover'\"\n >\n <div\n data-part=\"content\"\n data-part-content=\"\"\n role=\"dialog\"\n [attr.id]=\"contentId\"\n [attr.aria-label]=\"triggerLabel()\"\n >\n <div data-part=\"head\" data-part-head=\"\">\n <div data-part=\"tabs\" data-part-tabs=\"\" role=\"tablist\">\n @for (position of positions; track position) {\n <button\n data-part=\"tab\"\n data-part-tab=\"\"\n role=\"tab\"\n type=\"button\"\n [attr.id]=\"contentId + '-tab-' + position\"\n [attr.data-position]=\"position\"\n [attr.aria-selected]=\"currentPosition() === position\"\n [attr.aria-controls]=\"contentId + '-panel'\"\n [attr.data-current]=\"currentPosition() === position ? '' : null\"\n [attr.data-placeholder]=\"work()[position] === null ? '' : null\"\n [tabindex]=\"currentPosition() === position ? 0 : -1\"\n [disabled]=\"!editable()\"\n (click)=\"selectTab(position, $event)\"\n (keydown)=\"onTabKeyDown($event)\"\n >\n <span data-part=\"tab-label\" data-part-tab-label=\"\">{{ labelFor(position) }}</span>\n <span data-part=\"tab-value\" data-part-tab-value=\"\">{{ tabValue(position) }}</span>\n </button>\n }\n </div>\n <div\n #fieldBox\n data-part=\"field\"\n data-part-field=\"\"\n [attr.data-position]=\"currentPosition()\"\n >\n <div\n slTimeField\n #field=\"slTimeField\"\n variant=\"plain\"\n size=\"sm\"\n [label]=\"labelFor(currentPosition())\"\n [locale]=\"resolvedLocale()\"\n [timeZone]=\"resolvedTimeZone()\"\n [hourCycle]=\"resolvedHourCycle()\"\n [granularity]=\"resolvedGranularity()\"\n [referenceTime]=\"referenceTime()\"\n [relative]=\"relative()\"\n [min]=\"currentPosition() === 'end' ? endMin() : min()\"\n [max]=\"currentPosition() === 'start' ? startMax() : max()\"\n [isTimeUnavailable]=\"isTimeUnavailable()\"\n [invalid]=\"currentPosition() === 'end' && workReversed() ? true : undefined\"\n [disabled]=\"resolvedDisabled()\"\n [readOnly]=\"resolvedReadOnly()\"\n [required]=\"resolvedRequired()\"\n [value]=\"work()[currentPosition()]\"\n (valueChange)=\"onFieldValue($event)\"\n ></div>\n </div>\n <button\n data-part=\"now\"\n data-part-now=\"\"\n type=\"button\"\n [disabled]=\"!editable()\"\n (click)=\"chooseNow($event)\"\n >\n {{ t('now') }}\n </button>\n <span\n data-part=\"hint\"\n data-part-hint=\"\"\n [attr.id]=\"contentId + '-hint'\"\n [attr.data-invalid]=\"hintProblem() === undefined ? null : ''\"\n >{{ hint() }}</span\n >\n <span\n data-part=\"length\"\n data-part-length=\"\"\n aria-live=\"polite\"\n [attr.data-pending]=\"pending() === null ? null : ''\"\n >{{ spokenLength() }}</span\n >\n @if (limitText() !== null) {\n <span data-part=\"limit\" data-part-limit=\"\">{{ limitText() }}</span>\n }\n </div>\n <ng-content select=\"[slTimeRangePickerPresets]\" />\n @if (currentPosition(); as position) {\n <div\n data-part=\"panel\"\n data-part-panel=\"\"\n [attr.id]=\"contentId + '-panel'\"\n [attr.data-position]=\"position\"\n >\n @if (lists()[position].length === 0) {\n <div data-part=\"empty\" data-part-empty=\"\">{{ t('empty') }}</div>\n } @else {\n <div\n data-part=\"list\"\n data-part-list=\"\"\n role=\"listbox\"\n [attr.aria-labelledby]=\"contentId + '-tab-' + position\"\n [attr.aria-describedby]=\"hint() === '' ? null : contentId + '-hint'\"\n [attr.aria-description]=\"truncated() ? t('truncated') : null\"\n [attr.data-truncated]=\"truncated() ? '' : null\"\n (keydown)=\"onListKeyDown(position, $event)\"\n (focusin)=\"listFocused.set(true)\"\n (focusout)=\"onListFocusOut($event)\"\n (pointerleave)=\"hovered.set(null)\"\n >\n @for (option of lists()[position]; track $index) {\n <div\n data-part=\"option\"\n data-part-option=\"\"\n role=\"option\"\n [attr.aria-selected]=\"isSelected(position, option)\"\n [attr.aria-disabled]=\"option.unavailable ? 'true' : null\"\n [attr.data-disabled]=\"option.unavailable ? '' : null\"\n [attr.data-selected]=\"isSelected(position, option) ? '' : null\"\n [attr.data-current]=\"$index === highlightIndex(position) ? '' : null\"\n [tabindex]=\"$index === highlightIndex(position) ? 0 : -1\"\n (click)=\"select(position, option, $event)\"\n (pointerenter)=\"hover(position, option)\"\n >\n @if (optionTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"optionTemplate\"\n [ngTemplateOutletContext]=\"contextFor(position, option, $index)\"\n />\n } @else {\n {{ labels()[position][$index] }}\n @if (durationOf(position, option); as duration) {\n <span data-part=\"option-duration\" data-part-option-duration=\"\">{{\n duration\n }}</span>\n }\n }\n </div>\n }\n </div>\n }\n </div>\n }\n <div data-part=\"footer\" data-part-footer=\"\">\n <ng-content select=\"[slTimeRangePickerFooter]\" />\n <button data-part=\"done\" data-part-done=\"\" type=\"button\" (click)=\"done($event)\">\n {{ t('done') }}\n </button>\n </div>\n </div>\n </div>\n }`,\n styleUrl: '../../../styles/src/time-range-picker/time-range-picker.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'time-range-picker',\n 'data-ui-time-range-picker': '',\n 'data-part': 'root',\n 'data-part-root': '',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-variant]': 'resolvedVariant()',\n '[attr.data-granularity]': 'resolvedGranularity()',\n '[attr.data-open]': \"isOpen() ? '' : null\",\n '[attr.data-disabled]': \"resolvedDisabled() === true ? '' : null\",\n '[attr.data-invalid]': \"resolvedInvalid() === true ? '' : null\",\n '[attr.data-readonly]': \"resolvedReadOnly() === true ? '' : null\",\n '[attr.data-required]': \"resolvedRequired() === true ? '' : null\",\n },\n})\nexport class SlTimeRangePicker implements ControlValueAccessor, Validator, OnInit {\n readonly value = input<TimeRange | null | undefined>(undefined);\n readonly defaultValue = input<TimeRange | null | undefined>(undefined);\n /** Present means the consumer owns whether the surface is showing. */\n readonly open = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly defaultOpen = input(false, { transform: booleanAttribute });\n /** Present means the consumer owns which end is being edited. */\n readonly position = input<TimeRangePickerPosition | undefined>(undefined);\n readonly defaultPosition = input<TimeRangePickerPosition>('start');\n /** Where the reader is in each list. Present means the consumer owns it. */\n readonly highlighted = input<TimeRangePickerHighlight | undefined>(undefined);\n readonly defaultHighlighted = input<TimeRangePickerHighlight | undefined>(undefined);\n\n readonly min = input<PlainTime | undefined>(undefined);\n readonly max = input<PlainTime | undefined>(undefined);\n readonly isTimeUnavailable = input<((time: PlainTime) => boolean) | undefined>(undefined);\n /**\n * Whether a run may cross an unavailable time. On, and with a start chosen,\n * the options beyond the first unavailable one are refused in the end list.\n */\n readonly contiguous = input(true, { transform: booleanAttribute });\n /** The shortest and longest run allowed, in seconds. */\n readonly minLength = input<number | undefined, unknown>(undefined, {\n transform: (value) =>\n value === undefined || value === null ? undefined : numberAttribute(value),\n });\n readonly maxLength = input<number | undefined, unknown>(undefined, {\n transform: (value) =>\n value === undefined || value === null ? undefined : numberAttribute(value),\n });\n readonly lengthLabel = input<TimeRangePickerDefaults['lengthLabel'] | undefined>(undefined);\n\n /** Seconds between two offered times. Ignored when `options` states the list. */\n readonly step = input<number | undefined, unknown>(undefined, {\n transform: (value) =>\n value === undefined || value === null ? undefined : numberAttribute(value),\n });\n /** The times to offer, stated rather than stepped; the same list for both ends. */\n readonly options = input<readonly PlainTime[] | undefined>(undefined);\n readonly maxOptions = input<number | undefined, unknown>(undefined, {\n transform: (value) =>\n value === undefined || value === null ? undefined : numberAttribute(value),\n });\n readonly unavailableOptions = input<TimeRangePickerUnavailableOptions | undefined>(undefined);\n\n /** BCP 47. Unset, the language in force (`provideSlotted`) decides. */\n readonly locale = input<string | undefined>(undefined);\n readonly timeZone = input<string | undefined>(undefined);\n readonly hourCycle = input<TimeRangePickerHourCycle | undefined>(undefined);\n readonly granularity = input<TimeRangePickerDefaults['granularity'] | undefined>(undefined);\n /** What \"now\" is, for a story or a test; the clock otherwise. */\n readonly referenceTime = input<PlainTime | undefined>(undefined);\n\n readonly size = input<TimeRangePickerSize | undefined>(undefined);\n readonly variant = input<TimeRangePickerVariant | undefined>(undefined);\n readonly placement = input<TimeRangePickerPlacement | undefined>(undefined);\n readonly closeOnSelect = input<TimeRangePickerCloseOnSelect | undefined>(undefined);\n\n readonly disabled = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly readOnly = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly invalid = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly required = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n\n /** Draws one clear on the frame, which empties both ends. */\n readonly clearable = input(false, { transform: booleanAttribute });\n /** Whether the two fields in the band take the relative expression. */\n readonly relative = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n /**\n * Words laid over the catalog of the language in force, key by key: the\n * trigger's names, the two ends, the hint, the limit, and what a panel says\n * when it is empty or cut short.\n */\n readonly messages = input<PartialMessages<TimeRangePickerMessages> | undefined>(undefined);\n /** The names of the two hidden inputs a plain form post reads. */\n readonly startName = input<string | undefined>(undefined);\n readonly endName = input<string | undefined>(undefined);\n\n readonly valueChange = output<ChangeRequest<TimeRange | null>>();\n readonly openChange = output<ChangeRequest<boolean>>();\n readonly positionChange = output<ChangeRequest<TimeRangePickerPosition>>();\n readonly highlightedChange = output<ChangeRequest<TimeRangePickerHighlight>>();\n\n /** What one row draws; a template, because it is re-rendered once per option. */\n @ContentChild(SlTimeRangePickerOption, { read: TemplateRef })\n protected optionTemplate?: TemplateRef<unknown>;\n @ViewChild('layer') protected layer?: ElementRef<HTMLElement>;\n /** Whether the lists were scrolled to their highlight since the surface opened. */\n private revealed = false;\n @ViewChild('trigger') protected triggerRef?: ElementRef<HTMLButtonElement>;\n @ViewChild('field') protected field?: SlTimeField;\n @ViewChild('fieldBox') protected fieldBox?: ElementRef<HTMLElement>;\n\n private readonly element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n protected readonly defaults = injectTimeRangePickerDefaults();\n private readonly appLocale = injectLocale();\n /** The family's words in the language in force, with this picker's `messages` laid over them. */\n readonly t = injectMessages(timeRangePickerMessages, this.messages);\n private readonly injector = inject(Injector);\n private readonly destroyRef = inject(DestroyRef);\n private readonly enclosing = inject(SlField, { optional: true });\n\n protected readonly contentId = `sl-time-range-picker-${String((sequence += 1))}`;\n protected readonly positions: readonly TimeRangePickerPosition[] = ['start', 'end'];\n\n private readonly ownOpen = signal(false);\n private readonly ownValue = signal<TimeRange | null>(null);\n private readonly ownPosition = signal<TimeRangePickerPosition>('start');\n private readonly ownHighlight = signal<TimeRangePickerHighlight>(NO_HIGHLIGHT);\n private readonly formDisabled = signal<boolean | undefined>(undefined);\n private readonly clock = signal<PlainTime>({ hour: 12, minute: 0, second: 0 });\n protected readonly sheet = signal(false);\n /**\n * The work: the two ends as the reader left them while the panel is open. A\n * press in a list writes it; the value is asked for when it is whole. Closed\n * by anything, it is rebuilt from the value on the next open.\n */\n protected readonly work = signal<TimeRange>(EMPTY);\n /** The option under the pointer, which enters the duration and nothing else. */\n protected readonly hovered = signal<{\n position: TimeRangePickerPosition;\n time: PlainTime;\n } | null>(null);\n /** Whether the list holds focus, so its highlight is the pending end. */\n protected readonly listFocused = signal(false);\n /** Where focus lands once the surface is drawn. */\n private focusOnOpen: 'field' | 'list' | null = null;\n\n private positioner: PositionerHandle | null = null;\n private dismissable: DismissableLayerHandle | null = null;\n private readonly typeaheads: Record<TimeRangePickerPosition, TypeaheadHandle | null> = {\n start: null,\n end: null,\n };\n\n private onChangeFn: (value: TimeRange | null) => void = () => undefined;\n private onTouchedFn: () => void = () => undefined;\n private onValidatorChangeFn: () => void = () => undefined;\n\n protected readonly isOpen = computed(() => this.open() ?? this.ownOpen());\n protected readonly held = computed(() => {\n const value = this.value();\n return value === undefined ? this.ownValue() : normalize(value);\n });\n /** The range the picker holds. Public, so a preset can compare itself to it. */\n readonly selection = computed(() => this.held());\n protected readonly currentPosition = computed(() => this.position() ?? this.ownPosition());\n protected readonly highlight = computed(() => this.highlighted() ?? this.ownHighlight());\n protected readonly start = computed(() => this.held()?.start ?? null);\n protected readonly end = computed(() => this.held()?.end ?? null);\n protected readonly startIso = computed(() => {\n const start = this.start();\n return start === null ? '' : toISOTime(start);\n });\n protected readonly endIso = computed(() => {\n const end = this.end();\n return end === null ? '' : toISOTime(end);\n });\n\n protected readonly resolvedLocale = computed(() => this.locale() ?? this.appLocale());\n protected readonly resolvedTimeZone = computed(() => this.timeZone() ?? this.defaults.timeZone);\n protected readonly resolvedHourCycle = computed(\n () => this.hourCycle() ?? this.defaults.hourCycle,\n );\n protected readonly resolvedGranularity = computed(\n () => this.granularity() ?? this.defaults.granularity,\n );\n protected readonly resolvedSize = computed(\n () => this.size() ?? this.enclosing?.resolvedSize() ?? this.defaults.size,\n );\n protected readonly resolvedVariant = computed(() => this.variant() ?? this.defaults.variant);\n protected readonly resolvedPlacement = computed(\n () => this.placement() ?? this.defaults.placement,\n );\n protected readonly resolvedDisabled = computed(\n () => this.disabled() ?? this.formDisabled() ?? this.enclosing?.resolvedDisabled(),\n );\n protected readonly resolvedReadOnly = computed(\n () => this.readOnly() ?? this.enclosing?.resolvedReadOnly(),\n );\n protected readonly resolvedRequired = computed(\n () => this.required() ?? this.enclosing?.required(),\n );\n protected readonly editable = computed(\n () => this.resolvedDisabled() !== true && this.resolvedReadOnly() !== true,\n );\n\n private readonly format = computed(() =>\n createTimeFormat({\n granularity: this.resolvedGranularity(),\n hourCycle: this.resolvedHourCycle(),\n locale: this.resolvedLocale(),\n }),\n );\n private readonly anchor = computed(() => this.referenceTime() ?? this.clock());\n private readonly lengthOf = computed(() => {\n const label = this.lengthLabel() ?? this.defaults.lengthLabel;\n const locale = this.resolvedLocale();\n return (seconds: number) => label(seconds, locale);\n });\n\n /**\n * Validity the family owns, beside the validity the consumer states: the\n * bounds, the predicate, the order of the two ends and the duration.\n */\n private readonly problems = computed(() =>\n timeRangeProblems(this.held(), {\n max: this.max(),\n maxLength: this.maxLength(),\n min: this.min(),\n minLength: this.minLength(),\n unavailable: this.isTimeUnavailable(),\n }),\n );\n protected readonly reversed = computed(() => this.problems().includes('order'));\n protected readonly resolvedInvalid = computed(() => {\n if (this.invalid() !== undefined) return this.invalid();\n if (this.problems().length > 0) return true;\n return this.enclosing?.invalid();\n });\n\n /* Crossed bounds, while the order holds. Reversed, each field keeps the\n outer bounds and the end field alone says the order is wrong. */\n private readonly workOrdered = computed(() => {\n const { start, end } = this.work();\n return start !== null && end !== null && compareTime(start, end) <= 0;\n });\n protected readonly startMax = computed(() => {\n const end = this.work().end;\n const max = this.max();\n if (!this.workOrdered() || end === null) return max;\n return max === undefined || compareTime(end, max) < 0 ? end : max;\n });\n protected readonly endMin = computed(() => {\n const start = this.work().start;\n const min = this.min();\n if (!this.workOrdered() || start === null) return min;\n return min === undefined || compareTime(start, min) > 0 ? start : min;\n });\n\n /* ── The two lists ─────────────────────────────────────────────────── */\n\n private readonly listOptions = computed(() => ({\n isTimeUnavailable: this.isTimeUnavailable(),\n max: this.max(),\n maxOptions: this.maxOptions() ?? this.defaults.maxOptions,\n min: this.min(),\n options: this.options(),\n step: this.step() ?? this.defaults.step,\n }));\n private readonly base = computed(() => timeList(this.listOptions()));\n protected readonly truncated = computed(() => isTruncated(this.listOptions()));\n\n /**\n * The list of one end: the shared list, and what the other end of the work\n * refuses of it — the options on the wrong side of it, those whose duration\n * would fall outside the limits, and with `contiguous` those beyond the\n * first refused option after it. The search runs over the list, never over\n * the seconds.\n */\n protected readonly lists = computed<Record<TimeRangePickerPosition, TimeOption[]>>(() => ({\n start: this.listFor('start'),\n end: this.listFor('end'),\n }));\n protected readonly labels = computed<Record<TimeRangePickerPosition, string[]>>(() => {\n const format = this.format();\n const lists = this.lists();\n return {\n start: lists.start.map((option) => format.format(option.time)),\n end: lists.end.map((option) => format.format(option.time)),\n };\n });\n\n private listFor(position: TimeRangePickerPosition): TimeOption[] {\n const base = this.base();\n const otherEnd = this.work()[other(position)];\n let refused: (option: TimeOption, index: number) => boolean = () => false;\n if (otherEnd !== null) {\n const direction: 1 | -1 = position === 'end' ? 1 : -1;\n const anchorSeconds = secondsOfDay(otherEnd);\n const anchorIndex = nearestIndex(base, otherEnd);\n const wall = this.contiguous() ? firstUnavailableIndex(base, anchorIndex, direction) : -1;\n const rules = { maxLength: this.maxLength(), minLength: this.minLength() };\n refused = (option, index) =>\n runRefusal(anchorSeconds, secondsOfDay(option.time), direction, rules) ||\n (wall >= 0 && (direction === 1 ? index >= wall : index <= wall));\n }\n const marked = base.map((option, index) =>\n option.unavailable || !refused(option, index) ? option : { ...option, unavailable: true },\n );\n const hide = (this.unavailableOptions() ?? this.defaults.unavailableOptions) === 'hide';\n return hide ? marked.filter((option) => !option.unavailable) : marked;\n }\n\n protected highlightIndex(position: TimeRangePickerPosition): number {\n const time = this.highlight()[position];\n if (time === null) return -1;\n return this.lists()[position].findIndex((option) => isSameTime(option.time, time));\n }\n\n protected isSelected(position: TimeRangePickerPosition, option: TimeOption): boolean {\n return isSameTime(option.time, this.work()[position]);\n }\n\n /** The name of one end: the field's, its tab's and the hint's `{end}`. */\n protected labelFor(position: TimeRangePickerPosition): string {\n return this.t(position);\n }\n\n /** The end written short in the tab, or a dash. */\n protected tabValue(position: TimeRangePickerPosition): string {\n const time = this.work()[position];\n return time === null ? '—' : this.format().format(time);\n }\n\n /** The problems of the work as it stands, once it is whole. */\n private readonly workProblems = computed(() => {\n const work = this.work();\n if (work.start === null || work.end === null) return [];\n return timeRangeProblems(work, {\n max: this.max(),\n maxLength: this.maxLength(),\n min: this.min(),\n minLength: this.minLength(),\n unavailable: this.isTimeUnavailable(),\n });\n });\n protected readonly workReversed = computed(() => this.workProblems().includes('order'));\n protected readonly hintProblem = computed(() => this.workProblems()[0]);\n\n /**\n * What the next press should be, or what is wrong: the difference between a\n * panel that refuses and a panel that explains. Empty while the work is\n * whole and valid, when the length says the duration.\n */\n protected readonly hint = computed(() => {\n const position = this.currentPosition();\n if (this.work()[position] === null)\n return this.t('chooseTime', { end: this.labelFor(position) });\n const problem = this.hintProblem();\n if (problem === undefined) return '';\n return this.t(problem === 'min' || problem === 'max' ? 'bounds' : problem);\n });\n\n /** The duration a row would make with the other end as it stands, or `null`. */\n protected durationOf(position: TimeRangePickerPosition, option: TimeOption): string | null {\n const otherEnd = this.work()[other(position)];\n if (otherEnd === null || option.unavailable) return null;\n const seconds =\n position === 'end'\n ? timeRangeSeconds(otherEnd, option.time)\n : timeRangeSeconds(option.time, otherEnd);\n return this.lengthOf()(seconds);\n }\n\n protected contextFor(position: TimeRangePickerPosition, option: TimeOption, index: number) {\n return {\n $implicit: option.time,\n current: index === this.highlightIndex(position),\n duration: this.durationOf(position, option),\n label: this.labels()[position][index] ?? '',\n position,\n selected: this.isSelected(position, option),\n unavailable: option.unavailable,\n };\n }\n\n /* ── What is said ──────────────────────────────────────────────────── */\n\n /**\n * The pending end: the option under the pointer, or the highlighted option\n * of the list that has focus.\n */\n protected readonly pending = computed(() => {\n const hovered = this.hovered();\n if (hovered !== null) return hovered;\n if (!this.listFocused()) return null;\n const position = this.currentPosition();\n const time = this.highlight()[position];\n return time === null ? null : { position, time };\n });\n protected readonly spokenLength = computed(() => {\n const pending = this.pending();\n const run: TimeRange =\n pending === null ? this.work() : { ...this.work(), [pending.position]: pending.time };\n if (run.start === null || run.end === null) return '';\n return this.lengthOf()(timeRangeSeconds(run.start, run.end));\n });\n protected readonly limitText = computed(() => {\n const min = this.minLength();\n const max = this.maxLength();\n const length = this.lengthOf();\n if (min !== undefined && max !== undefined) {\n return this.t('limit.between', { min: length(min), max: length(max) });\n }\n if (min !== undefined) return this.t('limit.atLeast', { min: length(min) });\n if (max !== undefined) return this.t('limit.atMost', { max: length(max) });\n return null;\n });\n\n /** The trigger's accessible name: focus returns here when the surface closes. */\n protected readonly triggerLabel = computed(() => {\n const start = this.start();\n const end = this.end();\n if (start === null || end === null) return this.t('choose');\n const format = this.format();\n const ends = { start: format.describe(start), end: format.describe(end) };\n return compareTime(start, end) <= 0\n ? this.t('change', { ...ends, length: this.lengthOf()(timeRangeSeconds(start, end)) })\n : this.t('changeReversed', ends);\n });\n /** The value in words, one line; `null` while nothing is chosen. */\n protected readonly summary = computed(() => {\n if (this.held() === null) return null;\n const format = this.format();\n const start = this.start();\n const end = this.end();\n return `${start === null ? '' : format.format(start)} – ${end === null ? '' : format.format(end)}`.trim();\n });\n\n constructor() {\n /* The layer is created and torn down with the surface, not with the\n component: a layer that outlived its content would hold a place in the\n single stack that nothing occupies. The work starts from the value\n every time the panel opens. */\n effect(() => {\n const open = this.isOpen();\n if (!open) {\n this.release();\n return;\n }\n /* Read untracked: the work is rebuilt when the panel opens, and not\n again when the value moves while it is open. */\n untracked(() => {\n const held = this.held();\n this.work.set(held ?? EMPTY);\n this.hovered.set(null);\n const missing: TimeRangePickerPosition | null =\n held?.start == null ? 'start' : held.end === null ? 'end' : null;\n if (missing !== null && missing !== this.currentPosition()) {\n this.setPosition(missing, 'programmatic', undefined);\n }\n });\n afterNextRender(() => this.attach(), { injector: this.injector });\n });\n\n /* The highlight of each list lands where the list opens, and follows the\n lists under it. */\n effect(() => {\n if (!this.isOpen()) return;\n const lists = this.lists();\n const current = this.highlight();\n const next = { ...current };\n for (const position of this.positions) {\n const index = this.openingIndex(position);\n next[position] = index < 0 ? null : (lists[position][index]?.time ?? null);\n }\n if (!isSameTime(next.start, current.start) || !isSameTime(next.end, current.end)) {\n this.setHighlight(next, 'programmatic', undefined);\n }\n });\n\n /* The lists open on their highlight once the layer is rendered, and follow\n it while the lists under it change. */\n effect(() => {\n if (!this.isOpen()) {\n this.revealed = false;\n return;\n }\n this.highlight();\n this.lists();\n this.currentPosition();\n afterNextRender(\n () => {\n this.revealHighlights(!this.revealed);\n this.revealed = true;\n },\n { injector: this.injector },\n );\n });\n\n /* A rule that changed is a validity that changed, and the form is told. */\n effect(() => {\n this.problems();\n this.onValidatorChangeFn();\n });\n\n this.destroyRef.onDestroy(() => this.release());\n }\n\n ngOnInit() {\n this.ownOpen.set(this.defaultOpen());\n this.ownValue.set(normalize(this.defaultValue()));\n this.ownPosition.set(this.defaultPosition());\n this.ownHighlight.set(this.defaultHighlighted() ?? NO_HIGHLIGHT);\n this.clock.set(nowIn(this.resolvedTimeZone()));\n\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') return;\n const query = window.matchMedia(SHEET_QUERY);\n const read = () => this.sheet.set(query.matches);\n read();\n query.addEventListener('change', read);\n this.destroyRef.onDestroy(() => query.removeEventListener('change', read));\n }\n\n /* ── Forms ─────────────────────────────────────────────────────────── */\n\n writeValue(value: TimeRange | null | undefined) {\n this.ownValue.set(normalize(value));\n }\n\n registerOnChange(fn: (value: TimeRange | null) => void) {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.formDisabled.set(isDisabled);\n }\n\n registerOnValidatorChange(fn: () => void) {\n this.onValidatorChangeFn = fn;\n }\n\n /**\n * The rules no other validator can see: the bounds, the predicate, the\n * order of the two ends and the duration. `required` is left to Angular's\n * own, because a form already has a word for it.\n */\n validate(control: AbstractControl): ValidationErrors | null {\n const value = normalize(control.value as TimeRange | null | undefined);\n if (value === null) return null;\n const problems = timeRangeProblems(value, {\n max: this.max(),\n maxLength: this.maxLength(),\n min: this.min(),\n minLength: this.minLength(),\n unavailable: this.isTimeUnavailable(),\n });\n if (problems.length === 0) return null;\n const errors: ValidationErrors = {};\n if (problems.includes('order')) errors['slottedTimeRangeOrder'] = { actual: value };\n if (problems.includes('min'))\n errors['slottedTimeRangeMin'] = { min: this.min(), actual: value };\n if (problems.includes('max'))\n errors['slottedTimeRangeMax'] = { max: this.max(), actual: value };\n if (problems.includes('unavailable')) errors['slottedTimeRangeUnavailable'] = { actual: value };\n if (problems.includes('length')) {\n errors['slottedTimeRangeLength'] = {\n minLength: this.minLength(),\n maxLength: this.maxLength(),\n actual: value,\n };\n }\n return errors;\n }\n\n /* ── Imperative ────────────────────────────────────────────────────── */\n\n /** Puts focus on the trigger, which is the frame. */\n focus() {\n this.triggerRef?.nativeElement.focus();\n }\n\n openSurface(source?: Event) {\n this.setOpen(true, 'programmatic', source);\n }\n\n closeSurface(source?: Event) {\n this.setOpen(false, 'programmatic', source);\n }\n\n /** A preset writes its range through here, with the `select` reason. */\n choose(range: TimeRange, source?: Event) {\n this.work.set(range);\n this.commit(range, 'select', source);\n this.setPosition('start', 'select', source);\n this.closeAfter(true, source);\n }\n\n /* ── Handlers ──────────────────────────────────────────────────────── */\n\n protected toggle(source: Event) {\n this.focusOnOpen = 'field';\n this.setOpen(!this.isOpen(), 'pointer', source);\n }\n\n protected clear(source: Event) {\n this.work.set(EMPTY);\n this.commit(null, 'clear', source);\n this.setPosition('start', 'clear', source);\n this.focus();\n }\n\n protected onTriggerKeyDown(event: KeyboardEvent) {\n if (!this.editable()) return;\n /* ChromeOS turns the chord into PageDown before the browser sees it, which\n is why the trigger is the guaranteed way in and the chord a shortcut. */\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n this.focusOnOpen = 'list';\n if (!this.isOpen()) this.setOpen(true, 'keyboard', event);\n else this.enterList(this.currentPosition());\n return;\n }\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.focusOnOpen = 'field';\n this.setOpen(!this.isOpen(), 'keyboard', event);\n }\n }\n\n protected selectTab(position: TimeRangePickerPosition, source: Event) {\n if (position !== this.currentPosition()) this.setPosition(position, 'pointer', source);\n }\n\n /** Automatic activation: the arrow moves the position with it. */\n protected onTabKeyDown(event: KeyboardEvent) {\n const next: TimeRangePickerPosition | null =\n event.key === 'ArrowRight' || event.key === 'End'\n ? 'end'\n : event.key === 'ArrowLeft' || event.key === 'Home'\n ? 'start'\n : null;\n if (next === null) return;\n event.preventDefault();\n if (next !== this.currentPosition()) this.setPosition(next, 'keyboard', event);\n this.layer?.nativeElement\n .querySelector<HTMLElement>(`[data-part=\"tab\"][data-position=\"${next}\"]`)\n ?.focus({ preventScroll: true });\n }\n\n /**\n * The way out of a sheet that fills the screen, and of an edit left half\n * way: a whole work is the value; one end alone stays as it is.\n */\n protected done(source: Event) {\n const work = this.work();\n if (work.start !== null && work.end !== null && !isSameTimeRange(work, this.held())) {\n this.commit(work, 'select', source);\n }\n this.setOpen(false, 'pointer', source);\n this.triggerRef?.nativeElement.focus({ preventScroll: true });\n }\n\n protected onControlFocusOut(event: FocusEvent) {\n const next = event.relatedTarget;\n if (next instanceof Node && this.element.contains(next)) return;\n this.onTouchedFn();\n }\n\n protected onListFocusOut(event: FocusEvent) {\n const next = event.relatedTarget;\n if (next instanceof Node && (event.currentTarget as HTMLElement).contains(next)) return;\n this.listFocused.set(false);\n }\n\n protected hover(position: TimeRangePickerPosition, option: TimeOption) {\n this.hovered.set(option.unavailable ? null : { position, time: option.time });\n }\n\n /**\n * A field in the band writes its end to the work at every request it emits,\n * with the field's own reason, and an open end is a value on its own.\n */\n protected onFieldValue(request: TimeFieldChangeRequest) {\n const next: TimeRange = { ...this.work(), [this.currentPosition()]: request.value };\n this.work.set(next);\n this.commit(next, request.reason, request.source);\n }\n\n protected chooseNow(source: Event) {\n if (!this.editable()) return;\n this.writeEnd(this.currentPosition(), this.anchor(), source);\n }\n\n protected select(position: TimeRangePickerPosition, option: TimeOption, source: Event) {\n if (option.unavailable || !this.editable()) return;\n this.writeEnd(position, option.time, source);\n }\n\n /**\n * A press in a list, or on `now`: the end of that list is written to the\n * work. Whole, the work is the value and the panel closes when the press\n * completed it; incomplete, focus carries to the end that is missing.\n */\n private writeEnd(position: TimeRangePickerPosition, time: PlainTime, source: unknown) {\n const before = this.work();\n const wasWhole = before.start !== null && before.end !== null;\n const next: TimeRange = { ...before, [position]: time };\n this.work.set(next);\n this.setHighlight({ ...this.highlight(), [position]: time }, 'pointer', source);\n if (next.start !== null && next.end !== null) {\n this.commit(next, 'select', source);\n this.setPosition(position, 'select', source);\n this.closeAfter(!wasWhole, source);\n return;\n }\n this.enterList(other(position), source);\n }\n\n private closeAfter(completed: boolean, source: unknown) {\n const axis = this.closeOnSelect() ?? this.defaults.closeOnSelect;\n if (!(axis === 'always' || (axis === 'auto' && completed))) return;\n this.setOpen(false, 'select', source);\n this.triggerRef?.nativeElement.focus({ preventScroll: true });\n }\n\n /** Where a list opens: on its end, on the nearest step to now, or on the first available option. */\n private openingIndex(position: TimeRangePickerPosition): number {\n const work = this.work();\n const otherEnd = work[other(position)];\n return openingIndexOf(\n this.lists()[position],\n work[position] ?? otherEnd ?? this.anchor(),\n otherEnd,\n position,\n );\n }\n\n /**\n * Into the list of one end: the tab moves there when it is not the current\n * one, and focus lands on its highlight after the render that drew it.\n */\n private enterList(position: TimeRangePickerPosition, source?: unknown) {\n if (position !== this.currentPosition()) this.setPosition(position, 'select', source);\n afterNextRender(\n () => {\n const at = this.highlightIndex(position);\n const index = at >= 0 ? at : this.openingIndex(position);\n if (index < 0) {\n this.field?.focus();\n return;\n }\n const option = this.lists()[position][index];\n if (option !== undefined) {\n this.setHighlight(\n { ...this.highlight(), [position]: option.time },\n 'keyboard',\n undefined,\n );\n }\n this.focusOption(position, index);\n },\n { injector: this.injector },\n );\n }\n\n private focusOption(position: TimeRangePickerPosition, index: number) {\n const rows = this.layer?.nativeElement.querySelectorAll<HTMLElement>(\n `[data-part=\"panel\"][data-position=\"${position}\"] [data-part=\"option\"]`,\n );\n const row = rows?.[index];\n row?.focus();\n const list = row?.closest<HTMLElement>('[data-part=\"list\"]');\n if (row !== undefined && list) revealRow(list, row, false);\n }\n\n /** The list scrolled to its highlight: centred as the surface opens, by the least after. */\n private revealHighlights(centre: boolean) {\n const position = this.currentPosition();\n const index = this.highlightIndex(position);\n if (index < 0) return;\n const list = this.layer?.nativeElement.querySelector<HTMLElement>('[data-part=\"list\"]');\n const row = list?.querySelectorAll<HTMLElement>('[data-part=\"option\"]')[index];\n if (list && row !== undefined) revealRow(list, row, centre);\n }\n\n /** The field, or the list where the field is not drawn (a coarse pointer). */\n private focusField() {\n const box = this.fieldBox?.nativeElement;\n if (box !== undefined && getComputedStyle(box).display === 'none') {\n this.focusOption(\n this.currentPosition(),\n Math.max(0, this.highlightIndex(this.currentPosition())),\n );\n return;\n }\n this.field?.focus();\n }\n\n /* ── The keyboard ──────────────────────────────────────────────────── */\n\n protected onListKeyDown(position: TimeRangePickerPosition, event: KeyboardEvent) {\n const list = this.lists()[position];\n const found = this.highlightIndex(position);\n const at = found >= 0 ? found : 0;\n\n const move = (index: number) => {\n event.preventDefault();\n const clamped = Math.max(0, Math.min(list.length - 1, index));\n const option = list[clamped];\n if (option === undefined) return;\n this.setHighlight({ ...this.highlight(), [position]: option.time }, 'keyboard', event);\n this.focusOption(position, clamped);\n };\n\n switch (event.key) {\n case 'ArrowDown':\n move(at + 1);\n return;\n case 'ArrowUp':\n move(at - 1);\n return;\n case 'Home':\n move(0);\n return;\n case 'End':\n move(list.length - 1);\n return;\n case 'PageDown':\n move(hourJump(list, at, 1));\n return;\n case 'PageUp':\n move(hourJump(list, at, -1));\n return;\n case 'Enter':\n case ' ': {\n event.preventDefault();\n const option = list[at];\n if (option !== undefined) this.select(position, option, event);\n return;\n }\n default:\n break;\n }\n\n const typeahead = this.typeaheads[position];\n if (typeahead === null) return;\n if (!isPrintable(event.key, typeahead.query.length > 0)) return;\n const found2 = typeahead.match(event.key, this.labels()[position], at);\n if (found2 < 0) return;\n move(found2);\n }\n\n /* ── The machinery ─────────────────────────────────────────────────── */\n\n private commit(next: TimeRange | null, reason: ChangeReason, source: unknown) {\n const normalized = normalize(next);\n let cancelled = false;\n const state = createControllable<TimeRange | null>({\n controlled: this.value() === undefined ? undefined : this.held(),\n initial: this.held(),\n equals: isSameTimeRange,\n onRequest: (request) => {\n this.valueChange.emit(request);\n cancelled = request.cancelled;\n },\n });\n if (!state.request(normalized, reason, source) || cancelled) return;\n if (this.value() === undefined) this.ownValue.set(normalized);\n this.onChangeFn(normalized);\n }\n\n private setPosition(next: TimeRangePickerPosition, reason: ChangeReason, source: unknown) {\n const state = createControllable<TimeRangePickerPosition>({\n controlled: this.position(),\n initial: this.currentPosition(),\n onRequest: (request) => this.positionChange.emit(request),\n });\n if (state.request(next, reason, source)) this.ownPosition.set(next);\n }\n\n private setHighlight(next: TimeRangePickerHighlight, reason: ChangeReason, source: unknown) {\n const state = createControllable<TimeRangePickerHighlight>({\n controlled: this.highlighted(),\n initial: this.highlight(),\n equals: (a, b) => isSameTime(a.start, b.start) && isSameTime(a.end, b.end),\n onRequest: (request) => this.highlightedChange.emit(request),\n });\n if (state.request(next, reason, source)) this.ownHighlight.set(next);\n }\n\n private setOpen(next: boolean, reason: ChangeReason, source: unknown) {\n const state = createControllable<boolean>({\n controlled: this.open(),\n initial: this.isOpen(),\n onRequest: (request) => this.openChange.emit(request),\n });\n if (state.request(next, reason, source)) this.ownOpen.set(next);\n }\n\n /** Places the layer and puts it in the single stack. */\n private attach() {\n const layer = this.layer?.nativeElement;\n if (layer === undefined) return;\n this.release();\n\n if (!this.sheet()) {\n const anchor =\n this.element.querySelector<HTMLElement>('[data-part=\"control\"]') ?? this.element;\n const [side, align] = this.resolvedPlacement().split('-') as [\n 'top' | 'bottom',\n 'start' | 'end' | undefined,\n ];\n this.positioner = createPositioner(anchor, layer, { align: align ?? 'center', side });\n /* The positioner writes `data-positioned` with the side, on the element, in\n the task that opened the layer; a binding to say it again was a frame later. */\n void this.positioner.update();\n }\n\n const trigger = this.triggerRef?.nativeElement;\n this.dismissable = createDismissableLayer(layer, {\n branches: trigger === undefined ? [] : [trigger],\n escape: true,\n focusOutside: false,\n modal: false,\n outsidePress: true,\n scrollLock: false,\n onDismiss: (request) => {\n /* A field with an expression open takes Escape first: the layer asks\n in the capture phase, so the field's own attribute is what says so. */\n if (\n request.reason === 'escape' &&\n layer.querySelector('[data-ui=\"time-field\"][data-relative]') !== null\n ) {\n return;\n }\n this.setOpen(\n false,\n request.reason === 'escape' ? 'escape' : 'outsidePress',\n request.source,\n );\n if (request.reason === 'escape') {\n this.triggerRef?.nativeElement.focus({ preventScroll: true });\n }\n },\n });\n\n for (const position of this.positions) {\n this.typeaheads[position] = createTypeahead({ locale: () => this.resolvedLocale() });\n }\n\n /* Opened by Enter, Space or a press, focus lands on the first segment of\n the current end's field; by an arrow, in that end's list. */\n const where = this.focusOnOpen;\n this.focusOnOpen = null;\n if (where === 'list') this.enterList(this.currentPosition());\n else if (where === 'field') this.focusField();\n }\n\n private release() {\n this.positioner?.destroy();\n this.positioner = null;\n this.dismissable?.destroy();\n this.dismissable = null;\n for (const position of this.positions) {\n this.typeaheads[position]?.destroy();\n this.typeaheads[position] = null;\n }\n this.layer?.nativeElement.removeAttribute('data-positioned');\n }\n}\n\n/**\n * One shortcut. It writes its range with the `select` reason and carries\n * `data-selected` while the value equals it. The list is the product's — \"the\n * morning shift\" is a business clock — and the family ships the button, not\n * the list.\n */\n@Directive({\n selector: 'button[slTimeRangePickerPreset]',\n standalone: true,\n exportAs: 'slTimeRangePickerPreset',\n host: {\n 'data-part': 'preset',\n 'data-part-preset': '',\n type: 'button',\n '[attr.data-selected]': \"selected() ? '' : null\",\n '(click)': 'choose($event)',\n },\n})\nexport class SlTimeRangePickerPreset {\n /** The range the press writes, or a function resolving it at the press. */\n readonly range = input.required<TimeRange | (() => TimeRange)>({\n alias: 'slTimeRangePickerPreset',\n });\n\n private readonly picker = inject(SlTimeRangePicker);\n\n protected readonly selected = computed(() => {\n const range = this.range();\n return isSameTimeRange(this.picker.selection(), typeof range === 'function' ? range() : range);\n });\n\n protected choose(event: Event) {\n if (event.defaultPrevented) return;\n const range = this.range();\n this.picker.choose(typeof range === 'function' ? range() : range, event);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["openingIndexOf"],"mappings":"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"}
|