@material/web 1.0.0-pre.13 → 1.0.0-pre.14
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 +5 -5
- package/all.d.ts +97 -0
- package/all.js +106 -0
- package/all.js.map +1 -0
- package/button/_elevated-button.scss +1 -1
- package/button/_filled-button.scss +1 -1
- package/button/_outlined-button.scss +1 -1
- package/button/_text-button.scss +1 -1
- package/button/_tonal-button.scss +1 -1
- package/button/elevated-button.d.ts +1 -1
- package/button/elevated-button.js +4 -4
- package/button/elevated-button.js.map +1 -1
- package/button/filled-button.d.ts +1 -1
- package/button/filled-button.js +4 -4
- package/button/filled-button.js.map +1 -1
- package/button/harness.d.ts +1 -1
- package/button/harness.js +1 -1
- package/button/harness.js.map +1 -1
- package/button/{lib → internal}/_elevation.scss +1 -4
- package/button/{lib → internal}/_icon.scss +5 -8
- package/button/{lib → internal}/_outlined-button.scss +6 -9
- package/button/{lib → internal}/_shared.scss +15 -23
- package/button/{lib → internal}/_touch-target.scss +1 -4
- package/button/{lib → internal}/button.d.ts +3 -3
- package/button/{lib → internal}/button.js +12 -12
- package/button/internal/button.js.map +1 -0
- package/button/{lib → internal}/elevated-button.d.ts +0 -5
- package/button/{lib → internal}/elevated-button.js +0 -6
- package/button/internal/elevated-button.js.map +1 -0
- package/button/{lib → internal}/filled-button.d.ts +0 -5
- package/button/{lib → internal}/filled-button.js +0 -6
- package/button/internal/filled-button.js.map +1 -0
- package/button/{lib → internal}/outlined-button.d.ts +0 -5
- package/button/{lib → internal}/outlined-button.js +1 -7
- package/button/internal/outlined-button.js.map +1 -0
- package/button/{lib → internal}/outlined-styles.css.js +1 -1
- package/button/{lib → internal}/outlined-styles.css.js.map +1 -1
- package/button/internal/shared-elevation-styles.css.js +9 -0
- package/button/internal/shared-elevation-styles.css.js.map +1 -0
- package/button/internal/shared-styles.css.js +9 -0
- package/button/internal/shared-styles.css.js.map +1 -0
- package/button/{lib → internal}/text-button.d.ts +0 -5
- package/button/{lib → internal}/text-button.js +0 -6
- package/button/internal/text-button.js.map +1 -0
- package/button/{lib → internal}/tonal-button.d.ts +0 -5
- package/button/{lib → internal}/tonal-button.js +0 -6
- package/button/internal/tonal-button.js.map +1 -0
- package/button/outlined-button.d.ts +1 -1
- package/button/outlined-button.js +3 -3
- package/button/outlined-button.js.map +1 -1
- package/button/text-button.d.ts +1 -1
- package/button/text-button.js +3 -3
- package/button/text-button.js.map +1 -1
- package/button/tonal-button.d.ts +1 -1
- package/button/tonal-button.js +4 -4
- package/button/tonal-button.js.map +1 -1
- package/checkbox/_checkbox.scss +1 -1
- package/checkbox/checkbox.d.ts +1 -1
- package/checkbox/checkbox.js +3 -4
- package/checkbox/checkbox.js.map +1 -1
- package/checkbox/harness.d.ts +1 -1
- package/checkbox/harness.js.map +1 -1
- package/checkbox/{lib → internal}/_checkbox.scss +75 -55
- package/checkbox/internal/checkbox-styles.css.js +9 -0
- package/checkbox/internal/checkbox-styles.css.js.map +1 -0
- package/checkbox/{lib → internal}/checkbox.d.ts +1 -1
- package/checkbox/{lib → internal}/checkbox.js +15 -12
- package/checkbox/internal/checkbox.js.map +1 -0
- package/chips/_assist-chip.scss +1 -1
- package/chips/_filter-chip.scss +1 -1
- package/chips/_input-chip.scss +1 -1
- package/chips/_suggestion-chip.scss +1 -1
- package/chips/assist-chip.d.ts +1 -1
- package/chips/assist-chip.js +5 -5
- package/chips/assist-chip.js.map +1 -1
- package/chips/chip-set.d.ts +1 -1
- package/chips/chip-set.js +2 -2
- package/chips/chip-set.js.map +1 -1
- package/chips/filter-chip.d.ts +1 -1
- package/chips/filter-chip.js +7 -7
- package/chips/filter-chip.js.map +1 -1
- package/chips/harness.d.ts +1 -1
- package/chips/harness.js.map +1 -1
- package/chips/input-chip.d.ts +1 -1
- package/chips/input-chip.js +6 -6
- package/chips/input-chip.js.map +1 -1
- package/chips/{lib → internal}/_shared.scss +2 -0
- package/chips/{lib → internal}/_trailing-icon.scss +2 -0
- package/chips/{lib → internal}/chip.d.ts +1 -1
- package/chips/{lib → internal}/chip.js +2 -2
- package/chips/internal/chip.js.map +1 -0
- package/chips/internal/shared-styles.css.js +9 -0
- package/chips/internal/shared-styles.css.js.map +1 -0
- package/chips/internal/trailing-icon-styles.css.js +9 -0
- package/chips/internal/trailing-icon-styles.css.js.map +1 -0
- package/chips/{lib → internal}/trailing-icons.d.ts +1 -1
- package/chips/{lib → internal}/trailing-icons.js +2 -2
- package/chips/internal/trailing-icons.js.map +1 -0
- package/chips/suggestion-chip.d.ts +1 -1
- package/chips/suggestion-chip.js +5 -5
- package/chips/suggestion-chip.js.map +1 -1
- package/common.d.ts +61 -0
- package/common.js +70 -0
- package/common.js.map +1 -0
- package/dialog/_dialog.scss +1 -1
- package/dialog/dialog.d.ts +1 -1
- package/dialog/dialog.js +2 -2
- package/dialog/dialog.js.map +1 -1
- package/dialog/harness.d.ts +1 -1
- package/dialog/harness.js.map +1 -1
- package/dialog/{lib → internal}/_tokens.scss +1 -3
- package/dialog/{lib → internal}/dialog.js +19 -18
- package/dialog/internal/dialog.js.map +1 -0
- package/divider/_divider.scss +1 -1
- package/divider/divider.d.ts +1 -1
- package/divider/divider.js +2 -2
- package/divider/divider.js.map +1 -1
- package/elevation/_elevation.scss +1 -1
- package/elevation/elevation.d.ts +1 -1
- package/elevation/elevation.js +2 -2
- package/elevation/elevation.js.map +1 -1
- package/fab/_fab.scss +2 -2
- package/fab/branded-fab.d.ts +3 -3
- package/fab/branded-fab.js +4 -4
- package/fab/branded-fab.js.map +1 -1
- package/fab/fab.d.ts +3 -3
- package/fab/fab.js +4 -4
- package/fab/fab.js.map +1 -1
- package/fab/harness.d.ts +1 -1
- package/fab/harness.js.map +1 -1
- package/fab/{lib → internal}/_fab.scss +3 -0
- package/fab/{lib → internal}/_shared.scss +5 -0
- package/fab/{lib → internal}/fab-styles.css.js +1 -1
- package/fab/{lib → internal}/fab-styles.css.js.map +1 -1
- package/fab/{lib → internal}/fab.d.ts +2 -2
- package/fab/internal/fab.js.map +1 -0
- package/fab/internal/forced-colors-styles.css.js +9 -0
- package/fab/{lib → internal}/forced-colors-styles.css.js.map +1 -1
- package/fab/{lib → internal}/forced-colors-styles.scss +9 -6
- package/fab/internal/shared-styles.css.js +9 -0
- package/fab/internal/shared-styles.css.js.map +1 -0
- package/fab/{lib → internal}/shared.d.ts +1 -1
- package/fab/{lib → internal}/shared.js +4 -4
- package/fab/internal/shared.js.map +1 -0
- package/field/_filled-field.scss +1 -1
- package/field/_outlined-field.scss +1 -1
- package/field/filled-field.d.ts +1 -1
- package/field/filled-field.js +3 -3
- package/field/filled-field.js.map +1 -1
- package/field/harness.d.ts +1 -1
- package/field/harness.js.map +1 -1
- package/field/{lib → internal}/_content.scss +20 -4
- package/field/{lib → internal}/_filled-field.scss +24 -10
- package/field/{lib → internal}/_label.scss +26 -9
- package/field/{lib → internal}/_outlined-field.scss +18 -8
- package/field/{lib → internal}/_shared.scss +9 -4
- package/field/{lib → internal}/_supporting-text.scss +5 -4
- package/field/{lib → internal}/field.d.ts +1 -2
- package/field/{lib → internal}/field.js +6 -9
- package/field/internal/field.js.map +1 -0
- package/field/internal/filled-styles.css.js +9 -0
- package/field/internal/filled-styles.css.js.map +1 -0
- package/field/internal/outlined-styles.css.js +9 -0
- package/field/internal/outlined-styles.css.js.map +1 -0
- package/field/internal/shared-styles.css.js +9 -0
- package/field/internal/shared-styles.css.js.map +1 -0
- package/field/outlined-field.d.ts +1 -1
- package/field/outlined-field.js +3 -3
- package/field/outlined-field.js.map +1 -1
- package/focus/_focus-ring.scss +1 -1
- package/focus/{lib → internal}/_focus-ring.scss +32 -26
- package/focus/internal/focus-ring-styles.css.js +9 -0
- package/focus/internal/focus-ring-styles.css.js.map +1 -0
- package/focus/{focus-ring.d.ts → md-focus-ring.d.ts} +1 -1
- package/focus/{focus-ring.js → md-focus-ring.js} +3 -3
- package/focus/md-focus-ring.js.map +1 -0
- package/icon/_icon.scss +1 -1
- package/icon/icon.d.ts +1 -1
- package/icon/icon.js +2 -2
- package/icon/icon.js.map +1 -1
- package/icon/{lib → internal}/_icon.scss +7 -8
- package/icon/{lib → internal}/icon-styles.css.js +1 -1
- package/icon/{lib → internal}/icon-styles.css.js.map +1 -1
- package/icon/{lib → internal}/icon.js +1 -1
- package/icon/internal/icon.js.map +1 -0
- package/iconbutton/_filled-icon-button.scss +1 -1
- package/iconbutton/_filled-tonal-icon-button.scss +1 -1
- package/iconbutton/_outlined-icon-button.scss +1 -1
- package/iconbutton/_standard-icon-button.scss +1 -1
- package/iconbutton/filled-icon-button.d.ts +1 -1
- package/iconbutton/filled-icon-button.js +3 -3
- package/iconbutton/filled-icon-button.js.map +1 -1
- package/iconbutton/filled-tonal-icon-button.d.ts +1 -1
- package/iconbutton/filled-tonal-icon-button.js +3 -3
- package/iconbutton/filled-tonal-icon-button.js.map +1 -1
- package/iconbutton/harness.d.ts +1 -1
- package/iconbutton/harness.js.map +1 -1
- package/iconbutton/{lib → internal}/_shared.scss +2 -0
- package/iconbutton/{lib → internal}/_standard-icon-button.scss +6 -1
- package/iconbutton/{lib → internal}/icon-button.d.ts +1 -1
- package/iconbutton/{lib → internal}/icon-button.js +2 -2
- package/iconbutton/internal/icon-button.js.map +1 -0
- package/iconbutton/internal/shared-styles.css.js +9 -0
- package/iconbutton/internal/shared-styles.css.js.map +1 -0
- package/iconbutton/{lib → internal}/standard-styles.css.js +1 -1
- package/iconbutton/{lib → internal}/standard-styles.css.js.map +1 -1
- package/iconbutton/outlined-icon-button.d.ts +1 -1
- package/iconbutton/outlined-icon-button.js +3 -3
- package/iconbutton/outlined-icon-button.js.map +1 -1
- package/iconbutton/standard-icon-button.d.ts +1 -1
- package/iconbutton/standard-icon-button.js +3 -3
- package/iconbutton/standard-icon-button.js.map +1 -1
- package/labs/badge/_badge.scss +1 -1
- package/labs/badge/badge.d.ts +1 -1
- package/labs/badge/badge.js +2 -2
- package/labs/badge/badge.js.map +1 -1
- package/labs/navigationbar/_navigation-bar.scss +1 -1
- package/labs/navigationbar/harness.d.ts +1 -1
- package/labs/navigationbar/harness.js.map +1 -1
- package/labs/navigationbar/{lib → internal}/constants.d.ts +1 -1
- package/labs/navigationbar/internal/constants.js.map +1 -0
- package/labs/navigationbar/{lib → internal}/navigation-bar.d.ts +1 -1
- package/labs/navigationbar/{lib → internal}/navigation-bar.js.map +1 -1
- package/labs/navigationbar/{lib → internal}/state.d.ts +1 -1
- package/labs/navigationbar/internal/state.js.map +1 -0
- package/labs/navigationbar/navigation-bar.d.ts +1 -1
- package/labs/navigationbar/navigation-bar.js +2 -2
- package/labs/navigationbar/navigation-bar.js.map +1 -1
- package/labs/navigationdrawer/_navigation-drawer-modal.scss +1 -1
- package/labs/navigationdrawer/_navigation-drawer.scss +1 -1
- package/labs/navigationdrawer/{lib → internal}/navigation-drawer-modal.js +2 -2
- package/labs/navigationdrawer/{lib → internal}/navigation-drawer-modal.js.map +1 -1
- package/labs/navigationdrawer/navigation-drawer-modal.d.ts +1 -1
- package/labs/navigationdrawer/navigation-drawer-modal.js +3 -3
- package/labs/navigationdrawer/navigation-drawer-modal.js.map +1 -1
- package/labs/navigationdrawer/navigation-drawer.d.ts +1 -1
- package/labs/navigationdrawer/navigation-drawer.js +3 -3
- package/labs/navigationdrawer/navigation-drawer.js.map +1 -1
- package/labs/navigationtab/_navigation-tab.scss +1 -1
- package/labs/navigationtab/harness.d.ts +1 -1
- package/labs/navigationtab/harness.js.map +1 -1
- package/labs/navigationtab/{lib → internal}/_navigation-tab.scss +5 -3
- package/labs/navigationtab/{lib → internal}/navigation-tab-styles.css.js +1 -1
- package/labs/navigationtab/{lib → internal}/navigation-tab-styles.css.js.map +1 -1
- package/labs/navigationtab/{lib → internal}/navigation-tab.d.ts +1 -1
- package/labs/navigationtab/{lib → internal}/navigation-tab.js +2 -2
- package/labs/navigationtab/internal/navigation-tab.js.map +1 -0
- package/labs/navigationtab/navigation-tab.d.ts +1 -1
- package/labs/navigationtab/navigation-tab.js +2 -2
- package/labs/navigationtab/navigation-tab.js.map +1 -1
- package/labs/segmentedbutton/{lib → internal}/segmented-button.d.ts +1 -1
- package/labs/segmentedbutton/{lib → internal}/segmented-button.js +2 -2
- package/labs/segmentedbutton/internal/segmented-button.js.map +1 -0
- package/labs/segmentedbutton/outlined-segmented-button.d.ts +1 -1
- package/labs/segmentedbutton/outlined-segmented-button.js +3 -3
- package/labs/segmentedbutton/outlined-segmented-button.js.map +1 -1
- package/labs/segmentedbuttonset/{lib → internal}/segmented-button-set.d.ts +1 -1
- package/labs/segmentedbuttonset/{lib → internal}/segmented-button-set.js +2 -2
- package/labs/segmentedbuttonset/internal/segmented-button-set.js.map +1 -0
- package/labs/segmentedbuttonset/outlined-segmented-button-set.d.ts +1 -1
- package/labs/segmentedbuttonset/outlined-segmented-button-set.js +3 -3
- package/labs/segmentedbuttonset/outlined-segmented-button-set.js.map +1 -1
- package/list/_list-item.scss +1 -1
- package/list/_list.scss +1 -1
- package/list/harness.d.ts +3 -3
- package/list/harness.js +2 -2
- package/list/harness.js.map +1 -1
- package/list/{lib → internal}/list.js +2 -2
- package/list/{lib → internal}/list.js.map +1 -1
- package/list/{lib → internal}/listitem/_list-item.scss +11 -7
- package/list/internal/listitem/list-item-styles.css.js +9 -0
- package/list/{lib → internal}/listitem/list-item-styles.css.js.map +1 -1
- package/list/{lib → internal}/listitem/list-item.d.ts +1 -1
- package/list/{lib → internal}/listitem/list-item.js +2 -2
- package/list/internal/listitem/list-item.js.map +1 -0
- package/list/list-item-link.d.ts +1 -1
- package/list/list-item-link.js +3 -3
- package/list/list-item-link.js.map +1 -1
- package/list/list-item.d.ts +2 -2
- package/list/list-item.js +3 -3
- package/list/list-item.js.map +1 -1
- package/list/list.d.ts +1 -1
- package/list/list.js +2 -2
- package/list/list.js.map +1 -1
- package/menu/_menu-item.scss +1 -1
- package/menu/_menu.scss +1 -1
- package/menu/harness.d.ts +3 -3
- package/menu/harness.js +2 -2
- package/menu/harness.js.map +1 -1
- package/menu/{lib → internal}/_menu.scss +4 -2
- package/menu/internal/menu-styles.css.js +9 -0
- package/menu/{lib → internal}/menu-styles.css.js.map +1 -1
- package/menu/{lib → internal}/menu.d.ts +1 -1
- package/menu/{lib → internal}/menu.js +24 -24
- package/menu/internal/menu.js.map +1 -0
- package/menu/{lib → internal}/menuitem/harness.d.ts +1 -1
- package/menu/{lib → internal}/menuitem/harness.js +1 -1
- package/menu/{lib → internal}/menuitem/harness.js.map +1 -1
- package/menu/{lib → internal}/menuitem/menu-item.d.ts +3 -3
- package/menu/{lib → internal}/menuitem/menu-item.js +5 -5
- package/menu/internal/menuitem/menu-item.js.map +1 -0
- package/menu/{lib → internal}/menuitemlink/menu-item-link.d.ts +2 -2
- package/menu/{lib → internal}/menuitemlink/menu-item-link.js +5 -5
- package/menu/internal/menuitemlink/menu-item-link.js.map +1 -0
- package/menu/{lib → internal}/shared.d.ts +1 -1
- package/menu/internal/shared.js.map +1 -0
- package/menu/{lib → internal}/submenuitem/harness.d.ts +1 -1
- package/menu/{lib → internal}/submenuitem/harness.js +1 -1
- package/menu/{lib → internal}/submenuitem/harness.js.map +1 -1
- package/menu/{lib → internal}/submenuitem/sub-menu-item.d.ts +1 -1
- package/menu/{lib → internal}/submenuitem/sub-menu-item.js +16 -16
- package/menu/internal/submenuitem/sub-menu-item.js.map +1 -0
- package/menu/{lib → internal}/typeaheadController.d.ts +2 -2
- package/menu/{lib → internal}/typeaheadController.js +15 -15
- package/menu/internal/typeaheadController.js.map +1 -0
- package/menu/menu-item-link.d.ts +3 -3
- package/menu/menu-item-link.js +6 -6
- package/menu/menu-item-link.js.map +1 -1
- package/menu/menu-item.d.ts +3 -3
- package/menu/menu-item.js +6 -6
- package/menu/menu-item.js.map +1 -1
- package/menu/menu.d.ts +4 -4
- package/menu/menu.js +4 -4
- package/menu/menu.js.map +1 -1
- package/menu/sub-menu-item.d.ts +3 -3
- package/menu/sub-menu-item.js +6 -6
- package/menu/sub-menu-item.js.map +1 -1
- package/package.json +3 -2
- package/{circularprogress → progress}/_circular-progress.scss +1 -1
- package/{linearprogress → progress}/_linear-progress.scss +1 -1
- package/{circularprogress → progress}/circular-progress.d.ts +1 -1
- package/{circularprogress → progress}/circular-progress.js +2 -2
- package/progress/circular-progress.js.map +1 -0
- package/{circularprogress → progress}/harness.d.ts +8 -1
- package/{linearprogress → progress}/harness.js +9 -0
- package/progress/harness.js.map +1 -0
- package/{circularprogress/lib → progress/internal}/_circular-progress.scss +3 -6
- package/{linearprogress/lib → progress/internal}/_linear-progress.scss +7 -14
- package/progress/internal/circular-progress-styles.css.js +9 -0
- package/progress/internal/circular-progress-styles.css.js.map +1 -0
- package/progress/internal/circular-progress.d.ts +14 -0
- package/progress/internal/circular-progress.js +49 -0
- package/progress/internal/circular-progress.js.map +1 -0
- package/progress/internal/linear-progress-styles.css.js +9 -0
- package/progress/internal/linear-progress-styles.css.js.map +1 -0
- package/progress/internal/linear-progress.d.ts +27 -0
- package/{linearprogress/lib → progress/internal}/linear-progress.js +22 -58
- package/progress/internal/linear-progress.js.map +1 -0
- package/progress/internal/progress.d.ts +34 -0
- package/progress/internal/progress.js +72 -0
- package/progress/internal/progress.js.map +1 -0
- package/{linearprogress → progress}/linear-progress.d.ts +1 -1
- package/{linearprogress → progress}/linear-progress.js +2 -2
- package/progress/linear-progress.js.map +1 -0
- package/radio/_radio.scss +1 -1
- package/radio/harness.d.ts +1 -1
- package/radio/harness.js.map +1 -1
- package/radio/{lib → internal}/_radio.scss +8 -6
- package/radio/{lib → internal}/radio-styles.css.js +1 -1
- package/radio/{lib → internal}/radio-styles.css.js.map +1 -1
- package/radio/{lib → internal}/radio.d.ts +2 -1
- package/radio/{lib → internal}/radio.js +8 -4
- package/radio/internal/radio.js.map +1 -0
- package/radio/{lib → internal}/single-selection-controller.js +5 -1
- package/radio/internal/single-selection-controller.js.map +1 -0
- package/radio/radio.d.ts +1 -1
- package/radio/radio.js +3 -3
- package/radio/radio.js.map +1 -1
- package/ripple/_ripple.scss +1 -1
- package/ripple/{lib → internal}/ripple.js +8 -0
- package/ripple/internal/ripple.js.map +1 -0
- package/ripple/ripple.d.ts +1 -1
- package/ripple/ripple.js +2 -2
- package/ripple/ripple.js.map +1 -1
- package/select/_filled-select.scss +1 -1
- package/select/_outlined-select.scss +1 -1
- package/select/filled-select.d.ts +1 -1
- package/select/filled-select.js +4 -4
- package/select/filled-select.js.map +1 -1
- package/select/harness.d.ts +3 -3
- package/select/harness.js +1 -1
- package/select/harness.js.map +1 -1
- package/select/{lib → internal}/_shared.scss +1 -5
- package/select/{lib → internal}/select.js +24 -22
- package/select/internal/select.js.map +1 -0
- package/select/{lib → internal}/selectoption/harness.d.ts +1 -1
- package/select/{lib → internal}/selectoption/harness.js +1 -1
- package/select/{lib → internal}/selectoption/harness.js.map +1 -1
- package/select/{lib → internal}/selectoption/select-option.d.ts +1 -1
- package/select/{lib → internal}/selectoption/select-option.js +1 -1
- package/select/internal/selectoption/select-option.js.map +1 -0
- package/select/{lib → internal}/shared-styles.css.js +1 -1
- package/select/{lib → internal}/shared-styles.css.js.map +1 -1
- package/select/{lib → internal}/shared.d.ts +1 -1
- package/select/internal/shared.js.map +1 -0
- package/select/outlined-select.d.ts +1 -1
- package/select/outlined-select.js +4 -4
- package/select/outlined-select.js.map +1 -1
- package/select/select-option.d.ts +1 -1
- package/select/select-option.js +5 -5
- package/select/select-option.js.map +1 -1
- package/slider/_slider.scss +1 -1
- package/slider/harness.d.ts +1 -1
- package/slider/harness.js.map +1 -1
- package/slider/{lib → internal}/_slider.scss +3 -1
- package/slider/internal/slider-styles.css.js +9 -0
- package/slider/internal/slider-styles.css.js.map +1 -0
- package/slider/{lib → internal}/slider.d.ts +1 -1
- package/slider/{lib → internal}/slider.js +30 -30
- package/slider/internal/slider.js.map +1 -0
- package/slider/slider.d.ts +1 -1
- package/slider/slider.js +3 -3
- package/slider/slider.js.map +1 -1
- package/switch/_switch.scss +1 -1
- package/switch/harness.d.ts +1 -1
- package/switch/harness.js.map +1 -1
- package/switch/{lib → internal}/_switch.scss +2 -0
- package/switch/{lib → internal}/switch-styles.css.js +1 -1
- package/switch/{lib → internal}/switch-styles.css.js.map +1 -1
- package/switch/{lib → internal}/switch.d.ts +1 -1
- package/switch/{lib → internal}/switch.js +2 -2
- package/switch/internal/switch.js.map +1 -0
- package/switch/switch.d.ts +1 -1
- package/switch/switch.js +3 -3
- package/switch/switch.js.map +1 -1
- package/tabs/_tab.scss +1 -1
- package/tabs/harness.d.ts +2 -2
- package/tabs/harness.js.map +1 -1
- package/tabs/{lib → internal}/_tab.scss +2 -0
- package/tabs/internal/tab-styles.css.js +9 -0
- package/tabs/internal/tab-styles.css.js.map +1 -0
- package/tabs/{lib → internal}/tab.d.ts +3 -3
- package/tabs/{lib → internal}/tab.js +2 -2
- package/tabs/internal/tab.js.map +1 -0
- package/tabs/{lib → internal}/tabs.d.ts +2 -2
- package/tabs/{lib → internal}/tabs.js +1 -1
- package/tabs/internal/tabs.js.map +1 -0
- package/tabs/tab.d.ts +2 -2
- package/tabs/tab.js +2 -2
- package/tabs/tab.js.map +1 -1
- package/tabs/tabs.d.ts +2 -2
- package/tabs/tabs.js +2 -2
- package/tabs/tabs.js.map +1 -1
- package/textfield/_filled-text-field.scss +1 -1
- package/textfield/_outlined-text-field.scss +1 -1
- package/textfield/filled-text-field.d.ts +2 -2
- package/textfield/filled-text-field.js +4 -4
- package/textfield/filled-text-field.js.map +1 -1
- package/textfield/harness.d.ts +5 -5
- package/textfield/harness.js +1 -1
- package/textfield/harness.js.map +1 -1
- package/textfield/{lib → internal}/_filled-text-field.scss +23 -34
- package/textfield/{lib → internal}/_input.scss +25 -14
- package/textfield/{lib → internal}/_outlined-text-field.scss +16 -10
- package/textfield/{lib → internal}/_shared.scss +12 -2
- package/textfield/internal/filled-styles.css.js +9 -0
- package/textfield/internal/filled-styles.css.js.map +1 -0
- package/textfield/internal/outlined-styles.css.js +9 -0
- package/textfield/internal/outlined-styles.css.js.map +1 -0
- package/textfield/internal/shared-styles.css.js +9 -0
- package/textfield/internal/shared-styles.css.js.map +1 -0
- package/textfield/{lib → internal}/text-field.d.ts +9 -3
- package/textfield/{lib → internal}/text-field.js +121 -57
- package/textfield/internal/text-field.js.map +1 -0
- package/textfield/outlined-text-field.d.ts +2 -2
- package/textfield/outlined-text-field.js +4 -4
- package/textfield/outlined-text-field.js.map +1 -1
- package/tokens/_md-comp-checkbox.scss +46 -22
- package/tokens/_md-comp-filled-field.scss +18 -11
- package/tokens/_md-comp-filled-text-field.scss +2 -1
- package/tokens/_md-comp-list-item.scss +1 -1
- package/tokens/_md-comp-outlined-field.scss +14 -8
- package/tokens/_md-comp-outlined-text-field.scss +2 -1
- package/button/lib/button.js.map +0 -1
- package/button/lib/elevated-button.js.map +0 -1
- package/button/lib/filled-button.js.map +0 -1
- package/button/lib/outlined-button.js.map +0 -1
- package/button/lib/shared-elevation-styles.css.js +0 -9
- package/button/lib/shared-elevation-styles.css.js.map +0 -1
- package/button/lib/shared-styles.css.js +0 -9
- package/button/lib/shared-styles.css.js.map +0 -1
- package/button/lib/text-button.js.map +0 -1
- package/button/lib/tonal-button.js.map +0 -1
- package/checkbox/lib/checkbox-styles.css.js +0 -9
- package/checkbox/lib/checkbox-styles.css.js.map +0 -1
- package/checkbox/lib/checkbox.js.map +0 -1
- package/checkbox/lib/forced-colors-styles.css.js +0 -9
- package/checkbox/lib/forced-colors-styles.css.js.map +0 -1
- package/checkbox/lib/forced-colors-styles.scss +0 -49
- package/chips/lib/chip.js.map +0 -1
- package/chips/lib/shared-styles.css.js +0 -9
- package/chips/lib/shared-styles.css.js.map +0 -1
- package/chips/lib/trailing-icon-styles.css.js +0 -9
- package/chips/lib/trailing-icon-styles.css.js.map +0 -1
- package/chips/lib/trailing-icons.js.map +0 -1
- package/circularprogress/circular-progress.js.map +0 -1
- package/circularprogress/harness.js +0 -16
- package/circularprogress/harness.js.map +0 -1
- package/circularprogress/lib/circular-progress-styles.css.js +0 -9
- package/circularprogress/lib/circular-progress-styles.css.js.map +0 -1
- package/circularprogress/lib/circular-progress.d.ts +0 -27
- package/circularprogress/lib/circular-progress.js +0 -94
- package/circularprogress/lib/circular-progress.js.map +0 -1
- package/dialog/lib/dialog.js.map +0 -1
- package/fab/lib/fab.js.map +0 -1
- package/fab/lib/forced-colors-styles.css.js +0 -9
- package/fab/lib/shared-styles.css.js +0 -9
- package/fab/lib/shared-styles.css.js.map +0 -1
- package/fab/lib/shared.js.map +0 -1
- package/field/lib/field.js.map +0 -1
- package/field/lib/filled-styles.css.js +0 -9
- package/field/lib/filled-styles.css.js.map +0 -1
- package/field/lib/outlined-styles.css.js +0 -9
- package/field/lib/outlined-styles.css.js.map +0 -1
- package/field/lib/shared-styles.css.js +0 -9
- package/field/lib/shared-styles.css.js.map +0 -1
- package/focus/focus-ring.js.map +0 -1
- package/focus/lib/focus-ring-styles.css.js +0 -9
- package/focus/lib/focus-ring-styles.css.js.map +0 -1
- package/icon/lib/icon.js.map +0 -1
- package/iconbutton/lib/icon-button.js.map +0 -1
- package/iconbutton/lib/shared-styles.css.js +0 -9
- package/iconbutton/lib/shared-styles.css.js.map +0 -1
- package/labs/navigationbar/lib/constants.js.map +0 -1
- package/labs/navigationbar/lib/state.js.map +0 -1
- package/labs/navigationtab/lib/navigation-tab.js.map +0 -1
- package/labs/segmentedbutton/lib/segmented-button.js.map +0 -1
- package/labs/segmentedbuttonset/lib/segmented-button-set.js.map +0 -1
- package/linearprogress/harness.d.ts +0 -13
- package/linearprogress/harness.js.map +0 -1
- package/linearprogress/lib/linear-progress-styles.css.js +0 -9
- package/linearprogress/lib/linear-progress-styles.css.js.map +0 -1
- package/linearprogress/lib/linear-progress.d.ts +0 -35
- package/linearprogress/lib/linear-progress.js.map +0 -1
- package/linearprogress/linear-progress.js.map +0 -1
- package/list/lib/listitem/list-item-styles.css.js +0 -9
- package/list/lib/listitem/list-item.js.map +0 -1
- package/menu/lib/menu-styles.css.js +0 -9
- package/menu/lib/menu.js.map +0 -1
- package/menu/lib/menuitem/menu-item.js.map +0 -1
- package/menu/lib/menuitemlink/menu-item-link.js.map +0 -1
- package/menu/lib/shared.js.map +0 -1
- package/menu/lib/submenuitem/sub-menu-item.js.map +0 -1
- package/menu/lib/typeaheadController.js.map +0 -1
- package/radio/lib/radio.js.map +0 -1
- package/radio/lib/single-selection-controller.js.map +0 -1
- package/ripple/lib/ripple.js.map +0 -1
- package/select/lib/select.js.map +0 -1
- package/select/lib/selectoption/select-option.js.map +0 -1
- package/select/lib/shared.js.map +0 -1
- package/slider/lib/slider-styles.css.js +0 -9
- package/slider/lib/slider-styles.css.js.map +0 -1
- package/slider/lib/slider.js.map +0 -1
- package/switch/lib/forced-colors-styles.css.d.ts +0 -1
- package/switch/lib/switch.js.map +0 -1
- package/tabs/lib/tab-styles.css.js +0 -9
- package/tabs/lib/tab-styles.css.js.map +0 -1
- package/tabs/lib/tab.js.map +0 -1
- package/tabs/lib/tabs.js.map +0 -1
- package/textfield/lib/filled-styles.css.js +0 -9
- package/textfield/lib/filled-styles.css.js.map +0 -1
- package/textfield/lib/outlined-styles.css.js +0 -9
- package/textfield/lib/outlined-styles.css.js.map +0 -1
- package/textfield/lib/shared-styles.css.js +0 -9
- package/textfield/lib/shared-styles.css.js.map +0 -1
- package/textfield/lib/text-field.js.map +0 -1
- /package/button/{lib → internal}/_elevated-button.scss +0 -0
- /package/button/{lib → internal}/_filled-button.scss +0 -0
- /package/button/{lib → internal}/_text-button.scss +0 -0
- /package/button/{lib → internal}/_tonal-button.scss +0 -0
- /package/button/{lib → internal}/elevated-styles.css.d.ts +0 -0
- /package/button/{lib → internal}/elevated-styles.css.js +0 -0
- /package/button/{lib → internal}/elevated-styles.css.js.map +0 -0
- /package/button/{lib → internal}/elevated-styles.scss +0 -0
- /package/button/{lib → internal}/filled-styles.css.d.ts +0 -0
- /package/button/{lib → internal}/filled-styles.css.js +0 -0
- /package/button/{lib → internal}/filled-styles.css.js.map +0 -0
- /package/button/{lib → internal}/filled-styles.scss +0 -0
- /package/button/{lib → internal}/outlined-styles.css.d.ts +0 -0
- /package/button/{lib → internal}/outlined-styles.scss +0 -0
- /package/button/{lib → internal}/shared-elevation-styles.css.d.ts +0 -0
- /package/button/{lib → internal}/shared-elevation-styles.scss +0 -0
- /package/button/{lib → internal}/shared-styles.css.d.ts +0 -0
- /package/button/{lib → internal}/shared-styles.scss +0 -0
- /package/button/{lib → internal}/text-styles.css.d.ts +0 -0
- /package/button/{lib → internal}/text-styles.css.js +0 -0
- /package/button/{lib → internal}/text-styles.css.js.map +0 -0
- /package/button/{lib → internal}/text-styles.scss +0 -0
- /package/button/{lib → internal}/tonal-styles.css.d.ts +0 -0
- /package/button/{lib → internal}/tonal-styles.css.js +0 -0
- /package/button/{lib → internal}/tonal-styles.css.js.map +0 -0
- /package/button/{lib → internal}/tonal-styles.scss +0 -0
- /package/checkbox/{lib → internal}/checkbox-styles.css.d.ts +0 -0
- /package/checkbox/{lib → internal}/checkbox-styles.scss +0 -0
- /package/chips/{lib → internal}/_assist-chip.scss +0 -0
- /package/chips/{lib → internal}/_chip-set.scss +0 -0
- /package/chips/{lib → internal}/_elevated.scss +0 -0
- /package/chips/{lib → internal}/_filter-chip.scss +0 -0
- /package/chips/{lib → internal}/_input-chip.scss +0 -0
- /package/chips/{lib → internal}/_selectable.scss +0 -0
- /package/chips/{lib → internal}/_suggestion-chip.scss +0 -0
- /package/chips/{lib → internal}/assist-chip.d.ts +0 -0
- /package/chips/{lib → internal}/assist-chip.js +0 -0
- /package/chips/{lib → internal}/assist-chip.js.map +0 -0
- /package/chips/{lib → internal}/assist-forced-colors-styles.css.d.ts +0 -0
- /package/chips/{lib → internal}/assist-forced-colors-styles.css.js +0 -0
- /package/chips/{lib → internal}/assist-forced-colors-styles.css.js.map +0 -0
- /package/chips/{lib → internal}/assist-forced-colors-styles.scss +0 -0
- /package/chips/{lib → internal}/assist-styles.css.d.ts +0 -0
- /package/chips/{lib → internal}/assist-styles.css.js +0 -0
- /package/chips/{lib → internal}/assist-styles.css.js.map +0 -0
- /package/chips/{lib → internal}/assist-styles.scss +0 -0
- /package/chips/{lib → internal}/chip-set-styles.css.d.ts +0 -0
- /package/chips/{lib → internal}/chip-set-styles.css.js +0 -0
- /package/chips/{lib → internal}/chip-set-styles.css.js.map +0 -0
- /package/chips/{lib → internal}/chip-set-styles.scss +0 -0
- /package/chips/{lib → internal}/chip-set.d.ts +0 -0
- /package/chips/{lib → internal}/chip-set.js +0 -0
- /package/chips/{lib → internal}/chip-set.js.map +0 -0
- /package/chips/{lib → internal}/elevated-styles.css.d.ts +0 -0
- /package/chips/{lib → internal}/elevated-styles.css.js +0 -0
- /package/chips/{lib → internal}/elevated-styles.css.js.map +0 -0
- /package/chips/{lib → internal}/elevated-styles.scss +0 -0
- /package/chips/{lib → internal}/filter-chip.d.ts +0 -0
- /package/chips/{lib → internal}/filter-chip.js +0 -0
- /package/chips/{lib → internal}/filter-chip.js.map +0 -0
- /package/chips/{lib → internal}/filter-forced-colors-styles.css.d.ts +0 -0
- /package/chips/{lib → internal}/filter-forced-colors-styles.css.js +0 -0
- /package/chips/{lib → internal}/filter-forced-colors-styles.css.js.map +0 -0
- /package/chips/{lib → internal}/filter-forced-colors-styles.scss +0 -0
- /package/chips/{lib → internal}/filter-styles.css.d.ts +0 -0
- /package/chips/{lib → internal}/filter-styles.css.js +0 -0
- /package/chips/{lib → internal}/filter-styles.css.js.map +0 -0
- /package/chips/{lib → internal}/filter-styles.scss +0 -0
- /package/chips/{lib → internal}/input-chip.d.ts +0 -0
- /package/chips/{lib → internal}/input-chip.js +0 -0
- /package/chips/{lib → internal}/input-chip.js.map +0 -0
- /package/chips/{lib → internal}/input-forced-colors-styles.css.d.ts +0 -0
- /package/chips/{lib → internal}/input-forced-colors-styles.css.js +0 -0
- /package/chips/{lib → internal}/input-forced-colors-styles.css.js.map +0 -0
- /package/chips/{lib → internal}/input-forced-colors-styles.scss +0 -0
- /package/chips/{lib → internal}/input-styles.css.d.ts +0 -0
- /package/chips/{lib → internal}/input-styles.css.js +0 -0
- /package/chips/{lib → internal}/input-styles.css.js.map +0 -0
- /package/chips/{lib → internal}/input-styles.scss +0 -0
- /package/chips/{lib → internal}/multi-action-chip.d.ts +0 -0
- /package/chips/{lib → internal}/multi-action-chip.js +0 -0
- /package/chips/{lib → internal}/multi-action-chip.js.map +0 -0
- /package/chips/{lib → internal}/selectable-styles.css.d.ts +0 -0
- /package/chips/{lib → internal}/selectable-styles.css.js +0 -0
- /package/chips/{lib → internal}/selectable-styles.css.js.map +0 -0
- /package/chips/{lib → internal}/selectable-styles.scss +0 -0
- /package/chips/{lib → internal}/shared-styles.css.d.ts +0 -0
- /package/chips/{lib → internal}/shared-styles.scss +0 -0
- /package/chips/{lib → internal}/suggestion-chip.d.ts +0 -0
- /package/chips/{lib → internal}/suggestion-chip.js +0 -0
- /package/chips/{lib → internal}/suggestion-chip.js.map +0 -0
- /package/chips/{lib → internal}/suggestion-forced-colors-styles.css.d.ts +0 -0
- /package/chips/{lib → internal}/suggestion-forced-colors-styles.css.js +0 -0
- /package/chips/{lib → internal}/suggestion-forced-colors-styles.css.js.map +0 -0
- /package/chips/{lib → internal}/suggestion-forced-colors-styles.scss +0 -0
- /package/chips/{lib → internal}/suggestion-styles.css.d.ts +0 -0
- /package/chips/{lib → internal}/suggestion-styles.css.js +0 -0
- /package/chips/{lib → internal}/suggestion-styles.css.js.map +0 -0
- /package/chips/{lib → internal}/suggestion-styles.scss +0 -0
- /package/chips/{lib → internal}/trailing-icon-styles.css.d.ts +0 -0
- /package/chips/{lib → internal}/trailing-icon-styles.scss +0 -0
- /package/dialog/{lib → internal}/_dialog.scss +0 -0
- /package/dialog/{lib → internal}/dialog-styles.css.d.ts +0 -0
- /package/dialog/{lib → internal}/dialog-styles.css.js +0 -0
- /package/dialog/{lib → internal}/dialog-styles.css.js.map +0 -0
- /package/dialog/{lib → internal}/dialog-styles.scss +0 -0
- /package/dialog/{lib → internal}/dialog.d.ts +0 -0
- /package/divider/{lib → internal}/_divider.scss +0 -0
- /package/divider/{lib → internal}/divider-styles.css.d.ts +0 -0
- /package/divider/{lib → internal}/divider-styles.css.js +0 -0
- /package/divider/{lib → internal}/divider-styles.css.js.map +0 -0
- /package/divider/{lib → internal}/divider-styles.scss +0 -0
- /package/divider/{lib → internal}/divider.d.ts +0 -0
- /package/divider/{lib → internal}/divider.js +0 -0
- /package/divider/{lib → internal}/divider.js.map +0 -0
- /package/elevation/{lib → internal}/_elevation.scss +0 -0
- /package/elevation/{lib → internal}/elevation-styles.css.d.ts +0 -0
- /package/elevation/{lib → internal}/elevation-styles.css.js +0 -0
- /package/elevation/{lib → internal}/elevation-styles.css.js.map +0 -0
- /package/elevation/{lib → internal}/elevation-styles.scss +0 -0
- /package/elevation/{lib → internal}/elevation.d.ts +0 -0
- /package/elevation/{lib → internal}/elevation.js +0 -0
- /package/elevation/{lib → internal}/elevation.js.map +0 -0
- /package/fab/{lib → internal}/_fab-branded.scss +0 -0
- /package/fab/{lib → internal}/fab-branded-styles.css.d.ts +0 -0
- /package/fab/{lib → internal}/fab-branded-styles.css.js +0 -0
- /package/fab/{lib → internal}/fab-branded-styles.css.js.map +0 -0
- /package/fab/{lib → internal}/fab-branded-styles.scss +0 -0
- /package/fab/{lib → internal}/fab-styles.css.d.ts +0 -0
- /package/fab/{lib → internal}/fab-styles.scss +0 -0
- /package/fab/{lib → internal}/fab.js +0 -0
- /package/{checkbox/lib → fab/internal}/forced-colors-styles.css.d.ts +0 -0
- /package/fab/{lib → internal}/shared-styles.css.d.ts +0 -0
- /package/fab/{lib → internal}/shared-styles.scss +0 -0
- /package/field/{lib → internal}/filled-field.d.ts +0 -0
- /package/field/{lib → internal}/filled-field.js +0 -0
- /package/field/{lib → internal}/filled-field.js.map +0 -0
- /package/field/{lib → internal}/filled-styles.css.d.ts +0 -0
- /package/field/{lib → internal}/filled-styles.scss +0 -0
- /package/field/{lib → internal}/outlined-field.d.ts +0 -0
- /package/field/{lib → internal}/outlined-field.js +0 -0
- /package/field/{lib → internal}/outlined-field.js.map +0 -0
- /package/field/{lib → internal}/outlined-styles.css.d.ts +0 -0
- /package/field/{lib → internal}/outlined-styles.scss +0 -0
- /package/field/{lib → internal}/shared-styles.css.d.ts +0 -0
- /package/field/{lib → internal}/shared-styles.scss +0 -0
- /package/focus/{lib → internal}/focus-ring-styles.css.d.ts +0 -0
- /package/focus/{lib → internal}/focus-ring-styles.scss +0 -0
- /package/focus/{lib → internal}/focus-ring.d.ts +0 -0
- /package/focus/{lib → internal}/focus-ring.js +0 -0
- /package/focus/{lib → internal}/focus-ring.js.map +0 -0
- /package/icon/{lib → internal}/_md-comp-icon.scss +0 -0
- /package/icon/{lib → internal}/icon-styles.css.d.ts +0 -0
- /package/icon/{lib → internal}/icon-styles.scss +0 -0
- /package/icon/{lib → internal}/icon.d.ts +0 -0
- /package/iconbutton/{lib → internal}/_filled-icon-button.scss +0 -0
- /package/iconbutton/{lib → internal}/_filled-tonal-icon-button.scss +0 -0
- /package/iconbutton/{lib → internal}/_outlined-icon-button.scss +0 -0
- /package/iconbutton/{lib → internal}/filled-styles.css.d.ts +0 -0
- /package/iconbutton/{lib → internal}/filled-styles.css.js +0 -0
- /package/iconbutton/{lib → internal}/filled-styles.css.js.map +0 -0
- /package/iconbutton/{lib → internal}/filled-styles.scss +0 -0
- /package/iconbutton/{lib → internal}/filled-tonal-styles.css.d.ts +0 -0
- /package/iconbutton/{lib → internal}/filled-tonal-styles.css.js +0 -0
- /package/iconbutton/{lib → internal}/filled-tonal-styles.css.js.map +0 -0
- /package/iconbutton/{lib → internal}/filled-tonal-styles.scss +0 -0
- /package/iconbutton/{lib → internal}/outlined-styles.css.d.ts +0 -0
- /package/iconbutton/{lib → internal}/outlined-styles.css.js +0 -0
- /package/iconbutton/{lib → internal}/outlined-styles.css.js.map +0 -0
- /package/iconbutton/{lib → internal}/outlined-styles.scss +0 -0
- /package/iconbutton/{lib → internal}/shared-styles.css.d.ts +0 -0
- /package/iconbutton/{lib → internal}/shared-styles.scss +0 -0
- /package/iconbutton/{lib → internal}/standard-styles.css.d.ts +0 -0
- /package/iconbutton/{lib → internal}/standard-styles.scss +0 -0
- /package/labs/badge/{lib → internal}/_badge.scss +0 -0
- /package/labs/badge/{lib → internal}/badge-styles.css.d.ts +0 -0
- /package/labs/badge/{lib → internal}/badge-styles.css.js +0 -0
- /package/labs/badge/{lib → internal}/badge-styles.css.js.map +0 -0
- /package/labs/badge/{lib → internal}/badge-styles.scss +0 -0
- /package/labs/badge/{lib → internal}/badge.d.ts +0 -0
- /package/labs/badge/{lib → internal}/badge.js +0 -0
- /package/labs/badge/{lib → internal}/badge.js.map +0 -0
- /package/labs/navigationbar/{lib → internal}/_navigation-bar.scss +0 -0
- /package/labs/navigationbar/{lib → internal}/constants.js +0 -0
- /package/labs/navigationbar/{lib → internal}/navigation-bar-styles.css.d.ts +0 -0
- /package/labs/navigationbar/{lib → internal}/navigation-bar-styles.css.js +0 -0
- /package/labs/navigationbar/{lib → internal}/navigation-bar-styles.css.js.map +0 -0
- /package/labs/navigationbar/{lib → internal}/navigation-bar-styles.scss +0 -0
- /package/labs/navigationbar/{lib → internal}/navigation-bar.js +0 -0
- /package/labs/navigationbar/{lib → internal}/state.js +0 -0
- /package/labs/navigationdrawer/{lib → internal}/_navigation-drawer-modal.scss +0 -0
- /package/labs/navigationdrawer/{lib → internal}/_navigation-drawer.scss +0 -0
- /package/labs/navigationdrawer/{lib → internal}/_shared.scss +0 -0
- /package/labs/navigationdrawer/{lib → internal}/navigation-drawer-modal-styles.css.d.ts +0 -0
- /package/labs/navigationdrawer/{lib → internal}/navigation-drawer-modal-styles.css.js +0 -0
- /package/labs/navigationdrawer/{lib → internal}/navigation-drawer-modal-styles.css.js.map +0 -0
- /package/labs/navigationdrawer/{lib → internal}/navigation-drawer-modal-styles.scss +0 -0
- /package/labs/navigationdrawer/{lib → internal}/navigation-drawer-modal.d.ts +0 -0
- /package/labs/navigationdrawer/{lib → internal}/navigation-drawer-styles.css.d.ts +0 -0
- /package/labs/navigationdrawer/{lib → internal}/navigation-drawer-styles.css.js +0 -0
- /package/labs/navigationdrawer/{lib → internal}/navigation-drawer-styles.css.js.map +0 -0
- /package/labs/navigationdrawer/{lib → internal}/navigation-drawer-styles.scss +0 -0
- /package/labs/navigationdrawer/{lib → internal}/navigation-drawer.d.ts +0 -0
- /package/labs/navigationdrawer/{lib → internal}/navigation-drawer.js +0 -0
- /package/labs/navigationdrawer/{lib → internal}/navigation-drawer.js.map +0 -0
- /package/labs/navigationdrawer/{lib → internal}/shared-styles.css.d.ts +0 -0
- /package/labs/navigationdrawer/{lib → internal}/shared-styles.css.js +0 -0
- /package/labs/navigationdrawer/{lib → internal}/shared-styles.css.js.map +0 -0
- /package/labs/navigationdrawer/{lib → internal}/shared-styles.scss +0 -0
- /package/labs/navigationtab/{lib → internal}/navigation-tab-styles.css.d.ts +0 -0
- /package/labs/navigationtab/{lib → internal}/navigation-tab-styles.scss +0 -0
- /package/labs/navigationtab/{lib → internal}/state.d.ts +0 -0
- /package/labs/navigationtab/{lib → internal}/state.js +0 -0
- /package/labs/navigationtab/{lib → internal}/state.js.map +0 -0
- /package/labs/segmentedbutton/{lib → internal}/_outlined-segmented-button.scss +0 -0
- /package/labs/segmentedbutton/{lib → internal}/_shared.scss +0 -0
- /package/labs/segmentedbutton/{lib → internal}/outlined-segmented-button.d.ts +0 -0
- /package/labs/segmentedbutton/{lib → internal}/outlined-segmented-button.js +0 -0
- /package/labs/segmentedbutton/{lib → internal}/outlined-segmented-button.js.map +0 -0
- /package/labs/segmentedbutton/{lib → internal}/outlined-styles.css.d.ts +0 -0
- /package/labs/segmentedbutton/{lib → internal}/outlined-styles.css.js +0 -0
- /package/labs/segmentedbutton/{lib → internal}/outlined-styles.css.js.map +0 -0
- /package/labs/segmentedbutton/{lib → internal}/outlined-styles.scss +0 -0
- /package/labs/segmentedbutton/{lib → internal}/shared-styles.css.d.ts +0 -0
- /package/labs/segmentedbutton/{lib → internal}/shared-styles.css.js +0 -0
- /package/labs/segmentedbutton/{lib → internal}/shared-styles.css.js.map +0 -0
- /package/labs/segmentedbutton/{lib → internal}/shared-styles.scss +0 -0
- /package/labs/segmentedbuttonset/{lib → internal}/_outlined-segmented-button-set.scss +0 -0
- /package/labs/segmentedbuttonset/{lib → internal}/_shared.scss +0 -0
- /package/labs/segmentedbuttonset/{lib → internal}/outlined-segmented-button-set.d.ts +0 -0
- /package/labs/segmentedbuttonset/{lib → internal}/outlined-segmented-button-set.js +0 -0
- /package/labs/segmentedbuttonset/{lib → internal}/outlined-segmented-button-set.js.map +0 -0
- /package/labs/segmentedbuttonset/{lib → internal}/outlined-styles.css.d.ts +0 -0
- /package/labs/segmentedbuttonset/{lib → internal}/outlined-styles.css.js +0 -0
- /package/labs/segmentedbuttonset/{lib → internal}/outlined-styles.css.js.map +0 -0
- /package/labs/segmentedbuttonset/{lib → internal}/outlined-styles.scss +0 -0
- /package/labs/segmentedbuttonset/{lib → internal}/shared-styles.css.d.ts +0 -0
- /package/labs/segmentedbuttonset/{lib → internal}/shared-styles.css.js +0 -0
- /package/labs/segmentedbuttonset/{lib → internal}/shared-styles.css.js.map +0 -0
- /package/labs/segmentedbuttonset/{lib → internal}/shared-styles.scss +0 -0
- /package/list/{lib → internal}/_list.scss +0 -0
- /package/list/{lib → internal}/list-styles.css.d.ts +0 -0
- /package/list/{lib → internal}/list-styles.css.js +0 -0
- /package/list/{lib → internal}/list-styles.css.js.map +0 -0
- /package/list/{lib → internal}/list-styles.scss +0 -0
- /package/list/{lib → internal}/list.d.ts +0 -0
- /package/{fab/lib → list/internal/listitem}/forced-colors-styles.css.d.ts +0 -0
- /package/list/{lib → internal}/listitem/forced-colors-styles.css.js +0 -0
- /package/list/{lib → internal}/listitem/forced-colors-styles.css.js.map +0 -0
- /package/list/{lib → internal}/listitem/forced-colors-styles.scss +0 -0
- /package/list/{lib → internal}/listitem/harness.d.ts +0 -0
- /package/list/{lib → internal}/listitem/harness.js +0 -0
- /package/list/{lib → internal}/listitem/harness.js.map +0 -0
- /package/list/{lib → internal}/listitem/list-item-only.d.ts +0 -0
- /package/list/{lib → internal}/listitem/list-item-only.js +0 -0
- /package/list/{lib → internal}/listitem/list-item-only.js.map +0 -0
- /package/list/{lib → internal}/listitem/list-item-styles.css.d.ts +0 -0
- /package/list/{lib → internal}/listitem/list-item-styles.scss +0 -0
- /package/list/{lib → internal}/listitemlink/list-item-link-only.d.ts +0 -0
- /package/list/{lib → internal}/listitemlink/list-item-link-only.js +0 -0
- /package/list/{lib → internal}/listitemlink/list-item-link-only.js.map +0 -0
- /package/list/{lib → internal}/listitemlink/list-item-link.d.ts +0 -0
- /package/list/{lib → internal}/listitemlink/list-item-link.js +0 -0
- /package/list/{lib → internal}/listitemlink/list-item-link.js.map +0 -0
- /package/{list/lib/listitem → menu/internal}/forced-colors-styles.css.d.ts +0 -0
- /package/menu/{lib → internal}/forced-colors-styles.css.js +0 -0
- /package/menu/{lib → internal}/forced-colors-styles.css.js.map +0 -0
- /package/menu/{lib → internal}/forced-colors-styles.scss +0 -0
- /package/menu/{lib → internal}/menu-styles.css.d.ts +0 -0
- /package/menu/{lib → internal}/menu-styles.scss +0 -0
- /package/menu/{lib → internal}/menuitem/_menu-item.scss +0 -0
- /package/menu/{lib → internal/menuitem}/forced-colors-styles.css.d.ts +0 -0
- /package/menu/{lib → internal}/menuitem/forced-colors-styles.css.js +0 -0
- /package/menu/{lib → internal}/menuitem/forced-colors-styles.css.js.map +0 -0
- /package/menu/{lib → internal}/menuitem/forced-colors-styles.scss +0 -0
- /package/menu/{lib → internal}/menuitem/menu-item-styles.css.d.ts +0 -0
- /package/menu/{lib → internal}/menuitem/menu-item-styles.css.js +0 -0
- /package/menu/{lib → internal}/menuitem/menu-item-styles.css.js.map +0 -0
- /package/menu/{lib → internal}/menuitem/menu-item-styles.scss +0 -0
- /package/menu/{lib → internal}/shared.js +0 -0
- /package/menu/{lib → internal}/surfacePositionController.d.ts +0 -0
- /package/menu/{lib → internal}/surfacePositionController.js +0 -0
- /package/menu/{lib → internal}/surfacePositionController.js.map +0 -0
- /package/menu/{lib → internal}/types.d.ts +0 -0
- /package/menu/{lib → internal}/types.js +0 -0
- /package/menu/{lib → internal}/types.js.map +0 -0
- /package/{circularprogress/lib → progress/internal}/circular-progress-styles.css.d.ts +0 -0
- /package/{circularprogress/lib → progress/internal}/circular-progress-styles.scss +0 -0
- /package/{linearprogress/lib → progress/internal}/linear-progress-styles.css.d.ts +0 -0
- /package/{linearprogress/lib → progress/internal}/linear-progress-styles.scss +0 -0
- /package/{menu/lib/menuitem → radio/internal}/forced-colors-styles.css.d.ts +0 -0
- /package/radio/{lib → internal}/forced-colors-styles.css.js +0 -0
- /package/radio/{lib → internal}/forced-colors-styles.css.js.map +0 -0
- /package/radio/{lib → internal}/forced-colors-styles.scss +0 -0
- /package/radio/{lib → internal}/radio-styles.css.d.ts +0 -0
- /package/radio/{lib → internal}/radio-styles.scss +0 -0
- /package/radio/{lib → internal}/single-selection-controller.d.ts +0 -0
- /package/ripple/{lib → internal}/_ripple.scss +0 -0
- /package/ripple/{lib → internal}/ripple-styles.css.d.ts +0 -0
- /package/ripple/{lib → internal}/ripple-styles.css.js +0 -0
- /package/ripple/{lib → internal}/ripple-styles.css.js.map +0 -0
- /package/ripple/{lib → internal}/ripple-styles.scss +0 -0
- /package/ripple/{lib → internal}/ripple.d.ts +0 -0
- /package/select/{lib → internal}/_filled-select.scss +0 -0
- /package/select/{lib → internal}/_outlined-select.scss +0 -0
- /package/select/{lib → internal}/filled-forced-colors-styles.css.d.ts +0 -0
- /package/select/{lib → internal}/filled-forced-colors-styles.css.js +0 -0
- /package/select/{lib → internal}/filled-forced-colors-styles.css.js.map +0 -0
- /package/select/{lib → internal}/filled-forced-colors-styles.scss +0 -0
- /package/select/{lib → internal}/filled-select-styles.css.d.ts +0 -0
- /package/select/{lib → internal}/filled-select-styles.css.js +0 -0
- /package/select/{lib → internal}/filled-select-styles.css.js.map +0 -0
- /package/select/{lib → internal}/filled-select-styles.scss +0 -0
- /package/select/{lib → internal}/filled-select.d.ts +0 -0
- /package/select/{lib → internal}/filled-select.js +0 -0
- /package/select/{lib → internal}/filled-select.js.map +0 -0
- /package/select/{lib → internal}/outlined-forced-colors-styles.css.d.ts +0 -0
- /package/select/{lib → internal}/outlined-forced-colors-styles.css.js +0 -0
- /package/select/{lib → internal}/outlined-forced-colors-styles.css.js.map +0 -0
- /package/select/{lib → internal}/outlined-forced-colors-styles.scss +0 -0
- /package/select/{lib → internal}/outlined-select-styles.css.d.ts +0 -0
- /package/select/{lib → internal}/outlined-select-styles.css.js +0 -0
- /package/select/{lib → internal}/outlined-select-styles.css.js.map +0 -0
- /package/select/{lib → internal}/outlined-select-styles.scss +0 -0
- /package/select/{lib → internal}/outlined-select.d.ts +0 -0
- /package/select/{lib → internal}/outlined-select.js +0 -0
- /package/select/{lib → internal}/outlined-select.js.map +0 -0
- /package/select/{lib → internal}/select.d.ts +0 -0
- /package/select/{lib → internal}/shared-styles.css.d.ts +0 -0
- /package/select/{lib → internal}/shared-styles.scss +0 -0
- /package/select/{lib → internal}/shared.js +0 -0
- /package/{radio/lib → slider/internal}/forced-colors-styles.css.d.ts +0 -0
- /package/slider/{lib → internal}/forced-colors-styles.css.js +0 -0
- /package/slider/{lib → internal}/forced-colors-styles.css.js.map +0 -0
- /package/slider/{lib → internal}/forced-colors-styles.scss +0 -0
- /package/slider/{lib → internal}/slider-styles.css.d.ts +0 -0
- /package/slider/{lib → internal}/slider-styles.scss +0 -0
- /package/switch/{lib → internal}/README.md +0 -0
- /package/switch/{lib → internal}/_handle.scss +0 -0
- /package/switch/{lib → internal}/_icon.scss +0 -0
- /package/switch/{lib → internal}/_track.scss +0 -0
- /package/{slider/lib → switch/internal}/forced-colors-styles.css.d.ts +0 -0
- /package/switch/{lib → internal}/forced-colors-styles.css.js +0 -0
- /package/switch/{lib → internal}/forced-colors-styles.css.js.map +0 -0
- /package/switch/{lib → internal}/forced-colors-styles.scss +0 -0
- /package/switch/{lib → internal}/switch-styles.css.d.ts +0 -0
- /package/switch/{lib → internal}/switch-styles.scss +0 -0
- /package/tabs/{lib → internal}/_tabs.scss +0 -0
- /package/tabs/{lib → internal}/tab-styles.css.d.ts +0 -0
- /package/tabs/{lib → internal}/tab-styles.scss +0 -0
- /package/tabs/{lib → internal}/tabs-styles.css.d.ts +0 -0
- /package/tabs/{lib → internal}/tabs-styles.css.js +0 -0
- /package/tabs/{lib → internal}/tabs-styles.css.js.map +0 -0
- /package/tabs/{lib → internal}/tabs-styles.scss +0 -0
- /package/textfield/{lib → internal}/_icon.scss +0 -0
- /package/textfield/{lib → internal}/filled-forced-colors-styles.css.d.ts +0 -0
- /package/textfield/{lib → internal}/filled-forced-colors-styles.css.js +0 -0
- /package/textfield/{lib → internal}/filled-forced-colors-styles.css.js.map +0 -0
- /package/textfield/{lib → internal}/filled-forced-colors-styles.scss +0 -0
- /package/textfield/{lib → internal}/filled-styles.css.d.ts +0 -0
- /package/textfield/{lib → internal}/filled-styles.scss +0 -0
- /package/textfield/{lib → internal}/filled-text-field.d.ts +0 -0
- /package/textfield/{lib → internal}/filled-text-field.js +0 -0
- /package/textfield/{lib → internal}/filled-text-field.js.map +0 -0
- /package/textfield/{lib → internal}/outlined-forced-colors-styles.css.d.ts +0 -0
- /package/textfield/{lib → internal}/outlined-forced-colors-styles.css.js +0 -0
- /package/textfield/{lib → internal}/outlined-forced-colors-styles.css.js.map +0 -0
- /package/textfield/{lib → internal}/outlined-forced-colors-styles.scss +0 -0
- /package/textfield/{lib → internal}/outlined-styles.css.d.ts +0 -0
- /package/textfield/{lib → internal}/outlined-styles.scss +0 -0
- /package/textfield/{lib → internal}/outlined-text-field.d.ts +0 -0
- /package/textfield/{lib → internal}/outlined-text-field.js +0 -0
- /package/textfield/{lib → internal}/outlined-text-field.js.map +0 -0
- /package/textfield/{lib → internal}/shared-styles.css.d.ts +0 -0
- /package/textfield/{lib → internal}/shared-styles.scss +0 -0
|
@@ -0,0 +1 @@
|
|
|
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/md-focus-ring.js';\nimport '../../ripple/ripple.js';\n\nimport {html, isServer, LitElement, nothing} from 'lit';\nimport {property, query} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\n\nimport {ARIAMixinStrict} from '../../internal/aria/aria.js';\nimport {requestUpdateOnAriaChange} from '../../internal/aria/delegate.js';\nimport {dispatchActivationClick, isActivationClick, redispatchEvent} from '../../internal/controller/events.js';\n\nimport {SingleSelectionController} from './single-selection-controller.js';\n\nconst CHECKED = Symbol('checked');\nlet maskId = 0;\n\n/**\n * A radio component.\n */\nexport class Radio extends LitElement {\n static {\n requestUpdateOnAriaChange(this);\n }\n\n /** @nocollapse */\n static override shadowRootOptions:\n ShadowRootInit = {...LitElement.shadowRootOptions, delegatesFocus: true};\n\n /** @nocollapse */\n static formAssociated = true;\n\n // Unique maskId is required because of a Safari bug that fail to persist\n // reference to the mask. This should be removed once the bug is fixed.\n private readonly maskId = `cutout${++maskId}`;\n\n /**\n * Whether or not the radio is selected.\n */\n @property({type: Boolean})\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 const state = String(checked);\n this.internals.setFormValue(this.checked ? this.value : null, state);\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() value = 'on';\n\n /**\n * The HTML name to use in form submission.\n */\n get name() {\n return this.getAttribute('name') ?? '';\n }\n set name(name: string) {\n this.setAttribute('name', name);\n }\n\n /**\n * The associated form element with which this element's value will submit.\n */\n get form() {\n return this.internals.form;\n }\n\n /**\n * The labels this element is associated with.\n */\n get labels() {\n return this.internals.labels;\n }\n\n @query('input') private readonly input!: HTMLInputElement|null;\n private readonly selectionController = new SingleSelectionController(this);\n private readonly internals =\n (this as HTMLElement /* needed for closure */).attachInternals();\n\n constructor() {\n super();\n this.addController(this.selectionController);\n if (!isServer) {\n this.addEventListener('click', (event: Event) => {\n if (!isActivationClick(event)) {\n return;\n }\n this.focus();\n dispatchActivationClick(this.input!);\n });\n }\n }\n\n override focus() {\n this.input?.focus();\n }\n\n protected override render() {\n const classes = {checked: this.checked};\n // Needed for closure conformance\n const {ariaLabel} = this as ARIAMixinStrict;\n return html`\n <div class=${classMap(classes)}>\n <md-ripple for=\"input\" ?disabled=${this.disabled}></md-ripple>\n <md-focus-ring part=\"focus-ring\" for=\"input\"></md-focus-ring>\n <svg class=\"icon\" viewBox=\"0 0 20 20\">\n <mask id=\"${this.maskId}\">\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(#${this.maskId})\" />\n <circle class=\"inner circle\" cx=\"10\" cy=\"10\" r=\"5\" />\n </svg>\n <input\n id=\"input\"\n type=\"radio\"\n name=${this.name}\n aria-label=${ariaLabel || nothing}\n .checked=${this.checked}\n .value=${this.value}\n ?disabled=${this.disabled}\n @change=${this.handleChange}\n >\n </div>\n `;\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 */\n formResetCallback() {\n // The checked property does not reflect, so the original attribute set by\n // the user is used to determine the default value.\n this.checked = this.hasAttribute('checked');\n }\n\n /** @private */\n formStateRestoreCallback(state: string) {\n this.checked = state === 'true';\n }\n}\n"]}
|
|
@@ -108,8 +108,12 @@ export class SingleSelectionController {
|
|
|
108
108
|
}
|
|
109
109
|
}
|
|
110
110
|
// The next sibling should be checked, focused and dispatch a change event
|
|
111
|
+
nextSibling.checked = true;
|
|
111
112
|
nextSibling.removeAttribute('tabindex');
|
|
112
|
-
nextSibling.
|
|
113
|
+
nextSibling.focus();
|
|
114
|
+
// Fire a change event since the change is triggered by a user action.
|
|
115
|
+
// This matches native <input type="radio"> behavior.
|
|
116
|
+
nextSibling.dispatchEvent(new Event('change', { bubbles: true }));
|
|
113
117
|
break;
|
|
114
118
|
}
|
|
115
119
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"single-selection-controller.js","sourceRoot":"","sources":["single-selection-controller.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 {ReactiveController} from 'lit';\n\n/**\n * An element that supports single-selection with `SingleSelectionController`.\n */\nexport interface SingleSelectionElement extends HTMLElement {\n /**\n * Whether or not the element is selected.\n */\n checked: boolean;\n}\n\n/**\n * A `ReactiveController` that provides root node-scoped single selection for\n * elements, similar to native `<input type=\"radio\">` selection.\n *\n * To use, elements should add the controller and call\n * `selectionController.handleCheckedChange()` in a getter/setter. This must\n * be synchronous to match native behavior.\n *\n * @example\n * const CHECKED = Symbol('checked');\n *\n * class MyToggle extends LitElement {\n * get checked() { return this[CHECKED]; }\n * set checked(checked: boolean) {\n * const oldValue = this.checked;\n * if (oldValue === checked) {\n * return;\n * }\n *\n * this[CHECKED] = checked;\n * this.selectionController.handleCheckedChange();\n * this.requestUpdate('checked', oldValue);\n * }\n *\n * [CHECKED] = false;\n *\n * private selectionController = new SingleSelectionController(this);\n *\n * constructor() {\n * super();\n * this.addController(this.selectionController);\n * }\n * }\n */\nexport class SingleSelectionController implements ReactiveController {\n private focused = false;\n private root: ParentNode|null = null;\n\n constructor(private readonly host: SingleSelectionElement) {}\n\n hostConnected() {\n this.root = this.host.getRootNode() as ParentNode;\n this.host.addEventListener('keydown', this.handleKeyDown);\n this.host.addEventListener('focusin', this.handleFocusIn);\n this.host.addEventListener('focusout', this.handleFocusOut);\n if (this.host.checked) {\n // Uncheck other siblings when attached if already checked. This mimics\n // native <input type=\"radio\"> behavior.\n this.uncheckSiblings();\n }\n\n // Update for the newly added host.\n this.updateTabIndices();\n }\n\n hostDisconnected() {\n this.host.removeEventListener('keydown', this.handleKeyDown);\n this.host.removeEventListener('focusin', this.handleFocusIn);\n this.host.removeEventListener('focusout', this.handleFocusOut);\n // Update for siblings that are still connected.\n this.updateTabIndices();\n this.root = null;\n }\n\n /**\n * Should be called whenever the host's `checked` property changes\n * synchronously.\n */\n handleCheckedChange() {\n if (!this.host.checked) {\n return;\n }\n\n this.uncheckSiblings();\n this.updateTabIndices();\n }\n\n private readonly handleFocusIn = () => {\n this.focused = true;\n this.updateTabIndices();\n };\n\n private readonly handleFocusOut = () => {\n this.focused = false;\n this.updateTabIndices();\n };\n\n private uncheckSiblings() {\n for (const sibling of this.getNamedSiblings()) {\n if (sibling !== this.host) {\n sibling.checked = false;\n }\n }\n }\n\n /**\n * Updates the `tabindex` of the host and its siblings.\n */\n private updateTabIndices() {\n // There are three tabindex states for a group of elements:\n // 1. If any are checked, that element is focusable.\n const siblings = this.getNamedSiblings();\n const checkedSibling = siblings.find(sibling => sibling.checked);\n // 2. If an element is focused, the others are no longer focusable.\n if (checkedSibling || this.focused) {\n const focusable = checkedSibling || this.host;\n focusable.removeAttribute('tabindex');\n\n for (const sibling of siblings) {\n if (sibling !== focusable) {\n sibling.tabIndex = -1;\n }\n }\n return;\n }\n\n // 3. If none are checked or focused, all are focusable.\n for (const sibling of siblings) {\n sibling.removeAttribute('tabindex');\n }\n }\n\n /**\n * Retrieves all siblings in the host element's root with the same `name`\n * attribute.\n */\n private getNamedSiblings() {\n const name = this.host.getAttribute('name');\n if (!name || !this.root) {\n return [];\n }\n\n return Array.from(\n this.root.querySelectorAll<SingleSelectionElement>(`[name=\"${name}\"]`));\n }\n\n /**\n * Handles arrow key events from the host. Using the arrow keys will\n * select and check the next or previous sibling with the host's\n * `name` attribute.\n */\n private readonly handleKeyDown = (event: KeyboardEvent) => {\n const isDown = event.key === 'ArrowDown';\n const isUp = event.key === 'ArrowUp';\n const isLeft = event.key === 'ArrowLeft';\n const isRight = event.key === 'ArrowRight';\n // Ignore non-arrow keys\n if (!isLeft && !isRight && !isDown && !isUp) {\n return;\n }\n\n // Don't try to select another sibling if there aren't any.\n const siblings = this.getNamedSiblings();\n if (!siblings.length) {\n return;\n }\n\n // Prevent default interactions on the element for arrow keys,\n // since this controller will introduce new behavior.\n event.preventDefault();\n\n // Check if moving forwards or backwards\n const isRtl = getComputedStyle(this.host).direction === 'rtl';\n const forwards = isRtl ? isLeft || isDown : isRight || isDown;\n\n const hostIndex = siblings.indexOf(this.host);\n let nextIndex = forwards ? hostIndex + 1 : hostIndex - 1;\n // Search for the next sibling that is not disabled to select.\n // If we return to the host index, there is nothing to select.\n while (nextIndex !== hostIndex) {\n if (nextIndex >= siblings.length) {\n // Return to start if moving past the last item.\n nextIndex = 0;\n } else if (nextIndex < 0) {\n // Go to end if moving before the first item.\n nextIndex = siblings.length - 1;\n }\n\n // Check if the next sibling is disabled. If so,\n // move the index and continue searching.\n const nextSibling = siblings[nextIndex];\n if (nextSibling.hasAttribute('disabled')) {\n if (forwards) {\n nextIndex++;\n } else {\n nextIndex--;\n }\n\n continue;\n }\n\n // Uncheck and remove focusability from other siblings.\n for (const sibling of siblings) {\n if (sibling !== nextSibling) {\n sibling.checked = false;\n sibling.tabIndex = -1;\n }\n }\n\n // The next sibling should be checked, focused and dispatch a change event\n nextSibling.checked = true;\n nextSibling.removeAttribute('tabindex');\n nextSibling.focus();\n // Fire a change event since the change is triggered by a user action.\n // This matches native <input type=\"radio\"> behavior.\n nextSibling.dispatchEvent(new Event('change', {bubbles: true}));\n\n break;\n }\n };\n}\n"]}
|
package/radio/radio.d.ts
CHANGED
package/radio/radio.js
CHANGED
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { __decorate } from "tslib";
|
|
7
7
|
import { customElement } from 'lit/decorators.js';
|
|
8
|
-
import { styles as forcedColorsStyles } from './
|
|
9
|
-
import { Radio } from './
|
|
10
|
-
import { styles } from './
|
|
8
|
+
import { styles as forcedColorsStyles } from './internal/forced-colors-styles.css.js';
|
|
9
|
+
import { Radio } from './internal/radio.js';
|
|
10
|
+
import { styles } from './internal/radio-styles.css.js';
|
|
11
11
|
/**
|
|
12
12
|
* @summary Radio buttons allow users to select one option from a set.
|
|
13
13
|
*
|
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,
|
|
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,wCAAwC,CAAC;AACpF,OAAO,EAAC,KAAK,EAAC,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAC,MAAM,EAAC,MAAM,gCAAgC,CAAC;AAQtD;;;;;;;;;;;;;;;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 './internal/forced-colors-styles.css.js';\nimport {Radio} from './internal/radio.js';\nimport {styles} from './internal/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/_ripple.scss
CHANGED
|
@@ -290,11 +290,19 @@ export class Ripple extends LitElement {
|
|
|
290
290
|
this.state = State.INACTIVE;
|
|
291
291
|
const animation = this.growAnimation;
|
|
292
292
|
const pressAnimationPlayState = animation?.currentTime ?? Infinity;
|
|
293
|
+
// TODO: go/ts51upgrade - Auto-added to unblock TS5.1 migration.
|
|
294
|
+
// TS2365: Operator '>=' cannot be applied to types 'CSSNumberish' and
|
|
295
|
+
// 'number'.
|
|
296
|
+
// @ts-ignore
|
|
293
297
|
if (pressAnimationPlayState >= MINIMUM_PRESS_MS) {
|
|
294
298
|
this.pressed = false;
|
|
295
299
|
return;
|
|
296
300
|
}
|
|
297
301
|
await new Promise(resolve => {
|
|
302
|
+
// TODO: go/ts51upgrade - Auto-added to unblock TS5.1 migration.
|
|
303
|
+
// TS2363: The right-hand side of an arithmetic operation must be of
|
|
304
|
+
// type 'any', 'number', 'bigint' or an enum type.
|
|
305
|
+
// @ts-ignore
|
|
298
306
|
setTimeout(resolve, MINIMUM_PRESS_MS - pressAnimationPlayState);
|
|
299
307
|
});
|
|
300
308
|
if (this.growAnimation !== animation) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ripple.js","sourceRoot":"","sources":["ripple.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 {html, LitElement, PropertyValues} from 'lit';\nimport {property, query, state} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\n\nimport {Attachable, AttachableController} from '../../internal/controller/attachable-controller.js';\nimport {EASING} from '../../internal/motion/animation.js';\n\nconst PRESS_GROW_MS = 450;\nconst MINIMUM_PRESS_MS = 225;\nconst INITIAL_ORIGIN_SCALE = 0.2;\nconst PADDING = 10;\nconst SOFT_EDGE_MINIMUM_SIZE = 75;\nconst SOFT_EDGE_CONTAINER_RATIO = 0.35;\nconst PRESS_PSEUDO = '::after';\nconst ANIMATION_FILL = 'forwards';\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: begin press; transition to `WAITING_FOR_CLICK`.\n * - on cancel: transition to `INACTIVE`.\n * - after `TOUCH_DELAY_MS`: begin press; 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 end press; transition to `INACTIVE`.\n */\n WAITING_FOR_CLICK\n}\n\n/**\n * Events that the ripple listens to.\n */\nconst EVENTS = [\n 'click', 'contextmenu', 'pointercancel', 'pointerdown', 'pointerenter',\n 'pointerleave', 'pointerup'\n];\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 * A ripple component.\n */\nexport class Ripple extends LitElement implements Attachable {\n /**\n * Disables the ripple.\n */\n @property({type: Boolean, reflect: true}) disabled = false;\n\n get htmlFor() {\n return this.attachableController.htmlFor;\n }\n\n set htmlFor(htmlFor: string|null) {\n this.attachableController.htmlFor = htmlFor;\n }\n\n get control() {\n return this.attachableController.control;\n }\n\n @state() private hovered = false;\n @state() private pressed = false;\n\n @query('.surface') private readonly mdRoot!: HTMLElement|null;\n private rippleSize = '';\n private rippleScale = '';\n private initialSize = 0;\n private growAnimation?: Animation;\n private state = State.INACTIVE;\n private rippleStartEvent?: PointerEvent;\n private checkBoundsAfterContextMenu = false;\n private readonly attachableController =\n new AttachableController(this, this.onControlChange.bind(this));\n\n attach(control: HTMLElement) {\n this.attachableController.attach(control);\n }\n\n detach() {\n this.attachableController.detach();\n }\n\n protected override render() {\n const classes = {\n 'hovered': this.hovered,\n 'pressed': this.pressed,\n };\n\n return html`<div class=\"surface ${classMap(classes)}\"></div>`;\n }\n\n protected override update(changedProps: PropertyValues<this>) {\n if (changedProps.has('disabled') && this.disabled) {\n this.hovered = false;\n this.pressed = false;\n }\n super.update(changedProps);\n }\n\n /**\n * TODO(b/269799771): make private\n * @private only public for slider\n */\n handlePointerenter(event: PointerEvent) {\n if (!this.shouldReactToEvent(event)) {\n return;\n }\n\n this.hovered = true;\n }\n\n /**\n * TODO(b/269799771): make private\n * @private only public for slider\n */\n handlePointerleave(event: PointerEvent) {\n if (!this.shouldReactToEvent(event)) {\n return;\n }\n\n this.hovered = false;\n\n // release a held mouse or pen press that moves outside the element\n if (this.state !== State.INACTIVE) {\n this.endPressAnimation();\n }\n }\n\n private handlePointerup(event: PointerEvent) {\n if (!this.shouldReactToEvent(event)) {\n return;\n }\n\n if (this.state === State.HOLDING) {\n this.state = State.WAITING_FOR_CLICK;\n return;\n }\n\n if (this.state === State.TOUCH_DELAY) {\n this.state = State.WAITING_FOR_CLICK;\n this.startPressAnimation(this.rippleStartEvent);\n return;\n }\n }\n\n private async handlePointerdown(event: PointerEvent) {\n if (!this.shouldReactToEvent(event)) {\n return;\n }\n\n this.rippleStartEvent = event;\n if (!this.isTouch(event)) {\n this.state = State.WAITING_FOR_CLICK;\n this.startPressAnimation(event);\n return;\n }\n\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(event)) {\n return;\n }\n\n this.checkBoundsAfterContextMenu = false;\n\n // Wait for a hold after touch delay\n this.state = State.TOUCH_DELAY;\n await new Promise(resolve => {\n setTimeout(resolve, TOUCH_DELAY_MS);\n });\n\n if (this.state !== State.TOUCH_DELAY) {\n return;\n }\n\n this.state = State.HOLDING;\n this.startPressAnimation(event);\n }\n\n private handleClick() {\n // Click is a MouseEvent in Firefox and Safari, so we cannot use\n // `shouldReactToEvent`\n if (this.disabled) {\n return;\n }\n\n if (this.state === State.WAITING_FOR_CLICK) {\n this.endPressAnimation();\n return;\n }\n\n if (this.state === State.INACTIVE) {\n // keyboard synthesized click event\n this.startPressAnimation();\n this.endPressAnimation();\n }\n }\n\n private handlePointercancel(event: PointerEvent) {\n if (!this.shouldReactToEvent(event)) {\n return;\n }\n\n this.endPressAnimation();\n }\n\n private handleContextmenu() {\n if (this.disabled) {\n return;\n }\n\n this.checkBoundsAfterContextMenu = true;\n this.endPressAnimation();\n }\n\n private determineRippleSize() {\n const {height, width} = this.getBoundingClientRect();\n const maxDim = Math.max(height, width);\n const softEdgeSize =\n Math.max(SOFT_EDGE_CONTAINER_RATIO * maxDim, SOFT_EDGE_MINIMUM_SIZE);\n\n const initialSize = Math.floor(maxDim * INITIAL_ORIGIN_SCALE);\n const hypotenuse = Math.sqrt(width ** 2 + height ** 2);\n const maxRadius = hypotenuse + PADDING;\n\n this.initialSize = initialSize;\n this.rippleScale = `${(maxRadius + softEdgeSize) / initialSize}`;\n this.rippleSize = `${initialSize}px`;\n }\n\n private getNormalizedPointerEventCoords(pointerEvent: PointerEvent):\n {x: number, y: number} {\n const {scrollX, scrollY} = window;\n const {left, top} = this.getBoundingClientRect();\n const documentX = scrollX + left;\n const documentY = scrollY + top;\n const {pageX, pageY} = pointerEvent;\n return {x: pageX - documentX, y: pageY - documentY};\n }\n\n private getTranslationCoordinates(positionEvent?: Event) {\n const {height, width} = this.getBoundingClientRect();\n // end in the center\n const endPoint = {\n x: (width - this.initialSize) / 2,\n y: (height - this.initialSize) / 2,\n };\n\n let startPoint;\n if (positionEvent instanceof PointerEvent) {\n startPoint = this.getNormalizedPointerEventCoords(positionEvent);\n } else {\n startPoint = {\n x: width / 2,\n y: height / 2,\n };\n }\n\n // center around start point\n startPoint = {\n x: startPoint.x - (this.initialSize / 2),\n y: startPoint.y - (this.initialSize / 2),\n };\n\n return {startPoint, endPoint};\n }\n\n private startPressAnimation(positionEvent?: Event) {\n if (!this.mdRoot) {\n return;\n }\n\n this.pressed = true;\n this.growAnimation?.cancel();\n this.determineRippleSize();\n const {startPoint, endPoint} =\n this.getTranslationCoordinates(positionEvent);\n const translateStart = `${startPoint.x}px, ${startPoint.y}px`;\n const translateEnd = `${endPoint.x}px, ${endPoint.y}px`;\n\n this.growAnimation = this.mdRoot.animate(\n {\n top: [0, 0],\n left: [0, 0],\n height: [this.rippleSize, this.rippleSize],\n width: [this.rippleSize, this.rippleSize],\n transform: [\n `translate(${translateStart}) scale(1)`,\n `translate(${translateEnd}) scale(${this.rippleScale})`\n ],\n },\n {\n pseudoElement: PRESS_PSEUDO,\n duration: PRESS_GROW_MS,\n easing: EASING.STANDARD,\n fill: ANIMATION_FILL\n });\n }\n\n private async endPressAnimation() {\n this.state = State.INACTIVE;\n const animation = this.growAnimation;\n const pressAnimationPlayState = animation?.currentTime ?? Infinity;\n // TODO: go/ts51upgrade - Auto-added to unblock TS5.1 migration.\n // TS2365: Operator '>=' cannot be applied to types 'CSSNumberish' and\n // 'number'.\n // @ts-ignore\n if (pressAnimationPlayState >= MINIMUM_PRESS_MS) {\n this.pressed = false;\n return;\n }\n\n await new Promise(resolve => {\n // TODO: go/ts51upgrade - Auto-added to unblock TS5.1 migration.\n // TS2363: The right-hand side of an arithmetic operation must be of\n // type 'any', 'number', 'bigint' or an enum type.\n // @ts-ignore\n setTimeout(resolve, MINIMUM_PRESS_MS - pressAnimationPlayState);\n });\n\n if (this.growAnimation !== animation) {\n // A new press animation was started. The old animation was canceled and\n // should not finish the pressed state.\n return;\n }\n\n this.pressed = false;\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(event: PointerEvent) {\n if (this.disabled || !event.isPrimary) {\n return false;\n }\n\n if (this.rippleStartEvent &&\n this.rippleStartEvent.pointerId !== event.pointerId) {\n return false;\n }\n\n if (event.type === 'pointerenter' || event.type === 'pointerleave') {\n return !this.isTouch(event);\n }\n\n const isPrimaryButton = event.buttons === 1;\n return this.isTouch(event) || isPrimaryButton;\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.getBoundingClientRect();\n return x >= left && x <= right && y >= top && y <= bottom;\n }\n\n private isTouch({pointerType}: PointerEvent) {\n return pointerType === 'touch';\n }\n\n /** @private */\n async handleEvent(event: Event) {\n switch (event.type) {\n case 'click':\n this.handleClick();\n break;\n case 'contextmenu':\n this.handleContextmenu();\n break;\n case 'pointercancel':\n this.handlePointercancel(event as PointerEvent);\n break;\n case 'pointerdown':\n await this.handlePointerdown(event as PointerEvent);\n break;\n case 'pointerenter':\n this.handlePointerenter(event as PointerEvent);\n break;\n case 'pointerleave':\n this.handlePointerleave(event as PointerEvent);\n break;\n case 'pointerup':\n this.handlePointerup(event as PointerEvent);\n break;\n default:\n break;\n }\n }\n\n private onControlChange(prev: HTMLElement|null, next: HTMLElement|null) {\n for (const event of EVENTS) {\n prev?.removeEventListener(event, this);\n next?.addEventListener(event, this);\n }\n }\n}\n"]}
|
package/ripple/ripple.d.ts
CHANGED
package/ripple/ripple.js
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { __decorate } from "tslib";
|
|
7
7
|
import { customElement } from 'lit/decorators.js';
|
|
8
|
-
import { Ripple } from './
|
|
9
|
-
import { styles } from './
|
|
8
|
+
import { Ripple } from './internal/ripple.js';
|
|
9
|
+
import { styles } from './internal/ripple-styles.css.js';
|
|
10
10
|
/**
|
|
11
11
|
* @summary Ripples, also known as state layers, are visual indicators used to
|
|
12
12
|
* communicate the status of a component or interactive element.
|
package/ripple/ripple.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ripple.js","sourceRoot":"","sources":["ripple.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAEH,OAAO,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAC,MAAM,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"ripple.js","sourceRoot":"","sources":["ripple.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAEH,OAAO,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAC,MAAM,EAAC,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAC,MAAM,EAAC,MAAM,iCAAiC,CAAC;AAQvD;;;;;;;;;;;;GAYG;AAEI,IAAM,QAAQ,GAAd,MAAM,QAAS,SAAQ,MAAM;;AAClB,eAAM,GAAG,CAAC,MAAM,CAAC,CAAC;AADvB,QAAQ;IADpB,aAAa,CAAC,WAAW,CAAC;GACd,QAAQ,CAEpB;SAFY,QAAQ","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 {Ripple} from './internal/ripple.js';\nimport {styles} from './internal/ripple-styles.css.js';\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'md-ripple': MdRipple;\n }\n}\n\n/**\n * @summary Ripples, also known as state layers, are visual indicators used to\n * communicate the status of a component or interactive element.\n *\n * @description A state layer is a semi-transparent covering on an element that\n * indicates its state. State layers provide a systematic approach to\n * visualizing states by using opacity. A layer can be applied to an entire\n * element or in a circular shape and only one state layer can be applied at a\n * given time.\n *\n * @final\n * @suppress {visibility}\n */\n@customElement('md-ripple')\nexport class MdRipple extends Ripple {\n static override styles = [styles];\n}\n"]}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Copyright 2023 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import { FilledSelect } from './
|
|
6
|
+
import { FilledSelect } from './internal/filled-select.js';
|
|
7
7
|
declare global {
|
|
8
8
|
interface HTMLElementTagNameMap {
|
|
9
9
|
'md-filled-select': MdFilledSelect;
|
package/select/filled-select.js
CHANGED
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { __decorate } from "tslib";
|
|
7
7
|
import { customElement } from 'lit/decorators.js';
|
|
8
|
-
import { styles as filledForcedColorsStyles } from './
|
|
9
|
-
import { FilledSelect } from './
|
|
10
|
-
import { styles } from './
|
|
11
|
-
import { styles as sharedStyles } from './
|
|
8
|
+
import { styles as filledForcedColorsStyles } from './internal/filled-forced-colors-styles.css.js';
|
|
9
|
+
import { FilledSelect } from './internal/filled-select.js';
|
|
10
|
+
import { styles } from './internal/filled-select-styles.css.js';
|
|
11
|
+
import { styles as sharedStyles } from './internal/shared-styles.css.js';
|
|
12
12
|
/**
|
|
13
13
|
* @summary
|
|
14
14
|
* Select menus display a list of choices on temporary surfaces and display the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filled-select.js","sourceRoot":"","sources":["filled-select.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAEH,OAAO,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAC,MAAM,IAAI,wBAAwB,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"filled-select.js","sourceRoot":"","sources":["filled-select.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAEH,OAAO,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAC,MAAM,IAAI,wBAAwB,EAAC,MAAM,+CAA+C,CAAC;AACjG,OAAO,EAAC,YAAY,EAAC,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAC,MAAM,EAAC,MAAM,wCAAwC,CAAC;AAC9D,OAAO,EAAC,MAAM,IAAI,YAAY,EAAC,MAAM,iCAAiC,CAAC;AAQvE;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEI,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,YAAY;;AAC9B,qBAAM,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,wBAAwB,CAAC,CAAC;AAD/D,cAAc;IAD1B,aAAa,CAAC,kBAAkB,CAAC;GACrB,cAAc,CAE1B;SAFY,cAAc","sourcesContent":["/**\n * @license\n * Copyright 2023 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {customElement} from 'lit/decorators.js';\n\nimport {styles as filledForcedColorsStyles} from './internal/filled-forced-colors-styles.css.js';\nimport {FilledSelect} from './internal/filled-select.js';\nimport {styles} from './internal/filled-select-styles.css.js';\nimport {styles as sharedStyles} from './internal/shared-styles.css.js';\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'md-filled-select': MdFilledSelect;\n }\n}\n\n/**\n * @summary\n * Select menus display a list of choices on temporary surfaces and display the\n * currently selected menu item above the menu.\n *\n * @description\n * The select component allows users to choose a value from a fixed list of\n * available options. Composed of an interactive anchor button and a menu, it is\n * analogous to the native HTML `<select>` element. This is the \"filled\"\n * variant.\n *\n * @example\n * ```html\n * <md-filled-select label=\"fruits\">\n * <!-- An empty selected option will give select an \"un-filled\" state -->\n * <md-select-option selected></md-select-option>\n * <md-select-option value=\"apple\" headline=\"Apple\"></md-select-option>\n * <md-select-option value=\"banana\" headline=\"Banana\"></md-select-option>\n * <md-select-option value=\"kiwi\" headline=\"Kiwi\"></md-select-option>\n * <md-select-option value=\"orange\" headline=\"Orange\"></md-select-option>\n * <md-select-option value=\"tomato\" headline=\"Tomato\"></md-select-option>\n * </md-filled-select>\n * ```\n *\n * @final\n * @suppress {visibility}\n */\n@customElement('md-filled-select')\nexport class MdFilledSelect extends FilledSelect {\n static override styles = [sharedStyles, styles, filledForcedColorsStyles];\n}\n"]}
|
package/select/harness.d.ts
CHANGED
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
* Copyright 2023 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import { Field } from '../field/
|
|
6
|
+
import { Field } from '../field/internal/field.js';
|
|
7
7
|
import { Harness } from '../testing/harness.js';
|
|
8
|
-
import { Select } from './
|
|
9
|
-
import { SelectOptionHarness } from './
|
|
8
|
+
import { Select } from './internal/select.js';
|
|
9
|
+
import { SelectOptionHarness } from './internal/selectoption/harness.js';
|
|
10
10
|
/**
|
|
11
11
|
* Test harness for menu.
|
|
12
12
|
*/
|
package/select/harness.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { FieldHarness } from '../field/harness.js';
|
|
7
7
|
import { Harness } from '../testing/harness.js';
|
|
8
|
-
import { SelectOptionHarness } from './
|
|
8
|
+
import { SelectOptionHarness } from './internal/selectoption/harness.js';
|
|
9
9
|
/**
|
|
10
10
|
* Test harness for menu.
|
|
11
11
|
*/
|
package/select/harness.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness.js","sourceRoot":"","sources":["harness.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAC,YAAY,EAAC,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAC,OAAO,EAAC,MAAM,uBAAuB,CAAC;AAG9C,OAAO,EAAC,mBAAmB,EAAC,MAAM
|
|
1
|
+
{"version":3,"file":"harness.js","sourceRoot":"","sources":["harness.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAC,YAAY,EAAC,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAC,OAAO,EAAC,MAAM,uBAAuB,CAAC;AAG9C,OAAO,EAAC,mBAAmB,EAAC,MAAM,oCAAoC,CAAC;AAEvE;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,OAAe;IACtC,QAAQ;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAU,CAAC;IAClE,CAAC;IACD;;OAEG;IACgB,KAAK,CAAC,qBAAqB;QAC5C,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;QAClC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAEQ,KAAK,CAAC,UAAU;QACvB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACpC,MAAM,OAAO,GACT,MAAM,CAAC,IAAI,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC;QACnE,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAED,uDAAuD;IACvD,QAAQ;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAC3B,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,mBAAmB,CAAC,IAA8B,CAAC,CAAC,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI;QACtB,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;QAC3B,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;QAClC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACpC,KAAK,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAAa;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAE,CAAC;QAC/D,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,OAAO,CAAC,IAAI,CACR,wEAAwE,CAAC,CAAC;SAC/E;QACD,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,qBAAqB,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IACjE,CAAC;CACF;AAED,+BAA+B;AAC/B,MAAM,mBAAoB,SAAQ,YAAY;IAC5C,4EAA4E;IACnE,qBAAqB;QAC5B,OAAO,KAAK,CAAC,qBAAqB,EAAE,CAAC;IACvC,CAAC;CACF","sourcesContent":["/**\n * @license\n * Copyright 2023 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {LitElement} from 'lit';\n\nimport {FieldHarness} from '../field/harness.js';\nimport {Field} from '../field/internal/field.js';\nimport {Harness} from '../testing/harness.js';\n\nimport {Select} from './internal/select.js';\nimport {SelectOptionHarness} from './internal/selectoption/harness.js';\n\n/**\n * Test harness for menu.\n */\nexport class SelectHarness extends Harness<Select> {\n protected getField() {\n return this.element.renderRoot.querySelector('.field') as Field;\n }\n /**\n * Shows the menu and returns the first list item element.\n */\n protected override async getInteractiveElement() {\n await this.element.updateComplete;\n return this.getField();\n }\n\n override async startHover() {\n const field = await this.getField();\n const element =\n await (new SelectFieldHardness(field)).getInteractiveElement();\n this.simulateStartHover(element);\n }\n\n /** @return ListItem harnesses for the menu's items. */\n getItems() {\n return this.element.options.map(\n (item) => new SelectOptionHarness(item as typeof item&LitElement));\n }\n\n async click(quick = true) {\n this.element.quick = quick;\n await this.element.updateComplete;\n const field = await this.getField();\n field.click();\n }\n\n async clickOption(index: number) {\n const menu = this.element.renderRoot.querySelector('md-menu')!;\n if (!menu.open) {\n console.warn(\n 'Internal menu is not open. Try calling SelectHarness.prototype.click()');\n }\n (await this.getItems()[index].getInteractiveElement()).click();\n }\n}\n\n// Private class (not exported)\nclass SelectFieldHardness extends FieldHarness {\n /* Expose so that we can call it from our internal code in SelectHarness. */\n override getInteractiveElement() {\n return super.getInteractiveElement();\n }\n}\n"]}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
@use 'sass:string';
|
|
10
10
|
// go/keep-sorted end
|
|
11
11
|
// go/keep-sorted start
|
|
12
|
-
@use '../../elevation/
|
|
12
|
+
@use '../../elevation/internal/elevation';
|
|
13
13
|
@use '../../internal/sass/theme';
|
|
14
14
|
@use '../../tokens';
|
|
15
15
|
// go/keep-sorted end
|
|
@@ -46,10 +46,6 @@
|
|
|
46
46
|
display: inline-flex;
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
-
.label {
|
|
50
|
-
width: 100%;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
49
|
:host([disabled]) {
|
|
54
50
|
pointer-events: none;
|
|
55
51
|
}
|
|
@@ -10,10 +10,10 @@ import { html, LitElement } from 'lit';
|
|
|
10
10
|
import { property, query, queryAssignedElements, state } from 'lit/decorators.js';
|
|
11
11
|
import { classMap } from 'lit/directives/class-map.js';
|
|
12
12
|
import { html as staticHtml } from 'lit/static-html.js';
|
|
13
|
-
import { List } from '../../list/
|
|
14
|
-
import { DEFAULT_TYPEAHEAD_BUFFER_TIME } from '../../menu/
|
|
15
|
-
import { isElementInSubtree, isSelectableKey } from '../../menu/
|
|
16
|
-
import { TYPEAHEAD_RECORD } from '../../menu/
|
|
13
|
+
import { List } from '../../list/internal/list.js';
|
|
14
|
+
import { DEFAULT_TYPEAHEAD_BUFFER_TIME } from '../../menu/internal/menu.js';
|
|
15
|
+
import { isElementInSubtree, isSelectableKey } from '../../menu/internal/shared.js';
|
|
16
|
+
import { TYPEAHEAD_RECORD } from '../../menu/internal/typeaheadController.js';
|
|
17
17
|
import { getSelectedItems } from './shared.js';
|
|
18
18
|
const VALUE = Symbol('value');
|
|
19
19
|
/**
|
|
@@ -165,6 +165,7 @@ export class Select extends LitElement {
|
|
|
165
165
|
<${this.fieldTag}
|
|
166
166
|
aria-haspopup="listbox"
|
|
167
167
|
role="combobox"
|
|
168
|
+
part="field"
|
|
168
169
|
tabindex=${this.disabled ? '-1' : '0'}
|
|
169
170
|
aria-expanded=${this.open ? 'true' : 'false'}
|
|
170
171
|
class="field"
|
|
@@ -209,9 +210,7 @@ export class Select extends LitElement {
|
|
|
209
210
|
renderLabel() {
|
|
210
211
|
// need to render so that line-height can apply and give it a
|
|
211
212
|
// non-zero height
|
|
212
|
-
return html `<div
|
|
213
|
-
id="label"
|
|
214
|
-
class="label">${this.displayText || html ` `}</div>`;
|
|
213
|
+
return html `<div id="label">${this.displayText || html ` `}</div>`;
|
|
215
214
|
}
|
|
216
215
|
renderMenu() {
|
|
217
216
|
return html `
|
|
@@ -221,6 +220,8 @@ export class Select extends LitElement {
|
|
|
221
220
|
listTabIndex="-1"
|
|
222
221
|
type="listbox"
|
|
223
222
|
stay-open-on-focusout
|
|
223
|
+
part="menu"
|
|
224
|
+
exportparts="focus-ring: menu-focus-ring"
|
|
224
225
|
.anchor=${this.field}
|
|
225
226
|
.open=${this.open}
|
|
226
227
|
.quick=${this.quick}
|
|
@@ -241,25 +242,26 @@ export class Select extends LitElement {
|
|
|
241
242
|
* Handles opening the select on keydown and typahead selection when the menu
|
|
242
243
|
* is closed.
|
|
243
244
|
*/
|
|
244
|
-
handleKeydown(
|
|
245
|
+
handleKeydown(event) {
|
|
245
246
|
if (this.open || this.disabled || !this.menu) {
|
|
246
247
|
return;
|
|
247
248
|
}
|
|
248
249
|
const typeaheadController = this.menu.typeaheadController;
|
|
249
|
-
const isOpenKey =
|
|
250
|
+
const isOpenKey = event.code === 'Space' || event.code === 'ArrowDown' ||
|
|
251
|
+
event.code === 'Enter';
|
|
250
252
|
// Do not open if currently typing ahead because the user may be typing the
|
|
251
253
|
// spacebar to match a word with a space
|
|
252
254
|
if (!typeaheadController.isTypingAhead && isOpenKey) {
|
|
253
|
-
|
|
255
|
+
event.preventDefault();
|
|
254
256
|
this.open = true;
|
|
255
257
|
return;
|
|
256
258
|
}
|
|
257
|
-
const isPrintableKey =
|
|
259
|
+
const isPrintableKey = event.key.length === 1;
|
|
258
260
|
// Handles typing ahead when the menu is closed by delegating the event to
|
|
259
261
|
// the underlying menu's typeaheadController
|
|
260
262
|
if (isPrintableKey) {
|
|
261
|
-
typeaheadController.onKeydown(
|
|
262
|
-
|
|
263
|
+
typeaheadController.onKeydown(event);
|
|
264
|
+
event.preventDefault();
|
|
263
265
|
const { lastActiveRecord } = typeaheadController;
|
|
264
266
|
if (!lastActiveRecord) {
|
|
265
267
|
return;
|
|
@@ -282,10 +284,10 @@ export class Select extends LitElement {
|
|
|
282
284
|
/**
|
|
283
285
|
* Handles closing the menu when the focus leaves the select's subtree.
|
|
284
286
|
*/
|
|
285
|
-
handleFocusout(
|
|
287
|
+
handleFocusout(event) {
|
|
286
288
|
// Don't close the menu if we are switching focus between menu,
|
|
287
289
|
// select-option, and field
|
|
288
|
-
if (
|
|
290
|
+
if (event.relatedTarget && isElementInSubtree(event.relatedTarget, this)) {
|
|
289
291
|
return;
|
|
290
292
|
}
|
|
291
293
|
this.open = false;
|
|
@@ -377,9 +379,9 @@ export class Select extends LitElement {
|
|
|
377
379
|
/**
|
|
378
380
|
* Determines the reason for closing, and updates the UI accordingly.
|
|
379
381
|
*/
|
|
380
|
-
handleCloseMenu(
|
|
381
|
-
const reason =
|
|
382
|
-
const item =
|
|
382
|
+
handleCloseMenu(event) {
|
|
383
|
+
const reason = event.reason;
|
|
384
|
+
const item = event.itemPath[0];
|
|
383
385
|
this.open = false;
|
|
384
386
|
let hasChanged = false;
|
|
385
387
|
if (reason.kind === 'CLICK_SELECTION') {
|
|
@@ -417,8 +419,8 @@ export class Select extends LitElement {
|
|
|
417
419
|
* Handles updating selection when an option element requests selection via
|
|
418
420
|
* property / attribute change.
|
|
419
421
|
*/
|
|
420
|
-
handleRequestSelection(
|
|
421
|
-
const requestingOptionEl =
|
|
422
|
+
handleRequestSelection(event) {
|
|
423
|
+
const requestingOptionEl = event.target;
|
|
422
424
|
// No-op if this item is already selected.
|
|
423
425
|
if (this.lastSelectedOptionRecords.some(([option]) => option === requestingOptionEl)) {
|
|
424
426
|
return;
|
|
@@ -429,8 +431,8 @@ export class Select extends LitElement {
|
|
|
429
431
|
* Handles updating selection when an option element requests deselection via
|
|
430
432
|
* property / attribute change.
|
|
431
433
|
*/
|
|
432
|
-
handleRequestDeselection(
|
|
433
|
-
const requestingOptionEl =
|
|
434
|
+
handleRequestDeselection(event) {
|
|
435
|
+
const requestingOptionEl = event.target;
|
|
434
436
|
// No-op if this item is not even in the list of tracked selected items.
|
|
435
437
|
if (!this.lastSelectedOptionRecords.some(([option]) => option === requestingOptionEl)) {
|
|
436
438
|
return;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select.js","sourceRoot":"","sources":["select.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright 2023 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport '../../menu/menu.js';\n\nimport {html, LitElement, PropertyValues} from 'lit';\nimport {property, query, queryAssignedElements, state} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport {html as staticHtml, StaticValue} from 'lit/static-html.js';\n\nimport {Field} from '../../field/internal/field.js';\nimport {List} from '../../list/internal/list.js';\nimport {DEFAULT_TYPEAHEAD_BUFFER_TIME, Menu} from '../../menu/internal/menu.js';\nimport {DefaultCloseMenuEvent, isElementInSubtree, isSelectableKey} from '../../menu/internal/shared.js';\nimport {TYPEAHEAD_RECORD} from '../../menu/internal/typeaheadController.js';\n\nimport {getSelectedItems, RequestDeselectionEvent, RequestSelectionEvent, SelectOption, SelectOptionRecord} from './shared.js';\n\nconst VALUE = Symbol('value');\n\n/**\n * @fires input Fired when a selection is made by the user via mouse or keyboard\n * interaction.\n * @fires change Fired when a selection is made by the user via mouse or\n * keyboard interaction.\n */\nexport abstract class Select extends LitElement {\n /**\n * Opens the menu synchronously with no animation.\n */\n @property({type: Boolean}) quick = false;\n /**\n * Whether or not the select is required.\n */\n @property({type: Boolean}) required = false;\n /**\n * Disables the select.\n */\n @property({type: Boolean, reflect: true}) disabled = false;\n /**\n * The error message that replaces supporting text when `error` is true. If\n * `errorText` is an empty string, then the supporting text will continue to\n * show.\n *\n * Calling `reportValidity()` will automatically update `errorText` to the\n * native `validationMessage`.\n */\n @property({type: String, attribute: 'error-text'}) errorText = '';\n /**\n * The floating label for the field.\n */\n @property() label = '';\n /**\n * Conveys additional information below the text field, such as how it should\n * be used.\n */\n @property({type: String, attribute: 'supporting-text'}) supportingText = '';\n /**\n * Gets or sets whether or not the text field is in a visually invalid state.\n *\n * Calling `reportValidity()` will automatically update `error`.\n */\n @property({type: Boolean, reflect: true}) error = false;\n /**\n * Whether or not the underlying md-menu should be position: fixed to display\n * in a top-level manner.\n */\n @property({type: Boolean, attribute: 'menu-fixed'}) menuFixed = false;\n /**\n * The max time between the keystrokes of the typeahead select / menu behavior\n * before it clears the typeahead buffer.\n */\n @property({type: Number, attribute: 'typeahead-delay'})\n typeaheadDelay = DEFAULT_TYPEAHEAD_BUFFER_TIME;\n /**\n * Whether or not the text field has a leading icon. Used for SSR.\n */\n @property({type: Boolean, attribute: 'has-leading-icon'})\n hasLeadingIcon = false;\n /**\n * Whether or not the text field has a trailing icon. Used for SSR.\n */\n @property({type: Boolean, attribute: 'has-trailing-icon'})\n hasTrailingIcon = false;\n /**\n * Text to display in the field. Only set for SSR.\n */\n @property({attribute: 'display-text'}) displayText = '';\n\n @state() private focused = false;\n @state() private open = false;\n @query('.field') private readonly field!: Field|null;\n @query('md-menu') private readonly menu!: Menu|null;\n @queryAssignedElements({slot: 'leadingicon', flatten: true})\n private readonly leadingIcons!: Element[];\n @queryAssignedElements({slot: 'trailingicon', flatten: true})\n private readonly trailingIcons!: Element[];\n\n /**\n * The value of the currently selected option.\n *\n * Note: For SSR, set `[selected]` on the requested option and `displayText`\n * rather than setting `value` setting `value` will incur a DOM query.\n */\n @property()\n get value(): string {\n return this[VALUE];\n }\n\n set value(value: string) {\n this.lastUserSetValue = value;\n this.select(value);\n }\n\n [VALUE] = '';\n\n get options() {\n // NOTE: this does a DOM query.\n return (this.menu?.items ?? []) as SelectOption[];\n }\n\n /**\n * The index of the currently selected option.\n *\n * Note: For SSR, set `[selected]` on the requested option and `displayText`\n * rather than setting `selectedIndex` setting `selectedIndex` will incur a\n * DOM query.\n */\n @property({type: Number, attribute: 'selected-index'})\n get selectedIndex(): number {\n // tslint:disable-next-line:enforce-name-casing\n const [_option, index] = (this.getSelectedOptions() ?? [])[0] ?? [];\n return index ?? -1;\n }\n\n set selectedIndex(index: number) {\n this.lastUserSetSelectedIndex = index;\n this.selectIndex(index);\n }\n\n /**\n * Returns an array of selected options.\n *\n * NOTE: md-select only suppoprts single selection.\n */\n get selectedOptions() {\n return (this.getSelectedOptions() ?? []).map(([option]) => option);\n }\n\n protected abstract readonly fieldTag: StaticValue;\n\n /**\n * Used for initializing select when the user sets the `value` directly.\n */\n private lastUserSetValue: string|null = null;\n\n /**\n * Used for initializing select when the user sets the `selectedIndex`\n * directly.\n */\n private lastUserSetSelectedIndex: number|null = null;\n\n /**\n * Used for `input` and `change` event change detection.\n */\n private lastSelectedOption: SelectOption|null = null;\n\n // tslint:disable-next-line:enforce-name-casing\n private lastSelectedOptionRecords: SelectOptionRecord[] = [];\n\n protected override render() {\n return html`\n <span\n class=\"select ${classMap(this.getRenderClasses())}\"\n @focusout=${this.handleFocusout}>\n ${this.renderField()}\n ${this.renderMenu()}\n </span>\n `;\n }\n\n private getRenderClasses() {\n return {\n 'disabled': this.disabled,\n 'error': this.error,\n };\n }\n\n private renderField() {\n // TODO(b/290078041): add aria-label/describedby\n return staticHtml`\n <${this.fieldTag}\n aria-haspopup=\"listbox\"\n role=\"combobox\"\n part=\"field\"\n tabindex=${this.disabled ? '-1' : '0'}\n aria-expanded=${this.open ? 'true' : 'false'}\n class=\"field\"\n label=${this.label}\n .focused=${this.focused || this.open}\n .populated=${!!this.displayText}\n .disabled=${this.disabled}\n .required=${this.required}\n .error=${this.error}\n .hasStart=${this.hasLeadingIcon}\n .hasEnd=${this.hasTrailingIcon}\n supporting-text=${this.supportingText}\n error-text=${this.errorText}\n @keydown =${this.handleKeydown}\n @click=${this.handleClick}\n @focus=${this.handleFocus}\n @blur=${this.handleBlur}>\n ${this.renderFieldContent()}\n </${this.fieldTag}>`;\n }\n\n private renderFieldContent() {\n return [\n this.renderLeadingIcon(),\n this.renderLabel(),\n this.renderTrailingIcon(),\n ];\n }\n\n private renderLeadingIcon() {\n return html`\n <span class=\"icon leading\" slot=\"start\">\n <slot name=\"leadingicon\" @slotchange=${this.handleIconChange}></slot>\n </span>\n `;\n }\n\n private renderTrailingIcon() {\n return html`\n <span class=\"icon trailing\" slot=\"end\">\n <slot name=\"trailingicon\" @slotchange=${this.handleIconChange}></slot>\n </span>\n `;\n }\n\n private renderLabel() {\n // need to render so that line-height can apply and give it a\n // non-zero height\n return html`<div id=\"label\">${this.displayText || html` `}</div>`;\n }\n\n private renderMenu() {\n return html`\n <md-menu\n id=\"listbox\"\n default-focus=\"NONE\"\n listTabIndex=\"-1\"\n type=\"listbox\"\n stay-open-on-focusout\n part=\"menu\"\n exportparts=\"focus-ring: menu-focus-ring\"\n .anchor=${this.field}\n .open=${this.open}\n .quick=${this.quick}\n .fixed=${this.menuFixed}\n .typeaheadDelay=${this.typeaheadDelay}\n @opening=${this.handleOpening}\n @closing=${this.handleClosing}\n @close-menu=${this.handleCloseMenu}\n @request-selection=${this.handleRequestSelection}\n @request-deselection=${this.handleRequestDeselection}>\n ${this.renderMenuContent()}\n </md-menu>`;\n }\n\n private renderMenuContent() {\n return html`<slot></slot>`;\n }\n\n /**\n * Handles opening the select on keydown and typahead selection when the menu\n * is closed.\n */\n private handleKeydown(event: KeyboardEvent) {\n if (this.open || this.disabled || !this.menu) {\n return;\n }\n\n const typeaheadController = this.menu.typeaheadController;\n const isOpenKey = event.code === 'Space' || event.code === 'ArrowDown' ||\n event.code === 'Enter';\n\n // Do not open if currently typing ahead because the user may be typing the\n // spacebar to match a word with a space\n if (!typeaheadController.isTypingAhead && isOpenKey) {\n event.preventDefault();\n this.open = true;\n return;\n }\n\n const isPrintableKey = event.key.length === 1;\n\n // Handles typing ahead when the menu is closed by delegating the event to\n // the underlying menu's typeaheadController\n if (isPrintableKey) {\n typeaheadController.onKeydown(event);\n event.preventDefault();\n\n const {lastActiveRecord} = typeaheadController;\n\n if (!lastActiveRecord) {\n return;\n }\n\n const hasChanged = this.selectItem(\n lastActiveRecord[TYPEAHEAD_RECORD.ITEM] as SelectOption);\n\n if (hasChanged) {\n this.dispatchInteractionEvents();\n }\n }\n }\n\n private handleClick() {\n this.open = true;\n }\n\n private handleFocus() {\n this.focused = true;\n }\n\n private handleBlur() {\n this.focused = false;\n }\n\n /**\n * Handles closing the menu when the focus leaves the select's subtree.\n */\n private handleFocusout(event: FocusEvent) {\n // Don't close the menu if we are switching focus between menu,\n // select-option, and field\n if (event.relatedTarget && isElementInSubtree(event.relatedTarget, this)) {\n return;\n }\n\n this.open = false;\n }\n\n /**\n * Gets a list of all selected select options as a list item record array.\n *\n * @return An array of selected list option records.\n */\n private getSelectedOptions() {\n if (!this.menu) {\n this.lastSelectedOptionRecords = [];\n return null;\n }\n\n const items = this.menu.items as SelectOption[];\n this.lastSelectedOptionRecords = getSelectedItems(items);\n return this.lastSelectedOptionRecords;\n }\n\n override async getUpdateComplete() {\n await this.menu?.updateComplete;\n return super.getUpdateComplete();\n }\n\n /**\n * Gets the selected options from the DOM, and updates the value and display\n * text to the first selected option's value and headline respectively.\n *\n * @return Whether or not the selected option has changed since last update.\n */\n private updateValueAndDisplayText() {\n const selectedOptions = this.getSelectedOptions() ?? [];\n // Used to determine whether or not we need to fire an input / change event\n // which fire whenever the option element changes (value or selectedIndex)\n // on user interaction.\n let hasSelectedOptionChanged = false;\n\n if (selectedOptions.length) {\n const [firstSelectedOption] = selectedOptions[0];\n hasSelectedOptionChanged =\n this.lastSelectedOption !== firstSelectedOption;\n this.lastSelectedOption = firstSelectedOption;\n this[VALUE] = firstSelectedOption.value;\n this.displayText = firstSelectedOption.headline;\n\n } else {\n hasSelectedOptionChanged = this.lastSelectedOption !== null;\n this.lastSelectedOption = null;\n this[VALUE] = '';\n this.displayText = '';\n }\n\n return hasSelectedOptionChanged;\n }\n\n protected override update(changed: PropertyValues<this>) {\n // In SSR the options will be ready to query, so try to figure out what\n // the value and display text should be.\n if (!this.hasUpdated) {\n this.initUserSelection();\n }\n\n super.update(changed);\n }\n\n protected override async firstUpdated(changed: PropertyValues<this>) {\n await this.menu?.updateComplete;\n // If this has been handled on update already due to SSR, try again.\n if (!this.lastSelectedOptionRecords.length) {\n this.initUserSelection();\n }\n\n super.firstUpdated(changed);\n }\n\n /**\n * Focuses and activates the last selected item upon opening, and resets other\n * active items.\n */\n private async handleOpening() {\n const items = this.menu!.items;\n const activeItem = List.getActiveItem(items)?.item;\n const [selectedItem] = this.lastSelectedOptionRecords[0] ?? [null];\n\n // This is true if the user keys through the list but clicks out of the menu\n // thus no close-menu event is fired by an item and we can't clean up in\n // handleCloseMenu.\n if (activeItem && activeItem !== selectedItem) {\n activeItem.active = false;\n }\n\n if (selectedItem) {\n selectedItem.active = true;\n selectedItem.focus();\n }\n }\n\n private handleClosing() {\n this.open = false;\n }\n\n /**\n * Determines the reason for closing, and updates the UI accordingly.\n */\n private handleCloseMenu(event: InstanceType<typeof DefaultCloseMenuEvent>) {\n const reason = event.reason;\n const item = event.itemPath[0] as SelectOption;\n this.open = false;\n let hasChanged = false;\n\n if (reason.kind === 'CLICK_SELECTION') {\n hasChanged = this.selectItem(item);\n } else if (reason.kind === 'KEYDOWN' && isSelectableKey(reason.key)) {\n hasChanged = this.selectItem(item);\n } else {\n // This can happen on ESC being pressed\n item.active = false;\n item.blur();\n }\n\n // Dispatch interaction events since selection has been made via keyboard\n // or mouse.\n if (hasChanged) {\n this.dispatchInteractionEvents();\n }\n }\n\n /**\n * Selects a given option, deselects other options, and updates the UI.\n *\n * @return Whether the last selected option has changed.\n */\n private selectItem(item: SelectOption) {\n this.lastSelectedOptionRecords.forEach(([option]) => {\n if (item !== option) {\n option.selected = false;\n }\n });\n item.selected = true;\n\n return this.updateValueAndDisplayText();\n }\n\n /**\n * Handles updating selection when an option element requests selection via\n * property / attribute change.\n */\n private handleRequestSelection(event: RequestSelectionEvent) {\n const requestingOptionEl = event.target as SelectOption & HTMLElement;\n\n // No-op if this item is already selected.\n if (this.lastSelectedOptionRecords.some(\n ([option]) => option === requestingOptionEl)) {\n return;\n }\n\n this.selectItem(requestingOptionEl);\n }\n\n /**\n * Handles updating selection when an option element requests deselection via\n * property / attribute change.\n */\n private handleRequestDeselection(event: RequestDeselectionEvent) {\n const requestingOptionEl = event.target as SelectOption & HTMLElement;\n\n // No-op if this item is not even in the list of tracked selected items.\n if (!this.lastSelectedOptionRecords.some(\n ([option]) => option === requestingOptionEl)) {\n return;\n }\n\n this.updateValueAndDisplayText();\n }\n\n /**\n * Selects an option given the value of the option, and updates MdSelect's\n * value.\n */\n select(value: string) {\n const optionToSelect = this.options.find(option => option.value === value);\n if (optionToSelect) {\n this.selectItem(optionToSelect);\n }\n }\n\n /**\n * Selects an option given the index of the option, and updates MdSelect's\n * value.\n */\n selectIndex(index: number) {\n const optionToSelect = this.options[index];\n if (optionToSelect) {\n this.selectItem(optionToSelect);\n }\n }\n\n /**\n * Attempts to initialize the selected option from user-settable values like\n * SSR, setting `value`, or `selectedIndex` at startup.\n */\n private initUserSelection() {\n // User has set `.value` directly, but internals have not yet booted up.\n if (this.lastUserSetValue && !this.lastSelectedOptionRecords.length) {\n this.select(this.lastUserSetValue);\n\n // User has set `.selectedIndex` directly, but internals have not yet\n // booted up.\n } else if (\n this.lastUserSetSelectedIndex !== null &&\n !this.lastSelectedOptionRecords.length) {\n this.selectIndex(this.lastUserSetSelectedIndex);\n\n // Regular boot up!\n } else {\n this.updateValueAndDisplayText();\n }\n }\n\n private handleIconChange() {\n this.hasLeadingIcon = this.leadingIcons.length > 0;\n this.hasTrailingIcon = this.trailingIcons.length > 0;\n }\n\n /**\n * Dispatches the `input` and `change` events.\n */\n private dispatchInteractionEvents() {\n this.dispatchEvent(new Event('input', {bubbles: true, composed: true}));\n this.dispatchEvent(new Event('change', {bubbles: true}));\n }\n}\n"]}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Copyright 2022 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import { ListItemHarness } from '../../../list/
|
|
6
|
+
import { ListItemHarness } from '../../../list/internal/listitem/harness.js';
|
|
7
7
|
/**
|
|
8
8
|
* Test harness for menu item.
|
|
9
9
|
*/
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Copyright 2022 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import { ListItemHarness } from '../../../list/
|
|
6
|
+
import { ListItemHarness } from '../../../list/internal/listitem/harness.js';
|
|
7
7
|
/**
|
|
8
8
|
* Test harness for menu item.
|
|
9
9
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness.js","sourceRoot":"","sources":["harness.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAC,eAAe,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"harness.js","sourceRoot":"","sources":["harness.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAC,eAAe,EAAC,MAAM,4CAA4C,CAAC;AAE3E;;GAEG;AACH,MAAM,OAAO,mBAAoB,SAAQ,eAAe;CAAG","sourcesContent":["/**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {ListItemHarness} from '../../../list/internal/listitem/harness.js';\n\n/**\n * Test harness for menu item.\n */\nexport class SelectOptionHarness extends ListItemHarness {}\n"]}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { PropertyValues } from 'lit';
|
|
7
|
-
import { ListItemRole, MenuItemEl } from '../../../menu/
|
|
7
|
+
import { ListItemRole, MenuItemEl } from '../../../menu/internal/menuitem/menu-item.js';
|
|
8
8
|
import { SelectOption } from '../shared.js';
|
|
9
9
|
/**
|
|
10
10
|
* @fires close-menu {CloseMenuEvent} Closes the encapsulating menu on
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { __decorate } from "tslib";
|
|
7
7
|
import { property } from 'lit/decorators.js';
|
|
8
|
-
import { MenuItemEl } from '../../../menu/
|
|
8
|
+
import { MenuItemEl } from '../../../menu/internal/menuitem/menu-item.js';
|
|
9
9
|
import { RequestDeselectionEvent, RequestSelectionEvent } from '../shared.js';
|
|
10
10
|
/**
|
|
11
11
|
* @fires close-menu {CloseMenuEvent} Closes the encapsulating menu on
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select-option.js","sourceRoot":"","sources":["select-option.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAGH,OAAO,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EAAe,UAAU,EAAC,MAAM,8CAA8C,CAAC;AACtF,OAAO,EAAC,uBAAuB,EAAE,qBAAqB,EAAe,MAAM,cAAc,CAAC;AAE1F;;;;;;;GAOG;AACH,MAAM,OAAO,cAAe,SAAQ,UAAU;IAA9C;;QACE;;WAEG;QACS,UAAK,GAAG,EAAE,CAAC;QAEvB;;WAEG;QACuC,aAAQ,GAAG,KAAK,CAAC;QAEzC,SAAI,GAAiB,QAAQ,CAAC;IAqClD,CAAC;IAnCU,UAAU,CAAC,OAA6B;QAC/C,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;YAC3B,sEAAsE;YACtE,qEAAqE;YACrE,gCAAgC;YAChC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC5B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;YACrD,wEAAwE;YACxE,uEAAuE;YACvE,kEAAkE;YAClE,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;SAChC;QAED,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IAEQ,OAAO,CAAC,OAA6B;QAC5C,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,+DAA+D;QAC/D,wCAAwC;QACxC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAE9B,mDAAmD;QACnD,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,SAAS,EAAE;YACpE,uEAAuE;YACvE,qEAAqE;YACrE,0DAA0D;YAC1D,6BAA6B;YAC7B,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,IAAI,CAAC,aAAa,CAAC,IAAI,qBAAqB,EAAE,CAAC,CAAC;aACjD;iBAAM;gBACL,IAAI,CAAC,aAAa,CAAC,IAAI,uBAAuB,EAAE,CAAC,CAAC;aACnD;SACF;IACH,CAAC;CACF;AA5Ca;IAAX,QAAQ,EAAE;6CAAY;AAKmB;IAAzC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;gDAAkB","sourcesContent":["/**\n * @license\n * Copyright 2023 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {PropertyValues} from 'lit';\nimport {property} from 'lit/decorators.js';\n\nimport {ListItemRole, MenuItemEl} from '../../../menu/internal/menuitem/menu-item.js';\nimport {RequestDeselectionEvent, RequestSelectionEvent, SelectOption} from '../shared.js';\n\n/**\n * @fires close-menu {CloseMenuEvent} Closes the encapsulating menu on\n * @fires request-selection {RequestSelectionEvent} Requests the parent\n * md-select to select this element (and deselect others if single-selection)\n * when `selected` changed to `true`.\n * @fires request-deselection {RequestDeselectionEvent} Requests the parent\n * md-select to deselect this element when `selected` changed to `false`.\n */\nexport class SelectOptionEl extends MenuItemEl implements SelectOption {\n /**\n * Form value of the option.\n */\n @property() value = '';\n\n /**\n * Whether or not this option is selected.\n */\n @property({type: Boolean, reflect: true}) selected = false;\n\n override readonly type: ListItemRole = 'option';\n\n override willUpdate(changed: PropertyValues<this>) {\n if (changed.has('selected')) {\n // Synchronize selected -> active but not the other way around because\n // active is used for keyboard navigation and doesn't mean the option\n // should be selected if active.\n this.active = this.selected;\n this.ariaSelected = this.selected ? 'true' : 'false';\n // By default active = true focuses the element. We want to prevent that\n // in this case because we set active = this.selected and that may mess\n // around with menu's restore focus function once the menu closes.\n this.focusOnActivation = false;\n }\n\n super.willUpdate(changed);\n }\n\n override updated(changed: PropertyValues<this>) {\n super.updated(changed);\n // Restore the active = true focusing behavior which happens in\n // super.updated() if it was turned off.\n this.focusOnActivation = true;\n\n // Do not dispatch event on first update / boot-up.\n if (changed.has('selected') && changed.get('selected') !== undefined) {\n // This section is really useful for when the user sets selected on the\n // option programmatically. Most other cases (click and keyboard) are\n // handled by md-select because it needs to coordinate the\n // single-selection behavior.\n if (this.selected) {\n this.dispatchEvent(new RequestSelectionEvent());\n } else {\n this.dispatchEvent(new RequestDeselectionEvent());\n }\n }\n }\n}\n"]}
|
|
@@ -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{color:unset;min-width:210px}.field{cursor:default;outline:none}.select{position:relative}.field,.select,md-menu{min-width:inherit;width:inherit;max-width:inherit}.field,.select{width:100%}:host{display:inline-flex}
|
|
7
|
+
export const styles = css `:host{color:unset;min-width:210px}.field{cursor:default;outline:none}.select{position:relative}.field,.select,md-menu{min-width:inherit;width:inherit;max-width:inherit}.field,.select{width:100%}:host{display:inline-flex}:host([disabled]){pointer-events:none}/*# sourceMappingURL=shared-styles.css.map */
|
|
8
8
|
`;
|
|
9
9
|
//# sourceMappingURL=shared-styles.css.js.map
|