igniteui-webcomponents 6.1.2 → 6.3.0-alpha.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 (348) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/LICENSE +1 -1
  3. package/README.md +13 -1
  4. package/components/card/themes/content.js +7 -0
  5. package/components/card/themes/content.js.map +1 -1
  6. package/components/card/themes/shared/content/card.content.indigo.css.d.ts +1 -0
  7. package/components/card/themes/shared/content/card.content.indigo.css.js +3 -0
  8. package/components/card/themes/shared/content/card.content.indigo.css.js.map +1 -0
  9. package/components/carousel/carousel-indicator.d.ts +1 -1
  10. package/components/carousel/carousel-indicator.js.map +1 -1
  11. package/components/carousel/carousel-slide.d.ts +3 -3
  12. package/components/carousel/carousel-slide.js +7 -13
  13. package/components/carousel/carousel-slide.js.map +1 -1
  14. package/components/carousel/carousel.d.ts +39 -38
  15. package/components/carousel/carousel.js +160 -153
  16. package/components/carousel/carousel.js.map +1 -1
  17. package/components/chat/chat-input.d.ts +70 -0
  18. package/components/chat/chat-input.js +266 -0
  19. package/components/chat/chat-input.js.map +1 -0
  20. package/components/chat/chat-message-list.d.ts +111 -0
  21. package/components/chat/chat-message-list.js +178 -0
  22. package/components/chat/chat-message-list.js.map +1 -0
  23. package/components/chat/chat-message.d.ts +57 -0
  24. package/components/chat/chat-message.js +59 -0
  25. package/components/chat/chat-message.js.map +1 -0
  26. package/components/chat/chat-state.d.ts +155 -0
  27. package/components/chat/chat-state.js +167 -0
  28. package/components/chat/chat-state.js.map +1 -0
  29. package/components/chat/chat.d.ts +164 -0
  30. package/components/chat/chat.js +168 -0
  31. package/components/chat/chat.js.map +1 -0
  32. package/components/chat/markdown-util.d.ts +2 -0
  33. package/components/chat/markdown-util.js +22 -0
  34. package/components/chat/markdown-util.js.map +1 -0
  35. package/components/chat/message-attachments.d.ts +45 -0
  36. package/components/chat/message-attachments.js +127 -0
  37. package/components/chat/message-attachments.js.map +1 -0
  38. package/components/chat/themes/chat.base.css.d.ts +1 -0
  39. package/components/chat/themes/chat.base.css.js +3 -0
  40. package/components/chat/themes/chat.base.css.js.map +1 -0
  41. package/components/chat/themes/dark/chat.bootstrap.css.d.ts +1 -0
  42. package/components/chat/themes/dark/chat.bootstrap.css.js +3 -0
  43. package/components/chat/themes/dark/chat.bootstrap.css.js.map +1 -0
  44. package/components/chat/themes/dark/chat.fluent.css.d.ts +1 -0
  45. package/components/chat/themes/dark/chat.fluent.css.js +3 -0
  46. package/components/chat/themes/dark/chat.fluent.css.js.map +1 -0
  47. package/components/chat/themes/dark/chat.indigo.css.d.ts +1 -0
  48. package/components/chat/themes/dark/chat.indigo.css.js +3 -0
  49. package/components/chat/themes/dark/chat.indigo.css.js.map +1 -0
  50. package/components/chat/themes/dark/chat.material.css.d.ts +1 -0
  51. package/components/chat/themes/dark/chat.material.css.js +3 -0
  52. package/components/chat/themes/dark/chat.material.css.js.map +1 -0
  53. package/components/chat/themes/input.base.css.d.ts +1 -0
  54. package/components/chat/themes/input.base.css.js +3 -0
  55. package/components/chat/themes/input.base.css.js.map +1 -0
  56. package/components/chat/themes/input.d.ts +2 -0
  57. package/components/chat/themes/input.js +35 -0
  58. package/components/chat/themes/input.js.map +1 -0
  59. package/components/chat/themes/light/chat.bootstrap.css.d.ts +1 -0
  60. package/components/chat/themes/light/chat.bootstrap.css.js +3 -0
  61. package/components/chat/themes/light/chat.bootstrap.css.js.map +1 -0
  62. package/components/chat/themes/light/chat.fluent.css.d.ts +1 -0
  63. package/components/chat/themes/light/chat.fluent.css.js +3 -0
  64. package/components/chat/themes/light/chat.fluent.css.js.map +1 -0
  65. package/components/chat/themes/light/chat.indigo.css.d.ts +1 -0
  66. package/components/chat/themes/light/chat.indigo.css.js +3 -0
  67. package/components/chat/themes/light/chat.indigo.css.js.map +1 -0
  68. package/components/chat/themes/light/chat.material.css.d.ts +1 -0
  69. package/components/chat/themes/light/chat.material.css.js +3 -0
  70. package/components/chat/themes/light/chat.material.css.js.map +1 -0
  71. package/components/chat/themes/light/chat.shared.css.d.ts +1 -0
  72. package/components/chat/themes/light/chat.shared.css.js +3 -0
  73. package/components/chat/themes/light/chat.shared.css.js.map +1 -0
  74. package/components/chat/themes/message-attachments.base.css.d.ts +1 -0
  75. package/components/chat/themes/message-attachments.base.css.js +3 -0
  76. package/components/chat/themes/message-attachments.base.css.js.map +1 -0
  77. package/components/chat/themes/message-list.base.css.d.ts +1 -0
  78. package/components/chat/themes/message-list.base.css.js +3 -0
  79. package/components/chat/themes/message-list.base.css.js.map +1 -0
  80. package/components/chat/themes/message.base.css.d.ts +1 -0
  81. package/components/chat/themes/message.base.css.js +3 -0
  82. package/components/chat/themes/message.base.css.js.map +1 -0
  83. package/components/chat/themes/shared/chat-message.common.css.d.ts +1 -0
  84. package/components/chat/themes/shared/chat-message.common.css.js +3 -0
  85. package/components/chat/themes/shared/chat-message.common.css.js.map +1 -0
  86. package/components/chat/themes/shared/chat.common.css.d.ts +1 -0
  87. package/components/chat/themes/shared/chat.common.css.js +3 -0
  88. package/components/chat/themes/shared/chat.common.css.js.map +1 -0
  89. package/components/chat/themes/shared/input/input.bootstrap.css.d.ts +1 -0
  90. package/components/chat/themes/shared/input/input.bootstrap.css.js +3 -0
  91. package/components/chat/themes/shared/input/input.bootstrap.css.js.map +1 -0
  92. package/components/chat/themes/shared/input/input.common.css.d.ts +1 -0
  93. package/components/chat/themes/shared/input/input.common.css.js +3 -0
  94. package/components/chat/themes/shared/input/input.common.css.js.map +1 -0
  95. package/components/chat/themes/shared/input/input.fluent.css.d.ts +1 -0
  96. package/components/chat/themes/shared/input/input.fluent.css.js +3 -0
  97. package/components/chat/themes/shared/input/input.fluent.css.js.map +1 -0
  98. package/components/chat/themes/shared/input/input.indigo.css.d.ts +1 -0
  99. package/components/chat/themes/shared/input/input.indigo.css.js +3 -0
  100. package/components/chat/themes/shared/input/input.indigo.css.js.map +1 -0
  101. package/components/chat/themes/shared/input/input.material.css.d.ts +1 -0
  102. package/components/chat/themes/shared/input/input.material.css.js +3 -0
  103. package/components/chat/themes/shared/input/input.material.css.js.map +1 -0
  104. package/components/chat/themes/shared/message-attachments.common.css.d.ts +1 -0
  105. package/components/chat/themes/shared/message-attachments.common.css.js +3 -0
  106. package/components/chat/themes/shared/message-attachments.common.css.js.map +1 -0
  107. package/components/chat/themes/shared/message-list.common.css.d.ts +1 -0
  108. package/components/chat/themes/shared/message-list.common.css.js +3 -0
  109. package/components/chat/themes/shared/message-list.common.css.js.map +1 -0
  110. package/components/chat/themes/themes.d.ts +2 -0
  111. package/components/chat/themes/themes.js +46 -0
  112. package/components/chat/themes/themes.js.map +1 -0
  113. package/components/chat/types.d.ts +190 -0
  114. package/components/chat/types.js +8 -0
  115. package/components/chat/types.js.map +1 -0
  116. package/components/checkbox/checkbox-base.d.ts +3 -5
  117. package/components/checkbox/checkbox-base.js +15 -21
  118. package/components/checkbox/checkbox-base.js.map +1 -1
  119. package/components/checkbox/checkbox.d.ts +3 -4
  120. package/components/checkbox/checkbox.js +18 -17
  121. package/components/checkbox/checkbox.js.map +1 -1
  122. package/components/checkbox/switch.d.ts +0 -1
  123. package/components/checkbox/switch.js +7 -10
  124. package/components/checkbox/switch.js.map +1 -1
  125. package/components/checkbox/themes/dark/checkbox/checkbox.bootstrap.css.js +1 -1
  126. package/components/checkbox/themes/dark/checkbox/checkbox.bootstrap.css.js.map +1 -1
  127. package/components/checkbox/themes/dark/checkbox/checkbox.fluent.css.js +1 -1
  128. package/components/checkbox/themes/dark/checkbox/checkbox.fluent.css.js.map +1 -1
  129. package/components/checkbox/themes/dark/switch/switch.bootstrap.css.js +1 -1
  130. package/components/checkbox/themes/dark/switch/switch.bootstrap.css.js.map +1 -1
  131. package/components/checkbox/themes/dark/switch/switch.fluent.css.js +1 -1
  132. package/components/checkbox/themes/dark/switch/switch.fluent.css.js.map +1 -1
  133. package/components/checkbox/themes/dark/switch/switch.indigo.css.js +1 -1
  134. package/components/checkbox/themes/dark/switch/switch.indigo.css.js.map +1 -1
  135. package/components/checkbox/themes/dark/switch/switch.material.css.js +1 -1
  136. package/components/checkbox/themes/dark/switch/switch.material.css.js.map +1 -1
  137. package/components/checkbox/themes/light/switch/switch.bootstrap.css.js +1 -1
  138. package/components/checkbox/themes/light/switch/switch.bootstrap.css.js.map +1 -1
  139. package/components/checkbox/themes/light/switch/switch.fluent.css.js +1 -1
  140. package/components/checkbox/themes/light/switch/switch.fluent.css.js.map +1 -1
  141. package/components/checkbox/themes/light/switch/switch.indigo.css.js +1 -1
  142. package/components/checkbox/themes/light/switch/switch.indigo.css.js.map +1 -1
  143. package/components/checkbox/themes/light/switch/switch.material.css.js +1 -1
  144. package/components/checkbox/themes/light/switch/switch.material.css.js.map +1 -1
  145. package/components/checkbox/themes/shared/checkbox/checkbox.bootstrap.css.js +1 -1
  146. package/components/checkbox/themes/shared/checkbox/checkbox.bootstrap.css.js.map +1 -1
  147. package/components/checkbox/themes/shared/checkbox/checkbox.common.css.js +1 -1
  148. package/components/checkbox/themes/shared/checkbox/checkbox.common.css.js.map +1 -1
  149. package/components/checkbox/themes/shared/checkbox/checkbox.fluent.css.js +1 -1
  150. package/components/checkbox/themes/shared/checkbox/checkbox.fluent.css.js.map +1 -1
  151. package/components/checkbox/themes/shared/checkbox/checkbox.indigo.css.js +1 -1
  152. package/components/checkbox/themes/shared/checkbox/checkbox.indigo.css.js.map +1 -1
  153. package/components/checkbox/themes/shared/checkbox/checkbox.material.css.js +1 -1
  154. package/components/checkbox/themes/shared/checkbox/checkbox.material.css.js.map +1 -1
  155. package/components/chip/chip.d.ts +11 -11
  156. package/components/chip/chip.js +61 -65
  157. package/components/chip/chip.js.map +1 -1
  158. package/components/combo/combo.d.ts +3 -3
  159. package/components/combo/combo.js +12 -6
  160. package/components/combo/combo.js.map +1 -1
  161. package/components/combo/themes/shared/combo.common.css.js +1 -1
  162. package/components/combo/themes/shared/combo.common.css.js.map +1 -1
  163. package/components/combo/themes/shared/combo.indigo.css.js +1 -1
  164. package/components/combo/themes/shared/combo.indigo.css.js.map +1 -1
  165. package/components/combo/themes/shared/combo.material.css.js +1 -1
  166. package/components/combo/themes/shared/combo.material.css.js.map +1 -1
  167. package/components/common/context.d.ts +5 -1
  168. package/components/common/context.js +2 -1
  169. package/components/common/context.js.map +1 -1
  170. package/components/common/controllers/internals.d.ts +66 -2
  171. package/components/common/controllers/internals.js +21 -0
  172. package/components/common/controllers/internals.js.map +1 -1
  173. package/components/common/controllers/slot.d.ts +87 -0
  174. package/components/common/controllers/slot.js +75 -0
  175. package/components/common/controllers/slot.js.map +1 -0
  176. package/components/common/definitions/defineAllComponents.js +2 -0
  177. package/components/common/definitions/defineAllComponents.js.map +1 -1
  178. package/components/common/mixins/forms/associated.d.ts +1 -1
  179. package/components/common/mixins/forms/associated.js +91 -36
  180. package/components/common/mixins/forms/associated.js.map +1 -1
  181. package/components/common/mixins/forms/form-transformers.d.ts +21 -0
  182. package/components/common/mixins/forms/form-transformers.js +64 -0
  183. package/components/common/mixins/forms/form-transformers.js.map +1 -0
  184. package/components/common/mixins/forms/form-value.d.ts +7 -36
  185. package/components/common/mixins/forms/form-value.js +2 -64
  186. package/components/common/mixins/forms/form-value.js.map +1 -1
  187. package/components/common/mixins/forms/types.d.ts +19 -10
  188. package/components/common/mixins/forms/types.js +2 -1
  189. package/components/common/mixins/forms/types.js.map +1 -1
  190. package/components/common/util.d.ts +1 -0
  191. package/components/common/util.js +3 -0
  192. package/components/common/util.js.map +1 -1
  193. package/components/date-picker/date-picker.d.ts +1 -3
  194. package/components/date-picker/date-picker.js +11 -13
  195. package/components/date-picker/date-picker.js.map +1 -1
  196. package/components/date-picker/themes/dark/date-picker.indigo.css.js +1 -1
  197. package/components/date-picker/themes/dark/date-picker.indigo.css.js.map +1 -1
  198. package/components/date-picker/themes/shared/date-picker.bootstrap.css.js +1 -1
  199. package/components/date-picker/themes/shared/date-picker.bootstrap.css.js.map +1 -1
  200. package/components/date-picker/themes/shared/date-picker.common.css.js +1 -1
  201. package/components/date-picker/themes/shared/date-picker.common.css.js.map +1 -1
  202. package/components/date-picker/themes/shared/date-picker.fluent.css.js +1 -1
  203. package/components/date-picker/themes/shared/date-picker.fluent.css.js.map +1 -1
  204. package/components/date-picker/themes/shared/date-picker.indigo.css.js +1 -1
  205. package/components/date-picker/themes/shared/date-picker.indigo.css.js.map +1 -1
  206. package/components/date-picker/themes/shared/date-picker.material.css.js +1 -1
  207. package/components/date-picker/themes/shared/date-picker.material.css.js.map +1 -1
  208. package/components/date-range-picker/date-range-picker.d.ts +1 -3
  209. package/components/date-range-picker/date-range-picker.js +19 -26
  210. package/components/date-range-picker/date-range-picker.js.map +1 -1
  211. package/components/date-range-picker/themes/dark/date-range-picker.indigo.css.js +1 -1
  212. package/components/date-range-picker/themes/dark/date-range-picker.indigo.css.js.map +1 -1
  213. package/components/date-range-picker/themes/shared/date-range-picker.bootstrap.css.js +1 -1
  214. package/components/date-range-picker/themes/shared/date-range-picker.bootstrap.css.js.map +1 -1
  215. package/components/date-range-picker/themes/shared/date-range-picker.common.css.js +1 -1
  216. package/components/date-range-picker/themes/shared/date-range-picker.common.css.js.map +1 -1
  217. package/components/date-range-picker/themes/shared/date-range-picker.fluent.css.js +1 -1
  218. package/components/date-range-picker/themes/shared/date-range-picker.fluent.css.js.map +1 -1
  219. package/components/date-range-picker/themes/shared/date-range-picker.indigo.css.js +1 -1
  220. package/components/date-range-picker/themes/shared/date-range-picker.indigo.css.js.map +1 -1
  221. package/components/date-range-picker/themes/shared/date-range-picker.material.css.js +1 -1
  222. package/components/date-range-picker/themes/shared/date-range-picker.material.css.js.map +1 -1
  223. package/components/date-time-input/date-time-input.d.ts +1 -2
  224. package/components/date-time-input/date-time-input.js +7 -7
  225. package/components/date-time-input/date-time-input.js.map +1 -1
  226. package/components/dialog/dialog.d.ts +23 -25
  227. package/components/dialog/dialog.js +108 -115
  228. package/components/dialog/dialog.js.map +1 -1
  229. package/components/dialog/themes/dark/dialog.bootstrap.css.js +1 -1
  230. package/components/dialog/themes/dark/dialog.bootstrap.css.js.map +1 -1
  231. package/components/expansion-panel/expansion-panel.d.ts +12 -14
  232. package/components/expansion-panel/expansion-panel.js +43 -56
  233. package/components/expansion-panel/expansion-panel.js.map +1 -1
  234. package/components/file-input/file-input.d.ts +1 -3
  235. package/components/file-input/file-input.js +6 -11
  236. package/components/file-input/file-input.js.map +1 -1
  237. package/components/file-input/themes/shared/file-input.bootstrap.css.js +1 -1
  238. package/components/file-input/themes/shared/file-input.bootstrap.css.js.map +1 -1
  239. package/components/file-input/themes/shared/file-input.material.css.js +1 -1
  240. package/components/file-input/themes/shared/file-input.material.css.js.map +1 -1
  241. package/components/input/input.d.ts +1 -4
  242. package/components/input/input.js +7 -12
  243. package/components/input/input.js.map +1 -1
  244. package/components/input/themes/shared/input.bootstrap.css.js +1 -1
  245. package/components/input/themes/shared/input.bootstrap.css.js.map +1 -1
  246. package/components/input/themes/shared/input.common.css.js +1 -1
  247. package/components/input/themes/shared/input.common.css.js.map +1 -1
  248. package/components/input/themes/shared/input.fluent.css.js +1 -1
  249. package/components/input/themes/shared/input.fluent.css.js.map +1 -1
  250. package/components/input/themes/shared/input.indigo.css.js +1 -1
  251. package/components/input/themes/shared/input.indigo.css.js.map +1 -1
  252. package/components/input/themes/shared/input.material.css.js +1 -1
  253. package/components/input/themes/shared/input.material.css.js.map +1 -1
  254. package/components/mask-input/mask-input-base.js +1 -0
  255. package/components/mask-input/mask-input-base.js.map +1 -1
  256. package/components/mask-input/mask-input.d.ts +2 -3
  257. package/components/mask-input/mask-input.js +5 -8
  258. package/components/mask-input/mask-input.js.map +1 -1
  259. package/components/nav-drawer/nav-drawer-item.d.ts +3 -4
  260. package/components/nav-drawer/nav-drawer-item.js +15 -18
  261. package/components/nav-drawer/nav-drawer-item.js.map +1 -1
  262. package/components/nav-drawer/nav-drawer.d.ts +1 -2
  263. package/components/nav-drawer/nav-drawer.js +9 -11
  264. package/components/nav-drawer/nav-drawer.js.map +1 -1
  265. package/components/nav-drawer/themes/container.base.css.js +1 -1
  266. package/components/nav-drawer/themes/container.base.css.js.map +1 -1
  267. package/components/nav-drawer/themes/shared/container/nav-drawer.common.css.js +1 -1
  268. package/components/nav-drawer/themes/shared/container/nav-drawer.common.css.js.map +1 -1
  269. package/components/popover/popover.d.ts +17 -16
  270. package/components/popover/popover.js +81 -91
  271. package/components/popover/popover.js.map +1 -1
  272. package/components/progress/base.d.ts +8 -8
  273. package/components/progress/base.js +19 -23
  274. package/components/progress/base.js.map +1 -1
  275. package/components/progress/circular-gradient.js.map +1 -1
  276. package/components/progress/circular-progress.d.ts +3 -4
  277. package/components/progress/circular-progress.js +15 -18
  278. package/components/progress/circular-progress.js.map +1 -1
  279. package/components/progress/linear-progress.d.ts +1 -0
  280. package/components/progress/linear-progress.js +5 -1
  281. package/components/progress/linear-progress.js.map +1 -1
  282. package/components/radio/radio.d.ts +3 -5
  283. package/components/radio/radio.js +33 -31
  284. package/components/radio/radio.js.map +1 -1
  285. package/components/radio/themes/dark/radio.fluent.css.js +1 -1
  286. package/components/radio/themes/dark/radio.fluent.css.js.map +1 -1
  287. package/components/radio/themes/shared/radio.bootstrap.css.js +1 -1
  288. package/components/radio/themes/shared/radio.bootstrap.css.js.map +1 -1
  289. package/components/radio/themes/shared/radio.common.css.js +1 -1
  290. package/components/radio/themes/shared/radio.common.css.js.map +1 -1
  291. package/components/radio/themes/shared/radio.fluent.css.js +1 -1
  292. package/components/radio/themes/shared/radio.fluent.css.js.map +1 -1
  293. package/components/radio/themes/shared/radio.indigo.css.js +1 -1
  294. package/components/radio/themes/shared/radio.indigo.css.js.map +1 -1
  295. package/components/radio/themes/shared/radio.material.css.js +1 -1
  296. package/components/radio/themes/shared/radio.material.css.js.map +1 -1
  297. package/components/radio-group/radio-group.d.ts +4 -4
  298. package/components/radio-group/radio-group.js +24 -21
  299. package/components/radio-group/radio-group.js.map +1 -1
  300. package/components/rating/rating.d.ts +1 -2
  301. package/components/rating/rating.js +4 -3
  302. package/components/rating/rating.js.map +1 -1
  303. package/components/select/select.d.ts +35 -38
  304. package/components/select/select.js +138 -146
  305. package/components/select/select.js.map +1 -1
  306. package/components/select/themes/shared/select.bootstrap.css.js +1 -1
  307. package/components/select/themes/shared/select.bootstrap.css.js.map +1 -1
  308. package/components/select/themes/shared/select.common.css.js +1 -1
  309. package/components/select/themes/shared/select.common.css.js.map +1 -1
  310. package/components/select/themes/shared/select.fluent.css.js +1 -1
  311. package/components/select/themes/shared/select.fluent.css.js.map +1 -1
  312. package/components/select/themes/shared/select.indigo.css.js +1 -1
  313. package/components/select/themes/shared/select.indigo.css.js.map +1 -1
  314. package/components/select/themes/shared/select.material.css.js +1 -1
  315. package/components/select/themes/shared/select.material.css.js.map +1 -1
  316. package/components/slider/slider-label.js.map +1 -1
  317. package/components/slider/slider.d.ts +1 -2
  318. package/components/slider/slider.js +5 -2
  319. package/components/slider/slider.js.map +1 -1
  320. package/components/textarea/textarea.d.ts +13 -20
  321. package/components/textarea/textarea.js +66 -90
  322. package/components/textarea/textarea.js.map +1 -1
  323. package/components/textarea/themes/shared/textarea.bootstrap.css.js +1 -1
  324. package/components/textarea/themes/shared/textarea.bootstrap.css.js.map +1 -1
  325. package/components/textarea/themes/shared/textarea.common.css.js +1 -1
  326. package/components/textarea/themes/shared/textarea.common.css.js.map +1 -1
  327. package/components/textarea/themes/shared/textarea.fluent.css.js +1 -1
  328. package/components/textarea/themes/shared/textarea.fluent.css.js.map +1 -1
  329. package/components/textarea/themes/shared/textarea.indigo.css.js +1 -1
  330. package/components/textarea/themes/shared/textarea.indigo.css.js.map +1 -1
  331. package/components/textarea/themes/shared/textarea.material.css.js +1 -1
  332. package/components/textarea/themes/shared/textarea.material.css.js.map +1 -1
  333. package/components/tile-manager/position.js +2 -1
  334. package/components/tile-manager/position.js.map +1 -1
  335. package/components/tile-manager/tile.d.ts +8 -12
  336. package/components/tile-manager/tile.js +16 -37
  337. package/components/tile-manager/tile.js.map +1 -1
  338. package/components/validation-container/validation-container.d.ts +2 -1
  339. package/components/validation-container/validation-container.js +19 -14
  340. package/components/validation-container/validation-container.js.map +1 -1
  341. package/custom-elements.json +38469 -33868
  342. package/igniteui-webcomponents.css-data.json +1 -1
  343. package/igniteui-webcomponents.html-data.json +1 -1
  344. package/index.d.ts +3 -0
  345. package/index.js +1 -0
  346. package/index.js.map +1 -1
  347. package/package.json +1 -1
  348. package/web-types.json +2 -2
