q2-tecton-elements 1.53.1 → 1.53.2

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 (413) hide show
  1. package/dist/cjs/click-elsewhere_2.cjs.entry.js +59 -60
  2. package/dist/cjs/click-elsewhere_2.cjs.entry.js.map +1 -1
  3. package/dist/cjs/{index-07285783.js → index-76f63767.js} +1 -21
  4. package/dist/cjs/index-76f63767.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 +1 -1
  24. package/dist/cjs/q2-editable-field.cjs.entry.js +1 -1
  25. package/dist/cjs/q2-example.cjs.entry.js +1 -1
  26. package/dist/cjs/q2-file-picker.cjs.entry.js +1 -1
  27. package/dist/cjs/q2-formatted-text.cjs.entry.js +1 -1
  28. package/dist/cjs/q2-item_3.cjs.entry.js +3 -3
  29. package/dist/cjs/q2-legend.cjs.entry.js +1 -1
  30. package/dist/cjs/q2-loc.cjs.entry.js +2 -2
  31. package/dist/cjs/q2-message.cjs.entry.js +2 -2
  32. package/dist/cjs/q2-month-picker.cjs.entry.js +3 -3
  33. package/dist/cjs/q2-optgroup.cjs.entry.js +2 -2
  34. package/dist/cjs/q2-option-list.cjs.entry.js +1 -1
  35. package/dist/cjs/q2-option.cjs.entry.js +2 -2
  36. package/dist/cjs/q2-pagination.cjs.entry.js +4 -4
  37. package/dist/cjs/q2-pill.cjs.entry.js +2 -2
  38. package/dist/cjs/q2-radio-group.cjs.entry.js +1 -1
  39. package/dist/cjs/q2-radio.cjs.entry.js +1 -1
  40. package/dist/cjs/q2-relative-time.cjs.entry.js +2 -2
  41. package/dist/cjs/q2-resize-observer.cjs.entry.js +1 -1
  42. package/dist/cjs/q2-section.cjs.entry.js +3 -3
  43. package/dist/cjs/q2-select.cjs.entry.js +89 -13
  44. package/dist/cjs/q2-select.cjs.entry.js.map +1 -1
  45. package/dist/cjs/q2-stepper-pane.cjs.entry.js +1 -1
  46. package/dist/cjs/q2-stepper-vertical.cjs.entry.js +2 -2
  47. package/dist/cjs/q2-stepper.cjs.entry.js +2 -2
  48. package/dist/cjs/q2-tag.cjs.entry.js +2 -2
  49. package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
  50. package/dist/cjs/q2-textarea.cjs.entry.js +2 -2
  51. package/dist/cjs/q2-tooltip.cjs.entry.js +1 -1
  52. package/dist/cjs/tecton-tab-pane.cjs.entry.js +2 -2
  53. package/dist/collection/components/click-elsewhere/click-elsewhere.js.map +1 -1
  54. package/dist/collection/components/click-elsewhere/test/click-elsewhere-test.e2e.js.map +1 -1
  55. package/dist/collection/components/q2-action-group/q2-action-group.js +1 -1
  56. package/dist/collection/components/q2-action-group/q2-action-group.js.map +1 -1
  57. package/dist/collection/components/q2-action-group/test/q2-action-group.e2e.js.map +1 -1
  58. package/dist/collection/components/q2-action-group/test/q2-action-group.spec.js.map +1 -1
  59. package/dist/collection/components/q2-action-sheet/q2-action-sheet.js +1 -1
  60. package/dist/collection/components/q2-action-sheet/q2-action-sheet.js.map +1 -1
  61. package/dist/collection/components/q2-action-sheet/test/q2-action-sheet-test.e2e.js.map +1 -1
  62. package/dist/collection/components/q2-avatar/q2-avatar.js +1 -1
  63. package/dist/collection/components/q2-avatar/q2-avatar.js.map +1 -1
  64. package/dist/collection/components/q2-avatar/test/q2-avatar-test.e2e.js.map +1 -1
  65. package/dist/collection/components/q2-badge/q2-badge.js.map +1 -1
  66. package/dist/collection/components/q2-badge/test/q2-badge-test.e2e.js.map +1 -1
  67. package/dist/collection/components/q2-btn/q2-btn.js.map +1 -1
  68. package/dist/collection/components/q2-btn/test/q2-btn-test.e2e.js.map +1 -1
  69. package/dist/collection/components/q2-calendar/q2-calendar-helpers.js.map +1 -1
  70. package/dist/collection/components/q2-calendar/q2-calendar-types.js.map +1 -1
  71. package/dist/collection/components/q2-calendar/q2-calendar-validation.js.map +1 -1
  72. package/dist/collection/components/q2-calendar/q2-calendar.js.map +1 -1
  73. package/dist/collection/components/q2-calendar/q2-month-picker.js +2 -2
  74. package/dist/collection/components/q2-calendar/q2-month-picker.js.map +1 -1
  75. package/dist/collection/components/q2-calendar/test/helpers-test.e2e.js.map +1 -1
  76. package/dist/collection/components/q2-calendar/test/q2-calendar-month-picker-test.e2e.js.map +1 -1
  77. package/dist/collection/components/q2-calendar/test/q2-calendar-test.e2e.js +2 -2
  78. package/dist/collection/components/q2-calendar/test/q2-calendar-test.e2e.js.map +1 -1
  79. package/dist/collection/components/q2-calendar/test/validation-test.e2e.js.map +1 -1
  80. package/dist/collection/components/q2-card/q2-card.js.map +1 -1
  81. package/dist/collection/components/q2-card/test/q2-card-test.e2e.js.map +1 -1
  82. package/dist/collection/components/q2-carousel/q2-carousel.js.map +1 -1
  83. package/dist/collection/components/q2-carousel/test/q2-carousel-test.e2e.js.map +1 -1
  84. package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.js +2 -2
  85. package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.js.map +1 -1
  86. package/dist/collection/components/q2-carousel-pane/test/q2-carousel-pane-test.e2e.js.map +1 -1
  87. package/dist/collection/components/q2-carousel-pane/test/q2-carousel-pane-test.spec.js.map +1 -1
  88. package/dist/collection/components/q2-chart-area/q2-chart-area.js +1 -1
  89. package/dist/collection/components/q2-chart-area/q2-chart-area.js.map +1 -1
  90. package/dist/collection/components/q2-chart-area/test/q2-chart-area-test.e2e.js.map +1 -1
  91. package/dist/collection/components/q2-chart-bar/q2-chart-bar.js +1 -1
  92. package/dist/collection/components/q2-chart-bar/q2-chart-bar.js.map +1 -1
  93. package/dist/collection/components/q2-chart-bar/test/q2-chart-bar-test.e2e.js.map +1 -1
  94. package/dist/collection/components/q2-chart-donut/q2-chart-donut.js +1 -1
  95. package/dist/collection/components/q2-chart-donut/q2-chart-donut.js.map +1 -1
  96. package/dist/collection/components/q2-chart-donut/test/q2-chart-donut-test.e2e.js.map +1 -1
  97. package/dist/collection/components/q2-checkbox/q2-checkbox.js.map +1 -1
  98. package/dist/collection/components/q2-checkbox/test/q2-checkbox-test.e2e.js.map +1 -1
  99. package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.js.map +1 -1
  100. package/dist/collection/components/q2-checkbox-group/test/q2-checkbox-group-test.e2e.js.map +1 -1
  101. package/dist/collection/components/q2-currency/q2-currency.js +1 -1
  102. package/dist/collection/components/q2-currency/q2-currency.js.map +1 -1
  103. package/dist/collection/components/q2-currency/test/q2-currency-test.e2e.js.map +1 -1
  104. package/dist/collection/components/q2-data-table/q2-data-table.js.map +1 -1
  105. package/dist/collection/components/q2-data-table/test/q2-data-table-test.e2e.js.map +1 -1
  106. package/dist/collection/components/q2-detail/q2-detail.js +1 -1
  107. package/dist/collection/components/q2-detail/q2-detail.js.map +1 -1
  108. package/dist/collection/components/q2-detail/test/q2-detail-test.e2e.js.map +1 -1
  109. package/dist/collection/components/q2-dropdown/q2-dropdown.js.map +1 -1
  110. package/dist/collection/components/q2-dropdown/test/q2-dropdown-test.e2e.js +5 -17
  111. package/dist/collection/components/q2-dropdown/test/q2-dropdown-test.e2e.js.map +1 -1
  112. package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.js.map +1 -1
  113. package/dist/collection/components/q2-dropdown-item/test/q2-dropdown-item-test.e2e.js.map +1 -1
  114. package/dist/collection/components/q2-editable-field/q2-editable-field.js.map +1 -1
  115. package/dist/collection/components/q2-editable-field/test/q2-editable-field-test.e2e.js.map +1 -1
  116. package/dist/collection/components/q2-example/q2-example.js +1 -1
  117. package/dist/collection/components/q2-example/q2-example.js.map +1 -1
  118. package/dist/collection/components/q2-example/test/q2-example.e2e.js.map +1 -1
  119. package/dist/collection/components/q2-example/test/q2-example.spec.js.map +1 -1
  120. package/dist/collection/components/q2-file-picker/q2-file-picker.js.map +1 -1
  121. package/dist/collection/components/q2-file-picker/test/q2-file-picker-test.e2e.js.map +1 -1
  122. package/dist/collection/components/q2-file-picker/test/q2-file-picker-test.spec.js.map +1 -1
  123. package/dist/collection/components/q2-formatted-text/q2-formatted-text.js +1 -1
  124. package/dist/collection/components/q2-formatted-text/q2-formatted-text.js.map +1 -1
  125. package/dist/collection/components/q2-formatted-text/test/q2-formatted-text-test.e2e.js.map +1 -1
  126. package/dist/collection/components/q2-icon/q2-icon-types.js.map +1 -1
  127. package/dist/collection/components/q2-icon/q2-icon.js.map +1 -1
  128. package/dist/collection/components/q2-icon/test/q2-icon-test.e2e.js.map +1 -1
  129. package/dist/collection/components/q2-input/formatting/alpha.js.map +1 -1
  130. package/dist/collection/components/q2-input/formatting/alpha.spec.js.map +1 -1
  131. package/dist/collection/components/q2-input/formatting/alphanumeric.js.map +1 -1
  132. package/dist/collection/components/q2-input/formatting/alphanumeric.spec.js.map +1 -1
  133. package/dist/collection/components/q2-input/formatting/credit-card.js.map +1 -1
  134. package/dist/collection/components/q2-input/formatting/credit-card.spec.js.map +1 -1
  135. package/dist/collection/components/q2-input/formatting/currency.js.map +1 -1
  136. package/dist/collection/components/q2-input/formatting/currency.spec.js.map +1 -1
  137. package/dist/collection/components/q2-input/formatting/date.js.map +1 -1
  138. package/dist/collection/components/q2-input/formatting/date.spec.js.map +1 -1
  139. package/dist/collection/components/q2-input/formatting/generic.js.map +1 -1
  140. package/dist/collection/components/q2-input/formatting/number.js.map +1 -1
  141. package/dist/collection/components/q2-input/formatting/numeric.js.map +1 -1
  142. package/dist/collection/components/q2-input/formatting/numeric.spec.js.map +1 -1
  143. package/dist/collection/components/q2-input/formatting/phone.js.map +1 -1
  144. package/dist/collection/components/q2-input/formatting/phone.spec.js.map +1 -1
  145. package/dist/collection/components/q2-input/formatting/postal.js.map +1 -1
  146. package/dist/collection/components/q2-input/formatting/postal.spec.js.map +1 -1
  147. package/dist/collection/components/q2-input/formatting/ssn.js.map +1 -1
  148. package/dist/collection/components/q2-input/formatting/ssn.spec.js.map +1 -1
  149. package/dist/collection/components/q2-input/formatting/tin.js.map +1 -1
  150. package/dist/collection/components/q2-input/formatting/tin.spec.js.map +1 -1
  151. package/dist/collection/components/q2-input/q2-input-types.js.map +1 -1
  152. package/dist/collection/components/q2-input/q2-input.js +1 -1
  153. package/dist/collection/components/q2-input/q2-input.js.map +1 -1
  154. package/dist/collection/components/q2-input/test/q2-input-credit-card-test.e2e.js.map +1 -1
  155. package/dist/collection/components/q2-input/test/q2-input-test.e2e.js.map +1 -1
  156. package/dist/collection/components/q2-input/test/q2-input-test.spec.js.map +1 -1
  157. package/dist/collection/components/q2-item/q2-item.js +1 -1
  158. package/dist/collection/components/q2-item/q2-item.js.map +1 -1
  159. package/dist/collection/components/q2-item/test/q2-item-test.e2e.js.map +1 -1
  160. package/dist/collection/components/q2-item/test/q2-item-test.spec.js.map +1 -1
  161. package/dist/collection/components/q2-legend/q2-legend.js +1 -1
  162. package/dist/collection/components/q2-legend/q2-legend.js.map +1 -1
  163. package/dist/collection/components/q2-legend/test/q2-legend-test.e2e.js.map +1 -1
  164. package/dist/collection/components/q2-legend/test/q2-legend-test.spec.js.map +1 -1
  165. package/dist/collection/components/q2-link/q2-link.js.map +1 -1
  166. package/dist/collection/components/q2-link/test/q2-link-test.e2e.js.map +1 -1
  167. package/dist/collection/components/q2-list/q2-list.js +1 -1
  168. package/dist/collection/components/q2-list/q2-list.js.map +1 -1
  169. package/dist/collection/components/q2-list/test/q2-list-test.e2e.js.map +1 -1
  170. package/dist/collection/components/q2-loading/q2-loading.js.map +1 -1
  171. package/dist/collection/components/q2-loading/skeleton/q2-loading-element/index.js.map +1 -1
  172. package/dist/collection/components/q2-loading/skeleton/shapes.js.map +1 -1
  173. package/dist/collection/components/q2-loading/test/q2-loading-element-test.e2e.js.map +1 -1
  174. package/dist/collection/components/q2-loading/test/q2-loading-test.e2e.js.map +1 -1
  175. package/dist/collection/components/q2-loc/q2-loc.js +1 -1
  176. package/dist/collection/components/q2-loc/q2-loc.js.map +1 -1
  177. package/dist/collection/components/q2-loc/test/q2-loc-test.e2e.js.map +1 -1
  178. package/dist/collection/components/q2-loc/test/q2-loc-test.spec.js.map +1 -1
  179. package/dist/collection/components/q2-message/q2-message.js +1 -1
  180. package/dist/collection/components/q2-message/q2-message.js.map +1 -1
  181. package/dist/collection/components/q2-message/test/q2-message-test.e2e.js.map +1 -1
  182. package/dist/collection/components/q2-optgroup/q2-optgroup.js +1 -1
  183. package/dist/collection/components/q2-optgroup/q2-optgroup.js.map +1 -1
  184. package/dist/collection/components/q2-optgroup/test/q2-optgroup-test.e2e.js.map +1 -1
  185. package/dist/collection/components/q2-option/q2-option.js +1 -1
  186. package/dist/collection/components/q2-option/q2-option.js.map +1 -1
  187. package/dist/collection/components/q2-option/test/q2-option-test.e2e.js.map +1 -1
  188. package/dist/collection/components/q2-option/test/q2-option-test.spec.js.map +1 -1
  189. package/dist/collection/components/q2-option-list/q2-option-list.js.map +1 -1
  190. package/dist/collection/components/q2-option-list/test/q2-option-list-test.e2e.js.map +1 -1
  191. package/dist/collection/components/q2-pagination/q2-pagination.js +3 -3
  192. package/dist/collection/components/q2-pagination/q2-pagination.js.map +1 -1
  193. package/dist/collection/components/q2-pagination/test/q2-pagination-test.e2e.js +1 -0
  194. package/dist/collection/components/q2-pagination/test/q2-pagination-test.e2e.js.map +1 -1
  195. package/dist/collection/components/q2-pill/q2-pill.js +1 -1
  196. package/dist/collection/components/q2-pill/q2-pill.js.map +1 -1
  197. package/dist/collection/components/q2-pill/test/q2-pill-test.e2e.js +1 -1
  198. package/dist/collection/components/q2-pill/test/q2-pill-test.e2e.js.map +1 -1
  199. package/dist/collection/components/q2-popover/q2-popover.css +18 -10
  200. package/dist/collection/components/q2-popover/q2-popover.js +59 -59
  201. package/dist/collection/components/q2-popover/q2-popover.js.map +1 -1
  202. package/dist/collection/components/q2-popover/test/q2-popover-test.e2e.js +1 -34
  203. package/dist/collection/components/q2-popover/test/q2-popover-test.e2e.js.map +1 -1
  204. package/dist/collection/components/q2-popover/test/q2-popover-test.spec.js +743 -435
  205. package/dist/collection/components/q2-popover/test/q2-popover-test.spec.js.map +1 -1
  206. package/dist/collection/components/q2-radio/q2-radio.js.map +1 -1
  207. package/dist/collection/components/q2-radio/test/q2-radio-test.e2e.js.map +1 -1
  208. package/dist/collection/components/q2-radio-group/q2-radio-group.js.map +1 -1
  209. package/dist/collection/components/q2-radio-group/test/q2-radio-group-test.e2e.js.map +1 -1
  210. package/dist/collection/components/q2-relative-time/q2-relative-time.js +1 -1
  211. package/dist/collection/components/q2-relative-time/q2-relative-time.js.map +1 -1
  212. package/dist/collection/components/q2-relative-time/test/q2-relative-time-test.e2e.js.map +1 -1
  213. package/dist/collection/components/q2-resize-observer/q2-resize-observer.js +1 -1
  214. package/dist/collection/components/q2-resize-observer/q2-resize-observer.js.map +1 -1
  215. package/dist/collection/components/q2-resize-observer/test/q2-resize-observer.e2e.js.map +1 -1
  216. package/dist/collection/components/q2-resize-observer/test/q2-resize-observer.spec.js.map +1 -1
  217. package/dist/collection/components/q2-section/q2-section.js +2 -2
  218. package/dist/collection/components/q2-section/q2-section.js.map +1 -1
  219. package/dist/collection/components/q2-section/test/q2-section-test.e2e.js.map +1 -1
  220. package/dist/collection/components/q2-select/q2-select.js +110 -15
  221. package/dist/collection/components/q2-select/q2-select.js.map +1 -1
  222. package/dist/collection/components/q2-select/test/q2-select-test.e2e.js +1 -1
  223. package/dist/collection/components/q2-select/test/q2-select-test.e2e.js.map +1 -1
  224. package/dist/collection/components/q2-select/test/q2-select-test.spec.js +412 -0
  225. package/dist/collection/components/q2-select/test/q2-select-test.spec.js.map +1 -0
  226. package/dist/collection/components/q2-stepper/q2-stepper.js +1 -1
  227. package/dist/collection/components/q2-stepper/q2-stepper.js.map +1 -1
  228. package/dist/collection/components/q2-stepper/test/q2-stepper-test.e2e.js.map +1 -1
  229. package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.js.map +1 -1
  230. package/dist/collection/components/q2-stepper-pane/test/q2-stepper-pane-test.e2e.js.map +1 -1
  231. package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js +1 -1
  232. package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js.map +1 -1
  233. package/dist/collection/components/q2-stepper-vertical/test/q2-stepper-vertical-test.e2e.js.map +1 -1
  234. package/dist/collection/components/q2-tab-container/q2-tab-container.js +1 -1
  235. package/dist/collection/components/q2-tab-container/q2-tab-container.js.map +1 -1
  236. package/dist/collection/components/q2-tab-container/test/q2-tab-container-test.e2e.js.map +1 -1
  237. package/dist/collection/components/q2-tab-container/test/q2-tab-container-test.spec.js.map +1 -1
  238. package/dist/collection/components/q2-tab-pane/q2-tab-pane.js +1 -1
  239. package/dist/collection/components/q2-tab-pane/q2-tab-pane.js.map +1 -1
  240. package/dist/collection/components/q2-tab-pane/test/q2-tab-pane-test.e2e.js.map +1 -1
  241. package/dist/collection/components/q2-tag/q2-tag.js +1 -1
  242. package/dist/collection/components/q2-tag/q2-tag.js.map +1 -1
  243. package/dist/collection/components/q2-tag/test/q2-tag-test.e2e.js +6 -1
  244. package/dist/collection/components/q2-tag/test/q2-tag-test.e2e.js.map +1 -1
  245. package/dist/collection/components/q2-textarea/q2-textarea.js +1 -1
  246. package/dist/collection/components/q2-textarea/q2-textarea.js.map +1 -1
  247. package/dist/collection/components/q2-textarea/test/q2-textarea-test.e2e.js.map +1 -1
  248. package/dist/collection/components/q2-tooltip/q2-tooltip.js.map +1 -1
  249. package/dist/collection/components/q2-tooltip/test/q2-tooltip-test.e2e.js.map +1 -1
  250. package/dist/collection/components/tecton-tab-pane/tecton-tab-pane-types.js.map +1 -1
  251. package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js +2 -2
  252. package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js.map +1 -1
  253. package/dist/collection/components/tecton-tab-pane/test/tecton-tab-pane-test.e2e.js.map +1 -1
  254. package/dist/collection/index.js.map +1 -1
  255. package/dist/collection/utils/action-sheet.js.map +1 -1
  256. package/dist/collection/utils/charting.js.map +1 -1
  257. package/dist/collection/utils/helpers.js.map +1 -1
  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 +1 -20
  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-example.js +1 -1
  275. package/dist/components/q2-formatted-text.js +1 -1
  276. package/dist/components/q2-input2.js +1 -1
  277. package/dist/components/q2-item2.js +1 -1
  278. package/dist/components/q2-legend2.js +1 -1
  279. package/dist/components/q2-list2.js +1 -1
  280. package/dist/components/q2-loc.js +1 -1
  281. package/dist/components/q2-message2.js +1 -1
  282. package/dist/components/q2-month-picker.js +2 -2
  283. package/dist/components/q2-optgroup2.js +1 -1
  284. package/dist/components/q2-option2.js +1 -1
  285. package/dist/components/q2-pagination.js +3 -3
  286. package/dist/components/q2-pill.js +1 -1
  287. package/dist/components/q2-popover2.js +58 -59
  288. package/dist/components/q2-popover2.js.map +1 -1
  289. package/dist/components/q2-relative-time.js +1 -1
  290. package/dist/components/q2-resize-observer2.js +1 -1
  291. package/dist/components/q2-section.js +2 -2
  292. package/dist/components/q2-select2.js +92 -16
  293. package/dist/components/q2-select2.js.map +1 -1
  294. package/dist/components/q2-stepper-vertical.js +1 -1
  295. package/dist/components/q2-stepper.js +1 -1
  296. package/dist/components/q2-tab-container.js +1 -1
  297. package/dist/components/q2-tab-pane.js +1 -1
  298. package/dist/components/q2-tag.js +1 -1
  299. package/dist/components/q2-textarea.js +1 -1
  300. package/dist/components/tecton-tab-pane.js +2 -2
  301. package/dist/esm/click-elsewhere_2.entry.js +59 -60
  302. package/dist/esm/click-elsewhere_2.entry.js.map +1 -1
  303. package/dist/esm/{index-d18e2a20.js → index-504f1a9e.js} +2 -21
  304. package/dist/esm/index-504f1a9e.js.map +1 -0
  305. package/dist/esm/loader.js +1 -1
  306. package/dist/esm/q2-action-group.entry.js +2 -2
  307. package/dist/esm/q2-action-sheet.entry.js +2 -2
  308. package/dist/esm/q2-avatar.entry.js +1 -1
  309. package/dist/esm/q2-badge_7.entry.js +4 -4
  310. package/dist/esm/q2-calendar.entry.js +1 -1
  311. package/dist/esm/q2-card.entry.js +1 -1
  312. package/dist/esm/q2-carousel-pane.entry.js +3 -3
  313. package/dist/esm/q2-carousel.entry.js +1 -1
  314. package/dist/esm/q2-chart-area.entry.js +2 -2
  315. package/dist/esm/q2-chart-bar.entry.js +2 -2
  316. package/dist/esm/q2-chart-donut.entry.js +2 -2
  317. package/dist/esm/q2-checkbox-group.entry.js +1 -1
  318. package/dist/esm/q2-checkbox.entry.js +1 -1
  319. package/dist/esm/q2-currency.entry.js +1 -1
  320. package/dist/esm/q2-data-table.entry.js +1 -1
  321. package/dist/esm/q2-detail.entry.js +2 -2
  322. package/dist/esm/q2-dropdown-item.entry.js +1 -1
  323. package/dist/esm/q2-dropdown.entry.js +1 -1
  324. package/dist/esm/q2-editable-field.entry.js +1 -1
  325. package/dist/esm/q2-example.entry.js +1 -1
  326. package/dist/esm/q2-file-picker.entry.js +1 -1
  327. package/dist/esm/q2-formatted-text.entry.js +1 -1
  328. package/dist/esm/q2-item_3.entry.js +3 -3
  329. package/dist/esm/q2-legend.entry.js +1 -1
  330. package/dist/esm/q2-loc.entry.js +2 -2
  331. package/dist/esm/q2-message.entry.js +2 -2
  332. package/dist/esm/q2-month-picker.entry.js +3 -3
  333. package/dist/esm/q2-optgroup.entry.js +2 -2
  334. package/dist/esm/q2-option-list.entry.js +1 -1
  335. package/dist/esm/q2-option.entry.js +2 -2
  336. package/dist/esm/q2-pagination.entry.js +4 -4
  337. package/dist/esm/q2-pill.entry.js +2 -2
  338. package/dist/esm/q2-radio-group.entry.js +1 -1
  339. package/dist/esm/q2-radio.entry.js +1 -1
  340. package/dist/esm/q2-relative-time.entry.js +2 -2
  341. package/dist/esm/q2-resize-observer.entry.js +1 -1
  342. package/dist/esm/q2-section.entry.js +3 -3
  343. package/dist/esm/q2-select.entry.js +90 -14
  344. package/dist/esm/q2-select.entry.js.map +1 -1
  345. package/dist/esm/q2-stepper-pane.entry.js +1 -1
  346. package/dist/esm/q2-stepper-vertical.entry.js +2 -2
  347. package/dist/esm/q2-stepper.entry.js +2 -2
  348. package/dist/esm/q2-tag.entry.js +2 -2
  349. package/dist/esm/q2-tecton-elements.js +1 -1
  350. package/dist/esm/q2-textarea.entry.js +2 -2
  351. package/dist/esm/q2-tooltip.entry.js +1 -1
  352. package/dist/esm/tecton-tab-pane.entry.js +2 -2
  353. package/dist/jest.setup.js +22 -0
  354. package/dist/jest.setup.js.map +1 -0
  355. package/dist/q2-tecton-elements/click-elsewhere_2.entry.js +170 -164
  356. package/dist/q2-tecton-elements/click-elsewhere_2.entry.js.map +1 -1
  357. package/dist/q2-tecton-elements/{index-d18e2a20.js → index-504f1a9e.js} +51 -69
  358. package/dist/q2-tecton-elements/index-504f1a9e.js.map +1 -0
  359. package/dist/q2-tecton-elements/q2-action-group.entry.js +4 -4
  360. package/dist/q2-tecton-elements/q2-action-sheet.entry.js +34 -34
  361. package/dist/q2-tecton-elements/q2-avatar.entry.js +6 -6
  362. package/dist/q2-tecton-elements/q2-badge_7.entry.js +17 -17
  363. package/dist/q2-tecton-elements/q2-calendar.entry.js +1 -1
  364. package/dist/q2-tecton-elements/q2-card.entry.js +1 -1
  365. package/dist/q2-tecton-elements/q2-carousel-pane.entry.js +21 -21
  366. package/dist/q2-tecton-elements/q2-carousel.entry.js +1 -1
  367. package/dist/q2-tecton-elements/q2-chart-area.entry.js +3 -3
  368. package/dist/q2-tecton-elements/q2-chart-bar.entry.js +3 -3
  369. package/dist/q2-tecton-elements/q2-chart-donut.entry.js +101 -101
  370. package/dist/q2-tecton-elements/q2-checkbox-group.entry.js +1 -1
  371. package/dist/q2-tecton-elements/q2-checkbox.entry.js +1 -1
  372. package/dist/q2-tecton-elements/q2-currency.entry.js +6 -6
  373. package/dist/q2-tecton-elements/q2-data-table.entry.js +1 -1
  374. package/dist/q2-tecton-elements/q2-detail.entry.js +39 -39
  375. package/dist/q2-tecton-elements/q2-dropdown-item.entry.js +1 -1
  376. package/dist/q2-tecton-elements/q2-dropdown.entry.js +1 -1
  377. package/dist/q2-tecton-elements/q2-editable-field.entry.js +8 -8
  378. package/dist/q2-tecton-elements/q2-example.entry.js +1 -1
  379. package/dist/q2-tecton-elements/q2-file-picker.entry.js +1 -1
  380. package/dist/q2-tecton-elements/q2-formatted-text.entry.js +2 -2
  381. package/dist/q2-tecton-elements/q2-item_3.entry.js +19 -19
  382. package/dist/q2-tecton-elements/q2-legend.entry.js +2 -2
  383. package/dist/q2-tecton-elements/q2-loc.entry.js +5 -5
  384. package/dist/q2-tecton-elements/q2-message.entry.js +21 -21
  385. package/dist/q2-tecton-elements/q2-month-picker.entry.js +14 -14
  386. package/dist/q2-tecton-elements/q2-optgroup.entry.js +8 -8
  387. package/dist/q2-tecton-elements/q2-option-list.entry.js +1 -1
  388. package/dist/q2-tecton-elements/q2-option.entry.js +14 -14
  389. package/dist/q2-tecton-elements/q2-pagination.entry.js +34 -34
  390. package/dist/q2-tecton-elements/q2-pill.entry.js +14 -14
  391. package/dist/q2-tecton-elements/q2-radio-group.entry.js +1 -1
  392. package/dist/q2-tecton-elements/q2-radio.entry.js +1 -1
  393. package/dist/q2-tecton-elements/q2-relative-time.entry.js +2 -2
  394. package/dist/q2-tecton-elements/q2-resize-observer.entry.js +1 -1
  395. package/dist/q2-tecton-elements/q2-section.entry.js +19 -19
  396. package/dist/q2-tecton-elements/q2-select.entry.js +156 -92
  397. package/dist/q2-tecton-elements/q2-select.entry.js.map +1 -1
  398. package/dist/q2-tecton-elements/q2-stepper-pane.entry.js +1 -1
  399. package/dist/q2-tecton-elements/q2-stepper-vertical.entry.js +37 -37
  400. package/dist/q2-tecton-elements/q2-stepper.entry.js +29 -29
  401. package/dist/q2-tecton-elements/q2-tag.entry.js +25 -25
  402. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
  403. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js.map +1 -1
  404. package/dist/q2-tecton-elements/q2-textarea.entry.js +3 -3
  405. package/dist/q2-tecton-elements/q2-tooltip.entry.js +1 -1
  406. package/dist/q2-tecton-elements/tecton-tab-pane.entry.js +6 -6
  407. package/dist/types/builds/q2e/development/tecton/tecton/packages/q2-tecton-elements/.stencil/jest.setup.d.ts +1 -0
  408. package/dist/types/components/q2-popover/q2-popover.d.ts +4 -4
  409. package/dist/types/components/q2-select/q2-select.d.ts +19 -0
  410. package/package.json +3 -3
  411. package/dist/cjs/index-07285783.js.map +0 -1
  412. package/dist/esm/index-d18e2a20.js.map +0 -1
  413. package/dist/q2-tecton-elements/index-d18e2a20.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"q2-tab-container.js","sourceRoot":"","sources":["../../../src/components/q2-tab-container/q2-tab-container.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n ComponentInterface,\n Prop,\n Element,\n Event,\n EventEmitter,\n State,\n Listen,\n Watch,\n h,\n Fragment,\n Method,\n} from '@stencil/core';\nimport { createGuid, loc, overrideFocus, isEventFromElement } from 'src/utils';\nimport { JSX } from '../../components';\nimport { Q2Badge } from '../q2-badge/q2-badge';\n\ntype TabPane = {\n label: string;\n value: string;\n badgeCount: number;\n badgeDescription: string;\n badgeTheme: Q2Badge['theme'];\n badgeStatus: Q2Badge['status'];\n};\n\n@Component({ tag: 'q2-tab-container', shadow: true, styleUrl: 'q2-tab-container.scss' })\nexport class Q2TabContainer implements ComponentInterface {\n // #region Own Properties\n\n guid: number = createGuid();\n lastScrolled: number = new Date(null).getTime();\n listElement: HTMLUListElement;\n mutationObserver: MutationObserver;\n resizeObserver: ResizeObserver;\n scheduledAfterRender: (() => void)[] = [];\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 hasLeft: boolean = false;\n\n @State()\n hasRight: boolean = false;\n\n @State()\n scrollEnabled: boolean = false;\n\n @State()\n showScrollLeft: boolean = false;\n\n @State()\n showScrollRight: boolean = false;\n\n @State()\n tabs: TabPane[];\n\n // #endregion\n // #region Public Property API\n\n /**\n * Controls which variables are used to color the tab controls.\n *\n * - `undefined` (default)\n * - Uses `--t-tab-active` and `--t-tab-inactive`.\n * - `alt`\n * - Uses `--t-tab-alt-active` and `--t-tab-alt-inactive`.\n * - The default fallback for these variables is `inherit`.\n */\n @Prop({ reflect: true })\n color: 'alt' | undefined;\n\n /**\n * Used to establish a relationship between `q2-tab-container` and its associated tab panes.\n * @warning\n * The element can fail if this property is not set. Nested tab containers without the `name` property will not render correctly.\n */\n @Prop({ reflect: true })\n name: string;\n\n /** Controls visibility of tab list in a print view. Tab content will still be visible even if `noPrint` is true. */\n @Prop({ reflect: true })\n noPrint: boolean = false;\n\n /** Determines the font size of the tab controls. */\n @Prop({ reflect: true })\n type: 'main' | 'section';\n\n /** Corresponds to the value of the selected tab pane. */\n @Prop({ reflect: true, mutable: true })\n value: string;\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when the selected tab changes.\n * @legacyEvent\n */\n @Event()\n change: EventEmitter<{ value: string }>;\n\n /**\n * Emitted when the component has finished rendering.\n * @private\n */\n @Event()\n settled: EventEmitter<undefined>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback() {\n this.resizeObserver?.disconnect();\n this.resizeObserver = null;\n this.mutationObserver?.disconnect();\n this.mutationObserver = null;\n }\n\n componentWillLoad() {\n const observer = new MutationObserver(this.updateTabData);\n observer.observe(this.hostElement, { childList: true, attributes: true });\n this.mutationObserver = observer;\n this.resizeObserver = new ResizeObserver(() => this.checkScrollState());\n this.updateTabData();\n }\n\n componentDidLoad() {\n this.resizeObserver?.observe(this.listElement);\n this.checkScrollState();\n overrideFocus(this.hostElement);\n const index = this.tabs.findIndex(el => el.value === this.value);\n this.scheduledAfterRender.push(() => {\n const hasTabs = this.tabs.length > 0;\n if (!hasTabs) return;\n const tab = this.moveToTab(Math.max(index, 0), false);\n this.value = tab.dataset.value;\n });\n }\n\n componentDidRender() {\n this.scheduledAfterRender.forEach(fn => fn());\n this.scheduledAfterRender = [];\n this.settled.emit();\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('badge')\n onBadge() {\n this.setTabs();\n }\n\n @Listen('change')\n defaultChangeHandler(event: CustomEvent) {\n if (event.target === this.hostElement && !this.hostElement.onchange) {\n this.value = event.detail.value;\n }\n }\n\n @Listen('focus')\n onFocus(event: FocusEvent) {\n if (!isEventFromElement(event, this.hostElement)) return;\n const index = this.tabs.findIndex(el => el.value === this.selectedTabValue);\n this.moveToTab(index, true);\n }\n\n @Listen('resize', { target: 'window' })\n onResize() {\n this.checkScrollState();\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('name')\n nameObserver() {\n this.updateTabData();\n }\n\n @Watch('value')\n valueObserver() {\n this.updateTabData();\n this.scheduledAfterRender.push(this.resizeIframe);\n const index = this.tabs.findIndex(el => el.value === this.value);\n if (index > -1) {\n this.scheduledAfterRender.push(() => this.moveToTab(index, false));\n }\n }\n\n // #endregion\n // #region Local Methods\n\n get selectedTabValue() {\n return this.value || this.tabPanes[0].value || '';\n }\n\n get tabList() {\n return this.hostElement.shadowRoot.querySelector('.tab-list');\n }\n\n get tabPanes() {\n const tabPanes = this.hostElement.querySelectorAll<HTMLQ2TabPaneElement | HTMLTectonTabPaneElement>(\n 'q2-tab-pane, tecton-tab-pane'\n );\n\n if (tabPanes.length === 0) {\n return [];\n }\n\n return Array.from(tabPanes).filter(pane => pane.name === this.name);\n }\n\n checkScrollState = () => {\n if (!this.listElement) return;\n const { scrollLeft, scrollWidth, clientWidth } = this.listElement;\n this.scrollEnabled = scrollWidth > clientWidth;\n this.showScrollLeft = scrollLeft > 0;\n this.showScrollRight = scrollWidth > Math.ceil(scrollLeft) + clientWidth;\n };\n\n moveToAdjacentTab = (value: string, direction: 'next' | 'prev' | 'first' | 'last') => {\n const index = this.tabs.map(({ value }) => value).indexOf(value);\n\n let newIndex;\n switch (direction) {\n case 'next':\n newIndex = Math.min(index + 1, this.tabs.length - 1);\n break;\n\n case 'prev':\n newIndex = Math.max(index - 1, 0);\n break;\n\n case 'first':\n newIndex = 0;\n break;\n\n case 'last':\n newIndex = this.tabs.length - 1;\n break;\n }\n\n if (index === newIndex) return;\n\n this.moveToTab(newIndex, true);\n };\n\n moveToTab = (index: number, shouldFocus: boolean = true) => {\n const focusedValue = this.tabs[index].value;\n const focusedTab = this.listElement.querySelector<HTMLButtonElement>(`[data-value=\"${focusedValue}\"]`);\n if (shouldFocus) {\n focusedTab.focus({ preventScroll: true });\n }\n\n const left = focusedTab.offsetLeft - this.listElement.clientWidth / 2;\n this.listElement.scrollTo({\n left,\n behavior: 'smooth',\n });\n\n return focusedTab;\n };\n\n onScrollBtnClick = (direction?: 'left' | 'right') => {\n const { scrollLeft, scrollWidth, clientWidth } = this.listElement;\n const halfWidth = Math.floor(clientWidth / 2);\n let scrollAmount: number = 0;\n if (direction === 'left') {\n scrollAmount = -Math.min(halfWidth, Math.abs(scrollLeft));\n } else {\n scrollAmount = Math.min(halfWidth, Math.abs(scrollWidth - scrollLeft - clientWidth));\n }\n this.listElement.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n };\n\n onSlotChange = () => {\n this.checkScrollState();\n };\n\n onTabClick = (event: MouseEvent) => {\n const targetValue = ((event.target as HTMLButtonElement).closest('button[role=\"tab\"]') as HTMLButtonElement)\n .dataset.value;\n const isAlreadySelected = this.value === targetValue;\n if (isAlreadySelected) return;\n\n this.change.emit({\n value: targetValue,\n });\n };\n\n onTabKeyDown = (event: KeyboardEvent) => {\n const value = (event.target as HTMLElement).dataset.value;\n switch (event.key) {\n case 'ArrowRight':\n event.preventDefault();\n this.moveToAdjacentTab(value, 'next');\n break;\n\n case 'ArrowLeft':\n event.preventDefault();\n this.moveToAdjacentTab(value, 'prev');\n break;\n\n case 'Home':\n event.preventDefault();\n this.moveToAdjacentTab(value, 'first');\n break;\n\n case 'End':\n event.preventDefault();\n this.moveToAdjacentTab(value, 'last');\n break;\n\n case 'Space':\n case 'Enter':\n event.preventDefault();\n this.change.emit({ value });\n break;\n }\n };\n\n resizeIframe() {\n return window.TectonElements?.resizeIframe?.();\n }\n\n setTabs = () => {\n this.tabs = this.tabPanes.map(({ label, value, badgeCount, badgeDescription, badgeTheme, badgeStatus }) => ({\n label: (label && loc(label)) || '',\n value,\n badgeCount,\n badgeDescription,\n badgeTheme,\n badgeStatus,\n }));\n };\n\n updateTabData = () => {\n this.updateTabPaneProps();\n this.setTabs();\n };\n\n updateTabPaneProps = () => {\n this.tabPanes.forEach((tab, index) => {\n tab.selected = tab.value === this.selectedTabValue;\n tab.guid = this.guid;\n tab.index = index;\n });\n };\n\n // #endregion\n // #region Test Methods API\n\n /**\n * A method to select a tab pane corresponding with the value.\n *\n * @testOnly\n */\n @Method()\n async selectTab(value: string) {\n const paneButton = this.hostElement.shadowRoot.querySelector(`[test-id=\"tabLink\"][data-value=\"${value}\"]`);\n (paneButton as HTMLButtonElement)?.click();\n }\n // #endregion\n // #region Render Methods\n\n renderTab(tab: TabPane, index: number): JSX.IntrinsicElements {\n const { label, value } = tab;\n const isSelected = this.selectedTabValue === value;\n return (\n <li role=\"presentation\">\n <button\n id={`tab-${this.guid}-${index}`}\n data-value={value}\n test-id=\"tabLink\"\n tabIndex={isSelected ? 0 : -1}\n role=\"tab\"\n aria-selected={isSelected ? 'true' : 'false'}\n onClick={this.onTabClick}\n onKeyDown={this.onTabKeyDown}\n >\n {tab.badgeCount === undefined ? label : this.renderTabWithBadge(tab, isSelected)}\n </button>\n </li>\n );\n }\n\n renderTabWithBadge(tab: TabPane, isSelected: boolean): JSX.IntrinsicElements {\n let theme;\n if (!tab.badgeStatus && isSelected) theme = tab.badgeTheme || 'primary';\n let description;\n if (tab.badgeDescription) description = loc(tab.badgeDescription);\n else if (tab.badgeStatus) description = loc(`tecton.element.tab.pane.${tab.badgeStatus}`, [tab.badgeCount]);\n else description = loc('tecton.element.tab.pane.new');\n\n return (\n <div\n class=\"tab-pane-badge\"\n aria-label={`${tab.label}, ${tab.badgeCount} ${description}`}\n >\n {tab.label}\n <q2-badge\n value={tab.badgeCount}\n theme={theme}\n status={tab.badgeStatus}\n />\n </div>\n );\n }\n\n render() {\n return (\n <Fragment>\n <div class=\"tab-container\">\n {this.scrollEnabled && (\n <Fragment>\n <div\n class=\"gradient-left\"\n hidden={!this.showScrollLeft}\n ></div>\n <div\n class=\"gradient-right\"\n hidden={!this.showScrollRight}\n ></div>\n\n <q2-btn\n class=\"btn-left\"\n hidden={!this.showScrollLeft}\n onClick={() => this.onScrollBtnClick('left')}\n >\n <q2-icon\n type=\"chevron-left\"\n label=\"scroll left\"\n ></q2-icon>\n </q2-btn>\n\n <q2-btn\n class=\"btn-right\"\n hidden={!this.showScrollRight}\n onClick={() => this.onScrollBtnClick('right')}\n >\n <q2-icon\n type=\"chevron-right\"\n label=\"scroll right\"\n ></q2-icon>\n </q2-btn>\n </Fragment>\n )}\n\n <ul\n onScroll={this.checkScrollState}\n ref={el => (this.listElement = el)}\n class={this.noPrint ? 'no-print' : null}\n role=\"tablist\"\n >\n {this.tabs.map((tab, index) => this.renderTab(tab, index))}\n </ul>\n </div>\n <div class=\"tab-content\">\n <slot onSlotchange={() => this.onSlotChange()} />\n </div>\n </Fragment>\n );\n }\n\n // #endregion\n}\n"]}
