q2-tecton-elements 1.52.2 → 1.54.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (361) hide show
  1. package/dist/bundle-report.json +43422 -0
  2. package/dist/cjs/{action-sheet-d32c41ae.js → action-sheet-8254c0fd.js} +6 -3
  3. package/dist/cjs/action-sheet-8254c0fd.js.map +1 -0
  4. package/dist/cjs/click-elsewhere.cjs.entry.js +96 -0
  5. package/dist/cjs/click-elsewhere.cjs.entry.js.map +1 -0
  6. package/dist/cjs/{index-07285783.js → index-76f63767.js} +1 -21
  7. package/dist/cjs/index-76f63767.js.map +1 -0
  8. package/dist/cjs/loader.cjs.js +1 -1
  9. package/dist/cjs/q2-action-group.cjs.entry.js +38 -17
  10. package/dist/cjs/q2-action-group.cjs.entry.js.map +1 -1
  11. package/dist/cjs/q2-action-sheet.cjs.entry.js +1 -1
  12. package/dist/cjs/q2-avatar.cjs.entry.js +1 -1
  13. package/dist/cjs/q2-avatar.cjs.entry.js.map +1 -1
  14. package/dist/cjs/q2-badge_7.cjs.entry.js +52 -18
  15. package/dist/cjs/q2-badge_7.cjs.entry.js.map +1 -1
  16. package/dist/cjs/q2-calendar.cjs.entry.js +1 -1
  17. package/dist/cjs/q2-card.cjs.entry.js +1 -1
  18. package/dist/cjs/q2-carousel-pane.cjs.entry.js +1 -1
  19. package/dist/cjs/q2-carousel.cjs.entry.js +1 -1
  20. package/dist/cjs/q2-chart-area.cjs.entry.js +1 -1
  21. package/dist/cjs/q2-chart-bar.cjs.entry.js +1 -1
  22. package/dist/cjs/q2-chart-donut.cjs.entry.js +1 -1
  23. package/dist/cjs/q2-checkbox-group.cjs.entry.js +1 -1
  24. package/dist/cjs/q2-checkbox.cjs.entry.js +1 -1
  25. package/dist/cjs/q2-data-table.cjs.entry.js +1 -1
  26. package/dist/cjs/q2-detail.cjs.entry.js +1 -1
  27. package/dist/cjs/q2-dropdown-item.cjs.entry.js +17 -16
  28. package/dist/cjs/q2-dropdown-item.cjs.entry.js.map +1 -1
  29. package/dist/cjs/q2-dropdown.cjs.entry.js +48 -99
  30. package/dist/cjs/q2-dropdown.cjs.entry.js.map +1 -1
  31. package/dist/cjs/q2-editable-field.cjs.entry.js +1 -1
  32. package/dist/cjs/q2-file-picker.cjs.entry.js +236 -0
  33. package/dist/cjs/q2-file-picker.cjs.entry.js.map +1 -0
  34. package/dist/cjs/q2-item_3.cjs.entry.js +251 -0
  35. package/dist/cjs/q2-item_3.cjs.entry.js.map +1 -0
  36. package/dist/cjs/q2-loc.cjs.entry.js +1 -1
  37. package/dist/cjs/q2-message.cjs.entry.js +1 -1
  38. package/dist/cjs/q2-month-picker.cjs.entry.js +1 -1
  39. package/dist/cjs/q2-optgroup.cjs.entry.js +1 -1
  40. package/dist/cjs/{q2-option-list.cjs.entry.js → q2-option-list_2.cjs.entry.js} +355 -21
  41. package/dist/cjs/q2-option-list_2.cjs.entry.js.map +1 -0
  42. package/dist/cjs/q2-option.cjs.entry.js +18 -4
  43. package/dist/cjs/q2-option.cjs.entry.js.map +1 -1
  44. package/dist/cjs/q2-pagination.cjs.entry.js +4 -4
  45. package/dist/cjs/q2-pill.cjs.entry.js +14 -9
  46. package/dist/cjs/q2-pill.cjs.entry.js.map +1 -1
  47. package/dist/cjs/q2-radio-group.cjs.entry.js +1 -1
  48. package/dist/cjs/q2-radio.cjs.entry.js +1 -1
  49. package/dist/cjs/q2-relative-time.cjs.entry.js +2 -2
  50. package/dist/cjs/q2-resize-observer.cjs.entry.js +1 -1
  51. package/dist/cjs/q2-section.cjs.entry.js +3 -3
  52. package/dist/cjs/q2-select.cjs.entry.js +8 -5
  53. package/dist/cjs/q2-select.cjs.entry.js.map +1 -1
  54. package/dist/cjs/q2-stepper-pane.cjs.entry.js +1 -1
  55. package/dist/cjs/q2-stepper-vertical.cjs.entry.js +2 -2
  56. package/dist/cjs/q2-stepper.cjs.entry.js +2 -2
  57. package/dist/cjs/q2-tag.cjs.entry.js +9 -4
  58. package/dist/cjs/q2-tag.cjs.entry.js.map +1 -1
  59. package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
  60. package/dist/cjs/q2-textarea.cjs.entry.js +1 -1
  61. package/dist/cjs/q2-tooltip.cjs.entry.js +1 -1
  62. package/dist/cjs/tecton-tab-pane.cjs.entry.js +2 -2
  63. package/dist/collection/collection-manifest.json +1 -0
  64. package/dist/collection/components/q2-action-group/q2-action-group.css +25 -8
  65. package/dist/collection/components/q2-action-group/q2-action-group.js +55 -33
  66. package/dist/collection/components/q2-action-group/q2-action-group.js.map +1 -1
  67. package/dist/collection/components/q2-action-group/test/q2-action-group.e2e.js +142 -6
  68. package/dist/collection/components/q2-action-group/test/q2-action-group.e2e.js.map +1 -1
  69. package/dist/collection/components/q2-action-group/test/q2-action-group.spec.js +126 -62
  70. package/dist/collection/components/q2-action-group/test/q2-action-group.spec.js.map +1 -1
  71. package/dist/collection/components/q2-action-sheet/test/q2-action-sheet-test.e2e.js +1 -1
  72. package/dist/collection/components/q2-action-sheet/test/q2-action-sheet-test.e2e.js.map +1 -1
  73. package/dist/collection/components/q2-avatar/q2-avatar.css +5 -0
  74. package/dist/collection/components/q2-btn/q2-btn.css +74 -0
  75. package/dist/collection/components/q2-btn/q2-btn.js +50 -16
  76. package/dist/collection/components/q2-btn/q2-btn.js.map +1 -1
  77. package/dist/collection/components/q2-btn/test/q2-btn-test.e2e.js +29 -0
  78. package/dist/collection/components/q2-btn/test/q2-btn-test.e2e.js.map +1 -1
  79. package/dist/collection/components/q2-dropdown/q2-dropdown.js +83 -103
  80. package/dist/collection/components/q2-dropdown/q2-dropdown.js.map +1 -1
  81. package/dist/collection/components/q2-dropdown/test/q2-dropdown-test.e2e.js +188 -24
  82. package/dist/collection/components/q2-dropdown/test/q2-dropdown-test.e2e.js.map +1 -1
  83. package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.css +1 -1
  84. package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.js +54 -16
  85. package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.js.map +1 -1
  86. package/dist/collection/components/q2-file-picker/q2-file-picker.css +307 -0
  87. package/dist/collection/components/q2-file-picker/q2-file-picker.js +426 -0
  88. package/dist/collection/components/q2-file-picker/q2-file-picker.js.map +1 -0
  89. package/dist/collection/components/q2-file-picker/test/q2-file-picker-test.e2e.js +11 -0
  90. package/dist/collection/components/q2-file-picker/test/q2-file-picker-test.e2e.js.map +1 -0
  91. package/dist/collection/components/q2-file-picker/test/q2-file-picker-test.spec.js +435 -0
  92. package/dist/collection/components/q2-file-picker/test/q2-file-picker-test.spec.js.map +1 -0
  93. package/dist/collection/components/q2-item/q2-item.css +3 -0
  94. package/dist/collection/components/q2-link/q2-link.js +26 -7
  95. package/dist/collection/components/q2-link/q2-link.js.map +1 -1
  96. package/dist/collection/components/q2-link/test/q2-link-test.e2e.js +20 -118
  97. package/dist/collection/components/q2-link/test/q2-link-test.e2e.js.map +1 -1
  98. package/dist/collection/components/q2-link/test/q2-link-test.spec.js +193 -0
  99. package/dist/collection/components/q2-link/test/q2-link-test.spec.js.map +1 -0
  100. package/dist/collection/components/q2-list/q2-list.css +6 -0
  101. package/dist/collection/components/q2-loading/q2-loading.js +1 -1
  102. package/dist/collection/components/q2-loading/q2-loading.js.map +1 -1
  103. package/dist/collection/components/q2-option/q2-option.css +9 -3
  104. package/dist/collection/components/q2-option/q2-option.js +37 -4
  105. package/dist/collection/components/q2-option/q2-option.js.map +1 -1
  106. package/dist/collection/components/q2-option/test/q2-option-test.spec.js +22 -0
  107. package/dist/collection/components/q2-option/test/q2-option-test.spec.js.map +1 -1
  108. package/dist/collection/components/q2-option-list/q2-option-list.js +56 -29
  109. package/dist/collection/components/q2-option-list/q2-option-list.js.map +1 -1
  110. package/dist/collection/components/q2-option-list/test/q2-option-list.spec.js +489 -0
  111. package/dist/collection/components/q2-option-list/test/q2-option-list.spec.js.map +1 -0
  112. package/dist/collection/components/q2-pagination/q2-pagination.js +3 -3
  113. package/dist/collection/components/q2-pill/q2-pill.js +12 -7
  114. package/dist/collection/components/q2-pill/q2-pill.js.map +1 -1
  115. package/dist/collection/components/q2-pill/test/q2-pill-test.e2e.js +109 -1
  116. package/dist/collection/components/q2-pill/test/q2-pill-test.e2e.js.map +1 -1
  117. package/dist/collection/components/q2-popover/q2-popover.js +1 -1
  118. package/dist/collection/components/q2-popover/q2-popover.js.map +1 -1
  119. package/dist/collection/components/q2-relative-time/q2-relative-time.js +1 -1
  120. package/dist/collection/components/q2-resize-observer/q2-resize-observer.js +1 -1
  121. package/dist/collection/components/q2-section/q2-section.js +2 -2
  122. package/dist/collection/components/q2-select/q2-select.js +7 -4
  123. package/dist/collection/components/q2-select/q2-select.js.map +1 -1
  124. package/dist/collection/components/q2-select/test/q2-select-test.e2e.js +1 -14
  125. package/dist/collection/components/q2-select/test/q2-select-test.e2e.js.map +1 -1
  126. package/dist/collection/components/q2-stepper/q2-stepper.js +1 -1
  127. package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js +1 -1
  128. package/dist/collection/components/q2-tab-container/q2-tab-container.js +1 -1
  129. package/dist/collection/components/q2-tab-pane/q2-tab-pane.js +1 -1
  130. package/dist/collection/components/q2-tag/q2-tag.js +7 -2
  131. package/dist/collection/components/q2-tag/q2-tag.js.map +1 -1
  132. package/dist/collection/components/q2-tag/test/q2-tag-test.e2e.js +1 -1
  133. package/dist/collection/components/q2-tag/test/q2-tag-test.e2e.js.map +1 -1
  134. package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js +2 -2
  135. package/dist/collection/utils/action-sheet.js +5 -2
  136. package/dist/collection/utils/action-sheet.js.map +1 -1
  137. package/dist/collection/utils/helpers.js +29 -3
  138. package/dist/collection/utils/helpers.js.map +1 -1
  139. package/dist/collection/utils/test/action-sheet-test.e2e.js +34 -6
  140. package/dist/collection/utils/test/action-sheet-test.e2e.js.map +1 -1
  141. package/dist/components/action-sheet.js +6 -3
  142. package/dist/components/action-sheet.js.map +1 -1
  143. package/dist/components/index.js +2 -0
  144. package/dist/components/index.js.map +1 -1
  145. package/dist/components/index2.js +1 -20
  146. package/dist/components/index2.js.map +1 -1
  147. package/dist/components/q2-action-group.js +41 -19
  148. package/dist/components/q2-action-group.js.map +1 -1
  149. package/dist/components/q2-avatar2.js +1 -1
  150. package/dist/components/q2-avatar2.js.map +1 -1
  151. package/dist/components/q2-btn2.js +50 -16
  152. package/dist/components/q2-btn2.js.map +1 -1
  153. package/dist/components/q2-dropdown-item2.js +19 -17
  154. package/dist/components/q2-dropdown-item2.js.map +1 -1
  155. package/dist/components/q2-dropdown.js +67 -110
  156. package/dist/components/q2-dropdown.js.map +1 -1
  157. package/dist/components/q2-file-picker.d.ts +11 -0
  158. package/dist/components/q2-file-picker.js +301 -0
  159. package/dist/components/q2-file-picker.js.map +1 -0
  160. package/dist/components/q2-item.js +1 -130
  161. package/dist/components/q2-item.js.map +1 -1
  162. package/dist/{esm/q2-item.entry.js → components/q2-item2.js} +29 -11
  163. package/dist/components/q2-item2.js.map +1 -0
  164. package/dist/components/q2-link.js +1 -86
  165. package/dist/components/q2-link.js.map +1 -1
  166. package/dist/{esm/q2-link.entry.js → components/q2-link2.js} +42 -10
  167. package/dist/components/q2-link2.js.map +1 -0
  168. package/dist/components/q2-list.js +1 -94
  169. package/dist/components/q2-list.js.map +1 -1
  170. package/dist/{esm/q2-list.entry.js → components/q2-list2.js} +30 -11
  171. package/dist/components/q2-list2.js.map +1 -0
  172. package/dist/components/q2-loading2.js.map +1 -1
  173. package/dist/components/q2-option-list2.js +44 -19
  174. package/dist/components/q2-option-list2.js.map +1 -1
  175. package/dist/components/q2-option2.js +20 -4
  176. package/dist/components/q2-option2.js.map +1 -1
  177. package/dist/components/q2-pagination.js +3 -3
  178. package/dist/components/q2-pill.js +13 -8
  179. package/dist/components/q2-pill.js.map +1 -1
  180. package/dist/components/q2-popover2.js +1 -1
  181. package/dist/components/q2-popover2.js.map +1 -1
  182. package/dist/components/q2-relative-time.js +1 -1
  183. package/dist/components/q2-resize-observer2.js +1 -1
  184. package/dist/components/q2-section.js +2 -2
  185. package/dist/components/q2-select2.js +8 -5
  186. package/dist/components/q2-select2.js.map +1 -1
  187. package/dist/components/q2-stepper-vertical.js +1 -1
  188. package/dist/components/q2-stepper.js +1 -1
  189. package/dist/components/q2-tab-container.js +1 -1
  190. package/dist/components/q2-tab-pane.js +1 -1
  191. package/dist/components/q2-tag.js +8 -3
  192. package/dist/components/q2-tag.js.map +1 -1
  193. package/dist/components/tecton-tab-pane.js +2 -2
  194. package/dist/esm/{action-sheet-e64cb6f7.js → action-sheet-1e24cb38.js} +7 -4
  195. package/dist/esm/action-sheet-1e24cb38.js.map +1 -0
  196. package/dist/esm/click-elsewhere.entry.js +92 -0
  197. package/dist/esm/click-elsewhere.entry.js.map +1 -0
  198. package/dist/esm/{index-d18e2a20.js → index-504f1a9e.js} +2 -21
  199. package/dist/esm/index-504f1a9e.js.map +1 -0
  200. package/dist/esm/loader.js +1 -1
  201. package/dist/esm/q2-action-group.entry.js +39 -18
  202. package/dist/esm/q2-action-group.entry.js.map +1 -1
  203. package/dist/esm/q2-action-sheet.entry.js +1 -1
  204. package/dist/esm/q2-avatar.entry.js +1 -1
  205. package/dist/esm/q2-avatar.entry.js.map +1 -1
  206. package/dist/esm/q2-badge_7.entry.js +52 -18
  207. package/dist/esm/q2-badge_7.entry.js.map +1 -1
  208. package/dist/esm/q2-calendar.entry.js +1 -1
  209. package/dist/esm/q2-card.entry.js +1 -1
  210. package/dist/esm/q2-carousel-pane.entry.js +1 -1
  211. package/dist/esm/q2-carousel.entry.js +1 -1
  212. package/dist/esm/q2-chart-area.entry.js +1 -1
  213. package/dist/esm/q2-chart-bar.entry.js +1 -1
  214. package/dist/esm/q2-chart-donut.entry.js +1 -1
  215. package/dist/esm/q2-checkbox-group.entry.js +1 -1
  216. package/dist/esm/q2-checkbox.entry.js +1 -1
  217. package/dist/esm/q2-data-table.entry.js +1 -1
  218. package/dist/esm/q2-detail.entry.js +1 -1
  219. package/dist/esm/q2-dropdown-item.entry.js +18 -17
  220. package/dist/esm/q2-dropdown-item.entry.js.map +1 -1
  221. package/dist/esm/q2-dropdown.entry.js +48 -99
  222. package/dist/esm/q2-dropdown.entry.js.map +1 -1
  223. package/dist/esm/q2-editable-field.entry.js +1 -1
  224. package/dist/esm/q2-file-picker.entry.js +232 -0
  225. package/dist/esm/q2-file-picker.entry.js.map +1 -0
  226. package/dist/esm/q2-item_3.entry.js +245 -0
  227. package/dist/esm/q2-item_3.entry.js.map +1 -0
  228. package/dist/esm/q2-loc.entry.js +1 -1
  229. package/dist/esm/q2-message.entry.js +1 -1
  230. package/dist/esm/q2-month-picker.entry.js +1 -1
  231. package/dist/esm/q2-optgroup.entry.js +1 -1
  232. package/dist/esm/{q2-option-list.entry.js → q2-option-list_2.entry.js} +355 -22
  233. package/dist/esm/q2-option-list_2.entry.js.map +1 -0
  234. package/dist/esm/q2-option.entry.js +18 -4
  235. package/dist/esm/q2-option.entry.js.map +1 -1
  236. package/dist/esm/q2-pagination.entry.js +4 -4
  237. package/dist/esm/q2-pill.entry.js +14 -9
  238. package/dist/esm/q2-pill.entry.js.map +1 -1
  239. package/dist/esm/q2-radio-group.entry.js +1 -1
  240. package/dist/esm/q2-radio.entry.js +1 -1
  241. package/dist/esm/q2-relative-time.entry.js +2 -2
  242. package/dist/esm/q2-resize-observer.entry.js +1 -1
  243. package/dist/esm/q2-section.entry.js +3 -3
  244. package/dist/esm/q2-select.entry.js +8 -5
  245. package/dist/esm/q2-select.entry.js.map +1 -1
  246. package/dist/esm/q2-stepper-pane.entry.js +1 -1
  247. package/dist/esm/q2-stepper-vertical.entry.js +2 -2
  248. package/dist/esm/q2-stepper.entry.js +2 -2
  249. package/dist/esm/q2-tag.entry.js +9 -4
  250. package/dist/esm/q2-tag.entry.js.map +1 -1
  251. package/dist/esm/q2-tecton-elements.js +1 -1
  252. package/dist/esm/q2-textarea.entry.js +1 -1
  253. package/dist/esm/q2-tooltip.entry.js +1 -1
  254. package/dist/esm/tecton-tab-pane.entry.js +2 -2
  255. package/dist/q2-tecton-elements/action-sheet-1e24cb38.js +80 -0
  256. package/dist/q2-tecton-elements/action-sheet-1e24cb38.js.map +1 -0
  257. package/dist/q2-tecton-elements/click-elsewhere.entry.js +90 -0
  258. package/dist/q2-tecton-elements/click-elsewhere.entry.js.map +1 -0
  259. package/dist/q2-tecton-elements/{index-d18e2a20.js → index-504f1a9e.js} +51 -69
  260. package/dist/q2-tecton-elements/index-504f1a9e.js.map +1 -0
  261. package/dist/q2-tecton-elements/q2-action-group.entry.js +57 -33
  262. package/dist/q2-tecton-elements/q2-action-group.entry.js.map +1 -1
  263. package/dist/q2-tecton-elements/q2-action-sheet.entry.js +1 -1
  264. package/dist/q2-tecton-elements/q2-avatar.entry.js +1 -1
  265. package/dist/q2-tecton-elements/q2-avatar.entry.js.map +1 -1
  266. package/dist/q2-tecton-elements/q2-badge_7.entry.js +222 -181
  267. package/dist/q2-tecton-elements/q2-badge_7.entry.js.map +1 -1
  268. package/dist/q2-tecton-elements/q2-calendar.entry.js +1 -1
  269. package/dist/q2-tecton-elements/q2-card.entry.js +1 -1
  270. package/dist/q2-tecton-elements/q2-carousel-pane.entry.js +1 -1
  271. package/dist/q2-tecton-elements/q2-carousel.entry.js +1 -1
  272. package/dist/q2-tecton-elements/q2-chart-area.entry.js +1 -1
  273. package/dist/q2-tecton-elements/q2-chart-bar.entry.js +1 -1
  274. package/dist/q2-tecton-elements/q2-chart-donut.entry.js +1 -1
  275. package/dist/q2-tecton-elements/q2-checkbox-group.entry.js +1 -1
  276. package/dist/q2-tecton-elements/q2-checkbox.entry.js +1 -1
  277. package/dist/q2-tecton-elements/q2-data-table.entry.js +1 -1
  278. package/dist/q2-tecton-elements/q2-detail.entry.js +1 -1
  279. package/dist/q2-tecton-elements/q2-dropdown-item.entry.js +34 -34
  280. package/dist/q2-tecton-elements/q2-dropdown-item.entry.js.map +1 -1
  281. package/dist/q2-tecton-elements/q2-dropdown.entry.js +86 -137
  282. package/dist/q2-tecton-elements/q2-dropdown.entry.js.map +1 -1
  283. package/dist/q2-tecton-elements/q2-editable-field.entry.js +1 -1
  284. package/dist/q2-tecton-elements/q2-file-picker.entry.js +339 -0
  285. package/dist/q2-tecton-elements/q2-file-picker.entry.js.map +1 -0
  286. package/dist/q2-tecton-elements/q2-item_3.entry.js +332 -0
  287. package/dist/q2-tecton-elements/q2-item_3.entry.js.map +1 -0
  288. package/dist/q2-tecton-elements/q2-loc.entry.js +1 -1
  289. package/dist/q2-tecton-elements/q2-message.entry.js +1 -1
  290. package/dist/q2-tecton-elements/q2-month-picker.entry.js +1 -1
  291. package/dist/q2-tecton-elements/q2-optgroup.entry.js +1 -1
  292. package/dist/q2-tecton-elements/q2-option-list_2.entry.js +902 -0
  293. package/dist/q2-tecton-elements/q2-option-list_2.entry.js.map +1 -0
  294. package/dist/q2-tecton-elements/q2-option.entry.js +31 -21
  295. package/dist/q2-tecton-elements/q2-option.entry.js.map +1 -1
  296. package/dist/q2-tecton-elements/q2-pagination.entry.js +34 -34
  297. package/dist/q2-tecton-elements/q2-pill.entry.js +24 -20
  298. package/dist/q2-tecton-elements/q2-pill.entry.js.map +1 -1
  299. package/dist/q2-tecton-elements/q2-radio-group.entry.js +1 -1
  300. package/dist/q2-tecton-elements/q2-radio.entry.js +1 -1
  301. package/dist/q2-tecton-elements/q2-relative-time.entry.js +2 -2
  302. package/dist/q2-tecton-elements/q2-resize-observer.entry.js +1 -1
  303. package/dist/q2-tecton-elements/q2-section.entry.js +19 -19
  304. package/dist/q2-tecton-elements/q2-select.entry.js +21 -18
  305. package/dist/q2-tecton-elements/q2-select.entry.js.map +1 -1
  306. package/dist/q2-tecton-elements/q2-stepper-pane.entry.js +1 -1
  307. package/dist/q2-tecton-elements/q2-stepper-vertical.entry.js +37 -37
  308. package/dist/q2-tecton-elements/q2-stepper.entry.js +29 -29
  309. package/dist/q2-tecton-elements/q2-tag.entry.js +15 -11
  310. package/dist/q2-tecton-elements/q2-tag.entry.js.map +1 -1
  311. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
  312. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js.map +1 -1
  313. package/dist/q2-tecton-elements/q2-textarea.entry.js +1 -1
  314. package/dist/q2-tecton-elements/q2-tooltip.entry.js +1 -1
  315. package/dist/q2-tecton-elements/tecton-tab-pane.entry.js +6 -6
  316. package/dist/types/components/q2-action-group/q2-action-group.d.ts +19 -11
  317. package/dist/types/components/q2-btn/q2-btn.d.ts +8 -3
  318. package/dist/types/components/q2-dropdown/q2-dropdown.d.ts +18 -9
  319. package/dist/types/components/q2-dropdown-item/q2-dropdown-item.d.ts +14 -1
  320. package/dist/types/components/q2-file-picker/q2-file-picker.d.ts +98 -0
  321. package/dist/types/components/q2-link/q2-link.d.ts +8 -6
  322. package/dist/types/components/q2-loading/q2-loading.d.ts +2 -2
  323. package/dist/types/components/q2-option/q2-option.d.ts +10 -1
  324. package/dist/types/components/q2-option-list/q2-option-list.d.ts +9 -8
  325. package/dist/types/components/q2-pill/q2-pill.d.ts +2 -2
  326. package/dist/types/components.d.ts +192 -28
  327. package/dist/types/util.d.ts +1 -0
  328. package/dist/types/utils/helpers.d.ts +1 -1
  329. package/package.json +4 -3
  330. package/dist/cjs/action-sheet-d32c41ae.js.map +0 -1
  331. package/dist/cjs/click-elsewhere_2.cjs.entry.js +0 -406
  332. package/dist/cjs/click-elsewhere_2.cjs.entry.js.map +0 -1
  333. package/dist/cjs/index-07285783.js.map +0 -1
  334. package/dist/cjs/q2-item.cjs.entry.js +0 -120
  335. package/dist/cjs/q2-item.cjs.entry.js.map +0 -1
  336. package/dist/cjs/q2-link.cjs.entry.js +0 -64
  337. package/dist/cjs/q2-link.cjs.entry.js.map +0 -1
  338. package/dist/cjs/q2-list.cjs.entry.js +0 -83
  339. package/dist/cjs/q2-list.cjs.entry.js.map +0 -1
  340. package/dist/cjs/q2-option-list.cjs.entry.js.map +0 -1
  341. package/dist/esm/action-sheet-e64cb6f7.js.map +0 -1
  342. package/dist/esm/click-elsewhere_2.entry.js +0 -401
  343. package/dist/esm/click-elsewhere_2.entry.js.map +0 -1
  344. package/dist/esm/index-d18e2a20.js.map +0 -1
  345. package/dist/esm/q2-item.entry.js.map +0 -1
  346. package/dist/esm/q2-link.entry.js.map +0 -1
  347. package/dist/esm/q2-list.entry.js.map +0 -1
  348. package/dist/esm/q2-option-list.entry.js.map +0 -1
  349. package/dist/q2-tecton-elements/action-sheet-e64cb6f7.js +0 -77
  350. package/dist/q2-tecton-elements/action-sheet-e64cb6f7.js.map +0 -1
  351. package/dist/q2-tecton-elements/click-elsewhere_2.entry.js +0 -398
  352. package/dist/q2-tecton-elements/click-elsewhere_2.entry.js.map +0 -1
  353. package/dist/q2-tecton-elements/index-d18e2a20.js.map +0 -1
  354. package/dist/q2-tecton-elements/q2-item.entry.js +0 -158
  355. package/dist/q2-tecton-elements/q2-item.entry.js.map +0 -1
  356. package/dist/q2-tecton-elements/q2-link.entry.js +0 -83
  357. package/dist/q2-tecton-elements/q2-link.entry.js.map +0 -1
  358. package/dist/q2-tecton-elements/q2-list.entry.js +0 -100
  359. package/dist/q2-tecton-elements/q2-list.entry.js.map +0 -1
  360. package/dist/q2-tecton-elements/q2-option-list.entry.js +0 -585
  361. package/dist/q2-tecton-elements/q2-option-list.entry.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/utils/helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import { newE2EPage, E2EPage } from '@stencil/core/testing';\nimport { IDict } from '@/util';\nimport { E2EElement, NewE2EPageOptions } from '@stencil/core/testing/puppeteer/puppeteer-declarations';\nimport { removeTimezoneOffset } from '../components/q2-calendar/q2-calendar-helpers';\nimport { AxePuppeteer } from '@axe-core/puppeteer';\nimport { NewSpecPageOptions } from '@stencil/core/internal';\nimport { newSpecPage } from '@stencil/core/testing';\nimport { getAllText } from '.';\n\ninterface PasteInit extends EventInit {\n pastedValue: string;\n}\n\ntype EventInitType =\n | EventInit\n | KeyboardEventInit\n | MouseEventInit\n | FocusEventInit\n | CustomEventInit\n | PasteInit\n | ClipboardEventInit;\nexport async function dispatchEvent(\n page: E2EPage,\n selectors: string | string[],\n eventType: string,\n eventInit?: EventInitType\n) {\n if (typeof selectors === 'string') {\n selectors = [selectors];\n }\n\n await page.evaluate(\n (passedSelectors: string[], passedEventType: string, passedEventInit: EventInitType) => {\n const eventTypeDict = {\n change: CustomEvent,\n input: CustomEvent,\n keydown: KeyboardEvent,\n keyup: KeyboardEvent,\n focus: FocusEvent,\n blur: FocusEvent,\n click: MouseEvent,\n mousedown: MouseEvent,\n animationStart: AnimationEvent,\n animationEnd: AnimationEvent,\n slotchange: Event,\n load: Event,\n paste: ClipboardEvent,\n };\n\n let eventInit = passedEventInit;\n if (passedEventType === 'paste' && 'pastedValue' in passedEventInit) {\n const clipboardData = new DataTransfer();\n clipboardData.getData = () => (passedEventInit as PasteInit).pastedValue;\n eventInit = {\n bubbles: true,\n clipboardData,\n };\n }\n\n const EventTypeInit = eventTypeDict[passedEventType] || Event;\n const [first, ...rest] = passedSelectors;\n let itemElement = document.querySelector(first);\n const rootElement = itemElement;\n if (rest.length) {\n itemElement = rest.reduce((acc, selector) => acc.shadowRoot.querySelector(selector), itemElement);\n }\n\n itemElement?.dispatchEvent(new EventTypeInit(passedEventType, eventInit));\n\n if (passedEventType === 'paste' && 'pastedValue' in passedEventInit) {\n if (rootElement.getAttribute('type') !== 'currency') {\n (itemElement as HTMLInputElement).value =\n (itemElement as HTMLInputElement).value + passedEventInit.pastedValue;\n itemElement && itemElement.dispatchEvent(new InputEvent('input'));\n }\n }\n },\n selectors,\n eventType,\n eventInit\n );\n\n await page.waitForChanges();\n}\n\nexport async function setTestStrings(page: E2EPage, strings: IDict<string>) {\n await page.evaluate(function (strings) {\n this.TEST_STRINGS = strings;\n }, strings);\n}\n\nexport async function promiseMap<T>(arr: T[], fn: (...args: any[]) => any) {\n const promises = arr.map(fn);\n\n return Promise.all(promises);\n}\n\n/**\n * Waits for a specified amount of time.\n *\n * Please use this function sparingly, as it can slow down tests.\n */\nexport async function waitForTimeout(timeout: number) {\n return new Promise(resolve => setTimeout(resolve, timeout));\n}\n\nexport function offsetTimezone(date: string) {\n return removeTimezoneOffset(new Date(date)).toISOString();\n}\n\nexport async function setup(pageOptions?: NewE2EPageOptions) {\n const page = await newE2EPage(pageOptions);\n\n await page.evaluate(function () {\n this.TectonElements = this.TectonElements || {};\n this.TectonElements.loc = (key: string, subs?: string[] | IDict<string>) => {\n const string = (this.TEST_STRINGS && this.TEST_STRINGS[key]) || key;\n\n if (Array.isArray(subs)) {\n const regex = /({[0-9]})/g;\n return string.replace(regex, match => {\n return subs[parseInt(match[1])];\n });\n } else if (typeof subs === 'object') {\n return Object.entries(subs).reduce((accum, [key, value]) => accum.replace(`{${key}}`, value), string);\n }\n\n return string;\n };\n });\n\n await page.waitForChanges();\n\n return page;\n}\n\n/**\n * Converts an object to a string of HTML attributes.\n *\n * @param obj - The object to convert, where keys are attribute names and values are attribute values.\n * @returns A string representing the HTML attributes.\n *\n * @example\n * const attributes = objectToHTMLAttributes({ id: 'my-element', class: 'my-class', 'data-value': '123' });\n * console.log(attributes); // Output: \"id='my-element' class='my-class' data-value='123'\"\n */\nexport function objectToHTMLAttributes(obj) {\n return Object.entries(obj)\n .map(([key, value]) => `${key}='${value}'`)\n .join(' ');\n}\n\n/**\n * Sets up a new Spec Page with localization capabilities for testing.\n *\n * @param pageOptions - Configuration options for the new Spec Page.\n * @param testStrings - Optional dictionary of test strings for localization.\n * @returns A promise that resolves to the configured Spec Page.\n *\n * This function initializes a new Spec Page and sets up the `TectonElements`\n * object for localization testing. It also sets the provided test strings for\n * localization and reloads the page to ensure the new `TectonElements` object\n * is available.\n *\n * @note This method doesn't work with `NewSpecPageOptions.template`\n * property. If you need to use that, please use `newSpecPage` directly.\n */\nexport async function setupSpecPageWithLoc(pageOptions: NewSpecPageOptions, testStrings?: IDict<string>) {\n const page = await newSpecPage(pageOptions);\n await page.waitForChanges();\n\n // Setup the TectonElements object for localization testing\n const specWindow = page.win as Window & {\n TectonElements: { loc: (key: string, subs?: string[] | IDict<string>) => string };\n TEST_STRINGS: IDict<string>;\n };\n specWindow.TectonElements = {\n loc: (key: string, subs?: string[] | IDict<string>) => {\n const string = (specWindow.TEST_STRINGS && specWindow.TEST_STRINGS[key]) || key;\n\n if (Array.isArray(subs)) {\n const regex = /({[0-9]})/g;\n return string.replace(regex, match => {\n return subs[parseInt(match[1])];\n });\n } else if (typeof subs === 'object') {\n return Object.entries(subs).reduce((accum, [key, value]) => accum.replace(`{${key}}`, value), string);\n }\n\n return string;\n },\n resizeIframe: () => {},\n resolveMenu: async () => {\n return [];\n },\n navigateTo: () => {},\n showOverpanel: async <T>(): Promise<T> => {\n return {} as T;\n },\n };\n\n // Set the test strings\n specWindow.TEST_STRINGS = testStrings || {};\n\n // Reload the page to ensure the new TectonElements object is available\n await page.setContent(page.body.innerHTML);\n\n return page;\n}\n\nexport function setWindowHeight(height: number) {\n Object.defineProperty(window, 'innerHeight', {\n writable: true,\n configurable: true,\n value: height,\n });\n\n window.dispatchEvent(new Event('resize'));\n\n expect(window.innerHeight).toBe(height);\n}\n\nexport function makeDomRect(customAttributes) {\n const defaults = {\n bottom: 0,\n height: 50,\n width: 50,\n left: 40,\n right: 0,\n top: 0,\n x: 0,\n y: 0,\n toJSON: () => ({}),\n };\n return { ...defaults, ...customAttributes };\n}\nexport const base64Image =\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=';\n\nexport async function getActiveElementTestId(page: E2EPage) {\n return page.$eval(\n 'body',\n () =>\n (document.activeElement.shadowRoot?.activeElement ?? document.activeElement).getAttribute('test-id') ?? null\n );\n}\n\nexport const getFocusedOptionValue = async (page: E2EPage) => {\n await page.waitForSelector('q2-option:focus');\n return page.$eval('body', () => document.activeElement.getAttribute('value'));\n};\n\nexport const getFocusedTagName = async (page: E2EPage) => {\n return page.$eval('body', () => document.activeElement?.tagName);\n};\n\nexport async function getFocusedAttribute(page: E2EPage, attribute: string) {\n return page.$eval(\n 'body',\n (_, attribute: string) => {\n const activeElement = document.activeElement.shadowRoot?.activeElement ?? document.activeElement;\n return activeElement?.getAttribute(attribute) ?? null;\n },\n attribute\n );\n}\n\nexport const testDeprecatedAriaLabel = async (element: E2EElement, label: string = 'My Label') => {\n expect(element).toEqualAttribute('label', label);\n const hasHideLabelProp = typeof (await element.getProperty('hideLabel')) !== 'undefined';\n if (hasHideLabelProp) expect(element).toHaveAttribute('hide-label');\n expect(await element.getProperty('ariaLabel')).toBeUndefined();\n};\n\nexport const getListOfStyleCompilationIssues = async (page: E2EPage, selector: string) => {\n return page.$eval(selector, el => {\n interface ShadowRootShim extends ShadowRoot {\n adoptedStyleSheets: CSSStyleSheet[];\n }\n const adoptedStyleSheets = (el.shadowRoot as ShadowRootShim).adoptedStyleSheets;\n const result = adoptedStyleSheets.reduce((accum, styleSheet) => {\n Array.from(styleSheet.cssRules).forEach(rule => {\n const hasVarList = rule.cssText.includes('var-list(');\n const hasVarPrefixer = rule.cssText.includes('var-prefixer(');\n if (hasVarList || hasVarPrefixer) accum.push((rule as any).selectorText);\n });\n return accum;\n }, []);\n\n if (!!result.length) {\n // eslint-disable-next-line no-console\n console.log(`The following selectors have compilation issues: ${result.join(', ')}`);\n }\n\n return result;\n });\n};\n\nexport const getNestedElementProperty = async (page: E2EPage, selectors: string | string[], prop: string) => {\n if (typeof selectors === 'string') {\n selectors = [selectors];\n }\n return page.evaluate(\n (selectors: string[], prop: string) => {\n const [first, ...rest] = selectors;\n let element = document.querySelector(first);\n if (rest.length) {\n element = rest.reduce((acc, selector) => acc.shadowRoot.querySelector(selector), element);\n }\n return element[prop];\n },\n selectors,\n prop\n );\n};\n\nexport const getNestedElementAttribute = async (page: E2EPage, selectors: string | string[], attribute: string) => {\n if (typeof selectors === 'string') {\n selectors = [selectors];\n }\n return page.$eval(\n 'body',\n (element, selectors: string[], attribute: string) => {\n const [first, ...rest] = selectors;\n element = document.querySelector(first);\n element = rest.reduce((acc, selector) => acc.shadowRoot.querySelector(selector), element);\n return element.getAttribute(attribute);\n },\n selectors,\n attribute\n );\n};\n\nexport const getNestedElementStyle = async (page: E2EPage, selectors: string | string[], attribute: string) => {\n if (typeof selectors === 'string') {\n selectors = [selectors];\n }\n return page.$eval(\n 'body',\n (element, selectors: string[], attribute: string) => {\n const [first, ...rest] = selectors;\n element = document.querySelector(first);\n element = rest.reduce((acc, selector) => acc.shadowRoot.querySelector(selector), element);\n const elementStyle = window.getComputedStyle(element);\n return elementStyle[attribute];\n },\n selectors,\n attribute\n );\n};\n\nexport const getNestedAssignedElementLength = async (page: E2EPage, selectors: string | string[]) => {\n if (typeof selectors === 'string') {\n selectors = [selectors];\n }\n return page.$eval(\n 'body',\n (element: HTMLElement, selectors: string[]) => {\n const [first, ...rest] = selectors;\n element = document.querySelector(first);\n element = rest.reduce((acc, selector) => acc.shadowRoot.querySelector(selector), element);\n return (element as HTMLSlotElement)?.assignedElements?.().length ?? undefined;\n },\n selectors\n );\n};\n\nexport const evaluateA11y = async (page: any, ...args: string[]) => {\n // Configuration\n const config = {\n detailLevel: args.includes('verbose') ? 'verbose' : 'default',\n testType: args.includes('webpage') ? 'webpage' : 'component',\n disabledRulesForComponents: [\n 'document-title',\n 'html-has-lang',\n 'landmark-one-main',\n 'page-has-heading-one',\n 'region',\n ],\n };\n\n // Set disabled rules based on test type\n const disabledRules = config.testType === 'webpage' ? [] : config.disabledRulesForComponents;\n\n try {\n // Run analysis\n const analysisResults = await new AxePuppeteer(page).disableRules(disabledRules).analyze();\n const { violations } = analysisResults;\n\n if (!violations.length) return false;\n\n // Return full violations if verbose mode is requested\n if (config.detailLevel === 'verbose') return violations;\n\n // Process violations for default detail level\n return violations.reduce((responseObj, violation) => {\n const { nodes, help, helpUrl, id } = violation;\n const node = nodes[0];\n\n // Create violation info object\n responseObj[id] = {\n help,\n helpUrl,\n failureSummary: node.failureSummary,\n html: node.html,\n rulesViolated: node.any.reduce((rules, rule) => {\n rules[rule.id] = rule.message;\n return rules;\n }, {}),\n };\n\n return responseObj;\n }, {});\n } catch (error) {\n console.error(`There was an error with AxePuppeteer analysis. ERROR: ${error}`);\n }\n};\n\n/**\n * This function mocks the fetch API to return a resolved promise with the given icon markup.\n * You can optionally provide a <symbol> element, but it is not required.\n *\n * This is meant to be used to prevent errors on Unit/Spec tests with <q2-icon> because we are unable to provide a valid\n * URL for the fetch call in that context.\n *\n * @note This function should be called before the component is rendered.\n * @note Be sure to call `jest.restoreAllMocks()` after the test to restore the original fetch function.\n */\nexport const mockIconFetch = (iconMarkup?: string) => {\n const spy = jest.spyOn(global, 'fetch');\n const mockResponse = new Response(`<svg>${iconMarkup}</svg>`, {\n status: 200,\n statusText: 'OK',\n headers: new Headers(),\n });\n spy.mockResolvedValue(mockResponse);\n return spy;\n};\n\n// For E2E tests with Puppeteer\ndeclare global {\n interface Window {\n getAllText: (element: Element, options: any) => Promise<string>;\n }\n}\n\n/**\n * Mimicks the behavior of the {@link getAllText} utility function, with a few extractions to simplify usage.\n * @param {E2EPage} page\n * @param {string} selector\n * @param {Object} options\n * @returns {Promise<string>}\n */\nexport const getAllElementTextE2E = async (page: E2EPage, selector: string, options = {}) => {\n // Wait for element\n await page.waitForSelector(selector);\n\n // First inject the utility function\n await page.evaluate(`\n window.getAllText = ${getAllText.toString()};\n `);\n\n await page.waitForChanges();\n\n // Then use it\n return page.evaluate(\n async (selector: string, stringifiedOptions) => {\n const element = document.querySelector(selector);\n if (!element) return null;\n\n const options = JSON.parse(stringifiedOptions);\n return await window.getAllText(element, options);\n },\n selector,\n JSON.stringify({ ...options, skipComponentReady: true })\n );\n};\n"]}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/utils/helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import { newE2EPage, E2EPage } from '@stencil/core/testing';\nimport { IDict } from '@/util';\nimport { E2EElement, NewE2EPageOptions } from '@stencil/core/testing/puppeteer/puppeteer-declarations';\nimport { removeTimezoneOffset } from '../components/q2-calendar/q2-calendar-helpers';\nimport { AxePuppeteer } from '@axe-core/puppeteer';\nimport { NewSpecPageOptions } from '@stencil/core/internal';\nimport { newSpecPage } from '@stencil/core/testing';\nimport { getAllText } from '.';\n\ninterface PasteInit extends EventInit {\n pastedValue: string;\n}\n\ntype EventInitType =\n | EventInit\n | KeyboardEventInit\n | MouseEventInit\n | FocusEventInit\n | CustomEventInit\n | PasteInit\n | ClipboardEventInit;\nexport async function dispatchEvent(\n page: E2EPage,\n selectors: string | string[],\n eventType: string,\n eventInit?: EventInitType\n) {\n if (typeof selectors === 'string') {\n selectors = [selectors];\n }\n\n await page.evaluate(\n (passedSelectors: string[], passedEventType: string, passedEventInit: EventInitType) => {\n const eventTypeDict = {\n change: CustomEvent,\n input: CustomEvent,\n keydown: KeyboardEvent,\n keyup: KeyboardEvent,\n focus: FocusEvent,\n blur: FocusEvent,\n click: MouseEvent,\n mousedown: MouseEvent,\n animationStart: AnimationEvent,\n animationEnd: AnimationEvent,\n slotchange: Event,\n load: Event,\n paste: ClipboardEvent,\n };\n\n let eventInit = passedEventInit;\n if (passedEventType === 'paste' && 'pastedValue' in passedEventInit) {\n const clipboardData = new DataTransfer();\n clipboardData.getData = () => (passedEventInit as PasteInit).pastedValue;\n eventInit = {\n bubbles: true,\n clipboardData,\n };\n }\n\n const EventTypeInit = eventTypeDict[passedEventType] || Event;\n const [first, ...rest] = passedSelectors;\n let itemElement = document.querySelector(first);\n const rootElement = itemElement;\n if (rest.length) {\n itemElement = rest.reduce((acc, selector) => acc.shadowRoot.querySelector(selector), itemElement);\n }\n\n itemElement?.dispatchEvent(new EventTypeInit(passedEventType, eventInit));\n\n if (passedEventType === 'paste' && 'pastedValue' in passedEventInit) {\n if (rootElement.getAttribute('type') !== 'currency') {\n (itemElement as HTMLInputElement).value =\n (itemElement as HTMLInputElement).value + passedEventInit.pastedValue;\n itemElement && itemElement.dispatchEvent(new InputEvent('input'));\n }\n }\n },\n selectors,\n eventType,\n eventInit\n );\n\n await page.waitForChanges();\n}\n\nexport async function setTestStrings(page: E2EPage, strings: IDict<string>) {\n await page.evaluate(function (strings) {\n this.TEST_STRINGS = strings;\n }, strings);\n}\n\nexport async function promiseMap<T>(arr: T[], fn: (...args: any[]) => any) {\n const promises = arr.map(fn);\n\n return Promise.all(promises);\n}\n\n/**\n * Waits for a specified amount of time.\n *\n * Please use this function sparingly, as it can slow down tests.\n */\nexport async function waitForTimeout(timeout: number) {\n return new Promise(resolve => setTimeout(resolve, timeout));\n}\n\nexport function offsetTimezone(date: string) {\n return removeTimezoneOffset(new Date(date)).toISOString();\n}\n\nexport async function setup(pageOptions?: NewE2EPageOptions) {\n const page = await newE2EPage(pageOptions);\n\n await page.evaluate(function () {\n this.TectonElements = this.TectonElements || {};\n this.TectonElements.loc = (key: string, subs?: string[] | IDict<string>) => {\n const string = (this.TEST_STRINGS && this.TEST_STRINGS[key]) || key;\n\n if (Array.isArray(subs)) {\n const regex = /({[0-9]})/g;\n return string.replace(regex, match => {\n return subs[parseInt(match[1])];\n });\n } else if (typeof subs === 'object') {\n return Object.entries(subs).reduce((accum, [key, value]) => accum.replace(`{${key}}`, value), string);\n }\n\n return string;\n };\n });\n\n await page.waitForChanges();\n\n return page;\n}\n\n/**\n * Converts an object to a string of HTML attributes.\n *\n * @param obj - The object to convert, where keys are attribute names and values are attribute values.\n * @returns A string representing the HTML attributes.\n *\n * @example\n * const attributes = objectToHTMLAttributes({ id: 'my-element', class: 'my-class', 'data-value': '123' });\n * console.log(attributes); // Output: \"id='my-element' class='my-class' data-value='123'\"\n */\nexport function objectToHTMLAttributes(obj) {\n return Object.entries(obj)\n .map(([key, value]) => `${key}='${value}'`)\n .join(' ');\n}\n\n/**\n * Sets up a new Spec Page with localization capabilities for testing.\n *\n * @param pageOptions - Configuration options for the new Spec Page.\n * @param testStrings - Optional dictionary of test strings for localization.\n * @returns A promise that resolves to the configured Spec Page.\n *\n * This function initializes a new Spec Page and sets up the `TectonElements`\n * object for localization testing. It also sets the provided test strings for\n * localization and reloads the page to ensure the new `TectonElements` object\n * is available.\n *\n * @note This method doesn't work with `NewSpecPageOptions.template`\n * property. If you need to use that, please use `newSpecPage` directly.\n */\nexport async function setupSpecPageWithLoc(pageOptions: NewSpecPageOptions, testStrings?: IDict<string>) {\n const page = await newSpecPage(pageOptions);\n await page.waitForChanges();\n\n // Setup the TectonElements object for localization testing\n const specWindow = page.win as Window & {\n TectonElements: { loc: (key: string, subs?: string[] | IDict<string>) => string };\n TEST_STRINGS: IDict<string>;\n };\n specWindow.TectonElements = {\n loc: (key: string, subs?: string[] | IDict<string>) => {\n const string = (specWindow.TEST_STRINGS && specWindow.TEST_STRINGS[key]) || key;\n\n if (Array.isArray(subs)) {\n const regex = /({[0-9]})/g;\n return string.replace(regex, match => {\n return subs[parseInt(match[1])];\n });\n } else if (typeof subs === 'object') {\n return Object.entries(subs).reduce((accum, [key, value]) => accum.replace(`{${key}}`, value), string);\n }\n\n return string;\n },\n resizeIframe: () => {},\n resolveMenu: async () => {\n return [];\n },\n navigateTo: () => {},\n showOverpanel: async <T>(): Promise<T> => {\n return {} as T;\n },\n };\n\n // Set the test strings\n specWindow.TEST_STRINGS = testStrings || {};\n\n // Reload the page to ensure the new TectonElements object is available\n await page.setContent(page.body.innerHTML);\n\n return page;\n}\n\nexport function setWindowHeight(height: number) {\n Object.defineProperty(window, 'innerHeight', {\n writable: true,\n configurable: true,\n value: height,\n });\n\n window.dispatchEvent(new Event('resize'));\n\n expect(window.innerHeight).toBe(height);\n}\n\nexport function makeDomRect(customAttributes) {\n const defaults = {\n bottom: 0,\n height: 50,\n width: 50,\n left: 40,\n right: 0,\n top: 0,\n x: 0,\n y: 0,\n toJSON: () => ({}),\n };\n return { ...defaults, ...customAttributes };\n}\nexport const base64Image =\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=';\n\nexport async function getActiveElementTestId(page: E2EPage) {\n return page.$eval(\n 'body',\n () =>\n (document.activeElement.shadowRoot?.activeElement ?? document.activeElement).getAttribute('test-id') ?? null\n );\n}\n\nexport const getFocusedOptionValue = async (page: E2EPage) => {\n await page.waitForSelector('q2-option:focus');\n return page.$eval('body', () => document.activeElement.getAttribute('value'));\n};\n\nexport const getFocusedTagName = async (page: E2EPage) => {\n return page.$eval('body', () => document.activeElement?.tagName);\n};\n\nexport async function getFocusedAttribute(page: E2EPage, attribute: string) {\n return page.$eval(\n 'body',\n (_, attribute: string) => {\n const activeElement = document.activeElement.shadowRoot?.activeElement ?? document.activeElement;\n return activeElement?.getAttribute(attribute) ?? null;\n },\n attribute\n );\n}\n\nexport const testDeprecatedAriaLabel = async (element: E2EElement, label: string = 'My Label') => {\n expect(element).toEqualAttribute('label', label);\n const hasHideLabelProp = typeof (await element.getProperty('hideLabel')) !== 'undefined';\n if (hasHideLabelProp) expect(element).toHaveAttribute('hide-label');\n expect(await element.getProperty('ariaLabel')).toBeUndefined();\n};\n\nexport const getListOfStyleCompilationIssues = async (page: E2EPage, selector: string) => {\n return page.$eval(selector, el => {\n interface ShadowRootShim extends ShadowRoot {\n adoptedStyleSheets: CSSStyleSheet[];\n }\n const adoptedStyleSheets = (el.shadowRoot as ShadowRootShim).adoptedStyleSheets;\n const result = adoptedStyleSheets.reduce((accum, styleSheet) => {\n Array.from(styleSheet.cssRules).forEach(rule => {\n const hasVarList = rule.cssText.includes('var-list(');\n const hasVarPrefixer = rule.cssText.includes('var-prefixer(');\n if (hasVarList || hasVarPrefixer) accum.push((rule as any).selectorText);\n });\n return accum;\n }, []);\n\n if (!!result.length) {\n // eslint-disable-next-line no-console\n console.log(`The following selectors have compilation issues: ${result.join(', ')}`);\n }\n\n return result;\n });\n};\n\nexport const getNestedElementProperty = async (page: E2EPage, selectors: string | string[], prop: string) => {\n if (typeof selectors === 'string') {\n selectors = [selectors];\n }\n return page.evaluate(\n (selectors: string[], prop: string) => {\n const [first, ...rest] = selectors;\n let element = document.querySelector(first);\n if (rest.length) {\n element = rest.reduce((acc, selector) => acc.shadowRoot.querySelector(selector), element);\n }\n return element[prop];\n },\n selectors,\n prop\n );\n};\n\nexport const getNestedElementAttribute = async (page: E2EPage, selectors: string | string[], attribute: string) => {\n if (typeof selectors === 'string') {\n selectors = [selectors];\n }\n return page.$eval(\n 'body',\n (element, selectors: string[], attribute: string) => {\n const [first, ...rest] = selectors;\n element = document.querySelector(first);\n element = rest.reduce((acc, selector) => acc.shadowRoot.querySelector(selector), element);\n return element.getAttribute(attribute);\n },\n selectors,\n attribute\n );\n};\n\nexport const getNestedElementStyle = async (page: E2EPage, selectors: string | string[], attribute: string) => {\n if (typeof selectors === 'string') {\n selectors = [selectors];\n }\n return page.$eval(\n 'body',\n (element, selectors: string[], attribute: string) => {\n const [first, ...rest] = selectors;\n element = document.querySelector(first);\n element = rest.reduce((acc, selector) => acc.shadowRoot.querySelector(selector), element);\n const elementStyle = window.getComputedStyle(element);\n return elementStyle[attribute];\n },\n selectors,\n attribute\n );\n};\n\nexport const getNestedAssignedElementLength = async (page: E2EPage, selectors: string | string[]) => {\n if (typeof selectors === 'string') {\n selectors = [selectors];\n }\n return page.$eval(\n 'body',\n (element: HTMLElement, selectors: string[]) => {\n const [first, ...rest] = selectors;\n element = document.querySelector(first);\n element = rest.reduce((acc, selector) => acc.shadowRoot.querySelector(selector), element);\n return (element as HTMLSlotElement)?.assignedElements?.().length ?? undefined;\n },\n selectors\n );\n};\n\nexport const evaluateA11y = async (page: any, ...args: string[]) => {\n // Configuration\n const config = {\n detailLevel: args.includes('verbose') ? 'verbose' : 'default',\n testType: args.includes('webpage') ? 'webpage' : 'component',\n disabledRulesForComponents: [\n 'document-title',\n 'html-has-lang',\n 'landmark-one-main',\n 'page-has-heading-one',\n 'region',\n ],\n };\n\n // Set disabled rules based on test type\n const disabledRules = config.testType === 'webpage' ? [] : config.disabledRulesForComponents;\n\n let processedViolations;\n\n try {\n // Create a timeout promise for the axe analysis\n const timeoutPromise = new Promise((_, reject) => {\n const id = setTimeout(() => {\n clearTimeout(id);\n reject(new Error('AxePuppeteer analysis timed out'));\n }, 10000);\n });\n\n // Run analysis with timeout\n const analysisPromise = new AxePuppeteer(page).disableRules(disabledRules).analyze();\n const analysisResults = await Promise.race([analysisPromise, timeoutPromise]);\n\n // Clean up AxePuppeteer resources\n await page.evaluate(() => {\n // Remove axe script elements\n document.querySelectorAll('script[id$=\"axe-puppeteer\"]').forEach(el => el.remove());\n\n // Clear any remaining axe-related listeners\n const win = window as any;\n if (win.axe) {\n if (win.axe.teardown === 'function') {\n win.axe.teardown();\n }\n delete win.axe;\n }\n\n // ensure the promise resolves\n return true;\n });\n\n // @ts-expect-error analysisResults complains about the violations property\n const { violations } = analysisResults;\n\n if (!violations.length) return false;\n\n // Return full violations if verbose mode is requested\n if (config.detailLevel === 'verbose') return violations;\n\n // Process violations for default detail level\n processedViolations = violations.reduce((responseObj, violation) => {\n const { nodes, help, helpUrl, id } = violation;\n const node = nodes[0];\n\n // Create violation info object\n responseObj[id] = {\n help,\n helpUrl,\n failureSummary: node.failureSummary,\n html: node.html,\n rulesViolated: node.any.reduce((rules, rule) => {\n rules[rule.id] = rule.message;\n return rules;\n }, {}),\n };\n\n return responseObj;\n }, {});\n } catch (error) {\n console.error(`There was an error with AxePuppeteer analysis. ERROR: ${error}`);\n }\n\n return processedViolations;\n};\n\n/**\n * This function mocks the fetch API to return a resolved promise with the given icon markup.\n * You can optionally provide a <symbol> element, but it is not required.\n *\n * This is meant to be used to prevent errors on Unit/Spec tests with <q2-icon> because we are unable to provide a valid\n * URL for the fetch call in that context.\n *\n * @note This function should be called before the component is rendered.\n * @note Be sure to call `jest.restoreAllMocks()` after the test to restore the original fetch function.\n */\nexport const mockIconFetch = (iconMarkup?: string) => {\n const spy = jest.spyOn(global, 'fetch');\n const mockResponse = new Response(`<svg>${iconMarkup}</svg>`, {\n status: 200,\n statusText: 'OK',\n headers: new Headers(),\n });\n spy.mockResolvedValue(mockResponse);\n return spy;\n};\n\n// For E2E tests with Puppeteer\ndeclare global {\n interface Window {\n getAllText: (element: Element, options: any) => Promise<string>;\n }\n}\n\n/**\n * Mimicks the behavior of the {@link getAllText} utility function, with a few extractions to simplify usage.\n * @param {E2EPage} page\n * @param {string} selector\n * @param {Object} options\n * @returns {Promise<string>}\n */\nexport const getAllElementTextE2E = async (page: E2EPage, selector: string, options = {}) => {\n // Wait for element\n await page.waitForSelector(selector);\n\n // First inject the utility function\n await page.evaluate(`\n window.getAllText = ${getAllText.toString()};\n `);\n\n await page.waitForChanges();\n\n // Then use it\n return page.evaluate(\n async (selector: string, stringifiedOptions) => {\n const element = document.querySelector(selector);\n if (!element) return null;\n\n const options = JSON.parse(stringifiedOptions);\n return await window.getAllText(element, options);\n },\n selector,\n JSON.stringify({ ...options, skipComponentReady: true })\n );\n};\n"]}
@@ -61,18 +61,45 @@ describe('utils: action-sheet', () => {
61
61
  });
62
62
  });
