@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
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json.schemastore.org/claude-code-plugin.json",
|
|
3
|
+
"name": "universal-material-web",
|
|
4
|
+
"version": "3.9.0",
|
|
5
|
+
"description": "Guidance skills for building UIs with @universal-material/web — Material 3 web components.",
|
|
6
|
+
"homepage": "https://github.com/universal-material/universal-material-web",
|
|
7
|
+
"author": {
|
|
8
|
+
"name": "Universal Material",
|
|
9
|
+
"url": "https://github.com/universal-material"
|
|
10
|
+
},
|
|
11
|
+
"license": "MIT"
|
|
12
|
+
}
|
package/README.md
CHANGED
|
@@ -25,6 +25,18 @@ import '@universal-material/web/checkbox/checkbox.js';
|
|
|
25
25
|
|
|
26
26
|
https://universal-material.github.io
|
|
27
27
|
|
|
28
|
+
### Claude Code skills
|
|
29
|
+
|
|
30
|
+
The package ships a Claude Code plugin with per-component guidance skills (setup, theming, scaffold, top app bar, navigation bar, drawer, buttons, FAB, dialog, text field, select, chips, selection controls, datepicker, menu, list, tab bar, snackbar, card, typeahead).
|
|
31
|
+
|
|
32
|
+
To enable them in a project that already depends on `@universal-material/web`, install the plugin from your `node_modules`:
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
/plugin install ./node_modules/@universal-material/web
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
The skills become available as `universal-material-web:<skill-name>` and Claude will surface the right one when you ask about a component (e.g. "build a layout with a top app bar and a FAB").
|
|
39
|
+
|
|
28
40
|
## Thanks
|
|
29
41
|
|
|
30
42
|
<img src="https://live.browserstack.com/images/opensource/browserstack-logo.svg" alt="BrowserStack Logo" width="490" height="106">
|
package/app-bar/top-app-bar.d.ts
CHANGED
|
@@ -1,15 +1,32 @@
|
|
|
1
1
|
import { PropertyValues } from '@lit/reactive-element';
|
|
2
2
|
import { HTMLTemplateResult, LitElement } from 'lit';
|
|
3
|
-
export declare class
|
|
3
|
+
export declare class TopAppBar extends LitElement {
|
|
4
4
|
#private;
|
|
5
5
|
static styles: import("lit").CSSResult[];
|
|
6
6
|
private _hasLeadingIcon;
|
|
7
7
|
private _hasTrailingIcon;
|
|
8
|
+
/**
|
|
9
|
+
* The positioning strategy of the app bar
|
|
10
|
+
*/
|
|
8
11
|
position: 'fixed' | 'absolute' | 'static';
|
|
12
|
+
/**
|
|
13
|
+
* The height variant of the app bar
|
|
14
|
+
*/
|
|
9
15
|
size: 'small' | 'medium' | 'large';
|
|
16
|
+
/**
|
|
17
|
+
* The headline text rendered inside the app bar
|
|
18
|
+
*/
|
|
10
19
|
headline: string;
|
|
20
|
+
/**
|
|
21
|
+
* The element to listen for scroll on to collapse the extended content.
|
|
22
|
+
* Accepts an `HTMLElement`, the id of an element, `'window'` to use the
|
|
23
|
+
* window scroll, or `'none'` to disable scroll handling. When unset, the
|
|
24
|
+
* app bar consumes the scroll container provided by an ancestor
|
|
25
|
+
* `u-scaffold`; if there's no scaffold, it falls back to `'window'`.
|
|
26
|
+
*/
|
|
11
27
|
get scrollContainer(): 'none' | 'window' | string | undefined;
|
|
12
28
|
set scrollContainer(idOrElement: string | HTMLElement | undefined);
|
|
29
|
+
private readonly _scrollContainerFromContext;
|
|
13
30
|
containerScrolled: boolean;
|
|
14
31
|
private readonly assignedLeadingIcons;
|
|
15
32
|
private readonly assignedTrailingIcons;
|
|
@@ -18,9 +35,8 @@ export declare class UmTopAppBar extends LitElement {
|
|
|
18
35
|
private readonly _headlineElement;
|
|
19
36
|
private containerSizeObserver;
|
|
20
37
|
private scrollContainerElement;
|
|
21
|
-
private getScrollContainer;
|
|
22
38
|
render(): HTMLTemplateResult;
|
|
23
|
-
protected updated(
|
|
39
|
+
protected updated(changedProperties: PropertyValues): void;
|
|
24
40
|
firstUpdated(changedProperties: PropertyValues): void;
|
|
25
41
|
connectedCallback(): void;
|
|
26
42
|
disconnectedCallback(): void;
|
|
@@ -28,7 +44,7 @@ export declare class UmTopAppBar extends LitElement {
|
|
|
28
44
|
}
|
|
29
45
|
declare global {
|
|
30
46
|
interface HTMLElementTagNameMap {
|
|
31
|
-
'u-top-app-bar':
|
|
47
|
+
'u-top-app-bar': TopAppBar;
|
|
32
48
|
}
|
|
33
49
|
}
|
|
34
50
|
//# sourceMappingURL=top-app-bar.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"top-app-bar.d.ts","sourceRoot":"","sources":["../../src/app-bar/top-app-bar.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"top-app-bar.d.ts","sourceRoot":"","sources":["../../src/app-bar/top-app-bar.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAQ,kBAAkB,EAAE,UAAU,EAAW,MAAM,KAAK,CAAC;AAapE,qBACa,SAAU,SAAQ,UAAU;;IACvC,OAAgB,MAAM,4BAAwB;IAErC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,gBAAgB,CAAS;IAE1C;;OAEG;IAEH,QAAQ,EAAE,OAAO,GAAG,UAAU,GAAG,QAAQ,CAAW;IAEpD;;OAEG;IAEH,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAW;IAE7C;;OAEG;IACS,QAAQ,SAAM;IAE1B;;;;;;OAMG;IACH,IACI,eAAe,IAAI,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAE5D;IAED,IAAI,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,EAGhE;IAID,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAA2B;IAE9D,iBAAiB,UAAS;IAGnC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAiB;IAGtD,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAiB;IAE5B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAe;IACzC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAe;IACxD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAe;IAEpE,OAAO,CAAC,qBAAqB,CAA+B;IAG5D,OAAO,CAAC,sBAAsB,CAA6B;IAiDlD,MAAM,IAAI,kBAAkB;cA0ClB,OAAO,CAAC,iBAAiB,EAAE,cAAc;IAUnD,YAAY,CAAC,iBAAiB,EAAE,cAAc;IAO9C,iBAAiB;IAWjB,oBAAoB;IAqC7B,OAAO,CAAC,MAAM,CAAC,aAAa;CAe7B;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,eAAe,EAAE,SAAS,CAAC;KAC5B;CACF"}
|
package/app-bar/top-app-bar.js
CHANGED
|
@@ -1,28 +1,42 @@
|
|
|
1
1
|
var _a;
|
|
2
|
-
var
|
|
2
|
+
var TopAppBar_1;
|
|
3
3
|
import { __decorate } from "tslib";
|
|
4
|
+
import { consume } from '@lit/context';
|
|
4
5
|
import { html, LitElement, nothing } from 'lit';
|
|
5
6
|
import { customElement, property, query, queryAssignedElements, state } from 'lit/decorators.js';
|
|
6
7
|
import { classMap } from 'lit/directives/class-map.js';
|
|
8
|
+
import { scrollContainerContext } from '../scaffold/scroll-container-context.js';
|
|
7
9
|
import { styles as baseStyles } from '../shared/base.styles.js';
|
|
8
10
|
import { styles } from './top-app-bar.styles.js';
|
|
9
|
-
let
|
|
11
|
+
let TopAppBar = class TopAppBar extends LitElement {
|
|
10
12
|
constructor() {
|
|
11
13
|
super(...arguments);
|
|
12
14
|
this._hasLeadingIcon = false;
|
|
13
15
|
this._hasTrailingIcon = false;
|
|
16
|
+
/**
|
|
17
|
+
* The positioning strategy of the app bar
|
|
18
|
+
*/
|
|
14
19
|
this.position = 'fixed';
|
|
20
|
+
/**
|
|
21
|
+
* The height variant of the app bar
|
|
22
|
+
*/
|
|
15
23
|
this.size = 'small';
|
|
24
|
+
/**
|
|
25
|
+
* The headline text rendered inside the app bar
|
|
26
|
+
*/
|
|
16
27
|
this.headline = '';
|
|
17
28
|
this.containerScrolled = false;
|
|
18
29
|
this.containerSizeObserver = null;
|
|
30
|
+
this.#explicitScrollContainer = undefined;
|
|
19
31
|
this.scrollContainerElement = null;
|
|
20
32
|
this.#updateScroll = () => {
|
|
21
33
|
const container = this.scrollContainerElement ?? window;
|
|
22
34
|
const extendedContentHeight = Math.max(this._extendedContent?.offsetHeight ?? 0, 0);
|
|
23
|
-
const scrollTop =
|
|
35
|
+
const scrollTop = TopAppBar_1._getScrollTop(container);
|
|
24
36
|
this.containerScrolled = scrollTop > extendedContentHeight;
|
|
25
|
-
this._headlineElement
|
|
37
|
+
if (this._headlineElement) {
|
|
38
|
+
this._headlineElement.style.opacity = scrollTop >= extendedContentHeight ? '1' : '0';
|
|
39
|
+
}
|
|
26
40
|
if (extendedContentHeight === 0) {
|
|
27
41
|
return;
|
|
28
42
|
}
|
|
@@ -34,27 +48,51 @@ let UmTopAppBar = class UmTopAppBar extends LitElement {
|
|
|
34
48
|
this._extendedContent.style.opacity = 1 - scrollTop / scrollOffset + '';
|
|
35
49
|
};
|
|
36
50
|
}
|
|
37
|
-
static {
|
|
51
|
+
static { TopAppBar_1 = this; }
|
|
38
52
|
static { this.styles = [baseStyles, styles]; }
|
|
53
|
+
/**
|
|
54
|
+
* The element to listen for scroll on to collapse the extended content.
|
|
55
|
+
* Accepts an `HTMLElement`, the id of an element, `'window'` to use the
|
|
56
|
+
* window scroll, or `'none'` to disable scroll handling. When unset, the
|
|
57
|
+
* app bar consumes the scroll container provided by an ancestor
|
|
58
|
+
* `u-scaffold`; if there's no scaffold, it falls back to `'window'`.
|
|
59
|
+
*/
|
|
39
60
|
get scrollContainer() {
|
|
40
61
|
return this.attributes.getNamedItem('scrollContainer')?.value;
|
|
41
62
|
}
|
|
42
63
|
set scrollContainer(idOrElement) {
|
|
43
|
-
this
|
|
44
|
-
|
|
64
|
+
this.#explicitScrollContainer = idOrElement;
|
|
65
|
+
this.#resolveScrollContainer();
|
|
66
|
+
}
|
|
67
|
+
#explicitScrollContainer;
|
|
68
|
+
#resolveScrollContainer() {
|
|
69
|
+
const next = this.#computeScrollTarget();
|
|
70
|
+
if (next === this.scrollContainerElement) {
|
|
45
71
|
return;
|
|
46
72
|
}
|
|
47
|
-
this.scrollContainerElement
|
|
73
|
+
this.scrollContainerElement?.removeEventListener('scroll', this.#updateScroll);
|
|
74
|
+
this.scrollContainerElement = next;
|
|
48
75
|
this.scrollContainerElement?.addEventListener('scroll', this.#updateScroll);
|
|
76
|
+
this.#updateScroll();
|
|
49
77
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
78
|
+
#computeScrollTarget() {
|
|
79
|
+
const explicit = this.#explicitScrollContainer;
|
|
80
|
+
if (explicit === 'none') {
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
if (explicit instanceof HTMLElement) {
|
|
84
|
+
return explicit;
|
|
85
|
+
}
|
|
86
|
+
if (typeof explicit === 'string' && explicit.length > 0) {
|
|
87
|
+
if (explicit === 'window') {
|
|
88
|
+
return window;
|
|
89
|
+
}
|
|
90
|
+
return document.getElementById(explicit);
|
|
53
91
|
}
|
|
54
|
-
if (
|
|
55
|
-
return
|
|
92
|
+
if (this._scrollContainerFromContext) {
|
|
93
|
+
return this._scrollContainerFromContext;
|
|
56
94
|
}
|
|
57
|
-
return
|
|
95
|
+
return window;
|
|
58
96
|
}
|
|
59
97
|
#handleLeadingIconSlotChange() {
|
|
60
98
|
this._hasLeadingIcon = this.assignedLeadingIcons.length > 0;
|
|
@@ -100,8 +138,11 @@ let UmTopAppBar = class UmTopAppBar extends LitElement {
|
|
|
100
138
|
${this.size !== 'small' ? extendedContent : nothing}
|
|
101
139
|
`;
|
|
102
140
|
}
|
|
103
|
-
updated(
|
|
104
|
-
super.updated(
|
|
141
|
+
updated(changedProperties) {
|
|
142
|
+
super.updated(changedProperties);
|
|
143
|
+
if (changedProperties.has('_scrollContainerFromContext')) {
|
|
144
|
+
this.#resolveScrollContainer();
|
|
145
|
+
}
|
|
105
146
|
this.#updateScroll();
|
|
106
147
|
}
|
|
107
148
|
firstUpdated(changedProperties) {
|
|
@@ -112,11 +153,17 @@ let UmTopAppBar = class UmTopAppBar extends LitElement {
|
|
|
112
153
|
}
|
|
113
154
|
connectedCallback() {
|
|
114
155
|
super.connectedCallback();
|
|
115
|
-
|
|
156
|
+
const attr = this.attributes.getNamedItem('scrollContainer')?.value;
|
|
157
|
+
if (attr !== undefined && this.#explicitScrollContainer === undefined) {
|
|
158
|
+
this.#explicitScrollContainer = attr;
|
|
159
|
+
}
|
|
160
|
+
this.#resolveScrollContainer();
|
|
116
161
|
}
|
|
117
162
|
disconnectedCallback() {
|
|
118
163
|
super.disconnectedCallback();
|
|
119
|
-
this.
|
|
164
|
+
this.scrollContainerElement?.removeEventListener('scroll', this.#updateScroll);
|
|
165
|
+
this.scrollContainerElement = null;
|
|
166
|
+
this.containerSizeObserver?.disconnect();
|
|
120
167
|
this.containerSizeObserver = null;
|
|
121
168
|
}
|
|
122
169
|
#updateScroll;
|
|
@@ -135,42 +182,46 @@ let UmTopAppBar = class UmTopAppBar extends LitElement {
|
|
|
135
182
|
};
|
|
136
183
|
__decorate([
|
|
137
184
|
state()
|
|
138
|
-
],
|
|
185
|
+
], TopAppBar.prototype, "_hasLeadingIcon", void 0);
|
|
139
186
|
__decorate([
|
|
140
187
|
state()
|
|
141
|
-
],
|
|
188
|
+
], TopAppBar.prototype, "_hasTrailingIcon", void 0);
|
|
142
189
|
__decorate([
|
|
143
190
|
property({ reflect: true })
|
|
144
|
-
],
|
|
191
|
+
], TopAppBar.prototype, "position", void 0);
|
|
145
192
|
__decorate([
|
|
146
193
|
property({ reflect: true })
|
|
147
|
-
],
|
|
194
|
+
], TopAppBar.prototype, "size", void 0);
|
|
148
195
|
__decorate([
|
|
149
196
|
property()
|
|
150
|
-
],
|
|
197
|
+
], TopAppBar.prototype, "headline", void 0);
|
|
151
198
|
__decorate([
|
|
152
199
|
property({ reflect: true })
|
|
153
|
-
],
|
|
200
|
+
], TopAppBar.prototype, "scrollContainer", null);
|
|
201
|
+
__decorate([
|
|
202
|
+
consume({ context: scrollContainerContext, subscribe: true }),
|
|
203
|
+
state()
|
|
204
|
+
], TopAppBar.prototype, "_scrollContainerFromContext", void 0);
|
|
154
205
|
__decorate([
|
|
155
206
|
state()
|
|
156
|
-
],
|
|
207
|
+
], TopAppBar.prototype, "containerScrolled", void 0);
|
|
157
208
|
__decorate([
|
|
158
209
|
queryAssignedElements({ slot: 'leading-icon', flatten: true })
|
|
159
|
-
],
|
|
210
|
+
], TopAppBar.prototype, "assignedLeadingIcons", void 0);
|
|
160
211
|
__decorate([
|
|
161
212
|
queryAssignedElements({ slot: 'trailing-icon', flatten: true })
|
|
162
|
-
],
|
|
213
|
+
], TopAppBar.prototype, "assignedTrailingIcons", void 0);
|
|
163
214
|
__decorate([
|
|
164
215
|
query('.container', true)
|
|
165
|
-
],
|
|
216
|
+
], TopAppBar.prototype, "_container", void 0);
|
|
166
217
|
__decorate([
|
|
167
218
|
query('.extended-content')
|
|
168
|
-
],
|
|
219
|
+
], TopAppBar.prototype, "_extendedContent", void 0);
|
|
169
220
|
__decorate([
|
|
170
221
|
query('.headline')
|
|
171
|
-
],
|
|
172
|
-
|
|
222
|
+
], TopAppBar.prototype, "_headlineElement", void 0);
|
|
223
|
+
TopAppBar = TopAppBar_1 = __decorate([
|
|
173
224
|
customElement('u-top-app-bar')
|
|
174
|
-
],
|
|
175
|
-
export {
|
|
225
|
+
], TopAppBar);
|
|
226
|
+
export { TopAppBar };
|
|
176
227
|
//# sourceMappingURL=top-app-bar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"top-app-bar.js","sourceRoot":"","sources":["../../src/app-bar/top-app-bar.ts"],"names":[],"mappings":";;;AAEA,OAAO,EAAE,IAAI,EAAsB,UAAU,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACjG,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAG1C,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,UAAU;IAApC;;QAGY,oBAAe,GAAG,KAAK,CAAC;QACxB,qBAAgB,GAAG,KAAK,CAAC;QAG1C,aAAQ,GAAoC,OAAO,CAAC;QAGpD,SAAI,GAAiC,OAAO,CAAC;QAEjC,aAAQ,GAAG,EAAE,CAAC;QAkBjB,sBAAiB,GAAG,KAAK,CAAC;QAY3B,0BAAqB,GAA0B,IAAI,CAAC;QAEpD,2BAAsB,GAGnB,IAAI,CAAC;QA8FP,kBAAa,GAAG,GAAG,EAAE;YAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,sBAAsB,IAAI,MAAM,CAAC;YAExD,MAAM,qBAAqB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,YAAY,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAEpF,MAAM,SAAS,GAAG,aAAW,CAAC,aAAa,CAAC,SAAgB,CAAC,CAAC;YAE9D,IAAI,CAAC,iBAAiB,GAAG,SAAS,GAAG,qBAAqB,CAAC;YAE3D,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,GAAG,SAAS,IAAI,qBAAqB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YAErF,IAAI,qBAAqB,KAAK,CAAC,EAAE,CAAC;gBAChC,OAAO;YACT,CAAC;YAED,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,GAAG,GAAG,CAAC;YAE9D,IAAI,SAAS,GAAG,YAAY,EAAE,CAAC;gBAC7B,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;gBAC1C,OAAO;YACT,CAAC;YAED,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,GAAG,SAAS,GAAG,YAAY,GAAG,EAAE,CAAC;QAC1E,CAAC,CAAC;IAiBJ,CAAC;;aApLiB,WAAM,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,AAAvB,CAAwB;IAc9C,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,iBAAiB,CAAC,EAAE,KAAK,CAAC;IAChE,CAAC;IAED,IAAI,eAAe,CAAC,WAA6C;QAC/D,IAAI,CAAC,sBAAsB,EAAE,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAE/E,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAE,CAAC;QACpE,IAAI,CAAC,sBAAsB,EAAE,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAC9E,CAAC;IAqBO,kBAAkB,CAAC,WAA6C;QAMtE,IAAI,WAAW,YAAY,WAAW,EAAE,CAAC;YACvC,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,OAAO,QAAQ,CAAC,cAAc,CAAC,WAAY,CAAE,CAAC;IAChD,CAAC;IAED,4BAA4B;QAC1B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9D,CAAC;IAED,6BAA6B;QAC3B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC,CAAC;IAChE,CAAC;IAEQ,MAAM;QACb,MAAM,eAAe,GAAG,IAAI,CAAA;;wCAEQ,IAAI,CAAC,QAAQ;;KAEhD,CAAC;QAEF,MAAM,gBAAgB,GAAG,QAAQ,CAAC;YAChC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI;YACrB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI;YACjB,QAAQ,EAAE,IAAI,CAAC,iBAAiB;YAChC,kBAAkB,EAAE,IAAI,CAAC,eAAe;YACxC,mBAAmB,EAAE,IAAI,CAAC,gBAAgB;SAC3C,CAAC,CAAC;QAEH,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,KAAK,QAAQ;YAC9C,CAAC,CAAC,IAAI,CAAA,6BAA6B;YACnC,CAAC,CAAC,OAAO,CAAC;QAEZ,OAAO,IAAI,CAAA;QACP,aAAa;8BACS,gBAAgB;;;qDAGO,IAAI,CAAC,4BAA4B;;;;sBAIhE,IAAI,CAAC,QAAQ;;;;;sDAKmB,IAAI,CAAC,6BAA6B;;;;;QAKhF,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO;KACpD,CAAC;IACJ,CAAC;IAEkB,OAAO,CAAC,kBAAkC;QAC3D,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAClC,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAEQ,YAAY,CAAC,iBAAiC;QACrD,KAAK,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;QACtC,IAAI,CAAC,qBAAqB,GAAG,IAAI,cAAc,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC;QACxF,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACpD,IAAI,CAAC,yBAAyB,EAAE,CAAC;IACnC,CAAC;IAEQ,iBAAiB;QACxB,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAE1B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,IAAI,QAAQ,CAAC;IAC1D,CAAC;IAEQ,oBAAoB;QAC3B,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAE7B,IAAI,CAAC,qBAAsB,CAAC,UAAU,EAAE,CAAC;QACzC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;IACpC,CAAC;IAEQ,aAAa,CAuBpB;IAEM,MAAM,CAAC,aAAa,CAAC,SAA+B;QAC1D,IAAI,OAAO,SAAS,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC1C,OAAO,SAAS,CAAC,OAAO,CAAC;QAC3B,CAAC;QAED,IAAI,OAAO,SAAS,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;YAC5C,OAAO,SAAS,CAAC,SAAS,CAAC;QAC7B,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;IACjC,CAAC;IAED,yBAAyB;QACvB,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,mBAAmB,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,IAAI,CAAC,CAAC;IACnF,CAAC;;AAjLgB;IAAhB,KAAK,EAAE;oDAAiC;AACxB;IAAhB,KAAK,EAAE;qDAAkC;AAG1C;IADC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;6CACwB;AAGpD;IADC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;yCACiB;AAEjC;IAAX,QAAQ,EAAE;6CAAe;AAG1B;IADC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;kDAG3B;AAaQ;IAAR,KAAK,EAAE;sDAA2B;AAGlB;IADhB,qBAAqB,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;yDACT;AAGrC;IADhB,qBAAqB,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;0DACT;AAEX;IAA3C,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC;+CAA2C;AACxB;IAA5C,KAAK,CAAC,mBAAmB,CAAC;qDAAiD;AACvC;IAApC,KAAK,CAAC,WAAW,CAAC;qDAAiD;AAxCzD,WAAW;IADvB,aAAa,CAAC,eAAe,CAAC;GAClB,WAAW,CAqLvB","sourcesContent":["import { PropertyValues } from '@lit/reactive-element';\n\nimport { html, HTMLTemplateResult, LitElement, nothing } from 'lit';\nimport { customElement, property, query, queryAssignedElements, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\n\nimport { styles as baseStyles } from '../shared/base.styles.js';\nimport { styles } from './top-app-bar.styles.js';\n\n@customElement('u-top-app-bar')\nexport class UmTopAppBar extends LitElement {\n static override styles = [baseStyles, styles];\n\n @state() private _hasLeadingIcon = false;\n @state() private _hasTrailingIcon = false;\n\n @property({ reflect: true })\n position: 'fixed' | 'absolute' | 'static' = 'fixed';\n\n @property({ reflect: true })\n size: 'small' | 'medium' | 'large' = 'small';\n\n @property() headline = '';\n\n @property({ reflect: true })\n get scrollContainer(): 'none' | 'window' | string | undefined {\n return this.attributes.getNamedItem('scrollContainer')?.value;\n }\n\n set scrollContainer(idOrElement: string | HTMLElement | undefined) {\n this.scrollContainerElement?.removeEventListener('scroll', this.#updateScroll);\n\n if (idOrElement === 'none') {\n return;\n }\n\n this.scrollContainerElement = this.getScrollContainer(idOrElement)!;\n this.scrollContainerElement?.addEventListener('scroll', this.#updateScroll);\n }\n\n @state() containerScrolled = false;\n\n @queryAssignedElements({ slot: 'leading-icon', flatten: true })\n private readonly assignedLeadingIcons!: HTMLElement[];\n\n @queryAssignedElements({ slot: 'trailing-icon', flatten: true })\n private readonly assignedTrailingIcons!: HTMLElement[];\n\n @query('.container', true) private readonly _container!: HTMLElement;\n @query('.extended-content') private readonly _extendedContent!: HTMLElement;\n @query('.headline') private readonly _headlineElement!: HTMLElement;\n\n private containerSizeObserver: ResizeObserver | null = null;\n\n private scrollContainerElement: {\n addEventListener: typeof window.addEventListener;\n removeEventListener: typeof window.removeEventListener;\n } | null = null;\n\n private getScrollContainer(idOrElement: string | HTMLElement | undefined):\n | {\n addEventListener: typeof window.addEventListener;\n removeEventListener: typeof window.removeEventListener;\n }\n | undefined {\n if (idOrElement instanceof HTMLElement) {\n return idOrElement;\n }\n\n if (idOrElement === 'window') {\n return window;\n }\n\n return document.getElementById(idOrElement!)!;\n }\n\n #handleLeadingIconSlotChange() {\n this._hasLeadingIcon = this.assignedLeadingIcons.length > 0;\n }\n\n #handleTrailingIconSlotChange() {\n this._hasTrailingIcon = this.assignedTrailingIcons.length > 0;\n }\n\n override render(): HTMLTemplateResult {\n const extendedContent = html`\n <div class=\"extended-content\" part=\"extended-content\">\n <slot name=\"extended-content\">${this.headline}</slot>\n </div>\n `;\n\n const containerClasses = classMap({\n [this.position]: true,\n [this.size]: true,\n scrolled: this.containerScrolled,\n 'has-leading-icon': this._hasLeadingIcon,\n 'has-trailing-icon': this._hasTrailingIcon,\n });\n\n const appBarSpacing = this.position !== 'static'\n ? html`<div class=\"spacing\"></div>`\n : nothing;\n\n return html`\n ${appBarSpacing}\n <div class=\"container ${containerClasses}\" part=\"container\">\n <div class=\"content\" part=\"content\">\n <div class=\"icon leading-icon\" part=\"icon leading\">\n <slot name=\"leading-icon\" @slotchange=\"${this.#handleLeadingIconSlotChange}\"></slot>\n </div>\n <div class=\"headline\" part=\"headline\">\n <slot>\n <span>${this.headline}</span>\n </slot>\n </div>\n\n <div class=\"icon trailing-icon\" part=\"icon trailing\">\n <slot name=\"trailing-icon\" @slotchange=\"${this.#handleTrailingIconSlotChange}\"></slot>\n </div>\n </div>\n <slot name=\"additional-content\"></slot>\n </div>\n ${this.size !== 'small' ? extendedContent : nothing}\n `;\n }\n\n protected override updated(_changedProperties: PropertyValues) {\n super.updated(_changedProperties);\n this.#updateScroll();\n }\n\n override firstUpdated(changedProperties: PropertyValues) {\n super.firstUpdated(changedProperties);\n this.containerSizeObserver = new ResizeObserver(() => this.#setContentHeightProperty());\n this.containerSizeObserver.observe(this._container);\n this.#setContentHeightProperty();\n }\n\n override connectedCallback() {\n super.connectedCallback();\n\n this.scrollContainer = this.scrollContainer || 'window';\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n\n this.containerSizeObserver!.disconnect();\n this.containerSizeObserver = null;\n }\n\n readonly #updateScroll = () => {\n const container = this.scrollContainerElement ?? window;\n\n const extendedContentHeight = Math.max(this._extendedContent?.offsetHeight ?? 0, 0);\n\n const scrollTop = UmTopAppBar._getScrollTop(container as any);\n\n this.containerScrolled = scrollTop > extendedContentHeight;\n\n this._headlineElement.style.opacity = scrollTop >= extendedContentHeight ? '1' : '0';\n\n if (extendedContentHeight === 0) {\n return;\n }\n\n const scrollOffset = this._extendedContent.offsetHeight * 0.7;\n\n if (scrollTop > scrollOffset) {\n this._extendedContent.style.opacity = '0';\n return;\n }\n\n this._extendedContent.style.opacity = 1 - scrollTop / scrollOffset + '';\n };\n\n private static _getScrollTop(container: HTMLElement & Window): number {\n if (typeof container.scrollY === 'number') {\n return container.scrollY;\n }\n\n if (typeof container.scrollTop === 'number') {\n return container.scrollTop;\n }\n\n return document.body.scrollTop;\n }\n\n #setContentHeightProperty() {\n this.style.setProperty('--_content-height', `${this._container.clientHeight}px`);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'u-top-app-bar': UmTopAppBar;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"top-app-bar.js","sourceRoot":"","sources":["../../src/app-bar/top-app-bar.ts"],"names":[],"mappings":"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","sourcesContent":["import { consume } from '@lit/context';\nimport { PropertyValues } from '@lit/reactive-element';\n\nimport { html, HTMLTemplateResult, LitElement, nothing } from 'lit';\nimport { customElement, property, query, queryAssignedElements, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\n\nimport { scrollContainerContext } from '../scaffold/scroll-container-context.js';\nimport { styles as baseStyles } from '../shared/base.styles.js';\nimport { styles } from './top-app-bar.styles.js';\n\ntype ScrollTarget = {\n addEventListener: typeof window.addEventListener;\n removeEventListener: typeof window.removeEventListener;\n};\n\n@customElement('u-top-app-bar')\nexport class TopAppBar extends LitElement {\n static override styles = [baseStyles, styles];\n\n @state() private _hasLeadingIcon = false;\n @state() private _hasTrailingIcon = false;\n\n /**\n * The positioning strategy of the app bar\n */\n @property({ reflect: true })\n position: 'fixed' | 'absolute' | 'static' = 'fixed';\n\n /**\n * The height variant of the app bar\n */\n @property({ reflect: true })\n size: 'small' | 'medium' | 'large' = 'small';\n\n /**\n * The headline text rendered inside the app bar\n */\n @property() headline = '';\n\n /**\n * The element to listen for scroll on to collapse the extended content.\n * Accepts an `HTMLElement`, the id of an element, `'window'` to use the\n * window scroll, or `'none'` to disable scroll handling. When unset, the\n * app bar consumes the scroll container provided by an ancestor\n * `u-scaffold`; if there's no scaffold, it falls back to `'window'`.\n */\n @property({ reflect: true })\n get scrollContainer(): 'none' | 'window' | string | undefined {\n return this.attributes.getNamedItem('scrollContainer')?.value;\n }\n\n set scrollContainer(idOrElement: string | HTMLElement | undefined) {\n this.#explicitScrollContainer = idOrElement;\n this.#resolveScrollContainer();\n }\n\n @consume({ context: scrollContainerContext, subscribe: true })\n @state()\n private readonly _scrollContainerFromContext!: HTMLElement | undefined;\n\n @state() containerScrolled = false;\n\n @queryAssignedElements({ slot: 'leading-icon', flatten: true })\n private readonly assignedLeadingIcons!: HTMLElement[];\n\n @queryAssignedElements({ slot: 'trailing-icon', flatten: true })\n private readonly assignedTrailingIcons!: HTMLElement[];\n\n @query('.container', true) private readonly _container!: HTMLElement;\n @query('.extended-content') private readonly _extendedContent!: HTMLElement;\n @query('.headline') private readonly _headlineElement!: HTMLElement;\n\n private containerSizeObserver: ResizeObserver | null = null;\n\n #explicitScrollContainer: string | HTMLElement | undefined = undefined;\n private scrollContainerElement: ScrollTarget | null = null;\n\n #resolveScrollContainer(): void {\n const next = this.#computeScrollTarget();\n\n if (next === this.scrollContainerElement) {\n return;\n }\n\n this.scrollContainerElement?.removeEventListener('scroll', this.#updateScroll);\n this.scrollContainerElement = next;\n this.scrollContainerElement?.addEventListener('scroll', this.#updateScroll);\n this.#updateScroll();\n }\n\n #computeScrollTarget(): ScrollTarget | null {\n const explicit = this.#explicitScrollContainer;\n\n if (explicit === 'none') {\n return null;\n }\n\n if (explicit instanceof HTMLElement) {\n return explicit;\n }\n\n if (typeof explicit === 'string' && explicit.length > 0) {\n if (explicit === 'window') {\n return window;\n }\n\n return document.getElementById(explicit);\n }\n\n if (this._scrollContainerFromContext) {\n return this._scrollContainerFromContext;\n }\n\n return window;\n }\n\n #handleLeadingIconSlotChange() {\n this._hasLeadingIcon = this.assignedLeadingIcons.length > 0;\n }\n\n #handleTrailingIconSlotChange() {\n this._hasTrailingIcon = this.assignedTrailingIcons.length > 0;\n }\n\n override render(): HTMLTemplateResult {\n const extendedContent = html`\n <div class=\"extended-content\" part=\"extended-content\">\n <slot name=\"extended-content\">${this.headline}</slot>\n </div>\n `;\n\n const containerClasses = classMap({\n [this.position]: true,\n [this.size]: true,\n scrolled: this.containerScrolled,\n 'has-leading-icon': this._hasLeadingIcon,\n 'has-trailing-icon': this._hasTrailingIcon,\n });\n\n const appBarSpacing = this.position !== 'static'\n ? html`<div class=\"spacing\"></div>`\n : nothing;\n\n return html`\n ${appBarSpacing}\n <div class=\"container ${containerClasses}\" part=\"container\">\n <div class=\"content\" part=\"content\">\n <div class=\"icon leading-icon\" part=\"icon leading\">\n <slot name=\"leading-icon\" @slotchange=\"${this.#handleLeadingIconSlotChange}\"></slot>\n </div>\n <div class=\"headline\" part=\"headline\">\n <slot>\n <span>${this.headline}</span>\n </slot>\n </div>\n\n <div class=\"icon trailing-icon\" part=\"icon trailing\">\n <slot name=\"trailing-icon\" @slotchange=\"${this.#handleTrailingIconSlotChange}\"></slot>\n </div>\n </div>\n <slot name=\"additional-content\"></slot>\n </div>\n ${this.size !== 'small' ? extendedContent : nothing}\n `;\n }\n\n protected override updated(changedProperties: PropertyValues) {\n super.updated(changedProperties);\n\n if (changedProperties.has('_scrollContainerFromContext' as keyof this)) {\n this.#resolveScrollContainer();\n }\n\n this.#updateScroll();\n }\n\n override firstUpdated(changedProperties: PropertyValues) {\n super.firstUpdated(changedProperties);\n this.containerSizeObserver = new ResizeObserver(() => this.#setContentHeightProperty());\n this.containerSizeObserver.observe(this._container);\n this.#setContentHeightProperty();\n }\n\n override connectedCallback() {\n super.connectedCallback();\n\n const attr = this.attributes.getNamedItem('scrollContainer')?.value;\n if (attr !== undefined && this.#explicitScrollContainer === undefined) {\n this.#explicitScrollContainer = attr;\n }\n\n this.#resolveScrollContainer();\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n\n this.scrollContainerElement?.removeEventListener('scroll', this.#updateScroll);\n this.scrollContainerElement = null;\n\n this.containerSizeObserver?.disconnect();\n this.containerSizeObserver = null;\n }\n\n readonly #updateScroll = () => {\n const container = this.scrollContainerElement ?? window;\n\n const extendedContentHeight = Math.max(this._extendedContent?.offsetHeight ?? 0, 0);\n\n const scrollTop = TopAppBar._getScrollTop(container as any);\n\n this.containerScrolled = scrollTop > extendedContentHeight;\n\n if (this._headlineElement) {\n this._headlineElement.style.opacity = scrollTop >= extendedContentHeight ? '1' : '0';\n }\n\n if (extendedContentHeight === 0) {\n return;\n }\n\n const scrollOffset = this._extendedContent.offsetHeight * 0.7;\n\n if (scrollTop > scrollOffset) {\n this._extendedContent.style.opacity = '0';\n return;\n }\n\n this._extendedContent.style.opacity = 1 - scrollTop / scrollOffset + '';\n };\n\n private static _getScrollTop(container: HTMLElement & Window): number {\n if (typeof container.scrollY === 'number') {\n return container.scrollY;\n }\n\n if (typeof container.scrollTop === 'number') {\n return container.scrollTop;\n }\n\n return document.body.scrollTop;\n }\n\n #setContentHeightProperty() {\n this.style.setProperty('--_content-height', `${this._container.clientHeight}px`);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'u-top-app-bar': TopAppBar;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"top-app-bar.styles.d.ts","sourceRoot":"","sources":["../../src/app-bar/top-app-bar.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"top-app-bar.styles.d.ts","sourceRoot":"","sources":["../../src/app-bar/top-app-bar.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,yBAgIlB,CAAC"}
|
|
@@ -11,13 +11,22 @@ export const styles = css `
|
|
|
11
11
|
.container {
|
|
12
12
|
background-color: var(--u-top-app-bar-container-color, var(--u-color-body, var(--u-color-surface, rgb(254, 247, 255))));
|
|
13
13
|
color: var(--u-top-app-bar-text-color, var(--u-color-on-surface, rgb(29, 27, 32)));
|
|
14
|
-
transition: background-color 100ms
|
|
14
|
+
transition: background-color 100ms;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.fixed {
|
|
18
|
+
transition: background-color 100ms, inset-inline-start 375ms cubic-bezier(0.19, 1, 0.22, 1);
|
|
15
19
|
}
|
|
16
20
|
|
|
17
21
|
.scrolled {
|
|
18
22
|
background-color: var(--u-top-app-bar-on-scroll-container-color, var(--u-color-surface-container, rgb(243, 237, 247)));
|
|
19
23
|
}
|
|
20
24
|
|
|
25
|
+
@media (min-width: 840px) {
|
|
26
|
+
.scrolled {
|
|
27
|
+
background-color: var(--u-top-app-bar-on-scroll-container-color, transparent);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
21
30
|
.leading-icon,
|
|
22
31
|
.trailing-icon {
|
|
23
32
|
display: none;
|
|
@@ -32,6 +41,8 @@ export const styles = css `
|
|
|
32
41
|
|
|
33
42
|
.absolute {
|
|
34
43
|
position: absolute;
|
|
44
|
+
inset-inline: 0;
|
|
45
|
+
inset-block-start: 0;
|
|
35
46
|
}
|
|
36
47
|
|
|
37
48
|
.fixed {
|
|
@@ -106,6 +117,12 @@ export const styles = css `
|
|
|
106
117
|
margin-inline: var(--u-leading-icon-margin, 8px);
|
|
107
118
|
}
|
|
108
119
|
|
|
120
|
+
@media (min-width: 1200px) {
|
|
121
|
+
.leading-icon {
|
|
122
|
+
min-width: var(--u-app-bar-leading-icon-width, 0);
|
|
123
|
+
box-sizing: border-box;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
109
126
|
.trailing-icon {
|
|
110
127
|
padding-inline: var(--u-trailing-icon-margin, 8px);
|
|
111
128
|
margin-inline-start: auto;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"top-app-bar.styles.js","sourceRoot":"","sources":["../../src/app-bar/top-app-bar.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAC
|
|
1
|
+
{"version":3,"file":"top-app-bar.styles.js","sourceRoot":"","sources":["../../src/app-bar/top-app-bar.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgIzB,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css `\n :host {\n display: block;\n }\n\n slot[name=leading-icon]::slotted(u-icon-button) {\n color: inherit;\n }\n\n .container {\n background-color: var(--u-top-app-bar-container-color, var(--u-color-body, var(--u-color-surface, rgb(254, 247, 255))));\n color: var(--u-top-app-bar-text-color, var(--u-color-on-surface, rgb(29, 27, 32)));\n transition: background-color 100ms;\n }\n\n .fixed {\n transition: background-color 100ms, inset-inline-start 375ms cubic-bezier(0.19, 1, 0.22, 1);\n }\n\n .scrolled {\n background-color: var(--u-top-app-bar-on-scroll-container-color, var(--u-color-surface-container, rgb(243, 237, 247)));\n }\n\n @media (min-width: 840px) {\n .scrolled {\n background-color: var(--u-top-app-bar-on-scroll-container-color, transparent);\n }\n }\n .leading-icon,\n .trailing-icon {\n display: none;\n align-items: center;\n gap: var(--u-top-app-bar-icons-gap, 8px);\n }\n\n .has-leading-icon .leading-icon,\n .has-trailing-icon .trailing-icon {\n display: inline-flex;\n }\n\n .absolute {\n position: absolute;\n inset-inline: 0;\n inset-block-start: 0;\n }\n\n .fixed {\n position: fixed;\n inset-inline: 0;\n inset-block-start: 0;\n inset-inline-start: var(--u-app-bar-offset, 0);\n }\n\n .absolute,\n .fixed {\n z-index: var(--u-fixed-app-bar-z-index, 1010);\n }\n\n .spacing {\n padding-top: var(--_content-height);\n }\n\n .extended-content {\n display: flex;\n align-items: flex-end;\n padding-inline: var(--u-extended-content-inline-padding, 16px);\n }\n\n .medium + .extended-content {\n font-family: var(--u-font-family, var(--u-font-family, system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"));\n line-height: var(--u-extended-content-medium-line-height, var(--u-headline-s-line-height, 2rem));\n font-size: var(--u-extended-content-medium-font-size, var(--u-headline-s-font-size, 1.5rem));\n letter-spacing: var(--u-extended-content-medium-letter-spacing, var(--u-headline-s-letter-spacing, 0rem));\n font-weight: var(--u-extended-content-medium-font-weight, var(--u-headline-s-font-weight, var(--u-font-weight-regular, 400)));\n height: var(--u-extended-content-medium-height, 3.5rem);\n padding-bottom: var(--u-extended-content-medium-padding-bottom, 24px);\n }\n\n .large + .extended-content {\n font-family: var(--u-font-family, var(--u-font-family, system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"));\n line-height: var(--u-extended-content-large-line-height, var(--u-headline-m-line-height, 2.25rem));\n font-size: var(--u-extended-content-large-font-size, var(--u-headline-m-font-size, 1.75rem));\n letter-spacing: var(--u-extended-content-large-letter-spacing, var(--u-headline-m-letter-spacing, 0rem));\n font-weight: var(--u-extended-content-large-font-weight, var(--u-headline-m-font-weight, var(--u-font-weight-regular, 400)));\n height: var(--u-extended-content-medium-large, 6rem);\n padding-bottom: var(--u-extended-content-large-padding-bottom, 28px);\n }\n\n .content {\n display: flex;\n align-items: center;\n background-color: inherit;\n transition: inherit;\n min-height: var(--u-top-app-bar-min-height, 56px);\n }\n @media (min-width: 840px) {\n .content {\n min-height: var(--u-top-app-bar-extended-min-height, 64px);\n }\n }\n\n .headline {\n overflow: hidden;\n font-family: var(--u-font-family, var(--u-font-family, system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"));\n line-height: var(--u-top-app-bar-headline-line-height, var(--u-title-l-line-height, 1.75rem));\n font-size: var(--u-top-app-bar-headline-font-size, var(--u-title-l-font-size, 1.375rem));\n letter-spacing: var(--u-top-app-bar-headline-letter-spacing, var(--u-title-l-letter-spacing, 0rem));\n font-weight: var(--u-top-app-bar-headline-font-weight, var(--u-title-l-font-weight, var(--u-font-weight-regular, 400)));\n margin-inline: var(--u-headline-margin, 16px);\n }\n .has-leading-icon .headline {\n margin-inline-start: 0;\n }\n\n .leading-icon {\n margin-inline: var(--u-leading-icon-margin, 8px);\n }\n\n @media (min-width: 1200px) {\n .leading-icon {\n min-width: var(--u-app-bar-leading-icon-width, 0);\n box-sizing: border-box;\n }\n }\n .trailing-icon {\n padding-inline: var(--u-trailing-icon-margin, 8px);\n margin-inline-start: auto;\n }\n`;\n"]}
|
package/badge/badge.d.ts
CHANGED
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
import { HTMLTemplateResult, LitElement } from 'lit';
|
|
2
|
-
export declare class
|
|
2
|
+
export declare class Badge extends LitElement {
|
|
3
3
|
#private;
|
|
4
4
|
static styles: import("lit").CSSResult;
|
|
5
|
+
/**
|
|
6
|
+
* Whether the badge is rendered as a static dot, without numeric content
|
|
7
|
+
*/
|
|
5
8
|
static: boolean;
|
|
6
9
|
private _empty;
|
|
7
10
|
protected render(): HTMLTemplateResult;
|
|
8
11
|
}
|
|
9
12
|
declare global {
|
|
10
13
|
interface HTMLElementTagNameMap {
|
|
11
|
-
'u-badge':
|
|
14
|
+
'u-badge': Badge;
|
|
12
15
|
}
|
|
13
16
|
}
|
|
14
17
|
//# sourceMappingURL=badge.d.ts.map
|
package/badge/badge.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../src/badge/badge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,kBAAkB,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAM3D,qBACa,
|
|
1
|
+
{"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../src/badge/badge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,kBAAkB,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAM3D,qBACa,KAAM,SAAQ,UAAU;;IACnC,OAAgB,MAAM,0BAAU;IAEhC;;OAEG;IACyC,MAAM,UAAS;IAClD,OAAO,CAAC,MAAM,CAAQ;cAEZ,MAAM,IAAI,kBAAkB;CAiBhD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,SAAS,EAAE,KAAK,CAAC;KAClB;CACF"}
|
package/badge/badge.js
CHANGED
|
@@ -3,9 +3,12 @@ import { html, LitElement } from 'lit';
|
|
|
3
3
|
import { customElement, property, state } from 'lit/decorators.js';
|
|
4
4
|
import { classMap } from 'lit/directives/class-map.js';
|
|
5
5
|
import { styles } from './badge.styles.js';
|
|
6
|
-
let
|
|
6
|
+
let Badge = class Badge extends LitElement {
|
|
7
7
|
constructor() {
|
|
8
8
|
super(...arguments);
|
|
9
|
+
/**
|
|
10
|
+
* Whether the badge is rendered as a static dot, without numeric content
|
|
11
|
+
*/
|
|
9
12
|
this.static = false;
|
|
10
13
|
this._empty = true;
|
|
11
14
|
}
|
|
@@ -28,12 +31,12 @@ let UmBadge = class UmBadge extends LitElement {
|
|
|
28
31
|
};
|
|
29
32
|
__decorate([
|
|
30
33
|
property({ type: Boolean, reflect: true })
|
|
31
|
-
],
|
|
34
|
+
], Badge.prototype, "static", void 0);
|
|
32
35
|
__decorate([
|
|
33
36
|
state()
|
|
34
|
-
],
|
|
35
|
-
|
|
37
|
+
], Badge.prototype, "_empty", void 0);
|
|
38
|
+
Badge = __decorate([
|
|
36
39
|
customElement('u-badge')
|
|
37
|
-
],
|
|
38
|
-
export {
|
|
40
|
+
], Badge);
|
|
41
|
+
export { Badge };
|
|
39
42
|
//# sourceMappingURL=badge.js.map
|
package/badge/badge.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"badge.js","sourceRoot":"","sources":["../../src/badge/badge.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAsB,UAAU,EAAE,MAAM,KAAK,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAGpC,IAAM,
|
|
1
|
+
{"version":3,"file":"badge.js","sourceRoot":"","sources":["../../src/badge/badge.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAsB,UAAU,EAAE,MAAM,KAAK,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAGpC,IAAM,KAAK,GAAX,MAAM,KAAM,SAAQ,UAAU;IAA9B;;QAGL;;WAEG;QACyC,WAAM,GAAG,KAAK,CAAC;QAC1C,WAAM,GAAG,IAAI,CAAC;IAmBjC,CAAC;aAzBiB,WAAM,GAAG,MAAM,AAAT,CAAU;IAQb,MAAM;QACvB,MAAM,gBAAgB,GAAG,QAAQ,CAAC;YAChC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,MAAM;SACnB,CAAC,CAAC;QAEH,OAAO,IAAI,CAAA;8BACe,gBAAgB;4BAClB,IAAI,CAAC,iBAAiB;;KAE7C,CAAC;IACJ,CAAC;IAED,iBAAiB,CAAC,CAAQ;QACxB,MAAM,IAAI,GAAG,CAAC,CAAC,MAAyB,CAAC;QACzC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,MAAM,CAAC;IACjD,CAAC;;AAnB2C;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;qCAAgB;AAC1C;IAAhB,KAAK,EAAE;qCAAuB;AAPpB,KAAK;IADjB,aAAa,CAAC,SAAS,CAAC;GACZ,KAAK,CA0BjB","sourcesContent":["import { html, HTMLTemplateResult, LitElement } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\n\nimport { styles } from './badge.styles.js';\n\n@customElement('u-badge')\nexport class Badge extends LitElement {\n static override styles = styles;\n\n /**\n * Whether the badge is rendered as a static dot, without numeric content\n */\n @property({ type: Boolean, reflect: true }) static = false;\n @state() private _empty = true;\n\n protected override render(): HTMLTemplateResult {\n const containerClasses = classMap({\n static: this.static,\n empty: this._empty,\n });\n\n return html`\n <div class=\"container ${containerClasses}\" part=\"container\">\n <slot @slotchange=${this.#handleSlotChange}></slot>\n </div>\n `;\n }\n\n #handleSlotChange(e: Event) {\n const slot = e.target as HTMLSlotElement;\n this._empty = !!slot.assignedElements().length;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'u-badge': Badge;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"badge.styles.d.ts","sourceRoot":"","sources":["../../src/badge/badge.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"badge.styles.d.ts","sourceRoot":"","sources":["../../src/badge/badge.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,yBA+BlB,CAAC"}
|
package/badge/badge.styles.js
CHANGED
|
@@ -16,6 +16,7 @@ export const styles = css `
|
|
|
16
16
|
background-color: var(--u-badge-color, var(--u-color-error, rgb(179, 38, 30)));
|
|
17
17
|
color: var(--u-badge-color, var(--u-color-on-error, rgb(255, 255, 255)));
|
|
18
18
|
border-radius: calc(var(--_badge-size) / 2);
|
|
19
|
+
box-sizing: border-box;
|
|
19
20
|
}
|
|
20
21
|
.container:not(.static) {
|
|
21
22
|
--_badge-inline-start: calc(100% - var(--_badge-size));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"badge.styles.js","sourceRoot":"","sources":["../../src/badge/badge.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAC
|
|
1
|
+
{"version":3,"file":"badge.styles.js","sourceRoot":"","sources":["../../src/badge/badge.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BzB,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css `\n .container {\n --_badge-size: var(--u-badge-small-size, 6px);\n font-family: var(--u-font-family, var(--u-font-family, system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"));\n line-height: var(--u-badge-line-height, var(--u-label-s-line-height, 1rem));\n font-size: var(--u-badge-font-size, var(--u-label-s-font-size, 0.6875rem));\n letter-spacing: var(--u-badge-letter-spacing, var(--u-label-s-letter-spacing, 0.0454545455rem));\n font-weight: var(--u-badge-font-weight, var(--u-label-s-font-weight, var(--u-font-weight-medium, 500)));\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: var(--_badge-size);\n height: var(--_badge-size);\n line-height: var(--_badge-size);\n background-color: var(--u-badge-color, var(--u-color-error, rgb(179, 38, 30)));\n color: var(--u-badge-color, var(--u-color-on-error, rgb(255, 255, 255)));\n border-radius: calc(var(--_badge-size) / 2);\n box-sizing: border-box;\n }\n .container:not(.static) {\n --_badge-inline-start: calc(100% - var(--_badge-size));\n position: absolute;\n top: 0;\n inset-inline-start: var(--_badge-inline-start);\n }\n .container:not(.empty) {\n --_badge-size: var(--u-badge-large-size, 16px);\n top: var(--u-badge-top-offset, -2px);\n inset-inline-start: calc(var(--_badge-inline-start) - var(--u-badge-inline-offset, -4px));\n padding-inline: var(--u-badge-padding, 4px);\n }\n`;\n"]}
|