igniteui-webcomponents 6.0.1 → 6.1.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 (306) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/components/button/button-base.d.ts +5 -6
  3. package/components/button/button-base.js +15 -29
  4. package/components/button/button-base.js.map +1 -1
  5. package/components/button/themes/button/light/button.shared.css.js +1 -1
  6. package/components/button/themes/button/light/button.shared.css.js.map +1 -1
  7. package/components/button-group/toggle-button.d.ts +2 -2
  8. package/components/button-group/toggle-button.js +4 -6
  9. package/components/button-group/toggle-button.js.map +1 -1
  10. package/components/calendar/calendar.d.ts +1 -1
  11. package/components/calendar/calendar.js +12 -9
  12. package/components/calendar/calendar.js.map +1 -1
  13. package/components/calendar/days-view/days-view.d.ts +1 -1
  14. package/components/calendar/days-view/days-view.js +8 -9
  15. package/components/calendar/days-view/days-view.js.map +1 -1
  16. package/components/calendar/helpers.d.ts +12 -1
  17. package/components/calendar/helpers.js +35 -10
  18. package/components/calendar/helpers.js.map +1 -1
  19. package/components/calendar/model.d.ts +15 -1
  20. package/components/calendar/model.js +26 -5
  21. package/components/calendar/model.js.map +1 -1
  22. package/components/calendar/months-view/months-view.d.ts +1 -1
  23. package/components/calendar/months-view/months-view.js +6 -6
  24. package/components/calendar/months-view/months-view.js.map +1 -1
  25. package/components/calendar/years-view/years-view.d.ts +1 -1
  26. package/components/calendar/years-view/years-view.js +6 -6
  27. package/components/calendar/years-view/years-view.js.map +1 -1
  28. package/components/carousel/carousel-indicator-container.d.ts +2 -2
  29. package/components/carousel/carousel-indicator-container.js +8 -9
  30. package/components/carousel/carousel-indicator-container.js.map +1 -1
  31. package/components/carousel/carousel.d.ts +7 -8
  32. package/components/carousel/carousel.js +24 -20
  33. package/components/carousel/carousel.js.map +1 -1
  34. package/components/checkbox/checkbox-base.d.ts +8 -10
  35. package/components/checkbox/checkbox-base.js +20 -23
  36. package/components/checkbox/checkbox-base.js.map +1 -1
  37. package/components/checkbox/checkbox.d.ts +3 -3
  38. package/components/checkbox/checkbox.js +18 -19
  39. package/components/checkbox/checkbox.js.map +1 -1
  40. package/components/checkbox/switch.d.ts +2 -2
  41. package/components/checkbox/switch.js +15 -19
  42. package/components/checkbox/switch.js.map +1 -1
  43. package/components/chip/chip.js +3 -3
  44. package/components/chip/chip.js.map +1 -1
  45. package/components/combo/combo.d.ts +2 -2
  46. package/components/combo/combo.js +12 -11
  47. package/components/combo/combo.js.map +1 -1
  48. package/components/combo/themes/combo.base.css.js +1 -1
  49. package/components/combo/themes/combo.base.css.js.map +1 -1
  50. package/components/combo/themes/shared/combo.fluent.css.js +1 -1
  51. package/components/combo/themes/shared/combo.fluent.css.js.map +1 -1
  52. package/components/common/controllers/focus-ring.d.ts +21 -11
  53. package/components/common/controllers/focus-ring.js +16 -14
  54. package/components/common/controllers/focus-ring.js.map +1 -1
  55. package/components/common/controllers/key-bindings.d.ts +40 -33
  56. package/components/common/controllers/key-bindings.js +83 -71
  57. package/components/common/controllers/key-bindings.js.map +1 -1
  58. package/components/common/definitions/defineAllComponents.js +2 -0
  59. package/components/common/definitions/defineAllComponents.js.map +1 -1
  60. package/components/common/i18n/date-range-picker.resources.d.ts +11 -0
  61. package/components/common/i18n/date-range-picker.resources.js +12 -0
  62. package/components/common/i18n/date-range-picker.resources.js.map +1 -0
  63. package/components/common/mixins/combo-box.js +8 -2
  64. package/components/common/mixins/combo-box.js.map +1 -1
  65. package/components/common/mixins/forms/form-value.d.ts +15 -1
  66. package/components/common/mixins/forms/form-value.js +25 -4
  67. package/components/common/mixins/forms/form-value.js.map +1 -1
  68. package/components/common/mixins/option.d.ts +3 -2
  69. package/components/common/mixins/option.js.map +1 -1
  70. package/components/common/part-map.d.ts +17 -0
  71. package/components/common/part-map.js +46 -0
  72. package/components/common/part-map.js.map +1 -0
  73. package/components/common/util.d.ts +5 -6
  74. package/components/common/util.js +17 -22
  75. package/components/common/util.js.map +1 -1
  76. package/components/common/validators.js +3 -7
  77. package/components/common/validators.js.map +1 -1
  78. package/components/date-picker/date-picker.d.ts +3 -3
  79. package/components/date-picker/date-picker.js +13 -14
  80. package/components/date-picker/date-picker.js.map +1 -1
  81. package/components/date-picker/themes/dark/date-picker.bootstrap.css.js +1 -1
  82. package/components/date-picker/themes/dark/date-picker.bootstrap.css.js.map +1 -1
  83. package/components/date-picker/themes/dark/date-picker.fluent.css.js +1 -1
  84. package/components/date-picker/themes/dark/date-picker.fluent.css.js.map +1 -1
  85. package/components/date-picker/themes/dark/date-picker.indigo.css.js +1 -1
  86. package/components/date-picker/themes/dark/date-picker.indigo.css.js.map +1 -1
  87. package/components/date-picker/themes/dark/date-picker.material.css.js +1 -1
  88. package/components/date-picker/themes/dark/date-picker.material.css.js.map +1 -1
  89. package/components/date-picker/themes/light/date-picker.bootstrap.css.js +1 -1
  90. package/components/date-picker/themes/light/date-picker.bootstrap.css.js.map +1 -1
  91. package/components/date-picker/themes/light/date-picker.fluent.css.js +1 -1
  92. package/components/date-picker/themes/light/date-picker.fluent.css.js.map +1 -1
  93. package/components/date-picker/themes/light/date-picker.indigo.css.js +1 -1
  94. package/components/date-picker/themes/light/date-picker.indigo.css.js.map +1 -1
  95. package/components/date-picker/themes/light/date-picker.material.css.js +1 -1
  96. package/components/date-picker/themes/light/date-picker.material.css.js.map +1 -1
  97. package/components/date-picker/themes/shared/date-picker.bootstrap.css.js +1 -1
  98. package/components/date-picker/themes/shared/date-picker.bootstrap.css.js.map +1 -1
  99. package/components/date-picker/themes/shared/date-picker.common.css.js +1 -1
  100. package/components/date-picker/themes/shared/date-picker.common.css.js.map +1 -1
  101. package/components/date-picker/themes/shared/date-picker.fluent.css.js +1 -1
  102. package/components/date-picker/themes/shared/date-picker.fluent.css.js.map +1 -1
  103. package/components/date-picker/themes/shared/date-picker.indigo.css.js +1 -1
  104. package/components/date-picker/themes/shared/date-picker.indigo.css.js.map +1 -1
  105. package/components/date-picker/themes/shared/date-picker.material.css.d.ts +1 -0
  106. package/components/date-picker/themes/shared/date-picker.material.css.js +3 -0
  107. package/components/date-picker/themes/shared/date-picker.material.css.js.map +1 -0
  108. package/components/date-picker/themes/themes.js +3 -2
  109. package/components/date-picker/themes/themes.js.map +1 -1
  110. package/components/date-range-picker/date-range-picker.base.css.d.ts +1 -0
  111. package/components/date-range-picker/date-range-picker.base.css.js +3 -0
  112. package/components/date-range-picker/date-range-picker.base.css.js.map +1 -0
  113. package/components/date-range-picker/date-range-picker.d.ts +365 -0
  114. package/components/date-range-picker/date-range-picker.js +810 -0
  115. package/components/date-range-picker/date-range-picker.js.map +1 -0
  116. package/components/date-range-picker/predefined-ranges-area.base.css.d.ts +1 -0
  117. package/components/date-range-picker/predefined-ranges-area.base.css.js +3 -0
  118. package/components/date-range-picker/predefined-ranges-area.base.css.js.map +1 -0
  119. package/components/date-range-picker/predefined-ranges-area.d.ts +36 -0
  120. package/components/date-range-picker/predefined-ranges-area.js +115 -0
  121. package/components/date-range-picker/predefined-ranges-area.js.map +1 -0
  122. package/components/date-range-picker/themes/dark/date-range-picker.bootstrap.css.d.ts +1 -0
  123. package/components/date-range-picker/themes/dark/date-range-picker.bootstrap.css.js +3 -0
  124. package/components/date-range-picker/themes/dark/date-range-picker.bootstrap.css.js.map +1 -0
  125. package/components/date-range-picker/themes/dark/date-range-picker.fluent.css.d.ts +1 -0
  126. package/components/date-range-picker/themes/dark/date-range-picker.fluent.css.js +3 -0
  127. package/components/date-range-picker/themes/dark/date-range-picker.fluent.css.js.map +1 -0
  128. package/components/date-range-picker/themes/dark/date-range-picker.indigo.css.d.ts +1 -0
  129. package/components/date-range-picker/themes/dark/date-range-picker.indigo.css.js +3 -0
  130. package/components/date-range-picker/themes/dark/date-range-picker.indigo.css.js.map +1 -0
  131. package/components/date-range-picker/themes/dark/date-range-picker.material.css.d.ts +1 -0
  132. package/components/date-range-picker/themes/dark/date-range-picker.material.css.js +3 -0
  133. package/components/date-range-picker/themes/dark/date-range-picker.material.css.js.map +1 -0
  134. package/components/date-range-picker/themes/light/date-range-picker.bootstrap.css.d.ts +1 -0
  135. package/components/date-range-picker/themes/light/date-range-picker.bootstrap.css.js +3 -0
  136. package/components/date-range-picker/themes/light/date-range-picker.bootstrap.css.js.map +1 -0
  137. package/components/date-range-picker/themes/light/date-range-picker.fluent.css.d.ts +1 -0
  138. package/components/date-range-picker/themes/light/date-range-picker.fluent.css.js +3 -0
  139. package/components/date-range-picker/themes/light/date-range-picker.fluent.css.js.map +1 -0
  140. package/components/date-range-picker/themes/light/date-range-picker.indigo.css.d.ts +1 -0
  141. package/components/date-range-picker/themes/light/date-range-picker.indigo.css.js +3 -0
  142. package/components/date-range-picker/themes/light/date-range-picker.indigo.css.js.map +1 -0
  143. package/components/date-range-picker/themes/light/date-range-picker.material.css.d.ts +1 -0
  144. package/components/date-range-picker/themes/light/date-range-picker.material.css.js +3 -0
  145. package/components/date-range-picker/themes/light/date-range-picker.material.css.js.map +1 -0
  146. package/components/date-range-picker/themes/light/date-range-picker.shared.css.d.ts +1 -0
  147. package/components/date-range-picker/themes/light/date-range-picker.shared.css.js +3 -0
  148. package/components/date-range-picker/themes/light/date-range-picker.shared.css.js.map +1 -0
  149. package/components/date-range-picker/themes/ranges-themes.d.ts +2 -0
  150. package/components/date-range-picker/themes/ranges-themes.js +14 -0
  151. package/components/date-range-picker/themes/ranges-themes.js.map +1 -0
  152. package/components/date-range-picker/themes/shared/date-range-picker.bootstrap.css.d.ts +1 -0
  153. package/components/date-range-picker/themes/shared/date-range-picker.bootstrap.css.js +3 -0
  154. package/components/date-range-picker/themes/shared/date-range-picker.bootstrap.css.js.map +1 -0
  155. package/components/date-range-picker/themes/shared/date-range-picker.common.css.d.ts +1 -0
  156. package/components/date-range-picker/themes/shared/date-range-picker.common.css.js +3 -0
  157. package/components/date-range-picker/themes/shared/date-range-picker.common.css.js.map +1 -0
  158. package/components/date-range-picker/themes/shared/date-range-picker.fluent.css.d.ts +1 -0
  159. package/components/date-range-picker/themes/shared/date-range-picker.fluent.css.js +3 -0
  160. package/components/date-range-picker/themes/shared/date-range-picker.fluent.css.js.map +1 -0
  161. package/components/date-range-picker/themes/shared/date-range-picker.indigo.css.d.ts +1 -0
  162. package/components/date-range-picker/themes/shared/date-range-picker.indigo.css.js +3 -0
  163. package/components/date-range-picker/themes/shared/date-range-picker.indigo.css.js.map +1 -0
  164. package/components/date-range-picker/themes/shared/date-range-picker.material.css.d.ts +1 -0
  165. package/components/date-range-picker/themes/shared/date-range-picker.material.css.js +3 -0
  166. package/components/date-range-picker/themes/shared/date-range-picker.material.css.js.map +1 -0
  167. package/components/date-range-picker/themes/shared/predefined-ranges-area.common.css.d.ts +1 -0
  168. package/components/date-range-picker/themes/shared/predefined-ranges-area.common.css.js +3 -0
  169. package/components/date-range-picker/themes/shared/predefined-ranges-area.common.css.js.map +1 -0
  170. package/components/date-range-picker/themes/shared/predefined-ranges-area.indigo.css.d.ts +1 -0
  171. package/components/date-range-picker/themes/shared/predefined-ranges-area.indigo.css.js +3 -0
  172. package/components/date-range-picker/themes/shared/predefined-ranges-area.indigo.css.js.map +1 -0
  173. package/components/date-range-picker/themes/themes.d.ts +2 -0
  174. package/components/date-range-picker/themes/themes.js +50 -0
  175. package/components/date-range-picker/themes/themes.js.map +1 -0
  176. package/components/date-range-picker/validators.d.ts +26 -0
  177. package/components/date-range-picker/validators.js +57 -0
  178. package/components/date-range-picker/validators.js.map +1 -0
  179. package/components/date-time-input/date-time-input.d.ts +2 -2
  180. package/components/date-time-input/date-time-input.js +7 -9
  181. package/components/date-time-input/date-time-input.js.map +1 -1
  182. package/components/date-time-input/date-util.d.ts +7 -0
  183. package/components/date-time-input/date-util.js +11 -0
  184. package/components/date-time-input/date-util.js.map +1 -1
  185. package/components/dialog/dialog.js +11 -10
  186. package/components/dialog/dialog.js.map +1 -1
  187. package/components/dialog/themes/dialog.base.css.js +1 -1
  188. package/components/dialog/themes/dialog.base.css.js.map +1 -1
  189. package/components/dialog/themes/shared/dialog.indigo.css.js +1 -1
  190. package/components/dialog/themes/shared/dialog.indigo.css.js.map +1 -1
  191. package/components/dropdown/dropdown.js.map +1 -1
  192. package/components/file-input/file-input.d.ts +11 -5
  193. package/components/file-input/file-input.js +23 -19
  194. package/components/file-input/file-input.js.map +1 -1
  195. package/components/file-input/themes/file-input.base.css.js +1 -1
  196. package/components/file-input/themes/file-input.base.css.js.map +1 -1
  197. package/components/input/input-base.d.ts +0 -1
  198. package/components/input/input-base.js +5 -4
  199. package/components/input/input-base.js.map +1 -1
  200. package/components/input/input.d.ts +2 -3
  201. package/components/input/input.js +10 -9
  202. package/components/input/input.js.map +1 -1
  203. package/components/input/themes/dark/input.bootstrap.css.js +1 -1
  204. package/components/input/themes/dark/input.bootstrap.css.js.map +1 -1
  205. package/components/input/themes/dark/input.indigo.css.js +1 -1
  206. package/components/input/themes/dark/input.indigo.css.js.map +1 -1
  207. package/components/input/themes/light/input.bootstrap.css.js +1 -1
  208. package/components/input/themes/light/input.bootstrap.css.js.map +1 -1
  209. package/components/input/themes/light/input.indigo.css.js +1 -1
  210. package/components/input/themes/light/input.indigo.css.js.map +1 -1
  211. package/components/input/themes/light/input.shared.css.js +1 -1
  212. package/components/input/themes/light/input.shared.css.js.map +1 -1
  213. package/components/input/themes/shared/input.bootstrap.css.js +1 -1
  214. package/components/input/themes/shared/input.bootstrap.css.js.map +1 -1
  215. package/components/input/themes/shared/input.common.css.js +1 -1
  216. package/components/input/themes/shared/input.common.css.js.map +1 -1
  217. package/components/input/themes/shared/input.fluent.css.js +1 -1
  218. package/components/input/themes/shared/input.fluent.css.js.map +1 -1
  219. package/components/input/themes/shared/input.indigo.css.js +1 -1
  220. package/components/input/themes/shared/input.indigo.css.js.map +1 -1
  221. package/components/input/themes/shared/input.material.css.js +1 -1
  222. package/components/input/themes/shared/input.material.css.js.map +1 -1
  223. package/components/mask-input/mask-input.d.ts +2 -3
  224. package/components/mask-input/mask-input.js +13 -12
  225. package/components/mask-input/mask-input.js.map +1 -1
  226. package/components/mask-input/mask-parser.d.ts +100 -14
  227. package/components/mask-input/mask-parser.js +134 -117
  228. package/components/mask-input/mask-parser.js.map +1 -1
  229. package/components/nav-drawer/nav-drawer-item.js +2 -6
  230. package/components/nav-drawer/nav-drawer-item.js.map +1 -1
  231. package/components/nav-drawer/nav-drawer.js +5 -6
  232. package/components/nav-drawer/nav-drawer.js.map +1 -1
  233. package/components/progress/base.js +6 -5
  234. package/components/progress/base.js.map +1 -1
  235. package/components/progress/circular-progress.js +7 -15
  236. package/components/progress/circular-progress.js.map +1 -1
  237. package/components/progress/linear-progress.js +5 -5
  238. package/components/progress/linear-progress.js.map +1 -1
  239. package/components/radio/radio.d.ts +11 -12
  240. package/components/radio/radio.js +39 -44
  241. package/components/radio/radio.js.map +1 -1
  242. package/components/radio/utils.js +6 -3
  243. package/components/radio/utils.js.map +1 -1
  244. package/components/rating/rating.d.ts +2 -2
  245. package/components/rating/rating.js +4 -4
  246. package/components/rating/rating.js.map +1 -1
  247. package/components/resize-container/resize-container.js +4 -4
  248. package/components/resize-container/resize-container.js.map +1 -1
  249. package/components/select/select.d.ts +2 -2
  250. package/components/select/select.js +11 -10
  251. package/components/select/select.js.map +1 -1
  252. package/components/select/themes/shared/select.fluent.css.js +1 -1
  253. package/components/select/themes/shared/select.fluent.css.js.map +1 -1
  254. package/components/slider/range-slider.js +1 -1
  255. package/components/slider/range-slider.js.map +1 -1
  256. package/components/slider/slider-base.js +1 -1
  257. package/components/slider/slider-base.js.map +1 -1
  258. package/components/slider/slider.d.ts +2 -3
  259. package/components/slider/slider.js +7 -7
  260. package/components/slider/slider.js.map +1 -1
  261. package/components/stepper/step.js +3 -3
  262. package/components/stepper/step.js.map +1 -1
  263. package/components/tabs/tabs.js +8 -6
  264. package/components/tabs/tabs.js.map +1 -1
  265. package/components/textarea/textarea.d.ts +2 -2
  266. package/components/textarea/textarea.js +7 -6
  267. package/components/textarea/textarea.js.map +1 -1
  268. package/components/textarea/themes/dark/textarea.bootstrap.css.js +1 -1
  269. package/components/textarea/themes/dark/textarea.bootstrap.css.js.map +1 -1
  270. package/components/textarea/themes/dark/textarea.indigo.css.js +1 -1
  271. package/components/textarea/themes/dark/textarea.indigo.css.js.map +1 -1
  272. package/components/textarea/themes/light/textarea.bootstrap.css.js +1 -1
  273. package/components/textarea/themes/light/textarea.bootstrap.css.js.map +1 -1
  274. package/components/textarea/themes/light/textarea.indigo.css.js +1 -1
  275. package/components/textarea/themes/light/textarea.indigo.css.js.map +1 -1
  276. package/components/textarea/themes/light/textarea.shared.css.js +1 -1
  277. package/components/textarea/themes/light/textarea.shared.css.js.map +1 -1
  278. package/components/textarea/themes/shared/textarea.bootstrap.css.js +1 -1
  279. package/components/textarea/themes/shared/textarea.bootstrap.css.js.map +1 -1
  280. package/components/textarea/themes/shared/textarea.fluent.css.js +1 -1
  281. package/components/textarea/themes/shared/textarea.fluent.css.js.map +1 -1
  282. package/components/textarea/themes/shared/textarea.indigo.css.js +1 -1
  283. package/components/textarea/themes/shared/textarea.indigo.css.js.map +1 -1
  284. package/components/textarea/themes/shared/textarea.material.css.js +1 -1
  285. package/components/textarea/themes/shared/textarea.material.css.js.map +1 -1
  286. package/components/textarea/themes/textarea.base.css.js +1 -1
  287. package/components/textarea/themes/textarea.base.css.js.map +1 -1
  288. package/components/tile-manager/tile-manager.js +5 -4
  289. package/components/tile-manager/tile-manager.js.map +1 -1
  290. package/components/tile-manager/tile.js +6 -5
  291. package/components/tile-manager/tile.js.map +1 -1
  292. package/components/tooltip/tooltip.d.ts +24 -9
  293. package/components/tooltip/tooltip.js +22 -19
  294. package/components/tooltip/tooltip.js.map +1 -1
  295. package/components/tree/tree-item.js +5 -3
  296. package/components/tree/tree-item.js.map +1 -1
  297. package/components/validation-container/validation-container.js +4 -11
  298. package/components/validation-container/validation-container.js.map +1 -1
  299. package/custom-elements.json +21432 -17768
  300. package/igniteui-webcomponents.css-data.json +1 -1
  301. package/igniteui-webcomponents.html-data.json +1 -1
  302. package/index.d.ts +4 -1
  303. package/index.js +1 -0
  304. package/index.js.map +1 -1
  305. package/package.json +3 -2
  306. package/web-types.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"focus-ring.js","sourceRoot":"","sources":["../../../../src/components/common/controllers/focus-ring.ts"],"names":[],"mappings":"AAUA,MAAM,OAAO,2BAA2B;IAOtC,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,YAAqB,IAA0C;QAA1C,SAAI,GAAJ,IAAI,CAAsC;QATvD,aAAQ,GAAG,KAAK,CAAC;QAmClB,UAAK,GAAG,GAAG,EAAE;YAClB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;QAC7B,CAAC,CAAC;QA5BA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAEM,aAAa;QAClB,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;IAEM,gBAAgB;QACrB,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC;IAEM,WAAW;QAChB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACvB,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;IAC7B,CAAC;CAYF;AAKD,MAAM,UAAU,oBAAoB,CAClC,IAA0C;IAE1C,OAAO,IAAI,2BAA2B,CAAC,IAAI,CAAC,CAAC;AAC/C,CAAC","sourcesContent":["import type { ReactiveController, ReactiveControllerHost } from 'lit';\n\n/* blazorSuppress */\n/**\n * A controller class which determines whether a focus ring should be shown to indicate keyboard focus.\n * Focus rings are visible only when the user is interacting with a keyboard, not with a mouse, touch, or other input methods.\n *\n * By default the class attaches a keyup event handler on the component host and will update its keyboard focus\n * state based on it.\n */\nexport class KeyboardFocusRingController implements ReactiveController {\n private readonly _host: ReactiveControllerHost & HTMLElement;\n private _focused = false;\n\n /**\n * Gets whether the current focus state is activated through a keyboard interaction.\n */\n public get focused() {\n return this._focused;\n }\n\n constructor(readonly host: ReactiveControllerHost & HTMLElement) {\n this._host = host;\n host.addController(this);\n }\n\n public hostConnected() {\n this._host.addEventListener('keyup', this);\n }\n\n public hostDisconnected() {\n this._host.removeEventListener('keyup', this);\n }\n\n public handleEvent() {\n if (!this._focused) {\n this._focused = true;\n }\n this._host.requestUpdate();\n }\n\n /**\n * Resets the keyboard focus state.\n *\n * Usually called on blur of the component or when a pointer based interaction\n * is executed.\n */\n public reset = () => {\n this._focused = false;\n this._host.requestUpdate();\n };\n}\n\n/**\n * Adds a {@link KeyboardFocusRingController} responsible for managing keyboard focus state.\n */\nexport function addKeyboardFocusRing(\n host: ReactiveControllerHost & HTMLElement\n) {\n return new KeyboardFocusRingController(host);\n}\n"]}
