igniteui-webcomponents 5.1.2 → 5.2.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 (370) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/components/avatar/themes/avatar.base.css.js +1 -1
  3. package/components/avatar/themes/avatar.base.css.js.map +1 -1
  4. package/components/avatar/themes/dark/avatar.bootstrap.css.js +1 -1
  5. package/components/avatar/themes/dark/avatar.bootstrap.css.js.map +1 -1
  6. package/components/avatar/themes/light/avatar.bootstrap.css.js +1 -1
  7. package/components/avatar/themes/light/avatar.bootstrap.css.js.map +1 -1
  8. package/components/avatar/themes/light/avatar.shared.css.js +1 -1
  9. package/components/avatar/themes/light/avatar.shared.css.js.map +1 -1
  10. package/components/avatar/themes/shared/avatar.common.css.js +1 -1
  11. package/components/avatar/themes/shared/avatar.common.css.js.map +1 -1
  12. package/components/avatar/themes/shared/avatar.indigo.css.js +1 -1
  13. package/components/avatar/themes/shared/avatar.indigo.css.js.map +1 -1
  14. package/components/badge/themes/badge.base.css.js +1 -1
  15. package/components/badge/themes/badge.base.css.js.map +1 -1
  16. package/components/badge/themes/dark/badge.bootstrap.css.js +1 -1
  17. package/components/badge/themes/dark/badge.bootstrap.css.js.map +1 -1
  18. package/components/badge/themes/dark/badge.indigo.css.js +1 -1
  19. package/components/badge/themes/dark/badge.indigo.css.js.map +1 -1
  20. package/components/badge/themes/light/badge.bootstrap.css.js +1 -1
  21. package/components/badge/themes/light/badge.bootstrap.css.js.map +1 -1
  22. package/components/badge/themes/light/badge.indigo.css.js +1 -1
  23. package/components/badge/themes/light/badge.indigo.css.js.map +1 -1
  24. package/components/badge/themes/light/badge.shared.css.js +1 -1
  25. package/components/badge/themes/light/badge.shared.css.js.map +1 -1
  26. package/components/badge/themes/shared/badge.common.css.js +1 -1
  27. package/components/badge/themes/shared/badge.common.css.js.map +1 -1
  28. package/components/badge/themes/shared/badge.indigo.css.js +1 -1
  29. package/components/badge/themes/shared/badge.indigo.css.js.map +1 -1
  30. package/components/button/themes/button/button.base.css.js +1 -1
  31. package/components/button/themes/button/button.base.css.js.map +1 -1
  32. package/components/button/themes/icon-button/icon-button.base.css.js +1 -1
  33. package/components/button/themes/icon-button/icon-button.base.css.js.map +1 -1
  34. package/components/button-group/themes/button.base.css.js +1 -1
  35. package/components/button-group/themes/button.base.css.js.map +1 -1
  36. package/components/button-group/themes/group.base.css.js +1 -1
  37. package/components/button-group/themes/group.base.css.js.map +1 -1
  38. package/components/calendar/base.d.ts +7 -7
  39. package/components/calendar/base.js +23 -16
  40. package/components/calendar/base.js.map +1 -1
  41. package/components/calendar/calendar.js.map +1 -1
  42. package/components/calendar/helpers.d.ts +28 -3
  43. package/components/calendar/helpers.js +36 -11
  44. package/components/calendar/helpers.js.map +1 -1
  45. package/components/calendar/themes/calendar.base.css.js +1 -1
  46. package/components/calendar/themes/calendar.base.css.js.map +1 -1
  47. package/components/card/themes/card.actions.base.css.js +1 -1
  48. package/components/card/themes/card.actions.base.css.js.map +1 -1
  49. package/components/card/themes/card.content.base.css.js +1 -1
  50. package/components/card/themes/card.content.base.css.js.map +1 -1
  51. package/components/card/themes/card.header.base.css.js +1 -1
  52. package/components/card/themes/card.header.base.css.js.map +1 -1
  53. package/components/card/themes/card.media.base.css.js +1 -1
  54. package/components/card/themes/card.media.base.css.js.map +1 -1
  55. package/components/card/themes/container.base.css.js +1 -1
  56. package/components/card/themes/container.base.css.js.map +1 -1
  57. package/components/card/themes/dark/card.fluent.css.js +1 -1
  58. package/components/card/themes/dark/card.fluent.css.js.map +1 -1
  59. package/components/card/themes/light/container/card.fluent.css.js +1 -1
  60. package/components/card/themes/light/container/card.fluent.css.js.map +1 -1
  61. package/components/carousel/themes/carousel-indicator-container.base.css.js +1 -1
  62. package/components/carousel/themes/carousel-indicator-container.base.css.js.map +1 -1
  63. package/components/carousel/themes/carousel-indicator.base.css.js +1 -1
  64. package/components/carousel/themes/carousel-indicator.base.css.js.map +1 -1
  65. package/components/carousel/themes/carousel-slide.base.css.js +1 -1
  66. package/components/carousel/themes/carousel-slide.base.css.js.map +1 -1
  67. package/components/carousel/themes/carousel.base.css.js +1 -1
  68. package/components/carousel/themes/carousel.base.css.js.map +1 -1
  69. package/components/checkbox/checkbox-base.d.ts +3 -1
  70. package/components/checkbox/checkbox-base.js +14 -10
  71. package/components/checkbox/checkbox-base.js.map +1 -1
  72. package/components/checkbox/checkbox.js +1 -2
  73. package/components/checkbox/checkbox.js.map +1 -1
  74. package/components/checkbox/themes/checkbox.base.css.js +1 -1
  75. package/components/checkbox/themes/checkbox.base.css.js.map +1 -1
  76. package/components/checkbox/themes/dark/checkbox/checkbox.bootstrap.css.js +1 -1
  77. package/components/checkbox/themes/dark/checkbox/checkbox.bootstrap.css.js.map +1 -1
  78. package/components/checkbox/themes/dark/checkbox/checkbox.indigo.css.js +1 -1
  79. package/components/checkbox/themes/dark/checkbox/checkbox.indigo.css.js.map +1 -1
  80. package/components/checkbox/themes/light/checkbox/checkbox.bootstrap.css.js +1 -1
  81. package/components/checkbox/themes/light/checkbox/checkbox.bootstrap.css.js.map +1 -1
  82. package/components/checkbox/themes/light/checkbox/checkbox.indigo.css.js +1 -1
  83. package/components/checkbox/themes/light/checkbox/checkbox.indigo.css.js.map +1 -1
  84. package/components/checkbox/themes/light/checkbox/checkbox.shared.css.js +1 -1
  85. package/components/checkbox/themes/light/checkbox/checkbox.shared.css.js.map +1 -1
  86. package/components/checkbox/themes/shared/checkbox/checkbox.bootstrap.css.js +1 -1
  87. package/components/checkbox/themes/shared/checkbox/checkbox.bootstrap.css.js.map +1 -1
  88. package/components/checkbox/themes/shared/checkbox/checkbox.common.css.js +1 -1
  89. package/components/checkbox/themes/shared/checkbox/checkbox.common.css.js.map +1 -1
  90. package/components/checkbox/themes/shared/checkbox/checkbox.fluent.css.js +1 -1
  91. package/components/checkbox/themes/shared/checkbox/checkbox.fluent.css.js.map +1 -1
  92. package/components/checkbox/themes/shared/checkbox/checkbox.indigo.css.js +1 -1
  93. package/components/checkbox/themes/shared/checkbox/checkbox.indigo.css.js.map +1 -1
  94. package/components/checkbox/themes/shared/checkbox/checkbox.material.css.js +1 -1
  95. package/components/checkbox/themes/shared/checkbox/checkbox.material.css.js.map +1 -1
  96. package/components/checkbox/themes/switch.base.css.js +1 -1
  97. package/components/checkbox/themes/switch.base.css.js.map +1 -1
  98. package/components/chip/themes/chip.base.css.js +1 -1
  99. package/components/chip/themes/chip.base.css.js.map +1 -1
  100. package/components/combo/combo-item.d.ts +4 -2
  101. package/components/combo/combo-item.js +19 -16
  102. package/components/combo/combo-item.js.map +1 -1
  103. package/components/combo/combo.d.ts +52 -41
  104. package/components/combo/combo.js +340 -339
  105. package/components/combo/combo.js.map +1 -1
  106. package/components/combo/controllers/data.d.ts +3 -1
  107. package/components/combo/controllers/data.js +9 -2
  108. package/components/combo/controllers/data.js.map +1 -1
  109. package/components/combo/controllers/navigation.d.ts +3 -1
  110. package/components/combo/controllers/navigation.js +4 -3
  111. package/components/combo/controllers/navigation.js.map +1 -1
  112. package/components/combo/controllers/selection.d.ts +14 -6
  113. package/components/combo/controllers/selection.js +66 -59
  114. package/components/combo/controllers/selection.js.map +1 -1
  115. package/components/combo/themes/combo-header.base.css.js +1 -1
  116. package/components/combo/themes/combo-header.base.css.js.map +1 -1
  117. package/components/combo/themes/combo-item.base.css.js +1 -1
  118. package/components/combo/themes/combo-item.base.css.js.map +1 -1
  119. package/components/combo/themes/combo.base.css.js +1 -1
  120. package/components/combo/themes/combo.base.css.js.map +1 -1
  121. package/components/common/mixins/alert.js.map +1 -1
  122. package/components/common/mixins/combo-box.js.map +1 -1
  123. package/components/common/mixins/forms/associated.js +41 -39
  124. package/components/common/mixins/forms/associated.js.map +1 -1
  125. package/components/common/mixins/forms/form-value.d.ts +32 -0
  126. package/components/common/mixins/forms/form-value.js +59 -0
  127. package/components/common/mixins/forms/form-value.js.map +1 -0
  128. package/components/common/mixins/forms/types.d.ts +9 -8
  129. package/components/common/mixins/forms/types.js.map +1 -1
  130. package/components/common/util.d.ts +3 -0
  131. package/components/common/util.js +13 -0
  132. package/components/common/util.js.map +1 -1
  133. package/components/common/validators.d.ts +7 -7
  134. package/components/common/validators.js +24 -17
  135. package/components/common/validators.js.map +1 -1
  136. package/components/date-picker/date-picker.d.ts +17 -14
  137. package/components/date-picker/date-picker.js +30 -20
  138. package/components/date-picker/date-picker.js.map +1 -1
  139. package/components/date-picker/themes/date-picker.base.css.js +1 -1
  140. package/components/date-picker/themes/date-picker.base.css.js.map +1 -1
  141. package/components/date-picker/validators.js +2 -2
  142. package/components/date-picker/validators.js.map +1 -1
  143. package/components/date-time-input/date-time-input.d.ts +9 -6
  144. package/components/date-time-input/date-time-input.js +33 -30
  145. package/components/date-time-input/date-time-input.js.map +1 -1
  146. package/components/date-time-input/date-util.js +2 -12
  147. package/components/date-time-input/date-util.js.map +1 -1
  148. package/components/date-time-input/validators.js +2 -2
  149. package/components/date-time-input/validators.js.map +1 -1
  150. package/components/dialog/themes/dialog.base.css.js +1 -1
  151. package/components/dialog/themes/dialog.base.css.js.map +1 -1
  152. package/components/dialog/themes/shared/dialog.fluent.css.js +1 -1
  153. package/components/dialog/themes/shared/dialog.fluent.css.js.map +1 -1
  154. package/components/divider/themes/divider.base.css.js +1 -1
  155. package/components/divider/themes/divider.base.css.js.map +1 -1
  156. package/components/dropdown/themes/dropdown-group.base.css.js +1 -1
  157. package/components/dropdown/themes/dropdown-group.base.css.js.map +1 -1
  158. package/components/dropdown/themes/dropdown-header.base.css.js +1 -1
  159. package/components/dropdown/themes/dropdown-header.base.css.js.map +1 -1
  160. package/components/dropdown/themes/dropdown-item.base.css.js +1 -1
  161. package/components/dropdown/themes/dropdown-item.base.css.js.map +1 -1
  162. package/components/dropdown/themes/dropdown.base.css.js +1 -1
  163. package/components/dropdown/themes/dropdown.base.css.js.map +1 -1
  164. package/components/dropdown/themes/header.js +7 -0
  165. package/components/dropdown/themes/header.js.map +1 -1
  166. package/components/dropdown/themes/shared/dropdown.bootstrap.css.js +1 -1
  167. package/components/dropdown/themes/shared/dropdown.bootstrap.css.js.map +1 -1
  168. package/components/dropdown/themes/shared/header/dropdown-header.fluent.css.d.ts +1 -0
  169. package/components/dropdown/themes/shared/header/dropdown-header.fluent.css.js +3 -0
  170. package/components/dropdown/themes/shared/header/dropdown-header.fluent.css.js.map +1 -0
  171. package/components/expansion-panel/themes/expansion-panel.base.css.js +1 -1
  172. package/components/expansion-panel/themes/expansion-panel.base.css.js.map +1 -1
  173. package/components/icon/icon-state.broadcast.d.ts +1 -0
  174. package/components/icon/icon-state.broadcast.js +4 -1
  175. package/components/icon/icon-state.broadcast.js.map +1 -1
  176. package/components/icon/registry/types.d.ts +1 -0
  177. package/components/icon/registry/types.js.map +1 -1
  178. package/components/icon/themes/icon.base.css.js +1 -1
  179. package/components/icon/themes/icon.base.css.js.map +1 -1
  180. package/components/input/input-base.js +8 -2
  181. package/components/input/input-base.js.map +1 -1
  182. package/components/input/input.d.ts +21 -9
  183. package/components/input/input.js +59 -32
  184. package/components/input/input.js.map +1 -1
  185. package/components/input/themes/input.base.css.js +1 -1
  186. package/components/input/themes/input.base.css.js.map +1 -1
  187. package/components/input/themes/shared/input.common.css.js +1 -1
  188. package/components/input/themes/shared/input.common.css.js.map +1 -1
  189. package/components/input/themes/shared/input.indigo.css.js +1 -1
  190. package/components/input/themes/shared/input.indigo.css.js.map +1 -1
  191. package/components/input/themes/shared/input.material.css.js +1 -1
  192. package/components/input/themes/shared/input.material.css.js.map +1 -1
  193. package/components/list/themes/container.base.css.js +1 -1
  194. package/components/list/themes/container.base.css.js.map +1 -1
  195. package/components/list/themes/dark/container/list.bootstrap.css.js +1 -1
  196. package/components/list/themes/dark/container/list.bootstrap.css.js.map +1 -1
  197. package/components/list/themes/dark/container/list.fluent.css.js +1 -1
  198. package/components/list/themes/dark/container/list.fluent.css.js.map +1 -1
  199. package/components/list/themes/dark/container/list.indigo.css.js +1 -1
  200. package/components/list/themes/dark/container/list.indigo.css.js.map +1 -1
  201. package/components/list/themes/dark/container/list.material.css.js +1 -1
  202. package/components/list/themes/dark/container/list.material.css.js.map +1 -1
  203. package/components/list/themes/dark/header/list-header.bootstrap.css.js +1 -1
  204. package/components/list/themes/dark/header/list-header.bootstrap.css.js.map +1 -1
  205. package/components/list/themes/dark/header/list-header.fluent.css.js +1 -1
  206. package/components/list/themes/dark/header/list-header.fluent.css.js.map +1 -1
  207. package/components/list/themes/dark/header/list-header.indigo.css.js +1 -1
  208. package/components/list/themes/dark/header/list-header.indigo.css.js.map +1 -1
  209. package/components/list/themes/dark/header/list-header.material.css.js +1 -1
  210. package/components/list/themes/dark/header/list-header.material.css.js.map +1 -1
  211. package/components/list/themes/dark/item/list-item.bootstrap.css.js +1 -1
  212. package/components/list/themes/dark/item/list-item.bootstrap.css.js.map +1 -1
  213. package/components/list/themes/dark/item/list-item.fluent.css.js +1 -1
  214. package/components/list/themes/dark/item/list-item.fluent.css.js.map +1 -1
  215. package/components/list/themes/dark/item/list-item.indigo.css.js +1 -1
  216. package/components/list/themes/dark/item/list-item.indigo.css.js.map +1 -1
  217. package/components/list/themes/dark/item/list-item.material.css.js +1 -1
  218. package/components/list/themes/dark/item/list-item.material.css.js.map +1 -1
  219. package/components/list/themes/item.base.css.js +1 -1
  220. package/components/list/themes/item.base.css.js.map +1 -1
  221. package/components/list/themes/light/container/list.fluent.css.js +1 -1
  222. package/components/list/themes/light/container/list.fluent.css.js.map +1 -1
  223. package/components/list/themes/light/container/list.indigo.css.js +1 -1
  224. package/components/list/themes/light/container/list.indigo.css.js.map +1 -1
  225. package/components/list/themes/light/container/list.shared.css.js +1 -1
  226. package/components/list/themes/light/container/list.shared.css.js.map +1 -1
  227. package/components/list/themes/light/header/list-header.fluent.css.js +1 -1
  228. package/components/list/themes/light/header/list-header.fluent.css.js.map +1 -1
  229. package/components/list/themes/light/header/list-header.indigo.css.js +1 -1
  230. package/components/list/themes/light/header/list-header.indigo.css.js.map +1 -1
  231. package/components/list/themes/light/item/list-item.fluent.css.js +1 -1
  232. package/components/list/themes/light/item/list-item.fluent.css.js.map +1 -1
  233. package/components/list/themes/light/item/list-item.indigo.css.js +1 -1
  234. package/components/list/themes/light/item/list-item.indigo.css.js.map +1 -1
  235. package/components/list/themes/shared/container/list.indigo.css.js +1 -1
  236. package/components/list/themes/shared/container/list.indigo.css.js.map +1 -1
  237. package/components/list/themes/shared/item/list-item.common.css.js +1 -1
  238. package/components/list/themes/shared/item/list-item.common.css.js.map +1 -1
  239. package/components/list/themes/shared/item/list-item.fluent.css.js +1 -1
  240. package/components/list/themes/shared/item/list-item.fluent.css.js.map +1 -1
  241. package/components/list/themes/shared/item/list-item.indigo.css.js +1 -1
  242. package/components/list/themes/shared/item/list-item.indigo.css.js.map +1 -1
  243. package/components/mask-input/mask-input.d.ts +5 -3
  244. package/components/mask-input/mask-input.js +35 -23
  245. package/components/mask-input/mask-input.js.map +1 -1
  246. package/components/nav-drawer/themes/container.base.css.js +1 -1
  247. package/components/nav-drawer/themes/container.base.css.js.map +1 -1
  248. package/components/nav-drawer/themes/header-item.base.css.js +1 -1
  249. package/components/nav-drawer/themes/header-item.base.css.js.map +1 -1
  250. package/components/nav-drawer/themes/item.base.css.js +1 -1
  251. package/components/nav-drawer/themes/item.base.css.js.map +1 -1
  252. package/components/navbar/themes/navbar.base.css.js +1 -1
  253. package/components/navbar/themes/navbar.base.css.js.map +1 -1
  254. package/components/popover/themes/light/popover.base.css.js +1 -1
  255. package/components/popover/themes/light/popover.base.css.js.map +1 -1
  256. package/components/progress/base.d.ts +11 -12
  257. package/components/progress/base.js +59 -70
  258. package/components/progress/base.js.map +1 -1
  259. package/components/progress/circular-progress.d.ts +0 -1
  260. package/components/progress/circular-progress.js +15 -15
  261. package/components/progress/circular-progress.js.map +1 -1
  262. package/components/progress/linear-progress.js +7 -13
  263. package/components/progress/linear-progress.js.map +1 -1
  264. package/components/progress/themes/circular/circular.progress.base.css.js +1 -1
  265. package/components/progress/themes/circular/circular.progress.base.css.js.map +1 -1
  266. package/components/progress/themes/circular/shared/circular.progress.bootstrap.css.js +1 -1
  267. package/components/progress/themes/circular/shared/circular.progress.bootstrap.css.js.map +1 -1
  268. package/components/progress/themes/circular/shared/circular.progress.common.css.js +1 -1
  269. package/components/progress/themes/circular/shared/circular.progress.common.css.js.map +1 -1
  270. package/components/progress/themes/circular/shared/circular.progress.fluent.css.js +1 -1
  271. package/components/progress/themes/circular/shared/circular.progress.fluent.css.js.map +1 -1
  272. package/components/progress/themes/circular/shared/circular.progress.indigo.css.js +1 -1
  273. package/components/progress/themes/circular/shared/circular.progress.indigo.css.js.map +1 -1
  274. package/components/progress/themes/linear/linear.progress.base.css.js +1 -1
  275. package/components/progress/themes/linear/linear.progress.base.css.js.map +1 -1
  276. package/components/progress/themes/linear/shared/linear.progress.bootstrap.css.js +1 -1
  277. package/components/progress/themes/linear/shared/linear.progress.bootstrap.css.js.map +1 -1
  278. package/components/progress/themes/linear/shared/linear.progress.common.css.js +1 -1
  279. package/components/progress/themes/linear/shared/linear.progress.common.css.js.map +1 -1
  280. package/components/progress/themes/linear/shared/linear.progress.fluent.css.js +1 -1
  281. package/components/progress/themes/linear/shared/linear.progress.fluent.css.js.map +1 -1
  282. package/components/progress/themes/linear/shared/linear.progress.indigo.css.js +1 -1
  283. package/components/progress/themes/linear/shared/linear.progress.indigo.css.js.map +1 -1
  284. package/components/radio/radio.d.ts +4 -3
  285. package/components/radio/radio.js +48 -33
  286. package/components/radio/radio.js.map +1 -1
  287. package/components/radio/themes/radio.base.css.js +1 -1
  288. package/components/radio/themes/radio.base.css.js.map +1 -1
  289. package/components/radio-group/radio-group.base.css.js +1 -1
  290. package/components/radio-group/radio-group.base.css.js.map +1 -1
  291. package/components/radio-group/radio-group.d.ts +4 -0
  292. package/components/radio-group/radio-group.js +18 -0
  293. package/components/radio-group/radio-group.js.map +1 -1
  294. package/components/rating/rating-symbol.js +2 -2
  295. package/components/rating/rating-symbol.js.map +1 -1
  296. package/components/rating/rating.d.ts +25 -17
  297. package/components/rating/rating.js +47 -43
  298. package/components/rating/rating.js.map +1 -1
  299. package/components/rating/themes/rating-symbol.base.css.js +1 -1
  300. package/components/rating/themes/rating-symbol.base.css.js.map +1 -1
  301. package/components/rating/themes/rating.base.css.js +1 -1
  302. package/components/rating/themes/rating.base.css.js.map +1 -1
  303. package/components/ripple/ripple.material.css.js +1 -1
  304. package/components/ripple/ripple.material.css.js.map +1 -1
  305. package/components/select/select.d.ts +7 -9
  306. package/components/select/select.js +29 -31
  307. package/components/select/select.js.map +1 -1
  308. package/components/select/themes/select.base.css.js +1 -1
  309. package/components/select/themes/select.base.css.js.map +1 -1
  310. package/components/slider/slider-base.d.ts +0 -1
  311. package/components/slider/slider-base.js +0 -4
  312. package/components/slider/slider-base.js.map +1 -1
  313. package/components/slider/slider.d.ts +3 -2
  314. package/components/slider/slider.js +9 -9
  315. package/components/slider/slider.js.map +1 -1
  316. package/components/slider/themes/slider.base.css.js +1 -1
  317. package/components/slider/themes/slider.base.css.js.map +1 -1
  318. package/components/snackbar/themes/snackbar.base.css.js +1 -1
  319. package/components/snackbar/themes/snackbar.base.css.js.map +1 -1
  320. package/components/stepper/step.d.ts +1 -1
  321. package/components/stepper/step.js.map +1 -1
  322. package/components/stepper/themes/step/step.base.css.js +1 -1
  323. package/components/stepper/themes/step/step.base.css.js.map +1 -1
  324. package/components/stepper/themes/stepper/stepper.base.css.js +1 -1
  325. package/components/stepper/themes/stepper/stepper.base.css.js.map +1 -1
  326. package/components/tabs/themes/dark/tab.bootstrap.css.js +1 -1
  327. package/components/tabs/themes/dark/tab.bootstrap.css.js.map +1 -1
  328. package/components/tabs/themes/dark/tab.fluent.css.js +1 -1
  329. package/components/tabs/themes/dark/tab.fluent.css.js.map +1 -1
  330. package/components/tabs/themes/dark/tab.indigo.css.js +1 -1
  331. package/components/tabs/themes/dark/tab.indigo.css.js.map +1 -1
  332. package/components/tabs/themes/dark/tab.material.css.js +1 -1
  333. package/components/tabs/themes/dark/tab.material.css.js.map +1 -1
  334. package/components/tabs/themes/light/tab.bootstrap.css.js +1 -1
  335. package/components/tabs/themes/light/tab.bootstrap.css.js.map +1 -1
  336. package/components/tabs/themes/light/tab.fluent.css.js +1 -1
  337. package/components/tabs/themes/light/tab.fluent.css.js.map +1 -1
  338. package/components/tabs/themes/light/tab.indigo.css.js +1 -1
  339. package/components/tabs/themes/light/tab.indigo.css.js.map +1 -1
  340. package/components/tabs/themes/tab.base.css.js +1 -1
  341. package/components/tabs/themes/tab.base.css.js.map +1 -1
  342. package/components/tabs/themes/tabs.base.css.js +1 -1
  343. package/components/tabs/themes/tabs.base.css.js.map +1 -1
  344. package/components/textarea/textarea.d.ts +5 -4
  345. package/components/textarea/textarea.js +15 -8
  346. package/components/textarea/textarea.js.map +1 -1
  347. package/components/textarea/themes/shared/textarea.common.css.js +1 -1
  348. package/components/textarea/themes/shared/textarea.common.css.js.map +1 -1
  349. package/components/textarea/themes/shared/textarea.material.css.js +1 -1
  350. package/components/textarea/themes/shared/textarea.material.css.js.map +1 -1
  351. package/components/textarea/themes/textarea.base.css.js +1 -1
  352. package/components/textarea/themes/textarea.base.css.js.map +1 -1
  353. package/components/toast/themes/toast.base.css.js +1 -1
  354. package/components/toast/themes/toast.base.css.js.map +1 -1
  355. package/components/tree/themes/container.base.css.js +1 -1
  356. package/components/tree/themes/container.base.css.js.map +1 -1
  357. package/components/tree/themes/shared/item.material.css.js +1 -1
  358. package/components/tree/themes/shared/item.material.css.js.map +1 -1
  359. package/custom-elements.json +2184 -1951
  360. package/igniteui-webcomponents.html-data.json +1 -1
  361. package/package.json +1 -1
  362. package/themes/dark/bootstrap.css +1 -1
  363. package/themes/dark/fluent.css +1 -1
  364. package/themes/dark/indigo.css +1 -1
  365. package/themes/dark/material.css +1 -1
  366. package/themes/light/bootstrap.css +1 -1
  367. package/themes/light/fluent.css +1 -1
  368. package/themes/light/indigo.css +1 -1
  369. package/themes/light/material.css +1 -1
  370. package/web-types.json +1 -1
