igniteui-webcomponents 3.3.0-beta.0 → 4.0.0-alpha

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 (422) hide show
  1. package/CHANGELOG.md +38 -20
  2. package/README.md +7 -2
  3. package/components/accordion/accordion.d.ts +36 -0
  4. package/components/accordion/accordion.js +129 -0
  5. package/components/accordion/accordion.js.map +1 -0
  6. package/components/accordion/themes/accordion.base.css.d.ts +1 -0
  7. package/components/accordion/themes/accordion.base.css.js +14 -0
  8. package/components/accordion/themes/accordion.base.css.js.map +1 -0
  9. package/components/avatar/themes/avatar.base.css.js +94 -1
  10. package/components/avatar/themes/avatar.base.css.js.map +1 -1
  11. package/components/avatar/themes/avatar.bootstrap.css.js +4 -1
  12. package/components/avatar/themes/avatar.bootstrap.css.js.map +1 -1
  13. package/components/badge/themes/light/badge.base.css.js +99 -1
  14. package/components/badge/themes/light/badge.base.css.js.map +1 -1
  15. package/components/badge/themes/light/badge.bootstrap.css.js +10 -1
  16. package/components/badge/themes/light/badge.bootstrap.css.js.map +1 -1
  17. package/components/button/button-base.js +7 -2
  18. package/components/button/button-base.js.map +1 -1
  19. package/components/button/icon-button.d.ts +0 -1
  20. package/components/button/icon-button.js +3 -1
  21. package/components/button/icon-button.js.map +1 -1
  22. package/components/button/themes/button/light/button.base.css.js +183 -1
  23. package/components/button/themes/button/light/button.base.css.js.map +1 -1
  24. package/components/button/themes/button/light/button.bootstrap.css.js +147 -1
  25. package/components/button/themes/button/light/button.bootstrap.css.js.map +1 -1
  26. package/components/button/themes/button/light/button.fluent.css.js +167 -1
  27. package/components/button/themes/button/light/button.fluent.css.js.map +1 -1
  28. package/components/button/themes/button/light/button.indigo.css.js +140 -1
  29. package/components/button/themes/button/light/button.indigo.css.js.map +1 -1
  30. package/components/button/themes/button/light/button.material.css.js +232 -1
  31. package/components/button/themes/button/light/button.material.css.js.map +1 -1
  32. package/components/button/themes/icon-button/light/icon-button.base.css.js +100 -1
  33. package/components/button/themes/icon-button/light/icon-button.base.css.js.map +1 -1
  34. package/components/button/themes/icon-button/light/icon-button.bootstrap.css.js +80 -1
  35. package/components/button/themes/icon-button/light/icon-button.bootstrap.css.js.map +1 -1
  36. package/components/button/themes/icon-button/light/icon-button.fluent.css.js +89 -1
  37. package/components/button/themes/icon-button/light/icon-button.fluent.css.js.map +1 -1
  38. package/components/button/themes/icon-button/light/icon-button.indigo.css.js +83 -1
  39. package/components/button/themes/icon-button/light/icon-button.indigo.css.js.map +1 -1
  40. package/components/button/themes/icon-button/light/icon-button.material.css.js +52 -1
  41. package/components/button/themes/icon-button/light/icon-button.material.css.js.map +1 -1
  42. package/components/calendar/calendar.d.ts +0 -4
  43. package/components/calendar/calendar.js +6 -4
  44. package/components/calendar/calendar.js.map +1 -1
  45. package/components/calendar/common/calendar-base.js +3 -1
  46. package/components/calendar/common/calendar-base.js.map +1 -1
  47. package/components/calendar/common/calendar.model.js.map +1 -1
  48. package/components/calendar/days-view/days-view.d.ts +1 -0
  49. package/components/calendar/days-view/days-view.js +2 -2
  50. package/components/calendar/days-view/days-view.js.map +1 -1
  51. package/components/calendar/months-view/months-view.d.ts +1 -0
  52. package/components/calendar/months-view/months-view.js +2 -2
  53. package/components/calendar/months-view/months-view.js.map +1 -1
  54. package/components/calendar/themes/bootstrap/calendar.bootstrap.css.js +41 -1
  55. package/components/calendar/themes/bootstrap/calendar.bootstrap.css.js.map +1 -1
  56. package/components/calendar/themes/bootstrap/days-view.bootstrap.css.js +263 -1
  57. package/components/calendar/themes/bootstrap/days-view.bootstrap.css.js.map +1 -1
  58. package/components/calendar/themes/bootstrap/year-month-view.bootstrap.css.js +55 -1
  59. package/components/calendar/themes/bootstrap/year-month-view.bootstrap.css.js.map +1 -1
  60. package/components/calendar/themes/calendar.base.css.js +277 -1
  61. package/components/calendar/themes/calendar.base.css.js.map +1 -1
  62. package/components/calendar/themes/days-view.base.css.js +285 -1
  63. package/components/calendar/themes/days-view.base.css.js.map +1 -1
  64. package/components/calendar/themes/fluent/calendar.fluent.css.js +289 -1
  65. package/components/calendar/themes/fluent/calendar.fluent.css.js.map +1 -1
  66. package/components/calendar/themes/fluent/days-view.fluent.css.js +327 -1
  67. package/components/calendar/themes/fluent/days-view.fluent.css.js.map +1 -1
  68. package/components/calendar/themes/fluent/year-month-view.fluent.css.js +121 -1
  69. package/components/calendar/themes/fluent/year-month-view.fluent.css.js.map +1 -1
  70. package/components/calendar/themes/year-month-view.base.css.js +93 -1
  71. package/components/calendar/themes/year-month-view.base.css.js.map +1 -1
  72. package/components/calendar/years-view/years-view.d.ts +1 -0
  73. package/components/calendar/years-view/years-view.js +2 -2
  74. package/components/calendar/years-view/years-view.js.map +1 -1
  75. package/components/card/card.js +6 -0
  76. package/components/card/card.js.map +1 -1
  77. package/components/card/themes/light/card.actions.bootstrap.css.js +93 -1
  78. package/components/card/themes/light/card.actions.bootstrap.css.js.map +1 -1
  79. package/components/card/themes/light/card.actions.material.css.js +89 -1
  80. package/components/card/themes/light/card.actions.material.css.js.map +1 -1
  81. package/components/card/themes/light/card.bootstrap.css.js +10 -1
  82. package/components/card/themes/light/card.bootstrap.css.js.map +1 -1
  83. package/components/card/themes/light/card.content.bootstrap.css.js +75 -1
  84. package/components/card/themes/light/card.content.bootstrap.css.js.map +1 -1
  85. package/components/card/themes/light/card.content.indigo.css.js +57 -1
  86. package/components/card/themes/light/card.content.indigo.css.js.map +1 -1
  87. package/components/card/themes/light/card.content.material.css.js +49 -1
  88. package/components/card/themes/light/card.content.material.css.js.map +1 -1
  89. package/components/card/themes/light/card.fluent.css.js +20 -1
  90. package/components/card/themes/light/card.fluent.css.js.map +1 -1
  91. package/components/card/themes/light/card.header.bootstrap.css.js +132 -1
  92. package/components/card/themes/light/card.header.bootstrap.css.js.map +1 -1
  93. package/components/card/themes/light/card.header.fluent.css.js +128 -1
  94. package/components/card/themes/light/card.header.fluent.css.js.map +1 -1
  95. package/components/card/themes/light/card.header.indigo.css.js +114 -1
  96. package/components/card/themes/light/card.header.indigo.css.js.map +1 -1
  97. package/components/card/themes/light/card.header.material.css.js +104 -1
  98. package/components/card/themes/light/card.header.material.css.js.map +1 -1
  99. package/components/card/themes/light/card.material.css.js +59 -1
  100. package/components/card/themes/light/card.material.css.js.map +1 -1
  101. package/components/card/themes/light/card.media.material.css.js +42 -1
  102. package/components/card/themes/light/card.media.material.css.js.map +1 -1
  103. package/components/checkbox/checkbox-base.js +7 -2
  104. package/components/checkbox/checkbox-base.js.map +1 -1
  105. package/components/checkbox/checkbox.d.ts +1 -0
  106. package/components/checkbox/checkbox.js +6 -5
  107. package/components/checkbox/checkbox.js.map +1 -1
  108. package/components/checkbox/switch.d.ts +1 -0
  109. package/components/checkbox/switch.js +6 -5
  110. package/components/checkbox/switch.js.map +1 -1
  111. package/components/checkbox/themes/light/checkbox.base.css.js +207 -1
  112. package/components/checkbox/themes/light/checkbox.base.css.js.map +1 -1
  113. package/components/checkbox/themes/light/checkbox.bootstrap.css.js +107 -1
  114. package/components/checkbox/themes/light/checkbox.bootstrap.css.js.map +1 -1
  115. package/components/checkbox/themes/light/checkbox.fluent.css.js +191 -1
  116. package/components/checkbox/themes/light/checkbox.fluent.css.js.map +1 -1
  117. package/components/checkbox/themes/light/checkbox.indigo.css.js +106 -1
  118. package/components/checkbox/themes/light/checkbox.indigo.css.js.map +1 -1
  119. package/components/checkbox/themes/light/checkbox.material.css.js +57 -1
  120. package/components/checkbox/themes/light/checkbox.material.css.js.map +1 -1
  121. package/components/checkbox/themes/light/switch.base.css.js +208 -1
  122. package/components/checkbox/themes/light/switch.base.css.js.map +1 -1
  123. package/components/checkbox/themes/light/switch.bootstrap.css.js +125 -1
  124. package/components/checkbox/themes/light/switch.bootstrap.css.js.map +1 -1
  125. package/components/checkbox/themes/light/switch.fluent.css.js +130 -1
  126. package/components/checkbox/themes/light/switch.fluent.css.js.map +1 -1
  127. package/components/checkbox/themes/light/switch.indigo.css.js +129 -1
  128. package/components/checkbox/themes/light/switch.indigo.css.js.map +1 -1
  129. package/components/checkbox/themes/light/switch.material.css.js +80 -1
  130. package/components/checkbox/themes/light/switch.material.css.js.map +1 -1
  131. package/components/chip/chip.d.ts +0 -1
  132. package/components/chip/chip.js +3 -1
  133. package/components/chip/chip.js.map +1 -1
  134. package/components/chip/themes/chip.base.css.js +212 -1
  135. package/components/chip/themes/chip.base.css.js.map +1 -1
  136. package/components/chip/themes/chip.bootstrap.css.js +285 -1
  137. package/components/chip/themes/chip.bootstrap.css.js.map +1 -1
  138. package/components/chip/themes/chip.fluent.css.js +247 -1
  139. package/components/chip/themes/chip.fluent.css.js.map +1 -1
  140. package/components/chip/themes/chip.indigo.css.js +345 -1
  141. package/components/chip/themes/chip.indigo.css.js.map +1 -1
  142. package/components/chip/themes/chip.material.css.js +228 -1
  143. package/components/chip/themes/chip.material.css.js.map +1 -1
  144. package/components/common/decorators/blazorAdditionalDependencies.d.ts +5 -0
  145. package/components/common/decorators/blazorAdditionalDependencies.js +6 -0
  146. package/components/common/decorators/blazorAdditionalDependencies.js.map +1 -0
  147. package/components/common/decorators/blazorDeepImport.d.ts +4 -0
  148. package/components/common/decorators/blazorDeepImport.js +2 -0
  149. package/components/common/decorators/blazorDeepImport.js.map +1 -0
  150. package/components/common/decorators/index.d.ts +1 -0
  151. package/components/common/decorators/index.js +1 -0
  152. package/components/common/decorators/index.js.map +1 -1
  153. package/components/common/definitions/defineAllComponents.js +2 -0
  154. package/components/common/definitions/defineAllComponents.js.map +1 -1
  155. package/components/common/i18n/calendar.resources.js.map +1 -1
  156. package/components/common/types.d.ts +1 -0
  157. package/components/common/types.js +2 -0
  158. package/components/common/types.js.map +1 -0
  159. package/components/common/util.d.ts +2 -1
  160. package/components/common/util.js +5 -2
  161. package/components/common/util.js.map +1 -1
  162. package/components/date-time-input/date-time-input.d.ts +2 -0
  163. package/components/date-time-input/date-time-input.js +12 -2
  164. package/components/date-time-input/date-time-input.js.map +1 -1
  165. package/components/dropdown/dropdown-group.d.ts +3 -2
  166. package/components/dropdown/dropdown-group.js +7 -10
  167. package/components/dropdown/dropdown-group.js.map +1 -1
  168. package/components/dropdown/dropdown.d.ts +24 -20
  169. package/components/dropdown/dropdown.js +63 -79
  170. package/components/dropdown/dropdown.js.map +1 -1
  171. package/components/dropdown/themes/light/dropdown-group.base.css.js +70 -1
  172. package/components/dropdown/themes/light/dropdown-group.base.css.js.map +1 -1
  173. package/components/dropdown/themes/light/dropdown-group.fluent.css.js +14 -1
  174. package/components/dropdown/themes/light/dropdown-group.fluent.css.js.map +1 -1
  175. package/components/dropdown/themes/light/dropdown-header.base.css.js +50 -1
  176. package/components/dropdown/themes/light/dropdown-header.base.css.js.map +1 -1
  177. package/components/dropdown/themes/light/dropdown-header.bootstrap.css.js +3 -1
  178. package/components/dropdown/themes/light/dropdown-header.bootstrap.css.js.map +1 -1
  179. package/components/dropdown/themes/light/dropdown-item.base.css.js +112 -1
  180. package/components/dropdown/themes/light/dropdown-item.base.css.js.map +1 -1
  181. package/components/dropdown/themes/light/dropdown-item.bootstrap.css.js +24 -1
  182. package/components/dropdown/themes/light/dropdown-item.bootstrap.css.js.map +1 -1
  183. package/components/dropdown/themes/light/dropdown-item.fluent.css.js +20 -1
  184. package/components/dropdown/themes/light/dropdown-item.fluent.css.js.map +1 -1
  185. package/components/dropdown/themes/light/dropdown-item.indigo.css.js +24 -1
  186. package/components/dropdown/themes/light/dropdown-item.indigo.css.js.map +1 -1
  187. package/components/dropdown/themes/light/dropdown.base.css.js +65 -1
  188. package/components/dropdown/themes/light/dropdown.base.css.js.map +1 -1
  189. package/components/dropdown/themes/light/dropdown.bootstrap.css.js +5 -1
  190. package/components/dropdown/themes/light/dropdown.bootstrap.css.js.map +1 -1
  191. package/components/dropdown/themes/light/dropdown.fluent.css.js +21 -1
  192. package/components/dropdown/themes/light/dropdown.fluent.css.js.map +1 -1
  193. package/components/dropdown/themes/light/dropdown.indigo.css.js +6 -1
  194. package/components/dropdown/themes/light/dropdown.indigo.css.js.map +1 -1
  195. package/components/expansion-panel/expansion-panel.d.ts +1 -1
  196. package/components/expansion-panel/expansion-panel.js +11 -6
  197. package/components/expansion-panel/expansion-panel.js.map +1 -1
  198. package/components/expansion-panel/themes/light/expansion-panel.base.css.js +133 -1
  199. package/components/expansion-panel/themes/light/expansion-panel.base.css.js.map +1 -1
  200. package/components/expansion-panel/themes/light/expansion-panel.bootstrap.css.js +31 -1
  201. package/components/expansion-panel/themes/light/expansion-panel.bootstrap.css.js.map +1 -1
  202. package/components/expansion-panel/themes/light/expansion-panel.fluent.css.js +42 -1
  203. package/components/expansion-panel/themes/light/expansion-panel.fluent.css.js.map +1 -1
  204. package/components/expansion-panel/themes/light/expansion-panel.indigo.css.js +25 -1
  205. package/components/expansion-panel/themes/light/expansion-panel.indigo.css.js.map +1 -1
  206. package/components/icon/icon.js +3 -7
  207. package/components/icon/icon.js.map +1 -1
  208. package/components/icon/icon.material.css.js +63 -1
  209. package/components/icon/icon.material.css.js.map +1 -1
  210. package/components/icon/icon.registry.js +2 -0
  211. package/components/icon/icon.registry.js.map +1 -1
  212. package/components/input/input-base.d.ts +2 -1
  213. package/components/input/input-base.js +9 -6
  214. package/components/input/input-base.js.map +1 -1
  215. package/components/input/themes/light/input.base.css.js +100 -1
  216. package/components/input/themes/light/input.base.css.js.map +1 -1
  217. package/components/input/themes/light/input.bootstrap.css.js +172 -1
  218. package/components/input/themes/light/input.bootstrap.css.js.map +1 -1
  219. package/components/input/themes/light/input.fluent.css.js +138 -1
  220. package/components/input/themes/light/input.fluent.css.js.map +1 -1
  221. package/components/input/themes/light/input.indigo.css.js +106 -1
  222. package/components/input/themes/light/input.indigo.css.js.map +1 -1
  223. package/components/input/themes/light/input.material.css.js +386 -1
  224. package/components/input/themes/light/input.material.css.js.map +1 -1
  225. package/components/list/list.js +4 -0
  226. package/components/list/list.js.map +1 -1
  227. package/components/list/themes/light/list-header.base.css.js +53 -1
  228. package/components/list/themes/light/list-header.base.css.js.map +1 -1
  229. package/components/list/themes/light/list-header.indigo.css.js +3 -1
  230. package/components/list/themes/light/list-header.indigo.css.js.map +1 -1
  231. package/components/list/themes/light/list-item.base.css.js +105 -1
  232. package/components/list/themes/light/list-item.base.css.js.map +1 -1
  233. package/components/list/themes/light/list-item.bootstrap.css.js +38 -1
  234. package/components/list/themes/light/list-item.bootstrap.css.js.map +1 -1
  235. package/components/list/themes/light/list-item.fluent.css.js +24 -1
  236. package/components/list/themes/light/list-item.fluent.css.js.map +1 -1
  237. package/components/list/themes/light/list-item.indigo.css.js +20 -1
  238. package/components/list/themes/light/list-item.indigo.css.js.map +1 -1
  239. package/components/list/themes/light/list.base.css.js +54 -1
  240. package/components/list/themes/light/list.base.css.js.map +1 -1
  241. package/components/list/themes/light/list.bootstrap.css.js +5 -1
  242. package/components/list/themes/light/list.bootstrap.css.js.map +1 -1
  243. package/components/mask-input/mask-input-base.js +7 -2
  244. package/components/mask-input/mask-input-base.js.map +1 -1
  245. package/components/nav-drawer/nav-drawer.js +4 -0
  246. package/components/nav-drawer/nav-drawer.js.map +1 -1
  247. package/components/nav-drawer/themes/light/fluent/nav-drawer-header-item.fluent.css.js +11 -1
  248. package/components/nav-drawer/themes/light/fluent/nav-drawer-header-item.fluent.css.js.map +1 -1
  249. package/components/nav-drawer/themes/light/fluent/nav-drawer-item.fluent.css.js +15 -1
  250. package/components/nav-drawer/themes/light/fluent/nav-drawer-item.fluent.css.js.map +1 -1
  251. package/components/nav-drawer/themes/light/indigo/nav-drawer-header-item.indigo.css.js +3 -1
  252. package/components/nav-drawer/themes/light/indigo/nav-drawer-header-item.indigo.css.js.map +1 -1
  253. package/components/nav-drawer/themes/light/indigo/nav-drawer-item.indigo.css.js +20 -1
  254. package/components/nav-drawer/themes/light/indigo/nav-drawer-item.indigo.css.js.map +1 -1
  255. package/components/nav-drawer/themes/light/indigo/nav-drawer.indigo.css.js +11 -1
  256. package/components/nav-drawer/themes/light/indigo/nav-drawer.indigo.css.js.map +1 -1
  257. package/components/nav-drawer/themes/light/nav-drawer-header-item.base.css.js +41 -1
  258. package/components/nav-drawer/themes/light/nav-drawer-header-item.base.css.js.map +1 -1
  259. package/components/nav-drawer/themes/light/nav-drawer-item.base.css.js +114 -1
  260. package/components/nav-drawer/themes/light/nav-drawer-item.base.css.js.map +1 -1
  261. package/components/nav-drawer/themes/light/nav-drawer.base.css.js +154 -1
  262. package/components/nav-drawer/themes/light/nav-drawer.base.css.js.map +1 -1
  263. package/components/navbar/themes/light/navbar.base.css.js +134 -1
  264. package/components/navbar/themes/light/navbar.base.css.js.map +1 -1
  265. package/components/navbar/themes/light/navbar.bootstrap.css.js +32 -1
  266. package/components/navbar/themes/light/navbar.bootstrap.css.js.map +1 -1
  267. package/components/navbar/themes/light/navbar.fluent.css.js +13 -1
  268. package/components/navbar/themes/light/navbar.fluent.css.js.map +1 -1
  269. package/components/navbar/themes/light/navbar.indigo.css.js +4 -1
  270. package/components/navbar/themes/light/navbar.indigo.css.js.map +1 -1
  271. package/components/progress/circular-progress.d.ts +1 -1
  272. package/components/progress/circular-progress.js +3 -0
  273. package/components/progress/circular-progress.js.map +1 -1
  274. package/components/progress/linear-progress.js +1 -0
  275. package/components/progress/linear-progress.js.map +1 -1
  276. package/components/progress/themes/circular/circular.progress.base.css.js +456 -1
  277. package/components/progress/themes/circular/circular.progress.base.css.js.map +1 -1
  278. package/components/progress/themes/circular/circular.progress.bootstrap.css.js +19 -1
  279. package/components/progress/themes/circular/circular.progress.bootstrap.css.js.map +1 -1
  280. package/components/progress/themes/circular/circular.progress.fluent.css.js +7 -1
  281. package/components/progress/themes/circular/circular.progress.fluent.css.js.map +1 -1
  282. package/components/progress/themes/linear/linear.progress.base.css.js +578 -1
  283. package/components/progress/themes/linear/linear.progress.base.css.js.map +1 -1
  284. package/components/progress/themes/linear/linear.progress.bootstrap.css.js +400 -1
  285. package/components/progress/themes/linear/linear.progress.bootstrap.css.js.map +1 -1
  286. package/components/progress/themes/linear/linear.progress.fluent.css.js +70 -1
  287. package/components/progress/themes/linear/linear.progress.fluent.css.js.map +1 -1
  288. package/components/progress/themes/linear/linear.progress.indigo.css.js +32 -1
  289. package/components/progress/themes/linear/linear.progress.indigo.css.js.map +1 -1
  290. package/components/radio/radio.d.ts +1 -0
  291. package/components/radio/radio.js +6 -5
  292. package/components/radio/radio.js.map +1 -1
  293. package/components/radio/themes/light/radio.base.css.js +173 -1
  294. package/components/radio/themes/light/radio.base.css.js.map +1 -1
  295. package/components/radio/themes/light/radio.bootstrap.css.js +72 -1
  296. package/components/radio/themes/light/radio.bootstrap.css.js.map +1 -1
  297. package/components/radio/themes/light/radio.fluent.css.js +107 -1
  298. package/components/radio/themes/light/radio.fluent.css.js.map +1 -1
  299. package/components/radio/themes/light/radio.indigo.css.js +86 -1
  300. package/components/radio/themes/light/radio.indigo.css.js.map +1 -1
  301. package/components/radio/themes/light/radio.material.css.js +14 -1
  302. package/components/radio/themes/light/radio.material.css.js.map +1 -1
  303. package/components/radio-group/radio-group.base.css.js +53 -1
  304. package/components/radio-group/radio-group.base.css.js.map +1 -1
  305. package/components/radio-group/radio-group.d.ts +0 -1
  306. package/components/radio-group/radio-group.js +7 -6
  307. package/components/radio-group/radio-group.js.map +1 -1
  308. package/components/rating/rating-symbol.base.css.d.ts +1 -0
  309. package/components/rating/rating-symbol.base.css.js +100 -0
  310. package/components/rating/rating-symbol.base.css.js.map +1 -0
  311. package/components/rating/rating-symbol.d.ts +8 -2
  312. package/components/rating/rating-symbol.js +12 -3
  313. package/components/rating/rating-symbol.js.map +1 -1
  314. package/components/rating/rating.base.css.js +138 -1
  315. package/components/rating/rating.base.css.js.map +1 -1
  316. package/components/rating/rating.bootstrap.css.js +29 -1
  317. package/components/rating/rating.bootstrap.css.js.map +1 -1
  318. package/components/rating/rating.d.ts +23 -16
  319. package/components/rating/rating.fluent.css.js +41 -1
  320. package/components/rating/rating.fluent.css.js.map +1 -1
  321. package/components/rating/rating.indigo.css.js +33 -1
  322. package/components/rating/rating.indigo.css.js.map +1 -1
  323. package/components/rating/rating.js +108 -53
  324. package/components/rating/rating.js.map +1 -1
  325. package/components/ripple/ripple.js +1 -1
  326. package/components/ripple/ripple.js.map +1 -1
  327. package/components/ripple/ripple.material.css.js +36 -1
  328. package/components/ripple/ripple.material.css.js.map +1 -1
  329. package/components/slider/range-slider.js.map +1 -1
  330. package/components/slider/slider-base.d.ts +0 -1
  331. package/components/slider/slider-base.js +12 -9
  332. package/components/slider/slider-base.js.map +1 -1
  333. package/components/slider/themes/light/slider.base.css.js +297 -1
  334. package/components/slider/themes/light/slider.base.css.js.map +1 -1
  335. package/components/slider/themes/light/slider.bootstrap.css.js +26 -1
  336. package/components/slider/themes/light/slider.bootstrap.css.js.map +1 -1
  337. package/components/slider/themes/light/slider.fluent.css.js +45 -1
  338. package/components/slider/themes/light/slider.fluent.css.js.map +1 -1
  339. package/components/slider/themes/light/slider.indigo.css.js +48 -1
  340. package/components/slider/themes/light/slider.indigo.css.js.map +1 -1
  341. package/components/slider/themes/light/slider.material.css.js +62 -1
  342. package/components/slider/themes/light/slider.material.css.js.map +1 -1
  343. package/components/snackbar/snackbar.js +3 -0
  344. package/components/snackbar/snackbar.js.map +1 -1
  345. package/components/snackbar/themes/light/snackbar.base.css.js +102 -1
  346. package/components/snackbar/themes/light/snackbar.base.css.js.map +1 -1
  347. package/components/snackbar/themes/light/snackbar.bootstrap.css.js +10 -1
  348. package/components/snackbar/themes/light/snackbar.bootstrap.css.js.map +1 -1
  349. package/components/snackbar/themes/light/snackbar.fluent.css.js +24 -1
  350. package/components/snackbar/themes/light/snackbar.fluent.css.js.map +1 -1
  351. package/components/snackbar/themes/light/snackbar.indigo.css.js +10 -1
  352. package/components/snackbar/themes/light/snackbar.indigo.css.js.map +1 -1
  353. package/components/tabs/tab-panel.js +2 -3
  354. package/components/tabs/tab-panel.js.map +1 -1
  355. package/components/tabs/tab.js +1 -1
  356. package/components/tabs/tab.js.map +1 -1
  357. package/components/tabs/tabs.d.ts +2 -4
  358. package/components/tabs/tabs.js +17 -11
  359. package/components/tabs/tabs.js.map +1 -1
  360. package/components/tabs/themes/light/tab-panel.base.css.js +33 -1
  361. package/components/tabs/themes/light/tab-panel.base.css.js.map +1 -1
  362. package/components/tabs/themes/light/tab.base.css.js +133 -1
  363. package/components/tabs/themes/light/tab.base.css.js.map +1 -1
  364. package/components/tabs/themes/light/tab.bootstrap.css.js +65 -1
  365. package/components/tabs/themes/light/tab.bootstrap.css.js.map +1 -1
  366. package/components/tabs/themes/light/tab.fluent.css.js +18 -1
  367. package/components/tabs/themes/light/tab.fluent.css.js.map +1 -1
  368. package/components/tabs/themes/light/tab.indigo.css.js +21 -1
  369. package/components/tabs/themes/light/tab.indigo.css.js.map +1 -1
  370. package/components/tabs/themes/light/tabs.base.css.js +160 -1
  371. package/components/tabs/themes/light/tabs.base.css.js.map +1 -1
  372. package/components/tabs/themes/light/tabs.bootstrap.css.js +29 -1
  373. package/components/tabs/themes/light/tabs.bootstrap.css.js.map +1 -1
  374. package/components/tabs/themes/light/tabs.fluent.css.js +11 -1
  375. package/components/tabs/themes/light/tabs.fluent.css.js.map +1 -1
  376. package/components/tabs/themes/light/tabs.indigo.css.js +17 -1
  377. package/components/tabs/themes/light/tabs.indigo.css.js.map +1 -1
  378. package/components/toast/themes/toast.base.css.js +34 -1
  379. package/components/toast/themes/toast.base.css.js.map +1 -1
  380. package/components/toast/themes/toast.bootstrap.css.js +9 -1
  381. package/components/toast/themes/toast.bootstrap.css.js.map +1 -1
  382. package/components/toast/themes/toast.fluent.css.js +6 -1
  383. package/components/toast/themes/toast.fluent.css.js.map +1 -1
  384. package/components/toast/themes/toast.indigo.css.js +6 -1
  385. package/components/toast/themes/toast.indigo.css.js.map +1 -1
  386. package/components/toggle/toggle.controller.d.ts +24 -4
  387. package/components/toggle/toggle.controller.js +36 -30
  388. package/components/toggle/toggle.controller.js.map +1 -1
  389. package/components/toggle/toggle.directive.d.ts +1 -1
  390. package/components/toggle/toggle.directive.js +1 -0
  391. package/components/toggle/toggle.directive.js.map +1 -1
  392. package/components/tree/themes/light/tree-item.base.css.js +190 -1
  393. package/components/tree/themes/light/tree-item.base.css.js.map +1 -1
  394. package/components/tree/themes/light/tree-item.bootstrap.css.js +26 -1
  395. package/components/tree/themes/light/tree-item.bootstrap.css.js.map +1 -1
  396. package/components/tree/themes/light/tree-item.fluent.css.js +26 -1
  397. package/components/tree/themes/light/tree-item.fluent.css.js.map +1 -1
  398. package/components/tree/themes/light/tree-item.indigo.css.js +29 -1
  399. package/components/tree/themes/light/tree-item.indigo.css.js.map +1 -1
  400. package/components/tree/themes/light/tree.base.css.js +31 -1
  401. package/components/tree/themes/light/tree.base.css.js.map +1 -1
  402. package/components/tree/tree-item.d.ts +0 -1
  403. package/components/tree/tree-item.js +8 -1
  404. package/components/tree/tree-item.js.map +1 -1
  405. package/components/tree/tree.common.js.map +1 -1
  406. package/components/tree/tree.d.ts +2 -2
  407. package/components/tree/tree.js +22 -2
  408. package/components/tree/tree.js.map +1 -1
  409. package/custom-elements.json +125 -28
  410. package/index.d.ts +7 -12
  411. package/index.js +4 -11
  412. package/index.js.map +1 -1
  413. package/package.json +10 -8
  414. package/themes/dark/bootstrap.css +678 -1
  415. package/themes/dark/fluent.css +689 -1
  416. package/themes/dark/indigo.css +466 -1
  417. package/themes/dark/material.css +647 -1
  418. package/themes/light/bootstrap.css +644 -1
  419. package/themes/light/fluent.css +635 -1
  420. package/themes/light/indigo.css +411 -1
  421. package/themes/light/material.css +635 -1
  422. package/vscode-html-custom-data.json +35 -39
