igniteui-webcomponents 7.3.1 → 7.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (606) hide show
  1. package/CHANGELOG.md +72 -1
  2. package/animations/easings.d.ts +21 -31
  3. package/animations/easings.js +21 -34
  4. package/animations/easings.js.map +1 -1
  5. package/animations/player.d.ts +8 -16
  6. package/animations/player.js +5 -8
  7. package/animations/player.js.map +1 -1
  8. package/animations/view-transition.d.ts +10 -10
  9. package/animations/view-transition.js +26 -37
  10. package/animations/view-transition.js.map +1 -1
  11. package/components/avatar/themes/avatar.base.css.js +1 -1
  12. package/components/avatar/themes/avatar.base.css.js.map +1 -1
  13. package/components/badge/themes/badge.base.css.js +1 -1
  14. package/components/badge/themes/badge.base.css.js.map +1 -1
  15. package/components/banner/themes/banner.base.css.js +1 -1
  16. package/components/banner/themes/banner.base.css.js.map +1 -1
  17. package/components/banner/themes/shared/banner.indigo.css.js +1 -1
  18. package/components/banner/themes/shared/banner.indigo.css.js.map +1 -1
  19. package/components/breadcrumb/breadcrumb.d.ts +74 -0
  20. package/components/breadcrumb/breadcrumb.js +107 -0
  21. package/components/breadcrumb/breadcrumb.js.map +1 -0
  22. package/components/breadcrumb/breadcrumbs.d.ts +60 -0
  23. package/components/breadcrumb/breadcrumbs.js +50 -0
  24. package/components/breadcrumb/breadcrumbs.js.map +1 -0
  25. package/components/breadcrumb/themes/breadcrumb.base.css.d.ts +1 -0
  26. package/components/breadcrumb/themes/breadcrumb.base.css.js +3 -0
  27. package/components/breadcrumb/themes/breadcrumb.base.css.js.map +1 -0
  28. package/components/breadcrumb/themes/breadcrumbs.base.css.d.ts +1 -0
  29. package/components/breadcrumb/themes/breadcrumbs.base.css.js +3 -0
  30. package/components/breadcrumb/themes/breadcrumbs.base.css.js.map +1 -0
  31. package/components/breadcrumb/themes/dark/breadcrumb.bootstrap.css.d.ts +1 -0
  32. package/components/breadcrumb/themes/dark/breadcrumb.bootstrap.css.js +3 -0
  33. package/components/breadcrumb/themes/dark/breadcrumb.bootstrap.css.js.map +1 -0
  34. package/components/breadcrumb/themes/dark/breadcrumb.fluent.css.d.ts +1 -0
  35. package/components/breadcrumb/themes/dark/breadcrumb.fluent.css.js +3 -0
  36. package/components/breadcrumb/themes/dark/breadcrumb.fluent.css.js.map +1 -0
  37. package/components/breadcrumb/themes/dark/breadcrumb.indigo.css.d.ts +1 -0
  38. package/components/breadcrumb/themes/dark/breadcrumb.indigo.css.js +3 -0
  39. package/components/breadcrumb/themes/dark/breadcrumb.indigo.css.js.map +1 -0
  40. package/components/breadcrumb/themes/dark/breadcrumb.material.css.d.ts +1 -0
  41. package/components/breadcrumb/themes/dark/breadcrumb.material.css.js +3 -0
  42. package/components/breadcrumb/themes/dark/breadcrumb.material.css.js.map +1 -0
  43. package/components/breadcrumb/themes/light/breadcrumb.bootstrap.css.d.ts +1 -0
  44. package/components/breadcrumb/themes/light/breadcrumb.bootstrap.css.js +3 -0
  45. package/components/breadcrumb/themes/light/breadcrumb.bootstrap.css.js.map +1 -0
  46. package/components/breadcrumb/themes/light/breadcrumb.fluent.css.d.ts +1 -0
  47. package/components/breadcrumb/themes/light/breadcrumb.fluent.css.js +3 -0
  48. package/components/breadcrumb/themes/light/breadcrumb.fluent.css.js.map +1 -0
  49. package/components/breadcrumb/themes/light/breadcrumb.indigo.css.d.ts +1 -0
  50. package/components/breadcrumb/themes/light/breadcrumb.indigo.css.js +3 -0
  51. package/components/breadcrumb/themes/light/breadcrumb.indigo.css.js.map +1 -0
  52. package/components/breadcrumb/themes/light/breadcrumb.material.css.d.ts +1 -0
  53. package/components/breadcrumb/themes/light/breadcrumb.material.css.js +3 -0
  54. package/components/breadcrumb/themes/light/breadcrumb.material.css.js.map +1 -0
  55. package/components/breadcrumb/themes/light/breadcrumb.shared.css.d.ts +1 -0
  56. package/components/breadcrumb/themes/light/breadcrumb.shared.css.js +3 -0
  57. package/components/breadcrumb/themes/light/breadcrumb.shared.css.js.map +1 -0
  58. package/components/breadcrumb/themes/shared/breadcrumb.bootstrap.css.d.ts +1 -0
  59. package/components/breadcrumb/themes/shared/breadcrumb.bootstrap.css.js +3 -0
  60. package/components/breadcrumb/themes/shared/breadcrumb.bootstrap.css.js.map +1 -0
  61. package/components/breadcrumb/themes/shared/breadcrumb.common.css.d.ts +1 -0
  62. package/components/breadcrumb/themes/shared/breadcrumb.common.css.js +3 -0
  63. package/components/breadcrumb/themes/shared/breadcrumb.common.css.js.map +1 -0
  64. package/components/breadcrumb/themes/shared/breadcrumb.fluent.css.d.ts +1 -0
  65. package/components/breadcrumb/themes/shared/breadcrumb.fluent.css.js +3 -0
  66. package/components/breadcrumb/themes/shared/breadcrumb.fluent.css.js.map +1 -0
  67. package/components/breadcrumb/themes/shared/breadcrumb.indigo.css.d.ts +1 -0
  68. package/components/breadcrumb/themes/shared/breadcrumb.indigo.css.js +3 -0
  69. package/components/breadcrumb/themes/shared/breadcrumb.indigo.css.js.map +1 -0
  70. package/components/breadcrumb/themes/shared/breadcrumb.material.css.d.ts +1 -0
  71. package/components/breadcrumb/themes/shared/breadcrumb.material.css.js +3 -0
  72. package/components/breadcrumb/themes/shared/breadcrumb.material.css.js.map +1 -0
  73. package/components/breadcrumb/themes/themes.d.ts +2 -0
  74. package/components/breadcrumb/themes/themes.js +50 -0
  75. package/components/breadcrumb/themes/themes.js.map +1 -0
  76. package/components/button/button.d.ts +0 -2
  77. package/components/button/button.js.map +1 -1
  78. package/components/button-group/button-group.d.ts +42 -12
  79. package/components/button-group/button-group.js +82 -34
  80. package/components/button-group/button-group.js.map +1 -1
  81. package/components/button-group/toggle-button.d.ts +6 -1
  82. package/components/button-group/toggle-button.js +28 -2
  83. package/components/button-group/toggle-button.js.map +1 -1
  84. package/components/calendar/base.d.ts +7 -2
  85. package/components/calendar/base.js +10 -4
  86. package/components/calendar/base.js.map +1 -1
  87. package/components/calendar/calendar.d.ts +6 -3
  88. package/components/calendar/calendar.js +41 -14
  89. package/components/calendar/calendar.js.map +1 -1
  90. package/components/calendar/days-view/days-view.d.ts +5 -8
  91. package/components/calendar/days-view/days-view.js +7 -16
  92. package/components/calendar/days-view/days-view.js.map +1 -1
  93. package/components/calendar/helpers.d.ts +13 -0
  94. package/components/calendar/helpers.js +15 -0
  95. package/components/calendar/helpers.js.map +1 -1
  96. package/components/calendar/themes/calendar.base.css.js +1 -1
  97. package/components/calendar/themes/calendar.base.css.js.map +1 -1
  98. package/components/calendar/themes/days-view.base.css.js +1 -1
  99. package/components/calendar/themes/days-view.base.css.js.map +1 -1
  100. package/components/calendar/themes/shared/bootstrap/calendar.bootstrap.css.js +1 -1
  101. package/components/calendar/themes/shared/bootstrap/calendar.bootstrap.css.js.map +1 -1
  102. package/components/calendar/themes/shared/bootstrap/days-view.bootstrap.css.js +1 -1
  103. package/components/calendar/themes/shared/bootstrap/days-view.bootstrap.css.js.map +1 -1
  104. package/components/calendar/themes/shared/fluent/days-view.fluent.css.js +1 -1
  105. package/components/calendar/themes/shared/fluent/days-view.fluent.css.js.map +1 -1
  106. package/components/calendar/themes/shared/indigo/calendar.indigo.css.js +1 -1
  107. package/components/calendar/themes/shared/indigo/calendar.indigo.css.js.map +1 -1
  108. package/components/calendar/themes/shared/indigo/days-view.indigo.css.js +1 -1
  109. package/components/calendar/themes/shared/indigo/days-view.indigo.css.js.map +1 -1
  110. package/components/calendar/themes/shared/material/days-view.material.css.js +1 -1
  111. package/components/calendar/themes/shared/material/days-view.material.css.js.map +1 -1
  112. package/components/calendar/themes/year-month-view.base.css.js +1 -1
  113. package/components/calendar/themes/year-month-view.base.css.js.map +1 -1
  114. package/components/card/themes/container.base.css.js +1 -1
  115. package/components/card/themes/container.base.css.js.map +1 -1
  116. package/components/carousel/carousel-indicator.js +1 -0
  117. package/components/carousel/carousel-indicator.js.map +1 -1
  118. package/components/carousel/carousel-slide.d.ts +1 -1
  119. package/components/carousel/carousel-slide.js.map +1 -1
  120. package/components/carousel/carousel.d.ts +3 -3
  121. package/components/carousel/carousel.js.map +1 -1
  122. package/components/carousel/themes/carousel.base.css.js +1 -1
  123. package/components/carousel/themes/carousel.base.css.js.map +1 -1
  124. package/components/carousel/themes/shared/carousel.indigo.css.js +1 -1
  125. package/components/carousel/themes/shared/carousel.indigo.css.js.map +1 -1
  126. package/components/chat/chat-input.d.ts +1 -2
  127. package/components/chat/chat-input.js +1 -1
  128. package/components/chat/chat-input.js.map +1 -1
  129. package/components/chat/chat-state.d.ts +8 -9
  130. package/components/chat/chat-state.js.map +1 -1
  131. package/components/chat/chat.d.ts +1 -3
  132. package/components/chat/chat.js +2 -2
  133. package/components/chat/chat.js.map +1 -1
  134. package/components/chat/message-attachments.d.ts +6 -15
  135. package/components/chat/message-attachments.js.map +1 -1
  136. package/components/chat/themes/chat.base.css.js +1 -1
  137. package/components/chat/themes/chat.base.css.js.map +1 -1
  138. package/components/chat/themes/message.base.css.js +1 -1
  139. package/components/chat/themes/message.base.css.js.map +1 -1
  140. package/components/chat/utils.d.ts +0 -1
  141. package/components/chat/utils.js +1 -1
  142. package/components/chat/utils.js.map +1 -1
  143. package/components/checkbox/checkbox-base.d.ts +1 -1
  144. package/components/checkbox/checkbox.js +1 -1
  145. package/components/checkbox/checkbox.js.map +1 -1
  146. package/components/checkbox/themes/checkbox.base.css.js +1 -1
  147. package/components/checkbox/themes/checkbox.base.css.js.map +1 -1
  148. package/components/checkbox/themes/shared/checkbox/checkbox.bootstrap.css.js +1 -1
  149. package/components/checkbox/themes/shared/checkbox/checkbox.bootstrap.css.js.map +1 -1
  150. package/components/checkbox/themes/shared/checkbox/checkbox.fluent.css.js +1 -1
  151. package/components/checkbox/themes/shared/checkbox/checkbox.fluent.css.js.map +1 -1
  152. package/components/checkbox/themes/shared/switch/switch.bootstrap.css.js +1 -1
  153. package/components/checkbox/themes/shared/switch/switch.bootstrap.css.js.map +1 -1
  154. package/components/checkbox/themes/shared/switch/switch.fluent.css.js +1 -1
  155. package/components/checkbox/themes/shared/switch/switch.fluent.css.js.map +1 -1
  156. package/components/checkbox/themes/shared/switch/switch.indigo.css.js +1 -1
  157. package/components/checkbox/themes/shared/switch/switch.indigo.css.js.map +1 -1
  158. package/components/checkbox/themes/shared/switch/switch.material.css.js +1 -1
  159. package/components/checkbox/themes/shared/switch/switch.material.css.js.map +1 -1
  160. package/components/checkbox/themes/switch.base.css.js +1 -1
  161. package/components/checkbox/themes/switch.base.css.js.map +1 -1
  162. package/components/chip/chip.d.ts +2 -2
  163. package/components/chip/chip.js.map +1 -1
  164. package/components/color-picker/color-picker.d.ts +35 -34
  165. package/components/color-picker/color-picker.js +9 -4
  166. package/components/color-picker/color-picker.js.map +1 -1
  167. package/components/color-picker/common.d.ts +0 -2
  168. package/components/color-picker/common.js +2 -2
  169. package/components/color-picker/common.js.map +1 -1
  170. package/components/color-picker/converters.js.map +1 -1
  171. package/components/color-picker/picker-canvas.js.map +1 -1
  172. package/components/color-picker/themes/color-picker.base.css.js +1 -1
  173. package/components/color-picker/themes/color-picker.base.css.js.map +1 -1
  174. package/components/combo/combo.d.ts +18 -20
  175. package/components/combo/combo.js +8 -2
  176. package/components/combo/combo.js.map +1 -1
  177. package/components/combo/controllers/data.d.ts +7 -10
  178. package/components/combo/controllers/data.js.map +1 -1
  179. package/components/combo/themes/combo-item.base.css.js +1 -1
  180. package/components/combo/themes/combo-item.base.css.js.map +1 -1
  181. package/components/combo/themes/combo.base.css.js +1 -1
  182. package/components/combo/themes/combo.base.css.js.map +1 -1
  183. package/components/combo/themes/shared/combo.bootstrap.css.js +1 -1
  184. package/components/combo/themes/shared/combo.bootstrap.css.js.map +1 -1
  185. package/components/date-picker/date-picker.base.d.ts +33 -29
  186. package/components/date-picker/date-picker.base.js +15 -4
  187. package/components/date-picker/date-picker.base.js.map +1 -1
  188. package/components/date-picker/date-picker.d.ts +1 -1
  189. package/components/date-picker/date-picker.js +5 -3
  190. package/components/date-picker/date-picker.js.map +1 -1
  191. package/components/date-picker/themes/date-picker.base.css.js +1 -1
  192. package/components/date-picker/themes/date-picker.base.css.js.map +1 -1
  193. package/components/date-range-picker/date-range-input.d.ts +0 -2
  194. package/components/date-range-picker/date-range-input.js +0 -6
  195. package/components/date-range-picker/date-range-input.js.map +1 -1
  196. package/components/date-range-picker/date-range-picker.base.css.js +1 -1
  197. package/components/date-range-picker/date-range-picker.base.css.js.map +1 -1
  198. package/components/date-range-picker/date-range-picker.d.ts +22 -31
  199. package/components/date-range-picker/date-range-picker.js +7 -7
  200. package/components/date-range-picker/date-range-picker.js.map +1 -1
  201. package/components/date-range-picker/i18n.d.ts +21 -0
  202. package/components/date-range-picker/i18n.js +10 -0
  203. package/components/date-range-picker/i18n.js.map +1 -0
  204. package/components/date-range-picker/predefined-ranges-area.base.css.js +1 -1
  205. package/components/date-range-picker/predefined-ranges-area.base.css.js.map +1 -1
  206. package/components/date-range-picker/predefined-ranges-area.d.ts +3 -3
  207. package/components/date-range-picker/predefined-ranges-area.js +2 -5
  208. package/components/date-range-picker/predefined-ranges-area.js.map +1 -1
  209. package/components/date-range-picker/validators.d.ts +0 -4
  210. package/components/date-range-picker/validators.js +4 -4
  211. package/components/date-range-picker/validators.js.map +1 -1
  212. package/components/date-time-input/date-time-input.base.d.ts +39 -37
  213. package/components/date-time-input/date-time-input.base.js +6 -0
  214. package/components/date-time-input/date-time-input.base.js.map +1 -1
  215. package/components/date-time-input/date-time-input.d.ts +1 -11
  216. package/components/date-time-input/date-time-input.js +0 -6
  217. package/components/date-time-input/date-time-input.js.map +1 -1
  218. package/components/date-time-input/datetime-mask-parser.d.ts +0 -10
  219. package/components/date-time-input/datetime-mask-parser.js +1 -1
  220. package/components/date-time-input/datetime-mask-parser.js.map +1 -1
  221. package/components/dialog/dialog.js.map +1 -1
  222. package/components/divider/themes/divider.base.css.js +1 -1
  223. package/components/divider/themes/divider.base.css.js.map +1 -1
  224. package/components/dropdown/dropdown-group.d.ts +2 -10
  225. package/components/dropdown/dropdown-group.js +2 -27
  226. package/components/dropdown/dropdown-group.js.map +1 -1
  227. package/components/dropdown/dropdown.d.ts +17 -23
  228. package/components/dropdown/dropdown.js +5 -17
  229. package/components/dropdown/dropdown.js.map +1 -1
  230. package/components/dropdown/themes/dropdown-item.base.css.js +1 -1
  231. package/components/dropdown/themes/dropdown-item.base.css.js.map +1 -1
  232. package/components/dropdown/themes/dropdown.base.css.js +1 -1
  233. package/components/dropdown/themes/dropdown.base.css.js.map +1 -1
  234. package/components/file-input/file-input.d.ts +2 -2
  235. package/components/file-input/file-input.js.map +1 -1
  236. package/components/file-input/themes/file-input.base.css.js +1 -1
  237. package/components/file-input/themes/file-input.base.css.js.map +1 -1
  238. package/components/file-input/themes/shared/file-input.bootstrap.css.js +1 -1
  239. package/components/file-input/themes/shared/file-input.bootstrap.css.js.map +1 -1
  240. package/components/icon/icon.d.ts +1 -1
  241. package/components/icon/icon.registry.d.ts +6 -6
  242. package/components/icon/icon.registry.js.map +1 -1
  243. package/components/input/input.d.ts +3 -3
  244. package/components/input/input.js.map +1 -1
  245. package/components/input/themes/shared/input.indigo.css.js +1 -1
  246. package/components/input/themes/shared/input.indigo.css.js.map +1 -1
  247. package/components/input/themes/shared/input.material.css.js +1 -1
  248. package/components/input/themes/shared/input.material.css.js.map +1 -1
  249. package/components/list/themes/item.base.css.js +1 -1
  250. package/components/list/themes/item.base.css.js.map +1 -1
  251. package/components/mask-input/mask-history.d.ts +22 -18
  252. package/components/mask-input/mask-history.js.map +1 -1
  253. package/components/mask-input/mask-input.d.ts +1 -1
  254. package/components/mask-input/mask-parser.d.ts +11 -13
  255. package/components/mask-input/mask-parser.js.map +1 -1
  256. package/components/nav-drawer/themes/item.base.css.js +1 -1
  257. package/components/nav-drawer/themes/item.base.css.js.map +1 -1
  258. package/components/popover/popover.d.ts +45 -34
  259. package/components/popover/popover.js +54 -122
  260. package/components/popover/popover.js.map +1 -1
  261. package/components/popover/position/arrow.d.ts +19 -0
  262. package/components/popover/position/arrow.js +33 -0
  263. package/components/popover/position/arrow.js.map +1 -0
  264. package/components/popover/position/floating.d.ts +40 -0
  265. package/components/popover/position/floating.js +146 -0
  266. package/components/popover/position/floating.js.map +1 -0
  267. package/components/popover/position/native.d.ts +45 -0
  268. package/components/popover/position/native.js +158 -0
  269. package/components/popover/position/native.js.map +1 -0
  270. package/components/popover/position/strategy.d.ts +37 -0
  271. package/components/popover/position/strategy.js +21 -0
  272. package/components/popover/position/strategy.js.map +1 -0
  273. package/components/popover/position/types.d.ts +26 -0
  274. package/components/popover/position/types.js +15 -0
  275. package/components/popover/position/types.js.map +1 -0
  276. package/components/popover/themes/light/popover.base.css.js +1 -1
  277. package/components/popover/themes/light/popover.base.css.js.map +1 -1
  278. package/components/progress/circular-progress.d.ts +0 -5
  279. package/components/progress/circular-progress.js.map +1 -1
  280. package/components/progress/themes/linear/linear.progress.base.css.js +1 -1
  281. package/components/progress/themes/linear/linear.progress.base.css.js.map +1 -1
  282. package/components/progress/themes/linear/shared/linear.progress.bootstrap.css.d.ts +1 -0
  283. package/components/progress/themes/linear/shared/linear.progress.bootstrap.css.js +3 -0
  284. package/components/progress/themes/linear/shared/linear.progress.bootstrap.css.js.map +1 -0
  285. package/components/progress/themes/linear/themes.js +3 -2
  286. package/components/progress/themes/linear/themes.js.map +1 -1
  287. package/components/qr-code/qr-code.d.ts +29 -2
  288. package/components/qr-code/qr-code.js +56 -13
  289. package/components/qr-code/qr-code.js.map +1 -1
  290. package/components/qr-code/renderer/export.d.ts +28 -0
  291. package/components/qr-code/renderer/export.js +120 -0
  292. package/components/qr-code/renderer/export.js.map +1 -0
  293. package/components/qr-code/types.d.ts +26 -0
  294. package/components/qr-code/types.js.map +1 -1
  295. package/components/radio/radio.d.ts +4 -4
  296. package/components/radio/radio.js +17 -14
  297. package/components/radio/radio.js.map +1 -1
  298. package/components/radio/themes/radio.base.css.js +1 -1
  299. package/components/radio/themes/radio.base.css.js.map +1 -1
  300. package/components/radio/themes/shared/radio.bootstrap.css.js +1 -1
  301. package/components/radio/themes/shared/radio.bootstrap.css.js.map +1 -1
  302. package/components/radio/themes/shared/radio.indigo.css.js +1 -1
  303. package/components/radio/themes/shared/radio.indigo.css.js.map +1 -1
  304. package/components/radio-group/radio-group.js.map +1 -1
  305. package/components/rating/rating.d.ts +6 -6
  306. package/components/rating/rating.js.map +1 -1
  307. package/components/select/select-group.d.ts +5 -10
  308. package/components/select/select-group.js +10 -34
  309. package/components/select/select-group.js.map +1 -1
  310. package/components/select/select.d.ts +12 -20
  311. package/components/select/select.js +4 -14
  312. package/components/select/select.js.map +1 -1
  313. package/components/select/themes/select.base.css.js +1 -1
  314. package/components/select/themes/select.base.css.js.map +1 -1
  315. package/components/select/themes/shared/select.bootstrap.css.js +1 -1
  316. package/components/select/themes/shared/select.bootstrap.css.js.map +1 -1
  317. package/components/slider/themes/shared/slider.material.css.js +1 -1
  318. package/components/slider/themes/shared/slider.material.css.js.map +1 -1
  319. package/components/slider/themes/slider.base.css.js +1 -1
  320. package/components/slider/themes/slider.base.css.js.map +1 -1
  321. package/components/snackbar/themes/snackbar.base.css.js +1 -1
  322. package/components/snackbar/themes/snackbar.base.css.js.map +1 -1
  323. package/components/splitter/splitter.d.ts +6 -6
  324. package/components/splitter/splitter.js.map +1 -1
  325. package/components/splitter/themes/splitter.base.css.js +1 -1
  326. package/components/splitter/themes/splitter.base.css.js.map +1 -1
  327. package/components/stepper/themes/step/step.base.css.js +1 -1
  328. package/components/stepper/themes/step/step.base.css.js.map +1 -1
  329. package/components/tabs/themes/shared/tab/tab.bootstrap.css.js +1 -1
  330. package/components/tabs/themes/shared/tab/tab.bootstrap.css.js.map +1 -1
  331. package/components/tabs/themes/shared/tab/tab.fluent.css.js +1 -1
  332. package/components/tabs/themes/shared/tab/tab.fluent.css.js.map +1 -1
  333. package/components/tabs/themes/shared/tab/tab.indigo.css.js +1 -1
  334. package/components/tabs/themes/shared/tab/tab.indigo.css.js.map +1 -1
  335. package/components/tabs/themes/shared/tab/tab.material.css.js +1 -1
  336. package/components/tabs/themes/shared/tab/tab.material.css.js.map +1 -1
  337. package/components/tabs/themes/shared/tabs/tabs.fluent.css.js +1 -1
  338. package/components/tabs/themes/shared/tabs/tabs.fluent.css.js.map +1 -1
  339. package/components/tabs/themes/shared/tabs/tabs.indigo.css.js +1 -1
  340. package/components/tabs/themes/shared/tabs/tabs.indigo.css.js.map +1 -1
  341. package/components/tabs/themes/shared/tabs/tabs.material.css.js +1 -1
  342. package/components/tabs/themes/shared/tabs/tabs.material.css.js.map +1 -1
  343. package/components/tabs/themes/tab.base.css.js +1 -1
  344. package/components/tabs/themes/tab.base.css.js.map +1 -1
  345. package/components/textarea/textarea.d.ts +1 -1
  346. package/components/textarea/textarea.js.map +1 -1
  347. package/components/textarea/themes/shared/textarea.bootstrap.css.js +1 -1
  348. package/components/textarea/themes/shared/textarea.bootstrap.css.js.map +1 -1
  349. package/components/textarea/themes/shared/textarea.common.css.js +1 -1
  350. package/components/textarea/themes/shared/textarea.common.css.js.map +1 -1
  351. package/components/textarea/themes/shared/textarea.fluent.css.js +1 -1
  352. package/components/textarea/themes/shared/textarea.fluent.css.js.map +1 -1
  353. package/components/textarea/themes/shared/textarea.indigo.css.js +1 -1
  354. package/components/textarea/themes/shared/textarea.indigo.css.js.map +1 -1
  355. package/components/textarea/themes/shared/textarea.material.css.js +1 -1
  356. package/components/textarea/themes/shared/textarea.material.css.js.map +1 -1
  357. package/components/tile-manager/themes/tile.base.css.js +1 -1
  358. package/components/tile-manager/themes/tile.base.css.js.map +1 -1
  359. package/components/tile-manager/tile-manager.d.ts +6 -7
  360. package/components/tile-manager/tile-manager.js.map +1 -1
  361. package/components/tile-manager/tile.d.ts +3 -3
  362. package/components/tile-manager/tile.js.map +1 -1
  363. package/components/toast/themes/toast.base.css.js +1 -1
  364. package/components/toast/themes/toast.base.css.js.map +1 -1
  365. package/components/toast/toast.d.ts +0 -2
  366. package/components/toast/toast.js.map +1 -1
  367. package/components/tooltip/controller.js.map +1 -1
  368. package/components/tooltip/service.js +4 -5
  369. package/components/tooltip/service.js.map +1 -1
  370. package/components/tooltip/themes/tooltip.base.css.js +1 -1
  371. package/components/tooltip/themes/tooltip.base.css.js.map +1 -1
  372. package/components/tooltip/tooltip.d.ts +34 -13
  373. package/components/tooltip/tooltip.js +8 -4
  374. package/components/tooltip/tooltip.js.map +1 -1
  375. package/components/tree/themes/item.base.css.js +1 -1
  376. package/components/tree/themes/item.base.css.js.map +1 -1
  377. package/components/tree/tree-item.d.ts +6 -6
  378. package/components/tree/tree-item.js.map +1 -1
  379. package/components/tree/tree.navigation.d.ts +5 -6
  380. package/components/tree/tree.navigation.js.map +1 -1
  381. package/components/tree/tree.selection.js.map +1 -1
  382. package/components/types.d.ts +1 -1
  383. package/components/types.js.map +1 -1
  384. package/components/validation-container/themes/validator.base.css.js +1 -1
  385. package/components/validation-container/themes/validator.base.css.js.map +1 -1
  386. package/components/validation-container/validation-container.d.ts +10 -12
  387. package/components/validation-container/validation-container.js +14 -17
  388. package/components/validation-container/validation-container.js.map +1 -1
  389. package/components/virtualization/engine.d.ts +5 -5
  390. package/components/virtualization/engine.js.map +1 -1
  391. package/components/virtualization/virtualization.d.ts +61 -63
  392. package/components/virtualization/virtualization.js +6 -5
  393. package/components/virtualization/virtualization.js.map +1 -1
  394. package/custom-elements.json +16769 -19698
  395. package/igniteui-webcomponents.css-data.json +2 -2
  396. package/igniteui-webcomponents.html-data.json +1 -1
  397. package/index.d.ts +3 -1
  398. package/index.js +2 -0
  399. package/index.js.map +1 -1
  400. package/internals/abort-handler.d.ts +13 -25
  401. package/internals/abort-handler.js +4 -6
  402. package/internals/abort-handler.js.map +1 -1
  403. package/internals/context.d.ts +13 -7
  404. package/internals/context.js +2 -1
  405. package/internals/context.js.map +1 -1
  406. package/internals/controllers/adopt-styles.d.ts +19 -20
  407. package/internals/controllers/adopt-styles.js +3 -8
  408. package/internals/controllers/adopt-styles.js.map +1 -1
  409. package/internals/controllers/aria-projection.d.ts +56 -55
  410. package/internals/controllers/aria-projection.js +14 -15
  411. package/internals/controllers/aria-projection.js.map +1 -1
  412. package/internals/controllers/async-consumer.js.map +1 -1
  413. package/internals/controllers/command.d.ts +15 -30
  414. package/internals/controllers/command.js +2 -7
  415. package/internals/controllers/command.js.map +1 -1
  416. package/internals/controllers/context-provider.d.ts +7 -13
  417. package/internals/controllers/context-provider.js.map +1 -1
  418. package/internals/controllers/focus-ring.d.ts +10 -30
  419. package/internals/controllers/focus-ring.js +6 -12
  420. package/internals/controllers/focus-ring.js.map +1 -1
  421. package/internals/controllers/fullscreen.d.ts +7 -23
  422. package/internals/controllers/fullscreen.js +3 -9
  423. package/internals/controllers/fullscreen.js.map +1 -1
  424. package/internals/controllers/gestures.d.ts +10 -29
  425. package/internals/controllers/gestures.js +1 -3
  426. package/internals/controllers/gestures.js.map +1 -1
  427. package/internals/controllers/group.d.ts +13 -30
  428. package/internals/controllers/group.js.map +1 -1
  429. package/internals/controllers/host-listeners.d.ts +28 -0
  430. package/internals/controllers/host-listeners.js +27 -0
  431. package/internals/controllers/host-listeners.js.map +1 -0
  432. package/internals/controllers/id-resolver.d.ts +8 -9
  433. package/internals/controllers/id-resolver.js +6 -14
  434. package/internals/controllers/id-resolver.js.map +1 -1
  435. package/internals/controllers/internals.d.ts +53 -104
  436. package/internals/controllers/internals.js +40 -13
  437. package/internals/controllers/internals.js.map +1 -1
  438. package/internals/controllers/key-bindings.d.ts +61 -158
  439. package/internals/controllers/key-bindings.js +68 -67
  440. package/internals/controllers/key-bindings.js.map +1 -1
  441. package/internals/controllers/keys.d.ts +32 -0
  442. package/internals/controllers/keys.js +20 -0
  443. package/internals/controllers/keys.js.map +1 -0
  444. package/internals/controllers/mutation-observer.d.ts +14 -37
  445. package/internals/controllers/mutation-observer.js +1 -1
  446. package/internals/controllers/mutation-observer.js.map +1 -1
  447. package/internals/controllers/resize-observer.d.ts +9 -19
  448. package/internals/controllers/resize-observer.js.map +1 -1
  449. package/internals/controllers/root-click.d.ts +11 -42
  450. package/internals/controllers/root-click.js +4 -6
  451. package/internals/controllers/root-click.js.map +1 -1
  452. package/internals/controllers/roving-focus.d.ts +16 -35
  453. package/internals/controllers/roving-focus.js.map +1 -1
  454. package/internals/controllers/slot.d.ts +25 -54
  455. package/internals/controllers/slot.js +6 -6
  456. package/internals/controllers/slot.js.map +1 -1
  457. package/internals/controllers/toggle.d.ts +44 -48
  458. package/internals/controllers/toggle.js.map +1 -1
  459. package/internals/date/compare.js.map +1 -1
  460. package/internals/date/converters.d.ts +10 -7
  461. package/internals/date/converters.js.map +1 -1
  462. package/internals/date/model.d.ts +9 -16
  463. package/internals/date/model.js +22 -25
  464. package/internals/date/model.js.map +1 -1
  465. package/internals/decorators/blazorAdditionalDependencies.d.ts +4 -2
  466. package/internals/decorators/blazorAdditionalDependencies.js.map +1 -1
  467. package/internals/decorators/blazorDeepImport.d.ts +1 -3
  468. package/internals/decorators/blazorDeepImport.js.map +1 -1
  469. package/internals/decorators/blazorInclude.d.ts +3 -2
  470. package/internals/decorators/blazorInclude.js.map +1 -1
  471. package/internals/decorators/blazorIndirectRender.d.ts +1 -3
  472. package/internals/decorators/blazorIndirectRender.js.map +1 -1
  473. package/internals/decorators/blazorSuppressComponent.d.ts +1 -3
  474. package/internals/decorators/blazorSuppressComponent.js.map +1 -1
  475. package/internals/decorators/coerced-property.d.ts +14 -20
  476. package/internals/decorators/coerced-property.js.map +1 -1
  477. package/internals/decorators/shadow-options.d.ts +2 -5
  478. package/internals/decorators/shadow-options.js.map +1 -1
  479. package/internals/definitions/defineAllComponents.js +6 -0
  480. package/internals/definitions/defineAllComponents.js.map +1 -1
  481. package/internals/directives/drag.d.ts +51 -81
  482. package/internals/directives/drag.js +27 -89
  483. package/internals/directives/drag.js.map +1 -1
  484. package/internals/directives/pointer-operation.d.ts +75 -0
  485. package/internals/directives/pointer-operation.js +92 -0
  486. package/internals/directives/pointer-operation.js.map +1 -0
  487. package/internals/directives/resize.d.ts +36 -64
  488. package/internals/directives/resize.js +18 -85
  489. package/internals/directives/resize.js.map +1 -1
  490. package/internals/i18n/EN/calendar.resources.d.ts +8 -2
  491. package/internals/i18n/EN/calendar.resources.js +2 -2
  492. package/internals/i18n/EN/calendar.resources.js.map +1 -1
  493. package/internals/i18n/EN/chat.resources.d.ts +8 -2
  494. package/internals/i18n/EN/chat.resources.js +3 -10
  495. package/internals/i18n/EN/chat.resources.js.map +1 -1
  496. package/internals/i18n/EN/date-picker.resources.d.ts +6 -4
  497. package/internals/i18n/EN/date-picker.resources.js +1 -7
  498. package/internals/i18n/EN/date-picker.resources.js.map +1 -1
  499. package/internals/i18n/EN/date-range-picker.resources.d.ts +9 -2
  500. package/internals/i18n/EN/date-range-picker.resources.js +2 -2
  501. package/internals/i18n/EN/date-range-picker.resources.js.map +1 -1
  502. package/internals/i18n/i18n-controller.d.ts +44 -46
  503. package/internals/i18n/i18n-controller.js +46 -33
  504. package/internals/i18n/i18n-controller.js.map +1 -1
  505. package/internals/i18n/utils.d.ts +9 -4
  506. package/internals/i18n/utils.js +4 -27
  507. package/internals/i18n/utils.js.map +1 -1
  508. package/internals/mixins/alert.d.ts +10 -25
  509. package/internals/mixins/alert.js.map +1 -1
  510. package/internals/mixins/combo-box.d.ts +21 -11
  511. package/internals/mixins/combo-box.js +16 -22
  512. package/internals/mixins/combo-box.js.map +1 -1
  513. package/internals/mixins/event-emitter.js +9 -11
  514. package/internals/mixins/event-emitter.js.map +1 -1
  515. package/internals/mixins/forms/associated-required.d.ts +4 -4
  516. package/internals/mixins/forms/associated-required.js.map +1 -1
  517. package/internals/mixins/forms/associated.d.ts +4 -2
  518. package/internals/mixins/forms/associated.js +8 -19
  519. package/internals/mixins/forms/associated.js.map +1 -1
  520. package/internals/mixins/forms/form-transformers.js.map +1 -1
  521. package/internals/mixins/forms/types.d.ts +24 -80
  522. package/internals/mixins/forms/types.js.map +1 -1
  523. package/internals/mixins/group.d.ts +18 -0
  524. package/internals/mixins/group.js +37 -0
  525. package/internals/mixins/group.js.map +1 -0
  526. package/internals/mixins/i18n.d.ts +10 -16
  527. package/internals/mixins/i18n.js.map +1 -1
  528. package/internals/mixins/mask-behavior.d.ts +8 -22
  529. package/internals/mixins/mask-behavior.js +1 -2
  530. package/internals/mixins/mask-behavior.js.map +1 -1
  531. package/internals/mixins/option.d.ts +1 -2
  532. package/internals/mixins/option.js +2 -1
  533. package/internals/mixins/option.js.map +1 -1
  534. package/internals/part-map.d.ts +4 -2
  535. package/internals/part-map.js +1 -1
  536. package/internals/part-map.js.map +1 -1
  537. package/internals/templates/input-shell.d.ts +8 -17
  538. package/internals/templates/input-shell.js +4 -1
  539. package/internals/templates/input-shell.js.map +1 -1
  540. package/internals/templates/masked-input.d.ts +7 -8
  541. package/internals/templates/masked-input.js.map +1 -1
  542. package/internals/templates/slotted-icon.d.ts +7 -12
  543. package/internals/templates/slotted-icon.js.map +1 -1
  544. package/internals/templates/toggle-shell.d.ts +6 -7
  545. package/internals/templates/toggle-shell.js.map +1 -1
  546. package/internals/timing.d.ts +5 -14
  547. package/internals/timing.js.map +1 -1
  548. package/internals/utils/arrays.d.ts +21 -21
  549. package/internals/utils/arrays.js +14 -0
  550. package/internals/utils/arrays.js.map +1 -1
  551. package/internals/utils/dom.d.ts +51 -39
  552. package/internals/utils/dom.js +1 -2
  553. package/internals/utils/dom.js.map +1 -1
  554. package/internals/utils/events.d.ts +29 -16
  555. package/internals/utils/events.js +9 -1
  556. package/internals/utils/events.js.map +1 -1
  557. package/internals/utils/lit.d.ts +5 -2
  558. package/internals/utils/lit.js.map +1 -1
  559. package/internals/utils/math.d.ts +8 -6
  560. package/internals/utils/math.js.map +1 -1
  561. package/internals/utils/objects.d.ts +3 -20
  562. package/internals/utils/objects.js +1 -39
  563. package/internals/utils/objects.js.map +1 -1
  564. package/internals/utils/strings.d.ts +9 -11
  565. package/internals/utils/strings.js.map +1 -1
  566. package/internals/utils/types.d.ts +16 -3
  567. package/internals/utils/types.js +3 -0
  568. package/internals/utils/types.js.map +1 -1
  569. package/internals/validators.d.ts +9 -8
  570. package/internals/validators.js +12 -6
  571. package/internals/validators.js.map +1 -1
  572. package/package.json +1 -1
  573. package/skills/README.md +3 -0
  574. package/skills/igniteui-wc-figma-to-app/SKILL.md +907 -0
  575. package/skills/igniteui-wc-figma-to-app/references/asset-extraction.md +363 -0
  576. package/skills/igniteui-wc-figma-to-app/references/design-token-bridge.md +407 -0
  577. package/skills/igniteui-wc-figma-to-app/references/figma-component-map.md +325 -0
  578. package/skills/igniteui-wc-figma-to-app/references/mcp-setup.md +409 -0
  579. package/skills/igniteui-wc-figma-to-app/references/validation-patterns.md +376 -0
  580. package/skills/igniteui-wc-generate-from-image-design/references/gotchas.md +21 -0
  581. package/skills/igniteui-wc-integrate-with-framework/SKILL.md +4 -3
  582. package/skills/igniteui-wc-integrate-with-framework/references/vanilla-js.md +14 -0
  583. package/skills/igniteui-wc-migrate-grid-lite-to-premium/SKILL.md +12 -2
  584. package/theming/config.d.ts +14 -5
  585. package/theming/config.js +38 -18
  586. package/theming/config.js.map +1 -1
  587. package/theming/context.d.ts +1 -23
  588. package/theming/context.js.map +1 -1
  589. package/theming/theming-controller.d.ts +2 -32
  590. package/theming/theming-controller.js +15 -21
  591. package/theming/theming-controller.js.map +1 -1
  592. package/theming/theming-event.d.ts +0 -7
  593. package/theming/theming-event.js +0 -13
  594. package/theming/theming-event.js.map +1 -1
  595. package/theming/types.d.ts +1 -8
  596. package/theming/types.js.map +1 -1
  597. package/web-types.json +3 -3
  598. package/animations/presets/slide/index.d.ts +0 -3
  599. package/animations/presets/slide/index.js +0 -16
  600. package/animations/presets/slide/index.js.map +0 -1
  601. package/internals/controllers/root-scroll.d.ts +0 -31
  602. package/internals/controllers/root-scroll.js +0 -71
  603. package/internals/controllers/root-scroll.js.map +0 -1
  604. package/theming/utils.d.ts +0 -11
  605. package/theming/utils.js +0 -20
  606. package/theming/utils.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"dropdown.js","sourceRoot":"","sources":["../../../src/components/dropdown/dropdown.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, type PropertyValues } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\nimport {\n addKeybindings,\n arrowDown,\n arrowLeft,\n arrowRight,\n arrowUp,\n endKey,\n enterKey,\n escapeKey,\n homeKey,\n type KeyBindingController,\n type KeyBindingObserverCleanup,\n tabKey,\n} from '#internals/controllers/key-bindings.js';\nimport {\n createMutationController,\n type MutationControllerParams,\n} from '#internals/controllers/mutation-observer.js';\nimport { addRootClickController } from '#internals/controllers/root-click.js';\nimport { addRootScrollHandler } from '#internals/controllers/root-scroll.js';\nimport { blazorAdditionalDependencies } from '#internals/decorators/blazorAdditionalDependencies.js';\nimport { registerComponent } from '#internals/definitions/register.js';\nimport {\n getActiveItems,\n getItems,\n getNextActiveItem,\n getPreviousActiveItem,\n IgcComboBoxBaseLikeComponent,\n setInitialSelectionState,\n} from '#internals/mixins/combo-box.js';\nimport type { AbstractConstructor } from '#internals/mixins/constructor.js';\nimport { EventEmitterMixin } from '#internals/mixins/event-emitter.js';\nimport { isEmpty } from '#internals/utils/arrays.js';\nimport { getElementByIdFromRoot } from '#internals/utils/dom.js';\nimport { getElementFromPath } from '#internals/utils/events.js';\nimport { createIdGenerator } from '#internals/utils/strings.js';\nimport { isString } from '#internals/utils/types.js';\nimport { addThemingController } from '#theming/theming-controller.js';\nimport IgcPopoverComponent, {\n type PopoverPlacement,\n} from '../popover/popover.js';\nimport type { PopoverScrollStrategy } from '../types.js';\nimport IgcDropdownGroupComponent from './dropdown-group.js';\nimport IgcDropdownHeaderComponent from './dropdown-header.js';\nimport IgcDropdownItemComponent from './dropdown-item.js';\nimport { all } from './themes/container.js';\nimport { styles } from './themes/dropdown.base.css.js';\nimport { styles as shared } from './themes/shared/dropdown.common.css.js';\n\nexport interface IgcDropdownComponentEventMap {\n igcOpening: CustomEvent<void>;\n igcOpened: CustomEvent<void>;\n igcClosing: CustomEvent<void>;\n igcClosed: CustomEvent<void>;\n igcChange: CustomEvent<IgcDropdownItemComponent>;\n}\n\nconst nextItemId = createIdGenerator('igc-dropdown-item');\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 opened.\n * @fires igcOpened - Emitted after the dropdown is opened.\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 container.\n * @csspart list - The dropdown list element.\n */\n@blazorAdditionalDependencies(\n 'IgcDropdownItemComponent, IgcDropdownHeaderComponent, IgcDropdownGroupComponent'\n)\nexport default class IgcDropdownComponent extends EventEmitterMixin<\n IgcDropdownComponentEventMap,\n AbstractConstructor<IgcComboBoxBaseLikeComponent>\n>(IgcComboBoxBaseLikeComponent) {\n public static readonly tagName = 'igc-dropdown';\n public static styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(\n IgcDropdownComponent,\n IgcDropdownGroupComponent,\n IgcDropdownHeaderComponent,\n IgcDropdownItemComponent,\n IgcPopoverComponent\n );\n }\n\n //#region Internal state\n\n private readonly _keyBindings: KeyBindingController;\n\n private readonly _rootScrollController = addRootScrollHandler(this, {\n hideCallback: this._handleClosing,\n });\n\n protected override readonly _rootClickController = addRootClickController(\n this,\n {\n onHide: this._handleClosing,\n }\n );\n\n private _selectedItem: IgcDropdownItemComponent | null = null;\n\n /** The item keyboard navigation moves from. Only {@link _activateItem} assigns it. */\n private _activeItem: IgcDropdownItemComponent | null = null;\n\n /** The anchor passed to `show()` / `toggle()`, if any. */\n private _explicitTarget?: HTMLElement;\n\n /** The anchor in use - the popover is positioned against it. */\n @state()\n private _target?: HTMLElement;\n\n private _targetListeners?: KeyBindingObserverCleanup;\n\n @query('slot[name=\"target\"]')\n private readonly _targetSlot!: HTMLSlotElement | null;\n\n /** The element currently assigned to the `target` slot, if any. */\n private get _slottedTarget(): HTMLElement | undefined {\n const [target] =\n this._targetSlot?.assignedElements({ flatten: true }) ?? [];\n return target as HTMLElement | undefined;\n }\n\n private get _activeItems(): IgcDropdownItemComponent[] {\n return Array.from(\n getActiveItems<IgcDropdownItemComponent>(\n this,\n IgcDropdownItemComponent.tagName\n )\n );\n }\n\n //#endregion\n\n //#region Public attributes and properties\n\n /** The preferred placement of the component around the target element.\n * @attr\n */\n @property()\n public placement: PopoverPlacement = 'bottom-start';\n\n /**\n * Determines the behavior of the component during scrolling of the parent container.\n * @attr scroll-strategy\n */\n @property({ attribute: 'scroll-strategy' })\n public scrollStrategy: PopoverScrollStrategy = '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 * @attr\n */\n @property({ type: Boolean })\n public flip = false;\n\n /**\n * The distance from the target element.\n * @attr\n */\n @property({ type: Number })\n public distance = 0;\n\n /**\n * Whether the dropdown's width should be the same as the target's one.\n * @attr same-width\n */\n @property({ type: Boolean, attribute: 'same-width' })\n public sameWidth = false;\n\n /** Returns the items of the dropdown. */\n public get items(): IgcDropdownItemComponent[] {\n return Array.from(\n getItems<IgcDropdownItemComponent>(this, IgcDropdownItemComponent.tagName)\n );\n }\n\n /** Returns the group items of the dropdown. */\n public get groups(): IgcDropdownGroupComponent[] {\n return Array.from(\n getItems<IgcDropdownGroupComponent>(\n this,\n IgcDropdownGroupComponent.tagName\n )\n );\n }\n\n /** Returns the selected item from the dropdown or null. */\n public get selectedItem(): IgcDropdownItemComponent | null {\n return this._selectedItem;\n }\n\n //#endregion\n\n //#region Life-cycle\n\n constructor() {\n super();\n\n addThemingController(this, all);\n\n this._keyBindings = addKeybindings(this, {\n skip: () => !this.open,\n bindingDefaults: { preventDefault: true, repeat: true },\n })\n .set(tabKey, this._handleTab, {\n preventDefault: false,\n })\n .set(escapeKey, this._handleClosing)\n .set(arrowUp, this._handleArrowUp)\n .set(arrowLeft, this._handleArrowUp)\n .set(arrowDown, this._handleArrowDown)\n .set(arrowRight, this._handleArrowDown)\n .set(enterKey, this._commitActiveItem)\n .set(homeKey, this._handleHome)\n .set(endKey, this._handleEnd);\n\n createMutationController(this, {\n callback: this._handleItemsChange,\n filter: [IgcDropdownItemComponent.tagName],\n config: { childList: true, subtree: true },\n });\n }\n\n /** @internal */\n public override connectedCallback(): void {\n super.connectedCallback();\n // Re-establish what `disconnectedCallback` tore down.\n this._observeTarget();\n this._syncAnchorARIA();\n }\n\n /** @internal */\n public override disconnectedCallback(): void {\n this._releaseTarget();\n super.disconnectedCallback();\n }\n\n protected override willUpdate(properties: PropertyValues<this>): void {\n if (!this.hasUpdated) {\n return;\n }\n\n const openChanged = properties.has('open');\n const strategyChanged = properties.has('scrollStrategy');\n\n if (openChanged || properties.has('keepOpenOnOutsideClick')) {\n this._rootClickController.update();\n }\n\n if (openChanged || strategyChanged) {\n this._rootScrollController.update({ resetListeners: strategyChanged });\n }\n }\n\n protected override async firstUpdated(): Promise<void> {\n await this.updateComplete;\n const selected = setInitialSelectionState(this.items);\n\n if (selected) {\n this._selectItem(selected, false);\n }\n }\n\n protected override updated(): void {\n this._syncAnchorARIA();\n }\n\n //#endregion\n\n //#region Event handlers\n\n /**\n * Re-resolves the selection whenever items enter or leave the light DOM -\n * frameworks routinely render them after the initial paint, and a selected or\n * navigated item may be taken out from under us.\n */\n private _handleItemsChange({\n changes: { added, removed },\n }: MutationControllerParams<IgcDropdownItemComponent>): void {\n if (!this.hasUpdated || (isEmpty(added) && isEmpty(removed))) {\n return;\n }\n\n const items = this.items;\n\n if (this._selectedItem && !items.includes(this._selectedItem)) {\n this._clearSelectedItem();\n } else if (this._activeItem && !items.includes(this._activeItem)) {\n this._activateItem(this._selectedItem);\n }\n }\n\n private _handleListBoxClick(event: MouseEvent): void {\n const item = getElementFromPath(IgcDropdownItemComponent.tagName, event);\n\n if (item && !item.disabled) {\n this._selectItem(item);\n }\n }\n\n protected override _handleAnchorClick(): void {\n // Opening through our own anchor hands the anchor role back to it.\n this._explicitTarget = undefined;\n this._updateTarget();\n\n super._handleAnchorClick();\n }\n\n private _handleClosing(): void {\n this._hide(true);\n }\n\n private _handleArrowUp(): void {\n this._navigateToActiveItem(\n getPreviousActiveItem(this.items, this._activeItem)\n );\n }\n\n private _handleArrowDown(): void {\n this._navigateToActiveItem(getNextActiveItem(this.items, this._activeItem));\n }\n\n private _handleHome(): void {\n this._navigateToActiveItem(this._activeItems.at(0));\n }\n\n private _handleEnd(): void {\n this._navigateToActiveItem(this._activeItems.at(-1));\n }\n\n private _handleTab(): void {\n this._commitActiveItem();\n\n // Tab commits and leaves, whatever `keepOpenOnSelect` says.\n this._hide(true);\n }\n\n //#endregion\n\n //#region Internal API\n\n /** Selects the item navigation is on, if there is one. */\n private _commitActiveItem(): void {\n if (this._activeItem) {\n this._selectItem(this._activeItem);\n }\n }\n\n private _activateItem(item: IgcDropdownItemComponent | null): void {\n if (this._activeItem && this._activeItem !== item) {\n this._activeItem.active = false;\n }\n\n this._activeItem = item;\n\n if (item) {\n item.active = true;\n }\n\n this._syncAnchorARIA();\n }\n\n private _setSelectedItem(item: IgcDropdownItemComponent): void {\n if (this._selectedItem && this._selectedItem !== item) {\n this._selectedItem.selected = false;\n }\n\n this._selectedItem = item;\n item.selected = true;\n this._activateItem(item);\n }\n\n private _selectItem(\n item?: IgcDropdownItemComponent | null,\n emit = true\n ): IgcDropdownItemComponent | null {\n if (!item) {\n this._clearSelectedItem();\n return null;\n }\n\n // Re-selecting the current item is not a change, but still a commit.\n const changed = this._selectedItem !== item;\n\n changed ? this._setSelectedItem(item) : this._activateItem(item);\n\n if (emit) {\n if (changed) {\n this.emitEvent('igcChange', { detail: item });\n }\n\n if (!this.keepOpenOnSelect) {\n this._hide(true);\n }\n }\n\n return this._selectedItem;\n }\n\n private _clearSelectedItem(): void {\n if (this._selectedItem) {\n this._selectedItem.selected = false;\n }\n\n this._selectedItem = null;\n this._activateItem(null);\n }\n\n /** Highlights `item` and, while the list is open, brings it into view. */\n private _navigateToActiveItem(item?: IgcDropdownItemComponent | null): void {\n if (!item) {\n return;\n }\n\n this._activateItem(item);\n\n // Closed, the list is inert and off screen.\n if (this.open) {\n item.scrollIntoView({ behavior: 'auto', block: 'nearest' });\n }\n }\n\n /** Resolves an item by its `value`, or by its index in {@link items}. */\n private _resolveItem(\n value: string | number\n ): IgcDropdownItemComponent | undefined {\n return isString(value)\n ? this.items.find((item) => item.value === value)\n : this.items[value];\n }\n\n /**\n * Moves everything bound to the anchor - key event listeners, outside click\n * exemption and ARIA - over to the one currently in effect.\n */\n private _updateTarget(): void {\n const target = this._explicitTarget ?? this._slottedTarget;\n\n if (target === this._target) {\n return;\n }\n\n this._releaseTarget();\n\n this._target = target;\n this._rootClickController.update({ target });\n this._observeTarget();\n this._syncAnchorARIA();\n }\n\n /**\n * Only an anchor outside of our own DOM needs listeners of its own - keyboard\n * events on a slotted one already reach the host.\n */\n private _observeTarget(): void {\n const target = this._target;\n\n if (target && !this._targetListeners && !this.contains(target)) {\n this._targetListeners = this._keyBindings.observeElement(target);\n }\n }\n\n private _setExplicitTarget(anchor: HTMLElement | string): void {\n const target = isString(anchor)\n ? getElementByIdFromRoot(this, anchor)\n : anchor;\n\n // An id matching nothing leaves the current anchor in place.\n if (!target) {\n return;\n }\n\n this._explicitTarget = target;\n this._updateTarget();\n }\n\n /**\n * Publishes the popup state and the navigation position on the current anchor.\n *\n * `aria-activedescendant` goes on the anchor because that is what holds DOM\n * focus - the list is never focused, since the key bindings are observed on\n * the anchor itself. There is no `aria-controls` to go with it: the list it\n * would name lives in this shadow root, which an IDREF cannot cross and ARIA\n * element reflection only ever resolves out of, never into.\n */\n private _syncAnchorARIA(): void {\n const anchor = this._target;\n\n if (!anchor) {\n return;\n }\n\n const active = this.open ? this._activeItem : null;\n\n anchor.setAttribute('aria-haspopup', 'listbox');\n anchor.setAttribute('aria-expanded', `${this.open}`);\n\n if (active) {\n // Items only need an id if they have none of their own\n active.id ||= nextItemId();\n anchor.setAttribute('aria-activedescendant', active.id);\n } else {\n anchor.removeAttribute('aria-activedescendant');\n }\n }\n\n /**\n * Stops driving the current anchor: its key event listeners go, along with\n * everything {@link _syncAnchorARIA} wrote onto it.\n */\n private _releaseTarget(): void {\n this._targetListeners?.unsubscribe();\n this._targetListeners = undefined;\n\n const anchor = this._target;\n\n anchor?.removeAttribute('aria-haspopup');\n anchor?.removeAttribute('aria-expanded');\n anchor?.removeAttribute('aria-activedescendant');\n }\n\n //#endregion\n\n //#region Public API\n\n /* blazorSuppress */\n /** Shows the component. */\n public override async show(target?: HTMLElement | string): Promise<boolean> {\n if (target) {\n this._setExplicitTarget(target);\n\n // A target that resolves to nothing, with no anchor to fall back on,\n // would open a list the popover cannot place - and so cannot show.\n if (!this._target) {\n return false;\n }\n }\n\n return super.show();\n }\n\n /* blazorSuppress */\n /** Toggles the open state of the component. */\n public override async toggle(\n target?: HTMLElement | string\n ): Promise<boolean> {\n return this.open ? this.hide() : this.show(target);\n }\n\n /* blazorSuppress */\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 /* blazorSuppress */\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 /* blazorSuppress */\n /** Navigates to the specified item. If it exists, returns the found item, otherwise - null. */\n public navigateTo(value: string | number): IgcDropdownItemComponent | null {\n const item = this._resolveItem(value);\n\n if (item) {\n this._navigateToActiveItem(item);\n }\n\n return item ?? null;\n }\n\n /* blazorSuppress */\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 /* blazorSuppress */\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 /* blazorSuppress */\n /** Selects the specified item. If it exists, returns the found item, otherwise - null. */\n public select(value: string | number): IgcDropdownItemComponent | null {\n const item = this._resolveItem(value);\n return item ? this._selectItem(item, false) : null;\n }\n\n /** Clears the current selection of the dropdown. */\n public clearSelection(): void {\n this._clearSelectedItem();\n }\n\n //#endregion\n\n protected override render() {\n return html`<igc-popover\n ?open=${this.open}\n ?flip=${this.flip}\n ?same-width=${this.sameWidth}\n .anchor=${this._target}\n .offset=${this.distance}\n .placement=${this.placement}\n shift\n >\n <slot\n id=\"dropdown-target\"\n name=\"target\"\n slot=\"anchor\"\n @click=${this._handleAnchorClick}\n @slotchange=${this._updateTarget}\n ></slot>\n <div part=\"base\" @click=${this._handleListBoxClick} .inert=${!this.open}>\n <div\n id=\"dropdown-list\"\n role=\"listbox\"\n part=\"list\"\n aria-labelledby=\"dropdown-target\"\n >\n <slot></slot>\n </div>\n </div>\n </igc-popover>`;\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, type PropertyValues } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\nimport {\n addKeybindings,\n arrowDown,\n arrowLeft,\n arrowRight,\n arrowUp,\n endKey,\n enterKey,\n escapeKey,\n homeKey,\n type KeyBindingController,\n type KeyBindingObserverCleanup,\n tabKey,\n} from '#internals/controllers/key-bindings.js';\nimport {\n createMutationController,\n type MutationControllerParams,\n} from '#internals/controllers/mutation-observer.js';\nimport { addRootClickController } from '#internals/controllers/root-click.js';\nimport { blazorAdditionalDependencies } from '#internals/decorators/blazorAdditionalDependencies.js';\nimport { registerComponent } from '#internals/definitions/register.js';\nimport {\n getActiveItems,\n getItems,\n getNextActiveItem,\n getPreviousActiveItem,\n IgcComboBoxBaseLikeComponent,\n setInitialSelectionState,\n} from '#internals/mixins/combo-box.js';\nimport type { AbstractConstructor } from '#internals/mixins/constructor.js';\nimport { EventEmitterMixin } from '#internals/mixins/event-emitter.js';\nimport { isEmpty } from '#internals/utils/arrays.js';\nimport { getElementByIdFromRoot } from '#internals/utils/dom.js';\nimport { getElementFromPath } from '#internals/utils/events.js';\nimport { createIdGenerator } from '#internals/utils/strings.js';\nimport { isString } from '#internals/utils/types.js';\nimport { addThemingController } from '#theming/theming-controller.js';\nimport IgcPopoverComponent, {\n type PopoverPlacement,\n} from '../popover/popover.js';\nimport IgcDropdownGroupComponent from './dropdown-group.js';\nimport IgcDropdownHeaderComponent from './dropdown-header.js';\nimport IgcDropdownItemComponent from './dropdown-item.js';\nimport { all } from './themes/container.js';\nimport { styles } from './themes/dropdown.base.css.js';\nimport { styles as shared } from './themes/shared/dropdown.common.css.js';\n\nexport interface IgcDropdownComponentEventMap {\n igcOpening: CustomEvent<void>;\n igcOpened: CustomEvent<void>;\n igcClosing: CustomEvent<void>;\n igcClosed: CustomEvent<void>;\n igcChange: CustomEvent<IgcDropdownItemComponent>;\n}\n\nconst nextItemId = createIdGenerator('igc-dropdown-item');\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 opened.\n * @fires igcOpened - Emitted after the dropdown is opened.\n * @fires igcClosing - Emitted 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 container.\n * @csspart list - The dropdown list element.\n */\n@blazorAdditionalDependencies(\n 'IgcDropdownItemComponent, IgcDropdownHeaderComponent, IgcDropdownGroupComponent'\n)\nexport default class IgcDropdownComponent extends EventEmitterMixin<\n IgcDropdownComponentEventMap,\n AbstractConstructor<IgcComboBoxBaseLikeComponent>\n>(IgcComboBoxBaseLikeComponent) {\n public static readonly tagName = 'igc-dropdown';\n public static styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(\n IgcDropdownComponent,\n IgcDropdownGroupComponent,\n IgcDropdownHeaderComponent,\n IgcDropdownItemComponent,\n IgcPopoverComponent\n );\n }\n\n //#region Internal state\n\n private readonly _keyBindings: KeyBindingController;\n\n protected override readonly _rootClickController = addRootClickController(\n this,\n {\n onHide: this._handleClosing,\n }\n );\n\n private _selectedItem: IgcDropdownItemComponent | null = null;\n\n /** The item keyboard navigation moves from. Only {@link _activateItem} assigns it. */\n private _activeItem: IgcDropdownItemComponent | null = null;\n\n /** The anchor passed to `show()` / `toggle()`, if any. */\n private _explicitTarget?: HTMLElement;\n\n /** The anchor in use - the popover is positioned against it. */\n @state()\n private _target?: HTMLElement;\n\n private _targetListeners?: KeyBindingObserverCleanup;\n\n @query('slot[name=\"target\"]')\n private readonly _targetSlot!: HTMLSlotElement | null;\n\n /** The element currently assigned to the `target` slot, if any. */\n private get _slottedTarget(): HTMLElement | undefined {\n const [target] =\n this._targetSlot?.assignedElements({ flatten: true }) ?? [];\n return target as HTMLElement | undefined;\n }\n\n private get _activeItems(): IgcDropdownItemComponent[] {\n return Array.from(\n getActiveItems<IgcDropdownItemComponent>(\n this,\n IgcDropdownItemComponent.tagName\n )\n );\n }\n\n //#endregion\n\n //#region Public attributes and properties\n\n /** The preferred placement of the component around the target element.\n * @attr\n */\n @property()\n public placement: PopoverPlacement = 'bottom-start';\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 * @attr\n */\n @property({ type: Boolean })\n public flip = false;\n\n /**\n * The distance from the target element.\n * @attr\n */\n @property({ type: Number })\n public distance = 0;\n\n /**\n * Whether the dropdown's width should be the same as the target's one.\n * @attr same-width\n */\n @property({ type: Boolean, attribute: 'same-width' })\n public sameWidth = false;\n\n /** Returns the items of the dropdown. */\n public get items(): IgcDropdownItemComponent[] {\n return Array.from(\n getItems<IgcDropdownItemComponent>(this, IgcDropdownItemComponent.tagName)\n );\n }\n\n /** Returns the group items of the dropdown. */\n public get groups(): IgcDropdownGroupComponent[] {\n return Array.from(\n getItems<IgcDropdownGroupComponent>(\n this,\n IgcDropdownGroupComponent.tagName\n )\n );\n }\n\n /** Returns the selected item from the dropdown or null. */\n public get selectedItem(): IgcDropdownItemComponent | null {\n return this._selectedItem;\n }\n\n //#endregion\n\n //#region Life-cycle\n\n constructor() {\n super();\n\n addThemingController(this, all);\n\n this._keyBindings = addKeybindings(this, {\n skip: () => !this.open,\n bindingDefaults: { preventDefault: true, repeat: true },\n })\n .set(tabKey, this._handleTab, {\n preventDefault: false,\n })\n .set(escapeKey, this._handleClosing)\n .set(arrowUp, this._handleArrowUp)\n .set(arrowLeft, this._handleArrowUp)\n .set(arrowDown, this._handleArrowDown)\n .set(arrowRight, this._handleArrowDown)\n .set(enterKey, this._commitActiveItem)\n .set(homeKey, this._handleHome)\n .set(endKey, this._handleEnd);\n\n createMutationController(this, {\n callback: this._handleItemsChange,\n filter: [IgcDropdownItemComponent.tagName],\n config: { childList: true, subtree: true },\n });\n }\n\n /** @internal */\n public override connectedCallback(): void {\n super.connectedCallback();\n // Re-establish what `disconnectedCallback` tore down.\n this._observeTarget();\n this._syncAnchorARIA();\n }\n\n /** @internal */\n public override disconnectedCallback(): void {\n this._releaseTarget();\n super.disconnectedCallback();\n }\n\n protected override willUpdate(properties: PropertyValues<this>): void {\n if (!this.hasUpdated) {\n return;\n }\n\n if (properties.has('open') || properties.has('keepOpenOnOutsideClick')) {\n this._rootClickController.update();\n }\n }\n\n protected override async firstUpdated(): Promise<void> {\n await this.updateComplete;\n const selected = setInitialSelectionState(this.items);\n\n if (selected) {\n this._selectItem(selected, false);\n }\n }\n\n protected override updated(): void {\n this._syncAnchorARIA();\n }\n\n //#endregion\n\n //#region Event handlers\n\n /**\n * Resolves the selection again when an item enters or leaves the light DOM. A\n * framework usually renders the items after the first paint, and can remove a\n * selected or navigated item.\n */\n private _handleItemsChange({\n changes: { added, removed },\n }: MutationControllerParams<IgcDropdownItemComponent>): void {\n if (!this.hasUpdated || (isEmpty(added) && isEmpty(removed))) {\n return;\n }\n\n const items = this.items;\n\n if (this._selectedItem && !items.includes(this._selectedItem)) {\n this._clearSelectedItem();\n } else if (this._activeItem && !items.includes(this._activeItem)) {\n this._activateItem(this._selectedItem);\n }\n }\n\n private _handleListBoxClick(event: MouseEvent): void {\n const item = getElementFromPath(IgcDropdownItemComponent.tagName, event);\n\n if (item && !item.disabled) {\n this._selectItem(item);\n }\n }\n\n protected override _handleAnchorClick(): void {\n // Opening through our own anchor hands the anchor role back to it.\n this._explicitTarget = undefined;\n this._updateTarget();\n\n super._handleAnchorClick();\n }\n\n private _handleClosing(): void {\n this._hide(true);\n }\n\n private _handleArrowUp(): void {\n this._navigateToActiveItem(\n getPreviousActiveItem(this.items, this._activeItem)\n );\n }\n\n private _handleArrowDown(): void {\n this._navigateToActiveItem(getNextActiveItem(this.items, this._activeItem));\n }\n\n private _handleHome(): void {\n this._navigateToActiveItem(this._activeItems.at(0));\n }\n\n private _handleEnd(): void {\n this._navigateToActiveItem(this._activeItems.at(-1));\n }\n\n private _handleTab(): void {\n this._commitActiveItem();\n\n // Tab commits and leaves, whatever `keepOpenOnSelect` says.\n this._hide(true);\n }\n\n //#endregion\n\n //#region Internal API\n\n /** Selects the item navigation is on, if there is one. */\n private _commitActiveItem(): void {\n if (this._activeItem) {\n this._selectItem(this._activeItem);\n }\n }\n\n private _activateItem(item: IgcDropdownItemComponent | null): void {\n if (this._activeItem && this._activeItem !== item) {\n this._activeItem.active = false;\n }\n\n this._activeItem = item;\n\n if (item) {\n item.active = true;\n }\n\n this._syncAnchorARIA();\n }\n\n private _setSelectedItem(item: IgcDropdownItemComponent): void {\n if (this._selectedItem && this._selectedItem !== item) {\n this._selectedItem.selected = false;\n }\n\n this._selectedItem = item;\n item.selected = true;\n this._activateItem(item);\n }\n\n private _selectItem(\n item?: IgcDropdownItemComponent | null,\n emit = true\n ): IgcDropdownItemComponent | null {\n if (!item) {\n this._clearSelectedItem();\n return null;\n }\n\n // Re-selecting the current item is not a change, but still a commit.\n const changed = this._selectedItem !== item;\n\n changed ? this._setSelectedItem(item) : this._activateItem(item);\n\n if (emit) {\n if (changed) {\n this.emitEvent('igcChange', { detail: item });\n }\n\n if (!this.keepOpenOnSelect) {\n this._hide(true);\n }\n }\n\n return this._selectedItem;\n }\n\n private _clearSelectedItem(): void {\n if (this._selectedItem) {\n this._selectedItem.selected = false;\n }\n\n this._selectedItem = null;\n this._activateItem(null);\n }\n\n /** Highlights `item` and, while the list is open, brings it into view. */\n private _navigateToActiveItem(item?: IgcDropdownItemComponent | null): void {\n if (!item) {\n return;\n }\n\n this._activateItem(item);\n\n // Closed, the list is inert and off screen.\n if (this.open) {\n item.scrollIntoView({ behavior: 'auto', block: 'nearest' });\n }\n }\n\n /** Resolves an item by its `value`, or by its index in {@link items}. */\n private _resolveItem(\n value: string | number\n ): IgcDropdownItemComponent | undefined {\n return isString(value)\n ? this.items.find((item) => item.value === value)\n : this.items[value];\n }\n\n /**\n * Moves all that is bound to the anchor to the current one: the key event\n * listeners, the outside-click exemption and the ARIA state.\n */\n private _updateTarget(): void {\n const target = this._explicitTarget ?? this._slottedTarget;\n\n if (target === this._target) {\n return;\n }\n\n this._releaseTarget();\n\n this._target = target;\n this._rootClickController.update({ target });\n this._observeTarget();\n this._syncAnchorARIA();\n }\n\n /**\n * Only an anchor outside this DOM needs its own listeners. A keyboard event\n * on a slotted anchor already reaches the host.\n */\n private _observeTarget(): void {\n const target = this._target;\n\n if (target && !this._targetListeners && !this.contains(target)) {\n this._targetListeners = this._keyBindings.observeElement(target);\n }\n }\n\n private _setExplicitTarget(anchor: HTMLElement | string): void {\n const target = isString(anchor)\n ? getElementByIdFromRoot(this, anchor)\n : anchor;\n\n // An id matching nothing leaves the current anchor in place.\n if (!target) {\n return;\n }\n\n this._explicitTarget = target;\n this._updateTarget();\n }\n\n /**\n * Publishes the popup state and the navigation position on the anchor.\n *\n * @remarks\n * `aria-activedescendant` goes on the anchor, because the anchor holds DOM\n * focus. The list is never focused, because the key bindings listen on the\n * anchor. No `aria-controls` goes with it: the list is in this shadow root,\n * which an IDREF cannot cross, and ARIA element reflection resolves only out\n * of a shadow root, never into one.\n */\n private _syncAnchorARIA(): void {\n const anchor = this._target;\n\n if (!anchor) {\n return;\n }\n\n const active = this.open ? this._activeItem : null;\n\n anchor.setAttribute('aria-haspopup', 'listbox');\n anchor.setAttribute('aria-expanded', `${this.open}`);\n\n if (active) {\n // Items only need an id if they have none of their own\n active.id ||= nextItemId();\n anchor.setAttribute('aria-activedescendant', active.id);\n } else {\n anchor.removeAttribute('aria-activedescendant');\n }\n }\n\n /**\n * Releases the current anchor: removes its key event listeners and all that\n * {@link _syncAnchorARIA} wrote onto it.\n */\n private _releaseTarget(): void {\n this._targetListeners?.unsubscribe();\n this._targetListeners = undefined;\n\n const anchor = this._target;\n\n anchor?.removeAttribute('aria-haspopup');\n anchor?.removeAttribute('aria-expanded');\n anchor?.removeAttribute('aria-activedescendant');\n }\n\n //#endregion\n\n //#region Public API\n\n /* blazorSuppress */\n /** Shows the component. */\n public override async show(target?: HTMLElement | string): Promise<boolean> {\n if (target) {\n this._setExplicitTarget(target);\n\n // A target that resolves to nothing, with no anchor to fall back on,\n // would open a list the popover cannot place - and so cannot show.\n if (!this._target) {\n return false;\n }\n }\n\n return super.show();\n }\n\n /* blazorSuppress */\n /** Toggles the open state of the component. */\n public override async toggle(\n target?: HTMLElement | string\n ): Promise<boolean> {\n return this.open ? this.hide() : this.show(target);\n }\n\n /* blazorSuppress */\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 /* blazorSuppress */\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 /* blazorSuppress */\n /** Navigates to the specified item. If it exists, returns the found item, otherwise - null. */\n public navigateTo(value: string | number): IgcDropdownItemComponent | null {\n const item = this._resolveItem(value);\n\n if (item) {\n this._navigateToActiveItem(item);\n }\n\n return item ?? null;\n }\n\n /* blazorSuppress */\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 /* blazorSuppress */\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 /* blazorSuppress */\n /** Selects the specified item. If it exists, returns the found item, otherwise - null. */\n public select(value: string | number): IgcDropdownItemComponent | null {\n const item = this._resolveItem(value);\n return item ? this._selectItem(item, false) : null;\n }\n\n /** Clears the current selection of the dropdown. */\n public clearSelection(): void {\n this._clearSelectedItem();\n }\n\n //#endregion\n\n protected override render() {\n const labelledBy = this._target ? [this._target] : null;\n\n return html`<igc-popover\n ?open=${this.open}\n ?flip=${this.flip}\n ?same-width=${this.sameWidth}\n .anchor=${this._target}\n .offset=${this.distance}\n .placement=${this.placement}\n .scrollStrategy=${this.scrollStrategy}\n @igcPopoverScrollClose=${this._handleClosing}\n >\n <slot\n name=\"target\"\n slot=\"anchor\"\n @click=${this._handleAnchorClick}\n @slotchange=${this._updateTarget}\n ></slot>\n <div part=\"base\" @click=${this._handleListBoxClick} .inert=${!this.open}>\n <div\n id=\"dropdown-list\"\n role=\"listbox\"\n part=\"list\"\n .ariaLabelledByElements=${labelledBy}\n >\n <slot></slot>\n </div>\n </div>\n </igc-popover>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-dropdown': IgcDropdownComponent;\n }\n}\n"]}
