q2-tecton-elements 1.67.2 → 1.68.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 (807) hide show
  1. package/dist/bundle-report.json +22598 -10670
  2. package/dist/cjs/click-elsewhere.q2-option-list.q2-popover.entry.cjs.js.map +1 -1
  3. package/dist/cjs/click-elsewhere_3.cjs.entry.js +46 -32
  4. package/dist/cjs/click-elsewhere_3.cjs.entry.js.map +1 -1
  5. package/dist/cjs/{component-DRAntnCA.js → component-iASoq6gx.js} +9 -3
  6. package/dist/cjs/component-iASoq6gx.js.map +1 -0
  7. package/dist/cjs/{index-YvKoRT-t.js → index-DmGkqdX2.js} +3 -3
  8. package/dist/cjs/index-DmGkqdX2.js.map +1 -0
  9. package/dist/cjs/loader.cjs.js +1 -1
  10. package/dist/cjs/q2-action-group.q2-resize-observer.entry.cjs.js.map +1 -1
  11. package/dist/cjs/q2-action-group_2.cjs.entry.js +2 -2
  12. package/dist/cjs/q2-action-group_2.cjs.entry.js.map +1 -1
  13. package/dist/cjs/q2-action-sheet.cjs.entry.js +109 -4
  14. package/dist/cjs/q2-action-sheet.cjs.entry.js.map +1 -1
  15. package/dist/cjs/q2-action-sheet.entry.cjs.js.map +1 -1
  16. package/dist/cjs/q2-avatar.cjs.entry.js.map +1 -1
  17. package/dist/cjs/q2-avatar.entry.cjs.js.map +1 -1
  18. package/dist/cjs/q2-badge.cjs.entry.js +1 -1
  19. package/dist/cjs/q2-badge.cjs.entry.js.map +1 -1
  20. package/dist/cjs/q2-badge.entry.cjs.js.map +1 -1
  21. package/dist/cjs/q2-btn.q2-loading.entry.cjs.js.map +1 -1
  22. package/dist/cjs/q2-btn_2.cjs.entry.js +1 -1
  23. package/dist/cjs/q2-btn_2.cjs.entry.js.map +1 -1
  24. package/dist/cjs/q2-calendar.cjs.entry.js +6 -3
  25. package/dist/cjs/q2-calendar.cjs.entry.js.map +1 -1
  26. package/dist/cjs/q2-calendar.entry.cjs.js.map +1 -1
  27. package/dist/cjs/q2-card-image.cjs.entry.js +2 -2
  28. package/dist/cjs/q2-card-image.cjs.entry.js.map +1 -1
  29. package/dist/cjs/q2-card-image.entry.cjs.js.map +1 -1
  30. package/dist/cjs/q2-card.cjs.entry.js +1 -1
  31. package/dist/cjs/q2-card.cjs.entry.js.map +1 -1
  32. package/dist/cjs/q2-card.entry.cjs.js.map +1 -1
  33. package/dist/cjs/q2-carousel-pane.cjs.entry.js +3 -3
  34. package/dist/cjs/q2-carousel-pane.cjs.entry.js.map +1 -1
  35. package/dist/cjs/q2-carousel-pane.entry.cjs.js.map +1 -1
  36. package/dist/cjs/q2-carousel.cjs.entry.js +162 -29
  37. package/dist/cjs/q2-carousel.cjs.entry.js.map +1 -1
  38. package/dist/cjs/q2-carousel.entry.cjs.js.map +1 -1
  39. package/dist/cjs/q2-chart-area.cjs.entry.js +1 -1
  40. package/dist/cjs/q2-chart-bar.cjs.entry.js +1 -1
  41. package/dist/cjs/q2-chart-donut.cjs.entry.js +3 -2
  42. package/dist/cjs/q2-chart-donut.cjs.entry.js.map +1 -1
  43. package/dist/cjs/q2-chart-donut.entry.cjs.js.map +1 -1
  44. package/dist/cjs/q2-checkbox-group.cjs.entry.js +2 -2
  45. package/dist/cjs/q2-checkbox-group.cjs.entry.js.map +1 -1
  46. package/dist/cjs/q2-checkbox-group.entry.cjs.js.map +1 -1
  47. package/dist/cjs/q2-checkbox.q2-tag.entry.cjs.js.map +1 -1
  48. package/dist/cjs/q2-checkbox_2.cjs.entry.js +3 -3
  49. package/dist/cjs/q2-checkbox_2.cjs.entry.js.map +1 -1
  50. package/dist/cjs/q2-context.cjs.entry.js +2 -2
  51. package/dist/cjs/q2-context.cjs.entry.js.map +1 -1
  52. package/dist/cjs/q2-context.entry.cjs.js.map +1 -1
  53. package/dist/cjs/q2-currency.cjs.entry.js +2 -3
  54. package/dist/cjs/q2-currency.cjs.entry.js.map +1 -1
  55. package/dist/cjs/q2-currency.entry.cjs.js.map +1 -1
  56. package/dist/cjs/q2-data-table.cjs.entry.js +2 -2
  57. package/dist/cjs/q2-data-table.cjs.entry.js.map +1 -1
  58. package/dist/cjs/q2-data-table.entry.cjs.js.map +1 -1
  59. package/dist/cjs/q2-detail.cjs.entry.js +2 -2
  60. package/dist/cjs/q2-detail.cjs.entry.js.map +1 -1
  61. package/dist/cjs/q2-detail.entry.cjs.js.map +1 -1
  62. package/dist/cjs/q2-dropdown-item.cjs.entry.js +2 -2
  63. package/dist/cjs/q2-dropdown-item.cjs.entry.js.map +1 -1
  64. package/dist/cjs/q2-dropdown-item.entry.cjs.js.map +1 -1
  65. package/dist/cjs/q2-dropdown.cjs.entry.js +3 -5
  66. package/dist/cjs/q2-dropdown.cjs.entry.js.map +1 -1
  67. package/dist/cjs/q2-dropdown.entry.cjs.js.map +1 -1
  68. package/dist/cjs/q2-editable-field.cjs.entry.js +1 -1
  69. package/dist/cjs/q2-editable-field.cjs.entry.js.map +1 -1
  70. package/dist/cjs/q2-editable-field.entry.cjs.js.map +1 -1
  71. package/dist/cjs/q2-example.cjs.entry.js +1 -1
  72. package/dist/cjs/q2-file-picker.cjs.entry.js +1 -1
  73. package/dist/cjs/q2-file-picker.cjs.entry.js.map +1 -1
  74. package/dist/cjs/q2-file-picker.entry.cjs.js.map +1 -1
  75. package/dist/cjs/q2-form.cjs.entry.js +2 -2
  76. package/dist/cjs/q2-form.cjs.entry.js.map +1 -1
  77. package/dist/cjs/q2-form.entry.cjs.js.map +1 -1
  78. package/dist/cjs/q2-formatted-text.cjs.entry.js +1 -1
  79. package/dist/cjs/q2-formatted-text.cjs.entry.js.map +1 -1
  80. package/dist/cjs/q2-formatted-text.entry.cjs.js.map +1 -1
  81. package/dist/cjs/q2-grid-area.cjs.entry.js +1 -1
  82. package/dist/cjs/q2-grid.cjs.entry.js +32 -8
  83. package/dist/cjs/q2-grid.cjs.entry.js.map +1 -1
  84. package/dist/cjs/q2-grid.entry.cjs.js.map +1 -1
  85. package/dist/cjs/q2-icon.cjs.entry.js +1 -1
  86. package/dist/cjs/q2-icon.cjs.entry.js.map +1 -1
  87. package/dist/cjs/q2-icon.entry.cjs.js.map +1 -1
  88. package/dist/cjs/q2-input.cjs.entry.js +8 -5
  89. package/dist/cjs/q2-input.cjs.entry.js.map +1 -1
  90. package/dist/cjs/q2-input.entry.cjs.js.map +1 -1
  91. package/dist/cjs/q2-item.cjs.entry.js +2 -2
  92. package/dist/cjs/q2-item.cjs.entry.js.map +1 -1
  93. package/dist/cjs/q2-item.entry.cjs.js.map +1 -1
  94. package/dist/cjs/q2-legend.cjs.entry.js +2 -3
  95. package/dist/cjs/q2-legend.cjs.entry.js.map +1 -1
  96. package/dist/cjs/q2-legend.entry.cjs.js.map +1 -1
  97. package/dist/cjs/q2-link.q2-list.entry.cjs.js.map +1 -1
  98. package/dist/cjs/q2-link_2.cjs.entry.js +2 -2
  99. package/dist/cjs/q2-link_2.cjs.entry.js.map +1 -1
  100. package/dist/cjs/q2-loc.cjs.entry.js +1 -1
  101. package/dist/cjs/q2-message.cjs.entry.js +3 -3
  102. package/dist/cjs/q2-message.cjs.entry.js.map +1 -1
  103. package/dist/cjs/q2-message.entry.cjs.js.map +1 -1
  104. package/dist/cjs/q2-meter.cjs.entry.js +2 -2
  105. package/dist/cjs/q2-meter.cjs.entry.js.map +1 -1
  106. package/dist/cjs/q2-meter.entry.cjs.js.map +1 -1
  107. package/dist/cjs/q2-modal.cjs.entry.js +3 -3
  108. package/dist/cjs/q2-modal.cjs.entry.js.map +1 -1
  109. package/dist/cjs/q2-modal.entry.cjs.js.map +1 -1
  110. package/dist/cjs/q2-month-picker.cjs.entry.js +1 -1
  111. package/dist/cjs/q2-mutation-observer.cjs.entry.js +1 -1
  112. package/dist/cjs/q2-optgroup.cjs.entry.js +3 -3
  113. package/dist/cjs/q2-optgroup.cjs.entry.js.map +1 -1
  114. package/dist/cjs/q2-optgroup.entry.cjs.js.map +1 -1
  115. package/dist/cjs/q2-option.cjs.entry.js +3 -3
  116. package/dist/cjs/q2-option.cjs.entry.js.map +1 -1
  117. package/dist/cjs/q2-option.entry.cjs.js.map +1 -1
  118. package/dist/cjs/q2-otp.cjs.entry.js +373 -0
  119. package/dist/cjs/q2-otp.cjs.entry.js.map +1 -0
  120. package/dist/cjs/q2-otp.entry.cjs.js.map +1 -0
  121. package/dist/cjs/q2-pagination.cjs.entry.js +4 -4
  122. package/dist/cjs/q2-pagination.cjs.entry.js.map +1 -1
  123. package/dist/cjs/q2-pagination.entry.cjs.js.map +1 -1
  124. package/dist/cjs/q2-pill.cjs.entry.js +24 -15
  125. package/dist/cjs/q2-pill.cjs.entry.js.map +1 -1
  126. package/dist/cjs/q2-pill.entry.cjs.js.map +1 -1
  127. package/dist/cjs/q2-radio-group.cjs.entry.js +1 -1
  128. package/dist/cjs/q2-radio-group.cjs.entry.js.map +1 -1
  129. package/dist/cjs/q2-radio-group.entry.cjs.js.map +1 -1
  130. package/dist/cjs/q2-radio.cjs.entry.js +3 -3
  131. package/dist/cjs/q2-radio.cjs.entry.js.map +1 -1
  132. package/dist/cjs/q2-radio.entry.cjs.js.map +1 -1
  133. package/dist/cjs/q2-relative-time.cjs.entry.js +2 -2
  134. package/dist/cjs/q2-section-container.cjs.entry.js +1 -1
  135. package/dist/cjs/q2-section.cjs.entry.js +3 -3
  136. package/dist/cjs/q2-section.cjs.entry.js.map +1 -1
  137. package/dist/cjs/q2-section.entry.cjs.js.map +1 -1
  138. package/dist/cjs/q2-select.cjs.entry.js +1 -1
  139. package/dist/cjs/q2-select.cjs.entry.js.map +1 -1
  140. package/dist/cjs/q2-select.entry.cjs.js.map +1 -1
  141. package/dist/cjs/q2-stepper-pane.cjs.entry.js +3 -3
  142. package/dist/cjs/q2-stepper-vertical.cjs.entry.js +2 -2
  143. package/dist/cjs/q2-stepper-vertical.cjs.entry.js.map +1 -1
  144. package/dist/cjs/q2-stepper-vertical.entry.cjs.js.map +1 -1
  145. package/dist/cjs/q2-stepper.cjs.entry.js +2 -2
  146. package/dist/cjs/q2-stepper.cjs.entry.js.map +1 -1
  147. package/dist/cjs/q2-stepper.entry.cjs.js.map +1 -1
  148. package/dist/cjs/q2-tab-container.cjs.entry.js +3 -3
  149. package/dist/cjs/q2-tab-container.cjs.entry.js.map +1 -1
  150. package/dist/cjs/q2-tab-container.entry.cjs.js.map +1 -1
  151. package/dist/cjs/q2-tab-pane.cjs.entry.js +2 -2
  152. package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
  153. package/dist/cjs/q2-textarea.cjs.entry.js +1 -1
  154. package/dist/cjs/q2-textarea.cjs.entry.js.map +1 -1
  155. package/dist/cjs/q2-textarea.entry.cjs.js.map +1 -1
  156. package/dist/cjs/q2-toast.cjs.entry.js +1 -1
  157. package/dist/cjs/q2-toast.cjs.entry.js.map +1 -1
  158. package/dist/cjs/q2-toast.entry.cjs.js.map +1 -1
  159. package/dist/cjs/q2-tooltip.cjs.entry.js +124 -5
  160. package/dist/cjs/q2-tooltip.cjs.entry.js.map +1 -1
  161. package/dist/cjs/q2-tooltip.entry.cjs.js.map +1 -1
  162. package/dist/cjs/{sanitize-html-string-CW6y5624.js → sanitize-html-string-D17Pr7-c.js} +21 -4
  163. package/dist/cjs/{sanitize-html-string-CW6y5624.js.map → sanitize-html-string-D17Pr7-c.js.map} +1 -1
  164. package/dist/cjs/tecton-tab-pane.cjs.entry.js +2 -2
  165. package/dist/collection/collection-manifest.json +1 -0
  166. package/dist/collection/components/click-elsewhere/click-elsewhere.js +2 -0
  167. package/dist/collection/components/click-elsewhere/click-elsewhere.js.map +1 -1
  168. package/dist/collection/components/q2-action-group/q2-action-group.css +14 -0
  169. package/dist/collection/components/q2-action-sheet/q2-action-sheet.css +16 -0
  170. package/dist/collection/components/q2-action-sheet/q2-action-sheet.js +107 -2
  171. package/dist/collection/components/q2-action-sheet/q2-action-sheet.js.map +1 -1
  172. package/dist/collection/components/q2-avatar/q2-avatar.css +24 -0
  173. package/dist/collection/components/q2-avatar/test/q2-avatar-test.vr.js +61 -0
  174. package/dist/collection/components/q2-avatar/test/q2-avatar-test.vr.js.map +1 -0
  175. package/dist/collection/components/q2-badge/q2-badge.css +30 -0
  176. package/dist/collection/components/q2-badge/test/q2-badge-test.vr.js +34 -0
  177. package/dist/collection/components/q2-badge/test/q2-badge-test.vr.js.map +1 -0
  178. package/dist/collection/components/q2-btn/q2-btn.css +279 -0
  179. package/dist/collection/components/q2-btn/test/q2-btn-test.vr.js +80 -0
  180. package/dist/collection/components/q2-btn/test/q2-btn-test.vr.js.map +1 -0
  181. package/dist/collection/components/q2-calendar/q2-calendar.css +36 -0
  182. package/dist/collection/components/q2-calendar/q2-calendar.js +5 -2
  183. package/dist/collection/components/q2-calendar/q2-calendar.js.map +1 -1
  184. package/dist/collection/components/q2-calendar/test/q2-calendar-test.vr.js +170 -0
  185. package/dist/collection/components/q2-calendar/test/q2-calendar-test.vr.js.map +1 -0
  186. package/dist/collection/components/q2-card/q2-card.css +62 -0
  187. package/dist/collection/components/q2-card/test/q2-card-test.vr.js +72 -0
  188. package/dist/collection/components/q2-card/test/q2-card-test.vr.js.map +1 -0
  189. package/dist/collection/components/q2-card-image/q2-card-image.css +74 -13
  190. package/dist/collection/components/q2-card-image/test/q2-card-image-test.vr.js +152 -0
  191. package/dist/collection/components/q2-card-image/test/q2-card-image-test.vr.js.map +1 -0
  192. package/dist/collection/components/q2-carousel/q2-carousel.css +78 -13
  193. package/dist/collection/components/q2-carousel/q2-carousel.js +241 -27
  194. package/dist/collection/components/q2-carousel/q2-carousel.js.map +1 -1
  195. package/dist/collection/components/q2-carousel/test/q2-carousel-test.vr.js +104 -0
  196. package/dist/collection/components/q2-carousel/test/q2-carousel-test.vr.js.map +1 -0
  197. package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.css +26 -1
  198. package/dist/collection/components/q2-chart-area/test/q2-chart-area-test.vr.js +126 -0
  199. package/dist/collection/components/q2-chart-area/test/q2-chart-area-test.vr.js.map +1 -0
  200. package/dist/collection/components/q2-chart-bar/test/q2-chart-bar-test.vr.js +105 -0
  201. package/dist/collection/components/q2-chart-bar/test/q2-chart-bar-test.vr.js.map +1 -0
  202. package/dist/collection/components/q2-chart-donut/q2-chart-donut.css +29 -0
  203. package/dist/collection/components/q2-chart-donut/q2-chart-donut.js +21 -1
  204. package/dist/collection/components/q2-chart-donut/q2-chart-donut.js.map +1 -1
  205. package/dist/collection/components/q2-chart-donut/test/q2-chart-donut-test.vr.js +151 -0
  206. package/dist/collection/components/q2-chart-donut/test/q2-chart-donut-test.vr.js.map +1 -0
  207. package/dist/collection/components/q2-checkbox/q2-checkbox.css +128 -0
  208. package/dist/collection/components/q2-checkbox/test/q2-checkbox-test.vr.js +69 -0
  209. package/dist/collection/components/q2-checkbox/test/q2-checkbox-test.vr.js.map +1 -0
  210. package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.css +21 -0
  211. package/dist/collection/components/q2-checkbox-group/test/q2-checkbox-group-test.vr.js +61 -0
  212. package/dist/collection/components/q2-checkbox-group/test/q2-checkbox-group-test.vr.js.map +1 -0
  213. package/dist/collection/components/q2-context/q2-context.css +16 -0
  214. package/dist/collection/components/q2-context/test/q2-context-test.vr.js +95 -0
  215. package/dist/collection/components/q2-context/test/q2-context-test.vr.js.map +1 -0
  216. package/dist/collection/components/q2-currency/q2-currency.css +31 -0
  217. package/dist/collection/components/q2-currency/q2-currency.js +3 -4
  218. package/dist/collection/components/q2-currency/q2-currency.js.map +1 -1
  219. package/dist/collection/components/q2-currency/test/q2-currency-test.vr.js +79 -0
  220. package/dist/collection/components/q2-currency/test/q2-currency-test.vr.js.map +1 -0
  221. package/dist/collection/components/q2-data-table/q2-data-table.css +51 -0
  222. package/dist/collection/components/q2-data-table/q2-data-table.js +1 -1
  223. package/dist/collection/components/q2-data-table/test/q2-data-table-test.vr.js +79 -0
  224. package/dist/collection/components/q2-data-table/test/q2-data-table-test.vr.js.map +1 -0
  225. package/dist/collection/components/q2-detail/q2-detail.css +42 -0
  226. package/dist/collection/components/q2-detail/q2-detail.js +1 -1
  227. package/dist/collection/components/q2-dropdown/q2-dropdown.css +8 -0
  228. package/dist/collection/components/q2-dropdown/q2-dropdown.js +2 -4
  229. package/dist/collection/components/q2-dropdown/q2-dropdown.js.map +1 -1
  230. package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.css +11 -0
  231. package/dist/collection/components/q2-editable-field/q2-editable-field.css +5 -0
  232. package/dist/collection/components/q2-editable-field/test/q2-editable-field-test.vr.js +89 -0
  233. package/dist/collection/components/q2-editable-field/test/q2-editable-field-test.vr.js.map +1 -0
  234. package/dist/collection/components/q2-example/q2-example.js +1 -1
  235. package/dist/collection/components/q2-file-picker/q2-file-picker.css +64 -0
  236. package/dist/collection/components/q2-file-picker/test/q2-file-picker-test.vr.js +92 -0
  237. package/dist/collection/components/q2-file-picker/test/q2-file-picker-test.vr.js.map +1 -0
  238. package/dist/collection/components/q2-form/q2-form.css +34 -20
  239. package/dist/collection/components/q2-form/q2-form.js +1 -1
  240. package/dist/collection/components/q2-formatted-text/q2-formatted-text.css +14 -0
  241. package/dist/collection/components/q2-formatted-text/q2-formatted-text.js +1 -1
  242. package/dist/collection/components/q2-formatted-text/test/q2-formatted-text-test.vr.js +55 -0
  243. package/dist/collection/components/q2-formatted-text/test/q2-formatted-text-test.vr.js.map +1 -0
  244. package/dist/collection/components/q2-grid/q2-grid.css +13 -0
  245. package/dist/collection/components/q2-grid/q2-grid.js +31 -7
  246. package/dist/collection/components/q2-grid/q2-grid.js.map +1 -1
  247. package/dist/collection/components/q2-icon/assets/standard.symbol.svg +1 -1
  248. package/dist/collection/components/q2-icon/q2-icon.css +15 -0
  249. package/dist/collection/components/q2-icon/test/q2-icon-test.vr.js +55 -0
  250. package/dist/collection/components/q2-icon/test/q2-icon-test.vr.js.map +1 -0
  251. package/dist/collection/components/q2-input/q2-input.css +104 -0
  252. package/dist/collection/components/q2-input/q2-input.js +6 -3
  253. package/dist/collection/components/q2-input/q2-input.js.map +1 -1
  254. package/dist/collection/components/q2-input/test/q2-input-test.vr.js +97 -0
  255. package/dist/collection/components/q2-input/test/q2-input-test.vr.js.map +1 -0
  256. package/dist/collection/components/q2-item/q2-item.css +28 -0
  257. package/dist/collection/components/q2-item/q2-item.js +1 -1
  258. package/dist/collection/components/q2-legend/q2-legend.css +16 -0
  259. package/dist/collection/components/q2-legend/q2-legend.js +21 -3
  260. package/dist/collection/components/q2-legend/q2-legend.js.map +1 -1
  261. package/dist/collection/components/q2-link/q2-link.css +20 -0
  262. package/dist/collection/components/q2-link/test/q2-link-test.vr.js +70 -0
  263. package/dist/collection/components/q2-link/test/q2-link-test.vr.js.map +1 -0
  264. package/dist/collection/components/q2-list/q2-list.css +14 -0
  265. package/dist/collection/components/q2-list/q2-list.js +1 -1
  266. package/dist/collection/components/q2-list/test/q2-list-test.vr.js +58 -0
  267. package/dist/collection/components/q2-list/test/q2-list-test.vr.js.map +1 -0
  268. package/dist/collection/components/q2-loading/q2-loading.css +9 -0
  269. package/dist/collection/components/q2-message/q2-message.css +29 -1
  270. package/dist/collection/components/q2-message/q2-message.js +1 -1
  271. package/dist/collection/components/q2-message/test/q2-message-test.vr.js +57 -0
  272. package/dist/collection/components/q2-message/test/q2-message-test.vr.js.map +1 -0
  273. package/dist/collection/components/q2-meter/q2-meter.css +40 -0
  274. package/dist/collection/components/q2-meter/q2-meter.js +1 -1
  275. package/dist/collection/components/q2-meter/test/q2-meter-test.vr.js +78 -0
  276. package/dist/collection/components/q2-meter/test/q2-meter-test.vr.js.map +1 -0
  277. package/dist/collection/components/q2-modal/q2-modal.css +21 -0
  278. package/dist/collection/components/q2-modal/q2-modal.js +1 -1
  279. package/dist/collection/components/q2-modal/test/q2-modal-test.vr.js +107 -0
  280. package/dist/collection/components/q2-modal/test/q2-modal-test.vr.js.map +1 -0
  281. package/dist/collection/components/q2-mutation-observer/q2-mutation-observer.js +1 -1
  282. package/dist/collection/components/q2-optgroup/q2-optgroup.css +11 -0
  283. package/dist/collection/components/q2-optgroup/q2-optgroup.js +1 -1
  284. package/dist/collection/components/q2-option/q2-option.css +9 -0
  285. package/dist/collection/components/q2-option/q2-option.js +1 -1
  286. package/dist/collection/components/q2-option/q2-option.js.map +1 -1
  287. package/dist/collection/components/q2-option-list/q2-option-list.css +3 -0
  288. package/dist/collection/components/q2-option-list/q2-option-list.js +37 -28
  289. package/dist/collection/components/q2-option-list/q2-option-list.js.map +1 -1
  290. package/dist/collection/components/q2-otp/q2-otp.css +312 -0
  291. package/dist/collection/components/q2-otp/q2-otp.js +873 -0
  292. package/dist/collection/components/q2-otp/q2-otp.js.map +1 -0
  293. package/dist/collection/components/q2-pagination/q2-pagination.css +22 -0
  294. package/dist/collection/components/q2-pagination/q2-pagination.js +3 -3
  295. package/dist/collection/components/q2-pagination/test/q2-pagination-test.vr.js +145 -0
  296. package/dist/collection/components/q2-pagination/test/q2-pagination-test.vr.js.map +1 -0
  297. package/dist/collection/components/q2-pill/q2-pill.css +53 -0
  298. package/dist/collection/components/q2-pill/q2-pill.js +23 -14
  299. package/dist/collection/components/q2-pill/q2-pill.js.map +1 -1
  300. package/dist/collection/components/q2-pill/test/q2-pill-test.vr.js +110 -0
  301. package/dist/collection/components/q2-pill/test/q2-pill-test.vr.js.map +1 -0
  302. package/dist/collection/components/q2-popover/q2-popover.css +20 -0
  303. package/dist/collection/components/q2-popover/q2-popover.js +5 -2
  304. package/dist/collection/components/q2-popover/q2-popover.js.map +1 -1
  305. package/dist/collection/components/q2-radio/q2-radio.css +52 -1
  306. package/dist/collection/components/q2-radio/q2-radio.js +2 -2
  307. package/dist/collection/components/q2-radio/q2-radio.js.map +1 -1
  308. package/dist/collection/components/q2-radio/test/q2-radio-test.vr.js +73 -0
  309. package/dist/collection/components/q2-radio/test/q2-radio-test.vr.js.map +1 -0
  310. package/dist/collection/components/q2-radio-group/q2-radio-group.css +22 -0
  311. package/dist/collection/components/q2-radio-group/test/q2-radio-group-test.vr.js +99 -0
  312. package/dist/collection/components/q2-radio-group/test/q2-radio-group-test.vr.js.map +1 -0
  313. package/dist/collection/components/q2-relative-time/q2-relative-time.js +1 -1
  314. package/dist/collection/components/q2-resize-observer/q2-resize-observer.js +1 -1
  315. package/dist/collection/components/q2-section/q2-section.css +26 -0
  316. package/dist/collection/components/q2-section/q2-section.js +2 -2
  317. package/dist/collection/components/q2-section/test/q2-section-test.vr.js +68 -0
  318. package/dist/collection/components/q2-section/test/q2-section-test.vr.js.map +1 -0
  319. package/dist/collection/components/q2-select/q2-select.css +17 -0
  320. package/dist/collection/components/q2-select/test/q2-select-test.vr.js +107 -0
  321. package/dist/collection/components/q2-select/test/q2-select-test.vr.js.map +1 -0
  322. package/dist/collection/components/q2-stepper/q2-stepper.css +36 -0
  323. package/dist/collection/components/q2-stepper/q2-stepper.js +1 -1
  324. package/dist/collection/components/q2-stepper/test/q2-stepper-test.vr.js +86 -0
  325. package/dist/collection/components/q2-stepper/test/q2-stepper-test.vr.js.map +1 -0
  326. package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.js +1 -1
  327. package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.css +31 -0
  328. package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js +1 -1
  329. package/dist/collection/components/q2-stepper-vertical/test/q2-stepper-vertical-test.vr.js +97 -0
  330. package/dist/collection/components/q2-stepper-vertical/test/q2-stepper-vertical-test.vr.js.map +1 -0
  331. package/dist/collection/components/q2-tab-container/q2-tab-container.css +38 -0
  332. package/dist/collection/components/q2-tab-container/q2-tab-container.js +1 -1
  333. package/dist/collection/components/q2-tab-container/test/q2-tab-container-test.vr.js +78 -0
  334. package/dist/collection/components/q2-tab-container/test/q2-tab-container-test.vr.js.map +1 -0
  335. package/dist/collection/components/q2-tab-pane/q2-tab-pane.js +1 -1
  336. package/dist/collection/components/q2-tag/q2-tag.css +30 -1
  337. package/dist/collection/components/q2-tag/q2-tag.js +1 -1
  338. package/dist/collection/components/q2-tag/test/q2-tag-test.vr.js +83 -0
  339. package/dist/collection/components/q2-tag/test/q2-tag-test.vr.js.map +1 -0
  340. package/dist/collection/components/q2-textarea/q2-textarea.css +80 -0
  341. package/dist/collection/components/q2-textarea/test/q2-textarea-test.vr.js +102 -0
  342. package/dist/collection/components/q2-textarea/test/q2-textarea-test.vr.js.map +1 -0
  343. package/dist/collection/components/q2-toast/q2-toast.css +15 -0
  344. package/dist/collection/components/q2-tooltip/q2-tooltip.css +31 -0
  345. package/dist/collection/components/q2-tooltip/q2-tooltip.js +135 -4
  346. package/dist/collection/components/q2-tooltip/q2-tooltip.js.map +1 -1
  347. package/dist/collection/components/q2-tooltip/test/q2-tooltip-test.vr.js +76 -0
  348. package/dist/collection/components/q2-tooltip/test/q2-tooltip-test.vr.js.map +1 -0
  349. package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js +2 -2
  350. package/dist/collection/utils/component.js +7 -1
  351. package/dist/collection/utils/component.js.map +1 -1
  352. package/dist/collection/utils/index.js +1 -1
  353. package/dist/collection/utils/index.js.map +1 -1
  354. package/dist/collection/utils/sanitize-html-string.js +19 -2
  355. package/dist/collection/utils/sanitize-html-string.js.map +1 -1
  356. package/dist/collection/utils/test/vr-helpers.js +98 -0
  357. package/dist/collection/utils/test/vr-helpers.js.map +1 -0
  358. package/dist/components/click-elsewhere2.js +2 -0
  359. package/dist/components/click-elsewhere2.js.map +1 -1
  360. package/dist/components/component.js +7 -1
  361. package/dist/components/component.js.map +1 -1
  362. package/dist/components/index.js +2 -0
  363. package/dist/components/index.js.map +1 -1
  364. package/dist/components/index2.js +1 -1
  365. package/dist/components/index2.js.map +1 -1
  366. package/dist/components/q2-action-group2.js.map +1 -1
  367. package/dist/components/q2-action-sheet.js +107 -2
  368. package/dist/components/q2-action-sheet.js.map +1 -1
  369. package/dist/components/q2-avatar2.js.map +1 -1
  370. package/dist/components/q2-badge2.js.map +1 -1
  371. package/dist/components/q2-btn2.js.map +1 -1
  372. package/dist/components/q2-calendar.js +5 -2
  373. package/dist/components/q2-calendar.js.map +1 -1
  374. package/dist/components/q2-card-image.js +1 -1
  375. package/dist/components/q2-card-image.js.map +1 -1
  376. package/dist/components/q2-card.js.map +1 -1
  377. package/dist/components/q2-carousel-pane.js +1 -135
  378. package/dist/components/q2-carousel-pane.js.map +1 -1
  379. package/dist/components/q2-carousel-pane2.js +140 -0
  380. package/dist/components/q2-carousel-pane2.js.map +1 -0
  381. package/dist/components/q2-carousel.js +173 -29
  382. package/dist/components/q2-carousel.js.map +1 -1
  383. package/dist/components/q2-chart-donut.js +3 -1
  384. package/dist/components/q2-chart-donut.js.map +1 -1
  385. package/dist/components/q2-checkbox-group.js.map +1 -1
  386. package/dist/components/q2-checkbox2.js.map +1 -1
  387. package/dist/components/q2-context.js +1 -1
  388. package/dist/components/q2-context.js.map +1 -1
  389. package/dist/components/q2-currency.js +3 -4
  390. package/dist/components/q2-currency.js.map +1 -1
  391. package/dist/components/q2-data-table.js +1 -1
  392. package/dist/components/q2-data-table.js.map +1 -1
  393. package/dist/components/q2-detail.js +1 -1
  394. package/dist/components/q2-detail.js.map +1 -1
  395. package/dist/components/q2-dropdown-item2.js.map +1 -1
  396. package/dist/components/q2-dropdown.js +2 -4
  397. package/dist/components/q2-dropdown.js.map +1 -1
  398. package/dist/components/q2-editable-field.js.map +1 -1
  399. package/dist/components/q2-example.js +1 -1
  400. package/dist/components/q2-file-picker.js.map +1 -1
  401. package/dist/components/q2-form.js +2 -2
  402. package/dist/components/q2-form.js.map +1 -1
  403. package/dist/components/q2-formatted-text.js +1 -1
  404. package/dist/components/q2-formatted-text.js.map +1 -1
  405. package/dist/components/q2-grid.js +32 -8
  406. package/dist/components/q2-grid.js.map +1 -1
  407. package/dist/components/q2-icon2.js.map +1 -1
  408. package/dist/components/q2-input2.js +7 -4
  409. package/dist/components/q2-input2.js.map +1 -1
  410. package/dist/components/q2-item2.js +1 -1
  411. package/dist/components/q2-item2.js.map +1 -1
  412. package/dist/components/q2-legend2.js +3 -3
  413. package/dist/components/q2-legend2.js.map +1 -1
  414. package/dist/components/q2-link2.js.map +1 -1
  415. package/dist/components/q2-list2.js +1 -1
  416. package/dist/components/q2-list2.js.map +1 -1
  417. package/dist/components/q2-loading2.js.map +1 -1
  418. package/dist/components/q2-message2.js +2 -2
  419. package/dist/components/q2-message2.js.map +1 -1
  420. package/dist/components/q2-meter.js +1 -1
  421. package/dist/components/q2-meter.js.map +1 -1
  422. package/dist/components/q2-modal.js +1 -1
  423. package/dist/components/q2-modal.js.map +1 -1
  424. package/dist/components/q2-mutation-observer.js +1 -1
  425. package/dist/components/q2-optgroup2.js +1 -1
  426. package/dist/components/q2-optgroup2.js.map +1 -1
  427. package/dist/components/q2-option-list2.js +37 -28
  428. package/dist/components/q2-option-list2.js.map +1 -1
  429. package/dist/components/q2-option2.js +1 -1
  430. package/dist/components/q2-option2.js.map +1 -1
  431. package/dist/components/q2-otp.d.ts +11 -0
  432. package/dist/components/q2-otp.js +439 -0
  433. package/dist/components/q2-otp.js.map +1 -0
  434. package/dist/components/q2-pagination.js +3 -3
  435. package/dist/components/q2-pagination.js.map +1 -1
  436. package/dist/components/q2-pill.js +23 -14
  437. package/dist/components/q2-pill.js.map +1 -1
  438. package/dist/components/q2-popover2.js +5 -2
  439. package/dist/components/q2-popover2.js.map +1 -1
  440. package/dist/components/q2-radio-group.js.map +1 -1
  441. package/dist/components/q2-radio.js +2 -2
  442. package/dist/components/q2-radio.js.map +1 -1
  443. package/dist/components/q2-relative-time.js +1 -1
  444. package/dist/components/q2-resize-observer2.js +1 -1
  445. package/dist/components/q2-section.js +2 -2
  446. package/dist/components/q2-section.js.map +1 -1
  447. package/dist/components/q2-select2.js.map +1 -1
  448. package/dist/components/q2-stepper-pane.js +1 -1
  449. package/dist/components/q2-stepper-vertical.js +1 -1
  450. package/dist/components/q2-stepper-vertical.js.map +1 -1
  451. package/dist/components/q2-stepper.js +1 -1
  452. package/dist/components/q2-stepper.js.map +1 -1
  453. package/dist/components/q2-tab-container.js +1 -1
  454. package/dist/components/q2-tab-container.js.map +1 -1
  455. package/dist/components/q2-tab-pane.js +1 -1
  456. package/dist/components/q2-tag2.js +2 -2
  457. package/dist/components/q2-tag2.js.map +1 -1
  458. package/dist/components/q2-textarea.js.map +1 -1
  459. package/dist/components/q2-toast.js.map +1 -1
  460. package/dist/components/q2-tooltip2.js +124 -5
  461. package/dist/components/q2-tooltip2.js.map +1 -1
  462. package/dist/components/sanitize-html-string.js +19 -2
  463. package/dist/components/sanitize-html-string.js.map +1 -1
  464. package/dist/components/tecton-tab-pane.js +2 -2
  465. package/dist/esm/click-elsewhere.q2-option-list.q2-popover.entry.js.map +1 -1
  466. package/dist/esm/click-elsewhere_3.entry.js +46 -32
  467. package/dist/esm/click-elsewhere_3.entry.js.map +1 -1
  468. package/dist/esm/{component-DVxzK3WH.js → component-DaQM9u3s.js} +9 -3
  469. package/dist/esm/component-DaQM9u3s.js.map +1 -0
  470. package/dist/esm/{index-C4PILj1_.js → index-C5gj0T_3.js} +4 -4
  471. package/dist/esm/index-C5gj0T_3.js.map +1 -0
  472. package/dist/esm/loader.js +1 -1
  473. package/dist/esm/q2-action-group.q2-resize-observer.entry.js.map +1 -1
  474. package/dist/esm/q2-action-group_2.entry.js +2 -2
  475. package/dist/esm/q2-action-group_2.entry.js.map +1 -1
  476. package/dist/esm/q2-action-sheet.entry.js +109 -4
  477. package/dist/esm/q2-action-sheet.entry.js.map +1 -1
  478. package/dist/esm/q2-avatar.entry.js.map +1 -1
  479. package/dist/esm/q2-badge.entry.js +1 -1
  480. package/dist/esm/q2-badge.entry.js.map +1 -1
  481. package/dist/esm/q2-btn.q2-loading.entry.js.map +1 -1
  482. package/dist/esm/q2-btn_2.entry.js +1 -1
  483. package/dist/esm/q2-btn_2.entry.js.map +1 -1
  484. package/dist/esm/q2-calendar.entry.js +6 -3
  485. package/dist/esm/q2-calendar.entry.js.map +1 -1
  486. package/dist/esm/q2-card-image.entry.js +2 -2
  487. package/dist/esm/q2-card-image.entry.js.map +1 -1
  488. package/dist/esm/q2-card.entry.js +1 -1
  489. package/dist/esm/q2-card.entry.js.map +1 -1
  490. package/dist/esm/q2-carousel-pane.entry.js +3 -3
  491. package/dist/esm/q2-carousel-pane.entry.js.map +1 -1
  492. package/dist/esm/q2-carousel.entry.js +162 -29
  493. package/dist/esm/q2-carousel.entry.js.map +1 -1
  494. package/dist/esm/q2-chart-area.entry.js +1 -1
  495. package/dist/esm/q2-chart-bar.entry.js +1 -1
  496. package/dist/esm/q2-chart-donut.entry.js +3 -2
  497. package/dist/esm/q2-chart-donut.entry.js.map +1 -1
  498. package/dist/esm/q2-checkbox-group.entry.js +2 -2
  499. package/dist/esm/q2-checkbox-group.entry.js.map +1 -1
  500. package/dist/esm/q2-checkbox.q2-tag.entry.js.map +1 -1
  501. package/dist/esm/q2-checkbox_2.entry.js +3 -3
  502. package/dist/esm/q2-checkbox_2.entry.js.map +1 -1
  503. package/dist/esm/q2-context.entry.js +2 -2
  504. package/dist/esm/q2-context.entry.js.map +1 -1
  505. package/dist/esm/q2-currency.entry.js +3 -4
  506. package/dist/esm/q2-currency.entry.js.map +1 -1
  507. package/dist/esm/q2-data-table.entry.js +2 -2
  508. package/dist/esm/q2-data-table.entry.js.map +1 -1
  509. package/dist/esm/q2-detail.entry.js +2 -2
  510. package/dist/esm/q2-detail.entry.js.map +1 -1
  511. package/dist/esm/q2-dropdown-item.entry.js +2 -2
  512. package/dist/esm/q2-dropdown-item.entry.js.map +1 -1
  513. package/dist/esm/q2-dropdown.entry.js +3 -5
  514. package/dist/esm/q2-dropdown.entry.js.map +1 -1
  515. package/dist/esm/q2-editable-field.entry.js +1 -1
  516. package/dist/esm/q2-editable-field.entry.js.map +1 -1
  517. package/dist/esm/q2-example.entry.js +1 -1
  518. package/dist/esm/q2-file-picker.entry.js +1 -1
  519. package/dist/esm/q2-file-picker.entry.js.map +1 -1
  520. package/dist/esm/q2-form.entry.js +2 -2
  521. package/dist/esm/q2-form.entry.js.map +1 -1
  522. package/dist/esm/q2-formatted-text.entry.js +1 -1
  523. package/dist/esm/q2-formatted-text.entry.js.map +1 -1
  524. package/dist/esm/q2-grid-area.entry.js +1 -1
  525. package/dist/esm/q2-grid.entry.js +33 -9
  526. package/dist/esm/q2-grid.entry.js.map +1 -1
  527. package/dist/esm/q2-icon.entry.js +1 -1
  528. package/dist/esm/q2-icon.entry.js.map +1 -1
  529. package/dist/esm/q2-input.entry.js +8 -5
  530. package/dist/esm/q2-input.entry.js.map +1 -1
  531. package/dist/esm/q2-item.entry.js +2 -2
  532. package/dist/esm/q2-item.entry.js.map +1 -1
  533. package/dist/esm/q2-legend.entry.js +2 -3
  534. package/dist/esm/q2-legend.entry.js.map +1 -1
  535. package/dist/esm/q2-link.q2-list.entry.js.map +1 -1
  536. package/dist/esm/q2-link_2.entry.js +2 -2
  537. package/dist/esm/q2-link_2.entry.js.map +1 -1
  538. package/dist/esm/q2-loc.entry.js +1 -1
  539. package/dist/esm/q2-message.entry.js +3 -3
  540. package/dist/esm/q2-message.entry.js.map +1 -1
  541. package/dist/esm/q2-meter.entry.js +2 -2
  542. package/dist/esm/q2-meter.entry.js.map +1 -1
  543. package/dist/esm/q2-modal.entry.js +3 -3
  544. package/dist/esm/q2-modal.entry.js.map +1 -1
  545. package/dist/esm/q2-month-picker.entry.js +1 -1
  546. package/dist/esm/q2-mutation-observer.entry.js +1 -1
  547. package/dist/esm/q2-optgroup.entry.js +3 -3
  548. package/dist/esm/q2-optgroup.entry.js.map +1 -1
  549. package/dist/esm/q2-option.entry.js +3 -3
  550. package/dist/esm/q2-option.entry.js.map +1 -1
  551. package/dist/esm/q2-otp.entry.js +371 -0
  552. package/dist/esm/q2-otp.entry.js.map +1 -0
  553. package/dist/esm/q2-pagination.entry.js +4 -4
  554. package/dist/esm/q2-pagination.entry.js.map +1 -1
  555. package/dist/esm/q2-pill.entry.js +24 -15
  556. package/dist/esm/q2-pill.entry.js.map +1 -1
  557. package/dist/esm/q2-radio-group.entry.js +1 -1
  558. package/dist/esm/q2-radio-group.entry.js.map +1 -1
  559. package/dist/esm/q2-radio.entry.js +3 -3
  560. package/dist/esm/q2-radio.entry.js.map +1 -1
  561. package/dist/esm/q2-relative-time.entry.js +2 -2
  562. package/dist/esm/q2-section-container.entry.js +1 -1
  563. package/dist/esm/q2-section.entry.js +3 -3
  564. package/dist/esm/q2-section.entry.js.map +1 -1
  565. package/dist/esm/q2-select.entry.js +1 -1
  566. package/dist/esm/q2-select.entry.js.map +1 -1
  567. package/dist/esm/q2-stepper-pane.entry.js +3 -3
  568. package/dist/esm/q2-stepper-vertical.entry.js +2 -2
  569. package/dist/esm/q2-stepper-vertical.entry.js.map +1 -1
  570. package/dist/esm/q2-stepper.entry.js +2 -2
  571. package/dist/esm/q2-stepper.entry.js.map +1 -1
  572. package/dist/esm/q2-tab-container.entry.js +3 -3
  573. package/dist/esm/q2-tab-container.entry.js.map +1 -1
  574. package/dist/esm/q2-tab-pane.entry.js +2 -2
  575. package/dist/esm/q2-tecton-elements.js +1 -1
  576. package/dist/esm/q2-textarea.entry.js +1 -1
  577. package/dist/esm/q2-textarea.entry.js.map +1 -1
  578. package/dist/esm/q2-toast.entry.js +1 -1
  579. package/dist/esm/q2-toast.entry.js.map +1 -1
  580. package/dist/esm/q2-tooltip.entry.js +124 -5
  581. package/dist/esm/q2-tooltip.entry.js.map +1 -1
  582. package/dist/esm/{sanitize-html-string-B35VmRc9.js → sanitize-html-string-DPHNpMWE.js} +21 -4
  583. package/dist/{q2-tecton-elements/sanitize-html-string-B35VmRc9.js.map → esm/sanitize-html-string-DPHNpMWE.js.map} +1 -1
  584. package/dist/esm/tecton-tab-pane.entry.js +2 -2
  585. package/dist/playwright.config.js +12 -0
  586. package/dist/playwright.config.js.map +1 -0
  587. package/dist/q2-tecton-elements/assets/standard.symbol.svg +1 -1
  588. package/dist/q2-tecton-elements/click-elsewhere.q2-option-list.q2-popover.entry.esm.js.map +1 -1
  589. package/dist/q2-tecton-elements/click-elsewhere_3.entry.js +44 -35
  590. package/dist/q2-tecton-elements/click-elsewhere_3.entry.js.map +1 -1
  591. package/dist/q2-tecton-elements/component-DaQM9u3s.js +46 -0
  592. package/dist/q2-tecton-elements/component-DaQM9u3s.js.map +1 -0
  593. package/dist/q2-tecton-elements/{index-C4PILj1_.js → index-C5gj0T_3.js} +4 -4
  594. package/dist/q2-tecton-elements/index-C5gj0T_3.js.map +1 -0
  595. package/dist/q2-tecton-elements/q2-action-group.q2-resize-observer.entry.esm.js.map +1 -1
  596. package/dist/q2-tecton-elements/q2-action-group_2.entry.js +2 -2
  597. package/dist/q2-tecton-elements/q2-action-group_2.entry.js.map +1 -1
  598. package/dist/q2-tecton-elements/q2-action-sheet.entry.esm.js.map +1 -1
  599. package/dist/q2-tecton-elements/q2-action-sheet.entry.js +166 -70
  600. package/dist/q2-tecton-elements/q2-action-sheet.entry.js.map +1 -1
  601. package/dist/q2-tecton-elements/q2-avatar.entry.esm.js.map +1 -1
  602. package/dist/q2-tecton-elements/q2-avatar.entry.js.map +1 -1
  603. package/dist/q2-tecton-elements/q2-badge.entry.esm.js.map +1 -1
  604. package/dist/q2-tecton-elements/q2-badge.entry.js +1 -1
  605. package/dist/q2-tecton-elements/q2-badge.entry.js.map +1 -1
  606. package/dist/q2-tecton-elements/q2-btn.q2-loading.entry.esm.js.map +1 -1
  607. package/dist/q2-tecton-elements/q2-btn_2.entry.js +1 -1
  608. package/dist/q2-tecton-elements/q2-btn_2.entry.js.map +1 -1
  609. package/dist/q2-tecton-elements/q2-calendar.entry.esm.js.map +1 -1
  610. package/dist/q2-tecton-elements/q2-calendar.entry.js +4 -4
  611. package/dist/q2-tecton-elements/q2-calendar.entry.js.map +1 -1
  612. package/dist/q2-tecton-elements/q2-card-image.entry.esm.js.map +1 -1
  613. package/dist/q2-tecton-elements/q2-card-image.entry.js +2 -2
  614. package/dist/q2-tecton-elements/q2-card-image.entry.js.map +1 -1
  615. package/dist/q2-tecton-elements/q2-card.entry.esm.js.map +1 -1
  616. package/dist/q2-tecton-elements/q2-card.entry.js +1 -1
  617. package/dist/q2-tecton-elements/q2-card.entry.js.map +1 -1
  618. package/dist/q2-tecton-elements/q2-carousel-pane.entry.esm.js.map +1 -1
  619. package/dist/q2-tecton-elements/q2-carousel-pane.entry.js +6 -6
  620. package/dist/q2-tecton-elements/q2-carousel-pane.entry.js.map +1 -1
  621. package/dist/q2-tecton-elements/q2-carousel.entry.esm.js.map +1 -1
  622. package/dist/q2-tecton-elements/q2-carousel.entry.js +402 -271
  623. package/dist/q2-tecton-elements/q2-carousel.entry.js.map +1 -1
  624. package/dist/q2-tecton-elements/q2-chart-area.entry.js +1 -1
  625. package/dist/q2-tecton-elements/q2-chart-bar.entry.js +1 -1
  626. package/dist/q2-tecton-elements/q2-chart-donut.entry.esm.js.map +1 -1
  627. package/dist/q2-tecton-elements/q2-chart-donut.entry.js +18 -16
  628. package/dist/q2-tecton-elements/q2-chart-donut.entry.js.map +1 -1
  629. package/dist/q2-tecton-elements/q2-checkbox-group.entry.esm.js.map +1 -1
  630. package/dist/q2-tecton-elements/q2-checkbox-group.entry.js +2 -2
  631. package/dist/q2-tecton-elements/q2-checkbox-group.entry.js.map +1 -1
  632. package/dist/q2-tecton-elements/q2-checkbox.q2-tag.entry.esm.js.map +1 -1
  633. package/dist/q2-tecton-elements/q2-checkbox_2.entry.js +7 -7
  634. package/dist/q2-tecton-elements/q2-checkbox_2.entry.js.map +1 -1
  635. package/dist/q2-tecton-elements/q2-context.entry.esm.js.map +1 -1
  636. package/dist/q2-tecton-elements/q2-context.entry.js +2 -2
  637. package/dist/q2-tecton-elements/q2-context.entry.js.map +1 -1
  638. package/dist/q2-tecton-elements/q2-currency.entry.esm.js.map +1 -1
  639. package/dist/q2-tecton-elements/q2-currency.entry.js +34 -33
  640. package/dist/q2-tecton-elements/q2-currency.entry.js.map +1 -1
  641. package/dist/q2-tecton-elements/q2-data-table.entry.esm.js.map +1 -1
  642. package/dist/q2-tecton-elements/q2-data-table.entry.js +4 -4
  643. package/dist/q2-tecton-elements/q2-data-table.entry.js.map +1 -1
  644. package/dist/q2-tecton-elements/q2-detail.entry.esm.js.map +1 -1
  645. package/dist/q2-tecton-elements/q2-detail.entry.js +4 -4
  646. package/dist/q2-tecton-elements/q2-detail.entry.js.map +1 -1
  647. package/dist/q2-tecton-elements/q2-dropdown-item.entry.esm.js.map +1 -1
  648. package/dist/q2-tecton-elements/q2-dropdown-item.entry.js +2 -2
  649. package/dist/q2-tecton-elements/q2-dropdown-item.entry.js.map +1 -1
  650. package/dist/q2-tecton-elements/q2-dropdown.entry.esm.js.map +1 -1
  651. package/dist/q2-tecton-elements/q2-dropdown.entry.js +18 -19
  652. package/dist/q2-tecton-elements/q2-dropdown.entry.js.map +1 -1
  653. package/dist/q2-tecton-elements/q2-editable-field.entry.esm.js.map +1 -1
  654. package/dist/q2-tecton-elements/q2-editable-field.entry.js +1 -1
  655. package/dist/q2-tecton-elements/q2-editable-field.entry.js.map +1 -1
  656. package/dist/q2-tecton-elements/q2-example.entry.js +1 -1
  657. package/dist/q2-tecton-elements/q2-file-picker.entry.esm.js.map +1 -1
  658. package/dist/q2-tecton-elements/q2-file-picker.entry.js +1 -1
  659. package/dist/q2-tecton-elements/q2-file-picker.entry.js.map +1 -1
  660. package/dist/q2-tecton-elements/q2-form.entry.esm.js.map +1 -1
  661. package/dist/q2-tecton-elements/q2-form.entry.js +9 -9
  662. package/dist/q2-tecton-elements/q2-form.entry.js.map +1 -1
  663. package/dist/q2-tecton-elements/q2-formatted-text.entry.esm.js.map +1 -1
  664. package/dist/q2-tecton-elements/q2-formatted-text.entry.js +2 -2
  665. package/dist/q2-tecton-elements/q2-formatted-text.entry.js.map +1 -1
  666. package/dist/q2-tecton-elements/q2-grid-area.entry.js +1 -1
  667. package/dist/q2-tecton-elements/q2-grid.entry.esm.js.map +1 -1
  668. package/dist/q2-tecton-elements/q2-grid.entry.js +39 -14
  669. package/dist/q2-tecton-elements/q2-grid.entry.js.map +1 -1
  670. package/dist/q2-tecton-elements/q2-icon.entry.esm.js.map +1 -1
  671. package/dist/q2-tecton-elements/q2-icon.entry.js +52 -52
  672. package/dist/q2-tecton-elements/q2-icon.entry.js.map +1 -1
  673. package/dist/q2-tecton-elements/q2-input.entry.esm.js.map +1 -1
  674. package/dist/q2-tecton-elements/q2-input.entry.js +10 -6
  675. package/dist/q2-tecton-elements/q2-input.entry.js.map +1 -1
  676. package/dist/q2-tecton-elements/q2-item.entry.esm.js.map +1 -1
  677. package/dist/q2-tecton-elements/q2-item.entry.js +14 -14
  678. package/dist/q2-tecton-elements/q2-item.entry.js.map +1 -1
  679. package/dist/q2-tecton-elements/q2-legend.entry.esm.js.map +1 -1
  680. package/dist/q2-tecton-elements/q2-legend.entry.js +4 -5
  681. package/dist/q2-tecton-elements/q2-legend.entry.js.map +1 -1
  682. package/dist/q2-tecton-elements/q2-link.q2-list.entry.esm.js.map +1 -1
  683. package/dist/q2-tecton-elements/q2-link_2.entry.js +7 -7
  684. package/dist/q2-tecton-elements/q2-link_2.entry.js.map +1 -1
  685. package/dist/q2-tecton-elements/q2-loc.entry.js +1 -1
  686. package/dist/q2-tecton-elements/q2-message.entry.esm.js.map +1 -1
  687. package/dist/q2-tecton-elements/q2-message.entry.js +28 -28
  688. package/dist/q2-tecton-elements/q2-message.entry.js.map +1 -1
  689. package/dist/q2-tecton-elements/q2-meter.entry.esm.js.map +1 -1
  690. package/dist/q2-tecton-elements/q2-meter.entry.js +8 -8
  691. package/dist/q2-tecton-elements/q2-meter.entry.js.map +1 -1
  692. package/dist/q2-tecton-elements/q2-modal.entry.esm.js.map +1 -1
  693. package/dist/q2-tecton-elements/q2-modal.entry.js +53 -53
  694. package/dist/q2-tecton-elements/q2-modal.entry.js.map +1 -1
  695. package/dist/q2-tecton-elements/q2-month-picker.entry.js +1 -1
  696. package/dist/q2-tecton-elements/q2-mutation-observer.entry.js +1 -1
  697. package/dist/q2-tecton-elements/q2-optgroup.entry.esm.js.map +1 -1
  698. package/dist/q2-tecton-elements/q2-optgroup.entry.js +6 -6
  699. package/dist/q2-tecton-elements/q2-optgroup.entry.js.map +1 -1
  700. package/dist/q2-tecton-elements/q2-option.entry.esm.js.map +1 -1
  701. package/dist/q2-tecton-elements/q2-option.entry.js +3 -3
  702. package/dist/q2-tecton-elements/q2-option.entry.js.map +1 -1
  703. package/dist/q2-tecton-elements/q2-otp.entry.esm.js.map +1 -0
  704. package/dist/q2-tecton-elements/q2-otp.entry.js +453 -0
  705. package/dist/q2-tecton-elements/q2-otp.entry.js.map +1 -0
  706. package/dist/q2-tecton-elements/q2-pagination.entry.esm.js.map +1 -1
  707. package/dist/q2-tecton-elements/q2-pagination.entry.js +29 -29
  708. package/dist/q2-tecton-elements/q2-pagination.entry.js.map +1 -1
  709. package/dist/q2-tecton-elements/q2-pill.entry.esm.js.map +1 -1
  710. package/dist/q2-tecton-elements/q2-pill.entry.js +43 -28
  711. package/dist/q2-tecton-elements/q2-pill.entry.js.map +1 -1
  712. package/dist/q2-tecton-elements/q2-radio-group.entry.esm.js.map +1 -1
  713. package/dist/q2-tecton-elements/q2-radio-group.entry.js +1 -1
  714. package/dist/q2-tecton-elements/q2-radio-group.entry.js.map +1 -1
  715. package/dist/q2-tecton-elements/q2-radio.entry.esm.js.map +1 -1
  716. package/dist/q2-tecton-elements/q2-radio.entry.js +10 -10
  717. package/dist/q2-tecton-elements/q2-radio.entry.js.map +1 -1
  718. package/dist/q2-tecton-elements/q2-relative-time.entry.js +2 -2
  719. package/dist/q2-tecton-elements/q2-section-container.entry.js +1 -1
  720. package/dist/q2-tecton-elements/q2-section.entry.esm.js.map +1 -1
  721. package/dist/q2-tecton-elements/q2-section.entry.js +21 -21
  722. package/dist/q2-tecton-elements/q2-section.entry.js.map +1 -1
  723. package/dist/q2-tecton-elements/q2-select.entry.esm.js.map +1 -1
  724. package/dist/q2-tecton-elements/q2-select.entry.js +1 -1
  725. package/dist/q2-tecton-elements/q2-select.entry.js.map +1 -1
  726. package/dist/q2-tecton-elements/q2-stepper-pane.entry.js +10 -10
  727. package/dist/q2-tecton-elements/q2-stepper-vertical.entry.esm.js.map +1 -1
  728. package/dist/q2-tecton-elements/q2-stepper-vertical.entry.js +5 -5
  729. package/dist/q2-tecton-elements/q2-stepper-vertical.entry.js.map +1 -1
  730. package/dist/q2-tecton-elements/q2-stepper.entry.esm.js.map +1 -1
  731. package/dist/q2-tecton-elements/q2-stepper.entry.js +33 -33
  732. package/dist/q2-tecton-elements/q2-stepper.entry.js.map +1 -1
  733. package/dist/q2-tecton-elements/q2-tab-container.entry.esm.js.map +1 -1
  734. package/dist/q2-tecton-elements/q2-tab-container.entry.js +14 -14
  735. package/dist/q2-tecton-elements/q2-tab-container.entry.js.map +1 -1
  736. package/dist/q2-tecton-elements/q2-tab-pane.entry.js +6 -6
  737. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
  738. package/dist/q2-tecton-elements/q2-textarea.entry.esm.js.map +1 -1
  739. package/dist/q2-tecton-elements/q2-textarea.entry.js +1 -1
  740. package/dist/q2-tecton-elements/q2-textarea.entry.js.map +1 -1
  741. package/dist/q2-tecton-elements/q2-toast.entry.esm.js.map +1 -1
  742. package/dist/q2-tecton-elements/q2-toast.entry.js +1 -1
  743. package/dist/q2-tecton-elements/q2-toast.entry.js.map +1 -1
  744. package/dist/q2-tecton-elements/q2-tooltip.entry.esm.js.map +1 -1
  745. package/dist/q2-tecton-elements/q2-tooltip.entry.js +136 -20
  746. package/dist/q2-tecton-elements/q2-tooltip.entry.js.map +1 -1
  747. package/dist/q2-tecton-elements/{sanitize-html-string-B35VmRc9.js → sanitize-html-string-DPHNpMWE.js} +147 -142
  748. package/dist/{esm/sanitize-html-string-B35VmRc9.js.map → q2-tecton-elements/sanitize-html-string-DPHNpMWE.js.map} +1 -1
  749. package/dist/q2-tecton-elements/tecton-tab-pane.entry.js +6 -6
  750. package/dist/types/builds/q2e/development/tecton/tecton/packages/q2-tecton-elements/.stencil/playwright.config.d.ts +2 -0
  751. package/dist/types/components/q2-action-sheet/q2-action-sheet.d.ts +22 -0
  752. package/dist/types/components/q2-avatar/test/q2-avatar-test.vr.d.ts +1 -0
  753. package/dist/types/components/q2-badge/test/q2-badge-test.vr.d.ts +1 -0
  754. package/dist/types/components/q2-btn/test/q2-btn-test.vr.d.ts +1 -0
  755. package/dist/types/components/q2-calendar/test/q2-calendar-test.vr.d.ts +1 -0
  756. package/dist/types/components/q2-card/test/q2-card-test.vr.d.ts +1 -0
  757. package/dist/types/components/q2-card-image/test/q2-card-image-test.vr.d.ts +1 -0
  758. package/dist/types/components/q2-carousel/q2-carousel.d.ts +29 -0
  759. package/dist/types/components/q2-carousel/test/q2-carousel-test.vr.d.ts +1 -0
  760. package/dist/types/components/q2-chart-area/test/q2-chart-area-test.vr.d.ts +1 -0
  761. package/dist/types/components/q2-chart-bar/test/q2-chart-bar-test.vr.d.ts +1 -0
  762. package/dist/types/components/q2-chart-donut/q2-chart-donut.d.ts +2 -0
  763. package/dist/types/components/q2-chart-donut/test/q2-chart-donut-test.vr.d.ts +1 -0
  764. package/dist/types/components/q2-checkbox/test/q2-checkbox-test.vr.d.ts +1 -0
  765. package/dist/types/components/q2-checkbox-group/test/q2-checkbox-group-test.vr.d.ts +1 -0
  766. package/dist/types/components/q2-context/test/q2-context-test.vr.d.ts +1 -0
  767. package/dist/types/components/q2-currency/test/q2-currency-test.vr.d.ts +1 -0
  768. package/dist/types/components/q2-data-table/test/q2-data-table-test.vr.d.ts +1 -0
  769. package/dist/types/components/q2-editable-field/test/q2-editable-field-test.vr.d.ts +1 -0
  770. package/dist/types/components/q2-file-picker/test/q2-file-picker-test.vr.d.ts +1 -0
  771. package/dist/types/components/q2-formatted-text/test/q2-formatted-text-test.vr.d.ts +1 -0
  772. package/dist/types/components/q2-grid/q2-grid.d.ts +10 -0
  773. package/dist/types/components/q2-icon/test/q2-icon-test.vr.d.ts +1 -0
  774. package/dist/types/components/q2-input/test/q2-input-test.vr.d.ts +1 -0
  775. package/dist/types/components/q2-legend/q2-legend.d.ts +2 -0
  776. package/dist/types/components/q2-link/test/q2-link-test.vr.d.ts +1 -0
  777. package/dist/types/components/q2-list/test/q2-list-test.vr.d.ts +1 -0
  778. package/dist/types/components/q2-message/test/q2-message-test.vr.d.ts +1 -0
  779. package/dist/types/components/q2-meter/test/q2-meter-test.vr.d.ts +1 -0
  780. package/dist/types/components/q2-modal/test/q2-modal-test.vr.d.ts +1 -0
  781. package/dist/types/components/q2-otp/q2-otp.d.ts +159 -0
  782. package/dist/types/components/q2-pagination/test/q2-pagination-test.vr.d.ts +1 -0
  783. package/dist/types/components/q2-pill/q2-pill.d.ts +5 -2
  784. package/dist/types/components/q2-pill/test/q2-pill-test.vr.d.ts +1 -0
  785. package/dist/types/components/q2-radio/q2-radio.d.ts +1 -1
  786. package/dist/types/components/q2-radio/test/q2-radio-test.vr.d.ts +1 -0
  787. package/dist/types/components/q2-radio-group/test/q2-radio-group-test.vr.d.ts +1 -0
  788. package/dist/types/components/q2-section/test/q2-section-test.vr.d.ts +1 -0
  789. package/dist/types/components/q2-select/test/q2-select-test.vr.d.ts +1 -0
  790. package/dist/types/components/q2-stepper/test/q2-stepper-test.vr.d.ts +1 -0
  791. package/dist/types/components/q2-stepper-vertical/test/q2-stepper-vertical-test.vr.d.ts +1 -0
  792. package/dist/types/components/q2-tab-container/test/q2-tab-container-test.vr.d.ts +1 -0
  793. package/dist/types/components/q2-tag/test/q2-tag-test.vr.d.ts +1 -0
  794. package/dist/types/components/q2-textarea/test/q2-textarea-test.vr.d.ts +1 -0
  795. package/dist/types/components/q2-tooltip/q2-tooltip.d.ts +4 -0
  796. package/dist/types/components/q2-tooltip/test/q2-tooltip-test.vr.d.ts +1 -0
  797. package/dist/types/components.d.ts +306 -2
  798. package/dist/types/utils/component.d.ts +1 -1
  799. package/dist/types/utils/test/vr-helpers.d.ts +14 -0
  800. package/package.json +12 -3
  801. package/dist/cjs/component-DRAntnCA.js.map +0 -1
  802. package/dist/cjs/index-YvKoRT-t.js.map +0 -1
  803. package/dist/esm/component-DVxzK3WH.js.map +0 -1
  804. package/dist/esm/index-C4PILj1_.js.map +0 -1
  805. package/dist/q2-tecton-elements/component-DVxzK3WH.js +0 -40
  806. package/dist/q2-tecton-elements/component-DVxzK3WH.js.map +0 -1
  807. package/dist/q2-tecton-elements/index-C4PILj1_.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"q2-otp.js","sourceRoot":"","sources":["../../../../src/components/q2-otp/q2-otp.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, Event, EventEmitter, h, Listen, Method, Prop, State, Watch } from '@stencil/core';\nimport { createGuid, isEventFromElement, loc, overrideFocus } from 'src/utils';\n\n/**\n * @name One-Time Password\n * @category Forms\n * @summary Use for entering a short one-time verification code.\n */\n@Component({ tag: 'q2-otp', shadow: true, styleUrl: 'q2-otp.scss' })\nexport class Q2Otp {\n // #region Own Properties\n\n private readonly defaultSendCodeLabel = 'tecton.element.otp.sendCode';\n private readonly defaultSendCodeLabelValue = 'Send code';\n private readonly defaultSubmitLabel = 'tecton.element.otp.verify';\n private readonly defaultSubmitLabelValue = 'Verify';\n guid = createGuid();\n hasAutoFocused = false;\n inputRef: HTMLInputElement;\n sendCodeRef: HTMLElement;\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 hasFocus: boolean = false;\n\n // #endregion\n // #region Public Property API\n\n /** Focuses the first one-time password field when the component loads. */\n @Prop({ reflect: true })\n autoFocus: boolean = false;\n\n /** Triggers submission when the last field is filled. */\n @Prop({ reflect: true })\n autoSubmit: boolean = false;\n\n /** Clears all fields and returns focus to the first field when `state` becomes `error`. */\n @Prop({ reflect: true })\n clearOnError: boolean = false;\n\n /** Disables all one-time password fields. */\n @Prop({ reflect: true })\n disabled: boolean = false;\n\n /**\n * Error message rendered below the submit area.\n * @localizable\n */\n @Prop()\n errorMessage: string;\n\n /**\n * Helper text content.\n * @localizable\n */\n @Prop()\n helperText: string;\n\n /**\n * Visible label above the one-time password fields.\n * @localizable\n */\n @Prop({ reflect: true })\n label: string;\n\n /** Number of one-time password fields. */\n @Prop({ reflect: true })\n length: number = 4 | 6 | 8;\n\n /** Obscures entered characters. */\n @Prop({ reflect: true })\n masked: boolean = false;\n\n /**\n * Button text during processing.\n * @localizable\n */\n @Prop()\n processingLabel: string;\n\n /**\n * Button text for the send-code action.\n * @localizable\n */\n @Prop()\n sendCodeLabel: string;\n\n /** Toggles helper text visibility. */\n @Prop({ reflect: true })\n showHelperText: boolean = false;\n\n /**\n * Renders fields in two equal groups with a dash separator.\n * @private\n */\n @Prop({ reflect: true })\n split: boolean = false;\n\n /**\n * Sets the visual status for the one-time password fields.\n *\n * - `ready` — Shows the send-code button and hides the input fields until the user requests a code.\n * - `error` — Displays an error style on the fields. If `errorMessage` is set, it renders below the submit area.\n * When `clearOnError` is enabled, all fields are cleared and focus returns to the first field.\n * - `success` — Locks the input, replaces the submit button with a success indicator, and displays the\n * `successMessage` if provided.\n * - `verifying` — Locks the input and puts the submit button into a loading state. When combined with `autoSubmit`,\n * a processing overlay with `processingLabel` is shown over the fields.\n */\n @Prop({ reflect: true, mutable: true })\n state: 'error' | 'ready' | 'success' | 'verifying' | undefined;\n\n /**\n * Renders a submit button with this label.\n * @localizable\n */\n @Prop()\n submitLabel: string;\n\n /**\n * Success message rendered below the submit area.\n * @localizable\n */\n @Prop()\n successMessage: string;\n\n /** The composed one-time password value. */\n @Prop({ mutable: true })\n value: string = '';\n\n // #endregion\n // #region Events\n\n /** Emitted when the fields are cleared. */\n @Event()\n tctClear: EventEmitter<{ value: string }>;\n\n /** Emitted when all fields are filled. */\n @Event()\n tctComplete: EventEmitter<{ value: string }>;\n\n /** Emitted when any field value changes. */\n @Event()\n tctInput: EventEmitter<{ value: string }>;\n\n /** Emitted when the send-code button is clicked. */\n @Event()\n tctSendCode: EventEmitter<void>;\n\n /** Emitted when the submit button is clicked or auto-submit triggers. */\n @Event()\n tctSubmit: EventEmitter<{ value: string }>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n componentWillLoad(): void {\n this.value = this.filterDigits(this.value);\n }\n\n componentDidLoad(): void {\n overrideFocus(this.hostElement);\n this.focusOnLoad();\n }\n\n componentDidRender(): void {\n this.focusOnLoad();\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('focus')\n onHostElementFocus(event: FocusEvent): void {\n if (this.disabled || this.locksInput) return;\n if (!isEventFromElement(event, this.hostElement)) return;\n if (this.isAwaitingSendCode) {\n this.sendCodeRef?.focus();\n return;\n }\n this.inputRef?.focus();\n }\n\n // #endregion\n // #region Public Methods API\n\n /**\n * Clears all fields, focuses the first field, and emits `tctClear`.\n */\n @Method()\n async clear(): Promise<void> {\n this.clearValue(true);\n }\n\n /**\n * Clears the component and resets error, success, and processing state.\n */\n @Method()\n async reset(): Promise<void> {\n this.clearValue(true);\n this.state = undefined;\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('autoFocus')\n autoFocusObserver(): void {\n this.focusOnLoad();\n }\n\n @Watch('length')\n lengthObserver(): void {\n if (this.value.length > this.normalizedLength) {\n this.value = this.value.slice(0, this.normalizedLength);\n }\n }\n\n @Watch('state')\n stateObserver(state: string | null): void {\n if (state === null) {\n Promise.resolve().then(() => {\n if (this.state === null) this.state = undefined;\n });\n return;\n }\n\n if (state === 'error' && this.clearOnError) {\n this.clearValue(true);\n }\n }\n\n @Watch('value')\n valueObserver(): void {\n const digits = this.filterDigits(this.value);\n if (digits !== this.value) {\n this.value = digits;\n }\n if (this.inputRef && this.inputRef.value !== digits) {\n this.inputRef.value = digits;\n }\n }\n\n // #endregion\n // #region Local Methods\n\n get activeSlotIndex(): number {\n return Math.min(this.value.length, this.normalizedLength - 1);\n }\n\n get componentId(): string {\n return `q2-otp-${this.guid}`;\n }\n\n get describedBy(): string | undefined {\n const ids = [];\n if (this.state === 'error' && this.errorMessage) ids.push(this.messageId);\n if (this.state === 'success' && this.successMessage) ids.push(this.messageId);\n return ids.length ? ids.join(' ') : undefined;\n }\n\n get hasVisibleHelperText(): boolean {\n return this.showHelperText && !!this.helperText;\n }\n\n get helperTextId(): string {\n return `${this.componentId}-helper-text`;\n }\n\n get inputAriaLabel(): string {\n const inputLabel = `${this.localizedLabel} (${this.normalizedLength} ${loc('tecton.element.otp.digits')})`;\n return [this.hasVisibleHelperText ? this.localizedHelperText : '', inputLabel].filter(Boolean).join(' ');\n }\n\n get isAwaitingSendCode(): boolean {\n return this.state === 'ready';\n }\n\n get isComplete(): boolean {\n return this.value.length === this.normalizedLength;\n }\n\n get isSuccess(): boolean {\n return this.state === 'success';\n }\n\n get isVerifying(): boolean {\n return this.state === 'verifying';\n }\n\n get labelId(): string {\n return `${this.componentId}-label`;\n }\n\n get localizedHelperText(): string {\n return loc(this.helperText);\n }\n\n get localizedLabel(): string {\n return loc(this.label);\n }\n\n get localizedProcessingLabel(): string {\n return loc(this.processingLabel || 'Verifying');\n }\n\n get localizedSendCodeLabel(): string {\n if (this.sendCodeLabel) return loc(this.sendCodeLabel);\n\n const localizedLabel = loc(this.defaultSendCodeLabel);\n return localizedLabel === this.defaultSendCodeLabel ? this.defaultSendCodeLabelValue : localizedLabel;\n }\n\n get localizedSubmitLabel(): string {\n if (this.submitLabel) return loc(this.submitLabel);\n\n const localizedLabel = loc(this.defaultSubmitLabel);\n return localizedLabel === this.defaultSubmitLabel ? this.defaultSubmitLabelValue : localizedLabel;\n }\n\n get locksInput(): boolean {\n return this.isVerifying || this.isSuccess;\n }\n\n get messageId(): string {\n return `${this.componentId}-message`;\n }\n\n get normalizedLength() {\n const length = Number(this.length);\n return [4, 6, 8].includes(length) ? length : 6;\n }\n\n clearValue(emitEvent = false): void {\n this.value = '';\n if (this.inputRef) this.inputRef.value = '';\n this.inputRef?.focus();\n if (emitEvent) this.tctClear.emit({ value: '' });\n }\n\n filterDigits(value: string): string {\n return value.replace(/\\D/g, '').slice(0, this.normalizedLength);\n }\n\n focusOnLoad(): void {\n if (!this.autoFocus || this.hasAutoFocused || this.disabled || this.locksInput) return;\n\n setTimeout(() => {\n if (!this.autoFocus || this.hasAutoFocused || this.disabled || this.locksInput || !this.inputRef) {\n return;\n }\n\n this.hasAutoFocused = true;\n this.hasFocus = true;\n this.inputRef.focus();\n }, 100);\n }\n\n handleComplete(digits: string): void {\n this.tctComplete.emit({ value: digits });\n\n if (this.autoSubmit) {\n setTimeout(() => this.submit(digits), 150);\n }\n }\n\n handleFocusIn = () => {\n if (this.state === 'error') {\n this.value = '';\n if (this.inputRef) this.inputRef.value = '';\n this.state = undefined;\n }\n this.hasFocus = true;\n };\n\n handleFocusOut = (event: FocusEvent) => {\n if (this.autoFocus && this.hasAutoFocused && !this.value && !event.relatedTarget) {\n return;\n }\n this.hasFocus = false;\n };\n\n handleInputEvent = () => {\n if (this.disabled || this.locksInput) {\n this.inputRef.value = this.value;\n return;\n }\n\n const digits = this.filterDigits(this.inputRef.value);\n this.inputRef.value = digits;\n\n if (this.state === 'error') {\n this.state = undefined;\n }\n\n this.value = digits;\n this.tctInput.emit({ value: digits });\n\n if (digits.length === this.normalizedLength) {\n this.handleComplete(digits);\n }\n };\n\n handleKeyDown = (event: KeyboardEvent) => {\n if (event.key !== 'Enter') return;\n if (this.disabled || this.locksInput || !this.isComplete) return;\n\n event.preventDefault();\n this.submit();\n };\n\n handlePaste = (event: ClipboardEvent) => {\n event.preventDefault();\n if (this.disabled || this.locksInput) return;\n\n const pastedValue = event.clipboardData?.getData('text') ?? '';\n const digits = this.filterDigits(pastedValue);\n\n this.inputRef.value = digits;\n\n if (this.state === 'error') {\n this.state = undefined;\n }\n\n this.value = digits;\n this.tctInput.emit({ value: digits });\n\n if (digits.length === this.normalizedLength) {\n this.handleComplete(digits);\n }\n };\n\n handleSendCodeClick = () => {\n if (this.disabled) return;\n\n this.inputRef?.focus();\n this.state = undefined;\n this.tctSendCode.emit();\n };\n\n handleSubmitClick = () => {\n if (this.isVerifying || this.isSuccess) return;\n this.submit();\n };\n\n submit(value = this.value): void {\n this.state = 'verifying';\n this.tctSubmit.emit({ value });\n }\n\n // #endregion\n // #region Render Methods\n\n renderFields() {\n return Array.from({ length: this.normalizedLength }, (_, index) => {\n const char = this.value[index] || '';\n const isActive = this.hasFocus && index === this.activeSlotIndex;\n const hasValue = !!char;\n\n return [\n this.split && index === this.normalizedLength / 2 && (\n <span\n aria-hidden=\"true\"\n class=\"otp-separator\"\n >\n -\n </span>\n ),\n <div\n class={{\n 'otp-slot': true,\n 'is-active': isActive,\n 'has-value': hasValue,\n }}\n >\n {isActive && !hasValue ? (\n <span\n class=\"otp-caret\"\n aria-hidden=\"true\"\n />\n ) : this.masked && hasValue ? (\n <span class=\"otp-dot\" />\n ) : (\n <span class=\"otp-char\">{char}</span>\n )}\n </div>,\n ];\n });\n }\n\n renderHelperText() {\n if (!this.hasVisibleHelperText) return;\n return (\n <div\n class=\"helper-text\"\n id={this.helperTextId}\n >\n {this.localizedHelperText}\n </div>\n );\n }\n\n renderLabel() {\n if (!this.label) return;\n return (\n <div\n class=\"otp-label\"\n id={this.labelId}\n >\n {this.localizedLabel}\n </div>\n );\n }\n\n renderMessage() {\n if (this.state === 'error' && this.errorMessage) {\n return (\n <q2-message\n appearance=\"minimal\"\n class=\"otp-message\"\n id={this.messageId}\n type=\"error\"\n >\n {loc(this.errorMessage)}\n </q2-message>\n );\n }\n\n if (this.state === 'success' && this.successMessage) {\n return (\n <q2-message\n appearance=\"minimal\"\n class=\"otp-message\"\n id={this.messageId}\n type=\"success\"\n >\n {loc(this.successMessage)}\n </q2-message>\n );\n }\n }\n\n renderProcessingOverlay() {\n if (this.autoSubmit && this.isVerifying) {\n return (\n <div class=\"processing-overlay\">\n <q2-loading label={this.localizedProcessingLabel} />\n </div>\n );\n }\n }\n\n renderSendCodeButton() {\n if (!this.isAwaitingSendCode) return;\n\n return (\n <q2-btn\n block\n class=\"send-code-button\"\n disabled={this.disabled}\n intent=\"workflow-primary\"\n label={this.localizedSendCodeLabel}\n onClick={this.handleSendCodeClick}\n ref={el => (this.sendCodeRef = el)}\n />\n );\n }\n\n renderSubmitArea() {\n if (this.isSuccess) {\n return (\n <q2-btn\n block\n class=\"submit-button\"\n intent=\"neutral\"\n onClick={this.handleSubmitClick}\n >\n <q2-icon type=\"checkmark\" />\n {loc('Success')}\n </q2-btn>\n );\n }\n\n return (\n <q2-btn\n block\n class=\"submit-button\"\n disabled={this.disabled || !this.isComplete}\n intent=\"workflow-primary\"\n label={this.isVerifying ? this.localizedProcessingLabel : this.localizedSubmitLabel}\n loading={this.isVerifying}\n onClick={this.handleSubmitClick}\n />\n );\n }\n\n render() {\n return (\n <div\n aria-busy={this.isVerifying ? 'true' : undefined}\n aria-labelledby={this.label ? this.labelId : undefined}\n class={{\n 'otp-container': true,\n 'has-focus': this.hasFocus,\n 'is-masked': this.masked,\n 'send-code-pending': this.isAwaitingSendCode,\n 'state-error': this.state === 'error',\n 'state-success': this.state === 'success',\n 'state-verifying': this.isVerifying,\n [`length-${this.normalizedLength}`]: true,\n }}\n role=\"group\"\n >\n {this.renderSendCodeButton()}\n <div class={{ 'otp-content': true, 'send-code-hidden': this.isAwaitingSendCode }}>\n {this.renderLabel()}\n <div class=\"otp-control-group\">\n <div class=\"fields-shell\">\n <div class=\"fields-container\">\n <input\n aria-describedby={this.describedBy}\n aria-invalid={this.state === 'error' ? 'true' : 'false'}\n aria-label={this.inputAriaLabel}\n autocomplete=\"one-time-code\"\n autofocus={this.autoFocus}\n class=\"otp-hidden-input\"\n disabled={this.disabled || this.isVerifying || this.isSuccess}\n inputmode=\"numeric\"\n maxLength={this.normalizedLength}\n onBlur={this.handleFocusOut}\n onFocus={this.handleFocusIn}\n onInput={this.handleInputEvent}\n onKeyDown={this.handleKeyDown}\n onPaste={this.handlePaste}\n pattern=\"[0-9]*\"\n ref={el => (this.inputRef = el)}\n test-id=\"q2OtpInput\"\n type=\"text\"\n value={this.value}\n />\n {this.renderFields()}\n </div>\n {this.renderProcessingOverlay()}\n </div>\n {this.renderSubmitArea()}\n {this.renderMessage()}\n </div>\n {this.renderHelperText()}\n </div>\n </div>\n );\n }\n\n // #endregion\n}\n"]}
