q2-tecton-elements 1.71.4 → 1.73.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (415) hide show
  1. package/dist/bundle-report.json +32564 -26687
  2. package/dist/cjs/{charting-ClN1ldqv.js → charting-CdNTrVBe.js} +80 -0
  3. package/dist/cjs/click-elsewhere_3.cjs.entry.js +85 -20
  4. package/dist/cjs/{dataSample-BYR-wrOn.js → dataSample-B4blhlH4.js} +1 -1
  5. package/dist/cjs/date-picker-helpers-UYvPn98R.js +257 -0
  6. package/dist/cjs/{index-SpDCZABA.js → index-BqyWHpNu.js} +2 -2
  7. package/dist/cjs/loader.cjs.js +1 -1
  8. package/dist/cjs/{q2-action-group_2.cjs.entry.js → q2-action-group.cjs.entry.js} +1 -89
  9. package/dist/cjs/q2-action-sheet.cjs.entry.js +98 -18
  10. package/dist/cjs/q2-avatar.cjs.entry.js +1 -1
  11. package/dist/cjs/q2-badge_2.cjs.entry.js +113 -12
  12. package/dist/cjs/q2-btn_2.cjs.entry.js +2 -2
  13. package/dist/cjs/q2-calendar.cjs.entry.js +14 -7
  14. package/dist/cjs/q2-card-image.cjs.entry.js +4 -4
  15. package/dist/cjs/q2-card.cjs.entry.js +1 -1
  16. package/dist/cjs/q2-carousel-pane.cjs.entry.js +3 -3
  17. package/dist/cjs/q2-carousel.cjs.entry.js +20 -6
  18. package/dist/cjs/q2-chart-area.cjs.entry.js +38 -7
  19. package/dist/cjs/q2-chart-bar.cjs.entry.js +39 -8
  20. package/dist/cjs/q2-chart-donut.cjs.entry.js +31 -13
  21. package/dist/cjs/q2-checkbox-group.cjs.entry.js +3 -3
  22. package/dist/cjs/q2-checkbox_2.cjs.entry.js +9 -6
  23. package/dist/cjs/q2-context.cjs.entry.js +6 -5
  24. package/dist/cjs/q2-currency.cjs.entry.js +1 -1
  25. package/dist/cjs/q2-data-table.cjs.entry.js +7 -7
  26. package/dist/cjs/q2-date-calendar.cjs.entry.js +452 -0
  27. package/dist/cjs/q2-date-picker_2.cjs.entry.js +968 -0
  28. package/dist/cjs/q2-detail.cjs.entry.js +2 -2
  29. package/dist/cjs/q2-dropdown-item.cjs.entry.js +1 -1
  30. package/dist/cjs/q2-dropdown.cjs.entry.js +4 -4
  31. package/dist/cjs/q2-editable-field.cjs.entry.js +51 -37
  32. package/dist/cjs/q2-example.cjs.entry.js +1 -1
  33. package/dist/cjs/q2-file-picker.cjs.entry.js +60 -4
  34. package/dist/cjs/q2-form.cjs.entry.js +1 -1
  35. package/dist/cjs/q2-formatted-text.cjs.entry.js +1 -1
  36. package/dist/cjs/q2-icon.cjs.entry.js +1 -1
  37. package/dist/cjs/q2-item.cjs.entry.js +21 -3
  38. package/dist/cjs/q2-legend.cjs.entry.js +1 -1
  39. package/dist/cjs/q2-link_2.cjs.entry.js +2 -2
  40. package/dist/cjs/q2-loc.cjs.entry.js +1 -1
  41. package/dist/cjs/q2-message.cjs.entry.js +3 -3
  42. package/dist/cjs/q2-meter.cjs.entry.js +2 -2
  43. package/dist/cjs/q2-modal.cjs.entry.js +59 -17
  44. package/dist/cjs/q2-month-picker.cjs.entry.js +3 -3
  45. package/dist/cjs/q2-mutation-observer.cjs.entry.js +1 -1
  46. package/dist/cjs/q2-option.cjs.entry.js +1 -1
  47. package/dist/cjs/q2-otp.cjs.entry.js +5 -5
  48. package/dist/cjs/q2-pagination.cjs.entry.js +4 -4
  49. package/dist/cjs/q2-pill.cjs.entry.js +8 -5
  50. package/dist/cjs/q2-radio-group.cjs.entry.js +22 -4
  51. package/dist/cjs/q2-radio.cjs.entry.js +3 -3
  52. package/dist/cjs/q2-relative-time.cjs.entry.js +3 -3
  53. package/dist/cjs/q2-resize-observer.cjs.entry.js +92 -0
  54. package/dist/cjs/q2-search.cjs.entry.js +4 -4
  55. package/dist/cjs/q2-section.cjs.entry.js +7 -7
  56. package/dist/cjs/q2-select.cjs.entry.js +41 -21
  57. package/dist/cjs/q2-stepper-pane.cjs.entry.js +2 -2
  58. package/dist/cjs/q2-stepper-vertical.cjs.entry.js +2 -2
  59. package/dist/cjs/q2-stepper.cjs.entry.js +2 -2
  60. package/dist/cjs/q2-surface.cjs.entry.js +1 -1
  61. package/dist/cjs/q2-tab-container.cjs.entry.js +2 -2
  62. package/dist/cjs/q2-tab-pane.cjs.entry.js +1 -1
  63. package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
  64. package/dist/cjs/q2-textarea.cjs.entry.js +2 -2
  65. package/dist/cjs/q2-toast.cjs.entry.js +1 -1
  66. package/dist/cjs/q2-tooltip.cjs.entry.js +1 -1
  67. package/dist/cjs/{sectorHelper-9TWL-3dw.js → sectorHelper-CxhDl5ql.js} +1 -1
  68. package/dist/cjs/tecton-tab-pane.cjs.entry.js +5 -3
  69. package/dist/collection/collection-manifest.json +2 -0
  70. package/dist/collection/components/q2-action-sheet/q2-action-sheet.css +52 -0
  71. package/dist/collection/components/q2-action-sheet/q2-action-sheet.js +98 -18
  72. package/dist/collection/components/q2-action-sheet/test/q2-action-sheet-test.vr.js +124 -0
  73. package/dist/collection/components/q2-avatar/q2-avatar.js +1 -1
  74. package/dist/collection/components/q2-btn/q2-btn.css +152 -146
  75. package/dist/collection/components/q2-btn/q2-btn.js +10 -4
  76. package/dist/collection/components/q2-btn/test/q2-btn-test.vr.js +229 -20
  77. package/dist/collection/components/q2-calendar/q2-calendar.css +3 -0
  78. package/dist/collection/components/q2-calendar/q2-calendar.js +20 -7
  79. package/dist/collection/components/q2-calendar/q2-month-picker.js +2 -2
  80. package/dist/collection/components/q2-calendar/test/q2-calendar-test.vr.js +26 -15
  81. package/dist/collection/components/q2-card/test/q2-card-test.vr.js +4 -0
  82. package/dist/collection/components/q2-card-image/q2-card-image.css +89 -134
  83. package/dist/collection/components/q2-card-image/q2-card-image.js +4 -4
  84. package/dist/collection/components/q2-card-image/test/q2-card-image-test.vr.js +4 -0
  85. package/dist/collection/components/q2-carousel/q2-carousel.js +19 -5
  86. package/dist/collection/components/q2-carousel/test/q2-carousel-test.vr.js +45 -0
  87. package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.js +2 -2
  88. package/dist/collection/components/q2-chart-area/q2-chart-area.css +11 -0
  89. package/dist/collection/components/q2-chart-area/q2-chart-area.js +53 -7
  90. package/dist/collection/components/q2-chart-area/test/q2-chart-area-test.vr.js +14 -0
  91. package/dist/collection/components/q2-chart-bar/q2-chart-bar.css +11 -0
  92. package/dist/collection/components/q2-chart-bar/q2-chart-bar.js +50 -4
  93. package/dist/collection/components/q2-chart-bar/test/q2-chart-bar-test.vr.js +14 -0
  94. package/dist/collection/components/q2-chart-donut/q2-chart-donut.js +30 -10
  95. package/dist/collection/components/q2-chart-donut/test/q2-chart-donut-test.vr.js +25 -0
  96. package/dist/collection/components/q2-checkbox/q2-checkbox.css +2 -2
  97. package/dist/collection/components/q2-checkbox/q2-checkbox.js +6 -3
  98. package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.css +2 -0
  99. package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.js +6 -3
  100. package/dist/collection/components/q2-context/q2-context.css +5 -0
  101. package/dist/collection/components/q2-context/q2-context.js +4 -3
  102. package/dist/collection/components/q2-context/test/q2-context-test.vr.js +14 -4
  103. package/dist/collection/components/q2-currency/q2-currency.js +1 -1
  104. package/dist/collection/components/q2-data-table/q2-data-table.css +6 -0
  105. package/dist/collection/components/q2-data-table/q2-data-table.js +5 -5
  106. package/dist/collection/components/q2-data-table/test/q2-data-table-test.vr.js +52 -0
  107. package/dist/collection/components/q2-date-calendar/q2-date-calendar.css +393 -0
  108. package/dist/collection/components/q2-date-calendar/q2-date-calendar.js +1022 -0
  109. package/dist/collection/components/q2-date-calendar/test/q2-date-calendar-test.vr.js +111 -0
  110. package/dist/collection/components/q2-date-picker/q2-date-picker.css +138 -0
  111. package/dist/collection/components/q2-date-picker/q2-date-picker.js +2010 -0
  112. package/dist/collection/components/q2-date-picker/test/q2-date-picker-test.vr.js +179 -0
  113. package/dist/collection/components/q2-detail/q2-detail.js +1 -1
  114. package/dist/collection/components/q2-dropdown/q2-dropdown.css +2 -0
  115. package/dist/collection/components/q2-dropdown/q2-dropdown.js +5 -5
  116. package/dist/collection/components/q2-dropdown/test/q2-dropdown-test.vr.js +30 -0
  117. package/dist/collection/components/q2-editable-field/q2-editable-field.css +2 -0
  118. package/dist/collection/components/q2-editable-field/q2-editable-field.js +59 -45
  119. package/dist/collection/components/q2-example/q2-example.js +1 -1
  120. package/dist/collection/components/q2-file-picker/q2-file-picker.css +27 -0
  121. package/dist/collection/components/q2-file-picker/q2-file-picker.js +98 -2
  122. package/dist/collection/components/q2-file-picker/test/q2-file-picker-test.vr.js +22 -0
  123. package/dist/collection/components/q2-form/q2-form.js +1 -1
  124. package/dist/collection/components/q2-formatted-text/q2-formatted-text.js +1 -1
  125. package/dist/collection/components/q2-input/q2-input.css +67 -1
  126. package/dist/collection/components/q2-input/q2-input.js +160 -15
  127. package/dist/collection/components/q2-input/test/q2-input-test.vr.js +35 -0
  128. package/dist/collection/components/q2-item/q2-item.css +3 -1
  129. package/dist/collection/components/q2-item/q2-item.js +19 -1
  130. package/dist/collection/components/q2-item/test/q2-item-test.vr.js +8 -2
  131. package/dist/collection/components/q2-legend/q2-legend.js +1 -1
  132. package/dist/collection/components/q2-list/q2-list.js +1 -1
  133. package/dist/collection/components/q2-message/q2-message.css +5 -5
  134. package/dist/collection/components/q2-message/q2-message.js +1 -1
  135. package/dist/collection/components/q2-meter/q2-meter.js +1 -1
  136. package/dist/collection/components/q2-modal/q2-modal.css +40 -3
  137. package/dist/collection/components/q2-modal/q2-modal.js +100 -16
  138. package/dist/collection/components/q2-modal/test/q2-modal-test.vr.js +32 -7
  139. package/dist/collection/components/q2-mutation-observer/q2-mutation-observer.js +1 -1
  140. package/dist/collection/components/q2-optgroup/q2-optgroup.js +1 -1
  141. package/dist/collection/components/q2-option-list/q2-option-list.js +33 -4
  142. package/dist/collection/components/q2-otp/q2-otp.js +4 -4
  143. package/dist/collection/components/q2-pagination/q2-pagination.js +3 -3
  144. package/dist/collection/components/q2-pill/q2-pill.css +2 -2
  145. package/dist/collection/components/q2-pill/q2-pill.js +6 -3
  146. package/dist/collection/components/q2-popover/q2-popover.css +4 -2
  147. package/dist/collection/components/q2-popover/q2-popover.js +50 -14
  148. package/dist/collection/components/q2-radio/q2-radio.css +158 -104
  149. package/dist/collection/components/q2-radio/q2-radio.js +5 -2
  150. package/dist/collection/components/q2-radio/test/q2-radio-test.vr.js +25 -2
  151. package/dist/collection/components/q2-radio-group/q2-radio-group.css +39 -2
  152. package/dist/collection/components/q2-radio-group/q2-radio-group.js +73 -4
  153. package/dist/collection/components/q2-radio-group/test/q2-radio-group-test.vr.js +43 -1
  154. package/dist/collection/components/q2-relative-time/q2-relative-time.js +2 -2
  155. package/dist/collection/components/q2-resize-observer/q2-resize-observer.js +1 -1
  156. package/dist/collection/components/q2-search/q2-search.css +2 -0
  157. package/dist/collection/components/q2-search/q2-search.js +6 -3
  158. package/dist/collection/components/q2-section/q2-section.css +2 -0
  159. package/dist/collection/components/q2-section/q2-section.js +6 -6
  160. package/dist/collection/components/q2-select/q2-select.css +3 -0
  161. package/dist/collection/components/q2-select/q2-select.js +48 -22
  162. package/dist/collection/components/q2-select/test/q2-select-test.vr.js +13 -0
  163. package/dist/collection/components/q2-stepper/q2-stepper.js +1 -1
  164. package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.js +1 -1
  165. package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js +1 -1
  166. package/dist/collection/components/q2-surface/q2-surface.js +1 -1
  167. package/dist/collection/components/q2-surface/test/q2-surface-test.vr.js +2 -2
  168. package/dist/collection/components/q2-tab-container/q2-tab-container.js +1 -1
  169. package/dist/collection/components/q2-tab-pane/q2-tab-pane.js +1 -1
  170. package/dist/collection/components/q2-tag/q2-tag.js +6 -3
  171. package/dist/collection/components/q2-textarea/q2-textarea.js +6 -3
  172. package/dist/collection/components/q2-tooltip/test/q2-tooltip-test.vr.js +1 -1
  173. package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js +5 -3
  174. package/dist/collection/utils/chart-keyboard.js +76 -0
  175. package/dist/collection/utils/date-picker/date-picker-helpers.js +239 -0
  176. package/dist/collection/utils/date-picker/date-picker-types.js +1 -0
  177. package/dist/collection/utils/index.js +2 -2
  178. package/dist/collection/utils/test/vr-helpers.js +16 -2
  179. package/dist/components/charting.js +1603 -1532
  180. package/dist/components/dataSample.js +7 -7
  181. package/dist/components/index.js +57 -53
  182. package/dist/components/index2.js +3 -3
  183. package/dist/components/q2-action-sheet.js +224 -103
  184. package/dist/components/q2-avatar2.js +8 -8
  185. package/dist/components/q2-btn2.js +2 -2
  186. package/dist/components/q2-calendar.js +15 -10
  187. package/dist/components/q2-card-image.js +24 -24
  188. package/dist/components/q2-carousel-pane2.js +3 -3
  189. package/dist/components/q2-carousel.js +37 -24
  190. package/dist/components/q2-chart-area.js +415 -369
  191. package/dist/components/q2-chart-bar.js +193 -148
  192. package/dist/components/q2-chart-donut.js +185 -158
  193. package/dist/components/q2-checkbox-group.js +12 -12
  194. package/dist/components/q2-checkbox2.js +12 -12
  195. package/dist/components/q2-context.js +30 -29
  196. package/dist/components/q2-currency.js +9 -9
  197. package/dist/components/q2-data-table.js +111 -111
  198. package/dist/components/q2-date-calendar.d.ts +11 -0
  199. package/dist/components/q2-date-calendar.js +5 -0
  200. package/dist/components/q2-date-calendar2.js +678 -0
  201. package/dist/components/q2-date-picker.d.ts +11 -0
  202. package/dist/components/q2-date-picker.js +5 -0
  203. package/dist/components/q2-date-picker2.js +875 -0
  204. package/dist/components/q2-detail.js +3 -3
  205. package/dist/components/q2-dropdown.js +13 -13
  206. package/dist/components/q2-editable-field.js +45 -36
  207. package/dist/components/q2-example.js +11 -11
  208. package/dist/components/q2-file-picker.js +71 -11
  209. package/dist/components/q2-form.js +6 -6
  210. package/dist/components/q2-formatted-text.js +2 -2
  211. package/dist/components/q2-input2.js +268 -163
  212. package/dist/components/q2-item2.js +33 -23
  213. package/dist/components/q2-legend2.js +7 -7
  214. package/dist/components/q2-list2.js +6 -6
  215. package/dist/components/q2-message2.js +29 -29
  216. package/dist/components/q2-meter.js +7 -7
  217. package/dist/components/q2-modal.js +94 -76
  218. package/dist/components/q2-month-picker.js +17 -17
  219. package/dist/components/q2-mutation-observer.js +1 -1
  220. package/dist/components/q2-optgroup2.js +7 -7
  221. package/dist/components/q2-option-list2.js +52 -32
  222. package/dist/components/q2-otp.js +8 -8
  223. package/dist/components/q2-pagination.js +67 -67
  224. package/dist/components/q2-pill.js +17 -15
  225. package/dist/components/q2-popover2.js +77 -53
  226. package/dist/components/q2-radio-group.js +70 -40
  227. package/dist/components/q2-radio.js +40 -55
  228. package/dist/components/q2-relative-time.js +5 -5
  229. package/dist/components/q2-resize-observer2.js +23 -23
  230. package/dist/components/q2-search.js +6 -6
  231. package/dist/components/q2-section.js +33 -33
  232. package/dist/components/q2-select2.js +47 -40
  233. package/dist/components/q2-stepper-pane.js +17 -13
  234. package/dist/components/q2-stepper-vertical.js +4 -4
  235. package/dist/components/q2-stepper.js +57 -57
  236. package/dist/components/q2-surface.js +3 -3
  237. package/dist/components/q2-tab-container.js +18 -18
  238. package/dist/components/q2-tab-pane.js +2 -2
  239. package/dist/components/q2-tag2.js +8 -6
  240. package/dist/components/q2-textarea.js +3 -3
  241. package/dist/components/sectorHelper.js +78 -78
  242. package/dist/components/tecton-tab-pane.js +12 -11
  243. package/dist/esm/{charting-DOZct-UB.js → charting-DFXJklqs.js} +79 -1
  244. package/dist/esm/click-elsewhere_3.entry.js +85 -20
  245. package/dist/esm/{dataSample-Dm1zpQNi.js → dataSample-CP_VKNqt.js} +1 -1
  246. package/dist/esm/date-picker-helpers-D8QnN_AS.js +242 -0
  247. package/dist/esm/{index-Cps4jSQM.js → index-CP8pXJ-l.js} +2 -2
  248. package/dist/esm/loader.js +1 -1
  249. package/dist/esm/{q2-action-group_2.entry.js → q2-action-group.entry.js} +3 -90
  250. package/dist/esm/q2-action-sheet.entry.js +99 -19
  251. package/dist/esm/q2-avatar.entry.js +1 -1
  252. package/dist/esm/q2-badge_2.entry.js +113 -12
  253. package/dist/esm/q2-btn_2.entry.js +2 -2
  254. package/dist/esm/q2-calendar.entry.js +14 -7
  255. package/dist/esm/q2-card-image.entry.js +4 -4
  256. package/dist/esm/q2-card.entry.js +1 -1
  257. package/dist/esm/q2-carousel-pane.entry.js +3 -3
  258. package/dist/esm/q2-carousel.entry.js +20 -6
  259. package/dist/esm/q2-chart-area.entry.js +38 -7
  260. package/dist/esm/q2-chart-bar.entry.js +39 -8
  261. package/dist/esm/q2-chart-donut.entry.js +31 -13
  262. package/dist/esm/q2-checkbox-group.entry.js +3 -3
  263. package/dist/esm/q2-checkbox_2.entry.js +9 -6
  264. package/dist/esm/q2-context.entry.js +6 -5
  265. package/dist/esm/q2-currency.entry.js +1 -1
  266. package/dist/esm/q2-data-table.entry.js +7 -7
  267. package/dist/esm/q2-date-calendar.entry.js +450 -0
  268. package/dist/esm/q2-date-picker_2.entry.js +965 -0
  269. package/dist/esm/q2-detail.entry.js +2 -2
  270. package/dist/esm/q2-dropdown-item.entry.js +1 -1
  271. package/dist/esm/q2-dropdown.entry.js +4 -4
  272. package/dist/esm/q2-editable-field.entry.js +51 -37
  273. package/dist/esm/q2-example.entry.js +1 -1
  274. package/dist/esm/q2-file-picker.entry.js +60 -4
  275. package/dist/esm/q2-form.entry.js +1 -1
  276. package/dist/esm/q2-formatted-text.entry.js +1 -1
  277. package/dist/esm/q2-icon.entry.js +1 -1
  278. package/dist/esm/q2-item.entry.js +21 -3
  279. package/dist/esm/q2-legend.entry.js +1 -1
  280. package/dist/esm/q2-link_2.entry.js +2 -2
  281. package/dist/esm/q2-loc.entry.js +1 -1
  282. package/dist/esm/q2-message.entry.js +3 -3
  283. package/dist/esm/q2-meter.entry.js +2 -2
  284. package/dist/esm/q2-modal.entry.js +59 -17
  285. package/dist/esm/q2-month-picker.entry.js +3 -3
  286. package/dist/esm/q2-mutation-observer.entry.js +1 -1
  287. package/dist/esm/q2-option.entry.js +1 -1
  288. package/dist/esm/q2-otp.entry.js +5 -5
  289. package/dist/esm/q2-pagination.entry.js +4 -4
  290. package/dist/esm/q2-pill.entry.js +8 -5
  291. package/dist/esm/q2-radio-group.entry.js +22 -4
  292. package/dist/esm/q2-radio.entry.js +3 -3
  293. package/dist/esm/q2-relative-time.entry.js +3 -3
  294. package/dist/esm/q2-resize-observer.entry.js +90 -0
  295. package/dist/esm/q2-search.entry.js +4 -4
  296. package/dist/esm/q2-section.entry.js +7 -7
  297. package/dist/esm/q2-select.entry.js +41 -21
  298. package/dist/esm/q2-stepper-pane.entry.js +2 -2
  299. package/dist/esm/q2-stepper-vertical.entry.js +2 -2
  300. package/dist/esm/q2-stepper.entry.js +2 -2
  301. package/dist/esm/q2-surface.entry.js +1 -1
  302. package/dist/esm/q2-tab-container.entry.js +2 -2
  303. package/dist/esm/q2-tab-pane.entry.js +1 -1
  304. package/dist/esm/q2-tecton-elements.js +1 -1
  305. package/dist/esm/q2-textarea.entry.js +2 -2
  306. package/dist/esm/q2-toast.entry.js +1 -1
  307. package/dist/esm/q2-tooltip.entry.js +1 -1
  308. package/dist/esm/{sectorHelper--RMGWGAy.js → sectorHelper-DBtkWtpl.js} +1 -1
  309. package/dist/esm/tecton-tab-pane.entry.js +5 -3
  310. package/dist/q2-tecton-elements/{charting-DOZct-UB.js → charting-DFXJklqs.js} +1625 -1554
  311. package/dist/q2-tecton-elements/click-elsewhere_3.entry.js +98 -54
  312. package/dist/q2-tecton-elements/{dataSample-Dm1zpQNi.js → dataSample-CP_VKNqt.js} +33 -33
  313. package/dist/q2-tecton-elements/date-picker-helpers-D8QnN_AS.js +153 -0
  314. package/dist/q2-tecton-elements/{index-Cps4jSQM.js → index-CP8pXJ-l.js} +2 -2
  315. package/dist/q2-tecton-elements/{q2-action-group_2.entry.js → q2-action-group.entry.js} +35 -113
  316. package/dist/q2-tecton-elements/q2-action-sheet.entry.js +169 -84
  317. package/dist/q2-tecton-elements/q2-avatar.entry.js +8 -8
  318. package/dist/q2-tecton-elements/q2-badge_2.entry.js +240 -140
  319. package/dist/q2-tecton-elements/q2-btn_2.entry.js +23 -23
  320. package/dist/q2-tecton-elements/q2-calendar.entry.js +18 -13
  321. package/dist/q2-tecton-elements/q2-card-image.entry.js +9 -9
  322. package/dist/q2-tecton-elements/q2-card.entry.js +1 -1
  323. package/dist/q2-tecton-elements/q2-carousel-pane.entry.js +4 -4
  324. package/dist/q2-tecton-elements/q2-carousel.entry.js +24 -11
  325. package/dist/q2-tecton-elements/q2-chart-area.entry.js +190 -144
  326. package/dist/q2-tecton-elements/q2-chart-bar.entry.js +382 -338
  327. package/dist/q2-tecton-elements/q2-chart-donut.entry.js +186 -160
  328. package/dist/q2-tecton-elements/q2-checkbox-group.entry.js +8 -8
  329. package/dist/q2-tecton-elements/q2-checkbox_2.entry.js +21 -19
  330. package/dist/q2-tecton-elements/q2-context.entry.js +18 -17
  331. package/dist/q2-tecton-elements/q2-currency.entry.js +9 -9
  332. package/dist/q2-tecton-elements/q2-data-table.entry.js +38 -38
  333. package/dist/q2-tecton-elements/q2-date-calendar.entry.js +438 -0
  334. package/dist/q2-tecton-elements/q2-date-picker_2.entry.js +792 -0
  335. package/dist/q2-tecton-elements/q2-detail.entry.js +4 -4
  336. package/dist/q2-tecton-elements/q2-dropdown-item.entry.js +1 -1
  337. package/dist/q2-tecton-elements/q2-dropdown.entry.js +10 -10
  338. package/dist/q2-tecton-elements/q2-editable-field.entry.js +50 -41
  339. package/dist/q2-tecton-elements/q2-example.entry.js +1 -1
  340. package/dist/q2-tecton-elements/q2-file-picker.entry.js +62 -7
  341. package/dist/q2-tecton-elements/q2-form.entry.js +2 -2
  342. package/dist/q2-tecton-elements/q2-formatted-text.entry.js +2 -2
  343. package/dist/q2-tecton-elements/q2-icon.entry.js +1 -1
  344. package/dist/q2-tecton-elements/q2-item.entry.js +27 -17
  345. package/dist/q2-tecton-elements/q2-legend.entry.js +2 -2
  346. package/dist/q2-tecton-elements/q2-link_2.entry.js +7 -7
  347. package/dist/q2-tecton-elements/q2-loc.entry.js +1 -1
  348. package/dist/q2-tecton-elements/q2-message.entry.js +30 -30
  349. package/dist/q2-tecton-elements/q2-meter.entry.js +8 -8
  350. package/dist/q2-tecton-elements/q2-modal.entry.js +61 -45
  351. package/dist/q2-tecton-elements/q2-month-picker.entry.js +14 -14
  352. package/dist/q2-tecton-elements/q2-mutation-observer.entry.js +1 -1
  353. package/dist/q2-tecton-elements/q2-option.entry.js +1 -1
  354. package/dist/q2-tecton-elements/q2-otp.entry.js +9 -9
  355. package/dist/q2-tecton-elements/q2-pagination.entry.js +20 -20
  356. package/dist/q2-tecton-elements/q2-pill.entry.js +43 -41
  357. package/dist/q2-tecton-elements/q2-radio-group.entry.js +55 -34
  358. package/dist/q2-tecton-elements/q2-radio.entry.js +38 -53
  359. package/dist/q2-tecton-elements/q2-relative-time.entry.js +11 -11
  360. package/dist/q2-tecton-elements/q2-resize-observer.entry.js +81 -0
  361. package/dist/q2-tecton-elements/q2-search.entry.js +7 -7
  362. package/dist/q2-tecton-elements/q2-section.entry.js +25 -25
  363. package/dist/q2-tecton-elements/q2-select.entry.js +28 -21
  364. package/dist/q2-tecton-elements/q2-stepper-pane.entry.js +19 -15
  365. package/dist/q2-tecton-elements/q2-stepper-vertical.entry.js +9 -9
  366. package/dist/q2-tecton-elements/q2-stepper.entry.js +45 -45
  367. package/dist/q2-tecton-elements/q2-surface.entry.js +3 -3
  368. package/dist/q2-tecton-elements/q2-tab-container.entry.js +15 -15
  369. package/dist/q2-tecton-elements/q2-tab-pane.entry.js +9 -9
  370. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
  371. package/dist/q2-tecton-elements/q2-textarea.entry.js +3 -3
  372. package/dist/q2-tecton-elements/q2-toast.entry.js +1 -1
  373. package/dist/q2-tecton-elements/q2-tooltip.entry.js +1 -1
  374. package/dist/q2-tecton-elements/{sectorHelper--RMGWGAy.js → sectorHelper-DBtkWtpl.js} +56 -56
  375. package/dist/q2-tecton-elements/tecton-tab-pane.entry.js +8 -7
  376. package/dist/types/components/q2-action-sheet/q2-action-sheet.d.ts +21 -1
  377. package/dist/types/components/q2-action-sheet/test/q2-action-sheet-test.vr.d.ts +1 -0
  378. package/dist/types/components/q2-btn/q2-btn.d.ts +7 -3
  379. package/dist/types/components/q2-calendar/q2-calendar.d.ts +10 -2
  380. package/dist/types/components/q2-card-image/q2-card-image.d.ts +1 -1
  381. package/dist/types/components/q2-carousel/q2-carousel.d.ts +5 -0
  382. package/dist/types/components/q2-chart-area/q2-chart-area.d.ts +11 -2
  383. package/dist/types/components/q2-chart-bar/q2-chart-bar.d.ts +9 -0
  384. package/dist/types/components/q2-chart-donut/q2-chart-donut.d.ts +1 -0
  385. package/dist/types/components/q2-checkbox/q2-checkbox.d.ts +4 -3
  386. package/dist/types/components/q2-checkbox-group/q2-checkbox-group.d.ts +4 -2
  387. package/dist/types/components/q2-date-calendar/q2-date-calendar.d.ts +122 -0
  388. package/dist/types/components/q2-date-calendar/test/q2-date-calendar-test.vr.d.ts +1 -0
  389. package/dist/types/components/q2-date-picker/q2-date-picker.d.ts +304 -0
  390. package/dist/types/components/q2-date-picker/test/q2-date-picker-test.vr.d.ts +1 -0
  391. package/dist/types/components/q2-dropdown/q2-dropdown.d.ts +3 -3
  392. package/dist/types/components/q2-dropdown/test/q2-dropdown-test.vr.d.ts +1 -0
  393. package/dist/types/components/q2-editable-field/q2-editable-field.d.ts +20 -2
  394. package/dist/types/components/q2-file-picker/q2-file-picker.d.ts +20 -0
  395. package/dist/types/components/q2-input/q2-input.d.ts +32 -4
  396. package/dist/types/components/q2-item/q2-item.d.ts +3 -0
  397. package/dist/types/components/q2-modal/q2-modal.d.ts +10 -1
  398. package/dist/types/components/q2-option-list/q2-option-list.d.ts +1 -0
  399. package/dist/types/components/q2-popover/q2-popover.d.ts +4 -0
  400. package/dist/types/components/q2-radio/q2-radio.d.ts +3 -2
  401. package/dist/types/components/q2-radio-group/q2-radio-group.d.ts +18 -2
  402. package/dist/types/components/q2-search/q2-search.d.ts +3 -1
  403. package/dist/types/components/q2-select/q2-select.d.ts +12 -4
  404. package/dist/types/components/q2-textarea/q2-textarea.d.ts +4 -2
  405. package/dist/types/components.d.ts +1112 -195
  406. package/dist/types/global.d.ts +1 -0
  407. package/dist/types/index.d.ts +1 -0
  408. package/dist/types/utils/chart-keyboard.d.ts +16 -0
  409. package/dist/types/utils/date-picker/date-picker-helpers.d.ts +47 -0
  410. package/dist/types/utils/date-picker/date-picker-types.d.ts +42 -0
  411. package/dist/types/utils/test/vr-helpers.d.ts +2 -0
  412. package/package.json +3 -3
  413. package/dist/cjs/q2-optgroup.cjs.entry.js +0 -70
  414. package/dist/esm/q2-optgroup.entry.js +0 -68
  415. package/dist/q2-tecton-elements/q2-optgroup.entry.js +0 -88
