@material/web 1.0.0-pre.2 → 1.0.0-pre.4
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/LICENSE +1 -1
- package/README.md +41 -41
- 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.d.ts +1 -1
- package/controller/form-controller.js +21 -29
- package/controller/form-controller.js.map +1 -1
- 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 +120 -57
- package/field/lib/_filled-field.scss +73 -130
- package/field/lib/_label.scss +27 -65
- package/field/lib/_md-comp-filled-field.scss +127 -56
- package/field/lib/_md-comp-outlined-field.scss +104 -52
- package/field/lib/_outlined-field.scss +108 -120
- package/field/lib/_shared.scss +27 -45
- package/field/lib/_supporting-text.scss +25 -52
- package/field/lib/field.d.ts +15 -31
- package/field/lib/field.js +130 -139
- package/field/lib/field.js.map +1 -1
- package/field/lib/filled-field.d.ts +5 -16
- package/field/lib/filled-field.js +8 -70
- 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 +3 -1
- package/icon/lib/_md-comp-icon.scss +1 -2
- package/icon/lib/icon-styles.css.js +1 -1
- package/icon/lib/icon-styles.css.js.map +1 -1
- 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 +25 -11
- 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 +320 -128
- 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 +8 -7
- package/list/lib/listitem/list-item.js +25 -27
- package/list/lib/listitem/list-item.js.map +1 -1
- package/list/lib/listitemlink/list-item-link.js.map +1 -1
- package/list/list-item-link.d.ts +18 -0
- package/list/list-item-link.js +19 -2
- package/list/list-item-link.js.map +1 -1
- package/list/list-item.d.ts +19 -0
- package/list/list-item.js +20 -2
- package/list/list-item.js.map +1 -1
- package/list/list.js.map +1 -1
- package/menu/lib/_menu.scss +32 -8
- 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 +8 -7
- package/menu/lib/menu.js.map +1 -1
- package/menu/lib/menuitem/_menu-item.scss +44 -76
- 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.d.ts +0 -1
- package/menu/lib/submenuitem/sub-menu-item.js +0 -1
- 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 +1 -2
- package/menu/menu-item-link.js.map +1 -1
- package/menu/menu-item.js +2 -3
- package/menu/menu-item.js.map +1 -1
- package/menu/menu.js.map +1 -1
- package/menu/sub-menu-item.js +1 -2
- package/menu/sub-menu-item.js.map +1 -1
- package/menusurface/lib/_md-comp-menu-surface.scss +5 -1
- 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/{list/lib/listitem/list-item-private-styles.scss → slider/_slider.scss} +1 -3
- 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/{menu/lib/menuitem/menu-item-private-styles.scss → slider/lib/slider-styles.scss} +2 -2
- 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 +116 -110
- package/textfield/lib/_icon.scss +14 -73
- package/textfield/lib/_input.scss +15 -36
- package/textfield/lib/_outlined-text-field.scss +107 -103
- 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_161/_index.scss +107 -0
- package/tokens/v0_161/_md-comp-assist-chip.scss +109 -0
- package/tokens/v0_161/_md-comp-badge.scss +58 -0
- package/tokens/v0_161/_md-comp-banner.scss +75 -0
- package/tokens/v0_161/_md-comp-bottom-app-bar.scss +35 -0
- package/tokens/v0_161/_md-comp-carousel-item.scss +65 -0
- package/tokens/v0_161/_md-comp-checkbox.scss +126 -0
- package/tokens/v0_161/_md-comp-circular-progress-indicator.scss +39 -0
- package/tokens/v0_161/_md-comp-data-table.scss +96 -0
- package/tokens/v0_161/_md-comp-date-input-modal.scss +89 -0
- package/tokens/v0_161/_md-comp-date-picker-docked.scss +246 -0
- package/tokens/v0_161/_md-comp-date-picker-modal.scss +305 -0
- package/tokens/v0_161/_md-comp-dialog.scss +123 -0
- package/tokens/v0_161/_md-comp-divider.scss +25 -0
- package/tokens/v0_161/_md-comp-elevated-button.scss +91 -0
- package/tokens/v0_161/_md-comp-elevated-card.scss +59 -0
- package/tokens/v0_161/_md-comp-extended-fab-branded.scss +86 -0
- package/tokens/v0_161/_md-comp-extended-fab-primary.scss +94 -0
- package/tokens/v0_161/_md-comp-extended-fab-secondary.scss +95 -0
- package/tokens/v0_161/_md-comp-extended-fab-surface.scss +90 -0
- package/tokens/v0_161/_md-comp-extended-fab-tertiary.scss +95 -0
- package/tokens/v0_161/_md-comp-fab-branded-large.scss +60 -0
- package/tokens/v0_161/_md-comp-fab-branded.scss +60 -0
- package/tokens/v0_161/_md-comp-fab-primary-large.scss +65 -0
- package/tokens/v0_161/_md-comp-fab-primary-small.scss +65 -0
- package/tokens/v0_161/_md-comp-fab-primary.scss +65 -0
- package/tokens/v0_161/_md-comp-fab-secondary-large.scss +66 -0
- package/tokens/v0_161/_md-comp-fab-secondary-small.scss +66 -0
- package/tokens/v0_161/_md-comp-fab-secondary.scss +66 -0
- package/tokens/v0_161/_md-comp-fab-surface-large.scss +64 -0
- package/tokens/v0_161/_md-comp-fab-surface-small.scss +64 -0
- package/tokens/v0_161/_md-comp-fab-surface.scss +64 -0
- package/tokens/v0_161/_md-comp-fab-tertiary-large.scss +66 -0
- package/tokens/v0_161/_md-comp-fab-tertiary-small.scss +66 -0
- package/tokens/v0_161/_md-comp-fab-tertiary.scss +66 -0
- package/tokens/v0_161/_md-comp-filled-autocomplete.scss +267 -0
- package/tokens/v0_161/_md-comp-filled-button.scss +89 -0
- package/tokens/v0_161/_md-comp-filled-card.scss +58 -0
- package/tokens/v0_161/_md-comp-filled-icon-button.scss +79 -0
- package/tokens/v0_161/_md-comp-filled-menu-button.scss +98 -0
- package/tokens/v0_161/_md-comp-filled-select.scss +272 -0
- package/tokens/v0_161/_md-comp-filled-text-field.scss +189 -0
- package/tokens/v0_161/_md-comp-filled-tonal-button.scss +99 -0
- package/tokens/v0_161/_md-comp-filled-tonal-icon-button.scss +86 -0
- package/tokens/v0_161/_md-comp-filter-chip.scss +209 -0
- package/tokens/v0_161/_md-comp-full-screen-dialog.scss +111 -0
- package/tokens/v0_161/_md-comp-icon-button.scss +70 -0
- package/tokens/v0_161/_md-comp-input-chip.scss +184 -0
- package/tokens/v0_161/_md-comp-linear-progress-indicator.scss +41 -0
- package/tokens/v0_161/_md-comp-list.scss +248 -0
- package/tokens/v0_161/_md-comp-menu.scss +37 -0
- package/tokens/v0_161/_md-comp-navigation-bar.scss +114 -0
- package/tokens/v0_161/_md-comp-navigation-drawer.scss +162 -0
- package/tokens/v0_161/_md-comp-navigation-rail.scss +131 -0
- package/tokens/v0_161/_md-comp-outlined-autocomplete.scss +257 -0
- package/tokens/v0_161/_md-comp-outlined-button.scss +84 -0
- package/tokens/v0_161/_md-comp-outlined-card.scss +65 -0
- package/tokens/v0_161/_md-comp-outlined-icon-button.scss +79 -0
- package/tokens/v0_161/_md-comp-outlined-menu-button.scss +94 -0
- package/tokens/v0_161/_md-comp-outlined-segmented-button.scss +112 -0
- package/tokens/v0_161/_md-comp-outlined-select.scss +262 -0
- package/tokens/v0_161/_md-comp-outlined-text-field.scss +171 -0
- package/tokens/v0_161/_md-comp-plain-tooltip.scss +55 -0
- package/tokens/v0_161/_md-comp-primary-navigation-tab.scss +121 -0
- package/tokens/v0_161/_md-comp-radio-button.scss +68 -0
- package/tokens/v0_161/_md-comp-rich-tooltip.scss +121 -0
- package/tokens/v0_161/_md-comp-scrim.scss +25 -0
- package/tokens/v0_161/_md-comp-search-bar.scss +99 -0
- package/tokens/v0_161/_md-comp-search-view.scss +93 -0
- package/tokens/v0_161/_md-comp-secondary-navigation-tab.scss +84 -0
- package/tokens/v0_161/_md-comp-sheet-bottom.scss +45 -0
- package/tokens/v0_161/_md-comp-sheet-floating.scss +34 -0
- package/tokens/v0_161/_md-comp-sheet-side.scss +91 -0
- package/tokens/v0_161/_md-comp-slider.scss +114 -0
- package/tokens/v0_161/_md-comp-snackbar.scss +127 -0
- package/tokens/v0_161/_md-comp-standard-menu-button.scss +98 -0
- package/tokens/v0_161/_md-comp-suggestion-chip.scss +125 -0
- package/tokens/v0_161/_md-comp-switch.scss +136 -0
- package/tokens/v0_161/_md-comp-text-button.scss +77 -0
- package/tokens/v0_161/_md-comp-time-input.scss +218 -0
- package/tokens/v0_161/_md-comp-time-picker.scss +264 -0
- package/tokens/v0_161/_md-comp-top-app-bar-large.scss +63 -0
- package/tokens/v0_161/_md-comp-top-app-bar-medium.scss +63 -0
- package/tokens/v0_161/_md-comp-top-app-bar-small-centered.scss +66 -0
- package/tokens/v0_161/_md-comp-top-app-bar-small.scss +64 -0
- package/tokens/v0_161/_md-ref-palette.scss +107 -0
- package/tokens/v0_161/_md-ref-typeface.scss +21 -0
- package/tokens/v0_161/_md-sys-color.scss +904 -0
- package/tokens/v0_161/_md-sys-elevation.scss +21 -0
- package/tokens/v0_161/_md-sys-motion.scss +53 -0
- package/tokens/v0_161/_md-sys-shape.scss +30 -0
- package/tokens/v0_161/_md-sys-state.scss +19 -0
- package/tokens/v0_161/_md-sys-typescale.scss +284 -0
- package/tokens/v0_161/index.test.css.js +9 -0
- package/tokens/v0_161/index.test.css.js.map +1 -0
- package/tokens/v0_161/index.test.scss +584 -0
- package/tokens/v0_161/lib.test.css.js +9 -0
- package/tokens/v0_161/lib.test.css.js.map +1 -0
- package/tokens/v0_161/lib.test.scss +663 -0
- package/controller/foundation.d.ts +0 -24
- package/controller/foundation.js +0 -18
- package/controller/foundation.js.map +0 -1
- package/controller/observer-foundation.d.ts +0 -25
- package/controller/observer-foundation.js +0 -37
- package/controller/observer-foundation.js.map +0 -1
- package/controller/observer.d.ts +0 -52
- package/controller/observer.js +0 -149
- package/controller/observer.js.map +0 -1
- package/decorators/bound.d.ts +0 -40
- package/decorators/bound.js +0 -49
- package/decorators/bound.js.map +0 -1
- package/list/lib/avatar/_list-item-avatar.scss +0 -38
- package/list/lib/avatar/list-item-avatar-styles.css.js +0 -9
- package/list/lib/avatar/list-item-avatar-styles.css.js.map +0 -1
- package/list/lib/avatar/list-item-avatar-styles.scss +0 -8
- package/list/lib/avatar/list-item-avatar.d.ts +0 -21
- package/list/lib/avatar/list-item-avatar.js +0 -48
- package/list/lib/avatar/list-item-avatar.js.map +0 -1
- package/list/lib/icon/_list-item-icon.scss +0 -67
- package/list/lib/icon/list-item-icon-styles.css.js +0 -9
- package/list/lib/icon/list-item-icon-styles.css.js.map +0 -1
- package/list/lib/icon/list-item-icon-styles.scss +0 -8
- package/list/lib/icon/list-item-icon.d.ts +0 -9
- package/list/lib/icon/list-item-icon.js +0 -15
- package/list/lib/icon/list-item-icon.js.map +0 -1
- package/list/lib/image/_list-item-image.scss +0 -59
- package/list/lib/image/list-item-image-styles.css.js +0 -9
- package/list/lib/image/list-item-image-styles.css.js.map +0 -1
- package/list/lib/image/list-item-image-styles.scss +0 -8
- package/list/lib/image/list-item-image.d.ts +0 -21
- package/list/lib/image/list-item-image.js +0 -48
- package/list/lib/image/list-item-image.js.map +0 -1
- package/list/lib/listitem/list-item-private-styles.css.js +0 -9
- package/list/lib/listitem/list-item-private-styles.css.js.map +0 -1
- package/list/lib/video/_list-item-video.scss +0 -67
- package/list/lib/video/list-item-video-styles.css.d.ts +0 -1
- package/list/lib/video/list-item-video-styles.css.js +0 -9
- package/list/lib/video/list-item-video-styles.css.js.map +0 -1
- package/list/lib/video/list-item-video-styles.scss +0 -8
- package/list/lib/video/list-item-video.d.ts +0 -53
- package/list/lib/video/list-item-video.js +0 -115
- package/list/lib/video/list-item-video.js.map +0 -1
- package/list/list-item-avatar.d.ts +0 -20
- package/list/list-item-avatar.js +0 -23
- package/list/list-item-avatar.js.map +0 -1
- package/list/list-item-icon.d.ts +0 -20
- package/list/list-item-icon.js +0 -23
- package/list/list-item-icon.js.map +0 -1
- package/list/list-item-image.d.ts +0 -20
- package/list/list-item-image.js +0 -23
- package/list/list-item-image.js.map +0 -1
- package/list/list-item-video.d.ts +0 -20
- package/list/list-item-video.js +0 -23
- package/list/list-item-video.js.map +0 -1
- package/menu/lib/menuitem/menu-item-private-styles.css.d.ts +0 -1
- package/menu/lib/menuitem/menu-item-private-styles.css.js +0 -9
- package/menu/lib/menuitem/menu-item-private-styles.css.js.map +0 -1
- /package/{list/lib/avatar/list-item-avatar-styles.css.d.ts → slider/lib/forced-colors-styles.css.d.ts} +0 -0
- /package/{list/lib/icon/list-item-icon-styles.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.d.ts +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.d.ts +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
- /package/{list/lib/image/list-item-image-styles.css.d.ts → tokens/v0_161/index.test.css.d.ts} +0 -0
- /package/{list/lib/listitem/list-item-private-styles.css.d.ts → tokens/v0_161/lib.test.css.d.ts} +0 -0
package/radio/lib/_radio.scss
CHANGED
|
@@ -3,12 +3,16 @@
|
|
|
3
3
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
//
|
|
5
5
|
|
|
6
|
+
// go/keep-sorted start
|
|
6
7
|
@use 'sass:map';
|
|
8
|
+
// go/keep-sorted end
|
|
9
|
+
// go/keep-sorted start
|
|
7
10
|
@use '../../focus/focus-ring';
|
|
8
11
|
@use '../../motion/animation';
|
|
9
12
|
@use '../../ripple/ripple';
|
|
10
13
|
@use '../../sass/theme';
|
|
11
14
|
@use '../../tokens';
|
|
15
|
+
// go/keep-sorted end
|
|
12
16
|
|
|
13
17
|
$_md-sys-motion: tokens.md-sys-motion-values();
|
|
14
18
|
|
|
@@ -30,13 +34,12 @@ $_md-sys-motion: tokens.md-sys-motion-values();
|
|
|
30
34
|
|
|
31
35
|
@include ripple.theme(
|
|
32
36
|
(
|
|
33
|
-
focus-
|
|
34
|
-
focus-
|
|
35
|
-
hover-
|
|
36
|
-
hover-
|
|
37
|
-
pressed-
|
|
38
|
-
pressed-state-layer-opacity
|
|
39
|
-
var(--_unselected-pressed-state-layer-opacity),
|
|
37
|
+
focus-color: var(--_unselected-focus-state-layer-color),
|
|
38
|
+
focus-opacity: var(--_unselected-focus-state-layer-opacity),
|
|
39
|
+
hover-color: var(--_unselected-hover-state-layer-color),
|
|
40
|
+
hover-opacity: var(--_unselected-hover-state-layer-opacity),
|
|
41
|
+
pressed-color: var(--_unselected-pressed-state-layer-color),
|
|
42
|
+
pressed-opacity: var(--_unselected-pressed-state-layer-opacity),
|
|
40
43
|
)
|
|
41
44
|
);
|
|
42
45
|
|
|
@@ -59,13 +62,12 @@ $_md-sys-motion: tokens.md-sys-motion-values();
|
|
|
59
62
|
:host([checked]) {
|
|
60
63
|
@include ripple.theme(
|
|
61
64
|
(
|
|
62
|
-
focus-
|
|
63
|
-
focus-
|
|
64
|
-
hover-
|
|
65
|
-
hover-
|
|
66
|
-
pressed-
|
|
67
|
-
pressed-state-layer-opacity
|
|
68
|
-
var(--_selected-pressed-state-layer-opacity),
|
|
65
|
+
focus-color: var(--_selected-focus-state-layer-color),
|
|
66
|
+
focus-opacity: var(--_selected-focus-state-layer-opacity),
|
|
67
|
+
hover-color: var(--_selected-hover-state-layer-color),
|
|
68
|
+
hover-opacity: var(--_selected-hover-state-layer-opacity),
|
|
69
|
+
pressed-color: var(--_selected-pressed-state-layer-color),
|
|
70
|
+
pressed-opacity: var(--_selected-pressed-state-layer-opacity),
|
|
69
71
|
)
|
|
70
72
|
);
|
|
71
73
|
}
|
|
@@ -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{--_disabled-selected-icon-color: var(--md-radio-disabled-selected-icon-color, var(--md-sys-color-on-surface, #1c1b1f));--_disabled-selected-icon-opacity: var(--md-radio-disabled-selected-icon-opacity, 0.38);--_disabled-unselected-icon-color: var(--md-radio-disabled-unselected-icon-color, var(--md-sys-color-on-surface, #1c1b1f));--_disabled-unselected-icon-opacity: var(--md-radio-disabled-unselected-icon-opacity, 0.38);--_icon-size: var(--md-radio-icon-size, 20px);--_selected-focus-icon-color: var(--md-radio-selected-focus-icon-color, var(--md-sys-color-primary, #6750a4));--_selected-focus-state-layer-color: var(--md-radio-selected-focus-state-layer-color, var(--md-sys-color-primary, #6750a4));--_selected-focus-state-layer-opacity: var(--md-radio-selected-focus-state-layer-opacity, 0.12);--_selected-hover-icon-color: var(--md-radio-selected-hover-icon-color, var(--md-sys-color-primary, #6750a4));--_selected-hover-state-layer-color: var(--md-radio-selected-hover-state-layer-color, var(--md-sys-color-primary, #6750a4));--_selected-hover-state-layer-opacity: var(--md-radio-selected-hover-state-layer-opacity, 0.08);--_selected-icon-color: var(--md-radio-selected-icon-color, var(--md-sys-color-primary, #6750a4));--_selected-pressed-icon-color: var(--md-radio-selected-pressed-icon-color, var(--md-sys-color-primary, #6750a4));--_selected-pressed-state-layer-color: var(--md-radio-selected-pressed-state-layer-color, var(--md-sys-color-on-surface, #1c1b1f));--_selected-pressed-state-layer-opacity: var(--md-radio-selected-pressed-state-layer-opacity, 0.12);--_state-layer-size: var(--md-radio-state-layer-size, 40px);--_unselected-focus-icon-color: var(--md-radio-unselected-focus-icon-color, var(--md-sys-color-on-surface, #1c1b1f));--_unselected-focus-state-layer-color: var(--md-radio-unselected-focus-state-layer-color, var(--md-sys-color-on-surface, #1c1b1f));--_unselected-focus-state-layer-opacity: var(--md-radio-unselected-focus-state-layer-opacity, 0.12);--_unselected-hover-icon-color: var(--md-radio-unselected-hover-icon-color, var(--md-sys-color-on-surface, #1c1b1f));--_unselected-hover-state-layer-color: var(--md-radio-unselected-hover-state-layer-color, var(--md-sys-color-on-surface, #1c1b1f));--_unselected-hover-state-layer-opacity: var(--md-radio-unselected-hover-state-layer-opacity, 0.08);--_unselected-icon-color: var(--md-radio-unselected-icon-color, var(--md-sys-color-on-surface-variant, #49454f));--_unselected-pressed-icon-color: var(--md-radio-unselected-pressed-icon-color, var(--md-sys-color-on-surface, #1c1b1f));--_unselected-pressed-state-layer-color: var(--md-radio-unselected-pressed-state-layer-color, var(--md-sys-color-primary, #6750a4));--_unselected-pressed-state-layer-opacity: var(--md-radio-unselected-pressed-state-layer-opacity, 0.12);--md-ripple-focus-
|
|
7
|
+
export const styles = css `:host{--_disabled-selected-icon-color: var(--md-radio-disabled-selected-icon-color, var(--md-sys-color-on-surface, #1c1b1f));--_disabled-selected-icon-opacity: var(--md-radio-disabled-selected-icon-opacity, 0.38);--_disabled-unselected-icon-color: var(--md-radio-disabled-unselected-icon-color, var(--md-sys-color-on-surface, #1c1b1f));--_disabled-unselected-icon-opacity: var(--md-radio-disabled-unselected-icon-opacity, 0.38);--_icon-size: var(--md-radio-icon-size, 20px);--_selected-focus-icon-color: var(--md-radio-selected-focus-icon-color, var(--md-sys-color-primary, #6750a4));--_selected-focus-state-layer-color: var(--md-radio-selected-focus-state-layer-color, var(--md-sys-color-primary, #6750a4));--_selected-focus-state-layer-opacity: var(--md-radio-selected-focus-state-layer-opacity, 0.12);--_selected-hover-icon-color: var(--md-radio-selected-hover-icon-color, var(--md-sys-color-primary, #6750a4));--_selected-hover-state-layer-color: var(--md-radio-selected-hover-state-layer-color, var(--md-sys-color-primary, #6750a4));--_selected-hover-state-layer-opacity: var(--md-radio-selected-hover-state-layer-opacity, 0.08);--_selected-icon-color: var(--md-radio-selected-icon-color, var(--md-sys-color-primary, #6750a4));--_selected-pressed-icon-color: var(--md-radio-selected-pressed-icon-color, var(--md-sys-color-primary, #6750a4));--_selected-pressed-state-layer-color: var(--md-radio-selected-pressed-state-layer-color, var(--md-sys-color-on-surface, #1c1b1f));--_selected-pressed-state-layer-opacity: var(--md-radio-selected-pressed-state-layer-opacity, 0.12);--_state-layer-size: var(--md-radio-state-layer-size, 40px);--_unselected-focus-icon-color: var(--md-radio-unselected-focus-icon-color, var(--md-sys-color-on-surface, #1c1b1f));--_unselected-focus-state-layer-color: var(--md-radio-unselected-focus-state-layer-color, var(--md-sys-color-on-surface, #1c1b1f));--_unselected-focus-state-layer-opacity: var(--md-radio-unselected-focus-state-layer-opacity, 0.12);--_unselected-hover-icon-color: var(--md-radio-unselected-hover-icon-color, var(--md-sys-color-on-surface, #1c1b1f));--_unselected-hover-state-layer-color: var(--md-radio-unselected-hover-state-layer-color, var(--md-sys-color-on-surface, #1c1b1f));--_unselected-hover-state-layer-opacity: var(--md-radio-unselected-hover-state-layer-opacity, 0.08);--_unselected-icon-color: var(--md-radio-unselected-icon-color, var(--md-sys-color-on-surface-variant, #49454f));--_unselected-pressed-icon-color: var(--md-radio-unselected-pressed-icon-color, var(--md-sys-color-on-surface, #1c1b1f));--_unselected-pressed-state-layer-color: var(--md-radio-unselected-pressed-state-layer-color, var(--md-sys-color-primary, #6750a4));--_unselected-pressed-state-layer-opacity: var(--md-radio-unselected-pressed-state-layer-opacity, 0.12);--md-ripple-focus-color:var(--_unselected-focus-state-layer-color);--md-ripple-focus-opacity:var(--_unselected-focus-state-layer-opacity);--md-ripple-hover-color:var(--_unselected-hover-state-layer-color);--md-ripple-hover-opacity:var(--_unselected-hover-state-layer-opacity);--md-ripple-pressed-color:var(--_unselected-pressed-state-layer-color);--md-ripple-pressed-opacity:var(--_unselected-pressed-state-layer-opacity);--md-focus-ring-offset-vertical:-2px;--md-focus-ring-offset-horizontal:-2px;display:inline-flex;height:48px;position:relative;vertical-align:top;width:48px;-webkit-tap-highlight-color:rgba(0,0,0,0)}:host([checked]){--md-ripple-focus-color:var(--_selected-focus-state-layer-color);--md-ripple-focus-opacity:var(--_selected-focus-state-layer-opacity);--md-ripple-hover-color:var(--_selected-hover-state-layer-color);--md-ripple-hover-opacity:var(--_selected-hover-state-layer-opacity);--md-ripple-pressed-color:var(--_selected-pressed-state-layer-color);--md-ripple-pressed-opacity:var(--_selected-pressed-state-layer-opacity)}input,md-ripple,.icon{inset:0;margin:auto;position:absolute}input{appearance:none;outline:none}md-ripple{height:var(--_state-layer-size);width:var(--_state-layer-size)}.icon{fill:var(--_unselected-icon-color);height:var(--_icon-size);width:var(--_icon-size)}.outer.circle{transition:fill 50ms linear}.inner.circle{opacity:0;transform-origin:center;transition:opacity 50ms linear}:host([checked]) .icon{fill:var(--_selected-icon-color)}:host([checked]) .inner.circle{animation:inner-circle-grow 300ms cubic-bezier(0.05, 0.7, 0.1, 1);opacity:1}@keyframes inner-circle-grow{from{transform:scale(0)}to{transform:scale(1)}}:host([disabled]) .circle{animation-duration:0s;transition-duration:0s}:host(:hover) .icon{fill:var(--_unselected-hover-icon-color)}:host(:focus-within) .icon{fill:var(--_unselected-focus-icon-color)}:host(:active) .icon{fill:var(--_unselected-pressed-icon-color)}:host([disabled]) .icon{fill:var(--_disabled-unselected-icon-color);opacity:var(--_disabled-unselected-icon-opacity)}:host([checked]:hover) .icon{fill:var(--_selected-hover-icon-color)}:host([checked]:focus-within) .icon{fill:var(--_selected-focus-icon-color)}:host([checked]:active) .icon{fill:var(--_selected-pressed-icon-color)}:host([checked][disabled]) .icon{fill:var(--_disabled-selected-icon-color);opacity:var(--_disabled-selected-icon-opacity)}/*# sourceMappingURL=radio-styles.css.map */
|
|
8
8
|
`;
|
|
9
9
|
//# sourceMappingURL=radio-styles.css.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radio-styles.css.js","sourceRoot":"","sources":["radio-styles.css.ts"],"names":[],"mappings":"AAAA;;;;IAII;AACH,OAAO,EAAC,GAAG,EAAC,MAAM,KAAK,CAAC;AACxB,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;CACzB,CAAC","sourcesContent":["/**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n import {css} from 'lit';\n export const styles = css`:host{--_disabled-selected-icon-color: var(--md-radio-disabled-selected-icon-color, var(--md-sys-color-on-surface, #1c1b1f));--_disabled-selected-icon-opacity: var(--md-radio-disabled-selected-icon-opacity, 0.38);--_disabled-unselected-icon-color: var(--md-radio-disabled-unselected-icon-color, var(--md-sys-color-on-surface, #1c1b1f));--_disabled-unselected-icon-opacity: var(--md-radio-disabled-unselected-icon-opacity, 0.38);--_icon-size: var(--md-radio-icon-size, 20px);--_selected-focus-icon-color: var(--md-radio-selected-focus-icon-color, var(--md-sys-color-primary, #6750a4));--_selected-focus-state-layer-color: var(--md-radio-selected-focus-state-layer-color, var(--md-sys-color-primary, #6750a4));--_selected-focus-state-layer-opacity: var(--md-radio-selected-focus-state-layer-opacity, 0.12);--_selected-hover-icon-color: var(--md-radio-selected-hover-icon-color, var(--md-sys-color-primary, #6750a4));--_selected-hover-state-layer-color: var(--md-radio-selected-hover-state-layer-color, var(--md-sys-color-primary, #6750a4));--_selected-hover-state-layer-opacity: var(--md-radio-selected-hover-state-layer-opacity, 0.08);--_selected-icon-color: var(--md-radio-selected-icon-color, var(--md-sys-color-primary, #6750a4));--_selected-pressed-icon-color: var(--md-radio-selected-pressed-icon-color, var(--md-sys-color-primary, #6750a4));--_selected-pressed-state-layer-color: var(--md-radio-selected-pressed-state-layer-color, var(--md-sys-color-on-surface, #1c1b1f));--_selected-pressed-state-layer-opacity: var(--md-radio-selected-pressed-state-layer-opacity, 0.12);--_state-layer-size: var(--md-radio-state-layer-size, 40px);--_unselected-focus-icon-color: var(--md-radio-unselected-focus-icon-color, var(--md-sys-color-on-surface, #1c1b1f));--_unselected-focus-state-layer-color: var(--md-radio-unselected-focus-state-layer-color, var(--md-sys-color-on-surface, #1c1b1f));--_unselected-focus-state-layer-opacity: var(--md-radio-unselected-focus-state-layer-opacity, 0.12);--_unselected-hover-icon-color: var(--md-radio-unselected-hover-icon-color, var(--md-sys-color-on-surface, #1c1b1f));--_unselected-hover-state-layer-color: var(--md-radio-unselected-hover-state-layer-color, var(--md-sys-color-on-surface, #1c1b1f));--_unselected-hover-state-layer-opacity: var(--md-radio-unselected-hover-state-layer-opacity, 0.08);--_unselected-icon-color: var(--md-radio-unselected-icon-color, var(--md-sys-color-on-surface-variant, #49454f));--_unselected-pressed-icon-color: var(--md-radio-unselected-pressed-icon-color, var(--md-sys-color-on-surface, #1c1b1f));--_unselected-pressed-state-layer-color: var(--md-radio-unselected-pressed-state-layer-color, var(--md-sys-color-primary, #6750a4));--_unselected-pressed-state-layer-opacity: var(--md-radio-unselected-pressed-state-layer-opacity, 0.12);--md-ripple-focus-
|
|
1
|
+
{"version":3,"file":"radio-styles.css.js","sourceRoot":"","sources":["radio-styles.css.ts"],"names":[],"mappings":"AAAA;;;;IAII;AACH,OAAO,EAAC,GAAG,EAAC,MAAM,KAAK,CAAC;AACxB,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;CACzB,CAAC","sourcesContent":["/**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n import {css} from 'lit';\n export const styles = css`:host{--_disabled-selected-icon-color: var(--md-radio-disabled-selected-icon-color, var(--md-sys-color-on-surface, #1c1b1f));--_disabled-selected-icon-opacity: var(--md-radio-disabled-selected-icon-opacity, 0.38);--_disabled-unselected-icon-color: var(--md-radio-disabled-unselected-icon-color, var(--md-sys-color-on-surface, #1c1b1f));--_disabled-unselected-icon-opacity: var(--md-radio-disabled-unselected-icon-opacity, 0.38);--_icon-size: var(--md-radio-icon-size, 20px);--_selected-focus-icon-color: var(--md-radio-selected-focus-icon-color, var(--md-sys-color-primary, #6750a4));--_selected-focus-state-layer-color: var(--md-radio-selected-focus-state-layer-color, var(--md-sys-color-primary, #6750a4));--_selected-focus-state-layer-opacity: var(--md-radio-selected-focus-state-layer-opacity, 0.12);--_selected-hover-icon-color: var(--md-radio-selected-hover-icon-color, var(--md-sys-color-primary, #6750a4));--_selected-hover-state-layer-color: var(--md-radio-selected-hover-state-layer-color, var(--md-sys-color-primary, #6750a4));--_selected-hover-state-layer-opacity: var(--md-radio-selected-hover-state-layer-opacity, 0.08);--_selected-icon-color: var(--md-radio-selected-icon-color, var(--md-sys-color-primary, #6750a4));--_selected-pressed-icon-color: var(--md-radio-selected-pressed-icon-color, var(--md-sys-color-primary, #6750a4));--_selected-pressed-state-layer-color: var(--md-radio-selected-pressed-state-layer-color, var(--md-sys-color-on-surface, #1c1b1f));--_selected-pressed-state-layer-opacity: var(--md-radio-selected-pressed-state-layer-opacity, 0.12);--_state-layer-size: var(--md-radio-state-layer-size, 40px);--_unselected-focus-icon-color: var(--md-radio-unselected-focus-icon-color, var(--md-sys-color-on-surface, #1c1b1f));--_unselected-focus-state-layer-color: var(--md-radio-unselected-focus-state-layer-color, var(--md-sys-color-on-surface, #1c1b1f));--_unselected-focus-state-layer-opacity: var(--md-radio-unselected-focus-state-layer-opacity, 0.12);--_unselected-hover-icon-color: var(--md-radio-unselected-hover-icon-color, var(--md-sys-color-on-surface, #1c1b1f));--_unselected-hover-state-layer-color: var(--md-radio-unselected-hover-state-layer-color, var(--md-sys-color-on-surface, #1c1b1f));--_unselected-hover-state-layer-opacity: var(--md-radio-unselected-hover-state-layer-opacity, 0.08);--_unselected-icon-color: var(--md-radio-unselected-icon-color, var(--md-sys-color-on-surface-variant, #49454f));--_unselected-pressed-icon-color: var(--md-radio-unselected-pressed-icon-color, var(--md-sys-color-on-surface, #1c1b1f));--_unselected-pressed-state-layer-color: var(--md-radio-unselected-pressed-state-layer-color, var(--md-sys-color-primary, #6750a4));--_unselected-pressed-state-layer-opacity: var(--md-radio-unselected-pressed-state-layer-opacity, 0.12);--md-ripple-focus-color:var(--_unselected-focus-state-layer-color);--md-ripple-focus-opacity:var(--_unselected-focus-state-layer-opacity);--md-ripple-hover-color:var(--_unselected-hover-state-layer-color);--md-ripple-hover-opacity:var(--_unselected-hover-state-layer-opacity);--md-ripple-pressed-color:var(--_unselected-pressed-state-layer-color);--md-ripple-pressed-opacity:var(--_unselected-pressed-state-layer-opacity);--md-focus-ring-offset-vertical:-2px;--md-focus-ring-offset-horizontal:-2px;display:inline-flex;height:48px;position:relative;vertical-align:top;width:48px;-webkit-tap-highlight-color:rgba(0,0,0,0)}:host([checked]){--md-ripple-focus-color:var(--_selected-focus-state-layer-color);--md-ripple-focus-opacity:var(--_selected-focus-state-layer-opacity);--md-ripple-hover-color:var(--_selected-hover-state-layer-color);--md-ripple-hover-opacity:var(--_selected-hover-state-layer-opacity);--md-ripple-pressed-color:var(--_selected-pressed-state-layer-color);--md-ripple-pressed-opacity:var(--_selected-pressed-state-layer-opacity)}input,md-ripple,.icon{inset:0;margin:auto;position:absolute}input{appearance:none;outline:none}md-ripple{height:var(--_state-layer-size);width:var(--_state-layer-size)}.icon{fill:var(--_unselected-icon-color);height:var(--_icon-size);width:var(--_icon-size)}.outer.circle{transition:fill 50ms linear}.inner.circle{opacity:0;transform-origin:center;transition:opacity 50ms linear}:host([checked]) .icon{fill:var(--_selected-icon-color)}:host([checked]) .inner.circle{animation:inner-circle-grow 300ms cubic-bezier(0.05, 0.7, 0.1, 1);opacity:1}@keyframes inner-circle-grow{from{transform:scale(0)}to{transform:scale(1)}}:host([disabled]) .circle{animation-duration:0s;transition-duration:0s}:host(:hover) .icon{fill:var(--_unselected-hover-icon-color)}:host(:focus-within) .icon{fill:var(--_unselected-focus-icon-color)}:host(:active) .icon{fill:var(--_unselected-pressed-icon-color)}:host([disabled]) .icon{fill:var(--_disabled-unselected-icon-color);opacity:var(--_disabled-unselected-icon-opacity)}:host([checked]:hover) .icon{fill:var(--_selected-hover-icon-color)}:host([checked]:focus-within) .icon{fill:var(--_selected-focus-icon-color)}:host([checked]:active) .icon{fill:var(--_selected-pressed-icon-color)}:host([checked][disabled]) .icon{fill:var(--_disabled-selected-icon-color);opacity:var(--_disabled-selected-icon-opacity)}/*# sourceMappingURL=radio-styles.css.map */\n`;\n "]}
|
package/radio/lib/radio.js
CHANGED
|
@@ -21,6 +21,27 @@ const CHECKED = Symbol('checked');
|
|
|
21
21
|
* A radio component.
|
|
22
22
|
*/
|
|
23
23
|
export class Radio extends LitElement {
|
|
24
|
+
/**
|
|
25
|
+
* Whether or not the radio is selected.
|
|
26
|
+
*/
|
|
27
|
+
get checked() {
|
|
28
|
+
return this[CHECKED];
|
|
29
|
+
}
|
|
30
|
+
set checked(checked) {
|
|
31
|
+
const wasChecked = this.checked;
|
|
32
|
+
if (wasChecked === checked) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
this[CHECKED] = checked;
|
|
36
|
+
this.requestUpdate('checked', wasChecked);
|
|
37
|
+
this.selectionController.handleCheckedChange();
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* The associated form element with which this element's value will submit.
|
|
41
|
+
*/
|
|
42
|
+
get form() {
|
|
43
|
+
return this.closest('form');
|
|
44
|
+
}
|
|
24
45
|
constructor() {
|
|
25
46
|
super();
|
|
26
47
|
this[_a] = false;
|
|
@@ -56,27 +77,6 @@ export class Radio extends LitElement {
|
|
|
56
77
|
dispatchActivationClick(this.input);
|
|
57
78
|
});
|
|
58
79
|
}
|
|
59
|
-
/**
|
|
60
|
-
* Whether or not the radio is selected.
|
|
61
|
-
*/
|
|
62
|
-
get checked() {
|
|
63
|
-
return this[CHECKED];
|
|
64
|
-
}
|
|
65
|
-
set checked(checked) {
|
|
66
|
-
const wasChecked = this.checked;
|
|
67
|
-
if (wasChecked === checked) {
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
this[CHECKED] = checked;
|
|
71
|
-
this.requestUpdate('checked', wasChecked);
|
|
72
|
-
this.selectionController.handleCheckedChange();
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* The associated form element with which this element's value will submit.
|
|
76
|
-
*/
|
|
77
|
-
get form() {
|
|
78
|
-
return this.closest('form');
|
|
79
|
-
}
|
|
80
80
|
[(_a = CHECKED, getFormValue)]() {
|
|
81
81
|
return this.checked ? this.value : null;
|
|
82
82
|
}
|
package/radio/lib/radio.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radio.js","sourceRoot":"","sources":["radio.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;;AAEH,OAAO,2BAA2B,CAAC;AACnC,OAAO,wBAAwB,CAAC;AAEhC,OAAO,EAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAiB,MAAM,KAAK,CAAC;AAC9D,OAAO,EAAC,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAC,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAC,IAAI,EAAC,MAAM,wBAAwB,CAAC;AAE5C,OAAO,EAAC,uBAAuB,EAAE,iBAAiB,EAAE,eAAe,EAAC,MAAM,4BAA4B,CAAC;AACvG,OAAO,EAAC,cAAc,EAAE,YAAY,EAAC,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAC,YAAY,EAAC,MAAM,mCAAmC,CAAC;AAC/D,OAAO,EAAC,YAAY,EAAE,qBAAqB,EAAC,MAAM,6BAA6B,CAAC;AAChF,OAAO,EAAC,MAAM,EAAC,MAAM,2BAA2B,CAAC;AAGjD,OAAO,EAAC,yBAAyB,EAAC,MAAM,kCAAkC,CAAC;AAE3E,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAElC;;GAEG;AACH,MAAM,OAAO,KAAM,SAAQ,UAAU;
|
|
1
|
+
{"version":3,"file":"radio.js","sourceRoot":"","sources":["radio.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport '../../focus/focus-ring.js';\nimport '../../ripple/ripple.js';\n\nimport {html, LitElement, nothing, TemplateResult} from 'lit';\nimport {property, query, queryAsync, state} from 'lit/decorators.js';\nimport {when} from 'lit/directives/when.js';\n\nimport {dispatchActivationClick, isActivationClick, redispatchEvent} from '../../controller/events.js';\nimport {FormController, getFormValue} from '../../controller/form-controller.js';\nimport {ariaProperty} from '../../decorators/aria-property.js';\nimport {pointerPress, shouldShowStrongFocus} from '../../focus/strong-focus.js';\nimport {ripple} from '../../ripple/directive.js';\nimport {MdRipple} from '../../ripple/ripple.js';\n\nimport {SingleSelectionController} from './single-selection-controller.js';\n\nconst CHECKED = Symbol('checked');\n\n/**\n * A radio component.\n */\nexport class Radio extends LitElement {\n static override shadowRootOptions:\n ShadowRootInit = {...LitElement.shadowRootOptions, delegatesFocus: true};\n\n /**\n * @nocollapse\n */\n static formAssociated = true;\n\n /**\n * Whether or not the radio is selected.\n */\n @property({type: Boolean, reflect: true})\n get checked() {\n return this[CHECKED];\n }\n set checked(checked: boolean) {\n const wasChecked = this.checked;\n if (wasChecked === checked) {\n return;\n }\n\n this[CHECKED] = checked;\n this.requestUpdate('checked', wasChecked);\n this.selectionController.handleCheckedChange();\n }\n\n [CHECKED] = false;\n\n /**\n * Whether or not the radio is disabled.\n */\n @property({type: Boolean, reflect: true}) disabled = false;\n\n /**\n * The element value to use in form submission when checked.\n */\n @property({type: String}) value = 'on';\n\n /**\n * The HTML name to use in form submission.\n */\n @property({type: String, reflect: true}) name = '';\n\n @ariaProperty // tslint:disable-line:no-new-decorators\n @property({attribute: 'data-aria-label', noAccessor: true})\n override ariaLabel!: string;\n\n /**\n * The associated form element with which this element's value will submit.\n */\n get form() {\n return this.closest('form');\n }\n\n @query('input') private readonly input!: HTMLInputElement|null;\n @queryAsync('md-ripple') private readonly ripple!: Promise<MdRipple|null>;\n private readonly selectionController = new SingleSelectionController(this);\n @state() private showFocusRing = false;\n @state() private showRipple = false;\n\n constructor() {\n super();\n this.addController(new FormController(this));\n this.addController(this.selectionController);\n this.addEventListener('click', (event: Event) => {\n if (!isActivationClick(event)) {\n return;\n }\n this.focus();\n dispatchActivationClick(this.input!);\n });\n }\n\n [getFormValue]() {\n return this.checked ? this.value : null;\n }\n\n override focus() {\n this.input?.focus();\n }\n\n protected override render(): TemplateResult {\n return html`\n ${when(this.showRipple, this.renderRipple)}\n ${this.renderFocusRing()}\n <svg class=\"icon\" viewBox=\"0 0 20 20\">\n <mask id=\"cutout\">\n <rect width=\"100%\" height=\"100%\" fill=\"white\" />\n <circle cx=\"10\" cy=\"10\" r=\"8\" fill=\"black\" />\n </mask>\n <circle class=\"outer circle\" cx=\"10\" cy=\"10\" r=\"10\" mask=\"url(#cutout)\" />\n <circle class=\"inner circle\" cx=\"10\" cy=\"10\" r=\"5\" />\n </svg>\n <input\n type=\"radio\"\n name=${this.name}\n aria-label=${this.ariaLabel || nothing}\n .checked=${this.checked}\n .value=${this.value}\n ?disabled=${this.disabled}\n @change=${this.handleChange}\n @focus=${this.handleFocus}\n @blur=${this.handleBlur}\n @pointerdown=${this.handlePointerDown}\n ${ripple(this.getRipple)}\n >\n `;\n }\n\n private handleBlur() {\n this.showFocusRing = false;\n }\n\n private handleFocus() {\n this.showFocusRing = shouldShowStrongFocus();\n }\n\n private handleChange(event: Event) {\n if (this.disabled) {\n return;\n }\n\n // Per spec, the change event on a radio input always represents checked.\n this.checked = true;\n redispatchEvent(this, event);\n }\n\n private handlePointerDown() {\n pointerPress();\n this.showFocusRing = shouldShowStrongFocus();\n }\n\n private readonly getRipple = () => {\n this.showRipple = true;\n return this.ripple;\n };\n\n private readonly renderRipple = () => {\n return html`<md-ripple unbounded ?disabled=${this.disabled}></md-ripple>`;\n };\n\n private renderFocusRing(): TemplateResult {\n return html`<md-focus-ring .visible=${this.showFocusRing}></md-focus-ring>`;\n }\n}\n"]}
|
package/radio/radio.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radio.js","sourceRoot":"","sources":["radio.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAEH,OAAO,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAC,MAAM,IAAI,kBAAkB,EAAC,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAC,KAAK,EAAC,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAC,MAAM,EAAC,MAAM,2BAA2B,CAAC;AAQjD;;;;;;;;;;;;;;;GAeG;
|
|
1
|
+
{"version":3,"file":"radio.js","sourceRoot":"","sources":["radio.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAEH,OAAO,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAC,MAAM,IAAI,kBAAkB,EAAC,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAC,KAAK,EAAC,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAC,MAAM,EAAC,MAAM,2BAA2B,CAAC;AAQjD;;;;;;;;;;;;;;;GAeG;AAEI,IAAM,OAAO,GAAb,MAAM,OAAQ,SAAQ,KAAK;;AAChB,cAAM,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;AAD3C,OAAO;IADnB,aAAa,CAAC,UAAU,CAAC;GACb,OAAO,CAEnB;SAFY,OAAO","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 {styles as forcedColorsStyles} from './lib/forced-colors-styles.css.js';\nimport {Radio} from './lib/radio.js';\nimport {styles} from './lib/radio-styles.css.js';\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'md-radio': MdRadio;\n }\n}\n\n/**\n * @summary Radio buttons allow users to select one option from a set.\n *\n * @description\n * Radio buttons are the recommended way to allow users to make a single\n * selection from a list of options.\n *\n * Only one radio button can be selected at a time.\n *\n * Use radio buttons to:\n * - Select a single option from a set\n * - Expose all available options\n *\n * @final\n * @suppress {visibility}\n */\n@customElement('md-radio')\nexport class MdRadio extends Radio {\n static override styles = [styles, forcedColorsStyles];\n}\n"]}
|
package/ripple/directive.d.ts
CHANGED
|
@@ -10,46 +10,14 @@ import { Ripple } from './lib/ripple.js';
|
|
|
10
10
|
*
|
|
11
11
|
* Use with `await rippleFunction()`
|
|
12
12
|
*/
|
|
13
|
-
|
|
13
|
+
type RippleFunction = () => Ripple | null | Promise<Ripple | null>;
|
|
14
14
|
declare class RippleDirective extends Directive {
|
|
15
15
|
private rippleGetter;
|
|
16
16
|
private element?;
|
|
17
|
-
private state;
|
|
18
|
-
private checkBoundsAfterContextMenu;
|
|
19
|
-
private rippleStartEvent;
|
|
20
|
-
private touchTimer;
|
|
21
|
-
private clickTimer;
|
|
22
17
|
constructor(partInfo: PartInfo);
|
|
23
18
|
render(ripple: RippleFunction | Promise<Ripple | null>): symbol;
|
|
24
19
|
handleEvent(event: Event): Promise<void>;
|
|
25
20
|
update(part: ElementPart, [ripple]: DirectiveParameters<this>): symbol;
|
|
26
|
-
/**
|
|
27
|
-
* Returns `true` if
|
|
28
|
-
* - the ripple element is enabled
|
|
29
|
-
* - the pointer is primary for the input type
|
|
30
|
-
* - the pointer is the pointer that started the interaction, or will start
|
|
31
|
-
* the interaction
|
|
32
|
-
* - the pointer is a touch, or the pointer state has the primary button
|
|
33
|
-
* held, or the pointer is hovering
|
|
34
|
-
*/
|
|
35
|
-
private shouldReactToEvent;
|
|
36
|
-
private isTouch;
|
|
37
|
-
/**
|
|
38
|
-
* Check if the event is within the bounds of the element.
|
|
39
|
-
*
|
|
40
|
-
* This is only needed for the "stuck" contextmenu longpress on Chrome.
|
|
41
|
-
*/
|
|
42
|
-
private inBounds;
|
|
43
|
-
private beginPress;
|
|
44
|
-
private endPress;
|
|
45
|
-
private waitForTouchHold;
|
|
46
|
-
private click;
|
|
47
|
-
private contextMenu;
|
|
48
|
-
private pointerDown;
|
|
49
|
-
private pointerUp;
|
|
50
|
-
private pointerCancel;
|
|
51
|
-
private pointerEnter;
|
|
52
|
-
private pointerLeave;
|
|
53
21
|
}
|
|
54
22
|
/**
|
|
55
23
|
* Connects a Ripple element to a node that drives the interaction
|
package/ripple/directive.js
CHANGED
|
@@ -5,65 +5,10 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { noChange } from 'lit';
|
|
7
7
|
import { Directive, directive, PartType } from 'lit/directive.js';
|
|
8
|
-
/**
|
|
9
|
-
* Delay reacting to touch so that we do not show the ripple for a swipe or
|
|
10
|
-
* scroll interaction.
|
|
11
|
-
*/
|
|
12
|
-
const TOUCH_DELAY_MS = 150;
|
|
13
|
-
/**
|
|
14
|
-
* Interaction states for the ripple.
|
|
15
|
-
*
|
|
16
|
-
* On Touch:
|
|
17
|
-
* - `INACTIVE -> TOUCH_DELAY -> WAITING_FOR_CLICK -> INACTIVE`
|
|
18
|
-
* - `INACTIVE -> TOUCH_DELAY -> HOLDING -> WAITING_FOR_CLICK -> INACTIVE`
|
|
19
|
-
*
|
|
20
|
-
* On Mouse or Pen:
|
|
21
|
-
* - `INACTIVE -> WAITING_FOR_CLICK -> INACTIVE`
|
|
22
|
-
*/
|
|
23
|
-
var State;
|
|
24
|
-
(function (State) {
|
|
25
|
-
/**
|
|
26
|
-
* Initial state of the control, no touch in progress.
|
|
27
|
-
*
|
|
28
|
-
* Transitions:
|
|
29
|
-
* - on touch down: transition to `TOUCH_DELAY`.
|
|
30
|
-
* - on mouse down: transition to `WAITING_FOR_CLICK`.
|
|
31
|
-
*/
|
|
32
|
-
State[State["INACTIVE"] = 0] = "INACTIVE";
|
|
33
|
-
/**
|
|
34
|
-
* Touch down has been received, waiting to determine if it's a swipe or
|
|
35
|
-
* scroll.
|
|
36
|
-
*
|
|
37
|
-
* Transitions:
|
|
38
|
-
* - on touch up: beginPress(); transition to `WAITING_FOR_CLICK`.
|
|
39
|
-
* - on cancel: transition to `INACTIVE`.
|
|
40
|
-
* - after `TOUCH_DELAY_MS`: beginPress(); transition to `HOLDING`.
|
|
41
|
-
*/
|
|
42
|
-
State[State["TOUCH_DELAY"] = 1] = "TOUCH_DELAY";
|
|
43
|
-
/**
|
|
44
|
-
* A touch has been deemed to be a press
|
|
45
|
-
*
|
|
46
|
-
* Transitions:
|
|
47
|
-
* - on up: transition to `WAITING_FOR_CLICK`.
|
|
48
|
-
*/
|
|
49
|
-
State[State["HOLDING"] = 2] = "HOLDING";
|
|
50
|
-
/**
|
|
51
|
-
* The user touch has finished, transition into rest state.
|
|
52
|
-
*
|
|
53
|
-
* Transitions:
|
|
54
|
-
* - on click endPress(); transition to `INACTIVE`.
|
|
55
|
-
*/
|
|
56
|
-
State[State["WAITING_FOR_CLICK"] = 3] = "WAITING_FOR_CLICK";
|
|
57
|
-
})(State || (State = {}));
|
|
58
8
|
class RippleDirective extends Directive {
|
|
59
9
|
constructor(partInfo) {
|
|
60
10
|
super(partInfo);
|
|
61
11
|
this.rippleGetter = async () => null;
|
|
62
|
-
this.state = State.INACTIVE;
|
|
63
|
-
this.checkBoundsAfterContextMenu = false;
|
|
64
|
-
this.rippleStartEvent = null;
|
|
65
|
-
this.touchTimer = null;
|
|
66
|
-
this.clickTimer = null;
|
|
67
12
|
if (partInfo.type !== PartType.ELEMENT) {
|
|
68
13
|
throw new Error('The `ripple` directive must be used on an element');
|
|
69
14
|
}
|
|
@@ -80,25 +25,25 @@ class RippleDirective extends Directive {
|
|
|
80
25
|
}
|
|
81
26
|
switch (event.type) {
|
|
82
27
|
case 'click':
|
|
83
|
-
|
|
28
|
+
ripple.handleClick();
|
|
84
29
|
break;
|
|
85
30
|
case 'contextmenu':
|
|
86
|
-
|
|
31
|
+
ripple.handleContextmenu();
|
|
87
32
|
break;
|
|
88
33
|
case 'pointercancel':
|
|
89
|
-
|
|
34
|
+
ripple.handlePointercancel(event);
|
|
90
35
|
break;
|
|
91
36
|
case 'pointerdown':
|
|
92
|
-
|
|
37
|
+
await ripple.handlePointerdown(event);
|
|
93
38
|
break;
|
|
94
39
|
case 'pointerenter':
|
|
95
|
-
|
|
40
|
+
ripple.handlePointerenter(event);
|
|
96
41
|
break;
|
|
97
42
|
case 'pointerleave':
|
|
98
|
-
|
|
43
|
+
ripple.handlePointerleave(event);
|
|
99
44
|
break;
|
|
100
45
|
case 'pointerup':
|
|
101
|
-
|
|
46
|
+
ripple.handlePointerup(event);
|
|
102
47
|
break;
|
|
103
48
|
default:
|
|
104
49
|
break;
|
|
@@ -121,138 +66,6 @@ class RippleDirective extends Directive {
|
|
|
121
66
|
this.rippleGetter = typeof ripple === 'function' ? ripple : () => ripple;
|
|
122
67
|
return noChange;
|
|
123
68
|
}
|
|
124
|
-
/**
|
|
125
|
-
* Returns `true` if
|
|
126
|
-
* - the ripple element is enabled
|
|
127
|
-
* - the pointer is primary for the input type
|
|
128
|
-
* - the pointer is the pointer that started the interaction, or will start
|
|
129
|
-
* the interaction
|
|
130
|
-
* - the pointer is a touch, or the pointer state has the primary button
|
|
131
|
-
* held, or the pointer is hovering
|
|
132
|
-
*/
|
|
133
|
-
shouldReactToEvent(ripple, ev, hovering = false) {
|
|
134
|
-
const enabled = !ripple.disabled;
|
|
135
|
-
const isPrimaryPointer = ev.isPrimary;
|
|
136
|
-
const isInteractionPointer = this.rippleStartEvent === null ||
|
|
137
|
-
this.rippleStartEvent.pointerId === ev.pointerId;
|
|
138
|
-
const isPrimaryButton = ev.buttons === 1;
|
|
139
|
-
return enabled && isPrimaryPointer && isInteractionPointer &&
|
|
140
|
-
(this.isTouch(ev) || isPrimaryButton || hovering);
|
|
141
|
-
}
|
|
142
|
-
isTouch({ pointerType }) {
|
|
143
|
-
return pointerType === 'touch';
|
|
144
|
-
}
|
|
145
|
-
/**
|
|
146
|
-
* Check if the event is within the bounds of the element.
|
|
147
|
-
*
|
|
148
|
-
* This is only needed for the "stuck" contextmenu longpress on Chrome.
|
|
149
|
-
*/
|
|
150
|
-
inBounds({ x, y }) {
|
|
151
|
-
const { top, left, bottom, right } = this.element.getBoundingClientRect();
|
|
152
|
-
return x >= left && x <= right && y >= top && y <= bottom;
|
|
153
|
-
}
|
|
154
|
-
beginPress(ripple) {
|
|
155
|
-
ripple.beginPress(this.rippleStartEvent);
|
|
156
|
-
}
|
|
157
|
-
endPress(ripple) {
|
|
158
|
-
ripple.endPress();
|
|
159
|
-
this.state = State.INACTIVE;
|
|
160
|
-
this.rippleStartEvent = null;
|
|
161
|
-
if (this.touchTimer) {
|
|
162
|
-
clearTimeout(this.touchTimer);
|
|
163
|
-
this.touchTimer = null;
|
|
164
|
-
}
|
|
165
|
-
if (this.clickTimer) {
|
|
166
|
-
clearTimeout(this.clickTimer);
|
|
167
|
-
this.clickTimer = null;
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
waitForTouchHold() {
|
|
171
|
-
if (this.touchTimer !== null) {
|
|
172
|
-
clearTimeout(this.touchTimer);
|
|
173
|
-
}
|
|
174
|
-
this.state = State.TOUCH_DELAY;
|
|
175
|
-
this.touchTimer = setTimeout(async () => {
|
|
176
|
-
const ripple = await this.rippleGetter();
|
|
177
|
-
if (ripple === null || this.state !== State.TOUCH_DELAY) {
|
|
178
|
-
return;
|
|
179
|
-
}
|
|
180
|
-
this.state = State.HOLDING;
|
|
181
|
-
this.beginPress(ripple);
|
|
182
|
-
}, TOUCH_DELAY_MS);
|
|
183
|
-
}
|
|
184
|
-
click(ripple) {
|
|
185
|
-
// Click is a MouseEvent in Firefox and Safari, so we cannot use
|
|
186
|
-
// `shouldReactToEvent`
|
|
187
|
-
if (ripple.disabled) {
|
|
188
|
-
return;
|
|
189
|
-
}
|
|
190
|
-
if (this.state === State.WAITING_FOR_CLICK) {
|
|
191
|
-
this.endPress(ripple);
|
|
192
|
-
}
|
|
193
|
-
else if (this.state === State.INACTIVE) {
|
|
194
|
-
// keyboard synthesized click event
|
|
195
|
-
this.beginPress(ripple);
|
|
196
|
-
this.endPress(ripple);
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
contextMenu(ripple) {
|
|
200
|
-
if (!ripple.disabled) {
|
|
201
|
-
this.checkBoundsAfterContextMenu = true;
|
|
202
|
-
this.endPress(ripple);
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
pointerDown(ripple, ev) {
|
|
206
|
-
if (!this.shouldReactToEvent(ripple, ev)) {
|
|
207
|
-
return;
|
|
208
|
-
}
|
|
209
|
-
this.rippleStartEvent = ev;
|
|
210
|
-
if (this.isTouch(ev)) {
|
|
211
|
-
// after a longpress contextmenu event, an extra `pointerdown` can be
|
|
212
|
-
// dispatched to the pressed element. Check that the down is within
|
|
213
|
-
// bounds of the element in this case.
|
|
214
|
-
if (this.checkBoundsAfterContextMenu && !this.inBounds(ev)) {
|
|
215
|
-
return;
|
|
216
|
-
}
|
|
217
|
-
this.checkBoundsAfterContextMenu = false;
|
|
218
|
-
this.waitForTouchHold();
|
|
219
|
-
}
|
|
220
|
-
else {
|
|
221
|
-
this.state = State.WAITING_FOR_CLICK;
|
|
222
|
-
this.beginPress(ripple);
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
pointerUp(ripple, ev) {
|
|
226
|
-
if (!this.isTouch(ev) || !this.shouldReactToEvent(ripple, ev)) {
|
|
227
|
-
return;
|
|
228
|
-
}
|
|
229
|
-
if (this.state === State.HOLDING) {
|
|
230
|
-
this.state = State.WAITING_FOR_CLICK;
|
|
231
|
-
}
|
|
232
|
-
else if (this.state === State.TOUCH_DELAY) {
|
|
233
|
-
this.state = State.WAITING_FOR_CLICK;
|
|
234
|
-
this.beginPress(ripple);
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
pointerCancel(ripple, ev) {
|
|
238
|
-
if (this.shouldReactToEvent(ripple, ev)) {
|
|
239
|
-
this.endPress(ripple);
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
pointerEnter(ripple, ev) {
|
|
243
|
-
if (this.shouldReactToEvent(ripple, ev, true)) {
|
|
244
|
-
ripple.beginHover(ev);
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
pointerLeave(ripple, ev) {
|
|
248
|
-
if (this.shouldReactToEvent(ripple, ev, true)) {
|
|
249
|
-
ripple.endHover();
|
|
250
|
-
// release a held mouse or pen press that moves outside the element
|
|
251
|
-
if (!this.isTouch(ev) && this.state !== State.INACTIVE) {
|
|
252
|
-
this.endPress(ripple);
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
69
|
}
|
|
257
70
|
/**
|
|
258
71
|
* Connects a Ripple element to a node that drives the interaction
|
package/ripple/directive.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"directive.js","sourceRoot":"","sources":["directive.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 {noChange} from 'lit';\nimport {Directive, directive, DirectiveParameters, ElementPart, PartInfo, PartType} from 'lit/directive.js';\n\nimport {Ripple} from './lib/ripple.js';\n\n/**\n * Delay reacting to touch so that we do not show the ripple for a swipe or\n * scroll interaction.\n */\nconst TOUCH_DELAY_MS = 150;\n\n/**\n * Interaction states for the ripple.\n *\n * On Touch:\n * - `INACTIVE -> TOUCH_DELAY -> WAITING_FOR_CLICK -> INACTIVE`\n * - `INACTIVE -> TOUCH_DELAY -> HOLDING -> WAITING_FOR_CLICK -> INACTIVE`\n *\n * On Mouse or Pen:\n * - `INACTIVE -> WAITING_FOR_CLICK -> INACTIVE`\n */\nenum State {\n /**\n * Initial state of the control, no touch in progress.\n *\n * Transitions:\n * - on touch down: transition to `TOUCH_DELAY`.\n * - on mouse down: transition to `WAITING_FOR_CLICK`.\n */\n INACTIVE,\n /**\n * Touch down has been received, waiting to determine if it's a swipe or\n * scroll.\n *\n * Transitions:\n * - on touch up: beginPress(); transition to `WAITING_FOR_CLICK`.\n * - on cancel: transition to `INACTIVE`.\n * - after `TOUCH_DELAY_MS`: beginPress(); transition to `HOLDING`.\n */\n TOUCH_DELAY,\n /**\n * A touch has been deemed to be a press\n *\n * Transitions:\n * - on up: transition to `WAITING_FOR_CLICK`.\n */\n HOLDING,\n /**\n * The user touch has finished, transition into rest state.\n *\n * Transitions:\n * - on click endPress(); transition to `INACTIVE`.\n */\n WAITING_FOR_CLICK\n}\n\n/**\n * Normalized ripple accessor type.\n *\n * Use with `await rippleFunction()`\n */\ntype RippleFunction = () => Ripple|null|Promise<Ripple|null>;\n\nclass RippleDirective extends Directive {\n private rippleGetter: RippleFunction = async () => null;\n private element?: HTMLElement;\n private state: State = State.INACTIVE;\n private checkBoundsAfterContextMenu = false;\n private rippleStartEvent: PointerEvent|null = null;\n private touchTimer: number|null = null;\n private clickTimer: number|null = null;\n\n constructor(partInfo: PartInfo) {\n super(partInfo);\n if (partInfo.type !== PartType.ELEMENT) {\n throw new Error('The `ripple` directive must be used on an element');\n }\n }\n\n render(ripple: RippleFunction|Promise<Ripple|null>) {\n return noChange;\n }\n\n // Use EventListenerObject::handleEvent interface to handle events without\n // generating bound event handlers\n async handleEvent(event: Event) {\n const ripple = await this.rippleGetter();\n if (!ripple) {\n return;\n }\n switch (event.type) {\n case 'click':\n this.click(ripple);\n break;\n case 'contextmenu':\n this.contextMenu(ripple);\n break;\n case 'pointercancel':\n this.pointerCancel(ripple, event as PointerEvent);\n break;\n case 'pointerdown':\n this.pointerDown(ripple, event as PointerEvent);\n break;\n case 'pointerenter':\n this.pointerEnter(ripple, event as PointerEvent);\n break;\n case 'pointerleave':\n this.pointerLeave(ripple, event as PointerEvent);\n break;\n case 'pointerup':\n this.pointerUp(ripple, event as PointerEvent);\n break;\n default:\n break;\n }\n }\n\n override update(part: ElementPart, [ripple]: DirectiveParameters<this>) {\n if (!this.element) {\n // NOTE: addEventListener typing needs to be used with HTMLElements or a\n // subclass\n this.element = part.element as HTMLElement;\n this.element.addEventListener('click', this);\n this.element.addEventListener('contextmenu', this);\n this.element.addEventListener('pointercancel', this);\n this.element.addEventListener('pointerdown', this);\n this.element.addEventListener('pointerenter', this);\n this.element.addEventListener('pointerleave', this);\n this.element.addEventListener('pointerup', this);\n }\n // Normalize given ripple accessor\n this.rippleGetter = typeof ripple === 'function' ? ripple : () => ripple;\n return noChange;\n }\n\n /**\n * Returns `true` if\n * - the ripple element is enabled\n * - the pointer is primary for the input type\n * - the pointer is the pointer that started the interaction, or will start\n * the interaction\n * - the pointer is a touch, or the pointer state has the primary button\n * held, or the pointer is hovering\n */\n private shouldReactToEvent(\n ripple: Ripple, ev: PointerEvent, hovering = false) {\n const enabled = !ripple.disabled;\n const isPrimaryPointer = ev.isPrimary;\n const isInteractionPointer = this.rippleStartEvent === null ||\n this.rippleStartEvent.pointerId === ev.pointerId;\n const isPrimaryButton = ev.buttons === 1;\n return enabled && isPrimaryPointer && isInteractionPointer &&\n (this.isTouch(ev) || isPrimaryButton || hovering);\n }\n\n private isTouch({pointerType}: PointerEvent) {\n return pointerType === 'touch';\n }\n\n /**\n * Check if the event is within the bounds of the element.\n *\n * This is only needed for the \"stuck\" contextmenu longpress on Chrome.\n */\n private inBounds({x, y}: PointerEvent) {\n const {top, left, bottom, right} = this.element!.getBoundingClientRect();\n return x >= left && x <= right && y >= top && y <= bottom;\n }\n\n private beginPress(ripple: Ripple) {\n ripple.beginPress(this.rippleStartEvent);\n }\n\n private endPress(ripple: Ripple) {\n ripple.endPress();\n this.state = State.INACTIVE;\n this.rippleStartEvent = null;\n if (this.touchTimer) {\n clearTimeout(this.touchTimer);\n this.touchTimer = null;\n }\n if (this.clickTimer) {\n clearTimeout(this.clickTimer);\n this.clickTimer = null;\n }\n }\n\n private waitForTouchHold() {\n if (this.touchTimer !== null) {\n clearTimeout(this.touchTimer);\n }\n this.state = State.TOUCH_DELAY;\n this.touchTimer = setTimeout(async () => {\n const ripple = await this.rippleGetter();\n if (ripple === null || this.state !== State.TOUCH_DELAY) {\n return;\n }\n this.state = State.HOLDING;\n this.beginPress(ripple);\n }, TOUCH_DELAY_MS);\n }\n\n private click(ripple: Ripple) {\n // Click is a MouseEvent in Firefox and Safari, so we cannot use\n // `shouldReactToEvent`\n if (ripple.disabled) {\n return;\n }\n if (this.state === State.WAITING_FOR_CLICK) {\n this.endPress(ripple);\n } else if (this.state === State.INACTIVE) {\n // keyboard synthesized click event\n this.beginPress(ripple);\n this.endPress(ripple);\n }\n }\n\n private contextMenu(ripple: Ripple) {\n if (!ripple.disabled) {\n this.checkBoundsAfterContextMenu = true;\n this.endPress(ripple);\n }\n }\n\n private pointerDown(ripple: Ripple, ev: PointerEvent) {\n if (!this.shouldReactToEvent(ripple, ev)) {\n return;\n }\n this.rippleStartEvent = ev;\n if (this.isTouch(ev)) {\n // after a longpress contextmenu event, an extra `pointerdown` can be\n // dispatched to the pressed element. Check that the down is within\n // bounds of the element in this case.\n if (this.checkBoundsAfterContextMenu && !this.inBounds(ev)) {\n return;\n }\n this.checkBoundsAfterContextMenu = false;\n this.waitForTouchHold();\n } else {\n this.state = State.WAITING_FOR_CLICK;\n this.beginPress(ripple);\n }\n }\n\n private pointerUp(ripple: Ripple, ev: PointerEvent) {\n if (!this.isTouch(ev) || !this.shouldReactToEvent(ripple, ev)) {\n return;\n }\n if (this.state === State.HOLDING) {\n this.state = State.WAITING_FOR_CLICK;\n } else if (this.state === State.TOUCH_DELAY) {\n this.state = State.WAITING_FOR_CLICK;\n this.beginPress(ripple);\n }\n }\n\n private pointerCancel(ripple: Ripple, ev: PointerEvent) {\n if (this.shouldReactToEvent(ripple, ev)) {\n this.endPress(ripple);\n }\n }\n\n private pointerEnter(ripple: Ripple, ev: PointerEvent) {\n if (this.shouldReactToEvent(ripple, ev, true)) {\n ripple.beginHover(ev);\n }\n }\n\n private pointerLeave(ripple: Ripple, ev: PointerEvent) {\n if (this.shouldReactToEvent(ripple, ev, true)) {\n ripple.endHover();\n // release a held mouse or pen press that moves outside the element\n if (!this.isTouch(ev) && this.state !== State.INACTIVE) {\n this.endPress(ripple);\n }\n }\n }\n}\n\n/**\n * Connects a Ripple element to a node that drives the interaction\n *\n * @param rippleGetter A function that returns an `md-ripple` element\n * @param simulateKeyboardClick For elements that do not issue a click on\n * keyboard interaction, pass `true` to enable press animations on Enter or\n * Spacebar\n */\nexport const ripple = directive(RippleDirective);"]}
|
|
1
|
+
{"version":3,"file":"directive.js","sourceRoot":"","sources":["directive.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAC,QAAQ,EAAC,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAC,SAAS,EAAE,SAAS,EAA8C,QAAQ,EAAC,MAAM,kBAAkB,CAAC;AAW5G,MAAM,eAAgB,SAAQ,SAAS;IAIrC,YAAY,QAAkB;QAC5B,KAAK,CAAC,QAAQ,CAAC,CAAC;QAJV,iBAAY,GAAmB,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC;QAKtD,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,OAAO,EAAE;YACtC,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;SACtE;IACH,CAAC;IAED,MAAM,CAAC,MAA2C;QAChD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,0EAA0E;IAC1E,kCAAkC;IAClC,KAAK,CAAC,WAAW,CAAC,KAAY;QAC5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QACzC,IAAI,CAAC,MAAM,EAAE;YACX,OAAO;SACR;QACD,QAAQ,KAAK,CAAC,IAAI,EAAE;YAClB,KAAK,OAAO;gBACV,MAAM,CAAC,WAAW,EAAE,CAAC;gBACrB,MAAM;YACR,KAAK,aAAa;gBAChB,MAAM,CAAC,iBAAiB,EAAE,CAAC;gBAC3B,MAAM;YACR,KAAK,eAAe;gBAClB,MAAM,CAAC,mBAAmB,CAAC,KAAqB,CAAC,CAAC;gBAClD,MAAM;YACR,KAAK,aAAa;gBAChB,MAAM,MAAM,CAAC,iBAAiB,CAAC,KAAqB,CAAC,CAAC;gBACtD,MAAM;YACR,KAAK,cAAc;gBACjB,MAAM,CAAC,kBAAkB,CAAC,KAAqB,CAAC,CAAC;gBACjD,MAAM;YACR,KAAK,cAAc;gBACjB,MAAM,CAAC,kBAAkB,CAAC,KAAqB,CAAC,CAAC;gBACjD,MAAM;YACR,KAAK,WAAW;gBACd,MAAM,CAAC,eAAe,CAAC,KAAqB,CAAC,CAAC;gBAC9C,MAAM;YACR;gBACE,MAAM;SACT;IACH,CAAC;IAEQ,MAAM,CAAC,IAAiB,EAAE,CAAC,MAAM,CAA4B;QACpE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,wEAAwE;YACxE,WAAW;YACX,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAsB,CAAC;YAC3C,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC7C,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YACnD,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;YACrD,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YACnD,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;YACpD,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;YACpD,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;SAClD;QACD,kCAAkC;QAClC,IAAI,CAAC,YAAY,GAAG,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;QACzE,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,SAAS,CAAC,eAAe,CAAC,CAAC","sourcesContent":["/**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {noChange} from 'lit';\nimport {Directive, directive, DirectiveParameters, ElementPart, PartInfo, PartType} from 'lit/directive.js';\n\nimport {Ripple} from './lib/ripple.js';\n\n/**\n * Normalized ripple accessor type.\n *\n * Use with `await rippleFunction()`\n */\ntype RippleFunction = () => Ripple|null|Promise<Ripple|null>;\n\nclass RippleDirective extends Directive {\n private rippleGetter: RippleFunction = async () => null;\n private element?: HTMLElement;\n\n constructor(partInfo: PartInfo) {\n super(partInfo);\n if (partInfo.type !== PartType.ELEMENT) {\n throw new Error('The `ripple` directive must be used on an element');\n }\n }\n\n render(ripple: RippleFunction|Promise<Ripple|null>) {\n return noChange;\n }\n\n // Use EventListenerObject::handleEvent interface to handle events without\n // generating bound event handlers\n async handleEvent(event: Event) {\n const ripple = await this.rippleGetter();\n if (!ripple) {\n return;\n }\n switch (event.type) {\n case 'click':\n ripple.handleClick();\n break;\n case 'contextmenu':\n ripple.handleContextmenu();\n break;\n case 'pointercancel':\n ripple.handlePointercancel(event as PointerEvent);\n break;\n case 'pointerdown':\n await ripple.handlePointerdown(event as PointerEvent);\n break;\n case 'pointerenter':\n ripple.handlePointerenter(event as PointerEvent);\n break;\n case 'pointerleave':\n ripple.handlePointerleave(event as PointerEvent);\n break;\n case 'pointerup':\n ripple.handlePointerup(event as PointerEvent);\n break;\n default:\n break;\n }\n }\n\n override update(part: ElementPart, [ripple]: DirectiveParameters<this>) {\n if (!this.element) {\n // NOTE: addEventListener typing needs to be used with HTMLElements or a\n // subclass\n this.element = part.element as HTMLElement;\n this.element.addEventListener('click', this);\n this.element.addEventListener('contextmenu', this);\n this.element.addEventListener('pointercancel', this);\n this.element.addEventListener('pointerdown', this);\n this.element.addEventListener('pointerenter', this);\n this.element.addEventListener('pointerleave', this);\n this.element.addEventListener('pointerup', this);\n }\n // Normalize given ripple accessor\n this.rippleGetter = typeof ripple === 'function' ? ripple : () => ripple;\n return noChange;\n }\n}\n\n/**\n * Connects a Ripple element to a node that drives the interaction\n *\n * @param rippleGetter A function that returns an `md-ripple` element\n * @param simulateKeyboardClick For elements that do not issue a click on\n * keyboard interaction, pass `true` to enable press animations on Enter or\n * Spacebar\n */\nexport const ripple = directive(RippleDirective);\n"]}
|
|
@@ -3,27 +3,28 @@
|
|
|
3
3
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
//
|
|
5
5
|
|
|
6
|
+
// go/keep-sorted start
|
|
6
7
|
@use 'sass:map';
|
|
8
|
+
// go/keep-sorted end
|
|
9
|
+
// go/keep-sorted start
|
|
7
10
|
@use '../../tokens';
|
|
11
|
+
// go/keep-sorted end
|
|
8
12
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
);
|
|
15
|
-
$default-color: if($exclude-hardcoded-values, null, black);
|
|
16
|
-
// add missing tokens
|
|
17
|
-
$values: map.merge(
|
|
18
|
-
$state-values,
|
|
19
|
-
(
|
|
20
|
-
state-layer-shape: $default-shape,
|
|
21
|
-
focus-state-layer-color: $default-color,
|
|
22
|
-
hover-state-layer-color: $default-color,
|
|
23
|
-
pressed-state-layer-color: $default-color,
|
|
24
|
-
dragged-state-layer-color: $default-color,
|
|
25
|
-
)
|
|
26
|
-
);
|
|
13
|
+
$_default-deps: (
|
|
14
|
+
md-sys-color: tokens.md-sys-color-values-light(),
|
|
15
|
+
md-sys-shape: tokens.md-sys-shape-values(),
|
|
16
|
+
md-sys-state: tokens.md-sys-state-values(),
|
|
17
|
+
);
|
|
27
18
|
|
|
28
|
-
|
|
19
|
+
@function values($deps: $_default-deps) {
|
|
20
|
+
@return (
|
|
21
|
+
'focus-color': map.get($deps, 'md-sys-color', 'on-surface'),
|
|
22
|
+
'focus-opacity': map.get($deps, 'md-sys-state', 'focus-state-layer-opacity'),
|
|
23
|
+
'hover-color': map.get($deps, 'md-sys-color', 'on-surface'),
|
|
24
|
+
'hover-opacity': map.get($deps, 'md-sys-state', 'hover-state-layer-opacity'),
|
|
25
|
+
'pressed-color': map.get($deps, 'md-sys-color', 'on-surface'),
|
|
26
|
+
'pressed-opacity':
|
|
27
|
+
map.get($deps, 'md-sys-state', 'pressed-state-layer-opacity'),
|
|
28
|
+
'shape': map.get($deps, 'md-sys-shape', 'corner-none')
|
|
29
|
+
);
|
|
29
30
|
}
|