q2-tecton-elements 1.50.1 → 1.51.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (578) hide show
  1. package/dist/cjs/click-elsewhere_2.cjs.entry.js +21 -12
  2. package/dist/cjs/click-elsewhere_2.cjs.entry.js.map +1 -1
  3. package/dist/cjs/index-9aa4a776.js +235 -0
  4. package/dist/cjs/index-9aa4a776.js.map +1 -0
  5. package/dist/cjs/{index-43010ce4.js → index-f69742cf.js} +1 -1
  6. package/dist/cjs/{index-43010ce4.js.map → index-f69742cf.js.map} +1 -1
  7. package/dist/cjs/loader.cjs.js +1 -1
  8. package/dist/cjs/q2-action-group.cjs.entry.js +50 -0
  9. package/dist/cjs/q2-action-group.cjs.entry.js.map +1 -0
  10. package/dist/cjs/q2-action-sheet.cjs.entry.js +1364 -3
  11. package/dist/cjs/q2-action-sheet.cjs.entry.js.map +1 -1
  12. package/dist/cjs/q2-avatar.cjs.entry.js +1 -1
  13. package/dist/cjs/q2-badge_7.cjs.entry.js +23 -13
  14. package/dist/cjs/q2-badge_7.cjs.entry.js.map +1 -1
  15. package/dist/cjs/q2-calendar.cjs.entry.js +2 -2
  16. package/dist/cjs/q2-card.cjs.entry.js +1 -1
  17. package/dist/cjs/q2-carousel-pane.cjs.entry.js +3 -3
  18. package/dist/cjs/q2-carousel.cjs.entry.js +1 -1
  19. package/dist/cjs/q2-chart-area.cjs.entry.js +2 -2
  20. package/dist/cjs/q2-chart-area.cjs.entry.js.map +1 -1
  21. package/dist/cjs/q2-chart-bar.cjs.entry.js +2 -2
  22. package/dist/cjs/q2-chart-bar.cjs.entry.js.map +1 -1
  23. package/dist/cjs/q2-chart-donut.cjs.entry.js +16 -16
  24. package/dist/cjs/q2-chart-donut.cjs.entry.js.map +1 -1
  25. package/dist/cjs/q2-checkbox-group.cjs.entry.js +2 -2
  26. package/dist/cjs/q2-checkbox-group.cjs.entry.js.map +1 -1
  27. package/dist/cjs/q2-checkbox.cjs.entry.js +1 -1
  28. package/dist/cjs/q2-currency.cjs.entry.js +1 -1
  29. package/dist/cjs/q2-data-table.cjs.entry.js +62 -62
  30. package/dist/cjs/q2-data-table.cjs.entry.js.map +1 -1
  31. package/dist/cjs/q2-detail.cjs.entry.js +2 -2
  32. package/dist/cjs/q2-dropdown-item.cjs.entry.js +2 -2
  33. package/dist/cjs/q2-dropdown-item.cjs.entry.js.map +1 -1
  34. package/dist/cjs/q2-dropdown.cjs.entry.js +77 -5
  35. package/dist/cjs/q2-dropdown.cjs.entry.js.map +1 -1
  36. package/dist/cjs/q2-editable-field.cjs.entry.js +1 -1
  37. package/dist/cjs/q2-formatted-text.cjs.entry.js +72 -0
  38. package/dist/cjs/q2-formatted-text.cjs.entry.js.map +1 -0
  39. package/dist/cjs/q2-item.cjs.entry.js +2 -2
  40. package/dist/cjs/q2-legend.cjs.entry.js +2 -2
  41. package/dist/cjs/q2-legend.cjs.entry.js.map +1 -1
  42. package/dist/cjs/q2-link.cjs.entry.js +64 -0
  43. package/dist/cjs/q2-link.cjs.entry.js.map +1 -0
  44. package/dist/cjs/q2-list.cjs.entry.js +2 -2
  45. package/dist/cjs/q2-loc.cjs.entry.js +2 -2
  46. package/dist/cjs/q2-message.cjs.entry.js +2 -2
  47. package/dist/cjs/q2-month-picker.cjs.entry.js +3 -3
  48. package/dist/cjs/q2-optgroup.cjs.entry.js +2 -2
  49. package/dist/cjs/q2-option-list.cjs.entry.js +9 -4
  50. package/dist/cjs/q2-option-list.cjs.entry.js.map +1 -1
  51. package/dist/cjs/q2-option.cjs.entry.js +1 -1
  52. package/dist/cjs/q2-pagination.cjs.entry.js +90 -9
  53. package/dist/cjs/q2-pagination.cjs.entry.js.map +1 -1
  54. package/dist/cjs/q2-pill.cjs.entry.js +26 -5
  55. package/dist/cjs/q2-pill.cjs.entry.js.map +1 -1
  56. package/dist/cjs/q2-radio-group.cjs.entry.js +2 -2
  57. package/dist/cjs/q2-radio-group.cjs.entry.js.map +1 -1
  58. package/dist/cjs/q2-radio.cjs.entry.js +1 -1
  59. package/dist/cjs/q2-relative-time.cjs.entry.js +3 -3
  60. package/dist/cjs/q2-resize-observer.cjs.entry.js +96 -0
  61. package/dist/cjs/q2-resize-observer.cjs.entry.js.map +1 -0
  62. package/dist/cjs/q2-section.cjs.entry.js +27 -3
  63. package/dist/cjs/q2-section.cjs.entry.js.map +1 -1
  64. package/dist/cjs/q2-select.cjs.entry.js +7 -6
  65. package/dist/cjs/q2-select.cjs.entry.js.map +1 -1
  66. package/dist/cjs/q2-stepper-pane.cjs.entry.js +1 -1
  67. package/dist/cjs/q2-stepper-vertical.cjs.entry.js +2 -2
  68. package/dist/cjs/q2-stepper.cjs.entry.js +39 -3
  69. package/dist/cjs/q2-stepper.cjs.entry.js.map +1 -1
  70. package/dist/cjs/q2-tag.cjs.entry.js +3 -2
  71. package/dist/cjs/q2-tag.cjs.entry.js.map +1 -1
  72. package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
  73. package/dist/cjs/q2-textarea.cjs.entry.js +46 -11
  74. package/dist/cjs/q2-textarea.cjs.entry.js.map +1 -1
  75. package/dist/cjs/q2-tooltip.cjs.entry.js +2 -2
  76. package/dist/cjs/q2-tooltip.cjs.entry.js.map +1 -1
  77. package/dist/cjs/tecton-tab-pane.cjs.entry.js +2 -2
  78. package/dist/collection/collection-manifest.json +4 -0
  79. package/dist/collection/components/q2-action-group/q2-action-group.css +99 -0
  80. package/dist/collection/components/q2-action-group/q2-action-group.js +120 -0
  81. package/dist/collection/components/q2-action-group/q2-action-group.js.map +1 -0
  82. package/dist/collection/components/q2-action-group/test/q2-action-group.e2e.js +30 -0
  83. package/dist/collection/components/q2-action-group/test/q2-action-group.e2e.js.map +1 -0
  84. package/dist/collection/components/q2-action-group/test/q2-action-group.spec.js +156 -0
  85. package/dist/collection/components/q2-action-group/test/q2-action-group.spec.js.map +1 -0
  86. package/dist/collection/components/q2-action-sheet/q2-action-sheet.js +3 -2
  87. package/dist/collection/components/q2-action-sheet/q2-action-sheet.js.map +1 -1
  88. package/dist/collection/components/q2-avatar/q2-avatar.js +1 -1
  89. package/dist/collection/components/q2-avatar/test/q2-avatar-test.e2e.js +14 -9
  90. package/dist/collection/components/q2-avatar/test/q2-avatar-test.e2e.js.map +1 -1
  91. package/dist/collection/components/q2-badge/test/q2-badge-test.e2e.js +14 -9
  92. package/dist/collection/components/q2-badge/test/q2-badge-test.e2e.js.map +1 -1
  93. package/dist/collection/components/q2-btn/test/q2-btn-test.e2e.js +14 -9
  94. package/dist/collection/components/q2-btn/test/q2-btn-test.e2e.js.map +1 -1
  95. package/dist/collection/components/q2-calendar/q2-month-picker.js +2 -2
  96. package/dist/collection/components/q2-calendar/test/q2-calendar-test.e2e.js +227 -223
  97. package/dist/collection/components/q2-calendar/test/q2-calendar-test.e2e.js.map +1 -1
  98. package/dist/collection/components/q2-card/test/q2-card-test.e2e.js +12 -7
  99. package/dist/collection/components/q2-card/test/q2-card-test.e2e.js.map +1 -1
  100. package/dist/collection/components/q2-carousel/test/q2-carousel-test.e2e.js +49 -45
  101. package/dist/collection/components/q2-carousel/test/q2-carousel-test.e2e.js.map +1 -1
  102. package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.js +2 -2
  103. package/dist/collection/components/q2-chart-area/q2-chart-area.js +2 -2
  104. package/dist/collection/components/q2-chart-area/q2-chart-area.js.map +1 -1
  105. package/dist/collection/components/q2-chart-area/test/q2-chart-area-test.e2e.js +12 -7
  106. package/dist/collection/components/q2-chart-area/test/q2-chart-area-test.e2e.js.map +1 -1
  107. package/dist/collection/components/q2-chart-bar/q2-chart-bar.js +2 -2
  108. package/dist/collection/components/q2-chart-bar/q2-chart-bar.js.map +1 -1
  109. package/dist/collection/components/q2-chart-bar/test/q2-chart-bar-test.e2e.js +16 -11
  110. package/dist/collection/components/q2-chart-bar/test/q2-chart-bar-test.e2e.js.map +1 -1
  111. package/dist/collection/components/q2-chart-donut/q2-chart-donut.js +15 -15
  112. package/dist/collection/components/q2-chart-donut/q2-chart-donut.js.map +1 -1
  113. package/dist/collection/components/q2-chart-donut/test/q2-chart-donut-test.e2e.js +32 -26
  114. package/dist/collection/components/q2-chart-donut/test/q2-chart-donut-test.e2e.js.map +1 -1
  115. package/dist/collection/components/q2-checkbox/test/q2-checkbox-test.e2e.js +12 -7
  116. package/dist/collection/components/q2-checkbox/test/q2-checkbox-test.e2e.js.map +1 -1
  117. package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.js +2 -2
  118. package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.js.map +1 -1
  119. package/dist/collection/components/q2-checkbox-group/test/q2-checkbox-group-test.e2e.js +22 -17
  120. package/dist/collection/components/q2-checkbox-group/test/q2-checkbox-group-test.e2e.js.map +1 -1
  121. package/dist/collection/components/q2-currency/q2-currency.js +1 -1
  122. package/dist/collection/components/q2-currency/test/q2-currency-test.e2e.js +12 -7
  123. package/dist/collection/components/q2-currency/test/q2-currency-test.e2e.js.map +1 -1
  124. package/dist/collection/components/q2-data-table/q2-data-table.js +104 -104
  125. package/dist/collection/components/q2-data-table/q2-data-table.js.map +1 -1
  126. package/dist/collection/components/q2-data-table/test/q2-data-table-test.e2e.js +42 -24
  127. package/dist/collection/components/q2-data-table/test/q2-data-table-test.e2e.js.map +1 -1
  128. package/dist/collection/components/q2-detail/q2-detail.js +1 -1
  129. package/dist/collection/components/q2-detail/test/q2-detail-test.e2e.js +12 -7
  130. package/dist/collection/components/q2-detail/test/q2-detail-test.e2e.js.map +1 -1
  131. package/dist/collection/components/q2-dropdown/q2-dropdown.js +201 -4
  132. package/dist/collection/components/q2-dropdown/q2-dropdown.js.map +1 -1
  133. package/dist/collection/components/q2-dropdown/test/q2-dropdown-test.e2e.js +305 -124
  134. package/dist/collection/components/q2-dropdown/test/q2-dropdown-test.e2e.js.map +1 -1
  135. package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.js +1 -1
  136. package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.js.map +1 -1
  137. package/dist/collection/components/q2-dropdown-item/test/q2-dropdown-item-test.e2e.js +18 -13
  138. package/dist/collection/components/q2-dropdown-item/test/q2-dropdown-item-test.e2e.js.map +1 -1
  139. package/dist/collection/components/q2-editable-field/test/q2-editable-field-test.e2e.js +14 -18
  140. package/dist/collection/components/q2-editable-field/test/q2-editable-field-test.e2e.js.map +1 -1
  141. package/dist/collection/components/q2-formatted-text/q2-formatted-text.css +94 -0
  142. package/dist/collection/components/q2-formatted-text/q2-formatted-text.js +230 -0
  143. package/dist/collection/components/q2-formatted-text/q2-formatted-text.js.map +1 -0
  144. package/dist/collection/components/q2-formatted-text/test/q2-formatted-text-test.e2e.js +430 -0
  145. package/dist/collection/components/q2-formatted-text/test/q2-formatted-text-test.e2e.js.map +1 -0
  146. package/dist/collection/components/q2-icon/test/q2-icon-test.e2e.js +14 -9
  147. package/dist/collection/components/q2-icon/test/q2-icon-test.e2e.js.map +1 -1
  148. package/dist/collection/components/q2-input/q2-input.css +9 -0
  149. package/dist/collection/components/q2-input/q2-input.js +7 -8
  150. package/dist/collection/components/q2-input/q2-input.js.map +1 -1
  151. package/dist/collection/components/q2-input/test/q2-input-test.e2e.js +50 -33
  152. package/dist/collection/components/q2-input/test/q2-input-test.e2e.js.map +1 -1
  153. package/dist/collection/components/q2-item/q2-item.js +1 -1
  154. package/dist/collection/components/q2-item/test/q2-item-test.e2e.js +32 -7
  155. package/dist/collection/components/q2-item/test/q2-item-test.e2e.js.map +1 -1
  156. package/dist/collection/components/q2-legend/q2-legend.css +1 -1
  157. package/dist/collection/components/q2-legend/q2-legend.js +1 -1
  158. package/dist/collection/components/q2-legend/test/q2-legend-test.e2e.js +13 -8
  159. package/dist/collection/components/q2-legend/test/q2-legend-test.e2e.js.map +1 -1
  160. package/dist/collection/components/q2-link/q2-link.css +146 -0
  161. package/dist/collection/components/q2-link/q2-link.js +242 -0
  162. package/dist/collection/components/q2-link/q2-link.js.map +1 -0
  163. package/dist/collection/components/q2-link/test/q2-link-test.e2e.js +145 -0
  164. package/dist/collection/components/q2-link/test/q2-link-test.e2e.js.map +1 -0
  165. package/dist/collection/components/q2-list/q2-list.js +1 -1
  166. package/dist/collection/components/q2-list/test/q2-list-test.e2e.js +12 -7
  167. package/dist/collection/components/q2-list/test/q2-list-test.e2e.js.map +1 -1
  168. package/dist/collection/components/q2-loading/test/q2-loading-element-test.e2e.js +14 -9
  169. package/dist/collection/components/q2-loading/test/q2-loading-element-test.e2e.js.map +1 -1
  170. package/dist/collection/components/q2-loading/test/q2-loading-test.e2e.js +14 -9
  171. package/dist/collection/components/q2-loading/test/q2-loading-test.e2e.js.map +1 -1
  172. package/dist/collection/components/q2-loc/q2-loc.js +1 -1
  173. package/dist/collection/components/q2-loc/test/q2-loc-test.e2e.js +16 -11
  174. package/dist/collection/components/q2-loc/test/q2-loc-test.e2e.js.map +1 -1
  175. package/dist/collection/components/q2-message/q2-message.js +1 -1
  176. package/dist/collection/components/q2-message/test/q2-message-test.e2e.js +14 -9
  177. package/dist/collection/components/q2-message/test/q2-message-test.e2e.js.map +1 -1
  178. package/dist/collection/components/q2-optgroup/q2-optgroup.js +1 -1
  179. package/dist/collection/components/q2-optgroup/test/q2-optgroup-test.e2e.js +20 -13
  180. package/dist/collection/components/q2-optgroup/test/q2-optgroup-test.e2e.js.map +1 -1
  181. package/dist/collection/components/q2-option/q2-option.js +1 -1
  182. package/dist/collection/components/q2-option/test/q2-option-test.e2e.js +28 -12
  183. package/dist/collection/components/q2-option/test/q2-option-test.e2e.js.map +1 -1
  184. package/dist/collection/components/q2-option-list/q2-option-list.js +7 -5
  185. package/dist/collection/components/q2-option-list/q2-option-list.js.map +1 -1
  186. package/dist/collection/components/q2-option-list/test/q2-option-list-test.e2e.js +415 -405
  187. package/dist/collection/components/q2-option-list/test/q2-option-list-test.e2e.js.map +1 -1
  188. package/dist/collection/components/q2-pagination/q2-pagination.js +230 -14
  189. package/dist/collection/components/q2-pagination/q2-pagination.js.map +1 -1
  190. package/dist/collection/components/q2-pagination/test/q2-pagination-test.e2e.js +138 -15
  191. package/dist/collection/components/q2-pagination/test/q2-pagination-test.e2e.js.map +1 -1
  192. package/dist/collection/components/q2-pill/q2-pill.css +12 -0
  193. package/dist/collection/components/q2-pill/q2-pill.js +43 -3
  194. package/dist/collection/components/q2-pill/q2-pill.js.map +1 -1
  195. package/dist/collection/components/q2-pill/test/q2-pill-test.e2e.js +412 -212
  196. package/dist/collection/components/q2-pill/test/q2-pill-test.e2e.js.map +1 -1
  197. package/dist/collection/components/q2-popover/q2-popover.js +37 -11
  198. package/dist/collection/components/q2-popover/q2-popover.js.map +1 -1
  199. package/dist/collection/components/q2-popover/test/q2-popover-test.e2e.js +296 -236
  200. package/dist/collection/components/q2-popover/test/q2-popover-test.e2e.js.map +1 -1
  201. package/dist/collection/components/q2-popover/test/q2-popover-test.spec.js +3 -3
  202. package/dist/collection/components/q2-popover/test/q2-popover-test.spec.js.map +1 -1
  203. package/dist/collection/components/q2-radio/test/q2-radio-test.e2e.js +21 -7
  204. package/dist/collection/components/q2-radio/test/q2-radio-test.e2e.js.map +1 -1
  205. package/dist/collection/components/q2-radio-group/q2-radio-group.js +2 -2
  206. package/dist/collection/components/q2-radio-group/q2-radio-group.js.map +1 -1
  207. package/dist/collection/components/q2-radio-group/test/q2-radio-group-test.e2e.js +32 -26
  208. package/dist/collection/components/q2-radio-group/test/q2-radio-group-test.e2e.js.map +1 -1
  209. package/dist/collection/components/q2-relative-time/q2-relative-time.js +1 -1
  210. package/dist/collection/components/q2-relative-time/test/q2-relative-time-test.e2e.js +12 -7
  211. package/dist/collection/components/q2-relative-time/test/q2-relative-time-test.e2e.js.map +1 -1
  212. package/dist/collection/components/q2-resize-observer/q2-resize-observer.css +71 -0
  213. package/dist/collection/components/q2-resize-observer/q2-resize-observer.js +166 -0
  214. package/dist/collection/components/q2-resize-observer/q2-resize-observer.js.map +1 -0
  215. package/dist/collection/components/q2-resize-observer/test/q2-resize-observer.e2e.js +83 -0
  216. package/dist/collection/components/q2-resize-observer/test/q2-resize-observer.e2e.js.map +1 -0
  217. package/dist/collection/components/q2-resize-observer/test/q2-resize-observer.spec.js +66 -0
  218. package/dist/collection/components/q2-resize-observer/test/q2-resize-observer.spec.js.map +1 -0
  219. package/dist/collection/components/q2-section/q2-section.js +78 -2
  220. package/dist/collection/components/q2-section/q2-section.js.map +1 -1
  221. package/dist/collection/components/q2-section/test/q2-section-test.e2e.js +39 -9
  222. package/dist/collection/components/q2-section/test/q2-section-test.e2e.js.map +1 -1
  223. package/dist/collection/components/q2-select/q2-select.js +23 -5
  224. package/dist/collection/components/q2-select/q2-select.js.map +1 -1
  225. package/dist/collection/components/q2-select/test/q2-select-test.e2e.js +695 -676
  226. package/dist/collection/components/q2-select/test/q2-select-test.e2e.js.map +1 -1
  227. package/dist/collection/components/q2-stepper/q2-stepper.js +76 -2
  228. package/dist/collection/components/q2-stepper/q2-stepper.js.map +1 -1
  229. package/dist/collection/components/q2-stepper/test/q2-stepper-test.e2e.js +183 -87
  230. package/dist/collection/components/q2-stepper/test/q2-stepper-test.e2e.js.map +1 -1
  231. package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.js +2 -2
  232. package/dist/collection/components/q2-stepper-pane/test/q2-stepper-pane-test.e2e.js +20 -9
  233. package/dist/collection/components/q2-stepper-pane/test/q2-stepper-pane-test.e2e.js.map +1 -1
  234. package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js +1 -1
  235. package/dist/collection/components/q2-stepper-vertical/test/q2-stepper-vertical-test.e2e.js +71 -67
  236. package/dist/collection/components/q2-stepper-vertical/test/q2-stepper-vertical-test.e2e.js.map +1 -1
  237. package/dist/collection/components/q2-tab-container/q2-tab-container.js +50 -7
  238. package/dist/collection/components/q2-tab-container/q2-tab-container.js.map +1 -1
  239. package/dist/collection/components/q2-tab-container/test/q2-tab-container-test.e2e.js +89 -65
  240. package/dist/collection/components/q2-tab-container/test/q2-tab-container-test.e2e.js.map +1 -1
  241. package/dist/collection/components/q2-tab-pane/q2-tab-pane.js +1 -1
  242. package/dist/collection/components/q2-tab-pane/test/q2-tab-pane-test.e2e.js +14 -9
  243. package/dist/collection/components/q2-tab-pane/test/q2-tab-pane-test.e2e.js.map +1 -1
  244. package/dist/collection/components/q2-tag/q2-tag.js +19 -1
  245. package/dist/collection/components/q2-tag/q2-tag.js.map +1 -1
  246. package/dist/collection/components/q2-tag/test/q2-tag-test.e2e.js +47 -28
  247. package/dist/collection/components/q2-tag/test/q2-tag-test.e2e.js.map +1 -1
  248. package/dist/collection/components/q2-textarea/q2-textarea.js +51 -13
  249. package/dist/collection/components/q2-textarea/q2-textarea.js.map +1 -1
  250. package/dist/collection/components/q2-textarea/test/q2-textarea-test.e2e.js +31 -10
  251. package/dist/collection/components/q2-textarea/test/q2-textarea-test.e2e.js.map +1 -1
  252. package/dist/collection/components/q2-tooltip/q2-tooltip.css +5 -2
  253. package/dist/collection/components/q2-tooltip/test/q2-tooltip-test.e2e.js +51 -13
  254. package/dist/collection/components/q2-tooltip/test/q2-tooltip-test.e2e.js.map +1 -1
  255. package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js +2 -2
  256. package/dist/collection/components/tecton-tab-pane/test/tecton-tab-pane-test.e2e.js +18 -13
  257. package/dist/collection/components/tecton-tab-pane/test/tecton-tab-pane-test.e2e.js.map +1 -1
  258. package/dist/collection/utils/helpers.js +65 -0
  259. package/dist/collection/utils/helpers.js.map +1 -1
  260. package/dist/collection/utils/index.js +11 -11
  261. package/dist/collection/utils/index.js.map +1 -1
  262. package/dist/collection/utils/sanitize-html-string.js +10 -0
  263. package/dist/collection/utils/sanitize-html-string.js.map +1 -0
  264. package/dist/collection/utils/sanitize-regex-string.js +4 -0
  265. package/dist/collection/utils/sanitize-regex-string.js.map +1 -0
  266. package/dist/components/index.js +8 -0
  267. package/dist/components/index.js.map +1 -1
  268. package/dist/components/index2.js +11 -1356
  269. package/dist/components/index2.js.map +1 -1
  270. package/dist/components/q2-action-group.d.ts +11 -0
  271. package/dist/components/q2-action-group.js +75 -0
  272. package/dist/components/q2-action-group.js.map +1 -0
  273. package/dist/components/q2-action-sheet.js +1363 -2
  274. package/dist/components/q2-action-sheet.js.map +1 -1
  275. package/dist/components/q2-avatar2.js +1 -1
  276. package/dist/components/q2-btn2.js +1 -1
  277. package/dist/components/q2-carousel-pane.js +2 -2
  278. package/dist/components/q2-chart-area.js +1 -1
  279. package/dist/components/q2-chart-area.js.map +1 -1
  280. package/dist/components/q2-chart-bar.js +1 -1
  281. package/dist/components/q2-chart-bar.js.map +1 -1
  282. package/dist/components/q2-chart-donut.js +15 -15
  283. package/dist/components/q2-chart-donut.js.map +1 -1
  284. package/dist/components/q2-checkbox-group.js +2 -2
  285. package/dist/components/q2-checkbox-group.js.map +1 -1
  286. package/dist/components/q2-currency.js +1 -1
  287. package/dist/components/q2-data-table.js +64 -64
  288. package/dist/components/q2-data-table.js.map +1 -1
  289. package/dist/components/q2-detail.js +1 -1
  290. package/dist/components/q2-dropdown-item2.js +1 -1
  291. package/dist/components/q2-dropdown-item2.js.map +1 -1
  292. package/dist/components/q2-dropdown.js +82 -5
  293. package/dist/components/q2-dropdown.js.map +1 -1
  294. package/dist/components/q2-formatted-text.d.ts +11 -0
  295. package/dist/components/q2-formatted-text.js +101 -0
  296. package/dist/components/q2-formatted-text.js.map +1 -0
  297. package/dist/components/q2-input2.js +4 -5
  298. package/dist/components/q2-input2.js.map +1 -1
  299. package/dist/components/q2-item.js +1 -1
  300. package/dist/components/q2-legend2.js +2 -2
  301. package/dist/components/q2-legend2.js.map +1 -1
  302. package/dist/components/q2-link.d.ts +11 -0
  303. package/dist/components/q2-link.js +93 -0
  304. package/dist/components/q2-link.js.map +1 -0
  305. package/dist/components/q2-list.js +1 -1
  306. package/dist/components/q2-loc.js +1 -1
  307. package/dist/components/q2-message2.js +1 -1
  308. package/dist/components/q2-month-picker.js +2 -2
  309. package/dist/components/q2-optgroup2.js +1 -1
  310. package/dist/components/q2-option-list2.js +8 -3
  311. package/dist/components/q2-option-list2.js.map +1 -1
  312. package/dist/components/q2-option2.js +1 -1
  313. package/dist/components/q2-pagination.js +97 -10
  314. package/dist/components/q2-pagination.js.map +1 -1
  315. package/dist/components/q2-pill.js +29 -5
  316. package/dist/components/q2-pill.js.map +1 -1
  317. package/dist/components/q2-popover2.js +22 -12
  318. package/dist/components/q2-popover2.js.map +1 -1
  319. package/dist/components/q2-radio-group.js +2 -2
  320. package/dist/components/q2-radio-group.js.map +1 -1
  321. package/dist/components/q2-relative-time.js +1 -1
  322. package/dist/components/q2-resize-observer.d.ts +11 -0
  323. package/dist/components/q2-resize-observer.js +8 -0
  324. package/dist/components/q2-resize-observer.js.map +1 -0
  325. package/dist/components/q2-resize-observer2.js +112 -0
  326. package/dist/components/q2-resize-observer2.js.map +1 -0
  327. package/dist/components/q2-section.js +30 -4
  328. package/dist/components/q2-section.js.map +1 -1
  329. package/dist/components/q2-select2.js +7 -5
  330. package/dist/components/q2-select2.js.map +1 -1
  331. package/dist/components/q2-stepper-vertical.js +1 -1
  332. package/dist/components/q2-stepper.js +40 -3
  333. package/dist/components/q2-stepper.js.map +1 -1
  334. package/dist/components/q2-tab-container.js +20 -8
  335. package/dist/components/q2-tab-container.js.map +1 -1
  336. package/dist/components/q2-tab-pane.js +1 -1
  337. package/dist/components/q2-tag.js +3 -1
  338. package/dist/components/q2-tag.js.map +1 -1
  339. package/dist/components/q2-textarea.js +49 -12
  340. package/dist/components/q2-textarea.js.map +1 -1
  341. package/dist/components/q2-tooltip.js +1 -1
  342. package/dist/components/q2-tooltip.js.map +1 -1
  343. package/dist/components/tecton-tab-pane.js +2 -2
  344. package/dist/esm/click-elsewhere_2.entry.js +21 -12
  345. package/dist/esm/click-elsewhere_2.entry.js.map +1 -1
  346. package/dist/esm/{index-c6d74f10.js → index-3184c760.js} +1 -1
  347. package/dist/esm/{index-c6d74f10.js.map → index-3184c760.js.map} +1 -1
  348. package/dist/esm/index-844fc010.js +211 -0
  349. package/dist/esm/index-844fc010.js.map +1 -0
  350. package/dist/esm/loader.js +1 -1
  351. package/dist/esm/q2-action-group.entry.js +46 -0
  352. package/dist/esm/q2-action-group.entry.js.map +1 -0
  353. package/dist/esm/q2-action-sheet.entry.js +1363 -2
  354. package/dist/esm/q2-action-sheet.entry.js.map +1 -1
  355. package/dist/esm/q2-avatar.entry.js +1 -1
  356. package/dist/esm/q2-badge_7.entry.js +23 -13
  357. package/dist/esm/q2-badge_7.entry.js.map +1 -1
  358. package/dist/esm/q2-calendar.entry.js +2 -2
  359. package/dist/esm/q2-card.entry.js +1 -1
  360. package/dist/esm/q2-carousel-pane.entry.js +3 -3
  361. package/dist/esm/q2-carousel.entry.js +1 -1
  362. package/dist/esm/q2-chart-area.entry.js +2 -2
  363. package/dist/esm/q2-chart-area.entry.js.map +1 -1
  364. package/dist/esm/q2-chart-bar.entry.js +2 -2
  365. package/dist/esm/q2-chart-bar.entry.js.map +1 -1
  366. package/dist/esm/q2-chart-donut.entry.js +16 -16
  367. package/dist/esm/q2-chart-donut.entry.js.map +1 -1
  368. package/dist/esm/q2-checkbox-group.entry.js +2 -2
  369. package/dist/esm/q2-checkbox-group.entry.js.map +1 -1
  370. package/dist/esm/q2-checkbox.entry.js +1 -1
  371. package/dist/esm/q2-currency.entry.js +1 -1
  372. package/dist/esm/q2-data-table.entry.js +62 -62
  373. package/dist/esm/q2-data-table.entry.js.map +1 -1
  374. package/dist/esm/q2-detail.entry.js +2 -2
  375. package/dist/esm/q2-dropdown-item.entry.js +2 -2
  376. package/dist/esm/q2-dropdown-item.entry.js.map +1 -1
  377. package/dist/esm/q2-dropdown.entry.js +77 -5
  378. package/dist/esm/q2-dropdown.entry.js.map +1 -1
  379. package/dist/esm/q2-editable-field.entry.js +1 -1
  380. package/dist/esm/q2-formatted-text.entry.js +68 -0
  381. package/dist/esm/q2-formatted-text.entry.js.map +1 -0
  382. package/dist/esm/q2-item.entry.js +2 -2
  383. package/dist/esm/q2-legend.entry.js +2 -2
  384. package/dist/esm/q2-legend.entry.js.map +1 -1
  385. package/dist/esm/q2-link.entry.js +60 -0
  386. package/dist/esm/q2-link.entry.js.map +1 -0
  387. package/dist/esm/q2-list.entry.js +2 -2
  388. package/dist/esm/q2-loc.entry.js +2 -2
  389. package/dist/esm/q2-message.entry.js +2 -2
  390. package/dist/esm/q2-month-picker.entry.js +3 -3
  391. package/dist/esm/q2-optgroup.entry.js +2 -2
  392. package/dist/esm/q2-option-list.entry.js +9 -4
  393. package/dist/esm/q2-option-list.entry.js.map +1 -1
  394. package/dist/esm/q2-option.entry.js +1 -1
  395. package/dist/esm/q2-pagination.entry.js +90 -9
  396. package/dist/esm/q2-pagination.entry.js.map +1 -1
  397. package/dist/esm/q2-pill.entry.js +26 -5
  398. package/dist/esm/q2-pill.entry.js.map +1 -1
  399. package/dist/esm/q2-radio-group.entry.js +2 -2
  400. package/dist/esm/q2-radio-group.entry.js.map +1 -1
  401. package/dist/esm/q2-radio.entry.js +1 -1
  402. package/dist/esm/q2-relative-time.entry.js +3 -3
  403. package/dist/esm/q2-resize-observer.entry.js +92 -0
  404. package/dist/esm/q2-resize-observer.entry.js.map +1 -0
  405. package/dist/esm/q2-section.entry.js +27 -3
  406. package/dist/esm/q2-section.entry.js.map +1 -1
  407. package/dist/esm/q2-select.entry.js +7 -6
  408. package/dist/esm/q2-select.entry.js.map +1 -1
  409. package/dist/esm/q2-stepper-pane.entry.js +1 -1
  410. package/dist/esm/q2-stepper-vertical.entry.js +2 -2
  411. package/dist/esm/q2-stepper.entry.js +39 -3
  412. package/dist/esm/q2-stepper.entry.js.map +1 -1
  413. package/dist/esm/q2-tag.entry.js +3 -2
  414. package/dist/esm/q2-tag.entry.js.map +1 -1
  415. package/dist/esm/q2-tecton-elements.js +1 -1
  416. package/dist/esm/q2-textarea.entry.js +47 -12
  417. package/dist/esm/q2-textarea.entry.js.map +1 -1
  418. package/dist/esm/q2-tooltip.entry.js +2 -2
  419. package/dist/esm/q2-tooltip.entry.js.map +1 -1
  420. package/dist/esm/tecton-tab-pane.entry.js +2 -2
  421. package/dist/q2-tecton-elements/{p-0a3a804a.entry.js → p-06701928.entry.js} +2 -2
  422. package/dist/q2-tecton-elements/{p-0a3a804a.entry.js.map → p-06701928.entry.js.map} +1 -1
  423. package/dist/q2-tecton-elements/{p-5d936af5.entry.js → p-07d1c3ae.entry.js} +2 -2
  424. package/dist/q2-tecton-elements/p-15ac45d6.js +2 -0
  425. package/dist/q2-tecton-elements/p-15ac45d6.js.map +1 -0
  426. package/dist/q2-tecton-elements/{p-ce4e6b41.entry.js → p-16910682.entry.js} +2 -2
  427. package/dist/q2-tecton-elements/p-16910682.entry.js.map +1 -0
  428. package/dist/q2-tecton-elements/p-188eb162.entry.js +3 -0
  429. package/dist/q2-tecton-elements/p-188eb162.entry.js.map +1 -0
  430. package/dist/q2-tecton-elements/{p-58cafc0d.entry.js → p-1c760a89.entry.js} +2 -2
  431. package/dist/q2-tecton-elements/{p-074ae80c.entry.js → p-1c88d057.entry.js} +2 -2
  432. package/dist/q2-tecton-elements/{p-3b0d3cd4.entry.js → p-20a3d6ed.entry.js} +2 -2
  433. package/dist/q2-tecton-elements/p-20a3d6ed.entry.js.map +1 -0
  434. package/dist/q2-tecton-elements/{p-77a0cc0c.entry.js → p-2733583e.entry.js} +2 -2
  435. package/dist/q2-tecton-elements/{p-4116579f.entry.js → p-3e428290.entry.js} +2 -2
  436. package/dist/q2-tecton-elements/p-3e428290.entry.js.map +1 -0
  437. package/dist/q2-tecton-elements/{p-072c5877.entry.js → p-4774e5b3.entry.js} +2 -2
  438. package/dist/q2-tecton-elements/{p-77272c4c.entry.js → p-490ef8e5.entry.js} +2 -2
  439. package/dist/q2-tecton-elements/{p-0a1dff75.entry.js → p-4e10550d.entry.js} +2 -2
  440. package/dist/q2-tecton-elements/p-4e10550d.entry.js.map +1 -0
  441. package/dist/q2-tecton-elements/{p-2ca6d44f.entry.js → p-50f7328f.entry.js} +2 -2
  442. package/dist/q2-tecton-elements/p-5637c486.entry.js +2 -0
  443. package/dist/q2-tecton-elements/p-5637c486.entry.js.map +1 -0
  444. package/dist/q2-tecton-elements/p-56df21b0.entry.js +2 -0
  445. package/dist/q2-tecton-elements/p-56df21b0.entry.js.map +1 -0
  446. package/dist/q2-tecton-elements/{p-34856c71.entry.js → p-5a834214.entry.js} +2 -2
  447. package/dist/q2-tecton-elements/{p-34856c71.entry.js.map → p-5a834214.entry.js.map} +1 -1
  448. package/dist/q2-tecton-elements/p-5f99a4a8.entry.js +2 -0
  449. package/dist/q2-tecton-elements/p-5f99a4a8.entry.js.map +1 -0
  450. package/dist/q2-tecton-elements/p-72d948b4.entry.js +2 -0
  451. package/dist/q2-tecton-elements/p-72d948b4.entry.js.map +1 -0
  452. package/dist/q2-tecton-elements/{p-3c7be0bb.entry.js → p-7903cd15.entry.js} +2 -2
  453. package/dist/q2-tecton-elements/p-7903cd15.entry.js.map +1 -0
  454. package/dist/q2-tecton-elements/{p-d2e1631a.entry.js → p-7906f49e.entry.js} +2 -2
  455. package/dist/q2-tecton-elements/{p-d2e1631a.entry.js.map → p-7906f49e.entry.js.map} +1 -1
  456. package/dist/q2-tecton-elements/{p-2fcaf2d6.entry.js → p-7aef0c08.entry.js} +2 -2
  457. package/dist/q2-tecton-elements/{p-8a4b106d.entry.js → p-7c9a0122.entry.js} +2 -2
  458. package/dist/q2-tecton-elements/p-7c9f8b62.entry.js +2 -0
  459. package/dist/q2-tecton-elements/p-7c9f8b62.entry.js.map +1 -0
  460. package/dist/q2-tecton-elements/{p-cf32b5db.entry.js → p-81fbe718.entry.js} +2 -2
  461. package/dist/q2-tecton-elements/p-81fbe718.entry.js.map +1 -0
  462. package/dist/q2-tecton-elements/{p-6237c775.entry.js → p-896c7008.entry.js} +2 -2
  463. package/dist/q2-tecton-elements/{p-395904b4.entry.js → p-8d07cf91.entry.js} +2 -2
  464. package/dist/q2-tecton-elements/{p-fffb54e9.entry.js → p-8d2b02e1.entry.js} +2 -2
  465. package/dist/q2-tecton-elements/{p-6e6d9793.entry.js → p-95a7c042.entry.js} +2 -2
  466. package/dist/q2-tecton-elements/{p-45407ecc.entry.js → p-96b1406c.entry.js} +2 -2
  467. package/dist/q2-tecton-elements/{p-cb3f48de.entry.js → p-a47597dd.entry.js} +2 -2
  468. package/dist/q2-tecton-elements/p-a47597dd.entry.js.map +1 -0
  469. package/dist/q2-tecton-elements/p-a5d0e252.entry.js +2 -0
  470. package/dist/q2-tecton-elements/p-a5d0e252.entry.js.map +1 -0
  471. package/dist/q2-tecton-elements/{p-2c26295e.entry.js → p-ac6aa392.entry.js} +2 -2
  472. package/dist/q2-tecton-elements/{p-376a0589.entry.js → p-ad057d10.entry.js} +2 -2
  473. package/dist/q2-tecton-elements/p-ad798287.entry.js +2 -0
  474. package/dist/q2-tecton-elements/p-ad798287.entry.js.map +1 -0
  475. package/dist/q2-tecton-elements/{p-ad998f71.entry.js → p-b0e5e9dc.entry.js} +2 -2
  476. package/dist/q2-tecton-elements/p-b0e5e9dc.entry.js.map +1 -0
  477. package/dist/q2-tecton-elements/{p-34696e3f.entry.js → p-b1784be3.entry.js} +2 -2
  478. package/dist/q2-tecton-elements/{p-259b728a.entry.js → p-b7de110e.entry.js} +2 -2
  479. package/dist/q2-tecton-elements/{p-8111547c.entry.js → p-c235ab3f.entry.js} +2 -2
  480. package/dist/q2-tecton-elements/p-c5667d5d.entry.js +2 -0
  481. package/dist/q2-tecton-elements/p-c5667d5d.entry.js.map +1 -0
  482. package/dist/q2-tecton-elements/{p-c81d299a.entry.js → p-e216ef3f.entry.js} +2 -2
  483. package/dist/q2-tecton-elements/p-e2c800ef.entry.js +2 -0
  484. package/dist/q2-tecton-elements/p-e2c800ef.entry.js.map +1 -0
  485. package/dist/q2-tecton-elements/p-f135b265.entry.js +2 -0
  486. package/dist/q2-tecton-elements/p-f135b265.entry.js.map +1 -0
  487. package/dist/q2-tecton-elements/{p-721365be.js → p-f1e887f5.js} +1 -1
  488. package/dist/q2-tecton-elements/{p-6b7c53a8.entry.js → p-f5f23659.entry.js} +2 -2
  489. package/dist/q2-tecton-elements/p-f7867f21.entry.js +2 -0
  490. package/dist/q2-tecton-elements/p-f7867f21.entry.js.map +1 -0
  491. package/dist/q2-tecton-elements/p-ff8f1a32.entry.js +2 -0
  492. package/dist/q2-tecton-elements/p-ff8f1a32.entry.js.map +1 -0
  493. package/dist/q2-tecton-elements/p-fff01dc1.entry.js +2 -0
  494. package/dist/q2-tecton-elements/p-fff01dc1.entry.js.map +1 -0
  495. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
  496. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js.map +1 -1
  497. package/dist/types/components/q2-action-group/q2-action-group.d.ts +30 -0
  498. package/dist/types/components/q2-chart-area/q2-chart-area.d.ts +1 -1
  499. package/dist/types/components/q2-chart-bar/q2-chart-bar.d.ts +1 -1
  500. package/dist/types/components/q2-chart-donut/q2-chart-donut.d.ts +2 -0
  501. package/dist/types/components/q2-data-table/q2-data-table.d.ts +15 -13
  502. package/dist/types/components/q2-dropdown/q2-dropdown.d.ts +36 -0
  503. package/dist/types/components/q2-formatted-text/q2-formatted-text.d.ts +34 -0
  504. package/dist/types/components/q2-input/q2-input.d.ts +10 -9
  505. package/dist/types/components/q2-legend/q2-legend.d.ts +1 -0
  506. package/dist/types/components/q2-link/q2-link.d.ts +36 -0
  507. package/dist/types/components/q2-pagination/q2-pagination.d.ts +60 -3
  508. package/dist/types/components/q2-pill/q2-pill.d.ts +11 -0
  509. package/dist/types/components/q2-popover/q2-popover.d.ts +7 -1
  510. package/dist/types/components/q2-resize-observer/q2-resize-observer.d.ts +28 -0
  511. package/dist/types/components/q2-section/q2-section.d.ts +12 -0
  512. package/dist/types/components/q2-select/q2-select.d.ts +5 -0
  513. package/dist/types/components/q2-stepper/q2-stepper.d.ts +10 -1
  514. package/dist/types/components/q2-tab-container/q2-tab-container.d.ts +8 -2
  515. package/dist/types/components/q2-tag/q2-tag.d.ts +5 -0
  516. package/dist/types/components/q2-textarea/q2-textarea.d.ts +8 -3
  517. package/dist/types/components.d.ts +394 -18
  518. package/dist/types/utils/helpers.d.ts +28 -0
  519. package/dist/types/utils/index.d.ts +3 -3
  520. package/dist/types/utils/sanitize-html-string.d.ts +1 -0
  521. package/dist/types/utils/sanitize-regex-string.d.ts +1 -0
  522. package/package.json +4 -4
  523. package/dist/cjs/index-64d8b839.js +0 -1580
  524. package/dist/cjs/index-64d8b839.js.map +0 -1
  525. package/dist/esm/index-4a80972c.js +0 -1556
  526. package/dist/esm/index-4a80972c.js.map +0 -1
  527. package/dist/q2-tecton-elements/p-0a1dff75.entry.js.map +0 -1
  528. package/dist/q2-tecton-elements/p-3b0d3cd4.entry.js.map +0 -1
  529. package/dist/q2-tecton-elements/p-3c7be0bb.entry.js.map +0 -1
  530. package/dist/q2-tecton-elements/p-403bf3d4.entry.js +0 -2
  531. package/dist/q2-tecton-elements/p-403bf3d4.entry.js.map +0 -1
  532. package/dist/q2-tecton-elements/p-4116579f.entry.js.map +0 -1
  533. package/dist/q2-tecton-elements/p-661ed976.entry.js +0 -2
  534. package/dist/q2-tecton-elements/p-661ed976.entry.js.map +0 -1
  535. package/dist/q2-tecton-elements/p-9a1a4bc0.js +0 -3
  536. package/dist/q2-tecton-elements/p-9a1a4bc0.js.map +0 -1
  537. package/dist/q2-tecton-elements/p-a7a0b8aa.entry.js +0 -2
  538. package/dist/q2-tecton-elements/p-a7a0b8aa.entry.js.map +0 -1
  539. package/dist/q2-tecton-elements/p-aa57b657.entry.js +0 -2
  540. package/dist/q2-tecton-elements/p-aa57b657.entry.js.map +0 -1
  541. package/dist/q2-tecton-elements/p-ad998f71.entry.js.map +0 -1
  542. package/dist/q2-tecton-elements/p-adec9275.entry.js +0 -2
  543. package/dist/q2-tecton-elements/p-adec9275.entry.js.map +0 -1
  544. package/dist/q2-tecton-elements/p-adf0a7c9.entry.js +0 -2
  545. package/dist/q2-tecton-elements/p-adf0a7c9.entry.js.map +0 -1
  546. package/dist/q2-tecton-elements/p-b72fd065.entry.js +0 -2
  547. package/dist/q2-tecton-elements/p-b72fd065.entry.js.map +0 -1
  548. package/dist/q2-tecton-elements/p-c0c658d1.entry.js +0 -2
  549. package/dist/q2-tecton-elements/p-c0c658d1.entry.js.map +0 -1
  550. package/dist/q2-tecton-elements/p-cb3f48de.entry.js.map +0 -1
  551. package/dist/q2-tecton-elements/p-ce4e6b41.entry.js.map +0 -1
  552. package/dist/q2-tecton-elements/p-cf32b5db.entry.js.map +0 -1
  553. package/dist/q2-tecton-elements/p-cf966a0f.entry.js +0 -2
  554. package/dist/q2-tecton-elements/p-cf966a0f.entry.js.map +0 -1
  555. package/dist/q2-tecton-elements/p-dc77bf66.entry.js +0 -2
  556. package/dist/q2-tecton-elements/p-dc77bf66.entry.js.map +0 -1
  557. /package/dist/q2-tecton-elements/{p-5d936af5.entry.js.map → p-07d1c3ae.entry.js.map} +0 -0
  558. /package/dist/q2-tecton-elements/{p-58cafc0d.entry.js.map → p-1c760a89.entry.js.map} +0 -0
  559. /package/dist/q2-tecton-elements/{p-074ae80c.entry.js.map → p-1c88d057.entry.js.map} +0 -0
  560. /package/dist/q2-tecton-elements/{p-77a0cc0c.entry.js.map → p-2733583e.entry.js.map} +0 -0
  561. /package/dist/q2-tecton-elements/{p-072c5877.entry.js.map → p-4774e5b3.entry.js.map} +0 -0
  562. /package/dist/q2-tecton-elements/{p-77272c4c.entry.js.map → p-490ef8e5.entry.js.map} +0 -0
  563. /package/dist/q2-tecton-elements/{p-2ca6d44f.entry.js.map → p-50f7328f.entry.js.map} +0 -0
  564. /package/dist/q2-tecton-elements/{p-2fcaf2d6.entry.js.map → p-7aef0c08.entry.js.map} +0 -0
  565. /package/dist/q2-tecton-elements/{p-8a4b106d.entry.js.map → p-7c9a0122.entry.js.map} +0 -0
  566. /package/dist/q2-tecton-elements/{p-6237c775.entry.js.map → p-896c7008.entry.js.map} +0 -0
  567. /package/dist/q2-tecton-elements/{p-395904b4.entry.js.map → p-8d07cf91.entry.js.map} +0 -0
  568. /package/dist/q2-tecton-elements/{p-fffb54e9.entry.js.map → p-8d2b02e1.entry.js.map} +0 -0
  569. /package/dist/q2-tecton-elements/{p-6e6d9793.entry.js.map → p-95a7c042.entry.js.map} +0 -0
  570. /package/dist/q2-tecton-elements/{p-45407ecc.entry.js.map → p-96b1406c.entry.js.map} +0 -0
  571. /package/dist/q2-tecton-elements/{p-2c26295e.entry.js.map → p-ac6aa392.entry.js.map} +0 -0
  572. /package/dist/q2-tecton-elements/{p-376a0589.entry.js.map → p-ad057d10.entry.js.map} +0 -0
  573. /package/dist/q2-tecton-elements/{p-34696e3f.entry.js.map → p-b1784be3.entry.js.map} +0 -0
  574. /package/dist/q2-tecton-elements/{p-259b728a.entry.js.map → p-b7de110e.entry.js.map} +0 -0
  575. /package/dist/q2-tecton-elements/{p-8111547c.entry.js.map → p-c235ab3f.entry.js.map} +0 -0
  576. /package/dist/q2-tecton-elements/{p-c81d299a.entry.js.map → p-e216ef3f.entry.js.map} +0 -0
  577. /package/dist/q2-tecton-elements/{p-721365be.js.map → p-f1e887f5.js.map} +0 -0
  578. /package/dist/q2-tecton-elements/{p-6b7c53a8.entry.js.map → p-f5f23659.entry.js.map} +0 -0