@@ -1,3 +1,3 @@
1
1
  import { css } from 'lit';
2
- export const styles = css `:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size, var(--sb-size));scrollbar-color:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color)) var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size, var(--sb-size));height:var(--ig-scrollbar-size, var(--sb-size));background:var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color))}:host *,:host *::before,:host *::after{box-sizing:border-box}:host([hidden]),[hidden]{display:none !important}:host{font-family:var(--ig-body-2-font-family, var(--ig-font-family));font-size:var(--ig-body-2-font-size);font-weight:var(--ig-body-2-font-weight);font-style:var(--ig-body-2-font-style);line-height:var(--ig-body-2-line-height);letter-spacing:var(--ig-body-2-letter-spacing);text-transform:var(--ig-body-2-text-transform);margin-top:var(--ig-body-2-margin-top);margin-bottom:var(--ig-body-2-margin-bottom);display:flex;justify-content:flex-start;align-items:center;width:100%;white-space:nowrap;position:relative;cursor:pointer;outline-style:none;padding-inline:max(var(--is-large, 1)*max(1.5rem, -1 * 1.5rem)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(1.25rem, -1 * 1.25rem)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))))}:host([disabled]){cursor:default;pointer-events:none}::slotted(*){font:inherit}[part=content]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:block;width:100%;align-items:center}[part=prefix],[part=suffix]{display:flex;align-items:center;justify-content:center}[name=prefix]::slotted(*){--component-size: var(--dropdown-size) !important;margin-inline-end:max(var(--is-large, 1)*max(0.5rem, -1 * 0.5rem)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(0.5rem, -1 * 0.5rem)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(0.5rem, -1 * 0.5rem)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))))}[name=suffix]::slotted(*){--component-size: var(--dropdown-size) !important;margin-inline-start:max(var(--is-large, 1)*max(0.5rem, -1 * 0.5rem)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(0.5rem, -1 * 0.5rem)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(0.5rem, -1 * 0.5rem)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))))}`;
2
+ export const styles = css `:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size, var(--sb-size));scrollbar-color:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color)) var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size, var(--sb-size));height:var(--ig-scrollbar-size, var(--sb-size));background:var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color))}:host *,:host *::before,:host *::after{box-sizing:border-box}:host([hidden]),[hidden]{display:none !important}:host{font-family:var(--ig-body-2-font-family, var(--ig-font-family));font-size:var(--ig-body-2-font-size);font-weight:var(--ig-body-2-font-weight);font-style:var(--ig-body-2-font-style);line-height:var(--ig-body-2-line-height);letter-spacing:var(--ig-body-2-letter-spacing);text-transform:var(--ig-body-2-text-transform);margin-top:var(--ig-body-2-margin-top);margin-bottom:var(--ig-body-2-margin-bottom);display:flex;justify-content:flex-start;align-items:center;width:100%;white-space:nowrap;position:relative;cursor:pointer;outline-style:none;padding-inline:max(var(--is-large, 1)*max(1.5rem, -1 * 1.5rem)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(1.25rem, -1 * 1.25rem)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))))}:host([disabled]){cursor:default;pointer-events:none}::slotted(*){font:inherit}[part=content]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:block;width:100%;align-items:center}[part=prefix],[part=suffix]{display:flex;align-items:center;justify-content:center}[name=prefix]::slotted(*){--component-size: var(--dropdown-size) !important;margin-inline-end:max(var(--is-large, 1)*max(0.5rem, -1 * 0.5rem)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(0.5rem, -1 * 0.5rem)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(0.5rem, -1 * 0.5rem)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))))}[name=suffix]::slotted(*){--component-size: var(--dropdown-size) !important;margin-inline-start:max(var(--is-large, 1)*max(0.5rem, -1 * 0.5rem)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(0.5rem, -1 * 0.5rem)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(0.5rem, -1 * 0.5rem)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))))}@media(forced-colors: active){:host(:hover),:host([selected]){color:Highlight !important}:host(:hover) ::slotted(igc-icon),:host([selected]) ::slotted(igc-icon){color:Highlight !important}:host([disabled]){color:GrayText !important}:host([disabled]) ::slotted(igc-icon){color:GrayText !important}:host([active]){outline:.0625rem solid CanvasText;outline-offset:-0.0625rem}}`;
3
3
  //# sourceMappingURL=dropdown-item.base.css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dropdown-item.base.css.js","sourceRoot":"","sources":["../../../../src/components/dropdown/themes/dropdown-item.base.css.ts"],"names":[],"mappings":"AACE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,4hGAA4hG,CAAC","sourcesContent":["\n import { css } from 'lit';\n export const styles = css`:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size, var(--sb-size));scrollbar-color:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color)) var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size, var(--sb-size));height:var(--ig-scrollbar-size, var(--sb-size));background:var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color))}:host *,:host *::before,:host *::after{box-sizing:border-box}:host([hidden]),[hidden]{display:none !important}:host{font-family:var(--ig-body-2-font-family, var(--ig-font-family));font-size:var(--ig-body-2-font-size);font-weight:var(--ig-body-2-font-weight);font-style:var(--ig-body-2-font-style);line-height:var(--ig-body-2-line-height);letter-spacing:var(--ig-body-2-letter-spacing);text-transform:var(--ig-body-2-text-transform);margin-top:var(--ig-body-2-margin-top);margin-bottom:var(--ig-body-2-margin-bottom);display:flex;justify-content:flex-start;align-items:center;width:100%;white-space:nowrap;position:relative;cursor:pointer;outline-style:none;padding-inline:max(var(--is-large, 1)*max(1.5rem, -1 * 1.5rem)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(1.25rem, -1 * 1.25rem)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))))}:host([disabled]){cursor:default;pointer-events:none}::slotted(*){font:inherit}[part=content]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:block;width:100%;align-items:center}[part=prefix],[part=suffix]{display:flex;align-items:center;justify-content:center}[name=prefix]::slotted(*){--component-size: var(--dropdown-size) !important;margin-inline-end:max(var(--is-large, 1)*max(0.5rem, -1 * 0.5rem)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(0.5rem, -1 * 0.5rem)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(0.5rem, -1 * 0.5rem)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))))}[name=suffix]::slotted(*){--component-size: var(--dropdown-size) !important;margin-inline-start:max(var(--is-large, 1)*max(0.5rem, -1 * 0.5rem)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(0.5rem, -1 * 0.5rem)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(0.5rem, -1 * 0.5rem)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))))}`;\n "]}
