mtrl 0.3.7 → 0.3.9
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/dist/LICENSE +21 -0
- package/dist/README.md +324 -0
- package/dist/components/badge/api.d.ts +48 -0
- package/{src/components/badge/badge.ts → dist/components/badge/badge.d.ts} +14 -57
- package/dist/components/badge/config.d.ts +79 -0
- package/dist/components/badge/constants.d.ts +35 -0
- package/dist/components/badge/features.d.ts +36 -0
- package/dist/components/badge/index.d.ts +8 -0
- package/dist/components/badge/types.d.ts +256 -0
- package/dist/components/bottom-app-bar/bottom-app-bar.d.ts +12 -0
- package/dist/components/bottom-app-bar/config.d.ts +16 -0
- package/dist/components/bottom-app-bar/constants.d.ts +22 -0
- package/{src/components/bottom-app-bar/index.ts → dist/components/bottom-app-bar/index.d.ts} +0 -9
- package/dist/components/bottom-app-bar/types.d.ts +96 -0
- package/dist/components/button/api.d.ts +47 -0
- package/dist/components/button/button.d.ts +25 -0
- package/dist/components/button/config.d.ts +59 -0
- package/dist/components/button/constants.d.ts +43 -0
- package/dist/components/button/index.d.ts +6 -0
- package/dist/components/button/types.d.ts +265 -0
- package/dist/components/card/api.d.ts +11 -0
- package/{src/components/card/card.ts → dist/components/card/card.d.ts} +10 -58
- package/dist/components/card/config.d.ts +105 -0
- package/dist/components/card/constants.d.ts +85 -0
- package/dist/components/card/content.d.ts +92 -0
- package/dist/components/card/features.d.ts +131 -0
- package/{src/components/card/index.ts → dist/components/card/index.d.ts} +13 -74
- package/dist/components/card/types.d.ts +471 -0
- package/dist/components/carousel/api.d.ts +33 -0
- package/dist/components/carousel/carousel.d.ts +75 -0
- package/dist/components/carousel/config.d.ts +45 -0
- package/dist/components/carousel/constants.d.ts +165 -0
- package/dist/components/carousel/features/drag.d.ts +8 -0
- package/{src/components/carousel/features/index.ts → dist/components/carousel/features/index.d.ts} +1 -4
- package/dist/components/carousel/features/slides.d.ts +8 -0
- package/{src/components/carousel/index.ts → dist/components/carousel/index.d.ts} +10 -29
- package/dist/components/carousel/types.d.ts +276 -0
- package/dist/components/checkbox/api.d.ts +7 -0
- package/dist/components/checkbox/checkbox.d.ts +65 -0
- package/dist/components/checkbox/config.d.ts +44 -0
- package/dist/components/checkbox/constants.d.ts +63 -0
- package/{src/components/checkbox/index.ts → dist/components/checkbox/index.d.ts} +8 -25
- package/dist/components/checkbox/types.d.ts +242 -0
- package/dist/components/chips/api.d.ts +49 -0
- package/dist/components/chips/chip/api.d.ts +23 -0
- package/dist/components/chips/chip/chip.d.ts +8 -0
- package/dist/components/chips/chip/config.d.ts +57 -0
- package/dist/components/chips/chip/constants.d.ts +38 -0
- package/dist/components/chips/chip/index.d.ts +2 -0
- package/dist/components/chips/chip/types.d.ts +11 -0
- package/dist/components/chips/chips.d.ts +17 -0
- package/dist/components/chips/config.d.ts +67 -0
- package/dist/components/chips/constants.d.ts +46 -0
- package/dist/components/chips/features/chip-items.d.ts +8 -0
- package/dist/components/chips/features/container.d.ts +8 -0
- package/dist/components/chips/features/controller.d.ts +9 -0
- package/{src/components/chips/features/index.ts → dist/components/chips/features/index.d.ts} +1 -2
- package/dist/components/chips/features/label.d.ts +8 -0
- package/dist/components/chips/index.d.ts +4 -0
- package/dist/components/chips/schema.d.ts +34 -0
- package/dist/components/chips/types.d.ts +398 -0
- package/dist/components/datepicker/api.d.ts +9 -0
- package/dist/components/datepicker/config.d.ts +79 -0
- package/dist/components/datepicker/constants.d.ts +97 -0
- package/dist/components/datepicker/datepicker.d.ts +8 -0
- package/dist/components/datepicker/index.d.ts +3 -0
- package/dist/components/datepicker/render.d.ts +43 -0
- package/dist/components/datepicker/types.d.ts +321 -0
- package/dist/components/datepicker/utils.d.ts +84 -0
- package/dist/components/dialog/api.d.ts +59 -0
- package/dist/components/dialog/config.d.ts +91 -0
- package/dist/components/dialog/constants.d.ts +116 -0
- package/{src/components/dialog/dialog.ts → dist/components/dialog/dialog.d.ts} +16 -69
- package/dist/components/dialog/features.d.ts +37 -0
- package/dist/components/dialog/index.d.ts +14 -0
- package/dist/components/dialog/types.d.ts +483 -0
- package/dist/components/divider/config.d.ts +143 -0
- package/dist/components/divider/constants.d.ts +45 -0
- package/{src/components/divider/divider.ts → dist/components/divider/divider.d.ts} +9 -37
- package/dist/components/divider/features.d.ts +50 -0
- package/{src/components/divider/index.ts → dist/components/divider/index.d.ts} +6 -12
- package/dist/components/divider/types.d.ts +124 -0
- package/dist/components/extended-fab/api.d.ts +83 -0
- package/dist/components/extended-fab/config.d.ts +75 -0
- package/dist/components/extended-fab/constants.d.ts +82 -0
- package/dist/components/extended-fab/extended-fab.d.ts +61 -0
- package/{src/components/extended-fab/index.ts → dist/components/extended-fab/index.d.ts} +6 -15
- package/dist/components/extended-fab/types.d.ts +703 -0
- package/dist/components/fab/api.d.ts +64 -0
- package/dist/components/fab/config.d.ts +71 -0
- package/dist/components/fab/constants.d.ts +75 -0
- package/{src/components/fab/fab.ts → dist/components/fab/fab.d.ts} +10 -46
- package/{src/components/fab/index.ts → dist/components/fab/index.d.ts} +6 -15
- package/dist/components/fab/types.d.ts +577 -0
- package/dist/components/index.d.ts +76 -0
- package/dist/components/list/api.d.ts +106 -0
- package/dist/components/list/config.d.ts +61 -0
- package/dist/components/list/constants.d.ts +76 -0
- package/dist/components/list/features/index.d.ts +2 -0
- package/dist/components/list/features/listmanager.d.ts +9 -0
- package/dist/components/list/features/selection.d.ts +9 -0
- package/dist/components/list/index.d.ts +12 -0
- package/dist/components/list/list.d.ts +11 -0
- package/dist/components/list/types.d.ts +294 -0
- package/dist/components/menu/api.d.ts +58 -0
- package/dist/components/menu/config.d.ts +78 -0
- package/dist/components/menu/constants.d.ts +106 -0
- package/dist/components/menu/features/controller.d.ts +10 -0
- package/dist/components/menu/features/index.d.ts +6 -0
- package/dist/components/menu/features/keyboard.d.ts +26 -0
- package/dist/components/menu/features/opener.d.ts +10 -0
- package/dist/components/menu/features/position.d.ts +18 -0
- package/dist/components/menu/features/submenu.d.ts +10 -0
- package/{src/components/menu/index.ts → dist/components/menu/index.d.ts} +11 -27
- package/dist/components/menu/menu.d.ts +29 -0
- package/dist/components/menu/types.d.ts +338 -0
- package/dist/components/navigation/api.d.ts +8 -0
- package/dist/components/navigation/config.d.ts +34 -0
- package/dist/components/navigation/constants.d.ts +137 -0
- package/dist/components/navigation/features/controller.d.ts +30 -0
- package/dist/components/navigation/features/items.d.ts +32 -0
- package/dist/components/navigation/index.d.ts +3 -0
- package/dist/components/navigation/nav-item.d.ts +30 -0
- package/dist/components/navigation/navigation.d.ts +8 -0
- package/dist/components/navigation/system/core.d.ts +72 -0
- package/dist/components/navigation/system/events.d.ts +35 -0
- package/dist/components/navigation/system/index.d.ts +10 -0
- package/dist/components/navigation/system/mobile.d.ts +52 -0
- package/dist/components/navigation/system/state.d.ts +22 -0
- package/dist/components/navigation/system/types.d.ts +305 -0
- package/dist/components/navigation/types.d.ts +216 -0
- package/dist/components/progress/api.d.ts +46 -0
- package/dist/components/progress/config.d.ts +63 -0
- package/dist/components/progress/constants.d.ts +58 -0
- package/dist/components/progress/index.d.ts +3 -0
- package/dist/components/progress/progress.d.ts +24 -0
- package/dist/components/progress/types.d.ts +199 -0
- package/dist/components/radios/api.d.ts +37 -0
- package/dist/components/radios/config.d.ts +42 -0
- package/dist/components/radios/constants.d.ts +114 -0
- package/dist/components/radios/index.d.ts +3 -0
- package/dist/components/radios/radio.d.ts +8 -0
- package/dist/components/radios/radios.d.ts +8 -0
- package/dist/components/radios/types.d.ts +189 -0
- package/dist/components/search/api.d.ts +55 -0
- package/dist/components/search/config.d.ts +73 -0
- package/dist/components/search/constants.d.ts +128 -0
- package/{src/components/search/features/index.ts → dist/components/search/features/index.d.ts} +1 -2
- package/dist/components/search/features/search.d.ts +7 -0
- package/dist/components/search/features/states.d.ts +8 -0
- package/dist/components/search/features/structure.d.ts +7 -0
- package/dist/components/search/index.d.ts +3 -0
- package/dist/components/search/search.d.ts +8 -0
- package/dist/components/search/types.d.ts +132 -0
- package/dist/components/segmented-button/config.d.ts +65 -0
- package/dist/components/segmented-button/constants.d.ts +85 -0
- package/dist/components/segmented-button/index.d.ts +4 -0
- package/dist/components/segmented-button/segment.d.ts +15 -0
- package/dist/components/segmented-button/segmented-button.d.ts +49 -0
- package/dist/components/segmented-button/types.d.ts +257 -0
- package/dist/components/select/api.d.ts +8 -0
- package/dist/components/select/config.d.ts +18 -0
- package/dist/components/select/constants.d.ts +113 -0
- package/dist/components/select/features.d.ts +13 -0
- package/{src/components/select/index.ts → dist/components/select/index.d.ts} +7 -20
- package/dist/components/select/select.d.ts +36 -0
- package/dist/components/select/types.d.ts +302 -0
- package/dist/components/sheet/api.d.ts +37 -0
- package/dist/components/sheet/config.d.ts +42 -0
- package/dist/components/sheet/constants.d.ts +136 -0
- package/dist/components/sheet/features/content.d.ts +6 -0
- package/dist/components/sheet/features/gestures.d.ts +6 -0
- package/{src/components/sheet/features/index.ts → dist/components/sheet/features/index.d.ts} +1 -2
- package/dist/components/sheet/features/position.d.ts +7 -0
- package/dist/components/sheet/features/state.d.ts +6 -0
- package/dist/components/sheet/features/title.d.ts +6 -0
- package/dist/components/sheet/index.d.ts +3 -0
- package/dist/components/sheet/sheet.d.ts +8 -0
- package/dist/components/sheet/types.d.ts +250 -0
- package/dist/components/slider/api.d.ts +57 -0
- package/dist/components/slider/config.d.ts +75 -0
- package/dist/components/slider/constants.d.ts +138 -0
- package/dist/components/slider/features/controller.d.ts +9 -0
- package/dist/components/slider/features/handlers.d.ts +25 -0
- package/dist/components/slider/features/index.d.ts +3 -0
- package/dist/components/slider/features/range.d.ts +8 -0
- package/dist/components/slider/features/states.d.ts +9 -0
- package/dist/components/slider/index.d.ts +3 -0
- package/dist/components/slider/schema.d.ts +108 -0
- package/dist/components/slider/slider.d.ts +18 -0
- package/dist/components/slider/types.d.ts +170 -0
- package/dist/components/snackbar/api.d.ts +7 -0
- package/dist/components/snackbar/config.d.ts +55 -0
- package/dist/components/snackbar/constants.d.ts +88 -0
- package/dist/components/snackbar/features.d.ts +13 -0
- package/dist/components/snackbar/index.d.ts +3 -0
- package/dist/components/snackbar/position.d.ts +15 -0
- package/dist/components/snackbar/queue.d.ts +7 -0
- package/dist/components/snackbar/snackbar.d.ts +8 -0
- package/dist/components/snackbar/types.d.ts +172 -0
- package/dist/components/switch/api.d.ts +7 -0
- package/dist/components/switch/config.d.ts +34 -0
- package/dist/components/switch/constants.d.ts +88 -0
- package/dist/components/switch/features.d.ts +59 -0
- package/dist/components/switch/index.d.ts +4 -0
- package/dist/components/switch/switch.d.ts +8 -0
- package/dist/components/switch/types.d.ts +131 -0
- package/dist/components/tabs/api.d.ts +52 -0
- package/dist/components/tabs/config.d.ts +39 -0
- package/dist/components/tabs/constants.d.ts +142 -0
- package/dist/components/tabs/features.d.ts +133 -0
- package/dist/components/tabs/index.d.ts +11 -0
- package/dist/components/tabs/indicator.d.ts +49 -0
- package/dist/components/tabs/responsive.d.ts +38 -0
- package/dist/components/tabs/scroll-indicators.d.ts +18 -0
- package/dist/components/tabs/state.d.ts +53 -0
- package/dist/components/tabs/tab-api.d.ts +43 -0
- package/dist/components/tabs/tab.d.ts +7 -0
- package/dist/components/tabs/tabs.d.ts +27 -0
- package/dist/components/tabs/types.d.ts +390 -0
- package/dist/components/tabs/utils.d.ts +17 -0
- package/dist/components/textfield/api.d.ts +8 -0
- package/dist/components/textfield/config.d.ts +34 -0
- package/dist/components/textfield/constants.d.ts +148 -0
- package/{src/components/textfield/features/index.ts → dist/components/textfield/features/index.d.ts} +1 -6
- package/dist/components/textfield/features/leading-icon.d.ts +55 -0
- package/dist/components/textfield/features/placement.d.ts +28 -0
- package/dist/components/textfield/features/prefix-text.d.ts +54 -0
- package/dist/components/textfield/features/suffix-text.d.ts +54 -0
- package/dist/components/textfield/features/supporting-text.d.ts +59 -0
- package/dist/components/textfield/features/trailing-icon.d.ts +55 -0
- package/dist/components/textfield/index.d.ts +3 -0
- package/dist/components/textfield/textfield.d.ts +36 -0
- package/dist/components/textfield/types.d.ts +217 -0
- package/dist/components/timepicker/api.d.ts +24 -0
- package/dist/components/timepicker/clockdial.d.ts +34 -0
- package/dist/components/timepicker/config.d.ts +75 -0
- package/dist/components/timepicker/constants.d.ts +266 -0
- package/dist/components/timepicker/index.d.ts +4 -0
- package/dist/components/timepicker/render.d.ts +9 -0
- package/dist/components/timepicker/timepicker.d.ts +8 -0
- package/dist/components/timepicker/types.d.ts +284 -0
- package/dist/components/timepicker/utils.d.ts +74 -0
- package/dist/components/tooltip/api.d.ts +18 -0
- package/dist/components/tooltip/config.d.ts +38 -0
- package/dist/components/tooltip/constants.d.ts +108 -0
- package/dist/components/tooltip/index.d.ts +3 -0
- package/dist/components/tooltip/tooltip.d.ts +8 -0
- package/dist/components/tooltip/types.d.ts +188 -0
- package/dist/components/top-app-bar/config.d.ts +16 -0
- package/dist/components/top-app-bar/constants.d.ts +74 -0
- package/{src/components/top-app-bar/index.ts → dist/components/top-app-bar/index.d.ts} +2 -4
- package/dist/components/top-app-bar/top-app-bar.d.ts +68 -0
- package/dist/components/top-app-bar/types.d.ts +118 -0
- package/dist/constants.d.ts +30 -0
- package/dist/core/collection/adapters/base.d.ts +47 -0
- package/dist/core/collection/adapters/route.d.ts +149 -0
- package/dist/core/collection/collection.d.ts +131 -0
- package/dist/core/collection/index.d.ts +10 -0
- package/dist/core/collection/list-manager/config.d.ts +29 -0
- package/dist/core/collection/list-manager/dom-elements.d.ts +30 -0
- package/dist/core/collection/list-manager/index.d.ts +61 -0
- package/dist/core/collection/list-manager/item-measurement.d.ts +91 -0
- package/dist/core/collection/list-manager/renderer.d.ts +31 -0
- package/dist/core/collection/list-manager/scroll-tracker.d.ts +20 -0
- package/dist/core/collection/list-manager/state.d.ts +60 -0
- package/dist/core/collection/list-manager/types.d.ts +361 -0
- package/dist/core/collection/list-manager/utils/recycling.d.ts +34 -0
- package/dist/core/collection/list-manager/utils/visibility.d.ts +45 -0
- package/dist/core/compose/base.d.ts +31 -0
- package/dist/core/compose/component.d.ts +61 -0
- package/dist/core/compose/features/badge.d.ts +43 -0
- package/dist/core/compose/features/checkable.d.ts +59 -0
- package/dist/core/compose/features/constants.d.ts +45 -0
- package/dist/core/compose/features/debounce.d.ts +84 -0
- package/dist/core/compose/features/disabled.d.ts +47 -0
- package/dist/core/compose/features/events.d.ts +37 -0
- package/dist/core/compose/features/gestures/longpress.d.ts +85 -0
- package/dist/core/compose/features/gestures/pan.d.ts +108 -0
- package/dist/core/compose/features/gestures/pinch.d.ts +111 -0
- package/dist/core/compose/features/gestures/rotate.d.ts +111 -0
- package/dist/core/compose/features/gestures/swipe.d.ts +149 -0
- package/dist/core/compose/features/gestures/tap.d.ts +79 -0
- package/dist/core/compose/features/gestures.d.ts +86 -0
- package/dist/core/compose/features/icon.d.ts +71 -0
- package/{src/core/compose/features/index.ts → dist/core/compose/features/index.d.ts} +7 -8
- package/dist/core/compose/features/input.d.ts +71 -0
- package/dist/core/compose/features/lifecycle.d.ts +61 -0
- package/dist/core/compose/features/position.d.ts +51 -0
- package/dist/core/compose/features/ripple.d.ts +61 -0
- package/dist/core/compose/features/size.d.ts +17 -0
- package/dist/core/compose/features/style.d.ts +16 -0
- package/dist/core/compose/features/text.d.ts +63 -0
- package/dist/core/compose/features/textinput.d.ts +93 -0
- package/dist/core/compose/features/textlabel.d.ts +57 -0
- package/dist/core/compose/features/throttle.d.ts +75 -0
- package/dist/core/compose/features/track.d.ts +42 -0
- package/dist/core/compose/features/variant.d.ts +17 -0
- package/dist/core/compose/features/withEvents.d.ts +45 -0
- package/dist/core/compose/index.d.ts +17 -0
- package/{src/core/compose/pipe.ts → dist/core/compose/pipe.d.ts} +4 -20
- package/dist/core/compose/utils/type-guards.d.ts +27 -0
- package/dist/core/composition/features/dom.d.ts +19 -0
- package/dist/core/composition/features/icon.d.ts +45 -0
- package/{src/core/composition/features/index.ts → dist/core/composition/features/index.d.ts} +1 -6
- package/dist/core/composition/features/label.d.ts +49 -0
- package/{src/core/composition/features/layout.ts → dist/core/composition/features/layout.d.ts} +8 -24
- package/{src/core/composition/index.ts → dist/core/composition/index.d.ts} +4 -14
- package/{src/core/config/component-config.ts → dist/core/config/component.d.ts} +34 -82
- package/dist/core/config.d.ts +130 -0
- package/{src/core/dom/attributes.ts → dist/core/dom/attributes.d.ts} +2 -13
- package/dist/core/dom/classes.d.ts +42 -0
- package/dist/core/dom/create.d.ts +124 -0
- package/dist/core/dom/events.d.ts +69 -0
- package/{src/core/dom/index.ts → dist/core/dom/index.d.ts} +1 -5
- package/dist/core/dom/utils.d.ts +42 -0
- package/dist/core/gestures/index.d.ts +12 -0
- package/dist/core/gestures/longpress.d.ts +23 -0
- package/dist/core/gestures/manager.d.ts +14 -0
- package/dist/core/gestures/pan.d.ts +12 -0
- package/dist/core/gestures/pinch.d.ts +14 -0
- package/dist/core/gestures/rotate.d.ts +14 -0
- package/dist/core/gestures/swipe.d.ts +20 -0
- package/dist/core/gestures/tap.d.ts +12 -0
- package/dist/core/gestures/types.d.ts +320 -0
- package/dist/core/gestures/utils.d.ts +57 -0
- package/dist/core/index.d.ts +29 -0
- package/dist/core/layout/array.d.ts +15 -0
- package/dist/core/layout/config.d.ts +32 -0
- package/dist/core/layout/create.d.ts +14 -0
- package/dist/core/layout/index.d.ts +13 -0
- package/dist/core/layout/jsx.d.ts +13 -0
- package/dist/core/layout/object.d.ts +14 -0
- package/dist/core/layout/processor.d.ts +28 -0
- package/dist/core/layout/result.d.ts +12 -0
- package/dist/core/layout/template.d.ts +12 -0
- package/dist/core/layout/types.d.ts +137 -0
- package/dist/core/layout/utils.d.ts +38 -0
- package/dist/core/state/disabled.d.ts +32 -0
- package/dist/core/state/emitter.d.ts +40 -0
- package/dist/core/state/events.d.ts +36 -0
- package/{src/core/state/index.ts → dist/core/state/index.d.ts} +1 -7
- package/dist/core/state/lifecycle.d.ts +57 -0
- package/dist/core/state/store.d.ts +82 -0
- package/dist/core/utils/background.d.ts +40 -0
- package/dist/core/utils/index.d.ts +23 -0
- package/dist/core/utils/mobile.d.ts +54 -0
- package/dist/core/utils/object.d.ts +13 -0
- package/dist/core/utils/performance.d.ts +79 -0
- package/dist/core/utils/validate.d.ts +73 -0
- package/dist/index.cjs +64 -0
- package/dist/index.cjs.map +285 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.js +53 -14854
- package/dist/index.js.map +285 -0
- package/dist/package.json +39 -0
- package/dist/styles.css +7 -0
- package/package.json +24 -5
- package/.env +0 -15
- package/.typedocignore +0 -11
- package/CONTRIBUTING.md +0 -218
- package/DOCS.md +0 -153
- package/TESTING.md +0 -214
- package/git-user-stats.js +0 -545
- package/index.ts +0 -10
- package/src/components/badge/api.ts +0 -313
- package/src/components/badge/config.ts +0 -153
- package/src/components/badge/features.ts +0 -194
- package/src/components/badge/index.ts +0 -90
- package/src/components/badge/types.ts +0 -279
- package/src/components/bottom-app-bar/bottom-app-bar.ts +0 -154
- package/src/components/bottom-app-bar/config.ts +0 -29
- package/src/components/bottom-app-bar/types.ts +0 -114
- package/src/components/button/api.ts +0 -172
- package/src/components/button/button.ts +0 -112
- package/src/components/button/config.ts +0 -96
- package/src/components/button/index.ts +0 -37
- package/src/components/button/types.ts +0 -290
- package/src/components/card/api.ts +0 -222
- package/src/components/card/config.ts +0 -304
- package/src/components/card/content.ts +0 -343
- package/src/components/card/features.ts +0 -407
- package/src/components/card/types.ts +0 -497
- package/src/components/carousel/api.ts +0 -147
- package/src/components/carousel/carousel.ts +0 -242
- package/src/components/carousel/config.ts +0 -91
- package/src/components/carousel/constants.ts +0 -181
- package/src/components/carousel/features/drag.ts +0 -388
- package/src/components/carousel/features/slides.ts +0 -682
- package/src/components/carousel/types.ts +0 -327
- package/src/components/checkbox/api.ts +0 -82
- package/src/components/checkbox/checkbox.ts +0 -142
- package/src/components/checkbox/config.ts +0 -89
- package/src/components/checkbox/types.ts +0 -342
- package/src/components/chips/api.ts +0 -194
- package/src/components/chips/chip/api.ts +0 -233
- package/src/components/chips/chip/chip.ts +0 -131
- package/src/components/chips/chip/config.ts +0 -91
- package/src/components/chips/chip/index.ts +0 -3
- package/src/components/chips/chips.md +0 -481
- package/src/components/chips/chips.ts +0 -75
- package/src/components/chips/config.ts +0 -109
- package/src/components/chips/constants.ts +0 -61
- package/src/components/chips/features/chip-items.ts +0 -33
- package/src/components/chips/features/container.ts +0 -77
- package/src/components/chips/features/controller.ts +0 -448
- package/src/components/chips/features/label.ts +0 -108
- package/src/components/chips/index.ts +0 -11
- package/src/components/chips/schema.ts +0 -61
- package/src/components/chips/types.ts +0 -469
- package/src/components/datepicker/api.ts +0 -265
- package/src/components/datepicker/config.ts +0 -141
- package/src/components/datepicker/datepicker.ts +0 -341
- package/src/components/datepicker/index.ts +0 -12
- package/src/components/datepicker/render.ts +0 -450
- package/src/components/datepicker/types.ts +0 -397
- package/src/components/datepicker/utils.ts +0 -289
- package/src/components/dialog/api.ts +0 -317
- package/src/components/dialog/config.ts +0 -116
- package/src/components/dialog/features.ts +0 -907
- package/src/components/dialog/index.ts +0 -141
- package/src/components/dialog/types.ts +0 -553
- package/src/components/divider/config.ts +0 -165
- package/src/components/divider/features.ts +0 -233
- package/src/components/divider/types.ts +0 -132
- package/src/components/extended-fab/api.ts +0 -193
- package/src/components/extended-fab/config.ts +0 -140
- package/src/components/extended-fab/extended-fab.ts +0 -153
- package/src/components/extended-fab/types.ts +0 -749
- package/src/components/fab/api.ts +0 -137
- package/src/components/fab/config.ts +0 -121
- package/src/components/fab/types.ts +0 -615
- package/src/components/list/api.ts +0 -82
- package/src/components/list/config.ts +0 -63
- package/src/components/list/features.ts +0 -229
- package/src/components/list/index.ts +0 -67
- package/src/components/list/list-item.ts +0 -163
- package/src/components/list/list.ts +0 -108
- package/src/components/list/types.ts +0 -396
- package/src/components/list/utils.ts +0 -98
- package/src/components/menu/api.ts +0 -193
- package/src/components/menu/config.ts +0 -125
- package/src/components/menu/features/anchor.ts +0 -243
- package/src/components/menu/features/controller.ts +0 -1167
- package/src/components/menu/features/index.ts +0 -5
- package/src/components/menu/features/position.ts +0 -353
- package/src/components/menu/menu.ts +0 -119
- package/src/components/menu/types.ts +0 -379
- package/src/components/navigation/api.ts +0 -142
- package/src/components/navigation/config.ts +0 -73
- package/src/components/navigation/features/controller.ts +0 -273
- package/src/components/navigation/features/items.ts +0 -353
- package/src/components/navigation/index.ts +0 -11
- package/src/components/navigation/nav-item.ts +0 -196
- package/src/components/navigation/navigation.ts +0 -115
- package/src/components/navigation/system/core.ts +0 -302
- package/src/components/navigation/system/events.ts +0 -240
- package/src/components/navigation/system/index.ts +0 -184
- package/src/components/navigation/system/mobile.ts +0 -278
- package/src/components/navigation/system/state.ts +0 -77
- package/src/components/navigation/system/types.ts +0 -364
- package/src/components/navigation/types.ts +0 -292
- package/src/components/progress/api.ts +0 -178
- package/src/components/progress/config.ts +0 -122
- package/src/components/progress/index.ts +0 -4
- package/src/components/progress/progress.ts +0 -159
- package/src/components/progress/types.ts +0 -255
- package/src/components/radios/api.ts +0 -125
- package/src/components/radios/config.ts +0 -59
- package/src/components/radios/constants.ts +0 -19
- package/src/components/radios/index.ts +0 -3
- package/src/components/radios/radio.ts +0 -292
- package/src/components/radios/radios.ts +0 -43
- package/src/components/radios/types.ts +0 -219
- package/src/components/search/api.ts +0 -203
- package/src/components/search/config.ts +0 -86
- package/src/components/search/features/search.ts +0 -717
- package/src/components/search/features/states.ts +0 -169
- package/src/components/search/features/structure.ts +0 -197
- package/src/components/search/index.ts +0 -7
- package/src/components/search/search.ts +0 -52
- package/src/components/search/types.ts +0 -175
- package/src/components/segmented-button/config.ts +0 -119
- package/src/components/segmented-button/index.ts +0 -4
- package/src/components/segmented-button/segment.ts +0 -108
- package/src/components/segmented-button/segmented-button.ts +0 -361
- package/src/components/segmented-button/types.ts +0 -306
- package/src/components/select/api.ts +0 -78
- package/src/components/select/config.ts +0 -76
- package/src/components/select/features.ts +0 -317
- package/src/components/select/select.ts +0 -73
- package/src/components/select/types.ts +0 -355
- package/src/components/sheet/api.ts +0 -96
- package/src/components/sheet/config.ts +0 -65
- package/src/components/sheet/features/content.ts +0 -51
- package/src/components/sheet/features/gestures.ts +0 -177
- package/src/components/sheet/features/position.ts +0 -41
- package/src/components/sheet/features/state.ts +0 -116
- package/src/components/sheet/features/title.ts +0 -86
- package/src/components/sheet/index.ts +0 -12
- package/src/components/sheet/sheet.ts +0 -56
- package/src/components/sheet/types.ts +0 -294
- package/src/components/slider/accessibility.md +0 -59
- package/src/components/slider/api.ts +0 -192
- package/src/components/slider/config.ts +0 -118
- package/src/components/slider/features/controller.ts +0 -737
- package/src/components/slider/features/handlers.ts +0 -497
- package/src/components/slider/features/index.ts +0 -5
- package/src/components/slider/features/range.ts +0 -104
- package/src/components/slider/features/states.ts +0 -195
- package/src/components/slider/index.ts +0 -17
- package/src/components/slider/schema.ts +0 -141
- package/src/components/slider/slider.ts +0 -76
- package/src/components/slider/types.ts +0 -223
- package/src/components/snackbar/api.ts +0 -162
- package/src/components/snackbar/config.ts +0 -61
- package/src/components/snackbar/features.ts +0 -76
- package/src/components/snackbar/index.ts +0 -9
- package/src/components/snackbar/position.ts +0 -79
- package/src/components/snackbar/queue.ts +0 -76
- package/src/components/snackbar/snackbar.ts +0 -60
- package/src/components/snackbar/types.ts +0 -159
- package/src/components/switch/api.ts +0 -93
- package/src/components/switch/config.ts +0 -56
- package/src/components/switch/features.ts +0 -198
- package/src/components/switch/index.ts +0 -8
- package/src/components/switch/switch.ts +0 -52
- package/src/components/switch/types.ts +0 -168
- package/src/components/tabs/api.ts +0 -221
- package/src/components/tabs/config.ts +0 -73
- package/src/components/tabs/features.ts +0 -403
- package/src/components/tabs/index.ts +0 -46
- package/src/components/tabs/indicator.ts +0 -285
- package/src/components/tabs/responsive.ts +0 -144
- package/src/components/tabs/scroll-indicators.ts +0 -149
- package/src/components/tabs/state.ts +0 -186
- package/src/components/tabs/tab-api.ts +0 -266
- package/src/components/tabs/tab.ts +0 -267
- package/src/components/tabs/tabs.ts +0 -71
- package/src/components/tabs/types.ts +0 -461
- package/src/components/tabs/utils.ts +0 -107
- package/src/components/textfield/api.ts +0 -197
- package/src/components/textfield/config.ts +0 -52
- package/src/components/textfield/features/leading-icon.ts +0 -127
- package/src/components/textfield/features/placement.ts +0 -149
- package/src/components/textfield/features/prefix-text.ts +0 -107
- package/src/components/textfield/features/suffix-text.ts +0 -100
- package/src/components/textfield/features/supporting-text.ts +0 -113
- package/src/components/textfield/features/trailing-icon.ts +0 -108
- package/src/components/textfield/index.ts +0 -9
- package/src/components/textfield/textfield.ts +0 -92
- package/src/components/textfield/types.ts +0 -265
- package/src/components/timepicker/README.md +0 -277
- package/src/components/timepicker/api.ts +0 -632
- package/src/components/timepicker/clockdial.ts +0 -479
- package/src/components/timepicker/config.ts +0 -228
- package/src/components/timepicker/index.ts +0 -3
- package/src/components/timepicker/render.ts +0 -613
- package/src/components/timepicker/timepicker.ts +0 -117
- package/src/components/timepicker/types.ts +0 -336
- package/src/components/timepicker/utils.ts +0 -241
- package/src/components/tooltip/api.ts +0 -415
- package/src/components/tooltip/config.ts +0 -80
- package/src/components/tooltip/index.ts +0 -12
- package/src/components/tooltip/tooltip.ts +0 -60
- package/src/components/tooltip/types.ts +0 -223
- package/src/components/top-app-bar/config.ts +0 -83
- package/src/components/top-app-bar/top-app-bar.ts +0 -316
- package/src/components/top-app-bar/types.ts +0 -140
- package/src/core/build/constants.ts +0 -48
- package/src/core/build/icon.ts +0 -137
- package/src/core/build/ripple.ts +0 -193
- package/src/core/build/text.ts +0 -91
- package/src/core/collection/adapters/base.ts +0 -62
- package/src/core/collection/adapters/route.ts +0 -201
- package/src/core/collection/collection.ts +0 -300
- package/src/core/collection/index.ts +0 -57
- package/src/core/collection/list-manager.ts +0 -333
- package/src/core/compose/base.ts +0 -43
- package/src/core/compose/component.ts +0 -255
- package/src/core/compose/features/badge.ts +0 -79
- package/src/core/compose/features/checkable.ts +0 -155
- package/src/core/compose/features/disabled.ts +0 -116
- package/src/core/compose/features/events.ts +0 -65
- package/src/core/compose/features/icon.ts +0 -71
- package/src/core/compose/features/input.ts +0 -174
- package/src/core/compose/features/lifecycle.ts +0 -139
- package/src/core/compose/features/position.ts +0 -94
- package/src/core/compose/features/ripple.ts +0 -58
- package/src/core/compose/features/size.ts +0 -29
- package/src/core/compose/features/style.ts +0 -31
- package/src/core/compose/features/text.ts +0 -44
- package/src/core/compose/features/textinput.ts +0 -238
- package/src/core/compose/features/textlabel.ts +0 -113
- package/src/core/compose/features/track.ts +0 -84
- package/src/core/compose/features/variant.ts +0 -29
- package/src/core/compose/features/withEvents.ts +0 -137
- package/src/core/compose/index.ts +0 -54
- package/src/core/composition/features/dom.ts +0 -45
- package/src/core/composition/features/icon.ts +0 -131
- package/src/core/composition/features/label.ts +0 -155
- package/src/core/config.ts +0 -211
- package/src/core/dom/classes.ts +0 -132
- package/src/core/dom/create.ts +0 -273
- package/src/core/dom/events.ts +0 -209
- package/src/core/dom/utils.ts +0 -97
- package/src/core/index.ts +0 -111
- package/src/core/layout/README.md +0 -715
- package/src/core/layout/array.ts +0 -180
- package/src/core/layout/config.ts +0 -193
- package/src/core/layout/create.ts +0 -54
- package/src/core/layout/index.ts +0 -36
- package/src/core/layout/object.ts +0 -123
- package/src/core/layout/processor.ts +0 -106
- package/src/core/layout/result.ts +0 -84
- package/src/core/layout/types.ts +0 -180
- package/src/core/layout/utils.ts +0 -144
- package/src/core/state/disabled.ts +0 -81
- package/src/core/state/emitter.ts +0 -94
- package/src/core/state/events.ts +0 -88
- package/src/core/state/lifecycle.ts +0 -131
- package/src/core/state/store.ts +0 -197
- package/src/core/utils/index.ts +0 -45
- package/src/core/utils/mobile.ts +0 -98
- package/src/core/utils/object.ts +0 -41
- package/src/core/utils/validate.ts +0 -234
- package/src/index.ts +0 -134
- package/src/styles/abstract/_base.scss +0 -2
- package/src/styles/abstract/_config.scss +0 -28
- package/src/styles/abstract/_functions.scss +0 -124
- package/src/styles/abstract/_mixins.scss +0 -352
- package/src/styles/abstract/_theme.scss +0 -269
- package/src/styles/abstract/_variables.scss +0 -305
- package/src/styles/base/_reset.scss +0 -86
- package/src/styles/base/_typography.scss +0 -155
- package/src/styles/components/_badge.scss +0 -182
- package/src/styles/components/_bottom-app-bar.scss +0 -103
- package/src/styles/components/_button.scss +0 -224
- package/src/styles/components/_card.scss +0 -401
- package/src/styles/components/_carousel.scss +0 -645
- package/src/styles/components/_checkbox.scss +0 -231
- package/src/styles/components/_chips.scss +0 -638
- package/src/styles/components/_datepicker.scss +0 -358
- package/src/styles/components/_dialog.scss +0 -259
- package/src/styles/components/_divider.scss +0 -57
- package/src/styles/components/_extended-fab.scss +0 -267
- package/src/styles/components/_fab.scss +0 -225
- package/src/styles/components/_list.scss +0 -248
- package/src/styles/components/_menu.scss +0 -248
- package/src/styles/components/_navigation-mobile.scss +0 -244
- package/src/styles/components/_navigation-system.scss +0 -151
- package/src/styles/components/_navigation.scss +0 -407
- package/src/styles/components/_progress.scss +0 -151
- package/src/styles/components/_radios.scss +0 -187
- package/src/styles/components/_search.scss +0 -306
- package/src/styles/components/_segmented-button.scss +0 -227
- package/src/styles/components/_select.scss +0 -265
- package/src/styles/components/_sheet.scss +0 -236
- package/src/styles/components/_slider.scss +0 -489
- package/src/styles/components/_snackbar.scss +0 -211
- package/src/styles/components/_switch.scss +0 -298
- package/src/styles/components/_tabs.scss +0 -416
- package/src/styles/components/_textfield.scss +0 -773
- package/src/styles/components/_timepicker.scss +0 -451
- package/src/styles/components/_tooltip.scss +0 -241
- package/src/styles/components/_top-app-bar.scss +0 -225
- package/src/styles/main.scss +0 -175
- package/src/styles/themes/_autumn.scss +0 -105
- package/src/styles/themes/_base-theme.scss +0 -85
- package/src/styles/themes/_baseline.scss +0 -173
- package/src/styles/themes/_bluekhaki.scss +0 -125
- package/src/styles/themes/_brownbeige.scss +0 -125
- package/src/styles/themes/_browngreen.scss +0 -125
- package/src/styles/themes/_forest.scss +0 -77
- package/src/styles/themes/_greenbeige.scss +0 -125
- package/src/styles/themes/_index.scss +0 -6
- package/src/styles/themes/_material.scss +0 -125
- package/src/styles/themes/_ocean.scss +0 -77
- package/src/styles/themes/_sageivory.scss +0 -125
- package/src/styles/themes/_spring.scss +0 -77
- package/src/styles/themes/_summer.scss +0 -87
- package/src/styles/themes/_sunset.scss +0 -60
- package/src/styles/themes/_tealcaramel.scss +0 -125
- package/src/styles/themes/_winter.scss +0 -77
- package/src/styles/utilities/_colors.scss +0 -154
- package/src/styles/utilities/_flexbox.scss +0 -194
- package/src/styles/utilities/_layout.scss +0 -665
- package/src/styles/utilities/_ripple.scss +0 -79
- package/src/styles/utilities/_spacing.scss +0 -139
- package/src/styles/utilities/_typography.scss +0 -178
- package/src/styles/utilities/_visibility.scss +0 -142
|
@@ -1,715 +0,0 @@
|
|
|
1
|
-
# Layout Module Documentation
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
|
|
5
|
-
The Layout Module is a lightweight, flexible system for creating and managing visual arrangements and component hierarchies. It provides a declarative approach to building UI layouts using either arrays or objects, with efficient DOM operations, component instantiation, and visual arrangement.
|
|
6
|
-
|
|
7
|
-
## Features
|
|
8
|
-
|
|
9
|
-
- **Multiple Schema Formats** - Support for array-based, object-based, and HTML string schemas
|
|
10
|
-
- **Efficient DOM Operations** - Batched DOM manipulations with DocumentFragment
|
|
11
|
-
- **Component Management** - Easy access to component instances via consistent API
|
|
12
|
-
- **Layout System Integration** - Direct access to powerful CSS layout classes
|
|
13
|
-
- **Customizable Creation** - Control class prefixing and specify default creators
|
|
14
|
-
- **Optimized for Bundle Size** - Minimal footprint with maximum functionality
|
|
15
|
-
- **TypeScript Support** - Full type definitions for developer experience
|
|
16
|
-
|
|
17
|
-
## Installation
|
|
18
|
-
|
|
19
|
-
```bash
|
|
20
|
-
npm install mtrl
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
## Core Concepts
|
|
24
|
-
|
|
25
|
-
The Layout Module consists of several key parts:
|
|
26
|
-
|
|
27
|
-
1. **Schema Definition** - A declarative way to describe your layout
|
|
28
|
-
2. **Layout Processing** - Converting the schema into DOM elements
|
|
29
|
-
3. **Layout Configuration** - Setting up responsive layouts and grids
|
|
30
|
-
4. **Component Instance Management** - Accessing and controlling created components
|
|
31
|
-
|
|
32
|
-
## Basic Usage
|
|
33
|
-
|
|
34
|
-
### Array-based Layout
|
|
35
|
-
|
|
36
|
-
```javascript
|
|
37
|
-
import { createLayout, createButton, createDialog } from 'mtrl';
|
|
38
|
-
|
|
39
|
-
const layout = createLayout([
|
|
40
|
-
// Root level contains primary components
|
|
41
|
-
createButton, 'submitButton', { text: 'Submit', variant: 'primary' },
|
|
42
|
-
|
|
43
|
-
// Dialog is a root component, not nested inside other elements
|
|
44
|
-
createDialog, 'confirmDialog', {
|
|
45
|
-
title: 'Confirm Action',
|
|
46
|
-
closeOnBackdrop: true,
|
|
47
|
-
width: '350px'
|
|
48
|
-
}
|
|
49
|
-
]);
|
|
50
|
-
|
|
51
|
-
// Access components
|
|
52
|
-
const submitButton = layout.get('submitButton');
|
|
53
|
-
const confirmDialog = layout.get('confirmDialog');
|
|
54
|
-
|
|
55
|
-
// Handle events
|
|
56
|
-
submitButton.on('click', () => confirmDialog.open());
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
### Object-based Layout
|
|
60
|
-
|
|
61
|
-
```javascript
|
|
62
|
-
import { createLayout, createTopAppBar, createList, createListItem } from 'mtrl';
|
|
63
|
-
|
|
64
|
-
const layout = createLayout({
|
|
65
|
-
element: {
|
|
66
|
-
creator: createTopAppBar,
|
|
67
|
-
options: {
|
|
68
|
-
title: 'Profile Settings',
|
|
69
|
-
variant: 'small'
|
|
70
|
-
},
|
|
71
|
-
children: {
|
|
72
|
-
navigation: {
|
|
73
|
-
creator: createNavigation,
|
|
74
|
-
options: {
|
|
75
|
-
variant: 'drawer',
|
|
76
|
-
persistent: true,
|
|
77
|
-
// CSS layout configuration
|
|
78
|
-
layout: {
|
|
79
|
-
type: 'stack',
|
|
80
|
-
gap: 4,
|
|
81
|
-
align: 'stretch'
|
|
82
|
-
}
|
|
83
|
-
},
|
|
84
|
-
children: {
|
|
85
|
-
navList: {
|
|
86
|
-
creator: createList,
|
|
87
|
-
options: { interactive: true },
|
|
88
|
-
children: {
|
|
89
|
-
profileLink: {
|
|
90
|
-
creator: createListItem,
|
|
91
|
-
options: { text: 'Profile', leading: 'person' }
|
|
92
|
-
},
|
|
93
|
-
settingsLink: {
|
|
94
|
-
creator: createListItem,
|
|
95
|
-
options: { text: 'Settings', leading: 'settings' }
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
},
|
|
101
|
-
content: {
|
|
102
|
-
options: {
|
|
103
|
-
tag: 'main',
|
|
104
|
-
className: 'content',
|
|
105
|
-
// Grid layout configuration
|
|
106
|
-
layout: {
|
|
107
|
-
type: 'grid',
|
|
108
|
-
columns: 3,
|
|
109
|
-
gap: 6,
|
|
110
|
-
autoHeight: true
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
});
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
### HTML String Layout
|
|
120
|
-
|
|
121
|
-
```javascript
|
|
122
|
-
import { createLayout } from 'mtrl';
|
|
123
|
-
|
|
124
|
-
const layout = createLayout(`
|
|
125
|
-
<div class="notification">
|
|
126
|
-
<h3>Welcome!</h3>
|
|
127
|
-
<p>Thank you for joining our platform.</p>
|
|
128
|
-
</div>
|
|
129
|
-
`);
|
|
130
|
-
|
|
131
|
-
// Access the root element
|
|
132
|
-
const notification = layout.element;
|
|
133
|
-
document.body.appendChild(notification);
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
## Layout Configuration
|
|
137
|
-
|
|
138
|
-
The layout module supports direct integration with the CSS layout system through the `layout` property:
|
|
139
|
-
|
|
140
|
-
### Grid Layout
|
|
141
|
-
|
|
142
|
-
```javascript
|
|
143
|
-
createLayout({
|
|
144
|
-
gridContainer: {
|
|
145
|
-
options: {
|
|
146
|
-
className: 'container',
|
|
147
|
-
layout: {
|
|
148
|
-
type: 'grid',
|
|
149
|
-
columns: 3, // Number of columns
|
|
150
|
-
gap: 4, // Gap size (using the gap scale)
|
|
151
|
-
autoHeight: true, // Allow natural heights
|
|
152
|
-
dense: true, // Dense packing algorithm
|
|
153
|
-
align: 'center' // Alignment of items
|
|
154
|
-
}
|
|
155
|
-
},
|
|
156
|
-
children: {
|
|
157
|
-
item1: {
|
|
158
|
-
options: {
|
|
159
|
-
text: 'Item 1',
|
|
160
|
-
// Individual item layout configuration
|
|
161
|
-
layoutItem: {
|
|
162
|
-
span: 2, // Span 2 columns
|
|
163
|
-
rowSpan: 1, // Span 1 row
|
|
164
|
-
align: 'start' // Self-alignment
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
});
|
|
171
|
-
```
|
|
172
|
-
|
|
173
|
-
### Stack Layout (Vertical)
|
|
174
|
-
|
|
175
|
-
```javascript
|
|
176
|
-
createLayout({
|
|
177
|
-
stack: {
|
|
178
|
-
options: {
|
|
179
|
-
layout: {
|
|
180
|
-
type: 'stack',
|
|
181
|
-
gap: 4, // Space between items
|
|
182
|
-
align: 'center', // Center items horizontally
|
|
183
|
-
justify: 'between' // Space between items vertically
|
|
184
|
-
}
|
|
185
|
-
},
|
|
186
|
-
children: {
|
|
187
|
-
header: { options: { text: 'Header' } },
|
|
188
|
-
content: { options: { text: 'Content' } },
|
|
189
|
-
footer: { options: { text: 'Footer' } }
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
});
|
|
193
|
-
```
|
|
194
|
-
|
|
195
|
-
### Row Layout (Horizontal)
|
|
196
|
-
|
|
197
|
-
```javascript
|
|
198
|
-
createLayout({
|
|
199
|
-
row: {
|
|
200
|
-
options: {
|
|
201
|
-
layout: {
|
|
202
|
-
type: 'row',
|
|
203
|
-
gap: 4, // Space between items
|
|
204
|
-
align: 'center', // Center items vertically
|
|
205
|
-
justify: 'between', // Space between items horizontally
|
|
206
|
-
wrap: true, // Allow wrapping
|
|
207
|
-
mobileStack: true // Stack on mobile devices
|
|
208
|
-
}
|
|
209
|
-
},
|
|
210
|
-
children: {
|
|
211
|
-
// Row items...
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
});
|
|
215
|
-
```
|
|
216
|
-
|
|
217
|
-
## Layout Types
|
|
218
|
-
|
|
219
|
-
The layout system supports several layout types that can be used in the `layout.type` property:
|
|
220
|
-
|
|
221
|
-
| Type | Description | Key Options |
|
|
222
|
-
|------|-------------|------------|
|
|
223
|
-
| `stack` | Vertical column of elements | `align`, `justify`, `gap` |
|
|
224
|
-
| `row` | Horizontal row of elements | `align`, `justify`, `wrap`, `gap`, `mobileStack` |
|
|
225
|
-
| `grid` | CSS Grid-based layout | `columns`, `gap`, `autoHeight`, `dense` |
|
|
226
|
-
| `masonry` | Masonry-style layout | `masonryColumns`, `gap` |
|
|
227
|
-
| `split` | Two-column split layout | `ratio`, `gap` |
|
|
228
|
-
| `sidebar` | Sidebar with main content | `sidebarPosition`, `sidebarWidth` |
|
|
229
|
-
|
|
230
|
-
## Layout Item Properties
|
|
231
|
-
|
|
232
|
-
When using the `layoutItem` property to configure individual items:
|
|
233
|
-
|
|
234
|
-
| Property | Description | Example Values |
|
|
235
|
-
|----------|-------------|----------------|
|
|
236
|
-
| `width` | Column width in 12-column grid | `1` through `12` |
|
|
237
|
-
| `span` | Grid column span | `1` through `12` |
|
|
238
|
-
| `rowSpan` | Grid row span | `1` through `12` |
|
|
239
|
-
| `sm`, `md`, `lg`, `xl` | Responsive widths | `1` through `12` |
|
|
240
|
-
| `order` | Item ordering | `'first'`, `'last'`, or a number |
|
|
241
|
-
| `align` | Self-alignment | `'start'`, `'center'`, `'end'`, `'stretch'` |
|
|
242
|
-
| `auto` | Auto width (flex) | `true`, `false` |
|
|
243
|
-
|
|
244
|
-
## Layout Functions
|
|
245
|
-
|
|
246
|
-
### `createLayout(schema, parentElement?, options?)`
|
|
247
|
-
|
|
248
|
-
Creates a layout from a schema definition.
|
|
249
|
-
|
|
250
|
-
- **Parameters**:
|
|
251
|
-
- `schema`: Array, object, HTML string, or function returning one of these
|
|
252
|
-
- `parentElement` (optional): Parent element to attach the layout to
|
|
253
|
-
- `options` (optional): Configuration options for layout creation
|
|
254
|
-
- **Returns**: Layout result object with components and utility methods
|
|
255
|
-
|
|
256
|
-
```javascript
|
|
257
|
-
const layout = createLayout(schema, document.getElementById('container'), {
|
|
258
|
-
creator: createCard, // Default creator for elements without a specific one
|
|
259
|
-
prefix: true, // Whether to apply automatic class prefixing
|
|
260
|
-
theme: 'dark' // Custom options (passed to components)
|
|
261
|
-
});
|
|
262
|
-
```
|
|
263
|
-
|
|
264
|
-
### Layout Result Object
|
|
265
|
-
|
|
266
|
-
The object returned by `createLayout` contains:
|
|
267
|
-
|
|
268
|
-
- `layout`: Raw layout object with all components
|
|
269
|
-
- `element`: Reference to the root element
|
|
270
|
-
- `component`: Flattened component map for easy access
|
|
271
|
-
- `get(name)`: Function to get a component by name
|
|
272
|
-
- `getAll()`: Function to get all components
|
|
273
|
-
- `destroy()`: Function to clean up the layout
|
|
274
|
-
|
|
275
|
-
```javascript
|
|
276
|
-
// Access components in different ways
|
|
277
|
-
const header = layout.get('header'); // By name
|
|
278
|
-
const footer = layout.component.footer; // Via flattened map
|
|
279
|
-
const rootElement = layout.element; // Root element
|
|
280
|
-
```
|
|
281
|
-
|
|
282
|
-
## Examples
|
|
283
|
-
|
|
284
|
-
### Array Schema Examples
|
|
285
|
-
|
|
286
|
-
#### Grid Layout with Array Schema
|
|
287
|
-
|
|
288
|
-
```javascript
|
|
289
|
-
import { createLayout, createElement, createCard } from 'mtrl';
|
|
290
|
-
|
|
291
|
-
// Create a grid layout using array syntax
|
|
292
|
-
const dashboard = createLayout([
|
|
293
|
-
// Container element with layout configuration
|
|
294
|
-
'dashboardGrid', {
|
|
295
|
-
className: 'dashboard-grid',
|
|
296
|
-
layout: {
|
|
297
|
-
type: 'grid',
|
|
298
|
-
columns: 3,
|
|
299
|
-
gap: 4,
|
|
300
|
-
autoHeight: true
|
|
301
|
-
}
|
|
302
|
-
},
|
|
303
|
-
[
|
|
304
|
-
// First card
|
|
305
|
-
createCard, 'statsCard', {
|
|
306
|
-
title: 'Statistics',
|
|
307
|
-
outlined: true,
|
|
308
|
-
layoutItem: {
|
|
309
|
-
span: 2, // Span 2 columns
|
|
310
|
-
sm: 12, // Full width on small screens
|
|
311
|
-
md: 6 // Half width on medium screens
|
|
312
|
-
}
|
|
313
|
-
},
|
|
314
|
-
// Second card
|
|
315
|
-
createCard, 'activityCard', {
|
|
316
|
-
title: 'Recent Activity',
|
|
317
|
-
outlined: true,
|
|
318
|
-
layoutItem: {
|
|
319
|
-
span: 1, // Span 1 column
|
|
320
|
-
sm: 12, // Full width on small screens
|
|
321
|
-
md: 6 // Half width on medium screens
|
|
322
|
-
}
|
|
323
|
-
},
|
|
324
|
-
// Third card
|
|
325
|
-
createCard, 'revenueCard', {
|
|
326
|
-
title: 'Revenue',
|
|
327
|
-
outlined: true,
|
|
328
|
-
layoutItem: {
|
|
329
|
-
span: 3, // Full width
|
|
330
|
-
md: 6 // Half width on medium screens
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
]
|
|
334
|
-
]);
|
|
335
|
-
|
|
336
|
-
// Access components
|
|
337
|
-
const statsCard = dashboard.get('statsCard');
|
|
338
|
-
statsCard.update({ content: 'Updated statistics data' });
|
|
339
|
-
```
|
|
340
|
-
|
|
341
|
-
#### Application Layout with Array Schema
|
|
342
|
-
|
|
343
|
-
```javascript
|
|
344
|
-
import { createLayout, createTopAppBar, createDrawer, createList, createListItem, createElement } from 'mtrl';
|
|
345
|
-
|
|
346
|
-
// Create an application layout using array syntax
|
|
347
|
-
const appLayout = createLayout([
|
|
348
|
-
// Create a container element
|
|
349
|
-
'appContainer', {
|
|
350
|
-
className: 'app-container',
|
|
351
|
-
layout: { type: 'stack', gap: 0 }
|
|
352
|
-
},
|
|
353
|
-
[
|
|
354
|
-
// Header
|
|
355
|
-
createTopAppBar, 'header', {
|
|
356
|
-
title: 'My Application',
|
|
357
|
-
actions: ['menu', 'account']
|
|
358
|
-
},
|
|
359
|
-
|
|
360
|
-
// Main content area
|
|
361
|
-
'main', {
|
|
362
|
-
className: 'app-main',
|
|
363
|
-
layout: { type: 'row', gap: 0 }
|
|
364
|
-
},
|
|
365
|
-
[
|
|
366
|
-
// Sidebar
|
|
367
|
-
createDrawer, 'sidebar', {
|
|
368
|
-
persistent: true,
|
|
369
|
-
layout: { type: 'stack', gap: 2 }
|
|
370
|
-
},
|
|
371
|
-
[
|
|
372
|
-
// Navigation list
|
|
373
|
-
createList, 'nav', { interactive: true },
|
|
374
|
-
[
|
|
375
|
-
createListItem, 'homeLink', { text: 'Home', leading: 'home' },
|
|
376
|
-
createListItem, 'settingsLink', { text: 'Settings', leading: 'settings' }
|
|
377
|
-
]
|
|
378
|
-
],
|
|
379
|
-
|
|
380
|
-
// Main content
|
|
381
|
-
'content', {
|
|
382
|
-
tag: 'main',
|
|
383
|
-
className: 'app-content',
|
|
384
|
-
layout: {
|
|
385
|
-
type: 'grid',
|
|
386
|
-
columns: 'auto-fit',
|
|
387
|
-
gap: 4
|
|
388
|
-
}
|
|
389
|
-
}
|
|
390
|
-
]
|
|
391
|
-
]
|
|
392
|
-
]);
|
|
393
|
-
|
|
394
|
-
// Access and modify components
|
|
395
|
-
const header = appLayout.get('header');
|
|
396
|
-
header.setTitle('Dashboard');
|
|
397
|
-
|
|
398
|
-
// Add items to the grid content area
|
|
399
|
-
const content = appLayout.get('content');
|
|
400
|
-
const card = createCard({ title: 'Statistics', content: 'App usage data...' });
|
|
401
|
-
content.appendChild(card.element);
|
|
402
|
-
```
|
|
403
|
-
|
|
404
|
-
#### Form Layout with Array Schema
|
|
405
|
-
|
|
406
|
-
```javascript
|
|
407
|
-
import { createLayout, createTextfield, createButton } from 'mtrl';
|
|
408
|
-
|
|
409
|
-
// Create a form with fields and submit button using array syntax
|
|
410
|
-
const form = createLayout([
|
|
411
|
-
'formContainer', {
|
|
412
|
-
tag: 'form',
|
|
413
|
-
className: 'login-form',
|
|
414
|
-
layout: { type: 'stack', gap: 4 }
|
|
415
|
-
},
|
|
416
|
-
[
|
|
417
|
-
createTextfield, 'username', {
|
|
418
|
-
label: 'Username',
|
|
419
|
-
required: true,
|
|
420
|
-
layoutItem: {
|
|
421
|
-
width: 12 // Full width
|
|
422
|
-
}
|
|
423
|
-
},
|
|
424
|
-
createTextfield, 'password', {
|
|
425
|
-
label: 'Password',
|
|
426
|
-
type: 'password',
|
|
427
|
-
required: true,
|
|
428
|
-
layoutItem: {
|
|
429
|
-
width: 12 // Full width
|
|
430
|
-
}
|
|
431
|
-
},
|
|
432
|
-
'buttonRow', {
|
|
433
|
-
layout: {
|
|
434
|
-
type: 'row',
|
|
435
|
-
justify: 'end',
|
|
436
|
-
gap: 2
|
|
437
|
-
}
|
|
438
|
-
},
|
|
439
|
-
[
|
|
440
|
-
createButton, 'resetButton', {
|
|
441
|
-
text: 'Reset',
|
|
442
|
-
variant: 'text'
|
|
443
|
-
},
|
|
444
|
-
createButton, 'submitButton', {
|
|
445
|
-
text: 'Login',
|
|
446
|
-
variant: 'filled'
|
|
447
|
-
}
|
|
448
|
-
]
|
|
449
|
-
]
|
|
450
|
-
]);
|
|
451
|
-
|
|
452
|
-
// Access form elements
|
|
453
|
-
const usernameField = form.get('username');
|
|
454
|
-
const submitButton = form.get('submitButton');
|
|
455
|
-
|
|
456
|
-
// Add event handlers
|
|
457
|
-
submitButton.on('click', (e) => {
|
|
458
|
-
e.preventDefault();
|
|
459
|
-
console.log('Username:', usernameField.getValue());
|
|
460
|
-
});
|
|
461
|
-
```
|
|
462
|
-
|
|
463
|
-
### Object Schema Examples
|
|
464
|
-
|
|
465
|
-
#### Dashboard Grid with Object Schema
|
|
466
|
-
|
|
467
|
-
```javascript
|
|
468
|
-
import { createLayout, createElement, createCard } from 'mtrl';
|
|
469
|
-
|
|
470
|
-
const dashboard = createLayout({
|
|
471
|
-
dashboardGrid: {
|
|
472
|
-
options: {
|
|
473
|
-
className: 'dashboard-grid',
|
|
474
|
-
layout: {
|
|
475
|
-
type: 'grid',
|
|
476
|
-
columns: 3,
|
|
477
|
-
gap: 4,
|
|
478
|
-
autoHeight: true
|
|
479
|
-
}
|
|
480
|
-
},
|
|
481
|
-
children: {
|
|
482
|
-
statsCard: {
|
|
483
|
-
creator: createCard,
|
|
484
|
-
options: {
|
|
485
|
-
title: 'Statistics',
|
|
486
|
-
outlined: true,
|
|
487
|
-
layoutItem: {
|
|
488
|
-
span: 2, // Span 2 columns
|
|
489
|
-
sm: 12, // Full width on small screens
|
|
490
|
-
md: 6 // Half width on medium screens
|
|
491
|
-
}
|
|
492
|
-
}
|
|
493
|
-
},
|
|
494
|
-
activityCard: {
|
|
495
|
-
creator: createCard,
|
|
496
|
-
options: {
|
|
497
|
-
title: 'Recent Activity',
|
|
498
|
-
outlined: true,
|
|
499
|
-
layoutItem: {
|
|
500
|
-
span: 1, // Span 1 column
|
|
501
|
-
sm: 12, // Full width on small screens
|
|
502
|
-
md: 6 // Half width on medium screens
|
|
503
|
-
}
|
|
504
|
-
}
|
|
505
|
-
},
|
|
506
|
-
// More dashboard cards...
|
|
507
|
-
}
|
|
508
|
-
}
|
|
509
|
-
});
|
|
510
|
-
```
|
|
511
|
-
|
|
512
|
-
#### Application Layout with Object Schema
|
|
513
|
-
|
|
514
|
-
```javascript
|
|
515
|
-
import { createLayout, createTopAppBar, createDrawer, createList, createListItem, createButton } from 'mtrl';
|
|
516
|
-
|
|
517
|
-
const appLayout = createLayout({
|
|
518
|
-
app: {
|
|
519
|
-
options: {
|
|
520
|
-
className: 'app-container',
|
|
521
|
-
layout: { type: 'stack', gap: 0 }
|
|
522
|
-
},
|
|
523
|
-
children: {
|
|
524
|
-
header: {
|
|
525
|
-
creator: createTopAppBar,
|
|
526
|
-
options: {
|
|
527
|
-
title: 'My Application',
|
|
528
|
-
actions: ['menu', 'account']
|
|
529
|
-
}
|
|
530
|
-
},
|
|
531
|
-
main: {
|
|
532
|
-
options: {
|
|
533
|
-
className: 'app-main',
|
|
534
|
-
layout: { type: 'row', gap: 0 }
|
|
535
|
-
},
|
|
536
|
-
children: {
|
|
537
|
-
sidebar: {
|
|
538
|
-
creator: createDrawer,
|
|
539
|
-
options: {
|
|
540
|
-
persistent: true,
|
|
541
|
-
layout: { type: 'stack', gap: 2 }
|
|
542
|
-
},
|
|
543
|
-
children: {
|
|
544
|
-
nav: {
|
|
545
|
-
creator: createList,
|
|
546
|
-
options: { interactive: true },
|
|
547
|
-
children: {
|
|
548
|
-
home: {
|
|
549
|
-
creator: createListItem,
|
|
550
|
-
options: { text: 'Home', leading: 'home' }
|
|
551
|
-
},
|
|
552
|
-
settings: {
|
|
553
|
-
creator: createListItem,
|
|
554
|
-
options: { text: 'Settings', leading: 'settings' }
|
|
555
|
-
}
|
|
556
|
-
}
|
|
557
|
-
}
|
|
558
|
-
}
|
|
559
|
-
},
|
|
560
|
-
content: {
|
|
561
|
-
options: {
|
|
562
|
-
tag: 'main',
|
|
563
|
-
className: 'app-content',
|
|
564
|
-
layout: {
|
|
565
|
-
type: 'grid',
|
|
566
|
-
columns: 'auto-fit',
|
|
567
|
-
gap: 4
|
|
568
|
-
}
|
|
569
|
-
}
|
|
570
|
-
}
|
|
571
|
-
}
|
|
572
|
-
}
|
|
573
|
-
}
|
|
574
|
-
}
|
|
575
|
-
});
|
|
576
|
-
```
|
|
577
|
-
|
|
578
|
-
## Performance Considerations
|
|
579
|
-
|
|
580
|
-
### Schema Format Performance
|
|
581
|
-
|
|
582
|
-
**Array-based schemas** generally outperform object-based schemas:
|
|
583
|
-
|
|
584
|
-
- **Faster processing**: 15-30% faster for large layouts
|
|
585
|
-
- **Lower memory usage**: Requires less memory without property names
|
|
586
|
-
- **Better bundle size**: More compact representation in code
|
|
587
|
-
- **Efficient iteration**: Arrays are optimized for sequential access
|
|
588
|
-
|
|
589
|
-
**Object-based schemas** excel in:
|
|
590
|
-
|
|
591
|
-
- **Readability**: More explicit structure with named properties
|
|
592
|
-
- **Maintainability**: Easier to understand complex nested structures
|
|
593
|
-
- **Self-documentation**: Property names describe the layout's purpose
|
|
594
|
-
|
|
595
|
-
**Recommendations**:
|
|
596
|
-
- For **performance-critical** applications, prefer array-based schemas
|
|
597
|
-
- For **complex, deeply nested** structures where maintainability is key, consider object-based schemas
|
|
598
|
-
- For the **best balance**, use array-based schemas for large structures and object-based for complex configurations
|
|
599
|
-
|
|
600
|
-
### Options Performance Considerations
|
|
601
|
-
|
|
602
|
-
- Setting `prefix: false` can improve performance slightly by avoiding class name processing
|
|
603
|
-
- Providing a `creator` function in options is more efficient than having many duplicate creator references in the schema
|
|
604
|
-
- Consider memoizing layout creation for frequently used UI patterns with the same options
|
|
605
|
-
|
|
606
|
-
### General Optimization Tips
|
|
607
|
-
|
|
608
|
-
- Use DocumentFragment for batch DOM operations
|
|
609
|
-
- Create components only when needed
|
|
610
|
-
- Consider memoizing frequently created layouts
|
|
611
|
-
- For large applications, lazy-load secondary layouts
|
|
612
|
-
|
|
613
|
-
## Responsive Design
|
|
614
|
-
|
|
615
|
-
The layout system provides several ways to create responsive designs:
|
|
616
|
-
|
|
617
|
-
### Responsive Grid
|
|
618
|
-
|
|
619
|
-
```javascript
|
|
620
|
-
createLayout({
|
|
621
|
-
grid: {
|
|
622
|
-
options: {
|
|
623
|
-
layout: {
|
|
624
|
-
type: 'grid',
|
|
625
|
-
// Different columns at different breakpoints using CSS media queries
|
|
626
|
-
class: 'md:layout--grid-cols-2 lg:layout--grid-cols-3 xl:layout--grid-cols-4'
|
|
627
|
-
}
|
|
628
|
-
}
|
|
629
|
-
}
|
|
630
|
-
});
|
|
631
|
-
```
|
|
632
|
-
|
|
633
|
-
### Layout Items with Responsive Widths
|
|
634
|
-
|
|
635
|
-
```javascript
|
|
636
|
-
createLayout({
|
|
637
|
-
row: {
|
|
638
|
-
options: {
|
|
639
|
-
layout: { type: 'row', gap: 4 }
|
|
640
|
-
},
|
|
641
|
-
children: {
|
|
642
|
-
sidebar: {
|
|
643
|
-
options: {
|
|
644
|
-
layoutItem: {
|
|
645
|
-
width: 3, // Default: 3/12 (25%)
|
|
646
|
-
sm: 12, // Small screens: 12/12 (100%)
|
|
647
|
-
md: 4, // Medium screens: 4/12 (33.3%)
|
|
648
|
-
lg: 3 // Large screens: 3/12 (25%)
|
|
649
|
-
}
|
|
650
|
-
}
|
|
651
|
-
},
|
|
652
|
-
main: {
|
|
653
|
-
options: {
|
|
654
|
-
layoutItem: {
|
|
655
|
-
width: 9, // Default: 9/12 (75%)
|
|
656
|
-
sm: 12, // Small screens: 12/12 (100%)
|
|
657
|
-
md: 8, // Medium screens: 8/12 (66.6%)
|
|
658
|
-
lg: 9 // Large screens: 9/12 (75%)
|
|
659
|
-
}
|
|
660
|
-
}
|
|
661
|
-
}
|
|
662
|
-
}
|
|
663
|
-
}
|
|
664
|
-
});
|
|
665
|
-
```
|
|
666
|
-
|
|
667
|
-
### Mobile Behavior Options
|
|
668
|
-
|
|
669
|
-
```javascript
|
|
670
|
-
createLayout({
|
|
671
|
-
row: {
|
|
672
|
-
options: {
|
|
673
|
-
layout: {
|
|
674
|
-
type: 'row',
|
|
675
|
-
gap: 4,
|
|
676
|
-
mobileStack: true, // Stack on mobile instead of row
|
|
677
|
-
// OR
|
|
678
|
-
mobileScroll: true // Enable horizontal scrolling on mobile
|
|
679
|
-
}
|
|
680
|
-
},
|
|
681
|
-
children: {
|
|
682
|
-
// Row items...
|
|
683
|
-
}
|
|
684
|
-
}
|
|
685
|
-
});
|
|
686
|
-
```
|
|
687
|
-
|
|
688
|
-
## Layout CSS Classes
|
|
689
|
-
|
|
690
|
-
The layout system uses a consistent naming convention for CSS classes:
|
|
691
|
-
|
|
692
|
-
### Layout Container Classes
|
|
693
|
-
|
|
694
|
-
- **Base Layout**: `.layout--[type]` (e.g., `.layout--stack`, `.layout--grid`)
|
|
695
|
-
- **Alignment**: `.layout--[type]-[align]` (e.g., `.layout--stack-center`)
|
|
696
|
-
- **Justification**: `.layout--[type]-justify-[justify]` (e.g., `.layout--row-justify-between`)
|
|
697
|
-
- **Spacing**: `.layout--[type]-gap-[size]` (e.g., `.layout--grid-gap-4`)
|
|
698
|
-
- **Specific Options**: `.layout--[type]-[option]` (e.g., `.layout--grid-dense`)
|
|
699
|
-
|
|
700
|
-
### Layout Item Classes
|
|
701
|
-
|
|
702
|
-
- **Base Item**: `.layout__item`
|
|
703
|
-
- **Width**: `.layout__item--[width]` (e.g., `.layout__item--4` for 4/12 width)
|
|
704
|
-
- **Responsive Widths**: `.layout__item--[breakpoint]-[width]` (e.g., `.layout__item--md-6`)
|
|
705
|
-
- **Ordering**: `.layout__item--order-[order]` (e.g., `.layout__item--order-first`)
|
|
706
|
-
- **Alignment**: `.layout__item--self-[align]` (e.g., `.layout__item--self-center`)
|
|
707
|
-
- **Grid Span**: `.layout__item--span-[span]` (e.g., `.layout__item--span-2`)
|
|
708
|
-
|
|
709
|
-
## Browser Compatibility
|
|
710
|
-
|
|
711
|
-
The Layout Module is compatible with all modern browsers (Chrome, Firefox, Safari, Edge).
|
|
712
|
-
|
|
713
|
-
## License
|
|
714
|
-
|
|
715
|
-
MIT
|