q2-tecton-elements 1.52.4 → 1.52.6

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 (418) hide show
  1. package/dist/cjs/click-elsewhere_2.cjs.entry.js +73 -69
  2. package/dist/cjs/click-elsewhere_2.cjs.entry.js.map +1 -1
  3. package/dist/cjs/{index-07285783.js → index-7aecfed8.js} +30 -18
  4. package/dist/cjs/index-7aecfed8.js.map +1 -0
  5. package/dist/cjs/loader.cjs.js +1 -1
  6. package/dist/cjs/q2-action-group.cjs.entry.js +2 -2
  7. package/dist/cjs/q2-action-sheet.cjs.entry.js +2 -2
  8. package/dist/cjs/q2-avatar.cjs.entry.js +1 -1
  9. package/dist/cjs/q2-badge_7.cjs.entry.js +4 -4
  10. package/dist/cjs/q2-calendar.cjs.entry.js +1 -1
  11. package/dist/cjs/q2-card.cjs.entry.js +1 -1
  12. package/dist/cjs/q2-carousel-pane.cjs.entry.js +3 -3
  13. package/dist/cjs/q2-carousel.cjs.entry.js +1 -1
  14. package/dist/cjs/q2-chart-area.cjs.entry.js +2 -2
  15. package/dist/cjs/q2-chart-bar.cjs.entry.js +2 -2
  16. package/dist/cjs/q2-chart-donut.cjs.entry.js +2 -2
  17. package/dist/cjs/q2-checkbox-group.cjs.entry.js +1 -1
  18. package/dist/cjs/q2-checkbox.cjs.entry.js +1 -1
  19. package/dist/cjs/q2-currency.cjs.entry.js +1 -1
  20. package/dist/cjs/q2-data-table.cjs.entry.js +1 -1
  21. package/dist/cjs/q2-detail.cjs.entry.js +2 -2
  22. package/dist/cjs/q2-dropdown-item.cjs.entry.js +1 -1
  23. package/dist/cjs/q2-dropdown.cjs.entry.js +4 -2
  24. package/dist/cjs/q2-dropdown.cjs.entry.js.map +1 -1
  25. package/dist/cjs/q2-editable-field.cjs.entry.js +1 -1
  26. package/dist/cjs/q2-example.cjs.entry.js +1 -1
  27. package/dist/cjs/q2-formatted-text.cjs.entry.js +1 -1
  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 +1 -1
  36. package/dist/cjs/q2-option.cjs.entry.js +2 -2
  37. package/dist/cjs/q2-pagination.cjs.entry.js +4 -4
  38. package/dist/cjs/q2-pill.cjs.entry.js +2 -2
  39. package/dist/cjs/q2-radio-group.cjs.entry.js +1 -1
  40. package/dist/cjs/q2-radio.cjs.entry.js +1 -1
  41. package/dist/cjs/q2-relative-time.cjs.entry.js +2 -2
  42. package/dist/cjs/q2-resize-observer.cjs.entry.js +1 -1
  43. package/dist/cjs/q2-section.cjs.entry.js +3 -3
  44. package/dist/cjs/q2-select.cjs.entry.js +131 -14
  45. package/dist/cjs/q2-select.cjs.entry.js.map +1 -1
  46. package/dist/cjs/q2-stepper-pane.cjs.entry.js +1 -1
  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-tag.cjs.entry.js +2 -2
  50. package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
  51. package/dist/cjs/q2-textarea.cjs.entry.js +2 -2
  52. package/dist/cjs/q2-tooltip.cjs.entry.js +1 -1
  53. package/dist/cjs/tecton-tab-pane.cjs.entry.js +2 -2
  54. package/dist/collection/components/click-elsewhere/click-elsewhere.js.map +1 -1
  55. package/dist/collection/components/click-elsewhere/test/click-elsewhere-test.e2e.js.map +1 -1
  56. package/dist/collection/components/q2-action-group/q2-action-group.js +1 -1
  57. package/dist/collection/components/q2-action-group/q2-action-group.js.map +1 -1
  58. package/dist/collection/components/q2-action-group/test/q2-action-group.e2e.js.map +1 -1
  59. package/dist/collection/components/q2-action-group/test/q2-action-group.spec.js.map +1 -1
  60. package/dist/collection/components/q2-action-sheet/q2-action-sheet.js +1 -1
  61. package/dist/collection/components/q2-action-sheet/q2-action-sheet.js.map +1 -1
  62. package/dist/collection/components/q2-action-sheet/test/q2-action-sheet-test.e2e.js.map +1 -1
  63. package/dist/collection/components/q2-avatar/q2-avatar.js +1 -1
  64. package/dist/collection/components/q2-avatar/q2-avatar.js.map +1 -1
  65. package/dist/collection/components/q2-avatar/test/q2-avatar-test.e2e.js.map +1 -1
  66. package/dist/collection/components/q2-badge/q2-badge.js.map +1 -1
  67. package/dist/collection/components/q2-badge/test/q2-badge-test.e2e.js.map +1 -1
  68. package/dist/collection/components/q2-btn/q2-btn.js.map +1 -1
  69. package/dist/collection/components/q2-btn/test/q2-btn-test.e2e.js.map +1 -1
  70. package/dist/collection/components/q2-calendar/q2-calendar-helpers.js.map +1 -1
  71. package/dist/collection/components/q2-calendar/q2-calendar-types.js.map +1 -1
  72. package/dist/collection/components/q2-calendar/q2-calendar-validation.js.map +1 -1
  73. package/dist/collection/components/q2-calendar/q2-calendar.js.map +1 -1
  74. package/dist/collection/components/q2-calendar/q2-month-picker.js +2 -2
  75. package/dist/collection/components/q2-calendar/q2-month-picker.js.map +1 -1
  76. package/dist/collection/components/q2-calendar/test/helpers-test.e2e.js.map +1 -1
  77. package/dist/collection/components/q2-calendar/test/q2-calendar-month-picker-test.e2e.js.map +1 -1
  78. package/dist/collection/components/q2-calendar/test/q2-calendar-test.e2e.js +2 -2
  79. package/dist/collection/components/q2-calendar/test/q2-calendar-test.e2e.js.map +1 -1
  80. package/dist/collection/components/q2-calendar/test/validation-test.e2e.js.map +1 -1
  81. package/dist/collection/components/q2-card/q2-card.js.map +1 -1
  82. package/dist/collection/components/q2-card/test/q2-card-test.e2e.js.map +1 -1
  83. package/dist/collection/components/q2-carousel/q2-carousel.js.map +1 -1
  84. package/dist/collection/components/q2-carousel/test/q2-carousel-test.e2e.js.map +1 -1
  85. package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.js +2 -2
  86. package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.js.map +1 -1
  87. package/dist/collection/components/q2-carousel-pane/test/q2-carousel-pane-test.e2e.js.map +1 -1
  88. package/dist/collection/components/q2-carousel-pane/test/q2-carousel-pane-test.spec.js.map +1 -1
  89. package/dist/collection/components/q2-chart-area/q2-chart-area.js +1 -1
  90. package/dist/collection/components/q2-chart-area/q2-chart-area.js.map +1 -1
  91. package/dist/collection/components/q2-chart-area/test/q2-chart-area-test.e2e.js.map +1 -1
  92. package/dist/collection/components/q2-chart-bar/q2-chart-bar.js +1 -1
  93. package/dist/collection/components/q2-chart-bar/q2-chart-bar.js.map +1 -1
  94. package/dist/collection/components/q2-chart-bar/test/q2-chart-bar-test.e2e.js.map +1 -1
  95. package/dist/collection/components/q2-chart-donut/q2-chart-donut.js +1 -1
  96. package/dist/collection/components/q2-chart-donut/q2-chart-donut.js.map +1 -1
  97. package/dist/collection/components/q2-chart-donut/test/q2-chart-donut-test.e2e.js.map +1 -1
  98. package/dist/collection/components/q2-checkbox/q2-checkbox.js.map +1 -1
  99. package/dist/collection/components/q2-checkbox/test/q2-checkbox-test.e2e.js.map +1 -1
  100. package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.js.map +1 -1
  101. package/dist/collection/components/q2-checkbox-group/test/q2-checkbox-group-test.e2e.js.map +1 -1
  102. package/dist/collection/components/q2-currency/q2-currency.js +1 -1
  103. package/dist/collection/components/q2-currency/q2-currency.js.map +1 -1
  104. package/dist/collection/components/q2-currency/test/q2-currency-test.e2e.js.map +1 -1
  105. package/dist/collection/components/q2-data-table/q2-data-table.js.map +1 -1
  106. package/dist/collection/components/q2-data-table/test/q2-data-table-test.e2e.js.map +1 -1
  107. package/dist/collection/components/q2-detail/q2-detail.js +1 -1
  108. package/dist/collection/components/q2-detail/q2-detail.js.map +1 -1
  109. package/dist/collection/components/q2-detail/test/q2-detail-test.e2e.js.map +1 -1
  110. package/dist/collection/components/q2-dropdown/q2-dropdown.js +3 -1
  111. package/dist/collection/components/q2-dropdown/q2-dropdown.js.map +1 -1
  112. package/dist/collection/components/q2-dropdown/test/q2-dropdown-test.e2e.js +5 -17
  113. package/dist/collection/components/q2-dropdown/test/q2-dropdown-test.e2e.js.map +1 -1
  114. package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.js.map +1 -1
  115. package/dist/collection/components/q2-dropdown-item/test/q2-dropdown-item-test.e2e.js.map +1 -1
  116. package/dist/collection/components/q2-editable-field/q2-editable-field.js.map +1 -1
  117. package/dist/collection/components/q2-editable-field/test/q2-editable-field-test.e2e.js.map +1 -1
  118. package/dist/collection/components/q2-example/q2-example.js +1 -1
  119. package/dist/collection/components/q2-example/q2-example.js.map +1 -1
  120. package/dist/collection/components/q2-example/test/q2-example.e2e.js.map +1 -1
  121. package/dist/collection/components/q2-example/test/q2-example.spec.js.map +1 -1
  122. package/dist/collection/components/q2-formatted-text/q2-formatted-text.js +1 -1
  123. package/dist/collection/components/q2-formatted-text/q2-formatted-text.js.map +1 -1
  124. package/dist/collection/components/q2-formatted-text/test/q2-formatted-text-test.e2e.js.map +1 -1
  125. package/dist/collection/components/q2-icon/q2-icon-types.js.map +1 -1
  126. package/dist/collection/components/q2-icon/q2-icon.js.map +1 -1
  127. package/dist/collection/components/q2-icon/test/q2-icon-test.e2e.js.map +1 -1
  128. package/dist/collection/components/q2-input/formatting/alpha.js.map +1 -1
  129. package/dist/collection/components/q2-input/formatting/alpha.spec.js.map +1 -1
  130. package/dist/collection/components/q2-input/formatting/alphanumeric.js.map +1 -1
  131. package/dist/collection/components/q2-input/formatting/alphanumeric.spec.js.map +1 -1
  132. package/dist/collection/components/q2-input/formatting/credit-card.js.map +1 -1
  133. package/dist/collection/components/q2-input/formatting/credit-card.spec.js.map +1 -1
  134. package/dist/collection/components/q2-input/formatting/currency.js.map +1 -1
  135. package/dist/collection/components/q2-input/formatting/currency.spec.js.map +1 -1
  136. package/dist/collection/components/q2-input/formatting/date.js.map +1 -1
  137. package/dist/collection/components/q2-input/formatting/date.spec.js.map +1 -1
  138. package/dist/collection/components/q2-input/formatting/generic.js.map +1 -1
  139. package/dist/collection/components/q2-input/formatting/number.js.map +1 -1
  140. package/dist/collection/components/q2-input/formatting/numeric.js.map +1 -1
  141. package/dist/collection/components/q2-input/formatting/numeric.spec.js.map +1 -1
  142. package/dist/collection/components/q2-input/formatting/phone.js.map +1 -1
  143. package/dist/collection/components/q2-input/formatting/phone.spec.js.map +1 -1
  144. package/dist/collection/components/q2-input/formatting/postal.js.map +1 -1
  145. package/dist/collection/components/q2-input/formatting/postal.spec.js.map +1 -1
  146. package/dist/collection/components/q2-input/formatting/ssn.js.map +1 -1
  147. package/dist/collection/components/q2-input/formatting/ssn.spec.js.map +1 -1
  148. package/dist/collection/components/q2-input/formatting/tin.js.map +1 -1
  149. package/dist/collection/components/q2-input/formatting/tin.spec.js.map +1 -1
  150. package/dist/collection/components/q2-input/q2-input-types.js.map +1 -1
  151. package/dist/collection/components/q2-input/q2-input.js +1 -1
  152. package/dist/collection/components/q2-input/q2-input.js.map +1 -1
  153. package/dist/collection/components/q2-input/test/q2-input-credit-card-test.e2e.js.map +1 -1
  154. package/dist/collection/components/q2-input/test/q2-input-test.e2e.js.map +1 -1
  155. package/dist/collection/components/q2-input/test/q2-input-test.spec.js.map +1 -1
  156. package/dist/collection/components/q2-item/q2-item.js +1 -1
  157. package/dist/collection/components/q2-item/q2-item.js.map +1 -1
  158. package/dist/collection/components/q2-item/test/q2-item-test.e2e.js.map +1 -1
  159. package/dist/collection/components/q2-item/test/q2-item-test.spec.js.map +1 -1
  160. package/dist/collection/components/q2-legend/q2-legend.js +1 -1
  161. package/dist/collection/components/q2-legend/q2-legend.js.map +1 -1
  162. package/dist/collection/components/q2-legend/test/q2-legend-test.e2e.js.map +1 -1
  163. package/dist/collection/components/q2-legend/test/q2-legend-test.spec.js.map +1 -1
  164. package/dist/collection/components/q2-link/q2-link.js.map +1 -1
  165. package/dist/collection/components/q2-link/test/q2-link-test.e2e.js.map +1 -1
  166. package/dist/collection/components/q2-list/q2-list.js +1 -1
  167. package/dist/collection/components/q2-list/q2-list.js.map +1 -1
  168. package/dist/collection/components/q2-list/test/q2-list-test.e2e.js.map +1 -1
  169. package/dist/collection/components/q2-loading/q2-loading.js.map +1 -1
  170. package/dist/collection/components/q2-loading/skeleton/q2-loading-element/index.js.map +1 -1
  171. package/dist/collection/components/q2-loading/skeleton/shapes.js.map +1 -1
  172. package/dist/collection/components/q2-loading/test/q2-loading-element-test.e2e.js.map +1 -1
  173. package/dist/collection/components/q2-loading/test/q2-loading-test.e2e.js.map +1 -1
  174. package/dist/collection/components/q2-loc/q2-loc.js +1 -1
  175. package/dist/collection/components/q2-loc/q2-loc.js.map +1 -1
  176. package/dist/collection/components/q2-loc/test/q2-loc-test.e2e.js.map +1 -1
  177. package/dist/collection/components/q2-loc/test/q2-loc-test.spec.js.map +1 -1
  178. package/dist/collection/components/q2-message/q2-message.js +1 -1
  179. package/dist/collection/components/q2-message/q2-message.js.map +1 -1
  180. package/dist/collection/components/q2-message/test/q2-message-test.e2e.js.map +1 -1
  181. package/dist/collection/components/q2-optgroup/q2-optgroup.js +1 -1
  182. package/dist/collection/components/q2-optgroup/q2-optgroup.js.map +1 -1
  183. package/dist/collection/components/q2-optgroup/test/q2-optgroup-test.e2e.js.map +1 -1
  184. package/dist/collection/components/q2-option/q2-option.js +1 -1
  185. package/dist/collection/components/q2-option/q2-option.js.map +1 -1
  186. package/dist/collection/components/q2-option/test/q2-option-test.e2e.js.map +1 -1
  187. package/dist/collection/components/q2-option/test/q2-option-test.spec.js.map +1 -1
  188. package/dist/collection/components/q2-option-list/q2-option-list.js.map +1 -1
  189. package/dist/collection/components/q2-option-list/test/q2-option-list-test.e2e.js.map +1 -1
  190. package/dist/collection/components/q2-pagination/q2-pagination.js +3 -3
  191. package/dist/collection/components/q2-pagination/q2-pagination.js.map +1 -1
  192. package/dist/collection/components/q2-pagination/test/q2-pagination-test.e2e.js +1 -0
  193. package/dist/collection/components/q2-pagination/test/q2-pagination-test.e2e.js.map +1 -1
  194. package/dist/collection/components/q2-pill/q2-pill.js +1 -1
  195. package/dist/collection/components/q2-pill/q2-pill.js.map +1 -1
  196. package/dist/collection/components/q2-pill/test/q2-pill-test.e2e.js +1 -1
  197. package/dist/collection/components/q2-pill/test/q2-pill-test.e2e.js.map +1 -1
  198. package/dist/collection/components/q2-popover/q2-popover.css +18 -10
  199. package/dist/collection/components/q2-popover/q2-popover.js +74 -69
  200. package/dist/collection/components/q2-popover/q2-popover.js.map +1 -1
  201. package/dist/collection/components/q2-popover/test/q2-popover-test.e2e.js +1 -34
  202. package/dist/collection/components/q2-popover/test/q2-popover-test.e2e.js.map +1 -1
  203. package/dist/collection/components/q2-popover/test/q2-popover-test.spec.js +902 -511
  204. package/dist/collection/components/q2-popover/test/q2-popover-test.spec.js.map +1 -1
  205. package/dist/collection/components/q2-radio/q2-radio.js.map +1 -1
  206. package/dist/collection/components/q2-radio/test/q2-radio-test.e2e.js.map +1 -1
  207. package/dist/collection/components/q2-radio-group/q2-radio-group.js.map +1 -1
  208. package/dist/collection/components/q2-radio-group/test/q2-radio-group-test.e2e.js.map +1 -1
  209. package/dist/collection/components/q2-relative-time/q2-relative-time.js +1 -1
  210. package/dist/collection/components/q2-relative-time/q2-relative-time.js.map +1 -1
  211. package/dist/collection/components/q2-relative-time/test/q2-relative-time-test.e2e.js.map +1 -1
  212. package/dist/collection/components/q2-resize-observer/q2-resize-observer.js +1 -1
  213. package/dist/collection/components/q2-resize-observer/q2-resize-observer.js.map +1 -1
  214. package/dist/collection/components/q2-resize-observer/test/q2-resize-observer.e2e.js.map +1 -1
  215. package/dist/collection/components/q2-resize-observer/test/q2-resize-observer.spec.js.map +1 -1
  216. package/dist/collection/components/q2-section/q2-section.js +2 -2
  217. package/dist/collection/components/q2-section/q2-section.js.map +1 -1
  218. package/dist/collection/components/q2-section/test/q2-section-test.e2e.js.map +1 -1
  219. package/dist/collection/components/q2-select/q2-select.js +152 -16
  220. package/dist/collection/components/q2-select/q2-select.js.map +1 -1
  221. package/dist/collection/components/q2-select/test/q2-select-test.e2e.js +1 -2
  222. package/dist/collection/components/q2-select/test/q2-select-test.e2e.js.map +1 -1
  223. package/dist/collection/components/q2-select/test/q2-select-test.spec.js +552 -0
  224. package/dist/collection/components/q2-select/test/q2-select-test.spec.js.map +1 -0
  225. package/dist/collection/components/q2-stepper/q2-stepper.js +1 -1
  226. package/dist/collection/components/q2-stepper/q2-stepper.js.map +1 -1
  227. package/dist/collection/components/q2-stepper/test/q2-stepper-test.e2e.js.map +1 -1
  228. package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.js.map +1 -1
  229. package/dist/collection/components/q2-stepper-pane/test/q2-stepper-pane-test.e2e.js.map +1 -1
  230. package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js +1 -1
  231. package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js.map +1 -1
  232. package/dist/collection/components/q2-stepper-vertical/test/q2-stepper-vertical-test.e2e.js.map +1 -1
  233. package/dist/collection/components/q2-tab-container/q2-tab-container.js +1 -1
  234. package/dist/collection/components/q2-tab-container/q2-tab-container.js.map +1 -1
  235. package/dist/collection/components/q2-tab-container/test/q2-tab-container-test.e2e.js.map +1 -1
  236. package/dist/collection/components/q2-tab-container/test/q2-tab-container-test.spec.js.map +1 -1
  237. package/dist/collection/components/q2-tab-pane/q2-tab-pane.js +1 -1
  238. package/dist/collection/components/q2-tab-pane/q2-tab-pane.js.map +1 -1
  239. package/dist/collection/components/q2-tab-pane/test/q2-tab-pane-test.e2e.js.map +1 -1
  240. package/dist/collection/components/q2-tag/q2-tag.js +1 -1
  241. package/dist/collection/components/q2-tag/q2-tag.js.map +1 -1
  242. package/dist/collection/components/q2-tag/test/q2-tag-test.e2e.js +6 -1
  243. package/dist/collection/components/q2-tag/test/q2-tag-test.e2e.js.map +1 -1
  244. package/dist/collection/components/q2-textarea/q2-textarea.js +1 -1
  245. package/dist/collection/components/q2-textarea/q2-textarea.js.map +1 -1
  246. package/dist/collection/components/q2-textarea/test/q2-textarea-test.e2e.js.map +1 -1
  247. package/dist/collection/components/q2-tooltip/q2-tooltip.js.map +1 -1
  248. package/dist/collection/components/q2-tooltip/test/q2-tooltip-test.e2e.js.map +1 -1
  249. package/dist/collection/components/tecton-tab-pane/tecton-tab-pane-types.js.map +1 -1
  250. package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js +2 -2
  251. package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js.map +1 -1
  252. package/dist/collection/components/tecton-tab-pane/test/tecton-tab-pane-test.e2e.js.map +1 -1
  253. package/dist/collection/index.js.map +1 -1
  254. package/dist/collection/utils/action-sheet.js.map +1 -1
  255. package/dist/collection/utils/charting.js.map +1 -1
  256. package/dist/collection/utils/helpers.js.map +1 -1
  257. package/dist/collection/utils/index.js +37 -0
  258. package/dist/collection/utils/index.js.map +1 -1
  259. package/dist/collection/utils/sanitize-html-string.js.map +1 -1
  260. package/dist/collection/utils/sanitize-regex-string.js.map +1 -1
  261. package/dist/collection/utils/test/action-sheet-test.e2e.js.map +1 -1
  262. package/dist/collection/utils/test/index.spec.js.map +1 -1
  263. package/dist/components/index2.js +29 -17
  264. package/dist/components/index2.js.map +1 -1
  265. package/dist/components/q2-action-group.js +1 -1
  266. package/dist/components/q2-action-sheet.js +1 -1
  267. package/dist/components/q2-avatar2.js +1 -1
  268. package/dist/components/q2-carousel-pane.js +2 -2
  269. package/dist/components/q2-chart-area.js +1 -1
  270. package/dist/components/q2-chart-bar.js +1 -1
  271. package/dist/components/q2-chart-donut.js +1 -1
  272. package/dist/components/q2-currency.js +1 -1
  273. package/dist/components/q2-detail.js +1 -1
  274. package/dist/components/q2-dropdown.js +3 -1
  275. package/dist/components/q2-dropdown.js.map +1 -1
  276. package/dist/components/q2-example.js +1 -1
  277. package/dist/components/q2-formatted-text.js +1 -1
  278. package/dist/components/q2-input2.js +1 -1
  279. package/dist/components/q2-item.js +1 -1
  280. package/dist/components/q2-legend2.js +1 -1
  281. package/dist/components/q2-list.js +1 -1
  282. package/dist/components/q2-loc.js +1 -1
  283. package/dist/components/q2-message2.js +1 -1
  284. package/dist/components/q2-month-picker.js +2 -2
  285. package/dist/components/q2-optgroup2.js +1 -1
  286. package/dist/components/q2-option2.js +1 -1
  287. package/dist/components/q2-pagination.js +3 -3
  288. package/dist/components/q2-pill.js +1 -1
  289. package/dist/components/q2-popover2.js +73 -69
  290. package/dist/components/q2-popover2.js.map +1 -1
  291. package/dist/components/q2-relative-time.js +1 -1
  292. package/dist/components/q2-resize-observer2.js +1 -1
  293. package/dist/components/q2-section.js +2 -2
  294. package/dist/components/q2-select2.js +134 -17
  295. package/dist/components/q2-select2.js.map +1 -1
  296. package/dist/components/q2-stepper-vertical.js +1 -1
  297. package/dist/components/q2-stepper.js +1 -1
  298. package/dist/components/q2-tab-container.js +1 -1
  299. package/dist/components/q2-tab-pane.js +1 -1
  300. package/dist/components/q2-tag.js +1 -1
  301. package/dist/components/q2-textarea.js +1 -1
  302. package/dist/components/tecton-tab-pane.js +2 -2
  303. package/dist/esm/click-elsewhere_2.entry.js +73 -69
  304. package/dist/esm/click-elsewhere_2.entry.js.map +1 -1
  305. package/dist/esm/{index-d18e2a20.js → index-99c46474.js} +30 -18
  306. package/dist/esm/index-99c46474.js.map +1 -0
  307. package/dist/esm/loader.js +1 -1
  308. package/dist/esm/q2-action-group.entry.js +2 -2
  309. package/dist/esm/q2-action-sheet.entry.js +2 -2
  310. package/dist/esm/q2-avatar.entry.js +1 -1
  311. package/dist/esm/q2-badge_7.entry.js +4 -4
  312. package/dist/esm/q2-calendar.entry.js +1 -1
  313. package/dist/esm/q2-card.entry.js +1 -1
  314. package/dist/esm/q2-carousel-pane.entry.js +3 -3
  315. package/dist/esm/q2-carousel.entry.js +1 -1
  316. package/dist/esm/q2-chart-area.entry.js +2 -2
  317. package/dist/esm/q2-chart-bar.entry.js +2 -2
  318. package/dist/esm/q2-chart-donut.entry.js +2 -2
  319. package/dist/esm/q2-checkbox-group.entry.js +1 -1
  320. package/dist/esm/q2-checkbox.entry.js +1 -1
  321. package/dist/esm/q2-currency.entry.js +1 -1
  322. package/dist/esm/q2-data-table.entry.js +1 -1
  323. package/dist/esm/q2-detail.entry.js +2 -2
  324. package/dist/esm/q2-dropdown-item.entry.js +1 -1
  325. package/dist/esm/q2-dropdown.entry.js +4 -2
  326. package/dist/esm/q2-dropdown.entry.js.map +1 -1
  327. package/dist/esm/q2-editable-field.entry.js +1 -1
  328. package/dist/esm/q2-example.entry.js +1 -1
  329. package/dist/esm/q2-formatted-text.entry.js +1 -1
  330. package/dist/esm/q2-item.entry.js +2 -2
  331. package/dist/esm/q2-legend.entry.js +1 -1
  332. package/dist/esm/q2-list.entry.js +2 -2
  333. package/dist/esm/q2-loc.entry.js +2 -2
  334. package/dist/esm/q2-message.entry.js +2 -2
  335. package/dist/esm/q2-month-picker.entry.js +3 -3
  336. package/dist/esm/q2-optgroup.entry.js +2 -2
  337. package/dist/esm/q2-option-list.entry.js +1 -1
  338. package/dist/esm/q2-option.entry.js +2 -2
  339. package/dist/esm/q2-pagination.entry.js +4 -4
  340. package/dist/esm/q2-pill.entry.js +2 -2
  341. package/dist/esm/q2-radio-group.entry.js +1 -1
  342. package/dist/esm/q2-radio.entry.js +1 -1
  343. package/dist/esm/q2-relative-time.entry.js +2 -2
  344. package/dist/esm/q2-resize-observer.entry.js +1 -1
  345. package/dist/esm/q2-section.entry.js +3 -3
  346. package/dist/esm/q2-select.entry.js +132 -15
  347. package/dist/esm/q2-select.entry.js.map +1 -1
  348. package/dist/esm/q2-stepper-pane.entry.js +1 -1
  349. package/dist/esm/q2-stepper-vertical.entry.js +2 -2
  350. package/dist/esm/q2-stepper.entry.js +2 -2
  351. package/dist/esm/q2-tag.entry.js +2 -2
  352. package/dist/esm/q2-tecton-elements.js +1 -1
  353. package/dist/esm/q2-textarea.entry.js +2 -2
  354. package/dist/esm/q2-tooltip.entry.js +1 -1
  355. package/dist/esm/tecton-tab-pane.entry.js +2 -2
  356. package/dist/jest.setup.js +33 -0
  357. package/dist/jest.setup.js.map +1 -0
  358. package/dist/q2-tecton-elements/click-elsewhere_2.entry.js +103 -92
  359. package/dist/q2-tecton-elements/click-elsewhere_2.entry.js.map +1 -1
  360. package/dist/q2-tecton-elements/{index-d18e2a20.js → index-99c46474.js} +24 -17
  361. package/dist/q2-tecton-elements/index-99c46474.js.map +1 -0
  362. package/dist/q2-tecton-elements/q2-action-group.entry.js +4 -4
  363. package/dist/q2-tecton-elements/q2-action-sheet.entry.js +34 -34
  364. package/dist/q2-tecton-elements/q2-avatar.entry.js +6 -6
  365. package/dist/q2-tecton-elements/q2-badge_7.entry.js +17 -17
  366. package/dist/q2-tecton-elements/q2-calendar.entry.js +1 -1
  367. package/dist/q2-tecton-elements/q2-card.entry.js +1 -1
  368. package/dist/q2-tecton-elements/q2-carousel-pane.entry.js +21 -21
  369. package/dist/q2-tecton-elements/q2-carousel.entry.js +1 -1
  370. package/dist/q2-tecton-elements/q2-chart-area.entry.js +3 -3
  371. package/dist/q2-tecton-elements/q2-chart-bar.entry.js +80 -80
  372. package/dist/q2-tecton-elements/q2-chart-donut.entry.js +101 -101
  373. package/dist/q2-tecton-elements/q2-checkbox-group.entry.js +1 -1
  374. package/dist/q2-tecton-elements/q2-checkbox.entry.js +1 -1
  375. package/dist/q2-tecton-elements/q2-currency.entry.js +6 -6
  376. package/dist/q2-tecton-elements/q2-data-table.entry.js +1 -1
  377. package/dist/q2-tecton-elements/q2-detail.entry.js +39 -39
  378. package/dist/q2-tecton-elements/q2-dropdown-item.entry.js +1 -1
  379. package/dist/q2-tecton-elements/q2-dropdown.entry.js +13 -11
  380. package/dist/q2-tecton-elements/q2-dropdown.entry.js.map +1 -1
  381. package/dist/q2-tecton-elements/q2-editable-field.entry.js +8 -8
  382. package/dist/q2-tecton-elements/q2-example.entry.js +1 -1
  383. package/dist/q2-tecton-elements/q2-formatted-text.entry.js +2 -2
  384. package/dist/q2-tecton-elements/q2-item.entry.js +13 -13
  385. package/dist/q2-tecton-elements/q2-legend.entry.js +2 -2
  386. package/dist/q2-tecton-elements/q2-list.entry.js +32 -32
  387. package/dist/q2-tecton-elements/q2-loc.entry.js +2 -2
  388. package/dist/q2-tecton-elements/q2-message.entry.js +21 -21
  389. package/dist/q2-tecton-elements/q2-month-picker.entry.js +14 -14
  390. package/dist/q2-tecton-elements/q2-optgroup.entry.js +8 -8
  391. package/dist/q2-tecton-elements/q2-option-list.entry.js +1 -1
  392. package/dist/q2-tecton-elements/q2-option.entry.js +14 -14
  393. package/dist/q2-tecton-elements/q2-pagination.entry.js +34 -34
  394. package/dist/q2-tecton-elements/q2-pill.entry.js +14 -14
  395. package/dist/q2-tecton-elements/q2-radio-group.entry.js +5 -5
  396. package/dist/q2-tecton-elements/q2-radio.entry.js +1 -1
  397. package/dist/q2-tecton-elements/q2-relative-time.entry.js +2 -2
  398. package/dist/q2-tecton-elements/q2-resize-observer.entry.js +1 -1
  399. package/dist/q2-tecton-elements/q2-section.entry.js +19 -19
  400. package/dist/q2-tecton-elements/q2-select.entry.js +197 -93
  401. package/dist/q2-tecton-elements/q2-select.entry.js.map +1 -1
  402. package/dist/q2-tecton-elements/q2-stepper-pane.entry.js +1 -1
  403. package/dist/q2-tecton-elements/q2-stepper-vertical.entry.js +37 -37
  404. package/dist/q2-tecton-elements/q2-stepper.entry.js +29 -29
  405. package/dist/q2-tecton-elements/q2-tag.entry.js +32 -32
  406. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
  407. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js.map +1 -1
  408. package/dist/q2-tecton-elements/q2-textarea.entry.js +3 -3
  409. package/dist/q2-tecton-elements/q2-tooltip.entry.js +1 -1
  410. package/dist/q2-tecton-elements/tecton-tab-pane.entry.js +6 -6
  411. package/dist/types/builds/q2e/development/tecton/tecton/packages/q2-tecton-elements/.stencil/jest.setup.d.ts +10 -0
  412. package/dist/types/components/q2-popover/q2-popover.d.ts +4 -4
  413. package/dist/types/components/q2-select/q2-select.d.ts +23 -0
  414. package/dist/types/utils/index.d.ts +3 -0
  415. package/package.json +3 -3
  416. package/dist/cjs/index-07285783.js.map +0 -1
  417. package/dist/esm/index-d18e2a20.js.map +0 -1
  418. package/dist/q2-tecton-elements/index-d18e2a20.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"q2-tab-container-test.e2e.js","sourceRoot":"","sources":["../../../../src/components/q2-tab-container/test/q2-tab-container-test.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { evaluateA11y, setup, setTestStrings, dispatchEvent, getListOfStyleCompilationIssues } from '@/utils/helpers';\nimport { E2EElement, E2EPage, EventSpy } from '@stencil/core/testing';\n\ndescribe('q2-tab-container', () => {\n const renderTabs = (numberOfSteps: number, value?: number) => {\n return `<q2-tab-container ${value ? `value=\"tab${value}\"` : ''} name=\"tabs\">\n ${[...Array(numberOfSteps).keys()].map(\n index =>\n `<q2-tab-pane value=\"tab${index + 1}\" label=\"Pane ${index + 1}\" name=\"tabs\">Pane ${\n index + 1\n }</q2-tab-pane>`\n )}\n </q2-tab-container>`;\n };\n\n const checkTabStatus = (stepBtn: E2EElement, options?: { selected?: boolean }) => {\n const { selected } = { ...{ selected: false }, ...options };\n\n if (selected) {\n expect(stepBtn).toEqualAttribute('aria-selected', 'true');\n expect(stepBtn).toEqualAttribute('tabindex', '0');\n } else {\n expect(stepBtn).toEqualAttribute('aria-selected', 'false');\n expect(stepBtn).toEqualAttribute('tabindex', '-1');\n }\n };\n\n it('properly compiles CSS vars and functions', async () => {\n const page = await setup({ html: '<q2-tab-container></q2-tab-container>' });\n expect(await getListOfStyleCompilationIssues(page, 'q2-tab-container')).toHaveLength(0);\n });\n\n it('renders shadow DOM elements and correct tab controls', async () => {\n const page = await setup({\n html: renderTabs(1, 1),\n });\n\n const tabContainer = await page.find('q2-tab-container >>> .tab-container');\n\n expect(tabContainer).not.toBeNull();\n\n const tabList = await page.find('q2-tab-container >>> ul');\n expect(tabList).toEqualAttribute('role', 'tablist');\n\n const tabControls = await page.findAll('q2-tab-container >>> [test-id=\"tabLink\"]');\n\n expect(tabControls).toHaveLength(1);\n expect(tabControls[0].getAttribute('id').includes('tab-')).toBe(true);\n expect(tabControls[0].getAttribute('id').includes('-0')).toBe(true);\n expect(await tabControls[0].getProperty('tabIndex')).toEqual(0);\n expect(tabControls[0]).toEqualAttribute('role', 'tab');\n expect(tabControls[0]).toEqualAttribute('aria-selected', 'true');\n expect(tabControls[0].innerText).toEqual('Pane 1');\n expect(tabControls[0]).toEqualAttribute('data-value', 'tab1');\n });\n\n it('changes tabs by tab control click with default handler', async () => {\n const page = await setup({\n html: renderTabs(2, 1),\n });\n\n const tabContainer = await page.find('q2-tab-container');\n const changeSpy = await tabContainer.spyOnEvent('change');\n\n const tabControls = await page.findAll('q2-tab-container >>> [test-id=\"tabLink\"]');\n expect(tabControls).toHaveLength(2);\n expect(tabControls[0]).toEqualAttribute('aria-selected', 'true');\n expect(tabControls[1]).toEqualAttribute('aria-selected', 'false');\n\n await dispatchEvent(page, ['q2-tab-container', '[test-id=\"tabLink\"][data-value=\"tab2\"]'], 'click');\n expect(tabControls[0]).toEqualAttribute('aria-selected', 'false');\n expect(tabControls[1]).toEqualAttribute('aria-selected', 'true');\n expect(changeSpy).toHaveReceivedEventDetail({\n value: 'tab2',\n });\n });\n\n it('can override default onchange', async () => {\n const page = await setup({\n html: renderTabs(3),\n });\n\n const tabContainer = await page.find('q2-tab-container');\n const changeSpy = await tabContainer.spyOnEvent('change');\n\n await page.$eval('q2-tab-container', (element: HTMLElement) => {\n const changeHandler = () => {\n // force nothing to happen\n };\n\n element.onchange = changeHandler;\n });\n await page.waitForChanges();\n\n await dispatchEvent(page, ['q2-tab-container', '[test-id=\"tabLink\"][data-value=\"tab2\"]'], 'click');\n\n // value prop not updated if not in handler\n expect(await tabContainer.getProperty('value')).toEqual('tab1');\n expect(changeSpy).toHaveReceivedEventDetail({ value: 'tab2' });\n });\n\n it('allows nested tabs if named', async () => {\n const page = await setup({\n html: `\n <q2-tab-container value=\"parentTab1\" name=\"parent\">\n <q2-tab-pane label=\"Parent Tab 1\" value=\"parentTab1\" name=\"parent\" >\n <q2-tab-container value=\"childTab1\" name=\"child\">\n <q2-tab-pane\n label=\"Checkings\"\n value=\"childTab1\"\n name=\"child\"\n />\n <q2-tab-pane\n label=\"Savings\"\n value=\"childTab2\"\n name=\"child\"\n />\n </q2-tab-container>\n </q2-tab-pane>\n <q2-tab-pane label=\"Parent Tab 2\" value=\"parentTab2\" name=\"parent\" ></q2-tab-pane>\n </q2-tab-container>\n `,\n });\n\n const parentTabContainer = await page.find('q2-tab-container[name=\"parent\"]');\n const childTabContainer = await page.find('q2-tab-container[name=\"child\"]');\n const childChangeSpy = await childTabContainer.spyOnEvent('change');\n\n const parentPanes = await page.findAll('q2-tab-pane[name=\"parent\"]');\n const childPanes = await page.findAll('q2-tab-pane[name=\"child\"]');\n const parentPane1Guid = await parentPanes[0].getProperty('guid');\n const parentPane2Guid = await parentPanes[1].getProperty('guid');\n const childPane1Guid = await childPanes[0].getProperty('guid');\n const childPane2Guid = await childPanes[1].getProperty('guid');\n\n expect(parentPane1Guid).toEqual(parentPane2Guid);\n expect(childPane1Guid).toEqual(childPane2Guid);\n expect(parentPane1Guid).not.toEqual(childPane1Guid);\n\n expect(parentPanes[0]).toHaveAttribute('selected');\n expect(parentPanes[1]).not.toHaveAttribute('selected');\n expect(childPanes[0]).toHaveAttribute('selected');\n expect(childPanes[1]).not.toHaveAttribute('selected');\n\n await dispatchEvent(\n page,\n ['q2-tab-container[name=\"child\"]', '[test-id=\"tabLink\"][data-value=\"childTab2\"]'],\n 'click'\n );\n\n expect(childTabContainer).toEqualAttribute('value', 'childTab2');\n expect(childChangeSpy).toHaveReceivedEventDetail({ value: 'childTab2' });\n\n // Parent tab unchanged\n expect(parentTabContainer).toEqualAttribute('value', 'parentTab1');\n });\n\n it('calls resizeIframe on value change', async () => {\n const page = await setup({\n html: renderTabs(3),\n });\n\n const resizeIframe = jest.fn();\n await page.exposeFunction('resizeIframe', resizeIframe);\n await page.evaluate(() => {\n (this as any).TectonElements.resizeIframe = resizeIframe;\n });\n\n const tabContainer = await page.find('q2-tab-container');\n tabContainer.setProperty('value', 'tab2');\n await page.waitForChanges();\n\n expect(resizeIframe).toBeCalledTimes(1);\n });\n\n it('localizes label string', async () => {\n const page = await setup({\n html: renderTabs(3),\n });\n\n await setTestStrings(page, {\n 'q2TabContainer.label': 'Label 1 Text',\n });\n\n const tabPane = await page.find('q2-tab-pane');\n const tabContainer = await page.find('q2-tab-container');\n tabPane.setProperty('label', 'q2TabContainer.label');\n tabContainer.setProperty('value', 'tab2');\n await page.waitForChanges();\n\n const tabControl = await page.find('q2-tab-container >>> button');\n expect(tabControl.innerText).toEqual('Label 1 Text');\n });\n\n it('tab added dynamically ', async () => {\n const page = await setup({\n html: `\n <q2-tab-container>\n <q2-tab-pane label=\"Tab 1 very long label\" value=\"tab1\" ></q2-tab-pane>\n </q2-tab-container>\n `,\n });\n const tabContainer = await page.find('q2-tab-container');\n let tabNumber = 2;\n const increaseTab = () => {\n tabContainer.innerHTML =\n tabContainer.innerHTML +\n `<q2-tab-pane label=\"Tab ${tabNumber} very long label\" value=\"tab${tabNumber}\" ></q2-tab-pane>`;\n tabNumber++;\n };\n\n let btnRight = await page.find('q2-tab-container >>> .btn-right');\n // right button should be null at initial loading\n expect(btnRight).toBeNull();\n\n increaseTab();\n await page.waitForChanges();\n increaseTab();\n await page.waitForChanges();\n increaseTab();\n await page.waitForChanges();\n increaseTab();\n await page.waitForChanges();\n increaseTab();\n await page.waitForChanges();\n increaseTab();\n await page.waitForChanges();\n increaseTab();\n await page.waitForChanges();\n increaseTab();\n await page.waitForChanges();\n increaseTab();\n await page.waitForChanges();\n increaseTab();\n await page.waitForChanges();\n\n btnRight = await page.find('q2-tab-container >>> .btn-right');\n // right button should not be null after adding multiple tabs\n expect(btnRight).not.toBeNull();\n });\n\n describe('@Props', () => {\n describe('value', () => {\n describe('when not provided', () => {\n it('marks the first step as active', async () => {\n const page = await setup({\n html: renderTabs(3),\n });\n const tabContainer = await page.find('q2-tab-container');\n const tabs = await page.findAll('q2-tab-container >>> button');\n const tabPanes = await page.findAll('q2-tab-pane');\n\n expect(tabContainer).toEqualAttribute('value', 'tab1');\n checkTabStatus(tabs[0], { selected: true });\n checkTabStatus(tabs[1]);\n checkTabStatus(tabs[2]);\n expect(tabPanes[0]).toHaveAttribute('selected');\n expect(tabPanes[1]).not.toHaveAttribute('selected');\n expect(tabPanes[2]).not.toHaveAttribute('selected');\n });\n });\n\n describe('when provided', () => {\n it('marks the specified step as active', async () => {\n const page = await setup({\n html: renderTabs(3, 2),\n });\n const tabContainer = await page.find('q2-tab-container');\n const tabs = await page.findAll('q2-tab-container >>> button');\n const tabPanes = await page.findAll('q2-tab-pane');\n\n expect(tabContainer).toEqualAttribute('value', 'tab2');\n checkTabStatus(tabs[0]);\n checkTabStatus(tabs[1], { selected: true });\n checkTabStatus(tabs[2]);\n expect(tabPanes[0]).not.toHaveAttribute('selected');\n expect(tabPanes[1]).toHaveAttribute('selected');\n expect(tabPanes[2]).not.toHaveAttribute('selected');\n });\n });\n });\n });\n\n describe('displaying tabs', () => {\n describe('when label is provided by a q2-tab-pane', () => {\n it('displays label on the tab', async () => {\n const page = await setup({\n html: `\n <q2-tab-container>\n <q2-tab-pane label=\"My Label\">Pane 1</q2-tab-pane>\n </q2-tab-container>`,\n });\n const tab = await page.find('q2-tab-container>>> button');\n\n expect(tab).toEqualText('My Label');\n });\n });\n\n describe('when label is not provided by a q2-tab-pane', () => {\n it('does not display any text for the tab', async () => {\n const page = await setup({\n html: `\n <q2-tab-container>\n <q2-tab-pane>Pane 1</q2-tab-pane>\n </q2-tab-container>`,\n });\n const tab = await page.find('q2-tab-container>>> button');\n\n expect(tab).toEqualText('');\n });\n });\n });\n\n describe('events', () => {\n describe('onchange', () => {\n describe('when not provided', () => {\n it('automatically updates the value to the selected tab', async () => {\n const page = await setup({\n html: renderTabs(3, 2),\n });\n const tabsContainer = await page.find('q2-tab-container');\n const tabs = await page.findAll('q2-tab-container >>> button');\n await tabs[0].click();\n expect(tabsContainer).toEqualAttribute('value', 'tab1');\n });\n });\n\n describe('when provided', () => {\n it('does not automatically update the currentStep to the selected value', async () => {\n const page = await setup({\n html: `\n <q2-tab-container value=\"tab2\" onchange=\"testOnChange()\">\n <q2-tab-pane value=\"tab1\">Pane 1</q2-tab-pane>\n <q2-tab-pane value=\"tab2\">Pane 2</q2-tab-pane>\n <q2-tab-pane value=\"tab3\">Pane 3</q2-tab-pane>\n </q2-stepper>\n <script>function testOnChange() {}</script>`,\n });\n const tabsContainer = await page.find('q2-tab-container');\n const tabs = await page.findAll('q2-tab-container >>> button');\n await tabs[0].click();\n expect(tabsContainer).toEqualAttribute('value', 'tab2');\n });\n });\n });\n });\n\n describe('selecting steps', () => {\n let page: E2EPage;\n let tabContainer: E2EElement;\n let tabs: E2EElement[];\n let changeSpy: EventSpy;\n\n beforeEach(async () => {\n page = await setup({\n html: renderTabs(3, 2),\n });\n tabContainer = await page.find('q2-tab-container');\n tabs = await page.findAll('q2-tab-container >>> button');\n changeSpy = await tabContainer.spyOnEvent('change');\n });\n\n describe('when selecting the currently selected tab', () => {\n it('does not emit an event', async () => {\n await tabs[1].click();\n expect(changeSpy).not.toHaveReceivedEvent();\n expect(tabs[1]).toHaveAttribute('aria-selected');\n expect(tabContainer).toEqualAttribute('value', 'tab2');\n });\n });\n\n describe('when selecting a tab that is not selected', () => {\n it('does emits an event', async () => {\n await tabs[0].click();\n expect(changeSpy).toHaveReceivedEventDetail({\n value: 'tab1',\n });\n expect(tabs[0]).toHaveAttribute('aria-selected');\n expect(tabContainer).toEqualAttribute('value', 'tab1');\n });\n });\n });\n\n describe('scroll', () => {\n let page: E2EPage;\n let tabContainer: E2EElement;\n let tabs: E2EElement;\n let btnLeft: E2EElement;\n let btnRight: E2EElement;\n\n describe('when the width of the total tabs does not exceed the available width', () => {\n beforeEach(async () => {\n page = await setup({\n html: renderTabs(3),\n });\n tabContainer = await page.find('q2-tab-container >>> .tab-container');\n tabs = await page.find('q2-tab-container >>> ul');\n btnLeft = await page.find('q2-tab-container>>> .btn-left');\n btnRight = await page.find('q2-tab-container>>> .btn-right');\n });\n\n it('does not display the scroll indicator buttons', async () => {\n expect(tabContainer).not.toHaveClass('has-scroll');\n expect(await tabs.getProperty('scrollWidth')).toEqual(await tabs.getProperty('clientWidth'));\n expect(btnLeft).toBeNull();\n expect(btnRight).toBeNull();\n });\n });\n\n describe('when the width of the total tabs exceeds the available width', () => {\n beforeEach(async () => {\n page = await setup({\n html: renderTabs(20), // enough number of tabs for scrolling\n });\n tabContainer = await page.find('q2-tab-container >>> .tab-container');\n tabs = await page.find('q2-tab-container >>> ul');\n btnLeft = await page.find('q2-tab-container>>> .btn-left');\n btnRight = await page.find('q2-tab-container>>> .btn-right');\n });\n\n it('displays the scroll indicator buttons', async () => {\n expect(await tabs.getProperty('scrollWidth')).toBeGreaterThan(await tabs.getProperty('clientWidth'));\n expect(btnLeft).toBeTruthy();\n expect(btnRight).toBeTruthy();\n });\n\n it('can scroll via buttons', async () => {\n const scrollAmount = Math.floor((await tabs.getProperty('clientWidth')) / 2);\n const scrollByStub = jest.fn(args => {\n page.evaluate(left => {\n document.querySelector('q2-tab-container').shadowRoot.querySelector('ul').scrollLeft = left;\n }, args.left);\n });\n await page.exposeFunction('scrollByStub', scrollByStub);\n await page.$eval('q2-tab-container', stepper => {\n stepper.shadowRoot.querySelector('ul').scrollBy = scrollByStub;\n });\n\n expect(scrollByStub).toHaveBeenCalledTimes(0);\n expect(btnLeft).toHaveAttribute('hidden');\n expect(btnRight).not.toHaveAttribute('hidden');\n\n await btnRight.click();\n expect(scrollByStub).toHaveBeenCalledWith({\n behavior: 'smooth',\n left: scrollAmount,\n });\n\n scrollByStub.mockReset();\n\n expect(btnLeft).not.toHaveAttribute('hidden');\n expect(btnRight).not.toHaveAttribute('hidden'); // still should be visible\n\n await btnLeft.click();\n expect(scrollByStub).toHaveBeenCalledWith({\n behavior: 'smooth',\n left: -scrollAmount,\n });\n });\n });\n });\n\n describe('focus transferring', () => {\n const html = renderTabs(3);\n\n it('focuses when focus event dispatched ', async () => {\n const page = await setup({ html });\n await dispatchEvent(page, ['q2-tab-container'], 'focus');\n const selected = await page.$eval('q2-tab-container', el => {\n return el.shadowRoot.activeElement.getAttribute('aria-selected');\n });\n expect(selected).toBe('true');\n });\n it('focuses when focus event method called ', async () => {\n const page = await setup({ html });\n const section = await page.find('q2-tab-container');\n await section.triggerEvent('focus');\n await page.waitForChanges();\n const contained = await page.$eval('q2-tab-container', el => {\n return el.shadowRoot.activeElement.getAttribute('aria-selected');\n });\n expect(contained).toBe('true');\n });\n });\n\n describe('Regressions', () => {\n describe('TCT-1695', () => {\n it('does not error when rendered with no tab panes', async () => {\n let errorCount = 0;\n const page = await setup();\n page.on('console', msg => msg.type() === 'error' && errorCount++);\n await page.setContent(`<q2-tab-container></q2-tab-container>`);\n await page.waitForChanges();\n\n expect(errorCount).toBe(0);\n });\n });\n });\n\n describe('Badge', () => {\n let page: E2EPage;\n let tabs: E2EElement[];\n let tabContainer;\n\n beforeEach(async () => {\n page = await setup({ html: '' });\n await setTestStrings(page, {\n 'tecton.element.tab.pane.new': 'New',\n 'tecton.element.tab.pane.entries': 'Entries',\n 'tecton.element.tab.pane.alert': 'Errors',\n 'tecton.element.tab.pane.warnings': 'Warnings',\n 'tecton.element.tab.pane.success': 'Successes',\n 'tecton.element.tab.pane.info': 'Messages',\n });\n await page.setContent(`\n <q2-tab-container value=\"tab2\" name=\"tabs\">\n <q2-tab-pane\n name=\"tabs\"\n value=\"tab1\"\n label=\"Pane 1\"\n badge-count=\"21\"\n >\n Pane 1\n </q2-tab-pane>\n <q2-tab-pane\n name=\"tabs\"\n value=\"tab2\"\n label=\"Pane 2\"\n badge-count=\"103\"\n badge-description=\"Notifications\"\n >\n Pane 2\n </q2-tab-pane>\n <q2-tab-pane\n name=\"tabs\"\n value=\"tab3\"\n label=\"Pane 3\"\n badge-count=\"500\"\n badge-description=\"tecton.element.tab.pane.entries\"\n >\n Pane 3\n </q2-tab-pane>\n <q2-tab-pane\n name=\"tabs\"\n value=\"tab4\"\n label=\"Pane 4\"\n badge-count=\"5\"\n badge-theme=\"secondary\"\n >\n Pane 4\n </q2-tab-pane>\n <q2-tab-pane\n name=\"tabs\"\n value=\"tab5\"\n label=\"Pane 5\"\n badge-count=\"10\"\n badge-status=\"alert\"\n >\n Pane 5\n </q2-tab-pane>\n </q2-tab-container>\n `);\n await page.waitForChanges();\n tabContainer = await page.find('q2-tab-container');\n tabs = await page.findAll('q2-tab-container >>> .tab-pane-badge');\n });\n\n it('adds default aria-label when no badge-description is provided', async () => {\n const tab = tabs[0];\n expect(tab).toEqualAttribute('aria-label', 'Pane 1, 21 New');\n });\n\n it('adds the provided badge-description as the aria-label', async () => {\n const tab = tabs[1];\n expect(tab).toEqualAttribute('aria-label', 'Pane 2, 103 Notifications');\n });\n\n it('localizes the provided badge-description as the aria-label', async () => {\n const tab = tabs[2];\n expect(tab).toEqualAttribute('aria-label', 'Pane 3, 500 Entries');\n });\n\n it('provides the specified theme to tab when it is selected', async () => {\n const tab = tabs[3];\n const badge = await tab.find('q2-badge');\n expect(tab).toEqualAttribute('aria-label', 'Pane 4, 5 New');\n expect(badge).not.toHaveAttribute('theme');\n await tabContainer.setProperty('value', 'tab4');\n await page.waitForChanges();\n expect(badge).toEqualAttribute('theme', 'secondary');\n });\n\n it('provides the specified status to tab regardless of the selected state', async () => {\n const tab = tabs[4];\n const badge = await tab.find('q2-badge');\n expect(tab).toEqualAttribute('aria-label', 'Pane 5, 10 Errors');\n expect(badge).not.toHaveAttribute('theme');\n expect(badge).toEqualAttribute('status', 'alert');\n await tabContainer.setProperty('value', 'tab5');\n await page.waitForChanges();\n expect(badge).not.toHaveAttribute('theme');\n expect(badge).toEqualAttribute('status', 'alert');\n });\n\n it('can change the badge-status and have it reflected in the DOM', async () => {\n const tab = tabs[4];\n const badge = await tab.find('q2-badge');\n expect(tab).toEqualAttribute('aria-label', 'Pane 5, 10 Errors');\n expect(badge).not.toHaveAttribute('theme');\n expect(badge).toEqualAttribute('status', 'alert');\n const tabPane = await page.find('q2-tab-pane[value=\"tab5\"]');\n await tabPane.setProperty('badgeStatus', 'success');\n await page.waitForChanges();\n expect(badge).toEqualAttribute('status', 'success');\n expect(tab).toEqualAttribute('aria-label', 'Pane 5, 10 Successes');\n });\n\n it('can change the badge-theme and have it reflected in the DOM', async () => {\n const tab = tabs[3];\n const badge = await tab.find('q2-badge');\n await tabContainer.setProperty('value', 'tab4');\n await page.waitForChanges();\n expect(badge).toEqualAttribute('theme', 'secondary');\n const tabPane = await page.find('q2-tab-pane[value=\"tab4\"]');\n await tabPane.setProperty('badgeTheme', 'tertiary');\n await page.waitForChanges();\n expect(badge).toEqualAttribute('theme', 'tertiary');\n });\n });\n\n describe('Accessibility', () => {\n describe('aXe DevTools', () => {\n it('does not have accessibility violations', async () => {\n const page = await setup({\n html: renderTabs(1, 1),\n });\n const hasViolations = await evaluateA11y(page);\n\n expect(hasViolations).toBe(false);\n });\n });\n describe('Accessibility Tree', () => {});\n describe('Keyboard Controls', () => {\n let page: E2EPage;\n let tabs: E2EElement[];\n\n const isStepFocused = async (page: E2EPage, stepNumber: number) =>\n page.evaluate(\n stepNumber =>\n document.querySelector('q2-tab-container').shadowRoot.activeElement ===\n document\n .querySelector('q2-tab-container')\n .shadowRoot.querySelector(`li:nth-child(${stepNumber}) button`),\n stepNumber\n );\n\n beforeEach(async () => {\n page = await setup({\n html: renderTabs(3, 2),\n });\n tabs = await page.findAll('q2-tab-container >>> button');\n });\n\n describe('when arrow keys are pressed', () => {\n it('moves focus along the list of tabs', async () => {\n await tabs[1].focus();\n expect(await isStepFocused(page, 2)).toBe(true);\n\n await page.keyboard.press('ArrowLeft');\n expect(await isStepFocused(page, 1)).toBe(true);\n\n await page.keyboard.press('ArrowRight');\n expect(await isStepFocused(page, 2)).toBe(true);\n\n await page.keyboard.press('ArrowRight');\n expect(await isStepFocused(page, 3)).toBe(true);\n });\n });\n\n describe('when Space is pressed', () => {\n it('selected the focused tab tab', async () => {\n await tabs[1].focus();\n await page.keyboard.press('Space');\n expect(tabs[1]).toEqualAttribute('aria-selected', 'true');\n });\n });\n\n describe('when Enter is pressed', () => {\n it('selected the focused tab tab', async () => {\n await tabs[1].focus();\n await page.keyboard.press('Enter');\n expect(tabs[1]).toEqualAttribute('aria-selected', 'true');\n });\n });\n\n describe('when Home is pressed', () => {\n it('focuses the first tab', async () => {\n await tabs[1].focus();\n expect(await isStepFocused(page, 2)).toBe(true);\n\n await page.keyboard.press('Home');\n expect(await isStepFocused(page, 1)).toBe(true);\n });\n });\n\n describe('when End is pressed', () => {\n it('focuses the last enabled tab', async () => {\n await tabs[0].focus();\n expect(await isStepFocused(page, 1)).toBe(true);\n\n await page.keyboard.press('End');\n expect(await isStepFocused(page, 3)).toBe(true);\n });\n });\n });\n describe('Other', () => {});\n });\n\n describe('Test methods', () => {\n let page: E2EPage;\n let tabContainer: E2EElement;\n\n describe('selectTab', () => {\n beforeEach(async () => {\n page = await setup({\n html: renderTabs(5),\n });\n tabContainer = await page.find('q2-tab-container');\n });\n\n it('call selectTab', async () => {\n const spyFn = await tabContainer.spyOnEvent('click');\n expect(spyFn).toHaveReceivedEventTimes(0);\n await tabContainer.callMethod('selectTab', 'tab2');\n await page.waitForChanges();\n expect(spyFn).toHaveReceivedEventTimes(1);\n expect(await tabContainer.getProperty('value')).toBe('tab2');\n });\n });\n });\n});\n"]}