@@ -65,6 +65,28 @@ button {
65
65
  visibility: hidden;
66
66
  }
67
67
 
68
+ /**
69
+ * @prop --tct-pagination-color?: (<color>) Controls the optional text color of the pagination container.
70
+ * @prop --tct-pagination-font-size?: (<length-percentage>) Controls the optional font size of pagination text.
71
+ * @prop --tct-pagination-font-weight?: (<number>) Controls the optional font weight of pagination text.
72
+ * @prop --tct-pagination-height: (<length>) Controls the height of the pagination container and input wrapper.
73
+ * @prop --tct-pagination-column-gap: (<length-percentage>) Controls the column gap between pagination groups.
74
+ * @prop --tct-pagination-row-gap: (<length-percentage>) Controls the row gap between pagination groups in the stacked layout.
75
+ * @prop --tct-pagination-controls-gap: (<length-percentage>) Controls the gap between elements within the input-display controls.
76
+ * @prop --tct-pagination-btn-gap?: (<length-percentage>) Controls the optional gap between previous/next buttons in the button group.
77
+ * @prop --tct-pagination-btn-border?: (*) Controls the optional border shorthand of pagination buttons.
78
+ * @prop --tct-pagination-btn-border-radius?: (<length-percentage>) Controls the optional corner radius of pagination buttons.
79
+ * @prop --tct-pagination-btn-hover-background: (<color>) Controls the background color of pagination buttons on hover.
80
+ * @prop --tct-pagination-btn-icon-stroke-primary: (<color>) Controls the primary stroke color of pagination button icons.
81
+ * @prop --tct-pagination-btn-icon-stroke-secondary: (<color>) Controls the secondary stroke color of pagination button icons.
82
+ * @prop --tct-pagination-icon-color: (<color>) Controls the color of pagination icons (non-button icons).
83
+ * @prop --tct-pagination-icon-size: (<length>) Controls the size of pagination icons (non-button icons).
84
+ * @prop --tct-pagination-input-height: (<length>) Controls the height of the pagination page-number input.
85
+ * @prop --tct-pagination-input-width: (<length>) Controls the width of the pagination page-number input.
86
+ * @prop --tct-pagination-select-height: (<length>) Controls the height of the per-page select input.
87
+ * @prop --tct-pagination-perpage-width: (<length-percentage>) Controls the width of the per-page select.
88
+ * @prop --tct-pagination-perpage-min-width: (<length>) Controls the minimum width of the per-page select.
89
+ */
68
90
  :host {
69
91
  display: flex;
70
92
  width: 100%;
@@ -304,7 +304,7 @@ export class Q2Pagination {
304
304
  total,
305
305
  });