@@ -6,9 +6,12 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  };
7
7
  import { html, LitElement, nothing } from 'lit';
8
8
  import { property, state } from 'lit/decorators.js';
9
+ import { cache } from 'lit/directives/cache.js';
9
10
  import { ifDefined } from 'lit/directives/if-defined.js';
10
11
  import { addThemingController } from '../../theming/theming-controller.js';
12
+ import { createAbortHandle } from '../common/abort-handler.js';
11
13
  import { registerComponent } from '../common/definitions/register.js';
14
+ import { InternalInvalidEvent, InternalResetEvent, } from '../common/mixins/forms/types.js';
12
15
  import { partMap } from '../common/part-map.js';
13
16
  import { isEmpty, toKebabCase } from '../common/util.js';
14
17
  import IgcIconComponent from '../icon/icon.js';
@@ -17,22 +20,22 @@ import { all } from './themes/themes.js';
17
20
  import { styles } from './themes/validator.base.css.js';
18
21
  const VALIDATION_SLOTS_SELECTOR = 'slot:not([name="helper-text"])';
19
22
  const ALL_SLOTS_SELECTOR = 'slot';
23
+ const QUERY_CONFIG = { flatten: true };
20
24
  function getValidationSlots(element) {
21
25
  return element.renderRoot.querySelectorAll(VALIDATION_SLOTS_SELECTOR);
22
26
  }
