q2-tecton-elements 1.45.3 → 1.45.5

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 (332) hide show
  1. package/dist/cjs/click-elsewhere_2.cjs.entry.js +80 -38
  2. package/dist/cjs/click-elsewhere_2.cjs.entry.js.map +1 -1
  3. package/dist/cjs/{index-0e15dc8d.js → index-d1633d7b.js} +33 -1
  4. package/dist/cjs/index-d1633d7b.js.map +1 -0
  5. package/dist/cjs/{index-0430339e.js → index-f69742cf.js} +1 -1
  6. package/dist/cjs/{index-0430339e.js.map → index-f69742cf.js.map} +1 -1
  7. package/dist/cjs/loader.cjs.js +1 -1
  8. package/dist/cjs/q2-action-sheet.cjs.entry.js +2 -2
  9. package/dist/cjs/q2-avatar.cjs.entry.js +1 -1
  10. package/dist/cjs/q2-btn_2.cjs.entry.js +1 -1
  11. package/dist/cjs/q2-calendar.cjs.entry.js +3 -3
  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 +2 -2
  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 +2 -2
  19. package/dist/cjs/q2-checkbox.cjs.entry.js +2 -2
  20. package/dist/cjs/q2-currency.cjs.entry.js +1 -1
  21. package/dist/cjs/q2-data-table.cjs.entry.js +2 -2
  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 +4 -2
  25. package/dist/cjs/q2-dropdown.cjs.entry.js.map +1 -1
  26. package/dist/cjs/q2-editable-field.cjs.entry.js +2 -2
  27. package/dist/cjs/q2-icon.cjs.entry.js +1 -1
  28. package/dist/cjs/q2-icon.cjs.entry.js.map +1 -1
  29. package/dist/cjs/q2-input.cjs.entry.js +2 -2
  30. package/dist/cjs/q2-item.cjs.entry.js +2 -2
  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_2.cjs.entry.js +3 -3
  36. package/dist/cjs/q2-option-list.cjs.entry.js +2 -2
  37. package/dist/cjs/q2-pagination.cjs.entry.js +3 -3
  38. package/dist/cjs/q2-pill.cjs.entry.js +2 -2
  39. package/dist/cjs/q2-radio-group.cjs.entry.js +2 -2
  40. package/dist/cjs/q2-radio.cjs.entry.js +2 -2
  41. package/dist/cjs/q2-relative-time.cjs.entry.js +2 -2
  42. package/dist/cjs/q2-section.cjs.entry.js +3 -3
  43. package/dist/cjs/q2-select.cjs.entry.js +100 -11
  44. package/dist/cjs/q2-select.cjs.entry.js.map +1 -1
  45. package/dist/cjs/q2-stepper-pane.cjs.entry.js +2 -2
  46. package/dist/cjs/q2-stepper-vertical.cjs.entry.js +1 -1
  47. package/dist/cjs/q2-stepper.cjs.entry.js +2 -2
  48. package/dist/cjs/q2-tab-container.cjs.entry.js +1 -1
  49. package/dist/cjs/q2-tag.cjs.entry.js +1 -1
  50. package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
  51. package/dist/cjs/q2-textarea.cjs.entry.js +2 -2
  52. package/dist/cjs/q2-tooltip.cjs.entry.js +1 -1
  53. package/dist/collection/collection-manifest.json +5 -5
  54. package/dist/collection/components/q2-action-sheet/q2-action-sheet.js +1 -1
  55. package/dist/collection/components/q2-avatar/q2-avatar.js +1 -1
  56. package/dist/collection/components/q2-calendar/q2-calendar.js +1 -1
  57. package/dist/collection/components/q2-calendar/q2-month-picker.js +2 -2
  58. package/dist/collection/components/q2-carousel/q2-carousel.js +1 -1
  59. package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.js +2 -2
  60. package/dist/collection/components/q2-chart-area/q2-chart-area.js +1 -1
  61. package/dist/collection/components/q2-chart-bar/q2-chart-bar.js +1 -1
  62. package/dist/collection/components/q2-chart-donut/q2-chart-donut.js +1 -1
  63. package/dist/collection/components/q2-checkbox/q2-checkbox.js +1 -1
  64. package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.js +1 -1
  65. package/dist/collection/components/q2-currency/q2-currency.js +1 -1
  66. package/dist/collection/components/q2-data-table/q2-data-table.js +7 -7
  67. package/dist/collection/components/q2-detail/q2-detail.js +1 -1
  68. package/dist/collection/components/q2-dropdown/q2-dropdown.js +3 -1
  69. package/dist/collection/components/q2-dropdown/q2-dropdown.js.map +1 -1
  70. package/dist/collection/components/q2-editable-field/q2-editable-field.js +2 -2
  71. package/dist/collection/components/q2-icon/q2-icon.js.map +1 -1
  72. package/dist/collection/components/q2-input/q2-input.js +2 -2
  73. package/dist/collection/components/q2-item/q2-item.js +1 -1
  74. package/dist/collection/components/q2-list/q2-list.js +1 -1
  75. package/dist/collection/components/q2-loc/q2-loc.js +1 -1
  76. package/dist/collection/components/q2-message/q2-message.js +1 -1
  77. package/dist/collection/components/q2-optgroup/q2-optgroup.js +1 -1
  78. package/dist/collection/components/q2-option/q2-option.js +1 -1
  79. package/dist/collection/components/q2-option-list/q2-option-list.js +4 -4
  80. package/dist/collection/components/q2-pagination/q2-pagination.js +2 -2
  81. package/dist/collection/components/q2-pill/q2-pill.js +1 -1
  82. package/dist/collection/components/q2-popover/q2-popover.css +19 -11
  83. package/dist/collection/components/q2-popover/q2-popover.js +81 -38
  84. package/dist/collection/components/q2-popover/q2-popover.js.map +1 -1
  85. package/dist/collection/components/q2-radio/q2-radio.js +1 -1
  86. package/dist/collection/components/q2-radio-group/q2-radio-group.js +1 -1
  87. package/dist/collection/components/q2-relative-time/q2-relative-time.js +1 -1
  88. package/dist/collection/components/q2-section/q2-section.js +2 -2
  89. package/dist/collection/components/q2-select/q2-select.js +108 -12
  90. package/dist/collection/components/q2-select/q2-select.js.map +1 -1
  91. package/dist/collection/components/q2-stepper/q2-stepper.js +1 -1
  92. package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.js +3 -3
  93. package/dist/collection/components/q2-textarea/q2-textarea.js +1 -1
  94. package/dist/collection/utils/index.js +31 -0
  95. package/dist/collection/utils/index.js.map +1 -1
  96. package/dist/components/index2.js +32 -1
  97. package/dist/components/index2.js.map +1 -1
  98. package/dist/components/q2-action-sheet.js +1 -1
  99. package/dist/components/q2-avatar2.js +1 -1
  100. package/dist/components/q2-calendar.js +1 -1
  101. package/dist/components/q2-carousel-pane.js +2 -2
  102. package/dist/components/q2-carousel.js +1 -1
  103. package/dist/components/q2-chart-area.js +1 -1
  104. package/dist/components/q2-chart-bar.js +1 -1
  105. package/dist/components/q2-chart-donut.js +1 -1
  106. package/dist/components/q2-checkbox-group.js +1 -1
  107. package/dist/components/q2-checkbox2.js +1 -1
  108. package/dist/components/q2-currency.js +1 -1
  109. package/dist/components/q2-data-table.js +1 -1
  110. package/dist/components/q2-detail.js +1 -1
  111. package/dist/components/q2-dropdown.js +3 -1
  112. package/dist/components/q2-dropdown.js.map +1 -1
  113. package/dist/components/q2-editable-field.js +1 -1
  114. package/dist/components/q2-icon2.js.map +1 -1
  115. package/dist/components/q2-input2.js +1 -1
  116. package/dist/components/q2-item.js +1 -1
  117. package/dist/components/q2-list.js +1 -1
  118. package/dist/components/q2-loc.js +1 -1
  119. package/dist/components/q2-message2.js +1 -1
  120. package/dist/components/q2-month-picker.js +2 -2
  121. package/dist/components/q2-optgroup2.js +1 -1
  122. package/dist/components/q2-option-list2.js +1 -1
  123. package/dist/components/q2-option2.js +1 -1
  124. package/dist/components/q2-pagination.js +2 -2
  125. package/dist/components/q2-pill.js +1 -1
  126. package/dist/components/q2-popover2.js +80 -38
  127. package/dist/components/q2-popover2.js.map +1 -1
  128. package/dist/components/q2-radio-group.js +1 -1
  129. package/dist/components/q2-radio.js +1 -1
  130. package/dist/components/q2-relative-time.js +1 -1
  131. package/dist/components/q2-section.js +2 -2
  132. package/dist/components/q2-select.js +101 -12
  133. package/dist/components/q2-select.js.map +1 -1
  134. package/dist/components/q2-stepper-pane.js +1 -1
  135. package/dist/components/q2-stepper.js +1 -1
  136. package/dist/components/q2-textarea.js +1 -1
  137. package/dist/esm/click-elsewhere_2.entry.js +80 -38
  138. package/dist/esm/click-elsewhere_2.entry.js.map +1 -1
  139. package/dist/esm/{index-e940b40e.js → index-3184c760.js} +1 -1
  140. package/dist/esm/{index-e940b40e.js.map → index-3184c760.js.map} +1 -1
  141. package/dist/esm/{index-0a702dd6.js → index-bcdf5800.js} +33 -2
  142. package/dist/esm/index-bcdf5800.js.map +1 -0
  143. package/dist/esm/loader.js +1 -1
  144. package/dist/esm/q2-action-sheet.entry.js +2 -2
  145. package/dist/esm/q2-avatar.entry.js +1 -1
  146. package/dist/esm/q2-btn_2.entry.js +1 -1
  147. package/dist/esm/q2-calendar.entry.js +3 -3
  148. package/dist/esm/q2-card.entry.js +1 -1
  149. package/dist/esm/q2-carousel-pane.entry.js +3 -3
  150. package/dist/esm/q2-carousel.entry.js +2 -2
  151. package/dist/esm/q2-chart-area.entry.js +2 -2
  152. package/dist/esm/q2-chart-bar.entry.js +2 -2
  153. package/dist/esm/q2-chart-donut.entry.js +2 -2
  154. package/dist/esm/q2-checkbox-group.entry.js +2 -2
  155. package/dist/esm/q2-checkbox.entry.js +2 -2
  156. package/dist/esm/q2-currency.entry.js +1 -1
  157. package/dist/esm/q2-data-table.entry.js +2 -2
  158. package/dist/esm/q2-detail.entry.js +2 -2
  159. package/dist/esm/q2-dropdown-item.entry.js +1 -1
  160. package/dist/esm/q2-dropdown.entry.js +4 -2
  161. package/dist/esm/q2-dropdown.entry.js.map +1 -1
  162. package/dist/esm/q2-editable-field.entry.js +2 -2
  163. package/dist/esm/q2-icon.entry.js +1 -1
  164. package/dist/esm/q2-icon.entry.js.map +1 -1
  165. package/dist/esm/q2-input.entry.js +2 -2
  166. package/dist/esm/q2-item.entry.js +2 -2
  167. package/dist/esm/q2-list.entry.js +2 -2
  168. package/dist/esm/q2-loc.entry.js +2 -2
  169. package/dist/esm/q2-message.entry.js +2 -2
  170. package/dist/esm/q2-month-picker.entry.js +3 -3
  171. package/dist/esm/q2-optgroup_2.entry.js +3 -3
  172. package/dist/esm/q2-option-list.entry.js +2 -2
  173. package/dist/esm/q2-pagination.entry.js +3 -3
  174. package/dist/esm/q2-pill.entry.js +2 -2
  175. package/dist/esm/q2-radio-group.entry.js +2 -2
  176. package/dist/esm/q2-radio.entry.js +2 -2
  177. package/dist/esm/q2-relative-time.entry.js +2 -2
  178. package/dist/esm/q2-section.entry.js +3 -3
  179. package/dist/esm/q2-select.entry.js +100 -11
  180. package/dist/esm/q2-select.entry.js.map +1 -1
  181. package/dist/esm/q2-stepper-pane.entry.js +2 -2
  182. package/dist/esm/q2-stepper-vertical.entry.js +1 -1
  183. package/dist/esm/q2-stepper.entry.js +2 -2
  184. package/dist/esm/q2-tab-container.entry.js +1 -1
  185. package/dist/esm/q2-tag.entry.js +1 -1
  186. package/dist/esm/q2-tecton-elements.js +1 -1
  187. package/dist/esm/q2-textarea.entry.js +2 -2
  188. package/dist/esm/q2-tooltip.entry.js +1 -1
  189. package/dist/jest.setup.js +33 -0
  190. package/dist/jest.setup.js.map +1 -0
  191. package/dist/q2-tecton-elements/{p-c016bd18.entry.js → p-0a34d6b0.entry.js} +2 -2
  192. package/dist/q2-tecton-elements/{p-d635e39f.entry.js → p-0f0bf0c8.entry.js} +2 -2
  193. package/dist/q2-tecton-elements/{p-4b81a121.entry.js → p-100938c8.entry.js} +2 -2
  194. package/dist/q2-tecton-elements/{p-71180fcd.entry.js → p-16316638.entry.js} +2 -2
  195. package/dist/q2-tecton-elements/{p-7c12ba02.entry.js → p-19d06f9f.entry.js} +2 -2
  196. package/dist/q2-tecton-elements/{p-debd5249.entry.js → p-1ac97a0c.entry.js} +2 -2
  197. package/dist/q2-tecton-elements/{p-b3d10d52.entry.js → p-1c5ae6c1.entry.js} +2 -2
  198. package/dist/q2-tecton-elements/{p-445990a8.entry.js → p-1d8bfe8e.entry.js} +2 -2
  199. package/dist/q2-tecton-elements/{p-a214077c.entry.js → p-2adbc99f.entry.js} +2 -2
  200. package/dist/q2-tecton-elements/{p-f0813fb4.entry.js → p-2b512eb9.entry.js} +2 -2
  201. package/dist/q2-tecton-elements/p-2b512eb9.entry.js.map +1 -0
  202. package/dist/q2-tecton-elements/{p-391acc00.entry.js → p-33ac1c35.entry.js} +2 -2
  203. package/dist/q2-tecton-elements/{p-515d424b.entry.js → p-3892b0eb.entry.js} +2 -2
  204. package/dist/q2-tecton-elements/{p-63192fac.entry.js → p-3cf22783.entry.js} +2 -2
  205. package/dist/q2-tecton-elements/{p-df297a77.entry.js → p-49b6b300.entry.js} +2 -2
  206. package/dist/q2-tecton-elements/p-4cec59d6.entry.js +2 -0
  207. package/dist/q2-tecton-elements/p-4cec59d6.entry.js.map +1 -0
  208. package/dist/q2-tecton-elements/{p-50bd4437.entry.js → p-556b18ac.entry.js} +2 -2
  209. package/dist/q2-tecton-elements/{p-3b1ea100.entry.js → p-557e47c0.entry.js} +2 -2
  210. package/dist/q2-tecton-elements/{p-fcc84527.entry.js → p-5604e541.entry.js} +2 -2
  211. package/dist/q2-tecton-elements/{p-b376c111.entry.js → p-5af4926e.entry.js} +2 -2
  212. package/dist/q2-tecton-elements/{p-d9e19f70.entry.js → p-632e1e0c.entry.js} +2 -2
  213. package/dist/q2-tecton-elements/{p-1c17d118.entry.js → p-69df8a32.entry.js} +2 -2
  214. package/dist/q2-tecton-elements/{p-7523305d.entry.js → p-8463a1bb.entry.js} +2 -2
  215. package/dist/q2-tecton-elements/p-8ba6e825.js +2 -0
  216. package/dist/q2-tecton-elements/p-8ba6e825.js.map +1 -0
  217. package/dist/q2-tecton-elements/{p-57bf9342.entry.js → p-8e047dc7.entry.js} +2 -2
  218. package/dist/q2-tecton-elements/{p-4bbe563f.entry.js → p-911b7798.entry.js} +2 -2
  219. package/dist/q2-tecton-elements/{p-aec64fcb.entry.js → p-998ced65.entry.js} +2 -2
  220. package/dist/q2-tecton-elements/{p-2132da06.entry.js → p-a39898b8.entry.js} +2 -2
  221. package/dist/q2-tecton-elements/{p-a977e723.entry.js → p-a3e711e5.entry.js} +2 -2
  222. package/dist/q2-tecton-elements/{p-22661533.entry.js → p-a68fd5f3.entry.js} +2 -2
  223. package/dist/q2-tecton-elements/{p-bffda54d.entry.js → p-a9c6ebda.entry.js} +2 -2
  224. package/dist/q2-tecton-elements/{p-4570ff06.entry.js → p-b41960b3.entry.js} +2 -2
  225. package/dist/q2-tecton-elements/{p-f1265647.entry.js → p-bc199dfa.entry.js} +2 -2
  226. package/dist/q2-tecton-elements/{p-47868d6d.entry.js → p-c1f32312.entry.js} +2 -2
  227. package/dist/q2-tecton-elements/{p-05b015a8.entry.js → p-cb21467a.entry.js} +2 -2
  228. package/dist/q2-tecton-elements/p-cd01a560.entry.js +2 -0
  229. package/dist/q2-tecton-elements/{p-bfe9d688.entry.js.map → p-cd01a560.entry.js.map} +1 -1
  230. package/dist/q2-tecton-elements/{p-b7d5fd12.entry.js → p-ce907c0c.entry.js} +2 -2
  231. package/dist/q2-tecton-elements/p-da6c1104.entry.js +2 -0
  232. package/dist/q2-tecton-elements/p-da6c1104.entry.js.map +1 -0
  233. package/dist/q2-tecton-elements/{p-dc057a9c.entry.js → p-e05ddf75.entry.js} +2 -2
  234. package/dist/q2-tecton-elements/{p-d1a9ed3d.entry.js → p-e168e356.entry.js} +2 -2
  235. package/dist/q2-tecton-elements/{p-5dc5c4e2.entry.js → p-e216d48d.entry.js} +2 -2
  236. package/dist/q2-tecton-elements/{p-aed969d4.entry.js → p-e77d1a92.entry.js} +2 -2
  237. package/dist/q2-tecton-elements/{p-7ce6e587.js → p-f1e887f5.js} +1 -1
  238. package/dist/q2-tecton-elements/{p-e762526f.entry.js → p-fe6db5c3.entry.js} +2 -2
  239. package/dist/q2-tecton-elements/{p-2436c843.entry.js → p-ff541a15.entry.js} +2 -2
  240. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
  241. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js.map +1 -1
  242. package/dist/test/elements/q2-calendar-test.e2e.js +3 -3
  243. package/dist/test/elements/q2-calendar-test.e2e.js.map +1 -1
  244. package/dist/test/elements/q2-dropdown-test.e2e.js +2 -14
  245. package/dist/test/elements/q2-dropdown-test.e2e.js.map +1 -1
  246. package/dist/test/elements/q2-pagination-test.e2e.js +1 -1
  247. package/dist/test/elements/q2-pagination-test.e2e.js.map +1 -1
  248. package/dist/test/elements/q2-pill-test.e2e.js +1 -1
  249. package/dist/test/elements/q2-pill-test.e2e.js.map +1 -1
  250. package/dist/test/elements/q2-popover-test.e2e.js +1 -34
  251. package/dist/test/elements/q2-popover-test.e2e.js.map +1 -1
  252. package/dist/test/elements/q2-popover-test.spec.js +896 -374
  253. package/dist/test/elements/q2-popover-test.spec.js.map +1 -1
  254. package/dist/test/elements/q2-select-test.e2e.js +1 -1
  255. package/dist/test/elements/q2-select-test.e2e.js.map +1 -1
  256. package/dist/test/elements/q2-select-test.spec.js +552 -0
  257. package/dist/test/elements/q2-select-test.spec.js.map +1 -0
  258. package/dist/test/elements/q2-tag-test.e2e.js +1 -1
  259. package/dist/test/elements/q2-tag-test.e2e.js.map +1 -1
  260. package/dist/types/builds/q2e/development/tecton/tecton/packages/q2-tecton-elements/.stencil/jest.setup.d.ts +10 -0
  261. package/dist/types/components/q2-action-sheet/q2-action-sheet.d.ts +60 -0
  262. package/dist/types/components/q2-calendar/q2-calendar.d.ts +324 -0
  263. package/dist/types/components/q2-carousel/q2-carousel.d.ts +2 -2
  264. package/dist/types/components/q2-data-table/q2-data-table.d.ts +221 -0
  265. package/dist/types/components/q2-dropdown/q2-dropdown.d.ts +130 -0
  266. package/dist/types/components/q2-dropdown-item/q2-dropdown-item.d.ts +45 -0
  267. package/dist/types/components/q2-editable-field/q2-editable-field.d.ts +136 -0
  268. package/dist/types/components/q2-loading/skeleton/shapes.d.ts +1 -0
  269. package/dist/types/components/q2-optgroup/q2-optgroup.d.ts +1 -1
  270. package/dist/types/components/q2-option-list/q2-option-list.d.ts +99 -0
  271. package/dist/types/components/q2-pagination/q2-pagination.d.ts +54 -0
  272. package/dist/types/components/q2-pill/q2-pill.d.ts +102 -0
  273. package/dist/types/components/q2-popover/q2-popover.d.ts +5 -3
  274. package/dist/types/components/q2-select/q2-select.d.ts +240 -0
  275. package/dist/types/components/q2-stepper/q2-stepper.d.ts +52 -0
  276. package/dist/types/components/q2-stepper-vertical/q2-stepper-vertical.d.ts +62 -0
  277. package/dist/types/components/q2-tab-container/q2-tab-container.d.ts +2 -2
  278. package/dist/types/components/q2-tag/q2-tag.d.ts +59 -0
  279. package/dist/types/utils/action-sheet.d.ts +12 -0
  280. package/dist/types/utils/index.d.ts +1 -0
  281. package/package.json +3 -3
  282. package/dist/cjs/index-0e15dc8d.js.map +0 -1
  283. package/dist/esm/index-0a702dd6.js.map +0 -1
  284. package/dist/q2-tecton-elements/p-42302f6f.js +0 -2
  285. package/dist/q2-tecton-elements/p-42302f6f.js.map +0 -1
  286. package/dist/q2-tecton-elements/p-68556733.entry.js +0 -2
  287. package/dist/q2-tecton-elements/p-68556733.entry.js.map +0 -1
  288. package/dist/q2-tecton-elements/p-bfe9d688.entry.js +0 -2
  289. package/dist/q2-tecton-elements/p-cadceb00.entry.js +0 -2
  290. package/dist/q2-tecton-elements/p-cadceb00.entry.js.map +0 -1
  291. package/dist/q2-tecton-elements/p-f0813fb4.entry.js.map +0 -1
  292. /package/dist/q2-tecton-elements/{p-c016bd18.entry.js.map → p-0a34d6b0.entry.js.map} +0 -0
  293. /package/dist/q2-tecton-elements/{p-d635e39f.entry.js.map → p-0f0bf0c8.entry.js.map} +0 -0
  294. /package/dist/q2-tecton-elements/{p-4b81a121.entry.js.map → p-100938c8.entry.js.map} +0 -0
  295. /package/dist/q2-tecton-elements/{p-71180fcd.entry.js.map → p-16316638.entry.js.map} +0 -0
  296. /package/dist/q2-tecton-elements/{p-7c12ba02.entry.js.map → p-19d06f9f.entry.js.map} +0 -0
  297. /package/dist/q2-tecton-elements/{p-debd5249.entry.js.map → p-1ac97a0c.entry.js.map} +0 -0
  298. /package/dist/q2-tecton-elements/{p-b3d10d52.entry.js.map → p-1c5ae6c1.entry.js.map} +0 -0
  299. /package/dist/q2-tecton-elements/{p-445990a8.entry.js.map → p-1d8bfe8e.entry.js.map} +0 -0
  300. /package/dist/q2-tecton-elements/{p-a214077c.entry.js.map → p-2adbc99f.entry.js.map} +0 -0
  301. /package/dist/q2-tecton-elements/{p-391acc00.entry.js.map → p-33ac1c35.entry.js.map} +0 -0
  302. /package/dist/q2-tecton-elements/{p-515d424b.entry.js.map → p-3892b0eb.entry.js.map} +0 -0
  303. /package/dist/q2-tecton-elements/{p-63192fac.entry.js.map → p-3cf22783.entry.js.map} +0 -0
  304. /package/dist/q2-tecton-elements/{p-df297a77.entry.js.map → p-49b6b300.entry.js.map} +0 -0
  305. /package/dist/q2-tecton-elements/{p-50bd4437.entry.js.map → p-556b18ac.entry.js.map} +0 -0
  306. /package/dist/q2-tecton-elements/{p-3b1ea100.entry.js.map → p-557e47c0.entry.js.map} +0 -0
  307. /package/dist/q2-tecton-elements/{p-fcc84527.entry.js.map → p-5604e541.entry.js.map} +0 -0
  308. /package/dist/q2-tecton-elements/{p-b376c111.entry.js.map → p-5af4926e.entry.js.map} +0 -0
  309. /package/dist/q2-tecton-elements/{p-d9e19f70.entry.js.map → p-632e1e0c.entry.js.map} +0 -0
  310. /package/dist/q2-tecton-elements/{p-1c17d118.entry.js.map → p-69df8a32.entry.js.map} +0 -0
  311. /package/dist/q2-tecton-elements/{p-7523305d.entry.js.map → p-8463a1bb.entry.js.map} +0 -0
  312. /package/dist/q2-tecton-elements/{p-57bf9342.entry.js.map → p-8e047dc7.entry.js.map} +0 -0
  313. /package/dist/q2-tecton-elements/{p-4bbe563f.entry.js.map → p-911b7798.entry.js.map} +0 -0
  314. /package/dist/q2-tecton-elements/{p-aec64fcb.entry.js.map → p-998ced65.entry.js.map} +0 -0
  315. /package/dist/q2-tecton-elements/{p-2132da06.entry.js.map → p-a39898b8.entry.js.map} +0 -0
  316. /package/dist/q2-tecton-elements/{p-a977e723.entry.js.map → p-a3e711e5.entry.js.map} +0 -0
  317. /package/dist/q2-tecton-elements/{p-22661533.entry.js.map → p-a68fd5f3.entry.js.map} +0 -0
  318. /package/dist/q2-tecton-elements/{p-bffda54d.entry.js.map → p-a9c6ebda.entry.js.map} +0 -0
  319. /package/dist/q2-tecton-elements/{p-4570ff06.entry.js.map → p-b41960b3.entry.js.map} +0 -0
  320. /package/dist/q2-tecton-elements/{p-f1265647.entry.js.map → p-bc199dfa.entry.js.map} +0 -0
  321. /package/dist/q2-tecton-elements/{p-47868d6d.entry.js.map → p-c1f32312.entry.js.map} +0 -0
  322. /package/dist/q2-tecton-elements/{p-05b015a8.entry.js.map → p-cb21467a.entry.js.map} +0 -0
  323. /package/dist/q2-tecton-elements/{p-b7d5fd12.entry.js.map → p-ce907c0c.entry.js.map} +0 -0
  324. /package/dist/q2-tecton-elements/{p-dc057a9c.entry.js.map → p-e05ddf75.entry.js.map} +0 -0
  325. /package/dist/q2-tecton-elements/{p-d1a9ed3d.entry.js.map → p-e168e356.entry.js.map} +0 -0
  326. /package/dist/q2-tecton-elements/{p-5dc5c4e2.entry.js.map → p-e216d48d.entry.js.map} +0 -0
  327. /package/dist/q2-tecton-elements/{p-aed969d4.entry.js.map → p-e77d1a92.entry.js.map} +0 -0
  328. /package/dist/q2-tecton-elements/{p-7ce6e587.js.map → p-f1e887f5.js.map} +0 -0
  329. /package/dist/q2-tecton-elements/{p-e762526f.entry.js.map → p-fe6db5c3.entry.js.map} +0 -0
  330. /package/dist/q2-tecton-elements/{p-2436c843.entry.js.map → p-ff541a15.entry.js.map} +0 -0
  331. /package/dist/types/{workspace/workspace/tecton-production_release_1.45.x → builds/q2e/development/tecton/tecton}/packages/q2-tecton-elements/.stencil/test/elements/q2-detail/slot-component.d.ts +0 -0
  332. /package/dist/types/{workspace/workspace/tecton-production_release_1.45.x → builds/q2e/development/tecton/tecton}/packages/q2-tecton-elements/.stencil/test/helpers.d.ts +0 -0