1
+ {"version":3,"file":"dropdown-item.base.css.js","sourceRoot":"","sources":["../../../../src/components/dropdown/themes/dropdown-item.base.css.ts"],"names":[],"mappings":"AACE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,i5GAAi5G,CAAC","sourcesContent":["\n import { css } from 'lit';\n export const styles = css`:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size, var(--sb-size));scrollbar-color:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color)) var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size, var(--sb-size));height:var(--ig-scrollbar-size, var(--sb-size));background:var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color))}:host *,:host *::before,:host *::after{box-sizing:border-box}:host([hidden]),[hidden]{display:none !important}:host{font-family:var(--ig-body-2-font-family, var(--ig-font-family));font-size:var(--ig-body-2-font-size);font-weight:var(--ig-body-2-font-weight);font-style:var(--ig-body-2-font-style);line-height:var(--ig-body-2-line-height);letter-spacing:var(--ig-body-2-letter-spacing);text-transform:var(--ig-body-2-text-transform);margin-top:var(--ig-body-2-margin-top);margin-bottom:var(--ig-body-2-margin-bottom);display:flex;justify-content:flex-start;align-items:center;width:100%;white-space:nowrap;position:relative;cursor:pointer;outline-style:none;padding-inline:max(var(--is-large, 1)*max(1.5rem, -1 * 1.5rem)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(1.25rem, -1 * 1.25rem)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))))}:host([disabled]){cursor:default;pointer-events:none}::slotted(*){font:inherit}[part=content]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:block;width:100%;align-items:center}[part=prefix],[part=suffix]{display:flex;align-items:center;justify-content:center}[name=prefix]::slotted(*){--component-size: var(--dropdown-size) !important;margin-inline-end:max(var(--is-large, 1)*max(0.5rem, -1 * 0.5rem)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(0.5rem, -1 * 0.5rem)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(0.5rem, -1 * 0.5rem)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))))}[name=suffix]::slotted(*){--component-size: var(--dropdown-size) !important;margin-inline-start:max(var(--is-large, 1)*max(0.5rem, -1 * 0.5rem)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(0.5rem, -1 * 0.5rem)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(0.5rem, -1 * 0.5rem)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))))}@media(forced-colors: active){:host(:hover),:host([selected]){color:Highlight !important}:host(:hover) ::slotted(igc-icon),:host([selected]) ::slotted(igc-icon){color:Highlight !important}:host([disabled]){color:GrayText !important}:host([disabled]) ::slotted(igc-icon){color:GrayText !important}:host([active]){outline:.0625rem solid CanvasText;outline-offset:-0.0625rem}}`;\n "]}
@@ -1,3 +1,3 @@
1
1
  import { css } from 'lit';
