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.
Files changed (691) hide show
  1. package/dist/LICENSE +21 -0
  2. package/dist/README.md +324 -0
  3. package/dist/components/badge/api.d.ts +48 -0
  4. package/{src/components/badge/badge.ts → dist/components/badge/badge.d.ts} +14 -57
  5. package/dist/components/badge/config.d.ts +79 -0
  6. package/dist/components/badge/constants.d.ts +35 -0
  7. package/dist/components/badge/features.d.ts +36 -0
  8. package/dist/components/badge/index.d.ts +8 -0
  9. package/dist/components/badge/types.d.ts +256 -0
  10. package/dist/components/bottom-app-bar/bottom-app-bar.d.ts +12 -0
  11. package/dist/components/bottom-app-bar/config.d.ts +16 -0
  12. package/dist/components/bottom-app-bar/constants.d.ts +22 -0
  13. package/{src/components/bottom-app-bar/index.ts → dist/components/bottom-app-bar/index.d.ts} +0 -9
  14. package/dist/components/bottom-app-bar/types.d.ts +96 -0
  15. package/dist/components/button/api.d.ts +47 -0
  16. package/dist/components/button/button.d.ts +25 -0
  17. package/dist/components/button/config.d.ts +59 -0
  18. package/dist/components/button/constants.d.ts +43 -0
  19. package/dist/components/button/index.d.ts +6 -0
  20. package/dist/components/button/types.d.ts +265 -0
  21. package/dist/components/card/api.d.ts +11 -0
  22. package/{src/components/card/card.ts → dist/components/card/card.d.ts} +10 -58
  23. package/dist/components/card/config.d.ts +105 -0
  24. package/dist/components/card/constants.d.ts +85 -0
  25. package/dist/components/card/content.d.ts +92 -0
  26. package/dist/components/card/features.d.ts +131 -0
  27. package/{src/components/card/index.ts → dist/components/card/index.d.ts} +13 -74
  28. package/dist/components/card/types.d.ts +471 -0
  29. package/dist/components/carousel/api.d.ts +33 -0
  30. package/dist/components/carousel/carousel.d.ts +75 -0
  31. package/dist/components/carousel/config.d.ts +45 -0
  32. package/dist/components/carousel/constants.d.ts +165 -0
  33. package/dist/components/carousel/features/drag.d.ts +8 -0
  34. package/{src/components/carousel/features/index.ts → dist/components/carousel/features/index.d.ts} +1 -4
  35. package/dist/components/carousel/features/slides.d.ts +8 -0
  36. package/{src/components/carousel/index.ts → dist/components/carousel/index.d.ts} +10 -29
  37. package/dist/components/carousel/types.d.ts +276 -0
  38. package/dist/components/checkbox/api.d.ts +7 -0
  39. package/dist/components/checkbox/checkbox.d.ts +65 -0
  40. package/dist/components/checkbox/config.d.ts +44 -0
  41. package/dist/components/checkbox/constants.d.ts +63 -0
  42. package/{src/components/checkbox/index.ts → dist/components/checkbox/index.d.ts} +8 -25
  43. package/dist/components/checkbox/types.d.ts +242 -0
  44. package/dist/components/chips/api.d.ts +49 -0
  45. package/dist/components/chips/chip/api.d.ts +23 -0
  46. package/dist/components/chips/chip/chip.d.ts +8 -0
  47. package/dist/components/chips/chip/config.d.ts +57 -0
  48. package/dist/components/chips/chip/constants.d.ts +38 -0
  49. package/dist/components/chips/chip/index.d.ts +2 -0
  50. package/dist/components/chips/chip/types.d.ts +11 -0
  51. package/dist/components/chips/chips.d.ts +17 -0
  52. package/dist/components/chips/config.d.ts +67 -0
  53. package/dist/components/chips/constants.d.ts +46 -0
  54. package/dist/components/chips/features/chip-items.d.ts +8 -0
  55. package/dist/components/chips/features/container.d.ts +8 -0
  56. package/dist/components/chips/features/controller.d.ts +9 -0
  57. package/{src/components/chips/features/index.ts → dist/components/chips/features/index.d.ts} +1 -2
  58. package/dist/components/chips/features/label.d.ts +8 -0
  59. package/dist/components/chips/index.d.ts +4 -0
  60. package/dist/components/chips/schema.d.ts +34 -0
  61. package/dist/components/chips/types.d.ts +398 -0
  62. package/dist/components/datepicker/api.d.ts +9 -0
  63. package/dist/components/datepicker/config.d.ts +79 -0
  64. package/dist/components/datepicker/constants.d.ts +97 -0
  65. package/dist/components/datepicker/datepicker.d.ts +8 -0
  66. package/dist/components/datepicker/index.d.ts +3 -0
  67. package/dist/components/datepicker/render.d.ts +43 -0
  68. package/dist/components/datepicker/types.d.ts +321 -0
  69. package/dist/components/datepicker/utils.d.ts +84 -0
  70. package/dist/components/dialog/api.d.ts +59 -0
  71. package/dist/components/dialog/config.d.ts +91 -0
  72. package/dist/components/dialog/constants.d.ts +116 -0
  73. package/{src/components/dialog/dialog.ts → dist/components/dialog/dialog.d.ts} +16 -69
  74. package/dist/components/dialog/features.d.ts +37 -0
  75. package/dist/components/dialog/index.d.ts +14 -0
  76. package/dist/components/dialog/types.d.ts +483 -0
  77. package/dist/components/divider/config.d.ts +143 -0
  78. package/dist/components/divider/constants.d.ts +45 -0
  79. package/{src/components/divider/divider.ts → dist/components/divider/divider.d.ts} +9 -37
  80. package/dist/components/divider/features.d.ts +50 -0
  81. package/{src/components/divider/index.ts → dist/components/divider/index.d.ts} +6 -12
  82. package/dist/components/divider/types.d.ts +124 -0
  83. package/dist/components/extended-fab/api.d.ts +83 -0
  84. package/dist/components/extended-fab/config.d.ts +75 -0
  85. package/dist/components/extended-fab/constants.d.ts +82 -0
  86. package/dist/components/extended-fab/extended-fab.d.ts +61 -0
  87. package/{src/components/extended-fab/index.ts → dist/components/extended-fab/index.d.ts} +6 -15
  88. package/dist/components/extended-fab/types.d.ts +703 -0
  89. package/dist/components/fab/api.d.ts +64 -0
  90. package/dist/components/fab/config.d.ts +71 -0
  91. package/dist/components/fab/constants.d.ts +75 -0
  92. package/{src/components/fab/fab.ts → dist/components/fab/fab.d.ts} +10 -46
  93. package/{src/components/fab/index.ts → dist/components/fab/index.d.ts} +6 -15
  94. package/dist/components/fab/types.d.ts +577 -0
  95. package/dist/components/index.d.ts +76 -0
  96. package/dist/components/list/api.d.ts +106 -0
  97. package/dist/components/list/config.d.ts +61 -0
  98. package/dist/components/list/constants.d.ts +76 -0
  99. package/dist/components/list/features/index.d.ts +2 -0
  100. package/dist/components/list/features/listmanager.d.ts +9 -0
  101. package/dist/components/list/features/selection.d.ts +9 -0
  102. package/dist/components/list/index.d.ts +12 -0
  103. package/dist/components/list/list.d.ts +11 -0
  104. package/dist/components/list/types.d.ts +294 -0
  105. package/dist/components/menu/api.d.ts +58 -0
  106. package/dist/components/menu/config.d.ts +78 -0
  107. package/dist/components/menu/constants.d.ts +106 -0
  108. package/dist/components/menu/features/controller.d.ts +10 -0
  109. package/dist/components/menu/features/index.d.ts +6 -0
  110. package/dist/components/menu/features/keyboard.d.ts +26 -0
  111. package/dist/components/menu/features/opener.d.ts +10 -0
  112. package/dist/components/menu/features/position.d.ts +18 -0
  113. package/dist/components/menu/features/submenu.d.ts +10 -0
  114. package/{src/components/menu/index.ts → dist/components/menu/index.d.ts} +11 -27
  115. package/dist/components/menu/menu.d.ts +29 -0
  116. package/dist/components/menu/types.d.ts +338 -0
  117. package/dist/components/navigation/api.d.ts +8 -0
  118. package/dist/components/navigation/config.d.ts +34 -0
  119. package/dist/components/navigation/constants.d.ts +137 -0
  120. package/dist/components/navigation/features/controller.d.ts +30 -0
  121. package/dist/components/navigation/features/items.d.ts +32 -0
  122. package/dist/components/navigation/index.d.ts +3 -0
  123. package/dist/components/navigation/nav-item.d.ts +30 -0
  124. package/dist/components/navigation/navigation.d.ts +8 -0
  125. package/dist/components/navigation/system/core.d.ts +72 -0
  126. package/dist/components/navigation/system/events.d.ts +35 -0
  127. package/dist/components/navigation/system/index.d.ts +10 -0
  128. package/dist/components/navigation/system/mobile.d.ts +52 -0
  129. package/dist/components/navigation/system/state.d.ts +22 -0
  130. package/dist/components/navigation/system/types.d.ts +305 -0
  131. package/dist/components/navigation/types.d.ts +216 -0
  132. package/dist/components/progress/api.d.ts +46 -0
  133. package/dist/components/progress/config.d.ts +63 -0
  134. package/dist/components/progress/constants.d.ts +58 -0
  135. package/dist/components/progress/index.d.ts +3 -0
  136. package/dist/components/progress/progress.d.ts +24 -0
  137. package/dist/components/progress/types.d.ts +199 -0
  138. package/dist/components/radios/api.d.ts +37 -0
  139. package/dist/components/radios/config.d.ts +42 -0
  140. package/dist/components/radios/constants.d.ts +114 -0
  141. package/dist/components/radios/index.d.ts +3 -0
  142. package/dist/components/radios/radio.d.ts +8 -0
  143. package/dist/components/radios/radios.d.ts +8 -0
  144. package/dist/components/radios/types.d.ts +189 -0
  145. package/dist/components/search/api.d.ts +55 -0
  146. package/dist/components/search/config.d.ts +73 -0
  147. package/dist/components/search/constants.d.ts +128 -0
  148. package/{src/components/search/features/index.ts → dist/components/search/features/index.d.ts} +1 -2
  149. package/dist/components/search/features/search.d.ts +7 -0
  150. package/dist/components/search/features/states.d.ts +8 -0
  151. package/dist/components/search/features/structure.d.ts +7 -0
  152. package/dist/components/search/index.d.ts +3 -0
  153. package/dist/components/search/search.d.ts +8 -0
  154. package/dist/components/search/types.d.ts +132 -0
  155. package/dist/components/segmented-button/config.d.ts +65 -0
  156. package/dist/components/segmented-button/constants.d.ts +85 -0
  157. package/dist/components/segmented-button/index.d.ts +4 -0
  158. package/dist/components/segmented-button/segment.d.ts +15 -0
  159. package/dist/components/segmented-button/segmented-button.d.ts +49 -0
  160. package/dist/components/segmented-button/types.d.ts +257 -0
  161. package/dist/components/select/api.d.ts +8 -0
  162. package/dist/components/select/config.d.ts +18 -0
  163. package/dist/components/select/constants.d.ts +113 -0
  164. package/dist/components/select/features.d.ts +13 -0
  165. package/{src/components/select/index.ts → dist/components/select/index.d.ts} +7 -20
  166. package/dist/components/select/select.d.ts +36 -0
  167. package/dist/components/select/types.d.ts +302 -0
  168. package/dist/components/sheet/api.d.ts +37 -0
  169. package/dist/components/sheet/config.d.ts +42 -0
  170. package/dist/components/sheet/constants.d.ts +136 -0
  171. package/dist/components/sheet/features/content.d.ts +6 -0
  172. package/dist/components/sheet/features/gestures.d.ts +6 -0
  173. package/{src/components/sheet/features/index.ts → dist/components/sheet/features/index.d.ts} +1 -2
  174. package/dist/components/sheet/features/position.d.ts +7 -0
  175. package/dist/components/sheet/features/state.d.ts +6 -0
  176. package/dist/components/sheet/features/title.d.ts +6 -0
  177. package/dist/components/sheet/index.d.ts +3 -0
  178. package/dist/components/sheet/sheet.d.ts +8 -0
  179. package/dist/components/sheet/types.d.ts +250 -0
  180. package/dist/components/slider/api.d.ts +57 -0
  181. package/dist/components/slider/config.d.ts +75 -0
  182. package/dist/components/slider/constants.d.ts +138 -0
  183. package/dist/components/slider/features/controller.d.ts +9 -0
  184. package/dist/components/slider/features/handlers.d.ts +25 -0
  185. package/dist/components/slider/features/index.d.ts +3 -0
  186. package/dist/components/slider/features/range.d.ts +8 -0
  187. package/dist/components/slider/features/states.d.ts +9 -0
  188. package/dist/components/slider/index.d.ts +3 -0
  189. package/dist/components/slider/schema.d.ts +108 -0
  190. package/dist/components/slider/slider.d.ts +18 -0
  191. package/dist/components/slider/types.d.ts +170 -0
  192. package/dist/components/snackbar/api.d.ts +7 -0
  193. package/dist/components/snackbar/config.d.ts +55 -0
  194. package/dist/components/snackbar/constants.d.ts +88 -0
  195. package/dist/components/snackbar/features.d.ts +13 -0
  196. package/dist/components/snackbar/index.d.ts +3 -0
  197. package/dist/components/snackbar/position.d.ts +15 -0
  198. package/dist/components/snackbar/queue.d.ts +7 -0
  199. package/dist/components/snackbar/snackbar.d.ts +8 -0
  200. package/dist/components/snackbar/types.d.ts +172 -0
  201. package/dist/components/switch/api.d.ts +7 -0
  202. package/dist/components/switch/config.d.ts +34 -0
  203. package/dist/components/switch/constants.d.ts +88 -0
  204. package/dist/components/switch/features.d.ts +59 -0
  205. package/dist/components/switch/index.d.ts +4 -0
  206. package/dist/components/switch/switch.d.ts +8 -0
  207. package/dist/components/switch/types.d.ts +131 -0
  208. package/dist/components/tabs/api.d.ts +52 -0
  209. package/dist/components/tabs/config.d.ts +39 -0
  210. package/dist/components/tabs/constants.d.ts +142 -0
  211. package/dist/components/tabs/features.d.ts +133 -0
  212. package/dist/components/tabs/index.d.ts +11 -0
  213. package/dist/components/tabs/indicator.d.ts +49 -0
  214. package/dist/components/tabs/responsive.d.ts +38 -0
  215. package/dist/components/tabs/scroll-indicators.d.ts +18 -0
  216. package/dist/components/tabs/state.d.ts +53 -0
  217. package/dist/components/tabs/tab-api.d.ts +43 -0
  218. package/dist/components/tabs/tab.d.ts +7 -0
  219. package/dist/components/tabs/tabs.d.ts +27 -0
  220. package/dist/components/tabs/types.d.ts +390 -0
  221. package/dist/components/tabs/utils.d.ts +17 -0
  222. package/dist/components/textfield/api.d.ts +8 -0
  223. package/dist/components/textfield/config.d.ts +34 -0
  224. package/dist/components/textfield/constants.d.ts +148 -0
  225. package/{src/components/textfield/features/index.ts → dist/components/textfield/features/index.d.ts} +1 -6
  226. package/dist/components/textfield/features/leading-icon.d.ts +55 -0
  227. package/dist/components/textfield/features/placement.d.ts +28 -0
  228. package/dist/components/textfield/features/prefix-text.d.ts +54 -0
  229. package/dist/components/textfield/features/suffix-text.d.ts +54 -0
  230. package/dist/components/textfield/features/supporting-text.d.ts +59 -0
  231. package/dist/components/textfield/features/trailing-icon.d.ts +55 -0
  232. package/dist/components/textfield/index.d.ts +3 -0
  233. package/dist/components/textfield/textfield.d.ts +36 -0
  234. package/dist/components/textfield/types.d.ts +217 -0
  235. package/dist/components/timepicker/api.d.ts +24 -0
  236. package/dist/components/timepicker/clockdial.d.ts +34 -0
  237. package/dist/components/timepicker/config.d.ts +75 -0
  238. package/dist/components/timepicker/constants.d.ts +266 -0
  239. package/dist/components/timepicker/index.d.ts +4 -0
  240. package/dist/components/timepicker/render.d.ts +9 -0
  241. package/dist/components/timepicker/timepicker.d.ts +8 -0
  242. package/dist/components/timepicker/types.d.ts +284 -0
  243. package/dist/components/timepicker/utils.d.ts +74 -0
  244. package/dist/components/tooltip/api.d.ts +18 -0
  245. package/dist/components/tooltip/config.d.ts +38 -0
  246. package/dist/components/tooltip/constants.d.ts +108 -0
  247. package/dist/components/tooltip/index.d.ts +3 -0
  248. package/dist/components/tooltip/tooltip.d.ts +8 -0
  249. package/dist/components/tooltip/types.d.ts +188 -0
  250. package/dist/components/top-app-bar/config.d.ts +16 -0
  251. package/dist/components/top-app-bar/constants.d.ts +74 -0
  252. package/{src/components/top-app-bar/index.ts → dist/components/top-app-bar/index.d.ts} +2 -4
  253. package/dist/components/top-app-bar/top-app-bar.d.ts +68 -0
  254. package/dist/components/top-app-bar/types.d.ts +118 -0
  255. package/dist/constants.d.ts +30 -0
  256. package/dist/core/collection/adapters/base.d.ts +47 -0
  257. package/dist/core/collection/adapters/route.d.ts +149 -0
  258. package/dist/core/collection/collection.d.ts +131 -0
  259. package/dist/core/collection/index.d.ts +10 -0
  260. package/dist/core/collection/list-manager/config.d.ts +29 -0
  261. package/dist/core/collection/list-manager/dom-elements.d.ts +30 -0
  262. package/dist/core/collection/list-manager/index.d.ts +61 -0
  263. package/dist/core/collection/list-manager/item-measurement.d.ts +91 -0
  264. package/dist/core/collection/list-manager/renderer.d.ts +31 -0
  265. package/dist/core/collection/list-manager/scroll-tracker.d.ts +20 -0
  266. package/dist/core/collection/list-manager/state.d.ts +60 -0
  267. package/dist/core/collection/list-manager/types.d.ts +361 -0
  268. package/dist/core/collection/list-manager/utils/recycling.d.ts +34 -0
  269. package/dist/core/collection/list-manager/utils/visibility.d.ts +45 -0
  270. package/dist/core/compose/base.d.ts +31 -0
  271. package/dist/core/compose/component.d.ts +61 -0
  272. package/dist/core/compose/features/badge.d.ts +43 -0
  273. package/dist/core/compose/features/checkable.d.ts +59 -0
  274. package/dist/core/compose/features/constants.d.ts +45 -0
  275. package/dist/core/compose/features/debounce.d.ts +84 -0
  276. package/dist/core/compose/features/disabled.d.ts +47 -0
  277. package/dist/core/compose/features/events.d.ts +37 -0
  278. package/dist/core/compose/features/gestures/longpress.d.ts +85 -0
  279. package/dist/core/compose/features/gestures/pan.d.ts +108 -0
  280. package/dist/core/compose/features/gestures/pinch.d.ts +111 -0
  281. package/dist/core/compose/features/gestures/rotate.d.ts +111 -0
  282. package/dist/core/compose/features/gestures/swipe.d.ts +149 -0
  283. package/dist/core/compose/features/gestures/tap.d.ts +79 -0
  284. package/dist/core/compose/features/gestures.d.ts +86 -0
  285. package/dist/core/compose/features/icon.d.ts +71 -0
  286. package/{src/core/compose/features/index.ts → dist/core/compose/features/index.d.ts} +7 -8
  287. package/dist/core/compose/features/input.d.ts +71 -0
  288. package/dist/core/compose/features/lifecycle.d.ts +61 -0
  289. package/dist/core/compose/features/position.d.ts +51 -0
  290. package/dist/core/compose/features/ripple.d.ts +61 -0
  291. package/dist/core/compose/features/size.d.ts +17 -0
  292. package/dist/core/compose/features/style.d.ts +16 -0
  293. package/dist/core/compose/features/text.d.ts +63 -0
  294. package/dist/core/compose/features/textinput.d.ts +93 -0
  295. package/dist/core/compose/features/textlabel.d.ts +57 -0
  296. package/dist/core/compose/features/throttle.d.ts +75 -0
  297. package/dist/core/compose/features/track.d.ts +42 -0
  298. package/dist/core/compose/features/variant.d.ts +17 -0
  299. package/dist/core/compose/features/withEvents.d.ts +45 -0
  300. package/dist/core/compose/index.d.ts +17 -0
  301. package/{src/core/compose/pipe.ts → dist/core/compose/pipe.d.ts} +4 -20
  302. package/dist/core/compose/utils/type-guards.d.ts +27 -0
  303. package/dist/core/composition/features/dom.d.ts +19 -0
  304. package/dist/core/composition/features/icon.d.ts +45 -0
  305. package/{src/core/composition/features/index.ts → dist/core/composition/features/index.d.ts} +1 -6
  306. package/dist/core/composition/features/label.d.ts +49 -0
  307. package/{src/core/composition/features/layout.ts → dist/core/composition/features/layout.d.ts} +8 -24
  308. package/{src/core/composition/index.ts → dist/core/composition/index.d.ts} +4 -14
  309. package/{src/core/config/component-config.ts → dist/core/config/component.d.ts} +34 -82
  310. package/dist/core/config.d.ts +130 -0
  311. package/{src/core/dom/attributes.ts → dist/core/dom/attributes.d.ts} +2 -13
  312. package/dist/core/dom/classes.d.ts +42 -0
  313. package/dist/core/dom/create.d.ts +124 -0
  314. package/dist/core/dom/events.d.ts +69 -0
  315. package/{src/core/dom/index.ts → dist/core/dom/index.d.ts} +1 -5
  316. package/dist/core/dom/utils.d.ts +42 -0
  317. package/dist/core/gestures/index.d.ts +12 -0
  318. package/dist/core/gestures/longpress.d.ts +23 -0
  319. package/dist/core/gestures/manager.d.ts +14 -0
  320. package/dist/core/gestures/pan.d.ts +12 -0
  321. package/dist/core/gestures/pinch.d.ts +14 -0
  322. package/dist/core/gestures/rotate.d.ts +14 -0
  323. package/dist/core/gestures/swipe.d.ts +20 -0
  324. package/dist/core/gestures/tap.d.ts +12 -0
  325. package/dist/core/gestures/types.d.ts +320 -0
  326. package/dist/core/gestures/utils.d.ts +57 -0
  327. package/dist/core/index.d.ts +29 -0
  328. package/dist/core/layout/array.d.ts +15 -0
  329. package/dist/core/layout/config.d.ts +32 -0
  330. package/dist/core/layout/create.d.ts +14 -0
  331. package/dist/core/layout/index.d.ts +13 -0
  332. package/dist/core/layout/jsx.d.ts +13 -0
  333. package/dist/core/layout/object.d.ts +14 -0
  334. package/dist/core/layout/processor.d.ts +28 -0
  335. package/dist/core/layout/result.d.ts +12 -0
  336. package/dist/core/layout/template.d.ts +12 -0
  337. package/dist/core/layout/types.d.ts +137 -0
  338. package/dist/core/layout/utils.d.ts +38 -0
  339. package/dist/core/state/disabled.d.ts +32 -0
  340. package/dist/core/state/emitter.d.ts +40 -0
  341. package/dist/core/state/events.d.ts +36 -0
  342. package/{src/core/state/index.ts → dist/core/state/index.d.ts} +1 -7
  343. package/dist/core/state/lifecycle.d.ts +57 -0
  344. package/dist/core/state/store.d.ts +82 -0
  345. package/dist/core/utils/background.d.ts +40 -0
  346. package/dist/core/utils/index.d.ts +23 -0
  347. package/dist/core/utils/mobile.d.ts +54 -0
  348. package/dist/core/utils/object.d.ts +13 -0
  349. package/dist/core/utils/performance.d.ts +79 -0
  350. package/dist/core/utils/validate.d.ts +73 -0
  351. package/dist/index.cjs +64 -0
  352. package/dist/index.cjs.map +285 -0
  353. package/dist/index.d.ts +15 -0
  354. package/dist/index.js +53 -14854
  355. package/dist/index.js.map +285 -0
  356. package/dist/package.json +39 -0
  357. package/dist/styles.css +7 -0
  358. package/package.json +24 -5
  359. package/.env +0 -15
  360. package/.typedocignore +0 -11
  361. package/CONTRIBUTING.md +0 -218
  362. package/DOCS.md +0 -153
  363. package/TESTING.md +0 -214
  364. package/git-user-stats.js +0 -545
  365. package/index.ts +0 -10
  366. package/src/components/badge/api.ts +0 -313
  367. package/src/components/badge/config.ts +0 -153
  368. package/src/components/badge/features.ts +0 -194
  369. package/src/components/badge/index.ts +0 -90
  370. package/src/components/badge/types.ts +0 -279
  371. package/src/components/bottom-app-bar/bottom-app-bar.ts +0 -154
  372. package/src/components/bottom-app-bar/config.ts +0 -29
  373. package/src/components/bottom-app-bar/types.ts +0 -114
  374. package/src/components/button/api.ts +0 -172
  375. package/src/components/button/button.ts +0 -112
  376. package/src/components/button/config.ts +0 -96
  377. package/src/components/button/index.ts +0 -37
  378. package/src/components/button/types.ts +0 -290
  379. package/src/components/card/api.ts +0 -222
  380. package/src/components/card/config.ts +0 -304
  381. package/src/components/card/content.ts +0 -343
  382. package/src/components/card/features.ts +0 -407
  383. package/src/components/card/types.ts +0 -497
  384. package/src/components/carousel/api.ts +0 -147
  385. package/src/components/carousel/carousel.ts +0 -242
  386. package/src/components/carousel/config.ts +0 -91
  387. package/src/components/carousel/constants.ts +0 -181
  388. package/src/components/carousel/features/drag.ts +0 -388
  389. package/src/components/carousel/features/slides.ts +0 -682
  390. package/src/components/carousel/types.ts +0 -327
  391. package/src/components/checkbox/api.ts +0 -82
  392. package/src/components/checkbox/checkbox.ts +0 -142
  393. package/src/components/checkbox/config.ts +0 -89
  394. package/src/components/checkbox/types.ts +0 -342
  395. package/src/components/chips/api.ts +0 -194
  396. package/src/components/chips/chip/api.ts +0 -233
  397. package/src/components/chips/chip/chip.ts +0 -131
  398. package/src/components/chips/chip/config.ts +0 -91
  399. package/src/components/chips/chip/index.ts +0 -3
  400. package/src/components/chips/chips.md +0 -481
  401. package/src/components/chips/chips.ts +0 -75
  402. package/src/components/chips/config.ts +0 -109
  403. package/src/components/chips/constants.ts +0 -61
  404. package/src/components/chips/features/chip-items.ts +0 -33
  405. package/src/components/chips/features/container.ts +0 -77
  406. package/src/components/chips/features/controller.ts +0 -448
  407. package/src/components/chips/features/label.ts +0 -108
  408. package/src/components/chips/index.ts +0 -11
  409. package/src/components/chips/schema.ts +0 -61
  410. package/src/components/chips/types.ts +0 -469
  411. package/src/components/datepicker/api.ts +0 -265
  412. package/src/components/datepicker/config.ts +0 -141
  413. package/src/components/datepicker/datepicker.ts +0 -341
  414. package/src/components/datepicker/index.ts +0 -12
  415. package/src/components/datepicker/render.ts +0 -450
  416. package/src/components/datepicker/types.ts +0 -397
  417. package/src/components/datepicker/utils.ts +0 -289
  418. package/src/components/dialog/api.ts +0 -317
  419. package/src/components/dialog/config.ts +0 -116
  420. package/src/components/dialog/features.ts +0 -907
  421. package/src/components/dialog/index.ts +0 -141
  422. package/src/components/dialog/types.ts +0 -553
  423. package/src/components/divider/config.ts +0 -165
  424. package/src/components/divider/features.ts +0 -233
  425. package/src/components/divider/types.ts +0 -132
  426. package/src/components/extended-fab/api.ts +0 -193
  427. package/src/components/extended-fab/config.ts +0 -140
  428. package/src/components/extended-fab/extended-fab.ts +0 -153
  429. package/src/components/extended-fab/types.ts +0 -749
  430. package/src/components/fab/api.ts +0 -137
  431. package/src/components/fab/config.ts +0 -121
  432. package/src/components/fab/types.ts +0 -615
  433. package/src/components/list/api.ts +0 -82
  434. package/src/components/list/config.ts +0 -63
  435. package/src/components/list/features.ts +0 -229
  436. package/src/components/list/index.ts +0 -67
  437. package/src/components/list/list-item.ts +0 -163
  438. package/src/components/list/list.ts +0 -108
  439. package/src/components/list/types.ts +0 -396
  440. package/src/components/list/utils.ts +0 -98
  441. package/src/components/menu/api.ts +0 -193
  442. package/src/components/menu/config.ts +0 -125
  443. package/src/components/menu/features/anchor.ts +0 -243
  444. package/src/components/menu/features/controller.ts +0 -1167
  445. package/src/components/menu/features/index.ts +0 -5
  446. package/src/components/menu/features/position.ts +0 -353
  447. package/src/components/menu/menu.ts +0 -119
  448. package/src/components/menu/types.ts +0 -379
  449. package/src/components/navigation/api.ts +0 -142
  450. package/src/components/navigation/config.ts +0 -73
  451. package/src/components/navigation/features/controller.ts +0 -273
  452. package/src/components/navigation/features/items.ts +0 -353
  453. package/src/components/navigation/index.ts +0 -11
  454. package/src/components/navigation/nav-item.ts +0 -196
  455. package/src/components/navigation/navigation.ts +0 -115
  456. package/src/components/navigation/system/core.ts +0 -302
  457. package/src/components/navigation/system/events.ts +0 -240
  458. package/src/components/navigation/system/index.ts +0 -184
  459. package/src/components/navigation/system/mobile.ts +0 -278
  460. package/src/components/navigation/system/state.ts +0 -77
  461. package/src/components/navigation/system/types.ts +0 -364
  462. package/src/components/navigation/types.ts +0 -292
  463. package/src/components/progress/api.ts +0 -178
  464. package/src/components/progress/config.ts +0 -122
  465. package/src/components/progress/index.ts +0 -4
  466. package/src/components/progress/progress.ts +0 -159
  467. package/src/components/progress/types.ts +0 -255
  468. package/src/components/radios/api.ts +0 -125
  469. package/src/components/radios/config.ts +0 -59
  470. package/src/components/radios/constants.ts +0 -19
  471. package/src/components/radios/index.ts +0 -3
  472. package/src/components/radios/radio.ts +0 -292
  473. package/src/components/radios/radios.ts +0 -43
  474. package/src/components/radios/types.ts +0 -219
  475. package/src/components/search/api.ts +0 -203
  476. package/src/components/search/config.ts +0 -86
  477. package/src/components/search/features/search.ts +0 -717
  478. package/src/components/search/features/states.ts +0 -169
  479. package/src/components/search/features/structure.ts +0 -197
  480. package/src/components/search/index.ts +0 -7
  481. package/src/components/search/search.ts +0 -52
  482. package/src/components/search/types.ts +0 -175
  483. package/src/components/segmented-button/config.ts +0 -119
  484. package/src/components/segmented-button/index.ts +0 -4
  485. package/src/components/segmented-button/segment.ts +0 -108
  486. package/src/components/segmented-button/segmented-button.ts +0 -361
  487. package/src/components/segmented-button/types.ts +0 -306
  488. package/src/components/select/api.ts +0 -78
  489. package/src/components/select/config.ts +0 -76
  490. package/src/components/select/features.ts +0 -317
  491. package/src/components/select/select.ts +0 -73
  492. package/src/components/select/types.ts +0 -355
  493. package/src/components/sheet/api.ts +0 -96
  494. package/src/components/sheet/config.ts +0 -65
  495. package/src/components/sheet/features/content.ts +0 -51
  496. package/src/components/sheet/features/gestures.ts +0 -177
  497. package/src/components/sheet/features/position.ts +0 -41
  498. package/src/components/sheet/features/state.ts +0 -116
  499. package/src/components/sheet/features/title.ts +0 -86
  500. package/src/components/sheet/index.ts +0 -12
  501. package/src/components/sheet/sheet.ts +0 -56
  502. package/src/components/sheet/types.ts +0 -294
  503. package/src/components/slider/accessibility.md +0 -59
  504. package/src/components/slider/api.ts +0 -192
  505. package/src/components/slider/config.ts +0 -118
  506. package/src/components/slider/features/controller.ts +0 -737
  507. package/src/components/slider/features/handlers.ts +0 -497
  508. package/src/components/slider/features/index.ts +0 -5
  509. package/src/components/slider/features/range.ts +0 -104
  510. package/src/components/slider/features/states.ts +0 -195
  511. package/src/components/slider/index.ts +0 -17
  512. package/src/components/slider/schema.ts +0 -141
  513. package/src/components/slider/slider.ts +0 -76
  514. package/src/components/slider/types.ts +0 -223
  515. package/src/components/snackbar/api.ts +0 -162
  516. package/src/components/snackbar/config.ts +0 -61
  517. package/src/components/snackbar/features.ts +0 -76
  518. package/src/components/snackbar/index.ts +0 -9
  519. package/src/components/snackbar/position.ts +0 -79
  520. package/src/components/snackbar/queue.ts +0 -76
  521. package/src/components/snackbar/snackbar.ts +0 -60
  522. package/src/components/snackbar/types.ts +0 -159
  523. package/src/components/switch/api.ts +0 -93
  524. package/src/components/switch/config.ts +0 -56
  525. package/src/components/switch/features.ts +0 -198
  526. package/src/components/switch/index.ts +0 -8
  527. package/src/components/switch/switch.ts +0 -52
  528. package/src/components/switch/types.ts +0 -168
  529. package/src/components/tabs/api.ts +0 -221
  530. package/src/components/tabs/config.ts +0 -73
  531. package/src/components/tabs/features.ts +0 -403
  532. package/src/components/tabs/index.ts +0 -46
  533. package/src/components/tabs/indicator.ts +0 -285
  534. package/src/components/tabs/responsive.ts +0 -144
  535. package/src/components/tabs/scroll-indicators.ts +0 -149
  536. package/src/components/tabs/state.ts +0 -186
  537. package/src/components/tabs/tab-api.ts +0 -266
  538. package/src/components/tabs/tab.ts +0 -267
  539. package/src/components/tabs/tabs.ts +0 -71
  540. package/src/components/tabs/types.ts +0 -461
  541. package/src/components/tabs/utils.ts +0 -107
  542. package/src/components/textfield/api.ts +0 -197
  543. package/src/components/textfield/config.ts +0 -52
  544. package/src/components/textfield/features/leading-icon.ts +0 -127
  545. package/src/components/textfield/features/placement.ts +0 -149
  546. package/src/components/textfield/features/prefix-text.ts +0 -107
  547. package/src/components/textfield/features/suffix-text.ts +0 -100
  548. package/src/components/textfield/features/supporting-text.ts +0 -113
  549. package/src/components/textfield/features/trailing-icon.ts +0 -108
  550. package/src/components/textfield/index.ts +0 -9
  551. package/src/components/textfield/textfield.ts +0 -92
  552. package/src/components/textfield/types.ts +0 -265
  553. package/src/components/timepicker/README.md +0 -277
  554. package/src/components/timepicker/api.ts +0 -632
  555. package/src/components/timepicker/clockdial.ts +0 -479
  556. package/src/components/timepicker/config.ts +0 -228
  557. package/src/components/timepicker/index.ts +0 -3
  558. package/src/components/timepicker/render.ts +0 -613
  559. package/src/components/timepicker/timepicker.ts +0 -117
  560. package/src/components/timepicker/types.ts +0 -336
  561. package/src/components/timepicker/utils.ts +0 -241
  562. package/src/components/tooltip/api.ts +0 -415
  563. package/src/components/tooltip/config.ts +0 -80
  564. package/src/components/tooltip/index.ts +0 -12
  565. package/src/components/tooltip/tooltip.ts +0 -60
  566. package/src/components/tooltip/types.ts +0 -223
  567. package/src/components/top-app-bar/config.ts +0 -83
  568. package/src/components/top-app-bar/top-app-bar.ts +0 -316
  569. package/src/components/top-app-bar/types.ts +0 -140
  570. package/src/core/build/constants.ts +0 -48
  571. package/src/core/build/icon.ts +0 -137
  572. package/src/core/build/ripple.ts +0 -193
  573. package/src/core/build/text.ts +0 -91
  574. package/src/core/collection/adapters/base.ts +0 -62
  575. package/src/core/collection/adapters/route.ts +0 -201
  576. package/src/core/collection/collection.ts +0 -300
  577. package/src/core/collection/index.ts +0 -57
  578. package/src/core/collection/list-manager.ts +0 -333
  579. package/src/core/compose/base.ts +0 -43
  580. package/src/core/compose/component.ts +0 -255
  581. package/src/core/compose/features/badge.ts +0 -79
  582. package/src/core/compose/features/checkable.ts +0 -155
  583. package/src/core/compose/features/disabled.ts +0 -116
  584. package/src/core/compose/features/events.ts +0 -65
  585. package/src/core/compose/features/icon.ts +0 -71
  586. package/src/core/compose/features/input.ts +0 -174
  587. package/src/core/compose/features/lifecycle.ts +0 -139
  588. package/src/core/compose/features/position.ts +0 -94
  589. package/src/core/compose/features/ripple.ts +0 -58
  590. package/src/core/compose/features/size.ts +0 -29
  591. package/src/core/compose/features/style.ts +0 -31
  592. package/src/core/compose/features/text.ts +0 -44
  593. package/src/core/compose/features/textinput.ts +0 -238
  594. package/src/core/compose/features/textlabel.ts +0 -113
  595. package/src/core/compose/features/track.ts +0 -84
  596. package/src/core/compose/features/variant.ts +0 -29
  597. package/src/core/compose/features/withEvents.ts +0 -137
  598. package/src/core/compose/index.ts +0 -54
  599. package/src/core/composition/features/dom.ts +0 -45
  600. package/src/core/composition/features/icon.ts +0 -131
  601. package/src/core/composition/features/label.ts +0 -155
  602. package/src/core/config.ts +0 -211
  603. package/src/core/dom/classes.ts +0 -132
  604. package/src/core/dom/create.ts +0 -273
  605. package/src/core/dom/events.ts +0 -209
  606. package/src/core/dom/utils.ts +0 -97
  607. package/src/core/index.ts +0 -111
  608. package/src/core/layout/README.md +0 -715
  609. package/src/core/layout/array.ts +0 -180
  610. package/src/core/layout/config.ts +0 -193
  611. package/src/core/layout/create.ts +0 -54
  612. package/src/core/layout/index.ts +0 -36
  613. package/src/core/layout/object.ts +0 -123
  614. package/src/core/layout/processor.ts +0 -106
  615. package/src/core/layout/result.ts +0 -84
  616. package/src/core/layout/types.ts +0 -180
  617. package/src/core/layout/utils.ts +0 -144
  618. package/src/core/state/disabled.ts +0 -81
  619. package/src/core/state/emitter.ts +0 -94
  620. package/src/core/state/events.ts +0 -88
  621. package/src/core/state/lifecycle.ts +0 -131
  622. package/src/core/state/store.ts +0 -197
  623. package/src/core/utils/index.ts +0 -45
  624. package/src/core/utils/mobile.ts +0 -98
  625. package/src/core/utils/object.ts +0 -41
  626. package/src/core/utils/validate.ts +0 -234
  627. package/src/index.ts +0 -134
  628. package/src/styles/abstract/_base.scss +0 -2
  629. package/src/styles/abstract/_config.scss +0 -28
  630. package/src/styles/abstract/_functions.scss +0 -124
  631. package/src/styles/abstract/_mixins.scss +0 -352
  632. package/src/styles/abstract/_theme.scss +0 -269
  633. package/src/styles/abstract/_variables.scss +0 -305
  634. package/src/styles/base/_reset.scss +0 -86
  635. package/src/styles/base/_typography.scss +0 -155
  636. package/src/styles/components/_badge.scss +0 -182
  637. package/src/styles/components/_bottom-app-bar.scss +0 -103
  638. package/src/styles/components/_button.scss +0 -224
  639. package/src/styles/components/_card.scss +0 -401
  640. package/src/styles/components/_carousel.scss +0 -645
  641. package/src/styles/components/_checkbox.scss +0 -231
  642. package/src/styles/components/_chips.scss +0 -638
  643. package/src/styles/components/_datepicker.scss +0 -358
  644. package/src/styles/components/_dialog.scss +0 -259
  645. package/src/styles/components/_divider.scss +0 -57
  646. package/src/styles/components/_extended-fab.scss +0 -267
  647. package/src/styles/components/_fab.scss +0 -225
  648. package/src/styles/components/_list.scss +0 -248
  649. package/src/styles/components/_menu.scss +0 -248
  650. package/src/styles/components/_navigation-mobile.scss +0 -244
  651. package/src/styles/components/_navigation-system.scss +0 -151
  652. package/src/styles/components/_navigation.scss +0 -407
  653. package/src/styles/components/_progress.scss +0 -151
  654. package/src/styles/components/_radios.scss +0 -187
  655. package/src/styles/components/_search.scss +0 -306
  656. package/src/styles/components/_segmented-button.scss +0 -227
  657. package/src/styles/components/_select.scss +0 -265
  658. package/src/styles/components/_sheet.scss +0 -236
  659. package/src/styles/components/_slider.scss +0 -489
  660. package/src/styles/components/_snackbar.scss +0 -211
  661. package/src/styles/components/_switch.scss +0 -298
  662. package/src/styles/components/_tabs.scss +0 -416
  663. package/src/styles/components/_textfield.scss +0 -773
  664. package/src/styles/components/_timepicker.scss +0 -451
  665. package/src/styles/components/_tooltip.scss +0 -241
  666. package/src/styles/components/_top-app-bar.scss +0 -225
  667. package/src/styles/main.scss +0 -175
  668. package/src/styles/themes/_autumn.scss +0 -105
  669. package/src/styles/themes/_base-theme.scss +0 -85
  670. package/src/styles/themes/_baseline.scss +0 -173
  671. package/src/styles/themes/_bluekhaki.scss +0 -125
  672. package/src/styles/themes/_brownbeige.scss +0 -125
  673. package/src/styles/themes/_browngreen.scss +0 -125
  674. package/src/styles/themes/_forest.scss +0 -77
  675. package/src/styles/themes/_greenbeige.scss +0 -125
  676. package/src/styles/themes/_index.scss +0 -6
  677. package/src/styles/themes/_material.scss +0 -125
  678. package/src/styles/themes/_ocean.scss +0 -77
  679. package/src/styles/themes/_sageivory.scss +0 -125
  680. package/src/styles/themes/_spring.scss +0 -77
  681. package/src/styles/themes/_summer.scss +0 -87
  682. package/src/styles/themes/_sunset.scss +0 -60
  683. package/src/styles/themes/_tealcaramel.scss +0 -125
  684. package/src/styles/themes/_winter.scss +0 -77
  685. package/src/styles/utilities/_colors.scss +0 -154
  686. package/src/styles/utilities/_flexbox.scss +0 -194
  687. package/src/styles/utilities/_layout.scss +0 -665
  688. package/src/styles/utilities/_ripple.scss +0 -79
  689. package/src/styles/utilities/_spacing.scss +0 -139
  690. package/src/styles/utilities/_typography.scss +0 -178
  691. 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
- };