63
63
  describe('buildListData', () => {
64
- beforeEach(() => {
64
+ beforeEach(() => { });
65
+ afterEach(() => {
66
+ document.body.innerHTML = '';
67
+ });
68
+ it('serializes options', async () => {
65
69
  document.body.innerHTML = `
66
70
  <q2-option value="option-1">Option 1</q2-option>
67
71
  <q2-option value="option-2">Option 2</q2-option>
72
+ <q2-option value="option-separator" separator></q2-option>
68
73
  <q2-option value="option-3">Option 3</q2-option>
69
74
  <q2-option value="option-4">Option 4</q2-option>
70
75
  `;
76
+ // This is necessary because the components are not actually defined here
77
+ document.querySelector('q2-option[separator]').separator = true;
78
+ const result = await buildListData({
79
+ optionList: {
80
+ getContents: async () => Array.from(document.body.children),
81
+ },
82
+ label: 'Test',
83
+ });
84
+ expect(result.title).toEqual('Test');
85
+ expect(result.options).toHaveLength(5);
86
+ expect(result.options[2].separator).toBe(true);
87
+ expect(result.listProps).toEqual({
88
+ multiple: false,
89
+ noSelect: false,
90
+ selectedOptions: [],
91
+ });
71
92
  });
72
- afterEach(() => {
73
- document.body.innerHTML = '';
74
- });
75
- it('serializes basic options', async () => {
93
+ it('serializes dropdown-items', async () => {
94
+ document.body.innerHTML = `
95
+ <q2-dropdown-item value="dropdown-item-1">Option 1</q2-dropdown-item>
96
+ <q2-dropdown-item value="dropdown-item-2">Option 2</q2-dropdown-item>
97
+ <q2-dropdown-item value="dropdown-item-separator" separator="true"></q2-dropdown-item>
98
+ <q2-dropdown-item value="dropdown-item-3">Option 3</q2-dropdown-item>
99
+ <q2-dropdown-item value="dropdown-item-4">Option 4</q2-dropdown-item>
100
+ `;
101
+ // This is necessary because the components are not actually defined here
102
+ document.querySelector('q2-dropdown-item[separator]').separator = true;
76
103
  const result = await buildListData({
77
104
  optionList: {
78
105
  getContents: async () => Array.from(document.body.children),
@@ -80,7 +107,8 @@ describe('utils: action-sheet', () => {
80
107
  label: 'Test',
81
108
  });
82
109
  expect(result.title).toEqual('Test');
83
- expect(result.options).toHaveLength(4);
110
+ expect(result.options).toHaveLength(5);
111
+ expect(result.options[2].separator).toBe(true);
84
112
  expect(result.listProps).toEqual({
85
113
  multiple: false,
86
114
  noSelect: false,
@@ -1 +1 @@
1
- {"version":3,"file":"action-sheet-test.e2e.js","sourceRoot":"","sources":["../../../src/utils/test/action-sheet-test.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { ActionSheetListOptgroup } from 'q2-tecton-common/lib/utility/action-sheet';\nimport { shouldShowActionSheet, buildListData } from '../action-sheet';\n\ndescribe('utils: action-sheet', () => {\n describe('shouldShowActionSheet', () => {\n const defineShowActionSheet = () => {\n (window as any).TectonElements = {\n showActionSheet: async () => ({\n selectedOptions: [],\n type: 'confirm',\n }),\n };\n };\n const originalCreateElement = document.createElement;\n const setDialogCompatibility = (enabled: boolean) => {\n document.createElement = jest.fn().mockImplementation(tagName => {\n return tagName === 'dialog' && enabled ? { open: true } : {};\n });\n };\n const newKeyboardEvent = (key: string) => new KeyboardEvent('keydown', { key });\n\n describe(\"when component's hoist prop is true\", () => {\n afterEach(() => {\n document.createElement = originalCreateElement;\n });\n\n it('returns false when dialog is not supported', async () => {\n setDialogCompatibility(false);\n expect(shouldShowActionSheet({ hoist: true })).toBe(false);\n });\n\n describe('when dialog is supported', () => {\n beforeEach(() => {\n setDialogCompatibility(true);\n });\n\n it('returns false when showActionSheet is undefined', async () => {\n expect(shouldShowActionSheet({ hoist: true })).toBe(false);\n });\n\n describe('when showActionSheet is defined', () => {\n beforeEach(() => {\n defineShowActionSheet();\n });\n\n it('returns true', async () => {\n expect(shouldShowActionSheet({ hoist: true })).toBe(true);\n });\n\n describe('when event is defined', () => {\n describe('when event is a KeyboardEvent', () => {\n it('returns true on ArrowDown', async () => {\n expect(shouldShowActionSheet({ hoist: true }, newKeyboardEvent('ArrowDown'))).toBe(\n true\n );\n });\n\n it('returns false on the letter \"S\"', async () => {\n expect(shouldShowActionSheet({ hoist: true }, newKeyboardEvent('S'))).toBe(false);\n });\n });\n\n describe('when event is a MouseEvent', () => {\n it(\"returns true when event's type is click\", async () => {\n expect(shouldShowActionSheet({ hoist: true }, new MouseEvent('click'))).toBe(true);\n });\n it(\"returns false when event's type is mousedown\", async () => {\n expect(shouldShowActionSheet({ hoist: true }, new MouseEvent('mousedown'))).toBe(false);\n });\n });\n });\n });\n });\n });\n });\n describe('buildListData', () => {\n beforeEach(() => {\n document.body.innerHTML = `\n <q2-option value=\"option-1\">Option 1</q2-option>\n <q2-option value=\"option-2\">Option 2</q2-option>\n <q2-option value=\"option-3\">Option 3</q2-option>\n <q2-option value=\"option-4\">Option 4</q2-option>\n `;\n });\n afterEach(() => {\n document.body.innerHTML = '';\n });\n\n it('serializes basic options', async () => {\n const result = await buildListData({\n optionList: {\n getContents: async () => Array.from(document.body.children),\n } as HTMLQ2OptionListElement,\n label: 'Test',\n });\n\n expect(result.title).toEqual('Test');\n expect(result.options).toHaveLength(4);\n expect(result.listProps).toEqual({\n multiple: false,\n noSelect: false,\n selectedOptions: [],\n });\n });\n\n it('serializes groups of options', async () => {\n document.body.innerHTML = `\n <q2-optgroup label=\"Group 1\">\n <q2-option value=\"option-1\">Option 1</q2-option>\n <q2-option value=\"option-2\">Option 2</q2-option>\n <q2-option value=\"option-3\">Option 3</q2-option>\n </q2-optgroup>\n <q2-optgroup label=\"Group 2\">\n <q2-option value=\"option-4\">Option 4</q2-option>\n </q2-optgroup>\n `;\n const result = await buildListData({\n optionList: {\n getContents: async () => Array.from(document.body.children),\n } as HTMLQ2OptionListElement,\n label: '',\n });\n\n expect(result.options).toHaveLength(2);\n expect((result.options[0] as ActionSheetListOptgroup).options).toHaveLength(3);\n expect((result.options[1] as ActionSheetListOptgroup).options).toHaveLength(1);\n });\n\n it('sets listProps.multiple to true', async () => {\n const result = await buildListData({\n optionList: {\n multiple: true,\n getContents: async () => [],\n } as HTMLQ2OptionListElement,\n label: '',\n });\n\n expect(result.listProps).toEqual({\n multiple: true,\n noSelect: false,\n selectedOptions: [],\n });\n });\n\n it('sets listProps.noSelect to true', async () => {\n const result = await buildListData({\n optionList: {\n noSelect: true,\n getContents: async () => [],\n } as HTMLQ2OptionListElement,\n label: '',\n });\n\n expect(result.listProps).toEqual({\n multiple: false,\n noSelect: true,\n selectedOptions: [],\n });\n });\n\n it('sets listProps.selectedOptions to true', async () => {\n const result = await buildListData({\n optionList: {\n selectedOptions: [{ value: 'option-1', display: 'Option 1' }],\n getContents: async () => [],\n } as HTMLQ2OptionListElement,\n label: '',\n });\n\n expect(result.listProps).toEqual({\n multiple: false,\n noSelect: false,\n selectedOptions: [{ value: 'option-1', display: 'Option 1' }],\n });\n });\n });\n});\n"]}
1
+ {"version":3,"file":"action-sheet-test.e2e.js","sourceRoot":"","sources":["../../../src/utils/test/action-sheet-test.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { ActionSheetListOptgroup, ActionSheetListOption } from 'q2-tecton-common/lib/utility/action-sheet';\nimport { shouldShowActionSheet, buildListData } from '../action-sheet';\n\ndescribe('utils: action-sheet', () => {\n describe('shouldShowActionSheet', () => {\n const defineShowActionSheet = () => {\n (window as any).TectonElements = {\n showActionSheet: async () => ({\n selectedOptions: [],\n type: 'confirm',\n }),\n };\n };\n const originalCreateElement = document.createElement;\n const setDialogCompatibility = (enabled: boolean) => {\n document.createElement = jest.fn().mockImplementation(tagName => {\n return tagName === 'dialog' && enabled ? { open: true } : {};\n });\n };\n const newKeyboardEvent = (key: string) => new KeyboardEvent('keydown', { key });\n\n describe(\"when component's hoist prop is true\", () => {\n afterEach(() => {\n document.createElement = originalCreateElement;\n });\n\n it('returns false when dialog is not supported', async () => {\n setDialogCompatibility(false);\n expect(shouldShowActionSheet({ hoist: true })).toBe(false);\n });\n\n describe('when dialog is supported', () => {\n beforeEach(() => {\n setDialogCompatibility(true);\n });\n\n it('returns false when showActionSheet is undefined', async () => {\n expect(shouldShowActionSheet({ hoist: true })).toBe(false);\n });\n\n describe('when showActionSheet is defined', () => {\n beforeEach(() => {\n defineShowActionSheet();\n });\n\n it('returns true', async () => {\n expect(shouldShowActionSheet({ hoist: true })).toBe(true);\n });\n\n describe('when event is defined', () => {\n describe('when event is a KeyboardEvent', () => {\n it('returns true on ArrowDown', async () => {\n expect(shouldShowActionSheet({ hoist: true }, newKeyboardEvent('ArrowDown'))).toBe(\n true\n );\n });\n\n it('returns false on the letter \"S\"', async () => {\n expect(shouldShowActionSheet({ hoist: true }, newKeyboardEvent('S'))).toBe(false);\n });\n });\n\n describe('when event is a MouseEvent', () => {\n it(\"returns true when event's type is click\", async () => {\n expect(shouldShowActionSheet({ hoist: true }, new MouseEvent('click'))).toBe(true);\n });\n it(\"returns false when event's type is mousedown\", async () => {\n expect(shouldShowActionSheet({ hoist: true }, new MouseEvent('mousedown'))).toBe(false);\n });\n });\n });\n });\n });\n });\n });\n describe('buildListData', () => {\n beforeEach(() => {});\n afterEach(() => {\n document.body.innerHTML = '';\n });\n\n it('serializes options', async () => {\n document.body.innerHTML = `\n <q2-option value=\"option-1\">Option 1</q2-option>\n <q2-option value=\"option-2\">Option 2</q2-option>\n <q2-option value=\"option-separator\" separator></q2-option>\n <q2-option value=\"option-3\">Option 3</q2-option>\n <q2-option value=\"option-4\">Option 4</q2-option>\n `;\n\n // This is necessary because the components are not actually defined here\n document.querySelector<HTMLQ2DropdownItemElement>('q2-option[separator]').separator = true;\n\n const result = await buildListData({\n optionList: {\n getContents: async () => Array.from(document.body.children),\n } as HTMLQ2OptionListElement,\n label: 'Test',\n });\n\n expect(result.title).toEqual('Test');\n expect(result.options).toHaveLength(5);\n expect((result.options[2] as ActionSheetListOption).separator).toBe(true);\n expect(result.listProps).toEqual({\n multiple: false,\n noSelect: false,\n selectedOptions: [],\n });\n });\n\n it('serializes dropdown-items', async () => {\n document.body.innerHTML = `\n <q2-dropdown-item value=\"dropdown-item-1\">Option 1</q2-dropdown-item>\n <q2-dropdown-item value=\"dropdown-item-2\">Option 2</q2-dropdown-item>\n <q2-dropdown-item value=\"dropdown-item-separator\" separator=\"true\"></q2-dropdown-item>\n <q2-dropdown-item value=\"dropdown-item-3\">Option 3</q2-dropdown-item>\n <q2-dropdown-item value=\"dropdown-item-4\">Option 4</q2-dropdown-item>\n `;\n\n // This is necessary because the components are not actually defined here\n document.querySelector<HTMLQ2DropdownItemElement>('q2-dropdown-item[separator]').separator = true;\n\n const result = await buildListData({\n optionList: {\n getContents: async () => Array.from(document.body.children),\n } as HTMLQ2OptionListElement,\n label: 'Test',\n });\n\n expect(result.title).toEqual('Test');\n expect(result.options).toHaveLength(5);\n expect((result.options[2] as ActionSheetListOption).separator).toBe(true);\n expect(result.listProps).toEqual({\n multiple: false,\n noSelect: false,\n selectedOptions: [],\n });\n });\n\n it('serializes groups of options', async () => {\n document.body.innerHTML = `\n <q2-optgroup label=\"Group 1\">\n <q2-option value=\"option-1\">Option 1</q2-option>\n <q2-option value=\"option-2\">Option 2</q2-option>\n <q2-option value=\"option-3\">Option 3</q2-option>\n </q2-optgroup>\n <q2-optgroup label=\"Group 2\">\n <q2-option value=\"option-4\">Option 4</q2-option>\n </q2-optgroup>\n `;\n const result = await buildListData({\n optionList: {\n getContents: async () => Array.from(document.body.children),\n } as HTMLQ2OptionListElement,\n label: '',\n });\n\n expect(result.options).toHaveLength(2);\n expect((result.options[0] as ActionSheetListOptgroup).options).toHaveLength(3);\n expect((result.options[1] as ActionSheetListOptgroup).options).toHaveLength(1);\n });\n\n it('sets listProps.multiple to true', async () => {\n const result = await buildListData({\n optionList: {\n multiple: true,\n getContents: async () => [],\n } as HTMLQ2OptionListElement,\n label: '',\n });\n\n expect(result.listProps).toEqual({\n multiple: true,\n noSelect: false,\n selectedOptions: [],\n });\n });\n\n it('sets listProps.noSelect to true', async () => {\n const result = await buildListData({\n optionList: {\n noSelect: true,\n getContents: async () => [],\n } as HTMLQ2OptionListElement,\n label: '',\n });\n\n expect(result.listProps).toEqual({\n multiple: false,\n noSelect: true,\n selectedOptions: [],\n });\n });\n\n it('sets listProps.selectedOptions to true', async () => {\n const result = await buildListData({\n optionList: {\n selectedOptions: [{ value: 'option-1', display: 'Option 1' }],\n getContents: async () => [],\n } as HTMLQ2OptionListElement,\n label: '',\n });\n\n expect(result.listProps).toEqual({\n multiple: false,\n noSelect: false,\n selectedOptions: [{ value: 'option-1', display: 'Option 1' }],\n });\n });\n });\n});\n"]}
@@ -23,6 +23,7 @@ const shouldShowActionSheet = (component, event) => {
23
23
  const parseOptions = (options) => {
24
24
  const defaultOption = {
25
25
  disabled: false,
26
+ separator: false,
26
27
  display: '',
27
28
  hidden: false,
28
29
  multiline: false,
@@ -50,9 +51,11 @@ const parseOptions = (options) => {
50
51
  return acc;
51
52
  }, Object.assign({}, defaultOptgroup));
52
53
  }
53
- else if (option.tagName === 'Q2-OPTION') {
54
+ else if (option.tagName === 'Q2-OPTION' || option.tagName === 'Q2-DROPDOWN-ITEM') {
54
55
  return optionPropsToGet.reduce((acc, prop) => {
55
- acc[prop] = option[prop];
56
+ if (option[prop] !== undefined) {
57
+ acc[prop] = option[prop];
58
+ }
56
59
  return acc;
57
60
  }, Object.assign({}, defaultOption));
58
61
  }
@@ -78,6 +81,6 @@ const showActionSheetList = async (component, event) => {
78
81
  return (_a = window.TectonElements) === null || _a === void 0 ? void 0 : _a.showActionSheet(listData);
79
82
  };
80
83
 
81
- export { shouldShowActionSheet as a, showActionSheetList as s };
84
+ export { showActionSheetList as a, shouldShowActionSheet as s };
82
85
 
83
86
  //# sourceMappingURL=action-sheet.js.map
@@ -1 +1 @@
1
- {"file":"action-sheet.js","mappings":"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","names":[],"sources":["src/utils/action-sheet.ts"],"sourcesContent":["import {\n ActionSheetSelectedOption,\n ActionSheetListCloseData,\n ActionSheetListData,\n ActionSheetListOption,\n ActionSheetListOptgroup,\n} from 'q2-tecton-common/lib/utility/action-sheet';\n\ninterface IActionSheetComponent {\n hoist: boolean;\n}\nexport const shouldShowActionSheet = (component: IActionSheetComponent, event?: KeyboardEvent | MouseEvent) => {\n const isDialogSupported = 'open' in document.createElement('dialog');\n if (!isDialogSupported) return false;\n\n const canShowActionSheet = !!window.TectonElements?.showActionSheet;\n if (!canShowActionSheet) return false;\n\n const keysThatTriggerOpen = ['ArrowDown', 'ArrowUp', 'PageDown', 'PageUp', 'Home', 'End', 'Enter', ' '];\n if (event) {\n const eventIsKeyboardEvent = event instanceof KeyboardEvent;\n const eventIsMouseEvent = event instanceof MouseEvent;\n const keyboardEventShouldTriggerOpen = eventIsKeyboardEvent && keysThatTriggerOpen.includes(event.key);\n const mouseEventShouldTriggerOpen = eventIsMouseEvent && event.type === 'click';\n const eventShouldTriggerOpen = mouseEventShouldTriggerOpen || keyboardEventShouldTriggerOpen;\n if (!eventShouldTriggerOpen) return false;\n }\n\n if (component.hoist) return true;\n return false;\n};\n\nconst parseOptions = (options: (HTMLQ2OptgroupElement | HTMLQ2OptionElement)[]): any[] => {\n const defaultOption = {\n disabled: false,\n display: '',\n hidden: false,\n multiline: false,\n value: '',\n innerHTML: '',\n };\n const optionPropsToGet = Object.keys(defaultOption);\n const defaultOptgroup = {\n disabled: false,\n label: '',\n options: [],\n };\n const optgroupPropsToGet = Object.keys(defaultOptgroup);\n return options.map(option => {\n if (option.tagName === 'Q2-OPTGROUP') {\n const optgroup = option as HTMLQ2OptgroupElement;\n return optgroupPropsToGet.reduce<ActionSheetListOptgroup>(\n (acc, prop) => {\n if (prop === 'options') {\n const options = Array.from(option.children).filter(\n child => child.tagName === 'Q2-OPTION' || child.tagName === 'Q2-OPTGROUP'\n ) as HTMLQ2OptgroupElement[];\n\n acc[prop] = parseOptions(options);\n } else {\n acc[prop] = optgroup[prop];\n }\n return acc;\n },\n { ...defaultOptgroup }\n );\n } else if (option.tagName === 'Q2-OPTION') {\n return optionPropsToGet.reduce<ActionSheetListOption>(\n (acc, prop) => {\n acc[prop] = option[prop];\n return acc;\n },\n { ...defaultOption }\n );\n }\n });\n};\n\nexport const buildListData = async (\n component: IActionSheetListComponent,\n event?: MouseEvent | KeyboardEvent\n): Promise<ActionSheetListData> => {\n return {\n appearance: 'list',\n title: component.label || '',\n description: '',\n event,\n listProps: {\n multiple: !!component.optionList.multiple,\n selectedOptions: (component.optionList.selectedOptions as ActionSheetSelectedOption[]) || [],\n noSelect: !!component.optionList.noSelect,\n },\n options: parseOptions(await component.optionList.getContents()),\n };\n};\n\ninterface IActionSheetListComponent {\n optionList: HTMLQ2OptionListElement;\n label: string;\n}\nexport const showActionSheetList = async (\n component: IActionSheetListComponent,\n event?: MouseEvent | KeyboardEvent\n): Promise<ActionSheetListCloseData> => {\n const listData = await buildListData(component, event);\n return window.TectonElements?.showActionSheet(listData);\n};\n"],"version":3}
1
+ {"file":"action-sheet.js","mappings":"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","names":[],"sources":["src/utils/action-sheet.ts"],"sourcesContent":["import {\n ActionSheetSelectedOption,\n ActionSheetListCloseData,\n ActionSheetListData,\n ActionSheetListOption,\n ActionSheetListOptgroup,\n} from 'q2-tecton-common/lib/utility/action-sheet';\n\ninterface IActionSheetComponent {\n hoist: boolean;\n}\nexport const shouldShowActionSheet = (component: IActionSheetComponent, event?: KeyboardEvent | MouseEvent) => {\n const isDialogSupported = 'open' in document.createElement('dialog');\n if (!isDialogSupported) return false;\n\n const canShowActionSheet = !!window.TectonElements?.showActionSheet;\n if (!canShowActionSheet) return false;\n\n const keysThatTriggerOpen = ['ArrowDown', 'ArrowUp', 'PageDown', 'PageUp', 'Home', 'End', 'Enter', ' '];\n if (event) {\n const eventIsKeyboardEvent = event instanceof KeyboardEvent;\n const eventIsMouseEvent = event instanceof MouseEvent;\n const keyboardEventShouldTriggerOpen = eventIsKeyboardEvent && keysThatTriggerOpen.includes(event.key);\n const mouseEventShouldTriggerOpen = eventIsMouseEvent && event.type === 'click';\n const eventShouldTriggerOpen = mouseEventShouldTriggerOpen || keyboardEventShouldTriggerOpen;\n if (!eventShouldTriggerOpen) return false;\n }\n\n if (component.hoist) return true;\n return false;\n};\n\nconst parseOptions = (options: (HTMLQ2OptgroupElement | HTMLQ2OptionElement | HTMLQ2DropdownItemElement)[]): any[] => {\n const defaultOption = {\n disabled: false,\n separator: false,\n display: '',\n hidden: false,\n multiline: false,\n value: '',\n innerHTML: '',\n };\n const optionPropsToGet = Object.keys(defaultOption);\n const defaultOptgroup = {\n disabled: false,\n label: '',\n options: [],\n };\n const optgroupPropsToGet = Object.keys(defaultOptgroup);\n return options.map(option => {\n if (option.tagName === 'Q2-OPTGROUP') {\n const optgroup = option as HTMLQ2OptgroupElement;\n return optgroupPropsToGet.reduce<ActionSheetListOptgroup>(\n (acc, prop) => {\n if (prop === 'options') {\n const options = Array.from(option.children).filter(\n child => child.tagName === 'Q2-OPTION' || child.tagName === 'Q2-OPTGROUP'\n ) as HTMLQ2OptgroupElement[];\n\n acc[prop] = parseOptions(options);\n } else {\n acc[prop] = optgroup[prop];\n }\n return acc;\n },\n { ...defaultOptgroup }\n );\n } else if (option.tagName === 'Q2-OPTION' || option.tagName === 'Q2-DROPDOWN-ITEM') {\n return optionPropsToGet.reduce<ActionSheetListOption>(\n (acc, prop) => {\n if (option[prop] !== undefined) {\n acc[prop] = option[prop];\n }\n return acc;\n },\n { ...defaultOption }\n );\n }\n });\n};\n\nexport const buildListData = async (\n component: IActionSheetListComponent,\n event?: MouseEvent | KeyboardEvent\n): Promise<ActionSheetListData> => {\n return {\n appearance: 'list',\n title: component.label || '',\n description: '',\n event,\n listProps: {\n multiple: !!component.optionList.multiple,\n selectedOptions: (component.optionList.selectedOptions as ActionSheetSelectedOption[]) || [],\n noSelect: !!component.optionList.noSelect,\n },\n options: parseOptions(await component.optionList.getContents()),\n };\n};\n\ninterface IActionSheetListComponent {\n optionList: HTMLQ2OptionListElement;\n label: string;\n}\nexport const showActionSheetList = async (\n component: IActionSheetListComponent,\n event?: MouseEvent | KeyboardEvent\n): Promise<ActionSheetListCloseData> => {\n const listData = await buildListData(component, event);\n return window.TectonElements?.showActionSheet(listData);\n};\n"],"version":3}
@@ -20,6 +20,7 @@ import { Q2Dropdown } from './q2-dropdown.js';
20
20
  import { Q2DropdownItem } from './q2-dropdown-item.js';
21
21
  import { Q2EditableField } from './q2-editable-field.js';
22
22
  import { Q2Example } from './q2-example.js';
23
+ import { Q2FilePicker } from './q2-file-picker.js';
23
24
  import { Q2FormattedText } from './q2-formatted-text.js';
24
25
  import { Q2Icon } from './q2-icon.js';
25
26
  import { Q2Input } from './q2-input.js';
@@ -80,6 +81,7 @@ const defineCustomElements = (opts) => {
80
81
  Q2DropdownItem,
81
82
  Q2EditableField,
82
83
  Q2Example,
84
+ Q2FilePicker,
83
85
  Q2FormattedText,
84
86
  Q2Icon,
85
87
  Q2Input,
@@ -1 +1 @@
1
- {"file":"index.js","mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":[],"sourcesContent":[],"version":3}
1
+ {"file":"index.js","mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":[],"sourcesContent":[],"version":3}
@@ -12,25 +12,6 @@ const debounce = (fn, delay = 300) => {
12
12
  function isMobile() {
13
13
  return /Android|webOS|iPhone|iPad|iPod|BlackBerry|Mobile|IEMobile|Windows Phone|Opera Mini/i.test(navigator.userAgent);
14
14
  }
15
- function isHostLosingFocus(event, hostElement) {
16
- const type = event.type;
17
- const focusInTypes = ['focusin', 'focus'];
18
- const isFocusIn = focusInTypes.includes(type);
19
- // on focusin: `target` is element losing focus, `relatedTarget` is element gaining focus
20
- // on focusout: `target` is element gaining focus, `relatedTarget` is element losing focus
21
- const elementGainingFocus = isFocusIn ? event.target : event.relatedTarget;
22
- const isElementNestedInHostElement = (element) => {
23
- if (element === hostElement)
24
- return true;
25
- if (element.parentElement) {
26
- return isElementNestedInHostElement(element.parentElement);
27
- }
28
- return false;
29
- };
30
- if (!(elementGainingFocus instanceof HTMLElement))
31
- return true;
32
- return !isElementNestedInHostElement(elementGainingFocus);
33
- }
34
15
  function isRelatedTargetWithinHost(event, element) {
35
16
  return event.relatedTarget !== element && !element.contains(event.relatedTarget);
36
17
  }
@@ -289,6 +270,6 @@ const getAllText = async (element, options = {}) => {
289
270
  return result;
290
271
  };
291
272
 
292
- export { handleRenamedProp as a, isTouchDevice as b, createGuid as c, isMobile as d, resizeIframe as e, hasSlotContent as f, debounce as g, handleAriaLabel as h, isEventFromElement as i, renderMessages as j, handleDeprecationWarning as k, loc as l, handleColor as m, nextPaint as n, overrideFocus as o, getAriaValueFromProp as p, isFirefox as q, renderLabel as r, setMessageHeight as s, getAllText as t, isVisible as u, isRelatedTargetWithinHost as v, waitForNextPaint as w, isHostLosingFocus as x };
273
+ export { handleRenamedProp as a, isTouchDevice as b, createGuid as c, isMobile as d, resizeIframe as e, hasSlotContent as f, debounce as g, handleAriaLabel as h, isEventFromElement as i, renderMessages as j, handleDeprecationWarning as k, loc as l, handleColor as m, nextPaint as n, overrideFocus as o, getAriaValueFromProp as p, isFirefox as q, renderLabel as r, setMessageHeight as s, getAllText as t, isVisible as u, isRelatedTargetWithinHost as v, waitForNextPaint as w };
293
274
 
294
275
  //# sourceMappingURL=index2.js.map
@@ -1 +1 @@
1
- {"file":"index2.js","mappings":";;MAgBa,QAAQ,GAAG,CAAsD,EAAK,EAAE,QAAgB,GAAG;IACpG,IAAI,OAAsC,CAAC;IAC3C,OAAO,UAAU,GAAG,IAAmB;QACnC,YAAY,CAAC,OAAO,CAAC,CAAC;QACtB,OAAO,GAAG,UAAU,CAAC;YACjB,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;SACf,EAAE,KAAK,CAAC,CAAC;KACb,CAAC;AACN,EAAE;SAEc,QAAQ;IACpB,OAAO,qFAAqF,CAAC,IAAI,CAC7F,SAAS,CAAC,SAAS,CACtB,CAAC;AACN,CAAC;SAEe,iBAAiB,CAAC,KAAiB,EAAE,WAAwB;IACzE,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACxB,MAAM,YAAY,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC1C,MAAM,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;;IAI9C,MAAM,mBAAmB,GAAG,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC;IAE3E,MAAM,4BAA4B,GAAG,CAAC,OAAoB;QACtD,IAAI,OAAO,KAAK,WAAW;YAAE,OAAO,IAAI,CAAC;QACzC,IAAI,OAAO,CAAC,aAAa,EAAE;YACvB,OAAO,4BAA4B,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;SAC9D;QACD,OAAO,KAAK,CAAC;KAChB,CAAC;IAEF,IAAI,EAAE,mBAAmB,YAAY,WAAW,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/D,OAAO,CAAC,4BAA4B,CAAC,mBAAmB,CAAC,CAAC;AAC9D,CAAC;SAEe,yBAAyB,CAAC,KAAiB,EAAE,OAAoB;IAC7E,OAAO,KAAK,CAAC,aAAa,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAqB,CAAC,CAAC;AAC7F,CAAC;SAEe,kBAAkB,CAAC,KAAY,EAAE,OAAoB;;IACjE,OAAO,CAAA,MAAA,KAAK,CAAC,YAAY,sDAAK,CAAC,CAAC,MAAK,OAAO,CAAC;AACjD,CAAC;SAEe,aAAa,CAAC,WAAwB;IAClD,WAAW,CAAC,KAAK,GAAG,MAAM,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,aAAa,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACtG,CAAC;SAEe,SAAS;IACrB,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;IACpD,OAAO,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACzC,CAAC;SAEe,aAAa;IACzB,OAAO,cAAc,IAAI,MAAM,IAAI,SAAS,CAAC,cAAc,GAAG,CAAC,CAAC;AACpE,CAAC;AAOD;;;;;SAKgB,oBAAoB,CAAC,IAAY,EAAE,WAAsB;IACrE,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,KAAK,UAAU,GAAG,IAAI,GAAG,SAAS,CAAC;IAChE,OAAO,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC;AACxE,CAAC;AAED,IAAI,IAAI,GAAW,IAAI,CAAC;SACR,UAAU;IACtB,OAAO,IAAI,EAAE,CAAC;AAClB,CAAC;SAEe,SAAS,CAAC,EAA6B;IACnD,qBAAqB,CAAC;QAClB,qBAAqB,CAAC,EAAE,CAAC,CAAC;KAC7B,CAAC,CAAC;AACP,CAAC;SAEe,SAAS,CAAC,OAAoB;IAC1C,OAAO,OAAO,CAAC,WAAW,GAAG,CAAC,IAAI,OAAO,CAAC,YAAY,GAAG,CAAC,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AACtG,CAAC;SAEe,gBAAgB;IAC5B,OAAO,IAAI,OAAO,CAAC,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;AACtD,CAAC;SAiBe,GAAG,CAAC,GAAW,EAAE,IAA4B;;IACzD,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,IAAI,CAAA,MAAA,MAAM,CAAC,MAAM,0CAAE,SAAS,MAAK,IAAI,EAAE;QACnC,OAAO,GAAG,CAAC;KACd;IACD,OAAO,MAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,cAAc,0CAAE,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,mCAAI,GAAG,CAAC;AACzD,CAAC;SAEe,WAAW,CAAC,MAAuD;IAC/E,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IACxD,MAAM,YAAY,GAAa,CAAC,aAAa,CAAC,CAAC;IAC/C,IAAI,QAAQ,GAAG,EAAE,CAAC;IAElB,IAAI,eAAe,GAAG,SAAS,CAAC;IAChC,IAAI,CAAC,eAAe,EAAE;QAClB,MAAM,iBAAiB,GAAG,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAkB,gBAAgB,CAAC,CAAC;QACjG,MAAM,cAAc,GAAG,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC;QAEzB,eAAe,GAAG,QAAQ,IAAI,cAAc,GAAG,KAAK,GAAG,IAAI,CAAC;KAC/D;IAED,IAAI,eAAe;QAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,QAAQ,EAAE;QACV,QAAQ,GAAG,YAAM,KAAK,EAAC,cAAc,IAAE,GAAG,CAAC,+BAA+B,CAAC,CAAQ,CAAC;KACvF;IACD,IAAI,QAAQ,EAAE;QACV,QAAQ,GAAG,YAAM,KAAK,EAAC,cAAc,IAAE,GAAG,CAAC,+BAA+B,CAAC,CAAQ,CAAC;QACpF,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;KACvC;IACD,QACI,aACI,OAAO,EAAE,MAAM,CAAC,OAAO,EACvB,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;QAE7B,YAAM,IAAI,EAAC,OAAO;YACb,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,SAAS;YAC9B,QAAQ,CACN,CACH,EACV;AACN,CAAC;SAEe,cAAc,CAAC,MAAmB,EAAE,QAAgB;IAChE,OAAO,MAAM,CAAC,aAAa,CAAC,UAAU,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC;AACjE,CAAC;SAEe,eAAe,CAC3B,MAWW;IAEX,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;IAC7B,IAAI,CAAC,SAAS;QAAE,OAAO;;IAGvB,MAAM,sBAAsB,GAAG,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;IACnD,IAAI,SAAS,KAAK,sBAAsB,EAAE;QACtC,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;QAC7B,OAAO;KACV;;IAGD,IAAI,WAAW,IAAI,MAAM;QAAE,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;IACnD,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC;IAC9B,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;AACjC,CAAC;AAED;;;SAGgB,iBAAiB,CAAC,MAAc,EAAE,OAAe,EAAE,OAAe,EAAE,aAAuB;IACvG,IAAI,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,WAAW;QAAE,OAAO;;IAGnD,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE;QACjB,wBAAwB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;KACrD;IAED,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAElC,IAAI,aAAa,EAAE;QACf,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;KAC1B;AACL,CAAC;SAEe,wBAAwB,CACpC,MAAc,EACd,kBAA0B,EAC1B,kBAA4D;IAE5D,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,KAAK,WAAW,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,uBAAuB,EAAE;QAC9F,IAAI,MAAM,CAAC,kBAAkB,CAAC,KAAK,WAAW;YAAE,OAAO;QAEvD,MAAM,aAAa,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAErE,QAAQ,kBAAkB;YACtB,KAAK,MAAM;gBACP,IAAI,kBAAkB,KAAK,MAAM,IAAI,aAAa,KAAK,KAAK,EAAE;oBAC1D,OAAO,CAAC,IAAI,CACR,6RAA6R,CAChS,CAAC;iBACL;qBAAM;oBACH,OAAO,CAAC,IAAI,CACR,gBAAgB,kBAAkB,UAAU,aAAa,oFAAoF,CAChJ,CAAC;iBACL;gBACD,MAAM;YAEV,KAAK,UAAU;gBACX,OAAO,CAAC,IAAI,CACR,gBAAgB,kBAAkB,OAAO,aAAa,oFAAoF,CAC7I,CAAC;gBACF,MAAM;YAEV,KAAK,QAAQ;gBACT,OAAO,CAAC,IAAI,CACR,cAAc,kBAAkB,OAAO,aAAa,oFAAoF,CAC3I,CAAC;gBACF,MAAM;YAEV,KAAK,OAAO;gBACR,OAAO,CAAC,IAAI,CACR,aAAa,kBAAkB,OAAO,aAAa,oFAAoF,CAC1I,CAAC;gBACF,MAAM;YAEV;gBACI,OAAO,CAAC,KAAK,CACT,uEAAuE,kBAAkB,UAAU,aAAa,0BAA0B,kBAAkB,EAAE,CACjK,CAAC;SACT;KACJ;AACL,CAAC;SAEe,cAAc,CAAC,MAAsB;IACjD,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;IAEjD,QACI,WAAK,KAAK,EAAC,oBAAoB;QAC3B,kBACI,UAAU,EAAC,SAAS,EACpB,WAAW,QACX,IAAI,EAAE,IAAI,aACF,SAAS;YAEjB,UAAI,EAAE,EAAE,MAAM,CAAC,gBAAgB,IAC1B,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,KACxB,qBAAY,iBAAiB,IAAE,GAAG,CAAC,OAAO,CAAC,CAAM,CACpD,CAAC,CACD,CACI,CACX,EACR;AACN,CAAC;SAEe,gBAAgB,CAAC,MAAsB;IACnD,MAAM,gBAAgB,GAAI,MAAM,CAAC,WAAW,CAAC,UAAyB,CAAC,aAAa,CAChF,qBAAqB,CACxB,CAAC;IACF,MAAM,SAAS,GAAG,gBAAgB,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;IAC/D,SAAS,CAAC;QACN,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,QAAQ,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;QAErG,IAAI,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,GAAG,MAAM,IAAI;YAAE,OAAO;QAEhF,IAAI,MAAM,KAAK,CAAC,EAAE;YACd,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACrC,gBAAgB,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;SACnD;aAAM;YACH,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACxC,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,CAAC;SAC/D;KACJ,CAAC,CAAC;AACP,CAAC;MAEY,YAAY,GAAG;;IACxB,OAAO,MAAA,MAAA,MAAM,CAAC,cAAc,0CAAE,YAAY,kDAAI,CAAC;AACnD,EAAE;AAEF;MACa,WAAW,GAAG,CAAC,MAAa;IACrC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;QACnE,MAAM,CAAC,MAAM,GAAG,YAAY,MAAM,CAAC,KAAK,EAAgC,CAAC;QACzE,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC;KAC5B;AACL,EAAE;AAEF;;;;;;;;;;MAUa,UAAU,GAAG,OAAO,OAAO,EAAE,OAAO,GAAG,EAAE;IAClD,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IAExB,MAAM,IAAI,mBACN,IAAI,EAAE,IAAI,EACV,mBAAmB,EAAE,KAAK,EAC1B,kBAAkB,EAAE,KAAK,IACtB,OAAO,CACb,CAAC;IAEF,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;IACrF,MAAM,cAAc,GAAG,IAAI,OAAO,EAAE,CAAC;IACrC,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,eAAe,WAAW,CAAC,IAAI;;QAC3B,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;YAAE,OAAO;QAEvE,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;;QAGzB,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,EAAE;YAClC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;YAEpE,IAAI,IAAI,EAAE;;gBAEN,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;oBAC1D,MAAM,IAAI,GAAG,CAAC;iBACjB;;gBAGD,MAAM,IAAI,IAAI,CAAC,kBAAkB,GAAG,MAAA,MAAM,CAAC,cAAc,0CAAE,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;aACpF;YACD,OAAO;SACV;;QAGD,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY,EAAE;;YAErC,MAAM,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,OAAO,IAAI,CAAC,gBAAgB,KAAK,UAAU,CAAC;YAE1G,IAAI,kBAAkB,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;gBAChD,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;aACjC;;YAGD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,UAAU,EAAE;gBACjC,MAAM,WAAW,CAAC,KAAK,CAAC,CAAC;aAC5B;;YAGD,IAAI,IAAI,CAAC,UAAU,EAAE;gBACjB,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;oBAClD,MAAM,WAAW,CAAC,WAAW,CAAC,CAAC;iBAClC;aACJ;;YAGD,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,IAAI,OAAO,IAAI,CAAC,aAAa,KAAK,UAAU,EAAE;gBACtE,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;gBAE3C,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC1B,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE;wBAClC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;4BAC/B,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC;yBAC/B;qBACJ;iBACJ;qBAAM;;oBAEH,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE;wBACpC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;4BAC/B,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC;yBAC/B;qBACJ;iBACJ;aACJ;SACJ;KACJ;IAED,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;;IAG3B,IAAI,IAAI,CAAC,IAAI,EAAE;QACX,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;KAC1B;IAED,IAAI,IAAI,CAAC,mBAAmB,EAAE;QAC1B,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KACxC;IAED,OAAO,MAAM,CAAC;AAClB;;;;","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 const debounce = <F extends (...args: Parameters<F>) => ReturnType<F>>(fn: F, delay: number = 300) => {\n let timeout: ReturnType<typeof setTimeout>;\n return function (...args: Parameters<F>) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n fn(...args);\n }, delay);\n };\n};\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 renderLabel(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 renderMessages(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\n/**\n * Gets all translated text content from an element, including shadow DOM content\n *\n * @param {Element} element - The element to extract text from\n * @param {Object} options - Configuration options\n * @param {boolean} [options.trim=true] - Whether to trim whitespace\n * @param {boolean} [options.normalizeWhitespace=false] - Whether to normalize whitespace\n * @param {boolean} [options.skipComponentReady=false] - Skip waiting for components (for test environments)\n * @return {Promise<string>} All translated text content in DOM order\n */\nexport const getAllText = async (element, options = {}) => {\n if (!element) return '';\n\n const opts = {\n trim: true,\n normalizeWhitespace: false,\n skipComponentReady: false,\n ...options,\n };\n\n const nodesToSkip = new Set(['STYLE', 'SCRIPT', 'NOSCRIPT', 'TEMPLATE', '#comment']);\n const processedNodes = new WeakSet();\n let result = '';\n\n async function processNode(node) {\n if (processedNodes.has(node) || nodesToSkip.has(node.nodeName)) return;\n\n processedNodes.add(node);\n\n // Handle text nodes\n if (node.nodeType === Node.TEXT_NODE) {\n const text = opts.trim ? node.textContent.trim() : node.textContent;\n\n if (text) {\n // Add space between adjacent text nodes if needed\n if (result && !result.endsWith(' ') && !text.startsWith(' ')) {\n result += ' ';\n }\n\n // Translate the text\n result += opts.skipComponentReady ? window.TectonElements?.loc(text) : loc(text);\n }\n return;\n }\n\n // Handle element nodes\n if (node.nodeType === Node.ELEMENT_NODE) {\n // Wait for Stencil component if needed\n const isStencilComponent = node.nodeName.startsWith('Q2-') && typeof node.componentOnReady === 'function';\n\n if (isStencilComponent && !opts.skipComponentReady) {\n await node.componentOnReady();\n }\n\n // Process children in light DOM\n for (const child of node.childNodes) {\n await processNode(child);\n }\n\n // Process shadow DOM if present\n if (node.shadowRoot) {\n for (const shadowChild of node.shadowRoot.childNodes) {\n await processNode(shadowChild);\n }\n }\n\n // Handle slot elements with assigned nodes\n if (node.nodeName === 'SLOT' && typeof node.assignedNodes === 'function') {\n const assignedNodes = node.assignedNodes();\n\n if (assignedNodes.length > 0) {\n for (const assigned of assignedNodes) {\n if (!processedNodes.has(assigned)) {\n await processNode(assigned);\n }\n }\n } else {\n // Process slot fallback content\n for (const fallback of node.childNodes) {\n if (!processedNodes.has(fallback)) {\n await processNode(fallback);\n }\n }\n }\n }\n }\n }\n\n await processNode(element);\n\n // Apply final formatting\n if (opts.trim) {\n result = result.trim();\n }\n\n if (opts.normalizeWhitespace) {\n result = result.replace(/\\s+/g, ' ');\n }\n\n return result;\n};\n"],"version":3}
1
+ {"file":"index2.js","mappings":";;MAgBa,QAAQ,GAAG,CAAsD,EAAK,EAAE,QAAgB,GAAG;IACpG,IAAI,OAAsC,CAAC;IAC3C,OAAO,UAAU,GAAG,IAAmB;QACnC,YAAY,CAAC,OAAO,CAAC,CAAC;QACtB,OAAO,GAAG,UAAU,CAAC;YACjB,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;SACf,EAAE,KAAK,CAAC,CAAC;KACb,CAAC;AACN,EAAE;SAEc,QAAQ;IACpB,OAAO,qFAAqF,CAAC,IAAI,CAC7F,SAAS,CAAC,SAAS,CACtB,CAAC;AACN,CAAC;SAuBe,yBAAyB,CAAC,KAAiB,EAAE,OAAoB;IAC7E,OAAO,KAAK,CAAC,aAAa,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAqB,CAAC,CAAC;AAC7F,CAAC;SAEe,kBAAkB,CAAC,KAAY,EAAE,OAAoB;;IACjE,OAAO,CAAA,MAAA,KAAK,CAAC,YAAY,sDAAK,CAAC,CAAC,MAAK,OAAO,CAAC;AACjD,CAAC;SAEe,aAAa,CAAC,WAAwB;IAClD,WAAW,CAAC,KAAK,GAAG,MAAM,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,aAAa,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACtG,CAAC;SAEe,SAAS;IACrB,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;IACpD,OAAO,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACzC,CAAC;SAEe,aAAa;IACzB,OAAO,cAAc,IAAI,MAAM,IAAI,SAAS,CAAC,cAAc,GAAG,CAAC,CAAC;AACpE,CAAC;AAOD;;;;;SAKgB,oBAAoB,CAAC,IAAY,EAAE,WAAsB;IACrE,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,KAAK,UAAU,GAAG,IAAI,GAAG,SAAS,CAAC;IAChE,OAAO,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC;AACxE,CAAC;AAED,IAAI,IAAI,GAAW,IAAI,CAAC;SACR,UAAU;IACtB,OAAO,IAAI,EAAE,CAAC;AAClB,CAAC;SAEe,SAAS,CAAC,EAA6B;IACnD,qBAAqB,CAAC;QAClB,qBAAqB,CAAC,EAAE,CAAC,CAAC;KAC7B,CAAC,CAAC;AACP,CAAC;SAEe,SAAS,CAAC,OAAoB;IAC1C,OAAO,OAAO,CAAC,WAAW,GAAG,CAAC,IAAI,OAAO,CAAC,YAAY,GAAG,CAAC,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AACtG,CAAC;SAEe,gBAAgB;IAC5B,OAAO,IAAI,OAAO,CAAC,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;AACtD,CAAC;SAiBe,GAAG,CAAC,GAAW,EAAE,IAA4B;;IACzD,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,IAAI,CAAA,MAAA,MAAM,CAAC,MAAM,0CAAE,SAAS,MAAK,IAAI,EAAE;QACnC,OAAO,GAAG,CAAC;KACd;IACD,OAAO,MAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,cAAc,0CAAE,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,mCAAI,GAAG,CAAC;AACzD,CAAC;SAEe,WAAW,CAAC,MAAuD;IAC/E,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IACxD,MAAM,YAAY,GAAa,CAAC,aAAa,CAAC,CAAC;IAC/C,IAAI,QAAQ,GAAG,EAAE,CAAC;IAElB,IAAI,eAAe,GAAG,SAAS,CAAC;IAChC,IAAI,CAAC,eAAe,EAAE;QAClB,MAAM,iBAAiB,GAAG,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAkB,gBAAgB,CAAC,CAAC;QACjG,MAAM,cAAc,GAAG,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC;QAEzB,eAAe,GAAG,QAAQ,IAAI,cAAc,GAAG,KAAK,GAAG,IAAI,CAAC;KAC/D;IAED,IAAI,eAAe;QAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,QAAQ,EAAE;QACV,QAAQ,GAAG,YAAM,KAAK,EAAC,cAAc,IAAE,GAAG,CAAC,+BAA+B,CAAC,CAAQ,CAAC;KACvF;IACD,IAAI,QAAQ,EAAE;QACV,QAAQ,GAAG,YAAM,KAAK,EAAC,cAAc,IAAE,GAAG,CAAC,+BAA+B,CAAC,CAAQ,CAAC;QACpF,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;KACvC;IACD,QACI,aACI,OAAO,EAAE,MAAM,CAAC,OAAO,EACvB,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;QAE7B,YAAM,IAAI,EAAC,OAAO;YACb,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,SAAS;YAC9B,QAAQ,CACN,CACH,EACV;AACN,CAAC;SAEe,cAAc,CAAC,MAAmB,EAAE,QAAgB;IAChE,OAAO,MAAM,CAAC,aAAa,CAAC,UAAU,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC;AACjE,CAAC;SAEe,eAAe,CAC3B,MAWW;IAEX,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;IAC7B,IAAI,CAAC,SAAS;QAAE,OAAO;;IAGvB,MAAM,sBAAsB,GAAG,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;IACnD,IAAI,SAAS,KAAK,sBAAsB,EAAE;QACtC,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;QAC7B,OAAO;KACV;;IAGD,IAAI,WAAW,IAAI,MAAM;QAAE,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;IACnD,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC;IAC9B,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;AACjC,CAAC;AAED;;;SAGgB,iBAAiB,CAAC,MAAc,EAAE,OAAe,EAAE,OAAe,EAAE,aAAuB;IACvG,IAAI,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,WAAW;QAAE,OAAO;;IAGnD,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE;QACjB,wBAAwB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;KACrD;IAED,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAElC,IAAI,aAAa,EAAE;QACf,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;KAC1B;AACL,CAAC;SAEe,wBAAwB,CACpC,MAAc,EACd,kBAA0B,EAC1B,kBAA4D;IAE5D,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,KAAK,WAAW,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,uBAAuB,EAAE;QAC9F,IAAI,MAAM,CAAC,kBAAkB,CAAC,KAAK,WAAW;YAAE,OAAO;QAEvD,MAAM,aAAa,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAErE,QAAQ,kBAAkB;YACtB,KAAK,MAAM;gBACP,IAAI,kBAAkB,KAAK,MAAM,IAAI,aAAa,KAAK,KAAK,EAAE;oBAC1D,OAAO,CAAC,IAAI,CACR,6RAA6R,CAChS,CAAC;iBACL;qBAAM;oBACH,OAAO,CAAC,IAAI,CACR,gBAAgB,kBAAkB,UAAU,aAAa,oFAAoF,CAChJ,CAAC;iBACL;gBACD,MAAM;YAEV,KAAK,UAAU;gBACX,OAAO,CAAC,IAAI,CACR,gBAAgB,kBAAkB,OAAO,aAAa,oFAAoF,CAC7I,CAAC;gBACF,MAAM;YAEV,KAAK,QAAQ;gBACT,OAAO,CAAC,IAAI,CACR,cAAc,kBAAkB,OAAO,aAAa,oFAAoF,CAC3I,CAAC;gBACF,MAAM;YAEV,KAAK,OAAO;gBACR,OAAO,CAAC,IAAI,CACR,aAAa,kBAAkB,OAAO,aAAa,oFAAoF,CAC1I,CAAC;gBACF,MAAM;YAEV;gBACI,OAAO,CAAC,KAAK,CACT,uEAAuE,kBAAkB,UAAU,aAAa,0BAA0B,kBAAkB,EAAE,CACjK,CAAC;SACT;KACJ;AACL,CAAC;SAEe,cAAc,CAAC,MAAsB;IACjD,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;IAEjD,QACI,WAAK,KAAK,EAAC,oBAAoB;QAC3B,kBACI,UAAU,EAAC,SAAS,EACpB,WAAW,QACX,IAAI,EAAE,IAAI,aACF,SAAS;YAEjB,UAAI,EAAE,EAAE,MAAM,CAAC,gBAAgB,IAC1B,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,KACxB,qBAAY,iBAAiB,IAAE,GAAG,CAAC,OAAO,CAAC,CAAM,CACpD,CAAC,CACD,CACI,CACX,EACR;AACN,CAAC;SAEe,gBAAgB,CAAC,MAAsB;IACnD,MAAM,gBAAgB,GAAI,MAAM,CAAC,WAAW,CAAC,UAAyB,CAAC,aAAa,CAChF,qBAAqB,CACxB,CAAC;IACF,MAAM,SAAS,GAAG,gBAAgB,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;IAC/D,SAAS,CAAC;QACN,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,QAAQ,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;QAErG,IAAI,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,GAAG,MAAM,IAAI;YAAE,OAAO;QAEhF,IAAI,MAAM,KAAK,CAAC,EAAE;YACd,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACrC,gBAAgB,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;SACnD;aAAM;YACH,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACxC,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,CAAC;SAC/D;KACJ,CAAC,CAAC;AACP,CAAC;MAEY,YAAY,GAAG;;IACxB,OAAO,MAAA,MAAA,MAAM,CAAC,cAAc,0CAAE,YAAY,kDAAI,CAAC;AACnD,EAAE;AAEF;MACa,WAAW,GAAG,CAAC,MAAa;IACrC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;QACnE,MAAM,CAAC,MAAM,GAAG,YAAY,MAAM,CAAC,KAAK,EAAgC,CAAC;QACzE,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC;KAC5B;AACL,EAAE;AAEF;;;;;;;;;;MAUa,UAAU,GAAG,OAAO,OAAO,EAAE,OAAO,GAAG,EAAE;IAClD,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IAExB,MAAM,IAAI,mBACN,IAAI,EAAE,IAAI,EACV,mBAAmB,EAAE,KAAK,EAC1B,kBAAkB,EAAE,KAAK,IACtB,OAAO,CACb,CAAC;IAEF,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;IACrF,MAAM,cAAc,GAAG,IAAI,OAAO,EAAE,CAAC;IACrC,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,eAAe,WAAW,CAAC,IAAI;;QAC3B,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;YAAE,OAAO;QAEvE,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;;QAGzB,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,EAAE;YAClC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;YAEpE,IAAI,IAAI,EAAE;;gBAEN,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;oBAC1D,MAAM,IAAI,GAAG,CAAC;iBACjB;;gBAGD,MAAM,IAAI,IAAI,CAAC,kBAAkB,GAAG,MAAA,MAAM,CAAC,cAAc,0CAAE,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;aACpF;YACD,OAAO;SACV;;QAGD,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY,EAAE;;YAErC,MAAM,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,OAAO,IAAI,CAAC,gBAAgB,KAAK,UAAU,CAAC;YAE1G,IAAI,kBAAkB,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;gBAChD,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;aACjC;;YAGD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,UAAU,EAAE;gBACjC,MAAM,WAAW,CAAC,KAAK,CAAC,CAAC;aAC5B;;YAGD,IAAI,IAAI,CAAC,UAAU,EAAE;gBACjB,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;oBAClD,MAAM,WAAW,CAAC,WAAW,CAAC,CAAC;iBAClC;aACJ;;YAGD,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,IAAI,OAAO,IAAI,CAAC,aAAa,KAAK,UAAU,EAAE;gBACtE,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;gBAE3C,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC1B,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE;wBAClC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;4BAC/B,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC;yBAC/B;qBACJ;iBACJ;qBAAM;;oBAEH,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE;wBACpC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;4BAC/B,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC;yBAC/B;qBACJ;iBACJ;aACJ;SACJ;KACJ;IAED,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;;IAG3B,IAAI,IAAI,CAAC,IAAI,EAAE;QACX,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;KAC1B;IAED,IAAI,IAAI,CAAC,mBAAmB,EAAE;QAC1B,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KACxC;IAED,OAAO,MAAM,CAAC;AAClB;;;;","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 const debounce = <F extends (...args: Parameters<F>) => ReturnType<F>>(fn: F, delay: number = 300) => {\n let timeout: ReturnType<typeof setTimeout>;\n return function (...args: Parameters<F>) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n fn(...args);\n }, delay);\n };\n};\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 renderLabel(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 renderMessages(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\n/**\n * Gets all translated text content from an element, including shadow DOM content\n *\n * @param {Element} element - The element to extract text from\n * @param {Object} options - Configuration options\n * @param {boolean} [options.trim=true] - Whether to trim whitespace\n * @param {boolean} [options.normalizeWhitespace=false] - Whether to normalize whitespace\n * @param {boolean} [options.skipComponentReady=false] - Skip waiting for components (for test environments)\n * @return {Promise<string>} All translated text content in DOM order\n */\nexport const getAllText = async (element, options = {}) => {\n if (!element) return '';\n\n const opts = {\n trim: true,\n normalizeWhitespace: false,\n skipComponentReady: false,\n ...options,\n };\n\n const nodesToSkip = new Set(['STYLE', 'SCRIPT', 'NOSCRIPT', 'TEMPLATE', '#comment']);\n const processedNodes = new WeakSet();\n let result = '';\n\n async function processNode(node) {\n if (processedNodes.has(node) || nodesToSkip.has(node.nodeName)) return;\n\n processedNodes.add(node);\n\n // Handle text nodes\n if (node.nodeType === Node.TEXT_NODE) {\n const text = opts.trim ? node.textContent.trim() : node.textContent;\n\n if (text) {\n // Add space between adjacent text nodes if needed\n if (result && !result.endsWith(' ') && !text.startsWith(' ')) {\n result += ' ';\n }\n\n // Translate the text\n result += opts.skipComponentReady ? window.TectonElements?.loc(text) : loc(text);\n }\n return;\n }\n\n // Handle element nodes\n if (node.nodeType === Node.ELEMENT_NODE) {\n // Wait for Stencil component if needed\n const isStencilComponent = node.nodeName.startsWith('Q2-') && typeof node.componentOnReady === 'function';\n\n if (isStencilComponent && !opts.skipComponentReady) {\n await node.componentOnReady();\n }\n\n // Process children in light DOM\n for (const child of node.childNodes) {\n await processNode(child);\n }\n\n // Process shadow DOM if present\n if (node.shadowRoot) {\n for (const shadowChild of node.shadowRoot.childNodes) {\n await processNode(shadowChild);\n }\n }\n\n // Handle slot elements with assigned nodes\n if (node.nodeName === 'SLOT' && typeof node.assignedNodes === 'function') {\n const assignedNodes = node.assignedNodes();\n\n if (assignedNodes.length > 0) {\n for (const assigned of assignedNodes) {\n if (!processedNodes.has(assigned)) {\n await processNode(assigned);\n }\n }\n } else {\n // Process slot fallback content\n for (const fallback of node.childNodes) {\n if (!processedNodes.has(fallback)) {\n await processNode(fallback);\n }\n }\n }\n }\n }\n }\n\n await processNode(element);\n\n // Apply final formatting\n if (opts.trim) {\n result = result.trim();\n }\n\n if (opts.normalizeWhitespace) {\n result = result.replace(/\\s+/g, ' ');\n }\n\n return result;\n};\n"],"version":3}