2
- export const styles = css `:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size, var(--sb-size));scrollbar-color:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color)) var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size, var(--sb-size));height:var(--ig-scrollbar-size, var(--sb-size));background:var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color))}:host *,:host *::before,:host *::after{box-sizing:border-box}:host([hidden]),[hidden]{display:none !important}:host{display:flex;font-family:var(--ig-font-family)}[part=base]{overflow:hidden auto;min-width:7rem;z-index:10005}`;
2
+ export const styles = css `:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size, var(--sb-size));scrollbar-color:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color)) var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size, var(--sb-size));height:var(--ig-scrollbar-size, var(--sb-size));background:var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color))}:host *,:host *::before,:host *::after{box-sizing:border-box}:host([hidden]),[hidden]{display:none !important}:host{display:flex;font-family:var(--ig-font-family)}[part=base]{overflow:hidden auto;min-width:7rem;z-index:10005}@media(forced-colors: active){:host [part=base]{border:.0625rem solid CanvasText}}`;
3
3
  //# sourceMappingURL=dropdown.base.css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dropdown.base.css.js","sourceRoot":"","sources":["../../../../src/components/dropdown/themes/dropdown.base.css.ts"],"names":[],"mappings":"AACE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,6jCAA6jC,CAAC","sourcesContent":["\n import { css } from 'lit';\n export const styles = css`:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size, var(--sb-size));scrollbar-color:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color)) var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size, var(--sb-size));height:var(--ig-scrollbar-size, var(--sb-size));background:var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color))}:host *,:host *::before,:host *::after{box-sizing:border-box}:host([hidden]),[hidden]{display:none !important}:host{display:flex;font-family:var(--ig-font-family)}[part=base]{overflow:hidden auto;min-width:7rem;z-index:10005}`;\n "]}
