q2-tecton-elements 1.50.1 → 1.51.1

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 +79 -7
  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 +207 -7
  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 +297 -135
  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 +84 -7
  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 +79 -7
  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-1305f7ca.entry.js +2 -0
  425. package/dist/q2-tecton-elements/p-1305f7ca.entry.js.map +1 -0
  426. package/dist/q2-tecton-elements/p-15ac45d6.js +2 -0
  427. package/dist/q2-tecton-elements/p-15ac45d6.js.map +1 -0
  428. package/dist/q2-tecton-elements/{p-ce4e6b41.entry.js → p-16910682.entry.js} +2 -2
  429. package/dist/q2-tecton-elements/p-16910682.entry.js.map +1 -0
  430. package/dist/q2-tecton-elements/p-188eb162.entry.js +3 -0
  431. package/dist/q2-tecton-elements/p-188eb162.entry.js.map +1 -0
  432. package/dist/q2-tecton-elements/{p-58cafc0d.entry.js → p-1c760a89.entry.js} +2 -2
  433. package/dist/q2-tecton-elements/{p-074ae80c.entry.js → p-1c88d057.entry.js} +2 -2
  434. package/dist/q2-tecton-elements/{p-3b0d3cd4.entry.js → p-20a3d6ed.entry.js} +2 -2
  435. package/dist/q2-tecton-elements/p-20a3d6ed.entry.js.map +1 -0
  436. package/dist/q2-tecton-elements/{p-77a0cc0c.entry.js → p-2733583e.entry.js} +2 -2
  437. package/dist/q2-tecton-elements/{p-4116579f.entry.js → p-3e428290.entry.js} +2 -2
  438. package/dist/q2-tecton-elements/p-3e428290.entry.js.map +1 -0
  439. package/dist/q2-tecton-elements/{p-072c5877.entry.js → p-4774e5b3.entry.js} +2 -2
  440. package/dist/q2-tecton-elements/{p-77272c4c.entry.js → p-490ef8e5.entry.js} +2 -2
  441. package/dist/q2-tecton-elements/{p-0a1dff75.entry.js → p-4e10550d.entry.js} +2 -2
  442. package/dist/q2-tecton-elements/p-4e10550d.entry.js.map +1 -0
  443. package/dist/q2-tecton-elements/{p-2ca6d44f.entry.js → p-50f7328f.entry.js} +2 -2
  444. package/dist/q2-tecton-elements/p-5637c486.entry.js +2 -0
  445. package/dist/q2-tecton-elements/p-5637c486.entry.js.map +1 -0
  446. package/dist/q2-tecton-elements/p-56df21b0.entry.js +2 -0
  447. package/dist/q2-tecton-elements/p-56df21b0.entry.js.map +1 -0
  448. package/dist/q2-tecton-elements/{p-34856c71.entry.js → p-5a834214.entry.js} +2 -2
  449. package/dist/q2-tecton-elements/{p-34856c71.entry.js.map → p-5a834214.entry.js.map} +1 -1
  450. package/dist/q2-tecton-elements/p-5f99a4a8.entry.js +2 -0
  451. package/dist/q2-tecton-elements/p-5f99a4a8.entry.js.map +1 -0
  452. package/dist/q2-tecton-elements/p-72d948b4.entry.js +2 -0
  453. package/dist/q2-tecton-elements/p-72d948b4.entry.js.map +1 -0
  454. package/dist/q2-tecton-elements/{p-3c7be0bb.entry.js → p-7903cd15.entry.js} +2 -2
  455. package/dist/q2-tecton-elements/p-7903cd15.entry.js.map +1 -0
  456. package/dist/q2-tecton-elements/{p-d2e1631a.entry.js → p-7906f49e.entry.js} +2 -2
  457. package/dist/q2-tecton-elements/{p-d2e1631a.entry.js.map → p-7906f49e.entry.js.map} +1 -1
  458. package/dist/q2-tecton-elements/{p-2fcaf2d6.entry.js → p-7aef0c08.entry.js} +2 -2
  459. package/dist/q2-tecton-elements/{p-8a4b106d.entry.js → p-7c9a0122.entry.js} +2 -2
  460. package/dist/q2-tecton-elements/p-7c9f8b62.entry.js +2 -0
  461. package/dist/q2-tecton-elements/p-7c9f8b62.entry.js.map +1 -0
  462. package/dist/q2-tecton-elements/{p-cf32b5db.entry.js → p-81fbe718.entry.js} +2 -2
  463. package/dist/q2-tecton-elements/p-81fbe718.entry.js.map +1 -0
  464. package/dist/q2-tecton-elements/{p-6237c775.entry.js → p-896c7008.entry.js} +2 -2
  465. package/dist/q2-tecton-elements/{p-395904b4.entry.js → p-8d07cf91.entry.js} +2 -2
  466. package/dist/q2-tecton-elements/{p-fffb54e9.entry.js → p-8d2b02e1.entry.js} +2 -2
  467. package/dist/q2-tecton-elements/{p-6e6d9793.entry.js → p-95a7c042.entry.js} +2 -2
  468. package/dist/q2-tecton-elements/{p-45407ecc.entry.js → p-96b1406c.entry.js} +2 -2
  469. package/dist/q2-tecton-elements/{p-cb3f48de.entry.js → p-a47597dd.entry.js} +2 -2
  470. package/dist/q2-tecton-elements/p-a47597dd.entry.js.map +1 -0
  471. package/dist/q2-tecton-elements/p-a5d0e252.entry.js +2 -0
  472. package/dist/q2-tecton-elements/p-a5d0e252.entry.js.map +1 -0
  473. package/dist/q2-tecton-elements/{p-2c26295e.entry.js → p-ac6aa392.entry.js} +2 -2
  474. package/dist/q2-tecton-elements/{p-376a0589.entry.js → p-ad057d10.entry.js} +2 -2
  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 +41 -2
  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 +396 -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
