igniteui-webcomponents 6.0.1 → 6.1.1-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 (497) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/components/accordion/accordion.js +3 -3
  3. package/components/accordion/accordion.js.map +1 -1
  4. package/components/avatar/avatar.d.ts +8 -10
  5. package/components/avatar/avatar.js +26 -26
  6. package/components/avatar/avatar.js.map +1 -1
  7. package/components/badge/badge.d.ts +3 -4
  8. package/components/badge/badge.js +13 -13
  9. package/components/badge/badge.js.map +1 -1
  10. package/components/banner/banner.d.ts +2 -3
  11. package/components/banner/banner.js +8 -4
  12. package/components/banner/banner.js.map +1 -1
  13. package/components/button/button-base.d.ts +8 -16
  14. package/components/button/button-base.js +27 -42
  15. package/components/button/button-base.js.map +1 -1
  16. package/components/button/button.js.map +1 -1
  17. package/components/button/icon-button.d.ts +2 -2
  18. package/components/button/icon-button.js +1 -1
  19. package/components/button/icon-button.js.map +1 -1
  20. package/components/button/themes/button/light/button.shared.css.js +1 -1
  21. package/components/button/themes/button/light/button.shared.css.js.map +1 -1
  22. package/components/button-group/button-group.js +2 -2
  23. package/components/button-group/button-group.js.map +1 -1
  24. package/components/button-group/toggle-button.d.ts +2 -8
  25. package/components/button-group/toggle-button.js +8 -12
  26. package/components/button-group/toggle-button.js.map +1 -1
  27. package/components/calendar/calendar.d.ts +1 -1
  28. package/components/calendar/calendar.js +13 -10
  29. package/components/calendar/calendar.js.map +1 -1
  30. package/components/calendar/days-view/days-view.d.ts +1 -1
  31. package/components/calendar/days-view/days-view.js +10 -11
  32. package/components/calendar/days-view/days-view.js.map +1 -1
  33. package/components/calendar/helpers.d.ts +12 -1
  34. package/components/calendar/helpers.js +35 -10
  35. package/components/calendar/helpers.js.map +1 -1
  36. package/components/calendar/model.d.ts +15 -1
  37. package/components/calendar/model.js +26 -5
  38. package/components/calendar/model.js.map +1 -1
  39. package/components/calendar/months-view/months-view.d.ts +1 -1
  40. package/components/calendar/months-view/months-view.js +10 -10
  41. package/components/calendar/months-view/months-view.js.map +1 -1
  42. package/components/calendar/years-view/years-view.d.ts +1 -1
  43. package/components/calendar/years-view/years-view.js +10 -10
  44. package/components/calendar/years-view/years-view.js.map +1 -1
  45. package/components/card/card.actions.js +1 -1
  46. package/components/card/card.actions.js.map +1 -1
  47. package/components/card/card.content.js +1 -1
  48. package/components/card/card.content.js.map +1 -1
  49. package/components/card/card.header.js +1 -1
  50. package/components/card/card.header.js.map +1 -1
  51. package/components/card/card.js +1 -1
  52. package/components/card/card.js.map +1 -1
  53. package/components/card/card.media.js +1 -1
  54. package/components/card/card.media.js.map +1 -1
  55. package/components/carousel/carousel-indicator-container.d.ts +2 -2
  56. package/components/carousel/carousel-indicator-container.js +9 -10
  57. package/components/carousel/carousel-indicator-container.js.map +1 -1
  58. package/components/carousel/carousel-indicator.d.ts +5 -7
  59. package/components/carousel/carousel-indicator.js +19 -19
  60. package/components/carousel/carousel-indicator.js.map +1 -1
  61. package/components/carousel/carousel-slide.d.ts +2 -3
  62. package/components/carousel/carousel-slide.js +17 -11
  63. package/components/carousel/carousel-slide.js.map +1 -1
  64. package/components/carousel/carousel.d.ts +6 -8
  65. package/components/carousel/carousel.js +36 -28
  66. package/components/carousel/carousel.js.map +1 -1
  67. package/components/chat/chat-input.d.ts +41 -0
  68. package/components/chat/chat-input.js +254 -0
  69. package/components/chat/chat-input.js.map +1 -0
  70. package/components/chat/chat-message-list.d.ts +24 -0
  71. package/components/chat/chat-message-list.js +88 -0
  72. package/components/chat/chat-message-list.js.map +1 -0
  73. package/components/chat/chat-message.d.ts +21 -0
  74. package/components/chat/chat-message.js +52 -0
  75. package/components/chat/chat-message.js.map +1 -0
  76. package/components/chat/chat.d.ts +41 -0
  77. package/components/chat/chat.js +98 -0
  78. package/components/chat/chat.js.map +1 -0
  79. package/components/chat/markdown-util.d.ts +2 -0
  80. package/components/chat/markdown-util.js +22 -0
  81. package/components/chat/markdown-util.js.map +1 -0
  82. package/components/chat/message-attachments.d.ts +28 -0
  83. package/components/chat/message-attachments.js +168 -0
  84. package/components/chat/message-attachments.js.map +1 -0
  85. package/components/chat/themes/chat.base.css.d.ts +1 -0
  86. package/components/chat/themes/chat.base.css.js +3 -0
  87. package/components/chat/themes/chat.base.css.js.map +1 -0
  88. package/components/chat/themes/input.base.css.d.ts +1 -0
  89. package/components/chat/themes/input.base.css.js +3 -0
  90. package/components/chat/themes/input.base.css.js.map +1 -0
  91. package/components/chat/themes/message-attachments.base.css.d.ts +1 -0
  92. package/components/chat/themes/message-attachments.base.css.js +3 -0
  93. package/components/chat/themes/message-attachments.base.css.js.map +1 -0
  94. package/components/chat/themes/message-list.base.css.d.ts +1 -0
  95. package/components/chat/themes/message-list.base.css.js +3 -0
  96. package/components/chat/themes/message-list.base.css.js.map +1 -0
  97. package/components/chat/themes/message.base.css.d.ts +1 -0
  98. package/components/chat/themes/message.base.css.js +3 -0
  99. package/components/chat/themes/message.base.css.js.map +1 -0
  100. package/components/chat/types.d.ts +46 -0
  101. package/components/chat/types.js +8 -0
  102. package/components/chat/types.js.map +1 -0
  103. package/components/checkbox/checkbox-base.d.ts +8 -10
  104. package/components/checkbox/checkbox-base.js +20 -23
  105. package/components/checkbox/checkbox-base.js.map +1 -1
  106. package/components/checkbox/checkbox.d.ts +3 -3
  107. package/components/checkbox/checkbox.js +19 -20
  108. package/components/checkbox/checkbox.js.map +1 -1
  109. package/components/checkbox/switch.d.ts +2 -2
  110. package/components/checkbox/switch.js +16 -20
  111. package/components/checkbox/switch.js.map +1 -1
  112. package/components/checkbox/validators.js.map +1 -1
  113. package/components/chip/chip.js +4 -4
  114. package/components/chip/chip.js.map +1 -1
  115. package/components/combo/combo-header.js +1 -1
  116. package/components/combo/combo-header.js.map +1 -1
  117. package/components/combo/combo-item.d.ts +4 -6
  118. package/components/combo/combo-item.js +20 -18
  119. package/components/combo/combo-item.js.map +1 -1
  120. package/components/combo/combo.d.ts +3 -3
  121. package/components/combo/combo.js +25 -24
  122. package/components/combo/combo.js.map +1 -1
  123. package/components/combo/themes/combo.base.css.js +1 -1
  124. package/components/combo/themes/combo.base.css.js.map +1 -1
  125. package/components/combo/themes/shared/combo.fluent.css.js +1 -1
  126. package/components/combo/themes/shared/combo.fluent.css.js.map +1 -1
  127. package/components/common/abort-handler.d.ts +39 -0
  128. package/components/common/abort-handler.js +19 -0
  129. package/components/common/abort-handler.js.map +1 -0
  130. package/components/common/context.d.ts +5 -1
  131. package/components/common/context.js +2 -1
  132. package/components/common/context.js.map +1 -1
  133. package/components/common/controllers/drag.d.ts +3 -2
  134. package/components/common/controllers/drag.js +7 -6
  135. package/components/common/controllers/drag.js.map +1 -1
  136. package/components/common/controllers/focus-ring.d.ts +22 -11
  137. package/components/common/controllers/focus-ring.js +17 -14
  138. package/components/common/controllers/focus-ring.js.map +1 -1
  139. package/components/common/controllers/gestures.d.ts +6 -2
  140. package/components/common/controllers/gestures.js +15 -11
  141. package/components/common/controllers/gestures.js.map +1 -1
  142. package/components/common/controllers/internals.d.ts +33 -0
  143. package/components/common/controllers/internals.js +25 -0
  144. package/components/common/controllers/internals.js.map +1 -0
  145. package/components/common/controllers/key-bindings.d.ts +41 -33
  146. package/components/common/controllers/key-bindings.js +85 -71
  147. package/components/common/controllers/key-bindings.js.map +1 -1
  148. package/components/common/controllers/mutation-observer.d.ts +25 -15
  149. package/components/common/controllers/mutation-observer.js +23 -12
  150. package/components/common/controllers/mutation-observer.js.map +1 -1
  151. package/components/common/controllers/resize-observer.js.map +1 -1
  152. package/components/common/controllers/root-click.d.ts +58 -13
  153. package/components/common/controllers/root-click.js +47 -35
  154. package/components/common/controllers/root-click.js.map +1 -1
  155. package/components/common/decorators/shadow-options.d.ts +10 -0
  156. package/components/common/decorators/shadow-options.js +10 -0
  157. package/components/common/decorators/shadow-options.js.map +1 -0
  158. package/components/common/definitions/defineAllComponents.js +16 -12
  159. package/components/common/definitions/defineAllComponents.js.map +1 -1
  160. package/components/common/i18n/date-range-picker.resources.d.ts +11 -0
  161. package/components/common/i18n/date-range-picker.resources.js +12 -0
  162. package/components/common/i18n/date-range-picker.resources.js.map +1 -0
  163. package/components/common/mixins/alert.d.ts +1 -2
  164. package/components/common/mixins/alert.js +13 -9
  165. package/components/common/mixins/alert.js.map +1 -1
  166. package/components/common/mixins/combo-box.d.ts +2 -1
  167. package/components/common/mixins/combo-box.js +8 -4
  168. package/components/common/mixins/combo-box.js.map +1 -1
  169. package/components/common/mixins/forms/associated.js +2 -2
  170. package/components/common/mixins/forms/associated.js.map +1 -1
  171. package/components/common/mixins/forms/form-value.d.ts +15 -1
  172. package/components/common/mixins/forms/form-value.js +25 -4
  173. package/components/common/mixins/forms/form-value.js.map +1 -1
  174. package/components/common/mixins/option.d.ts +3 -3
  175. package/components/common/mixins/option.js +13 -11
  176. package/components/common/mixins/option.js.map +1 -1
  177. package/components/common/part-map.d.ts +17 -0
  178. package/components/common/part-map.js +46 -0
  179. package/components/common/part-map.js.map +1 -0
  180. package/components/common/util.d.ts +14 -6
  181. package/components/common/util.js +26 -23
  182. package/components/common/util.js.map +1 -1
  183. package/components/common/validators.js +3 -7
  184. package/components/common/validators.js.map +1 -1
  185. package/components/date-picker/date-picker.d.ts +4 -9
  186. package/components/date-picker/date-picker.js +24 -24
  187. package/components/date-picker/date-picker.js.map +1 -1
  188. package/components/date-picker/themes/dark/date-picker.bootstrap.css.js +1 -1
  189. package/components/date-picker/themes/dark/date-picker.bootstrap.css.js.map +1 -1
  190. package/components/date-picker/themes/dark/date-picker.fluent.css.js +1 -1
  191. package/components/date-picker/themes/dark/date-picker.fluent.css.js.map +1 -1
  192. package/components/date-picker/themes/dark/date-picker.indigo.css.js +1 -1
  193. package/components/date-picker/themes/dark/date-picker.indigo.css.js.map +1 -1
  194. package/components/date-picker/themes/dark/date-picker.material.css.js +1 -1
  195. package/components/date-picker/themes/dark/date-picker.material.css.js.map +1 -1
  196. package/components/date-picker/themes/light/date-picker.bootstrap.css.js +1 -1
  197. package/components/date-picker/themes/light/date-picker.bootstrap.css.js.map +1 -1
  198. package/components/date-picker/themes/light/date-picker.fluent.css.js +1 -1
  199. package/components/date-picker/themes/light/date-picker.fluent.css.js.map +1 -1
  200. package/components/date-picker/themes/light/date-picker.indigo.css.js +1 -1
  201. package/components/date-picker/themes/light/date-picker.indigo.css.js.map +1 -1
  202. package/components/date-picker/themes/light/date-picker.material.css.js +1 -1
  203. package/components/date-picker/themes/light/date-picker.material.css.js.map +1 -1
  204. package/components/date-picker/themes/shared/date-picker.bootstrap.css.js +1 -1
  205. package/components/date-picker/themes/shared/date-picker.bootstrap.css.js.map +1 -1
  206. package/components/date-picker/themes/shared/date-picker.common.css.js +1 -1
  207. package/components/date-picker/themes/shared/date-picker.common.css.js.map +1 -1
  208. package/components/date-picker/themes/shared/date-picker.fluent.css.js +1 -1
  209. package/components/date-picker/themes/shared/date-picker.fluent.css.js.map +1 -1
  210. package/components/date-picker/themes/shared/date-picker.indigo.css.js +1 -1
  211. package/components/date-picker/themes/shared/date-picker.indigo.css.js.map +1 -1
  212. package/components/date-picker/themes/shared/date-picker.material.css.d.ts +1 -0
  213. package/components/date-picker/themes/shared/date-picker.material.css.js +3 -0
  214. package/components/date-picker/themes/shared/date-picker.material.css.js.map +1 -0
  215. package/components/date-picker/themes/themes.js +3 -2
  216. package/components/date-picker/themes/themes.js.map +1 -1
  217. package/components/date-picker/validators.js.map +1 -1
  218. package/components/date-range-picker/date-range-picker.base.css.d.ts +1 -0
  219. package/components/date-range-picker/date-range-picker.base.css.js +3 -0
  220. package/components/date-range-picker/date-range-picker.base.css.js.map +1 -0
  221. package/components/date-range-picker/date-range-picker.d.ts +360 -0
  222. package/components/date-range-picker/date-range-picker.js +811 -0
  223. package/components/date-range-picker/date-range-picker.js.map +1 -0
  224. package/components/date-range-picker/predefined-ranges-area.base.css.d.ts +1 -0
  225. package/components/date-range-picker/predefined-ranges-area.base.css.js +3 -0
  226. package/components/date-range-picker/predefined-ranges-area.base.css.js.map +1 -0
  227. package/components/date-range-picker/predefined-ranges-area.d.ts +36 -0
  228. package/components/date-range-picker/predefined-ranges-area.js +115 -0
  229. package/components/date-range-picker/predefined-ranges-area.js.map +1 -0
  230. package/components/date-range-picker/themes/dark/date-range-picker.bootstrap.css.d.ts +1 -0
  231. package/components/date-range-picker/themes/dark/date-range-picker.bootstrap.css.js +3 -0
  232. package/components/date-range-picker/themes/dark/date-range-picker.bootstrap.css.js.map +1 -0
  233. package/components/date-range-picker/themes/dark/date-range-picker.fluent.css.d.ts +1 -0
  234. package/components/date-range-picker/themes/dark/date-range-picker.fluent.css.js +3 -0
  235. package/components/date-range-picker/themes/dark/date-range-picker.fluent.css.js.map +1 -0
  236. package/components/date-range-picker/themes/dark/date-range-picker.indigo.css.d.ts +1 -0
  237. package/components/date-range-picker/themes/dark/date-range-picker.indigo.css.js +3 -0
  238. package/components/date-range-picker/themes/dark/date-range-picker.indigo.css.js.map +1 -0
  239. package/components/date-range-picker/themes/dark/date-range-picker.material.css.d.ts +1 -0
  240. package/components/date-range-picker/themes/dark/date-range-picker.material.css.js +3 -0
  241. package/components/date-range-picker/themes/dark/date-range-picker.material.css.js.map +1 -0
  242. package/components/date-range-picker/themes/light/date-range-picker.bootstrap.css.d.ts +1 -0
  243. package/components/date-range-picker/themes/light/date-range-picker.bootstrap.css.js +3 -0
  244. package/components/date-range-picker/themes/light/date-range-picker.bootstrap.css.js.map +1 -0
  245. package/components/date-range-picker/themes/light/date-range-picker.fluent.css.d.ts +1 -0
  246. package/components/date-range-picker/themes/light/date-range-picker.fluent.css.js +3 -0
  247. package/components/date-range-picker/themes/light/date-range-picker.fluent.css.js.map +1 -0
  248. package/components/date-range-picker/themes/light/date-range-picker.indigo.css.d.ts +1 -0
  249. package/components/date-range-picker/themes/light/date-range-picker.indigo.css.js +3 -0
  250. package/components/date-range-picker/themes/light/date-range-picker.indigo.css.js.map +1 -0
  251. package/components/date-range-picker/themes/light/date-range-picker.material.css.d.ts +1 -0
  252. package/components/date-range-picker/themes/light/date-range-picker.material.css.js +3 -0
  253. package/components/date-range-picker/themes/light/date-range-picker.material.css.js.map +1 -0
  254. package/components/date-range-picker/themes/light/date-range-picker.shared.css.d.ts +1 -0
  255. package/components/date-range-picker/themes/light/date-range-picker.shared.css.js +3 -0
  256. package/components/date-range-picker/themes/light/date-range-picker.shared.css.js.map +1 -0
  257. package/components/date-range-picker/themes/ranges-themes.d.ts +2 -0
  258. package/components/date-range-picker/themes/ranges-themes.js +14 -0
  259. package/components/date-range-picker/themes/ranges-themes.js.map +1 -0
  260. package/components/date-range-picker/themes/shared/date-range-picker.bootstrap.css.d.ts +1 -0
  261. package/components/date-range-picker/themes/shared/date-range-picker.bootstrap.css.js +3 -0
  262. package/components/date-range-picker/themes/shared/date-range-picker.bootstrap.css.js.map +1 -0
  263. package/components/date-range-picker/themes/shared/date-range-picker.common.css.d.ts +1 -0
  264. package/components/date-range-picker/themes/shared/date-range-picker.common.css.js +3 -0
  265. package/components/date-range-picker/themes/shared/date-range-picker.common.css.js.map +1 -0
  266. package/components/date-range-picker/themes/shared/date-range-picker.fluent.css.d.ts +1 -0
  267. package/components/date-range-picker/themes/shared/date-range-picker.fluent.css.js +3 -0
  268. package/components/date-range-picker/themes/shared/date-range-picker.fluent.css.js.map +1 -0
  269. package/components/date-range-picker/themes/shared/date-range-picker.indigo.css.d.ts +1 -0
  270. package/components/date-range-picker/themes/shared/date-range-picker.indigo.css.js +3 -0
  271. package/components/date-range-picker/themes/shared/date-range-picker.indigo.css.js.map +1 -0
  272. package/components/date-range-picker/themes/shared/date-range-picker.material.css.d.ts +1 -0
  273. package/components/date-range-picker/themes/shared/date-range-picker.material.css.js +3 -0
  274. package/components/date-range-picker/themes/shared/date-range-picker.material.css.js.map +1 -0
  275. package/components/date-range-picker/themes/shared/predefined-ranges-area.common.css.d.ts +1 -0
  276. package/components/date-range-picker/themes/shared/predefined-ranges-area.common.css.js +3 -0
  277. package/components/date-range-picker/themes/shared/predefined-ranges-area.common.css.js.map +1 -0
  278. package/components/date-range-picker/themes/shared/predefined-ranges-area.indigo.css.d.ts +1 -0
  279. package/components/date-range-picker/themes/shared/predefined-ranges-area.indigo.css.js +3 -0
  280. package/components/date-range-picker/themes/shared/predefined-ranges-area.indigo.css.js.map +1 -0
  281. package/components/date-range-picker/themes/themes.d.ts +2 -0
  282. package/components/date-range-picker/themes/themes.js +50 -0
  283. package/components/date-range-picker/themes/themes.js.map +1 -0
  284. package/components/date-range-picker/validators.d.ts +26 -0
  285. package/components/date-range-picker/validators.js +57 -0
  286. package/components/date-range-picker/validators.js.map +1 -0
  287. package/components/date-time-input/date-time-input.d.ts +2 -2
  288. package/components/date-time-input/date-time-input.js +7 -9
  289. package/components/date-time-input/date-time-input.js.map +1 -1
  290. package/components/date-time-input/date-util.d.ts +7 -0
  291. package/components/date-time-input/date-util.js +11 -0
  292. package/components/date-time-input/date-util.js.map +1 -1
  293. package/components/date-time-input/validators.js.map +1 -1
  294. package/components/dialog/dialog.js +12 -11
  295. package/components/dialog/dialog.js.map +1 -1
  296. package/components/dialog/themes/dialog.base.css.js +1 -1
  297. package/components/dialog/themes/dialog.base.css.js.map +1 -1
  298. package/components/dialog/themes/shared/dialog.indigo.css.js +1 -1
  299. package/components/dialog/themes/shared/dialog.indigo.css.js.map +1 -1
  300. package/components/divider/divider.d.ts +5 -3
  301. package/components/divider/divider.js +17 -15
  302. package/components/divider/divider.js.map +1 -1
  303. package/components/dropdown/dropdown-group.d.ts +0 -1
  304. package/components/dropdown/dropdown-group.js +7 -3
  305. package/components/dropdown/dropdown-group.js.map +1 -1
  306. package/components/dropdown/dropdown-header.js +1 -1
  307. package/components/dropdown/dropdown-header.js.map +1 -1
  308. package/components/dropdown/dropdown.d.ts +2 -1
  309. package/components/dropdown/dropdown.js +5 -2
  310. package/components/dropdown/dropdown.js.map +1 -1
  311. package/components/expansion-panel/expansion-panel.js +1 -1
  312. package/components/expansion-panel/expansion-panel.js.map +1 -1
  313. package/components/file-input/file-input.d.ts +11 -5
  314. package/components/file-input/file-input.js +23 -19
  315. package/components/file-input/file-input.js.map +1 -1
  316. package/components/file-input/themes/file-input.base.css.js +1 -1
  317. package/components/file-input/themes/file-input.base.css.js.map +1 -1
  318. package/components/file-input/validators.js.map +1 -1
  319. package/components/focus-trap/focus-trap.js +4 -4
  320. package/components/focus-trap/focus-trap.js.map +1 -1
  321. package/components/icon/icon.d.ts +1 -1
  322. package/components/icon/icon.js +7 -5
  323. package/components/icon/icon.js.map +1 -1
  324. package/components/input/input-base.d.ts +1 -8
  325. package/components/input/input-base.js +9 -10
  326. package/components/input/input-base.js.map +1 -1
  327. package/components/input/input.d.ts +2 -3
  328. package/components/input/input.js +10 -9
  329. package/components/input/input.js.map +1 -1
  330. package/components/input/themes/dark/input.bootstrap.css.js +1 -1
  331. package/components/input/themes/dark/input.bootstrap.css.js.map +1 -1
  332. package/components/input/themes/dark/input.indigo.css.js +1 -1
  333. package/components/input/themes/dark/input.indigo.css.js.map +1 -1
  334. package/components/input/themes/light/input.bootstrap.css.js +1 -1
  335. package/components/input/themes/light/input.bootstrap.css.js.map +1 -1
  336. package/components/input/themes/light/input.indigo.css.js +1 -1
  337. package/components/input/themes/light/input.indigo.css.js.map +1 -1
  338. package/components/input/themes/light/input.shared.css.js +1 -1
  339. package/components/input/themes/light/input.shared.css.js.map +1 -1
  340. package/components/input/themes/shared/input.bootstrap.css.js +1 -1
  341. package/components/input/themes/shared/input.bootstrap.css.js.map +1 -1
  342. package/components/input/themes/shared/input.common.css.js +1 -1
  343. package/components/input/themes/shared/input.common.css.js.map +1 -1
  344. package/components/input/themes/shared/input.fluent.css.js +1 -1
  345. package/components/input/themes/shared/input.fluent.css.js.map +1 -1
  346. package/components/input/themes/shared/input.indigo.css.js +1 -1
  347. package/components/input/themes/shared/input.indigo.css.js.map +1 -1
  348. package/components/input/themes/shared/input.material.css.js +1 -1
  349. package/components/input/themes/shared/input.material.css.js.map +1 -1
  350. package/components/input/validators.js.map +1 -1
  351. package/components/list/list-header.d.ts +0 -1
  352. package/components/list/list-header.js +5 -3
  353. package/components/list/list-header.js.map +1 -1
  354. package/components/list/list-item.d.ts +0 -1
  355. package/components/list/list-item.js +7 -3
  356. package/components/list/list-item.js.map +1 -1
  357. package/components/list/list.d.ts +0 -1
  358. package/components/list/list.js +7 -3
  359. package/components/list/list.js.map +1 -1
  360. package/components/mask-input/mask-input.d.ts +2 -3
  361. package/components/mask-input/mask-input.js +13 -12
  362. package/components/mask-input/mask-input.js.map +1 -1
  363. package/components/mask-input/mask-parser.d.ts +100 -14
  364. package/components/mask-input/mask-parser.js +134 -117
  365. package/components/mask-input/mask-parser.js.map +1 -1
  366. package/components/mask-input/validators.js.map +1 -1
  367. package/components/nav-drawer/nav-drawer-header-item.js +1 -1
  368. package/components/nav-drawer/nav-drawer-header-item.js.map +1 -1
  369. package/components/nav-drawer/nav-drawer-item.js +3 -7
  370. package/components/nav-drawer/nav-drawer-item.js.map +1 -1
  371. package/components/nav-drawer/nav-drawer.js +6 -7
  372. package/components/nav-drawer/nav-drawer.js.map +1 -1
  373. package/components/navbar/navbar.js +1 -1
  374. package/components/navbar/navbar.js.map +1 -1
  375. package/components/popover/popover.js +1 -1
  376. package/components/popover/popover.js.map +1 -1
  377. package/components/progress/base.d.ts +1 -2
  378. package/components/progress/base.js +34 -31
  379. package/components/progress/base.js.map +1 -1
  380. package/components/progress/circular-progress.js +7 -15
  381. package/components/progress/circular-progress.js.map +1 -1
  382. package/components/progress/linear-progress.js +5 -5
  383. package/components/progress/linear-progress.js.map +1 -1
  384. package/components/radio/radio.d.ts +11 -12
  385. package/components/radio/radio.js +40 -45
  386. package/components/radio/radio.js.map +1 -1
  387. package/components/radio/utils.js +6 -3
  388. package/components/radio/utils.js.map +1 -1
  389. package/components/radio-group/radio-group.d.ts +1 -1
  390. package/components/radio-group/radio-group.js +9 -8
  391. package/components/radio-group/radio-group.js.map +1 -1
  392. package/components/rating/rating-symbol.js +1 -1
  393. package/components/rating/rating-symbol.js.map +1 -1
  394. package/components/rating/rating.d.ts +2 -2
  395. package/components/rating/rating.js +5 -5
  396. package/components/rating/rating.js.map +1 -1
  397. package/components/resize-container/resize-container.js +5 -5
  398. package/components/resize-container/resize-container.js.map +1 -1
  399. package/components/resize-container/resize-controller.d.ts +3 -2
  400. package/components/resize-container/resize-controller.js +6 -4
  401. package/components/resize-container/resize-controller.js.map +1 -1
  402. package/components/ripple/ripple.js +3 -2
  403. package/components/ripple/ripple.js.map +1 -1
  404. package/components/select/select-group.d.ts +1 -1
  405. package/components/select/select-group.js +9 -5
  406. package/components/select/select-group.js.map +1 -1
  407. package/components/select/select-header.js +1 -1
  408. package/components/select/select-header.js.map +1 -1
  409. package/components/select/select.d.ts +3 -2
  410. package/components/select/select.js +19 -15
  411. package/components/select/select.js.map +1 -1
  412. package/components/select/themes/shared/select.fluent.css.js +1 -1
  413. package/components/select/themes/shared/select.fluent.css.js.map +1 -1
  414. package/components/select/validators.js.map +1 -1
  415. package/components/slider/range-slider.js +1 -1
  416. package/components/slider/range-slider.js.map +1 -1
  417. package/components/slider/slider-base.js +7 -7
  418. package/components/slider/slider-base.js.map +1 -1
  419. package/components/slider/slider-label.js +1 -1
  420. package/components/slider/slider-label.js.map +1 -1
  421. package/components/slider/slider.d.ts +2 -3
  422. package/components/slider/slider.js +7 -7
  423. package/components/slider/slider.js.map +1 -1
  424. package/components/snackbar/snackbar.js.map +1 -1
  425. package/components/stepper/step.js +4 -4
  426. package/components/stepper/step.js.map +1 -1
  427. package/components/stepper/stepper.js +1 -1
  428. package/components/stepper/stepper.js.map +1 -1
  429. package/components/tabs/tab.js +2 -2
  430. package/components/tabs/tab.js.map +1 -1
  431. package/components/tabs/tabs.js +12 -10
  432. package/components/tabs/tabs.js.map +1 -1
  433. package/components/textarea/textarea.d.ts +3 -9
  434. package/components/textarea/textarea.js +13 -14
  435. package/components/textarea/textarea.js.map +1 -1
  436. package/components/textarea/themes/dark/textarea.bootstrap.css.js +1 -1
  437. package/components/textarea/themes/dark/textarea.bootstrap.css.js.map +1 -1
  438. package/components/textarea/themes/dark/textarea.indigo.css.js +1 -1
  439. package/components/textarea/themes/dark/textarea.indigo.css.js.map +1 -1
  440. package/components/textarea/themes/light/textarea.bootstrap.css.js +1 -1
  441. package/components/textarea/themes/light/textarea.bootstrap.css.js.map +1 -1
  442. package/components/textarea/themes/light/textarea.indigo.css.js +1 -1
  443. package/components/textarea/themes/light/textarea.indigo.css.js.map +1 -1
  444. package/components/textarea/themes/light/textarea.shared.css.js +1 -1
  445. package/components/textarea/themes/light/textarea.shared.css.js.map +1 -1
  446. package/components/textarea/themes/shared/textarea.bootstrap.css.js +1 -1
  447. package/components/textarea/themes/shared/textarea.bootstrap.css.js.map +1 -1
  448. package/components/textarea/themes/shared/textarea.fluent.css.js +1 -1
  449. package/components/textarea/themes/shared/textarea.fluent.css.js.map +1 -1
  450. package/components/textarea/themes/shared/textarea.indigo.css.js +1 -1
  451. package/components/textarea/themes/shared/textarea.indigo.css.js.map +1 -1
  452. package/components/textarea/themes/shared/textarea.material.css.js +1 -1
  453. package/components/textarea/themes/shared/textarea.material.css.js.map +1 -1
  454. package/components/textarea/themes/textarea.base.css.js +1 -1
  455. package/components/textarea/themes/textarea.base.css.js.map +1 -1
  456. package/components/textarea/validators.js.map +1 -1
  457. package/components/tile-manager/position.d.ts +1 -1
  458. package/components/tile-manager/position.js.map +1 -1
  459. package/components/tile-manager/themes/container.js.map +1 -1
  460. package/components/tile-manager/tile-manager.d.ts +0 -1
  461. package/components/tile-manager/tile-manager.js +9 -10
  462. package/components/tile-manager/tile-manager.js.map +1 -1
  463. package/components/tile-manager/tile.js +7 -6
  464. package/components/tile-manager/tile.js.map +1 -1
  465. package/components/tooltip/controller.d.ts +2 -4
  466. package/components/tooltip/controller.js +11 -20
  467. package/components/tooltip/controller.js.map +1 -1
  468. package/components/tooltip/themes/themes.js +1 -1
  469. package/components/tooltip/themes/themes.js.map +1 -1
  470. package/components/tooltip/tooltip.d.ts +24 -10
  471. package/components/tooltip/tooltip.js +56 -49
  472. package/components/tooltip/tooltip.js.map +1 -1
  473. package/components/tree/tree-item.d.ts +1 -0
  474. package/components/tree/tree-item.js +28 -26
  475. package/components/tree/tree-item.js.map +1 -1
  476. package/components/tree/tree.d.ts +1 -1
  477. package/components/tree/tree.js +4 -3
  478. package/components/tree/tree.js.map +1 -1
  479. package/components/tree/tree.navigation.d.ts +1 -1
  480. package/components/tree/tree.navigation.js.map +1 -1
  481. package/components/tree/tree.selection.d.ts +1 -1
  482. package/components/tree/tree.selection.js.map +1 -1
  483. package/components/validation-container/themes/themes.js.map +1 -1
  484. package/components/validation-container/validation-container.d.ts +1 -1
  485. package/components/validation-container/validation-container.js +5 -12
  486. package/components/validation-container/validation-container.js.map +1 -1
  487. package/custom-elements.json +31449 -26970
  488. package/igniteui-webcomponents.css-data.json +1 -1
  489. package/igniteui-webcomponents.html-data.json +1 -1
  490. package/index.d.ts +11 -1
  491. package/index.js +6 -0
  492. package/index.js.map +1 -1
  493. package/package.json +3 -2
  494. package/theming/theming-controller.d.ts +1 -1
  495. package/theming/theming-controller.js +1 -1
  496. package/theming/theming-controller.js.map +1 -1
  497. package/web-types.json +2 -2
