igniteui-webcomponents 6.4.0-alpha.4 → 6.5.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.
Files changed (431) hide show
  1. package/CHANGELOG.md +141 -2
  2. package/README.md +65 -56
  3. package/components/button/themes/button/dark/button.indigo.css.js +1 -1
  4. package/components/button/themes/button/dark/button.indigo.css.js.map +1 -1
  5. package/components/button/themes/button/dark/button.material.css.js +1 -1
  6. package/components/button/themes/button/dark/button.material.css.js.map +1 -1
  7. package/components/button/themes/button/light/button.indigo.css.js +1 -1
  8. package/components/button/themes/button/light/button.indigo.css.js.map +1 -1
  9. package/components/button/themes/button/light/button.material.css.js +1 -1
  10. package/components/button/themes/button/light/button.material.css.js.map +1 -1
  11. package/components/button/themes/button/shared/button.bootstrap.css.js +1 -1
  12. package/components/button/themes/button/shared/button.bootstrap.css.js.map +1 -1
  13. package/components/button/themes/button/shared/button.common.css.js +1 -1
  14. package/components/button/themes/button/shared/button.common.css.js.map +1 -1
  15. package/components/button/themes/button/shared/button.fluent.css.js +1 -1
  16. package/components/button/themes/button/shared/button.fluent.css.js.map +1 -1
  17. package/components/button/themes/button/shared/button.indigo.css.js +1 -1
  18. package/components/button/themes/button/shared/button.indigo.css.js.map +1 -1
  19. package/components/button/themes/button/shared/button.material.css.js +1 -1
  20. package/components/button/themes/button/shared/button.material.css.js.map +1 -1
  21. package/components/button-group/themes/dark/button-group.material.css.js +1 -1
  22. package/components/button-group/themes/dark/button-group.material.css.js.map +1 -1
  23. package/components/button-group/themes/light/button-group.material.css.js +1 -1
  24. package/components/button-group/themes/light/button-group.material.css.js.map +1 -1
  25. package/components/button-group/themes/shared/button/button.bootstrap.css.js +1 -1
  26. package/components/button-group/themes/shared/button/button.bootstrap.css.js.map +1 -1
  27. package/components/button-group/themes/shared/button/button.material.css.js +1 -1
  28. package/components/button-group/themes/shared/button/button.material.css.js.map +1 -1
  29. package/components/calendar/base.d.ts +7 -3
  30. package/components/calendar/base.js +10 -14
  31. package/components/calendar/base.js.map +1 -1
  32. package/components/calendar/calendar.d.ts +48 -44
  33. package/components/calendar/calendar.js +263 -259
  34. package/components/calendar/calendar.js.map +1 -1
  35. package/components/calendar/days-view/days-view.d.ts +49 -27
  36. package/components/calendar/days-view/days-view.js +170 -168
  37. package/components/calendar/days-view/days-view.js.map +1 -1
  38. package/components/calendar/helpers.js +40 -28
  39. package/components/calendar/helpers.js.map +1 -1
  40. package/components/calendar/model.d.ts +9 -3
  41. package/components/calendar/model.js +29 -19
  42. package/components/calendar/model.js.map +1 -1
  43. package/components/calendar/months-view/months-view.d.ts +6 -8
  44. package/components/calendar/months-view/months-view.js +25 -38
  45. package/components/calendar/months-view/months-view.js.map +1 -1
  46. package/components/calendar/themes/dark/calendar.bootstrap.css.js +1 -1
  47. package/components/calendar/themes/dark/calendar.bootstrap.css.js.map +1 -1
  48. package/components/calendar/themes/dark/calendar.fluent.css.js +1 -1
  49. package/components/calendar/themes/dark/calendar.fluent.css.js.map +1 -1
  50. package/components/calendar/themes/dark/calendar.indigo.css.js +1 -1
  51. package/components/calendar/themes/dark/calendar.indigo.css.js.map +1 -1
  52. package/components/calendar/themes/dark/calendar.material.css.js +1 -1
  53. package/components/calendar/themes/dark/calendar.material.css.js.map +1 -1
  54. package/components/calendar/themes/days.js +8 -23
  55. package/components/calendar/themes/days.js.map +1 -1
  56. package/components/calendar/themes/light/calendar.bootstrap.css.js +1 -1
  57. package/components/calendar/themes/light/calendar.bootstrap.css.js.map +1 -1
  58. package/components/calendar/themes/light/calendar.fluent.css.js +1 -1
  59. package/components/calendar/themes/light/calendar.fluent.css.js.map +1 -1
  60. package/components/calendar/themes/light/calendar.indigo.css.js +1 -1
  61. package/components/calendar/themes/light/calendar.indigo.css.js.map +1 -1
  62. package/components/calendar/themes/light/calendar.material.css.js +1 -1
  63. package/components/calendar/themes/light/calendar.material.css.js.map +1 -1
  64. package/components/calendar/themes/shared/bootstrap/days-view.bootstrap.css.js +1 -1
  65. package/components/calendar/themes/shared/bootstrap/days-view.bootstrap.css.js.map +1 -1
  66. package/components/calendar/themes/shared/bootstrap/year-month-view.bootstrap.css.js +1 -1
  67. package/components/calendar/themes/shared/bootstrap/year-month-view.bootstrap.css.js.map +1 -1
  68. package/components/calendar/themes/shared/fluent/days-view.fluent.css.js +1 -1
  69. package/components/calendar/themes/shared/fluent/days-view.fluent.css.js.map +1 -1
  70. package/components/calendar/themes/shared/indigo/days-view.indigo.css.js +1 -1
  71. package/components/calendar/themes/shared/indigo/days-view.indigo.css.js.map +1 -1
  72. package/components/calendar/themes/shared/material/days-view.material.css.js +1 -1
  73. package/components/calendar/themes/shared/material/days-view.material.css.js.map +1 -1
  74. package/components/calendar/themes/year-month.js +8 -23
  75. package/components/calendar/themes/year-month.js.map +1 -1
  76. package/components/calendar/years-view/years-view.d.ts +6 -5
  77. package/components/calendar/years-view/years-view.js +11 -14
  78. package/components/calendar/years-view/years-view.js.map +1 -1
  79. package/components/carousel/carousel.d.ts +2 -1
  80. package/components/carousel/carousel.js.map +1 -1
  81. package/components/checkbox/checkbox-base.d.ts +1 -1
  82. package/components/checkbox/themes/light/checkbox/checkbox.material.css.js +1 -1
  83. package/components/checkbox/themes/light/checkbox/checkbox.material.css.js.map +1 -1
  84. package/components/checkbox/themes/shared/switch/switch.bootstrap.css.js +1 -1
  85. package/components/checkbox/themes/shared/switch/switch.bootstrap.css.js.map +1 -1
  86. package/components/checkbox/themes/shared/switch/switch.common.css.js +1 -1
  87. package/components/checkbox/themes/shared/switch/switch.common.css.js.map +1 -1
  88. package/components/checkbox/themes/shared/switch/switch.fluent.css.js +1 -1
  89. package/components/checkbox/themes/shared/switch/switch.fluent.css.js.map +1 -1
  90. package/components/checkbox/themes/shared/switch/switch.indigo.css.js +1 -1
  91. package/components/checkbox/themes/shared/switch/switch.indigo.css.js.map +1 -1
  92. package/components/checkbox/themes/shared/switch/switch.material.css.js +1 -1
  93. package/components/checkbox/themes/shared/switch/switch.material.css.js.map +1 -1
  94. package/components/chip/chip.d.ts +2 -1
  95. package/components/chip/chip.js.map +1 -1
  96. package/components/chip/themes/dark/chip.fluent.css.js +1 -1
  97. package/components/chip/themes/dark/chip.fluent.css.js.map +1 -1
  98. package/components/chip/themes/dark/chip.indigo.css.js +1 -1
  99. package/components/chip/themes/dark/chip.indigo.css.js.map +1 -1
  100. package/components/chip/themes/light/chip.fluent.css.js +1 -1
  101. package/components/chip/themes/light/chip.fluent.css.js.map +1 -1
  102. package/components/chip/themes/light/chip.indigo.css.js +1 -1
  103. package/components/chip/themes/light/chip.indigo.css.js.map +1 -1
  104. package/components/chip/themes/light/chip.shared.css.js +1 -1
  105. package/components/chip/themes/light/chip.shared.css.js.map +1 -1
  106. package/components/chip/themes/shared/chip.indigo.css.js +1 -1
  107. package/components/chip/themes/shared/chip.indigo.css.js.map +1 -1
  108. package/components/combo/combo.d.ts +3 -2
  109. package/components/combo/combo.js +7 -0
  110. package/components/combo/combo.js.map +1 -1
  111. package/components/combo/controllers/selection.js.map +1 -1
  112. package/components/combo/validators.js +2 -2
  113. package/components/combo/validators.js.map +1 -1
  114. package/components/common/controllers/async-consumer.js.map +1 -1
  115. package/components/common/controllers/focus-ring.js +1 -5
  116. package/components/common/controllers/focus-ring.js.map +1 -1
  117. package/components/common/controllers/root-click.js +46 -21
  118. package/components/common/controllers/root-click.js.map +1 -1
  119. package/components/common/definitions/defineAllComponents.js +2 -0
  120. package/components/common/definitions/defineAllComponents.js.map +1 -1
  121. package/components/common/i18n/EN/calendar.resources.js +4 -1
  122. package/components/common/i18n/EN/calendar.resources.js.map +1 -1
  123. package/components/common/i18n/EN/date-range-picker.resources.js.map +1 -1
  124. package/components/common/i18n/i18n-controller.js +6 -9
  125. package/components/common/i18n/i18n-controller.js.map +1 -1
  126. package/components/common/i18n/utils.d.ts +0 -12
  127. package/components/common/i18n/utils.js +0 -12
  128. package/components/common/i18n/utils.js.map +1 -1
  129. package/components/common/mixins/forms/associated.js +3 -23
  130. package/components/common/mixins/forms/associated.js.map +1 -1
  131. package/components/common/util.d.ts +5 -0
  132. package/components/common/util.js +5 -0
  133. package/components/common/util.js.map +1 -1
  134. package/components/common/validators.d.ts +2 -4
  135. package/components/common/validators.js +13 -19
  136. package/components/common/validators.js.map +1 -1
  137. package/components/date-picker/date-picker.d.ts +7 -3
  138. package/components/date-picker/date-picker.js +2 -2
  139. package/components/date-picker/date-picker.js.map +1 -1
  140. package/components/date-picker/themes/dark/date-picker.bootstrap.css.js +1 -1
  141. package/components/date-picker/themes/dark/date-picker.bootstrap.css.js.map +1 -1
  142. package/components/date-picker/themes/dark/date-picker.fluent.css.js +1 -1
  143. package/components/date-picker/themes/dark/date-picker.fluent.css.js.map +1 -1
  144. package/components/date-picker/themes/dark/date-picker.indigo.css.js +1 -1
  145. package/components/date-picker/themes/dark/date-picker.indigo.css.js.map +1 -1
  146. package/components/date-picker/themes/dark/date-picker.material.css.js +1 -1
  147. package/components/date-picker/themes/dark/date-picker.material.css.js.map +1 -1
  148. package/components/date-picker/themes/light/date-picker.bootstrap.css.js +1 -1
  149. package/components/date-picker/themes/light/date-picker.bootstrap.css.js.map +1 -1
  150. package/components/date-picker/themes/light/date-picker.fluent.css.js +1 -1
  151. package/components/date-picker/themes/light/date-picker.fluent.css.js.map +1 -1
  152. package/components/date-picker/themes/light/date-picker.indigo.css.js +1 -1
  153. package/components/date-picker/themes/light/date-picker.indigo.css.js.map +1 -1
  154. package/components/date-picker/themes/light/date-picker.material.css.js +1 -1
  155. package/components/date-picker/themes/light/date-picker.material.css.js.map +1 -1
  156. package/components/date-picker/validators.js +2 -3
  157. package/components/date-picker/validators.js.map +1 -1
  158. package/components/date-range-picker/date-range-picker.d.ts +7 -2
  159. package/components/date-range-picker/date-range-picker.js +13 -10
  160. package/components/date-range-picker/date-range-picker.js.map +1 -1
  161. package/components/date-range-picker/themes/dark/date-range-picker.bootstrap.css.js +1 -1
  162. package/components/date-range-picker/themes/dark/date-range-picker.bootstrap.css.js.map +1 -1
  163. package/components/date-range-picker/themes/dark/date-range-picker.fluent.css.js +1 -1
  164. package/components/date-range-picker/themes/dark/date-range-picker.fluent.css.js.map +1 -1
  165. package/components/date-range-picker/themes/dark/date-range-picker.indigo.css.js +1 -1
  166. package/components/date-range-picker/themes/dark/date-range-picker.indigo.css.js.map +1 -1
  167. package/components/date-range-picker/themes/dark/date-range-picker.material.css.js +1 -1
  168. package/components/date-range-picker/themes/dark/date-range-picker.material.css.js.map +1 -1
  169. package/components/date-range-picker/themes/light/date-range-picker.bootstrap.css.js +1 -1
  170. package/components/date-range-picker/themes/light/date-range-picker.bootstrap.css.js.map +1 -1
  171. package/components/date-range-picker/themes/light/date-range-picker.fluent.css.js +1 -1
  172. package/components/date-range-picker/themes/light/date-range-picker.fluent.css.js.map +1 -1
  173. package/components/date-range-picker/themes/light/date-range-picker.indigo.css.js +1 -1
  174. package/components/date-range-picker/themes/light/date-range-picker.indigo.css.js.map +1 -1
  175. package/components/date-range-picker/themes/light/date-range-picker.material.css.js +1 -1
  176. package/components/date-range-picker/themes/light/date-range-picker.material.css.js.map +1 -1
  177. package/components/date-range-picker/validators.js +5 -8
  178. package/components/date-range-picker/validators.js.map +1 -1
  179. package/components/date-time-input/date-time-input.d.ts +10 -3
  180. package/components/date-time-input/date-time-input.js +39 -21
  181. package/components/date-time-input/date-time-input.js.map +1 -1
  182. package/components/date-time-input/date-util.d.ts +11 -9
  183. package/components/date-time-input/date-util.js +23 -219
  184. package/components/date-time-input/date-util.js.map +1 -1
  185. package/components/dialog/dialog.d.ts +2 -0
  186. package/components/dialog/dialog.js +18 -9
  187. package/components/dialog/dialog.js.map +1 -1
  188. package/components/dialog/themes/dark/dialog.fluent.css.js +1 -1
  189. package/components/dialog/themes/dark/dialog.fluent.css.js.map +1 -1
  190. package/components/dialog/themes/light/dialog.fluent.css.js +1 -1
  191. package/components/dialog/themes/light/dialog.fluent.css.js.map +1 -1
  192. package/components/dialog/themes/shared/dialog.bootstrap.css.js +1 -1
  193. package/components/dialog/themes/shared/dialog.bootstrap.css.js.map +1 -1
  194. package/components/dialog/themes/shared/dialog.indigo.css.js +1 -1
  195. package/components/dialog/themes/shared/dialog.indigo.css.js.map +1 -1
  196. package/components/expansion-panel/themes/light/expansion-panel.bootstrap.css.js +1 -1
  197. package/components/expansion-panel/themes/light/expansion-panel.bootstrap.css.js.map +1 -1
  198. package/components/file-input/file-input.d.ts +28 -13
  199. package/components/file-input/file-input.js +73 -46
  200. package/components/file-input/file-input.js.map +1 -1
  201. package/components/input/input-base.d.ts +31 -34
  202. package/components/input/input-base.js +58 -83
  203. package/components/input/input-base.js.map +1 -1
  204. package/components/input/input.d.ts +18 -7
  205. package/components/input/input.js +34 -19
  206. package/components/input/input.js.map +1 -1
  207. package/components/input/themes/dark/input.indigo.css.js +1 -1
  208. package/components/input/themes/dark/input.indigo.css.js.map +1 -1
  209. package/components/input/themes/light/input.indigo.css.js +1 -1
  210. package/components/input/themes/light/input.indigo.css.js.map +1 -1
  211. package/components/input/themes/light/input.shared.css.js +1 -1
  212. package/components/input/themes/light/input.shared.css.js.map +1 -1
  213. package/components/input/themes/shared/input.bootstrap.css.js +1 -1
  214. package/components/input/themes/shared/input.bootstrap.css.js.map +1 -1
  215. package/components/input/themes/shared/input.common.css.js +1 -1
  216. package/components/input/themes/shared/input.common.css.js.map +1 -1
  217. package/components/input/themes/shared/input.fluent.css.js +1 -1
  218. package/components/input/themes/shared/input.fluent.css.js.map +1 -1
  219. package/components/input/themes/shared/input.indigo.css.js +1 -1
  220. package/components/input/themes/shared/input.indigo.css.js.map +1 -1
  221. package/components/input/themes/shared/input.material.css.js +1 -1
  222. package/components/input/themes/shared/input.material.css.js.map +1 -1
  223. package/components/input/validators.js +3 -3
  224. package/components/input/validators.js.map +1 -1
  225. package/components/list/themes/dark/container/list.bootstrap.css.js +1 -1
  226. package/components/list/themes/dark/container/list.bootstrap.css.js.map +1 -1
  227. package/components/list/themes/light/container/list.fluent.css.js +1 -1
  228. package/components/list/themes/light/container/list.fluent.css.js.map +1 -1
  229. package/components/list/themes/shared/item/list-item.common.css.js +1 -1
  230. package/components/list/themes/shared/item/list-item.common.css.js.map +1 -1
  231. package/components/list/themes/shared/item/list-item.indigo.css.js +1 -1
  232. package/components/list/themes/shared/item/list-item.indigo.css.js.map +1 -1
  233. package/components/mask-input/mask-input-base.d.ts +10 -4
  234. package/components/mask-input/mask-input-base.js +21 -16
  235. package/components/mask-input/mask-input-base.js.map +1 -1
  236. package/components/mask-input/mask-input.d.ts +9 -3
  237. package/components/mask-input/mask-input.js +26 -6
  238. package/components/mask-input/mask-input.js.map +1 -1
  239. package/components/mask-input/mask-parser.d.ts +30 -7
  240. package/components/mask-input/mask-parser.js +70 -42
  241. package/components/mask-input/mask-parser.js.map +1 -1
  242. package/components/mask-input/validators.js +3 -3
  243. package/components/mask-input/validators.js.map +1 -1
  244. package/components/nav-drawer/themes/dark/container/nav-drawer.fluent.css.js +1 -1
  245. package/components/nav-drawer/themes/dark/container/nav-drawer.fluent.css.js.map +1 -1
  246. package/components/nav-drawer/themes/light/container/nav-drawer.fluent.css.js +1 -1
  247. package/components/nav-drawer/themes/light/container/nav-drawer.fluent.css.js.map +1 -1
  248. package/components/nav-drawer/themes/light/container/nav-drawer.material.css.js +1 -1
  249. package/components/nav-drawer/themes/light/container/nav-drawer.material.css.js.map +1 -1
  250. package/components/navbar/themes/shared/navbar.common.css.js +1 -1
  251. package/components/navbar/themes/shared/navbar.common.css.js.map +1 -1
  252. package/components/radio/themes/light/radio.material.css.js +1 -1
  253. package/components/radio/themes/light/radio.material.css.js.map +1 -1
  254. package/components/radio/themes/shared/radio.bootstrap.css.js +1 -1
  255. package/components/radio/themes/shared/radio.bootstrap.css.js.map +1 -1
  256. package/components/radio/themes/shared/radio.common.css.js +1 -1
  257. package/components/radio/themes/shared/radio.common.css.js.map +1 -1
  258. package/components/radio/themes/shared/radio.fluent.css.js +1 -1
  259. package/components/radio/themes/shared/radio.fluent.css.js.map +1 -1
  260. package/components/radio/themes/shared/radio.indigo.css.js +1 -1
  261. package/components/radio/themes/shared/radio.indigo.css.js.map +1 -1
  262. package/components/radio/themes/shared/radio.material.css.js +1 -1
  263. package/components/radio/themes/shared/radio.material.css.js.map +1 -1
  264. package/components/radio/validators.js +2 -2
  265. package/components/radio/validators.js.map +1 -1
  266. package/components/rating/themes/dark/rating.indigo.css.js +1 -1
  267. package/components/rating/themes/dark/rating.indigo.css.js.map +1 -1
  268. package/components/rating/themes/light/rating.indigo.css.js +1 -1
  269. package/components/rating/themes/light/rating.indigo.css.js.map +1 -1
  270. package/components/ripple/ripple.d.ts +3 -3
  271. package/components/ripple/ripple.js +34 -31
  272. package/components/ripple/ripple.js.map +1 -1
  273. package/components/stepper/step.js +2 -2
  274. package/components/stepper/step.js.map +1 -1
  275. package/components/stepper/themes/step/dark/step.bootstrap.css.js +1 -1
  276. package/components/stepper/themes/step/dark/step.bootstrap.css.js.map +1 -1
  277. package/components/stepper/themes/step/dark/step.fluent.css.js +1 -1
  278. package/components/stepper/themes/step/dark/step.fluent.css.js.map +1 -1
  279. package/components/stepper/themes/step/dark/step.indigo.css.js +1 -1
  280. package/components/stepper/themes/step/dark/step.indigo.css.js.map +1 -1
  281. package/components/stepper/themes/step/dark/step.material.css.js +1 -1
  282. package/components/stepper/themes/step/dark/step.material.css.js.map +1 -1
  283. package/components/stepper/themes/step/light/step.bootstrap.css.js +1 -1
  284. package/components/stepper/themes/step/light/step.bootstrap.css.js.map +1 -1
  285. package/components/stepper/themes/step/light/step.fluent.css.js +1 -1
  286. package/components/stepper/themes/step/light/step.fluent.css.js.map +1 -1
  287. package/components/stepper/themes/step/light/step.indigo.css.js +1 -1
  288. package/components/stepper/themes/step/light/step.indigo.css.js.map +1 -1
  289. package/components/stepper/themes/step/light/step.material.css.js +1 -1
  290. package/components/stepper/themes/step/light/step.material.css.js.map +1 -1
  291. package/components/stepper/themes/step/light/step.shared.css.js +1 -1
  292. package/components/stepper/themes/step/light/step.shared.css.js.map +1 -1
  293. package/components/stepper/themes/step/shared/step.common.css.js +1 -1
  294. package/components/stepper/themes/step/shared/step.common.css.js.map +1 -1
  295. package/components/stepper/themes/step/shared/step.indigo.css.js +1 -1
  296. package/components/stepper/themes/step/shared/step.indigo.css.js.map +1 -1
  297. package/components/tabs/tab-dom.js +8 -9
  298. package/components/tabs/tab-dom.js.map +1 -1
  299. package/components/tabs/themes/dark/tab.bootstrap.css.js +1 -1
  300. package/components/tabs/themes/dark/tab.bootstrap.css.js.map +1 -1
  301. package/components/tabs/themes/dark/tab.fluent.css.js +1 -1
  302. package/components/tabs/themes/dark/tab.fluent.css.js.map +1 -1
  303. package/components/tabs/themes/dark/tab.indigo.css.js +1 -1
  304. package/components/tabs/themes/dark/tab.indigo.css.js.map +1 -1
  305. package/components/tabs/themes/dark/tab.material.css.js +1 -1
  306. package/components/tabs/themes/dark/tab.material.css.js.map +1 -1
  307. package/components/tabs/themes/dark/tab.shared.css.js +1 -1
  308. package/components/tabs/themes/dark/tab.shared.css.js.map +1 -1
  309. package/components/tabs/themes/light/tab.bootstrap.css.js +1 -1
  310. package/components/tabs/themes/light/tab.bootstrap.css.js.map +1 -1
  311. package/components/tabs/themes/light/tab.fluent.css.js +1 -1
  312. package/components/tabs/themes/light/tab.fluent.css.js.map +1 -1
  313. package/components/tabs/themes/light/tab.indigo.css.js +1 -1
  314. package/components/tabs/themes/light/tab.indigo.css.js.map +1 -1
  315. package/components/tabs/themes/light/tab.material.css.js +1 -1
  316. package/components/tabs/themes/light/tab.material.css.js.map +1 -1
  317. package/components/tabs/themes/light/tab.shared.css.js +1 -1
  318. package/components/tabs/themes/light/tab.shared.css.js.map +1 -1
  319. package/components/tabs/themes/shared/tab/tab.bootstrap.css.js +1 -1
  320. package/components/tabs/themes/shared/tab/tab.bootstrap.css.js.map +1 -1
  321. package/components/tabs/themes/shared/tab/tab.common.css.js +1 -1
  322. package/components/tabs/themes/shared/tab/tab.common.css.js.map +1 -1
  323. package/components/tabs/themes/shared/tab/tab.fluent.css.js +1 -1
  324. package/components/tabs/themes/shared/tab/tab.fluent.css.js.map +1 -1
  325. package/components/tabs/themes/shared/tab/tab.indigo.css.js +1 -1
  326. package/components/tabs/themes/shared/tab/tab.indigo.css.js.map +1 -1
  327. package/components/tabs/themes/shared/tab/tab.material.css.js +1 -1
  328. package/components/tabs/themes/shared/tab/tab.material.css.js.map +1 -1
  329. package/components/tabs/themes/shared/tabs/tabs.bootstrap.css.js +1 -1
  330. package/components/tabs/themes/shared/tabs/tabs.bootstrap.css.js.map +1 -1
  331. package/components/tabs/themes/shared/tabs/tabs.common.css.js +1 -1
  332. package/components/tabs/themes/shared/tabs/tabs.common.css.js.map +1 -1
  333. package/components/tabs/themes/shared/tabs/tabs.indigo.css.js +1 -1
  334. package/components/tabs/themes/shared/tabs/tabs.indigo.css.js.map +1 -1
  335. package/components/tabs/themes/shared/tabs/tabs.material.css.js +1 -1
  336. package/components/tabs/themes/shared/tabs/tabs.material.css.js.map +1 -1
  337. package/components/tabs/themes/tabs.base.css.js +1 -1
  338. package/components/tabs/themes/tabs.base.css.js.map +1 -1
  339. package/components/textarea/themes/dark/textarea.indigo.css.js +1 -1
  340. package/components/textarea/themes/dark/textarea.indigo.css.js.map +1 -1
  341. package/components/textarea/themes/light/textarea.indigo.css.js +1 -1
  342. package/components/textarea/themes/light/textarea.indigo.css.js.map +1 -1
  343. package/components/textarea/themes/light/textarea.shared.css.js +1 -1
  344. package/components/textarea/themes/light/textarea.shared.css.js.map +1 -1
  345. package/components/textarea/themes/shared/textarea.bootstrap.css.js +1 -1
  346. package/components/textarea/themes/shared/textarea.bootstrap.css.js.map +1 -1
  347. package/components/textarea/themes/shared/textarea.common.css.js +1 -1
  348. package/components/textarea/themes/shared/textarea.common.css.js.map +1 -1
  349. package/components/textarea/themes/shared/textarea.fluent.css.js +1 -1
  350. package/components/textarea/themes/shared/textarea.fluent.css.js.map +1 -1
  351. package/components/textarea/themes/shared/textarea.indigo.css.js +1 -1
  352. package/components/textarea/themes/shared/textarea.indigo.css.js.map +1 -1
  353. package/components/textarea/themes/shared/textarea.material.css.js +1 -1
  354. package/components/textarea/themes/shared/textarea.material.css.js.map +1 -1
  355. package/components/theme-provider/theme-provider.d.ts +65 -0
  356. package/components/theme-provider/theme-provider.js +58 -0
  357. package/components/theme-provider/theme-provider.js.map +1 -0
  358. package/components/tile-manager/tile.js +6 -3
  359. package/components/tile-manager/tile.js.map +1 -1
  360. package/components/tree/themes/dark/container.bootstrap.css.js +1 -1
  361. package/components/tree/themes/dark/container.bootstrap.css.js.map +1 -1
  362. package/components/tree/themes/light/container.bootstrap.css.js +1 -1
  363. package/components/tree/themes/light/container.bootstrap.css.js.map +1 -1
  364. package/components/tree/tree-item.js +4 -0
  365. package/components/tree/tree-item.js.map +1 -1
  366. package/components/tree/tree.d.ts +14 -0
  367. package/components/tree/tree.js +23 -0
  368. package/components/tree/tree.js.map +1 -1
  369. package/components/validation-container/validation-container.d.ts +0 -1
  370. package/components/validation-container/validation-container.js +6 -9
  371. package/components/validation-container/validation-container.js.map +1 -1
  372. package/custom-elements.json +3176 -2986
  373. package/extras/chat-markdown-renderer.d.ts +72 -4
  374. package/extras/chat-markdown-renderer.js +19 -7
  375. package/extras/chat-markdown-renderer.js.map +1 -1
  376. package/igniteui-webcomponents.html-data.json +1 -1
  377. package/index.d.ts +5 -1
  378. package/index.js +4 -1
  379. package/index.js.map +1 -1
  380. package/package.json +9 -4
  381. package/themes/dark/bootstrap.css +1 -1
  382. package/themes/dark/fluent.css +1 -1
  383. package/themes/dark/indigo.css +1 -1
  384. package/themes/dark/material.css +1 -1
  385. package/themes/light/bootstrap.css +1 -1
  386. package/themes/light/fluent.css +1 -1
  387. package/themes/light/indigo.css +1 -1
  388. package/themes/light/material.css +1 -1
  389. package/theming/context.d.ts +36 -0
  390. package/theming/context.js +3 -0
  391. package/theming/context.js.map +1 -0
  392. package/theming/theming-controller.d.ts +7 -1
  393. package/theming/theming-controller.js +48 -12
  394. package/theming/theming-controller.js.map +1 -1
  395. package/theming/utils.d.ts +10 -0
  396. package/theming/utils.js +8 -42
  397. package/theming/utils.js.map +1 -1
  398. package/web-types.json +1 -1
  399. package/components/common/localization/intl-formatters.d.ts +0 -17
  400. package/components/common/localization/intl-formatters.js +0 -46
  401. package/components/common/localization/intl-formatters.js.map +0 -1
  402. package/components/validation-container/themes/dark/validator.bootstrap.css.d.ts +0 -1
  403. package/components/validation-container/themes/dark/validator.bootstrap.css.js +0 -3
  404. package/components/validation-container/themes/dark/validator.bootstrap.css.js.map +0 -1
  405. package/components/validation-container/themes/dark/validator.fluent.css.d.ts +0 -1
  406. package/components/validation-container/themes/dark/validator.fluent.css.js +0 -3
  407. package/components/validation-container/themes/dark/validator.fluent.css.js.map +0 -1
  408. package/components/validation-container/themes/dark/validator.indigo.css.d.ts +0 -1
  409. package/components/validation-container/themes/dark/validator.indigo.css.js +0 -3
  410. package/components/validation-container/themes/dark/validator.indigo.css.js.map +0 -1
  411. package/components/validation-container/themes/dark/validator.material.css.d.ts +0 -1
  412. package/components/validation-container/themes/dark/validator.material.css.js +0 -3
  413. package/components/validation-container/themes/dark/validator.material.css.js.map +0 -1
  414. package/components/validation-container/themes/light/validator.bootstrap.css.d.ts +0 -1
  415. package/components/validation-container/themes/light/validator.bootstrap.css.js +0 -3
  416. package/components/validation-container/themes/light/validator.bootstrap.css.js.map +0 -1
  417. package/components/validation-container/themes/light/validator.fluent.css.d.ts +0 -1
  418. package/components/validation-container/themes/light/validator.fluent.css.js +0 -3
  419. package/components/validation-container/themes/light/validator.fluent.css.js.map +0 -1
  420. package/components/validation-container/themes/light/validator.indigo.css.d.ts +0 -1
  421. package/components/validation-container/themes/light/validator.indigo.css.js +0 -3
  422. package/components/validation-container/themes/light/validator.indigo.css.js.map +0 -1
  423. package/components/validation-container/themes/light/validator.material.css.d.ts +0 -1
  424. package/components/validation-container/themes/light/validator.material.css.js +0 -3
  425. package/components/validation-container/themes/light/validator.material.css.js.map +0 -1
  426. package/components/validation-container/themes/light/validator.shared.css.d.ts +0 -1
  427. package/components/validation-container/themes/light/validator.shared.css.js +0 -3
  428. package/components/validation-container/themes/light/validator.shared.css.js.map +0 -1
  429. package/components/validation-container/themes/themes.d.ts +0 -2
  430. package/components/validation-container/themes/themes.js +0 -46
  431. package/components/validation-container/themes/themes.js.map +0 -1
