q2-tecton-elements 1.47.1 → 1.47.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 (225) hide show
  1. package/dist/cjs/click-elsewhere_2.cjs.entry.js +76 -35
  2. package/dist/cjs/click-elsewhere_2.cjs.entry.js.map +1 -1
  3. package/dist/cjs/{index-a93362ed.js → index-3f1498f7.js} +33 -1
  4. package/dist/cjs/index-3f1498f7.js.map +1 -0
  5. package/dist/cjs/loader.cjs.js +1 -1
  6. package/dist/cjs/q2-action-sheet.cjs.entry.js +1 -1
  7. package/dist/cjs/q2-btn_2.cjs.entry.js +1 -1
  8. package/dist/cjs/q2-calendar.cjs.entry.js +1 -1
  9. package/dist/cjs/q2-card.cjs.entry.js +1 -1
  10. package/dist/cjs/q2-carousel-pane.cjs.entry.js +1 -1
  11. package/dist/cjs/q2-carousel.cjs.entry.js +1 -1
  12. package/dist/cjs/q2-chart-area.cjs.entry.js +1 -1
  13. package/dist/cjs/q2-chart-bar.cjs.entry.js +1 -1
  14. package/dist/cjs/q2-chart-donut.cjs.entry.js +1 -1
  15. package/dist/cjs/q2-checkbox-group.cjs.entry.js +1 -1
  16. package/dist/cjs/q2-checkbox.cjs.entry.js +1 -1
  17. package/dist/cjs/q2-data-table.cjs.entry.js +1 -1
  18. package/dist/cjs/q2-detail.cjs.entry.js +1 -1
  19. package/dist/cjs/q2-dropdown-item.cjs.entry.js +1 -1
  20. package/dist/cjs/q2-dropdown.cjs.entry.js +4 -2
  21. package/dist/cjs/q2-dropdown.cjs.entry.js.map +1 -1
  22. package/dist/cjs/q2-editable-field.cjs.entry.js +1 -1
  23. package/dist/cjs/q2-icon.cjs.entry.js +1 -1
  24. package/dist/cjs/q2-input.cjs.entry.js +1 -1
  25. package/dist/cjs/q2-item.cjs.entry.js +1 -1
  26. package/dist/cjs/q2-list.cjs.entry.js +1 -1
  27. package/dist/cjs/q2-loc.cjs.entry.js +1 -1
  28. package/dist/cjs/q2-message.cjs.entry.js +1 -1
  29. package/dist/cjs/q2-month-picker.cjs.entry.js +1 -1
  30. package/dist/cjs/q2-optgroup.cjs.entry.js +1 -1
  31. package/dist/cjs/q2-option-list.cjs.entry.js +1 -1
  32. package/dist/cjs/q2-pagination.cjs.entry.js +1 -1
  33. package/dist/cjs/q2-pill.cjs.entry.js +1 -1
  34. package/dist/cjs/q2-radio-group.cjs.entry.js +1 -1
  35. package/dist/cjs/q2-radio.cjs.entry.js +1 -1
  36. package/dist/cjs/q2-section.cjs.entry.js +1 -1
  37. package/dist/cjs/q2-select.cjs.entry.js +101 -9
  38. package/dist/cjs/q2-select.cjs.entry.js.map +1 -1
  39. package/dist/cjs/q2-stepper-pane.cjs.entry.js +1 -1
  40. package/dist/cjs/q2-stepper-vertical.cjs.entry.js +1 -1
  41. package/dist/cjs/q2-stepper.cjs.entry.js +1 -1
  42. package/dist/cjs/q2-tab-container.cjs.entry.js +1 -1
  43. package/dist/cjs/q2-tag.cjs.entry.js +1 -1
  44. package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
  45. package/dist/cjs/q2-textarea.cjs.entry.js +1 -1
  46. package/dist/cjs/q2-tooltip.cjs.entry.js +1 -1
  47. package/dist/collection/components/q2-dropdown/q2-dropdown.js +3 -1
  48. package/dist/collection/components/q2-dropdown/q2-dropdown.js.map +1 -1
  49. package/dist/collection/components/q2-popover/q2-popover.css +19 -11
  50. package/dist/collection/components/q2-popover/q2-popover.js +77 -35
  51. package/dist/collection/components/q2-popover/q2-popover.js.map +1 -1
  52. package/dist/collection/components/q2-select/q2-select.js +109 -10
  53. package/dist/collection/components/q2-select/q2-select.js.map +1 -1
  54. package/dist/collection/utils/index.js +31 -0
  55. package/dist/collection/utils/index.js.map +1 -1
  56. package/dist/components/index2.js +32 -1
  57. package/dist/components/index2.js.map +1 -1
  58. package/dist/components/q2-dropdown.js +3 -1
  59. package/dist/components/q2-dropdown.js.map +1 -1
  60. package/dist/components/q2-popover2.js +76 -35
  61. package/dist/components/q2-popover2.js.map +1 -1
  62. package/dist/components/q2-select2.js +102 -10
  63. package/dist/components/q2-select2.js.map +1 -1
  64. package/dist/esm/click-elsewhere_2.entry.js +76 -35
  65. package/dist/esm/click-elsewhere_2.entry.js.map +1 -1
  66. package/dist/esm/{index-3c5cd75e.js → index-58266aeb.js} +33 -2
  67. package/dist/esm/index-58266aeb.js.map +1 -0
  68. package/dist/esm/loader.js +1 -1
  69. package/dist/esm/q2-action-sheet.entry.js +1 -1
  70. package/dist/esm/q2-btn_2.entry.js +1 -1
  71. package/dist/esm/q2-calendar.entry.js +1 -1
  72. package/dist/esm/q2-card.entry.js +1 -1
  73. package/dist/esm/q2-carousel-pane.entry.js +1 -1
  74. package/dist/esm/q2-carousel.entry.js +1 -1
  75. package/dist/esm/q2-chart-area.entry.js +1 -1
  76. package/dist/esm/q2-chart-bar.entry.js +1 -1
  77. package/dist/esm/q2-chart-donut.entry.js +1 -1
  78. package/dist/esm/q2-checkbox-group.entry.js +1 -1
  79. package/dist/esm/q2-checkbox.entry.js +1 -1
  80. package/dist/esm/q2-data-table.entry.js +1 -1
  81. package/dist/esm/q2-detail.entry.js +1 -1
  82. package/dist/esm/q2-dropdown-item.entry.js +1 -1
  83. package/dist/esm/q2-dropdown.entry.js +4 -2
  84. package/dist/esm/q2-dropdown.entry.js.map +1 -1
  85. package/dist/esm/q2-editable-field.entry.js +1 -1
  86. package/dist/esm/q2-icon.entry.js +1 -1
  87. package/dist/esm/q2-input.entry.js +1 -1
  88. package/dist/esm/q2-item.entry.js +1 -1
  89. package/dist/esm/q2-list.entry.js +1 -1
  90. package/dist/esm/q2-loc.entry.js +1 -1
  91. package/dist/esm/q2-message.entry.js +1 -1
  92. package/dist/esm/q2-month-picker.entry.js +1 -1
  93. package/dist/esm/q2-optgroup.entry.js +1 -1
  94. package/dist/esm/q2-option-list.entry.js +1 -1
  95. package/dist/esm/q2-pagination.entry.js +1 -1
  96. package/dist/esm/q2-pill.entry.js +1 -1
  97. package/dist/esm/q2-radio-group.entry.js +1 -1
  98. package/dist/esm/q2-radio.entry.js +1 -1
  99. package/dist/esm/q2-section.entry.js +1 -1
  100. package/dist/esm/q2-select.entry.js +101 -9
  101. package/dist/esm/q2-select.entry.js.map +1 -1
  102. package/dist/esm/q2-stepper-pane.entry.js +1 -1
  103. package/dist/esm/q2-stepper-vertical.entry.js +1 -1
  104. package/dist/esm/q2-stepper.entry.js +1 -1
  105. package/dist/esm/q2-tab-container.entry.js +1 -1
  106. package/dist/esm/q2-tag.entry.js +1 -1
  107. package/dist/esm/q2-tecton-elements.js +1 -1
  108. package/dist/esm/q2-textarea.entry.js +1 -1
  109. package/dist/esm/q2-tooltip.entry.js +1 -1
  110. package/dist/jest.setup.js +33 -0
  111. package/dist/jest.setup.js.map +1 -0
  112. package/dist/q2-tecton-elements/{p-ccbc168f.entry.js → p-13698aac.entry.js} +2 -2
  113. package/dist/q2-tecton-elements/{p-fce6bc58.entry.js → p-161ed50c.entry.js} +2 -2
  114. package/dist/q2-tecton-elements/{p-4ef5222b.entry.js → p-2a13d460.entry.js} +2 -2
  115. package/dist/q2-tecton-elements/{p-46085a34.entry.js → p-3468d85d.entry.js} +2 -2
  116. package/dist/q2-tecton-elements/{p-c5ae8890.entry.js → p-36ae4077.entry.js} +2 -2
  117. package/dist/q2-tecton-elements/{p-0a211fb4.entry.js → p-3876d25b.entry.js} +2 -2
  118. package/dist/q2-tecton-elements/{p-08d5de5c.entry.js → p-3bc82292.entry.js} +2 -2
  119. package/dist/q2-tecton-elements/{p-6be0e333.entry.js → p-3d6e350e.entry.js} +2 -2
  120. package/dist/q2-tecton-elements/{p-e1c642fa.entry.js → p-40f1aa86.entry.js} +2 -2
  121. package/dist/q2-tecton-elements/p-414c5d4e.entry.js +2 -0
  122. package/dist/q2-tecton-elements/p-414c5d4e.entry.js.map +1 -0
  123. package/dist/q2-tecton-elements/{p-132005d2.entry.js → p-48ecbcc9.entry.js} +2 -2
  124. package/dist/q2-tecton-elements/{p-e786ba03.entry.js → p-4e58e187.entry.js} +2 -2
  125. package/dist/q2-tecton-elements/{p-a2caa101.entry.js → p-50476216.entry.js} +2 -2
  126. package/dist/q2-tecton-elements/{p-f450db0b.entry.js → p-534e9fba.entry.js} +2 -2
  127. package/dist/q2-tecton-elements/p-5502457b.entry.js +2 -0
  128. package/dist/q2-tecton-elements/{p-e9e66809.entry.js.map → p-5502457b.entry.js.map} +1 -1
  129. package/dist/q2-tecton-elements/{p-fe1f1ff4.entry.js → p-5d339d72.entry.js} +2 -2
  130. package/dist/q2-tecton-elements/{p-1d824cdf.entry.js → p-646214e2.entry.js} +2 -2
  131. package/dist/q2-tecton-elements/{p-cb8e7ebb.entry.js → p-6b803417.entry.js} +2 -2
  132. package/dist/q2-tecton-elements/{p-2de3e7b1.entry.js → p-72167021.entry.js} +2 -2
  133. package/dist/q2-tecton-elements/p-74d67722.entry.js +2 -0
  134. package/dist/q2-tecton-elements/p-74d67722.entry.js.map +1 -0
  135. package/dist/q2-tecton-elements/{p-85a7b1ab.entry.js → p-7c5ee4aa.entry.js} +2 -2
  136. package/dist/q2-tecton-elements/p-7ea95f38.js +2 -0
  137. package/dist/q2-tecton-elements/p-7ea95f38.js.map +1 -0
  138. package/dist/q2-tecton-elements/{p-84fc61f5.entry.js → p-803a5897.entry.js} +2 -2
  139. package/dist/q2-tecton-elements/{p-432532fe.entry.js → p-871bad24.entry.js} +2 -2
  140. package/dist/q2-tecton-elements/{p-5214296a.entry.js → p-8764a131.entry.js} +2 -2
  141. package/dist/q2-tecton-elements/{p-d6c8d94d.entry.js → p-8a2b4f10.entry.js} +2 -2
  142. package/dist/q2-tecton-elements/{p-68276771.entry.js → p-97774780.entry.js} +2 -2
  143. package/dist/q2-tecton-elements/{p-81bb9436.entry.js → p-9c129294.entry.js} +2 -2
  144. package/dist/q2-tecton-elements/{p-3030d55f.entry.js → p-a9579fd1.entry.js} +2 -2
  145. package/dist/q2-tecton-elements/{p-def9be7b.entry.js → p-a99e1dc6.entry.js} +2 -2
  146. package/dist/q2-tecton-elements/{p-28b0de1c.entry.js → p-af3a383f.entry.js} +2 -2
  147. package/dist/q2-tecton-elements/{p-07f40176.entry.js → p-b85b6bc1.entry.js} +2 -2
  148. package/dist/q2-tecton-elements/{p-59551fa4.entry.js → p-bb08bb1f.entry.js} +2 -2
  149. package/dist/q2-tecton-elements/{p-63038a54.entry.js → p-c30c53dc.entry.js} +2 -2
  150. package/dist/q2-tecton-elements/{p-572805fc.entry.js → p-c782a1d6.entry.js} +2 -2
  151. package/dist/q2-tecton-elements/{p-ca17f7ca.entry.js → p-cd225920.entry.js} +2 -2
  152. package/dist/q2-tecton-elements/{p-044b8914.entry.js → p-cdfe6e9d.entry.js} +2 -2
  153. package/dist/q2-tecton-elements/{p-aa768c36.entry.js → p-d38edfbf.entry.js} +2 -2
  154. package/dist/q2-tecton-elements/{p-644d5b2e.entry.js → p-e08c6b8f.entry.js} +2 -2
  155. package/dist/q2-tecton-elements/{p-4740e969.entry.js → p-e4241b1a.entry.js} +2 -2
  156. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
  157. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js.map +1 -1
  158. package/dist/test/elements/q2-calendar-test.e2e.js +2 -2
  159. package/dist/test/elements/q2-calendar-test.e2e.js.map +1 -1
  160. package/dist/test/elements/q2-dropdown-test.e2e.js +2 -14
  161. package/dist/test/elements/q2-dropdown-test.e2e.js.map +1 -1
  162. package/dist/test/elements/q2-pagination-test.e2e.js +2 -1
  163. package/dist/test/elements/q2-pagination-test.e2e.js.map +1 -1
  164. package/dist/test/elements/q2-pill-test.e2e.js +1 -1
  165. package/dist/test/elements/q2-pill-test.e2e.js.map +1 -1
  166. package/dist/test/elements/q2-popover-test.e2e.js +1 -34
  167. package/dist/test/elements/q2-popover-test.e2e.js.map +1 -1
  168. package/dist/test/elements/q2-popover-test.spec.js +896 -374
  169. package/dist/test/elements/q2-popover-test.spec.js.map +1 -1
  170. package/dist/test/elements/q2-select-test.e2e.js +1 -1
  171. package/dist/test/elements/q2-select-test.e2e.js.map +1 -1
  172. package/dist/test/elements/q2-select-test.spec.js +552 -0
  173. package/dist/test/elements/q2-select-test.spec.js.map +1 -0
  174. package/dist/test/elements/q2-tag-test.e2e.js +1 -1
  175. package/dist/test/elements/q2-tag-test.e2e.js.map +1 -1
  176. package/dist/types/builds/q2e/development/tecton/tecton/packages/q2-tecton-elements/.stencil/jest.setup.d.ts +10 -0
  177. package/dist/types/components/q2-popover/q2-popover.d.ts +5 -3
  178. package/dist/types/components/q2-select/q2-select.d.ts +11 -0
  179. package/dist/types/utils/index.d.ts +1 -0
  180. package/package.json +3 -3
  181. package/dist/cjs/index-a93362ed.js.map +0 -1
  182. package/dist/esm/index-3c5cd75e.js.map +0 -1
  183. package/dist/q2-tecton-elements/p-84190698.js +0 -2
  184. package/dist/q2-tecton-elements/p-84190698.js.map +0 -1
  185. package/dist/q2-tecton-elements/p-94acf745.entry.js +0 -2
  186. package/dist/q2-tecton-elements/p-94acf745.entry.js.map +0 -1
  187. package/dist/q2-tecton-elements/p-97e01336.entry.js +0 -2
  188. package/dist/q2-tecton-elements/p-97e01336.entry.js.map +0 -1
  189. package/dist/q2-tecton-elements/p-e9e66809.entry.js +0 -2
  190. /package/dist/q2-tecton-elements/{p-ccbc168f.entry.js.map → p-13698aac.entry.js.map} +0 -0
  191. /package/dist/q2-tecton-elements/{p-fce6bc58.entry.js.map → p-161ed50c.entry.js.map} +0 -0
  192. /package/dist/q2-tecton-elements/{p-4ef5222b.entry.js.map → p-2a13d460.entry.js.map} +0 -0
  193. /package/dist/q2-tecton-elements/{p-46085a34.entry.js.map → p-3468d85d.entry.js.map} +0 -0
  194. /package/dist/q2-tecton-elements/{p-c5ae8890.entry.js.map → p-36ae4077.entry.js.map} +0 -0
  195. /package/dist/q2-tecton-elements/{p-0a211fb4.entry.js.map → p-3876d25b.entry.js.map} +0 -0
  196. /package/dist/q2-tecton-elements/{p-08d5de5c.entry.js.map → p-3bc82292.entry.js.map} +0 -0
  197. /package/dist/q2-tecton-elements/{p-6be0e333.entry.js.map → p-3d6e350e.entry.js.map} +0 -0
  198. /package/dist/q2-tecton-elements/{p-e1c642fa.entry.js.map → p-40f1aa86.entry.js.map} +0 -0
  199. /package/dist/q2-tecton-elements/{p-132005d2.entry.js.map → p-48ecbcc9.entry.js.map} +0 -0
  200. /package/dist/q2-tecton-elements/{p-e786ba03.entry.js.map → p-4e58e187.entry.js.map} +0 -0
  201. /package/dist/q2-tecton-elements/{p-a2caa101.entry.js.map → p-50476216.entry.js.map} +0 -0
  202. /package/dist/q2-tecton-elements/{p-f450db0b.entry.js.map → p-534e9fba.entry.js.map} +0 -0
  203. /package/dist/q2-tecton-elements/{p-fe1f1ff4.entry.js.map → p-5d339d72.entry.js.map} +0 -0
  204. /package/dist/q2-tecton-elements/{p-1d824cdf.entry.js.map → p-646214e2.entry.js.map} +0 -0
  205. /package/dist/q2-tecton-elements/{p-cb8e7ebb.entry.js.map → p-6b803417.entry.js.map} +0 -0
  206. /package/dist/q2-tecton-elements/{p-2de3e7b1.entry.js.map → p-72167021.entry.js.map} +0 -0
  207. /package/dist/q2-tecton-elements/{p-85a7b1ab.entry.js.map → p-7c5ee4aa.entry.js.map} +0 -0
  208. /package/dist/q2-tecton-elements/{p-84fc61f5.entry.js.map → p-803a5897.entry.js.map} +0 -0
  209. /package/dist/q2-tecton-elements/{p-432532fe.entry.js.map → p-871bad24.entry.js.map} +0 -0
  210. /package/dist/q2-tecton-elements/{p-5214296a.entry.js.map → p-8764a131.entry.js.map} +0 -0
  211. /package/dist/q2-tecton-elements/{p-d6c8d94d.entry.js.map → p-8a2b4f10.entry.js.map} +0 -0
  212. /package/dist/q2-tecton-elements/{p-68276771.entry.js.map → p-97774780.entry.js.map} +0 -0
  213. /package/dist/q2-tecton-elements/{p-81bb9436.entry.js.map → p-9c129294.entry.js.map} +0 -0
  214. /package/dist/q2-tecton-elements/{p-3030d55f.entry.js.map → p-a9579fd1.entry.js.map} +0 -0
  215. /package/dist/q2-tecton-elements/{p-def9be7b.entry.js.map → p-a99e1dc6.entry.js.map} +0 -0
  216. /package/dist/q2-tecton-elements/{p-28b0de1c.entry.js.map → p-af3a383f.entry.js.map} +0 -0
  217. /package/dist/q2-tecton-elements/{p-07f40176.entry.js.map → p-b85b6bc1.entry.js.map} +0 -0
  218. /package/dist/q2-tecton-elements/{p-59551fa4.entry.js.map → p-bb08bb1f.entry.js.map} +0 -0
  219. /package/dist/q2-tecton-elements/{p-63038a54.entry.js.map → p-c30c53dc.entry.js.map} +0 -0
  220. /package/dist/q2-tecton-elements/{p-572805fc.entry.js.map → p-c782a1d6.entry.js.map} +0 -0
  221. /package/dist/q2-tecton-elements/{p-ca17f7ca.entry.js.map → p-cd225920.entry.js.map} +0 -0
  222. /package/dist/q2-tecton-elements/{p-044b8914.entry.js.map → p-cdfe6e9d.entry.js.map} +0 -0
  223. /package/dist/q2-tecton-elements/{p-aa768c36.entry.js.map → p-d38edfbf.entry.js.map} +0 -0
  224. /package/dist/q2-tecton-elements/{p-644d5b2e.entry.js.map → p-e08c6b8f.entry.js.map} +0 -0
  225. /package/dist/q2-tecton-elements/{p-4740e969.entry.js.map → p-e4241b1a.entry.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"q2-select-test.spec.js","sourceRoot":"","sources":["../../../test/elements/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 afterEach(() => {\n jest.restoreAllMocks();\n });\n\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 // Helper function to set document.activeElement\n const setActiveElement = (element: Element | null) => {\n Object.defineProperty(document, 'activeElement', {\n value: element,\n writable: true,\n configurable: true,\n });\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 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('openChanged', () => {\n it('calls addTouchEventListeners when isOpen is true', async () => {\n specSelect = new Q2Select();\n const addTouchEventListenersSpy = jest.spyOn(specSelect, 'addTouchEventListeners');\n specSelect.openChanged(true);\n expect(addTouchEventListenersSpy).toHaveBeenCalled();\n });\n it('calls removeTouchEventListeners when isOpen is false', async () => {\n specSelect = new Q2Select();\n const removeTouchEventListenersSpy = jest.spyOn(specSelect, 'removeTouchEventListeners');\n specSelect.openChanged(false);\n expect(removeTouchEventListenersSpy).toHaveBeenCalled();\n });\n });\n });\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('addTouchEventListeners', () => {\n it('does not add touchstart listener to popover when isMobile is false', async () => {\n specSelect = new Q2Select();\n specSelect.popoverElement = document.createElement('div') as HTMLQ2PopoverElement;\n specSelect.popoverElement.addEventListener = jest.fn();\n isMobileSpy.mockReturnValue(false);\n specSelect.addTouchEventListeners();\n\n expect(specSelect.popoverElement.addEventListener).not.toHaveBeenCalledWith(\n 'touchstart',\n specSelect.handleTouchStart,\n { passive: true }\n );\n });\n\n it('adds touchstart listener when isMobile is true', async () => {\n specSelect = new Q2Select();\n specSelect.popoverElement = document.createElement('div') as HTMLQ2PopoverElement;\n specSelect.popoverElement.addEventListener = jest.fn();\n isMobileSpy.mockReturnValue(true);\n specSelect.addTouchEventListeners();\n\n expect(specSelect.popoverElement.addEventListener).toHaveBeenCalledWith(\n 'touchstart',\n specSelect.handleTouchStart,\n { passive: true }\n );\n });\n });\n\n describe('clickedElsewhere', () => {\n let mockTarget;\n let customEvent;\n beforeEach(async () => {\n specSelect = new Q2Select();\n mockTarget = { localName: 'click-elsewhere' } as unknown as EventTarget;\n customEvent = { target: mockTarget, stopPropagation: jest.fn() } as unknown as CustomEvent;\n specSelect = new Q2Select();\n specSelect.popoverElement = { open: true } as HTMLQ2PopoverElement;\n jest.spyOn(specSelect, 'innerInputField', 'get').mockReturnValue({ blur: jest.fn() } as any);\n });\n\n it('does nothing if target.localName is not \"click-elsewhere\"', async () => {\n mockTarget = { localName: 'div' } as unknown as EventTarget;\n customEvent = { target: mockTarget } as unknown as CustomEvent;\n\n specSelect.clickedElsewhere(customEvent);\n });\n\n it('calls stopPropagation', async () => {\n specSelect.clickedElsewhere(customEvent);\n\n expect(customEvent.stopPropagation).toHaveBeenCalled();\n });\n\n it('sets popoverElement.open to false', async () => {\n specSelect.clickedElsewhere(customEvent);\n\n expect(specSelect.popoverElement.open).toBe(false);\n });\n\n it('calls blur() on the innerInputField', async () => {\n specSelect.clickedElsewhere(customEvent);\n\n expect(specSelect.innerInputField.blur).toHaveBeenCalled();\n });\n });\n\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 it('calls removeTouchEventListeners', async () => {\n const removeTouchEventListenersSpy = jest.spyOn(specSelect, 'removeTouchEventListeners');\n specSelect.destroyEventListeners();\n expect(removeTouchEventListenersSpy).toHaveBeenCalled();\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('handleTouchStart', () => {\n it('does not focus the target if the activeElement is not the hostElement', async () => {\n specPage = await newSpecPage({\n components: [Q2Select],\n html: `<q2-select></q2-select>`,\n });\n specSelect = specPage.rootInstance;\n specElement = specPage.root;\n const element = document.createElement('div');\n const touchEvent = new TouchEvent('touchmove', {\n target: element,\n });\n const focusSpy = jest.spyOn(touchEvent.target as HTMLElement, 'focus');\n setActiveElement(element);\n specSelect.handleTouchStart(touchEvent);\n\n expect(document.activeElement).not.toBe(specElement);\n expect(focusSpy).not.toHaveBeenCalled();\n });\n\n it('does not call focus on the target if the target is the hostElement', async () => {\n specPage = await newSpecPage({\n components: [Q2Select],\n html: `<q2-select></q2-select>`,\n });\n specSelect = specPage.rootInstance;\n specElement = specPage.root;\n const touchEvent = new TouchEvent('touchmove', {\n target: specElement,\n });\n const focusSpy = jest.spyOn(touchEvent.target as HTMLElement, 'focus');\n setActiveElement(specElement);\n specSelect.handleTouchStart(touchEvent);\n\n expect(touchEvent.target).toBe(specElement);\n expect(focusSpy).not.toHaveBeenCalled();\n });\n\n describe('when hostElement is activeElement and target is not hostElement', () => {\n let targetFocusSpy: jest.SpyInstance;\n let targetElement: HTMLElement;\n beforeEach(async () => {\n specPage = await newSpecPage({\n components: [Q2Select],\n html: `<q2-select></q2-select>`,\n });\n specSelect = specPage.rootInstance;\n specElement = specPage.root;\n setActiveElement(specElement);\n specSelect.inputFocused = true;\n\n expect(document.activeElement).toBe(specElement);\n expect(specSelect.lastTouchWasInPopover).toBe(false);\n\n targetElement = specElement.shadowRoot.querySelector('q2-popover');\n const touchEvent = new TouchEvent('touchmove', {\n target: targetElement,\n });\n targetFocusSpy = jest.spyOn(targetElement, 'focus');\n expect(touchEvent.target).toBe(targetElement);\n specSelect.handleTouchStart(touchEvent);\n });\n\n it('sets inputFocused to false', async () => {\n expect(specSelect.inputFocused).toBe(false);\n });\n\n it('sets lastTouchWasInPopover to true', async () => {\n expect(specSelect.lastTouchWasInPopover).toBe(true);\n });\n\n it('calls focus on the target element', async () => {\n expect(targetFocusSpy).toHaveBeenCalled();\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"]}
