mtrl 0.10.0-next.2 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +130 -88
- package/dist/README.md +130 -88
- package/dist/components/badge/features.js +1 -1
- package/dist/components/bottom-sheet/api.d.ts +4 -3
- package/dist/components/bottom-sheet/config.js +11 -4
- package/dist/components/bottom-sheet/constants.d.ts +0 -2
- package/dist/components/bottom-sheet/constants.js +0 -1
- package/dist/components/bottom-sheet/features/drag.d.ts +3 -0
- package/dist/components/bottom-sheet/features/drag.js +23 -0
- package/dist/components/bottom-sheet/features/state.js +58 -2
- package/dist/components/bottom-sheet/features/structure.js +9 -4
- package/dist/components/bottom-sheet/types.d.ts +15 -2
- package/dist/components/button/features/progress.js +5 -3
- package/dist/components/button-group/button-group.js +3 -1
- package/dist/components/button-group/config.d.ts +8 -8
- package/dist/components/button-group/config.js +3 -2
- package/dist/components/button-group/constants.d.ts +7 -2
- package/dist/components/button-group/constants.js +5 -5
- package/dist/components/button-group/types.d.ts +5 -0
- package/dist/components/card/api.d.ts +4 -0
- package/dist/components/card/api.js +8 -0
- package/dist/components/card/card.js +1 -2
- package/dist/components/card/config.js +2 -14
- package/dist/components/card/content.js +1 -6
- package/dist/components/card/features.d.ts +5 -19
- package/dist/components/card/features.js +1 -11
- package/dist/components/card/index.d.ts +1 -1
- package/dist/components/card/types.d.ts +34 -3
- package/dist/components/carousel/features/scroll.js +7 -3
- package/dist/components/checkbox/config.js +18 -6
- package/dist/components/chips/api.js +1 -1
- package/dist/components/chips/config.js +1 -1
- package/dist/components/chips/features/controller.js +14 -7
- package/dist/components/chips/index.d.ts +1 -1
- package/dist/components/chips/types.d.ts +24 -5
- package/dist/components/datepicker/datepicker.d.ts +8 -2
- package/dist/components/datepicker/datepicker.js +71 -30
- package/dist/components/datepicker/index.d.ts +1 -1
- package/dist/components/datepicker/types.d.ts +63 -30
- package/dist/components/datepicker/utils.d.ts +5 -0
- package/dist/components/datepicker/utils.js +2 -0
- package/dist/components/dialog/api.js +5 -0
- package/dist/components/dialog/config.js +8 -2
- package/dist/components/dialog/features.js +94 -26
- package/dist/components/dialog/types.d.ts +15 -2
- package/dist/components/divider/features.js +3 -2
- package/dist/components/drawer/config.js +9 -2
- package/dist/components/drawer/features/items.js +3 -1
- package/dist/components/drawer/features/state.js +50 -9
- package/dist/components/drawer/types.d.ts +18 -0
- package/dist/components/extended-fab/api.d.ts +2 -0
- package/dist/components/extended-fab/api.js +2 -0
- package/dist/components/extended-fab/types.d.ts +6 -2
- package/dist/components/fab-menu/config.d.ts +11 -0
- package/dist/components/fab-menu/config.js +15 -0
- package/dist/components/fab-menu/constants.d.ts +59 -0
- package/dist/components/fab-menu/constants.js +30 -0
- package/dist/components/fab-menu/fab-menu.d.ts +40 -0
- package/dist/components/fab-menu/fab-menu.js +315 -0
- package/dist/components/fab-menu/index.d.ts +6 -0
- package/dist/components/fab-menu/index.js +4 -0
- package/dist/components/fab-menu/stagger.d.ts +10 -0
- package/dist/components/fab-menu/stagger.js +24 -0
- package/dist/components/fab-menu/types.d.ts +110 -0
- package/dist/components/fab-menu/types.js +1 -0
- package/dist/components/icon-button/features/toggle.d.ts +1 -0
- package/dist/components/icon-button/features/toggle.js +1 -0
- package/dist/components/icon-button/icon-button.d.ts +2 -2
- package/dist/components/icon-button/index.d.ts +2 -2
- package/dist/components/icon-button/types.d.ts +9 -2
- package/dist/components/index.d.ts +4 -0
- package/dist/components/index.js +2 -0
- package/dist/components/list/api.d.ts +2 -2
- package/dist/components/list/features/renderer.js +2 -1
- package/dist/components/list/features/selection.js +1 -1
- package/dist/components/list/types.d.ts +5 -0
- package/dist/components/menu/config.js +6 -1
- package/dist/components/menu/features/controller.d.ts +2 -0
- package/dist/components/menu/features/controller.js +58 -41
- package/dist/components/menu/features/index.d.ts +1 -2
- package/dist/components/menu/features/index.js +1 -2
- package/dist/components/menu/features/keyboard.js +3 -2
- package/dist/components/menu/features/layer.d.ts +15 -0
- package/dist/components/menu/features/layer.js +16 -0
- package/dist/components/menu/features/loader.d.ts +35 -0
- package/dist/components/menu/features/loader.js +64 -0
- package/dist/components/menu/features/opener.js +2 -1
- package/dist/components/menu/features/position.js +40 -38
- package/dist/components/menu/features/submenu.js +12 -4
- package/dist/components/menu/menu.js +2 -2
- package/dist/components/menu/types.d.ts +22 -2
- package/dist/components/navigation-rail/navigation-rail.js +5 -4
- package/dist/components/navigation-rail/types.d.ts +2 -0
- package/dist/components/progress/api.d.ts +4 -0
- package/dist/components/progress/api.js +17 -10
- package/dist/components/progress/config.js +3 -11
- package/dist/components/progress/features/canvas.d.ts +1 -0
- package/dist/components/progress/features/canvas.js +1 -1
- package/dist/components/progress/features/circular.js +7 -1
- package/dist/components/progress/features/state.js +5 -3
- package/dist/components/progress/index.d.ts +1 -1
- package/dist/components/progress/types.d.ts +21 -12
- package/dist/components/radios/radio.js +1 -3
- package/dist/components/search/api.d.ts +10 -2
- package/dist/components/search/api.js +18 -10
- package/dist/components/search/config.d.ts +19 -3
- package/dist/components/search/config.js +11 -2
- package/dist/components/search/constants.d.ts +11 -0
- package/dist/components/search/constants.js +9 -0
- package/dist/components/search/features/input.js +12 -3
- package/dist/components/search/features/states.d.ts +4 -2
- package/dist/components/search/features/states.js +98 -16
- package/dist/components/search/features/structure.d.ts +7 -20
- package/dist/components/search/features/structure.js +79 -29
- package/dist/components/search/features/suggestions.d.ts +2 -1
- package/dist/components/search/features/suggestions.js +22 -6
- package/dist/components/search/index.d.ts +1 -1
- package/dist/components/search/types.d.ts +25 -2
- package/dist/components/segmented-button/config.d.ts +1 -1
- package/dist/components/segmented-button/segmented-button.js +1 -43
- package/dist/components/segmented-button/types.d.ts +3 -3
- package/dist/components/select/features.js +8 -18
- package/dist/components/select/types.d.ts +7 -0
- package/dist/components/side-sheet/api.d.ts +4 -3
- package/dist/components/side-sheet/config.js +11 -3
- package/dist/components/side-sheet/features/state.js +57 -2
- package/dist/components/side-sheet/features/structure.js +1 -1
- package/dist/components/side-sheet/types.d.ts +12 -0
- package/dist/components/slider/api.js +2 -2
- package/dist/components/slider/features/controller.d.ts +14 -14
- package/dist/components/slider/features/controller.js +2 -2
- package/dist/components/slider/features/handlers.js +2 -1
- package/dist/components/slider/features/tracks.d.ts +0 -9
- package/dist/components/slider/features/tracks.js +3 -1
- package/dist/components/slider/types.d.ts +2 -2
- package/dist/components/snackbar/api.js +28 -4
- package/dist/components/snackbar/config.d.ts +1 -0
- package/dist/components/snackbar/config.js +8 -1
- package/dist/components/snackbar/layer.d.ts +23 -0
- package/dist/components/snackbar/layer.js +85 -0
- package/dist/components/snackbar/types.d.ts +12 -0
- package/dist/components/split-button/api.js +2 -1
- package/dist/components/split-button/features/menu.js +1 -0
- package/dist/components/split-button/types.d.ts +8 -0
- package/dist/components/switch/api.js +7 -0
- package/dist/components/switch/features.d.ts +4 -0
- package/dist/components/switch/features.js +9 -2
- package/dist/components/switch/types.d.ts +6 -0
- package/dist/components/tabs/api.js +0 -9
- package/dist/components/tabs/types.d.ts +1 -1
- package/dist/components/textfield/api.d.ts +1 -0
- package/dist/components/textfield/api.js +4 -1
- package/dist/components/textfield/constants.d.ts +5 -1
- package/dist/components/textfield/features/counter.d.ts +29 -0
- package/dist/components/textfield/features/counter.js +54 -0
- package/dist/components/textfield/features/field.d.ts +37 -0
- package/dist/components/textfield/features/field.js +39 -0
- package/dist/components/textfield/features/index.d.ts +4 -0
- package/dist/components/textfield/features/index.js +2 -0
- package/dist/components/textfield/features/leading-icon.js +2 -1
- package/dist/components/textfield/features/placement.js +65 -60
- package/dist/components/textfield/features/prefix-text.js +2 -1
- package/dist/components/textfield/features/suffix-text.js +2 -1
- package/dist/components/textfield/features/supporting-text.js +16 -33
- package/dist/components/textfield/features/trailing-icon.js +2 -1
- package/dist/components/textfield/textfield.js +2 -2
- package/dist/components/textfield/types.d.ts +7 -0
- package/dist/components/timepicker/api.js +67 -20
- package/dist/components/timepicker/config.d.ts +3 -1085
- package/dist/components/timepicker/config.js +3 -35
- package/dist/components/timepicker/constants.d.ts +21 -11
- package/dist/components/timepicker/constants.js +4 -3
- package/dist/components/timepicker/dial.d.ts +8 -3
- package/dist/components/timepicker/dial.js +8 -2
- package/dist/components/timepicker/index.d.ts +2 -1
- package/dist/components/timepicker/render.js +91 -103
- package/dist/components/timepicker/timepicker.js +2 -2
- package/dist/components/timepicker/types.d.ts +61 -18
- package/dist/components/timepicker/utils.d.ts +20 -53
- package/dist/components/timepicker/utils.js +36 -86
- package/dist/components/toolbar/config.d.ts +19 -0
- package/dist/components/toolbar/config.js +46 -0
- package/dist/components/toolbar/constants.d.ts +66 -0
- package/dist/components/toolbar/constants.js +32 -0
- package/dist/components/toolbar/index.d.ts +6 -0
- package/dist/components/toolbar/index.js +4 -0
- package/dist/components/toolbar/toolbar.d.ts +29 -0
- package/dist/components/toolbar/toolbar.js +204 -0
- package/dist/components/toolbar/types.d.ts +152 -0
- package/dist/components/toolbar/types.js +1 -0
- package/dist/components/tooltip/api.js +34 -3
- package/dist/components/tooltip/config.js +8 -1
- package/dist/components/tooltip/types.d.ts +15 -2
- package/dist/core/compose/features/checkable.d.ts +3 -6
- package/dist/core/compose/features/checkable.js +4 -20
- package/dist/core/compose/features/disabled.js +14 -14
- package/dist/core/compose/features/events.d.ts +16 -4
- package/dist/core/compose/features/input.js +1 -4
- package/dist/core/compose/features/textinput.js +18 -18
- package/dist/core/compose/features/textlabel.js +6 -7
- package/dist/core/dom/focus.d.ts +36 -0
- package/dist/core/dom/focus.js +47 -0
- package/dist/core/dom/index.d.ts +5 -0
- package/dist/core/dom/index.js +3 -0
- package/dist/core/dom/layer.d.ts +66 -0
- package/dist/core/dom/layer.js +78 -0
- package/dist/core/dom/roving.d.ts +30 -0
- package/dist/core/dom/roving.js +75 -0
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.js +1 -0
- package/dist/core/state/emitter.d.ts +8 -2
- package/dist/core/state/events.d.ts +4 -3
- package/dist/core/theme/index.d.ts +7 -0
- package/dist/core/theme/index.js +2 -0
- package/dist/core/theme/shape.d.ts +9 -0
- package/dist/core/theme/shape.js +1 -0
- package/dist/core/theme/tokens.d.ts +45 -0
- package/dist/core/theme/tokens.js +36 -0
- package/dist/core/utils/theme.d.ts +7 -2
- package/dist/core/utils/theme.js +21 -23
- package/dist/core/utils/warn.d.ts +8 -0
- package/dist/core/utils/warn.js +5 -0
- package/dist/elements/adapter.d.ts +3 -0
- package/dist/elements/adapter.js +3 -0
- package/dist/elements/badge.d.ts +8 -0
- package/dist/elements/bottom-app-bar.d.ts +55 -0
- package/dist/elements/bottom-app-bar.js +43 -0
- package/dist/elements/bottom-sheet.d.ts +130 -0
- package/dist/elements/bottom-sheet.js +96 -0
- package/dist/elements/button-group.d.ts +162 -0
- package/dist/elements/button-group.js +174 -0
- package/dist/elements/button.d.ts +8 -0
- package/dist/elements/card.d.ts +77 -0
- package/dist/elements/card.js +113 -0
- package/dist/elements/carousel.d.ts +132 -0
- package/dist/elements/carousel.js +117 -0
- package/dist/elements/checkbox.d.ts +8 -0
- package/dist/elements/chips.d.ts +146 -0
- package/dist/elements/chips.js +212 -0
- package/dist/elements/css/badge.js +3 -2
- package/dist/elements/css/bottom-app-bar.d.ts +1 -0
- package/dist/elements/css/bottom-app-bar.js +4 -0
- package/dist/elements/css/bottom-sheet.d.ts +1 -0
- package/dist/elements/css/bottom-sheet.js +4 -0
- package/dist/elements/css/button-group.d.ts +1 -0
- package/dist/elements/css/button-group.js +6 -0
- package/dist/elements/css/button.js +3 -2
- package/dist/elements/css/card.d.ts +1 -0
- package/dist/elements/css/card.js +5 -0
- package/dist/elements/css/carousel.d.ts +1 -0
- package/dist/elements/css/carousel.js +4 -0
- package/dist/elements/css/checkbox.js +3 -2
- package/dist/elements/css/chips.d.ts +1 -0
- package/dist/elements/css/chips.js +4 -0
- package/dist/elements/css/datepicker.d.ts +1 -0
- package/dist/elements/css/datepicker.js +4 -0
- package/dist/elements/css/dialog.d.ts +1 -0
- package/dist/elements/css/dialog.js +6 -0
- package/dist/elements/css/divider.js +2 -1
- package/dist/elements/css/drawer.d.ts +1 -0
- package/dist/elements/css/drawer.js +4 -0
- package/dist/elements/css/extended-fab.js +3 -2
- package/dist/elements/css/fab-menu.d.ts +1 -0
- package/dist/elements/css/fab-menu.js +6 -0
- package/dist/elements/css/fab.js +3 -2
- package/dist/elements/css/icon-button.js +3 -2
- package/dist/elements/css/index.js +22 -0
- package/dist/elements/css/list.d.ts +1 -0
- package/dist/elements/css/list.js +4 -0
- package/dist/elements/css/loading-indicator.js +3 -2
- package/dist/elements/css/menu.d.ts +1 -0
- package/dist/elements/css/menu.js +4 -0
- package/dist/elements/css/navigation-rail.d.ts +1 -0
- package/dist/elements/css/navigation-rail.js +4 -0
- package/dist/elements/css/progress.js +3 -2
- package/dist/elements/css/radios.js +3 -2
- package/dist/elements/css/search.d.ts +1 -0
- package/dist/elements/css/search.js +4 -0
- package/dist/elements/css/select.d.ts +1 -0
- package/dist/elements/css/select.js +6 -0
- package/dist/elements/css/side-sheet.d.ts +1 -0
- package/dist/elements/css/side-sheet.js +4 -0
- package/dist/elements/css/slider.js +3 -2
- package/dist/elements/css/snackbar.d.ts +1 -0
- package/dist/elements/css/snackbar.js +6 -0
- package/dist/elements/css/split-button.d.ts +1 -0
- package/dist/elements/css/split-button.js +6 -0
- package/dist/elements/css/switch.js +3 -2
- package/dist/elements/css/tabs.js +3 -2
- package/dist/elements/css/textfield.js +3 -2
- package/dist/elements/css/timepicker.d.ts +1 -0
- package/dist/elements/css/timepicker.js +4 -0
- package/dist/elements/css/toolbar.d.ts +1 -0
- package/dist/elements/css/toolbar.js +6 -0
- package/dist/elements/css/tooltip.d.ts +1 -0
- package/dist/elements/css/tooltip.js +4 -0
- package/dist/elements/css/top-app-bar.d.ts +1 -0
- package/dist/elements/css/top-app-bar.js +4 -0
- package/dist/elements/datepicker.d.ts +163 -0
- package/dist/elements/datepicker.js +120 -0
- package/dist/elements/define.d.ts +37 -2
- package/dist/elements/define.js +105 -18
- package/dist/elements/dialog.d.ts +127 -0
- package/dist/elements/dialog.js +156 -0
- package/dist/elements/divider.d.ts +8 -0
- package/dist/elements/drawer.d.ts +147 -0
- package/dist/elements/drawer.js +136 -0
- package/dist/elements/extended-fab.d.ts +16 -0
- package/dist/elements/extended-fab.js +4 -0
- package/dist/elements/fab-menu.d.ts +112 -0
- package/dist/elements/fab-menu.js +68 -0
- package/dist/elements/fab.d.ts +8 -0
- package/dist/elements/icon-button.d.ts +17 -1
- package/dist/elements/icon-button.js +6 -4
- package/dist/elements/index.d.ts +327 -1
- package/dist/elements/index.js +98 -0
- package/dist/elements/list.d.ts +144 -0
- package/dist/elements/list.js +191 -0
- package/dist/elements/loading-indicator.d.ts +8 -0
- package/dist/elements/menu.d.ts +174 -0
- package/dist/elements/menu.js +178 -0
- package/dist/elements/navigation-rail.d.ts +164 -0
- package/dist/elements/navigation-rail.js +130 -0
- package/dist/elements/preupgrade.css +2 -0
- package/dist/elements/preupgrade.css.d.ts +1 -0
- package/dist/elements/preupgrade.d.ts +2 -0
- package/dist/elements/preupgrade.js +4 -0
- package/dist/elements/progress.d.ts +8 -0
- package/dist/elements/radios.d.ts +9 -0
- package/dist/elements/search.d.ts +225 -0
- package/dist/elements/search.js +215 -0
- package/dist/elements/select.d.ts +143 -0
- package/dist/elements/select.js +149 -0
- package/dist/elements/sheet.d.ts +44 -0
- package/dist/elements/sheet.js +60 -0
- package/dist/elements/side-sheet.d.ts +100 -0
- package/dist/elements/side-sheet.js +64 -0
- package/dist/elements/slider.d.ts +9 -0
- package/dist/elements/snackbar.d.ts +107 -0
- package/dist/elements/snackbar.js +54 -0
- package/dist/elements/split-button.d.ts +90 -0
- package/dist/elements/split-button.js +77 -0
- package/dist/elements/styles.d.ts +18 -0
- package/dist/elements/styles.js +41 -0
- package/dist/elements/switch.d.ts +10 -0
- package/dist/elements/switch.js +2 -2
- package/dist/elements/tabs.d.ts +9 -0
- package/dist/elements/textfield.d.ts +11 -1
- package/dist/elements/textfield.js +1 -6
- package/dist/elements/timepicker.d.ts +167 -0
- package/dist/elements/timepicker.js +159 -0
- package/dist/elements/toolbar.d.ts +103 -0
- package/dist/elements/toolbar.js +77 -0
- package/dist/elements/tooltip.d.ts +97 -0
- package/dist/elements/tooltip.js +132 -0
- package/dist/elements/top-app-bar.d.ts +72 -0
- package/dist/elements/top-app-bar.js +95 -0
- package/dist/index.cjs +0 -0
- package/dist/package.json +16 -2
- package/dist/react/badge.d.ts +4 -0
- package/dist/react/badge.js +7 -0
- package/dist/react/bottom-app-bar.d.ts +4 -0
- package/dist/react/bottom-app-bar.js +7 -0
- package/dist/react/bottom-sheet.d.ts +4 -0
- package/dist/react/bottom-sheet.js +7 -0
- package/dist/react/button-group-item.d.ts +3 -0
- package/dist/react/button-group-item.js +6 -0
- package/dist/react/button-group.d.ts +7 -0
- package/dist/react/button-group.js +10 -0
- package/dist/react/button.d.ts +5 -0
- package/dist/react/button.js +8 -0
- package/dist/react/card.d.ts +4 -0
- package/dist/react/card.js +7 -0
- package/dist/react/carousel-item.d.ts +3 -0
- package/dist/react/carousel-item.js +6 -0
- package/dist/react/carousel.d.ts +4 -0
- package/dist/react/carousel.js +7 -0
- package/dist/react/checkbox.d.ts +4 -0
- package/dist/react/checkbox.js +7 -0
- package/dist/react/chip.d.ts +3 -0
- package/dist/react/chip.js +6 -0
- package/dist/react/chips.d.ts +4 -0
- package/dist/react/chips.js +7 -0
- package/dist/react/create.d.ts +11 -2
- package/dist/react/create.js +12 -2
- package/dist/react/datepicker.d.ts +4 -0
- package/dist/react/datepicker.js +7 -0
- package/dist/react/dialog.d.ts +4 -0
- package/dist/react/dialog.js +7 -0
- package/dist/react/divider.d.ts +4 -0
- package/dist/react/divider.js +7 -0
- package/dist/react/drawer-item.d.ts +3 -0
- package/dist/react/drawer-item.js +6 -0
- package/dist/react/drawer.d.ts +4 -0
- package/dist/react/drawer.js +7 -0
- package/dist/react/extended-fab.d.ts +4 -0
- package/dist/react/extended-fab.js +7 -0
- package/dist/react/fab-menu-item.d.ts +3 -0
- package/dist/react/fab-menu-item.js +6 -0
- package/dist/react/fab-menu.d.ts +6 -0
- package/dist/react/fab-menu.js +9 -0
- package/dist/react/fab.d.ts +4 -0
- package/dist/react/fab.js +7 -0
- package/dist/react/icon-button.d.ts +4 -0
- package/dist/react/icon-button.js +7 -0
- package/dist/react/index.d.ts +48 -32
- package/dist/react/index.js +48 -32
- package/dist/react/jsx.d.ts +74 -0
- package/dist/react/jsx.js +2 -0
- package/dist/react/list-item.d.ts +3 -0
- package/dist/react/list-item.js +6 -0
- package/dist/react/list.d.ts +4 -0
- package/dist/react/list.js +7 -0
- package/dist/react/loading-indicator.d.ts +4 -0
- package/dist/react/loading-indicator.js +7 -0
- package/dist/react/menu-item.d.ts +3 -0
- package/dist/react/menu-item.js +6 -0
- package/dist/react/menu.d.ts +4 -0
- package/dist/react/menu.js +7 -0
- package/dist/react/navigation-rail-item.d.ts +3 -0
- package/dist/react/navigation-rail-item.js +6 -0
- package/dist/react/navigation-rail.d.ts +4 -0
- package/dist/react/navigation-rail.js +7 -0
- package/dist/react/progress.d.ts +4 -0
- package/dist/react/progress.js +7 -0
- package/dist/react/radio.d.ts +3 -0
- package/dist/react/radio.js +6 -0
- package/dist/react/radios.d.ts +4 -0
- package/dist/react/radios.js +7 -0
- package/dist/react/search-suggestion.d.ts +3 -0
- package/dist/react/search-suggestion.js +6 -0
- package/dist/react/search.d.ts +4 -0
- package/dist/react/search.js +7 -0
- package/dist/react/select-option.d.ts +3 -0
- package/dist/react/select-option.js +6 -0
- package/dist/react/select.d.ts +6 -0
- package/dist/react/select.js +9 -0
- package/dist/react/side-sheet.d.ts +4 -0
- package/dist/react/side-sheet.js +7 -0
- package/dist/react/slider.d.ts +4 -0
- package/dist/react/slider.js +7 -0
- package/dist/react/snackbar.d.ts +7 -0
- package/dist/react/snackbar.js +10 -0
- package/dist/react/split-button.d.ts +7 -0
- package/dist/react/split-button.js +10 -0
- package/dist/react/switch.d.ts +4 -0
- package/dist/react/switch.js +7 -0
- package/dist/react/tab.d.ts +3 -0
- package/dist/react/tab.js +6 -0
- package/dist/react/tabs.d.ts +7 -0
- package/dist/react/tabs.js +10 -0
- package/dist/react/textfield.d.ts +4 -0
- package/dist/react/textfield.js +7 -0
- package/dist/react/timepicker.d.ts +4 -0
- package/dist/react/timepicker.js +7 -0
- package/dist/react/toolbar.d.ts +5 -0
- package/dist/react/toolbar.js +8 -0
- package/dist/react/tooltip.d.ts +4 -0
- package/dist/react/tooltip.js +7 -0
- package/dist/react/top-app-bar.d.ts +4 -0
- package/dist/react/top-app-bar.js +7 -0
- package/dist/solid/badge.d.ts +4 -0
- package/dist/solid/badge.js +6 -0
- package/dist/solid/bottom-app-bar.d.ts +4 -0
- package/dist/solid/bottom-app-bar.js +6 -0
- package/dist/solid/bottom-sheet.d.ts +4 -0
- package/dist/solid/bottom-sheet.js +6 -0
- package/dist/solid/button-group-item.d.ts +3 -0
- package/dist/solid/button-group-item.js +5 -0
- package/dist/solid/button-group.d.ts +7 -0
- package/dist/solid/button-group.js +9 -0
- package/dist/solid/button.d.ts +5 -0
- package/dist/solid/button.js +7 -0
- package/dist/solid/card.d.ts +4 -0
- package/dist/solid/card.js +6 -0
- package/dist/solid/carousel-item.d.ts +3 -0
- package/dist/solid/carousel-item.js +5 -0
- package/dist/solid/carousel.d.ts +4 -0
- package/dist/solid/carousel.js +6 -0
- package/dist/solid/checkbox.d.ts +4 -0
- package/dist/solid/checkbox.js +6 -0
- package/dist/solid/chip.d.ts +3 -0
- package/dist/solid/chip.js +5 -0
- package/dist/solid/chips.d.ts +4 -0
- package/dist/solid/chips.js +6 -0
- package/dist/solid/create.d.ts +11 -2
- package/dist/solid/create.js +22 -4
- package/dist/solid/datepicker.d.ts +4 -0
- package/dist/solid/datepicker.js +6 -0
- package/dist/solid/dialog.d.ts +4 -0
- package/dist/solid/dialog.js +6 -0
- package/dist/solid/divider.d.ts +4 -0
- package/dist/solid/divider.js +6 -0
- package/dist/solid/drawer-item.d.ts +3 -0
- package/dist/solid/drawer-item.js +5 -0
- package/dist/solid/drawer.d.ts +4 -0
- package/dist/solid/drawer.js +6 -0
- package/dist/solid/extended-fab.d.ts +4 -0
- package/dist/solid/extended-fab.js +6 -0
- package/dist/solid/fab-menu-item.d.ts +3 -0
- package/dist/solid/fab-menu-item.js +5 -0
- package/dist/solid/fab-menu.d.ts +6 -0
- package/dist/solid/fab-menu.js +8 -0
- package/dist/solid/fab.d.ts +4 -0
- package/dist/solid/fab.js +6 -0
- package/dist/solid/icon-button.d.ts +4 -0
- package/dist/solid/icon-button.js +6 -0
- package/dist/solid/index.d.ts +48 -32
- package/dist/solid/index.js +48 -32
- package/dist/solid/jsx.d.ts +96 -0
- package/dist/solid/jsx.js +1 -0
- package/dist/solid/list-item.d.ts +3 -0
- package/dist/solid/list-item.js +5 -0
- package/dist/solid/list.d.ts +4 -0
- package/dist/solid/list.js +6 -0
- package/dist/solid/loading-indicator.d.ts +4 -0
- package/dist/solid/loading-indicator.js +6 -0
- package/dist/solid/menu-item.d.ts +3 -0
- package/dist/solid/menu-item.js +5 -0
- package/dist/solid/menu.d.ts +4 -0
- package/dist/solid/menu.js +6 -0
- package/dist/solid/navigation-rail-item.d.ts +3 -0
- package/dist/solid/navigation-rail-item.js +5 -0
- package/dist/solid/navigation-rail.d.ts +4 -0
- package/dist/solid/navigation-rail.js +6 -0
- package/dist/solid/progress.d.ts +4 -0
- package/dist/solid/progress.js +6 -0
- package/dist/solid/radio.d.ts +3 -0
- package/dist/solid/radio.js +5 -0
- package/dist/solid/radios.d.ts +4 -0
- package/dist/solid/radios.js +6 -0
- package/dist/solid/search-suggestion.d.ts +3 -0
- package/dist/solid/search-suggestion.js +5 -0
- package/dist/solid/search.d.ts +4 -0
- package/dist/solid/search.js +6 -0
- package/dist/solid/select-option.d.ts +3 -0
- package/dist/solid/select-option.js +5 -0
- package/dist/solid/select.d.ts +6 -0
- package/dist/solid/select.js +8 -0
- package/dist/solid/side-sheet.d.ts +4 -0
- package/dist/solid/side-sheet.js +6 -0
- package/dist/solid/slider.d.ts +4 -0
- package/dist/solid/slider.js +6 -0
- package/dist/solid/snackbar.d.ts +7 -0
- package/dist/solid/snackbar.js +9 -0
- package/dist/solid/split-button.d.ts +7 -0
- package/dist/solid/split-button.js +9 -0
- package/dist/solid/switch.d.ts +4 -0
- package/dist/solid/switch.js +6 -0
- package/dist/solid/tab.d.ts +3 -0
- package/dist/solid/tab.js +5 -0
- package/dist/solid/tabs.d.ts +7 -0
- package/dist/solid/tabs.js +9 -0
- package/dist/solid/textfield.d.ts +4 -0
- package/dist/solid/textfield.js +6 -0
- package/dist/solid/timepicker.d.ts +4 -0
- package/dist/solid/timepicker.js +6 -0
- package/dist/solid/toolbar.d.ts +5 -0
- package/dist/solid/toolbar.js +7 -0
- package/dist/solid/tooltip.d.ts +4 -0
- package/dist/solid/tooltip.js +6 -0
- package/dist/solid/top-app-bar.d.ts +4 -0
- package/dist/solid/top-app-bar.js +6 -0
- package/dist/styles/badge.css +2 -2
- package/dist/styles/base.css +2 -2
- package/dist/styles/bottom-app-bar.css +2 -2
- package/dist/styles/bottom-sheet.css +2 -2
- package/dist/styles/button-group.css +2 -2
- package/dist/styles/button.css +2 -2
- package/dist/styles/card.css +2 -2
- package/dist/styles/carousel.css +2 -2
- package/dist/styles/checkbox.css +2 -2
- package/dist/styles/chips.css +2 -2
- package/dist/styles/datepicker.css +2 -2
- package/dist/styles/dialog.css +2 -2
- package/dist/styles/divider.css +2 -2
- package/dist/styles/drawer.css +2 -2
- package/dist/styles/extended-fab.css +2 -2
- package/dist/styles/fab-menu.css +2 -0
- package/dist/styles/fab-menu.d.ts +1 -0
- package/dist/styles/fab-menu.js +3 -0
- package/dist/styles/fab.css +2 -2
- package/dist/styles/icon-button.css +2 -2
- package/dist/styles/list.css +2 -2
- package/dist/styles/loading-indicator.css +2 -2
- package/dist/styles/menu.css +2 -2
- package/dist/styles/navigation-rail.css +2 -2
- package/dist/styles/progress.css +2 -2
- package/dist/styles/radios.css +2 -2
- package/dist/styles/search.css +2 -2
- package/dist/styles/segmented-button.css +2 -2
- package/dist/styles/select.css +2 -2
- package/dist/styles/side-sheet.css +2 -2
- package/dist/styles/slider.css +2 -2
- package/dist/styles/snackbar.css +2 -2
- package/dist/styles/split-button.css +2 -2
- package/dist/styles/switch.css +2 -2
- package/dist/styles/tabs.css +2 -2
- package/dist/styles/textfield.css +2 -2
- package/dist/styles/timepicker.css +2 -2
- package/dist/styles/toolbar.css +2 -0
- package/dist/styles/toolbar.d.ts +1 -0
- package/dist/styles/toolbar.js +3 -0
- package/dist/styles/tooltip.css +2 -2
- package/dist/styles/top-app-bar.css +2 -2
- package/dist/styles/utilities.css +2 -2
- package/dist/styles.css +2 -2
- package/dist/svelte/Badge.svelte +7 -2
- package/dist/svelte/Badge.svelte.d.ts +2 -2
- package/dist/svelte/BottomAppBar.svelte +24 -0
- package/dist/svelte/BottomAppBar.svelte.d.ts +5 -0
- package/dist/svelte/BottomSheet.svelte +24 -0
- package/dist/svelte/BottomSheet.svelte.d.ts +5 -0
- package/dist/svelte/Button.svelte +8 -2
- package/dist/svelte/Button.svelte.d.ts +2 -2
- package/dist/svelte/ButtonGroup.svelte +28 -0
- package/dist/svelte/ButtonGroup.svelte.d.ts +5 -0
- package/dist/svelte/ButtonGroupItem.svelte +11 -0
- package/dist/svelte/ButtonGroupItem.svelte.d.ts +5 -0
- package/dist/svelte/Card.svelte +24 -0
- package/dist/svelte/Card.svelte.d.ts +5 -0
- package/dist/svelte/Carousel.svelte +25 -0
- package/dist/svelte/Carousel.svelte.d.ts +5 -0
- package/dist/svelte/CarouselItem.svelte +11 -0
- package/dist/svelte/CarouselItem.svelte.d.ts +5 -0
- package/dist/svelte/Checkbox.svelte +7 -2
- package/dist/svelte/Checkbox.svelte.d.ts +2 -2
- package/dist/svelte/Chip.svelte +11 -0
- package/dist/svelte/Chip.svelte.d.ts +5 -0
- package/dist/svelte/Chips.svelte +25 -0
- package/dist/svelte/Chips.svelte.d.ts +5 -0
- package/dist/svelte/Datepicker.svelte +25 -0
- package/dist/svelte/Datepicker.svelte.d.ts +5 -0
- package/dist/svelte/Dialog.svelte +24 -0
- package/dist/svelte/Dialog.svelte.d.ts +5 -0
- package/dist/svelte/Divider.svelte +7 -2
- package/dist/svelte/Divider.svelte.d.ts +2 -2
- package/dist/svelte/Drawer.svelte +25 -0
- package/dist/svelte/Drawer.svelte.d.ts +5 -0
- package/dist/svelte/DrawerItem.svelte +11 -0
- package/dist/svelte/DrawerItem.svelte.d.ts +5 -0
- package/dist/svelte/ExtendedFab.svelte +7 -2
- package/dist/svelte/ExtendedFab.svelte.d.ts +2 -2
- package/dist/svelte/Fab.svelte +7 -2
- package/dist/svelte/Fab.svelte.d.ts +2 -2
- package/dist/svelte/FabMenu.svelte +26 -0
- package/dist/svelte/FabMenu.svelte.d.ts +5 -0
- package/dist/svelte/FabMenuItem.svelte +11 -0
- package/dist/svelte/FabMenuItem.svelte.d.ts +5 -0
- package/dist/svelte/IconButton.svelte +7 -2
- package/dist/svelte/IconButton.svelte.d.ts +2 -2
- package/dist/svelte/List.svelte +26 -0
- package/dist/svelte/List.svelte.d.ts +5 -0
- package/dist/svelte/ListItem.svelte +11 -0
- package/dist/svelte/ListItem.svelte.d.ts +5 -0
- package/dist/svelte/LoadingIndicator.svelte +7 -2
- package/dist/svelte/LoadingIndicator.svelte.d.ts +2 -2
- package/dist/svelte/Menu.svelte +25 -0
- package/dist/svelte/Menu.svelte.d.ts +5 -0
- package/dist/svelte/MenuItem.svelte +11 -0
- package/dist/svelte/MenuItem.svelte.d.ts +5 -0
- package/dist/svelte/NavigationRail.svelte +25 -0
- package/dist/svelte/NavigationRail.svelte.d.ts +5 -0
- package/dist/svelte/NavigationRailItem.svelte +11 -0
- package/dist/svelte/NavigationRailItem.svelte.d.ts +5 -0
- package/dist/svelte/Progress.svelte +7 -2
- package/dist/svelte/Progress.svelte.d.ts +2 -2
- package/dist/svelte/Radio.svelte +1 -1
- package/dist/svelte/Radios.svelte +7 -2
- package/dist/svelte/Radios.svelte.d.ts +2 -2
- package/dist/svelte/Search.svelte +25 -0
- package/dist/svelte/Search.svelte.d.ts +5 -0
- package/dist/svelte/SearchSuggestion.svelte +11 -0
- package/dist/svelte/SearchSuggestion.svelte.d.ts +5 -0
- package/dist/svelte/Select.svelte +27 -0
- package/dist/svelte/Select.svelte.d.ts +5 -0
- package/dist/svelte/SelectOption.svelte +11 -0
- package/dist/svelte/SelectOption.svelte.d.ts +5 -0
- package/dist/svelte/SideSheet.svelte +24 -0
- package/dist/svelte/SideSheet.svelte.d.ts +5 -0
- package/dist/svelte/Slider.svelte +7 -2
- package/dist/svelte/Slider.svelte.d.ts +2 -2
- package/dist/svelte/Snackbar.svelte +28 -0
- package/dist/svelte/Snackbar.svelte.d.ts +5 -0
- package/dist/svelte/SplitButton.svelte +27 -0
- package/dist/svelte/SplitButton.svelte.d.ts +5 -0
- package/dist/svelte/Switch.svelte +7 -2
- package/dist/svelte/Switch.svelte.d.ts +2 -2
- package/dist/svelte/Tab.svelte +1 -1
- package/dist/svelte/Tabs.svelte +10 -2
- package/dist/svelte/Tabs.svelte.d.ts +2 -2
- package/dist/svelte/Textfield.svelte +7 -2
- package/dist/svelte/Textfield.svelte.d.ts +2 -2
- package/dist/svelte/Timepicker.svelte +25 -0
- package/dist/svelte/Timepicker.svelte.d.ts +5 -0
- package/dist/svelte/Toolbar.svelte +25 -0
- package/dist/svelte/Toolbar.svelte.d.ts +5 -0
- package/dist/svelte/Tooltip.svelte +25 -0
- package/dist/svelte/Tooltip.svelte.d.ts +5 -0
- package/dist/svelte/TopAppBar.svelte +24 -0
- package/dist/svelte/TopAppBar.svelte.d.ts +5 -0
- package/dist/svelte/index.d.ts +32 -0
- package/dist/svelte/index.js +32 -14
- package/dist/svelte/runtime.d.ts +12 -2
- package/dist/svelte/runtime.js +11 -2
- package/dist/themes/autumn.css +2 -2
- package/dist/themes/baseline.css +2 -2
- package/dist/themes/brownbeige.css +2 -2
- package/dist/themes/browngreen.css +2 -2
- package/dist/themes/content.css +2 -0
- package/dist/themes/desert.css +2 -2
- package/dist/themes/expressive.css +2 -0
- package/dist/themes/fidelity.css +2 -0
- package/dist/themes/forest.css +2 -2
- package/dist/themes/fruit-salad.css +2 -0
- package/dist/themes/highcontrast.css +2 -2
- package/dist/themes/legacy.css +2 -2
- package/dist/themes/material.css +2 -2
- package/dist/themes/monochrome.css +2 -0
- package/dist/themes/neutral.css +2 -0
- package/dist/themes/ocean.css +2 -2
- package/dist/themes/rainbow.css +2 -0
- package/dist/themes/sageivory.css +2 -2
- package/dist/themes/spring.css +2 -2
- package/dist/themes/summer.css +2 -2
- package/dist/themes/sunset.css +2 -2
- package/dist/themes/tealcaramel.css +2 -2
- package/dist/themes/vibrant.css +2 -0
- package/dist/themes/winter.css +2 -2
- package/dist/vue/badge.d.ts +4 -0
- package/dist/vue/badge.js +6 -0
- package/dist/vue/bottom-app-bar.d.ts +4 -0
- package/dist/vue/bottom-app-bar.js +6 -0
- package/dist/vue/bottom-sheet.d.ts +4 -0
- package/dist/vue/bottom-sheet.js +6 -0
- package/dist/vue/button-group-item.d.ts +3 -0
- package/dist/vue/button-group-item.js +5 -0
- package/dist/vue/button-group.d.ts +7 -0
- package/dist/vue/button-group.js +9 -0
- package/dist/vue/button.d.ts +5 -0
- package/dist/vue/button.js +7 -0
- package/dist/vue/card.d.ts +4 -0
- package/dist/vue/card.js +6 -0
- package/dist/vue/carousel-item.d.ts +3 -0
- package/dist/vue/carousel-item.js +5 -0
- package/dist/vue/carousel.d.ts +4 -0
- package/dist/vue/carousel.js +6 -0
- package/dist/vue/checkbox.d.ts +4 -0
- package/dist/vue/checkbox.js +6 -0
- package/dist/vue/chip.d.ts +3 -0
- package/dist/vue/chip.js +5 -0
- package/dist/vue/chips.d.ts +4 -0
- package/dist/vue/chips.js +6 -0
- package/dist/vue/create.d.ts +9 -3
- package/dist/vue/create.js +15 -2
- package/dist/vue/datepicker.d.ts +4 -0
- package/dist/vue/datepicker.js +6 -0
- package/dist/vue/dialog.d.ts +4 -0
- package/dist/vue/dialog.js +6 -0
- package/dist/vue/divider.d.ts +4 -0
- package/dist/vue/divider.js +6 -0
- package/dist/vue/drawer-item.d.ts +3 -0
- package/dist/vue/drawer-item.js +5 -0
- package/dist/vue/drawer.d.ts +4 -0
- package/dist/vue/drawer.js +6 -0
- package/dist/vue/extended-fab.d.ts +4 -0
- package/dist/vue/extended-fab.js +6 -0
- package/dist/vue/fab-menu-item.d.ts +3 -0
- package/dist/vue/fab-menu-item.js +5 -0
- package/dist/vue/fab-menu.d.ts +6 -0
- package/dist/vue/fab-menu.js +8 -0
- package/dist/vue/fab.d.ts +4 -0
- package/dist/vue/fab.js +6 -0
- package/dist/vue/icon-button.d.ts +4 -0
- package/dist/vue/icon-button.js +6 -0
- package/dist/vue/index.d.ts +49 -33
- package/dist/vue/index.js +48 -32
- package/dist/vue/list-item.d.ts +3 -0
- package/dist/vue/list-item.js +5 -0
- package/dist/vue/list.d.ts +4 -0
- package/dist/vue/list.js +6 -0
- package/dist/vue/loading-indicator.d.ts +4 -0
- package/dist/vue/loading-indicator.js +6 -0
- package/dist/vue/menu-item.d.ts +3 -0
- package/dist/vue/menu-item.js +5 -0
- package/dist/vue/menu.d.ts +4 -0
- package/dist/vue/menu.js +6 -0
- package/dist/vue/navigation-rail-item.d.ts +3 -0
- package/dist/vue/navigation-rail-item.js +5 -0
- package/dist/vue/navigation-rail.d.ts +4 -0
- package/dist/vue/navigation-rail.js +6 -0
- package/dist/vue/progress.d.ts +4 -0
- package/dist/vue/progress.js +6 -0
- package/dist/vue/radio.d.ts +3 -0
- package/dist/vue/radio.js +5 -0
- package/dist/vue/radios.d.ts +4 -0
- package/dist/vue/radios.js +6 -0
- package/dist/vue/search-suggestion.d.ts +3 -0
- package/dist/vue/search-suggestion.js +5 -0
- package/dist/vue/search.d.ts +4 -0
- package/dist/vue/search.js +6 -0
- package/dist/vue/select-option.d.ts +3 -0
- package/dist/vue/select-option.js +5 -0
- package/dist/vue/select.d.ts +6 -0
- package/dist/vue/select.js +8 -0
- package/dist/vue/side-sheet.d.ts +4 -0
- package/dist/vue/side-sheet.js +6 -0
- package/dist/vue/slider.d.ts +4 -0
- package/dist/vue/slider.js +6 -0
- package/dist/vue/snackbar.d.ts +7 -0
- package/dist/vue/snackbar.js +9 -0
- package/dist/vue/split-button.d.ts +7 -0
- package/dist/vue/split-button.js +9 -0
- package/dist/vue/switch.d.ts +4 -0
- package/dist/vue/switch.js +6 -0
- package/dist/vue/tab.d.ts +3 -0
- package/dist/vue/tab.js +5 -0
- package/dist/vue/tabs.d.ts +7 -0
- package/dist/vue/tabs.js +9 -0
- package/dist/vue/textfield.d.ts +4 -0
- package/dist/vue/textfield.js +6 -0
- package/dist/vue/timepicker.d.ts +4 -0
- package/dist/vue/timepicker.js +6 -0
- package/dist/vue/toolbar.d.ts +5 -0
- package/dist/vue/toolbar.js +7 -0
- package/dist/vue/tooltip.d.ts +4 -0
- package/dist/vue/tooltip.js +6 -0
- package/dist/vue/top-app-bar.d.ts +4 -0
- package/dist/vue/top-app-bar.js +6 -0
- package/package.json +119 -20
- package/src/styles/abstract/_functions.scss +13 -1
- package/src/styles/abstract/_mixins.scss +16 -1
- package/src/styles/abstract/_theme.scss +4 -88
- package/src/styles/abstract/_variables.scss +20 -1
- package/src/styles/base/_tokens.scss +2 -13
- package/src/styles/base/_typography.scss +14 -70
- package/src/styles/components/_badge.scss +2 -2
- package/src/styles/components/_bottom-app-bar.scss +0 -4
- package/src/styles/components/_bottom-sheet.scss +68 -8
- package/src/styles/components/_button-group.scss +5 -2
- package/src/styles/components/_button.scss +29 -43
- package/src/styles/components/_card.scss +0 -2
- package/src/styles/components/_carousel.scss +2 -1
- package/src/styles/components/_datepicker.scss +4 -0
- package/src/styles/components/_dialog.scss +52 -0
- package/src/styles/components/_divider.scss +1 -1
- package/src/styles/components/_drawer.scss +53 -11
- package/src/styles/components/_fab-menu.scss +228 -0
- package/src/styles/components/_icon-button.scss +18 -14
- package/src/styles/components/_list.scss +3 -2
- package/src/styles/components/_menu.scss +22 -2
- package/src/styles/components/_navigation-rail.scss +5 -4
- package/src/styles/components/_search.scss +279 -273
- package/src/styles/components/_select.scss +9 -89
- package/src/styles/components/_side-sheet.scss +48 -4
- package/src/styles/components/_slider.scss +2 -2
- package/src/styles/components/_snackbar.scss +12 -0
- package/src/styles/components/_split-button.scss +5 -5
- package/src/styles/components/_switch.scss +1 -1
- package/src/styles/components/_textfield.scss +144 -93
- package/src/styles/components/_timepicker.scss +116 -139
- package/src/styles/components/_toolbar.scss +203 -0
- package/src/styles/components/_tooltip.scss +31 -12
- package/src/styles/elements/_badge.scss +12 -0
- package/src/styles/elements/_bottom-app-bar.scss +27 -0
- package/src/styles/elements/_bottom-sheet.scss +6 -0
- package/src/styles/elements/_button-group.scss +25 -0
- package/src/styles/elements/_button.scss +78 -0
- package/src/styles/elements/_card.scss +57 -0
- package/src/styles/elements/_carousel.scss +12 -0
- package/src/styles/elements/_checkbox.scss +38 -0
- package/src/styles/elements/_chips.scss +33 -0
- package/src/styles/elements/_config.scss +48 -0
- package/src/styles/elements/_datepicker.scss +31 -0
- package/src/styles/elements/_dialog.scss +6 -0
- package/src/styles/elements/_divider.scss +19 -0
- package/src/styles/elements/_drawer.scss +23 -0
- package/src/styles/elements/_extended-fab.scss +57 -0
- package/src/styles/elements/_fab-menu.scss +43 -0
- package/src/styles/elements/_fab.scss +33 -0
- package/src/styles/elements/_field.scss +111 -0
- package/src/styles/elements/_icon-button.scss +55 -0
- package/src/styles/elements/_index.scss +41 -0
- package/src/styles/elements/_list.scss +34 -0
- package/src/styles/elements/_loading-indicator.scss +13 -0
- package/src/styles/elements/_menu.scss +6 -0
- package/src/styles/elements/_navigation-rail.scss +24 -0
- package/src/styles/elements/_progress.scss +24 -0
- package/src/styles/elements/_radios.scss +23 -0
- package/src/styles/elements/_search.scss +36 -0
- package/src/styles/elements/_select.scss +15 -0
- package/src/styles/elements/_side-sheet.scss +6 -0
- package/src/styles/elements/_slider.scss +10 -0
- package/src/styles/elements/_snackbar.scss +6 -0
- package/src/styles/elements/_split-button.scss +53 -0
- package/src/styles/elements/_switch.scss +51 -0
- package/src/styles/elements/_tabs.scss +22 -0
- package/src/styles/elements/_textfield.scss +9 -0
- package/src/styles/elements/_timepicker.scss +6 -0
- package/src/styles/elements/_toolbar.scss +47 -0
- package/src/styles/elements/_tooltip.scss +6 -0
- package/src/styles/elements/_top-app-bar.scss +57 -0
- package/src/styles/main.scss +2 -0
- package/src/styles/themes/_autumn.scss +18 -17
- package/src/styles/themes/_base-theme.scss +29 -39
- package/src/styles/themes/_baseline.scss +58 -83
- package/src/styles/themes/_brownbeige.scss +95 -123
- package/src/styles/themes/_browngreen.scss +1 -49
- package/src/styles/themes/_content.scss +108 -0
- package/src/styles/themes/_desert.scss +94 -80
- package/src/styles/themes/_expressive.scss +108 -0
- package/src/styles/themes/_fidelity.scss +108 -0
- package/src/styles/themes/_forest.scss +19 -3
- package/src/styles/themes/_fruit-salad.scss +108 -0
- package/src/styles/themes/_highcontrast.scss +91 -149
- package/src/styles/themes/_legacy.scss +1 -2
- package/src/styles/themes/_material.scss +1 -50
- package/src/styles/themes/_monochrome.scss +108 -0
- package/src/styles/themes/_neutral.scss +108 -0
- package/src/styles/themes/_ocean.scss +19 -3
- package/src/styles/themes/_rainbow.scss +108 -0
- package/src/styles/themes/_sageivory.scss +95 -125
- package/src/styles/themes/_spring.scss +19 -3
- package/src/styles/themes/_summer.scss +95 -87
- package/src/styles/themes/_sunset.scss +19 -3
- package/src/styles/themes/_tealcaramel.scss +94 -124
- package/src/styles/themes/_vibrant.scss +108 -0
- package/src/styles/themes/_winter.scss +1 -3
- package/src/styles/themes/_bluekhaki.scss +0 -136
- package/src/styles/themes/_greenbeige.scss +0 -138
|
@@ -5,7 +5,7 @@ const COLOR_ERROR = 'error';
|
|
|
5
5
|
const POSITION_TOP_RIGHT = 'top-right';
|
|
6
6
|
export const withVisibility = () => (component) => {
|
|
7
7
|
const visible = component.config.visible !== false;
|
|
8
|
-
const nothingToShow = isEmptyBadgeLabel(formatBadgeLabel(component.config.label ?? "", component.config.max));
|
|
8
|
+
const nothingToShow = component.config.variant !== "small" && isEmptyBadgeLabel(formatBadgeLabel(component.config.label ?? "", component.config.max));
|
|
9
9
|
if (!visible || nothingToShow) {
|
|
10
10
|
component.element.classList.add(`${component.getClass('badge')}--invisible`);
|
|
11
11
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { BottomSheetComponent, BottomSheetEventHandlers, BottomSheetState } from "./types.js";
|
|
2
|
+
import type { EventCallback } from "../../core/state/emitter.js";
|
|
2
3
|
interface ApiOptions {
|
|
3
4
|
state: {
|
|
4
5
|
open: () => void;
|
|
@@ -23,8 +24,8 @@ interface ApiOptions {
|
|
|
23
24
|
interface BaseComponent {
|
|
24
25
|
element: HTMLElement;
|
|
25
26
|
getClass: (name: string) => string;
|
|
26
|
-
on: (event: string, handler:
|
|
27
|
-
off: (event: string, handler:
|
|
27
|
+
on: (event: string, handler: EventCallback) => unknown;
|
|
28
|
+
off: (event: string, handler: EventCallback) => unknown;
|
|
28
29
|
}
|
|
29
30
|
/**
|
|
30
31
|
* The public surface. Every method here is backed by a feature above it; none
|
|
@@ -38,6 +39,6 @@ export declare const withAPI: ({ state, structure, drag, lifecycle }: ApiOptions
|
|
|
38
39
|
* so handlers passed at creation are silently dropped. This one reads it.
|
|
39
40
|
*/
|
|
40
41
|
export declare const applyEventHandlers: (component: {
|
|
41
|
-
on: (event: string, handler:
|
|
42
|
+
on: (event: string, handler: EventCallback) => unknown;
|
|
42
43
|
}, handlers?: BottomSheetEventHandlers) => void;
|
|
43
44
|
export {};
|
|
@@ -1,17 +1,24 @@
|
|
|
1
1
|
import { createComponentConfig, createElementConfig, } from "../../core/config/component.js";
|
|
2
|
-
import { BOTTOM_SHEET_DEFAULTS, BOTTOM_SHEET_STATES, } from "./constants.js";
|
|
2
|
+
import { BOTTOM_SHEET_DEFAULTS, BOTTOM_SHEET_STATES, BOTTOM_SHEET_VARIANTS, } from "./constants.js";
|
|
3
|
+
import { supportsTopLayer } from "../../core/dom/layer.js";
|
|
3
4
|
export const defaultConfig = {
|
|
4
5
|
variant: BOTTOM_SHEET_DEFAULTS.VARIANT,
|
|
5
6
|
dragHandle: BOTTOM_SHEET_DEFAULTS.DRAG_HANDLE,
|
|
6
|
-
peekHeight: BOTTOM_SHEET_DEFAULTS.PEEK_HEIGHT,
|
|
7
7
|
maxWidth: BOTTOM_SHEET_DEFAULTS.MAX_WIDTH,
|
|
8
8
|
initialState: BOTTOM_SHEET_STATES.HIDDEN,
|
|
9
9
|
closeOnScrimClick: BOTTOM_SHEET_DEFAULTS.CLOSE_ON_SCRIM_CLICK,
|
|
10
10
|
closeOnEscape: BOTTOM_SHEET_DEFAULTS.CLOSE_ON_ESCAPE,
|
|
11
11
|
};
|
|
12
|
-
export const createBaseConfig = (config = {}) =>
|
|
12
|
+
export const createBaseConfig = (config = {}) => {
|
|
13
|
+
const merged = createComponentConfig(defaultConfig, config, "bottom-sheet");
|
|
14
|
+
if (merged.layer === "top" &&
|
|
15
|
+
(merged.variant !== BOTTOM_SHEET_VARIANTS.MODAL || !supportsTopLayer("modal"))) {
|
|
16
|
+
merged.layer = undefined;
|
|
17
|
+
}
|
|
18
|
+
return merged;
|
|
19
|
+
};
|
|
13
20
|
export const getElementConfig = (config) => createElementConfig(config, {
|
|
14
|
-
tag: "div",
|
|
21
|
+
tag: config.layer === "top" ? "dialog" : "div",
|
|
15
22
|
className: [config.class].filter(Boolean),
|
|
16
23
|
attributes: {
|
|
17
24
|
"aria-hidden": "true",
|
|
@@ -25,8 +25,6 @@ export declare const BOTTOM_SHEET_STATES: {
|
|
|
25
25
|
*/
|
|
26
26
|
export declare const BOTTOM_SHEET_DEFAULTS: {
|
|
27
27
|
readonly VARIANT: "modal";
|
|
28
|
-
/** BottomSheetDefaults.SheetPeekHeight */
|
|
29
|
-
readonly PEEK_HEIGHT: 56;
|
|
30
28
|
/** BottomSheetDefaults.SheetMaxWidth; wider viewports centre the sheet */
|
|
31
29
|
readonly MAX_WIDTH: 640;
|
|
32
30
|
/** A drag handle is part of the anatomy, so it is on unless asked otherwise */
|
|
@@ -2,6 +2,8 @@ import { BottomSheetState } from "../types.js";
|
|
|
2
2
|
interface DragComponent {
|
|
3
3
|
getClass: (name: string) => string;
|
|
4
4
|
emit: (event: string, data?: unknown) => unknown;
|
|
5
|
+
on?: (event: string, handler: () => void) => unknown;
|
|
6
|
+
off?: (event: string, handler: () => void) => unknown;
|
|
5
7
|
structure: {
|
|
6
8
|
container: HTMLElement;
|
|
7
9
|
handle: HTMLElement | null;
|
|
@@ -9,6 +11,7 @@ interface DragComponent {
|
|
|
9
11
|
state: {
|
|
10
12
|
getState: () => BottomSheetState;
|
|
11
13
|
setState: (next: BottomSheetState) => void;
|
|
14
|
+
open: (to?: BottomSheetState) => void;
|
|
12
15
|
close: () => void;
|
|
13
16
|
};
|
|
14
17
|
}
|
|
@@ -8,6 +8,25 @@ export const withDrag = () => (component) => {
|
|
|
8
8
|
let startTime = 0;
|
|
9
9
|
let offset = 0;
|
|
10
10
|
let dragging = false;
|
|
11
|
+
let dragged = false;
|
|
12
|
+
const label = () => {
|
|
13
|
+
handle.setAttribute("aria-label", state.getState() === BOTTOM_SHEET_STATES.EXPANDED ? "Close sheet" : "Expand sheet");
|
|
14
|
+
};
|
|
15
|
+
const onClick = () => {
|
|
16
|
+
if (dragged) {
|
|
17
|
+
dragged = false;
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
const current = state.getState();
|
|
21
|
+
if (current === BOTTOM_SHEET_STATES.EXPANDED)
|
|
22
|
+
state.close();
|
|
23
|
+
else if (current === BOTTOM_SHEET_STATES.PARTIAL)
|
|
24
|
+
state.setState(BOTTOM_SHEET_STATES.EXPANDED);
|
|
25
|
+
else
|
|
26
|
+
state.open();
|
|
27
|
+
};
|
|
28
|
+
label();
|
|
29
|
+
component.on?.(BOTTOM_SHEET_EVENTS.STATE_CHANGE, label);
|
|
11
30
|
const settle = (distance, velocity) => {
|
|
12
31
|
const current = state.getState();
|
|
13
32
|
const far = Math.abs(distance) >= BOTTOM_SHEET_DEFAULTS.POSITIONAL_THRESHOLD;
|
|
@@ -45,6 +64,7 @@ export const withDrag = () => (component) => {
|
|
|
45
64
|
const velocity = (offset / elapsed) * 1000;
|
|
46
65
|
structure.container.style.transition = "";
|
|
47
66
|
structure.container.style.transform = "";
|
|
67
|
+
dragged = Math.abs(offset) > 4;
|
|
48
68
|
const previous = state.getState();
|
|
49
69
|
const next = settle(offset, velocity);
|
|
50
70
|
if (next === BOTTOM_SHEET_STATES.HIDDEN)
|
|
@@ -57,6 +77,7 @@ export const withDrag = () => (component) => {
|
|
|
57
77
|
handle.addEventListener("pointermove", onPointerMove);
|
|
58
78
|
handle.addEventListener("pointerup", onPointerUp);
|
|
59
79
|
handle.addEventListener("pointercancel", onPointerUp);
|
|
80
|
+
handle.addEventListener("click", onClick);
|
|
60
81
|
return {
|
|
61
82
|
...component,
|
|
62
83
|
drag: {
|
|
@@ -65,6 +86,8 @@ export const withDrag = () => (component) => {
|
|
|
65
86
|
handle.removeEventListener("pointermove", onPointerMove);
|
|
66
87
|
handle.removeEventListener("pointerup", onPointerUp);
|
|
67
88
|
handle.removeEventListener("pointercancel", onPointerUp);
|
|
89
|
+
handle.removeEventListener("click", onClick);
|
|
90
|
+
component.off?.(BOTTOM_SHEET_EVENTS.STATE_CHANGE, label);
|
|
68
91
|
},
|
|
69
92
|
},
|
|
70
93
|
};
|
|
@@ -1,10 +1,27 @@
|
|
|
1
1
|
import { BOTTOM_SHEET_CLASSES, BOTTOM_SHEET_EVENTS, BOTTOM_SHEET_STATES, BOTTOM_SHEET_VARIANTS, } from "../constants.js";
|
|
2
|
+
import { deepActiveElement, wrapTab } from "../../../core/dom/focus.js";
|
|
3
|
+
import { hideFromTopLayer, inertOutside, onTopLayerClose, showInTopLayer, } from "../../../core/dom/layer.js";
|
|
2
4
|
export const withState = (config) => (component) => {
|
|
3
5
|
const { element, getClass, structure } = component;
|
|
4
6
|
const root = getClass(BOTTOM_SHEET_CLASSES.ROOT);
|
|
5
7
|
const isModal = config.variant === BOTTOM_SHEET_VARIANTS.MODAL;
|
|
8
|
+
const top = config.layer === "top";
|
|
6
9
|
let state = config.initialState ?? BOTTOM_SHEET_STATES.HIDDEN;
|
|
7
10
|
let previouslyFocused = null;
|
|
11
|
+
let restorePage = null;
|
|
12
|
+
const trap = (on) => {
|
|
13
|
+
if (!isModal || top)
|
|
14
|
+
return;
|
|
15
|
+
if (on && !restorePage) {
|
|
16
|
+
restorePage = inertOutside(element);
|
|
17
|
+
element.addEventListener("keydown", handleTab);
|
|
18
|
+
}
|
|
19
|
+
else if (!on && restorePage) {
|
|
20
|
+
restorePage();
|
|
21
|
+
restorePage = null;
|
|
22
|
+
element.removeEventListener("keydown", handleTab);
|
|
23
|
+
}
|
|
24
|
+
};
|
|
8
25
|
const applyState = (next) => {
|
|
9
26
|
for (const name of Object.values(BOTTOM_SHEET_STATES)) {
|
|
10
27
|
element.classList.toggle(`${root}--${name}`, name === next);
|
|
@@ -28,6 +45,8 @@ export const withState = (config) => (component) => {
|
|
|
28
45
|
return;
|
|
29
46
|
if (!config.closeOnEscape)
|
|
30
47
|
return;
|
|
48
|
+
if (!isModal && !event.composedPath().includes(element))
|
|
49
|
+
return;
|
|
31
50
|
event.preventDefault();
|
|
32
51
|
close();
|
|
33
52
|
};
|
|
@@ -35,15 +54,31 @@ export const withState = (config) => (component) => {
|
|
|
35
54
|
if (config.closeOnScrimClick)
|
|
36
55
|
close();
|
|
37
56
|
};
|
|
57
|
+
const handleBackdropClick = (event) => {
|
|
58
|
+
if (event.target === element)
|
|
59
|
+
handleScrimClick();
|
|
60
|
+
};
|
|
61
|
+
const handleTab = (event) => wrapTab(element, event);
|
|
62
|
+
const handleCancel = (event) => {
|
|
63
|
+
event.preventDefault();
|
|
64
|
+
if (config.closeOnEscape)
|
|
65
|
+
close();
|
|
66
|
+
};
|
|
38
67
|
function open(to = BOTTOM_SHEET_STATES.PARTIAL) {
|
|
39
68
|
if (state === to)
|
|
40
69
|
return;
|
|
41
70
|
const wasHidden = state === BOTTOM_SHEET_STATES.HIDDEN;
|
|
42
71
|
if (wasHidden && isModal) {
|
|
43
|
-
previouslyFocused =
|
|
72
|
+
previouslyFocused = deepActiveElement();
|
|
73
|
+
}
|
|
74
|
+
if (wasHidden && top) {
|
|
75
|
+
if (!showInTopLayer(element, { kind: "modal" }))
|
|
76
|
+
element.setAttribute("open", "");
|
|
77
|
+
void element.offsetWidth;
|
|
44
78
|
}
|
|
45
79
|
setState(to);
|
|
46
80
|
if (wasHidden) {
|
|
81
|
+
trap(true);
|
|
47
82
|
if (isModal)
|
|
48
83
|
structure.container.focus();
|
|
49
84
|
component.emit(BOTTOM_SHEET_EVENTS.OPEN);
|
|
@@ -53,6 +88,9 @@ export const withState = (config) => (component) => {
|
|
|
53
88
|
if (state === BOTTOM_SHEET_STATES.HIDDEN)
|
|
54
89
|
return;
|
|
55
90
|
setState(BOTTOM_SHEET_STATES.HIDDEN);
|
|
91
|
+
trap(false);
|
|
92
|
+
if (top)
|
|
93
|
+
hideFromTopLayer(element);
|
|
56
94
|
if (isModal && previouslyFocused?.isConnected) {
|
|
57
95
|
previouslyFocused.focus();
|
|
58
96
|
previouslyFocused = null;
|
|
@@ -60,8 +98,19 @@ export const withState = (config) => (component) => {
|
|
|
60
98
|
component.emit(BOTTOM_SHEET_EVENTS.CLOSE);
|
|
61
99
|
}
|
|
62
100
|
applyState(state);
|
|
63
|
-
|
|
101
|
+
let stopCloses = null;
|
|
102
|
+
if (top) {
|
|
103
|
+
element.addEventListener("cancel", handleCancel);
|
|
104
|
+
element.addEventListener("click", handleBackdropClick);
|
|
105
|
+
element.addEventListener("keydown", handleTab);
|
|
106
|
+
stopCloses = onTopLayerClose(element, close);
|
|
107
|
+
if (state !== BOTTOM_SHEET_STATES.HIDDEN && element.isConnected) {
|
|
108
|
+
showInTopLayer(element, { kind: "modal" });
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
else if (config.closeOnEscape) {
|
|
64
112
|
document.addEventListener("keydown", handleKeydown);
|
|
113
|
+
}
|
|
65
114
|
structure.scrim?.addEventListener("click", handleScrimClick);
|
|
66
115
|
return {
|
|
67
116
|
...component,
|
|
@@ -76,6 +125,13 @@ export const withState = (config) => (component) => {
|
|
|
76
125
|
release: () => {
|
|
77
126
|
document.removeEventListener("keydown", handleKeydown);
|
|
78
127
|
structure.scrim?.removeEventListener("click", handleScrimClick);
|
|
128
|
+
element.removeEventListener("cancel", handleCancel);
|
|
129
|
+
element.removeEventListener("click", handleBackdropClick);
|
|
130
|
+
element.removeEventListener("keydown", handleTab);
|
|
131
|
+
trap(false);
|
|
132
|
+
stopCloses?.();
|
|
133
|
+
if (top)
|
|
134
|
+
hideFromTopLayer(element);
|
|
79
135
|
},
|
|
80
136
|
},
|
|
81
137
|
};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { BOTTOM_SHEET_CLASSES, BOTTOM_SHEET_VARIANTS } from "../constants.js";
|
|
2
|
+
import { PREFIX } from "../../../core/config.js";
|
|
2
3
|
import { setHTML } from "../../../core/dom/html.js";
|
|
3
4
|
export const withStructure = (config) => (component) => {
|
|
4
5
|
const { element, getClass } = component;
|
|
@@ -6,7 +7,7 @@ export const withStructure = (config) => (component) => {
|
|
|
6
7
|
element.classList.add(getClass(BOTTOM_SHEET_CLASSES.ROOT));
|
|
7
8
|
element.classList.add(`${getClass(BOTTOM_SHEET_CLASSES.ROOT)}--${config.variant}`);
|
|
8
9
|
let scrim = null;
|
|
9
|
-
if (isModal) {
|
|
10
|
+
if (isModal && config.layer !== "top") {
|
|
10
11
|
scrim = document.createElement("div");
|
|
11
12
|
scrim.className = getClass(BOTTOM_SHEET_CLASSES.SCRIM);
|
|
12
13
|
element.appendChild(scrim);
|
|
@@ -20,11 +21,15 @@ export const withStructure = (config) => (component) => {
|
|
|
20
21
|
if (config.maxWidth) {
|
|
21
22
|
container.style.maxWidth = `${config.maxWidth}px`;
|
|
22
23
|
}
|
|
24
|
+
if (config.peekHeight) {
|
|
25
|
+
container.style.setProperty(`--${PREFIX}-bottom-sheet-peek-height`, `${config.peekHeight}px`);
|
|
26
|
+
}
|
|
23
27
|
let handle = null;
|
|
24
28
|
if (config.dragHandle) {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
29
|
+
const button = document.createElement("button");
|
|
30
|
+
button.type = "button";
|
|
31
|
+
button.className = getClass(BOTTOM_SHEET_CLASSES.HANDLE);
|
|
32
|
+
handle = button;
|
|
28
33
|
container.appendChild(handle);
|
|
29
34
|
}
|
|
30
35
|
let title = null;
|
|
@@ -44,8 +44,9 @@ export interface BottomSheetConfig {
|
|
|
44
44
|
*/
|
|
45
45
|
dragHandle?: boolean;
|
|
46
46
|
/**
|
|
47
|
-
* Height of the partially expanded state, in pixels
|
|
48
|
-
*
|
|
47
|
+
* Height of the partially expanded state, in pixels: a sheet with more
|
|
48
|
+
* content shows this much of it until it is expanded. Unset, the partial
|
|
49
|
+
* sheet shows its content up to half the screen.
|
|
49
50
|
*/
|
|
50
51
|
peekHeight?: number;
|
|
51
52
|
/**
|
|
@@ -72,6 +73,18 @@ export interface BottomSheetConfig {
|
|
|
72
73
|
closeOnEscape?: boolean;
|
|
73
74
|
/** Where to mount the sheet. Defaults to `document.body` */
|
|
74
75
|
container?: HTMLElement;
|
|
76
|
+
/**
|
|
77
|
+
* `"top"` makes a modal sheet's root a `<dialog>` element, rendered in
|
|
78
|
+
* `container` like any sheet, and opens it with `showModal()`: in the
|
|
79
|
+
* browser's top layer, above every z-index and outside any clipping
|
|
80
|
+
* ancestor, with the rest of the page inert. The scrim is its `::backdrop`,
|
|
81
|
+
* and Escape reaches the sheet as the dialog's `cancel` event. The sheet
|
|
82
|
+
* slides as without it.
|
|
83
|
+
*
|
|
84
|
+
* A standard sheet stays in the page, and where the browser has no
|
|
85
|
+
* `showModal()` the sheet behaves as without it.
|
|
86
|
+
*/
|
|
87
|
+
layer?: "top";
|
|
75
88
|
/** Handlers registered at creation, equivalent to calling `on` for each */
|
|
76
89
|
on?: BottomSheetEventHandlers;
|
|
77
90
|
/** Extra classes for the root element */
|
|
@@ -35,9 +35,11 @@ export const withProgress = (config) => (component) => {
|
|
|
35
35
|
progress = p;
|
|
36
36
|
addClass(progress.element, component.getClass("button__progress"));
|
|
37
37
|
progress.element.style.display = "none";
|
|
38
|
-
Object.
|
|
39
|
-
|
|
40
|
-
|
|
38
|
+
for (const event of Object.keys(progressEventHandlers)) {
|
|
39
|
+
const handler = progressEventHandlers[event];
|
|
40
|
+
if (handler)
|
|
41
|
+
p.on(event, handler);
|
|
42
|
+
}
|
|
41
43
|
component.progress = progress;
|
|
42
44
|
return progress;
|
|
43
45
|
});
|
|
@@ -98,6 +98,7 @@ const createButtonGroup = (config = {}) => {
|
|
|
98
98
|
const changeEvent = {
|
|
99
99
|
buttonGroup,
|
|
100
100
|
values: selected.map(valueOf),
|
|
101
|
+
value: selection === 'multi' ? selected.map(valueOf) : (selected[0] ? valueOf(selected[0]) : null),
|
|
101
102
|
selected,
|
|
102
103
|
button,
|
|
103
104
|
originalEvent
|
|
@@ -128,7 +129,8 @@ const createButtonGroup = (config = {}) => {
|
|
|
128
129
|
else
|
|
129
130
|
selectedValues.delete(value);
|
|
130
131
|
applySelectedState(target, selected);
|
|
131
|
-
|
|
132
|
+
if (button)
|
|
133
|
+
emitChange(button, originalEvent);
|
|
132
134
|
return true;
|
|
133
135
|
};
|
|
134
136
|
buttonConfigs.forEach((buttonConfig, index) => {
|
|
@@ -90,13 +90,13 @@ export declare const getButtonConfig: (buttonConfig: NonNullable<ButtonGroupConf
|
|
|
90
90
|
rawClass?: string | string[] | undefined;
|
|
91
91
|
progress?: (import("../index.js").ProgressConfig | boolean) | undefined;
|
|
92
92
|
toggle?: boolean | undefined;
|
|
93
|
-
prefix?: string | undefined;
|
|
94
|
-
iconSize?: string | undefined;
|
|
95
93
|
componentName?: string | undefined;
|
|
96
94
|
type?: "button" | "submit" | "reset" | undefined;
|
|
97
|
-
|
|
98
|
-
toggleOnClick?: boolean | undefined;
|
|
95
|
+
prefix?: string | undefined;
|
|
99
96
|
parent?: (HTMLElement | string | null) | undefined;
|
|
97
|
+
iconSize?: string | undefined;
|
|
98
|
+
toggleOnClick?: boolean | undefined;
|
|
99
|
+
showProgress?: boolean | undefined;
|
|
100
100
|
} | {
|
|
101
101
|
variant: ButtonGroupVariant | undefined;
|
|
102
102
|
size: import("./types.js").ButtonGroupSize;
|
|
@@ -129,13 +129,13 @@ export declare const getButtonConfig: (buttonConfig: NonNullable<ButtonGroupConf
|
|
|
129
129
|
rawClass?: string | string[] | undefined;
|
|
130
130
|
progress?: (import("../index.js").ProgressConfig | boolean) | undefined;
|
|
131
131
|
toggle?: boolean | undefined;
|
|
132
|
-
prefix?: string | undefined;
|
|
133
|
-
iconSize?: string | undefined;
|
|
134
132
|
componentName?: string | undefined;
|
|
135
133
|
type?: "button" | "submit" | "reset" | undefined;
|
|
136
|
-
|
|
137
|
-
toggleOnClick?: boolean | undefined;
|
|
134
|
+
prefix?: string | undefined;
|
|
138
135
|
parent?: (HTMLElement | string | null) | undefined;
|
|
136
|
+
iconSize?: string | undefined;
|
|
137
|
+
toggleOnClick?: boolean | undefined;
|
|
138
|
+
showProgress?: boolean | undefined;
|
|
139
139
|
};
|
|
140
140
|
/**
|
|
141
141
|
* Maps variant name to button variant
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { createComponentConfig } from "../../core/config/component.js";
|
|
2
|
+
import { cornerToken } from "../../core/theme/shape.js";
|
|
2
3
|
import { BUTTON_GROUP_DEFAULTS, BUTTON_GROUP_DENSITY, BUTTON_GROUP_SIZE_TOKENS, BUTTON_GROUP_CONNECTED_GAP, BUTTON_GROUP_CONNECTED_PRESSED_CORNER, BUTTON_GROUP_DENSITY_STEP } from "./constants.js";
|
|
3
4
|
export const DEFAULT_CONFIG = {
|
|
4
5
|
kind: BUTTON_GROUP_DEFAULTS.KIND,
|
|
@@ -70,8 +71,8 @@ export const getSizeStyles = (prefix, size, kind, density = BUTTON_GROUP_DENSITY
|
|
|
70
71
|
[`--${prefix}-button-group-height`]: `${height}px`,
|
|
71
72
|
[`--${prefix}-button-group-icon`]: `${tokens.icon}px`,
|
|
72
73
|
[`--${prefix}-button-group-gap`]: `${gap}px`,
|
|
73
|
-
[`--${prefix}-button-group-inner-corner`]:
|
|
74
|
-
[`--${prefix}-button-group-pressed-corner`]:
|
|
74
|
+
[`--${prefix}-button-group-inner-corner`]: cornerToken(tokens.connectedStep, tokens.connectedCorner, prefix),
|
|
75
|
+
[`--${prefix}-button-group-pressed-corner`]: cornerToken("extra-small", BUTTON_GROUP_CONNECTED_PRESSED_CORNER, prefix),
|
|
75
76
|
[`--${prefix}-button-group-radius`]: `${height / 2}px`
|
|
76
77
|
};
|
|
77
78
|
};
|
|
@@ -72,8 +72,8 @@ export declare const BUTTON_GROUP_SIZES: {
|
|
|
72
72
|
};
|
|
73
73
|
/**
|
|
74
74
|
* Material 3 button group tokens per size (dp): container height, button
|
|
75
|
-
* icon size, standard between-space, connected inner corner
|
|
76
|
-
* (m3.material.io button group specs; ButtonGroupSmallTokens.kt and
|
|
75
|
+
* icon size, standard between-space, connected inner corner and its shape
|
|
76
|
+
* scale step (FLO-331) (m3.material.io button group specs; ButtonGroupSmallTokens.kt and
|
|
77
77
|
* ConnectedButtonGroupSmallTokens.kt for the s size)
|
|
78
78
|
*/
|
|
79
79
|
export declare const BUTTON_GROUP_SIZE_TOKENS: {
|
|
@@ -82,30 +82,35 @@ export declare const BUTTON_GROUP_SIZE_TOKENS: {
|
|
|
82
82
|
readonly icon: 20;
|
|
83
83
|
readonly standardGap: 18;
|
|
84
84
|
readonly connectedCorner: 4;
|
|
85
|
+
readonly connectedStep: "extra-small";
|
|
85
86
|
};
|
|
86
87
|
readonly s: {
|
|
87
88
|
readonly height: 40;
|
|
88
89
|
readonly icon: 20;
|
|
89
90
|
readonly standardGap: 12;
|
|
90
91
|
readonly connectedCorner: 8;
|
|
92
|
+
readonly connectedStep: "small";
|
|
91
93
|
};
|
|
92
94
|
readonly m: {
|
|
93
95
|
readonly height: 56;
|
|
94
96
|
readonly icon: 24;
|
|
95
97
|
readonly standardGap: 8;
|
|
96
98
|
readonly connectedCorner: 8;
|
|
99
|
+
readonly connectedStep: "small";
|
|
97
100
|
};
|
|
98
101
|
readonly l: {
|
|
99
102
|
readonly height: 96;
|
|
100
103
|
readonly icon: 32;
|
|
101
104
|
readonly standardGap: 8;
|
|
102
105
|
readonly connectedCorner: 16;
|
|
106
|
+
readonly connectedStep: "large";
|
|
103
107
|
};
|
|
104
108
|
readonly xl: {
|
|
105
109
|
readonly height: 136;
|
|
106
110
|
readonly icon: 40;
|
|
107
111
|
readonly standardGap: 8;
|
|
108
112
|
readonly connectedCorner: 20;
|
|
113
|
+
readonly connectedStep: "large-increased";
|
|
109
114
|
};
|
|
110
115
|
};
|
|
111
116
|
/** Connected groups use 2dp between buttons at every size */
|
|
@@ -41,11 +41,11 @@ export const BUTTON_GROUP_SIZES = {
|
|
|
41
41
|
XL: 'xl'
|
|
42
42
|
};
|
|
43
43
|
export const BUTTON_GROUP_SIZE_TOKENS = {
|
|
44
|
-
xs: { height: 32, icon: 20, standardGap: 18, connectedCorner: 4 },
|
|
45
|
-
s: { height: 40, icon: 20, standardGap: 12, connectedCorner: 8 },
|
|
46
|
-
m: { height: 56, icon: 24, standardGap: 8, connectedCorner: 8 },
|
|
47
|
-
l: { height: 96, icon: 32, standardGap: 8, connectedCorner: 16 },
|
|
48
|
-
xl: { height: 136, icon: 40, standardGap: 8, connectedCorner: 20 }
|
|
44
|
+
xs: { height: 32, icon: 20, standardGap: 18, connectedCorner: 4, connectedStep: "extra-small" },
|
|
45
|
+
s: { height: 40, icon: 20, standardGap: 12, connectedCorner: 8, connectedStep: "small" },
|
|
46
|
+
m: { height: 56, icon: 24, standardGap: 8, connectedCorner: 8, connectedStep: "small" },
|
|
47
|
+
l: { height: 96, icon: 32, standardGap: 8, connectedCorner: 16, connectedStep: "large" },
|
|
48
|
+
xl: { height: 136, icon: 40, standardGap: 8, connectedCorner: 20, connectedStep: "large-increased" }
|
|
49
49
|
};
|
|
50
50
|
export const BUTTON_GROUP_CONNECTED_GAP = 2;
|
|
51
51
|
export const BUTTON_GROUP_CONNECTED_PRESSED_CORNER = 4;
|
|
@@ -38,6 +38,11 @@ export interface ButtonGroupChangeEvent {
|
|
|
38
38
|
buttonGroup: ButtonGroupComponent;
|
|
39
39
|
/** Values of the selected buttons, in button order */
|
|
40
40
|
values: string[];
|
|
41
|
+
/**
|
|
42
|
+
* The selection in the `value` shape of the `<m-button-group>` element's
|
|
43
|
+
* `change`: an array for a multi-select group, a string or null otherwise.
|
|
44
|
+
*/
|
|
45
|
+
value: string | string[] | null;
|
|
41
46
|
selected: ButtonComponent[];
|
|
42
47
|
/** The button whose click caused the change, if any */
|
|
43
48
|
button?: ButtonComponent;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { BaseComponent, CardComponent, ApiOptions } from "./types.js";
|
|
2
|
+
import type { EventCallback } from "../../core/state/emitter.js";
|
|
2
3
|
/**
|
|
3
4
|
* Enhances a card component with API methods.
|
|
4
5
|
* This follows the higher-order function pattern to add public API methods
|
|
@@ -15,6 +16,9 @@ import { BaseComponent, CardComponent, ApiOptions } from "./types.js";
|
|
|
15
16
|
*/
|
|
16
17
|
type ComponentWithElements = Omit<BaseComponent, 'config' | 'addClass'> & {
|
|
17
18
|
addClass: (...classes: string[]) => unknown;
|
|
19
|
+
/** From withEvents in the card's pipe */
|
|
20
|
+
on: (event: string, handler: EventCallback) => unknown;
|
|
21
|
+
off: (event: string, handler: EventCallback) => unknown;
|
|
18
22
|
};
|
|
19
23
|
export declare const withAPI: ({ lifecycle, config }: ApiOptions) => (component: ComponentWithElements) => CardComponent;
|
|
20
24
|
export {};
|
|
@@ -2,6 +2,14 @@ export const withAPI = ({ lifecycle, config }) => (component) => ({
|
|
|
2
2
|
...component,
|
|
3
3
|
element: component.element,
|
|
4
4
|
config,
|
|
5
|
+
on(event, handler) {
|
|
6
|
+
component.on(event, handler);
|
|
7
|
+
return this;
|
|
8
|
+
},
|
|
9
|
+
off(event, handler) {
|
|
10
|
+
component.off(event, handler);
|
|
11
|
+
return this;
|
|
12
|
+
},
|
|
5
13
|
addContent(contentElement) {
|
|
6
14
|
if (contentElement && contentElement.classList.contains(`${component.getClass('card')}__content`)) {
|
|
7
15
|
component.element.appendChild(contentElement);
|
|
@@ -3,12 +3,11 @@ import { createBase, withElement } from "../../core/compose/component.js";
|
|
|
3
3
|
import { withEvents, withVariant, withRipple, withLifecycle } from "../../core/compose/features/index.js";
|
|
4
4
|
import { withAPI } from "./api.js";
|
|
5
5
|
import { createBaseConfig, getElementConfig, getApiConfig, withInteractiveBehavior, processInlineConfig, applyInlineConfiguration } from "./config.js";
|
|
6
|
-
import { withElevation } from "./features.js";
|
|
7
6
|
const createCard = (config = {}) => {
|
|
8
7
|
const processedConfig = processInlineConfig(config);
|
|
9
8
|
const baseConfig = createBaseConfig(processedConfig);
|
|
10
9
|
try {
|
|
11
|
-
const card = pipe(createBase, withEvents(), withElement(getElementConfig(baseConfig)), withVariant(baseConfig), baseConfig.clickable ? withRipple(baseConfig) : (c) => c, withLifecycle(), withInteractiveBehavior,
|
|
10
|
+
const card = pipe(createBase, withEvents(), withElement(getElementConfig(baseConfig)), withVariant(baseConfig), baseConfig.clickable ? withRipple(baseConfig) : (c) => c, withLifecycle(), withInteractiveBehavior, comp => withAPI({ ...getApiConfig(comp), config: baseConfig })(comp))(baseConfig);
|
|
12
11
|
applyInlineConfiguration(card, processedConfig);
|
|
13
12
|
return card;
|
|
14
13
|
}
|
|
@@ -70,7 +70,7 @@ export const applyInlineConfiguration = (card, config) => {
|
|
|
70
70
|
export const createBaseConfig = (config = {}) => createComponentConfig(defaultConfig, config, "card");
|
|
71
71
|
export const getElementConfig = (config) => {
|
|
72
72
|
const isInteractive = config.interactive || config.clickable;
|
|
73
|
-
const defaultRole =
|
|
73
|
+
const defaultRole = config.clickable ? "button" : "article";
|
|
74
74
|
const ariaAttributes = {};
|
|
75
75
|
if (config.aria) {
|
|
76
76
|
Object.entries(config.aria).forEach(([key, value]) => {
|
|
@@ -83,7 +83,7 @@ export const getElementConfig = (config) => {
|
|
|
83
83
|
if (!ariaAttributes["role"] && !config.aria?.role) {
|
|
84
84
|
ariaAttributes["role"] = defaultRole;
|
|
85
85
|
}
|
|
86
|
-
if (
|
|
86
|
+
if (config.clickable && !ariaAttributes["tabindex"]) {
|
|
87
87
|
ariaAttributes["tabindex"] = "0";
|
|
88
88
|
}
|
|
89
89
|
return createElementConfig(config, {
|
|
@@ -115,16 +115,6 @@ export const withInteractiveBehavior = (comp) => {
|
|
|
115
115
|
const config = comp.config;
|
|
116
116
|
const isInteractive = config.interactive || config.clickable;
|
|
117
117
|
if (isInteractive) {
|
|
118
|
-
comp.element.addEventListener("mouseenter", () => {
|
|
119
|
-
if (config.variant === CARD_VARIANTS.ELEVATED) {
|
|
120
|
-
comp.element.style.setProperty(`--${config.prefix}-card-elevation`, String(CARD_ELEVATION_LEVELS.LEVEL2));
|
|
121
|
-
}
|
|
122
|
-
});
|
|
123
|
-
comp.element.addEventListener("mouseleave", () => {
|
|
124
|
-
if (config.variant === CARD_VARIANTS.ELEVATED) {
|
|
125
|
-
comp.element.style.setProperty(`--${config.prefix}-card-elevation`, String(CARD_ELEVATION_LEVELS.LEVEL1));
|
|
126
|
-
}
|
|
127
|
-
});
|
|
128
118
|
comp.element.addEventListener("keydown", (e) => {
|
|
129
119
|
if ((e.key === "Enter" || e.key === " ") && config.clickable) {
|
|
130
120
|
e.preventDefault();
|
|
@@ -141,7 +131,6 @@ export const withInteractiveBehavior = (comp) => {
|
|
|
141
131
|
if (config.draggable) {
|
|
142
132
|
comp.element.setAttribute("draggable", "true");
|
|
143
133
|
comp.element.addEventListener("dragstart", (e) => {
|
|
144
|
-
comp.element.style.setProperty(`--${config.prefix}-card-elevation`, String(CARD_ELEVATION_LEVELS.LEVEL4));
|
|
145
134
|
comp.element.classList.add(`${comp.getClass("card")}--dragging`);
|
|
146
135
|
comp.emit?.("dragstart", { event: e });
|
|
147
136
|
if (e.dataTransfer) {
|
|
@@ -151,7 +140,6 @@ export const withInteractiveBehavior = (comp) => {
|
|
|
151
140
|
}
|
|
152
141
|
});
|
|
153
142
|
comp.element.addEventListener("dragend", (e) => {
|
|
154
|
-
comp.element.style.setProperty(`--${config.prefix}-card-elevation`, String(CARD_ELEVATION_LEVELS.LEVEL1));
|
|
155
143
|
comp.element.classList.remove(`${comp.getClass("card")}--dragging`);
|
|
156
144
|
comp.emit?.("dragend", { event: e });
|
|
157
145
|
});
|
|
@@ -21,7 +21,6 @@ export const createCardContent = (config = {}) => {
|
|
|
21
21
|
config.padding === false ? `${PREFIX}-card__content--no-padding` : null
|
|
22
22
|
].filter((name) => Boolean(name)),
|
|
23
23
|
attributes: {
|
|
24
|
-
'role': 'region',
|
|
25
24
|
'style': 'display: block; color: inherit;'
|
|
26
25
|
}
|
|
27
26
|
}))(baseConfig);
|
|
@@ -58,10 +57,6 @@ export const createCardHeader = (config = {}) => {
|
|
|
58
57
|
tag: 'div',
|
|
59
58
|
componentName: 'card__header',
|
|
60
59
|
className: config.class,
|
|
61
|
-
attributes: {
|
|
62
|
-
'role': 'heading',
|
|
63
|
-
'aria-level': '3'
|
|
64
|
-
}
|
|
65
60
|
}))(baseConfig);
|
|
66
61
|
const textContainer = createElement({
|
|
67
62
|
tag: 'div',
|
|
@@ -81,7 +76,7 @@ export const createCardHeader = (config = {}) => {
|
|
|
81
76
|
}
|
|
82
77
|
if (config.subtitle) {
|
|
83
78
|
createElement({
|
|
84
|
-
tag: '
|
|
79
|
+
tag: 'p',
|
|
85
80
|
className: `${PREFIX}-card__header-subtitle`,
|
|
86
81
|
text: config.subtitle,
|
|
87
82
|
container: textContainer
|