@@ -1,12 +1,8 @@
1
1
  import { LitElement } from 'lit';
2
2
  import { Constructor } from '../common/mixins/constructor.js';
3
3
  import type { IgcPlacement, IgcToggleComponent, IgcToggleEventMap } from '../toggle/types';
4
+ import IgcDropdownGroupComponent from './dropdown-group.js';
4
5
  import IgcDropdownItemComponent from './dropdown-item.js';
5
- import type IgcDropdownGroupComponent from './dropdown-group';
6
- export declare enum DropdownActionKey {
7
- ESCAPE = "escape",
8
- ENTER = "enter"
9
- }
10
6
  export interface IgcDropdownEventMap extends IgcToggleEventMap {
11
7
  igcChange: CustomEvent<IgcDropdownItemComponent>;
12
8
  }
@@ -35,7 +31,8 @@ export default class IgcDropdownComponent extends IgcDropdownComponent_base impl
35
31
  private selectedItem;
36
32
  private activeItem;
37
33
  private target;
38
- private get allItems();
34
+ private readonly keyDownHandlers;
35
+ protected get allItems(): IgcDropdownItemComponent[];
39
36
  private targetNodes;
40
37
  protected content: HTMLElement;
41
38
  protected scrollContainer: HTMLElement;
@@ -68,21 +65,28 @@ export default class IgcDropdownComponent extends IgcDropdownComponent_base impl
68
65
  protected updateOptions(): void;
