q2-tecton-elements 1.49.2 → 1.49.3

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 (357) hide show
  1. package/dist/cjs/click-elsewhere_2.cjs.entry.js +137 -139
  2. package/dist/cjs/click-elsewhere_2.cjs.entry.js.map +1 -1
  3. package/dist/cjs/{index-a93362ed.js → index-83b024c4.js} +1 -21
  4. package/dist/cjs/index-83b024c4.js.map +1 -0
  5. package/dist/cjs/{index-42fcd170.js → index-f69742cf.js} +1 -1
  6. package/dist/cjs/{index-42fcd170.js.map → index-f69742cf.js.map} +1 -1
  7. package/dist/cjs/loader.cjs.js +1 -1
  8. package/dist/cjs/q2-action-sheet.cjs.entry.js +2 -2
  9. package/dist/cjs/q2-avatar.cjs.entry.js +1 -1
  10. package/dist/cjs/q2-btn_2.cjs.entry.js +1 -1
  11. package/dist/cjs/q2-calendar.cjs.entry.js +3 -3
  12. package/dist/cjs/q2-card.cjs.entry.js +1 -1
  13. package/dist/cjs/q2-carousel-pane.cjs.entry.js +3 -3
  14. package/dist/cjs/q2-carousel.cjs.entry.js +2 -2
  15. package/dist/cjs/q2-chart-area.cjs.entry.js +2 -2
  16. package/dist/cjs/q2-chart-bar.cjs.entry.js +2 -2
  17. package/dist/cjs/q2-chart-donut.cjs.entry.js +2 -2
  18. package/dist/cjs/q2-checkbox-group.cjs.entry.js +2 -2
  19. package/dist/cjs/q2-checkbox.cjs.entry.js +2 -2
  20. package/dist/cjs/q2-currency.cjs.entry.js +1 -1
  21. package/dist/cjs/q2-data-table.cjs.entry.js +2 -2
  22. package/dist/cjs/q2-detail.cjs.entry.js +2 -2
  23. package/dist/cjs/q2-dropdown-item.cjs.entry.js +1 -1
  24. package/dist/cjs/q2-dropdown.cjs.entry.js +2 -2
  25. package/dist/cjs/q2-editable-field.cjs.entry.js +2 -2
  26. package/dist/cjs/q2-icon.cjs.entry.js +1 -1
  27. package/dist/cjs/q2-input.cjs.entry.js +2 -2
  28. package/dist/cjs/q2-item.cjs.entry.js +2 -2
  29. package/dist/cjs/q2-legend.cjs.entry.js +1 -1
  30. package/dist/cjs/q2-list.cjs.entry.js +2 -2
  31. package/dist/cjs/q2-loc.cjs.entry.js +2 -2
  32. package/dist/cjs/q2-message.cjs.entry.js +2 -2
  33. package/dist/cjs/q2-month-picker.cjs.entry.js +3 -3
  34. package/dist/cjs/q2-optgroup.cjs.entry.js +2 -2
  35. package/dist/cjs/q2-option-list.cjs.entry.js +13 -11
  36. package/dist/cjs/q2-option-list.cjs.entry.js.map +1 -1
  37. package/dist/cjs/q2-option.cjs.entry.js +1 -1
  38. package/dist/cjs/q2-pagination.cjs.entry.js +3 -3
  39. package/dist/cjs/q2-pill.cjs.entry.js +2 -2
  40. package/dist/cjs/q2-radio-group.cjs.entry.js +2 -2
  41. package/dist/cjs/q2-radio.cjs.entry.js +2 -2
  42. package/dist/cjs/q2-relative-time.cjs.entry.js +3 -3
  43. package/dist/cjs/q2-section.cjs.entry.js +3 -3
  44. package/dist/cjs/q2-select.cjs.entry.js +108 -29
  45. package/dist/cjs/q2-select.cjs.entry.js.map +1 -1
  46. package/dist/cjs/q2-stepper-pane.cjs.entry.js +2 -2
  47. package/dist/cjs/q2-stepper-vertical.cjs.entry.js +2 -2
  48. package/dist/cjs/q2-stepper.cjs.entry.js +2 -2
  49. package/dist/cjs/q2-tab-container.cjs.entry.js +2 -2
  50. package/dist/cjs/q2-tab-pane.cjs.entry.js +1 -1
  51. package/dist/cjs/q2-tag.cjs.entry.js +2 -2
  52. package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
  53. package/dist/cjs/q2-textarea.cjs.entry.js +2 -2
  54. package/dist/cjs/q2-tooltip.cjs.entry.js +1 -1
  55. package/dist/cjs/tecton-tab-pane.cjs.entry.js +2 -2
  56. package/dist/collection/collection-manifest.json +5 -5
  57. package/dist/collection/components/q2-action-sheet/q2-action-sheet.js +1 -1
  58. package/dist/collection/components/q2-avatar/q2-avatar.js +1 -1
  59. package/dist/collection/components/q2-calendar/q2-calendar.js +1 -1
  60. package/dist/collection/components/q2-calendar/q2-month-picker.js +2 -2
  61. package/dist/collection/components/q2-carousel/q2-carousel.js +1 -1
  62. package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.js +2 -2
  63. package/dist/collection/components/q2-chart-area/q2-chart-area.js +1 -1
  64. package/dist/collection/components/q2-chart-bar/q2-chart-bar.js +1 -1
  65. package/dist/collection/components/q2-chart-donut/q2-chart-donut.js +1 -1
  66. package/dist/collection/components/q2-checkbox/q2-checkbox.js +1 -1
  67. package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.js +1 -1
  68. package/dist/collection/components/q2-currency/q2-currency.js +1 -1
  69. package/dist/collection/components/q2-data-table/q2-data-table.js +7 -7
  70. package/dist/collection/components/q2-detail/q2-detail.js +1 -1
  71. package/dist/collection/components/q2-dropdown/q2-dropdown.js +1 -1
  72. package/dist/collection/components/q2-editable-field/q2-editable-field.js +1 -1
  73. package/dist/collection/components/q2-input/q2-input.js +2 -2
  74. package/dist/collection/components/q2-item/q2-item.js +1 -1
  75. package/dist/collection/components/q2-legend/q2-legend.js +1 -1
  76. package/dist/collection/components/q2-list/q2-list.js +1 -1
  77. package/dist/collection/components/q2-loc/q2-loc.js +1 -1
  78. package/dist/collection/components/q2-message/q2-message.js +1 -1
  79. package/dist/collection/components/q2-optgroup/q2-optgroup.js +1 -1
  80. package/dist/collection/components/q2-option/q2-option.js +1 -1
  81. package/dist/collection/components/q2-option-list/q2-option-list.js +15 -13
  82. package/dist/collection/components/q2-option-list/q2-option-list.js.map +1 -1
  83. package/dist/collection/components/q2-pagination/q2-pagination.js +2 -2
  84. package/dist/collection/components/q2-pill/q2-pill.js +1 -1
  85. package/dist/collection/components/q2-popover/q2-popover.css +18 -10
  86. package/dist/collection/components/q2-popover/q2-popover.js +192 -193
  87. package/dist/collection/components/q2-popover/q2-popover.js.map +1 -1
  88. package/dist/collection/components/q2-radio/q2-radio.js +1 -1
  89. package/dist/collection/components/q2-radio-group/q2-radio-group.js +1 -1
  90. package/dist/collection/components/q2-relative-time/q2-relative-time.js +1 -1
  91. package/dist/collection/components/q2-section/q2-section.js +2 -2
  92. package/dist/collection/components/q2-select/q2-select.js +146 -31
  93. package/dist/collection/components/q2-select/q2-select.js.map +1 -1
  94. package/dist/collection/components/q2-stepper/q2-stepper.js +1 -1
  95. package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.js +3 -3
  96. package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js +1 -1
  97. package/dist/collection/components/q2-tab-container/q2-tab-container.js +1 -1
  98. package/dist/collection/components/q2-tab-pane/q2-tab-pane.js +1 -1
  99. package/dist/collection/components/q2-tag/q2-tag.js +1 -1
  100. package/dist/collection/components/q2-textarea/q2-textarea.js +1 -1
  101. package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js +2 -2
  102. package/dist/components/index2.js +1 -20
  103. package/dist/components/index2.js.map +1 -1
  104. package/dist/components/q2-action-sheet.js +1 -1
  105. package/dist/components/q2-avatar2.js +1 -1
  106. package/dist/components/q2-calendar.js +1 -1
  107. package/dist/components/q2-carousel-pane.js +2 -2
  108. package/dist/components/q2-carousel.js +1 -1
  109. package/dist/components/q2-chart-area.js +1 -1
  110. package/dist/components/q2-chart-bar.js +1 -1
  111. package/dist/components/q2-chart-donut.js +1 -1
  112. package/dist/components/q2-checkbox-group.js +1 -1
  113. package/dist/components/q2-checkbox2.js +1 -1
  114. package/dist/components/q2-currency.js +1 -1
  115. package/dist/components/q2-data-table.js +1 -1
  116. package/dist/components/q2-detail.js +1 -1
  117. package/dist/components/q2-dropdown.js +1 -1
  118. package/dist/components/q2-editable-field.js +1 -1
  119. package/dist/components/q2-input2.js +1 -1
  120. package/dist/components/q2-item.js +1 -1
  121. package/dist/components/q2-legend2.js +1 -1
  122. package/dist/components/q2-list.js +1 -1
  123. package/dist/components/q2-loc.js +1 -1
  124. package/dist/components/q2-message2.js +1 -1
  125. package/dist/components/q2-month-picker.js +2 -2
  126. package/dist/components/q2-optgroup2.js +1 -1
  127. package/dist/components/q2-option-list2.js +12 -10
  128. package/dist/components/q2-option-list2.js.map +1 -1
  129. package/dist/components/q2-option2.js +1 -1
  130. package/dist/components/q2-pagination.js +2 -2
  131. package/dist/components/q2-pill.js +1 -1
  132. package/dist/components/q2-popover2.js +143 -145
  133. package/dist/components/q2-popover2.js.map +1 -1
  134. package/dist/components/q2-radio-group.js +1 -1
  135. package/dist/components/q2-radio.js +1 -1
  136. package/dist/components/q2-relative-time.js +1 -1
  137. package/dist/components/q2-section.js +2 -2
  138. package/dist/components/q2-select2.js +112 -32
  139. package/dist/components/q2-select2.js.map +1 -1
  140. package/dist/components/q2-stepper-pane.js +1 -1
  141. package/dist/components/q2-stepper-vertical.js +1 -1
  142. package/dist/components/q2-stepper.js +1 -1
  143. package/dist/components/q2-tab-container.js +1 -1
  144. package/dist/components/q2-tab-pane.js +1 -1
  145. package/dist/components/q2-tag.js +1 -1
  146. package/dist/components/q2-textarea.js +1 -1
  147. package/dist/components/tecton-tab-pane.js +2 -2
  148. package/dist/esm/click-elsewhere_2.entry.js +137 -139
  149. package/dist/esm/click-elsewhere_2.entry.js.map +1 -1
  150. package/dist/esm/{index-1c019b24.js → index-3184c760.js} +1 -1
  151. package/dist/esm/{index-1c019b24.js.map → index-3184c760.js.map} +1 -1
  152. package/dist/esm/{index-3c5cd75e.js → index-e5ac05c3.js} +2 -21
  153. package/dist/esm/index-e5ac05c3.js.map +1 -0
  154. package/dist/esm/loader.js +1 -1
  155. package/dist/esm/q2-action-sheet.entry.js +2 -2
  156. package/dist/esm/q2-avatar.entry.js +1 -1
  157. package/dist/esm/q2-btn_2.entry.js +1 -1
  158. package/dist/esm/q2-calendar.entry.js +3 -3
  159. package/dist/esm/q2-card.entry.js +1 -1
  160. package/dist/esm/q2-carousel-pane.entry.js +3 -3
  161. package/dist/esm/q2-carousel.entry.js +2 -2
  162. package/dist/esm/q2-chart-area.entry.js +2 -2
  163. package/dist/esm/q2-chart-bar.entry.js +2 -2
  164. package/dist/esm/q2-chart-donut.entry.js +2 -2
  165. package/dist/esm/q2-checkbox-group.entry.js +2 -2
  166. package/dist/esm/q2-checkbox.entry.js +2 -2
  167. package/dist/esm/q2-currency.entry.js +1 -1
  168. package/dist/esm/q2-data-table.entry.js +2 -2
  169. package/dist/esm/q2-detail.entry.js +2 -2
  170. package/dist/esm/q2-dropdown-item.entry.js +1 -1
  171. package/dist/esm/q2-dropdown.entry.js +2 -2
  172. package/dist/esm/q2-editable-field.entry.js +2 -2
  173. package/dist/esm/q2-icon.entry.js +1 -1
  174. package/dist/esm/q2-input.entry.js +2 -2
  175. package/dist/esm/q2-item.entry.js +2 -2
  176. package/dist/esm/q2-legend.entry.js +1 -1
  177. package/dist/esm/q2-list.entry.js +2 -2
  178. package/dist/esm/q2-loc.entry.js +2 -2
  179. package/dist/esm/q2-message.entry.js +2 -2
  180. package/dist/esm/q2-month-picker.entry.js +3 -3
  181. package/dist/esm/q2-optgroup.entry.js +2 -2
  182. package/dist/esm/q2-option-list.entry.js +13 -11
  183. package/dist/esm/q2-option-list.entry.js.map +1 -1
  184. package/dist/esm/q2-option.entry.js +1 -1
  185. package/dist/esm/q2-pagination.entry.js +3 -3
  186. package/dist/esm/q2-pill.entry.js +2 -2
  187. package/dist/esm/q2-radio-group.entry.js +2 -2
  188. package/dist/esm/q2-radio.entry.js +2 -2
  189. package/dist/esm/q2-relative-time.entry.js +3 -3
  190. package/dist/esm/q2-section.entry.js +3 -3
  191. package/dist/esm/q2-select.entry.js +109 -30
  192. package/dist/esm/q2-select.entry.js.map +1 -1
  193. package/dist/esm/q2-stepper-pane.entry.js +2 -2
  194. package/dist/esm/q2-stepper-vertical.entry.js +2 -2
  195. package/dist/esm/q2-stepper.entry.js +2 -2
  196. package/dist/esm/q2-tab-container.entry.js +2 -2
  197. package/dist/esm/q2-tab-pane.entry.js +1 -1
  198. package/dist/esm/q2-tag.entry.js +2 -2
  199. package/dist/esm/q2-tecton-elements.js +1 -1
  200. package/dist/esm/q2-textarea.entry.js +2 -2
  201. package/dist/esm/q2-tooltip.entry.js +1 -1
  202. package/dist/esm/tecton-tab-pane.entry.js +2 -2
  203. package/dist/jest.setup.js +22 -0
  204. package/dist/jest.setup.js.map +1 -0
  205. package/dist/q2-tecton-elements/{p-40df4468.entry.js → p-04dd9b90.entry.js} +2 -2
  206. package/dist/q2-tecton-elements/{p-d78669df.entry.js → p-0c1e2b0d.entry.js} +2 -2
  207. package/dist/q2-tecton-elements/{p-0852e6fe.entry.js → p-11883a2d.entry.js} +2 -2
  208. package/dist/q2-tecton-elements/{p-5775b02b.entry.js → p-2154fd27.entry.js} +2 -2
  209. package/dist/q2-tecton-elements/{p-dbfab45b.entry.js → p-23638c08.entry.js} +2 -2
  210. package/dist/q2-tecton-elements/{p-f6358905.entry.js → p-24c2cc43.entry.js} +2 -2
  211. package/dist/q2-tecton-elements/{p-a8e7e591.entry.js → p-26a7f68d.entry.js} +2 -2
  212. package/dist/q2-tecton-elements/{p-da711c59.entry.js → p-2a21bb2a.entry.js} +2 -2
  213. package/dist/q2-tecton-elements/{p-25bfe0b2.entry.js → p-33a16719.entry.js} +2 -2
  214. package/dist/q2-tecton-elements/{p-db79c056.entry.js → p-36e541b9.entry.js} +2 -2
  215. package/dist/q2-tecton-elements/{p-7b9a6bb7.entry.js → p-38a2862e.entry.js} +2 -2
  216. package/dist/q2-tecton-elements/p-3fe148c2.entry.js +2 -0
  217. package/dist/q2-tecton-elements/{p-a657277b.entry.js.map → p-3fe148c2.entry.js.map} +1 -1
  218. package/dist/q2-tecton-elements/{p-ec8a0b64.entry.js → p-436b9b84.entry.js} +2 -2
  219. package/dist/q2-tecton-elements/{p-ea7876eb.entry.js → p-45cf9f0b.entry.js} +2 -2
  220. package/dist/q2-tecton-elements/{p-9ecabc7a.entry.js → p-48181bc2.entry.js} +2 -2
  221. package/dist/q2-tecton-elements/p-48a45547.entry.js +2 -0
  222. package/dist/q2-tecton-elements/p-48a45547.entry.js.map +1 -0
  223. package/dist/q2-tecton-elements/{p-333a41ca.entry.js → p-4f6eebbf.entry.js} +2 -2
  224. package/dist/q2-tecton-elements/{p-08176bd0.entry.js → p-60940069.entry.js} +2 -2
  225. package/dist/q2-tecton-elements/{p-93680d12.entry.js → p-631226a9.entry.js} +2 -2
  226. package/dist/q2-tecton-elements/{p-4388e521.entry.js → p-6c64c5e9.entry.js} +2 -2
  227. package/dist/q2-tecton-elements/{p-793a453e.entry.js → p-6e4b1bfe.entry.js} +2 -2
  228. package/dist/q2-tecton-elements/{p-a177d812.entry.js → p-70e8ddbe.entry.js} +2 -2
  229. package/dist/q2-tecton-elements/{p-d8d9ba1f.entry.js → p-73c6ecee.entry.js} +2 -2
  230. package/dist/q2-tecton-elements/p-76bd33da.entry.js +2 -0
  231. package/dist/q2-tecton-elements/p-76bd33da.entry.js.map +1 -0
  232. package/dist/q2-tecton-elements/{p-76b98623.entry.js → p-85ddbe4f.entry.js} +2 -2
  233. package/dist/q2-tecton-elements/{p-e3ad770b.entry.js → p-85eff820.entry.js} +2 -2
  234. package/dist/q2-tecton-elements/{p-e0a6baea.entry.js → p-88ae4e26.entry.js} +2 -2
  235. package/dist/q2-tecton-elements/{p-05b30f98.entry.js → p-8b032c77.entry.js} +2 -2
  236. package/dist/q2-tecton-elements/{p-6c933b14.entry.js → p-960ee73c.entry.js} +2 -2
  237. package/dist/q2-tecton-elements/{p-baa2eaa9.entry.js → p-99a8fdc4.entry.js} +2 -2
  238. package/dist/q2-tecton-elements/{p-bbf9d36d.entry.js → p-a4294b4d.entry.js} +2 -2
  239. package/dist/q2-tecton-elements/p-a6ca739a.entry.js +2 -0
  240. package/dist/q2-tecton-elements/{p-4da4cb5d.entry.js.map → p-a6ca739a.entry.js.map} +1 -1
  241. package/dist/q2-tecton-elements/p-ac6c467f.entry.js +2 -0
  242. package/dist/q2-tecton-elements/p-ac6c467f.entry.js.map +1 -0
  243. package/dist/q2-tecton-elements/{p-1e7fa870.entry.js → p-b45b6a3e.entry.js} +2 -2
  244. package/dist/q2-tecton-elements/{p-2810ba28.entry.js → p-ba7ffb2f.entry.js} +2 -2
  245. package/dist/q2-tecton-elements/{p-9c589ab3.entry.js → p-bd4c5570.entry.js} +2 -2
  246. package/dist/q2-tecton-elements/{p-c5aac064.entry.js → p-bf4a9be3.entry.js} +2 -2
  247. package/dist/q2-tecton-elements/p-cb4d177a.entry.js +2 -0
  248. package/dist/q2-tecton-elements/{p-9e90a38a.entry.js.map → p-cb4d177a.entry.js.map} +1 -1
  249. package/dist/q2-tecton-elements/{p-630613c7.entry.js → p-d1ba78ec.entry.js} +2 -2
  250. package/dist/q2-tecton-elements/p-d24bb23e.js +2 -0
  251. package/dist/q2-tecton-elements/p-d24bb23e.js.map +1 -0
  252. package/dist/q2-tecton-elements/{p-2bcb7e89.entry.js → p-d63cb875.entry.js} +2 -2
  253. package/dist/q2-tecton-elements/{p-e4b8f4b3.entry.js → p-d950ae4c.entry.js} +2 -2
  254. package/dist/q2-tecton-elements/{p-5037fa67.entry.js → p-dba6c931.entry.js} +2 -2
  255. package/dist/q2-tecton-elements/{p-e44560d9.entry.js → p-de4bce7e.entry.js} +2 -2
  256. package/dist/q2-tecton-elements/{p-c8b4f5f7.entry.js → p-e098f6c5.entry.js} +2 -2
  257. package/dist/q2-tecton-elements/{p-be518818.js → p-f1e887f5.js} +1 -1
  258. package/dist/q2-tecton-elements/{p-77a763eb.entry.js → p-f6901c57.entry.js} +2 -2
  259. package/dist/q2-tecton-elements/{p-da0cacef.entry.js → p-ff5f28fb.entry.js} +2 -2
  260. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
  261. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js.map +1 -1
  262. package/dist/test/elements/q2-calendar-test.e2e.js +2 -2
  263. package/dist/test/elements/q2-calendar-test.e2e.js.map +1 -1
  264. package/dist/test/elements/q2-dropdown-test.e2e.js +2 -14
  265. package/dist/test/elements/q2-dropdown-test.e2e.js.map +1 -1
  266. package/dist/test/elements/q2-pagination-test.e2e.js +1 -0
  267. package/dist/test/elements/q2-pagination-test.e2e.js.map +1 -1
  268. package/dist/test/elements/q2-pill-test.e2e.js +1 -1
  269. package/dist/test/elements/q2-pill-test.e2e.js.map +1 -1
  270. package/dist/test/elements/q2-popover-test.e2e.js +1 -34
  271. package/dist/test/elements/q2-popover-test.e2e.js.map +1 -1
  272. package/dist/test/elements/q2-popover-test.spec.js +743 -435
  273. package/dist/test/elements/q2-popover-test.spec.js.map +1 -1
  274. package/dist/test/elements/q2-select-test.e2e.js +1 -15
  275. package/dist/test/elements/q2-select-test.e2e.js.map +1 -1
  276. package/dist/test/elements/q2-select-test.spec.js +412 -0
  277. package/dist/test/elements/q2-select-test.spec.js.map +1 -0
  278. package/dist/test/elements/q2-tag-test.e2e.js +1 -1
  279. package/dist/test/elements/q2-tag-test.e2e.js.map +1 -1
  280. package/dist/types/builds/q2e/development/tecton/tecton/packages/q2-tecton-elements/.stencil/jest.setup.d.ts +1 -0
  281. package/dist/types/components/q2-action-sheet/q2-action-sheet.d.ts +60 -0
  282. package/dist/types/components/q2-calendar/q2-calendar.d.ts +324 -0
  283. package/dist/types/components/q2-carousel/q2-carousel.d.ts +2 -2
  284. package/dist/types/components/q2-data-table/q2-data-table.d.ts +223 -0
  285. package/dist/types/components/q2-dropdown/q2-dropdown.d.ts +130 -0
  286. package/dist/types/components/q2-dropdown-item/q2-dropdown-item.d.ts +50 -0
  287. package/dist/types/components/q2-editable-field/q2-editable-field.d.ts +140 -0
  288. package/dist/types/components/q2-loading/skeleton/shapes.d.ts +1 -0
  289. package/dist/types/components/q2-optgroup/q2-optgroup.d.ts +1 -1
  290. package/dist/types/components/q2-option-list/q2-option-list.d.ts +99 -0
  291. package/dist/types/components/q2-pagination/q2-pagination.d.ts +60 -0
  292. package/dist/types/components/q2-pill/q2-pill.d.ts +102 -0
  293. package/dist/types/components/q2-popover/q2-popover.d.ts +31 -31
  294. package/dist/types/components/q2-select/q2-select.d.ts +256 -0
  295. package/dist/types/components/q2-stepper/q2-stepper.d.ts +52 -0
  296. package/dist/types/components/q2-stepper-vertical/q2-stepper-vertical.d.ts +62 -0
  297. package/dist/types/components/q2-tab-container/q2-tab-container.d.ts +2 -2
  298. package/dist/types/components/q2-tag/q2-tag.d.ts +59 -0
  299. package/dist/types/components.d.ts +8 -0
  300. package/dist/types/utils/action-sheet.d.ts +12 -0
  301. package/package.json +3 -3
  302. package/dist/cjs/index-a93362ed.js.map +0 -1
  303. package/dist/esm/index-3c5cd75e.js.map +0 -1
  304. package/dist/q2-tecton-elements/p-089a7a1e.entry.js +0 -2
  305. package/dist/q2-tecton-elements/p-089a7a1e.entry.js.map +0 -1
  306. package/dist/q2-tecton-elements/p-2e6669a7.entry.js +0 -2
  307. package/dist/q2-tecton-elements/p-2e6669a7.entry.js.map +0 -1
  308. package/dist/q2-tecton-elements/p-4da4cb5d.entry.js +0 -2
  309. package/dist/q2-tecton-elements/p-84190698.js +0 -2
  310. package/dist/q2-tecton-elements/p-84190698.js.map +0 -1
  311. package/dist/q2-tecton-elements/p-9e90a38a.entry.js +0 -2
  312. package/dist/q2-tecton-elements/p-a657277b.entry.js +0 -2
  313. package/dist/q2-tecton-elements/p-d2d3d95b.entry.js +0 -2
  314. package/dist/q2-tecton-elements/p-d2d3d95b.entry.js.map +0 -1
  315. /package/dist/q2-tecton-elements/{p-40df4468.entry.js.map → p-04dd9b90.entry.js.map} +0 -0
  316. /package/dist/q2-tecton-elements/{p-d78669df.entry.js.map → p-0c1e2b0d.entry.js.map} +0 -0
  317. /package/dist/q2-tecton-elements/{p-0852e6fe.entry.js.map → p-11883a2d.entry.js.map} +0 -0
  318. /package/dist/q2-tecton-elements/{p-5775b02b.entry.js.map → p-2154fd27.entry.js.map} +0 -0
  319. /package/dist/q2-tecton-elements/{p-dbfab45b.entry.js.map → p-23638c08.entry.js.map} +0 -0
  320. /package/dist/q2-tecton-elements/{p-f6358905.entry.js.map → p-24c2cc43.entry.js.map} +0 -0
  321. /package/dist/q2-tecton-elements/{p-a8e7e591.entry.js.map → p-26a7f68d.entry.js.map} +0 -0
  322. /package/dist/q2-tecton-elements/{p-da711c59.entry.js.map → p-2a21bb2a.entry.js.map} +0 -0
  323. /package/dist/q2-tecton-elements/{p-25bfe0b2.entry.js.map → p-33a16719.entry.js.map} +0 -0
  324. /package/dist/q2-tecton-elements/{p-db79c056.entry.js.map → p-36e541b9.entry.js.map} +0 -0
  325. /package/dist/q2-tecton-elements/{p-7b9a6bb7.entry.js.map → p-38a2862e.entry.js.map} +0 -0
  326. /package/dist/q2-tecton-elements/{p-ec8a0b64.entry.js.map → p-436b9b84.entry.js.map} +0 -0
  327. /package/dist/q2-tecton-elements/{p-ea7876eb.entry.js.map → p-45cf9f0b.entry.js.map} +0 -0
  328. /package/dist/q2-tecton-elements/{p-9ecabc7a.entry.js.map → p-48181bc2.entry.js.map} +0 -0
  329. /package/dist/q2-tecton-elements/{p-333a41ca.entry.js.map → p-4f6eebbf.entry.js.map} +0 -0
  330. /package/dist/q2-tecton-elements/{p-08176bd0.entry.js.map → p-60940069.entry.js.map} +0 -0
  331. /package/dist/q2-tecton-elements/{p-93680d12.entry.js.map → p-631226a9.entry.js.map} +0 -0
  332. /package/dist/q2-tecton-elements/{p-4388e521.entry.js.map → p-6c64c5e9.entry.js.map} +0 -0
  333. /package/dist/q2-tecton-elements/{p-793a453e.entry.js.map → p-6e4b1bfe.entry.js.map} +0 -0
  334. /package/dist/q2-tecton-elements/{p-a177d812.entry.js.map → p-70e8ddbe.entry.js.map} +0 -0
  335. /package/dist/q2-tecton-elements/{p-d8d9ba1f.entry.js.map → p-73c6ecee.entry.js.map} +0 -0
  336. /package/dist/q2-tecton-elements/{p-76b98623.entry.js.map → p-85ddbe4f.entry.js.map} +0 -0
  337. /package/dist/q2-tecton-elements/{p-e3ad770b.entry.js.map → p-85eff820.entry.js.map} +0 -0
  338. /package/dist/q2-tecton-elements/{p-e0a6baea.entry.js.map → p-88ae4e26.entry.js.map} +0 -0
  339. /package/dist/q2-tecton-elements/{p-05b30f98.entry.js.map → p-8b032c77.entry.js.map} +0 -0
  340. /package/dist/q2-tecton-elements/{p-6c933b14.entry.js.map → p-960ee73c.entry.js.map} +0 -0
  341. /package/dist/q2-tecton-elements/{p-baa2eaa9.entry.js.map → p-99a8fdc4.entry.js.map} +0 -0
  342. /package/dist/q2-tecton-elements/{p-bbf9d36d.entry.js.map → p-a4294b4d.entry.js.map} +0 -0
  343. /package/dist/q2-tecton-elements/{p-1e7fa870.entry.js.map → p-b45b6a3e.entry.js.map} +0 -0
  344. /package/dist/q2-tecton-elements/{p-2810ba28.entry.js.map → p-ba7ffb2f.entry.js.map} +0 -0
  345. /package/dist/q2-tecton-elements/{p-9c589ab3.entry.js.map → p-bd4c5570.entry.js.map} +0 -0
  346. /package/dist/q2-tecton-elements/{p-c5aac064.entry.js.map → p-bf4a9be3.entry.js.map} +0 -0
  347. /package/dist/q2-tecton-elements/{p-630613c7.entry.js.map → p-d1ba78ec.entry.js.map} +0 -0
  348. /package/dist/q2-tecton-elements/{p-2bcb7e89.entry.js.map → p-d63cb875.entry.js.map} +0 -0
  349. /package/dist/q2-tecton-elements/{p-e4b8f4b3.entry.js.map → p-d950ae4c.entry.js.map} +0 -0
  350. /package/dist/q2-tecton-elements/{p-5037fa67.entry.js.map → p-dba6c931.entry.js.map} +0 -0
  351. /package/dist/q2-tecton-elements/{p-e44560d9.entry.js.map → p-de4bce7e.entry.js.map} +0 -0
  352. /package/dist/q2-tecton-elements/{p-c8b4f5f7.entry.js.map → p-e098f6c5.entry.js.map} +0 -0
  353. /package/dist/q2-tecton-elements/{p-be518818.js.map → p-f1e887f5.js.map} +0 -0
  354. /package/dist/q2-tecton-elements/{p-77a763eb.entry.js.map → p-f6901c57.entry.js.map} +0 -0
  355. /package/dist/q2-tecton-elements/{p-da0cacef.entry.js.map → p-ff5f28fb.entry.js.map} +0 -0
  356. /package/dist/types/{workspace/workspace/tecton-production_release_1.49.x → builds/q2e/development/tecton/tecton}/packages/q2-tecton-elements/.stencil/test/elements/q2-detail/slot-component.d.ts +0 -0
  357. /package/dist/types/{workspace/workspace/tecton-production_release_1.49.x → builds/q2e/development/tecton/tecton}/packages/q2-tecton-elements/.stencil/test/helpers.d.ts +0 -0