@@ -5,42 +5,42 @@ 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 { consume } from '@lit/context';
8
- import { LitElement, html } from 'lit';
8
+ import { html, LitElement } from 'lit';
9
9
  import { property } from 'lit/decorators.js';
10
10
  import { styleMap } from 'lit/directives/style-map.js';
11
11
  import { carouselContext } from '../common/context.js';
12
+ import { addInternalsController } from '../common/controllers/internals.js';
12
13
  import { registerComponent } from '../common/definitions/register.js';
13
14
  import { formatString } from '../common/util.js';
14
15
  import { styles } from './themes/carousel-indicator.base.css.js';
15
16
  class IgcCarouselIndicatorComponent extends LitElement {
17
+ constructor() {
18
+ super(...arguments);
19
+ this._internals = addInternalsController(this, {
20
+ initialARIA: { role: 'tab' },
21
+ });
22
+ this.active = false;
23
+ this.index = 0;
24
+ }
16
25
  static register() {
17
26
  registerComponent(IgcCarouselIndicatorComponent);
18
27
  }
19
28
  get _labelFormat() {
20
29
  return this._carousel ? this._carousel.indicatorsLabelFormat : '';
21
30
  }
22
- set active(value) {
23
- this._active = Boolean(value);
24
- this.tabIndex = this._active ? 0 : -1;
25
- this._internals.ariaSelected = this._active.toString();
26
- }
27
- get active() {
28
- return this._active;
29
- }
30
- constructor() {
31
- super();
32
- this._active = false;
33
- this.index = 0;
34
- this._internals = this.attachInternals();
35
- this._internals.role = 'tab';
36
- }
37
31
  connectedCallback() {
38
32
  super.connectedCallback();
39
33
  this.role = 'tab';
40
34
  this.slot = this.slot || 'indicator';
41
35
  }
42
- willUpdate() {
43
- this._internals.ariaLabel = formatString(this._labelFormat, this.index + 1);
36
+ willUpdate(changedProperties) {
37
+ if (changedProperties.has('active')) {
38
+ this.tabIndex = this.active ? 0 : -1;
39
+ this._internals.setARIA({ ariaSelected: this.active.toString() });
40
+ }
41
+ this._internals.setARIA({
42
+ ariaLabel: formatString(this._labelFormat, this.index + 1),
43
+ });
44
44
  }
45
45
  render() {
46
46
  const forward = this.active ? 'visible' : 'hidden';
@@ -66,7 +66,7 @@ __decorate([
66
66
  ], IgcCarouselIndicatorComponent.prototype, "_carousel", void 0);
67
67
  __decorate([
68
68
  property({ attribute: false })
69
- ], IgcCarouselIndicatorComponent.prototype, "active", null);
69
+ ], IgcCarouselIndicatorComponent.prototype, "active", void 0);
70
70
  __decorate([
71
71
  property({ attribute: false })
72
72
  ], IgcCarouselIndicatorComponent.prototype, "index", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"carousel-indicator.js","sourceRoot":"","sources":["../../../src/components/carousel/carousel-indicator.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EAAE,MAAM,EAAE,MAAM,yCAAyC,CAAC;AAcjE,MAAqB,6BAA8B,SAAQ,UAAU;IAK5D,MAAM,CAAC,QAAQ;QACpB,iBAAiB,CAAC,6BAA6B,CAAC,CAAC;IACnD,CAAC;IAQD,IAAc,YAAY;QACxB,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC;IACpE,CAAC;IAID,IAAW,MAAM,CAAC,KAAc;QAC9B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,CAAC,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;IACzD,CAAC;IAED,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAMD;QACE,KAAK,EAAE,CAAC;QA3BF,YAAO,GAAG,KAAK,CAAC;QAwBjB,UAAK,GAAG,CAAC,CAAC;QAKf,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACzC,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,KAAK,CAAC;IAC/B,CAAC;IAEe,iBAAiB;QAC/B,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;QAClB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,WAAW,CAAC;IACvC,CAAC;IAEkB,UAAU;QAC3B,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC9E,CAAC;IAEkB,MAAM;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;QACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;QAEpD,OAAO,IAAI,CAAA;;;gBAGC,QAAQ,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;;;;2CAIP,QAAQ,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;;;KAGvE,CAAC;IACJ,CAAC;;AAlEsB,qCAAO,GAAG,wBAAwB,AAA3B,CAA4B;AACnC,oCAAM,GAAG,MAAM,AAAT,CAAU;eAFpB,6BAA6B;AAaxC;IADP,OAAO,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;gEACd;AAQzC;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;2DAK9B;AAQM;IADN,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;4DACd","sourcesContent":["import { consume } from '@lit/context';\nimport { LitElement, html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { carouselContext } from '../common/context.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport { formatString } from '../common/util.js';\nimport type IgcCarouselComponent from './carousel.js';\nimport { styles } from './themes/carousel-indicator.base.css.js';\n\n/**\n * Used when a custom indicator needs to be passed to the `igc-carousel` component.\n *\n * @element igc-carousel-indicator\n *\n * @slot - Default slot for projected inactive indicator.\n * @slot active - Default slot for projected active indicator.\n *\n * @csspart indicator - The wrapping container of the carousel dot indicator.\n * @csspart inactive - The wrapping container of the inactive dot indicator.\n * @csspart active - The wrapping container of the active dot indicator.\n */\nexport default class IgcCarouselIndicatorComponent extends LitElement {\n public static readonly tagName = 'igc-carousel-indicator';\n public static override styles = styles;\n\n /* blazorSuppress */\n public static register() {\n registerComponent(IgcCarouselIndicatorComponent);\n }\n\n private _active = false;\n private _internals: ElementInternals;\n\n @consume({ context: carouselContext, subscribe: true })\n private _carousel?: IgcCarouselComponent;\n\n protected get _labelFormat() {\n return this._carousel ? this._carousel.indicatorsLabelFormat : '';\n }\n\n /* blazorSuppress */\n @property({ attribute: false })\n public set active(value: boolean) {\n this._active = Boolean(value);\n this.tabIndex = this._active ? 0 : -1;\n this._internals.ariaSelected = this._active.toString();\n }\n\n public get active(): boolean {\n return this._active;\n }\n\n /* blazorSuppress */\n @property({ attribute: false })\n public index = 0;\n\n constructor() {\n super();\n\n this._internals = this.attachInternals();\n this._internals.role = 'tab';\n }\n\n public override connectedCallback() {\n super.connectedCallback();\n this.role = 'tab';\n this.slot = this.slot || 'indicator';\n }\n\n protected override willUpdate(): void {\n this._internals.ariaLabel = formatString(this._labelFormat, this.index + 1);\n }\n\n protected override render() {\n const forward = this.active ? 'visible' : 'hidden';\n const backward = this.active ? 'hidden' : 'visible';\n\n return html`\n <div\n part=\"indicator inactive\"\n style=${styleMap({ visibility: backward })}\n >\n <slot></slot>\n </div>\n <div part=\"indicator active\" style=${styleMap({ visibility: forward })}>\n <slot name=\"active\"></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-carousel-indicator': IgcCarouselIndicatorComponent;\n }\n}\n"]}
1
+ {"version":3,"file":"carousel-indicator.js","sourceRoot":"","sources":["../../../src/components/carousel/carousel-indicator.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAuB,MAAM,KAAK,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EAAE,MAAM,EAAE,MAAM,yCAAyC,CAAC;AAcjE,MAAqB,6BAA8B,SAAQ,UAAU;IAArE;;QASmB,eAAU,GAAG,sBAAsB,CAAC,IAAI,EAAE;YACzD,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;SAC7B,CAAC,CAAC;QAWI,WAAM,GAAG,KAAK,CAAC;QAIf,UAAK,GAAG,CAAC,CAAC;IAoCnB,CAAC;IAzDQ,MAAM,CAAC,QAAQ;QACpB,iBAAiB,CAAC,6BAA6B,CAAC,CAAC;IACnD,CAAC;IASD,IAAc,YAAY;QACxB,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC;IACpE,CAAC;IAWe,iBAAiB;QAC/B,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;QAClB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,WAAW,CAAC;IACvC,CAAC;IAEkB,UAAU,CAAC,iBAAuC;QACnE,IAAI,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACrC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YACtB,SAAS,EAAE,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;SAC3D,CAAC,CAAC;IACL,CAAC;IAEkB,MAAM;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;QACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;QAEpD,OAAO,IAAI,CAAA;;;gBAGC,QAAQ,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;;;;2CAIP,QAAQ,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;;;KAGvE,CAAC;IACJ,CAAC;;AA5DsB,qCAAO,GAAG,wBAAwB,AAA3B,CAA4B;AACnC,oCAAM,GAAG,MAAM,AAAT,CAAU;eAFpB,6BAA6B;AAcxC;IADP,OAAO,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;gEACd;AAQlC;IADN,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;6DACT;AAIf;IADN,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;4DACd","sourcesContent":["import { consume } from '@lit/context';\nimport { html, LitElement, type PropertyValues } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { carouselContext } from '../common/context.js';\nimport { addInternalsController } from '../common/controllers/internals.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport { formatString } from '../common/util.js';\nimport type IgcCarouselComponent from './carousel.js';\nimport { styles } from './themes/carousel-indicator.base.css.js';\n\n/**\n * Used when a custom indicator needs to be passed to the `igc-carousel` component.\n *\n * @element igc-carousel-indicator\n *\n * @slot - Default slot for projected inactive indicator.\n * @slot active - Default slot for projected active indicator.\n *\n * @csspart indicator - The wrapping container of the carousel dot indicator.\n * @csspart inactive - The wrapping container of the inactive dot indicator.\n * @csspart active - The wrapping container of the active dot indicator.\n */\nexport default class IgcCarouselIndicatorComponent extends LitElement {\n public static readonly tagName = 'igc-carousel-indicator';\n public static override styles = styles;\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(IgcCarouselIndicatorComponent);\n }\n\n private readonly _internals = addInternalsController(this, {\n initialARIA: { role: 'tab' },\n });\n\n @consume({ context: carouselContext, subscribe: true })\n private _carousel?: IgcCarouselComponent;\n\n protected get _labelFormat(): string {\n return this._carousel ? this._carousel.indicatorsLabelFormat : '';\n }\n\n /* blazorSuppress */\n @property({ attribute: false })\n public active = false;\n\n /* blazorSuppress */\n @property({ attribute: false })\n public index = 0;\n\n /** @internal */\n public override connectedCallback(): void {\n super.connectedCallback();\n this.role = 'tab';\n this.slot = this.slot || 'indicator';\n }\n\n protected override willUpdate(changedProperties: PropertyValues<this>): void {\n if (changedProperties.has('active')) {\n this.tabIndex = this.active ? 0 : -1;\n this._internals.setARIA({ ariaSelected: this.active.toString() });\n }\n\n this._internals.setARIA({\n ariaLabel: formatString(this._labelFormat, this.index + 1),\n });\n }\n\n protected override render() {\n const forward = this.active ? 'visible' : 'hidden';\n const backward = this.active ? 'hidden' : 'visible';\n\n return html`\n <div\n part=\"indicator inactive\"\n style=${styleMap({ visibility: backward })}\n >\n <slot></slot>\n </div>\n <div part=\"indicator active\" style=${styleMap({ visibility: forward })}>\n <slot name=\"active\"></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-carousel-indicator': IgcCarouselIndicatorComponent;\n }\n}\n"]}
@@ -11,8 +11,8 @@ export default class IgcCarouselSlideComponent extends LitElement {
11
11
  static readonly tagName = "igc-carousel-slide";
12
12
  static register(): void;
13
13
  private static readonly increment;
14
- private _internals;
15
- private _animationPlayer;
14
+ private readonly _internals;
15
+ private readonly _animationPlayer;
16
16
  private _carousel?;
17
17
  protected get _index(): number;
18
18
  protected get _total(): number;
@@ -29,7 +29,6 @@ export default class IgcCarouselSlideComponent extends LitElement {
29
29
  * @deprecated since 5.4.0. Use Carousel's `select` method instead.
30
30
  */
31
31
  toggleAnimation(type: 'in' | 'out', direction?: 'normal' | 'reverse'): Promise<boolean>;
32
- constructor();
33
32
  protected willUpdate(): void;
34
33
  connectedCallback(): void;
35
34
  protected render(): import("lit-html").TemplateResult<1>;
@@ -5,16 +5,29 @@ 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 { consume } from '@lit/context';
8
- import { LitElement, html } from 'lit';
8
+ import { html, LitElement } from 'lit';
9
9
  import { property } from 'lit/decorators.js';
10
10
  import { EaseInOut } from '../../animations/easings.js';
11
11
  import { addAnimationController } from '../../animations/player.js';
12
12
  import { carouselContext } from '../common/context.js';
13
+ import { addInternalsController } from '../common/controllers/internals.js';
13
14
  import { registerComponent } from '../common/definitions/register.js';
14
15
  import { createCounter, formatString } from '../common/util.js';
15
16
  import { animations } from './animations.js';
16
17
  import { styles } from './themes/carousel-slide.base.css.js';
17
18
  class IgcCarouselSlideComponent extends LitElement {
19
+ constructor() {
20
+ super(...arguments);
21
+ this._internals = addInternalsController(this, {
22
+ initialARIA: {
23
+ role: 'tabpanel',
24
+ ariaRoleDescription: 'slide',
25
+ },
26
+ });
27
+ this._animationPlayer = addAnimationController(this);
28
+ this.active = false;
29
+ this.previous = false;
30
+ }
18
31
  static register() {
19
32
  registerComponent(IgcCarouselSlideComponent);
20
33
  }
@@ -47,17 +60,10 @@ class IgcCarouselSlideComponent extends LitElement {
47
60
  ]);
48
61
  return event.type === 'finish';
49
62
  }
50
- constructor() {
51
- super();
52
- this._animationPlayer = addAnimationController(this);
53
- this.active = false;
54
- this.previous = false;
55
- this._internals = this.attachInternals();
56
- this._internals.role = 'tabpanel';
57
- this._internals.ariaRoleDescription = 'slide';
58
- }
59
63
  willUpdate() {
60
- this._internals.ariaLabel = formatString(this._labelFormat, this._index + 1, this._total);
64
+ this._internals.setARIA({
65
+ ariaLabel: formatString(this._labelFormat, this._index + 1, this._total),
66
+ });
61
67
  }
62
68
  connectedCallback() {
63
69
  super.connectedCallback();
@@ -1 +1 @@
1
- {"version":3,"file":"carousel-slide.js","sourceRoot":"","sources":["../../../src/components/carousel/carousel-slide.ts"],"names":[],"mappings":"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","sourcesContent":["import { consume } from '@lit/context';\nimport { LitElement, html } from 'lit';\nimport { property } from 'lit/decorators.js';\n\nimport { EaseInOut } from '../../animations/easings.js';\nimport { addAnimationController } from '../../animations/player.js';\nimport { carouselContext } from '../common/context.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport { createCounter, formatString } from '../common/util.js';\nimport { animations } from './animations.js';\nimport type IgcCarouselComponent from './carousel.js';\nimport { styles } from './themes/carousel-slide.base.css.js';\n\n/**\n * A single content container within a set of containers used in the context of an `igc-carousel`.\n *\n * @element igc-carousel-slide\n *\n * @slot Default slot for the carousel slide.\n */\n\nexport default class IgcCarouselSlideComponent extends LitElement {\n public static override styles = styles;\n public static readonly tagName = 'igc-carousel-slide';\n\n /* blazorSuppress */\n public static register() {\n registerComponent(IgcCarouselSlideComponent);\n }\n\n private static readonly increment = createCounter();\n\n private _internals: ElementInternals;\n private _animationPlayer = addAnimationController(this);\n\n @consume({ context: carouselContext, subscribe: true })\n private _carousel?: IgcCarouselComponent;\n\n protected get _index() {\n return this._carousel ? this._carousel.slides.indexOf(this) : 0;\n }\n\n protected get _total() {\n return this._carousel ? this._carousel.slides.length : 0;\n }\n\n protected get _animation() {\n const animation = this._carousel?.animationType ?? 'slide';\n\n if (animation === 'slide') {\n return this._carousel?.vertical ? 'slideVer' : 'slideHor';\n }\n\n return animation;\n }\n\n protected get _labelFormat() {\n return this._carousel ? this._carousel.slidesLabelFormat : '';\n }\n\n /**\n * The current active slide for the carousel component.\n * @attr\n */\n @property({ type: Boolean, reflect: true })\n public active = false;\n\n /* blazorSuppress */\n @property({ type: Boolean, reflect: true })\n public previous = false;\n\n /**\n * @hidden @internal\n * @deprecated since 5.4.0. Use Carousel's `select` method instead.\n */\n public async toggleAnimation(\n type: 'in' | 'out',\n direction: 'normal' | 'reverse' = 'normal'\n ) {\n const animation = animations.get(this._animation)!.get(type)!;\n\n const options: KeyframeAnimationOptions = {\n duration: 320,\n easing: EaseInOut.Quad,\n direction,\n };\n\n const [_, event] = await Promise.all([\n this._animationPlayer.stopAll(),\n this._animationPlayer.play(animation(options)),\n ]);\n\n return event.type === 'finish';\n }\n\n constructor() {\n super();\n this._internals = this.attachInternals();\n\n this._internals.role = 'tabpanel';\n this._internals.ariaRoleDescription = 'slide';\n }\n\n protected override willUpdate(): void {\n this._internals.ariaLabel = formatString(\n this._labelFormat,\n this._index + 1,\n this._total\n );\n }\n\n public override connectedCallback(): void {\n super.connectedCallback();\n\n this.id =\n this.id || `igc-carousel-slide-${IgcCarouselSlideComponent.increment()}`;\n }\n\n protected override render() {\n return html` <slot></slot> `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-carousel-slide': IgcCarouselSlideComponent;\n }\n}\n"]}
1
+ {"version":3,"file":"carousel-slide.js","sourceRoot":"","sources":["../../../src/components/carousel/carousel-slide.ts"],"names":[],"mappings":"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","sourcesContent":["import { consume } from '@lit/context';\nimport { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { EaseInOut } from '../../animations/easings.js';\nimport { addAnimationController } from '../../animations/player.js';\nimport { carouselContext } from '../common/context.js';\nimport { addInternalsController } from '../common/controllers/internals.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport { createCounter, formatString } from '../common/util.js';\nimport { animations } from './animations.js';\nimport type IgcCarouselComponent from './carousel.js';\nimport { styles } from './themes/carousel-slide.base.css.js';\n\n/**\n * A single content container within a set of containers used in the context of an `igc-carousel`.\n *\n * @element igc-carousel-slide\n *\n * @slot Default slot for the carousel slide.\n */\nexport default class IgcCarouselSlideComponent extends LitElement {\n public static override styles = styles;\n public static readonly tagName = 'igc-carousel-slide';\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(IgcCarouselSlideComponent);\n }\n\n private static readonly increment = createCounter();\n\n private readonly _internals = addInternalsController(this, {\n initialARIA: {\n role: 'tabpanel',\n ariaRoleDescription: 'slide',\n },\n });\n\n private readonly _animationPlayer = addAnimationController(this);\n\n @consume({ context: carouselContext, subscribe: true })\n private _carousel?: IgcCarouselComponent;\n\n protected get _index() {\n return this._carousel ? this._carousel.slides.indexOf(this) : 0;\n }\n\n protected get _total() {\n return this._carousel ? this._carousel.slides.length : 0;\n }\n\n protected get _animation() {\n const animation = this._carousel?.animationType ?? 'slide';\n\n if (animation === 'slide') {\n return this._carousel?.vertical ? 'slideVer' : 'slideHor';\n }\n\n return animation;\n }\n\n protected get _labelFormat() {\n return this._carousel ? this._carousel.slidesLabelFormat : '';\n }\n\n /**\n * The current active slide for the carousel component.\n * @attr\n */\n @property({ type: Boolean, reflect: true })\n public active = false;\n\n /* blazorSuppress */\n @property({ type: Boolean, reflect: true })\n public previous = false;\n\n /**\n * @hidden @internal\n * @deprecated since 5.4.0. Use Carousel's `select` method instead.\n */\n public async toggleAnimation(\n type: 'in' | 'out',\n direction: 'normal' | 'reverse' = 'normal'\n ) {\n const animation = animations.get(this._animation)!.get(type)!;\n\n const options: KeyframeAnimationOptions = {\n duration: 320,\n easing: EaseInOut.Quad,\n direction,\n };\n\n const [_, event] = await Promise.all([\n this._animationPlayer.stopAll(),\n this._animationPlayer.play(animation(options)),\n ]);\n\n return event.type === 'finish';\n }\n\n protected override willUpdate(): void {\n this._internals.setARIA({\n ariaLabel: formatString(this._labelFormat, this._index + 1, this._total),\n });\n }\n\n public override connectedCallback(): void {\n super.connectedCallback();\n\n this.id =\n this.id || `igc-carousel-slide-${IgcCarouselSlideComponent.increment()}`;\n }\n\n protected override render() {\n return html` <slot></slot> `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-carousel-slide': IgcCarouselSlideComponent;\n }\n}\n"]}
@@ -34,17 +34,16 @@ export default class IgcCarouselComponent extends IgcCarouselComponent_base {
34
34
  static readonly tagName = "igc-carousel";
35
35
  static register(): void;
36
36
  private static readonly increment;
37
- private _carouselId;
38
- private _carouselKeyboardInteractionFocus;
39
- private _internals;
37
+ private readonly _carouselId;
40
38
  private _lastInterval;
41
39
  private _hasKeyboardInteractionOnIndicators;
42
40
  private _hasMouseStop;
41
+ private _hasInnerFocus;
43
42
  private _context;
44
- private _carouselSlidesContainerRef;
45
- private _indicatorsContainerRef;
46
- private _prevButtonRef;
47
- private _nextButtonRef;
43
+ private readonly _carouselSlidesContainerRef;
44
+ private readonly _indicatorsContainerRef;
45
+ private readonly _prevButtonRef;
46
+ private readonly _nextButtonRef;
48
47
  private get hasProjectedIndicators();
49
48
  private get showIndicatorsLabel();
50
49
  private get nextIndex();
@@ -141,7 +140,6 @@ export default class IgcCarouselComponent extends IgcCarouselComponent_base {
141
140
  constructor();
142
141
  private handleSlotChange;
143
142
  private handleIndicatorSlotChange;
144
- private handlePointerDown;
145
143
  private handlePointerEnter;
146
144
  private handlePointerLeave;
147
145
  private handleFocusIn;
@@ -6,24 +6,25 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  };
7
7
  var IgcCarouselComponent_1;
8
8
  import { ContextProvider } from '@lit/context';
9
- import { LitElement, html, nothing } from 'lit';
9
+ import { html, LitElement, nothing } from 'lit';
10
10
  import { property, queryAll, queryAssignedElements, state, } from 'lit/decorators.js';
11
11
  import { createRef, ref } from 'lit/directives/ref.js';
12
12
  import { styleMap } from 'lit/directives/style-map.js';
13
13
  import { themes } from '../../theming/theming-decorator.js';
14
14
  import IgcButtonComponent from '../button/button.js';
15
15
  import { carouselContext } from '../common/context.js';
16
- import { addKeyboardFocusRing } from '../common/controllers/focus-ring.js';
17
16
  import { addGesturesController, } from '../common/controllers/gestures.js';
17
+ import { addInternalsController } from '../common/controllers/internals.js';
18
18
  import { addKeybindings, arrowLeft, arrowRight, endKey, homeKey, } from '../common/controllers/key-bindings.js';
19
19
  import { createMutationController, } from '../common/controllers/mutation-observer.js';
20
20
  import { watch } from '../common/decorators/watch.js';
21
21
  import { registerComponent } from '../common/definitions/register.js';
22
22
  import { EventEmitterMixin } from '../common/mixins/event-emitter.js';
23
- import { asNumber, createCounter, findElementFromEventPath, first, formatString, isLTR, last, partNameMap, wrap, } from '../common/util.js';
23
+ import { partMap } from '../common/part-map.js';
24
+ import { addSafeEventListener, asNumber, createCounter, findElementFromEventPath, first, formatString, isLTR, last, wrap, } from '../common/util.js';
24
25
  import IgcIconComponent from '../icon/icon.js';
25
- import IgcCarouselIndicatorContainerComponent from './carousel-indicator-container.js';
26
26
  import IgcCarouselIndicatorComponent from './carousel-indicator.js';
27
+ import IgcCarouselIndicatorContainerComponent from './carousel-indicator-container.js';
27
28
  import IgcCarouselSlideComponent from './carousel-slide.js';
28
29
  import { styles } from './themes/carousel.base.css.js';
29
30
  import { all } from './themes/container.js';
@@ -49,7 +50,7 @@ let IgcCarouselComponent = IgcCarouselComponent_1 = class IgcCarouselComponent e
49
50
  if (activeSlides.length <= 1) {
50
51
  return;
51
52
  }
52
- const idx = this.slides.indexOf(added.length ? last(added).node : last(attributes));
53
+ const idx = this.slides.indexOf(added.length ? last(added).node : last(attributes).node);
53
54
  for (const [i, slide] of this.slides.entries()) {
54
55
  if (slide.active && i !== idx) {
55
56
  slide.active = false;
@@ -81,9 +82,9 @@ let IgcCarouselComponent = IgcCarouselComponent_1 = class IgcCarouselComponent e
81
82
  constructor() {
82
83
  super();
83
84
  this._carouselId = `igc-carousel-${IgcCarouselComponent_1.increment()}`;
84
- this._carouselKeyboardInteractionFocus = addKeyboardFocusRing(this);
85
85
  this._hasKeyboardInteractionOnIndicators = false;
86
86
  this._hasMouseStop = false;
87
+ this._hasInnerFocus = false;
87
88
  this._context = new ContextProvider(this, {
88
89
  context: carouselContext,
89
90
  initialValue: this,
@@ -104,12 +105,20 @@ let IgcCarouselComponent = IgcCarouselComponent_1 = class IgcCarouselComponent e
104
105
  this.slidesLabelFormat = '{0} of {1}';
105
106
  this.maximumIndicatorsCount = 10;
106
107
  this.animationType = 'slide';
107
- this._internals = this.attachInternals();
108
- this._internals.role = 'region';
109
- this._internals.ariaRoleDescription = 'carousel';
110
- this.addEventListener('pointerdown', this.handlePointerDown);
111
- this.addEventListener('pointerenter', this.handlePointerEnter);
112
- this.addEventListener('pointerleave', this.handlePointerLeave);
108
+ addInternalsController(this, {
109
+ initialARIA: {
110
+ role: 'region',
111
+ ariaRoleDescription: 'carousel',
112
+ },
113
+ });
114
+ addSafeEventListener(this, 'pointerenter', this.handlePointerEnter);
115
+ addSafeEventListener(this, 'pointerleave', this.handlePointerLeave);
116
+ addSafeEventListener(this, 'pointerdown', () => {
117
+ this._hasInnerFocus = false;
118
+ });
119
+ addSafeEventListener(this, 'keyup', () => {
120
+ this._hasInnerFocus = true;
121
+ });
113
122
  addGesturesController(this, {
114
123
  ref: this._carouselSlidesContainerRef,
115
124
  touchOnly: true,
@@ -152,27 +161,22 @@ let IgcCarouselComponent = IgcCarouselComponent_1 = class IgcCarouselComponent e
152
161
  handleIndicatorSlotChange() {
153
162
  this.requestUpdate();
154
163
  }
155
- handlePointerDown() {
156
- if (this._carouselKeyboardInteractionFocus.focused) {
157
- this._carouselKeyboardInteractionFocus.reset();
158
- }
159
- }
160
164
  handlePointerEnter() {
161
165
  this._hasMouseStop = true;
162
- if (this._carouselKeyboardInteractionFocus.focused) {
166
+ if (this._hasInnerFocus) {
163
167
  return;
164
168
  }
165
169
  this.handlePauseOnInteraction();
166
170
  }
167
171
  handlePointerLeave() {
168
172
  this._hasMouseStop = false;
169
- if (this._carouselKeyboardInteractionFocus.focused) {
173
+ if (this._hasInnerFocus) {
170
174
  return;
171
175
  }
172
176
  this.handlePauseOnInteraction();
173
177
  }
174
178
  handleFocusIn() {
175
- if (this._carouselKeyboardInteractionFocus.focused || this._hasMouseStop) {
179
+ if (this._hasInnerFocus || this._hasMouseStop) {
176
180
  return;
177
181
  }
178
182
  this.handlePauseOnInteraction();
@@ -182,8 +186,8 @@ let IgcCarouselComponent = IgcCarouselComponent_1 = class IgcCarouselComponent e
182
186
  if (this.contains(node) || this.renderRoot.contains(node)) {
183
187
  return;
184
188
  }
185
- if (this._carouselKeyboardInteractionFocus.focused) {
186
- this._carouselKeyboardInteractionFocus.reset();
189
+ if (this._hasInnerFocus) {
190
+ this._hasInnerFocus = false;
187
191
  if (!this._hasMouseStop) {
188
192
  this.handlePauseOnInteraction();
189
193
  }
@@ -422,13 +426,17 @@ let IgcCarouselComponent = IgcCarouselComponent_1 = class IgcCarouselComponent e
422
426
  }
423
427
  }
424
428
  indicatorTemplate() {
425
- const parts = partNameMap({
429
+ const parts = {
426
430
  indicators: true,
427
431
  start: this.indicatorsOrientation === 'start',
428
- });
432
+ };
429
433
  return html `
430
434
  <igc-carousel-indicator-container>
431
- <div ${ref(this._indicatorsContainerRef)} role="tablist" part=${parts}>
435
+ <div
436
+ ${ref(this._indicatorsContainerRef)}
437
+ role="tablist"
438
+ part=${partMap(parts)}
439
+ >
432
440
  <slot
433
441
  name="indicator"
434
442
  @slotchange=${this.handleIndicatorSlotChange}
@@ -443,14 +451,14 @@ let IgcCarouselComponent = IgcCarouselComponent_1 = class IgcCarouselComponent e
443
451
  `;
444
452
  }
445
453
  labelTemplate() {
446
- const parts = partNameMap({
454
+ const parts = {
447
455
  label: true,
448
456
  indicators: true,
449
457
  start: this.indicatorsOrientation === 'start',
450
- });
458
+ };
451
459
  const value = formatString(this.slidesLabelFormat, this.current + 1, this.total);
452
460
  return html `
453
- <div part=${parts}>
461
+ <div part=${partMap(parts)}>
454
462
  <span>${value}</span>
455
463
  </div>
456
464
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"carousel.js","sourceRoot":"","sources":["../../../src/components/carousel/carousel.ts"],"names":[],"mappings":"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","sourcesContent":["import { ContextProvider } from '@lit/context';\nimport { LitElement, html, nothing } from 'lit';\nimport {\n property,\n queryAll,\n queryAssignedElements,\n state,\n} from 'lit/decorators.js';\n\nimport { type Ref, createRef, ref } from 'lit/directives/ref.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { themes } from '../../theming/theming-decorator.js';\nimport IgcButtonComponent from '../button/button.js';\nimport { carouselContext } from '../common/context.js';\nimport { addKeyboardFocusRing } from '../common/controllers/focus-ring.js';\nimport {\n type SwipeEvent,\n addGesturesController,\n} from '../common/controllers/gestures.js';\nimport {\n addKeybindings,\n arrowLeft,\n arrowRight,\n endKey,\n homeKey,\n} from '../common/controllers/key-bindings.js';\nimport {\n type MutationControllerParams,\n createMutationController,\n} from '../common/controllers/mutation-observer.js';\nimport { watch } from '../common/decorators/watch.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport type { Constructor } from '../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../common/mixins/event-emitter.js';\nimport {\n asNumber,\n createCounter,\n findElementFromEventPath,\n first,\n formatString,\n isLTR,\n last,\n partNameMap,\n wrap,\n} from '../common/util.js';\nimport IgcIconComponent from '../icon/icon.js';\nimport type {\n CarouselIndicatorsOrientation,\n HorizontalTransitionAnimation,\n} from '../types.js';\nimport IgcCarouselIndicatorContainerComponent from './carousel-indicator-container.js';\nimport IgcCarouselIndicatorComponent from './carousel-indicator.js';\nimport IgcCarouselSlideComponent from './carousel-slide.js';\nimport { styles } from './themes/carousel.base.css.js';\nimport { all } from './themes/container.js';\nimport { styles as shared } from './themes/shared/carousel.common.css.js';\n\nexport interface IgcCarouselComponentEventMap {\n igcSlideChanged: CustomEvent<number>;\n igcPlaying: CustomEvent<void>;\n igcPaused: CustomEvent<void>;\n}\n\n/**\n * The `igc-carousel` presents a set of `igc-carousel-slide`s by sequentially displaying a subset of one or more slides.\n *\n * @element igc-carousel\n *\n * @slot Default slot for the carousel. Any projected `igc-carousel-slide` components should be projected here.\n * @slot previous-button - Renders content inside the previous button.\n * @slot next-button - Renders content inside the next button.\n *\n * @fires igcSlideChanged - Emitted when the current active slide is changed either by user interaction or by the interval callback.\n * @fires igcPlaying - Emitted when the carousel enters playing state by a user interaction.\n * @fires igcPaused - Emitted when the carousel enters paused state by a user interaction.\n *\n * @csspart navigation - The wrapper container of each carousel navigation button.\n * @csspart previous - The wrapper container of the carousel previous navigation button.\n * @csspart next - The wrapper container of the carousel next navigation button.\n * @csspart dot - The carousel dot indicator container.\n * @csspart active - The carousel active dot indicator container.\n * @csspart label - The label container of the carousel indicators.\n * @csspart start - The wrapping container of all carousel indicators when indicators-orientation is set to start.\n */\n\n@themes(all)\nexport default class IgcCarouselComponent extends EventEmitterMixin<\n IgcCarouselComponentEventMap,\n Constructor<LitElement>\n>(LitElement) {\n public static styles = [styles, shared];\n public static readonly tagName = 'igc-carousel';\n\n /* blazorSuppress */\n public static register() {\n registerComponent(\n IgcCarouselComponent,\n IgcCarouselIndicatorComponent,\n IgcCarouselIndicatorContainerComponent,\n IgcCarouselSlideComponent,\n IgcIconComponent,\n IgcButtonComponent\n );\n }\n\n private static readonly increment = createCounter();\n private _carouselId = `igc-carousel-${IgcCarouselComponent.increment()}`;\n private _carouselKeyboardInteractionFocus = addKeyboardFocusRing(this);\n\n private _internals: ElementInternals;\n private _lastInterval!: ReturnType<typeof setInterval> | null;\n private _hasKeyboardInteractionOnIndicators = false;\n private _hasMouseStop = false;\n\n private _context = new ContextProvider(this, {\n context: carouselContext,\n initialValue: this,\n });\n\n private _carouselSlidesContainerRef: Ref<HTMLDivElement> = createRef();\n private _indicatorsContainerRef: Ref<HTMLDivElement> = createRef();\n private _prevButtonRef: Ref<IgcButtonComponent> = createRef();\n private _nextButtonRef: Ref<IgcButtonComponent> = createRef();\n\n private get hasProjectedIndicators(): boolean {\n return this._projectedIndicators.length > 0;\n }\n\n private get showIndicatorsLabel(): boolean {\n return this.total > this.maximumIndicatorsCount;\n }\n\n private get nextIndex(): number {\n return wrap(0, this.total - 1, this.current + 1);\n }\n\n private get prevIndex(): number {\n return wrap(0, this.total - 1, this.current - 1);\n }\n\n @queryAll(IgcCarouselIndicatorComponent.tagName)\n private _defaultIndicators!: NodeListOf<IgcCarouselIndicatorComponent>;\n\n @queryAssignedElements({\n selector: IgcCarouselIndicatorComponent.tagName,\n slot: 'indicator',\n })\n private _projectedIndicators!: Array<IgcCarouselIndicatorComponent>;\n\n @state()\n private _activeSlide!: IgcCarouselSlideComponent;\n\n @state()\n private _playing = false;\n\n @state()\n private _paused = false;\n\n private _observerCallback({\n changes: { added, attributes },\n }: MutationControllerParams<IgcCarouselSlideComponent>) {\n const activeSlides = this.slides.filter((slide) => slide.active);\n\n if (activeSlides.length <= 1) {\n return;\n }\n const idx = this.slides.indexOf(\n added.length ? last(added).node : last(attributes)\n );\n\n for (const [i, slide] of this.slides.entries()) {\n if (slide.active && i !== idx) {\n slide.active = false;\n }\n }\n\n this.activateSlide(this.slides[idx]);\n }\n\n /**\n * Whether the carousel should skip rotating to the first slide after it reaches the last.\n * @attr disable-loop\n */\n @property({ type: Boolean, reflect: true, attribute: 'disable-loop' })\n public disableLoop = false;\n\n /**\n * Whether the carousel should ignore use interactions and not pause on them.\n * @attr disable-pause-on-interaction\n */\n @property({\n type: Boolean,\n reflect: true,\n attribute: 'disable-pause-on-interaction',\n })\n public disablePauseOnInteraction = false;\n\n /**\n * Whether the carousel should skip rendering of the default navigation buttons.\n * @attr hide-navigation\n */\n @property({ type: Boolean, reflect: true, attribute: 'hide-navigation' })\n public hideNavigation = false;\n\n /**\n * Whether the carousel should render the indicator controls (dots).\n * @attr hide-indicators\n */\n @property({ type: Boolean, reflect: true, attribute: 'hide-indicators' })\n public hideIndicators = false;\n\n /**\n * Whether the carousel has vertical alignment.\n * @attr vertical\n */\n @property({ type: Boolean, reflect: true })\n public vertical = false;\n\n /**\n * Sets the orientation of the indicator controls (dots).\n * @attr indicators-orientation\n */\n @property({ reflect: false, attribute: 'indicators-orientation' })\n public indicatorsOrientation: CarouselIndicatorsOrientation = 'end';\n\n /**\n * The format used to set the aria-label on the carousel indicators.\n * Instances of '{0}' will be replaced with the index of the corresponding slide.\n *\n * @attr indicators-label-format\n */\n @property({ attribute: 'indicators-label-format' })\n public indicatorsLabelFormat = 'Slide {0}';\n\n /**\n * The format used to set the aria-label on the carousel slides and the text displayed\n * when the number of indicators is greater than tha maximum indicator count.\n * Instances of '{0}' will be replaced with the index of the corresponding slide.\n * Instances of '{1}' will be replaced with the total amount of slides.\n *\n * @attr slides-label-format\n */\n @property({ attribute: 'slides-label-format' })\n public slidesLabelFormat = '{0} of {1}';\n\n /**\n * The duration in milliseconds between changing the active slide.\n * @attr interval\n */\n @property({ type: Number, reflect: false })\n public interval: number | undefined;\n\n /**\n * Controls the maximum indicator controls (dots) that can be shown. Default value is `10`.\n * @attr maximum-indicators-count\n */\n @property({\n type: Number,\n reflect: false,\n attribute: 'maximum-indicators-count',\n })\n public maximumIndicatorsCount = 10;\n\n /**\n * The animation type.\n * @attr animation-type\n */\n @property({ attribute: 'animation-type' })\n public animationType: HorizontalTransitionAnimation = 'slide';\n\n /* blazorSuppress */\n /**\n * The slides of the carousel.\n */\n @queryAssignedElements({ selector: IgcCarouselSlideComponent.tagName })\n public slides!: Array<IgcCarouselSlideComponent>;\n\n /**\n * The total number of slides.\n */\n public get total(): number {\n return this.slides.length;\n }\n\n /**\n * The index of the current active slide.\n */\n public get current(): number {\n return Math.max(0, this.slides.indexOf(this._activeSlide));\n }\n\n /**\n * Whether the carousel is in playing state.\n */\n public get isPlaying(): boolean {\n return this._playing;\n }\n\n /**\n * Whether the carousel in in paused state.\n */\n public get isPaused(): boolean {\n return this._paused;\n }\n\n @watch('animationType')\n @watch('slidesLabelFormat')\n @watch('indicatorsLabelFormat')\n protected contextChanged() {\n this._context.setValue(this, true);\n }\n\n @watch('interval')\n protected intervalChange() {\n if (!this.isPlaying) {\n this._playing = true;\n }\n\n this.restartInterval();\n }\n\n constructor() {\n super();\n this._internals = this.attachInternals();\n\n this._internals.role = 'region';\n this._internals.ariaRoleDescription = 'carousel';\n\n this.addEventListener('pointerdown', this.handlePointerDown);\n this.addEventListener('pointerenter', this.handlePointerEnter);\n this.addEventListener('pointerleave', this.handlePointerLeave);\n\n addGesturesController(this, {\n ref: this._carouselSlidesContainerRef,\n touchOnly: true,\n })\n .set('swipe-left', this.handleHorizontalSwipe)\n .set('swipe-right', this.handleHorizontalSwipe)\n .set('swipe-up', this.handleVerticalSwipe)\n .set('swipe-down', this.handleVerticalSwipe);\n\n addKeybindings(this, {\n ref: this._indicatorsContainerRef,\n bindingDefaults: { preventDefault: true },\n })\n .set(arrowLeft, this.handleArrowLeft)\n .set(arrowRight, this.handleArrowRight)\n .set(homeKey, this.handleHomeKey)\n .set(endKey, this.handleEndKey);\n\n addKeybindings(this, {\n ref: this._prevButtonRef,\n bindingDefaults: { preventDefault: true },\n }).setActivateHandler(this.handleNavigationInteractionPrevious);\n\n addKeybindings(this, {\n ref: this._nextButtonRef,\n bindingDefaults: { preventDefault: true },\n }).setActivateHandler(this.handleNavigationInteractionNext);\n\n createMutationController(this, {\n callback: this._observerCallback,\n filter: [IgcCarouselSlideComponent.tagName],\n config: {\n attributeFilter: ['active'],\n childList: true,\n subtree: true,\n },\n });\n }\n\n private handleSlotChange(): void {\n if (this.total) {\n this.activateSlide(\n this.slides.findLast((slide) => slide.active) ?? first(this.slides)\n );\n }\n }\n\n private handleIndicatorSlotChange(): void {\n this.requestUpdate();\n }\n\n private handlePointerDown(): void {\n if (this._carouselKeyboardInteractionFocus.focused) {\n this._carouselKeyboardInteractionFocus.reset();\n }\n }\n\n private handlePointerEnter(): void {\n this._hasMouseStop = true;\n if (this._carouselKeyboardInteractionFocus.focused) {\n return;\n }\n this.handlePauseOnInteraction();\n }\n\n private handlePointerLeave(): void {\n this._hasMouseStop = false;\n if (this._carouselKeyboardInteractionFocus.focused) {\n return;\n }\n this.handlePauseOnInteraction();\n }\n\n private handleFocusIn(): void {\n if (this._carouselKeyboardInteractionFocus.focused || this._hasMouseStop) {\n return;\n }\n this.handlePauseOnInteraction();\n }\n\n private handleFocusOut(event: FocusEvent): void {\n const node = event.relatedTarget as Node;\n\n if (this.contains(node) || this.renderRoot.contains(node)) {\n return;\n }\n\n if (this._carouselKeyboardInteractionFocus.focused) {\n this._carouselKeyboardInteractionFocus.reset();\n\n if (!this._hasMouseStop) {\n this.handlePauseOnInteraction();\n }\n }\n }\n\n private handlePauseOnInteraction(): void {\n if (!this.interval || this.disablePauseOnInteraction) return;\n\n if (this.isPlaying) {\n this.pause();\n this.emitEvent('igcPaused');\n } else {\n this.play();\n this.emitEvent('igcPlaying');\n }\n }\n\n private async handleArrowLeft(): Promise<void> {\n this._hasKeyboardInteractionOnIndicators = true;\n this.handleInteraction(isLTR(this) ? this.prev : this.next);\n }\n\n private async handleArrowRight(): Promise<void> {\n this._hasKeyboardInteractionOnIndicators = true;\n this.handleInteraction(isLTR(this) ? this.next : this.prev);\n }\n\n private async handleHomeKey(): Promise<void> {\n this._hasKeyboardInteractionOnIndicators = true;\n this.handleInteraction(() =>\n this.select(isLTR(this) ? first(this.slides) : last(this.slides))\n );\n }\n\n private async handleEndKey(): Promise<void> {\n this._hasKeyboardInteractionOnIndicators = true;\n this.handleInteraction(() =>\n this.select(isLTR(this) ? last(this.slides) : first(this.slides))\n );\n }\n\n private handleVerticalSwipe({ data: { direction } }: SwipeEvent) {\n if (this.vertical) {\n this.handleInteraction(direction === 'up' ? this.next : this.prev);\n }\n }\n\n private handleHorizontalSwipe({ data: { direction } }: SwipeEvent) {\n if (!this.vertical) {\n this.handleInteraction(async () => {\n if (isLTR(this)) {\n direction === 'left' ? await this.next() : await this.prev();\n } else {\n direction === 'left' ? await this.prev() : await this.next();\n }\n });\n }\n }\n\n private async handleIndicatorClick(event: PointerEvent): Promise<void> {\n const indicator = findElementFromEventPath<IgcCarouselIndicatorComponent>(\n IgcCarouselIndicatorComponent.tagName,\n event\n )!;\n\n const index = this.hasProjectedIndicators\n ? this._projectedIndicators.indexOf(indicator)\n : Array.from(this._defaultIndicators).indexOf(indicator);\n\n this.handleInteraction(() =>\n this.select(this.slides[index], index > this.current ? 'next' : 'prev')\n );\n }\n\n private handleNavigationInteractionNext() {\n this.handleInteraction(this.next);\n }\n\n private handleNavigationInteractionPrevious() {\n this.handleInteraction(this.prev);\n }\n\n private async handleInteraction(\n callback: () => Promise<unknown>\n ): Promise<void> {\n if (this.interval) {\n this.resetInterval();\n }\n\n await callback.call(this);\n this.emitEvent('igcSlideChanged', { detail: this.current });\n\n if (this.interval) {\n this.restartInterval();\n }\n }\n\n private activateSlide(slide: IgcCarouselSlideComponent): void {\n if (this._activeSlide) {\n this._activeSlide.active = false;\n }\n\n this._activeSlide = slide;\n this._activeSlide.active = true;\n\n if (this._hasKeyboardInteractionOnIndicators) {\n this.hasProjectedIndicators\n ? this._projectedIndicators[this.current].focus()\n : this._defaultIndicators[this.current].focus();\n\n this._hasKeyboardInteractionOnIndicators = false;\n }\n }\n\n private updateProjectedIndicators(): void {\n for (const [idx, slide] of this.slides.entries()) {\n const indicator = this._projectedIndicators[idx];\n indicator.active = slide.active;\n indicator.index = idx;\n\n this.setAttribute('aria-controls', slide.id);\n }\n }\n\n private resetInterval(): void {\n if (this._lastInterval) {\n clearInterval(this._lastInterval);\n this._lastInterval = null;\n }\n }\n\n private restartInterval(): void {\n this.resetInterval();\n\n if (asNumber(this.interval) > 0) {\n this._lastInterval = setInterval(() => {\n if (this.isPlaying && this.total) {\n this.next();\n this.emitEvent('igcSlideChanged', { detail: this.current });\n } else {\n this.pause();\n }\n }, this.interval);\n }\n }\n\n private async animateSlides(\n nextSlide: IgcCarouselSlideComponent,\n currentSlide: IgcCarouselSlideComponent,\n dir: 'next' | 'prev'\n ): Promise<void> {\n if (dir === 'next') {\n // Animate slides in next direction\n currentSlide.previous = true;\n currentSlide.toggleAnimation('out');\n this.activateSlide(nextSlide);\n await nextSlide.toggleAnimation('in');\n currentSlide.previous = false;\n } else {\n // Animate slides in previous direction\n currentSlide.previous = true;\n currentSlide.toggleAnimation('in', 'reverse');\n this.activateSlide(nextSlide);\n await nextSlide.toggleAnimation('out', 'reverse');\n currentSlide.previous = false;\n }\n }\n\n /**\n * Resumes playing of the carousel slides.\n */\n public play(): void {\n if (!this.isPlaying) {\n this._paused = false;\n this._playing = true;\n this.restartInterval();\n }\n }\n\n /**\n * Pauses the carousel rotation of slides.\n */\n public pause(): void {\n if (this.isPlaying) {\n this._playing = false;\n this._paused = true;\n this.resetInterval();\n }\n }\n\n /**\n * Switches to the next slide, runs any animations, and returns if the operation was successful.\n */\n public async next(): Promise<boolean> {\n if (this.disableLoop && this.nextIndex === 0) {\n this.pause();\n return false;\n }\n\n return await this.select(this.slides[this.nextIndex], 'next');\n }\n\n /**\n * Switches to the previous slide, runs any animations, and returns if the operation was successful.\n */\n public async prev(): Promise<boolean> {\n if (this.disableLoop && this.prevIndex === this.total - 1) {\n this.pause();\n return false;\n }\n\n return await this.select(this.slides[this.prevIndex], 'prev');\n }\n\n /* blazorSuppress */\n /**\n * Switches to the passed-in slide, runs any animations, and returns if the operation was successful.\n */\n public async select(\n slide: IgcCarouselSlideComponent,\n animationDirection?: 'next' | 'prev'\n ): Promise<boolean>;\n /**\n * Switches to slide by index, runs any animations, and returns if the operation was successful.\n */\n public async select(\n index: number,\n animationDirection?: 'next' | 'prev'\n ): Promise<boolean>;\n public async select(\n slideOrIndex: IgcCarouselSlideComponent | number,\n animationDirection?: 'next' | 'prev'\n ): Promise<boolean> {\n let index: number;\n let slide: IgcCarouselSlideComponent | undefined;\n\n if (typeof slideOrIndex === 'number') {\n index = slideOrIndex;\n slide = this.slides.at(index);\n } else {\n slide = slideOrIndex;\n index = this.slides.indexOf(slide);\n }\n\n if (index === this.current || index === -1 || !slide) {\n return false;\n }\n\n const dir = animationDirection ?? (index > this.current ? 'next' : 'prev');\n\n await this.animateSlides(slide, this._activeSlide, dir);\n return true;\n }\n\n private navigationTemplate() {\n return html`\n <igc-button\n ${ref(this._prevButtonRef)}\n type=\"button\"\n part=\"navigation previous\"\n aria-label=\"Previous slide\"\n aria-controls=${this._carouselId}\n ?disabled=${this.disableLoop && this.current === 0}\n @click=${this.handleNavigationInteractionPrevious}\n >\n <slot name=\"previous-button\">\n <igc-icon\n name=\"carousel_prev\"\n collection=\"default\"\n aria-hidden=\"true\"\n ></igc-icon>\n </slot>\n </igc-button>\n <igc-button\n ${ref(this._nextButtonRef)}\n type=\"button\"\n part=\"navigation next\"\n aria-label=\"Next slide\"\n aria-controls=${this._carouselId}\n ?disabled=${this.disableLoop && this.current === this.total - 1}\n @click=${this.handleNavigationInteractionNext}\n >\n <slot name=\"next-button\">\n <igc-icon\n name=\"carousel_next\"\n collection=\"default\"\n aria-hidden=\"true\"\n ></igc-icon>\n </slot>\n </igc-button>\n `;\n }\n\n protected *renderIndicators() {\n for (const [i, slide] of this.slides.entries()) {\n const forward = slide.active ? 'visible' : 'hidden';\n const backward = slide.active ? 'hidden' : 'visible';\n\n yield html`\n <igc-carousel-indicator\n exportparts=\"indicator, active, inactive\"\n .active=${slide.active}\n .index=${i}\n >\n <div\n part=\"dot\"\n style=${styleMap({ visibility: backward, zIndex: 1 })}\n ></div>\n <div\n part=\"dot active\"\n slot=\"active\"\n style=${styleMap({ visibility: forward })}\n ></div>\n </igc-carousel-indicator>\n `;\n }\n }\n\n private indicatorTemplate() {\n const parts = partNameMap({\n indicators: true,\n start: this.indicatorsOrientation === 'start',\n });\n\n return html`\n <igc-carousel-indicator-container>\n <div ${ref(this._indicatorsContainerRef)} role=\"tablist\" part=${parts}>\n <slot\n name=\"indicator\"\n @slotchange=${this.handleIndicatorSlotChange}\n @click=${this.handleIndicatorClick}\n >\n ${this.hasProjectedIndicators\n ? this.updateProjectedIndicators()\n : this.renderIndicators()}\n </slot>\n </div>\n </igc-carousel-indicator-container>\n `;\n }\n\n private labelTemplate() {\n const parts = partNameMap({\n label: true,\n indicators: true,\n start: this.indicatorsOrientation === 'start',\n });\n const value = formatString(\n this.slidesLabelFormat,\n this.current + 1,\n this.total\n );\n\n return html`\n <div part=${parts}>\n <span>${value}</span>\n </div>\n `;\n }\n\n protected override render() {\n return html`\n <section @focusin=${this.handleFocusIn} @focusout=${this.handleFocusOut}>\n ${this.hideNavigation ? nothing : this.navigationTemplate()}\n ${this.hideIndicators || this.showIndicatorsLabel\n ? nothing\n : this.indicatorTemplate()}\n ${!this.hideIndicators && this.showIndicatorsLabel\n ? this.labelTemplate()\n : nothing}\n <div\n ${ref(this._carouselSlidesContainerRef)}\n id=${this._carouselId}\n aria-live=${this.interval && this.isPlaying ? 'off' : 'polite'}\n >\n <slot @slotchange=${this.handleSlotChange}></slot>\n </div>\n </section>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-carousel': IgcCarouselComponent;\n }\n}\n"]}
1
+ {"version":3,"file":"carousel.js","sourceRoot":"","sources":["../../../src/components/carousel/carousel.ts"],"names":[],"mappings":"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","sourcesContent":["import { ContextProvider } from '@lit/context';\nimport { html, LitElement, nothing } from 'lit';\nimport {\n property,\n queryAll,\n queryAssignedElements,\n state,\n} from 'lit/decorators.js';\n\nimport { createRef, ref } from 'lit/directives/ref.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { themes } from '../../theming/theming-decorator.js';\nimport IgcButtonComponent from '../button/button.js';\nimport { carouselContext } from '../common/context.js';\nimport {\n addGesturesController,\n type SwipeEvent,\n} from '../common/controllers/gestures.js';\nimport { addInternalsController } from '../common/controllers/internals.js';\nimport {\n addKeybindings,\n arrowLeft,\n arrowRight,\n endKey,\n homeKey,\n} from '../common/controllers/key-bindings.js';\nimport {\n createMutationController,\n type MutationControllerParams,\n} from '../common/controllers/mutation-observer.js';\nimport { watch } from '../common/decorators/watch.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport type { Constructor } from '../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../common/mixins/event-emitter.js';\nimport { partMap } from '../common/part-map.js';\nimport {\n addSafeEventListener,\n asNumber,\n createCounter,\n findElementFromEventPath,\n first,\n formatString,\n isLTR,\n last,\n wrap,\n} from '../common/util.js';\nimport IgcIconComponent from '../icon/icon.js';\nimport type {\n CarouselIndicatorsOrientation,\n HorizontalTransitionAnimation,\n} from '../types.js';\nimport IgcCarouselIndicatorComponent from './carousel-indicator.js';\nimport IgcCarouselIndicatorContainerComponent from './carousel-indicator-container.js';\nimport IgcCarouselSlideComponent from './carousel-slide.js';\nimport { styles } from './themes/carousel.base.css.js';\nimport { all } from './themes/container.js';\nimport { styles as shared } from './themes/shared/carousel.common.css.js';\n\nexport interface IgcCarouselComponentEventMap {\n igcSlideChanged: CustomEvent<number>;\n igcPlaying: CustomEvent<void>;\n igcPaused: CustomEvent<void>;\n}\n\n/**\n * The `igc-carousel` presents a set of `igc-carousel-slide`s by sequentially displaying a subset of one or more slides.\n *\n * @element igc-carousel\n *\n * @slot Default slot for the carousel. Any projected `igc-carousel-slide` components should be projected here.\n * @slot previous-button - Renders content inside the previous button.\n * @slot next-button - Renders content inside the next button.\n *\n * @fires igcSlideChanged - Emitted when the current active slide is changed either by user interaction or by the interval callback.\n * @fires igcPlaying - Emitted when the carousel enters playing state by a user interaction.\n * @fires igcPaused - Emitted when the carousel enters paused state by a user interaction.\n *\n * @csspart navigation - The wrapper container of each carousel navigation button.\n * @csspart previous - The wrapper container of the carousel previous navigation button.\n * @csspart next - The wrapper container of the carousel next navigation button.\n * @csspart dot - The carousel dot indicator container.\n * @csspart active - The carousel active dot indicator container.\n * @csspart label - The label container of the carousel indicators.\n * @csspart start - The wrapping container of all carousel indicators when indicators-orientation is set to start.\n */\n\n@themes(all)\nexport default class IgcCarouselComponent extends EventEmitterMixin<\n IgcCarouselComponentEventMap,\n Constructor<LitElement>\n>(LitElement) {\n public static styles = [styles, shared];\n public static readonly tagName = 'igc-carousel';\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(\n IgcCarouselComponent,\n IgcCarouselIndicatorComponent,\n IgcCarouselIndicatorContainerComponent,\n IgcCarouselSlideComponent,\n IgcIconComponent,\n IgcButtonComponent\n );\n }\n\n private static readonly increment = createCounter();\n private readonly _carouselId = `igc-carousel-${IgcCarouselComponent.increment()}`;\n\n private _lastInterval!: ReturnType<typeof setInterval> | null;\n private _hasKeyboardInteractionOnIndicators = false;\n private _hasMouseStop = false;\n private _hasInnerFocus = false;\n\n private _context = new ContextProvider(this, {\n context: carouselContext,\n initialValue: this,\n });\n\n private readonly _carouselSlidesContainerRef = createRef<HTMLDivElement>();\n private readonly _indicatorsContainerRef = createRef<HTMLDivElement>();\n private readonly _prevButtonRef = createRef<IgcButtonComponent>();\n private readonly _nextButtonRef = createRef<IgcButtonComponent>();\n\n private get hasProjectedIndicators(): boolean {\n return this._projectedIndicators.length > 0;\n }\n\n private get showIndicatorsLabel(): boolean {\n return this.total > this.maximumIndicatorsCount;\n }\n\n private get nextIndex(): number {\n return wrap(0, this.total - 1, this.current + 1);\n }\n\n private get prevIndex(): number {\n return wrap(0, this.total - 1, this.current - 1);\n }\n\n @queryAll(IgcCarouselIndicatorComponent.tagName)\n private _defaultIndicators!: NodeListOf<IgcCarouselIndicatorComponent>;\n\n @queryAssignedElements({\n selector: IgcCarouselIndicatorComponent.tagName,\n slot: 'indicator',\n })\n private _projectedIndicators!: Array<IgcCarouselIndicatorComponent>;\n\n @state()\n private _activeSlide!: IgcCarouselSlideComponent;\n\n @state()\n private _playing = false;\n\n @state()\n private _paused = false;\n\n private _observerCallback({\n changes: { added, attributes },\n }: MutationControllerParams<IgcCarouselSlideComponent>) {\n const activeSlides = this.slides.filter((slide) => slide.active);\n\n if (activeSlides.length <= 1) {\n return;\n }\n const idx = this.slides.indexOf(\n added.length ? last(added).node : last(attributes).node\n );\n\n for (const [i, slide] of this.slides.entries()) {\n if (slide.active && i !== idx) {\n slide.active = false;\n }\n }\n\n this.activateSlide(this.slides[idx]);\n }\n\n /**\n * Whether the carousel should skip rotating to the first slide after it reaches the last.\n * @attr disable-loop\n */\n @property({ type: Boolean, reflect: true, attribute: 'disable-loop' })\n public disableLoop = false;\n\n /**\n * Whether the carousel should ignore use interactions and not pause on them.\n * @attr disable-pause-on-interaction\n */\n @property({\n type: Boolean,\n reflect: true,\n attribute: 'disable-pause-on-interaction',\n })\n public disablePauseOnInteraction = false;\n\n /**\n * Whether the carousel should skip rendering of the default navigation buttons.\n * @attr hide-navigation\n */\n @property({ type: Boolean, reflect: true, attribute: 'hide-navigation' })\n public hideNavigation = false;\n\n /**\n * Whether the carousel should render the indicator controls (dots).\n * @attr hide-indicators\n */\n @property({ type: Boolean, reflect: true, attribute: 'hide-indicators' })\n public hideIndicators = false;\n\n /**\n * Whether the carousel has vertical alignment.\n * @attr vertical\n */\n @property({ type: Boolean, reflect: true })\n public vertical = false;\n\n /**\n * Sets the orientation of the indicator controls (dots).\n * @attr indicators-orientation\n */\n @property({ reflect: false, attribute: 'indicators-orientation' })\n public indicatorsOrientation: CarouselIndicatorsOrientation = 'end';\n\n /**\n * The format used to set the aria-label on the carousel indicators.\n * Instances of '{0}' will be replaced with the index of the corresponding slide.\n *\n * @attr indicators-label-format\n */\n @property({ attribute: 'indicators-label-format' })\n public indicatorsLabelFormat = 'Slide {0}';\n\n /**\n * The format used to set the aria-label on the carousel slides and the text displayed\n * when the number of indicators is greater than tha maximum indicator count.\n * Instances of '{0}' will be replaced with the index of the corresponding slide.\n * Instances of '{1}' will be replaced with the total amount of slides.\n *\n * @attr slides-label-format\n */\n @property({ attribute: 'slides-label-format' })\n public slidesLabelFormat = '{0} of {1}';\n\n /**\n * The duration in milliseconds between changing the active slide.\n * @attr interval\n */\n @property({ type: Number, reflect: false })\n public interval: number | undefined;\n\n /**\n * Controls the maximum indicator controls (dots) that can be shown. Default value is `10`.\n * @attr maximum-indicators-count\n */\n @property({\n type: Number,\n reflect: false,\n attribute: 'maximum-indicators-count',\n })\n public maximumIndicatorsCount = 10;\n\n /**\n * The animation type.\n * @attr animation-type\n */\n @property({ attribute: 'animation-type' })\n public animationType: HorizontalTransitionAnimation = 'slide';\n\n /* blazorSuppress */\n /**\n * The slides of the carousel.\n */\n @queryAssignedElements({ selector: IgcCarouselSlideComponent.tagName })\n public slides!: Array<IgcCarouselSlideComponent>;\n\n /**\n * The total number of slides.\n */\n public get total(): number {\n return this.slides.length;\n }\n\n /**\n * The index of the current active slide.\n */\n public get current(): number {\n return Math.max(0, this.slides.indexOf(this._activeSlide));\n }\n\n /**\n * Whether the carousel is in playing state.\n */\n public get isPlaying(): boolean {\n return this._playing;\n }\n\n /**\n * Whether the carousel in in paused state.\n */\n public get isPaused(): boolean {\n return this._paused;\n }\n\n @watch('animationType')\n @watch('slidesLabelFormat')\n @watch('indicatorsLabelFormat')\n protected contextChanged() {\n this._context.setValue(this, true);\n }\n\n @watch('interval')\n protected intervalChange() {\n if (!this.isPlaying) {\n this._playing = true;\n }\n\n this.restartInterval();\n }\n\n constructor() {\n super();\n\n addInternalsController(this, {\n initialARIA: {\n role: 'region',\n ariaRoleDescription: 'carousel',\n },\n });\n\n addSafeEventListener(this, 'pointerenter', this.handlePointerEnter);\n addSafeEventListener(this, 'pointerleave', this.handlePointerLeave);\n addSafeEventListener(this, 'pointerdown', () => {\n this._hasInnerFocus = false;\n });\n addSafeEventListener(this, 'keyup', () => {\n this._hasInnerFocus = true;\n });\n\n addGesturesController(this, {\n ref: this._carouselSlidesContainerRef,\n touchOnly: true,\n })\n .set('swipe-left', this.handleHorizontalSwipe)\n .set('swipe-right', this.handleHorizontalSwipe)\n .set('swipe-up', this.handleVerticalSwipe)\n .set('swipe-down', this.handleVerticalSwipe);\n\n addKeybindings(this, {\n ref: this._indicatorsContainerRef,\n bindingDefaults: { preventDefault: true },\n })\n .set(arrowLeft, this.handleArrowLeft)\n .set(arrowRight, this.handleArrowRight)\n .set(homeKey, this.handleHomeKey)\n .set(endKey, this.handleEndKey);\n\n addKeybindings(this, {\n ref: this._prevButtonRef,\n bindingDefaults: { preventDefault: true },\n }).setActivateHandler(this.handleNavigationInteractionPrevious);\n\n addKeybindings(this, {\n ref: this._nextButtonRef,\n bindingDefaults: { preventDefault: true },\n }).setActivateHandler(this.handleNavigationInteractionNext);\n\n createMutationController(this, {\n callback: this._observerCallback,\n filter: [IgcCarouselSlideComponent.tagName],\n config: {\n attributeFilter: ['active'],\n childList: true,\n subtree: true,\n },\n });\n }\n\n private handleSlotChange(): void {\n if (this.total) {\n this.activateSlide(\n this.slides.findLast((slide) => slide.active) ?? first(this.slides)\n );\n }\n }\n\n private handleIndicatorSlotChange(): void {\n this.requestUpdate();\n }\n\n private handlePointerEnter(): void {\n this._hasMouseStop = true;\n if (this._hasInnerFocus) {\n return;\n }\n this.handlePauseOnInteraction();\n }\n\n private handlePointerLeave(): void {\n this._hasMouseStop = false;\n if (this._hasInnerFocus) {\n return;\n }\n this.handlePauseOnInteraction();\n }\n\n private handleFocusIn(): void {\n if (this._hasInnerFocus || this._hasMouseStop) {\n return;\n }\n this.handlePauseOnInteraction();\n }\n\n private handleFocusOut(event: FocusEvent): void {\n const node = event.relatedTarget as Node;\n\n if (this.contains(node) || this.renderRoot.contains(node)) {\n return;\n }\n\n if (this._hasInnerFocus) {\n this._hasInnerFocus = false;\n\n if (!this._hasMouseStop) {\n this.handlePauseOnInteraction();\n }\n }\n }\n\n private handlePauseOnInteraction(): void {\n if (!this.interval || this.disablePauseOnInteraction) return;\n\n if (this.isPlaying) {\n this.pause();\n this.emitEvent('igcPaused');\n } else {\n this.play();\n this.emitEvent('igcPlaying');\n }\n }\n\n private async handleArrowLeft(): Promise<void> {\n this._hasKeyboardInteractionOnIndicators = true;\n this.handleInteraction(isLTR(this) ? this.prev : this.next);\n }\n\n private async handleArrowRight(): Promise<void> {\n this._hasKeyboardInteractionOnIndicators = true;\n this.handleInteraction(isLTR(this) ? this.next : this.prev);\n }\n\n private async handleHomeKey(): Promise<void> {\n this._hasKeyboardInteractionOnIndicators = true;\n this.handleInteraction(() =>\n this.select(isLTR(this) ? first(this.slides) : last(this.slides))\n );\n }\n\n private async handleEndKey(): Promise<void> {\n this._hasKeyboardInteractionOnIndicators = true;\n this.handleInteraction(() =>\n this.select(isLTR(this) ? last(this.slides) : first(this.slides))\n );\n }\n\n private handleVerticalSwipe({ data: { direction } }: SwipeEvent) {\n if (this.vertical) {\n this.handleInteraction(direction === 'up' ? this.next : this.prev);\n }\n }\n\n private handleHorizontalSwipe({ data: { direction } }: SwipeEvent) {\n if (!this.vertical) {\n this.handleInteraction(async () => {\n if (isLTR(this)) {\n direction === 'left' ? await this.next() : await this.prev();\n } else {\n direction === 'left' ? await this.prev() : await this.next();\n }\n });\n }\n }\n\n private async handleIndicatorClick(event: PointerEvent): Promise<void> {\n const indicator = findElementFromEventPath<IgcCarouselIndicatorComponent>(\n IgcCarouselIndicatorComponent.tagName,\n event\n )!;\n\n const index = this.hasProjectedIndicators\n ? this._projectedIndicators.indexOf(indicator)\n : Array.from(this._defaultIndicators).indexOf(indicator);\n\n this.handleInteraction(() =>\n this.select(this.slides[index], index > this.current ? 'next' : 'prev')\n );\n }\n\n private handleNavigationInteractionNext() {\n this.handleInteraction(this.next);\n }\n\n private handleNavigationInteractionPrevious() {\n this.handleInteraction(this.prev);\n }\n\n private async handleInteraction(\n callback: () => Promise<unknown>\n ): Promise<void> {\n if (this.interval) {\n this.resetInterval();\n }\n\n await callback.call(this);\n this.emitEvent('igcSlideChanged', { detail: this.current });\n\n if (this.interval) {\n this.restartInterval();\n }\n }\n\n private activateSlide(slide: IgcCarouselSlideComponent): void {\n if (this._activeSlide) {\n this._activeSlide.active = false;\n }\n\n this._activeSlide = slide;\n this._activeSlide.active = true;\n\n if (this._hasKeyboardInteractionOnIndicators) {\n this.hasProjectedIndicators\n ? this._projectedIndicators[this.current].focus()\n : this._defaultIndicators[this.current].focus();\n\n this._hasKeyboardInteractionOnIndicators = false;\n }\n }\n\n private updateProjectedIndicators(): void {\n for (const [idx, slide] of this.slides.entries()) {\n const indicator = this._projectedIndicators[idx];\n indicator.active = slide.active;\n indicator.index = idx;\n\n this.setAttribute('aria-controls', slide.id);\n }\n }\n\n private resetInterval(): void {\n if (this._lastInterval) {\n clearInterval(this._lastInterval);\n this._lastInterval = null;\n }\n }\n\n private restartInterval(): void {\n this.resetInterval();\n\n if (asNumber(this.interval) > 0) {\n this._lastInterval = setInterval(() => {\n if (this.isPlaying && this.total) {\n this.next();\n this.emitEvent('igcSlideChanged', { detail: this.current });\n } else {\n this.pause();\n }\n }, this.interval);\n }\n }\n\n private async animateSlides(\n nextSlide: IgcCarouselSlideComponent,\n currentSlide: IgcCarouselSlideComponent,\n dir: 'next' | 'prev'\n ): Promise<void> {\n if (dir === 'next') {\n // Animate slides in next direction\n currentSlide.previous = true;\n currentSlide.toggleAnimation('out');\n this.activateSlide(nextSlide);\n await nextSlide.toggleAnimation('in');\n currentSlide.previous = false;\n } else {\n // Animate slides in previous direction\n currentSlide.previous = true;\n currentSlide.toggleAnimation('in', 'reverse');\n this.activateSlide(nextSlide);\n await nextSlide.toggleAnimation('out', 'reverse');\n currentSlide.previous = false;\n }\n }\n\n /**\n * Resumes playing of the carousel slides.\n */\n public play(): void {\n if (!this.isPlaying) {\n this._paused = false;\n this._playing = true;\n this.restartInterval();\n }\n }\n\n /**\n * Pauses the carousel rotation of slides.\n */\n public pause(): void {\n if (this.isPlaying) {\n this._playing = false;\n this._paused = true;\n this.resetInterval();\n }\n }\n\n /**\n * Switches to the next slide, runs any animations, and returns if the operation was successful.\n */\n public async next(): Promise<boolean> {\n if (this.disableLoop && this.nextIndex === 0) {\n this.pause();\n return false;\n }\n\n return await this.select(this.slides[this.nextIndex], 'next');\n }\n\n /**\n * Switches to the previous slide, runs any animations, and returns if the operation was successful.\n */\n public async prev(): Promise<boolean> {\n if (this.disableLoop && this.prevIndex === this.total - 1) {\n this.pause();\n return false;\n }\n\n return await this.select(this.slides[this.prevIndex], 'prev');\n }\n\n /* blazorSuppress */\n /**\n * Switches to the passed-in slide, runs any animations, and returns if the operation was successful.\n */\n public async select(\n slide: IgcCarouselSlideComponent,\n animationDirection?: 'next' | 'prev'\n ): Promise<boolean>;\n /**\n * Switches to slide by index, runs any animations, and returns if the operation was successful.\n */\n public async select(\n index: number,\n animationDirection?: 'next' | 'prev'\n ): Promise<boolean>;\n public async select(\n slideOrIndex: IgcCarouselSlideComponent | number,\n animationDirection?: 'next' | 'prev'\n ): Promise<boolean> {\n let index: number;\n let slide: IgcCarouselSlideComponent | undefined;\n\n if (typeof slideOrIndex === 'number') {\n index = slideOrIndex;\n slide = this.slides.at(index);\n } else {\n slide = slideOrIndex;\n index = this.slides.indexOf(slide);\n }\n\n if (index === this.current || index === -1 || !slide) {\n return false;\n }\n\n const dir = animationDirection ?? (index > this.current ? 'next' : 'prev');\n\n await this.animateSlides(slide, this._activeSlide, dir);\n return true;\n }\n\n private navigationTemplate() {\n return html`\n <igc-button\n ${ref(this._prevButtonRef)}\n type=\"button\"\n part=\"navigation previous\"\n aria-label=\"Previous slide\"\n aria-controls=${this._carouselId}\n ?disabled=${this.disableLoop && this.current === 0}\n @click=${this.handleNavigationInteractionPrevious}\n >\n <slot name=\"previous-button\">\n <igc-icon\n name=\"carousel_prev\"\n collection=\"default\"\n aria-hidden=\"true\"\n ></igc-icon>\n </slot>\n </igc-button>\n <igc-button\n ${ref(this._nextButtonRef)}\n type=\"button\"\n part=\"navigation next\"\n aria-label=\"Next slide\"\n aria-controls=${this._carouselId}\n ?disabled=${this.disableLoop && this.current === this.total - 1}\n @click=${this.handleNavigationInteractionNext}\n >\n <slot name=\"next-button\">\n <igc-icon\n name=\"carousel_next\"\n collection=\"default\"\n aria-hidden=\"true\"\n ></igc-icon>\n </slot>\n </igc-button>\n `;\n }\n\n protected *renderIndicators() {\n for (const [i, slide] of this.slides.entries()) {\n const forward = slide.active ? 'visible' : 'hidden';\n const backward = slide.active ? 'hidden' : 'visible';\n\n yield html`\n <igc-carousel-indicator\n exportparts=\"indicator, active, inactive\"\n .active=${slide.active}\n .index=${i}\n >\n <div\n part=\"dot\"\n style=${styleMap({ visibility: backward, zIndex: 1 })}\n ></div>\n <div\n part=\"dot active\"\n slot=\"active\"\n style=${styleMap({ visibility: forward })}\n ></div>\n </igc-carousel-indicator>\n `;\n }\n }\n\n private indicatorTemplate() {\n const parts = {\n indicators: true,\n start: this.indicatorsOrientation === 'start',\n };\n\n return html`\n <igc-carousel-indicator-container>\n <div\n ${ref(this._indicatorsContainerRef)}\n role=\"tablist\"\n part=${partMap(parts)}\n >\n <slot\n name=\"indicator\"\n @slotchange=${this.handleIndicatorSlotChange}\n @click=${this.handleIndicatorClick}\n >\n ${this.hasProjectedIndicators\n ? this.updateProjectedIndicators()\n : this.renderIndicators()}\n </slot>\n </div>\n </igc-carousel-indicator-container>\n `;\n }\n\n private labelTemplate() {\n const parts = {\n label: true,\n indicators: true,\n start: this.indicatorsOrientation === 'start',\n };\n const value = formatString(\n this.slidesLabelFormat,\n this.current + 1,\n this.total\n );\n\n return html`\n <div part=${partMap(parts)}>\n <span>${value}</span>\n </div>\n `;\n }\n\n protected override render() {\n return html`\n <section @focusin=${this.handleFocusIn} @focusout=${this.handleFocusOut}>\n ${this.hideNavigation ? nothing : this.navigationTemplate()}\n ${this.hideIndicators || this.showIndicatorsLabel\n ? nothing\n : this.indicatorTemplate()}\n ${!this.hideIndicators && this.showIndicatorsLabel\n ? this.labelTemplate()\n : nothing}\n <div\n ${ref(this._carouselSlidesContainerRef)}\n id=${this._carouselId}\n aria-live=${this.interval && this.isPlaying ? 'off' : 'polite'}\n >\n <slot @slotchange=${this.handleSlotChange}></slot>\n </div>\n </section>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-carousel': IgcCarouselComponent;\n }\n}\n"]}