q2-tecton-elements 1.51.1 → 1.51.3

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 (469) hide show
  1. package/dist/cjs/click-elsewhere_2.cjs.entry.js +66 -71
  2. package/dist/cjs/click-elsewhere_2.cjs.entry.js.map +1 -1
  3. package/dist/cjs/{index-9aa4a776.js → index-c4a56631.js} +1 -21
  4. package/dist/cjs/index-c4a56631.js.map +1 -0
  5. package/dist/cjs/loader.cjs.js +1 -1
  6. package/dist/cjs/q2-action-group.cjs.entry.js +1 -1
  7. package/dist/cjs/q2-action-sheet.cjs.entry.js +2 -2
  8. package/dist/cjs/q2-avatar.cjs.entry.js +1 -1
  9. package/dist/cjs/q2-badge_7.cjs.entry.js +12 -4
  10. package/dist/cjs/q2-badge_7.cjs.entry.js.map +1 -1
  11. package/dist/cjs/q2-calendar.cjs.entry.js +1 -1
  12. package/dist/cjs/q2-card.cjs.entry.js +1 -1
  13. package/dist/cjs/q2-carousel-pane.cjs.entry.js +3 -3
  14. package/dist/cjs/q2-carousel.cjs.entry.js +1 -1
  15. package/dist/cjs/q2-chart-area.cjs.entry.js +2 -2
  16. package/dist/cjs/q2-chart-bar.cjs.entry.js +2 -2
  17. package/dist/cjs/q2-chart-donut.cjs.entry.js +2 -2
  18. package/dist/cjs/q2-checkbox-group.cjs.entry.js +1 -1
  19. package/dist/cjs/q2-checkbox.cjs.entry.js +1 -1
  20. package/dist/cjs/q2-currency.cjs.entry.js +1 -1
  21. package/dist/cjs/q2-data-table.cjs.entry.js +1 -1
  22. package/dist/cjs/q2-detail.cjs.entry.js +2 -2
  23. package/dist/cjs/q2-dropdown-item.cjs.entry.js +1 -1
  24. package/dist/cjs/q2-dropdown.cjs.entry.js +10 -12
  25. package/dist/cjs/q2-dropdown.cjs.entry.js.map +1 -1
  26. package/dist/cjs/q2-editable-field.cjs.entry.js +7 -8
  27. package/dist/cjs/q2-editable-field.cjs.entry.js.map +1 -1
  28. package/dist/cjs/q2-formatted-text.cjs.entry.js +1 -1
  29. package/dist/cjs/q2-item.cjs.entry.js +2 -2
  30. package/dist/cjs/q2-legend.cjs.entry.js +1 -1
  31. package/dist/cjs/q2-list.cjs.entry.js +2 -2
  32. package/dist/cjs/q2-loc.cjs.entry.js +2 -2
  33. package/dist/cjs/q2-message.cjs.entry.js +2 -2
  34. package/dist/cjs/q2-month-picker.cjs.entry.js +3 -3
  35. package/dist/cjs/q2-optgroup.cjs.entry.js +2 -2
  36. package/dist/cjs/q2-option-list.cjs.entry.js +1 -1
  37. package/dist/cjs/q2-option.cjs.entry.js +1 -1
  38. package/dist/cjs/q2-pagination.cjs.entry.js +3 -3
  39. package/dist/cjs/q2-pill.cjs.entry.js +2 -2
  40. package/dist/cjs/q2-radio-group.cjs.entry.js +1 -1
  41. package/dist/cjs/q2-radio.cjs.entry.js +1 -1
  42. package/dist/cjs/q2-relative-time.cjs.entry.js +2 -2
  43. package/dist/cjs/q2-resize-observer.cjs.entry.js +1 -1
  44. package/dist/cjs/q2-section.cjs.entry.js +3 -3
  45. package/dist/cjs/q2-select.cjs.entry.js +93 -16
  46. package/dist/cjs/q2-select.cjs.entry.js.map +1 -1
  47. package/dist/cjs/q2-stepper-pane.cjs.entry.js +1 -1
  48. package/dist/cjs/q2-stepper-vertical.cjs.entry.js +2 -2
  49. package/dist/cjs/q2-stepper.cjs.entry.js +2 -2
  50. package/dist/cjs/q2-tag.cjs.entry.js +2 -2
  51. package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
  52. package/dist/cjs/q2-textarea.cjs.entry.js +3 -2
  53. package/dist/cjs/q2-textarea.cjs.entry.js.map +1 -1
  54. package/dist/cjs/q2-tooltip.cjs.entry.js +1 -1
  55. package/dist/cjs/tecton-tab-pane.cjs.entry.js +2 -2
  56. package/dist/collection/components/click-elsewhere/click-elsewhere.js.map +1 -1
  57. package/dist/collection/components/click-elsewhere/test/click-elsewhere-test.e2e.js.map +1 -1
  58. package/dist/collection/components/q2-action-group/q2-action-group.js +1 -1
  59. package/dist/collection/components/q2-action-group/q2-action-group.js.map +1 -1
  60. package/dist/collection/components/q2-action-group/test/q2-action-group.e2e.js.map +1 -1
  61. package/dist/collection/components/q2-action-group/test/q2-action-group.spec.js.map +1 -1
  62. package/dist/collection/components/q2-action-sheet/q2-action-sheet.js +1 -1
  63. package/dist/collection/components/q2-action-sheet/q2-action-sheet.js.map +1 -1
  64. package/dist/collection/components/q2-action-sheet/test/q2-action-sheet-test.e2e.js.map +1 -1
  65. package/dist/collection/components/q2-avatar/q2-avatar.js +1 -1
  66. package/dist/collection/components/q2-avatar/q2-avatar.js.map +1 -1
  67. package/dist/collection/components/q2-avatar/test/q2-avatar-test.e2e.js.map +1 -1
  68. package/dist/collection/components/q2-badge/q2-badge.js.map +1 -1
  69. package/dist/collection/components/q2-badge/test/q2-badge-test.e2e.js.map +1 -1
  70. package/dist/collection/components/q2-btn/q2-btn.js +4 -0
  71. package/dist/collection/components/q2-btn/q2-btn.js.map +1 -1
  72. package/dist/collection/components/q2-btn/test/q2-btn-test.e2e.js.map +1 -1
  73. package/dist/collection/components/q2-calendar/q2-calendar-helpers.js.map +1 -1
  74. package/dist/collection/components/q2-calendar/q2-calendar-types.js.map +1 -1
  75. package/dist/collection/components/q2-calendar/q2-calendar-validation.js.map +1 -1
  76. package/dist/collection/components/q2-calendar/q2-calendar.js.map +1 -1
  77. package/dist/collection/components/q2-calendar/q2-month-picker.js +2 -2
  78. package/dist/collection/components/q2-calendar/q2-month-picker.js.map +1 -1
  79. package/dist/collection/components/q2-calendar/test/helpers-test.e2e.js.map +1 -1
  80. package/dist/collection/components/q2-calendar/test/q2-calendar-month-picker-test.e2e.js.map +1 -1
  81. package/dist/collection/components/q2-calendar/test/q2-calendar-test.e2e.js +2 -2
  82. package/dist/collection/components/q2-calendar/test/q2-calendar-test.e2e.js.map +1 -1
  83. package/dist/collection/components/q2-calendar/test/validation-test.e2e.js.map +1 -1
  84. package/dist/collection/components/q2-card/q2-card.js.map +1 -1
  85. package/dist/collection/components/q2-card/test/q2-card-test.e2e.js.map +1 -1
  86. package/dist/collection/components/q2-carousel/q2-carousel.js.map +1 -1
  87. package/dist/collection/components/q2-carousel/test/q2-carousel-test.e2e.js.map +1 -1
  88. package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.js +2 -2
  89. package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.js.map +1 -1
  90. package/dist/collection/components/q2-carousel-pane/test/q2-carousel-pane-test.e2e.js.map +1 -1
  91. package/dist/collection/components/q2-carousel-pane/test/q2-carousel-pane-test.spec.js.map +1 -1
  92. package/dist/collection/components/q2-chart-area/q2-chart-area.js +1 -1
  93. package/dist/collection/components/q2-chart-area/q2-chart-area.js.map +1 -1
  94. package/dist/collection/components/q2-chart-area/test/q2-chart-area-test.e2e.js.map +1 -1
  95. package/dist/collection/components/q2-chart-bar/q2-chart-bar.js +1 -1
  96. package/dist/collection/components/q2-chart-bar/q2-chart-bar.js.map +1 -1
  97. package/dist/collection/components/q2-chart-bar/test/q2-chart-bar-test.e2e.js.map +1 -1
  98. package/dist/collection/components/q2-chart-donut/q2-chart-donut.js +1 -1
  99. package/dist/collection/components/q2-chart-donut/q2-chart-donut.js.map +1 -1
  100. package/dist/collection/components/q2-chart-donut/test/q2-chart-donut-test.e2e.js.map +1 -1
  101. package/dist/collection/components/q2-checkbox/q2-checkbox.js.map +1 -1
  102. package/dist/collection/components/q2-checkbox/test/q2-checkbox-test.e2e.js.map +1 -1
  103. package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.js.map +1 -1
  104. package/dist/collection/components/q2-checkbox-group/test/q2-checkbox-group-test.e2e.js.map +1 -1
  105. package/dist/collection/components/q2-currency/q2-currency.js +1 -1
  106. package/dist/collection/components/q2-currency/q2-currency.js.map +1 -1
  107. package/dist/collection/components/q2-currency/test/q2-currency-test.e2e.js.map +1 -1
  108. package/dist/collection/components/q2-data-table/q2-data-table.js.map +1 -1
  109. package/dist/collection/components/q2-data-table/test/q2-data-table-test.e2e.js.map +1 -1
  110. package/dist/collection/components/q2-detail/q2-detail.js +1 -1
  111. package/dist/collection/components/q2-detail/q2-detail.js.map +1 -1
  112. package/dist/collection/components/q2-detail/test/q2-detail-test.e2e.js.map +1 -1
  113. package/dist/collection/components/q2-dropdown/q2-dropdown.js +9 -11
  114. package/dist/collection/components/q2-dropdown/q2-dropdown.js.map +1 -1
  115. package/dist/collection/components/q2-dropdown/test/q2-dropdown-test.e2e.js +5 -17
  116. package/dist/collection/components/q2-dropdown/test/q2-dropdown-test.e2e.js.map +1 -1
  117. package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.js.map +1 -1
  118. package/dist/collection/components/q2-dropdown-item/test/q2-dropdown-item-test.e2e.js.map +1 -1
  119. package/dist/collection/components/q2-editable-field/q2-editable-field.js +12 -7
  120. package/dist/collection/components/q2-editable-field/q2-editable-field.js.map +1 -1
  121. package/dist/collection/components/q2-editable-field/test/q2-editable-field-test.e2e.js.map +1 -1
  122. package/dist/collection/components/q2-formatted-text/q2-formatted-text.js +1 -1
  123. package/dist/collection/components/q2-formatted-text/q2-formatted-text.js.map +1 -1
  124. package/dist/collection/components/q2-formatted-text/test/q2-formatted-text-test.e2e.js.map +1 -1
  125. package/dist/collection/components/q2-icon/q2-icon-types.js.map +1 -1
  126. package/dist/collection/components/q2-icon/q2-icon.js +4 -0
  127. package/dist/collection/components/q2-icon/q2-icon.js.map +1 -1
  128. package/dist/collection/components/q2-icon/test/q2-icon-test.e2e.js.map +1 -1
  129. package/dist/collection/components/q2-input/formatting/alpha.js.map +1 -1
  130. package/dist/collection/components/q2-input/formatting/alphanumeric.js.map +1 -1
  131. package/dist/collection/components/q2-input/formatting/credit-card.js.map +1 -1
  132. package/dist/collection/components/q2-input/formatting/credit-card.spec.js.map +1 -1
  133. package/dist/collection/components/q2-input/formatting/currency.js.map +1 -1
  134. package/dist/collection/components/q2-input/formatting/date.js.map +1 -1
  135. package/dist/collection/components/q2-input/formatting/generic.js.map +1 -1
  136. package/dist/collection/components/q2-input/formatting/number.js.map +1 -1
  137. package/dist/collection/components/q2-input/formatting/numeric.js.map +1 -1
  138. package/dist/collection/components/q2-input/formatting/phone.js.map +1 -1
  139. package/dist/collection/components/q2-input/formatting/postal.js.map +1 -1
  140. package/dist/collection/components/q2-input/formatting/ssn.js.map +1 -1
  141. package/dist/collection/components/q2-input/formatting/tin.js.map +1 -1
  142. package/dist/collection/components/q2-input/q2-input-types.js.map +1 -1
  143. package/dist/collection/components/q2-input/q2-input.js +1 -1
  144. package/dist/collection/components/q2-input/q2-input.js.map +1 -1
  145. package/dist/collection/components/q2-input/test/q2-input-credit-card-test.e2e.js.map +1 -1
  146. package/dist/collection/components/q2-input/test/q2-input-test.e2e.js.map +1 -1
  147. package/dist/collection/components/q2-item/q2-item.js +1 -1
  148. package/dist/collection/components/q2-item/q2-item.js.map +1 -1
  149. package/dist/collection/components/q2-item/test/q2-item-test.e2e.js.map +1 -1
  150. package/dist/collection/components/q2-item/test/q2-item-test.spec.js.map +1 -1
  151. package/dist/collection/components/q2-legend/q2-legend.js +1 -1
  152. package/dist/collection/components/q2-legend/q2-legend.js.map +1 -1
  153. package/dist/collection/components/q2-legend/test/q2-legend-test.e2e.js.map +1 -1
  154. package/dist/collection/components/q2-legend/test/q2-legend-test.spec.js.map +1 -1
  155. package/dist/collection/components/q2-link/q2-link.js.map +1 -1
  156. package/dist/collection/components/q2-link/test/q2-link-test.e2e.js.map +1 -1
  157. package/dist/collection/components/q2-list/q2-list.js +1 -1
  158. package/dist/collection/components/q2-list/q2-list.js.map +1 -1
  159. package/dist/collection/components/q2-list/test/q2-list-test.e2e.js.map +1 -1
  160. package/dist/collection/components/q2-loading/q2-loading.js.map +1 -1
  161. package/dist/collection/components/q2-loading/skeleton/q2-loading-element/index.js.map +1 -1
  162. package/dist/collection/components/q2-loading/skeleton/shapes.js.map +1 -1
  163. package/dist/collection/components/q2-loading/test/q2-loading-element-test.e2e.js.map +1 -1
  164. package/dist/collection/components/q2-loading/test/q2-loading-test.e2e.js.map +1 -1
  165. package/dist/collection/components/q2-loc/q2-loc.js +1 -1
  166. package/dist/collection/components/q2-loc/q2-loc.js.map +1 -1
  167. package/dist/collection/components/q2-loc/test/q2-loc-test.e2e.js.map +1 -1
  168. package/dist/collection/components/q2-message/q2-message.js +1 -1
  169. package/dist/collection/components/q2-message/q2-message.js.map +1 -1
  170. package/dist/collection/components/q2-message/test/q2-message-test.e2e.js.map +1 -1
  171. package/dist/collection/components/q2-optgroup/q2-optgroup.js +1 -1
  172. package/dist/collection/components/q2-optgroup/q2-optgroup.js.map +1 -1
  173. package/dist/collection/components/q2-optgroup/test/q2-optgroup-test.e2e.js.map +1 -1
  174. package/dist/collection/components/q2-option/q2-option.js +1 -1
  175. package/dist/collection/components/q2-option/q2-option.js.map +1 -1
  176. package/dist/collection/components/q2-option/test/q2-option-test.e2e.js.map +1 -1
  177. package/dist/collection/components/q2-option-list/q2-option-list.js.map +1 -1
  178. package/dist/collection/components/q2-option-list/test/q2-option-list-test.e2e.js.map +1 -1
  179. package/dist/collection/components/q2-pagination/q2-pagination.js +2 -2
  180. package/dist/collection/components/q2-pagination/q2-pagination.js.map +1 -1
  181. package/dist/collection/components/q2-pagination/test/q2-pagination-test.e2e.js +1 -0
  182. package/dist/collection/components/q2-pagination/test/q2-pagination-test.e2e.js.map +1 -1
  183. package/dist/collection/components/q2-pill/q2-pill.js +1 -1
  184. package/dist/collection/components/q2-pill/q2-pill.js.map +1 -1
  185. package/dist/collection/components/q2-pill/test/q2-pill-test.e2e.js +1 -1
  186. package/dist/collection/components/q2-pill/test/q2-pill-test.e2e.js.map +1 -1
  187. package/dist/collection/components/q2-popover/q2-popover.css +18 -10
  188. package/dist/collection/components/q2-popover/q2-popover.js +66 -70
  189. package/dist/collection/components/q2-popover/q2-popover.js.map +1 -1
  190. package/dist/collection/components/q2-popover/test/q2-popover-test.e2e.js +1 -83
  191. package/dist/collection/components/q2-popover/test/q2-popover-test.e2e.js.map +1 -1
  192. package/dist/collection/components/q2-popover/test/q2-popover-test.spec.js +743 -435
  193. package/dist/collection/components/q2-popover/test/q2-popover-test.spec.js.map +1 -1
  194. package/dist/collection/components/q2-radio/q2-radio.js.map +1 -1
  195. package/dist/collection/components/q2-radio/test/q2-radio-test.e2e.js.map +1 -1
  196. package/dist/collection/components/q2-radio-group/q2-radio-group.js.map +1 -1
  197. package/dist/collection/components/q2-radio-group/test/q2-radio-group-test.e2e.js.map +1 -1
  198. package/dist/collection/components/q2-relative-time/q2-relative-time.js +1 -1
  199. package/dist/collection/components/q2-relative-time/q2-relative-time.js.map +1 -1
  200. package/dist/collection/components/q2-relative-time/test/q2-relative-time-test.e2e.js.map +1 -1
  201. package/dist/collection/components/q2-resize-observer/q2-resize-observer.js +1 -1
  202. package/dist/collection/components/q2-resize-observer/q2-resize-observer.js.map +1 -1
  203. package/dist/collection/components/q2-resize-observer/test/q2-resize-observer.e2e.js.map +1 -1
  204. package/dist/collection/components/q2-resize-observer/test/q2-resize-observer.spec.js.map +1 -1
  205. package/dist/collection/components/q2-section/q2-section.js +2 -2
  206. package/dist/collection/components/q2-section/q2-section.js.map +1 -1
  207. package/dist/collection/components/q2-section/test/q2-section-test.e2e.js.map +1 -1
  208. package/dist/collection/components/q2-select/q2-select.js +114 -18
  209. package/dist/collection/components/q2-select/q2-select.js.map +1 -1
  210. package/dist/collection/components/q2-select/test/q2-select-test.e2e.js +1 -2
  211. package/dist/collection/components/q2-select/test/q2-select-test.e2e.js.map +1 -1
  212. package/dist/collection/components/q2-select/test/q2-select-test.spec.js +412 -0
  213. package/dist/collection/components/q2-select/test/q2-select-test.spec.js.map +1 -0
  214. package/dist/collection/components/q2-stepper/q2-stepper.js +1 -1
  215. package/dist/collection/components/q2-stepper/q2-stepper.js.map +1 -1
  216. package/dist/collection/components/q2-stepper/test/q2-stepper-test.e2e.js.map +1 -1
  217. package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.js.map +1 -1
  218. package/dist/collection/components/q2-stepper-pane/test/q2-stepper-pane-test.e2e.js.map +1 -1
  219. package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js +1 -1
  220. package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js.map +1 -1
  221. package/dist/collection/components/q2-stepper-vertical/test/q2-stepper-vertical-test.e2e.js.map +1 -1
  222. package/dist/collection/components/q2-tab-container/q2-tab-container.js +1 -1
  223. package/dist/collection/components/q2-tab-container/q2-tab-container.js.map +1 -1
  224. package/dist/collection/components/q2-tab-container/test/q2-tab-container-test.e2e.js.map +1 -1
  225. package/dist/collection/components/q2-tab-container/test/q2-tab-container-test.spec.js.map +1 -1
  226. package/dist/collection/components/q2-tab-pane/q2-tab-pane.js +1 -1
  227. package/dist/collection/components/q2-tab-pane/q2-tab-pane.js.map +1 -1
  228. package/dist/collection/components/q2-tab-pane/test/q2-tab-pane-test.e2e.js.map +1 -1
  229. package/dist/collection/components/q2-tag/q2-tag.js +1 -1
  230. package/dist/collection/components/q2-tag/q2-tag.js.map +1 -1
  231. package/dist/collection/components/q2-tag/test/q2-tag-test.e2e.js +6 -1
  232. package/dist/collection/components/q2-tag/test/q2-tag-test.e2e.js.map +1 -1
  233. package/dist/collection/components/q2-textarea/q2-textarea.js +2 -1
  234. package/dist/collection/components/q2-textarea/q2-textarea.js.map +1 -1
  235. package/dist/collection/components/q2-textarea/test/q2-textarea-test.e2e.js.map +1 -1
  236. package/dist/collection/components/q2-tooltip/q2-tooltip.js.map +1 -1
  237. package/dist/collection/components/q2-tooltip/test/q2-tooltip-test.e2e.js.map +1 -1
  238. package/dist/collection/components/tecton-tab-pane/tecton-tab-pane-types.js.map +1 -1
  239. package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js +2 -2
  240. package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js.map +1 -1
  241. package/dist/collection/components/tecton-tab-pane/test/tecton-tab-pane-test.e2e.js.map +1 -1
  242. package/dist/collection/index.js.map +1 -1
  243. package/dist/collection/utils/action-sheet.js.map +1 -1
  244. package/dist/collection/utils/charting.js.map +1 -1
  245. package/dist/collection/utils/helpers.js.map +1 -1
  246. package/dist/collection/utils/index.js.map +1 -1
  247. package/dist/collection/utils/sanitize-html-string.js.map +1 -1
  248. package/dist/collection/utils/sanitize-regex-string.js.map +1 -1
  249. package/dist/collection/utils/test/action-sheet-test.e2e.js.map +1 -1
  250. package/dist/collection/utils/test/index.spec.js.map +1 -1
  251. package/dist/components/index2.js +1 -20
  252. package/dist/components/index2.js.map +1 -1
  253. package/dist/components/q2-action-group.js +1 -1
  254. package/dist/components/q2-action-sheet.js +1 -1
  255. package/dist/components/q2-avatar2.js +1 -1
  256. package/dist/components/q2-btn2.js +4 -0
  257. package/dist/components/q2-btn2.js.map +1 -1
  258. package/dist/components/q2-carousel-pane.js +2 -2
  259. package/dist/components/q2-chart-area.js +1 -1
  260. package/dist/components/q2-chart-bar.js +1 -1
  261. package/dist/components/q2-chart-donut.js +1 -1
  262. package/dist/components/q2-currency.js +1 -1
  263. package/dist/components/q2-detail.js +1 -1
  264. package/dist/components/q2-dropdown.js +9 -11
  265. package/dist/components/q2-dropdown.js.map +1 -1
  266. package/dist/components/q2-editable-field.js +7 -8
  267. package/dist/components/q2-editable-field.js.map +1 -1
  268. package/dist/components/q2-formatted-text.js +1 -1
  269. package/dist/components/q2-icon2.js +4 -0
  270. package/dist/components/q2-icon2.js.map +1 -1
  271. package/dist/components/q2-input2.js +1 -1
  272. package/dist/components/q2-item.js +1 -1
  273. package/dist/components/q2-legend2.js +1 -1
  274. package/dist/components/q2-list.js +1 -1
  275. package/dist/components/q2-loc.js +1 -1
  276. package/dist/components/q2-message2.js +1 -1
  277. package/dist/components/q2-month-picker.js +2 -2
  278. package/dist/components/q2-optgroup2.js +1 -1
  279. package/dist/components/q2-option2.js +1 -1
  280. package/dist/components/q2-pagination.js +2 -2
  281. package/dist/components/q2-pill.js +1 -1
  282. package/dist/components/q2-popover2.js +65 -70
  283. package/dist/components/q2-popover2.js.map +1 -1
  284. package/dist/components/q2-relative-time.js +1 -1
  285. package/dist/components/q2-resize-observer2.js +1 -1
  286. package/dist/components/q2-section.js +2 -2
  287. package/dist/components/q2-select2.js +96 -19
  288. package/dist/components/q2-select2.js.map +1 -1
  289. package/dist/components/q2-stepper-vertical.js +1 -1
  290. package/dist/components/q2-stepper.js +1 -1
  291. package/dist/components/q2-tab-container.js +1 -1
  292. package/dist/components/q2-tab-pane.js +1 -1
  293. package/dist/components/q2-tag.js +1 -1
  294. package/dist/components/q2-textarea.js +2 -1
  295. package/dist/components/q2-textarea.js.map +1 -1
  296. package/dist/components/tecton-tab-pane.js +2 -2
  297. package/dist/esm/click-elsewhere_2.entry.js +66 -71
  298. package/dist/esm/click-elsewhere_2.entry.js.map +1 -1
  299. package/dist/esm/{index-844fc010.js → index-a185b189.js} +2 -21
  300. package/dist/esm/index-a185b189.js.map +1 -0
  301. package/dist/esm/loader.js +1 -1
  302. package/dist/esm/q2-action-group.entry.js +1 -1
  303. package/dist/esm/q2-action-sheet.entry.js +2 -2
  304. package/dist/esm/q2-avatar.entry.js +1 -1
  305. package/dist/esm/q2-badge_7.entry.js +12 -4
  306. package/dist/esm/q2-badge_7.entry.js.map +1 -1
  307. package/dist/esm/q2-calendar.entry.js +1 -1
  308. package/dist/esm/q2-card.entry.js +1 -1
  309. package/dist/esm/q2-carousel-pane.entry.js +3 -3
  310. package/dist/esm/q2-carousel.entry.js +1 -1
  311. package/dist/esm/q2-chart-area.entry.js +2 -2
  312. package/dist/esm/q2-chart-bar.entry.js +2 -2
  313. package/dist/esm/q2-chart-donut.entry.js +2 -2
  314. package/dist/esm/q2-checkbox-group.entry.js +1 -1
  315. package/dist/esm/q2-checkbox.entry.js +1 -1
  316. package/dist/esm/q2-currency.entry.js +1 -1
  317. package/dist/esm/q2-data-table.entry.js +1 -1
  318. package/dist/esm/q2-detail.entry.js +2 -2
  319. package/dist/esm/q2-dropdown-item.entry.js +1 -1
  320. package/dist/esm/q2-dropdown.entry.js +10 -12
  321. package/dist/esm/q2-dropdown.entry.js.map +1 -1
  322. package/dist/esm/q2-editable-field.entry.js +7 -8
  323. package/dist/esm/q2-editable-field.entry.js.map +1 -1
  324. package/dist/esm/q2-formatted-text.entry.js +1 -1
  325. package/dist/esm/q2-item.entry.js +2 -2
  326. package/dist/esm/q2-legend.entry.js +1 -1
  327. package/dist/esm/q2-list.entry.js +2 -2
  328. package/dist/esm/q2-loc.entry.js +2 -2
  329. package/dist/esm/q2-message.entry.js +2 -2
  330. package/dist/esm/q2-month-picker.entry.js +3 -3
  331. package/dist/esm/q2-optgroup.entry.js +2 -2
  332. package/dist/esm/q2-option-list.entry.js +1 -1
  333. package/dist/esm/q2-option.entry.js +1 -1
  334. package/dist/esm/q2-pagination.entry.js +3 -3
  335. package/dist/esm/q2-pill.entry.js +2 -2
  336. package/dist/esm/q2-radio-group.entry.js +1 -1
  337. package/dist/esm/q2-radio.entry.js +1 -1
  338. package/dist/esm/q2-relative-time.entry.js +2 -2
  339. package/dist/esm/q2-resize-observer.entry.js +1 -1
  340. package/dist/esm/q2-section.entry.js +3 -3
  341. package/dist/esm/q2-select.entry.js +94 -17
  342. package/dist/esm/q2-select.entry.js.map +1 -1
  343. package/dist/esm/q2-stepper-pane.entry.js +1 -1
  344. package/dist/esm/q2-stepper-vertical.entry.js +2 -2
  345. package/dist/esm/q2-stepper.entry.js +2 -2
  346. package/dist/esm/q2-tag.entry.js +2 -2
  347. package/dist/esm/q2-tecton-elements.js +1 -1
  348. package/dist/esm/q2-textarea.entry.js +3 -2
  349. package/dist/esm/q2-textarea.entry.js.map +1 -1
  350. package/dist/esm/q2-tooltip.entry.js +1 -1
  351. package/dist/esm/tecton-tab-pane.entry.js +2 -2
  352. package/dist/jest.setup.js +22 -0
  353. package/dist/jest.setup.js.map +1 -0
  354. package/dist/q2-tecton-elements/{p-7c9a0122.entry.js → p-089801c6.entry.js} +2 -2
  355. package/dist/q2-tecton-elements/p-0e63312a.entry.js +2 -0
  356. package/dist/q2-tecton-elements/p-0e63312a.entry.js.map +1 -0
  357. package/dist/q2-tecton-elements/{p-7c9f8b62.entry.js → p-15383dc8.entry.js} +2 -2
  358. package/dist/q2-tecton-elements/{p-7903cd15.entry.js → p-18209f3b.entry.js} +2 -2
  359. package/dist/q2-tecton-elements/{p-ac6aa392.entry.js → p-1f7e9ab9.entry.js} +2 -2
  360. package/dist/q2-tecton-elements/{p-7aef0c08.entry.js → p-29f1f2df.entry.js} +2 -2
  361. package/dist/q2-tecton-elements/{p-8d07cf91.entry.js → p-2a296347.entry.js} +2 -2
  362. package/dist/q2-tecton-elements/{p-4e10550d.entry.js → p-3b075b65.entry.js} +2 -2
  363. package/dist/q2-tecton-elements/{p-c5667d5d.entry.js → p-432869d3.entry.js} +2 -2
  364. package/dist/q2-tecton-elements/{p-f5f23659.entry.js → p-4a399340.entry.js} +2 -2
  365. package/dist/q2-tecton-elements/{p-5f99a4a8.entry.js → p-4cabd4a3.entry.js} +2 -2
  366. package/dist/q2-tecton-elements/{p-07d1c3ae.entry.js → p-4e4aa30e.entry.js} +2 -2
  367. package/dist/q2-tecton-elements/{p-a47597dd.entry.js → p-50f6e95a.entry.js} +2 -2
  368. package/dist/q2-tecton-elements/{p-7906f49e.entry.js → p-53224667.entry.js} +2 -2
  369. package/dist/q2-tecton-elements/p-5df24439.entry.js +2 -0
  370. package/dist/q2-tecton-elements/p-5df24439.entry.js.map +1 -0
  371. package/dist/q2-tecton-elements/{p-b1784be3.entry.js → p-65f60a00.entry.js} +2 -2
  372. package/dist/q2-tecton-elements/{p-188eb162.entry.js → p-7e87cbdf.entry.js} +3 -3
  373. package/dist/q2-tecton-elements/p-85c46278.entry.js +2 -0
  374. package/dist/q2-tecton-elements/p-85c46278.entry.js.map +1 -0
  375. package/dist/q2-tecton-elements/{p-8d2b02e1.entry.js → p-8a75584e.entry.js} +2 -2
  376. package/dist/q2-tecton-elements/{p-5637c486.entry.js → p-998d2b5e.entry.js} +2 -2
  377. package/dist/q2-tecton-elements/{p-e2c800ef.entry.js → p-9e8e33e4.entry.js} +2 -2
  378. package/dist/q2-tecton-elements/{p-1c88d057.entry.js → p-a2793557.entry.js} +2 -2
  379. package/dist/q2-tecton-elements/{p-95a7c042.entry.js → p-a64e521d.entry.js} +2 -2
  380. package/dist/q2-tecton-elements/{p-16910682.entry.js → p-aad42723.entry.js} +2 -2
  381. package/dist/q2-tecton-elements/{p-f135b265.entry.js → p-ac7a3bc1.entry.js} +2 -2
  382. package/dist/q2-tecton-elements/{p-f135b265.entry.js.map → p-ac7a3bc1.entry.js.map} +1 -1
  383. package/dist/q2-tecton-elements/{p-20a3d6ed.entry.js → p-b17e9798.entry.js} +2 -2
  384. package/dist/q2-tecton-elements/{p-5a834214.entry.js → p-bbe24257.entry.js} +2 -2
  385. package/dist/q2-tecton-elements/{p-b7de110e.entry.js → p-bc530c75.entry.js} +2 -2
  386. package/dist/q2-tecton-elements/{p-2733583e.entry.js → p-c324d1c8.entry.js} +2 -2
  387. package/dist/q2-tecton-elements/{p-3e428290.entry.js → p-c3566e7a.entry.js} +2 -2
  388. package/dist/q2-tecton-elements/p-c5445b5e.js +2 -0
  389. package/dist/q2-tecton-elements/p-c5445b5e.js.map +1 -0
  390. package/dist/q2-tecton-elements/{p-e216ef3f.entry.js → p-c6fb83ff.entry.js} +2 -2
  391. package/dist/q2-tecton-elements/{p-1c760a89.entry.js → p-cca5af1f.entry.js} +2 -2
  392. package/dist/q2-tecton-elements/{p-a5d0e252.entry.js → p-cfcec7f4.entry.js} +2 -2
  393. package/dist/q2-tecton-elements/{p-c235ab3f.entry.js → p-d312f179.entry.js} +2 -2
  394. package/dist/q2-tecton-elements/{p-96b1406c.entry.js → p-d326261a.entry.js} +2 -2
  395. package/dist/q2-tecton-elements/{p-06701928.entry.js → p-dc80c2ed.entry.js} +2 -2
  396. package/dist/q2-tecton-elements/{p-4774e5b3.entry.js → p-e0a617fd.entry.js} +2 -2
  397. package/dist/q2-tecton-elements/p-e940ccfb.entry.js +2 -0
  398. package/dist/q2-tecton-elements/p-e940ccfb.entry.js.map +1 -0
  399. package/dist/q2-tecton-elements/{p-50f7328f.entry.js → p-e9dfbb78.entry.js} +2 -2
  400. package/dist/q2-tecton-elements/{p-ff8f1a32.entry.js → p-ebc71f10.entry.js} +2 -2
  401. package/dist/q2-tecton-elements/{p-ad057d10.entry.js → p-f043a9f1.entry.js} +2 -2
  402. package/dist/q2-tecton-elements/{p-fff01dc1.entry.js → p-f51426b0.entry.js} +2 -2
  403. package/dist/q2-tecton-elements/p-f8710843.entry.js +2 -0
  404. package/dist/q2-tecton-elements/p-f8710843.entry.js.map +1 -0
  405. package/dist/q2-tecton-elements/{p-81fbe718.entry.js → p-fa68a890.entry.js} +2 -2
  406. package/dist/q2-tecton-elements/{p-490ef8e5.entry.js → p-fbd6cb9a.entry.js} +2 -2
  407. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
  408. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js.map +1 -1
  409. package/dist/types/builds/q2e/development/tecton/tecton/packages/q2-tecton-elements/.stencil/jest.setup.d.ts +1 -0
  410. package/dist/types/components/q2-btn/q2-btn.d.ts +1 -0
  411. package/dist/types/components/q2-dropdown/q2-dropdown.d.ts +1 -4
  412. package/dist/types/components/q2-editable-field/q2-editable-field.d.ts +2 -2
  413. package/dist/types/components/q2-icon/q2-icon.d.ts +1 -0
  414. package/dist/types/components/q2-popover/q2-popover.d.ts +4 -5
  415. package/dist/types/components/q2-select/q2-select.d.ts +19 -0
  416. package/package.json +3 -3
  417. package/dist/cjs/index-9aa4a776.js.map +0 -1
  418. package/dist/esm/index-844fc010.js.map +0 -1
  419. package/dist/q2-tecton-elements/p-1305f7ca.entry.js +0 -2
  420. package/dist/q2-tecton-elements/p-1305f7ca.entry.js.map +0 -1
  421. package/dist/q2-tecton-elements/p-15ac45d6.js +0 -2
  422. package/dist/q2-tecton-elements/p-15ac45d6.js.map +0 -1
  423. package/dist/q2-tecton-elements/p-56df21b0.entry.js +0 -2
  424. package/dist/q2-tecton-elements/p-56df21b0.entry.js.map +0 -1
  425. package/dist/q2-tecton-elements/p-896c7008.entry.js +0 -2
  426. package/dist/q2-tecton-elements/p-896c7008.entry.js.map +0 -1
  427. package/dist/q2-tecton-elements/p-b0e5e9dc.entry.js +0 -2
  428. package/dist/q2-tecton-elements/p-b0e5e9dc.entry.js.map +0 -1
  429. package/dist/q2-tecton-elements/p-f7867f21.entry.js +0 -2
  430. package/dist/q2-tecton-elements/p-f7867f21.entry.js.map +0 -1
  431. /package/dist/q2-tecton-elements/{p-7c9a0122.entry.js.map → p-089801c6.entry.js.map} +0 -0
  432. /package/dist/q2-tecton-elements/{p-7c9f8b62.entry.js.map → p-15383dc8.entry.js.map} +0 -0
  433. /package/dist/q2-tecton-elements/{p-7903cd15.entry.js.map → p-18209f3b.entry.js.map} +0 -0
  434. /package/dist/q2-tecton-elements/{p-ac6aa392.entry.js.map → p-1f7e9ab9.entry.js.map} +0 -0
  435. /package/dist/q2-tecton-elements/{p-7aef0c08.entry.js.map → p-29f1f2df.entry.js.map} +0 -0
  436. /package/dist/q2-tecton-elements/{p-8d07cf91.entry.js.map → p-2a296347.entry.js.map} +0 -0
  437. /package/dist/q2-tecton-elements/{p-4e10550d.entry.js.map → p-3b075b65.entry.js.map} +0 -0
  438. /package/dist/q2-tecton-elements/{p-c5667d5d.entry.js.map → p-432869d3.entry.js.map} +0 -0
  439. /package/dist/q2-tecton-elements/{p-f5f23659.entry.js.map → p-4a399340.entry.js.map} +0 -0
  440. /package/dist/q2-tecton-elements/{p-5f99a4a8.entry.js.map → p-4cabd4a3.entry.js.map} +0 -0
  441. /package/dist/q2-tecton-elements/{p-07d1c3ae.entry.js.map → p-4e4aa30e.entry.js.map} +0 -0
  442. /package/dist/q2-tecton-elements/{p-a47597dd.entry.js.map → p-50f6e95a.entry.js.map} +0 -0
  443. /package/dist/q2-tecton-elements/{p-7906f49e.entry.js.map → p-53224667.entry.js.map} +0 -0
  444. /package/dist/q2-tecton-elements/{p-b1784be3.entry.js.map → p-65f60a00.entry.js.map} +0 -0
  445. /package/dist/q2-tecton-elements/{p-188eb162.entry.js.map → p-7e87cbdf.entry.js.map} +0 -0
  446. /package/dist/q2-tecton-elements/{p-8d2b02e1.entry.js.map → p-8a75584e.entry.js.map} +0 -0
  447. /package/dist/q2-tecton-elements/{p-5637c486.entry.js.map → p-998d2b5e.entry.js.map} +0 -0
  448. /package/dist/q2-tecton-elements/{p-e2c800ef.entry.js.map → p-9e8e33e4.entry.js.map} +0 -0
  449. /package/dist/q2-tecton-elements/{p-1c88d057.entry.js.map → p-a2793557.entry.js.map} +0 -0
  450. /package/dist/q2-tecton-elements/{p-95a7c042.entry.js.map → p-a64e521d.entry.js.map} +0 -0
  451. /package/dist/q2-tecton-elements/{p-16910682.entry.js.map → p-aad42723.entry.js.map} +0 -0
  452. /package/dist/q2-tecton-elements/{p-20a3d6ed.entry.js.map → p-b17e9798.entry.js.map} +0 -0
  453. /package/dist/q2-tecton-elements/{p-5a834214.entry.js.map → p-bbe24257.entry.js.map} +0 -0
  454. /package/dist/q2-tecton-elements/{p-b7de110e.entry.js.map → p-bc530c75.entry.js.map} +0 -0
  455. /package/dist/q2-tecton-elements/{p-2733583e.entry.js.map → p-c324d1c8.entry.js.map} +0 -0
  456. /package/dist/q2-tecton-elements/{p-3e428290.entry.js.map → p-c3566e7a.entry.js.map} +0 -0
  457. /package/dist/q2-tecton-elements/{p-e216ef3f.entry.js.map → p-c6fb83ff.entry.js.map} +0 -0
  458. /package/dist/q2-tecton-elements/{p-1c760a89.entry.js.map → p-cca5af1f.entry.js.map} +0 -0
  459. /package/dist/q2-tecton-elements/{p-a5d0e252.entry.js.map → p-cfcec7f4.entry.js.map} +0 -0
  460. /package/dist/q2-tecton-elements/{p-c235ab3f.entry.js.map → p-d312f179.entry.js.map} +0 -0
  461. /package/dist/q2-tecton-elements/{p-96b1406c.entry.js.map → p-d326261a.entry.js.map} +0 -0
  462. /package/dist/q2-tecton-elements/{p-06701928.entry.js.map → p-dc80c2ed.entry.js.map} +0 -0
  463. /package/dist/q2-tecton-elements/{p-4774e5b3.entry.js.map → p-e0a617fd.entry.js.map} +0 -0
  464. /package/dist/q2-tecton-elements/{p-50f7328f.entry.js.map → p-e9dfbb78.entry.js.map} +0 -0
  465. /package/dist/q2-tecton-elements/{p-ff8f1a32.entry.js.map → p-ebc71f10.entry.js.map} +0 -0
  466. /package/dist/q2-tecton-elements/{p-ad057d10.entry.js.map → p-f043a9f1.entry.js.map} +0 -0
  467. /package/dist/q2-tecton-elements/{p-fff01dc1.entry.js.map → p-f51426b0.entry.js.map} +0 -0
  468. /package/dist/q2-tecton-elements/{p-81fbe718.entry.js.map → p-fa68a890.entry.js.map} +0 -0
  469. /package/dist/q2-tecton-elements/{p-490ef8e5.entry.js.map → p-fbd6cb9a.entry.js.map} +0 -0