1
+ {"version":3,"file":"dropdown.base.css.js","sourceRoot":"","sources":["../../../../src/components/dropdown/themes/dropdown.base.css.ts"],"names":[],"mappings":"AACE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,+oCAA+oC,CAAC","sourcesContent":["\n import { css } from 'lit';\n export const styles = css`:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size, var(--sb-size));scrollbar-color:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color)) var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size, var(--sb-size));height:var(--ig-scrollbar-size, var(--sb-size));background:var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color))}:host *,:host *::before,:host *::after{box-sizing:border-box}:host([hidden]),[hidden]{display:none !important}:host{display:flex;font-family:var(--ig-font-family)}[part=base]{overflow:hidden auto;min-width:7rem;z-index:10005}@media(forced-colors: active){:host [part=base]{border:.0625rem solid CanvasText}}`;\n "]}
@@ -18,7 +18,7 @@ declare const IgcFileInputComponent_base: AbstractConstructor<import("#internals
18
18
  * @slot custom-error - Renders content when setCustomValidity(message) is set.
19
19
  * @slot invalid - Renders content when the component is in invalid state (validity.valid = false).
20
20
  *
21
- * @fires igcChange - Emitted when the control's checked state changes.
21
+ * @fires igcChange - Emitted when the selection of the control changes.
22
22
  * @fires igcCancel - Emitted when the control's file picker dialog is canceled.
23
23
  *
24
24
  * @csspart container - The main wrapper that holds all main input elements.
@@ -35,7 +35,7 @@ export default class IgcFileInputComponent extends IgcFileInputComponent_base {
35
35
  static styles: import("lit").CSSResult[];
36
36
  static register(): void;
37
37
  protected readonly _themes: import("#theming/theming-controller.js").ThemingController;
38
- protected readonly _slots: import("#internals/controllers/slot.js").SlotController<"invalid" | "prefix" | "helper-text" | "[default]" | "suffix" | "value-missing" | "custom-error" | "file-selector-text" | "file-missing-text">;
38
+ protected readonly _slots: import("#internals/controllers/slot.js").SlotController<"invalid" | "prefix" | "[default]" | "suffix" | "helper-text" | "value-missing" | "custom-error" | "file-selector-text" | "file-missing-text">;
39
39
  protected readonly _formValue: import("#internals/mixins/forms/form-value.js").FormValue<FileList | null>;
40
40
  protected get __validators(): import("../../internals/validators.js").Validator<IgcFileInputComponent>[];
41
41
  private get _fileNames();
@@ -1 +1 @@
1
- {"version":3,"file":"file-input.js","sourceRoot":"","sources":["../../../src/components/file-input/file-input.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n FileInputResourceStringsEN,\n type IFileInputResourceStrings,\n} from 'igniteui-i18n-core';\nimport { html } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { ariaBindings } from '#internals/controllers/aria-projection.js';\nimport { addSlotController, setSlots } from '#internals/controllers/slot.js';\nimport { registerComponent } from '#internals/definitions/register.js';\nimport type { I18nControllerConfig } from '#internals/i18n/i18n-controller.js';\nimport type { AbstractConstructor } from '#internals/mixins/constructor.js';\nimport { EventEmitterMixin } from '#internals/mixins/event-emitter.js';\nimport { FormValueFileListTransformers } from '#internals/mixins/forms/form-transformers.js';\nimport { createFormValueState } from '#internals/mixins/forms/form-value.js';\nimport { I18nMixin } from '#internals/mixins/i18n.js';\nimport { partMap } from '#internals/part-map.js';\nimport { hasFiles } from '#internals/utils/dom.js';\nimport { bindIf } from '#internals/utils/lit.js';\nimport { addThemingController } from '#theming/theming-controller.js';\nimport IgcButtonComponent from '../button/button.js';\nimport {\n IgcInputBaseComponent,\n type IgcInputComponentEventMap,\n} from '../input/input-base.js';\nimport { styles as baseStyle } from '../input/themes/input.base.css.js';\nimport { styles as shared } from '../input/themes/shared/input.common.css.js';\nimport IgcValidationContainerComponent from '../validation-container/validation-container.js';\nimport { styles } from './themes/file-input.base.css.js';\nimport { all } from './themes/themes.js';\nimport { fileValidators } from './validators.js';\n\n/* blazorSuppress */\nexport interface IgcFileInputComponentEventMap extends Omit<\n IgcInputComponentEventMap,\n 'igcChange' | 'igcInput'\n> {\n igcCancel: CustomEvent<FileList>;\n igcChange: CustomEvent<FileList>;\n}\n\nconst Slots = setSlots(\n 'prefix',\n 'suffix',\n 'helper-text',\n 'file-selector-text',\n 'file-missing-text',\n 'value-missing',\n 'custom-error',\n 'invalid'\n);\n\nconst i18n: I18nControllerConfig<IFileInputResourceStrings> = {\n defaultEN: FileInputResourceStringsEN,\n};\n\n/* blazorSuppress */\n/**\n * @element igc-file-input\n *\n * @slot prefix - Renders content before the input.\n * @slot suffix - Renders content after input.\n * @slot helper-text - Renders content below the input.\n * @slot file-selector-text - Renders content for the browse button when input type is file.\n * @slot file-missing-text - Renders content when input type is file and no file is chosen.\n * @slot value-missing - Renders content when the required validation fails.\n * @slot custom-error - Renders content when setCustomValidity(message) is set.\n * @slot invalid - Renders content when the component is in invalid state (validity.valid = false).\n *\n * @fires igcChange - Emitted when the control's checked state changes.\n * @fires igcCancel - Emitted when the control's file picker dialog is canceled.\n *\n * @csspart container - The main wrapper that holds all main input elements.\n * @csspart input - The native input element.\n * @csspart label - The native label element.\n * @csspart file-names - The file names wrapper when input type is 'file'.\n * @csspart file-selector-button - The browse button when input type is 'file'.\n * @csspart prefix - The prefix wrapper.\n * @csspart suffix - The suffix wrapper.\n * @csspart helper-text - The helper text wrapper.\n */\nexport default class IgcFileInputComponent extends I18nMixin(\n EventEmitterMixin<\n IgcFileInputComponentEventMap,\n AbstractConstructor<IgcInputBaseComponent>\n >(IgcInputBaseComponent),\n i18n\n) {\n public static readonly tagName = 'igc-file-input';\n public static styles = [baseStyle, shared, styles];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(\n IgcFileInputComponent,\n IgcValidationContainerComponent,\n IgcButtonComponent\n );\n }\n\n //#region Internal attributes and properties\n\n protected override readonly _themes = addThemingController(this, all);\n\n protected override readonly _slots = addSlotController(this, {\n slots: Slots,\n });\n\n protected override readonly _formValue = createFormValueState(this, {\n initialValue: null,\n transformers: FormValueFileListTransformers,\n });\n\n protected override get __validators() {\n return fileValidators;\n }\n\n private get _fileNames(): string | null {\n if (!hasFiles(this)) {\n return null;\n }\n\n return Array.from(this.files)\n .map((file) => file.name || 'unnamed')\n .join(', ');\n }\n\n /**\n * Indicates whether the file picker dialog is currently active.\n * Used to manage validation on blur.\n */\n @state()\n private _filePickerActive = false;\n\n //#endregion\n\n //#region Public attributes and properties\n\n /* @tsTwoWayProperty(true, \"igcChange\", \"detail\", false) */\n /**\n * The value of the control.\n * Similar to native file input, this property is read-only and cannot be set programmatically.\n * @attr\n */\n @property()\n public set value(value: string) {\n if (value === '' && this._input) {\n this._input.value = value;\n }\n }\n\n public get value(): string {\n return this._input?.value ?? '';\n }\n\n /**\n * Whether the control allows the user to select more than one file.\n *\n * @attr\n * @default false\n */\n @property({ type: Boolean, reflect: true })\n public multiple = false;\n\n /**\n * The file types the control accepts, as a comma-separated list.\n * @attr\n */\n @property()\n public accept = '';\n\n /**\n * Whether the control should receive focus automatically.\n * @attr\n */\n @property({ type: Boolean })\n public override autofocus!: boolean;\n\n /** Returns the list of selected files. */\n public get files(): FileList {\n return this._input?.files ?? new DataTransfer().files;\n }\n\n //#endregion\n\n //#region Internal methods\n\n /**\n * A file input cannot have a default file list, so the `value` attribute\n * never contributes a default - otherwise its string would be stored as the\n * FileList default and submitted character-by-character after a form reset.\n */\n protected override _setDefaultValue(): void {\n this._formValue.defaultValue = null;\n }\n\n /**\n * Restores directly instead of through the `value` setter: the setter is\n * deliberately inert (read-only semantics) and never updates the form state.\n */\n protected override _restoreDefaultValue(): void {\n if (this._input) {\n this._input.value = '';\n }\n this._formValue.setValueAndFormState(this._formValue.defaultValue);\n this.requestUpdate();\n }\n\n //#endregion\n\n //#region Event Handlers\n\n private _handleChange(): void {\n this._filePickerActive = false;\n this._setTouchedState();\n this._formValue.setValueAndFormState(this.files);\n\n this.requestUpdate();\n this.emitEvent('igcChange', { detail: this.files });\n }\n\n private _handleCancel(): void {\n this._filePickerActive = false;\n this._setTouchedState();\n this._validate();\n\n this.emitEvent('igcCancel', { detail: this.files });\n }\n\n protected override _handleBlur(): void {\n this._filePickerActive ? this._validate() : super._handleBlur();\n }\n\n /* c8 ignore next 3 */\n protected _handleClick(): void {\n this._filePickerActive = true;\n }\n\n //#endregion\n\n protected override _renderFileParts() {\n const emptyText =\n this.placeholder ?? this.resourceStrings.file_input_placeholder;\n\n return html`\n <div part=\"file-parts\">\n <div part=\"file-selector-button\">\n <igc-button variant=\"flat\" ?disabled=${this.disabled} tabindex=\"-1\">\n <slot name=\"file-selector-text\"\n >${this.resourceStrings.file_input_upload_button}</slot\n >\n </igc-button>\n </div>\n <div part=\"file-names\">\n <span>\n ${\n this._fileNames ??\n html`<slot name=\"file-missing-text\">${emptyText}</slot>`\n }\n </span>\n </div>\n </div>\n `;\n }\n\n protected override _renderInput() {\n const hasNegativeTabIndex = this.getAttribute('tabindex') === '-1';\n\n return html`\n <input\n ${ariaBindings(this._ariaTarget.resolveBindings())}\n id=${this._inputId}\n part=${partMap(this._resolvePartNames('input'))}\n type=\"file\"\n ?disabled=${this.disabled}\n ?required=${this.required}\n ?autofocus=${this.autofocus}\n ?multiple=${this.multiple}\n tabindex=${bindIf(hasNegativeTabIndex, -1)}\n accept=${bindIf(this.accept, this.accept)}\n @click=${this._handleClick}\n @change=${this._handleChange}\n @cancel=${this._handleCancel}\n @blur=${this._handleBlur}\n />\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-file-input': IgcFileInputComponent;\n }\n}\n"]}
1
+ {"version":3,"file":"file-input.js","sourceRoot":"","sources":["../../../src/components/file-input/file-input.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n FileInputResourceStringsEN,\n type IFileInputResourceStrings,\n} from 'igniteui-i18n-core';\nimport { html } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { ariaBindings } from '#internals/controllers/aria-projection.js';\nimport { addSlotController, setSlots } from '#internals/controllers/slot.js';\nimport { registerComponent } from '#internals/definitions/register.js';\nimport type { I18nControllerConfig } from '#internals/i18n/i18n-controller.js';\nimport type { AbstractConstructor } from '#internals/mixins/constructor.js';\nimport { EventEmitterMixin } from '#internals/mixins/event-emitter.js';\nimport { FormValueFileListTransformers } from '#internals/mixins/forms/form-transformers.js';\nimport { createFormValueState } from '#internals/mixins/forms/form-value.js';\nimport { I18nMixin } from '#internals/mixins/i18n.js';\nimport { partMap } from '#internals/part-map.js';\nimport { hasFiles } from '#internals/utils/dom.js';\nimport { bindIf } from '#internals/utils/lit.js';\nimport { addThemingController } from '#theming/theming-controller.js';\nimport IgcButtonComponent from '../button/button.js';\nimport {\n IgcInputBaseComponent,\n type IgcInputComponentEventMap,\n} from '../input/input-base.js';\nimport { styles as baseStyle } from '../input/themes/input.base.css.js';\nimport { styles as shared } from '../input/themes/shared/input.common.css.js';\nimport IgcValidationContainerComponent from '../validation-container/validation-container.js';\nimport { styles } from './themes/file-input.base.css.js';\nimport { all } from './themes/themes.js';\nimport { fileValidators } from './validators.js';\n\n/* blazorSuppress */\nexport interface IgcFileInputComponentEventMap extends Omit<\n IgcInputComponentEventMap,\n 'igcChange' | 'igcInput'\n> {\n igcCancel: CustomEvent<FileList>;\n igcChange: CustomEvent<FileList>;\n}\n\nconst Slots = setSlots(\n 'prefix',\n 'suffix',\n 'helper-text',\n 'file-selector-text',\n 'file-missing-text',\n 'value-missing',\n 'custom-error',\n 'invalid'\n);\n\nconst i18n: I18nControllerConfig<IFileInputResourceStrings> = {\n defaultEN: FileInputResourceStringsEN,\n};\n\n/* blazorSuppress */\n/**\n * @element igc-file-input\n *\n * @slot prefix - Renders content before the input.\n * @slot suffix - Renders content after input.\n * @slot helper-text - Renders content below the input.\n * @slot file-selector-text - Renders content for the browse button when input type is file.\n * @slot file-missing-text - Renders content when input type is file and no file is chosen.\n * @slot value-missing - Renders content when the required validation fails.\n * @slot custom-error - Renders content when setCustomValidity(message) is set.\n * @slot invalid - Renders content when the component is in invalid state (validity.valid = false).\n *\n * @fires igcChange - Emitted when the selection of the control changes.\n * @fires igcCancel - Emitted when the control's file picker dialog is canceled.\n *\n * @csspart container - The main wrapper that holds all main input elements.\n * @csspart input - The native input element.\n * @csspart label - The native label element.\n * @csspart file-names - The file names wrapper when input type is 'file'.\n * @csspart file-selector-button - The browse button when input type is 'file'.\n * @csspart prefix - The prefix wrapper.\n * @csspart suffix - The suffix wrapper.\n * @csspart helper-text - The helper text wrapper.\n */\nexport default class IgcFileInputComponent extends I18nMixin(\n EventEmitterMixin<\n IgcFileInputComponentEventMap,\n AbstractConstructor<IgcInputBaseComponent>\n >(IgcInputBaseComponent),\n i18n\n) {\n public static readonly tagName = 'igc-file-input';\n public static styles = [baseStyle, shared, styles];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(\n IgcFileInputComponent,\n IgcValidationContainerComponent,\n IgcButtonComponent\n );\n }\n\n //#region Internal attributes and properties\n\n protected override readonly _themes = addThemingController(this, all);\n\n protected override readonly _slots = addSlotController(this, {\n slots: Slots,\n });\n\n protected override readonly _formValue = createFormValueState(this, {\n initialValue: null,\n transformers: FormValueFileListTransformers,\n });\n\n protected override get __validators() {\n return fileValidators;\n }\n\n private get _fileNames(): string | null {\n if (!hasFiles(this)) {\n return null;\n }\n\n return Array.from(this.files)\n .map((file) => file.name || 'unnamed')\n .join(', ');\n }\n\n /**\n * Indicates whether the file picker dialog is currently active.\n * Used to manage validation on blur.\n */\n @state()\n private _filePickerActive = false;\n\n //#endregion\n\n //#region Public attributes and properties\n\n /* @tsTwoWayProperty(true, \"igcChange\", \"detail\", false) */\n /**\n * The value of the control.\n * Similar to native file input, this property is read-only and cannot be set programmatically.\n * @attr\n */\n @property()\n public set value(value: string) {\n if (value === '' && this._input) {\n this._input.value = value;\n }\n }\n\n public get value(): string {\n return this._input?.value ?? '';\n }\n\n /**\n * Whether the control allows the user to select more than one file.\n *\n * @attr\n * @default false\n */\n @property({ type: Boolean, reflect: true })\n public multiple = false;\n\n /**\n * The file types the control accepts, as a comma-separated list.\n * @attr\n */\n @property()\n public accept = '';\n\n /**\n * Whether the control should receive focus automatically.\n * @attr\n */\n @property({ type: Boolean })\n public override autofocus!: boolean;\n\n /** Returns the list of selected files. */\n public get files(): FileList {\n return this._input?.files ?? new DataTransfer().files;\n }\n\n //#endregion\n\n //#region Internal methods\n\n /**\n * A file input cannot have a default file list, so the `value` attribute\n * never contributes a default - otherwise its string would be stored as the\n * FileList default and submitted character-by-character after a form reset.\n */\n protected override _setDefaultValue(): void {\n this._formValue.defaultValue = null;\n }\n\n /**\n * Restores directly instead of through the `value` setter: the setter is\n * deliberately inert (read-only semantics) and never updates the form state.\n */\n protected override _restoreDefaultValue(): void {\n if (this._input) {\n this._input.value = '';\n }\n this._formValue.setValueAndFormState(this._formValue.defaultValue);\n this.requestUpdate();\n }\n\n //#endregion\n\n //#region Event Handlers\n\n private _handleChange(): void {\n this._filePickerActive = false;\n this._setTouchedState();\n this._formValue.setValueAndFormState(this.files);\n\n this.requestUpdate();\n this.emitEvent('igcChange', { detail: this.files });\n }\n\n private _handleCancel(): void {\n this._filePickerActive = false;\n this._setTouchedState();\n this._validate();\n\n this.emitEvent('igcCancel', { detail: this.files });\n }\n\n protected override _handleBlur(): void {\n this._filePickerActive ? this._validate() : super._handleBlur();\n }\n\n /* c8 ignore next 3 */\n protected _handleClick(): void {\n this._filePickerActive = true;\n }\n\n //#endregion\n\n protected override _renderFileParts() {\n const emptyText =\n this.placeholder ?? this.resourceStrings.file_input_placeholder;\n\n return html`\n <div part=\"file-parts\">\n <div part=\"file-selector-button\">\n <igc-button variant=\"flat\" ?disabled=${this.disabled} tabindex=\"-1\">\n <slot name=\"file-selector-text\"\n >${this.resourceStrings.file_input_upload_button}</slot\n >\n </igc-button>\n </div>\n <div part=\"file-names\">\n <span>\n ${\n this._fileNames ??\n html`<slot name=\"file-missing-text\">${emptyText}</slot>`\n }\n </span>\n </div>\n </div>\n `;\n }\n\n protected override _renderInput() {\n const hasNegativeTabIndex = this.getAttribute('tabindex') === '-1';\n\n return html`\n <input\n ${ariaBindings(this._ariaTarget.resolveBindings())}\n id=${this._inputId}\n part=${partMap(this._resolvePartNames('input'))}\n type=\"file\"\n ?disabled=${this.disabled}\n ?required=${this.required}\n ?autofocus=${this.autofocus}\n ?multiple=${this.multiple}\n tabindex=${bindIf(hasNegativeTabIndex, -1)}\n accept=${bindIf(this.accept, this.accept)}\n @click=${this._handleClick}\n @change=${this._handleChange}\n @cancel=${this._handleCancel}\n @blur=${this._handleBlur}\n />\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-file-input': IgcFileInputComponent;\n }\n}\n"]}
@@ -1,3 +1,3 @@
1
1
  import { css } from 'lit';
2
- export const styles = css `:host(:is(igc-file-input)) [part~=file-parts]{display:contents}:host(:is(igc-file-input)) [part=file-selector-button]{align-content:center;grid-area:1/2}:host(:is(igc-file-input)) [part=file-selector-button] igc-button::part(base){transition:none}:host(:is(igc-file-input)) [part=file-names]{display:flex;align-items:center;max-height:var(--size);height:100%;grid-area:1/3;color:var(--file-names-foreground);background:var(--file-names-background)}:host(:is(igc-file-input)) [part=file-names]>span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}:host(:is(igc-file-input)) [part~=container]{position:relative;grid-template-columns:auto auto 1fr auto}:host(:is(igc-file-input)) [part~=input]{position:absolute;border:none;inset:0;width:100%;grid-column:2/4;-webkit-appearance:none;-moz-appearance:none;appearance:none;opacity:0}:host(:is(igc-file-input)) [part~=container],:host(:is(igc-file-input)) [part~=input]{height:var(--size)}:host(:is(igc-file-input)) [part~=input]::file-selector-button{width:100%;cursor:auto}:host(:is(igc-file-input)) [part~=suffix]{grid-area:1/4}:host(:is(igc-file-input)) [part~=filled] [part~=file-names]{color:var(--file-names-foreground--filled);background:var(--file-names-background--filled)}:host(:is(igc-file-input)) [part~=container]:focus-within [part~=file-names]{color:var(--file-names-foreground--focused);background:var(--file-names-background--focused)}:host(:is(igc-file-input)) [part~=file-selector-button] igc-button{--foreground: var(--file-selector-button-foreground);--disabled-foreground: var(--file-selector-button-foreground--disabled);--background: var(--file-selector-button-background);--disabled-background: var(--file-selector-button-background--disabled);--hover-foreground: var(--foreground);--active-foreground: var(--foreground);--hover-background: var(--background);--active-background: var(--background)}:host(:is(igc-file-input)) [part~=filled] [part~=file-selector-button] igc-button{--foreground: var(--file-selector-button-foreground--filled);--background: var(--file-selector-button-background--filled)}:host(:is(igc-file-input)) [part~=container]:focus-within [part~=file-selector-button] igc-button{--foreground: var(--file-selector-button-foreground--focused);--background: var(--file-selector-button-background--focused)}:host(:not(:disabled)) [part~=input],:host(:not(:disabled)) [part~=input]::file-selector-button{cursor:pointer}:host(:is(igc-file-input):disabled) [part~=file-names],:host(:is(igc-file-input)[disabled]) [part~=file-names]{color:var(--file-names-foreground--disabled);background:var(--file-names-background--disabled)}`;
2
+ export const styles = css `:host(:is(igc-file-input)) [part~=file-parts]{display:contents}:host(:is(igc-file-input)) [part=file-selector-button]{align-content:center;grid-area:1/2}:host(:is(igc-file-input)) [part=file-selector-button] igc-button::part(base){transition:none}:host(:is(igc-file-input)) [part=file-names]{display:flex;align-items:center;max-height:var(--size);height:100%;grid-area:1/3;color:var(--file-names-foreground);background:var(--file-names-background)}:host(:is(igc-file-input)) [part=file-names]>span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}:host(:is(igc-file-input)) [part~=container]{position:relative;grid-template-columns:auto auto 1fr auto}:host(:is(igc-file-input)) [part~=input]{position:absolute;border:none;inset:0;width:100%;grid-column:2/4;-webkit-appearance:none;-moz-appearance:none;appearance:none;opacity:0}:host(:is(igc-file-input)) [part~=container],:host(:is(igc-file-input)) [part~=input]{height:var(--size)}:host(:is(igc-file-input)) [part~=input]::file-selector-button{width:100%;cursor:auto}:host(:is(igc-file-input)) [part~=suffix]{grid-area:1/4}:host(:is(igc-file-input)) [part~=filled] [part~=file-names]{color:var(--file-names-foreground--filled);background:var(--file-names-background--filled)}:host(:is(igc-file-input)) [part~=container]:focus-within [part~=file-names]{color:var(--file-names-foreground--focused);background:var(--file-names-background--focused)}:host(:is(igc-file-input)) [part~=file-selector-button] igc-button{--foreground: var(--file-selector-button-foreground);--disabled-foreground: var(--file-selector-button-foreground--disabled);--background: var(--file-selector-button-background);--disabled-background: var(--file-selector-button-background--disabled);--hover-foreground: var(--foreground);--active-foreground: var(--foreground);--hover-background: var(--background);--active-background: var(--background)}:host(:is(igc-file-input)) [part~=filled] [part~=file-selector-button] igc-button{--foreground: var(--file-selector-button-foreground--filled);--background: var(--file-selector-button-background--filled)}:host(:is(igc-file-input)) [part~=container]:focus-within [part~=file-selector-button] igc-button{--foreground: var(--file-selector-button-foreground--focused);--background: var(--file-selector-button-background--focused)}:host(:not(:disabled)) [part~=input],:host(:not(:disabled)) [part~=input]::file-selector-button{cursor:pointer}:host(:is(igc-file-input):disabled) [part~=file-names],:host(:is(igc-file-input)[disabled]) [part~=file-names]{color:var(--file-names-foreground--disabled);background:var(--file-names-background--disabled)}@media(forced-colors: active){:host [part~=file-selector-button]{padding-inline-end:.75rem}}`;
3
3
  //# sourceMappingURL=file-input.base.css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-input.base.css.js","sourceRoot":"","sources":["../../../../src/components/file-input/themes/file-input.base.css.ts"],"names":[],"mappings":"AACE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,8jFAA8jF,CAAC","sourcesContent":["\n import { css } from 'lit';\n export const styles = css`:host(:is(igc-file-input)) [part~=file-parts]{display:contents}:host(:is(igc-file-input)) [part=file-selector-button]{align-content:center;grid-area:1/2}:host(:is(igc-file-input)) [part=file-selector-button] igc-button::part(base){transition:none}:host(:is(igc-file-input)) [part=file-names]{display:flex;align-items:center;max-height:var(--size);height:100%;grid-area:1/3;color:var(--file-names-foreground);background:var(--file-names-background)}:host(:is(igc-file-input)) [part=file-names]>span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}:host(:is(igc-file-input)) [part~=container]{position:relative;grid-template-columns:auto auto 1fr auto}:host(:is(igc-file-input)) [part~=input]{position:absolute;border:none;inset:0;width:100%;grid-column:2/4;-webkit-appearance:none;-moz-appearance:none;appearance:none;opacity:0}:host(:is(igc-file-input)) [part~=container],:host(:is(igc-file-input)) [part~=input]{height:var(--size)}:host(:is(igc-file-input)) [part~=input]::file-selector-button{width:100%;cursor:auto}:host(:is(igc-file-input)) [part~=suffix]{grid-area:1/4}:host(:is(igc-file-input)) [part~=filled] [part~=file-names]{color:var(--file-names-foreground--filled);background:var(--file-names-background--filled)}:host(:is(igc-file-input)) [part~=container]:focus-within [part~=file-names]{color:var(--file-names-foreground--focused);background:var(--file-names-background--focused)}:host(:is(igc-file-input)) [part~=file-selector-button] igc-button{--foreground: var(--file-selector-button-foreground);--disabled-foreground: var(--file-selector-button-foreground--disabled);--background: var(--file-selector-button-background);--disabled-background: var(--file-selector-button-background--disabled);--hover-foreground: var(--foreground);--active-foreground: var(--foreground);--hover-background: var(--background);--active-background: var(--background)}:host(:is(igc-file-input)) [part~=filled] [part~=file-selector-button] igc-button{--foreground: var(--file-selector-button-foreground--filled);--background: var(--file-selector-button-background--filled)}:host(:is(igc-file-input)) [part~=container]:focus-within [part~=file-selector-button] igc-button{--foreground: var(--file-selector-button-foreground--focused);--background: var(--file-selector-button-background--focused)}:host(:not(:disabled)) [part~=input],:host(:not(:disabled)) [part~=input]::file-selector-button{cursor:pointer}:host(:is(igc-file-input):disabled) [part~=file-names],:host(:is(igc-file-input)[disabled]) [part~=file-names]{color:var(--file-names-foreground--disabled);background:var(--file-names-background--disabled)}`;\n "]}
1
+ {"version":3,"file":"file-input.base.css.js","sourceRoot":"","sources":["../../../../src/components/file-input/themes/file-input.base.css.ts"],"names":[],"mappings":"AACE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,0pFAA0pF,CAAC","sourcesContent":["\n import { css } from 'lit';\n export const styles = css`:host(:is(igc-file-input)) [part~=file-parts]{display:contents}:host(:is(igc-file-input)) [part=file-selector-button]{align-content:center;grid-area:1/2}:host(:is(igc-file-input)) [part=file-selector-button] igc-button::part(base){transition:none}:host(:is(igc-file-input)) [part=file-names]{display:flex;align-items:center;max-height:var(--size);height:100%;grid-area:1/3;color:var(--file-names-foreground);background:var(--file-names-background)}:host(:is(igc-file-input)) [part=file-names]>span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}:host(:is(igc-file-input)) [part~=container]{position:relative;grid-template-columns:auto auto 1fr auto}:host(:is(igc-file-input)) [part~=input]{position:absolute;border:none;inset:0;width:100%;grid-column:2/4;-webkit-appearance:none;-moz-appearance:none;appearance:none;opacity:0}:host(:is(igc-file-input)) [part~=container],:host(:is(igc-file-input)) [part~=input]{height:var(--size)}:host(:is(igc-file-input)) [part~=input]::file-selector-button{width:100%;cursor:auto}:host(:is(igc-file-input)) [part~=suffix]{grid-area:1/4}:host(:is(igc-file-input)) [part~=filled] [part~=file-names]{color:var(--file-names-foreground--filled);background:var(--file-names-background--filled)}:host(:is(igc-file-input)) [part~=container]:focus-within [part~=file-names]{color:var(--file-names-foreground--focused);background:var(--file-names-background--focused)}:host(:is(igc-file-input)) [part~=file-selector-button] igc-button{--foreground: var(--file-selector-button-foreground);--disabled-foreground: var(--file-selector-button-foreground--disabled);--background: var(--file-selector-button-background);--disabled-background: var(--file-selector-button-background--disabled);--hover-foreground: var(--foreground);--active-foreground: var(--foreground);--hover-background: var(--background);--active-background: var(--background)}:host(:is(igc-file-input)) [part~=filled] [part~=file-selector-button] igc-button{--foreground: var(--file-selector-button-foreground--filled);--background: var(--file-selector-button-background--filled)}:host(:is(igc-file-input)) [part~=container]:focus-within [part~=file-selector-button] igc-button{--foreground: var(--file-selector-button-foreground--focused);--background: var(--file-selector-button-background--focused)}:host(:not(:disabled)) [part~=input],:host(:not(:disabled)) [part~=input]::file-selector-button{cursor:pointer}:host(:is(igc-file-input):disabled) [part~=file-names],:host(:is(igc-file-input)[disabled]) [part~=file-names]{color:var(--file-names-foreground--disabled);background:var(--file-names-background--disabled)}@media(forced-colors: active){:host [part~=file-selector-button]{padding-inline-end:.75rem}}`;\n "]}
@@ -1,3 +1,3 @@
1
1
  import { css } from 'lit';
2
- export const styles = css `:host(:focus-within){--border-color: var(--focused-border-color)}:host(:focus-within) [part~=container]{box-shadow:0 0 0 .25rem var(--focused-secondary-color)}[part~=file-selector-button] igc-button::part(base){font-size:var(--input-font);transition:border .15s ease-out;box-shadow:none;border-style:solid;border-color:var(--input-border-color);border-inline-start-width:1px;border-inline-end-width:0;border-block-start-width:1px;border-block-end-width:1px}[part~=file-names]{font-size:var(--input-font);padding-inline:max(var(--is-large, 1)*max(16px, -1 * 16px)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(12px, -1 * 12px)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(8px, -1 * 8px)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))));padding-block:max(var(--is-large, 1)*max(8px, -1 * 8px)*var(--ig-spacing-block-large, var(--ig-spacing-block, var(--ig-spacing))),var(--is-medium, 1)*max(6px, -1 * 6px)*var(--ig-spacing-block-medium, var(--ig-spacing-block, var(--ig-spacing))),var(--is-small, 1)*max(4px, -1 * 4px)*var(--ig-spacing-block-small, var(--ig-spacing-block, var(--ig-spacing))));border:1px solid var(--border-color);border-start-end-radius:var(--border-border-radius);border-end-end-radius:var(--border-border-radius);transition:box-shadow .15s ease-out,border .15s ease-out}[part*=prefixed] [part~=file-selector-button] igc-button::part(base){border-start-start-radius:0;border-end-start-radius:0}[part*=suffixed] [part~=file-names]{border-start-end-radius:0;border-end-end-radius:0}[part~=container]{transition:box-shadow .15s ease-out,border .15s ease-out}[part~=container] [part~=file-selector-button] igc-button::part(base){border-start-end-radius:0;border-end-end-radius:0;height:var(--input-height)}:host(:not([disabled]):state(ig-invalid)){--input-border-color: var(--error-secondary-color)}:host(:not([disabled]):state(ig-invalid)) [part=prefix],:host(:not([disabled]):state(ig-invalid)) [part=suffix],:host(:not([disabled]):state(ig-invalid)) [part~=file-names]{border-color:var(--error-secondary-color)}:host(:not([disabled]):state(ig-invalid)) [part~=prefixed] ::slotted([slot=prefix]){border-inline-start-color:var(--error-secondary-color)}:host(:not([disabled]):state(ig-invalid)) [part~=suffixed] ::slotted([slot=suffix]){border-inline-end-color:var(--error-secondary-color)}:host(:not([disabled]):state(ig-invalid):focus-within) [part~=container]{box-shadow:0 0 0 .25rem var(--error-shadow-color)}:host(:disabled),:host([disabled]){--input-border-color: var(--disabled-border-color)}:host(:disabled) [part~=file-names],:host([disabled]) [part~=file-names]{color:var(--file-names-foreground--disabled);border-color:var(--disabled-border-color)}:host(:disabled) [part~=file-selector-button] igc-button,:host([disabled]) [part~=file-selector-button] igc-button{--disabled-border-color: var(--input-border-color)}`;
2
+ export const styles = css `:host(:focus-within){--border-color: var(--focused-border-color)}:host(:focus-within) [part~=container]{box-shadow:0 0 0 .25rem var(--focused-secondary-color)}[part~=file-selector-button] igc-button::part(base){font-size:var(--input-font);transition:border .15s ease-out;box-shadow:none;border-style:solid;border-color:var(--input-border-color);border-inline-start-width:1px;border-inline-end-width:0;border-block-start-width:1px;border-block-end-width:1px}[part~=file-names]{font-size:var(--input-font);padding-inline:max(var(--is-large, 1)*max(16px, -1 * 16px)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(12px, -1 * 12px)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(8px, -1 * 8px)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))));padding-block:max(var(--is-large, 1)*max(8px, -1 * 8px)*var(--ig-spacing-block-large, var(--ig-spacing-block, var(--ig-spacing))),var(--is-medium, 1)*max(6px, -1 * 6px)*var(--ig-spacing-block-medium, var(--ig-spacing-block, var(--ig-spacing))),var(--is-small, 1)*max(4px, -1 * 4px)*var(--ig-spacing-block-small, var(--ig-spacing-block, var(--ig-spacing))));border:1px solid var(--border-color);border-start-end-radius:var(--border-border-radius);border-end-end-radius:var(--border-border-radius);transition:box-shadow .15s ease-out,border .15s ease-out}[part*=prefixed] [part~=file-selector-button] igc-button::part(base){border-start-start-radius:0;border-end-start-radius:0}[part*=suffixed] [part~=file-names]{border-start-end-radius:0;border-end-end-radius:0}[part~=container]{transition:box-shadow .15s ease-out,border .15s ease-out}[part~=container] [part~=file-selector-button] igc-button::part(base){border-start-end-radius:0;border-end-end-radius:0;height:var(--input-height)}:host(:not([disabled]):state(ig-invalid)){--input-border-color: var(--error-secondary-color)}:host(:not([disabled]):state(ig-invalid)) [part=prefix],:host(:not([disabled]):state(ig-invalid)) [part=suffix],:host(:not([disabled]):state(ig-invalid)) [part~=file-names]{border-color:var(--error-secondary-color)}:host(:not([disabled]):state(ig-invalid)) [part~=prefixed] ::slotted([slot=prefix]){border-inline-start-color:var(--error-secondary-color)}:host(:not([disabled]):state(ig-invalid)) [part~=suffixed] ::slotted([slot=suffix]){border-inline-end-color:var(--error-secondary-color)}:host(:not([disabled]):state(ig-invalid):focus-within) [part~=container]{box-shadow:0 0 0 .25rem var(--error-shadow-color)}:host(:disabled),:host([disabled]){--input-border-color: var(--disabled-border-color)}:host(:disabled) [part~=file-names],:host([disabled]) [part~=file-names]{color:var(--file-names-foreground--disabled);border-color:var(--disabled-border-color)}:host(:disabled) [part~=file-selector-button] igc-button,:host([disabled]) [part~=file-selector-button] igc-button{--disabled-border-color: var(--input-border-color)}@media(forced-colors: active){:host [part~=file-selector-button]{padding-inline-end:0}}`;
3
3
  //# sourceMappingURL=file-input.bootstrap.css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-input.bootstrap.css.js","sourceRoot":"","sources":["../../../../../src/components/file-input/themes/shared/file-input.bootstrap.css.ts"],"names":[],"mappings":"AACE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,i6FAAi6F,CAAC","sourcesContent":["\n import { css } from 'lit';\n export const styles = css`:host(:focus-within){--border-color: var(--focused-border-color)}:host(:focus-within) [part~=container]{box-shadow:0 0 0 .25rem var(--focused-secondary-color)}[part~=file-selector-button] igc-button::part(base){font-size:var(--input-font);transition:border .15s ease-out;box-shadow:none;border-style:solid;border-color:var(--input-border-color);border-inline-start-width:1px;border-inline-end-width:0;border-block-start-width:1px;border-block-end-width:1px}[part~=file-names]{font-size:var(--input-font);padding-inline:max(var(--is-large, 1)*max(16px, -1 * 16px)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(12px, -1 * 12px)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(8px, -1 * 8px)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))));padding-block:max(var(--is-large, 1)*max(8px, -1 * 8px)*var(--ig-spacing-block-large, var(--ig-spacing-block, var(--ig-spacing))),var(--is-medium, 1)*max(6px, -1 * 6px)*var(--ig-spacing-block-medium, var(--ig-spacing-block, var(--ig-spacing))),var(--is-small, 1)*max(4px, -1 * 4px)*var(--ig-spacing-block-small, var(--ig-spacing-block, var(--ig-spacing))));border:1px solid var(--border-color);border-start-end-radius:var(--border-border-radius);border-end-end-radius:var(--border-border-radius);transition:box-shadow .15s ease-out,border .15s ease-out}[part*=prefixed] [part~=file-selector-button] igc-button::part(base){border-start-start-radius:0;border-end-start-radius:0}[part*=suffixed] [part~=file-names]{border-start-end-radius:0;border-end-end-radius:0}[part~=container]{transition:box-shadow .15s ease-out,border .15s ease-out}[part~=container] [part~=file-selector-button] igc-button::part(base){border-start-end-radius:0;border-end-end-radius:0;height:var(--input-height)}:host(:not([disabled]):state(ig-invalid)){--input-border-color: var(--error-secondary-color)}:host(:not([disabled]):state(ig-invalid)) [part=prefix],:host(:not([disabled]):state(ig-invalid)) [part=suffix],:host(:not([disabled]):state(ig-invalid)) [part~=file-names]{border-color:var(--error-secondary-color)}:host(:not([disabled]):state(ig-invalid)) [part~=prefixed] ::slotted([slot=prefix]){border-inline-start-color:var(--error-secondary-color)}:host(:not([disabled]):state(ig-invalid)) [part~=suffixed] ::slotted([slot=suffix]){border-inline-end-color:var(--error-secondary-color)}:host(:not([disabled]):state(ig-invalid):focus-within) [part~=container]{box-shadow:0 0 0 .25rem var(--error-shadow-color)}:host(:disabled),:host([disabled]){--input-border-color: var(--disabled-border-color)}:host(:disabled) [part~=file-names],:host([disabled]) [part~=file-names]{color:var(--file-names-foreground--disabled);border-color:var(--disabled-border-color)}:host(:disabled) [part~=file-selector-button] igc-button,:host([disabled]) [part~=file-selector-button] igc-button{--disabled-border-color: var(--input-border-color)}`;\n "]}
1
+ {"version":3,"file":"file-input.bootstrap.css.js","sourceRoot":"","sources":["../../../../../src/components/file-input/themes/shared/file-input.bootstrap.css.ts"],"names":[],"mappings":"AACE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,w/FAAw/F,CAAC","sourcesContent":["\n import { css } from 'lit';\n export const styles = css`:host(:focus-within){--border-color: var(--focused-border-color)}:host(:focus-within) [part~=container]{box-shadow:0 0 0 .25rem var(--focused-secondary-color)}[part~=file-selector-button] igc-button::part(base){font-size:var(--input-font);transition:border .15s ease-out;box-shadow:none;border-style:solid;border-color:var(--input-border-color);border-inline-start-width:1px;border-inline-end-width:0;border-block-start-width:1px;border-block-end-width:1px}[part~=file-names]{font-size:var(--input-font);padding-inline:max(var(--is-large, 1)*max(16px, -1 * 16px)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(12px, -1 * 12px)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(8px, -1 * 8px)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))));padding-block:max(var(--is-large, 1)*max(8px, -1 * 8px)*var(--ig-spacing-block-large, var(--ig-spacing-block, var(--ig-spacing))),var(--is-medium, 1)*max(6px, -1 * 6px)*var(--ig-spacing-block-medium, var(--ig-spacing-block, var(--ig-spacing))),var(--is-small, 1)*max(4px, -1 * 4px)*var(--ig-spacing-block-small, var(--ig-spacing-block, var(--ig-spacing))));border:1px solid var(--border-color);border-start-end-radius:var(--border-border-radius);border-end-end-radius:var(--border-border-radius);transition:box-shadow .15s ease-out,border .15s ease-out}[part*=prefixed] [part~=file-selector-button] igc-button::part(base){border-start-start-radius:0;border-end-start-radius:0}[part*=suffixed] [part~=file-names]{border-start-end-radius:0;border-end-end-radius:0}[part~=container]{transition:box-shadow .15s ease-out,border .15s ease-out}[part~=container] [part~=file-selector-button] igc-button::part(base){border-start-end-radius:0;border-end-end-radius:0;height:var(--input-height)}:host(:not([disabled]):state(ig-invalid)){--input-border-color: var(--error-secondary-color)}:host(:not([disabled]):state(ig-invalid)) [part=prefix],:host(:not([disabled]):state(ig-invalid)) [part=suffix],:host(:not([disabled]):state(ig-invalid)) [part~=file-names]{border-color:var(--error-secondary-color)}:host(:not([disabled]):state(ig-invalid)) [part~=prefixed] ::slotted([slot=prefix]){border-inline-start-color:var(--error-secondary-color)}:host(:not([disabled]):state(ig-invalid)) [part~=suffixed] ::slotted([slot=suffix]){border-inline-end-color:var(--error-secondary-color)}:host(:not([disabled]):state(ig-invalid):focus-within) [part~=container]{box-shadow:0 0 0 .25rem var(--error-shadow-color)}:host(:disabled),:host([disabled]){--input-border-color: var(--disabled-border-color)}:host(:disabled) [part~=file-names],:host([disabled]) [part~=file-names]{color:var(--file-names-foreground--disabled);border-color:var(--disabled-border-color)}:host(:disabled) [part~=file-selector-button] igc-button,:host([disabled]) [part~=file-selector-button] igc-button{--disabled-border-color: var(--input-border-color)}@media(forced-colors: active){:host [part~=file-selector-button]{padding-inline-end:0}}`;\n "]}
@@ -96,7 +96,7 @@ export default class IgcIconComponent extends LitElement {
96
96
  protected update(props: PropertyValues<this>): void;
97
97
  protected firstUpdated(): void;
98
98
  private _getIcon;
99
- protected render(): typeof nothing | import("lit-html").TemplateResult<1>;
99
+ protected render(): import("lit-html").TemplateResult<1> | typeof nothing;
100
100
  protected registerIcon(name: string, url: string, collection?: string, stripMeta?: boolean): Promise<void>;
101
101
  protected registerIconFromText(name: string, iconText: string, collection?: string, stripMeta?: boolean): void;
102
102
  protected setIconRef(name: string, collection: string, icon: IconMeta): void;
@@ -1,15 +1,15 @@
1
1
  import type { Theme } from '#theming/types.js';
2
2
  import type { IconCallback, IconMeta, IconReferencePair, RegisterIconOptions, SvgIcon } from './registry/types.js';
3
3
  /**
4
- * Global singleton registry for managing SVG icons and their references.
4
+ * The global registry of SVG icons and their references.
5
5
  *
6
6
  * @remarks
7
- * The registry stores SVG icons in named collections, resolves aliases against
8
- * the active theme, notifies subscribers once per microtask however many icons
9
- * changed, and publishes user-set state to other browsing contexts (see
10
- * {@link IconsStateBroadcast}).
7
+ * The registry keeps the icons in named collections, resolves an alias against
8
+ * the active theme, notifies the subscribers one time per microtask however
9
+ * many icons changed, and publishes user-set state to the other browsing
10
+ * contexts. See {@link IconsStateBroadcast}.
11
11
  *
12
- * @internal Not exposed directly - use the exported functions.
12
+ * @internal Use the exported functions.
13
13
  */
14
14
  declare class IconsRegistry {
15
15
  private readonly _listeners;
@@ -1 +1 @@
1
- {"version":3,"file":"icon.registry.js","sourceRoot":"","sources":["../../../src/components/icon/icon.registry.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Theme } from '#theming/types.js';\nimport { ICON_REFERENCES } from './icon-references.js';\nimport { IconsStateBroadcast } from './icon-state.broadcast.js';\nimport { internalIcons } from './internal-icons-lib.js';\nimport { SvgIconParser } from './registry/parser.js';\nimport type {\n IconCallback,\n IconMeta,\n IconReferencePair,\n IconsCollection,\n RegisterIconOptions,\n SvgIcon,\n} from './registry/types.js';\nimport { ActionType } from './registry/types.js';\n\n/**\n * Normalizes the third argument of `registerIcon` / `registerIconFromText`,\n * which is either a collection name or a {@link RegisterIconOptions} object.\n */\nfunction resolveIconOptions(\n collectionOrOptions?: string | RegisterIconOptions\n): Required<RegisterIconOptions> {\n if (typeof collectionOrOptions === 'string') {\n return { collection: collectionOrOptions, stripMeta: false };\n }\n\n return {\n collection: collectionOrOptions?.collection ?? 'default',\n stripMeta: collectionOrOptions?.stripMeta ?? false,\n };\n}\n\n/** Returns the named collection, creating it when absent. */\nfunction collectionOf<V>(\n collections: IconsCollection<V>,\n name: string\n): Map<string, V> {\n let collection = collections.get(name);\n\n if (!collection) {\n collection = new Map();\n collections.set(name, collection);\n }\n\n return collection;\n}\n\n/**\n * Global singleton registry for managing SVG icons and their references.\n *\n * @remarks\n * The registry stores SVG icons in named collections, resolves aliases against\n * the active theme, notifies subscribers once per microtask however many icons\n * changed, and publishes user-set state to other browsing contexts (see\n * {@link IconsStateBroadcast}).\n *\n * @internal Not exposed directly - use the exported functions.\n */\nclass IconsRegistry {\n private readonly _listeners = new Set<IconCallback>();\n private readonly _references: IconsCollection<IconMeta> = new Map();\n private readonly _collections: IconsCollection<SvgIcon> = new Map([\n ['internal', internalIcons],\n ]);\n private readonly _svgIconParser = new SvgIconParser();\n private readonly _broadcast = new IconsStateBroadcast(\n this._collections,\n this._references\n );\n private _notificationScheduled = false;\n\n /**\n * Parses and stores an SVG icon, then publishes and notifies.\n *\n * @param stripMeta - See {@link RegisterIconOptions.stripMeta}.\n * @throws If the SVG text is malformed.\n */\n public register(\n name: string,\n iconText: string,\n collection = 'default',\n stripMeta = false\n ): void {\n const svgIcon = this._svgIconParser.parse(iconText, stripMeta);\n collectionOf(this._collections, collection).set(name, svgIcon);\n\n this._broadcast.send({\n actionType: ActionType.RegisterIcon,\n collections: new Map([[collection, new Map([[name, svgIcon]])]]),\n });\n\n this._notify();\n }\n\n /**\n * Subscribes a callback to registry changes. It is invoked once per\n * microtask, however many icons changed, so subscribers re-resolve their\n * own state.\n */\n public subscribe(callback: IconCallback): void {\n this._listeners.add(callback);\n }\n\n /** Unsubscribes a previously subscribed callback. */\n public unsubscribe(callback: IconCallback): void {\n this._listeners.delete(callback);\n }\n\n /**\n * Aliases an icon name to another icon.\n *\n * @remarks\n * `overwrite` stores the reference and notifies subscribers; `external`\n * marks it as user-set, which takes precedence over the built-in theme\n * aliases and is published to other browsing contexts.\n */\n public setIconRef(options: IconReferencePair): void {\n const { alias, target, overwrite } = options;\n\n if (overwrite) {\n collectionOf(this._references, alias.collection).set(alias.name, {\n name: target.name,\n collection: target.collection,\n external: target.external,\n });\n this._notify();\n }\n\n if (target.external) {\n const ref = { name: target.name, collection: target.collection };\n\n this._broadcast.send({\n actionType: ActionType.UpdateIconReference,\n references: new Map([[alias.collection, new Map([[alias.name, ref]])]]),\n });\n }\n }\n\n /**\n * Resolves a name that may be an alias to the icon it points at, for the\n * given theme. The result never carries the internal `external` flag.\n */\n public getIconRef(name: string, collection: string, theme?: Theme): IconMeta {\n // Check for any user-set reference first (external or internal)\n const storedRef = this._references.get(collection)?.get(name);\n if (storedRef) {\n return {\n name: storedRef.name,\n collection: storedRef.collection,\n };\n }\n\n // Resolve theme-based alias for the default collection\n if (collection === 'default' && theme) {\n const targets = ICON_REFERENCES.get(name);\n const target = targets?.get(theme) ?? targets?.get('default');\n\n if (target) {\n return target;\n }\n }\n\n return { name, collection };\n }\n\n /** Retrieves an icon. Resolve aliases with `getIconRef` first. */\n public get(name: string, collection = 'default'): SvgIcon | undefined {\n return this._collections.get(collection)?.get(name);\n }\n\n /**\n * Notifies subscribers, coalescing a burst of changes in the same microtask\n * into a single notification.\n */\n private _notify(): void {\n if (this._notificationScheduled) {\n return;\n }\n\n this._notificationScheduled = true;\n\n queueMicrotask(() => {\n this._notificationScheduled = false;\n\n for (const listener of this._listeners) {\n listener();\n }\n });\n }\n}\n\nconst registry = Symbol.for('igc.icons-registry.instance');\n\ntype IgcIconRegistry = typeof globalThis & {\n [registry]?: IconsRegistry;\n};\n\n/**\n * Gets the icon registry, creating it on first use. The well-known symbol on\n * `globalThis` keeps it a single instance even across multiple bundles.\n */\nexport function getIconRegistry(): IconsRegistry {\n const global = globalThis as IgcIconRegistry;\n global[registry] ??= new IconsRegistry();\n return global[registry];\n}\n\n/**\n * Registers an icon by fetching it from a URL.\n *\n * @param name - The unique name for the icon\n * @param url - The URL to fetch the SVG icon from\n * @param collection - The collection to register the icon in (default: `'default'`)\n *\n * @returns A promise that resolves when the icon is registered\n *\n * @throws If the HTTP request fails or returns a non-OK status\n */\nexport async function registerIcon(\n name: string,\n url: string,\n collection?: string\n): Promise<void>;\n\n/**\n * Registers an icon by fetching it from a URL.\n *\n * @param name - The unique name for the icon\n * @param url - The URL to fetch the SVG icon from\n * @param options - Registration options: target collection and/or `stripMeta`\n *\n * @returns A promise that resolves when the icon is registered\n *\n * @throws If the HTTP request fails or returns a non-OK status\n *\n * @remarks\n * This overload accepts a {@link RegisterIconOptions} object so you can control\n * the target collection **and** opt into SVG meta stripping in one call:\n *\n * ```typescript\n * // Strip <title>/<desc> to prevent browser-native tooltips on hover\n * await registerIcon('home', '/icons/home.svg', { stripMeta: true });\n *\n * // Or with a custom collection:\n * await registerIcon('home', '/icons/home.svg', {\n * collection: 'my-lib',\n * stripMeta: true,\n * });\n * ```\n */\nexport async function registerIcon(\n name: string,\n url: string,\n options?: RegisterIconOptions\n): Promise<void>;\n\nexport async function registerIcon(\n name: string,\n url: string,\n collectionOrOptions?: string | RegisterIconOptions\n): Promise<void> {\n const { collection, stripMeta } = resolveIconOptions(collectionOrOptions);\n const response = await fetch(url);\n\n if (response.ok) {\n const value = await response.text();\n getIconRegistry().register(name, value, collection, stripMeta);\n } else {\n throw new Error(`Icon request failed. Status: ${response.status}.`);\n }\n}\n\n/**\n * Registers an icon from SVG text content.\n *\n * @param name - The unique name for the icon\n * @param iconText - The SVG markup as a string\n * @param collection - The collection to register the icon in (default: `'default'`)\n *\n * @throws If the SVG text is malformed or doesn't contain an SVG element\n */\nexport function registerIconFromText(\n name: string,\n iconText: string,\n collection?: string\n): void;\n\n/**\n * Registers an icon from SVG text content.\n *\n * @param name - The unique name for the icon\n * @param iconText - The SVG markup as a string\n * @param options - Registration options: target collection and/or `stripMeta`\n *\n * @throws If the SVG text is malformed or doesn't contain an SVG element\n *\n * @remarks\n * This overload accepts a {@link RegisterIconOptions} object so you can control\n * the target collection **and** opt into SVG meta stripping in one call:\n *\n * ```typescript\n * const iconSvg = '<svg viewBox=\"0 0 24 24\"><title>Home</title><path d=\"...\"/></svg>';\n *\n * // Strip <title>/<desc> to prevent browser-native tooltips on hover\n * registerIconFromText('home', iconSvg, { stripMeta: true });\n *\n * // Or with a custom collection:\n * registerIconFromText('home', iconSvg, { collection: 'my-lib', stripMeta: true });\n * ```\n */\nexport function registerIconFromText(\n name: string,\n iconText: string,\n options?: RegisterIconOptions\n): void;\n\nexport function registerIconFromText(\n name: string,\n iconText: string,\n collectionOrOptions?: string | RegisterIconOptions\n): void {\n const { collection, stripMeta } = resolveIconOptions(collectionOrOptions);\n getIconRegistry().register(name, iconText, collection, stripMeta);\n}\n\n/**\n * Sets an icon reference/alias that points to another icon.\n *\n * @param name - The alias name\n * @param collection - The collection for the alias\n * @param icon - The target icon metadata (name and collection)\n *\n * @remarks\n * Icon references allow you to create aliases that point to other icons.\n * This is useful for:\n * - Creating semantic names (e.g., 'close' → 'x')\n * - Overriding default icon mappings\n * - Providing fallbacks for missing icons\n *\n * User-set references are marked as external and have higher priority than\n * theme-based aliases. They are also published to other browsing contexts.\n *\n * @example\n * ```typescript\n * // Register target icon\n * registerIconFromText('x-mark', '<svg>...</svg>');\n *\n * // Create an alias\n * setIconRef('close', 'default', {\n * name: 'x-mark',\n * collection: 'default'\n * });\n *\n * // Both work the same way:\n * // <igc-icon name=\"close\"></igc-icon>\n * // <igc-icon name=\"x-mark\"></igc-icon>\n * ```\n */\nexport function setIconRef(name: string, collection: string, icon: IconMeta) {\n getIconRegistry().setIconRef({\n alias: { name, collection },\n target: {\n name: icon.name,\n collection: icon.collection,\n external: true,\n },\n overwrite: true,\n });\n}\n"]}
1
+ {"version":3,"file":"icon.registry.js","sourceRoot":"","sources":["../../../src/components/icon/icon.registry.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Theme } from '#theming/types.js';\nimport { ICON_REFERENCES } from './icon-references.js';\nimport { IconsStateBroadcast } from './icon-state.broadcast.js';\nimport { internalIcons } from './internal-icons-lib.js';\nimport { SvgIconParser } from './registry/parser.js';\nimport type {\n IconCallback,\n IconMeta,\n IconReferencePair,\n IconsCollection,\n RegisterIconOptions,\n SvgIcon,\n} from './registry/types.js';\nimport { ActionType } from './registry/types.js';\n\n/**\n * Normalizes the third argument of `registerIcon` / `registerIconFromText`,\n * which is either a collection name or a {@link RegisterIconOptions} object.\n */\nfunction resolveIconOptions(\n collectionOrOptions?: string | RegisterIconOptions\n): Required<RegisterIconOptions> {\n if (typeof collectionOrOptions === 'string') {\n return { collection: collectionOrOptions, stripMeta: false };\n }\n\n return {\n collection: collectionOrOptions?.collection ?? 'default',\n stripMeta: collectionOrOptions?.stripMeta ?? false,\n };\n}\n\n/** Returns the named collection, creating it when absent. */\nfunction collectionOf<V>(\n collections: IconsCollection<V>,\n name: string\n): Map<string, V> {\n let collection = collections.get(name);\n\n if (!collection) {\n collection = new Map();\n collections.set(name, collection);\n }\n\n return collection;\n}\n\n/**\n * The global registry of SVG icons and their references.\n *\n * @remarks\n * The registry keeps the icons in named collections, resolves an alias against\n * the active theme, notifies the subscribers one time per microtask however\n * many icons changed, and publishes user-set state to the other browsing\n * contexts. See {@link IconsStateBroadcast}.\n *\n * @internal Use the exported functions.\n */\nclass IconsRegistry {\n private readonly _listeners = new Set<IconCallback>();\n private readonly _references: IconsCollection<IconMeta> = new Map();\n private readonly _collections: IconsCollection<SvgIcon> = new Map([\n ['internal', internalIcons],\n ]);\n private readonly _svgIconParser = new SvgIconParser();\n private readonly _broadcast = new IconsStateBroadcast(\n this._collections,\n this._references\n );\n private _notificationScheduled = false;\n\n /**\n * Parses and stores an SVG icon, then publishes and notifies.\n *\n * @param stripMeta - See {@link RegisterIconOptions.stripMeta}.\n * @throws If the SVG text is malformed.\n */\n public register(\n name: string,\n iconText: string,\n collection = 'default',\n stripMeta = false\n ): void {\n const svgIcon = this._svgIconParser.parse(iconText, stripMeta);\n collectionOf(this._collections, collection).set(name, svgIcon);\n\n this._broadcast.send({\n actionType: ActionType.RegisterIcon,\n collections: new Map([[collection, new Map([[name, svgIcon]])]]),\n });\n\n this._notify();\n }\n\n /**\n * Subscribes a callback to registry changes. It is invoked once per\n * microtask, however many icons changed, so subscribers re-resolve their\n * own state.\n */\n public subscribe(callback: IconCallback): void {\n this._listeners.add(callback);\n }\n\n /** Unsubscribes a previously subscribed callback. */\n public unsubscribe(callback: IconCallback): void {\n this._listeners.delete(callback);\n }\n\n /**\n * Aliases an icon name to another icon.\n *\n * @remarks\n * `overwrite` stores the reference and notifies subscribers; `external`\n * marks it as user-set, which takes precedence over the built-in theme\n * aliases and is published to other browsing contexts.\n */\n public setIconRef(options: IconReferencePair): void {\n const { alias, target, overwrite } = options;\n\n if (overwrite) {\n collectionOf(this._references, alias.collection).set(alias.name, {\n name: target.name,\n collection: target.collection,\n external: target.external,\n });\n this._notify();\n }\n\n if (target.external) {\n const ref = { name: target.name, collection: target.collection };\n\n this._broadcast.send({\n actionType: ActionType.UpdateIconReference,\n references: new Map([[alias.collection, new Map([[alias.name, ref]])]]),\n });\n }\n }\n\n /**\n * Resolves a name that may be an alias to the icon it points at, for the\n * given theme. The result never carries the internal `external` flag.\n */\n public getIconRef(name: string, collection: string, theme?: Theme): IconMeta {\n // Check for any user-set reference first (external or internal)\n const storedRef = this._references.get(collection)?.get(name);\n if (storedRef) {\n return {\n name: storedRef.name,\n collection: storedRef.collection,\n };\n }\n\n // Resolve theme-based alias for the default collection\n if (collection === 'default' && theme) {\n const targets = ICON_REFERENCES.get(name);\n const target = targets?.get(theme) ?? targets?.get('default');\n\n if (target) {\n return target;\n }\n }\n\n return { name, collection };\n }\n\n /** Retrieves an icon. Resolve aliases with `getIconRef` first. */\n public get(name: string, collection = 'default'): SvgIcon | undefined {\n return this._collections.get(collection)?.get(name);\n }\n\n /**\n * Notifies subscribers, coalescing a burst of changes in the same microtask\n * into a single notification.\n */\n private _notify(): void {\n if (this._notificationScheduled) {\n return;\n }\n\n this._notificationScheduled = true;\n\n queueMicrotask(() => {\n this._notificationScheduled = false;\n\n for (const listener of this._listeners) {\n listener();\n }\n });\n }\n}\n\nconst registry = Symbol.for('igc.icons-registry.instance');\n\ntype IgcIconRegistry = typeof globalThis & {\n [registry]?: IconsRegistry;\n};\n\n/**\n * Gets the icon registry, creating it on first use. The well-known symbol on\n * `globalThis` keeps it a single instance even across multiple bundles.\n */\nexport function getIconRegistry(): IconsRegistry {\n const global = globalThis as IgcIconRegistry;\n global[registry] ??= new IconsRegistry();\n return global[registry];\n}\n\n/**\n * Registers an icon by fetching it from a URL.\n *\n * @param name - The unique name for the icon\n * @param url - The URL to fetch the SVG icon from\n * @param collection - The collection to register the icon in (default: `'default'`)\n *\n * @returns A promise that resolves when the icon is registered\n *\n * @throws If the HTTP request fails or returns a non-OK status\n */\nexport async function registerIcon(\n name: string,\n url: string,\n collection?: string\n): Promise<void>;\n\n/**\n * Registers an icon by fetching it from a URL.\n *\n * @param name - The unique name for the icon\n * @param url - The URL to fetch the SVG icon from\n * @param options - Registration options: target collection and/or `stripMeta`\n *\n * @returns A promise that resolves when the icon is registered\n *\n * @throws If the HTTP request fails or returns a non-OK status\n *\n * @remarks\n * This overload accepts a {@link RegisterIconOptions} object so you can control\n * the target collection **and** opt into SVG meta stripping in one call:\n *\n * ```typescript\n * // Strip <title>/<desc> to prevent browser-native tooltips on hover\n * await registerIcon('home', '/icons/home.svg', { stripMeta: true });\n *\n * // Or with a custom collection:\n * await registerIcon('home', '/icons/home.svg', {\n * collection: 'my-lib',\n * stripMeta: true,\n * });\n * ```\n */\nexport async function registerIcon(\n name: string,\n url: string,\n options?: RegisterIconOptions\n): Promise<void>;\n\nexport async function registerIcon(\n name: string,\n url: string,\n collectionOrOptions?: string | RegisterIconOptions\n): Promise<void> {\n const { collection, stripMeta } = resolveIconOptions(collectionOrOptions);\n const response = await fetch(url);\n\n if (response.ok) {\n const value = await response.text();\n getIconRegistry().register(name, value, collection, stripMeta);\n } else {\n throw new Error(`Icon request failed. Status: ${response.status}.`);\n }\n}\n\n/**\n * Registers an icon from SVG text content.\n *\n * @param name - The unique name for the icon\n * @param iconText - The SVG markup as a string\n * @param collection - The collection to register the icon in (default: `'default'`)\n *\n * @throws If the SVG text is malformed or doesn't contain an SVG element\n */\nexport function registerIconFromText(\n name: string,\n iconText: string,\n collection?: string\n): void;\n\n/**\n * Registers an icon from SVG text content.\n *\n * @param name - The unique name for the icon\n * @param iconText - The SVG markup as a string\n * @param options - Registration options: target collection and/or `stripMeta`\n *\n * @throws If the SVG text is malformed or doesn't contain an SVG element\n *\n * @remarks\n * This overload accepts a {@link RegisterIconOptions} object so you can control\n * the target collection **and** opt into SVG meta stripping in one call:\n *\n * ```typescript\n * const iconSvg = '<svg viewBox=\"0 0 24 24\"><title>Home</title><path d=\"...\"/></svg>';\n *\n * // Strip <title>/<desc> to prevent browser-native tooltips on hover\n * registerIconFromText('home', iconSvg, { stripMeta: true });\n *\n * // Or with a custom collection:\n * registerIconFromText('home', iconSvg, { collection: 'my-lib', stripMeta: true });\n * ```\n */\nexport function registerIconFromText(\n name: string,\n iconText: string,\n options?: RegisterIconOptions\n): void;\n\nexport function registerIconFromText(\n name: string,\n iconText: string,\n collectionOrOptions?: string | RegisterIconOptions\n): void {\n const { collection, stripMeta } = resolveIconOptions(collectionOrOptions);\n getIconRegistry().register(name, iconText, collection, stripMeta);\n}\n\n/**\n * Sets an icon reference/alias that points to another icon.\n *\n * @param name - The alias name\n * @param collection - The collection for the alias\n * @param icon - The target icon metadata (name and collection)\n *\n * @remarks\n * Icon references allow you to create aliases that point to other icons.\n * This is useful for:\n * - Creating semantic names (e.g., 'close' → 'x')\n * - Overriding default icon mappings\n * - Providing fallbacks for missing icons\n *\n * User-set references are marked as external and have higher priority than\n * theme-based aliases. They are also published to other browsing contexts.\n *\n * @example\n * ```typescript\n * // Register target icon\n * registerIconFromText('x-mark', '<svg>...</svg>');\n *\n * // Create an alias\n * setIconRef('close', 'default', {\n * name: 'x-mark',\n * collection: 'default'\n * });\n *\n * // Both work the same way:\n * // <igc-icon name=\"close\"></igc-icon>\n * // <igc-icon name=\"x-mark\"></igc-icon>\n * ```\n */\nexport function setIconRef(name: string, collection: string, icon: IconMeta) {\n getIconRegistry().setIconRef({\n alias: { name, collection },\n target: {\n name: icon.name,\n collection: icon.collection,\n external: true,\n },\n overwrite: true,\n });\n}\n"]}
@@ -10,7 +10,7 @@ import { IgcInputBaseComponent } from './input-base.js';
10
10
  * @slot suffix - Renders content after input.
11
11
  * @slot helper-text - Renders content below the input.
12
12
  * @slot value-missing - Renders content when the required validation fails.
13
- * @slot type-mismatch - Renders content when the a type url/email input pattern validation fails.
13
+ * @slot type-mismatch - Renders content when the url/email type validation fails.
14
14
  * @slot pattern-mismatch - Renders content when the pattern validation fails.
15
15
  * @slot too-long - Renders content when the maxlength validation fails.
16
16
  * @slot too-short - Renders content when the minlength validation fails.
@@ -21,7 +21,7 @@ import { IgcInputBaseComponent } from './input-base.js';
21
21
  * @slot invalid - Renders content when the component is in invalid state (validity.valid = false).
22
22
  *
23
23
  * @fires igcInput - Emitted when the control input receives user input.
24
- * @fires igcChange - Emitted when the control's checked state changes.
24
+ * @fires igcChange - Emitted when the value of the control is committed.
25
25
  *
26
26
  * @csspart container - The main wrapper that holds all main input elements.
27
27
  * @csspart input - The native input element.
@@ -37,7 +37,7 @@ export default class IgcInputComponent extends IgcInputBaseComponent {
37
37
  private static readonly _revalidate;
38
38
  static register(): void;
39
39
  protected readonly _themes: import("#theming/theming-controller.js").ThemingController;
40
- protected readonly _slots: import("#internals/controllers/slot.js").SlotController<"invalid" | "prefix" | "helper-text" | "[default]" | "suffix" | "value-missing" | "too-long" | "too-short" | "custom-error" | "range-overflow" | "range-underflow" | "type-mismatch" | "pattern-mismatch" | "step-mismatch">;
40
+ protected readonly _slots: import("#internals/controllers/slot.js").SlotController<"invalid" | "prefix" | "[default]" | "suffix" | "helper-text" | "value-missing" | "too-long" | "too-short" | "custom-error" | "range-overflow" | "range-underflow" | "type-mismatch" | "pattern-mismatch" | "step-mismatch">;
41
41
  protected readonly _formValue: import("#internals/mixins/forms/form-value.js").FormValue<string>;
42
42
  protected get __validators(): import("../../internals/validators.js").Validator<IgcInputComponent>[];
43
43
  /**