@@ -0,0 +1,166 @@
1
+ import { h } from "@stencil/core";
2
+ export class Q2ResizeObserver {
3
+ constructor() {
4
+ this.observedElements = [];
5
+ // #endregion
6
+ // #region Local Methods
7
+ this.handleSlotChange = () => {
8
+ if (this.disabled)
9
+ return;
10
+ this.startObserver();
11
+ };
12
+ this.disabled = undefined;
13
+ }
14
+ // #endregion
15
+ // #region Component Lifecycle Events
16
+ disconnectedCallback() {
17
+ this.stopObserver();
18
+ this.resizeObserver = null;
19
+ }
20
+ componentDidLoad() {
21
+ if ('ResizeObserver' in window) {
22
+ this.resizeObserver = new ResizeObserver(resizeEntries => {
23
+ this.tctResize.emit({ entries: resizeEntries });
24
+ this.currentResizeObserverEntries = resizeEntries;
25
+ });
26
+ }
27
+ else {
28
+ console.warn('ResizeObserver is not defined.');
29
+ }
30
+ if (!this.disabled) {
31
+ this.startObserver();
32
+ }
33
+ }
34
+ // #endregion
35
+ // #region Public Methods API
36
+ /**
37
+ * Returns the latest entries reported by the component.
38
+ */
39
+ async getCurrentResizeEntries() {
40
+ return this.currentResizeObserverEntries || [];
41
+ }
42
+ // #endregion
43
+ // #region Watchers
44
+ disabledUpdated(newVal) {
45
+ if (newVal) {
46
+ this.stopObserver();
47
+ }
48
+ else {
49
+ this.startObserver();
50
+ }
51
+ }
52
+ startObserver() {
53
+ var _a, _b, _c;
54
+ const slot = this.hostElement.shadowRoot.querySelector('slot');
55
+ if (slot === null)
56
+ return;
57
+ const elements = (_b = (_a = slot.assignedElements) === null || _a === void 0 ? void 0 : _a.call(slot, { flatten: true })) !== null && _b !== void 0 ? _b : [];
58
+ // Unwatch previous elements
59
+ (_c = this.observedElements) === null || _c === void 0 ? void 0 : _c.forEach(el => this.resizeObserver.unobserve(el));
60
+ this.observedElements = [];
61
+ // Watch new elements
62
+ elements.forEach(el => {
63
+ var _a;
64
+ (_a = this.resizeObserver) === null || _a === void 0 ? void 0 : _a.observe(el);
65
+ this.observedElements.push(el);
66
+ });
67
+ }
68
+ stopObserver() {
69
+ var _a;
70
+ (_a = this.resizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
71
+ }
72
+ // #endregion
73
+ // #region Render Methods
74
+ render() {
75
+ return h("slot", { key: 'e704a2aa1c38da509b0e366e03cd33397ffdbf5d', onSlotchange: this.handleSlotChange });
76
+ }
77
+ static get is() { return "q2-resize-observer"; }
78
+ static get encapsulation() { return "shadow"; }
79
+ static get originalStyleUrls() {
80
+ return {
81
+ "$": ["q2-resize-observer.scss"]
82
+ };
83
+ }
84
+ static get styleUrls() {
85
+ return {
86
+ "$": ["q2-resize-observer.css"]
87
+ };
88
+ }
89
+ static get properties() {
90
+ return {
91
+ "disabled": {
92
+ "type": "boolean",
93
+ "mutable": false,
94
+ "complexType": {
95
+ "original": "boolean",
96
+ "resolved": "boolean",
97
+ "references": {}
98
+ },
99
+ "required": false,
100
+ "optional": false,
101
+ "docs": {
102
+ "tags": [],
103
+ "text": "Determines wheter or not events will be emitted from the component."
104
+ },
105
+ "attribute": "disabled",
106
+ "reflect": true
107
+ }
108
+ };
109
+ }
110
+ static get events() {
111
+ return [{
112
+ "method": "tctResize",
113
+ "name": "tctResize",
114
+ "bubbles": true,
115
+ "cancelable": true,
116
+ "composed": true,
117
+ "docs": {
118
+ "tags": [],
119
+ "text": "Emitted when any of the observed elements are resized."
120
+ },
121
+ "complexType": {
122
+ "original": "{ entries: ResizeObserverEntry[] }",
123
+ "resolved": "{ entries: ResizeObserverEntry[]; }",
124
+ "references": {
125
+ "ResizeObserverEntry": {
126
+ "location": "global",
127
+ "id": "global::ResizeObserverEntry"
128
+ }
129
+ }
130
+ }
131
+ }];
132
+ }
133
+ static get methods() {
134
+ return {
135
+ "getCurrentResizeEntries": {
136
+ "complexType": {
137
+ "signature": "() => Promise<ResizeObserverEntry[]>",
138
+ "parameters": [],
139
+ "references": {
140
+ "Promise": {
141
+ "location": "global",
142
+ "id": "global::Promise"
143
+ },
144
+ "ResizeObserverEntry": {
145
+ "location": "global",
146
+ "id": "global::ResizeObserverEntry"
147
+ }
148
+ },
149
+ "return": "Promise<ResizeObserverEntry[]>"
150
+ },
151
+ "docs": {
152
+ "text": "Returns the latest entries reported by the component.",
153
+ "tags": []
154
+ }
155
+ }
156
+ };
157
+ }
158
+ static get elementRef() { return "hostElement"; }
159
+ static get watchers() {
160
+ return [{
161
+ "propName": "disabled",
162
+ "methodName": "disabledUpdated"
163
+ }];
164
+ }
165
+ }
166
+ //# sourceMappingURL=q2-resize-observer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"q2-resize-observer.js","sourceRoot":"","sources":["../../../src/components/q2-resize-observer/q2-resize-observer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAsB,OAAO,EAAgB,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAOpH,MAAM,OAAO,gBAAgB;;QAIzB,qBAAgB,GAAkB,EAAE,CAAC;QAyErC,aAAa;QACb,wBAAwB;QAExB,qBAAgB,GAAG,GAAG,EAAE;YACpB,IAAI,IAAI,CAAC,QAAQ;gBAAE,OAAO;YAC1B,IAAI,CAAC,aAAa,EAAE,CAAC;QACzB,CAAC,CAAC;;;IApDF,aAAa;IACb,qCAAqC;IAErC,oBAAoB;QAChB,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;IAC/B,CAAC;IAED,gBAAgB;QACZ,IAAI,gBAAgB,IAAI,MAAM,EAAE,CAAC;YAC7B,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,aAAa,CAAC,EAAE;gBACrD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;gBAChD,IAAI,CAAC,4BAA4B,GAAG,aAAa,CAAC;YACtD,CAAC,CAAC,CAAC;QACP,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjB,IAAI,CAAC,aAAa,EAAE,CAAC;QACzB,CAAC;IACL,CAAC;IAED,aAAa;IACb,6BAA6B;IAE7B;;OAEG;IAEH,KAAK,CAAC,uBAAuB;QACzB,OAAO,IAAI,CAAC,4BAA4B,IAAI,EAAE,CAAC;IACnD,CAAC;IAED,aAAa;IACb,mBAAmB;IAGnB,eAAe,CAAC,MAAe;QAC3B,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,CAAC,YAAY,EAAE,CAAC;QACxB,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,aAAa,EAAE,CAAC;QACzB,CAAC;IACL,CAAC;IAUD,aAAa;;QACT,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,UAAW,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAChE,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO;QAE1B,MAAM,QAAQ,GAAG,MAAC,MAAA,IAAI,CAAC,gBAAgB,qDAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAmB,mCAAI,EAAE,CAAC;QAErF,4BAA4B;QAC5B,MAAA,IAAI,CAAC,gBAAgB,0CAAE,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;QACxE,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;QAE3B,qBAAqB;QACrB,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;;YAClB,MAAA,IAAI,CAAC,cAAc,0CAAE,OAAO,CAAC,EAAE,CAAC,CAAC;YACjC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;IACP,CAAC;IAED,YAAY;;QACR,MAAA,IAAI,CAAC,cAAc,0CAAE,UAAU,EAAE,CAAC;IACtC,CAAC;IAED,aAAa;IACb,yBAAyB;IAEzB,MAAM;QACF,OAAO,6DAAM,YAAY,EAAE,IAAI,CAAC,gBAAgB,GAAI,CAAC;IACzD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGJ","sourcesContent":["import { Component, ComponentInterface, Element, EventEmitter, h, Prop, Event, Method, Watch } from '@stencil/core';\n\n@Component({\n tag: 'q2-resize-observer',\n styleUrl: 'q2-resize-observer.scss',\n shadow: true,\n})\nexport class Q2ResizeObserver implements ComponentInterface {\n // #region Own Properties\n\n currentResizeObserverEntries: ResizeObserverEntry[];\n observedElements: HTMLElement[] = [];\n resizeObserver?: ResizeObserver;\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region Public Property API\n\n /**\n * Determines wheter or not events will be emitted from the component.\n */\n @Prop({ reflect: true })\n disabled: boolean;\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when any of the observed elements are resized.\n */\n @Event()\n tctResize: EventEmitter<{ entries: ResizeObserverEntry[] }>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback() {\n this.stopObserver();\n this.resizeObserver = null;\n }\n\n componentDidLoad() {\n if ('ResizeObserver' in window) {\n this.resizeObserver = new ResizeObserver(resizeEntries => {\n this.tctResize.emit({ entries: resizeEntries });\n this.currentResizeObserverEntries = resizeEntries;\n });\n } else {\n console.warn('ResizeObserver is not defined.');\n }\n\n if (!this.disabled) {\n this.startObserver();\n }\n }\n\n // #endregion\n // #region Public Methods API\n\n /**\n * Returns the latest entries reported by the component.\n */\n @Method()\n async getCurrentResizeEntries(): Promise<ResizeObserverEntry[]> {\n return this.currentResizeObserverEntries || [];\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('disabled')\n disabledUpdated(newVal: boolean) {\n if (newVal) {\n this.stopObserver();\n } else {\n this.startObserver();\n }\n }\n\n // #endregion\n // #region Local Methods\n\n handleSlotChange = () => {\n if (this.disabled) return;\n this.startObserver();\n };\n\n startObserver() {\n const slot = this.hostElement.shadowRoot!.querySelector('slot');\n if (slot === null) return;\n\n const elements = (slot.assignedElements?.({ flatten: true }) as HTMLElement[]) ?? [];\n\n // Unwatch previous elements\n this.observedElements?.forEach(el => this.resizeObserver.unobserve(el));\n this.observedElements = [];\n\n // Watch new elements\n elements.forEach(el => {\n this.resizeObserver?.observe(el);\n this.observedElements.push(el);\n });\n }\n\n stopObserver() {\n this.resizeObserver?.disconnect();\n }\n\n // #endregion\n // #region Render Methods\n\n render() {\n return <slot onSlotchange={this.handleSlotChange} />;\n }\n\n // #endregion\n}\n"]}
@@ -0,0 +1,83 @@
1
+ import { setup } from "../../../utils/helpers";
2
+ describe('q2-resize-observer', () => {
3
+ let page;
4
+ let resizeEventSpy;
5
+ describe('Events', () => {
6
+ describe('tctResize', () => {
7
+ it('emits a resize event when the window is resized', async () => {
8
+ page = await setup({
9
+ html: `
10
+ <q2-resize-observer>
11
+ <button style="width: 100%; display: block;">Sample</button>
12
+ </q2-resize-observer>
13
+ `,
14
+ });
15
+ resizeEventSpy = await page.spyOnEvent('tctResize');
16
+ await page.setViewport({ width: 400, height: 800 });
17
+ await page.waitForChanges();
18
+ expect(resizeEventSpy).toHaveReceivedEventTimes(1);
19
+ });
20
+ it('emits a resize event when the observed element has the display property updated', async () => {
21
+ page = await setup({
22
+ html: `
23
+ <q2-resize-observer>
24
+ <button style="display: none;">Sample</button>
25
+ </q2-resize-observer>
26
+ `,
27
+ });
28
+ resizeEventSpy = await page.spyOnEvent('tctResize');
29
+ await page.$eval('button', (el) => {
30
+ el.style.display = 'block';
31
+ });
32
+ await page.waitForChanges();
33
+ expect(resizeEventSpy).toHaveReceivedEventTimes(1);
34
+ });
35
+ it('emits a resize event when the observed element is resized', async () => {
36
+ page = await setup({
37
+ html: `
38
+ <q2-resize-observer>
39
+ <button style="width: 100%; display: block;">Sample</button>
40
+ </q2-resize-observer>
41
+ `,
42
+ });
43
+ resizeEventSpy = await page.spyOnEvent('tctResize');
44
+ await page.$eval('button', (el) => {
45
+ el.style.width = '200px';
46
+ });
47
+ await page.waitForChanges();
48
+ expect(resizeEventSpy).toHaveReceivedEventTimes(1);
49
+ });
50
+ it('emits a resize event when the content of the observed element is changed', async () => {
51
+ page = await setup({
52
+ html: `
53
+ <q2-resize-observer>
54
+ <button>Sample</button>
55
+ </q2-resize-observer>
56
+ `,
57
+ });
58
+ resizeEventSpy = await page.spyOnEvent('tctResize');
59
+ await page.$eval('button', (el) => {
60
+ el.textContent = 'Sample Content';
61
+ });
62
+ await page.waitForChanges();
63
+ expect(resizeEventSpy).toHaveReceivedEventTimes(1);
64
+ });
65
+ describe('when the component is disabled', () => {
66
+ it('does not emit a resize event when the window is resized', async () => {
67
+ page = await setup({
68
+ html: `
69
+ <q2-resize-observer disabled>
70
+ <button style="width: 100%; display: block;">Sample</button>
71
+ </q2-resize-observer>
72
+ `,
73
+ });
74
+ resizeEventSpy = await page.spyOnEvent('tctResize');
75
+ await page.setViewport({ width: 400, height: 800 });
76
+ await page.waitForChanges();
77
+ expect(resizeEventSpy).toHaveReceivedEventTimes(0);
78
+ });
79
+ });
80
+ });
81
+ });
82
+ });
83
+ //# sourceMappingURL=q2-resize-observer.e2e.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"q2-resize-observer.e2e.js","sourceRoot":"","sources":["../../../../src/components/q2-resize-observer/test/q2-resize-observer.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { setup } from '@/utils/helpers';\nimport { E2EPage, EventSpy } from '@stencil/core/testing';\n\ndescribe('q2-resize-observer', () => {\n let page: E2EPage;\n let resizeEventSpy: EventSpy;\n\n describe('Events', () => {\n describe('tctResize', () => {\n it('emits a resize event when the window is resized', async () => {\n page = await setup({\n html: `\n <q2-resize-observer>\n <button style=\"width: 100%; display: block;\">Sample</button>\n </q2-resize-observer>\n `,\n });\n resizeEventSpy = await page.spyOnEvent('tctResize');\n\n await page.setViewport({ width: 400, height: 800 });\n await page.waitForChanges();\n expect(resizeEventSpy).toHaveReceivedEventTimes(1);\n });\n\n it('emits a resize event when the observed element has the display property updated', async () => {\n page = await setup({\n html: `\n <q2-resize-observer>\n <button style=\"display: none;\">Sample</button>\n </q2-resize-observer>\n `,\n });\n resizeEventSpy = await page.spyOnEvent('tctResize');\n\n await page.$eval('button', (el: HTMLElement) => {\n el.style.display = 'block';\n });\n await page.waitForChanges();\n expect(resizeEventSpy).toHaveReceivedEventTimes(1);\n });\n\n it('emits a resize event when the observed element is resized', async () => {\n page = await setup({\n html: `\n <q2-resize-observer>\n <button style=\"width: 100%; display: block;\">Sample</button>\n </q2-resize-observer>\n `,\n });\n resizeEventSpy = await page.spyOnEvent('tctResize');\n\n await page.$eval('button', (el: HTMLElement) => {\n el.style.width = '200px';\n });\n await page.waitForChanges();\n expect(resizeEventSpy).toHaveReceivedEventTimes(1);\n });\n\n it('emits a resize event when the content of the observed element is changed', async () => {\n page = await setup({\n html: `\n <q2-resize-observer>\n <button>Sample</button>\n </q2-resize-observer>\n `,\n });\n resizeEventSpy = await page.spyOnEvent('tctResize');\n\n await page.$eval('button', (el: HTMLElement) => {\n el.textContent = 'Sample Content';\n });\n await page.waitForChanges();\n expect(resizeEventSpy).toHaveReceivedEventTimes(1);\n });\n\n describe('when the component is disabled', () => {\n it('does not emit a resize event when the window is resized', async () => {\n page = await setup({\n html: `\n <q2-resize-observer disabled>\n <button style=\"width: 100%; display: block;\">Sample</button>\n </q2-resize-observer>\n `,\n });\n resizeEventSpy = await page.spyOnEvent('tctResize');\n\n await page.setViewport({ width: 400, height: 800 });\n await page.waitForChanges();\n expect(resizeEventSpy).toHaveReceivedEventTimes(0);\n });\n });\n });\n });\n});\n"]}
@@ -0,0 +1,66 @@
1
+ import { newSpecPage } from "@stencil/core/testing";
2
+ import { Q2ResizeObserver } from "../q2-resize-observer";
3
+ describe('q2-resize-observer', () => {
4
+ let specPage;
5
+ let specResizeObserver;
6
+ describe('Props', () => {
7
+ describe('disabled', () => {
8
+ it('calls stopObserver when disabled is set', async () => {
9
+ specPage = await newSpecPage({
10
+ components: [Q2ResizeObserver],
11
+ html: `<q2-resize-observer>Test</q2-resize-observer>`,
12
+ });
13
+ specResizeObserver = specPage.rootInstance;
14
+ const stopObserverSpy = jest.spyOn(specResizeObserver, 'stopObserver');
15
+ const startObserverSpy = jest.spyOn(specResizeObserver, 'startObserver');
16
+ specResizeObserver.disabled = true;
17
+ await specPage.waitForChanges();
18
+ expect(stopObserverSpy).toHaveBeenCalled();
19
+ expect(startObserverSpy).not.toHaveBeenCalled();
20
+ });
21
+ it('calls startObserver when disabled is removed', async () => {
22
+ specPage = await newSpecPage({
23
+ components: [Q2ResizeObserver],
24
+ html: `<q2-resize-observer disabled>Test</q2-resize-observer>`,
25
+ });
26
+ specResizeObserver = specPage.rootInstance;
27
+ const stopObserverSpy = jest.spyOn(specResizeObserver, 'stopObserver');
28
+ const startObserverSpy = jest.spyOn(specResizeObserver, 'startObserver');
29
+ specResizeObserver.disabled = false;
30
+ await specPage.waitForChanges();
31
+ expect(stopObserverSpy).not.toHaveBeenCalled();
32
+ expect(startObserverSpy).toHaveBeenCalled();
33
+ });
34
+ });
35
+ });
36
+ describe('Public Methods', () => {
37
+ describe('getCurrentResizeEntries', () => {
38
+ beforeEach(() => {
39
+ specResizeObserver = new Q2ResizeObserver();
40
+ });
41
+ it('returns an empty array when currentResizeObserverEntries is null', async () => {
42
+ expect(await specResizeObserver.getCurrentResizeEntries()).toEqual([]);
43
+ });
44
+ it('returns currentResizeObserverEntries when it is present', async () => {
45
+ const sampleEntries = [
46
+ {
47
+ target: document.body,
48
+ contentRect: {
49
+ x: 0,
50
+ y: 0,
51
+ width: 100,
52
+ height: 100,
53
+ top: 0,
54
+ right: 100,
55
+ bottom: 100,
56
+ left: 0,
57
+ },
58
+ },
59
+ ];
60
+ specResizeObserver.currentResizeObserverEntries = sampleEntries;
61
+ expect(await specResizeObserver.getCurrentResizeEntries()).toEqual(sampleEntries);
62
+ });
63
+ });
64
+ });
65
+ });
66
+ //# sourceMappingURL=q2-resize-observer.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"q2-resize-observer.spec.js","sourceRoot":"","sources":["../../../../src/components/q2-resize-observer/test/q2-resize-observer.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { SpecPage, newSpecPage } from '@stencil/core/testing';\nimport { Q2ResizeObserver } from '../q2-resize-observer';\n\ndescribe('q2-resize-observer', () => {\n let specPage: SpecPage;\n let specResizeObserver: Q2ResizeObserver;\n\n describe('Props', () => {\n describe('disabled', () => {\n it('calls stopObserver when disabled is set', async () => {\n specPage = await newSpecPage({\n components: [Q2ResizeObserver],\n html: `<q2-resize-observer>Test</q2-resize-observer>`,\n });\n\n specResizeObserver = specPage.rootInstance;\n const stopObserverSpy = jest.spyOn(specResizeObserver, 'stopObserver');\n const startObserverSpy = jest.spyOn(specResizeObserver, 'startObserver');\n\n specResizeObserver.disabled = true;\n await specPage.waitForChanges();\n\n expect(stopObserverSpy).toHaveBeenCalled();\n expect(startObserverSpy).not.toHaveBeenCalled();\n });\n\n it('calls startObserver when disabled is removed', async () => {\n specPage = await newSpecPage({\n components: [Q2ResizeObserver],\n html: `<q2-resize-observer disabled>Test</q2-resize-observer>`,\n });\n\n specResizeObserver = specPage.rootInstance;\n const stopObserverSpy = jest.spyOn(specResizeObserver, 'stopObserver');\n const startObserverSpy = jest.spyOn(specResizeObserver, 'startObserver');\n\n specResizeObserver.disabled = false;\n await specPage.waitForChanges();\n\n expect(stopObserverSpy).not.toHaveBeenCalled();\n expect(startObserverSpy).toHaveBeenCalled();\n });\n });\n });\n\n describe('Public Methods', () => {\n describe('getCurrentResizeEntries', () => {\n beforeEach(() => {\n specResizeObserver = new Q2ResizeObserver();\n });\n\n it('returns an empty array when currentResizeObserverEntries is null', async () => {\n expect(await specResizeObserver.getCurrentResizeEntries()).toEqual([]);\n });\n\n it('returns currentResizeObserverEntries when it is present', async () => {\n const sampleEntries = [\n {\n target: document.body,\n contentRect: {\n x: 0,\n y: 0,\n width: 100,\n height: 100,\n top: 0,\n right: 100,\n bottom: 100,\n left: 0,\n },\n },\n ];\n specResizeObserver.currentResizeObserverEntries = sampleEntries as unknown as ResizeObserverEntry[];\n expect(await specResizeObserver.getCurrentResizeEntries()).toEqual(sampleEntries);\n });\n });\n });\n});\n"]}
@@ -117,6 +117,30 @@ export class Q2Section {
117
117
  }
118
118
  }