@@ -0,0 +1,412 @@
1
+ import { newSpecPage } from "@stencil/core/testing";
2
+ import { Q2Select } from "../q2-select";
3
+ import { Q2OptionList } from "../../q2-option-list/q2-option-list";
4
+ import * as utils from "../../../utils/index";
5
+ // Set up global screen object for testing
6
+ const mockScreen = {
7
+ orientation: {
8
+ type: 'portrait-primary',
9
+ addEventListener: jest.fn(),
10
+ removeEventListener: jest.fn(),
11
+ },
12
+ };
13
+ global.screen = mockScreen;
14
+ Object.defineProperty(window, 'screen', {
15
+ writable: true,
16
+ value: mockScreen,
17
+ });
18
+ // Set up global visualViewport for testing
19
+ const mockVisualViewport = {
20
+ addEventListener: jest.fn(),
21
+ removeEventListener: jest.fn(),
22
+ width: 800,
23
+ height: 600,
24
+ };
25
+ global.visualViewport = mockVisualViewport;
26
+ Object.defineProperty(window, 'visualViewport', {
27
+ value: mockVisualViewport,
28
+ configurable: true,
29
+ });
30
+ const samplePlatformDimensions = {
31
+ scrollY: 0,
32
+ innerHeight: 800,
33
+ innerWidth: 600,
34
+ outletOffset: 20,
35
+ };
36
+ const sampleTectonWindow = {
37
+ inMobileApp: false,
38
+ noStrings: false,
39
+ platformUrl: '',
40
+ platformDimensions: samplePlatformDimensions,
41
+ };
42
+ describe('q2-select', () => {
43
+ let specPage;
44
+ let specSelect;
45
+ let specElement;
46
+ let isMobileSpy;
47
+ let handleAriaLabelSpy;
48
+ let overrideFocusSpy;
49
+ // Helper function to set screen orientation type
50
+ const setOrientationType = (type) => {
51
+ mockScreen.orientation.type = type;
52
+ };
53
+ beforeEach(() => {
54
+ isMobileSpy = jest.spyOn(utils, 'isMobile').mockReturnValue(false);
55
+ handleAriaLabelSpy = jest.spyOn(utils, 'handleAriaLabel');
56
+ overrideFocusSpy = jest.spyOn(utils, 'overrideFocus');
57
+ setOrientationType('landscape-primary');
58
+ mockScreen.orientation.addEventListener.mockClear();
59
+ mockScreen.orientation.removeEventListener.mockClear();
60
+ });
61
+ afterEach(() => {
62
+ isMobileSpy.mockRestore();
63
+ handleAriaLabelSpy.mockRestore();
64
+ overrideFocusSpy.mockRestore();
65
+ });
66
+ describe('Props', () => { });
67
+ describe('Events', () => { });
68
+ describe('Component Lifecycle Events', () => {
69
+ describe('disconnectedCallback', () => {
70
+ it('calls disconnect() on mutationObserver', async () => {
71
+ specSelect = new Q2Select();
72
+ specSelect.mutationObserver = new MutationObserver(() => { });
73
+ const disconnectSpy = jest.spyOn(specSelect.mutationObserver, 'disconnect');
74
+ specSelect.disconnectedCallback();
75
+ expect(disconnectSpy).toHaveBeenCalled();
76
+ });
77
+ it('sets mutationObserver to null', async () => {
78
+ specSelect = new Q2Select();
79
+ specSelect.mutationObserver = new MutationObserver(() => { });
80
+ expect(specSelect.mutationObserver).not.toBeNull();
81
+ specSelect.disconnectedCallback();
82
+ expect(specSelect.mutationObserver).toBeNull();
83
+ });
84
+ it('calls destroyEventListeners', async () => {
85
+ specSelect = new Q2Select();
86
+ const destroyEventListenersSpy = jest.spyOn(specSelect, 'destroyEventListeners');
87
+ specSelect.disconnectedCallback();
88
+ expect(destroyEventListenersSpy).toHaveBeenCalled();
89
+ });
90
+ });
91
+ describe('componentWillLoad', () => {
92
+ it('calls handleAriaLabel() helper function', async () => {
93
+ specSelect = new Q2Select();
94
+ specSelect.componentWillLoad();
95
+ expect(handleAriaLabelSpy).toHaveBeenCalled();
96
+ });
97
+ it('calls handleOrientationChange', async () => {
98
+ specSelect = new Q2Select();
99
+ const handleOrientationChangeSpy = jest.spyOn(specSelect, 'handleOrientationChange');
100
+ specSelect.componentWillLoad();
101
+ expect(handleOrientationChangeSpy).toHaveBeenCalled();
102
+ });
103
+ it('calls buildStructuredSelectedOptions', async () => {
104
+ specSelect = new Q2Select();
105
+ const buildOptionsSpy = jest.spyOn(specSelect, 'buildStructuredSelectedOptions');
106
+ specSelect.componentWillLoad();
107
+ expect(buildOptionsSpy).toHaveBeenCalled();
108
+ });
109
+ it('calls handleMultilineOptionsUpdate', async () => {
110
+ specSelect = new Q2Select();
111
+ const handleUpdateSpy = jest.spyOn(specSelect, 'handleMultilineOptionsUpdate');
112
+ specSelect.componentWillLoad();
113
+ expect(handleUpdateSpy).toHaveBeenCalled();
114
+ });
115
+ });
116
+ describe('componentDidLoad', () => {
117
+ it('calls initMutationObserver', async () => {
118
+ specPage = await newSpecPage({
119
+ components: [Q2Select, Q2OptionList],
120
+ html: `<q2-select></q2-select>`,
121
+ });
122
+ specSelect = specPage.rootInstance;
123
+ const initMutationObserverSpy = jest.spyOn(specSelect, 'initMutationObserver');
124
+ specSelect.componentDidLoad();
125
+ expect(initMutationObserverSpy).toHaveBeenCalled();
126
+ });
127
+ it('calls initEventListeners', async () => {
128
+ specPage = await newSpecPage({
129
+ components: [Q2Select],
130
+ html: `<q2-select></q2-select>`,
131
+ });
132
+ specSelect = specPage.rootInstance;
133
+ const initEventListenersSpy = jest.spyOn(specSelect, 'initEventListeners');
134
+ specSelect.componentDidLoad();
135
+ expect(initEventListenersSpy).toHaveBeenCalled();
136
+ });
137
+ it('calls overrideFocus helper', async () => {
138
+ specPage = await newSpecPage({
139
+ components: [Q2Select],
140
+ html: `<q2-select></q2-select>`,
141
+ });
142
+ specSelect = specPage.rootInstance;
143
+ specElement = specPage.root;
144
+ specSelect.componentDidLoad();
145
+ expect(overrideFocusSpy).toHaveBeenCalledWith(specElement);
146
+ });
147
+ it('setTimeout calls checkSelectedDisplay', async () => {
148
+ specPage = await newSpecPage({
149
+ components: [Q2Select],
150
+ html: `<q2-select></q2-select>`,
151
+ });
152
+ specSelect = specPage.rootInstance;
153
+ const checkSelectedDisplaySpy = jest.spyOn(specSelect, 'checkSelectedDisplay');
154
+ jest.useFakeTimers();
155
+ specSelect.componentDidLoad();
156
+ jest.runAllTimers();
157
+ expect(checkSelectedDisplaySpy).toHaveBeenCalled();
158
+ jest.useRealTimers();
159
+ });
160
+ });
161
+ describe('componentDidRender', () => {
162
+ it('calls forEach on scheduledAfterRender', async () => {
163
+ specSelect = new Q2Select();
164
+ specSelect.scheduledAfterRender = [jest.fn()];
165
+ const forEachSpy = jest.spyOn(specSelect.scheduledAfterRender, 'forEach');
166
+ jest.useFakeTimers();
167
+ specSelect.componentDidRender();
168
+ jest.runAllTimers();
169
+ expect(forEachSpy).toHaveBeenCalled();
170
+ jest.useRealTimers();
171
+ });
172
+ });
173
+ });
174
+ describe('Listeners', () => { });
175
+ describe('Public Methods API', () => {
176
+ describe('Public Methods', () => { });
177
+ describe('Test Methods', () => { });
178
+ });
179
+ describe('Watchers', () => { });
180
+ describe('Local Methods', () => {
181
+ describe('Getters', () => {
182
+ describe('isModule', () => {
183
+ beforeEach(() => {
184
+ specSelect = new Q2Select();
185
+ });
186
+ it('returns false when window top matches window and platformDimensions is not defined', async () => {
187
+ expect(window.top).toBe(window);
188
+ expect(window.Tecton).toBeUndefined();
189
+ expect(specSelect.isModule).toBe(false);
190
+ });
191
+ it('returns false when window top does not match window and platformDimensions is not defined', async () => {
192
+ const windowSpy = jest.spyOn(window, 'top', 'get').mockReturnValue({});
193
+ expect(window.top).not.toEqual(window);
194
+ expect(window.Tecton).toBeUndefined();
195
+ expect(specSelect.isModule).toBe(false);
196
+ windowSpy.mockRestore();
197
+ });
198
+ it('returns false when window top matches window and platformDimensions is defined', async () => {
199
+ window.Tecton = sampleTectonWindow;
200
+ expect(window.top).toBe(window);
201
+ expect(window.Tecton.platformDimensions).toBeTruthy();
202
+ expect(specSelect.isModule).toBe(false);
203
+ });
204
+ it('returns true when window top does not match window and platformDimensions is defined', async () => {
205
+ const windowSpy = jest.spyOn(window, 'top', 'get').mockReturnValue({});
206
+ window.Tecton = sampleTectonWindow;
207
+ expect(specSelect.isModule).toBe(true);
208
+ windowSpy.mockRestore();
209
+ });
210
+ });
211
+ });
212
+ describe('Methods', () => {
213
+ describe('destroyEventListeners', () => {
214
+ let windowRemoveEventListenerSpy;
215
+ beforeEach(() => {
216
+ isMobileSpy.mockReturnValue(true);
217
+ specSelect = new Q2Select();
218
+ mockScreen.orientation.removeEventListener.mockClear();
219
+ windowRemoveEventListenerSpy = jest.spyOn(window, 'removeEventListener');
220
+ mockVisualViewport.removeEventListener.mockClear();
221
+ });
222
+ it('checks if isMobile', async () => {
223
+ specSelect = new Q2Select();
224
+ specSelect.destroyEventListeners();
225
+ expect(isMobileSpy).toHaveBeenCalled();
226
+ });
227
+ describe('when in mobile environment', () => {
228
+ it('calls removeEventListener on screen.orientation ', async () => {
229
+ specSelect.destroyEventListeners();
230
+ expect(mockScreen.orientation.removeEventListener).toHaveBeenCalledWith('change', specSelect.handleOrientationChange);
231
+ });
232
+ it('calls removeEventListener on window', async () => {
233
+ specSelect.destroyEventListeners();
234
+ expect(windowRemoveEventListenerSpy).toHaveBeenCalledWith('resize', specSelect.handleOrientationChange);
235
+ });
236
+ it('calls removeEventListener on visualViewport', async () => {
237
+ mockVisualViewport.removeEventListener.mockClear();
238
+ specSelect.destroyEventListeners();
239
+ expect(mockVisualViewport.removeEventListener).toHaveBeenCalledWith('resize', specSelect.handleOrientationChange);
240
+ });
241
+ });
242
+ it('does NOT remove event listener when NOT mobile', async () => {
243
+ isMobileSpy.mockReturnValue(false);
244
+ specSelect = new Q2Select();
245
+ specSelect.destroyEventListeners();
246
+ expect(mockScreen.orientation.removeEventListener).not.toHaveBeenCalled();
247
+ expect(windowRemoveEventListenerSpy).not.toHaveBeenCalled();
248
+ expect(mockVisualViewport.removeEventListener).not.toHaveBeenCalled();
249
+ });
250
+ });
251
+ describe('handleOrientationChange', () => {
252
+ beforeEach(() => {
253
+ isMobileSpy.mockReturnValue(true);
254
+ specSelect = new Q2Select();
255
+ });
256
+ it('checks if isMobile', async () => {
257
+ specSelect.handleOrientationChange();
258
+ expect(isMobileSpy).toHaveBeenCalled();
259
+ });
260
+ describe('when searchable is initially true', () => {
261
+ beforeEach(() => {
262
+ specSelect.searchable = true;
263
+ specSelect.originalSearchable = true;
264
+ });
265
+ it('sets "searchable" to false if in landscape orientation', async () => {
266
+ setOrientationType('landscape-primary');
267
+ specSelect.handleOrientationChange();
268
+ expect(specSelect.searchable).toBe(false);
269
+ });
270
+ it('does nothing in portrait orientation', async () => {
271
+ setOrientationType('portrait-primary');
272
+ specSelect.handleOrientationChange();
273
+ expect(specSelect.searchable).toBe(true);
274
+ });
275
+ it('restores searchable when returning to portrait', async () => {
276
+ setOrientationType('landscape-primary');
277
+ specSelect.handleOrientationChange();
278
+ expect(specSelect.searchable).toBe(false);
279
+ setOrientationType('portrait-primary');
280
+ specSelect.handleOrientationChange();
281
+ expect(specSelect.searchable).toBe(true);
282
+ });
283
+ });
284
+ describe('when searchable is initially undefined/false', () => {
285
+ it('does nothing', async () => {
286
+ specSelect.originalSearchable = false;
287
+ setOrientationType('landscape-primary');
288
+ specSelect.handleOrientationChange();
289
+ expect(specSelect.searchable).toBe(false);
290
+ });
291
+ });
292
+ });
293
+ describe('initEventListeners', () => {
294
+ let windowAddEventListenerSpy;
295
+ beforeEach(() => {
296
+ isMobileSpy.mockReturnValue(true);
297
+ specSelect = new Q2Select();
298
+ mockScreen.orientation.addEventListener.mockClear();
299
+ windowAddEventListenerSpy = jest.spyOn(window, 'addEventListener');
300
+ mockVisualViewport.addEventListener.mockClear();
301
+ });
302
+ it('checks if isMobile', async () => {
303
+ specSelect = new Q2Select();
304
+ specSelect.initEventListeners();
305
+ expect(isMobileSpy).toHaveBeenCalled();
306
+ });
307
+ describe('when in mobile environment', () => {
308
+ it('calls addEventListener on screen.orientation', async () => {
309
+ specSelect.initEventListeners();
310
+ expect(mockScreen.orientation.addEventListener).toHaveBeenCalledWith('change', specSelect.handleOrientationChange);
311
+ });
312
+ it('calls addEventListener on window', async () => {
313
+ specSelect.initEventListeners();
314
+ expect(windowAddEventListenerSpy).toHaveBeenCalledWith('resize', specSelect.handleOrientationChange);
315
+ });
316
+ it('calls addEventListener on visualViewport', async () => {
317
+ specSelect.initEventListeners();
318
+ expect(mockVisualViewport.addEventListener).toHaveBeenCalledWith('resize', specSelect.handleOrientationChange);
319
+ });
320
+ });
321
+ it('does NOT add event listener when NOT mobile', async () => {
322
+ isMobileSpy.mockReturnValue(false);
323
+ specSelect = new Q2Select();
324
+ specSelect.initEventListeners();
325
+ expect(mockScreen.orientation.addEventListener).not.toHaveBeenCalled();
326
+ expect(mockVisualViewport.addEventListener).not.toHaveBeenCalled();
327
+ expect(windowAddEventListenerSpy).not.toHaveBeenCalled();
328
+ });
329
+ });
330
+ });
331
+ });
332
+ describe('Render Methods', () => { });
333
+ describe('Accessibility', () => {
334
+ describe('Keyboard Controls', () => {
335
+ let handleOptionListExternalKeydownSpy;
336
+ let q2Select;
337
+ beforeEach(async () => {
338
+ specPage = await newSpecPage({
339
+ components: [Q2Select, Q2OptionList],
340
+ html: `<q2-select></q2-select>`,
341
+ });
342
+ q2Select = specPage.root;
343
+ const q2SelectInstance = specPage.rootInstance;
344
+ handleOptionListExternalKeydownSpy = jest.spyOn(q2SelectInstance, 'handleOptionListExternalKeydown');
345
+ });
346
+ afterEach(() => {
347
+ handleOptionListExternalKeydownSpy.mockRestore();
348
+ });
349
+ it("'Tab' keypress not handled by q2-option-list", async () => {
350
+ const event = new KeyboardEvent('keydown', { key: 'Tab' });
351
+ q2Select.dispatchEvent(event);
352
+ await specPage.waitForChanges();
353
+ expect(handleOptionListExternalKeydownSpy).toHaveBeenCalledWith(event);
354
+ });
355
+ it("'Enter' keypress handled by q2-option-list", async () => {
356
+ const event = new KeyboardEvent('keydown', { key: 'Enter' });
357
+ q2Select.dispatchEvent(event);
358
+ await specPage.waitForChanges();
359
+ expect(handleOptionListExternalKeydownSpy).toHaveBeenCalledWith(event);
360
+ });
361
+ it("'ArrowUp' keypress handled by q2-option-list", async () => {
362
+ const event = new KeyboardEvent('keydown', { key: 'ArrowUp' });
363
+ q2Select.dispatchEvent(event);
364
+ await specPage.waitForChanges();
365
+ expect(handleOptionListExternalKeydownSpy).toHaveBeenCalledWith(event);
366
+ });
367
+ it("'ArrowDown' keypress handled by q2-option-list", async () => {
368
+ const event = new KeyboardEvent('keydown', { key: 'ArrowDown' });
369
+ q2Select.dispatchEvent(event);
370
+ await specPage.waitForChanges();
371
+ expect(handleOptionListExternalKeydownSpy).toHaveBeenCalledWith(event);
372
+ });
373
+ it("'Home' keypress handled by q2-option-list", async () => {
374
+ const event = new KeyboardEvent('keydown', { key: 'Home' });
375
+ q2Select.dispatchEvent(event);
376
+ await specPage.waitForChanges();
377
+ expect(handleOptionListExternalKeydownSpy).toHaveBeenCalledWith(event);
378
+ });
379
+ it("'End' keypress handled by q2-option-list", async () => {
380
+ const event = new KeyboardEvent('keydown', { key: 'End' });
381
+ q2Select.dispatchEvent(event);
382
+ await specPage.waitForChanges();
383
+ expect(handleOptionListExternalKeydownSpy).toHaveBeenCalledWith(event);
384
+ });
385
+ it("'PageUp' keypress handled by q2-option-list", async () => {
386
+ const event = new KeyboardEvent('keydown', { key: 'PageUp' });
387
+ q2Select.dispatchEvent(event);
388
+ await specPage.waitForChanges();
389
+ expect(handleOptionListExternalKeydownSpy).toHaveBeenCalledWith(event);
390
+ });
391
+ it("'PageDown' keypress handled by q2-option-list", async () => {
392
+ const event = new KeyboardEvent('keydown', { key: 'PageDown' });
393
+ q2Select.dispatchEvent(event);
394
+ await specPage.waitForChanges();
395
+ expect(handleOptionListExternalKeydownSpy).toHaveBeenCalledWith(event);
396
+ });
397
+ it("'Esc' keypress handled by q2-option-list", async () => {
398
+ const event = new KeyboardEvent('keydown', { key: 'Esc' });
399
+ q2Select.dispatchEvent(event);
400
+ await specPage.waitForChanges();
401
+ expect(handleOptionListExternalKeydownSpy).toHaveBeenCalledWith(event);
402
+ });
403
+ it("'Space' keypress handled by q2-option-list", async () => {
404
+ const event = new KeyboardEvent('keydown', { key: 'Space' });
405
+ q2Select.dispatchEvent(event);
406
+ await specPage.waitForChanges();
407
+ expect(handleOptionListExternalKeydownSpy).toHaveBeenCalledWith(event);
408
+ });
409
+ });
410
+ });
411
+ });
412
+ //# sourceMappingURL=q2-select-test.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"q2-select-test.spec.js","sourceRoot":"","sources":["../../../../../src/components/q2-select/test/q2-select-test.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { SpecPage, newSpecPage } from '@stencil/core/testing';\nimport { Q2Select } from 'src/components/q2-select/q2-select';\nimport { Q2OptionList } from 'src/components/q2-option-list/q2-option-list';\nimport * as utils from 'src/utils';\n\n// Set up global screen object for testing\nconst mockScreen = {\n orientation: {\n type: 'portrait-primary',\n addEventListener: jest.fn(),\n removeEventListener: jest.fn(),\n },\n};\n(global as any).screen = mockScreen;\nObject.defineProperty(window, 'screen', {\n writable: true,\n value: mockScreen,\n});\n\n// Set up global visualViewport for testing\nconst mockVisualViewport = {\n addEventListener: jest.fn(),\n removeEventListener: jest.fn(),\n width: 800,\n height: 600,\n};\n(global as any).visualViewport = mockVisualViewport;\nObject.defineProperty(window, 'visualViewport', {\n value: mockVisualViewport,\n configurable: true,\n});\n\nconst samplePlatformDimensions = {\n scrollY: 0,\n innerHeight: 800,\n innerWidth: 600,\n outletOffset: 20,\n};\n\nconst sampleTectonWindow = {\n inMobileApp: false,\n noStrings: false,\n platformUrl: '',\n platformDimensions: samplePlatformDimensions,\n};\n\ndescribe('q2-select', () => {\n let specPage: SpecPage;\n let specSelect: Q2Select;\n let specElement;\n let isMobileSpy: jest.SpyInstance;\n let handleAriaLabelSpy: jest.SpyInstance;\n let overrideFocusSpy: jest.SpyInstance;\n\n // Helper function to set screen orientation type\n const setOrientationType = (type: string) => {\n mockScreen.orientation.type = type;\n };\n\n beforeEach(() => {\n isMobileSpy = jest.spyOn(utils, 'isMobile').mockReturnValue(false);\n handleAriaLabelSpy = jest.spyOn(utils, 'handleAriaLabel');\n overrideFocusSpy = jest.spyOn(utils, 'overrideFocus');\n\n setOrientationType('landscape-primary');\n\n (mockScreen.orientation.addEventListener as jest.Mock).mockClear();\n (mockScreen.orientation.removeEventListener as jest.Mock).mockClear();\n });\n\n afterEach(() => {\n isMobileSpy.mockRestore();\n handleAriaLabelSpy.mockRestore();\n overrideFocusSpy.mockRestore();\n });\n\n describe('Props', () => {});\n describe('Events', () => {});\n describe('Component Lifecycle Events', () => {\n describe('disconnectedCallback', () => {\n it('calls disconnect() on mutationObserver', async () => {\n specSelect = new Q2Select();\n specSelect.mutationObserver = new MutationObserver(() => {});\n const disconnectSpy = jest.spyOn(specSelect.mutationObserver, 'disconnect');\n specSelect.disconnectedCallback();\n\n expect(disconnectSpy).toHaveBeenCalled();\n });\n\n it('sets mutationObserver to null', async () => {\n specSelect = new Q2Select();\n specSelect.mutationObserver = new MutationObserver(() => {});\n\n expect(specSelect.mutationObserver).not.toBeNull();\n\n specSelect.disconnectedCallback();\n\n expect(specSelect.mutationObserver).toBeNull();\n });\n\n it('calls destroyEventListeners', async () => {\n specSelect = new Q2Select();\n const destroyEventListenersSpy = jest.spyOn(specSelect, 'destroyEventListeners');\n specSelect.disconnectedCallback();\n\n expect(destroyEventListenersSpy).toHaveBeenCalled();\n });\n });\n\n describe('componentWillLoad', () => {\n it('calls handleAriaLabel() helper function', async () => {\n specSelect = new Q2Select();\n specSelect.componentWillLoad();\n\n expect(handleAriaLabelSpy).toHaveBeenCalled();\n });\n\n it('calls handleOrientationChange', async () => {\n specSelect = new Q2Select();\n const handleOrientationChangeSpy = jest.spyOn(specSelect, 'handleOrientationChange');\n specSelect.componentWillLoad();\n\n expect(handleOrientationChangeSpy).toHaveBeenCalled();\n });\n\n it('calls buildStructuredSelectedOptions', async () => {\n specSelect = new Q2Select();\n const buildOptionsSpy = jest.spyOn(specSelect, 'buildStructuredSelectedOptions');\n specSelect.componentWillLoad();\n\n expect(buildOptionsSpy).toHaveBeenCalled();\n });\n\n it('calls handleMultilineOptionsUpdate', async () => {\n specSelect = new Q2Select();\n const handleUpdateSpy = jest.spyOn(specSelect, 'handleMultilineOptionsUpdate');\n specSelect.componentWillLoad();\n\n expect(handleUpdateSpy).toHaveBeenCalled();\n });\n });\n describe('componentDidLoad', () => {\n it('calls initMutationObserver', async () => {\n specPage = await newSpecPage({\n components: [Q2Select, Q2OptionList],\n html: `<q2-select></q2-select>`,\n });\n specSelect = specPage.rootInstance;\n const initMutationObserverSpy = jest.spyOn(specSelect, 'initMutationObserver');\n specSelect.componentDidLoad();\n\n expect(initMutationObserverSpy).toHaveBeenCalled();\n });\n\n it('calls initEventListeners', async () => {\n specPage = await newSpecPage({\n components: [Q2Select],\n html: `<q2-select></q2-select>`,\n });\n specSelect = specPage.rootInstance;\n const initEventListenersSpy = jest.spyOn(specSelect, 'initEventListeners');\n specSelect.componentDidLoad();\n\n expect(initEventListenersSpy).toHaveBeenCalled();\n });\n\n it('calls overrideFocus helper', async () => {\n specPage = await newSpecPage({\n components: [Q2Select],\n html: `<q2-select></q2-select>`,\n });\n specSelect = specPage.rootInstance;\n specElement = specPage.root;\n specSelect.componentDidLoad();\n\n expect(overrideFocusSpy).toHaveBeenCalledWith(specElement);\n });\n\n it('setTimeout calls checkSelectedDisplay', async () => {\n specPage = await newSpecPage({\n components: [Q2Select],\n html: `<q2-select></q2-select>`,\n });\n specSelect = specPage.rootInstance;\n const checkSelectedDisplaySpy = jest.spyOn(specSelect, 'checkSelectedDisplay');\n\n jest.useFakeTimers();\n specSelect.componentDidLoad();\n jest.runAllTimers();\n\n expect(checkSelectedDisplaySpy).toHaveBeenCalled();\n jest.useRealTimers();\n });\n });\n describe('componentDidRender', () => {\n it('calls forEach on scheduledAfterRender', async () => {\n specSelect = new Q2Select();\n specSelect.scheduledAfterRender = [jest.fn()];\n const forEachSpy = jest.spyOn(specSelect.scheduledAfterRender, 'forEach');\n\n jest.useFakeTimers();\n specSelect.componentDidRender();\n jest.runAllTimers();\n\n expect(forEachSpy).toHaveBeenCalled();\n jest.useRealTimers();\n });\n });\n });\n describe('Listeners', () => {});\n describe('Public Methods API', () => {\n describe('Public Methods', () => {});\n describe('Test Methods', () => {});\n });\n describe('Watchers', () => {});\n describe('Local Methods', () => {\n describe('Getters', () => {\n describe('isModule', () => {\n beforeEach(() => {\n specSelect = new Q2Select();\n });\n it('returns false when window top matches window and platformDimensions is not defined', async () => {\n expect(window.top).toBe(window);\n expect(window.Tecton).toBeUndefined();\n expect(specSelect.isModule).toBe(false);\n });\n\n it('returns false when window top does not match window and platformDimensions is not defined', async () => {\n const windowSpy = jest.spyOn(window, 'top', 'get').mockReturnValue({} as any);\n expect(window.top).not.toEqual(window);\n expect(window.Tecton).toBeUndefined();\n expect(specSelect.isModule).toBe(false);\n windowSpy.mockRestore();\n });\n\n it('returns false when window top matches window and platformDimensions is defined', async () => {\n window.Tecton = sampleTectonWindow;\n expect(window.top).toBe(window);\n expect(window.Tecton.platformDimensions).toBeTruthy();\n expect(specSelect.isModule).toBe(false);\n });\n\n it('returns true when window top does not match window and platformDimensions is defined', async () => {\n const windowSpy = jest.spyOn(window, 'top', 'get').mockReturnValue({} as any);\n window.Tecton = sampleTectonWindow;\n expect(specSelect.isModule).toBe(true);\n windowSpy.mockRestore();\n });\n });\n });\n describe('Methods', () => {\n describe('destroyEventListeners', () => {\n let windowRemoveEventListenerSpy: jest.SpyInstance;\n beforeEach(() => {\n isMobileSpy.mockReturnValue(true);\n specSelect = new Q2Select();\n mockScreen.orientation.removeEventListener.mockClear();\n windowRemoveEventListenerSpy = jest.spyOn(window, 'removeEventListener');\n mockVisualViewport.removeEventListener.mockClear();\n });\n\n it('checks if isMobile', async () => {\n specSelect = new Q2Select();\n specSelect.destroyEventListeners();\n\n expect(isMobileSpy).toHaveBeenCalled();\n });\n\n describe('when in mobile environment', () => {\n it('calls removeEventListener on screen.orientation ', async () => {\n specSelect.destroyEventListeners();\n\n expect(mockScreen.orientation.removeEventListener).toHaveBeenCalledWith(\n 'change',\n specSelect.handleOrientationChange\n );\n });\n\n it('calls removeEventListener on window', async () => {\n specSelect.destroyEventListeners();\n\n expect(windowRemoveEventListenerSpy).toHaveBeenCalledWith(\n 'resize',\n specSelect.handleOrientationChange\n );\n });\n\n it('calls removeEventListener on visualViewport', async () => {\n mockVisualViewport.removeEventListener.mockClear();\n specSelect.destroyEventListeners();\n expect(mockVisualViewport.removeEventListener).toHaveBeenCalledWith(\n 'resize',\n specSelect.handleOrientationChange\n );\n });\n });\n\n it('does NOT remove event listener when NOT mobile', async () => {\n isMobileSpy.mockReturnValue(false);\n specSelect = new Q2Select();\n specSelect.destroyEventListeners();\n\n expect(mockScreen.orientation.removeEventListener).not.toHaveBeenCalled();\n expect(windowRemoveEventListenerSpy).not.toHaveBeenCalled();\n expect(mockVisualViewport.removeEventListener).not.toHaveBeenCalled();\n });\n });\n\n describe('handleOrientationChange', () => {\n beforeEach(() => {\n isMobileSpy.mockReturnValue(true);\n specSelect = new Q2Select();\n });\n\n it('checks if isMobile', async () => {\n specSelect.handleOrientationChange();\n\n expect(isMobileSpy).toHaveBeenCalled();\n });\n\n describe('when searchable is initially true', () => {\n beforeEach(() => {\n specSelect.searchable = true;\n specSelect.originalSearchable = true;\n });\n\n it('sets \"searchable\" to false if in landscape orientation', async () => {\n setOrientationType('landscape-primary');\n specSelect.handleOrientationChange();\n\n expect(specSelect.searchable).toBe(false);\n });\n\n it('does nothing in portrait orientation', async () => {\n setOrientationType('portrait-primary');\n specSelect.handleOrientationChange();\n\n expect(specSelect.searchable).toBe(true);\n });\n\n it('restores searchable when returning to portrait', async () => {\n setOrientationType('landscape-primary');\n specSelect.handleOrientationChange();\n\n expect(specSelect.searchable).toBe(false);\n\n setOrientationType('portrait-primary');\n specSelect.handleOrientationChange();\n\n expect(specSelect.searchable).toBe(true);\n });\n });\n\n describe('when searchable is initially undefined/false', () => {\n it('does nothing', async () => {\n specSelect.originalSearchable = false;\n setOrientationType('landscape-primary');\n specSelect.handleOrientationChange();\n\n expect(specSelect.searchable).toBe(false);\n });\n });\n });\n\n describe('initEventListeners', () => {\n let windowAddEventListenerSpy: jest.SpyInstance;\n beforeEach(() => {\n isMobileSpy.mockReturnValue(true);\n specSelect = new Q2Select();\n mockScreen.orientation.addEventListener.mockClear();\n windowAddEventListenerSpy = jest.spyOn(window, 'addEventListener');\n mockVisualViewport.addEventListener.mockClear();\n });\n\n it('checks if isMobile', async () => {\n specSelect = new Q2Select();\n specSelect.initEventListeners();\n\n expect(isMobileSpy).toHaveBeenCalled();\n });\n\n describe('when in mobile environment', () => {\n it('calls addEventListener on screen.orientation', async () => {\n specSelect.initEventListeners();\n\n expect(mockScreen.orientation.addEventListener).toHaveBeenCalledWith(\n 'change',\n specSelect.handleOrientationChange\n );\n });\n\n it('calls addEventListener on window', async () => {\n specSelect.initEventListeners();\n\n expect(windowAddEventListenerSpy).toHaveBeenCalledWith(\n 'resize',\n specSelect.handleOrientationChange\n );\n });\n\n it('calls addEventListener on visualViewport', async () => {\n specSelect.initEventListeners();\n\n expect(mockVisualViewport.addEventListener).toHaveBeenCalledWith(\n 'resize',\n specSelect.handleOrientationChange\n );\n });\n });\n\n it('does NOT add event listener when NOT mobile', async () => {\n isMobileSpy.mockReturnValue(false);\n specSelect = new Q2Select();\n specSelect.initEventListeners();\n\n expect(mockScreen.orientation.addEventListener).not.toHaveBeenCalled();\n expect(mockVisualViewport.addEventListener).not.toHaveBeenCalled();\n expect(windowAddEventListenerSpy).not.toHaveBeenCalled();\n });\n });\n });\n });\n describe('Render Methods', () => {});\n\n describe('Accessibility', () => {\n describe('Keyboard Controls', () => {\n let handleOptionListExternalKeydownSpy: jest.SpyInstance;\n let q2Select: HTMLQ2SelectElement;\n beforeEach(async () => {\n specPage = await newSpecPage({\n components: [Q2Select, Q2OptionList],\n html: `<q2-select></q2-select>`,\n });\n q2Select = specPage.root as HTMLQ2SelectElement;\n const q2SelectInstance = specPage.rootInstance as Q2Select;\n handleOptionListExternalKeydownSpy = jest.spyOn(q2SelectInstance, 'handleOptionListExternalKeydown');\n });\n afterEach(() => {\n handleOptionListExternalKeydownSpy.mockRestore();\n });\n it(\"'Tab' keypress not handled by q2-option-list\", async () => {\n const event = new KeyboardEvent('keydown', { key: 'Tab' });\n q2Select.dispatchEvent(event);\n await specPage.waitForChanges();\n\n expect(handleOptionListExternalKeydownSpy).toHaveBeenCalledWith(event);\n });\n it(\"'Enter' keypress handled by q2-option-list\", async () => {\n const event = new KeyboardEvent('keydown', { key: 'Enter' });\n q2Select.dispatchEvent(event);\n await specPage.waitForChanges();\n\n expect(handleOptionListExternalKeydownSpy).toHaveBeenCalledWith(event);\n });\n it(\"'ArrowUp' keypress handled by q2-option-list\", async () => {\n const event = new KeyboardEvent('keydown', { key: 'ArrowUp' });\n q2Select.dispatchEvent(event);\n await specPage.waitForChanges();\n\n expect(handleOptionListExternalKeydownSpy).toHaveBeenCalledWith(event);\n });\n it(\"'ArrowDown' keypress handled by q2-option-list\", async () => {\n const event = new KeyboardEvent('keydown', { key: 'ArrowDown' });\n q2Select.dispatchEvent(event);\n await specPage.waitForChanges();\n\n expect(handleOptionListExternalKeydownSpy).toHaveBeenCalledWith(event);\n });\n it(\"'Home' keypress handled by q2-option-list\", async () => {\n const event = new KeyboardEvent('keydown', { key: 'Home' });\n q2Select.dispatchEvent(event);\n await specPage.waitForChanges();\n\n expect(handleOptionListExternalKeydownSpy).toHaveBeenCalledWith(event);\n });\n it(\"'End' keypress handled by q2-option-list\", async () => {\n const event = new KeyboardEvent('keydown', { key: 'End' });\n q2Select.dispatchEvent(event);\n await specPage.waitForChanges();\n\n expect(handleOptionListExternalKeydownSpy).toHaveBeenCalledWith(event);\n });\n it(\"'PageUp' keypress handled by q2-option-list\", async () => {\n const event = new KeyboardEvent('keydown', { key: 'PageUp' });\n q2Select.dispatchEvent(event);\n await specPage.waitForChanges();\n\n expect(handleOptionListExternalKeydownSpy).toHaveBeenCalledWith(event);\n });\n it(\"'PageDown' keypress handled by q2-option-list\", async () => {\n const event = new KeyboardEvent('keydown', { key: 'PageDown' });\n q2Select.dispatchEvent(event);\n await specPage.waitForChanges();\n\n expect(handleOptionListExternalKeydownSpy).toHaveBeenCalledWith(event);\n });\n it(\"'Esc' keypress handled by q2-option-list\", async () => {\n const event = new KeyboardEvent('keydown', { key: 'Esc' });\n q2Select.dispatchEvent(event);\n await specPage.waitForChanges();\n\n expect(handleOptionListExternalKeydownSpy).toHaveBeenCalledWith(event);\n });\n it(\"'Space' keypress handled by q2-option-list\", async () => {\n const event = new KeyboardEvent('keydown', { key: 'Space' });\n q2Select.dispatchEvent(event);\n await specPage.waitForChanges();\n\n expect(handleOptionListExternalKeydownSpy).toHaveBeenCalledWith(event);\n });\n });\n });\n});\n"]}
@@ -243,7 +243,7 @@ export class Q2Stepper {
243
243
  const containerClasses = ['step-container'];
244
244
  if (scrollEnabled)
245
245
  containerClasses.push('has-scroll');
246
- return (h(Fragment, { key: '301bb6d606d272d94d410fe02b7cbbd77fff9df6' }, h("div", { key: '092a53f199221b012f134b5570d809961ccb128a', class: containerClasses.join(' ') }, scrollEnabled && (h(Fragment, { key: '7de8b86ec973640795bd6639bb65722eeb6b5635' }, h("div", { key: '1be776974e4925344468a763bc031d69c84933da', class: "gradient-left", hidden: !showScrollLeft }), h("div", { key: '634e94553a5671a7ca5db5cf71e875cb96281e58', class: "gradient-right", hidden: !showScrollRight }), h("q2-btn", { key: '2387f9ed1f6cb08cafb07b6cf212094e61ebe197', class: "btn-left", hideLabel: true, hidden: !this.showScrollLeft, label: loc('tecton.element.stepper.scrollLeft'), onClick: () => this.onScrollBtnClick('left') }, h("q2-icon", { key: 'a80f570480facea5601eb5e39cefe39a251c85a2', type: "chevron-left" })), h("q2-btn", { key: '515178ad7c257c69e52a8fd0b70228d51586e3b1', class: "btn-right", hideLabel: true, hidden: !this.showScrollRight, label: loc('tecton.element.stepper.scrollRight'), onClick: () => this.onScrollBtnClick('right') }, h("q2-icon", { key: '198eeec44ee4ec3770b8433eac622c9e6ce8e267', type: "chevron-right" })))), h("ul", { key: 'd2e70be7ead2e575dbf621a038565a60b00e8fc3', onScroll: this.checkScrollState, ref: el => (this.listElement = el), role: "tablist" }, stepCount > 0 && [...Array(stepCount).keys()].map(stepIndex => this.renderStepBtn(stepIndex)))), h("div", { key: '94323e24a7b470daebc0f3c36512ef8068b7f8ce', role: "list" }, h("slot", { key: 'b87444498045a57258ec22830ffdf0af65502731', onSlotchange: () => this.onSlotChange() }))));
246
+ return (h(Fragment, { key: 'b5e3113cf973ac76ba9bc3234787a9880b60f71c' }, h("div", { key: '3c6a14b11e62052e01705ab487110010e9cc8794', class: containerClasses.join(' ') }, scrollEnabled && (h(Fragment, { key: '5f4e99177c34f403748aafe06623f70160939c2b' }, h("div", { key: 'bbf93c3ffc0b6b93036ee876228aeceb42152765', class: "gradient-left", hidden: !showScrollLeft }), h("div", { key: '9ca0c409de7b0eaa920d009706238b454f37a787', class: "gradient-right", hidden: !showScrollRight }), h("q2-btn", { key: 'df254f93832bbee48e921f7e524ac6682818c760', class: "btn-left", hideLabel: true, hidden: !this.showScrollLeft, label: loc('tecton.element.stepper.scrollLeft'), onClick: () => this.onScrollBtnClick('left') }, h("q2-icon", { key: 'f37c853db96405216a966f2cb3328aaf556767f1', type: "chevron-left" })), h("q2-btn", { key: '86100777aae91dfe07efa09d442cad1cab2a2193', class: "btn-right", hideLabel: true, hidden: !this.showScrollRight, label: loc('tecton.element.stepper.scrollRight'), onClick: () => this.onScrollBtnClick('right') }, h("q2-icon", { key: '63018ee77b14aac768436535b251b4d693e199df', type: "chevron-right" })))), h("ul", { key: 'c9755003117e4e4e15dbf232b457bbbd3a0e7f10', onScroll: this.checkScrollState, ref: el => (this.listElement = el), role: "tablist" }, stepCount > 0 && [...Array(stepCount).keys()].map(stepIndex => this.renderStepBtn(stepIndex)))), h("div", { key: 'adde2371383726e3577f9b2483316fce7c927155', role: "list" }, h("slot", { key: 'f0f452d46f5a6cff90c645d31a6d3bdbe5b30e8b', onSlotchange: () => this.onSlotChange() }))));
247
247
  }
248
248
  static get is() { return "q2-stepper"; }
249
249
  static get encapsulation() { return "shadow"; }