69
66
  protected sizeChange(): void;
70
67
  constructor();
71
- firstUpdated(): void;
68
+ firstUpdated(): Promise<void>;
72
69
  protected getUpdateComplete(): Promise<boolean>;
73
- private handleKeyDown;
74
- private handleItemActionKey;
75
- private handleClick;
76
- private handleTargetClick;
77
- private handleOpening;
78
- private handleClosing;
79
- private handleChange;
80
- private handleSlotChange;
81
- private handleFocusout;
82
- private getItem;
83
- private activateItem;
84
- private selectItem;
85
- private navigate;
70
+ protected setInitialSelection(): void;
71
+ protected handleKeyDown: (event: KeyboardEvent) => void;
72
+ protected onHomeKey(): void;
73
+ protected onEndKey(): void;
74
+ protected onEscapeKey(): void;
75
+ protected onEnterKey(): void;
76
+ protected handleClick(event: MouseEvent): void;
77
+ protected handleTargetClick: () => Promise<void>;
78
+ protected handleOpening(): boolean;
79
+ protected handleClosing(): boolean;
80
+ protected handleChange(item: IgcDropdownItemComponent): void;
81
+ protected handleSlotChange(): void;
82
+ protected handleFocusout(event: Event): void;
83
+ protected getItem(value: string): {
84
+ item: IgcDropdownItemComponent;
85
+ index: number;
86
+ };
87
+ protected activateItem(value: IgcDropdownItemComponent): void;
88
+ protected selectItem(item: IgcDropdownItemComponent, emit?: boolean): IgcDropdownItemComponent | null;
89
+ protected navigate(direction: -1 | 1, currentIndex?: number): void;
86
90
  private navigateItem;
87
91
  private scrollToHiddenItem;
88
92
  private getNearestSiblingFocusableItemIndex;