1
+ {"version":3,"file":"q2-tab-container.js","sourceRoot":"","sources":["../../../../src/components/q2-tab-container/q2-tab-container.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n ComponentInterface,\n Prop,\n Element,\n Event,\n EventEmitter,\n State,\n Listen,\n Watch,\n h,\n Fragment,\n Method,\n} from '@stencil/core';\nimport { createGuid, loc, overrideFocus, isEventFromElement } from 'src/utils';\nimport { JSX } from '../../components';\nimport { Q2Badge } from '../q2-badge/q2-badge';\n\ntype TabPane = {\n label: string;\n value: string;\n badgeCount: number;\n badgeDescription: string;\n badgeTheme: Q2Badge['theme'];\n badgeStatus: Q2Badge['status'];\n};\n\n@Component({ tag: 'q2-tab-container', shadow: true, styleUrl: 'q2-tab-container.scss' })\nexport class Q2TabContainer implements ComponentInterface {\n // #region Own Properties\n\n guid: number = createGuid();\n lastScrolled: number = new Date(null).getTime();\n listElement: HTMLUListElement;\n mutationObserver: MutationObserver;\n resizeObserver: ResizeObserver;\n scheduledAfterRender: (() => void)[] = [];\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 hasLeft: boolean = false;\n\n @State()\n hasRight: boolean = false;\n\n @State()\n scrollEnabled: boolean = false;\n\n @State()\n showScrollLeft: boolean = false;\n\n @State()\n showScrollRight: boolean = false;\n\n @State()\n tabs: TabPane[];\n\n // #endregion\n // #region Public Property API\n\n /**\n * Controls which variables are used to color the tab controls.\n *\n * - `undefined` (default)\n * - Uses `--t-tab-active` and `--t-tab-inactive`.\n * - `alt`\n * - Uses `--t-tab-alt-active` and `--t-tab-alt-inactive`.\n * - The default fallback for these variables is `inherit`.\n */\n @Prop({ reflect: true })\n color: 'alt' | undefined;\n\n /**\n * Used to establish a relationship between `q2-tab-container` and its associated tab panes.\n * @warning\n * The element can fail if this property is not set. Nested tab containers without the `name` property will not render correctly.\n */\n @Prop({ reflect: true })\n name: string;\n\n /** Controls visibility of tab list in a print view. Tab content will still be visible even if `noPrint` is true. */\n @Prop({ reflect: true })\n noPrint: boolean = false;\n\n /** Determines the font size of the tab controls. */\n @Prop({ reflect: true })\n type: 'main' | 'section';\n\n /** Corresponds to the value of the selected tab pane. */\n @Prop({ reflect: true, mutable: true })\n value: string;\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when the selected tab changes.\n * @legacyEvent\n */\n @Event()\n change: EventEmitter<{ value: string }>;\n\n /**\n * Emitted when the component has finished rendering.\n * @private\n */\n @Event()\n settled: EventEmitter<undefined>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback() {\n this.resizeObserver?.disconnect();\n this.resizeObserver = null;\n this.mutationObserver?.disconnect();\n this.mutationObserver = null;\n }\n\n componentWillLoad() {\n const observer = new MutationObserver(this.updateTabData);\n observer.observe(this.hostElement, { childList: true, attributes: true });\n this.mutationObserver = observer;\n this.resizeObserver = new ResizeObserver(() => this.checkScrollState());\n this.updateTabData();\n }\n\n componentDidLoad() {\n this.resizeObserver?.observe(this.listElement);\n this.checkScrollState();\n overrideFocus(this.hostElement);\n const index = this.tabs.findIndex(el => el.value === this.value);\n this.scheduledAfterRender.push(() => {\n const hasTabs = this.tabs.length > 0;\n if (!hasTabs) return;\n const tab = this.moveToTab(Math.max(index, 0), false);\n this.value = tab.dataset.value;\n });\n }\n\n componentDidRender() {\n this.scheduledAfterRender.forEach(fn => fn());\n this.scheduledAfterRender = [];\n this.settled.emit();\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('badge')\n onBadge() {\n this.setTabs();\n }\n\n @Listen('change')\n defaultChangeHandler(event: CustomEvent) {\n if (event.target === this.hostElement && !this.hostElement.onchange) {\n this.value = event.detail.value;\n }\n }\n\n @Listen('focus')\n onFocus(event: FocusEvent) {\n if (!isEventFromElement(event, this.hostElement)) return;\n const index = this.tabs.findIndex(el => el.value === this.selectedTabValue);\n this.moveToTab(index, true);\n }\n\n @Listen('resize', { target: 'window' })\n onResize() {\n this.checkScrollState();\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('name')\n nameObserver() {\n this.updateTabData();\n }\n\n @Watch('value')\n valueObserver() {\n this.updateTabData();\n this.scheduledAfterRender.push(this.resizeIframe);\n const index = this.tabs.findIndex(el => el.value === this.value);\n if (index > -1) {\n this.scheduledAfterRender.push(() => this.moveToTab(index, false));\n }\n }\n\n // #endregion\n // #region Local Methods\n\n get selectedTabValue() {\n return this.value || this.tabPanes[0].value || '';\n }\n\n get tabList() {\n return this.hostElement.shadowRoot.querySelector('.tab-list');\n }\n\n get tabPanes() {\n const tabPanes = this.hostElement.querySelectorAll<HTMLQ2TabPaneElement | HTMLTectonTabPaneElement>(\n 'q2-tab-pane, tecton-tab-pane'\n );\n\n if (tabPanes.length === 0) {\n return [];\n }\n\n return Array.from(tabPanes).filter(pane => pane.name === this.name);\n }\n\n checkScrollState = () => {\n if (!this.listElement) return;\n const { scrollLeft, scrollWidth, clientWidth } = this.listElement;\n this.scrollEnabled = scrollWidth > clientWidth;\n this.showScrollLeft = scrollLeft > 0;\n this.showScrollRight = scrollWidth > Math.ceil(scrollLeft) + clientWidth;\n };\n\n moveToAdjacentTab = (value: string, direction: 'next' | 'prev' | 'first' | 'last') => {\n const index = this.tabs.map(({ value }) => value).indexOf(value);\n\n let newIndex;\n switch (direction) {\n case 'next':\n newIndex = Math.min(index + 1, this.tabs.length - 1);\n break;\n\n case 'prev':\n newIndex = Math.max(index - 1, 0);\n break;\n\n case 'first':\n newIndex = 0;\n break;\n\n case 'last':\n newIndex = this.tabs.length - 1;\n break;\n }\n\n if (index === newIndex) return;\n\n this.moveToTab(newIndex, true);\n };\n\n moveToTab = (index: number, shouldFocus: boolean = true) => {\n const focusedValue = this.tabs[index].value;\n const focusedTab = this.listElement.querySelector<HTMLButtonElement>(`[data-value=\"${focusedValue}\"]`);\n if (shouldFocus) {\n focusedTab.focus({ preventScroll: true });\n }\n\n const left = focusedTab.offsetLeft - this.listElement.clientWidth / 2;\n this.listElement.scrollTo({\n left,\n behavior: 'smooth',\n });\n\n return focusedTab;\n };\n\n onScrollBtnClick = (direction?: 'left' | 'right') => {\n const { scrollLeft, scrollWidth, clientWidth } = this.listElement;\n const halfWidth = Math.floor(clientWidth / 2);\n let scrollAmount: number = 0;\n if (direction === 'left') {\n scrollAmount = -Math.min(halfWidth, Math.abs(scrollLeft));\n } else {\n scrollAmount = Math.min(halfWidth, Math.abs(scrollWidth - scrollLeft - clientWidth));\n }\n this.listElement.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n };\n\n onSlotChange = () => {\n this.checkScrollState();\n };\n\n onTabClick = (event: MouseEvent) => {\n const targetValue = ((event.target as HTMLButtonElement).closest('button[role=\"tab\"]') as HTMLButtonElement)\n .dataset.value;\n const isAlreadySelected = this.value === targetValue;\n if (isAlreadySelected) return;\n\n this.change.emit({\n value: targetValue,\n });\n };\n\n onTabKeyDown = (event: KeyboardEvent) => {\n const value = (event.target as HTMLElement).dataset.value;\n switch (event.key) {\n case 'ArrowRight':\n event.preventDefault();\n this.moveToAdjacentTab(value, 'next');\n break;\n\n case 'ArrowLeft':\n event.preventDefault();\n this.moveToAdjacentTab(value, 'prev');\n break;\n\n case 'Home':\n event.preventDefault();\n this.moveToAdjacentTab(value, 'first');\n break;\n\n case 'End':\n event.preventDefault();\n this.moveToAdjacentTab(value, 'last');\n break;\n\n case 'Space':\n case 'Enter':\n event.preventDefault();\n this.change.emit({ value });\n break;\n }\n };\n\n resizeIframe() {\n return window.TectonElements?.resizeIframe?.();\n }\n\n setTabs = () => {\n this.tabs = this.tabPanes.map(({ label, value, badgeCount, badgeDescription, badgeTheme, badgeStatus }) => ({\n label: (label && loc(label)) || '',\n value,\n badgeCount,\n badgeDescription,\n badgeTheme,\n badgeStatus,\n }));\n };\n\n updateTabData = () => {\n this.updateTabPaneProps();\n this.setTabs();\n };\n\n updateTabPaneProps = () => {\n this.tabPanes.forEach((tab, index) => {\n tab.selected = tab.value === this.selectedTabValue;\n tab.guid = this.guid;\n tab.index = index;\n });\n };\n\n // #endregion\n // #region Test Methods API\n\n /**\n * A method to select a tab pane corresponding with the value.\n *\n * @testOnly\n */\n @Method()\n async selectTab(value: string) {\n const paneButton = this.hostElement.shadowRoot.querySelector(`[test-id=\"tabLink\"][data-value=\"${value}\"]`);\n (paneButton as HTMLButtonElement)?.click();\n }\n // #endregion\n // #region Render Methods\n\n renderTab(tab: TabPane, index: number): JSX.IntrinsicElements {\n const { label, value } = tab;\n const isSelected = this.selectedTabValue === value;\n return (\n <li role=\"presentation\">\n <button\n id={`tab-${this.guid}-${index}`}\n data-value={value}\n test-id=\"tabLink\"\n tabIndex={isSelected ? 0 : -1}\n role=\"tab\"\n aria-selected={isSelected ? 'true' : 'false'}\n onClick={this.onTabClick}\n onKeyDown={this.onTabKeyDown}\n >\n {tab.badgeCount === undefined ? label : this.renderTabWithBadge(tab, isSelected)}\n </button>\n </li>\n );\n }\n\n renderTabWithBadge(tab: TabPane, isSelected: boolean): JSX.IntrinsicElements {\n let theme;\n if (!tab.badgeStatus && isSelected) theme = tab.badgeTheme || 'primary';\n let description;\n if (tab.badgeDescription) description = loc(tab.badgeDescription);\n else if (tab.badgeStatus) description = loc(`tecton.element.tab.pane.${tab.badgeStatus}`, [tab.badgeCount]);\n else description = loc('tecton.element.tab.pane.new');\n\n return (\n <div\n class=\"tab-pane-badge\"\n aria-label={`${tab.label}, ${tab.badgeCount} ${description}`}\n >\n {tab.label}\n <q2-badge\n value={tab.badgeCount}\n theme={theme}\n status={tab.badgeStatus}\n />\n </div>\n );\n }\n\n render() {\n return (\n <Fragment>\n <div class=\"tab-container\">\n {this.scrollEnabled && (\n <Fragment>\n <div\n class=\"gradient-left\"\n hidden={!this.showScrollLeft}\n ></div>\n <div\n class=\"gradient-right\"\n hidden={!this.showScrollRight}\n ></div>\n\n <q2-btn\n class=\"btn-left\"\n hidden={!this.showScrollLeft}\n onClick={() => this.onScrollBtnClick('left')}\n >\n <q2-icon\n type=\"chevron-left\"\n label=\"scroll left\"\n ></q2-icon>\n </q2-btn>\n\n <q2-btn\n class=\"btn-right\"\n hidden={!this.showScrollRight}\n onClick={() => this.onScrollBtnClick('right')}\n >\n <q2-icon\n type=\"chevron-right\"\n label=\"scroll right\"\n ></q2-icon>\n </q2-btn>\n </Fragment>\n )}\n\n <ul\n onScroll={this.checkScrollState}\n ref={el => (this.listElement = el)}\n class={this.noPrint ? 'no-print' : null}\n role=\"tablist\"\n >\n {this.tabs.map((tab, index) => this.renderTab(tab, index))}\n </ul>\n </div>\n <div class=\"tab-content\">\n <slot onSlotchange={() => this.onSlotChange()} />\n </div>\n </Fragment>\n );\n }\n\n // #endregion\n}\n"]}
@@ -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":"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","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":"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","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"]}
@@ -143,7 +143,7 @@ export class Q2Tag {
143
143
  const wrapperClassNames = ['tag'];
144
144
  if (optionCount)
145
145
  wrapperClassNames.push('has-options');
146
- return (h(Host, { key: '9b1d2f5b548146365e986ba4634b0a8ed30fa0cb', role: this.optionCount > 0 ? 'list' : undefined }, h("click-elsewhere", { key: '11112116d707cbe26460f50443bed7bab72fef0f', 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: '985c62f7b78fed7bbc88e74036e544f419dcec56', 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: '587c2c9bdae05291593d3c976fa002f0c19dcc22', 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: '606e22e977e9822bc6b413b1afc8790371c459fe' })))))));
146
+ return (h(Host, { key: '3b23dcb54901130f9f033fa17238172e07b7fccb', role: this.optionCount > 0 ? 'list' : undefined }, h("click-elsewhere", { key: '2970c76a634f233af7d744cf35886e6df9e391e7', 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: '304d3536994c98dfa768f2110827ff9d9edaaf41', 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: 'c4c026b0f2110ca02af934806474cc4a944d7d8e', 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: '1de1106f4628431e985185904c0582fb66be8288' })))))));
147
147
  }
148
148
  static get is() { return "q2-tag"; }
149
149
  static get encapsulation() { return "shadow"; }