@universal-material/web 3.8.0 → 3.9.0
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/.claude-plugin/plugin.json +12 -0
- package/README.md +12 -0
- package/app-bar/top-app-bar.d.ts +7 -6
- package/app-bar/top-app-bar.d.ts.map +1 -1
- package/app-bar/top-app-bar.js +71 -35
- package/app-bar/top-app-bar.js.map +1 -1
- package/app-bar/top-app-bar.styles.d.ts.map +1 -1
- package/app-bar/top-app-bar.styles.js +18 -1
- package/app-bar/top-app-bar.styles.js.map +1 -1
- package/badge/badge.d.ts +2 -2
- package/badge/badge.d.ts.map +1 -1
- package/badge/badge.js +6 -6
- package/badge/badge.js.map +1 -1
- package/badge/badge.styles.d.ts.map +1 -1
- package/badge/badge.styles.js +1 -0
- package/badge/badge.styles.js.map +1 -1
- package/bundle.min.js +4469 -1277
- package/button/button-base.d.ts +2 -2
- package/button/button-base.d.ts.map +1 -1
- package/button/button-base.js +5 -5
- package/button/button-base.js.map +1 -1
- package/button/button-set.d.ts +3 -3
- package/button/button-set.d.ts.map +1 -1
- package/button/button-set.js +7 -7
- package/button/button-set.js.map +1 -1
- package/button/button.d.ts +7 -7
- package/button/button.d.ts.map +1 -1
- package/button/button.js +14 -14
- package/button/button.js.map +1 -1
- package/button/fab-menu-color-context.d.ts +2 -2
- package/button/fab-menu-color-context.d.ts.map +1 -1
- package/button/fab-menu-color-context.js.map +1 -1
- package/button/fab-menu-item.d.ts +3 -3
- package/button/fab-menu-item.d.ts.map +1 -1
- package/button/fab-menu-item.js +11 -11
- package/button/fab-menu-item.js.map +1 -1
- package/button/fab-menu.d.ts +20 -5
- package/button/fab-menu.d.ts.map +1 -1
- package/button/fab-menu.js +48 -11
- package/button/fab-menu.js.map +1 -1
- package/button/fab.d.ts +22 -7
- package/button/fab.d.ts.map +1 -1
- package/button/fab.js +49 -11
- package/button/fab.js.map +1 -1
- package/button/icon-button.d.ts +7 -7
- package/button/icon-button.d.ts.map +1 -1
- package/button/icon-button.js +8 -8
- package/button/icon-button.js.map +1 -1
- package/button/toggle-button.d.ts +6 -6
- package/button/toggle-button.d.ts.map +1 -1
- package/button/toggle-button.js +10 -10
- package/button/toggle-button.js.map +1 -1
- package/button-field/button-field.d.ts +3 -3
- package/button-field/button-field.d.ts.map +1 -1
- package/button-field/button-field.js +9 -9
- package/button-field/button-field.js.map +1 -1
- package/calendar/calendar-base.d.ts +1 -1
- package/calendar/calendar-base.d.ts.map +1 -1
- package/calendar/calendar-base.js +10 -10
- package/calendar/calendar-base.js.map +1 -1
- package/calendar/calendar.d.ts +2 -2
- package/calendar/calendar.d.ts.map +1 -1
- package/calendar/calendar.js +8 -8
- package/calendar/calendar.js.map +1 -1
- package/calendar/range-calendar.d.ts +2 -2
- package/calendar/range-calendar.d.ts.map +1 -1
- package/calendar/range-calendar.js +9 -9
- package/calendar/range-calendar.js.map +1 -1
- package/card/card-content.d.ts +2 -2
- package/card/card-content.d.ts.map +1 -1
- package/card/card-content.js +5 -5
- package/card/card-content.js.map +1 -1
- package/card/card-media.d.ts +2 -2
- package/card/card-media.d.ts.map +1 -1
- package/card/card-media.js +5 -5
- package/card/card-media.js.map +1 -1
- package/card/card.d.ts +4 -4
- package/card/card.d.ts.map +1 -1
- package/card/card.js +5 -5
- package/card/card.js.map +1 -1
- package/checkbox/checkbox-list-item.d.ts +4 -4
- package/checkbox/checkbox-list-item.d.ts.map +1 -1
- package/checkbox/checkbox-list-item.js +5 -5
- package/checkbox/checkbox-list-item.js.map +1 -1
- package/checkbox/checkbox.d.ts +3 -3
- package/checkbox/checkbox.d.ts.map +1 -1
- package/checkbox/checkbox.js +7 -7
- package/checkbox/checkbox.js.map +1 -1
- package/chip/chip-set.d.ts +3 -3
- package/chip/chip-set.d.ts.map +1 -1
- package/chip/chip-set.js +6 -6
- package/chip/chip-set.js.map +1 -1
- package/chip/chip.d.ts +5 -5
- package/chip/chip.d.ts.map +1 -1
- package/chip/chip.js +20 -20
- package/chip/chip.js.map +1 -1
- package/chip-field/chip-field.d.ts +3 -3
- package/chip-field/chip-field.d.ts.map +1 -1
- package/chip-field/chip-field.js +9 -9
- package/chip-field/chip-field.js.map +1 -1
- package/collapse/collapse.d.ts +26 -0
- package/collapse/collapse.d.ts.map +1 -0
- package/collapse/collapse.js +62 -0
- package/collapse/collapse.js.map +1 -0
- package/collapse/collapse.styles.d.ts +2 -0
- package/collapse/collapse.styles.d.ts.map +1 -0
- package/collapse/collapse.styles.js +8 -0
- package/collapse/collapse.styles.js.map +1 -0
- package/config.js.map +1 -1
- package/css/universal-material.css +2 -1
- package/css/universal-material.min.css +2 -1
- package/custom-elements.json +16615 -12152
- package/datepicker/datepicker.d.ts +6 -4
- package/datepicker/datepicker.d.ts.map +1 -1
- package/datepicker/datepicker.js +33 -19
- package/datepicker/datepicker.js.map +1 -1
- package/datepicker/datepicker.styles.d.ts.map +1 -1
- package/datepicker/datepicker.styles.js +25 -0
- package/datepicker/datepicker.styles.js.map +1 -1
- package/datepicker/range-datepicker.d.ts +6 -4
- package/datepicker/range-datepicker.d.ts.map +1 -1
- package/datepicker/range-datepicker.js +33 -19
- package/datepicker/range-datepicker.js.map +1 -1
- package/dialog/confirm-dialog-builder.d.ts +3 -3
- package/dialog/confirm-dialog-builder.d.ts.map +1 -1
- package/dialog/confirm-dialog-builder.js.map +1 -1
- package/dialog/dialog-builder.d.ts +5 -4
- package/dialog/dialog-builder.d.ts.map +1 -1
- package/dialog/dialog-builder.js +10 -3
- package/dialog/dialog-builder.js.map +1 -1
- package/dialog/dialog-button-def.d.ts +3 -3
- package/dialog/dialog-button-def.d.ts.map +1 -1
- package/dialog/dialog-button-def.js.map +1 -1
- package/dialog/dialog.d.ts +2 -2
- package/dialog/dialog.d.ts.map +1 -1
- package/dialog/dialog.js +14 -14
- package/dialog/dialog.js.map +1 -1
- package/dialog/message-dialog-builder.d.ts +2 -2
- package/dialog/message-dialog-builder.d.ts.map +1 -1
- package/dialog/message-dialog-builder.js.map +1 -1
- package/elevation/elevation.d.ts +2 -2
- package/elevation/elevation.d.ts.map +1 -1
- package/elevation/elevation.js +4 -4
- package/elevation/elevation.js.map +1 -1
- package/expansion-panel/expansion-panel-container.d.ts +24 -0
- package/expansion-panel/expansion-panel-container.d.ts.map +1 -0
- package/expansion-panel/expansion-panel-container.js +54 -0
- package/expansion-panel/expansion-panel-container.js.map +1 -0
- package/expansion-panel/expansion-panel-container.styles.d.ts +2 -0
- package/expansion-panel/expansion-panel-container.styles.d.ts.map +1 -0
- package/expansion-panel/expansion-panel-container.styles.js +9 -0
- package/expansion-panel/expansion-panel-container.styles.js.map +1 -0
- package/expansion-panel/expansion-panel.d.ts +37 -0
- package/expansion-panel/expansion-panel.d.ts.map +1 -0
- package/expansion-panel/expansion-panel.js +89 -0
- package/expansion-panel/expansion-panel.js.map +1 -0
- package/expansion-panel/expansion-panel.styles.d.ts +2 -0
- package/expansion-panel/expansion-panel.styles.d.ts.map +1 -0
- package/expansion-panel/expansion-panel.styles.js +66 -0
- package/expansion-panel/expansion-panel.styles.js.map +1 -0
- package/field/field-base.d.ts +3 -3
- package/field/field-base.d.ts.map +1 -1
- package/field/field-base.js +20 -20
- package/field/field-base.js.map +1 -1
- package/field/field-defaults-context.d.ts +2 -2
- package/field/field-defaults-context.d.ts.map +1 -1
- package/field/field-defaults-context.js.map +1 -1
- package/field/field-defaults.d.ts +3 -3
- package/field/field-defaults.d.ts.map +1 -1
- package/field/field-defaults.js.map +1 -1
- package/field/field-variant.d.ts +1 -1
- package/field/field-variant.d.ts.map +1 -1
- package/field/field-variant.js.map +1 -1
- package/field/field.d.ts +3 -3
- package/field/field.d.ts.map +1 -1
- package/field/field.js +6 -6
- package/field/field.js.map +1 -1
- package/icon/icon.d.ts +2 -2
- package/icon/icon.d.ts.map +1 -1
- package/icon/icon.js +4 -4
- package/icon/icon.js.map +1 -1
- package/index.d.ts +24 -1
- package/index.d.ts.map +1 -1
- package/index.js +24 -1
- package/index.js.map +1 -1
- package/list/list-item.d.ts +16 -2
- package/list/list-item.d.ts.map +1 -1
- package/list/list-item.js +26 -6
- package/list/list-item.js.map +1 -1
- package/list/list-item.styles.d.ts.map +1 -1
- package/list/list-item.styles.js +13 -0
- package/list/list-item.styles.js.map +1 -1
- package/list/list.d.ts +2 -2
- package/list/list.d.ts.map +1 -1
- package/list/list.js +4 -4
- package/list/list.js.map +1 -1
- package/menu/menu-item.d.ts +3 -3
- package/menu/menu-item.d.ts.map +1 -1
- package/menu/menu-item.js +10 -10
- package/menu/menu-item.js.map +1 -1
- package/menu/menu.d.ts +2 -2
- package/menu/menu.d.ts.map +1 -1
- package/menu/menu.js +13 -13
- package/menu/menu.js.map +1 -1
- package/navigation/drawer-headline.d.ts +2 -2
- package/navigation/drawer-headline.d.ts.map +1 -1
- package/navigation/drawer-headline.js +6 -6
- package/navigation/drawer-headline.js.map +1 -1
- package/navigation/drawer-item.d.ts +3 -3
- package/navigation/drawer-item.d.ts.map +1 -1
- package/navigation/drawer-item.js +17 -12
- package/navigation/drawer-item.js.map +1 -1
- package/navigation/drawer.d.ts +2 -2
- package/navigation/drawer.d.ts.map +1 -1
- package/navigation/drawer.js +4 -4
- package/navigation/drawer.js.map +1 -1
- package/navigation/side-navigation.d.ts +9 -2
- package/navigation/side-navigation.d.ts.map +1 -1
- package/navigation/side-navigation.js +15 -8
- package/navigation/side-navigation.js.map +1 -1
- package/navigation-bar/navigation-bar-item.d.ts +40 -0
- package/navigation-bar/navigation-bar-item.d.ts.map +1 -0
- package/navigation-bar/navigation-bar-item.js +113 -0
- package/navigation-bar/navigation-bar-item.js.map +1 -0
- package/navigation-bar/navigation-bar-item.styles.d.ts +2 -0
- package/navigation-bar/navigation-bar-item.styles.d.ts.map +1 -0
- package/navigation-bar/navigation-bar-item.styles.js +101 -0
- package/navigation-bar/navigation-bar-item.styles.js.map +1 -0
- package/navigation-bar/navigation-bar.d.ts +40 -0
- package/navigation-bar/navigation-bar.d.ts.map +1 -0
- package/navigation-bar/navigation-bar.js +85 -0
- package/navigation-bar/navigation-bar.js.map +1 -0
- package/navigation-bar/navigation-bar.styles.d.ts +2 -0
- package/navigation-bar/navigation-bar.styles.d.ts.map +1 -0
- package/navigation-bar/navigation-bar.styles.js +44 -0
- package/navigation-bar/navigation-bar.styles.js.map +1 -0
- package/navigation-rail/navigation-rail-headline.d.ts +23 -0
- package/navigation-rail/navigation-rail-headline.d.ts.map +1 -0
- package/navigation-rail/navigation-rail-headline.js +28 -0
- package/navigation-rail/navigation-rail-headline.js.map +1 -0
- package/navigation-rail/navigation-rail-headline.styles.d.ts +2 -0
- package/navigation-rail/navigation-rail-headline.styles.d.ts.map +1 -0
- package/navigation-rail/navigation-rail-headline.styles.js +19 -0
- package/navigation-rail/navigation-rail-headline.styles.js.map +1 -0
- package/navigation-rail/navigation-rail-item.d.ts +58 -0
- package/navigation-rail/navigation-rail-item.d.ts.map +1 -0
- package/navigation-rail/navigation-rail-item.js +160 -0
- package/navigation-rail/navigation-rail-item.js.map +1 -0
- package/navigation-rail/navigation-rail-item.styles.d.ts +2 -0
- package/navigation-rail/navigation-rail-item.styles.d.ts.map +1 -0
- package/navigation-rail/navigation-rail-item.styles.js +182 -0
- package/navigation-rail/navigation-rail-item.styles.js.map +1 -0
- package/navigation-rail/navigation-rail.d.ts +66 -0
- package/navigation-rail/navigation-rail.d.ts.map +1 -0
- package/navigation-rail/navigation-rail.js +223 -0
- package/navigation-rail/navigation-rail.js.map +1 -0
- package/navigation-rail/navigation-rail.styles.d.ts +2 -0
- package/navigation-rail/navigation-rail.styles.d.ts.map +1 -0
- package/navigation-rail/navigation-rail.styles.js +220 -0
- package/navigation-rail/navigation-rail.styles.js.map +1 -0
- package/overflow-menu/overflow-menu.d.ts +8 -2
- package/overflow-menu/overflow-menu.d.ts.map +1 -1
- package/overflow-menu/overflow-menu.js +10 -1
- package/overflow-menu/overflow-menu.js.map +1 -1
- package/package.json +19 -3
- package/progress/circular-progress.d.ts +2 -2
- package/progress/circular-progress.d.ts.map +1 -1
- package/progress/circular-progress.js +6 -6
- package/progress/circular-progress.js.map +1 -1
- package/progress/progress-bar.d.ts +2 -2
- package/progress/progress-bar.d.ts.map +1 -1
- package/progress/progress-bar.js +6 -6
- package/progress/progress-bar.js.map +1 -1
- package/radio/radio-list-item.d.ts +4 -4
- package/radio/radio-list-item.d.ts.map +1 -1
- package/radio/radio-list-item.js +5 -5
- package/radio/radio-list-item.js.map +1 -1
- package/radio/radio.d.ts +3 -3
- package/radio/radio.d.ts.map +1 -1
- package/radio/radio.js +6 -6
- package/radio/radio.js.map +1 -1
- package/ripple/ripple.d.ts +2 -2
- package/ripple/ripple.d.ts.map +1 -1
- package/ripple/ripple.js +9 -9
- package/ripple/ripple.js.map +1 -1
- package/scaffold/pane.d.ts +127 -0
- package/scaffold/pane.d.ts.map +1 -0
- package/scaffold/pane.js +220 -0
- package/scaffold/pane.js.map +1 -0
- package/scaffold/pane.styles.d.ts +2 -0
- package/scaffold/pane.styles.d.ts.map +1 -0
- package/scaffold/pane.styles.js +1909 -0
- package/scaffold/pane.styles.js.map +1 -0
- package/scaffold/scaffold.d.ts +45 -0
- package/scaffold/scaffold.d.ts.map +1 -0
- package/scaffold/scaffold.js +170 -0
- package/scaffold/scaffold.js.map +1 -0
- package/scaffold/scaffold.styles.d.ts +2 -0
- package/scaffold/scaffold.styles.d.ts.map +1 -0
- package/scaffold/scaffold.styles.js +69 -0
- package/scaffold/scaffold.styles.js.map +1 -0
- package/scaffold/scroll-container-context.d.ts +4 -0
- package/scaffold/scroll-container-context.d.ts.map +1 -0
- package/scaffold/scroll-container-context.js +3 -0
- package/scaffold/scroll-container-context.js.map +1 -0
- package/scss/utilities/_divider.scss +4 -0
- package/search/search.d.ts +3 -3
- package/search/search.d.ts.map +1 -1
- package/search/search.js +7 -7
- package/search/search.js.map +1 -1
- package/search/search.styles.d.ts.map +1 -1
- package/search/search.styles.js +7 -2
- package/search/search.styles.js.map +1 -1
- package/select/option.d.ts +3 -3
- package/select/option.d.ts.map +1 -1
- package/select/option.js +8 -8
- package/select/option.js.map +1 -1
- package/select/select-navigation-controller.d.ts +4 -4
- package/select/select-navigation-controller.d.ts.map +1 -1
- package/select/select-navigation-controller.js.map +1 -1
- package/select/select.d.ts +18 -12
- package/select/select.d.ts.map +1 -1
- package/select/select.js +77 -31
- package/select/select.js.map +1 -1
- package/shared/button-wrapper.d.ts +1 -1
- package/shared/button-wrapper.d.ts.map +1 -1
- package/shared/button-wrapper.js +8 -8
- package/shared/button-wrapper.js.map +1 -1
- package/shared/char-count-text-field/native-text-field-wrapper.d.ts +2 -2
- package/shared/char-count-text-field/native-text-field-wrapper.d.ts.map +1 -1
- package/shared/char-count-text-field/native-text-field-wrapper.js +6 -6
- package/shared/char-count-text-field/native-text-field-wrapper.js.map +1 -1
- package/shared/menu-field/menu-field-navigation-controller.d.ts +3 -3
- package/shared/menu-field/menu-field-navigation-controller.d.ts.map +1 -1
- package/shared/menu-field/menu-field-navigation-controller.js.map +1 -1
- package/shared/menu-field/menu-field.d.ts +5 -5
- package/shared/menu-field/menu-field.d.ts.map +1 -1
- package/shared/menu-field/menu-field.js.map +1 -1
- package/shared/selection-control/selection-control-list-item.d.ts +2 -2
- package/shared/selection-control/selection-control-list-item.d.ts.map +1 -1
- package/shared/selection-control/selection-control-list-item.js +10 -1
- package/shared/selection-control/selection-control-list-item.js.map +1 -1
- package/shared/selection-control/selection-control.d.ts +1 -1
- package/shared/selection-control/selection-control.d.ts.map +1 -1
- package/shared/selection-control/selection-control.js +15 -7
- package/shared/selection-control/selection-control.js.map +1 -1
- package/shared/sets/set-base.d.ts +1 -1
- package/shared/sets/set-base.d.ts.map +1 -1
- package/shared/sets/set-base.js +2 -2
- package/shared/sets/set-base.js.map +1 -1
- package/shared/text-field-base/text-field-base.d.ts +34 -2
- package/shared/text-field-base/text-field-base.d.ts.map +1 -1
- package/shared/text-field-base/text-field-base.js +63 -4
- package/shared/text-field-base/text-field-base.js.map +1 -1
- package/skills/badge/SKILL.md +43 -0
- package/skills/buttons/SKILL.md +115 -0
- package/skills/card/SKILL.md +162 -0
- package/skills/chips/SKILL.md +95 -0
- package/skills/collapse/SKILL.md +37 -0
- package/skills/datepicker/SKILL.md +110 -0
- package/skills/dialog/SKILL.md +92 -0
- package/skills/drawer/SKILL.md +94 -0
- package/skills/expansion-panel/SKILL.md +65 -0
- package/skills/fab/SKILL.md +79 -0
- package/skills/list/SKILL.md +105 -0
- package/skills/menu/SKILL.md +120 -0
- package/skills/navigation-bar/SKILL.md +87 -0
- package/skills/navigation-rail/SKILL.md +127 -0
- package/skills/overview/SKILL.md +44 -0
- package/skills/progress/SKILL.md +63 -0
- package/skills/scaffold/SKILL.md +392 -0
- package/skills/search/SKILL.md +65 -0
- package/skills/select/SKILL.md +120 -0
- package/skills/selection-controls/SKILL.md +88 -0
- package/skills/setup/SKILL.md +58 -0
- package/skills/slider/SKILL.md +119 -0
- package/skills/snackbar/SKILL.md +70 -0
- package/skills/tab-bar/SKILL.md +55 -0
- package/skills/text-field/SKILL.md +114 -0
- package/skills/theming/SKILL.md +80 -0
- package/skills/top-app-bar/SKILL.md +64 -0
- package/skills/typeahead/SKILL.md +113 -0
- package/slider/slider.d.ts +73 -0
- package/slider/slider.d.ts.map +1 -0
- package/slider/slider.js +506 -0
- package/slider/slider.js.map +1 -0
- package/slider/slider.styles.d.ts +2 -0
- package/slider/slider.styles.d.ts.map +1 -0
- package/slider/slider.styles.js +292 -0
- package/slider/slider.styles.js.map +1 -0
- package/snackbar/snackbar.d.ts +4 -4
- package/snackbar/snackbar.d.ts.map +1 -1
- package/snackbar/snackbar.js +28 -28
- package/snackbar/snackbar.js.map +1 -1
- package/snackbar/snackbar.styles.js +1 -1
- package/snackbar/snackbar.styles.js.map +1 -1
- package/switch/switch-list-item.d.ts +4 -4
- package/switch/switch-list-item.d.ts.map +1 -1
- package/switch/switch-list-item.js +5 -5
- package/switch/switch-list-item.js.map +1 -1
- package/switch/switch.d.ts +3 -3
- package/switch/switch.d.ts.map +1 -1
- package/switch/switch.js +5 -5
- package/switch/switch.js.map +1 -1
- package/tab-bar/tab-bar.d.ts +6 -6
- package/tab-bar/tab-bar.d.ts.map +1 -1
- package/tab-bar/tab-bar.js +40 -23
- package/tab-bar/tab-bar.js.map +1 -1
- package/tab-bar/tab.d.ts +5 -5
- package/tab-bar/tab.d.ts.map +1 -1
- package/tab-bar/tab.js +9 -9
- package/tab-bar/tab.js.map +1 -1
- package/text-area/text-area.d.ts +3 -3
- package/text-area/text-area.d.ts.map +1 -1
- package/text-area/text-area.js +9 -9
- package/text-area/text-area.js.map +1 -1
- package/text-field/text-field.d.ts +15 -3
- package/text-field/text-field.d.ts.map +1 -1
- package/text-field/text-field.js +46 -13
- package/text-field/text-field.js.map +1 -1
- package/typeahead/highlight.d.ts +2 -2
- package/typeahead/highlight.d.ts.map +1 -1
- package/typeahead/highlight.js +7 -7
- package/typeahead/highlight.js.map +1 -1
- package/typeahead/typeahead.d.ts +7 -7
- package/typeahead/typeahead.d.ts.map +1 -1
- package/typeahead/typeahead.js +22 -18
- package/typeahead/typeahead.js.map +1 -1
- package/vscode.html-custom-data.json +870 -481
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { CSSResultGroup } from '@lit/reactive-element/css-tag';
|
|
2
2
|
import { HTMLTemplateResult } from 'lit';
|
|
3
|
-
import {
|
|
3
|
+
import { NativeTextFieldWrapper } from '../shared/char-count-text-field/native-text-field-wrapper.js';
|
|
4
4
|
import { DatepickerFormat } from './format.js';
|
|
5
|
+
import '../button/icon-button.js';
|
|
5
6
|
import '../calendar/calendar.js';
|
|
6
7
|
import '../menu/menu.js';
|
|
7
|
-
|
|
8
|
+
import '../ripple/ripple.js';
|
|
9
|
+
export declare class Datepicker extends NativeTextFieldWrapper {
|
|
8
10
|
#private;
|
|
9
11
|
static styles: CSSResultGroup;
|
|
10
12
|
/**
|
|
@@ -44,7 +46,7 @@ export declare class UmDatepicker extends UmNativeTextFieldWrapper {
|
|
|
44
46
|
private _calendar;
|
|
45
47
|
private _trailingSlot;
|
|
46
48
|
protected renderControl(): HTMLTemplateResult;
|
|
47
|
-
protected renderDefaultTrailingIcon(): import("lit-html").TemplateResult<2>;
|
|
49
|
+
protected renderDefaultTrailingIcon(): import("lit-html").TemplateResult<1> | import("lit-html").TemplateResult<2>;
|
|
48
50
|
protected renderAfterContent(): import("lit-html").TemplateResult<1>;
|
|
49
51
|
connectedCallback(): void;
|
|
50
52
|
disconnectedCallback(): void;
|
|
@@ -52,7 +54,7 @@ export declare class UmDatepicker extends UmNativeTextFieldWrapper {
|
|
|
52
54
|
}
|
|
53
55
|
declare global {
|
|
54
56
|
interface HTMLElementTagNameMap {
|
|
55
|
-
'u-datepicker':
|
|
57
|
+
'u-datepicker': Datepicker;
|
|
56
58
|
}
|
|
57
59
|
}
|
|
58
60
|
//# sourceMappingURL=datepicker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datepicker.d.ts","sourceRoot":"","sources":["../../src/datepicker/datepicker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,EAAQ,kBAAkB,EAAgB,MAAM,KAAK,CAAC;AAM7D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"datepicker.d.ts","sourceRoot":"","sources":["../../src/datepicker/datepicker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,EAAQ,kBAAkB,EAAgB,MAAM,KAAK,CAAC;AAM7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,8DAA8D,CAAC;AAKtG,OAAO,EAAE,gBAAgB,EAAiB,MAAM,aAAa,CAAC;AAE9D,OAAO,0BAA0B,CAAC;AAClC,OAAO,yBAAyB,CAAC;AACjC,OAAO,iBAAiB,CAAC;AACzB,OAAO,qBAAqB,CAAC;AAI7B,qBACa,UAAW,SAAQ,sBAAsB;;IACpD,OAAgB,MAAM,EAAE,cAAc,CAAmD;IAEzF;;;;OAIG;IACS,MAAM,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEzC;;;;;;;OAOG;IACS,MAAM,EAAE,gBAAgB,CAAW;IAE/C;;;;;OAKG;IACyC,QAAQ,UAAS;IAE7D;;;OAGG;IACyC,QAAQ,UAAS;IAE7D;;;OAGG;IACyD,eAAe,EAAE,UAAU,GAAG,OAAO,CAAc;IAE/F,KAAK,EAAG,gBAAgB,CAAC;IAClB,OAAO,CAAC,KAAK,CAAQ;IACjB,OAAO,CAAC,SAAS,CAAY;IACzB,OAAO,CAAC,aAAa,CAAmB;cAEpD,aAAa,IAAI,kBAAkB;cAoCnC,yBAAyB;cAmBzB,kBAAkB;IAkB5B,iBAAiB,IAAI,IAAI;IAKzB,oBAAoB,IAAI,IAAI;cAKlB,YAAY,IAAI,IAAI;CAmDxC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,cAAc,EAAE,UAAU,CAAC;KAC5B;CACF"}
|
package/datepicker/datepicker.js
CHANGED
|
@@ -2,15 +2,17 @@ import { __decorate } from "tslib";
|
|
|
2
2
|
import { html, nothing, svg } from 'lit';
|
|
3
3
|
import { customElement, property, query } from 'lit/decorators.js';
|
|
4
4
|
import { live } from 'lit/directives/live.js';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
5
|
+
import { NativeTextFieldWrapper } from '../shared/char-count-text-field/native-text-field-wrapper.js';
|
|
6
|
+
import { TextFieldBase } from '../shared/text-field-base/text-field-base.js';
|
|
7
7
|
import { styles as textFieldStyles } from '../text-field/text-field.styles.js';
|
|
8
8
|
import { styles } from './datepicker.styles.js';
|
|
9
9
|
import { formatIsoDate } from './format.js';
|
|
10
|
+
import '../button/icon-button.js';
|
|
10
11
|
import '../calendar/calendar.js';
|
|
11
12
|
import '../menu/menu.js';
|
|
13
|
+
import '../ripple/ripple.js';
|
|
12
14
|
const ISO_DATE = /^\d{4}-\d{2}-\d{2}$/;
|
|
13
|
-
let
|
|
15
|
+
let Datepicker = class Datepicker extends NativeTextFieldWrapper {
|
|
14
16
|
constructor() {
|
|
15
17
|
super(...arguments);
|
|
16
18
|
/**
|
|
@@ -76,7 +78,7 @@ let UmDatepicker = class UmDatepicker extends UmNativeTextFieldWrapper {
|
|
|
76
78
|
this._menu.toggle();
|
|
77
79
|
};
|
|
78
80
|
}
|
|
79
|
-
static { this.styles = [
|
|
81
|
+
static { this.styles = [TextFieldBase.styles, textFieldStyles, styles]; }
|
|
80
82
|
renderControl() {
|
|
81
83
|
const displayValue = this.editable
|
|
82
84
|
? this._value
|
|
@@ -91,6 +93,7 @@ let UmDatepicker = class UmDatepicker extends UmNativeTextFieldWrapper {
|
|
|
91
93
|
aria-haspopup="dialog"
|
|
92
94
|
?disabled=${this.disabled}
|
|
93
95
|
@click=${this.#toggleMenu}></button>
|
|
96
|
+
<u-ripple ?disabled=${this.disabled}></u-ripple>
|
|
94
97
|
`}
|
|
95
98
|
<div class="input">
|
|
96
99
|
<input
|
|
@@ -111,10 +114,21 @@ let UmDatepicker = class UmDatepicker extends UmNativeTextFieldWrapper {
|
|
|
111
114
|
`;
|
|
112
115
|
}
|
|
113
116
|
renderDefaultTrailingIcon() {
|
|
114
|
-
|
|
115
|
-
<svg xmlns="http://www.w3.org/2000/svg" height="
|
|
117
|
+
const icon = svg `
|
|
118
|
+
<svg xmlns="http://www.w3.org/2000/svg" height="1em" viewBox="0 -960 960 960" width="1em" fill="currentColor">
|
|
116
119
|
<path d="M200-80q-33 0-56.5-23.5T120-160v-560q0-33 23.5-56.5T200-800h40v-80h80v80h320v-80h80v80h40q33 0 56.5 23.5T840-720v560q0 33-23.5 56.5T760-80H200Zm0-80h560v-400H200v400Zm0-480h560v-80H200v80Zm0 0v-80 80Z"/>
|
|
117
120
|
</svg>`;
|
|
121
|
+
// In editable mode the field itself is typeable, so the icon must be a
|
|
122
|
+
// dedicated button for opening the calendar. In non-editable mode the
|
|
123
|
+
// .trigger button covers the whole field, so the icon is just visual.
|
|
124
|
+
return this.editable
|
|
125
|
+
? html `<u-icon-button
|
|
126
|
+
type="button"
|
|
127
|
+
aria-haspopup="dialog"
|
|
128
|
+
aria-label="Open calendar"
|
|
129
|
+
?disabled=${this.disabled}
|
|
130
|
+
@click=${this.#toggleMenu}>${icon}</u-icon-button>`
|
|
131
|
+
: icon;
|
|
118
132
|
}
|
|
119
133
|
renderAfterContent() {
|
|
120
134
|
return html `
|
|
@@ -122,7 +136,7 @@ let UmDatepicker = class UmDatepicker extends UmNativeTextFieldWrapper {
|
|
|
122
136
|
positioning=${this.menuPositioning}
|
|
123
137
|
autoclose="outside"
|
|
124
138
|
anchor-corner="end-start"
|
|
125
|
-
direction="down-
|
|
139
|
+
direction="down-end"
|
|
126
140
|
allow-overflow
|
|
127
141
|
manualFocus
|
|
128
142
|
@click=${this.#stopPropagation}>
|
|
@@ -160,33 +174,33 @@ let UmDatepicker = class UmDatepicker extends UmNativeTextFieldWrapper {
|
|
|
160
174
|
};
|
|
161
175
|
__decorate([
|
|
162
176
|
property()
|
|
163
|
-
],
|
|
177
|
+
], Datepicker.prototype, "locale", void 0);
|
|
164
178
|
__decorate([
|
|
165
179
|
property()
|
|
166
|
-
],
|
|
180
|
+
], Datepicker.prototype, "format", void 0);
|
|
167
181
|
__decorate([
|
|
168
182
|
property({ type: Boolean, reflect: true })
|
|
169
|
-
],
|
|
183
|
+
], Datepicker.prototype, "editable", void 0);
|
|
170
184
|
__decorate([
|
|
171
185
|
property({ type: Boolean, reflect: true })
|
|
172
|
-
],
|
|
186
|
+
], Datepicker.prototype, "readOnly", void 0);
|
|
173
187
|
__decorate([
|
|
174
188
|
property({ reflect: true, attribute: 'menu-positioning' })
|
|
175
|
-
],
|
|
189
|
+
], Datepicker.prototype, "menuPositioning", void 0);
|
|
176
190
|
__decorate([
|
|
177
191
|
query('input')
|
|
178
|
-
],
|
|
192
|
+
], Datepicker.prototype, "input", void 0);
|
|
179
193
|
__decorate([
|
|
180
194
|
query('u-menu', true)
|
|
181
|
-
],
|
|
195
|
+
], Datepicker.prototype, "_menu", void 0);
|
|
182
196
|
__decorate([
|
|
183
197
|
query('u-calendar', true)
|
|
184
|
-
],
|
|
198
|
+
], Datepicker.prototype, "_calendar", void 0);
|
|
185
199
|
__decorate([
|
|
186
200
|
query('.trailing-icon', true)
|
|
187
|
-
],
|
|
188
|
-
|
|
201
|
+
], Datepicker.prototype, "_trailingSlot", void 0);
|
|
202
|
+
Datepicker = __decorate([
|
|
189
203
|
customElement('u-datepicker')
|
|
190
|
-
],
|
|
191
|
-
export {
|
|
204
|
+
], Datepicker);
|
|
205
|
+
export { Datepicker };
|
|
192
206
|
//# sourceMappingURL=datepicker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datepicker.js","sourceRoot":"","sources":["../../src/datepicker/datepicker.ts"],"names":[],"mappings":"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","sourcesContent":["import { CSSResultGroup } from '@lit/reactive-element/css-tag';\n\nimport { html, HTMLTemplateResult, nothing, svg } from 'lit';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { live } from 'lit/directives/live.js';\n\nimport { UmCalendar } from '../calendar/calendar.js';\nimport { UmMenu } from '../menu/menu.js';\nimport { UmNativeTextFieldWrapper } from '../shared/char-count-text-field/native-text-field-wrapper.js';\nimport { UmTextFieldBase } from '../shared/text-field-base/text-field-base.js';\n\nimport { styles as textFieldStyles } from '../text-field/text-field.styles.js';\nimport { styles } from './datepicker.styles.js';\nimport { DatepickerFormat, formatIsoDate } from './format.js';\n\nimport '../calendar/calendar.js';\nimport '../menu/menu.js';\n\nconst ISO_DATE = /^\\d{4}-\\d{2}-\\d{2}$/;\n\n@customElement('u-datepicker')\nexport class UmDatepicker extends UmNativeTextFieldWrapper {\n static override styles: CSSResultGroup = [UmTextFieldBase.styles, textFieldStyles, styles];\n\n /**\n * The BCP 47 locale tag forwarded to the underlying calendar and used for\n * non-editable display formatting.\n * When `null`, the calendar falls back to the browser's `navigator.language`.\n */\n @property() locale: string | null = null;\n\n /**\n * Format used when displaying the value while the field is not editable.\n * Accepts the named presets `'short'`, `'medium'`, `'long'`, `'full'`,\n * the literal `'iso'` (keeps the ISO `YYYY-MM-DD` value), or an\n * `Intl.DateTimeFormatOptions` object for custom formatting.\n * In editable mode the input uses the browser's native `type=\"date\"` mask\n * and ignores this property.\n */\n @property() format: DatepickerFormat = 'short';\n\n /**\n * Whether the input accepts manually-typed dates. When `false` (default),\n * the field is read-only and clicking anywhere opens the calendar popover.\n * When `true`, the input uses native `type=\"date\"` and accepts keyboard input;\n * the calendar popover is opened via the trailing icon.\n */\n @property({ type: Boolean, reflect: true }) editable = false;\n\n /**\n * Whether the input is read-only. When set, manual typing is disabled even\n * if `editable` is `true`; the calendar popover remains available.\n */\n @property({ type: Boolean, reflect: true }) readOnly = false;\n\n /**\n * The positioning strategy used by the calendar popover. Use `'fixed'`\n * when the datepicker is rendered inside a clipped/scrollable container.\n */\n @property({ reflect: true, attribute: 'menu-positioning' }) menuPositioning: 'relative' | 'fixed' = 'relative';\n\n @query('input') input!: HTMLInputElement;\n @query('u-menu', true) private _menu!: UmMenu;\n @query('u-calendar', true) private _calendar!: UmCalendar;\n @query('.trailing-icon', true) private _trailingSlot!: HTMLSlotElement;\n\n protected override renderControl(): HTMLTemplateResult {\n const displayValue = this.editable\n ? this._value\n : formatIsoDate(this._value, this.format, this.locale);\n\n return html`\n ${this.editable\n ? nothing\n : html`\n <button\n class=\"trigger\"\n type=\"button\"\n aria-haspopup=\"dialog\"\n ?disabled=${this.disabled}\n @click=${this.#toggleMenu}></button>\n `}\n <div class=\"input\">\n <input\n type=${this.editable ? 'date' : 'text'}\n part=\"input\"\n id=${this.id || nothing}\n aria-labelledby=\"label\"\n aria-describedby=\"supporting-text\"\n aria-haspopup=\"dialog\"\n tabindex=${this.editable ? nothing : -1}\n ?readonly=${this.readOnly || !this.editable}\n ?disabled=${this.disabled}\n placeholder=${this.placeholder ?? nothing}\n .value=${live(displayValue)}\n @input=${this._handleInput}\n @keydown=${this.#handleKeyDown} />\n </div>\n `;\n }\n\n protected override renderDefaultTrailingIcon() {\n return svg`\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"1.25em\" viewBox=\"0 -960 960 960\" width=\"1.25em\" fill=\"currentColor\">\n <path d=\"M200-80q-33 0-56.5-23.5T120-160v-560q0-33 23.5-56.5T200-800h40v-80h80v80h320v-80h80v80h40q33 0 56.5 23.5T840-720v560q0 33-23.5 56.5T760-80H200Zm0-80h560v-400H200v400Zm0-480h560v-80H200v80Zm0 0v-80 80Z\"/>\n </svg>`;\n }\n\n protected override renderAfterContent() {\n return html`\n <u-menu\n positioning=${this.menuPositioning}\n autoclose=\"outside\"\n anchor-corner=\"end-start\"\n direction=\"down-start\"\n allow-overflow\n manualFocus\n @click=${this.#stopPropagation}>\n <u-calendar\n .value=${this._value}\n .locale=${this.locale}\n @input=${this.#handleCalendarInput}></u-calendar>\n </u-menu>\n `;\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n void this.#attach();\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this._trailingSlot?.removeEventListener('click', this.#toggleMenu);\n }\n\n protected override _handleInput(): void {\n super._handleInput();\n\n if (ISO_DATE.test(this._value)) {\n this._calendar.value = this._value;\n }\n\n this.dispatchEvent(new InputEvent('input', { bubbles: true, composed: true }));\n }\n\n #handleKeyDown = (e: KeyboardEvent): void => {\n if (e.key === 'ArrowDown' && !this._menu.open) {\n e.preventDefault();\n this._menu.show();\n return;\n }\n\n if (e.key === 'Escape' && this._menu.open) {\n e.preventDefault();\n this._menu.close();\n return;\n }\n\n this._handleKeyDown(e);\n };\n\n #handleCalendarInput = (e: Event): void => {\n e.stopPropagation();\n const value = (e.target as UmCalendar).value;\n this.value = value;\n this.dispatchEvent(new InputEvent('input', { bubbles: true, composed: true }));\n this.dispatchEvent(new Event('change', { bubbles: true }));\n this._menu.close();\n };\n\n #stopPropagation = (e: Event): void => {\n e.stopPropagation();\n };\n\n #toggleMenu = (): void => {\n if (this.disabled) {\n return;\n }\n this._menu.toggle();\n };\n\n async #attach(): Promise<void> {\n await this.updateComplete;\n this._menu.anchorElement = this._container;\n this._trailingSlot.addEventListener('click', this.#toggleMenu);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'u-datepicker': UmDatepicker;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"datepicker.js","sourceRoot":"","sources":["../../src/datepicker/datepicker.ts"],"names":[],"mappings":"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","sourcesContent":["import { CSSResultGroup } from '@lit/reactive-element/css-tag';\n\nimport { html, HTMLTemplateResult, nothing, svg } from 'lit';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { live } from 'lit/directives/live.js';\n\nimport { Calendar } from '../calendar/calendar.js';\nimport { Menu } from '../menu/menu.js';\nimport { NativeTextFieldWrapper } from '../shared/char-count-text-field/native-text-field-wrapper.js';\nimport { TextFieldBase } from '../shared/text-field-base/text-field-base.js';\n\nimport { styles as textFieldStyles } from '../text-field/text-field.styles.js';\nimport { styles } from './datepicker.styles.js';\nimport { DatepickerFormat, formatIsoDate } from './format.js';\n\nimport '../button/icon-button.js';\nimport '../calendar/calendar.js';\nimport '../menu/menu.js';\nimport '../ripple/ripple.js';\n\nconst ISO_DATE = /^\\d{4}-\\d{2}-\\d{2}$/;\n\n@customElement('u-datepicker')\nexport class Datepicker extends NativeTextFieldWrapper {\n static override styles: CSSResultGroup = [TextFieldBase.styles, textFieldStyles, styles];\n\n /**\n * The BCP 47 locale tag forwarded to the underlying calendar and used for\n * non-editable display formatting.\n * When `null`, the calendar falls back to the browser's `navigator.language`.\n */\n @property() locale: string | null = null;\n\n /**\n * Format used when displaying the value while the field is not editable.\n * Accepts the named presets `'short'`, `'medium'`, `'long'`, `'full'`,\n * the literal `'iso'` (keeps the ISO `YYYY-MM-DD` value), or an\n * `Intl.DateTimeFormatOptions` object for custom formatting.\n * In editable mode the input uses the browser's native `type=\"date\"` mask\n * and ignores this property.\n */\n @property() format: DatepickerFormat = 'short';\n\n /**\n * Whether the input accepts manually-typed dates. When `false` (default),\n * the field is read-only and clicking anywhere opens the calendar popover.\n * When `true`, the input uses native `type=\"date\"` and accepts keyboard input;\n * the calendar popover is opened via the trailing icon.\n */\n @property({ type: Boolean, reflect: true }) editable = false;\n\n /**\n * Whether the input is read-only. When set, manual typing is disabled even\n * if `editable` is `true`; the calendar popover remains available.\n */\n @property({ type: Boolean, reflect: true }) readOnly = false;\n\n /**\n * The positioning strategy used by the calendar popover. Use `'fixed'`\n * when the datepicker is rendered inside a clipped/scrollable container.\n */\n @property({ reflect: true, attribute: 'menu-positioning' }) menuPositioning: 'relative' | 'fixed' = 'relative';\n\n @query('input') input!: HTMLInputElement;\n @query('u-menu', true) private _menu!: Menu;\n @query('u-calendar', true) private _calendar!: Calendar;\n @query('.trailing-icon', true) private _trailingSlot!: HTMLSlotElement;\n\n protected override renderControl(): HTMLTemplateResult {\n const displayValue = this.editable\n ? this._value\n : formatIsoDate(this._value, this.format, this.locale);\n\n return html`\n ${this.editable\n ? nothing\n : html`\n <button\n class=\"trigger\"\n type=\"button\"\n aria-haspopup=\"dialog\"\n ?disabled=${this.disabled}\n @click=${this.#toggleMenu}></button>\n <u-ripple ?disabled=${this.disabled}></u-ripple>\n `}\n <div class=\"input\">\n <input\n type=${this.editable ? 'date' : 'text'}\n part=\"input\"\n id=${this.id || nothing}\n aria-labelledby=\"label\"\n aria-describedby=\"supporting-text\"\n aria-haspopup=\"dialog\"\n tabindex=${this.editable ? nothing : -1}\n ?readonly=${this.readOnly || !this.editable}\n ?disabled=${this.disabled}\n placeholder=${this.placeholder ?? nothing}\n .value=${live(displayValue)}\n @input=${this._handleInput}\n @keydown=${this.#handleKeyDown} />\n </div>\n `;\n }\n\n protected override renderDefaultTrailingIcon() {\n const icon = svg`\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"1em\" viewBox=\"0 -960 960 960\" width=\"1em\" fill=\"currentColor\">\n <path d=\"M200-80q-33 0-56.5-23.5T120-160v-560q0-33 23.5-56.5T200-800h40v-80h80v80h320v-80h80v80h40q33 0 56.5 23.5T840-720v560q0 33-23.5 56.5T760-80H200Zm0-80h560v-400H200v400Zm0-480h560v-80H200v80Zm0 0v-80 80Z\"/>\n </svg>`;\n\n // In editable mode the field itself is typeable, so the icon must be a\n // dedicated button for opening the calendar. In non-editable mode the\n // .trigger button covers the whole field, so the icon is just visual.\n return this.editable\n ? html`<u-icon-button\n type=\"button\"\n aria-haspopup=\"dialog\"\n aria-label=\"Open calendar\"\n ?disabled=${this.disabled}\n @click=${this.#toggleMenu}>${icon}</u-icon-button>`\n : icon;\n }\n\n protected override renderAfterContent() {\n return html`\n <u-menu\n positioning=${this.menuPositioning}\n autoclose=\"outside\"\n anchor-corner=\"end-start\"\n direction=\"down-end\"\n allow-overflow\n manualFocus\n @click=${this.#stopPropagation}>\n <u-calendar\n .value=${this._value}\n .locale=${this.locale}\n @input=${this.#handleCalendarInput}></u-calendar>\n </u-menu>\n `;\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n void this.#attach();\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this._trailingSlot?.removeEventListener('click', this.#toggleMenu);\n }\n\n protected override _handleInput(): void {\n super._handleInput();\n\n if (ISO_DATE.test(this._value)) {\n this._calendar.value = this._value;\n }\n\n this.dispatchEvent(new InputEvent('input', { bubbles: true, composed: true }));\n }\n\n #handleKeyDown = (e: KeyboardEvent): void => {\n if (e.key === 'ArrowDown' && !this._menu.open) {\n e.preventDefault();\n this._menu.show();\n return;\n }\n\n if (e.key === 'Escape' && this._menu.open) {\n e.preventDefault();\n this._menu.close();\n return;\n }\n\n this._handleKeyDown(e);\n };\n\n #handleCalendarInput = (e: Event): void => {\n e.stopPropagation();\n const value = (e.target as Calendar).value;\n this.value = value;\n this.dispatchEvent(new InputEvent('input', { bubbles: true, composed: true }));\n this.dispatchEvent(new Event('change', { bubbles: true }));\n this._menu.close();\n };\n\n #stopPropagation = (e: Event): void => {\n e.stopPropagation();\n };\n\n #toggleMenu = (): void => {\n if (this.disabled) {\n return;\n }\n this._menu.toggle();\n };\n\n async #attach(): Promise<void> {\n await this.updateComplete;\n this._menu.anchorElement = this._container;\n this._trailingSlot.addEventListener('click', this.#toggleMenu);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'u-datepicker': Datepicker;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datepicker.styles.d.ts","sourceRoot":"","sources":["../../src/datepicker/datepicker.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"datepicker.styles.d.ts","sourceRoot":"","sources":["../../src/datepicker/datepicker.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,yBA2BlB,CAAC"}
|
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
import { css } from 'lit';
|
|
2
2
|
export const styles = css `
|
|
3
|
+
:host(:not([editable]):not([disabled])) .container {
|
|
4
|
+
cursor: pointer;
|
|
5
|
+
}
|
|
3
6
|
|
|
7
|
+
.trigger {
|
|
8
|
+
position: absolute;
|
|
9
|
+
inset: 0;
|
|
10
|
+
margin: 0;
|
|
11
|
+
padding: 0;
|
|
12
|
+
background: transparent;
|
|
13
|
+
border: none;
|
|
14
|
+
appearance: none;
|
|
15
|
+
cursor: inherit;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
input[type=date]::-webkit-calendar-picker-indicator {
|
|
19
|
+
display: none;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
input[type=date]::-webkit-inner-spin-button, input[type=date]::-webkit-clear-button {
|
|
23
|
+
display: none;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
:host([empty]:not(:focus-within)) .container:not(.no-label) input[type=date]::-webkit-datetime-edit {
|
|
27
|
+
color: transparent;
|
|
28
|
+
}
|
|
4
29
|
`;
|
|
5
30
|
//# sourceMappingURL=datepicker.styles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datepicker.styles.js","sourceRoot":"","sources":["../../src/datepicker/datepicker.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAC
|
|
1
|
+
{"version":3,"file":"datepicker.styles.js","sourceRoot":"","sources":["../../src/datepicker/datepicker.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BzB,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css `\n :host(:not([editable]):not([disabled])) .container {\n cursor: pointer;\n }\n\n .trigger {\n position: absolute;\n inset: 0;\n margin: 0;\n padding: 0;\n background: transparent;\n border: none;\n appearance: none;\n cursor: inherit;\n }\n\n input[type=date]::-webkit-calendar-picker-indicator {\n display: none;\n }\n\n input[type=date]::-webkit-inner-spin-button, input[type=date]::-webkit-clear-button {\n display: none;\n }\n\n :host([empty]:not(:focus-within)) .container:not(.no-label) input[type=date]::-webkit-datetime-edit {\n color: transparent;\n }\n`;\n"]}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { CSSResultGroup } from '@lit/reactive-element/css-tag';
|
|
2
2
|
import { HTMLTemplateResult } from 'lit';
|
|
3
|
-
import {
|
|
3
|
+
import { NativeTextFieldWrapper } from '../shared/char-count-text-field/native-text-field-wrapper.js';
|
|
4
4
|
import { DatepickerFormat } from './format.js';
|
|
5
|
+
import '../button/icon-button.js';
|
|
5
6
|
import '../calendar/range-calendar.js';
|
|
6
7
|
import '../menu/menu.js';
|
|
7
|
-
|
|
8
|
+
import '../ripple/ripple.js';
|
|
9
|
+
export declare class RangeDatepicker extends NativeTextFieldWrapper {
|
|
8
10
|
#private;
|
|
9
11
|
static styles: CSSResultGroup;
|
|
10
12
|
/**
|
|
@@ -42,7 +44,7 @@ export declare class UmRangeDatepicker extends UmNativeTextFieldWrapper {
|
|
|
42
44
|
private _calendar;
|
|
43
45
|
private _trailingSlot;
|
|
44
46
|
protected renderControl(): HTMLTemplateResult;
|
|
45
|
-
protected renderDefaultTrailingIcon(): import("lit-html").TemplateResult<2>;
|
|
47
|
+
protected renderDefaultTrailingIcon(): import("lit-html").TemplateResult<1> | import("lit-html").TemplateResult<2>;
|
|
46
48
|
protected renderAfterContent(): import("lit-html").TemplateResult<1>;
|
|
47
49
|
connectedCallback(): void;
|
|
48
50
|
disconnectedCallback(): void;
|
|
@@ -50,7 +52,7 @@ export declare class UmRangeDatepicker extends UmNativeTextFieldWrapper {
|
|
|
50
52
|
}
|
|
51
53
|
declare global {
|
|
52
54
|
interface HTMLElementTagNameMap {
|
|
53
|
-
'u-range-datepicker':
|
|
55
|
+
'u-range-datepicker': RangeDatepicker;
|
|
54
56
|
}
|
|
55
57
|
}
|
|
56
58
|
//# sourceMappingURL=range-datepicker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"range-datepicker.d.ts","sourceRoot":"","sources":["../../src/datepicker/range-datepicker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,EAAQ,kBAAkB,EAAgB,MAAM,KAAK,CAAC;AAM7D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"range-datepicker.d.ts","sourceRoot":"","sources":["../../src/datepicker/range-datepicker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,EAAQ,kBAAkB,EAAgB,MAAM,KAAK,CAAC;AAM7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,8DAA8D,CAAC;AAKtG,OAAO,EAAE,gBAAgB,EAAsB,MAAM,aAAa,CAAC;AAEnE,OAAO,0BAA0B,CAAC;AAClC,OAAO,+BAA+B,CAAC;AACvC,OAAO,iBAAiB,CAAC;AACzB,OAAO,qBAAqB,CAAC;AAI7B,qBACa,eAAgB,SAAQ,sBAAsB;;IACzD,OAAgB,MAAM,EAAE,cAAc,CAAmD;IAEzF;;;;OAIG;IACS,MAAM,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEzC;;;;;OAKG;IACS,MAAM,EAAE,gBAAgB,CAAW;IAE/C;;;;;OAKG;IACyC,QAAQ,UAAS;IAE7D;;;OAGG;IACyC,QAAQ,UAAS;IAE7D;;;OAGG;IACyD,eAAe,EAAE,UAAU,GAAG,OAAO,CAAc;IAE/F,KAAK,EAAG,gBAAgB,CAAC;IAClB,OAAO,CAAC,KAAK,CAAQ;IACX,OAAO,CAAC,SAAS,CAAiB;IACpC,OAAO,CAAC,aAAa,CAAmB;cAEpD,aAAa,IAAI,kBAAkB;cAoCnC,yBAAyB;cAmBzB,kBAAkB;IAmB5B,iBAAiB,IAAI,IAAI;IAKzB,oBAAoB,IAAI,IAAI;cAKlB,YAAY,IAAI,IAAI;CA4DxC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,oBAAoB,EAAE,eAAe,CAAC;KACvC;CACF"}
|
|
@@ -2,15 +2,17 @@ import { __decorate } from "tslib";
|
|
|
2
2
|
import { html, nothing, svg } from 'lit';
|
|
3
3
|
import { customElement, property, query } from 'lit/decorators.js';
|
|
4
4
|
import { live } from 'lit/directives/live.js';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
5
|
+
import { NativeTextFieldWrapper } from '../shared/char-count-text-field/native-text-field-wrapper.js';
|
|
6
|
+
import { TextFieldBase } from '../shared/text-field-base/text-field-base.js';
|
|
7
7
|
import { styles as textFieldStyles } from '../text-field/text-field.styles.js';
|
|
8
8
|
import { styles } from './datepicker.styles.js';
|
|
9
9
|
import { formatIsoDateRange } from './format.js';
|
|
10
|
+
import '../button/icon-button.js';
|
|
10
11
|
import '../calendar/range-calendar.js';
|
|
11
12
|
import '../menu/menu.js';
|
|
13
|
+
import '../ripple/ripple.js';
|
|
12
14
|
const ISO_DATE_RANGE = /^\d{4}-\d{2}-\d{2} - \d{4}-\d{2}-\d{2}$/;
|
|
13
|
-
let
|
|
15
|
+
let RangeDatepicker = class RangeDatepicker extends NativeTextFieldWrapper {
|
|
14
16
|
constructor() {
|
|
15
17
|
super(...arguments);
|
|
16
18
|
/**
|
|
@@ -80,7 +82,7 @@ let UmRangeDatepicker = class UmRangeDatepicker extends UmNativeTextFieldWrapper
|
|
|
80
82
|
this._menu.toggle();
|
|
81
83
|
};
|
|
82
84
|
}
|
|
83
|
-
static { this.styles = [
|
|
85
|
+
static { this.styles = [TextFieldBase.styles, textFieldStyles, styles]; }
|
|
84
86
|
renderControl() {
|
|
85
87
|
const displayValue = this.editable
|
|
86
88
|
? this._value
|
|
@@ -95,6 +97,7 @@ let UmRangeDatepicker = class UmRangeDatepicker extends UmNativeTextFieldWrapper
|
|
|
95
97
|
aria-haspopup="dialog"
|
|
96
98
|
?disabled=${this.disabled}
|
|
97
99
|
@click=${this.#toggleMenu}></button>
|
|
100
|
+
<u-ripple ?disabled=${this.disabled}></u-ripple>
|
|
98
101
|
`}
|
|
99
102
|
<div class="input">
|
|
100
103
|
<input
|
|
@@ -115,10 +118,21 @@ let UmRangeDatepicker = class UmRangeDatepicker extends UmNativeTextFieldWrapper
|
|
|
115
118
|
`;
|
|
116
119
|
}
|
|
117
120
|
renderDefaultTrailingIcon() {
|
|
118
|
-
|
|
119
|
-
<svg xmlns="http://www.w3.org/2000/svg" height="
|
|
121
|
+
const icon = svg `
|
|
122
|
+
<svg xmlns="http://www.w3.org/2000/svg" height="1em" viewBox="0 -960 960 960" width="1em" fill="currentColor">
|
|
120
123
|
<path d="M200-80q-33 0-56.5-23.5T120-160v-560q0-33 23.5-56.5T200-800h40v-80h80v80h320v-80h80v80h40q33 0 56.5 23.5T840-720v560q0 33-23.5 56.5T760-80H200Zm0-80h560v-400H200v400Zm0-480h560v-80H200v80Zm0 0v-80 80Z"/>
|
|
121
124
|
</svg>`;
|
|
125
|
+
// In editable mode the field itself is typeable, so the icon must be a
|
|
126
|
+
// dedicated button for opening the calendar. In non-editable mode the
|
|
127
|
+
// .trigger button covers the whole field, so the icon is just visual.
|
|
128
|
+
return this.editable
|
|
129
|
+
? html `<u-icon-button
|
|
130
|
+
type="button"
|
|
131
|
+
aria-haspopup="dialog"
|
|
132
|
+
aria-label="Open calendar"
|
|
133
|
+
?disabled=${this.disabled}
|
|
134
|
+
@click=${this.#toggleMenu}>${icon}</u-icon-button>`
|
|
135
|
+
: icon;
|
|
122
136
|
}
|
|
123
137
|
renderAfterContent() {
|
|
124
138
|
return html `
|
|
@@ -126,7 +140,7 @@ let UmRangeDatepicker = class UmRangeDatepicker extends UmNativeTextFieldWrapper
|
|
|
126
140
|
positioning=${this.menuPositioning}
|
|
127
141
|
autoclose="outside"
|
|
128
142
|
anchor-corner="end-start"
|
|
129
|
-
direction="down-
|
|
143
|
+
direction="down-end"
|
|
130
144
|
allow-overflow
|
|
131
145
|
manualFocus
|
|
132
146
|
@click=${this.#stopPropagation}>
|
|
@@ -166,33 +180,33 @@ let UmRangeDatepicker = class UmRangeDatepicker extends UmNativeTextFieldWrapper
|
|
|
166
180
|
};
|
|
167
181
|
__decorate([
|
|
168
182
|
property()
|
|
169
|
-
],
|
|
183
|
+
], RangeDatepicker.prototype, "locale", void 0);
|
|
170
184
|
__decorate([
|
|
171
185
|
property()
|
|
172
|
-
],
|
|
186
|
+
], RangeDatepicker.prototype, "format", void 0);
|
|
173
187
|
__decorate([
|
|
174
188
|
property({ type: Boolean, reflect: true })
|
|
175
|
-
],
|
|
189
|
+
], RangeDatepicker.prototype, "editable", void 0);
|
|
176
190
|
__decorate([
|
|
177
191
|
property({ type: Boolean, reflect: true })
|
|
178
|
-
],
|
|
192
|
+
], RangeDatepicker.prototype, "readOnly", void 0);
|
|
179
193
|
__decorate([
|
|
180
194
|
property({ reflect: true, attribute: 'menu-positioning' })
|
|
181
|
-
],
|
|
195
|
+
], RangeDatepicker.prototype, "menuPositioning", void 0);
|
|
182
196
|
__decorate([
|
|
183
197
|
query('input')
|
|
184
|
-
],
|
|
198
|
+
], RangeDatepicker.prototype, "input", void 0);
|
|
185
199
|
__decorate([
|
|
186
200
|
query('u-menu', true)
|
|
187
|
-
],
|
|
201
|
+
], RangeDatepicker.prototype, "_menu", void 0);
|
|
188
202
|
__decorate([
|
|
189
203
|
query('u-range-calendar', true)
|
|
190
|
-
],
|
|
204
|
+
], RangeDatepicker.prototype, "_calendar", void 0);
|
|
191
205
|
__decorate([
|
|
192
206
|
query('.trailing-icon', true)
|
|
193
|
-
],
|
|
194
|
-
|
|
207
|
+
], RangeDatepicker.prototype, "_trailingSlot", void 0);
|
|
208
|
+
RangeDatepicker = __decorate([
|
|
195
209
|
customElement('u-range-datepicker')
|
|
196
|
-
],
|
|
197
|
-
export {
|
|
210
|
+
], RangeDatepicker);
|
|
211
|
+
export { RangeDatepicker };
|
|
198
212
|
//# sourceMappingURL=range-datepicker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"range-datepicker.js","sourceRoot":"","sources":["../../src/datepicker/range-datepicker.ts"],"names":[],"mappings":"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","sourcesContent":["import { CSSResultGroup } from '@lit/reactive-element/css-tag';\n\nimport { html, HTMLTemplateResult, nothing, svg } from 'lit';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { live } from 'lit/directives/live.js';\n\nimport { UmRangeCalendar } from '../calendar/range-calendar.js';\nimport { UmMenu } from '../menu/menu.js';\nimport { UmNativeTextFieldWrapper } from '../shared/char-count-text-field/native-text-field-wrapper.js';\nimport { UmTextFieldBase } from '../shared/text-field-base/text-field-base.js';\n\nimport { styles as textFieldStyles } from '../text-field/text-field.styles.js';\nimport { styles } from './datepicker.styles.js';\nimport { DatepickerFormat, formatIsoDateRange } from './format.js';\n\nimport '../calendar/range-calendar.js';\nimport '../menu/menu.js';\n\nconst ISO_DATE_RANGE = /^\\d{4}-\\d{2}-\\d{2} - \\d{4}-\\d{2}-\\d{2}$/;\n\n@customElement('u-range-datepicker')\nexport class UmRangeDatepicker extends UmNativeTextFieldWrapper {\n static override styles: CSSResultGroup = [UmTextFieldBase.styles, textFieldStyles, styles];\n\n /**\n * The BCP 47 locale tag forwarded to the underlying range calendar and used\n * for non-editable display formatting.\n * When `null`, the calendar falls back to the browser's `navigator.language`.\n */\n @property() locale: string | null = null;\n\n /**\n * Format used when displaying the value while the field is not editable.\n * Accepts `'short'`, `'medium'`, `'long'`, `'full'`, `'iso'`, or an\n * `Intl.DateTimeFormatOptions` object. Each end of the range is formatted\n * independently and joined with ` - `.\n */\n @property() format: DatepickerFormat = 'short';\n\n /**\n * Whether the input accepts manually-typed ranges. When `false` (default),\n * the field is read-only and clicking anywhere opens the calendar popover.\n * When `true`, the input accepts text in the `YYYY-MM-DD - YYYY-MM-DD` format;\n * the calendar popover is opened via the trailing icon.\n */\n @property({ type: Boolean, reflect: true }) editable = false;\n\n /**\n * Whether the input is read-only. When set, manual typing is disabled even\n * if `editable` is `true`; the calendar popover remains available.\n */\n @property({ type: Boolean, reflect: true }) readOnly = false;\n\n /**\n * The positioning strategy used by the calendar popover. Use `'fixed'`\n * when the datepicker is rendered inside a clipped/scrollable container.\n */\n @property({ reflect: true, attribute: 'menu-positioning' }) menuPositioning: 'relative' | 'fixed' = 'relative';\n\n @query('input') input!: HTMLInputElement;\n @query('u-menu', true) private _menu!: UmMenu;\n @query('u-range-calendar', true) private _calendar!: UmRangeCalendar;\n @query('.trailing-icon', true) private _trailingSlot!: HTMLSlotElement;\n\n protected override renderControl(): HTMLTemplateResult {\n const displayValue = this.editable\n ? this._value\n : formatIsoDateRange(this._value, this.format, this.locale);\n\n return html`\n ${this.editable\n ? nothing\n : html`\n <button\n class=\"trigger\"\n type=\"button\"\n aria-haspopup=\"dialog\"\n ?disabled=${this.disabled}\n @click=${this.#toggleMenu}></button>\n `}\n <div class=\"input\">\n <input\n type=\"text\"\n part=\"input\"\n id=${this.id || nothing}\n aria-labelledby=\"label\"\n aria-describedby=\"supporting-text\"\n aria-haspopup=\"dialog\"\n tabindex=${this.editable ? nothing : -1}\n ?readonly=${this.readOnly || !this.editable}\n ?disabled=${this.disabled}\n placeholder=${this.placeholder ?? nothing}\n .value=${live(displayValue)}\n @input=${this._handleInput}\n @keydown=${this.#handleKeyDown} />\n </div>\n `;\n }\n\n protected override renderDefaultTrailingIcon() {\n return svg`\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"1.25em\" viewBox=\"0 -960 960 960\" width=\"1.25em\" fill=\"currentColor\">\n <path d=\"M200-80q-33 0-56.5-23.5T120-160v-560q0-33 23.5-56.5T200-800h40v-80h80v80h320v-80h80v80h40q33 0 56.5 23.5T840-720v560q0 33-23.5 56.5T760-80H200Zm0-80h560v-400H200v400Zm0-480h560v-80H200v80Zm0 0v-80 80Z\"/>\n </svg>`;\n }\n\n protected override renderAfterContent() {\n return html`\n <u-menu\n positioning=${this.menuPositioning}\n autoclose=\"outside\"\n anchor-corner=\"end-start\"\n direction=\"down-start\"\n allow-overflow\n manualFocus\n @click=${this.#stopPropagation}>\n <u-range-calendar\n .value=${this._value}\n .locale=${this.locale}\n @input=${this.#handleCalendarInput}\n @change=${this.#handleCalendarChange}></u-range-calendar>\n </u-menu>\n `;\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n void this.#attach();\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this._trailingSlot?.removeEventListener('click', this.#toggleMenu);\n }\n\n protected override _handleInput(): void {\n super._handleInput();\n\n if (ISO_DATE_RANGE.test(this._value)) {\n this._calendar.value = this._value;\n }\n\n this.dispatchEvent(new InputEvent('input', { bubbles: true, composed: true }));\n }\n\n #handleKeyDown = (e: KeyboardEvent): void => {\n if (e.key === 'ArrowDown' && !this._menu.open) {\n e.preventDefault();\n this._menu.show();\n return;\n }\n\n if (e.key === 'Escape' && this._menu.open) {\n e.preventDefault();\n this._menu.close();\n return;\n }\n\n this._handleKeyDown(e);\n };\n\n #handleCalendarInput = (e: Event): void => {\n e.stopPropagation();\n const value = (e.target as UmRangeCalendar).value ?? '';\n this.value = value;\n this.dispatchEvent(new InputEvent('input', { bubbles: true, composed: true }));\n };\n\n #handleCalendarChange = (e: Event): void => {\n e.stopPropagation();\n\n if (!ISO_DATE_RANGE.test(this._value)) {\n return;\n }\n\n this.dispatchEvent(new Event('change', { bubbles: true }));\n this._menu.close();\n };\n\n #stopPropagation = (e: Event): void => {\n e.stopPropagation();\n };\n\n #toggleMenu = (): void => {\n if (this.disabled) {\n return;\n }\n this._menu.toggle();\n };\n\n async #attach(): Promise<void> {\n await this.updateComplete;\n this._menu.anchorElement = this._container;\n this._trailingSlot.addEventListener('click', this.#toggleMenu);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'u-range-datepicker': UmRangeDatepicker;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"range-datepicker.js","sourceRoot":"","sources":["../../src/datepicker/range-datepicker.ts"],"names":[],"mappings":"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","sourcesContent":["import { CSSResultGroup } from '@lit/reactive-element/css-tag';\n\nimport { html, HTMLTemplateResult, nothing, svg } from 'lit';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { live } from 'lit/directives/live.js';\n\nimport { RangeCalendar } from '../calendar/range-calendar.js';\nimport { Menu } from '../menu/menu.js';\nimport { NativeTextFieldWrapper } from '../shared/char-count-text-field/native-text-field-wrapper.js';\nimport { TextFieldBase } from '../shared/text-field-base/text-field-base.js';\n\nimport { styles as textFieldStyles } from '../text-field/text-field.styles.js';\nimport { styles } from './datepicker.styles.js';\nimport { DatepickerFormat, formatIsoDateRange } from './format.js';\n\nimport '../button/icon-button.js';\nimport '../calendar/range-calendar.js';\nimport '../menu/menu.js';\nimport '../ripple/ripple.js';\n\nconst ISO_DATE_RANGE = /^\\d{4}-\\d{2}-\\d{2} - \\d{4}-\\d{2}-\\d{2}$/;\n\n@customElement('u-range-datepicker')\nexport class RangeDatepicker extends NativeTextFieldWrapper {\n static override styles: CSSResultGroup = [TextFieldBase.styles, textFieldStyles, styles];\n\n /**\n * The BCP 47 locale tag forwarded to the underlying range calendar and used\n * for non-editable display formatting.\n * When `null`, the calendar falls back to the browser's `navigator.language`.\n */\n @property() locale: string | null = null;\n\n /**\n * Format used when displaying the value while the field is not editable.\n * Accepts `'short'`, `'medium'`, `'long'`, `'full'`, `'iso'`, or an\n * `Intl.DateTimeFormatOptions` object. Each end of the range is formatted\n * independently and joined with ` - `.\n */\n @property() format: DatepickerFormat = 'short';\n\n /**\n * Whether the input accepts manually-typed ranges. When `false` (default),\n * the field is read-only and clicking anywhere opens the calendar popover.\n * When `true`, the input accepts text in the `YYYY-MM-DD - YYYY-MM-DD` format;\n * the calendar popover is opened via the trailing icon.\n */\n @property({ type: Boolean, reflect: true }) editable = false;\n\n /**\n * Whether the input is read-only. When set, manual typing is disabled even\n * if `editable` is `true`; the calendar popover remains available.\n */\n @property({ type: Boolean, reflect: true }) readOnly = false;\n\n /**\n * The positioning strategy used by the calendar popover. Use `'fixed'`\n * when the datepicker is rendered inside a clipped/scrollable container.\n */\n @property({ reflect: true, attribute: 'menu-positioning' }) menuPositioning: 'relative' | 'fixed' = 'relative';\n\n @query('input') input!: HTMLInputElement;\n @query('u-menu', true) private _menu!: Menu;\n @query('u-range-calendar', true) private _calendar!: RangeCalendar;\n @query('.trailing-icon', true) private _trailingSlot!: HTMLSlotElement;\n\n protected override renderControl(): HTMLTemplateResult {\n const displayValue = this.editable\n ? this._value\n : formatIsoDateRange(this._value, this.format, this.locale);\n\n return html`\n ${this.editable\n ? nothing\n : html`\n <button\n class=\"trigger\"\n type=\"button\"\n aria-haspopup=\"dialog\"\n ?disabled=${this.disabled}\n @click=${this.#toggleMenu}></button>\n <u-ripple ?disabled=${this.disabled}></u-ripple>\n `}\n <div class=\"input\">\n <input\n type=\"text\"\n part=\"input\"\n id=${this.id || nothing}\n aria-labelledby=\"label\"\n aria-describedby=\"supporting-text\"\n aria-haspopup=\"dialog\"\n tabindex=${this.editable ? nothing : -1}\n ?readonly=${this.readOnly || !this.editable}\n ?disabled=${this.disabled}\n placeholder=${this.placeholder ?? nothing}\n .value=${live(displayValue)}\n @input=${this._handleInput}\n @keydown=${this.#handleKeyDown} />\n </div>\n `;\n }\n\n protected override renderDefaultTrailingIcon() {\n const icon = svg`\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"1em\" viewBox=\"0 -960 960 960\" width=\"1em\" fill=\"currentColor\">\n <path d=\"M200-80q-33 0-56.5-23.5T120-160v-560q0-33 23.5-56.5T200-800h40v-80h80v80h320v-80h80v80h40q33 0 56.5 23.5T840-720v560q0 33-23.5 56.5T760-80H200Zm0-80h560v-400H200v400Zm0-480h560v-80H200v80Zm0 0v-80 80Z\"/>\n </svg>`;\n\n // In editable mode the field itself is typeable, so the icon must be a\n // dedicated button for opening the calendar. In non-editable mode the\n // .trigger button covers the whole field, so the icon is just visual.\n return this.editable\n ? html`<u-icon-button\n type=\"button\"\n aria-haspopup=\"dialog\"\n aria-label=\"Open calendar\"\n ?disabled=${this.disabled}\n @click=${this.#toggleMenu}>${icon}</u-icon-button>`\n : icon;\n }\n\n protected override renderAfterContent() {\n return html`\n <u-menu\n positioning=${this.menuPositioning}\n autoclose=\"outside\"\n anchor-corner=\"end-start\"\n direction=\"down-end\"\n allow-overflow\n manualFocus\n @click=${this.#stopPropagation}>\n <u-range-calendar\n .value=${this._value}\n .locale=${this.locale}\n @input=${this.#handleCalendarInput}\n @change=${this.#handleCalendarChange}></u-range-calendar>\n </u-menu>\n `;\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n void this.#attach();\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this._trailingSlot?.removeEventListener('click', this.#toggleMenu);\n }\n\n protected override _handleInput(): void {\n super._handleInput();\n\n if (ISO_DATE_RANGE.test(this._value)) {\n this._calendar.value = this._value;\n }\n\n this.dispatchEvent(new InputEvent('input', { bubbles: true, composed: true }));\n }\n\n #handleKeyDown = (e: KeyboardEvent): void => {\n if (e.key === 'ArrowDown' && !this._menu.open) {\n e.preventDefault();\n this._menu.show();\n return;\n }\n\n if (e.key === 'Escape' && this._menu.open) {\n e.preventDefault();\n this._menu.close();\n return;\n }\n\n this._handleKeyDown(e);\n };\n\n #handleCalendarInput = (e: Event): void => {\n e.stopPropagation();\n const value = (e.target as RangeCalendar).value ?? '';\n this.value = value;\n this.dispatchEvent(new InputEvent('input', { bubbles: true, composed: true }));\n };\n\n #handleCalendarChange = (e: Event): void => {\n e.stopPropagation();\n\n if (!ISO_DATE_RANGE.test(this._value)) {\n return;\n }\n\n this.dispatchEvent(new Event('change', { bubbles: true }));\n this._menu.close();\n };\n\n #stopPropagation = (e: Event): void => {\n e.stopPropagation();\n };\n\n #toggleMenu = (): void => {\n if (this.disabled) {\n return;\n }\n this._menu.toggle();\n };\n\n async #attach(): Promise<void> {\n await this.updateComplete;\n this._menu.anchorElement = this._container;\n this._trailingSlot.addEventListener('click', this.#toggleMenu);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'u-range-datepicker': RangeDatepicker;\n }\n}\n"]}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { DialogBuilder } from './dialog-builder.js';
|
|
2
2
|
import { DialogButtonDef } from './dialog-button-def.js';
|
|
3
|
-
import {
|
|
3
|
+
import { Dialog } from './dialog.js';
|
|
4
4
|
export declare class ConfirmDialogBuilder extends DialogBuilder<ConfirmDialogBuilder, Promise<boolean>> {
|
|
5
5
|
#private;
|
|
6
6
|
static create(message: string): ConfirmDialogBuilder;
|
|
7
7
|
confirmButton(confirmButtonDef: DialogButtonDef): ConfirmDialogBuilder;
|
|
8
8
|
cancelButton(cancelButtonDef: DialogButtonDef): ConfirmDialogBuilder;
|
|
9
|
-
_addButtons(dialog:
|
|
10
|
-
protected innerShow(dialog:
|
|
9
|
+
_addButtons(dialog: Dialog): void;
|
|
10
|
+
protected innerShow(dialog: Dialog): Promise<boolean>;
|
|
11
11
|
}
|
|
12
12
|
//# sourceMappingURL=confirm-dialog-builder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"confirm-dialog-builder.d.ts","sourceRoot":"","sources":["../../src/dialog/confirm-dialog-builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"confirm-dialog-builder.d.ts","sourceRoot":"","sources":["../../src/dialog/confirm-dialog-builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,qBAAa,oBAAqB,SAAQ,aAAa,CAAC,oBAAoB,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;;IAC7F,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,oBAAoB;IAOpD,aAAa,CAAC,gBAAgB,EAAE,eAAe,GAAG,oBAAoB;IAKtE,YAAY,CAAC,eAAe,EAAE,eAAe,GAAG,oBAAoB;IAK3D,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;cAavB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAM/D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"confirm-dialog-builder.js","sourceRoot":"","sources":["../../src/dialog/confirm-dialog-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD,MAAM,OAAO,oBAAqB,SAAQ,aAAqD;IAC7F,MAAM,CAAC,MAAM,CAAC,OAAe;QAC3B,OAAO,IAAI,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,iBAAiB,CAAmB;IACpC,gBAAgB,CAAmB;IAEnC,aAAa,CAAC,gBAAiC;QAC7C,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAAY,CAAC,eAAgC;QAC3C,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IAEQ,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"confirm-dialog-builder.js","sourceRoot":"","sources":["../../src/dialog/confirm-dialog-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD,MAAM,OAAO,oBAAqB,SAAQ,aAAqD;IAC7F,MAAM,CAAC,MAAM,CAAC,OAAe;QAC3B,OAAO,IAAI,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,iBAAiB,CAAmB;IACpC,gBAAgB,CAAmB;IAEnC,aAAa,CAAC,gBAAiC;QAC7C,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAAY,CAAC,eAAgC;QAC3C,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IAEQ,WAAW,CAAC,MAAc;QAEjC,IAAI,CAAC,UAAU,CACb,MAAM,EACN,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE,EAC7E,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAE5B,IAAI,CAAC,UAAU,CACb,MAAM,EACN,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,gBAAgB,EAAE,EAC3E,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClC,CAAC;IAEkB,SAAS,CAAC,MAAc;QACzC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAExB,OAAO,IAAI,OAAO,CAAU,OAAO,CAAC,EAAE,CACpC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;IACnF,CAAC;CACF","sourcesContent":["import { config } from '../config.js';\nimport { DialogBuilder } from './dialog-builder.js';\nimport { DialogButtonDef } from './dialog-button-def.js';\nimport { Dialog } from './dialog.js';\n\nexport class ConfirmDialogBuilder extends DialogBuilder<ConfirmDialogBuilder, Promise<boolean>> {\n static create(message: string): ConfirmDialogBuilder {\n return new ConfirmDialogBuilder(message);\n }\n\n #confirmButtonDef?: DialogButtonDef;\n #cancelButtonDef?: DialogButtonDef;\n\n confirmButton(confirmButtonDef: DialogButtonDef): ConfirmDialogBuilder {\n this.#confirmButtonDef = confirmButtonDef;\n return this;\n }\n\n cancelButton(cancelButtonDef: DialogButtonDef): ConfirmDialogBuilder {\n this.#cancelButtonDef = cancelButtonDef;\n return this;\n }\n\n override _addButtons(dialog: Dialog): void {\n\n this._addButton(\n dialog,\n { ...config.dialog.confirmDefaults.confirmButton, ...this.#confirmButtonDef },\n () => dialog.close('ok'));\n\n this._addButton(\n dialog,\n { ...config.dialog.confirmDefaults.cancelButton, ...this.#cancelButtonDef },\n () => dialog.close('cancel'));\n }\n\n protected override innerShow(dialog: Dialog): Promise<boolean> {\n super.innerShow(dialog);\n\n return new Promise<boolean>(resolve =>\n dialog.addEventListener('closed', () => resolve(dialog.returnValue === 'ok')));\n }\n}\n"]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { DialogButtonDef } from './dialog-button-def.js';
|
|
2
|
-
import {
|
|
2
|
+
import { Dialog } from './dialog.js';
|
|
3
|
+
import '../button/button.js';
|
|
3
4
|
import './dialog.js';
|
|
4
5
|
export declare abstract class DialogBuilder<TBuilder extends DialogBuilder<any, any>, TReturn> {
|
|
5
6
|
#private;
|
|
@@ -7,9 +8,9 @@ export declare abstract class DialogBuilder<TBuilder extends DialogBuilder<any,
|
|
|
7
8
|
constructor(message: string);
|
|
8
9
|
headline(headline: string): TBuilder;
|
|
9
10
|
show(): TReturn;
|
|
10
|
-
protected innerShow(dialog:
|
|
11
|
-
protected abstract _addButtons(dialog:
|
|
11
|
+
protected innerShow(dialog: Dialog): TReturn | void;
|
|
12
|
+
protected abstract _addButtons(dialog: Dialog): void;
|
|
12
13
|
private _addHeadline;
|
|
13
|
-
protected _addButton(dialog:
|
|
14
|
+
protected _addButton(dialog: Dialog, buttonDef: DialogButtonDef, click: () => void): void;
|
|
14
15
|
}
|
|
15
16
|
//# sourceMappingURL=dialog-builder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialog-builder.d.ts","sourceRoot":"","sources":["../../src/dialog/dialog-builder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"dialog-builder.d.ts","sourceRoot":"","sources":["../../src/dialog/dialog-builder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,qBAAqB,CAAC;AAC7B,OAAO,aAAa,CAAC;AAErB,8BAAsB,aAAa,CAAC,QAAQ,SAAS,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,OAAO;;IAGvE,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,MAAM;IAI5C,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ;IAKpC,IAAI,IAAI,OAAO;IAUf,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI;IAQnD,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAEpD,OAAO,CAAC,YAAY;IAWpB,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,IAAI;CAmBnF"}
|
package/dialog/dialog-builder.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import DOMPurify from 'dompurify';
|
|
2
|
+
import '../button/button.js';
|
|
2
3
|
import './dialog.js';
|
|
3
4
|
export class DialogBuilder {
|
|
4
5
|
#headline;
|
|
@@ -33,9 +34,15 @@ export class DialogBuilder {
|
|
|
33
34
|
}
|
|
34
35
|
_addButton(dialog, buttonDef, click) {
|
|
35
36
|
const button = document.createElement('u-button');
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
if (buttonDef.variant !== undefined) {
|
|
38
|
+
button.variant = buttonDef.variant;
|
|
39
|
+
}
|
|
40
|
+
if (buttonDef.color !== undefined) {
|
|
41
|
+
button.color = buttonDef.color;
|
|
42
|
+
}
|
|
43
|
+
if (buttonDef.label !== undefined) {
|
|
44
|
+
button.textContent = buttonDef.label;
|
|
45
|
+
}
|
|
39
46
|
button.slot = 'actions';
|
|
40
47
|
button.addEventListener('click', click);
|
|
41
48
|
dialog.appendChild(button);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialog-builder.js","sourceRoot":"","sources":["../../src/dialog/dialog-builder.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,WAAW,CAAC;AAKlC,OAAO,aAAa,CAAC;AAErB,MAAM,OAAgB,aAAa;IACjC,SAAS,CAAU;IAEnB,YAA6B,OAAe;QAAf,YAAO,GAAP,OAAO,CAAQ;IAE5C,CAAC;IAED,QAAQ,CAAC,QAAgB;QACvB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,OAAO,IAA2B,CAAC;IACrC,CAAC;IAED,IAAI;QACF,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAClD,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEpD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC1B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAEzB,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAY,CAAC;IAC3C,CAAC;IAES,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"dialog-builder.js","sourceRoot":"","sources":["../../src/dialog/dialog-builder.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,WAAW,CAAC;AAKlC,OAAO,qBAAqB,CAAC;AAC7B,OAAO,aAAa,CAAC;AAErB,MAAM,OAAgB,aAAa;IACjC,SAAS,CAAU;IAEnB,YAA6B,OAAe;QAAf,YAAO,GAAP,OAAO,CAAQ;IAE5C,CAAC;IAED,QAAQ,CAAC,QAAgB;QACvB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,OAAO,IAA2B,CAAC;IACrC,CAAC;IAED,IAAI;QACF,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAClD,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEpD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC1B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAEzB,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAY,CAAC;IAC3C,CAAC;IAES,SAAS,CAAC,MAAc;QAChC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACzD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,CAAC,IAAI,EAAE,CAAC;QAEd,OAAO;IACT,CAAC;IAIO,YAAY,CAAC,MAAmB;QACtC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,MAAM,eAAe,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACvD,eAAe,CAAC,IAAI,GAAG,UAAU,CAAC;QAClC,eAAe,CAAC,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/D,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;IACtC,CAAC;IAES,UAAU,CAAC,MAAc,EAAE,SAA0B,EAAE,KAAiB;QAChF,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAElD,IAAI,SAAS,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACpC,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;QACrC,CAAC;QAED,IAAI,SAAS,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAClC,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;QACjC,CAAC;QAED,IAAI,SAAS,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAClC,MAAM,CAAC,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC;QACvC,CAAC;QAED,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC;QACxB,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACxC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;CACF","sourcesContent":["import DOMPurify from 'dompurify';\n\nimport { DialogButtonDef } from './dialog-button-def.js';\nimport { Dialog } from './dialog.js';\n\nimport '../button/button.js';\nimport './dialog.js';\n\nexport abstract class DialogBuilder<TBuilder extends DialogBuilder<any, any>, TReturn> {\n #headline?: string;\n\n constructor(private readonly message: string) {\n\n }\n\n headline(headline: string): TBuilder {\n this.#headline = headline;\n return this as unknown as TBuilder;\n }\n\n show(): TReturn {\n const dialog = document.createElement('u-dialog');\n dialog.innerHTML = DOMPurify.sanitize(this.message);\n\n this._addHeadline(dialog);\n this._addButtons(dialog);\n\n return this.innerShow(dialog) as TReturn;\n }\n\n protected innerShow(dialog: Dialog): TReturn | void {\n dialog.addEventListener('closed', () => dialog.remove());\n document.body.appendChild(dialog);\n dialog.show();\n\n return;\n }\n\n protected abstract _addButtons(dialog: Dialog): void;\n\n private _addHeadline(dialog: HTMLElement) {\n if (!this.#headline) {\n return;\n }\n\n const headlineElement = document.createElement('span');\n headlineElement.slot = 'headline';\n headlineElement.innerHTML = DOMPurify.sanitize(this.#headline);\n dialog.appendChild(headlineElement);\n }\n\n protected _addButton(dialog: Dialog, buttonDef: DialogButtonDef, click: () => void) {\n const button = document.createElement('u-button');\n\n if (buttonDef.variant !== undefined) {\n button.variant = buttonDef.variant;\n }\n\n if (buttonDef.color !== undefined) {\n button.color = buttonDef.color;\n }\n\n if (buttonDef.label !== undefined) {\n button.textContent = buttonDef.label;\n }\n\n button.slot = 'actions';\n button.addEventListener('click', click);\n dialog.appendChild(button);\n }\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ButtonColor, ButtonVariant } from '../button/button.js';
|
|
2
2
|
export interface DialogButtonDef {
|
|
3
|
-
variant?:
|
|
3
|
+
variant?: ButtonVariant;
|
|
4
4
|
label?: string;
|
|
5
|
-
color?:
|
|
5
|
+
color?: ButtonColor;
|
|
6
6
|
}
|
|
7
7
|
//# sourceMappingURL=dialog-button-def.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialog-button-def.d.ts","sourceRoot":"","sources":["../../src/dialog/dialog-button-def.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"dialog-button-def.d.ts","sourceRoot":"","sources":["../../src/dialog/dialog-button-def.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEjE,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialog-button-def.js","sourceRoot":"","sources":["../../src/dialog/dialog-button-def.ts"],"names":[],"mappings":"","sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"dialog-button-def.js","sourceRoot":"","sources":["../../src/dialog/dialog-button-def.ts"],"names":[],"mappings":"","sourcesContent":["import { ButtonColor, ButtonVariant } from '../button/button.js';\n\nexport interface DialogButtonDef {\n variant?: ButtonVariant;\n label?: string;\n color?: ButtonColor;\n}\n"]}
|