igniteui-webcomponents 4.3.0 → 4.4.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 (702) hide show
  1. package/CHANGELOG.md +69 -0
  2. package/animations/presets/fade/index.d.ts +2 -2
  3. package/animations/presets/fade/index.js +4 -6
  4. package/animations/presets/fade/index.js.map +1 -1
  5. package/animations/presets/grow/index.d.ts +2 -2
  6. package/animations/presets/grow/index.js +8 -10
  7. package/animations/presets/grow/index.js.map +1 -1
  8. package/animations/presets/index.d.ts +1 -0
  9. package/animations/presets/index.js +1 -0
  10. package/animations/presets/index.js.map +1 -1
  11. package/animations/presets/slide/index.d.ts +3 -0
  12. package/animations/presets/slide/index.js +16 -0
  13. package/animations/presets/slide/index.js.map +1 -0
  14. package/components/accordion/themes/accordion.base.css.js +1 -4
  15. package/components/accordion/themes/accordion.base.css.js.map +1 -1
  16. package/components/avatar/avatar.js +5 -2
  17. package/components/avatar/avatar.js.map +1 -1
  18. package/components/avatar/themes/avatar.base.css.js +97 -0
  19. package/components/avatar/themes/avatar.base.css.js.map +1 -0
  20. package/components/avatar/themes/dark/avatar.bootstrap.css.js +3 -0
  21. package/components/avatar/themes/dark/avatar.bootstrap.css.js.map +1 -0
  22. package/components/avatar/themes/dark/avatar.fluent.css.js +3 -0
  23. package/components/avatar/themes/dark/avatar.fluent.css.js.map +1 -0
  24. package/components/avatar/themes/dark/avatar.indigo.css.js +3 -0
  25. package/components/avatar/themes/dark/avatar.indigo.css.js.map +1 -0
  26. package/components/avatar/themes/dark/avatar.material.css.js +3 -0
  27. package/components/avatar/themes/dark/avatar.material.css.js.map +1 -0
  28. package/components/avatar/themes/light/avatar.bootstrap.css.js +19 -18
  29. package/components/avatar/themes/light/avatar.bootstrap.css.js.map +1 -1
  30. package/components/avatar/themes/light/avatar.fluent.css.js +27 -0
  31. package/components/avatar/themes/light/avatar.fluent.css.js.map +1 -0
  32. package/components/avatar/themes/light/avatar.indigo.css.js +27 -0
  33. package/components/avatar/themes/light/avatar.indigo.css.js.map +1 -0
  34. package/components/avatar/themes/light/avatar.material.css.js +27 -0
  35. package/components/avatar/themes/light/avatar.material.css.js.map +1 -0
  36. package/components/badge/themes/light/badge.base.css.js +1 -2
  37. package/components/badge/themes/light/badge.base.css.js.map +1 -1
  38. package/components/badge/themes/light/badge.bootstrap.css.js +1 -2
  39. package/components/badge/themes/light/badge.bootstrap.css.js.map +1 -1
  40. package/components/button/button-base.d.ts +14 -6
  41. package/components/button/button-base.js +51 -18
  42. package/components/button/button-base.js.map +1 -1
  43. package/components/button/themes/button/dark/button.bootstrap.css.js +1 -13
  44. package/components/button/themes/button/dark/button.bootstrap.css.js.map +1 -1
  45. package/components/button/themes/button/dark/button.fluent.css.js +1 -13
  46. package/components/button/themes/button/dark/button.fluent.css.js.map +1 -1
  47. package/components/button/themes/button/dark/button.indigo.css.js +1 -13
  48. package/components/button/themes/button/dark/button.indigo.css.js.map +1 -1
  49. package/components/button/themes/button/dark/button.material.css.js +1 -13
  50. package/components/button/themes/button/dark/button.material.css.js.map +1 -1
  51. package/components/button/themes/button/light/button.base.css.js +5 -6
  52. package/components/button/themes/button/light/button.base.css.js.map +1 -1
  53. package/components/button/themes/button/light/button.bootstrap.css.js +80 -62
  54. package/components/button/themes/button/light/button.bootstrap.css.js.map +1 -1
  55. package/components/button/themes/button/light/button.fluent.css.js +97 -72
  56. package/components/button/themes/button/light/button.fluent.css.js.map +1 -1
  57. package/components/button/themes/button/light/button.indigo.css.js +100 -73
  58. package/components/button/themes/button/light/button.indigo.css.js.map +1 -1
  59. package/components/button/themes/button/light/button.material.css.js +103 -69
  60. package/components/button/themes/button/light/button.material.css.js.map +1 -1
  61. package/components/button/themes/icon-button/dark/icon-button.fluent.css.js +1 -1
  62. package/components/button/themes/icon-button/dark/icon-button.fluent.css.js.map +1 -1
  63. package/components/button/themes/icon-button/light/icon-button.base.css.js +3 -6
  64. package/components/button/themes/icon-button/light/icon-button.base.css.js.map +1 -1
  65. package/components/button/themes/icon-button/light/icon-button.bootstrap.css.js +42 -11
  66. package/components/button/themes/icon-button/light/icon-button.bootstrap.css.js.map +1 -1
  67. package/components/button/themes/icon-button/light/icon-button.fluent.css.js +44 -24
  68. package/components/button/themes/icon-button/light/icon-button.fluent.css.js.map +1 -1
  69. package/components/button/themes/icon-button/light/icon-button.indigo.css.js +36 -7
  70. package/components/button/themes/icon-button/light/icon-button.indigo.css.js.map +1 -1
  71. package/components/button/themes/icon-button/light/icon-button.material.css.js +37 -7
  72. package/components/button/themes/icon-button/light/icon-button.material.css.js.map +1 -1
  73. package/components/calendar/calendar.d.ts +2 -5
  74. package/components/calendar/calendar.js +31 -35
  75. package/components/calendar/calendar.js.map +1 -1
  76. package/components/calendar/days-view/days-view.js +6 -6
  77. package/components/calendar/days-view/days-view.js.map +1 -1
  78. package/components/calendar/themes/bootstrap/calendar.bootstrap.css.js +60 -6
  79. package/components/calendar/themes/bootstrap/calendar.bootstrap.css.js.map +1 -1
  80. package/components/calendar/themes/bootstrap/days-view.bootstrap.css.js +53 -3
  81. package/components/calendar/themes/bootstrap/days-view.bootstrap.css.js.map +1 -1
  82. package/components/calendar/themes/bootstrap/year-month-view.bootstrap.css.js +50 -3
  83. package/components/calendar/themes/bootstrap/year-month-view.bootstrap.css.js.map +1 -1
  84. package/components/calendar/themes/calendar.base.css.js +66 -6
  85. package/components/calendar/themes/calendar.base.css.js.map +1 -1
  86. package/components/calendar/themes/days-view.base.css.js +6 -8
  87. package/components/calendar/themes/days-view.base.css.js.map +1 -1
  88. package/components/calendar/themes/fluent/calendar.fluent.css.js +123 -9
  89. package/components/calendar/themes/fluent/calendar.fluent.css.js.map +1 -1
  90. package/components/calendar/themes/fluent/days-view.fluent.css.js +2 -3
  91. package/components/calendar/themes/fluent/days-view.fluent.css.js.map +1 -1
  92. package/components/calendar/themes/fluent/year-month-view.fluent.css.js +1 -2
  93. package/components/calendar/themes/fluent/year-month-view.fluent.css.js.map +1 -1
  94. package/components/calendar/themes/indigo/calendar.indigo.css.js +67 -0
  95. package/components/calendar/themes/indigo/calendar.indigo.css.js.map +1 -0
  96. package/components/calendar/themes/year-month-view.base.css.js +1 -2
  97. package/components/calendar/themes/year-month-view.base.css.js.map +1 -1
  98. package/components/card/card.js +2 -0
  99. package/components/card/card.js.map +1 -1
  100. package/components/card/themes/light/card.actions.bootstrap.css.js +1 -2
  101. package/components/card/themes/light/card.actions.bootstrap.css.js.map +1 -1
  102. package/components/card/themes/light/card.actions.material.css.js +1 -2
  103. package/components/card/themes/light/card.actions.material.css.js.map +1 -1
  104. package/components/card/themes/light/card.bootstrap.css.js +11 -3
  105. package/components/card/themes/light/card.bootstrap.css.js.map +1 -1
  106. package/components/card/themes/light/card.content.bootstrap.css.js +1 -2
  107. package/components/card/themes/light/card.content.bootstrap.css.js.map +1 -1
  108. package/components/card/themes/light/card.content.indigo.css.js +1 -2
  109. package/components/card/themes/light/card.content.indigo.css.js.map +1 -1
  110. package/components/card/themes/light/card.content.material.css.js +1 -2
  111. package/components/card/themes/light/card.content.material.css.js.map +1 -1
  112. package/components/card/themes/light/card.fluent.css.js +11 -4
  113. package/components/card/themes/light/card.fluent.css.js.map +1 -1
  114. package/components/card/themes/light/card.header.bootstrap.css.js +1 -2
  115. package/components/card/themes/light/card.header.bootstrap.css.js.map +1 -1
  116. package/components/card/themes/light/card.header.fluent.css.js +1 -2
  117. package/components/card/themes/light/card.header.fluent.css.js.map +1 -1
  118. package/components/card/themes/light/card.header.indigo.css.js +1 -2
  119. package/components/card/themes/light/card.header.indigo.css.js.map +1 -1
  120. package/components/card/themes/light/card.header.material.css.js +1 -2
  121. package/components/card/themes/light/card.header.material.css.js.map +1 -1
  122. package/components/card/themes/light/card.indigo.css.js +14 -0
  123. package/components/card/themes/light/card.indigo.css.js.map +1 -0
  124. package/components/card/themes/light/card.material.css.js +11 -4
  125. package/components/card/themes/light/card.material.css.js.map +1 -1
  126. package/components/card/themes/light/card.media.material.css.js +1 -2
  127. package/components/card/themes/light/card.media.material.css.js.map +1 -1
  128. package/components/checkbox/checkbox-base.d.ts +8 -35
  129. package/components/checkbox/checkbox-base.js +28 -41
  130. package/components/checkbox/checkbox-base.js.map +1 -1
  131. package/components/checkbox/checkbox.d.ts +0 -1
  132. package/components/checkbox/checkbox.js +5 -16
  133. package/components/checkbox/checkbox.js.map +1 -1
  134. package/components/checkbox/switch.d.ts +0 -2
  135. package/components/checkbox/switch.js +4 -16
  136. package/components/checkbox/switch.js.map +1 -1
  137. package/components/checkbox/themes/dark/checkbox.bootstrap.css.js +1 -13
  138. package/components/checkbox/themes/dark/checkbox.bootstrap.css.js.map +1 -1
  139. package/components/checkbox/themes/dark/checkbox.fluent.css.js +1 -13
  140. package/components/checkbox/themes/dark/checkbox.fluent.css.js.map +1 -1
  141. package/components/checkbox/themes/dark/checkbox.indigo.css.js +1 -13
  142. package/components/checkbox/themes/dark/checkbox.indigo.css.js.map +1 -1
  143. package/components/checkbox/themes/dark/checkbox.material.css.js +1 -13
  144. package/components/checkbox/themes/dark/checkbox.material.css.js.map +1 -1
  145. package/components/checkbox/themes/dark/switch.bootstrap.css.js +1 -13
  146. package/components/checkbox/themes/dark/switch.bootstrap.css.js.map +1 -1
  147. package/components/checkbox/themes/dark/switch.fluent.css.js +1 -13
  148. package/components/checkbox/themes/dark/switch.fluent.css.js.map +1 -1
  149. package/components/checkbox/themes/dark/switch.indigo.css.js +1 -13
  150. package/components/checkbox/themes/dark/switch.indigo.css.js.map +1 -1
  151. package/components/checkbox/themes/dark/switch.material.css.js +1 -13
  152. package/components/checkbox/themes/dark/switch.material.css.js.map +1 -1
  153. package/components/checkbox/themes/light/checkbox.base.css.js +3 -18
  154. package/components/checkbox/themes/light/checkbox.base.css.js.map +1 -1
  155. package/components/checkbox/themes/light/checkbox.bootstrap.css.js +33 -33
  156. package/components/checkbox/themes/light/checkbox.bootstrap.css.js.map +1 -1
  157. package/components/checkbox/themes/light/checkbox.fluent.css.js +37 -37
  158. package/components/checkbox/themes/light/checkbox.fluent.css.js.map +1 -1
  159. package/components/checkbox/themes/light/checkbox.indigo.css.js +38 -35
  160. package/components/checkbox/themes/light/checkbox.indigo.css.js.map +1 -1
  161. package/components/checkbox/themes/light/checkbox.material.css.js +31 -33
  162. package/components/checkbox/themes/light/checkbox.material.css.js.map +1 -1
  163. package/components/checkbox/themes/light/switch.base.css.js +3 -16
  164. package/components/checkbox/themes/light/switch.base.css.js.map +1 -1
  165. package/components/checkbox/themes/light/switch.bootstrap.css.js +18 -27
  166. package/components/checkbox/themes/light/switch.bootstrap.css.js.map +1 -1
  167. package/components/checkbox/themes/light/switch.fluent.css.js +39 -38
  168. package/components/checkbox/themes/light/switch.fluent.css.js.map +1 -1
  169. package/components/checkbox/themes/light/switch.indigo.css.js +33 -35
  170. package/components/checkbox/themes/light/switch.indigo.css.js.map +1 -1
  171. package/components/checkbox/themes/light/switch.material.css.js +22 -31
  172. package/components/checkbox/themes/light/switch.material.css.js.map +1 -1
  173. package/components/chip/themes/chip.base.css.js +1 -5
  174. package/components/chip/themes/chip.base.css.js.map +1 -1
  175. package/components/chip/themes/chip.bootstrap.css.js +35 -6
  176. package/components/chip/themes/chip.bootstrap.css.js.map +1 -1
  177. package/components/chip/themes/chip.fluent.css.js +35 -5
  178. package/components/chip/themes/chip.fluent.css.js.map +1 -1
  179. package/components/chip/themes/chip.indigo.css.js +35 -5
  180. package/components/chip/themes/chip.indigo.css.js.map +1 -1
  181. package/components/chip/themes/chip.material.css.js +35 -5
  182. package/components/chip/themes/chip.material.css.js.map +1 -1
  183. package/components/combo/combo-header.js +5 -3
  184. package/components/combo/combo-header.js.map +1 -1
  185. package/components/combo/combo-item.js +5 -4
  186. package/components/combo/combo-item.js.map +1 -1
  187. package/components/combo/combo.d.ts +9 -37
  188. package/components/combo/combo.js +71 -58
  189. package/components/combo/combo.js.map +1 -1
  190. package/components/combo/controllers/selection.js +1 -3
  191. package/components/combo/controllers/selection.js.map +1 -1
  192. package/components/combo/themes/dark/combo.indigo.css.js +1 -1
  193. package/components/combo/themes/dark/combo.indigo.css.js.map +1 -1
  194. package/components/combo/themes/dark/combo.material.css.js +1 -1
  195. package/components/combo/themes/dark/combo.material.css.js.map +1 -1
  196. package/components/combo/themes/light/combo.base.css.js +19 -33
  197. package/components/combo/themes/light/combo.base.css.js.map +1 -1
  198. package/components/combo/themes/light/combo.bootstrap.css.js +209 -88
  199. package/components/combo/themes/light/combo.bootstrap.css.js.map +1 -1
  200. package/components/combo/themes/light/combo.fluent.css.js +201 -47
  201. package/components/combo/themes/light/combo.fluent.css.js.map +1 -1
  202. package/components/combo/themes/light/combo.indigo.css.js +213 -25
  203. package/components/combo/themes/light/combo.indigo.css.js.map +1 -1
  204. package/components/combo/themes/light/combo.material.css.js +242 -89
  205. package/components/combo/themes/light/combo.material.css.js.map +1 -1
  206. package/components/combo/themes/light/header/combo-header.base.css.js +3 -7
  207. package/components/combo/themes/light/header/combo-header.base.css.js.map +1 -1
  208. package/components/combo/themes/light/item/combo-item.base.css.js +9 -29
  209. package/components/combo/themes/light/item/combo-item.base.css.js.map +1 -1
  210. package/components/common/localization/validation-en.d.ts +10 -0
  211. package/components/common/localization/validation-en.js +10 -0
  212. package/components/common/localization/validation-en.js.map +1 -0
  213. package/components/common/mixins/event-emitter.js.map +1 -1
  214. package/components/common/mixins/form-associated-required.d.ts +16 -0
  215. package/components/common/mixins/form-associated-required.js +29 -0
  216. package/components/common/mixins/form-associated-required.js.map +1 -0
  217. package/components/common/mixins/form-associated.d.ts +92 -0
  218. package/components/common/mixins/form-associated.js +151 -0
  219. package/components/common/mixins/form-associated.js.map +1 -0
  220. package/components/common/util.d.ts +38 -0
  221. package/components/common/util.js +34 -0
  222. package/components/common/util.js.map +1 -1
  223. package/components/common/validators.d.ts +45 -0
  224. package/components/common/validators.js +54 -0
  225. package/components/common/validators.js.map +1 -0
  226. package/components/date-time-input/date-time-input.d.ts +30 -11
  227. package/components/date-time-input/date-time-input.js +147 -135
  228. package/components/date-time-input/date-time-input.js.map +1 -1
  229. package/components/date-time-input/date-util.d.ts +1 -0
  230. package/components/date-time-input/date-util.js +6 -3
  231. package/components/date-time-input/date-util.js.map +1 -1
  232. package/components/dialog/dialog.js +1 -1
  233. package/components/dialog/dialog.js.map +1 -1
  234. package/components/dialog/themes/light/dialog.base.css.js +2 -5
  235. package/components/dialog/themes/light/dialog.base.css.js.map +1 -1
  236. package/components/dialog/themes/light/dialog.bootstrap.css.js +8 -3
  237. package/components/dialog/themes/light/dialog.bootstrap.css.js.map +1 -1
  238. package/components/dialog/themes/light/dialog.fluent.css.js +10 -1
  239. package/components/dialog/themes/light/dialog.fluent.css.js.map +1 -1
  240. package/components/dialog/themes/light/dialog.indigo.css.js +10 -1
  241. package/components/dialog/themes/light/dialog.indigo.css.js.map +1 -1
  242. package/components/dialog/themes/light/dialog.material.css.js +42 -1
  243. package/components/dialog/themes/light/dialog.material.css.js.map +1 -1
  244. package/components/dropdown/dropdown-group.js +6 -3
  245. package/components/dropdown/dropdown-group.js.map +1 -1
  246. package/components/dropdown/dropdown-header.js +6 -4
  247. package/components/dropdown/dropdown-header.js.map +1 -1
  248. package/components/dropdown/dropdown-item.js +8 -11
  249. package/components/dropdown/dropdown-item.js.map +1 -1
  250. package/components/dropdown/dropdown.js +2 -1
  251. package/components/dropdown/dropdown.js.map +1 -1
  252. package/components/dropdown/themes/dark/dropdown.bootstrap.css.js +1 -1
  253. package/components/dropdown/themes/dark/dropdown.bootstrap.css.js.map +1 -1
  254. package/components/dropdown/themes/dark/dropdown.fluent.css.js +1 -1
  255. package/components/dropdown/themes/dark/dropdown.fluent.css.js.map +1 -1
  256. package/components/dropdown/themes/dark/dropdown.indigo.css.js +1 -1
  257. package/components/dropdown/themes/dark/dropdown.indigo.css.js.map +1 -1
  258. package/components/dropdown/themes/dark/dropdown.material.css.js +3 -0
  259. package/components/dropdown/themes/dark/dropdown.material.css.js.map +1 -0
  260. package/components/dropdown/themes/light/dropdown.base.css.js +1 -7
  261. package/components/dropdown/themes/light/dropdown.base.css.js.map +1 -1
  262. package/components/dropdown/themes/light/dropdown.bootstrap.css.js +28 -4
  263. package/components/dropdown/themes/light/dropdown.bootstrap.css.js.map +1 -1
  264. package/components/dropdown/themes/light/dropdown.fluent.css.js +26 -3
  265. package/components/dropdown/themes/light/dropdown.fluent.css.js.map +1 -1
  266. package/components/dropdown/themes/light/dropdown.indigo.css.js +26 -3
  267. package/components/dropdown/themes/light/dropdown.indigo.css.js.map +1 -1
  268. package/components/dropdown/themes/light/dropdown.material.css.d.ts +1 -0
  269. package/components/dropdown/themes/light/dropdown.material.css.js +33 -0
  270. package/components/dropdown/themes/light/dropdown.material.css.js.map +1 -0
  271. package/components/dropdown/themes/light/group/dropdown-group.base.css.d.ts +1 -0
  272. package/components/dropdown/themes/light/{dropdown-group.base.css.js → group/dropdown-group.base.css.js} +4 -7
  273. package/components/dropdown/themes/light/group/dropdown-group.base.css.js.map +1 -0
  274. package/components/dropdown/themes/light/group/dropdown-group.bootstrap.css.d.ts +1 -0
  275. package/components/dropdown/themes/light/group/dropdown-group.bootstrap.css.js +28 -0
  276. package/components/dropdown/themes/light/group/dropdown-group.bootstrap.css.js.map +1 -0
  277. package/components/dropdown/themes/light/group/dropdown-group.fluent.css.d.ts +1 -0
  278. package/components/dropdown/themes/light/group/dropdown-group.fluent.css.js +29 -0
  279. package/components/dropdown/themes/light/group/dropdown-group.fluent.css.js.map +1 -0
  280. package/components/dropdown/themes/light/group/dropdown-group.indigo.css.d.ts +1 -0
  281. package/components/dropdown/themes/light/group/dropdown-group.indigo.css.js +28 -0
  282. package/components/dropdown/themes/light/group/dropdown-group.indigo.css.js.map +1 -0
  283. package/components/dropdown/themes/light/group/dropdown-group.material.css.d.ts +1 -0
  284. package/components/dropdown/themes/light/group/dropdown-group.material.css.js +28 -0
  285. package/components/dropdown/themes/light/group/dropdown-group.material.css.js.map +1 -0
  286. package/components/dropdown/themes/light/header/dropdown-header.base.css.d.ts +1 -0
  287. package/components/dropdown/themes/light/header/dropdown-header.base.css.js +56 -0
  288. package/components/dropdown/themes/light/header/dropdown-header.base.css.js.map +1 -0
  289. package/components/dropdown/themes/light/header/dropdown-header.bootstrap.css.d.ts +1 -0
  290. package/components/dropdown/themes/light/header/dropdown-header.bootstrap.css.js +28 -0
  291. package/components/dropdown/themes/light/header/dropdown-header.bootstrap.css.js.map +1 -0
  292. package/components/dropdown/themes/light/header/dropdown-header.fluent.css.d.ts +1 -0
  293. package/components/dropdown/themes/light/header/dropdown-header.fluent.css.js +27 -0
  294. package/components/dropdown/themes/light/header/dropdown-header.fluent.css.js.map +1 -0
  295. package/components/dropdown/themes/light/header/dropdown-header.indigo.css.d.ts +1 -0
  296. package/components/dropdown/themes/light/header/dropdown-header.indigo.css.js +28 -0
  297. package/components/dropdown/themes/light/header/dropdown-header.indigo.css.js.map +1 -0
  298. package/components/dropdown/themes/light/header/dropdown-header.material.css.d.ts +1 -0
  299. package/components/dropdown/themes/light/header/dropdown-header.material.css.js +28 -0
  300. package/components/dropdown/themes/light/header/dropdown-header.material.css.js.map +1 -0
  301. package/components/dropdown/themes/light/item/dropdown-item.base.css.d.ts +1 -0
  302. package/components/dropdown/themes/light/item/dropdown-item.base.css.js +105 -0
  303. package/components/dropdown/themes/light/item/dropdown-item.base.css.js.map +1 -0
  304. package/components/dropdown/themes/light/item/dropdown-item.bootstrap.css.d.ts +1 -0
  305. package/components/dropdown/themes/light/item/dropdown-item.bootstrap.css.js +54 -0
  306. package/components/dropdown/themes/light/item/dropdown-item.bootstrap.css.js.map +1 -0
  307. package/components/dropdown/themes/light/item/dropdown-item.fluent.css.d.ts +1 -0
  308. package/components/dropdown/themes/light/item/dropdown-item.fluent.css.js +55 -0
  309. package/components/dropdown/themes/light/item/dropdown-item.fluent.css.js.map +1 -0
  310. package/components/dropdown/themes/light/item/dropdown-item.indigo.css.d.ts +1 -0
  311. package/components/dropdown/themes/light/item/dropdown-item.indigo.css.js +54 -0
  312. package/components/dropdown/themes/light/item/dropdown-item.indigo.css.js.map +1 -0
  313. package/components/dropdown/themes/light/item/dropdown-item.material.css.d.ts +1 -0
  314. package/components/dropdown/themes/light/item/dropdown-item.material.css.js +54 -0
  315. package/components/dropdown/themes/light/item/dropdown-item.material.css.js.map +1 -0
  316. package/components/expansion-panel/expansion-panel.js +1 -1
  317. package/components/expansion-panel/expansion-panel.js.map +1 -1
  318. package/components/expansion-panel/themes/light/expansion-panel.base.css.js +13 -4
  319. package/components/expansion-panel/themes/light/expansion-panel.base.css.js.map +1 -1
  320. package/components/expansion-panel/themes/light/expansion-panel.bootstrap.css.js +14 -1
  321. package/components/expansion-panel/themes/light/expansion-panel.bootstrap.css.js.map +1 -1
  322. package/components/expansion-panel/themes/light/expansion-panel.fluent.css.js +14 -1
  323. package/components/expansion-panel/themes/light/expansion-panel.fluent.css.js.map +1 -1
  324. package/components/expansion-panel/themes/light/expansion-panel.indigo.css.js +14 -1
  325. package/components/expansion-panel/themes/light/expansion-panel.indigo.css.js.map +1 -1
  326. package/components/form/form.d.ts +3 -0
  327. package/components/form/form.js.map +1 -1
  328. package/components/icon/dark/icon.bootstrap.css.js +1 -13
  329. package/components/icon/dark/icon.bootstrap.css.js.map +1 -1
  330. package/components/icon/dark/icon.fluent.css.js +1 -13
  331. package/components/icon/dark/icon.fluent.css.js.map +1 -1
  332. package/components/icon/dark/icon.indigo.css.js +1 -13
  333. package/components/icon/dark/icon.indigo.css.js.map +1 -1
  334. package/components/icon/dark/icon.material.css.js +1 -13
  335. package/components/icon/dark/icon.material.css.js.map +1 -1
  336. package/components/icon/icon.base.css.js +1 -10
  337. package/components/icon/icon.base.css.js.map +1 -1
  338. package/components/icon/light/icon.bootstrap.css.js +9 -19
  339. package/components/icon/light/icon.bootstrap.css.js.map +1 -1
  340. package/components/icon/light/icon.fluent.css.js +9 -19
  341. package/components/icon/light/icon.fluent.css.js.map +1 -1
  342. package/components/icon/light/icon.indigo.css.js +9 -19
  343. package/components/icon/light/icon.indigo.css.js.map +1 -1
  344. package/components/icon/light/icon.material.css.js +9 -19
  345. package/components/icon/light/icon.material.css.js.map +1 -1
  346. package/components/input/input-base.d.ts +13 -24
  347. package/components/input/input-base.js +21 -25
  348. package/components/input/input-base.js.map +1 -1
  349. package/components/input/input.d.ts +24 -15
  350. package/components/input/input.js +106 -48
  351. package/components/input/input.js.map +1 -1
  352. package/components/input/themes/dark/input.dark.indigo.css.js +1 -1
  353. package/components/input/themes/dark/input.dark.indigo.css.js.map +1 -1
  354. package/components/input/themes/dark/input.dark.material.css.js +1 -1
  355. package/components/input/themes/dark/input.dark.material.css.js.map +1 -1
  356. package/components/input/themes/light/input.base.css.js +6 -14
  357. package/components/input/themes/light/input.base.css.js.map +1 -1
  358. package/components/input/themes/light/input.bootstrap.css.js +209 -115
  359. package/components/input/themes/light/input.bootstrap.css.js.map +1 -1
  360. package/components/input/themes/light/input.fluent.css.js +144 -61
  361. package/components/input/themes/light/input.fluent.css.js.map +1 -1
  362. package/components/input/themes/light/input.indigo.css.js +170 -43
  363. package/components/input/themes/light/input.indigo.css.js.map +1 -1
  364. package/components/input/themes/light/input.material.css.js +377 -188
  365. package/components/input/themes/light/input.material.css.js.map +1 -1
  366. package/components/list/themes/dark/list.bootstrap.css.js +1 -1
  367. package/components/list/themes/dark/list.bootstrap.css.js.map +1 -1
  368. package/components/list/themes/dark/list.fluent.css.js +1 -1
  369. package/components/list/themes/dark/list.fluent.css.js.map +1 -1
  370. package/components/list/themes/dark/list.indigo.css.js +1 -1
  371. package/components/list/themes/dark/list.indigo.css.js.map +1 -1
  372. package/components/list/themes/light/list-header.base.css.js +0 -33
  373. package/components/list/themes/light/list-header.base.css.js.map +1 -1
  374. package/components/list/themes/light/list-header.indigo.css.js +1 -2
  375. package/components/list/themes/light/list-header.indigo.css.js.map +1 -1
  376. package/components/list/themes/light/list-item.base.css.js +26 -34
  377. package/components/list/themes/light/list-item.base.css.js.map +1 -1
  378. package/components/list/themes/light/list-item.bootstrap.css.js +27 -2
  379. package/components/list/themes/light/list-item.bootstrap.css.js.map +1 -1
  380. package/components/list/themes/light/list-item.fluent.css.js +27 -2
  381. package/components/list/themes/light/list-item.fluent.css.js.map +1 -1
  382. package/components/list/themes/light/list-item.indigo.css.js +27 -2
  383. package/components/list/themes/light/list-item.indigo.css.js.map +1 -1
  384. package/components/list/themes/light/list.base.css.js +27 -2
  385. package/components/list/themes/light/list.base.css.js.map +1 -1
  386. package/components/list/themes/light/list.bootstrap.css.js +27 -3
  387. package/components/list/themes/light/list.bootstrap.css.js.map +1 -1
  388. package/components/mask-input/mask-input-base.d.ts +2 -9
  389. package/components/mask-input/mask-input-base.js +7 -12
  390. package/components/mask-input/mask-input-base.js.map +1 -1
  391. package/components/mask-input/mask-input.d.ts +5 -6
  392. package/components/mask-input/mask-input.js +42 -51
  393. package/components/mask-input/mask-input.js.map +1 -1
  394. package/components/mask-input/mask-parser.js +2 -1
  395. package/components/mask-input/mask-parser.js.map +1 -1
  396. package/components/nav-drawer/themes/dark/nav-drawer-item.base.css.js +1 -1
  397. package/components/nav-drawer/themes/dark/nav-drawer-item.base.css.js.map +1 -1
  398. package/components/nav-drawer/themes/dark/nav-drawer-item.bootstrap.css.js +1 -1
  399. package/components/nav-drawer/themes/dark/nav-drawer-item.bootstrap.css.js.map +1 -1
  400. package/components/nav-drawer/themes/dark/nav-drawer-item.fluent.css.js +1 -1
  401. package/components/nav-drawer/themes/dark/nav-drawer-item.fluent.css.js.map +1 -1
  402. package/components/nav-drawer/themes/dark/nav-drawer-item.indigo.css.js +1 -1
  403. package/components/nav-drawer/themes/dark/nav-drawer-item.indigo.css.js.map +1 -1
  404. package/components/nav-drawer/themes/dark/nav-drawer.indigo.css.js +1 -1
  405. package/components/nav-drawer/themes/dark/nav-drawer.indigo.css.js.map +1 -1
  406. package/components/nav-drawer/themes/light/fluent/nav-drawer-header-item.fluent.css.js +1 -2
  407. package/components/nav-drawer/themes/light/fluent/nav-drawer-header-item.fluent.css.js.map +1 -1
  408. package/components/nav-drawer/themes/light/fluent/nav-drawer-item.fluent.css.js +1 -2
  409. package/components/nav-drawer/themes/light/fluent/nav-drawer-item.fluent.css.js.map +1 -1
  410. package/components/nav-drawer/themes/light/indigo/nav-drawer-header-item.indigo.css.js +1 -2
  411. package/components/nav-drawer/themes/light/indigo/nav-drawer-header-item.indigo.css.js.map +1 -1
  412. package/components/nav-drawer/themes/light/indigo/nav-drawer-item.indigo.css.js +17 -2
  413. package/components/nav-drawer/themes/light/indigo/nav-drawer-item.indigo.css.js.map +1 -1
  414. package/components/nav-drawer/themes/light/indigo/nav-drawer.indigo.css.js +17 -1
  415. package/components/nav-drawer/themes/light/indigo/nav-drawer.indigo.css.js.map +1 -1
  416. package/components/nav-drawer/themes/light/nav-drawer-header-item.base.css.js +0 -33
  417. package/components/nav-drawer/themes/light/nav-drawer-header-item.base.css.js.map +1 -1
  418. package/components/nav-drawer/themes/light/nav-drawer-item.base.css.js +16 -35
  419. package/components/nav-drawer/themes/light/nav-drawer-item.base.css.js.map +1 -1
  420. package/components/nav-drawer/themes/light/nav-drawer.base.css.js +16 -4
  421. package/components/nav-drawer/themes/light/nav-drawer.base.css.js.map +1 -1
  422. package/components/navbar/themes/dark/navbar.bootstrap.css.js +1 -13
  423. package/components/navbar/themes/dark/navbar.bootstrap.css.js.map +1 -1
  424. package/components/navbar/themes/dark/navbar.fluent.css.js +1 -13
  425. package/components/navbar/themes/dark/navbar.fluent.css.js.map +1 -1
  426. package/components/navbar/themes/dark/navbar.indigo.css.js +1 -13
  427. package/components/navbar/themes/dark/navbar.indigo.css.js.map +1 -1
  428. package/components/navbar/themes/dark/navbar.material.css.js +1 -13
  429. package/components/navbar/themes/dark/navbar.material.css.js.map +1 -1
  430. package/components/navbar/themes/light/navbar.bootstrap.css.js +5 -53
  431. package/components/navbar/themes/light/navbar.bootstrap.css.js.map +1 -1
  432. package/components/navbar/themes/light/navbar.fluent.css.js +4 -52
  433. package/components/navbar/themes/light/navbar.fluent.css.js.map +1 -1
  434. package/components/navbar/themes/light/navbar.indigo.css.js +4 -52
  435. package/components/navbar/themes/light/navbar.indigo.css.js.map +1 -1
  436. package/components/navbar/themes/light/navbar.material.css.js +4 -52
  437. package/components/navbar/themes/light/navbar.material.css.js.map +1 -1
  438. package/components/navbar/themes/navbar.base.css.js +1 -3
  439. package/components/navbar/themes/navbar.base.css.js.map +1 -1
  440. package/components/progress/themes/circular/circular.progress.base.css.js +1 -3
  441. package/components/progress/themes/circular/circular.progress.base.css.js.map +1 -1
  442. package/components/progress/themes/circular/circular.progress.bootstrap.css.js +1 -2
  443. package/components/progress/themes/circular/circular.progress.bootstrap.css.js.map +1 -1
  444. package/components/progress/themes/circular/circular.progress.fluent.css.js +1 -2
  445. package/components/progress/themes/circular/circular.progress.fluent.css.js.map +1 -1
  446. package/components/progress/themes/linear/linear.progress.base.css.js +44 -66
  447. package/components/progress/themes/linear/linear.progress.base.css.js.map +1 -1
  448. package/components/progress/themes/linear/linear.progress.bootstrap.css.js +11 -65
  449. package/components/progress/themes/linear/linear.progress.bootstrap.css.js.map +1 -1
  450. package/components/progress/themes/linear/linear.progress.fluent.css.js +11 -7
  451. package/components/progress/themes/linear/linear.progress.fluent.css.js.map +1 -1
  452. package/components/progress/themes/linear/linear.progress.indigo.css.js +11 -31
  453. package/components/progress/themes/linear/linear.progress.indigo.css.js.map +1 -1
  454. package/components/radio/radio.d.ts +13 -37
  455. package/components/radio/radio.js +135 -97
  456. package/components/radio/radio.js.map +1 -1
  457. package/components/radio/themes/dark/radio.bootstrap.css.js +1 -13
  458. package/components/radio/themes/dark/radio.bootstrap.css.js.map +1 -1
  459. package/components/radio/themes/dark/radio.fluent.css.js +1 -13
  460. package/components/radio/themes/dark/radio.fluent.css.js.map +1 -1
  461. package/components/radio/themes/dark/radio.indigo.css.js +1 -13
  462. package/components/radio/themes/dark/radio.indigo.css.js.map +1 -1
  463. package/components/radio/themes/dark/radio.material.css.js +1 -13
  464. package/components/radio/themes/dark/radio.material.css.js.map +1 -1
  465. package/components/radio/themes/light/radio.base.css.js +1 -17
  466. package/components/radio/themes/light/radio.base.css.js.map +1 -1
  467. package/components/radio/themes/light/radio.bootstrap.css.js +10 -54
  468. package/components/radio/themes/light/radio.bootstrap.css.js.map +1 -1
  469. package/components/radio/themes/light/radio.fluent.css.js +2 -50
  470. package/components/radio/themes/light/radio.fluent.css.js.map +1 -1
  471. package/components/radio/themes/light/radio.indigo.css.js +13 -53
  472. package/components/radio/themes/light/radio.indigo.css.js.map +1 -1
  473. package/components/radio/themes/light/radio.material.css.js +4 -49
  474. package/components/radio/themes/light/radio.material.css.js.map +1 -1
  475. package/components/radio-group/radio-group.base.css.js +1 -2
  476. package/components/radio-group/radio-group.base.css.js.map +1 -1
  477. package/components/radio-group/radio-group.d.ts +0 -4
  478. package/components/radio-group/radio-group.fluent.css.js +1 -2
  479. package/components/radio-group/radio-group.fluent.css.js.map +1 -1
  480. package/components/radio-group/radio-group.js +3 -54
  481. package/components/radio-group/radio-group.js.map +1 -1
  482. package/components/radio-group/radio-group.material.css.js +1 -2
  483. package/components/radio-group/radio-group.material.css.js.map +1 -1
  484. package/components/rating/dark/rating.fluent.css.d.ts +1 -0
  485. package/components/rating/dark/rating.fluent.css.js +3 -0
  486. package/components/rating/dark/rating.fluent.css.js.map +1 -0
  487. package/components/rating/rating-symbol.base.css.js +2 -3
  488. package/components/rating/rating-symbol.base.css.js.map +1 -1
  489. package/components/rating/rating.base.css.js +9 -6
  490. package/components/rating/rating.base.css.js.map +1 -1
  491. package/components/rating/rating.bootstrap.css.js +1 -2
  492. package/components/rating/rating.bootstrap.css.js.map +1 -1
  493. package/components/rating/rating.d.ts +10 -11
  494. package/components/rating/rating.fluent.css.js +12 -7
  495. package/components/rating/rating.fluent.css.js.map +1 -1
  496. package/components/rating/rating.indigo.css.js +1 -2
  497. package/components/rating/rating.indigo.css.js.map +1 -1
  498. package/components/rating/rating.js +19 -15
  499. package/components/rating/rating.js.map +1 -1
  500. package/components/ripple/ripple.material.css.js +1 -0
  501. package/components/ripple/ripple.material.css.js.map +1 -1
  502. package/components/select/select-item.d.ts +0 -2
  503. package/components/select/select-item.js +0 -3
  504. package/components/select/select-item.js.map +1 -1
  505. package/components/select/select.d.ts +9 -40
  506. package/components/select/select.js +41 -49
  507. package/components/select/select.js.map +1 -1
  508. package/components/select/themes/dark/select.fluent.css.js +1 -1
  509. package/components/select/themes/dark/select.fluent.css.js.map +1 -1
  510. package/components/select/themes/dark/select.indigo.css.js +1 -1
  511. package/components/select/themes/dark/select.indigo.css.js.map +1 -1
  512. package/components/select/themes/dark/select.material.css.js +1 -1
  513. package/components/select/themes/dark/select.material.css.js.map +1 -1
  514. package/components/select/themes/light/select.base.css.js +1 -10
  515. package/components/select/themes/light/select.base.css.js.map +1 -1
  516. package/components/select/themes/light/select.bootstrap.css.js +121 -42
  517. package/components/select/themes/light/select.bootstrap.css.js.map +1 -1
  518. package/components/select/themes/light/select.fluent.css.js +116 -9
  519. package/components/select/themes/light/select.fluent.css.js.map +1 -1
  520. package/components/select/themes/light/select.indigo.css.js +138 -17
  521. package/components/select/themes/light/select.indigo.css.js.map +1 -1
  522. package/components/select/themes/light/select.material.css.js +162 -27
  523. package/components/select/themes/light/select.material.css.js.map +1 -1
  524. package/components/slider/slider.d.ts +4 -12
  525. package/components/slider/slider.js +16 -25
  526. package/components/slider/slider.js.map +1 -1
  527. package/components/slider/themes/dark/slider.bootstrap.css.js +1 -1
  528. package/components/slider/themes/dark/slider.bootstrap.css.js.map +1 -1
  529. package/components/slider/themes/dark/slider.fluent.css.js +1 -1
  530. package/components/slider/themes/dark/slider.fluent.css.js.map +1 -1
  531. package/components/slider/themes/dark/slider.indigo.css.js +1 -1
  532. package/components/slider/themes/dark/slider.indigo.css.js.map +1 -1
  533. package/components/slider/themes/light/slider.base.css.js +21 -18
  534. package/components/slider/themes/light/slider.base.css.js.map +1 -1
  535. package/components/slider/themes/light/slider.bootstrap.css.js +1 -2
  536. package/components/slider/themes/light/slider.bootstrap.css.js.map +1 -1
  537. package/components/slider/themes/light/slider.fluent.css.js +7 -5
  538. package/components/slider/themes/light/slider.fluent.css.js.map +1 -1
  539. package/components/slider/themes/light/slider.indigo.css.js +5 -3
  540. package/components/slider/themes/light/slider.indigo.css.js.map +1 -1
  541. package/components/slider/themes/light/slider.material.css.js +2 -4
  542. package/components/slider/themes/light/slider.material.css.js.map +1 -1
  543. package/components/snackbar/snackbar.js +1 -1
  544. package/components/snackbar/snackbar.js.map +1 -1
  545. package/components/snackbar/themes/dark/snackbar.indigo.css.js +1 -1
  546. package/components/snackbar/themes/dark/snackbar.indigo.css.js.map +1 -1
  547. package/components/snackbar/themes/light/snackbar.base.css.js +7 -3
  548. package/components/snackbar/themes/light/snackbar.base.css.js.map +1 -1
  549. package/components/snackbar/themes/light/snackbar.bootstrap.css.js +9 -1
  550. package/components/snackbar/themes/light/snackbar.bootstrap.css.js.map +1 -1
  551. package/components/snackbar/themes/light/snackbar.fluent.css.js +9 -2
  552. package/components/snackbar/themes/light/snackbar.fluent.css.js.map +1 -1
  553. package/components/snackbar/themes/light/snackbar.indigo.css.js +9 -2
  554. package/components/snackbar/themes/light/snackbar.indigo.css.js.map +1 -1
  555. package/components/stepper/animations.d.ts +2 -0
  556. package/components/stepper/animations.js +22 -0
  557. package/components/stepper/animations.js.map +1 -0
  558. package/components/stepper/step.d.ts +17 -8
  559. package/components/stepper/step.js +29 -0
  560. package/components/stepper/step.js.map +1 -1
  561. package/components/stepper/stepper.d.ts +19 -3
  562. package/components/stepper/stepper.js +58 -7
  563. package/components/stepper/stepper.js.map +1 -1
  564. package/components/stepper/themes/step/dark/step.bootstrap.css.js +1 -1
  565. package/components/stepper/themes/step/dark/step.bootstrap.css.js.map +1 -1
  566. package/components/stepper/themes/step/dark/step.fluent.css.js +1 -1
  567. package/components/stepper/themes/step/dark/step.fluent.css.js.map +1 -1
  568. package/components/stepper/themes/step/dark/step.indigo.css.js +1 -1
  569. package/components/stepper/themes/step/dark/step.indigo.css.js.map +1 -1
  570. package/components/stepper/themes/step/dark/step.material.css.js +1 -1
  571. package/components/stepper/themes/step/dark/step.material.css.js.map +1 -1
  572. package/components/stepper/themes/step/light/step.base.css.js +46 -174
  573. package/components/stepper/themes/step/light/step.base.css.js.map +1 -1
  574. package/components/stepper/themes/step/light/step.bootstrap.css.js +183 -20
  575. package/components/stepper/themes/step/light/step.bootstrap.css.js.map +1 -1
  576. package/components/stepper/themes/step/light/step.fluent.css.js +179 -13
  577. package/components/stepper/themes/step/light/step.fluent.css.js.map +1 -1
  578. package/components/stepper/themes/step/light/step.indigo.css.js +179 -26
  579. package/components/stepper/themes/step/light/step.indigo.css.js.map +1 -1
  580. package/components/stepper/themes/step/light/step.material.css.js +179 -5
  581. package/components/stepper/themes/step/light/step.material.css.js.map +1 -1
  582. package/components/stepper/themes/stepper/stepper.base.css.js +3 -8
  583. package/components/stepper/themes/stepper/stepper.base.css.js.map +1 -1
  584. package/components/stepper/themes/stepper/stepper.bootstrap.css.js +1 -2
  585. package/components/stepper/themes/stepper/stepper.bootstrap.css.js.map +1 -1
  586. package/components/stepper/themes/stepper/stepper.fluent.css.js +1 -2
  587. package/components/stepper/themes/stepper/stepper.fluent.css.js.map +1 -1
  588. package/components/stepper/themes/stepper/stepper.indigo.css.js +1 -2
  589. package/components/stepper/themes/stepper/stepper.indigo.css.js.map +1 -1
  590. package/components/tabs/themes/dark/tab.dark.base.css.js +1 -1
  591. package/components/tabs/themes/dark/tab.dark.base.css.js.map +1 -1
  592. package/components/tabs/themes/dark/tab.dark.bootstrap.css.js +1 -1
  593. package/components/tabs/themes/dark/tab.dark.bootstrap.css.js.map +1 -1
  594. package/components/tabs/themes/light/tab-panel.base.css.js +1 -2
  595. package/components/tabs/themes/light/tab-panel.base.css.js.map +1 -1
  596. package/components/tabs/themes/light/tab.base.css.js +24 -3
  597. package/components/tabs/themes/light/tab.base.css.js.map +1 -1
  598. package/components/tabs/themes/light/tab.bootstrap.css.js +27 -6
  599. package/components/tabs/themes/light/tab.bootstrap.css.js.map +1 -1
  600. package/components/tabs/themes/light/tab.fluent.css.js +24 -2
  601. package/components/tabs/themes/light/tab.fluent.css.js.map +1 -1
  602. package/components/tabs/themes/light/tab.indigo.css.js +24 -2
  603. package/components/tabs/themes/light/tab.indigo.css.js.map +1 -1
  604. package/components/tabs/themes/light/tabs.base.css.js +1 -3
  605. package/components/tabs/themes/light/tabs.base.css.js.map +1 -1
  606. package/components/tabs/themes/light/tabs.bootstrap.css.js +1 -2
  607. package/components/tabs/themes/light/tabs.bootstrap.css.js.map +1 -1
  608. package/components/tabs/themes/light/tabs.fluent.css.js +1 -2
  609. package/components/tabs/themes/light/tabs.fluent.css.js.map +1 -1
  610. package/components/tabs/themes/light/tabs.indigo.css.js +1 -2
  611. package/components/tabs/themes/light/tabs.indigo.css.js.map +1 -1
  612. package/components/toast/themes/toast.base.css.js +37 -2
  613. package/components/toast/themes/toast.base.css.js.map +1 -1
  614. package/components/toast/themes/toast.bootstrap.css.js +6 -3
  615. package/components/toast/themes/toast.bootstrap.css.js.map +1 -1
  616. package/components/toast/themes/toast.fluent.css.js +6 -3
  617. package/components/toast/themes/toast.fluent.css.js.map +1 -1
  618. package/components/toast/themes/toast.indigo.css.js +6 -3
  619. package/components/toast/themes/toast.indigo.css.js.map +1 -1
  620. package/components/toast/toast.js +1 -1
  621. package/components/toast/toast.js.map +1 -1
  622. package/components/tree/themes/dark/tree-item.bootstrap.css.js +1 -1
  623. package/components/tree/themes/dark/tree-item.bootstrap.css.js.map +1 -1
  624. package/components/tree/themes/dark/tree-item.fluent.css.js +1 -1
  625. package/components/tree/themes/dark/tree-item.fluent.css.js.map +1 -1
  626. package/components/tree/themes/dark/tree-item.indigo.css.js +1 -1
  627. package/components/tree/themes/dark/tree-item.indigo.css.js.map +1 -1
  628. package/components/tree/themes/light/tree-item.base.css.js +18 -7
  629. package/components/tree/themes/light/tree-item.base.css.js.map +1 -1
  630. package/components/tree/themes/light/tree-item.bootstrap.css.js +59 -3
  631. package/components/tree/themes/light/tree-item.bootstrap.css.js.map +1 -1
  632. package/components/tree/themes/light/tree-item.fluent.css.js +57 -1
  633. package/components/tree/themes/light/tree-item.fluent.css.js.map +1 -1
  634. package/components/tree/themes/light/tree-item.indigo.css.js +57 -1
  635. package/components/tree/themes/light/tree-item.indigo.css.js.map +1 -1
  636. package/components/tree/themes/light/tree-item.material.css.d.ts +1 -0
  637. package/components/tree/themes/light/tree-item.material.css.js +58 -0
  638. package/components/tree/themes/light/tree-item.material.css.js.map +1 -0
  639. package/components/tree/themes/light/tree.base.css.js +1 -2
  640. package/components/tree/themes/light/tree.base.css.js.map +1 -1
  641. package/components/tree/tree-item.d.ts +7 -2
  642. package/components/tree/tree-item.js +37 -16
  643. package/components/tree/tree-item.js.map +1 -1
  644. package/components/tree/tree.d.ts +0 -6
  645. package/components/tree/tree.js +0 -4
  646. package/components/tree/tree.js.map +1 -1
  647. package/components/tree/tree.navigation.js +3 -2
  648. package/components/tree/tree.navigation.js.map +1 -1
  649. package/custom-elements.json +798 -525
  650. package/package.json +4 -4
  651. package/themes/dark/bootstrap.css +491 -102
  652. package/themes/dark/fluent.css +531 -125
  653. package/themes/dark/indigo.css +739 -97
  654. package/themes/dark/material.css +445 -94
  655. package/themes/light/bootstrap.css +5 -49
  656. package/themes/light/fluent.css +5 -49
  657. package/themes/light/indigo.css +229 -49
  658. package/themes/light/material.css +5 -49
  659. package/theming/theming-controller.d.ts +3 -2
  660. package/theming/theming-controller.js +38 -19
  661. package/theming/theming-controller.js.map +1 -1
  662. package/theming/theming-decorator.d.ts +4 -3
  663. package/theming/theming-decorator.js +3 -5
  664. package/theming/theming-decorator.js.map +1 -1
  665. package/theming/types.d.ts +1 -9
  666. package/theming/types.js.map +1 -1
  667. package/vscode-html-custom-data.json +242 -289
  668. package/components/avatar/themes/dark/avatar.base.bootstrap.css.js +0 -15
  669. package/components/avatar/themes/dark/avatar.base.bootstrap.css.js.map +0 -1
  670. package/components/avatar/themes/light/avatar.base.css.js +0 -130
  671. package/components/avatar/themes/light/avatar.base.css.js.map +0 -1
  672. package/components/common/types.d.ts +0 -1
  673. package/components/common/types.js +0 -2
  674. package/components/common/types.js.map +0 -1
  675. package/components/dropdown/themes/light/dropdown-group.base.css.js.map +0 -1
  676. package/components/dropdown/themes/light/dropdown-group.fluent.css.js +0 -6
  677. package/components/dropdown/themes/light/dropdown-group.fluent.css.js.map +0 -1
  678. package/components/dropdown/themes/light/dropdown-header.base.css.js +0 -61
  679. package/components/dropdown/themes/light/dropdown-header.base.css.js.map +0 -1
  680. package/components/dropdown/themes/light/dropdown-header.bootstrap.css.js +0 -6
  681. package/components/dropdown/themes/light/dropdown-header.bootstrap.css.js.map +0 -1
  682. package/components/dropdown/themes/light/dropdown-header.fluent.css.js +0 -6
  683. package/components/dropdown/themes/light/dropdown-header.fluent.css.js.map +0 -1
  684. package/components/dropdown/themes/light/dropdown-item.base.css.js +0 -124
  685. package/components/dropdown/themes/light/dropdown-item.base.css.js.map +0 -1
  686. package/components/dropdown/themes/light/dropdown-item.bootstrap.css.js +0 -27
  687. package/components/dropdown/themes/light/dropdown-item.bootstrap.css.js.map +0 -1
  688. package/components/dropdown/themes/light/dropdown-item.fluent.css.js +0 -27
  689. package/components/dropdown/themes/light/dropdown-item.fluent.css.js.map +0 -1
  690. package/components/dropdown/themes/light/dropdown-item.indigo.css.js +0 -27
  691. package/components/dropdown/themes/light/dropdown-item.indigo.css.js.map +0 -1
  692. /package/components/avatar/themes/{light/avatar.base.css.d.ts → avatar.base.css.d.ts} +0 -0
  693. /package/components/avatar/themes/dark/{avatar.base.bootstrap.css.d.ts → avatar.bootstrap.css.d.ts} +0 -0
  694. /package/components/{dropdown/themes/light/dropdown-group.base.css.d.ts → avatar/themes/dark/avatar.fluent.css.d.ts} +0 -0
  695. /package/components/{dropdown/themes/light/dropdown-group.fluent.css.d.ts → avatar/themes/dark/avatar.indigo.css.d.ts} +0 -0
  696. /package/components/{dropdown/themes/light/dropdown-header.base.css.d.ts → avatar/themes/dark/avatar.material.css.d.ts} +0 -0
  697. /package/components/{dropdown/themes/light/dropdown-header.bootstrap.css.d.ts → avatar/themes/light/avatar.fluent.css.d.ts} +0 -0
  698. /package/components/{dropdown/themes/light/dropdown-header.fluent.css.d.ts → avatar/themes/light/avatar.indigo.css.d.ts} +0 -0
  699. /package/components/{dropdown/themes/light/dropdown-item.base.css.d.ts → avatar/themes/light/avatar.material.css.d.ts} +0 -0
  700. /package/components/{dropdown/themes/light/dropdown-item.bootstrap.css.d.ts → calendar/themes/indigo/calendar.indigo.css.d.ts} +0 -0
  701. /package/components/{dropdown/themes/light/dropdown-item.fluent.css.d.ts → card/themes/light/card.indigo.css.d.ts} +0 -0
  702. /package/components/dropdown/themes/{light/dropdown-item.indigo.css.d.ts → dark/dropdown.material.css.d.ts} +0 -0