23
27
  function hasProjection(element) {
24
28
  const allSlots = element.renderRoot.querySelectorAll(ALL_SLOTS_SELECTOR);
25
- return Array.from(allSlots).every((slot) => isEmpty(slot.assignedElements({ flatten: true })));
29
+ return Array.from(allSlots).every((slot) => isEmpty(slot.assignedElements(QUERY_CONFIG)));
26
30
  }
27
31
  function hasProjectedValidation(element, slotName) {
28
32
  const slots = Array.from(getValidationSlots(element));
29
- const config = { flatten: true };
30
33
  if (slotName) {
31
34
  return slots
32
35
  .filter((slot) => slot.name === slotName)
33
- .some((slot) => !isEmpty(slot.assignedElements(config)));
36
+ .some((slot) => !isEmpty(slot.assignedElements(QUERY_CONFIG)));
34
37
  }
35
- return slots.some((slot) => !isEmpty(slot.assignedElements(config)));
38
+ return slots.some((slot) => !isEmpty(slot.assignedElements(QUERY_CONFIG)));
36
39
  }
37
40
  class IgcValidationContainerComponent extends LitElement {
38
41
  static register() {
@@ -53,7 +56,7 @@ class IgcValidationContainerComponent extends LitElement {
53
56
  slot=${ifDefined(config.slot)}
54
57
  ?invalid=${host.invalid}
55
58
  .target=${host}
56
- exportparts="helper-text validation-message validation-icon"
59
+ exportparts="helper-text, validation-message, validation-icon"
57
60
  >
58
61
  ${helperText}${validationSlots}
59
62
  </igc-validator>
@@ -63,15 +66,18 @@ class IgcValidationContainerComponent extends LitElement {
63
66
  if (this._target === value) {
64
67
  return;
65
68
  }
66
- this._target?.removeEventListener('invalid', this);
69
+ this._abortHandle.abort();
70
+ const { signal } = this._abortHandle;
67
71
  this._target = value;
68
- this._target.addEventListener('invalid', this);
72
+ this._target.addEventListener(InternalInvalidEvent, this, { signal });
73
+ this._target.addEventListener(InternalResetEvent, this, { signal });
69
74
  }
70
75
  get target() {
71
76
  return this._target;
72
77
  }
73
78
  constructor() {
74
79
  super();
80
+ this._abortHandle = createAbortHandle();
75
81
  this._hasSlottedContent = false;
76
82
  this.invalid = false;
77
83
  addThemingController(this, all);
@@ -83,10 +89,11 @@ class IgcValidationContainerComponent extends LitElement {
83
89
  }
84
90
  handleEvent(event) {
85
91
  switch (event.type) {
86
- case 'invalid':
87
- if (!this.invalid) {
88
- this.invalid = true;
89
- }
92
+ case InternalInvalidEvent:
93
+ this.invalid = true;
94
+ break;
95
+ case InternalResetEvent:
96
+ this.invalid = false;
90
97
  break;
91
98
  case 'slotchange': {
92
99
  const newHasSlottedContent = hasProjectedValidation(this);
@@ -138,9 +145,7 @@ class IgcValidationContainerComponent extends LitElement {
138
145
  : html `<slot name="helper-text"></slot>`;
139
146
  }
140
147
  render() {
141
- const slots = this.invalid
142
- ? this._renderValidationSlots(this.target.validity)
143
- : nothing;
148
+ const slots = cache(this.invalid ? this._renderValidationSlots(this.target.validity) : nothing);
144
149
  return html `
145
150
  <div part=${partMap({ 'helper-text': true, empty: hasProjection(this) })}>
146
151
  ${slots}${this._renderHelper()}
@@ -1 +1 @@
1
- {"version":3,"file":"validation-container.js","sourceRoot":"","sources":["../../../src/components/validation-container/validation-container.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement, nothing, type TemplateResult } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { addThemingController } from '../../theming/theming-controller.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport type { IgcFormControl } from '../common/mixins/forms/types.js';\nimport { partMap } from '../common/part-map.js';\nimport { isEmpty, toKebabCase } from '../common/util.js';\nimport IgcIconComponent from '../icon/icon.js';\nimport { styles as shared } from './themes/shared/validator.common.css.js';\nimport { all } from './themes/themes.js';\nimport { styles } from './themes/validator.base.css.js';\n\n/** Configuration for the validation container. */\ninterface ValidationContainerConfig {\n /** The id attribute for the validation container. */\n id?: string;\n /** Project the validation container to the given slot inside the host shadow DOM. */\n slot?: string;\n /** Additional part(s) that should be bound to the validation container. */\n part?: string;\n /** Whether the validation container should expose a helper-text slot. */\n hasHelperText?: boolean;\n}\n\nconst VALIDATION_SLOTS_SELECTOR = 'slot:not([name=\"helper-text\"])';\nconst ALL_SLOTS_SELECTOR = 'slot';\n\nfunction getValidationSlots(\n element: IgcValidationContainerComponent\n): NodeListOf<HTMLSlotElement> {\n return element.renderRoot.querySelectorAll<HTMLSlotElement>(\n VALIDATION_SLOTS_SELECTOR\n );\n}\n\nfunction hasProjection(element: IgcValidationContainerComponent): boolean {\n const allSlots =\n element.renderRoot.querySelectorAll<HTMLSlotElement>(ALL_SLOTS_SELECTOR);\n return Array.from(allSlots).every((slot) =>\n isEmpty(slot.assignedElements({ flatten: true }))\n );\n}\n\nfunction hasProjectedValidation(\n element: IgcValidationContainerComponent,\n slotName?: string\n): boolean {\n const slots = Array.from(getValidationSlots(element));\n const config: AssignedNodesOptions = { flatten: true };\n\n if (slotName) {\n return slots\n .filter((slot) => slot.name === slotName)\n .some((slot) => !isEmpty(slot.assignedElements(config)));\n }\n\n return slots.some((slot) => !isEmpty(slot.assignedElements(config)));\n}\n\n/* blazorSuppress */\n/**\n * @element igc-validator\n *\n * @csspart helper-text - The base wrapper\n * @csspart validation-message - The validation error message container\n * @csspart validation-icon - The validation error icon\n */\nexport default class IgcValidationContainerComponent extends LitElement {\n public static readonly tagName = 'igc-validator';\n public static override styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(IgcValidationContainerComponent, IgcIconComponent);\n }\n\n public static create(\n host: IgcFormControl,\n config: ValidationContainerConfig = {\n id: 'helper-text',\n hasHelperText: true,\n }\n ): TemplateResult {\n const helperText = config.hasHelperText\n ? html`<slot name=\"helper-text\" slot=\"helper-text\"></slot>`\n : nothing;\n\n const validationSlots =\n IgcValidationContainerComponent.prototype._renderValidationSlots(\n host.validity,\n true\n );\n\n return html`\n <igc-validator\n id=${ifDefined(config.id)}\n part=${ifDefined(config.part)}\n slot=${ifDefined(config.slot)}\n ?invalid=${host.invalid}\n .target=${host}\n exportparts=\"helper-text validation-message validation-icon\"\n >\n ${helperText}${validationSlots}\n </igc-validator>\n `;\n }\n\n private _target!: IgcFormControl;\n\n @state()\n private _hasSlottedContent = false;\n\n @property({ type: Boolean })\n public invalid = false;\n\n @property({ attribute: false })\n public set target(value: IgcFormControl) {\n if (this._target === value) {\n return;\n }\n\n this._target?.removeEventListener('invalid', this);\n this._target = value;\n this._target.addEventListener('invalid', this);\n }\n\n public get target(): IgcFormControl {\n return this._target;\n }\n\n constructor() {\n super();\n addThemingController(this, all);\n }\n\n protected override createRenderRoot(): HTMLElement | DocumentFragment {\n const root = super.createRenderRoot();\n root.addEventListener('slotchange', this);\n return root;\n }\n\n /** @internal */\n public handleEvent(event: Event): void {\n switch (event.type) {\n case 'invalid':\n if (!this.invalid) {\n this.invalid = true;\n }\n break;\n case 'slotchange': {\n const newHasSlottedContent = hasProjectedValidation(this);\n if (this._hasSlottedContent !== newHasSlottedContent) {\n this._hasSlottedContent = newHasSlottedContent;\n }\n break;\n }\n }\n\n this.requestUpdate();\n }\n\n protected _renderValidationMessage(slotName: string): TemplateResult {\n const hasProjectedIcon = hasProjectedValidation(this, slotName);\n const parts = { 'validation-message': true, empty: !hasProjectedIcon };\n const icon = hasProjectedIcon\n ? html`\n <igc-icon\n aria-hidden=\"true\"\n name=\"error\"\n part=\"validation-icon\"\n ></igc-icon>\n `\n : nothing;\n\n return html`\n <div part=${partMap(parts)}>\n ${icon}\n <slot name=${slotName}></slot>\n </div>\n `;\n }\n\n protected *_renderValidationSlots(\n validity: ValidityState,\n projected = false\n ): Generator<TemplateResult> {\n if (!validity.valid) {\n yield projected\n ? html`<slot name=\"invalid\" slot=\"invalid\"></slot>`\n : this._renderValidationMessage('invalid');\n }\n\n for (const key in validity) {\n if (key !== 'valid' && validity[key as keyof ValidityState]) {\n const name = toKebabCase(key);\n yield projected\n ? html`<slot name=${name} slot=${name}></slot>`\n : this._renderValidationMessage(name);\n }\n }\n }\n\n protected _renderHelper(): TemplateResult | typeof nothing {\n return this.invalid && this._hasSlottedContent\n ? nothing\n : html`<slot name=\"helper-text\"></slot>`;\n }\n\n protected override render(): TemplateResult {\n const slots = this.invalid\n ? this._renderValidationSlots(this.target.validity)\n : nothing;\n\n return html`\n <div part=${partMap({ 'helper-text': true, empty: hasProjection(this) })}>\n ${slots}${this._renderHelper()}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-validator': IgcValidationContainerComponent;\n }\n}\n"]}
1
+ {"version":3,"file":"validation-container.js","sourceRoot":"","sources":["../../../src/components/validation-container/validation-container.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement, nothing, type TemplateResult } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { cache } from 'lit/directives/cache.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { addThemingController } from '../../theming/theming-controller.js';\nimport { createAbortHandle } from '../common/abort-handler.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport {\n type IgcFormControl,\n InternalInvalidEvent,\n InternalResetEvent,\n} from '../common/mixins/forms/types.js';\nimport { partMap } from '../common/part-map.js';\nimport { isEmpty, toKebabCase } from '../common/util.js';\nimport IgcIconComponent from '../icon/icon.js';\nimport { styles as shared } from './themes/shared/validator.common.css.js';\nimport { all } from './themes/themes.js';\nimport { styles } from './themes/validator.base.css.js';\n\n/** Configuration for the validation container. */\ninterface ValidationContainerConfig {\n /** The id attribute for the validation container. */\n id?: string;\n /** Project the validation container to the given slot inside the host shadow DOM. */\n slot?: string;\n /** Additional part(s) that should be bound to the validation container. */\n part?: string;\n /** Whether the validation container should expose a helper-text slot. */\n hasHelperText?: boolean;\n}\n\nconst VALIDATION_SLOTS_SELECTOR = 'slot:not([name=\"helper-text\"])';\nconst ALL_SLOTS_SELECTOR = 'slot';\nconst QUERY_CONFIG: AssignedNodesOptions = { flatten: true };\n\nfunction getValidationSlots(\n element: IgcValidationContainerComponent\n): NodeListOf<HTMLSlotElement> {\n return element.renderRoot.querySelectorAll<HTMLSlotElement>(\n VALIDATION_SLOTS_SELECTOR\n );\n}\n\nfunction hasProjection(element: IgcValidationContainerComponent): boolean {\n const allSlots =\n element.renderRoot.querySelectorAll<HTMLSlotElement>(ALL_SLOTS_SELECTOR);\n return Array.from(allSlots).every((slot) =>\n isEmpty(slot.assignedElements(QUERY_CONFIG))\n );\n}\n\nfunction hasProjectedValidation(\n element: IgcValidationContainerComponent,\n slotName?: string\n): boolean {\n const slots = Array.from(getValidationSlots(element));\n\n if (slotName) {\n return slots\n .filter((slot) => slot.name === slotName)\n .some((slot) => !isEmpty(slot.assignedElements(QUERY_CONFIG)));\n }\n\n return slots.some((slot) => !isEmpty(slot.assignedElements(QUERY_CONFIG)));\n}\n\n/* blazorSuppress */\n/**\n * @element igc-validator\n *\n * @csspart helper-text - The base wrapper\n * @csspart validation-message - The validation error message container\n * @csspart validation-icon - The validation error icon\n */\nexport default class IgcValidationContainerComponent extends LitElement {\n public static readonly tagName = 'igc-validator';\n public static override styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(IgcValidationContainerComponent, IgcIconComponent);\n }\n\n public static create(\n host: IgcFormControl,\n config: ValidationContainerConfig = {\n id: 'helper-text',\n hasHelperText: true,\n }\n ): TemplateResult {\n const helperText = config.hasHelperText\n ? html`<slot name=\"helper-text\" slot=\"helper-text\"></slot>`\n : nothing;\n\n const validationSlots =\n IgcValidationContainerComponent.prototype._renderValidationSlots(\n host.validity,\n true\n );\n\n return html`\n <igc-validator\n id=${ifDefined(config.id)}\n part=${ifDefined(config.part)}\n slot=${ifDefined(config.slot)}\n ?invalid=${host.invalid}\n .target=${host}\n exportparts=\"helper-text, validation-message, validation-icon\"\n >\n ${helperText}${validationSlots}\n </igc-validator>\n `;\n }\n\n private readonly _abortHandle = createAbortHandle();\n\n private _target!: IgcFormControl;\n\n @state()\n private _hasSlottedContent = false;\n\n @property({ type: Boolean })\n public invalid = false;\n\n @property({ attribute: false })\n public set target(value: IgcFormControl) {\n if (this._target === value) {\n return;\n }\n\n this._abortHandle.abort();\n const { signal } = this._abortHandle;\n\n this._target = value;\n this._target.addEventListener(InternalInvalidEvent, this, { signal });\n this._target.addEventListener(InternalResetEvent, this, { signal });\n }\n\n public get target(): IgcFormControl {\n return this._target;\n }\n\n constructor() {\n super();\n addThemingController(this, all);\n }\n\n protected override createRenderRoot(): HTMLElement | DocumentFragment {\n const root = super.createRenderRoot();\n root.addEventListener('slotchange', this);\n return root;\n }\n\n /** @internal */\n public handleEvent(event: Event): void {\n switch (event.type) {\n case InternalInvalidEvent:\n this.invalid = true;\n break;\n case InternalResetEvent:\n this.invalid = false;\n break;\n case 'slotchange': {\n const newHasSlottedContent = hasProjectedValidation(this);\n if (this._hasSlottedContent !== newHasSlottedContent) {\n this._hasSlottedContent = newHasSlottedContent;\n }\n break;\n }\n }\n\n this.requestUpdate();\n }\n\n protected _renderValidationMessage(slotName: string): TemplateResult {\n const hasProjectedIcon = hasProjectedValidation(this, slotName);\n const parts = { 'validation-message': true, empty: !hasProjectedIcon };\n const icon = hasProjectedIcon\n ? html`\n <igc-icon\n aria-hidden=\"true\"\n name=\"error\"\n part=\"validation-icon\"\n ></igc-icon>\n `\n : nothing;\n\n return html`\n <div part=${partMap(parts)}>\n ${icon}\n <slot name=${slotName}></slot>\n </div>\n `;\n }\n\n protected *_renderValidationSlots(\n validity: ValidityState,\n projected = false\n ): Generator<TemplateResult> {\n if (!validity.valid) {\n yield projected\n ? html`<slot name=\"invalid\" slot=\"invalid\"></slot>`\n : this._renderValidationMessage('invalid');\n }\n\n for (const key in validity) {\n if (key !== 'valid' && validity[key as keyof ValidityState]) {\n const name = toKebabCase(key);\n yield projected\n ? html`<slot name=${name} slot=${name}></slot>`\n : this._renderValidationMessage(name);\n }\n }\n }\n\n protected _renderHelper(): TemplateResult | typeof nothing {\n return this.invalid && this._hasSlottedContent\n ? nothing\n : html`<slot name=\"helper-text\"></slot>`;\n }\n\n protected override render(): TemplateResult {\n const slots = cache(\n this.invalid ? this._renderValidationSlots(this.target.validity) : nothing\n );\n\n return html`\n <div part=${partMap({ 'helper-text': true, empty: hasProjection(this) })}>\n ${slots}${this._renderHelper()}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-validator': IgcValidationContainerComponent;\n }\n}\n"]}