@@ -11,21 +11,29 @@ import { styles } from './themes/light/dropdown.base.css.js';
11
11
  import { styles as bootstrap } from './themes/light/dropdown.bootstrap.css.js';
12
12
  import { styles as fluent } from './themes/light/dropdown.fluent.css.js';
13
13
  import { styles as indigo } from './themes/light/dropdown.indigo.css.js';
14
- import IgcDropdownItemComponent from './dropdown-item.js';
15
14
  import { IgcToggleController } from '../toggle/toggle.controller.js';
16
15
  import { styleMap } from 'lit/directives/style-map.js';
17
16
  import { SizableMixin } from '../common/mixins/sizable.js';
18
17
  import { themes } from '../../theming/theming-decorator.js';
19
18
  import { watch } from '../common/decorators/watch.js';
20
19
  import { blazorSuppress } from '../common/decorators/blazorSuppress.js';
21
- export var DropdownActionKey;
22
- (function (DropdownActionKey) {
23
- DropdownActionKey["ESCAPE"] = "escape";
24
- DropdownActionKey["ENTER"] = "enter";
25
- })(DropdownActionKey || (DropdownActionKey = {}));
20
+ import { blazorAdditionalDependencies } from '../common/decorators/blazorAdditionalDependencies.js';
21
+ import { defineComponents } from '../common/definitions/defineComponents.js';
22
+ import IgcDropdownGroupComponent from './dropdown-group.js';
23
+ import IgcDropdownHeaderComponent from './dropdown-header.js';
24
+ import IgcDropdownItemComponent from './dropdown-item.js';
25
+ defineComponents(IgcDropdownGroupComponent, IgcDropdownHeaderComponent, IgcDropdownItemComponent);
26
26
  let IgcDropdownComponent = class IgcDropdownComponent extends SizableMixin(EventEmitterMixin(LitElement)) {
27
27
  constructor() {
28
28
  super();
29
+ this.keyDownHandlers = new Map(Object.entries({
30
+ Escape: this.onEscapeKey,
31
+ Enter: this.onEnterKey,
32
+ ArrowUp: this.onArrowUpKeyDown,
33
+ ArrowDown: this.onArrowDownKeyDown,
34
+ Home: this.onHomeKey,
35
+ End: this.onEndKey,
36
+ }));
29
37
  this.keepOpenOnSelect = false;
30
38
  this.open = false;
31
39
  this.placement = 'bottom-start';
@@ -36,62 +44,35 @@ let IgcDropdownComponent = class IgcDropdownComponent extends SizableMixin(Event
36
44
  this.keepOpenOnOutsideClick = false;
37
45
  this.sameWidth = false;
38
46
  this.handleKeyDown = (event) => {
39
- if (this.open &&
40
- event &&
41
- (event.composedPath().includes(this.target) ||
42
- event.composedPath().includes(this.content))) {
43
- const key = event.key.toLowerCase();
44
- const navKeys = [
45
- 'esc',
46
- 'escape',
47
- 'enter',
48
- 'arrowup',
49
- 'up',
50
- 'arrowdown',
51
- 'down',
52
- ];
53
- if (navKeys.indexOf(key) === -1) {
54
- return;
55
- }
47
+ var _a;
48
+ const path = event.composedPath();
49
+ if (!(path.includes(this.target) || path.includes(this.content)))
50
+ return;
51
+ if (this.keyDownHandlers.has(event.key)) {
56
52
  event.preventDefault();
57
53
  event.stopPropagation();
58
- switch (key) {
59
- case 'esc':
60
- case 'escape':
61
- this.handleItemActionKey(DropdownActionKey.ESCAPE);
62
- break;
63
- case 'enter':
64
- this.handleItemActionKey(DropdownActionKey.ENTER);
65
- break;
66
- case 'arrowup':
67
- case 'up':
68
- this.onArrowUpKeyDown();
69
- break;
70
- case 'arrowdown':
71
- case 'down':
72
- this.onArrowDownKeyDown();
73
- break;
74
- default:
75
- return;
76
- }
54
+ (_a = this.keyDownHandlers.get(event.key)) === null || _a === void 0 ? void 0 : _a.call(this);
77
55
  }
78
56
  };
79
- this.handleTargetClick = () => {
57
+ this.handleTargetClick = async () => {
80
58
  if (!this.open) {
81
59
  if (!this.handleOpening())
82
60
  return;
83
61
  this.show();
62
+ await this.updateComplete;
84
63
  this.emitEvent('igcOpened');
85
64
  }
86
65
  else {
87
66
  this._hide();
88
67
  }
89
68
  };
90
- this.toggleController = new IgcToggleController(this, this.target);
69
+ this.toggleController = new IgcToggleController(this, {
70
+ target: this.target,
71
+ closeCallback: () => this._hide(),
72
+ });
91
73
  }
92
74
  get allItems() {
93
- const groupItems = this.groups.flatMap((group) => group.items);
94
- return [...this.items, ...groupItems];
75
+ return [...this.items, ...this.groups.flatMap((group) => group.items)];
95
76
  }
96
77
  toggleDirectiveChange() {
97
78
  var _a;
@@ -112,44 +93,50 @@ let IgcDropdownComponent = class IgcDropdownComponent extends SizableMixin(Event
112
93
  updateOptions() {
113
94
  if (!this.toggleController)
114
95
  return;
115
- this.toggleController.updateToggleDir();
96
+ this.toggleController.update();
116
97
  }
117
98
  sizeChange() {
118
- this.groups.forEach((g) => (g.size = this.size));
99
+ this.groups.forEach((g) => g.requestUpdate());
119
100
  }
120
- firstUpdated() {
101
+ async firstUpdated() {
121
102
  if (this.targetNodes.length) {
122
103
  this.target = this.targetNodes[0];
123
104
  this.target.setAttribute('aria-haspopup', 'listbox');
124
105
  }
106
+ await this.updateComplete;
107
+ this.setInitialSelection();
125
108
  }
126
109
  async getUpdateComplete() {
127
110
  const result = await super.getUpdateComplete();
128
111
  await this.toggleController.rendered;
129
112
  return result;
130
113
  }
131
- handleItemActionKey(key) {
132
- switch (key) {
133
- case DropdownActionKey.ENTER:
134
- this.selectItem(this.activeItem);
135
- this.handleChange(this.activeItem);
136
- break;
137
- case DropdownActionKey.ESCAPE:
138
- break;
114
+ setInitialSelection() {
115
+ const item = this.allItems.filter((item) => item.selected).at(-1);
116
+ this.allItems.forEach((item) => (item.selected = false));
117
+ if (item) {
118
+ this.selectItem(item, false);
139
119
  }
140
- if (!this.keepOpenOnSelect)
141
- this._hide();
120
+ }
121
+ onHomeKey() {
122
+ this.navigateTo(this.allItems.filter((item) => !item.disabled).at(0).value);
123
+ }
124
+ onEndKey() {
125
+ this.navigateTo(this.allItems.filter((item) => !item.disabled).at(-1).value);
126
+ }
127
+ onEscapeKey() {
128
+ this._hide();
129
+ }
130
+ onEnterKey() {
131
+ this.selectItem(this.activeItem);
142
132
  }
143
133
  handleClick(event) {
144
- const newSelectedItem = event
134
+ const item = event
145
135
  .composedPath()
146
136
  .find((e) => e instanceof IgcDropdownItemComponent);
147
- if (!newSelectedItem || newSelectedItem.disabled)
137
+ if (!item || item.disabled)
148
138
  return;
149
- this.selectItem(newSelectedItem);
150
- this.handleChange(newSelectedItem);
151
- if (!this.keepOpenOnSelect)
152
- this._hide();
139
+ this.selectItem(item);
153
140
  }
154
141
  handleOpening() {
155
142
  const args = { cancelable: true };
@@ -186,25 +173,25 @@ let IgcDropdownComponent = class IgcDropdownComponent extends SizableMixin(Event
186
173
  activateItem(value) {
187
174
  if (!value)
188
175
  return;
189
- if (this.activeItem && this.activeItem !== value) {
176
+ if (this.activeItem) {
190
177
  this.activeItem.active = false;
191
178
  }
192
179
  this.activeItem = value;
193
180
  this.activeItem.active = true;
194
181
  }
195
182
  selectItem(item, emit = true) {
196
- const oldItem = this.selectedItem;
197
- if (!item) {
183
+ if (!item)
198
184
  return null;
199
- }
200
- if (oldItem && oldItem !== item) {
201
- oldItem.selected = false;
185
+ if (this.selectedItem) {
186
+ this.selectedItem.selected = false;
202
187
  }
203
188
  this.activateItem(item);
204
189
  this.selectedItem = item;
205
190
  this.selectedItem.selected = true;
206
191
  if (emit)
207
192
  this.handleChange(this.selectedItem);
193
+ if (emit && !this.keepOpenOnSelect)
194
+ this._hide();
208
195
  return this.selectedItem;
209
196
  }
210
197
  navigate(direction, currentIndex) {
@@ -264,13 +251,14 @@ let IgcDropdownComponent = class IgcDropdownComponent extends SizableMixin(Event
264
251
  onArrowUpKeyDown() {
265
252
  this.navigatePrev();
266
253
  }
267
- _hide(emit = true) {
254
+ async _hide(emit = true) {
268
255
  if (emit && !this.handleClosing())
269
256
  return;
270
257
  if (!this.open)
271
258
  return;
272
259
  this.open = false;
273
260
  if (emit) {
261
+ await this.updateComplete;
274
262
  this.emitEvent('igcClosed');
275
263
  }
276
264
  }
@@ -285,12 +273,7 @@ let IgcDropdownComponent = class IgcDropdownComponent extends SizableMixin(Event
285
273
  this._hide(false);
286
274
  }
287
275
  toggle(target) {
288
- if (!this.open) {
289
- this.show(target);
290
- }
291
- else {
292
- this.hide();
293
- }
276
+ this.open ? this.hide() : this.show(target);
294
277
  }
295
278
  navigateTo(value) {
296
279
  const index = typeof value === 'string' ? this.getItem(value).index : value;
@@ -401,7 +384,8 @@ __decorate([
401
384
  blazorSuppress()
402
385
  ], IgcDropdownComponent.prototype, "select", null);
403
386
  IgcDropdownComponent = __decorate([
404
- themes({ bootstrap, fluent, indigo })
387
+ themes({ bootstrap, fluent, indigo }),
388
+ blazorAdditionalDependencies('IgcDropdownItemComponent, IgcDropdownHeaderComponent, IgcDropdownGroupComponent')
405
389
  ], IgcDropdownComponent);
406
390
  export default IgcDropdownComponent;
407
391
  //# sourceMappingURL=dropdown.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dropdown.js","sourceRoot":"","sources":["../../../src/components/dropdown/dropdown.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement } from 'lit';\nimport { property, query, queryAssignedElements } from 'lit/decorators.js';\nimport { Constructor } from '../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../common/mixins/event-emitter.js';\nimport { styles } from './themes/light/dropdown.base.css.js';\nimport { styles as bootstrap } from './themes/light/dropdown.bootstrap.css.js';\nimport { styles as fluent } from './themes/light/dropdown.fluent.css.js';\nimport { styles as indigo } from './themes/light/dropdown.indigo.css.js';\nimport type {\n IgcPlacement,\n IgcToggleComponent,\n IgcToggleEventMap,\n} from '../toggle/types';\nimport IgcDropdownItemComponent from './dropdown-item.js';\nimport { IgcToggleController } from '../toggle/toggle.controller.js';\nimport type IgcDropdownGroupComponent from './dropdown-group';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { SizableMixin } from '../common/mixins/sizable.js';\nimport { themes } from '../../theming/theming-decorator.js';\nimport { watch } from '../common/decorators/watch.js';\nimport { blazorSuppress } from '../common/decorators/blazorSuppress.js';\n\nexport enum DropdownActionKey {\n ESCAPE = 'escape',\n ENTER = 'enter',\n}\n\nexport interface IgcDropdownEventMap extends IgcToggleEventMap {\n igcChange: CustomEvent<IgcDropdownItemComponent>;\n}\n\n/**\n * Represents a DropDown component.\n *\n * @element igc-dropdown\n *\n * @fires igcChange - Emitted when the selected item changes.\n * @fires igcOpening - Emitted just before the dropdown is open.\n * @fires igcOpened - Emitted after the dropdown is open.\n * @fires igcClosing - Emitter just before the dropdown is closed.\n * @fires igcClosed - Emitted after closing the dropdown.\n *\n * @slot target - Renders the dropdown's target element.\n * @slot - Renders the dropdown list items.\n *\n * @csspart base - The dropdown list wrapper.\n * @csspart list - The dropdown list.\n */\n@themes({ bootstrap, fluent, indigo })\nexport default class IgcDropdownComponent\n extends SizableMixin(\n EventEmitterMixin<IgcDropdownEventMap, Constructor<LitElement>>(LitElement)\n )\n implements IgcToggleComponent\n{\n public static readonly tagName = 'igc-dropdown';\n\n public static styles = styles;\n\n private toggleController!: IgcToggleController;\n private selectedItem!: IgcDropdownItemComponent | null;\n private activeItem!: IgcDropdownItemComponent;\n private target!: HTMLElement;\n\n private get allItems(): IgcDropdownItemComponent[] {\n const groupItems: IgcDropdownItemComponent[] = this.groups.flatMap(\n (group) => group.items\n );\n return [...this.items, ...groupItems];\n }\n\n @queryAssignedElements({ slot: 'target' })\n private targetNodes!: Array<HTMLElement>;\n\n @query('[part=\"base\"]')\n protected content!: HTMLElement;\n\n @query('[part=\"list\"]')\n protected scrollContainer!: HTMLElement;\n\n @queryAssignedElements({ flatten: true, selector: 'igc-dropdown-item' })\n protected items!: Array<IgcDropdownItemComponent>;\n\n @queryAssignedElements({ flatten: true, selector: 'igc-dropdown-group' })\n protected groups!: Array<IgcDropdownGroupComponent>;\n\n /** Whether the dropdown should be kept open on selection. */\n @property({ type: Boolean, attribute: 'keep-open-on-select' })\n public keepOpenOnSelect = false;\n\n /** Sets the open state of the component. */\n @property({ type: Boolean })\n public open = false;\n\n /** The preferred placement of the component around the target element.\n * @type {\"top\" | \"top-start\" | \"top-end\" | \"bottom\" | \"bottom-start\" | \"bottom-end\" | \"right\" | \"right-start\" | \"right-end\" | \"left\" | \"left-start\" | \"left-end\"}\n */\n @property()\n public placement: IgcPlacement = 'bottom-start';\n\n /** Sets the component's positioning strategy. */\n @property({ attribute: 'position-strategy' })\n public positionStrategy: 'absolute' | 'fixed' = 'absolute';\n\n /** Determines the behavior of the component during scrolling the container. */\n @property({ attribute: 'scroll-strategy' })\n public scrollStrategy: 'scroll' | 'block' | 'close' = 'scroll';\n\n /**\n * Whether the component should be flipped to the opposite side of the target once it's about to overflow the visible area.\n * When true, once enough space is detected on its preferred side, it will flip back.\n */\n @property({ type: Boolean })\n public flip = false;\n\n /** The distance from the target element. */\n @property({ type: Number })\n public distance = 0;\n\n /** Whether the component should be kept open on clicking outside of it. */\n @property({ type: Boolean, attribute: 'keep-open-on-outside-click' })\n public keepOpenOnOutsideClick = false;\n\n /** Whether the dropdown's width should be the same as the target's one. */\n @property({ type: Boolean, attribute: 'same-width' })\n public sameWidth = false;\n\n @watch('open')\n protected toggleDirectiveChange() {\n if (!this.target) return;\n this.toggleController.target = this.target;\n\n if (this.open) {\n document.addEventListener('keydown', this.handleKeyDown);\n this.target.addEventListener('focusout', this.handleFocusout);\n this.selectedItem = this.allItems.find((i) => i.selected) ?? null;\n } else {\n document.removeEventListener('keydown', this.handleKeyDown);\n this.target.removeEventListener('focusout', this.handleFocusout);\n }\n\n this.target.setAttribute('aria-expanded', this.open ? 'true' : 'false');\n }\n\n @watch('placement')\n @watch('flip')\n @watch('positionStrategy')\n @watch('closeOnOutsideClick')\n @watch('distance')\n @watch('sameWidth')\n protected updateOptions() {\n if (!this.toggleController) return;\n\n this.toggleController.updateToggleDir();\n }\n\n @watch('size')\n protected sizeChange() {\n this.groups.forEach((g) => (g.size = this.size));\n }\n\n constructor() {\n super();\n\n this.toggleController = new IgcToggleController(this, this.target);\n }\n\n public override firstUpdated() {\n if (this.targetNodes.length) {\n this.target = this.targetNodes[0];\n this.target.setAttribute('aria-haspopup', 'listbox');\n }\n }\n\n protected override async getUpdateComplete() {\n const result = await super.getUpdateComplete();\n await this.toggleController.rendered;\n return result;\n }\n\n private handleKeyDown = (event: KeyboardEvent) => {\n if (\n this.open &&\n event &&\n (event.composedPath().includes(this.target) ||\n event.composedPath().includes(this.content))\n ) {\n const key = event.key.toLowerCase();\n const navKeys = [\n 'esc',\n 'escape',\n 'enter',\n 'arrowup',\n 'up',\n 'arrowdown',\n 'down',\n ];\n if (navKeys.indexOf(key) === -1) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n switch (key) {\n case 'esc':\n case 'escape':\n this.handleItemActionKey(DropdownActionKey.ESCAPE);\n break;\n case 'enter':\n this.handleItemActionKey(DropdownActionKey.ENTER);\n break;\n case 'arrowup':\n case 'up':\n this.onArrowUpKeyDown();\n break;\n case 'arrowdown':\n case 'down':\n this.onArrowDownKeyDown();\n break;\n default:\n return;\n }\n }\n };\n\n private handleItemActionKey(key: DropdownActionKey) {\n switch (key) {\n case DropdownActionKey.ENTER:\n this.selectItem(this.activeItem);\n this.handleChange(this.activeItem);\n break;\n case DropdownActionKey.ESCAPE:\n break;\n }\n\n if (!this.keepOpenOnSelect) this._hide();\n }\n\n private handleClick(event: MouseEvent) {\n const newSelectedItem = event\n .composedPath()\n .find(\n (e) => e instanceof IgcDropdownItemComponent\n ) as IgcDropdownItemComponent;\n\n if (!newSelectedItem || newSelectedItem.disabled) return;\n\n this.selectItem(newSelectedItem);\n this.handleChange(newSelectedItem);\n if (!this.keepOpenOnSelect) this._hide();\n }\n\n private handleTargetClick = () => {\n if (!this.open) {\n if (!this.handleOpening()) return;\n this.show();\n this.emitEvent('igcOpened');\n } else {\n this._hide();\n }\n };\n\n private handleOpening() {\n const args = { cancelable: true };\n return this.emitEvent('igcOpening', args);\n }\n\n private handleClosing(): boolean {\n const args = { cancelable: true };\n return this.emitEvent('igcClosing', args);\n }\n\n private handleChange(item: IgcDropdownItemComponent) {\n const args = { detail: item };\n this.emitEvent('igcChange', args);\n }\n\n private handleSlotChange() {\n if (!this.target) return;\n this.target.setAttribute('aria-expanded', this.open ? 'true' : 'false');\n }\n\n private handleFocusout(event: Event) {\n event.preventDefault();\n (event.target as HTMLElement).focus();\n }\n\n private getItem(value: string) {\n let itemIndex = -1;\n let item!: IgcDropdownItemComponent;\n this.allItems.find((i, index) => {\n if (i.value === value) {\n item = i;\n itemIndex = index;\n }\n });\n return { item: item, index: itemIndex };\n }\n\n private activateItem(value: IgcDropdownItemComponent) {\n if (!value) return;\n\n if (this.activeItem && this.activeItem !== value) {\n this.activeItem.active = false;\n }\n\n this.activeItem = value;\n this.activeItem.active = true;\n }\n\n private selectItem(\n item: IgcDropdownItemComponent,\n emit = true\n ): IgcDropdownItemComponent | null {\n const oldItem = this.selectedItem;\n\n if (!item) {\n return null;\n }\n\n if (oldItem && oldItem !== item) {\n oldItem.selected = false;\n }\n\n this.activateItem(item);\n this.selectedItem = item;\n this.selectedItem.selected = true;\n if (emit) this.handleChange(this.selectedItem);\n\n return this.selectedItem;\n }\n\n private navigate(direction: -1 | 1, currentIndex?: number) {\n let index = -1;\n if (this.activeItem) {\n index = currentIndex\n ? currentIndex\n : [...this.allItems].indexOf(this.activeItem) ?? index;\n }\n\n const newIndex = this.getNearestSiblingFocusableItemIndex(index, direction);\n this.navigateItem(newIndex);\n }\n\n private navigateItem(newIndex: number): IgcDropdownItemComponent | null {\n if (!this.allItems) {\n return null;\n }\n\n if (newIndex < 0 || newIndex >= this.allItems.length) {\n return null;\n }\n\n const newItem = this.allItems[newIndex];\n\n this.activateItem(newItem);\n this.scrollToHiddenItem(newItem);\n\n return newItem;\n }\n\n private scrollToHiddenItem(newItem: IgcDropdownItemComponent) {\n const elementRect = newItem.getBoundingClientRect();\n const parentRect = this.content.getBoundingClientRect();\n if (parentRect.top > elementRect.top) {\n this.content.scrollTop -= parentRect.top - elementRect.top;\n }\n\n if (parentRect.bottom < elementRect.bottom) {\n this.content.scrollTop += elementRect.bottom - parentRect.bottom;\n }\n }\n\n private getNearestSiblingFocusableItemIndex(\n startIndex: number,\n direction: -1 | 1\n ): number {\n let index = startIndex;\n const items = this.allItems;\n if (!items) {\n return -1;\n }\n\n while (items[index + direction] && items[index + direction].disabled) {\n index += direction;\n }\n\n index += direction;\n\n return index > -1 && index < items.length ? index : -1;\n }\n\n private navigateNext() {\n this.navigate(1);\n }\n\n private navigatePrev() {\n this.navigate(-1);\n }\n\n private onArrowDownKeyDown() {\n this.navigateNext();\n }\n\n private onArrowUpKeyDown() {\n this.navigatePrev();\n }\n\n private _hide(emit = true) {\n if (emit && !this.handleClosing()) return;\n\n if (!this.open) return;\n\n this.open = false;\n\n if (emit) {\n this.emitEvent('igcClosed');\n }\n }\n\n /** Shows the dropdown. */\n @blazorSuppress()\n public show(target?: HTMLElement) {\n if (this.open && !target) return;\n\n if (target) this.target = target;\n\n this.open = true;\n }\n\n /** Hides the dropdown. */\n public hide(): void {\n this._hide(false);\n }\n\n /** Toggles the open state of the dropdown. */\n @blazorSuppress()\n public toggle(target?: HTMLElement): void {\n if (!this.open) {\n this.show(target);\n } else {\n this.hide();\n }\n }\n\n /** Navigates to the item with the specified value. If it exists, returns the found item, otherwise - null. */\n public navigateTo(value: string): IgcDropdownItemComponent | null;\n /** Navigates to the item at the specified index. If it exists, returns the found item, otherwise - null. */\n public navigateTo(index: number): IgcDropdownItemComponent | null;\n /** Navigates to the specified item. If it exists, returns the found item, otherwise - null. */\n @blazorSuppress()\n public navigateTo(value: string | number): IgcDropdownItemComponent | null {\n const index =\n typeof value === 'string' ? this.getItem(value).index : (value as number);\n\n return this.navigateItem(index);\n }\n\n /** Selects the item with the specified value. If it exists, returns the found item, otherwise - null. */\n public select(value: string): IgcDropdownItemComponent | null;\n /** Selects the item at the specified index. If it exists, returns the found item, otherwise - null. */\n public select(index: number): IgcDropdownItemComponent | null;\n /** Selects the specified item. If it exists, returns the found item, otherwise - null. */\n @blazorSuppress()\n public select(value: string | number): IgcDropdownItemComponent | null {\n const item =\n typeof value === 'string'\n ? this.getItem(value).item\n : this.allItems[value as number];\n\n return this.selectItem(item, false);\n }\n\n /** Clears the current selection of the dropdown. */\n public clearSelection() {\n if (this.selectedItem) {\n this.selectedItem.selected = false;\n }\n this.selectedItem = null;\n }\n\n protected override render() {\n return html`\n <slot\n id=\"igcDDLTarget\"\n name=\"target\"\n @click=${this.handleTargetClick}\n @slotchange=${this.handleSlotChange}\n >\n </slot>\n <div\n part=\"base\"\n style=${styleMap({ position: this.positionStrategy })}\n @click=${this.handleClick}\n ${this.toggleController.toggleDirective}\n >\n <div role=\"listbox\" part=\"list\" aria-labelledby=\"igcDDLTarget\">\n <slot></slot>\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-dropdown': IgcDropdownComponent;\n }\n}\n"]}
1
+ {"version":3,"file":"dropdown.js","sourceRoot":"","sources":["../../../src/components/dropdown/dropdown.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement } from 'lit';\nimport { property, query, queryAssignedElements } from 'lit/decorators.js';\nimport { Constructor } from '../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../common/mixins/event-emitter.js';\nimport { styles } from './themes/light/dropdown.base.css.js';\nimport { styles as bootstrap } from './themes/light/dropdown.bootstrap.css.js';\nimport { styles as fluent } from './themes/light/dropdown.fluent.css.js';\nimport { styles as indigo } from './themes/light/dropdown.indigo.css.js';\nimport type {\n IgcPlacement,\n IgcToggleComponent,\n IgcToggleEventMap,\n} from '../toggle/types';\nimport { IgcToggleController } from '../toggle/toggle.controller.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { SizableMixin } from '../common/mixins/sizable.js';\nimport { themes } from '../../theming/theming-decorator.js';\nimport { watch } from '../common/decorators/watch.js';\nimport { blazorSuppress } from '../common/decorators/blazorSuppress.js';\nimport { blazorAdditionalDependencies } from '../common/decorators/blazorAdditionalDependencies.js';\n\nimport { defineComponents } from '../common/definitions/defineComponents.js';\nimport IgcDropdownGroupComponent from './dropdown-group.js';\nimport IgcDropdownHeaderComponent from './dropdown-header.js';\nimport IgcDropdownItemComponent from './dropdown-item.js';\n\ndefineComponents(\n IgcDropdownGroupComponent,\n IgcDropdownHeaderComponent,\n IgcDropdownItemComponent\n);\n\nexport interface IgcDropdownEventMap extends IgcToggleEventMap {\n igcChange: CustomEvent<IgcDropdownItemComponent>;\n}\n\n/**\n * Represents a DropDown component.\n *\n * @element igc-dropdown\n *\n * @fires igcChange - Emitted when the selected item changes.\n * @fires igcOpening - Emitted just before the dropdown is open.\n * @fires igcOpened - Emitted after the dropdown is open.\n * @fires igcClosing - Emitter just before the dropdown is closed.\n * @fires igcClosed - Emitted after closing the dropdown.\n *\n * @slot target - Renders the dropdown's target element.\n * @slot - Renders the dropdown list items.\n *\n * @csspart base - The dropdown list wrapper.\n * @csspart list - The dropdown list.\n */\n@themes({ bootstrap, fluent, indigo })\n@blazorAdditionalDependencies(\n 'IgcDropdownItemComponent, IgcDropdownHeaderComponent, IgcDropdownGroupComponent'\n)\nexport default class IgcDropdownComponent\n extends SizableMixin(\n EventEmitterMixin<IgcDropdownEventMap, Constructor<LitElement>>(LitElement)\n )\n implements IgcToggleComponent\n{\n public static readonly tagName = 'igc-dropdown';\n\n public static styles = styles;\n\n private toggleController!: IgcToggleController;\n private selectedItem!: IgcDropdownItemComponent | null;\n private activeItem!: IgcDropdownItemComponent;\n private target!: HTMLElement;\n\n private readonly keyDownHandlers: Map<string, Function> = new Map(\n Object.entries({\n Escape: this.onEscapeKey,\n Enter: this.onEnterKey,\n ArrowUp: this.onArrowUpKeyDown,\n ArrowDown: this.onArrowDownKeyDown,\n Home: this.onHomeKey,\n End: this.onEndKey,\n })\n );\n\n protected get allItems() {\n return [...this.items, ...this.groups.flatMap((group) => group.items)];\n }\n\n @queryAssignedElements({ slot: 'target' })\n private targetNodes!: Array<HTMLElement>;\n\n @query('[part=\"base\"]')\n protected content!: HTMLElement;\n\n @query('[part=\"list\"]')\n protected scrollContainer!: HTMLElement;\n\n @queryAssignedElements({ flatten: true, selector: 'igc-dropdown-item' })\n protected items!: Array<IgcDropdownItemComponent>;\n\n @queryAssignedElements({ flatten: true, selector: 'igc-dropdown-group' })\n protected groups!: Array<IgcDropdownGroupComponent>;\n\n /** Whether the dropdown should be kept open on selection. */\n @property({ type: Boolean, attribute: 'keep-open-on-select' })\n public keepOpenOnSelect = false;\n\n /** Sets the open state of the component. */\n @property({ type: Boolean })\n public open = false;\n\n /** The preferred placement of the component around the target element.\n * @type {\"top\" | \"top-start\" | \"top-end\" | \"bottom\" | \"bottom-start\" | \"bottom-end\" | \"right\" | \"right-start\" | \"right-end\" | \"left\" | \"left-start\" | \"left-end\"}\n */\n @property()\n public placement: IgcPlacement = 'bottom-start';\n\n /** Sets the component's positioning strategy. */\n @property({ attribute: 'position-strategy' })\n public positionStrategy: 'absolute' | 'fixed' = 'absolute';\n\n /** Determines the behavior of the component during scrolling the container. */\n @property({ attribute: 'scroll-strategy' })\n public scrollStrategy: 'scroll' | 'block' | 'close' = 'scroll';\n\n /**\n * Whether the component should be flipped to the opposite side of the target once it's about to overflow the visible area.\n * When true, once enough space is detected on its preferred side, it will flip back.\n */\n @property({ type: Boolean })\n public flip = false;\n\n /** The distance from the target element. */\n @property({ type: Number })\n public distance = 0;\n\n /** Whether the component should be kept open on clicking outside of it. */\n @property({ type: Boolean, attribute: 'keep-open-on-outside-click' })\n public keepOpenOnOutsideClick = false;\n\n /** Whether the dropdown's width should be the same as the target's one. */\n @property({ type: Boolean, attribute: 'same-width' })\n public sameWidth = false;\n\n @watch('open')\n protected toggleDirectiveChange() {\n if (!this.target) return;\n this.toggleController.target = this.target;\n\n if (this.open) {\n document.addEventListener('keydown', this.handleKeyDown);\n this.target.addEventListener('focusout', this.handleFocusout);\n this.selectedItem = this.allItems.find((i) => i.selected) ?? null;\n } else {\n document.removeEventListener('keydown', this.handleKeyDown);\n this.target.removeEventListener('focusout', this.handleFocusout);\n }\n\n this.target.setAttribute('aria-expanded', this.open ? 'true' : 'false');\n }\n\n @watch('placement')\n @watch('flip')\n @watch('positionStrategy')\n @watch('closeOnOutsideClick')\n @watch('distance')\n @watch('sameWidth')\n protected updateOptions() {\n if (!this.toggleController) return;\n\n this.toggleController.update();\n }\n\n @watch('size')\n protected sizeChange() {\n this.groups.forEach((g) => g.requestUpdate());\n }\n\n constructor() {\n super();\n this.toggleController = new IgcToggleController(this, {\n target: this.target,\n closeCallback: () => this._hide(),\n });\n }\n\n public override async firstUpdated() {\n if (this.targetNodes.length) {\n this.target = this.targetNodes[0];\n this.target.setAttribute('aria-haspopup', 'listbox');\n }\n\n await this.updateComplete;\n this.setInitialSelection();\n }\n\n protected override async getUpdateComplete() {\n const result = await super.getUpdateComplete();\n await this.toggleController.rendered;\n return result;\n }\n\n protected setInitialSelection() {\n const item = this.allItems.filter((item) => item.selected).at(-1);\n this.allItems.forEach((item) => (item.selected = false));\n if (item) {\n this.selectItem(item, false);\n }\n }\n\n protected handleKeyDown = (event: KeyboardEvent) => {\n const path = event.composedPath();\n if (!(path.includes(this.target) || path.includes(this.content))) return;\n\n if (this.keyDownHandlers.has(event.key)) {\n event.preventDefault();\n event.stopPropagation();\n this.keyDownHandlers.get(event.key)?.call(this);\n }\n };\n\n protected onHomeKey() {\n this.navigateTo(\n this.allItems.filter((item) => !item.disabled).at(0)!.value\n );\n }\n\n protected onEndKey() {\n this.navigateTo(\n this.allItems.filter((item) => !item.disabled).at(-1)!.value\n );\n }\n\n protected onEscapeKey() {\n this._hide();\n }\n\n protected onEnterKey() {\n this.selectItem(this.activeItem);\n }\n\n protected handleClick(event: MouseEvent) {\n const item = event\n .composedPath()\n .find(\n (e) => e instanceof IgcDropdownItemComponent\n ) as IgcDropdownItemComponent;\n\n if (!item || item.disabled) return;\n\n this.selectItem(item);\n }\n\n protected handleTargetClick = async () => {\n if (!this.open) {\n if (!this.handleOpening()) return;\n this.show();\n await this.updateComplete;\n this.emitEvent('igcOpened');\n } else {\n this._hide();\n }\n };\n\n protected handleOpening() {\n const args = { cancelable: true };\n return this.emitEvent('igcOpening', args);\n }\n\n protected handleClosing(): boolean {\n const args = { cancelable: true };\n return this.emitEvent('igcClosing', args);\n }\n\n protected handleChange(item: IgcDropdownItemComponent) {\n const args = { detail: item };\n this.emitEvent('igcChange', args);\n }\n\n protected handleSlotChange() {\n if (!this.target) return;\n this.target.setAttribute('aria-expanded', this.open ? 'true' : 'false');\n }\n\n protected handleFocusout(event: Event) {\n event.preventDefault();\n (event.target as HTMLElement).focus();\n }\n\n protected getItem(value: string) {\n let itemIndex = -1;\n let item!: IgcDropdownItemComponent;\n this.allItems.find((i, index) => {\n if (i.value === value) {\n item = i;\n itemIndex = index;\n }\n });\n return { item: item, index: itemIndex };\n }\n\n protected activateItem(value: IgcDropdownItemComponent) {\n if (!value) return;\n\n if (this.activeItem) {\n this.activeItem.active = false;\n }\n\n this.activeItem = value;\n this.activeItem.active = true;\n }\n\n protected selectItem(\n item: IgcDropdownItemComponent,\n emit = true\n ): IgcDropdownItemComponent | null {\n if (!item) return null;\n\n if (this.selectedItem) {\n this.selectedItem.selected = false;\n }\n\n this.activateItem(item);\n this.selectedItem = item;\n this.selectedItem.selected = true;\n if (emit) this.handleChange(this.selectedItem);\n if (emit && !this.keepOpenOnSelect) this._hide();\n\n return this.selectedItem;\n }\n\n protected navigate(direction: -1 | 1, currentIndex?: number) {\n let index = -1;\n if (this.activeItem) {\n index = currentIndex\n ? currentIndex\n : [...this.allItems].indexOf(this.activeItem) ?? index;\n }\n\n const newIndex = this.getNearestSiblingFocusableItemIndex(index, direction);\n this.navigateItem(newIndex);\n }\n\n private navigateItem(newIndex: number): IgcDropdownItemComponent | null {\n if (!this.allItems) {\n return null;\n }\n\n if (newIndex < 0 || newIndex >= this.allItems.length) {\n return null;\n }\n\n const newItem = this.allItems[newIndex];\n\n this.activateItem(newItem);\n this.scrollToHiddenItem(newItem);\n\n return newItem;\n }\n\n private scrollToHiddenItem(newItem: IgcDropdownItemComponent) {\n const elementRect = newItem.getBoundingClientRect();\n const parentRect = this.content.getBoundingClientRect();\n if (parentRect.top > elementRect.top) {\n this.content.scrollTop -= parentRect.top - elementRect.top;\n }\n\n if (parentRect.bottom < elementRect.bottom) {\n this.content.scrollTop += elementRect.bottom - parentRect.bottom;\n }\n }\n\n private getNearestSiblingFocusableItemIndex(\n startIndex: number,\n direction: -1 | 1\n ): number {\n let index = startIndex;\n const items = this.allItems;\n if (!items) {\n return -1;\n }\n\n while (items[index + direction] && items[index + direction].disabled) {\n index += direction;\n }\n\n index += direction;\n\n return index > -1 && index < items.length ? index : -1;\n }\n\n private navigateNext() {\n this.navigate(1);\n }\n\n private navigatePrev() {\n this.navigate(-1);\n }\n\n private onArrowDownKeyDown() {\n this.navigateNext();\n }\n\n private onArrowUpKeyDown() {\n this.navigatePrev();\n }\n\n private async _hide(emit = true) {\n if (emit && !this.handleClosing()) return;\n\n if (!this.open) return;\n\n this.open = false;\n\n if (emit) {\n await this.updateComplete;\n this.emitEvent('igcClosed');\n }\n }\n\n /** Shows the dropdown. */\n @blazorSuppress()\n public show(target?: HTMLElement) {\n if (this.open && !target) return;\n\n if (target) this.target = target;\n\n this.open = true;\n }\n\n /** Hides the dropdown. */\n public hide(): void {\n this._hide(false);\n }\n\n /** Toggles the open state of the dropdown. */\n @blazorSuppress()\n public toggle(target?: HTMLElement): void {\n this.open ? this.hide() : this.show(target);\n }\n\n /** Navigates to the item with the specified value. If it exists, returns the found item, otherwise - null. */\n public navigateTo(value: string): IgcDropdownItemComponent | null;\n /** Navigates to the item at the specified index. If it exists, returns the found item, otherwise - null. */\n public navigateTo(index: number): IgcDropdownItemComponent | null;\n /** Navigates to the specified item. If it exists, returns the found item, otherwise - null. */\n @blazorSuppress()\n public navigateTo(value: string | number): IgcDropdownItemComponent | null {\n const index =\n typeof value === 'string' ? this.getItem(value).index : (value as number);\n\n return this.navigateItem(index);\n }\n\n /** Selects the item with the specified value. If it exists, returns the found item, otherwise - null. */\n public select(value: string): IgcDropdownItemComponent | null;\n /** Selects the item at the specified index. If it exists, returns the found item, otherwise - null. */\n public select(index: number): IgcDropdownItemComponent | null;\n /** Selects the specified item. If it exists, returns the found item, otherwise - null. */\n @blazorSuppress()\n public select(value: string | number): IgcDropdownItemComponent | null {\n const item =\n typeof value === 'string'\n ? this.getItem(value).item\n : this.allItems[value as number];\n\n return this.selectItem(item, false);\n }\n\n /** Clears the current selection of the dropdown. */\n public clearSelection() {\n if (this.selectedItem) {\n this.selectedItem.selected = false;\n }\n this.selectedItem = null;\n }\n\n protected override render() {\n return html`\n <slot\n id=\"igcDDLTarget\"\n name=\"target\"\n @click=${this.handleTargetClick}\n @slotchange=${this.handleSlotChange}\n >\n </slot>\n <div\n part=\"base\"\n style=${styleMap({ position: this.positionStrategy })}\n @click=${this.handleClick}\n ${this.toggleController.toggleDirective}\n >\n <div role=\"listbox\" part=\"list\" aria-labelledby=\"igcDDLTarget\">\n <slot></slot>\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-dropdown': IgcDropdownComponent;\n }\n}\n"]}
@@ -1,3 +1,72 @@
1
1
  import { css } from 'lit';
2
- export const styles = css `:host{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;scrollbar-width:var(--scrolbar-size, 0.875rem);scrollbar-color:var(--igc-scrollbar-thumb-color, hsla(var(--igc-gray-400), var(--igc-gray-a))) var(--igc-scrollbar-track-color, hsla(var(--igc-gray-200), var(--igc-gray-a)))}:host *,:host *::before,:host *::after{-webkit-box-sizing:border-box;box-sizing:border-box}:host ::-webkit-scrollbar{width:var(--scrolbar-size, 0.875rem);height:var(--scrolbar-size, 0.875rem);background:var(--igc-scrollbar-track-color, hsla(var(--igc-gray-200), var(--igc-gray-a)))}:host ::-webkit-scrollbar-thumb{background:var(--igc-scrollbar-thumb-color, hsla(var(--igc-gray-400), var(--igc-gray-a)))}[hidden]{display:none !important}:host{pointer-events:auto}:host ::slotted([slot=label]){font-family:var(--igc-overline-font-family);font-weight:var(--igc-overline-font-weight);font-size:var(--igc-overline-font-size);font-style:var(--igc-overline-font-style);letter-spacing:var(--igc-overline-letter-spacing);text-transform:var(--igc-overline-text-transform);line-height:var(--igc-overline-line-height);margin-top:var(--igc-overline-margin-top);margin-bottom:var(--igc-overline-margin-bottom);white-space:nowrap;-o-text-overflow:ellipsis;text-overflow:ellipsis;overflow:hidden;display:block;white-space:nowrap;position:relative;color:hsla(var(--igc-secondary-500), var(--igc-secondary-a));pointer-events:none}:host([size=small]) ::slotted(igc-dropdown-item){padding:var(--igc-spacing-small) calc(var(--igc-spacing-small)*3)}:host([size=small]) ::slotted([slot=label]){padding:var(--igc-spacing-small) calc(var(--igc-spacing-small)*2)}:host([size=medium]) ::slotted(igc-dropdown-item){padding:var(--igc-spacing-medium) calc(var(--igc-spacing-medium)*3)}:host([size=medium]) ::slotted([slot=label]){padding:var(--igc-spacing-medium) calc(var(--igc-spacing-medium)*2)}:host([size=large]) ::slotted(igc-dropdown-item){padding:var(--igc-spacing-large) calc(var(--igc-spacing-large)*3)}:host([size=large]) ::slotted([slot=label]){padding:var(--igc-spacing-large) calc(var(--igc-spacing-large)*2)}`;
2
+ export const styles = css `:host {
3
+ position: relative;
4
+ -webkit-box-sizing: border-box;
5
+ box-sizing: border-box;
6
+ scrollbar-width: var(--scrolbar-size, 0.875rem);
7
+ scrollbar-color: var(--igc-scrollbar-thumb-color, hsla(var(--ig-gray-400), var(--ig-gray-a))) var(--igc-scrollbar-track-color, hsla(var(--ig-gray-200), var(--ig-gray-a)));
8
+ }
9
+ :host *,
10
+ :host *::before,
11
+ :host *::after {
12
+ -webkit-box-sizing: border-box;
13
+ box-sizing: border-box;
14
+ }
15
+ :host ::-webkit-scrollbar {
16
+ width: var(--scrolbar-size, 0.875rem);
17
+ height: var(--scrolbar-size, 0.875rem);
18
+ background: var(--igc-scrollbar-track-color, hsla(var(--ig-gray-200), var(--ig-gray-a)));
19
+ }
20
+ :host ::-webkit-scrollbar-thumb {
21
+ background: var(--igc-scrollbar-thumb-color, hsla(var(--ig-gray-400), var(--ig-gray-a)));
22
+ }
23
+
24
+ [hidden] {
25
+ display: none !important;
26
+ }
27
+
28
+ :host {
29
+ pointer-events: auto;
30
+ }
31
+ :host ::slotted([slot=label]) {
32
+ font-family: var(--ig-overline-font-family);
33
+ font-size: var(--ig-overline-font-size);
34
+ font-weight: var(--ig-overline-font-weight);
35
+ font-style: var(--ig-overline-font-style);
36
+ line-height: var(--ig-overline-line-height);
37
+ letter-spacing: var(--ig-overline-letter-spacing);
38
+ text-transform: var(--ig-overline-text-transform);
39
+ margin-top: var(--ig-overline-margin-top);
40
+ margin-bottom: var(--ig-overline-margin-bottom);
41
+ white-space: nowrap;
42
+ -o-text-overflow: ellipsis;
43
+ text-overflow: ellipsis;
44
+ overflow: hidden;
45
+ display: block;
46
+ white-space: nowrap;
47
+ position: relative;
48
+ color: hsla(var(--ig-secondary-500), var(--ig-secondary-a));
49
+ pointer-events: none;
50
+ }
51
+
52
+ :host([size=small]) ::slotted(igc-dropdown-item) {
53
+ padding: var(--igc-spacing-small) calc(var(--igc-spacing-small) * 3);
54
+ }
55
+ :host([size=small]) ::slotted([slot=label]) {
56
+ padding: var(--igc-spacing-small) calc(var(--igc-spacing-small) * 2);
57
+ }
58
+
59
+ :host([size=medium]) ::slotted(igc-dropdown-item) {
60
+ padding: var(--igc-spacing-medium) calc(var(--igc-spacing-medium) * 3);
61
+ }
62
+ :host([size=medium]) ::slotted([slot=label]) {
63
+ padding: var(--igc-spacing-medium) calc(var(--igc-spacing-medium) * 2);
64
+ }
65
+
66
+ :host([size=large]) ::slotted(igc-dropdown-item) {
67
+ padding: var(--igc-spacing-large) calc(var(--igc-spacing-large) * 3);
68
+ }
69
+ :host([size=large]) ::slotted([slot=label]) {
70
+ padding: var(--igc-spacing-large) calc(var(--igc-spacing-large) * 2);
71
+ }`;
3
72
  //# sourceMappingURL=dropdown-group.base.css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dropdown-group.base.css.js","sourceRoot":"","sources":["../../../../../src/components/dropdown/themes/light/dropdown-group.base.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,6iEAA6iE,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css`:host{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;scrollbar-width:var(--scrolbar-size, 0.875rem);scrollbar-color:var(--igc-scrollbar-thumb-color, hsla(var(--igc-gray-400), var(--igc-gray-a))) var(--igc-scrollbar-track-color, hsla(var(--igc-gray-200), var(--igc-gray-a)))}:host *,:host *::before,:host *::after{-webkit-box-sizing:border-box;box-sizing:border-box}:host ::-webkit-scrollbar{width:var(--scrolbar-size, 0.875rem);height:var(--scrolbar-size, 0.875rem);background:var(--igc-scrollbar-track-color, hsla(var(--igc-gray-200), var(--igc-gray-a)))}:host ::-webkit-scrollbar-thumb{background:var(--igc-scrollbar-thumb-color, hsla(var(--igc-gray-400), var(--igc-gray-a)))}[hidden]{display:none !important}:host{pointer-events:auto}:host ::slotted([slot=label]){font-family:var(--igc-overline-font-family);font-weight:var(--igc-overline-font-weight);font-size:var(--igc-overline-font-size);font-style:var(--igc-overline-font-style);letter-spacing:var(--igc-overline-letter-spacing);text-transform:var(--igc-overline-text-transform);line-height:var(--igc-overline-line-height);margin-top:var(--igc-overline-margin-top);margin-bottom:var(--igc-overline-margin-bottom);white-space:nowrap;-o-text-overflow:ellipsis;text-overflow:ellipsis;overflow:hidden;display:block;white-space:nowrap;position:relative;color:hsla(var(--igc-secondary-500), var(--igc-secondary-a));pointer-events:none}:host([size=small]) ::slotted(igc-dropdown-item){padding:var(--igc-spacing-small) calc(var(--igc-spacing-small)*3)}:host([size=small]) ::slotted([slot=label]){padding:var(--igc-spacing-small) calc(var(--igc-spacing-small)*2)}:host([size=medium]) ::slotted(igc-dropdown-item){padding:var(--igc-spacing-medium) calc(var(--igc-spacing-medium)*3)}:host([size=medium]) ::slotted([slot=label]){padding:var(--igc-spacing-medium) calc(var(--igc-spacing-medium)*2)}:host([size=large]) ::slotted(igc-dropdown-item){padding:var(--igc-spacing-large) calc(var(--igc-spacing-large)*3)}:host([size=large]) ::slotted([slot=label]){padding:var(--igc-spacing-large) calc(var(--igc-spacing-large)*2)}`;\n"]}
1
+ {"version":3,"file":"dropdown-group.base.css.js","sourceRoot":"","sources":["../../../../../src/components/dropdown/themes/light/dropdown-group.base.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqEvB,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css`:host {\n position: relative;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n scrollbar-width: var(--scrolbar-size, 0.875rem);\n scrollbar-color: var(--igc-scrollbar-thumb-color, hsla(var(--ig-gray-400), var(--ig-gray-a))) var(--igc-scrollbar-track-color, hsla(var(--ig-gray-200), var(--ig-gray-a)));\n}\n:host *,\n:host *::before,\n:host *::after {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n}\n:host ::-webkit-scrollbar {\n width: var(--scrolbar-size, 0.875rem);\n height: var(--scrolbar-size, 0.875rem);\n background: var(--igc-scrollbar-track-color, hsla(var(--ig-gray-200), var(--ig-gray-a)));\n}\n:host ::-webkit-scrollbar-thumb {\n background: var(--igc-scrollbar-thumb-color, hsla(var(--ig-gray-400), var(--ig-gray-a)));\n}\n\n[hidden] {\n display: none !important;\n}\n\n:host {\n pointer-events: auto;\n}\n:host ::slotted([slot=label]) {\n font-family: var(--ig-overline-font-family);\n font-size: var(--ig-overline-font-size);\n font-weight: var(--ig-overline-font-weight);\n font-style: var(--ig-overline-font-style);\n line-height: var(--ig-overline-line-height);\n letter-spacing: var(--ig-overline-letter-spacing);\n text-transform: var(--ig-overline-text-transform);\n margin-top: var(--ig-overline-margin-top);\n margin-bottom: var(--ig-overline-margin-bottom);\n white-space: nowrap;\n -o-text-overflow: ellipsis;\n text-overflow: ellipsis;\n overflow: hidden;\n display: block;\n white-space: nowrap;\n position: relative;\n color: hsla(var(--ig-secondary-500), var(--ig-secondary-a));\n pointer-events: none;\n}\n\n:host([size=small]) ::slotted(igc-dropdown-item) {\n padding: var(--igc-spacing-small) calc(var(--igc-spacing-small) * 3);\n}\n:host([size=small]) ::slotted([slot=label]) {\n padding: var(--igc-spacing-small) calc(var(--igc-spacing-small) * 2);\n}\n\n:host([size=medium]) ::slotted(igc-dropdown-item) {\n padding: var(--igc-spacing-medium) calc(var(--igc-spacing-medium) * 3);\n}\n:host([size=medium]) ::slotted([slot=label]) {\n padding: var(--igc-spacing-medium) calc(var(--igc-spacing-medium) * 2);\n}\n\n:host([size=large]) ::slotted(igc-dropdown-item) {\n padding: var(--igc-spacing-large) calc(var(--igc-spacing-large) * 3);\n}\n:host([size=large]) ::slotted([slot=label]) {\n padding: var(--igc-spacing-large) calc(var(--igc-spacing-large) * 2);\n}`;\n"]}
@@ -1,3 +1,16 @@
1
1
  import { css } from 'lit';
2
- export const styles = css `:host([size=small]) ::slotted(igc-dropdown-item),:host([size=small]) ::slotted([slot=label]){padding:var(--igc-spacing-small)}:host([size=medium]) ::slotted(igc-dropdown-item),:host([size=medium]) ::slotted([slot=label]){padding:var(--igc-spacing-medium)}:host([size=large]) ::slotted(igc-dropdown-item),:host([size=large]) ::slotted([slot=label]){padding:var(--igc-spacing-large)}`;
2
+ export const styles = css `:host([size=small]) ::slotted(igc-dropdown-item),
3
+ :host([size=small]) ::slotted([slot=label]) {
4
+ padding: var(--igc-spacing-small);
5
+ }
6
+
7
+ :host([size=medium]) ::slotted(igc-dropdown-item),
8
+ :host([size=medium]) ::slotted([slot=label]) {
9
+ padding: var(--igc-spacing-medium);
10
+ }
11
+
12
+ :host([size=large]) ::slotted(igc-dropdown-item),
13
+ :host([size=large]) ::slotted([slot=label]) {
14
+ padding: var(--igc-spacing-large);
15
+ }`;
3
16
  //# sourceMappingURL=dropdown-group.fluent.css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dropdown-group.fluent.css.js","sourceRoot":"","sources":["../../../../../src/components/dropdown/themes/light/dropdown-group.fluent.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,+XAA+X,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css`:host([size=small]) ::slotted(igc-dropdown-item),:host([size=small]) ::slotted([slot=label]){padding:var(--igc-spacing-small)}:host([size=medium]) ::slotted(igc-dropdown-item),:host([size=medium]) ::slotted([slot=label]){padding:var(--igc-spacing-medium)}:host([size=large]) ::slotted(igc-dropdown-item),:host([size=large]) ::slotted([slot=label]){padding:var(--igc-spacing-large)}`;\n"]}
1
+ {"version":3,"file":"dropdown-group.fluent.css.js","sourceRoot":"","sources":["../../../../../src/components/dropdown/themes/light/dropdown-group.fluent.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;EAavB,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css`:host([size=small]) ::slotted(igc-dropdown-item),\n:host([size=small]) ::slotted([slot=label]) {\n padding: var(--igc-spacing-small);\n}\n\n:host([size=medium]) ::slotted(igc-dropdown-item),\n:host([size=medium]) ::slotted([slot=label]) {\n padding: var(--igc-spacing-medium);\n}\n\n:host([size=large]) ::slotted(igc-dropdown-item),\n:host([size=large]) ::slotted([slot=label]) {\n padding: var(--igc-spacing-large);\n}`;\n"]}
@@ -1,3 +1,52 @@
1
1
  import { css } from 'lit';
2
- export const styles = css `:host{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;scrollbar-width:var(--scrolbar-size, 0.875rem);scrollbar-color:var(--igc-scrollbar-thumb-color, hsla(var(--igc-gray-400), var(--igc-gray-a))) var(--igc-scrollbar-track-color, hsla(var(--igc-gray-200), var(--igc-gray-a)))}:host *,:host *::before,:host *::after{-webkit-box-sizing:border-box;box-sizing:border-box}:host ::-webkit-scrollbar{width:var(--scrolbar-size, 0.875rem);height:var(--scrolbar-size, 0.875rem);background:var(--igc-scrollbar-track-color, hsla(var(--igc-gray-200), var(--igc-gray-a)))}:host ::-webkit-scrollbar-thumb{background:var(--igc-scrollbar-thumb-color, hsla(var(--igc-gray-400), var(--igc-gray-a)))}[hidden]{display:none !important}:host{font-family:var(--igc-overline-font-family);font-weight:var(--igc-overline-font-weight);font-size:var(--igc-overline-font-size);font-style:var(--igc-overline-font-style);letter-spacing:var(--igc-overline-letter-spacing);text-transform:var(--igc-overline-text-transform);line-height:var(--igc-overline-line-height);margin-top:var(--igc-overline-margin-top);margin-bottom:var(--igc-overline-margin-bottom);white-space:nowrap;-o-text-overflow:ellipsis;text-overflow:ellipsis;overflow:hidden;display:block;white-space:nowrap;position:relative;color:var(--header-color, hsla(var(--igc-secondary-500), var(--igc-secondary-a)));pointer-events:none}::slotted(*){font:inherit}`;
2
+ export const styles = css `:host {
3
+ position: relative;
4
+ -webkit-box-sizing: border-box;
5
+ box-sizing: border-box;
6
+ scrollbar-width: var(--scrolbar-size, 0.875rem);
7
+ scrollbar-color: var(--igc-scrollbar-thumb-color, hsla(var(--ig-gray-400), var(--ig-gray-a))) var(--igc-scrollbar-track-color, hsla(var(--ig-gray-200), var(--ig-gray-a)));
8
+ }
9
+ :host *,
10
+ :host *::before,
11
+ :host *::after {
12
+ -webkit-box-sizing: border-box;
13
+ box-sizing: border-box;
14
+ }
15
+ :host ::-webkit-scrollbar {
16
+ width: var(--scrolbar-size, 0.875rem);
17
+ height: var(--scrolbar-size, 0.875rem);
18
+ background: var(--igc-scrollbar-track-color, hsla(var(--ig-gray-200), var(--ig-gray-a)));
19
+ }
20
+ :host ::-webkit-scrollbar-thumb {
21
+ background: var(--igc-scrollbar-thumb-color, hsla(var(--ig-gray-400), var(--ig-gray-a)));
22
+ }
23
+
24
+ [hidden] {
25
+ display: none !important;
26
+ }
27
+
28
+ :host {
29
+ font-family: var(--ig-overline-font-family);
30
+ font-size: var(--ig-overline-font-size);
31
+ font-weight: var(--ig-overline-font-weight);
32
+ font-style: var(--ig-overline-font-style);
33
+ line-height: var(--ig-overline-line-height);
34
+ letter-spacing: var(--ig-overline-letter-spacing);
35
+ text-transform: var(--ig-overline-text-transform);
36
+ margin-top: var(--ig-overline-margin-top);
37
+ margin-bottom: var(--ig-overline-margin-bottom);
38
+ white-space: nowrap;
39
+ -o-text-overflow: ellipsis;
40
+ text-overflow: ellipsis;
41
+ overflow: hidden;
42
+ display: block;
43
+ white-space: nowrap;
44
+ position: relative;
45
+ color: var(--header-color, hsla(var(--ig-secondary-500), var(--ig-secondary-a)));
46
+ pointer-events: none;
47
+ }
48
+
49
+ ::slotted(*) {
50
+ font: inherit;
51
+ }`;
3
52
  //# sourceMappingURL=dropdown-header.base.css.js.map