igniteui-webcomponents 6.3.4 → 6.4.0-alpha.1

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 (313) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/README.md +3 -0
  3. package/animations/player.d.ts +37 -11
  4. package/animations/player.js +32 -41
  5. package/animations/player.js.map +1 -1
  6. package/components/accordion/accordion.d.ts +18 -12
  7. package/components/accordion/accordion.js +82 -65
  8. package/components/accordion/accordion.js.map +1 -1
  9. package/components/badge/badge.d.ts +8 -0
  10. package/components/badge/badge.js +16 -1
  11. package/components/badge/badge.js.map +1 -1
  12. package/components/badge/themes/badge.base.css.js +1 -1
  13. package/components/badge/themes/badge.base.css.js.map +1 -1
  14. package/components/badge/themes/dark/badge.bootstrap.css.js +1 -1
  15. package/components/badge/themes/dark/badge.bootstrap.css.js.map +1 -1
  16. package/components/badge/themes/dark/badge.fluent.css.js +1 -1
  17. package/components/badge/themes/dark/badge.fluent.css.js.map +1 -1
  18. package/components/badge/themes/dark/badge.indigo.css.js +1 -1
  19. package/components/badge/themes/dark/badge.indigo.css.js.map +1 -1
  20. package/components/badge/themes/dark/badge.material.css.js +1 -1
  21. package/components/badge/themes/dark/badge.material.css.js.map +1 -1
  22. package/components/badge/themes/light/badge.bootstrap.css.js +1 -1
  23. package/components/badge/themes/light/badge.bootstrap.css.js.map +1 -1
  24. package/components/badge/themes/light/badge.fluent.css.js +1 -1
  25. package/components/badge/themes/light/badge.fluent.css.js.map +1 -1
  26. package/components/badge/themes/light/badge.indigo.css.js +1 -1
  27. package/components/badge/themes/light/badge.indigo.css.js.map +1 -1
  28. package/components/badge/themes/light/badge.material.css.js +1 -1
  29. package/components/badge/themes/light/badge.material.css.js.map +1 -1
  30. package/components/badge/themes/light/badge.shared.css.js +1 -1
  31. package/components/badge/themes/light/badge.shared.css.js.map +1 -1
  32. package/components/badge/themes/shared/badge.bootstrap.css.js +1 -1
  33. package/components/badge/themes/shared/badge.bootstrap.css.js.map +1 -1
  34. package/components/badge/themes/shared/badge.common.css.js +1 -1
  35. package/components/badge/themes/shared/badge.common.css.js.map +1 -1
  36. package/components/badge/themes/shared/badge.fluent.css.d.ts +1 -0
  37. package/components/badge/themes/shared/badge.fluent.css.js +3 -0
  38. package/components/badge/themes/shared/badge.fluent.css.js.map +1 -0
  39. package/components/badge/themes/shared/badge.indigo.css.js +1 -1
  40. package/components/badge/themes/shared/badge.indigo.css.js.map +1 -1
  41. package/components/badge/themes/shared/badge.material.css.d.ts +1 -0
  42. package/components/badge/themes/shared/badge.material.css.js +3 -0
  43. package/components/badge/themes/shared/badge.material.css.js.map +1 -0
  44. package/components/badge/themes/themes.js +6 -4
  45. package/components/badge/themes/themes.js.map +1 -1
  46. package/components/banner/banner.d.ts +2 -3
  47. package/components/banner/banner.js +13 -19
  48. package/components/banner/banner.js.map +1 -1
  49. package/components/calendar/base.d.ts +9 -1
  50. package/components/calendar/base.js +21 -2
  51. package/components/calendar/base.js.map +1 -1
  52. package/components/calendar/calendar.d.ts +0 -4
  53. package/components/calendar/calendar.js +0 -5
  54. package/components/calendar/calendar.js.map +1 -1
  55. package/components/calendar/days-view/days-view.d.ts +0 -2
  56. package/components/calendar/days-view/days-view.js +0 -5
  57. package/components/calendar/days-view/days-view.js.map +1 -1
  58. package/components/carousel/carousel.d.ts +19 -2
  59. package/components/carousel/carousel.js +41 -6
  60. package/components/carousel/carousel.js.map +1 -1
  61. package/components/carousel/themes/dark/carousel.indigo.css.js +1 -1
  62. package/components/carousel/themes/dark/carousel.indigo.css.js.map +1 -1
  63. package/components/carousel/themes/light/carousel.indigo.css.js +1 -1
  64. package/components/carousel/themes/light/carousel.indigo.css.js.map +1 -1
  65. package/components/carousel/themes/shared/carousel.common.css.js +1 -1
  66. package/components/carousel/themes/shared/carousel.common.css.js.map +1 -1
  67. package/components/carousel/themes/shared/carousel.indigo.css.js +1 -1
  68. package/components/carousel/themes/shared/carousel.indigo.css.js.map +1 -1
  69. package/components/carousel/themes/shared/indicator-container/indicator-container.common.css.js +1 -1
  70. package/components/carousel/themes/shared/indicator-container/indicator-container.common.css.js.map +1 -1
  71. package/components/chat/chat-input.d.ts +5 -0
  72. package/components/chat/chat-input.js +35 -6
  73. package/components/chat/chat-input.js.map +1 -1
  74. package/components/chat/chat-message.js +2 -2
  75. package/components/chat/chat-message.js.map +1 -1
  76. package/components/chat/chat-state.d.ts +3 -4
  77. package/components/chat/chat-state.js +4 -23
  78. package/components/chat/chat-state.js.map +1 -1
  79. package/components/chat/chat.d.ts +2 -1
  80. package/components/chat/chat.js +26 -22
  81. package/components/chat/chat.js.map +1 -1
  82. package/components/chat/themes/chat.base.css.js +1 -1
  83. package/components/chat/themes/chat.base.css.js.map +1 -1
  84. package/components/chat/types.d.ts +2 -0
  85. package/components/chat/types.js.map +1 -1
  86. package/components/chat/utils.d.ts +2 -2
  87. package/components/chat/utils.js +6 -3
  88. package/components/chat/utils.js.map +1 -1
  89. package/components/checkbox/themes/checkbox.base.css.js +1 -1
  90. package/components/checkbox/themes/checkbox.base.css.js.map +1 -1
  91. package/components/checkbox/themes/dark/checkbox/checkbox.fluent.css.js +1 -1
  92. package/components/checkbox/themes/dark/checkbox/checkbox.fluent.css.js.map +1 -1
  93. package/components/checkbox/themes/light/checkbox/checkbox.fluent.css.js +1 -1
  94. package/components/checkbox/themes/light/checkbox/checkbox.fluent.css.js.map +1 -1
  95. package/components/checkbox/themes/light/checkbox/checkbox.shared.css.js +1 -1
  96. package/components/checkbox/themes/light/checkbox/checkbox.shared.css.js.map +1 -1
  97. package/components/checkbox/themes/shared/checkbox/checkbox.bootstrap.css.js +1 -1
  98. package/components/checkbox/themes/shared/checkbox/checkbox.bootstrap.css.js.map +1 -1
  99. package/components/checkbox/themes/shared/checkbox/checkbox.common.css.js +1 -1
  100. package/components/checkbox/themes/shared/checkbox/checkbox.common.css.js.map +1 -1
  101. package/components/checkbox/themes/shared/checkbox/checkbox.fluent.css.js +1 -1
  102. package/components/checkbox/themes/shared/checkbox/checkbox.fluent.css.js.map +1 -1
  103. package/components/checkbox/themes/shared/checkbox/checkbox.indigo.css.js +1 -1
  104. package/components/checkbox/themes/shared/checkbox/checkbox.indigo.css.js.map +1 -1
  105. package/components/checkbox/themes/shared/checkbox/checkbox.material.css.js +1 -1
  106. package/components/checkbox/themes/shared/checkbox/checkbox.material.css.js.map +1 -1
  107. package/components/chip/chip.d.ts +13 -0
  108. package/components/chip/chip.js +29 -2
  109. package/components/chip/chip.js.map +1 -1
  110. package/components/chip/themes/chip.base.css.js +1 -1
  111. package/components/chip/themes/chip.base.css.js.map +1 -1
  112. package/components/chip/themes/shared/chip.bootstrap.css.js +1 -1
  113. package/components/chip/themes/shared/chip.bootstrap.css.js.map +1 -1
  114. package/components/chip/themes/shared/chip.common.css.js +1 -1
  115. package/components/chip/themes/shared/chip.common.css.js.map +1 -1
  116. package/components/chip/themes/shared/chip.fluent.css.js +1 -1
  117. package/components/chip/themes/shared/chip.fluent.css.js.map +1 -1
  118. package/components/chip/themes/shared/chip.indigo.css.js +1 -1
  119. package/components/chip/themes/shared/chip.indigo.css.js.map +1 -1
  120. package/components/combo/combo.d.ts +33 -10
  121. package/components/combo/combo.js +72 -53
  122. package/components/combo/combo.js.map +1 -1
  123. package/components/combo/controllers/navigation.d.ts +39 -43
  124. package/components/combo/controllers/navigation.js +153 -175
  125. package/components/combo/controllers/navigation.js.map +1 -1
  126. package/components/combo/operations/group.d.ts +0 -1
  127. package/components/combo/operations/group.js +19 -23
  128. package/components/combo/operations/group.js.map +1 -1
  129. package/components/combo/themes/combo-header.base.css.js +1 -1
  130. package/components/combo/themes/combo-header.base.css.js.map +1 -1
  131. package/components/combo/themes/combo-item.base.css.js +1 -1
  132. package/components/combo/themes/combo-item.base.css.js.map +1 -1
  133. package/components/combo/themes/combo.base.css.js +1 -1
  134. package/components/combo/themes/combo.base.css.js.map +1 -1
  135. package/components/combo/themes/shared/combo.bootstrap.css.js +1 -1
  136. package/components/combo/themes/shared/combo.bootstrap.css.js.map +1 -1
  137. package/components/combo/themes/shared/combo.fluent.css.js +1 -1
  138. package/components/combo/themes/shared/combo.fluent.css.js.map +1 -1
  139. package/components/combo/themes/shared/combo.indigo.css.js +1 -1
  140. package/components/combo/themes/shared/combo.indigo.css.js.map +1 -1
  141. package/components/combo/themes/shared/combo.material.css.js +1 -1
  142. package/components/combo/themes/shared/combo.material.css.js.map +1 -1
  143. package/components/combo/validators.js +2 -2
  144. package/components/combo/validators.js.map +1 -1
  145. package/components/common/i18n/EN/calendar.resources.js +4 -0
  146. package/components/common/i18n/EN/calendar.resources.js.map +1 -0
  147. package/components/common/i18n/EN/chat.resources.js.map +1 -0
  148. package/components/common/i18n/EN/date-range-picker.resources.js +8 -0
  149. package/components/common/i18n/EN/date-range-picker.resources.js.map +1 -0
  150. package/components/common/i18n/i18n-controller.d.ts +74 -0
  151. package/components/common/i18n/i18n-controller.js +89 -0
  152. package/components/common/i18n/i18n-controller.js.map +1 -0
  153. package/components/common/i18n/utils.d.ts +19 -0
  154. package/components/common/i18n/utils.js +100 -0
  155. package/components/common/i18n/utils.js.map +1 -0
  156. package/components/common/mixins/forms/associated.js +23 -3
  157. package/components/common/mixins/forms/associated.js.map +1 -1
  158. package/components/common/util.d.ts +0 -1
  159. package/components/common/util.js +0 -15
  160. package/components/common/util.js.map +1 -1
  161. package/components/common/validators.d.ts +4 -2
  162. package/components/common/validators.js +19 -13
  163. package/components/common/validators.js.map +1 -1
  164. package/components/date-picker/date-picker.d.ts +13 -8
  165. package/components/date-picker/date-picker.js +20 -6
  166. package/components/date-picker/date-picker.js.map +1 -1
  167. package/components/date-picker/themes/dark/date-picker.bootstrap.css.js +1 -1
  168. package/components/date-picker/themes/dark/date-picker.bootstrap.css.js.map +1 -1
  169. package/components/date-picker/themes/date-picker.base.css.js +1 -1
  170. package/components/date-picker/themes/date-picker.base.css.js.map +1 -1
  171. package/components/date-picker/themes/light/date-picker.bootstrap.css.js +1 -1
  172. package/components/date-picker/themes/light/date-picker.bootstrap.css.js.map +1 -1
  173. package/components/date-picker/themes/shared/date-picker.bootstrap.css.js +1 -1
  174. package/components/date-picker/themes/shared/date-picker.bootstrap.css.js.map +1 -1
  175. package/components/date-picker/themes/shared/date-picker.common.css.js +1 -1
  176. package/components/date-picker/themes/shared/date-picker.common.css.js.map +1 -1
  177. package/components/date-picker/themes/shared/date-picker.fluent.css.js +1 -1
  178. package/components/date-picker/themes/shared/date-picker.fluent.css.js.map +1 -1
  179. package/components/date-picker/themes/shared/date-picker.indigo.css.js +1 -1
  180. package/components/date-picker/themes/shared/date-picker.indigo.css.js.map +1 -1
  181. package/components/date-picker/themes/shared/date-picker.material.css.js +1 -1
  182. package/components/date-picker/themes/shared/date-picker.material.css.js.map +1 -1
  183. package/components/date-picker/validators.js +3 -2
  184. package/components/date-picker/validators.js.map +1 -1
  185. package/components/date-range-picker/date-range-picker.base.css.js +1 -1
  186. package/components/date-range-picker/date-range-picker.base.css.js.map +1 -1
  187. package/components/date-range-picker/date-range-picker.d.ts +10 -2
  188. package/components/date-range-picker/date-range-picker.js +19 -5
  189. package/components/date-range-picker/date-range-picker.js.map +1 -1
  190. package/components/date-range-picker/predefined-ranges-area.d.ts +4 -2
  191. package/components/date-range-picker/predefined-ranges-area.js +12 -3
  192. package/components/date-range-picker/predefined-ranges-area.js.map +1 -1
  193. package/components/date-range-picker/themes/dark/date-range-picker.bootstrap.css.js +1 -1
  194. package/components/date-range-picker/themes/dark/date-range-picker.bootstrap.css.js.map +1 -1
  195. package/components/date-range-picker/themes/dark/date-range-picker.fluent.css.js +1 -1
  196. package/components/date-range-picker/themes/dark/date-range-picker.fluent.css.js.map +1 -1
  197. package/components/date-range-picker/themes/dark/date-range-picker.indigo.css.js +1 -1
  198. package/components/date-range-picker/themes/dark/date-range-picker.indigo.css.js.map +1 -1
  199. package/components/date-range-picker/themes/dark/date-range-picker.material.css.js +1 -1
  200. package/components/date-range-picker/themes/dark/date-range-picker.material.css.js.map +1 -1
  201. package/components/date-range-picker/themes/light/date-range-picker.bootstrap.css.js +1 -1
  202. package/components/date-range-picker/themes/light/date-range-picker.bootstrap.css.js.map +1 -1
  203. package/components/date-range-picker/themes/light/date-range-picker.fluent.css.js +1 -1
  204. package/components/date-range-picker/themes/light/date-range-picker.fluent.css.js.map +1 -1
  205. package/components/date-range-picker/themes/light/date-range-picker.indigo.css.js +1 -1
  206. package/components/date-range-picker/themes/light/date-range-picker.indigo.css.js.map +1 -1
  207. package/components/date-range-picker/themes/light/date-range-picker.material.css.js +1 -1
  208. package/components/date-range-picker/themes/light/date-range-picker.material.css.js.map +1 -1
  209. package/components/date-range-picker/themes/light/date-range-picker.shared.css.js +1 -1
  210. package/components/date-range-picker/themes/light/date-range-picker.shared.css.js.map +1 -1
  211. package/components/date-range-picker/themes/shared/date-range-picker.bootstrap.css.js +1 -1
  212. package/components/date-range-picker/themes/shared/date-range-picker.bootstrap.css.js.map +1 -1
  213. package/components/date-range-picker/themes/shared/date-range-picker.common.css.js +1 -1
  214. package/components/date-range-picker/themes/shared/date-range-picker.common.css.js.map +1 -1
  215. package/components/date-range-picker/themes/shared/date-range-picker.fluent.css.js +1 -1
  216. package/components/date-range-picker/themes/shared/date-range-picker.fluent.css.js.map +1 -1
  217. package/components/date-range-picker/themes/shared/date-range-picker.indigo.css.js +1 -1
  218. package/components/date-range-picker/themes/shared/date-range-picker.indigo.css.js.map +1 -1
  219. package/components/date-range-picker/themes/shared/date-range-picker.material.css.js +1 -1
  220. package/components/date-range-picker/themes/shared/date-range-picker.material.css.js.map +1 -1
  221. package/components/date-range-picker/validators.js +8 -5
  222. package/components/date-range-picker/validators.js.map +1 -1
  223. package/components/date-time-input/date-time-input.d.ts +5 -3
  224. package/components/date-time-input/date-time-input.js +11 -2
  225. package/components/date-time-input/date-time-input.js.map +1 -1
  226. package/components/dialog/themes/shared/dialog.common.css.js +1 -1
  227. package/components/dialog/themes/shared/dialog.common.css.js.map +1 -1
  228. package/components/expansion-panel/expansion-panel.d.ts +6 -5
  229. package/components/expansion-panel/expansion-panel.js +33 -42
  230. package/components/expansion-panel/expansion-panel.js.map +1 -1
  231. package/components/input/themes/dark/input.bootstrap.css.js +1 -1
  232. package/components/input/themes/dark/input.bootstrap.css.js.map +1 -1
  233. package/components/input/themes/input.base.css.js +1 -1
  234. package/components/input/themes/input.base.css.js.map +1 -1
  235. package/components/input/themes/light/input.bootstrap.css.js +1 -1
  236. package/components/input/themes/light/input.bootstrap.css.js.map +1 -1
  237. package/components/input/themes/shared/input.bootstrap.css.js +1 -1
  238. package/components/input/themes/shared/input.bootstrap.css.js.map +1 -1
  239. package/components/input/themes/shared/input.common.css.js +1 -1
  240. package/components/input/themes/shared/input.common.css.js.map +1 -1
  241. package/components/input/themes/shared/input.fluent.css.js +1 -1
  242. package/components/input/themes/shared/input.fluent.css.js.map +1 -1
  243. package/components/input/themes/shared/input.indigo.css.js +1 -1
  244. package/components/input/themes/shared/input.indigo.css.js.map +1 -1
  245. package/components/input/themes/shared/input.material.css.js +1 -1
  246. package/components/input/themes/shared/input.material.css.js.map +1 -1
  247. package/components/input/validators.js +3 -3
  248. package/components/input/validators.js.map +1 -1
  249. package/components/mask-input/validators.js +2 -2
  250. package/components/mask-input/validators.js.map +1 -1
  251. package/components/radio/validators.js +2 -2
  252. package/components/radio/validators.js.map +1 -1
  253. package/components/select/themes/select.base.css.js +1 -1
  254. package/components/select/themes/select.base.css.js.map +1 -1
  255. package/components/select/themes/shared/select.fluent.css.js +1 -1
  256. package/components/select/themes/shared/select.fluent.css.js.map +1 -1
  257. package/components/select/themes/shared/select.indigo.css.js +1 -1
  258. package/components/select/themes/shared/select.indigo.css.js.map +1 -1
  259. package/components/select/themes/shared/select.material.css.js +1 -1
  260. package/components/select/themes/shared/select.material.css.js.map +1 -1
  261. package/components/stepper/step.d.ts +1 -1
  262. package/components/stepper/step.js +4 -6
  263. package/components/stepper/step.js.map +1 -1
  264. package/components/textarea/textarea.d.ts +1 -1
  265. package/components/textarea/textarea.js +1 -1
  266. package/components/textarea/textarea.js.map +1 -1
  267. package/components/textarea/themes/dark/textarea.bootstrap.css.js +1 -1
  268. package/components/textarea/themes/dark/textarea.bootstrap.css.js.map +1 -1
  269. package/components/textarea/themes/light/textarea.bootstrap.css.js +1 -1
  270. package/components/textarea/themes/light/textarea.bootstrap.css.js.map +1 -1
  271. package/components/textarea/themes/shared/textarea.bootstrap.css.js +1 -1
  272. package/components/textarea/themes/shared/textarea.bootstrap.css.js.map +1 -1
  273. package/components/textarea/themes/shared/textarea.common.css.js +1 -1
  274. package/components/textarea/themes/shared/textarea.common.css.js.map +1 -1
  275. package/components/textarea/themes/shared/textarea.fluent.css.js +1 -1
  276. package/components/textarea/themes/shared/textarea.fluent.css.js.map +1 -1
  277. package/components/textarea/themes/shared/textarea.indigo.css.js +1 -1
  278. package/components/textarea/themes/shared/textarea.indigo.css.js.map +1 -1
  279. package/components/textarea/themes/shared/textarea.material.css.js +1 -1
  280. package/components/textarea/themes/shared/textarea.material.css.js.map +1 -1
  281. package/components/textarea/themes/textarea.base.css.js +1 -1
  282. package/components/textarea/themes/textarea.base.css.js.map +1 -1
  283. package/components/tile-manager/tile.js.map +1 -1
  284. package/components/tooltip/controller.d.ts +1 -0
  285. package/components/tooltip/controller.js +9 -0
  286. package/components/tooltip/controller.js.map +1 -1
  287. package/components/tooltip/themes/tooltip.base.css.js +1 -1
  288. package/components/tooltip/themes/tooltip.base.css.js.map +1 -1
  289. package/components/tooltip/tooltip.d.ts +2 -0
  290. package/components/tooltip/tooltip.js +10 -2
  291. package/components/tooltip/tooltip.js.map +1 -1
  292. package/components/tree/tree-item.js +1 -5
  293. package/components/tree/tree-item.js.map +1 -1
  294. package/custom-elements.json +2000 -985
  295. package/igniteui-webcomponents.css-data.json +1 -1
  296. package/igniteui-webcomponents.html-data.json +1 -1
  297. package/index.d.ts +3 -2
  298. package/index.js +3 -2
  299. package/index.js.map +1 -1
  300. package/package.json +1 -1
  301. package/web-types.json +2 -2
  302. package/components/common/i18n/calendar.resources.js +0 -17
  303. package/components/common/i18n/calendar.resources.js.map +0 -1
  304. package/components/common/i18n/chat.resources.js.map +0 -1
  305. package/components/common/i18n/date-range-picker.resources.js +0 -12
  306. package/components/common/i18n/date-range-picker.resources.js.map +0 -1
  307. package/components/common/localization/validation-en.d.ts +0 -13
  308. package/components/common/localization/validation-en.js +0 -13
  309. package/components/common/localization/validation-en.js.map +0 -1
  310. /package/components/common/i18n/{calendar.resources.d.ts → EN/calendar.resources.d.ts} +0 -0
  311. /package/components/common/i18n/{chat.resources.d.ts → EN/chat.resources.d.ts} +0 -0
  312. /package/components/common/i18n/{chat.resources.js → EN/chat.resources.js} +0 -0
  313. /package/components/common/i18n/{date-range-picker.resources.d.ts → EN/date-range-picker.resources.d.ts} +0 -0
