mtrl 0.3.8 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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 +72 -0
- package/dist/components/progress/constants.d.ts +139 -0
- package/dist/components/progress/features/canvas.d.ts +32 -0
- package/dist/components/progress/features/circular.d.ts +9 -0
- package/dist/components/progress/features/index.d.ts +8 -0
- package/dist/components/progress/features/linear.d.ts +9 -0
- package/dist/components/progress/features/resize-observer.d.ts +5 -0
- package/dist/components/progress/features/state.d.ts +38 -0
- package/dist/components/progress/features.d.ts +40 -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 +272 -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/canvas/index.d.ts +5 -0
- package/dist/core/canvas/resize.d.ts +14 -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} +35 -83
- package/dist/core/config.d.ts +130 -0
- package/dist/core/dom/attributes.d.ts +20 -0
- package/dist/core/dom/classes.d.ts +52 -0
- package/dist/core/dom/create.d.ts +154 -0
- package/dist/core/dom/events.d.ts +69 -0
- package/dist/core/dom/index.d.ts +6 -0
- 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 +18 -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/theme.d.ts +38 -0
- package/dist/core/utils/validate.d.ts +73 -0
- package/dist/index.cjs +64 -0
- package/dist/index.cjs.map +291 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.js +53 -14854
- package/dist/index.js.map +291 -0
- package/dist/package.json +39 -0
- package/dist/styles.css +7 -0
- package/package.json +23 -4
- 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 -230
- package/src/components/menu/config.ts +0 -127
- package/src/components/menu/features/anchor.ts +0 -394
- package/src/components/menu/features/controller.ts +0 -1423
- package/src/components/menu/features/index.ts +0 -13
- package/src/components/menu/features/position.ts +0 -353
- package/src/components/menu/menu.ts +0 -121
- package/src/components/menu/types.ts +0 -392
- 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 -331
- 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/attributes.ts +0 -33
- 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/index.ts +0 -10
- 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 -90
- 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 -242
- 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 -272
- 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,907 +0,0 @@
|
|
|
1
|
-
// src/components/dialog/features.ts (partial updated code)
|
|
2
|
-
|
|
3
|
-
import { getOverlayConfig } from './config';
|
|
4
|
-
import { DialogConfig, DialogButton } from './types';
|
|
5
|
-
import createButton from '../button';
|
|
6
|
-
import { createDivider } from '../divider'; // Import the divider component
|
|
7
|
-
import { addClass, removeClass, hasClass } from '../../core/dom/classes';
|
|
8
|
-
|
|
9
|
-
// Common constants for internal use
|
|
10
|
-
const SIZE_MEDIUM = 'medium';
|
|
11
|
-
const ANIMATION_SCALE = 'scale';
|
|
12
|
-
const FOOTER_ALIGNMENT_RIGHT = 'right';
|
|
13
|
-
const EVENT_BEFORE_OPEN = 'beforeopen';
|
|
14
|
-
const EVENT_OPEN = 'open';
|
|
15
|
-
const EVENT_AFTER_OPEN = 'afteropen';
|
|
16
|
-
const EVENT_BEFORE_CLOSE = 'beforeclose';
|
|
17
|
-
const EVENT_CLOSE = 'close';
|
|
18
|
-
const EVENT_AFTER_CLOSE = 'afterclose';
|
|
19
|
-
|
|
20
|
-
// Common button variants for internal use
|
|
21
|
-
const BUTTON_VARIANT_TEXT = 'text';
|
|
22
|
-
const BUTTON_VARIANT_FILLED = 'filled';
|
|
23
|
-
|
|
24
|
-
// Arrays for class management
|
|
25
|
-
const ALL_SIZES = ['small', 'medium', 'large', 'fullwidth', 'fullscreen'];
|
|
26
|
-
const ALL_ANIMATIONS = ['scale', 'slide-up', 'slide-down', 'fade'];
|
|
27
|
-
const ALL_FOOTER_ALIGNMENTS = ['right', 'left', 'center', 'space-between'];
|
|
28
|
-
|
|
29
|
-
const DIALOG_EVENTS = {
|
|
30
|
-
OPEN: 'open',
|
|
31
|
-
CLOSE: 'close',
|
|
32
|
-
BEFORE_OPEN: 'beforeopen',
|
|
33
|
-
BEFORE_CLOSE: 'beforeclose',
|
|
34
|
-
AFTER_OPEN: 'afteropen',
|
|
35
|
-
AFTER_CLOSE: 'afterclose'
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* Creates the dialog DOM structure with proper divider handling
|
|
40
|
-
* @param config Dialog configuration
|
|
41
|
-
* @returns Component enhancer with DOM structure
|
|
42
|
-
*/
|
|
43
|
-
export const withStructure = (config: DialogConfig) => component => {
|
|
44
|
-
// Create the overlay element
|
|
45
|
-
const overlayConfig = getOverlayConfig(config);
|
|
46
|
-
const overlay = document.createElement(overlayConfig.tag || 'div');
|
|
47
|
-
|
|
48
|
-
// Add overlay classes
|
|
49
|
-
overlay.classList.add(component.getClass('dialog-overlay'));
|
|
50
|
-
|
|
51
|
-
// Set overlay attributes safely
|
|
52
|
-
if (overlayConfig.attrs && typeof overlayConfig.attrs === 'object') {
|
|
53
|
-
Object.entries(overlayConfig.attrs).forEach(([key, value]) => {
|
|
54
|
-
if (key && typeof key === 'string' && value !== undefined) {
|
|
55
|
-
overlay.setAttribute(key, String(value));
|
|
56
|
-
}
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
// Set custom z-index if provided
|
|
61
|
-
if (config.zIndex) {
|
|
62
|
-
overlay.style.zIndex = String(config.zIndex);
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
// Create internal structure
|
|
66
|
-
const createHeader = () => {
|
|
67
|
-
const header = document.createElement('div');
|
|
68
|
-
header.classList.add(component.getClass('dialog-header'));
|
|
69
|
-
|
|
70
|
-
const headerContent = document.createElement('div');
|
|
71
|
-
headerContent.classList.add(component.getClass('dialog-header-content'));
|
|
72
|
-
header.appendChild(headerContent);
|
|
73
|
-
|
|
74
|
-
if (config.title) {
|
|
75
|
-
const title = document.createElement('h2');
|
|
76
|
-
title.classList.add(component.getClass('dialog-header-title'));
|
|
77
|
-
title.textContent = config.title;
|
|
78
|
-
headerContent.appendChild(title);
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
if (config.subtitle) {
|
|
82
|
-
const subtitle = document.createElement('p');
|
|
83
|
-
subtitle.classList.add(component.getClass('dialog-header-subtitle'));
|
|
84
|
-
subtitle.textContent = config.subtitle;
|
|
85
|
-
headerContent.appendChild(subtitle);
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
if (config.closeButton !== false) {
|
|
89
|
-
const closeButton = document.createElement('button');
|
|
90
|
-
closeButton.classList.add(component.getClass('dialog-header-close'));
|
|
91
|
-
closeButton.setAttribute('aria-label', 'Close dialog');
|
|
92
|
-
closeButton.innerHTML = `
|
|
93
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
94
|
-
<line x1="18" y1="6" x2="6" y2="18"></line>
|
|
95
|
-
<line x1="6" y1="6" x2="18" y2="18"></line>
|
|
96
|
-
</svg>
|
|
97
|
-
`;
|
|
98
|
-
|
|
99
|
-
// Close button click handler with event-based communication
|
|
100
|
-
closeButton.addEventListener('click', (e) => {
|
|
101
|
-
e.preventDefault();
|
|
102
|
-
e.stopPropagation();
|
|
103
|
-
|
|
104
|
-
// Use the dialog:close custom event which will be listened for in withVisibility
|
|
105
|
-
if (component && component.emit) {
|
|
106
|
-
component.emit('dialog:close', { source: 'closeButton' });
|
|
107
|
-
}
|
|
108
|
-
});
|
|
109
|
-
|
|
110
|
-
header.appendChild(closeButton);
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
return header;
|
|
114
|
-
};
|
|
115
|
-
|
|
116
|
-
const createContent = () => {
|
|
117
|
-
const content = document.createElement('div');
|
|
118
|
-
content.classList.add(component.getClass('dialog-content'));
|
|
119
|
-
|
|
120
|
-
if (config.content) {
|
|
121
|
-
content.innerHTML = config.content;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
return content;
|
|
125
|
-
};
|
|
126
|
-
|
|
127
|
-
const createFooter = () => {
|
|
128
|
-
const footer = document.createElement('div');
|
|
129
|
-
footer.classList.add(component.getClass('dialog-footer'));
|
|
130
|
-
|
|
131
|
-
// Apply footer alignment
|
|
132
|
-
const alignment = config.footerAlignment || 'right';
|
|
133
|
-
if (alignment !== 'right') {
|
|
134
|
-
addClass(footer, `${component.getClass('dialog-footer')}--${alignment}`);
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
// Add buttons if provided
|
|
138
|
-
if (Array.isArray(config.buttons) && config.buttons.length > 0) {
|
|
139
|
-
config.buttons.forEach(buttonConfig => addButton(footer, buttonConfig, component));
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
return footer;
|
|
143
|
-
};
|
|
144
|
-
|
|
145
|
-
const createDividerElement = () => {
|
|
146
|
-
const divider = createDivider({
|
|
147
|
-
variant: 'full-width',
|
|
148
|
-
class: component.getClass('dialog-divider')
|
|
149
|
-
});
|
|
150
|
-
return divider;
|
|
151
|
-
};
|
|
152
|
-
|
|
153
|
-
// Create the dialog structure
|
|
154
|
-
const header = createHeader();
|
|
155
|
-
const content = createContent();
|
|
156
|
-
const footer = Array.isArray(config.buttons) && config.buttons.length > 0 ? createFooter() : null;
|
|
157
|
-
|
|
158
|
-
// Add dialog classes to the main component element
|
|
159
|
-
addClass(component.element, component.getClass('dialog'));
|
|
160
|
-
|
|
161
|
-
// Apply size class
|
|
162
|
-
const size = config.size || 'medium';
|
|
163
|
-
if (size !== 'medium') {
|
|
164
|
-
addClass(component.element, `${component.getClass('dialog')}--${size}`);
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
// Apply animation class
|
|
168
|
-
const animation = config.animation || 'scale';
|
|
169
|
-
if (animation !== 'scale') {
|
|
170
|
-
addClass(component.element, `${component.getClass('dialog')}--${animation}`);
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
// Add header to dialog
|
|
174
|
-
component.element.appendChild(header);
|
|
175
|
-
|
|
176
|
-
// Create divider elements if configured
|
|
177
|
-
let headerDivider = null;
|
|
178
|
-
let footerDivider = null;
|
|
179
|
-
|
|
180
|
-
if (config.divider) {
|
|
181
|
-
// Add header divider (between header and content)
|
|
182
|
-
headerDivider = createDividerElement();
|
|
183
|
-
headerDivider.element.classList.add(component.getClass('dialog-header-divider'));
|
|
184
|
-
component.element.appendChild(headerDivider.element);
|
|
185
|
-
|
|
186
|
-
// If footer exists, add footer divider (between content and footer)
|
|
187
|
-
if (footer) {
|
|
188
|
-
footerDivider = createDividerElement();
|
|
189
|
-
footerDivider.element.classList.add(component.getClass('dialog-footer-divider'));
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
// Add content to dialog
|
|
194
|
-
component.element.appendChild(content);
|
|
195
|
-
|
|
196
|
-
// Add footer divider before footer if it exists
|
|
197
|
-
if (footerDivider) {
|
|
198
|
-
component.element.appendChild(footerDivider.element);
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
// Add footer to dialog if exists
|
|
202
|
-
if (footer) {
|
|
203
|
-
component.element.appendChild(footer);
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
// Add the dialog element to the overlay
|
|
207
|
-
overlay.appendChild(component.element);
|
|
208
|
-
|
|
209
|
-
// Add overlay to container or document.body
|
|
210
|
-
const container = config.container || document.body;
|
|
211
|
-
container.appendChild(overlay);
|
|
212
|
-
|
|
213
|
-
// Store elements in component
|
|
214
|
-
return {
|
|
215
|
-
...component,
|
|
216
|
-
overlay,
|
|
217
|
-
structure: {
|
|
218
|
-
header,
|
|
219
|
-
content,
|
|
220
|
-
footer,
|
|
221
|
-
headerDivider,
|
|
222
|
-
footerDivider,
|
|
223
|
-
container
|
|
224
|
-
}
|
|
225
|
-
};
|
|
226
|
-
};
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
/**
|
|
230
|
-
* Add methods to manage dividers
|
|
231
|
-
* @returns Component enhancer with divider management features
|
|
232
|
-
*/
|
|
233
|
-
export const withDivider = () => component => {
|
|
234
|
-
return {
|
|
235
|
-
...component,
|
|
236
|
-
divider: {
|
|
237
|
-
/**
|
|
238
|
-
* Shows or hides the dividers
|
|
239
|
-
* @param show Whether to show the dividers
|
|
240
|
-
* @returns Component instance for chaining
|
|
241
|
-
*/
|
|
242
|
-
toggleDivider(show) {
|
|
243
|
-
// Handle header divider
|
|
244
|
-
if (show && !component.structure.headerDivider) {
|
|
245
|
-
// Create and add header divider
|
|
246
|
-
const headerDivider = createDivider({
|
|
247
|
-
variant: 'full-width',
|
|
248
|
-
class: `${component.getClass('dialog-divider')} ${component.getClass('dialog-header-divider')}`
|
|
249
|
-
});
|
|
250
|
-
|
|
251
|
-
// Insert after header, before content
|
|
252
|
-
component.element.insertBefore(
|
|
253
|
-
headerDivider.element,
|
|
254
|
-
component.structure.content
|
|
255
|
-
);
|
|
256
|
-
|
|
257
|
-
component.structure.headerDivider = headerDivider;
|
|
258
|
-
|
|
259
|
-
// If footer exists, add footer divider
|
|
260
|
-
if (component.structure.footer && !component.structure.footerDivider) {
|
|
261
|
-
const footerDivider = createDivider({
|
|
262
|
-
variant: 'full-width',
|
|
263
|
-
class: `${component.getClass('dialog-divider')} ${component.getClass('dialog-footer-divider')}`
|
|
264
|
-
});
|
|
265
|
-
|
|
266
|
-
// Insert before footer
|
|
267
|
-
component.element.insertBefore(
|
|
268
|
-
footerDivider.element,
|
|
269
|
-
component.structure.footer
|
|
270
|
-
);
|
|
271
|
-
|
|
272
|
-
component.structure.footerDivider = footerDivider;
|
|
273
|
-
}
|
|
274
|
-
} else if (!show) {
|
|
275
|
-
// Remove header divider if it exists
|
|
276
|
-
if (component.structure.headerDivider) {
|
|
277
|
-
component.structure.headerDivider.element.remove();
|
|
278
|
-
component.structure.headerDivider = null;
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
// Remove footer divider if it exists
|
|
282
|
-
if (component.structure.footerDivider) {
|
|
283
|
-
component.structure.footerDivider.element.remove();
|
|
284
|
-
component.structure.footerDivider = null;
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
return component;
|
|
289
|
-
},
|
|
290
|
-
|
|
291
|
-
/**
|
|
292
|
-
* Checks if the dialog has dividers
|
|
293
|
-
* @returns Whether the dialog has dividers
|
|
294
|
-
*/
|
|
295
|
-
hasDivider() {
|
|
296
|
-
return component.structure.headerDivider !== null;
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
};
|
|
300
|
-
};
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
/**
|
|
304
|
-
* Adds button to dialog footer
|
|
305
|
-
* @param footer Footer element
|
|
306
|
-
* @param buttonConfig Button configuration
|
|
307
|
-
* @param component Dialog component
|
|
308
|
-
*/
|
|
309
|
-
const addButton = (footer: HTMLElement, buttonConfig: DialogButton, component: any) => {
|
|
310
|
-
const {
|
|
311
|
-
text,
|
|
312
|
-
variant = 'text', // Using string literal directly instead of BUTTON_VARIANTS.TEXT
|
|
313
|
-
onClick,
|
|
314
|
-
closeDialog = true,
|
|
315
|
-
autofocus = false,
|
|
316
|
-
attrs = {}
|
|
317
|
-
} = buttonConfig;
|
|
318
|
-
|
|
319
|
-
const button = createButton({
|
|
320
|
-
text,
|
|
321
|
-
variant,
|
|
322
|
-
...attrs
|
|
323
|
-
});
|
|
324
|
-
|
|
325
|
-
// Button click handler with event-based communication
|
|
326
|
-
button.on('click', event => {
|
|
327
|
-
console.log('button click');
|
|
328
|
-
let shouldClose = closeDialog;
|
|
329
|
-
|
|
330
|
-
// Call onClick handler if provided
|
|
331
|
-
if (typeof onClick === 'function') {
|
|
332
|
-
try {
|
|
333
|
-
const result = onClick(event, component);
|
|
334
|
-
if (result === false) {
|
|
335
|
-
shouldClose = false;
|
|
336
|
-
}
|
|
337
|
-
} catch (err) {
|
|
338
|
-
console.error('Error in onClick handler:', err);
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
|
|
342
|
-
// Close dialog if needed - using event-based communication
|
|
343
|
-
if (shouldClose) {
|
|
344
|
-
if (component && component.emit) {
|
|
345
|
-
component.emit('dialog:close', { source: 'button', text });
|
|
346
|
-
}
|
|
347
|
-
}
|
|
348
|
-
});
|
|
349
|
-
|
|
350
|
-
// Set autofocus if needed
|
|
351
|
-
if (autofocus) {
|
|
352
|
-
button.element.setAttribute('autofocus', 'true');
|
|
353
|
-
}
|
|
354
|
-
|
|
355
|
-
footer.appendChild(button.element);
|
|
356
|
-
|
|
357
|
-
// Store button instance
|
|
358
|
-
if (!component._buttons) {
|
|
359
|
-
component._buttons = [];
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
component._buttons.push({
|
|
363
|
-
config: buttonConfig,
|
|
364
|
-
instance: button
|
|
365
|
-
});
|
|
366
|
-
};
|
|
367
|
-
|
|
368
|
-
/**
|
|
369
|
-
* Add visibility control to dialog
|
|
370
|
-
* @returns Component enhancer with visibility features
|
|
371
|
-
*/
|
|
372
|
-
export const withVisibility = () => component => {
|
|
373
|
-
// Initial state
|
|
374
|
-
const isOpen = component.config.open === true;
|
|
375
|
-
|
|
376
|
-
// Setup animation duration
|
|
377
|
-
const animationDuration = component.config.animationDuration || 150;
|
|
378
|
-
|
|
379
|
-
// Helper functions to handle focus trap
|
|
380
|
-
const focusableElements = 'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])';
|
|
381
|
-
let previouslyFocusedElement: HTMLElement | null = null;
|
|
382
|
-
|
|
383
|
-
const trapFocus = () => {
|
|
384
|
-
if (!component.config.trapFocus) return;
|
|
385
|
-
|
|
386
|
-
const focusableContent = component.element.querySelectorAll(focusableElements);
|
|
387
|
-
if (focusableContent.length === 0) return;
|
|
388
|
-
|
|
389
|
-
const firstFocusableElement = focusableContent[0] as HTMLElement;
|
|
390
|
-
const lastFocusableElement = focusableContent[focusableContent.length - 1] as HTMLElement;
|
|
391
|
-
|
|
392
|
-
// Focus the first element if autofocus is enabled
|
|
393
|
-
if (component.config.autofocus) {
|
|
394
|
-
// Check for a button with autofocus attribute
|
|
395
|
-
const autofocusElement = component.element.querySelector('[autofocus]') as HTMLElement;
|
|
396
|
-
if (autofocusElement) {
|
|
397
|
-
autofocusElement.focus();
|
|
398
|
-
} else {
|
|
399
|
-
firstFocusableElement.focus();
|
|
400
|
-
}
|
|
401
|
-
}
|
|
402
|
-
|
|
403
|
-
// Set up the keyboard trap
|
|
404
|
-
component.element.addEventListener('keydown', handleKeyDown);
|
|
405
|
-
|
|
406
|
-
function handleKeyDown(e: KeyboardEvent) {
|
|
407
|
-
const isTabPressed = e.key === 'Tab';
|
|
408
|
-
|
|
409
|
-
if (!isTabPressed) return;
|
|
410
|
-
|
|
411
|
-
if (e.shiftKey) {
|
|
412
|
-
// If shift + tab pressed and focus is on first element, move to last
|
|
413
|
-
if (document.activeElement === firstFocusableElement) {
|
|
414
|
-
lastFocusableElement.focus();
|
|
415
|
-
e.preventDefault();
|
|
416
|
-
}
|
|
417
|
-
} else {
|
|
418
|
-
// If tab pressed and focus is on last element, move to first
|
|
419
|
-
if (document.activeElement === lastFocusableElement) {
|
|
420
|
-
firstFocusableElement.focus();
|
|
421
|
-
e.preventDefault();
|
|
422
|
-
}
|
|
423
|
-
}
|
|
424
|
-
}
|
|
425
|
-
};
|
|
426
|
-
|
|
427
|
-
const releaseFocus = () => {
|
|
428
|
-
if (!component.config.trapFocus) return;
|
|
429
|
-
|
|
430
|
-
component.element.removeEventListener('keydown', handleKeyDown);
|
|
431
|
-
|
|
432
|
-
// Restore focus to previously focused element
|
|
433
|
-
if (previouslyFocusedElement) {
|
|
434
|
-
previouslyFocusedElement.focus();
|
|
435
|
-
previouslyFocusedElement = null;
|
|
436
|
-
}
|
|
437
|
-
|
|
438
|
-
function handleKeyDown() {}
|
|
439
|
-
};
|
|
440
|
-
|
|
441
|
-
const setupEvents = () => {
|
|
442
|
-
// Handle overlay click
|
|
443
|
-
if (component.config.closeOnOverlayClick !== false) {
|
|
444
|
-
component.overlay.addEventListener('click', handleOverlayClick);
|
|
445
|
-
}
|
|
446
|
-
|
|
447
|
-
// Handle Escape key
|
|
448
|
-
if (component.config.closeOnEscape !== false) {
|
|
449
|
-
document.addEventListener('keydown', handleEscKey);
|
|
450
|
-
}
|
|
451
|
-
};
|
|
452
|
-
|
|
453
|
-
const cleanupEvents = () => {
|
|
454
|
-
component.overlay.removeEventListener('click', handleOverlayClick);
|
|
455
|
-
document.removeEventListener('keydown', handleEscKey);
|
|
456
|
-
};
|
|
457
|
-
|
|
458
|
-
function handleOverlayClick(e: MouseEvent) {
|
|
459
|
-
// Only close if the click was directly on the overlay
|
|
460
|
-
if (e.target === component.overlay) {
|
|
461
|
-
visibility.close();
|
|
462
|
-
}
|
|
463
|
-
}
|
|
464
|
-
|
|
465
|
-
function handleEscKey(e: KeyboardEvent) {
|
|
466
|
-
if (e.key === 'Escape' && visibility.isOpen()) {
|
|
467
|
-
visibility.close();
|
|
468
|
-
}
|
|
469
|
-
}
|
|
470
|
-
|
|
471
|
-
// Setup initial state
|
|
472
|
-
if (isOpen) {
|
|
473
|
-
addClass(component.overlay, `${component.getClass('dialog-overlay')}--visible`);
|
|
474
|
-
addClass(component.element, `${component.getClass('dialog')}--visible`);
|
|
475
|
-
|
|
476
|
-
// Setup focus trap and events
|
|
477
|
-
trapFocus();
|
|
478
|
-
setupEvents();
|
|
479
|
-
}
|
|
480
|
-
|
|
481
|
-
// Create visibility object with clean methods
|
|
482
|
-
const visibility = {
|
|
483
|
-
open() {
|
|
484
|
-
// Don't do anything if already open
|
|
485
|
-
if (this.isOpen()) return;
|
|
486
|
-
|
|
487
|
-
// Store the currently focused element
|
|
488
|
-
previouslyFocusedElement = document.activeElement as HTMLElement;
|
|
489
|
-
|
|
490
|
-
// Trigger before open event
|
|
491
|
-
const beforeOpenEvent = {
|
|
492
|
-
dialog: component,
|
|
493
|
-
defaultPrevented: false,
|
|
494
|
-
preventDefault: () => { beforeOpenEvent.defaultPrevented = true; }
|
|
495
|
-
};
|
|
496
|
-
|
|
497
|
-
if (typeof component.emit === 'function') {
|
|
498
|
-
component.emit(DIALOG_EVENTS.BEFORE_OPEN, beforeOpenEvent);
|
|
499
|
-
}
|
|
500
|
-
|
|
501
|
-
// If event was prevented, don't open
|
|
502
|
-
if (beforeOpenEvent.defaultPrevented) return;
|
|
503
|
-
|
|
504
|
-
// Add to DOM if needed
|
|
505
|
-
if (component.overlay && !component.overlay.parentNode) {
|
|
506
|
-
const container = component.structure.container || document.body;
|
|
507
|
-
container.appendChild(component.overlay);
|
|
508
|
-
}
|
|
509
|
-
|
|
510
|
-
// Show the overlay
|
|
511
|
-
addClass(component.overlay, `${component.getClass('dialog-overlay')}--visible`);
|
|
512
|
-
|
|
513
|
-
// Show the dialog
|
|
514
|
-
setTimeout(() => {
|
|
515
|
-
addClass(component.element, `${component.getClass('dialog')}--visible`);
|
|
516
|
-
|
|
517
|
-
// Setup focus trap and events
|
|
518
|
-
trapFocus();
|
|
519
|
-
setupEvents();
|
|
520
|
-
|
|
521
|
-
// Trigger open event
|
|
522
|
-
if (typeof component.emit === 'function') {
|
|
523
|
-
component.emit(DIALOG_EVENTS.OPEN, { dialog: component });
|
|
524
|
-
|
|
525
|
-
setTimeout(() => {
|
|
526
|
-
component.emit(DIALOG_EVENTS.AFTER_OPEN, { dialog: component });
|
|
527
|
-
}, animationDuration);
|
|
528
|
-
}
|
|
529
|
-
}, 10);
|
|
530
|
-
},
|
|
531
|
-
|
|
532
|
-
close() {
|
|
533
|
-
console.log('Dialog close method called');
|
|
534
|
-
|
|
535
|
-
// Trigger before close event
|
|
536
|
-
const beforeCloseEvent = {
|
|
537
|
-
dialog: component,
|
|
538
|
-
defaultPrevented: false,
|
|
539
|
-
preventDefault: () => { beforeCloseEvent.defaultPrevented = true; }
|
|
540
|
-
};
|
|
541
|
-
|
|
542
|
-
if (typeof component.emit === 'function') {
|
|
543
|
-
component.emit(DIALOG_EVENTS.BEFORE_CLOSE, beforeCloseEvent);
|
|
544
|
-
}
|
|
545
|
-
|
|
546
|
-
// If event was prevented, don't close
|
|
547
|
-
if (beforeCloseEvent.defaultPrevented) {
|
|
548
|
-
console.log('Dialog close prevented by event handler');
|
|
549
|
-
return;
|
|
550
|
-
}
|
|
551
|
-
|
|
552
|
-
// Get class names
|
|
553
|
-
const dialogVisibleClass = `${component.getClass('dialog')}--visible`;
|
|
554
|
-
const overlayVisibleClass = `${component.getClass('dialog-overlay')}--visible`;
|
|
555
|
-
|
|
556
|
-
// Remove dialog visible class
|
|
557
|
-
removeClass(component.element, dialogVisibleClass);
|
|
558
|
-
|
|
559
|
-
// Remove overlay visible class
|
|
560
|
-
removeClass(component.overlay, overlayVisibleClass);
|
|
561
|
-
|
|
562
|
-
// Release focus and cleanup events
|
|
563
|
-
releaseFocus();
|
|
564
|
-
cleanupEvents();
|
|
565
|
-
|
|
566
|
-
// Trigger close events
|
|
567
|
-
if (typeof component.emit === 'function') {
|
|
568
|
-
component.emit(DIALOG_EVENTS.CLOSE, { dialog: component });
|
|
569
|
-
}
|
|
570
|
-
|
|
571
|
-
// Remove from DOM after animation completes
|
|
572
|
-
setTimeout(() => {
|
|
573
|
-
if (component.overlay && component.overlay.parentNode) {
|
|
574
|
-
component.overlay.parentNode.removeChild(component.overlay);
|
|
575
|
-
}
|
|
576
|
-
|
|
577
|
-
if (typeof component.emit === 'function') {
|
|
578
|
-
component.emit(DIALOG_EVENTS.AFTER_CLOSE, { dialog: component });
|
|
579
|
-
}
|
|
580
|
-
}, animationDuration);
|
|
581
|
-
},
|
|
582
|
-
|
|
583
|
-
toggle(open?: boolean) {
|
|
584
|
-
if (open === undefined) {
|
|
585
|
-
this.isOpen() ? this.close() : this.open();
|
|
586
|
-
} else if (open) {
|
|
587
|
-
this.open();
|
|
588
|
-
} else {
|
|
589
|
-
this.close();
|
|
590
|
-
}
|
|
591
|
-
},
|
|
592
|
-
|
|
593
|
-
isOpen() {
|
|
594
|
-
return component.element.classList.contains(`${component.getClass('dialog')}--visible`);
|
|
595
|
-
}
|
|
596
|
-
};
|
|
597
|
-
|
|
598
|
-
// Set up event listener for the dialog:close event
|
|
599
|
-
if (component && component.on) {
|
|
600
|
-
component.on('dialog:close', () => {
|
|
601
|
-
visibility.close();
|
|
602
|
-
});
|
|
603
|
-
}
|
|
604
|
-
|
|
605
|
-
return {
|
|
606
|
-
...component,
|
|
607
|
-
visibility
|
|
608
|
-
};
|
|
609
|
-
};
|
|
610
|
-
|
|
611
|
-
/**
|
|
612
|
-
* Adds content management features to dialog
|
|
613
|
-
* @returns Component enhancer with content features
|
|
614
|
-
*/
|
|
615
|
-
export const withContent = () => component => {
|
|
616
|
-
const headerElement = component.structure.header;
|
|
617
|
-
const contentElement = component.structure.content;
|
|
618
|
-
const footerElement = component.structure.footer;
|
|
619
|
-
|
|
620
|
-
return {
|
|
621
|
-
...component,
|
|
622
|
-
content: {
|
|
623
|
-
/**
|
|
624
|
-
* Sets dialog title
|
|
625
|
-
* @param title Title text
|
|
626
|
-
*/
|
|
627
|
-
setTitle(title: string) {
|
|
628
|
-
let titleElement = headerElement.querySelector(`.${component.getClass('dialog-header-title')}`);
|
|
629
|
-
|
|
630
|
-
if (!titleElement && title) {
|
|
631
|
-
// Create title element if it doesn't exist
|
|
632
|
-
titleElement = document.createElement('h2');
|
|
633
|
-
titleElement.classList.add(component.getClass('dialog-header-title'));
|
|
634
|
-
headerElement.querySelector(`.${component.getClass('dialog-header-content')}`).appendChild(titleElement);
|
|
635
|
-
}
|
|
636
|
-
|
|
637
|
-
if (titleElement) {
|
|
638
|
-
titleElement.textContent = title;
|
|
639
|
-
}
|
|
640
|
-
},
|
|
641
|
-
|
|
642
|
-
/**
|
|
643
|
-
* Gets dialog title
|
|
644
|
-
* @returns Title text
|
|
645
|
-
*/
|
|
646
|
-
getTitle() {
|
|
647
|
-
const titleElement = headerElement.querySelector(`.${component.getClass('dialog-header-title')}`);
|
|
648
|
-
return titleElement ? titleElement.textContent || '' : '';
|
|
649
|
-
},
|
|
650
|
-
|
|
651
|
-
/**
|
|
652
|
-
* Sets dialog subtitle
|
|
653
|
-
* @param subtitle Subtitle text
|
|
654
|
-
*/
|
|
655
|
-
setSubtitle(subtitle: string) {
|
|
656
|
-
let subtitleElement = headerElement.querySelector(`.${component.getClass('dialog-header-subtitle')}`);
|
|
657
|
-
|
|
658
|
-
if (!subtitleElement && subtitle) {
|
|
659
|
-
// Create subtitle element if it doesn't exist
|
|
660
|
-
subtitleElement = document.createElement('p');
|
|
661
|
-
subtitleElement.classList.add(component.getClass('dialog-header-subtitle'));
|
|
662
|
-
headerElement.querySelector(`.${component.getClass('dialog-header-content')}`).appendChild(subtitleElement);
|
|
663
|
-
}
|
|
664
|
-
|
|
665
|
-
if (subtitleElement) {
|
|
666
|
-
subtitleElement.textContent = subtitle;
|
|
667
|
-
}
|
|
668
|
-
},
|
|
669
|
-
|
|
670
|
-
/**
|
|
671
|
-
* Gets dialog subtitle
|
|
672
|
-
* @returns Subtitle text
|
|
673
|
-
*/
|
|
674
|
-
getSubtitle() {
|
|
675
|
-
const subtitleElement = headerElement.querySelector(`.${component.getClass('dialog-header-subtitle')}`);
|
|
676
|
-
return subtitleElement ? subtitleElement.textContent || '' : '';
|
|
677
|
-
},
|
|
678
|
-
|
|
679
|
-
/**
|
|
680
|
-
* Sets dialog content
|
|
681
|
-
* @param content Content HTML
|
|
682
|
-
*/
|
|
683
|
-
setContent(content: string) {
|
|
684
|
-
contentElement.innerHTML = content;
|
|
685
|
-
},
|
|
686
|
-
|
|
687
|
-
/**
|
|
688
|
-
* Gets dialog content
|
|
689
|
-
* @returns Content HTML
|
|
690
|
-
*/
|
|
691
|
-
getContent() {
|
|
692
|
-
return contentElement.innerHTML;
|
|
693
|
-
},
|
|
694
|
-
|
|
695
|
-
/**
|
|
696
|
-
* Gets dialog header element
|
|
697
|
-
* @returns Header element
|
|
698
|
-
*/
|
|
699
|
-
getHeaderElement() {
|
|
700
|
-
return headerElement;
|
|
701
|
-
},
|
|
702
|
-
|
|
703
|
-
/**
|
|
704
|
-
* Gets dialog content element
|
|
705
|
-
* @returns Content element
|
|
706
|
-
*/
|
|
707
|
-
getContentElement() {
|
|
708
|
-
return contentElement;
|
|
709
|
-
},
|
|
710
|
-
|
|
711
|
-
/**
|
|
712
|
-
* Gets dialog footer element
|
|
713
|
-
* @returns Footer element
|
|
714
|
-
*/
|
|
715
|
-
getFooterElement() {
|
|
716
|
-
return footerElement;
|
|
717
|
-
}
|
|
718
|
-
}
|
|
719
|
-
};
|
|
720
|
-
};
|
|
721
|
-
|
|
722
|
-
/**
|
|
723
|
-
* Adds button management features to dialog
|
|
724
|
-
* @returns Component enhancer with button features
|
|
725
|
-
*/
|
|
726
|
-
export const withButtons = () => component => {
|
|
727
|
-
// Initialize buttons array if not already done
|
|
728
|
-
if (!component._buttons) {
|
|
729
|
-
component._buttons = [];
|
|
730
|
-
}
|
|
731
|
-
|
|
732
|
-
return {
|
|
733
|
-
...component,
|
|
734
|
-
buttons: {
|
|
735
|
-
/**
|
|
736
|
-
* Adds a button to the dialog footer
|
|
737
|
-
* @param button Button configuration
|
|
738
|
-
*/
|
|
739
|
-
addButton(button: DialogButton) {
|
|
740
|
-
// Create footer if it doesn't exist
|
|
741
|
-
let footer = component.structure.footer;
|
|
742
|
-
|
|
743
|
-
if (!footer) {
|
|
744
|
-
footer = document.createElement('div');
|
|
745
|
-
footer.classList.add(component.getClass('dialog-footer'));
|
|
746
|
-
|
|
747
|
-
// Apply footer alignment
|
|
748
|
-
const alignment = component.config.footerAlignment || 'right';
|
|
749
|
-
if (alignment !== 'right') {
|
|
750
|
-
addClass(footer, `${component.getClass('dialog-footer')}--${alignment}`);
|
|
751
|
-
}
|
|
752
|
-
|
|
753
|
-
component.element.appendChild(footer);
|
|
754
|
-
component.structure.footer = footer;
|
|
755
|
-
}
|
|
756
|
-
|
|
757
|
-
// Add the button
|
|
758
|
-
addButton(footer, button, component);
|
|
759
|
-
},
|
|
760
|
-
|
|
761
|
-
/**
|
|
762
|
-
* Removes a button by index or text
|
|
763
|
-
* @param indexOrText Button index or text
|
|
764
|
-
*/
|
|
765
|
-
removeButton(indexOrText: number | string) {
|
|
766
|
-
if (typeof indexOrText === 'number') {
|
|
767
|
-
// Remove by index
|
|
768
|
-
if (indexOrText >= 0 && indexOrText < component._buttons.length) {
|
|
769
|
-
const button = component._buttons[indexOrText];
|
|
770
|
-
button.instance.destroy();
|
|
771
|
-
component._buttons.splice(indexOrText, 1);
|
|
772
|
-
}
|
|
773
|
-
} else {
|
|
774
|
-
// Remove by text
|
|
775
|
-
const index = component._buttons.findIndex(button =>
|
|
776
|
-
button.config.text === indexOrText);
|
|
777
|
-
|
|
778
|
-
if (index !== -1) {
|
|
779
|
-
const button = component._buttons[index];
|
|
780
|
-
button.instance.destroy();
|
|
781
|
-
component._buttons.splice(index, 1);
|
|
782
|
-
}
|
|
783
|
-
}
|
|
784
|
-
|
|
785
|
-
// If no buttons left, remove footer
|
|
786
|
-
if (component._buttons.length === 0 && component.structure.footer) {
|
|
787
|
-
component.element.removeChild(component.structure.footer);
|
|
788
|
-
component.structure.footer = null;
|
|
789
|
-
}
|
|
790
|
-
},
|
|
791
|
-
|
|
792
|
-
/**
|
|
793
|
-
* Gets all footer buttons
|
|
794
|
-
* @returns Array of button configurations
|
|
795
|
-
*/
|
|
796
|
-
getButtons() {
|
|
797
|
-
return component._buttons.map(button => button.config);
|
|
798
|
-
},
|
|
799
|
-
|
|
800
|
-
/**
|
|
801
|
-
* Sets footer alignment
|
|
802
|
-
* @param alignment Footer alignment
|
|
803
|
-
*/
|
|
804
|
-
setFooterAlignment(alignment: string) {
|
|
805
|
-
if (!component.structure.footer) return;
|
|
806
|
-
|
|
807
|
-
// Define all possible alignments
|
|
808
|
-
const ALL_ALIGNMENTS = ['right', 'left', 'center', 'space-between'];
|
|
809
|
-
|
|
810
|
-
// Remove existing alignment classes
|
|
811
|
-
ALL_ALIGNMENTS.forEach(align => {
|
|
812
|
-
if (align !== 'right') {
|
|
813
|
-
removeClass(component.structure.footer, `${component.getClass('dialog-footer')}--${align}`);
|
|
814
|
-
}
|
|
815
|
-
});
|
|
816
|
-
|
|
817
|
-
// Add new alignment class if not right (default)
|
|
818
|
-
if (alignment !== 'right') {
|
|
819
|
-
addClass(component.structure.footer, `${component.getClass('dialog-footer')}--${alignment}`);
|
|
820
|
-
}
|
|
821
|
-
}
|
|
822
|
-
}
|
|
823
|
-
};
|
|
824
|
-
};
|
|
825
|
-
|
|
826
|
-
/**
|
|
827
|
-
* Adds size management features to dialog
|
|
828
|
-
* @returns Component enhancer with size features
|
|
829
|
-
*/
|
|
830
|
-
export const withSize = () => component => {
|
|
831
|
-
return {
|
|
832
|
-
...component,
|
|
833
|
-
size: {
|
|
834
|
-
/**
|
|
835
|
-
* Sets dialog size
|
|
836
|
-
* @param size Size variant
|
|
837
|
-
*/
|
|
838
|
-
setSize(size: string) {
|
|
839
|
-
// Define all possible sizes
|
|
840
|
-
const ALL_SIZES = ['small', 'medium', 'large', 'fullwidth', 'fullscreen'];
|
|
841
|
-
|
|
842
|
-
// Remove existing size classes
|
|
843
|
-
ALL_SIZES.forEach(sizeValue => {
|
|
844
|
-
removeClass(component.element, `${component.getClass('dialog')}--${sizeValue}`);
|
|
845
|
-
});
|
|
846
|
-
|
|
847
|
-
// Add new size class if not medium (default)
|
|
848
|
-
if (size !== 'medium') {
|
|
849
|
-
addClass(component.element, `${component.getClass('dialog')}--${size}`);
|
|
850
|
-
}
|
|
851
|
-
}
|
|
852
|
-
}
|
|
853
|
-
};
|
|
854
|
-
};
|
|
855
|
-
|
|
856
|
-
/**
|
|
857
|
-
* Adds confirmation dialog features
|
|
858
|
-
* @returns Component enhancer with confirm feature
|
|
859
|
-
*/
|
|
860
|
-
export const withConfirm = () => component => {
|
|
861
|
-
return {
|
|
862
|
-
...component,
|
|
863
|
-
confirm(options) {
|
|
864
|
-
return new Promise((resolve) => {
|
|
865
|
-
const {
|
|
866
|
-
title = 'Confirm',
|
|
867
|
-
message,
|
|
868
|
-
confirmText = 'Yes',
|
|
869
|
-
cancelText = 'No',
|
|
870
|
-
// Use string literals directly
|
|
871
|
-
confirmVariant = 'filled',
|
|
872
|
-
cancelVariant = 'text',
|
|
873
|
-
size = 'small'
|
|
874
|
-
} = options;
|
|
875
|
-
|
|
876
|
-
// Set dialog properties
|
|
877
|
-
component.content.setTitle(title);
|
|
878
|
-
component.content.setContent(`<p>${message}</p>`);
|
|
879
|
-
component.size.setSize(size);
|
|
880
|
-
|
|
881
|
-
// Clear existing buttons
|
|
882
|
-
component._buttons.forEach(button => button.instance.destroy());
|
|
883
|
-
component._buttons = [];
|
|
884
|
-
|
|
885
|
-
// Add confirm and cancel buttons
|
|
886
|
-
component.buttons.addButton({
|
|
887
|
-
text: confirmText,
|
|
888
|
-
variant: confirmVariant,
|
|
889
|
-
onClick: () => {
|
|
890
|
-
resolve(true);
|
|
891
|
-
}
|
|
892
|
-
});
|
|
893
|
-
|
|
894
|
-
component.buttons.addButton({
|
|
895
|
-
text: cancelText,
|
|
896
|
-
variant: cancelVariant,
|
|
897
|
-
onClick: () => {
|
|
898
|
-
resolve(false);
|
|
899
|
-
}
|
|
900
|
-
});
|
|
901
|
-
|
|
902
|
-
// Open the dialog
|
|
903
|
-
component.visibility.open();
|
|
904
|
-
});
|
|
905
|
-
}
|
|
906
|
-
};
|
|
907
|
-
};
|