@material/web 1.0.0-pre.2 → 1.0.0-pre.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/autocomplete/autocomplete-item.js.map +1 -1
- package/autocomplete/autocomplete-list.js.map +1 -1
- package/autocomplete/autocomplete-surface.js.map +1 -1
- package/autocomplete/filled-autocomplete.d.ts +0 -2
- package/autocomplete/filled-autocomplete.js +0 -7
- package/autocomplete/filled-autocomplete.js.map +1 -1
- package/autocomplete/lib/_filled-autocomplete.scss +22 -28
- package/autocomplete/lib/_outlined-autocomplete.scss +23 -29
- package/autocomplete/lib/_shared.scss +6 -10
- package/autocomplete/lib/autocomplete.d.ts +2 -2
- package/autocomplete/lib/autocomplete.js +4 -5
- package/autocomplete/lib/autocomplete.js.map +1 -1
- package/autocomplete/lib/autocompletelist/autocomplete-list-styles.scss +2 -0
- package/autocomplete/lib/autocompletesurface/autocomplete-surface-styles.scss +2 -0
- package/autocomplete/lib/filled-styles.css.js +1 -1
- package/autocomplete/lib/filled-styles.css.js.map +1 -1
- package/autocomplete/lib/filled-styles.scss +2 -0
- package/autocomplete/lib/outlined-styles.css.js +1 -1
- package/autocomplete/lib/outlined-styles.css.js.map +1 -1
- package/autocomplete/lib/outlined-styles.scss +2 -0
- package/autocomplete/lib/shared-styles.scss +2 -0
- package/autocomplete/outlined-autocomplete.d.ts +0 -2
- package/autocomplete/outlined-autocomplete.js +0 -7
- package/autocomplete/outlined-autocomplete.js.map +1 -1
- package/badge/badge.js.map +1 -1
- package/badge/lib/_badge.scss +10 -13
- package/badge/lib/badge-styles.css.js +1 -1
- package/badge/lib/badge-styles.css.js.map +1 -1
- package/badge/lib/badge-styles.scss +2 -0
- package/badge/lib/badge.js.map +1 -1
- package/button/elevated-button.js.map +1 -1
- package/button/elevated-link-button.js.map +1 -1
- package/button/filled-button.js.map +1 -1
- package/button/filled-link-button.js.map +1 -1
- package/button/lib/_elevated-button.scss +10 -15
- package/button/lib/_elevation.scss +4 -1
- package/button/lib/_filled-button.scss +12 -14
- package/button/lib/_icon.scss +1 -0
- package/button/lib/_outlined-button.scss +10 -15
- package/button/lib/_shared.scss +14 -19
- package/button/lib/_text-button.scss +12 -14
- package/button/lib/_tonal-button.scss +10 -15
- package/button/lib/button.js.map +1 -1
- package/button/lib/elevated-styles.css.js +1 -1
- package/button/lib/elevated-styles.css.js.map +1 -1
- package/button/lib/elevated-styles.scss +2 -0
- package/button/lib/filled-styles.css.js +1 -1
- package/button/lib/filled-styles.css.js.map +1 -1
- package/button/lib/filled-styles.scss +2 -0
- package/button/lib/link-button.js.map +1 -1
- package/button/lib/outlined-styles.css.js +1 -1
- package/button/lib/outlined-styles.css.js.map +1 -1
- package/button/lib/outlined-styles.scss +2 -0
- package/button/lib/shared-elevation-styles.scss +2 -0
- package/button/lib/shared-styles.css.js +1 -1
- package/button/lib/shared-styles.css.js.map +1 -1
- package/button/lib/shared-styles.scss +2 -0
- package/button/lib/text-styles.css.js +1 -1
- package/button/lib/text-styles.css.js.map +1 -1
- package/button/lib/text-styles.scss +2 -0
- package/button/lib/tonal-styles.css.js +1 -1
- package/button/lib/tonal-styles.css.js.map +1 -1
- package/button/lib/tonal-styles.scss +2 -0
- package/button/outlined-button.js.map +1 -1
- package/button/outlined-link-button.js.map +1 -1
- package/button/text-button.js.map +1 -1
- package/button/text-link-button.js.map +1 -1
- package/button/tonal-button.js.map +1 -1
- package/button/tonal-link-button.js.map +1 -1
- package/checkbox/checkbox.js.map +1 -1
- package/checkbox/lib/_checkbox.scss +26 -31
- package/checkbox/lib/checkbox-styles.css.js +1 -1
- package/checkbox/lib/checkbox-styles.css.js.map +1 -1
- package/checkbox/lib/checkbox-styles.scss +2 -0
- package/checkbox/lib/checkbox.js +6 -6
- package/checkbox/lib/checkbox.js.map +1 -1
- package/checkbox/lib/forced-colors-styles.scss +2 -0
- package/chips/action/delete-action.js.map +1 -1
- package/chips/action/lib/action.js +4 -4
- package/chips/action/lib/action.js.map +1 -1
- package/chips/action/lib/link-action.js +1 -1
- package/chips/action/lib/link-action.js.map +1 -1
- package/chips/action/lib/primary-action.js.map +1 -1
- package/chips/action/lib/selectable-action.js.map +1 -1
- package/chips/action/link-action.js.map +1 -1
- package/chips/action/presentational-action.js.map +1 -1
- package/chips/action/primary-action.js.map +1 -1
- package/chips/action/selectable-action.js.map +1 -1
- package/chips/chip/lib/_assist-chip-theme.scss +4 -0
- package/chips/chip/lib/_chip-theme.scss +29 -40
- package/chips/chip/lib/_chip.scss +2 -0
- package/chips/chip/lib/_filter-chip-theme.scss +4 -0
- package/chips/chip/lib/_input-chip-theme.scss +4 -0
- package/chips/chip/lib/_suggestion-chip-theme.scss +4 -0
- package/chips/chip/lib/chip.js.map +1 -1
- package/chips/chip/lib/foundation.js +4 -4
- package/chips/chip/lib/foundation.js.map +1 -1
- package/chips/chip/lib/link-chip.js.map +1 -1
- package/chips/chip/lib/selectable-chip.js.map +1 -1
- package/chips/chip/lib/types.d.ts +2 -2
- package/chips/chipset/lib/_chip-set-theme.scss +2 -0
- package/chips/chipset/lib/_chip-set.scss +2 -0
- package/chips/chipset/lib/foundation.js +3 -3
- package/chips/chipset/lib/foundation.js.map +1 -1
- package/chips/chipset/lib/types.d.ts +3 -3
- package/controller/events.js +4 -0
- package/controller/events.js.map +1 -1
- package/controller/form-controller.js.map +1 -1
- package/controller/foundation.d.ts +1 -1
- package/controller/observer.d.ts +2 -2
- package/dialog/dialog.js.map +1 -1
- package/dialog/harness.d.ts +2 -2
- package/dialog/harness.js +11 -8
- package/dialog/harness.js.map +1 -1
- package/dialog/lib/_dialog.scss +7 -11
- package/dialog/lib/_tokens.scss +9 -6
- package/dialog/lib/dialog-styles.css.js +1 -1
- package/dialog/lib/dialog-styles.css.js.map +1 -1
- package/dialog/lib/dialog-styles.scss +2 -0
- package/dialog/lib/dialog.js +9 -7
- package/dialog/lib/dialog.js.map +1 -1
- package/divider/divider.js.map +1 -1
- package/divider/lib/_divider.scss +2 -0
- package/divider/lib/divider-styles.scss +2 -0
- package/divider/lib/divider.js.map +1 -1
- package/elevation/elevation.js.map +1 -1
- package/elevation/lib/_elevation.scss +4 -0
- package/elevation/lib/_md-comp-elevation.scss +4 -0
- package/elevation/lib/elevation-styles.scss +2 -0
- package/elevation/lib/elevation.js.map +1 -1
- package/fab/fab-extended.js.map +1 -1
- package/fab/fab.js.map +1 -1
- package/fab/lib/_fab-extended.scss +18 -11
- package/fab/lib/_fab.scss +7 -2
- package/fab/lib/_shared.scss +16 -8
- package/fab/lib/fab-extended-styles.css.js +1 -1
- package/fab/lib/fab-extended-styles.css.js.map +1 -1
- package/fab/lib/fab-extended-styles.scss +2 -0
- package/fab/lib/fab-shared-styles.css.js +1 -1
- package/fab/lib/fab-shared-styles.css.js.map +1 -1
- package/fab/lib/fab-shared-styles.scss +2 -0
- package/fab/lib/fab-shared.d.ts +9 -15
- package/fab/lib/fab-shared.js +21 -33
- package/fab/lib/fab-shared.js.map +1 -1
- package/fab/lib/fab-styles.css.js +1 -1
- package/fab/lib/fab-styles.css.js.map +1 -1
- package/fab/lib/fab-styles.scss +2 -0
- package/field/filled-field.d.ts +1 -1
- package/field/filled-field.js +1 -1
- package/field/filled-field.js.map +1 -1
- package/field/harness.js +1 -1
- package/field/harness.js.map +1 -1
- package/field/lib/_content.scss +35 -50
- package/field/lib/_filled-field.scss +60 -79
- package/field/lib/_label.scss +26 -63
- package/field/lib/_md-comp-filled-field.scss +14 -2
- package/field/lib/_md-comp-outlined-field.scss +15 -4
- package/field/lib/_outlined-field.scss +96 -110
- package/field/lib/_shared.scss +13 -35
- package/field/lib/_supporting-text.scss +25 -52
- package/field/lib/field.d.ts +14 -31
- package/field/lib/field.js +77 -97
- package/field/lib/field.js.map +1 -1
- package/field/lib/filled-field.d.ts +10 -16
- package/field/lib/filled-field.js +14 -37
- package/field/lib/filled-field.js.map +1 -1
- package/field/lib/filled-styles.css.js +1 -1
- package/field/lib/filled-styles.css.js.map +1 -1
- package/field/lib/outlined-field.d.ts +4 -10
- package/field/lib/outlined-field.js +13 -33
- package/field/lib/outlined-field.js.map +1 -1
- package/field/lib/outlined-styles.css.js +1 -1
- package/field/lib/outlined-styles.css.js.map +1 -1
- package/field/lib/shared-styles.css.js +1 -1
- package/field/lib/shared-styles.css.js.map +1 -1
- package/field/outlined-field.d.ts +1 -1
- package/field/outlined-field.js +1 -1
- package/field/outlined-field.js.map +1 -1
- package/focus/focus-ring.js.map +1 -1
- package/focus/lib/_focus-ring.scss +7 -13
- package/focus/lib/_md-comp-focus-ring.scss +4 -0
- package/focus/lib/focus-ring-styles.css.js +1 -1
- package/focus/lib/focus-ring-styles.css.js.map +1 -1
- package/focus/lib/focus-ring-styles.scss +2 -0
- package/focus/lib/focus-ring.js.map +1 -1
- package/icon/icon.js.map +1 -1
- package/icon/lib/_icon.scss +2 -0
- package/icon/lib/icon-styles.scss +2 -0
- package/iconbutton/filled-icon-button-toggle.js.map +1 -1
- package/iconbutton/filled-icon-button.js.map +1 -1
- package/iconbutton/filled-link-icon-button.js.map +1 -1
- package/iconbutton/filled-tonal-icon-button-toggle.js.map +1 -1
- package/iconbutton/filled-tonal-icon-button.js.map +1 -1
- package/iconbutton/filled-tonal-link-icon-button.js.map +1 -1
- package/iconbutton/lib/_filled-icon-button.scss +19 -19
- package/iconbutton/lib/_filled-tonal-icon-button.scss +19 -19
- package/iconbutton/lib/_outlined-icon-button.scss +20 -16
- package/iconbutton/lib/_shared.scss +8 -8
- package/iconbutton/lib/_standard-icon-button.scss +21 -18
- package/iconbutton/lib/filled-styles.css.js +1 -1
- package/iconbutton/lib/filled-styles.css.js.map +1 -1
- package/iconbutton/lib/filled-styles.scss +2 -0
- package/iconbutton/lib/filled-tonal-styles.css.js +1 -1
- package/iconbutton/lib/filled-tonal-styles.css.js.map +1 -1
- package/iconbutton/lib/filled-tonal-styles.scss +2 -0
- package/iconbutton/lib/icon-button-toggle.js.map +1 -1
- package/iconbutton/lib/icon-button.js.map +1 -1
- package/iconbutton/lib/link-icon-button.js.map +1 -1
- package/iconbutton/lib/outlined-styles.css.js +1 -1
- package/iconbutton/lib/outlined-styles.css.js.map +1 -1
- package/iconbutton/lib/outlined-styles.scss +2 -0
- package/iconbutton/lib/shared-styles.scss +2 -0
- package/iconbutton/lib/standard-styles.css.js +1 -1
- package/iconbutton/lib/standard-styles.css.js.map +1 -1
- package/iconbutton/lib/standard-styles.scss +2 -0
- package/iconbutton/outlined-icon-button-toggle.js.map +1 -1
- package/iconbutton/outlined-icon-button.js.map +1 -1
- package/iconbutton/outlined-link-icon-button.js.map +1 -1
- package/iconbutton/standard-icon-button-toggle.js.map +1 -1
- package/iconbutton/standard-icon-button.js.map +1 -1
- package/iconbutton/standard-link-icon-button.js.map +1 -1
- package/list/lib/_list.scss +6 -2
- package/list/lib/avatar/_list-item-avatar.scss +2 -0
- package/list/lib/avatar/list-item-avatar-styles.scss +2 -0
- package/list/lib/avatar/list-item-avatar.js.map +1 -1
- package/list/lib/icon/_list-item-icon.scss +4 -0
- package/list/lib/icon/list-item-icon-styles.scss +2 -0
- package/list/lib/image/_list-item-image.scss +5 -1
- package/list/lib/image/list-item-image-styles.scss +2 -0
- package/list/lib/image/list-item-image.js.map +1 -1
- package/list/lib/list-styles.css.js +1 -1
- package/list/lib/list-styles.css.js.map +1 -1
- package/list/lib/list-styles.scss +2 -0
- package/list/lib/list.js +3 -1
- package/list/lib/list.js.map +1 -1
- package/list/lib/listitem/_list-item.scss +31 -30
- package/list/lib/listitem/list-item-private-styles.css.js +1 -1
- package/list/lib/listitem/list-item-private-styles.css.js.map +1 -1
- package/list/lib/listitem/list-item-private-styles.scss +2 -0
- package/list/lib/listitem/list-item-styles.css.js +1 -1
- package/list/lib/listitem/list-item-styles.css.js.map +1 -1
- package/list/lib/listitem/list-item-styles.scss +2 -0
- package/list/lib/listitem/list-item.d.ts +1 -1
- package/list/lib/listitem/list-item.js +3 -1
- package/list/lib/listitem/list-item.js.map +1 -1
- package/list/lib/listitemlink/list-item-link.js.map +1 -1
- package/list/lib/video/_list-item-video.scss +5 -1
- package/list/lib/video/list-item-video-styles.scss +2 -0
- package/list/lib/video/list-item-video.js.map +1 -1
- package/list/list-item-avatar.js.map +1 -1
- package/list/list-item-icon.js.map +1 -1
- package/list/list-item-image.js.map +1 -1
- package/list/list-item-link.js.map +1 -1
- package/list/list-item-video.js.map +1 -1
- package/list/list-item.js.map +1 -1
- package/list/list.js.map +1 -1
- package/menu/lib/_menu.scss +7 -4
- package/menu/lib/menu-styles.css.js +1 -1
- package/menu/lib/menu-styles.css.js.map +1 -1
- package/menu/lib/menu-styles.scss +2 -0
- package/menu/lib/menu.d.ts +1 -1
- package/menu/lib/menu.js.map +1 -1
- package/menu/lib/menuitem/_menu-item.scss +17 -9
- package/menu/lib/menuitem/menu-item-private-styles.css.js +1 -1
- package/menu/lib/menuitem/menu-item-private-styles.css.js.map +1 -1
- package/menu/lib/menuitem/menu-item-private-styles.scss +2 -0
- package/menu/lib/menuitem/menu-item-styles.css.js +1 -1
- package/menu/lib/menuitem/menu-item-styles.css.js.map +1 -1
- package/menu/lib/menuitem/menu-item-styles.scss +2 -0
- package/menu/lib/menuitem/menu-item.js.map +1 -1
- package/menu/lib/menuitemlink/menu-item-link.js.map +1 -1
- package/menu/lib/shared.d.ts +3 -3
- package/menu/lib/submenuitem/sub-menu-item.js.map +1 -1
- package/menu/lib/surfacePositionController.d.ts +1 -1
- package/menu/lib/typeaheadController.d.ts +1 -1
- package/menu/menu-item-link.js.map +1 -1
- package/menu/menu-item.js.map +1 -1
- package/menu/menu.js.map +1 -1
- package/menu/sub-menu-item.js.map +1 -1
- package/menusurface/lib/_md-comp-menu-surface.scss +4 -0
- package/menusurface/lib/_menu-surface.scss +4 -0
- package/menusurface/lib/foundation.js +31 -31
- package/menusurface/lib/foundation.js.map +1 -1
- package/menusurface/lib/menu-surface-styles.scss +2 -0
- package/menusurface/lib/menu-surface.d.ts +2 -2
- package/menusurface/lib/menu-surface.js.map +1 -1
- package/menusurface/menu-surface.js.map +1 -1
- package/navigationbar/lib/_navigation-bar.scss +2 -0
- package/navigationbar/lib/constants.d.ts +1 -1
- package/navigationbar/lib/navigation-bar-styles.scss +2 -0
- package/navigationbar/lib/navigation-bar.js.map +1 -1
- package/navigationbar/navigation-bar.js.map +1 -1
- package/navigationdrawer/lib/_navigation-drawer-modal.scss +11 -2
- package/navigationdrawer/lib/_navigation-drawer.scss +10 -5
- package/navigationdrawer/lib/_shared.scss +4 -8
- package/navigationdrawer/lib/navigation-drawer-modal-styles.css.js +1 -1
- package/navigationdrawer/lib/navigation-drawer-modal-styles.css.js.map +1 -1
- package/navigationdrawer/lib/navigation-drawer-modal-styles.scss +2 -0
- package/navigationdrawer/lib/navigation-drawer-modal.js.map +1 -1
- package/navigationdrawer/lib/navigation-drawer-styles.css.js +1 -1
- package/navigationdrawer/lib/navigation-drawer-styles.css.js.map +1 -1
- package/navigationdrawer/lib/navigation-drawer-styles.scss +2 -0
- package/navigationdrawer/lib/navigation-drawer.js.map +1 -1
- package/navigationdrawer/lib/shared-styles.scss +2 -0
- package/navigationdrawer/navigation-drawer-modal.js.map +1 -1
- package/navigationdrawer/navigation-drawer.js.map +1 -1
- package/navigationtab/lib/_navigation-tab.scss +26 -22
- package/navigationtab/lib/navigation-tab-styles.css.js +1 -1
- package/navigationtab/lib/navigation-tab-styles.css.js.map +1 -1
- package/navigationtab/lib/navigation-tab-styles.scss +2 -0
- package/navigationtab/lib/navigation-tab.js +4 -4
- package/navigationtab/lib/navigation-tab.js.map +1 -1
- package/navigationtab/navigation-tab.js.map +1 -1
- package/package.json +2 -2
- package/radio/lib/_radio.scss +16 -14
- package/radio/lib/forced-colors-styles.scss +2 -0
- package/radio/lib/radio-styles.css.js +1 -1
- package/radio/lib/radio-styles.css.js.map +1 -1
- package/radio/lib/radio-styles.scss +2 -0
- package/radio/lib/radio.js +21 -21
- package/radio/lib/radio.js.map +1 -1
- package/radio/radio.js.map +1 -1
- package/ripple/directive.d.ts +1 -33
- package/ripple/directive.js +7 -194
- package/ripple/directive.js.map +1 -1
- package/ripple/lib/_md-comp-ripple.scss +20 -19
- package/ripple/lib/_ripple.scss +20 -20
- package/ripple/lib/ripple-styles.css.js +1 -1
- package/ripple/lib/ripple-styles.css.js.map +1 -1
- package/ripple/lib/ripple-styles.scss +2 -0
- package/ripple/lib/ripple.d.ts +50 -48
- package/ripple/lib/ripple.js +214 -76
- package/ripple/lib/ripple.js.map +1 -1
- package/ripple/ripple.d.ts +9 -1
- package/ripple/ripple.js +9 -1
- package/ripple/ripple.js.map +1 -1
- package/sass/_assert.scss +2 -0
- package/sass/_color-scheme.scss +4 -0
- package/sass/_color.scss +4 -0
- package/sass/_elevation.scss +4 -0
- package/sass/_feature-flags.scss +2 -0
- package/sass/_map-ext.scss +2 -0
- package/sass/_resolvers.scss +4 -4
- package/sass/_shape.scss +75 -27
- package/sass/_string-ext.scss +44 -0
- package/sass/_theme.scss +4 -0
- package/sass/_typography.scss +18 -93
- package/sass/_var.scss +4 -0
- package/segmentedbutton/lib/_outlined-segmented-button.scss +4 -0
- package/segmentedbutton/lib/_shared.scss +18 -22
- package/segmentedbutton/lib/outlined-styles.css.js +1 -1
- package/segmentedbutton/lib/outlined-styles.css.js.map +1 -1
- package/segmentedbutton/lib/outlined-styles.scss +2 -0
- package/segmentedbutton/lib/segmented-button.js +4 -4
- package/segmentedbutton/lib/segmented-button.js.map +1 -1
- package/segmentedbutton/lib/shared-styles.css.js +1 -1
- package/segmentedbutton/lib/shared-styles.css.js.map +1 -1
- package/segmentedbutton/lib/shared-styles.scss +2 -0
- package/segmentedbutton/outlined-segmented-button.js.map +1 -1
- package/segmentedbuttonset/lib/_outlined-segmented-button-set.scss +9 -5
- package/segmentedbuttonset/lib/_shared.scss +0 -13
- package/segmentedbuttonset/lib/outlined-styles.css.js +1 -1
- package/segmentedbuttonset/lib/outlined-styles.css.js.map +1 -1
- package/segmentedbuttonset/lib/outlined-styles.scss +2 -0
- package/segmentedbuttonset/lib/segmented-button-set.js.map +1 -1
- package/segmentedbuttonset/lib/shared-styles.scss +2 -0
- package/segmentedbuttonset/outlined-segmented-button-set.js.map +1 -1
- package/slider/_slider.scss +6 -0
- package/slider/harness.d.ts +20 -0
- package/slider/harness.js +63 -0
- package/slider/harness.js.map +1 -0
- package/slider/lib/_slider.scss +503 -0
- package/slider/lib/_tokens.scss +66 -0
- package/slider/lib/forced-colors-styles.css.js +9 -0
- package/slider/lib/forced-colors-styles.css.js.map +1 -0
- package/slider/lib/forced-colors-styles.scss +53 -0
- package/slider/lib/slider-styles.css.js +9 -0
- package/slider/lib/slider-styles.css.js.map +1 -0
- package/slider/lib/slider-styles.scss +8 -0
- package/slider/lib/slider.d.ts +158 -0
- package/slider/lib/slider.js +575 -0
- package/slider/lib/slider.js.map +1 -0
- package/slider/slider.d.ts +28 -0
- package/slider/slider.js +32 -0
- package/slider/slider.js.map +1 -0
- package/switch/lib/README.md +55 -0
- package/switch/lib/_handle.scss +17 -18
- package/switch/lib/_icon.scss +4 -0
- package/switch/lib/_switch.scss +11 -18
- package/switch/lib/_track.scss +2 -0
- package/switch/lib/switch-styles.css.js +1 -1
- package/switch/lib/switch-styles.css.js.map +1 -1
- package/switch/lib/switch-styles.scss +2 -0
- package/switch/lib/switch.js +9 -9
- package/switch/lib/switch.js.map +1 -1
- package/switch/switch.js.map +1 -1
- package/textfield/filled-text-field.d.ts +1 -1
- package/textfield/filled-text-field.js +1 -2
- package/textfield/filled-text-field.js.map +1 -1
- package/textfield/harness.js +1 -1
- package/textfield/harness.js.map +1 -1
- package/textfield/lib/_filled-text-field.scss +25 -21
- package/textfield/lib/_icon.scss +41 -56
- package/textfield/lib/_input.scss +17 -36
- package/textfield/lib/_outlined-text-field.scss +26 -21
- package/textfield/lib/_shared.scss +10 -29
- package/textfield/lib/filled-forced-colors-styles.scss +2 -0
- package/textfield/lib/filled-styles.css.js +1 -1
- package/textfield/lib/filled-styles.css.js.map +1 -1
- package/textfield/lib/filled-styles.scss +2 -0
- package/textfield/lib/filled-text-field.d.ts +6 -5
- package/textfield/lib/filled-text-field.js +8 -7
- package/textfield/lib/filled-text-field.js.map +1 -1
- package/textfield/lib/outlined-forced-colors-styles.scss +2 -0
- package/textfield/lib/outlined-styles.css.js +1 -1
- package/textfield/lib/outlined-styles.css.js.map +1 -1
- package/textfield/lib/outlined-styles.scss +2 -0
- package/textfield/lib/outlined-text-field.d.ts +6 -5
- package/textfield/lib/outlined-text-field.js +8 -7
- package/textfield/lib/outlined-text-field.js.map +1 -1
- package/textfield/lib/shared-styles.css.js +1 -1
- package/textfield/lib/shared-styles.css.js.map +1 -1
- package/textfield/lib/shared-styles.scss +2 -0
- package/textfield/lib/text-field.d.ts +40 -88
- package/textfield/lib/text-field.js +194 -270
- package/textfield/lib/text-field.js.map +1 -1
- package/textfield/outlined-text-field.d.ts +1 -1
- package/textfield/outlined-text-field.js +1 -2
- package/textfield/outlined-text-field.js.map +1 -1
- package/tokens/_index.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-assist-chip.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-badge.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-banner.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-bottom-app-bar.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-carousel-item.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-checkbox.scss +4 -15
- package/tokens/{v0_152 → v0_160}/_md-comp-circular-progress-indicator.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-data-table.scss +1 -3
- package/tokens/{v0_152 → v0_160}/_md-comp-date-input-modal.scss +10 -10
- package/tokens/{v0_152 → v0_160}/_md-comp-date-picker-docked.scss +23 -23
- package/tokens/{v0_152 → v0_160}/_md-comp-date-picker-modal.scss +34 -34
- package/tokens/{v0_152 → v0_160}/_md-comp-dialog.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-divider.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-elevated-button.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-elevated-card.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-extended-fab-branded.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-extended-fab-primary.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-extended-fab-secondary.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-extended-fab-surface.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-extended-fab-tertiary.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-fab-branded-large.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-fab-branded.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-fab-primary-large.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-fab-primary-small.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-fab-primary.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-fab-secondary-large.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-fab-secondary-small.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-fab-secondary.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-fab-surface-large.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-fab-surface-small.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-fab-surface.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-fab-tertiary-large.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-fab-tertiary-small.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-fab-tertiary.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-filled-autocomplete.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-filled-button.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-filled-card.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-filled-icon-button.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-filled-menu-button.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-filled-select.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-filled-text-field.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-filled-tonal-button.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-filled-tonal-icon-button.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-filter-chip.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-full-screen-dialog.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-icon-button.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-input-chip.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-linear-progress-indicator.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-list.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-menu.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-navigation-bar.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-navigation-drawer.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-navigation-rail.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-outlined-autocomplete.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-outlined-button.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-outlined-card.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-outlined-icon-button.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-outlined-menu-button.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-outlined-segmented-button.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-outlined-select.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-outlined-text-field.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-plain-tooltip.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-primary-navigation-tab.scss +1 -3
- package/tokens/{v0_152 → v0_160}/_md-comp-radio-button.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-rich-tooltip.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-scrim.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-search-bar.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-search-view.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-secondary-navigation-tab.scss +1 -3
- package/tokens/{v0_152 → v0_160}/_md-comp-sheet-bottom.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-sheet-floating.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-sheet-side.scss +10 -10
- package/tokens/{v0_152 → v0_160}/_md-comp-slider.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-snackbar.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-standard-menu-button.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-suggestion-chip.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-switch.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-text-button.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-time-input.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-time-picker.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-top-app-bar-large.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-top-app-bar-medium.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-top-app-bar-small-centered.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-comp-top-app-bar-small.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-ref-palette.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-ref-typeface.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-sys-color.scss +217 -1
- package/tokens/{v0_152 → v0_160}/_md-sys-elevation.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-sys-motion.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-sys-shape.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-sys-state.scss +1 -1
- package/tokens/{v0_152 → v0_160}/_md-sys-typescale.scss +1 -1
- package/tokens/v0_160/index.test.css.d.ts +1 -0
- package/tokens/v0_160/lib.test.css.d.ts +1 -0
- /package/{tokens/v0_152/index.test.css.d.ts → slider/lib/forced-colors-styles.css.d.ts} +0 -0
- /package/{tokens/v0_152/lib.test.css.d.ts → slider/lib/slider-styles.css.d.ts} +0 -0
- /package/tokens/{v0_152 → v0_160}/_index.scss +0 -0
- /package/tokens/{v0_152 → v0_160}/index.test.css.js +0 -0
- /package/tokens/{v0_152 → v0_160}/index.test.css.js.map +0 -0
- /package/tokens/{v0_152 → v0_160}/index.test.scss +0 -0
- /package/tokens/{v0_152 → v0_160}/lib.test.css.js +0 -0
- /package/tokens/{v0_152 → v0_160}/lib.test.css.js.map +0 -0
- /package/tokens/{v0_152 → v0_160}/lib.test.scss +0 -0
|
@@ -6,10 +6,14 @@
|
|
|
6
6
|
// stylelint-disable selector-class-pattern --
|
|
7
7
|
// Selector '.md3-*' should only be used in this project.
|
|
8
8
|
|
|
9
|
+
// go/keep-sorted start
|
|
9
10
|
@use 'sass:map';
|
|
11
|
+
// go/keep-sorted end
|
|
12
|
+
// go/keep-sorted start
|
|
10
13
|
@use '../../elevation/lib/elevation';
|
|
11
14
|
@use '../../sass/theme';
|
|
12
15
|
@use './md-comp-menu-surface';
|
|
16
|
+
// go/keep-sorted end
|
|
13
17
|
|
|
14
18
|
$_custom-property-prefix: 'menu-surface';
|
|
15
19
|
$_fade-in-duration: 0.03s;
|
|
@@ -5,37 +5,6 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { Corner, CornerBit, cssClasses, numbers, strings } from './constants.js';
|
|
7
7
|
export class MDCMenuSurfaceFoundation {
|
|
8
|
-
constructor(adapter) {
|
|
9
|
-
this.isSurfaceOpen = false;
|
|
10
|
-
this.isQuickOpen = false;
|
|
11
|
-
this.isHoistedElement = false;
|
|
12
|
-
this.isFixedPosition = false;
|
|
13
|
-
this.isHorizontallyCenteredOnViewport = false;
|
|
14
|
-
this.maxHeight = 0;
|
|
15
|
-
this.openBottomBias = 0;
|
|
16
|
-
this.openAnimationEndTimerId = 0;
|
|
17
|
-
this.closeAnimationEndTimerId = 0;
|
|
18
|
-
this.animationRequestId = 0;
|
|
19
|
-
this.anchorCorner = Corner.TOP_START;
|
|
20
|
-
/**
|
|
21
|
-
* Corner of the menu surface to which menu surface is attached to anchor.
|
|
22
|
-
*
|
|
23
|
-
* Anchor corner --->+----------+
|
|
24
|
-
* | ANCHOR |
|
|
25
|
-
* +----------+
|
|
26
|
-
* Origin corner --->+--------------+
|
|
27
|
-
* | |
|
|
28
|
-
* | |
|
|
29
|
-
* | MENU SURFACE |
|
|
30
|
-
* | |
|
|
31
|
-
* | |
|
|
32
|
-
* +--------------+
|
|
33
|
-
*/
|
|
34
|
-
this.originCorner = Corner.TOP_START;
|
|
35
|
-
this.anchorMargin = { top: 0, right: 0, bottom: 0, left: 0 };
|
|
36
|
-
this.position = { x: 0, y: 0 };
|
|
37
|
-
this.adapter = { ...MDCMenuSurfaceFoundation.defaultAdapter, ...adapter };
|
|
38
|
-
}
|
|
39
8
|
static get cssClasses() {
|
|
40
9
|
return cssClasses;
|
|
41
10
|
}
|
|
@@ -78,6 +47,37 @@ export class MDCMenuSurfaceFoundation {
|
|
|
78
47
|
};
|
|
79
48
|
// tslint:enable:object-literal-sort-keys
|
|
80
49
|
}
|
|
50
|
+
constructor(adapter) {
|
|
51
|
+
this.isSurfaceOpen = false;
|
|
52
|
+
this.isQuickOpen = false;
|
|
53
|
+
this.isHoistedElement = false;
|
|
54
|
+
this.isFixedPosition = false;
|
|
55
|
+
this.isHorizontallyCenteredOnViewport = false;
|
|
56
|
+
this.maxHeight = 0;
|
|
57
|
+
this.openBottomBias = 0;
|
|
58
|
+
this.openAnimationEndTimerId = 0;
|
|
59
|
+
this.closeAnimationEndTimerId = 0;
|
|
60
|
+
this.animationRequestId = 0;
|
|
61
|
+
this.anchorCorner = Corner.TOP_START;
|
|
62
|
+
/**
|
|
63
|
+
* Corner of the menu surface to which menu surface is attached to anchor.
|
|
64
|
+
*
|
|
65
|
+
* Anchor corner --->+----------+
|
|
66
|
+
* | ANCHOR |
|
|
67
|
+
* +----------+
|
|
68
|
+
* Origin corner --->+--------------+
|
|
69
|
+
* | |
|
|
70
|
+
* | |
|
|
71
|
+
* | MENU SURFACE |
|
|
72
|
+
* | |
|
|
73
|
+
* | |
|
|
74
|
+
* +--------------+
|
|
75
|
+
*/
|
|
76
|
+
this.originCorner = Corner.TOP_START;
|
|
77
|
+
this.anchorMargin = { top: 0, right: 0, bottom: 0, left: 0 };
|
|
78
|
+
this.position = { x: 0, y: 0 };
|
|
79
|
+
this.adapter = { ...MDCMenuSurfaceFoundation.defaultAdapter, ...adapter };
|
|
80
|
+
}
|
|
81
81
|
init() {
|
|
82
82
|
const { ROOT, OPEN } = MDCMenuSurfaceFoundation.cssClasses;
|
|
83
83
|
if (!this.adapter.hasClass(ROOT)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"foundation.js","sourceRoot":"","sources":["foundation.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {MDCMenuSurfaceAdapter} from './adapter.js';\nimport {Corner, CornerBit, cssClasses, numbers, strings} from './constants.js';\nimport {MDCMenuDimensions, MDCMenuDistance, MDCMenuPoint} from './types.js';\n\ninterface AutoLayoutMeasurements {\n anchorSize: MDCMenuDimensions;\n bodySize: MDCMenuDimensions;\n surfaceSize: MDCMenuDimensions;\n viewportDistance: MDCMenuDistance;\n viewportSize: MDCMenuDimensions;\n windowScroll: MDCMenuPoint;\n}\n\nexport class MDCMenuSurfaceFoundation {\n static get cssClasses() {\n return cssClasses;\n }\n\n static get strings() {\n return strings;\n }\n\n static get numbers() {\n return numbers;\n }\n\n static get Corner() {\n return Corner;\n }\n\n /**\n * @see {@link MDCMenuSurfaceAdapter} for typing information on parameters and return types.\n */\n static get defaultAdapter(): MDCMenuSurfaceAdapter {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n addClass: () => undefined,\n removeClass: () => undefined,\n hasClass: () => false,\n hasAnchor: () => false,\n\n isElementInContainer: () => false,\n isFocused: () => false,\n isRtl: () => false,\n\n getInnerDimensions: () => ({height: 0, width: 0}),\n getAnchorDimensions: () => null,\n getWindowDimensions: () => ({height: 0, width: 0}),\n getBodyDimensions: () => ({height: 0, width: 0}),\n getWindowScroll: () => ({x: 0, y: 0}),\n setPosition: () => undefined,\n setMaxHeight: () => undefined,\n setTransformOrigin: () => undefined,\n\n saveFocus: () => undefined,\n restoreFocus: () => undefined,\n\n notifyClose: () => undefined,\n notifyClosing: () => undefined,\n notifyOpen: () => undefined,\n notifyOpening: () => undefined,\n };\n // tslint:enable:object-literal-sort-keys\n }\n\n private readonly adapter: MDCMenuSurfaceAdapter;\n private isSurfaceOpen = false;\n private isQuickOpen = false;\n private isHoistedElement = false;\n private isFixedPosition = false;\n private isHorizontallyCenteredOnViewport = false;\n\n private maxHeight = 0;\n private openBottomBias = 0;\n\n private openAnimationEndTimerId = 0;\n private closeAnimationEndTimerId = 0;\n private animationRequestId = 0;\n\n private anchorCorner: Corner = Corner.TOP_START;\n\n /**\n * Corner of the menu surface to which menu surface is attached to anchor.\n *\n * Anchor corner --->+----------+\n * | ANCHOR |\n * +----------+\n * Origin corner --->+--------------+\n * | |\n * | |\n * | MENU SURFACE |\n * | |\n * | |\n * +--------------+\n */\n private originCorner: Corner = Corner.TOP_START;\n private readonly anchorMargin:\n MDCMenuDistance = {top: 0, right: 0, bottom: 0, left: 0};\n private readonly position: MDCMenuPoint = {x: 0, y: 0};\n\n private dimensions!: MDCMenuDimensions; // assigned in open()\n private measurements!: AutoLayoutMeasurements; // assigned in open()\n\n constructor(adapter: Partial<MDCMenuSurfaceAdapter>) {\n this.adapter = {...MDCMenuSurfaceFoundation.defaultAdapter, ...adapter};\n }\n\n init() {\n const {ROOT, OPEN} = MDCMenuSurfaceFoundation.cssClasses;\n\n if (!this.adapter.hasClass(ROOT)) {\n throw new Error(`${ROOT} class required in root element.`);\n }\n\n if (this.adapter.hasClass(OPEN)) {\n this.isSurfaceOpen = true;\n }\n }\n\n destroy() {\n clearTimeout(this.openAnimationEndTimerId);\n clearTimeout(this.closeAnimationEndTimerId);\n // Cancel any currently running animations.\n cancelAnimationFrame(this.animationRequestId);\n }\n\n /**\n * @param corner Default anchor corner alignment of top-left menu surface\n * corner.\n */\n setAnchorCorner(corner: Corner) {\n this.anchorCorner = corner;\n }\n\n /**\n * Flips menu corner horizontally.\n */\n flipCornerHorizontally() {\n this.originCorner = this.originCorner ^ CornerBit.RIGHT;\n }\n\n /**\n * @param margin Set of margin values from anchor.\n */\n setAnchorMargin(margin: Partial<MDCMenuDistance>) {\n this.anchorMargin.top = margin.top || 0;\n this.anchorMargin.right = margin.right || 0;\n this.anchorMargin.bottom = margin.bottom || 0;\n this.anchorMargin.left = margin.left || 0;\n }\n\n /** Used to indicate if the menu-surface is hoisted to the body. */\n setIsHoisted(isHoisted: boolean) {\n this.isHoistedElement = isHoisted;\n }\n\n /**\n * Used to set the menu-surface calculations based on a fixed position menu.\n */\n setFixedPosition(isFixedPosition: boolean) {\n this.isFixedPosition = isFixedPosition;\n }\n\n /**\n * @return Returns true if menu is in fixed (`position: fixed`) position.\n */\n isFixed() {\n return this.isFixedPosition;\n }\n\n /** Sets the menu-surface position on the page. */\n setAbsolutePosition(x: number, y: number) {\n this.position.x = this.isFinite(x) ? x : 0;\n this.position.y = this.isFinite(y) ? y : 0;\n }\n\n /** Sets whether menu-surface should be horizontally centered to viewport. */\n setIsHorizontallyCenteredOnViewport(isCentered: boolean) {\n this.isHorizontallyCenteredOnViewport = isCentered;\n }\n\n setQuickOpen(quickOpen: boolean) {\n this.isQuickOpen = quickOpen;\n }\n\n /**\n * Sets maximum menu-surface height on open.\n * @param maxHeight The desired max-height. Set to 0 (default) to\n * automatically calculate max height based on available viewport space.\n */\n setMaxHeight(maxHeight: number) {\n this.maxHeight = maxHeight;\n }\n\n /**\n * Set to a positive integer to influence the menu to preferentially open\n * below the anchor instead of above.\n * @param bias A value of `x` simulates an extra `x` pixels of available space\n * below the menu during positioning calculations.\n */\n setOpenBottomBias(bias: number) {\n this.openBottomBias = bias;\n }\n\n isOpen() {\n return this.isSurfaceOpen;\n }\n\n /**\n * Open the menu surface.\n */\n open() {\n if (this.isSurfaceOpen) {\n return;\n }\n\n this.adapter.notifyOpening();\n this.adapter.saveFocus();\n\n if (this.isQuickOpen) {\n this.isSurfaceOpen = true;\n this.adapter.addClass(MDCMenuSurfaceFoundation.cssClasses.OPEN);\n this.dimensions = this.adapter.getInnerDimensions();\n this.autoposition();\n this.adapter.notifyOpen();\n } else {\n this.adapter.addClass(MDCMenuSurfaceFoundation.cssClasses.ANIMATING_OPEN);\n this.animationRequestId = requestAnimationFrame(() => {\n this.dimensions = this.adapter.getInnerDimensions();\n this.autoposition();\n this.adapter.addClass(MDCMenuSurfaceFoundation.cssClasses.OPEN);\n this.openAnimationEndTimerId = setTimeout(() => {\n this.openAnimationEndTimerId = 0;\n this.adapter.removeClass(\n MDCMenuSurfaceFoundation.cssClasses.ANIMATING_OPEN);\n this.adapter.notifyOpen();\n }, numbers.TRANSITION_OPEN_DURATION);\n });\n\n this.isSurfaceOpen = true;\n }\n }\n\n /**\n * Closes the menu surface.\n */\n close(skipRestoreFocus = false) {\n if (!this.isSurfaceOpen) {\n return;\n }\n\n this.adapter.notifyClosing();\n\n if (this.isQuickOpen) {\n this.isSurfaceOpen = false;\n if (!skipRestoreFocus) {\n this.maybeRestoreFocus();\n }\n\n this.adapter.removeClass(MDCMenuSurfaceFoundation.cssClasses.OPEN);\n this.adapter.removeClass(\n MDCMenuSurfaceFoundation.cssClasses.IS_OPEN_BELOW);\n this.adapter.notifyClose();\n\n return;\n }\n\n this.adapter.addClass(MDCMenuSurfaceFoundation.cssClasses.ANIMATING_CLOSED);\n requestAnimationFrame(() => {\n this.adapter.removeClass(MDCMenuSurfaceFoundation.cssClasses.OPEN);\n this.adapter.removeClass(\n MDCMenuSurfaceFoundation.cssClasses.IS_OPEN_BELOW);\n this.closeAnimationEndTimerId = setTimeout(() => {\n this.closeAnimationEndTimerId = 0;\n this.adapter.removeClass(\n MDCMenuSurfaceFoundation.cssClasses.ANIMATING_CLOSED);\n this.adapter.notifyClose();\n }, numbers.TRANSITION_CLOSE_DURATION);\n });\n\n this.isSurfaceOpen = false;\n if (!skipRestoreFocus) {\n this.maybeRestoreFocus();\n }\n }\n\n /** Handle clicks and close if not within menu-surface element. */\n handleBodyClick(evt: MouseEvent) {\n const el = evt.target as Element;\n if (this.adapter.isElementInContainer(el)) {\n return;\n }\n this.close();\n }\n\n /** Handle keys that close the surface. */\n handleKeydown(evt: KeyboardEvent) {\n const {keyCode, key} = evt;\n\n const isEscape = key === 'Escape' || keyCode === 27;\n if (isEscape) {\n this.close();\n }\n }\n\n private autoposition() {\n // Compute measurements for autoposition methods reuse.\n this.measurements = this.getAutoLayoutmeasurements();\n\n const corner = this.getOriginCorner();\n const maxMenuSurfaceHeight = this.getMenuSurfaceMaxHeight(corner);\n const verticalAlignment =\n this.hasBit(corner, CornerBit.BOTTOM) ? 'bottom' : 'top';\n let horizontalAlignment =\n this.hasBit(corner, CornerBit.RIGHT) ? 'right' : 'left';\n const horizontalOffset = this.getHorizontalOriginOffset(corner);\n const verticalOffset = this.getVerticalOriginOffset(corner);\n const {anchorSize, surfaceSize} = this.measurements;\n\n const position: Partial<MDCMenuDistance> = {\n [horizontalAlignment]: horizontalOffset,\n [verticalAlignment]: verticalOffset,\n };\n\n // Center align when anchor width is comparable or greater than menu\n // surface, otherwise keep corner.\n if (anchorSize.width / surfaceSize.width >\n numbers.ANCHOR_TO_MENU_SURFACE_WIDTH_RATIO) {\n horizontalAlignment = 'center';\n }\n\n // If the menu-surface has been hoisted to the body, it's no longer relative\n // to the anchor element\n if (this.isHoistedElement || this.isFixedPosition) {\n this.adjustPositionForHoistedElement(position);\n }\n\n this.adapter.setTransformOrigin(\n `${horizontalAlignment} ${verticalAlignment}`);\n this.adapter.setPosition(position);\n this.adapter.setMaxHeight(\n maxMenuSurfaceHeight ? maxMenuSurfaceHeight + 'px' : '');\n\n // If it is opened from the top then add is-open-below class\n if (!this.hasBit(corner, CornerBit.BOTTOM)) {\n this.adapter.addClass(MDCMenuSurfaceFoundation.cssClasses.IS_OPEN_BELOW);\n }\n }\n\n /**\n * @return Measurements used to position menu surface popup.\n */\n private getAutoLayoutmeasurements(): AutoLayoutMeasurements {\n let anchorRect = this.adapter.getAnchorDimensions();\n const bodySize = this.adapter.getBodyDimensions();\n const viewportSize = this.adapter.getWindowDimensions();\n const windowScroll = this.adapter.getWindowScroll();\n\n if (!anchorRect) {\n // tslint:disable:object-literal-sort-keys Positional properties are more readable when they're grouped together\n anchorRect = {\n top: this.position.y,\n right: this.position.x,\n bottom: this.position.y,\n left: this.position.x,\n width: 0,\n height: 0,\n } as any;\n // tslint:enable:object-literal-sort-keys\n }\n\n return {\n anchorSize: anchorRect!,\n bodySize,\n surfaceSize: this.dimensions,\n viewportDistance: {\n // tslint:disable:object-literal-sort-keys Positional properties are more readable when they're grouped together\n top: anchorRect!.top,\n right: viewportSize.width - anchorRect!.right,\n bottom: viewportSize.height - anchorRect!.bottom,\n left: anchorRect!.left,\n // tslint:enable:object-literal-sort-keys\n },\n viewportSize,\n windowScroll,\n };\n }\n\n /**\n * Computes the corner of the anchor from which to animate and position the\n * menu surface.\n *\n * Only LEFT or RIGHT bit is used to position the menu surface ignoring RTL\n * context. E.g., menu surface will be positioned from right side on TOP_END.\n */\n private getOriginCorner(): Corner {\n let corner = this.originCorner;\n\n const {viewportDistance, anchorSize, surfaceSize} = this.measurements;\n const {MARGIN_TO_EDGE} = MDCMenuSurfaceFoundation.numbers;\n\n const isAnchoredToBottom = this.hasBit(this.anchorCorner, CornerBit.BOTTOM);\n\n let availableTop;\n let availableBottom;\n if (isAnchoredToBottom) {\n availableTop =\n viewportDistance.top - MARGIN_TO_EDGE + this.anchorMargin.bottom;\n availableBottom =\n viewportDistance.bottom - MARGIN_TO_EDGE - this.anchorMargin.bottom;\n } else {\n availableTop =\n viewportDistance.top - MARGIN_TO_EDGE + this.anchorMargin.top;\n availableBottom = viewportDistance.bottom - MARGIN_TO_EDGE +\n anchorSize.height - this.anchorMargin.top;\n }\n\n const isAvailableBottom = availableBottom - surfaceSize.height > 0;\n if (!isAvailableBottom &&\n availableTop > availableBottom + this.openBottomBias) {\n // Attach bottom side of surface to the anchor.\n corner = this.setBit(corner, CornerBit.BOTTOM);\n }\n\n const isRtl = this.adapter.isRtl();\n const isFlipRtl = this.hasBit(this.anchorCorner, CornerBit.FLIP_RTL);\n const hasRightBit = this.hasBit(this.anchorCorner, CornerBit.RIGHT) ||\n this.hasBit(corner, CornerBit.RIGHT);\n\n // Whether surface attached to right side of anchor element.\n let isAnchoredToRight = false;\n\n // Anchored to start\n if (isRtl && isFlipRtl) {\n isAnchoredToRight = !hasRightBit;\n } else {\n // Anchored to right\n isAnchoredToRight = hasRightBit;\n }\n\n let availableLeft;\n let availableRight;\n if (isAnchoredToRight) {\n availableLeft =\n viewportDistance.left + anchorSize.width + this.anchorMargin.right;\n availableRight = viewportDistance.right - this.anchorMargin.right;\n } else {\n availableLeft = viewportDistance.left + this.anchorMargin.left;\n availableRight =\n viewportDistance.right + anchorSize.width - this.anchorMargin.left;\n }\n\n const isAvailableLeft = availableLeft - surfaceSize.width > 0;\n const isAvailableRight = availableRight - surfaceSize.width > 0;\n const isOriginCornerAlignedToEnd =\n this.hasBit(corner, CornerBit.FLIP_RTL) &&\n this.hasBit(corner, CornerBit.RIGHT);\n\n if (isAvailableRight && isOriginCornerAlignedToEnd && isRtl ||\n !isAvailableLeft && isOriginCornerAlignedToEnd) {\n // Attach left side of surface to the anchor.\n corner = this.unsetBit(corner, CornerBit.RIGHT);\n } else if (\n isAvailableLeft && isAnchoredToRight && isRtl ||\n (isAvailableLeft && !isAnchoredToRight && hasRightBit) ||\n (!isAvailableRight && availableLeft >= availableRight)) {\n // Attach right side of surface to the anchor.\n corner = this.setBit(corner, CornerBit.RIGHT);\n }\n\n return corner;\n }\n\n /**\n * @param corner Origin corner of the menu surface.\n * @return Maximum height of the menu surface, based on available space. 0\n * indicates should not be set.\n */\n private getMenuSurfaceMaxHeight(corner: Corner): number {\n if (this.maxHeight > 0) {\n return this.maxHeight;\n }\n\n const {viewportDistance} = this.measurements;\n\n let maxHeight = 0;\n const isBottomAligned = this.hasBit(corner, CornerBit.BOTTOM);\n const isBottomAnchored = this.hasBit(this.anchorCorner, CornerBit.BOTTOM);\n const {MARGIN_TO_EDGE} = MDCMenuSurfaceFoundation.numbers;\n\n // When maximum height is not specified, it is handled from CSS.\n if (isBottomAligned) {\n maxHeight = viewportDistance.top + this.anchorMargin.top - MARGIN_TO_EDGE;\n if (!isBottomAnchored) {\n maxHeight += this.measurements.anchorSize.height;\n }\n } else {\n maxHeight = viewportDistance.bottom - this.anchorMargin.bottom +\n this.measurements.anchorSize.height - MARGIN_TO_EDGE;\n if (isBottomAnchored) {\n maxHeight -= this.measurements.anchorSize.height;\n }\n }\n\n return maxHeight;\n }\n\n /**\n * @param corner Origin corner of the menu surface.\n * @return Horizontal offset of menu surface origin corner from corresponding\n * anchor corner.\n */\n private getHorizontalOriginOffset(corner: Corner): number {\n const {anchorSize} = this.measurements;\n\n // isRightAligned corresponds to using the 'right' property on the surface.\n const isRightAligned = this.hasBit(corner, CornerBit.RIGHT);\n const avoidHorizontalOverlap =\n this.hasBit(this.anchorCorner, CornerBit.RIGHT);\n\n if (isRightAligned) {\n const rightOffset = avoidHorizontalOverlap ?\n anchorSize.width - this.anchorMargin.left :\n this.anchorMargin.right;\n\n // For hoisted or fixed elements, adjust the offset by the difference\n // between viewport width and body width so when we calculate the right\n // value (`adjustPositionForHoistedElement`) based on the element\n // position, the right property is correct.\n if (this.isHoistedElement || this.isFixedPosition) {\n return rightOffset -\n (this.measurements.viewportSize.width -\n this.measurements.bodySize.width);\n }\n\n return rightOffset;\n }\n\n return avoidHorizontalOverlap ? anchorSize.width - this.anchorMargin.right :\n this.anchorMargin.left;\n }\n\n /**\n * @param corner Origin corner of the menu surface.\n * @return Vertical offset of menu surface origin corner from corresponding\n * anchor corner.\n */\n private getVerticalOriginOffset(corner: Corner): number {\n const {anchorSize} = this.measurements;\n const isBottomAligned = this.hasBit(corner, CornerBit.BOTTOM);\n const avoidVerticalOverlap =\n this.hasBit(this.anchorCorner, CornerBit.BOTTOM);\n\n let y = 0;\n if (isBottomAligned) {\n y = avoidVerticalOverlap ? anchorSize.height - this.anchorMargin.top :\n -this.anchorMargin.bottom;\n } else {\n y = avoidVerticalOverlap ?\n (anchorSize.height + this.anchorMargin.bottom) :\n this.anchorMargin.top;\n }\n return y;\n }\n\n /**\n * Calculates the offsets for positioning the menu-surface when the\n * menu-surface has been hoisted to the body.\n */\n private adjustPositionForHoistedElement(position: Partial<MDCMenuDistance>) {\n const {windowScroll, viewportDistance, surfaceSize, viewportSize} =\n this.measurements;\n\n const props =\n Object.keys(position) as Array<keyof Partial<MDCMenuDistance>>;\n\n for (const prop of props) {\n let value = position[prop] || 0;\n\n if (this.isHorizontallyCenteredOnViewport &&\n (prop === 'left' || prop === 'right')) {\n position[prop] = (viewportSize.width - surfaceSize.width) / 2;\n continue;\n }\n\n // Hoisted surfaces need to have the anchor elements location on the page\n // added to the position properties for proper alignment on the body.\n value += viewportDistance[prop];\n\n // Surfaces that are absolutely positioned need to have additional\n // calculations for scroll and bottom positioning.\n if (!this.isFixedPosition) {\n if (prop === 'top') {\n value += windowScroll.y;\n } else if (prop === 'bottom') {\n value -= windowScroll.y;\n } else if (prop === 'left') {\n value += windowScroll.x;\n } else { // prop === 'right'\n value -= windowScroll.x;\n }\n }\n\n position[prop] = value;\n }\n }\n\n /**\n * The last focused element when the menu surface was opened should regain\n * focus, if the user is focused on or within the menu surface when it is\n * closed.\n */\n private maybeRestoreFocus() {\n const isRootFocused = this.adapter.isFocused();\n const ownerDocument = this.adapter.getOwnerDocument ?\n this.adapter.getOwnerDocument() :\n document;\n const childHasFocus = ownerDocument.activeElement &&\n this.adapter.isElementInContainer(ownerDocument.activeElement);\n if (isRootFocused || childHasFocus) {\n // Wait before restoring focus when closing the menu surface. This is\n // important because if a touch event triggered the menu close, and the\n // subsequent mouse event occurs after focus is restored, then the\n // restored focus would be lost.\n setTimeout(() => {\n this.adapter.restoreFocus();\n }, numbers.TOUCH_EVENT_WAIT_MS);\n }\n }\n\n private hasBit(corner: Corner, bit: CornerBit): boolean {\n return Boolean(corner & bit); // tslint:disable-line:no-bitwise\n }\n\n private setBit(corner: Corner, bit: CornerBit): Corner {\n return corner | bit; // tslint:disable-line:no-bitwise\n }\n\n private unsetBit(corner: Corner, bit: CornerBit): Corner {\n return corner ^ bit;\n }\n\n /**\n * isFinite that doesn't force conversion to number type.\n * Equivalent to Number.isFinite in ES2015, which is not supported in IE.\n */\n private isFinite(num: number): boolean {\n return typeof num === 'number' && isFinite(num);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"foundation.js","sourceRoot":"","sources":["foundation.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {MDCMenuSurfaceAdapter} from './adapter.js';\nimport {Corner, CornerBit, cssClasses, numbers, strings} from './constants.js';\nimport {MDCMenuDimensions, MDCMenuDistance, MDCMenuPoint} from './types.js';\n\ninterface AutoLayoutMeasurements {\n anchorSize: MDCMenuDimensions;\n bodySize: MDCMenuDimensions;\n surfaceSize: MDCMenuDimensions;\n viewportDistance: MDCMenuDistance;\n viewportSize: MDCMenuDimensions;\n windowScroll: MDCMenuPoint;\n}\n\nexport class MDCMenuSurfaceFoundation {\n static get cssClasses() {\n return cssClasses;\n }\n\n static get strings() {\n return strings;\n }\n\n static get numbers() {\n return numbers;\n }\n\n static get Corner() {\n return Corner;\n }\n\n /**\n * @see {@link MDCMenuSurfaceAdapter} for typing information on parameters and return types.\n */\n static get defaultAdapter(): MDCMenuSurfaceAdapter {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n addClass: () => undefined,\n removeClass: () => undefined,\n hasClass: () => false,\n hasAnchor: () => false,\n\n isElementInContainer: () => false,\n isFocused: () => false,\n isRtl: () => false,\n\n getInnerDimensions: () => ({height: 0, width: 0}),\n getAnchorDimensions: () => null,\n getWindowDimensions: () => ({height: 0, width: 0}),\n getBodyDimensions: () => ({height: 0, width: 0}),\n getWindowScroll: () => ({x: 0, y: 0}),\n setPosition: () => undefined,\n setMaxHeight: () => undefined,\n setTransformOrigin: () => undefined,\n\n saveFocus: () => undefined,\n restoreFocus: () => undefined,\n\n notifyClose: () => undefined,\n notifyClosing: () => undefined,\n notifyOpen: () => undefined,\n notifyOpening: () => undefined,\n };\n // tslint:enable:object-literal-sort-keys\n }\n\n private readonly adapter: MDCMenuSurfaceAdapter;\n private isSurfaceOpen = false;\n private isQuickOpen = false;\n private isHoistedElement = false;\n private isFixedPosition = false;\n private isHorizontallyCenteredOnViewport = false;\n\n private maxHeight = 0;\n private openBottomBias = 0;\n\n private openAnimationEndTimerId = 0;\n private closeAnimationEndTimerId = 0;\n private animationRequestId = 0;\n\n private anchorCorner: Corner = Corner.TOP_START;\n\n /**\n * Corner of the menu surface to which menu surface is attached to anchor.\n *\n * Anchor corner --->+----------+\n * | ANCHOR |\n * +----------+\n * Origin corner --->+--------------+\n * | |\n * | |\n * | MENU SURFACE |\n * | |\n * | |\n * +--------------+\n */\n private originCorner: Corner = Corner.TOP_START;\n private readonly anchorMargin:\n MDCMenuDistance = {top: 0, right: 0, bottom: 0, left: 0};\n private readonly position: MDCMenuPoint = {x: 0, y: 0};\n\n private dimensions!: MDCMenuDimensions; // assigned in open()\n private measurements!: AutoLayoutMeasurements; // assigned in open()\n\n constructor(adapter: Partial<MDCMenuSurfaceAdapter>) {\n this.adapter = {...MDCMenuSurfaceFoundation.defaultAdapter, ...adapter};\n }\n\n init() {\n const {ROOT, OPEN} = MDCMenuSurfaceFoundation.cssClasses;\n\n if (!this.adapter.hasClass(ROOT)) {\n throw new Error(`${ROOT} class required in root element.`);\n }\n\n if (this.adapter.hasClass(OPEN)) {\n this.isSurfaceOpen = true;\n }\n }\n\n destroy() {\n clearTimeout(this.openAnimationEndTimerId);\n clearTimeout(this.closeAnimationEndTimerId);\n // Cancel any currently running animations.\n cancelAnimationFrame(this.animationRequestId);\n }\n\n /**\n * @param corner Default anchor corner alignment of top-left menu surface\n * corner.\n */\n setAnchorCorner(corner: Corner) {\n this.anchorCorner = corner;\n }\n\n /**\n * Flips menu corner horizontally.\n */\n flipCornerHorizontally() {\n this.originCorner = this.originCorner ^ CornerBit.RIGHT;\n }\n\n /**\n * @param margin Set of margin values from anchor.\n */\n setAnchorMargin(margin: Partial<MDCMenuDistance>) {\n this.anchorMargin.top = margin.top || 0;\n this.anchorMargin.right = margin.right || 0;\n this.anchorMargin.bottom = margin.bottom || 0;\n this.anchorMargin.left = margin.left || 0;\n }\n\n /** Used to indicate if the menu-surface is hoisted to the body. */\n setIsHoisted(isHoisted: boolean) {\n this.isHoistedElement = isHoisted;\n }\n\n /**\n * Used to set the menu-surface calculations based on a fixed position menu.\n */\n setFixedPosition(isFixedPosition: boolean) {\n this.isFixedPosition = isFixedPosition;\n }\n\n /**\n * @return Returns true if menu is in fixed (`position: fixed`) position.\n */\n isFixed() {\n return this.isFixedPosition;\n }\n\n /** Sets the menu-surface position on the page. */\n setAbsolutePosition(x: number, y: number) {\n this.position.x = this.isFinite(x) ? x : 0;\n this.position.y = this.isFinite(y) ? y : 0;\n }\n\n /** Sets whether menu-surface should be horizontally centered to viewport. */\n setIsHorizontallyCenteredOnViewport(isCentered: boolean) {\n this.isHorizontallyCenteredOnViewport = isCentered;\n }\n\n setQuickOpen(quickOpen: boolean) {\n this.isQuickOpen = quickOpen;\n }\n\n /**\n * Sets maximum menu-surface height on open.\n * @param maxHeight The desired max-height. Set to 0 (default) to\n * automatically calculate max height based on available viewport space.\n */\n setMaxHeight(maxHeight: number) {\n this.maxHeight = maxHeight;\n }\n\n /**\n * Set to a positive integer to influence the menu to preferentially open\n * below the anchor instead of above.\n * @param bias A value of `x` simulates an extra `x` pixels of available space\n * below the menu during positioning calculations.\n */\n setOpenBottomBias(bias: number) {\n this.openBottomBias = bias;\n }\n\n isOpen() {\n return this.isSurfaceOpen;\n }\n\n /**\n * Open the menu surface.\n */\n open() {\n if (this.isSurfaceOpen) {\n return;\n }\n\n this.adapter.notifyOpening();\n this.adapter.saveFocus();\n\n if (this.isQuickOpen) {\n this.isSurfaceOpen = true;\n this.adapter.addClass(MDCMenuSurfaceFoundation.cssClasses.OPEN);\n this.dimensions = this.adapter.getInnerDimensions();\n this.autoposition();\n this.adapter.notifyOpen();\n } else {\n this.adapter.addClass(MDCMenuSurfaceFoundation.cssClasses.ANIMATING_OPEN);\n this.animationRequestId = requestAnimationFrame(() => {\n this.dimensions = this.adapter.getInnerDimensions();\n this.autoposition();\n this.adapter.addClass(MDCMenuSurfaceFoundation.cssClasses.OPEN);\n this.openAnimationEndTimerId = setTimeout(() => {\n this.openAnimationEndTimerId = 0;\n this.adapter.removeClass(\n MDCMenuSurfaceFoundation.cssClasses.ANIMATING_OPEN);\n this.adapter.notifyOpen();\n }, numbers.TRANSITION_OPEN_DURATION);\n });\n\n this.isSurfaceOpen = true;\n }\n }\n\n /**\n * Closes the menu surface.\n */\n close(skipRestoreFocus = false) {\n if (!this.isSurfaceOpen) {\n return;\n }\n\n this.adapter.notifyClosing();\n\n if (this.isQuickOpen) {\n this.isSurfaceOpen = false;\n if (!skipRestoreFocus) {\n this.maybeRestoreFocus();\n }\n\n this.adapter.removeClass(MDCMenuSurfaceFoundation.cssClasses.OPEN);\n this.adapter.removeClass(\n MDCMenuSurfaceFoundation.cssClasses.IS_OPEN_BELOW);\n this.adapter.notifyClose();\n\n return;\n }\n\n this.adapter.addClass(MDCMenuSurfaceFoundation.cssClasses.ANIMATING_CLOSED);\n requestAnimationFrame(() => {\n this.adapter.removeClass(MDCMenuSurfaceFoundation.cssClasses.OPEN);\n this.adapter.removeClass(\n MDCMenuSurfaceFoundation.cssClasses.IS_OPEN_BELOW);\n this.closeAnimationEndTimerId = setTimeout(() => {\n this.closeAnimationEndTimerId = 0;\n this.adapter.removeClass(\n MDCMenuSurfaceFoundation.cssClasses.ANIMATING_CLOSED);\n this.adapter.notifyClose();\n }, numbers.TRANSITION_CLOSE_DURATION);\n });\n\n this.isSurfaceOpen = false;\n if (!skipRestoreFocus) {\n this.maybeRestoreFocus();\n }\n }\n\n /** Handle clicks and close if not within menu-surface element. */\n handleBodyClick(evt: MouseEvent) {\n const el = evt.target as Element;\n if (this.adapter.isElementInContainer(el)) {\n return;\n }\n this.close();\n }\n\n /** Handle keys that close the surface. */\n handleKeydown(evt: KeyboardEvent) {\n const {keyCode, key} = evt;\n\n const isEscape = key === 'Escape' || keyCode === 27;\n if (isEscape) {\n this.close();\n }\n }\n\n private autoposition() {\n // Compute measurements for autoposition methods reuse.\n this.measurements = this.getAutoLayoutmeasurements();\n\n const corner = this.getOriginCorner();\n const maxMenuSurfaceHeight = this.getMenuSurfaceMaxHeight(corner);\n const verticalAlignment =\n this.hasBit(corner, CornerBit.BOTTOM) ? 'bottom' : 'top';\n let horizontalAlignment =\n this.hasBit(corner, CornerBit.RIGHT) ? 'right' : 'left';\n const horizontalOffset = this.getHorizontalOriginOffset(corner);\n const verticalOffset = this.getVerticalOriginOffset(corner);\n const {anchorSize, surfaceSize} = this.measurements;\n\n const position: Partial<MDCMenuDistance> = {\n [horizontalAlignment]: horizontalOffset,\n [verticalAlignment]: verticalOffset,\n };\n\n // Center align when anchor width is comparable or greater than menu\n // surface, otherwise keep corner.\n if (anchorSize.width / surfaceSize.width >\n numbers.ANCHOR_TO_MENU_SURFACE_WIDTH_RATIO) {\n horizontalAlignment = 'center';\n }\n\n // If the menu-surface has been hoisted to the body, it's no longer relative\n // to the anchor element\n if (this.isHoistedElement || this.isFixedPosition) {\n this.adjustPositionForHoistedElement(position);\n }\n\n this.adapter.setTransformOrigin(\n `${horizontalAlignment} ${verticalAlignment}`);\n this.adapter.setPosition(position);\n this.adapter.setMaxHeight(\n maxMenuSurfaceHeight ? maxMenuSurfaceHeight + 'px' : '');\n\n // If it is opened from the top then add is-open-below class\n if (!this.hasBit(corner, CornerBit.BOTTOM)) {\n this.adapter.addClass(MDCMenuSurfaceFoundation.cssClasses.IS_OPEN_BELOW);\n }\n }\n\n /**\n * @return Measurements used to position menu surface popup.\n */\n private getAutoLayoutmeasurements(): AutoLayoutMeasurements {\n let anchorRect = this.adapter.getAnchorDimensions();\n const bodySize = this.adapter.getBodyDimensions();\n const viewportSize = this.adapter.getWindowDimensions();\n const windowScroll = this.adapter.getWindowScroll();\n\n if (!anchorRect) {\n // tslint:disable:object-literal-sort-keys Positional properties are more readable when they're grouped together\n anchorRect = {\n top: this.position.y,\n right: this.position.x,\n bottom: this.position.y,\n left: this.position.x,\n width: 0,\n height: 0,\n } as any;\n // tslint:enable:object-literal-sort-keys\n }\n\n return {\n anchorSize: anchorRect!,\n bodySize,\n surfaceSize: this.dimensions,\n viewportDistance: {\n // tslint:disable:object-literal-sort-keys Positional properties are more readable when they're grouped together\n top: anchorRect!.top,\n right: viewportSize.width - anchorRect!.right,\n bottom: viewportSize.height - anchorRect!.bottom,\n left: anchorRect!.left,\n // tslint:enable:object-literal-sort-keys\n },\n viewportSize,\n windowScroll,\n };\n }\n\n /**\n * Computes the corner of the anchor from which to animate and position the\n * menu surface.\n *\n * Only LEFT or RIGHT bit is used to position the menu surface ignoring RTL\n * context. E.g., menu surface will be positioned from right side on TOP_END.\n */\n private getOriginCorner(): Corner {\n let corner = this.originCorner;\n\n const {viewportDistance, anchorSize, surfaceSize} = this.measurements;\n const {MARGIN_TO_EDGE} = MDCMenuSurfaceFoundation.numbers;\n\n const isAnchoredToBottom = this.hasBit(this.anchorCorner, CornerBit.BOTTOM);\n\n let availableTop;\n let availableBottom;\n if (isAnchoredToBottom) {\n availableTop =\n viewportDistance.top - MARGIN_TO_EDGE + this.anchorMargin.bottom;\n availableBottom =\n viewportDistance.bottom - MARGIN_TO_EDGE - this.anchorMargin.bottom;\n } else {\n availableTop =\n viewportDistance.top - MARGIN_TO_EDGE + this.anchorMargin.top;\n availableBottom = viewportDistance.bottom - MARGIN_TO_EDGE +\n anchorSize.height - this.anchorMargin.top;\n }\n\n const isAvailableBottom = availableBottom - surfaceSize.height > 0;\n if (!isAvailableBottom &&\n availableTop > availableBottom + this.openBottomBias) {\n // Attach bottom side of surface to the anchor.\n corner = this.setBit(corner, CornerBit.BOTTOM);\n }\n\n const isRtl = this.adapter.isRtl();\n const isFlipRtl = this.hasBit(this.anchorCorner, CornerBit.FLIP_RTL);\n const hasRightBit = this.hasBit(this.anchorCorner, CornerBit.RIGHT) ||\n this.hasBit(corner, CornerBit.RIGHT);\n\n // Whether surface attached to right side of anchor element.\n let isAnchoredToRight = false;\n\n // Anchored to start\n if (isRtl && isFlipRtl) {\n isAnchoredToRight = !hasRightBit;\n } else {\n // Anchored to right\n isAnchoredToRight = hasRightBit;\n }\n\n let availableLeft;\n let availableRight;\n if (isAnchoredToRight) {\n availableLeft =\n viewportDistance.left + anchorSize.width + this.anchorMargin.right;\n availableRight = viewportDistance.right - this.anchorMargin.right;\n } else {\n availableLeft = viewportDistance.left + this.anchorMargin.left;\n availableRight =\n viewportDistance.right + anchorSize.width - this.anchorMargin.left;\n }\n\n const isAvailableLeft = availableLeft - surfaceSize.width > 0;\n const isAvailableRight = availableRight - surfaceSize.width > 0;\n const isOriginCornerAlignedToEnd =\n this.hasBit(corner, CornerBit.FLIP_RTL) &&\n this.hasBit(corner, CornerBit.RIGHT);\n\n if (isAvailableRight && isOriginCornerAlignedToEnd && isRtl ||\n !isAvailableLeft && isOriginCornerAlignedToEnd) {\n // Attach left side of surface to the anchor.\n corner = this.unsetBit(corner, CornerBit.RIGHT);\n } else if (\n isAvailableLeft && isAnchoredToRight && isRtl ||\n (isAvailableLeft && !isAnchoredToRight && hasRightBit) ||\n (!isAvailableRight && availableLeft >= availableRight)) {\n // Attach right side of surface to the anchor.\n corner = this.setBit(corner, CornerBit.RIGHT);\n }\n\n return corner;\n }\n\n /**\n * @param corner Origin corner of the menu surface.\n * @return Maximum height of the menu surface, based on available space. 0\n * indicates should not be set.\n */\n private getMenuSurfaceMaxHeight(corner: Corner): number {\n if (this.maxHeight > 0) {\n return this.maxHeight;\n }\n\n const {viewportDistance} = this.measurements;\n\n let maxHeight = 0;\n const isBottomAligned = this.hasBit(corner, CornerBit.BOTTOM);\n const isBottomAnchored = this.hasBit(this.anchorCorner, CornerBit.BOTTOM);\n const {MARGIN_TO_EDGE} = MDCMenuSurfaceFoundation.numbers;\n\n // When maximum height is not specified, it is handled from CSS.\n if (isBottomAligned) {\n maxHeight = viewportDistance.top + this.anchorMargin.top - MARGIN_TO_EDGE;\n if (!isBottomAnchored) {\n maxHeight += this.measurements.anchorSize.height;\n }\n } else {\n maxHeight = viewportDistance.bottom - this.anchorMargin.bottom +\n this.measurements.anchorSize.height - MARGIN_TO_EDGE;\n if (isBottomAnchored) {\n maxHeight -= this.measurements.anchorSize.height;\n }\n }\n\n return maxHeight;\n }\n\n /**\n * @param corner Origin corner of the menu surface.\n * @return Horizontal offset of menu surface origin corner from corresponding\n * anchor corner.\n */\n private getHorizontalOriginOffset(corner: Corner): number {\n const {anchorSize} = this.measurements;\n\n // isRightAligned corresponds to using the 'right' property on the surface.\n const isRightAligned = this.hasBit(corner, CornerBit.RIGHT);\n const avoidHorizontalOverlap =\n this.hasBit(this.anchorCorner, CornerBit.RIGHT);\n\n if (isRightAligned) {\n const rightOffset = avoidHorizontalOverlap ?\n anchorSize.width - this.anchorMargin.left :\n this.anchorMargin.right;\n\n // For hoisted or fixed elements, adjust the offset by the difference\n // between viewport width and body width so when we calculate the right\n // value (`adjustPositionForHoistedElement`) based on the element\n // position, the right property is correct.\n if (this.isHoistedElement || this.isFixedPosition) {\n return rightOffset -\n (this.measurements.viewportSize.width -\n this.measurements.bodySize.width);\n }\n\n return rightOffset;\n }\n\n return avoidHorizontalOverlap ? anchorSize.width - this.anchorMargin.right :\n this.anchorMargin.left;\n }\n\n /**\n * @param corner Origin corner of the menu surface.\n * @return Vertical offset of menu surface origin corner from corresponding\n * anchor corner.\n */\n private getVerticalOriginOffset(corner: Corner): number {\n const {anchorSize} = this.measurements;\n const isBottomAligned = this.hasBit(corner, CornerBit.BOTTOM);\n const avoidVerticalOverlap =\n this.hasBit(this.anchorCorner, CornerBit.BOTTOM);\n\n let y = 0;\n if (isBottomAligned) {\n y = avoidVerticalOverlap ? anchorSize.height - this.anchorMargin.top :\n -this.anchorMargin.bottom;\n } else {\n y = avoidVerticalOverlap ?\n (anchorSize.height + this.anchorMargin.bottom) :\n this.anchorMargin.top;\n }\n return y;\n }\n\n /**\n * Calculates the offsets for positioning the menu-surface when the\n * menu-surface has been hoisted to the body.\n */\n private adjustPositionForHoistedElement(position: Partial<MDCMenuDistance>) {\n const {windowScroll, viewportDistance, surfaceSize, viewportSize} =\n this.measurements;\n\n const props =\n Object.keys(position) as Array<keyof Partial<MDCMenuDistance>>;\n\n for (const prop of props) {\n let value = position[prop] || 0;\n\n if (this.isHorizontallyCenteredOnViewport &&\n (prop === 'left' || prop === 'right')) {\n position[prop] = (viewportSize.width - surfaceSize.width) / 2;\n continue;\n }\n\n // Hoisted surfaces need to have the anchor elements location on the page\n // added to the position properties for proper alignment on the body.\n value += viewportDistance[prop];\n\n // Surfaces that are absolutely positioned need to have additional\n // calculations for scroll and bottom positioning.\n if (!this.isFixedPosition) {\n if (prop === 'top') {\n value += windowScroll.y;\n } else if (prop === 'bottom') {\n value -= windowScroll.y;\n } else if (prop === 'left') {\n value += windowScroll.x;\n } else { // prop === 'right'\n value -= windowScroll.x;\n }\n }\n\n position[prop] = value;\n }\n }\n\n /**\n * The last focused element when the menu surface was opened should regain\n * focus, if the user is focused on or within the menu surface when it is\n * closed.\n */\n private maybeRestoreFocus() {\n const isRootFocused = this.adapter.isFocused();\n const ownerDocument = this.adapter.getOwnerDocument ?\n this.adapter.getOwnerDocument() :\n document;\n const childHasFocus = ownerDocument.activeElement &&\n this.adapter.isElementInContainer(ownerDocument.activeElement);\n if (isRootFocused || childHasFocus) {\n // Wait before restoring focus when closing the menu surface. This is\n // important because if a touch event triggered the menu close, and the\n // subsequent mouse event occurs after focus is restored, then the\n // restored focus would be lost.\n setTimeout(() => {\n this.adapter.restoreFocus();\n }, numbers.TOUCH_EVENT_WAIT_MS);\n }\n }\n\n private hasBit(corner: Corner, bit: CornerBit): boolean {\n return Boolean(corner & bit); // tslint:disable-line:no-bitwise\n }\n\n private setBit(corner: Corner, bit: CornerBit): Corner {\n return corner | bit; // tslint:disable-line:no-bitwise\n }\n\n private unsetBit(corner: Corner, bit: CornerBit): Corner {\n return corner ^ bit;\n }\n\n /**\n * isFinite that doesn't force conversion to number type.\n * Equivalent to Number.isFinite in ES2015, which is not supported in IE.\n */\n private isFinite(num: number): boolean {\n return typeof num === 'number' && isFinite(num);\n }\n}\n"]}
|
|
@@ -9,8 +9,8 @@ import { ClassInfo } from 'lit/directives/class-map.js';
|
|
|
9
9
|
import { MDCMenuSurfaceAdapter } from './adapter.js';
|
|
10
10
|
import { Corner as CornerEnum } from './constants.js';
|
|
11
11
|
import { MDCMenuSurfaceFoundation } from './foundation.js';
|
|
12
|
-
export
|
|
13
|
-
export
|
|
12
|
+
export type Corner = keyof typeof CornerEnum;
|
|
13
|
+
export type AnchorableElement = HTMLElement & {
|
|
14
14
|
anchor: Element | null;
|
|
15
15
|
};
|
|
16
16
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu-surface.js","sourceRoot":"","sources":["menu-surface.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// Style preference for leading underscores.\n// tslint:disable:strip-private-property-underscore\n\nimport '../../elevation/elevation.js';\n\nimport {html, LitElement, PropertyValues} from 'lit';\nimport {property, query, state} from 'lit/decorators.js';\nimport {ClassInfo, classMap} from 'lit/directives/class-map.js';\nimport {styleMap} from 'lit/directives/style-map.js';\n\nimport {isRtl} from '../../controller/is-rtl.js';\n\nimport {MDCMenuSurfaceAdapter} from './adapter.js';\nimport {Corner as CornerEnum} from './constants.js';\nimport {MDCMenuSurfaceFoundation} from './foundation.js';\n\nexport type Corner = keyof typeof CornerEnum;\nexport type AnchorableElement = HTMLElement&{anchor: Element | null};\n\n// tslint:disable:no-bitwise\n\n// required for closure compiler\nconst stringToCorner = {\n 'TOP_LEFT': CornerEnum.TOP_LEFT,\n 'TOP_RIGHT': CornerEnum.TOP_RIGHT,\n 'BOTTOM_LEFT': CornerEnum.BOTTOM_LEFT,\n 'BOTTOM_RIGHT': CornerEnum.BOTTOM_RIGHT,\n 'TOP_START': CornerEnum.TOP_START,\n 'TOP_END': CornerEnum.TOP_END,\n 'BOTTOM_START': CornerEnum.BOTTOM_START,\n 'BOTTOM_END': CornerEnum.BOTTOM_END,\n};\n\n/**\n * @fires opened\n * @fires closed\n */\nexport abstract class MenuSurface extends LitElement {\n protected mdcFoundation!: MDCMenuSurfaceFoundation;\n\n @query('.md3-menu-surface') mdcRoot!: HTMLDivElement;\n\n @query('slot') slotElement!: HTMLSlotElement|null;\n\n @property({type: Boolean}) absolute = false;\n\n @property({type: Boolean}) fullwidth = false;\n\n @property({type: Boolean}) fixed = false;\n\n @property({type: Number}) x: number|null = null;\n\n @property({type: Number}) y: number|null = null;\n\n // must be defined before open or else race condition in foundation occurs.\n @property({type: Boolean}) quick = false;\n\n @property({type: Boolean, reflect: true}) open = false;\n\n @property({type: Boolean}) stayOpenOnBodyClick = false;\n\n @property({type: Boolean}) skipRestoreFocus = false;\n\n protected previousFlipMenuHorizontally = false;\n\n /**\n * Whether to align the menu surface to the opposite side of the default\n * alignment.\n */\n @property({type: Boolean}) flipMenuHorizontally = false;\n\n @property({type: String}) corner: Corner = 'BOTTOM_START';\n\n @state() protected styleTop = '';\n @state() protected styleLeft = '';\n @state() protected styleRight = '';\n @state() protected styleBottom = '';\n @state() protected styleMaxHeight = '';\n @state() protected styleTransformOrigin = '';\n\n anchor: HTMLElement|null = null;\n\n protected previouslyFocused: HTMLElement|Element|null = null;\n protected previousAnchor: HTMLElement|null = null;\n protected onBodyClickBound: (evt: MouseEvent) => void = () => undefined;\n\n override render() {\n const styles = {\n 'top': this.styleTop,\n 'left': this.styleLeft,\n 'right': this.styleRight,\n 'bottom': this.styleBottom,\n 'max-height': this.styleMaxHeight,\n 'transform-origin': this.styleTransformOrigin,\n };\n\n return html`\n <div\n class=\"md3-menu-surface ${classMap(this.getRenderClasses())}\"\n style=\"${styleMap(styles)}\"\n @keydown=${this.onKeydown}\n @opened=${this.registerBodyClick}\n @closed=${this.deregisterBodyClick}>\n <md-elevation shadow></md-elevation>\n <slot></slot>\n </div>`;\n }\n\n /** @soyTemplate */\n protected getRenderClasses(): ClassInfo {\n return {\n 'md3-menu-surface--fixed': this.fixed,\n 'md3-menu-surface--fullwidth': this.fullwidth,\n };\n }\n\n protected override updated(changedProperties: PropertyValues<MenuSurface>) {\n if (changedProperties.has('absolute') && !this.fixed) {\n this.mdcFoundation.setIsHoisted(this.absolute);\n }\n\n if (changedProperties.has('fixed') && !this.absolute) {\n this.mdcFoundation.setFixedPosition(this.fixed);\n }\n\n if ((changedProperties.has('x') || changedProperties.has('y')) &&\n this.x !== null && this.y !== null) {\n this.mdcFoundation.setAbsolutePosition(this.x, this.y);\n this.mdcFoundation.setAnchorMargin(\n {left: this.x, top: this.y, right: -this.y, bottom: this.y});\n }\n\n if (changedProperties.has('quick')) {\n this.mdcFoundation.setQuickOpen(this.quick);\n }\n\n if (changedProperties.has('open')) {\n const wasOpen = changedProperties.get('open');\n if (this.open) {\n this.mdcFoundation.open();\n // wasOpen helps with first render (when it is `undefined`) perf\n } else if (wasOpen !== undefined) {\n this.mdcFoundation.close(this.skipRestoreFocus);\n }\n }\n\n if (changedProperties.has('flipMenuHorizontally')) {\n if (this.previousFlipMenuHorizontally !== this.flipMenuHorizontally) {\n this.mdcFoundation.flipCornerHorizontally();\n }\n this.previousFlipMenuHorizontally = this.flipMenuHorizontally;\n }\n\n if (changedProperties.has('corner') && this.corner) {\n const bitwiseCorner = stringToCorner[this.corner];\n this.mdcFoundation.setAnchorCorner(bitwiseCorner);\n }\n }\n\n protected override firstUpdated() {\n if (this.mdcFoundation !== undefined) {\n this.mdcFoundation.destroy();\n }\n\n this.mdcFoundation = new MDCMenuSurfaceFoundation(this.createAdapter());\n this.mdcFoundation.init();\n }\n\n createAdapter(): MDCMenuSurfaceAdapter {\n return {\n addClass: (className: string) => {\n this.mdcRoot.classList.add(className);\n },\n removeClass: (className: string) => {\n this.mdcRoot.classList.remove(className);\n },\n hasClass: (className: string) =>\n this.mdcRoot.classList.contains(className),\n hasAnchor: () => {\n return !!this.anchor;\n },\n notifyClose: () => {\n const init: CustomEventInit = {bubbles: true, composed: true};\n const ev = new CustomEvent('closed', init);\n this.open = false;\n this.mdcRoot.dispatchEvent(ev);\n },\n notifyClosing: () => {\n const init: CustomEventInit = {bubbles: true, composed: true};\n const ev = new CustomEvent('closing', init);\n this.mdcRoot.dispatchEvent(ev);\n },\n notifyOpen: () => {\n const init: CustomEventInit = {bubbles: true, composed: true};\n const ev = new CustomEvent('opened', init);\n this.open = true;\n this.mdcRoot.dispatchEvent(ev);\n },\n notifyOpening: () => {\n const init: CustomEventInit = {bubbles: true, composed: true};\n const ev = new CustomEvent('opening', init);\n this.mdcRoot.dispatchEvent(ev);\n },\n isElementInContainer: () => false,\n isRtl: () => this.mdcRoot ? isRtl(this.mdcRoot) : false,\n setTransformOrigin: (origin) => {\n const root = this.mdcRoot;\n if (!root) {\n return;\n }\n\n this.styleTransformOrigin = origin;\n },\n isFocused: () => {\n return this.matches(':focus-within');\n },\n saveFocus: () => {\n this.previouslyFocused = document.activeElement;\n },\n restoreFocus: () => {\n if (!this.previouslyFocused) {\n return;\n }\n\n if ('focus' in this.previouslyFocused) {\n this.previouslyFocused.focus();\n }\n },\n getInnerDimensions: () => {\n const mdcRoot = this.mdcRoot;\n\n if (!mdcRoot) {\n return {width: 0, height: 0};\n }\n\n return {width: mdcRoot.offsetWidth, height: mdcRoot.offsetHeight};\n },\n getAnchorDimensions: () => {\n const anchorElement = this.anchor;\n\n return anchorElement ? anchorElement.getBoundingClientRect() : null;\n },\n getBodyDimensions: () => {\n return {\n width: document.body.clientWidth,\n height: document.body.clientHeight,\n };\n },\n getWindowDimensions: () => {\n return {\n width: window.innerWidth,\n height: window.innerHeight,\n };\n },\n getWindowScroll: () => {\n return {\n x: window.pageXOffset,\n y: window.pageYOffset,\n };\n },\n setPosition: (position) => {\n const mdcRoot = this.mdcRoot;\n\n if (!mdcRoot) {\n return;\n }\n\n this.styleLeft = 'left' in position ? `${position.left}px` : '';\n this.styleRight = 'right' in position ? `${position.right}px` : '';\n this.styleTop = 'top' in position ? `${position.top}px` : '';\n this.styleBottom = 'bottom' in position ? `${position.bottom}px` : '';\n },\n setMaxHeight: async (height) => {\n const mdcRoot = this.mdcRoot;\n\n if (!mdcRoot) {\n return;\n }\n\n // must set both for IE support as IE will not set a var\n this.styleMaxHeight = height;\n await this.updateComplete;\n this.styleMaxHeight = `var(--md3-menu-max-height, ${height})`;\n },\n };\n }\n\n protected onKeydown(evt: KeyboardEvent) {\n if (this.mdcFoundation) {\n this.mdcFoundation.handleKeydown(evt);\n }\n }\n\n protected onBodyClick(evt: MouseEvent) {\n if (this.stayOpenOnBodyClick) {\n return;\n }\n const path = evt.composedPath();\n if (path.indexOf(this) === -1) {\n this.close();\n }\n }\n\n protected registerBodyClick() {\n this.onBodyClickBound = this.onBodyClick.bind(this);\n // capture otherwise listener closes menu after quick menu opens\n document.body.addEventListener(\n 'click', this.onBodyClickBound, {passive: true, capture: true});\n }\n\n protected deregisterBodyClick() {\n document.body.removeEventListener(\n 'click', this.onBodyClickBound, {capture: true});\n }\n\n close() {\n this.open = false;\n }\n\n show() {\n this.open = true;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"menu-surface.js","sourceRoot":"","sources":["menu-surface.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAEH,4CAA4C;AAC5C,mDAAmD;AAEnD,OAAO,8BAA8B,CAAC;AAEtC,OAAO,EAAC,IAAI,EAAE,UAAU,EAAiB,MAAM,KAAK,CAAC;AACrD,OAAO,EAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAC,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAY,QAAQ,EAAC,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAC,QAAQ,EAAC,MAAM,6BAA6B,CAAC;AAErD,OAAO,EAAC,KAAK,EAAC,MAAM,4BAA4B,CAAC;AAGjD,OAAO,EAAC,MAAM,IAAI,UAAU,EAAC,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAC,wBAAwB,EAAC,MAAM,iBAAiB,CAAC;AAKzD,4BAA4B;AAE5B,gCAAgC;AAChC,MAAM,cAAc,GAAG;IACrB,UAAU,EAAE,UAAU,CAAC,QAAQ;IAC/B,WAAW,EAAE,UAAU,CAAC,SAAS;IACjC,aAAa,EAAE,UAAU,CAAC,WAAW;IACrC,cAAc,EAAE,UAAU,CAAC,YAAY;IACvC,WAAW,EAAE,UAAU,CAAC,SAAS;IACjC,SAAS,EAAE,UAAU,CAAC,OAAO;IAC7B,cAAc,EAAE,UAAU,CAAC,YAAY;IACvC,YAAY,EAAE,UAAU,CAAC,UAAU;CACpC,CAAC;AAEF;;;GAGG;AACH,MAAM,OAAgB,WAAY,SAAQ,UAAU;IAApD;;QAO6B,aAAQ,GAAG,KAAK,CAAC;QAEjB,cAAS,GAAG,KAAK,CAAC;QAElB,UAAK,GAAG,KAAK,CAAC;QAEf,MAAC,GAAgB,IAAI,CAAC;QAEtB,MAAC,GAAgB,IAAI,CAAC;QAEhD,2EAA2E;QAChD,UAAK,GAAG,KAAK,CAAC;QAEC,SAAI,GAAG,KAAK,CAAC;QAE5B,wBAAmB,GAAG,KAAK,CAAC;QAE5B,qBAAgB,GAAG,KAAK,CAAC;QAE1C,iCAA4B,GAAG,KAAK,CAAC;QAE/C;;;WAGG;QACwB,yBAAoB,GAAG,KAAK,CAAC;QAE9B,WAAM,GAAW,cAAc,CAAC;QAEvC,aAAQ,GAAG,EAAE,CAAC;QACd,cAAS,GAAG,EAAE,CAAC;QACf,eAAU,GAAG,EAAE,CAAC;QAChB,gBAAW,GAAG,EAAE,CAAC;QACjB,mBAAc,GAAG,EAAE,CAAC;QACpB,yBAAoB,GAAG,EAAE,CAAC;QAE7C,WAAM,GAAqB,IAAI,CAAC;QAEtB,sBAAiB,GAA6B,IAAI,CAAC;QACnD,mBAAc,GAAqB,IAAI,CAAC;QACxC,qBAAgB,GAA8B,GAAG,EAAE,CAAC,SAAS,CAAC;IA8O1E,CAAC;IA5OU,MAAM;QACb,MAAM,MAAM,GAAG;YACb,KAAK,EAAE,IAAI,CAAC,QAAQ;YACpB,MAAM,EAAE,IAAI,CAAC,SAAS;YACtB,OAAO,EAAE,IAAI,CAAC,UAAU;YACxB,QAAQ,EAAE,IAAI,CAAC,WAAW;YAC1B,YAAY,EAAE,IAAI,CAAC,cAAc;YACjC,kBAAkB,EAAE,IAAI,CAAC,oBAAoB;SAC9C,CAAC;QAEF,OAAO,IAAI,CAAA;;oCAEqB,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;mBAClD,QAAQ,CAAC,MAAM,CAAC;qBACd,IAAI,CAAC,SAAS;oBACf,IAAI,CAAC,iBAAiB;oBACtB,IAAI,CAAC,mBAAmB;;;aAG/B,CAAC;IACZ,CAAC;IAED,mBAAmB;IACT,gBAAgB;QACxB,OAAO;YACL,yBAAyB,EAAE,IAAI,CAAC,KAAK;YACrC,6BAA6B,EAAE,IAAI,CAAC,SAAS;SAC9C,CAAC;IACJ,CAAC;IAEkB,OAAO,CAAC,iBAA8C;QACvE,IAAI,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACpD,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAChD;QAED,IAAI,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACpD,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACjD;QAED,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC1D,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE;YACtC,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;YACvD,IAAI,CAAC,aAAa,CAAC,eAAe,CAC9B,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,EAAC,CAAC,CAAC;SAClE;QAED,IAAI,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YAClC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC7C;QAED,IAAI,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YACjC,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC9C,IAAI,IAAI,CAAC,IAAI,EAAE;gBACb,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;gBAC1B,gEAAgE;aACjE;iBAAM,IAAI,OAAO,KAAK,SAAS,EAAE;gBAChC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;aACjD;SACF;QAED,IAAI,iBAAiB,CAAC,GAAG,CAAC,sBAAsB,CAAC,EAAE;YACjD,IAAI,IAAI,CAAC,4BAA4B,KAAK,IAAI,CAAC,oBAAoB,EAAE;gBACnE,IAAI,CAAC,aAAa,CAAC,sBAAsB,EAAE,CAAC;aAC7C;YACD,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,oBAAoB,CAAC;SAC/D;QAED,IAAI,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;YAClD,MAAM,aAAa,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAClD,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;SACnD;IACH,CAAC;IAEkB,YAAY;QAC7B,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE;YACpC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;SAC9B;QAED,IAAI,CAAC,aAAa,GAAG,IAAI,wBAAwB,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QACxE,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;IAC5B,CAAC;IAED,aAAa;QACX,OAAO;YACL,QAAQ,EAAE,CAAC,SAAiB,EAAE,EAAE;gBAC9B,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACxC,CAAC;YACD,WAAW,EAAE,CAAC,SAAiB,EAAE,EAAE;gBACjC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC3C,CAAC;YACD,QAAQ,EAAE,CAAC,SAAiB,EAAE,EAAE,CAC5B,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC9C,SAAS,EAAE,GAAG,EAAE;gBACd,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;YACvB,CAAC;YACD,WAAW,EAAE,GAAG,EAAE;gBAChB,MAAM,IAAI,GAAoB,EAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC;gBAC9D,MAAM,EAAE,GAAG,IAAI,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;gBAC3C,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;gBAClB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YACjC,CAAC;YACD,aAAa,EAAE,GAAG,EAAE;gBAClB,MAAM,IAAI,GAAoB,EAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC;gBAC9D,MAAM,EAAE,GAAG,IAAI,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;gBAC5C,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YACjC,CAAC;YACD,UAAU,EAAE,GAAG,EAAE;gBACf,MAAM,IAAI,GAAoB,EAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC;gBAC9D,MAAM,EAAE,GAAG,IAAI,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;gBAC3C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;gBACjB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YACjC,CAAC;YACD,aAAa,EAAE,GAAG,EAAE;gBAClB,MAAM,IAAI,GAAoB,EAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC;gBAC9D,MAAM,EAAE,GAAG,IAAI,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;gBAC5C,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YACjC,CAAC;YACD,oBAAoB,EAAE,GAAG,EAAE,CAAC,KAAK;YACjC,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK;YACvD,kBAAkB,EAAE,CAAC,MAAM,EAAE,EAAE;gBAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC;gBAC1B,IAAI,CAAC,IAAI,EAAE;oBACT,OAAO;iBACR;gBAED,IAAI,CAAC,oBAAoB,GAAG,MAAM,CAAC;YACrC,CAAC;YACD,SAAS,EAAE,GAAG,EAAE;gBACd,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;YACvC,CAAC;YACD,SAAS,EAAE,GAAG,EAAE;gBACd,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,aAAa,CAAC;YAClD,CAAC;YACD,YAAY,EAAE,GAAG,EAAE;gBACjB,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;oBAC3B,OAAO;iBACR;gBAED,IAAI,OAAO,IAAI,IAAI,CAAC,iBAAiB,EAAE;oBACrC,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;iBAChC;YACH,CAAC;YACD,kBAAkB,EAAE,GAAG,EAAE;gBACvB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;gBAE7B,IAAI,CAAC,OAAO,EAAE;oBACZ,OAAO,EAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC,CAAC;iBAC9B;gBAED,OAAO,EAAC,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,YAAY,EAAC,CAAC;YACpE,CAAC;YACD,mBAAmB,EAAE,GAAG,EAAE;gBACxB,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC;gBAElC,OAAO,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YACtE,CAAC;YACD,iBAAiB,EAAE,GAAG,EAAE;gBACtB,OAAO;oBACL,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW;oBAChC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,YAAY;iBACnC,CAAC;YACJ,CAAC;YACD,mBAAmB,EAAE,GAAG,EAAE;gBACxB,OAAO;oBACL,KAAK,EAAE,MAAM,CAAC,UAAU;oBACxB,MAAM,EAAE,MAAM,CAAC,WAAW;iBAC3B,CAAC;YACJ,CAAC;YACD,eAAe,EAAE,GAAG,EAAE;gBACpB,OAAO;oBACL,CAAC,EAAE,MAAM,CAAC,WAAW;oBACrB,CAAC,EAAE,MAAM,CAAC,WAAW;iBACtB,CAAC;YACJ,CAAC;YACD,WAAW,EAAE,CAAC,QAAQ,EAAE,EAAE;gBACxB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;gBAE7B,IAAI,CAAC,OAAO,EAAE;oBACZ,OAAO;iBACR;gBAED,IAAI,CAAC,SAAS,GAAG,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChE,IAAI,CAAC,UAAU,GAAG,OAAO,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnE,IAAI,CAAC,QAAQ,GAAG,KAAK,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7D,IAAI,CAAC,WAAW,GAAG,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACxE,CAAC;YACD,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;gBAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;gBAE7B,IAAI,CAAC,OAAO,EAAE;oBACZ,OAAO;iBACR;gBAED,wDAAwD;gBACxD,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;gBAC7B,MAAM,IAAI,CAAC,cAAc,CAAC;gBAC1B,IAAI,CAAC,cAAc,GAAG,8BAA8B,MAAM,GAAG,CAAC;YAChE,CAAC;SACF,CAAC;IACJ,CAAC;IAES,SAAS,CAAC,GAAkB;QACpC,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;SACvC;IACH,CAAC;IAES,WAAW,CAAC,GAAe;QACnC,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5B,OAAO;SACR;QACD,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;YAC7B,IAAI,CAAC,KAAK,EAAE,CAAC;SACd;IACH,CAAC;IAES,iBAAiB;QACzB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,gEAAgE;QAChE,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAC1B,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,EAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC;IACtE,CAAC;IAES,mBAAmB;QAC3B,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAC7B,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC;IACvD,CAAC;IAED,KAAK;QACH,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;IACpB,CAAC;IAED,IAAI;QACF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AA1RC;IAAC,KAAK,CAAC,mBAAmB,CAAC;8BAAW,cAAc;4CAAC;AAErD;IAAC,KAAK,CAAC,MAAM,CAAC;8BAAe,eAAe;gDAAM;AAElD;IAAC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAC,CAAC;;6CAAkB;AAE5C;IAAC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAC,CAAC;;8CAAmB;AAE7C;IAAC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAC,CAAC;;0CAAe;AAEzC;IAAC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;;sCAAuB;AAEhD;IAAC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;;sCAAuB;AAGhD;IAAC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAC,CAAC;;0CAAe;AAEzC;IAAC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;;yCAAc;AAEvD;IAAC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAC,CAAC;;wDAA6B;AAEvD;IAAC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAC,CAAC;;qDAA0B;AAQpD;IAAC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAC,CAAC;;yDAA8B;AAExD;IAAC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;;2CAAiC;AAE1D;IAAC,KAAK,EAAE;;6CAAyB;AACjC;IAAC,KAAK,EAAE;;8CAA0B;AAClC;IAAC,KAAK,EAAE;;+CAA2B;AACnC;IAAC,KAAK,EAAE;;gDAA4B;AACpC;IAAC,KAAK,EAAE;;mDAA+B;AACvC;IAAC,KAAK,EAAE;;yDAAqC","sourcesContent":["/**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// Style preference for leading underscores.\n// tslint:disable:strip-private-property-underscore\n\nimport '../../elevation/elevation.js';\n\nimport {html, LitElement, PropertyValues} from 'lit';\nimport {property, query, state} from 'lit/decorators.js';\nimport {ClassInfo, classMap} from 'lit/directives/class-map.js';\nimport {styleMap} from 'lit/directives/style-map.js';\n\nimport {isRtl} from '../../controller/is-rtl.js';\n\nimport {MDCMenuSurfaceAdapter} from './adapter.js';\nimport {Corner as CornerEnum} from './constants.js';\nimport {MDCMenuSurfaceFoundation} from './foundation.js';\n\nexport type Corner = keyof typeof CornerEnum;\nexport type AnchorableElement = HTMLElement&{anchor: Element | null};\n\n// tslint:disable:no-bitwise\n\n// required for closure compiler\nconst stringToCorner = {\n 'TOP_LEFT': CornerEnum.TOP_LEFT,\n 'TOP_RIGHT': CornerEnum.TOP_RIGHT,\n 'BOTTOM_LEFT': CornerEnum.BOTTOM_LEFT,\n 'BOTTOM_RIGHT': CornerEnum.BOTTOM_RIGHT,\n 'TOP_START': CornerEnum.TOP_START,\n 'TOP_END': CornerEnum.TOP_END,\n 'BOTTOM_START': CornerEnum.BOTTOM_START,\n 'BOTTOM_END': CornerEnum.BOTTOM_END,\n};\n\n/**\n * @fires opened\n * @fires closed\n */\nexport abstract class MenuSurface extends LitElement {\n protected mdcFoundation!: MDCMenuSurfaceFoundation;\n\n @query('.md3-menu-surface') mdcRoot!: HTMLDivElement;\n\n @query('slot') slotElement!: HTMLSlotElement|null;\n\n @property({type: Boolean}) absolute = false;\n\n @property({type: Boolean}) fullwidth = false;\n\n @property({type: Boolean}) fixed = false;\n\n @property({type: Number}) x: number|null = null;\n\n @property({type: Number}) y: number|null = null;\n\n // must be defined before open or else race condition in foundation occurs.\n @property({type: Boolean}) quick = false;\n\n @property({type: Boolean, reflect: true}) open = false;\n\n @property({type: Boolean}) stayOpenOnBodyClick = false;\n\n @property({type: Boolean}) skipRestoreFocus = false;\n\n protected previousFlipMenuHorizontally = false;\n\n /**\n * Whether to align the menu surface to the opposite side of the default\n * alignment.\n */\n @property({type: Boolean}) flipMenuHorizontally = false;\n\n @property({type: String}) corner: Corner = 'BOTTOM_START';\n\n @state() protected styleTop = '';\n @state() protected styleLeft = '';\n @state() protected styleRight = '';\n @state() protected styleBottom = '';\n @state() protected styleMaxHeight = '';\n @state() protected styleTransformOrigin = '';\n\n anchor: HTMLElement|null = null;\n\n protected previouslyFocused: HTMLElement|Element|null = null;\n protected previousAnchor: HTMLElement|null = null;\n protected onBodyClickBound: (evt: MouseEvent) => void = () => undefined;\n\n override render() {\n const styles = {\n 'top': this.styleTop,\n 'left': this.styleLeft,\n 'right': this.styleRight,\n 'bottom': this.styleBottom,\n 'max-height': this.styleMaxHeight,\n 'transform-origin': this.styleTransformOrigin,\n };\n\n return html`\n <div\n class=\"md3-menu-surface ${classMap(this.getRenderClasses())}\"\n style=\"${styleMap(styles)}\"\n @keydown=${this.onKeydown}\n @opened=${this.registerBodyClick}\n @closed=${this.deregisterBodyClick}>\n <md-elevation shadow></md-elevation>\n <slot></slot>\n </div>`;\n }\n\n /** @soyTemplate */\n protected getRenderClasses(): ClassInfo {\n return {\n 'md3-menu-surface--fixed': this.fixed,\n 'md3-menu-surface--fullwidth': this.fullwidth,\n };\n }\n\n protected override updated(changedProperties: PropertyValues<MenuSurface>) {\n if (changedProperties.has('absolute') && !this.fixed) {\n this.mdcFoundation.setIsHoisted(this.absolute);\n }\n\n if (changedProperties.has('fixed') && !this.absolute) {\n this.mdcFoundation.setFixedPosition(this.fixed);\n }\n\n if ((changedProperties.has('x') || changedProperties.has('y')) &&\n this.x !== null && this.y !== null) {\n this.mdcFoundation.setAbsolutePosition(this.x, this.y);\n this.mdcFoundation.setAnchorMargin(\n {left: this.x, top: this.y, right: -this.y, bottom: this.y});\n }\n\n if (changedProperties.has('quick')) {\n this.mdcFoundation.setQuickOpen(this.quick);\n }\n\n if (changedProperties.has('open')) {\n const wasOpen = changedProperties.get('open');\n if (this.open) {\n this.mdcFoundation.open();\n // wasOpen helps with first render (when it is `undefined`) perf\n } else if (wasOpen !== undefined) {\n this.mdcFoundation.close(this.skipRestoreFocus);\n }\n }\n\n if (changedProperties.has('flipMenuHorizontally')) {\n if (this.previousFlipMenuHorizontally !== this.flipMenuHorizontally) {\n this.mdcFoundation.flipCornerHorizontally();\n }\n this.previousFlipMenuHorizontally = this.flipMenuHorizontally;\n }\n\n if (changedProperties.has('corner') && this.corner) {\n const bitwiseCorner = stringToCorner[this.corner];\n this.mdcFoundation.setAnchorCorner(bitwiseCorner);\n }\n }\n\n protected override firstUpdated() {\n if (this.mdcFoundation !== undefined) {\n this.mdcFoundation.destroy();\n }\n\n this.mdcFoundation = new MDCMenuSurfaceFoundation(this.createAdapter());\n this.mdcFoundation.init();\n }\n\n createAdapter(): MDCMenuSurfaceAdapter {\n return {\n addClass: (className: string) => {\n this.mdcRoot.classList.add(className);\n },\n removeClass: (className: string) => {\n this.mdcRoot.classList.remove(className);\n },\n hasClass: (className: string) =>\n this.mdcRoot.classList.contains(className),\n hasAnchor: () => {\n return !!this.anchor;\n },\n notifyClose: () => {\n const init: CustomEventInit = {bubbles: true, composed: true};\n const ev = new CustomEvent('closed', init);\n this.open = false;\n this.mdcRoot.dispatchEvent(ev);\n },\n notifyClosing: () => {\n const init: CustomEventInit = {bubbles: true, composed: true};\n const ev = new CustomEvent('closing', init);\n this.mdcRoot.dispatchEvent(ev);\n },\n notifyOpen: () => {\n const init: CustomEventInit = {bubbles: true, composed: true};\n const ev = new CustomEvent('opened', init);\n this.open = true;\n this.mdcRoot.dispatchEvent(ev);\n },\n notifyOpening: () => {\n const init: CustomEventInit = {bubbles: true, composed: true};\n const ev = new CustomEvent('opening', init);\n this.mdcRoot.dispatchEvent(ev);\n },\n isElementInContainer: () => false,\n isRtl: () => this.mdcRoot ? isRtl(this.mdcRoot) : false,\n setTransformOrigin: (origin) => {\n const root = this.mdcRoot;\n if (!root) {\n return;\n }\n\n this.styleTransformOrigin = origin;\n },\n isFocused: () => {\n return this.matches(':focus-within');\n },\n saveFocus: () => {\n this.previouslyFocused = document.activeElement;\n },\n restoreFocus: () => {\n if (!this.previouslyFocused) {\n return;\n }\n\n if ('focus' in this.previouslyFocused) {\n this.previouslyFocused.focus();\n }\n },\n getInnerDimensions: () => {\n const mdcRoot = this.mdcRoot;\n\n if (!mdcRoot) {\n return {width: 0, height: 0};\n }\n\n return {width: mdcRoot.offsetWidth, height: mdcRoot.offsetHeight};\n },\n getAnchorDimensions: () => {\n const anchorElement = this.anchor;\n\n return anchorElement ? anchorElement.getBoundingClientRect() : null;\n },\n getBodyDimensions: () => {\n return {\n width: document.body.clientWidth,\n height: document.body.clientHeight,\n };\n },\n getWindowDimensions: () => {\n return {\n width: window.innerWidth,\n height: window.innerHeight,\n };\n },\n getWindowScroll: () => {\n return {\n x: window.pageXOffset,\n y: window.pageYOffset,\n };\n },\n setPosition: (position) => {\n const mdcRoot = this.mdcRoot;\n\n if (!mdcRoot) {\n return;\n }\n\n this.styleLeft = 'left' in position ? `${position.left}px` : '';\n this.styleRight = 'right' in position ? `${position.right}px` : '';\n this.styleTop = 'top' in position ? `${position.top}px` : '';\n this.styleBottom = 'bottom' in position ? `${position.bottom}px` : '';\n },\n setMaxHeight: async (height) => {\n const mdcRoot = this.mdcRoot;\n\n if (!mdcRoot) {\n return;\n }\n\n // must set both for IE support as IE will not set a var\n this.styleMaxHeight = height;\n await this.updateComplete;\n this.styleMaxHeight = `var(--md3-menu-max-height, ${height})`;\n },\n };\n }\n\n protected onKeydown(evt: KeyboardEvent) {\n if (this.mdcFoundation) {\n this.mdcFoundation.handleKeydown(evt);\n }\n }\n\n protected onBodyClick(evt: MouseEvent) {\n if (this.stayOpenOnBodyClick) {\n return;\n }\n const path = evt.composedPath();\n if (path.indexOf(this) === -1) {\n this.close();\n }\n }\n\n protected registerBodyClick() {\n this.onBodyClickBound = this.onBodyClick.bind(this);\n // capture otherwise listener closes menu after quick menu opens\n document.body.addEventListener(\n 'click', this.onBodyClickBound, {passive: true, capture: true});\n }\n\n protected deregisterBodyClick() {\n document.body.removeEventListener(\n 'click', this.onBodyClickBound, {capture: true});\n }\n\n close() {\n this.open = false;\n }\n\n show() {\n this.open = true;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu-surface.js","sourceRoot":"","sources":["menu-surface.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAEH,OAAO,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAC,WAAW,EAAC,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAC,MAAM,EAAC,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"menu-surface.js","sourceRoot":"","sources":["menu-surface.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAEH,OAAO,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAC,WAAW,EAAC,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAC,MAAM,EAAC,MAAM,kCAAkC,CAAC;AASjD,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,WAAW;;AAC5B,oBAAM,GAAG,CAAC,MAAM,CAAC,CAAC;AADvB,aAAa;IADzB,aAAa,CAAC,iBAAiB,CAAC;GACpB,aAAa,CAEzB;SAFY,aAAa","sourcesContent":["/**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {customElement} from 'lit/decorators.js';\n\nimport {MenuSurface} from './lib/menu-surface.js';\nimport {styles} from './lib/menu-surface-styles.css.js';\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'md-menu-surface': MdMenuSurface;\n }\n}\n\n@customElement('md-menu-surface')\nexport class MdMenuSurface extends MenuSurface {\n static override styles = [styles];\n}\n"]}
|
|
@@ -6,9 +6,11 @@
|
|
|
6
6
|
// stylelint-disable selector-class-pattern --
|
|
7
7
|
// Selector '.md3-*' should only be used in this project.
|
|
8
8
|
|
|
9
|
+
// go/keep-sorted start
|
|
9
10
|
@use '../../elevation/lib/elevation';
|
|
10
11
|
@use '../../sass/theme';
|
|
11
12
|
@use '../../tokens';
|
|
13
|
+
// go/keep-sorted end
|
|
12
14
|
|
|
13
15
|
@mixin theme($tokens) {
|
|
14
16
|
$tokens: theme.validate-theme(
|
|
@@ -14,4 +14,4 @@ export interface MDCNavigationTabInteractionEventDetail {
|
|
|
14
14
|
/**
|
|
15
15
|
* NavigationTabInteractionEvent is the custom event for the interaction event.
|
|
16
16
|
*/
|
|
17
|
-
export
|
|
17
|
+
export type NavigationTabInteractionEvent = CustomEvent<MDCNavigationTabInteractionEventDetail>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigation-bar.js","sourceRoot":"","sources":["navigation-bar.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"navigation-bar.js","sourceRoot":"","sources":["navigation-bar.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport '../../elevation/elevation.js';\n\nimport {html, LitElement, PropertyValues, TemplateResult} from 'lit';\nimport {property, queryAssignedElements} from 'lit/decorators.js';\nimport {ifDefined} from 'lit/directives/if-defined.js';\n\nimport {isRtl} from '../../controller/is-rtl.js';\nimport {ariaProperty} from '../../decorators/aria-property.js';\nimport {NavigationTab} from '../../navigationtab/lib/navigation-tab.js';\n\nimport {NavigationTabInteractionEvent} from './constants.js';\nimport {NavigationBarState} from './state.js';\n\n/** @soyCompatible */\nexport class NavigationBar extends LitElement implements NavigationBarState {\n @property({type: Number}) activeIndex = 0;\n\n @property({type: Boolean}) hideInactiveLabels = false;\n\n tabs: NavigationTab[] = [];\n\n @queryAssignedElements({flatten: true})\n protected tabsElement!: NavigationTab[];\n\n // tslint:disable-next-line:no-new-decorators\n @ariaProperty\n @property({attribute: 'data-aria-label', noAccessor: true})\n override ariaLabel!: string;\n\n /** @soyTemplate */\n override render(): TemplateResult {\n return html`<div class=\"md3-navigation-bar\"\n role=\"tablist\"\n aria-label=\"${ifDefined(this.ariaLabel || undefined)}\"\n @keydown=\"${this.handleKeydown}\"\n @navigation-tab-interaction=\"${this.handleNavigationTabInteraction}\"\n @navigation-tab-rendered=${this.handleNavigationTabConnected}\n ><md-elevation shadow surface\n ></md-elevation><div class=\"md3-navigation-bar__tabs-slot-container\"\n ><slot></slot></div></div>`;\n }\n\n protected override updated(changedProperties: PropertyValues<NavigationBar>) {\n if (changedProperties.has('activeIndex')) {\n this.onActiveIndexChange(this.activeIndex);\n this.dispatchEvent(new CustomEvent('navigation-bar-activated', {\n detail:\n {tab: this.tabs[this.activeIndex], activeIndex: this.activeIndex},\n bubbles: true,\n composed: true\n }));\n }\n\n if (changedProperties.has('hideInactiveLabels')) {\n this.onHideInactiveLabelsChange(this.hideInactiveLabels);\n }\n\n if (changedProperties.has('tabs')) {\n this.onHideInactiveLabelsChange(this.hideInactiveLabels);\n this.onActiveIndexChange(this.activeIndex);\n }\n }\n\n override firstUpdated(changedProperties: PropertyValues) {\n super.firstUpdated(changedProperties);\n this.layout();\n }\n\n layout() {\n if (!this.tabsElement) return;\n const navTabs: NavigationTab[] = [];\n for (const node of this.tabsElement) {\n navTabs.push(node);\n }\n this.tabs = navTabs;\n }\n\n private handleNavigationTabConnected(event: CustomEvent) {\n const target = event.target as NavigationTab;\n if (this.tabs.indexOf(target) === -1) {\n this.layout();\n }\n }\n\n private handleNavigationTabInteraction(event: NavigationTabInteractionEvent) {\n this.activeIndex = this.tabs.indexOf(event.detail.state as NavigationTab);\n }\n\n private handleKeydown(event: KeyboardEvent) {\n const key = event.key;\n const focusedTabIndex = this.tabs.findIndex((tab) => {\n return tab.matches(':focus-within');\n });\n const isRTL = isRtl(this);\n const maxIndex = this.tabs.length - 1;\n\n if (key === 'Enter' || key === ' ') {\n this.activeIndex = focusedTabIndex;\n return;\n }\n\n if (key === 'Home') {\n this.tabs[0].focus();\n return;\n }\n\n if (key === 'End') {\n this.tabs[maxIndex].focus();\n return;\n }\n\n const toNextTab =\n (key === 'ArrowRight' && !isRTL) || (key === 'ArrowLeft' && isRTL);\n if (toNextTab && focusedTabIndex === maxIndex) {\n this.tabs[0].focus();\n return;\n }\n if (toNextTab) {\n this.tabs[focusedTabIndex + 1].focus();\n return;\n }\n\n const toPreviousTab =\n (key === 'ArrowLeft' && !isRTL) || (key === 'ArrowRight' && isRTL);\n if (toPreviousTab && focusedTabIndex === 0) {\n this.tabs[maxIndex].focus();\n return;\n }\n if (toPreviousTab) {\n this.tabs[focusedTabIndex - 1].focus();\n return;\n }\n }\n\n private onActiveIndexChange(value: number) {\n if (!this.tabs[value]) {\n throw new Error('NavigationBar: activeIndex is out of bounds.');\n }\n for (let i = 0; i < this.tabs.length; i++) {\n this.tabs[i].active = i === value;\n }\n }\n\n private onHideInactiveLabelsChange(value: boolean) {\n for (const tab of this.tabs) {\n tab.hideInactiveLabel = value;\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigation-bar.js","sourceRoot":"","sources":["navigation-bar.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAEH,OAAO,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAC,aAAa,EAAC,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAC,MAAM,EAAC,MAAM,oCAAoC,CAAC;AAQ1D;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"navigation-bar.js","sourceRoot":"","sources":["navigation-bar.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAEH,OAAO,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAC,aAAa,EAAC,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAC,MAAM,EAAC,MAAM,oCAAoC,CAAC;AAQ1D;;;;GAIG;AAEI,IAAM,eAAe,GAArB,MAAM,eAAgB,SAAQ,aAAa;;AAChC,sBAAM,GAAG,CAAC,MAAM,CAAC,CAAC;AADvB,eAAe;IAD3B,aAAa,CAAC,mBAAmB,CAAC;GACtB,eAAe,CAE3B;SAFY,eAAe","sourcesContent":["/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {customElement} from 'lit/decorators.js';\n\nimport {NavigationBar} from './lib/navigation-bar.js';\nimport {styles} from './lib/navigation-bar-styles.css.js';\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'md-navigation-bar': MdNavigationBar;\n }\n}\n\n/**\n * @soyCompatible\n * @final\n * @suppress {visibility}\n */\n@customElement('md-navigation-bar')\nexport class MdNavigationBar extends NavigationBar {\n static override styles = [styles];\n}\n"]}
|
|
@@ -6,11 +6,16 @@
|
|
|
6
6
|
// stylelint-disable selector-class-pattern --
|
|
7
7
|
// Selector '.md3-*' should only be used in this project.
|
|
8
8
|
|
|
9
|
+
// go/keep-sorted start
|
|
9
10
|
@use 'sass:map';
|
|
11
|
+
// go/keep-sorted end
|
|
12
|
+
// go/keep-sorted start
|
|
10
13
|
@use '../../elevation/elevation';
|
|
11
14
|
@use '../../motion/animation';
|
|
15
|
+
@use '../../sass/shape';
|
|
12
16
|
@use '../../sass/theme';
|
|
13
17
|
@use './shared';
|
|
18
|
+
// go/keep-sorted end
|
|
14
19
|
|
|
15
20
|
$_curve: animation.$standard-easing;
|
|
16
21
|
$_delay: 0s;
|
|
@@ -30,10 +35,13 @@ $_reference: (
|
|
|
30
35
|
standard-container-elevation: 0,
|
|
31
36
|
);
|
|
32
37
|
|
|
38
|
+
$_custom-property-prefix: 'navigation-drawer-modal';
|
|
39
|
+
|
|
33
40
|
@mixin theme($tokens) {
|
|
34
41
|
$tokens: theme.validate-theme($_reference, $tokens);
|
|
35
42
|
$tokens: shared.resolve-tokens($tokens);
|
|
36
|
-
$tokens: theme.create-theme-vars($tokens,
|
|
43
|
+
$tokens: theme.create-theme-vars($tokens, $_custom-property-prefix);
|
|
44
|
+
$tokens: shape.resolve-tokens($tokens, 'container-shape');
|
|
37
45
|
|
|
38
46
|
@include theme.emit-theme-vars($tokens);
|
|
39
47
|
}
|
|
@@ -41,7 +49,8 @@ $_reference: (
|
|
|
41
49
|
@mixin styles() {
|
|
42
50
|
$tokens: $_reference;
|
|
43
51
|
$tokens: shared.resolve-tokens($tokens);
|
|
44
|
-
$tokens: theme.create-theme-vars($tokens,
|
|
52
|
+
$tokens: theme.create-theme-vars($tokens, $_custom-property-prefix);
|
|
53
|
+
$tokens: shape.resolve-tokens($tokens, 'container-shape');
|
|
45
54
|
|
|
46
55
|
:host {
|
|
47
56
|
@each $token, $value in $tokens {
|
|
@@ -6,10 +6,13 @@
|
|
|
6
6
|
// stylelint-disable selector-class-pattern --
|
|
7
7
|
// Selector '.md3-*' should only be used in this project.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
// go/keep-sorted start
|
|
10
10
|
@use '../../elevation/elevation';
|
|
11
|
+
@use '../../motion/animation';
|
|
12
|
+
@use '../../sass/shape';
|
|
11
13
|
@use '../../sass/theme';
|
|
12
14
|
@use './shared';
|
|
15
|
+
// go/keep-sorted end
|
|
13
16
|
|
|
14
17
|
$curve: animation.$standard-easing;
|
|
15
18
|
$default: 0s;
|
|
@@ -28,11 +31,13 @@ $_reference: (
|
|
|
28
31
|
standard-container-elevation: 0,
|
|
29
32
|
);
|
|
30
33
|
|
|
34
|
+
$_custom-property-prefix: 'navigation-drawer';
|
|
35
|
+
|
|
31
36
|
@mixin theme($tokens) {
|
|
32
37
|
$tokens: theme.validate-theme($_reference, $tokens);
|
|
33
38
|
$tokens: shared.resolve-tokens($tokens);
|
|
34
|
-
|
|
35
|
-
$tokens:
|
|
39
|
+
$tokens: theme.create-theme-vars($tokens, $_custom-property-prefix);
|
|
40
|
+
$tokens: shape.resolve-tokens($tokens, 'container-shape');
|
|
36
41
|
|
|
37
42
|
@include theme.emit-theme-vars($tokens);
|
|
38
43
|
}
|
|
@@ -40,8 +45,8 @@ $_reference: (
|
|
|
40
45
|
@mixin styles() {
|
|
41
46
|
$tokens: $_reference;
|
|
42
47
|
$tokens: shared.resolve-tokens($tokens);
|
|
43
|
-
|
|
44
|
-
$tokens:
|
|
48
|
+
$tokens: theme.create-theme-vars($tokens, $_custom-property-prefix);
|
|
49
|
+
$tokens: shape.resolve-tokens($tokens, 'container-shape');
|
|
45
50
|
|
|
46
51
|
:host {
|
|
47
52
|
@each $token, $value in $tokens {
|
|
@@ -6,11 +6,12 @@
|
|
|
6
6
|
// stylelint-disable selector-class-pattern --
|
|
7
7
|
// Selector '.md3-*' should only be used in this project.
|
|
8
8
|
|
|
9
|
+
// go/keep-sorted start
|
|
9
10
|
@use 'sass:map';
|
|
10
|
-
|
|
11
|
+
// go/keep-sorted end
|
|
12
|
+
// go/keep-sorted start
|
|
11
13
|
@use '../../elevation/lib/elevation';
|
|
12
|
-
|
|
13
|
-
@use '../../sass/shape';
|
|
14
|
+
// go/keep-sorted end
|
|
14
15
|
|
|
15
16
|
@mixin styles() {
|
|
16
17
|
.md3-navigation-drawer-modal {
|
|
@@ -34,11 +35,6 @@
|
|
|
34
35
|
|
|
35
36
|
@function resolve-tokens($tokens) {
|
|
36
37
|
$tokens: elevation.resolve-tokens($tokens, 'modal-container-elevation');
|
|
37
|
-
$tokens: shape.resolve-theme(
|
|
38
|
-
$tokens,
|
|
39
|
-
map.get(resolvers.$material, shape),
|
|
40
|
-
container-shape
|
|
41
|
-
);
|
|
42
38
|
|
|
43
39
|
@return $tokens;
|
|
44
40
|
}
|
|
@@ -4,6 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { css } from 'lit';
|
|
7
|
-
export const styles = css `:host{--_container-shape-start-start: var(--md-navigation-drawer-modal-container-shape-start-start, 0);--_container-shape-start-end: var(--md-navigation-drawer-modal-container-shape-start-end, 16px);--_container-shape-end-end: var(--md-navigation-drawer-modal-container-shape-end-end, 16px);--_container-shape-end-start: var(--md-navigation-drawer-modal-container-shape-end-start, 0);--_container-color: var(--md-navigation-drawer-modal-container-color, #fff);--_container-height: var(--md-navigation-drawer-modal-container-height, 100%);--_container-surface-tint-layer-color: ;--_container-width: var(--md-navigation-drawer-modal-container-width, 360px);--_divider-color: var(--md-navigation-drawer-modal-divider-color, #000);--_modal-container-elevation: var(--md-navigation-drawer-modal-modal-container-elevation, 1);--_scrim-color: ;--_scrim-opacity: var(--md-navigation-drawer-modal-scrim-opacity, 0.04);--_standard-container-elevation: var(--md-navigation-drawer-modal-standard-container-elevation, 0);--md-elevation-level:var(--_modal-container-elevation)}.md3-navigation-drawer-modal{bottom:0;box-sizing:border-box;display:flex;justify-content:flex-end;overflow:hidden;position:absolute;top:0;inline-size:0;transition:inline-size .25s cubic-bezier(0.4, 0, 0.2, 1) 0s,visibility 0s cubic-bezier(0.4, 0, 0.2, 1) .25s}.md3-navigation-drawer-modal--opened{transition:inline-size .25s cubic-bezier(0.4, 0, 0.2, 1) 0s,visibility 0s cubic-bezier(0.4, 0, 0.2, 1) 0s}.md3-navigation-drawer-modal--pivot-at-start{justify-content:flex-start}.md3-navigation-drawer-modal__slot-content{display:flex;flex-direction:column;position:relative}.md3-navigation-drawer-modal__scrim{inset:0;opacity:0;position:absolute;visibility:hidden;background-color:var(--_scrim-color);transition:opacity .25s cubic-bezier(0.4, 0, 0.2, 1) 0s,visibility 0s cubic-bezier(0.4, 0, 0.2, 1) .25s}.md3-navigation-drawer-modal--scrim-visible{visibility:visible;opacity:var(--_scrim-opacity);transition:opacity .25s cubic-bezier(0.4, 0, 0.2, 1) 0s,visibility 0s cubic-bezier(0.4, 0, 0.2, 1) 0s}/*# sourceMappingURL=navigation-drawer-modal-styles.css.map */
|
|
7
|
+
export const styles = css `:host{--_container-shape-start-start: var(--md-navigation-drawer-modal-container-shape-start-start, var(--md-navigation-drawer-modal-container-shape, 0));--_container-shape-start-end: var(--md-navigation-drawer-modal-container-shape-start-end, var(--md-navigation-drawer-modal-container-shape, 16px));--_container-shape-end-end: var(--md-navigation-drawer-modal-container-shape-end-end, var(--md-navigation-drawer-modal-container-shape, 16px));--_container-shape-end-start: var(--md-navigation-drawer-modal-container-shape-end-start, var(--md-navigation-drawer-modal-container-shape, 0));--_container-color: var(--md-navigation-drawer-modal-container-color, #fff);--_container-height: var(--md-navigation-drawer-modal-container-height, 100%);--_container-surface-tint-layer-color: ;--_container-width: var(--md-navigation-drawer-modal-container-width, 360px);--_divider-color: var(--md-navigation-drawer-modal-divider-color, #000);--_modal-container-elevation: var(--md-navigation-drawer-modal-modal-container-elevation, 1);--_scrim-color: ;--_scrim-opacity: var(--md-navigation-drawer-modal-scrim-opacity, 0.04);--_standard-container-elevation: var(--md-navigation-drawer-modal-standard-container-elevation, 0);--md-elevation-level:var(--_modal-container-elevation)}.md3-navigation-drawer-modal{bottom:0;box-sizing:border-box;display:flex;justify-content:flex-end;overflow:hidden;position:absolute;top:0;inline-size:0;transition:inline-size .25s cubic-bezier(0.4, 0, 0.2, 1) 0s,visibility 0s cubic-bezier(0.4, 0, 0.2, 1) .25s}.md3-navigation-drawer-modal--opened{transition:inline-size .25s cubic-bezier(0.4, 0, 0.2, 1) 0s,visibility 0s cubic-bezier(0.4, 0, 0.2, 1) 0s}.md3-navigation-drawer-modal--pivot-at-start{justify-content:flex-start}.md3-navigation-drawer-modal__slot-content{display:flex;flex-direction:column;position:relative}.md3-navigation-drawer-modal__scrim{inset:0;opacity:0;position:absolute;visibility:hidden;background-color:var(--_scrim-color);transition:opacity .25s cubic-bezier(0.4, 0, 0.2, 1) 0s,visibility 0s cubic-bezier(0.4, 0, 0.2, 1) .25s}.md3-navigation-drawer-modal--scrim-visible{visibility:visible;opacity:var(--_scrim-opacity);transition:opacity .25s cubic-bezier(0.4, 0, 0.2, 1) 0s,visibility 0s cubic-bezier(0.4, 0, 0.2, 1) 0s}/*# sourceMappingURL=navigation-drawer-modal-styles.css.map */
|
|
8
8
|
`;
|
|
9
9
|
//# sourceMappingURL=navigation-drawer-modal-styles.css.js.map
|