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,61 +0,0 @@
|
|
|
1
|
-
// src/components/chips/constants.ts
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Available variants for the Chip component
|
|
5
|
-
* @enum {string}
|
|
6
|
-
*/
|
|
7
|
-
export const CHIP_VARIANTS = {
|
|
8
|
-
/** Standard filled chip with solid background */
|
|
9
|
-
FILLED: 'filled',
|
|
10
|
-
|
|
11
|
-
/** Outlined chip with transparent background and border */
|
|
12
|
-
OUTLINED: 'outlined',
|
|
13
|
-
|
|
14
|
-
/** Elevated chip with shadow */
|
|
15
|
-
ELEVATED: 'elevated',
|
|
16
|
-
|
|
17
|
-
/** Assist chip for suggesting actions */
|
|
18
|
-
ASSIST: 'assist',
|
|
19
|
-
|
|
20
|
-
/** Filter chip for filtering content */
|
|
21
|
-
FILTER: 'filter',
|
|
22
|
-
|
|
23
|
-
/** Input chip for representing user input */
|
|
24
|
-
INPUT: 'input',
|
|
25
|
-
|
|
26
|
-
/** Suggestion chip for presenting options */
|
|
27
|
-
SUGGESTION: 'suggestion'
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* Available event types for Chip component
|
|
32
|
-
* @enum {string}
|
|
33
|
-
*/
|
|
34
|
-
export const CHIP_EVENTS = {
|
|
35
|
-
/** Fired when chip selection state changes */
|
|
36
|
-
CHANGE: 'change',
|
|
37
|
-
|
|
38
|
-
/** Fired when chip is selected */
|
|
39
|
-
SELECT: 'select',
|
|
40
|
-
|
|
41
|
-
/** Fired when chip is deselected */
|
|
42
|
-
DESELECT: 'deselect',
|
|
43
|
-
|
|
44
|
-
/** Fired when chip is about to be removed */
|
|
45
|
-
REMOVE: 'remove'
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Available event types for Chips container component
|
|
50
|
-
* @enum {string}
|
|
51
|
-
*/
|
|
52
|
-
export const CHIPS_EVENTS = {
|
|
53
|
-
/** Fired when any chip selection changes */
|
|
54
|
-
CHANGE: 'change',
|
|
55
|
-
|
|
56
|
-
/** Fired when a chip is added to the container */
|
|
57
|
-
ADD: 'add',
|
|
58
|
-
|
|
59
|
-
/** Fired when a chip is removed from the container */
|
|
60
|
-
REMOVE: 'remove'
|
|
61
|
-
};
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
// src/components/chips/features/chip-items.ts
|
|
2
|
-
import { ChipsConfig } from '../types';
|
|
3
|
-
import createChip from '../chip/chip';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Adds chip item management to chips component
|
|
7
|
-
*
|
|
8
|
-
* @param config Chips configuration
|
|
9
|
-
* @returns Component enhancer that adds chip items functionality
|
|
10
|
-
*/
|
|
11
|
-
export const withChipItems = (config: ChipsConfig) => component => {
|
|
12
|
-
// Chip instances stored in component state
|
|
13
|
-
const chipInstances = [];
|
|
14
|
-
|
|
15
|
-
return {
|
|
16
|
-
...component,
|
|
17
|
-
chipInstances,
|
|
18
|
-
|
|
19
|
-
// When DOM is created, add initial chips
|
|
20
|
-
onCreated() {
|
|
21
|
-
if (typeof component.onCreated === 'function') {
|
|
22
|
-
component.onCreated();
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
// Initialize with provided chips
|
|
26
|
-
if (Array.isArray(config.chips) && config.chips.length > 0) {
|
|
27
|
-
config.chips.forEach(chipConfig => {
|
|
28
|
-
this.chips?.addChip?.(chipConfig);
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
};
|
|
33
|
-
};
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
// src/components/chips/features/container.ts
|
|
2
|
-
import { ChipsConfig } from '../types';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Adds container layout features to chips component
|
|
6
|
-
*
|
|
7
|
-
* @param config Chips configuration
|
|
8
|
-
* @returns Component enhancer that adds container layout functionality
|
|
9
|
-
*/
|
|
10
|
-
export const withContainer = (config: ChipsConfig) => component => {
|
|
11
|
-
// Track current layout state
|
|
12
|
-
const state = {
|
|
13
|
-
scrollable: config.scrollable === true,
|
|
14
|
-
vertical: config.vertical === true
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
return {
|
|
18
|
-
...component,
|
|
19
|
-
|
|
20
|
-
// Layout management API
|
|
21
|
-
layout: {
|
|
22
|
-
/**
|
|
23
|
-
* Sets the scrollable state of the chips container
|
|
24
|
-
* @param {boolean} isScrollable - Whether the chips container should be scrollable
|
|
25
|
-
* @returns Layout controller for chaining
|
|
26
|
-
*/
|
|
27
|
-
setScrollable(isScrollable: boolean) {
|
|
28
|
-
state.scrollable = isScrollable;
|
|
29
|
-
|
|
30
|
-
if (component.element) {
|
|
31
|
-
if (isScrollable) {
|
|
32
|
-
component.element.classList.add(`${component.getClass('chips')}--scrollable`);
|
|
33
|
-
} else {
|
|
34
|
-
component.element.classList.remove(`${component.getClass('chips')}--scrollable`);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
return this;
|
|
39
|
-
},
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* Gets the scrollable state
|
|
43
|
-
* @returns {boolean} Whether the container is scrollable
|
|
44
|
-
*/
|
|
45
|
-
isScrollable() {
|
|
46
|
-
return state.scrollable;
|
|
47
|
-
},
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* Sets the vertical layout state
|
|
51
|
-
* @param {boolean} isVertical - Whether the chips container should be vertically stacked
|
|
52
|
-
* @returns Layout controller for chaining
|
|
53
|
-
*/
|
|
54
|
-
setVertical(isVertical: boolean) {
|
|
55
|
-
state.vertical = isVertical;
|
|
56
|
-
|
|
57
|
-
if (component.element) {
|
|
58
|
-
if (isVertical) {
|
|
59
|
-
component.element.classList.add(`${component.getClass('chips')}--vertical`);
|
|
60
|
-
} else {
|
|
61
|
-
component.element.classList.remove(`${component.getClass('chips')}--vertical`);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
return this;
|
|
66
|
-
},
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
* Gets the vertical state
|
|
70
|
-
* @returns {boolean} Whether the container has vertical layout
|
|
71
|
-
*/
|
|
72
|
-
isVertical() {
|
|
73
|
-
return state.vertical;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
};
|
|
77
|
-
};
|
|
@@ -1,448 +0,0 @@
|
|
|
1
|
-
// src/components/chips/features/controller.ts
|
|
2
|
-
import { ChipsConfig } from '../types';
|
|
3
|
-
import createChip from '../chip/chip';
|
|
4
|
-
import { CHIPS_EVENTS } from '../constants';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Add controller functionality to chips component
|
|
8
|
-
* Manages state, events, user interactions, and UI rendering
|
|
9
|
-
*
|
|
10
|
-
* @param config Chips configuration
|
|
11
|
-
* @returns Component enhancer with chips controller functionality
|
|
12
|
-
*/
|
|
13
|
-
export const withController = (config: ChipsConfig) => component => {
|
|
14
|
-
// Ensure component has required properties
|
|
15
|
-
if (!component.element || !component.components) {
|
|
16
|
-
console.warn('Cannot initialize chips controller: missing element or components');
|
|
17
|
-
return component;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
// Store event listeners
|
|
21
|
-
const eventListeners = {
|
|
22
|
-
change: [],
|
|
23
|
-
add: [],
|
|
24
|
-
remove: []
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
// Track current focused chip index for keyboard navigation
|
|
28
|
-
let focusedChipIndex = -1;
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* Dispatches custom events to registered handlers
|
|
32
|
-
* @param {string} eventName - Name of the event to trigger
|
|
33
|
-
* @param {any[]} args - Arguments to pass to the handlers
|
|
34
|
-
*/
|
|
35
|
-
const dispatchEvent = (eventName, ...args) => {
|
|
36
|
-
if (eventListeners[eventName]) {
|
|
37
|
-
eventListeners[eventName].forEach(handler => handler(...args));
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
const handleSelection = (selectedChip) => {
|
|
42
|
-
// Always ensure the chip's class is set correctly
|
|
43
|
-
if (selectedChip.isSelected()) {
|
|
44
|
-
selectedChip.element.classList.add(`${component.getClass('chip')}--selected`);
|
|
45
|
-
selectedChip.element.setAttribute('aria-selected', 'true');
|
|
46
|
-
} else {
|
|
47
|
-
selectedChip.element.classList.remove(`${component.getClass('chip')}--selected`);
|
|
48
|
-
selectedChip.element.setAttribute('aria-selected', 'false');
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
if (!config.multiSelect) {
|
|
52
|
-
// Single selection mode - deselect all other chips
|
|
53
|
-
component.chipInstances.forEach(chip => {
|
|
54
|
-
if (chip !== selectedChip && chip.isSelected()) {
|
|
55
|
-
chip.setSelected(false);
|
|
56
|
-
chip.element.classList.remove(`${component.getClass('chip')}--selected`);
|
|
57
|
-
chip.element.setAttribute('aria-selected', 'false');
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
// If this was a deselection, and it's the only selected chip in single-select mode,
|
|
62
|
-
// prevent deselection (keep it selected)
|
|
63
|
-
if (!selectedChip.isSelected() && getSelectedChips().length === 0) {
|
|
64
|
-
selectedChip.setSelected(true);
|
|
65
|
-
selectedChip.element.classList.add(`${component.getClass('chip')}--selected`);
|
|
66
|
-
selectedChip.element.setAttribute('aria-selected', 'true');
|
|
67
|
-
}
|
|
68
|
-
} else {
|
|
69
|
-
// In multi-select mode, we allow deselection of all chips
|
|
70
|
-
// No need to enforce at least one selection
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
// Get all currently selected chips and their values
|
|
74
|
-
const selectedChips = component.chipInstances.filter(chip => chip.isSelected());
|
|
75
|
-
const selectedValues = selectedChips.map(chip => chip.getValue());
|
|
76
|
-
const changedValue = selectedChip ? selectedChip.getValue() : null;
|
|
77
|
-
|
|
78
|
-
// Call onChange callback if provided
|
|
79
|
-
if (typeof config.onChange === 'function') {
|
|
80
|
-
config.onChange(selectedValues, changedValue);
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
// Dispatch change event to all registered handlers
|
|
84
|
-
dispatchEvent(CHIPS_EVENTS.CHANGE, selectedValues, changedValue);
|
|
85
|
-
};
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
* Handles keyboard navigation between chips
|
|
89
|
-
* @param {KeyboardEvent} event - Keyboard event
|
|
90
|
-
*/
|
|
91
|
-
const handleKeyboardNavigation = (event) => {
|
|
92
|
-
if (component.chipInstances.length === 0) return;
|
|
93
|
-
|
|
94
|
-
// Only handle arrow keys, Enter, and Space
|
|
95
|
-
if (!['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Enter', ' '].includes(event.key)) {
|
|
96
|
-
return;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
// Handle enter and space for activation/selection
|
|
100
|
-
if (event.key === 'Enter' || event.key === ' ') {
|
|
101
|
-
if (focusedChipIndex >= 0 && focusedChipIndex < component.chipInstances.length) {
|
|
102
|
-
event.preventDefault();
|
|
103
|
-
const chip = component.chipInstances[focusedChipIndex];
|
|
104
|
-
if (!chip.isDisabled()) {
|
|
105
|
-
chip.toggleSelected();
|
|
106
|
-
|
|
107
|
-
// Ensure selection state is reflected in the DOM
|
|
108
|
-
if (chip.isSelected()) {
|
|
109
|
-
chip.element.classList.add(`${component.getClass('chip')}--selected`);
|
|
110
|
-
chip.element.setAttribute('aria-selected', 'true');
|
|
111
|
-
} else {
|
|
112
|
-
chip.element.classList.remove(`${component.getClass('chip')}--selected`);
|
|
113
|
-
chip.element.setAttribute('aria-selected', 'false');
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
handleSelection(chip);
|
|
117
|
-
}
|
|
118
|
-
return;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
// Handle navigation keys
|
|
123
|
-
if (['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown'].includes(event.key)) {
|
|
124
|
-
event.preventDefault();
|
|
125
|
-
const isVertical = component.layout && component.layout.isVertical();
|
|
126
|
-
let newIndex = focusedChipIndex;
|
|
127
|
-
|
|
128
|
-
// If no chip is focused, start with the first one
|
|
129
|
-
if (focusedChipIndex === -1) {
|
|
130
|
-
newIndex = 0;
|
|
131
|
-
} else {
|
|
132
|
-
// Move based on key and layout direction
|
|
133
|
-
if ((isVertical && event.key === 'ArrowUp') || (!isVertical && event.key === 'ArrowLeft')) {
|
|
134
|
-
newIndex = Math.max(0, focusedChipIndex - 1);
|
|
135
|
-
} else if ((isVertical && event.key === 'ArrowDown') || (!isVertical && event.key === 'ArrowRight')) {
|
|
136
|
-
newIndex = Math.min(component.chipInstances.length - 1, focusedChipIndex + 1);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
// Update focus if changed
|
|
141
|
-
if (newIndex !== focusedChipIndex) {
|
|
142
|
-
// Remove focus from current chip
|
|
143
|
-
if (focusedChipIndex >= 0 && focusedChipIndex < component.chipInstances.length) {
|
|
144
|
-
component.chipInstances[focusedChipIndex].element.blur();
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
// Focus new chip
|
|
148
|
-
focusedChipIndex = newIndex;
|
|
149
|
-
component.chipInstances[focusedChipIndex].element.focus();
|
|
150
|
-
|
|
151
|
-
// If scrollable, ensure the focused chip is visible
|
|
152
|
-
if (component.layout && component.layout.isScrollable()) {
|
|
153
|
-
scrollToChip(focusedChipIndex);
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
};
|
|
158
|
-
|
|
159
|
-
/**
|
|
160
|
-
* Scrolls the chips container to make a specific chip visible
|
|
161
|
-
* @param {ChipComponent|number} chipOrIndex - Chip instance or index to scroll to
|
|
162
|
-
*/
|
|
163
|
-
const scrollToChip = (chipOrIndex) => {
|
|
164
|
-
const isScrollable = component.layout && component.layout.isScrollable();
|
|
165
|
-
if (!isScrollable) return;
|
|
166
|
-
|
|
167
|
-
const index = typeof chipOrIndex === 'number'
|
|
168
|
-
? chipOrIndex
|
|
169
|
-
: component.chipInstances.indexOf(chipOrIndex);
|
|
170
|
-
|
|
171
|
-
if (index >= 0 && index < component.chipInstances.length) {
|
|
172
|
-
const chipElement = component.chipInstances[index].element;
|
|
173
|
-
const container = component.components.chipContainer || component.element;
|
|
174
|
-
|
|
175
|
-
// Calculate scroll position to center the chip
|
|
176
|
-
const containerRect = container.getBoundingClientRect();
|
|
177
|
-
const chipRect = chipElement.getBoundingClientRect();
|
|
178
|
-
|
|
179
|
-
const isVertical = component.layout && component.layout.isVertical();
|
|
180
|
-
|
|
181
|
-
if (isVertical) {
|
|
182
|
-
// For vertical scroll
|
|
183
|
-
const scrollTop = chipElement.offsetTop - container.offsetTop -
|
|
184
|
-
(containerRect.height / 2) + (chipRect.height / 2);
|
|
185
|
-
|
|
186
|
-
container.scrollTo({
|
|
187
|
-
top: Math.max(0, scrollTop),
|
|
188
|
-
behavior: 'smooth'
|
|
189
|
-
});
|
|
190
|
-
} else {
|
|
191
|
-
// For horizontal scroll
|
|
192
|
-
const scrollLeft = chipElement.offsetLeft - container.offsetLeft -
|
|
193
|
-
(containerRect.width / 2) + (chipRect.width / 2);
|
|
194
|
-
|
|
195
|
-
container.scrollTo({
|
|
196
|
-
left: Math.max(0, scrollLeft),
|
|
197
|
-
behavior: 'smooth'
|
|
198
|
-
});
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
};
|
|
202
|
-
|
|
203
|
-
/**
|
|
204
|
-
* Adds a chip to the chips container
|
|
205
|
-
* @param {Object} chipConfig - Configuration for the chip
|
|
206
|
-
* @returns {ChipComponent} The created chip instance
|
|
207
|
-
*/
|
|
208
|
-
const addChip = (chipConfig) => {
|
|
209
|
-
// CHANGE: Remove the onSelect handler that calls handleSelection
|
|
210
|
-
const chipInstance = createChip({
|
|
211
|
-
...chipConfig,
|
|
212
|
-
// Only pass through the user's onSelect handler, don't create a path to handleSelection
|
|
213
|
-
onSelect: chipConfig.onSelect
|
|
214
|
-
});
|
|
215
|
-
|
|
216
|
-
// Get the container element to append to
|
|
217
|
-
const container = component.components.chipContainer || component.element;
|
|
218
|
-
|
|
219
|
-
// Use DocumentFragment for better performance
|
|
220
|
-
const fragment = document.createDocumentFragment();
|
|
221
|
-
fragment.appendChild(chipInstance.element);
|
|
222
|
-
container.appendChild(fragment);
|
|
223
|
-
|
|
224
|
-
component.chipInstances.push(chipInstance);
|
|
225
|
-
|
|
226
|
-
// This click handler is the ONLY path to handleSelection
|
|
227
|
-
chipInstance.element.addEventListener('click', () => {
|
|
228
|
-
if (!chipInstance.isDisabled()) {
|
|
229
|
-
chipInstance.toggleSelected();
|
|
230
|
-
|
|
231
|
-
// Explicitly ensure selected state reflects in the DOM
|
|
232
|
-
if (chipInstance.isSelected()) {
|
|
233
|
-
chipInstance.element.classList.add(`${component.getClass('chip')}--selected`);
|
|
234
|
-
chipInstance.element.setAttribute('aria-selected', 'true');
|
|
235
|
-
} else {
|
|
236
|
-
chipInstance.element.classList.remove(`${component.getClass('chip')}--selected`);
|
|
237
|
-
chipInstance.element.setAttribute('aria-selected', 'false');
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
handleSelection(chipInstance);
|
|
241
|
-
|
|
242
|
-
// Update focus tracking
|
|
243
|
-
focusedChipIndex = component.chipInstances.indexOf(chipInstance);
|
|
244
|
-
}
|
|
245
|
-
});
|
|
246
|
-
|
|
247
|
-
// Dispatch add event
|
|
248
|
-
dispatchEvent(CHIPS_EVENTS.ADD, chipInstance);
|
|
249
|
-
|
|
250
|
-
return chipInstance;
|
|
251
|
-
};
|
|
252
|
-
|
|
253
|
-
/**
|
|
254
|
-
* Removes a chip from the chips container
|
|
255
|
-
* @param {ChipComponent|number} chipOrIndex - Chip instance or index to remove
|
|
256
|
-
*/
|
|
257
|
-
const removeChip = (chipOrIndex) => {
|
|
258
|
-
const index = typeof chipOrIndex === 'number'
|
|
259
|
-
? chipOrIndex
|
|
260
|
-
: component.chipInstances.indexOf(chipOrIndex);
|
|
261
|
-
|
|
262
|
-
if (index >= 0 && index < component.chipInstances.length) {
|
|
263
|
-
const chip = component.chipInstances[index];
|
|
264
|
-
|
|
265
|
-
// Dispatch remove event before actual removal
|
|
266
|
-
dispatchEvent(CHIPS_EVENTS.REMOVE, chip);
|
|
267
|
-
|
|
268
|
-
chip.destroy();
|
|
269
|
-
component.chipInstances.splice(index, 1);
|
|
270
|
-
|
|
271
|
-
// Update focused index if needed
|
|
272
|
-
if (index === focusedChipIndex) {
|
|
273
|
-
focusedChipIndex = -1;
|
|
274
|
-
} else if (index < focusedChipIndex) {
|
|
275
|
-
focusedChipIndex--;
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
};
|
|
279
|
-
|
|
280
|
-
/**
|
|
281
|
-
* Gets all chip instances in the container
|
|
282
|
-
* @returns {ChipComponent[]} Array of chip instances
|
|
283
|
-
*/
|
|
284
|
-
const getChips = () => {
|
|
285
|
-
return [...component.chipInstances];
|
|
286
|
-
};
|
|
287
|
-
|
|
288
|
-
/**
|
|
289
|
-
* Gets currently selected chips
|
|
290
|
-
* @returns {ChipComponent[]} Array of selected chip instances
|
|
291
|
-
*/
|
|
292
|
-
const getSelectedChips = () => {
|
|
293
|
-
return component.chipInstances.filter(chip => chip.isSelected());
|
|
294
|
-
};
|
|
295
|
-
|
|
296
|
-
/**
|
|
297
|
-
* Gets the values of selected chips
|
|
298
|
-
* @returns {(string|null)[]} Array of selected chip values
|
|
299
|
-
*/
|
|
300
|
-
const getSelectedValues = () => {
|
|
301
|
-
return getSelectedChips().map(chip => chip.getValue());
|
|
302
|
-
};
|
|
303
|
-
|
|
304
|
-
/**
|
|
305
|
-
* Selects chips by their values
|
|
306
|
-
* @param {string|string[]} values - Value or array of values to select
|
|
307
|
-
* @param {boolean} triggerEvent - Whether to trigger change event (default: true)
|
|
308
|
-
*/
|
|
309
|
-
const selectByValue = (values, triggerEvent = true, exclusive = !config.multiSelect) => {
|
|
310
|
-
const valueArray = Array.isArray(values) ? values : [values];
|
|
311
|
-
let selectionChanged = false;
|
|
312
|
-
|
|
313
|
-
if (exclusive) {
|
|
314
|
-
// First handle deselection if exclusive mode
|
|
315
|
-
component.chipInstances.forEach(chip => {
|
|
316
|
-
const shouldSelect = valueArray.includes(chip.getValue());
|
|
317
|
-
if (!shouldSelect && chip.isSelected()) {
|
|
318
|
-
chip.setSelected(false);
|
|
319
|
-
chip.element.classList.remove(`${component.getClass('chip')}--selected`);
|
|
320
|
-
chip.element.setAttribute('aria-selected', 'false');
|
|
321
|
-
selectionChanged = true;
|
|
322
|
-
}
|
|
323
|
-
});
|
|
324
|
-
}
|
|
325
|
-
|
|
326
|
-
// Then handle selection
|
|
327
|
-
component.chipInstances.forEach(chip => {
|
|
328
|
-
const shouldSelect = valueArray.includes(chip.getValue());
|
|
329
|
-
if (shouldSelect && !chip.isSelected()) {
|
|
330
|
-
chip.setSelected(true);
|
|
331
|
-
chip.element.classList.add(`${component.getClass('chip')}--selected`);
|
|
332
|
-
chip.element.setAttribute('aria-selected', 'true');
|
|
333
|
-
selectionChanged = true;
|
|
334
|
-
}
|
|
335
|
-
});
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
// Dispatch change event if any chip selection has changed AND if triggerEvent is true
|
|
339
|
-
if (selectionChanged && triggerEvent) {
|
|
340
|
-
const selectedValues = getSelectedValues();
|
|
341
|
-
dispatchEvent(CHIPS_EVENTS.CHANGE, selectedValues, null);
|
|
342
|
-
}
|
|
343
|
-
};
|
|
344
|
-
|
|
345
|
-
/**
|
|
346
|
-
* Clears all selections
|
|
347
|
-
* @param {boolean} triggerEvent - Whether to trigger change event (default: true)
|
|
348
|
-
*/
|
|
349
|
-
const clearSelection = (triggerEvent = true) => {
|
|
350
|
-
const selectedValues = getSelectedValues();
|
|
351
|
-
const hadSelectedChips = selectedValues.length > 0;
|
|
352
|
-
|
|
353
|
-
component.chipInstances.forEach(chip => {
|
|
354
|
-
chip.setSelected(false);
|
|
355
|
-
chip.element.classList.remove(`${component.getClass('chip')}--selected`);
|
|
356
|
-
chip.element.setAttribute('aria-selected', 'false');
|
|
357
|
-
});
|
|
358
|
-
|
|
359
|
-
// Only dispatch if there were actually chips deselected AND triggerEvent is true
|
|
360
|
-
if (hadSelectedChips && triggerEvent) {
|
|
361
|
-
dispatchEvent(CHIPS_EVENTS.CHANGE, [], null);
|
|
362
|
-
}
|
|
363
|
-
};
|
|
364
|
-
|
|
365
|
-
/**
|
|
366
|
-
* Enables keyboard navigation between chips in the container
|
|
367
|
-
*/
|
|
368
|
-
const enableKeyboardNavigation = () => {
|
|
369
|
-
// Add keyboard event listener to the chips container
|
|
370
|
-
component.element.tabIndex = 0; // Make the chips container focusable
|
|
371
|
-
component.element.addEventListener('keydown', handleKeyboardNavigation);
|
|
372
|
-
};
|
|
373
|
-
|
|
374
|
-
/**
|
|
375
|
-
* Disables keyboard navigation
|
|
376
|
-
*/
|
|
377
|
-
const disableKeyboardNavigation = () => {
|
|
378
|
-
component.element.removeEventListener('keydown', handleKeyboardNavigation);
|
|
379
|
-
};
|
|
380
|
-
|
|
381
|
-
// Initialize keyboard navigation
|
|
382
|
-
enableKeyboardNavigation();
|
|
383
|
-
|
|
384
|
-
// Setup event listeners when element is available
|
|
385
|
-
if (component.element) {
|
|
386
|
-
component.element.addEventListener('keydown', handleKeyboardNavigation);
|
|
387
|
-
}
|
|
388
|
-
|
|
389
|
-
// Setup lifecycle cleanup
|
|
390
|
-
if (component.lifecycle) {
|
|
391
|
-
const originalDestroy = component.lifecycle.destroy || (() => {});
|
|
392
|
-
|
|
393
|
-
component.lifecycle.destroy = () => {
|
|
394
|
-
// Clean up event listeners
|
|
395
|
-
component.element.removeEventListener('keydown', handleKeyboardNavigation);
|
|
396
|
-
|
|
397
|
-
// Clean up all chip instances
|
|
398
|
-
component.chipInstances.forEach(chip => chip.destroy());
|
|
399
|
-
component.chipInstances.length = 0;
|
|
400
|
-
|
|
401
|
-
// Clear all event listeners
|
|
402
|
-
Object.keys(eventListeners).forEach(event => {
|
|
403
|
-
eventListeners[event] = [];
|
|
404
|
-
});
|
|
405
|
-
|
|
406
|
-
// Call original destroy
|
|
407
|
-
originalDestroy();
|
|
408
|
-
};
|
|
409
|
-
}
|
|
410
|
-
|
|
411
|
-
return {
|
|
412
|
-
...component,
|
|
413
|
-
// Add chips controller feature
|
|
414
|
-
chips: {
|
|
415
|
-
addChip,
|
|
416
|
-
removeChip,
|
|
417
|
-
getChips,
|
|
418
|
-
getSelectedChips,
|
|
419
|
-
getSelectedValues,
|
|
420
|
-
selectByValue,
|
|
421
|
-
clearSelection,
|
|
422
|
-
scrollToChip
|
|
423
|
-
},
|
|
424
|
-
// Add keyboard navigation feature
|
|
425
|
-
keyboard: {
|
|
426
|
-
enable: enableKeyboardNavigation,
|
|
427
|
-
disable: disableKeyboardNavigation
|
|
428
|
-
},
|
|
429
|
-
// Event management
|
|
430
|
-
on(event, handler) {
|
|
431
|
-
if (!eventListeners[event]) {
|
|
432
|
-
eventListeners[event] = [];
|
|
433
|
-
}
|
|
434
|
-
|
|
435
|
-
eventListeners[event].push(handler);
|
|
436
|
-
return this;
|
|
437
|
-
},
|
|
438
|
-
off(event, handler) {
|
|
439
|
-
if (eventListeners[event]) {
|
|
440
|
-
const index = eventListeners[event].indexOf(handler);
|
|
441
|
-
if (index !== -1) {
|
|
442
|
-
eventListeners[event].splice(index, 1);
|
|
443
|
-
}
|
|
444
|
-
}
|
|
445
|
-
return this;
|
|
446
|
-
}
|
|
447
|
-
};
|
|
448
|
-
};
|