@@ -446,7 +446,7 @@ describe('q2-tag', () => {
446
446
  await page.waitForChanges();
447
447
  const snapshot = await page.accessibility.snapshot();
448
448
  const button = snapshot.children[0];
449
- const optionList = snapshot.children[1];
449
+ const optionList = snapshot.children[1].children[0];
450
450
  expect(button.role).toEqual('combobox');
451
451
  expect(optionList.role).toEqual('menu');
452
452
  expect(optionList.children).toHaveLength(3);
@@ -1 +1 @@
1
- {"version":3,"file":"q2-tag-test.e2e.js","sourceRoot":"","sources":["../../../test/elements/q2-tag-test.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { E2EElement, E2EPage, EventSpy } from '@stencil/core/testing';\nimport { ActionSheetListCloseData } from 'q2-tecton-common/lib/utility/action-sheet';\nimport {\n setup,\n getFocusedAttribute,\n getFocusedTagName,\n getFocusedOptionValue,\n getActiveElementTestId,\n getListOfStyleCompilationIssues,\n} from '../helpers';\n\ndescribe('q2-tag', () => {\n let page: E2EPage;\n let tag: E2EElement;\n let optionList: E2EElement;\n let popover: E2EElement;\n let controlBtn: E2EElement;\n let allOptions: E2EElement[];\n let optionContainer: E2EElement;\n let clickSpy: EventSpy;\n let changeSpy: EventSpy;\n\n it('properly compiles CSS vars and functions', async () => {\n const page = await setup({ html: `<q2-tag></q2-tag>` });\n expect(await getListOfStyleCompilationIssues(page, 'q2-tag')).toHaveLength(0);\n });\n\n it('does not render button or dropdown by default', async () => {\n page = await setup({\n html: `<q2-tag label=\"My tag\"></q2-tag>`,\n });\n optionList = await page.find('q2-tag >>> q2-option-list');\n controlBtn = await page.find('q2-tag >>> button');\n\n expect(controlBtn).toBeNull();\n expect(optionList).toBeNull();\n });\n\n describe('when options are provided', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `,\n });\n tag = await page.find('q2-tag');\n allOptions = await page.findAll('q2-option');\n optionList = await page.find('q2-tag >>> q2-option-list');\n popover = await page.find('q2-tag >>> q2-popover');\n optionContainer = await page.find('q2-tag >>> q2-option-list >>> .options');\n controlBtn = await page.find('q2-tag >>> button');\n clickSpy = await tag.spyOnEvent('click');\n changeSpy = await tag.spyOnEvent('change');\n });\n\n it('renders the tag-wrapper as a button', async () => {\n const tagWrapper = await page.find('q2-tag >>> .tag-wrapper');\n expect(tagWrapper.nodeName).toEqual('BUTTON');\n });\n\n it('can select option via keyboard', async () => {\n const tagLabel = await page.find('q2-tag >>> .tag');\n\n expect(tagLabel.classList.contains('has-options')).toBe(true);\n expect(popover).not.toHaveAttribute('open');\n\n await controlBtn.press('ArrowDown');\n await page.waitForChanges();\n\n expect(tag).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedOptionValue(page)).toEqual('1');\n\n await optionContainer.press('ArrowDown');\n await page.waitForChanges();\n expect(await getFocusedOptionValue(page)).toEqual('2');\n await allOptions[1].press(' ');\n await page.waitForChanges();\n\n expect(tag).not.toHaveAttribute('open');\n expect(popover).not.toHaveAttribute('open');\n expect(clickSpy).toHaveReceivedEventDetail({\n value: '2',\n });\n expect(changeSpy).not.toHaveReceivedEvent();\n });\n\n it('can select option via mouse', async () => {\n const tagLabel = await page.find('q2-tag >>> .tag');\n\n expect(tagLabel.classList.contains('has-options')).toBe(true);\n expect(popover).not.toHaveAttribute('open');\n\n await controlBtn.click();\n await page.waitForChanges();\n\n expect(tag).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedTagName(page)).toEqual('Q2-TAG');\n\n await allOptions[1].click();\n await page.waitForChanges();\n\n // expect(tag).not.toHaveAttribute('open');\n // expect(popover).not.toHaveAttribute('open');\n expect(clickSpy).toHaveReceivedEventDetail({\n value: '2',\n });\n expect(changeSpy).not.toHaveReceivedEvent();\n });\n\n describe('when keyboard is pressed', () => {\n it('opens list and focuses first option on ArrowDown', async () => {\n await controlBtn.press('ArrowDown');\n await page.waitForChanges();\n\n expect(tag).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedOptionValue(page)).toEqual('1');\n });\n\n it('opens list and focuses last option on ArrowUp', async () => {\n await controlBtn.press('ArrowUp');\n await page.waitForChanges();\n\n expect(tag).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedOptionValue(page)).toEqual('3');\n });\n\n it('opens list and focuses first option on Enter', async () => {\n await controlBtn.press('Enter');\n await page.waitForChanges();\n\n expect(tag).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedOptionValue(page)).toEqual('1');\n });\n\n it('opens list and focuses first option on Space', async () => {\n await controlBtn.press(' ');\n await page.waitForChanges();\n\n expect(tag).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedOptionValue(page)).toEqual('1');\n });\n\n it('opens list and focuses last option on Home', async () => {\n await controlBtn.press('Home');\n await page.waitForChanges();\n\n expect(tag).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedAttribute(page, 'value')).toEqual('1');\n });\n\n it('opens list and focuses last option on End', async () => {\n await controlBtn.press('End');\n await page.waitForChanges();\n\n expect(tag).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedAttribute(page, 'value')).toEqual('3');\n });\n });\n });\n\n describe('when options are NOT provided', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\">\n </q2-tag>\n `,\n });\n tag = await page.find('q2-tag');\n });\n it('renders the tag-wrapper as a div', async () => {\n const tagWrapper = await page.find('q2-tag >>> .tag-wrapper');\n expect(tagWrapper.nodeName).toEqual('DIV');\n });\n it('zero is not rendered inside the click-elsewhere element (TCT-2433)', async () => {\n const clickElsewhere = await page.find('q2-tag >>> click-elsewhere');\n expect(await tag.getProperty('label')).toBe('My tag');\n expect(clickElsewhere.textContent.slice(-1)).not.toBe('0');\n });\n });\n\n describe('Props', () => {\n describe('hoist', () => {\n const runHoistSetup = async (\n action: string,\n hoistEnabled: boolean = false,\n defineShowActionSheet: boolean = false,\n isCancelled: boolean = false\n ) => {\n page = await setup({\n html: `\n <q2-tag ${hoistEnabled ? 'hoist' : ''} label=\"My tag\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `,\n });\n\n if (defineShowActionSheet) {\n await page.evaluate(isCancelled => {\n const returnValue: ActionSheetListCloseData = isCancelled\n ? {\n type: 'cancel',\n value: '',\n values: [],\n }\n : {\n value: '3',\n values: [{ display: 'Option 3', value: '3' }],\n type: 'confirm',\n };\n (this as Window).TectonElements.showActionSheet = async () => returnValue;\n }, isCancelled);\n }\n\n popover = await page.find('q2-tag >>> q2-popover');\n tag = await page.find('q2-tag');\n controlBtn = await page.find('q2-tag >>> button');\n clickSpy = await tag.spyOnEvent('click');\n\n expect(popover).not.toHaveAttribute('open');\n\n if (action === 'click') {\n await controlBtn.click();\n } else {\n await controlBtn.press(action);\n }\n await page.waitForChanges();\n };\n\n describe('when window.Tecton.useActionSheets is true', () => {\n it('defaults the hoist prop to true', async () => {\n page = await setup({ html: `` });\n await page.evaluate(() => {\n (this as Window).Tecton = {\n inMobileApp: false,\n useActionSheets: true,\n noStrings: false,\n platformDimensions: null,\n platformUrl: null,\n };\n });\n await page.setContent(`\n <q2-tag label=\"My tag\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `);\n await page.waitForChanges();\n\n tag = await page.find('q2-tag');\n expect(await tag.getProperty('hoist')).toEqual(true);\n });\n\n it('sets hoist to false when manually set to false', async () => {\n page = await setup({ html: `` });\n await page.evaluate(() => {\n (this as Window).Tecton = {\n inMobileApp: false,\n useActionSheets: true,\n noStrings: false,\n platformDimensions: null,\n platformUrl: null,\n };\n });\n await page.setContent(`\n <q2-tag label=\"My tag\" hoist=\"false\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `);\n await page.waitForChanges();\n\n tag = await page.find('q2-tag');\n expect(await tag.getProperty('hoist')).toEqual(false);\n });\n });\n\n describe('when false (default)', () => {\n it('opens popover on click', async () => {\n await runHoistSetup('click', false, true);\n\n expect(popover).toHaveAttribute('open');\n\n const option = await page.find('q2-option[value=\"3\"]');\n await option.click();\n await page.waitForChanges();\n\n expect(popover).not.toHaveAttribute('open');\n\n expect(clickSpy).toHaveReceivedEventDetail({\n value: '3',\n });\n });\n });\n\n describe('when true', () => {\n describe('when window.TectonElements.showActionSheet is not defined', () => {\n it('opens popover on click', async () => {\n await runHoistSetup('click', true, false);\n\n const option = await page.find('q2-option[value=\"3\"]');\n await option.click();\n await page.waitForChanges();\n\n expect(popover).not.toHaveAttribute('open');\n\n expect(clickSpy).toHaveReceivedEventDetail({\n value: '3',\n });\n });\n });\n\n describe('when window.TectonElements.showActionSheet is defined', () => {\n ['click', 'ArrowDown', 'Space', 'Enter'].forEach(action => {\n it(`calls showActionSheet on ${action}`, async () => {\n await runHoistSetup(action, true, true);\n\n expect(clickSpy).toHaveReceivedEventDetail({\n value: '3',\n });\n });\n });\n\n it(`calls showActionSheet on click and returns no data when cancelled`, async () => {\n await runHoistSetup('click', true, true, true);\n\n expect(clickSpy).toHaveReceivedEventDetail({\n value: '',\n });\n });\n });\n });\n });\n\n describe('popoverMinHeight', () => {\n describe('when not provided', () => {\n it('defaults to 150 and passes that value to q2-popover', async () => {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `,\n });\n tag = await page.find('q2-tag');\n popover = await page.find('q2-tag >>> q2-popover');\n\n expect(await tag.getProperty('popoverMinHeight')).toEqual(150);\n expect(await popover.getProperty('minHeight')).toEqual(150);\n });\n });\n describe('when provided', () => {\n it('passes the provided value to the q2-popover', async () => {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\" popover-min-height=\"300\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `,\n });\n popover = await page.find('q2-tag >>> q2-popover');\n\n expect(await popover.getProperty('minHeight')).toEqual(300);\n });\n });\n });\n\n describe('popoverDirection', () => {\n describe('when not provided', () => {\n it('does not default and does not pass a value to q2-popover', async () => {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `,\n });\n tag = await page.find('q2-tag');\n popover = await page.find('q2-tag >>> q2-popover');\n\n expect(await tag.getProperty('popoverDirection')).toBeUndefined();\n expect(await popover.getProperty('direction')).toBeUndefined();\n });\n });\n describe('when provided', () => {\n it('passes the provided value to the q2-popover', async () => {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\" popover-direction=\"up\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `,\n });\n popover = await page.find('q2-tag >>> q2-popover');\n\n expect(await popover.getProperty('direction')).toEqual('up');\n });\n });\n });\n describe('popoverAlingment', () => {\n it('can be initally set to left, then assigned to right, then back to left', async () => {\n page = await setup({\n html: `\n <q2-tag popover-alignment=\"left\">\n <q2-dropdown-item>Item 1</q2-dropdown-item>\n <q2-dropdown-item>Item 2</q2-dropdown-item>\n </q2-tag>\n `,\n });\n await page.waitForChanges();\n tag = await page.find('q2-tag');\n expect(await tag.getProperty('popoverAlignment')).toEqual('left');\n\n tag.setProperty('popoverAlignment', 'right');\n await page.waitForChanges();\n\n expect(await tag.getProperty('popoverAlignment')).toEqual('right');\n\n tag.setProperty('popoverAlignment', 'left');\n await page.waitForChanges();\n\n expect(await tag.getProperty('popoverAlignment')).toEqual('left');\n });\n it('will default to right via the prop inital value in q2-tag', async () => {\n page = await setup({\n html: `\n <q2-tag>\n <q2-dropdown-item>Item 1</q2-dropdown-item>\n <q2-dropdown-item>Item 2</q2-dropdown-item>\n </q2-tag>\n `,\n });\n await page.waitForChanges();\n tag = await page.find('q2-tag');\n expect(await tag.getProperty('popoverAlignment')).toEqual('right');\n });\n });\n });\n\n describe('focus', () => {\n let page: E2EPage;\n let tag: E2EElement;\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `,\n });\n tag = await page.find('q2-tag');\n });\n\n it('focuses active option and opens the list when focus event is dispatched', async function (): Promise<void> {\n await tag.triggerEvent('focus');\n await page.waitForChanges();\n\n expect(await getFocusedAttribute(page, 'test-id')).toEqual('btn-control');\n });\n\n it('focuses active option and opens the list when element.focus() is called', async function (): Promise<void> {\n await tag.focus();\n await page.waitForChanges();\n\n expect(await getFocusedAttribute(page, 'test-id')).toEqual('btn-control');\n });\n });\n\n describe('Regressions', () => {\n describe('TCT-2161', () => {\n it('leaves the element when Tab is pressed', async function (): Promise<void> {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n <button test-id=\"btn-next\">Test</button>\n `,\n });\n tag = await page.find('q2-tag');\n await tag.focus();\n\n expect(await getActiveElementTestId(page)).toEqual('btn-control');\n\n await tag.press('Tab');\n await page.waitForChanges();\n\n expect(await getActiveElementTestId(page)).toEqual('btn-next');\n });\n });\n });\n\n describe('Accessibility', () => {\n it(\"option-list should have a role of 'menu' and the options a role of 'menuoption'\", async () => {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\" open>\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `,\n });\n await page.waitForChanges();\n\n const snapshot = await page.accessibility.snapshot();\n const button = snapshot.children[0];\n const optionList = snapshot.children[1];\n\n expect(button.role).toEqual('combobox');\n expect(optionList.role).toEqual('menu');\n expect(optionList.children).toHaveLength(3);\n optionList.children.forEach(child => {\n expect(child.role).toEqual('menuitem');\n });\n });\n });\n});\n"]}
1
+ {"version":3,"file":"q2-tag-test.e2e.js","sourceRoot":"","sources":["../../../test/elements/q2-tag-test.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { E2EElement, E2EPage, EventSpy } from '@stencil/core/testing';\nimport { ActionSheetListCloseData } from 'q2-tecton-common/lib/utility/action-sheet';\nimport {\n setup,\n getFocusedAttribute,\n getFocusedTagName,\n getFocusedOptionValue,\n getActiveElementTestId,\n getListOfStyleCompilationIssues,\n} from '../helpers';\n\ndescribe('q2-tag', () => {\n let page: E2EPage;\n let tag: E2EElement;\n let optionList: E2EElement;\n let popover: E2EElement;\n let controlBtn: E2EElement;\n let allOptions: E2EElement[];\n let optionContainer: E2EElement;\n let clickSpy: EventSpy;\n let changeSpy: EventSpy;\n\n it('properly compiles CSS vars and functions', async () => {\n const page = await setup({ html: `<q2-tag></q2-tag>` });\n expect(await getListOfStyleCompilationIssues(page, 'q2-tag')).toHaveLength(0);\n });\n\n it('does not render button or dropdown by default', async () => {\n page = await setup({\n html: `<q2-tag label=\"My tag\"></q2-tag>`,\n });\n optionList = await page.find('q2-tag >>> q2-option-list');\n controlBtn = await page.find('q2-tag >>> button');\n\n expect(controlBtn).toBeNull();\n expect(optionList).toBeNull();\n });\n\n describe('when options are provided', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `,\n });\n tag = await page.find('q2-tag');\n allOptions = await page.findAll('q2-option');\n optionList = await page.find('q2-tag >>> q2-option-list');\n popover = await page.find('q2-tag >>> q2-popover');\n optionContainer = await page.find('q2-tag >>> q2-option-list >>> .options');\n controlBtn = await page.find('q2-tag >>> button');\n clickSpy = await tag.spyOnEvent('click');\n changeSpy = await tag.spyOnEvent('change');\n });\n\n it('renders the tag-wrapper as a button', async () => {\n const tagWrapper = await page.find('q2-tag >>> .tag-wrapper');\n expect(tagWrapper.nodeName).toEqual('BUTTON');\n });\n\n it('can select option via keyboard', async () => {\n const tagLabel = await page.find('q2-tag >>> .tag');\n\n expect(tagLabel.classList.contains('has-options')).toBe(true);\n expect(popover).not.toHaveAttribute('open');\n\n await controlBtn.press('ArrowDown');\n await page.waitForChanges();\n\n expect(tag).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedOptionValue(page)).toEqual('1');\n\n await optionContainer.press('ArrowDown');\n await page.waitForChanges();\n expect(await getFocusedOptionValue(page)).toEqual('2');\n await allOptions[1].press(' ');\n await page.waitForChanges();\n\n expect(tag).not.toHaveAttribute('open');\n expect(popover).not.toHaveAttribute('open');\n expect(clickSpy).toHaveReceivedEventDetail({\n value: '2',\n });\n expect(changeSpy).not.toHaveReceivedEvent();\n });\n\n it('can select option via mouse', async () => {\n const tagLabel = await page.find('q2-tag >>> .tag');\n\n expect(tagLabel.classList.contains('has-options')).toBe(true);\n expect(popover).not.toHaveAttribute('open');\n\n await controlBtn.click();\n await page.waitForChanges();\n\n expect(tag).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedTagName(page)).toEqual('Q2-TAG');\n\n await allOptions[1].click();\n await page.waitForChanges();\n\n // expect(tag).not.toHaveAttribute('open');\n // expect(popover).not.toHaveAttribute('open');\n expect(clickSpy).toHaveReceivedEventDetail({\n value: '2',\n });\n expect(changeSpy).not.toHaveReceivedEvent();\n });\n\n describe('when keyboard is pressed', () => {\n it('opens list and focuses first option on ArrowDown', async () => {\n await controlBtn.press('ArrowDown');\n await page.waitForChanges();\n\n expect(tag).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedOptionValue(page)).toEqual('1');\n });\n\n it('opens list and focuses last option on ArrowUp', async () => {\n await controlBtn.press('ArrowUp');\n await page.waitForChanges();\n\n expect(tag).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedOptionValue(page)).toEqual('3');\n });\n\n it('opens list and focuses first option on Enter', async () => {\n await controlBtn.press('Enter');\n await page.waitForChanges();\n\n expect(tag).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedOptionValue(page)).toEqual('1');\n });\n\n it('opens list and focuses first option on Space', async () => {\n await controlBtn.press(' ');\n await page.waitForChanges();\n\n expect(tag).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedOptionValue(page)).toEqual('1');\n });\n\n it('opens list and focuses last option on Home', async () => {\n await controlBtn.press('Home');\n await page.waitForChanges();\n\n expect(tag).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedAttribute(page, 'value')).toEqual('1');\n });\n\n it('opens list and focuses last option on End', async () => {\n await controlBtn.press('End');\n await page.waitForChanges();\n\n expect(tag).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedAttribute(page, 'value')).toEqual('3');\n });\n });\n });\n\n describe('when options are NOT provided', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\">\n </q2-tag>\n `,\n });\n tag = await page.find('q2-tag');\n });\n it('renders the tag-wrapper as a div', async () => {\n const tagWrapper = await page.find('q2-tag >>> .tag-wrapper');\n expect(tagWrapper.nodeName).toEqual('DIV');\n });\n it('zero is not rendered inside the click-elsewhere element (TCT-2433)', async () => {\n const clickElsewhere = await page.find('q2-tag >>> click-elsewhere');\n expect(await tag.getProperty('label')).toBe('My tag');\n expect(clickElsewhere.textContent.slice(-1)).not.toBe('0');\n });\n });\n\n describe('Props', () => {\n describe('hoist', () => {\n const runHoistSetup = async (\n action: string,\n hoistEnabled: boolean = false,\n defineShowActionSheet: boolean = false,\n isCancelled: boolean = false\n ) => {\n page = await setup({\n html: `\n <q2-tag ${hoistEnabled ? 'hoist' : ''} label=\"My tag\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `,\n });\n\n if (defineShowActionSheet) {\n await page.evaluate(isCancelled => {\n const returnValue: ActionSheetListCloseData = isCancelled\n ? {\n type: 'cancel',\n value: '',\n values: [],\n }\n : {\n value: '3',\n values: [{ display: 'Option 3', value: '3' }],\n type: 'confirm',\n };\n (this as Window).TectonElements.showActionSheet = async () => returnValue;\n }, isCancelled);\n }\n\n popover = await page.find('q2-tag >>> q2-popover');\n tag = await page.find('q2-tag');\n controlBtn = await page.find('q2-tag >>> button');\n clickSpy = await tag.spyOnEvent('click');\n\n expect(popover).not.toHaveAttribute('open');\n\n if (action === 'click') {\n await controlBtn.click();\n } else {\n await controlBtn.press(action);\n }\n await page.waitForChanges();\n };\n\n describe('when window.Tecton.useActionSheets is true', () => {\n it('defaults the hoist prop to true', async () => {\n page = await setup({ html: `` });\n await page.evaluate(() => {\n (this as Window).Tecton = {\n inMobileApp: false,\n useActionSheets: true,\n noStrings: false,\n platformDimensions: null,\n platformUrl: null,\n };\n });\n await page.setContent(`\n <q2-tag label=\"My tag\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `);\n await page.waitForChanges();\n\n tag = await page.find('q2-tag');\n expect(await tag.getProperty('hoist')).toEqual(true);\n });\n\n it('sets hoist to false when manually set to false', async () => {\n page = await setup({ html: `` });\n await page.evaluate(() => {\n (this as Window).Tecton = {\n inMobileApp: false,\n useActionSheets: true,\n noStrings: false,\n platformDimensions: null,\n platformUrl: null,\n };\n });\n await page.setContent(`\n <q2-tag label=\"My tag\" hoist=\"false\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `);\n await page.waitForChanges();\n\n tag = await page.find('q2-tag');\n expect(await tag.getProperty('hoist')).toEqual(false);\n });\n });\n\n describe('when false (default)', () => {\n it('opens popover on click', async () => {\n await runHoistSetup('click', false, true);\n\n expect(popover).toHaveAttribute('open');\n\n const option = await page.find('q2-option[value=\"3\"]');\n await option.click();\n await page.waitForChanges();\n\n expect(popover).not.toHaveAttribute('open');\n\n expect(clickSpy).toHaveReceivedEventDetail({\n value: '3',\n });\n });\n });\n\n describe('when true', () => {\n describe('when window.TectonElements.showActionSheet is not defined', () => {\n it('opens popover on click', async () => {\n await runHoistSetup('click', true, false);\n\n const option = await page.find('q2-option[value=\"3\"]');\n await option.click();\n await page.waitForChanges();\n\n expect(popover).not.toHaveAttribute('open');\n\n expect(clickSpy).toHaveReceivedEventDetail({\n value: '3',\n });\n });\n });\n\n describe('when window.TectonElements.showActionSheet is defined', () => {\n ['click', 'ArrowDown', 'Space', 'Enter'].forEach(action => {\n it(`calls showActionSheet on ${action}`, async () => {\n await runHoistSetup(action, true, true);\n\n expect(clickSpy).toHaveReceivedEventDetail({\n value: '3',\n });\n });\n });\n\n it(`calls showActionSheet on click and returns no data when cancelled`, async () => {\n await runHoistSetup('click', true, true, true);\n\n expect(clickSpy).toHaveReceivedEventDetail({\n value: '',\n });\n });\n });\n });\n });\n\n describe('popoverMinHeight', () => {\n describe('when not provided', () => {\n it('defaults to 150 and passes that value to q2-popover', async () => {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `,\n });\n tag = await page.find('q2-tag');\n popover = await page.find('q2-tag >>> q2-popover');\n\n expect(await tag.getProperty('popoverMinHeight')).toEqual(150);\n expect(await popover.getProperty('minHeight')).toEqual(150);\n });\n });\n describe('when provided', () => {\n it('passes the provided value to the q2-popover', async () => {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\" popover-min-height=\"300\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `,\n });\n popover = await page.find('q2-tag >>> q2-popover');\n\n expect(await popover.getProperty('minHeight')).toEqual(300);\n });\n });\n });\n\n describe('popoverDirection', () => {\n describe('when not provided', () => {\n it('does not default and does not pass a value to q2-popover', async () => {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `,\n });\n tag = await page.find('q2-tag');\n popover = await page.find('q2-tag >>> q2-popover');\n\n expect(await tag.getProperty('popoverDirection')).toBeUndefined();\n expect(await popover.getProperty('direction')).toBeUndefined();\n });\n });\n describe('when provided', () => {\n it('passes the provided value to the q2-popover', async () => {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\" popover-direction=\"up\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `,\n });\n popover = await page.find('q2-tag >>> q2-popover');\n\n expect(await popover.getProperty('direction')).toEqual('up');\n });\n });\n });\n describe('popoverAlingment', () => {\n it('can be initally set to left, then assigned to right, then back to left', async () => {\n page = await setup({\n html: `\n <q2-tag popover-alignment=\"left\">\n <q2-dropdown-item>Item 1</q2-dropdown-item>\n <q2-dropdown-item>Item 2</q2-dropdown-item>\n </q2-tag>\n `,\n });\n await page.waitForChanges();\n tag = await page.find('q2-tag');\n expect(await tag.getProperty('popoverAlignment')).toEqual('left');\n\n tag.setProperty('popoverAlignment', 'right');\n await page.waitForChanges();\n\n expect(await tag.getProperty('popoverAlignment')).toEqual('right');\n\n tag.setProperty('popoverAlignment', 'left');\n await page.waitForChanges();\n\n expect(await tag.getProperty('popoverAlignment')).toEqual('left');\n });\n it('will default to right via the prop inital value in q2-tag', async () => {\n page = await setup({\n html: `\n <q2-tag>\n <q2-dropdown-item>Item 1</q2-dropdown-item>\n <q2-dropdown-item>Item 2</q2-dropdown-item>\n </q2-tag>\n `,\n });\n await page.waitForChanges();\n tag = await page.find('q2-tag');\n expect(await tag.getProperty('popoverAlignment')).toEqual('right');\n });\n });\n });\n\n describe('focus', () => {\n let page: E2EPage;\n let tag: E2EElement;\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `,\n });\n tag = await page.find('q2-tag');\n });\n\n it('focuses active option and opens the list when focus event is dispatched', async function (): Promise<void> {\n await tag.triggerEvent('focus');\n await page.waitForChanges();\n\n expect(await getFocusedAttribute(page, 'test-id')).toEqual('btn-control');\n });\n\n it('focuses active option and opens the list when element.focus() is called', async function (): Promise<void> {\n await tag.focus();\n await page.waitForChanges();\n\n expect(await getFocusedAttribute(page, 'test-id')).toEqual('btn-control');\n });\n });\n\n describe('Regressions', () => {\n describe('TCT-2161', () => {\n it('leaves the element when Tab is pressed', async function (): Promise<void> {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n <button test-id=\"btn-next\">Test</button>\n `,\n });\n tag = await page.find('q2-tag');\n await tag.focus();\n\n expect(await getActiveElementTestId(page)).toEqual('btn-control');\n\n await tag.press('Tab');\n await page.waitForChanges();\n\n expect(await getActiveElementTestId(page)).toEqual('btn-next');\n });\n });\n });\n\n describe('Accessibility', () => {\n it(\"option-list should have a role of 'menu' and the options a role of 'menuoption'\", async () => {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\" open>\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `,\n });\n await page.waitForChanges();\n\n const snapshot = await page.accessibility.snapshot();\n const button = snapshot.children[0];\n const optionList = snapshot.children[1].children[0];\n\n expect(button.role).toEqual('combobox');\n expect(optionList.role).toEqual('menu');\n expect(optionList.children).toHaveLength(3);\n optionList.children.forEach(child => {\n expect(child.role).toEqual('menuitem');\n });\n });\n });\n});\n"]}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * TouchEvent mock for testing
3
+ * Extends the global TouchEventInit to allow setting a target HTMLElement
4
+ */
5
+ declare global {
6
+ interface TouchEventInit {
7
+ target?: HTMLElement;
8
+ }
9
+ }
10
+ export {};
@@ -31,8 +31,8 @@ export declare class Q2Popover implements ComponentInterface {
31
31
  * The number of pixels to leave between the popover and the edge of the viewport
32
32
  */
33
33
  displayBuffer: number;
34
- /** remove when Popover API is supported in iOS */
35
34
  orientationChanged: boolean;
35
+ componentWillLoad(): void;
36
36
  componentDidLoad(): void;
37
37
  disconnectedCallback(): void;
38
38
  toggle(): Promise<void>;
@@ -42,14 +42,16 @@ export declare class Q2Popover implements ComponentInterface {
42
42
  popoverStateHandler(event: CustomEvent<{
43
43
  open: boolean;
44
44
  }>): void;
45
- get actualDirection(): 'up' | 'down' | undefined;
45
+ get providedDirection(): 'up' | 'down' | undefined;
46
46
  get isModule(): boolean;
47
+ get supportsPopoverAPI(): boolean;
47
48
  handleMinHeight: () => void;
49
+ handlePopoverToggleEvent: (event: ToggleEvent) => void;
48
50
  viewPortChanged: () => void;
49
51
  viewPortOrientationChanged: () => void;
50
52
  addViewportListeners(): void;
51
53
  removeViewportListeners(): void;
52
- setFixedCSSProperties: () => Promise<void>;
54
+ setPopoverAPICSSProperties: () => Promise<void>;
53
55
  setAbsoluteCSSProperties: () => Promise<void>;
54
56
  clearCSSProperties(): void;
55
57
  setDirectionAndShow(direction: 'up' | 'down'): void;
@@ -98,15 +98,18 @@ export declare class Q2Select implements ComponentInterface {
98
98
  prioritizeSearch: boolean;
99
99
  structuredSelectedOptions: IOptionValue[];
100
100
  inputField?: HTMLQ2InputElement;
101
+ lastTouchWasInPopover: boolean;
101
102
  optionList: HTMLQ2OptionListElement;
102
103
  popoverElement?: HTMLQ2PopoverElement;
103
104
  popoverTopContainer?: HTMLDivElement;
104
105
  scheduledAfterRender: (() => void)[];
105
106
  mutationObserver: MutationObserver;
107
+ originalSearchable: boolean;
106
108
  componentWillLoad(): void;
107
109
  componentDidLoad(): void;
108
110
  componentDidRender(): void;
109
111
  disconnectedCallback(): void;
112
+ get isModule(): boolean;
110
113
  get innerInputField(): HTMLInputElement | HTMLButtonElement;
111
114
  get innerInputContainer(): HTMLElement;
112
115
  get badgeValue(): string;
@@ -186,10 +189,13 @@ export declare class Q2Select implements ComponentInterface {
186
189
  handleFocusout(event: FocusEvent): void;
187
190
  handleSelectedDisplay(event: CustomEvent): void;
188
191
  executeActionSheet(event: MouseEvent | KeyboardEvent): Promise<void>;
192
+ addTouchEventListeners: () => void;
189
193
  handleSelectionChanges(changeDetails: {
190
194
  value?: string;
191
195
  values?: IOptionValue[];
192
196
  }): void;
197
+ initEventListeners: () => void;
198
+ initMutationObserver: () => void;
193
199
  showSelectedOptions: () => void;
194
200
  showAllOptions: () => void;
195
201
  clearValue(): void;
@@ -202,9 +208,13 @@ export declare class Q2Select implements ComponentInterface {
202
208
  }>) => void;
203
209
  openDropdownWithoutActiveElement(): void;
204
210
  closeDropdown(): void;
211
+ destroyEventListeners: () => void;
205
212
  clearSearchText(): void;
206
213
  toggleDropdown(): void;
207
214
  focusInput(): void;
215
+ handleOptionListExternalKeydown(event: KeyboardEvent): void;
216
+ handleOrientationChange: () => void;
217
+ handleTouchStart: (event: TouchEvent) => void;
208
218
  statusMessageTimer: NodeJS.Timeout;
209
219
  setStatusMessage(message: any): void;
210
220
  checkSelectedOptions(): void;
@@ -225,6 +235,7 @@ export declare class Q2Select implements ComponentInterface {
225
235
  inputChangeHandler: (event: Event) => void;
226
236
  clickedElsewhere: (event: CustomEvent) => void;
227
237
  onCustomDisplayClick: (event: MouseEvent) => void;
238
+ removeTouchEventListeners: () => void;
228
239
  renderCustomDisplay(): any;
229
240
  render(): any;
230
241
  optionsDropdown(): any;
@@ -13,6 +13,7 @@ import { Q2Radio } from "../components/q2-radio/q2-radio";
13
13
  import { Q2Select } from "../components/q2-select/q2-select";
14
14
  import { FormFieldTypes, IDict } from "../util";
15
15
  export declare function isMobile(): boolean;
16
+ export declare function isInScrollableContainer(element: any): boolean;
16
17
  export declare function isHostLosingFocus(event: FocusEvent, hostElement: HTMLElement): boolean;
17
18
  export declare function isRelatedTargetWithinHost(event: FocusEvent, element: HTMLElement): boolean;
18
19
  export declare function isEventFromElement(event: Event, element: HTMLElement): boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "q2-tecton-elements",
3
- "version": "1.47.1",
3
+ "version": "1.47.3",
4
4
  "description": "Q2 Tecton Custom Elements",
5
5
  "license": "MIT",
6
6
  "author": "Q2 Tecton Team",
@@ -33,7 +33,7 @@
33
33
  },
34
34
  "dependencies": {
35
35
  "@stencil/core": "4.18.0",
36
- "q2-tecton-common": "1.47.1",
36
+ "q2-tecton-common": "1.47.3",
37
37
  "swiper": "8.4.4"
38
38
  },
39
39
  "devDependencies": {
@@ -54,5 +54,5 @@
54
54
  "typescript": "5.4.5",
55
55
  "typescript-eslint": "^7.11.0"
56
56
  },
57
- "gitHead": "f99adbd888a821fe97e78c9b15bc9a3f04cf8c12"
57
+ "gitHead": "644ff01caff88f66bd06814a2558f535a5e1a7ca"
58
58
  }
@@ -1 +0,0 @@
1
- {"file":"index-a93362ed.js","mappings":"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","names":["h"],"sources":["src/utils/index.tsx"],"sourcesContent":["import { h } from '@stencil/core';\nimport { Q2Btn } from 'src/components/q2-btn/q2-btn';\nimport { Q2Calendar } from 'src/components/q2-calendar/q2-calendar';\nimport { Q2Carousel } from 'src/components/q2-carousel/q2-carousel';\nimport { Q2Checkbox } from 'src/components/q2-checkbox/q2-checkbox';\nimport { Q2CheckboxGroup } from 'src/components/q2-checkbox-group/q2-checkbox-group';\nimport { Q2RadioGroup } from 'src/components/q2-radio-group/q2-radio-group';\nimport { Q2Dropdown } from 'src/components/q2-dropdown/q2-dropdown';\nimport { Q2DropdownItem } from 'src/components/q2-dropdown-item/q2-dropdown-item';\nimport { Q2EditableField } from 'src/components/q2-editable-field/q2-editable-field';\nimport { Q2Input } from 'src/components/q2-input/q2-input';\nimport { Q2Loading } from 'src/components/q2-loading/q2-loading';\nimport { Q2Radio } from 'src/components/q2-radio/q2-radio';\nimport { Q2Select } from 'src/components/q2-select/q2-select';\nimport { FormFieldTypes, IDict } from 'src/util';\n\nexport function isMobile(): boolean {\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|Mobile|IEMobile|Windows Phone|Opera Mini/i.test(\n navigator.userAgent\n );\n}\n\nexport function isHostLosingFocus(event: FocusEvent, hostElement: HTMLElement) {\n const type = event.type;\n const focusInTypes = ['focusin', 'focus'];\n const isFocusIn = focusInTypes.includes(type);\n\n // on focusin: `target` is element losing focus, `relatedTarget` is element gaining focus\n // on focusout: `target` is element gaining focus, `relatedTarget` is element losing focus\n const elementGainingFocus = isFocusIn ? event.target : event.relatedTarget;\n\n const isElementNestedInHostElement = (element: HTMLElement) => {\n if (element === hostElement) return true;\n if (element.parentElement) {\n return isElementNestedInHostElement(element.parentElement);\n }\n return false;\n };\n\n if (!(elementGainingFocus instanceof HTMLElement)) return true;\n return !isElementNestedInHostElement(elementGainingFocus);\n}\n\nexport function isRelatedTargetWithinHost(event: FocusEvent, element: HTMLElement) {\n return event.relatedTarget !== element && !element.contains(event.relatedTarget as Node);\n}\n\nexport function isEventFromElement(event: Event, element: HTMLElement): boolean {\n return event.composedPath?.()[0] === element;\n}\n\nexport function overrideFocus(hostElement: HTMLElement) {\n hostElement.focus = () => hostElement?.dispatchEvent(new FocusEvent('focus', { bubbles: false }));\n}\n\nexport function isFirefox() {\n const userAgent = navigator.userAgent.toLowerCase();\n return userAgent.includes('firefox');\n}\n\nexport function isTouchDevice() {\n return 'ontouchstart' in window || navigator.maxTouchPoints > 0;\n}\n\nexport function isSafari() {\n const userAgent = navigator.userAgent.toLowerCase();\n return userAgent.includes('safari') && !userAgent.includes('chrome');\n}\n\n/**\n * Returns the value of a prop if it is defined and included in the `validValues`\n * array. This is used primarily to prevent Vue wrappers from setting aria props\n * to \"Symbol()\" when the prop is not set.\n */\nexport function getAriaValueFromProp(prop: string, validValues?: string[]) {\n if (prop === undefined) return prop;\n if (!validValues) return prop !== 'Symbol()' ? prop : undefined;\n return validValues.includes(prop) || prop === '' ? prop : undefined;\n}\n\nlet guid: number = 1000;\nexport function createGuid(): number {\n return guid++;\n}\n\nexport function nextPaint(fn: (value?: unknown) => void) {\n requestAnimationFrame(() => {\n requestAnimationFrame(fn);\n });\n}\n\nexport function isVisible(element: HTMLElement) {\n return element.offsetWidth > 0 || element.offsetHeight > 0 || element.getClientRects().length > 0;\n}\n\nexport function waitForNextPaint() {\n return new Promise(resolve => nextPaint(resolve));\n}\n\nexport function capitalize(value: string) {\n return `${value.charAt(0).toUpperCase()}${value.slice(1)}`;\n}\n\nexport function pick(props: string[]): (obj: object) => object {\n return obj => {\n return props.reduce((memo, prop) => {\n return {\n ...memo,\n [prop]: obj[prop],\n };\n }, {});\n };\n}\n\nexport function loc(key: string, subs?: IDict<any> | string[]) {\n if (!key) return '';\n if (window.Tecton?.noStrings === true) {\n return key;\n }\n return window?.TectonElements?.loc(key, subs) ?? key;\n}\n\nexport function labelDOM(target: FormFieldTypes | Q2RadioGroup | Q2CheckboxGroup) {\n const { label, hideLabel, optional, readonly } = target;\n const labelClasses: string[] = ['input-label'];\n let helpText = '';\n\n let shouldHideLabel = hideLabel;\n if (!shouldHideLabel) {\n const labelSlotElements = target.hostElement.querySelectorAll<HTMLSlotElement>('[slot=\"label\"]');\n const hasSlotContent = labelSlotElements.length > 0;\n const hasLabel = !!label;\n\n shouldHideLabel = hasLabel || hasSlotContent ? false : true;\n }\n\n if (shouldHideLabel) labelClasses.push('sr');\n if (optional) {\n helpText = <span class=\"optional-tag\">{loc('tecton.element.input.optional')}</span>;\n }\n if (readonly) {\n helpText = <span class=\"optional-tag\">{loc('tecton.element.input.readonly')}</span>;\n labelClasses.push('readonly-field');\n }\n return (\n <label\n htmlFor={target.inputId}\n class={labelClasses.join(' ')}\n >\n <slot name=\"label\">\n {label ? loc(label) : undefined}\n {helpText}\n </slot>\n </label>\n );\n}\n\nexport function hasSlotContent(target: HTMLElement, slotName: string) {\n return target.querySelector(`[slot=\"${slotName}\"]`) !== null;\n}\n\nexport function handleAriaLabel(\n target:\n | Q2Input\n | Q2Select\n | Q2Radio\n | Q2Checkbox\n | Q2EditableField\n | Q2Dropdown\n | Q2DropdownItem\n | Q2Loading\n | Q2Carousel\n | Q2Calendar\n | Q2Btn\n) {\n const { ariaLabel } = target;\n if (!ariaLabel) return;\n\n // If empty ariaLabel prop is set to primitive symbol by framework wrapper, set ariaLabel to undefined and return\n const FW_WRAPPERS_EMPTY_PROP = Symbol().toString();\n if (ariaLabel === FW_WRAPPERS_EMPTY_PROP) {\n target.ariaLabel = undefined;\n return;\n }\n\n // If ariaLabel is set, set hideLabel to true and set label to ariaLabel\n if ('hideLabel' in target) target.hideLabel = true;\n target.label = loc(ariaLabel);\n target.ariaLabel = undefined;\n}\n\n/**\n * Handles when a prop has been renamed on a component without introducing a breaking change.\n */\nexport function handleRenamedProp(target: object, oldProp: string, newProp: string, removeOldProp?: boolean) {\n if (typeof target[oldProp] === 'undefined') return;\n\n // If old prop has value, aka set in component, call handleDeprecationWarning()\n if (target[oldProp]) {\n handleDeprecationWarning(target, oldProp, 'prop');\n }\n\n target[newProp] = target[oldProp];\n\n if (removeOldProp) {\n delete target[oldProp];\n }\n}\n\nexport function handleDeprecationWarning(\n target: object,\n deprecatedItemName: string,\n deprecatedItemType: 'function' | 'prop' | 'method' | 'event'\n) {\n if (window.location.hostname === 'localhost' || window.location.host === 'stack.q2developer.com') {\n if (target[deprecatedItemName] === 'undefined') return;\n\n const componentName = target.constructor.name.toLowerCase().slice(2);\n\n switch (deprecatedItemType) {\n case 'prop':\n if (deprecatedItemName === 'size' && componentName === 'btn') {\n console.warn(\n `The property of size in q2-btn should not be typeof number, or typeof string containing a number. This functionality will be deprecated in an upcoming release. Instead, please use the value 'undefined', or typeof string with any of the following values: \"small\" / \"medium\" / \"large\" `\n );\n } else {\n console.warn(\n `The property ${deprecatedItemName} in q2-${componentName} has been marked for deprecation and will be removed in an upcoming major release.`\n );\n }\n break;\n\n case 'function':\n console.warn(\n `The function ${deprecatedItemName} in ${componentName} has been marked for deprecation and will be removed in an upcoming major release.`\n );\n break;\n\n case 'method':\n console.warn(\n `The method ${deprecatedItemName} in ${componentName} has been marked for deprecation and will be removed in an upcoming major release.`\n );\n break;\n\n case 'event':\n console.warn(\n `The event ${deprecatedItemName} in ${componentName} has been marked for deprecation and will be removed in an upcoming major release.`\n );\n break;\n\n default:\n console.error(\n `handleDeprecationWarning --> No type found for desired deprecation: ${deprecatedItemName} in q2-${componentName}: deprecatedItemType = ${deprecatedItemName}`\n );\n }\n }\n}\n\nexport function messagesDOM(target: FormFieldTypes) {\n const type = target.hasError ? 'danger' : 'info';\n\n return (\n <div class=\"messages-container\">\n <q2-message\n appearance=\"minimal\"\n description\n type={type}\n test-id=\"message\"\n >\n <ul id={target.inputDescribedBy}>\n {target.messages.map(message => (\n <li test-id=\"messageListItem\">{loc(message)}</li>\n ))}\n </ul>\n </q2-message>\n </div>\n );\n}\n\nexport function setMessageHeight(target: FormFieldTypes) {\n const messageContainer = (target.hostElement.shadowRoot as ShadowRoot).querySelector<HTMLDivElement>(\n '.messages-container'\n );\n const q2Message = messageContainer.querySelector('q2-message');\n nextPaint(() => {\n const height = target.showMessages && target.hasFocus ? q2Message.getBoundingClientRect().height : 0;\n\n if (messageContainer.style.getPropertyValue('height') === `${height}px`) return;\n\n if (height === 0) {\n q2Message.classList.add('invisible');\n messageContainer.style.removeProperty('height');\n } else {\n q2Message.classList.remove('invisible');\n messageContainer.style.setProperty('height', `${height}px`);\n }\n });\n}\n\nexport const resizeIframe = () => {\n return window.TectonElements?.resizeIframe?.();\n};\n\n// Handling color attribute (deprecated)\nexport const handleColor = (target: Q2Btn) => {\n if (!target.intent && ['primary', 'secondary'].includes(target.color)) {\n target.intent = `workflow-${target.color}` as HTMLQ2BtnElement['intent'];\n target.color = undefined;\n }\n};\n"],"version":3}
@@ -1 +0,0 @@
1
- {"file":"index-3c5cd75e.js","mappings":"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","names":[],"sources":["src/utils/index.tsx"],"sourcesContent":["import { h } from '@stencil/core';\nimport { Q2Btn } from 'src/components/q2-btn/q2-btn';\nimport { Q2Calendar } from 'src/components/q2-calendar/q2-calendar';\nimport { Q2Carousel } from 'src/components/q2-carousel/q2-carousel';\nimport { Q2Checkbox } from 'src/components/q2-checkbox/q2-checkbox';\nimport { Q2CheckboxGroup } from 'src/components/q2-checkbox-group/q2-checkbox-group';\nimport { Q2RadioGroup } from 'src/components/q2-radio-group/q2-radio-group';\nimport { Q2Dropdown } from 'src/components/q2-dropdown/q2-dropdown';\nimport { Q2DropdownItem } from 'src/components/q2-dropdown-item/q2-dropdown-item';\nimport { Q2EditableField } from 'src/components/q2-editable-field/q2-editable-field';\nimport { Q2Input } from 'src/components/q2-input/q2-input';\nimport { Q2Loading } from 'src/components/q2-loading/q2-loading';\nimport { Q2Radio } from 'src/components/q2-radio/q2-radio';\nimport { Q2Select } from 'src/components/q2-select/q2-select';\nimport { FormFieldTypes, IDict } from 'src/util';\n\nexport function isMobile(): boolean {\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|Mobile|IEMobile|Windows Phone|Opera Mini/i.test(\n navigator.userAgent\n );\n}\n\nexport function isHostLosingFocus(event: FocusEvent, hostElement: HTMLElement) {\n const type = event.type;\n const focusInTypes = ['focusin', 'focus'];\n const isFocusIn = focusInTypes.includes(type);\n\n // on focusin: `target` is element losing focus, `relatedTarget` is element gaining focus\n // on focusout: `target` is element gaining focus, `relatedTarget` is element losing focus\n const elementGainingFocus = isFocusIn ? event.target : event.relatedTarget;\n\n const isElementNestedInHostElement = (element: HTMLElement) => {\n if (element === hostElement) return true;\n if (element.parentElement) {\n return isElementNestedInHostElement(element.parentElement);\n }\n return false;\n };\n\n if (!(elementGainingFocus instanceof HTMLElement)) return true;\n return !isElementNestedInHostElement(elementGainingFocus);\n}\n\nexport function isRelatedTargetWithinHost(event: FocusEvent, element: HTMLElement) {\n return event.relatedTarget !== element && !element.contains(event.relatedTarget as Node);\n}\n\nexport function isEventFromElement(event: Event, element: HTMLElement): boolean {\n return event.composedPath?.()[0] === element;\n}\n\nexport function overrideFocus(hostElement: HTMLElement) {\n hostElement.focus = () => hostElement?.dispatchEvent(new FocusEvent('focus', { bubbles: false }));\n}\n\nexport function isFirefox() {\n const userAgent = navigator.userAgent.toLowerCase();\n return userAgent.includes('firefox');\n}\n\nexport function isTouchDevice() {\n return 'ontouchstart' in window || navigator.maxTouchPoints > 0;\n}\n\nexport function isSafari() {\n const userAgent = navigator.userAgent.toLowerCase();\n return userAgent.includes('safari') && !userAgent.includes('chrome');\n}\n\n/**\n * Returns the value of a prop if it is defined and included in the `validValues`\n * array. This is used primarily to prevent Vue wrappers from setting aria props\n * to \"Symbol()\" when the prop is not set.\n */\nexport function getAriaValueFromProp(prop: string, validValues?: string[]) {\n if (prop === undefined) return prop;\n if (!validValues) return prop !== 'Symbol()' ? prop : undefined;\n return validValues.includes(prop) || prop === '' ? prop : undefined;\n}\n\nlet guid: number = 1000;\nexport function createGuid(): number {\n return guid++;\n}\n\nexport function nextPaint(fn: (value?: unknown) => void) {\n requestAnimationFrame(() => {\n requestAnimationFrame(fn);\n });\n}\n\nexport function isVisible(element: HTMLElement) {\n return element.offsetWidth > 0 || element.offsetHeight > 0 || element.getClientRects().length > 0;\n}\n\nexport function waitForNextPaint() {\n return new Promise(resolve => nextPaint(resolve));\n}\n\nexport function capitalize(value: string) {\n return `${value.charAt(0).toUpperCase()}${value.slice(1)}`;\n}\n\nexport function pick(props: string[]): (obj: object) => object {\n return obj => {\n return props.reduce((memo, prop) => {\n return {\n ...memo,\n [prop]: obj[prop],\n };\n }, {});\n };\n}\n\nexport function loc(key: string, subs?: IDict<any> | string[]) {\n if (!key) return '';\n if (window.Tecton?.noStrings === true) {\n return key;\n }\n return window?.TectonElements?.loc(key, subs) ?? key;\n}\n\nexport function labelDOM(target: FormFieldTypes | Q2RadioGroup | Q2CheckboxGroup) {\n const { label, hideLabel, optional, readonly } = target;\n const labelClasses: string[] = ['input-label'];\n let helpText = '';\n\n let shouldHideLabel = hideLabel;\n if (!shouldHideLabel) {\n const labelSlotElements = target.hostElement.querySelectorAll<HTMLSlotElement>('[slot=\"label\"]');\n const hasSlotContent = labelSlotElements.length > 0;\n const hasLabel = !!label;\n\n shouldHideLabel = hasLabel || hasSlotContent ? false : true;\n }\n\n if (shouldHideLabel) labelClasses.push('sr');\n if (optional) {\n helpText = <span class=\"optional-tag\">{loc('tecton.element.input.optional')}</span>;\n }\n if (readonly) {\n helpText = <span class=\"optional-tag\">{loc('tecton.element.input.readonly')}</span>;\n labelClasses.push('readonly-field');\n }\n return (\n <label\n htmlFor={target.inputId}\n class={labelClasses.join(' ')}\n >\n <slot name=\"label\">\n {label ? loc(label) : undefined}\n {helpText}\n </slot>\n </label>\n );\n}\n\nexport function hasSlotContent(target: HTMLElement, slotName: string) {\n return target.querySelector(`[slot=\"${slotName}\"]`) !== null;\n}\n\nexport function handleAriaLabel(\n target:\n | Q2Input\n | Q2Select\n | Q2Radio\n | Q2Checkbox\n | Q2EditableField\n | Q2Dropdown\n | Q2DropdownItem\n | Q2Loading\n | Q2Carousel\n | Q2Calendar\n | Q2Btn\n) {\n const { ariaLabel } = target;\n if (!ariaLabel) return;\n\n // If empty ariaLabel prop is set to primitive symbol by framework wrapper, set ariaLabel to undefined and return\n const FW_WRAPPERS_EMPTY_PROP = Symbol().toString();\n if (ariaLabel === FW_WRAPPERS_EMPTY_PROP) {\n target.ariaLabel = undefined;\n return;\n }\n\n // If ariaLabel is set, set hideLabel to true and set label to ariaLabel\n if ('hideLabel' in target) target.hideLabel = true;\n target.label = loc(ariaLabel);\n target.ariaLabel = undefined;\n}\n\n/**\n * Handles when a prop has been renamed on a component without introducing a breaking change.\n */\nexport function handleRenamedProp(target: object, oldProp: string, newProp: string, removeOldProp?: boolean) {\n if (typeof target[oldProp] === 'undefined') return;\n\n // If old prop has value, aka set in component, call handleDeprecationWarning()\n if (target[oldProp]) {\n handleDeprecationWarning(target, oldProp, 'prop');\n }\n\n target[newProp] = target[oldProp];\n\n if (removeOldProp) {\n delete target[oldProp];\n }\n}\n\nexport function handleDeprecationWarning(\n target: object,\n deprecatedItemName: string,\n deprecatedItemType: 'function' | 'prop' | 'method' | 'event'\n) {\n if (window.location.hostname === 'localhost' || window.location.host === 'stack.q2developer.com') {\n if (target[deprecatedItemName] === 'undefined') return;\n\n const componentName = target.constructor.name.toLowerCase().slice(2);\n\n switch (deprecatedItemType) {\n case 'prop':\n if (deprecatedItemName === 'size' && componentName === 'btn') {\n console.warn(\n `The property of size in q2-btn should not be typeof number, or typeof string containing a number. This functionality will be deprecated in an upcoming release. Instead, please use the value 'undefined', or typeof string with any of the following values: \"small\" / \"medium\" / \"large\" `\n );\n } else {\n console.warn(\n `The property ${deprecatedItemName} in q2-${componentName} has been marked for deprecation and will be removed in an upcoming major release.`\n );\n }\n break;\n\n case 'function':\n console.warn(\n `The function ${deprecatedItemName} in ${componentName} has been marked for deprecation and will be removed in an upcoming major release.`\n );\n break;\n\n case 'method':\n console.warn(\n `The method ${deprecatedItemName} in ${componentName} has been marked for deprecation and will be removed in an upcoming major release.`\n );\n break;\n\n case 'event':\n console.warn(\n `The event ${deprecatedItemName} in ${componentName} has been marked for deprecation and will be removed in an upcoming major release.`\n );\n break;\n\n default:\n console.error(\n `handleDeprecationWarning --> No type found for desired deprecation: ${deprecatedItemName} in q2-${componentName}: deprecatedItemType = ${deprecatedItemName}`\n );\n }\n }\n}\n\nexport function messagesDOM(target: FormFieldTypes) {\n const type = target.hasError ? 'danger' : 'info';\n\n return (\n <div class=\"messages-container\">\n <q2-message\n appearance=\"minimal\"\n description\n type={type}\n test-id=\"message\"\n >\n <ul id={target.inputDescribedBy}>\n {target.messages.map(message => (\n <li test-id=\"messageListItem\">{loc(message)}</li>\n ))}\n </ul>\n </q2-message>\n </div>\n );\n}\n\nexport function setMessageHeight(target: FormFieldTypes) {\n const messageContainer = (target.hostElement.shadowRoot as ShadowRoot).querySelector<HTMLDivElement>(\n '.messages-container'\n );\n const q2Message = messageContainer.querySelector('q2-message');\n nextPaint(() => {\n const height = target.showMessages && target.hasFocus ? q2Message.getBoundingClientRect().height : 0;\n\n if (messageContainer.style.getPropertyValue('height') === `${height}px`) return;\n\n if (height === 0) {\n q2Message.classList.add('invisible');\n messageContainer.style.removeProperty('height');\n } else {\n q2Message.classList.remove('invisible');\n messageContainer.style.setProperty('height', `${height}px`);\n }\n });\n}\n\nexport const resizeIframe = () => {\n return window.TectonElements?.resizeIframe?.();\n};\n\n// Handling color attribute (deprecated)\nexport const handleColor = (target: Q2Btn) => {\n if (!target.intent && ['primary', 'secondary'].includes(target.color)) {\n target.intent = `workflow-${target.color}` as HTMLQ2BtnElement['intent'];\n target.color = undefined;\n }\n};\n"],"version":3}
@@ -1,2 +0,0 @@
1
- import{h as e}from"./p-a5f18e27.js";function n(){return/Android|webOS|iPhone|iPad|iPod|BlackBerry|Mobile|IEMobile|Windows Phone|Opera Mini/i.test(navigator.userAgent)}function i(e,n){const i=e.type;const o=["focusin","focus"];const t=o.includes(i);const r=t?e.target:e.relatedTarget;const a=e=>{if(e===n)return true;if(e.parentElement){return a(e.parentElement)}return false};if(!(r instanceof HTMLElement))return true;return!a(r)}function o(e,n){return e.relatedTarget!==n&&!n.contains(e.relatedTarget)}function t(e,n){var i;return((i=e.composedPath)===null||i===void 0?void 0:i.call(e)[0])===n}function r(e){e.focus=()=>e===null||e===void 0?void 0:e.dispatchEvent(new FocusEvent("focus",{bubbles:false}))}function a(){const e=navigator.userAgent.toLowerCase();return e.includes("firefox")}function s(){return"ontouchstart"in window||navigator.maxTouchPoints>0}function l(e,n){if(e===undefined)return e;if(!n)return e!=="Symbol()"?e:undefined;return n.includes(e)||e===""?e:undefined}let u=1e3;function d(){return u++}function c(e){requestAnimationFrame((()=>{requestAnimationFrame(e)}))}function f(e){return e.offsetWidth>0||e.offsetHeight>0||e.getClientRects().length>0}function m(){return new Promise((e=>c(e)))}function p(e,n){var i,o,t;if(!e)return"";if(((i=window.Tecton)===null||i===void 0?void 0:i.noStrings)===true){return e}return(t=(o=window===null||window===void 0?void 0:window.TectonElements)===null||o===void 0?void 0:o.loc(e,n))!==null&&t!==void 0?t:e}function b(n){const{label:i,hideLabel:o,optional:t,readonly:r}=n;const a=["input-label"];let s="";let l=o;if(!l){const e=n.hostElement.querySelectorAll('[slot="label"]');const o=e.length>0;const t=!!i;l=t||o?false:true}if(l)a.push("sr");if(t){s=e("span",{class:"optional-tag"},p("tecton.element.input.optional"))}if(r){s=e("span",{class:"optional-tag"},p("tecton.element.input.readonly"));a.push("readonly-field")}return e("label",{htmlFor:n.inputId,class:a.join(" ")},e("slot",{name:"label"},i?p(i):undefined,s))}function v(e,n){return e.querySelector(`[slot="${n}"]`)!==null}function h(e){const{ariaLabel:n}=e;if(!n)return;const i=Symbol().toString();if(n===i){e.ariaLabel=undefined;return}if("hideLabel"in e)e.hideLabel=true;e.label=p(n);e.ariaLabel=undefined}function w(e,n,i,o){if(typeof e[n]==="undefined")return;if(e[n]){g(e,n,"prop")}e[i]=e[n];if(o){delete e[n]}}function g(e,n,i){if(window.location.hostname==="localhost"||window.location.host==="stack.q2developer.com"){if(e[n]==="undefined")return;const o=e.constructor.name.toLowerCase().slice(2);switch(i){case"prop":if(n==="size"&&o==="btn"){console.warn(`The property of size in q2-btn should not be typeof number, or typeof string containing a number. This functionality will be deprecated in an upcoming release. Instead, please use the value 'undefined', or typeof string with any of the following values: "small" / "medium" / "large" `)}else{console.warn(`The property ${n} in q2-${o} has been marked for deprecation and will be removed in an upcoming major release.`)}break;case"function":console.warn(`The function ${n} in ${o} has been marked for deprecation and will be removed in an upcoming major release.`);break;case"method":console.warn(`The method ${n} in ${o} has been marked for deprecation and will be removed in an upcoming major release.`);break;case"event":console.warn(`The event ${n} in ${o} has been marked for deprecation and will be removed in an upcoming major release.`);break;default:console.error(`handleDeprecationWarning --\x3e No type found for desired deprecation: ${n} in q2-${o}: deprecatedItemType = ${n}`)}}}function y(n){const i=n.hasError?"danger":"info";return e("div",{class:"messages-container"},e("q2-message",{appearance:"minimal",description:true,type:i,"test-id":"message"},e("ul",{id:n.inputDescribedBy},n.messages.map((n=>e("li",{"test-id":"messageListItem"},p(n)))))))}function $(e){const n=e.hostElement.shadowRoot.querySelector(".messages-container");const i=n.querySelector("q2-message");c((()=>{const o=e.showMessages&&e.hasFocus?i.getBoundingClientRect().height:0;if(n.style.getPropertyValue("height")===`${o}px`)return;if(o===0){i.classList.add("invisible");n.style.removeProperty("height")}else{i.classList.remove("invisible");n.style.setProperty("height",`${o}px`)}}))}const k=()=>{var e,n;return(n=(e=window.TectonElements)===null||e===void 0?void 0:e.resizeIframe)===null||n===void 0?void 0:n.call(e)};const q=e=>{if(!e.intent&&["primary","secondary"].includes(e.color)){e.intent=`workflow-${e.color}`;e.color=undefined}};export{w as a,s as b,d as c,n as d,b as e,v as f,o as g,h,t as i,i as j,a as k,p as l,y as m,c as n,r as o,l as p,f as q,k as r,$ as s,g as t,q as u,m as w};
2
- //# sourceMappingURL=p-84190698.js.map