119
119
  // #endregion
120
+ // #region Test Methods API
121
+ /**
122
+ * A test method to collapse section.
123
+ *
124
+ * @testOnly
125
+ */
126
+ async collapse() {
127
+ if (!this.collapsible || !this.expanded)
128
+ return;
129
+ const btn = this.hostElement.shadowRoot.querySelector('[test-id="toggleButton"]');
130
+ btn === null || btn === void 0 ? void 0 : btn.click();
131
+ }
132
+ /**
133
+ * A test method to expand section.
134
+ *
135
+ * @testOnly
136
+ */
137
+ async expand() {
138
+ if (!this.collapsible || this.expanded)
139
+ return;
140
+ const btn = this.hostElement.shadowRoot.querySelector('[test-id="toggleButton"]');
141
+ btn === null || btn === void 0 ? void 0 : btn.click();
142
+ }
143
+ // #endregion
120
144
  // #region Local Methods
121
145
  get contentContainerHeight() {
122
146
  return `${this.contentContainer.offsetHeight || 0}px`;
@@ -158,9 +182,9 @@ export class Q2Section {
158
182
  wrapperClasses.push('is-transitioning');
159
183
  }
160
184
  const showDefaultHeader = !this.hasYieldedHeader && !!this.label;
161
- return (h("section", { key: 'f7969997a0aaea2c5f883156428626bde982d6f2', class: "wrapper" }, h("header", { key: '1dca67129a19b4ab1f13e96ad4069f51e66aa744', class: hasHeader ? 'has-header' : '' }, h("div", { key: 'ed9c5f0a351cfe2afe39b26de41816ad7842a5c0', class: "header-content", id: this.titleId, onClick: this.collapsible && this.onHeaderClick }, showDefaultHeader && h("h2", { key: '2d3081f31e0cbe7255c9eab2ca03fc0de8aecb9f', class: "title" }, loc(this.label)), h("div", { key: '4bda5e123c97f10bee569b96ead7585ce4910c0e', ref: el => (this.headerSlotWrapper = el), class: "header-slot-wrapper" }, h("slot", { key: 'fa1cf27e2c5a6d05f47887a3b40adf8d1f6b6fbd', ref: (el) => (this.headerSlot = el), name: "q2-section-header" }))), this.collapsible && !this.noCollapseIcon && (h("q2-btn", { key: 'dc9ce02e335aed9c06cb4eac6a2d4e15212bc95e', label: loc(this.label || 'tecton.element.section.defaultToggleLabel'), ariaExpanded: `${!!this.expanded}`, ariaControls: this.contentId, "test-id": "toggleButton", "hide-label": true, onClick: this.onHeaderClick }, h("q2-icon", { key: '377521b837fce45914a003d768862871dfb89bdb', type: "chevron-up" })))), h("div", { key: 'cae742942789c59d37466d3767b4ec4b3da2c138', class: wrapperClasses.join(' '), id: this.contentId, "aria-labelledby": this.titleId, role: "region", onTransitionEnd: this.onTransitionEnd, style: this.collapsible && {
185
+ return (h("section", { key: '994cfe09abd1a9d8220ca4017cb4003ae1e2cf39', class: "wrapper" }, h("header", { key: '56a44ef98988748508c673bd3725887a1743a99b', class: hasHeader ? 'has-header' : '' }, h("div", { key: '03cc85008637fe3de375d223de79ac59c6b6ba64', class: "header-content", id: this.titleId, onClick: this.collapsible && this.onHeaderClick }, showDefaultHeader && h("h2", { key: '69c2119b393e0b3f02392686ec49835273a9ebcb', class: "title" }, loc(this.label)), h("div", { key: '62a92b25033d9c9709a680b05becc2a48779197c', ref: el => (this.headerSlotWrapper = el), class: "header-slot-wrapper" }, h("slot", { key: 'f5b2dbc68e33d01f31845bdbfb429e0a18a5e174', ref: (el) => (this.headerSlot = el), name: "q2-section-header" }))), this.collapsible && !this.noCollapseIcon && (h("q2-btn", { key: '1983d339de073ca38b6879fca9d96fbe4648e533', label: loc(this.label || 'tecton.element.section.defaultToggleLabel'), ariaExpanded: `${!!this.expanded}`, ariaControls: this.contentId, "test-id": "toggleButton", "hide-label": true, onClick: this.onHeaderClick }, h("q2-icon", { key: 'de36065a7fdeb1c381184304e4ed679f27d4f771', type: "chevron-up" })))), h("div", { key: 'e681760db4a6551d03ded78c25ab24257b6eaf0b', class: wrapperClasses.join(' '), id: this.contentId, "aria-labelledby": this.titleId, role: "region", onTransitionEnd: this.onTransitionEnd, style: this.collapsible && {
162
186
  height: this.contentHeight,
163
- } }, h("div", { key: '43f57ee880d454ecfef29f92177946350da7eec4', ref: el => (this.contentContainer = el), class: "content", tabindex: "-1" }, h("slot", { key: 'f13ca46b06dcdb43e1c307add290f7bb16065365', ref: (el) => (this.contentSlot = el) })))));
187
+ } }, h("div", { key: '004500e012e4eb718f7e018c20a0cc3590b9ebce', ref: el => (this.contentContainer = el), class: "content", tabindex: "-1" }, h("slot", { key: 'f83f550c26a3f36d2a72c777a9f904a3774e963f', ref: (el) => (this.contentSlot = el) })))));
164
188
  }
