igniteui-webcomponents 6.3.4 → 6.4.0-alpha.1

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 (313) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/README.md +3 -0
  3. package/animations/player.d.ts +37 -11
  4. package/animations/player.js +32 -41
  5. package/animations/player.js.map +1 -1
  6. package/components/accordion/accordion.d.ts +18 -12
  7. package/components/accordion/accordion.js +82 -65
  8. package/components/accordion/accordion.js.map +1 -1
  9. package/components/badge/badge.d.ts +8 -0
  10. package/components/badge/badge.js +16 -1
  11. package/components/badge/badge.js.map +1 -1
  12. package/components/badge/themes/badge.base.css.js +1 -1
  13. package/components/badge/themes/badge.base.css.js.map +1 -1
  14. package/components/badge/themes/dark/badge.bootstrap.css.js +1 -1
  15. package/components/badge/themes/dark/badge.bootstrap.css.js.map +1 -1
  16. package/components/badge/themes/dark/badge.fluent.css.js +1 -1
  17. package/components/badge/themes/dark/badge.fluent.css.js.map +1 -1
  18. package/components/badge/themes/dark/badge.indigo.css.js +1 -1
  19. package/components/badge/themes/dark/badge.indigo.css.js.map +1 -1
  20. package/components/badge/themes/dark/badge.material.css.js +1 -1
  21. package/components/badge/themes/dark/badge.material.css.js.map +1 -1
  22. package/components/badge/themes/light/badge.bootstrap.css.js +1 -1
  23. package/components/badge/themes/light/badge.bootstrap.css.js.map +1 -1
  24. package/components/badge/themes/light/badge.fluent.css.js +1 -1
  25. package/components/badge/themes/light/badge.fluent.css.js.map +1 -1
  26. package/components/badge/themes/light/badge.indigo.css.js +1 -1
  27. package/components/badge/themes/light/badge.indigo.css.js.map +1 -1
  28. package/components/badge/themes/light/badge.material.css.js +1 -1
  29. package/components/badge/themes/light/badge.material.css.js.map +1 -1
  30. package/components/badge/themes/light/badge.shared.css.js +1 -1
  31. package/components/badge/themes/light/badge.shared.css.js.map +1 -1
  32. package/components/badge/themes/shared/badge.bootstrap.css.js +1 -1
  33. package/components/badge/themes/shared/badge.bootstrap.css.js.map +1 -1
  34. package/components/badge/themes/shared/badge.common.css.js +1 -1
  35. package/components/badge/themes/shared/badge.common.css.js.map +1 -1
  36. package/components/badge/themes/shared/badge.fluent.css.d.ts +1 -0
  37. package/components/badge/themes/shared/badge.fluent.css.js +3 -0
  38. package/components/badge/themes/shared/badge.fluent.css.js.map +1 -0
  39. package/components/badge/themes/shared/badge.indigo.css.js +1 -1
  40. package/components/badge/themes/shared/badge.indigo.css.js.map +1 -1
  41. package/components/badge/themes/shared/badge.material.css.d.ts +1 -0
  42. package/components/badge/themes/shared/badge.material.css.js +3 -0
  43. package/components/badge/themes/shared/badge.material.css.js.map +1 -0
  44. package/components/badge/themes/themes.js +6 -4
  45. package/components/badge/themes/themes.js.map +1 -1
  46. package/components/banner/banner.d.ts +2 -3
  47. package/components/banner/banner.js +13 -19
  48. package/components/banner/banner.js.map +1 -1
  49. package/components/calendar/base.d.ts +9 -1
  50. package/components/calendar/base.js +21 -2
  51. package/components/calendar/base.js.map +1 -1
  52. package/components/calendar/calendar.d.ts +0 -4
  53. package/components/calendar/calendar.js +0 -5
  54. package/components/calendar/calendar.js.map +1 -1
  55. package/components/calendar/days-view/days-view.d.ts +0 -2
  56. package/components/calendar/days-view/days-view.js +0 -5
  57. package/components/calendar/days-view/days-view.js.map +1 -1
  58. package/components/carousel/carousel.d.ts +19 -2
  59. package/components/carousel/carousel.js +41 -6
  60. package/components/carousel/carousel.js.map +1 -1
  61. package/components/carousel/themes/dark/carousel.indigo.css.js +1 -1
  62. package/components/carousel/themes/dark/carousel.indigo.css.js.map +1 -1
  63. package/components/carousel/themes/light/carousel.indigo.css.js +1 -1
  64. package/components/carousel/themes/light/carousel.indigo.css.js.map +1 -1
  65. package/components/carousel/themes/shared/carousel.common.css.js +1 -1
  66. package/components/carousel/themes/shared/carousel.common.css.js.map +1 -1
  67. package/components/carousel/themes/shared/carousel.indigo.css.js +1 -1
  68. package/components/carousel/themes/shared/carousel.indigo.css.js.map +1 -1
  69. package/components/carousel/themes/shared/indicator-container/indicator-container.common.css.js +1 -1
  70. package/components/carousel/themes/shared/indicator-container/indicator-container.common.css.js.map +1 -1
  71. package/components/chat/chat-input.d.ts +5 -0
  72. package/components/chat/chat-input.js +35 -6
  73. package/components/chat/chat-input.js.map +1 -1
  74. package/components/chat/chat-message.js +2 -2
  75. package/components/chat/chat-message.js.map +1 -1
  76. package/components/chat/chat-state.d.ts +3 -4
  77. package/components/chat/chat-state.js +4 -23
  78. package/components/chat/chat-state.js.map +1 -1
  79. package/components/chat/chat.d.ts +2 -1
  80. package/components/chat/chat.js +26 -22
  81. package/components/chat/chat.js.map +1 -1
  82. package/components/chat/themes/chat.base.css.js +1 -1
  83. package/components/chat/themes/chat.base.css.js.map +1 -1
  84. package/components/chat/types.d.ts +2 -0
  85. package/components/chat/types.js.map +1 -1
  86. package/components/chat/utils.d.ts +2 -2
  87. package/components/chat/utils.js +6 -3
  88. package/components/chat/utils.js.map +1 -1
  89. package/components/checkbox/themes/checkbox.base.css.js +1 -1
  90. package/components/checkbox/themes/checkbox.base.css.js.map +1 -1
  91. package/components/checkbox/themes/dark/checkbox/checkbox.fluent.css.js +1 -1
  92. package/components/checkbox/themes/dark/checkbox/checkbox.fluent.css.js.map +1 -1
  93. package/components/checkbox/themes/light/checkbox/checkbox.fluent.css.js +1 -1
  94. package/components/checkbox/themes/light/checkbox/checkbox.fluent.css.js.map +1 -1
  95. package/components/checkbox/themes/light/checkbox/checkbox.shared.css.js +1 -1
  96. package/components/checkbox/themes/light/checkbox/checkbox.shared.css.js.map +1 -1
  97. package/components/checkbox/themes/shared/checkbox/checkbox.bootstrap.css.js +1 -1
  98. package/components/checkbox/themes/shared/checkbox/checkbox.bootstrap.css.js.map +1 -1
  99. package/components/checkbox/themes/shared/checkbox/checkbox.common.css.js +1 -1
  100. package/components/checkbox/themes/shared/checkbox/checkbox.common.css.js.map +1 -1
  101. package/components/checkbox/themes/shared/checkbox/checkbox.fluent.css.js +1 -1
  102. package/components/checkbox/themes/shared/checkbox/checkbox.fluent.css.js.map +1 -1
  103. package/components/checkbox/themes/shared/checkbox/checkbox.indigo.css.js +1 -1
  104. package/components/checkbox/themes/shared/checkbox/checkbox.indigo.css.js.map +1 -1
  105. package/components/checkbox/themes/shared/checkbox/checkbox.material.css.js +1 -1
  106. package/components/checkbox/themes/shared/checkbox/checkbox.material.css.js.map +1 -1
  107. package/components/chip/chip.d.ts +13 -0
  108. package/components/chip/chip.js +29 -2
  109. package/components/chip/chip.js.map +1 -1
  110. package/components/chip/themes/chip.base.css.js +1 -1
  111. package/components/chip/themes/chip.base.css.js.map +1 -1
  112. package/components/chip/themes/shared/chip.bootstrap.css.js +1 -1
  113. package/components/chip/themes/shared/chip.bootstrap.css.js.map +1 -1
  114. package/components/chip/themes/shared/chip.common.css.js +1 -1
  115. package/components/chip/themes/shared/chip.common.css.js.map +1 -1
  116. package/components/chip/themes/shared/chip.fluent.css.js +1 -1
  117. package/components/chip/themes/shared/chip.fluent.css.js.map +1 -1
  118. package/components/chip/themes/shared/chip.indigo.css.js +1 -1
  119. package/components/chip/themes/shared/chip.indigo.css.js.map +1 -1
  120. package/components/combo/combo.d.ts +33 -10
  121. package/components/combo/combo.js +72 -53
  122. package/components/combo/combo.js.map +1 -1
  123. package/components/combo/controllers/navigation.d.ts +39 -43
  124. package/components/combo/controllers/navigation.js +153 -175
  125. package/components/combo/controllers/navigation.js.map +1 -1
  126. package/components/combo/operations/group.d.ts +0 -1
  127. package/components/combo/operations/group.js +19 -23
  128. package/components/combo/operations/group.js.map +1 -1
  129. package/components/combo/themes/combo-header.base.css.js +1 -1
  130. package/components/combo/themes/combo-header.base.css.js.map +1 -1
  131. package/components/combo/themes/combo-item.base.css.js +1 -1
  132. package/components/combo/themes/combo-item.base.css.js.map +1 -1
  133. package/components/combo/themes/combo.base.css.js +1 -1
  134. package/components/combo/themes/combo.base.css.js.map +1 -1
  135. package/components/combo/themes/shared/combo.bootstrap.css.js +1 -1
  136. package/components/combo/themes/shared/combo.bootstrap.css.js.map +1 -1
  137. package/components/combo/themes/shared/combo.fluent.css.js +1 -1
  138. package/components/combo/themes/shared/combo.fluent.css.js.map +1 -1
  139. package/components/combo/themes/shared/combo.indigo.css.js +1 -1
  140. package/components/combo/themes/shared/combo.indigo.css.js.map +1 -1
  141. package/components/combo/themes/shared/combo.material.css.js +1 -1
  142. package/components/combo/themes/shared/combo.material.css.js.map +1 -1
  143. package/components/combo/validators.js +2 -2
  144. package/components/combo/validators.js.map +1 -1
  145. package/components/common/i18n/EN/calendar.resources.js +4 -0
  146. package/components/common/i18n/EN/calendar.resources.js.map +1 -0
  147. package/components/common/i18n/EN/chat.resources.js.map +1 -0
  148. package/components/common/i18n/EN/date-range-picker.resources.js +8 -0
  149. package/components/common/i18n/EN/date-range-picker.resources.js.map +1 -0
  150. package/components/common/i18n/i18n-controller.d.ts +74 -0
  151. package/components/common/i18n/i18n-controller.js +89 -0
  152. package/components/common/i18n/i18n-controller.js.map +1 -0
  153. package/components/common/i18n/utils.d.ts +19 -0
  154. package/components/common/i18n/utils.js +100 -0
  155. package/components/common/i18n/utils.js.map +1 -0
  156. package/components/common/mixins/forms/associated.js +23 -3
  157. package/components/common/mixins/forms/associated.js.map +1 -1
  158. package/components/common/util.d.ts +0 -1
  159. package/components/common/util.js +0 -15
  160. package/components/common/util.js.map +1 -1
  161. package/components/common/validators.d.ts +4 -2
  162. package/components/common/validators.js +19 -13
  163. package/components/common/validators.js.map +1 -1
  164. package/components/date-picker/date-picker.d.ts +13 -8
  165. package/components/date-picker/date-picker.js +20 -6
  166. package/components/date-picker/date-picker.js.map +1 -1
  167. package/components/date-picker/themes/dark/date-picker.bootstrap.css.js +1 -1
  168. package/components/date-picker/themes/dark/date-picker.bootstrap.css.js.map +1 -1
  169. package/components/date-picker/themes/date-picker.base.css.js +1 -1
  170. package/components/date-picker/themes/date-picker.base.css.js.map +1 -1
  171. package/components/date-picker/themes/light/date-picker.bootstrap.css.js +1 -1
  172. package/components/date-picker/themes/light/date-picker.bootstrap.css.js.map +1 -1
  173. package/components/date-picker/themes/shared/date-picker.bootstrap.css.js +1 -1
  174. package/components/date-picker/themes/shared/date-picker.bootstrap.css.js.map +1 -1
  175. package/components/date-picker/themes/shared/date-picker.common.css.js +1 -1
  176. package/components/date-picker/themes/shared/date-picker.common.css.js.map +1 -1
  177. package/components/date-picker/themes/shared/date-picker.fluent.css.js +1 -1
  178. package/components/date-picker/themes/shared/date-picker.fluent.css.js.map +1 -1
  179. package/components/date-picker/themes/shared/date-picker.indigo.css.js +1 -1
  180. package/components/date-picker/themes/shared/date-picker.indigo.css.js.map +1 -1
  181. package/components/date-picker/themes/shared/date-picker.material.css.js +1 -1
  182. package/components/date-picker/themes/shared/date-picker.material.css.js.map +1 -1
  183. package/components/date-picker/validators.js +3 -2
  184. package/components/date-picker/validators.js.map +1 -1
  185. package/components/date-range-picker/date-range-picker.base.css.js +1 -1
  186. package/components/date-range-picker/date-range-picker.base.css.js.map +1 -1
  187. package/components/date-range-picker/date-range-picker.d.ts +10 -2
  188. package/components/date-range-picker/date-range-picker.js +19 -5
  189. package/components/date-range-picker/date-range-picker.js.map +1 -1
  190. package/components/date-range-picker/predefined-ranges-area.d.ts +4 -2
  191. package/components/date-range-picker/predefined-ranges-area.js +12 -3
  192. package/components/date-range-picker/predefined-ranges-area.js.map +1 -1
  193. package/components/date-range-picker/themes/dark/date-range-picker.bootstrap.css.js +1 -1
  194. package/components/date-range-picker/themes/dark/date-range-picker.bootstrap.css.js.map +1 -1
  195. package/components/date-range-picker/themes/dark/date-range-picker.fluent.css.js +1 -1
  196. package/components/date-range-picker/themes/dark/date-range-picker.fluent.css.js.map +1 -1
  197. package/components/date-range-picker/themes/dark/date-range-picker.indigo.css.js +1 -1
  198. package/components/date-range-picker/themes/dark/date-range-picker.indigo.css.js.map +1 -1
  199. package/components/date-range-picker/themes/dark/date-range-picker.material.css.js +1 -1
  200. package/components/date-range-picker/themes/dark/date-range-picker.material.css.js.map +1 -1
  201. package/components/date-range-picker/themes/light/date-range-picker.bootstrap.css.js +1 -1
  202. package/components/date-range-picker/themes/light/date-range-picker.bootstrap.css.js.map +1 -1
  203. package/components/date-range-picker/themes/light/date-range-picker.fluent.css.js +1 -1
  204. package/components/date-range-picker/themes/light/date-range-picker.fluent.css.js.map +1 -1
  205. package/components/date-range-picker/themes/light/date-range-picker.indigo.css.js +1 -1
  206. package/components/date-range-picker/themes/light/date-range-picker.indigo.css.js.map +1 -1
  207. package/components/date-range-picker/themes/light/date-range-picker.material.css.js +1 -1
  208. package/components/date-range-picker/themes/light/date-range-picker.material.css.js.map +1 -1
  209. package/components/date-range-picker/themes/light/date-range-picker.shared.css.js +1 -1
  210. package/components/date-range-picker/themes/light/date-range-picker.shared.css.js.map +1 -1
  211. package/components/date-range-picker/themes/shared/date-range-picker.bootstrap.css.js +1 -1
  212. package/components/date-range-picker/themes/shared/date-range-picker.bootstrap.css.js.map +1 -1
  213. package/components/date-range-picker/themes/shared/date-range-picker.common.css.js +1 -1
  214. package/components/date-range-picker/themes/shared/date-range-picker.common.css.js.map +1 -1
  215. package/components/date-range-picker/themes/shared/date-range-picker.fluent.css.js +1 -1
  216. package/components/date-range-picker/themes/shared/date-range-picker.fluent.css.js.map +1 -1
  217. package/components/date-range-picker/themes/shared/date-range-picker.indigo.css.js +1 -1
  218. package/components/date-range-picker/themes/shared/date-range-picker.indigo.css.js.map +1 -1
  219. package/components/date-range-picker/themes/shared/date-range-picker.material.css.js +1 -1
  220. package/components/date-range-picker/themes/shared/date-range-picker.material.css.js.map +1 -1
  221. package/components/date-range-picker/validators.js +8 -5
  222. package/components/date-range-picker/validators.js.map +1 -1
  223. package/components/date-time-input/date-time-input.d.ts +5 -3
  224. package/components/date-time-input/date-time-input.js +11 -2
  225. package/components/date-time-input/date-time-input.js.map +1 -1
  226. package/components/dialog/themes/shared/dialog.common.css.js +1 -1
  227. package/components/dialog/themes/shared/dialog.common.css.js.map +1 -1
  228. package/components/expansion-panel/expansion-panel.d.ts +6 -5
  229. package/components/expansion-panel/expansion-panel.js +33 -42
  230. package/components/expansion-panel/expansion-panel.js.map +1 -1
  231. package/components/input/themes/dark/input.bootstrap.css.js +1 -1
  232. package/components/input/themes/dark/input.bootstrap.css.js.map +1 -1
  233. package/components/input/themes/input.base.css.js +1 -1
  234. package/components/input/themes/input.base.css.js.map +1 -1
  235. package/components/input/themes/light/input.bootstrap.css.js +1 -1
  236. package/components/input/themes/light/input.bootstrap.css.js.map +1 -1
  237. package/components/input/themes/shared/input.bootstrap.css.js +1 -1
  238. package/components/input/themes/shared/input.bootstrap.css.js.map +1 -1
  239. package/components/input/themes/shared/input.common.css.js +1 -1
  240. package/components/input/themes/shared/input.common.css.js.map +1 -1
  241. package/components/input/themes/shared/input.fluent.css.js +1 -1
  242. package/components/input/themes/shared/input.fluent.css.js.map +1 -1
  243. package/components/input/themes/shared/input.indigo.css.js +1 -1
  244. package/components/input/themes/shared/input.indigo.css.js.map +1 -1
  245. package/components/input/themes/shared/input.material.css.js +1 -1
  246. package/components/input/themes/shared/input.material.css.js.map +1 -1
  247. package/components/input/validators.js +3 -3
  248. package/components/input/validators.js.map +1 -1
  249. package/components/mask-input/validators.js +2 -2
  250. package/components/mask-input/validators.js.map +1 -1
  251. package/components/radio/validators.js +2 -2
  252. package/components/radio/validators.js.map +1 -1
  253. package/components/select/themes/select.base.css.js +1 -1
  254. package/components/select/themes/select.base.css.js.map +1 -1
  255. package/components/select/themes/shared/select.fluent.css.js +1 -1
  256. package/components/select/themes/shared/select.fluent.css.js.map +1 -1
  257. package/components/select/themes/shared/select.indigo.css.js +1 -1
  258. package/components/select/themes/shared/select.indigo.css.js.map +1 -1
  259. package/components/select/themes/shared/select.material.css.js +1 -1
  260. package/components/select/themes/shared/select.material.css.js.map +1 -1
  261. package/components/stepper/step.d.ts +1 -1
  262. package/components/stepper/step.js +4 -6
  263. package/components/stepper/step.js.map +1 -1
  264. package/components/textarea/textarea.d.ts +1 -1
  265. package/components/textarea/textarea.js +1 -1
  266. package/components/textarea/textarea.js.map +1 -1
  267. package/components/textarea/themes/dark/textarea.bootstrap.css.js +1 -1
  268. package/components/textarea/themes/dark/textarea.bootstrap.css.js.map +1 -1
  269. package/components/textarea/themes/light/textarea.bootstrap.css.js +1 -1
  270. package/components/textarea/themes/light/textarea.bootstrap.css.js.map +1 -1
  271. package/components/textarea/themes/shared/textarea.bootstrap.css.js +1 -1
  272. package/components/textarea/themes/shared/textarea.bootstrap.css.js.map +1 -1
  273. package/components/textarea/themes/shared/textarea.common.css.js +1 -1
  274. package/components/textarea/themes/shared/textarea.common.css.js.map +1 -1
  275. package/components/textarea/themes/shared/textarea.fluent.css.js +1 -1
  276. package/components/textarea/themes/shared/textarea.fluent.css.js.map +1 -1
  277. package/components/textarea/themes/shared/textarea.indigo.css.js +1 -1
  278. package/components/textarea/themes/shared/textarea.indigo.css.js.map +1 -1
  279. package/components/textarea/themes/shared/textarea.material.css.js +1 -1
  280. package/components/textarea/themes/shared/textarea.material.css.js.map +1 -1
  281. package/components/textarea/themes/textarea.base.css.js +1 -1
  282. package/components/textarea/themes/textarea.base.css.js.map +1 -1
  283. package/components/tile-manager/tile.js.map +1 -1
  284. package/components/tooltip/controller.d.ts +1 -0
  285. package/components/tooltip/controller.js +9 -0
  286. package/components/tooltip/controller.js.map +1 -1
  287. package/components/tooltip/themes/tooltip.base.css.js +1 -1
  288. package/components/tooltip/themes/tooltip.base.css.js.map +1 -1
  289. package/components/tooltip/tooltip.d.ts +2 -0
  290. package/components/tooltip/tooltip.js +10 -2
  291. package/components/tooltip/tooltip.js.map +1 -1
  292. package/components/tree/tree-item.js +1 -5
  293. package/components/tree/tree-item.js.map +1 -1
  294. package/custom-elements.json +2000 -985
  295. package/igniteui-webcomponents.css-data.json +1 -1
  296. package/igniteui-webcomponents.html-data.json +1 -1
  297. package/index.d.ts +3 -2
  298. package/index.js +3 -2
  299. package/index.js.map +1 -1
  300. package/package.json +1 -1
  301. package/web-types.json +2 -2
  302. package/components/common/i18n/calendar.resources.js +0 -17
  303. package/components/common/i18n/calendar.resources.js.map +0 -1
  304. package/components/common/i18n/chat.resources.js.map +0 -1
  305. package/components/common/i18n/date-range-picker.resources.js +0 -12
  306. package/components/common/i18n/date-range-picker.resources.js.map +0 -1
  307. package/components/common/localization/validation-en.d.ts +0 -13
  308. package/components/common/localization/validation-en.js +0 -13
  309. package/components/common/localization/validation-en.js.map +0 -1
  310. /package/components/common/i18n/{calendar.resources.d.ts → EN/calendar.resources.d.ts} +0 -0
  311. /package/components/common/i18n/{chat.resources.d.ts → EN/chat.resources.d.ts} +0 -0
  312. /package/components/common/i18n/{chat.resources.js → EN/chat.resources.js} +0 -0
  313. /package/components/common/i18n/{date-range-picker.resources.d.ts → EN/date-range-picker.resources.d.ts} +0 -0