@@ -4,8 +4,10 @@ declare class ThemingController implements ReactiveController {
4
4
  private readonly _host;
5
5
  private readonly _themes;
6
6
  private readonly _options?;
7
+ private readonly _contextConsumer;
7
8
  private _theme;
8
9
  private _variant;
10
+ private _themeSource;
9
11
  get theme(): Theme;
10
12
  constructor(host: ReactiveControllerHost & ReactiveElement, themes: Themes, config?: ThemingControllerConfig);
11
13
  /** @internal */
@@ -14,9 +16,13 @@ declare class ThemingController implements ReactiveController {
14
16
  hostDisconnected(): void;
15
17
  /** @internal */
16
18
  handleEvent(): void;
19
+ private _applyContextTheme;
20
+ private _applyGlobalTheme;
17
21
  private _getStyles;
18
22
  protected _adoptStyles(): void;
19
- private _handleThemeChanged;
20
23
  }
24
+ /**
25
+ * Adds theming controller to the host component.
26
+ */
21
27
  export declare function addThemingController(host: ReactiveControllerHost & ReactiveElement, themes: Themes, config?: ThemingControllerConfig): ThemingController;
22
28
  export type { ThemingController };
@@ -1,5 +1,7 @@
1
+ import { ContextConsumer } from '@lit/context';
1
2
  import { adoptStyles, css, } from 'lit';
2
3
  import { getTheme } from './config.js';
4
+ import { themeContext } from './context.js';
3
5
  import { _themeChangedEmitter, CHANGED_THEME_EVENT } from './theming-event.js';
4
6
  class ThemingController {
5
7
  get theme() {
@@ -8,20 +10,62 @@ class ThemingController {
8
10
  constructor(host, themes, config) {
9
11
  this._theme = 'bootstrap';
10
12
  this._variant = 'light';
13
+ this._themeSource = 'uninitialized';
11
14
  this._host = host;
12
15
  this._themes = themes;
13
16
  this._options = config;
14
17
  this._host.addController(this);
18
+ this._contextConsumer = new ContextConsumer(this._host, {
19
+ context: themeContext,
20
+ callback: (value) => {
21
+ if (value) {
22
+ this._applyContextTheme(value);
23
+ }
24
+ },
25
+ subscribe: true,
26
+ });
15
27
  }
16
28
  hostConnected() {
17
- this._handleThemeChanged();
18
- _themeChangedEmitter.addEventListener(CHANGED_THEME_EVENT, this);
29
+ const contextValue = this._contextConsumer.value;
30
+ if (contextValue) {
31
+ this._applyContextTheme(contextValue);
32
+ }
33
+ else {
34
+ this._applyGlobalTheme();
35
+ }
19
36
  }
20
37
  hostDisconnected() {
21
- _themeChangedEmitter.removeEventListener(CHANGED_THEME_EVENT, this);
38
+ if (this._themeSource === 'global') {
39
+ _themeChangedEmitter.removeEventListener(CHANGED_THEME_EVENT, this);
40
+ }
22
41
  }
23
42
  handleEvent() {
24
- this._handleThemeChanged();
43
+ if (this._themeSource === 'global') {
44
+ this._applyGlobalTheme();
45
+ }
46
+ }
47
+ _applyContextTheme(contextValue) {
48
+ if (this._themeSource === 'global') {
49
+ _themeChangedEmitter.removeEventListener(CHANGED_THEME_EVENT, this);
50
+ }
51
+ this._themeSource = 'context';
52
+ this._theme = contextValue.theme;
53
+ this._variant = contextValue.variant;
54
+ this._adoptStyles();
55
+ this._options?.themeChange?.call(this._host, this._theme);
56
+ this._host.requestUpdate();
57
+ }
58
+ _applyGlobalTheme() {
59
+ if (this._themeSource === 'uninitialized') {
60
+ _themeChangedEmitter.addEventListener(CHANGED_THEME_EVENT, this);
61
+ }
62
+ this._themeSource = 'global';
63
+ const { theme: currentTheme, themeVariant } = getTheme();
64
+ this._theme = currentTheme;
65
+ this._variant = themeVariant;
66
+ this._adoptStyles();
67
+ this._options?.themeChange?.call(this._host, this._theme);
68
+ this._host.requestUpdate();
25
69
  }
26
70
  _getStyles() {
27
71
  const props = this._themes[this._variant];
@@ -37,18 +81,10 @@ class ThemingController {
37
81
  return styles;
38
82
  }
39
83
  _adoptStyles() {
40
- const { theme: currentTheme, themeVariant } = getTheme();
41
- this._theme = currentTheme;
42
- this._variant = themeVariant;
43
84
  const ctor = this._host.constructor;
44
85
  const { shared, theme } = this._getStyles();
45
86
  adoptStyles(this._host.shadowRoot, [...ctor.elementStyles, shared, theme]);
46
87
  }
47
- _handleThemeChanged() {
48
- this._adoptStyles();
49
- this._options?.themeChange?.call(this._host, this._theme);
50
- this._host.requestUpdate();
51
- }
52
88
  }
53
89
  export function addThemingController(host, themes, config) {
54
90
  return new ThemingController(host, themes, config);
@@ -1 +1 @@
1
- {"version":3,"file":"theming-controller.js","sourceRoot":"","sources":["../../src/theming/theming-controller.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,GAAG,GAKJ,MAAM,KAAK,CAAC;AAEb,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAQ/E,MAAM,iBAAiB;IAQrB,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,YACE,IAA8C,EAC9C,MAAc,EACd,MAAgC;QAV1B,WAAM,GAAU,WAAW,CAAC;QAC5B,aAAQ,GAAiB,OAAO,CAAC;QAWvC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC;QACvB,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAGM,aAAa;QAClB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,oBAAoB,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;IACnE,CAAC;IAGM,gBAAgB;QACrB,oBAAoB,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;IACtE,CAAC;IAGM,WAAW;QAChB,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAEO,UAAU;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,EAAE,MAAM,EAAE,GAAG,CAAA,EAAE,EAAE,KAAK,EAAE,GAAG,CAAA,EAAE,EAAE,CAAC;QAE/C,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAClD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACtB,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;YACxB,CAAC;YACD,IAAI,IAAI,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;gBACxB,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;YACvB,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAES,YAAY;QACpB,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,QAAQ,EAAE,CAAC;QACzD,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC;QAE7B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,WAAgC,CAAC;QACzD,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAE5C,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,UAAW,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IAC9E,CAAC;IAEO,mBAAmB;QACzB,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1D,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;IAC7B,CAAC;CACF;AAED,MAAM,UAAU,oBAAoB,CAClC,IAA8C,EAC9C,MAAc,EACd,MAAgC;IAEhC,OAAO,IAAI,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AACrD,CAAC","sourcesContent":["import {\n adoptStyles,\n css,\n type LitElement,\n type ReactiveController,\n type ReactiveControllerHost,\n type ReactiveElement,\n} from 'lit';\n\nimport { getTheme } from './config.js';\nimport { _themeChangedEmitter, CHANGED_THEME_EVENT } from './theming-event.js';\nimport type {\n Theme,\n Themes,\n ThemeVariant,\n ThemingControllerConfig,\n} from './types.js';\n\nclass ThemingController implements ReactiveController {\n private readonly _host: ReactiveControllerHost & ReactiveElement;\n private readonly _themes: Themes;\n private readonly _options?: ThemingControllerConfig;\n\n private _theme: Theme = 'bootstrap';\n private _variant: ThemeVariant = 'light';\n\n public get theme(): Theme {\n return this._theme;\n }\n\n constructor(\n host: ReactiveControllerHost & ReactiveElement,\n themes: Themes,\n config?: ThemingControllerConfig\n ) {\n this._host = host;\n this._themes = themes;\n this._options = config;\n this._host.addController(this);\n }\n\n /** @internal */\n public hostConnected(): void {\n this._handleThemeChanged();\n _themeChangedEmitter.addEventListener(CHANGED_THEME_EVENT, this);\n }\n\n /** @internal */\n public hostDisconnected(): void {\n _themeChangedEmitter.removeEventListener(CHANGED_THEME_EVENT, this);\n }\n\n /** @internal */\n public handleEvent(): void {\n this._handleThemeChanged();\n }\n\n private _getStyles() {\n const props = this._themes[this._variant];\n const styles = { shared: css``, theme: css`` };\n\n for (const [name, sheet] of Object.entries(props)) {\n if (name === 'shared') {\n styles.shared = sheet;\n }\n if (name === this.theme) {\n styles.theme = sheet;\n }\n }\n\n return styles;\n }\n\n protected _adoptStyles(): void {\n const { theme: currentTheme, themeVariant } = getTheme();\n this._theme = currentTheme;\n this._variant = themeVariant;\n\n const ctor = this._host.constructor as typeof LitElement;\n const { shared, theme } = this._getStyles();\n\n adoptStyles(this._host.shadowRoot!, [...ctor.elementStyles, shared, theme]);\n }\n\n private _handleThemeChanged(): void {\n this._adoptStyles();\n this._options?.themeChange?.call(this._host, this._theme);\n this._host.requestUpdate();\n }\n}\n\nexport function addThemingController(\n host: ReactiveControllerHost & ReactiveElement,\n themes: Themes,\n config?: ThemingControllerConfig\n): ThemingController {\n return new ThemingController(host, themes, config);\n}\n\nexport type { ThemingController };\n"]}
1
+ {"version":3,"file":"theming-controller.js","sourceRoot":"","sources":["../../src/theming/theming-controller.ts"],"names":[],"mappings":"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","sourcesContent":["import { ContextConsumer } from '@lit/context';\nimport {\n adoptStyles,\n css,\n type LitElement,\n type ReactiveController,\n type ReactiveControllerHost,\n type ReactiveElement,\n} from 'lit';\n\nimport { getTheme } from './config.js';\nimport { themeContext } from './context.js';\nimport { _themeChangedEmitter, CHANGED_THEME_EVENT } from './theming-event.js';\nimport type {\n Theme,\n Themes,\n ThemeVariant,\n ThemingControllerConfig,\n} from './types.js';\n\ntype ThemeProviderSource = 'uninitialized' | 'context' | 'global';\n\nclass ThemingController implements ReactiveController {\n private readonly _host: ReactiveControllerHost & ReactiveElement;\n private readonly _themes: Themes;\n private readonly _options?: ThemingControllerConfig;\n private readonly _contextConsumer: ContextConsumer<\n typeof themeContext,\n ReactiveElement\n >;\n\n private _theme: Theme = 'bootstrap';\n private _variant: ThemeVariant = 'light';\n private _themeSource: ThemeProviderSource = 'uninitialized';\n\n public get theme(): Theme {\n return this._theme;\n }\n\n constructor(\n host: ReactiveControllerHost & ReactiveElement,\n themes: Themes,\n config?: ThemingControllerConfig\n ) {\n this._host = host;\n this._themes = themes;\n this._options = config;\n this._host.addController(this);\n\n this._contextConsumer = new ContextConsumer(this._host, {\n context: themeContext,\n callback: (value) => {\n if (value) {\n this._applyContextTheme(value);\n }\n },\n subscribe: true,\n });\n }\n\n /** @internal */\n public hostConnected(): void {\n // Check if we have a context value immediately when connected usually after the parent provider\n // is already in the DOM (i.e. creation of the component after initial render)\n const contextValue = this._contextConsumer.value;\n\n if (contextValue) {\n this._applyContextTheme(contextValue);\n } else {\n this._applyGlobalTheme();\n }\n }\n\n /** @internal */\n public hostDisconnected(): void {\n if (this._themeSource === 'global') {\n _themeChangedEmitter.removeEventListener(CHANGED_THEME_EVENT, this);\n }\n }\n\n /** @internal */\n public handleEvent(): void {\n // Only handle global theme change events\n if (this._themeSource === 'global') {\n this._applyGlobalTheme();\n }\n }\n\n private _applyContextTheme(contextValue: {\n theme: Theme;\n variant: ThemeVariant;\n }): void {\n // If we were using global theme, unsubscribe from global events\n if (this._themeSource === 'global') {\n _themeChangedEmitter.removeEventListener(CHANGED_THEME_EVENT, this);\n }\n\n this._themeSource = 'context';\n this._theme = contextValue.theme;\n this._variant = contextValue.variant;\n\n this._adoptStyles();\n this._options?.themeChange?.call(this._host, this._theme);\n this._host.requestUpdate();\n }\n\n private _applyGlobalTheme(): void {\n // Subscribe to global events only on first initialization\n if (this._themeSource === 'uninitialized') {\n _themeChangedEmitter.addEventListener(CHANGED_THEME_EVENT, this);\n }\n\n this._themeSource = 'global';\n\n const { theme: currentTheme, themeVariant } = getTheme();\n this._theme = currentTheme;\n this._variant = themeVariant;\n\n this._adoptStyles();\n this._options?.themeChange?.call(this._host, this._theme);\n this._host.requestUpdate();\n }\n\n private _getStyles() {\n const props = this._themes[this._variant];\n const styles = { shared: css``, theme: css`` };\n\n for (const [name, sheet] of Object.entries(props)) {\n if (name === 'shared') {\n styles.shared = sheet;\n }\n if (name === this.theme) {\n styles.theme = sheet;\n }\n }\n\n return styles;\n }\n\n protected _adoptStyles(): void {\n const ctor = this._host.constructor as typeof LitElement;\n const { shared, theme } = this._getStyles();\n\n adoptStyles(this._host.shadowRoot!, [...ctor.elementStyles, shared, theme]);\n }\n}\n\n/**\n * Adds theming controller to the host component.\n */\nexport function addThemingController(\n host: ReactiveControllerHost & ReactiveElement,\n themes: Themes,\n config?: ThemingControllerConfig\n): ThemingController {\n return new ThemingController(host, themes, config);\n}\n\nexport type { ThemingController };\n"]}
@@ -1 +1,11 @@
1
+ /**
2
+ * Retrieves all CSS custom properties from the document root element.
3
+ * Property names are converted from kebab-case to camelCase.
4
+ *
5
+ * @returns An object mapping camelCase property names to their values.
6
+ * Returns an empty object in SSR environments.
7
+ * @example
8
+ * // CSS: --my-primary-color: #ff0000;
9
+ * // Returns: { myPrimaryColor: '#ff0000' }
10
+ */
1
11
  export declare function getAllCssVariables(): Record<string, string>;
package/theming/utils.js CHANGED
@@ -1,54 +1,20 @@
1
1
  import { isServer } from 'lit';
2
- function isStyleRule(rule) {
3
- return rule != null && 'style' in rule;
4
- }
5
2
  function cssKeyToJsKey(key) {
6
3
  return key.replace(/^--|-./g, (match) => {
7
4
  return match.startsWith('--') ? '' : match.charAt(1).toUpperCase();
8
5
  });
9
6
  }
10
- function getAllCssVariableNames() {
11
- const cssVars = new Set();
12
- const styleSheets = Array.from(document.styleSheets);
13
- for (const sheet of styleSheets) {
14
- let rules;
15
- try {
16
- rules = sheet.cssRules;
17
- }
18
- catch {
19
- continue;
20
- }
21
- if (!rules) {
22
- continue;
23
- }
24
- for (const rule of Array.from(rules)) {
25
- if (isStyleRule(rule)) {
26
- const length = rule.style.length;
27
- for (let i = 0; i < length; i++) {
28
- const style = rule.style[i];
29
- if (style.startsWith('--')) {
30
- cssVars.add(style);
31
- }
32
- }
33
- }
34
- }
35
- }
36
- return cssVars;
37
- }
38
- function getElementCssVariables(allCssVars, element, pseudo) {
39
- const cssVars = {};
40
- const styles = getComputedStyle(element, pseudo);
41
- for (const key of allCssVars) {
42
- const value = styles.getPropertyValue(key);
43
- if (value) {
44
- cssVars[cssKeyToJsKey(key)] = value.trim();
7
+ function getCssVariables() {
8
+ const rootStyles = getComputedStyle(document.documentElement);
9
+ const result = {};
10
+ for (const key of Array.from(rootStyles)) {
11
+ if (key.startsWith('--')) {
12
+ result[cssKeyToJsKey(key)] = rootStyles.getPropertyValue(key).trim();
45
13
  }
46
14
  }
47
- return cssVars;
15
+ return result;
48
16
  }
49
17
  export function getAllCssVariables() {
50
- return isServer
51
- ? {}
52
- : getElementCssVariables(getAllCssVariableNames(), document.documentElement);
18
+ return isServer ? {} : getCssVariables();
53
19
  }
54
20
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/theming/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAE/B,SAAS,WAAW,CAAC,IAAa;IAChC,OAAO,IAAI,IAAI,IAAI,IAAI,OAAO,IAAI,IAAI,CAAC;AACzC,CAAC;AAED,SAAS,aAAa,CAAC,GAAW;IAChC,OAAO,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;QACtC,OAAO,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IACrE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,sBAAsB;IAC7B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAErD,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;QAChC,IAAI,KAA8B,CAAC;QAGnC,IAAI,CAAC;YACH,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC;QACzB,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QAED,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,SAAS;QACX,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACrC,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;gBAEjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAChC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBAE5B,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBACrB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,sBAAsB,CAC7B,UAAuB,EACvB,OAAoB,EACpB,MAAe;IAEf,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAEjD,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAE3C,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,kBAAkB;IAEhC,OAAO,QAAQ;QACb,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,sBAAsB,CACpB,sBAAsB,EAAE,EACxB,QAAQ,CAAC,eAAe,CACzB,CAAC;AACR,CAAC","sourcesContent":["import { isServer } from 'lit';\n\nfunction isStyleRule(rule: CSSRule): rule is CSSStyleRule {\n return rule != null && 'style' in rule;\n}\n\nfunction cssKeyToJsKey(key: string): string {\n return key.replace(/^--|-./g, (match) => {\n return match.startsWith('--') ? '' : match.charAt(1).toUpperCase();\n });\n}\n\nfunction getAllCssVariableNames(): Set<string> {\n const cssVars = new Set<string>();\n const styleSheets = Array.from(document.styleSheets);\n\n for (const sheet of styleSheets) {\n let rules: CSSRuleList | undefined;\n\n // Potential CORS or access errors\n try {\n rules = sheet.cssRules;\n } catch {\n continue;\n }\n\n if (!rules) {\n continue;\n }\n\n for (const rule of Array.from(rules)) {\n if (isStyleRule(rule)) {\n const length = rule.style.length;\n\n for (let i = 0; i < length; i++) {\n const style = rule.style[i];\n\n if (style.startsWith('--')) {\n cssVars.add(style);\n }\n }\n }\n }\n }\n\n return cssVars;\n}\n\nfunction getElementCssVariables(\n allCssVars: Set<string>,\n element: HTMLElement,\n pseudo?: string\n): Record<string, string> {\n const cssVars: Record<string, string> = {};\n const styles = getComputedStyle(element, pseudo);\n\n for (const key of allCssVars) {\n const value = styles.getPropertyValue(key);\n\n if (value) {\n cssVars[cssKeyToJsKey(key)] = value.trim();\n }\n }\n\n return cssVars;\n}\n\nexport function getAllCssVariables(): Record<string, string> {\n /* c8 ignore next 2 */\n return isServer\n ? {}\n : getElementCssVariables(\n getAllCssVariableNames(),\n document.documentElement\n );\n}\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/theming/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAQ/B,SAAS,aAAa,CAAC,GAAW;IAEhC,OAAO,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;QACtC,OAAO,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IACrE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,eAAe;IACtB,MAAM,UAAU,GAAG,gBAAgB,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IAC9D,MAAM,MAAM,GAA2B,EAAE,CAAC;IAE1C,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACzC,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACvE,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAYD,MAAM,UAAU,kBAAkB;IAChC,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;AAC3C,CAAC","sourcesContent":["import { isServer } from 'lit';\n\n/**\n * Converts a CSS custom property name to a camelCase JavaScript key.\n * Removes leading '--' and converts kebab-case to camelCase.\n * @param key - The CSS variable name (e.g., '--my-color')\n * @returns The JavaScript key (e.g., 'myColor')\n */\nfunction cssKeyToJsKey(key: string): string {\n // Regex: matches '--' at start OR '-x' pattern to convert to camelCase\n return key.replace(/^--|-./g, (match) => {\n return match.startsWith('--') ? '' : match.charAt(1).toUpperCase();\n });\n}\n\nfunction getCssVariables(): Record<string, string> {\n const rootStyles = getComputedStyle(document.documentElement);\n const result: Record<string, string> = {};\n\n for (const key of Array.from(rootStyles)) {\n if (key.startsWith('--')) {\n result[cssKeyToJsKey(key)] = rootStyles.getPropertyValue(key).trim();\n }\n }\n\n return result;\n}\n\n/**\n * Retrieves all CSS custom properties from the document root element.\n * Property names are converted from kebab-case to camelCase.\n *\n * @returns An object mapping camelCase property names to their values.\n * Returns an empty object in SSR environments.\n * @example\n * // CSS: --my-primary-color: #ff0000;\n * // Returns: { myPrimaryColor: '#ff0000' }\n */\nexport function getAllCssVariables(): Record<string, string> {\n return isServer ? {} : getCssVariables();\n}\n"]}