@universal-material/web 3.7.2 → 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 +20 -4
- package/app-bar/top-app-bar.d.ts.map +1 -1
- package/app-bar/top-app-bar.js +84 -33
- 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 +5 -2
- package/badge/badge.d.ts.map +1 -1
- package/badge/badge.js +9 -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 +5480 -2170
- package/button/button-base.d.ts +9 -2
- package/button/button-base.d.ts.map +1 -1
- package/button/button-base.js +12 -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 +10 -7
- package/button/button.d.ts.map +1 -1
- package/button/button.js +17 -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 +13 -7
- package/button/icon-button.d.ts.map +1 -1
- package/button/icon-button.js +14 -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 +6 -3
- package/button-field/button-field.d.ts.map +1 -1
- package/button-field/button-field.js +12 -9
- package/button-field/button-field.js.map +1 -1
- package/calendar/calendar-adapter.d.ts +3 -0
- package/calendar/calendar-adapter.d.ts.map +1 -1
- package/calendar/calendar-adapter.js.map +1 -1
- package/calendar/calendar-base.d.ts +18 -1
- package/calendar/calendar-base.d.ts.map +1 -1
- package/calendar/calendar-base.js +188 -25
- package/calendar/calendar-base.js.map +1 -1
- package/calendar/calendar.d.ts +6 -2
- package/calendar/calendar.d.ts.map +1 -1
- package/calendar/calendar.js +12 -8
- package/calendar/calendar.js.map +1 -1
- package/calendar/default-calendar-adapter.d.ts +3 -0
- package/calendar/default-calendar-adapter.d.ts.map +1 -1
- package/calendar/default-calendar-adapter.js +17 -5
- package/calendar/default-calendar-adapter.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 +7 -2
- package/card/card-content.d.ts.map +1 -1
- package/card/card-content.js +10 -5
- package/card/card-content.js.map +1 -1
- package/card/card-media.d.ts +5 -2
- package/card/card-media.d.ts.map +1 -1
- package/card/card-media.js +8 -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 +10 -3
- package/checkbox/checkbox.d.ts.map +1 -1
- package/checkbox/checkbox.js +14 -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 +8 -5
- package/chip/chip.d.ts.map +1 -1
- package/chip/chip.js +23 -20
- package/chip/chip.js.map +1 -1
- package/chip-field/chip-field.d.ts +6 -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 +17175 -9684
- package/datepicker/datepicker.d.ts +54 -3
- package/datepicker/datepicker.d.ts.map +1 -1
- package/datepicker/datepicker.js +202 -6
- 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/format.d.ts +19 -0
- package/datepicker/format.d.ts.map +1 -0
- package/datepicker/format.js +47 -0
- package/datepicker/format.js.map +1 -0
- package/datepicker/range-datepicker.d.ts +58 -0
- package/datepicker/range-datepicker.d.ts.map +1 -0
- package/datepicker/range-datepicker.js +212 -0
- package/datepicker/range-datepicker.js.map +1 -0
- 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 +10 -2
- package/dialog/dialog.d.ts.map +1 -1
- package/dialog/dialog.js +22 -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 +17 -3
- package/field/field-base.d.ts.map +1 -1
- package/field/field-base.js +30 -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 +7 -3
- package/field/field.d.ts.map +1 -1
- package/field/field.js +10 -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 +29 -1
- package/index.d.ts.map +1 -1
- package/index.js +29 -1
- package/index.js.map +1 -1
- package/list/list-item.d.ts +19 -2
- package/list/list-item.d.ts.map +1 -1
- package/list/list-item.js +29 -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 +9 -3
- package/menu/menu-item.d.ts.map +1 -1
- package/menu/menu-item.js +16 -10
- package/menu/menu-item.js.map +1 -1
- package/menu/menu.d.ts +18 -2
- package/menu/menu.d.ts.map +1 -1
- package/menu/menu.js +37 -18
- package/menu/menu.js.map +1 -1
- package/menu/menu.styles.d.ts.map +1 -1
- package/menu/menu.styles.js +5 -0
- package/menu/menu.styles.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-headline.styles.js +1 -1
- package/navigation/drawer-headline.styles.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-item.d.ts +8 -0
- package/overflow-menu/overflow-menu-item.d.ts.map +1 -1
- package/overflow-menu/overflow-menu-item.js +8 -0
- package/overflow-menu/overflow-menu-item.js.map +1 -1
- 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 +21 -5
- package/progress/circular-progress.d.ts +9 -2
- package/progress/circular-progress.d.ts.map +1 -1
- package/progress/circular-progress.js +9 -6
- package/progress/circular-progress.js.map +1 -1
- package/progress/progress-bar.d.ts +9 -2
- package/progress/progress-bar.d.ts.map +1 -1
- package/progress/progress-bar.js +9 -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 +6 -3
- package/radio/radio.d.ts.map +1 -1
- package/radio/radio.js +9 -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 +6 -3
- package/search/search.d.ts.map +1 -1
- package/search/search.js +10 -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 +9 -3
- package/select/option.d.ts.map +1 -1
- package/select/option.js +14 -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 +22 -12
- package/select/select.d.ts.map +1 -1
- package/select/select.js +81 -31
- package/select/select.js.map +1 -1
- package/shared/button-wrapper.d.ts +4 -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 +15 -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 +16 -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 +14 -1
- package/shared/selection-control/selection-control-list-item.js.map +1 -1
- package/shared/selection-control/selection-control.d.ts +10 -1
- package/shared/selection-control/selection-control.d.ts.map +1 -1
- package/shared/selection-control/selection-control.js +24 -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 +37 -2
- package/shared/text-field-base/text-field-base.d.ts.map +1 -1
- package/shared/text-field-base/text-field-base.js +66 -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 +13 -4
- package/snackbar/snackbar.d.ts.map +1 -1
- package/snackbar/snackbar.js +37 -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 +9 -6
- package/tab-bar/tab-bar.d.ts.map +1 -1
- package/tab-bar/tab-bar.js +43 -23
- package/tab-bar/tab-bar.js.map +1 -1
- package/tab-bar/tab.d.ts +10 -5
- package/tab-bar/tab.d.ts.map +1 -1
- package/tab-bar/tab.js +14 -9
- package/tab-bar/tab.js.map +1 -1
- package/text-area/text-area.d.ts +6 -3
- package/text-area/text-area.d.ts.map +1 -1
- package/text-area/text-area.js +12 -9
- package/text-area/text-area.js.map +1 -1
- package/text-field/text-field.d.ts +31 -3
- package/text-field/text-field.d.ts.map +1 -1
- package/text-field/text-field.js +53 -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-template-render.d.ts +4 -0
- package/typeahead/typeahead-template-render.d.ts.map +1 -1
- package/typeahead/typeahead-template-render.js +4 -0
- package/typeahead/typeahead-template-render.js.map +1 -1
- package/typeahead/typeahead.d.ts +14 -7
- package/typeahead/typeahead.d.ts.map +1 -1
- package/typeahead/typeahead.js +29 -18
- package/typeahead/typeahead.js.map +1 -1
- package/vscode.html-custom-data.json +1146 -326
|
@@ -4,38 +4,87 @@ import { property, state } from 'lit/decorators.js';
|
|
|
4
4
|
import { classMap } from 'lit/directives/class-map.js';
|
|
5
5
|
import { styles } from './calendar-base.styles.js';
|
|
6
6
|
import { DefaultCalendarAdapter } from './default-calendar-adapter.js';
|
|
7
|
-
export class
|
|
7
|
+
export class CalendarBase extends LitElement {
|
|
8
8
|
static { this.styles = [styles]; }
|
|
9
9
|
get year() {
|
|
10
10
|
return this._displayingMonthDate.getFullYear();
|
|
11
11
|
}
|
|
12
12
|
set year(year) {
|
|
13
|
-
this._displayingMonthDate.
|
|
14
|
-
this._displayingMonthDate = new Date(this._displayingMonthDate);
|
|
13
|
+
this._displayingMonthDate = new Date(year, this._displayingMonthDate.getMonth(), 1);
|
|
15
14
|
}
|
|
16
15
|
get month() {
|
|
17
16
|
return this._displayingMonthDate.getMonth();
|
|
18
17
|
}
|
|
19
18
|
set month(month) {
|
|
20
|
-
this._displayingMonthDate.
|
|
21
|
-
this._displayingMonthDate = new Date(this._displayingMonthDate);
|
|
19
|
+
this._displayingMonthDate = new Date(this._displayingMonthDate.getFullYear(), month, 1);
|
|
22
20
|
}
|
|
23
21
|
#currentDate;
|
|
24
22
|
constructor() {
|
|
25
23
|
super();
|
|
26
24
|
this.weekDays = [];
|
|
25
|
+
this._firstDayOfWeek = 0;
|
|
27
26
|
this.dateRenderer = null;
|
|
27
|
+
/**
|
|
28
|
+
* Whether to render dates from the previous and next months that
|
|
29
|
+
* fall inside the displayed weeks
|
|
30
|
+
*/
|
|
28
31
|
this.dateOutsideMonth = false;
|
|
32
|
+
/**
|
|
33
|
+
* Number of years displayed per page in the year picker view.
|
|
34
|
+
*/
|
|
35
|
+
this.yearRange = 24;
|
|
29
36
|
this.#currentDate = new Date();
|
|
37
|
+
this.view = 'day';
|
|
38
|
+
this._yearPageStart = 0;
|
|
39
|
+
/**
|
|
40
|
+
* The BCP 47 locale tag used to format month names and weekdays.
|
|
41
|
+
* When `null`, falls back to the browser's `navigator.language`.
|
|
42
|
+
*/
|
|
30
43
|
this.locale = null;
|
|
31
44
|
this._innerLocale = navigator.language;
|
|
32
45
|
this.adapter = new DefaultCalendarAdapter();
|
|
46
|
+
this.#toggleYearView = () => {
|
|
47
|
+
if (this.view === 'day') {
|
|
48
|
+
this._yearPageStart = this.#computeYearPageStart(this.year);
|
|
49
|
+
this.view = 'year';
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
if (this.view === 'month') {
|
|
53
|
+
this._yearPageStart = this.#computeYearPageStart(this.year);
|
|
54
|
+
this.view = 'year';
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
this.view = 'day';
|
|
58
|
+
};
|
|
59
|
+
this.#handlePrevClick = () => {
|
|
60
|
+
if (this.view === 'year') {
|
|
61
|
+
this._yearPageStart -= this.yearRange;
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
if (this.view === 'month') {
|
|
65
|
+
this.year -= 1;
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
this.#addMonth(-1);
|
|
69
|
+
};
|
|
70
|
+
this.#handleNextClick = () => {
|
|
71
|
+
if (this.view === 'year') {
|
|
72
|
+
this._yearPageStart += this.yearRange;
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
if (this.view === 'month') {
|
|
76
|
+
this.year += 1;
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
this.#addMonth(1);
|
|
80
|
+
};
|
|
33
81
|
this.#currentDate.setHours(0);
|
|
34
82
|
this.#currentDate.setMinutes(0);
|
|
35
83
|
this.#currentDate.setSeconds(0);
|
|
36
84
|
this.#currentDate.setMilliseconds(0);
|
|
37
85
|
this._displayingMonthDate = new Date(this.#currentDate);
|
|
38
86
|
this._displayingMonthDate.setDate(1);
|
|
87
|
+
this._yearPageStart = this.#computeYearPageStart(this.year);
|
|
39
88
|
}
|
|
40
89
|
connectedCallback() {
|
|
41
90
|
super.connectedCallback();
|
|
@@ -48,14 +97,29 @@ export class UmCalendarBase extends LitElement {
|
|
|
48
97
|
this.#setLocaleDependantProperties();
|
|
49
98
|
});
|
|
50
99
|
}
|
|
100
|
+
willUpdate(changed) {
|
|
101
|
+
if (changed.has('locale')) {
|
|
102
|
+
this._innerLocale = this.locale ?? navigator.language;
|
|
103
|
+
this.#setLocaleDependantProperties();
|
|
104
|
+
}
|
|
105
|
+
}
|
|
51
106
|
render() {
|
|
52
107
|
return html `
|
|
53
108
|
<div>
|
|
54
109
|
<u-button-set>
|
|
55
|
-
<u-button class="month-button" type="button" variant="text">
|
|
56
|
-
${this
|
|
110
|
+
<u-button class="month-button" type="button" variant="text" @click=${this.#toggleYearView}>
|
|
111
|
+
${this.#getHeaderLabel()}
|
|
112
|
+
<svg
|
|
113
|
+
class="month-button-icon ${this.view !== 'day' ? 'open' : ''}"
|
|
114
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
115
|
+
height="1.5em"
|
|
116
|
+
viewBox="0 -960 960 960"
|
|
117
|
+
width="1.5em"
|
|
118
|
+
fill="currentColor">
|
|
119
|
+
<path d="M480-360 280-560h400L480-360Z" />
|
|
120
|
+
</svg>
|
|
57
121
|
</u-button>
|
|
58
|
-
<u-icon-button class="previous-month-button" @click=${
|
|
122
|
+
<u-icon-button class="previous-month-button" @click=${this.#handlePrevClick}>
|
|
59
123
|
<svg
|
|
60
124
|
xmlns="http://www.w3.org/2000/svg"
|
|
61
125
|
height="1em"
|
|
@@ -65,7 +129,7 @@ export class UmCalendarBase extends LitElement {
|
|
|
65
129
|
<path d="M560-240 320-480l240-240 56 56-184 184 184 184-56 56Z" />
|
|
66
130
|
</svg>
|
|
67
131
|
</u-icon-button>
|
|
68
|
-
<u-icon-button @click=${
|
|
132
|
+
<u-icon-button @click=${this.#handleNextClick}>
|
|
69
133
|
<svg
|
|
70
134
|
xmlns="http://www.w3.org/2000/svg"
|
|
71
135
|
height="1em"
|
|
@@ -77,9 +141,26 @@ export class UmCalendarBase extends LitElement {
|
|
|
77
141
|
</u-icon-button>
|
|
78
142
|
</u-button-set>
|
|
79
143
|
</div>
|
|
144
|
+
${this.#renderBody()}
|
|
145
|
+
`;
|
|
146
|
+
}
|
|
147
|
+
#renderBody() {
|
|
148
|
+
if (this.view === 'year') {
|
|
149
|
+
return html `<div class="year-grid">${this.#renderYears()}</div>`;
|
|
150
|
+
}
|
|
151
|
+
if (this.view === 'month') {
|
|
152
|
+
return html `<div class="month-grid">${this.#renderMonths()}</div>`;
|
|
153
|
+
}
|
|
154
|
+
return html `
|
|
80
155
|
<div class="calendar ${this._getCalendarClassMap()}">${this.#renderWeekDays()}${this.#renderDays()}</div>
|
|
81
156
|
`;
|
|
82
157
|
}
|
|
158
|
+
#getHeaderLabel() {
|
|
159
|
+
if (this.view === 'month') {
|
|
160
|
+
return this.adapter.getYear(this.#getDisplayingMonthDate());
|
|
161
|
+
}
|
|
162
|
+
return this.adapter.getMonth(this.#getDisplayingMonthDate());
|
|
163
|
+
}
|
|
83
164
|
#renderWeekDays() {
|
|
84
165
|
return this.weekDays.map(weekDay => html `
|
|
85
166
|
<div class="calendar-item">
|
|
@@ -88,15 +169,16 @@ export class UmCalendarBase extends LitElement {
|
|
|
88
169
|
`);
|
|
89
170
|
}
|
|
90
171
|
#getDisplayingMonthDate() {
|
|
91
|
-
return
|
|
172
|
+
return new Date(this.year, this.month, 1);
|
|
92
173
|
}
|
|
93
174
|
#renderDays() {
|
|
94
|
-
const date = new Date(this._displayingMonthDate);
|
|
95
|
-
date.setDate(date.getDate() - date.getDay());
|
|
96
|
-
const month = this.month;
|
|
97
175
|
const year = this.year;
|
|
176
|
+
const month = this.month;
|
|
177
|
+
const firstOfMonth = new Date(year, month, 1);
|
|
178
|
+
const diffToFirstDayOfWeek = (firstOfMonth.getDay() - this._firstDayOfWeek + 7) % 7;
|
|
179
|
+
const date = new Date(year, month, 1 - diffToFirstDayOfWeek);
|
|
98
180
|
const daysTemplates = [];
|
|
99
|
-
|
|
181
|
+
for (let row = 0; row < 6; row++) {
|
|
100
182
|
for (let i = 0; i < 7; i++) {
|
|
101
183
|
const dateOutsideMonth = date.getMonth() !== month;
|
|
102
184
|
const dateClasses = this._getSelectedDateClasses(date);
|
|
@@ -107,31 +189,98 @@ export class UmCalendarBase extends LitElement {
|
|
|
107
189
|
dateClasses['date-outside-month'] = true;
|
|
108
190
|
}
|
|
109
191
|
const classes = classMap(dateClasses);
|
|
110
|
-
const
|
|
111
|
-
|
|
112
|
-
|
|
192
|
+
const renderDate = !dateOutsideMonth || this.dateOutsideMonth;
|
|
193
|
+
const dateTemplate = renderDate
|
|
194
|
+
? html `
|
|
113
195
|
<u-ripple></u-ripple>
|
|
114
196
|
<span class="date">
|
|
115
197
|
${this.dateRenderer
|
|
116
198
|
? this.dateRenderer(new Date(date), this.adapter.getDay(date))
|
|
117
199
|
: this.adapter.getDay(date)}
|
|
118
200
|
</span>
|
|
119
|
-
|
|
201
|
+
`
|
|
202
|
+
: null;
|
|
203
|
+
const click = renderDate ? this.#handleDateClick(new Date(date)) : null;
|
|
120
204
|
daysTemplates.push(html `
|
|
121
205
|
<div
|
|
122
206
|
class="calendar-item ${classes}"
|
|
123
|
-
@click=${
|
|
207
|
+
@click=${click}>
|
|
124
208
|
${dateTemplate}
|
|
125
209
|
</div>
|
|
126
210
|
`);
|
|
127
211
|
date.setDate(date.getDate() + 1);
|
|
128
212
|
}
|
|
129
|
-
}
|
|
213
|
+
}
|
|
130
214
|
return daysTemplates;
|
|
131
215
|
}
|
|
216
|
+
#renderYears() {
|
|
217
|
+
const templates = [];
|
|
218
|
+
const currentYear = this.#currentDate.getFullYear();
|
|
219
|
+
const selectedYear = this.year;
|
|
220
|
+
for (let i = 0; i < this.yearRange; i++) {
|
|
221
|
+
const year = this._yearPageStart + i;
|
|
222
|
+
const classes = classMap({
|
|
223
|
+
'year-cell': true,
|
|
224
|
+
'current-year': year === currentYear && year !== selectedYear,
|
|
225
|
+
'selected-year': year === selectedYear,
|
|
226
|
+
});
|
|
227
|
+
templates.push(html `
|
|
228
|
+
<div class=${classes} @click=${this.#handleYearClick(year)}>
|
|
229
|
+
<span class="year-label">
|
|
230
|
+
<u-ripple></u-ripple>
|
|
231
|
+
${year}
|
|
232
|
+
</span>
|
|
233
|
+
</div>
|
|
234
|
+
`);
|
|
235
|
+
}
|
|
236
|
+
return templates;
|
|
237
|
+
}
|
|
238
|
+
#renderMonths() {
|
|
239
|
+
const templates = [];
|
|
240
|
+
const currentYear = this.#currentDate.getFullYear();
|
|
241
|
+
const currentMonth = this.#currentDate.getMonth();
|
|
242
|
+
const selectedMonth = this.month;
|
|
243
|
+
const displayedYear = this.year;
|
|
244
|
+
for (let month = 0; month < 12; month++) {
|
|
245
|
+
const isCurrent = displayedYear === currentYear && month === currentMonth;
|
|
246
|
+
const isSelected = month === selectedMonth;
|
|
247
|
+
const classes = classMap({
|
|
248
|
+
'month-cell': true,
|
|
249
|
+
'current-month': isCurrent && !isSelected,
|
|
250
|
+
'selected-month': isSelected,
|
|
251
|
+
});
|
|
252
|
+
templates.push(html `
|
|
253
|
+
<div class=${classes} @click=${this.#handleMonthClick(month)}>
|
|
254
|
+
<span class="month-label">
|
|
255
|
+
<u-ripple></u-ripple>
|
|
256
|
+
${this.adapter.getMonthShort(month, this._innerLocale)}
|
|
257
|
+
</span>
|
|
258
|
+
</div>
|
|
259
|
+
`);
|
|
260
|
+
}
|
|
261
|
+
return templates;
|
|
262
|
+
}
|
|
132
263
|
#handleDateClick(date) {
|
|
133
264
|
return () => this._selectDate(date);
|
|
134
265
|
}
|
|
266
|
+
#handleYearClick(year) {
|
|
267
|
+
return () => {
|
|
268
|
+
this.year = year;
|
|
269
|
+
this.view = 'month';
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
#handleMonthClick(month) {
|
|
273
|
+
return () => {
|
|
274
|
+
this.month = month;
|
|
275
|
+
this.view = 'day';
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
#toggleYearView;
|
|
279
|
+
#handlePrevClick;
|
|
280
|
+
#handleNextClick;
|
|
281
|
+
#computeYearPageStart(year) {
|
|
282
|
+
return year - Math.floor(this.yearRange / 2);
|
|
283
|
+
}
|
|
135
284
|
_getCalendarClassMap() {
|
|
136
285
|
return null;
|
|
137
286
|
}
|
|
@@ -167,22 +316,36 @@ export class UmCalendarBase extends LitElement {
|
|
|
167
316
|
this.month += value;
|
|
168
317
|
}
|
|
169
318
|
#setLocaleDependantProperties() {
|
|
319
|
+
this.adapter.locale = this._innerLocale;
|
|
170
320
|
this.weekDays = this.adapter.getWeekDays(this._innerLocale);
|
|
321
|
+
this._firstDayOfWeek = this.adapter.getFirstDayOfWeek(this._innerLocale);
|
|
171
322
|
}
|
|
172
323
|
}
|
|
173
324
|
__decorate([
|
|
174
325
|
state()
|
|
175
|
-
],
|
|
326
|
+
], CalendarBase.prototype, "weekDays", void 0);
|
|
327
|
+
__decorate([
|
|
328
|
+
state()
|
|
329
|
+
], CalendarBase.prototype, "_firstDayOfWeek", void 0);
|
|
176
330
|
__decorate([
|
|
177
331
|
state()
|
|
178
|
-
],
|
|
332
|
+
], CalendarBase.prototype, "dateRenderer", void 0);
|
|
179
333
|
__decorate([
|
|
180
334
|
property({ type: Boolean })
|
|
181
|
-
],
|
|
335
|
+
], CalendarBase.prototype, "dateOutsideMonth", void 0);
|
|
336
|
+
__decorate([
|
|
337
|
+
property({ type: Number, attribute: 'year-range' })
|
|
338
|
+
], CalendarBase.prototype, "yearRange", void 0);
|
|
339
|
+
__decorate([
|
|
340
|
+
state()
|
|
341
|
+
], CalendarBase.prototype, "_displayingMonthDate", void 0);
|
|
342
|
+
__decorate([
|
|
343
|
+
state()
|
|
344
|
+
], CalendarBase.prototype, "view", void 0);
|
|
182
345
|
__decorate([
|
|
183
346
|
state()
|
|
184
|
-
],
|
|
347
|
+
], CalendarBase.prototype, "_yearPageStart", void 0);
|
|
185
348
|
__decorate([
|
|
186
349
|
property()
|
|
187
|
-
],
|
|
350
|
+
], CalendarBase.prototype, "locale", void 0);
|
|
188
351
|
//# sourceMappingURL=calendar-base.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calendar-base.js","sourceRoot":"","sources":["../../src/calendar/calendar-base.ts"],"names":[],"mappings":"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","sourcesContent":["import { CSSResultGroup } from '@lit/reactive-element/css-tag';\n\nimport { html, HTMLTemplateResult, LitElement } from 'lit';\nimport { DirectiveResult } from 'lit-html/directive.js';\nimport { ClassMapDirective } from 'lit-html/directives/class-map';\nimport { property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\n\nimport { styles } from './calendar-base.styles.js';\nimport { DefaultCalendarAdapter } from './default-calendar-adapter.js';\n\nexport abstract class UmCalendarBase extends LitElement {\n static override styles: CSSResultGroup = [styles];\n\n @state() weekDays: string[] = [];\n @state() dateRenderer: ((date: Date, day: string) => HTMLElement) | null = null;\n @property({ type: Boolean }) dateOutsideMonth = false;\n\n get year(): number {\n return this._displayingMonthDate.getFullYear();\n }\n\n set year(year: number) {\n this._displayingMonthDate.setFullYear(year);\n this._displayingMonthDate = new Date(this._displayingMonthDate);\n }\n\n get month(): number {\n return this._displayingMonthDate.getMonth();\n }\n\n set month(month: number) {\n this._displayingMonthDate.setMonth(month);\n this._displayingMonthDate = new Date(this._displayingMonthDate);\n }\n\n readonly #currentDate = new Date();\n @state() _displayingMonthDate: Date;\n\n @property() locale: string | null = null;\n _innerLocale: string = navigator.language;\n adapter = new DefaultCalendarAdapter();\n\n protected constructor() {\n super();\n\n this.#currentDate.setHours(0);\n this.#currentDate.setMinutes(0);\n this.#currentDate.setSeconds(0);\n this.#currentDate.setMilliseconds(0);\n this._displayingMonthDate = new Date(this.#currentDate);\n this._displayingMonthDate.setDate(1);\n }\n\n override connectedCallback() {\n super.connectedCallback();\n\n this.#setLocaleDependantProperties();\n\n window.addEventListener('languagechange', () => {\n if (this.locale !== null) {\n return;\n }\n\n this._innerLocale = navigator.language;\n this.#setLocaleDependantProperties();\n });\n }\n\n override render(): HTMLTemplateResult {\n return html`\n <div>\n <u-button-set>\n <u-button class=\"month-button\" type=\"button\" variant=\"text\">\n ${this.adapter.getMonth(this.#getDisplayingMonthDate())}\n </u-button>\n <u-icon-button class=\"previous-month-button\" @click=${() => this.#addMonth(-1)}>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"1em\"\n viewBox=\"0 -960 960 960\"\n width=\"1em\"\n fill=\"currentColor\">\n <path d=\"M560-240 320-480l240-240 56 56-184 184 184 184-56 56Z\" />\n </svg>\n </u-icon-button>\n <u-icon-button @click=${() => this.#addMonth(1)}>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"1em\"\n viewBox=\"0 -960 960 960\"\n width=\"1em\"\n fill=\"currentColor\">\n <path d=\"M504-480 320-664l56-56 240 240-240 240-56-56 184-184Z\" />\n </svg>\n </u-icon-button>\n </u-button-set>\n </div>\n <div class=\"calendar ${this._getCalendarClassMap()}\">${this.#renderWeekDays()}${this.#renderDays()}</div>\n `;\n }\n\n #renderWeekDays(): HTMLTemplateResult[] {\n return this.weekDays.map(\n weekDay =>\n html`\n <div class=\"calendar-item\">\n <span class=\"week-day\">${weekDay}</span>\n </div>\n `,\n );\n }\n\n #getDisplayingMonthDate(): Date {\n return this._getDateFromIsoDate(`${this.year}-${this.month + 1}-1`);\n }\n\n #renderDays(): HTMLTemplateResult[] {\n const date = new Date(this._displayingMonthDate);\n\n date.setDate(date.getDate() - date.getDay());\n\n const month = this.month;\n const year = this.year;\n\n const daysTemplates: HTMLTemplateResult[] = [];\n\n do {\n for (let i = 0; i < 7; i++) {\n const dateOutsideMonth = date.getMonth() !== month;\n\n const dateClasses = this._getSelectedDateClasses(date);\n\n if (!Object.keys(dateClasses).length && this.#currentDate.getTime() === date.getTime()) {\n dateClasses['current-date'] = true;\n }\n\n if (dateOutsideMonth) {\n dateClasses['date-outside-month'] = true;\n }\n\n const classes = classMap(dateClasses);\n\n const dateTemplate = dateOutsideMonth && !this.dateOutsideMonth\n ? null\n : html`\n <u-ripple></u-ripple>\n <span class=\"date\">\n ${this.dateRenderer\n ? this.dateRenderer(new Date(date), this.adapter.getDay(date))\n : this.adapter.getDay(date)}\n </span>\n `;\n\n daysTemplates.push(html`\n <div\n class=\"calendar-item ${classes}\"\n @click=${this.#handleDateClick(new Date(date))}>\n ${dateTemplate}\n </div>\n `);\n\n date.setDate(date.getDate() + 1);\n }\n } while (date.getMonth() <= month && date.getFullYear() <= year);\n\n return daysTemplates;\n }\n\n #handleDateClick(date: Date): () => void {\n return () => this._selectDate(date);\n }\n\n protected _getCalendarClassMap(): DirectiveResult<typeof ClassMapDirective> | null {\n return null;\n }\n\n protected abstract _selectDate(date: Date): void;\n protected abstract _getSelectedDateClasses(date: Date): Record<string, boolean>;\n\n protected _getDateFromIsoDate(isoDate: string): Date {\n const date = new Date(isoDate);\n const offsetMs = date.getTimezoneOffset() * 60 * 1000;\n date.setTime(date.getTime() + offsetMs);\n\n return date;\n }\n\n protected _getDateString(date: Date | null): string {\n\n if (!date) {\n return '';\n }\n\n return Intl\n .DateTimeFormat('en-CA', {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n })\n .format(date);\n }\n\n protected _getDateFromString(dateString: string): Date | null {\n if (!dateString) {\n return null;\n }\n\n const dateTime = Date.parse(dateString);\n\n if (!dateTime && dateTime !== 0) {\n return null;\n }\n\n return this._getDateFromIsoDate(dateString);\n }\n\n #addMonth(value: number): void {\n this.month += value;\n }\n\n #setLocaleDependantProperties(): void {\n this.weekDays = this.adapter.getWeekDays(this._innerLocale);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"calendar-base.js","sourceRoot":"","sources":["../../src/calendar/calendar-base.ts"],"names":[],"mappings":"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","sourcesContent":["import { CSSResultGroup } from '@lit/reactive-element/css-tag';\n\nimport { html, HTMLTemplateResult, LitElement } from 'lit';\nimport { DirectiveResult } from 'lit-html/directive.js';\nimport { ClassMapDirective } from 'lit-html/directives/class-map';\nimport { property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\n\nimport { styles } from './calendar-base.styles.js';\nimport { DefaultCalendarAdapter } from './default-calendar-adapter.js';\n\nexport type CalendarView = 'day' | 'month' | 'year';\n\nexport abstract class CalendarBase extends LitElement {\n static override styles: CSSResultGroup = [styles];\n\n @state() weekDays: string[] = [];\n @state() private _firstDayOfWeek = 0;\n @state() dateRenderer: ((date: Date, day: string) => HTMLElement) | null = null;\n /**\n * Whether to render dates from the previous and next months that\n * fall inside the displayed weeks\n */\n @property({ type: Boolean }) dateOutsideMonth = false;\n\n /**\n * Number of years displayed per page in the year picker view.\n */\n @property({ type: Number, attribute: 'year-range' }) yearRange = 24;\n\n get year(): number {\n return this._displayingMonthDate.getFullYear();\n }\n\n set year(year: number) {\n this._displayingMonthDate = new Date(year, this._displayingMonthDate.getMonth(), 1);\n }\n\n get month(): number {\n return this._displayingMonthDate.getMonth();\n }\n\n set month(month: number) {\n this._displayingMonthDate = new Date(this._displayingMonthDate.getFullYear(), month, 1);\n }\n\n readonly #currentDate = new Date();\n @state() _displayingMonthDate: Date;\n @state() view: CalendarView = 'day';\n @state() _yearPageStart = 0;\n\n /**\n * The BCP 47 locale tag used to format month names and weekdays.\n * When `null`, falls back to the browser's `navigator.language`.\n */\n @property() locale: string | null = null;\n _innerLocale: string = navigator.language;\n adapter = new DefaultCalendarAdapter();\n\n protected constructor() {\n super();\n\n this.#currentDate.setHours(0);\n this.#currentDate.setMinutes(0);\n this.#currentDate.setSeconds(0);\n this.#currentDate.setMilliseconds(0);\n this._displayingMonthDate = new Date(this.#currentDate);\n this._displayingMonthDate.setDate(1);\n this._yearPageStart = this.#computeYearPageStart(this.year);\n }\n\n override connectedCallback() {\n super.connectedCallback();\n\n this.#setLocaleDependantProperties();\n\n window.addEventListener('languagechange', () => {\n if (this.locale !== null) {\n return;\n }\n\n this._innerLocale = navigator.language;\n this.#setLocaleDependantProperties();\n });\n }\n\n override willUpdate(changed: Map<string, unknown>): void {\n if (changed.has('locale')) {\n this._innerLocale = this.locale ?? navigator.language;\n this.#setLocaleDependantProperties();\n }\n }\n\n override render(): HTMLTemplateResult {\n return html`\n <div>\n <u-button-set>\n <u-button class=\"month-button\" type=\"button\" variant=\"text\" @click=${this.#toggleYearView}>\n ${this.#getHeaderLabel()}\n <svg\n class=\"month-button-icon ${this.view !== 'day' ? 'open' : ''}\"\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"1.5em\"\n viewBox=\"0 -960 960 960\"\n width=\"1.5em\"\n fill=\"currentColor\">\n <path d=\"M480-360 280-560h400L480-360Z\" />\n </svg>\n </u-button>\n <u-icon-button class=\"previous-month-button\" @click=${this.#handlePrevClick}>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"1em\"\n viewBox=\"0 -960 960 960\"\n width=\"1em\"\n fill=\"currentColor\">\n <path d=\"M560-240 320-480l240-240 56 56-184 184 184 184-56 56Z\" />\n </svg>\n </u-icon-button>\n <u-icon-button @click=${this.#handleNextClick}>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"1em\"\n viewBox=\"0 -960 960 960\"\n width=\"1em\"\n fill=\"currentColor\">\n <path d=\"M504-480 320-664l56-56 240 240-240 240-56-56 184-184Z\" />\n </svg>\n </u-icon-button>\n </u-button-set>\n </div>\n ${this.#renderBody()}\n `;\n }\n\n #renderBody(): HTMLTemplateResult {\n if (this.view === 'year') {\n return html`<div class=\"year-grid\">${this.#renderYears()}</div>`;\n }\n\n if (this.view === 'month') {\n return html`<div class=\"month-grid\">${this.#renderMonths()}</div>`;\n }\n\n return html`\n <div class=\"calendar ${this._getCalendarClassMap()}\">${this.#renderWeekDays()}${this.#renderDays()}</div>\n `;\n }\n\n #getHeaderLabel(): string {\n if (this.view === 'month') {\n return this.adapter.getYear(this.#getDisplayingMonthDate());\n }\n\n return this.adapter.getMonth(this.#getDisplayingMonthDate());\n }\n\n #renderWeekDays(): HTMLTemplateResult[] {\n return this.weekDays.map(\n weekDay =>\n html`\n <div class=\"calendar-item\">\n <span class=\"week-day\">${weekDay}</span>\n </div>\n `,\n );\n }\n\n #getDisplayingMonthDate(): Date {\n return new Date(this.year, this.month, 1);\n }\n\n #renderDays(): HTMLTemplateResult[] {\n const year = this.year;\n const month = this.month;\n const firstOfMonth = new Date(year, month, 1);\n const diffToFirstDayOfWeek = (firstOfMonth.getDay() - this._firstDayOfWeek + 7) % 7;\n const date = new Date(year, month, 1 - diffToFirstDayOfWeek);\n\n const daysTemplates: HTMLTemplateResult[] = [];\n\n for (let row = 0; row < 6; row++) {\n for (let i = 0; i < 7; i++) {\n const dateOutsideMonth = date.getMonth() !== month;\n\n const dateClasses = this._getSelectedDateClasses(date);\n\n if (!Object.keys(dateClasses).length && this.#currentDate.getTime() === date.getTime()) {\n dateClasses['current-date'] = true;\n }\n\n if (dateOutsideMonth) {\n dateClasses['date-outside-month'] = true;\n }\n\n const classes = classMap(dateClasses);\n\n const renderDate = !dateOutsideMonth || this.dateOutsideMonth;\n const dateTemplate = renderDate\n ? html`\n <u-ripple></u-ripple>\n <span class=\"date\">\n ${this.dateRenderer\n ? this.dateRenderer(new Date(date), this.adapter.getDay(date))\n : this.adapter.getDay(date)}\n </span>\n `\n : null;\n\n const click = renderDate ? this.#handleDateClick(new Date(date)) : null;\n\n daysTemplates.push(html`\n <div\n class=\"calendar-item ${classes}\"\n @click=${click}>\n ${dateTemplate}\n </div>\n `);\n\n date.setDate(date.getDate() + 1);\n }\n }\n\n return daysTemplates;\n }\n\n #renderYears(): HTMLTemplateResult[] {\n const templates: HTMLTemplateResult[] = [];\n const currentYear = this.#currentDate.getFullYear();\n const selectedYear = this.year;\n\n for (let i = 0; i < this.yearRange; i++) {\n const year = this._yearPageStart + i;\n const classes = classMap({\n 'year-cell': true,\n 'current-year': year === currentYear && year !== selectedYear,\n 'selected-year': year === selectedYear,\n });\n\n templates.push(html`\n <div class=${classes} @click=${this.#handleYearClick(year)}>\n <span class=\"year-label\">\n <u-ripple></u-ripple>\n ${year}\n </span>\n </div>\n `);\n }\n\n return templates;\n }\n\n #renderMonths(): HTMLTemplateResult[] {\n const templates: HTMLTemplateResult[] = [];\n const currentYear = this.#currentDate.getFullYear();\n const currentMonth = this.#currentDate.getMonth();\n const selectedMonth = this.month;\n const displayedYear = this.year;\n\n for (let month = 0; month < 12; month++) {\n const isCurrent = displayedYear === currentYear && month === currentMonth;\n const isSelected = month === selectedMonth;\n\n const classes = classMap({\n 'month-cell': true,\n 'current-month': isCurrent && !isSelected,\n 'selected-month': isSelected,\n });\n\n templates.push(html`\n <div class=${classes} @click=${this.#handleMonthClick(month)}>\n <span class=\"month-label\">\n <u-ripple></u-ripple>\n ${this.adapter.getMonthShort(month, this._innerLocale)}\n </span>\n </div>\n `);\n }\n\n return templates;\n }\n\n #handleDateClick(date: Date): () => void {\n return () => this._selectDate(date);\n }\n\n #handleYearClick(year: number): () => void {\n return () => {\n this.year = year;\n this.view = 'month';\n };\n }\n\n #handleMonthClick(month: number): () => void {\n return () => {\n this.month = month;\n this.view = 'day';\n };\n }\n\n #toggleYearView = (): void => {\n if (this.view === 'day') {\n this._yearPageStart = this.#computeYearPageStart(this.year);\n this.view = 'year';\n return;\n }\n\n if (this.view === 'month') {\n this._yearPageStart = this.#computeYearPageStart(this.year);\n this.view = 'year';\n return;\n }\n\n this.view = 'day';\n };\n\n #handlePrevClick = (): void => {\n if (this.view === 'year') {\n this._yearPageStart -= this.yearRange;\n return;\n }\n\n if (this.view === 'month') {\n this.year -= 1;\n return;\n }\n\n this.#addMonth(-1);\n };\n\n #handleNextClick = (): void => {\n if (this.view === 'year') {\n this._yearPageStart += this.yearRange;\n return;\n }\n\n if (this.view === 'month') {\n this.year += 1;\n return;\n }\n\n this.#addMonth(1);\n };\n\n #computeYearPageStart(year: number): number {\n return year - Math.floor(this.yearRange / 2);\n }\n\n protected _getCalendarClassMap(): DirectiveResult<typeof ClassMapDirective> | null {\n return null;\n }\n\n protected abstract _selectDate(date: Date): void;\n protected abstract _getSelectedDateClasses(date: Date): Record<string, boolean>;\n\n protected _getDateFromIsoDate(isoDate: string): Date {\n const date = new Date(isoDate);\n const offsetMs = date.getTimezoneOffset() * 60 * 1000;\n date.setTime(date.getTime() + offsetMs);\n\n return date;\n }\n\n protected _getDateString(date: Date | null): string {\n\n if (!date) {\n return '';\n }\n\n return Intl\n .DateTimeFormat('en-CA', {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n })\n .format(date);\n }\n\n protected _getDateFromString(dateString: string): Date | null {\n if (!dateString) {\n return null;\n }\n\n const dateTime = Date.parse(dateString);\n\n if (!dateTime && dateTime !== 0) {\n return null;\n }\n\n return this._getDateFromIsoDate(dateString);\n }\n\n #addMonth(value: number): void {\n this.month += value;\n }\n\n #setLocaleDependantProperties(): void {\n this.adapter.locale = this._innerLocale;\n this.weekDays = this.adapter.getWeekDays(this._innerLocale);\n this._firstDayOfWeek = this.adapter.getFirstDayOfWeek(this._innerLocale);\n }\n}\n"]}
|
package/calendar/calendar.d.ts
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { CSSResultGroup } from '@lit/reactive-element/css-tag';
|
|
2
|
-
import {
|
|
3
|
-
export declare class
|
|
2
|
+
import { CalendarBase } from './calendar-base.js';
|
|
3
|
+
export declare class Calendar extends CalendarBase {
|
|
4
4
|
static styles: CSSResultGroup;
|
|
5
5
|
dateValue: Date | null;
|
|
6
|
+
/**
|
|
7
|
+
* The selected date as an ISO date string (`YYYY-MM-DD`), or an empty
|
|
8
|
+
* string when no date is selected
|
|
9
|
+
*/
|
|
6
10
|
get value(): string;
|
|
7
11
|
set value(value: string);
|
|
8
12
|
protected _selectDate(date: Date): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../src/calendar/calendar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAI/D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../src/calendar/calendar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAI/D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,qBACa,QAAS,SAAQ,YAAY;IACxC,OAAgB,MAAM,EAAE,cAAc,CAAiC;IAE9D,SAAS,EAAE,IAAI,GAAG,IAAI,CAAQ;IAEvC;;;OAGG;IACH,IACI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAEtB;cAEkB,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;cAe7B,uBAAuB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAMhF"}
|
package/calendar/calendar.js
CHANGED
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
2
|
import { customElement, property, state } from 'lit/decorators.js';
|
|
3
|
-
import {
|
|
3
|
+
import { CalendarBase } from './calendar-base.js';
|
|
4
4
|
import { styles } from './calendar.styles.js';
|
|
5
|
-
let
|
|
5
|
+
let Calendar = class Calendar extends CalendarBase {
|
|
6
6
|
constructor() {
|
|
7
7
|
super(...arguments);
|
|
8
8
|
this.dateValue = null;
|
|
9
9
|
}
|
|
10
|
-
static { this.styles = [styles,
|
|
10
|
+
static { this.styles = [styles, CalendarBase.styles]; }
|
|
11
|
+
/**
|
|
12
|
+
* The selected date as an ISO date string (`YYYY-MM-DD`), or an empty
|
|
13
|
+
* string when no date is selected
|
|
14
|
+
*/
|
|
11
15
|
get value() {
|
|
12
16
|
return this._getDateString(this.dateValue);
|
|
13
17
|
}
|
|
@@ -32,12 +36,12 @@ let UmCalendar = class UmCalendar extends UmCalendarBase {
|
|
|
32
36
|
};
|
|
33
37
|
__decorate([
|
|
34
38
|
state()
|
|
35
|
-
],
|
|
39
|
+
], Calendar.prototype, "dateValue", void 0);
|
|
36
40
|
__decorate([
|
|
37
41
|
property()
|
|
38
|
-
],
|
|
39
|
-
|
|
42
|
+
], Calendar.prototype, "value", null);
|
|
43
|
+
Calendar = __decorate([
|
|
40
44
|
customElement('u-calendar')
|
|
41
|
-
],
|
|
42
|
-
export {
|
|
45
|
+
], Calendar);
|
|
46
|
+
export { Calendar };
|
|
43
47
|
//# sourceMappingURL=calendar.js.map
|
package/calendar/calendar.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calendar.js","sourceRoot":"","sources":["../../src/calendar/calendar.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAEnE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"calendar.js","sourceRoot":"","sources":["../../src/calendar/calendar.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAGvC,IAAM,QAAQ,GAAd,MAAM,QAAS,SAAQ,YAAY;IAAnC;;QAGI,cAAS,GAAgB,IAAI,CAAC;IAoCzC,CAAC;aAtCiB,WAAM,GAAmB,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,AAAhD,CAAiD;IAIvE;;;OAGG;IAEH,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7C,CAAC;IAED,IAAI,KAAK,CAAC,KAAa;QACrB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC;IAEkB,WAAW,CAAC,IAAU;QACvC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAEtB,IAAI,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC/E,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAE3D,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvE,OAAO;QACT,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAEjC,CAAC;IAEkB,uBAAuB,CAAC,IAAU;QACnD,OAAO,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC,OAAO,EAAE;YACjD,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE;YAC3B,CAAC,CAAC,EAAE,CAAC;IAET,CAAC;;AAnCQ;IAAR,KAAK,EAAE;2CAA+B;AAOvC;IADC,QAAQ,EAAE;qCAGV;AAZU,QAAQ;IADpB,aAAa,CAAC,YAAY,CAAC;GACf,QAAQ,CAuCpB","sourcesContent":["import { CSSResultGroup } from '@lit/reactive-element/css-tag';\n\nimport { customElement, property, state } from 'lit/decorators.js';\n\nimport { CalendarBase } from './calendar-base.js';\nimport { styles } from './calendar.styles.js';\n\n@customElement('u-calendar')\nexport class Calendar extends CalendarBase {\n static override styles: CSSResultGroup = [styles, CalendarBase.styles];\n\n @state() dateValue: Date | null = null;\n\n /**\n * The selected date as an ISO date string (`YYYY-MM-DD`), or an empty\n * string when no date is selected\n */\n @property()\n get value(): string {\n return this._getDateString(this.dateValue);\n }\n\n set value(value: string) {\n this.dateValue = this._getDateFromString(value);\n }\n\n protected override _selectDate(date: Date): void {\n this.dateValue = date;\n\n this.dispatchEvent(new InputEvent('input', { bubbles: true, composed: true }));\n this.dispatchEvent(new Event('change', { bubbles: true }));\n\n if (this.month === date.getMonth() && this.year === date.getFullYear()) {\n return;\n }\n\n this.month = date.getMonth();\n this.year = date.getFullYear();\n\n }\n\n protected override _getSelectedDateClasses(date: Date): Record<string, boolean> {\n return this.dateValue?.getTime() === date.getTime()\n ? { 'selected-date': true }\n : {};\n\n }\n}\n"]}
|
|
@@ -4,7 +4,10 @@ export declare class DefaultCalendarAdapter implements CalendarAdapter {
|
|
|
4
4
|
weekDayFormat: 'long' | 'short' | 'narrow';
|
|
5
5
|
locale: string;
|
|
6
6
|
getWeekDays(locale: string): string[];
|
|
7
|
+
getFirstDayOfWeek(locale: string): number;
|
|
7
8
|
getDay(date: Date): string;
|
|
8
9
|
getMonth(date: Date): string;
|
|
10
|
+
getYear(date: Date): string;
|
|
11
|
+
getMonthShort(month: number, locale: string): string;
|
|
9
12
|
}
|
|
10
13
|
//# sourceMappingURL=default-calendar-adapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-calendar-adapter.d.ts","sourceRoot":"","sources":["../../src/calendar/default-calendar-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,qBAAa,sBAAuB,YAAW,eAAe;;IAC5D,aAAa,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAY;IACtD,MAAM,SAAW;IAEjB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE;
|
|
1
|
+
{"version":3,"file":"default-calendar-adapter.d.ts","sourceRoot":"","sources":["../../src/calendar/default-calendar-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,qBAAa,sBAAuB,YAAW,eAAe;;IAC5D,aAAa,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAY;IACtD,MAAM,SAAW;IAEjB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE;IAerC,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAazC,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAI1B,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAO5B,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAI3B,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;CAIrD"}
|
|
@@ -5,9 +5,8 @@ export class DefaultCalendarAdapter {
|
|
|
5
5
|
}
|
|
6
6
|
getWeekDays(locale) {
|
|
7
7
|
const date = new Date();
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
this.#setDateToFirstDayOfWeek(date, weekInfo.firstDay);
|
|
8
|
+
const firstDay = this.getFirstDayOfWeek(locale);
|
|
9
|
+
this.#setDateToFirstDayOfWeek(date, firstDay);
|
|
11
10
|
const weekDays = [];
|
|
12
11
|
for (let i = 0; i < 7; i++) {
|
|
13
12
|
weekDays.push(date.toLocaleDateString(locale, { weekday: this.weekDayFormat }));
|
|
@@ -15,8 +14,14 @@ export class DefaultCalendarAdapter {
|
|
|
15
14
|
}
|
|
16
15
|
return weekDays;
|
|
17
16
|
}
|
|
18
|
-
|
|
19
|
-
const
|
|
17
|
+
getFirstDayOfWeek(locale) {
|
|
18
|
+
const intlLocale = new Intl.Locale(locale);
|
|
19
|
+
const weekInfo = intlLocale.getWeekInfo ? intlLocale.getWeekInfo() : intlLocale.weekinfo;
|
|
20
|
+
// CLDR convention (1=Mon..7=Sun) → JS Date convention (0=Sun..6=Sat)
|
|
21
|
+
return weekInfo.firstDay % 7;
|
|
22
|
+
}
|
|
23
|
+
#setDateToFirstDayOfWeek(date, jsFirstDayOfWeek) {
|
|
24
|
+
const diffToFirstDayOfWeek = (jsFirstDayOfWeek - date.getDay() + 7) % 7;
|
|
20
25
|
date.setDate(date.getDate() + diffToFirstDayOfWeek);
|
|
21
26
|
}
|
|
22
27
|
getDay(date) {
|
|
@@ -28,5 +33,12 @@ export class DefaultCalendarAdapter {
|
|
|
28
33
|
year: 'numeric',
|
|
29
34
|
});
|
|
30
35
|
}
|
|
36
|
+
getYear(date) {
|
|
37
|
+
return date.toLocaleDateString(this.locale, { year: 'numeric' });
|
|
38
|
+
}
|
|
39
|
+
getMonthShort(month, locale) {
|
|
40
|
+
const date = new Date(2000, month, 1);
|
|
41
|
+
return date.toLocaleDateString(locale, { month: 'short' });
|
|
42
|
+
}
|
|
31
43
|
}
|
|
32
44
|
//# sourceMappingURL=default-calendar-adapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-calendar-adapter.js","sourceRoot":"","sources":["../../src/calendar/default-calendar-adapter.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,sBAAsB;IAAnC;QACE,kBAAa,GAAgC,QAAQ,CAAC;QACtD,WAAM,GAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"default-calendar-adapter.js","sourceRoot":"","sources":["../../src/calendar/default-calendar-adapter.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,sBAAsB;IAAnC;QACE,kBAAa,GAAgC,QAAQ,CAAC;QACtD,WAAM,GAAG,OAAO,CAAC;IAiDnB,CAAC;IA/CC,WAAW,CAAC,MAAc;QACxB,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAEhD,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;YAChF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QACnC,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,iBAAiB,CAAC,MAAc;QAC9B,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,CAAE,UAAkB,CAAC,QAAQ,CAAC;QAClG,qEAAqE;QACrE,OAAO,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED,wBAAwB,CAAC,IAAU,EAAE,gBAAwB;QAC3D,MAAM,oBAAoB,GAAG,CAAC,gBAAgB,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAExE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,oBAAoB,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,CAAC,IAAU;QACf,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,QAAQ,CAAC,IAAU;QACjB,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE;YAC1C,KAAK,EAAE,MAAM;YACb,IAAI,EAAE,SAAS;SAChB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,IAAU;QAChB,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,aAAa,CAAC,KAAa,EAAE,MAAc;QACzC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IAC7D,CAAC;CACF","sourcesContent":["import { CalendarAdapter } from './calendar-adapter.js';\n\nexport class DefaultCalendarAdapter implements CalendarAdapter {\n weekDayFormat: 'long' | 'short' | 'narrow' = 'narrow';\n locale = 'pt-br';\n\n getWeekDays(locale: string): string[] {\n const date = new Date();\n const firstDay = this.getFirstDayOfWeek(locale);\n\n this.#setDateToFirstDayOfWeek(date, firstDay);\n const weekDays: string[] = [];\n\n for (let i = 0; i < 7; i++) {\n weekDays.push(date.toLocaleDateString(locale, { weekday: this.weekDayFormat }));\n date.setDate(date.getDate() + 1);\n }\n\n return weekDays;\n }\n\n getFirstDayOfWeek(locale: string): number {\n const intlLocale = new Intl.Locale(locale);\n const weekInfo = intlLocale.getWeekInfo ? intlLocale.getWeekInfo() : (intlLocale as any).weekinfo;\n // CLDR convention (1=Mon..7=Sun) → JS Date convention (0=Sun..6=Sat)\n return weekInfo.firstDay % 7;\n }\n\n #setDateToFirstDayOfWeek(date: Date, jsFirstDayOfWeek: number): void {\n const diffToFirstDayOfWeek = (jsFirstDayOfWeek - date.getDay() + 7) % 7;\n\n date.setDate(date.getDate() + diffToFirstDayOfWeek);\n }\n\n getDay(date: Date): string {\n return date.toLocaleDateString(this.locale, { day: 'numeric' });\n }\n\n getMonth(date: Date): string {\n return date.toLocaleDateString(this.locale, {\n month: 'long',\n year: 'numeric',\n });\n }\n\n getYear(date: Date): string {\n return date.toLocaleDateString(this.locale, { year: 'numeric' });\n }\n\n getMonthShort(month: number, locale: string): string {\n const date = new Date(2000, month, 1);\n return date.toLocaleDateString(locale, { month: 'short' });\n }\n}\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { CSSResultGroup } from '@lit/reactive-element/css-tag';
|
|
2
2
|
import { DirectiveResult } from 'lit-html/directive.js';
|
|
3
3
|
import { ClassMapDirective } from 'lit-html/directives/class-map.js';
|
|
4
|
-
import {
|
|
5
|
-
export declare class
|
|
4
|
+
import { CalendarBase } from './calendar-base.js';
|
|
5
|
+
export declare class RangeCalendar extends CalendarBase {
|
|
6
6
|
#private;
|
|
7
7
|
static styles: CSSResultGroup;
|
|
8
8
|
startDateValue: Date | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"range-calendar.d.ts","sourceRoot":"","sources":["../../src/calendar/range-calendar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAIrE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"range-calendar.d.ts","sourceRoot":"","sources":["../../src/calendar/range-calendar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAIrE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,qBACa,aAAc,SAAQ,YAAY;;IAC7C,OAAgB,MAAM,EAAE,cAAc,CAAiC;IAE9D,cAAc,EAAE,IAAI,GAAG,IAAI,CAAQ;IACnC,YAAY,EAAE,IAAI,GAAG,IAAI,CAAQ;IAE1C,IACI,KAAK,IAAI,MAAM,GAAG,IAAI,CAMzB;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAoBtB;cAUkB,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;cAc7B,oBAAoB,IAAI,eAAe,CAAC,OAAO,iBAAiB,CAAC,GAAG,IAAI;cAgDxE,uBAAuB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAgBhF"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
2
|
import { customElement, property, state } from 'lit/decorators.js';
|
|
3
3
|
import { classMap } from 'lit/directives/class-map.js';
|
|
4
|
-
import {
|
|
4
|
+
import { CalendarBase } from './calendar-base.js';
|
|
5
5
|
import { styles } from './range-calendar.styles.js';
|
|
6
|
-
let
|
|
6
|
+
let RangeCalendar = class RangeCalendar extends CalendarBase {
|
|
7
7
|
constructor() {
|
|
8
8
|
super(...arguments);
|
|
9
9
|
this.startDateValue = null;
|
|
10
10
|
this.endDateValue = null;
|
|
11
11
|
}
|
|
12
|
-
static { this.styles = [styles,
|
|
12
|
+
static { this.styles = [styles, CalendarBase.styles]; }
|
|
13
13
|
get value() {
|
|
14
14
|
if (!this.startDateValue && !this.endDateValue) {
|
|
15
15
|
return '';
|
|
@@ -99,15 +99,15 @@ let UmRangeCalendar = class UmRangeCalendar extends UmCalendarBase {
|
|
|
99
99
|
};
|
|
100
100
|
__decorate([
|
|
101
101
|
state()
|
|
102
|
-
],
|
|
102
|
+
], RangeCalendar.prototype, "startDateValue", void 0);
|
|
103
103
|
__decorate([
|
|
104
104
|
state()
|
|
105
|
-
],
|
|
105
|
+
], RangeCalendar.prototype, "endDateValue", void 0);
|
|
106
106
|
__decorate([
|
|
107
107
|
property()
|
|
108
|
-
],
|
|
109
|
-
|
|
108
|
+
], RangeCalendar.prototype, "value", null);
|
|
109
|
+
RangeCalendar = __decorate([
|
|
110
110
|
customElement('u-range-calendar')
|
|
111
|
-
],
|
|
112
|
-
export {
|
|
111
|
+
], RangeCalendar);
|
|
112
|
+
export { RangeCalendar };
|
|
113
113
|
//# sourceMappingURL=range-calendar.js.map
|