package/CHANGELOG.md CHANGED
@@ -4,6 +4,11 @@ All notable changes to this project will be documented in this file.
4
4
  The format is based on [Keep a Changelog](http://keepachangelog.com/)
5
5
  and this project adheres to [Semantic Versioning](http://semver.org/).
6
6
 
7
+ ## [Unreleased]
8
+ ### Fixed
9
+ - #### Tooltip
10
+ - Do not show tooltip when target is clicked [#1828](https://github.com/IgniteUI/igniteui-webcomponents/issues/1828)
11
+
7
12
  ## [6.3.4] - 2025-10-22
8
13
  ### Fixed
9
14
  - #### Date picker
package/README.md CHANGED
@@ -26,6 +26,7 @@ See the [Storybook Here](https://igniteui.github.io/igniteui-webcomponents)
26
26
 
27
27
  | Components | Status | Documentation | Released Version |
28
28
  | :---------------------- | :----: | :----------------------------: | :--------------: |
29
+ | Chat | ✅ | [Docs][Chat Docs] | [6.3.0] |
29
30
  | Date Range Picker | ✅ | [Docs][Date Range Picker Docs] | [6.1.0] |
30
31
  | Tooltip | ✅ | [Docs][Tooltip Docs] | [5.4.0] |
31
32
  | File Input | ✅ | [Docs][File Input Docs] | [5.4.0] |
@@ -256,6 +257,7 @@ npm run storybook:build
256
257
  [File Input Docs]: https://www.infragistics.com/products/ignite-ui-web-components/web-components/components/inputs/file-input
257
258
  [Tooltip Docs]: https://www.infragistics.com/products/ignite-ui-web-components/web-components/components/inputs/tooltip
258
259
  [Date Range Picker Docs]: https://www.infragistics.com/products/ignite-ui-web-components/web-components/components/scheduling/date-range-picker
260
+ [Chat Docs]: https://www.infragistics.com/products/ignite-ui-web-components/web-components/components/interactivity/chat
259
261
  [1.0.0]: https://github.com/IgniteUI/igniteui-webcomponents/releases/tag/1.0.0
260
262
  [2.0.0]: https://github.com/IgniteUI/igniteui-webcomponents/releases/tag/2.0.0
261
263
  [2.1.0]: https://github.com/IgniteUI/igniteui-webcomponents/releases/tag/2.1.0
@@ -270,3 +272,4 @@ npm run storybook:build
270
272
  [5.3.0]: https://github.com/IgniteUI/igniteui-webcomponents/releases/tag/5.3.0
271
273
  [5.4.0]: https://github.com/IgniteUI/igniteui-webcomponents/releases/tag/5.4.0
272
274
  [6.1.0]: https://github.com/IgniteUI/igniteui-webcomponents/releases/tag/6.1.0
275
+ [6.3.0]: https://github.com/IgniteUI/igniteui-webcomponents/releases/tag/6.3.0
@@ -1,16 +1,41 @@
1
1
  import type { ReactiveController, ReactiveControllerHost } from 'lit';
2
2
  import type { Ref } from 'lit/directives/ref.js';
3
3
  import type { AnimationReferenceMetadata } from './types.js';
4
+ /**
5
+ * Defines the result of an optional View Transition start.
6
+ */
7
+ type ViewTransitionResult = {
8
+ transition?: ViewTransition;
9
+ };
10
+ /**
11
+ * A ReactiveController for managing Web Animation API (WAAPI) playback
12
+ * on a host element or a specified target element.
13
+ *
14
+ * It provides methods to play, stop, and coordinate animations, including
15
+ * support for 'height: auto' transitions and reduced motion preference.
16
+ */
4
17
  declare class AnimationController implements ReactiveController {
5
- private readonly host;
6
- private _target?;
7
- protected get target(): HTMLElement;
8
- constructor(host: ReactiveControllerHost & HTMLElement, _target?: (Ref<HTMLElement> | HTMLElement) | undefined);
9
- private parseKeyframes;
10
- play(animation: AnimationReferenceMetadata): Promise<AnimationPlaybackEvent>;
11
- stopAll(): Promise<unknown[]>;
12
- playExclusive(animation: AnimationReferenceMetadata): Promise<boolean>;
18
+ private readonly _host;
19
+ private readonly _ref?;
20
+ /**
21
+ * The actual HTMLElement target for the animations.
22
+ * Prioritizes a passed-in Ref value, then a direct HTMLElement, falling back to the host.
23
+ */
24
+ protected get _target(): HTMLElement;
25
+ constructor(host: ReactiveControllerHost & HTMLElement, ref?: Ref<HTMLElement> | HTMLElement);
26
+ /** Pre-processes keyframes, specifically resolving 'auto' height to the element's scrollHeight. */
27
+ private _parseKeyframes;
28
+ /** @internal */
13
29
  hostConnected(): void;
30
+ /** Plays a sequence of keyframes, first cancelling all existing animations on the target. */
31
+ playExclusive(animation: AnimationReferenceMetadata): Promise<boolean>;
32
+ /**
33
+ * Plays a sequence of keyframes using WAAPI.
34
+ * Automatically sets duration to 0 if 'prefers-reduced-motion' is set.
35
+ */
36
+ play(animation: AnimationReferenceMetadata): Promise<AnimationPlaybackEvent>;
37
+ /** Cancels all active animations on the target element. */
38
+ cancelAll(): Promise<void>;
14
39
  }
15
40
  /**
16
41
  * Creates and attaches an animation player instance to the passed in `host` element.
@@ -18,8 +43,9 @@ declare class AnimationController implements ReactiveController {
18
43
  * the host element itself.
19
44
  */
20
45
  export declare function addAnimationController(host: ReactiveControllerHost & HTMLElement, target?: Ref<HTMLElement> | HTMLElement): AnimationController;
21
- type ViewTransitionResult = {
22
- transition?: ViewTransition;
23
- };
46
+ /**
47
+ * Initiates a View Transition if supported by the browser and not suppressed by
48
+ * the 'prefers-reduced-motion' setting.
49
+ */
24
50
  export declare function startViewTransition(callback?: ViewTransitionUpdateCallback): ViewTransitionResult;
25
51
  export type { AnimationController };
@@ -1,64 +1,55 @@
1
1
  import { isElement } from '../components/common/util.js';
2
- const listenerOptions = { once: true };
2
+ const LISTENER_OPTIONS = { once: true };
3
3
  function getPrefersReducedMotion() {
4
4
  return globalThis?.matchMedia('(prefers-reduced-motion: reduce)').matches;
5
5
  }
6
6
  class AnimationController {
7
- get target() {
8
- if (isElement(this._target)) {
9
- return this._target;
7
+ get _target() {
8
+ if (isElement(this._ref)) {
9
+ return this._ref;
10
10
  }
11
- return this._target?.value ?? this.host;
11
+ return this._ref?.value ?? this._host;
12
12
  }
13
- constructor(host, _target) {
14
- this.host = host;
15
- this._target = _target;
16
- this.host.addController(this);
13
+ constructor(host, ref) {
14
+ this._host = host;
15
+ this._ref = ref;
16
+ this._host.addController(this);
17
17
  }
18
- parseKeyframes(keyframes) {
19
- return keyframes.map((keyframe) => {
20
- if (!keyframe.height)
21
- return keyframe;
22
- return {
23
- ...keyframe,
24
- height: keyframe.height === 'auto'
25
- ? `${this.target.scrollHeight}px`
26
- : keyframe.height,
27
- };
18
+ _parseKeyframes(keyframes) {
19
+ const target = this._target;
20
+ return keyframes.map((frame) => {
21
+ return frame.height === 'auto'
22
+ ? { ...frame, height: `${target.scrollHeight}px` }
23
+ : frame;
28
24
  });
29
25
  }
26
+ hostConnected() { }
27
+ async playExclusive(animation) {
28
+ await this.cancelAll();
29
+ const event = await this.play(animation);
30
+ return event.type === 'finish';
31
+ }
30
32
  async play(animation) {
31
33
  const { steps, options } = animation;
32
- if (options?.duration === Number.POSITIVE_INFINITY) {
34
+ const duration = getPrefersReducedMotion() ? 0 : (options?.duration ?? 0);
35
+ if (!Number.isFinite(duration)) {
33
36
  throw new Error('Promise-based animations must be finite.');
34
37
  }
35
38
  return new Promise((resolve) => {
36
- const animation = this.target.animate(this.parseKeyframes(steps), {
39
+ const animation = this._target.animate(this._parseKeyframes(steps), {
37
40
  ...options,
38
- duration: getPrefersReducedMotion() ? 0 : options.duration,
41
+ duration,
39
42
  });
40
- animation.addEventListener('cancel', resolve, listenerOptions);
41
- animation.addEventListener('finish', resolve, listenerOptions);
43
+ animation.addEventListener('cancel', resolve, LISTENER_OPTIONS);
44
+ animation.addEventListener('finish', resolve, LISTENER_OPTIONS);
42
45
  });
43
46
  }
44
- stopAll() {
45
- return Promise.all(this.target.getAnimations().map((animation) => {
46
- return new Promise((resolve) => {
47
- const resolver = () => requestAnimationFrame(resolve);
48
- animation.addEventListener('cancel', resolver, listenerOptions);
49
- animation.addEventListener('finish', resolver, listenerOptions);
50
- animation.cancel();
51
- });
52
- }));
53
- }
54
- async playExclusive(animation) {
55
- const [_, event] = await Promise.all([
56
- this.stopAll(),
57
- this.play(animation),
58
- ]);
59
- return event.type === 'finish';
47
+ cancelAll() {
48
+ for (const animation of this._target.getAnimations()) {
49
+ animation.cancel();
50
+ }
51
+ return Promise.resolve();
60
52
  }
61
- hostConnected() { }
62
53
  }
63
54
  export function addAnimationController(host, target) {
64
55
  return new AnimationController(host, target);
@@ -1 +1 @@
1
- {"version":3,"file":"player.js","sourceRoot":"","sources":["../../src/animations/player.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAGzD,MAAM,eAAe,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAEvC,SAAS,uBAAuB;IAC9B,OAAO,UAAU,EAAE,UAAU,CAAC,kCAAkC,CAAC,CAAC,OAAO,CAAC;AAC5E,CAAC;AAED,MAAM,mBAAmB;IACvB,IAAc,MAAM;QAClB,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,OAAO,CAAC;QACtB,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC;IAC1C,CAAC;IAED,YACmB,IAA0C,EACnD,OAAwC;QAD/B,SAAI,GAAJ,IAAI,CAAsC;QACnD,YAAO,GAAP,OAAO,CAAiC;QAEhD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAEO,cAAc,CAAC,SAAqB;QAC1C,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;YAChC,IAAI,CAAC,QAAQ,CAAC,MAAM;gBAAE,OAAO,QAAQ,CAAC;YAEtC,OAAO;gBACL,GAAG,QAAQ;gBACX,MAAM,EACJ,QAAQ,CAAC,MAAM,KAAK,MAAM;oBACxB,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI;oBACjC,CAAC,CAAC,QAAQ,CAAC,MAAM;aACtB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,SAAqC;QACrD,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC;QAErC,IAAI,OAAO,EAAE,QAAQ,KAAK,MAAM,CAAC,iBAAiB,EAAE,CAAC;YACnD,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;QAED,OAAO,IAAI,OAAO,CAAyB,CAAC,OAAO,EAAE,EAAE;YACrD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;gBAChE,GAAG,OAAO;gBACV,QAAQ,EAAE,uBAAuB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAQ,CAAC,QAAQ;aAC5D,CAAC,CAAC;YAEH,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;YAC/D,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,OAAO;QACZ,OAAO,OAAO,CAAC,GAAG,CAChB,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;YAC5C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC7B,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;gBACtD,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;gBAChE,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;gBAEhE,SAAS,CAAC,MAAM,EAAE,CAAC;YACrB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,SAAqC;QAC9D,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACnC,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;SACrB,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;IACjC,CAAC;IAEM,aAAa,KAAI,CAAC;CAC1B;AAOD,MAAM,UAAU,sBAAsB,CACpC,IAA0C,EAC1C,MAAuC;IAEvC,OAAO,IAAI,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC/C,CAAC;AAMD,MAAM,UAAU,mBAAmB,CACjC,QAAuC;IAGvC,IAAI,uBAAuB,EAAE,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CAAC;QAC/D,QAAQ,EAAE,EAAE,CAAC;QACb,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC;AAChE,CAAC","sourcesContent":["import type { ReactiveController, ReactiveControllerHost } from 'lit';\nimport type { Ref } from 'lit/directives/ref.js';\n\nimport { isElement } from '../components/common/util.js';\nimport type { AnimationReferenceMetadata } from './types.js';\n\nconst listenerOptions = { once: true };\n\nfunction getPrefersReducedMotion() {\n return globalThis?.matchMedia('(prefers-reduced-motion: reduce)').matches;\n}\n\nclass AnimationController implements ReactiveController {\n protected get target() {\n if (isElement(this._target)) {\n return this._target;\n }\n return this._target?.value ?? this.host;\n }\n\n constructor(\n private readonly host: ReactiveControllerHost & HTMLElement,\n private _target?: Ref<HTMLElement> | HTMLElement\n ) {\n this.host.addController(this);\n }\n\n private parseKeyframes(keyframes: Keyframe[]) {\n return keyframes.map((keyframe) => {\n if (!keyframe.height) return keyframe;\n\n return {\n ...keyframe,\n height:\n keyframe.height === 'auto'\n ? `${this.target.scrollHeight}px`\n : keyframe.height,\n };\n });\n }\n\n public async play(animation: AnimationReferenceMetadata) {\n const { steps, options } = animation;\n\n if (options?.duration === Number.POSITIVE_INFINITY) {\n throw new Error('Promise-based animations must be finite.');\n }\n\n return new Promise<AnimationPlaybackEvent>((resolve) => {\n const animation = this.target.animate(this.parseKeyframes(steps), {\n ...options,\n duration: getPrefersReducedMotion() ? 0 : options!.duration,\n });\n\n animation.addEventListener('cancel', resolve, listenerOptions);\n animation.addEventListener('finish', resolve, listenerOptions);\n });\n }\n\n public stopAll() {\n return Promise.all(\n this.target.getAnimations().map((animation) => {\n return new Promise((resolve) => {\n const resolver = () => requestAnimationFrame(resolve);\n animation.addEventListener('cancel', resolver, listenerOptions);\n animation.addEventListener('finish', resolver, listenerOptions);\n\n animation.cancel();\n });\n })\n );\n }\n\n public async playExclusive(animation: AnimationReferenceMetadata) {\n const [_, event] = await Promise.all([\n this.stopAll(),\n this.play(animation),\n ]);\n\n return event.type === 'finish';\n }\n\n public hostConnected() {}\n}\n\n/**\n * Creates and attaches an animation player instance to the passed in `host` element.\n * The player will run animations on the passed in `target`, or if `target` is undefined,\n * the host element itself.\n */\nexport function addAnimationController(\n host: ReactiveControllerHost & HTMLElement,\n target?: Ref<HTMLElement> | HTMLElement\n) {\n return new AnimationController(host, target);\n}\n\ntype ViewTransitionResult = {\n transition?: ViewTransition;\n};\n\nexport function startViewTransition(\n callback?: ViewTransitionUpdateCallback\n): ViewTransitionResult {\n /* c8 ignore next 4 */\n if (getPrefersReducedMotion() || !document.startViewTransition) {\n callback?.();\n return {};\n }\n\n return { transition: document.startViewTransition(callback) };\n}\n\nexport type { AnimationController };\n"]}
1
+ {"version":3,"file":"player.js","sourceRoot":"","sources":["../../src/animations/player.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ReactiveController, ReactiveControllerHost } from 'lit';\nimport type { Ref } from 'lit/directives/ref.js';\nimport { isElement } from '../components/common/util.js';\nimport type { AnimationReferenceMetadata } from './types.js';\n\n/**\n * Defines the result of an optional View Transition start.\n */\ntype ViewTransitionResult = {\n transition?: ViewTransition;\n};\n\nconst LISTENER_OPTIONS = { once: true } as const;\n\n/**\n * Checks the user's preference for reduced motion.\n */\nfunction getPrefersReducedMotion(): boolean {\n return globalThis?.matchMedia('(prefers-reduced-motion: reduce)').matches;\n}\n\n/**\n * A ReactiveController for managing Web Animation API (WAAPI) playback\n * on a host element or a specified target element.\n *\n * It provides methods to play, stop, and coordinate animations, including\n * support for 'height: auto' transitions and reduced motion preference.\n */\nclass AnimationController implements ReactiveController {\n private readonly _host: ReactiveControllerHost & HTMLElement;\n private readonly _ref?: Ref<HTMLElement> | HTMLElement;\n\n /**\n * The actual HTMLElement target for the animations.\n * Prioritizes a passed-in Ref value, then a direct HTMLElement, falling back to the host.\n */\n protected get _target(): HTMLElement {\n if (isElement(this._ref)) {\n return this._ref;\n }\n\n return this._ref?.value ?? this._host;\n }\n\n constructor(\n host: ReactiveControllerHost & HTMLElement,\n ref?: Ref<HTMLElement> | HTMLElement\n ) {\n this._host = host;\n this._ref = ref;\n this._host.addController(this);\n }\n\n /** Pre-processes keyframes, specifically resolving 'auto' height to the element's scrollHeight. */\n private _parseKeyframes(keyframes: Keyframe[]): Keyframe[] {\n const target = this._target;\n\n return keyframes.map((frame) => {\n return frame.height === 'auto'\n ? { ...frame, height: `${target.scrollHeight}px` }\n : frame;\n });\n }\n\n /** @internal */\n public hostConnected(): void {}\n\n /** Plays a sequence of keyframes, first cancelling all existing animations on the target. */\n public async playExclusive(\n animation: AnimationReferenceMetadata\n ): Promise<boolean> {\n await this.cancelAll();\n\n const event = await this.play(animation);\n return event.type === 'finish';\n }\n\n /**\n * Plays a sequence of keyframes using WAAPI.\n * Automatically sets duration to 0 if 'prefers-reduced-motion' is set.\n */\n public async play(\n animation: AnimationReferenceMetadata\n ): Promise<AnimationPlaybackEvent> {\n const { steps, options } = animation;\n const duration = getPrefersReducedMotion() ? 0 : (options?.duration ?? 0);\n\n if (!Number.isFinite(duration)) {\n throw new Error('Promise-based animations must be finite.');\n }\n\n return new Promise<AnimationPlaybackEvent>((resolve) => {\n const animation = this._target.animate(this._parseKeyframes(steps), {\n ...options,\n duration,\n });\n\n animation.addEventListener('cancel', resolve, LISTENER_OPTIONS);\n animation.addEventListener('finish', resolve, LISTENER_OPTIONS);\n });\n }\n\n /** Cancels all active animations on the target element. */\n public cancelAll(): Promise<void> {\n for (const animation of this._target.getAnimations()) {\n animation.cancel();\n }\n\n return Promise.resolve();\n }\n}\n\n/**\n * Creates and attaches an animation player instance to the passed in `host` element.\n * The player will run animations on the passed in `target`, or if `target` is undefined,\n * the host element itself.\n */\nexport function addAnimationController(\n host: ReactiveControllerHost & HTMLElement,\n target?: Ref<HTMLElement> | HTMLElement\n): AnimationController {\n return new AnimationController(host, target);\n}\n\n/**\n * Initiates a View Transition if supported by the browser and not suppressed by\n * the 'prefers-reduced-motion' setting.\n */\nexport function startViewTransition(\n callback?: ViewTransitionUpdateCallback\n): ViewTransitionResult {\n /* c8 ignore next 4 */\n if (getPrefersReducedMotion() || !document.startViewTransition) {\n callback?.();\n return {};\n }\n\n return { transition: document.startViewTransition(callback) };\n}\n\nexport type { AnimationController };\n"]}
@@ -12,25 +12,31 @@ export default class IgcAccordionComponent extends LitElement {
12
12
  static readonly tagName = "igc-accordion";
13
13
  static styles: import("lit").CSSResult;
14
14
  static register(): void;
15
- private enabledPanels;
15
+ private _panels;
16
+ private readonly _slots;
17
+ private get _interactivePanels();
16
18
  /**
17
19
  * Allows only one panel to be expanded at a time.
18
20
  * @attr single-expand
21
+ * @default false
19
22
  */
20
23
  singleExpand: boolean;
21
24
  /** Returns all of the accordions's direct igc-expansion-panel children. */
22
- panels: Array<IgcExpansionPanelComponent>;
25
+ get panels(): IgcExpansionPanelComponent[];
23
26
  constructor();
24
- private skipKeybinding;
25
- private navigatePrev;
26
- private navigateNext;
27
- private collapseAll;
28
- private expandAll;
29
- private handlePanelOpening;
30
- private getNextPanel;
31
- private getPanelHeader;
32
- private closePanel;
33
- private openPanel;
27
+ private _handleSlotChange;
28
+ private _handlePanelOpening;
29
+ private _skipKeybinding;
30
+ private _navigateToFirst;
31
+ private _navigateToLast;
32
+ private _navigateToPrevious;
33
+ private _navigateToNext;
34
+ private _collapseAll;
35
+ private _expandAll;
36
+ private _getPanelHeader;
37
+ private _getNextPanel;
38
+ private _closePanel;
39
+ private _openPanel;
34
40
  /** Hides all of the child expansion panels' contents. */
35
41
  hideAll(): Promise<void>;
36
42
  /** Shows all of the child expansion panels' contents. */
@@ -5,8 +5,9 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
7
  import { html, LitElement } from 'lit';
8
- import { property, queryAssignedElements } from 'lit/decorators.js';
8
+ import { property } from 'lit/decorators.js';
9
9
  import { addKeybindings, altKey, arrowDown, arrowUp, endKey, homeKey, shiftKey, } from '../common/controllers/key-bindings.js';
10
+ import { addSlotController, setSlots } from '../common/controllers/slot.js';
10
11
  import { registerComponent } from '../common/definitions/register.js';
11
12
  import { addSafeEventListener, first, last } from '../common/util.js';
12
13
  import IgcExpansionPanelComponent from '../expansion-panel/expansion-panel.js';
@@ -17,85 +18,109 @@ export default class IgcAccordionComponent extends LitElement {
17
18
  static register() {
18
19
  registerComponent(IgcAccordionComponent, IgcExpansionPanelComponent);
19
20
  }
21
+ get _interactivePanels() {
22
+ return this._panels.filter((panel) => !panel.disabled);
23
+ }
24
+ get panels() {
25
+ return Array.from(this._panels);
26
+ }
20
27
  constructor() {
21
28
  super();
29
+ this._panels = [];
30
+ this._slots = addSlotController(this, {
31
+ slots: setSlots(),
32
+ onChange: this._handleSlotChange,
33
+ initial: true,
34
+ });
22
35
  this.singleExpand = false;
23
- addSafeEventListener(this, 'igcOpening', this.handlePanelOpening);
24
- addKeybindings(this, { skip: this.skipKeybinding })
25
- .set(homeKey, () => this.getPanelHeader(first(this.enabledPanels)).focus())
26
- .set(endKey, () => this.getPanelHeader(last(this.enabledPanels)).focus())
27
- .set(arrowUp, this.navigatePrev)
28
- .set(arrowDown, this.navigateNext)
29
- .set([shiftKey, altKey, arrowDown], this.expandAll)
30
- .set([shiftKey, altKey, arrowUp], this.collapseAll);
31
- }
32
- skipKeybinding(target) {
33
- return !(target.matches(IgcExpansionPanelComponent.tagName) &&
34
- this.enabledPanels.includes(target));
35
- }
36
- navigatePrev(event) {
36
+ addSafeEventListener(this, 'igcOpening', this._handlePanelOpening);
37
+ addKeybindings(this, { skip: this._skipKeybinding })
38
+ .set(homeKey, this._navigateToFirst)
39
+ .set(endKey, this._navigateToLast)
40
+ .set(arrowUp, this._navigateToPrevious)
41
+ .set(arrowDown, this._navigateToNext)
42
+ .set([shiftKey, altKey, arrowDown], this._expandAll)
43
+ .set([shiftKey, altKey, arrowUp], this._collapseAll);
44
+ }
45
+ _handleSlotChange() {
46
+ this._panels = this._slots.getAssignedElements('[default]', {
47
+ selector: IgcExpansionPanelComponent.tagName,
48
+ });
49
+ }
50
+ async _handlePanelOpening(event) {
37
51
  const current = event.target;
38
- const next = this.getNextPanel(current, -1);
39
- if (next !== current) {
40
- this.getPanelHeader(next).focus();
52
+ if (!(this.singleExpand && this.panels.includes(current))) {
53
+ return;
41
54
  }
55
+ await Promise.all(this._interactivePanels
56
+ .filter((panel) => panel.open && panel !== current)
57
+ .map((panel) => this._closePanel(panel)));
58
+ }
59
+ _skipKeybinding(target) {
60
+ return !(target instanceof IgcExpansionPanelComponent &&
61
+ this._interactivePanels.includes(target));
62
+ }
63
+ _navigateToFirst() {
64
+ this._getPanelHeader(first(this._interactivePanels))?.focus();
65
+ }
66
+ _navigateToLast() {
67
+ this._getPanelHeader(last(this._interactivePanels))?.focus();
42
68
  }
43
- navigateNext(event) {
69
+ _navigateToPrevious(event) {
44
70
  const current = event.target;
45
- const next = this.getNextPanel(current, 1);
71
+ const next = this._getNextPanel(current, -1);
46
72
  if (next !== current) {
47
- this.getPanelHeader(next).focus();
73
+ this._getPanelHeader(next)?.focus();
48
74
  }
49
75
  }
50
- collapseAll() {
51
- for (const panel of this.enabledPanels) {
52
- this.closePanel(panel);
53
- }
54
- }
55
- expandAll(event) {
76
+ _navigateToNext(event) {
56
77
  const current = event.target;
57
- for (const panel of this.enabledPanels) {
58
- if (this.singleExpand) {
59
- current === panel ? this.openPanel(panel) : this.closePanel(panel);
60
- }
61
- else {
62
- this.openPanel(panel);
63
- }
78
+ const next = this._getNextPanel(current, 1);
79
+ if (next !== current) {
80
+ this._getPanelHeader(next)?.focus();
64
81
  }
65
82
  }
66
- handlePanelOpening(event) {
83
+ async _collapseAll() {
84
+ await Promise.all(this._interactivePanels.map((panel) => this._closePanel(panel)));
85
+ }
86
+ async _expandAll(event) {
67
87
  const current = event.target;
68
- if (!(this.singleExpand && this.panels.includes(current))) {
69
- return;
88
+ if (this.singleExpand) {
89
+ const closePromises = this._interactivePanels
90
+ .filter((panel) => panel.open && panel !== current)
91
+ .map((panel) => this._closePanel(panel));
92
+ await Promise.all(closePromises);
93
+ await this._openPanel(current);
70
94
  }
71
- for (const panel of this.enabledPanels) {
72
- if (panel.open && panel !== current) {
73
- this.closePanel(panel);
74
- }
95
+ else {
96
+ await Promise.all(this._interactivePanels.map((panel) => this._openPanel(panel)));
75
97
  }
76
98
  }
77
- getNextPanel(panel, dir = 1) {
78
- const idx = this.enabledPanels.indexOf(panel);
79
- return this.enabledPanels[idx + dir] || panel;
99
+ _getPanelHeader(panel) {
100
+ return panel['_headerRef'].value;
80
101
  }
81
- getPanelHeader(panel) {
82
- return panel.renderRoot.querySelector('div[part="header"]');
102
+ _getNextPanel(panel, dir = 1) {
103
+ const panels = this._interactivePanels;
104
+ const idx = panels.indexOf(panel);
105
+ return panels[idx + dir] || panel;
83
106
  }
84
- async closePanel(panel) {
85
- if (!(panel.open &&
86
- panel.emitEvent('igcClosing', { cancelable: true, detail: panel }))) {
107
+ async _closePanel(p) {
108
+ const args = { detail: p };
109
+ if (!(p.open && p.emitEvent('igcClosing', { cancelable: true, ...args }))) {
87
110
  return;
88
111
  }
89
- await panel.hide();
90
- panel.emitEvent('igcClosed', { detail: panel });
112
+ if (await p.hide()) {
113
+ p.emitEvent('igcClosed', args);
114
+ }
91
115
  }
92
- async openPanel(panel) {
93
- if (panel.open ||
94
- !panel.emitEvent('igcOpening', { cancelable: true, detail: panel })) {
116
+ async _openPanel(p) {
117
+ const args = { detail: p };
118
+ if (p.open || !p.emitEvent('igcOpening', { cancelable: true, ...args })) {
95
119
  return;
96
120
  }
97
- await panel.show();
98
- panel.emitEvent('igcOpened', { detail: panel });
121
+ if (await p.show()) {
122
+ p.emitEvent('igcOpened', args);
123
+ }
99
124
  }
100
125
  async hideAll() {
101
126
  await Promise.all(this.panels.map((panel) => panel.hide()));
@@ -108,14 +133,6 @@ export default class IgcAccordionComponent extends LitElement {
108
133
  }
109
134
  }
110
135
  __decorate([
111
- queryAssignedElements({
112
- selector: `${IgcExpansionPanelComponent.tagName}:not([disabled])`,
113
- })
114
- ], IgcAccordionComponent.prototype, "enabledPanels", void 0);
115
- __decorate([
116
- property({ attribute: 'single-expand', reflect: true, type: Boolean })
136
+ property({ type: Boolean, reflect: true, attribute: 'single-expand' })
117
137
  ], IgcAccordionComponent.prototype, "singleExpand", void 0);
118
- __decorate([
119
- queryAssignedElements({ selector: IgcExpansionPanelComponent.tagName })
120
- ], IgcAccordionComponent.prototype, "panels", void 0);
121
138
  //# sourceMappingURL=accordion.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"accordion.js","sourceRoot":"","sources":["../../../src/components/accordion/accordion.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement } from 'lit';\nimport { property, queryAssignedElements } from 'lit/decorators.js';\n\nimport {\n addKeybindings,\n altKey,\n arrowDown,\n arrowUp,\n endKey,\n homeKey,\n shiftKey,\n} from '../common/controllers/key-bindings.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport { addSafeEventListener, first, last } from '../common/util.js';\nimport IgcExpansionPanelComponent from '../expansion-panel/expansion-panel.js';\nimport { styles } from './themes/accordion.base.css.js';\n\n/**\n * The Accordion is a container-based component that can house multiple expansion panels\n * and offers keyboard navigation.\n *\n * @element igc-accordion\n *\n * @slot - Renders the expansion panels inside default slot.\n */\nexport default class IgcAccordionComponent extends LitElement {\n public static readonly tagName = 'igc-accordion';\n public static override styles = styles;\n\n /* blazorSuppress */\n public static register() {\n registerComponent(IgcAccordionComponent, IgcExpansionPanelComponent);\n }\n\n @queryAssignedElements({\n selector: `${IgcExpansionPanelComponent.tagName}:not([disabled])`,\n })\n private enabledPanels!: Array<IgcExpansionPanelComponent>;\n\n /**\n * Allows only one panel to be expanded at a time.\n * @attr single-expand\n */\n @property({ attribute: 'single-expand', reflect: true, type: Boolean })\n public singleExpand = false;\n\n /* blazorSuppress */\n /** Returns all of the accordions's direct igc-expansion-panel children. */\n @queryAssignedElements({ selector: IgcExpansionPanelComponent.tagName })\n public panels!: Array<IgcExpansionPanelComponent>;\n\n constructor() {\n super();\n\n addSafeEventListener(this, 'igcOpening' as any, this.handlePanelOpening);\n\n addKeybindings(this, { skip: this.skipKeybinding })\n .set(homeKey, () =>\n this.getPanelHeader(first(this.enabledPanels)).focus()\n )\n .set(endKey, () => this.getPanelHeader(last(this.enabledPanels)).focus())\n .set(arrowUp, this.navigatePrev)\n .set(arrowDown, this.navigateNext)\n .set([shiftKey, altKey, arrowDown], this.expandAll)\n .set([shiftKey, altKey, arrowUp], this.collapseAll);\n }\n\n private skipKeybinding(target: Element) {\n return !(\n target.matches(IgcExpansionPanelComponent.tagName) &&\n this.enabledPanels.includes(target as IgcExpansionPanelComponent)\n );\n }\n\n private navigatePrev(event: KeyboardEvent) {\n const current = event.target as IgcExpansionPanelComponent;\n const next = this.getNextPanel(current, -1);\n\n if (next !== current) {\n this.getPanelHeader(next).focus();\n }\n }\n\n private navigateNext(event: KeyboardEvent) {\n const current = event.target as IgcExpansionPanelComponent;\n const next = this.getNextPanel(current, 1);\n\n if (next !== current) {\n this.getPanelHeader(next).focus();\n }\n }\n\n private collapseAll() {\n for (const panel of this.enabledPanels) {\n this.closePanel(panel);\n }\n }\n\n private expandAll(event: KeyboardEvent) {\n const current = event.target as IgcExpansionPanelComponent;\n\n for (const panel of this.enabledPanels) {\n if (this.singleExpand) {\n current === panel ? this.openPanel(panel) : this.closePanel(panel);\n } else {\n this.openPanel(panel);\n }\n }\n }\n\n private handlePanelOpening(event: Event) {\n const current = event.target as IgcExpansionPanelComponent;\n\n if (!(this.singleExpand && this.panels.includes(current))) {\n return;\n }\n\n for (const panel of this.enabledPanels) {\n if (panel.open && panel !== current) {\n this.closePanel(panel);\n }\n }\n }\n\n private getNextPanel(panel: IgcExpansionPanelComponent, dir: 1 | -1 = 1) {\n const idx = this.enabledPanels.indexOf(panel);\n return this.enabledPanels[idx + dir] || panel;\n }\n\n private getPanelHeader(panel: IgcExpansionPanelComponent) {\n return panel.renderRoot.querySelector('div[part=\"header\"]') as HTMLElement;\n }\n\n private async closePanel(panel: IgcExpansionPanelComponent) {\n if (\n !(\n panel.open &&\n panel.emitEvent('igcClosing', { cancelable: true, detail: panel })\n )\n ) {\n return;\n }\n\n await panel.hide();\n panel.emitEvent('igcClosed', { detail: panel });\n }\n\n private async openPanel(panel: IgcExpansionPanelComponent) {\n if (\n panel.open ||\n !panel.emitEvent('igcOpening', { cancelable: true, detail: panel })\n ) {\n return;\n }\n\n await panel.show();\n panel.emitEvent('igcOpened', { detail: panel });\n }\n\n /** Hides all of the child expansion panels' contents. */\n public async hideAll(): Promise<void> {\n await Promise.all(this.panels.map((panel) => panel.hide()));\n }\n\n /** Shows all of the child expansion panels' contents. */\n public async showAll(): Promise<void> {\n await Promise.all(this.panels.map((panel) => panel.show()));\n }\n\n protected override render() {\n return html`<slot></slot>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-accordion': IgcAccordionComponent;\n }\n}\n"]}
1
+ {"version":3,"file":"accordion.js","sourceRoot":"","sources":["../../../src/components/accordion/accordion.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport {\n addKeybindings,\n altKey,\n arrowDown,\n arrowUp,\n endKey,\n homeKey,\n shiftKey,\n} from '../common/controllers/key-bindings.js';\nimport { addSlotController, setSlots } from '../common/controllers/slot.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport { addSafeEventListener, first, last } from '../common/util.js';\nimport IgcExpansionPanelComponent from '../expansion-panel/expansion-panel.js';\nimport { styles } from './themes/accordion.base.css.js';\n\n/**\n * The Accordion is a container-based component that can house multiple expansion panels\n * and offers keyboard navigation.\n *\n * @element igc-accordion\n *\n * @slot - Renders the expansion panels inside default slot.\n */\nexport default class IgcAccordionComponent extends LitElement {\n public static readonly tagName = 'igc-accordion';\n public static override styles = styles;\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(IgcAccordionComponent, IgcExpansionPanelComponent);\n }\n\n //#region Internal state and properties\n\n private _panels: IgcExpansionPanelComponent[] = [];\n\n private readonly _slots = addSlotController(this, {\n slots: setSlots(),\n onChange: this._handleSlotChange,\n initial: true,\n });\n\n private get _interactivePanels(): IgcExpansionPanelComponent[] {\n return this._panels.filter((panel) => !panel.disabled);\n }\n\n //#endregion\n\n //#region Public attributes and properties\n\n /**\n * Allows only one panel to be expanded at a time.\n * @attr single-expand\n * @default false\n */\n @property({ type: Boolean, reflect: true, attribute: 'single-expand' })\n public singleExpand = false;\n\n /* blazorSuppress */\n /** Returns all of the accordions's direct igc-expansion-panel children. */\n public get panels(): IgcExpansionPanelComponent[] {\n return Array.from(this._panels);\n }\n\n //#endregion\n\n constructor() {\n super();\n\n addSafeEventListener(this, 'igcOpening' as any, this._handlePanelOpening);\n\n addKeybindings(this, { skip: this._skipKeybinding })\n .set(homeKey, this._navigateToFirst)\n .set(endKey, this._navigateToLast)\n .set(arrowUp, this._navigateToPrevious)\n .set(arrowDown, this._navigateToNext)\n .set([shiftKey, altKey, arrowDown], this._expandAll)\n .set([shiftKey, altKey, arrowUp], this._collapseAll);\n }\n\n //#region Event handlers\n\n private _handleSlotChange(): void {\n this._panels = this._slots.getAssignedElements('[default]', {\n selector: IgcExpansionPanelComponent.tagName,\n });\n }\n\n private async _handlePanelOpening(event: Event): Promise<void> {\n const current = event.target as IgcExpansionPanelComponent;\n\n if (!(this.singleExpand && this.panels.includes(current))) {\n return;\n }\n\n await Promise.all(\n this._interactivePanels\n .filter((panel) => panel.open && panel !== current)\n .map((panel) => this._closePanel(panel))\n );\n }\n\n //#endregion\n\n //#region Keyboard interaction handlers\n\n private _skipKeybinding(target: Element): boolean {\n return !(\n target instanceof IgcExpansionPanelComponent &&\n this._interactivePanels.includes(target)\n );\n }\n\n private _navigateToFirst(): void {\n this._getPanelHeader(first(this._interactivePanels))?.focus();\n }\n\n private _navigateToLast(): void {\n this._getPanelHeader(last(this._interactivePanels))?.focus();\n }\n\n private _navigateToPrevious(event: KeyboardEvent): void {\n const current = event.target as IgcExpansionPanelComponent;\n const next = this._getNextPanel(current, -1);\n\n if (next !== current) {\n this._getPanelHeader(next)?.focus();\n }\n }\n\n private _navigateToNext(event: KeyboardEvent): void {\n const current = event.target as IgcExpansionPanelComponent;\n const next = this._getNextPanel(current, 1);\n\n if (next !== current) {\n this._getPanelHeader(next)?.focus();\n }\n }\n\n private async _collapseAll(): Promise<void> {\n await Promise.all(\n this._interactivePanels.map((panel) => this._closePanel(panel))\n );\n }\n\n private async _expandAll(event: KeyboardEvent): Promise<void> {\n const current = event.target as IgcExpansionPanelComponent;\n\n if (this.singleExpand) {\n const closePromises = this._interactivePanels\n .filter((panel) => panel.open && panel !== current)\n .map((panel) => this._closePanel(panel));\n\n await Promise.all(closePromises);\n await this._openPanel(current);\n } else {\n await Promise.all(\n this._interactivePanels.map((panel) => this._openPanel(panel))\n );\n }\n }\n\n //#endregion\n\n //#region Internal API\n\n private _getPanelHeader(\n panel: IgcExpansionPanelComponent\n ): HTMLElement | undefined {\n // biome-ignore lint/complexity/useLiteralKeys: Direct property access instead of DOM query\n return panel['_headerRef'].value;\n }\n\n private _getNextPanel(\n panel: IgcExpansionPanelComponent,\n dir: 1 | -1 = 1\n ): IgcExpansionPanelComponent {\n const panels = this._interactivePanels;\n const idx = panels.indexOf(panel);\n\n return panels[idx + dir] || panel;\n }\n\n private async _closePanel(p: IgcExpansionPanelComponent): Promise<void> {\n const args = { detail: p };\n\n if (!(p.open && p.emitEvent('igcClosing', { cancelable: true, ...args }))) {\n return;\n }\n\n if (await p.hide()) {\n p.emitEvent('igcClosed', args);\n }\n }\n\n private async _openPanel(p: IgcExpansionPanelComponent): Promise<void> {\n const args = { detail: p };\n\n if (p.open || !p.emitEvent('igcOpening', { cancelable: true, ...args })) {\n return;\n }\n\n if (await p.show()) {\n p.emitEvent('igcOpened', args);\n }\n }\n\n //#endregion\n\n //#region Public API\n\n /** Hides all of the child expansion panels' contents. */\n public async hideAll(): Promise<void> {\n await Promise.all(this.panels.map((panel) => panel.hide()));\n }\n\n /** Shows all of the child expansion panels' contents. */\n public async showAll(): Promise<void> {\n await Promise.all(this.panels.map((panel) => panel.show()));\n }\n\n //#endregion\n\n protected override render() {\n return html`<slot></slot>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-accordion': IgcAccordionComponent;\n }\n}\n"]}
@@ -14,6 +14,9 @@ export default class IgcBadgeComponent extends LitElement {
14
14
  static readonly tagName = "igc-badge";
15
15
  static styles: import("lit").CSSResult[];
16
16
  static register(): void;
17
+ private _iconPart;
18
+ private readonly _slots;
19
+ protected _handleSlotChange(): void;
17
20
  private readonly _internals;
18
21
  /**
19
22
  * The type of badge.
@@ -30,6 +33,11 @@ export default class IgcBadgeComponent extends LitElement {
30
33
  * @attr
31
34
  */
32
35
  shape: BadgeShape;
36
+ /**
37
+ * Sets whether to render a dot type badge.
38
+ * @attr
39
+ */
40
+ dot: boolean;
33
41
  constructor();
34
42
  protected willUpdate(changedProperties: PropertyValues<this>): void;
35
43
  protected render(): import("lit-html").TemplateResult<1>;
@@ -8,7 +8,9 @@ import { html, LitElement } from 'lit';
8
8
  import { property } from 'lit/decorators.js';
9
9
  import { addThemingController } from '../../theming/theming-controller.js';
10
10
  import { addInternalsController } from '../common/controllers/internals.js';
11
+ import { addSlotController } from '../common/controllers/slot.js';
11
12
  import { registerComponent } from '../common/definitions/register.js';
13
+ import { partMap } from '../common/part-map.js';
12
14
  import { styles } from './themes/badge.base.css.js';
13
15
  import { styles as shared } from './themes/shared/badge.common.css.js';
14
16
  import { all } from './themes/themes.js';
@@ -18,14 +20,24 @@ export default class IgcBadgeComponent extends LitElement {
18
20
  static register() {
19
21
  registerComponent(IgcBadgeComponent);
20
22
  }
23
+ _handleSlotChange() {
24
+ const assignedNodes = this._slots.getAssignedNodes('[default]', true);
25
+ this._iconPart = assignedNodes.some((node) => node.nodeType === Node.ELEMENT_NODE &&
26
+ node.tagName.toLowerCase() === 'igc-icon');
27
+ }
21
28
  constructor() {
22
29
  super();
30
+ this._iconPart = false;
31
+ this._slots = addSlotController(this, {
32
+ onChange: this._handleSlotChange,
33
+ });
23
34
  this._internals = addInternalsController(this, {
24
35
  initialARIA: { role: 'status' },
25
36
  });
26
37
  this.variant = 'primary';
27
38
  this.outlined = false;
28
39
  this.shape = 'rounded';
40
+ this.dot = false;
29
41
  addThemingController(this, all);
30
42
  }
31
43
  willUpdate(changedProperties) {
@@ -35,7 +47,7 @@ export default class IgcBadgeComponent extends LitElement {
35
47
  }
36
48
  render() {
37
49
  return html `
38
- <span part="base">
50
+ <span part=${partMap({ base: true, icon: this._iconPart })}>
39
51
  <slot></slot>
40
52
  </span>
41
53
  `;
@@ -50,4 +62,7 @@ __decorate([
50
62
  __decorate([
51
63
  property({ reflect: true })
52
64
  ], IgcBadgeComponent.prototype, "shape", void 0);
65
+ __decorate([
66
+ property({ type: Boolean, reflect: true })
67
+ ], IgcBadgeComponent.prototype, "dot", void 0);
53
68
  //# sourceMappingURL=badge.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"badge.js","sourceRoot":"","sources":["../../../src/components/badge/badge.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAuB,MAAM,KAAK,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEtE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAYzC,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,UAAU;aAChC,YAAO,GAAG,WAAW,AAAd,CAAe;aACtB,WAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,AAAnB,CAAoB;IAG1C,MAAM,CAAC,QAAQ;QACpB,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IACvC,CAAC;IA2BD;QACE,KAAK,EAAE,CAAC;QA1BO,eAAU,GAAG,sBAAsB,CAAC,IAAI,EAAE;YACzD,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAChC,CAAC,CAAC;QAOI,YAAO,GAAiB,SAAS,CAAC;QAOlC,aAAQ,GAAG,KAAK,CAAC;QAOjB,UAAK,GAAe,SAAS,CAAC;QAInC,oBAAoB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAClC,CAAC;IAEkB,UAAU,CAAC,iBAAuC;QACnE,IAAI,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,mBAAmB,EAAE,SAAS,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IAEkB,MAAM;QACvB,OAAO,IAAI,CAAA;;;;KAIV,CAAC;IACJ,CAAC;;AAjCM;IADN,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;kDACa;AAOlC;IADN,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;mDACnB;AAOjB;IADN,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gDACS","sourcesContent":["import { html, LitElement, type PropertyValues } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { addThemingController } from '../../theming/theming-controller.js';\nimport { addInternalsController } from '../common/controllers/internals.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport type { BadgeShape, StyleVariant } from '../types.js';\nimport { styles } from './themes/badge.base.css.js';\nimport { styles as shared } from './themes/shared/badge.common.css.js';\nimport { all } from './themes/themes.js';\n\n/**\n * The badge is a component indicating a status on a related item or an area\n * where some active indication is required.\n *\n * @element igc-badge\n *\n * @slot - Default slot for the badge.\n *\n * @csspart base - The base wrapper of the badge.\n */\nexport default class IgcBadgeComponent extends LitElement {\n public static readonly tagName = 'igc-badge';\n public static override styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(IgcBadgeComponent);\n }\n\n private readonly _internals = addInternalsController(this, {\n initialARIA: { role: 'status' },\n });\n\n /**\n * The type of badge.\n * @attr\n */\n @property({ reflect: true })\n public variant: StyleVariant = 'primary';\n\n /**\n * Sets whether to draw an outlined version of the badge.\n * @attr\n */\n @property({ type: Boolean, reflect: true })\n public outlined = false;\n\n /**\n * The shape of the badge.\n * @attr\n */\n @property({ reflect: true })\n public shape: BadgeShape = 'rounded';\n\n constructor() {\n super();\n addThemingController(this, all);\n }\n\n protected override willUpdate(changedProperties: PropertyValues<this>): void {\n if (changedProperties.has('variant')) {\n this._internals.setARIA({ ariaRoleDescription: `badge ${this.variant}` });\n }\n }\n\n protected override render() {\n return html`\n <span part=\"base\">\n <slot></slot>\n </span>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-badge': IgcBadgeComponent;\n }\n}\n"]}
1
+ {"version":3,"file":"badge.js","sourceRoot":"","sources":["../../../src/components/badge/badge.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAuB,MAAM,KAAK,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAYzC,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,UAAU;aAChC,YAAO,GAAG,WAAW,AAAd,CAAe;aACtB,WAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,AAAnB,CAAoB;IAG1C,MAAM,CAAC,QAAQ;QACpB,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IACvC,CAAC;IAQS,iBAAiB;QACzB,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACtE,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC,IAAI,CACjC,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY;YAClC,IAAgB,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,UAAU,CACzD,CAAC;IACJ,CAAC;IAkCD;QACE,KAAK,EAAE,CAAC;QAhDF,cAAS,GAAG,KAAK,CAAC;QAET,WAAM,GAAG,iBAAiB,CAAC,IAAI,EAAE;YAChD,QAAQ,EAAE,IAAI,CAAC,iBAAiB;SACjC,CAAC,CAAC;QAWc,eAAU,GAAG,sBAAsB,CAAC,IAAI,EAAE;YACzD,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAChC,CAAC,CAAC;QAOI,YAAO,GAAiB,SAAS,CAAC;QAOlC,aAAQ,GAAG,KAAK,CAAC;QAOjB,UAAK,GAAe,SAAS,CAAC;QAO9B,QAAG,GAAG,KAAK,CAAC;QAIjB,oBAAoB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAClC,CAAC;IAEkB,UAAU,CAAC,iBAAuC;QACnE,IAAI,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,mBAAmB,EAAE,SAAS,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IAEkB,MAAM;QACvB,OAAO,IAAI,CAAA;mBACI,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;;;KAG3D,CAAC;IACJ,CAAC;;AAxCM;IADN,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;kDACa;AAOlC;IADN,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;mDACnB;AAOjB;IADN,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gDACS;AAO9B;IADN,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;8CACxB","sourcesContent":["import { html, LitElement, type PropertyValues } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { addThemingController } from '../../theming/theming-controller.js';\nimport { addInternalsController } from '../common/controllers/internals.js';\nimport { addSlotController } from '../common/controllers/slot.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport { partMap } from '../common/part-map.js';\nimport type { BadgeShape, StyleVariant } from '../types.js';\nimport { styles } from './themes/badge.base.css.js';\nimport { styles as shared } from './themes/shared/badge.common.css.js';\nimport { all } from './themes/themes.js';\n\n/**\n * The badge is a component indicating a status on a related item or an area\n * where some active indication is required.\n *\n * @element igc-badge\n *\n * @slot - Default slot for the badge.\n *\n * @csspart base - The base wrapper of the badge.\n */\nexport default class IgcBadgeComponent extends LitElement {\n public static readonly tagName = 'igc-badge';\n public static override styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(IgcBadgeComponent);\n }\n\n private _iconPart = false;\n\n private readonly _slots = addSlotController(this, {\n onChange: this._handleSlotChange,\n });\n\n protected _handleSlotChange(): void {\n const assignedNodes = this._slots.getAssignedNodes('[default]', true);\n this._iconPart = assignedNodes.some(\n (node) =>\n node.nodeType === Node.ELEMENT_NODE &&\n (node as Element).tagName.toLowerCase() === 'igc-icon'\n );\n }\n\n private readonly _internals = addInternalsController(this, {\n initialARIA: { role: 'status' },\n });\n\n /**\n * The type of badge.\n * @attr\n */\n @property({ reflect: true })\n public variant: StyleVariant = 'primary';\n\n /**\n * Sets whether to draw an outlined version of the badge.\n * @attr\n */\n @property({ type: Boolean, reflect: true })\n public outlined = false;\n\n /**\n * The shape of the badge.\n * @attr\n */\n @property({ reflect: true })\n public shape: BadgeShape = 'rounded';\n\n /**\n * Sets whether to render a dot type badge.\n * @attr\n */\n @property({ type: Boolean, reflect: true })\n public dot = false;\n\n constructor() {\n super();\n addThemingController(this, all);\n }\n\n protected override willUpdate(changedProperties: PropertyValues<this>): void {\n if (changedProperties.has('variant')) {\n this._internals.setARIA({ ariaRoleDescription: `badge ${this.variant}` });\n }\n }\n\n protected override render() {\n return html`\n <span part=${partMap({ base: true, icon: this._iconPart })}>\n <slot></slot>\n </span>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-badge': IgcBadgeComponent;\n }\n}\n"]}