@@ -56,7 +56,7 @@ const Q2Avatar = /*@__PURE__*/ proxyCustomElement(class Q2Avatar extends HTMLEle
56
56
  const isLoaded = this.isLoaded;
57
57
  const showInitials = (this.name || this.initials) && (!this.src || this.badSrc);
58
58
  const showFallback = !this.name && !this.initials && (!this.src || this.badSrc);
59
- return (h("div", { key: 'fb38246042e8b43394fde0fdee3c54bfcc5b31f7' }, showImg && (h("img", { key: '6a146c651215ba30351fbbd34e2bb14ae7b33d11', class: isLoaded ? 'avatar-img' : 'avatar-img-default', "test-id": "userImage", src: this.src, onError: this.onError, onLoad: this.onLoad, alt: this.name || '' })), showInitials && (h("svg", { key: '64ce03bf673bf817f74a9d21f55ff62e2531554d', viewBox: "0 0 100 100", preserveAspectRatio: "xMidYMid meet", "test-id": "userInitials", class: `avatar-initials size-${computedInitials.length}`, "aria-label": this.name, "aria-hidden": !this.name && 'true' }, h("text", { key: '2b620c288b03095bce06a36582b74e4aae4c55ec', x: "50", y: "50", "dominant-baseline": "central", "text-anchor": "middle", "aria-hidden": "true" }, computedInitials))), showFallback && (h("div", { key: '92e5ec056ce6c09dd0c85408b58abaf6bf346e60', "test-id": "fallbackIcon", class: "fallback" }, h("q2-icon", { key: '7fad4b694805cf8237493e26511618e313941dc5', type: this.icon })))));
59
+ return (h("div", { key: '22a80d332a1f20f2ec146c7876df6f46e4aaccad' }, showImg && (h("img", { key: 'c92ef9d21bf5381b2e141b8f2e4ed0f67e3fb99b', class: isLoaded ? 'avatar-img' : 'avatar-img-default', "test-id": "userImage", src: this.src, onError: this.onError, onLoad: this.onLoad, alt: this.name || '' })), showInitials && (h("svg", { key: '9f955837a9bf408a55fb6272e5c0c02cd74b4671', viewBox: "0 0 100 100", preserveAspectRatio: "xMidYMid meet", "test-id": "userInitials", class: `avatar-initials size-${computedInitials.length}`, "aria-label": this.name, "aria-hidden": !this.name && 'true' }, h("text", { key: 'f01603d0161b8b59da12ae5ce677aa1543f723e0', x: "50", y: "50", "dominant-baseline": "central", "text-anchor": "middle", "aria-hidden": "true" }, computedInitials))), showFallback && (h("div", { key: 'df647d4c4ed41ce2ab7bb0b32d2a5de5064f83e2', "test-id": "fallbackIcon", class: "fallback" }, h("q2-icon", { key: '19c05ce484bdf4665369b9209b239a31cd509a1c', type: this.icon })))));
60
60
  }
61
61
  get el() { return this; }