@@ -17,6 +17,7 @@ export class Q2Select {
17
17
  this.guid = createGuid();
18
18
  this.isOrientationUpdate = false;
19
19
  this.lastTouchWasInPopover = false;
20
+ this.removingSelectedDisplay = false;
20
21
  this.scheduledAfterRender = [];
21
22
  // #endregion
22
23
  // #region State Properties
@@ -75,7 +76,12 @@ export class Q2Select {
75
76
  * Takes priority over `optional` if both are `true`.
76
77
  */
77
78
  this.readonly = false;
78
- /** Enables search functionality. */
79
+ /**
80
+ * Enables search functionality.
81
+ * @warning
82
+ * `searchable` is not compatible with the `hoist` prop. The action sheet workflow used when `hoist` is `true` does not support in-list search filtering.
83
+ * If both are set, `searchable` has no effect while the action sheet is active.
84
+ */
79
85
  this.searchable = false;
80
86
  /**
81
87
  * Each item in this array should correspond to the value of a `q2-option` element.
@@ -183,9 +189,6 @@ export class Q2Select {
183
189
  this.inputInputHandler = (event) => {
184
190
  event.stopPropagation();
185
191
  const eventValue = event.detail.value;
186
- const shouldClearValue = !!this.value;
187
- if (shouldClearValue)
188
- this.clearValue();
189
192
  if (!this.open)
190
193
  this.openDropdownWithoutActiveElement();
191
194
  this.prioritizeSearch = true;
@@ -202,6 +205,8 @@ export class Q2Select {
202
205
  return;
203
206
  // slots are incompatible with action sheet
204
207
  if (shouldShowActionSheet(this, event) && !hasSlot) {
208
+ event.preventDefault();
209
+ event.stopPropagation();
205
210
  return this.executeActionSheet(event);
206
211
  }
207
212
  const keysForOptionListToHandle = [
@@ -274,16 +279,16 @@ export class Q2Select {
274
279
  this.open = open;
275
280
  };
276
281
  this.onSelectedDisplayClick = (event) => {
282
+ var _a, _b;
277
283
  // Stop click from bubbling to q2-input's onClick (which would toggle the dropdown)
278
284
  event.stopPropagation();
279
285
  if (this.open) {
280
- this.focusInput();
286
+ (_a = this.innerInputField) === null || _a === void 0 ? void 0 : _a.focus();
281
287
  return;
282
288
  }
289
+ (_b = this.innerInputField) === null || _b === void 0 ? void 0 : _b.focus();
283
290
  this.prioritizeSearch = this.searchable;
284
- this.clearSelectedDisplay();
285
291
  this.openDropdownWithoutActiveElement();
286
- this.focusInput();
287
292
  };
288
293
  this.onSelectedDisplayMousedown = (event) => {
289
294
  // Prevent focus shift away from the hidden input
@@ -374,20 +379,27 @@ export class Q2Select {
374
379
  }
375
380
  }
376
381
  delegateFocus(event) {
377
- var _a;
382
+ var _a, _b;
378
383
  // Always delegate focus from host to inner input (fixes programmatic focus)
379
384
  if (isEventFromElement(event, this.hostElement)) {
380
385
  (_a = this.innerInputField) === null || _a === void 0 ? void 0 : _a.focus();
381
386
  }
382
- // Manage display state for searchable selects (preserves existing behavior)
383
- const fromHost = isRelatedTargetWithinHost(event, this.hostElement);
384
- this.prioritizeSearch = fromHost && this.searchable;
387
+ const fromOutside = isRelatedTargetWithinHost(event, this.hostElement);
388
+ const hasRobustSelectedDisplay = !!this.selectedDisplaySlot ||
389
+ (this.multilineOptions && !!this.firstSelectedOptionElement && !this.firstSelectedOptionElement.display);
390
+ this.prioritizeSearch = fromOutside && this.searchable && (this.multiple || hasRobustSelectedDisplay);
385
391
  if (this.prioritizeSearch) {
386
392
  this.clearSelectedDisplay();
387
393
  }
394
+ else if (fromOutside && this.searchable && !!this.value) {
395
+ (_b = this.innerInputField) === null || _b === void 0 ? void 0 : _b.select();
396
+ }
388
397
  }
389
398
  handleFocusout(event) {
390
399
  var _a;
400
+ // Removing the robust display while opening search can emit a focusout without a destination.
401
+ if (!event.relatedTarget && (this.removingSelectedDisplay || (this.open && this.prioritizeSearch)))
402
+ return;
391
403
  const relatedTarget = event.relatedTarget;
392
404
  const isLeavingHost = !((_a = this.popoverElement) === null || _a === void 0 ? void 0 : _a.contains(relatedTarget)) && !this.hostElement.contains(relatedTarget);
393
405
  if (isLeavingHost)
@@ -398,8 +410,12 @@ export class Q2Select {
398
410
  this.inputKeydownHandler(event);
399
411
  }
400
412
  popoverStateChanged({ detail: { open } }) {
401
- if (this.open !== open)
402
- this.open = open;
413
+ if (this.open === open)
414
+ return;
415
+ this.open = open;
416
+ if (open)
417
+ return;
418
+ this.focusInput();
403
419
  }
404
420
  handleTctClick() {
405
421
  const { name, version } = getBrowserInfo();
@@ -509,14 +525,14 @@ export class Q2Select {
509
525
  return;
510
526
  this.optionElements.forEach(element => (element.multiline = newValue));
511
527
  }
512
- openChanged(isOpen) {
528
+ openChanged(isOpen, wasOpen) {
513
529
  if (isOpen) {
514
530
  this.addTouchEventListeners();
515
531
  }
516
532
  else {
517
533
  this.removeTouchEventListeners();
518
- // Reset prioritizeSearch when dropdown closes to ensure selected display can be restored
519
- this.prioritizeSearch = false;
534
+ if (wasOpen)
535
+ this.prioritizeSearch = false;
520
536
  }
521
537
  this.scheduledAfterRender.push(async () => {
522
538
  await waitForNextPaint();
@@ -722,7 +738,9 @@ export class Q2Select {
722
738
  if (slot) {
723
739
  slot.removeEventListener('mousedown', this.onSelectedDisplayMousedown);
724
740
  slot.removeEventListener('click', this.onSelectedDisplayClick);
741
+ this.removingSelectedDisplay = true;
725
742
  slot.remove();
743
+ setTimeout(() => (this.removingSelectedDisplay = false), 0);
726
744
  }
727
745
  }
728
746
  clearValue() {
@@ -813,13 +831,15 @@ export class Q2Select {
813
831
  return (h("q2-popover", { ref: el => (this.popoverElement = el), controlElement: this.innerInputContainer, open: this.open, "max-height": this.popoverMaxHeight, minHeight: this.popoverMinHeight, direction: this.popDirection, mode: this.popoverMode || undefined, block: true }, h("div", { class: "popover-content" }, h("q2-option-list", { onPopoverState: this.onPopoverState, ref: el => (this.optionList = el), type: "listbox", id: "option-list", "show-selected": this.showSelected, label: this.listLabel, multiple: this.multiple, selectedOptions: this.structuredSelectedOptions, onChange: e => e.stopPropagation(), onTctChange: this.onOptionListChange }, h("slot", null)), h("div", { class: "popover-top-container", ref: el => (this.popoverTopContainer = el), hidden: !this.multiple && !this.hasPopoverTop, tabindex: "-1" }, h("slot", { name: "popover-top" }), this.multiple && this.renderVisibilityToggle())), h("div", { class: "popover-bottom-container", hidden: !this.hasPopoverBottom, tabindex: "-1" }, h("slot", { name: "popover-bottom" }))));
814
832
  }
815
833
  renderSelectField() {
816
- var _a;
834
+ var _a, _b;
817
835
  return (h(Fragment, null, h("div", { "aria-live": "polite", "aria-atomic": "true", role: "status", class: "sr" }, this.statusMessage), h("q2-input", { ref: el => (this.inputField = el), class: "q2-select-input", label: (this.label && loc(this.label)) || '', value: this.selectedDisplay, clearable: (!this.disabled && this.clearable && (!!this.value || !!((_a = this.selectedOptions) === null || _a === void 0 ? void 0 : _a.length))) ||
818
836
  undefined, errors: (Array.isArray(this.errors) &&
819
837
  this.errors.length > 0 &&
820
838
  this.errors.map(error => loc(error))) ||
821
839
  (this.invalid && ['tecton.element.select.invalid']) ||
822
- [], disabled: this.disabled, optional: this.optional, readonly: !!this.readonly, placeholder: this.placeholder || undefined, hideLabel: this.hideLabel, valid: this.valid, ariaExpanded: `${this.open}`, ariaControls: "option-list", ariaHaspopup: "listbox", "test-id": "toggleDropdown", "hide-messages": true, iconRight: "chevron-down", onClick: this.inputClickHandler, onInput: e => e.stopImmediatePropagation(), onTctInput: this.inputInputHandler, onKeyDown: this.inputKeydownHandler, onFocus: this.inputFocusHandler, onBlur: this.inputBlurHandler, onChange: e => e.stopPropagation(), onTctChange: this.inputChangeHandler, badgeValue: this.badgeValue, badgeTheme: this.inputFocused ? 'primary' : undefined, _role: "combobox", _preventEntry: !this.searchable }, this.renderCustomDisplay()), h("div", { class: "custom-display-content", hidden: !this.hasCustomDisplay || !!this.searchText, onClick: this.onCustomDisplayClick }, h("slot", { name: "q2-select-display" })), this.renderOptionsDropdown()));
840
+ [], disabled: this.disabled, optional: this.optional, readonly: !!this.readonly, placeholder: this.placeholder || undefined, hideLabel: this.hideLabel, valid: this.valid, ariaExpanded: `${this.open}`, ariaControls: "option-list", ariaHaspopup: "listbox", "test-id": "toggleDropdown", "hide-messages": true, iconRight: "chevron-down", onClick: this.inputClickHandler, onInput: e => e.stopImmediatePropagation(), onTctInput: this.inputInputHandler, onKeyDown: this.inputKeydownHandler, onFocus: this.inputFocusHandler, onBlur: this.inputBlurHandler, onChange: e => e.stopPropagation(), onTctChange: this.inputChangeHandler, badgeValue: this.badgeValue, badgeTheme: this.inputFocused ? 'primary' : undefined, _ariaDescription: this.multiple && ((_b = this.selectedOptions) === null || _b === void 0 ? void 0 : _b.length)
841
+ ? loc('tecton.element.select.selectionCount', [this.selectedOptions.length])
842
+ : undefined, _role: "combobox", _preventEntry: !this.searchable }, this.renderCustomDisplay()), h("div", { class: "custom-display-content", hidden: !this.hasCustomDisplay || !!this.searchText, onClick: this.onCustomDisplayClick }, h("slot", { name: "q2-select-display" })), this.renderOptionsDropdown()));
823
843
  }
824
844
  renderVisibilityToggle() {
825
845
  var _a, _b;
@@ -830,7 +850,7 @@ export class Q2Select {
830
850
  ]), checked: showSelected, "test-id": "selectedOptionsButton", onClick: this.showSelectedOptions, onKeyDown: this.visibilityToggleKeyDown }), h("label", { htmlFor: "selected" }, loc('tecton.element.select.multiHeader.selected', [selectedOptionsCount]))))));
831
851
  }
832
852
  render() {
833
- return (h("click-elsewhere", { key: 'edb9951db5493781ee1f5da0ed5f6c03aff107e9', class: this.wrapperClasses, role: "presentation", onChange: this.clickedElsewhere }, this.renderSelectField()));
853
+ return (h("click-elsewhere", { key: 'c5ee7401b7dc4350fb01992e9a8a76e6700cb63c', class: this.wrapperClasses, role: "presentation", onChange: this.clickedElsewhere }, this.renderSelectField()));
834
854
  }
835
855
  static get is() { return "q2-select"; }
836
856
  static get encapsulation() { return "shadow"; }
@@ -940,9 +960,9 @@ export class Q2Select {
940
960
  "docs": {
941
961
  "tags": [{
942
962
  "name": "warning",
943
- "text": "Only use when a visible label is impractical."
963
+ "text": "Hides the label visually. `label` text is still required for screenreader compliance."
944
964
  }],
945
- "text": "Hide's the field's `<label>` element from view."
965
+ "text": "Hides the field's `<label>` element from view."
946
966
  },
947
967
  "getter": false,
948
968
  "setter": false,
@@ -1003,6 +1023,9 @@ export class Q2Select {
1003
1023
  "optional": false,
1004
1024
  "docs": {
1005
1025
  "tags": [{
1026
+ "name": "warning",
1027
+ "text": "Required for screen reader compliance even when `hideLabel` is `true`."
1028
+ }, {
1006
1029
  "name": "localizable",
1007
1030
  "text": undefined
1008
1031
  }],
@@ -1233,7 +1256,10 @@ export class Q2Select {
1233
1256
  "required": false,
1234
1257
  "optional": false,
1235
1258
  "docs": {
1236
- "tags": [],
1259
+ "tags": [{
1260
+ "name": "warning",
1261
+ "text": "`searchable` is not compatible with the `hoist` prop. The action sheet workflow used when `hoist` is `true` does not support in-list search filtering.\nIf both are set, `searchable` has no effect while the action sheet is active."
1262
+ }],
1237
1263
  "text": "Enables search functionality."
1238
1264
  },
1239
1265
  "getter": false,
@@ -18,6 +18,19 @@ const VARIANTS = [
18
18
  html: `<q2-select label="My select" placeholder="Select an option">${OPTIONS}</q2-select>`,
19
19
  states: ['resting', 'focus', 'expanded-option-hover', 'expanded-option-focus'],
20
20
  },
21
+ {
22
+ name: 'letter-spacing-override',
23
+ html: `<style>
24
+ q2-select {
25
+ --tct-input-label-letter-spacing: initial;
26
+ letter-spacing: 0.12em !important;
27
+ }
28
+ </style>
29
+ <div style="width: 220px">
30
+ <q2-select label="Account funding source selection" placeholder="Select an option">${OPTIONS}</q2-select>
31
+ </div>`,
32
+ states: ['resting'],
33
+ },
21
34
  {
22
35
  name: 'multiple',
23
36
  html: `<q2-select label="My select" placeholder="Select an option" multiple>${OPTIONS}</q2-select>`,
@@ -295,7 +295,7 @@ export class Q2Stepper {
295
295
  const containerClasses = ['step-container'];
296
296
  if (scrollEnabled)
297
297
  containerClasses.push('has-scroll');
298
- return (h(Fragment, { key: 'cd7a09546e4b74cf98f5e27dbcf0efce71e02781' }, h("div", { key: 'aaa383584217da20fdd01174f4b136dfef0128b7', class: containerClasses.join(' ') }, scrollEnabled && (h(Fragment, { key: '6f7f38d768b274409606132cc62d36d48812f50c' }, h("div", { key: '98e26550803496a0edd0e7415b4ec9e16b501722', class: "gradient-left", hidden: !showScrollLeft }), h("div", { key: '58102ecd26dd3f6b36d530f36ecc109b287b4faa', class: "gradient-right", hidden: !showScrollRight }), h("q2-btn", { key: 'a475ba4a846ea5cf93a5ca46422a5473e0d266bd', class: "btn-left", hideLabel: true, hidden: !this.showScrollLeft, label: loc('tecton.element.stepper.scrollLeft'), onTctClick: () => this.onScrollBtnClick('left') }, h("q2-icon", { key: 'b040f724a926e5c07a81438e3586e0eb7a3c063b', type: "chevron-left" })), h("q2-btn", { key: '119dbcd49ce282cbccd58be097f8833e22df4fb4', class: "btn-right", hideLabel: true, hidden: !this.showScrollRight, label: loc('tecton.element.stepper.scrollRight'), onTctClick: () => this.onScrollBtnClick('right') }, h("q2-icon", { key: 'c656a9493134eb6a4ea0a008ee94829fc708ecfe', type: "chevron-right" })))), h("ul", { key: '09e1472989c7c2e6c40504072bca2790865e013a', onScroll: this.checkScrollState, ref: el => (this.listElement = el), role: "tablist" }, stepCount > 0 && [...Array(stepCount).keys()].map(stepIndex => this.renderStepBtn(stepIndex)))), h("div", { key: '0b25c172d585892aa9e286dac6080ce2bbb80e1a', role: "list" }, h("slot", { key: '507375368c8e89a94f8af0a44bf4951fd14d7466', onSlotchange: () => this.onSlotChange() }))));
298
+ return (h(Fragment, { key: 'c9839ff458e2d71fb66c42cb5b4ae394c7ffb9ff' }, h("div", { key: '51d8a914662c2794e16928c971ef995bca933776', class: containerClasses.join(' ') }, scrollEnabled && (h(Fragment, { key: '0b1d1dd0c973d2266a468a8f81d0c9bdd2a430cc' }, h("div", { key: '87b9ae7e5ab260ee8743e78302017389941c3ead', class: "gradient-left", hidden: !showScrollLeft }), h("div", { key: 'a5d487517c497ae927a1fd05d7c4631aa00d76bf', class: "gradient-right", hidden: !showScrollRight }), h("q2-btn", { key: 'fe008283e673c2b51acf1cc654ed1c844a6d33bf', class: "btn-left", hideLabel: true, hidden: !this.showScrollLeft, label: loc('tecton.element.stepper.scrollLeft'), onTctClick: () => this.onScrollBtnClick('left') }, h("q2-icon", { key: '7d83dfafb861da55085fa33a4aca620416849e27', type: "chevron-left" })), h("q2-btn", { key: 'c81adb720c387ddabb7eead010db863b0e295208', class: "btn-right", hideLabel: true, hidden: !this.showScrollRight, label: loc('tecton.element.stepper.scrollRight'), onTctClick: () => this.onScrollBtnClick('right') }, h("q2-icon", { key: 'c0d5939662d35c18ea9c486a1dc8da243b779ea2', type: "chevron-right" })))), h("ul", { key: '07501b7abbe4e828686b87c057b79bae4059e826', onScroll: this.checkScrollState, ref: el => (this.listElement = el), role: "tablist" }, stepCount > 0 && [...Array(stepCount).keys()].map(stepIndex => this.renderStepBtn(stepIndex)))), h("div", { key: 'df8d51e7b40ee1999b0a280fa8524559accfec9a', role: "list" }, h("slot", { key: 'a8ce54b65b8c7d8542e60811a7215fed12400e38', onSlotchange: () => this.onSlotChange() }))));
299
299
  }
300
300
  static get is() { return "q2-stepper"; }
301
301
  static get encapsulation() { return "shadow"; }
@@ -73,7 +73,7 @@ export class Q2StepperPane {
73
73
  // #region Render Methods
74
74
  render() {
75
75
  const { label, isActive } = this;
76
- return (h(Host, { key: '7acf643f717380c37eb25334534afbca81ac8ab6', role: "listitem" }, h(Fragment, { key: '0241a9ad68973eea81c961070d6171dab3241f79' }, h("div", { key: '25e9a406b8c0672eec836920706d44ed53906e1d', "aria-label": label && loc(label), tabindex: "0", hidden: !isActive && !(this.isChildActive && this.showWithChildren) }, h("slot", { key: '00f456ab21d2ecf58946de5df397bb3c81c2a749' })), h("div", { key: 'bdac4c2caf9b9bf5a6280258475afa552e578e7e', hidden: true }, h("slot", { key: '2ede75ad70c10eda1f8c6de4556bccc9c66e8b97', name: "label", onSlotchange: () => this.contentChange.emit() }), h("slot", { key: '990f2d44a0f9cb0437b63f3570a94874752a94da', name: "description", onSlotchange: () => this.contentChange.emit() })), h("slot", { key: '1f12d65608f73a3737abb7f987cab300ec1c9856', name: "children" }))));
76
+ return (h(Host, { key: '6cbcc9f6363bf6f60ff2d999b9317e32691168da', role: "listitem" }, h(Fragment, { key: 'f9b8d56b05e6d26978feab6386849498f797cca6' }, h("div", { key: '383a77ce1848255574680375e7df122bf4468f95', role: "group", "aria-labelledby": "pane-label", tabindex: "0", hidden: !isActive && !(this.isChildActive && this.showWithChildren) }, h("slot", { key: '9b9cf0bd60e23d9860174c5525c3f688c70411f4' })), h("div", { key: '8f628fe11acfc7a8df7c84013a7eaca9d5a1327a', hidden: true }, h("span", { key: '6c03721fb71d8e3c5c48a6af80ae8723575e0205', id: "pane-label" }, h("slot", { key: 'da9a253e3399d0552478a29c743fc4a73f432ddf', name: "label", onSlotchange: () => this.contentChange.emit() }, label && loc(label))), h("slot", { key: 'd7229f76aedb1c96623fac655982b88d2769b9ae', name: "description", onSlotchange: () => this.contentChange.emit() })), h("slot", { key: '7670d7b17b74732d0dd14198dd50560d005700d1', name: "children" }))));
77
77
  }
78
78
  static get is() { return "q2-stepper-pane"; }
79
79
  static get encapsulation() { return "shadow"; }
@@ -325,7 +325,7 @@ export class Q2StepperVertical {
325
325
  return (h("li", { role: "presentation" }, h("button", { class: stepClasses.join(' '), type: "button", "aria-labelledby": labelledBy, "aria-describedBy": descriptionId, "aria-label": btnLabel, "aria-selected": `${isCurrentStep}`, "aria-expanded": !!pane.children.length ? `${isExpanded}` : null, id: id, "aria-disabled": isLocked ? 'true' : null, role: "tab", tabIndex: isCurrentStep ? 0 : -1, onKeyDown: ev => !isLocked && this.onStepKeyDown(ev, id), onClick: ev => !isPaneDisabled && !isLocked && this.onStepClick(ev, id) }, label && (h(Fragment, null, h("span", { class: "sr-only", id: positionId }, positionLabel), h("span", { class: "sr-only", id: statusId }, statusLabel))), statusIcon ? (h("div", { class: "step-icon" }, h("q2-icon", { "aria-hidden": "true", type: statusIcon }))) : (h("div", { class: "step-bubble" }, stepNumber)), label && (h("div", null, h("div", { class: "step-label", id: labelId, innerHTML: sanitizeHTMLString(stepLabel) }), description && (h("div", { class: "step-description", id: descriptionId, innerHTML: sanitizeHTMLString(description) }))))), this.renderSpacer(pane, isExpanded, isLastStep)));
326
326
  }
327
327
  render() {
328
- return (h(Fragment, { key: 'eab8d8816aebfb5aa104a17b75dc0e8b4ed4ce68' }, h("ul", { key: 'f155624641313e8375e6ee448fed150ae0c62cf1', role: "tablist" }, this.structuredPanes.map((pane, index) => this.renderStepBtn(pane, index))), h("div", { key: '1ff078e00dcb1e4c861bc691ccc31ec5c1436fac', role: "list" }, h("slot", { key: 'adf07ae0725ccc7c1ce149052f2325e6bfc01677' }))));
328
+ return (h(Fragment, { key: '318ce778645240cfb969f39c7df5326691b6c5ed' }, h("ul", { key: '3af2a138e648b887b3d8f96cf2b06bb6f11d1159', role: "tablist" }, this.structuredPanes.map((pane, index) => this.renderStepBtn(pane, index))), h("div", { key: '628d3fb7485c7648d31b7a4935476a61cdfef7b4', role: "list" }, h("slot", { key: '9d616d4a7234dee7715a696d0a17d37914741b1a' }))));
329
329
  }
330
330
  static get is() { return "q2-stepper-vertical"; }
331
331
  static get encapsulation() { return "shadow"; }
@@ -84,7 +84,7 @@ export class Q2Surface {
84
84
  // #endregion
85
85
  // #region Render Methods
86
86
  render() {
87
- return (h(Host, { key: '992667ac1d625dff77a01d06d058865f99d8d190' }, h("div", { key: 'd58162c346c58a2cc21a4334c08b6cc4a53ed2e0', class: "container", role: this.clickable ? 'button' : undefined, tabIndex: this.clickable ? 0 : undefined }, h("slot", { key: 'b70930390799484c71da93d1f801ecc681d168c6' }))));
87
+ return (h(Host, { key: 'ee34e7472208140fc2203e0494140778c0c16756' }, h("div", { key: '0909c642dd27cbc96f7a8ea25f5d7f712395ed19', class: "container", role: this.clickable ? 'button' : undefined, tabIndex: this.clickable ? 0 : undefined }, h("slot", { key: 'fbba5735e98b065121f0b73ef926b6546aeab82c' }))));
88
88
  }
89
89
  static get is() { return "q2-surface"; }
90
90
  static get encapsulation() { return "shadow"; }
@@ -105,8 +105,8 @@ const VARIANTS = [
105
105
  html: `<q2-surface border="default" inset="normal" radius="2">
106
106
  <p>Body copy above the action group.</p>
107
107
  <q2-action-group>
108
- <q2-btn intent="workflow-primary">Confirm</q2-btn>
109
- <q2-btn intent="workflow-secondary">Cancel</q2-btn>
108
+ <q2-btn intent="primary">Confirm</q2-btn>
109
+ <q2-btn intent="secondary">Cancel</q2-btn>
110
110
  </q2-action-group>
111
111
  </q2-surface>`,
112
112
  states: ['resting'],
@@ -335,7 +335,7 @@ export class Q2TabContainer {
335
335
  }
336
336
  render() {
337
337
  const isVertical = this.computedOrientation === 'vertical';
338
- return (h(Fragment, { key: '710b889bd81a28f6ba7c0deb43abe49a269baec4' }, h("div", { key: '444efee6412d2440c99bd1e9b123fe385f2453a5', class: "tab-container" }, this.scrollEnabled && (h(Fragment, { key: '56c9916fb99dd3434a8305721d03e85c0f5fb370' }, h("div", { key: 'c506eb6690b60194b50171ad5139cc65b4fabedd', class: "gradient-left", hidden: !this.showScrollBack }), h("div", { key: '7af01eb18190e0af6fb80364fb73dcf6145d979d', class: "gradient-right", hidden: !this.showScrollForward }), h("q2-btn", { key: '8cb5f49e48c119d32b196e3ecc7e8a018acc7aa0', class: "btn-left", hidden: !this.showScrollBack, onTctClick: () => this.onScrollBtnClick('back') }, h("q2-icon", { key: '65f3caea2251c7ce96861718df064f230ec6e02e', type: isVertical ? 'chevron-up' : 'chevron-left', label: isVertical ? 'scroll up' : 'scroll left' })), h("q2-btn", { key: '07b833fe0e6b3030255374e4dd323fc99379a293', class: "btn-right", hidden: !this.showScrollForward, onTctClick: () => this.onScrollBtnClick('forward') }, h("q2-icon", { key: 'e446b55822239e657ab10c50694a9756ec8b030b', type: isVertical ? 'chevron-down' : 'chevron-right', label: isVertical ? 'scroll down' : 'scroll right' })))), h("ul", { key: '20d4f371b80b2515b762e80b88574938783e9252', onScroll: this.checkScrollState, ref: el => (this.listElement = el), class: this.noPrint ? 'no-print' : null, role: "tablist", "aria-orientation": this.computedOrientation }, this.tabs.map((tab, index) => this.renderTab(tab, index)))), h("div", { key: '9eaba5d408629dc548a9c57428b801293f642172', class: "tab-content" }, h("slot", { key: '811737fa0e22c994299c9164a6401209e6ecf418', onSlotchange: () => this.onSlotChange() }))));
338
+ return (h(Fragment, { key: '03d43399332adeda98bb8d9e20053a9c6d49fcce' }, h("div", { key: 'e0a8ef7f09a83f703a4b20f54c32522ddb1c5c50', class: "tab-container" }, this.scrollEnabled && (h(Fragment, { key: 'ad75ef49a54bfe0f862e19123e2a4770e17bf4a2' }, h("div", { key: '0a699d7dff2af9e01eb0c9a4727c0aa586068d97', class: "gradient-left", hidden: !this.showScrollBack }), h("div", { key: '758388b43d96757cd402eac4c8c881b20853e8d2', class: "gradient-right", hidden: !this.showScrollForward }), h("q2-btn", { key: '0738c515ffc60c9fb82941ce1cb104924c3a85ef', class: "btn-left", hidden: !this.showScrollBack, onTctClick: () => this.onScrollBtnClick('back') }, h("q2-icon", { key: '95820c6bad13d98ad94e4722026b00e1fedb720e', type: isVertical ? 'chevron-up' : 'chevron-left', label: isVertical ? 'scroll up' : 'scroll left' })), h("q2-btn", { key: '2aabca6f28a8acffd6565870b56424c410f4ebae', class: "btn-right", hidden: !this.showScrollForward, onTctClick: () => this.onScrollBtnClick('forward') }, h("q2-icon", { key: '94561888012314b3e3503c7f0b64444f3a7b7c96', type: isVertical ? 'chevron-down' : 'chevron-right', label: isVertical ? 'scroll down' : 'scroll right' })))), h("ul", { key: 'd58936a795d74807740d291b93bb739d66fbbe24', onScroll: this.checkScrollState, ref: el => (this.listElement = el), class: this.noPrint ? 'no-print' : null, role: "tablist", "aria-orientation": this.computedOrientation }, this.tabs.map((tab, index) => this.renderTab(tab, index)))), h("div", { key: 'ccd952b3f0ef0e639e0f86957841ad548fe65eb5', class: "tab-content" }, h("slot", { key: '24deecd3894184e816d1d8c5e5257aab382ed055', onSlotchange: () => this.onSlotChange() }))));
339
339
  }
340
340
  static get is() { return "q2-tab-container"; }
341
341
  static get encapsulation() { return "shadow"; }
@@ -19,7 +19,7 @@ export class Q2TabPane {
19
19
  // #endregion
20
20
  // #region Render Methods
21
21
  render() {
22
- return (h("div", { key: '1957cbeca0ca1f0b5f840701286ebeb6b69565ce', id: `tab-pane-${this.guid}-${this.index}`, class: `tab-pane${this.selected ? '' : ' hidden'}`, role: "tabpanel", tabindex: "-1", "aria-hidden": `${!this.selected}`, "aria-labelledby": `tab-${this.guid}-${this.index}` }, h("slot", { key: '6772ac75d219ebc30209907468a9fb801cd5db0d' })));
22
+ return (h("div", { key: 'a1ca82c1b98634b33d0ded7c459e151bbcba82ab', id: `tab-pane-${this.guid}-${this.index}`, class: `tab-pane${this.selected ? '' : ' hidden'}`, role: "tabpanel", tabindex: "-1", "aria-hidden": `${!this.selected}`, "aria-labelledby": `tab-${this.guid}-${this.index}` }, h("slot", { key: '4893e7153f387cfa726ba354cb53274d8f907b94' })));
23
23
  }
24
24
  static get is() { return "q2-tab-pane"; }
25
25
  static get encapsulation() { return "shadow"; }
@@ -132,11 +132,14 @@ export class Q2Tag {
132
132
  this.dropdownBtn.focus();
133
133
  }
134
134
  popoverStateHandler({ detail: { open } }) {
135
- if (this.open !== open)
136
- this.open = open;
135
+ var _a;
136
+ if (this.open === open)
137
+ return;
138
+ this.open = open;
137
139
  if (open)
138
140
  return;
139
141
  this.optionList.setActiveElement(null);
142
+ (_a = this.dropdownBtn) === null || _a === void 0 ? void 0 : _a.focus();
140
143
  }
141
144
  // #endregion
142
145
  // #region Public Methods API
@@ -194,7 +197,7 @@ export class Q2Tag {
194
197
  if (this.optionCount)
195
198
  wrapperClassNames.push('has-options');
196
199
  const shouldShowOptions = this.optionCount > 0;
197
- return (h(Host, { key: 'b7b199109ef756942f6cf76aff904a21ba406998' }, h("click-elsewhere", { key: 'f4a5ec911c582d480e5d7d91638d681ba6c054c8', onChange: this.onClickElsewhere }, shouldShowOptions ? (h(Fragment, null, h("button", { class: "tag-wrapper", ref: el => (this.dropdownBtn = el), "test-id": "btn-control", type: "button", role: "combobox", onClick: this.handleClick, onKeyDown: this.handleKeydown, onFocusout: this.handleButtonFocusout, "aria-controls": "option-list", "aria-expanded": open ? 'true' : 'false', "aria-describedby": "option-description", "aria-label": loc(this.label) }, h("div", { class: wrapperClassNames.join(' ') }, loc(this.label)), h("q2-icon", { type: "options" })), this.renderHiddenElement())) : (h("div", { class: "tag-wrapper", onClick: e => e.stopPropagation() }, h("div", { class: wrapperClassNames.join(' ') }, h("slot", { name: "decorator" }), loc(this.label)))), shouldShowOptions && (h("q2-popover", { key: '046a9aae077ed9800b081ce70aa5d03f0d919cff', ref: el => (this.popoverElement = el), controlElement: this.dropdownBtn, open: this.open, maxHeight: this.popoverMaxHeight, minHeight: this.popoverMinHeight, direction: this.popoverDirection, align: this.popoverAlignment }, h("q2-option-list", { key: '63899f97a13db69ed8776214ca6670e825663c5a', id: "option-list", ref: el => (this.optionList = el), onChange: this.handleChange, type: "menu", align: "right", label: loc('tecton.element.optionList.label', [this.optionListLabel]), "no-select": true }, h("slot", { key: '40fa7c27a8b27ae2c5f894bbe1ae6e51ab1b55f0' })))))));
200
+ return (h(Host, { key: 'a18af83301ac8bf08d1638b05d4dd8795f11cd46' }, h("click-elsewhere", { key: '130d173a4bf53dd6eec1775944d910c630e704ae', onChange: this.onClickElsewhere }, shouldShowOptions ? (h(Fragment, null, h("button", { class: "tag-wrapper", ref: el => (this.dropdownBtn = el), "test-id": "btn-control", type: "button", role: "combobox", onClick: this.handleClick, onKeyDown: this.handleKeydown, onFocusout: this.handleButtonFocusout, "aria-controls": "option-list", "aria-expanded": open ? 'true' : 'false', "aria-describedby": "option-description", "aria-label": loc(this.label) }, h("div", { class: wrapperClassNames.join(' ') }, loc(this.label)), h("q2-icon", { type: "options" })), this.renderHiddenElement())) : (h("div", { class: "tag-wrapper", onClick: e => e.stopPropagation() }, h("div", { class: wrapperClassNames.join(' ') }, h("slot", { name: "decorator" }), loc(this.label)))), shouldShowOptions && (h("q2-popover", { key: '07bf52f6b4d8c4bbf42e90e69ff9a9deec82810b', ref: el => (this.popoverElement = el), controlElement: this.dropdownBtn, open: this.open, maxHeight: this.popoverMaxHeight, minHeight: this.popoverMinHeight, direction: this.popoverDirection, align: this.popoverAlignment }, h("q2-option-list", { key: 'eefdf7202c269194a9753e438b4c6060984ba33e', id: "option-list", ref: el => (this.optionList = el), onChange: this.handleChange, type: "menu", align: "right", label: loc('tecton.element.optionList.label', [this.optionListLabel]), "no-select": true }, h("slot", { key: '3067ac9beee239562c410d7dfe4af04c651ef8ae' })))))));
198
201
  }
199
202
  static get is() { return "q2-tag"; }
200
203
  static get encapsulation() { return "shadow"; }
@@ -277,7 +277,7 @@ export class Q2Textarea {
277
277
  ]))));
278
278
  }
279
279
  render() {
280
- return (h("div", { key: '9b3eb74c84edd99af52a0ec71ba8b2fd8adbd1f2', class: this.wrapperClasses }, renderLabel(this), h("div", { key: 'a00772502ea6c1fde5af5bf4c12f0606a629252a', class: "content-container", ref: el => (this.contentContainer = el) }, this.renderInput(), this.maxlength ? this.renderMaxLength() : '', renderMessages(this))));
280
+ return (h("div", { key: '21a303feabd0c8fc09d9cc7f0de8b9b50081a56a', class: this.wrapperClasses }, renderLabel(this), h("div", { key: '58b5be24312fe523d09efe176b1ecf42b884166a', class: "content-container", ref: el => (this.contentContainer = el) }, this.renderInput(), this.maxlength ? this.renderMaxLength() : '', renderMessages(this))));
281
281
  }
282
282
  static get is() { return "q2-textarea"; }
283
283
  static get encapsulation() { return "shadow"; }
@@ -364,9 +364,9 @@ export class Q2Textarea {
364
364
  "docs": {
365
365
  "tags": [{
366
366
  "name": "warning",
367
- "text": "Only use when a visible label is impractical."
367
+ "text": "Hides the label visually. `label` text is still required for screenreader compliance."
368
368
  }],
369
- "text": "Hide's the field's `<label>` element from view."
369
+ "text": "Hides the field's `<label>` element from view."
370
370
  },
371
371
  "getter": false,
372
372
  "setter": false,
@@ -427,6 +427,9 @@ export class Q2Textarea {
427
427
  "optional": false,
428
428
  "docs": {
429
429
  "tags": [{
430
+ "name": "warning",
431
+ "text": "Required for screen reader compliance even when `hideLabel` is `true`."
432
+ }, {
430
433
  "name": "localizable",
431
434
  "text": undefined
432
435
  }],
@@ -1,7 +1,7 @@
1
1
  import { expect } from "@playwright/test";
2
2
  import { test } from "@stencil/playwright";
3
3
  import { setupPage, THEMES, FONT_SCALE_PX, FONT_SCALE_SUFFIX } from "../../../utils/test/vr-helpers";
4
- const TRIGGER = `<q2-btn intent="workflow-primary"><span>Trigger</span></q2-btn>`;
4
+ const TRIGGER = `<q2-btn intent="primary"><span>Trigger</span></q2-btn>`;
5
5
  // Pad the wrapper so the tooltip has room to render in any direction without clipping.
6
6
  const wrap = (inner) => `<div style="padding: 80px; display: inline-block;">${inner}</div>`;
7
7
  // Use `immediate` so hover doesn't have to wait through the 1s delay before the
@@ -17,7 +17,9 @@ export class TectonTabPane {
17
17
  const loadingWrapper = this.hostElement.shadowRoot.querySelector('.loading-wrapper');
18
18
  /* istanbul ignore next */
19
19
  if (loadingWrapper) {
20
- loadingWrapper.style.minHeight = this.minHeight;
20
+ if (loadingWrapper.querySelector('.q2-row')) {
21
+ loadingWrapper.style.minHeight = this.minHeight;
22
+ }
21
23
  loadingWrapper.hidden = !this.selected;
22
24
  }
23
25
  }
@@ -49,9 +51,9 @@ export class TectonTabPane {
49
51
  // #endregion
50
52
  // #region Render Methods
51
53
  render() {
52
- return (h("div", { key: '68c7250777ec0c700107df4997634d4aee8f8e91', id: `tab-pane-${this.guid}-${this.index}`, class: `tab-pane${this.selected ? '' : ' hidden'}`, role: "tabpanel", tabindex: "-1", "aria-hidden": `${!this.selected}`, "aria-labelledby": `tab-${this.guid}-${this.index}` }, this.selected && this.provided !== undefined && !this.provided && (h("div", { key: '7b8c74b691fc1c599766900125e09afe79e53859' }, h("slot", { key: 'bbf7c58bef21ab334059655e958e976b9bdf327e', name: "loading-wrapper" }), h("iframe", { key: '6a262f757dd78294fcf49242b337b02c13842ee8', hidden: true, name: this.moduleId, scrolling: "no", src: this.showForm && this.authPayload.length ? '' : this.url || '', "data-module-id": this.moduleId, style: this.minHeight ? { minHeight: this.minHeight } : null, onLoad: this.onIFrameLoad, title: this.iframeTitle, allow: "geolocation; camera" }), this._showForm && this.authPayload ? (h("form", { hidden: true, method: "post", action: this.url, target: this.moduleId, encType: "multipart/form-data" }, this.authPayload.map(element => {
54
+ return (h("div", { key: 'b55643965ef49af2e41a683686db00b97e1c90b7', id: `tab-pane-${this.guid}-${this.index}`, class: `tab-pane${this.selected ? '' : ' hidden'}`, role: "tabpanel", tabindex: "-1", "aria-hidden": `${!this.selected}`, "aria-labelledby": `tab-${this.guid}-${this.index}` }, this.selected && this.provided !== undefined && !this.provided && (h("div", { key: 'f04f1594eba66d962d9adbab48bf3559f658c650' }, h("slot", { key: '08804102412a6b57ac9b9db2002d1608f8b22c19', name: "loading-wrapper" }), h("iframe", { key: 'a2524435de8072fb27ebdcc9762a1f20367df098', hidden: true, name: this.moduleId, scrolling: "no", src: this.showForm && this.authPayload.length ? '' : this.url || '', "data-module-id": this.moduleId, style: this.minHeight ? { minHeight: this.minHeight } : null, onLoad: this.onIFrameLoad, title: this.iframeTitle, allow: "geolocation; camera" }), this._showForm && this.authPayload ? (h("form", { hidden: true, method: "post", action: this.url, target: this.moduleId, encType: "multipart/form-data" }, this.authPayload.map(element => {
53
55
  return (h("input", { type: "hidden", value: element.value, name: element.key }));
54
- }))) : (''))), h("div", { key: 'd9be64623c99011b7f30256d0abfaeab23f72c00', class: "slot-wrapper", hidden: this.selected && this.provided !== undefined && !this.provided }, h("slot", { key: 'a1a3a9772b2875c7d4ab510e9014d99b6e036ad3' }))));
56
+ }))) : (''))), h("div", { key: '59e9d5ddbabadb0e66615d998403d267c259f937', class: "slot-wrapper", hidden: this.selected && this.provided !== undefined && !this.provided }, h("slot", { key: '450c5724cf32ba05a2fc93b8adeba83b08e871e4' }))));
55
57
  }
56
58
  static get is() { return "tecton-tab-pane"; }
57
59
  static get encapsulation() { return "shadow"; }
@@ -0,0 +1,76 @@
1
+ import { loc } from "./index";
2
+ /** Localized feedback shared by chart keyboard controls. */
3
+ export function chartPointDescription(name, value, index, count) {
4
+ return loc('tecton.element.chart.pointDescription', [loc(name) || '', value, `${index + 1}`, `${count}`]);
5
+ }
6
+ /** Coordinates keyboard exploration with ECharts emphasis without changing chart data. */
7
+ export function createChartKeyboardNavigation(options) {
8
+ let index = null;
9
+ let focused = false;
10
+ const clear = () => {
11
+ var _a;
12
+ if (index !== null) {
13
+ (_a = options.getChart()) === null || _a === void 0 ? void 0 : _a.dispatchAction({ type: 'downplay', seriesIndex: 0, dataIndex: index });
14
+ }
15
+ index = null;
16
+ options.onChange(null);
17
+ };
18
+ const select = (next) => {
19
+ var _a;
20
+ if (!options.getData()[next] || next === index)
21
+ return;
22
+ clear();
23
+ index = next;
24
+ (_a = options.getChart()) === null || _a === void 0 ? void 0 : _a.dispatchAction({ type: 'highlight', seriesIndex: 0, dataIndex: index });
25
+ options.onChange(index);
26
+ };
27
+ const order = () => { var _a, _b; return (_b = (_a = options.getOrder) === null || _a === void 0 ? void 0 : _a.call(options)) !== null && _b !== void 0 ? _b : options.getData().map((_, i) => i); };
28
+ return {
29
+ onFocus: () => {
30
+ focused = true;
31
+ select(order()[0]);
32
+ },
33
+ onBlur: () => {
34
+ focused = false;
35
+ clear();
36
+ },
37
+ onKeyDown: (event) => {
38
+ if (event.altKey || event.ctrlKey || event.metaKey || event.shiftKey)
39
+ return;
40
+ const indices = order();
41
+ if (!indices.length)
42
+ return;
43
+ const position = index === null ? -1 : indices.indexOf(index);
44
+ let next;
45
+ switch (event.key) {
46
+ case 'ArrowRight':
47
+ case 'ArrowDown':
48
+ next = Math.min(position + 1, indices.length - 1);
49
+ break;
50
+ case 'ArrowLeft':
51
+ case 'ArrowUp':
52
+ next = Math.max(position - 1, 0);
53
+ break;
54
+ case 'Home':
55
+ next = 0;
56
+ break;
57
+ case 'End':
58
+ next = indices.length - 1;
59
+ break;
60
+ case 'Escape':
61
+ event.preventDefault();
62
+ clear();
63
+ return;
64
+ default:
65
+ return;
66
+ }
67
+ event.preventDefault();
68
+ select(indices[next]);
69
+ },
70
+ refresh: () => {
71
+ clear();
72
+ if (focused)
73
+ select(order()[0]);
74
+ },
75
+ };
76
+ }