306
306
  }
307
- return (h("nav", { key: '0947c1d04f042cb5f096d74146cc700e7993f277', class: this.containerClasses.join(' '), ref: el => (this.containerElement = el), "aria-label": loc('tecton.element.pagination.title') }, h("div", { key: '6da46e6c76dffa66026057e53c7515bcf00576e0', class: "description", "test-id": "description" }, pagesOnly
307
+ return (h("nav", { key: '8763672430fe7db0f31881ddb56ae2e145db2e1d', class: this.containerClasses.join(' '), ref: el => (this.containerElement = el), "aria-label": loc('tecton.element.pagination.title') }, h("div", { key: 'ed956602d3b7d8aef4265f98e9c83224e3d9ddfb', class: "description", "test-id": "description" }, pagesOnly
308
308
  ? loc('tecton.element.pagination.pages', {
309
309
  current: page,
310
310
  total: totalPages,
@@ -313,10 +313,10 @@ export class Q2Pagination {
313
313
  range: currentRange,
314
314
  recordType: recordType.toLowerCase(),
315
315
  total: total.toLocaleString(),
316
- })), h("div", { key: '35963f235d6b549eedb8c9a443ecde053ecd8682', class: "controls" }, h("div", { key: '7016ffd2c95a76d34fd7ca112472a2a1067d7012', class: "btn-group" }, h("q2-btn", { key: 'a2a826b5ed84cedf548eaaf8aa2a8f95ad5085e6', ref: el => (this.firstPageBtn = el), label: loc('tecton.element.pagination.goToFirstPage'), disabled: disabled || onFirstPage, hidden: isFullViewHidden, onTctClick: () => this.handlePageChange(1), "test-id": "firstPageBtn", "hide-label": true }, h("q2-icon", { key: '7ebc8f748c55786954292287b4f593841a367e28', type: "chevron-double-left" })), h("q2-btn", { key: 'dfd853b3bee34fe837dc9c621829fa59c44bc81c', ref: el => (this.prevPageBtn = el), label: prevButtonLabel, disabled: disabled || onFirstPage, onTctClick: () => this.handlePageChange(page - 1), "test-id": "prevPageBtn", "hide-label": true }, h("q2-icon", { key: '519ef8ea441d04291b4393ba1ab03cd2198e88b3', type: "chevron-left" }))), h("div", { key: 'fd9d2f84689b857d134babd6d7d38de5f347488d', class: "input-display", hidden: isFullViewHidden }, h("span", { key: 'c8a48d708096badc6796a9caef840c807aa06db7', "aria-hidden": "true" }, loc('tecton.element.pagination.page')), h("div", { key: '1e9965fa782cdf724e261294ad22eb34305c1c69', class: "input-wrapper", onClick: () => this.inputField.dispatchEvent(new FocusEvent('focus')) }, h("q2-input", { key: 'e61dc0d32f806ffbee54736755f8c2c8fb3dc2a4', ref: el => (this.inputField = el), type: "number", value: `${page}`, min: 1, max: this.totalPages, hideLabel: true, optional: true, label: `${loc('tecton.element.pagination.page')} (${loc('tecton.element.pagination.ofPages', [totalPages.toLocaleString()])})`, onChange: event => event.stopImmediatePropagation(), onTctChange: event => {
316
+ })), h("div", { key: '97e385cf0f32b0f4aff62c501010eda743f731d4', class: "controls" }, h("div", { key: '5a21d4a3cd3d20fb7e533001537ba6533a135b7e', class: "btn-group" }, h("q2-btn", { key: 'fab99b68ddede211b84ea09ec2c0aa908b20c84f', ref: el => (this.firstPageBtn = el), label: loc('tecton.element.pagination.goToFirstPage'), disabled: disabled || onFirstPage, hidden: isFullViewHidden, onTctClick: () => this.handlePageChange(1), "test-id": "firstPageBtn", "hide-label": true }, h("q2-icon", { key: '78ddca1e5e40f1006ccc76d37a2acbef3a9b367e', type: "chevron-double-left" })), h("q2-btn", { key: 'ee99beff9982742339575be746768f0e0ba4b7dd', ref: el => (this.prevPageBtn = el), label: prevButtonLabel, disabled: disabled || onFirstPage, onTctClick: () => this.handlePageChange(page - 1), "test-id": "prevPageBtn", "hide-label": true }, h("q2-icon", { key: '2217e33508d661f4633aae1fc2a7606239c5cca3', type: "chevron-left" }))), h("div", { key: '0ef2e367f04e294dc5d55155d9cd1dd438b5d1e9', class: "input-display", hidden: isFullViewHidden }, h("span", { key: '94e65818ce517fe5b3039dc28321cf02f9bdd62a', "aria-hidden": "true" }, loc('tecton.element.pagination.page')), h("div", { key: '77b516a12af1e9473713088085481b41e7378dc6', class: "input-wrapper", onClick: () => this.inputField.dispatchEvent(new FocusEvent('focus')) }, h("q2-input", { key: 'f994ddf1fd6cbfe66bd7551f3d08d752177d079b', ref: el => (this.inputField = el), type: "number", value: `${page}`, min: 1, max: this.totalPages, hideLabel: true, optional: true, label: `${loc('tecton.element.pagination.page')} (${loc('tecton.element.pagination.ofPages', [totalPages.toLocaleString()])})`, onChange: event => event.stopImmediatePropagation(), onTctChange: event => {
317
317
  event.stopPropagation();
318
318
  this.handlePageChange(event.detail.value);
319
- }, "test-id": "pageInput", current: "page", disabled: disabled })), h("span", { key: 'ea7d626698765518e2e5dcd2118b20106413134d', "aria-hidden": "true" }, loc('tecton.element.pagination.ofPages', [totalPages.toLocaleString()]))), h("div", { key: 'eb93f6858f18c382d5ebe97007c7de6a3313e6cf', class: "btn-group" }, h("q2-btn", { key: '0ab9275fbfbc3514571f2fb308b1a15345816cf5', ref: el => (this.nextPageBtn = el), label: nextButtonLabel, disabled: disabled || onLastPage, onTctClick: () => this.handlePageChange(page + 1), "test-id": "nextPageBtn", "hide-label": true }, h("q2-icon", { key: '9968130c79eaaa564f1ca47ccc9e09a0d9ec564b', type: "chevron-right" })), h("q2-btn", { key: '08c3ebf15360ba2f1ccf56d2b12c458a2ebdb71e', ref: el => (this.lastPageBtn = el), label: "tecton.element.pagination.goToLastPage", disabled: disabled || onLastPage, hidden: isFullViewHidden, onTctClick: () => this.handlePageChange(totalPages), "test-id": "lastPageBtn", "hide-label": true }, h("q2-icon", { key: '83351e90f2645f9c2e8854ff46a684a9f43f339b', type: "chevron-double-right" })))), h("div", { key: 'dcdb653d221e0a92910a6ece5e234126e66c8410', class: "per-page", hidden: isFullViewHidden || !((_a = this.perPageIncrements) === null || _a === void 0 ? void 0 : _a.length) }, showPerPageSelect && this.renderPerPage())));
319
+ }, "test-id": "pageInput", current: "page", disabled: disabled })), h("span", { key: '5e2e425ef6f23d54014d1ac55cfc70dc637b8ac6', "aria-hidden": "true" }, loc('tecton.element.pagination.ofPages', [totalPages.toLocaleString()]))), h("div", { key: '0c786061e114793b5ea6a99dac53e3419a48867c', class: "btn-group" }, h("q2-btn", { key: '57bd0ac272a6d80000795511615ed198d0baf6ee', ref: el => (this.nextPageBtn = el), label: nextButtonLabel, disabled: disabled || onLastPage, onTctClick: () => this.handlePageChange(page + 1), "test-id": "nextPageBtn", "hide-label": true }, h("q2-icon", { key: '939f705dee78a26c664c82f783481316f5ff0813', type: "chevron-right" })), h("q2-btn", { key: '5e3c35772a15c571bad68f57f53494fe83af0959', ref: el => (this.lastPageBtn = el), label: "tecton.element.pagination.goToLastPage", disabled: disabled || onLastPage, hidden: isFullViewHidden, onTctClick: () => this.handlePageChange(totalPages), "test-id": "lastPageBtn", "hide-label": true }, h("q2-icon", { key: 'f9d2eb19cc20b1b2e68e8f0dfd0825a3a6f83263', type: "chevron-double-right" })))), h("div", { key: '983fb48580f634ff33f5ba6bec3af9304c67c99d', class: "per-page", hidden: isFullViewHidden || !((_a = this.perPageIncrements) === null || _a === void 0 ? void 0 : _a.length) }, showPerPageSelect && this.renderPerPage())));
320
320
  }