165
189
  static get is() { return "q2-section"; }
166
190
  static get encapsulation() { return "shadow"; }
@@ -277,6 +301,58 @@ export class Q2Section {
277
301
  }
278
302
  }];
279
303
  }
304
+ static get methods() {
305
+ return {
306
+ "collapse": {
307
+ "complexType": {
308
+ "signature": "() => Promise<void>",
309
+ "parameters": [],
310
+ "references": {
311
+ "Promise": {
312
+ "location": "global",
313
+ "id": "global::Promise"
314
+ },
315
+ "HTMLQ2BtnElement": {
316
+ "location": "global",
317
+ "id": "global::HTMLQ2BtnElement"
318
+ }
319
+ },
320
+ "return": "Promise<void>"
321
+ },
322
+ "docs": {
323
+ "text": "A test method to collapse section.",
324
+ "tags": [{
325
+ "name": "testOnly",
326
+ "text": undefined
327
+ }]
328
+ }
329
+ },
330
+ "expand": {
331
+ "complexType": {
332
+ "signature": "() => Promise<void>",
333
+ "parameters": [],
334
+ "references": {
335
+ "Promise": {
336
+ "location": "global",
337
+ "id": "global::Promise"
338
+ },
339
+ "HTMLQ2BtnElement": {
340
+ "location": "global",
341
+ "id": "global::HTMLQ2BtnElement"
342
+ }
343
+ },
344
+ "return": "Promise<void>"
345
+ },
346
+ "docs": {
347
+ "text": "A test method to expand section.",
348
+ "tags": [{
349
+ "name": "testOnly",
350
+ "text": undefined
351
+ }]
352
+ }
353
+ }
354
+ };
355
+ }
280
356
  static get elementRef() { return "hostElement"; }