@@ -6,14 +6,16 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  };
7
7
  import { property, query, queryAssignedElements, state, } from 'lit/decorators.js';
8
8
  import { html, LitElement } from 'lit';
9
- import { partNameMap } from '../common/util.js';
9
+ import { isLTR, partNameMap } from '../common/util.js';
10
10
  import { styles } from './themes/light/tree-item.base.css.js';
11
11
  import { styles as bootstrap } from './themes/light/tree-item.bootstrap.css.js';
12
12
  import { styles as fluent } from './themes/light/tree-item.fluent.css.js';
13
13
  import { styles as indigo } from './themes/light/tree-item.indigo.css.js';
14
+ import { styles as material } from './themes/light/tree-item.material.css.js';
14
15
  import { watch } from '../common/decorators/watch.js';
15
16
  import { themes } from '../../theming/theming-decorator.js';
16
17
  import { blazorSuppress } from '../common/decorators/blazorSuppress.js';
18
+ import { AnimationPlayer, growVerIn, growVerOut, } from '../../animations/index.js';
17
19
  import { defineComponents } from '../common/definitions/defineComponents.js';
18
20
  import IgcIconComponent from '../icon/icon.js';
19
21
  import IgcCheckboxComponent from '../checkbox/checkbox.js';
@@ -42,6 +44,17 @@ let IgcTreeItemComponent = class IgcTreeItemComponent extends LitElement {
42
44
  this.loading = false;
43
45
  this.value = undefined;
44
46
  }
