@slotted/angular 0.1.0-beta.1 → 0.1.0-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/docs/AGENTS.snippet.md +12 -0
- package/docs/alert.json +7 -1
- package/docs/alert.md +3 -3
- package/docs/app-shell.examples.md +1 -1
- package/docs/app-shell.json +5 -5
- package/docs/app-shell.md +2 -2
- package/docs/avatar.json +22 -1
- package/docs/avatar.md +5 -3
- package/docs/badge.json +7 -1
- package/docs/badge.md +3 -3
- package/docs/button-group.json +2 -0
- package/docs/button-group.md +1 -1
- package/docs/button.json +51 -11
- package/docs/button.md +10 -6
- package/docs/calendar.json +8 -1
- package/docs/calendar.md +1 -0
- package/docs/cascader.json +1 -0
- package/docs/cascader.md +1 -1
- package/docs/chart.examples.md +1 -1
- package/docs/chart.json +10 -1
- package/docs/chart.md +3 -2
- package/docs/checkbox.json +7 -0
- package/docs/checkbox.md +1 -0
- package/docs/code-block.json +92 -92
- package/docs/code-block.md +69 -69
- package/docs/combobox.json +1 -0
- package/docs/combobox.md +1 -1
- package/docs/currency-field.json +40 -1
- package/docs/currency-field.md +5 -1
- package/docs/data-grid.examples.md +2 -2
- package/docs/data-grid.json +24 -7
- package/docs/data-grid.md +1 -1
- package/docs/data-grid.props.md +6 -4
- package/docs/data-list.json +2 -1
- package/docs/data-list.md +1 -1
- package/docs/date-field.json +9 -1
- package/docs/date-field.md +3 -2
- package/docs/date-picker.examples.md +36 -0
- package/docs/date-picker.json +20 -5
- package/docs/date-picker.md +5 -4
- package/docs/datetime-field.json +1 -0
- package/docs/datetime-field.md +1 -1
- package/docs/dialog.examples.md +158 -136
- package/docs/dialog.json +35 -11
- package/docs/dialog.md +4 -2
- package/docs/dialog.props.md +1 -1
- package/docs/drawer.json +5 -0
- package/docs/drawer.md +1 -0
- package/docs/entity-picker.json +19 -4
- package/docs/entity-picker.md +8 -6
- package/docs/event-calendar.json +7 -0
- package/docs/event-calendar.md +1 -0
- package/docs/filter-bar.json +118 -118
- package/docs/filter-bar.md +79 -79
- package/docs/form.json +2 -1
- package/docs/form.md +1 -1
- package/docs/guidelines/README.md +27 -0
- package/docs/guidelines/async-feedback.md +129 -0
- package/docs/guidelines/browsing.md +74 -0
- package/docs/guidelines/builders.md +97 -0
- package/docs/guidelines/composition.md +143 -0
- package/docs/guidelines/conversations.md +59 -0
- package/docs/guidelines/errors-and-conflicts.md +71 -0
- package/docs/guidelines/forms.md +202 -0
- package/docs/guidelines/index.md +129 -0
- package/docs/guidelines/layout-alignment.md +95 -0
- package/docs/guidelines/ledgers.md +45 -0
- package/docs/guidelines/list-pages.md +206 -0
- package/docs/guidelines/overviews.md +76 -0
- package/docs/guidelines/own-elements.md +115 -0
- package/docs/guidelines/reading-permissions.md +55 -0
- package/docs/guidelines/record-pages.md +178 -0
- package/docs/guidelines/reports.md +123 -0
- package/docs/guidelines/shell-composition.md +94 -0
- package/docs/guidelines/workspaces.md +46 -0
- package/docs/icon.json +3 -1
- package/docs/icon.md +3 -3
- package/docs/index.md +12 -0
- package/docs/inline-message.json +14 -2
- package/docs/inline-message.md +4 -3
- package/docs/list-item.json +9 -1
- package/docs/list-item.md +3 -3
- package/docs/list.json +19 -1
- package/docs/list.md +3 -1
- package/docs/markdown.json +79 -79
- package/docs/markdown.md +65 -65
- package/docs/menu.json +12 -0
- package/docs/menu.md +2 -0
- package/docs/message.json +7 -1
- package/docs/message.md +3 -3
- package/docs/multi-select.json +1 -0
- package/docs/multi-select.md +1 -1
- package/docs/notification-center.json +4 -0
- package/docs/notification-center.md +2 -2
- package/docs/number-field.json +1 -0
- package/docs/number-field.md +1 -1
- package/docs/otp-input.json +1 -0
- package/docs/otp-input.md +1 -1
- package/docs/page-header.json +4 -3
- package/docs/page-header.md +2 -2
- package/docs/page.json +1 -0
- package/docs/page.md +1 -0
- package/docs/popover.json +1 -1
- package/docs/progress-indicator.json +4 -3
- package/docs/progress-indicator.md +4 -4
- package/docs/prompt-composer.json +41 -1
- package/docs/prompt-composer.md +5 -1
- package/docs/rating.json +5 -3
- package/docs/rating.md +5 -5
- package/docs/section.json +27 -15
- package/docs/section.md +11 -9
- package/docs/segmented-control.json +36 -12
- package/docs/segmented-control.md +17 -1
- package/docs/select.json +1 -0
- package/docs/select.md +1 -1
- package/docs/side-navigation.json +1 -0
- package/docs/side-navigation.md +1 -1
- package/docs/skills/build-own-element/SKILL.md +90 -0
- package/docs/skills/compose-screen/SKILL.md +95 -0
- package/docs/skills/index.md +9 -0
- package/docs/skills/review-screen/SKILL.md +77 -0
- package/docs/skills/theme-app/SKILL.md +87 -0
- package/docs/skills/waiting-states/SKILL.md +143 -0
- package/docs/sparkline.json +5 -2
- package/docs/sparkline.md +4 -4
- package/docs/split-button.json +4 -1
- package/docs/split-button.md +3 -3
- package/docs/stat-card.json +5 -1
- package/docs/stat-card.md +3 -3
- package/docs/table.examples.md +3 -3
- package/docs/table.json +85 -3
- package/docs/table.md +12 -1
- package/docs/tabs.json +17 -7
- package/docs/tabs.md +3 -2
- package/docs/tag.json +14 -4
- package/docs/tag.md +6 -6
- package/docs/tags-input.json +29 -2
- package/docs/tags-input.md +4 -1
- package/docs/text-field.json +2 -1
- package/docs/text-field.md +2 -2
- package/docs/textarea.json +1 -0
- package/docs/textarea.md +1 -1
- package/docs/time-field.json +1 -0
- package/docs/time-field.md +1 -1
- package/docs/timeline.json +138 -132
- package/docs/timeline.md +125 -125
- package/docs/toast.json +7 -1
- package/docs/toast.md +3 -3
- package/docs/toggle-group.json +14 -3
- package/docs/toggle-group.md +3 -3
- package/docs/toggle.json +12 -3
- package/docs/toggle.md +3 -3
- package/docs/tokens.md +467 -0
- package/docs/tour.json +1 -1
- package/docs/typography.json +4 -2
- package/docs/typography.md +4 -4
- package/fesm2022/slotted-angular-accordion.mjs +4 -2
- package/fesm2022/slotted-angular-accordion.mjs.map +1 -1
- package/fesm2022/slotted-angular-action-bar.mjs +22 -11
- package/fesm2022/slotted-angular-action-bar.mjs.map +1 -1
- package/fesm2022/slotted-angular-action-sheet.mjs +42 -29
- package/fesm2022/slotted-angular-action-sheet.mjs.map +1 -1
- package/fesm2022/slotted-angular-alert.mjs +18 -11
- package/fesm2022/slotted-angular-alert.mjs.map +1 -1
- package/fesm2022/slotted-angular-app-shell.mjs +111 -61
- package/fesm2022/slotted-angular-app-shell.mjs.map +1 -1
- package/fesm2022/slotted-angular-aspect-ratio.mjs +4 -2
- package/fesm2022/slotted-angular-aspect-ratio.mjs.map +1 -1
- package/fesm2022/slotted-angular-attachment.mjs +31 -20
- package/fesm2022/slotted-angular-attachment.mjs.map +1 -1
- package/fesm2022/slotted-angular-avatar-group.mjs +9 -6
- package/fesm2022/slotted-angular-avatar-group.mjs.map +1 -1
- package/fesm2022/slotted-angular-avatar.mjs +14 -7
- package/fesm2022/slotted-angular-avatar.mjs.map +1 -1
- package/fesm2022/slotted-angular-badge.mjs +14 -10
- package/fesm2022/slotted-angular-badge.mjs.map +1 -1
- package/fesm2022/slotted-angular-breadcrumb.mjs +26 -18
- package/fesm2022/slotted-angular-breadcrumb.mjs.map +1 -1
- package/fesm2022/slotted-angular-button-group.mjs +7 -4
- package/fesm2022/slotted-angular-button-group.mjs.map +1 -1
- package/fesm2022/slotted-angular-button.mjs +90 -29
- package/fesm2022/slotted-angular-button.mjs.map +1 -1
- package/fesm2022/slotted-angular-calendar.mjs +235 -58
- package/fesm2022/slotted-angular-calendar.mjs.map +1 -1
- package/fesm2022/slotted-angular-card.mjs +18 -16
- package/fesm2022/slotted-angular-card.mjs.map +1 -1
- package/fesm2022/slotted-angular-carousel.mjs +22 -11
- package/fesm2022/slotted-angular-carousel.mjs.map +1 -1
- package/fesm2022/slotted-angular-cascader.mjs +166 -66
- package/fesm2022/slotted-angular-cascader.mjs.map +1 -1
- package/fesm2022/slotted-angular-chart.mjs +53 -20
- package/fesm2022/slotted-angular-chart.mjs.map +1 -1
- package/fesm2022/slotted-angular-checkbox-group.mjs +5 -3
- package/fesm2022/slotted-angular-checkbox-group.mjs.map +1 -1
- package/fesm2022/slotted-angular-checkbox.mjs +23 -9
- package/fesm2022/slotted-angular-checkbox.mjs.map +1 -1
- package/fesm2022/slotted-angular-code-block.mjs +29 -15
- package/fesm2022/slotted-angular-code-block.mjs.map +1 -1
- package/fesm2022/slotted-angular-collapsible.mjs +20 -15
- package/fesm2022/slotted-angular-collapsible.mjs.map +1 -1
- package/fesm2022/slotted-angular-color-picker.mjs +77 -22
- package/fesm2022/slotted-angular-color-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-column-manager.mjs +68 -31
- package/fesm2022/slotted-angular-column-manager.mjs.map +1 -1
- package/fesm2022/slotted-angular-combobox.mjs +112 -39
- package/fesm2022/slotted-angular-combobox.mjs.map +1 -1
- package/fesm2022/slotted-angular-command-palette.mjs +150 -54
- package/fesm2022/slotted-angular-command-palette.mjs.map +1 -1
- package/fesm2022/slotted-angular-container.mjs +6 -4
- package/fesm2022/slotted-angular-container.mjs.map +1 -1
- package/fesm2022/slotted-angular-context-menu.mjs +5 -4
- package/fesm2022/slotted-angular-context-menu.mjs.map +1 -1
- package/fesm2022/slotted-angular-currency-field.mjs +149 -32
- package/fesm2022/slotted-angular-currency-field.mjs.map +1 -1
- package/fesm2022/slotted-angular-dashboard-grid.mjs +142 -63
- package/fesm2022/slotted-angular-dashboard-grid.mjs.map +1 -1
- package/fesm2022/slotted-angular-data-grid.mjs +354 -113
- package/fesm2022/slotted-angular-data-grid.mjs.map +1 -1
- package/fesm2022/slotted-angular-data-list.mjs +83 -50
- package/fesm2022/slotted-angular-data-list.mjs.map +1 -1
- package/fesm2022/slotted-angular-date-field.mjs +74 -25
- package/fesm2022/slotted-angular-date-field.mjs.map +1 -1
- package/fesm2022/slotted-angular-date-picker.mjs +112 -40
- package/fesm2022/slotted-angular-date-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-date-range-picker.mjs +45 -22
- package/fesm2022/slotted-angular-date-range-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-datetime-field.mjs +48 -16
- package/fesm2022/slotted-angular-datetime-field.mjs.map +1 -1
- package/fesm2022/slotted-angular-datetime-picker.mjs +41 -29
- package/fesm2022/slotted-angular-datetime-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-datetime-range-picker.mjs +115 -48
- package/fesm2022/slotted-angular-datetime-range-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-description-list.mjs +33 -19
- package/fesm2022/slotted-angular-description-list.mjs.map +1 -1
- package/fesm2022/slotted-angular-detail-panel.mjs +29 -18
- package/fesm2022/slotted-angular-detail-panel.mjs.map +1 -1
- package/fesm2022/slotted-angular-dialog.mjs +72 -30
- package/fesm2022/slotted-angular-dialog.mjs.map +1 -1
- package/fesm2022/slotted-angular-divider.mjs +7 -5
- package/fesm2022/slotted-angular-divider.mjs.map +1 -1
- package/fesm2022/slotted-angular-drawer.mjs +53 -29
- package/fesm2022/slotted-angular-drawer.mjs.map +1 -1
- package/fesm2022/slotted-angular-entity-picker.mjs +468 -75
- package/fesm2022/slotted-angular-entity-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-event-calendar.mjs +275 -108
- package/fesm2022/slotted-angular-event-calendar.mjs.map +1 -1
- package/fesm2022/slotted-angular-field-group.mjs +14 -7
- package/fesm2022/slotted-angular-field-group.mjs.map +1 -1
- package/fesm2022/slotted-angular-field.mjs +35 -15
- package/fesm2022/slotted-angular-field.mjs.map +1 -1
- package/fesm2022/slotted-angular-filter-bar.mjs +112 -51
- package/fesm2022/slotted-angular-filter-bar.mjs.map +1 -1
- package/fesm2022/slotted-angular-form.mjs +18 -10
- package/fesm2022/slotted-angular-form.mjs.map +1 -1
- package/fesm2022/slotted-angular-fullscreen.mjs +14 -8
- package/fesm2022/slotted-angular-fullscreen.mjs.map +1 -1
- package/fesm2022/slotted-angular-grid.mjs +4 -2
- package/fesm2022/slotted-angular-grid.mjs.map +1 -1
- package/fesm2022/slotted-angular-highlight.mjs +5 -3
- package/fesm2022/slotted-angular-highlight.mjs.map +1 -1
- package/fesm2022/slotted-angular-hover-card.mjs +5 -4
- package/fesm2022/slotted-angular-hover-card.mjs.map +1 -1
- package/fesm2022/slotted-angular-icon.mjs +6 -3
- package/fesm2022/slotted-angular-icon.mjs.map +1 -1
- package/fesm2022/slotted-angular-image.mjs +13 -10
- package/fesm2022/slotted-angular-image.mjs.map +1 -1
- package/fesm2022/slotted-angular-import-export-center.mjs +167 -99
- package/fesm2022/slotted-angular-import-export-center.mjs.map +1 -1
- package/fesm2022/slotted-angular-inline-message.mjs +88 -13
- package/fesm2022/slotted-angular-inline-message.mjs.map +1 -1
- package/fesm2022/slotted-angular-inline.mjs +4 -2
- package/fesm2022/slotted-angular-inline.mjs.map +1 -1
- package/fesm2022/slotted-angular-kbd.mjs +11 -7
- package/fesm2022/slotted-angular-kbd.mjs.map +1 -1
- package/fesm2022/slotted-angular-link.mjs +5 -3
- package/fesm2022/slotted-angular-link.mjs.map +1 -1
- package/fesm2022/slotted-angular-list-item.mjs +21 -18
- package/fesm2022/slotted-angular-list-item.mjs.map +1 -1
- package/fesm2022/slotted-angular-list.mjs +37 -22
- package/fesm2022/slotted-angular-list.mjs.map +1 -1
- package/fesm2022/slotted-angular-listbox.mjs +39 -21
- package/fesm2022/slotted-angular-listbox.mjs.map +1 -1
- package/fesm2022/slotted-angular-loading-overlay.mjs +59 -22
- package/fesm2022/slotted-angular-loading-overlay.mjs.map +1 -1
- package/fesm2022/slotted-angular-markdown.mjs +31 -19
- package/fesm2022/slotted-angular-markdown.mjs.map +1 -1
- package/fesm2022/slotted-angular-menu.mjs +51 -29
- package/fesm2022/slotted-angular-menu.mjs.map +1 -1
- package/fesm2022/slotted-angular-menubar.mjs +4 -2
- package/fesm2022/slotted-angular-menubar.mjs.map +1 -1
- package/fesm2022/slotted-angular-message-scroller.mjs +28 -15
- package/fesm2022/slotted-angular-message-scroller.mjs.map +1 -1
- package/fesm2022/slotted-angular-message.mjs +113 -51
- package/fesm2022/slotted-angular-message.mjs.map +1 -1
- package/fesm2022/slotted-angular-multi-select.mjs +189 -87
- package/fesm2022/slotted-angular-multi-select.mjs.map +1 -1
- package/fesm2022/slotted-angular-navigation-menu.mjs +34 -26
- package/fesm2022/slotted-angular-navigation-menu.mjs.map +1 -1
- package/fesm2022/slotted-angular-notification-center.mjs +108 -65
- package/fesm2022/slotted-angular-notification-center.mjs.map +1 -1
- package/fesm2022/slotted-angular-number-field.mjs +23 -11
- package/fesm2022/slotted-angular-number-field.mjs.map +1 -1
- package/fesm2022/slotted-angular-otp-input.mjs +13 -8
- package/fesm2022/slotted-angular-otp-input.mjs.map +1 -1
- package/fesm2022/slotted-angular-page-header.mjs +75 -45
- package/fesm2022/slotted-angular-page-header.mjs.map +1 -1
- package/fesm2022/slotted-angular-page.mjs +38 -10
- package/fesm2022/slotted-angular-page.mjs.map +1 -1
- package/fesm2022/slotted-angular-pagination.mjs +35 -22
- package/fesm2022/slotted-angular-pagination.mjs.map +1 -1
- package/fesm2022/slotted-angular-popover.mjs +32 -19
- package/fesm2022/slotted-angular-popover.mjs.map +1 -1
- package/fesm2022/slotted-angular-progress-indicator.mjs +236 -52
- package/fesm2022/slotted-angular-progress-indicator.mjs.map +1 -1
- package/fesm2022/slotted-angular-prompt-composer.mjs +41 -20
- package/fesm2022/slotted-angular-prompt-composer.mjs.map +1 -1
- package/fesm2022/slotted-angular-prose.mjs +14 -11
- package/fesm2022/slotted-angular-prose.mjs.map +1 -1
- package/fesm2022/slotted-angular-radio-group.mjs +15 -9
- package/fesm2022/slotted-angular-radio-group.mjs.map +1 -1
- package/fesm2022/slotted-angular-rating.mjs +138 -82
- package/fesm2022/slotted-angular-rating.mjs.map +1 -1
- package/fesm2022/slotted-angular-result-state.mjs +16 -12
- package/fesm2022/slotted-angular-result-state.mjs.map +1 -1
- package/fesm2022/slotted-angular-saved-views.mjs +43 -16
- package/fesm2022/slotted-angular-saved-views.mjs.map +1 -1
- package/fesm2022/slotted-angular-scroll-area.mjs +13 -5
- package/fesm2022/slotted-angular-scroll-area.mjs.map +1 -1
- package/fesm2022/slotted-angular-section.mjs +53 -18
- package/fesm2022/slotted-angular-section.mjs.map +1 -1
- package/fesm2022/slotted-angular-segmented-control.mjs +37 -11
- package/fesm2022/slotted-angular-segmented-control.mjs.map +1 -1
- package/fesm2022/slotted-angular-select.mjs +184 -94
- package/fesm2022/slotted-angular-select.mjs.map +1 -1
- package/fesm2022/slotted-angular-side-navigation.mjs +46 -35
- package/fesm2022/slotted-angular-side-navigation.mjs.map +1 -1
- package/fesm2022/slotted-angular-skeleton.mjs +32 -16
- package/fesm2022/slotted-angular-skeleton.mjs.map +1 -1
- package/fesm2022/slotted-angular-slider.mjs +31 -11
- package/fesm2022/slotted-angular-slider.mjs.map +1 -1
- package/fesm2022/slotted-angular-sparkline.mjs +41 -14
- package/fesm2022/slotted-angular-sparkline.mjs.map +1 -1
- package/fesm2022/slotted-angular-split-button.mjs +25 -11
- package/fesm2022/slotted-angular-split-button.mjs.map +1 -1
- package/fesm2022/slotted-angular-splitter.mjs +11 -9
- package/fesm2022/slotted-angular-splitter.mjs.map +1 -1
- package/fesm2022/slotted-angular-stack.mjs +4 -2
- package/fesm2022/slotted-angular-stack.mjs.map +1 -1
- package/fesm2022/slotted-angular-stat-card.mjs +35 -28
- package/fesm2022/slotted-angular-stat-card.mjs.map +1 -1
- package/fesm2022/slotted-angular-status-indicator.mjs +22 -8
- package/fesm2022/slotted-angular-status-indicator.mjs.map +1 -1
- package/fesm2022/slotted-angular-stepper.mjs +40 -15
- package/fesm2022/slotted-angular-stepper.mjs.map +1 -1
- package/fesm2022/slotted-angular-switch.mjs +15 -10
- package/fesm2022/slotted-angular-switch.mjs.map +1 -1
- package/fesm2022/slotted-angular-table-of-contents.mjs +29 -21
- package/fesm2022/slotted-angular-table-of-contents.mjs.map +1 -1
- package/fesm2022/slotted-angular-table.mjs +243 -73
- package/fesm2022/slotted-angular-table.mjs.map +1 -1
- package/fesm2022/slotted-angular-tabs.mjs +42 -18
- package/fesm2022/slotted-angular-tabs.mjs.map +1 -1
- package/fesm2022/slotted-angular-tag.mjs +19 -12
- package/fesm2022/slotted-angular-tag.mjs.map +1 -1
- package/fesm2022/slotted-angular-tags-input.mjs +253 -28
- package/fesm2022/slotted-angular-tags-input.mjs.map +1 -1
- package/fesm2022/slotted-angular-text-field.mjs +49 -15
- package/fesm2022/slotted-angular-text-field.mjs.map +1 -1
- package/fesm2022/slotted-angular-textarea.mjs +5 -3
- package/fesm2022/slotted-angular-textarea.mjs.map +1 -1
- package/fesm2022/slotted-angular-time-field.mjs +48 -14
- package/fesm2022/slotted-angular-time-field.mjs.map +1 -1
- package/fesm2022/slotted-angular-time-picker.mjs +32 -20
- package/fesm2022/slotted-angular-time-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-time-range-picker.mjs +113 -46
- package/fesm2022/slotted-angular-time-range-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-timeline.mjs +135 -64
- package/fesm2022/slotted-angular-timeline.mjs.map +1 -1
- package/fesm2022/slotted-angular-toast.mjs +43 -31
- package/fesm2022/slotted-angular-toast.mjs.map +1 -1
- package/fesm2022/slotted-angular-toggle-group.mjs +25 -8
- package/fesm2022/slotted-angular-toggle-group.mjs.map +1 -1
- package/fesm2022/slotted-angular-toggle.mjs +9 -4
- package/fesm2022/slotted-angular-toggle.mjs.map +1 -1
- package/fesm2022/slotted-angular-toolbar.mjs +22 -11
- package/fesm2022/slotted-angular-toolbar.mjs.map +1 -1
- package/fesm2022/slotted-angular-tooltip.mjs +15 -6
- package/fesm2022/slotted-angular-tooltip.mjs.map +1 -1
- package/fesm2022/slotted-angular-top-navigation.mjs +64 -44
- package/fesm2022/slotted-angular-top-navigation.mjs.map +1 -1
- package/fesm2022/slotted-angular-tour.mjs +47 -22
- package/fesm2022/slotted-angular-tour.mjs.map +1 -1
- package/fesm2022/slotted-angular-transfer.mjs +69 -30
- package/fesm2022/slotted-angular-transfer.mjs.map +1 -1
- package/fesm2022/slotted-angular-tree.mjs +74 -26
- package/fesm2022/slotted-angular-tree.mjs.map +1 -1
- package/fesm2022/slotted-angular-typography.mjs +8 -4
- package/fesm2022/slotted-angular-typography.mjs.map +1 -1
- package/fesm2022/slotted-angular-upload.mjs +125 -57
- package/fesm2022/slotted-angular-upload.mjs.map +1 -1
- package/fesm2022/slotted-angular-visually-hidden.mjs +4 -2
- package/fesm2022/slotted-angular-visually-hidden.mjs.map +1 -1
- package/fesm2022/slotted-angular-wizard.mjs +163 -65
- package/fesm2022/slotted-angular-wizard.mjs.map +1 -1
- package/package.json +3 -3
- package/types/slotted-angular-accordion.d.ts.map +1 -1
- package/types/slotted-angular-action-bar.d.ts.map +1 -1
- package/types/slotted-angular-action-sheet.d.ts.map +1 -1
- package/types/slotted-angular-alert.d.ts +2 -2
- package/types/slotted-angular-alert.d.ts.map +1 -1
- package/types/slotted-angular-app-shell.d.ts +11 -3
- package/types/slotted-angular-app-shell.d.ts.map +1 -1
- package/types/slotted-angular-aspect-ratio.d.ts.map +1 -1
- package/types/slotted-angular-attachment.d.ts +1 -1
- package/types/slotted-angular-attachment.d.ts.map +1 -1
- package/types/slotted-angular-avatar-group.d.ts.map +1 -1
- package/types/slotted-angular-avatar.d.ts +11 -3
- package/types/slotted-angular-avatar.d.ts.map +1 -1
- package/types/slotted-angular-badge.d.ts +1 -1
- package/types/slotted-angular-badge.d.ts.map +1 -1
- package/types/slotted-angular-breadcrumb.d.ts.map +1 -1
- package/types/slotted-angular-button-group.d.ts +1 -1
- package/types/slotted-angular-button-group.d.ts.map +1 -1
- package/types/slotted-angular-button.d.ts +33 -13
- package/types/slotted-angular-button.d.ts.map +1 -1
- package/types/slotted-angular-calendar.d.ts +30 -2
- package/types/slotted-angular-calendar.d.ts.map +1 -1
- package/types/slotted-angular-card.d.ts.map +1 -1
- package/types/slotted-angular-carousel.d.ts.map +1 -1
- package/types/slotted-angular-cascader.d.ts.map +1 -1
- package/types/slotted-angular-chart.d.ts +10 -0
- package/types/slotted-angular-chart.d.ts.map +1 -1
- package/types/slotted-angular-checkbox-group.d.ts.map +1 -1
- package/types/slotted-angular-checkbox.d.ts +7 -1
- package/types/slotted-angular-checkbox.d.ts.map +1 -1
- package/types/slotted-angular-code-block.d.ts +1 -1
- package/types/slotted-angular-code-block.d.ts.map +1 -1
- package/types/slotted-angular-collapsible.d.ts +1 -1
- package/types/slotted-angular-collapsible.d.ts.map +1 -1
- package/types/slotted-angular-color-picker.d.ts.map +1 -1
- package/types/slotted-angular-column-manager.d.ts.map +1 -1
- package/types/slotted-angular-combobox.d.ts +5 -1
- package/types/slotted-angular-combobox.d.ts.map +1 -1
- package/types/slotted-angular-command-palette.d.ts +10 -1
- package/types/slotted-angular-command-palette.d.ts.map +1 -1
- package/types/slotted-angular-container.d.ts.map +1 -1
- package/types/slotted-angular-context-menu.d.ts.map +1 -1
- package/types/slotted-angular-currency-field.d.ts +63 -15
- package/types/slotted-angular-currency-field.d.ts.map +1 -1
- package/types/slotted-angular-dashboard-grid.d.ts.map +1 -1
- package/types/slotted-angular-data-grid.d.ts +49 -4
- package/types/slotted-angular-data-grid.d.ts.map +1 -1
- package/types/slotted-angular-data-list.d.ts.map +1 -1
- package/types/slotted-angular-date-field.d.ts +11 -1
- package/types/slotted-angular-date-field.d.ts.map +1 -1
- package/types/slotted-angular-date-picker.d.ts +38 -12
- package/types/slotted-angular-date-picker.d.ts.map +1 -1
- package/types/slotted-angular-date-range-picker.d.ts +0 -1
- package/types/slotted-angular-date-range-picker.d.ts.map +1 -1
- package/types/slotted-angular-datetime-field.d.ts.map +1 -1
- package/types/slotted-angular-datetime-picker.d.ts +0 -1
- package/types/slotted-angular-datetime-picker.d.ts.map +1 -1
- package/types/slotted-angular-datetime-range-picker.d.ts +0 -1
- package/types/slotted-angular-datetime-range-picker.d.ts.map +1 -1
- package/types/slotted-angular-description-list.d.ts.map +1 -1
- package/types/slotted-angular-detail-panel.d.ts.map +1 -1
- package/types/slotted-angular-dialog.d.ts +10 -3
- package/types/slotted-angular-dialog.d.ts.map +1 -1
- package/types/slotted-angular-divider.d.ts.map +1 -1
- package/types/slotted-angular-drawer.d.ts +7 -1
- package/types/slotted-angular-drawer.d.ts.map +1 -1
- package/types/slotted-angular-entity-picker.d.ts +63 -15
- package/types/slotted-angular-entity-picker.d.ts.map +1 -1
- package/types/slotted-angular-event-calendar.d.ts +9 -2
- package/types/slotted-angular-event-calendar.d.ts.map +1 -1
- package/types/slotted-angular-field-group.d.ts.map +1 -1
- package/types/slotted-angular-field.d.ts.map +1 -1
- package/types/slotted-angular-filter-bar.d.ts.map +1 -1
- package/types/slotted-angular-form.d.ts.map +1 -1
- package/types/slotted-angular-fullscreen.d.ts.map +1 -1
- package/types/slotted-angular-grid.d.ts.map +1 -1
- package/types/slotted-angular-highlight.d.ts.map +1 -1
- package/types/slotted-angular-hover-card.d.ts.map +1 -1
- package/types/slotted-angular-icon.d.ts +2 -2
- package/types/slotted-angular-icon.d.ts.map +1 -1
- package/types/slotted-angular-image.d.ts.map +1 -1
- package/types/slotted-angular-import-export-center.d.ts.map +1 -1
- package/types/slotted-angular-inline-message.d.ts +25 -25
- package/types/slotted-angular-inline-message.d.ts.map +1 -1
- package/types/slotted-angular-inline.d.ts.map +1 -1
- package/types/slotted-angular-kbd.d.ts.map +1 -1
- package/types/slotted-angular-link.d.ts.map +1 -1
- package/types/slotted-angular-list-item.d.ts +1 -1
- package/types/slotted-angular-list-item.d.ts.map +1 -1
- package/types/slotted-angular-list.d.ts +42 -27
- package/types/slotted-angular-list.d.ts.map +1 -1
- package/types/slotted-angular-listbox.d.ts.map +1 -1
- package/types/slotted-angular-loading-overlay.d.ts.map +1 -1
- package/types/slotted-angular-markdown.d.ts.map +1 -1
- package/types/slotted-angular-menu.d.ts +11 -2
- package/types/slotted-angular-menu.d.ts.map +1 -1
- package/types/slotted-angular-menubar.d.ts.map +1 -1
- package/types/slotted-angular-message-scroller.d.ts.map +1 -1
- package/types/slotted-angular-message.d.ts +1 -1
- package/types/slotted-angular-message.d.ts.map +1 -1
- package/types/slotted-angular-multi-select.d.ts +15 -1
- package/types/slotted-angular-multi-select.d.ts.map +1 -1
- package/types/slotted-angular-navigation-menu.d.ts.map +1 -1
- package/types/slotted-angular-notification-center.d.ts +1 -1
- package/types/slotted-angular-notification-center.d.ts.map +1 -1
- package/types/slotted-angular-number-field.d.ts.map +1 -1
- package/types/slotted-angular-otp-input.d.ts.map +1 -1
- package/types/slotted-angular-page-header.d.ts +4 -4
- package/types/slotted-angular-page-header.d.ts.map +1 -1
- package/types/slotted-angular-page.d.ts.map +1 -1
- package/types/slotted-angular-pagination.d.ts.map +1 -1
- package/types/slotted-angular-popover.d.ts.map +1 -1
- package/types/slotted-angular-progress-indicator.d.ts +8 -1
- package/types/slotted-angular-progress-indicator.d.ts.map +1 -1
- package/types/slotted-angular-prompt-composer.d.ts +11 -2
- package/types/slotted-angular-prompt-composer.d.ts.map +1 -1
- package/types/slotted-angular-prose.d.ts.map +1 -1
- package/types/slotted-angular-radio-group.d.ts.map +1 -1
- package/types/slotted-angular-rating.d.ts +1 -1
- package/types/slotted-angular-rating.d.ts.map +1 -1
- package/types/slotted-angular-result-state.d.ts.map +1 -1
- package/types/slotted-angular-saved-views.d.ts.map +1 -1
- package/types/slotted-angular-scroll-area.d.ts.map +1 -1
- package/types/slotted-angular-section.d.ts +11 -3
- package/types/slotted-angular-section.d.ts.map +1 -1
- package/types/slotted-angular-segmented-control.d.ts +15 -2
- package/types/slotted-angular-segmented-control.d.ts.map +1 -1
- package/types/slotted-angular-select.d.ts +12 -2
- package/types/slotted-angular-select.d.ts.map +1 -1
- package/types/slotted-angular-side-navigation.d.ts.map +1 -1
- package/types/slotted-angular-skeleton.d.ts.map +1 -1
- package/types/slotted-angular-slider.d.ts.map +1 -1
- package/types/slotted-angular-sparkline.d.ts +7 -1
- package/types/slotted-angular-sparkline.d.ts.map +1 -1
- package/types/slotted-angular-split-button.d.ts +2 -2
- package/types/slotted-angular-split-button.d.ts.map +1 -1
- package/types/slotted-angular-splitter.d.ts.map +1 -1
- package/types/slotted-angular-stack.d.ts.map +1 -1
- package/types/slotted-angular-stat-card.d.ts +1 -1
- package/types/slotted-angular-stat-card.d.ts.map +1 -1
- package/types/slotted-angular-status-indicator.d.ts +1 -1
- package/types/slotted-angular-status-indicator.d.ts.map +1 -1
- package/types/slotted-angular-stepper.d.ts +1 -1
- package/types/slotted-angular-stepper.d.ts.map +1 -1
- package/types/slotted-angular-switch.d.ts.map +1 -1
- package/types/slotted-angular-table-of-contents.d.ts.map +1 -1
- package/types/slotted-angular-table.d.ts +63 -6
- package/types/slotted-angular-table.d.ts.map +1 -1
- package/types/slotted-angular-tabs.d.ts +3 -4
- package/types/slotted-angular-tabs.d.ts.map +1 -1
- package/types/slotted-angular-tag.d.ts +1 -1
- package/types/slotted-angular-tag.d.ts.map +1 -1
- package/types/slotted-angular-tags-input.d.ts +33 -1
- package/types/slotted-angular-tags-input.d.ts.map +1 -1
- package/types/slotted-angular-text-field.d.ts.map +1 -1
- package/types/slotted-angular-textarea.d.ts.map +1 -1
- package/types/slotted-angular-theme.d.ts +1 -1
- package/types/slotted-angular-time-field.d.ts.map +1 -1
- package/types/slotted-angular-time-picker.d.ts +0 -1
- package/types/slotted-angular-time-picker.d.ts.map +1 -1
- package/types/slotted-angular-time-range-picker.d.ts +0 -1
- package/types/slotted-angular-time-range-picker.d.ts.map +1 -1
- package/types/slotted-angular-timeline.d.ts +1 -1
- package/types/slotted-angular-timeline.d.ts.map +1 -1
- package/types/slotted-angular-toast.d.ts +3 -3
- package/types/slotted-angular-toast.d.ts.map +1 -1
- package/types/slotted-angular-toggle-group.d.ts +8 -2
- package/types/slotted-angular-toggle-group.d.ts.map +1 -1
- package/types/slotted-angular-toggle.d.ts +1 -1
- package/types/slotted-angular-toggle.d.ts.map +1 -1
- package/types/slotted-angular-toolbar.d.ts.map +1 -1
- package/types/slotted-angular-tooltip.d.ts.map +1 -1
- package/types/slotted-angular-top-navigation.d.ts.map +1 -1
- package/types/slotted-angular-tour.d.ts.map +1 -1
- package/types/slotted-angular-transfer.d.ts.map +1 -1
- package/types/slotted-angular-tree.d.ts.map +1 -1
- package/types/slotted-angular-typography.d.ts +1 -1
- package/types/slotted-angular-typography.d.ts.map +1 -1
- package/types/slotted-angular-upload.d.ts +2 -2
- package/types/slotted-angular-upload.d.ts.map +1 -1
- package/types/slotted-angular-visually-hidden.d.ts.map +1 -1
- package/types/slotted-angular-wizard.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slotted-angular-datetime-field.mjs","sources":["../../datetime-field/src/datetime-field-defaults.ts","../../datetime-field/src/datetime-field.ts","../../datetime-field/src/datetime-field-parts.ts","../../datetime-field/src/slotted-angular-datetime-field.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\nimport type { TimeGranularity } from '@slotted/core/date';\n\n/** The type step the control sits at, matching the field around it. */\nexport type DateTimeFieldSize = 'sm' | 'md' | 'lg';\n\n/**\n * How much frame the control shows. The three steps `text-field` set, so a form\n * holding a name and a datetime shows one frame twice rather than two frames.\n */\nexport type DateTimeFieldVariant = 'outline' | 'subtle' | 'plain';\n\n/**\n * The question a consumer asks about the clock. Which variant of each — `h11`\n * or `h12`, `h23` or `h24` — is the locale's own, and `Intl` answers it.\n */\nexport type DateTimeFieldHourCycle = 12 | 24;\n\nexport interface DateTimeFieldDefaults {\n /** Only `gregory` today. The axis exists so a second calendar can arrive. */\n calendar: 'gregory';\n /** `0` is Sunday. Unset asks the locale. */\n firstDayOfWeek: number | undefined;\n /** How much of the time half is written. The date half is always whole. */\n granularity: TimeGranularity;\n /** Unset means the locale decides both the cycle and its variant. */\n hourCycle: DateTimeFieldHourCycle | undefined;\n /** Whether `+`, `-` and `=` open the duration expression. */\n relative: boolean;\n size: DateTimeFieldSize;\n /** Which zone answers \"what is the time now\". Unset means the runtime's own. */\n timeZone: string | undefined;\n variant: DateTimeFieldVariant;\n /** Two typed digits below this many years ahead are read as this century. */\n yearPivot: number | undefined;\n}\n\nconst FALLBACK: DateTimeFieldDefaults = {\n calendar: 'gregory',\n firstDayOfWeek: undefined,\n granularity: 'minute',\n hourCycle: undefined,\n relative: true,\n size: 'md',\n timeZone: undefined,\n variant: 'outline',\n yearPivot: undefined,\n};\n\nexport const DATE_TIME_FIELD_DEFAULTS = new InjectionToken<DateTimeFieldDefaults>(\n 'slotted datetime field defaults',\n { providedIn: 'root', factory: () => FALLBACK },\n);\n\n/**\n * An application decides once what its datetimes look like, which clock they\n * run on and which zone answers \"now\", rather than repeating the same inputs on\n * every control in a form. A control that states any of them itself still\n * wins. The locale that writes them, and the words the controls announce, come\n * from the language in force (`provideSlotted`).\n */\nexport function provideDateTimeFieldDefaults(defaults: Partial<DateTimeFieldDefaults>) {\n return {\n provide: DATE_TIME_FIELD_DEFAULTS,\n useFactory: (): DateTimeFieldDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\n/** What a datetime field renders as here, before it states anything itself. */\nexport function injectDateTimeFieldDefaults(): DateTimeFieldDefaults {\n return inject(DATE_TIME_FIELD_DEFAULTS);\n}\n","import {\n boundSegment,\n clearSegment,\n commitTyping,\n createDateTimeFormat,\n DATE_TIME_UNITS,\n dateTimeOf,\n dayWindow,\n EMPTY_SEGMENTS,\n fieldRange,\n halfOfField,\n incompleteHalf,\n isDateTimeInRange,\n isRelativeKey,\n isSameDateTime,\n isTimeInRange,\n nowDateTimeIn,\n parseDuration,\n resolveRelativeDateTime,\n segmentsOfDateTime,\n stepSegment,\n toISODateTime,\n typeDayPeriod,\n typeDigit,\n} from '@slotted/core/date';\nimport type {\n DateTimeHalf,\n DateTimePatternPart,\n PlainDate,\n PlainDateTime,\n PlainTime,\n SegmentFieldName,\n SegmentReference,\n SegmentState,\n TimeGranularity,\n} from '@slotted/core/date';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeReason, ChangeRequest } from '@slotted/core/state';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n forwardRef,\n HostAttributeToken,\n inject,\n input,\n output,\n signal,\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 {\n datetimeFieldMessages,\n type DatetimeFieldMessages,\n type PartialMessages,\n} from '@slotted/core/i18n';\nimport { SlField } from '@slotted/angular/field';\n\nimport { injectDateTimeFieldDefaults } from './datetime-field-defaults';\nimport type {\n DateTimeFieldHourCycle,\n DateTimeFieldSize,\n DateTimeFieldVariant,\n} from './datetime-field-defaults';\n\n/**\n * How far `PageUp` and `PageDown` move each field.\n *\n * Each half pages the way its own family already pages: year 10, month 5 and\n * day 5 from `date-field`, hour 3, minute 15, second 15 and day period 1 from\n * `time-field`. Two fields drawing the same segment and paging it differently\n * would be one behaviour with two answers.\n */\nconst PAGE_STEP: Record<SegmentFieldName, number> = {\n year: 10,\n month: 5,\n day: 5,\n hour: 3,\n minute: 15,\n second: 15,\n dayPeriod: 1,\n};\n\n/**\n * The hidden element carrying the whole value needs an identifier the group can\n * point `aria-labelledby` at, and Angular has no `useId`. A module counter is\n * what the framework leaves: stable for a given render order, which is what\n * hydration needs, and never on the public surface.\n */\nlet sequence = 0;\n\n/**\n * What a request carries beyond the value: the segments, so a half-written\n * value can be saved, and which half is still missing.\n *\n * There is no `crossesMidnight` here. `time-field` raises that flag because a\n * `PlainTime` has no day to put a crossing in, and names this family as the\n * consumer that would answer it — here the day exists, so the crossing is\n * already in the value.\n */\nexport interface DateTimeFieldChangeRequest extends ChangeRequest<PlainDateTime | null> {\n readonly segments: SegmentState;\n readonly incomplete: DateTimeHalf | null;\n}\n\n/**\n * A segmented datetime control: one spin button per field, in the order the\n * locale writes them, with all seven fields in one row.\n *\n * **It is not a `slDateField` beside a `slTimeField`.** Two nested family roots\n * would be two groups, two values and two `SegmentState`s. The order of the\n * halves and the literal between them come from one combined\n * `Intl.DateTimeFormat` that neither of them can see, and a digit that fills\n * the last date segment advances across the boundary into the first time\n * segment — which two roots cannot do.\n *\n * **Angular is a component with a template and a `ControlValueAccessor`**,\n * because a datetime belongs in a Reactive Form and Angular has the integration\n * point for it. It also implements `Validator`, and it reports five rules where\n * Kendo — the only surveyed implementation that validates at all — reports\n * three: `dateTimeParse`, `dateTimeIncomplete`, `dateTimeMin`, `dateTimeMax`\n * and `dateTimeUnavailable`.\n *\n * **The missing half is said out loud**, on the root, on the request and in the\n * validator. Every surveyed implementation reports an empty control and loses\n * what was written.\n */\n@Component({\n selector: '[slDateTimeField]',\n standalone: true,\n exportAs: 'slDateTimeField',\n imports: [SlGlyph, SlIcon],\n template: `<ng-content select=\"[slDateTimeFieldStart]\" />\n @if (expression() !== null) {\n <input\n #duration\n data-part=\"duration\"\n type=\"text\"\n placeholder=\"+40m, 1h30, +2d\"\n [attr.aria-label]=\"t('duration')\"\n [attr.aria-describedby]=\"describedBy()\"\n [value]=\"expression()\"\n (input)=\"onExpressionInput($event)\"\n (keydown)=\"onExpressionKeyDown($event)\"\n (blur)=\"commitExpression()\"\n />\n <span\n data-part=\"preview\"\n role=\"status\"\n aria-live=\"polite\"\n [attr.data-resolved]=\"resolved() === null ? null : ''\"\n [attr.data-rolls-day]=\"rollsDay() ? '' : null\"\n >\n <span slIcon directional><svg slGlyph name=\"chevron-right\"></svg></span>\n @if (rollsDay()) {\n <span data-part=\"preview-date\">{{ previewDate() }}</span\n >, {{ previewTime() }}\n } @else {\n {{ previewTime() }}\n }\n </span>\n } @else {\n <div\n data-part=\"segments\"\n role=\"group\"\n [attr.id]=\"controlId()\"\n [attr.aria-label]=\"label() ?? writtenLabel\"\n [attr.aria-labelledby]=\"labelledBy()\"\n [attr.aria-describedby]=\"describedBy()\"\n [attr.aria-invalid]=\"ariaInvalid()\"\n [attr.aria-required]=\"ariaRequired()\"\n [attr.aria-readonly]=\"ariaReadonly()\"\n [attr.aria-disabled]=\"ariaDisabled()\"\n (paste)=\"onPaste($event)\"\n >\n @for (group of halves(); track group.half) {\n <span data-part=\"half\" [attr.data-half]=\"group.half\">\n @for (part of group.parts; track $index) {\n @if (part.type === 'literal') {\n @if (part.boundary !== true || part.drawn !== false) {\n <span\n data-part=\"literal\"\n aria-hidden=\"true\"\n [attr.data-boundary]=\"part.boundary === true ? '' : null\"\n >{{ part.value }}</span\n >\n }\n } @else {\n <div\n data-part=\"segment\"\n role=\"spinbutton\"\n [attr.data-field]=\"part.type\"\n [attr.data-half]=\"halfOf(part.type)\"\n [attr.data-placeholder]=\"valueOf(part.type) === null ? '' : null\"\n [attr.aria-label]=\"part.value\"\n [attr.aria-valuenow]=\"valueOf(part.type)\"\n [attr.aria-valuemin]=\"rangeOf(part.type).min\"\n [attr.aria-valuemax]=\"rangeOf(part.type).max\"\n [attr.aria-valuetext]=\"spokenOf(part.type)\"\n [attr.aria-disabled]=\"ariaDisabled()\"\n [attr.aria-readonly]=\"ariaReadonly()\"\n [tabindex]=\"tabIndexOf(part.type)\"\n (mousedown)=\"onSegmentMouseDown($event)\"\n (focus)=\"activeField.set(part.type)\"\n (blur)=\"onBlur()\"\n >\n {{ textOf(part.type) }}\n </div>\n }\n }\n </span>\n }\n </div>\n }\n <span data-part=\"value-text\" hidden [attr.id]=\"valueTextId\">{{ spokenValue() }}</span>\n @if (showClear()) {\n <button\n data-part=\"clear\"\n type=\"button\"\n [attr.aria-label]=\"t('clear')\"\n (click)=\"clear($event)\"\n >\n <span slIcon><svg slGlyph name=\"x\"></svg></span>\n </button>\n }\n <ng-content select=\"[slDateTimeFieldEnd]\" />\n <input data-part=\"hidden-input\" type=\"hidden\" readonly [attr.name]=\"name()\" [value]=\"iso()\" />`,\n styleUrl: '../../../styles/src/datetime-field/datetime-field.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SlDateTimeField), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => SlDateTimeField), multi: true },\n ],\n host: {\n 'data-ui': 'datetime-field',\n 'data-part': 'root',\n '(mousedown)': 'onRootMouseDown($event)',\n '(keydown)': 'onKeyDown($event)',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-variant]': 'resolvedVariant()',\n '[attr.data-calendar]': 'resolvedCalendar()',\n '[attr.data-cycle]': 'dataCycle()',\n '[attr.data-granularity]': 'resolvedGranularity()',\n '[attr.data-incomplete]': 'incomplete()',\n '[attr.data-relative]': \"expression() === null ? 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 SlDateTimeField implements ControlValueAccessor, Validator, OnInit {\n /** Present means the consumer owns the value. */\n readonly value = input<PlainDateTime | null | undefined>(undefined);\n /** The value the control starts from when nobody else writes one. */\n readonly defaultValue = input<PlainDateTime | null | undefined>(undefined);\n\n /** The earliest whole value: where the range starts. Also a form rule. */\n readonly min = input<PlainDateTime | undefined>(undefined);\n /** The latest whole value: where the range ends. Also a form rule. */\n readonly max = input<PlainDateTime | undefined>(undefined);\n /**\n * The earliest time of **every** day inside the range.\n *\n * It applies beside `min` rather than instead of it, which MUI's own\n * validation page records that it cannot do.\n */\n readonly minTime = input<PlainTime | undefined>(undefined);\n /** The latest time of every day inside the range, beside `max`. */\n readonly maxTime = input<PlainTime | undefined>(undefined);\n /** Refuses particular days — a holiday, a closed shop, a booked room. */\n readonly isDateUnavailable = input<((date: PlainDate) => boolean) | undefined>(undefined);\n /**\n * Refuses particular times on a particular day. Two predicates rather than\n * one, because a day-level answer cannot be derived from a datetime-level\n * predicate without probing every step of that day.\n */\n readonly isTimeUnavailable = input<((time: PlainTime, date: PlainDate) => boolean) | undefined>(\n undefined,\n );\n\n /**\n * BCP 47. Decides the field order, the separators and the placeholder.\n * Unset, the language in force decides.\n */\n readonly locale = input<string | undefined>(undefined);\n /** Which zone answers \"what is the time now\", and nothing else. */\n readonly timeZone = input<string | undefined>(undefined);\n readonly hourCycle = input<DateTimeFieldHourCycle | undefined>(undefined);\n readonly granularity = input<TimeGranularity | undefined>(undefined);\n readonly calendar = input<'gregory' | undefined>(undefined);\n readonly firstDayOfWeek = input<number | undefined>(undefined);\n readonly yearPivot = input<number | undefined>(undefined);\n /**\n * What an empty segment steps from, and what a duration resolves against.\n * Unset, both are the current datetime in `timeZone`.\n */\n readonly referenceDateTime = input<PlainDateTime | undefined>(undefined);\n\n readonly size = input<DateTimeFieldSize | undefined>(undefined);\n readonly variant = input<DateTimeFieldVariant | undefined>(undefined);\n\n /** Unstated rather than `false`, so the control defers to the field. */\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 a button that empties both halves and returns focus to the control. */\n readonly clearable = input(false, { transform: booleanAttribute });\n /** Whether `+`, `-` and `=` open the duration 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 * clear button's name and the duration expression's name.\n */\n readonly messages = input<PartialMessages<DatetimeFieldMessages> | undefined>(undefined);\n /** The name a plain form post carries the ISO string under. */\n readonly name = input<string | undefined>(undefined);\n\n /**\n * One output for one transition, carrying the value, the value it replaces,\n * the segments, the half that is still missing, the reason, the originating\n * event and `cancel()`. There is no `[(value)]`, because a two-way binding\n * has one slot and can carry none of those.\n */\n /**\n * The accessible name, when it is bound rather than written: a static\n * `aria-label` is read once from the host, and a family naming this field\n * from its own input — `datetime-range-picker` names its two ends — has no\n * static attribute to write.\n */\n readonly label = input<string | undefined>(undefined);\n\n readonly valueChange = output<DateTimeFieldChangeRequest>();\n\n private readonly element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n private readonly defaults = injectDateTimeFieldDefaults();\n private readonly appLocale = injectLocale();\n /** The family's words in the language in force, with this field's `messages` laid over them. */\n readonly t = injectMessages(datetimeFieldMessages, this.messages);\n private readonly field = inject(SlField, { optional: true });\n\n /** Read before the host binding computes, so it never writes over it. */\n protected readonly writtenLabel = inject(new HostAttributeToken('aria-label'), {\n optional: true,\n });\n private readonly writtenId = inject(new HostAttributeToken('id'), { optional: true });\n private readonly writtenLabelledBy = inject(new HostAttributeToken('aria-labelledby'), {\n optional: true,\n });\n private readonly writtenDescribedBy = inject(new HostAttributeToken('aria-describedby'), {\n optional: true,\n });\n\n protected readonly valueTextId = `sl-datetime-field-${String((sequence += 1))}`;\n\n private readonly segments = signal<SegmentState>(EMPTY_SEGMENTS);\n private readonly formDisabled = signal<boolean | undefined>(undefined);\n /**\n * What datetime it is, resolved after construction rather than during it, so\n * a server and a browser never disagree about the markup. Nothing is drawn\n * from it: it is the value an empty segment steps to and a duration resolves\n * from.\n */\n private readonly clock = signal<PlainDateTime>({\n date: { year: 2000, month: 1, day: 1 },\n time: { hour: 12, minute: 0, second: 0 },\n });\n protected readonly activeField = signal<SegmentFieldName | undefined>(undefined);\n /** The duration being written, or `null` while the segments are showing. */\n protected readonly expression = signal<string | null>(null);\n\n private onChangeFn: (value: PlainDateTime | null) => void = () => undefined;\n private onTouchedFn: () => void = () => undefined;\n private onValidatorChangeFn: () => void = () => undefined;\n\n protected readonly resolvedGranularity = computed(\n () => this.granularity() ?? this.defaults.granularity,\n );\n protected readonly resolvedCalendar = computed(() => this.calendar() ?? this.defaults.calendar);\n\n protected readonly format = computed(() => {\n const firstDayOfWeek = this.firstDayOfWeek() ?? this.defaults.firstDayOfWeek;\n const yearPivot = this.yearPivot() ?? this.defaults.yearPivot;\n return createDateTimeFormat({\n granularity: this.resolvedGranularity(),\n hourCycle: this.hourCycle() ?? this.defaults.hourCycle,\n locale: this.locale() ?? this.appLocale(),\n ...(firstDayOfWeek === undefined ? {} : { firstDayOfWeek }),\n ...(yearPivot === undefined ? {} : { yearPivot }),\n });\n });\n\n protected readonly dataCycle = computed(() => (this.format().usesDayPeriod ? '12' : '24'));\n\n protected readonly fields = computed(() =>\n this.format()\n .pattern.filter((part) => part.type !== 'literal')\n .map((part) => part.type as SegmentFieldName),\n );\n\n /**\n * One box per half, and the only place the row is allowed to break.\n *\n * Flexbox breaks a line between any two items and offers no way to forbid one\n * place, so the boundary has to be a box rather than a rule.\n */\n protected readonly halves = computed(() => {\n const groups: { half: DateTimeHalf; parts: DateTimePatternPart[] }[] = [];\n for (const part of this.format().pattern) {\n const owner = part.half ?? 'date';\n const last = groups[groups.length - 1];\n if (last !== undefined && last.half === owner) last.parts.push(part);\n else groups.push({ half: owner, parts: [part] });\n }\n return groups;\n });\n\n /** What an empty segment steps from, in the shape the engine reads. */\n private readonly reference = computed<SegmentReference>(() => {\n const anchor = this.anchor();\n const shown = this.format().toDisplay(anchor.time.hour);\n return {\n ...anchor.date,\n dayPeriod: shown.dayPeriod ?? 0,\n hour: shown.hour,\n hourCycle: this.format().hourCycle,\n minute: anchor.time.minute,\n second: anchor.time.second,\n };\n });\n\n private readonly anchor = computed(() => this.referenceDateTime() ?? this.clock());\n\n /** The value the segments make, or `null` while either half is unfinished. */\n readonly dateTime = computed(() => dateTimeOf(this.segments(), this.format()));\n /** Which half is still missing, and `null` when none is. */\n readonly incomplete = computed(() => incompleteHalf(this.segments(), this.format()));\n\n protected readonly iso = computed(() => {\n const value = this.dateTime();\n return value === null ? '' : toISODateTime(value);\n });\n protected readonly spokenValue = computed(() => {\n const value = this.dateTime();\n return value === null ? '' : this.format().describe(value);\n });\n\n /* ── The duration expression ─────────────────────────────────────────── */\n\n protected readonly resolved = computed(() => {\n const written = this.expression();\n if (written === null) return null;\n const seconds = parseDuration(written, { units: DATE_TIME_UNITS });\n return seconds === null ? null : resolveRelativeDateTime(this.anchor(), seconds);\n });\n\n /** Whether the expression landed on a different day from the anchor's. */\n protected readonly rollsDay = computed(() => {\n const step = this.resolved();\n if (step === null) return false;\n const from = this.anchor().date;\n return (\n step.date.year !== from.year || step.date.month !== from.month || step.date.day !== from.day\n );\n });\n\n protected readonly previewTime = computed(() => {\n const step = this.resolved();\n return step === null ? '' : this.format().time.format(step.time);\n });\n protected readonly previewDate = computed(() => {\n const step = this.resolved();\n return step === null ? '' : this.format().describeDate(step.date, 'short');\n });\n\n /* ── What the field around it decides ────────────────────────────────── */\n\n readonly resolvedSize = computed(\n () => this.size() ?? this.field?.resolvedSize() ?? this.defaults.size,\n );\n readonly resolvedVariant = computed(() => this.variant() ?? this.defaults.variant);\n readonly resolvedDisabled = computed(\n () => this.disabled() ?? this.formDisabled() ?? this.field?.resolvedDisabled(),\n );\n readonly resolvedReadOnly = computed(() => this.readOnly() ?? this.field?.resolvedReadOnly());\n readonly resolvedRequired = computed(() => this.required() ?? this.field?.required());\n\n /**\n * Validity the family owns, beside the validity the consumer states.\n *\n * Both pairs of bounds apply at once — the whole-value one and the window\n * that repeats on every day — which is the combination MUI's own validation\n * page records that it cannot ship.\n */\n readonly resolvedInvalid = computed(() => {\n const value = this.dateTime();\n if (value !== null && this.refuses(value)) return true;\n return this.invalid() ?? this.field?.invalid();\n });\n\n protected readonly controlId = computed(\n () => this.writtenId ?? this.field?.ids().control ?? null,\n );\n protected readonly labelledBy = computed(() => {\n if (this.label() !== undefined || this.writtenLabel !== null) return null;\n const merged = [this.writtenLabelledBy ?? this.field?.ids().label, this.valueTextId].filter(\n Boolean,\n );\n return merged.length === 0 ? null : merged.join(' ');\n });\n protected readonly describedBy = computed(() => {\n const merged = [this.writtenDescribedBy, this.field?.describedBy()].filter(Boolean);\n return merged.length === 0 ? null : merged.join(' ');\n });\n protected readonly ariaInvalid = computed(() =>\n this.resolvedInvalid() === true ? 'true' : null,\n );\n protected readonly ariaRequired = computed(() =>\n this.resolvedRequired() === true ? 'true' : null,\n );\n protected readonly ariaReadonly = computed(() =>\n this.resolvedReadOnly() === true ? 'true' : null,\n );\n protected readonly ariaDisabled = computed(() =>\n this.resolvedDisabled() === true ? 'true' : null,\n );\n\n private readonly editable = computed(\n () => this.resolvedDisabled() !== true && this.resolvedReadOnly() !== true,\n );\n\n protected readonly showClear = computed(() => {\n if (!this.clearable() || !this.editable() || this.expression() !== null) return false;\n const held = this.segments();\n return this.fields().some((name) => held[name] !== null);\n });\n\n constructor() {\n /**\n * A consumer's own value writes the segments, and only when it names a\n * different value: written on every change detection it would throw away a\n * half-typed value on the keystroke that completes a different one.\n */\n effect(() => {\n const next = this.value();\n if (next === undefined) return;\n const segments = this.segments();\n /* A run of digits still being typed is not a value the consumer refused:\n with a controlled `null`, the first minute digit after a whole hour\n read as a time the consumer had not written back, and the segments\n were reset under the reader's fingers. Found by `time-range-picker`,\n which binds the field to its work. */\n if (segments.typing !== null) return;\n if (isSameDateTime(dateTimeOf(segments, this.format()), next)) return;\n this.segments.set(segmentsOfDateTime(next, this.format()));\n });\n\n /* The expression region is focused the moment it replaces the segments,\n with the caret after the character that opened it. */\n effect(() => {\n if (this.expression() === null) return;\n queueMicrotask(() => {\n const input = this.element.querySelector<HTMLInputElement>('[data-part=\"duration\"]');\n if (input === null) return;\n input.focus();\n input.setSelectionRange(input.value.length, input.value.length);\n });\n });\n }\n\n ngOnInit() {\n this.segments.set(\n segmentsOfDateTime(this.value() ?? this.defaultValue() ?? null, this.format()),\n );\n this.clock.set(nowDateTimeIn(this.timeZone() ?? this.defaults.timeZone));\n }\n\n /* ── The value ───────────────────────────────────────────────────────── */\n\n writeValue(value: PlainDateTime | null | undefined) {\n this.segments.set(segmentsOfDateTime(value ?? null, this.format()));\n }\n\n registerOnChange(fn: (value: PlainDateTime | 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, and one no surveyed implementation\n * reports at all.\n *\n * `dateTimeIncomplete` is that one: a reader who wrote a day and left is not\n * an empty control, and a form that says \"required\" there is answering a\n * different question. `required` itself is left to Angular's own, because a\n * form already has a word for it and two would disagree.\n */\n validate(control: AbstractControl): ValidationErrors | null {\n const value = control.value as PlainDateTime | null;\n\n if (value === null || value === undefined) {\n const half = this.incomplete();\n return half === null ? null : { slottedDateTimeIncomplete: { missing: half } };\n }\n\n const min = this.min();\n const max = this.max();\n if (!isDateTimeInRange(value, min, max)) {\n return { slottedDateTimeRange: { min, max, actual: value } };\n }\n\n const window = dayWindow(value.date, {\n max,\n maxTime: this.maxTime(),\n min,\n minTime: this.minTime(),\n });\n if (window === null || !isTimeInRange(value.time, window.earliest, window.latest)) {\n return { slottedDateTimeWindow: { actual: value } };\n }\n\n if (\n this.isDateUnavailable()?.(value.date) === true ||\n this.isTimeUnavailable()?.(value.time, value.date) === true\n ) {\n return { slottedDateTimeUnavailable: { actual: value } };\n }\n return null;\n }\n\n /** Puts focus on the first segment, which is where typing starts. */\n focus() {\n const first = this.fields()[0];\n if (first !== undefined) this.focusField(first);\n }\n\n /**\n * Where a press on the frame puts the reader: the first field still waiting\n * for a value, and the first field of the value when none is.\n */\n focusEntry() {\n const held = this.segments();\n const empty = this.fields().find((name) => held[name] === null);\n const target = empty ?? this.fields()[0];\n if (target !== undefined) this.focusField(target);\n }\n\n protected onRootMouseDown(event: MouseEvent) {\n const target = event.target as HTMLElement | null;\n if (target?.closest('[data-part=\"segment\"], button, a, input, select, textarea') != null) {\n return;\n }\n event.preventDefault();\n if (this.expression() === null) this.focusEntry();\n }\n\n /**\n * Safari does not focus a `div` on a press even when it carries a\n * `tabindex`, so the press says so itself rather than relying on it.\n */\n protected onSegmentMouseDown(event: MouseEvent) {\n event.preventDefault();\n (event.currentTarget as HTMLElement).focus();\n }\n\n /** Empties both halves at once, with the `clear` reason. */\n clear(source?: Event) {\n this.commit(EMPTY_SEGMENTS, 'clear', source);\n this.focus();\n }\n\n /* ── The keyboard ────────────────────────────────────────────────────── */\n\n /**\n * A key the field acted on is the field's, and nothing above it sees it. A\n * `div` with `role=\"spinbutton\"` is invisible to every \"is the target\n * editable\" guard an application writes, and `preventDefault` alone does not\n * help: a shortcut handler reads the key, not the default.\n */\n private consume(event: KeyboardEvent) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n /**\n * The keys are handled on the host rather than on each segment, so a\n * consumer's own `(keydown)` on the same element still runs before the family\n * stops the event — which is the composition React gets by calling the\n * consumer's handler first.\n */\n protected onKeyDown(event: KeyboardEvent) {\n const segment = (event.target as HTMLElement | null)?.closest<HTMLElement>(\n '[data-part=\"segment\"]',\n );\n const name = segment?.dataset['field'] as SegmentFieldName | undefined;\n if (name === undefined) return;\n\n /* An inline direction is a physical pair of keys and a logical order, so\n the arrow that walks forward is the one pointing along the writing\n direction rather than the one pointing right. It walks the whole row,\n across the boundary between the halves. */\n const rtl = getComputedStyle(this.element).direction === 'rtl';\n const forward = rtl ? 'ArrowLeft' : 'ArrowRight';\n const backward = rtl ? 'ArrowRight' : 'ArrowLeft';\n\n if (event.key === forward) {\n this.consume(event);\n this.moveBy(name, 1);\n return;\n }\n if (event.key === backward) {\n this.consume(event);\n this.moveBy(name, -1);\n return;\n }\n\n if (!this.editable()) return;\n\n /**\n * `Alt` with an arrow is not this control's chord. `datetime-picker` opens\n * its panel with `Alt`+`ArrowDown`, and a segment that stepped on it would\n * eat the only shortcut the surface has.\n */\n if (event.altKey) return;\n\n if ((this.relative() ?? this.defaults.relative) && isRelativeKey(event.key)) {\n this.consume(event);\n this.expression.set(event.key);\n return;\n }\n\n const held = this.segments();\n const reference = this.reference();\n\n switch (event.key) {\n case 'ArrowUp':\n this.consume(event);\n this.commit(stepSegment(held, name, 1, reference), 'keyboard', event);\n return;\n case 'ArrowDown':\n this.consume(event);\n this.commit(stepSegment(held, name, -1, reference), 'keyboard', event);\n return;\n case 'PageUp':\n this.consume(event);\n this.commit(stepSegment(held, name, PAGE_STEP[name], reference), 'keyboard', event);\n return;\n case 'PageDown':\n this.consume(event);\n this.commit(stepSegment(held, name, -PAGE_STEP[name], reference), 'keyboard', event);\n return;\n case 'Home':\n this.consume(event);\n this.commit(boundSegment(held, name, 'min', reference), 'keyboard', event);\n return;\n case 'End':\n this.consume(event);\n this.commit(boundSegment(held, name, 'max', reference), 'keyboard', event);\n return;\n case 'Backspace':\n case 'Delete':\n this.consume(event);\n this.commit(clearSegment(held, name), 'clear', event);\n return;\n default:\n break;\n }\n\n /* The day period holds two words rather than digits, and the platform's own\n control takes it by the first letter of either. */\n if (name === 'dayPeriod' && /^\\p{L}$/u.test(event.key)) {\n const typed = typeDayPeriod(held, event.key, this.format().time);\n if (typed === null) return;\n this.consume(event);\n this.commit(typed.segments, 'keyboard', event);\n if (typed.advance) this.moveBy(name, 1);\n return;\n }\n\n if (/^\\d$/.test(event.key)) {\n this.consume(event);\n const typed = typeDigit(held, name, Number(event.key), this.format().time, reference);\n this.commit(typed.segments, 'keyboard', event);\n if (typed.advance) this.moveBy(name, 1);\n }\n }\n\n protected onExpressionInput(event: Event) {\n this.expression.set((event.target as HTMLInputElement).value);\n }\n\n protected onExpressionKeyDown(event: KeyboardEvent) {\n if (event.key === 'Enter') {\n /* An expression inside a form must not submit it: `Enter` is this\n control's commit and nothing above it needs to hear the key. */\n this.consume(event);\n this.commitExpression(event);\n this.focus();\n return;\n }\n\n if (event.key === 'Escape') {\n /* Abandoned whole, and the segments come back exactly as they were. The\n key is stopped so an overlay above does not close on the same press —\n the field takes it first while an expression is open, which is the\n staging `datetime-picker` depends on. */\n this.consume(event);\n this.expression.set(null);\n this.focus();\n }\n }\n\n /** Commits the expression when it resolves, and abandons it when it does not. */\n protected commitExpression(source?: Event) {\n const step = this.resolved();\n if (step === null) {\n this.expression.set(null);\n return;\n }\n this.commit(segmentsOfDateTime(step, this.format()), 'keyboard', source);\n this.expression.set(null);\n }\n\n /**\n * A whole value, pasted. The locale's shape is read first and ISO 8601 after\n * it; text that is neither but reads as a duration opens the expression, so\n * pasting `+2d` does what typing it does.\n */\n protected onPaste(event: ClipboardEvent) {\n if (!this.editable()) return;\n const text = event.clipboardData?.getData('text/plain') ?? '';\n\n const parsed = this.format().parse(text);\n if (parsed !== null) {\n event.preventDefault();\n this.commit(segmentsOfDateTime(parsed, this.format()), 'keyboard', event);\n return;\n }\n\n if (\n (this.relative() ?? this.defaults.relative) &&\n parseDuration(text, { units: DATE_TIME_UNITS }) !== null\n ) {\n event.preventDefault();\n this.expression.set(text.trim());\n }\n }\n\n /** A run of typed digits ends when focus leaves. */\n protected onBlur() {\n this.activeField.set(undefined);\n this.onTouchedFn();\n const held = this.segments();\n if (held.typing === null) return;\n this.commit(commitTyping(held, this.format().time, this.reference()), 'blur', undefined);\n }\n\n /* ── What the template reads ─────────────────────────────────────────── */\n\n protected halfOf(field: SegmentFieldName): DateTimeHalf {\n return halfOfField(field);\n }\n\n protected valueOf(field: SegmentFieldName): number | null {\n return this.segments()[field];\n }\n\n /**\n * The day's own maximum is the month's, which is why the range is asked with\n * the year and the month rather than assumed to be 31.\n */\n protected rangeOf(field: SegmentFieldName) {\n const held = this.segments();\n return fieldRange(field, {\n hourCycle: this.format().hourCycle,\n ...(held.month === null ? {} : { month: held.month }),\n ...(held.year === null ? {} : { year: held.year }),\n });\n }\n\n /**\n * What a reader hears instead of the number. The day period is why it is not\n * optional: `aria-valuenow` there is `0` or `1`, which is not a name in any\n * language — and a month reads better as its own name than as a number.\n */\n protected spokenOf(field: SegmentFieldName): string | null {\n const raw = this.segments()[field];\n if (raw === null) return null;\n if (field === 'dayPeriod') return this.format().dayPeriodNames()[raw === 1 ? 1 : 0];\n if (field === 'month') return this.format().date.monthNames('long')[raw - 1] ?? String(raw);\n return String(raw);\n }\n\n /**\n * What one field shows. A finished value is padded to the field's width so\n * the columns hold their place; a value still being typed is not, because a\n * padded run shows numbers nobody typed.\n */\n protected textOf(field: SegmentFieldName): string {\n const held = this.segments();\n const raw = held[field];\n if (raw === null) {\n return this.format().pattern.find((part) => part.type === field)?.value ?? '';\n }\n\n const typing = held.typing;\n if (typing !== null && typing.field === field) {\n return String(raw).padStart(typing.digits, '0');\n }\n\n return this.format().formatValue(raw, field);\n }\n\n /** Exactly one segment is in the tab sequence, which is the roving model. */\n protected tabIndexOf(field: SegmentFieldName): number {\n if (this.resolvedDisabled() === true) return -1;\n return field === (this.activeField() ?? this.fields()[0]) ? 0 : -1;\n }\n\n /* ── The machinery ───────────────────────────────────────────────────── */\n\n /** Whether both pairs of bounds, or either predicate, refuse a whole value. */\n private refuses(value: PlainDateTime): boolean {\n const min = this.min();\n const max = this.max();\n if (!isDateTimeInRange(value, min, max)) return true;\n\n const window = dayWindow(value.date, {\n max,\n maxTime: this.maxTime(),\n min,\n minTime: this.minTime(),\n });\n if (window === null || !isTimeInRange(value.time, window.earliest, window.latest)) return true;\n\n return (\n this.isDateUnavailable()?.(value.date) === true ||\n this.isTimeUnavailable()?.(value.time, value.date) === true\n );\n }\n\n private focusField(name: SegmentFieldName) {\n this.activeField.set(name);\n this.element.querySelector<HTMLElement>(`[data-part=\"segment\"][data-field=\"${name}\"]`)?.focus();\n }\n\n private moveBy(name: SegmentFieldName, step: number) {\n const next = this.fields()[this.fields().indexOf(name) + step];\n if (next !== undefined) this.focusField(next);\n }\n\n /**\n * Moves the segments, and asks before the derived value moves with them.\n *\n * A run of typed digits moves the display and not the value: typing `23` into\n * an hour passes through `2` on the way, and `2` is a time the arithmetic\n * accepts and nobody meant. The request is emitted when the run ends.\n */\n private commit(next: SegmentState, reason: ChangeReason, source: Event | undefined) {\n const previous = this.dateTime();\n this.segments.set(next);\n if (next.typing !== null) return;\n\n const nextValue = dateTimeOf(next, this.format());\n let cancelled = false;\n const state = createControllable<PlainDateTime | null>({\n controlled: undefined,\n initial: previous,\n equals: isSameDateTime,\n onRequest: (request) => {\n this.valueChange.emit({\n ...request,\n incomplete: incompleteHalf(next, this.format()),\n segments: next,\n });\n cancelled = request.cancelled;\n },\n });\n state.request(nextValue, reason, source);\n\n if (cancelled) return;\n this.onChangeFn(nextValue);\n this.onValidatorChangeFn();\n }\n}\n","import { Directive } from '@angular/core';\n\n/**\n * An adornment before the value in the reading direction: a calendar mark, a\n * label, a zone name. Named for the direction rather than for a side, so the\n * same markup puts the mark before the value in both directions.\n *\n * It is a directive on the consumer's own element, so an `icon`, a `kbd` or a\n * `span` all work and none of them loses its own semantics. The stylesheet\n * sizes any icon inside it from the control's own glyph scale.\n */\n@Directive({\n selector: '[slDateTimeFieldStart]',\n standalone: true,\n exportAs: 'slDateTimeFieldStart',\n host: { 'data-part': 'start' },\n})\nexport class SlDateTimeFieldStart {}\n\n/** An adornment after the value in the reading direction. */\n@Directive({\n selector: '[slDateTimeFieldEnd]',\n standalone: true,\n exportAs: 'slDateTimeFieldEnd',\n host: { 'data-part': 'end' },\n})\nexport class SlDateTimeFieldEnd {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"slotted-angular-datetime-field.mjs","sources":["../../datetime-field/src/datetime-field-defaults.ts","../../datetime-field/src/datetime-field.ts","../../datetime-field/src/datetime-field-parts.ts","../../datetime-field/src/slotted-angular-datetime-field.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\nimport type { TimeGranularity } from '@slotted/core/date';\n\n/** The type step the control sits at, matching the field around it. */\nexport type DateTimeFieldSize = 'sm' | 'md' | 'lg';\n\n/**\n * How much frame the control shows. The three steps `text-field` set, so a form\n * holding a name and a datetime shows one frame twice rather than two frames.\n */\nexport type DateTimeFieldVariant = 'outline' | 'subtle' | 'plain';\n\n/**\n * The question a consumer asks about the clock. Which variant of each — `h11`\n * or `h12`, `h23` or `h24` — is the locale's own, and `Intl` answers it.\n */\nexport type DateTimeFieldHourCycle = 12 | 24;\n\nexport interface DateTimeFieldDefaults {\n /** Only `gregory` today. The axis exists so a second calendar can arrive. */\n calendar: 'gregory';\n /** `0` is Sunday. Unset asks the locale. */\n firstDayOfWeek: number | undefined;\n /** How much of the time half is written. The date half is always whole. */\n granularity: TimeGranularity;\n /** Unset means the locale decides both the cycle and its variant. */\n hourCycle: DateTimeFieldHourCycle | undefined;\n /** Whether `+`, `-` and `=` open the duration expression. */\n relative: boolean;\n size: DateTimeFieldSize;\n /** Which zone answers \"what is the time now\". Unset means the runtime's own. */\n timeZone: string | undefined;\n variant: DateTimeFieldVariant;\n /** Two typed digits below this many years ahead are read as this century. */\n yearPivot: number | undefined;\n}\n\nconst FALLBACK: DateTimeFieldDefaults = {\n calendar: 'gregory',\n firstDayOfWeek: undefined,\n granularity: 'minute',\n hourCycle: undefined,\n relative: true,\n size: 'md',\n timeZone: undefined,\n variant: 'outline',\n yearPivot: undefined,\n};\n\nexport const DATE_TIME_FIELD_DEFAULTS = new InjectionToken<DateTimeFieldDefaults>(\n 'slotted datetime field defaults',\n { providedIn: 'root', factory: () => FALLBACK },\n);\n\n/**\n * An application decides once what its datetimes look like, which clock they\n * run on and which zone answers \"now\", rather than repeating the same inputs on\n * every control in a form. A control that states any of them itself still\n * wins. The locale that writes them, and the words the controls announce, come\n * from the language in force (`provideSlotted`).\n */\nexport function provideDateTimeFieldDefaults(defaults: Partial<DateTimeFieldDefaults>) {\n return {\n provide: DATE_TIME_FIELD_DEFAULTS,\n useFactory: (): DateTimeFieldDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\n/** What a datetime field renders as here, before it states anything itself. */\nexport function injectDateTimeFieldDefaults(): DateTimeFieldDefaults {\n return inject(DATE_TIME_FIELD_DEFAULTS);\n}\n","import {\n boundSegment,\n clearSegment,\n commitTyping,\n createDateTimeFormat,\n DATE_TIME_UNITS,\n dateTimeOf,\n dayWindow,\n EMPTY_SEGMENTS,\n fieldRange,\n halfOfField,\n incompleteHalf,\n isDateTimeInRange,\n isRelativeKey,\n isSameDateTime,\n isTimeInRange,\n nowDateTimeIn,\n parseDuration,\n resolveRelativeDateTime,\n segmentsOfDateTime,\n stepSegment,\n toISODateTime,\n typeDayPeriod,\n typeDigit,\n} from '@slotted/core/date';\nimport type {\n DateTimeHalf,\n DateTimePatternPart,\n PlainDate,\n PlainDateTime,\n PlainTime,\n SegmentFieldName,\n SegmentReference,\n SegmentState,\n TimeGranularity,\n} from '@slotted/core/date';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeReason, ChangeRequest } from '@slotted/core/state';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n forwardRef,\n HostAttributeToken,\n inject,\n input,\n output,\n signal,\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 {\n datetimeFieldMessages,\n type DatetimeFieldMessages,\n type PartialMessages,\n} from '@slotted/core/i18n';\nimport { SlField } from '@slotted/angular/field';\n\nimport { injectDateTimeFieldDefaults } from './datetime-field-defaults';\nimport type {\n DateTimeFieldHourCycle,\n DateTimeFieldSize,\n DateTimeFieldVariant,\n} from './datetime-field-defaults';\n\n/**\n * How far `PageUp` and `PageDown` move each field.\n *\n * Each half pages the way its own family already pages: year 10, month 5 and\n * day 5 from `date-field`, hour 3, minute 15, second 15 and day period 1 from\n * `time-field`. Two fields drawing the same segment and paging it differently\n * would be one behaviour with two answers.\n */\nconst PAGE_STEP: Record<SegmentFieldName, number> = {\n year: 10,\n month: 5,\n day: 5,\n hour: 3,\n minute: 15,\n second: 15,\n dayPeriod: 1,\n};\n\n/**\n * The hidden element carrying the whole value needs an identifier the group can\n * point `aria-labelledby` at, and Angular has no `useId`. A module counter is\n * what the framework leaves: stable for a given render order, which is what\n * hydration needs, and never on the public surface.\n */\nlet sequence = 0;\n\n/**\n * What a request carries beyond the value: the segments, so a half-written\n * value can be saved, and which half is still missing.\n *\n * There is no `crossesMidnight` here. `time-field` raises that flag because a\n * `PlainTime` has no day to put a crossing in, and names this family as the\n * consumer that would answer it — here the day exists, so the crossing is\n * already in the value.\n */\nexport interface DateTimeFieldChangeRequest extends ChangeRequest<PlainDateTime | null> {\n readonly segments: SegmentState;\n readonly incomplete: DateTimeHalf | null;\n}\n\n/**\n * A segmented datetime control: one spin button per field, in the order the\n * locale writes them, with all seven fields in one row.\n *\n * **It is not a `slDateField` beside a `slTimeField`.** Two nested family roots\n * would be two groups, two values and two `SegmentState`s. The order of the\n * halves and the literal between them come from one combined\n * `Intl.DateTimeFormat` that neither of them can see, and a digit that fills\n * the last date segment advances across the boundary into the first time\n * segment — which two roots cannot do.\n *\n * **Angular is a component with a template and a `ControlValueAccessor`**,\n * because a datetime belongs in a Reactive Form and Angular has the integration\n * point for it. It also implements `Validator`, and it reports five rules where\n * Kendo — the only surveyed implementation that validates at all — reports\n * three: `dateTimeParse`, `dateTimeIncomplete`, `dateTimeMin`, `dateTimeMax`\n * and `dateTimeUnavailable`.\n *\n * **The missing half is said out loud**, on the root, on the request and in the\n * validator. Every surveyed implementation reports an empty control and loses\n * what was written.\n */\n@Component({\n selector: '[slDateTimeField]',\n standalone: true,\n exportAs: 'slDateTimeField',\n imports: [SlGlyph, SlIcon],\n template: `<ng-content select=\"[slDateTimeFieldStart]\" />\n @if (expression() !== null) {\n <input\n #duration\n data-part=\"duration\"\n data-part-duration=\"\"\n type=\"text\"\n placeholder=\"+40m, 1h30, +2d\"\n [attr.aria-label]=\"t('duration')\"\n [attr.aria-describedby]=\"describedBy()\"\n [value]=\"expression()\"\n (input)=\"onExpressionInput($event)\"\n (keydown)=\"onExpressionKeyDown($event)\"\n (blur)=\"commitExpression()\"\n />\n <span\n data-part=\"preview\"\n data-part-preview=\"\"\n role=\"status\"\n aria-live=\"polite\"\n [attr.data-resolved]=\"resolved() === null ? null : ''\"\n [attr.data-rolls-day]=\"rollsDay() ? '' : null\"\n >\n <span slIcon directional><svg slGlyph name=\"chevron-right\"></svg></span>\n @if (rollsDay()) {\n <span data-part=\"preview-date\" data-part-preview-date=\"\">{{ previewDate() }}</span\n >, {{ previewTime() }}\n } @else {\n {{ previewTime() }}\n }\n </span>\n } @else {\n <div\n data-part=\"segments\"\n data-part-segments=\"\"\n role=\"group\"\n [attr.id]=\"controlId()\"\n [attr.aria-label]=\"label() ?? writtenLabel\"\n [attr.aria-labelledby]=\"labelledBy()\"\n [attr.aria-describedby]=\"describedBy()\"\n [attr.aria-invalid]=\"ariaInvalid()\"\n [attr.aria-required]=\"ariaRequired()\"\n [attr.aria-readonly]=\"ariaReadonly()\"\n [attr.aria-disabled]=\"ariaDisabled()\"\n (paste)=\"onPaste($event)\"\n >\n @for (group of halves(); track group.half) {\n <span data-part=\"half\" data-part-half=\"\" [attr.data-half]=\"group.half\">\n @for (part of group.parts; track $index) {\n @if (part.type === 'literal') {\n @if (part.boundary !== true || part.drawn !== false) {\n <span\n data-part=\"literal\"\n data-part-literal=\"\"\n aria-hidden=\"true\"\n [attr.data-boundary]=\"part.boundary === true ? '' : null\"\n >{{ part.value }}</span\n >\n }\n } @else {\n <div\n data-part=\"segment\"\n data-part-segment=\"\"\n role=\"spinbutton\"\n [attr.data-field]=\"part.type\"\n [attr.data-half]=\"halfOf(part.type)\"\n [attr.data-placeholder]=\"valueOf(part.type) === null ? '' : null\"\n [attr.aria-label]=\"t(part.type)\"\n [attr.aria-valuenow]=\"valueOf(part.type)\"\n [attr.aria-valuemin]=\"rangeOf(part.type).min\"\n [attr.aria-valuemax]=\"rangeOf(part.type).max\"\n [attr.aria-valuetext]=\"spokenOf(part.type)\"\n [attr.aria-disabled]=\"ariaDisabled()\"\n [attr.aria-readonly]=\"ariaReadonly()\"\n [tabindex]=\"tabIndexOf(part.type)\"\n (mousedown)=\"onSegmentMouseDown($event)\"\n (focus)=\"activeField.set(part.type)\"\n (blur)=\"onBlur()\"\n >\n {{ textOf(part.type) }}\n </div>\n }\n }\n </span>\n }\n </div>\n }\n <span data-part=\"value-text\" data-part-value-text=\"\" hidden [attr.id]=\"valueTextId\">{{\n spokenValue()\n }}</span>\n @if (showClear()) {\n <button\n data-part=\"clear\"\n data-part-clear=\"\"\n type=\"button\"\n [attr.aria-label]=\"t('clear')\"\n (click)=\"clear($event)\"\n >\n <span slIcon><svg slGlyph name=\"x\"></svg></span>\n </button>\n }\n <ng-content select=\"[slDateTimeFieldEnd]\" />\n <input\n data-part=\"hidden-input\"\n data-part-hidden-input=\"\"\n type=\"hidden\"\n readonly\n [attr.name]=\"name()\"\n [value]=\"iso()\"\n />`,\n styleUrl: '../../../styles/src/datetime-field/datetime-field.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SlDateTimeField), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => SlDateTimeField), multi: true },\n ],\n host: {\n 'data-ui': 'datetime-field',\n 'data-ui-datetime-field': '',\n 'data-part': 'root',\n 'data-part-root': '',\n '(mousedown)': 'onRootMouseDown($event)',\n '(keydown)': 'onKeyDown($event)',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-variant]': 'resolvedVariant()',\n '[attr.data-calendar]': 'resolvedCalendar()',\n '[attr.data-cycle]': 'dataCycle()',\n '[attr.data-granularity]': 'resolvedGranularity()',\n '[attr.data-incomplete]': 'incomplete()',\n '[attr.data-relative]': \"expression() === null ? 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 SlDateTimeField implements ControlValueAccessor, Validator, OnInit {\n /** Present means the consumer owns the value. */\n readonly value = input<PlainDateTime | null | undefined>(undefined);\n /** The value the control starts from when nobody else writes one. */\n readonly defaultValue = input<PlainDateTime | null | undefined>(undefined);\n\n /** The earliest whole value: where the range starts. Also a form rule. */\n readonly min = input<PlainDateTime | undefined>(undefined);\n /** The latest whole value: where the range ends. Also a form rule. */\n readonly max = input<PlainDateTime | undefined>(undefined);\n /**\n * The earliest time of **every** day inside the range.\n *\n * It applies beside `min` rather than instead of it, which MUI's own\n * validation page records that it cannot do.\n */\n readonly minTime = input<PlainTime | undefined>(undefined);\n /** The latest time of every day inside the range, beside `max`. */\n readonly maxTime = input<PlainTime | undefined>(undefined);\n /** Refuses particular days — a holiday, a closed shop, a booked room. */\n readonly isDateUnavailable = input<((date: PlainDate) => boolean) | undefined>(undefined);\n /**\n * Refuses particular times on a particular day. Two predicates rather than\n * one, because a day-level answer cannot be derived from a datetime-level\n * predicate without probing every step of that day.\n */\n readonly isTimeUnavailable = input<((time: PlainTime, date: PlainDate) => boolean) | undefined>(\n undefined,\n );\n\n /**\n * BCP 47. Decides the field order, the separators and the placeholder.\n * Unset, the language in force decides.\n */\n readonly locale = input<string | undefined>(undefined);\n /** Which zone answers \"what is the time now\", and nothing else. */\n readonly timeZone = input<string | undefined>(undefined);\n readonly hourCycle = input<DateTimeFieldHourCycle | undefined>(undefined);\n readonly granularity = input<TimeGranularity | undefined>(undefined);\n readonly calendar = input<'gregory' | undefined>(undefined);\n readonly firstDayOfWeek = input<number | undefined>(undefined);\n readonly yearPivot = input<number | undefined>(undefined);\n /**\n * What an empty segment steps from, and what a duration resolves against.\n * Unset, both are the current datetime in `timeZone`.\n */\n readonly referenceDateTime = input<PlainDateTime | undefined>(undefined);\n\n readonly size = input<DateTimeFieldSize | undefined>(undefined);\n readonly variant = input<DateTimeFieldVariant | undefined>(undefined);\n\n /** Unstated rather than `false`, so the control defers to the field. */\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 a button that empties both halves and returns focus to the control. */\n readonly clearable = input(false, { transform: booleanAttribute });\n /** Whether `+`, `-` and `=` open the duration 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 * clear button's name and the duration expression's name.\n */\n readonly messages = input<PartialMessages<DatetimeFieldMessages> | undefined>(undefined);\n /** The name a plain form post carries the ISO string under. */\n readonly name = input<string | undefined>(undefined);\n\n /**\n * One output for one transition, carrying the value, the value it replaces,\n * the segments, the half that is still missing, the reason, the originating\n * event and `cancel()`. There is no `[(value)]`, because a two-way binding\n * has one slot and can carry none of those.\n */\n /**\n * The accessible name, when it is bound rather than written: a static\n * `aria-label` is read once from the host, and a family naming this field\n * from its own input — `datetime-range-picker` names its two ends — has no\n * static attribute to write.\n */\n readonly label = input<string | undefined>(undefined);\n\n readonly valueChange = output<DateTimeFieldChangeRequest>();\n\n private readonly element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n private readonly defaults = injectDateTimeFieldDefaults();\n private readonly appLocale = injectLocale();\n /** The family's words in the language in force, with this field's `messages` laid over them. */\n readonly t = injectMessages(datetimeFieldMessages, this.messages);\n private readonly field = inject(SlField, { optional: true });\n\n /** Read before the host binding computes, so it never writes over it. */\n protected readonly writtenLabel = inject(new HostAttributeToken('aria-label'), {\n optional: true,\n });\n private readonly writtenId = inject(new HostAttributeToken('id'), { optional: true });\n private readonly writtenLabelledBy = inject(new HostAttributeToken('aria-labelledby'), {\n optional: true,\n });\n private readonly writtenDescribedBy = inject(new HostAttributeToken('aria-describedby'), {\n optional: true,\n });\n\n protected readonly valueTextId = `sl-datetime-field-${String((sequence += 1))}`;\n\n private readonly segments = signal<SegmentState>(EMPTY_SEGMENTS);\n private readonly formDisabled = signal<boolean | undefined>(undefined);\n /**\n * What datetime it is, resolved after construction rather than during it, so\n * a server and a browser never disagree about the markup. Nothing is drawn\n * from it: it is the value an empty segment steps to and a duration resolves\n * from.\n */\n private readonly clock = signal<PlainDateTime>({\n date: { year: 2000, month: 1, day: 1 },\n time: { hour: 12, minute: 0, second: 0 },\n });\n protected readonly activeField = signal<SegmentFieldName | undefined>(undefined);\n /** The duration being written, or `null` while the segments are showing. */\n protected readonly expression = signal<string | null>(null);\n\n private onChangeFn: (value: PlainDateTime | null) => void = () => undefined;\n private onTouchedFn: () => void = () => undefined;\n private onValidatorChangeFn: () => void = () => undefined;\n\n protected readonly resolvedGranularity = computed(\n () => this.granularity() ?? this.defaults.granularity,\n );\n protected readonly resolvedCalendar = computed(() => this.calendar() ?? this.defaults.calendar);\n\n protected readonly format = computed(() => {\n const firstDayOfWeek = this.firstDayOfWeek() ?? this.defaults.firstDayOfWeek;\n const yearPivot = this.yearPivot() ?? this.defaults.yearPivot;\n return createDateTimeFormat({\n granularity: this.resolvedGranularity(),\n hourCycle: this.hourCycle() ?? this.defaults.hourCycle,\n locale: this.locale() ?? this.appLocale(),\n ...(firstDayOfWeek === undefined ? {} : { firstDayOfWeek }),\n ...(yearPivot === undefined ? {} : { yearPivot }),\n });\n });\n\n protected readonly dataCycle = computed(() => (this.format().usesDayPeriod ? '12' : '24'));\n\n protected readonly fields = computed(() =>\n this.format()\n .pattern.filter((part) => part.type !== 'literal')\n .map((part) => part.type as SegmentFieldName),\n );\n\n /**\n * One box per half, and the only place the row is allowed to break.\n *\n * Flexbox breaks a line between any two items and offers no way to forbid one\n * place, so the boundary has to be a box rather than a rule.\n */\n protected readonly halves = computed(() => {\n const groups: { half: DateTimeHalf; parts: DateTimePatternPart[] }[] = [];\n for (const part of this.format().pattern) {\n const owner = part.half ?? 'date';\n const last = groups[groups.length - 1];\n if (last !== undefined && last.half === owner) last.parts.push(part);\n else groups.push({ half: owner, parts: [part] });\n }\n return groups;\n });\n\n /** What an empty segment steps from, in the shape the engine reads. */\n private readonly reference = computed<SegmentReference>(() => {\n const anchor = this.anchor();\n const shown = this.format().toDisplay(anchor.time.hour);\n return {\n ...anchor.date,\n dayPeriod: shown.dayPeriod ?? 0,\n hour: shown.hour,\n hourCycle: this.format().hourCycle,\n minute: anchor.time.minute,\n second: anchor.time.second,\n };\n });\n\n private readonly anchor = computed(() => this.referenceDateTime() ?? this.clock());\n\n /** The value the segments make, or `null` while either half is unfinished. */\n readonly dateTime = computed(() => dateTimeOf(this.segments(), this.format()));\n /** Which half is still missing, and `null` when none is. */\n readonly incomplete = computed(() => incompleteHalf(this.segments(), this.format()));\n\n protected readonly iso = computed(() => {\n const value = this.dateTime();\n return value === null ? '' : toISODateTime(value);\n });\n protected readonly spokenValue = computed(() => {\n const value = this.dateTime();\n return value === null ? '' : this.format().describe(value);\n });\n\n /* ── The duration expression ─────────────────────────────────────────── */\n\n protected readonly resolved = computed(() => {\n const written = this.expression();\n if (written === null) return null;\n const seconds = parseDuration(written, { units: DATE_TIME_UNITS });\n return seconds === null ? null : resolveRelativeDateTime(this.anchor(), seconds);\n });\n\n /** Whether the expression landed on a different day from the anchor's. */\n protected readonly rollsDay = computed(() => {\n const step = this.resolved();\n if (step === null) return false;\n const from = this.anchor().date;\n return (\n step.date.year !== from.year || step.date.month !== from.month || step.date.day !== from.day\n );\n });\n\n protected readonly previewTime = computed(() => {\n const step = this.resolved();\n return step === null ? '' : this.format().time.format(step.time);\n });\n protected readonly previewDate = computed(() => {\n const step = this.resolved();\n return step === null ? '' : this.format().describeDate(step.date, 'short');\n });\n\n /* ── What the field around it decides ────────────────────────────────── */\n\n readonly resolvedSize = computed(\n () => this.size() ?? this.field?.resolvedSize() ?? this.defaults.size,\n );\n readonly resolvedVariant = computed(() => this.variant() ?? this.defaults.variant);\n readonly resolvedDisabled = computed(\n () => this.disabled() ?? this.formDisabled() ?? this.field?.resolvedDisabled(),\n );\n readonly resolvedReadOnly = computed(() => this.readOnly() ?? this.field?.resolvedReadOnly());\n readonly resolvedRequired = computed(() => this.required() ?? this.field?.required());\n\n /**\n * Validity the family owns, beside the validity the consumer states.\n *\n * Both pairs of bounds apply at once — the whole-value one and the window\n * that repeats on every day — which is the combination MUI's own validation\n * page records that it cannot ship.\n */\n readonly resolvedInvalid = computed(() => {\n const value = this.dateTime();\n if (value !== null && this.refuses(value)) return true;\n return this.invalid() ?? this.field?.invalid();\n });\n\n protected readonly controlId = computed(\n () => this.writtenId ?? this.field?.ids().control ?? null,\n );\n protected readonly labelledBy = computed(() => {\n if (this.label() !== undefined || this.writtenLabel !== null) return null;\n const merged = [this.writtenLabelledBy ?? this.field?.ids().label, this.valueTextId].filter(\n Boolean,\n );\n return merged.length === 0 ? null : merged.join(' ');\n });\n protected readonly describedBy = computed(() => {\n const merged = [this.writtenDescribedBy, this.field?.describedBy()].filter(Boolean);\n return merged.length === 0 ? null : merged.join(' ');\n });\n protected readonly ariaInvalid = computed(() =>\n this.resolvedInvalid() === true ? 'true' : null,\n );\n protected readonly ariaRequired = computed(() =>\n this.resolvedRequired() === true ? 'true' : null,\n );\n protected readonly ariaReadonly = computed(() =>\n this.resolvedReadOnly() === true ? 'true' : null,\n );\n protected readonly ariaDisabled = computed(() =>\n this.resolvedDisabled() === true ? 'true' : null,\n );\n\n private readonly editable = computed(\n () => this.resolvedDisabled() !== true && this.resolvedReadOnly() !== true,\n );\n\n protected readonly showClear = computed(() => {\n if (!this.clearable() || !this.editable() || this.expression() !== null) return false;\n const held = this.segments();\n return this.fields().some((name) => held[name] !== null);\n });\n\n constructor() {\n /**\n * A consumer's own value writes the segments, and only when it names a\n * different value: written on every change detection it would throw away a\n * half-typed value on the keystroke that completes a different one.\n */\n effect(() => {\n const next = this.value();\n if (next === undefined) return;\n const segments = this.segments();\n /* A run of digits still being typed is not a value the consumer refused:\n with a controlled `null`, the first minute digit after a whole hour\n read as a time the consumer had not written back, and the segments\n were reset under the reader's fingers. Found by `time-range-picker`,\n which binds the field to its work. */\n if (segments.typing !== null) return;\n if (isSameDateTime(dateTimeOf(segments, this.format()), next)) return;\n this.segments.set(segmentsOfDateTime(next, this.format()));\n });\n\n /* The expression region is focused the moment it replaces the segments,\n with the caret after the character that opened it. */\n effect(() => {\n if (this.expression() === null) return;\n queueMicrotask(() => {\n const input = this.element.querySelector<HTMLInputElement>('[data-part=\"duration\"]');\n if (input === null) return;\n input.focus();\n input.setSelectionRange(input.value.length, input.value.length);\n });\n });\n }\n\n ngOnInit() {\n this.segments.set(\n segmentsOfDateTime(this.value() ?? this.defaultValue() ?? null, this.format()),\n );\n this.clock.set(nowDateTimeIn(this.timeZone() ?? this.defaults.timeZone));\n }\n\n /* ── The value ───────────────────────────────────────────────────────── */\n\n writeValue(value: PlainDateTime | null | undefined) {\n this.segments.set(segmentsOfDateTime(value ?? null, this.format()));\n }\n\n registerOnChange(fn: (value: PlainDateTime | 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, and one no surveyed implementation\n * reports at all.\n *\n * `dateTimeIncomplete` is that one: a reader who wrote a day and left is not\n * an empty control, and a form that says \"required\" there is answering a\n * different question. `required` itself is left to Angular's own, because a\n * form already has a word for it and two would disagree.\n */\n validate(control: AbstractControl): ValidationErrors | null {\n const value = control.value as PlainDateTime | null;\n\n if (value === null || value === undefined) {\n const half = this.incomplete();\n return half === null ? null : { slottedDateTimeIncomplete: { missing: half } };\n }\n\n const min = this.min();\n const max = this.max();\n if (!isDateTimeInRange(value, min, max)) {\n return { slottedDateTimeRange: { min, max, actual: value } };\n }\n\n const window = dayWindow(value.date, {\n max,\n maxTime: this.maxTime(),\n min,\n minTime: this.minTime(),\n });\n if (window === null || !isTimeInRange(value.time, window.earliest, window.latest)) {\n return { slottedDateTimeWindow: { actual: value } };\n }\n\n if (\n this.isDateUnavailable()?.(value.date) === true ||\n this.isTimeUnavailable()?.(value.time, value.date) === true\n ) {\n return { slottedDateTimeUnavailable: { actual: value } };\n }\n return null;\n }\n\n /** Puts focus on the first segment, which is where typing starts. */\n focus() {\n const first = this.fields()[0];\n if (first !== undefined) this.focusField(first);\n }\n\n /**\n * Where a press on the frame puts the reader: the first field still waiting\n * for a value, and the first field of the value when none is.\n */\n focusEntry() {\n const held = this.segments();\n const empty = this.fields().find((name) => held[name] === null);\n const target = empty ?? this.fields()[0];\n if (target !== undefined) this.focusField(target);\n }\n\n protected onRootMouseDown(event: MouseEvent) {\n const target = event.target as HTMLElement | null;\n if (target?.closest('[data-part=\"segment\"], button, a, input, select, textarea') != null) {\n return;\n }\n event.preventDefault();\n if (this.expression() === null) this.focusEntry();\n }\n\n /**\n * Safari does not focus a `div` on a press even when it carries a\n * `tabindex`, so the press says so itself rather than relying on it.\n */\n protected onSegmentMouseDown(event: MouseEvent) {\n event.preventDefault();\n (event.currentTarget as HTMLElement).focus();\n }\n\n /** Empties both halves at once, with the `clear` reason. */\n clear(source?: Event) {\n this.commit(EMPTY_SEGMENTS, 'clear', source);\n this.focus();\n }\n\n /* ── The keyboard ────────────────────────────────────────────────────── */\n\n /**\n * A key the field acted on is the field's, and nothing above it sees it. A\n * `div` with `role=\"spinbutton\"` is invisible to every \"is the target\n * editable\" guard an application writes, and `preventDefault` alone does not\n * help: a shortcut handler reads the key, not the default.\n */\n private consume(event: KeyboardEvent) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n /**\n * The keys are handled on the host rather than on each segment, so a\n * consumer's own `(keydown)` on the same element still runs before the family\n * stops the event — which is the composition React gets by calling the\n * consumer's handler first.\n */\n protected onKeyDown(event: KeyboardEvent) {\n const segment = (event.target as HTMLElement | null)?.closest<HTMLElement>(\n '[data-part=\"segment\"]',\n );\n const name = segment?.dataset['field'] as SegmentFieldName | undefined;\n if (name === undefined) return;\n\n /* An inline direction is a physical pair of keys and a logical order, so\n the arrow that walks forward is the one pointing along the writing\n direction rather than the one pointing right. It walks the whole row,\n across the boundary between the halves. */\n const rtl = getComputedStyle(this.element).direction === 'rtl';\n const forward = rtl ? 'ArrowLeft' : 'ArrowRight';\n const backward = rtl ? 'ArrowRight' : 'ArrowLeft';\n\n if (event.key === forward) {\n this.consume(event);\n this.moveBy(name, 1);\n return;\n }\n if (event.key === backward) {\n this.consume(event);\n this.moveBy(name, -1);\n return;\n }\n\n if (!this.editable()) return;\n\n /**\n * `Alt` with an arrow is not this control's chord. `datetime-picker` opens\n * its panel with `Alt`+`ArrowDown`, and a segment that stepped on it would\n * eat the only shortcut the surface has.\n */\n if (event.altKey) return;\n\n if ((this.relative() ?? this.defaults.relative) && isRelativeKey(event.key)) {\n this.consume(event);\n this.expression.set(event.key);\n return;\n }\n\n const held = this.segments();\n const reference = this.reference();\n\n switch (event.key) {\n case 'ArrowUp':\n this.consume(event);\n this.commit(stepSegment(held, name, 1, reference), 'keyboard', event);\n return;\n case 'ArrowDown':\n this.consume(event);\n this.commit(stepSegment(held, name, -1, reference), 'keyboard', event);\n return;\n case 'PageUp':\n this.consume(event);\n this.commit(stepSegment(held, name, PAGE_STEP[name], reference), 'keyboard', event);\n return;\n case 'PageDown':\n this.consume(event);\n this.commit(stepSegment(held, name, -PAGE_STEP[name], reference), 'keyboard', event);\n return;\n case 'Home':\n this.consume(event);\n this.commit(boundSegment(held, name, 'min', reference), 'keyboard', event);\n return;\n case 'End':\n this.consume(event);\n this.commit(boundSegment(held, name, 'max', reference), 'keyboard', event);\n return;\n case 'Backspace':\n case 'Delete':\n this.consume(event);\n this.commit(clearSegment(held, name), 'clear', event);\n return;\n default:\n break;\n }\n\n /* The day period holds two words rather than digits, and the platform's own\n control takes it by the first letter of either. */\n if (name === 'dayPeriod' && /^\\p{L}$/u.test(event.key)) {\n const typed = typeDayPeriod(held, event.key, this.format().time);\n if (typed === null) return;\n this.consume(event);\n this.commit(typed.segments, 'keyboard', event);\n if (typed.advance) this.moveBy(name, 1);\n return;\n }\n\n if (/^\\d$/.test(event.key)) {\n this.consume(event);\n const typed = typeDigit(held, name, Number(event.key), this.format().time, reference);\n this.commit(typed.segments, 'keyboard', event);\n if (typed.advance) this.moveBy(name, 1);\n }\n }\n\n protected onExpressionInput(event: Event) {\n this.expression.set((event.target as HTMLInputElement).value);\n }\n\n protected onExpressionKeyDown(event: KeyboardEvent) {\n if (event.key === 'Enter') {\n /* An expression inside a form must not submit it: `Enter` is this\n control's commit and nothing above it needs to hear the key. */\n this.consume(event);\n this.commitExpression(event);\n this.focus();\n return;\n }\n\n if (event.key === 'Escape') {\n /* Abandoned whole, and the segments come back exactly as they were. The\n key is stopped so an overlay above does not close on the same press —\n the field takes it first while an expression is open, which is the\n staging `datetime-picker` depends on. */\n this.consume(event);\n this.expression.set(null);\n this.focus();\n }\n }\n\n /** Commits the expression when it resolves, and abandons it when it does not. */\n protected commitExpression(source?: Event) {\n const step = this.resolved();\n if (step === null) {\n this.expression.set(null);\n return;\n }\n this.commit(segmentsOfDateTime(step, this.format()), 'keyboard', source);\n this.expression.set(null);\n }\n\n /**\n * A whole value, pasted. The locale's shape is read first and ISO 8601 after\n * it; text that is neither but reads as a duration opens the expression, so\n * pasting `+2d` does what typing it does.\n */\n protected onPaste(event: ClipboardEvent) {\n if (!this.editable()) return;\n const text = event.clipboardData?.getData('text/plain') ?? '';\n\n const parsed = this.format().parse(text);\n if (parsed !== null) {\n event.preventDefault();\n this.commit(segmentsOfDateTime(parsed, this.format()), 'keyboard', event);\n return;\n }\n\n if (\n (this.relative() ?? this.defaults.relative) &&\n parseDuration(text, { units: DATE_TIME_UNITS }) !== null\n ) {\n event.preventDefault();\n this.expression.set(text.trim());\n }\n }\n\n /** A run of typed digits ends when focus leaves. */\n protected onBlur() {\n this.activeField.set(undefined);\n this.onTouchedFn();\n const held = this.segments();\n if (held.typing === null) return;\n this.commit(commitTyping(held, this.format().time, this.reference()), 'blur', undefined);\n }\n\n /* ── What the template reads ─────────────────────────────────────────── */\n\n protected halfOf(field: SegmentFieldName): DateTimeHalf {\n return halfOfField(field);\n }\n\n protected valueOf(field: SegmentFieldName): number | null {\n return this.segments()[field];\n }\n\n /**\n * The day's own maximum is the month's, which is why the range is asked with\n * the year and the month rather than assumed to be 31.\n */\n protected rangeOf(field: SegmentFieldName) {\n const held = this.segments();\n return fieldRange(field, {\n hourCycle: this.format().hourCycle,\n ...(held.month === null ? {} : { month: held.month }),\n ...(held.year === null ? {} : { year: held.year }),\n });\n }\n\n /**\n * What a reader hears instead of the number. The day period is why it is not\n * optional: `aria-valuenow` there is `0` or `1`, which is not a name in any\n * language — and a month reads better as its own name than as a number.\n */\n protected spokenOf(field: SegmentFieldName): string | null {\n const raw = this.segments()[field];\n if (raw === null) return null;\n if (field === 'dayPeriod') return this.format().dayPeriodNames()[raw === 1 ? 1 : 0];\n if (field === 'month') return this.format().date.monthNames('long')[raw - 1] ?? String(raw);\n return String(raw);\n }\n\n /**\n * What one field shows. A finished value is padded to the field's width so\n * the columns hold their place; a value still being typed is not, because a\n * padded run shows numbers nobody typed.\n */\n protected textOf(field: SegmentFieldName): string {\n const held = this.segments();\n const raw = held[field];\n if (raw === null) {\n return this.format().pattern.find((part) => part.type === field)?.value ?? '';\n }\n\n const typing = held.typing;\n if (typing !== null && typing.field === field) {\n return String(raw).padStart(typing.digits, '0');\n }\n\n return this.format().formatValue(raw, field);\n }\n\n /** Exactly one segment is in the tab sequence, which is the roving model. */\n protected tabIndexOf(field: SegmentFieldName): number {\n if (this.resolvedDisabled() === true) return -1;\n return field === (this.activeField() ?? this.fields()[0]) ? 0 : -1;\n }\n\n /* ── The machinery ───────────────────────────────────────────────────── */\n\n /** Whether both pairs of bounds, or either predicate, refuse a whole value. */\n private refuses(value: PlainDateTime): boolean {\n const min = this.min();\n const max = this.max();\n if (!isDateTimeInRange(value, min, max)) return true;\n\n const window = dayWindow(value.date, {\n max,\n maxTime: this.maxTime(),\n min,\n minTime: this.minTime(),\n });\n if (window === null || !isTimeInRange(value.time, window.earliest, window.latest)) return true;\n\n return (\n this.isDateUnavailable()?.(value.date) === true ||\n this.isTimeUnavailable()?.(value.time, value.date) === true\n );\n }\n\n private focusField(name: SegmentFieldName) {\n this.activeField.set(name);\n this.element.querySelector<HTMLElement>(`[data-part=\"segment\"][data-field=\"${name}\"]`)?.focus();\n }\n\n private moveBy(name: SegmentFieldName, step: number) {\n const next = this.fields()[this.fields().indexOf(name) + step];\n if (next !== undefined) this.focusField(next);\n }\n\n /**\n * Moves the segments, and asks before the derived value moves with them.\n *\n * A run of typed digits moves the display and not the value: typing `23` into\n * an hour passes through `2` on the way, and `2` is a time the arithmetic\n * accepts and nobody meant. The request is emitted when the run ends.\n */\n private commit(next: SegmentState, reason: ChangeReason, source: Event | undefined) {\n const previous = this.dateTime();\n this.segments.set(next);\n if (next.typing !== null) return;\n\n const nextValue = dateTimeOf(next, this.format());\n let cancelled = false;\n const state = createControllable<PlainDateTime | null>({\n controlled: undefined,\n initial: previous,\n equals: isSameDateTime,\n onRequest: (request) => {\n this.valueChange.emit({\n ...request,\n incomplete: incompleteHalf(next, this.format()),\n segments: next,\n });\n cancelled = request.cancelled;\n },\n });\n state.request(nextValue, reason, source);\n\n if (cancelled) return;\n this.onChangeFn(nextValue);\n this.onValidatorChangeFn();\n }\n}\n","import { Directive } from '@angular/core';\n\n/**\n * An adornment before the value in the reading direction: a calendar mark, a\n * label, a zone name. Named for the direction rather than for a side, so the\n * same markup puts the mark before the value in both directions.\n *\n * It is a directive on the consumer's own element, so an `icon`, a `kbd` or a\n * `span` all work and none of them loses its own semantics. The stylesheet\n * sizes any icon inside it from the control's own glyph scale.\n */\n@Directive({\n selector: '[slDateTimeFieldStart]',\n standalone: true,\n exportAs: 'slDateTimeFieldStart',\n host: { 'data-part': 'start', 'data-part-start': '' },\n})\nexport class SlDateTimeFieldStart {}\n\n/** An adornment after the value in the reading direction. */\n@Directive({\n selector: '[slDateTimeFieldEnd]',\n standalone: true,\n exportAs: 'slDateTimeFieldEnd',\n host: { 'data-part': 'end', 'data-part-end': '' },\n})\nexport class SlDateTimeFieldEnd {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|