281
357
  static get watchers() {
282
358
  return [{
@@ -1 +1 @@
1
- {"version":3,"file":"q2-section.js","sourceRoot":"","sources":["../../../src/components/q2-section/q2-section.tsx"],"names":[],"mappings":"AAAA,OAAO,EACH,SAAS,EAET,IAAI,EACJ,OAAO,EACP,MAAM,EACN,KAAK,EACL,KAAK,EACL,CAAC,EACD,KAAK,GAER,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAG5F,MAAM,OAAO,SAAS;;QAIlB,cAAS,GAAW,SAAS,CAAC;QAO9B,YAAO,GAAW,OAAO,CAAC;QAoI1B,2BAAsB,GAAG,GAAG,EAAE;YAC1B,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnB,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;gBAC9D,OAAO;YACX,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,YAAY,CAAC,CAAC;YACpD,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5E,IAAI,CAAC,2BAA2B,GAAG,QAAQ,CAAC;QAChD,CAAC,CAAC;QAEF,0BAAqB,GAAG,GAAG,EAAE;YACzB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBACxE,OAAO;YACX,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAC/D,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9D,IAAI,CAAC,0BAA0B,GAAG,QAAQ,CAAC;QAC/C,CAAC,CAAC;QAEF,wBAAmB,GAAG,GAAG,EAAE;YACvB,IAAI,CAAC,SAAS,IAAI,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACpD,CAAC,CAAC;QAgBF,kBAAa,GAAG,GAAG,EAAE;YACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gBACb,QAAQ,EAAE,CAAC,IAAI,CAAC,QAAQ;aAC3B,CAAC,CAAC;QACP,CAAC,CAAC;QAEF,uBAAkB,GAAG,GAAG,EAAE;YACtB,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,4BAA4B,CAAC,CAAC;YAEtF,IAAI,IAAI,CAAC,gBAAgB,KAAK,cAAc,EAAE,CAAC;gBAC3C,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,cAAc,CAAC;YAC7C,CAAC;QACL,CAAC,CAAC;QAEF,oBAAe,GAAG,GAAG,EAAE;YACnB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAChB,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;YACnC,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YAC5B,CAAC;YAED,UAAU,CAAC,GAAG,EAAE;gBACZ,2DAA2D;gBAC3D,8FAA8F;gBAC9F,0BAA0B;gBAC1B,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC/B,CAAC,EAAE,IAAI,CAAC,CAAC;QACb,CAAC,CAAC;QAEF,8BAAyB,GAAG,GAAG,EAAE;YAC7B,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnB,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;gBACjE,OAAO;YACX,CAAC;YACD,IAAI,CAAC,2BAA2B,CAAC,UAAU,EAAE,CAAC;QAClD,CAAC,CAAC;QAEF,6BAAwB,GAAG,GAAG,EAAE;YAC5B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBAC3E,OAAO;YACX,CAAC;YAED,IAAI,CAAC,0BAA0B,CAAC,UAAU,EAAE,CAAC;QACjD,CAAC,CAAC;;gCAzM0B,KAAK;2BAGV,KAAK;;;;;;IAuC5B,aAAa;IACb,qCAAqC;IAErC,oBAAoB;QAChB,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,IAAI,CAAC,yBAAyB,EAAE,CAAC;IACrC,CAAC;IAED,iBAAiB;QACb,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QACvC,IAAI,CAAC,aAAa,GAAG,WAAW,IAAI,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;QACjE,IAAI,CAAC,WAAW,GAAG,CAAC,QAAQ,CAAC;IACjC,CAAC;IAED,gBAAgB;QACZ,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACpC,CAAC;IAED,aAAa;IACb,oBAAoB;IAGpB,oBAAoB,CAAC,KAAkB;QACnC,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACpF,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC1C,CAAC;IACL,CAAC;IAGD,aAAa,CAAC,KAAiB;QAC3B,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC;YAAE,OAAO;QACzD,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;IAClC,CAAC;IAED,aAAa;IACb,mBAAmB;IAGnB,mBAAmB;QACf,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;IAC5C,CAAC;IAGD,KAAK,CAAC,gBAAgB,CAAC,QAAiB;QACpC,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;QAE9C,IAAI,QAAQ,EAAE,CAAC;YACX,IAAI,CAAC,aAAa,EAAE,CAAC;QACzB,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,eAAe,EAAE,CAAC;QAC3B,CAAC;IACL,CAAC;IAED,aAAa;IACb,wBAAwB;IAExB,IAAI,sBAAsB;QACtB,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC;IAC1D,CAAC;IAED,IAAI,aAAa;QACb,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QACvC,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QAChB,CAAC;aAAM,IAAI,QAAQ,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC,sBAAsB,CAAC;QACvC,CAAC;aAAM,CAAC;YACJ,OAAO,GAAG,CAAC;QACf,CAAC;IACL,CAAC;IA4BD,KAAK,CAAC,eAAe;QACjB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,sBAAsB,CAAC;QACjD,MAAM,SAAS,CAAC,GAAG,EAAE;YACjB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QAC5C,CAAC,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,aAAa;QACf,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,MAAM,SAAS,CAAC,GAAG,EAAE;YACjB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QAC5C,CAAC,CAAC,CAAC;IACP,CAAC;IAgDD,aAAa;IACb,yBAAyB;IAEzB,MAAM;QACF,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC;QACtD,MAAM,cAAc,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC3C,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;QACzD,IAAI,WAAW,EAAE,CAAC;YACd,IAAI,WAAW;gBAAE,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;iBAC7C,IAAI,aAAa;gBAAE,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,iBAAiB,GAAG,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QAEjE,OAAO,CACH,gEAAS,KAAK,EAAC,SAAS;YACpB,+DAAQ,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;gBACxC,4DACI,KAAK,EAAC,gBAAgB,EACtB,EAAE,EAAE,IAAI,CAAC,OAAO,EAChB,OAAO,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,aAAa;oBAE9C,iBAAiB,IAAI,2DAAI,KAAK,EAAC,OAAO,IAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAM;oBAC9D,4DACI,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC,EACxC,KAAK,EAAC,qBAAqB;wBAE3B,6DACI,GAAG,EAAE,CAAC,EAAmB,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,EACpD,IAAI,EAAC,mBAAmB,GAC1B,CACA,CACJ;gBACL,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CACzC,+DACI,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,2CAA2C,CAAC,EACrE,YAAY,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,EAClC,YAAY,EAAE,IAAI,CAAC,SAAS,aACpB,cAAc,sBAEtB,OAAO,EAAE,IAAI,CAAC,aAAa;oBAE3B,gEAAS,IAAI,EAAC,YAAY,GAAG,CACxB,CACZ,CACI;YACT,4DACI,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAC/B,EAAE,EAAE,IAAI,CAAC,SAAS,qBACD,IAAI,CAAC,OAAO,EAC7B,IAAI,EAAC,QAAQ,EACb,eAAe,EAAE,IAAI,CAAC,eAAe,EACrC,KAAK,EACD,IAAI,CAAC,WAAW,IAAI;oBAChB,MAAM,EAAE,IAAI,CAAC,aAAa;iBAC7B;gBAGL,4DACI,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC,EACvC,KAAK,EAAC,SAAS,EACf,QAAQ,EAAC,IAAI;oBAEb,6DAAM,GAAG,EAAE,CAAC,EAAmB,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,GAAI,CAC7D,CACJ,CACA,CACb,CAAC;IACN,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGJ","sourcesContent":["import {\n Component,\n ComponentInterface,\n Prop,\n Element,\n Listen,\n State,\n Watch,\n h,\n Event,\n EventEmitter,\n} from '@stencil/core';\nimport { isEventFromElement, loc, nextPaint, overrideFocus, resizeIframe } from 'src/utils';\n\n@Component({ tag: 'q2-section', shadow: true, styleUrl: 'q2-section.scss' })\nexport class Q2Section implements ComponentInterface {\n // #region Own Properties\n\n contentContainer: HTMLDivElement;\n contentId: string = 'content';\n contentSlot: HTMLSlotElement;\n contentSlotMutationObserver: MutationObserver;\n headerSlot: HTMLSlotElement;\n headerSlotMutationObserver: MutationObserver;\n headerSlotWrapper: HTMLDivElement;\n resizerFn: NodeJS.Timeout | undefined;\n titleId: string = 'title';\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region State Properties\n\n @State()\n contentHeight: string;\n\n @State()\n hasYieldedHeader: boolean = false;\n\n @State()\n hideContent: boolean = false;\n\n // #endregion\n // #region Public Property API\n\n /** Determines if the section is collapsible. */\n @Prop({ reflect: true })\n collapsible: boolean;\n\n /** Indicates if the `q2-section` is in an expanded state or not. */\n @Prop({ reflect: true, mutable: true })\n expanded: boolean;\n\n /**\n * The text to display above the `q2-section`. Renders as an `<h2>` element.\n *\n * It is also used to provided an `aria-label` for the toggle button when the component is collapsible.\n *\n * @warning\n * If you are providing a custom header, setting this property is still strongly encouraged for the purposes of\n * accessibility.\n */\n @Prop({ reflect: true })\n label: string;\n\n /** Determines if the collapse chevron icon should show in the `q2-section` header. */\n @Prop({ reflect: true })\n noCollapseIcon: boolean;\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when the section is expanded or collapsed.\n * @legacyEvent\n */\n @Event()\n change: EventEmitter<{ expanded: boolean }>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback() {\n this.removeHeaderSlotListener();\n this.removeContentSlotListener();\n }\n\n componentWillLoad() {\n this.onHeaderSlotChange();\n const { collapsible, expanded } = this;\n this.contentHeight = collapsible && expanded ? undefined : '0px';\n this.hideContent = !expanded;\n }\n\n componentDidLoad() {\n this.addHeaderSlotListener();\n this.addContentSlotListener();\n overrideFocus(this.hostElement);\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('change')\n defaultChangeHandler(event: CustomEvent) {\n if (event.target === this.hostElement && !this.hostElement.onchange && !!event.detail) {\n this.expanded = event.detail.expanded;\n }\n }\n\n @Listen('focus')\n delegateFocus(event: FocusEvent) {\n if (!isEventFromElement(event, this.hostElement)) return;\n this.contentContainer.focus();\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('collapsible')\n collapsibleObserver() {\n this.contentHeight = this.currentHeight;\n }\n\n @Watch('expanded')\n async expandedObserver(expanded: boolean) {\n this.clearResizeInterval();\n this.resizerFn = setInterval(resizeIframe, 5);\n\n if (expanded) {\n this.expandSection();\n } else {\n this.collapseSection();\n }\n }\n\n // #endregion\n // #region Local Methods\n\n get contentContainerHeight() {\n return `${this.contentContainer.offsetHeight || 0}px`;\n }\n\n get currentHeight() {\n const { collapsible, expanded } = this;\n if (!collapsible) {\n return null;\n } else if (expanded) {\n return this.contentContainerHeight;\n } else {\n return '0';\n }\n }\n\n addContentSlotListener = () => {\n if (this.contentSlot) {\n this.contentSlot.addEventListener('slotchange', resizeIframe);\n return;\n }\n\n const observer = new MutationObserver(resizeIframe);\n observer.observe(this.contentContainer, { childList: true, subtree: true });\n this.contentSlotMutationObserver = observer;\n };\n\n addHeaderSlotListener = () => {\n if (this.headerSlot) {\n this.headerSlot.addEventListener('slotchange', this.onHeaderSlotChange);\n return;\n }\n\n const observer = new MutationObserver(this.onHeaderSlotChange);\n observer.observe(this.headerSlotWrapper, { childList: true });\n this.headerSlotMutationObserver = observer;\n };\n\n clearResizeInterval = () => {\n this.resizerFn && clearInterval(this.resizerFn);\n };\n\n async collapseSection() {\n this.contentHeight = this.contentContainerHeight;\n await nextPaint(() => {\n this.contentHeight = this.currentHeight;\n });\n }\n\n async expandSection() {\n this.hideContent = false;\n await nextPaint(() => {\n this.contentHeight = this.currentHeight;\n });\n }\n\n onHeaderClick = () => {\n this.change.emit({\n expanded: !this.expanded,\n });\n };\n\n onHeaderSlotChange = () => {\n const hasSlotContent = !!this.hostElement.querySelector('[slot=\"q2-section-header\"]');\n\n if (this.hasYieldedHeader !== hasSlotContent) {\n this.hasYieldedHeader = !!hasSlotContent;\n }\n };\n\n onTransitionEnd = () => {\n if (this.expanded) {\n this.contentHeight = undefined;\n } else {\n this.hideContent = true;\n }\n\n setTimeout(() => {\n // This gives enough time for all values to get passed over\n // Previously, the interval was never cleared and the fn was called indefinitely then filtered\n // Will revisit in TCT-599\n this.clearResizeInterval();\n }, 1000);\n };\n\n removeContentSlotListener = () => {\n if (this.contentSlot) {\n this.contentSlot.removeEventListener('slotchange', resizeIframe);\n return;\n }\n this.contentSlotMutationObserver.disconnect();\n };\n\n removeHeaderSlotListener = () => {\n if (this.headerSlot) {\n this.headerSlot.removeEventListener('slotchange', this.onHeaderSlotChange);\n return;\n }\n\n this.headerSlotMutationObserver.disconnect();\n };\n\n // #endregion\n // #region Render Methods\n\n render() {\n const hasHeader = this.label || this.hasYieldedHeader;\n const wrapperClasses = ['content-wrapper'];\n const { collapsible, hideContent, contentHeight } = this;\n if (collapsible) {\n if (hideContent) wrapperClasses.push('is-closed');\n else if (contentHeight) wrapperClasses.push('is-transitioning');\n }\n\n const showDefaultHeader = !this.hasYieldedHeader && !!this.label;\n\n return (\n <section class=\"wrapper\">\n <header class={hasHeader ? 'has-header' : ''}>\n <div\n class=\"header-content\"\n id={this.titleId}\n onClick={this.collapsible && this.onHeaderClick}\n >\n {showDefaultHeader && <h2 class=\"title\">{loc(this.label)}</h2>}\n <div\n ref={el => (this.headerSlotWrapper = el)}\n class=\"header-slot-wrapper\"\n >\n <slot\n ref={(el: HTMLSlotElement) => (this.headerSlot = el)}\n name=\"q2-section-header\"\n />\n </div>\n </div>\n {this.collapsible && !this.noCollapseIcon && (\n <q2-btn\n label={loc(this.label || 'tecton.element.section.defaultToggleLabel')}\n ariaExpanded={`${!!this.expanded}`}\n ariaControls={this.contentId}\n test-id=\"toggleButton\"\n hide-label\n onClick={this.onHeaderClick}\n >\n <q2-icon type=\"chevron-up\" />\n </q2-btn>\n )}\n </header>\n <div\n class={wrapperClasses.join(' ')}\n id={this.contentId}\n aria-labelledby={this.titleId}\n role=\"region\"\n onTransitionEnd={this.onTransitionEnd}\n style={\n this.collapsible && {\n height: this.contentHeight,\n }\n }\n >\n <div\n ref={el => (this.contentContainer = el)}\n class=\"content\"\n tabindex=\"-1\"\n >\n <slot ref={(el: HTMLSlotElement) => (this.contentSlot = el)} />\n </div>\n </div>\n </section>\n );\n }\n\n // #endregion\n}\n"]}
1
+ {"version":3,"file":"q2-section.js","sourceRoot":"","sources":["../../../src/components/q2-section/q2-section.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n ComponentInterface,\n Prop,\n Element,\n Listen,\n State,\n Watch,\n h,\n Event,\n EventEmitter,\n Method,\n} from '@stencil/core';\nimport { isEventFromElement, loc, nextPaint, overrideFocus, resizeIframe } from 'src/utils';\n\n@Component({ tag: 'q2-section', shadow: true, styleUrl: 'q2-section.scss' })\nexport class Q2Section implements ComponentInterface {\n // #region Own Properties\n\n contentContainer: HTMLDivElement;\n contentId: string = 'content';\n contentSlot: HTMLSlotElement;\n contentSlotMutationObserver: MutationObserver;\n headerSlot: HTMLSlotElement;\n headerSlotMutationObserver: MutationObserver;\n headerSlotWrapper: HTMLDivElement;\n resizerFn: NodeJS.Timeout | undefined;\n titleId: string = 'title';\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region State Properties\n\n @State()\n contentHeight: string;\n\n @State()\n hasYieldedHeader: boolean = false;\n\n @State()\n hideContent: boolean = false;\n\n // #endregion\n // #region Public Property API\n\n /** Determines if the section is collapsible. */\n @Prop({ reflect: true })\n collapsible: boolean;\n\n /** Indicates if the `q2-section` is in an expanded state or not. */\n @Prop({ reflect: true, mutable: true })\n expanded: boolean;\n\n /**\n * The text to display above the `q2-section`. Renders as an `<h2>` element.\n *\n * It is also used to provided an `aria-label` for the toggle button when the component is collapsible.\n *\n * @warning\n * If you are providing a custom header, setting this property is still strongly encouraged for the purposes of\n * accessibility.\n */\n @Prop({ reflect: true })\n label: string;\n\n /** Determines if the collapse chevron icon should show in the `q2-section` header. */\n @Prop({ reflect: true })\n noCollapseIcon: boolean;\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when the section is expanded or collapsed.\n * @legacyEvent\n */\n @Event()\n change: EventEmitter<{ expanded: boolean }>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback() {\n this.removeHeaderSlotListener();\n this.removeContentSlotListener();\n }\n\n componentWillLoad() {\n this.onHeaderSlotChange();\n const { collapsible, expanded } = this;\n this.contentHeight = collapsible && expanded ? undefined : '0px';\n this.hideContent = !expanded;\n }\n\n componentDidLoad() {\n this.addHeaderSlotListener();\n this.addContentSlotListener();\n overrideFocus(this.hostElement);\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('change')\n defaultChangeHandler(event: CustomEvent) {\n if (event.target === this.hostElement && !this.hostElement.onchange && !!event.detail) {\n this.expanded = event.detail.expanded;\n }\n }\n\n @Listen('focus')\n delegateFocus(event: FocusEvent) {\n if (!isEventFromElement(event, this.hostElement)) return;\n this.contentContainer.focus();\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('collapsible')\n collapsibleObserver() {\n this.contentHeight = this.currentHeight;\n }\n\n @Watch('expanded')\n async expandedObserver(expanded: boolean) {\n this.clearResizeInterval();\n this.resizerFn = setInterval(resizeIframe, 5);\n\n if (expanded) {\n this.expandSection();\n } else {\n this.collapseSection();\n }\n }\n\n // #endregion\n // #region Test Methods API\n\n /**\n * A test method to collapse section.\n *\n * @testOnly\n */\n @Method()\n async collapse() {\n if (!this.collapsible || !this.expanded) return;\n const btn = this.hostElement.shadowRoot.querySelector('[test-id=\"toggleButton\"]');\n (btn as HTMLQ2BtnElement)?.click();\n }\n\n /**\n * A test method to expand section.\n *\n * @testOnly\n */\n @Method()\n async expand() {\n if (!this.collapsible || this.expanded) return;\n const btn = this.hostElement.shadowRoot.querySelector('[test-id=\"toggleButton\"]');\n (btn as HTMLQ2BtnElement)?.click();\n }\n\n // #endregion\n // #region Local Methods\n\n get contentContainerHeight() {\n return `${this.contentContainer.offsetHeight || 0}px`;\n }\n\n get currentHeight() {\n const { collapsible, expanded } = this;\n if (!collapsible) {\n return null;\n } else if (expanded) {\n return this.contentContainerHeight;\n } else {\n return '0';\n }\n }\n\n addContentSlotListener = () => {\n if (this.contentSlot) {\n this.contentSlot.addEventListener('slotchange', resizeIframe);\n return;\n }\n\n const observer = new MutationObserver(resizeIframe);\n observer.observe(this.contentContainer, { childList: true, subtree: true });\n this.contentSlotMutationObserver = observer;\n };\n\n addHeaderSlotListener = () => {\n if (this.headerSlot) {\n this.headerSlot.addEventListener('slotchange', this.onHeaderSlotChange);\n return;\n }\n\n const observer = new MutationObserver(this.onHeaderSlotChange);\n observer.observe(this.headerSlotWrapper, { childList: true });\n this.headerSlotMutationObserver = observer;\n };\n\n clearResizeInterval = () => {\n this.resizerFn && clearInterval(this.resizerFn);\n };\n\n async collapseSection() {\n this.contentHeight = this.contentContainerHeight;\n await nextPaint(() => {\n this.contentHeight = this.currentHeight;\n });\n }\n\n async expandSection() {\n this.hideContent = false;\n await nextPaint(() => {\n this.contentHeight = this.currentHeight;\n });\n }\n\n onHeaderClick = () => {\n this.change.emit({\n expanded: !this.expanded,\n });\n };\n\n onHeaderSlotChange = () => {\n const hasSlotContent = !!this.hostElement.querySelector('[slot=\"q2-section-header\"]');\n\n if (this.hasYieldedHeader !== hasSlotContent) {\n this.hasYieldedHeader = !!hasSlotContent;\n }\n };\n\n onTransitionEnd = () => {\n if (this.expanded) {\n this.contentHeight = undefined;\n } else {\n this.hideContent = true;\n }\n\n setTimeout(() => {\n // This gives enough time for all values to get passed over\n // Previously, the interval was never cleared and the fn was called indefinitely then filtered\n // Will revisit in TCT-599\n this.clearResizeInterval();\n }, 1000);\n };\n\n removeContentSlotListener = () => {\n if (this.contentSlot) {\n this.contentSlot.removeEventListener('slotchange', resizeIframe);\n return;\n }\n this.contentSlotMutationObserver.disconnect();\n };\n\n removeHeaderSlotListener = () => {\n if (this.headerSlot) {\n this.headerSlot.removeEventListener('slotchange', this.onHeaderSlotChange);\n return;\n }\n\n this.headerSlotMutationObserver.disconnect();\n };\n\n // #endregion\n // #region Render Methods\n\n render() {\n const hasHeader = this.label || this.hasYieldedHeader;\n const wrapperClasses = ['content-wrapper'];\n const { collapsible, hideContent, contentHeight } = this;\n if (collapsible) {\n if (hideContent) wrapperClasses.push('is-closed');\n else if (contentHeight) wrapperClasses.push('is-transitioning');\n }\n\n const showDefaultHeader = !this.hasYieldedHeader && !!this.label;\n\n return (\n <section class=\"wrapper\">\n <header class={hasHeader ? 'has-header' : ''}>\n <div\n class=\"header-content\"\n id={this.titleId}\n onClick={this.collapsible && this.onHeaderClick}\n >\n {showDefaultHeader && <h2 class=\"title\">{loc(this.label)}</h2>}\n <div\n ref={el => (this.headerSlotWrapper = el)}\n class=\"header-slot-wrapper\"\n >\n <slot\n ref={(el: HTMLSlotElement) => (this.headerSlot = el)}\n name=\"q2-section-header\"\n />\n </div>\n </div>\n {this.collapsible && !this.noCollapseIcon && (\n <q2-btn\n label={loc(this.label || 'tecton.element.section.defaultToggleLabel')}\n ariaExpanded={`${!!this.expanded}`}\n ariaControls={this.contentId}\n test-id=\"toggleButton\"\n hide-label\n onClick={this.onHeaderClick}\n >\n <q2-icon type=\"chevron-up\" />\n </q2-btn>\n )}\n </header>\n <div\n class={wrapperClasses.join(' ')}\n id={this.contentId}\n aria-labelledby={this.titleId}\n role=\"region\"\n onTransitionEnd={this.onTransitionEnd}\n style={\n this.collapsible && {\n height: this.contentHeight,\n }\n }\n >\n <div\n ref={el => (this.contentContainer = el)}\n class=\"content\"\n tabindex=\"-1\"\n >\n <slot ref={(el: HTMLSlotElement) => (this.contentSlot = el)} />\n </div>\n </div>\n </section>\n );\n }\n\n // #endregion\n}\n"]}
@@ -1,14 +1,5 @@
1
1
  import { setTestStrings, setup, dispatchEvent, getListOfStyleCompilationIssues, evaluateA11y } from "../../../utils/helpers";
2
2
  describe('q2-section', () => {
3
- describe('[A11y] guideline compliance', () => {
4
- it('Does not have accessibility violations with only label', async () => {
5
- const page = await setup({
6
- html: `<q2-section>Some content to provide height.</q2-section>`,
7
- });
8
- const hasViolations = await evaluateA11y(page);
9
- expect(hasViolations).toBe(false);
10
- });
11
- });
12
3
  it('properly compiles CSS vars and functions', async () => {
13
4
  const page = await setup({ html: '<q2-section></q2-section>' });
14
5
  expect(await getListOfStyleCompilationIssues(page, 'q2-section')).toHaveLength(0);
@@ -401,5 +392,44 @@ describe('q2-section', () => {
401
392
  expect(contained).toBe(true);
402
393
  });
403
394
  });
395
+ describe('Accessibility', () => {
396
+ describe('aXe DevTools', () => {
397
+ it('does not have accessibility violations with default configuration', async () => {
398
+ const page = await setup({
399
+ html: `<q2-section>Some content to provide height.</q2-section>`,
400
+ });
401
+ const hasViolations = await evaluateA11y(page);
402
+ expect(hasViolations).toBe(false);
403
+ });
404
+ it('does not have accessibility violations when expandable', async () => {
405
+ const page = await setup({
406
+ html: `
407
+ <q2-section collapsible expanded label="My section">
408
+ Some content to provide height.
409
+ </q2-section>
410
+ `,
411
+ });
412
+ const hasViolations = await evaluateA11y(page);
413
+ expect(hasViolations).toBe(false);
414
+ });
415
+ });
416
+ describe('Accessibility Tree', () => { });
417
+ describe('Keyboard Controls', () => { });
418
+ describe('Other', () => { });
419
+ });
420
+ describe('test methods', () => {
421
+ it('call expand and collapse method ', async function () {
422
+ const page = await setup({ html: `<q2-section collapsible><h1>Hello</h1></q2-section>` });
423
+ const section = await page.find('q2-section');
424
+ await page.waitForChanges();
425
+ const toggleSpy = await section.spyOnEvent('change');
426
+ await section.callMethod('expand');
427
+ expect(toggleSpy).toHaveReceivedEventDetail({ expanded: true });
428
+ expect(await section.getProperty('expanded')).toBe(true);
429
+ await section.callMethod('collapse');
430
+ expect(toggleSpy).toHaveReceivedEventDetail({ expanded: false });
431
+ expect(await section.getProperty('expanded')).toBe(false);
432
+ });
433
+ });
404
434
  });
405
435
  //# sourceMappingURL=q2-section-test.e2e.js.map