@@ -74,7 +74,7 @@ button {
74
74
  }
75
75
 
76
76
  .tooltip {
77
- --comp-background: var(--tct-tooltip-background, var(--tct-tooltip-background-color, var(--t-tooltip-background-color, var(--t-top-a3, rgba(13, 13, 13, 0.85)))));
77
+ --comp-background: var(--tct-tooltip-background, var(--tct-tooltip-background-color, var(--t-tooltip-background-color, var(--t-top-a3, rgba(13, 13, 13, 0.8509803922)))));
78
78
  --comp-offset-default: calc(var(--app-scale-1x, 5px) * -1);
79
79
  --comp-offset: var(--tct-tooltip-offset, var(--t-tooltip-offset, var(--comp-offset-default)));
80
80
  --comp-position: var(--tct-tooltip-position, var(--t-tooltip-position, var(--app-scale-1x, 5px)));
@@ -89,6 +89,9 @@ button {
89
89
  .tooltip:hover {
90
90
  --comp-delay: var(--tct-tooltip-transition-delay, var(--t-tooltip-transition-delay, 1s));
91
91
  }
92
+ :host([immediate]:not([immediate=false])) .tooltip:hover {
93
+ --comp-delay: 0s;
94
+ }
92
95
  .tooltip:before {
93
96
  position: absolute;
94
97
  z-index: 2;
@@ -129,7 +132,7 @@ button {
129
132
  :host([block]) .tooltip {
130
133
  display: block;
131
134
  }
132
- .tooltip:hover:before, .tooltip:hover:after, .tooltip.has-keyboard-focus:focus-within:before, .tooltip.has-keyboard-focus:focus-within:after, :host([persistent]) .tooltip:before, :host([persistent]) .tooltip:after {
135
+ .tooltip:hover:before, .tooltip:hover:after, .tooltip.has-keyboard-focus:focus-within:before, .tooltip.has-keyboard-focus:focus-within:after, :host([persistent]:not([persistent=false])) .tooltip:before, :host([persistent]:not([persistent=false])) .tooltip:after {
133
136
  text-decoration: none;
134
137
  visibility: visible;
135
138
  opacity: 1;
@@ -27,19 +27,6 @@ describe('q2-tooltip', () => {
27
27
  expect(containerPseudoStyles.visibility).toEqual('visible');
28
28
  expect(containerPseudoStyles.opacity).toEqual('1');
29
29
  });
30
- describe('[A11y] guideline compliance', () => {
31
- it('Does not have accessibility violations with only label', async () => {
32
- const page = await setup({
33
- html: `
34
- <q2-tooltip label="${tooltipText}">
35
- <button id="in">Focus me</button>
36
- </q2-tooltip>
37
- <button id="out">Focus me</button> `,
38
- });
39
- const hasViolations = await evaluateA11y(page);
40
- expect(hasViolations).toBe(false);
41
- });
42
- });
43
30
  describe('Focus', () => {
44
31
  describe('when content is focused', () => {
45
32
  async function testFocusType(type) {
@@ -192,6 +179,38 @@ describe('q2-tooltip', () => {
192
179
  });
193
180
  });
194
181
  });
182
+ describe('immediate', () => {
183
+ describe('when provided', () => {
184
+ it('sets the delay to 0s on hover', async () => {
185
+ page = await setup({
186
+ html: `<q2-tooltip immediate label="${tooltipText}">Hover me</q2-tooltip>`,
187
+ });
188
+ await page.waitForChanges();
189
+ tooltip = await page.find('q2-tooltip');
190
+ container = await page.find('q2-tooltip >>> .tooltip');
191
+ await tooltip.hover();
192
+ await container.waitForEvent('transitionend');
193
+ await page.waitForChanges();
194
+ const containerPseudoStyles = await container.getComputedStyle(':after');
195
+ expect(containerPseudoStyles.transitionDelay).toEqual('0s');
196
+ });
197
+ });
198
+ describe('when not provided', () => {
199
+ it('sets the delay to default (1s) on hover', async () => {
200
+ page = await setup({
201
+ html: `<q2-tooltip label="${tooltipText}">Hover me</q2-tooltip>`,
202
+ });
203
+ await page.waitForChanges();
204
+ tooltip = await page.find('q2-tooltip');
205
+ container = await page.find('q2-tooltip >>> .tooltip');
206
+ await tooltip.hover();
207
+ await container.waitForEvent('transitionend');
208
+ await page.waitForChanges();
209
+ const containerPseudoStyles = await container.getComputedStyle(':after');
210
+ expect(containerPseudoStyles.transitionDelay).toEqual('1s');
211
+ });
212
+ });
213
+ });
195
214
  describe('focusable', () => {
196
215
  const innerActiveTestId = async (page) => {
197
216
  return page.$eval('q2-tooltip', el => { var _a; return (_a = el.shadowRoot.activeElement) === null || _a === void 0 ? void 0 : _a.getAttribute('test-id'); });
@@ -244,5 +263,24 @@ describe('q2-tooltip', () => {
244
263
  });
245
264
  });
246
265
  });
266
+ describe('Accessibility', () => {
267
+ describe('aXe DevTools', () => {
268
+ it('does not have accessibility violations', async () => {
269
+ const page = await setup({
270
+ html: `
271
+ <q2-tooltip label="${tooltipText}">
272
+ <button id="in">Focus me</button>
273
+ </q2-tooltip>
274
+ <button id="out">Focus me</button>
275
+ `,
276
+ });
277
+ const hasViolations = await evaluateA11y(page);
278
+ expect(hasViolations).toBe(false);
279
+ });
280
+ });
281
+ describe('Accessibility Tree', () => { });
282
+ describe('Keyboard Controls', () => { });
283
+ describe('Other', () => { });
284
+ });
247
285
  });
248
286
  //# sourceMappingURL=q2-tooltip-test.e2e.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"q2-tooltip-test.e2e.js","sourceRoot":"","sources":["../../../../src/components/q2-tooltip/test/q2-tooltip-test.e2e.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,+BAA+B,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAEvF,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IACxB,MAAM,WAAW,GAAG,mBAAmB,CAAC;IACxC,IAAI,IAAa,CAAC;IAClB,IAAI,OAAmB,CAAC;IACxB,IAAI,SAAqB,CAAC;IAE1B,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,2BAA2B,EAAE,CAAC,CAAC;QAChE,MAAM,CAAC,MAAM,+BAA+B,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACtF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;QACtC,IAAI,GAAG,MAAM,KAAK,CAAC;YACf,IAAI,EAAE,sBAAsB,WAAW,yBAAyB;SACnE,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5B,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACxC,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACvD,MAAM,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAClD,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAElE,IAAI,qBAAqB,GAAG,MAAM,SAAS,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACvE,MAAM,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC3D,MAAM,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAEnD,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QACtB,MAAM,SAAS,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;QAC9C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,qBAAqB,GAAG,MAAM,SAAS,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACnE,MAAM,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC5D,MAAM,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACzC,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;YACpE,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;gBACrB,IAAI,EAAE;yCACmB,WAAW;;;wDAGI;aAC3C,CAAC,CAAC;YACH,MAAM,aAAa,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;YAC/C,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;QACnB,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;YACrC,KAAK,UAAU,aAAa,CAAC,IAAuB;gBAChD,IAAI,GAAG,MAAM,KAAK,CAAC;oBACf,IAAI,EAAE;6CACmB,WAAW;;;4DAGI;iBAC3C,CAAC,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC9C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAChD,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;gBACvD,MAAM,aAAa,GAAG,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,mBAAmB,CAAC;gBACpF,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;gBAEjD,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;gBAE7C,MAAM,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;YACrD,CAAC;YAED,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;gBAClD,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;YACjC,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;gBACjD,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;YACjC,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;gBAC1C,IAAI,GAAG,MAAM,KAAK,CAAC;oBACf,IAAI,EAAE;6CACmB,WAAW;;;qBAGnC;iBACJ,CAAC,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACzC,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;gBACvD,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;gBAEvD,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;gBACrB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;gBAEnD,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAC7B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;YAC3D,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;QACnB,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;YACnB,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;gBAC/B,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;oBACjD,IAAI,GAAG,MAAM,KAAK,CAAC;wBACf,IAAI,EAAE,mCAAmC;qBAC5C,CAAC,CAAC;oBACH,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAC5B,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;oBACvD,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACjC,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;gBAC3B,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;oBACzC,IAAI,GAAG,MAAM,KAAK,CAAC;wBACf,IAAI,EAAE,sBAAsB,WAAW,mCAAmC;qBAC7E,CAAC,CAAC;oBACH,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAC5B,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;oBACvD,MAAM,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,CAAC;oBAC/B,MAAM,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;gBAClE,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;YACnB,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;gBAC/B,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;oBACzC,IAAI,GAAG,MAAM,KAAK,CAAC;wBACf,IAAI,EAAE,sBAAsB,WAAW,yBAAyB;qBACnE,CAAC,CAAC;oBACH,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAC5B,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;oBACxC,MAAM,mBAAmB,GAAG,MAAM,OAAO,CAAC,gBAAgB,EAAE,CAAC;oBAC7D,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;oBAE5D,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;oBACvD,MAAM,qBAAqB,GAAG,MAAM,SAAS,CAAC,gBAAgB,EAAE,CAAC;oBACjE,MAAM,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;gBAClE,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;gBAC3B,EAAE,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;oBAClC,IAAI,GAAG,MAAM,KAAK,CAAC;wBACf,IAAI,EAAE,sBAAsB,WAAW,+BAA+B;qBACzE,CAAC,CAAC;oBACH,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAC5B,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;oBACxC,MAAM,mBAAmB,GAAG,MAAM,OAAO,CAAC,gBAAgB,EAAE,CAAC;oBAC7D,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBAErD,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;oBACvD,MAAM,qBAAqB,GAAG,MAAM,SAAS,CAAC,gBAAgB,EAAE,CAAC;oBACjE,MAAM,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;YACvB,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;gBAC/B,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;oBAC7C,IAAI,GAAG,MAAM,KAAK,CAAC;wBACf,IAAI,EAAE,sBAAsB,WAAW,yBAAyB;qBACnE,CAAC,CAAC;oBACH,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAC5B,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;oBACvD,MAAM,qBAAqB,GAAG,MAAM,SAAS,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;oBACzE,MAAM,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAC9D,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;gBAC3B,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;oBACtC,IAAI,GAAG,MAAM,KAAK,CAAC;wBACf,IAAI,EAAE,sBAAsB,WAAW,mCAAmC;qBAC7E,CAAC,CAAC;oBACH,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAC5B,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;oBACvD,MAAM,qBAAqB,GAAG,MAAM,SAAS,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;oBACzE,MAAM,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;gBAClE,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;YACxB,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;gBAC/B,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;oBAClD,IAAI,GAAG,MAAM,KAAK,CAAC;wBACf,IAAI,EAAE,sBAAsB,WAAW,yBAAyB;qBACnE,CAAC,CAAC;oBACH,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAC5B,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;oBACvD,MAAM,qBAAqB,GAAG,MAAM,SAAS,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;oBACzE,MAAM,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;oBAC3D,MAAM,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACvD,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;gBAC3B,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;oBAC1C,IAAI,GAAG,MAAM,KAAK,CAAC;wBACf,IAAI,EAAE,sBAAsB,WAAW,oCAAoC;qBAC9E,CAAC,CAAC;oBACH,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAC5B,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;oBACvD,MAAM,qBAAqB,GAAG,MAAM,SAAS,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;oBACzE,MAAM,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;oBAC5D,MAAM,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACvD,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;YACvB,MAAM,iBAAiB,GAAG,KAAK,EAAE,IAAa,EAAE,EAAE;gBAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,CAAC,EAAE,WAAC,OAAA,MAAA,EAAE,CAAC,UAAU,CAAC,aAAa,0CAAE,YAAY,CAAC,SAAS,CAAC,CAAA,EAAA,CAAC,CAAC;YAChG,CAAC,CAAC;YACF,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;gBAC/B,UAAU,CAAC,KAAK,IAAI,EAAE;oBAClB,IAAI,GAAG,MAAM,KAAK,CAAC;wBACf,IAAI,EAAE,sBAAsB,WAAW,yBAAyB;qBACnE,CAAC,CAAC;oBACH,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAC5B,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;oBACxC,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;oBAC1C,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAC1D,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;oBACjE,MAAM,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;oBACpC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAE5B,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;gBAC1D,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;oBACjE,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;oBACtB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAE5B,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;gBAC1D,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;gBAC3B,UAAU,CAAC,KAAK,IAAI,EAAE;oBAClB,IAAI,GAAG,MAAM,KAAK,CAAC;wBACf,IAAI,EAAE,sBAAsB,WAAW,mCAAmC;qBAC7E,CAAC,CAAC;oBACH,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAC5B,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;oBACxC,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;oBAClC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC5D,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;oBACjE,MAAM,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;oBACpC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAE5B,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;gBACtE,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;oBACjE,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;oBACtB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAE5B,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;gBACtE,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC","sourcesContent":["import { E2EElement, E2EPage } from '@stencil/core/testing';\nimport { evaluateA11y, getListOfStyleCompilationIssues, setup } from '@/utils/helpers';\n\ndescribe('q2-tooltip', () => {\n const tooltipText = 'Good tooltip text';\n let page: E2EPage;\n let tooltip: E2EElement;\n let container: E2EElement;\n\n it('properly compiles CSS vars and functions', async () => {\n const page = await setup({ html: '<q2-tooltip></q2-tooltip>' });\n expect(await getListOfStyleCompilationIssues(page, 'q2-tooltip')).toHaveLength(0);\n });\n\n it('renders tooltip on hover', async () => {\n page = await setup({\n html: `<q2-tooltip label=\"${tooltipText}\">Hover me</q2-tooltip>`,\n });\n await page.waitForChanges();\n tooltip = await page.find('q2-tooltip');\n container = await page.find('q2-tooltip >>> .tooltip');\n expect(tooltip).toEqualAttribute('position', 'n');\n expect(container.getAttribute('aria-label')).toEqual(tooltipText);\n\n let containerPseudoStyles = await container.getComputedStyle(':after');\n expect(containerPseudoStyles.visibility).toEqual('hidden');\n expect(containerPseudoStyles.opacity).toEqual('0');\n\n await tooltip.hover();\n await container.waitForEvent('transitionend');\n await page.waitForChanges();\n\n containerPseudoStyles = await container.getComputedStyle(':after');\n expect(containerPseudoStyles.visibility).toEqual('visible');\n expect(containerPseudoStyles.opacity).toEqual('1');\n });\n\n describe('[A11y] guideline compliance', () => {\n it('Does not have accessibility violations with only label', async () => {\n const page = await setup({\n html: `\n <q2-tooltip label=\"${tooltipText}\">\n <button id=\"in\">Focus me</button>\n </q2-tooltip>\n <button id=\"out\">Focus me</button> `,\n });\n const hasViolations = await evaluateA11y(page);\n expect(hasViolations).toBe(false);\n });\n });\n\n describe('Focus', () => {\n describe('when content is focused', () => {\n async function testFocusType(type: 'focus' | 'click') {\n page = await setup({\n html: `\n <q2-tooltip label=\"${tooltipText}\">\n <button id=\"in\">Focus me</button>\n </q2-tooltip>\n <button id=\"out\">Focus me</button> `,\n });\n const inButton = await page.find('button#in');\n const outButton = await page.find('button#out');\n container = await page.find('q2-tooltip >>> .tooltip');\n const typeClassName = type === 'focus' ? 'has-keyboard-focus' : 'has-generic-focus';\n expect(container).not.toHaveClass(typeClassName);\n\n await inButton[type]();\n await page.waitForChanges();\n\n expect(container).toHaveClass(typeClassName);\n\n await outButton[type]();\n await page.waitForChanges();\n expect(container).not.toHaveClass(typeClassName);\n }\n\n it('adds the keyboard class when focused', async () => {\n await testFocusType('focus');\n });\n\n it('adds the generic class when clicked', async () => {\n await testFocusType('click');\n });\n\n it('closes the tooltip on Escape', async () => {\n page = await setup({\n html: `\n <q2-tooltip label=\"${tooltipText}\">\n <button>Focus me</button>\n </q2-tooltip>\n `,\n });\n const button = await page.find('button');\n container = await page.find('q2-tooltip >>> .tooltip');\n expect(container).not.toHaveClass('has-generic-focus');\n\n await button.click();\n await page.waitForChanges();\n\n expect(container).toHaveClass('has-generic-focus');\n\n await button.press('Escape');\n await page.waitForChanges();\n\n expect(container).not.toHaveClass('has-generic-focus');\n });\n });\n });\n\n describe('Props', () => {\n describe('label', () => {\n describe('when not provided', () => {\n it('does not wrap the slot in a tooltip', async () => {\n page = await setup({\n html: `<q2-tooltip>Hover me</q2-tooltip>`,\n });\n await page.waitForChanges();\n container = await page.find('q2-tooltip >>> .tooltip');\n expect(container).toBeNull();\n });\n });\n\n describe('when provided', () => {\n it('wraps the slot in a tooltip', async () => {\n page = await setup({\n html: `<q2-tooltip label=\"${tooltipText}\" multiline>Hover me</q2-tooltip>`,\n });\n await page.waitForChanges();\n container = await page.find('q2-tooltip >>> .tooltip');\n expect(container).toBeTruthy();\n expect(container).toEqualAttribute('aria-label', tooltipText);\n });\n });\n });\n\n describe('block', () => {\n describe('when not provided', () => {\n it('does not apply block styles', async () => {\n page = await setup({\n html: `<q2-tooltip label=\"${tooltipText}\">Hover me</q2-tooltip>`,\n });\n await page.waitForChanges();\n tooltip = await page.find('q2-tooltip');\n const tooltipPseudoStyles = await tooltip.getComputedStyle();\n expect(tooltipPseudoStyles.display).toEqual('inline-block');\n\n container = await page.find('q2-tooltip >>> .tooltip');\n const containerPseudoStyles = await container.getComputedStyle();\n expect(containerPseudoStyles.display).toEqual('inline-block');\n });\n });\n\n describe('when provided', () => {\n it('applies block styles', async () => {\n page = await setup({\n html: `<q2-tooltip label=\"${tooltipText}\" block>Hover me</q2-tooltip>`,\n });\n await page.waitForChanges();\n tooltip = await page.find('q2-tooltip');\n const tooltipPseudoStyles = await tooltip.getComputedStyle();\n expect(tooltipPseudoStyles.display).toEqual('block');\n\n container = await page.find('q2-tooltip >>> .tooltip');\n const containerPseudoStyles = await container.getComputedStyle();\n expect(containerPseudoStyles.display).toEqual('block');\n });\n });\n });\n\n describe('multiline', () => {\n describe('when not provided', () => {\n it('does not apply multiline styles', async () => {\n page = await setup({\n html: `<q2-tooltip label=\"${tooltipText}\">Hover me</q2-tooltip>`,\n });\n await page.waitForChanges();\n container = await page.find('q2-tooltip >>> .tooltip');\n const containerPseudoStyles = await container.getComputedStyle(':after');\n expect(containerPseudoStyles.wordBreak).toEqual('normal');\n });\n });\n\n describe('when provided', () => {\n it('applies multiline styles', async () => {\n page = await setup({\n html: `<q2-tooltip label=\"${tooltipText}\" multiline>Hover me</q2-tooltip>`,\n });\n await page.waitForChanges();\n container = await page.find('q2-tooltip >>> .tooltip');\n const containerPseudoStyles = await container.getComputedStyle(':after');\n expect(containerPseudoStyles.wordBreak).toEqual('break-word');\n });\n });\n });\n\n describe('persistent', () => {\n describe('when not provided', () => {\n it('does not show the tooltip by default', async () => {\n page = await setup({\n html: `<q2-tooltip label=\"${tooltipText}\">Hover me</q2-tooltip>`,\n });\n await page.waitForChanges();\n container = await page.find('q2-tooltip >>> .tooltip');\n const containerPseudoStyles = await container.getComputedStyle(':after');\n expect(containerPseudoStyles.visibility).toEqual('hidden');\n expect(containerPseudoStyles.opacity).toEqual('0');\n });\n });\n\n describe('when provided', () => {\n it('shows the tooltip by default', async () => {\n page = await setup({\n html: `<q2-tooltip label=\"${tooltipText}\" persistent>Hover me</q2-tooltip>`,\n });\n await page.waitForChanges();\n container = await page.find('q2-tooltip >>> .tooltip');\n const containerPseudoStyles = await container.getComputedStyle(':after');\n expect(containerPseudoStyles.visibility).toEqual('visible');\n expect(containerPseudoStyles.opacity).toEqual('1');\n });\n });\n });\n\n describe('focusable', () => {\n const innerActiveTestId = async (page: E2EPage) => {\n return page.$eval('q2-tooltip', el => el.shadowRoot.activeElement?.getAttribute('test-id'));\n };\n describe('when not provided', () => {\n beforeEach(async () => {\n page = await setup({\n html: `<q2-tooltip label=\"${tooltipText}\">Hover me</q2-tooltip>`,\n });\n await page.waitForChanges();\n tooltip = await page.find('q2-tooltip');\n container = await page.find('q2-tooltip >>> .tooltip');\n });\n\n it('tabindex should be undefined', async () => {\n expect(container.getAttribute('tabindex')).toBeNull();\n });\n\n it('focuses inner button when focus event is dispatched', async () => {\n await tooltip.triggerEvent('focus');\n await page.waitForChanges();\n\n expect(await innerActiveTestId(page)).toBeUndefined();\n });\n\n it('focuses inner button when element.focus() is called', async () => {\n await tooltip.focus();\n await page.waitForChanges();\n\n expect(await innerActiveTestId(page)).toBeUndefined();\n });\n });\n\n describe('when provided', () => {\n beforeEach(async () => {\n page = await setup({\n html: `<q2-tooltip label=\"${tooltipText}\" focusable>Hover me</q2-tooltip>`,\n });\n await page.waitForChanges();\n tooltip = await page.find('q2-tooltip');\n container = await page.find('q2-tooltip >>> .tooltip');\n });\n\n it('tabindex should be 0', async () => {\n expect(container.getAttribute('tabindex')).toEqual('0');\n });\n\n it('focuses inner button when focus event is dispatched', async () => {\n await tooltip.triggerEvent('focus');\n await page.waitForChanges();\n\n expect(await innerActiveTestId(page)).toEqual('tooltipContainer');\n });\n\n it('focuses inner button when element.focus() is called', async () => {\n await tooltip.focus();\n await page.waitForChanges();\n\n expect(await innerActiveTestId(page)).toEqual('tooltipContainer');\n });\n });\n });\n });\n});\n"]}
1
+ {"version":3,"file":"q2-tooltip-test.e2e.js","sourceRoot":"","sources":["../../../../src/components/q2-tooltip/test/q2-tooltip-test.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { E2EElement, E2EPage } from '@stencil/core/testing';\nimport { evaluateA11y, getListOfStyleCompilationIssues, setup } from '@/utils/helpers';\n\ndescribe('q2-tooltip', () => {\n const tooltipText = 'Good tooltip text';\n let page: E2EPage;\n let tooltip: E2EElement;\n let container: E2EElement;\n\n it('properly compiles CSS vars and functions', async () => {\n const page = await setup({ html: '<q2-tooltip></q2-tooltip>' });\n expect(await getListOfStyleCompilationIssues(page, 'q2-tooltip')).toHaveLength(0);\n });\n\n it('renders tooltip on hover', async () => {\n page = await setup({\n html: `<q2-tooltip label=\"${tooltipText}\">Hover me</q2-tooltip>`,\n });\n await page.waitForChanges();\n tooltip = await page.find('q2-tooltip');\n container = await page.find('q2-tooltip >>> .tooltip');\n expect(tooltip).toEqualAttribute('position', 'n');\n expect(container.getAttribute('aria-label')).toEqual(tooltipText);\n\n let containerPseudoStyles = await container.getComputedStyle(':after');\n expect(containerPseudoStyles.visibility).toEqual('hidden');\n expect(containerPseudoStyles.opacity).toEqual('0');\n\n await tooltip.hover();\n await container.waitForEvent('transitionend');\n await page.waitForChanges();\n\n containerPseudoStyles = await container.getComputedStyle(':after');\n expect(containerPseudoStyles.visibility).toEqual('visible');\n expect(containerPseudoStyles.opacity).toEqual('1');\n });\n\n describe('Focus', () => {\n describe('when content is focused', () => {\n async function testFocusType(type: 'focus' | 'click') {\n page = await setup({\n html: `\n <q2-tooltip label=\"${tooltipText}\">\n <button id=\"in\">Focus me</button>\n </q2-tooltip>\n <button id=\"out\">Focus me</button> `,\n });\n const inButton = await page.find('button#in');\n const outButton = await page.find('button#out');\n container = await page.find('q2-tooltip >>> .tooltip');\n const typeClassName = type === 'focus' ? 'has-keyboard-focus' : 'has-generic-focus';\n expect(container).not.toHaveClass(typeClassName);\n\n await inButton[type]();\n await page.waitForChanges();\n\n expect(container).toHaveClass(typeClassName);\n\n await outButton[type]();\n await page.waitForChanges();\n expect(container).not.toHaveClass(typeClassName);\n }\n\n it('adds the keyboard class when focused', async () => {\n await testFocusType('focus');\n });\n\n it('adds the generic class when clicked', async () => {\n await testFocusType('click');\n });\n\n it('closes the tooltip on Escape', async () => {\n page = await setup({\n html: `\n <q2-tooltip label=\"${tooltipText}\">\n <button>Focus me</button>\n </q2-tooltip>\n `,\n });\n const button = await page.find('button');\n container = await page.find('q2-tooltip >>> .tooltip');\n expect(container).not.toHaveClass('has-generic-focus');\n\n await button.click();\n await page.waitForChanges();\n\n expect(container).toHaveClass('has-generic-focus');\n\n await button.press('Escape');\n await page.waitForChanges();\n\n expect(container).not.toHaveClass('has-generic-focus');\n });\n });\n });\n\n describe('Props', () => {\n describe('label', () => {\n describe('when not provided', () => {\n it('does not wrap the slot in a tooltip', async () => {\n page = await setup({\n html: `<q2-tooltip>Hover me</q2-tooltip>`,\n });\n await page.waitForChanges();\n container = await page.find('q2-tooltip >>> .tooltip');\n expect(container).toBeNull();\n });\n });\n\n describe('when provided', () => {\n it('wraps the slot in a tooltip', async () => {\n page = await setup({\n html: `<q2-tooltip label=\"${tooltipText}\" multiline>Hover me</q2-tooltip>`,\n });\n await page.waitForChanges();\n container = await page.find('q2-tooltip >>> .tooltip');\n expect(container).toBeTruthy();\n expect(container).toEqualAttribute('aria-label', tooltipText);\n });\n });\n });\n\n describe('block', () => {\n describe('when not provided', () => {\n it('does not apply block styles', async () => {\n page = await setup({\n html: `<q2-tooltip label=\"${tooltipText}\">Hover me</q2-tooltip>`,\n });\n await page.waitForChanges();\n tooltip = await page.find('q2-tooltip');\n const tooltipPseudoStyles = await tooltip.getComputedStyle();\n expect(tooltipPseudoStyles.display).toEqual('inline-block');\n\n container = await page.find('q2-tooltip >>> .tooltip');\n const containerPseudoStyles = await container.getComputedStyle();\n expect(containerPseudoStyles.display).toEqual('inline-block');\n });\n });\n\n describe('when provided', () => {\n it('applies block styles', async () => {\n page = await setup({\n html: `<q2-tooltip label=\"${tooltipText}\" block>Hover me</q2-tooltip>`,\n });\n await page.waitForChanges();\n tooltip = await page.find('q2-tooltip');\n const tooltipPseudoStyles = await tooltip.getComputedStyle();\n expect(tooltipPseudoStyles.display).toEqual('block');\n\n container = await page.find('q2-tooltip >>> .tooltip');\n const containerPseudoStyles = await container.getComputedStyle();\n expect(containerPseudoStyles.display).toEqual('block');\n });\n });\n });\n\n describe('multiline', () => {\n describe('when not provided', () => {\n it('does not apply multiline styles', async () => {\n page = await setup({\n html: `<q2-tooltip label=\"${tooltipText}\">Hover me</q2-tooltip>`,\n });\n await page.waitForChanges();\n container = await page.find('q2-tooltip >>> .tooltip');\n const containerPseudoStyles = await container.getComputedStyle(':after');\n expect(containerPseudoStyles.wordBreak).toEqual('normal');\n });\n });\n\n describe('when provided', () => {\n it('applies multiline styles', async () => {\n page = await setup({\n html: `<q2-tooltip label=\"${tooltipText}\" multiline>Hover me</q2-tooltip>`,\n });\n await page.waitForChanges();\n container = await page.find('q2-tooltip >>> .tooltip');\n const containerPseudoStyles = await container.getComputedStyle(':after');\n expect(containerPseudoStyles.wordBreak).toEqual('break-word');\n });\n });\n });\n\n describe('persistent', () => {\n describe('when not provided', () => {\n it('does not show the tooltip by default', async () => {\n page = await setup({\n html: `<q2-tooltip label=\"${tooltipText}\">Hover me</q2-tooltip>`,\n });\n await page.waitForChanges();\n container = await page.find('q2-tooltip >>> .tooltip');\n const containerPseudoStyles = await container.getComputedStyle(':after');\n expect(containerPseudoStyles.visibility).toEqual('hidden');\n expect(containerPseudoStyles.opacity).toEqual('0');\n });\n });\n\n describe('when provided', () => {\n it('shows the tooltip by default', async () => {\n page = await setup({\n html: `<q2-tooltip label=\"${tooltipText}\" persistent>Hover me</q2-tooltip>`,\n });\n await page.waitForChanges();\n container = await page.find('q2-tooltip >>> .tooltip');\n const containerPseudoStyles = await container.getComputedStyle(':after');\n expect(containerPseudoStyles.visibility).toEqual('visible');\n expect(containerPseudoStyles.opacity).toEqual('1');\n });\n });\n });\n\n describe('immediate', () => {\n describe('when provided', () => {\n it('sets the delay to 0s on hover', async () => {\n page = await setup({\n html: `<q2-tooltip immediate label=\"${tooltipText}\">Hover me</q2-tooltip>`,\n });\n await page.waitForChanges();\n tooltip = await page.find('q2-tooltip');\n container = await page.find('q2-tooltip >>> .tooltip');\n\n await tooltip.hover();\n await container.waitForEvent('transitionend');\n await page.waitForChanges();\n\n const containerPseudoStyles = await container.getComputedStyle(':after');\n expect(containerPseudoStyles.transitionDelay).toEqual('0s');\n });\n });\n\n describe('when not provided', () => {\n it('sets the delay to default (1s) on hover', async () => {\n page = await setup({\n html: `<q2-tooltip label=\"${tooltipText}\">Hover me</q2-tooltip>`,\n });\n await page.waitForChanges();\n tooltip = await page.find('q2-tooltip');\n container = await page.find('q2-tooltip >>> .tooltip');\n\n await tooltip.hover();\n await container.waitForEvent('transitionend');\n await page.waitForChanges();\n\n const containerPseudoStyles = await container.getComputedStyle(':after');\n expect(containerPseudoStyles.transitionDelay).toEqual('1s');\n });\n });\n });\n\n describe('focusable', () => {\n const innerActiveTestId = async (page: E2EPage) => {\n return page.$eval('q2-tooltip', el => el.shadowRoot.activeElement?.getAttribute('test-id'));\n };\n describe('when not provided', () => {\n beforeEach(async () => {\n page = await setup({\n html: `<q2-tooltip label=\"${tooltipText}\">Hover me</q2-tooltip>`,\n });\n await page.waitForChanges();\n tooltip = await page.find('q2-tooltip');\n container = await page.find('q2-tooltip >>> .tooltip');\n });\n\n it('tabindex should be undefined', async () => {\n expect(container.getAttribute('tabindex')).toBeNull();\n });\n\n it('focuses inner button when focus event is dispatched', async () => {\n await tooltip.triggerEvent('focus');\n await page.waitForChanges();\n\n expect(await innerActiveTestId(page)).toBeUndefined();\n });\n\n it('focuses inner button when element.focus() is called', async () => {\n await tooltip.focus();\n await page.waitForChanges();\n\n expect(await innerActiveTestId(page)).toBeUndefined();\n });\n });\n\n describe('when provided', () => {\n beforeEach(async () => {\n page = await setup({\n html: `<q2-tooltip label=\"${tooltipText}\" focusable>Hover me</q2-tooltip>`,\n });\n await page.waitForChanges();\n tooltip = await page.find('q2-tooltip');\n container = await page.find('q2-tooltip >>> .tooltip');\n });\n\n it('tabindex should be 0', async () => {\n expect(container.getAttribute('tabindex')).toEqual('0');\n });\n\n it('focuses inner button when focus event is dispatched', async () => {\n await tooltip.triggerEvent('focus');\n await page.waitForChanges();\n\n expect(await innerActiveTestId(page)).toEqual('tooltipContainer');\n });\n\n it('focuses inner button when element.focus() is called', async () => {\n await tooltip.focus();\n await page.waitForChanges();\n\n expect(await innerActiveTestId(page)).toEqual('tooltipContainer');\n });\n });\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: `\n <q2-tooltip label=\"${tooltipText}\">\n <button id=\"in\">Focus me</button>\n </q2-tooltip>\n <button id=\"out\">Focus me</button>\n `,\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"]}
@@ -63,9 +63,9 @@ export class TectonTabPane {
63
63
  // #endregion
64
64
  // #region Render Methods
65
65
  render() {
66
- return (h("div", { key: 'b08f6062ef63fa60ee252f0fe71ab367c9069120', id: `tab-pane-${this.guid}-${this.index}`, class: `tab-pane${this.selected ? '' : ' hidden'}`, role: "tabpanel", tabindex: "-1", "aria-hidden": `${!this.selected}`, "aria-labelledby": `tab-${this.guid}-${this.index}` }, this.selected && this.provided !== undefined && !this.provided && (h("div", { key: 'e3726476f366863b021491549285feb458752855' }, h("slot", { key: '90726bbaa32b54a29044dd6e070afa896d2692f7', name: "loading-wrapper" }), h("iframe", { key: '13f5c60c1acd0163568dc4703e69c1577d4a59c2', hidden: true, name: this.moduleId, scrolling: "no", src: this.showForm && this.authPayload.length ? '' : this.url || '', "data-module-id": this.moduleId, style: this.minHeight ? { minHeight: this.minHeight } : null, onLoad: this.onIFrameLoad, title: this.iframeTitle, allow: "geolocation; camera" }), this._showForm && this.authPayload ? (h("form", { hidden: true, method: "post", action: this.url, target: this.moduleId, encType: "multipart/form-data" }, this.authPayload.map(element => {
66
+ return (h("div", { key: 'fbf2550a809c04de1ec1e0d56d042772e7a56ab1', id: `tab-pane-${this.guid}-${this.index}`, class: `tab-pane${this.selected ? '' : ' hidden'}`, role: "tabpanel", tabindex: "-1", "aria-hidden": `${!this.selected}`, "aria-labelledby": `tab-${this.guid}-${this.index}` }, this.selected && this.provided !== undefined && !this.provided && (h("div", { key: '3dfbabecf7a65d3e4a9e9cb022488ea2d74ec64a' }, h("slot", { key: '38f20a0d29bea45eaae2c9fd1bfb6f324694accc', name: "loading-wrapper" }), h("iframe", { key: '25106e9d4ff8fca4b9ca785d75b97557d4441ade', hidden: true, name: this.moduleId, scrolling: "no", src: this.showForm && this.authPayload.length ? '' : this.url || '', "data-module-id": this.moduleId, style: this.minHeight ? { minHeight: this.minHeight } : null, onLoad: this.onIFrameLoad, title: this.iframeTitle, allow: "geolocation; camera" }), this._showForm && this.authPayload ? (h("form", { hidden: true, method: "post", action: this.url, target: this.moduleId, encType: "multipart/form-data" }, this.authPayload.map(element => {
67
67
  return (h("input", { type: "hidden", value: element.value, name: element.key }));
68
- }))) : (''))), h("div", { key: '15deac9d5addf9905d1e060600a20d5c474fbfbe', class: "slot-wrapper", hidden: this.selected && this.provided !== undefined && !this.provided }, h("slot", { key: 'a7571def9ec10a6d69c19fc4c876b203e0a7fb1f' }))));
68
+ }))) : (''))), h("div", { key: 'caa4de86bb34e5cf3f4bb60977f2be9450210cf3', class: "slot-wrapper", hidden: this.selected && this.provided !== undefined && !this.provided }, h("slot", { key: 'da2ded5ffc3b4f5f42741b574f25280040a39eae' }))));
69
69
  }
70
70
  static get is() { return "tecton-tab-pane"; }
71
71
  static get encapsulation() { return "shadow"; }
@@ -1,20 +1,25 @@
1
1
  import { setup, dispatchEvent, getListOfStyleCompilationIssues, evaluateA11y } from "../../../utils/helpers";
2
2
  describe('tecton-tab-pane', () => {
3
- describe('[A11y] guideline compliance', () => {
4
- it('Does not have accessibility violations with only label', async () => {
5
- const page = await setup({
6
- html: `
7
- <tecton-tab-pane
8
- label="Tab 1"
9
- value="tab1"
10
- module-id="moduleId"
11
- url="tectontabpanetest/url"
12
- min-height="200px"></tecton-tab-pane>
13
- `,
3
+ describe('Accessibility', () => {
4
+ describe('aXe DevTools', () => {
5
+ it('does not have accessibility violations', async () => {
6
+ const page = await setup({
7
+ html: `
8
+ <tecton-tab-pane
9
+ label="Tab 1"
10
+ value="tab1"
11
+ module-id="moduleId"
12
+ url="tectontabpanetest/url"
13
+ min-height="200px"></tecton-tab-pane>
14
+ `,
15
+ });
16
+ const hasViolations = await evaluateA11y(page);
17
+ expect(hasViolations).toBe(false);
14
18
  });
15
- const hasViolations = await evaluateA11y(page);
16
- expect(hasViolations).toBe(false);
17
19
  });
20
+ describe('Accessibility Tree', () => { });
21
+ describe('Keyboard Controls', () => { });
22
+ describe('Other', () => { });
18
23
  });
19
24
  it('properly compiles CSS vars and functions', async () => {
20
25
  const page = await setup({ html: '<tecton-tab-pane></tecton-tab-pane>' });
@@ -1 +1 @@
1
- {"version":3,"file":"tecton-tab-pane-test.e2e.js","sourceRoot":"","sources":["../../../../src/components/tecton-tab-pane/test/tecton-tab-pane-test.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { setup, dispatchEvent, getListOfStyleCompilationIssues, evaluateA11y } from '@/utils/helpers';\n\ndescribe('tecton-tab-pane', () => {\n describe('[A11y] guideline compliance', () => {\n it('Does not have accessibility violations with only label', async () => {\n const page = await setup({\n html: `\n <tecton-tab-pane\n label=\"Tab 1\"\n value=\"tab1\"\n module-id=\"moduleId\"\n url=\"tectontabpanetest/url\"\n min-height=\"200px\"></tecton-tab-pane>\n `,\n });\n const hasViolations = await evaluateA11y(page);\n expect(hasViolations).toBe(false);\n });\n });\n\n it('properly compiles CSS vars and functions', async () => {\n const page = await setup({ html: '<tecton-tab-pane></tecton-tab-pane>' });\n expect(await getListOfStyleCompilationIssues(page, 'tecton-tab-pane')).toHaveLength(0);\n });\n it('correctly renders shadow DOM elements', async function (): Promise<void> {\n const page = await setup({\n html: `\n <tecton-tab-pane\n label=\"Tab 1\"\n value=\"tab1\"\n module-id=\"moduleId\"\n url=\"tectontabpanetest/url\"\n min-height=\"200px\"></tecton-tab-pane>\n `,\n });\n\n const tabPane = await page.find('tecton-tab-pane');\n tabPane.setProperty('index', 0);\n tabPane.setProperty('guid', 1000);\n tabPane.setProperty('provided', false);\n await page.waitForChanges();\n\n const innerTabPane = await page.find('tecton-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 let iframe = await page.find('tecton-tab-pane >>> iframe');\n expect(iframe).toEqualAttribute('src', 'tectontabpanetest/url');\n expect(iframe).toHaveAttribute('hidden');\n expect(iframe).toEqualAttribute('data-module-id', 'moduleId');\n expect(iframe).toEqualAttribute('scrolling', 'no');\n expect(iframe).toEqualAttribute('allow', 'geolocation; camera');\n\n const slot = await page.find('tecton-tab-pane >>> slot');\n expect(slot).not.toBeNull();\n\n let slotWrapper = await page.find('tecton-tab-pane >>> .slot-wrapper');\n expect(await slotWrapper.getProperty('hidden')).toEqual(true);\n\n tabPane.setProperty('provided', true);\n await page.waitForChanges();\n\n slotWrapper = await page.find('tecton-tab-pane >>> .slot-wrapper');\n expect(await slotWrapper.getProperty('hidden')).toEqual(false);\n\n iframe = await page.find('tecton-tab-pane >>> iframe');\n expect(iframe).toBeNull();\n });\n\n it.skip('initializes legacy iframeResizer', async function (): Promise<void> {\n // seems to be causing puppeteer error\n const page = await setup({\n html: `\n <tecton-tab-pane\n label=\"Tab 1\"\n value=\"tab1\"\n selected\n module-id=\"moduleId\"\n url=\"tectontabpanetest/url\"\n min-height=\"200px\"></tecton-tab-pane>\n `,\n });\n const tabPane = await page.find('tecton-tab-pane');\n tabPane.setProperty('provided', false);\n await page.waitForChanges();\n\n const postMessage = jest.fn();\n await page.exposeFunction('postMessage', postMessage);\n await page.$eval('tecton-tab-pane', element => {\n const iframe = element.shadowRoot.querySelector('iframe');\n iframe.contentWindow.postMessage = postMessage;\n });\n\n await dispatchEvent(page, ['tecton-tab-pane', 'iframe'], 'load');\n\n expect(postMessage).toBeCalled();\n expect(postMessage.mock.calls[0][0].includes('moduleId')).toBe(true);\n });\n});\n"]}
1
+ {"version":3,"file":"tecton-tab-pane-test.e2e.js","sourceRoot":"","sources":["../../../../src/components/tecton-tab-pane/test/tecton-tab-pane-test.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { setup, dispatchEvent, getListOfStyleCompilationIssues, evaluateA11y } from '@/utils/helpers';\n\ndescribe('tecton-tab-pane', () => {\n describe('Accessibility', () => {\n describe('aXe DevTools', () => {\n it('does not have accessibility violations', async () => {\n const page = await setup({\n html: `\n <tecton-tab-pane\n label=\"Tab 1\"\n value=\"tab1\"\n module-id=\"moduleId\"\n url=\"tectontabpanetest/url\"\n min-height=\"200px\"></tecton-tab-pane>\n `,\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 it('properly compiles CSS vars and functions', async () => {\n const page = await setup({ html: '<tecton-tab-pane></tecton-tab-pane>' });\n expect(await getListOfStyleCompilationIssues(page, 'tecton-tab-pane')).toHaveLength(0);\n });\n it('correctly renders shadow DOM elements', async function (): Promise<void> {\n const page = await setup({\n html: `\n <tecton-tab-pane\n label=\"Tab 1\"\n value=\"tab1\"\n module-id=\"moduleId\"\n url=\"tectontabpanetest/url\"\n min-height=\"200px\"></tecton-tab-pane>\n `,\n });\n\n const tabPane = await page.find('tecton-tab-pane');\n tabPane.setProperty('index', 0);\n tabPane.setProperty('guid', 1000);\n tabPane.setProperty('provided', false);\n await page.waitForChanges();\n\n const innerTabPane = await page.find('tecton-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 let iframe = await page.find('tecton-tab-pane >>> iframe');\n expect(iframe).toEqualAttribute('src', 'tectontabpanetest/url');\n expect(iframe).toHaveAttribute('hidden');\n expect(iframe).toEqualAttribute('data-module-id', 'moduleId');\n expect(iframe).toEqualAttribute('scrolling', 'no');\n expect(iframe).toEqualAttribute('allow', 'geolocation; camera');\n\n const slot = await page.find('tecton-tab-pane >>> slot');\n expect(slot).not.toBeNull();\n\n let slotWrapper = await page.find('tecton-tab-pane >>> .slot-wrapper');\n expect(await slotWrapper.getProperty('hidden')).toEqual(true);\n\n tabPane.setProperty('provided', true);\n await page.waitForChanges();\n\n slotWrapper = await page.find('tecton-tab-pane >>> .slot-wrapper');\n expect(await slotWrapper.getProperty('hidden')).toEqual(false);\n\n iframe = await page.find('tecton-tab-pane >>> iframe');\n expect(iframe).toBeNull();\n });\n\n it.skip('initializes legacy iframeResizer', async function (): Promise<void> {\n // seems to be causing puppeteer error\n const page = await setup({\n html: `\n <tecton-tab-pane\n label=\"Tab 1\"\n value=\"tab1\"\n selected\n module-id=\"moduleId\"\n url=\"tectontabpanetest/url\"\n min-height=\"200px\"></tecton-tab-pane>\n `,\n });\n const tabPane = await page.find('tecton-tab-pane');\n tabPane.setProperty('provided', false);\n await page.waitForChanges();\n\n const postMessage = jest.fn();\n await page.exposeFunction('postMessage', postMessage);\n await page.$eval('tecton-tab-pane', element => {\n const iframe = element.shadowRoot.querySelector('iframe');\n iframe.contentWindow.postMessage = postMessage;\n });\n\n await dispatchEvent(page, ['tecton-tab-pane', 'iframe'], 'load');\n\n expect(postMessage).toBeCalled();\n expect(postMessage.mock.calls[0][0].includes('moduleId')).toBe(true);\n });\n});\n"]}
@@ -1,6 +1,7 @@
1
1
  import { newE2EPage } from "@stencil/core/testing";
2
2
  import { removeTimezoneOffset } from "../components/q2-calendar/q2-calendar-helpers";
3
3
  import { AxePuppeteer } from "@axe-core/puppeteer";
4
+ import { newSpecPage } from "@stencil/core/testing";
4
5
  export async function dispatchEvent(page, selectors, eventType, eventInit) {
5
6
  if (typeof selectors === 'string') {
6
7
  selectors = [selectors];
@@ -89,6 +90,70 @@ export async function setup(pageOptions) {
89
90
  await page.waitForChanges();
90
91
  return page;
91
92
  }
93
+ /**
94
+ * Converts an object to a string of HTML attributes.
95
+ *
96
+ * @param obj - The object to convert, where keys are attribute names and values are attribute values.
97
+ * @returns A string representing the HTML attributes.
98
+ *
99
+ * @example
100
+ * const attributes = objectToHTMLAttributes({ id: 'my-element', class: 'my-class', 'data-value': '123' });
101
+ * console.log(attributes); // Output: "id='my-element' class='my-class' data-value='123'"
102
+ */
103
+ export function objectToHTMLAttributes(obj) {
104
+ return Object.entries(obj)
105
+ .map(([key, value]) => `${key}='${value}'`)
106
+ .join(' ');
107
+ }
108
+ /**
109
+ * Sets up a new Spec Page with localization capabilities for testing.
110
+ *
111
+ * @param pageOptions - Configuration options for the new Spec Page.
112
+ * @param testStrings - Optional dictionary of test strings for localization.
113
+ * @returns A promise that resolves to the configured Spec Page.
114
+ *
115
+ * This function initializes a new Spec Page and sets up the `TectonElements`
116
+ * object for localization testing. It also sets the provided test strings for
117
+ * localization and reloads the page to ensure the new `TectonElements` object
118
+ * is available.
119
+ *
120
+ * @note This method doesn't work with `NewSpecPageOptions.template`
121
+ * property. If you need to use that, please use `newSpecPage` directly.
122
+ */
123
+ export async function setupSpecPageWithLoc(pageOptions, testStrings) {
124
+ const page = await newSpecPage(pageOptions);
125
+ await page.waitForChanges();
126
+ // Setup the TectonElements object for localization testing
127
+ const specWindow = page.win;
128
+ specWindow.TectonElements = {
129
+ loc: (key, subs) => {
130
+ const string = (specWindow.TEST_STRINGS && specWindow.TEST_STRINGS[key]) || key;
131
+ if (Array.isArray(subs)) {
132
+ const regex = /({[0-9]})/g;
133
+ return string.replace(regex, match => {
134
+ return subs[parseInt(match[1])];
135
+ });
136
+ }
137
+ else if (typeof subs === 'object') {
138
+ return Object.entries(subs).reduce((accum, [key, value]) => accum.replace(`{${key}}`, value), string);
139
+ }
140
+ return string;
141
+ },
142
+ resizeIframe: () => { },
143
+ resolveMenu: async () => {
144
+ return [];
145
+ },
146
+ navigateTo: () => { },
147
+ showOverpanel: async () => {
148
+ return {};
149
+ },
150
+ };
151
+ // Set the test strings
152
+ specWindow.TEST_STRINGS = testStrings || {};
153
+ // Reload the page to ensure the new TectonElements object is available
154
+ await page.setContent(page.body.innerHTML);
155
+ return page;
156
+ }
92
157
  export function setWindowHeight(height) {
93
158
  Object.defineProperty(window, 'innerHeight', {
94
159
  writable: true,
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/utils/helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import { newE2EPage, E2EPage } from '@stencil/core/testing';\nimport { IDict } from '@/util';\nimport { E2EElement, NewE2EPageOptions } from '@stencil/core/testing/puppeteer/puppeteer-declarations';\nimport { removeTimezoneOffset } from '../components/q2-calendar/q2-calendar-helpers';\nimport { AxePuppeteer } from '@axe-core/puppeteer';\n\ninterface PasteInit extends EventInit {\n pastedValue: string;\n}\n\ntype EventInitType =\n | EventInit\n | KeyboardEventInit\n | MouseEventInit\n | FocusEventInit\n | CustomEventInit\n | PasteInit\n | ClipboardEventInit;\nexport async function dispatchEvent(\n page: E2EPage,\n selectors: string | string[],\n eventType: string,\n eventInit?: EventInitType\n) {\n if (typeof selectors === 'string') {\n selectors = [selectors];\n }\n\n await page.evaluate(\n (passedSelectors: string[], passedEventType: string, passedEventInit: EventInitType) => {\n const eventTypeDict = {\n change: CustomEvent,\n input: CustomEvent,\n keydown: KeyboardEvent,\n keyup: KeyboardEvent,\n focus: FocusEvent,\n blur: FocusEvent,\n click: MouseEvent,\n mousedown: MouseEvent,\n animationStart: AnimationEvent,\n animationEnd: AnimationEvent,\n slotchange: Event,\n load: Event,\n paste: ClipboardEvent,\n };\n\n let eventInit = passedEventInit;\n if (passedEventType === 'paste' && 'pastedValue' in passedEventInit) {\n const clipboardData = new DataTransfer();\n clipboardData.getData = () => (passedEventInit as PasteInit).pastedValue;\n eventInit = {\n bubbles: true,\n clipboardData,\n };\n }\n\n const EventTypeInit = eventTypeDict[passedEventType] || Event;\n const [first, ...rest] = passedSelectors;\n let itemElement = document.querySelector(first);\n const rootElement = itemElement;\n if (rest.length) {\n itemElement = rest.reduce((acc, selector) => acc.shadowRoot.querySelector(selector), itemElement);\n }\n\n itemElement?.dispatchEvent(new EventTypeInit(passedEventType, eventInit));\n\n if (passedEventType === 'paste' && 'pastedValue' in passedEventInit) {\n if (rootElement.getAttribute('type') !== 'currency') {\n (itemElement as HTMLInputElement).value =\n (itemElement as HTMLInputElement).value + passedEventInit.pastedValue;\n itemElement && itemElement.dispatchEvent(new InputEvent('input'));\n }\n }\n },\n selectors,\n eventType,\n eventInit\n );\n\n await page.waitForChanges();\n}\n\nexport async function setTestStrings(page: E2EPage, strings: IDict<string>) {\n await page.evaluate(function (strings) {\n this.TEST_STRINGS = strings;\n }, strings);\n}\n\nexport async function promiseMap<T>(arr: T[], fn: (...args: any[]) => any) {\n const promises = arr.map(fn);\n\n return Promise.all(promises);\n}\n\n/**\n * Waits for a specified amount of time.\n *\n * Please use this function sparingly, as it can slow down tests.\n */\nexport async function waitForTimeout(timeout: number) {\n return new Promise(resolve => setTimeout(resolve, timeout));\n}\n\nexport function offsetTimezone(date: string) {\n return removeTimezoneOffset(new Date(date)).toISOString();\n}\n\nexport async function setup(pageOptions?: NewE2EPageOptions) {\n const page = await newE2EPage(pageOptions);\n\n await page.evaluate(function () {\n this.TectonElements = this.TectonElements || {};\n this.TectonElements.loc = (key: string, subs?: string[] | IDict<string>) => {\n const string = (this.TEST_STRINGS && this.TEST_STRINGS[key]) || key;\n\n if (Array.isArray(subs)) {\n const regex = /({[0-9]})/g;\n return string.replace(regex, match => {\n return subs[parseInt(match[1])];\n });\n } else if (typeof subs === 'object') {\n return Object.entries(subs).reduce((accum, [key, value]) => accum.replace(`{${key}}`, value), string);\n }\n\n return string;\n };\n });\n\n await page.waitForChanges();\n\n return page;\n}\n\nexport function setWindowHeight(height: number) {\n Object.defineProperty(window, 'innerHeight', {\n writable: true,\n configurable: true,\n value: height,\n });\n\n window.dispatchEvent(new Event('resize'));\n\n expect(window.innerHeight).toBe(height);\n}\n\nexport function makeDomRect(customAttributes) {\n const defaults = {\n bottom: 0,\n height: 50,\n width: 50,\n left: 40,\n right: 0,\n top: 0,\n x: 0,\n y: 0,\n toJSON: () => ({}),\n };\n return { ...defaults, ...customAttributes };\n}\nexport const base64Image =\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=';\n\nexport async function getActiveElementTestId(page: E2EPage) {\n return page.$eval(\n 'body',\n () =>\n (document.activeElement.shadowRoot?.activeElement ?? document.activeElement).getAttribute('test-id') ?? null\n );\n}\n\nexport const getFocusedOptionValue = async (page: E2EPage) => {\n await page.waitForSelector('q2-option:focus');\n return page.$eval('body', () => document.activeElement.getAttribute('value'));\n};\n\nexport const getFocusedTagName = async (page: E2EPage) => {\n return page.$eval('body', () => document.activeElement?.tagName);\n};\n\nexport async function getFocusedAttribute(page: E2EPage, attribute: string) {\n return page.$eval(\n 'body',\n (_, attribute: string) => {\n const activeElement = document.activeElement.shadowRoot?.activeElement ?? document.activeElement;\n return activeElement?.getAttribute(attribute) ?? null;\n },\n attribute\n );\n}\n\nexport const testDeprecatedAriaLabel = async (element: E2EElement, label: string = 'My Label') => {\n expect(element).toEqualAttribute('label', label);\n const hasHideLabelProp = typeof (await element.getProperty('hideLabel')) !== 'undefined';\n if (hasHideLabelProp) expect(element).toHaveAttribute('hide-label');\n expect(await element.getProperty('ariaLabel')).toBeUndefined();\n};\n\nexport const getListOfStyleCompilationIssues = async (page: E2EPage, selector: string) => {\n return page.$eval(selector, el => {\n interface ShadowRootShim extends ShadowRoot {\n adoptedStyleSheets: CSSStyleSheet[];\n }\n const adoptedStyleSheets = (el.shadowRoot as ShadowRootShim).adoptedStyleSheets;\n const result = adoptedStyleSheets.reduce((accum, styleSheet) => {\n Array.from(styleSheet.cssRules).forEach(rule => {\n const hasVarList = rule.cssText.includes('var-list(');\n const hasVarPrefixer = rule.cssText.includes('var-prefixer(');\n if (hasVarList || hasVarPrefixer) accum.push((rule as any).selectorText);\n });\n return accum;\n }, []);\n\n if (!!result.length) {\n // eslint-disable-next-line no-console\n console.log(`The following selectors have compilation issues: ${result.join(', ')}`);\n }\n\n return result;\n });\n};\n\nexport const getNestedElementProperty = async (page: E2EPage, selectors: string | string[], prop: string) => {\n if (typeof selectors === 'string') {\n selectors = [selectors];\n }\n return page.evaluate(\n (selectors: string[], prop: string) => {\n const [first, ...rest] = selectors;\n let element = document.querySelector(first);\n if (rest.length) {\n element = rest.reduce((acc, selector) => acc.shadowRoot.querySelector(selector), element);\n }\n return element[prop];\n },\n selectors,\n prop\n );\n};\n\nexport const getNestedElementAttribute = async (page: E2EPage, selectors: string | string[], attribute: string) => {\n if (typeof selectors === 'string') {\n selectors = [selectors];\n }\n return page.$eval(\n 'body',\n (element, selectors: string[], attribute: string) => {\n const [first, ...rest] = selectors;\n element = document.querySelector(first);\n element = rest.reduce((acc, selector) => acc.shadowRoot.querySelector(selector), element);\n return element.getAttribute(attribute);\n },\n selectors,\n attribute\n );\n};\n\nexport const getNestedElementStyle = async (page: E2EPage, selectors: string | string[], attribute: string) => {\n if (typeof selectors === 'string') {\n selectors = [selectors];\n }\n return page.$eval(\n 'body',\n (element, selectors: string[], attribute: string) => {\n const [first, ...rest] = selectors;\n element = document.querySelector(first);\n element = rest.reduce((acc, selector) => acc.shadowRoot.querySelector(selector), element);\n const elementStyle = window.getComputedStyle(element);\n return elementStyle[attribute];\n },\n selectors,\n attribute\n );\n};\n\nexport const getNestedAssignedElementLength = async (page: E2EPage, selectors: string | string[]) => {\n if (typeof selectors === 'string') {\n selectors = [selectors];\n }\n return page.$eval(\n 'body',\n (element: HTMLElement, selectors: string[]) => {\n const [first, ...rest] = selectors;\n element = document.querySelector(first);\n element = rest.reduce((acc, selector) => acc.shadowRoot.querySelector(selector), element);\n return (element as HTMLSlotElement)?.assignedElements?.().length ?? undefined;\n },\n selectors\n );\n};\n\ntype ViolationsObject = {\n help?: string;\n helpUrl?: string;\n rulesViolated?: { [key: string]: string };\n failureSummary?: string;\n html?: string;\n};\n\nexport const evaluateA11y = async (page: any, ...args: string[]) => {\n const disabledIDsForComponents = [\n 'document-title',\n 'html-has-lang',\n 'landmark-one-main',\n 'page-has-heading-one',\n 'region',\n ];\n const detailLevel = args.includes('verbose') ? 'verbose' : 'default';\n const testType = args.includes('webpage') ? 'webpage' : 'component';\n // until we want to test actual web pages, we omit specific rules for component testing\n const rules = testType === 'webpage' ? [] : disabledIDsForComponents;\n\n try {\n const analysisResults = await new AxePuppeteer(page).disableRules(rules).analyze();\n const violations = analysisResults.violations;\n const responseObj = {};\n\n if (violations.length) {\n switch (detailLevel) {\n case 'verbose':\n return violations;\n\n default:\n violations.forEach(violation => {\n const violationInfo: ViolationsObject = {};\n violationInfo.help = violation.help;\n violationInfo.helpUrl = violation.helpUrl;\n\n const rulesInfo = {};\n const rulesViolated = violation.nodes[0].any;\n if (rulesViolated.length) {\n rulesViolated.forEach(rule => {\n rulesInfo[rule.id] = rule.message;\n });\n\n violationInfo.rulesViolated = rulesInfo;\n }\n const summary = violation.nodes[0].failureSummary;\n const html = violation.nodes[0].html;\n violationInfo.failureSummary = summary;\n violationInfo.html = html;\n\n responseObj[violation.id] = violationInfo;\n });\n\n return responseObj;\n }\n } else return false;\n } catch (error) {\n console.error(`There was an error with AxePuppeteer analysis. ERROR: ${error}`);\n }\n};\n\n/**\n * This function mocks the fetch API to return a resolved promise with the given icon markup.\n * You can optionally provide a <symbol> element, but it is not required.\n *\n * This is meant to be used to prevent errors on Unit/Spec tests with <q2-icon> because we are unable to provide a valid\n * URL for the fetch call in that context.\n *\n * @note This function should be called before the component is rendered.\n * @note Be sure to call `jest.restoreAllMocks()` after the test to restore the original fetch function.\n */\nexport const mockIconFetch = (iconMarkup?: string) => {\n const spy = jest.spyOn(global, 'fetch');\n const mockResponse = new Response(`<svg>${iconMarkup}</svg>`, {\n status: 200,\n statusText: 'OK',\n headers: new Headers(),\n });\n spy.mockResolvedValue(mockResponse);\n return spy;\n};\n"]}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/utils/helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import { newE2EPage, E2EPage } from '@stencil/core/testing';\nimport { IDict } from '@/util';\nimport { E2EElement, NewE2EPageOptions } from '@stencil/core/testing/puppeteer/puppeteer-declarations';\nimport { removeTimezoneOffset } from '../components/q2-calendar/q2-calendar-helpers';\nimport { AxePuppeteer } from '@axe-core/puppeteer';\nimport { NewSpecPageOptions } from '@stencil/core/internal';\nimport { newSpecPage } from '@stencil/core/testing';\n\ninterface PasteInit extends EventInit {\n pastedValue: string;\n}\n\ntype EventInitType =\n | EventInit\n | KeyboardEventInit\n | MouseEventInit\n | FocusEventInit\n | CustomEventInit\n | PasteInit\n | ClipboardEventInit;\nexport async function dispatchEvent(\n page: E2EPage,\n selectors: string | string[],\n eventType: string,\n eventInit?: EventInitType\n) {\n if (typeof selectors === 'string') {\n selectors = [selectors];\n }\n\n await page.evaluate(\n (passedSelectors: string[], passedEventType: string, passedEventInit: EventInitType) => {\n const eventTypeDict = {\n change: CustomEvent,\n input: CustomEvent,\n keydown: KeyboardEvent,\n keyup: KeyboardEvent,\n focus: FocusEvent,\n blur: FocusEvent,\n click: MouseEvent,\n mousedown: MouseEvent,\n animationStart: AnimationEvent,\n animationEnd: AnimationEvent,\n slotchange: Event,\n load: Event,\n paste: ClipboardEvent,\n };\n\n let eventInit = passedEventInit;\n if (passedEventType === 'paste' && 'pastedValue' in passedEventInit) {\n const clipboardData = new DataTransfer();\n clipboardData.getData = () => (passedEventInit as PasteInit).pastedValue;\n eventInit = {\n bubbles: true,\n clipboardData,\n };\n }\n\n const EventTypeInit = eventTypeDict[passedEventType] || Event;\n const [first, ...rest] = passedSelectors;\n let itemElement = document.querySelector(first);\n const rootElement = itemElement;\n if (rest.length) {\n itemElement = rest.reduce((acc, selector) => acc.shadowRoot.querySelector(selector), itemElement);\n }\n\n itemElement?.dispatchEvent(new EventTypeInit(passedEventType, eventInit));\n\n if (passedEventType === 'paste' && 'pastedValue' in passedEventInit) {\n if (rootElement.getAttribute('type') !== 'currency') {\n (itemElement as HTMLInputElement).value =\n (itemElement as HTMLInputElement).value + passedEventInit.pastedValue;\n itemElement && itemElement.dispatchEvent(new InputEvent('input'));\n }\n }\n },\n selectors,\n eventType,\n eventInit\n );\n\n await page.waitForChanges();\n}\n\nexport async function setTestStrings(page: E2EPage, strings: IDict<string>) {\n await page.evaluate(function (strings) {\n this.TEST_STRINGS = strings;\n }, strings);\n}\n\nexport async function promiseMap<T>(arr: T[], fn: (...args: any[]) => any) {\n const promises = arr.map(fn);\n\n return Promise.all(promises);\n}\n\n/**\n * Waits for a specified amount of time.\n *\n * Please use this function sparingly, as it can slow down tests.\n */\nexport async function waitForTimeout(timeout: number) {\n return new Promise(resolve => setTimeout(resolve, timeout));\n}\n\nexport function offsetTimezone(date: string) {\n return removeTimezoneOffset(new Date(date)).toISOString();\n}\n\nexport async function setup(pageOptions?: NewE2EPageOptions) {\n const page = await newE2EPage(pageOptions);\n\n await page.evaluate(function () {\n this.TectonElements = this.TectonElements || {};\n this.TectonElements.loc = (key: string, subs?: string[] | IDict<string>) => {\n const string = (this.TEST_STRINGS && this.TEST_STRINGS[key]) || key;\n\n if (Array.isArray(subs)) {\n const regex = /({[0-9]})/g;\n return string.replace(regex, match => {\n return subs[parseInt(match[1])];\n });\n } else if (typeof subs === 'object') {\n return Object.entries(subs).reduce((accum, [key, value]) => accum.replace(`{${key}}`, value), string);\n }\n\n return string;\n };\n });\n\n await page.waitForChanges();\n\n return page;\n}\n\n/**\n * Converts an object to a string of HTML attributes.\n *\n * @param obj - The object to convert, where keys are attribute names and values are attribute values.\n * @returns A string representing the HTML attributes.\n *\n * @example\n * const attributes = objectToHTMLAttributes({ id: 'my-element', class: 'my-class', 'data-value': '123' });\n * console.log(attributes); // Output: \"id='my-element' class='my-class' data-value='123'\"\n */\nexport function objectToHTMLAttributes(obj) {\n return Object.entries(obj)\n .map(([key, value]) => `${key}='${value}'`)\n .join(' ');\n}\n\n/**\n * Sets up a new Spec Page with localization capabilities for testing.\n *\n * @param pageOptions - Configuration options for the new Spec Page.\n * @param testStrings - Optional dictionary of test strings for localization.\n * @returns A promise that resolves to the configured Spec Page.\n *\n * This function initializes a new Spec Page and sets up the `TectonElements`\n * object for localization testing. It also sets the provided test strings for\n * localization and reloads the page to ensure the new `TectonElements` object\n * is available.\n *\n * @note This method doesn't work with `NewSpecPageOptions.template`\n * property. If you need to use that, please use `newSpecPage` directly.\n */\nexport async function setupSpecPageWithLoc(pageOptions: NewSpecPageOptions, testStrings?: IDict<string>) {\n const page = await newSpecPage(pageOptions);\n await page.waitForChanges();\n\n // Setup the TectonElements object for localization testing\n const specWindow = page.win as Window & {\n TectonElements: { loc: (key: string, subs?: string[] | IDict<string>) => string };\n TEST_STRINGS: IDict<string>;\n };\n specWindow.TectonElements = {\n loc: (key: string, subs?: string[] | IDict<string>) => {\n const string = (specWindow.TEST_STRINGS && specWindow.TEST_STRINGS[key]) || key;\n\n if (Array.isArray(subs)) {\n const regex = /({[0-9]})/g;\n return string.replace(regex, match => {\n return subs[parseInt(match[1])];\n });\n } else if (typeof subs === 'object') {\n return Object.entries(subs).reduce((accum, [key, value]) => accum.replace(`{${key}}`, value), string);\n }\n\n return string;\n },\n resizeIframe: () => {},\n resolveMenu: async () => {\n return [];\n },\n navigateTo: () => {},\n showOverpanel: async <T>(): Promise<T> => {\n return {} as T;\n },\n };\n\n // Set the test strings\n specWindow.TEST_STRINGS = testStrings || {};\n\n // Reload the page to ensure the new TectonElements object is available\n await page.setContent(page.body.innerHTML);\n\n return page;\n}\n\nexport function setWindowHeight(height: number) {\n Object.defineProperty(window, 'innerHeight', {\n writable: true,\n configurable: true,\n value: height,\n });\n\n window.dispatchEvent(new Event('resize'));\n\n expect(window.innerHeight).toBe(height);\n}\n\nexport function makeDomRect(customAttributes) {\n const defaults = {\n bottom: 0,\n height: 50,\n width: 50,\n left: 40,\n right: 0,\n top: 0,\n x: 0,\n y: 0,\n toJSON: () => ({}),\n };\n return { ...defaults, ...customAttributes };\n}\nexport const base64Image =\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=';\n\nexport async function getActiveElementTestId(page: E2EPage) {\n return page.$eval(\n 'body',\n () =>\n (document.activeElement.shadowRoot?.activeElement ?? document.activeElement).getAttribute('test-id') ?? null\n );\n}\n\nexport const getFocusedOptionValue = async (page: E2EPage) => {\n await page.waitForSelector('q2-option:focus');\n return page.$eval('body', () => document.activeElement.getAttribute('value'));\n};\n\nexport const getFocusedTagName = async (page: E2EPage) => {\n return page.$eval('body', () => document.activeElement?.tagName);\n};\n\nexport async function getFocusedAttribute(page: E2EPage, attribute: string) {\n return page.$eval(\n 'body',\n (_, attribute: string) => {\n const activeElement = document.activeElement.shadowRoot?.activeElement ?? document.activeElement;\n return activeElement?.getAttribute(attribute) ?? null;\n },\n attribute\n );\n}\n\nexport const testDeprecatedAriaLabel = async (element: E2EElement, label: string = 'My Label') => {\n expect(element).toEqualAttribute('label', label);\n const hasHideLabelProp = typeof (await element.getProperty('hideLabel')) !== 'undefined';\n if (hasHideLabelProp) expect(element).toHaveAttribute('hide-label');\n expect(await element.getProperty('ariaLabel')).toBeUndefined();\n};\n\nexport const getListOfStyleCompilationIssues = async (page: E2EPage, selector: string) => {\n return page.$eval(selector, el => {\n interface ShadowRootShim extends ShadowRoot {\n adoptedStyleSheets: CSSStyleSheet[];\n }\n const adoptedStyleSheets = (el.shadowRoot as ShadowRootShim).adoptedStyleSheets;\n const result = adoptedStyleSheets.reduce((accum, styleSheet) => {\n Array.from(styleSheet.cssRules).forEach(rule => {\n const hasVarList = rule.cssText.includes('var-list(');\n const hasVarPrefixer = rule.cssText.includes('var-prefixer(');\n if (hasVarList || hasVarPrefixer) accum.push((rule as any).selectorText);\n });\n return accum;\n }, []);\n\n if (!!result.length) {\n // eslint-disable-next-line no-console\n console.log(`The following selectors have compilation issues: ${result.join(', ')}`);\n }\n\n return result;\n });\n};\n\nexport const getNestedElementProperty = async (page: E2EPage, selectors: string | string[], prop: string) => {\n if (typeof selectors === 'string') {\n selectors = [selectors];\n }\n return page.evaluate(\n (selectors: string[], prop: string) => {\n const [first, ...rest] = selectors;\n let element = document.querySelector(first);\n if (rest.length) {\n element = rest.reduce((acc, selector) => acc.shadowRoot.querySelector(selector), element);\n }\n return element[prop];\n },\n selectors,\n prop\n );\n};\n\nexport const getNestedElementAttribute = async (page: E2EPage, selectors: string | string[], attribute: string) => {\n if (typeof selectors === 'string') {\n selectors = [selectors];\n }\n return page.$eval(\n 'body',\n (element, selectors: string[], attribute: string) => {\n const [first, ...rest] = selectors;\n element = document.querySelector(first);\n element = rest.reduce((acc, selector) => acc.shadowRoot.querySelector(selector), element);\n return element.getAttribute(attribute);\n },\n selectors,\n attribute\n );\n};\n\nexport const getNestedElementStyle = async (page: E2EPage, selectors: string | string[], attribute: string) => {\n if (typeof selectors === 'string') {\n selectors = [selectors];\n }\n return page.$eval(\n 'body',\n (element, selectors: string[], attribute: string) => {\n const [first, ...rest] = selectors;\n element = document.querySelector(first);\n element = rest.reduce((acc, selector) => acc.shadowRoot.querySelector(selector), element);\n const elementStyle = window.getComputedStyle(element);\n return elementStyle[attribute];\n },\n selectors,\n attribute\n );\n};\n\nexport const getNestedAssignedElementLength = async (page: E2EPage, selectors: string | string[]) => {\n if (typeof selectors === 'string') {\n selectors = [selectors];\n }\n return page.$eval(\n 'body',\n (element: HTMLElement, selectors: string[]) => {\n const [first, ...rest] = selectors;\n element = document.querySelector(first);\n element = rest.reduce((acc, selector) => acc.shadowRoot.querySelector(selector), element);\n return (element as HTMLSlotElement)?.assignedElements?.().length ?? undefined;\n },\n selectors\n );\n};\n\ntype ViolationsObject = {\n help?: string;\n helpUrl?: string;\n rulesViolated?: { [key: string]: string };\n failureSummary?: string;\n html?: string;\n};\n\nexport const evaluateA11y = async (page: any, ...args: string[]) => {\n const disabledIDsForComponents = [\n 'document-title',\n 'html-has-lang',\n 'landmark-one-main',\n 'page-has-heading-one',\n 'region',\n ];\n const detailLevel = args.includes('verbose') ? 'verbose' : 'default';\n const testType = args.includes('webpage') ? 'webpage' : 'component';\n // until we want to test actual web pages, we omit specific rules for component testing\n const rules = testType === 'webpage' ? [] : disabledIDsForComponents;\n\n try {\n const analysisResults = await new AxePuppeteer(page).disableRules(rules).analyze();\n const violations = analysisResults.violations;\n const responseObj = {};\n\n if (violations.length) {\n switch (detailLevel) {\n case 'verbose':\n return violations;\n\n default:\n violations.forEach(violation => {\n const violationInfo: ViolationsObject = {};\n violationInfo.help = violation.help;\n violationInfo.helpUrl = violation.helpUrl;\n\n const rulesInfo = {};\n const rulesViolated = violation.nodes[0].any;\n if (rulesViolated.length) {\n rulesViolated.forEach(rule => {\n rulesInfo[rule.id] = rule.message;\n });\n\n violationInfo.rulesViolated = rulesInfo;\n }\n const summary = violation.nodes[0].failureSummary;\n const html = violation.nodes[0].html;\n violationInfo.failureSummary = summary;\n violationInfo.html = html;\n\n responseObj[violation.id] = violationInfo;\n });\n\n return responseObj;\n }\n } else return false;\n } catch (error) {\n console.error(`There was an error with AxePuppeteer analysis. ERROR: ${error}`);\n }\n};\n\n/**\n * This function mocks the fetch API to return a resolved promise with the given icon markup.\n * You can optionally provide a <symbol> element, but it is not required.\n *\n * This is meant to be used to prevent errors on Unit/Spec tests with <q2-icon> because we are unable to provide a valid\n * URL for the fetch call in that context.\n *\n * @note This function should be called before the component is rendered.\n * @note Be sure to call `jest.restoreAllMocks()` after the test to restore the original fetch function.\n */\nexport const mockIconFetch = (iconMarkup?: string) => {\n const spy = jest.spyOn(global, 'fetch');\n const mockResponse = new Response(`<svg>${iconMarkup}</svg>`, {\n status: 200,\n statusText: 'OK',\n headers: new Headers(),\n });\n spy.mockResolvedValue(mockResponse);\n return spy;\n};\n"]}
@@ -1,5 +1,13 @@
1
1
  import { h } from "@stencil/core";
2
- import DOMPurify from "dompurify";
2
+ export const debounce = (fn, delay = 300) => {
3
+ let timeout;
4
+ return function (...args) {
5
+ clearTimeout(timeout);
6
+ timeout = setTimeout(() => {
7
+ fn(...args);
8
+ }, delay);
9
+ };
10
+ };
3
11
  export function isMobile() {
4
12
  return /Android|webOS|iPhone|iPad|iPod|BlackBerry|Mobile|IEMobile|Windows Phone|Opera Mini/i.test(navigator.userAgent);
5
13
  }
@@ -70,14 +78,6 @@ export function isVisible(element) {
70
78
  export function waitForNextPaint() {
71
79
  return new Promise(resolve => nextPaint(resolve));
72
80
  }
73
- export function sanitizeHTMLString(htmlString) {
74
- return DOMPurify(window).sanitize(htmlString, {
75
- FORBID_TAGS: ['style'],
76
- CUSTOM_ELEMENT_HANDLING: {
77
- tagNameCheck: /^q2-/,
78
- },
79
- });
80
- }
81
81
  export function capitalize(value) {
82
82
  return `${value.charAt(0).toUpperCase()}${value.slice(1)}`;
83
83
  }
@@ -97,7 +97,7 @@ export function loc(key, subs) {
97
97
  }
98
98
  return (_c = (_b = window === null || window === void 0 ? void 0 : window.TectonElements) === null || _b === void 0 ? void 0 : _b.loc(key, subs)) !== null && _c !== void 0 ? _c : key;
99
99
  }
100
- export function labelDOM(target) {
100
+ export function renderLabel(target) {
101
101
  const { label, hideLabel, optional, readonly } = target;
102
102
  const labelClasses = ['input-label'];
103
103
  let helpText = '';
@@ -181,7 +181,7 @@ export function handleDeprecationWarning(target, deprecatedItemName, deprecatedI
181
181
  }
182
182
  }
183
183
  }
184
- export function messagesDOM(target) {
184
+ export function renderMessages(target) {
185
185
  const type = target.hasError ? 'danger' : 'info';
186
186
  return (h("div", { class: "messages-container" }, h("q2-message", { appearance: "minimal", description: true, type: type, "test-id": "message" }, h("ul", { id: target.inputDescribedBy }, target.messages.map(message => (h("li", { "test-id": "messageListItem" }, loc(message))))))));
187
187
  }