@@ -5,7 +5,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
7
  var IgcComboComponent_1;
8
- import { LitElement, html } from 'lit';
8
+ import { LitElement, html, nothing } from 'lit';
9
9
  import { property, query, queryAssignedElements, state, } from 'lit/decorators.js';
10
10
  import { ifDefined } from 'lit/directives/if-defined.js';
11
11
  import { live } from 'lit/directives/live.js';
@@ -17,7 +17,8 @@ import { watch } from '../common/decorators/watch.js';
17
17
  import { registerComponent } from '../common/definitions/register.js';
18
18
  import { EventEmitterMixin } from '../common/mixins/event-emitter.js';
19
19
  import { FormAssociatedRequiredMixin } from '../common/mixins/forms/associated-required.js';
20
- import { findElementFromEventPath, isEmpty, partNameMap, } from '../common/util.js';
20
+ import { createFormValueState, } from '../common/mixins/forms/form-value.js';
21
+ import { asArray, findElementFromEventPath, first, isEmpty, partNameMap, } from '../common/util.js';
21
22
  import IgcIconComponent from '../icon/icon.js';
22
23
  import IgcInputComponent from '../input/input.js';
23
24
  import IgcPopoverComponent from '../popover/popover.js';
@@ -39,71 +40,111 @@ let IgcComboComponent = IgcComboComponent_1 = class IgcComboComponent extends Fo
39
40
  get __validators() {
40
41
  return comboValidators;
41
42
  }