62
62
  static get watchers() { return {
@@ -1211,7 +1211,7 @@ const Q2Calendar$1 = /*@__PURE__*/ proxyCustomElement(class Q2Calendar extends H
1211
1211
  // #endregion
1212
1212
  // #region Render Methods
1213
1213
  render() {
1214
- return (h("click-elsewhere", { key: '8d3332cbdb66fe4255d57d2b0e02e8a8a9d1ad75', class: this.open ? 'dropdown-open' : undefined, onChange: this.onClickElsewhere }, this.inputField(), h("q2-popover", { key: '4ae9a6156dd618bd0106920f4aaf48549e00ddec', ref: el => (this.popoverElement = el), controlElement: this.innerInputContainer, open: this.open, direction: this.popoverDirection, minHeight: this.popoverMinHeight, align: this.popoverAlignment, mode: this.popoverMode || undefined, block: true }, this.hintField(), this.calendarPopover())));
1214
+ return (h("click-elsewhere", { key: '580796c433b951d79ab0fb388a18b24021cf55fd', class: this.open ? 'dropdown-open' : undefined, onChange: this.onClickElsewhere }, this.inputField(), h("q2-popover", { key: 'd62152677b4ad9bdfc1ab662944ad657ac7ac68d', ref: el => (this.popoverElement = el), controlElement: this.innerInputContainer, open: this.open, direction: this.popoverDirection, minHeight: this.popoverMinHeight, align: this.popoverAlignment, mode: this.popoverMode || undefined, block: true }, this.hintField(), this.calendarPopover())));
1215
1215
  }
1216
1216
  get hostElement() { return this; }
1217
1217
  static get watchers() { return {
@@ -99,12 +99,12 @@ const Q2CarouselPane$1 = /*@__PURE__*/ proxyCustomElement(class Q2CarouselPane e
99
99
  // #region Render Methods
100
100
  render() {
101
101
  const { label } = this;
102
- return (h(Host, { key: 'd587f0f4127a837dcef8245d71438dc89b9dc71e', class: this.generatePaneClass(this.currentPaneIndex), tabIndex: this.isActivePane ? 0 : -1, role: "group", "aria-roledescription": "slide", "aria-hidden": this.isActivePane ? undefined : 'true', "aria-label": label
102
+ return (h(Host, { key: '7932499724f7d0b3e1435b256a109bba7f6283d8', class: this.generatePaneClass(this.currentPaneIndex), tabIndex: this.isActivePane ? 0 : -1, role: "group", "aria-roledescription": "slide", "aria-hidden": this.isActivePane ? undefined : 'true', "aria-label": label
103
103
  ? loc(label)
104
104
  : loc('tecton.element.carousel.itemDescription', [
105
105
  (this.currentPaneIndex + 1).toString(),
106
106
  (this.siblingCount || 0).toString(),
107
- ]), onClick: this.paneClicked }, h("article", { key: '3bb56cc5bbc0a949a5f3655a872eb27451d0c681', class: "q2-carousel-pane-main-content" }, h("slot", { key: 'db4f69c055792283def6216fe06f5e22ed4a0d65' }))));
107
+ ]), onClick: this.paneClicked }, h("article", { key: '59cfbe29288825ed320a99763ba7b5aa56701311', class: "q2-carousel-pane-main-content" }, h("slot", { key: '179c0224549ff14a68d130f5289739bbdf92042b' }))));
108
108
  }
109
109
  get hostElement() { return this; }
110
110
  static get watchers() { return {
@@ -5393,7 +5393,7 @@ const Q2Carousel$1 = /*@__PURE__*/ proxyCustomElement(class Q2Carousel extends H
5393
5393
  let paginationWrapperClasses = ['q2-carousel-pagination-navigation-wrapper'];
5394
5394
  if (this.showNavigationArrows)
5395
5395
  paginationWrapperClasses = [...paginationWrapperClasses, 'evenly-space'];
5396
- return (h(Host, { key: 'a359f77ab7b3c38f9bb175dcc2e8d3c7c2c687c9', id: `q2-carousel-${this.guid}`, class: "q2-carousel-instance" }, this.insufficientPanes ? (this.insufficientPanesDisplay()) : (h(Fragment, null, this.paneCount > 1 && (h("div", { class: paginationWrapperClasses.join(' ') }, this.showNavigationArrows && this.prevNavBtn(), h("div", { class: "q2-carousel-control-center-tray" }, !this.hidePagination && this.paginationArea(), this.autoPlay && this.autoPlayBtn()), this.showNavigationArrows && this.nextNavBtn())), h("section", { class: carouselContainerClasses.join(' '), ref: el => (this.carouselWrapper = el), "aria-roledescription": "carousel", "aria-label": loc(this.label) }, h("div", { class: "q2-carousel-swiper-wrapper swiper-wrapper", ref: el => (this.carouselPaneWrapperElement = el), "aria-live": this.ariaLiveValue, onKeyDown: this.onWrapperKeyDown }, h("slot", null)))))));
5396
+ return (h(Host, { key: '16ea48b95cbf75b9e174c37713bc995def5f21f4', id: `q2-carousel-${this.guid}`, class: "q2-carousel-instance" }, this.insufficientPanes ? (this.insufficientPanesDisplay()) : (h(Fragment, null, this.paneCount > 1 && (h("div", { class: paginationWrapperClasses.join(' ') }, this.showNavigationArrows && this.prevNavBtn(), h("div", { class: "q2-carousel-control-center-tray" }, !this.hidePagination && this.paginationArea(), this.autoPlay && this.autoPlayBtn()), this.showNavigationArrows && this.nextNavBtn())), h("section", { class: carouselContainerClasses.join(' '), ref: el => (this.carouselWrapper = el), "aria-roledescription": "carousel", "aria-label": loc(this.label) }, h("div", { class: "q2-carousel-swiper-wrapper swiper-wrapper", ref: el => (this.carouselPaneWrapperElement = el), "aria-live": this.ariaLiveValue, onKeyDown: this.onWrapperKeyDown }, h("slot", null)))))));
5397
5397
  }
5398
5398
  get hostElement() { return this; }
5399
5399
  static get watchers() { return {
@@ -4193,7 +4193,7 @@ const Q2ChartArea$1 = /*@__PURE__*/ proxyCustomElement(class Q2ChartArea extends
4193
4193
  // #endregion
4194
4194
  // #region Render Methods
4195
4195
  render() {
4196
- return (h("div", { key: '018ba3a8444d1c87c27ef432d7a40fe2c5cfa045', class: "container" }, h("div", { key: '203d581d9cb2af72594b57567ca193e1e04079f6', ref: el => (this.chartContainer = el), class: "chart-container", role: "img", "test-id": "areaChartContainer" })));
4196
+ return (h("div", { key: '7240d88bec6a1c87e9f5748399b30dda1d2d8320', class: "container" }, h("div", { key: '20b8b1b303ad611e0995f2d60e3c73461deb7b8d', ref: el => (this.chartContainer = el), class: "chart-container", role: "img", "test-id": "areaChartContainer" })));
4197
4197
  }
4198
4198
  get hostElement() { return this; }
4199
4199
  static get watchers() { return {
@@ -1412,7 +1412,7 @@ const Q2ChartBar$1 = /*@__PURE__*/ proxyCustomElement(class Q2ChartBar extends H
1412
1412
  // #endregion
1413
1413
  // #region Render Methods
1414
1414
  render() {
1415
- return (h("div", { key: '0970e0ce55d04879fbee7930cd00ff7b33d923e2', class: "container" }, h("div", { key: 'fa63bbeef13802f259c4c785b190de63ef8b6292', ref: el => (this.chartContainer = el), class: "chart-container", role: "img", "test-id": "barChartContainer" })));
1415
+ return (h("div", { key: 'a2e8f307678e1e4fbb13b356704967b6cefbccae', class: "container" }, h("div", { key: '7d9c116acf2863c17ac3aa6097a83431cc92abd2', ref: el => (this.chartContainer = el), class: "chart-container", role: "img", "test-id": "barChartContainer" })));
1416
1416
  }
1417
1417
  get hostElement() { return this; }
1418
1418
  static get watchers() { return {
@@ -4496,7 +4496,7 @@ const Q2ChartDonut$1 = /*@__PURE__*/ proxyCustomElement(class Q2ChartDonut exten
4496
4496
  } })), !!name && h("div", { class: "name" }, name), !isNaN(value) && h("div", { class: "value" }, displayValue))));
4497
4497
  }
4498
4498
  render() {
4499
- return (h("click-elsewhere", { key: 'a64dc89a12b17fa76adb68aaa62f4bb00c9b50a2', onChange: this.onClickElsewhere }, h("figure", { key: '166aa4f2591f3223fd7d7272192d6bab943b7e19' }, h("div", { key: 'cc898a07ad068069017102ce5339b8cebc08b6ff', class: "container" }, h("div", { key: '99ef9134e6b5c9aaecbb6b0d1118537f6c1d3dce', ref: el => (this.chartContainer = el), "aria-describedby": !this.isClickable ? 'center-card-description' : undefined, class: "chart-container", role: "img", "test-id": "chartContainer", onClick: this.onContainerClick, tabIndex: !this.isClickable ? 0 : undefined, onKeyDown: !this.isClickable ? this.onButtonKeyDown : undefined }), this.renderCenterBlock()), this.showLegend && (h("figcaption", { key: '5bc89ae8526a81d3be061a326f23124246f45b57' }, h("q2-legend", { key: 'e417e717d6801385e699606a11bc4fd4a9b4ab6e', class: "legend", data: this.legendData, format: this.format, hoveredItemId: this.legendHoveredId, onClick: this.onLegendClick, onMouseleave: this.onLegendMouseleave, onMouseenter: this.onLegendMouseenter, selectedItemId: this.selectedId }))))));
4499
+ return (h("click-elsewhere", { key: '9776e06473c435284170f69e086b838da51de316', onChange: this.onClickElsewhere }, h("figure", { key: '04066b83ce261c642a1d802a091d376f8945a95d' }, h("div", { key: '0cb614505419454c11dffae344864a528984cf83', class: "container" }, h("div", { key: '2691d337a322c9ef16e6a55a5fdedcb3f3fe8a4d', ref: el => (this.chartContainer = el), "aria-describedby": !this.isClickable ? 'center-card-description' : undefined, class: "chart-container", role: "img", "test-id": "chartContainer", onClick: this.onContainerClick, tabIndex: !this.isClickable ? 0 : undefined, onKeyDown: !this.isClickable ? this.onButtonKeyDown : undefined }), this.renderCenterBlock()), this.showLegend && (h("figcaption", { key: 'f581d90995c1fb6bb62db8a77711add0440ce961' }, h("q2-legend", { key: '485d12fa6e798e9608f33e2a124fb32f0a01452f', class: "legend", data: this.legendData, format: this.format, hoveredItemId: this.legendHoveredId, onClick: this.onLegendClick, onMouseleave: this.onLegendMouseleave, onMouseenter: this.onLegendMouseenter, selectedItemId: this.selectedId }))))));
4500
4500
  }
4501
4501
  get hostElement() { return this; }
4502
4502
  static get watchers() { return {
@@ -124,7 +124,7 @@ const Q2CheckboxGroup$1 = /*@__PURE__*/ proxyCustomElement(class Q2CheckboxGroup
124
124
  // #region Render Methods
125
125
  render() {
126
126
  const showLabel = this.label || this.optional || this.readonly;
127
- return (h("div", { key: '770707c970ad5701a094facf8476c5b8fc744312' }, showLabel && !this.hideLabel && h("div", { key: '238f5aa35170cecf12f1f903310996625eac8e8c', class: "group-legend" }, labelDOM(this)), h("fieldset", { key: '6805128077cc19074b3e70e865ac4e861f066716', class: `q2-checkbox-fieldset ${this.hasError ? 'has-error' : ''}`, onChange: this.onInnerCheckboxChange, "aria-invalid": this.hasError === undefined ? undefined : `${this.hasError}` }, this.label || this.optional ? h("legend", { class: "sr-only" }, labelDOM(this)) : '', this.hasError ? (h("div", { class: `error-icon-container ${this.label || this.optional ? '' : 'no-label'}` }, h("q2-icon", { class: "h(4) w(4) mrg-b(2)", type: "error" }))) : (''), this.inputDom())));
127
+ return (h("div", { key: '4114fcde4adac060df83295fa602362c36e5fe09' }, showLabel && !this.hideLabel && h("div", { key: '6611f3a1a8cb84f48dab0a57cedba61d5e5290c3', class: "group-legend" }, labelDOM(this)), h("fieldset", { key: 'aa1080e07d33e34f56ca6a68938e6f71f4f030bb', class: `q2-checkbox-fieldset ${this.hasError ? 'has-error' : ''}`, onChange: this.onInnerCheckboxChange, "aria-invalid": this.hasError === undefined ? undefined : `${this.hasError}` }, this.label || this.optional ? h("legend", { class: "sr-only" }, labelDOM(this)) : '', this.hasError ? (h("div", { class: `error-icon-container ${this.label || this.optional ? '' : 'no-label'}` }, h("q2-icon", { class: "h(4) w(4) mrg-b(2)", type: "error" }))) : (''), this.inputDom())));
128
128
  }
129
129
  get hostElement() { return this; }
130
130
  static get watchers() { return {
@@ -106,7 +106,7 @@ const Q2Checkbox = /*@__PURE__*/ proxyCustomElement(class Q2Checkbox extends HTM
106
106
  const textLabelClasses = ['label-text'];
107
107
  if (this.hideLabel)
108
108
  textLabelClasses.push('sr');
109
- return (h("div", { key: '69ca65b3a47557227faf68d1c20a02b6a60e1236', class: "container" }, h("input", { key: 'f34dedc7ac8d490c9f8c7ebb1ffee840a0c0c8f3', ref: el => (this.inputElement = el), "aria-describedby": this.description ? 'description' : undefined, "aria-invalid": this.hasError === undefined ? undefined : `${this.hasError}`, checked: this.indeterminate || this.checked || false, class: "sr", disabled: !!this.disabled || !!this.groupDisabled, id: this._id, name: this.name || this._id, onClick: this.onInputClick, "test-id": "q2CheckboxInnerCheckBox", type: "checkbox", value: this.value }), h("label", { key: 'd27b480a98ce13175784718e4b83b9eaec18fb92', htmlFor: this._id, class: "label-control", "test-id": "checkboxButton" }, this.generateCheckboxSVG()), h("div", { key: '565750b013d70856b6f2e7572cf1c87ed1f19f1c', class: textLabelClasses.join(' ') }, h("label", { key: '13eb7419433df427ff73f9465d216c35fd909845', "test-id": "checkboxLabel", htmlFor: this._id }, loc(this.label), h("slot", { key: 'd5d26b1fc834f8fe9b2df6d0bfba52fdb3c29352' }))), this.description && (h("div", { key: 'd4d96f875d3664bc8655775094f66fda25f51d54', class: "description-text", "test-id": "checkboxDescription", id: "description" }, loc(this.description)))));
109
+ return (h("div", { key: '16039cdaee282c6e98b17326108e6d11c4736442', class: "container" }, h("input", { key: 'b1c9ca9f414a18daf0276f33e700379eafbb64c9', ref: el => (this.inputElement = el), "aria-describedby": this.description ? 'description' : undefined, "aria-invalid": this.hasError === undefined ? undefined : `${this.hasError}`, checked: this.indeterminate || this.checked || false, class: "sr", disabled: !!this.disabled || !!this.groupDisabled, id: this._id, name: this.name || this._id, onClick: this.onInputClick, "test-id": "q2CheckboxInnerCheckBox", type: "checkbox", value: this.value }), h("label", { key: '2314339375a79da9837133d3c4a66002a44c8c05', htmlFor: this._id, class: "label-control", "test-id": "checkboxButton" }, this.generateCheckboxSVG()), h("div", { key: 'e5eab3e512a66bf5cdaa65858cc591205cb0f803', class: textLabelClasses.join(' ') }, h("label", { key: 'ea8bbf8297c674ff9f812fb50e50487ee5bb703a', "test-id": "checkboxLabel", htmlFor: this._id }, loc(this.label), h("slot", { key: '4cf30a956ac7e27ce981632af0995f03c00e22c6' }))), this.description && (h("div", { key: '8fc153008b63e8a79217628e8e31e9721b85f870', class: "description-text", "test-id": "checkboxDescription", id: "description" }, loc(this.description)))));
110
110
  }
111
111
  get hostElement() { return this; }
112
112
  static get watchers() { return {
@@ -112,7 +112,7 @@ const Q2Currency$1 = /*@__PURE__*/ proxyCustomElement(class Q2Currency extends H
112
112
  // #region Render Methods
113
113
  render() {
114
114
  const { hasPlusMinusSign, plusMinusSign, currencyIsFront, currencySymbol, shouldSuperscriptSymbol, amountCore, fraction, shouldSuperscriptFraction, readableCurrency, currencyClasses, } = this;
115
- return (h("div", { key: 'ca1e357df5ef96dfa5063402811570d7868581e4', class: currencyClasses, "aria-label": readableCurrency }, hasPlusMinusSign && h("span", { key: 'c79bfa1e701d518a628900033eb303245a03c9bc' }, plusMinusSign), currencyIsFront && h("span", { key: '149d254d10e4095041c460fd9caf157c456c6a5e', class: shouldSuperscriptSymbol ? 'superscript' : '' }, currencySymbol), h("span", { key: '6448203fc856d698d65092eafb347e0a7c9cda42' }, amountCore), h("span", { key: '482c5c98242500d004d2fefe1051212867123d94', class: shouldSuperscriptFraction ? 'superscript' : '' }, fraction), !currencyIsFront && h("span", { key: '483538c34574feefb3812e9e1dca432550bf4bc1', class: shouldSuperscriptSymbol ? 'superscript' : '' }, currencySymbol)));
115
+ return (h("div", { key: '96411043f2e5839c87bcc9d7cb3381d31035fe3d', class: currencyClasses, "aria-label": readableCurrency }, hasPlusMinusSign && h("span", { key: 'd04ae0911072844ea7694a84106af1f38cfe4b61' }, plusMinusSign), currencyIsFront && h("span", { key: '6c88e386cac5e8dd6c167de27b2b20dd08c3903f', class: shouldSuperscriptSymbol ? 'superscript' : '' }, currencySymbol), h("span", { key: '28bc76c6f8c52b8b59b821f51fd6541683959866' }, amountCore), h("span", { key: '18feb5a6b3def5e688c7ce08f8f03d149343aa50', class: shouldSuperscriptFraction ? 'superscript' : '' }, fraction), !currencyIsFront && h("span", { key: '2584145fa9c5b50bcf248a38d7f14f9f98f6bf3a', class: shouldSuperscriptSymbol ? 'superscript' : '' }, currencySymbol)));
116
116
  }
117
117
  static get watchers() { return {
118
118
  "amount": ["propsUpdated"],
@@ -278,7 +278,7 @@ const Q2DataTable$1 = /*@__PURE__*/ proxyCustomElement(class Q2DataTable extends
278
278
  // #region Render Methods
279
279
  render() {
280
280
  const { caption } = this;
281
- return (h("div", { key: 'b27b40cf415c66de9e08a45382eb4c7b4d755836', class: "container" }, h("table", { key: '49b04f206c0ff875ff5b64107c4482d7101f7d53' }, caption && h("caption", { key: '84567c79359510ba05ff2dfec643109ee610f173', class: this.hideCaption ? 'sr' : undefined }, caption), this.renderTableColGroup(), this.renderTableHeader(), this.renderEmptyState(), this.renderTableRows())));
281
+ return (h("div", { key: 'dfde61adc20b6fa37a13585f43b6f227032f7029', class: "container" }, h("table", { key: '27b894abafe7444abb2ef07acd700454b4f8a14c' }, caption && h("caption", { key: '566b6c4dc4badaef44a69aafd46ea9022a7ec12c', class: this.hideCaption ? 'sr' : undefined }, caption), this.renderTableColGroup(), this.renderTableHeader(), this.renderEmptyState(), this.renderTableRows())));
282
282
  }
283
283
  renderCellContent(cell) {
284
284
  if (!cell)
@@ -105,7 +105,7 @@ const Q2Detail$1 = /*@__PURE__*/ proxyCustomElement(class Q2Detail extends HTMLE
105
105
  // #endregion
106
106
  // #region Render Methods
107
107
  render() {
108
- return (h("div", { key: '01273f64fcf757ddb6684eb682e2c4b3807a2b23', class: this.detailClasses }, this.hasLabel && (h("div", { key: '2a3966c0cc3d942c4ebda2a43e26af75a803f22b', class: this.labelClasses, "aria-describedby": !!this.description ? 'label-description' : undefined }, !!this.label ? loc(this.label) : this.hasLabelSlotContent ? h("slot", { name: "label" }) : '')), this.hasDescripiton && (h("div", { key: 'ced891fbe8eb2fd7698a80a203cb36f6184d8756', id: "label-description", class: this.descriptionClasses }, !!this.description ? loc(this.description) : this.hasDefaultSlotContent ? h("slot", null) : ''))));
108
+ return (h("div", { key: '72b63108232248d696af60389c2e7fbec8cb0a39', class: this.detailClasses }, this.hasLabel && (h("div", { key: '0bf4a6239effb3a0b5fa475ff4c957791db29a85', class: this.labelClasses, "aria-describedby": !!this.description ? 'label-description' : undefined }, !!this.label ? loc(this.label) : this.hasLabelSlotContent ? h("slot", { name: "label" }) : '')), this.hasDescripiton && (h("div", { key: 'c308fad02b94207681013ee04d7fde92635a5c78', id: "label-description", class: this.descriptionClasses }, !!this.description ? loc(this.description) : this.hasDefaultSlotContent ? h("slot", null) : ''))));
109
109
  }
110
110
  get hostElement() { return this; }
111
111
  static get style() { return Q2DetailStyle0; }
@@ -300,7 +300,7 @@ const Q2Dropdown$1 = /*@__PURE__*/ proxyCustomElement(class Q2Dropdown extends H
300
300
  // #region Render Methods
301
301
  render() {
302
302
  const btnProps = this.toggleButtonProps;
303
- return (h("click-elsewhere", { key: 'aeee28aa4e5ba77a2fb445a41ad77013df364fc2', class: this.open ? 'dropdown-open' : '', onChange: this.onClickElsewhere, "test-id": "dropdownContainer" }, h("q2-btn", { key: '40a9565e05720f1e851f436fcec9799e21cee9a4', ref: el => (this.controlElement = el), class: btnProps.className, onClick: this.onToggleClick, onKeyDown: this.onToggleKeydown, fab: btnProps.fab, intent: btnProps.intent, active: btnProps.active, disabled: btnProps.disabled, ariaExpanded: `${!!btnProps.ariaExpanded}`, label: this.hideLabel && this.label ? loc(this.label) : undefined, hideLabel: this.hideLabel, ariaHasPopup: "menu", "test-id": "dropdownButton", block: this.block, description: loc('tecton.element.dropdown.itemCount', [this.determineDropdownItemCount]) }, this.hasCustomButton ? (h("div", { "test-id": "dropdownCustom", class: btnProps.custom ? '' : 'hidden' }, h("slot", { name: "custom-dropdown-button" }))) : (h(Fragment, null, this.icon ? h("q2-icon", { type: this.icon }) : ' ', this.label && !this.hideLabel && (h("span", { class: "dropdown-button-text" }, loc(this.label)))))), h("q2-popover", { key: '268e30f6bbf05c99ddcff2a4e514a137107e8467', ref: el => (this.popoverElement = el), controlElement: this.controlElement, open: this.open, minHeight: this.popoverMinHeight, direction: this.popoverDirection, align: this.popoverAlignment, mode: this.popoverMode || undefined, block: this.block }, h("div", { key: '72e00624fc986d5feef7da209832e0ce85d53011', onClick: this.onDropdownMenuClick, onKeyDown: this.onDropdownMenuKeydown, role: "menu", "aria-label": loc(this.label) || undefined }, h("slot", { key: '5e03e01d3a10259be44f92c7b88885ef1ae9ab94' })), this.open && (h("q2-btn", { key: '31f3a4965c6417f689364b913ae0bb0dee647147', class: "sr close-dropdown", onFocus: this.closeDropdown })))));
303
+ return (h("click-elsewhere", { key: '05d32eaab6e1b3e69e1de651faac529aeba9156d', class: this.open ? 'dropdown-open' : '', onChange: this.onClickElsewhere, "test-id": "dropdownContainer" }, h("q2-btn", { key: 'd90a220e08135931629d54bca5dfed64f12558a1', ref: el => (this.controlElement = el), class: btnProps.className, onClick: this.onToggleClick, onKeyDown: this.onToggleKeydown, fab: btnProps.fab, intent: btnProps.intent, active: btnProps.active, disabled: btnProps.disabled, ariaExpanded: `${!!btnProps.ariaExpanded}`, label: this.hideLabel && this.label ? loc(this.label) : undefined, hideLabel: this.hideLabel, ariaHasPopup: "menu", "test-id": "dropdownButton", block: this.block, description: loc('tecton.element.dropdown.itemCount', [this.determineDropdownItemCount]) }, this.hasCustomButton ? (h("div", { "test-id": "dropdownCustom", class: btnProps.custom ? '' : 'hidden' }, h("slot", { name: "custom-dropdown-button" }))) : (h(Fragment, null, this.icon ? h("q2-icon", { type: this.icon }) : ' ', this.label && !this.hideLabel && (h("span", { class: "dropdown-button-text" }, loc(this.label)))))), h("q2-popover", { key: '69a373f6e2071e32a0c4167366057ad97455cb79', ref: el => (this.popoverElement = el), controlElement: this.controlElement, open: this.open, minHeight: this.popoverMinHeight, direction: this.popoverDirection, align: this.popoverAlignment, mode: this.popoverMode || undefined, block: this.block }, h("div", { key: 'aa37a3d159d991ffae438d5b4384c4c7c7ce2fb6', onClick: this.onDropdownMenuClick, onKeyDown: this.onDropdownMenuKeydown, role: "menu", "aria-label": loc(this.label) || undefined }, h("slot", { key: '989eded8b3270d48a1c1548d2f825c526229553a' })), this.open && (h("q2-btn", { key: '7dee7aa82399128e528058f4482a2b56cb563abe', class: "sr close-dropdown", onFocus: this.closeDropdown })))));
304
304
  }
305
305
  get hostElement() { return this; }
306
306
  static get watchers() { return {
@@ -220,7 +220,7 @@ const Q2EditableField$1 = /*@__PURE__*/ proxyCustomElement(class Q2EditableField
220
220
  // #endregion
221
221
  // #region Render Methods
222
222
  render() {
223
- return (h("div", { key: '2804e73789f4728c6ac882dc44cc987fc62e1045' }, this.generateEditStateDOM(), this.generateReadStateDOM()));
223
+ return (h("div", { key: 'f89da7b776ce15b7762805819199939bc04d7cb1' }, this.generateEditStateDOM(), this.generateReadStateDOM()));
224
224
  }
225
225
  get hostElement() { return this; }
226
226
  static get watchers() { return {
@@ -3535,7 +3535,7 @@ const Q2Input = /*@__PURE__*/ proxyCustomElement(class Q2Input extends HTMLEleme
3535
3535
  // #endregion
3536
3536
  // #region Render Methods
3537
3537
  render() {
3538
- return (h("div", { key: 'aabab7e28c8c4849d6b2ca6b3a59f446fbee9755', class: this.wrapperClasses }, h("div", { key: 'abdd8152d335850d9f75a9d15ec1ef661de43307', class: "label-wrapper" }, labelDOM(this), this.countDOM()), this.inputContainerDOM(), messagesDOM(this)));
3538
+ return (h("div", { key: '104588d4a6b821addd1fb08c58f81ce7f8d51ece', class: this.wrapperClasses }, h("div", { key: '4cd47c0f0bd7972d12d612a8293f48bfdbd9106a', class: "label-wrapper" }, labelDOM(this), this.countDOM()), this.inputContainerDOM(), messagesDOM(this)));
3539
3539
  }
3540
3540
  get hostElement() { return this; }
3541
3541
  static get watchers() { return {
@@ -107,7 +107,7 @@ const Q2Item$1 = /*@__PURE__*/ proxyCustomElement(class Q2Item extends HTMLEleme
107
107
  // #region Render Methods
108
108
  render() {
109
109
  const { clickable } = this;
110
- return (h("div", { key: '80d985a7c74d96312cd7bafb03aba39e531f772a', "test-id": "itemContainer", class: this.itemClasses, ref: el => (this.itemElement = el), role: clickable ? 'button' : undefined, tabIndex: clickable ? 0 : undefined }, this.hasBulletSlotContent && (h("div", { key: 'b09d16e16cab6b0941f53f22a6d547df6ae342d2', class: this.bulletClasses }, h("slot", { key: '4b1f6b4e31174f777a4b54e7d1b731d011179bf6', name: "bullet" }))), h("div", { key: 'cf4bd1369fb432b4a984f1ffcc829c596f375fe7', class: this.mainClasses }, this.hasHeaderSlotContent && (h("div", { key: 'c0e7c46f10591ace0ff4c6acb310f999b0121b3f', class: "header" }, h("slot", { key: 'd225f00490ad5c580ecddb8810916cbe7ba5f652', name: "header" }))), this.hasBodySlotContent && (h("div", { key: 'f9b7a0c51d54e10e4abd2ac022cc61b52e2e86fd', class: "body" }, h("slot", { key: 'bbb7aaaa5c4978feffb089b3566bd8e21db93b39', name: "body" })))), this.hasActionSlotContent && (h("div", { key: '8c125bb2f341c03cbffb1370e1b4e636b4445730', class: this.actionClasses }, h("slot", { key: '933398ac1303838af0cfa270fe9a71d1376293bd', name: "action" }))), this.hasFooterSlotContent && (h("div", { key: '049457ca32ca7b9b9f1f5b6b05c815760c0bd48f', class: this.footerClasses }, h("slot", { key: 'c3a08c5cd4c57100be2101a28fa85e2e6e13e4d5', name: "footer" })))));
110
+ return (h("div", { key: '66ba0b904138a9e17090e077b3d589288e23eb68', "test-id": "itemContainer", class: this.itemClasses, ref: el => (this.itemElement = el), role: clickable ? 'button' : undefined, tabIndex: clickable ? 0 : undefined }, this.hasBulletSlotContent && (h("div", { key: 'ec467f559fdd7b21c8517f4e00375e191e4188b2', class: this.bulletClasses }, h("slot", { key: 'a206d02dd8f6994f25010016fca7dee5ff34dd26', name: "bullet" }))), h("div", { key: '34871dfc150437aaf03490035515a6e8f9ab494e', class: this.mainClasses }, this.hasHeaderSlotContent && (h("div", { key: '0c8009a760b94ba4a2b298dd8cab6754a121b625', class: "header" }, h("slot", { key: '0abb3e31579a520ea8e8104bfc5c79e1e288386f', name: "header" }))), this.hasBodySlotContent && (h("div", { key: '9ae2ec0a8f7d81d57c7811e8a333c4199b0ddbb8', class: "body" }, h("slot", { key: '2c2c5bce666a563d483de414f7eca40620758d2e', name: "body" })))), this.hasActionSlotContent && (h("div", { key: 'b09f2855d46959fd5d9b5dc83084de65f19beea1', class: this.actionClasses }, h("slot", { key: '1c5d3e857c91553d4dc3eaf292fe8f0c93191fc1', name: "action" }))), this.hasFooterSlotContent && (h("div", { key: '5c264310fd2987599038472a186c61529fa320ae', class: this.footerClasses }, h("slot", { key: '8581f3f4be666689d57e4ee6e3c673bd1d09b5c1', name: "footer" })))));
111
111
  }
112
112
  get hostElement() { return this; }
113
113
  static get style() { return Q2ItemStyle0; }
@@ -105,7 +105,7 @@ const Q2Legend = /*@__PURE__*/ proxyCustomElement(class Q2Legend extends HTMLEle
105
105
  // #endregion
106
106
  // #region Render Methods
107
107
  render() {
108
- return (h("click-elsewhere", { key: 'a3628c5f9dbaa2d7ac27e7a227b877d705350b0a', onChange: () => this.onClickElsewhere(this) }, h("ul", { key: '5c4361cd025cd2f4234afbbce09fb377e90e44c1' }, this.dataWithClasses.map(item => (h("li", { class: "item" }, h("button", { "test-id": "item", "aria-label": `${item.name} ${this.formatValue(item.value)}`, class: item.classes, onClick: event => this.onClick(event, item), onMouseEnter: event => this.onMouseEnter(event, item), onMouseLeave: event => this.onMouseLeave(event, item) }, h("span", { "test-id": "itemColor", class: "item-color-indicator", style: { backgroundColor: item.color }, "aria-hidden": "true" }), h("span", { "test-id": "itemName", class: "item-name" }, item.name), h("span", { id: `item-${item.id}`, "test-id": "itemValue", class: "item-value" }, this.formatValue(item.value)))))))));
108
+ return (h("click-elsewhere", { key: '68b6b0b5f42832d933bae384ebf30e5ed9abe6e8', onChange: () => this.onClickElsewhere(this) }, h("ul", { key: '3f2a7a7d6ed993443055f22a39b97432af911fc4' }, this.dataWithClasses.map(item => (h("li", { class: "item" }, h("button", { "test-id": "item", "aria-label": `${item.name} ${this.formatValue(item.value)}`, class: item.classes, onClick: event => this.onClick(event, item), onMouseEnter: event => this.onMouseEnter(event, item), onMouseLeave: event => this.onMouseLeave(event, item) }, h("span", { "test-id": "itemColor", class: "item-color-indicator", style: { backgroundColor: item.color }, "aria-hidden": "true" }), h("span", { "test-id": "itemName", class: "item-name" }, item.name), h("span", { id: `item-${item.id}`, "test-id": "itemValue", class: "item-value" }, this.formatValue(item.value)))))))));
109
109
  }
110
110
  static get watchers() { return {
111
111
  "hoveredItemId": ["watchHoveredItemId"],
@@ -71,7 +71,7 @@ const Q2List$1 = /*@__PURE__*/ proxyCustomElement(class Q2List extends HTMLEleme
71
71
  // #endregion
72
72
  // #region Render Methods
73
73
  render() {
74
- return (h("div", { key: '79c56178fe7a20615fa2a3b25a49eb2ee9271010', class: this.listClasses, ref: el => (this.listElement = el) }, (this.hasFilterSlot || this.hasLabelContent) && (h("div", { key: '429aca072e6464748b491d85f4409cb2012632f6', class: this.headerClasses }, h("div", { key: 'be1e773f4cbb3680bf9837c81ddff63594df3912', class: "label" }, this.label), this.hasFilterSlot && h("slot", { key: '52d8bc3b3cb7df3b81be7c41f82565fe7ac41aca', name: "filter" }))), h("div", { key: '988c0b2dfa3ea5615541c264689bc4fc21271a80', role: "list" }, h("slot", { key: 'c4923b739722c3aecef60c2b5cf8a3b9976749bc' }))));
74
+ return (h("div", { key: 'c74756a4deb860c67aa787101c34e87bc8c51387', class: this.listClasses, ref: el => (this.listElement = el) }, (this.hasFilterSlot || this.hasLabelContent) && (h("div", { key: '2cb7b92f7dc7182bac0d8456619744564dcc1408', class: this.headerClasses }, h("div", { key: 'd7aa944186afd14e386351874b7f69c940f8529b', class: "label" }, this.label), this.hasFilterSlot && h("slot", { key: '78160579a63d423865ceabb4e97ee297c10532ca', name: "filter" }))), h("div", { key: 'b13b336c899a514e581ee7f5121cc91f129f649f', role: "list" }, h("slot", { key: 'fecae1fc4dbb811d281959e2a56ae8ed2cae1926' }))));
75
75
  }
76
76
  get hostElement() { return this; }
77
77
  static get style() { return Q2ListStyle0; }
@@ -15,7 +15,7 @@ const Q2Loc$1 = /*@__PURE__*/ proxyCustomElement(class Q2Loc extends HTMLElement
15
15
  // #endregion
16
16
  // #region Render Methods
17
17
  render() {
18
- return h("span", { key: '9c804f2ae2b01b8afb6ec80888270955214023d4' }, loc(this.value, this.substitutions));
18
+ return h("span", { key: 'd10687eb470d5a8b1eeefe4ece8b0d86f5c46666' }, loc(this.value, this.substitutions));
19
19
  }
20
20
  static get style() { return Q2LocStyle0; }
21
21
  }, [1, "q2-loc", {
@@ -65,7 +65,7 @@ const Q2Message = /*@__PURE__*/ proxyCustomElement(class Q2Message extends HTMLE
65
65
  const addDivForAriaLive = !isFirefox && this.presentToggle;
66
66
  const { description } = this;
67
67
  const messageLabel = loc(`tecton.element.message.type.${this.type ? this.type : 'info'}`);
68
- return (h("div", { key: 'e1d18f9049c2db5155c5c0bbc3910b054fe0750b', tabindex: "-1", class: "message", role: description ? undefined : 'alert', "aria-live": description ? undefined : 'assertive', "aria-atomic": description ? undefined : 'true', "aria-relevant": description && addAriaHiddenForAriaLive ? undefined : 'all', "test-id": "messageContainer" }, this.appearance === 'standard' ? this.messageIcon(this.type) : '', addDivForAriaLive && h("div", { key: 'e366d744172d8acf7147ffc281c10fc45631d667', class: "sr" }), h("div", { key: '0b28d2c734f29768c0e9101e237a0770357eee6d', class: "sr message-label" }, messageLabel), h("div", { key: 'bb77d8b0cee0e9ee237be61ec19c6d0d203b8a28', class: "message-content", "aria-hidden": addAriaHiddenForAriaLive ? 'true' : undefined }, h("slot", { key: '7b614a6fc1404bff19231b50059b4313c8c0989f' }))));
68
+ return (h("div", { key: '62553ab45a65a048e540615779d636d779f80ebc', tabindex: "-1", class: "message", role: description ? undefined : 'alert', "aria-live": description ? undefined : 'assertive', "aria-atomic": description ? undefined : 'true', "aria-relevant": description && addAriaHiddenForAriaLive ? undefined : 'all', "test-id": "messageContainer" }, this.appearance === 'standard' ? this.messageIcon(this.type) : '', addDivForAriaLive && h("div", { key: '71b7f21d7ce275ed88cb224d05aa513b556161df', class: "sr" }), h("div", { key: '6caee108cd391c64dea7441b7a08b5ad4ff2aa61', class: "sr message-label" }, messageLabel), h("div", { key: 'fdc8470a6c7502f8bc218e45d7946e938bfa2fb8', class: "message-content", "aria-hidden": addAriaHiddenForAriaLive ? 'true' : undefined }, h("slot", { key: '4607352f1ca8a26f53ded631ad3ada93dfa266f5' }))));
69
69
  }
70
70
  get hostElement() { return this; }
71
71
  static get style() { return Q2MessageStyle0; }
@@ -146,10 +146,10 @@ const Q2MonthPicker$1 = /*@__PURE__*/ proxyCustomElement(class Q2MonthPicker ext
146
146
  // #endregion
147
147
  // #region Render Methods
148
148
  render() {
149
- return (h("div", { key: '9a3d5b9d43098c70309afeca4c363d50e868f991', class: "month-container", onKeyDown: this.onMonthKeydown }, h("div", { key: '5ac2d482a9ad89e91159fa434c9936ce15334424', class: "navigation" }, h("q2-btn", { key: '2f8b0f30e9d0fa8afe77460693fd6e079a45b38f', class: "year-btn", onClick: () => this.viewChange.emit({
149
+ return (h("div", { key: '409a4c94ba89996c2bf82890aea9b499acb9d5e8', class: "month-container", onKeyDown: this.onMonthKeydown }, h("div", { key: '9d6fcecbf31d27525f55aaf37eaf37f6e95b6c3a', class: "navigation" }, h("q2-btn", { key: 'e84c9766cb3a106b43fbae7d15f34951f800dd1f', class: "year-btn", onClick: () => this.viewChange.emit({
150
150
  view: 'year',
151
151
  selectedYear: this.year,
152
- }) }, h("span", { key: 'f072969beb15c5789afc9042e2826ea74b3a6296', class: "year" }, this.year), h("q2-icon", { key: '5b5cb096290de9963532a6524c127e6bdfd8cbdf', class: "year-icon off", type: "chevron-down" })), h("div", { key: 'af5660c0768fa85b40091b75039c3fdc48ab7577', class: "month-controller" }, h("div", { key: 'd76a935b9e17b79a9a9a3bbd06d090d4dfdb2409', class: "cal-year-prev-next" }, h("q2-btn", { key: '37a15ade5e768d735d76901d9376932efbe237f1', label: loc('tecton.element.calendar.previousYear'), "hide-label": true, class: "cal-nav-btn prev-year", "test-id": "previousYearButton", onClick: () => this.selectYear(this.year - 1) }, h("q2-icon", { key: '42e9ee837d8ac8162f384e2f67e2ccc11bfae2d2', type: "arrow-left" })), h("q2-btn", { key: '474bf6cc02daa2c4b0663276b2b65d1951abda36', label: loc('tecton.element.calendar.nextYear'), "hide-label": true, class: "cal-nav-btn next-year", "test-id": "nextYearButton", onClick: () => this.selectYear(this.year + 1) }, h("q2-icon", { key: '80ec6db5a6b9f150fc4dd96c01eae42ce31bc969', type: "arrow-right" }))))), h("div", { key: 'f5e78be0913701d00c81e4674d82e24f28d675e0', class: "month-list", onClick: this.onMonthSelection }, this.months.map((month, index) => (h("div", { class: "month" }, h("span", { role: "button", class: "month-button", "data-index": index, "aria-label": month.label, tabindex: index === this.focusedIndex ? 0 : -1 }, month.abbr))))), this.today && (h("div", { key: '66c9301a80b27c8dcaa47022991178053d618d89', class: "today-label" }, loc('tecton.element.calendar.today'), ": ", this.today))));
152
+ }) }, h("span", { key: '839f22821c2d3d4db5a77c25b26f706f90a096bc', class: "year" }, this.year), h("q2-icon", { key: '4df1e8921422d6edb23cabd417328c6c25090168', class: "year-icon off", type: "chevron-down" })), h("div", { key: '07aa5ca1bed1705f801f860d0a25f57458079341', class: "month-controller" }, h("div", { key: '18e518b64bf764c169f60c369e06341d1f272539', class: "cal-year-prev-next" }, h("q2-btn", { key: 'ab49ab4bd2882fb899272d04ab7221c0c3ad55f7', label: loc('tecton.element.calendar.previousYear'), "hide-label": true, class: "cal-nav-btn prev-year", "test-id": "previousYearButton", onClick: () => this.selectYear(this.year - 1) }, h("q2-icon", { key: 'e670e9b321029420b714b7989d49f61475cdaff0', type: "arrow-left" })), h("q2-btn", { key: '518a0a6a77bfe737a0001ede559a2068ef87a047', label: loc('tecton.element.calendar.nextYear'), "hide-label": true, class: "cal-nav-btn next-year", "test-id": "nextYearButton", onClick: () => this.selectYear(this.year + 1) }, h("q2-icon", { key: 'a01f1293d5b37d6374e63afb2a622c193be593a2', type: "arrow-right" }))))), h("div", { key: '1fdb16e9929417014ae445c5face1b99835917b3', class: "month-list", onClick: this.onMonthSelection }, this.months.map((month, index) => (h("div", { class: "month" }, h("span", { role: "button", class: "month-button", "data-index": index, "aria-label": month.label, tabindex: index === this.focusedIndex ? 0 : -1 }, month.abbr))))), this.today && (h("div", { key: '75de5292a5e8afd88ad0f5f8f798151b9e09c06e', class: "today-label" }, loc('tecton.element.calendar.today'), ": ", this.today))));
153
153
  }
154
154
  get hostElement() { return this; }
155
155
  static get style() { return Q2MonthPickerStyle0; }
@@ -50,7 +50,7 @@ const Q2Optgroup = /*@__PURE__*/ proxyCustomElement(class Q2Optgroup extends HTM
50
50
  // #endregion
51
51
  // #region Render Methods
52
52
  render() {
53
- return (h("div", { key: 'a6e920d9a1e04c3d1ddb3aa94da8199010d58a94', class: "q2-optgroup-container", hidden: this.hidden, "aria-labelledby": this.headerId, role: "group" }, h("div", { key: '7548493124d197bd4deab8585b519d110bed079d', class: "q2-optgroup-header", id: this.headerId }, (this.label && loc(this.label)) || ''), h("div", { key: '9dd48c12fb533b2dade166f3d2b71ac9032981fa', class: "q2-optgroup-options" }, h("slot", { key: '429c914a50a62bc0f6140a99e6ddd42dd3a36455' }))));
53
+ return (h("div", { key: 'f5ab9b74fa9fb89458aca16e68ba138991e6a02a', class: "q2-optgroup-container", hidden: this.hidden, "aria-labelledby": this.headerId, role: "group" }, h("div", { key: 'db6de86db666f6755f00cafdaa94b264db101fce', class: "q2-optgroup-header", id: this.headerId }, (this.label && loc(this.label)) || ''), h("div", { key: 'c64981bb503f6ae36b7195bf2c000c6f56e34822', class: "q2-optgroup-options" }, h("slot", { key: '5c686ed0099d132a599f2e05261a79777df2ba52' }))));
54
54
  }
55
55
  get hostElement() { return this; }
56
56
  static get watchers() { return {
@@ -60,7 +60,6 @@ const Q2OptionList = /*@__PURE__*/ proxyCustomElement(class Q2OptionList extends
60
60
  break;
61
61
  case 'ArrowUp':
62
62
  event.preventDefault();
63
- this.activeIndex = 0;
64
63
  nextIndex = !!this.selectedOptions.length ? this.getDefaultActiveIndex() : this.getNextVisibleIndex(-1);
65
64
  if (nextIndex === -1)
66
65
  break;
@@ -68,8 +67,7 @@ const Q2OptionList = /*@__PURE__*/ proxyCustomElement(class Q2OptionList extends
68
67
  break;
69
68
  case 'ArrowDown':
70
69
  event.preventDefault();
71
- this.activeIndex = 0;
72
- nextIndex = !!this.selectedOptions.length ? this.getDefaultActiveIndex() : this.getNextVisibleIndex(0);
70
+ nextIndex = !!this.selectedOptions.length ? this.getDefaultActiveIndex() : this.getNextVisibleIndex(1);
73
71
  if (nextIndex === -1)
74
72
  break;
75
73
  this.openDropdownWithActiveElement(nextIndex);
@@ -119,7 +117,7 @@ const Q2OptionList = /*@__PURE__*/ proxyCustomElement(class Q2OptionList extends
119
117
  };
120
118
  this.internalKeydownHandler = (event) => {
121
119
  event.stopPropagation();
122
- const { activeIndex, customSearch, allOptions, multiple } = this;
120
+ const { activeIndex, customSearch, allOptions, allVisibleOptions, multiple } = this;
123
121
  const { key, shiftKey } = event;
124
122
  let newOption;
125
123
  switch (key) {
@@ -151,8 +149,8 @@ const Q2OptionList = /*@__PURE__*/ proxyCustomElement(class Q2OptionList extends
151
149
  break;
152
150
  case 'ArrowUp':
153
151
  event.preventDefault();
154
- const isFirstOptionActive = activeIndex === 0;
155
- if (isFirstOptionActive)
152
+ const isFirstVisibleOptionActive = allVisibleOptions[0].active;
153
+ if (isFirstVisibleOptionActive)
156
154
  break;
157
155
  if (activeIndex === undefined) {
158
156
  this.setDefaultActiveElement();
@@ -167,8 +165,8 @@ const Q2OptionList = /*@__PURE__*/ proxyCustomElement(class Q2OptionList extends
167
165
  }
168
166
  case 'ArrowDown':
169
167
  event.preventDefault();
170
- const isLastOptionActive = activeIndex === allOptions.length - 1;
171
- if (isLastOptionActive)
168
+ const isLastVisibleOptionActive = allVisibleOptions[allVisibleOptions.length - 1].active;
169
+ if (isLastVisibleOptionActive)
172
170
  break;
173
171
  if (activeIndex === undefined) {
174
172
  this.setDefaultActiveElement();
@@ -202,6 +200,10 @@ const Q2OptionList = /*@__PURE__*/ proxyCustomElement(class Q2OptionList extends
202
200
  break;
203
201
  if (this.multiple && this.type === 'listbox')
204
202
  break;
203
+ if (this.type === 'menu') {
204
+ this.popoverState.emit({ open: false, action: 'close' });
205
+ break;
206
+ }
205
207
  newOption = allOptions.find(element => element.active);
206
208
  if (!newOption || newOption.disabled)
207
209
  return;
@@ -470,7 +472,7 @@ const Q2OptionList = /*@__PURE__*/ proxyCustomElement(class Q2OptionList extends
470
472
  }
471
473
  scrollToActiveOption() {
472
474
  const activeOption = this.allOptions[this.activeIndex];
473
- activeOption === null || activeOption === void 0 ? void 0 : activeOption.scrollIntoView({ block: 'nearest' });
475
+ activeOption === null || activeOption === void 0 ? void 0 : activeOption.scrollIntoView({ block: 'center' });
474
476
  }
475
477
  searchOptions(key, shouldSelect) {
476
478
  this.searchString = key;
@@ -541,7 +543,7 @@ const Q2OptionList = /*@__PURE__*/ proxyCustomElement(class Q2OptionList extends
541
543
  // #endregion
542
544
  // #region Render Methods
543
545
  render() {
544
- return (h(Host, { key: 'c96ee2b7016ed9bcb536cca496d16b7f1d82dffc' }, h("div", { key: 'f70955097de59ed340e319a1e2835837bae0deaa', class: "content", ref: el => (this.contentElement = el), onFocusout: this.focusoutHandler }, h("div", { key: 'd6bffcdc788da1b0f3871a216cff862e157eaa1a', class: "options", "aria-label": loc('tecton.element.optionList.label', [this.label]), "aria-multiselectable": `${!!this.multiple}`, role: this.type || 'listbox', onKeyDown: this.internalKeydownHandler, onClick: this.clickHandler }, h("slot", { key: 'bb5f8b8597574fd83b1c2a45438e43072b85d7e1' })))));
546
+ return (h(Host, { key: 'd0a9a9f08038a8856edbde465e82e5a48dd64925' }, h("div", { key: 'd6caf01cb66a3b2bbc063bfbf7b4f8968f7f5fd6', class: "content", ref: el => (this.contentElement = el), onFocusout: this.focusoutHandler }, h("div", { key: '6c5c6d4ed0446dd8b92df50d568eadf5ba13100a', class: "options", "aria-label": loc('tecton.element.optionList.label', [this.label]), "aria-multiselectable": `${!!this.multiple}`, role: this.type || 'listbox', onKeyDown: this.internalKeydownHandler, onClick: this.clickHandler }, h("slot", { key: '1ed18df8ed8e395511d1cb9078fcf6eefc886b67' })))));
545
547
  }
546
548
  get hostElement() { return this; }
547
549
  static get watchers() { return {
@@ -1 +1 @@
1
- {"file":"q2-option-list2.js","mappings":"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","names":[],"sources":["src/components/q2-option-list/q2-option-list.scss?tag=q2-option-list&encapsulation=shadow","src/components/q2-option-list/q2-option-list.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions';\n\n:host {\n position: relative;\n width: 100%;\n display: block;\n line-height: var-list(var-prefixer(option-list-line-height),--app-line-height, 1.428571429em);\n}\n\n.content {\n text-align: start;\n\n :host([is-sizeable]) & {\n display: block;\n height: auto;\n }\n}\n","import {\n Component,\n Prop,\n h,\n Event,\n State,\n Element,\n ComponentInterface,\n Host,\n EventEmitter,\n Method,\n Watch,\n Listen,\n} from '@stencil/core';\nimport { isEventFromElement, isVisible, loc, nextPaint, overrideFocus, waitForNextPaint } from 'src/utils';\n\nexport interface IOptionValue {\n value: string;\n display?: string;\n}\n\n@Component({ tag: 'q2-option-list', shadow: true, styleUrl: 'q2-option-list.scss' })\nexport class Q2OptionList implements ComponentInterface {\n // #region Own Properties\n\n activeIndex: number;\n contentElement: HTMLElement;\n keyStore: {\n queue: string[];\n lastPressedAt: Date;\n } = {\n queue: [],\n lastPressedAt: new Date(),\n };\n pivotIndex: number;\n scheduledAfterRender: (() => void)[] = [];\n searchString: string;\n searchStringTimer: number;\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region State Properties\n\n @State()\n hasOptions: boolean;\n\n // #endregion\n // #region Public Property API\n\n @Prop({ reflect: true })\n align: 'left' | 'right';\n\n /** Indicates a custom search is being implemented for the option list. */\n @Prop({ reflect: true })\n customSearch: boolean;\n\n /** Disables the option list. */\n @Prop({ reflect: true })\n disabled: boolean;\n\n /** Determines the label that is applied to the option list for accessibility purposes. */\n @Prop()\n label: string = loc('tecton.element.optionList.label');\n\n /**\n * Enables the multi-select ability for the option list.\n * @info\n * Only applicable when options are provided.\n */\n @Prop({ reflect: true })\n multiple: boolean;\n\n /** Disables the logic that handles selecting and focusing an option in the option list. */\n @Prop({ reflect: true })\n noSelect: boolean;\n\n /** A list of the selected options on the element. */\n @Prop({ mutable: true })\n selectedOptions: IOptionValue[] = [];\n\n /** Applies focus to the selected option. */\n @Prop({ reflect: true, mutable: true })\n showSelected: boolean;\n\n /** Translates to the role of the option list */\n @Prop()\n type: 'menu' | 'listbox' = 'listbox';\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when an option is selected or deselected.\n *\n * When the multi-select is enabled, the `value` property will be `undefined` and the `selectedOptions` property\n * will contain the selected option values.\n */\n @Event()\n change: EventEmitter<{ value: string; values: IOptionValue[] }>;\n\n /**\n * Emitted to indicate the intended state of the popover.\n * @private\n */\n @Event()\n popoverState: EventEmitter<{ open: boolean; action: 'close' | 'select' | 'open' }>;\n\n /**\n * Emitted when the component has finished rendering.\n * @private\n */\n @Event({ bubbles: false })\n ready: EventEmitter<undefined>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n componentWillLoad() {\n this.hasOptions = !!this.hostElement.querySelectorAll('q2-option').length;\n }\n\n componentDidLoad(): void {\n overrideFocus(this.hostElement);\n this.checkOptions();\n this.selectedOptionsUpdated();\n this.ready.emit();\n }\n\n componentDidRender() {\n this.scheduledAfterRender.forEach(fn => fn());\n this.scheduledAfterRender = [];\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('click')\n handleClick(event: MouseEvent) {\n event.stopPropagation();\n }\n\n @Listen('focus')\n delegateFocus(event: FocusEvent) {\n if (!isEventFromElement(event, this.hostElement)) return;\n this.popoverState.emit({ open: true, action: 'open' });\n const { activeIndex } = this;\n if (typeof activeIndex === 'number' && activeIndex > -1) {\n this.setActiveOption();\n this.setFocusedOption();\n } else {\n this.setDefaultActiveElement();\n }\n }\n\n // #endregion\n // #region Public Methods API\n\n @Method()\n async getContents(): Promise<(HTMLQ2OptgroupElement | HTMLQ2OptionElement)[]> {\n return this.allContents;\n }\n\n @Method()\n async getOptions(): Promise<HTMLQ2OptionElement[]> {\n return this.allOptions;\n }\n\n @Method()\n async handleExternalKeydown(event: KeyboardEvent) {\n this.externalKeydownHandler(event);\n }\n\n @Method()\n async setActiveElement(index: number) {\n this.activeIndex = index;\n this.setActiveOption();\n this.setFocusedOption();\n }\n\n @Method()\n async setDefaultActiveElement() {\n this.activeIndex = this.getDefaultActiveIndex();\n this.setActiveOption();\n this.setFocusedOption();\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('selectedOptions')\n selectedOptionsUpdated() {\n if (this.multiple) {\n this.updateMultipleOptionAttrs();\n } else {\n this.updateSingleOptionAttrs();\n }\n }\n\n @Watch('showSelected')\n showSelectedUpdated(showSelected: boolean) {\n if (showSelected && this.selectedOptions.length === 0) {\n this.showSelected = false;\n return;\n }\n this.allOptions.forEach(option => (option._multiSelectHidden = showSelected ? !option.selected : false));\n }\n\n // #endregion\n // #region Local Methods\n\n get allContents(): (HTMLQ2OptgroupElement | HTMLQ2OptionElement)[] {\n const rootSlot = this.getRootSlot(this.hostElement);\n const acceptedTags = ['Q2-OPTGROUP', 'Q2-OPTION'];\n return rootSlot.filter(element => acceptedTags.includes(element.tagName)) as (\n | HTMLQ2OptgroupElement\n | HTMLQ2OptionElement\n )[];\n }\n\n get allOptions(): HTMLQ2OptionElement[] {\n const contents = this.allContents;\n\n const extractOptions = (\n elements: (HTMLQ2OptgroupElement | HTMLQ2OptionElement | Element)[]\n ): HTMLQ2OptionElement[] => {\n return elements.reduce((acc, element) => {\n if (element.tagName === 'Q2-OPTGROUP') {\n return [...acc, ...extractOptions(Array.from(element.children))];\n } else if (element.tagName === 'Q2-OPTION') {\n return [...acc, element];\n } else {\n return acc;\n }\n }, []);\n };\n\n return extractOptions(contents);\n }\n\n get allVisibleOptions(): HTMLQ2OptionElement[] {\n return this.allOptions.filter(\n option => !option.hidden && !option._multiSelectHidden && !option.disabled && !option.disabledGroup\n );\n }\n\n adjustActiveOptionAndScroll(numToAdd: number) {\n this.activeIndex += numToAdd;\n this.setActiveOption();\n this.setFocusedOption();\n this.scrollToActiveOption();\n }\n\n async checkOptions() {\n const { type } = this;\n const options = await this.getOptions();\n if (!type) return;\n const optionRole = type === 'menu' ? 'menuitem' : 'option';\n options.forEach(option => {\n option.role = optionRole;\n });\n }\n\n clickHandler = (event: Event) => {\n const target = event.target as HTMLQ2OptionElement;\n const option = target.closest('q2-option');\n this.selectOption(option);\n if (this.multiple) return;\n this.popoverState.emit({ open: false, action: 'select' });\n };\n\n /* tslint:disable:cyclomatic-complexity */\n externalKeydownHandler = (event: KeyboardEvent) => {\n event.stopPropagation();\n const { activeIndex, customSearch, allOptions } = this;\n const { key } = event;\n\n let nextIndex;\n switch (key) {\n case ' ':\n if (this.searchString) {\n if (customSearch) break;\n\n this.searchOptions(key, true);\n break;\n } else if (this.type === 'menu') {\n this.activeIndex = 0;\n this.openDropdownWithActiveElement(0);\n } else {\n this.setDefaultActiveElement();\n nextPaint(() => this.popoverState.emit({ open: true, action: 'open' }));\n }\n break;\n\n case 'Enter':\n if (this.type === 'menu') {\n this.activeIndex = 0;\n this.openDropdownWithActiveElement(0);\n } else {\n this.setDefaultActiveElement();\n nextPaint(() => this.popoverState.emit({ open: true, action: 'open' }));\n }\n break;\n\n case 'ArrowUp':\n event.preventDefault();\n this.activeIndex = 0;\n nextIndex = !!this.selectedOptions.length ? this.getDefaultActiveIndex() : this.getNextVisibleIndex(-1);\n if (nextIndex === -1) break;\n this.openDropdownWithActiveElement(nextIndex);\n break;\n\n case 'ArrowDown':\n event.preventDefault();\n this.activeIndex = 0;\n nextIndex = !!this.selectedOptions.length ? this.getDefaultActiveIndex() : this.getNextVisibleIndex(0);\n if (nextIndex === -1) break;\n this.openDropdownWithActiveElement(nextIndex);\n break;\n\n case 'Home':\n event.preventDefault();\n this.openDropdownWithActiveElement(0);\n break;\n\n case 'End':\n event.preventDefault();\n this.openDropdownWithActiveElement(allOptions.length - 1);\n break;\n\n case 'PageUp':\n event.preventDefault();\n this.openDropdownWithActiveElement(Math.max((activeIndex || 0) - 10, 0));\n break;\n\n case 'PageDown':\n event.preventDefault();\n this.openDropdownWithActiveElement(Math.min((activeIndex || 0) + 10, allOptions.length - 1));\n break;\n\n case 'Tab':\n this.popoverState.emit({ open: false, action: 'close' });\n break;\n\n case 'Esc':\n case 'Escape':\n if (this.noSelect) this.setActiveElement(null);\n this.popoverState.emit({ open: false, action: 'close' });\n break;\n\n default:\n if (customSearch) break;\n if (!key.match(/^[\\w]$/)) break;\n\n this.searchOptions(key, true);\n break;\n }\n };\n\n /* tslint:enable:cyclomatic-complexity */\n\n focusoutHandler = (event: FocusEvent) => {\n const { relatedTarget } = event as unknown as { relatedTarget: HTMLQ2OptionElement };\n const isInQ2OptionList = this.allOptions.includes(relatedTarget);\n const isInLightDom = !isInQ2OptionList && this.hostElement.contains(relatedTarget);\n if (isInQ2OptionList || isInLightDom) {\n event.stopPropagation();\n }\n };\n\n focusSelectedSibling(option: HTMLQ2OptionElement) {\n const { allVisibleOptions, allOptions } = this;\n const hasNoSiblings = allVisibleOptions.length < 2;\n if (hasNoSiblings) {\n this.showSelected = false;\n return;\n }\n\n const selectedOptionVisibleIndex = allVisibleOptions.indexOf(option);\n const nextVisibleSiblingIndex = selectedOptionVisibleIndex\n ? selectedOptionVisibleIndex - 1\n : selectedOptionVisibleIndex + 1;\n const nextVisibleSibling = allVisibleOptions[nextVisibleSiblingIndex];\n const nextSiblingIndex = allOptions.indexOf(nextVisibleSibling);\n\n this.activeIndex = nextSiblingIndex;\n this.setFocusedOption();\n this.scheduledAfterRender.push(() => {\n option._multiSelectHidden = !option.selected;\n });\n }\n\n getDefaultActiveIndex() {\n const { allOptions } = this;\n const firstSelected = allOptions.findIndex(element => element.selected);\n if (firstSelected > -1) return firstSelected;\n\n const firstEnabled = allOptions.findIndex(element => !element.hidden);\n if (firstEnabled > -1) return firstEnabled;\n\n return 0;\n }\n\n getNextVisibleIndex(direction) {\n const { allVisibleOptions, allOptions, activeIndex } = this;\n const activeOption = allOptions[activeIndex];\n const visibleActiveOptionIndex = allVisibleOptions.indexOf(activeOption);\n let nextVisibleOptionIndex = visibleActiveOptionIndex + direction;\n\n if (nextVisibleOptionIndex < 0) {\n nextVisibleOptionIndex = allVisibleOptions.length - 1;\n } else if (nextVisibleOptionIndex > allVisibleOptions.length - 1) {\n nextVisibleOptionIndex = 0;\n }\n\n const nextVisibleOption = allVisibleOptions[nextVisibleOptionIndex];\n return allOptions.indexOf(nextVisibleOption);\n }\n\n getRootSlot(element: Element): Element[] {\n const slot = element.querySelector('slot');\n const assignedElements = slot?.assignedElements() ?? Array.from(element.children);\n const hasAnotherSlot = !!assignedElements.length && assignedElements[0].tagName === 'SLOT';\n if (hasAnotherSlot) {\n return this.getRootSlot(assignedElements[0]);\n } else {\n return assignedElements;\n }\n }\n\n internalKeydownHandler = (event: KeyboardEvent) => {\n event.stopPropagation();\n const { activeIndex, customSearch, allOptions, multiple } = this;\n const { key, shiftKey } = event;\n\n let newOption;\n switch (key) {\n case ' ':\n if (this.searchString && !this.multiple) {\n if (customSearch) break;\n\n this.searchOptions(key, false);\n break;\n }\n\n event.preventDefault();\n newOption = allOptions.find(element => element.active);\n if (!newOption || newOption.disabled) break;\n this.selectOption(newOption);\n if (multiple) break;\n this.popoverState.emit({ open: false, action: 'select' });\n break;\n\n case 'Enter':\n event.preventDefault();\n newOption = allOptions.find(element => element.active);\n if (!newOption || newOption.disabled) break;\n this.selectOption(newOption);\n if (multiple) break;\n this.popoverState.emit({ open: false, action: 'select' });\n break;\n\n case 'ArrowUp':\n event.preventDefault();\n const isFirstOptionActive = activeIndex === 0;\n if (isFirstOptionActive) break;\n if (activeIndex === undefined) {\n this.setDefaultActiveElement();\n break;\n } else {\n const nextIndex = this.getNextVisibleIndex(-1);\n if (nextIndex === -1) break;\n this.adjustActiveOptionAndScroll(nextIndex - activeIndex);\n break;\n }\n\n case 'ArrowDown':\n event.preventDefault();\n const isLastOptionActive = activeIndex === allOptions.length - 1;\n if (isLastOptionActive) break;\n if (activeIndex === undefined) {\n this.setDefaultActiveElement();\n break;\n } else {\n const nextIndex = this.getNextVisibleIndex(1);\n if (nextIndex === -1) break;\n this.adjustActiveOptionAndScroll(nextIndex - activeIndex);\n break;\n }\n\n case 'Home':\n event.preventDefault();\n this.openDropdownWithActiveElement(0);\n break;\n\n case 'End':\n event.preventDefault();\n this.openDropdownWithActiveElement(allOptions.length - 1);\n break;\n\n case 'PageUp':\n event.preventDefault();\n this.openDropdownWithActiveElement(Math.max(activeIndex - 10, 0));\n break;\n\n case 'PageDown':\n event.preventDefault();\n this.openDropdownWithActiveElement(Math.min(activeIndex + 10, allOptions.length - 1));\n break;\n\n case 'Tab':\n if (shiftKey) break;\n if (this.multiple && this.type === 'listbox') break;\n newOption = allOptions.find(element => element.active);\n if (!newOption || newOption.disabled) return;\n this.selectOption(newOption);\n break;\n\n case 'Esc':\n case 'Escape':\n if (this.noSelect) this.setActiveElement(null);\n this.popoverState.emit({ open: false, action: 'close' });\n break;\n\n default:\n if (customSearch) break;\n if (!key.match(/^[\\w]$/)) break;\n\n this.searchOptions(key, false);\n break;\n }\n };\n\n async openDropdownWithActiveElement(activeIndex: number) {\n if (this.disabled) return;\n this.popoverState.emit({ open: true, action: 'open' });\n await waitForNextPaint();\n this.activeIndex = activeIndex;\n this.setActiveOption();\n this.setFocusedOption();\n this.scrollToActiveOption();\n }\n\n resetTimer() {\n if (this.searchStringTimer) {\n clearTimeout(this.searchStringTimer);\n }\n\n this.searchStringTimer = window.setTimeout(() => {\n this.searchString = null;\n }, 2000);\n }\n\n scrollToActiveOption() {\n const activeOption = this.allOptions[this.activeIndex];\n activeOption?.scrollIntoView({ block: 'nearest' });\n }\n\n searchAndFocus = (keyValue: string, shouldSelect: boolean) => {\n // pseudo search in non-searchable select\n const reorder = () => {\n this.pivotIndex = this.pivotIndex === undefined ? 0 : (this.activeIndex || 0) + 1;\n const list = this.allOptions.map((element, index) => ({ element, index }));\n return [...list.slice(this.pivotIndex), ...list.slice(0, this.pivotIndex)];\n };\n\n const buildQueue = () => {\n const now = new Date();\n if (now.getTime() - this.keyStore.lastPressedAt.getTime() > 1000) {\n // empty stored keys if delay > 1s\n this.keyStore.queue.length = 0;\n }\n if (this.keyStore.queue.length !== 1 || this.keyStore.queue[0] !== keyValue) {\n this.keyStore.queue.push(keyValue);\n }\n this.keyStore.lastPressedAt = now;\n };\n\n const searchIndex = (list: any[]) => {\n const keyStr = this.keyStore.queue.join('');\n return list.find(v => {\n return (\n !v.element.disabled &&\n v.element.display &&\n (v.element.display.match(new RegExp(`^${keyStr}`, 'i')) ||\n v.element.display.replace(/\\s/g, '').match(new RegExp(`^${keyStr}`, 'i')))\n );\n });\n };\n\n const setFocus = ({ index }) => {\n if (this.multiple) {\n // multiple: should open to make sure that which options are selected\n this.openDropdownWithActiveElement(index);\n } else {\n this.activeIndex = index;\n if (shouldSelect) {\n this.selectOption(this.allOptions[index]);\n this.popoverState.emit({ open: false, action: 'select' });\n } else this.setActiveElement(index);\n }\n };\n\n buildQueue();\n const matched = searchIndex(reorder());\n if (matched) {\n setFocus(matched);\n }\n };\n\n searchOptions(key: string, shouldSelect?: boolean) {\n this.searchString = key;\n this.searchAndFocus(key, shouldSelect);\n }\n\n selectOption(selectedOption: HTMLQ2OptionElement) {\n const { multiple, noSelect, showSelected } = this;\n if (!selectedOption || selectedOption.disabled || selectedOption.disabledGroup) return;\n const selectedValue = selectedOption.value;\n const valueObject = {\n value: selectedValue,\n display: selectedOption.display || selectedOption.innerText.trim(),\n };\n\n let values: IOptionValue[] = [];\n if (multiple) {\n const { selectedOptions } = this;\n const isAlreadySelected = selectedOptions.find(option => option.value === selectedValue);\n\n if (isAlreadySelected) {\n values = selectedOptions.filter(({ value }) => value !== selectedValue);\n } else {\n values = [...selectedOptions, valueObject];\n }\n\n if (showSelected) this.focusSelectedSibling(selectedOption);\n } else {\n values = [valueObject];\n }\n\n if (noSelect) this.setActiveElement(null);\n else this.selectedOptions = values;\n\n this.change.emit({ value: selectedValue, values });\n }\n\n setActiveOption() {\n const activeIndex = this.activeIndex;\n\n this.allOptions.forEach((element, elementIndex) => {\n element.active = activeIndex === elementIndex;\n });\n }\n\n setFocusedOption() {\n const option = this.allOptions[this.activeIndex];\n if (!option) return;\n\n const isOptionVisible = isVisible(option);\n if (isOptionVisible) option.focus();\n else nextPaint(() => option.focus());\n }\n\n updateMultipleOptionAttrs() {\n const { allOptions, selectedOptions } = this;\n const selectedValues = selectedOptions.map(({ value }) => value);\n allOptions.forEach(element => {\n element.selected = selectedValues.includes(element.value);\n });\n }\n\n updateSingleOptionAttrs() {\n const { allOptions, selectedOptions } = this;\n const selectedValue = selectedOptions[0]?.value || undefined;\n allOptions.forEach(element => {\n element.selected = element.value === selectedValue;\n });\n }\n\n // #endregion\n // #region Render Methods\n\n render() {\n return (\n <Host>\n <div\n class=\"content\"\n ref={el => (this.contentElement = el)}\n onFocusout={this.focusoutHandler}\n >\n <div\n class=\"options\"\n aria-label={loc('tecton.element.optionList.label', [this.label])}\n aria-multiselectable={`${!!this.multiple}`}\n role={this.type || 'listbox'}\n onKeyDown={this.internalKeydownHandler}\n onClick={this.clickHandler}\n >\n <slot />\n </div>\n </div>\n </Host>\n );\n }\n\n // #endregion\n}\n"],"version":3}
1
+ {"file":"q2-option-list2.js","mappings":";;;AAAA,MAAM,eAAe,GAAG,o5BAAo5B,CAAC;AAC76B,2BAAe,eAAe;;MCqBjB,YAAY;;;;;;;;QAKrB,aAAQ,GAGJ;YACA,KAAK,EAAE,EAAE;YACT,aAAa,EAAE,IAAI,IAAI,EAAE;SAC5B,CAAC;QAEF,yBAAoB,GAAmB,EAAE,CAAC;QAwO1C,iBAAY,GAAG,CAAC,KAAY;YACxB,MAAM,MAAM,GAAG,KAAK,CAAC,MAA6B,CAAC;YACnD,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAC3C,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAC1B,IAAI,IAAI,CAAC,QAAQ;gBAAE,OAAO;YAC1B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;SAC7D,CAAC;;QAGF,2BAAsB,GAAG,CAAC,KAAoB;YAC1C,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;YACvD,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;YAEtB,IAAI,SAAS,CAAC;YACd,QAAQ,GAAG;gBACP,KAAK,GAAG;oBACJ,IAAI,IAAI,CAAC,YAAY,EAAE;wBACnB,IAAI,YAAY;4BAAE,MAAM;wBAExB,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;wBAC9B,MAAM;qBACT;yBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;wBAC7B,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;wBACrB,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC;qBACzC;yBAAM;wBACH,IAAI,CAAC,uBAAuB,EAAE,CAAC;wBAC/B,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;qBAC3E;oBACD,MAAM;gBAEV,KAAK,OAAO;oBACR,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;wBACtB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;wBACrB,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC;qBACzC;yBAAM;wBACH,IAAI,CAAC,uBAAuB,EAAE,CAAC;wBAC/B,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;qBAC3E;oBACD,MAAM;gBAEV,KAAK,SAAS;oBACV,KAAK,CAAC,cAAc,EAAE,CAAC;oBACvB,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,qBAAqB,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;oBACxG,IAAI,SAAS,KAAK,CAAC,CAAC;wBAAE,MAAM;oBAC5B,IAAI,CAAC,6BAA6B,CAAC,SAAS,CAAC,CAAC;oBAC9C,MAAM;gBAEV,KAAK,WAAW;oBACZ,KAAK,CAAC,cAAc,EAAE,CAAC;oBACvB,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,qBAAqB,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;oBACvG,IAAI,SAAS,KAAK,CAAC,CAAC;wBAAE,MAAM;oBAC5B,IAAI,CAAC,6BAA6B,CAAC,SAAS,CAAC,CAAC;oBAC9C,MAAM;gBAEV,KAAK,MAAM;oBACP,KAAK,CAAC,cAAc,EAAE,CAAC;oBACvB,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC;oBACtC,MAAM;gBAEV,KAAK,KAAK;oBACN,KAAK,CAAC,cAAc,EAAE,CAAC;oBACvB,IAAI,CAAC,6BAA6B,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;oBAC1D,MAAM;gBAEV,KAAK,QAAQ;oBACT,KAAK,CAAC,cAAc,EAAE,CAAC;oBACvB,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;oBACzE,MAAM;gBAEV,KAAK,UAAU;oBACX,KAAK,CAAC,cAAc,EAAE,CAAC;oBACvB,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,IAAI,CAAC,IAAI,EAAE,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;oBAC7F,MAAM;gBAEV,KAAK,KAAK;oBACN,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;oBACzD,MAAM;gBAEV,KAAK,KAAK,CAAC;gBACX,KAAK,QAAQ;oBACT,IAAI,IAAI,CAAC,QAAQ;wBAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;oBAC/C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;oBACzD,MAAM;gBAEV;oBACI,IAAI,YAAY;wBAAE,MAAM;oBACxB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC;wBAAE,MAAM;oBAEhC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;oBAC9B,MAAM;aACb;SACJ,CAAC;;QAIF,oBAAe,GAAG,CAAC,KAAiB;YAChC,MAAM,EAAE,aAAa,EAAE,GAAG,KAA0D,CAAC;YACrF,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YACjE,MAAM,YAAY,GAAG,CAAC,gBAAgB,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YACnF,IAAI,gBAAgB,IAAI,YAAY,EAAE;gBAClC,KAAK,CAAC,eAAe,EAAE,CAAC;aAC3B;SACJ,CAAC;QA8DF,2BAAsB,GAAG,CAAC,KAAoB;YAC1C,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;YACpF,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;YAEhC,IAAI,SAA8B,CAAC;YACnC,QAAQ,GAAG;gBACP,KAAK,GAAG;oBACJ,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;wBACrC,IAAI,YAAY;4BAAE,MAAM;wBAExB,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;wBAC/B,MAAM;qBACT;oBAED,KAAK,CAAC,cAAc,EAAE,CAAC;oBACvB,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;oBACvD,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,QAAQ;wBAAE,MAAM;oBAC5C,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;oBAC7B,IAAI,QAAQ;wBAAE,MAAM;oBACpB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;oBAC1D,MAAM;gBAEV,KAAK,OAAO;oBACR,KAAK,CAAC,cAAc,EAAE,CAAC;oBACvB,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;oBACvD,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,QAAQ;wBAAE,MAAM;oBAC5C,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;oBAC7B,IAAI,QAAQ;wBAAE,MAAM;oBACpB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;oBAC1D,MAAM;gBAEV,KAAK,SAAS;oBACV,KAAK,CAAC,cAAc,EAAE,CAAC;oBACvB,MAAM,0BAA0B,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;oBAC/D,IAAI,0BAA0B;wBAAE,MAAM;oBACtC,IAAI,WAAW,KAAK,SAAS,EAAE;wBAC3B,IAAI,CAAC,uBAAuB,EAAE,CAAC;wBAC/B,MAAM;qBACT;yBAAM;wBACH,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC/C,IAAI,SAAS,KAAK,CAAC,CAAC;4BAAE,MAAM;wBAC5B,IAAI,CAAC,2BAA2B,CAAC,SAAS,GAAG,WAAW,CAAC,CAAC;wBAC1D,MAAM;qBACT;gBAEL,KAAK,WAAW;oBACZ,KAAK,CAAC,cAAc,EAAE,CAAC;oBACvB,MAAM,yBAAyB,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;oBACzF,IAAI,yBAAyB;wBAAE,MAAM;oBACrC,IAAI,WAAW,KAAK,SAAS,EAAE;wBAC3B,IAAI,CAAC,uBAAuB,EAAE,CAAC;wBAC/B,MAAM;qBACT;yBAAM;wBACH,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;wBAC9C,IAAI,SAAS,KAAK,CAAC,CAAC;4BAAE,MAAM;wBAC5B,IAAI,CAAC,2BAA2B,CAAC,SAAS,GAAG,WAAW,CAAC,CAAC;wBAC1D,MAAM;qBACT;gBAEL,KAAK,MAAM;oBACP,KAAK,CAAC,cAAc,EAAE,CAAC;oBACvB,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC;oBACtC,MAAM;gBAEV,KAAK,KAAK;oBACN,KAAK,CAAC,cAAc,EAAE,CAAC;oBACvB,IAAI,CAAC,6BAA6B,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;oBAC1D,MAAM;gBAEV,KAAK,QAAQ;oBACT,KAAK,CAAC,cAAc,EAAE,CAAC;oBACvB,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;oBAClE,MAAM;gBAEV,KAAK,UAAU;oBACX,KAAK,CAAC,cAAc,EAAE,CAAC;oBACvB,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,EAAE,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;oBACtF,MAAM;gBAEV,KAAK,KAAK;oBACN,IAAI,QAAQ;wBAAE,MAAM;oBACpB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;wBAAE,MAAM;oBACpD,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;wBACtB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;wBACzD,MAAM;qBACT;oBAED,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;oBACvD,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,QAAQ;wBAAE,OAAO;oBAC7C,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;oBAC7B,MAAM;gBAEV,KAAK,KAAK,CAAC;gBACX,KAAK,QAAQ;oBACT,IAAI,IAAI,CAAC,QAAQ;wBAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;oBAC/C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;oBACzD,MAAM;gBAEV;oBACI,IAAI,YAAY;wBAAE,MAAM;oBACxB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC;wBAAE,MAAM;oBAEhC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;oBAC/B,MAAM;aACb;SACJ,CAAC;QA2BF,mBAAc,GAAG,CAAC,QAAgB,EAAE,YAAqB;;YAErD,MAAM,OAAO,GAAG;gBACZ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,KAAK,SAAS,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,CAAC;gBAClF,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;gBAC3E,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;aAC9E,CAAC;YAEF,MAAM,UAAU,GAAG;gBACf,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,IAAI,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,IAAI,EAAE;;oBAE9D,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;iBAClC;gBACD,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;oBACzE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iBACtC;gBACD,IAAI,CAAC,QAAQ,CAAC,aAAa,GAAG,GAAG,CAAC;aACrC,CAAC;YAEF,MAAM,WAAW,GAAG,CAAC,IAAW;gBAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC5C,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;oBACd,QACI,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ;wBACnB,CAAC,CAAC,OAAO,CAAC,OAAO;yBAChB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC;4BACnD,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,EAChF;iBACL,CAAC,CAAC;aACN,CAAC;YAEF,MAAM,QAAQ,GAAG,CAAC,EAAE,KAAK,EAAE;gBACvB,IAAI,IAAI,CAAC,QAAQ,EAAE;;oBAEf,IAAI,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC;iBAC7C;qBAAM;oBACH,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;oBACzB,IAAI,YAAY,EAAE;wBACd,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;wBAC1C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;qBAC7D;;wBAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;iBACvC;aACJ,CAAC;YAEF,UAAU,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YACvC,IAAI,OAAO,EAAE;gBACT,QAAQ,CAAC,OAAO,CAAC,CAAC;aACrB;SACJ,CAAC;;;;;qBApiBc,GAAG,CAAC,iCAAiC,CAAC;;;+BAgBpB,EAAE;;oBAQT,SAAS;;;;IA+BpC,iBAAiB;QACb,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC;KAC7E;IAED,gBAAgB;QACZ,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAChC,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;KACrB;IAED,kBAAkB;QACd,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QAC9C,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;KAClC;;;IAMD,WAAW,CAAC,KAAiB;QACzB,KAAK,CAAC,eAAe,EAAE,CAAC;KAC3B;IAGD,aAAa,CAAC,KAAiB;QAC3B,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC;YAAE,OAAO;QACzD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACvD,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;QAC7B,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,GAAG,CAAC,CAAC,EAAE;YACrD,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,IAAI,CAAC,gBAAgB,EAAE,CAAC;SAC3B;aAAM;YACH,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAClC;KACJ;;;IAMD,MAAM,WAAW;QACb,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;IAGD,MAAM,UAAU;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;IAGD,MAAM,qBAAqB,CAAC,KAAoB;QAC5C,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;KACtC;IAGD,MAAM,gBAAgB,CAAC,KAAa;QAChC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,gBAAgB,EAAE,CAAC;KAC3B;IAGD,MAAM,uBAAuB;QACzB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAChD,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,gBAAgB,EAAE,CAAC;KAC3B;;;IAMD,sBAAsB;QAClB,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,yBAAyB,EAAE,CAAC;SACpC;aAAM;YACH,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAClC;KACJ;IAGD,mBAAmB,CAAC,YAAqB;QACrC,IAAI,YAAY,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE;YACnD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,OAAO;SACV;QACD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC,kBAAkB,GAAG,YAAY,GAAG,CAAC,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC;KAC5G;;;IAKD,IAAI,WAAW;QACX,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACpD,MAAM,YAAY,GAAG,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;QAClD,OAAO,QAAQ,CAAC,MAAM,CAAC,OAAO,IAAI,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAGrE,CAAC;KACP;IAED,IAAI,UAAU;QACV,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC;QAElC,MAAM,cAAc,GAAG,CACnB,QAAmE;YAEnE,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO;gBAChC,IAAI,OAAO,CAAC,OAAO,KAAK,aAAa,EAAE;oBACnC,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;iBACpE;qBAAM,IAAI,OAAO,CAAC,OAAO,KAAK,WAAW,EAAE;oBACxC,OAAO,CAAC,GAAG,GAAG,EAAE,OAAO,CAAC,CAAC;iBAC5B;qBAAM;oBACH,OAAO,GAAG,CAAC;iBACd;aACJ,EAAE,EAAE,CAAC,CAAC;SACV,CAAC;QAEF,OAAO,cAAc,CAAC,QAAQ,CAAC,CAAC;KACnC;IAED,IAAI,iBAAiB;QACjB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CACzB,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,kBAAkB,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,aAAa,CACtG,CAAC;KACL;IAED,2BAA2B,CAAC,QAAgB;QACxC,IAAI,CAAC,WAAW,IAAI,QAAQ,CAAC;QAC7B,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC/B;IAED,MAAM,YAAY;QACd,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;QACtB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxC,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,MAAM,UAAU,GAAG,IAAI,KAAK,MAAM,GAAG,UAAU,GAAG,QAAQ,CAAC;QAC3D,OAAO,CAAC,OAAO,CAAC,MAAM;YAClB,MAAM,CAAC,IAAI,GAAG,UAAU,CAAC;SAC5B,CAAC,CAAC;KACN;IA2GD,oBAAoB,CAAC,MAA2B;QAC5C,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QAC/C,MAAM,aAAa,GAAG,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC;QACnD,IAAI,aAAa,EAAE;YACf,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,OAAO;SACV;QAED,MAAM,0BAA0B,GAAG,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACrE,MAAM,uBAAuB,GAAG,0BAA0B;cACpD,0BAA0B,GAAG,CAAC;cAC9B,0BAA0B,GAAG,CAAC,CAAC;QACrC,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,uBAAuB,CAAC,CAAC;QACtE,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAEhE,IAAI,CAAC,WAAW,GAAG,gBAAgB,CAAC;QACpC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;YAC3B,MAAM,CAAC,kBAAkB,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;SAChD,CAAC,CAAC;KACN;IAED,qBAAqB;QACjB,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QAC5B,MAAM,aAAa,GAAG,UAAU,CAAC,SAAS,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxE,IAAI,aAAa,GAAG,CAAC,CAAC;YAAE,OAAO,aAAa,CAAC;QAE7C,MAAM,YAAY,GAAG,UAAU,CAAC,SAAS,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtE,IAAI,YAAY,GAAG,CAAC,CAAC;YAAE,OAAO,YAAY,CAAC;QAE3C,OAAO,CAAC,CAAC;KACZ;IAED,mBAAmB,CAAC,SAAS;QACzB,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;QAC5D,MAAM,YAAY,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;QAC7C,MAAM,wBAAwB,GAAG,iBAAiB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACzE,IAAI,sBAAsB,GAAG,wBAAwB,GAAG,SAAS,CAAC;QAElE,IAAI,sBAAsB,GAAG,CAAC,EAAE;YAC5B,sBAAsB,GAAG,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC;SACzD;aAAM,IAAI,sBAAsB,GAAG,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;YAC9D,sBAAsB,GAAG,CAAC,CAAC;SAC9B;QAED,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,sBAAsB,CAAC,CAAC;QACpE,OAAO,UAAU,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;KAChD;IAED,WAAW,CAAC,OAAgB;;QACxB,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,gBAAgB,GAAG,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,gBAAgB,EAAE,mCAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAClF,MAAM,cAAc,GAAG,CAAC,CAAC,gBAAgB,CAAC,MAAM,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC;QAC3F,IAAI,cAAc,EAAE;YAChB,OAAO,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;SAChD;aAAM;YACH,OAAO,gBAAgB,CAAC;SAC3B;KACJ;IA8GD,MAAM,6BAA6B,CAAC,WAAmB;QACnD,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC1B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACvD,MAAM,gBAAgB,EAAE,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC/B;IAED,UAAU;QACN,IAAI,IAAI,CAAC,iBAAiB,EAAE;YACxB,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;SACxC;QAED,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,UAAU,CAAC;YACvC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;SAC5B,EAAE,IAAI,CAAC,CAAC;KACZ;IAED,oBAAoB;QAChB,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACvD,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,cAAc,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;KACrD;IAsDD,aAAa,CAAC,GAAW,EAAE,YAAsB;QAC7C,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;QACxB,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;KAC1C;IAED,YAAY,CAAC,cAAmC;QAC5C,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;QAClD,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC,QAAQ,IAAI,cAAc,CAAC,aAAa;YAAE,OAAO;QACvF,MAAM,aAAa,GAAG,cAAc,CAAC,KAAK,CAAC;QAC3C,MAAM,WAAW,GAAG;YAChB,KAAK,EAAE,aAAa;YACpB,OAAO,EAAE,cAAc,CAAC,OAAO,IAAI,cAAc,CAAC,SAAS,CAAC,IAAI,EAAE;SACrE,CAAC;QAEF,IAAI,MAAM,GAAmB,EAAE,CAAC;QAChC,IAAI,QAAQ,EAAE;YACV,MAAM,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;YACjC,MAAM,iBAAiB,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,KAAK,aAAa,CAAC,CAAC;YAEzF,IAAI,iBAAiB,EAAE;gBACnB,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,KAAK,KAAK,aAAa,CAAC,CAAC;aAC3E;iBAAM;gBACH,MAAM,GAAG,CAAC,GAAG,eAAe,EAAE,WAAW,CAAC,CAAC;aAC9C;YAED,IAAI,YAAY;gBAAE,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;SAC/D;aAAM;YACH,MAAM,GAAG,CAAC,WAAW,CAAC,CAAC;SAC1B;QAED,IAAI,QAAQ;YAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;;YACrC,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC;QAEnC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,CAAC;KACtD;IAED,eAAe;QACX,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QAErC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,YAAY;YAC1C,OAAO,CAAC,MAAM,GAAG,WAAW,KAAK,YAAY,CAAC;SACjD,CAAC,CAAC;KACN;IAED,gBAAgB;QACZ,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM;YAAE,OAAO;QAEpB,MAAM,eAAe,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,eAAe;YAAE,MAAM,CAAC,KAAK,EAAE,CAAC;;YAC/B,SAAS,CAAC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;KACxC;IAED,yBAAyB;QACrB,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;QAC7C,MAAM,cAAc,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,KAAK,CAAC,CAAC;QACjE,UAAU,CAAC,OAAO,CAAC,OAAO;YACtB,OAAO,CAAC,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;SAC7D,CAAC,CAAC;KACN;IAED,uBAAuB;;QACnB,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;QAC7C,MAAM,aAAa,GAAG,CAAA,MAAA,eAAe,CAAC,CAAC,CAAC,0CAAE,KAAK,KAAI,SAAS,CAAC;QAC7D,UAAU,CAAC,OAAO,CAAC,OAAO;YACtB,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,KAAK,KAAK,aAAa,CAAC;SACtD,CAAC,CAAC;KACN;;;IAKD,MAAM;QACF,QACI,EAAC,IAAI,uDACD,4DACI,KAAK,EAAC,SAAS,EACf,GAAG,EAAE,EAAE,KAAK,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC,EACrC,UAAU,EAAE,IAAI,CAAC,eAAe,IAEhC,4DACI,KAAK,EAAC,SAAS,gBACH,GAAG,CAAC,iCAAiC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,0BAC1C,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,EAC1C,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,SAAS,EAC5B,SAAS,EAAE,IAAI,CAAC,sBAAsB,EACtC,OAAO,EAAE,IAAI,CAAC,YAAY,IAE1B,8DAAQ,CACN,CACJ,CACH,EACT;KACL;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":["src/components/q2-option-list/q2-option-list.scss?tag=q2-option-list&encapsulation=shadow","src/components/q2-option-list/q2-option-list.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions';\n\n:host {\n position: relative;\n width: 100%;\n display: block;\n line-height: var-list(var-prefixer(option-list-line-height),--app-line-height, 1.428571429em);\n}\n\n.content {\n text-align: start;\n\n :host([is-sizeable]) & {\n display: block;\n height: auto;\n }\n}\n","import {\n Component,\n Prop,\n h,\n Event,\n State,\n Element,\n ComponentInterface,\n Host,\n EventEmitter,\n Method,\n Watch,\n Listen,\n} from '@stencil/core';\nimport { isEventFromElement, isVisible, loc, nextPaint, overrideFocus, waitForNextPaint } from 'src/utils';\n\nexport interface IOptionValue {\n value: string;\n display?: string;\n}\n\n@Component({ tag: 'q2-option-list', shadow: true, styleUrl: 'q2-option-list.scss' })\nexport class Q2OptionList implements ComponentInterface {\n // #region Own Properties\n\n activeIndex: number;\n contentElement: HTMLElement;\n keyStore: {\n queue: string[];\n lastPressedAt: Date;\n } = {\n queue: [],\n lastPressedAt: new Date(),\n };\n pivotIndex: number;\n scheduledAfterRender: (() => void)[] = [];\n searchString: string;\n searchStringTimer: number;\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region State Properties\n\n @State()\n hasOptions: boolean;\n\n // #endregion\n // #region Public Property API\n\n @Prop({ reflect: true })\n align: 'left' | 'right';\n\n /** Indicates a custom search is being implemented for the option list. */\n @Prop({ reflect: true })\n customSearch: boolean;\n\n /** Disables the option list. */\n @Prop({ reflect: true })\n disabled: boolean;\n\n /** Determines the label that is applied to the option list for accessibility purposes. */\n @Prop()\n label: string = loc('tecton.element.optionList.label');\n\n /**\n * Enables the multi-select ability for the option list.\n * @info\n * Only applicable when options are provided.\n */\n @Prop({ reflect: true })\n multiple: boolean;\n\n /** Disables the logic that handles selecting and focusing an option in the option list. */\n @Prop({ reflect: true })\n noSelect: boolean;\n\n /** A list of the selected options on the element. */\n @Prop({ mutable: true })\n selectedOptions: IOptionValue[] = [];\n\n /** Applies focus to the selected option. */\n @Prop({ reflect: true, mutable: true })\n showSelected: boolean;\n\n /** Translates to the role of the option list */\n @Prop()\n type: 'menu' | 'listbox' = 'listbox';\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when an option is selected or deselected.\n *\n * When the multi-select is enabled, the `value` property will be `undefined` and the `selectedOptions` property\n * will contain the selected option values.\n */\n @Event()\n change: EventEmitter<{ value: string; values: IOptionValue[] }>;\n\n /**\n * Emitted to indicate the intended state of the popover.\n * @private\n */\n @Event()\n popoverState: EventEmitter<{ open: boolean; action: 'close' | 'select' | 'open' }>;\n\n /**\n * Emitted when the component has finished rendering.\n * @private\n */\n @Event({ bubbles: false })\n ready: EventEmitter<undefined>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n componentWillLoad() {\n this.hasOptions = !!this.hostElement.querySelectorAll('q2-option').length;\n }\n\n componentDidLoad(): void {\n overrideFocus(this.hostElement);\n this.checkOptions();\n this.selectedOptionsUpdated();\n this.ready.emit();\n }\n\n componentDidRender() {\n this.scheduledAfterRender.forEach(fn => fn());\n this.scheduledAfterRender = [];\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('click')\n handleClick(event: MouseEvent) {\n event.stopPropagation();\n }\n\n @Listen('focus')\n delegateFocus(event: FocusEvent) {\n if (!isEventFromElement(event, this.hostElement)) return;\n this.popoverState.emit({ open: true, action: 'open' });\n const { activeIndex } = this;\n if (typeof activeIndex === 'number' && activeIndex > -1) {\n this.setActiveOption();\n this.setFocusedOption();\n } else {\n this.setDefaultActiveElement();\n }\n }\n\n // #endregion\n // #region Public Methods API\n\n @Method()\n async getContents(): Promise<(HTMLQ2OptgroupElement | HTMLQ2OptionElement)[]> {\n return this.allContents;\n }\n\n @Method()\n async getOptions(): Promise<HTMLQ2OptionElement[]> {\n return this.allOptions;\n }\n\n @Method()\n async handleExternalKeydown(event: KeyboardEvent) {\n this.externalKeydownHandler(event);\n }\n\n @Method()\n async setActiveElement(index: number) {\n this.activeIndex = index;\n this.setActiveOption();\n this.setFocusedOption();\n }\n\n @Method()\n async setDefaultActiveElement() {\n this.activeIndex = this.getDefaultActiveIndex();\n this.setActiveOption();\n this.setFocusedOption();\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('selectedOptions')\n selectedOptionsUpdated() {\n if (this.multiple) {\n this.updateMultipleOptionAttrs();\n } else {\n this.updateSingleOptionAttrs();\n }\n }\n\n @Watch('showSelected')\n showSelectedUpdated(showSelected: boolean) {\n if (showSelected && this.selectedOptions.length === 0) {\n this.showSelected = false;\n return;\n }\n this.allOptions.forEach(option => (option._multiSelectHidden = showSelected ? !option.selected : false));\n }\n\n // #endregion\n // #region Local Methods\n\n get allContents(): (HTMLQ2OptgroupElement | HTMLQ2OptionElement)[] {\n const rootSlot = this.getRootSlot(this.hostElement);\n const acceptedTags = ['Q2-OPTGROUP', 'Q2-OPTION'];\n return rootSlot.filter(element => acceptedTags.includes(element.tagName)) as (\n | HTMLQ2OptgroupElement\n | HTMLQ2OptionElement\n )[];\n }\n\n get allOptions(): HTMLQ2OptionElement[] {\n const contents = this.allContents;\n\n const extractOptions = (\n elements: (HTMLQ2OptgroupElement | HTMLQ2OptionElement | Element)[]\n ): HTMLQ2OptionElement[] => {\n return elements.reduce((acc, element) => {\n if (element.tagName === 'Q2-OPTGROUP') {\n return [...acc, ...extractOptions(Array.from(element.children))];\n } else if (element.tagName === 'Q2-OPTION') {\n return [...acc, element];\n } else {\n return acc;\n }\n }, []);\n };\n\n return extractOptions(contents);\n }\n\n get allVisibleOptions(): HTMLQ2OptionElement[] {\n return this.allOptions.filter(\n option => !option.hidden && !option._multiSelectHidden && !option.disabled && !option.disabledGroup\n );\n }\n\n adjustActiveOptionAndScroll(numToAdd: number) {\n this.activeIndex += numToAdd;\n this.setActiveOption();\n this.setFocusedOption();\n this.scrollToActiveOption();\n }\n\n async checkOptions() {\n const { type } = this;\n const options = await this.getOptions();\n if (!type) return;\n const optionRole = type === 'menu' ? 'menuitem' : 'option';\n options.forEach(option => {\n option.role = optionRole;\n });\n }\n\n clickHandler = (event: Event) => {\n const target = event.target as HTMLQ2OptionElement;\n const option = target.closest('q2-option');\n this.selectOption(option);\n if (this.multiple) return;\n this.popoverState.emit({ open: false, action: 'select' });\n };\n\n /* tslint:disable:cyclomatic-complexity */\n externalKeydownHandler = (event: KeyboardEvent) => {\n event.stopPropagation();\n const { activeIndex, customSearch, allOptions } = this;\n const { key } = event;\n\n let nextIndex;\n switch (key) {\n case ' ':\n if (this.searchString) {\n if (customSearch) break;\n\n this.searchOptions(key, true);\n break;\n } else if (this.type === 'menu') {\n this.activeIndex = 0;\n this.openDropdownWithActiveElement(0);\n } else {\n this.setDefaultActiveElement();\n nextPaint(() => this.popoverState.emit({ open: true, action: 'open' }));\n }\n break;\n\n case 'Enter':\n if (this.type === 'menu') {\n this.activeIndex = 0;\n this.openDropdownWithActiveElement(0);\n } else {\n this.setDefaultActiveElement();\n nextPaint(() => this.popoverState.emit({ open: true, action: 'open' }));\n }\n break;\n\n case 'ArrowUp':\n event.preventDefault();\n nextIndex = !!this.selectedOptions.length ? this.getDefaultActiveIndex() : this.getNextVisibleIndex(-1);\n if (nextIndex === -1) break;\n this.openDropdownWithActiveElement(nextIndex);\n break;\n\n case 'ArrowDown':\n event.preventDefault();\n nextIndex = !!this.selectedOptions.length ? this.getDefaultActiveIndex() : this.getNextVisibleIndex(1);\n if (nextIndex === -1) break;\n this.openDropdownWithActiveElement(nextIndex);\n break;\n\n case 'Home':\n event.preventDefault();\n this.openDropdownWithActiveElement(0);\n break;\n\n case 'End':\n event.preventDefault();\n this.openDropdownWithActiveElement(allOptions.length - 1);\n break;\n\n case 'PageUp':\n event.preventDefault();\n this.openDropdownWithActiveElement(Math.max((activeIndex || 0) - 10, 0));\n break;\n\n case 'PageDown':\n event.preventDefault();\n this.openDropdownWithActiveElement(Math.min((activeIndex || 0) + 10, allOptions.length - 1));\n break;\n\n case 'Tab':\n this.popoverState.emit({ open: false, action: 'close' });\n break;\n\n case 'Esc':\n case 'Escape':\n if (this.noSelect) this.setActiveElement(null);\n this.popoverState.emit({ open: false, action: 'close' });\n break;\n\n default:\n if (customSearch) break;\n if (!key.match(/^[\\w]$/)) break;\n\n this.searchOptions(key, true);\n break;\n }\n };\n\n /* tslint:enable:cyclomatic-complexity */\n\n focusoutHandler = (event: FocusEvent) => {\n const { relatedTarget } = event as unknown as { relatedTarget: HTMLQ2OptionElement };\n const isInQ2OptionList = this.allOptions.includes(relatedTarget);\n const isInLightDom = !isInQ2OptionList && this.hostElement.contains(relatedTarget);\n if (isInQ2OptionList || isInLightDom) {\n event.stopPropagation();\n }\n };\n\n focusSelectedSibling(option: HTMLQ2OptionElement) {\n const { allVisibleOptions, allOptions } = this;\n const hasNoSiblings = allVisibleOptions.length < 2;\n if (hasNoSiblings) {\n this.showSelected = false;\n return;\n }\n\n const selectedOptionVisibleIndex = allVisibleOptions.indexOf(option);\n const nextVisibleSiblingIndex = selectedOptionVisibleIndex\n ? selectedOptionVisibleIndex - 1\n : selectedOptionVisibleIndex + 1;\n const nextVisibleSibling = allVisibleOptions[nextVisibleSiblingIndex];\n const nextSiblingIndex = allOptions.indexOf(nextVisibleSibling);\n\n this.activeIndex = nextSiblingIndex;\n this.setFocusedOption();\n this.scheduledAfterRender.push(() => {\n option._multiSelectHidden = !option.selected;\n });\n }\n\n getDefaultActiveIndex() {\n const { allOptions } = this;\n const firstSelected = allOptions.findIndex(element => element.selected);\n if (firstSelected > -1) return firstSelected;\n\n const firstEnabled = allOptions.findIndex(element => !element.hidden);\n if (firstEnabled > -1) return firstEnabled;\n\n return 0;\n }\n\n getNextVisibleIndex(direction) {\n const { allVisibleOptions, allOptions, activeIndex } = this;\n const activeOption = allOptions[activeIndex];\n const visibleActiveOptionIndex = allVisibleOptions.indexOf(activeOption);\n let nextVisibleOptionIndex = visibleActiveOptionIndex + direction;\n\n if (nextVisibleOptionIndex < 0) {\n nextVisibleOptionIndex = allVisibleOptions.length - 1;\n } else if (nextVisibleOptionIndex > allVisibleOptions.length - 1) {\n nextVisibleOptionIndex = 0;\n }\n\n const nextVisibleOption = allVisibleOptions[nextVisibleOptionIndex];\n return allOptions.indexOf(nextVisibleOption);\n }\n\n getRootSlot(element: Element): Element[] {\n const slot = element.querySelector('slot');\n const assignedElements = slot?.assignedElements() ?? Array.from(element.children);\n const hasAnotherSlot = !!assignedElements.length && assignedElements[0].tagName === 'SLOT';\n if (hasAnotherSlot) {\n return this.getRootSlot(assignedElements[0]);\n } else {\n return assignedElements;\n }\n }\n\n internalKeydownHandler = (event: KeyboardEvent) => {\n event.stopPropagation();\n const { activeIndex, customSearch, allOptions, allVisibleOptions, multiple } = this;\n const { key, shiftKey } = event;\n\n let newOption: HTMLQ2OptionElement;\n switch (key) {\n case ' ':\n if (this.searchString && !this.multiple) {\n if (customSearch) break;\n\n this.searchOptions(key, false);\n break;\n }\n\n event.preventDefault();\n newOption = allOptions.find(element => element.active);\n if (!newOption || newOption.disabled) break;\n this.selectOption(newOption);\n if (multiple) break;\n this.popoverState.emit({ open: false, action: 'select' });\n break;\n\n case 'Enter':\n event.preventDefault();\n newOption = allOptions.find(element => element.active);\n if (!newOption || newOption.disabled) break;\n this.selectOption(newOption);\n if (multiple) break;\n this.popoverState.emit({ open: false, action: 'select' });\n break;\n\n case 'ArrowUp':\n event.preventDefault();\n const isFirstVisibleOptionActive = allVisibleOptions[0].active;\n if (isFirstVisibleOptionActive) break;\n if (activeIndex === undefined) {\n this.setDefaultActiveElement();\n break;\n } else {\n const nextIndex = this.getNextVisibleIndex(-1);\n if (nextIndex === -1) break;\n this.adjustActiveOptionAndScroll(nextIndex - activeIndex);\n break;\n }\n\n case 'ArrowDown':\n event.preventDefault();\n const isLastVisibleOptionActive = allVisibleOptions[allVisibleOptions.length - 1].active;\n if (isLastVisibleOptionActive) break;\n if (activeIndex === undefined) {\n this.setDefaultActiveElement();\n break;\n } else {\n const nextIndex = this.getNextVisibleIndex(1);\n if (nextIndex === -1) break;\n this.adjustActiveOptionAndScroll(nextIndex - activeIndex);\n break;\n }\n\n case 'Home':\n event.preventDefault();\n this.openDropdownWithActiveElement(0);\n break;\n\n case 'End':\n event.preventDefault();\n this.openDropdownWithActiveElement(allOptions.length - 1);\n break;\n\n case 'PageUp':\n event.preventDefault();\n this.openDropdownWithActiveElement(Math.max(activeIndex - 10, 0));\n break;\n\n case 'PageDown':\n event.preventDefault();\n this.openDropdownWithActiveElement(Math.min(activeIndex + 10, allOptions.length - 1));\n break;\n\n case 'Tab':\n if (shiftKey) break;\n if (this.multiple && this.type === 'listbox') break;\n if (this.type === 'menu') {\n this.popoverState.emit({ open: false, action: 'close' });\n break;\n }\n\n newOption = allOptions.find(element => element.active);\n if (!newOption || newOption.disabled) return;\n this.selectOption(newOption);\n break;\n\n case 'Esc':\n case 'Escape':\n if (this.noSelect) this.setActiveElement(null);\n this.popoverState.emit({ open: false, action: 'close' });\n break;\n\n default:\n if (customSearch) break;\n if (!key.match(/^[\\w]$/)) break;\n\n this.searchOptions(key, false);\n break;\n }\n };\n\n async openDropdownWithActiveElement(activeIndex: number) {\n if (this.disabled) return;\n this.popoverState.emit({ open: true, action: 'open' });\n await waitForNextPaint();\n this.activeIndex = activeIndex;\n this.setActiveOption();\n this.setFocusedOption();\n this.scrollToActiveOption();\n }\n\n resetTimer() {\n if (this.searchStringTimer) {\n clearTimeout(this.searchStringTimer);\n }\n\n this.searchStringTimer = window.setTimeout(() => {\n this.searchString = null;\n }, 2000);\n }\n\n scrollToActiveOption() {\n const activeOption = this.allOptions[this.activeIndex];\n activeOption?.scrollIntoView({ block: 'center' });\n }\n\n searchAndFocus = (keyValue: string, shouldSelect: boolean) => {\n // pseudo search in non-searchable select\n const reorder = () => {\n this.pivotIndex = this.pivotIndex === undefined ? 0 : (this.activeIndex || 0) + 1;\n const list = this.allOptions.map((element, index) => ({ element, index }));\n return [...list.slice(this.pivotIndex), ...list.slice(0, this.pivotIndex)];\n };\n\n const buildQueue = () => {\n const now = new Date();\n if (now.getTime() - this.keyStore.lastPressedAt.getTime() > 1000) {\n // empty stored keys if delay > 1s\n this.keyStore.queue.length = 0;\n }\n if (this.keyStore.queue.length !== 1 || this.keyStore.queue[0] !== keyValue) {\n this.keyStore.queue.push(keyValue);\n }\n this.keyStore.lastPressedAt = now;\n };\n\n const searchIndex = (list: any[]) => {\n const keyStr = this.keyStore.queue.join('');\n return list.find(v => {\n return (\n !v.element.disabled &&\n v.element.display &&\n (v.element.display.match(new RegExp(`^${keyStr}`, 'i')) ||\n v.element.display.replace(/\\s/g, '').match(new RegExp(`^${keyStr}`, 'i')))\n );\n });\n };\n\n const setFocus = ({ index }) => {\n if (this.multiple) {\n // multiple: should open to make sure that which options are selected\n this.openDropdownWithActiveElement(index);\n } else {\n this.activeIndex = index;\n if (shouldSelect) {\n this.selectOption(this.allOptions[index]);\n this.popoverState.emit({ open: false, action: 'select' });\n } else this.setActiveElement(index);\n }\n };\n\n buildQueue();\n const matched = searchIndex(reorder());\n if (matched) {\n setFocus(matched);\n }\n };\n\n searchOptions(key: string, shouldSelect?: boolean) {\n this.searchString = key;\n this.searchAndFocus(key, shouldSelect);\n }\n\n selectOption(selectedOption: HTMLQ2OptionElement) {\n const { multiple, noSelect, showSelected } = this;\n if (!selectedOption || selectedOption.disabled || selectedOption.disabledGroup) return;\n const selectedValue = selectedOption.value;\n const valueObject = {\n value: selectedValue,\n display: selectedOption.display || selectedOption.innerText.trim(),\n };\n\n let values: IOptionValue[] = [];\n if (multiple) {\n const { selectedOptions } = this;\n const isAlreadySelected = selectedOptions.find(option => option.value === selectedValue);\n\n if (isAlreadySelected) {\n values = selectedOptions.filter(({ value }) => value !== selectedValue);\n } else {\n values = [...selectedOptions, valueObject];\n }\n\n if (showSelected) this.focusSelectedSibling(selectedOption);\n } else {\n values = [valueObject];\n }\n\n if (noSelect) this.setActiveElement(null);\n else this.selectedOptions = values;\n\n this.change.emit({ value: selectedValue, values });\n }\n\n setActiveOption() {\n const activeIndex = this.activeIndex;\n\n this.allOptions.forEach((element, elementIndex) => {\n element.active = activeIndex === elementIndex;\n });\n }\n\n setFocusedOption() {\n const option = this.allOptions[this.activeIndex];\n if (!option) return;\n\n const isOptionVisible = isVisible(option);\n if (isOptionVisible) option.focus();\n else nextPaint(() => option.focus());\n }\n\n updateMultipleOptionAttrs() {\n const { allOptions, selectedOptions } = this;\n const selectedValues = selectedOptions.map(({ value }) => value);\n allOptions.forEach(element => {\n element.selected = selectedValues.includes(element.value);\n });\n }\n\n updateSingleOptionAttrs() {\n const { allOptions, selectedOptions } = this;\n const selectedValue = selectedOptions[0]?.value || undefined;\n allOptions.forEach(element => {\n element.selected = element.value === selectedValue;\n });\n }\n\n // #endregion\n // #region Render Methods\n\n render() {\n return (\n <Host>\n <div\n class=\"content\"\n ref={el => (this.contentElement = el)}\n onFocusout={this.focusoutHandler}\n >\n <div\n class=\"options\"\n aria-label={loc('tecton.element.optionList.label', [this.label])}\n aria-multiselectable={`${!!this.multiple}`}\n role={this.type || 'listbox'}\n onKeyDown={this.internalKeydownHandler}\n onClick={this.clickHandler}\n >\n <slot />\n </div>\n </div>\n </Host>\n );\n }\n\n // #endregion\n}\n"],"version":3}