@@ -0,0 +1,552 @@
1
+ import { newSpecPage } from "@stencil/core/testing";
2
+ import { Q2Select } from "../../collection/components/q2-select/q2-select";
3
+ import { Q2OptionList } from "../../collection/components/q2-option-list/q2-option-list";
4
+ import * as utils from "../../collection/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
+ afterEach(() => {
44
+ jest.restoreAllMocks();
45
+ });
46
+ let specPage;
47
+ let specSelect;
48
+ let specElement;
49
+ let isMobileSpy;
50
+ let handleAriaLabelSpy;
51
+ let overrideFocusSpy;
52
+ // Helper function to set screen orientation type
53
+ const setOrientationType = (type) => {
54
+ mockScreen.orientation.type = type;
55
+ };
56
+ // Helper function to set document.activeElement
57
+ const setActiveElement = (element) => {
58
+ Object.defineProperty(document, 'activeElement', {
59
+ value: element,
60
+ writable: true,
61
+ configurable: true,
62
+ });
63
+ };
64
+ beforeEach(() => {
65
+ isMobileSpy = jest.spyOn(utils, 'isMobile').mockReturnValue(false);
66
+ handleAriaLabelSpy = jest.spyOn(utils, 'handleAriaLabel');
67
+ overrideFocusSpy = jest.spyOn(utils, 'overrideFocus');
68
+ setOrientationType('landscape-primary');
69
+ mockScreen.orientation.addEventListener.mockClear();
70
+ mockScreen.orientation.removeEventListener.mockClear();
71
+ });
72
+ describe('Props', () => { });
73
+ describe('Events', () => { });
74
+ describe('Component Lifecycle Events', () => {
75
+ describe('disconnectedCallback', () => {
76
+ it('calls disconnect() on mutationObserver', async () => {
77
+ specSelect = new Q2Select();
78
+ specSelect.mutationObserver = new MutationObserver(() => { });
79
+ const disconnectSpy = jest.spyOn(specSelect.mutationObserver, 'disconnect');
80
+ specSelect.disconnectedCallback();
81
+ expect(disconnectSpy).toHaveBeenCalled();
82
+ });
83
+ it('sets mutationObserver to null', async () => {
84
+ specSelect = new Q2Select();
85
+ specSelect.mutationObserver = new MutationObserver(() => { });
86
+ expect(specSelect.mutationObserver).not.toBeNull();
87
+ specSelect.disconnectedCallback();
88
+ expect(specSelect.mutationObserver).toBeNull();
89
+ });
90
+ it('calls destroyEventListeners', async () => {
91
+ specSelect = new Q2Select();
92
+ const destroyEventListenersSpy = jest.spyOn(specSelect, 'destroyEventListeners');
93
+ specSelect.disconnectedCallback();
94
+ expect(destroyEventListenersSpy).toHaveBeenCalled();
95
+ });
96
+ });
97
+ describe('componentWillLoad', () => {
98
+ it('calls handleAriaLabel() helper function', async () => {
99
+ specSelect = new Q2Select();
100
+ specSelect.componentWillLoad();
101
+ expect(handleAriaLabelSpy).toHaveBeenCalled();
102
+ });
103
+ it('calls handleOrientationChange', async () => {
104
+ specSelect = new Q2Select();
105
+ const handleOrientationChangeSpy = jest.spyOn(specSelect, 'handleOrientationChange');
106
+ specSelect.componentWillLoad();
107
+ expect(handleOrientationChangeSpy).toHaveBeenCalled();
108
+ });
109
+ it('calls buildStructuredSelectedOptions', async () => {
110
+ specSelect = new Q2Select();
111
+ const buildOptionsSpy = jest.spyOn(specSelect, 'buildStructuredSelectedOptions');
112
+ specSelect.componentWillLoad();
113
+ expect(buildOptionsSpy).toHaveBeenCalled();
114
+ });
115
+ it('calls handleMultilineOptionsUpdate', async () => {
116
+ specSelect = new Q2Select();
117
+ const handleUpdateSpy = jest.spyOn(specSelect, 'handleMultilineOptionsUpdate');
118
+ specSelect.componentWillLoad();
119
+ expect(handleUpdateSpy).toHaveBeenCalled();
120
+ });
121
+ });
122
+ describe('componentDidLoad', () => {
123
+ it('calls initMutationObserver', async () => {
124
+ specPage = await newSpecPage({
125
+ components: [Q2Select, Q2OptionList],
126
+ html: `<q2-select></q2-select>`,
127
+ });
128
+ specSelect = specPage.rootInstance;
129
+ const initMutationObserverSpy = jest.spyOn(specSelect, 'initMutationObserver');
130
+ specSelect.componentDidLoad();
131
+ expect(initMutationObserverSpy).toHaveBeenCalled();
132
+ });
133
+ it('calls initEventListeners', async () => {
134
+ specPage = await newSpecPage({
135
+ components: [Q2Select],
136
+ html: `<q2-select></q2-select>`,
137
+ });
138
+ specSelect = specPage.rootInstance;
139
+ const initEventListenersSpy = jest.spyOn(specSelect, 'initEventListeners');
140
+ specSelect.componentDidLoad();
141
+ expect(initEventListenersSpy).toHaveBeenCalled();
142
+ });
143
+ it('calls overrideFocus helper', async () => {
144
+ specPage = await newSpecPage({
145
+ components: [Q2Select],
146
+ html: `<q2-select></q2-select>`,
147
+ });
148
+ specSelect = specPage.rootInstance;
149
+ specElement = specPage.root;
150
+ specSelect.componentDidLoad();
151
+ expect(overrideFocusSpy).toHaveBeenCalledWith(specElement);
152
+ });
153
+ it('setTimeout calls checkSelectedDisplay', async () => {
154
+ specPage = await newSpecPage({
155
+ components: [Q2Select],
156
+ html: `<q2-select></q2-select>`,
157
+ });
158
+ specSelect = specPage.rootInstance;
159
+ const checkSelectedDisplaySpy = jest.spyOn(specSelect, 'checkSelectedDisplay');
160
+ jest.useFakeTimers();
161
+ specSelect.componentDidLoad();
162
+ jest.runAllTimers();
163
+ expect(checkSelectedDisplaySpy).toHaveBeenCalled();
164
+ jest.useRealTimers();
165
+ });
166
+ });
167
+ describe('componentDidRender', () => {
168
+ it('calls forEach on scheduledAfterRender', async () => {
169
+ specSelect = new Q2Select();
170
+ specSelect.scheduledAfterRender = [jest.fn()];
171
+ const forEachSpy = jest.spyOn(specSelect.scheduledAfterRender, 'forEach');
172
+ jest.useFakeTimers();
173
+ specSelect.componentDidRender();
174
+ jest.runAllTimers();
175
+ expect(forEachSpy).toHaveBeenCalled();
176
+ jest.useRealTimers();
177
+ });
178
+ });
179
+ });
180
+ describe('Listeners', () => { });
181
+ describe('Public Methods API', () => {
182
+ describe('Public Methods', () => { });
183
+ describe('Test Methods', () => { });
184
+ });
185
+ describe('Watchers', () => {
186
+ describe('openChanged', () => {
187
+ it('calls addTouchEventListeners when isOpen is true', async () => {
188
+ specSelect = new Q2Select();
189
+ const addTouchEventListenersSpy = jest.spyOn(specSelect, 'addTouchEventListeners');
190
+ specSelect.openChanged(true);
191
+ expect(addTouchEventListenersSpy).toHaveBeenCalled();
192
+ });
193
+ it('calls removeTouchEventListeners when isOpen is false', async () => {
194
+ specSelect = new Q2Select();
195
+ const removeTouchEventListenersSpy = jest.spyOn(specSelect, 'removeTouchEventListeners');
196
+ specSelect.openChanged(false);
197
+ expect(removeTouchEventListenersSpy).toHaveBeenCalled();
198
+ });
199
+ });
200
+ });
201
+ describe('Local Methods', () => {
202
+ describe('Getters', () => {
203
+ describe('isModule', () => {
204
+ beforeEach(() => {
205
+ specSelect = new Q2Select();
206
+ });
207
+ it('returns false when window top matches window and platformDimensions is not defined', async () => {
208
+ expect(window.top).toBe(window);
209
+ expect(window.Tecton).toBeUndefined();
210
+ expect(specSelect.isModule).toBe(false);
211
+ });
212
+ it('returns false when window top does not match window and platformDimensions is not defined', async () => {
213
+ const windowSpy = jest.spyOn(window, 'top', 'get').mockReturnValue({});
214
+ expect(window.top).not.toEqual(window);
215
+ expect(window.Tecton).toBeUndefined();
216
+ expect(specSelect.isModule).toBe(false);
217
+ windowSpy.mockRestore();
218
+ });
219
+ it('returns false when window top matches window and platformDimensions is defined', async () => {
220
+ window.Tecton = sampleTectonWindow;
221
+ expect(window.top).toBe(window);
222
+ expect(window.Tecton.platformDimensions).toBeTruthy();
223
+ expect(specSelect.isModule).toBe(false);
224
+ });
225
+ it('returns true when window top does not match window and platformDimensions is defined', async () => {
226
+ const windowSpy = jest.spyOn(window, 'top', 'get').mockReturnValue({});
227
+ window.Tecton = sampleTectonWindow;
228
+ expect(specSelect.isModule).toBe(true);
229
+ windowSpy.mockRestore();
230
+ });
231
+ });
232
+ });
233
+ describe('Methods', () => {
234
+ describe('addTouchEventListeners', () => {
235
+ it('does not add touchstart listener to popover when isMobile is false', async () => {
236
+ specSelect = new Q2Select();
237
+ specSelect.popoverElement = document.createElement('div');
238
+ specSelect.popoverElement.addEventListener = jest.fn();
239
+ isMobileSpy.mockReturnValue(false);
240
+ specSelect.addTouchEventListeners();
241
+ expect(specSelect.popoverElement.addEventListener).not.toHaveBeenCalledWith('touchstart', specSelect.handleTouchStart, { passive: true });
242
+ });
243
+ it('adds touchstart listener when isMobile is true', async () => {
244
+ specSelect = new Q2Select();
245
+ specSelect.popoverElement = document.createElement('div');
246
+ specSelect.popoverElement.addEventListener = jest.fn();
247
+ isMobileSpy.mockReturnValue(true);
248
+ specSelect.addTouchEventListeners();
249
+ expect(specSelect.popoverElement.addEventListener).toHaveBeenCalledWith('touchstart', specSelect.handleTouchStart, { passive: true });
250
+ });
251
+ });
252
+ describe('clickedElsewhere', () => {
253
+ let mockTarget;
254
+ let customEvent;
255
+ beforeEach(async () => {
256
+ specSelect = new Q2Select();
257
+ mockTarget = { localName: 'click-elsewhere' };
258
+ customEvent = { target: mockTarget, stopPropagation: jest.fn() };
259
+ specSelect = new Q2Select();
260
+ specSelect.popoverElement = { open: true };
261
+ jest.spyOn(specSelect, 'innerInputField', 'get').mockReturnValue({ blur: jest.fn() });
262
+ });
263
+ it('does nothing if target.localName is not "click-elsewhere"', async () => {
264
+ mockTarget = { localName: 'div' };
265
+ customEvent = { target: mockTarget };
266
+ specSelect.clickedElsewhere(customEvent);
267
+ });
268
+ it('calls stopPropagation', async () => {
269
+ specSelect.clickedElsewhere(customEvent);
270
+ expect(customEvent.stopPropagation).toHaveBeenCalled();
271
+ });
272
+ it('sets popoverElement.open to false', async () => {
273
+ specSelect.clickedElsewhere(customEvent);
274
+ expect(specSelect.popoverElement.open).toBe(false);
275
+ });
276
+ it('calls blur() on the innerInputField', async () => {
277
+ specSelect.clickedElsewhere(customEvent);
278
+ expect(specSelect.innerInputField.blur).toHaveBeenCalled();
279
+ });
280
+ });
281
+ describe('destroyEventListeners', () => {
282
+ let windowRemoveEventListenerSpy;
283
+ beforeEach(() => {
284
+ isMobileSpy.mockReturnValue(true);
285
+ specSelect = new Q2Select();
286
+ mockScreen.orientation.removeEventListener.mockClear();
287
+ windowRemoveEventListenerSpy = jest.spyOn(window, 'removeEventListener');
288
+ mockVisualViewport.removeEventListener.mockClear();
289
+ });
290
+ it('checks if isMobile', async () => {
291
+ specSelect = new Q2Select();
292
+ specSelect.destroyEventListeners();
293
+ expect(isMobileSpy).toHaveBeenCalled();
294
+ });
295
+ describe('when in mobile environment', () => {
296
+ it('calls removeEventListener on screen.orientation ', async () => {
297
+ specSelect.destroyEventListeners();
298
+ expect(mockScreen.orientation.removeEventListener).toHaveBeenCalledWith('change', specSelect.handleOrientationChange);
299
+ });
300
+ it('calls removeEventListener on window', async () => {
301
+ specSelect.destroyEventListeners();
302
+ expect(windowRemoveEventListenerSpy).toHaveBeenCalledWith('resize', specSelect.handleOrientationChange);
303
+ });
304
+ it('calls removeEventListener on visualViewport', async () => {
305
+ mockVisualViewport.removeEventListener.mockClear();
306
+ specSelect.destroyEventListeners();
307
+ expect(mockVisualViewport.removeEventListener).toHaveBeenCalledWith('resize', specSelect.handleOrientationChange);
308
+ });
309
+ it('calls removeTouchEventListeners', async () => {
310
+ const removeTouchEventListenersSpy = jest.spyOn(specSelect, 'removeTouchEventListeners');
311
+ specSelect.destroyEventListeners();
312
+ expect(removeTouchEventListenersSpy).toHaveBeenCalled();
313
+ });
314
+ });
315
+ it('does NOT remove event listener when NOT mobile', async () => {
316
+ isMobileSpy.mockReturnValue(false);
317
+ specSelect = new Q2Select();
318
+ specSelect.destroyEventListeners();
319
+ expect(mockScreen.orientation.removeEventListener).not.toHaveBeenCalled();
320
+ expect(windowRemoveEventListenerSpy).not.toHaveBeenCalled();
321
+ expect(mockVisualViewport.removeEventListener).not.toHaveBeenCalled();
322
+ });
323
+ });
324
+ describe('handleOrientationChange', () => {
325
+ beforeEach(() => {
326
+ isMobileSpy.mockReturnValue(true);
327
+ specSelect = new Q2Select();
328
+ });
329
+ it('checks if isMobile', async () => {
330
+ specSelect.handleOrientationChange();
331
+ expect(isMobileSpy).toHaveBeenCalled();
332
+ });
333
+ describe('when searchable is initially true', () => {
334
+ beforeEach(() => {
335
+ specSelect.searchable = true;
336
+ specSelect.originalSearchable = true;
337
+ });
338
+ it('sets "searchable" to false if in landscape orientation', async () => {
339
+ setOrientationType('landscape-primary');
340
+ specSelect.handleOrientationChange();
341
+ expect(specSelect.searchable).toBe(false);
342
+ });
343
+ it('does nothing in portrait orientation', async () => {
344
+ setOrientationType('portrait-primary');
345
+ specSelect.handleOrientationChange();
346
+ expect(specSelect.searchable).toBe(true);
347
+ });
348
+ it('restores searchable when returning to portrait', async () => {
349
+ setOrientationType('landscape-primary');
350
+ specSelect.handleOrientationChange();
351
+ expect(specSelect.searchable).toBe(false);
352
+ setOrientationType('portrait-primary');
353
+ specSelect.handleOrientationChange();
354
+ expect(specSelect.searchable).toBe(true);
355
+ });
356
+ });
357
+ describe('when searchable is initially undefined/false', () => {
358
+ it('does nothing', async () => {
359
+ specSelect.originalSearchable = false;
360
+ setOrientationType('landscape-primary');
361
+ specSelect.handleOrientationChange();
362
+ expect(specSelect.searchable).toBe(false);
363
+ });
364
+ });
365
+ });
366
+ describe('handleTouchStart', () => {
367
+ it('does not focus the target if the activeElement is not the hostElement', async () => {
368
+ specPage = await newSpecPage({
369
+ components: [Q2Select],
370
+ html: `<q2-select></q2-select>`,
371
+ });
372
+ specSelect = specPage.rootInstance;
373
+ specElement = specPage.root;
374
+ const element = document.createElement('div');
375
+ const touchEvent = new TouchEvent('touchmove', {
376
+ target: element,
377
+ });
378
+ const focusSpy = jest.spyOn(touchEvent.target, 'focus');
379
+ setActiveElement(element);
380
+ specSelect.handleTouchStart(touchEvent);
381
+ expect(document.activeElement).not.toBe(specElement);
382
+ expect(focusSpy).not.toHaveBeenCalled();
383
+ });
384
+ it('does not call focus on the target if the target is the hostElement', async () => {
385
+ specPage = await newSpecPage({
386
+ components: [Q2Select],
387
+ html: `<q2-select></q2-select>`,
388
+ });
389
+ specSelect = specPage.rootInstance;
390
+ specElement = specPage.root;
391
+ const touchEvent = new TouchEvent('touchmove', {
392
+ target: specElement,
393
+ });
394
+ const focusSpy = jest.spyOn(touchEvent.target, 'focus');
395
+ setActiveElement(specElement);
396
+ specSelect.handleTouchStart(touchEvent);
397
+ expect(touchEvent.target).toBe(specElement);
398
+ expect(focusSpy).not.toHaveBeenCalled();
399
+ });
400
+ describe('when hostElement is activeElement and target is not hostElement', () => {
401
+ let targetFocusSpy;
402
+ let targetElement;
403
+ beforeEach(async () => {
404
+ specPage = await newSpecPage({
405
+ components: [Q2Select],
406
+ html: `<q2-select></q2-select>`,
407
+ });
408
+ specSelect = specPage.rootInstance;
409
+ specElement = specPage.root;
410
+ setActiveElement(specElement);
411
+ specSelect.inputFocused = true;
412
+ expect(document.activeElement).toBe(specElement);
413
+ expect(specSelect.lastTouchWasInPopover).toBe(false);
414
+ targetElement = specElement.shadowRoot.querySelector('q2-popover');
415
+ const touchEvent = new TouchEvent('touchmove', {
416
+ target: targetElement,
417
+ });
418
+ targetFocusSpy = jest.spyOn(targetElement, 'focus');
419
+ expect(touchEvent.target).toBe(targetElement);
420
+ specSelect.handleTouchStart(touchEvent);
421
+ });
422
+ it('sets inputFocused to false', async () => {
423
+ expect(specSelect.inputFocused).toBe(false);
424
+ });
425
+ it('sets lastTouchWasInPopover to true', async () => {
426
+ expect(specSelect.lastTouchWasInPopover).toBe(true);
427
+ });
428
+ it('calls focus on the target element', async () => {
429
+ expect(targetFocusSpy).toHaveBeenCalled();
430
+ });
431
+ });
432
+ });
433
+ describe('initEventListeners', () => {
434
+ let windowAddEventListenerSpy;
435
+ beforeEach(() => {
436
+ isMobileSpy.mockReturnValue(true);
437
+ specSelect = new Q2Select();
438
+ mockScreen.orientation.addEventListener.mockClear();
439
+ windowAddEventListenerSpy = jest.spyOn(window, 'addEventListener');
440
+ mockVisualViewport.addEventListener.mockClear();
441
+ });
442
+ it('checks if isMobile', async () => {
443
+ specSelect = new Q2Select();
444
+ specSelect.initEventListeners();
445
+ expect(isMobileSpy).toHaveBeenCalled();
446
+ });
447
+ describe('when in mobile environment', () => {
448
+ it('calls addEventListener on screen.orientation', async () => {
449
+ specSelect.initEventListeners();
450
+ expect(mockScreen.orientation.addEventListener).toHaveBeenCalledWith('change', specSelect.handleOrientationChange);
451
+ });
452
+ it('calls addEventListener on window', async () => {
453
+ specSelect.initEventListeners();
454
+ expect(windowAddEventListenerSpy).toHaveBeenCalledWith('resize', specSelect.handleOrientationChange);
455
+ });
456
+ it('calls addEventListener on visualViewport', async () => {
457
+ specSelect.initEventListeners();
458
+ expect(mockVisualViewport.addEventListener).toHaveBeenCalledWith('resize', specSelect.handleOrientationChange);
459
+ });
460
+ });
461
+ it('does NOT add event listener when NOT mobile', async () => {
462
+ isMobileSpy.mockReturnValue(false);
463
+ specSelect = new Q2Select();
464
+ specSelect.initEventListeners();
465
+ expect(mockScreen.orientation.addEventListener).not.toHaveBeenCalled();
466
+ expect(mockVisualViewport.addEventListener).not.toHaveBeenCalled();
467
+ expect(windowAddEventListenerSpy).not.toHaveBeenCalled();
468
+ });
469
+ });
470
+ });
471
+ });
472
+ describe('Render Methods', () => { });
473
+ describe('Accessibility', () => {
474
+ describe('Keyboard Controls', () => {
475
+ let handleOptionListExternalKeydownSpy;
476
+ let q2Select;
477
+ beforeEach(async () => {
478
+ specPage = await newSpecPage({
479
+ components: [Q2Select, Q2OptionList],
480
+ html: `<q2-select></q2-select>`,
481
+ });
482
+ q2Select = specPage.root;
483
+ const q2SelectInstance = specPage.rootInstance;
484
+ handleOptionListExternalKeydownSpy = jest.spyOn(q2SelectInstance, 'handleOptionListExternalKeydown');
485
+ });
486
+ afterEach(() => {
487
+ handleOptionListExternalKeydownSpy.mockRestore();
488
+ });
489
+ it("'Tab' keypress not handled by q2-option-list", async () => {
490
+ const event = new KeyboardEvent('keydown', { key: 'Tab' });
491
+ q2Select.dispatchEvent(event);
492
+ await specPage.waitForChanges();
493
+ expect(handleOptionListExternalKeydownSpy).toHaveBeenCalledWith(event);
494
+ });
495
+ it("'Enter' keypress handled by q2-option-list", async () => {
496
+ const event = new KeyboardEvent('keydown', { key: 'Enter' });
497
+ q2Select.dispatchEvent(event);
498
+ await specPage.waitForChanges();
499
+ expect(handleOptionListExternalKeydownSpy).toHaveBeenCalledWith(event);
500
+ });
501
+ it("'ArrowUp' keypress handled by q2-option-list", async () => {
502
+ const event = new KeyboardEvent('keydown', { key: 'ArrowUp' });
503
+ q2Select.dispatchEvent(event);
504
+ await specPage.waitForChanges();
505
+ expect(handleOptionListExternalKeydownSpy).toHaveBeenCalledWith(event);
506
+ });
507
+ it("'ArrowDown' keypress handled by q2-option-list", async () => {
508
+ const event = new KeyboardEvent('keydown', { key: 'ArrowDown' });
509
+ q2Select.dispatchEvent(event);
510
+ await specPage.waitForChanges();
511
+ expect(handleOptionListExternalKeydownSpy).toHaveBeenCalledWith(event);
512
+ });
513
+ it("'Home' keypress handled by q2-option-list", async () => {
514
+ const event = new KeyboardEvent('keydown', { key: 'Home' });
515
+ q2Select.dispatchEvent(event);
516
+ await specPage.waitForChanges();
517
+ expect(handleOptionListExternalKeydownSpy).toHaveBeenCalledWith(event);
518
+ });
519
+ it("'End' keypress handled by q2-option-list", async () => {
520
+ const event = new KeyboardEvent('keydown', { key: 'End' });
521
+ q2Select.dispatchEvent(event);
522
+ await specPage.waitForChanges();
523
+ expect(handleOptionListExternalKeydownSpy).toHaveBeenCalledWith(event);
524
+ });
525
+ it("'PageUp' keypress handled by q2-option-list", async () => {
526
+ const event = new KeyboardEvent('keydown', { key: 'PageUp' });
527
+ q2Select.dispatchEvent(event);
528
+ await specPage.waitForChanges();
529
+ expect(handleOptionListExternalKeydownSpy).toHaveBeenCalledWith(event);
530
+ });
531
+ it("'PageDown' keypress handled by q2-option-list", async () => {
532
+ const event = new KeyboardEvent('keydown', { key: 'PageDown' });
533
+ q2Select.dispatchEvent(event);
534
+ await specPage.waitForChanges();
535
+ expect(handleOptionListExternalKeydownSpy).toHaveBeenCalledWith(event);
536
+ });
537
+ it("'Esc' keypress handled by q2-option-list", async () => {
538
+ const event = new KeyboardEvent('keydown', { key: 'Esc' });
539
+ q2Select.dispatchEvent(event);
540
+ await specPage.waitForChanges();
541
+ expect(handleOptionListExternalKeydownSpy).toHaveBeenCalledWith(event);
542
+ });
543
+ it("'Space' keypress handled by q2-option-list", async () => {
544
+ const event = new KeyboardEvent('keydown', { key: 'Space' });
545
+ q2Select.dispatchEvent(event);
546
+ await specPage.waitForChanges();
547
+ expect(handleOptionListExternalKeydownSpy).toHaveBeenCalledWith(event);
548
+ });
549
+ });
550
+ });
551
+ });
552
+ //# sourceMappingURL=q2-select-test.spec.js.map