1
+ {"version":3,"file":"focus-ring.js","sourceRoot":"","sources":["../../../../src/components/common/controllers/focus-ring.ts"],"names":[],"mappings":"AAmBA,MAAM,2BAA2B;IAa/B,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACjC,CAAC;IAED,YAAY,IAA0C;QAT9C,uBAAkB,GAAG,KAAK,CAAC;QAUjC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAGM,aAAa;QAClB,KAAK,MAAM,KAAK,IAAI,2BAA2B,CAAC,OAAO,EAAE,CAAC;YACxD,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAGM,gBAAgB;QACrB,KAAK,MAAM,KAAK,IAAI,2BAA2B,CAAC,OAAO,EAAE,CAAC;YACxD,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAGM,WAAW,CAAC,KAAY;QAC7B,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC;QACjD,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;IAC7B,CAAC;;AAvCuB,mCAAO,GAAG;IAChC,OAAO;IACP,UAAU;IACV,aAAa;CACL,AAJqB,CAIpB;AA8Cb,MAAM,UAAU,oBAAoB,CAClC,IAA0C;IAE1C,OAAO,IAAI,2BAA2B,CAAC,IAAI,CAAC,CAAC;AAC/C,CAAC","sourcesContent":["import type { ReactiveController, ReactiveControllerHost } from 'lit';\n\n/**\n * A controller class which determines whether a focus ring should be shown to indicate keyboard focus.\n * Focus rings are visible only when the user is interacting with a keyboard, not with a mouse, touch, or other input methods.\n *\n * By default the class attaches a keyup event handler on the component host and will update its keyboard focus\n * state based on it.\n *\n * **Important Note:** This controller is designed for use with **atomic web components** that represent single,\n * interactive elements (e.g., buttons, form fields, interactive icons). It helps these components correctly\n * display a focus indicator *only* when keyboard navigation is occurring, improving accessibility without\n * visual clutter during mouse or touch interactions.\n *\n * **Do not use this controller as a general-purpose shortcut for managing focus state in complex components or layouts.**\n * Misusing it in this way can lead to incorrect focus ring behavior, accessibility issues, and make your\n * application harder to maintain. For managing focus within larger, composite components, consider alternative\n * strategies like ARIA attributes, managing `tabindex`, or a bespoke implementation if needed.\n */\nclass KeyboardFocusRingController implements ReactiveController {\n private static readonly _events = [\n 'keyup',\n 'focusout',\n 'pointerdown',\n ] as const;\n\n private readonly _host: ReactiveControllerHost & HTMLElement;\n private _isKeyboardFocused = false;\n\n /**\n * Gets whether the current focus state is activated through a keyboard interaction.\n */\n public get focused(): boolean {\n return this._isKeyboardFocused;\n }\n\n constructor(host: ReactiveControllerHost & HTMLElement) {\n this._host = host;\n host.addController(this);\n }\n\n /** @internal */\n public hostConnected(): void {\n for (const event of KeyboardFocusRingController._events) {\n this._host.addEventListener(event, this, { passive: true });\n }\n }\n\n /** @internal */\n public hostDisconnected(): void {\n for (const event of KeyboardFocusRingController._events) {\n this._host.removeEventListener(event, this);\n }\n }\n\n /** @internal */\n public handleEvent(event: Event): void {\n this._isKeyboardFocused = event.type === 'keyup';\n this._host.requestUpdate();\n }\n}\n\nexport type { KeyboardFocusRingController };\n\n/**\n * Adds a {@link KeyboardFocusRingController} responsible for managing keyboard focus state.\n *\n * This utility function is intended for use with **atomic web components** that require\n * dynamic focus ring visibility based on keyboard interaction.\n */\nexport function addKeyboardFocusRing(\n host: ReactiveControllerHost & HTMLElement\n): KeyboardFocusRingController {\n return new KeyboardFocusRingController(host);\n}\n"]}
@@ -16,8 +16,8 @@ export declare const altKey: "Alt";
16
16
  export declare const ctrlKey: "Ctrl";