42
- get filteringOptions() {
43
- return this._filteringOptions;
43
+ set data(value) {
44
+ this._data = asArray(value);
45
+ this.value = asArray(this.value);
46
+ this._state.runPipeline();
44
47
  }
45
- set filteringOptions(value) {
46
- this._filteringOptions = { ...this._filteringOptions, ...value };
47
- this.requestUpdate('pipeline');
48
+ get data() {
49
+ return this._data;
48
50
  }
49
- dataChanged() {
50
- if (isEmpty(this.data))
51
- return;
52
- this.dataState = structuredClone(this.data);
51
+ set singleSelect(value) {
52
+ this._singleSelect = value;
53
+ this._selection.clear();
53
54
  if (this.hasUpdated) {
54
- this.pipeline();
55
+ this.updateValue();
56
+ this.resetSearchTerm();
57
+ this._navigation.active = -1;
55
58
  }
56
- this.requestUpdate('value');
57
59
  }
58
- updateDisplayKey() {
59
- this.displayKey = this.displayKey ?? this.valueKey;
60
+ get singleSelect() {
61
+ return this._singleSelect;
62
+ }
63
+ set valueKey(value) {
64
+ this._valueKey = value;
65
+ this._displayKey = this._displayKey ?? this._valueKey;
66
+ }
67
+ get valueKey() {
68
+ return this._valueKey;
60
69
  }
61
- updateFilterKey() {
70
+ set displayKey(value) {
71
+ this._displayKey = value;
62
72
  if (!this.filteringOptions.filterKey) {
63
73
  this.filteringOptions = { filterKey: this.displayKey };
64
74
  }
65
75
  }
66
- async pipeline() {
67
- this.dataState = await this.dataController.apply([...this.data]);
76
+ get displayKey() {
77
+ return this._displayKey ?? this._valueKey;
68
78
  }
69
- toggleDirectiveChange() {
70
- this._rootClickController.update();
79
+ set groupKey(value) {
80
+ this._groupKey = value;
81
+ this._state.runPipeline();
82
+ }
83
+ get groupKey() {
84
+ return this._groupKey;
85
+ }
86
+ set groupSorting(value) {
87
+ this._groupSorting = value;
88
+ this._state.runPipeline();
89
+ }
90
+ get groupSorting() {
91
+ return this._groupSorting;
92
+ }
93
+ set filteringOptions(value) {
94
+ this._filteringOptions = { ...this._filteringOptions, ...value };
95
+ this._state.runPipeline();
71
96
  }
72
- updateOnDisableFiltering() {
97
+ get filteringOptions() {
98
+ return this._filteringOptions;
99
+ }
100
+ set disableFiltering(value) {
101
+ this._disableFiltering = value;
73
102
  this.resetSearchTerm();
74
- this.pipeline();
103
+ }
104
+ get disableFiltering() {
105
+ return this._disableFiltering;
106
+ }
107
+ set value(items) {
108
+ this._formValue.value = items;
109
+ if (this.hasUpdated) {
110
+ this._updateSelection();
111
+ this.updateValue();
112
+ }
113
+ }
114
+ get value() {
115
+ return this._formValue.value;
116
+ }
117
+ _updateSelection() {
118
+ this._selection.deselect();
119
+ if (!isEmpty(this.value)) {
120
+ this._selection.select(this.value);
121
+ }
122
+ }
123
+ toggleDirectiveChange() {
124
+ this._rootClickController.update();
75
125
  }
76
126
  constructor() {
77
127
  super();
78
- this._value = [];
79
- this._displayValue = '';
128
+ this._data = [];
129
+ this._disableFiltering = false;
130
+ this._singleSelect = false;
131
+ this._groupSorting = 'asc';
80
132
  this._filteringOptions = {
81
133
  filterKey: this.displayKey,
82
134
  caseSensitive: false,
83
135
  matchDiacritics: false,
84
136
  };
85
- this.navigationController = new NavigationController(this);
86
- this.selectionController = new SelectionController(this);
87
- this.dataController = new DataController(this);
88
- this.data = [];
137
+ this._displayValue = '';
138
+ this._state = new DataController(this);
139
+ this._selection = new SelectionController(this, this._state);
140
+ this._navigation = new NavigationController(this, this._state);
89
141
  this.outlined = false;
90
- this.singleSelect = false;
91
142
  this.autofocusList = false;
92
143
  this.placeholderSearch = 'Search';
93
144
  this.open = false;
94
- this.displayKey = this.valueKey;
95
- this.groupKey = this.displayKey;
96
- this.groupSorting = 'asc';
97
145
  this.caseSensitiveIcon = false;
98
- this.disableFiltering = false;
99
- this.itemTemplate = ({ item }) => {
100
- const template = this.displayKey ? `${item[this.displayKey]}` : `${item}`;
101
- return html `${template}`;
102
- };
103
- this.groupHeaderTemplate = ({ item }) => {
104
- return html `${this.groupKey && item[this.groupKey]}`;
105
- };
106
- this.dataState = [];
146
+ this.itemTemplate = ({ item }) => html `${this.displayKey ? item[this.displayKey] : item}`;
147
+ this.groupHeaderTemplate = ({ item }) => html `${this.groupKey && item[this.groupKey]}`;
107
148
  this._rootClickController = addRootClickHandler(this, {
108
149
  hideCallback: async () => {
109
150
  if (!this.handleClosing())
@@ -114,147 +155,133 @@ let IgcComboComponent = IgcComboComponent_1 = class IgcComboComponent extends Fo
114
155
  },
115
156
  });
116
157
  this.itemRenderer = (item, index) => {
117
- const record = item;
118
- const dataItem = this.data.at(record.dataIndex);
119
- const active = this.navigationController.active === index;
120
- const selected = this.selectionController.selected.has(dataItem);
121
- const headerTemplate = html `<igc-combo-header part="group-header"
122
- >${this.groupHeaderTemplate({ item: record.value })}</igc-combo-header
123
- >`;
124
- const itemPosition = index + 1;
125
- const itemId = this.id
126
- ? `${this.id}-item-${itemPosition}`
127
- : `item-${itemPosition}`;
158
+ if (!item) {
159
+ return html `${nothing}`;
160
+ }
161
+ if (this.groupKey && item.header) {
162
+ return html `
163
+ <igc-combo-header part="group-header">
164
+ ${this.groupHeaderTemplate({ item: item.value })}
165
+ </igc-combo-header>
166
+ `;
167
+ }
168
+ const { id, position } = this._getActiveDescendantId(index);
169
+ const active = this._navigation.active === index;
170
+ const selected = this._selection.has(this.data.at(item.dataIndex));
128
171
  if (active) {
129
- this._activeDescendant = itemId;
172
+ this._activeDescendant = id;
130
173
  }
131
- const itemTemplate = html `<igc-combo-item
132
- id=${itemId}
133
- part=${partNameMap({ item: true, selected, active })}
134
- aria-setsize=${this.dataState.length}
135
- aria-posinset=${itemPosition}
136
- exportparts="checkbox, checkbox-indicator, checked"
137
- @click=${this.itemClickHandler.bind(this)}
138
- .index=${index}
139
- ?active=${active}
140
- ?selected=${selected}
141
- ?hide-checkbox=${this.singleSelect}
142
- >${this.itemTemplate({ item: record.value })}</igc-combo-item
143
- >`;
144
- return html `${this.groupKey && record.header
145
- ? headerTemplate
146
- : itemTemplate}`;
174
+ return html `
175
+ <igc-combo-item
176
+ id=${id}
177
+ part=${partNameMap({ item: true, selected, active })}
178
+ aria-setsize=${this._state.dataState.length}
179
+ aria-posinset=${position}
180
+ exportparts="checkbox, checkbox-indicator, checked"
181
+ .index=${index}
182
+ ?active=${active}
183
+ ?selected=${selected}
184
+ ?hide-checkbox=${this.singleSelect}
185
+ >
186
+ ${this.itemTemplate({ item: item.value })}
187
+ </igc-combo-item>
188
+ `;
147
189
  };
148
- this.addEventListener('blur', () => {
149
- const { selected } = this.selectionController;
150
- if (isEmpty(selected)) {
151
- this._displayValue = '';
152
- this.resetSearchTerm();
153
- }
154
- this.invalid = !this.checkValidity();
190
+ this._formValue = createFormValueState(this, {
191
+ initialValue: [],
192
+ transformers: {
193
+ setValue: asArray,
194
+ setDefaultValue: asArray,
195
+ },
155
196
  });
156
- this.addEventListener('keydown', this.navigationController.navigateHost.bind(this.navigationController));
157
- }
158
- resetSearchTerm() {
159
- this.dataController.searchTerm = '';
160
- }
161
- resetState() {
162
- this.selectionController.selected.clear();
163
- this.updateValue();
164
- this.resetSearchTerm();
165
- this.navigationController.active = -1;
197
+ this.addEventListener('blur', this._handleBlur);
198
+ this.addEventListener('keydown', this._navigation.navigateHost.bind(this._navigation));
166
199
  }
167
- selectItems() {
168
- if (!this._value || isEmpty(this._value)) {
169
- this.selectionController.deselect([]);
170
- }
171
- else {
172
- this.selectionController.deselect([]);
173
- this.selectionController.select(this._value);
174
- }
175
- this.updateValue();
176
- }
177
- set value(items) {
178
- const oldValue = this._value;
179
- this._value = items;
180
- this.requestUpdate('value', oldValue);
200
+ async firstUpdated() {
201
+ await this.updateComplete;
202
+ this._updateSelection();
203
+ this.updateValue(this.hasUpdated);
204
+ this._pristine = true;
205
+ this._state.runPipeline();
181
206
  }
182
- get value() {
183
- return this._value;
207
+ _restoreDefaultValue() {
208
+ this._formValue.value = this._formValue.defaultValue;
209
+ this._updateSelection();
210
+ this.updateValue(true);
211
+ this._updateValidity();
184
212
  }
185
- _setDefaultValue(_, current) {
186
- this._defaultValue = JSON.parse(current ?? '[]');
213
+ _setDefaultValue(current) {
214
+ this.defaultValue = JSON.parse(current ?? '[]');
187
215
  }
188
216
  _setFormValue() {
189
- if (!this.name) {
190
- return;
191
- }
192
- const items = this._value;
193
- if (isEmpty(items)) {
217
+ if (isEmpty(this.value)) {
194
218
  super._setFormValue(null);
195
219
  return;
196
220
  }
197
- const data = new FormData();
198
221
  if (this.singleSelect) {
199
- data.set(this.name, `${items[0]}`);
222
+ super._setFormValue(`${first(this.value)}`);
223
+ return;
200
224
  }
201
- else {
202
- for (const item of items) {
203
- data.append(this.name, `${item}`);
225
+ if (this.name) {
226
+ const value = new FormData();
227
+ for (const item of this.value) {
228
+ value.append(this.name, `${item}`);
204
229
  }
230
+ super._setFormValue(value);
205
231
  }
206
- super._setFormValue(data);
207
232
  }
208
- async updateValue() {
209
- if (isEmpty(this.data))
233
+ resetSearchTerm() {
234
+ this._state.searchTerm = '';
235
+ }
236
+ updateValue(initial = false) {
237
+ if (isEmpty(this.data)) {
210
238
  return;
211
- const selected = Array.from(this.selectionController.selected);
212
- this._value = this.selectionController.getValue(selected, this.valueKey);
213
- this._displayValue = this.selectionController
214
- .getValue(selected, this.displayKey)
215
- .join(', ');
216
- if (this.target && this.singleSelect) {
217
- this.target.value = this._displayValue;
218
239
  }
240
+ this._formValue.value = this._selection.getSelectedValuesByKey(this.valueKey);
241
+ this._displayValue = this._selection
242
+ .getSelectedValuesByKey(this.displayKey)
243
+ .join(', ');
219
244
  this._setFormValue();
220
- this._validate();
221
- await this.updateComplete;
222
- this.list.requestUpdate();
245
+ if (!initial) {
246
+ this._validate();
247
+ this._list.requestUpdate();
248
+ }
223
249
  }
224
250
  focus(options) {
225
- this.target.focus(options);
251
+ this._input.focus(options);
226
252
  }
227
253
  blur() {
228
- this.target.blur();
229
- super.blur();
230
- }
231
- normalizeSelection(items = []) {
232
- return Array.isArray(items) ? items : [items];
254
+ this._input.blur();
233
255
  }
234
256
  get selection() {
235
- return Array.from(this.selectionController.selected.values());
257
+ return this._selection.asArray;
236
258
  }
237
259
  select(items) {
238
- const _items = this.normalizeSelection(items);
239
- this.selectionController.select(_items, false);
260
+ this._selection.select(items);
240
261
  this.updateValue();
241
262
  }
242
263
  deselect(items) {
243
- const _items = this.normalizeSelection(items);
244
- this.selectionController.deselect(_items, false);
264
+ this._selection.deselect(items);
245
265
  this.updateValue();
246
266
  }
247
- async handleMainInput(e) {
267
+ async handleMainInput({ detail }) {
248
268
  this._show();
249
- this.dataController.searchTerm = e.detail;
269
+ this._state.searchTerm = detail;
250
270
  await this.updateComplete;
251
- const matchIndex = this.dataState.findIndex((i) => !i.header);
252
- this.navigationController.active = e.detail.length > 0 ? matchIndex : -1;
253
- this.list.requestUpdate();
271
+ const matchIndex = this._state.dataState.findIndex((i) => !i.header);
272
+ this._navigation.active = detail ? matchIndex : -1;
273
+ this._list.requestUpdate();
254
274
  this.clearSingleSelection();
255
275
  }
256
- handleSearchInput(e) {
257
- this.dataController.searchTerm = e.detail;
276
+ _handleBlur() {
277
+ if (this._selection.isEmpty) {
278
+ this._displayValue = '';
279
+ this.resetSearchTerm();
280
+ }
281
+ this.checkValidity();
282
+ }
283
+ handleSearchInput({ detail }) {
284
+ this._state.searchTerm = detail;
258
285
  }
259
286
  handleOpening() {
260
287
  return this.emitEvent('igcOpening', { cancelable: true });
@@ -272,10 +299,10 @@ let IgcComboComponent = IgcComboComponent_1 = class IgcComboComponent extends Fo
272
299
  this.emitEvent('igcOpened');
273
300
  }
274
301
  if (!this.singleSelect) {
275
- this.list.focus();
302
+ this._list.focus();
276
303
  }
277
304
  if (!this.autofocusList) {
278
- this.input.focus();
305
+ this._searchInput.focus();
279
306
  }
280
307
  return true;
281
308
  }
@@ -291,7 +318,7 @@ let IgcComboComponent = IgcComboComponent_1 = class IgcComboComponent extends Fo
291
318
  if (emitEvent) {
292
319
  this.emitEvent('igcClosed');
293
320
  }
294
- this.navigationController.active = -1;
321
+ this._navigation.active = -1;
295
322
  return true;
296
323
  }
297
324
  async hide() {
@@ -303,45 +330,50 @@ let IgcComboComponent = IgcComboComponent_1 = class IgcComboComponent extends Fo
303
330
  async toggle() {
304
331
  return this._toggle(false);
305
332
  }
333
+ _getActiveDescendantId(index) {
334
+ const position = index + 1;
335
+ const id = this.id ? `${this.id}-item-${position}` : `item-${position}`;
336
+ return { id, position };
337
+ }
306
338
  listKeydownHandler(event) {
307
- const target = event
308
- .composedPath()
309
- .find((el) => el instanceof IgcComboListComponent);
339
+ const target = findElementFromEventPath(IgcComboListComponent.tagName, event);
310
340
  if (target) {
311
- this.navigationController.navigateList(event, target);
341
+ this._navigation.navigateList(event, target);
312
342
  }
313
343
  }
314
344
  itemClickHandler(event) {
315
- const input = this.singleSelect ? this.target : this.input;
316
345
  const target = findElementFromEventPath(IgcComboItemComponent.tagName, event);
346
+ if (!target) {
347
+ return;
348
+ }
317
349
  this.toggleSelect(target.index);
318
- input.focus();
319
350
  if (this.singleSelect) {
351
+ this._input.focus();
320
352
  this._hide();
321
353
  }
354
+ else {
355
+ this._searchInput.focus();
356
+ }
322
357
  }
323
358
  toggleSelect(index) {
324
- const { dataIndex } = this.dataState.at(index);
325
- this.selectionController.changeSelection(dataIndex);
326
- this.navigationController.active = index;
359
+ const { dataIndex } = this._state.dataState.at(index);
360
+ this._selection.changeSelection(dataIndex);
361
+ this._navigation.active = index;
327
362
  this.updateValue();
328
363
  }
329
364
  selectByIndex(index) {
330
- const { dataIndex } = this.dataState.at(index);
331
- this.selectionController.selectByIndex(dataIndex);
332
- this.navigationController.active = index;
365
+ const { dataIndex } = this._state.dataState.at(index);
366
+ this._selection.selectByIndex(dataIndex);
367
+ this._navigation.active = index;
333
368
  this.updateValue();
334
369
  }
335
- navigateTo(item) {
336
- this.navigationController.navigateTo(item, this.list);
337
- }
338
370
  clearSingleSelection() {
339
- const { selected } = this.selectionController;
340
- const selection = selected.values().next().value;
371
+ const _selection = this._selection.asArray;
372
+ const selection = first(_selection);
341
373
  if (selection) {
342
374
  const item = this.valueKey ? selection[this.valueKey] : selection;
343
- this.selectionController.deselect([item], !isEmpty(selected));
344
- this._value = [];
375
+ this._selection.deselect(item, !isEmpty(_selection));
376
+ this._formValue.value = [];
345
377
  }
346
378
  }
347
379
  handleClearIconClick(e) {
@@ -351,28 +383,22 @@ let IgcComboComponent = IgcComboComponent_1 = class IgcComboComponent extends Fo
351
383
  this.clearSingleSelection();
352
384
  }
353
385
  else {
354
- this.selectionController.deselect([], true);
386
+ this._selection.deselect([], true);
355
387
  }
356
388
  this.updateValue();
357
- this.navigationController.active = -1;
389
+ this._navigation.active = -1;
358
390
  }
359
391
  handleMainInputKeydown(e) {
360
- this.navigationController.navigateMainInput(e, this.list);
392
+ this._navigation.navigateMainInput(e, this._list);
361
393
  }
362
394
  handleSearchInputKeydown(e) {
363
- this.navigationController.navigateSearchInput(e, this.list);
395
+ this._navigation.navigateSearchInput(e, this._list);
364
396
  }
365
397
  toggleCaseSensitivity() {
366
398
  this.filteringOptions = {
367
399
  caseSensitive: !this.filteringOptions.caseSensitive,
368
400
  };
369
401
  }
370
- get hasPrefixes() {
371
- return this.inputPrefix.length > 0;
372
- }
373
- get hasSuffixes() {
374
- return this.inputSuffix.length > 0;
375
- }
376
402
  _stopPropagation(e) {
377
403
  e.stopPropagation();
378
404
  }
@@ -380,10 +406,10 @@ let IgcComboComponent = IgcComboComponent_1 = class IgcComboComponent extends Fo
380
406
  return html `
381
407
  <span
382
408
  slot="suffix"
383
- part="${partNameMap({
409
+ part=${partNameMap({
384
410
  'toggle-icon': true,
385
- filled: this.value.length > 0,
386
- })}"
411
+ filled: !isEmpty(this.value),
412
+ })}
387
413
  >
388
414
  <slot name="toggle-icon">
389
415
  <igc-icon
@@ -396,125 +422,126 @@ let IgcComboComponent = IgcComboComponent_1 = class IgcComboComponent extends Fo
396
422
  `;
397
423
  }
398
424
  renderClearIcon() {
399
- const { selected } = this.selectionController;
400
- return html `<span
401
- slot="suffix"
402
- part="clear-icon"
403
- @click=${this.handleClearIconClick}
404
- ?hidden=${isEmpty(selected)}
405
- >
406
- <slot name="clear-icon">
407
- <igc-icon
408
- name="input_clear"
409
- collection="default"
410
- aria-hidden="true"
411
- ></igc-icon>
412
- </slot>
413
- </span>`;
425
+ return html `
426
+ <span
427
+ slot="suffix"
428
+ part="clear-icon"
429
+ @click=${this.handleClearIconClick}
430
+ ?hidden=${this._selection.isEmpty}
431
+ >
432
+ <slot name="clear-icon">
433
+ <igc-icon
434
+ name="input_clear"
435
+ collection="default"
436
+ aria-hidden="true"
437
+ ></igc-icon>
438
+ </slot>
439
+ </span>
440
+ `;
414
441
  }
415
442
  renderMainInput() {
416
- return html `<igc-input
417
- id="target"
418
- slot="anchor"
419
- role="combobox"
420
- aria-controls="dropdown"
421
- aria-owns="dropdown"
422
- aria-expanded=${this.open ? 'true' : 'false'}
423
- aria-describedby="combo-helper-text"
424
- aria-disabled=${this.disabled}
425
- exportparts="container: input, input: native-input, label, prefix, suffix"
426
- @click=${(e) => {
427
- e.preventDefault();
428
- this._toggle(true);
429
- }}
430
- placeholder=${ifDefined(this.placeholder)}
431
- label=${ifDefined(this.label)}
432
- @igcChange=${this._stopPropagation}
433
- @focus=${() => {
434
- requestAnimationFrame(() => {
435
- this.target.select();
436
- });
437
- }}
438
- @igcInput=${this.handleMainInput}
439
- @keydown=${this.handleMainInputKeydown}
440
- .value=${this._displayValue}
441
- .disabled=${this.disabled}
442
- .required=${this.required}
443
- .invalid=${live(this.invalid)}
444
- .outlined=${this.outlined}
445
- .autofocus=${this.autofocus}
446
- ?readonly=${!this.singleSelect}
447
- >
448
- <span slot=${this.hasPrefixes && 'prefix'}>
449
- <slot name="prefix"></slot>
450
- </span>
451
- ${this.renderClearIcon()}
452
- <span slot=${this.hasSuffixes && 'suffix'}>
453
- <slot name="suffix"></slot>
454
- </span>
455
- ${this.renderToggleIcon()}
456
- </igc-input>`;
443
+ return html `
444
+ <igc-input
445
+ id="target"
446
+ slot="anchor"
447
+ role="combobox"
448
+ aria-controls="dropdown"
449
+ aria-owns="dropdown"
450
+ aria-expanded=${this.open ? 'true' : 'false'}
451
+ aria-describedby="combo-helper-text"
452
+ aria-disabled=${this.disabled}
453
+ exportparts="container: input, input: native-input, label, prefix, suffix"
454
+ @click=${this._toggle}
455
+ placeholder=${ifDefined(this.placeholder)}
456
+ label=${ifDefined(this.label)}
457
+ @igcChange=${this._stopPropagation}
458
+ @igcInput=${this.handleMainInput}
459
+ @keydown=${this.handleMainInputKeydown}
460
+ .value=${this._displayValue}
461
+ .disabled=${this.disabled}
462
+ .required=${this.required}
463
+ .invalid=${live(this.invalid)}
464
+ .outlined=${this.outlined}
465
+ .autofocus=${this.autofocus}
466
+ ?readonly=${!this.singleSelect}
467
+ >
468
+ <span slot=${!isEmpty(this.inputPrefix) && 'prefix'}>
469
+ <slot name="prefix"></slot>
470
+ </span>
471
+ ${this.renderClearIcon()}
472
+ <span slot=${!isEmpty(this.inputSuffix) && 'suffix'}>
473
+ <slot name="suffix"></slot>
474
+ </span>
475
+ ${this.renderToggleIcon()}
476
+ </igc-input>
477
+ `;
457
478
  }
458
479
  renderSearchInput() {
459
- return html `<div
460
- part="filter-input"
461
- ?hidden=${this.disableFiltering || this.singleSelect}
462
- >
463
- <igc-input
464
- .value=${this.dataController.searchTerm}
465
- part="search-input"
466
- placeholder=${this.placeholderSearch}
467
- exportparts="input: search-input"
468
- @igcInput=${this.handleSearchInput}
469
- @keydown=${this.handleSearchInputKeydown}
480
+ return html `
481
+ <div
482
+ part="filter-input"
483
+ ?hidden=${this.disableFiltering || this.singleSelect}
470
484
  >
471
- <igc-icon
472
- slot=${this.caseSensitiveIcon && 'suffix'}
473
- name="case_sensitive"
474
- collection="default"
475
- part=${partNameMap({
485
+ <igc-input
486
+ .value=${this._state.searchTerm}
487
+ part="search-input"
488
+ placeholder=${this.placeholderSearch}
489
+ exportparts="input: search-input"
490
+ @igcInput=${this.handleSearchInput}
491
+ @keydown=${this.handleSearchInputKeydown}
492
+ >
493
+ <igc-icon
494
+ slot=${this.caseSensitiveIcon && 'suffix'}
495
+ name="case_sensitive"
496
+ collection="default"
497
+ part=${partNameMap({
476
498
  'case-icon': true,
477
499
  active: this.filteringOptions.caseSensitive ?? false,
478
500
  })}
479
- @click=${this.toggleCaseSensitivity}
480
- ></igc-icon>
481
- </igc-input>
482
- </div>`;
501
+ @click=${this.toggleCaseSensitivity}
502
+ ></igc-icon>
503
+ </igc-input>
504
+ </div>
505
+ `;
483
506
  }
484
507
  renderEmptyTemplate() {
485
- return html `<div part="empty" ?hidden=${this.dataState.length > 0}>
486
- <slot name="empty">The list is empty</slot>
487
- </div>`;
508
+ return html `
509
+ <div part="empty" ?hidden=${!isEmpty(this._state.dataState)}>
510
+ <slot name="empty">The list is empty</slot>
511
+ </div>
512
+ `;
488
513
  }
489
514
  renderList() {
490
- const hasItems = this.dataState.length > 0;
491
- return html `<div
492
- .inert=${!this.open}
493
- @keydown=${this.listKeydownHandler}
494
- part="list-wrapper"
495
- >
496
- ${this.renderSearchInput()}
497
- <div part="header">
498
- <slot name="header"></slot>
499
- </div>
500
- <igc-combo-list
501
- aria-multiselectable=${!this.singleSelect}
502
- id="dropdown"
503
- part="list"
504
- role="listbox"
505
- tabindex="0"
506
- aria-labelledby="target"
507
- aria-activedescendant=${ifDefined(this._activeDescendant)}
508
- .items=${this.dataState}
509
- .renderItem=${this.itemRenderer}
510
- ?hidden=${!hasItems}
515
+ return html `
516
+ <div
517
+ .inert=${!this.open}
518
+ @keydown=${this.listKeydownHandler}
519
+ part="list-wrapper"
511
520
  >
512
- </igc-combo-list>
513
- ${this.renderEmptyTemplate()}
514
- <div part="footer">
515
- <slot name="footer"></slot>
521
+ ${this.renderSearchInput()}
522
+ <div part="header">
523
+ <slot name="header"></slot>
524
+ </div>
525
+ <igc-combo-list
526
+ aria-multiselectable=${!this.singleSelect}
527
+ id="dropdown"
528
+ part="list"
529
+ role="listbox"
530
+ tabindex="0"
531
+ aria-labelledby="target"
532
+ aria-activedescendant=${ifDefined(this._activeDescendant)}
533
+ .items=${this._state.dataState}
534
+ .renderItem=${this.itemRenderer}
535
+ ?hidden=${isEmpty(this._state.dataState)}
536
+ @click=${this.itemClickHandler}
537
+ >
538
+ </igc-combo-list>
539
+ ${this.renderEmptyTemplate()}
540
+ <div part="footer">
541
+ <slot name="footer"></slot>
542
+ </div>
516
543
  </div>
517
- </div>`;
544
+ `;
518
545
  }
519
546
  renderHelperText() {
520
547
  return IgcValidationContainerComponent.create(this, {
@@ -547,61 +574,61 @@ __decorate([
547
574
  ], IgcComboComponent.prototype, "inputPrefix", void 0);
548
575
  __decorate([
549
576
  query('[part="search-input"]')
550
- ], IgcComboComponent.prototype, "input", void 0);
577
+ ], IgcComboComponent.prototype, "_searchInput", void 0);
551
578
  __decorate([
552
- query('igc-input#target')
553
- ], IgcComboComponent.prototype, "target", void 0);
579
+ query('#target', true)
580
+ ], IgcComboComponent.prototype, "_input", void 0);
554
581
  __decorate([
555
- query('igc-combo-list')
556
- ], IgcComboComponent.prototype, "list", void 0);
582
+ query(IgcComboListComponent.tagName, true)
583
+ ], IgcComboComponent.prototype, "_list", void 0);
557
584
  __decorate([
558
585
  property({ attribute: false })
559
- ], IgcComboComponent.prototype, "data", void 0);
586
+ ], IgcComboComponent.prototype, "data", null);
560
587
  __decorate([
561
- property({ reflect: true, type: Boolean })
588
+ property({ type: Boolean, reflect: true })
562
589
  ], IgcComboComponent.prototype, "outlined", void 0);
563
590
  __decorate([
564
- property({ attribute: 'single-select', reflect: true, type: Boolean })
565
- ], IgcComboComponent.prototype, "singleSelect", void 0);
591
+ property({ type: Boolean, reflect: true, attribute: 'single-select' })
592
+ ], IgcComboComponent.prototype, "singleSelect", null);
566
593
  __decorate([
567
594
  property({ type: Boolean })
568
595
  ], IgcComboComponent.prototype, "autofocus", void 0);
569
596
  __decorate([
570
- property({ attribute: 'autofocus-list', type: Boolean })
597
+ property({ type: Boolean, attribute: 'autofocus-list' })
571
598
  ], IgcComboComponent.prototype, "autofocusList", void 0);
572
599
  __decorate([
573
- property({ type: String })
600
+ property()
574
601
  ], IgcComboComponent.prototype, "label", void 0);
575
602
  __decorate([
576
- property({ type: String })
603
+ property()
577
604
  ], IgcComboComponent.prototype, "placeholder", void 0);
578
605
  __decorate([
579
- property({ attribute: 'placeholder-search', type: String })
606
+ property({ attribute: 'placeholder-search' })
580
607
  ], IgcComboComponent.prototype, "placeholderSearch", void 0);
581
608
  __decorate([
582
- property({ type: Boolean })
609
+ property({ type: Boolean, reflect: true })
583
610
  ], IgcComboComponent.prototype, "open", void 0);
584
611
  __decorate([
585
- property({ attribute: 'value-key', reflect: false })
586
- ], IgcComboComponent.prototype, "valueKey", void 0);
612
+ property({ attribute: 'value-key' })
613
+ ], IgcComboComponent.prototype, "valueKey", null);
587
614
  __decorate([
588
- property({ attribute: 'display-key', reflect: false })
589
- ], IgcComboComponent.prototype, "displayKey", void 0);
615
+ property({ attribute: 'display-key' })
616
+ ], IgcComboComponent.prototype, "displayKey", null);
590
617
  __decorate([
591
- property({ attribute: 'group-key', reflect: false })
592
- ], IgcComboComponent.prototype, "groupKey", void 0);
618
+ property({ attribute: 'group-key' })
619
+ ], IgcComboComponent.prototype, "groupKey", null);
593
620
  __decorate([
594
- property({ attribute: 'group-sorting', reflect: false })
595
- ], IgcComboComponent.prototype, "groupSorting", void 0);
621
+ property({ attribute: 'group-sorting' })
622
+ ], IgcComboComponent.prototype, "groupSorting", null);
596
623
  __decorate([
597
- property({ attribute: 'filtering-options', type: Object })
624
+ property({ type: Object, attribute: 'filtering-options' })
598
625
  ], IgcComboComponent.prototype, "filteringOptions", null);
599
626
  __decorate([
600
- property({ type: Boolean, attribute: 'case-sensitive-icon', reflect: false })
627
+ property({ type: Boolean, attribute: 'case-sensitive-icon' })
601
628
  ], IgcComboComponent.prototype, "caseSensitiveIcon", void 0);
602
629
  __decorate([
603
- property({ type: Boolean, attribute: 'disable-filtering', reflect: false })
604
- ], IgcComboComponent.prototype, "disableFiltering", void 0);
630
+ property({ type: Boolean, attribute: 'disable-filtering' })
631
+ ], IgcComboComponent.prototype, "disableFiltering", null);
605
632
  __decorate([
606
633
  property({ attribute: false })
607
634
  ], IgcComboComponent.prototype, "itemTemplate", void 0);
@@ -609,37 +636,11 @@ __decorate([
609
636
  property({ attribute: false })
610
637
  ], IgcComboComponent.prototype, "groupHeaderTemplate", void 0);
611
638
  __decorate([
612
- state()
613
- ], IgcComboComponent.prototype, "dataState", void 0);
614
- __decorate([
615
- watch('data')
616
- ], IgcComboComponent.prototype, "dataChanged", null);
617
- __decorate([
618
- watch('valueKey')
619
- ], IgcComboComponent.prototype, "updateDisplayKey", null);
620
- __decorate([
621
- watch('displayKey')
622
- ], IgcComboComponent.prototype, "updateFilterKey", null);
623
- __decorate([
624
- watch('groupKey'),
625
- watch('groupSorting'),
626
- watch('pipeline')
627
- ], IgcComboComponent.prototype, "pipeline", null);
639
+ property({ type: Array })
640
+ ], IgcComboComponent.prototype, "value", null);
628
641
  __decorate([
629
642
  watch('open')
630
643
  ], IgcComboComponent.prototype, "toggleDirectiveChange", null);
631
- __decorate([
632
- watch('disableFiltering')
633
- ], IgcComboComponent.prototype, "updateOnDisableFiltering", null);
634
- __decorate([
635
- watch('singleSelect', { waitUntilFirstUpdate: true })
636
- ], IgcComboComponent.prototype, "resetState", null);
637
- __decorate([
638
- watch('value')
639
- ], IgcComboComponent.prototype, "selectItems", null);
640
- __decorate([
641
- property({ attribute: true, type: Array })
642
- ], IgcComboComponent.prototype, "value", null);
643
644
  IgcComboComponent = IgcComboComponent_1 = __decorate([
644
645
  themes(all),
645
646
  blazorAdditionalDependencies('IgcIconComponent, IgcInputComponent'),