@@ -1,50 +1,46 @@
1
- import type { ReactiveController } from 'lit';
1
+ import type { Ref } from 'lit/directives/ref.js';
2
+ import type IgcInputComponent from '../../input/input.js';
2
3
  import type IgcComboListComponent from '../combo-list.js';
3
- import type { ComboHost, ComboRecord } from '../types.js';
4
+ import type { ComboHost } from '../types.js';
4
5
  import type { DataController } from './data.js';
5
- declare enum DIRECTION {
6
- Up = -1,
7
- Down = 1
8
- }
9
- export declare class NavigationController<T extends object> implements ReactiveController {
10
- protected host: ComboHost<T>;
6
+ type ComboNavigationConfig = {
7
+ /** The primary input of the combo component. */
8
+ input: Ref<IgcInputComponent>;
9
+ /** The search input of the combo component. */
10
+ search: Ref<IgcInputComponent>;
11
+ /** The combo virtualized dropdown list. */
12
+ list: Ref<IgcComboListComponent>;
13
+ };
14
+ export declare class ComboNavigationController<T extends object> {
15
+ protected combo: ComboHost<T>;
11
16
  protected state: DataController<T>;
12
- protected hostHandlers: Map<string, () => void>;
13
- protected mainInputHandlers: Map<string, (() => void) | (() => void) | ((container: IgcComboListComponent) => Promise<void>) | (() => void) | (() => void)>;
14
- protected searchInputHandlers: Map<string, (() => void) | ((container: IgcComboListComponent) => void)>;
15
- protected listHandlers: Map<string, (() => void) | (() => void) | (() => void) | ((container: IgcComboListComponent) => void) | ((container: IgcComboListComponent) => void) | (() => void) | ((container: IgcComboListComponent) => void) | ((container: IgcComboListComponent) => void)>;
16
- protected _active: number;
17
- get input(): import("../../input/input.js").default;
18
- get dataState(): ComboRecord<T>[];
19
- show(): void;
20
- hide(): void;
21
- toggleSelect(index: number): void;
22
- select(index: number): void;
23
- protected get currentItem(): number;
24
- protected get firstItem(): number;
25
- protected get lastItem(): number;
26
- protected scrollToActive(container: IgcComboListComponent, behavior?: ScrollBehavior): void;
17
+ private _active;
18
+ private _config;
27
19
  get active(): number;
28
- set active(node: number);
29
- constructor(host: ComboHost<T>, state: DataController<T>);
30
- protected home(container: IgcComboListComponent): void;
31
- protected end(container: IgcComboListComponent): void;
32
- protected space(): void;
33
- protected escape(): void;
34
- protected enter(): void;
35
- protected inputArrowDown(container: IgcComboListComponent): void;
36
- protected mainInputArrowDown(container: IgcComboListComponent): Promise<void>;
37
- protected tab(): void;
38
- protected arrowDown(container: IgcComboListComponent): void;
39
- protected arrowUp(container: IgcComboListComponent): void;
40
- protected getNextItem(direction: DIRECTION): void;
41
- protected getNearestItem(startIndex: number, direction: number): number;
42
- hostConnected(): void;
20
+ set active(value: number);
21
+ get input(): IgcInputComponent;
22
+ get searchInput(): IgcInputComponent;
23
+ get list(): IgcComboListComponent;
24
+ protected get _firstItem(): number;
25
+ protected get _lastItem(): number;
26
+ protected _hide(): Promise<boolean>;
27
+ protected _show(): Promise<boolean>;
28
+ protected _toggleSelection(index: number): void;
29
+ protected _select(index: number): void;
30
+ private _onSpace;
31
+ private _onEnter;
32
+ private _onTab;
33
+ private _onEscape;
34
+ private _onMainInputArrowDown;
35
+ private _onSearchArrowDown;
36
+ private _onHome;
37
+ private _onEnd;
38
+ private _onArrowUp;
39
+ private _onArrowDown;
40
+ private _scrollToActive;
41
+ private _getNearestItem;
42
+ private _getNextItem;
43
+ constructor(combo: ComboHost<T>, state: DataController<T>, config: ComboNavigationConfig);
43
44
  hostDisconnected(): void;
44
- navigateTo(item: T, container: IgcComboListComponent): void;
45
- navigateHost(event: KeyboardEvent): void;
46
- navigateMainInput(event: KeyboardEvent, container: IgcComboListComponent): void;
47
- navigateSearchInput(event: KeyboardEvent, container: IgcComboListComponent): void;
48
- navigateList(event: KeyboardEvent, container: IgcComboListComponent): void;
49
45
  }
50
46
  export {};
@@ -1,198 +1,176 @@
1
- const START_INDEX = -1;
2
- var DIRECTION;
3
- (function (DIRECTION) {
4
- DIRECTION[DIRECTION["Up"] = -1] = "Up";
5
- DIRECTION[DIRECTION["Down"] = 1] = "Down";
6
- })(DIRECTION || (DIRECTION = {}));
7
- export class NavigationController {
1
+ import { addKeybindings, altKey, arrowDown, arrowUp, endKey, enterKey, escapeKey, homeKey, shiftKey, spaceBar, tabKey, } from '../../common/controllers/key-bindings.js';
2
+ export class ComboNavigationController {
3
+ get active() {
4
+ return this._active;
5
+ }
6
+ set active(value) {
7
+ this._active = value;
8
+ this.combo.requestUpdate();
9
+ }
8
10
  get input() {
9
- return this.host.singleSelect ? this.host._input : this.host._searchInput;
11
+ return this._config.input.value;
10
12
  }
11
- get dataState() {
12
- return this.state.dataState;
13
+ get searchInput() {
14
+ return this._config.search.value;
13
15
  }
14
- show() {
15
- this.host._show(true);
16
+ get list() {
17
+ return this._config.list.value;
16
18
  }
17
- hide() {
18
- this.host._hide(true);
19
+ get _firstItem() {
20
+ return this.state.dataState.findIndex((rec) => !rec.header);
19
21
  }
20
- toggleSelect(index) {
21
- this.host.toggleSelect(index);
22
+ get _lastItem() {
23
+ return this.state.dataState.length - 1;
22
24
  }
23
- select(index) {
24
- this.host.selectByIndex(index);
25
+ async _hide() {
26
+ return await this.combo._hide(true);
25
27
  }
26
- get currentItem() {
27
- const item = this.active;
28
- return item === START_INDEX ? START_INDEX : item;
28
+ async _show() {
29
+ return await this.combo._show(true);
29
30
  }
30
- get firstItem() {
31
- return this.dataState.findIndex((i) => i.header !== true);
31
+ _toggleSelection(index) {
32
+ this.combo.toggleSelect(index);
32
33
  }
33
- get lastItem() {
34
- return this.dataState.length - 1;
34
+ _select(index) {
35
+ this.combo.selectByIndex(index);
35
36
  }
36
- scrollToActive(container, behavior = 'auto') {
37
- container.element(this.active)?.scrollIntoView({
37
+ _scrollToActive(behavior) {
38
+ this.list.element(this.active)?.scrollIntoView({
38
39
  block: 'center',
39
- behavior,
40
+ behavior: behavior ?? 'auto',
40
41
  });
41
- container.requestUpdate();
42
+ this.list.requestUpdate();
42
43
  }
43
- get active() {
44
- return this._active;
45
- }
46
- set active(node) {
47
- this._active = node;
48
- this.host.requestUpdate();
49
- }
50
- constructor(host, state) {
51
- this.host = host;
52
- this.state = state;
53
- this.hostHandlers = new Map(Object.entries({
54
- Escape: this.escape,
55
- }));
56
- this.mainInputHandlers = new Map(Object.entries({
57
- Escape: this.escape,
58
- ArrowUp: this.hide,
59
- ArrowDown: this.mainInputArrowDown,
60
- Tab: this.tab,
61
- Enter: this.enter,
62
- }));
63
- this.searchInputHandlers = new Map(Object.entries({
64
- Escape: this.escape,
65
- ArrowUp: this.escape,
66
- ArrowDown: this.inputArrowDown,
67
- Tab: this.inputArrowDown,
68
- }));
69
- this.listHandlers = new Map(Object.entries({
70
- ArrowDown: this.arrowDown,
71
- ArrowUp: this.arrowUp,
72
- ' ': this.space,
73
- Enter: this.enter,
74
- Escape: this.escape,
75
- Tab: this.tab,
76
- Home: this.home,
77
- End: this.end,
78
- }));
79
- this._active = START_INDEX;
80
- this.host.addController(this);
81
- }
82
- home(container) {
83
- this.active = this.firstItem;
84
- this.scrollToActive(container, 'smooth');
85
- }
86
- end(container) {
87
- this.active = this.lastItem;
88
- this.scrollToActive(container, 'smooth');
89
- }
90
- space() {
91
- if (this.active === START_INDEX) {
92
- return;
44
+ _getNearestItem(start, delta) {
45
+ let index = start;
46
+ const items = this.state.dataState;
47
+ while (items[index + delta]?.header) {
48
+ index += delta;
93
49
  }
94
- const item = this.dataState[this.active];
95
- if (!item.header) {
96
- this.toggleSelect(this.active);
50
+ index += delta;
51
+ return index >= 0 && index < items.length ? index : -1;
52
+ }
53
+ _getNextItem(delta) {
54
+ const next = this._getNearestItem(this._active, delta);
55
+ if (next === -1 && this.active === this._firstItem) {
56
+ this.searchInput.checkVisibility()
57
+ ? this.searchInput.focus()
58
+ : this._onEscape();
97
59
  }
60
+ this.active = next;
98
61
  }
99
- escape() {
100
- this.hide();
101
- this.host.focus();
102
- }
103
- enter() {
104
- if (this.active === START_INDEX) {
105
- return;
106
- }
107
- const item = this.dataState[this.active];
108
- if (!item.header && this.host.singleSelect) {
109
- this.select(this.active);
110
- }
111
- this.hide();
112
- requestAnimationFrame(() => this.input.select());
113
- this.host.focus();
114
- }
115
- inputArrowDown(container) {
116
- container.focus();
117
- this.arrowDown(container);
118
- }
119
- async mainInputArrowDown(container) {
120
- this.show();
121
- await container.updateComplete;
122
- if (this.host.singleSelect) {
123
- container.focus();
124
- this.arrowDown(container);
125
- }
126
- }
127
- tab() {
128
- this.hide();
129
- this.host.blur();
130
- }
131
- arrowDown(container) {
132
- this.getNextItem(DIRECTION.Down);
133
- this.scrollToActive(container);
134
- }
135
- arrowUp(container) {
136
- this.getNextItem(DIRECTION.Up);
137
- this.scrollToActive(container);
138
- }
139
- getNextItem(direction) {
140
- const next = this.getNearestItem(this.currentItem, direction);
141
- if (next === -1) {
142
- if (this.active === this.firstItem) {
62
+ constructor(combo, state, config) {
63
+ this.combo = combo;
64
+ this.state = state;
65
+ this._active = -1;
66
+ this._onSpace = () => {
67
+ if (this._active === -1) {
68
+ return;
69
+ }
70
+ const item = this.state.dataState[this._active];
71
+ if (!item.header) {
72
+ this._toggleSelection(this._active);
73
+ }
74
+ };
75
+ this._onEnter = async () => {
76
+ if (this._active === -1) {
77
+ return;
78
+ }
79
+ const item = this.state.dataState[this._active];
80
+ if (!item.header && this.combo.singleSelect) {
81
+ this._select(this.active);
82
+ }
83
+ if (await this._hide()) {
84
+ this.input.select();
85
+ this.combo.focus();
86
+ }
87
+ };
88
+ this._onTab = async ({ shiftKey }) => {
89
+ if (this.combo.open) {
90
+ if (shiftKey) {
91
+ this.combo.focus();
92
+ }
93
+ await this._hide();
94
+ }
95
+ };
96
+ this._onEscape = async () => {
97
+ if (!this.combo.open) {
98
+ this.combo.clearSelection();
99
+ }
100
+ if (await this._hide()) {
143
101
  this.input.focus();
144
- this.active = START_INDEX;
145
102
  }
146
- return;
147
- }
148
- this.active = next;
149
- }
150
- getNearestItem(startIndex, direction) {
151
- let index = startIndex;
152
- const items = this.dataState;
153
- while (items[index + direction]?.header) {
154
- index += direction;
155
- }
156
- index += direction;
157
- if (index >= 0 && index < items.length) {
158
- return index;
159
- }
160
- return -1;
103
+ };
104
+ this._onMainInputArrowDown = async () => {
105
+ if (!this.combo.open && !(await this._show())) {
106
+ return;
107
+ }
108
+ if (this.combo.singleSelect) {
109
+ this._onSearchArrowDown();
110
+ }
111
+ };
112
+ this._onSearchArrowDown = () => {
113
+ this.list.focus();
114
+ this._onArrowDown();
115
+ };
116
+ this._onHome = () => {
117
+ this.active = this._firstItem;
118
+ this._scrollToActive();
119
+ };
120
+ this._onEnd = () => {
121
+ this.active = this._lastItem;
122
+ this._scrollToActive();
123
+ };
124
+ this._onArrowUp = () => {
125
+ this._getNextItem(-1);
126
+ this._scrollToActive();
127
+ };
128
+ this._onArrowDown = () => {
129
+ this._getNextItem(1);
130
+ this._scrollToActive();
131
+ };
132
+ this.combo.addController(this);
133
+ this._config = config;
134
+ const bindingDefaults = {
135
+ triggers: ['keydownRepeat'],
136
+ };
137
+ const skip = () => this.combo.disabled;
138
+ addKeybindings(this.combo, { skip, bindingDefaults })
139
+ .set(tabKey, this._onTab, { preventDefault: false })
140
+ .set([shiftKey, tabKey], this._onTab, {
141
+ preventDefault: false,
142
+ })
143
+ .set(escapeKey, this._onEscape);
144
+ addKeybindings(this.combo, {
145
+ skip,
146
+ ref: this._config.input,
147
+ bindingDefaults,
148
+ })
149
+ .set(arrowUp, async () => await this._hide())
150
+ .set([altKey, arrowDown], this._onMainInputArrowDown)
151
+ .set(arrowDown, this._onMainInputArrowDown)
152
+ .set(enterKey, this._onEnter);
153
+ addKeybindings(this.combo, {
154
+ skip,
155
+ ref: this._config.search,
156
+ bindingDefaults,
157
+ })
158
+ .set(arrowUp, this._onEscape)
159
+ .set(arrowDown, this._onSearchArrowDown);
160
+ addKeybindings(this.combo, {
161
+ skip,
162
+ ref: this._config.list,
163
+ bindingDefaults,
164
+ })
165
+ .set(arrowUp, this._onArrowUp)
166
+ .set(arrowDown, this._onArrowDown)
167
+ .set(homeKey, this._onHome)
168
+ .set(endKey, this._onEnd)
169
+ .set(spaceBar, this._onSpace)
170
+ .set(enterKey, this._onEnter);
161
171
  }
162
- hostConnected() { }
163
172
  hostDisconnected() {
164
- this.active = START_INDEX;
165
- }
166
- navigateTo(item, container) {
167
- this.active = this.dataState.indexOf(item);
168
- this.scrollToActive(container, 'smooth');
169
- }
170
- navigateHost(event) {
171
- if (this.hostHandlers.has(event.key)) {
172
- event.preventDefault();
173
- this.hostHandlers.get(event.key).call(this);
174
- }
175
- }
176
- navigateMainInput(event, container) {
177
- event.stopPropagation();
178
- if (this.mainInputHandlers.has(event.key)) {
179
- event.preventDefault();
180
- this.mainInputHandlers.get(event.key).call(this, container);
181
- }
182
- }
183
- navigateSearchInput(event, container) {
184
- event.stopPropagation();
185
- if (this.searchInputHandlers.has(event.key)) {
186
- event.preventDefault();
187
- this.searchInputHandlers.get(event.key).call(this, container);
188
- }
189
- }
190
- navigateList(event, container) {
191
- event.stopPropagation();
192
- if (this.listHandlers.has(event.key)) {
193
- event.preventDefault();
194
- this.listHandlers.get(event.key).call(this, container);
195
- }
173
+ this._active = -1;
196
174
  }
197
175
  }
198
176
  //# sourceMappingURL=navigation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../../../src/components/combo/controllers/navigation.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ReactiveController } from 'lit';\n\nimport type IgcComboListComponent from '../combo-list.js';\nimport type { ComboHost, ComboRecord } from '../types.js';\nimport type { DataController } from './data.js';\n\nconst START_INDEX: Readonly<number> = -1;\n\nenum DIRECTION {\n Up = -1,\n Down = 1,\n}\n\nexport class NavigationController<T extends object>\n implements ReactiveController\n{\n protected hostHandlers = new Map(\n Object.entries({\n Escape: this.escape,\n })\n );\n\n protected mainInputHandlers = new Map(\n Object.entries({\n Escape: this.escape,\n ArrowUp: this.hide,\n ArrowDown: this.mainInputArrowDown,\n Tab: this.tab,\n Enter: this.enter,\n })\n );\n\n protected searchInputHandlers = new Map(\n Object.entries({\n Escape: this.escape,\n ArrowUp: this.escape,\n ArrowDown: this.inputArrowDown,\n Tab: this.inputArrowDown,\n })\n );\n\n protected listHandlers = new Map(\n Object.entries({\n ArrowDown: this.arrowDown,\n ArrowUp: this.arrowUp,\n ' ': this.space,\n Enter: this.enter,\n Escape: this.escape,\n Tab: this.tab,\n Home: this.home,\n End: this.end,\n })\n );\n\n protected _active = START_INDEX;\n\n public get input() {\n // @ts-expect-error protected access\n return this.host.singleSelect ? this.host._input : this.host._searchInput;\n }\n\n public get dataState() {\n return this.state.dataState;\n }\n\n public show() {\n // @ts-expect-error protected access\n this.host._show(true);\n }\n\n public hide() {\n // @ts-expect-error protected access\n this.host._hide(true);\n }\n\n public toggleSelect(index: number) {\n // @ts-expect-error protected access\n this.host.toggleSelect(index);\n }\n\n public select(index: number) {\n // @ts-expect-error protected access\n this.host.selectByIndex(index);\n }\n\n protected get currentItem() {\n const item = this.active;\n return item === START_INDEX ? START_INDEX : item;\n }\n\n protected get firstItem() {\n return this.dataState.findIndex((i: ComboRecord<T>) => i.header !== true);\n }\n\n protected get lastItem() {\n return this.dataState.length - 1;\n }\n\n protected scrollToActive(\n container: IgcComboListComponent,\n behavior: ScrollBehavior = 'auto'\n ) {\n container.element(this.active)?.scrollIntoView({\n block: 'center',\n behavior,\n });\n\n container.requestUpdate();\n }\n\n public get active() {\n return this._active;\n }\n\n public set active(node: number) {\n this._active = node;\n this.host.requestUpdate();\n }\n\n constructor(\n protected host: ComboHost<T>,\n protected state: DataController<T>\n ) {\n this.host.addController(this);\n }\n\n protected home(container: IgcComboListComponent) {\n this.active = this.firstItem;\n this.scrollToActive(container, 'smooth');\n }\n\n protected end(container: IgcComboListComponent) {\n this.active = this.lastItem;\n this.scrollToActive(container, 'smooth');\n }\n\n protected space() {\n if (this.active === START_INDEX) {\n return;\n }\n\n const item = this.dataState[this.active];\n\n if (!item.header) {\n this.toggleSelect(this.active);\n }\n }\n\n protected escape() {\n this.hide();\n this.host.focus();\n }\n\n protected enter() {\n if (this.active === START_INDEX) {\n return;\n }\n\n const item = this.dataState[this.active];\n\n if (!item.header && this.host.singleSelect) {\n this.select(this.active);\n }\n\n this.hide();\n requestAnimationFrame(() => this.input.select());\n this.host.focus();\n }\n\n protected inputArrowDown(container: IgcComboListComponent) {\n container.focus();\n this.arrowDown(container);\n }\n\n protected async mainInputArrowDown(container: IgcComboListComponent) {\n this.show();\n await container.updateComplete;\n\n if (this.host.singleSelect) {\n container.focus();\n this.arrowDown(container);\n }\n }\n\n protected tab() {\n this.hide();\n this.host.blur();\n }\n\n protected arrowDown(container: IgcComboListComponent) {\n this.getNextItem(DIRECTION.Down);\n this.scrollToActive(container);\n }\n\n protected arrowUp(container: IgcComboListComponent) {\n this.getNextItem(DIRECTION.Up);\n this.scrollToActive(container);\n }\n\n protected getNextItem(direction: DIRECTION) {\n const next = this.getNearestItem(this.currentItem, direction);\n\n if (next === -1) {\n if (this.active === this.firstItem) {\n this.input.focus();\n this.active = START_INDEX;\n }\n return;\n }\n\n this.active = next;\n }\n\n protected getNearestItem(startIndex: number, direction: number) {\n let index = startIndex;\n const items = this.dataState;\n\n while (items[index + direction]?.header) {\n index += direction;\n }\n\n index += direction;\n\n if (index >= 0 && index < items.length) {\n return index;\n }\n return -1;\n }\n\n public hostConnected() {}\n\n public hostDisconnected() {\n this.active = START_INDEX;\n }\n\n public navigateTo(item: T, container: IgcComboListComponent) {\n this.active = this.dataState.indexOf(item as ComboRecord<T>);\n this.scrollToActive(container, 'smooth');\n }\n\n public navigateHost(event: KeyboardEvent) {\n if (this.hostHandlers.has(event.key)) {\n event.preventDefault();\n this.hostHandlers.get(event.key)!.call(this);\n }\n }\n\n public navigateMainInput(\n event: KeyboardEvent,\n container: IgcComboListComponent\n ) {\n event.stopPropagation();\n\n if (this.mainInputHandlers.has(event.key)) {\n event.preventDefault();\n this.mainInputHandlers.get(event.key)!.call(this, container);\n }\n }\n\n public navigateSearchInput(\n event: KeyboardEvent,\n container: IgcComboListComponent\n ) {\n event.stopPropagation();\n\n if (this.searchInputHandlers.has(event.key)) {\n event.preventDefault();\n this.searchInputHandlers.get(event.key)!.call(this, container);\n }\n }\n\n public navigateList(event: KeyboardEvent, container: IgcComboListComponent) {\n event.stopPropagation();\n\n if (this.listHandlers.has(event.key)) {\n event.preventDefault();\n this.listHandlers.get(event.key)!.call(this, container);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../../../src/components/combo/controllers/navigation.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,cAAc,EACd,MAAM,EACN,SAAS,EACT,OAAO,EACP,MAAM,EACN,QAAQ,EACR,SAAS,EACT,OAAO,EAEP,QAAQ,EACR,QAAQ,EACR,MAAM,GACP,MAAM,0CAA0C,CAAC;AAelD,MAAM,OAAO,yBAAyB;IAIpC,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,IAAW,MAAM,CAAC,KAAa;QAC7B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;IAC7B,CAAC;IAED,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAM,CAAC;IACnC,CAAC;IAED,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAM,CAAC;IACpC,CAAC;IAED,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAM,CAAC;IAClC,CAAC;IAED,IAAc,UAAU;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9D,CAAC;IAED,IAAc,SAAS;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;IACzC,CAAC;IAES,KAAK,CAAC,KAAK;QAEnB,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAES,KAAK,CAAC,KAAK;QAEnB,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAES,gBAAgB,CAAC,KAAa;QAEtC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAES,OAAO,CAAC,KAAa;QAE7B,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAsFO,eAAe,CAAC,QAAyB;QAC/C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC;YAC7C,KAAK,EAAE,QAAQ;YACf,QAAQ,EAAE,QAAQ,IAAI,MAAM;SAC7B,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;IAC5B,CAAC;IAEO,eAAe,CAAC,KAAa,EAAE,KAAa;QAClD,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;QAEnC,OAAO,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;YACpC,KAAK,IAAI,KAAK,CAAC;QACjB,CAAC;QAED,KAAK,IAAI,KAAK,CAAC;QAEf,OAAO,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC;IAEO,YAAY,CAAC,KAAa;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAEvD,IAAI,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;YACnD,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE;gBAChC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;gBAC1B,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QACvB,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,YACY,KAAmB,EACnB,KAAwB,EAClC,MAA6B;QAFnB,UAAK,GAAL,KAAK,CAAc;QACnB,UAAK,GAAL,KAAK,CAAmB;QA5K5B,YAAO,GAAG,CAAC,CAAC,CAAC;QAoDb,aAAQ,GAAG,GAAS,EAAE;YAC5B,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC;gBACxB,OAAO;YACT,CAAC;YAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAChD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACtC,CAAC;QACH,CAAC,CAAC;QAEM,aAAQ,GAAG,KAAK,IAAmB,EAAE;YAC3C,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC;gBACxB,OAAO;YACT,CAAC;YAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAEhD,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;gBAC5C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5B,CAAC;YAED,IAAI,MAAM,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;gBACvB,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBACpB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACrB,CAAC;QACH,CAAC,CAAC;QAEM,WAAM,GAAG,KAAK,EAAE,EAAE,QAAQ,EAAiB,EAAiB,EAAE;YACpE,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBACpB,IAAI,QAAQ,EAAE,CAAC;oBAGb,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBACrB,CAAC;gBACD,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;YACrB,CAAC;QACH,CAAC,CAAC;QAEM,cAAS,GAAG,KAAK,IAAmB,EAAE;YAC5C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBACrB,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;YAC9B,CAAC;YAED,IAAI,MAAM,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;gBACvB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACrB,CAAC;QACH,CAAC,CAAC;QAEM,0BAAqB,GAAG,KAAK,IAAmB,EAAE;YACxD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;gBAC9C,OAAO;YACT,CAAC;YAED,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;gBAC5B,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC5B,CAAC;QACH,CAAC,CAAC;QAEM,uBAAkB,GAAG,GAAS,EAAE;YACtC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAClB,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC,CAAC;QAEM,YAAO,GAAG,GAAS,EAAE;YAC3B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;YAC9B,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC,CAAC;QAEM,WAAM,GAAG,GAAS,EAAE;YAC1B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC;YAC7B,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC,CAAC;QAEM,eAAU,GAAG,GAAS,EAAE;YAC9B,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC,CAAC;QAEM,iBAAY,GAAG,GAAS,EAAE;YAChC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACrB,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC,CAAC;QAyCA,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAA0B,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QAEtB,MAAM,eAAe,GAAG;YACtB,QAAQ,EAAE,CAAC,eAAe,CAAC;SACP,CAAC;QAEvB,MAAM,IAAI,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QAGhD,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;aAClD,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;aACnD,GAAG,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE;YACpC,cAAc,EAAE,KAAK;SACtB,CAAC;aACD,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAGlC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE;YACzB,IAAI;YACJ,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;YACvB,eAAe;SAChB,CAAC;aACC,GAAG,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;aAC5C,GAAG,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,qBAAqB,CAAC;aACpD,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,qBAAqB,CAAC;aAC1C,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAGhC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE;YACzB,IAAI;YACJ,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;YACxB,eAAe;SAChB,CAAC;aACC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;aAC5B,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAG3C,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE;YACzB,IAAI;YACJ,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;YACtB,eAAe;SAChB,CAAC;aACC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC;aAC7B,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC;aACjC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC;aAC1B,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;aACxB,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC;aAC5B,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;IAEM,gBAAgB;QACrB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;IACpB,CAAC;CACF","sourcesContent":["import type { ReactiveController } from 'lit';\nimport type { Ref } from 'lit/directives/ref.js';\nimport {\n addKeybindings,\n altKey,\n arrowDown,\n arrowUp,\n endKey,\n enterKey,\n escapeKey,\n homeKey,\n type KeyBindingOptions,\n shiftKey,\n spaceBar,\n tabKey,\n} from '../../common/controllers/key-bindings.js';\nimport type IgcInputComponent from '../../input/input.js';\nimport type IgcComboListComponent from '../combo-list.js';\nimport type { ComboHost } from '../types.js';\nimport type { DataController } from './data.js';\n\ntype ComboNavigationConfig = {\n /** The primary input of the combo component. */\n input: Ref<IgcInputComponent>;\n /** The search input of the combo component. */\n search: Ref<IgcInputComponent>;\n /** The combo virtualized dropdown list. */\n list: Ref<IgcComboListComponent>;\n};\n\nexport class ComboNavigationController<T extends object> {\n private _active = -1;\n private _config: ComboNavigationConfig;\n\n public get active(): number {\n return this._active;\n }\n\n public set active(value: number) {\n this._active = value;\n this.combo.requestUpdate();\n }\n\n public get input(): IgcInputComponent {\n return this._config.input.value!;\n }\n\n public get searchInput(): IgcInputComponent {\n return this._config.search.value!;\n }\n\n public get list(): IgcComboListComponent {\n return this._config.list.value!;\n }\n\n protected get _firstItem(): number {\n return this.state.dataState.findIndex((rec) => !rec.header);\n }\n\n protected get _lastItem(): number {\n return this.state.dataState.length - 1;\n }\n\n protected async _hide(): Promise<boolean> {\n // @ts-expect-error: protected access\n return await this.combo._hide(true);\n }\n\n protected async _show(): Promise<boolean> {\n // @ts-expect-error: protected access\n return await this.combo._show(true);\n }\n\n protected _toggleSelection(index: number): void {\n // @ts-expect-error protected access\n this.combo.toggleSelect(index);\n }\n\n protected _select(index: number): void {\n // @ts-expect-error: protected access\n this.combo.selectByIndex(index);\n }\n\n private _onSpace = (): void => {\n if (this._active === -1) {\n return;\n }\n\n const item = this.state.dataState[this._active];\n if (!item.header) {\n this._toggleSelection(this._active);\n }\n };\n\n private _onEnter = async (): Promise<void> => {\n if (this._active === -1) {\n return;\n }\n\n const item = this.state.dataState[this._active];\n\n if (!item.header && this.combo.singleSelect) {\n this._select(this.active);\n }\n\n if (await this._hide()) {\n this.input.select();\n this.combo.focus();\n }\n };\n\n private _onTab = async ({ shiftKey }: KeyboardEvent): Promise<void> => {\n if (this.combo.open) {\n if (shiftKey) {\n // Move focus to the main input of the combo\n // before the Shift+Tab behavior kicks in.\n this.combo.focus();\n }\n await this._hide();\n }\n };\n\n private _onEscape = async (): Promise<void> => {\n if (!this.combo.open) {\n this.combo.clearSelection();\n }\n\n if (await this._hide()) {\n this.input.focus();\n }\n };\n\n private _onMainInputArrowDown = async (): Promise<void> => {\n if (!this.combo.open && !(await this._show())) {\n return;\n }\n\n if (this.combo.singleSelect) {\n this._onSearchArrowDown();\n }\n };\n\n private _onSearchArrowDown = (): void => {\n this.list.focus();\n this._onArrowDown();\n };\n\n private _onHome = (): void => {\n this.active = this._firstItem;\n this._scrollToActive();\n };\n\n private _onEnd = (): void => {\n this.active = this._lastItem;\n this._scrollToActive();\n };\n\n private _onArrowUp = (): void => {\n this._getNextItem(-1);\n this._scrollToActive();\n };\n\n private _onArrowDown = (): void => {\n this._getNextItem(1);\n this._scrollToActive();\n };\n\n private _scrollToActive(behavior?: ScrollBehavior): void {\n this.list.element(this.active)?.scrollIntoView({\n block: 'center',\n behavior: behavior ?? 'auto',\n });\n\n this.list.requestUpdate();\n }\n\n private _getNearestItem(start: number, delta: -1 | 1): number {\n let index = start;\n const items = this.state.dataState;\n\n while (items[index + delta]?.header) {\n index += delta;\n }\n\n index += delta;\n\n return index >= 0 && index < items.length ? index : -1;\n }\n\n private _getNextItem(delta: -1 | 1): void {\n const next = this._getNearestItem(this._active, delta);\n\n if (next === -1 && this.active === this._firstItem) {\n this.searchInput.checkVisibility() // Non single-select or disable-filtering combo configuration\n ? this.searchInput.focus() // Delegate to search input handlers\n : this._onEscape(); // Close dropdown and move focus back to main input\n }\n\n this.active = next;\n }\n\n constructor(\n protected combo: ComboHost<T>,\n protected state: DataController<T>,\n config: ComboNavigationConfig\n ) {\n this.combo.addController(this as ReactiveController);\n this._config = config;\n\n const bindingDefaults = {\n triggers: ['keydownRepeat'],\n } as KeyBindingOptions;\n\n const skip = (): boolean => this.combo.disabled;\n\n // Combo\n addKeybindings(this.combo, { skip, bindingDefaults })\n .set(tabKey, this._onTab, { preventDefault: false })\n .set([shiftKey, tabKey], this._onTab, {\n preventDefault: false,\n })\n .set(escapeKey, this._onEscape);\n\n // Main input\n addKeybindings(this.combo, {\n skip,\n ref: this._config.input,\n bindingDefaults,\n })\n .set(arrowUp, async () => await this._hide())\n .set([altKey, arrowDown], this._onMainInputArrowDown)\n .set(arrowDown, this._onMainInputArrowDown)\n .set(enterKey, this._onEnter);\n\n // Search input\n addKeybindings(this.combo, {\n skip,\n ref: this._config.search,\n bindingDefaults,\n })\n .set(arrowUp, this._onEscape)\n .set(arrowDown, this._onSearchArrowDown);\n\n // List\n addKeybindings(this.combo, {\n skip,\n ref: this._config.list,\n bindingDefaults,\n })\n .set(arrowUp, this._onArrowUp)\n .set(arrowDown, this._onArrowDown)\n .set(homeKey, this._onHome)\n .set(endKey, this._onEnd)\n .set(spaceBar, this._onSpace)\n .set(enterKey, this._onEnter);\n }\n\n public hostDisconnected(): void {\n this._active = -1;\n }\n}\n"]}
@@ -1,6 +1,5 @@
1
1
  import type { DataController } from '../controllers/data.js';
2
2
  import type { ComboRecord } from '../types.js';
3
3
  export default class GroupDataOperation<T extends object> {
4
- protected orderBy: Map<string, number>;
5
4
  apply(data: ComboRecord<T>[], controller: DataController<T>): ComboRecord<T>[];
6
5
  }
@@ -1,33 +1,29 @@
1
- import { groupBy } from '../../common/util.js';
1
+ const OrderBy = Object.freeze({ asc: 1, desc: -1 });
2
2
  export default class GroupDataOperation {
3
- constructor() {
4
- this.orderBy = new Map(Object.entries({
5
- asc: 1,
6
- desc: -1,
7
- }));
8
- }
9
3
  apply(data, controller) {
10
4
  const { groupingOptions: { groupKey, valueKey, displayKey, direction }, } = controller;
11
- if (!groupKey)
5
+ if (!groupKey) {
12
6
  return data;
13
- const groups = Object.entries(groupBy(data, (item) => item.value[groupKey] ?? 'Other'));
7
+ }
8
+ const grouped = Map.groupBy(data, (item) => item.value[groupKey] ?? 'Other');
9
+ const keys = Array.from(grouped.keys());
14
10
  if (direction !== 'none') {
15
- const orderBy = this.orderBy.get(direction);
16
- groups.sort((a, b) => {
17
- return orderBy * controller.compareCollator.compare(a[0], b[0]);
18
- });
11
+ const orderBy = OrderBy[direction];
12
+ keys.sort((a, b) => orderBy * controller.compareCollator.compare(a, b));
19
13
  }
20
- return groups.flatMap(([group, items]) => {
21
- items.unshift({
22
- dataIndex: -1,
23
- header: true,
24
- value: {
25
- [valueKey]: group,
26
- [displayKey]: group,
27
- [groupKey]: group,
14
+ return keys.flatMap((key) => {
15
+ return [
16
+ {
17
+ value: {
18
+ [valueKey]: key,
19
+ [displayKey]: key,
20
+ [groupKey]: key,
21
+ },
22
+ header: true,
23
+ dataIndex: -1,
28
24
  },
29
- });
30
- return items;
25
+ ...(grouped.get(key) ?? []),
26
+ ];
31
27
  });
32
28
  }
33
29
  }
@@ -1 +1 @@
1
- {"version":3,"file":"group.js","sourceRoot":"","sources":["../../../../src/components/combo/operations/group.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAI/C,MAAM,CAAC,OAAO,OAAO,kBAAkB;IAAvC;QACY,YAAO,GAAG,IAAI,GAAG,CACzB,MAAM,CAAC,OAAO,CAAC;YACb,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,CAAC,CAAC;SACT,CAAC,CACH,CAAC;IAkCJ,CAAC;IAhCQ,KAAK,CAAC,IAAsB,EAAE,UAA6B;QAChE,MAAM,EACJ,eAAe,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,GAC/D,GAAG,UAAU,CAAC;QAEf,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAE3B,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAC3B,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,CACzD,CAAC;QAEF,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC5C,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACnB,OAAO,OAAQ,GAAG,UAAU,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnE,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE;YACvC,KAAK,CAAC,OAAO,CAAC;gBACZ,SAAS,EAAE,CAAC,CAAC;gBACb,MAAM,EAAE,IAAI;gBACZ,KAAK,EAAE;oBACL,CAAC,QAAmB,CAAC,EAAE,KAAK;oBAC5B,CAAC,UAAqB,CAAC,EAAE,KAAK;oBAC9B,CAAC,QAAmB,CAAC,EAAE,KAAK;iBACxB;aACP,CAAC,CAAC;YAEH,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;CACF","sourcesContent":["import { groupBy } from '../../common/util.js';\nimport type { DataController } from '../controllers/data.js';\nimport type { ComboRecord, Keys } from '../types.js';\n\nexport default class GroupDataOperation<T extends object> {\n protected orderBy = new Map(\n Object.entries({\n asc: 1,\n desc: -1,\n })\n );\n\n public apply(data: ComboRecord<T>[], controller: DataController<T>) {\n const {\n groupingOptions: { groupKey, valueKey, displayKey, direction },\n } = controller;\n\n if (!groupKey) return data;\n\n const groups = Object.entries(\n groupBy(data, (item) => item.value[groupKey] ?? 'Other')\n );\n\n if (direction !== 'none') {\n const orderBy = this.orderBy.get(direction);\n groups.sort((a, b) => {\n return orderBy! * controller.compareCollator.compare(a[0], b[0]);\n });\n }\n\n return groups.flatMap(([group, items]) => {\n items.unshift({\n dataIndex: -1,\n header: true,\n value: {\n [valueKey as Keys<T>]: group,\n [displayKey as Keys<T>]: group,\n [groupKey as Keys<T>]: group,\n } as T,\n });\n\n return items;\n });\n }\n}\n"]}
1
+ {"version":3,"file":"group.js","sourceRoot":"","sources":["../../../../src/components/combo/operations/group.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAEpD,MAAM,CAAC,OAAO,OAAO,kBAAkB;IAC9B,KAAK,CACV,IAAsB,EACtB,UAA6B;QAE7B,MAAM,EACJ,eAAe,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,GAC/D,GAAG,UAAU,CAAC;QAEf,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CACzB,IAAI,EACJ,CAAC,IAAI,EAAE,EAAE,CAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAY,IAAI,OAAO,CACtD,CAAC;QAEF,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAExC,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;YACnC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,GAAG,UAAU,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1E,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YAC1B,OAAO;gBACL;oBACE,KAAK,EAAE;wBACL,CAAC,QAAmB,CAAC,EAAE,GAAG;wBAC1B,CAAC,UAAqB,CAAC,EAAE,GAAG;wBAC5B,CAAC,QAAmB,CAAC,EAAE,GAAG;qBACtB;oBACN,MAAM,EAAE,IAAI;oBACZ,SAAS,EAAE,CAAC,CAAC;iBACd;gBACD,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;aAC5B,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;CACF","sourcesContent":["import type { DataController } from '../controllers/data.js';\nimport type { ComboRecord, Keys } from '../types.js';\n\nconst OrderBy = Object.freeze({ asc: 1, desc: -1 });\n\nexport default class GroupDataOperation<T extends object> {\n public apply(\n data: ComboRecord<T>[],\n controller: DataController<T>\n ): ComboRecord<T>[] {\n const {\n groupingOptions: { groupKey, valueKey, displayKey, direction },\n } = controller;\n\n if (!groupKey) {\n return data;\n }\n\n const grouped = Map.groupBy(\n data,\n (item) => (item.value[groupKey] as string) ?? 'Other'\n );\n\n const keys = Array.from(grouped.keys());\n\n if (direction !== 'none') {\n const orderBy = OrderBy[direction];\n keys.sort((a, b) => orderBy * controller.compareCollator.compare(a, b));\n }\n\n return keys.flatMap((key) => {\n return [\n {\n value: {\n [valueKey as Keys<T>]: key,\n [displayKey as Keys<T>]: key,\n [groupKey as Keys<T>]: key,\n } as T,\n header: true,\n dataIndex: -1,\n },\n ...(grouped.get(key) ?? []),\n ];\n });\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-overline-font-family, var(--ig-font-family));font-size:var(--ig-overline-font-size);font-weight:var(--ig-overline-font-weight);font-style:var(--ig-overline-font-style);line-height:var(--ig-overline-line-height);letter-spacing:var(--ig-overline-letter-spacing);text-transform:var(--ig-overline-text-transform);margin-top:var(--ig-overline-margin-top);margin-bottom:var(--ig-overline-margin-bottom);white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:block;white-space:nowrap;position:relative;pointer-events:none}::slotted(*){font:inherit}:host{--component-size: var(--ig-size, var(--default-size));--default-size: var(--combo-size) !important}`;
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-overline-font-family, var(--ig-font-family));font-size:var(--ig-overline-font-size);font-weight:var(--ig-overline-font-weight);font-style:var(--ig-overline-font-style);line-height:var(--ig-overline-line-height);letter-spacing:var(--ig-overline-letter-spacing);text-transform:var(--ig-overline-text-transform);margin-top:var(--ig-overline-margin-top);margin-bottom:var(--ig-overline-margin-bottom);white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:block;white-space:nowrap;position:relative;pointer-events:none}::slotted(*){font:inherit}:host{--component-size: var(--ig-size, var(--default-size));--default-size: var(--combo-size) !important;width:100%;white-space:nowrap}:host ::slotted(*){white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:block;width:100%;align-items:center}`;
3
3
  //# sourceMappingURL=combo-header.base.css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"combo-header.base.css.js","sourceRoot":"","sources":["../../../../src/components/combo/themes/combo-header.base.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,snDAAsnD,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport 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-overline-font-family, var(--ig-font-family));font-size:var(--ig-overline-font-size);font-weight:var(--ig-overline-font-weight);font-style:var(--ig-overline-font-style);line-height:var(--ig-overline-line-height);letter-spacing:var(--ig-overline-letter-spacing);text-transform:var(--ig-overline-text-transform);margin-top:var(--ig-overline-margin-top);margin-bottom:var(--ig-overline-margin-bottom);white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:block;white-space:nowrap;position:relative;pointer-events:none}::slotted(*){font:inherit}:host{--component-size: var(--ig-size, var(--default-size));--default-size: var(--combo-size) !important}`;\n"]}
1
+ {"version":3,"file":"combo-header.base.css.js","sourceRoot":"","sources":["../../../../src/components/combo/themes/combo-header.base.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,6wDAA6wD,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport 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-overline-font-family, var(--ig-font-family));font-size:var(--ig-overline-font-size);font-weight:var(--ig-overline-font-weight);font-style:var(--ig-overline-font-style);line-height:var(--ig-overline-line-height);letter-spacing:var(--ig-overline-letter-spacing);text-transform:var(--ig-overline-text-transform);margin-top:var(--ig-overline-margin-top);margin-bottom:var(--ig-overline-margin-bottom);white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:block;white-space:nowrap;position:relative;pointer-events:none}::slotted(*){font:inherit}:host{--component-size: var(--ig-size, var(--default-size));--default-size: var(--combo-size) !important;width:100%;white-space:nowrap}:host ::slotted(*){white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:block;width:100%;align-items:center}`;\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))))}:host{--component-size: var(--ig-size, var(--default-size));--default-size: var(--combo-size) !important;gap:.5rem}igc-checkbox{pointer-events:none}`;
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))))}:host{--component-size: var(--ig-size, var(--default-size));--default-size: var(--combo-size) !important;gap:.5rem}:host ::slotted(*){white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:block;width:100%;align-items:center}igc-checkbox{pointer-events:none}`;
3
3
  //# sourceMappingURL=combo-item.base.css.js.map