1
+ {"version":3,"file":"q2-tab-container-test.e2e.js","sourceRoot":"","sources":["../../../../../src/components/q2-tab-container/test/q2-tab-container-test.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { evaluateA11y, setup, setTestStrings, dispatchEvent, getListOfStyleCompilationIssues } from '@/utils/helpers';\nimport { E2EElement, E2EPage, EventSpy } from '@stencil/core/testing';\n\ndescribe('q2-tab-container', () => {\n const renderTabs = (numberOfSteps: number, value?: number) => {\n return `<q2-tab-container ${value ? `value=\"tab${value}\"` : ''} name=\"tabs\">\n ${[...Array(numberOfSteps).keys()].map(\n index =>\n `<q2-tab-pane value=\"tab${index + 1}\" label=\"Pane ${index + 1}\" name=\"tabs\">Pane ${\n index + 1\n }</q2-tab-pane>`\n )}\n </q2-tab-container>`;\n };\n\n const checkTabStatus = (stepBtn: E2EElement, options?: { selected?: boolean }) => {\n const { selected } = { ...{ selected: false }, ...options };\n\n if (selected) {\n expect(stepBtn).toEqualAttribute('aria-selected', 'true');\n expect(stepBtn).toEqualAttribute('tabindex', '0');\n } else {\n expect(stepBtn).toEqualAttribute('aria-selected', 'false');\n expect(stepBtn).toEqualAttribute('tabindex', '-1');\n }\n };\n\n it('properly compiles CSS vars and functions', async () => {\n const page = await setup({ html: '<q2-tab-container></q2-tab-container>' });\n expect(await getListOfStyleCompilationIssues(page, 'q2-tab-container')).toHaveLength(0);\n });\n\n it('renders shadow DOM elements and correct tab controls', async () => {\n const page = await setup({\n html: renderTabs(1, 1),\n });\n\n const tabContainer = await page.find('q2-tab-container >>> .tab-container');\n\n expect(tabContainer).not.toBeNull();\n\n const tabList = await page.find('q2-tab-container >>> ul');\n expect(tabList).toEqualAttribute('role', 'tablist');\n\n const tabControls = await page.findAll('q2-tab-container >>> [test-id=\"tabLink\"]');\n\n expect(tabControls).toHaveLength(1);\n expect(tabControls[0].getAttribute('id').includes('tab-')).toBe(true);\n expect(tabControls[0].getAttribute('id').includes('-0')).toBe(true);\n expect(await tabControls[0].getProperty('tabIndex')).toEqual(0);\n expect(tabControls[0]).toEqualAttribute('role', 'tab');\n expect(tabControls[0]).toEqualAttribute('aria-selected', 'true');\n expect(tabControls[0].innerText).toEqual('Pane 1');\n expect(tabControls[0]).toEqualAttribute('data-value', 'tab1');\n });\n\n it('changes tabs by tab control click with default handler', async () => {\n const page = await setup({\n html: renderTabs(2, 1),\n });\n\n const tabContainer = await page.find('q2-tab-container');\n const changeSpy = await tabContainer.spyOnEvent('change');\n\n const tabControls = await page.findAll('q2-tab-container >>> [test-id=\"tabLink\"]');\n expect(tabControls).toHaveLength(2);\n expect(tabControls[0]).toEqualAttribute('aria-selected', 'true');\n expect(tabControls[1]).toEqualAttribute('aria-selected', 'false');\n\n await dispatchEvent(page, ['q2-tab-container', '[test-id=\"tabLink\"][data-value=\"tab2\"]'], 'click');\n expect(tabControls[0]).toEqualAttribute('aria-selected', 'false');\n expect(tabControls[1]).toEqualAttribute('aria-selected', 'true');\n expect(changeSpy).toHaveReceivedEventDetail({\n value: 'tab2',\n });\n });\n\n it('can override default onchange', async () => {\n const page = await setup({\n html: renderTabs(3),\n });\n\n const tabContainer = await page.find('q2-tab-container');\n const changeSpy = await tabContainer.spyOnEvent('change');\n\n await page.$eval('q2-tab-container', (element: HTMLElement) => {\n const changeHandler = () => {\n // force nothing to happen\n };\n\n element.onchange = changeHandler;\n });\n await page.waitForChanges();\n\n await dispatchEvent(page, ['q2-tab-container', '[test-id=\"tabLink\"][data-value=\"tab2\"]'], 'click');\n\n // value prop not updated if not in handler\n expect(await tabContainer.getProperty('value')).toEqual('tab1');\n expect(changeSpy).toHaveReceivedEventDetail({ value: 'tab2' });\n });\n\n it('allows nested tabs if named', async () => {\n const page = await setup({\n html: `\n <q2-tab-container value=\"parentTab1\" name=\"parent\">\n <q2-tab-pane label=\"Parent Tab 1\" value=\"parentTab1\" name=\"parent\" >\n <q2-tab-container value=\"childTab1\" name=\"child\">\n <q2-tab-pane\n label=\"Checkings\"\n value=\"childTab1\"\n name=\"child\"\n />\n <q2-tab-pane\n label=\"Savings\"\n value=\"childTab2\"\n name=\"child\"\n />\n </q2-tab-container>\n </q2-tab-pane>\n <q2-tab-pane label=\"Parent Tab 2\" value=\"parentTab2\" name=\"parent\" ></q2-tab-pane>\n </q2-tab-container>\n `,\n });\n\n const parentTabContainer = await page.find('q2-tab-container[name=\"parent\"]');\n const childTabContainer = await page.find('q2-tab-container[name=\"child\"]');\n const childChangeSpy = await childTabContainer.spyOnEvent('change');\n\n const parentPanes = await page.findAll('q2-tab-pane[name=\"parent\"]');\n const childPanes = await page.findAll('q2-tab-pane[name=\"child\"]');\n const parentPane1Guid = await parentPanes[0].getProperty('guid');\n const parentPane2Guid = await parentPanes[1].getProperty('guid');\n const childPane1Guid = await childPanes[0].getProperty('guid');\n const childPane2Guid = await childPanes[1].getProperty('guid');\n\n expect(parentPane1Guid).toEqual(parentPane2Guid);\n expect(childPane1Guid).toEqual(childPane2Guid);\n expect(parentPane1Guid).not.toEqual(childPane1Guid);\n\n expect(parentPanes[0]).toHaveAttribute('selected');\n expect(parentPanes[1]).not.toHaveAttribute('selected');\n expect(childPanes[0]).toHaveAttribute('selected');\n expect(childPanes[1]).not.toHaveAttribute('selected');\n\n await dispatchEvent(\n page,\n ['q2-tab-container[name=\"child\"]', '[test-id=\"tabLink\"][data-value=\"childTab2\"]'],\n 'click'\n );\n\n expect(childTabContainer).toEqualAttribute('value', 'childTab2');\n expect(childChangeSpy).toHaveReceivedEventDetail({ value: 'childTab2' });\n\n // Parent tab unchanged\n expect(parentTabContainer).toEqualAttribute('value', 'parentTab1');\n });\n\n it('calls resizeIframe on value change', async () => {\n const page = await setup({\n html: renderTabs(3),\n });\n\n const resizeIframe = jest.fn();\n await page.exposeFunction('resizeIframe', resizeIframe);\n await page.evaluate(() => {\n (this as any).TectonElements.resizeIframe = resizeIframe;\n });\n\n const tabContainer = await page.find('q2-tab-container');\n tabContainer.setProperty('value', 'tab2');\n await page.waitForChanges();\n\n expect(resizeIframe).toBeCalledTimes(1);\n });\n\n it('localizes label string', async () => {\n const page = await setup({\n html: renderTabs(3),\n });\n\n await setTestStrings(page, {\n 'q2TabContainer.label': 'Label 1 Text',\n });\n\n const tabPane = await page.find('q2-tab-pane');\n const tabContainer = await page.find('q2-tab-container');\n tabPane.setProperty('label', 'q2TabContainer.label');\n tabContainer.setProperty('value', 'tab2');\n await page.waitForChanges();\n\n const tabControl = await page.find('q2-tab-container >>> button');\n expect(tabControl.innerText).toEqual('Label 1 Text');\n });\n\n it('tab added dynamically ', async () => {\n const page = await setup({\n html: `\n <q2-tab-container>\n <q2-tab-pane label=\"Tab 1 very long label\" value=\"tab1\" ></q2-tab-pane>\n </q2-tab-container>\n `,\n });\n const tabContainer = await page.find('q2-tab-container');\n let tabNumber = 2;\n const increaseTab = () => {\n tabContainer.innerHTML =\n tabContainer.innerHTML +\n `<q2-tab-pane label=\"Tab ${tabNumber} very long label\" value=\"tab${tabNumber}\" ></q2-tab-pane>`;\n tabNumber++;\n };\n\n let btnRight = await page.find('q2-tab-container >>> .btn-right');\n // right button should be null at initial loading\n expect(btnRight).toBeNull();\n\n increaseTab();\n await page.waitForChanges();\n increaseTab();\n await page.waitForChanges();\n increaseTab();\n await page.waitForChanges();\n increaseTab();\n await page.waitForChanges();\n increaseTab();\n await page.waitForChanges();\n increaseTab();\n await page.waitForChanges();\n increaseTab();\n await page.waitForChanges();\n increaseTab();\n await page.waitForChanges();\n increaseTab();\n await page.waitForChanges();\n increaseTab();\n await page.waitForChanges();\n\n btnRight = await page.find('q2-tab-container >>> .btn-right');\n // right button should not be null after adding multiple tabs\n expect(btnRight).not.toBeNull();\n });\n\n describe('@Props', () => {\n describe('value', () => {\n describe('when not provided', () => {\n it('marks the first step as active', async () => {\n const page = await setup({\n html: renderTabs(3),\n });\n const tabContainer = await page.find('q2-tab-container');\n const tabs = await page.findAll('q2-tab-container >>> button');\n const tabPanes = await page.findAll('q2-tab-pane');\n\n expect(tabContainer).toEqualAttribute('value', 'tab1');\n checkTabStatus(tabs[0], { selected: true });\n checkTabStatus(tabs[1]);\n checkTabStatus(tabs[2]);\n expect(tabPanes[0]).toHaveAttribute('selected');\n expect(tabPanes[1]).not.toHaveAttribute('selected');\n expect(tabPanes[2]).not.toHaveAttribute('selected');\n });\n });\n\n describe('when provided', () => {\n it('marks the specified step as active', async () => {\n const page = await setup({\n html: renderTabs(3, 2),\n });\n const tabContainer = await page.find('q2-tab-container');\n const tabs = await page.findAll('q2-tab-container >>> button');\n const tabPanes = await page.findAll('q2-tab-pane');\n\n expect(tabContainer).toEqualAttribute('value', 'tab2');\n checkTabStatus(tabs[0]);\n checkTabStatus(tabs[1], { selected: true });\n checkTabStatus(tabs[2]);\n expect(tabPanes[0]).not.toHaveAttribute('selected');\n expect(tabPanes[1]).toHaveAttribute('selected');\n expect(tabPanes[2]).not.toHaveAttribute('selected');\n });\n });\n });\n });\n\n describe('displaying tabs', () => {\n describe('when label is provided by a q2-tab-pane', () => {\n it('displays label on the tab', async () => {\n const page = await setup({\n html: `\n <q2-tab-container>\n <q2-tab-pane label=\"My Label\">Pane 1</q2-tab-pane>\n </q2-tab-container>`,\n });\n const tab = await page.find('q2-tab-container>>> button');\n\n expect(tab).toEqualText('My Label');\n });\n });\n\n describe('when label is not provided by a q2-tab-pane', () => {\n it('does not display any text for the tab', async () => {\n const page = await setup({\n html: `\n <q2-tab-container>\n <q2-tab-pane>Pane 1</q2-tab-pane>\n </q2-tab-container>`,\n });\n const tab = await page.find('q2-tab-container>>> button');\n\n expect(tab).toEqualText('');\n });\n });\n });\n\n describe('events', () => {\n describe('onchange', () => {\n describe('when not provided', () => {\n it('automatically updates the value to the selected tab', async () => {\n const page = await setup({\n html: renderTabs(3, 2),\n });\n const tabsContainer = await page.find('q2-tab-container');\n const tabs = await page.findAll('q2-tab-container >>> button');\n await tabs[0].click();\n expect(tabsContainer).toEqualAttribute('value', 'tab1');\n });\n });\n\n describe('when provided', () => {\n it('does not automatically update the currentStep to the selected value', async () => {\n const page = await setup({\n html: `\n <q2-tab-container value=\"tab2\" onchange=\"testOnChange()\">\n <q2-tab-pane value=\"tab1\">Pane 1</q2-tab-pane>\n <q2-tab-pane value=\"tab2\">Pane 2</q2-tab-pane>\n <q2-tab-pane value=\"tab3\">Pane 3</q2-tab-pane>\n </q2-stepper>\n <script>function testOnChange() {}</script>`,\n });\n const tabsContainer = await page.find('q2-tab-container');\n const tabs = await page.findAll('q2-tab-container >>> button');\n await tabs[0].click();\n expect(tabsContainer).toEqualAttribute('value', 'tab2');\n });\n });\n });\n });\n\n describe('selecting steps', () => {\n let page: E2EPage;\n let tabContainer: E2EElement;\n let tabs: E2EElement[];\n let changeSpy: EventSpy;\n\n beforeEach(async () => {\n page = await setup({\n html: renderTabs(3, 2),\n });\n tabContainer = await page.find('q2-tab-container');\n tabs = await page.findAll('q2-tab-container >>> button');\n changeSpy = await tabContainer.spyOnEvent('change');\n });\n\n describe('when selecting the currently selected tab', () => {\n it('does not emit an event', async () => {\n await tabs[1].click();\n expect(changeSpy).not.toHaveReceivedEvent();\n expect(tabs[1]).toHaveAttribute('aria-selected');\n expect(tabContainer).toEqualAttribute('value', 'tab2');\n });\n });\n\n describe('when selecting a tab that is not selected', () => {\n it('does emits an event', async () => {\n await tabs[0].click();\n expect(changeSpy).toHaveReceivedEventDetail({\n value: 'tab1',\n });\n expect(tabs[0]).toHaveAttribute('aria-selected');\n expect(tabContainer).toEqualAttribute('value', 'tab1');\n });\n });\n });\n\n describe('scroll', () => {\n let page: E2EPage;\n let tabContainer: E2EElement;\n let tabs: E2EElement;\n let btnLeft: E2EElement;\n let btnRight: E2EElement;\n\n describe('when the width of the total tabs does not exceed the available width', () => {\n beforeEach(async () => {\n page = await setup({\n html: renderTabs(3),\n });\n tabContainer = await page.find('q2-tab-container >>> .tab-container');\n tabs = await page.find('q2-tab-container >>> ul');\n btnLeft = await page.find('q2-tab-container>>> .btn-left');\n btnRight = await page.find('q2-tab-container>>> .btn-right');\n });\n\n it('does not display the scroll indicator buttons', async () => {\n expect(tabContainer).not.toHaveClass('has-scroll');\n expect(await tabs.getProperty('scrollWidth')).toEqual(await tabs.getProperty('clientWidth'));\n expect(btnLeft).toBeNull();\n expect(btnRight).toBeNull();\n });\n });\n\n describe('when the width of the total tabs exceeds the available width', () => {\n beforeEach(async () => {\n page = await setup({\n html: renderTabs(20), // enough number of tabs for scrolling\n });\n tabContainer = await page.find('q2-tab-container >>> .tab-container');\n tabs = await page.find('q2-tab-container >>> ul');\n btnLeft = await page.find('q2-tab-container>>> .btn-left');\n btnRight = await page.find('q2-tab-container>>> .btn-right');\n });\n\n it('displays the scroll indicator buttons', async () => {\n expect(await tabs.getProperty('scrollWidth')).toBeGreaterThan(await tabs.getProperty('clientWidth'));\n expect(btnLeft).toBeTruthy();\n expect(btnRight).toBeTruthy();\n });\n\n it('can scroll via buttons', async () => {\n const scrollAmount = Math.floor((await tabs.getProperty('clientWidth')) / 2);\n const scrollByStub = jest.fn(args => {\n page.evaluate(left => {\n document.querySelector('q2-tab-container').shadowRoot.querySelector('ul').scrollLeft = left;\n }, args.left);\n });\n await page.exposeFunction('scrollByStub', scrollByStub);\n await page.$eval('q2-tab-container', stepper => {\n stepper.shadowRoot.querySelector('ul').scrollBy = scrollByStub;\n });\n\n expect(scrollByStub).toHaveBeenCalledTimes(0);\n expect(btnLeft).toHaveAttribute('hidden');\n expect(btnRight).not.toHaveAttribute('hidden');\n\n await btnRight.click();\n expect(scrollByStub).toHaveBeenCalledWith({\n behavior: 'smooth',\n left: scrollAmount,\n });\n\n scrollByStub.mockReset();\n\n expect(btnLeft).not.toHaveAttribute('hidden');\n expect(btnRight).not.toHaveAttribute('hidden'); // still should be visible\n\n await btnLeft.click();\n expect(scrollByStub).toHaveBeenCalledWith({\n behavior: 'smooth',\n left: -scrollAmount,\n });\n });\n });\n });\n\n describe('focus transferring', () => {\n const html = renderTabs(3);\n\n it('focuses when focus event dispatched ', async () => {\n const page = await setup({ html });\n await dispatchEvent(page, ['q2-tab-container'], 'focus');\n const selected = await page.$eval('q2-tab-container', el => {\n return el.shadowRoot.activeElement.getAttribute('aria-selected');\n });\n expect(selected).toBe('true');\n });\n it('focuses when focus event method called ', async () => {\n const page = await setup({ html });\n const section = await page.find('q2-tab-container');\n await section.triggerEvent('focus');\n await page.waitForChanges();\n const contained = await page.$eval('q2-tab-container', el => {\n return el.shadowRoot.activeElement.getAttribute('aria-selected');\n });\n expect(contained).toBe('true');\n });\n });\n\n describe('Regressions', () => {\n describe('TCT-1695', () => {\n it('does not error when rendered with no tab panes', async () => {\n let errorCount = 0;\n const page = await setup();\n page.on('console', msg => msg.type() === 'error' && errorCount++);\n await page.setContent(`<q2-tab-container></q2-tab-container>`);\n await page.waitForChanges();\n\n expect(errorCount).toBe(0);\n });\n });\n });\n\n describe('Badge', () => {\n let page: E2EPage;\n let tabs: E2EElement[];\n let tabContainer;\n\n beforeEach(async () => {\n page = await setup({ html: '' });\n await setTestStrings(page, {\n 'tecton.element.tab.pane.new': 'New',\n 'tecton.element.tab.pane.entries': 'Entries',\n 'tecton.element.tab.pane.alert': 'Errors',\n 'tecton.element.tab.pane.warnings': 'Warnings',\n 'tecton.element.tab.pane.success': 'Successes',\n 'tecton.element.tab.pane.info': 'Messages',\n });\n await page.setContent(`\n <q2-tab-container value=\"tab2\" name=\"tabs\">\n <q2-tab-pane\n name=\"tabs\"\n value=\"tab1\"\n label=\"Pane 1\"\n badge-count=\"21\"\n >\n Pane 1\n </q2-tab-pane>\n <q2-tab-pane\n name=\"tabs\"\n value=\"tab2\"\n label=\"Pane 2\"\n badge-count=\"103\"\n badge-description=\"Notifications\"\n >\n Pane 2\n </q2-tab-pane>\n <q2-tab-pane\n name=\"tabs\"\n value=\"tab3\"\n label=\"Pane 3\"\n badge-count=\"500\"\n badge-description=\"tecton.element.tab.pane.entries\"\n >\n Pane 3\n </q2-tab-pane>\n <q2-tab-pane\n name=\"tabs\"\n value=\"tab4\"\n label=\"Pane 4\"\n badge-count=\"5\"\n badge-theme=\"secondary\"\n >\n Pane 4\n </q2-tab-pane>\n <q2-tab-pane\n name=\"tabs\"\n value=\"tab5\"\n label=\"Pane 5\"\n badge-count=\"10\"\n badge-status=\"alert\"\n >\n Pane 5\n </q2-tab-pane>\n </q2-tab-container>\n `);\n await page.waitForChanges();\n tabContainer = await page.find('q2-tab-container');\n tabs = await page.findAll('q2-tab-container >>> .tab-pane-badge');\n });\n\n it('adds default aria-label when no badge-description is provided', async () => {\n const tab = tabs[0];\n expect(tab).toEqualAttribute('aria-label', 'Pane 1, 21 New');\n });\n\n it('adds the provided badge-description as the aria-label', async () => {\n const tab = tabs[1];\n expect(tab).toEqualAttribute('aria-label', 'Pane 2, 103 Notifications');\n });\n\n it('localizes the provided badge-description as the aria-label', async () => {\n const tab = tabs[2];\n expect(tab).toEqualAttribute('aria-label', 'Pane 3, 500 Entries');\n });\n\n it('provides the specified theme to tab when it is selected', async () => {\n const tab = tabs[3];\n const badge = await tab.find('q2-badge');\n expect(tab).toEqualAttribute('aria-label', 'Pane 4, 5 New');\n expect(badge).not.toHaveAttribute('theme');\n await tabContainer.setProperty('value', 'tab4');\n await page.waitForChanges();\n expect(badge).toEqualAttribute('theme', 'secondary');\n });\n\n it('provides the specified status to tab regardless of the selected state', async () => {\n const tab = tabs[4];\n const badge = await tab.find('q2-badge');\n expect(tab).toEqualAttribute('aria-label', 'Pane 5, 10 Errors');\n expect(badge).not.toHaveAttribute('theme');\n expect(badge).toEqualAttribute('status', 'alert');\n await tabContainer.setProperty('value', 'tab5');\n await page.waitForChanges();\n expect(badge).not.toHaveAttribute('theme');\n expect(badge).toEqualAttribute('status', 'alert');\n });\n\n it('can change the badge-status and have it reflected in the DOM', async () => {\n const tab = tabs[4];\n const badge = await tab.find('q2-badge');\n expect(tab).toEqualAttribute('aria-label', 'Pane 5, 10 Errors');\n expect(badge).not.toHaveAttribute('theme');\n expect(badge).toEqualAttribute('status', 'alert');\n const tabPane = await page.find('q2-tab-pane[value=\"tab5\"]');\n await tabPane.setProperty('badgeStatus', 'success');\n await page.waitForChanges();\n expect(badge).toEqualAttribute('status', 'success');\n expect(tab).toEqualAttribute('aria-label', 'Pane 5, 10 Successes');\n });\n\n it('can change the badge-theme and have it reflected in the DOM', async () => {\n const tab = tabs[3];\n const badge = await tab.find('q2-badge');\n await tabContainer.setProperty('value', 'tab4');\n await page.waitForChanges();\n expect(badge).toEqualAttribute('theme', 'secondary');\n const tabPane = await page.find('q2-tab-pane[value=\"tab4\"]');\n await tabPane.setProperty('badgeTheme', 'tertiary');\n await page.waitForChanges();\n expect(badge).toEqualAttribute('theme', 'tertiary');\n });\n });\n\n describe('Accessibility', () => {\n describe('aXe DevTools', () => {\n it('does not have accessibility violations', async () => {\n const page = await setup({\n html: renderTabs(1, 1),\n });\n const hasViolations = await evaluateA11y(page);\n\n expect(hasViolations).toBe(false);\n });\n });\n describe('Accessibility Tree', () => {});\n describe('Keyboard Controls', () => {\n let page: E2EPage;\n let tabs: E2EElement[];\n\n const isStepFocused = async (page: E2EPage, stepNumber: number) =>\n page.evaluate(\n stepNumber =>\n document.querySelector('q2-tab-container').shadowRoot.activeElement ===\n document\n .querySelector('q2-tab-container')\n .shadowRoot.querySelector(`li:nth-child(${stepNumber}) button`),\n stepNumber\n );\n\n beforeEach(async () => {\n page = await setup({\n html: renderTabs(3, 2),\n });\n tabs = await page.findAll('q2-tab-container >>> button');\n });\n\n describe('when arrow keys are pressed', () => {\n it('moves focus along the list of tabs', async () => {\n await tabs[1].focus();\n expect(await isStepFocused(page, 2)).toBe(true);\n\n await page.keyboard.press('ArrowLeft');\n expect(await isStepFocused(page, 1)).toBe(true);\n\n await page.keyboard.press('ArrowRight');\n expect(await isStepFocused(page, 2)).toBe(true);\n\n await page.keyboard.press('ArrowRight');\n expect(await isStepFocused(page, 3)).toBe(true);\n });\n });\n\n describe('when Space is pressed', () => {\n it('selected the focused tab tab', async () => {\n await tabs[1].focus();\n await page.keyboard.press('Space');\n expect(tabs[1]).toEqualAttribute('aria-selected', 'true');\n });\n });\n\n describe('when Enter is pressed', () => {\n it('selected the focused tab tab', async () => {\n await tabs[1].focus();\n await page.keyboard.press('Enter');\n expect(tabs[1]).toEqualAttribute('aria-selected', 'true');\n });\n });\n\n describe('when Home is pressed', () => {\n it('focuses the first tab', async () => {\n await tabs[1].focus();\n expect(await isStepFocused(page, 2)).toBe(true);\n\n await page.keyboard.press('Home');\n expect(await isStepFocused(page, 1)).toBe(true);\n });\n });\n\n describe('when End is pressed', () => {\n it('focuses the last enabled tab', async () => {\n await tabs[0].focus();\n expect(await isStepFocused(page, 1)).toBe(true);\n\n await page.keyboard.press('End');\n expect(await isStepFocused(page, 3)).toBe(true);\n });\n });\n });\n describe('Other', () => {});\n });\n\n describe('Test methods', () => {\n let page: E2EPage;\n let tabContainer: E2EElement;\n\n describe('selectTab', () => {\n beforeEach(async () => {\n page = await setup({\n html: renderTabs(5),\n });\n tabContainer = await page.find('q2-tab-container');\n });\n\n it('call selectTab', async () => {\n const spyFn = await tabContainer.spyOnEvent('click');\n expect(spyFn).toHaveReceivedEventTimes(0);\n await tabContainer.callMethod('selectTab', 'tab2');\n await page.waitForChanges();\n expect(spyFn).toHaveReceivedEventTimes(1);\n expect(await tabContainer.getProperty('value')).toBe('tab2');\n });\n });\n });\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"q2-tab-container-test.spec.js","sourceRoot":"","sources":["../../../../src/components/q2-tab-container/test/q2-tab-container-test.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { Q2TabContainer } from '../q2-tab-container';\n\ndescribe('q2-tab-container', () => {\n let specTabContainer: Q2TabContainer;\n\n describe('moveToTab', () => {\n let scrollToSpy: jest.SpyInstance;\n let listItemFocusSpies: jest.SpyInstance[];\n\n beforeEach(() => {\n specTabContainer = new Q2TabContainer();\n const listElement = document.createElement('ul');\n Object.defineProperty(listElement, 'clientWidth', {\n value: 600,\n writable: true,\n });\n\n listItemFocusSpies = [];\n for (let i = 0; i < 3; i++) {\n const listItem = document.createElement<any>('li');\n listItem.dataset.value = `tab-${i + 1}`;\n listItem.offsetLeft = i * 200;\n listElement.appendChild(listItem);\n listItemFocusSpies.push(jest.spyOn(listItem, 'focus'));\n }\n\n expect(listItemFocusSpies.length).toBe(3);\n\n specTabContainer.listElement = listElement;\n // spy on the scrollTo method of listElement\n scrollToSpy = jest.spyOn(specTabContainer.listElement, 'scrollTo');\n\n specTabContainer.tabs = [\n { label: 'Tab 1', value: 'tab-1' } as any,\n { label: 'Tab 2', value: 'tab-2' } as any,\n { label: 'Tab 3', value: 'tab-3' } as any,\n ];\n });\n\n it('scrolls to tab at the specified index', () => {\n const result = specTabContainer.moveToTab(1, false);\n expect(result.dataset.value).toBe('tab-2');\n expect(scrollToSpy).toHaveBeenCalledWith({\n left: -100,\n behavior: 'smooth',\n });\n expect(listItemFocusSpies.every(spy => spy.mock.calls.length === 0)).toBe(true);\n });\n\n it('scrolls to tab at the specified index and calls focus', () => {\n const result = specTabContainer.moveToTab(1, true);\n expect(result.dataset.value).toBe('tab-2');\n expect(scrollToSpy).toHaveBeenCalledWith({\n left: -100,\n behavior: 'smooth',\n });\n expect(listItemFocusSpies[0]).not.toHaveBeenCalled();\n expect(listItemFocusSpies[1]).toHaveBeenCalled();\n expect(listItemFocusSpies[2]).not.toHaveBeenCalled();\n });\n });\n});\n"]}
1
+ {"version":3,"file":"q2-tab-container-test.spec.js","sourceRoot":"","sources":["../../../../../src/components/q2-tab-container/test/q2-tab-container-test.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { Q2TabContainer } from '../q2-tab-container';\n\ndescribe('q2-tab-container', () => {\n let specTabContainer: Q2TabContainer;\n\n describe('moveToTab', () => {\n let scrollToSpy: jest.SpyInstance;\n let listItemFocusSpies: jest.SpyInstance[];\n\n beforeEach(() => {\n specTabContainer = new Q2TabContainer();\n const listElement = document.createElement('ul');\n Object.defineProperty(listElement, 'clientWidth', {\n value: 600,\n writable: true,\n });\n\n listItemFocusSpies = [];\n for (let i = 0; i < 3; i++) {\n const listItem = document.createElement<any>('li');\n listItem.dataset.value = `tab-${i + 1}`;\n listItem.offsetLeft = i * 200;\n listElement.appendChild(listItem);\n listItemFocusSpies.push(jest.spyOn(listItem, 'focus'));\n }\n\n expect(listItemFocusSpies.length).toBe(3);\n\n specTabContainer.listElement = listElement;\n // spy on the scrollTo method of listElement\n scrollToSpy = jest.spyOn(specTabContainer.listElement, 'scrollTo');\n\n specTabContainer.tabs = [\n { label: 'Tab 1', value: 'tab-1' } as any,\n { label: 'Tab 2', value: 'tab-2' } as any,\n { label: 'Tab 3', value: 'tab-3' } as any,\n ];\n });\n\n it('scrolls to tab at the specified index', () => {\n const result = specTabContainer.moveToTab(1, false);\n expect(result.dataset.value).toBe('tab-2');\n expect(scrollToSpy).toHaveBeenCalledWith({\n left: -100,\n behavior: 'smooth',\n });\n expect(listItemFocusSpies.every(spy => spy.mock.calls.length === 0)).toBe(true);\n });\n\n it('scrolls to tab at the specified index and calls focus', () => {\n const result = specTabContainer.moveToTab(1, true);\n expect(result.dataset.value).toBe('tab-2');\n expect(scrollToSpy).toHaveBeenCalledWith({\n left: -100,\n behavior: 'smooth',\n });\n expect(listItemFocusSpies[0]).not.toHaveBeenCalled();\n expect(listItemFocusSpies[1]).toHaveBeenCalled();\n expect(listItemFocusSpies[2]).not.toHaveBeenCalled();\n });\n });\n});\n"]}
@@ -20,7 +20,7 @@ export class Q2TabPane {
20
20
  // #endregion
21
21
  // #region Render Methods
22
22
  render() {
23
- return (h("div", { key: '80d63ce37628672bcea61cc66b03c8569dadfa1e', 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: '4e553f8d690634cb0cda3bd1b8ba2f646ffc55b7' })));
23
+ return (h("div", { key: '3cd86f02e748fc4e77059cb31b5e478acf22d27a', 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: 'b5d23f0194a61be45bc488480e0c9047ac07f367' })));
24
24
  }
25
25
  static get is() { return "q2-tab-pane"; }
26
26
  static get encapsulation() { return "shadow"; }
@@ -1 +1 @@
1
- {"version":3,"file":"q2-tab-pane.js","sourceRoot":"","sources":["../../../src/components/q2-tab-pane/q2-tab-pane.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAsB,IAAI,EAAE,KAAK,EAAgB,KAAK,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAInG,MAAM,OAAO,SAAS;;;;;;;;;;;;;IAuElB,aAAa;IACb,mBAAmB;IAMnB,aAAa;QACT,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;IAED,aAAa;IACb,yBAAyB;IAEzB,MAAM;QACF,OAAO,CACH,4DACI,EAAE,EAAE,YAAY,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,EACzC,KAAK,EAAE,WAAW,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,EAClD,IAAI,EAAC,UAAU,EACf,QAAQ,EAAC,IAAI,iBACA,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,qBACf,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;YAEjD,8DAAQ,CACN,CACT,CAAC;IACN,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGJ","sourcesContent":["import { Component, ComponentInterface, Prop, Event, EventEmitter, Watch, h } from '@stencil/core';\nimport { Q2Badge } from '../q2-badge/q2-badge';\n\n@Component({ tag: 'q2-tab-pane', shadow: true, styleUrl: 'q2-tab-pane.scss' })\nexport class Q2TabPane implements ComponentInterface {\n // #region Public Property API\n\n /** Adds a `q2-badge` component with the number provided right next to the tab pane label. */\n @Prop({ reflect: true })\n badgeCount: number;\n\n /**\n * The text that will be pronounced alongside `badgeCount` when the screen reader presents the tab.\n * @localizable\n */\n @Prop({ reflect: true })\n badgeDescription: string;\n\n /** Allows you to specify the status of the tab, which is always visible. */\n @Prop({ reflect: true })\n badgeStatus: Q2Badge['status'];\n\n /** Allows you to specify the color of the badge when the tab is active. */\n @Prop({ reflect: true })\n badgeTheme: Q2Badge['theme'];\n\n /**\n * Used by q2-tab-container to apply a unique id to each tab pane\n * @private\n */\n @Prop()\n guid: number;\n\n /**\n * Used by q2-tab-container to indicate the pane's index\n * @private\n */\n @Prop()\n index: number;\n\n /**\n * Serves as the text that will be visible in the tab control provided by `q2-tab-container`.\n * @localizable\n */\n @Prop({ reflect: true })\n label: string;\n\n /**\n * Used by q2-tab-container to apply a name to all options in the group\n * @private\n */\n @Prop({ reflect: true })\n name: string;\n\n /**\n * Used by q2-tab-container to indicate the option is selected\n * @private\n */\n @Prop({ reflect: true })\n selected: boolean;\n\n /** Serves as the pane's value. Should correspond to the `q2-tab-container` value. */\n @Prop({ reflect: true })\n value: string;\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when the badge count, description, theme, or status changes.\n * @private\n */\n @Event({ bubbles: true })\n badge: EventEmitter<boolean>;\n\n // #endregion\n // #region Watchers\n\n @Watch('badgeCount')\n @Watch('badgeDescription')\n @Watch('badgeTheme')\n @Watch('badgeStatus')\n badgeObserver() {\n this.badge.emit();\n }\n\n // #endregion\n // #region Render Methods\n\n render() {\n return (\n <div\n id={`tab-pane-${this.guid}-${this.index}`}\n class={`tab-pane${this.selected ? '' : ' hidden'}`}\n role=\"tabpanel\"\n tabindex=\"-1\"\n aria-hidden={`${!this.selected}`}\n aria-labelledby={`tab-${this.guid}-${this.index}`}\n >\n <slot />\n </div>\n );\n }\n\n // #endregion\n}\n"]}
1
+ {"version":3,"file":"q2-tab-pane.js","sourceRoot":"","sources":["../../../../src/components/q2-tab-pane/q2-tab-pane.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAsB,IAAI,EAAE,KAAK,EAAgB,KAAK,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAInG,MAAM,OAAO,SAAS;;;;;;;;;;;;;IAuElB,aAAa;IACb,mBAAmB;IAMnB,aAAa;QACT,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;IAED,aAAa;IACb,yBAAyB;IAEzB,MAAM;QACF,OAAO,CACH,4DACI,EAAE,EAAE,YAAY,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,EACzC,KAAK,EAAE,WAAW,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,EAClD,IAAI,EAAC,UAAU,EACf,QAAQ,EAAC,IAAI,iBACA,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,qBACf,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;YAEjD,8DAAQ,CACN,CACT,CAAC;IACN,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGJ","sourcesContent":["import { Component, ComponentInterface, Prop, Event, EventEmitter, Watch, h } from '@stencil/core';\nimport { Q2Badge } from '../q2-badge/q2-badge';\n\n@Component({ tag: 'q2-tab-pane', shadow: true, styleUrl: 'q2-tab-pane.scss' })\nexport class Q2TabPane implements ComponentInterface {\n // #region Public Property API\n\n /** Adds a `q2-badge` component with the number provided right next to the tab pane label. */\n @Prop({ reflect: true })\n badgeCount: number;\n\n /**\n * The text that will be pronounced alongside `badgeCount` when the screen reader presents the tab.\n * @localizable\n */\n @Prop({ reflect: true })\n badgeDescription: string;\n\n /** Allows you to specify the status of the tab, which is always visible. */\n @Prop({ reflect: true })\n badgeStatus: Q2Badge['status'];\n\n /** Allows you to specify the color of the badge when the tab is active. */\n @Prop({ reflect: true })\n badgeTheme: Q2Badge['theme'];\n\n /**\n * Used by q2-tab-container to apply a unique id to each tab pane\n * @private\n */\n @Prop()\n guid: number;\n\n /**\n * Used by q2-tab-container to indicate the pane's index\n * @private\n */\n @Prop()\n index: number;\n\n /**\n * Serves as the text that will be visible in the tab control provided by `q2-tab-container`.\n * @localizable\n */\n @Prop({ reflect: true })\n label: string;\n\n /**\n * Used by q2-tab-container to apply a name to all options in the group\n * @private\n */\n @Prop({ reflect: true })\n name: string;\n\n /**\n * Used by q2-tab-container to indicate the option is selected\n * @private\n */\n @Prop({ reflect: true })\n selected: boolean;\n\n /** Serves as the pane's value. Should correspond to the `q2-tab-container` value. */\n @Prop({ reflect: true })\n value: string;\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when the badge count, description, theme, or status changes.\n * @private\n */\n @Event({ bubbles: true })\n badge: EventEmitter<boolean>;\n\n // #endregion\n // #region Watchers\n\n @Watch('badgeCount')\n @Watch('badgeDescription')\n @Watch('badgeTheme')\n @Watch('badgeStatus')\n badgeObserver() {\n this.badge.emit();\n }\n\n // #endregion\n // #region Render Methods\n\n render() {\n return (\n <div\n id={`tab-pane-${this.guid}-${this.index}`}\n class={`tab-pane${this.selected ? '' : ' hidden'}`}\n role=\"tabpanel\"\n tabindex=\"-1\"\n aria-hidden={`${!this.selected}`}\n aria-labelledby={`tab-${this.guid}-${this.index}`}\n >\n <slot />\n </div>\n );\n }\n\n // #endregion\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"q2-tab-pane-test.e2e.js","sourceRoot":"","sources":["../../../../src/components/q2-tab-pane/test/q2-tab-pane-test.e2e.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,+BAA+B,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAEvF,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IACzB,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,6BAA6B,EAAE,CAAC,CAAC;QAClE,MAAM,CAAC,MAAM,+BAA+B,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,uCAAuC,EAAE,KAAK;QAC7C,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;YACrB,IAAI,EAAE,yDAAyD;SAClE,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC/C,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAChC,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAClC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAElE,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QACnD,MAAM,CAAC,YAAY,CAAC,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC1D,MAAM,CAAC,YAAY,CAAC,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACxD,MAAM,CAAC,YAAY,CAAC,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;QACvE,MAAM,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC3C,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;QAC1D,MAAM,CAAC,YAAY,CAAC,CAAC,gBAAgB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAE7D,OAAO,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACtC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;QAC1D,MAAM,CAAC,YAAY,CAAC,CAAC,gBAAgB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QACzB,EAAE,CAAC,wCAAwC,EAAE,KAAK;YAC9C,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;gBACrB,IAAI,EAAE,8CAA8C;aACvD,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC/C,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YAE5D,mFAAmF;YACnF,uFAAuF;YACvF,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,mCAAmC,CAAC,CAAC;YAEnE,MAAM,CAAC,MAAM,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClD,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,gBAAgB,EAAE,CAAC;YACrD,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC5C,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC3B,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;YAC1B,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;gBACpD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;oBACrB,IAAI,EAAE,8CAA8C;iBACvD,CAAC,CAAC;gBACH,MAAM,aAAa,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;gBAC/C,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACzC,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACxC,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC","sourcesContent":["import { evaluateA11y, getListOfStyleCompilationIssues, setup } from '@/utils/helpers';\n\ndescribe('q2-tab-pane', () => {\n it('properly compiles CSS vars and functions', async () => {\n const page = await setup({ html: '<q2-tab-pane></q2-tab-pane>' });\n expect(await getListOfStyleCompilationIssues(page, 'q2-tab-pane')).toHaveLength(0);\n });\n it('correctly renders shadow DOM elements', async function (): Promise<void> {\n const page = await setup({\n html: `<q2-tab-pane label=\"Tab 1\" value=\"tab1\" ></q2-tab-pane>`,\n });\n\n const tabPane = await page.find('q2-tab-pane');\n tabPane.setProperty('index', 0);\n tabPane.setProperty('guid', 1000);\n await page.waitForChanges();\n\n const innerTabPane = await page.find('q2-tab-pane >>> .tab-pane');\n\n expect(innerTabPane.id).toEqual('tab-pane-1000-0');\n expect(innerTabPane).toEqualAttribute('role', 'tabpanel');\n expect(innerTabPane).toEqualAttribute('tabindex', '-1');\n expect(innerTabPane).toEqualAttribute('aria-labelledby', 'tab-1000-0');\n expect(innerTabPane).toHaveClass('hidden');\n expect(innerTabPane).not.toHaveAttribute('aria-expanded');\n expect(innerTabPane).toEqualAttribute('aria-hidden', 'true');\n\n tabPane.setProperty('selected', true);\n await page.waitForChanges();\n\n expect(innerTabPane).not.toHaveClass('hidden');\n expect(innerTabPane).not.toHaveAttribute('aria-expanded');\n expect(innerTabPane).toEqualAttribute('aria-hidden', 'false');\n });\n\n describe('Regressions', () => {\n it('does not have a focus outline on focus', async function (): Promise<void> {\n const page = await setup({\n html: `<q2-tab-pane selected>Iron Man</q2-tab-pane>`,\n });\n\n const tabPane = await page.find('q2-tab-pane');\n const innerTabPane = await page.find('q2-tab-pane >>> div');\n\n // We set the global focus variable here otherwise box-shadow always returns \"none\"\n // If box-shadow were not set to \"none\" in the component's CSS this value would show up\n tabPane.setAttribute('style', '--const-global-focus: 2px 0 0 red');\n\n expect(await innerTabPane.isVisible()).toBe(true);\n await innerTabPane.focus();\n const styles = await innerTabPane.getComputedStyle();\n expect(styles.outlineStyle).toEqual('none');\n expect(styles.boxShadow).toEqual('none');\n });\n });\n\n describe('Accessibility', () => {\n describe('aXe DevTools', () => {\n it('does not have accessibility violations', async () => {\n const page = await setup({\n html: `<q2-tab-pane selected>Iron Man</q2-tab-pane>`,\n });\n const hasViolations = await evaluateA11y(page);\n expect(hasViolations).toBe(false);\n });\n });\n describe('Accessibility Tree', () => {});\n describe('Keyboard Controls', () => {});\n describe('Other', () => {});\n });\n});\n"]}
1
+ {"version":3,"file":"q2-tab-pane-test.e2e.js","sourceRoot":"","sources":["../../../../../src/components/q2-tab-pane/test/q2-tab-pane-test.e2e.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,+BAA+B,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAEvF,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IACzB,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,6BAA6B,EAAE,CAAC,CAAC;QAClE,MAAM,CAAC,MAAM,+BAA+B,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,uCAAuC,EAAE,KAAK;QAC7C,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;YACrB,IAAI,EAAE,yDAAyD;SAClE,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC/C,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAChC,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAClC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAElE,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QACnD,MAAM,CAAC,YAAY,CAAC,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC1D,MAAM,CAAC,YAAY,CAAC,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACxD,MAAM,CAAC,YAAY,CAAC,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;QACvE,MAAM,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC3C,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;QAC1D,MAAM,CAAC,YAAY,CAAC,CAAC,gBAAgB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAE7D,OAAO,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACtC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;QAC1D,MAAM,CAAC,YAAY,CAAC,CAAC,gBAAgB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QACzB,EAAE,CAAC,wCAAwC,EAAE,KAAK;YAC9C,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;gBACrB,IAAI,EAAE,8CAA8C;aACvD,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC/C,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YAE5D,mFAAmF;YACnF,uFAAuF;YACvF,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,mCAAmC,CAAC,CAAC;YAEnE,MAAM,CAAC,MAAM,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClD,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,gBAAgB,EAAE,CAAC;YACrD,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC5C,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC3B,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;YAC1B,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;gBACpD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;oBACrB,IAAI,EAAE,8CAA8C;iBACvD,CAAC,CAAC;gBACH,MAAM,aAAa,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;gBAC/C,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACzC,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACxC,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC","sourcesContent":["import { evaluateA11y, getListOfStyleCompilationIssues, setup } from '@/utils/helpers';\n\ndescribe('q2-tab-pane', () => {\n it('properly compiles CSS vars and functions', async () => {\n const page = await setup({ html: '<q2-tab-pane></q2-tab-pane>' });\n expect(await getListOfStyleCompilationIssues(page, 'q2-tab-pane')).toHaveLength(0);\n });\n it('correctly renders shadow DOM elements', async function (): Promise<void> {\n const page = await setup({\n html: `<q2-tab-pane label=\"Tab 1\" value=\"tab1\" ></q2-tab-pane>`,\n });\n\n const tabPane = await page.find('q2-tab-pane');\n tabPane.setProperty('index', 0);\n tabPane.setProperty('guid', 1000);\n await page.waitForChanges();\n\n const innerTabPane = await page.find('q2-tab-pane >>> .tab-pane');\n\n expect(innerTabPane.id).toEqual('tab-pane-1000-0');\n expect(innerTabPane).toEqualAttribute('role', 'tabpanel');\n expect(innerTabPane).toEqualAttribute('tabindex', '-1');\n expect(innerTabPane).toEqualAttribute('aria-labelledby', 'tab-1000-0');\n expect(innerTabPane).toHaveClass('hidden');\n expect(innerTabPane).not.toHaveAttribute('aria-expanded');\n expect(innerTabPane).toEqualAttribute('aria-hidden', 'true');\n\n tabPane.setProperty('selected', true);\n await page.waitForChanges();\n\n expect(innerTabPane).not.toHaveClass('hidden');\n expect(innerTabPane).not.toHaveAttribute('aria-expanded');\n expect(innerTabPane).toEqualAttribute('aria-hidden', 'false');\n });\n\n describe('Regressions', () => {\n it('does not have a focus outline on focus', async function (): Promise<void> {\n const page = await setup({\n html: `<q2-tab-pane selected>Iron Man</q2-tab-pane>`,\n });\n\n const tabPane = await page.find('q2-tab-pane');\n const innerTabPane = await page.find('q2-tab-pane >>> div');\n\n // We set the global focus variable here otherwise box-shadow always returns \"none\"\n // If box-shadow were not set to \"none\" in the component's CSS this value would show up\n tabPane.setAttribute('style', '--const-global-focus: 2px 0 0 red');\n\n expect(await innerTabPane.isVisible()).toBe(true);\n await innerTabPane.focus();\n const styles = await innerTabPane.getComputedStyle();\n expect(styles.outlineStyle).toEqual('none');\n expect(styles.boxShadow).toEqual('none');\n });\n });\n\n describe('Accessibility', () => {\n describe('aXe DevTools', () => {\n it('does not have accessibility violations', async () => {\n const page = await setup({\n html: `<q2-tab-pane selected>Iron Man</q2-tab-pane>`,\n });\n const hasViolations = await evaluateA11y(page);\n expect(hasViolations).toBe(false);\n });\n });\n describe('Accessibility Tree', () => {});\n describe('Keyboard Controls', () => {});\n describe('Other', () => {});\n });\n});\n"]}
@@ -141,7 +141,7 @@ export class Q2Tag {
141
141
  const wrapperClassNames = ['tag'];
142
142
  if (optionCount)
143
143
  wrapperClassNames.push('has-options');
144
- return (h(Host, { key: '2c32d9ad217a256708a273c099503c66d42b6b70', role: this.optionCount > 0 ? 'list' : undefined }, h("click-elsewhere", { key: '3742a0975cfcd03de897b9f0f7c1b1f4c565a104', onChange: this.onClickElsewhere }, this.optionCount ? (h(Fragment, null, h("div", { class: "btn-wrapper", onClick: this.handleWrapperClick }, 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" }, h("div", { class: wrapperClassNames.join(' ') }, this.label), h("q2-icon", { type: "options" }))), this.renderHiddenElement())) : (h("div", { class: "tag-wrapper", onClick: e => e.stopPropagation() }, h("div", { class: wrapperClassNames.join(' ') }, this.label))), this.optionCount > 0 && (h("q2-popover", { key: '753bfe6cc5910abbef524054a40c533dcb291c11', 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: '492b808cdeedd4b885e885e5192bf0110042de49', 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: 'bfb44467093bb65887e39ccebe10e761f1566d45' })))))));
144
+ return (h(Host, { key: '90a10c32076aeecb5068e17c5634735167466048', role: this.optionCount > 0 ? 'list' : undefined }, h("click-elsewhere", { key: '807888c2c8ae2bf27b5abdc8e523d6bac139d86c', onChange: this.onClickElsewhere }, this.optionCount ? (h(Fragment, null, h("div", { class: "btn-wrapper", onClick: this.handleWrapperClick }, 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" }, h("div", { class: wrapperClassNames.join(' ') }, this.label), h("q2-icon", { type: "options" }))), this.renderHiddenElement())) : (h("div", { class: "tag-wrapper", onClick: e => e.stopPropagation() }, h("div", { class: wrapperClassNames.join(' ') }, this.label))), this.optionCount > 0 && (h("q2-popover", { key: '3408ca35b8cfbce205afc922937e4b547ee55de5', 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: '794d0483f93d0b3ba241eec7deebba6e2169198e', 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: '83bc3a2624cab7070e8bf7374c38ce6d3d2d66f8' })))))));
145
145
  }
146
146
  static get is() { return "q2-tag"; }
147
147
  static get encapsulation() { return "shadow"; }
@@ -1 +1 @@
1
- {"version":3,"file":"q2-tag.js","sourceRoot":"","sources":["../../../src/components/q2-tag/q2-tag.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n State,\n Prop,\n h,\n ComponentInterface,\n Host,\n Listen,\n Method,\n Element,\n EventEmitter,\n Event,\n Fragment,\n} from '@stencil/core';\nimport { isEventFromElement, loc, overrideFocus, waitForNextPaint } from 'src/utils';\nimport { shouldShowActionSheet, showActionSheetList } from 'src/utils/action-sheet';\n\n@Component({ tag: 'q2-tag', shadow: true, styleUrl: 'q2-tag.scss' })\nexport class Q2Tag implements ComponentInterface {\n // #region Own Properties\n\n dropdownBtn: HTMLButtonElement;\n mutationObserver: MutationObserver;\n optionList: HTMLQ2OptionListElement;\n popoverElement: HTMLQ2PopoverElement;\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 optionCount: number;\n\n // #endregion\n // #region Public Property API\n\n /**\n * Instructs the component to use the action sheet workflow for displaying its options.\n *\n * For more information, see [Action Sheets](https://tecton.q2developer.com/guides/action-sheets/).\n */\n @Prop()\n hoist: boolean = !!window.Tecton?.useActionSheets;\n\n /**\n * The text that populates the label.\n * @localizable\n */\n @Prop({ reflect: true })\n label: string;\n\n /**\n * Determine whether the popover is open or closed.\n *\n * @readonly\n */\n @Prop({ reflect: true, mutable: true })\n open: boolean;\n\n /** Determines the label that is applied to the option list for accessibility purposes. */\n @Prop()\n optionListLabel: string = 'options';\n\n /** Aligns the popover dropdown to the left or right side of the input field. */\n @Prop({ mutable: true })\n popoverAlignment: 'left' | 'right' = 'right';\n\n /**\n * Force the direction of the popover dropdown when it opens.\n * If no value is passed, the component will auto-detect the direction based on available space.\n */\n @Prop()\n popoverDirection: 'up' | 'down';\n\n /**\n * Force the maximum height of the popover. This value will be interpreted as pixels.\n * If no value is passed, or the value exceeds available space, the component will auto-detect the maximum height based on available space.\n */\n @Prop()\n popoverMaxHeight: number;\n\n /** @deprecated */\n @Prop()\n popoverMinHeight: number = 150;\n\n /** The color of the element. */\n @Prop({ reflect: true })\n theme: 'primary' | 'secondary' | 'tertiary';\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when a provided option is clicked.\n *\n * Requires at least one option to be provided.\n */\n @Event()\n click: EventEmitter<{ value: string }>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback() {\n this.mutationObserver?.disconnect();\n this.mutationObserver = null;\n }\n\n componentWillLoad() {\n const observer = new MutationObserver(this.determineOptionCount);\n observer.observe(this.hostElement, { childList: true, attributes: true });\n this.mutationObserver = observer;\n }\n\n componentDidLoad(): void {\n overrideFocus(this.hostElement);\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('focus')\n delegateFocus(event: FocusEvent) {\n if (!isEventFromElement(event, this.hostElement)) return;\n if (!this.optionCount) return;\n this.dropdownBtn.focus();\n }\n\n @Listen('popoverStateChanged')\n popoverStateHandler({ detail: { open } }: CustomEvent<{ open: boolean }>) {\n if (this.open !== open) this.open = open;\n if (open) return;\n this.optionList.setActiveElement(null);\n }\n\n // #endregion\n // #region Public Methods API\n\n @Method()\n async closePopover() {\n if (!this.optionCount || !this.open) return;\n this._togglePopover();\n }\n\n @Method()\n async openPopover() {\n if (!this.optionCount || this.open) return;\n this._togglePopover();\n }\n\n @Method()\n async selectOption(value) {\n if (!this.optionCount) return;\n await this.openPopover();\n await waitForNextPaint();\n const allOptions = await this.optionList.getOptions();\n const desiredOption = allOptions.find(option => option.value === value);\n desiredOption?.click();\n }\n\n // #endregion\n // #region Local Methods\n\n _togglePopover() {\n const { dropdownBtn } = this;\n dropdownBtn?.click();\n dropdownBtn?.focus();\n dropdownBtn.dispatchEvent(new FocusEvent('focus'));\n }\n\n determineOptionCount = () => {\n const numberOfOptions = this.hostElement.querySelectorAll('q2-option').length;\n this.optionCount = numberOfOptions;\n };\n\n handleButtonFocusout = async (event: FocusEvent) => {\n const relatedTarget = event.relatedTarget as unknown as HTMLElement;\n if (relatedTarget?.tagName === 'Q2-OPTION') return;\n this.open = false;\n };\n\n handleChange = event => {\n event.stopPropagation();\n if (!this.optionCount) return;\n const { value } = event.detail;\n\n this.click.emit({ value });\n };\n\n handleClick = async (event: MouseEvent) => {\n event.stopPropagation();\n this.popoverElement.controlElement = this.dropdownBtn;\n if (shouldShowActionSheet(this)) {\n const { value } = await showActionSheetList(this, event);\n this.click.emit({ value });\n } else {\n await this.popoverElement.toggle();\n }\n };\n\n handleKeydown = async (event: KeyboardEvent) => {\n const isTabMetaOrCtrl = event.metaKey || event.ctrlKey || event.key === 'Tab';\n if (isTabMetaOrCtrl) return;\n\n event.preventDefault();\n this.popoverElement.controlElement = this.dropdownBtn;\n if (shouldShowActionSheet(this, event)) {\n const { value } = await showActionSheetList(this, event);\n this.click.emit({ value });\n } else {\n this.optionList.handleExternalKeydown(event);\n }\n };\n\n handleWrapperClick = () => {\n this.dropdownBtn.focus();\n this.dropdownBtn.click();\n };\n\n onClickElsewhere = (event: CustomEvent) => {\n const target = event.target as HTMLClickElsewhereElement;\n if (target.localName === 'click-elsewhere') {\n event.stopPropagation();\n const { popoverElement } = this;\n if (!popoverElement) return;\n popoverElement.open = false;\n }\n };\n\n // #endregion\n // #region Render Methods\n\n renderHiddenElement() {\n return (\n <div\n id=\"option-description\"\n class=\"sr\"\n aria-hidden=\"true\"\n >\n {loc('tecton.element.optionList.optionCount', [this.optionCount])}\n </div>\n );\n }\n\n render() {\n const { optionCount, open } = this;\n const wrapperClassNames = ['tag'];\n if (optionCount) wrapperClassNames.push('has-options');\n\n return (\n <Host role={this.optionCount > 0 ? 'list' : undefined}>\n <click-elsewhere onChange={this.onClickElsewhere}>\n {this.optionCount ? (\n <Fragment>\n <div\n class=\"btn-wrapper\"\n onClick={this.handleWrapperClick}\n >\n <button\n class=\"tag-wrapper\"\n ref={el => (this.dropdownBtn = el)}\n test-id=\"btn-control\"\n type=\"button\"\n role=\"combobox\"\n onClick={this.handleClick}\n onKeyDown={this.handleKeydown}\n onFocusout={this.handleButtonFocusout}\n aria-controls=\"option-list\"\n aria-expanded={open ? 'true' : 'false'}\n aria-describedby=\"option-description\"\n >\n <div class={wrapperClassNames.join(' ')}>{this.label}</div>\n <q2-icon type=\"options\"></q2-icon>\n </button>\n </div>\n {this.renderHiddenElement()}\n </Fragment>\n ) : (\n <div\n class=\"tag-wrapper\"\n onClick={e => e.stopPropagation()}\n >\n <div class={wrapperClassNames.join(' ')}>{this.label}</div>\n </div>\n )}\n\n {this.optionCount > 0 && (\n <q2-popover\n ref={el => (this.popoverElement = el)}\n controlElement={this.dropdownBtn}\n open={this.open}\n maxHeight={this.popoverMaxHeight}\n minHeight={this.popoverMinHeight}\n direction={this.popoverDirection}\n align={this.popoverAlignment}\n >\n <q2-option-list\n id=\"option-list\"\n ref={el => (this.optionList = el)}\n onChange={this.handleChange}\n type=\"menu\"\n align=\"right\"\n label={loc('tecton.element.optionList.label', [this.optionListLabel])}\n no-select\n >\n <slot />\n </q2-option-list>\n </q2-popover>\n )}\n </click-elsewhere>\n </Host>\n );\n }\n\n // #endregion\n}\n"]}
1
+ {"version":3,"file":"q2-tag.js","sourceRoot":"","sources":["../../../../src/components/q2-tag/q2-tag.tsx"],"names":[],"mappings":"AAAA,OAAO,EACH,SAAS,EACT,KAAK,EACL,IAAI,EACJ,CAAC,EAED,IAAI,EACJ,MAAM,EACN,MAAM,EACN,OAAO,EAEP,KAAK,EACL,QAAQ,GACX,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AACrF,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAGpF,MAAM,OAAO,KAAK;;;QA6Jd,yBAAoB,GAAG,GAAG,EAAE;YACxB,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC;YAC9E,IAAI,CAAC,WAAW,GAAG,eAAe,CAAC;QACvC,CAAC,CAAC;QAEF,yBAAoB,GAAG,KAAK,EAAE,KAAiB,EAAE,EAAE;YAC/C,MAAM,aAAa,GAAG,KAAK,CAAC,aAAuC,CAAC;YACpE,IAAI,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,OAAO,MAAK,WAAW;gBAAE,OAAO;YACnD,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;QACtB,CAAC,CAAC;QAEF,iBAAY,GAAG,KAAK,CAAC,EAAE;YACnB,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,WAAW;gBAAE,OAAO;YAC9B,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC;YAE/B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/B,CAAC,CAAC;QAEF,gBAAW,GAAG,KAAK,EAAE,KAAiB,EAAE,EAAE;YACtC,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,IAAI,CAAC,cAAc,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC;YACtD,IAAI,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9B,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBACzD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACJ,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;YACvC,CAAC;QACL,CAAC,CAAC;QAEF,kBAAa,GAAG,KAAK,EAAE,KAAoB,EAAE,EAAE;YAC3C,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,CAAC;YAC9E,IAAI,eAAe;gBAAE,OAAO;YAE5B,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,CAAC,cAAc,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC;YACtD,IAAI,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;gBACrC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBACzD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;YACjD,CAAC;QACL,CAAC,CAAC;QAEF,uBAAkB,GAAG,GAAG,EAAE;YACtB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QAC7B,CAAC,CAAC;QAEF,qBAAgB,GAAG,CAAC,KAAkB,EAAE,EAAE;YACtC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAmC,CAAC;YACzD,IAAI,MAAM,CAAC,SAAS,KAAK,iBAAiB,EAAE,CAAC;gBACzC,KAAK,CAAC,eAAe,EAAE,CAAC;gBACxB,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;gBAChC,IAAI,CAAC,cAAc;oBAAE,OAAO;gBAC5B,cAAc,CAAC,IAAI,GAAG,KAAK,CAAC;YAChC,CAAC;QACL,CAAC,CAAC;;qBAzLe,CAAC,CAAC,CAAA,MAAA,MAAM,CAAC,MAAM,0CAAE,eAAe,CAAA;;;+BAmBvB,SAAS;gCAIE,OAAO;;;gCAkBjB,GAAG;;;IAiB9B,aAAa;IACb,qCAAqC;IAErC,oBAAoB;;QAChB,MAAA,IAAI,CAAC,gBAAgB,0CAAE,UAAU,EAAE,CAAC;QACpC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;IACjC,CAAC;IAED,iBAAiB;QACb,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACjE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1E,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC;IACrC,CAAC;IAED,gBAAgB;QACZ,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACpC,CAAC;IAED,aAAa;IACb,oBAAoB;IAGpB,aAAa,CAAC,KAAiB;QAC3B,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC;YAAE,OAAO;QACzD,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,OAAO;QAC9B,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;IAGD,mBAAmB,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAkC;QACpE,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI;YAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACzC,IAAI,IAAI;YAAE,OAAO;QACjB,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,aAAa;IACb,6BAA6B;IAG7B,KAAK,CAAC,YAAY;QACd,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAO;QAC5C,IAAI,CAAC,cAAc,EAAE,CAAC;IAC1B,CAAC;IAGD,KAAK,CAAC,WAAW;QACb,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO;QAC3C,IAAI,CAAC,cAAc,EAAE,CAAC;IAC1B,CAAC;IAGD,KAAK,CAAC,YAAY,CAAC,KAAK;QACpB,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,OAAO;QAC9B,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzB,MAAM,gBAAgB,EAAE,CAAC;QACzB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;QACtD,MAAM,aAAa,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;QACxE,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,KAAK,EAAE,CAAC;IAC3B,CAAC;IAED,aAAa;IACb,wBAAwB;IAExB,cAAc;QACV,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;QAC7B,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,KAAK,EAAE,CAAC;QACrB,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,KAAK,EAAE,CAAC;QACrB,WAAW,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;IACvD,CAAC;IA6DD,aAAa;IACb,yBAAyB;IAEzB,mBAAmB;QACf,OAAO,CACH,WACI,EAAE,EAAC,oBAAoB,EACvB,KAAK,EAAC,IAAI,iBACE,MAAM,IAEjB,GAAG,CAAC,uCAAuC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAC/D,CACT,CAAC;IACN,CAAC;IAED,MAAM;QACF,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;QACnC,MAAM,iBAAiB,GAAG,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,WAAW;YAAE,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAEvD,OAAO,CACH,EAAC,IAAI,qDAAC,IAAI,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;YACjD,wEAAiB,QAAQ,EAAE,IAAI,CAAC,gBAAgB;gBAC3C,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAChB,EAAC,QAAQ;oBACL,WACI,KAAK,EAAC,aAAa,EACnB,OAAO,EAAE,IAAI,CAAC,kBAAkB;wBAEhC,cACI,KAAK,EAAC,aAAa,EACnB,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,aAC1B,aAAa,EACrB,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,UAAU,EACf,OAAO,EAAE,IAAI,CAAC,WAAW,EACzB,SAAS,EAAE,IAAI,CAAC,aAAa,EAC7B,UAAU,EAAE,IAAI,CAAC,oBAAoB,mBACvB,aAAa,mBACZ,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,sBACrB,oBAAoB;4BAErC,WAAK,KAAK,EAAE,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAG,IAAI,CAAC,KAAK,CAAO;4BAC3D,eAAS,IAAI,EAAC,SAAS,GAAW,CAC7B,CACP;oBACL,IAAI,CAAC,mBAAmB,EAAE,CACpB,CACd,CAAC,CAAC,CAAC,CACA,WACI,KAAK,EAAC,aAAa,EACnB,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE;oBAEjC,WAAK,KAAK,EAAE,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAG,IAAI,CAAC,KAAK,CAAO,CACzD,CACT;gBAEA,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CACrB,mEACI,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC,EACrC,cAAc,EAAE,IAAI,CAAC,WAAW,EAChC,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,SAAS,EAAE,IAAI,CAAC,gBAAgB,EAChC,SAAS,EAAE,IAAI,CAAC,gBAAgB,EAChC,SAAS,EAAE,IAAI,CAAC,gBAAgB,EAChC,KAAK,EAAE,IAAI,CAAC,gBAAgB;oBAE5B,uEACI,EAAE,EAAC,aAAa,EAChB,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,EACjC,QAAQ,EAAE,IAAI,CAAC,YAAY,EAC3B,IAAI,EAAC,MAAM,EACX,KAAK,EAAC,OAAO,EACb,KAAK,EAAE,GAAG,CAAC,iCAAiC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;wBAGrE,8DAAQ,CACK,CACR,CAChB,CACa,CACf,CACV,CAAC;IACN,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGJ","sourcesContent":["import {\n Component,\n State,\n Prop,\n h,\n ComponentInterface,\n Host,\n Listen,\n Method,\n Element,\n EventEmitter,\n Event,\n Fragment,\n} from '@stencil/core';\nimport { isEventFromElement, loc, overrideFocus, waitForNextPaint } from 'src/utils';\nimport { shouldShowActionSheet, showActionSheetList } from 'src/utils/action-sheet';\n\n@Component({ tag: 'q2-tag', shadow: true, styleUrl: 'q2-tag.scss' })\nexport class Q2Tag implements ComponentInterface {\n // #region Own Properties\n\n dropdownBtn: HTMLButtonElement;\n mutationObserver: MutationObserver;\n optionList: HTMLQ2OptionListElement;\n popoverElement: HTMLQ2PopoverElement;\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 optionCount: number;\n\n // #endregion\n // #region Public Property API\n\n /**\n * Instructs the component to use the action sheet workflow for displaying its options.\n *\n * For more information, see [Action Sheets](https://tecton.q2developer.com/guides/action-sheets/).\n */\n @Prop()\n hoist: boolean = !!window.Tecton?.useActionSheets;\n\n /**\n * The text that populates the label.\n * @localizable\n */\n @Prop({ reflect: true })\n label: string;\n\n /**\n * Determine whether the popover is open or closed.\n *\n * @readonly\n */\n @Prop({ reflect: true, mutable: true })\n open: boolean;\n\n /** Determines the label that is applied to the option list for accessibility purposes. */\n @Prop()\n optionListLabel: string = 'options';\n\n /** Aligns the popover dropdown to the left or right side of the input field. */\n @Prop({ mutable: true })\n popoverAlignment: 'left' | 'right' = 'right';\n\n /**\n * Force the direction of the popover dropdown when it opens.\n * If no value is passed, the component will auto-detect the direction based on available space.\n */\n @Prop()\n popoverDirection: 'up' | 'down';\n\n /**\n * Force the maximum height of the popover. This value will be interpreted as pixels.\n * If no value is passed, or the value exceeds available space, the component will auto-detect the maximum height based on available space.\n */\n @Prop()\n popoverMaxHeight: number;\n\n /** @deprecated */\n @Prop()\n popoverMinHeight: number = 150;\n\n /** The color of the element. */\n @Prop({ reflect: true })\n theme: 'primary' | 'secondary' | 'tertiary';\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when a provided option is clicked.\n *\n * Requires at least one option to be provided.\n */\n @Event()\n click: EventEmitter<{ value: string }>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback() {\n this.mutationObserver?.disconnect();\n this.mutationObserver = null;\n }\n\n componentWillLoad() {\n const observer = new MutationObserver(this.determineOptionCount);\n observer.observe(this.hostElement, { childList: true, attributes: true });\n this.mutationObserver = observer;\n }\n\n componentDidLoad(): void {\n overrideFocus(this.hostElement);\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('focus')\n delegateFocus(event: FocusEvent) {\n if (!isEventFromElement(event, this.hostElement)) return;\n if (!this.optionCount) return;\n this.dropdownBtn.focus();\n }\n\n @Listen('popoverStateChanged')\n popoverStateHandler({ detail: { open } }: CustomEvent<{ open: boolean }>) {\n if (this.open !== open) this.open = open;\n if (open) return;\n this.optionList.setActiveElement(null);\n }\n\n // #endregion\n // #region Public Methods API\n\n @Method()\n async closePopover() {\n if (!this.optionCount || !this.open) return;\n this._togglePopover();\n }\n\n @Method()\n async openPopover() {\n if (!this.optionCount || this.open) return;\n this._togglePopover();\n }\n\n @Method()\n async selectOption(value) {\n if (!this.optionCount) return;\n await this.openPopover();\n await waitForNextPaint();\n const allOptions = await this.optionList.getOptions();\n const desiredOption = allOptions.find(option => option.value === value);\n desiredOption?.click();\n }\n\n // #endregion\n // #region Local Methods\n\n _togglePopover() {\n const { dropdownBtn } = this;\n dropdownBtn?.click();\n dropdownBtn?.focus();\n dropdownBtn.dispatchEvent(new FocusEvent('focus'));\n }\n\n determineOptionCount = () => {\n const numberOfOptions = this.hostElement.querySelectorAll('q2-option').length;\n this.optionCount = numberOfOptions;\n };\n\n handleButtonFocusout = async (event: FocusEvent) => {\n const relatedTarget = event.relatedTarget as unknown as HTMLElement;\n if (relatedTarget?.tagName === 'Q2-OPTION') return;\n this.open = false;\n };\n\n handleChange = event => {\n event.stopPropagation();\n if (!this.optionCount) return;\n const { value } = event.detail;\n\n this.click.emit({ value });\n };\n\n handleClick = async (event: MouseEvent) => {\n event.stopPropagation();\n this.popoverElement.controlElement = this.dropdownBtn;\n if (shouldShowActionSheet(this)) {\n const { value } = await showActionSheetList(this, event);\n this.click.emit({ value });\n } else {\n await this.popoverElement.toggle();\n }\n };\n\n handleKeydown = async (event: KeyboardEvent) => {\n const isTabMetaOrCtrl = event.metaKey || event.ctrlKey || event.key === 'Tab';\n if (isTabMetaOrCtrl) return;\n\n event.preventDefault();\n this.popoverElement.controlElement = this.dropdownBtn;\n if (shouldShowActionSheet(this, event)) {\n const { value } = await showActionSheetList(this, event);\n this.click.emit({ value });\n } else {\n this.optionList.handleExternalKeydown(event);\n }\n };\n\n handleWrapperClick = () => {\n this.dropdownBtn.focus();\n this.dropdownBtn.click();\n };\n\n onClickElsewhere = (event: CustomEvent) => {\n const target = event.target as HTMLClickElsewhereElement;\n if (target.localName === 'click-elsewhere') {\n event.stopPropagation();\n const { popoverElement } = this;\n if (!popoverElement) return;\n popoverElement.open = false;\n }\n };\n\n // #endregion\n // #region Render Methods\n\n renderHiddenElement() {\n return (\n <div\n id=\"option-description\"\n class=\"sr\"\n aria-hidden=\"true\"\n >\n {loc('tecton.element.optionList.optionCount', [this.optionCount])}\n </div>\n );\n }\n\n render() {\n const { optionCount, open } = this;\n const wrapperClassNames = ['tag'];\n if (optionCount) wrapperClassNames.push('has-options');\n\n return (\n <Host role={this.optionCount > 0 ? 'list' : undefined}>\n <click-elsewhere onChange={this.onClickElsewhere}>\n {this.optionCount ? (\n <Fragment>\n <div\n class=\"btn-wrapper\"\n onClick={this.handleWrapperClick}\n >\n <button\n class=\"tag-wrapper\"\n ref={el => (this.dropdownBtn = el)}\n test-id=\"btn-control\"\n type=\"button\"\n role=\"combobox\"\n onClick={this.handleClick}\n onKeyDown={this.handleKeydown}\n onFocusout={this.handleButtonFocusout}\n aria-controls=\"option-list\"\n aria-expanded={open ? 'true' : 'false'}\n aria-describedby=\"option-description\"\n >\n <div class={wrapperClassNames.join(' ')}>{this.label}</div>\n <q2-icon type=\"options\"></q2-icon>\n </button>\n </div>\n {this.renderHiddenElement()}\n </Fragment>\n ) : (\n <div\n class=\"tag-wrapper\"\n onClick={e => e.stopPropagation()}\n >\n <div class={wrapperClassNames.join(' ')}>{this.label}</div>\n </div>\n )}\n\n {this.optionCount > 0 && (\n <q2-popover\n ref={el => (this.popoverElement = el)}\n controlElement={this.dropdownBtn}\n open={this.open}\n maxHeight={this.popoverMaxHeight}\n minHeight={this.popoverMinHeight}\n direction={this.popoverDirection}\n align={this.popoverAlignment}\n >\n <q2-option-list\n id=\"option-list\"\n ref={el => (this.optionList = el)}\n onChange={this.handleChange}\n type=\"menu\"\n align=\"right\"\n label={loc('tecton.element.optionList.label', [this.optionListLabel])}\n no-select\n >\n <slot />\n </q2-option-list>\n </q2-popover>\n )}\n </click-elsewhere>\n </Host>\n );\n }\n\n // #endregion\n}\n"]}
@@ -458,6 +458,11 @@ describe('q2-tag', () => {
458
458
  await page.waitForChanges();
459
459
  expect(await getFocusedAttribute(page, 'test-id')).toEqual('btn-control');
460
460
  });
461
+ it('focuses active option and opens the list when element.focus() is called', async function () {
462
+ await tag.focus();
463
+ await page.waitForChanges();
464
+ expect(await getFocusedAttribute(page, 'test-id')).toEqual('btn-control');
465
+ });
461
466
  });
462
467
  describe('Regressions', () => {
463
468
  describe('TCT-2161', () => {
@@ -505,7 +510,7 @@ describe('q2-tag', () => {
505
510
  await page.waitForChanges();
506
511
  const snapshot = await page.accessibility.snapshot();
507
512
  const button = snapshot.children[0];
508
- const optionList = snapshot.children[1];
513
+ const optionList = snapshot.children[1].children[0];
509
514
  expect(button.role).toEqual('combobox');
510
515
  expect(optionList.role).toEqual('menu');
511
516
  expect(optionList.children).toHaveLength(3);