47
+ firstUpdated() {
48
+ this.animationPlayer = new AnimationPlayer(this.group);
49
+ }
50
+ async toggleAnimation(dir) {
51
+ const animation = dir === 'open' ? growVerIn : growVerOut;
52
+ const [_, event] = await Promise.all([
53
+ this.animationPlayer.stopAll(),
54
+ this.animationPlayer.play(animation()),
55
+ ]);
56
+ return event.type === 'finish';
57
+ }
45
58
  bothChange() {
46
59
  if (this.hasChildren) {
47
60
  this.setAttribute('aria-expanded', this.expanded.toString());
@@ -102,10 +115,7 @@ let IgcTreeItemComponent = class IgcTreeItemComponent extends LitElement {
102
115
  var _a, _b;
103
116
  super.connectedCallback();
104
117
  this.tree = this.closest('igc-tree');
105
- this.parent =
106
- ((_a = this.parentElement) === null || _a === void 0 ? void 0 : _a.tagName.toLowerCase()) === 'igc-tree-item'
107
- ? this.parentElement
108
- : null;
118
+ this.parent = (_a = this.parentElement) === null || _a === void 0 ? void 0 : _a.closest('igc-tree-item');
109
119
  this.level = this.parent ? this.parent.level + 1 : 0;
110
120
  this.setAttribute('role', 'treeitem');
111
121
  this.addEventListener('blur', this.onBlur);
@@ -142,7 +152,10 @@ let IgcTreeItemComponent = class IgcTreeItemComponent extends LitElement {
142
152
  };
143
153
  }
144
154
  get directChildren() {
145
- return Array.from(this.children).filter((x) => x.tagName.toLowerCase() === 'igc-tree-item');
155
+ return this.allChildren.filter((x) => {
156
+ var _a, _b, _c;
157
+ return (_c = ((_a = x.parent) !== null && _a !== void 0 ? _a : (_b = x.parentElement) === null || _b === void 0 ? void 0 : _b.closest('igc-tree-item'))) === null || _c === void 0 ? void 0 : _c.isSameNode(this);
158
+ });
146
159
  }
147
160
  get allChildren() {
148
161
  return Array.from(this.querySelectorAll(`igc-tree-item`));
@@ -269,7 +282,7 @@ let IgcTreeItemComponent = class IgcTreeItemComponent extends LitElement {
269
282
  return this.directChildren;
270
283
  }
271
284
  }
272
- expandWithEvent() {
285
+ async expandWithEvent() {
273
286
  var _a, _b, _c;
274
287
  if (this.expanded) {
275
288
  return;
@@ -291,9 +304,11 @@ let IgcTreeItemComponent = class IgcTreeItemComponent extends LitElement {
291
304
  });
292
305
  }
293
306
  this.expanded = true;
294
- (_c = this.tree) === null || _c === void 0 ? void 0 : _c.emitEvent('igcItemExpanded', { detail: this });
307
+ if (await this.toggleAnimation('open')) {
308
+ (_c = this.tree) === null || _c === void 0 ? void 0 : _c.emitEvent('igcItemExpanded', { detail: this });
309
+ }
295
310
  }
296
- collapseWithEvent() {
311
+ async collapseWithEvent() {
297
312
  var _a, _b;
298
313
  if (!this.expanded) {
299
314
  return;
@@ -307,7 +322,9 @@ let IgcTreeItemComponent = class IgcTreeItemComponent extends LitElement {
307
322
  return;
308
323
  }
309
324
  this.expanded = false;
310
- (_b = this.tree) === null || _b === void 0 ? void 0 : _b.emitEvent('igcItemCollapsed', { detail: this });
325
+ if (await this.toggleAnimation('close')) {
326
+ (_b = this.tree) === null || _b === void 0 ? void 0 : _b.emitEvent('igcItemCollapsed', { detail: this });
327
+ }
311
328
  }
312
329
  toggle() {
313
330
  this.expanded = !this.expanded;
@@ -319,8 +336,9 @@ let IgcTreeItemComponent = class IgcTreeItemComponent extends LitElement {
319
336
  this.expanded = false;
320
337
  }
321
338
  render() {
322
- var _a, _b, _c;
339
+ var _a, _b;
323
340
  const size = this.level * (this.tree ? sizeMultiplier[this.tree.size] : 1);
341
+ const ltr = this.tree ? isLTR(this.tree) : true;
324
342
  return html `
325
343
  <div
326
344
  id="wrapper"
@@ -347,7 +365,7 @@ let IgcTreeItemComponent = class IgcTreeItemComponent extends LitElement {
347
365
  <igc-icon
348
366
  name=${this.expanded
349
367
  ? 'keyboard_arrow_down'
350
- : ((_b = this.tree) === null || _b === void 0 ? void 0 : _b.dir) === 'rtl'
368
+ : !ltr
351
369
  ? 'navigate_before'
352
370
  : 'keyboard_arrow_right'}
353
371
  collection="internal"
@@ -358,7 +376,7 @@ let IgcTreeItemComponent = class IgcTreeItemComponent extends LitElement {
358
376
  </slot>
359
377
  `}
360
378
  </div>
361
- ${((_c = this.tree) === null || _c === void 0 ? void 0 : _c.selection) !== 'none'
379
+ ${((_b = this.tree) === null || _b === void 0 ? void 0 : _b.selection) !== 'none'
362
380
  ? html `
363
381
  <div part="select" aria-hidden="true">
364
382
  <igc-checkbox
@@ -383,8 +401,8 @@ let IgcTreeItemComponent = class IgcTreeItemComponent extends LitElement {
383
401
  </slot>
384
402
  </div>
385
403
  </div>
386
- <div role="group">
387
- <slot @slotchange=${this.handleChange} ?hidden=${!this.expanded}></slot>
404
+ <div role="group" aria-hidden=${!this.expanded}>
405
+ <slot @slotchange=${this.handleChange}></slot>
388
406
  </div>
389
407
  `;
390
408
  }
@@ -404,6 +422,9 @@ __decorate([
404
422
  query('#wrapper'),
405
423
  blazorSuppress()
406
424
  ], IgcTreeItemComponent.prototype, "wrapper", void 0);
425
+ __decorate([
426
+ query('[role="group"]', true)
427
+ ], IgcTreeItemComponent.prototype, "group", void 0);
407
428
  __decorate([
408
429
  state()
409
430
  ], IgcTreeItemComponent.prototype, "isFocused", void 0);
@@ -459,7 +480,7 @@ __decorate([
459
480
  blazorSuppress()
460
481
  ], IgcTreeItemComponent.prototype, "getChildren", null);
461
482
  IgcTreeItemComponent = __decorate([
462
- themes({ bootstrap, fluent, indigo })
483
+ themes({ bootstrap, fluent, indigo, material })
463
484
  ], IgcTreeItemComponent);
464
485
  export default IgcTreeItemComponent;
465
486
  //# sourceMappingURL=tree-item.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tree-item.js","sourceRoot":"","sources":["../../../src/components/tree/tree-item.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n property,\n query,\n queryAssignedElements,\n state,\n} from 'lit/decorators.js';\nimport { html, LitElement } from 'lit';\nimport { partNameMap } from '../common/util.js';\nimport { styles } from './themes/light/tree-item.base.css.js';\nimport { styles as bootstrap } from './themes/light/tree-item.bootstrap.css.js';\nimport { styles as fluent } from './themes/light/tree-item.fluent.css.js';\nimport { styles as indigo } from './themes/light/tree-item.indigo.css.js';\nimport type IgcTreeComponent from './tree.js';\nimport { watch } from '../common/decorators/watch.js';\nimport { IgcTreeSelectionService } from './tree.selection.js';\nimport { IgcTreeNavigationService } from './tree.navigation.js';\nimport { themes } from '../../theming/theming-decorator.js';\nimport { blazorSuppress } from '../common/decorators/blazorSuppress.js';\n\nimport { defineComponents } from '../common/definitions/defineComponents.js';\nimport IgcIconComponent from '../icon/icon.js';\nimport IgcCheckboxComponent from '../checkbox/checkbox.js';\nimport IgcCircularProgressComponent from '../progress/circular-progress.js';\n\ndefineComponents(\n IgcIconComponent,\n IgcCheckboxComponent,\n IgcCircularProgressComponent\n);\n\nconst sizeMultiplier: Record<'small' | 'medium' | 'large', number> = {\n small: 1 / 2,\n medium: 2 / 3,\n large: 1,\n};\n\n/**\n * The tree-item component represents a child item of the tree component or another tree item.\n *\n * @element igc-tree-item\n *\n * @slot - Renders nested tree-item component.\n * @slot label - Renders the tree item container.\n * @slot indicator - Renders the expand indicator container.\n * @slot loading - Renders the tree item loading indicator container.\n * @slot indentation - Renders the container (by default the space) before the tree item.\n *\n * @csspart wrapper - The wrapper for the tree item.\n * @csspart selected - Indicates selected state. Applies to `wrapper`.\n * @csspart focused - Indicates focused state. Applies to `wrapper`.\n * @csspart active - Indicates an active state. Applies to `wrapper`.\n * @csspart indicator - The expand indicator of the tree item.\n * @csspart label - The tree item content.\n * @csspart text - The tree item displayed text.\n * @csspart select - The checkbox of the tree item when selection is enabled.\n */\n@themes({ bootstrap, fluent, indigo })\nexport default class IgcTreeItemComponent extends LitElement {\n /** @private */\n public static readonly tagName = 'igc-tree-item';\n /** @private */\n public static override styles = styles;\n\n private tabbableEl?: HTMLElement[];\n private focusedProgrammatically = false;\n\n /** A reference to the tree the item is a part of. */\n @blazorSuppress()\n public tree?: IgcTreeComponent;\n /** The parent item of the current tree item (if any) */\n public parent: IgcTreeItemComponent | null = null;\n\n /** @private */\n @blazorSuppress()\n public init = false;\n\n @queryAssignedElements({ slot: 'label', flatten: true })\n private contentList!: Array<HTMLElement>;\n\n /** @private */\n @query('#wrapper')\n @blazorSuppress()\n public wrapper!: HTMLElement;\n\n @state()\n private isFocused = false;\n\n /** @private */\n @state()\n @blazorSuppress()\n public hasChildren = false;\n\n /** The depth of the item, relative to the root. */\n @state()\n public level = 0;\n\n /** @private */\n @state()\n @blazorSuppress()\n public indeterminate = false;\n\n /**\n * The tree item label.\n * @attr\n */\n @property()\n public label = '';\n\n /**\n * The tree item expansion state.\n * @attr\n */\n @property({ reflect: true, type: Boolean })\n public expanded = false;\n\n /**\n * Marks the item as the tree's active item.\n * @attr\n */\n @property({ reflect: true, type: Boolean })\n public active = false;\n\n /**\n * Get/Set whether the tree item is disabled. Disabled items are ignored for user interactions.\n * @attr\n */\n @property({ reflect: true, type: Boolean })\n public disabled = false;\n\n /**\n * The tree item selection state.\n * @attr\n */\n @property({ reflect: true, type: Boolean })\n public selected = false;\n\n /**\n * To be used for load-on-demand scenarios in order to specify whether the item is loading data.\n * @attr\n */\n @property({ reflect: true, type: Boolean })\n public loading = false;\n\n /**\n * The value entry that the tree item is visualizing. Required for searching through items.\n * @type any\n * @attr\n */\n @property({ attribute: true })\n public value: any = undefined;\n\n @watch('expanded', { waitUntilFirstUpdate: true })\n @watch('hasChildren', { waitUntilFirstUpdate: true })\n protected bothChange(): void {\n if (this.hasChildren) {\n this.setAttribute('aria-expanded', this.expanded.toString());\n } else {\n this.removeAttribute('aria-expanded');\n }\n }\n\n @watch('expanded')\n protected expandedChange(oldValue: boolean): void {\n // always update the visible cache\n this.navService?.update_visible_cache(this, this.expanded);\n if (!oldValue) {\n return;\n }\n // await for load on demand children\n Promise.resolve().then(() => {\n if (this.navService?.focusedItem !== this && !this.isFocused) {\n this.navService?.focusedItem?.wrapper?.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'nearest',\n });\n }\n });\n }\n\n @watch('active', { waitUntilFirstUpdate: true })\n protected activeChange(): void {\n if ((this.active && this.navService?.activeItem === this) || !this.active) {\n return;\n }\n if (this.navService) {\n this.navService.setActiveItem(this, false);\n }\n // Expand and scroll to the newly active item\n this.tree?.expandToItem(this);\n // Await for expanding\n Promise.resolve().then(() => {\n this.wrapper?.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'nearest',\n });\n });\n }\n\n @watch('disabled')\n protected disabledChange(): void {\n this.navService?.update_disabled_cache(this);\n }\n\n @watch('selected', { waitUntilFirstUpdate: true })\n protected selectedChange(): void {\n if (this.selected && !this.selectionService?.isItemSelected(this)) {\n this.selectionService?.selectItemsWithNoEvent([this]);\n }\n if (!this.selected && this.selectionService?.isItemSelected(this)) {\n this.selectionService?.deselectItemsWithNoEvent([this]);\n }\n }\n\n public override connectedCallback(): void {\n super.connectedCallback();\n this.tree = this.closest('igc-tree') as IgcTreeComponent;\n this.parent =\n this.parentElement?.tagName.toLowerCase() === 'igc-tree-item'\n ? (this.parentElement as IgcTreeItemComponent)\n : null;\n this.level = this.parent ? this.parent.level + 1 : 0;\n this.setAttribute('role', 'treeitem');\n this.addEventListener('blur', this.onBlur);\n this.addEventListener('focus', this.onFocus);\n this.addEventListener('pointerdown', this.pointerDown);\n this.activeChange();\n // if the item is not added/moved runtime\n if (this.init) {\n this.selectedChange();\n } else {\n // retriger the item selection state in order to update the collections within the selectionService\n // and to handle correctly the itemParents recursively to the top-most ancestor\n this.selectionService?.retriggerItemState(this);\n }\n this.init = false;\n }\n\n public override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.selectionService?.ensureStateOnItemDelete(this);\n this.navService?.delete_item(this);\n }\n\n private get selectionService(): IgcTreeSelectionService | undefined {\n return this.tree?.selectionService;\n }\n\n private get navService(): IgcTreeNavigationService | undefined {\n return this.tree?.navService;\n }\n\n private get parts() {\n return {\n selected: this.selected,\n focused: this.isFocused,\n active: this.active,\n };\n }\n\n private get directChildren(): Array<IgcTreeItemComponent> {\n return Array.from(this.children).filter(\n (x) => x.tagName.toLowerCase() === 'igc-tree-item'\n ) as IgcTreeItemComponent[];\n }\n\n private get allChildren(): Array<IgcTreeItemComponent> {\n return Array.from(this.querySelectorAll(`igc-tree-item`));\n }\n\n /** The full path to the tree item, starting from the top-most ancestor. */\n public get path(): IgcTreeItemComponent[] {\n return this.parent?.path ? [...this.parent.path, this] : [this];\n }\n\n private pointerDown(event: MouseEvent): void {\n event.stopPropagation();\n if (this.disabled) {\n return;\n }\n this.tabIndex = 0;\n this.navService?.setFocusedAndActiveItem(this, true, false);\n }\n\n private expandIndicatorClick(): void {\n if (this.disabled) {\n return;\n }\n if (this.expanded) {\n this.collapseWithEvent();\n } else {\n this.expandWithEvent();\n }\n }\n\n private selectorClick(event: MouseEvent): void {\n event.preventDefault();\n if (event.shiftKey) {\n this.selectionService?.selectMultipleItems(this);\n return;\n }\n if (this.selected) {\n this.selectionService?.deselectItem(this);\n } else {\n this.selectionService?.selectItem(this);\n }\n }\n\n private onFocus(): void {\n if (this.disabled) {\n return;\n }\n if (this.navService?.focusedItem !== this) {\n this.navService?.focusItem(this, false);\n this.wrapper?.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'nearest',\n });\n }\n if (this.tabbableEl && this.tabbableEl.length) {\n // set tabIndex = 0 to all tabbable elements\n // focus the first one\n this.tabbableEl.forEach((element: HTMLElement) => {\n element.tabIndex = 0;\n });\n this.focusedProgrammatically = true;\n this.tabbableEl[0].focus();\n return;\n }\n this.isFocused = true;\n }\n\n private onBlur(): void {\n this.isFocused = false;\n }\n\n private onFocusIn(ev: Event): void {\n ev?.stopPropagation();\n if (!this.disabled) {\n // clicking directly over tabbable element when the item is not focused\n if (!this.focusedProgrammatically) {\n this.tabbableEl?.forEach((element: HTMLElement) => {\n element.tabIndex = 0;\n });\n }\n this.removeAttribute('tabIndex');\n this.isFocused = true;\n this.focusedProgrammatically = false;\n }\n }\n\n private onFocusOut(ev: Event): void {\n ev?.stopPropagation();\n this.isFocused = false;\n this.tabbableEl?.forEach((element: HTMLElement) => {\n element.tabIndex = -1;\n });\n\n if (this.navService?.focusedItem === this) {\n // called twice when clicking on already focused item with link (pointerDown handler)\n this.setAttribute('tabindex', '0');\n }\n }\n\n private labelChange(): void {\n const firstElement = this.contentList[0];\n const tabbableSelector =\n 'a[href], button, input, textarea, select, details, [tabindex]:not([tabindex=\"-1\"])';\n\n this.tabbableEl = [\n ...firstElement.querySelectorAll<HTMLElement>(tabbableSelector),\n ];\n if (firstElement.matches(tabbableSelector)) {\n this.tabbableEl.splice(0, 0, firstElement);\n }\n\n if (this.tabbableEl && this.tabbableEl.length) {\n this.setAttribute('role', 'none');\n this.tabbableEl[0].setAttribute('role', 'treeitem');\n\n this.tabbableEl.forEach((element: HTMLElement) => {\n element.tabIndex = -1;\n });\n } else {\n this.setAttribute('role', 'treeitem');\n }\n }\n\n private handleChange(): void {\n this.hasChildren = !!this.directChildren.length;\n // there is no need to update nested children beacuse they're state is already up to date\n this.navService?.update_visible_cache(this, this.expanded, false);\n }\n\n /**\n * Returns a collection of child items.\n * If the parameter value is true returns all tree item's direct children,\n * otherwise - only the direct children.\n */\n @blazorSuppress()\n public getChildren(\n options: { flatten: boolean } = { flatten: false }\n ): IgcTreeItemComponent[] {\n if (options.flatten) {\n return this.allChildren;\n } else {\n return this.directChildren;\n }\n }\n\n /**\n * @private\n * Expands the tree item.\n */\n public expandWithEvent(): void {\n if (this.expanded) {\n return;\n }\n const args = {\n detail: this,\n cancelable: true,\n };\n\n const allowed = this.tree?.emitEvent('igcItemExpanding', args);\n\n if (!allowed) {\n return;\n }\n\n if (this.tree?.singleBranchExpand) {\n const pathSet = new Set(this.path.splice(0, this.path.length - 1));\n this.tree.items.forEach((item: IgcTreeItemComponent) => {\n if (!pathSet.has(item)) {\n item.collapseWithEvent();\n }\n });\n }\n\n this.expanded = true;\n this.tree?.emitEvent('igcItemExpanded', { detail: this });\n }\n\n /**\n * @private\n * Collapses the tree item.\n */\n public collapseWithEvent(): void {\n if (!this.expanded) {\n return;\n }\n const args = {\n detail: this,\n cancelable: true,\n };\n\n const allowed = this.tree?.emitEvent('igcItemCollapsing', args);\n\n if (!allowed) {\n return;\n }\n this.expanded = false;\n this.tree?.emitEvent('igcItemCollapsed', { detail: this });\n }\n\n /** Toggles tree item expansion state. */\n public toggle(): void {\n this.expanded = !this.expanded;\n }\n\n /** Expands the tree item. */\n public expand(): void {\n this.expanded = true;\n }\n\n /** Collapses the tree item. */\n public collapse(): void {\n this.expanded = false;\n }\n\n protected override render() {\n const size = this.level * (this.tree ? sizeMultiplier[this.tree!.size] : 1);\n\n return html`\n <div\n id=\"wrapper\"\n part=\"wrapper ${this.tree?.size} ${partNameMap(this.parts)}\"\n >\n <div\n style=\"width: calc(${size} * var(--igc-tree-indentation-size))\"\n part=\"indentation\"\n aria-hidden=\"true\"\n >\n <slot name=\"indentation\"></slot>\n </div>\n <div part=\"indicator\" aria-hidden=\"true\">\n ${this.loading\n ? html`\n <slot name=\"loading\">\n <igc-circular-progress indeterminate></igc-circular-progress>\n </slot>\n `\n : html`\n <slot name=\"indicator\" @click=${this.expandIndicatorClick}>\n ${this.hasChildren\n ? html`\n <igc-icon\n name=${this.expanded\n ? 'keyboard_arrow_down'\n : this.tree?.dir === 'rtl'\n ? 'navigate_before'\n : 'keyboard_arrow_right'}\n collection=\"internal\"\n >\n </igc-icon>\n `\n : ''}\n </slot>\n `}\n </div>\n ${this.tree?.selection !== 'none'\n ? html`\n <div part=\"select\" aria-hidden=\"true\">\n <igc-checkbox\n @click=${this.selectorClick}\n .checked=${this.selected}\n .indeterminate=${this.indeterminate}\n .disabled=${this.disabled}\n tabindex=\"-1\"\n >\n </igc-checkbox>\n </div>\n `\n : ''}\n <div part=\"label\">\n <slot\n name=\"label\"\n @slotchange=${this.labelChange}\n @focusin=${this.onFocusIn}\n @focusout=${this.onFocusOut}\n >\n <span part=\"text\">${this.label}</span>\n </slot>\n </div>\n </div>\n <div role=\"group\">\n <slot @slotchange=${this.handleChange} ?hidden=${!this.expanded}></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-tree-item': IgcTreeItemComponent;\n }\n}\n"]}
1
+ {"version":3,"file":"tree-item.js","sourceRoot":"","sources":["../../../src/components/tree/tree-item.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n property,\n query,\n queryAssignedElements,\n state,\n} from 'lit/decorators.js';\nimport { html, LitElement } from 'lit';\nimport { isLTR, partNameMap } from '../common/util.js';\nimport { styles } from './themes/light/tree-item.base.css.js';\nimport { styles as bootstrap } from './themes/light/tree-item.bootstrap.css.js';\nimport { styles as fluent } from './themes/light/tree-item.fluent.css.js';\nimport { styles as indigo } from './themes/light/tree-item.indigo.css.js';\nimport { styles as material } from './themes/light/tree-item.material.css.js';\nimport type IgcTreeComponent from './tree.js';\nimport { watch } from '../common/decorators/watch.js';\nimport { IgcTreeSelectionService } from './tree.selection.js';\nimport { IgcTreeNavigationService } from './tree.navigation.js';\nimport { themes } from '../../theming/theming-decorator.js';\nimport { blazorSuppress } from '../common/decorators/blazorSuppress.js';\nimport {\n AnimationPlayer,\n growVerIn,\n growVerOut,\n} from '../../animations/index.js';\n\nimport { defineComponents } from '../common/definitions/defineComponents.js';\nimport IgcIconComponent from '../icon/icon.js';\nimport IgcCheckboxComponent from '../checkbox/checkbox.js';\nimport IgcCircularProgressComponent from '../progress/circular-progress.js';\n\ndefineComponents(\n IgcIconComponent,\n IgcCheckboxComponent,\n IgcCircularProgressComponent\n);\n\nconst sizeMultiplier: Record<'small' | 'medium' | 'large', number> = {\n small: 1 / 2,\n medium: 2 / 3,\n large: 1,\n};\n\n/**\n * The tree-item component represents a child item of the tree component or another tree item.\n *\n * @element igc-tree-item\n *\n * @slot - Renders nested tree-item component.\n * @slot label - Renders the tree item container.\n * @slot indicator - Renders the expand indicator container.\n * @slot loading - Renders the tree item loading indicator container.\n * @slot indentation - Renders the container (by default the space) before the tree item.\n *\n * @csspart wrapper - The wrapper for the tree item.\n * @csspart selected - Indicates selected state. Applies to `wrapper`.\n * @csspart focused - Indicates focused state. Applies to `wrapper`.\n * @csspart active - Indicates an active state. Applies to `wrapper`.\n * @csspart indicator - The expand indicator of the tree item.\n * @csspart label - The tree item content.\n * @csspart text - The tree item displayed text.\n * @csspart select - The checkbox of the tree item when selection is enabled.\n */\n@themes({ bootstrap, fluent, indigo, material })\nexport default class IgcTreeItemComponent extends LitElement {\n /** @private */\n public static readonly tagName = 'igc-tree-item';\n /** @private */\n public static override styles = styles;\n\n private tabbableEl?: HTMLElement[];\n private focusedProgrammatically = false;\n private animationPlayer!: AnimationPlayer;\n\n /** A reference to the tree the item is a part of. */\n @blazorSuppress()\n public tree?: IgcTreeComponent;\n /** The parent item of the current tree item (if any) */\n public parent: IgcTreeItemComponent | null = null;\n\n /** @private */\n @blazorSuppress()\n public init = false;\n\n @queryAssignedElements({ slot: 'label', flatten: true })\n private contentList!: Array<HTMLElement>;\n\n /** @private */\n @query('#wrapper')\n @blazorSuppress()\n public wrapper!: HTMLElement;\n\n /** @private */\n @query('[role=\"group\"]', true)\n private group!: HTMLElement;\n\n @state()\n private isFocused = false;\n\n /** @private */\n @state()\n @blazorSuppress()\n public hasChildren = false;\n\n /** The depth of the item, relative to the root. */\n @state()\n public level = 0;\n\n /** @private */\n @state()\n @blazorSuppress()\n public indeterminate = false;\n\n /**\n * The tree item label.\n * @attr\n */\n @property()\n public label = '';\n\n /**\n * The tree item expansion state.\n * @attr\n */\n @property({ reflect: true, type: Boolean })\n public expanded = false;\n\n /**\n * Marks the item as the tree's active item.\n * @attr\n */\n @property({ reflect: true, type: Boolean })\n public active = false;\n\n /**\n * Get/Set whether the tree item is disabled. Disabled items are ignored for user interactions.\n * @attr\n */\n @property({ reflect: true, type: Boolean })\n public disabled = false;\n\n /**\n * The tree item selection state.\n * @attr\n */\n @property({ reflect: true, type: Boolean })\n public selected = false;\n\n /**\n * To be used for load-on-demand scenarios in order to specify whether the item is loading data.\n * @attr\n */\n @property({ reflect: true, type: Boolean })\n public loading = false;\n\n /**\n * The value entry that the tree item is visualizing. Required for searching through items.\n * @type any\n * @attr\n */\n @property({ attribute: true })\n public value: any = undefined;\n\n public override firstUpdated() {\n this.animationPlayer = new AnimationPlayer(this.group);\n }\n\n private async toggleAnimation(dir: 'open' | 'close') {\n const animation = dir === 'open' ? growVerIn : growVerOut;\n\n const [_, event] = await Promise.all([\n this.animationPlayer.stopAll(),\n this.animationPlayer.play(animation()),\n ]);\n\n return event.type === 'finish';\n }\n\n @watch('expanded', { waitUntilFirstUpdate: true })\n @watch('hasChildren', { waitUntilFirstUpdate: true })\n protected bothChange(): void {\n if (this.hasChildren) {\n this.setAttribute('aria-expanded', this.expanded.toString());\n } else {\n this.removeAttribute('aria-expanded');\n }\n }\n\n @watch('expanded')\n protected expandedChange(oldValue: boolean): void {\n // always update the visible cache\n this.navService?.update_visible_cache(this, this.expanded);\n if (!oldValue) {\n return;\n }\n // await for load on demand children\n Promise.resolve().then(() => {\n if (this.navService?.focusedItem !== this && !this.isFocused) {\n this.navService?.focusedItem?.wrapper?.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'nearest',\n });\n }\n });\n }\n\n @watch('active', { waitUntilFirstUpdate: true })\n protected activeChange(): void {\n if ((this.active && this.navService?.activeItem === this) || !this.active) {\n return;\n }\n if (this.navService) {\n this.navService.setActiveItem(this, false);\n }\n // Expand and scroll to the newly active item\n this.tree?.expandToItem(this);\n // Await for expanding\n Promise.resolve().then(() => {\n this.wrapper?.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'nearest',\n });\n });\n }\n\n @watch('disabled')\n protected disabledChange(): void {\n this.navService?.update_disabled_cache(this);\n }\n\n @watch('selected', { waitUntilFirstUpdate: true })\n protected selectedChange(): void {\n if (this.selected && !this.selectionService?.isItemSelected(this)) {\n this.selectionService?.selectItemsWithNoEvent([this]);\n }\n if (!this.selected && this.selectionService?.isItemSelected(this)) {\n this.selectionService?.deselectItemsWithNoEvent([this]);\n }\n }\n\n public override connectedCallback(): void {\n super.connectedCallback();\n this.tree = this.closest('igc-tree') as IgcTreeComponent;\n this.parent = this.parentElement?.closest(\n 'igc-tree-item'\n ) as IgcTreeItemComponent | null;\n this.level = this.parent ? this.parent.level + 1 : 0;\n this.setAttribute('role', 'treeitem');\n this.addEventListener('blur', this.onBlur);\n this.addEventListener('focus', this.onFocus);\n this.addEventListener('pointerdown', this.pointerDown);\n this.activeChange();\n // if the item is not added/moved runtime\n if (this.init) {\n this.selectedChange();\n } else {\n // retriger the item selection state in order to update the collections within the selectionService\n // and to handle correctly the itemParents recursively to the top-most ancestor\n this.selectionService?.retriggerItemState(this);\n }\n this.init = false;\n }\n\n public override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.selectionService?.ensureStateOnItemDelete(this);\n this.navService?.delete_item(this);\n }\n\n private get selectionService(): IgcTreeSelectionService | undefined {\n return this.tree?.selectionService;\n }\n\n private get navService(): IgcTreeNavigationService | undefined {\n return this.tree?.navService;\n }\n\n private get parts() {\n return {\n selected: this.selected,\n focused: this.isFocused,\n active: this.active,\n };\n }\n\n private get directChildren(): Array<IgcTreeItemComponent> {\n return this.allChildren.filter(\n (x) =>\n (x.parent ?? x.parentElement?.closest('igc-tree-item'))?.isSameNode(\n this\n )\n ) as IgcTreeItemComponent[];\n }\n\n private get allChildren(): Array<IgcTreeItemComponent> {\n return Array.from(this.querySelectorAll(`igc-tree-item`));\n }\n\n /** The full path to the tree item, starting from the top-most ancestor. */\n public get path(): IgcTreeItemComponent[] {\n return this.parent?.path ? [...this.parent.path, this] : [this];\n }\n\n private pointerDown(event: MouseEvent): void {\n event.stopPropagation();\n if (this.disabled) {\n return;\n }\n this.tabIndex = 0;\n this.navService?.setFocusedAndActiveItem(this, true, false);\n }\n\n private expandIndicatorClick(): void {\n if (this.disabled) {\n return;\n }\n if (this.expanded) {\n this.collapseWithEvent();\n } else {\n this.expandWithEvent();\n }\n }\n\n private selectorClick(event: MouseEvent): void {\n event.preventDefault();\n if (event.shiftKey) {\n this.selectionService?.selectMultipleItems(this);\n return;\n }\n if (this.selected) {\n this.selectionService?.deselectItem(this);\n } else {\n this.selectionService?.selectItem(this);\n }\n }\n\n private onFocus(): void {\n if (this.disabled) {\n return;\n }\n if (this.navService?.focusedItem !== this) {\n this.navService?.focusItem(this, false);\n this.wrapper?.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'nearest',\n });\n }\n if (this.tabbableEl && this.tabbableEl.length) {\n // set tabIndex = 0 to all tabbable elements\n // focus the first one\n this.tabbableEl.forEach((element: HTMLElement) => {\n element.tabIndex = 0;\n });\n this.focusedProgrammatically = true;\n this.tabbableEl[0].focus();\n return;\n }\n this.isFocused = true;\n }\n\n private onBlur(): void {\n this.isFocused = false;\n }\n\n private onFocusIn(ev: Event): void {\n ev?.stopPropagation();\n if (!this.disabled) {\n // clicking directly over tabbable element when the item is not focused\n if (!this.focusedProgrammatically) {\n this.tabbableEl?.forEach((element: HTMLElement) => {\n element.tabIndex = 0;\n });\n }\n this.removeAttribute('tabIndex');\n this.isFocused = true;\n this.focusedProgrammatically = false;\n }\n }\n\n private onFocusOut(ev: Event): void {\n ev?.stopPropagation();\n this.isFocused = false;\n this.tabbableEl?.forEach((element: HTMLElement) => {\n element.tabIndex = -1;\n });\n\n if (this.navService?.focusedItem === this) {\n // called twice when clicking on already focused item with link (pointerDown handler)\n this.setAttribute('tabindex', '0');\n }\n }\n\n private labelChange(): void {\n const firstElement = this.contentList[0];\n const tabbableSelector =\n 'a[href], button, input, textarea, select, details, [tabindex]:not([tabindex=\"-1\"])';\n\n this.tabbableEl = [\n ...firstElement.querySelectorAll<HTMLElement>(tabbableSelector),\n ];\n if (firstElement.matches(tabbableSelector)) {\n this.tabbableEl.splice(0, 0, firstElement);\n }\n\n if (this.tabbableEl && this.tabbableEl.length) {\n this.setAttribute('role', 'none');\n this.tabbableEl[0].setAttribute('role', 'treeitem');\n\n this.tabbableEl.forEach((element: HTMLElement) => {\n element.tabIndex = -1;\n });\n } else {\n this.setAttribute('role', 'treeitem');\n }\n }\n\n private handleChange(): void {\n this.hasChildren = !!this.directChildren.length;\n // there is no need to update nested children beacuse they're state is already up to date\n this.navService?.update_visible_cache(this, this.expanded, false);\n }\n\n /**\n * Returns a collection of child items.\n * If the parameter value is true returns all tree item's direct children,\n * otherwise - only the direct children.\n */\n @blazorSuppress()\n public getChildren(\n options: { flatten: boolean } = { flatten: false }\n ): IgcTreeItemComponent[] {\n if (options.flatten) {\n return this.allChildren;\n } else {\n return this.directChildren;\n }\n }\n\n /**\n * @private\n * Expands the tree item.\n */\n public async expandWithEvent() {\n if (this.expanded) {\n return;\n }\n const args = {\n detail: this,\n cancelable: true,\n };\n\n const allowed = this.tree?.emitEvent('igcItemExpanding', args);\n\n if (!allowed) {\n return;\n }\n\n if (this.tree?.singleBranchExpand) {\n const pathSet = new Set(this.path.splice(0, this.path.length - 1));\n this.tree.items.forEach((item: IgcTreeItemComponent) => {\n if (!pathSet.has(item)) {\n item.collapseWithEvent();\n }\n });\n }\n\n this.expanded = true;\n if (await this.toggleAnimation('open')) {\n this.tree?.emitEvent('igcItemExpanded', { detail: this });\n }\n }\n\n /**\n * @private\n * Collapses the tree item.\n */\n public async collapseWithEvent() {\n if (!this.expanded) {\n return;\n }\n const args = {\n detail: this,\n cancelable: true,\n };\n\n const allowed = this.tree?.emitEvent('igcItemCollapsing', args);\n\n if (!allowed) {\n return;\n }\n\n this.expanded = false;\n if (await this.toggleAnimation('close')) {\n this.tree?.emitEvent('igcItemCollapsed', { detail: this });\n }\n }\n\n /** Toggles tree item expansion state. */\n public toggle(): void {\n this.expanded = !this.expanded;\n }\n\n /** Expands the tree item. */\n public expand(): void {\n this.expanded = true;\n }\n\n /** Collapses the tree item. */\n public collapse(): void {\n this.expanded = false;\n }\n\n protected override render() {\n const size = this.level * (this.tree ? sizeMultiplier[this.tree!.size] : 1);\n const ltr = this.tree ? isLTR(this.tree) : true;\n\n return html`\n <div\n id=\"wrapper\"\n part=\"wrapper ${this.tree?.size} ${partNameMap(this.parts)}\"\n >\n <div\n style=\"width: calc(${size} * var(--igc-tree-indentation-size))\"\n part=\"indentation\"\n aria-hidden=\"true\"\n >\n <slot name=\"indentation\"></slot>\n </div>\n <div part=\"indicator\" aria-hidden=\"true\">\n ${this.loading\n ? html`\n <slot name=\"loading\">\n <igc-circular-progress indeterminate></igc-circular-progress>\n </slot>\n `\n : html`\n <slot name=\"indicator\" @click=${this.expandIndicatorClick}>\n ${this.hasChildren\n ? html`\n <igc-icon\n name=${this.expanded\n ? 'keyboard_arrow_down'\n : !ltr\n ? 'navigate_before'\n : 'keyboard_arrow_right'}\n collection=\"internal\"\n >\n </igc-icon>\n `\n : ''}\n </slot>\n `}\n </div>\n ${this.tree?.selection !== 'none'\n ? html`\n <div part=\"select\" aria-hidden=\"true\">\n <igc-checkbox\n @click=${this.selectorClick}\n .checked=${this.selected}\n .indeterminate=${this.indeterminate}\n .disabled=${this.disabled}\n tabindex=\"-1\"\n >\n </igc-checkbox>\n </div>\n `\n : ''}\n <div part=\"label\">\n <slot\n name=\"label\"\n @slotchange=${this.labelChange}\n @focusin=${this.onFocusIn}\n @focusout=${this.onFocusOut}\n >\n <span part=\"text\">${this.label}</span>\n </slot>\n </div>\n </div>\n <div role=\"group\" aria-hidden=${!this.expanded}>\n <slot @slotchange=${this.handleChange}></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-tree-item': IgcTreeItemComponent;\n }\n}\n"]}
@@ -3,7 +3,6 @@ import { Constructor } from '../common/mixins/constructor.js';
3
3
  import { IgcTreeEventMap } from './tree.common.js';
4
4
  import { IgcTreeNavigationService } from './tree.navigation.js';
5
5
  import { IgcTreeSelectionService } from './tree.selection.js';
6
- import { Direction } from '../common/types.js';
7
6
  import IgcTreeItemComponent from './tree-item.js';
8
7
  declare const IgcTreeComponent_base: Constructor<import("../common/mixins/sizable.js").SizableInterface> & import("../common/mixins/constructor.js").AbstractConstructor<import("../common/mixins/event-emitter.js").EventEmitterInterface<IgcTreeEventMap>> & Constructor<LitElement>;
9
8
  /**
@@ -40,11 +39,6 @@ export default class IgcTreeComponent extends IgcTreeComponent_base {
40
39
  * @attr
41
40
  */
42
41
  selection: 'none' | 'multiple' | 'cascade';
43
- /**
44
- * The direction attribute of the control.
45
- * @attr
46
- */
47
- dir: Direction;
48
42
  protected onDirChange(): void;
49
43
  protected onSizeChange(): void;
50
44
  protected selectionModeChange(): void;
@@ -62,7 +62,6 @@ let IgcTreeComponent = class IgcTreeComponent extends SizableMixin(EventEmitterM
62
62
  super();
63
63
  this.singleBranchExpand = false;
64
64
  this.selection = 'none';
65
- this.dir = 'auto';
66
65
  this.selectionService = new IgcTreeSelectionService(this);
67
66
  this.navService = new IgcTreeNavigationService(this, this.selectionService);
68
67
  }
@@ -132,9 +131,6 @@ __decorate([
132
131
  __decorate([
133
132
  property({ reflect: true })
134
133
  ], IgcTreeComponent.prototype, "selection", void 0);
135
- __decorate([
136
- property({ reflect: true })
137
- ], IgcTreeComponent.prototype, "dir", void 0);
138
134
  __decorate([
139
135
  watch('dir')
140
136
  ], IgcTreeComponent.prototype, "onDirChange", null);
@@ -1 +1 @@
1
- {"version":3,"file":"tree.js","sourceRoot":"","sources":["../../../src/components/tree/tree.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { watch } from '../common/decorators/watch.js';\nimport { styles } from './themes/light/tree.base.css.js';\nimport { Constructor } from '../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../common/mixins/event-emitter.js';\nimport { SizableMixin } from '../common/mixins/sizable.js';\nimport { IgcTreeEventMap } from './tree.common.js';\nimport { IgcTreeNavigationService } from './tree.navigation.js';\nimport { IgcTreeSelectionService } from './tree.selection.js';\nimport { blazorSuppress } from '../common/decorators/blazorSuppress.js';\nimport { blazorAdditionalDependencies } from '../common/decorators/blazorAdditionalDependencies.js';\nimport { Direction } from '../common/types.js';\n\nimport { defineComponents } from '../common/definitions/defineComponents.js';\nimport IgcTreeItemComponent from './tree-item.js';\n\ndefineComponents(IgcTreeItemComponent);\n\n/**\n * The tree allows users to represent hierarchical data in a tree-view structure,\n * maintaining parent-child relationships, as well as to define static tree-view structure without a corresponding data model.\n *\n * @element igc-tree\n *\n * @slot - Renders the tree items inside default slot.\n *\n * @fires igcSelection - Emitted when item selection is changing, before the selection completes.\n * @fires igcItemCollapsed - Emitted when tree item is collapsed.\n * @fires igcItemCollapsing - Emitted when tree item is about to collapse.\n * @fires igcItemExpanded - Emitted when tree item is expanded.\n * @fires igcItemExpanding - Emitted when tree item is about to expand.\n * @fires igcItemActivated - Emitted when the tree's `active` item changes.\n */\n@blazorAdditionalDependencies('IgcTreeItemComponent')\nexport default class IgcTreeComponent extends SizableMixin(\n EventEmitterMixin<IgcTreeEventMap, Constructor<LitElement>>(LitElement)\n) {\n /** @private */\n public static readonly tagName = 'igc-tree';\n /** @private */\n public static styles = styles;\n\n /** @private */\n @blazorSuppress()\n public selectionService!: IgcTreeSelectionService;\n /** @private */\n @blazorSuppress()\n public navService!: IgcTreeNavigationService;\n\n /**\n * Whether a single or multiple of a parent's child items can be expanded.\n * @attr single-branch-expand\n */\n @property({ attribute: 'single-branch-expand', reflect: true, type: Boolean })\n public singleBranchExpand = false;\n\n /**\n * The selection state of the tree.\n * @attr\n */\n @property({ reflect: true })\n public selection: 'none' | 'multiple' | 'cascade' = 'none';\n\n /**\n * The direction attribute of the control.\n * @attr\n */\n @property({ reflect: true })\n public override dir: Direction = 'auto';\n\n @watch('dir')\n protected onDirChange(): void {\n this.items?.forEach((item: IgcTreeItemComponent) => {\n item.requestUpdate();\n });\n }\n\n @watch('size', { waitUntilFirstUpdate: true })\n protected onSizeChange(): void {\n this.items?.forEach((item: IgcTreeItemComponent) => {\n item.requestUpdate();\n });\n this.navService.activeItem?.wrapper?.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'nearest',\n });\n }\n\n @watch('selection', { waitUntilFirstUpdate: true })\n protected selectionModeChange(): void {\n this.selectionService.clearItemsSelection();\n this.items?.forEach((item: IgcTreeItemComponent) => {\n item.requestUpdate();\n });\n }\n\n @watch('singleBranchExpand')\n protected singleBranchExpandChange(): void {\n if (this.singleBranchExpand) {\n // if activeItem -> do not collapse its branch\n if (this.navService.activeItem) {\n const path = this.navService.activeItem.path;\n const remainExpanded = new Set(path.splice(0, path.length - 1));\n this.items.forEach((item) => {\n if (!remainExpanded.has(item)) {\n item.collapseWithEvent();\n }\n });\n } else {\n this.items.forEach((item) => item.collapseWithEvent());\n }\n }\n }\n\n constructor() {\n super();\n this.selectionService = new IgcTreeSelectionService(this);\n this.navService = new IgcTreeNavigationService(this, this.selectionService);\n }\n\n public override connectedCallback(): void {\n super.connectedCallback();\n this.setAttribute('role', 'tree');\n this.addEventListener('keydown', this.handleKeydown);\n // set init to true for all items which are rendered along with the tree\n this.items.forEach((i: IgcTreeItemComponent) => {\n i.init = true;\n });\n const firstNotDisabledItem = this.items.find(\n (i: IgcTreeItemComponent) => !i.disabled\n );\n if (firstNotDisabledItem) {\n firstNotDisabledItem.tabIndex = 0;\n this.navService.focusItem(firstNotDisabledItem);\n }\n }\n\n /** Returns all of the tree's items. */\n @blazorSuppress()\n public get items(): Array<IgcTreeItemComponent> {\n return Array.from(this.querySelectorAll(`igc-tree-item`));\n }\n\n private handleKeydown(event: KeyboardEvent) {\n this.navService.handleKeydown(event);\n }\n\n /** @private */\n public expandToItem(item: IgcTreeItemComponent): void {\n if (item && item.parent) {\n item.path.forEach((i) => {\n if (i !== item && !i.expanded) {\n i.expanded = true;\n }\n });\n }\n }\n\n /** Select all items if the items collection is empty. Otherwise, select the items in the items collection. */\n @blazorSuppress()\n public select(\n /* alternateType: TreeItemCollection */\n items?: IgcTreeItemComponent[]\n ): void {\n if (!items) {\n items =\n this.selection === 'cascade'\n ? this.items.filter((item: IgcTreeItemComponent) => item.level === 0)\n : this.items;\n }\n this.selectionService.selectItemsWithNoEvent(items);\n }\n\n /** Deselect all items if the items collection is empty. Otherwise, deselect the items in the items collection. */\n @blazorSuppress()\n public deselect(\n /* alternateType: TreeItemCollection */\n items?: IgcTreeItemComponent[]\n ): void {\n this.selectionService.deselectItemsWithNoEvent(items);\n }\n\n /**\n * Expands all of the passed items.\n * If no items are passed, expands ALL items.\n */\n @blazorSuppress()\n public expand(\n /* alternateType: TreeItemCollection */\n items?: IgcTreeItemComponent[]\n ): void {\n items = items || this.items;\n items.forEach((item) => (item.expanded = true));\n }\n\n /**\n * Collapses all of the passed items.\n * If no items are passed, collapses ALL items.\n */\n @blazorSuppress()\n public collapse(\n /* alternateType: TreeItemCollection */\n items?: IgcTreeItemComponent[]\n ): void {\n items = items || this.items;\n items.forEach((item) => (item.expanded = false));\n }\n\n protected override render() {\n return html`<slot></slot>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-tree': IgcTreeComponent;\n }\n}\n"]}
1
+ {"version":3,"file":"tree.js","sourceRoot":"","sources":["../../../src/components/tree/tree.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { watch } from '../common/decorators/watch.js';\nimport { styles } from './themes/light/tree.base.css.js';\nimport { Constructor } from '../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../common/mixins/event-emitter.js';\nimport { SizableMixin } from '../common/mixins/sizable.js';\nimport { IgcTreeEventMap } from './tree.common.js';\nimport { IgcTreeNavigationService } from './tree.navigation.js';\nimport { IgcTreeSelectionService } from './tree.selection.js';\nimport { blazorSuppress } from '../common/decorators/blazorSuppress.js';\nimport { blazorAdditionalDependencies } from '../common/decorators/blazorAdditionalDependencies.js';\n\nimport { defineComponents } from '../common/definitions/defineComponents.js';\nimport IgcTreeItemComponent from './tree-item.js';\n\ndefineComponents(IgcTreeItemComponent);\n\n/**\n * The tree allows users to represent hierarchical data in a tree-view structure,\n * maintaining parent-child relationships, as well as to define static tree-view structure without a corresponding data model.\n *\n * @element igc-tree\n *\n * @slot - Renders the tree items inside default slot.\n *\n * @fires igcSelection - Emitted when item selection is changing, before the selection completes.\n * @fires igcItemCollapsed - Emitted when tree item is collapsed.\n * @fires igcItemCollapsing - Emitted when tree item is about to collapse.\n * @fires igcItemExpanded - Emitted when tree item is expanded.\n * @fires igcItemExpanding - Emitted when tree item is about to expand.\n * @fires igcItemActivated - Emitted when the tree's `active` item changes.\n */\n@blazorAdditionalDependencies('IgcTreeItemComponent')\nexport default class IgcTreeComponent extends SizableMixin(\n EventEmitterMixin<IgcTreeEventMap, Constructor<LitElement>>(LitElement)\n) {\n /** @private */\n public static readonly tagName = 'igc-tree';\n /** @private */\n public static styles = styles;\n\n /** @private */\n @blazorSuppress()\n public selectionService!: IgcTreeSelectionService;\n /** @private */\n @blazorSuppress()\n public navService!: IgcTreeNavigationService;\n\n /**\n * Whether a single or multiple of a parent's child items can be expanded.\n * @attr single-branch-expand\n */\n @property({ attribute: 'single-branch-expand', reflect: true, type: Boolean })\n public singleBranchExpand = false;\n\n /**\n * The selection state of the tree.\n * @attr\n */\n @property({ reflect: true })\n public selection: 'none' | 'multiple' | 'cascade' = 'none';\n\n @watch('dir')\n protected onDirChange(): void {\n this.items?.forEach((item: IgcTreeItemComponent) => {\n item.requestUpdate();\n });\n }\n\n @watch('size', { waitUntilFirstUpdate: true })\n protected onSizeChange(): void {\n this.items?.forEach((item: IgcTreeItemComponent) => {\n item.requestUpdate();\n });\n this.navService.activeItem?.wrapper?.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'nearest',\n });\n }\n\n @watch('selection', { waitUntilFirstUpdate: true })\n protected selectionModeChange(): void {\n this.selectionService.clearItemsSelection();\n this.items?.forEach((item: IgcTreeItemComponent) => {\n item.requestUpdate();\n });\n }\n\n @watch('singleBranchExpand')\n protected singleBranchExpandChange(): void {\n if (this.singleBranchExpand) {\n // if activeItem -> do not collapse its branch\n if (this.navService.activeItem) {\n const path = this.navService.activeItem.path;\n const remainExpanded = new Set(path.splice(0, path.length - 1));\n this.items.forEach((item) => {\n if (!remainExpanded.has(item)) {\n item.collapseWithEvent();\n }\n });\n } else {\n this.items.forEach((item) => item.collapseWithEvent());\n }\n }\n }\n\n constructor() {\n super();\n this.selectionService = new IgcTreeSelectionService(this);\n this.navService = new IgcTreeNavigationService(this, this.selectionService);\n }\n\n public override connectedCallback(): void {\n super.connectedCallback();\n this.setAttribute('role', 'tree');\n this.addEventListener('keydown', this.handleKeydown);\n // set init to true for all items which are rendered along with the tree\n this.items.forEach((i: IgcTreeItemComponent) => {\n i.init = true;\n });\n const firstNotDisabledItem = this.items.find(\n (i: IgcTreeItemComponent) => !i.disabled\n );\n if (firstNotDisabledItem) {\n firstNotDisabledItem.tabIndex = 0;\n this.navService.focusItem(firstNotDisabledItem);\n }\n }\n\n /** Returns all of the tree's items. */\n @blazorSuppress()\n public get items(): Array<IgcTreeItemComponent> {\n return Array.from(this.querySelectorAll(`igc-tree-item`));\n }\n\n private handleKeydown(event: KeyboardEvent) {\n this.navService.handleKeydown(event);\n }\n\n /** @private */\n public expandToItem(item: IgcTreeItemComponent): void {\n if (item && item.parent) {\n item.path.forEach((i) => {\n if (i !== item && !i.expanded) {\n i.expanded = true;\n }\n });\n }\n }\n\n /** Select all items if the items collection is empty. Otherwise, select the items in the items collection. */\n @blazorSuppress()\n public select(\n /* alternateType: TreeItemCollection */\n items?: IgcTreeItemComponent[]\n ): void {\n if (!items) {\n items =\n this.selection === 'cascade'\n ? this.items.filter((item: IgcTreeItemComponent) => item.level === 0)\n : this.items;\n }\n this.selectionService.selectItemsWithNoEvent(items);\n }\n\n /** Deselect all items if the items collection is empty. Otherwise, deselect the items in the items collection. */\n @blazorSuppress()\n public deselect(\n /* alternateType: TreeItemCollection */\n items?: IgcTreeItemComponent[]\n ): void {\n this.selectionService.deselectItemsWithNoEvent(items);\n }\n\n /**\n * Expands all of the passed items.\n * If no items are passed, expands ALL items.\n */\n @blazorSuppress()\n public expand(\n /* alternateType: TreeItemCollection */\n items?: IgcTreeItemComponent[]\n ): void {\n items = items || this.items;\n items.forEach((item) => (item.expanded = true));\n }\n\n /**\n * Collapses all of the passed items.\n * If no items are passed, collapses ALL items.\n */\n @blazorSuppress()\n public collapse(\n /* alternateType: TreeItemCollection */\n items?: IgcTreeItemComponent[]\n ): void {\n items = items || this.items;\n items.forEach((item) => (item.expanded = false));\n }\n\n protected override render() {\n return html`<slot></slot>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-tree': IgcTreeComponent;\n }\n}\n"]}
@@ -1,3 +1,4 @@
1
+ import { isLTR } from '../common/util.js';
1
2
  export const NAVIGATION_KEYS = new Set([
2
3
  'down',
3
4
  'up',
@@ -146,7 +147,7 @@ export class IgcTreeNavigationService {
146
147
  break;
147
148
  case 'arrowleft':
148
149
  case 'left':
149
- if (this.tree.dir === 'rtl') {
150
+ if (!isLTR(this.tree)) {
150
151
  this.handleArrowRight();
151
152
  }
152
153
  else {
@@ -155,7 +156,7 @@ export class IgcTreeNavigationService {
155
156
  break;
156
157
  case 'arrowright':
157
158
  case 'right':
158
- if (this.tree.dir === 'rtl') {
159
+ if (!isLTR(this.tree)) {
159
160
  this.handleArrowLeft();
160
161
  }
161
162
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"tree.navigation.js","sourceRoot":"","sources":["../../../src/components/tree/tree.navigation.ts"],"names":[],"mappings":"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","sourcesContent":["import IgcTreeComponent from './tree.js';\nimport IgcTreeItemComponent from './tree-item.js';\nimport { IgcTreeSelectionService } from './tree.selection.js';\n\nexport const NAVIGATION_KEYS = new Set([\n 'down',\n 'up',\n 'left',\n 'right',\n 'arrowdown',\n 'arrowup',\n 'arrowleft',\n 'arrowright',\n 'home',\n 'end',\n 'space',\n 'spacebar',\n ' ',\n]);\n\nexport class IgcTreeNavigationService {\n private tree!: IgcTreeComponent;\n private selectionService!: IgcTreeSelectionService;\n\n private _focusedItem: IgcTreeItemComponent | null = null;\n\n private _lastFocusedItem: IgcTreeItemComponent | null = null;\n private _activeItem: IgcTreeItemComponent | null = null;\n\n private _visibleChildren: IgcTreeItemComponent[] = [];\n private _invisibleChildren: Set<IgcTreeItemComponent> = new Set();\n private _disabledChildren: Set<IgcTreeItemComponent> = new Set();\n\n constructor(\n tree: IgcTreeComponent,\n selectionService: IgcTreeSelectionService\n ) {\n this.tree = tree;\n this.selectionService = selectionService;\n }\n\n public updateVisChild(): void {\n this._visibleChildren = this.tree?.items\n ? this.tree.items.filter(\n (i: IgcTreeItemComponent) =>\n !(this._invisibleChildren.has(i) || this._disabledChildren.has(i))\n )\n : [];\n }\n\n public get focusedItem(): IgcTreeItemComponent | null {\n return this._focusedItem;\n }\n\n public focusItem(value: IgcTreeItemComponent | null, shouldFocus = true) {\n if (this._focusedItem === value) {\n return;\n }\n this._lastFocusedItem = this._focusedItem;\n if (this._lastFocusedItem) {\n this._lastFocusedItem.removeAttribute('tabindex');\n }\n this._focusedItem = value;\n if (this._focusedItem !== null && shouldFocus) {\n this._focusedItem.tabIndex = 0;\n this._focusedItem.focus({\n preventScroll: true,\n });\n this._focusedItem.wrapper?.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'nearest',\n });\n }\n }\n\n public get activeItem(): IgcTreeItemComponent | null {\n return this._activeItem;\n }\n\n public setActiveItem(value: IgcTreeItemComponent | null, shouldEmit = true) {\n if (this._activeItem === value) {\n return;\n }\n if (this._activeItem && value) {\n this._activeItem.active = false;\n }\n this._activeItem = value;\n if (this._activeItem) {\n this._activeItem.active = true;\n }\n if (shouldEmit && this._activeItem) {\n this.tree.emitEvent('igcActiveItem', { detail: this._activeItem });\n }\n }\n\n public get visibleChildren(): IgcTreeItemComponent[] {\n return this._visibleChildren;\n }\n\n public update_disabled_cache(item: IgcTreeItemComponent): void {\n if (item.disabled) {\n this._disabledChildren.add(item);\n } else {\n this._disabledChildren.delete(item);\n }\n this.updateVisChild();\n }\n\n public delete_item(item: IgcTreeItemComponent) {\n if (this.activeItem === item) {\n this.setActiveItem(null);\n }\n if (this.focusedItem === item) {\n this.focusItem(null, false);\n const firstNotDisableItem = this.tree.items.find(\n (i: IgcTreeItemComponent) => !i.disabled\n );\n if (firstNotDisableItem) {\n firstNotDisableItem.tabIndex = 0;\n this.focusItem(firstNotDisableItem, false);\n }\n }\n }\n\n public update_visible_cache(\n item: IgcTreeItemComponent,\n expanded: boolean,\n shouldUpdateNestedChildren = true,\n shouldUpdate = true\n ): void {\n if (expanded && !this._invisibleChildren.has(item)) {\n item.getChildren()?.forEach((child: IgcTreeItemComponent) => {\n this._invisibleChildren.delete(child);\n if (shouldUpdateNestedChildren) {\n this.update_visible_cache(child, child.expanded, true, false);\n }\n });\n } else {\n item\n .getChildren({ flatten: true })\n ?.forEach((c: IgcTreeItemComponent) => this._invisibleChildren.add(c));\n }\n\n if (shouldUpdate) {\n this.updateVisChild();\n }\n }\n\n /**\n * Sets the item as focused (and active)\n *\n * @param item target item\n * @param isActive if true, sets the item as active\n */\n public setFocusedAndActiveItem(\n item: IgcTreeItemComponent,\n isActive = true,\n shouldFocus = true\n ): void {\n if (isActive) {\n this.setActiveItem(item);\n }\n this.focusItem(item, shouldFocus);\n }\n\n /** Handler for keydown events. Used in tree.component.ts */\n public handleKeydown(event: KeyboardEvent) {\n const key = event.key.toLowerCase();\n if (!this.focusedItem) {\n return;\n }\n if (!(NAVIGATION_KEYS.has(key) || key === '*')) {\n if (key === 'enter') {\n this.setActiveItem(this.focusedItem);\n }\n return;\n }\n event.preventDefault();\n this.handleNavigation(event);\n }\n\n private handleNavigation(event: KeyboardEvent) {\n switch (event.key.toLowerCase()) {\n case 'home':\n this.setFocusedAndActiveItem(this.visibleChildren[0]);\n break;\n case 'end':\n this.setFocusedAndActiveItem(\n this.visibleChildren[this.visibleChildren.length - 1]\n );\n break;\n case 'arrowleft':\n case 'left':\n if (this.tree.dir === 'rtl') {\n this.handleArrowRight();\n } else {\n this.handleArrowLeft();\n }\n break;\n case 'arrowright':\n case 'right':\n if (this.tree.dir === 'rtl') {\n this.handleArrowLeft();\n } else {\n this.handleArrowRight();\n }\n break;\n case 'arrowup':\n case 'up':\n this.handleUpDownArrow(true, event);\n break;\n case 'arrowdown':\n case 'down':\n this.handleUpDownArrow(false, event);\n break;\n case '*':\n this.handleAsterisk();\n break;\n case ' ':\n case 'spacebar':\n case 'space':\n this.handleSpace(event.shiftKey);\n break;\n default:\n return;\n }\n }\n\n private handleArrowLeft(): void {\n if (this.focusedItem?.expanded && this.focusedItem.getChildren()?.length) {\n this.setActiveItem(this.focusedItem);\n this.focusedItem.collapseWithEvent();\n } else {\n const parentItem = this.focusedItem?.parent;\n if (parentItem && !parentItem.disabled) {\n this.setFocusedAndActiveItem(parentItem);\n }\n }\n }\n\n private handleArrowRight(): void {\n if (this.focusedItem!.getChildren()?.length > 0) {\n if (!this.focusedItem?.expanded) {\n this.setActiveItem(this.focusedItem);\n this.focusedItem!.expandWithEvent();\n } else {\n const firstChild = this.focusedItem\n .getChildren()\n .find((item: IgcTreeItemComponent) => !item.disabled);\n if (firstChild) {\n this.setFocusedAndActiveItem(firstChild);\n }\n }\n }\n }\n\n private handleUpDownArrow(isUp: boolean, event: KeyboardEvent): void {\n const next = this.getVisibleItem(this.focusedItem!, isUp ? -1 : 1);\n if (next === this.focusedItem) {\n return;\n }\n\n if (event.ctrlKey) {\n this.setFocusedAndActiveItem(next, false);\n } else {\n this.setFocusedAndActiveItem(next);\n }\n }\n\n private handleAsterisk(): void {\n const items = this.focusedItem?.parent\n ? this.focusedItem!.parent?.getChildren()\n : this.tree.items?.filter(\n (item: IgcTreeItemComponent) => item.level === 0\n );\n items?.forEach((item: IgcTreeItemComponent) => {\n if (!item.disabled && !item.expanded && item.hasChildren) {\n item.expandWithEvent();\n }\n });\n }\n\n private handleSpace(shiftKey = false): void {\n if (this.tree.selection === 'none') {\n this.setActiveItem(this.focusedItem);\n return;\n }\n\n this.setActiveItem(this.focusedItem);\n if (shiftKey) {\n this.selectionService.selectMultipleItems(this.focusedItem!);\n return;\n }\n\n if (this.focusedItem!.selected) {\n this.selectionService.deselectItem(this.focusedItem!);\n } else {\n this.selectionService.selectItem(this.focusedItem!);\n }\n }\n\n /** Gets the next visible item in the given direction - 1 -> next, -1 -> previous */\n private getVisibleItem(\n item: IgcTreeItemComponent,\n dir: 1 | -1 = 1\n ): IgcTreeItemComponent {\n const itemIndex = this.visibleChildren.indexOf(item);\n return this.visibleChildren[itemIndex + dir] || item;\n }\n}\n"]}
1
+ {"version":3,"file":"tree.navigation.js","sourceRoot":"","sources":["../../../src/components/tree/tree.navigation.ts"],"names":[],"mappings":"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","sourcesContent":["import IgcTreeComponent from './tree.js';\nimport IgcTreeItemComponent from './tree-item.js';\nimport { IgcTreeSelectionService } from './tree.selection.js';\nimport { isLTR } from '../common/util.js';\n\nexport const NAVIGATION_KEYS = new Set([\n 'down',\n 'up',\n 'left',\n 'right',\n 'arrowdown',\n 'arrowup',\n 'arrowleft',\n 'arrowright',\n 'home',\n 'end',\n 'space',\n 'spacebar',\n ' ',\n]);\n\nexport class IgcTreeNavigationService {\n private tree!: IgcTreeComponent;\n private selectionService!: IgcTreeSelectionService;\n\n private _focusedItem: IgcTreeItemComponent | null = null;\n\n private _lastFocusedItem: IgcTreeItemComponent | null = null;\n private _activeItem: IgcTreeItemComponent | null = null;\n\n private _visibleChildren: IgcTreeItemComponent[] = [];\n private _invisibleChildren: Set<IgcTreeItemComponent> = new Set();\n private _disabledChildren: Set<IgcTreeItemComponent> = new Set();\n\n constructor(\n tree: IgcTreeComponent,\n selectionService: IgcTreeSelectionService\n ) {\n this.tree = tree;\n this.selectionService = selectionService;\n }\n\n public updateVisChild(): void {\n this._visibleChildren = this.tree?.items\n ? this.tree.items.filter(\n (i: IgcTreeItemComponent) =>\n !(this._invisibleChildren.has(i) || this._disabledChildren.has(i))\n )\n : [];\n }\n\n public get focusedItem(): IgcTreeItemComponent | null {\n return this._focusedItem;\n }\n\n public focusItem(value: IgcTreeItemComponent | null, shouldFocus = true) {\n if (this._focusedItem === value) {\n return;\n }\n this._lastFocusedItem = this._focusedItem;\n if (this._lastFocusedItem) {\n this._lastFocusedItem.removeAttribute('tabindex');\n }\n this._focusedItem = value;\n if (this._focusedItem !== null && shouldFocus) {\n this._focusedItem.tabIndex = 0;\n this._focusedItem.focus({\n preventScroll: true,\n });\n this._focusedItem.wrapper?.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'nearest',\n });\n }\n }\n\n public get activeItem(): IgcTreeItemComponent | null {\n return this._activeItem;\n }\n\n public setActiveItem(value: IgcTreeItemComponent | null, shouldEmit = true) {\n if (this._activeItem === value) {\n return;\n }\n if (this._activeItem && value) {\n this._activeItem.active = false;\n }\n this._activeItem = value;\n if (this._activeItem) {\n this._activeItem.active = true;\n }\n if (shouldEmit && this._activeItem) {\n this.tree.emitEvent('igcActiveItem', { detail: this._activeItem });\n }\n }\n\n public get visibleChildren(): IgcTreeItemComponent[] {\n return this._visibleChildren;\n }\n\n public update_disabled_cache(item: IgcTreeItemComponent): void {\n if (item.disabled) {\n this._disabledChildren.add(item);\n } else {\n this._disabledChildren.delete(item);\n }\n this.updateVisChild();\n }\n\n public delete_item(item: IgcTreeItemComponent) {\n if (this.activeItem === item) {\n this.setActiveItem(null);\n }\n if (this.focusedItem === item) {\n this.focusItem(null, false);\n const firstNotDisableItem = this.tree.items.find(\n (i: IgcTreeItemComponent) => !i.disabled\n );\n if (firstNotDisableItem) {\n firstNotDisableItem.tabIndex = 0;\n this.focusItem(firstNotDisableItem, false);\n }\n }\n }\n\n public update_visible_cache(\n item: IgcTreeItemComponent,\n expanded: boolean,\n shouldUpdateNestedChildren = true,\n shouldUpdate = true\n ): void {\n if (expanded && !this._invisibleChildren.has(item)) {\n item.getChildren()?.forEach((child: IgcTreeItemComponent) => {\n this._invisibleChildren.delete(child);\n if (shouldUpdateNestedChildren) {\n this.update_visible_cache(child, child.expanded, true, false);\n }\n });\n } else {\n item\n .getChildren({ flatten: true })\n ?.forEach((c: IgcTreeItemComponent) => this._invisibleChildren.add(c));\n }\n\n if (shouldUpdate) {\n this.updateVisChild();\n }\n }\n\n /**\n * Sets the item as focused (and active)\n *\n * @param item target item\n * @param isActive if true, sets the item as active\n */\n public setFocusedAndActiveItem(\n item: IgcTreeItemComponent,\n isActive = true,\n shouldFocus = true\n ): void {\n if (isActive) {\n this.setActiveItem(item);\n }\n this.focusItem(item, shouldFocus);\n }\n\n /** Handler for keydown events. Used in tree.component.ts */\n public handleKeydown(event: KeyboardEvent) {\n const key = event.key.toLowerCase();\n if (!this.focusedItem) {\n return;\n }\n if (!(NAVIGATION_KEYS.has(key) || key === '*')) {\n if (key === 'enter') {\n this.setActiveItem(this.focusedItem);\n }\n return;\n }\n event.preventDefault();\n this.handleNavigation(event);\n }\n\n private handleNavigation(event: KeyboardEvent) {\n switch (event.key.toLowerCase()) {\n case 'home':\n this.setFocusedAndActiveItem(this.visibleChildren[0]);\n break;\n case 'end':\n this.setFocusedAndActiveItem(\n this.visibleChildren[this.visibleChildren.length - 1]\n );\n break;\n case 'arrowleft':\n case 'left':\n if (!isLTR(this.tree)) {\n this.handleArrowRight();\n } else {\n this.handleArrowLeft();\n }\n break;\n case 'arrowright':\n case 'right':\n if (!isLTR(this.tree)) {\n this.handleArrowLeft();\n } else {\n this.handleArrowRight();\n }\n break;\n case 'arrowup':\n case 'up':\n this.handleUpDownArrow(true, event);\n break;\n case 'arrowdown':\n case 'down':\n this.handleUpDownArrow(false, event);\n break;\n case '*':\n this.handleAsterisk();\n break;\n case ' ':\n case 'spacebar':\n case 'space':\n this.handleSpace(event.shiftKey);\n break;\n default:\n return;\n }\n }\n\n private handleArrowLeft(): void {\n if (this.focusedItem?.expanded && this.focusedItem.getChildren()?.length) {\n this.setActiveItem(this.focusedItem);\n this.focusedItem.collapseWithEvent();\n } else {\n const parentItem = this.focusedItem?.parent;\n if (parentItem && !parentItem.disabled) {\n this.setFocusedAndActiveItem(parentItem);\n }\n }\n }\n\n private handleArrowRight(): void {\n if (this.focusedItem!.getChildren()?.length > 0) {\n if (!this.focusedItem?.expanded) {\n this.setActiveItem(this.focusedItem);\n this.focusedItem!.expandWithEvent();\n } else {\n const firstChild = this.focusedItem\n .getChildren()\n .find((item: IgcTreeItemComponent) => !item.disabled);\n if (firstChild) {\n this.setFocusedAndActiveItem(firstChild);\n }\n }\n }\n }\n\n private handleUpDownArrow(isUp: boolean, event: KeyboardEvent): void {\n const next = this.getVisibleItem(this.focusedItem!, isUp ? -1 : 1);\n if (next === this.focusedItem) {\n return;\n }\n\n if (event.ctrlKey) {\n this.setFocusedAndActiveItem(next, false);\n } else {\n this.setFocusedAndActiveItem(next);\n }\n }\n\n private handleAsterisk(): void {\n const items = this.focusedItem?.parent\n ? this.focusedItem!.parent?.getChildren()\n : this.tree.items?.filter(\n (item: IgcTreeItemComponent) => item.level === 0\n );\n items?.forEach((item: IgcTreeItemComponent) => {\n if (!item.disabled && !item.expanded && item.hasChildren) {\n item.expandWithEvent();\n }\n });\n }\n\n private handleSpace(shiftKey = false): void {\n if (this.tree.selection === 'none') {\n this.setActiveItem(this.focusedItem);\n return;\n }\n\n this.setActiveItem(this.focusedItem);\n if (shiftKey) {\n this.selectionService.selectMultipleItems(this.focusedItem!);\n return;\n }\n\n if (this.focusedItem!.selected) {\n this.selectionService.deselectItem(this.focusedItem!);\n } else {\n this.selectionService.selectItem(this.focusedItem!);\n }\n }\n\n /** Gets the next visible item in the given direction - 1 -> next, -1 -> previous */\n private getVisibleItem(\n item: IgcTreeItemComponent,\n dir: 1 | -1 = 1\n ): IgcTreeItemComponent {\n const itemIndex = this.visibleChildren.indexOf(item);\n return this.visibleChildren[itemIndex + dir] || item;\n }\n}\n"]}