17
17
  export declare const metaKey: "Meta";
18
18
  export declare const shiftKey: "Shift";
19
- export type KeyBindingHandler = (event: KeyboardEvent) => void;
20
- export type KeyBindingObserverCleanup = {
19
+ type KeyBindingHandler = (event: KeyboardEvent) => void;
20
+ type KeyBindingObserverCleanup = {
21
21
  unsubscribe: () => void;
22
22
  };
23
23
  /**
@@ -28,7 +28,7 @@ export type KeyBindingObserverCleanup = {
28
28
  *
29
29
  * When `true` is returned, the current event is ignored.
30
30
  */
31
- export type KeyBindingSkipCallback = (node: Element, event: KeyboardEvent) => boolean;
31
+ type KeyBindingSkipCallback = (node: Element, event: KeyboardEvent) => boolean;
32
32
  /**
33
33
  * The event type which will trigger the bound handler.
34
34
  *
@@ -37,12 +37,12 @@ export type KeyBindingSkipCallback = (node: Element, event: KeyboardEvent) => bo
37
37
  * that after the handler is invoked the pressed state of the key is reset
38
38
  * in the controller.
39
39
  */
40
- export type KeyBindingTrigger = 'keydown' | 'keyup' | 'keydownRepeat';
40
+ type KeyBindingTrigger = 'keydown' | 'keyup' | 'keydownRepeat';
41
41
  /**
42
42
  * Configuration object for the controller.
43
43
  * @ignore
44
44
  */
45
- export interface KeyBindingControllerOptions {
45
+ interface KeyBindingControllerOptions {
46
46
  /**
47
47
  * By default, the controller listens for keypress events in the context of the host element.
48
48
  * If you pass a `ref`, you can limit the observation to a certain DOM part of the host scope.
@@ -84,7 +84,7 @@ export interface KeyBindingControllerOptions {
84
84
  * Configuration object for customizing the behavior of
85
85
  * the registered handler.
86
86
  */
87
- export interface KeyBindingOptions {
87
+ interface KeyBindingOptions {
88
88
  /**
89
89
  * The event type(s) on which the handler will be invoked.
90
90
  *
@@ -100,51 +100,58 @@ export interface KeyBindingOptions {
100
100
  */
101
101
  stopPropagation?: boolean;
102
102
  }
103
- export declare function parseKeys(keys: string | string[]): {
104
- keys: string[];
105
- modifiers: string[];
106
- };
107
103
  declare class KeyBindingController implements ReactiveController {
108
- protected _host: ReactiveControllerHost & Element;
109
- protected _ref?: Ref;
110
- protected _observedElement?: Element;
111
- protected _options?: KeyBindingControllerOptions;
112
- private bindings;
113
- private pressedKeys;
114
- protected get _element(): Element | undefined;
115
- /**
116
- * Sets the controller to listen for keyboard events on an arbitrary `element` in the page context.
117
- * All the configuration and event handlers are applied as well.
118
- *
119
- * Returns an object with an `unsubscribe` function which should be called when the observing of keyboard
120
- * events on the `element` should cease.
121
- */
122
- observeElement(element: Element): KeyBindingObserverCleanup;
104
+ private static readonly _defaultOptions;
105
+ private readonly _host;
106
+ private readonly _ref?;
107
+ private readonly _bindings;
108
+ private readonly _allowedKeys;
109
+ private readonly _pressedKeys;
110
+ private readonly _options;
111
+ private readonly _skipSelector;
112
+ private _observedElement?;
113
+ private get _element();
123
114
  constructor(host: ReactiveControllerHost & Element, options?: KeyBindingControllerOptions);
124
115
  /**
125
116
  * Checks and executes any event modifiers that are present in the matched binding.
126
117
  */
127
- private eventModifiersMatch;
128
- private bindingMatches;
129
- private shouldSkip;
118
+ private _applyEventModifiers;
119
+ private _bindingMatches;
120
+ private _shouldSkip;
121
+ /** @internal */
122
+ hostConnected(): void;
123
+ /** @internal */
124
+ hostDisconnected(): void;
125
+ /** @internal */
130
126
  handleEvent(event: KeyboardEvent): void;
131
127
  /**
132
128
  * Registers a keybinding handler.
133
129
  */
134
- set(key: string | string[], handler: KeyBindingHandler, options?: KeyBindingOptions): this;
130
+ set(key: string | string[], handler: KeyBindingHandler, bindingOptions?: KeyBindingOptions): this;
135
131
  /**
136
132
  * Register a handler function which is called when the target receives a key
137
133
  * which "activates" it.
138
134
  *
139
- * In the browser context this is usually either an Enter and/or Space keypress.
135
+ * In the browser context this is usually either an Enter and Space bar keypress.
140
136
  */
141
137
  setActivateHandler(handler: KeyBindingHandler, options?: KeyBindingOptions): this;
142
- hostConnected(): void;
143
- hostDisconnected(): void;
138
+ /**
139
+ * Sets the controller to listen for keyboard events on an arbitrary `element` in the page context.
140
+ * All the configuration and event handlers are applied as well.
141
+ *
142
+ * Returns an object with an `unsubscribe` function which should be called when the observing of keyboard
143
+ * events on the `element` should cease.
144
+ */
145
+ observeElement(element: Element): KeyBindingObserverCleanup;
144
146
  }
147
+ /** @internal */
148
+ export declare function parseKeys(keys: string | string[]): {
149
+ keys: string[];
150
+ modifiers: string[];
151
+ };
145
152
  /**
146
153
  * Creates a keybinding controller and adds to it to the passed `element`
147
154
  * with the provided `options`.
148
155
  */
149
156
  export declare function addKeybindings(element: ReactiveControllerHost & Element, options?: KeyBindingControllerOptions): KeyBindingController;
150
- export {};
157
+ export type { KeyBindingHandler, KeyBindingObserverCleanup, KeyBindingSkipCallback, KeyBindingTrigger, KeyBindingControllerOptions, KeyBindingOptions, KeyBindingController, };
@@ -1,4 +1,4 @@
1
- import { findElementFromEventPath } from '../util.js';
1
+ import { asArray, findElementFromEventPath, isFunction } from '../util.js';
2
2
  export const arrowLeft = 'ArrowLeft';
3
3
  export const arrowRight = 'ArrowRight';
4
4
  export const arrowUp = 'ArrowUp';
@@ -15,15 +15,15 @@ export const altKey = 'Alt';
15
15
  export const ctrlKey = 'Ctrl';
16
16
  export const metaKey = 'Meta';
17
17
  export const shiftKey = 'Shift';
18
- const Modifiers = new Map([altKey, ctrlKey, metaKey, shiftKey].map((key) => {
19
- const mod = key.toLowerCase();
20
- return key === ctrlKey ? ['control', mod] : [mod, mod];
21
- }));
22
- const defaultOptions = {
23
- skip: ['input', 'textarea', 'select'],
24
- };
18
+ const Modifiers = new Map([
19
+ [altKey.toLowerCase(), altKey.toLowerCase()],
20
+ [ctrlKey.toLowerCase(), ctrlKey.toLowerCase()],
21
+ [metaKey.toLowerCase(), metaKey.toLowerCase()],
22
+ [shiftKey.toLowerCase(), shiftKey.toLowerCase()],
23
+ ]);
24
+ const ALL_MODIFIER_VALUES = Array.from(Modifiers.values()).sort();
25
25
  function normalizeKeys(keys) {
26
- return (Array.isArray(keys) ? keys : [keys]).map((key) => key.toLowerCase());
26
+ return asArray(keys).map((key) => key.toLowerCase());
27
27
  }
28
28
  function isKeydown(event) {
29
29
  return event.type === 'keydown';
@@ -42,47 +42,31 @@ function isKeyupTrigger(triggers) {
42
42
  function isKeydownRepeatTrigger(triggers) {
43
43
  return triggers ? triggers.includes('keydownRepeat') : false;
44
44
  }
45
- export function parseKeys(keys) {
46
- const parsed = normalizeKeys(keys);
47
- return {
48
- keys: parsed.filter((key) => !Modifiers.has(key)),
49
- modifiers: parsed.filter((key) => Modifiers.has(key)),
50
- };
51
- }
52
45
  function createCombinationKey(keys, modifiers) {
53
- return Array.from(Modifiers.values())
54
- .filter((mod) => modifiers.includes(mod))
55
- .concat(keys)
56
- .join('+');
46
+ const sortedKeys = keys.toSorted();
47
+ const sortedModifiers = ALL_MODIFIER_VALUES.filter((mod) => modifiers.includes(mod)).sort();
48
+ return sortedModifiers.concat(sortedKeys).join('+');
57
49
  }
58
50
  class KeyBindingController {
59
51
  get _element() {
60
52
  if (this._observedElement) {
61
53
  return this._observedElement;
62
54
  }
63
- return this._ref ? this._ref.value : this._host;
64
- }
65
- observeElement(element) {
66
- element.addEventListener('keydown', this);
67
- element.addEventListener('keyup', this);
68
- this._observedElement = element;
69
- return {
70
- unsubscribe: () => {
71
- this._observedElement?.removeEventListener('keydown', this);
72
- this._observedElement?.removeEventListener('keyup', this);
73
- this._observedElement = undefined;
74
- },
75
- };
55
+ return this._ref?.value || this._host;
76
56
  }
77
57
  constructor(host, options) {
78
- this.bindings = new Map();
79
- this.pressedKeys = new Set();
58
+ this._bindings = new Map();
59
+ this._allowedKeys = new Set();
60
+ this._pressedKeys = new Set();
80
61
  this._host = host;
81
62
  this._ref = options?.ref;
82
- this._options = { ...defaultOptions, ...options };
63
+ this._options = { ...KeyBindingController._defaultOptions, ...options };
64
+ if (Array.isArray(this._options.skip)) {
65
+ this._skipSelector = this._options.skip.join(',');
66
+ }
83
67
  host.addController(this);
84
68
  }
85
- eventModifiersMatch(binding, event) {
69
+ _applyEventModifiers(binding, event) {
86
70
  if (binding.options?.preventDefault) {
87
71
  event.preventDefault();
88
72
  }
@@ -90,7 +74,7 @@ class KeyBindingController {
90
74
  event.stopPropagation();
91
75
  }
92
76
  }
93
- bindingMatches(binding, event) {
77
+ _bindingMatches(binding, event) {
94
78
  const triggers = binding.options?.triggers ?? ['keydown'];
95
79
  if (isKeydown(event) && isKeydownTrigger(triggers)) {
96
80
  return true;
@@ -100,65 +84,93 @@ class KeyBindingController {
100
84
  }
101
85
  return false;
102
86
  }
103
- shouldSkip(event) {
87
+ _shouldSkip(event) {
104
88
  const skip = this._options?.skip;
89
+ if (!this._allowedKeys.has(event.key.toLowerCase())) {
90
+ return true;
91
+ }
105
92
  if (!findElementFromEventPath((e) => e === this._element, event)) {
106
93
  return true;
107
94
  }
108
- if (!skip) {
109
- return false;
95
+ if (Array.isArray(skip)) {
96
+ if (!this._skipSelector) {
97
+ return false;
98
+ }
99
+ return Boolean(findElementFromEventPath(this._skipSelector, event));
100
+ }
101
+ if (isFunction(skip)) {
102
+ return skip.call(this._host, event.target, event);
110
103
  }
111
- return Array.isArray(skip)
112
- ? findElementFromEventPath(skip.join(), event)
113
- : skip.call(this._host, event.target, event);
104
+ return false;
105
+ }
106
+ hostConnected() {
107
+ this._host.addEventListener('keyup', this);
108
+ this._host.addEventListener('keydown', this);
109
+ }
110
+ hostDisconnected() {
111
+ this._host.removeEventListener('keyup', this);
112
+ this._host.removeEventListener('keydown', this);
114
113
  }
115
114
  handleEvent(event) {
116
- if (this.shouldSkip(event)) {
115
+ if (this._shouldSkip(event)) {
117
116
  return;
118
117
  }
119
118
  const key = event.key.toLowerCase();
120
- Modifiers.has(key) ? this.pressedKeys.clear() : this.pressedKeys.add(key);
121
- const pendingKeys = Array.from(this.pressedKeys);
122
- const modifiers = Array.from(Modifiers.values()).filter((mod) => event[`${mod}Key`]);
123
- const binding = this.bindings.get(createCombinationKey(pendingKeys, modifiers));
124
- if (binding && this.bindingMatches(binding, event)) {
125
- this.eventModifiersMatch(binding, event);
119
+ if (!Modifiers.has(key)) {
120
+ this._pressedKeys.add(key);
121
+ }
122
+ const activeModifiers = ALL_MODIFIER_VALUES.filter((mod) => event[`${mod}Key`]);
123
+ const combination = createCombinationKey(Array.from(this._pressedKeys), activeModifiers);
124
+ const binding = this._bindings.get(combination);
125
+ if (binding && this._bindingMatches(binding, event)) {
126
+ this._applyEventModifiers(binding, event);
126
127
  binding.handler.call(this._host, event);
127
128
  if (isKeydownRepeatTrigger(binding.options?.triggers)) {
128
- this.pressedKeys.delete(key);
129
+ this._pressedKeys.delete(key);
129
130
  }
130
131
  }
131
132
  if (isKeyup(event) && !Modifiers.has(key)) {
132
- this.pressedKeys.delete(key);
133
+ this._pressedKeys.delete(key);
133
134
  }
134
135
  }
135
- set(key, handler, options) {
136
+ set(key, handler, bindingOptions) {
136
137
  const { keys, modifiers } = parseKeys(key);
137
138
  const combination = createCombinationKey(keys, modifiers);
138
- const _options = { ...this._options?.bindingDefaults, ...options };
139
- this.bindings.set(combination, {
140
- keys,
141
- handler,
142
- options: _options,
143
- modifiers,
144
- });
139
+ const options = { ...this._options?.bindingDefaults, ...bindingOptions };
140
+ for (const each of [...keys, ...modifiers]) {
141
+ this._allowedKeys.add(each);
142
+ }
143
+ this._bindings.set(combination, { keys, handler, options, modifiers });
145
144
  return this;
146
145
  }
147
146
  setActivateHandler(handler, options) {
148
- for (const key of [enterKey, spaceBar]) {
149
- this.set(key, handler, options);
150
- }
147
+ this.set(enterKey, handler, options);
148
+ this.set(spaceBar, handler, options);
151
149
  return this;
152
150
  }
153
- hostConnected() {
154
- this._host.addEventListener('keyup', this);
155
- this._host.addEventListener('keydown', this);
156
- }
157
- hostDisconnected() {
158
- this._host.removeEventListener('keyup', this);
159
- this._host.removeEventListener('keydown', this);
151
+ observeElement(element) {
152
+ element.addEventListener('keydown', this);
153
+ element.addEventListener('keyup', this);
154
+ this._observedElement = element;
155
+ return {
156
+ unsubscribe: () => {
157
+ this._observedElement?.removeEventListener('keydown', this);
158
+ this._observedElement?.removeEventListener('keyup', this);
159
+ this._observedElement = undefined;
160
+ },
161
+ };
160
162
  }
161
163
  }
164
+ KeyBindingController._defaultOptions = {
165
+ skip: ['input', 'textarea', 'select'],
166
+ };
167
+ export function parseKeys(keys) {
168
+ const normalizedKeys = normalizeKeys(keys);
169
+ return {
170
+ keys: normalizedKeys.filter((key) => !Modifiers.has(key)),
171
+ modifiers: normalizedKeys.filter((key) => Modifiers.has(key)),
172
+ };
173
+ }
162
174
  export function addKeybindings(element, options) {
163
175
  return new KeyBindingController(element, options);
164
176
  }
@@ -1 +1 @@
1
- {"version":3,"file":"key-bindings.js","sourceRoot":"","sources":["../../../../src/components/common/controllers/key-bindings.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ReactiveController, ReactiveControllerHost } from 'lit';\nimport type { Ref } from 'lit/directives/ref.js';\n\nimport { findElementFromEventPath } from '../util.js';\n\n/* Common keys */\nexport const arrowLeft = 'ArrowLeft' as const;\nexport const arrowRight = 'ArrowRight' as const;\nexport const arrowUp = 'ArrowUp' as const;\nexport const arrowDown = 'ArrowDown' as const;\nexport const enterKey = 'Enter' as const;\nexport const spaceBar = ' ' as const;\nexport const escapeKey = 'Escape' as const;\nexport const homeKey = 'Home' as const;\nexport const endKey = 'End' as const;\nexport const pageUpKey = 'PageUp' as const;\nexport const pageDownKey = 'PageDown' as const;\nexport const tabKey = 'Tab' as const;\n\n/* Modifiers */\nexport const altKey = 'Alt' as const;\nexport const ctrlKey = 'Ctrl' as const;\nexport const metaKey = 'Meta' as const;\nexport const shiftKey = 'Shift' as const;\n\n/* Types */\nexport type KeyBindingHandler = (event: KeyboardEvent) => void;\nexport type KeyBindingObserverCleanup = { unsubscribe: () => void };\n\n/**\n * Whether the current event should be ignored by the controller.\n *\n * @param node - The event target\n * @param event - The event object\n *\n * When `true` is returned, the current event is ignored.\n */\nexport type KeyBindingSkipCallback = (\n node: Element,\n event: KeyboardEvent\n) => boolean;\n\n/**\n * The event type which will trigger the bound handler.\n *\n * @remarks\n * `keydownRepeat` is similar to `keydown` with the exception\n * that after the handler is invoked the pressed state of the key is reset\n * in the controller.\n */\nexport type KeyBindingTrigger = 'keydown' | 'keyup' | 'keydownRepeat';\n\n/**\n * Configuration object for the controller.\n * @ignore\n */\nexport interface KeyBindingControllerOptions {\n /**\n * By default, the controller listens for keypress events in the context of the host element.\n * If you pass a `ref`, you can limit the observation to a certain DOM part of the host scope.\n */\n ref?: Ref;\n /**\n * Option to ignore key press events.\n *\n * If passed an array of CSS selectors, it will ignore key presses originating from elements in the event composed path\n * that match one of the selectors.\n * Otherwise you can pass a {@link KeyBindingSkipCallback} function.\n *\n * Defaults to `['input', 'textarea', 'select']`.\n *\n * @example\n * ```ts\n * {\n * // Skip events originating from elements with `readonly` attribute\n * skip: ['[readonly]']\n * }\n * ...\n * {\n * // Same as above but with a callback\n * skip: (node: Element) => node.hasAttribute('readonly')\n * }\n * ```\n */\n skip?: string[] | KeyBindingSkipCallback;\n /**\n * A set of KeyBindingOptions configuration which is applied to every handler\n * that is added to the controller.\n *\n * Any additional KeyBindingOptions values passed when `set` is called\n * will be merged with `bindingDefaults`.\n */\n bindingDefaults?: KeyBindingOptions;\n}\n\n/**\n * Configuration object for customizing the behavior of\n * the registered handler.\n */\nexport interface KeyBindingOptions {\n /**\n * The event type(s) on which the handler will be invoked.\n *\n * Defaults to `keydown` if not set.\n */\n triggers?: KeyBindingTrigger[];\n /**\n * Whether to call `preventDefault` on the target event before the handler is invoked.\n */\n preventDefault?: boolean;\n /**\n * Whether to call `stopPropagation` on the target event before the handler is invoked.\n */\n stopPropagation?: boolean;\n}\n\ninterface KeyBinding {\n keys: string[];\n handler: KeyBindingHandler;\n options?: KeyBindingOptions;\n modifiers?: string[];\n}\n\nconst Modifiers: Map<string, string> = new Map(\n [altKey, ctrlKey, metaKey, shiftKey].map((key) => {\n const mod = key.toLowerCase();\n return key === ctrlKey ? ['control', mod] : [mod, mod];\n })\n);\n\nconst defaultOptions: KeyBindingControllerOptions = {\n skip: ['input', 'textarea', 'select'],\n};\n\nfunction normalizeKeys(keys: string | string[]) {\n return (Array.isArray(keys) ? keys : [keys]).map((key) => key.toLowerCase());\n}\n\nfunction isKeydown(event: Event) {\n return event.type === 'keydown';\n}\n\nfunction isKeyup(event: Event) {\n return event.type === 'keyup';\n}\n\nfunction isKeydownTrigger(triggers?: KeyBindingTrigger[]) {\n return triggers\n ? triggers.includes('keydown') || isKeydownRepeatTrigger(triggers)\n : false;\n}\n\nfunction isKeyupTrigger(triggers?: KeyBindingTrigger[]) {\n return triggers ? triggers.includes('keyup') : false;\n}\n\nfunction isKeydownRepeatTrigger(triggers?: KeyBindingTrigger[]) {\n return triggers ? triggers.includes('keydownRepeat') : false;\n}\n\nexport function parseKeys(keys: string | string[]) {\n const parsed = normalizeKeys(keys);\n return {\n keys: parsed.filter((key) => !Modifiers.has(key)),\n modifiers: parsed.filter((key) => Modifiers.has(key)),\n };\n}\n\nfunction createCombinationKey(keys: string[], modifiers: string[]) {\n return Array.from(Modifiers.values())\n .filter((mod) => modifiers.includes(mod))\n .concat(keys)\n .join('+');\n}\n\nclass KeyBindingController implements ReactiveController {\n protected _host: ReactiveControllerHost & Element;\n protected _ref?: Ref;\n protected _observedElement?: Element;\n protected _options?: KeyBindingControllerOptions;\n private bindings = new Map<string, KeyBinding>();\n private pressedKeys = new Set<string>();\n\n protected get _element() {\n if (this._observedElement) {\n return this._observedElement;\n }\n return this._ref ? this._ref.value : this._host;\n }\n\n /**\n * Sets the controller to listen for keyboard events on an arbitrary `element` in the page context.\n * All the configuration and event handlers are applied as well.\n *\n * Returns an object with an `unsubscribe` function which should be called when the observing of keyboard\n * events on the `element` should cease.\n */\n public observeElement(element: Element): KeyBindingObserverCleanup {\n element.addEventListener('keydown', this);\n element.addEventListener('keyup', this);\n this._observedElement = element;\n\n return {\n unsubscribe: () => {\n this._observedElement?.removeEventListener('keydown', this);\n this._observedElement?.removeEventListener('keyup', this);\n this._observedElement = undefined;\n },\n };\n }\n\n constructor(\n host: ReactiveControllerHost & Element,\n options?: KeyBindingControllerOptions\n ) {\n this._host = host;\n this._ref = options?.ref;\n this._options = { ...defaultOptions, ...options };\n host.addController(this);\n }\n\n /**\n * Checks and executes any event modifiers that are present in the matched binding.\n */\n private eventModifiersMatch(binding: KeyBinding, event: KeyboardEvent) {\n if (binding.options?.preventDefault) {\n event.preventDefault();\n }\n\n if (binding.options?.stopPropagation) {\n event.stopPropagation();\n }\n }\n\n private bindingMatches(binding: KeyBinding, event: KeyboardEvent) {\n const triggers = binding.options?.triggers ?? ['keydown'];\n\n if (isKeydown(event) && isKeydownTrigger(triggers)) {\n return true;\n }\n\n if (isKeyup(event) && isKeyupTrigger(triggers)) {\n return true;\n }\n\n return false;\n }\n\n private shouldSkip(event: KeyboardEvent) {\n const skip = this._options?.skip;\n\n if (!findElementFromEventPath((e) => e === this._element, event)) {\n return true;\n }\n\n if (!skip) {\n return false;\n }\n\n return Array.isArray(skip)\n ? findElementFromEventPath(skip.join(), event)\n : skip.call(this._host, event.target as Element, event);\n }\n\n public handleEvent(event: KeyboardEvent) {\n if (this.shouldSkip(event)) {\n return;\n }\n\n const key = event.key.toLowerCase();\n Modifiers.has(key) ? this.pressedKeys.clear() : this.pressedKeys.add(key);\n\n const pendingKeys = Array.from(this.pressedKeys);\n const modifiers = Array.from(Modifiers.values()).filter(\n (mod) => event[`${mod}Key` as keyof KeyboardEvent]\n );\n\n const binding = this.bindings.get(\n createCombinationKey(pendingKeys, modifiers)\n );\n\n if (binding && this.bindingMatches(binding, event)) {\n this.eventModifiersMatch(binding, event);\n binding.handler.call(this._host, event);\n\n if (isKeydownRepeatTrigger(binding.options?.triggers)) {\n this.pressedKeys.delete(key);\n }\n }\n\n if (isKeyup(event) && !Modifiers.has(key)) {\n this.pressedKeys.delete(key);\n }\n }\n\n /**\n * Registers a keybinding handler.\n */\n public set(\n key: string | string[],\n handler: KeyBindingHandler,\n options?: KeyBindingOptions\n ) {\n const { keys, modifiers } = parseKeys(key);\n const combination = createCombinationKey(keys, modifiers);\n const _options = { ...this._options?.bindingDefaults, ...options };\n\n this.bindings.set(combination, {\n keys,\n handler,\n options: _options,\n modifiers,\n });\n\n return this;\n }\n\n /**\n * Register a handler function which is called when the target receives a key\n * which \"activates\" it.\n *\n * In the browser context this is usually either an Enter and/or Space keypress.\n */\n public setActivateHandler(\n handler: KeyBindingHandler,\n options?: KeyBindingOptions\n ) {\n for (const key of [enterKey, spaceBar]) {\n this.set(key, handler, options);\n }\n\n return this;\n }\n\n public hostConnected(): void {\n this._host.addEventListener('keyup', this);\n this._host.addEventListener('keydown', this);\n }\n\n public hostDisconnected(): void {\n this._host.removeEventListener('keyup', this);\n this._host.removeEventListener('keydown', this);\n }\n}\n\n/**\n * Creates a keybinding controller and adds to it to the passed `element`\n * with the provided `options`.\n */\nexport function addKeybindings(\n element: ReactiveControllerHost & Element,\n options?: KeyBindingControllerOptions\n) {\n return new KeyBindingController(element, options);\n}\n"]}
1
+ {"version":3,"file":"key-bindings.js","sourceRoot":"","sources":["../../../../src/components/common/controllers/key-bindings.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ReactiveController, ReactiveControllerHost } from 'lit';\nimport type { Ref } from 'lit/directives/ref.js';\nimport { asArray, findElementFromEventPath, isFunction } from '../util.js';\n\n//#region Keys and modifiers\n\n/* Common keys */\nexport const arrowLeft = 'ArrowLeft' as const;\nexport const arrowRight = 'ArrowRight' as const;\nexport const arrowUp = 'ArrowUp' as const;\nexport const arrowDown = 'ArrowDown' as const;\nexport const enterKey = 'Enter' as const;\nexport const spaceBar = ' ' as const;\nexport const escapeKey = 'Escape' as const;\nexport const homeKey = 'Home' as const;\nexport const endKey = 'End' as const;\nexport const pageUpKey = 'PageUp' as const;\nexport const pageDownKey = 'PageDown' as const;\nexport const tabKey = 'Tab' as const;\n\n/* Modifiers */\nexport const altKey = 'Alt' as const;\nexport const ctrlKey = 'Ctrl' as const;\nexport const metaKey = 'Meta' as const;\nexport const shiftKey = 'Shift' as const;\n\n//#endregion\n\n//#region Types\n\n/* Types */\ntype KeyBindingHandler = (event: KeyboardEvent) => void;\ntype KeyBindingObserverCleanup = { unsubscribe: () => void };\n\n/**\n * Whether the current event should be ignored by the controller.\n *\n * @param node - The event target\n * @param event - The event object\n *\n * When `true` is returned, the current event is ignored.\n */\ntype KeyBindingSkipCallback = (node: Element, event: KeyboardEvent) => boolean;\n\n/**\n * The event type which will trigger the bound handler.\n *\n * @remarks\n * `keydownRepeat` is similar to `keydown` with the exception\n * that after the handler is invoked the pressed state of the key is reset\n * in the controller.\n */\ntype KeyBindingTrigger = 'keydown' | 'keyup' | 'keydownRepeat';\n\n/**\n * Configuration object for the controller.\n * @ignore\n */\ninterface KeyBindingControllerOptions {\n /**\n * By default, the controller listens for keypress events in the context of the host element.\n * If you pass a `ref`, you can limit the observation to a certain DOM part of the host scope.\n */\n ref?: Ref;\n /**\n * Option to ignore key press events.\n *\n * If passed an array of CSS selectors, it will ignore key presses originating from elements in the event composed path\n * that match one of the selectors.\n * Otherwise you can pass a {@link KeyBindingSkipCallback} function.\n *\n * Defaults to `['input', 'textarea', 'select']`.\n *\n * @example\n * ```ts\n * {\n * // Skip events originating from elements with `readonly` attribute\n * skip: ['[readonly]']\n * }\n * ...\n * {\n * // Same as above but with a callback\n * skip: (node: Element) => node.hasAttribute('readonly')\n * }\n * ```\n */\n skip?: string[] | KeyBindingSkipCallback;\n /**\n * A set of KeyBindingOptions configuration which is applied to every handler\n * that is added to the controller.\n *\n * Any additional KeyBindingOptions values passed when `set` is called\n * will be merged with `bindingDefaults`.\n */\n bindingDefaults?: KeyBindingOptions;\n}\n\n/**\n * Configuration object for customizing the behavior of\n * the registered handler.\n */\ninterface KeyBindingOptions {\n /**\n * The event type(s) on which the handler will be invoked.\n *\n * Defaults to `keydown` if not set.\n */\n triggers?: KeyBindingTrigger[];\n /**\n * Whether to call `preventDefault` on the target event before the handler is invoked.\n */\n preventDefault?: boolean;\n /**\n * Whether to call `stopPropagation` on the target event before the handler is invoked.\n */\n stopPropagation?: boolean;\n}\n\ninterface KeyBinding {\n keys: string[];\n handler: KeyBindingHandler;\n options?: KeyBindingOptions;\n modifiers: string[];\n}\n\n//#endregion\n\n//#region Internal functions and constants\n\nconst Modifiers: Map<string, string> = new Map([\n [altKey.toLowerCase(), altKey.toLowerCase()],\n [ctrlKey.toLowerCase(), ctrlKey.toLowerCase()],\n [metaKey.toLowerCase(), metaKey.toLowerCase()],\n [shiftKey.toLowerCase(), shiftKey.toLowerCase()],\n]);\n\nconst ALL_MODIFIER_VALUES = Array.from(Modifiers.values()).sort();\n\nfunction normalizeKeys(keys: string | string[]): string[] {\n return asArray(keys).map((key) => key.toLowerCase());\n}\n\nfunction isKeydown(event: Event): boolean {\n return event.type === 'keydown';\n}\n\nfunction isKeyup(event: Event): boolean {\n return event.type === 'keyup';\n}\n\nfunction isKeydownTrigger(triggers?: KeyBindingTrigger[]): boolean {\n return triggers\n ? triggers.includes('keydown') || isKeydownRepeatTrigger(triggers)\n : false;\n}\n\nfunction isKeyupTrigger(triggers?: KeyBindingTrigger[]): boolean {\n return triggers ? triggers.includes('keyup') : false;\n}\n\nfunction isKeydownRepeatTrigger(triggers?: KeyBindingTrigger[]): boolean {\n return triggers ? triggers.includes('keydownRepeat') : false;\n}\n\nfunction createCombinationKey(keys: string[], modifiers: string[]): string {\n const sortedKeys = keys.toSorted();\n const sortedModifiers = ALL_MODIFIER_VALUES.filter((mod) =>\n modifiers.includes(mod)\n ).sort();\n\n return sortedModifiers.concat(sortedKeys).join('+');\n}\n\n//#endregion\n\nclass KeyBindingController implements ReactiveController {\n //#region Private properties and state\n\n private static readonly _defaultOptions: KeyBindingControllerOptions = {\n skip: ['input', 'textarea', 'select'],\n };\n\n private readonly _host: ReactiveControllerHost & Element;\n private readonly _ref?: Ref;\n\n private readonly _bindings = new Map<string, KeyBinding>();\n private readonly _allowedKeys = new Set<string>();\n private readonly _pressedKeys = new Set<string>();\n\n private readonly _options: KeyBindingControllerOptions;\n private readonly _skipSelector: string | undefined;\n\n private _observedElement?: Element;\n\n private get _element(): Element {\n if (this._observedElement) {\n return this._observedElement;\n }\n return this._ref?.value || this._host;\n }\n\n //#endregion\n\n constructor(\n host: ReactiveControllerHost & Element,\n options?: KeyBindingControllerOptions\n ) {\n this._host = host;\n this._ref = options?.ref;\n this._options = { ...KeyBindingController._defaultOptions, ...options };\n\n if (Array.isArray(this._options.skip)) {\n this._skipSelector = this._options.skip.join(',');\n }\n\n host.addController(this);\n }\n\n //#region Private API\n\n /**\n * Checks and executes any event modifiers that are present in the matched binding.\n */\n private _applyEventModifiers(\n binding: KeyBinding,\n event: KeyboardEvent\n ): void {\n if (binding.options?.preventDefault) {\n event.preventDefault();\n }\n\n if (binding.options?.stopPropagation) {\n event.stopPropagation();\n }\n }\n\n private _bindingMatches(binding: KeyBinding, event: KeyboardEvent): boolean {\n const triggers = binding.options?.triggers ?? ['keydown'];\n\n if (isKeydown(event) && isKeydownTrigger(triggers)) {\n return true;\n }\n\n if (isKeyup(event) && isKeyupTrigger(triggers)) {\n return true;\n }\n\n return false;\n }\n\n private _shouldSkip(event: KeyboardEvent): boolean {\n const skip = this._options?.skip;\n\n if (!this._allowedKeys.has(event.key.toLowerCase())) {\n return true;\n }\n\n if (!findElementFromEventPath((e) => e === this._element, event)) {\n return true;\n }\n\n if (Array.isArray(skip)) {\n if (!this._skipSelector) {\n return false;\n }\n\n return Boolean(findElementFromEventPath(this._skipSelector, event));\n }\n\n if (isFunction(skip)) {\n return skip.call(this._host, event.target as Element, event);\n }\n\n return false;\n }\n\n //#endregion\n\n //#region Controller specific handlers\n\n /** @internal */\n public hostConnected(): void {\n this._host.addEventListener('keyup', this);\n this._host.addEventListener('keydown', this);\n }\n\n /** @internal */\n public hostDisconnected(): void {\n this._host.removeEventListener('keyup', this);\n this._host.removeEventListener('keydown', this);\n }\n\n /** @internal */\n public handleEvent(event: KeyboardEvent): void {\n if (this._shouldSkip(event)) {\n return;\n }\n\n const key = event.key.toLowerCase();\n\n if (!Modifiers.has(key)) {\n this._pressedKeys.add(key);\n }\n\n const activeModifiers = ALL_MODIFIER_VALUES.filter(\n (mod) => event[`${mod}Key` as keyof KeyboardEvent]\n );\n\n const combination = createCombinationKey(\n Array.from(this._pressedKeys),\n activeModifiers\n );\n\n const binding = this._bindings.get(combination);\n\n if (binding && this._bindingMatches(binding, event)) {\n this._applyEventModifiers(binding, event);\n binding.handler.call(this._host, event);\n\n if (isKeydownRepeatTrigger(binding.options?.triggers)) {\n this._pressedKeys.delete(key);\n }\n }\n\n if (isKeyup(event) && !Modifiers.has(key)) {\n this._pressedKeys.delete(key);\n }\n }\n\n //#endregion\n\n //#region Public API\n\n /**\n * Registers a keybinding handler.\n */\n public set(\n key: string | string[],\n handler: KeyBindingHandler,\n bindingOptions?: KeyBindingOptions\n ) {\n const { keys, modifiers } = parseKeys(key);\n const combination = createCombinationKey(keys, modifiers);\n const options = { ...this._options?.bindingDefaults, ...bindingOptions };\n\n for (const each of [...keys, ...modifiers]) {\n this._allowedKeys.add(each);\n }\n\n this._bindings.set(combination, { keys, handler, options, modifiers });\n\n return this;\n }\n\n /**\n * Register a handler function which is called when the target receives a key\n * which \"activates\" it.\n *\n * In the browser context this is usually either an Enter and Space bar keypress.\n */\n public setActivateHandler(\n handler: KeyBindingHandler,\n options?: KeyBindingOptions\n ) {\n this.set(enterKey, handler, options);\n this.set(spaceBar, handler, options);\n\n return this;\n }\n\n /**\n * Sets the controller to listen for keyboard events on an arbitrary `element` in the page context.\n * All the configuration and event handlers are applied as well.\n *\n * Returns an object with an `unsubscribe` function which should be called when the observing of keyboard\n * events on the `element` should cease.\n */\n public observeElement(element: Element): KeyBindingObserverCleanup {\n element.addEventListener('keydown', this);\n element.addEventListener('keyup', this);\n this._observedElement = element;\n\n return {\n unsubscribe: () => {\n this._observedElement?.removeEventListener('keydown', this);\n this._observedElement?.removeEventListener('keyup', this);\n this._observedElement = undefined;\n },\n };\n }\n\n //#endregion\n}\n\n/** @internal */\nexport function parseKeys(keys: string | string[]) {\n const normalizedKeys = normalizeKeys(keys);\n return {\n keys: normalizedKeys.filter((key) => !Modifiers.has(key)),\n modifiers: normalizedKeys.filter((key) => Modifiers.has(key)),\n };\n}\n\n/**\n * Creates a keybinding controller and adds to it to the passed `element`\n * with the provided `options`.\n */\nexport function addKeybindings(\n element: ReactiveControllerHost & Element,\n options?: KeyBindingControllerOptions\n): KeyBindingController {\n return new KeyBindingController(element, options);\n}\n\nexport type {\n KeyBindingHandler,\n KeyBindingObserverCleanup,\n KeyBindingSkipCallback,\n KeyBindingTrigger,\n KeyBindingControllerOptions,\n KeyBindingOptions,\n KeyBindingController,\n};\n"]}
@@ -20,6 +20,7 @@ import IgcSwitchComponent from '../../checkbox/switch.js';
20
20
  import IgcChipComponent from '../../chip/chip.js';
21
21
  import IgcComboComponent from '../../combo/combo.js';
22
22
  import IgcDatePickerComponent from '../../date-picker/date-picker.js';
23
+ import IgcDateRangePickerComponent from '../../date-range-picker/date-range-picker.js';
23
24
  import IgcDateTimeInputComponent from '../../date-time-input/date-time-input.js';
24
25
  import IgcDialogComponent from '../../dialog/dialog.js';
25
26
  import IgcDividerComponent from '../../divider/divider.js';
@@ -88,6 +89,7 @@ const allComponents = [
88
89
  IgcChipComponent,
89
90
  IgcComboComponent,
90
91
  IgcDatePickerComponent,
92
+ IgcDateRangePickerComponent,
91
93
  IgcDropdownComponent,
92
94
  IgcDropdownGroupComponent,
93
95
  IgcDropdownHeaderComponent,
@@ -1 +1 @@
1
- {"version":3,"file":"defineAllComponents.js","sourceRoot":"","sources":["../../../../src/components/common/definitions/defineAllComponents.ts"],"names":[],"mappings":"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","sourcesContent":["import IgcAccordionComponent from '../../accordion/accordion.js';\nimport IgcAvatarComponent from '../../avatar/avatar.js';\nimport IgcBadgeComponent from '../../badge/badge.js';\nimport IgcBannerComponent from '../../banner/banner.js';\nimport IgcButtonGroupComponent from '../../button-group/button-group.js';\nimport IgcToggleButtonComponent from '../../button-group/toggle-button.js';\nimport IgcButtonComponent from '../../button/button.js';\nimport IgcIconButtonComponent from '../../button/icon-button.js';\nimport IgcCalendarComponent from '../../calendar/calendar.js';\nimport IgcCardActionsComponent from '../../card/card.actions.js';\nimport IgcCardContentComponent from '../../card/card.content.js';\nimport IgcCardHeaderComponent from '../../card/card.header.js';\nimport IgcCardComponent from '../../card/card.js';\nimport IgcCardMediaComponent from '../../card/card.media.js';\nimport IgcCarouselIndicatorComponent from '../../carousel/carousel-indicator.js';\nimport IgcCarouselSlideComponent from '../../carousel/carousel-slide.js';\nimport IgcCarouselComponent from '../../carousel/carousel.js';\nimport IgcCheckboxComponent from '../../checkbox/checkbox.js';\nimport IgcSwitchComponent from '../../checkbox/switch.js';\nimport IgcChipComponent from '../../chip/chip.js';\nimport IgcComboComponent from '../../combo/combo.js';\nimport IgcDatePickerComponent from '../../date-picker/date-picker.js';\nimport IgcDateTimeInputComponent from '../../date-time-input/date-time-input.js';\nimport IgcDialogComponent from '../../dialog/dialog.js';\nimport IgcDividerComponent from '../../divider/divider.js';\nimport IgcDropdownGroupComponent from '../../dropdown/dropdown-group.js';\nimport IgcDropdownHeaderComponent from '../../dropdown/dropdown-header.js';\nimport IgcDropdownItemComponent from '../../dropdown/dropdown-item.js';\nimport IgcDropdownComponent from '../../dropdown/dropdown.js';\nimport IgcExpansionPanelComponent from '../../expansion-panel/expansion-panel.js';\nimport IgcIconComponent from '../../icon/icon.js';\nimport IgcInputComponent from '../../input/input.js';\nimport IgcListHeaderComponent from '../../list/list-header.js';\nimport IgcListItemComponent from '../../list/list-item.js';\nimport IgcListComponent from '../../list/list.js';\nimport IgcMaskInputComponent from '../../mask-input/mask-input.js';\nimport IgcNavDrawerHeaderItemComponent from '../../nav-drawer/nav-drawer-header-item.js';\nimport IgcNavDrawerItemComponent from '../../nav-drawer/nav-drawer-item.js';\nimport IgcNavDrawerComponent from '../../nav-drawer/nav-drawer.js';\nimport IgcNavbarComponent from '../../navbar/navbar.js';\nimport IgcCircularGradientComponent from '../../progress/circular-gradient.js';\nimport IgcCircularProgressComponent from '../../progress/circular-progress.js';\nimport IgcLinearProgressComponent from '../../progress/linear-progress.js';\nimport IgcRadioGroupComponent from '../../radio-group/radio-group.js';\nimport IgcRadioComponent from '../../radio/radio.js';\nimport IgcRatingSymbolComponent from '../../rating/rating-symbol.js';\nimport IgcRatingComponent from '../../rating/rating.js';\nimport IgcRippleComponent from '../../ripple/ripple.js';\nimport IgcSelectGroupComponent from '../../select/select-group.js';\nimport IgcSelectHeaderComponent from '../../select/select-header.js';\nimport IgcSelectItemComponent from '../../select/select-item.js';\nimport IgcSelectComponent from '../../select/select.js';\nimport IgcRangeSliderComponent from '../../slider/range-slider.js';\nimport IgcSliderLabelComponent from '../../slider/slider-label.js';\nimport IgcSliderComponent from '../../slider/slider.js';\nimport IgcSnackbarComponent from '../../snackbar/snackbar.js';\nimport IgcStepComponent from '../../stepper/step.js';\nimport IgcStepperComponent from '../../stepper/stepper.js';\nimport IgcTabComponent from '../../tabs/tab.js';\nimport IgcTabsComponent from '../../tabs/tabs.js';\nimport IgcTextareaComponent from '../../textarea/textarea.js';\nimport IgcTileManagerComponent from '../../tile-manager/tile-manager.js';\nimport IgcTileComponent from '../../tile-manager/tile.js';\nimport IgcToastComponent from '../../toast/toast.js';\nimport IgcTooltipComponent from '../../tooltip/tooltip.js';\nimport IgcTreeItemComponent from '../../tree/tree-item.js';\nimport IgcTreeComponent from '../../tree/tree.js';\nimport { defineComponents } from './defineComponents.js';\nimport type { IgniteComponent } from './register.js';\n\nconst allComponents: IgniteComponent[] = [\n IgcAvatarComponent,\n IgcAccordionComponent,\n IgcBadgeComponent,\n IgcBannerComponent,\n IgcButtonComponent,\n IgcIconButtonComponent,\n IgcToggleButtonComponent,\n IgcButtonGroupComponent,\n IgcCalendarComponent,\n IgcCardActionsComponent,\n IgcCardContentComponent,\n IgcCardHeaderComponent,\n IgcCardMediaComponent,\n IgcCardComponent,\n IgcCarouselComponent,\n IgcCarouselIndicatorComponent,\n IgcCarouselSlideComponent,\n IgcCheckboxComponent,\n IgcChipComponent,\n IgcComboComponent,\n IgcDatePickerComponent,\n IgcDropdownComponent,\n IgcDropdownGroupComponent,\n IgcDropdownHeaderComponent,\n IgcDropdownItemComponent,\n IgcDialogComponent,\n IgcDividerComponent,\n IgcSwitchComponent,\n IgcExpansionPanelComponent,\n IgcIconComponent,\n IgcInputComponent,\n IgcListHeaderComponent,\n IgcListItemComponent,\n IgcListComponent,\n IgcMaskInputComponent,\n IgcNavDrawerHeaderItemComponent,\n IgcNavDrawerItemComponent,\n IgcNavDrawerComponent,\n IgcNavbarComponent,\n IgcRadioComponent,\n IgcRadioGroupComponent,\n IgcRatingComponent,\n IgcRatingSymbolComponent,\n IgcRippleComponent,\n IgcSelectGroupComponent,\n IgcSelectHeaderComponent,\n IgcSelectItemComponent,\n IgcSelectComponent,\n IgcTreeComponent,\n IgcTreeItemComponent,\n IgcSliderComponent,\n IgcToastComponent,\n IgcSliderLabelComponent,\n IgcRangeSliderComponent,\n IgcTabsComponent,\n IgcTabComponent,\n IgcCircularProgressComponent,\n IgcLinearProgressComponent,\n IgcCircularGradientComponent,\n IgcSnackbarComponent,\n IgcDateTimeInputComponent,\n IgcStepperComponent,\n IgcStepComponent,\n IgcTextareaComponent,\n IgcTileComponent,\n IgcTileManagerComponent,\n IgcTooltipComponent,\n];\n\nexport function defineAllComponents() {\n defineComponents(...allComponents);\n}\n"]}
1
+ {"version":3,"file":"defineAllComponents.js","sourceRoot":"","sources":["../../../../src/components/common/definitions/defineAllComponents.ts"],"names":[],"mappings":"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","sourcesContent":["import IgcAccordionComponent from '../../accordion/accordion.js';\nimport IgcAvatarComponent from '../../avatar/avatar.js';\nimport IgcBadgeComponent from '../../badge/badge.js';\nimport IgcBannerComponent from '../../banner/banner.js';\nimport IgcButtonGroupComponent from '../../button-group/button-group.js';\nimport IgcToggleButtonComponent from '../../button-group/toggle-button.js';\nimport IgcButtonComponent from '../../button/button.js';\nimport IgcIconButtonComponent from '../../button/icon-button.js';\nimport IgcCalendarComponent from '../../calendar/calendar.js';\nimport IgcCardActionsComponent from '../../card/card.actions.js';\nimport IgcCardContentComponent from '../../card/card.content.js';\nimport IgcCardHeaderComponent from '../../card/card.header.js';\nimport IgcCardComponent from '../../card/card.js';\nimport IgcCardMediaComponent from '../../card/card.media.js';\nimport IgcCarouselIndicatorComponent from '../../carousel/carousel-indicator.js';\nimport IgcCarouselSlideComponent from '../../carousel/carousel-slide.js';\nimport IgcCarouselComponent from '../../carousel/carousel.js';\nimport IgcCheckboxComponent from '../../checkbox/checkbox.js';\nimport IgcSwitchComponent from '../../checkbox/switch.js';\nimport IgcChipComponent from '../../chip/chip.js';\nimport IgcComboComponent from '../../combo/combo.js';\nimport IgcDatePickerComponent from '../../date-picker/date-picker.js';\nimport IgcDateRangePickerComponent from '../../date-range-picker/date-range-picker.js';\nimport IgcDateTimeInputComponent from '../../date-time-input/date-time-input.js';\nimport IgcDialogComponent from '../../dialog/dialog.js';\nimport IgcDividerComponent from '../../divider/divider.js';\nimport IgcDropdownGroupComponent from '../../dropdown/dropdown-group.js';\nimport IgcDropdownHeaderComponent from '../../dropdown/dropdown-header.js';\nimport IgcDropdownItemComponent from '../../dropdown/dropdown-item.js';\nimport IgcDropdownComponent from '../../dropdown/dropdown.js';\nimport IgcExpansionPanelComponent from '../../expansion-panel/expansion-panel.js';\nimport IgcIconComponent from '../../icon/icon.js';\nimport IgcInputComponent from '../../input/input.js';\nimport IgcListHeaderComponent from '../../list/list-header.js';\nimport IgcListItemComponent from '../../list/list-item.js';\nimport IgcListComponent from '../../list/list.js';\nimport IgcMaskInputComponent from '../../mask-input/mask-input.js';\nimport IgcNavDrawerHeaderItemComponent from '../../nav-drawer/nav-drawer-header-item.js';\nimport IgcNavDrawerItemComponent from '../../nav-drawer/nav-drawer-item.js';\nimport IgcNavDrawerComponent from '../../nav-drawer/nav-drawer.js';\nimport IgcNavbarComponent from '../../navbar/navbar.js';\nimport IgcCircularGradientComponent from '../../progress/circular-gradient.js';\nimport IgcCircularProgressComponent from '../../progress/circular-progress.js';\nimport IgcLinearProgressComponent from '../../progress/linear-progress.js';\nimport IgcRadioGroupComponent from '../../radio-group/radio-group.js';\nimport IgcRadioComponent from '../../radio/radio.js';\nimport IgcRatingSymbolComponent from '../../rating/rating-symbol.js';\nimport IgcRatingComponent from '../../rating/rating.js';\nimport IgcRippleComponent from '../../ripple/ripple.js';\nimport IgcSelectGroupComponent from '../../select/select-group.js';\nimport IgcSelectHeaderComponent from '../../select/select-header.js';\nimport IgcSelectItemComponent from '../../select/select-item.js';\nimport IgcSelectComponent from '../../select/select.js';\nimport IgcRangeSliderComponent from '../../slider/range-slider.js';\nimport IgcSliderLabelComponent from '../../slider/slider-label.js';\nimport IgcSliderComponent from '../../slider/slider.js';\nimport IgcSnackbarComponent from '../../snackbar/snackbar.js';\nimport IgcStepComponent from '../../stepper/step.js';\nimport IgcStepperComponent from '../../stepper/stepper.js';\nimport IgcTabComponent from '../../tabs/tab.js';\nimport IgcTabsComponent from '../../tabs/tabs.js';\nimport IgcTextareaComponent from '../../textarea/textarea.js';\nimport IgcTileManagerComponent from '../../tile-manager/tile-manager.js';\nimport IgcTileComponent from '../../tile-manager/tile.js';\nimport IgcToastComponent from '../../toast/toast.js';\nimport IgcTooltipComponent from '../../tooltip/tooltip.js';\nimport IgcTreeItemComponent from '../../tree/tree-item.js';\nimport IgcTreeComponent from '../../tree/tree.js';\nimport { defineComponents } from './defineComponents.js';\nimport type { IgniteComponent } from './register.js';\n\nconst allComponents: IgniteComponent[] = [\n IgcAvatarComponent,\n IgcAccordionComponent,\n IgcBadgeComponent,\n IgcBannerComponent,\n IgcButtonComponent,\n IgcIconButtonComponent,\n IgcToggleButtonComponent,\n IgcButtonGroupComponent,\n IgcCalendarComponent,\n IgcCardActionsComponent,\n IgcCardContentComponent,\n IgcCardHeaderComponent,\n IgcCardMediaComponent,\n IgcCardComponent,\n IgcCarouselComponent,\n IgcCarouselIndicatorComponent,\n IgcCarouselSlideComponent,\n IgcCheckboxComponent,\n IgcChipComponent,\n IgcComboComponent,\n IgcDatePickerComponent,\n IgcDateRangePickerComponent,\n IgcDropdownComponent,\n IgcDropdownGroupComponent,\n IgcDropdownHeaderComponent,\n IgcDropdownItemComponent,\n IgcDialogComponent,\n IgcDividerComponent,\n IgcSwitchComponent,\n IgcExpansionPanelComponent,\n IgcIconComponent,\n IgcInputComponent,\n IgcListHeaderComponent,\n IgcListItemComponent,\n IgcListComponent,\n IgcMaskInputComponent,\n IgcNavDrawerHeaderItemComponent,\n IgcNavDrawerItemComponent,\n IgcNavDrawerComponent,\n IgcNavbarComponent,\n IgcRadioComponent,\n IgcRadioGroupComponent,\n IgcRatingComponent,\n IgcRatingSymbolComponent,\n IgcRippleComponent,\n IgcSelectGroupComponent,\n IgcSelectHeaderComponent,\n IgcSelectItemComponent,\n IgcSelectComponent,\n IgcTreeComponent,\n IgcTreeItemComponent,\n IgcSliderComponent,\n IgcToastComponent,\n IgcSliderLabelComponent,\n IgcRangeSliderComponent,\n IgcTabsComponent,\n IgcTabComponent,\n IgcCircularProgressComponent,\n IgcLinearProgressComponent,\n IgcCircularGradientComponent,\n IgcSnackbarComponent,\n IgcDateTimeInputComponent,\n IgcStepperComponent,\n IgcStepComponent,\n IgcTextareaComponent,\n IgcTileComponent,\n IgcTileManagerComponent,\n IgcTooltipComponent,\n];\n\nexport function defineAllComponents() {\n defineComponents(...allComponents);\n}\n"]}
@@ -0,0 +1,11 @@
1
+ import { type IgcCalendarResourceStrings } from './calendar.resources.js';
2
+ export interface IgcDateRangePickerResourceStrings extends IgcCalendarResourceStrings {
3
+ separator: string;
4
+ done: string;
5
+ cancel: string;
6
+ last7Days: string;
7
+ last30Days: string;
8
+ currentMonth: string;
9
+ yearToDate: string;
10
+ }
11
+ export declare const IgcDateRangePickerResourceStringsEN: IgcDateRangePickerResourceStrings;
@@ -0,0 +1,12 @@
1
+ import { IgcCalendarResourceStringEN, } from './calendar.resources.js';
2
+ export const IgcDateRangePickerResourceStringsEN = {
3
+ separator: 'to',
4
+ done: 'Done',
5
+ cancel: 'Cancel',
6
+ last7Days: 'Last 7 days',
7
+ last30Days: 'Last 30 days',
8
+ currentMonth: 'Current month',
9
+ yearToDate: 'Year to date',
10
+ ...IgcCalendarResourceStringEN,
11
+ };
12
+ //# sourceMappingURL=date-range-picker.resources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-range-picker.resources.js","sourceRoot":"","sources":["../../../../src/components/common/i18n/date-range-picker.resources.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,GAE5B,MAAM,yBAAyB,CAAC;AAcjC,MAAM,CAAC,MAAM,mCAAmC,GAC9C;IACE,SAAS,EAAE,IAAI;IACf,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;IAChB,SAAS,EAAE,aAAa;IACxB,UAAU,EAAE,cAAc;IAC1B,YAAY,EAAE,eAAe;IAC7B,UAAU,EAAE,cAAc;IAC1B,GAAG,2BAA2B;CAC/B,CAAC","sourcesContent":["import {\n IgcCalendarResourceStringEN,\n type IgcCalendarResourceStrings,\n} from './calendar.resources.js';\n\n/* blazorSuppress */\nexport interface IgcDateRangePickerResourceStrings\n extends IgcCalendarResourceStrings {\n separator: string;\n done: string;\n cancel: string;\n last7Days: string;\n last30Days: string;\n currentMonth: string;\n yearToDate: string;\n}\n\nexport const IgcDateRangePickerResourceStringsEN: IgcDateRangePickerResourceStrings =\n {\n separator: 'to',\n done: 'Done',\n cancel: 'Cancel',\n last7Days: 'Last 7 days',\n last30Days: 'Last 30 days',\n currentMonth: 'Current month',\n yearToDate: 'Year to date',\n ...IgcCalendarResourceStringEN,\n };\n"]}
@@ -77,10 +77,16 @@ __decorate([
77
77
  property({ type: Boolean, reflect: true })
78
78
  ], IgcBaseComboBoxLikeComponent.prototype, "open", void 0);
79
79
  export function getItems(root, tagName) {
80
- return iterNodes(root, 'SHOW_ELEMENT', (item) => item.matches(tagName));
80
+ return iterNodes(root, {
81
+ show: 'SHOW_ELEMENT',
82
+ filter: (item) => item.matches(tagName),
83
+ });
81
84
  }
82
85
  export function getActiveItems(root, tagName) {
83
- return iterNodes(root, 'SHOW_ELEMENT', (item) => item.matches(tagName) && !item.disabled);
86
+ return iterNodes(root, {
87
+ show: 'SHOW_ELEMENT',
88
+ filter: (item) => item.matches(tagName) && !item.disabled,
89
+ });
84
90
  }
85
91
  export function getNextActiveItem(items, from) {
86
92
  const current = items.indexOf(from);