321
321
  static get is() { return "q2-pagination"; }
322
322
  static get encapsulation() { return "shadow"; }
@@ -0,0 +1,145 @@
1
+ import { expect } from "@playwright/test";
2
+ import { test } from "@stencil/playwright";
3
+ import { setupPage, THEMES } from "../../../utils/test/vr-helpers";
4
+ // q2-pagination renders ~700px wide; the default 600px viewport clips the
5
+ // per-page selector. Widen for every snapshot in this file.
6
+ const PAGINATION_VIEWPORT = { width: 900, height: 600 };
7
+ const widenAndSetup = async (page, html, theme) => {
8
+ await page.setViewportSize(PAGINATION_VIEWPORT);
9
+ await setupPage(page, html, { theme, setupLoc: true });
10
+ };
11
+ // Mid-page so prev/next are both enabled and exercise hover/focus styling.
12
+ const MID_PAGE = `record-type="Accounts" total="1000" page="50" per-page="10"`;
13
+ const FIRST_PAGE = `record-type="Accounts" total="1000" page="1" per-page="10"`;
14
+ const VARIANTS = [
15
+ {
16
+ name: 'default-autosize',
17
+ html: `<div style="width: 700px"><q2-pagination ${MID_PAGE} auto-size="true" per-page-increments="[10,20,50]"></q2-pagination></div>`,
18
+ },
19
+ {
20
+ name: 'default-no-select',
21
+ html: `<div style="width: 700px"><q2-pagination ${FIRST_PAGE} auto-size="true"></q2-pagination></div>`,
22
+ },
23
+ {
24
+ name: 'no-autosize',
25
+ html: `<div style="width: 700px"><q2-pagination ${MID_PAGE} auto-size="false" per-page-increments="[10,20,50]"></q2-pagination></div>`,
26
+ },
27
+ {
28
+ name: 'pages-only',
29
+ html: `<div style="width: 700px"><q2-pagination ${MID_PAGE} pages-only="true"></q2-pagination></div>`,
30
+ },
31
+ {
32
+ name: 'records-only',
33
+ html: `<div style="width: 700px"><q2-pagination ${FIRST_PAGE} records-only="true"></q2-pagination></div>`,
34
+ },
35
+ {
36
+ name: 'disabled',
37
+ html: `<div style="width: 700px"><q2-pagination ${MID_PAGE} auto-size="true" per-page-increments="[10,20,50]" disabled="true"></q2-pagination></div>`,
38
+ },
39
+ {
40
+ name: 'last-page',
41
+ html: `<div style="width: 700px"><q2-pagination record-type="Accounts" total="100" page="10" per-page="10" auto-size="true" per-page-increments="[10,20,50]"></q2-pagination></div>`,
42
+ },
43
+ {
44
+ name: 'stacked',
45
+ html: `<div style="width: 700px"><q2-pagination ${FIRST_PAGE} stacked per-page-increments="[10,20,50]"></q2-pagination></div>`,
46
+ },
47
+ {
48
+ name: 'alignment-center',
49
+ html: `<div style="width: 700px"><q2-pagination ${MID_PAGE} auto-size="true" per-page-increments="[10,20,50]" alignment="center"></q2-pagination></div>`,
50
+ },
51
+ {
52
+ name: 'alignment-left',
53
+ html: `<div style="width: 700px"><q2-pagination ${MID_PAGE} auto-size="true" per-page-increments="[10,20,50]" alignment="left"></q2-pagination></div>`,
54
+ },
55
+ ];
56
+ const restingCase = (variant, theme) => {
57
+ test(`q2-pagination--${variant.name}--resting — ${theme}`, async ({ page }) => {
58
+ await widenAndSetup(page, variant.html, theme);
59
+ await expect(page).toHaveScreenshot(`q2-pagination--${variant.name}--resting--${theme}.png`);
60
+ });
61
+ };
62
+ const DEFAULT_VARIANT = VARIANTS.find(v => v.name === 'default-autosize');
63
+ const focusInnerControl = async (page, testId) => {
64
+ await page.locator('q2-pagination').evaluate((el, id) => {
65
+ var _a, _b;
66
+ const qBtn = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector(`q2-btn[test-id="${id}"]`);
67
+ const native = (_b = qBtn === null || qBtn === void 0 ? void 0 : qBtn.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('button');
68
+ if (!native)
69
+ throw new Error(`${id} native button not found`);
70
+ native.focus();
71
+ }, testId);
72
+ };
73
+ const focusPageInput = async (page) => {
74
+ await page.locator('q2-pagination').evaluate((el) => {
75
+ var _a, _b;
76
+ const input = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('q2-input[test-id="pageInput"]');
77
+ const native = (_b = input === null || input === void 0 ? void 0 : input.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('input');
78
+ if (!native)
79
+ throw new Error('pageInput native input not found');
80
+ native.focus();
81
+ });
82
+ };
83
+ const hoverInnerControl = async (page, selector) => {
84
+ await page.locator('q2-pagination').locator(selector).hover();
85
+ };
86
+ const pageInputFocusCase = (variant, theme) => {
87
+ test(`q2-pagination--${variant.name}--page-input-focus — ${theme}`, async ({ page }) => {
88
+ await widenAndSetup(page, variant.html, theme);
89
+ await focusPageInput(page);
90
+ await expect(page).toHaveScreenshot(`q2-pagination--${variant.name}--page-input-focus--${theme}.png`);
91
+ });
92
+ };
93
+ const pageInputHoverCase = (variant, theme) => {
94
+ test(`q2-pagination--${variant.name}--page-input-hover — ${theme}`, async ({ page }) => {
95
+ await widenAndSetup(page, variant.html, theme);
96
+ await hoverInnerControl(page, 'q2-input[test-id="pageInput"]');
97
+ await expect(page).toHaveScreenshot(`q2-pagination--${variant.name}--page-input-hover--${theme}.png`);
98
+ });
99
+ };
100
+ const prevBtnHoverCase = (variant, theme) => {
101
+ test(`q2-pagination--${variant.name}--prev-btn-hover — ${theme}`, async ({ page }) => {
102
+ await widenAndSetup(page, variant.html, theme);
103
+ await hoverInnerControl(page, 'q2-btn[test-id="prevPageBtn"]');
104
+ await expect(page).toHaveScreenshot(`q2-pagination--${variant.name}--prev-btn-hover--${theme}.png`);
105
+ });
106
+ };
107
+ const prevBtnFocusCase = (variant, theme) => {
108
+ test(`q2-pagination--${variant.name}--prev-btn-focus — ${theme}`, async ({ page }) => {
109
+ await widenAndSetup(page, variant.html, theme);
110
+ await focusInnerControl(page, 'prevPageBtn');
111
+ await expect(page).toHaveScreenshot(`q2-pagination--${variant.name}--prev-btn-focus--${theme}.png`);
112
+ });
113
+ };
114
+ const nextBtnHoverCase = (variant, theme) => {
115
+ test(`q2-pagination--${variant.name}--next-btn-hover — ${theme}`, async ({ page }) => {
116
+ await widenAndSetup(page, variant.html, theme);
117
+ await hoverInnerControl(page, 'q2-btn[test-id="nextPageBtn"]');
118
+ await expect(page).toHaveScreenshot(`q2-pagination--${variant.name}--next-btn-hover--${theme}.png`);
119
+ });
120
+ };
121
+ const nextBtnFocusCase = (variant, theme) => {
122
+ test(`q2-pagination--${variant.name}--next-btn-focus — ${theme}`, async ({ page }) => {
123
+ await widenAndSetup(page, variant.html, theme);
124
+ await focusInnerControl(page, 'nextPageBtn');
125
+ await expect(page).toHaveScreenshot(`q2-pagination--${variant.name}--next-btn-focus--${theme}.png`);
126
+ });
127
+ };
128
+ test.describe('q2-pagination — variants × themes', () => {
129
+ for (const variant of VARIANTS) {
130
+ for (const theme of THEMES) {
131
+ restingCase(variant, theme);
132
+ }
133
+ }
134
+ if (DEFAULT_VARIANT) {
135
+ for (const theme of THEMES) {
136
+ pageInputFocusCase(DEFAULT_VARIANT, theme);
137
+ pageInputHoverCase(DEFAULT_VARIANT, theme);
138
+ prevBtnHoverCase(DEFAULT_VARIANT, theme);
139
+ prevBtnFocusCase(DEFAULT_VARIANT, theme);
140
+ nextBtnHoverCase(DEFAULT_VARIANT, theme);
141
+ nextBtnFocusCase(DEFAULT_VARIANT, theme);
142
+ }
143
+ }
144
+ });
145
+ //# sourceMappingURL=q2-pagination-test.vr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"q2-pagination-test.vr.js","sourceRoot":"","sources":["../../../../../src/components/q2-pagination/test/q2-pagination-test.vr.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect } from '@playwright/test';\nimport type { Page } from '@playwright/test';\nimport { test } from '@stencil/playwright';\nimport { setupPage, THEMES, Theme } from '../../../utils/test/vr-helpers';\n\n// q2-pagination renders ~700px wide; the default 600px viewport clips the\n// per-page selector. Widen for every snapshot in this file.\nconst PAGINATION_VIEWPORT = { width: 900, height: 600 };\n\nconst widenAndSetup = async (page: Page, html: string, theme: Theme) => {\n await page.setViewportSize(PAGINATION_VIEWPORT);\n await setupPage(page, html, { theme, setupLoc: true });\n};\n\ntype Variant = { name: string; html: string };\n\n// Mid-page so prev/next are both enabled and exercise hover/focus styling.\nconst MID_PAGE = `record-type=\"Accounts\" total=\"1000\" page=\"50\" per-page=\"10\"`;\nconst FIRST_PAGE = `record-type=\"Accounts\" total=\"1000\" page=\"1\" per-page=\"10\"`;\n\nconst VARIANTS: Variant[] = [\n {\n name: 'default-autosize',\n html: `<div style=\"width: 700px\"><q2-pagination ${MID_PAGE} auto-size=\"true\" per-page-increments=\"[10,20,50]\"></q2-pagination></div>`,\n },\n {\n name: 'default-no-select',\n html: `<div style=\"width: 700px\"><q2-pagination ${FIRST_PAGE} auto-size=\"true\"></q2-pagination></div>`,\n },\n {\n name: 'no-autosize',\n html: `<div style=\"width: 700px\"><q2-pagination ${MID_PAGE} auto-size=\"false\" per-page-increments=\"[10,20,50]\"></q2-pagination></div>`,\n },\n {\n name: 'pages-only',\n html: `<div style=\"width: 700px\"><q2-pagination ${MID_PAGE} pages-only=\"true\"></q2-pagination></div>`,\n },\n {\n name: 'records-only',\n html: `<div style=\"width: 700px\"><q2-pagination ${FIRST_PAGE} records-only=\"true\"></q2-pagination></div>`,\n },\n {\n name: 'disabled',\n html: `<div style=\"width: 700px\"><q2-pagination ${MID_PAGE} auto-size=\"true\" per-page-increments=\"[10,20,50]\" disabled=\"true\"></q2-pagination></div>`,\n },\n {\n name: 'last-page',\n html: `<div style=\"width: 700px\"><q2-pagination record-type=\"Accounts\" total=\"100\" page=\"10\" per-page=\"10\" auto-size=\"true\" per-page-increments=\"[10,20,50]\"></q2-pagination></div>`,\n },\n {\n name: 'stacked',\n html: `<div style=\"width: 700px\"><q2-pagination ${FIRST_PAGE} stacked per-page-increments=\"[10,20,50]\"></q2-pagination></div>`,\n },\n {\n name: 'alignment-center',\n html: `<div style=\"width: 700px\"><q2-pagination ${MID_PAGE} auto-size=\"true\" per-page-increments=\"[10,20,50]\" alignment=\"center\"></q2-pagination></div>`,\n },\n {\n name: 'alignment-left',\n html: `<div style=\"width: 700px\"><q2-pagination ${MID_PAGE} auto-size=\"true\" per-page-increments=\"[10,20,50]\" alignment=\"left\"></q2-pagination></div>`,\n },\n];\n\nconst restingCase = (variant: Variant, theme: Theme) => {\n test(`q2-pagination--${variant.name}--resting — ${theme}`, async ({ page }) => {\n await widenAndSetup(page, variant.html, theme);\n await expect(page).toHaveScreenshot(`q2-pagination--${variant.name}--resting--${theme}.png`);\n });\n};\n\nconst DEFAULT_VARIANT = VARIANTS.find(v => v.name === 'default-autosize');\n\nconst focusInnerControl = async (page: import('@playwright/test').Page, testId: string) => {\n await page.locator('q2-pagination').evaluate((el: HTMLElement, id: string) => {\n const qBtn = el.shadowRoot?.querySelector<HTMLElement>(`q2-btn[test-id=\"${id}\"]`);\n const native = qBtn?.shadowRoot?.querySelector<HTMLButtonElement>('button');\n if (!native) throw new Error(`${id} native button not found`);\n native.focus();\n }, testId);\n};\n\nconst focusPageInput = async (page: import('@playwright/test').Page) => {\n await page.locator('q2-pagination').evaluate((el: HTMLElement) => {\n const input = el.shadowRoot?.querySelector<HTMLElement>('q2-input[test-id=\"pageInput\"]');\n const native = input?.shadowRoot?.querySelector<HTMLInputElement>('input');\n if (!native) throw new Error('pageInput native input not found');\n native.focus();\n });\n};\n\nconst hoverInnerControl = async (page: import('@playwright/test').Page, selector: string) => {\n await page.locator('q2-pagination').locator(selector).hover();\n};\n\nconst pageInputFocusCase = (variant: Variant, theme: Theme) => {\n test(`q2-pagination--${variant.name}--page-input-focus — ${theme}`, async ({ page }) => {\n await widenAndSetup(page, variant.html, theme);\n await focusPageInput(page);\n await expect(page).toHaveScreenshot(`q2-pagination--${variant.name}--page-input-focus--${theme}.png`);\n });\n};\n\nconst pageInputHoverCase = (variant: Variant, theme: Theme) => {\n test(`q2-pagination--${variant.name}--page-input-hover — ${theme}`, async ({ page }) => {\n await widenAndSetup(page, variant.html, theme);\n await hoverInnerControl(page, 'q2-input[test-id=\"pageInput\"]');\n await expect(page).toHaveScreenshot(`q2-pagination--${variant.name}--page-input-hover--${theme}.png`);\n });\n};\n\nconst prevBtnHoverCase = (variant: Variant, theme: Theme) => {\n test(`q2-pagination--${variant.name}--prev-btn-hover — ${theme}`, async ({ page }) => {\n await widenAndSetup(page, variant.html, theme);\n await hoverInnerControl(page, 'q2-btn[test-id=\"prevPageBtn\"]');\n await expect(page).toHaveScreenshot(`q2-pagination--${variant.name}--prev-btn-hover--${theme}.png`);\n });\n};\n\nconst prevBtnFocusCase = (variant: Variant, theme: Theme) => {\n test(`q2-pagination--${variant.name}--prev-btn-focus — ${theme}`, async ({ page }) => {\n await widenAndSetup(page, variant.html, theme);\n await focusInnerControl(page, 'prevPageBtn');\n await expect(page).toHaveScreenshot(`q2-pagination--${variant.name}--prev-btn-focus--${theme}.png`);\n });\n};\n\nconst nextBtnHoverCase = (variant: Variant, theme: Theme) => {\n test(`q2-pagination--${variant.name}--next-btn-hover — ${theme}`, async ({ page }) => {\n await widenAndSetup(page, variant.html, theme);\n await hoverInnerControl(page, 'q2-btn[test-id=\"nextPageBtn\"]');\n await expect(page).toHaveScreenshot(`q2-pagination--${variant.name}--next-btn-hover--${theme}.png`);\n });\n};\n\nconst nextBtnFocusCase = (variant: Variant, theme: Theme) => {\n test(`q2-pagination--${variant.name}--next-btn-focus — ${theme}`, async ({ page }) => {\n await widenAndSetup(page, variant.html, theme);\n await focusInnerControl(page, 'nextPageBtn');\n await expect(page).toHaveScreenshot(`q2-pagination--${variant.name}--next-btn-focus--${theme}.png`);\n });\n};\n\ntest.describe('q2-pagination — variants × themes', () => {\n for (const variant of VARIANTS) {\n for (const theme of THEMES) {\n restingCase(variant, theme);\n }\n }\n if (DEFAULT_VARIANT) {\n for (const theme of THEMES) {\n pageInputFocusCase(DEFAULT_VARIANT, theme);\n pageInputHoverCase(DEFAULT_VARIANT, theme);\n prevBtnHoverCase(DEFAULT_VARIANT, theme);\n prevBtnFocusCase(DEFAULT_VARIANT, theme);\n nextBtnHoverCase(DEFAULT_VARIANT, theme);\n nextBtnFocusCase(DEFAULT_VARIANT, theme);\n }\n }\n});\n"]}
@@ -65,6 +65,59 @@ button {
65
65
  visibility: hidden;
66
66
  }
67
67
 
68
+ /**
69
+ * @prop --tct-pill-margin: (<length-percentage>) Controls the trailing inline margin between sibling pills.
70
+ * @prop --tct-pill-min-height: (<length>) Controls the minimum height of the pill (and its popover container).
71
+ * @prop --tct-pill-max-width: (<length-percentage>) Controls the maximum width of the pill label when options are present.
72
+ * @prop --tct-pill-disabled-opacity: (<number>) Controls the opacity of the pill when disabled.
73
+ * @prop --tct-pill-btn-height: (<length>) Controls the height of the pill button.
74
+ * @prop --tct-pill-btn-padding-inline: (<length-percentage>+) Controls the inline padding of the pill button.
75
+ * @prop --tct-pill-btn-border-radius: (<length-percentage>) Controls the corner radius of the pill button.
76
+ * @prop --tct-pill-btn-border-width: (<length>+) Controls the border width of the pill button.
77
+ * @prop --tct-pill-btn-border-color: (<color>) Controls the border color of the pill button in the default state.
78
+ * @prop --tct-pill-btn-background: (<color>) Controls the background color of the pill button in the default state.
79
+ * @prop --tct-pill-btn-box-shadow?: (*) Controls the optional box shadow of the pill button in the default state.
80
+ * @prop --tct-pill-btn-backdrop-filter?: (*) Controls the optional backdrop-filter of the pill button in the default state.
81
+ * @prop --tct-pill-btn-color: (<color>) Controls the text color of the pill button in the default state.
82
+ * @prop --tct-pill-btn-font-size: (<length-percentage>) Controls the font size of the pill button.
83
+ * @prop --tct-pill-btn-font-weight: (<number>) Controls the font weight of the pill button.
84
+ * @prop --tct-pill-btn-tween: (*) Controls the transition timing of the pill button's interactive state changes.
85
+ * @prop --tct-pill-btn-focus-box-shadow: (*) Controls the box shadow of the pill button when focused.
86
+ * @prop --tct-pill-btn-focus-visible-box-shadow: (*) Controls the box shadow of the pill button when focused via keyboard.
87
+ * @prop --tct-pill-hover-btn-background: (<color>) Controls the background color of the pill button on hover.
88
+ * @prop --tct-pill-hover-close-btn-background: (<color>) Controls the background color of the close button on hover when the pill is active.
89
+ * @prop --tct-pill-hover-close-btn-border-color: (<color>) Controls the border color of the close button on hover when the pill is active.
90
+ * @prop --tct-pill-active-btn-background: (<color>) Controls the background color of the pill button when active in the default theme.
91
+ * @prop --tct-pill-active-btn-color: (<color>) Controls the text color of the pill button when active.
92
+ * @prop --tct-pill-active-btn-border-color: (<color>) Controls the border color of the pill button when active in the default theme.
93
+ * @prop --tct-pill-active-btn-box-shadow?: (*) Controls the optional box shadow of the pill button when active.
94
+ * @prop --tct-pill-active-btn-backdrop-filter?: (*) Controls the optional backdrop-filter of the pill button when active.
95
+ * @prop --tct-pill-icon-gap: (<length-percentage>) Controls the gap between the pill label and trailing icon.
96
+ * @prop --tct-pill-icon-size: (<length>) Controls the size of the pill's trailing icon.
97
+ * @prop --tct-pill-icon-stroke: (<color>) Controls the stroke color of the pill's trailing icon.
98
+ * @prop --tct-pill-icon-stroke-width?: (<number>) Controls the optional stroke width of the pill's trailing icon.
99
+ * @prop --tct-pill-primary-active-background: (<color>) Controls the background color of the pill button when active and theme is primary.
100
+ * @prop --tct-pill-primary-active-font-color: (<color>) Controls the text color of the pill button when active and theme is primary.
101
+ * @prop --tct-pill-primary-active-border-color: (<color>) Controls the border color of the pill button when active and theme is primary.
102
+ * @prop --tct-pill-primary-active-hover-background: (<color>) Controls the background color of the pill button when active and theme is primary, on hover.
103
+ * @prop --tct-pill-primary-active-hover-border-color: (<color>) Controls the border color of the pill button when active and theme is primary, on hover.
104
+ * @prop --tct-pill-primary-active-btn-box-shadow?: (*) Controls the optional box shadow of the pill button when active and theme is primary.
105
+ * @prop --tct-pill-primary-active-backdrop-filter?: (*) Controls the optional backdrop-filter of the pill button when active and theme is primary.
106
+ * @prop --tct-pill-secondary-active-background: (<color>) Controls the background color of the pill button when active and theme is secondary.
107
+ * @prop --tct-pill-secondary-active-font-color: (<color>) Controls the text color of the pill button when active and theme is secondary.
108
+ * @prop --tct-pill-secondary-active-border-color: (<color>) Controls the border color of the pill button when active and theme is secondary.
109
+ * @prop --tct-pill-secondary-active-hover-background: (<color>) Controls the background color of the pill button when active and theme is secondary, on hover.
110
+ * @prop --tct-pill-secondary-active-hover-border-color: (<color>) Controls the border color of the pill button when active and theme is secondary, on hover.
111
+ * @prop --tct-pill-secondary-active-box-shadow?: (*) Controls the optional box shadow of the pill button when active and theme is secondary.
112
+ * @prop --tct-pill-secondary-active-backdrop-filter?: (*) Controls the optional backdrop-filter of the pill button when active and theme is secondary.
113
+ * @prop --tct-pill-tertiary-active-background: (<color>) Controls the background color of the pill button when active and theme is tertiary.
114
+ * @prop --tct-pill-tertiary-active-font-color: (<color>) Controls the text color of the pill button when active and theme is tertiary.
115
+ * @prop --tct-pill-tertiary-active-border-color: (<color>) Controls the border color of the pill button when active and theme is tertiary.
116
+ * @prop --tct-pill-tertiary-active-hover-background: (<color>) Controls the background color of the pill button when active and theme is tertiary, on hover.
117
+ * @prop --tct-pill-tertiary-active-hover-border-color: (<color>) Controls the border color of the pill button when active and theme is tertiary, on hover.
118
+ * @prop --tct-pill-tertiary-active-box-shadow?: (*) Controls the optional box shadow of the pill button when active and theme is tertiary.
119
+ * @prop --tct-pill-tertiary-active-backdrop-filter?: (*) Controls the optional backdrop-filter of the pill button when active and theme is tertiary.
120
+ */
68
121
  :host {
69
122
  display: inline-block;
70
123
  position: relative;
@@ -333,19 +333,24 @@ export class Q2Pill {
333
333
  // #endregion
334
334
  // #region Local Methods
335
335
  get buttonContent() {
336
- const { label, selectedOptions, selectedOptionElements, optionCount } = this;
337
- if (!optionCount || selectedOptionElements.length === 0)
338
- return loc(label);
339
- else if (selectedOptionElements.length === 1)
340
- return `${loc(selectedOptionElements[0].display)}`;
341
- return loc('tecton.element.pill.activeCount', { count: selectedOptions.length });
342
- }
343
- get truncatedButtonContent() {
344
- const { maxLength, buttonContent } = this;
345
- if (maxLength && buttonContent.length > maxLength)
346
- return `${buttonContent.substring(0, maxLength)}…`;
347
- else
348
- return buttonContent;
336
+ const { label, selectedOptionElements, optionCount, maxLength } = this;
337
+ const count = selectedOptionElements.length;
338
+ let text;
339
+ if (!optionCount || count === 0) {
340
+ text = loc(label);
341
+ }
342
+ else if (count === 1) {
343
+ text = loc(selectedOptionElements[0].display);
344
+ }
345
+ else {
346
+ const firstDisplay = loc(selectedOptionElements[0].display);
347
+ const suffix = ` +${count - 1}`;
348
+ return {
349
+ text: `${firstDisplay}${suffix}`,
350
+ truncatedText: `${this._truncate(firstDisplay, maxLength)}${suffix}`,
351
+ };
352
+ }
353
+ return { text, truncatedText: this._truncate(text, maxLength) };
349
354
  }
350
355
  _togglePopover() {
351
356
  const { primaryBtn } = this;
@@ -353,6 +358,9 @@ export class Q2Pill {
353
358
  primaryBtn === null || primaryBtn === void 0 ? void 0 : primaryBtn.focus();
354
359
  primaryBtn.dispatchEvent(new FocusEvent('focus'));
355
360
  }
361
+ _truncate(text = '', maxLength = 0) {
362
+ return maxLength && text.length > maxLength ? `${text.substring(0, maxLength)}…` : text;
363
+ }
356
364
  // #endregion
357
365
  // #region Render Methods
358
366
  renderHiddenElement() {
@@ -367,12 +375,13 @@ export class Q2Pill {
367
375
  }
368
376
  render() {
369
377
  const { optionCount, active, open } = this;
378
+ const { text, truncatedText } = this.buttonContent;
370
379
  const wrapperClassNames = ['btn-wrapper'];
371
380
  if (optionCount || active)
372
381
  wrapperClassNames.push('has-icon');
373
382
  if (optionCount)
374
383
  wrapperClassNames.push('has-options');
375
- return (h("click-elsewhere", { key: '1f6a917d21078d5007387acd85fb7c03736db6ae', onChange: this.onClickElsewhere }, h("div", { key: '346b5d9651e27827e304377f9009edd50a141102', class: wrapperClassNames.join(' ') }, h("div", { key: 'c261c06b88781ea9af6f2b0f0a335476c0c7e89a', class: "btn-height-wrapper", ref: el => (this.primaryBtnWrapper = el), onClick: this.handleWrapperClick, tabIndex: -1 }, h("button", { key: 'b717af900dc54f65de00aef3ee59dade83f6da21', class: "btn-primary", "test-id": "btn-control", type: "button", role: (optionCount && 'combobox') || undefined, ref: el => (this.primaryBtn = el), onClick: this.handleClick, onKeyDown: this.handleKeydown, onFocusout: this.handleFocusOut, disabled: this.disabled, "aria-roledescription": !optionCount && 'filter', "aria-controls": (optionCount && 'option-list') || undefined, "aria-expanded": (optionCount && `${!!open}`) || undefined, "aria-label": `${this.buttonContent}${!optionCount && active ? ` ${loc('tecton.element.pill.active')}` : ''}`, "aria-describedby": (optionCount && 'option-description') || undefined }, this.truncatedButtonContent)), this.renderIcon(), !!optionCount && this.renderHiddenElement()), this.optionCount > 0 && (h("q2-popover", { key: '4d415fbec7b43fe7f2b8abff0e3a02467028cdb4', ref: el => (this.popoverElement = el), controlElement: this.primaryBtn, open: this.open, "max-height": this.popoverMaxHeight, minHeight: this.popoverMinHeight, direction: this.popoverDirection, align: this.popoverAlignment, onFocusout: this.handleFocusOut }, h("div", { key: '75e71787bad82eb4a5682a2315d7f5dcbd3c3b82', class: "popover-content" }, h("div", { key: '5de5d4a2f606e4b936ee46fda3aded8b09e17854', ref: el => (this.popoverTopContainer = el), class: "popover-top-container", tabindex: "-1", hidden: !this.hasPopoverTop, onKeyDown: this.handleKeydown }, h("slot", { key: '6d971654eb266bd5a3c37e04cde81dd7d6876ca5', name: "popover-top" })), h("q2-option-list", { key: '670e99d6859d673e781eba1e6eee87ee8ac728b4', type: "listbox", ref: el => (this.optionList = el), id: "option-list", onChange: this.handleChange, multiple: this.multiple, selectedOptions: this.selectedOptions, onReady: () => this.updateSelectedOptionElements(), onPopoverState: this.onPopoverState, label: loc('tecton.element.optionList.label', [this.optionListLabel]) }, h("slot", { key: 'fde147d6d4c6deca9952ebdd5f022f0d348bf75e' })), h("div", { key: 'f8704bee883058f635b936fe03e888eaa9b3ce35', ref: el => (this.popoverBottomContainer = el), class: "popover-bottom-container", tabindex: "-1", hidden: !this.hasPopoverBottom, onKeyDown: this.handleKeydown }, h("slot", { key: '6761a2e76fbba5410a974eb0a24110c0c135b84e', name: "popover-bottom" })))))));
384
+ return (h("click-elsewhere", { key: '0af6d3ca759838e5ef540ed2746a10907c1eb31d', onChange: this.onClickElsewhere }, h("div", { key: '79345714aa98cfaabb6e7e00b0ac1eb66085144a', class: wrapperClassNames.join(' ') }, h("div", { key: '95bb0453d6871d829292caf5143f1c35ff5e4142', class: "btn-height-wrapper", ref: el => (this.primaryBtnWrapper = el), onClick: this.handleWrapperClick, tabIndex: -1 }, h("button", { key: 'b640d20887ef7e45345d266b69e428951c8c02ac', class: "btn-primary", "test-id": "btn-control", type: "button", role: (optionCount && 'combobox') || undefined, ref: el => (this.primaryBtn = el), onClick: this.handleClick, onKeyDown: this.handleKeydown, onFocusout: this.handleFocusOut, disabled: this.disabled, "aria-roledescription": !optionCount && 'filter', "aria-controls": (optionCount && 'option-list') || undefined, "aria-expanded": (optionCount && `${!!open}`) || undefined, "aria-label": text, "aria-pressed": !optionCount ? `${!!active}` : undefined, "aria-describedby": (optionCount && 'option-description') || undefined }, truncatedText)), this.renderIcon(), !!optionCount && this.renderHiddenElement()), this.optionCount > 0 && (h("q2-popover", { key: 'a9d86ad663999c5008427746ebadd3319f9d8368', ref: el => (this.popoverElement = el), controlElement: this.primaryBtn, open: this.open, "max-height": this.popoverMaxHeight, minHeight: this.popoverMinHeight, direction: this.popoverDirection, align: this.popoverAlignment, onFocusout: this.handleFocusOut }, h("div", { key: '516e72df5497552a4c8f863d9dfeb60c93a56ef2', class: "popover-content" }, h("div", { key: 'e2973903570f235f5814855924487d93312a5ea0', ref: el => (this.popoverTopContainer = el), class: "popover-top-container", tabindex: "-1", hidden: !this.hasPopoverTop, onKeyDown: this.handleKeydown }, h("slot", { key: 'c8184daffd49fbb8021e935801e16c9362d0153c', name: "popover-top" })), h("q2-option-list", { key: '7d0645106f16399fa90345ed7ff13d1ce8d7537d', type: "listbox", ref: el => (this.optionList = el), id: "option-list", onChange: this.handleChange, multiple: this.multiple, selectedOptions: this.selectedOptions, onReady: () => this.updateSelectedOptionElements(), onPopoverState: this.onPopoverState, label: loc('tecton.element.optionList.label', [this.optionListLabel]) }, h("slot", { key: '35525f5931d910a9a899c839b82ae82e1951ce60' })), h("div", { key: '602c7fdf35b20085d45698f1db471cb4c0883e26', ref: el => (this.popoverBottomContainer = el), class: "popover-bottom-container", tabindex: "-1", hidden: !this.hasPopoverBottom, onKeyDown: this.handleKeydown }, h("slot", { key: 'be13e0e756eb9aa9bf961b7bfc375aabcfc2804a', name: "popover-bottom" })))))));
376
385
  }
377
386
  static get is() { return "q2-pill"; }
378
387
  static get encapsulation() { return "shadow"; }