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
|
@@ -3,21 +3,33 @@ import type { NormalizedEvent } from "../../core/utils/mobile.js";
|
|
|
3
3
|
/** Value returned by the API, including complete ranges and empty selections. */
|
|
4
4
|
export type DatePickerValue = Date | [Date, Date] | null;
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
7
|
-
*
|
|
6
|
+
* The value as the selection mode shapes it (FLO-295): a range is a pair, a
|
|
7
|
+
* single date a date; an unknown mode, either.
|
|
8
8
|
*/
|
|
9
|
-
export type
|
|
10
|
-
|
|
9
|
+
export type DatePickerValueOf<M> = M extends "range" ? [Date, Date] | null : M extends "single" ? Date | null : DatePickerValue;
|
|
10
|
+
/** What setValue and `value` take: a date, a range as a pair, or as { start, end } (FLO-289). */
|
|
11
|
+
export type DatePickerInput = Date | string | [Date | string, Date | string] | {
|
|
12
|
+
start: Date | string;
|
|
13
|
+
end: Date | string;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* One shape whatever committed the value (FLO-295): a range's `value` is the
|
|
17
|
+
* pair, and `rangeEndDate` its end, kept for compatibility (null otherwise).
|
|
18
|
+
* The docked calendar sent the start as the value and the end apart.
|
|
19
|
+
*/
|
|
20
|
+
export interface DatePickerChangePayload<V = DatePickerValue> {
|
|
21
|
+
value: V;
|
|
11
22
|
rangeEndDate: Date | null;
|
|
12
23
|
formattedValue: string;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
24
|
+
/**
|
|
25
|
+
* The value as ISO 8601 text, the `value` of the `<m-datepicker>` element's
|
|
26
|
+
* `change`: a date (`2026-09-10`), a `start/end` interval, or "" (FLO-320)
|
|
27
|
+
*/
|
|
28
|
+
iso: string;
|
|
29
|
+
}
|
|
18
30
|
/** Visibility events carry the committed value, including complete ranges. */
|
|
19
|
-
export interface DatePickerVisibilityPayload {
|
|
20
|
-
value:
|
|
31
|
+
export interface DatePickerVisibilityPayload<V = DatePickerValue> {
|
|
32
|
+
value: V;
|
|
21
33
|
}
|
|
22
34
|
/** Normalized touch-end event emitted by the interactive root. */
|
|
23
35
|
export type DatePickerTapPayload = NormalizedEvent;
|
|
@@ -28,10 +40,10 @@ export interface DatePickerSwipePayload {
|
|
|
28
40
|
deltaY: number;
|
|
29
41
|
}
|
|
30
42
|
/** Events emitted by the picker API, calendar selections and interactive root. */
|
|
31
|
-
export interface DatePickerEvents {
|
|
32
|
-
change: (payload: DatePickerChangePayload) => void;
|
|
33
|
-
open: (payload: DatePickerVisibilityPayload) => void;
|
|
34
|
-
close: (payload: DatePickerVisibilityPayload) => void;
|
|
43
|
+
export interface DatePickerEvents<V = DatePickerValue> {
|
|
44
|
+
change: (payload: DatePickerChangePayload<V>) => void;
|
|
45
|
+
open: (payload: DatePickerVisibilityPayload<V>) => void;
|
|
46
|
+
close: (payload: DatePickerVisibilityPayload<V>) => void;
|
|
35
47
|
click: (payload: ForwardedEventPayload<MouseEvent, HTMLElement>) => void;
|
|
36
48
|
keydown: (payload: ForwardedEventPayload<KeyboardEvent, HTMLElement>) => void;
|
|
37
49
|
tap: (payload: DatePickerTapPayload) => void;
|
|
@@ -133,7 +145,13 @@ export interface DatePickerConfig {
|
|
|
133
145
|
* Initial selected date(s)
|
|
134
146
|
* Accepts a Date object, Date string, or two dates for range selection
|
|
135
147
|
*/
|
|
136
|
-
value?:
|
|
148
|
+
value?: DatePickerInput;
|
|
149
|
+
/** The value shows and cannot change: no typing, no calendar (FLO-289). */
|
|
150
|
+
readOnly?: boolean;
|
|
151
|
+
/** A date is required: on the input for forms, and checkValidity() (FLO-289). */
|
|
152
|
+
required?: boolean;
|
|
153
|
+
/** The supporting text under the field. Default: the date format (FLO-289). */
|
|
154
|
+
supportingText?: string;
|
|
137
155
|
/**
|
|
138
156
|
* Minimum selectable date
|
|
139
157
|
*/
|
|
@@ -243,7 +261,7 @@ export interface CalendarAPI {
|
|
|
243
261
|
* DatePicker component interface
|
|
244
262
|
* @category Components
|
|
245
263
|
*/
|
|
246
|
-
export interface DatePickerComponent {
|
|
264
|
+
export interface DatePickerComponent<V = DatePickerValue> {
|
|
247
265
|
/** The datepicker's main DOM element */
|
|
248
266
|
element: HTMLElement;
|
|
249
267
|
/** The input field DOM element */
|
|
@@ -274,55 +292,70 @@ export interface DatePickerComponent {
|
|
|
274
292
|
* Opens the datepicker dropdown/modal
|
|
275
293
|
* @returns The datepicker component for chaining
|
|
276
294
|
*/
|
|
277
|
-
open: () => DatePickerComponent
|
|
295
|
+
open: () => DatePickerComponent<V>;
|
|
278
296
|
/**
|
|
279
297
|
* Closes the datepicker dropdown/modal
|
|
280
298
|
* @returns The datepicker component for chaining
|
|
281
299
|
*/
|
|
282
|
-
close: () => DatePickerComponent
|
|
300
|
+
close: () => DatePickerComponent<V>;
|
|
283
301
|
/**
|
|
284
302
|
* Gets the selected date(s)
|
|
285
303
|
* @returns Date object, array of two Date objects for range, or null if none selected
|
|
286
304
|
*/
|
|
287
|
-
getValue: () =>
|
|
305
|
+
getValue: () => V;
|
|
288
306
|
/**
|
|
289
|
-
* Sets the selected date(s)
|
|
307
|
+
* Sets the selected date(s). Silent: only the user's choice emits `change`
|
|
290
308
|
* @param value - Date, string, or array of dates for range selection
|
|
291
309
|
* @returns The datepicker component for chaining
|
|
292
310
|
*/
|
|
293
|
-
setValue: (value:
|
|
311
|
+
setValue: (value: DatePickerInput) => DatePickerComponent<V>;
|
|
312
|
+
/** Read-only: the value shows and cannot change (FLO-289) */
|
|
313
|
+
setReadOnly: (readOnly: boolean) => DatePickerComponent<V>;
|
|
314
|
+
/** Whether the picker is read-only */
|
|
315
|
+
isReadOnly: () => boolean;
|
|
316
|
+
/** Whether a date is required (FLO-289) */
|
|
317
|
+
setRequired: (required: boolean) => DatePickerComponent<V>;
|
|
318
|
+
/**
|
|
319
|
+
* False when a date is required and missing. A dialog variant's input is
|
|
320
|
+
* read-only, which forms do not validate.
|
|
321
|
+
*/
|
|
322
|
+
checkValidity: () => boolean;
|
|
323
|
+
/** As checkValidity(), and shows the error on the field when false */
|
|
324
|
+
reportValidity: () => boolean;
|
|
325
|
+
/** The supporting text; empty or null shows the date format (FLO-289) */
|
|
326
|
+
setSupportingText: (text: string | null) => DatePickerComponent<V>;
|
|
294
327
|
/**
|
|
295
328
|
* Gets the formatted date string based on the selected date(s)
|
|
296
329
|
* @returns Formatted date string or empty string if none selected
|
|
297
330
|
*/
|
|
298
331
|
getFormattedValue: () => string;
|
|
299
332
|
/**
|
|
300
|
-
* Clears the selected date(s)
|
|
333
|
+
* Clears the selected date(s). Silent
|
|
301
334
|
* @returns The datepicker component for chaining
|
|
302
335
|
*/
|
|
303
|
-
clear: () => DatePickerComponent
|
|
336
|
+
clear: () => DatePickerComponent<V>;
|
|
304
337
|
/**
|
|
305
338
|
* Enables the datepicker
|
|
306
339
|
* @returns The datepicker component for chaining
|
|
307
340
|
*/
|
|
308
|
-
enable: () => DatePickerComponent
|
|
341
|
+
enable: () => DatePickerComponent<V>;
|
|
309
342
|
/**
|
|
310
343
|
* Disables the datepicker
|
|
311
344
|
* @returns The datepicker component for chaining
|
|
312
345
|
*/
|
|
313
|
-
disable: () => DatePickerComponent
|
|
346
|
+
disable: () => DatePickerComponent<V>;
|
|
314
347
|
/**
|
|
315
348
|
* Sets the minimum selectable date
|
|
316
349
|
* @param date - Date object or string
|
|
317
350
|
* @returns The datepicker component for chaining
|
|
318
351
|
*/
|
|
319
|
-
setMinDate: (date: Date | string) => DatePickerComponent
|
|
352
|
+
setMinDate: (date: Date | string) => DatePickerComponent<V>;
|
|
320
353
|
/**
|
|
321
354
|
* Sets the maximum selectable date
|
|
322
355
|
* @param date - Date object or string
|
|
323
356
|
* @returns The datepicker component for chaining
|
|
324
357
|
*/
|
|
325
|
-
setMaxDate: (date: Date | string) => DatePickerComponent
|
|
358
|
+
setMaxDate: (date: Date | string) => DatePickerComponent<V>;
|
|
326
359
|
/**
|
|
327
360
|
* Destroys the datepicker component and cleans up resources
|
|
328
361
|
*/
|
|
@@ -333,14 +366,14 @@ export interface DatePickerComponent {
|
|
|
333
366
|
* @param handler - Event handler function
|
|
334
367
|
* @returns The datepicker component for chaining
|
|
335
368
|
*/
|
|
336
|
-
on: <K extends keyof DatePickerEvents
|
|
369
|
+
on: <K extends keyof DatePickerEvents<V>>(event: K, handler: DatePickerEvents<V>[K]) => DatePickerComponent<V>;
|
|
337
370
|
/**
|
|
338
371
|
* Removes an event listener from the datepicker
|
|
339
372
|
* @param event - Event name
|
|
340
373
|
* @param handler - Event handler function
|
|
341
374
|
* @returns The datepicker component for chaining
|
|
342
375
|
*/
|
|
343
|
-
off: <K extends keyof DatePickerEvents
|
|
376
|
+
off: <K extends keyof DatePickerEvents<V>>(event: K, handler: DatePickerEvents<V>[K]) => DatePickerComponent<V>;
|
|
344
377
|
}
|
|
345
378
|
/** Internal calendar view model. Dates are local civil dates, without a time. */
|
|
346
379
|
export interface DatePickerState {
|
|
@@ -77,3 +77,8 @@ export declare const addMonths: (date: Date, months: number) => Date;
|
|
|
77
77
|
* @returns New date with years added
|
|
78
78
|
*/
|
|
79
79
|
export declare const addYears: (date: Date, years: number) => Date;
|
|
80
|
+
/**
|
|
81
|
+
* A value as ISO 8601 text, the `<m-datepicker>` element's value: a date
|
|
82
|
+
* (`2026-09-10`), a `start/end` interval, or "" (FLO-320).
|
|
83
|
+
*/
|
|
84
|
+
export declare const toIsoValue: (value: Date | [Date, Date] | null, end?: Date | null) => string;
|
|
@@ -178,3 +178,5 @@ export const addMonths = (date, months) => {
|
|
|
178
178
|
export const addYears = (date, years) => {
|
|
179
179
|
return addMonths(date, years * 12);
|
|
180
180
|
};
|
|
181
|
+
const isoDate = (date) => (date ? formatDate(date, "YYYY-MM-DD") : "");
|
|
182
|
+
export const toIsoValue = (value, end) => Array.isArray(value) ? `${isoDate(value[0])}/${isoDate(value[1])}` : value && end ? `${isoDate(value)}/${isoDate(end)}` : isoDate(value);
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { removeClass } from "../../core/dom/classes.js";
|
|
2
|
+
import { hideFromTopLayer } from "../../core/dom/layer.js";
|
|
2
3
|
export const withAPI = (options) => (component) => ({
|
|
3
4
|
...component,
|
|
4
5
|
open() {
|
|
@@ -92,6 +93,7 @@ export const withAPI = (options) => (component) => ({
|
|
|
92
93
|
const overlayVisibleClass = `${component.getClass("dialog__overlay")}--visible`;
|
|
93
94
|
removeClass(component.element, dialogVisibleClass);
|
|
94
95
|
removeClass(component.overlay, overlayVisibleClass);
|
|
96
|
+
hideFromTopLayer(component.element);
|
|
95
97
|
if (options.focus && options.focus.releaseFocus) {
|
|
96
98
|
options.focus.releaseFocus();
|
|
97
99
|
}
|
|
@@ -100,6 +102,9 @@ export const withAPI = (options) => (component) => ({
|
|
|
100
102
|
if (component.overlay && component.overlay.parentNode) {
|
|
101
103
|
component.overlay.parentNode.removeChild(component.overlay);
|
|
102
104
|
}
|
|
105
|
+
if (component.element.parentNode !== component.overlay) {
|
|
106
|
+
component.element.remove();
|
|
107
|
+
}
|
|
103
108
|
},
|
|
104
109
|
element: component.element,
|
|
105
110
|
overlay: component.overlay,
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { createComponentConfig, createElementConfig } from "../../core/config/component.js";
|
|
2
|
+
import { supportsTopLayer } from "../../core/dom/layer.js";
|
|
2
3
|
export const defaultConfig = {
|
|
3
4
|
size: 'medium',
|
|
4
5
|
animation: 'scale',
|
|
@@ -12,7 +13,12 @@ export const defaultConfig = {
|
|
|
12
13
|
divider: false,
|
|
13
14
|
buttons: []
|
|
14
15
|
};
|
|
15
|
-
export const createBaseConfig = (config = {}) =>
|
|
16
|
+
export const createBaseConfig = (config = {}) => {
|
|
17
|
+
const merged = createComponentConfig(defaultConfig, config, 'dialog');
|
|
18
|
+
if (merged.layer === 'top' && !supportsTopLayer('modal'))
|
|
19
|
+
merged.layer = undefined;
|
|
20
|
+
return merged;
|
|
21
|
+
};
|
|
16
22
|
export const getElementConfig = (config) => {
|
|
17
23
|
const role = config.role ||
|
|
18
24
|
(config.size === 'fullscreen' ? 'dialog' : 'alertdialog');
|
|
@@ -24,7 +30,7 @@ export const getElementConfig = (config) => {
|
|
|
24
30
|
attributes['aria-modal'] = 'true';
|
|
25
31
|
}
|
|
26
32
|
return createElementConfig(config, {
|
|
27
|
-
tag: 'div',
|
|
33
|
+
tag: config.layer === 'top' ? 'dialog' : 'div',
|
|
28
34
|
attributes,
|
|
29
35
|
className: config.class
|
|
30
36
|
});
|
|
@@ -3,6 +3,8 @@ import createButton from "../button/index.js";
|
|
|
3
3
|
import { createDivider } from "../divider/index.js";
|
|
4
4
|
import { addClass, removeClass } from "../../core/dom/classes.js";
|
|
5
5
|
import { setHTML } from "../../core/dom/html.js";
|
|
6
|
+
import { activeElementOf, deepActiveElement, tabStops, wrapTab } from "../../core/dom/focus.js";
|
|
7
|
+
import { hideFromTopLayer, onTopLayerClose, showInTopLayer } from "../../core/dom/layer.js";
|
|
6
8
|
const DIALOG_EVENTS = {
|
|
7
9
|
OPEN: "open",
|
|
8
10
|
CLOSE: "close",
|
|
@@ -141,9 +143,14 @@ export const withStructure = (config, getComponent) => (component) => {
|
|
|
141
143
|
if (footer) {
|
|
142
144
|
component.element.appendChild(footer);
|
|
143
145
|
}
|
|
144
|
-
overlay.appendChild(component.element);
|
|
145
146
|
const container = config.container || document.body;
|
|
146
|
-
|
|
147
|
+
if (config.layer === "top") {
|
|
148
|
+
container.appendChild(component.element);
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
overlay.appendChild(component.element);
|
|
152
|
+
container.appendChild(overlay);
|
|
153
|
+
}
|
|
147
154
|
return {
|
|
148
155
|
...component,
|
|
149
156
|
overlay,
|
|
@@ -198,10 +205,11 @@ export const withDivider = () => (component) => {
|
|
|
198
205
|
};
|
|
199
206
|
};
|
|
200
207
|
const addButton = (footer, buttonConfig, component, getComponent) => {
|
|
201
|
-
const { text, variant = "text", onClick, closeDialog = true, autofocus = false, attributes = {}, } = buttonConfig;
|
|
208
|
+
const { text, variant = "text", onClick, closeDialog = true, autofocus = false, attributes = {}, size, } = buttonConfig;
|
|
202
209
|
const button = createButton({
|
|
203
210
|
text,
|
|
204
211
|
variant,
|
|
212
|
+
...(size ? { size } : {}),
|
|
205
213
|
...attributes,
|
|
206
214
|
});
|
|
207
215
|
button.on("click", ({ originalEvent: event }) => {
|
|
@@ -239,6 +247,8 @@ export const withVisibility = (getComponent) => (component) => {
|
|
|
239
247
|
const isOpen = component.config.open === true;
|
|
240
248
|
const openDuration = component.config.animationDuration ?? 500;
|
|
241
249
|
const closeDuration = component.config.animationDuration ?? 150;
|
|
250
|
+
const top = component.config.layer === "top";
|
|
251
|
+
const scrim = top ? component.element : component.overlay;
|
|
242
252
|
const focusableElements = 'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])';
|
|
243
253
|
let previouslyFocusedElement = null;
|
|
244
254
|
let mouseDownOnOverlay = false;
|
|
@@ -246,7 +256,7 @@ export const withVisibility = (getComponent) => (component) => {
|
|
|
246
256
|
let scrollLock = null;
|
|
247
257
|
const focusable = () => Array.from(component.element.querySelectorAll(focusableElements)).filter((el) => !el.hasAttribute("disabled") &&
|
|
248
258
|
el.getAttribute("aria-hidden") !== "true" &&
|
|
249
|
-
(el.offsetWidth > 0 || el.offsetHeight > 0 || el ===
|
|
259
|
+
(el.offsetWidth > 0 || el.offsetHeight > 0 || el === activeElementOf(el)));
|
|
250
260
|
function handleTabKey(e) {
|
|
251
261
|
if (e.key !== "Tab")
|
|
252
262
|
return;
|
|
@@ -258,7 +268,7 @@ export const withVisibility = (getComponent) => (component) => {
|
|
|
258
268
|
}
|
|
259
269
|
const first = elements[0];
|
|
260
270
|
const last = elements[elements.length - 1];
|
|
261
|
-
const active =
|
|
271
|
+
const active = activeElementOf(component.element);
|
|
262
272
|
if (e.shiftKey && (active === first || !component.element.contains(active))) {
|
|
263
273
|
last.focus();
|
|
264
274
|
e.preventDefault();
|
|
@@ -271,7 +281,7 @@ export const withVisibility = (getComponent) => (component) => {
|
|
|
271
281
|
const inertBackground = () => {
|
|
272
282
|
if (component.config.modal === false)
|
|
273
283
|
return;
|
|
274
|
-
const parent = component.overlay.parentElement;
|
|
284
|
+
const parent = top ? null : component.overlay.parentElement;
|
|
275
285
|
if (parent) {
|
|
276
286
|
Array.from(parent.children).forEach((sibling) => {
|
|
277
287
|
if (sibling === component.overlay)
|
|
@@ -297,19 +307,21 @@ export const withVisibility = (getComponent) => (component) => {
|
|
|
297
307
|
scrollLock = null;
|
|
298
308
|
}
|
|
299
309
|
};
|
|
310
|
+
const handleWrap = (e) => wrapTab(component.element, e);
|
|
300
311
|
const trapFocus = () => {
|
|
301
312
|
inertBackground();
|
|
302
313
|
if (component.config.autofocus !== false) {
|
|
303
314
|
const requested = component.element.querySelector("[autofocus]");
|
|
304
|
-
const target = requested || focusable()[0] || component.element;
|
|
315
|
+
const target = requested || (top ? tabStops(component.element) : focusable())[0] || component.element;
|
|
305
316
|
target.focus();
|
|
306
317
|
}
|
|
307
318
|
if (component.config.trapFocus !== false) {
|
|
308
|
-
component.element.addEventListener("keydown", handleTabKey);
|
|
319
|
+
component.element.addEventListener("keydown", top ? handleWrap : handleTabKey);
|
|
309
320
|
}
|
|
310
321
|
};
|
|
311
322
|
const releaseFocus = () => {
|
|
312
323
|
component.element.removeEventListener("keydown", handleTabKey);
|
|
324
|
+
component.element.removeEventListener("keydown", handleWrap);
|
|
313
325
|
releaseBackground();
|
|
314
326
|
if (previouslyFocusedElement) {
|
|
315
327
|
if (previouslyFocusedElement.isConnected)
|
|
@@ -319,33 +331,61 @@ export const withVisibility = (getComponent) => (component) => {
|
|
|
319
331
|
};
|
|
320
332
|
const setupEvents = () => {
|
|
321
333
|
if (component.config.closeOnOverlayClick !== false) {
|
|
322
|
-
|
|
334
|
+
scrim.addEventListener("mousedown", handleOverlayMouseDown);
|
|
323
335
|
document.addEventListener("mouseup", handleOverlayMouseUp);
|
|
324
336
|
}
|
|
325
|
-
if (
|
|
337
|
+
if (top) {
|
|
338
|
+
component.element.addEventListener("cancel", handleCancel);
|
|
339
|
+
}
|
|
340
|
+
else if (component.config.closeOnEscape !== false) {
|
|
326
341
|
document.addEventListener("keydown", handleEscKey);
|
|
327
342
|
}
|
|
328
343
|
};
|
|
329
344
|
const cleanupEvents = () => {
|
|
330
|
-
|
|
345
|
+
scrim.removeEventListener("mousedown", handleOverlayMouseDown);
|
|
331
346
|
document.removeEventListener("mouseup", handleOverlayMouseUp);
|
|
332
347
|
document.removeEventListener("keydown", handleEscKey);
|
|
348
|
+
component.element.removeEventListener("cancel", handleCancel);
|
|
349
|
+
};
|
|
350
|
+
const onScrim = (e) => {
|
|
351
|
+
if (!top)
|
|
352
|
+
return e.target === component.overlay;
|
|
353
|
+
if (e.composedPath()[0] !== scrim)
|
|
354
|
+
return false;
|
|
355
|
+
const box = scrim.getBoundingClientRect();
|
|
356
|
+
return e.clientX < box.left || e.clientX > box.right || e.clientY < box.top || e.clientY > box.bottom;
|
|
333
357
|
};
|
|
334
358
|
function handleOverlayMouseDown(e) {
|
|
335
|
-
mouseDownOnOverlay = e
|
|
359
|
+
mouseDownOnOverlay = onScrim(e);
|
|
336
360
|
}
|
|
337
361
|
function handleOverlayMouseUp(e) {
|
|
338
|
-
if (mouseDownOnOverlay && e
|
|
362
|
+
if (mouseDownOnOverlay && onScrim(e)) {
|
|
339
363
|
visibility.close();
|
|
340
364
|
}
|
|
341
365
|
mouseDownOnOverlay = false;
|
|
342
366
|
}
|
|
367
|
+
function handleCancel(e) {
|
|
368
|
+
e.preventDefault();
|
|
369
|
+
if (component.config.closeOnEscape !== false && visibility.isOpen()) {
|
|
370
|
+
visibility.close();
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
const showModal = () => {
|
|
374
|
+
if (!component.element.isConnected) {
|
|
375
|
+
component.structure.container.appendChild(component.element);
|
|
376
|
+
}
|
|
377
|
+
if (!component.element.isConnected || !showInTopLayer(component.element, { kind: "modal" })) {
|
|
378
|
+
component.element.setAttribute("open", "");
|
|
379
|
+
}
|
|
380
|
+
};
|
|
343
381
|
function handleEscKey(e) {
|
|
344
382
|
if (e.key === "Escape" && visibility.isOpen()) {
|
|
345
383
|
visibility.close();
|
|
346
384
|
}
|
|
347
385
|
}
|
|
348
386
|
if (isOpen) {
|
|
387
|
+
if (top)
|
|
388
|
+
showModal();
|
|
349
389
|
addClass(component.overlay, `${component.getClass("dialog__overlay")}--visible`);
|
|
350
390
|
addClass(component.element, `${component.getClass("dialog")}--visible`);
|
|
351
391
|
trapFocus();
|
|
@@ -355,7 +395,7 @@ export const withVisibility = (getComponent) => (component) => {
|
|
|
355
395
|
open() {
|
|
356
396
|
if (this.isOpen())
|
|
357
397
|
return;
|
|
358
|
-
previouslyFocusedElement =
|
|
398
|
+
previouslyFocusedElement = deepActiveElement();
|
|
359
399
|
const beforeOpenEvent = {
|
|
360
400
|
dialog: getComponent(),
|
|
361
401
|
defaultPrevented: false,
|
|
@@ -368,6 +408,18 @@ export const withVisibility = (getComponent) => (component) => {
|
|
|
368
408
|
}
|
|
369
409
|
if (beforeOpenEvent.defaultPrevented)
|
|
370
410
|
return;
|
|
411
|
+
if (top) {
|
|
412
|
+
showModal();
|
|
413
|
+
void component.element.offsetWidth;
|
|
414
|
+
addClass(component.element, `${component.getClass("dialog")}--visible`);
|
|
415
|
+
trapFocus();
|
|
416
|
+
setupEvents();
|
|
417
|
+
component.emit(DIALOG_EVENTS.OPEN, { dialog: getComponent() });
|
|
418
|
+
setTimeout(() => {
|
|
419
|
+
component.emit(DIALOG_EVENTS.AFTER_OPEN, { dialog: getComponent() });
|
|
420
|
+
}, openDuration);
|
|
421
|
+
return;
|
|
422
|
+
}
|
|
371
423
|
if (component.overlay && !component.overlay.parentNode) {
|
|
372
424
|
const container = component.structure.container || document.body;
|
|
373
425
|
container.appendChild(component.overlay);
|
|
@@ -403,13 +455,15 @@ export const withVisibility = (getComponent) => (component) => {
|
|
|
403
455
|
const overlayVisibleClass = `${component.getClass("dialog__overlay")}--visible`;
|
|
404
456
|
removeClass(component.element, dialogVisibleClass);
|
|
405
457
|
removeClass(component.overlay, overlayVisibleClass);
|
|
458
|
+
if (top)
|
|
459
|
+
hideFromTopLayer(component.element);
|
|
406
460
|
releaseFocus();
|
|
407
461
|
cleanupEvents();
|
|
408
462
|
if (typeof component.emit === "function") {
|
|
409
463
|
component.emit(DIALOG_EVENTS.CLOSE, { dialog: getComponent() });
|
|
410
464
|
}
|
|
411
465
|
setTimeout(() => {
|
|
412
|
-
if (component.overlay && component.overlay.parentNode) {
|
|
466
|
+
if (!top && component.overlay && component.overlay.parentNode) {
|
|
413
467
|
component.overlay.parentNode.removeChild(component.overlay);
|
|
414
468
|
}
|
|
415
469
|
if (typeof component.emit === "function") {
|
|
@@ -437,6 +491,12 @@ export const withVisibility = (getComponent) => (component) => {
|
|
|
437
491
|
visibility.close();
|
|
438
492
|
});
|
|
439
493
|
}
|
|
494
|
+
if (top) {
|
|
495
|
+
onTopLayerClose(component.element, () => {
|
|
496
|
+
if (visibility.isOpen())
|
|
497
|
+
visibility.close();
|
|
498
|
+
});
|
|
499
|
+
}
|
|
440
500
|
return {
|
|
441
501
|
...component,
|
|
442
502
|
visibility,
|
|
@@ -598,23 +658,31 @@ export const withConfirm = () => (component) => {
|
|
|
598
658
|
return new Promise((resolve) => {
|
|
599
659
|
const { title = "Confirm", message, confirmText = "Yes", cancelText = "No", confirmVariant = "filled", cancelVariant = "text", size = "small", } = options;
|
|
600
660
|
component.content.setTitle(title);
|
|
601
|
-
|
|
661
|
+
const text = document.createElement("p");
|
|
662
|
+
text.textContent = message;
|
|
663
|
+
component.content.setContent(text.outerHTML);
|
|
602
664
|
component.size.setSize(size);
|
|
603
665
|
component._buttons.forEach((button) => button.instance.destroy());
|
|
604
666
|
component._buttons = [];
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
667
|
+
let settled = false;
|
|
668
|
+
const settle = (answer) => {
|
|
669
|
+
if (settled)
|
|
670
|
+
return;
|
|
671
|
+
settled = true;
|
|
672
|
+
component.off("close", onClose);
|
|
673
|
+
resolve(answer);
|
|
674
|
+
};
|
|
675
|
+
const onClose = () => settle(false);
|
|
676
|
+
component.on("close", onClose);
|
|
612
677
|
component.buttons.addButton({
|
|
613
678
|
text: cancelText,
|
|
614
679
|
variant: cancelVariant,
|
|
615
|
-
onClick: () =>
|
|
616
|
-
|
|
617
|
-
|
|
680
|
+
onClick: () => settle(false),
|
|
681
|
+
});
|
|
682
|
+
component.buttons.addButton({
|
|
683
|
+
text: confirmText,
|
|
684
|
+
variant: confirmVariant,
|
|
685
|
+
onClick: () => settle(true),
|
|
618
686
|
});
|
|
619
687
|
component.visibility.open();
|
|
620
688
|
});
|
|
@@ -151,6 +151,17 @@ export interface DialogConfig {
|
|
|
151
151
|
* @default document.body
|
|
152
152
|
*/
|
|
153
153
|
container?: HTMLElement;
|
|
154
|
+
/**
|
|
155
|
+
* `"top"` makes the dialog itself a `<dialog>` element, rendered in place in
|
|
156
|
+
* `container` (or `document.body`) and kept there when it closes, and opens
|
|
157
|
+
* it with `showModal()`: in the browser's top layer, above every z-index and
|
|
158
|
+
* outside any clipping ancestor, with the rest of the page inert. The scrim
|
|
159
|
+
* is its `::backdrop`, and the overlay element is not used. Escape reaches
|
|
160
|
+
* the dialog as its `cancel` event.
|
|
161
|
+
*
|
|
162
|
+
* Where the browser has no `showModal()`, the dialog behaves as without it.
|
|
163
|
+
*/
|
|
164
|
+
layer?: "top";
|
|
154
165
|
/**
|
|
155
166
|
* Footer buttons configuration
|
|
156
167
|
* Array of button objects to display in the footer
|
|
@@ -204,8 +215,9 @@ export interface DialogButton {
|
|
|
204
215
|
*/
|
|
205
216
|
variant?: string;
|
|
206
217
|
/**
|
|
207
|
-
*
|
|
208
|
-
*
|
|
218
|
+
* Has no effect: the button has no colour option, and M3's dialog actions
|
|
219
|
+
* are text buttons in the dialog's own colours.
|
|
220
|
+
* @deprecated Since 0.10 (FLO-324); removed in 1.0.
|
|
209
221
|
*/
|
|
210
222
|
color?: string;
|
|
211
223
|
/**
|
|
@@ -322,6 +334,7 @@ export interface DialogFeatureComponent {
|
|
|
322
334
|
config: DialogConfig & Record<string, unknown>;
|
|
323
335
|
getClass: (name: string) => string;
|
|
324
336
|
on: (event: string, handler: EventCallback) => unknown;
|
|
337
|
+
off: (event: string, handler: EventCallback) => unknown;
|
|
325
338
|
emit: (event: string, data?: unknown) => unknown;
|
|
326
339
|
_buttons?: DialogButtonRecord[];
|
|
327
340
|
}
|
|
@@ -16,6 +16,7 @@ const applyLayout = (component, config) => {
|
|
|
16
16
|
element.setAttribute('aria-orientation', 'vertical');
|
|
17
17
|
const style = element.style;
|
|
18
18
|
style.marginLeft = style.marginRight = style.marginTop = style.marginBottom = '';
|
|
19
|
+
style.marginInlineStart = style.marginInlineEnd = style.marginBlockStart = style.marginBlockEnd = '';
|
|
19
20
|
const cross = horizontal ? 'height' : 'width';
|
|
20
21
|
const main = horizontal ? 'width' : 'height';
|
|
21
22
|
style[cross] = `${thickness}px`;
|
|
@@ -25,8 +26,8 @@ const applyLayout = (component, config) => {
|
|
|
25
26
|
const insetEnd = config.insetEnd !== undefined
|
|
26
27
|
? config.insetEnd
|
|
27
28
|
: (variant === 'middle-inset' ? DEFAULT_INSET : 0);
|
|
28
|
-
style[horizontal ? '
|
|
29
|
-
style[horizontal ? '
|
|
29
|
+
style[horizontal ? 'marginInlineStart' : 'marginBlockStart'] = `${insetStart}px`;
|
|
30
|
+
style[horizontal ? 'marginInlineEnd' : 'marginBlockEnd'] = `${insetEnd}px`;
|
|
30
31
|
style[main] = 'auto';
|
|
31
32
|
}
|
|
32
33
|
};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { createComponentConfig, createElementConfig, } from "../../core/config/component.js";
|
|
2
2
|
import { DRAWER_DEFAULTS } from "./constants.js";
|
|
3
|
+
import { supportsTopLayer } from "../../core/dom/layer.js";
|
|
3
4
|
export const defaultConfig = {
|
|
4
5
|
variant: DRAWER_DEFAULTS.VARIANT,
|
|
5
6
|
position: DRAWER_DEFAULTS.POSITION,
|
|
@@ -9,7 +10,13 @@ export const defaultConfig = {
|
|
|
9
10
|
ripple: DRAWER_DEFAULTS.RIPPLE,
|
|
10
11
|
items: [],
|
|
11
12
|
};
|
|
12
|
-
export const createBaseConfig = (config = {}) =>
|
|
13
|
+
export const createBaseConfig = (config = {}) => {
|
|
14
|
+
const merged = createComponentConfig(defaultConfig, config, "drawer");
|
|
15
|
+
if (merged.layer === "top" && (merged.variant !== "modal" || !supportsTopLayer("modal"))) {
|
|
16
|
+
merged.layer = undefined;
|
|
17
|
+
}
|
|
18
|
+
return merged;
|
|
19
|
+
};
|
|
13
20
|
export const getElementConfig = (config) => {
|
|
14
21
|
const isModal = config.variant === "modal";
|
|
15
22
|
const attributes = {};
|
|
@@ -23,7 +30,7 @@ export const getElementConfig = (config) => {
|
|
|
23
30
|
attributes["aria-label"] = config.ariaLabel || config.headline || "Navigation";
|
|
24
31
|
attributes.tabindex = "-1";
|
|
25
32
|
return createElementConfig(config, {
|
|
26
|
-
tag: "aside",
|
|
33
|
+
tag: config.layer === "top" ? "dialog" : "aside",
|
|
27
34
|
attributes,
|
|
28
35
|
className: [
|
|
29
36
|
config.dense ? `${config.prefix}-drawer--dense` : null,
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { DRAWER_EVENTS } from "../constants.js";
|
|
2
2
|
import { createRipple, } from "../../../core/compose/features/ripple.js";
|
|
3
3
|
import { setHTML } from "../../../core/dom/html.js";
|
|
4
|
+
import { activeElementOf } from "../../../core/dom/focus.js";
|
|
4
5
|
const createItemElement = (item, getClass) => {
|
|
5
6
|
const el = document.createElement("button");
|
|
6
7
|
el.className = getClass("drawer__item");
|
|
@@ -91,6 +92,7 @@ export const withItems = (config) => (component) => {
|
|
|
91
92
|
setActive(item.id);
|
|
92
93
|
const selectEvent = {
|
|
93
94
|
id: item.id,
|
|
95
|
+
value: item.id,
|
|
94
96
|
label: item.label || "",
|
|
95
97
|
index: parseInt(itemEl.dataset.navIndex || "0", 10),
|
|
96
98
|
originalEvent: e,
|
|
@@ -163,7 +165,7 @@ export const withItems = (config) => (component) => {
|
|
|
163
165
|
const items = Array.from(itemsContainer.querySelectorAll(`.${component.getClass("drawer__item")}:not([disabled])`));
|
|
164
166
|
if (!items.length)
|
|
165
167
|
return;
|
|
166
|
-
const currentIndex = items.indexOf(
|
|
168
|
+
const currentIndex = items.indexOf(activeElementOf(itemsContainer));
|
|
167
169
|
let nextIndex = -1;
|
|
168
170
|
switch (e.key) {
|
|
169
171
|
case "ArrowDown":
|