q2-tecton-elements 1.49.2 → 1.49.4

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 (363) hide show
  1. package/dist/cjs/click-elsewhere_2.cjs.entry.js +151 -148
  2. package/dist/cjs/click-elsewhere_2.cjs.entry.js.map +1 -1
  3. package/dist/cjs/{index-a93362ed.js → index-4b69f62d.js} +30 -18
  4. package/dist/{q2-tecton-elements/p-84190698.js.map → cjs/index-4b69f62d.js.map} +1 -1
  5. package/dist/cjs/{index-42fcd170.js → index-f69742cf.js} +1 -1
  6. package/dist/cjs/{index-42fcd170.js.map → index-f69742cf.js.map} +1 -1
  7. package/dist/cjs/loader.cjs.js +1 -1
  8. package/dist/cjs/q2-action-sheet.cjs.entry.js +2 -2
  9. package/dist/cjs/q2-avatar.cjs.entry.js +1 -1
  10. package/dist/cjs/q2-btn_2.cjs.entry.js +1 -1
  11. package/dist/cjs/q2-calendar.cjs.entry.js +3 -3
  12. package/dist/cjs/q2-card.cjs.entry.js +1 -1
  13. package/dist/cjs/q2-carousel-pane.cjs.entry.js +3 -3
  14. package/dist/cjs/q2-carousel.cjs.entry.js +2 -2
  15. package/dist/cjs/q2-chart-area.cjs.entry.js +2 -2
  16. package/dist/cjs/q2-chart-bar.cjs.entry.js +2 -2
  17. package/dist/cjs/q2-chart-donut.cjs.entry.js +2 -2
  18. package/dist/cjs/q2-checkbox-group.cjs.entry.js +2 -2
  19. package/dist/cjs/q2-checkbox.cjs.entry.js +2 -2
  20. package/dist/cjs/q2-currency.cjs.entry.js +1 -1
  21. package/dist/cjs/q2-data-table.cjs.entry.js +2 -2
  22. package/dist/cjs/q2-detail.cjs.entry.js +2 -2
  23. package/dist/cjs/q2-dropdown-item.cjs.entry.js +1 -1
  24. package/dist/cjs/q2-dropdown.cjs.entry.js +4 -2
  25. package/dist/cjs/q2-dropdown.cjs.entry.js.map +1 -1
  26. package/dist/cjs/q2-editable-field.cjs.entry.js +2 -2
  27. package/dist/cjs/q2-icon.cjs.entry.js +1 -1
  28. package/dist/cjs/q2-input.cjs.entry.js +2 -2
  29. package/dist/cjs/q2-item.cjs.entry.js +2 -2
  30. package/dist/cjs/q2-legend.cjs.entry.js +1 -1
  31. package/dist/cjs/q2-list.cjs.entry.js +2 -2
  32. package/dist/cjs/q2-loc.cjs.entry.js +2 -2
  33. package/dist/cjs/q2-message.cjs.entry.js +2 -2
  34. package/dist/cjs/q2-month-picker.cjs.entry.js +3 -3
  35. package/dist/cjs/q2-optgroup.cjs.entry.js +2 -2
  36. package/dist/cjs/q2-option-list.cjs.entry.js +13 -11
  37. package/dist/cjs/q2-option-list.cjs.entry.js.map +1 -1
  38. package/dist/cjs/q2-option.cjs.entry.js +1 -1
  39. package/dist/cjs/q2-pagination.cjs.entry.js +3 -3
  40. package/dist/cjs/q2-pill.cjs.entry.js +2 -2
  41. package/dist/cjs/q2-radio-group.cjs.entry.js +2 -2
  42. package/dist/cjs/q2-radio.cjs.entry.js +2 -2
  43. package/dist/cjs/q2-relative-time.cjs.entry.js +3 -3
  44. package/dist/cjs/q2-section.cjs.entry.js +3 -3
  45. package/dist/cjs/q2-select.cjs.entry.js +149 -30
  46. package/dist/cjs/q2-select.cjs.entry.js.map +1 -1
  47. package/dist/cjs/q2-stepper-pane.cjs.entry.js +2 -2
  48. package/dist/cjs/q2-stepper-vertical.cjs.entry.js +2 -2
  49. package/dist/cjs/q2-stepper.cjs.entry.js +2 -2
  50. package/dist/cjs/q2-tab-container.cjs.entry.js +2 -2
  51. package/dist/cjs/q2-tab-pane.cjs.entry.js +1 -1
  52. package/dist/cjs/q2-tag.cjs.entry.js +2 -2
  53. package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
  54. package/dist/cjs/q2-textarea.cjs.entry.js +2 -2
  55. package/dist/cjs/q2-tooltip.cjs.entry.js +1 -1
  56. package/dist/cjs/tecton-tab-pane.cjs.entry.js +2 -2
  57. package/dist/collection/collection-manifest.json +5 -5
  58. package/dist/collection/components/q2-action-sheet/q2-action-sheet.js +1 -1
  59. package/dist/collection/components/q2-avatar/q2-avatar.js +1 -1
  60. package/dist/collection/components/q2-calendar/q2-calendar.js +1 -1
  61. package/dist/collection/components/q2-calendar/q2-month-picker.js +2 -2
  62. package/dist/collection/components/q2-carousel/q2-carousel.js +1 -1
  63. package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.js +2 -2
  64. package/dist/collection/components/q2-chart-area/q2-chart-area.js +1 -1
  65. package/dist/collection/components/q2-chart-bar/q2-chart-bar.js +1 -1
  66. package/dist/collection/components/q2-chart-donut/q2-chart-donut.js +1 -1
  67. package/dist/collection/components/q2-checkbox/q2-checkbox.js +1 -1
  68. package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.js +1 -1
  69. package/dist/collection/components/q2-currency/q2-currency.js +1 -1
  70. package/dist/collection/components/q2-data-table/q2-data-table.js +7 -7
  71. package/dist/collection/components/q2-detail/q2-detail.js +1 -1
  72. package/dist/collection/components/q2-dropdown/q2-dropdown.js +3 -1
  73. package/dist/collection/components/q2-dropdown/q2-dropdown.js.map +1 -1
  74. package/dist/collection/components/q2-editable-field/q2-editable-field.js +1 -1
  75. package/dist/collection/components/q2-input/q2-input.js +2 -2
  76. package/dist/collection/components/q2-item/q2-item.js +1 -1
  77. package/dist/collection/components/q2-legend/q2-legend.js +1 -1
  78. package/dist/collection/components/q2-list/q2-list.js +1 -1
  79. package/dist/collection/components/q2-loc/q2-loc.js +1 -1
  80. package/dist/collection/components/q2-message/q2-message.js +1 -1
  81. package/dist/collection/components/q2-optgroup/q2-optgroup.js +1 -1
  82. package/dist/collection/components/q2-option/q2-option.js +1 -1
  83. package/dist/collection/components/q2-option-list/q2-option-list.js +15 -13
  84. package/dist/collection/components/q2-option-list/q2-option-list.js.map +1 -1
  85. package/dist/collection/components/q2-pagination/q2-pagination.js +2 -2
  86. package/dist/collection/components/q2-pill/q2-pill.js +1 -1
  87. package/dist/collection/components/q2-popover/q2-popover.css +18 -10
  88. package/dist/collection/components/q2-popover/q2-popover.js +207 -203
  89. package/dist/collection/components/q2-popover/q2-popover.js.map +1 -1
  90. package/dist/collection/components/q2-radio/q2-radio.js +1 -1
  91. package/dist/collection/components/q2-radio-group/q2-radio-group.js +1 -1
  92. package/dist/collection/components/q2-relative-time/q2-relative-time.js +1 -1
  93. package/dist/collection/components/q2-section/q2-section.js +2 -2
  94. package/dist/collection/components/q2-select/q2-select.js +187 -32
  95. package/dist/collection/components/q2-select/q2-select.js.map +1 -1
  96. package/dist/collection/components/q2-stepper/q2-stepper.js +1 -1
  97. package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.js +3 -3
  98. package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js +1 -1
  99. package/dist/collection/components/q2-tab-container/q2-tab-container.js +1 -1
  100. package/dist/collection/components/q2-tab-pane/q2-tab-pane.js +1 -1
  101. package/dist/collection/components/q2-tag/q2-tag.js +1 -1
  102. package/dist/collection/components/q2-textarea/q2-textarea.js +1 -1
  103. package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js +2 -2
  104. package/dist/collection/utils/index.js +46 -0
  105. package/dist/collection/utils/index.js.map +1 -1
  106. package/dist/components/index2.js +29 -17
  107. package/dist/components/index2.js.map +1 -1
  108. package/dist/components/q2-action-sheet.js +1 -1
  109. package/dist/components/q2-avatar2.js +1 -1
  110. package/dist/components/q2-calendar.js +1 -1
  111. package/dist/components/q2-carousel-pane.js +2 -2
  112. package/dist/components/q2-carousel.js +1 -1
  113. package/dist/components/q2-chart-area.js +1 -1
  114. package/dist/components/q2-chart-bar.js +1 -1
  115. package/dist/components/q2-chart-donut.js +1 -1
  116. package/dist/components/q2-checkbox-group.js +1 -1
  117. package/dist/components/q2-checkbox2.js +1 -1
  118. package/dist/components/q2-currency.js +1 -1
  119. package/dist/components/q2-data-table.js +1 -1
  120. package/dist/components/q2-detail.js +1 -1
  121. package/dist/components/q2-dropdown.js +3 -1
  122. package/dist/components/q2-dropdown.js.map +1 -1
  123. package/dist/components/q2-editable-field.js +1 -1
  124. package/dist/components/q2-input2.js +1 -1
  125. package/dist/components/q2-item.js +1 -1
  126. package/dist/components/q2-legend2.js +1 -1
  127. package/dist/components/q2-list.js +1 -1
  128. package/dist/components/q2-loc.js +1 -1
  129. package/dist/components/q2-message2.js +1 -1
  130. package/dist/components/q2-month-picker.js +2 -2
  131. package/dist/components/q2-optgroup2.js +1 -1
  132. package/dist/components/q2-option-list2.js +12 -10
  133. package/dist/components/q2-option-list2.js.map +1 -1
  134. package/dist/components/q2-option2.js +1 -1
  135. package/dist/components/q2-pagination.js +2 -2
  136. package/dist/components/q2-pill.js +1 -1
  137. package/dist/components/q2-popover2.js +158 -155
  138. package/dist/components/q2-popover2.js.map +1 -1
  139. package/dist/components/q2-radio-group.js +1 -1
  140. package/dist/components/q2-radio.js +1 -1
  141. package/dist/components/q2-relative-time.js +1 -1
  142. package/dist/components/q2-section.js +2 -2
  143. package/dist/components/q2-select2.js +153 -33
  144. package/dist/components/q2-select2.js.map +1 -1
  145. package/dist/components/q2-stepper-pane.js +1 -1
  146. package/dist/components/q2-stepper-vertical.js +1 -1
  147. package/dist/components/q2-stepper.js +1 -1
  148. package/dist/components/q2-tab-container.js +1 -1
  149. package/dist/components/q2-tab-pane.js +1 -1
  150. package/dist/components/q2-tag.js +1 -1
  151. package/dist/components/q2-textarea.js +1 -1
  152. package/dist/components/tecton-tab-pane.js +2 -2
  153. package/dist/esm/click-elsewhere_2.entry.js +151 -148
  154. package/dist/esm/click-elsewhere_2.entry.js.map +1 -1
  155. package/dist/esm/{index-1c019b24.js → index-3184c760.js} +1 -1
  156. package/dist/esm/{index-1c019b24.js.map → index-3184c760.js.map} +1 -1
  157. package/dist/esm/{index-3c5cd75e.js → index-73081b4d.js} +30 -18
  158. package/dist/esm/index-73081b4d.js.map +1 -0
  159. package/dist/esm/loader.js +1 -1
  160. package/dist/esm/q2-action-sheet.entry.js +2 -2
  161. package/dist/esm/q2-avatar.entry.js +1 -1
  162. package/dist/esm/q2-btn_2.entry.js +1 -1
  163. package/dist/esm/q2-calendar.entry.js +3 -3
  164. package/dist/esm/q2-card.entry.js +1 -1
  165. package/dist/esm/q2-carousel-pane.entry.js +3 -3
  166. package/dist/esm/q2-carousel.entry.js +2 -2
  167. package/dist/esm/q2-chart-area.entry.js +2 -2
  168. package/dist/esm/q2-chart-bar.entry.js +2 -2
  169. package/dist/esm/q2-chart-donut.entry.js +2 -2
  170. package/dist/esm/q2-checkbox-group.entry.js +2 -2
  171. package/dist/esm/q2-checkbox.entry.js +2 -2
  172. package/dist/esm/q2-currency.entry.js +1 -1
  173. package/dist/esm/q2-data-table.entry.js +2 -2
  174. package/dist/esm/q2-detail.entry.js +2 -2
  175. package/dist/esm/q2-dropdown-item.entry.js +1 -1
  176. package/dist/esm/q2-dropdown.entry.js +4 -2
  177. package/dist/esm/q2-dropdown.entry.js.map +1 -1
  178. package/dist/esm/q2-editable-field.entry.js +2 -2
  179. package/dist/esm/q2-icon.entry.js +1 -1
  180. package/dist/esm/q2-input.entry.js +2 -2
  181. package/dist/esm/q2-item.entry.js +2 -2
  182. package/dist/esm/q2-legend.entry.js +1 -1
  183. package/dist/esm/q2-list.entry.js +2 -2
  184. package/dist/esm/q2-loc.entry.js +2 -2
  185. package/dist/esm/q2-message.entry.js +2 -2
  186. package/dist/esm/q2-month-picker.entry.js +3 -3
  187. package/dist/esm/q2-optgroup.entry.js +2 -2
  188. package/dist/esm/q2-option-list.entry.js +13 -11
  189. package/dist/esm/q2-option-list.entry.js.map +1 -1
  190. package/dist/esm/q2-option.entry.js +1 -1
  191. package/dist/esm/q2-pagination.entry.js +3 -3
  192. package/dist/esm/q2-pill.entry.js +2 -2
  193. package/dist/esm/q2-radio-group.entry.js +2 -2
  194. package/dist/esm/q2-radio.entry.js +2 -2
  195. package/dist/esm/q2-relative-time.entry.js +3 -3
  196. package/dist/esm/q2-section.entry.js +3 -3
  197. package/dist/esm/q2-select.entry.js +150 -31
  198. package/dist/esm/q2-select.entry.js.map +1 -1
  199. package/dist/esm/q2-stepper-pane.entry.js +2 -2
  200. package/dist/esm/q2-stepper-vertical.entry.js +2 -2
  201. package/dist/esm/q2-stepper.entry.js +2 -2
  202. package/dist/esm/q2-tab-container.entry.js +2 -2
  203. package/dist/esm/q2-tab-pane.entry.js +1 -1
  204. package/dist/esm/q2-tag.entry.js +2 -2
  205. package/dist/esm/q2-tecton-elements.js +1 -1
  206. package/dist/esm/q2-textarea.entry.js +2 -2
  207. package/dist/esm/q2-tooltip.entry.js +1 -1
  208. package/dist/esm/tecton-tab-pane.entry.js +2 -2
  209. package/dist/jest.setup.js +33 -0
  210. package/dist/jest.setup.js.map +1 -0
  211. package/dist/q2-tecton-elements/{p-d8d9ba1f.entry.js → p-014c6454.entry.js} +2 -2
  212. package/dist/q2-tecton-elements/{p-e4b8f4b3.entry.js → p-01b436c4.entry.js} +2 -2
  213. package/dist/q2-tecton-elements/p-03fcf787.entry.js +2 -0
  214. package/dist/q2-tecton-elements/{p-a657277b.entry.js.map → p-03fcf787.entry.js.map} +1 -1
  215. package/dist/q2-tecton-elements/p-0b33965c.entry.js +2 -0
  216. package/dist/q2-tecton-elements/{p-4da4cb5d.entry.js.map → p-0b33965c.entry.js.map} +1 -1
  217. package/dist/q2-tecton-elements/{p-a177d812.entry.js → p-0c5ff345.entry.js} +2 -2
  218. package/dist/q2-tecton-elements/p-0d46b95e.js +2 -0
  219. package/dist/q2-tecton-elements/p-0d46b95e.js.map +1 -0
  220. package/dist/q2-tecton-elements/{p-db79c056.entry.js → p-152641b0.entry.js} +2 -2
  221. package/dist/q2-tecton-elements/p-19d02441.entry.js +2 -0
  222. package/dist/q2-tecton-elements/p-19d02441.entry.js.map +1 -0
  223. package/dist/q2-tecton-elements/p-1bb08555.entry.js +2 -0
  224. package/dist/q2-tecton-elements/p-1bb08555.entry.js.map +1 -0
  225. package/dist/q2-tecton-elements/{p-dbfab45b.entry.js → p-1be2778a.entry.js} +2 -2
  226. package/dist/q2-tecton-elements/{p-630613c7.entry.js → p-26a23f08.entry.js} +2 -2
  227. package/dist/q2-tecton-elements/{p-da711c59.entry.js → p-2a21bb2a.entry.js} +2 -2
  228. package/dist/q2-tecton-elements/{p-bbf9d36d.entry.js → p-2a471072.entry.js} +2 -2
  229. package/dist/q2-tecton-elements/{p-0852e6fe.entry.js → p-2cd69fc5.entry.js} +2 -2
  230. package/dist/q2-tecton-elements/{p-f6358905.entry.js → p-2cdc1c18.entry.js} +2 -2
  231. package/dist/q2-tecton-elements/p-3b8fbd85.entry.js +2 -0
  232. package/dist/q2-tecton-elements/p-3b8fbd85.entry.js.map +1 -0
  233. package/dist/q2-tecton-elements/{p-1e7fa870.entry.js → p-408f5dd0.entry.js} +2 -2
  234. package/dist/q2-tecton-elements/{p-ea7876eb.entry.js → p-45cf9f0b.entry.js} +2 -2
  235. package/dist/q2-tecton-elements/{p-08176bd0.entry.js → p-4635d8fd.entry.js} +2 -2
  236. package/dist/q2-tecton-elements/{p-333a41ca.entry.js → p-55554655.entry.js} +2 -2
  237. package/dist/q2-tecton-elements/{p-2bcb7e89.entry.js → p-6443ae6f.entry.js} +2 -2
  238. package/dist/q2-tecton-elements/{p-4388e521.entry.js → p-6c64c5e9.entry.js} +2 -2
  239. package/dist/q2-tecton-elements/{p-793a453e.entry.js → p-6e4b1bfe.entry.js} +2 -2
  240. package/dist/q2-tecton-elements/{p-da0cacef.entry.js → p-79cc72fc.entry.js} +2 -2
  241. package/dist/q2-tecton-elements/{p-c8b4f5f7.entry.js → p-7db2c188.entry.js} +2 -2
  242. package/dist/q2-tecton-elements/{p-9ecabc7a.entry.js → p-818fc8a7.entry.js} +2 -2
  243. package/dist/q2-tecton-elements/{p-9c589ab3.entry.js → p-835cf95a.entry.js} +2 -2
  244. package/dist/q2-tecton-elements/{p-e0a6baea.entry.js → p-88ae4e26.entry.js} +2 -2
  245. package/dist/q2-tecton-elements/{p-ec8a0b64.entry.js → p-8feb8b28.entry.js} +2 -2
  246. package/dist/q2-tecton-elements/p-926bf280.entry.js +2 -0
  247. package/dist/q2-tecton-elements/{p-9e90a38a.entry.js.map → p-926bf280.entry.js.map} +1 -1
  248. package/dist/q2-tecton-elements/{p-6c933b14.entry.js → p-97ab03d0.entry.js} +2 -2
  249. package/dist/q2-tecton-elements/{p-e44560d9.entry.js → p-9c9a2662.entry.js} +2 -2
  250. package/dist/q2-tecton-elements/{p-a8e7e591.entry.js → p-a531a983.entry.js} +2 -2
  251. package/dist/q2-tecton-elements/{p-baa2eaa9.entry.js → p-aa7d16b8.entry.js} +2 -2
  252. package/dist/q2-tecton-elements/{p-d78669df.entry.js → p-adf615fc.entry.js} +2 -2
  253. package/dist/q2-tecton-elements/{p-40df4468.entry.js → p-b6e531bb.entry.js} +2 -2
  254. package/dist/q2-tecton-elements/{p-e3ad770b.entry.js → p-b7805a04.entry.js} +2 -2
  255. package/dist/q2-tecton-elements/{p-77a763eb.entry.js → p-bdaa03ca.entry.js} +2 -2
  256. package/dist/q2-tecton-elements/{p-25bfe0b2.entry.js → p-be03e61f.entry.js} +2 -2
  257. package/dist/q2-tecton-elements/{p-05b30f98.entry.js → p-c08dba38.entry.js} +2 -2
  258. package/dist/q2-tecton-elements/{p-5037fa67.entry.js → p-dba6c931.entry.js} +2 -2
  259. package/dist/q2-tecton-elements/{p-93680d12.entry.js → p-e3d214f7.entry.js} +2 -2
  260. package/dist/q2-tecton-elements/{p-76b98623.entry.js → p-e5e9718c.entry.js} +2 -2
  261. package/dist/q2-tecton-elements/{p-2810ba28.entry.js → p-e844e6f1.entry.js} +2 -2
  262. package/dist/q2-tecton-elements/{p-7b9a6bb7.entry.js → p-ecddccef.entry.js} +2 -2
  263. package/dist/q2-tecton-elements/{p-be518818.js → p-f1e887f5.js} +1 -1
  264. package/dist/q2-tecton-elements/{p-c5aac064.entry.js → p-f6a9e28d.entry.js} +2 -2
  265. package/dist/q2-tecton-elements/{p-5775b02b.entry.js → p-fdf819d2.entry.js} +2 -2
  266. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
  267. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js.map +1 -1
  268. package/dist/test/elements/q2-calendar-test.e2e.js +2 -2
  269. package/dist/test/elements/q2-calendar-test.e2e.js.map +1 -1
  270. package/dist/test/elements/q2-dropdown-test.e2e.js +2 -14
  271. package/dist/test/elements/q2-dropdown-test.e2e.js.map +1 -1
  272. package/dist/test/elements/q2-pagination-test.e2e.js +1 -0
  273. package/dist/test/elements/q2-pagination-test.e2e.js.map +1 -1
  274. package/dist/test/elements/q2-pill-test.e2e.js +1 -1
  275. package/dist/test/elements/q2-pill-test.e2e.js.map +1 -1
  276. package/dist/test/elements/q2-popover-test.e2e.js +1 -34
  277. package/dist/test/elements/q2-popover-test.e2e.js.map +1 -1
  278. package/dist/test/elements/q2-popover-test.spec.js +902 -511
  279. package/dist/test/elements/q2-popover-test.spec.js.map +1 -1
  280. package/dist/test/elements/q2-select-test.e2e.js +1 -15
  281. package/dist/test/elements/q2-select-test.e2e.js.map +1 -1
  282. package/dist/test/elements/q2-select-test.spec.js +552 -0
  283. package/dist/test/elements/q2-select-test.spec.js.map +1 -0
  284. package/dist/test/elements/q2-tag-test.e2e.js +1 -1
  285. package/dist/test/elements/q2-tag-test.e2e.js.map +1 -1
  286. package/dist/types/builds/q2e/development/tecton/tecton/packages/q2-tecton-elements/.stencil/jest.setup.d.ts +10 -0
  287. package/dist/types/components/q2-action-sheet/q2-action-sheet.d.ts +60 -0
  288. package/dist/types/components/q2-calendar/q2-calendar.d.ts +324 -0
  289. package/dist/types/components/q2-carousel/q2-carousel.d.ts +2 -2
  290. package/dist/types/components/q2-data-table/q2-data-table.d.ts +223 -0
  291. package/dist/types/components/q2-dropdown/q2-dropdown.d.ts +130 -0
  292. package/dist/types/components/q2-dropdown-item/q2-dropdown-item.d.ts +50 -0
  293. package/dist/types/components/q2-editable-field/q2-editable-field.d.ts +140 -0
  294. package/dist/types/components/q2-loading/skeleton/shapes.d.ts +1 -0
  295. package/dist/types/components/q2-optgroup/q2-optgroup.d.ts +1 -1
  296. package/dist/types/components/q2-option-list/q2-option-list.d.ts +99 -0
  297. package/dist/types/components/q2-pagination/q2-pagination.d.ts +60 -0
  298. package/dist/types/components/q2-pill/q2-pill.d.ts +102 -0
  299. package/dist/types/components/q2-popover/q2-popover.d.ts +31 -31
  300. package/dist/types/components/q2-select/q2-select.d.ts +260 -0
  301. package/dist/types/components/q2-stepper/q2-stepper.d.ts +52 -0
  302. package/dist/types/components/q2-stepper-vertical/q2-stepper-vertical.d.ts +62 -0
  303. package/dist/types/components/q2-tab-container/q2-tab-container.d.ts +2 -2
  304. package/dist/types/components/q2-tag/q2-tag.d.ts +59 -0
  305. package/dist/types/components.d.ts +8 -0
  306. package/dist/types/utils/action-sheet.d.ts +12 -0
  307. package/dist/types/utils/index.d.ts +4 -0
  308. package/package.json +3 -3
  309. package/dist/cjs/index-a93362ed.js.map +0 -1
  310. package/dist/esm/index-3c5cd75e.js.map +0 -1
  311. package/dist/q2-tecton-elements/p-089a7a1e.entry.js +0 -2
  312. package/dist/q2-tecton-elements/p-089a7a1e.entry.js.map +0 -1
  313. package/dist/q2-tecton-elements/p-2e6669a7.entry.js +0 -2
  314. package/dist/q2-tecton-elements/p-2e6669a7.entry.js.map +0 -1
  315. package/dist/q2-tecton-elements/p-4da4cb5d.entry.js +0 -2
  316. package/dist/q2-tecton-elements/p-84190698.js +0 -2
  317. package/dist/q2-tecton-elements/p-9e90a38a.entry.js +0 -2
  318. package/dist/q2-tecton-elements/p-a657277b.entry.js +0 -2
  319. package/dist/q2-tecton-elements/p-d2d3d95b.entry.js +0 -2
  320. package/dist/q2-tecton-elements/p-d2d3d95b.entry.js.map +0 -1
  321. /package/dist/q2-tecton-elements/{p-d8d9ba1f.entry.js.map → p-014c6454.entry.js.map} +0 -0
  322. /package/dist/q2-tecton-elements/{p-e4b8f4b3.entry.js.map → p-01b436c4.entry.js.map} +0 -0
  323. /package/dist/q2-tecton-elements/{p-a177d812.entry.js.map → p-0c5ff345.entry.js.map} +0 -0
  324. /package/dist/q2-tecton-elements/{p-db79c056.entry.js.map → p-152641b0.entry.js.map} +0 -0
  325. /package/dist/q2-tecton-elements/{p-dbfab45b.entry.js.map → p-1be2778a.entry.js.map} +0 -0
  326. /package/dist/q2-tecton-elements/{p-630613c7.entry.js.map → p-26a23f08.entry.js.map} +0 -0
  327. /package/dist/q2-tecton-elements/{p-da711c59.entry.js.map → p-2a21bb2a.entry.js.map} +0 -0
  328. /package/dist/q2-tecton-elements/{p-bbf9d36d.entry.js.map → p-2a471072.entry.js.map} +0 -0
  329. /package/dist/q2-tecton-elements/{p-0852e6fe.entry.js.map → p-2cd69fc5.entry.js.map} +0 -0
  330. /package/dist/q2-tecton-elements/{p-f6358905.entry.js.map → p-2cdc1c18.entry.js.map} +0 -0
  331. /package/dist/q2-tecton-elements/{p-1e7fa870.entry.js.map → p-408f5dd0.entry.js.map} +0 -0
  332. /package/dist/q2-tecton-elements/{p-ea7876eb.entry.js.map → p-45cf9f0b.entry.js.map} +0 -0
  333. /package/dist/q2-tecton-elements/{p-08176bd0.entry.js.map → p-4635d8fd.entry.js.map} +0 -0
  334. /package/dist/q2-tecton-elements/{p-333a41ca.entry.js.map → p-55554655.entry.js.map} +0 -0
  335. /package/dist/q2-tecton-elements/{p-2bcb7e89.entry.js.map → p-6443ae6f.entry.js.map} +0 -0
  336. /package/dist/q2-tecton-elements/{p-4388e521.entry.js.map → p-6c64c5e9.entry.js.map} +0 -0
  337. /package/dist/q2-tecton-elements/{p-793a453e.entry.js.map → p-6e4b1bfe.entry.js.map} +0 -0
  338. /package/dist/q2-tecton-elements/{p-da0cacef.entry.js.map → p-79cc72fc.entry.js.map} +0 -0
  339. /package/dist/q2-tecton-elements/{p-c8b4f5f7.entry.js.map → p-7db2c188.entry.js.map} +0 -0
  340. /package/dist/q2-tecton-elements/{p-9ecabc7a.entry.js.map → p-818fc8a7.entry.js.map} +0 -0
  341. /package/dist/q2-tecton-elements/{p-9c589ab3.entry.js.map → p-835cf95a.entry.js.map} +0 -0
  342. /package/dist/q2-tecton-elements/{p-e0a6baea.entry.js.map → p-88ae4e26.entry.js.map} +0 -0
  343. /package/dist/q2-tecton-elements/{p-ec8a0b64.entry.js.map → p-8feb8b28.entry.js.map} +0 -0
  344. /package/dist/q2-tecton-elements/{p-6c933b14.entry.js.map → p-97ab03d0.entry.js.map} +0 -0
  345. /package/dist/q2-tecton-elements/{p-e44560d9.entry.js.map → p-9c9a2662.entry.js.map} +0 -0
  346. /package/dist/q2-tecton-elements/{p-a8e7e591.entry.js.map → p-a531a983.entry.js.map} +0 -0
  347. /package/dist/q2-tecton-elements/{p-baa2eaa9.entry.js.map → p-aa7d16b8.entry.js.map} +0 -0
  348. /package/dist/q2-tecton-elements/{p-d78669df.entry.js.map → p-adf615fc.entry.js.map} +0 -0
  349. /package/dist/q2-tecton-elements/{p-40df4468.entry.js.map → p-b6e531bb.entry.js.map} +0 -0
  350. /package/dist/q2-tecton-elements/{p-e3ad770b.entry.js.map → p-b7805a04.entry.js.map} +0 -0
  351. /package/dist/q2-tecton-elements/{p-77a763eb.entry.js.map → p-bdaa03ca.entry.js.map} +0 -0
  352. /package/dist/q2-tecton-elements/{p-25bfe0b2.entry.js.map → p-be03e61f.entry.js.map} +0 -0
  353. /package/dist/q2-tecton-elements/{p-05b30f98.entry.js.map → p-c08dba38.entry.js.map} +0 -0
  354. /package/dist/q2-tecton-elements/{p-5037fa67.entry.js.map → p-dba6c931.entry.js.map} +0 -0
  355. /package/dist/q2-tecton-elements/{p-93680d12.entry.js.map → p-e3d214f7.entry.js.map} +0 -0
  356. /package/dist/q2-tecton-elements/{p-76b98623.entry.js.map → p-e5e9718c.entry.js.map} +0 -0
  357. /package/dist/q2-tecton-elements/{p-2810ba28.entry.js.map → p-e844e6f1.entry.js.map} +0 -0
  358. /package/dist/q2-tecton-elements/{p-7b9a6bb7.entry.js.map → p-ecddccef.entry.js.map} +0 -0
  359. /package/dist/q2-tecton-elements/{p-be518818.js.map → p-f1e887f5.js.map} +0 -0
  360. /package/dist/q2-tecton-elements/{p-c5aac064.entry.js.map → p-f6a9e28d.entry.js.map} +0 -0
  361. /package/dist/q2-tecton-elements/{p-5775b02b.entry.js.map → p-fdf819d2.entry.js.map} +0 -0
  362. /package/dist/types/{workspace/workspace/tecton-production_release_1.49.x → builds/q2e/development/tecton/tecton}/packages/q2-tecton-elements/.stencil/test/elements/q2-detail/slot-component.d.ts +0 -0
  363. /package/dist/types/{workspace/workspace/tecton-production_release_1.49.x → builds/q2e/development/tecton/tecton}/packages/q2-tecton-elements/.stencil/test/helpers.d.ts +0 -0
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-14c3693c.js');
6
- const index$1 = require('./index-a93362ed.js');
6
+ const index$1 = require('./index-4b69f62d.js');
7
7
 
8
8
  const ClickElsewhere = class {
9
9
  constructor(hostRef) {
@@ -92,7 +92,7 @@ const ClickElsewhere = class {
92
92
  get hostElement() { return index.getElement(this); }
93
93
  };
94
94
 
95
- const q2PopoverCss = "*{box-sizing:border-box}*:active{outline:none}*:focus{outline:none;box-shadow:var(--const-double-focus-ring, 0 0 0 2px #ffffff, 0 0 0 4px #0066cc)}:host{box-shadow:none !important}::-moz-focus-inner{border:none}input,textarea,button{font-family:inherit;font-size:inherit;font-stretch:inherit}:host(.sr),:host(.sr) button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.sr,.sr button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.hidden{display:none}:host([hidden]){display:none}.invisible{visibility:hidden}.container{display:none}.show{display:block;position:fixed;z-index:var(--tct-popover-z-index, 50);margin:0;padding:0;overflow:auto;background:var(--tct-popover-background, var(--app-white, #ffffff));color:var(--tct-popover-font-color, var(--t-text, #4d4d4d));min-width:var(--tct-popover-min-width, 135px);margin-block:var(--tct-popover-margin-block, 0);box-shadow:var(--tct-popover-box-shadow, var(--app-shadow-1, 0px 0px 2px rgba(0, 0, 0, 0.12), 0px 2px 4px rgba(0, 0, 0, 0.14)));border-width:var(--tct-popover-border-width, 0);border-style:solid;border-color:var(--tct-popover-border-color, transparent);border-radius:var(--tct-popover-border-radius, 0);max-height:var(--comp-pop-max-height);left:var(--comp-pop-left);opacity:var(--comp-pop-opacity, 0);--comp-scrollbar-size:var(--tct-scrollbar-size, var(--t-scrollbar-size, var(--app-scale-1x, 5px)));--comp-scrollbar-border-radius:var(--tct-scrollbar-border-radius, var(--t-scrollbar-border-radius, var(--app-border-radius-1, 4px)));--comp-scrollbar-color:var(--tct-scrollbar-color, var(--t-scrollbar-color, var(--t-a11y-gray-color, #747474)));scrollbar-width:thin;scrollbar-color:var(--comp-scrollbar-color) transparent}:host([block]) .show{right:unset;width:var(--comp-pop-width);min-width:var(--tct-popover-min-width, unset)}:host([align=left]) .show{left:var(--comp-pop-left);right:unset}:host([align=right]) .show{right:var(--comp-pop-right);left:unset}.show.down{top:var(--tct-popover-top, var(--comp-pop-top));bottom:unset}.show.up{top:unset;bottom:var(--comp-pop-bottom)}.show.legacy{position:absolute}.show::-webkit-scrollbar{width:var(--comp-scrollbar-size);height:var(--comp-scrollbar-size);margin:5px}.show::-webkit-scrollbar-thumb{background:var(--comp-scrollbar-color);border-radius:var(--comp-scrollbar-border-radius)}.show::-webkit-scrollbar-track{background:transparent;border-radius:var(--comp-scrollbar-border-radius)}click-elsewhere{position:relative;display:block}";
95
+ const q2PopoverCss = "*{box-sizing:border-box}*:active{outline:none}*:focus{outline:none;box-shadow:var(--const-double-focus-ring, 0 0 0 2px #ffffff, 0 0 0 4px #0066cc)}:host{box-shadow:none !important}::-moz-focus-inner{border:none}input,textarea,button{font-family:inherit;font-size:inherit;font-stretch:inherit}:host(.sr),:host(.sr) button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.sr,.sr button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.hidden{display:none}:host([hidden]){display:none}.invisible{visibility:hidden}.legacy.container{display:none}.legacy.show{display:block;z-index:var(--tct-popover-z-index, 50)}:popover-open,.show{position:absolute;margin:0;padding:0;overflow:auto;background:var(--tct-popover-background, var(--app-white, #ffffff));color:var(--tct-popover-font-color, var(--t-text, #4d4d4d));min-width:var(--tct-popover-min-width, 135px);margin-block:var(--tct-popover-margin-block, 0);box-shadow:var(--tct-popover-box-shadow, var(--app-shadow-1, 0px 0px 2px rgba(0, 0, 0, 0.12), 0px 2px 4px rgba(0, 0, 0, 0.14)));border-width:var(--tct-popover-border-width, 0);border-style:solid;border-color:var(--tct-popover-border-color, transparent);border-radius:var(--tct-popover-border-radius, 0);max-height:var(--comp-pop-max-height);left:var(--comp-pop-left);opacity:var(--comp-pop-opacity, 0);--comp-scrollbar-size:var(--tct-scrollbar-size, var(--t-scrollbar-size, var(--app-scale-1x, 5px)));--comp-scrollbar-border-radius:var(--tct-scrollbar-border-radius, var(--t-scrollbar-border-radius, var(--app-border-radius-1, 4px)));--comp-scrollbar-color:var(--tct-scrollbar-color, var(--t-scrollbar-color, var(--t-a11y-gray-color, #747474)));scrollbar-width:thin;scrollbar-color:var(--comp-scrollbar-color) transparent}:popover-open.block,.show.block{right:unset;width:var(--comp-pop-width);min-width:var(--tct-popover-min-width, unset)}:popover-open.left,.show.left{left:var(--comp-pop-left);right:unset}:popover-open.right,.show.right{right:var(--comp-pop-right);left:unset}:popover-open.down,.show.down{top:var(--tct-popover-top, var(--comp-pop-top));bottom:unset}:popover-open.up,.show.up{top:unset;bottom:var(--comp-pop-bottom)}:popover-open::-webkit-scrollbar,.show::-webkit-scrollbar{width:var(--comp-scrollbar-size);height:var(--comp-scrollbar-size);margin:5px}:popover-open::-webkit-scrollbar-thumb,.show::-webkit-scrollbar-thumb{background:var(--comp-scrollbar-color);border-radius:var(--comp-scrollbar-border-radius)}:popover-open::-webkit-scrollbar-track,.show::-webkit-scrollbar-track{background:transparent;border-radius:var(--comp-scrollbar-border-radius)}click-elsewhere{position:relative;display:block}";
96
96
  const Q2PopoverStyle0 = q2PopoverCss;
97
97
 
98
98
  const Q2Popover = class {
@@ -103,13 +103,66 @@ const Q2Popover = class {
103
103
  * The number of pixels to leave between the popover and the edge of the viewport
104
104
  */
105
105
  this.displayBuffer = 10;
106
- /** remove when Popover API is supported in iOS */
107
106
  this.orientationChanged = false;
107
+ /// Helpers ///
108
108
  this.handleMinHeight = () => {
109
109
  if (this.minHeight) {
110
110
  index$1.handleDeprecationWarning(this, 'minHeight', 'prop');
111
111
  }
112
112
  };
113
+ this.handlePopoverToggleEvent = (event) => {
114
+ this.popoverStateChanged.emit({ open: event.newState === 'open' });
115
+ };
116
+ this.viewPortChanged = () => {
117
+ if (!this.open)
118
+ return;
119
+ this.determinePopDirection();
120
+ };
121
+ this.viewPortOrientationChanged = () => {
122
+ this.orientationChanged = true;
123
+ this.viewPortChanged();
124
+ };
125
+ this.setPopoverAPICSSProperties = async () => {
126
+ var _a, _b, _c, _d, _e, _f;
127
+ const { controlElement, containerElement, currentDirection, isModule, align } = this;
128
+ const { top: controlTop, bottom: controlBottom, left: controlLeft, right: controlRight, } = (_b = (_a = controlElement === null || controlElement === void 0 ? void 0 : controlElement.getBoundingClientRect) === null || _a === void 0 ? void 0 : _a.call(controlElement)) !== null && _b !== void 0 ? _b : {
129
+ top: 0,
130
+ bottom: 0,
131
+ left: 0,
132
+ right: 0,
133
+ };
134
+ const popoverLeft = controlLeft;
135
+ const popoverRight = ((_c = window === null || window === void 0 ? void 0 : window.visualViewport) === null || _c === void 0 ? void 0 : _c.width) - controlRight;
136
+ if (align === 'right') {
137
+ containerElement.style.setProperty('--comp-pop-right', `${popoverRight - window.scrollX}px`);
138
+ containerElement.style.setProperty('--comp-pop-left', 'unset');
139
+ }
140
+ else {
141
+ containerElement.style.setProperty('--comp-pop-left', `${popoverLeft + window.scrollX}px`);
142
+ containerElement.style.setProperty('--comp-pop-right', 'unset');
143
+ }
144
+ if (this.block)
145
+ containerElement.style.setProperty('--comp-pop-width', `${(controlElement === null || controlElement === void 0 ? void 0 : controlElement.offsetWidth) || 0}px`);
146
+ if (currentDirection === 'up') {
147
+ if (isModule) {
148
+ containerElement.style.setProperty('--comp-pop-bottom', `${window.innerHeight - controlTop}px`);
149
+ }
150
+ else {
151
+ containerElement.style.setProperty('--comp-pop-bottom', `${window.innerHeight - controlTop - ((_d = window === null || window === void 0 ? void 0 : window.visualViewport) === null || _d === void 0 ? void 0 : _d.offsetTop) - window.scrollY}px`);
152
+ }
153
+ }
154
+ if (currentDirection === 'down') {
155
+ if (isModule) {
156
+ containerElement.style.setProperty('--comp-pop-top', `${controlBottom}px`);
157
+ }
158
+ else {
159
+ containerElement.style.setProperty('--comp-pop-top', `${controlBottom + ((_f = (_e = window === null || window === void 0 ? void 0 : window.visualViewport) === null || _e === void 0 ? void 0 : _e.offsetTop) !== null && _f !== void 0 ? _f : 0) + window.scrollY}px`);
160
+ }
161
+ }
162
+ // Wait for one paint to prevent layout thrashing
163
+ await index$1.waitForNextPaint();
164
+ containerElement.style.setProperty('--comp-pop-opacity', '1');
165
+ };
113
166
  this.setAbsoluteCSSProperties = async () => {
114
167
  const { controlElement, containerElement, currentDirection, align } = this;
115
168
  if (align === 'right') {
@@ -134,83 +187,46 @@ const Q2Popover = class {
134
187
  await index$1.waitForNextPaint();
135
188
  containerElement.style.setProperty('--comp-pop-opacity', '1');
136
189
  };
137
- this.setFixedCSSProperties = async () => {
138
- var _a, _b;
139
- const { controlElement, containerElement, currentDirection, rootElementRect } = this;
140
- const { top: controlTop, bottom: controlBottom, left: controlLeft, right: controlRight, } = (_b = (_a = controlElement === null || controlElement === void 0 ? void 0 : controlElement.getBoundingClientRect) === null || _a === void 0 ? void 0 : _a.call(controlElement)) !== null && _b !== void 0 ? _b : {
141
- top: 0,
142
- bottom: 0,
143
- left: 0,
144
- right: 0,
145
- };
146
- const popoverLeft = controlLeft - rootElementRect.left;
147
- if (this.block)
148
- containerElement.style.setProperty('--comp-pop-width', `${controlElement.offsetWidth || 0}px`);
149
- containerElement.style.setProperty('--comp-pop-left', `${popoverLeft}px`);
150
- containerElement.style.setProperty('--comp-pop-right', `${rootElementRect.width + rootElementRect.left - controlRight}px`);
151
- if (currentDirection === 'up') {
152
- containerElement.style.setProperty('--comp-pop-bottom', `${rootElementRect.height + rootElementRect.top - controlTop}px`);
153
- }
154
- if (currentDirection === 'down') {
155
- containerElement.style.setProperty('--comp-pop-top', `${controlBottom - rootElementRect.top}px`);
156
- }
157
- // Wait for one paint to prevent layout thrashing
158
- await index$1.waitForNextPaint();
159
- containerElement.style.setProperty('--comp-pop-opacity', '1');
160
- };
161
- this.viewPortChanged = () => {
162
- if (!this.open)
163
- return;
164
- this.determinePopDirection();
165
- };
166
- this.viewPortOrientationChanged = () => {
167
- this.orientationChanged = true;
168
- this.viewPortChanged();
169
- };
170
- this.currentDirection = undefined;
171
- this.show = false;
172
- this.align = undefined;
190
+ this.direction = undefined;
191
+ this.align = 'left';
192
+ this.open = undefined;
173
193
  this.block = undefined;
174
194
  this.controlElement = undefined;
175
- this.direction = undefined;
176
- this.minHeight = undefined;
177
195
  this.mode = null;
178
- this.open = undefined;
196
+ this.minHeight = undefined;
197
+ this.currentDirection = undefined;
198
+ this.show = false;
179
199
  }
180
- // #endregion
181
- // #region Component Lifecycle Events
182
- disconnectedCallback() {
183
- this.removeViewportListeners();
200
+ /// Lifecycle hooks ///
201
+ componentWillLoad() {
202
+ if (!this.supportsPopoverAPI) {
203
+ console.warn('The Popover API is not supported in this browser. Please update your browser to the latest version. The component will use legacy mode.');
204
+ this.mode = 'legacy';
205
+ }
184
206
  }
185
207
  componentDidLoad() {
186
208
  this.handleMinHeight();
209
+ if (this.supportsPopoverAPI)
210
+ this.containerElement.addEventListener('toggle', this.handlePopoverToggleEvent);
187
211
  if (this.open)
188
212
  this.determinePopDirection();
189
213
  }
190
- // #endregion
191
- // #region Listeners
192
- popoverStateHandler(event) {
193
- const { detail: { open }, } = event;
194
- if (open === this.open)
195
- return;
196
- this.open = open;
197
- event.stopPropagation();
198
- }
199
- // #endregion
200
- // #region Public Methods API
201
- async scrollContainerTo(options) {
202
- this.containerElement.scrollTo(options);
214
+ disconnectedCallback() {
215
+ this.removeViewportListeners();
216
+ this.containerElement.removeEventListener('toggle', this.handlePopoverToggleEvent);
217
+ this.containerElement = null;
218
+ this.contentElement = null;
219
+ this.controlElement = null;
203
220
  }
221
+ /// Methods ///
204
222
  async toggle() {
205
223
  this.open = !this.open;
206
224
  }
207
- // #endregion
208
- // #region Watchers
209
- minHeightProvided() {
210
- this.handleMinHeight();
225
+ async scrollContainerTo(options) {
226
+ this.containerElement.scrollTo(options);
211
227
  }
228
+ /// Watchers ///
212
229
  async openChanged(open) {
213
- this.setRootElement();
214
230
  this.popoverStateChanged.emit({ open });
215
231
  if (open) {
216
232
  this.addViewportListeners();
@@ -219,14 +235,29 @@ const Q2Popover = class {
219
235
  else {
220
236
  this.removeViewportListeners();
221
237
  this.currentDirection = undefined;
222
- this.show = false;
238
+ if (this.mode === 'legacy' || !this.supportsPopoverAPI) {
239
+ this.show = false;
240
+ }
241
+ else {
242
+ this.containerElement.hidePopover();
243
+ }
223
244
  await index$1.waitForNextPaint();
224
245
  this.clearCSSProperties();
225
246
  }
226
247
  }
227
- // #endregion
228
- // #region Local Methods
229
- get actualDirection() {
248
+ minHeightProvided() {
249
+ this.handleMinHeight();
250
+ }
251
+ /// Listeners ///
252
+ popoverStateHandler(event) {
253
+ const { detail: { open }, } = event;
254
+ if (open === this.open)
255
+ return;
256
+ this.open = open;
257
+ event.stopPropagation();
258
+ }
259
+ /// Getters ///
260
+ get providedDirection() {
230
261
  const { direction } = this;
231
262
  switch (direction) {
232
263
  case 'up':
@@ -242,14 +273,26 @@ const Q2Popover = class {
242
273
  const hasPlatformDimensions = Object.keys((_b = (_a = window.Tecton) === null || _a === void 0 ? void 0 : _a.platformDimensions) !== null && _b !== void 0 ? _b : {}).length > 0;
243
274
  return isIframe && hasPlatformDimensions;
244
275
  }
276
+ get supportsPopoverAPI() {
277
+ return Object.hasOwn(HTMLElement.prototype, 'popover');
278
+ }
245
279
  addViewportListeners() {
246
280
  var _a;
247
281
  window.addEventListener('resize', this.viewPortOrientationChanged);
248
- // #region remove when Popover API is supported in iOS
249
- window.addEventListener('scroll', this.viewPortChanged, { passive: true, capture: true });
250
- (_a = screen === null || screen === void 0 ? void 0 : screen.orientation) === null || _a === void 0 ? void 0 : _a.addEventListener('change', this.viewPortOrientationChanged);
282
+ visualViewport === null || visualViewport === void 0 ? void 0 : visualViewport.addEventListener('resize', this.viewPortChanged);
283
+ if (index$1.isInScrollableContainer(this.hostElement) && !index$1.isMobile()) {
284
+ window.addEventListener('scroll', this.viewPortChanged, { passive: true, capture: true });
285
+ }
286
+ (_a = screen === null || screen === void 0 ? void 0 : screen.orientation) === null || _a === void 0 ? void 0 : _a.addEventListener('orientationchange', this.viewPortOrientationChanged);
251
287
  window.addEventListener('orientationchange', this.viewPortOrientationChanged);
252
- // #endregion
288
+ }
289
+ removeViewportListeners() {
290
+ var _a;
291
+ window.removeEventListener('resize', this.viewPortOrientationChanged);
292
+ visualViewport === null || visualViewport === void 0 ? void 0 : visualViewport.removeEventListener('resize', this.viewPortChanged);
293
+ window.removeEventListener('scroll', this.viewPortChanged, { capture: true });
294
+ (_a = screen === null || screen === void 0 ? void 0 : screen.orientation) === null || _a === void 0 ? void 0 : _a.removeEventListener('orientationchange', this.viewPortOrientationChanged);
295
+ window.removeEventListener('orientationchange', this.viewPortOrientationChanged);
253
296
  }
254
297
  clearCSSProperties() {
255
298
  this.containerElement.style.removeProperty('--comp-pop-max-height');
@@ -260,9 +303,25 @@ const Q2Popover = class {
260
303
  this.containerElement.style.removeProperty('--comp-pop-width');
261
304
  this.containerElement.style.removeProperty('--comp-pop-opacity');
262
305
  }
306
+ setDirectionAndShow(direction) {
307
+ // Due to some runtime inconsistency across devices/browsers we need to add one more check here because the
308
+ // popover can be closed between the time the popover is opened and the time the direction is determined
309
+ const isOpen = this.open;
310
+ if (!isOpen)
311
+ return;
312
+ this.currentDirection = direction;
313
+ if (this.mode === 'legacy' || !this.supportsPopoverAPI) {
314
+ this.show = true;
315
+ this.setAbsoluteCSSProperties();
316
+ }
317
+ else {
318
+ this.setPopoverAPICSSProperties();
319
+ this.containerElement.showPopover();
320
+ }
321
+ }
263
322
  async determinePopDirection() {
264
323
  var _a, _b, _c;
265
- const { containerElement, controlElement, actualDirection, displayBuffer } = this;
324
+ const { containerElement, controlElement, providedDirection, displayBuffer } = this;
266
325
  if (containerElement)
267
326
  containerElement.style.maxHeight = null;
268
327
  await index$1.waitForNextPaint();
@@ -275,20 +334,23 @@ const Q2Popover = class {
275
334
  let maxSpaceAbove;
276
335
  let maxSpaceBelow;
277
336
  if (isModule) {
278
- const { outletOffset = 0, innerHeight = window.innerHeight } = ((_c = window.Tecton) === null || _c === void 0 ? void 0 : _c.platformDimensions) || {};
279
- const distanceToIframeBottom = window.visualViewport.height - controlBottom;
280
- const viewableSpaceBelow = innerHeight - (outletOffset + controlBottom);
337
+ const { outletOffset = 0, innerHeight = window.innerHeight, top: topBarHeight = 0, bottom: bottomBarHeight = 0, } = ((_c = window.Tecton) === null || _c === void 0 ? void 0 : _c.platformDimensions) || {};
338
+ const distanceToIframeBottom = window.innerHeight - controlBottom;
339
+ // controlElement position visually on the page
340
+ const visualControlTop = outletOffset > 0 ? controlTop : controlTop + outletOffset - topBarHeight;
341
+ const visualControlBottom = outletOffset + controlBottom - topBarHeight;
342
+ // visual space around the controlElement
343
+ const viewableSpaceAbove = visualControlTop;
344
+ const viewableSpaceBelow = innerHeight - bottomBarHeight - visualControlBottom;
345
+ // calculate space above and below controlElement
281
346
  const isIframeShorterThanWindow = distanceToIframeBottom < viewableSpaceBelow;
282
- windowHeight = innerHeight;
283
- // If the top of the module is below the top of the window we just use the controlTop
284
- // Otherwise we need to add the outletOffset to the controlTop
285
- maxSpaceAbove = (outletOffset > 0 ? controlTop : controlTop + outletOffset) - displayBuffer;
347
+ maxSpaceAbove = viewableSpaceAbove - displayBuffer;
286
348
  maxSpaceBelow = isIframeShorterThanWindow
287
349
  ? distanceToIframeBottom - displayBuffer
288
350
  : viewableSpaceBelow - displayBuffer;
289
351
  }
290
352
  else {
291
- windowHeight = window.visualViewport.height;
353
+ windowHeight = window.innerHeight;
292
354
  maxSpaceAbove = controlTop - displayBuffer;
293
355
  maxSpaceBelow = windowHeight - controlBottom - displayBuffer;
294
356
  }
@@ -297,7 +359,7 @@ const Q2Popover = class {
297
359
  const shouldUpdateMaxHeight = !containerElement.style.getPropertyValue('--comp-pop-max-height') || this.orientationChanged;
298
360
  // we do not want to constantly update the max-height after an orientation change, so we switch this back to false
299
361
  this.orientationChanged = false;
300
- const currentOrDetermineDirection = this.currentDirection || actualDirection || directionWithMostSpace;
362
+ const currentOrDetermineDirection = this.currentDirection || providedDirection || directionWithMostSpace;
301
363
  switch (currentOrDetermineDirection) {
302
364
  case 'up':
303
365
  if (shouldUpdateMaxHeight) {
@@ -313,80 +375,21 @@ const Q2Popover = class {
313
375
  break;
314
376
  }
315
377
  }
316
- removeViewportListeners() {
317
- var _a;
318
- window.removeEventListener('resize', this.viewPortOrientationChanged);
319
- // #region remove when Popover API is supported in iOS
320
- window.removeEventListener('scroll', this.viewPortChanged);
321
- (_a = screen === null || screen === void 0 ? void 0 : screen.orientation) === null || _a === void 0 ? void 0 : _a.removeEventListener('orientationchange', this.viewPortOrientationChanged);
322
- window.removeEventListener('orientationchange', this.viewPortOrientationChanged);
323
- // #endregion
324
- }
325
- setDirectionAndShow(direction) {
326
- this.setRootElement();
327
- // Due to some runtime inconsistency across devices/browsers we need to add one more check here because the
328
- // popover can be closed between the time the popover is opened and the time the direction is determined
329
- const isOpen = this.open;
330
- if (!isOpen)
331
- return;
332
- this.currentDirection = direction;
333
- this.show = true;
334
- if (this.mode === 'legacy') {
335
- this.setAbsoluteCSSProperties();
336
- }
337
- else {
338
- this.setFixedCSSProperties();
339
- }
340
- }
341
- setRootElement() {
342
- let currentElement = this.hostElement;
343
- while (currentElement && currentElement !== document.documentElement) {
344
- const computedStyle = window.getComputedStyle(currentElement);
345
- // Check if the element has any styles applied that create a new containg block
346
- if (computedStyle.transform !== 'none' ||
347
- computedStyle.filter !== 'none' ||
348
- computedStyle.perspective !== 'none' ||
349
- computedStyle.containerType !== 'normal' ||
350
- ['transform', 'perspective', 'filter'].includes(computedStyle.willChange) ||
351
- ['layout', 'paint', 'strict', 'content'].includes(computedStyle.contain)) {
352
- this.rootElementRect = currentElement.getBoundingClientRect();
353
- return;
354
- }
355
- const rootNode = currentElement.getRootNode();
356
- const isRootNodeWebComponent = typeof ShadowRoot !== 'undefined' &&
357
- rootNode instanceof ShadowRoot &&
358
- rootNode.host instanceof HTMLElement;
359
- if (isRootNodeWebComponent) {
360
- currentElement = rootNode.host;
361
- }
362
- else {
363
- currentElement = currentElement.parentElement;
364
- }
365
- }
366
- // Return the document's bounding rect if no element is found
367
- this.rootElementRect = {
368
- top: 0,
369
- bottom: 0,
370
- left: 0,
371
- right: 0,
372
- height: window.visualViewport.height,
373
- width: window.visualViewport.width,
374
- };
375
- }
376
- // #endregion
377
- // #region Render Methods
378
+ /// DOM ///
378
379
  render() {
379
- const containerClasses = ['container', this.currentDirection];
380
+ const containerClasses = ['container', this.currentDirection, this.align];
380
381
  if (this.show)
381
382
  containerClasses.push('show');
383
+ if (this.block)
384
+ containerClasses.push('block');
382
385
  if (this.mode === 'legacy')
383
386
  containerClasses.push('legacy');
384
- return (index.h("div", { key: 'a58234dadb51baed9f1013b44ec6f1e2b3459cb0', ref: el => (this.containerElement = el), class: containerClasses.join(' '), "test-id": "outerContainer" }, index.h("div", { key: '50fb0083b7eeee5a654e0e9ef405d104cbe08b3c', ref: el => (this.contentElement = el), class: "content" }, index.h("slot", { key: 'c3a2cb60d4c19261cb5c8e568505d524f9405580' }))));
387
+ return (index.h("div", { key: 'b4cca12b46de7d0a8cd753163d4b08c4c0b88d47', ref: el => (this.containerElement = el), class: containerClasses.join(' '), "test-id": "outerContainer", tabIndex: -1, popover: "manual" }, index.h("div", { key: 'e9ff3b3d8511d0601e7bfe142042138535029aa9', ref: el => (this.contentElement = el), class: "content" }, index.h("slot", { key: 'c183a54fecb2e55d84ab2a0b39e7dbd4a4db6282' }))));
385
388
  }
386
389
  get hostElement() { return index.getElement(this); }
387
390
  static get watchers() { return {
388
- "minHeight": ["minHeightProvided"],
389
- "open": ["openChanged"]
391
+ "open": ["openChanged"],
392
+ "minHeight": ["minHeightProvided"]
390
393
  }; }
391
394
  };
392
395
  Q2Popover.style = Q2PopoverStyle0;
@@ -1 +1 @@
1
- {"file":"click-elsewhere.q2-popover.entry.cjs.js","mappings":"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","names":["handleDeprecationWarning","waitForNextPaint","h"],"sources":["src/components/click-elsewhere/click-elsewhere.tsx","src/components/q2-popover/q2-popover.scss?tag=q2-popover&encapsulation=shadow","src/components/q2-popover/q2-popover.tsx"],"sourcesContent":["import { Component, ComponentInterface, Element, Event, EventEmitter } from '@stencil/core';\n\n@Component({\n tag: 'click-elsewhere',\n shadow: false,\n})\nexport class ClickElsewhere implements ComponentInterface {\n // #region Own Properties\n\n isCurrentlyFocused: boolean = false;\n /**\n * Listens for mouse and window events that happen outside this click-elsewhere element so we can close popovers when users click outside them\n */\n mouseEventList: string[] = ['mousedown', 'dragstart', 'touchstart'];\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when the user clicks outside the element\n */\n @Event()\n change: EventEmitter;\n\n // #endregion\n // #region Component Lifecycle Events\n\n /* tslint:enable:no-empty */\n\n connectedCallback() {\n this.mouseEventList.forEach((eventName: string) => {\n document.addEventListener(eventName, this.mouseHandler);\n });\n window.addEventListener('blur', this.windowBlurHandler);\n }\n\n disconnectedCallback() {\n this.mouseEventList.forEach((eventName: string) => {\n document.removeEventListener(eventName, this.mouseHandler);\n });\n window.removeEventListener('blur', this.windowBlurHandler);\n }\n\n /* TODO: Stencil/Rollup is having issues compiling without this here. Will try to remove in future Stencil upgrade. */\n /* tslint:disable:no-empty */\n componentWillLoad() {}\n\n // #endregion\n // #region Local Methods\n\n findActiveElement(): Element | null {\n let workingElement = document.activeElement!;\n while (true) {\n if (!workingElement || !workingElement.shadowRoot) {\n return workingElement;\n }\n workingElement = workingElement.shadowRoot.activeElement;\n }\n }\n\n mouseHandler = (event: Event): void => {\n const isCurrentlyFocused = this.shadowContains(this.findActiveElement());\n const aboutToBeFocused =\n this.shadowContains(this.shadowEventTarget(event)) || this.originatesInSlots(event.target as Element);\n\n if (!aboutToBeFocused && (this.isCurrentlyFocused || isCurrentlyFocused)) {\n this.isCurrentlyFocused = false;\n this.change.emit();\n return;\n }\n this.isCurrentlyFocused = aboutToBeFocused || isCurrentlyFocused;\n };\n\n originatesInSlots(target: Element): boolean {\n const slots = this.hostElement.querySelectorAll('slot');\n for (const currentSlot of Array.from(slots)) {\n const lightNodes =\n (currentSlot && currentSlot.assignedNodes && currentSlot.assignedNodes()) ||\n this.hostElement.childNodes;\n\n for (const currentNode of Array.from(lightNodes)) {\n if (currentNode.contains(target)) {\n return true;\n }\n }\n }\n return false;\n }\n\n shadowContains(child: any): boolean {\n /**\n * shadow-dom enabled version of Node.contains()\n */\n\n while (true) {\n if (child === this.hostElement) {\n return true;\n }\n if (!child) {\n return false;\n }\n child = child.parentNode || child.host;\n }\n }\n\n shadowEventTarget(event: any): Element {\n return event.composedPath()[0] || event.target;\n }\n\n windowBlurHandler = (): void => {\n this.isCurrentlyFocused = false;\n this.change.emit();\n };\n}\n","@import '../../styles/host.scss';\n@import '../../styles/functions';\n\n.container {\n display: none;\n}\n\n.show {\n display: block;\n position: fixed;\n z-index: var-list(--tct-popover-z-index, 50);\n margin: 0;\n padding: 0;\n overflow: auto;\n background: var-list(--tct-popover-background, --app-white, #ffffff);\n color: var-list(--tct-popover-font-color, --t-text, #4d4d4d);\n min-width: var-list(--tct-popover-min-width, 135px);\n margin-block: var-list(--tct-popover-margin-block, 0);\n box-shadow: var-list(--tct-popover-box-shadow, --app-shadow-1, unquote(\"0px 0px 2px rgba(0, 0, 0, 0.12), 0px 2px 4px rgba(0, 0, 0, 0.14)\"));\n border-width: var-list(--tct-popover-border-width, 0);\n border-style: solid;\n border-color: var-list(--tct-popover-border-color, transparent);\n border-radius: var-list(--tct-popover-border-radius, 0);\n // the following --comp variables are set via JS\n max-height: var(--comp-pop-max-height);\n left: var(--comp-pop-left);\n opacity: var(--comp-pop-opacity, 0);\n\n :host([block]) & {\n right: unset;\n width: var(--comp-pop-width);\n min-width: var-list(--tct-popover-min-width, unset);\n }\n\n :host([align='left']) & {\n left: var(--comp-pop-left);\n right: unset;\n }\n\n :host([align='right']) & {\n right: var(--comp-pop-right);\n left: unset;\n }\n\n &.down {\n top: var-list(--tct-popover-top, --comp-pop-top);\n bottom: unset;\n }\n\n &.up {\n top: unset;\n bottom: var(--comp-pop-bottom);\n }\n\n &.legacy {\n position: absolute;\n }\n\n @include tiny-scrollbar();\n}\n\nclick-elsewhere {\n position: relative;\n display: block;\n}\n","import {\n Component,\n Prop,\n h,\n ComponentInterface,\n Element,\n Watch,\n Method,\n Listen,\n EventEmitter,\n Event,\n State,\n} from '@stencil/core';\nimport { handleDeprecationWarning, waitForNextPaint } from '../../utils';\n\n@Component({ tag: 'q2-popover', shadow: true, styleUrl: 'q2-popover.scss' })\nexport class Q2Popover implements ComponentInterface {\n // #region Own Properties\n\n containerElement: HTMLDivElement;\n contentElement: HTMLDivElement;\n /**\n * The number of pixels to leave between the popover and the edge of the viewport\n */\n displayBuffer = 10;\n /** remove when Popover API is supported in iOS */\n orientationChanged: boolean = false;\n rootElementRect: DOMRect;\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region State Properties\n\n @State()\n currentDirection: 'down' | 'up' = undefined;\n\n // remove `show` when Popover API is supported in iOS\n @State()\n show: boolean = false;\n\n // #endregion\n // #region Public Property API\n\n /** Aligns the popover to the left or right side of the control element. */\n @Prop({ reflect: true })\n align: 'left' | 'right';\n\n /** Indicates the popover will match the width of its parent element. */\n @Prop({ reflect: true })\n block: boolean;\n\n /** The element that controls the popover's behavior. */\n @Prop()\n controlElement: HTMLElement;\n\n /**\n * Force the direction of the popover when it opens.\n * If no value is passed, the component will auto-detect the direction based on available space.\n */\n @Prop({ reflect: true })\n direction: 'up' | 'down';\n\n /** @deprecated */\n @Prop()\n minHeight: number;\n\n @Prop()\n mode: 'legacy' = null;\n\n /** Controls whether the popover is open or closed. */\n @Prop({ reflect: true, mutable: true })\n open: boolean;\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when the popover is opened or closed.\n */\n @Event()\n popoverStateChanged: EventEmitter<{ open: boolean }>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback() {\n this.removeViewportListeners();\n }\n\n componentDidLoad() {\n this.handleMinHeight();\n if (this.open) this.determinePopDirection();\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('popoverState')\n popoverStateHandler(event: CustomEvent<{ open: boolean }>) {\n const {\n detail: { open },\n } = event;\n if (open === this.open) return;\n\n this.open = open;\n event.stopPropagation();\n }\n\n // #endregion\n // #region Public Methods API\n\n @Method()\n async scrollContainerTo(options: ScrollToOptions) {\n this.containerElement.scrollTo(options);\n }\n\n @Method()\n async toggle() {\n this.open = !this.open;\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('minHeight')\n minHeightProvided() {\n this.handleMinHeight();\n }\n\n @Watch('open')\n async openChanged(open: boolean) {\n this.setRootElement();\n this.popoverStateChanged.emit({ open });\n\n if (open) {\n this.addViewportListeners();\n this.determinePopDirection();\n } else {\n this.removeViewportListeners();\n this.currentDirection = undefined;\n this.show = false;\n await waitForNextPaint();\n this.clearCSSProperties();\n }\n }\n\n // #endregion\n // #region Local Methods\n\n get actualDirection(): 'up' | 'down' | undefined {\n const { direction } = this;\n switch (direction) {\n case 'up':\n case 'down':\n return direction;\n default:\n return undefined;\n }\n }\n\n get isModule() {\n const isIframe = window !== window.top;\n const hasPlatformDimensions = Object.keys(window.Tecton?.platformDimensions ?? {}).length > 0;\n return isIframe && hasPlatformDimensions;\n }\n\n addViewportListeners() {\n window.addEventListener('resize', this.viewPortOrientationChanged);\n // #region remove when Popover API is supported in iOS\n window.addEventListener('scroll', this.viewPortChanged, { passive: true, capture: true });\n screen?.orientation?.addEventListener('change', this.viewPortOrientationChanged);\n window.addEventListener('orientationchange', this.viewPortOrientationChanged);\n\n // #endregion\n }\n\n clearCSSProperties() {\n this.containerElement.style.removeProperty('--comp-pop-max-height');\n this.containerElement.style.removeProperty('--comp-pop-top');\n this.containerElement.style.removeProperty('--comp-pop-bottom');\n this.containerElement.style.removeProperty('--comp-pop-left');\n this.containerElement.style.removeProperty('--comp-pop-right');\n this.containerElement.style.removeProperty('--comp-pop-width');\n this.containerElement.style.removeProperty('--comp-pop-opacity');\n }\n\n async determinePopDirection() {\n const { containerElement, controlElement, actualDirection, displayBuffer } = this;\n if (containerElement) containerElement.style.maxHeight = null;\n\n await waitForNextPaint();\n\n const { isModule } = this;\n const { top: controlTop, bottom: controlBottom } = controlElement?.getBoundingClientRect?.() ?? {\n top: 0,\n bottom: 0,\n };\n\n let windowHeight: number;\n let maxSpaceAbove: number;\n let maxSpaceBelow: number;\n\n if (isModule) {\n const { outletOffset = 0, innerHeight = window.innerHeight } = window.Tecton?.platformDimensions || {};\n const distanceToIframeBottom = window.visualViewport.height - controlBottom;\n const viewableSpaceBelow = innerHeight - (outletOffset + controlBottom);\n const isIframeShorterThanWindow = distanceToIframeBottom < viewableSpaceBelow;\n windowHeight = innerHeight;\n // If the top of the module is below the top of the window we just use the controlTop\n // Otherwise we need to add the outletOffset to the controlTop\n maxSpaceAbove = (outletOffset > 0 ? controlTop : controlTop + outletOffset) - displayBuffer;\n maxSpaceBelow = isIframeShorterThanWindow\n ? distanceToIframeBottom - displayBuffer\n : viewableSpaceBelow - displayBuffer;\n } else {\n windowHeight = window.visualViewport.height;\n maxSpaceAbove = controlTop - displayBuffer;\n maxSpaceBelow = windowHeight - controlBottom - displayBuffer;\n }\n\n const directionWithMostSpace: 'up' | 'down' = maxSpaceAbove > maxSpaceBelow ? 'up' : 'down';\n\n // We do not want to update the max height once the popover is open unless the page orientation shifts (resize or mobile use cases)\n const shouldUpdateMaxHeight =\n !containerElement.style.getPropertyValue('--comp-pop-max-height') || this.orientationChanged;\n // we do not want to constantly update the max-height after an orientation change, so we switch this back to false\n this.orientationChanged = false;\n const currentOrDetermineDirection = this.currentDirection || actualDirection || directionWithMostSpace;\n\n switch (currentOrDetermineDirection) {\n case 'up':\n if (shouldUpdateMaxHeight) {\n containerElement.style.setProperty('--comp-pop-max-height', `${maxSpaceAbove}px`);\n }\n this.setDirectionAndShow('up');\n break;\n case 'down':\n if (shouldUpdateMaxHeight) {\n containerElement.style.setProperty('--comp-pop-max-height', `${maxSpaceBelow}px`);\n }\n this.setDirectionAndShow('down');\n break;\n default:\n break;\n }\n }\n\n handleMinHeight = () => {\n if (this.minHeight) {\n handleDeprecationWarning(this, 'minHeight', 'prop');\n }\n };\n\n removeViewportListeners() {\n window.removeEventListener('resize', this.viewPortOrientationChanged);\n // #region remove when Popover API is supported in iOS\n window.removeEventListener('scroll', this.viewPortChanged);\n screen?.orientation?.removeEventListener('orientationchange', this.viewPortOrientationChanged);\n window.removeEventListener('orientationchange', this.viewPortOrientationChanged);\n\n // #endregion\n }\n\n setAbsoluteCSSProperties = async () => {\n const { controlElement, containerElement, currentDirection, align } = this;\n\n if (align === 'right') {\n containerElement.style.setProperty('--comp-pop-right', '0');\n containerElement.style.setProperty('--comp-pop-left', 'unset');\n } else {\n containerElement.style.setProperty('--comp-pop-left', '0');\n containerElement.style.setProperty('--comp-pop-right', 'unset');\n }\n\n if (this.block) {\n containerElement.style.setProperty('--comp-pop-width', '100%');\n }\n\n if (currentDirection === 'up') {\n const controlStyle = getComputedStyle(controlElement);\n const controlSize =\n parseInt(controlStyle.height || '0') +\n parseInt(controlStyle.borderTopWidth || '0') +\n parseInt(controlStyle.borderBottomWidth || '0');\n\n containerElement.style.setProperty('--comp-pop-bottom', `${controlSize}px`);\n }\n\n // Wait for one paint to prevent layout thrashing\n await waitForNextPaint();\n containerElement.style.setProperty('--comp-pop-opacity', '1');\n };\n\n setDirectionAndShow(direction: 'up' | 'down') {\n this.setRootElement();\n // Due to some runtime inconsistency across devices/browsers we need to add one more check here because the\n // popover can be closed between the time the popover is opened and the time the direction is determined\n const isOpen = this.open;\n if (!isOpen) return;\n\n this.currentDirection = direction;\n this.show = true;\n if (this.mode === 'legacy') {\n this.setAbsoluteCSSProperties();\n } else {\n this.setFixedCSSProperties();\n }\n }\n\n setFixedCSSProperties = async () => {\n const { controlElement, containerElement, currentDirection, rootElementRect } = this;\n const {\n top: controlTop,\n bottom: controlBottom,\n left: controlLeft,\n right: controlRight,\n } = controlElement?.getBoundingClientRect?.() ?? {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n };\n const popoverLeft: number = controlLeft - rootElementRect.left;\n\n if (this.block) containerElement.style.setProperty('--comp-pop-width', `${controlElement.offsetWidth || 0}px`);\n containerElement.style.setProperty('--comp-pop-left', `${popoverLeft}px`);\n containerElement.style.setProperty(\n '--comp-pop-right',\n `${rootElementRect.width + rootElementRect.left - controlRight}px`\n );\n\n if (currentDirection === 'up') {\n containerElement.style.setProperty(\n '--comp-pop-bottom',\n `${rootElementRect.height + rootElementRect.top - controlTop}px`\n );\n }\n if (currentDirection === 'down') {\n containerElement.style.setProperty('--comp-pop-top', `${controlBottom - rootElementRect.top}px`);\n }\n\n // Wait for one paint to prevent layout thrashing\n await waitForNextPaint();\n containerElement.style.setProperty('--comp-pop-opacity', '1');\n };\n\n setRootElement() {\n let currentElement: HTMLElement = this.hostElement;\n\n while (currentElement && currentElement !== document.documentElement) {\n const computedStyle = window.getComputedStyle(currentElement);\n\n // Check if the element has any styles applied that create a new containg block\n if (\n computedStyle.transform !== 'none' ||\n computedStyle.filter !== 'none' ||\n computedStyle.perspective !== 'none' ||\n computedStyle.containerType !== 'normal' ||\n ['transform', 'perspective', 'filter'].includes(computedStyle.willChange) ||\n ['layout', 'paint', 'strict', 'content'].includes(computedStyle.contain)\n ) {\n this.rootElementRect = currentElement.getBoundingClientRect();\n return;\n }\n\n const rootNode = currentElement.getRootNode();\n const isRootNodeWebComponent =\n typeof ShadowRoot !== 'undefined' &&\n rootNode instanceof ShadowRoot &&\n rootNode.host instanceof HTMLElement;\n if (isRootNodeWebComponent) {\n currentElement = rootNode.host;\n } else {\n currentElement = currentElement.parentElement;\n }\n }\n\n // Return the document's bounding rect if no element is found\n this.rootElementRect = {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n height: window.visualViewport.height,\n width: window.visualViewport.width,\n } as DOMRect;\n }\n\n viewPortChanged = () => {\n if (!this.open) return;\n this.determinePopDirection();\n };\n\n viewPortOrientationChanged = () => {\n this.orientationChanged = true;\n this.viewPortChanged();\n };\n\n // #endregion\n // #region Render Methods\n\n render() {\n const containerClasses = ['container', this.currentDirection];\n if (this.show) containerClasses.push('show');\n if (this.mode === 'legacy') containerClasses.push('legacy');\n\n return (\n <div\n ref={el => (this.containerElement = el)}\n class={containerClasses.join(' ')}\n test-id=\"outerContainer\"\n >\n <div\n ref={el => (this.contentElement = el)}\n class=\"content\"\n >\n <slot />\n </div>\n </div>\n );\n }\n\n // #endregion\n}\n"],"version":3}
1
+ {"file":"click-elsewhere.q2-popover.entry.cjs.js","mappings":";;;;;;;MAMa,cAAc;IAJ3B;;;;QAOI,uBAAkB,GAAY,KAAK,CAAC;;;;QAIpC,mBAAc,GAAa,CAAC,WAAW,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;QAqDpE,iBAAY,GAAG,CAAC,KAAY;YACxB,MAAM,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;YACzE,MAAM,gBAAgB,GAClB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,MAAiB,CAAC,CAAC;YAE1G,IAAI,CAAC,gBAAgB,KAAK,IAAI,CAAC,kBAAkB,IAAI,kBAAkB,CAAC,EAAE;gBACtE,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;gBAChC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBACnB,OAAO;aACV;YACD,IAAI,CAAC,kBAAkB,GAAG,gBAAgB,IAAI,kBAAkB,CAAC;SACpE,CAAC;QAsCF,sBAAiB,GAAG;YAChB,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;YAChC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;SACtB,CAAC;KACL;;;;IApFG,iBAAiB;QACb,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,SAAiB;YAC1C,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;SAC3D,CAAC,CAAC;QACH,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;KAC3D;IAED,oBAAoB;QAChB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,SAAiB;YAC1C,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;SAC9D,CAAC,CAAC;QACH,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;KAC9D;;;IAID,iBAAiB,MAAK;;;IAKtB,iBAAiB;QACb,IAAI,cAAc,GAAG,QAAQ,CAAC,aAAc,CAAC;QAC7C,OAAO,IAAI,EAAE;YACT,IAAI,CAAC,cAAc,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE;gBAC/C,OAAO,cAAc,CAAC;aACzB;YACD,cAAc,GAAG,cAAc,CAAC,UAAU,CAAC,aAAa,CAAC;SAC5D;KACJ;IAeD,iBAAiB,CAAC,MAAe;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACxD,KAAK,MAAM,WAAW,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACzC,MAAM,UAAU,GACZ,CAAC,WAAW,IAAI,WAAW,CAAC,aAAa,IAAI,WAAW,CAAC,aAAa,EAAE;gBACxE,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;YAEhC,KAAK,MAAM,WAAW,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;gBAC9C,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;oBAC9B,OAAO,IAAI,CAAC;iBACf;aACJ;SACJ;QACD,OAAO,KAAK,CAAC;KAChB;IAED,cAAc,CAAC,KAAU;;;;QAKrB,OAAO,IAAI,EAAE;YACT,IAAI,KAAK,KAAK,IAAI,CAAC,WAAW,EAAE;gBAC5B,OAAO,IAAI,CAAC;aACf;YACD,IAAI,CAAC,KAAK,EAAE;gBACR,OAAO,KAAK,CAAC;aAChB;YACD,KAAK,GAAG,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,IAAI,CAAC;SAC1C;KACJ;IAED,iBAAiB,CAAC,KAAU;QACxB,OAAO,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC;KAClD;;;;ACjHL,MAAM,YAAY,GAAG,ytFAAytF,CAAC;AAC/uF,wBAAe,YAAY;;MCed,SAAS;;;;;;;QAyClB,kBAAa,GAAG,EAAE,CAAC;QAEnB,uBAAkB,GAAY,KAAK,CAAC;;QAmGpC,oBAAe,GAAG;YACd,IAAI,IAAI,CAAC,SAAS,EAAE;gBAChBA,gCAAwB,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;aACvD;SACJ,CAAC;QAEF,6BAAwB,GAAG,CAAC,KAAkB;YAC1C,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC,CAAC;SACtE,CAAC;QAEF,oBAAe,GAAG;YACd,IAAI,CAAC,IAAI,CAAC,IAAI;gBAAE,OAAO;YACvB,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAChC,CAAC;QAEF,+BAA0B,GAAG;YACzB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;YAC/B,IAAI,CAAC,eAAe,EAAE,CAAC;SAC1B,CAAC;QAoBF,+BAA0B,GAAG;;YACzB,MAAM,EAAE,cAAc,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;YACrF,MAAM,EACF,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,WAAW,EACjB,KAAK,EAAE,YAAY,GACtB,GAAG,MAAA,MAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,qBAAqB,8DAAI,mCAAI;gBAC7C,GAAG,EAAE,CAAC;gBACN,MAAM,EAAE,CAAC;gBACT,IAAI,EAAE,CAAC;gBACP,KAAK,EAAE,CAAC;aACX,CAAC;YAEF,MAAM,WAAW,GAAW,WAAW,CAAC;YACxC,MAAM,YAAY,GAAW,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,cAAc,0CAAE,KAAK,IAAG,YAAY,CAAC;YAE1E,IAAI,KAAK,KAAK,OAAO,EAAE;gBACnB,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,kBAAkB,EAAE,GAAG,YAAY,GAAG,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC;gBAC7F,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;aAClE;iBAAM;gBACH,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,iBAAiB,EAAE,GAAG,WAAW,GAAG,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC;gBAC3F,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;aACnE;YAED,IAAI,IAAI,CAAC,KAAK;gBAAE,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,kBAAkB,EAAE,GAAG,CAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,WAAW,KAAI,CAAC,IAAI,CAAC,CAAC;YAEhH,IAAI,gBAAgB,KAAK,IAAI,EAAE;gBAC3B,IAAI,QAAQ,EAAE;oBACV,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,mBAAmB,EAAE,GAAG,MAAM,CAAC,WAAW,GAAG,UAAU,IAAI,CAAC,CAAC;iBACnG;qBAAM;oBACH,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAC9B,mBAAmB,EACnB,GAAG,MAAM,CAAC,WAAW,GAAG,UAAU,IAAG,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,cAAc,0CAAE,SAAS,CAAA,GAAG,MAAM,CAAC,OAAO,IAAI,CAC9F,CAAC;iBACL;aACJ;YAED,IAAI,gBAAgB,KAAK,MAAM,EAAE;gBAC7B,IAAI,QAAQ,EAAE;oBACV,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,gBAAgB,EAAE,GAAG,aAAa,IAAI,CAAC,CAAC;iBAC9E;qBAAM;oBACH,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAC9B,gBAAgB,EAChB,GAAG,aAAa,IAAI,MAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,cAAc,0CAAE,SAAS,mCAAI,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,IAAI,CACnF,CAAC;iBACL;aACJ;;YAGD,MAAMC,wBAAgB,EAAE,CAAC;YACzB,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;SACjE,CAAC;QAEF,6BAAwB,GAAG;YACvB,MAAM,EAAE,cAAc,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;YAE3E,IAAI,KAAK,KAAK,OAAO,EAAE;gBACnB,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;gBAC5D,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;aAClE;iBAAM;gBACH,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;gBAC3D,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;aACnE;YAED,IAAI,IAAI,CAAC,KAAK,EAAE;gBACZ,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;aAClE;YAED,IAAI,gBAAgB,KAAK,IAAI,EAAE;gBAC3B,MAAM,YAAY,GAAG,gBAAgB,CAAC,cAAc,CAAC,CAAC;gBACtD,MAAM,WAAW,GACb,QAAQ,CAAC,YAAY,CAAC,MAAM,IAAI,GAAG,CAAC;oBACpC,QAAQ,CAAC,YAAY,CAAC,cAAc,IAAI,GAAG,CAAC;oBAC5C,QAAQ,CAAC,YAAY,CAAC,iBAAiB,IAAI,GAAG,CAAC,CAAC;gBAEpD,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,mBAAmB,EAAE,GAAG,WAAW,IAAI,CAAC,CAAC;aAC/E;;YAGD,MAAMA,wBAAgB,EAAE,CAAC;YACzB,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;SACjE,CAAC;;qBA9PiD,MAAM;;;;oBAWhC,IAAI;;gCAYc,SAAS;oBAE3B,KAAK;;;IAa9B,iBAAiB;QACb,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAC1B,OAAO,CAAC,IAAI,CACR,yIAAyI,CAC5I,CAAC;YACF,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;SACxB;KACJ;IAED,gBAAgB;QACZ,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,kBAAkB;YAAE,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAC7G,IAAI,IAAI,CAAC,IAAI;YAAE,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAC/C;IAED,oBAAoB;QAChB,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACnF,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;KAC9B;;IAID,MAAM,MAAM;QACR,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;KAC1B;IAGD,MAAM,iBAAiB,CAAC,OAAwB;QAC5C,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;KAC3C;;IAID,MAAM,WAAW,CAAC,IAAa;QAC3B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QAExC,IAAI,IAAI,EAAE;YACN,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAChC;aAAM;YACH,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC/B,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;YAClC,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;gBACpD,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;aACrB;iBAAM;gBACH,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;aACvC;YAED,MAAMA,wBAAgB,EAAE,CAAC;YACzB,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC7B;KACJ;IAGD,iBAAiB;QACb,IAAI,CAAC,eAAe,EAAE,CAAC;KAC1B;;IAID,mBAAmB,CAAC,KAAqC;QACrD,MAAM,EACF,MAAM,EAAE,EAAE,IAAI,EAAE,GACnB,GAAG,KAAK,CAAC;QACV,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI;YAAE,OAAO;QAE/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,KAAK,CAAC,eAAe,EAAE,CAAC;KAC3B;;IAGD,IAAI,iBAAiB;QACjB,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;QAC3B,QAAQ,SAAS;YACb,KAAK,IAAI,CAAC;YACV,KAAK,MAAM;gBACP,OAAO,SAAS,CAAC;YACrB;gBACI,OAAO,SAAS,CAAC;SACxB;KACJ;IAED,IAAI,QAAQ;;QACR,MAAM,QAAQ,GAAG,MAAM,KAAK,MAAM,CAAC,GAAG,CAAC;QACvC,MAAM,qBAAqB,GAAG,MAAM,CAAC,IAAI,CAAC,MAAA,MAAA,MAAM,CAAC,MAAM,0CAAE,kBAAkB,mCAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAC9F,OAAO,QAAQ,IAAI,qBAAqB,CAAC;KAC5C;IAED,IAAI,kBAAkB;QAClB,OAAO,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;KAC1D;IAuBD,oBAAoB;;QAChB,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACnE,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QACjE,IAAIC,+BAAuB,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAACC,gBAAQ,EAAE,EAAE;YAC1D,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;SAC7F;QACD,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,WAAW,0CAAE,gBAAgB,CAAC,mBAAmB,EAAE,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAC5F,MAAM,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,IAAI,CAAC,0BAA0B,CAAC,CAAC;KACjF;IAED,uBAAuB;;QACnB,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACtE,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QACpE,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9E,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,WAAW,0CAAE,mBAAmB,CAAC,mBAAmB,EAAE,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAC/F,MAAM,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,IAAI,CAAC,0BAA0B,CAAC,CAAC;KACpF;IAsFD,kBAAkB;QACd,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAC;QACpE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;QAC7D,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;QAChE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;QAC9D,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;QAC/D,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;QAC/D,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAC;KACpE;IAED,mBAAmB,CAAC,SAAwB;;;QAGxC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,MAAM;YAAE,OAAO;QAEpB,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;QAClC,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YACpD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,IAAI,CAAC,wBAAwB,EAAE,CAAC;SACnC;aAAM;YACH,IAAI,CAAC,0BAA0B,EAAE,CAAC;YAClC,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;SACvC;KACJ;IAED,MAAM,qBAAqB;;QACvB,MAAM,EAAE,gBAAgB,EAAE,cAAc,EAAE,iBAAiB,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;QACpF,IAAI,gBAAgB;YAAE,gBAAgB,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;QAC9D,MAAMF,wBAAgB,EAAE,CAAC;QAEzB,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QAC1B,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAA,MAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,qBAAqB,8DAAI,mCAAI;YAC5F,GAAG,EAAE,CAAC;YACN,MAAM,EAAE,CAAC;SACZ,CAAC;QAEF,IAAI,YAAoB,CAAC;QACzB,IAAI,aAAqB,CAAC;QAC1B,IAAI,aAAqB,CAAC;QAC1B,IAAI,QAAQ,EAAE;YACV,MAAM,EACF,YAAY,GAAG,CAAC,EAChB,WAAW,GAAG,MAAM,CAAC,WAAW,EAChC,GAAG,EAAE,YAAY,GAAG,CAAC,EACrB,MAAM,EAAE,eAAe,GAAG,CAAC,GAC9B,GAAG,CAAA,MAAA,MAAM,CAAC,MAAM,0CAAE,kBAAkB,KAAI,EAAE,CAAC;YAE5C,MAAM,sBAAsB,GAAG,MAAM,CAAC,WAAW,GAAG,aAAa,CAAC;;YAGlE,MAAM,gBAAgB,GAAG,YAAY,GAAG,CAAC,GAAG,UAAU,GAAG,UAAU,GAAG,YAAY,GAAG,YAAY,CAAC;YAClG,MAAM,mBAAmB,GAAG,YAAY,GAAG,aAAa,GAAG,YAAY,CAAC;;YAGxE,MAAM,kBAAkB,GAAG,gBAAgB,CAAC;YAC5C,MAAM,kBAAkB,GAAG,WAAW,GAAG,eAAe,GAAG,mBAAmB,CAAC;;YAG/E,MAAM,yBAAyB,GAAG,sBAAsB,GAAG,kBAAkB,CAAC;YAC9E,aAAa,GAAG,kBAAkB,GAAG,aAAa,CAAC;YACnD,aAAa,GAAG,yBAAyB;kBACnC,sBAAsB,GAAG,aAAa;kBACtC,kBAAkB,GAAG,aAAa,CAAC;SAC5C;aAAM;YACH,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC;YAClC,aAAa,GAAG,UAAU,GAAG,aAAa,CAAC;YAC3C,aAAa,GAAG,YAAY,GAAG,aAAa,GAAG,aAAa,CAAC;SAChE;QAED,MAAM,sBAAsB,GAAkB,aAAa,GAAG,aAAa,GAAG,IAAI,GAAG,MAAM,CAAC;;QAG5F,MAAM,qBAAqB,GACvB,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,IAAI,IAAI,CAAC,kBAAkB,CAAC;;QAEjG,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;QAChC,MAAM,2BAA2B,GAAG,IAAI,CAAC,gBAAgB,IAAI,iBAAiB,IAAI,sBAAsB,CAAC;QAEzG,QAAQ,2BAA2B;YAC/B,KAAK,IAAI;gBACL,IAAI,qBAAqB,EAAE;oBACvB,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,uBAAuB,EAAE,GAAG,aAAa,IAAI,CAAC,CAAC;iBACrF;gBACD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;gBAC/B,MAAM;YACV,KAAK,MAAM;gBACP,IAAI,qBAAqB,EAAE;oBACvB,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,uBAAuB,EAAE,GAAG,aAAa,IAAI,CAAC,CAAC;iBACrF;gBACD,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;gBACjC,MAAM;SAGb;KACJ;;IAGD,MAAM;QACF,MAAM,gBAAgB,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1E,IAAI,IAAI,CAAC,IAAI;YAAE,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,IAAI,CAAC,KAAK;YAAE,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ;YAAE,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE5D,QACIG,kEACI,GAAG,EAAE,EAAE,KAAK,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC,EACvC,KAAK,EAAE,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,aACzB,gBAAgB,EACxB,QAAQ,EAAE,CAAC,CAAC,EACZ,OAAO,EAAC,QAAQ,IAEhBA,kEACI,GAAG,EAAE,EAAE,KAAK,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC,EACrC,KAAK,EAAC,SAAS,IAEfA,oEAAQ,CACN,CACJ,EACR;KACL;;;;;;;;;;;;","names":["handleDeprecationWarning","waitForNextPaint","isInScrollableContainer","isMobile","h"],"sources":["src/components/click-elsewhere/click-elsewhere.tsx","src/components/q2-popover/q2-popover.scss?tag=q2-popover&encapsulation=shadow","src/components/q2-popover/q2-popover.tsx"],"sourcesContent":["import { Component, ComponentInterface, Element, Event, EventEmitter } from '@stencil/core';\n\n@Component({\n tag: 'click-elsewhere',\n shadow: false,\n})\nexport class ClickElsewhere implements ComponentInterface {\n // #region Own Properties\n\n isCurrentlyFocused: boolean = false;\n /**\n * Listens for mouse and window events that happen outside this click-elsewhere element so we can close popovers when users click outside them\n */\n mouseEventList: string[] = ['mousedown', 'dragstart', 'touchstart'];\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when the user clicks outside the element\n */\n @Event()\n change: EventEmitter;\n\n // #endregion\n // #region Component Lifecycle Events\n\n /* tslint:enable:no-empty */\n\n connectedCallback() {\n this.mouseEventList.forEach((eventName: string) => {\n document.addEventListener(eventName, this.mouseHandler);\n });\n window.addEventListener('blur', this.windowBlurHandler);\n }\n\n disconnectedCallback() {\n this.mouseEventList.forEach((eventName: string) => {\n document.removeEventListener(eventName, this.mouseHandler);\n });\n window.removeEventListener('blur', this.windowBlurHandler);\n }\n\n /* TODO: Stencil/Rollup is having issues compiling without this here. Will try to remove in future Stencil upgrade. */\n /* tslint:disable:no-empty */\n componentWillLoad() {}\n\n // #endregion\n // #region Local Methods\n\n findActiveElement(): Element | null {\n let workingElement = document.activeElement!;\n while (true) {\n if (!workingElement || !workingElement.shadowRoot) {\n return workingElement;\n }\n workingElement = workingElement.shadowRoot.activeElement;\n }\n }\n\n mouseHandler = (event: Event): void => {\n const isCurrentlyFocused = this.shadowContains(this.findActiveElement());\n const aboutToBeFocused =\n this.shadowContains(this.shadowEventTarget(event)) || this.originatesInSlots(event.target as Element);\n\n if (!aboutToBeFocused && (this.isCurrentlyFocused || isCurrentlyFocused)) {\n this.isCurrentlyFocused = false;\n this.change.emit();\n return;\n }\n this.isCurrentlyFocused = aboutToBeFocused || isCurrentlyFocused;\n };\n\n originatesInSlots(target: Element): boolean {\n const slots = this.hostElement.querySelectorAll('slot');\n for (const currentSlot of Array.from(slots)) {\n const lightNodes =\n (currentSlot && currentSlot.assignedNodes && currentSlot.assignedNodes()) ||\n this.hostElement.childNodes;\n\n for (const currentNode of Array.from(lightNodes)) {\n if (currentNode.contains(target)) {\n return true;\n }\n }\n }\n return false;\n }\n\n shadowContains(child: any): boolean {\n /**\n * shadow-dom enabled version of Node.contains()\n */\n\n while (true) {\n if (child === this.hostElement) {\n return true;\n }\n if (!child) {\n return false;\n }\n child = child.parentNode || child.host;\n }\n }\n\n shadowEventTarget(event: any): Element {\n return event.composedPath()[0] || event.target;\n }\n\n windowBlurHandler = (): void => {\n this.isCurrentlyFocused = false;\n this.change.emit();\n };\n}\n","@import '../../styles/host.scss';\n@import '../../styles/functions';\n\n.legacy {\n &.container {\n display: none;\n }\n\n &.show {\n display: block;\n z-index: var-list(--tct-popover-z-index, 50);\n }\n}\n\n:popover-open,\n.show {\n position: absolute;\n margin: 0;\n padding: 0;\n overflow: auto;\n background: var-list(--tct-popover-background, --app-white, #ffffff);\n color: var-list(--tct-popover-font-color, --t-text, #4d4d4d);\n min-width: var-list(--tct-popover-min-width, 135px);\n margin-block: var-list(--tct-popover-margin-block, 0);\n box-shadow: var-list(\n --tct-popover-box-shadow,\n --app-shadow-1,\n unquote('0px 0px 2px rgba(0, 0, 0, 0.12), 0px 2px 4px rgba(0, 0, 0, 0.14)')\n );\n border-width: var-list(--tct-popover-border-width, 0);\n border-style: solid;\n border-color: var-list(--tct-popover-border-color, transparent);\n border-radius: var-list(--tct-popover-border-radius, 0);\n // the --comp variables are set via JS\n max-height: var(--comp-pop-max-height);\n left: var(--comp-pop-left);\n opacity: var(--comp-pop-opacity, 0);\n\n &.block {\n right: unset;\n width: var(--comp-pop-width);\n min-width: var-list(--tct-popover-min-width, unset);\n }\n\n &.left {\n left: var(--comp-pop-left);\n right: unset;\n }\n\n &.right {\n right: var(--comp-pop-right);\n left: unset;\n }\n\n &.down {\n top: var-list(--tct-popover-top, --comp-pop-top);\n bottom: unset;\n }\n\n &.up {\n top: unset;\n bottom: var(--comp-pop-bottom);\n }\n\n @include tiny-scrollbar();\n}\n\nclick-elsewhere {\n position: relative;\n display: block;\n}\n","import {\n Component,\n Prop,\n h,\n ComponentInterface,\n Element,\n Watch,\n Method,\n Listen,\n EventEmitter,\n Event,\n State,\n} from '@stencil/core';\nimport { handleDeprecationWarning, waitForNextPaint, isMobile, isInScrollableContainer } from '../../utils';\n\n@Component({ tag: 'q2-popover', shadow: true, styleUrl: 'q2-popover.scss' })\nexport class Q2Popover implements ComponentInterface {\n /**\n * Force the direction of the popover when it opens.\n * If no value is passed, the component will auto-detect the direction based on available space.\n */\n @Prop({ reflect: true }) direction: 'up' | 'down';\n\n /** Aligns the popover to the left or right side of the control element. */\n @Prop({ reflect: true }) align: 'left' | 'right' = 'left';\n\n /** Controls whether the popover is open or closed. */\n @Prop({ reflect: true, mutable: true }) open: boolean;\n\n /** Indicates the popover will match the width of its parent element. */\n @Prop({ reflect: true }) block: boolean;\n\n /** The element that controls the popover's behavior. */\n @Prop() controlElement: HTMLElement;\n\n @Prop() mode: 'legacy' = null;\n\n /** @deprecated */\n @Prop() minHeight: number;\n\n @Element() hostElement: HTMLElement;\n\n /**\n * Emitted when the popover is opened or closed.\n */\n @Event() popoverStateChanged: EventEmitter<{ open: boolean }>;\n\n @State() currentDirection: 'down' | 'up' = undefined;\n // remove `show` when Popover API is supported in iOS\n @State() show: boolean = false;\n\n containerElement: HTMLDivElement;\n contentElement: HTMLDivElement;\n\n /**\n * The number of pixels to leave between the popover and the edge of the viewport\n */\n displayBuffer = 10;\n\n orientationChanged: boolean = false;\n\n /// Lifecycle hooks ///\n componentWillLoad() {\n if (!this.supportsPopoverAPI) {\n console.warn(\n 'The Popover API is not supported in this browser. Please update your browser to the latest version. The component will use legacy mode.'\n );\n this.mode = 'legacy';\n }\n }\n\n componentDidLoad() {\n this.handleMinHeight();\n if (this.supportsPopoverAPI) this.containerElement.addEventListener('toggle', this.handlePopoverToggleEvent);\n if (this.open) this.determinePopDirection();\n }\n\n disconnectedCallback() {\n this.removeViewportListeners();\n this.containerElement.removeEventListener('toggle', this.handlePopoverToggleEvent);\n this.containerElement = null;\n this.contentElement = null;\n this.controlElement = null;\n }\n\n /// Methods ///\n @Method()\n async toggle() {\n this.open = !this.open;\n }\n\n @Method()\n async scrollContainerTo(options: ScrollToOptions) {\n this.containerElement.scrollTo(options);\n }\n\n /// Watchers ///\n @Watch('open')\n async openChanged(open: boolean) {\n this.popoverStateChanged.emit({ open });\n\n if (open) {\n this.addViewportListeners();\n this.determinePopDirection();\n } else {\n this.removeViewportListeners();\n this.currentDirection = undefined;\n if (this.mode === 'legacy' || !this.supportsPopoverAPI) {\n this.show = false;\n } else {\n this.containerElement.hidePopover();\n }\n\n await waitForNextPaint();\n this.clearCSSProperties();\n }\n }\n\n @Watch('minHeight')\n minHeightProvided() {\n this.handleMinHeight();\n }\n\n /// Listeners ///\n @Listen('popoverState')\n popoverStateHandler(event: CustomEvent<{ open: boolean }>) {\n const {\n detail: { open },\n } = event;\n if (open === this.open) return;\n\n this.open = open;\n event.stopPropagation();\n }\n\n /// Getters ///\n get providedDirection(): 'up' | 'down' | undefined {\n const { direction } = this;\n switch (direction) {\n case 'up':\n case 'down':\n return direction;\n default:\n return undefined;\n }\n }\n\n get isModule() {\n const isIframe = window !== window.top;\n const hasPlatformDimensions = Object.keys(window.Tecton?.platformDimensions ?? {}).length > 0;\n return isIframe && hasPlatformDimensions;\n }\n\n get supportsPopoverAPI(): boolean {\n return Object.hasOwn(HTMLElement.prototype, 'popover');\n }\n\n /// Helpers ///\n handleMinHeight = () => {\n if (this.minHeight) {\n handleDeprecationWarning(this, 'minHeight', 'prop');\n }\n };\n\n handlePopoverToggleEvent = (event: ToggleEvent) => {\n this.popoverStateChanged.emit({ open: event.newState === 'open' });\n };\n\n viewPortChanged = () => {\n if (!this.open) return;\n this.determinePopDirection();\n };\n\n viewPortOrientationChanged = () => {\n this.orientationChanged = true;\n this.viewPortChanged();\n };\n\n addViewportListeners() {\n window.addEventListener('resize', this.viewPortOrientationChanged);\n visualViewport?.addEventListener('resize', this.viewPortChanged);\n if (isInScrollableContainer(this.hostElement) && !isMobile()) {\n window.addEventListener('scroll', this.viewPortChanged, { passive: true, capture: true });\n }\n screen?.orientation?.addEventListener('orientationchange', this.viewPortOrientationChanged);\n window.addEventListener('orientationchange', this.viewPortOrientationChanged);\n }\n\n removeViewportListeners() {\n window.removeEventListener('resize', this.viewPortOrientationChanged);\n visualViewport?.removeEventListener('resize', this.viewPortChanged);\n window.removeEventListener('scroll', this.viewPortChanged, { capture: true });\n screen?.orientation?.removeEventListener('orientationchange', this.viewPortOrientationChanged);\n window.removeEventListener('orientationchange', this.viewPortOrientationChanged);\n }\n\n setPopoverAPICSSProperties = async () => {\n const { controlElement, containerElement, currentDirection, isModule, align } = this;\n const {\n top: controlTop,\n bottom: controlBottom,\n left: controlLeft,\n right: controlRight,\n } = controlElement?.getBoundingClientRect?.() ?? {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n };\n\n const popoverLeft: number = controlLeft;\n const popoverRight: number = window?.visualViewport?.width - controlRight;\n\n if (align === 'right') {\n containerElement.style.setProperty('--comp-pop-right', `${popoverRight - window.scrollX}px`);\n containerElement.style.setProperty('--comp-pop-left', 'unset');\n } else {\n containerElement.style.setProperty('--comp-pop-left', `${popoverLeft + window.scrollX}px`);\n containerElement.style.setProperty('--comp-pop-right', 'unset');\n }\n\n if (this.block) containerElement.style.setProperty('--comp-pop-width', `${controlElement?.offsetWidth || 0}px`);\n\n if (currentDirection === 'up') {\n if (isModule) {\n containerElement.style.setProperty('--comp-pop-bottom', `${window.innerHeight - controlTop}px`);\n } else {\n containerElement.style.setProperty(\n '--comp-pop-bottom',\n `${window.innerHeight - controlTop - window?.visualViewport?.offsetTop - window.scrollY}px`\n );\n }\n }\n\n if (currentDirection === 'down') {\n if (isModule) {\n containerElement.style.setProperty('--comp-pop-top', `${controlBottom}px`);\n } else {\n containerElement.style.setProperty(\n '--comp-pop-top',\n `${controlBottom + (window?.visualViewport?.offsetTop ?? 0) + window.scrollY}px`\n );\n }\n }\n\n // Wait for one paint to prevent layout thrashing\n await waitForNextPaint();\n containerElement.style.setProperty('--comp-pop-opacity', '1');\n };\n\n setAbsoluteCSSProperties = async () => {\n const { controlElement, containerElement, currentDirection, align } = this;\n\n if (align === 'right') {\n containerElement.style.setProperty('--comp-pop-right', '0');\n containerElement.style.setProperty('--comp-pop-left', 'unset');\n } else {\n containerElement.style.setProperty('--comp-pop-left', '0');\n containerElement.style.setProperty('--comp-pop-right', 'unset');\n }\n\n if (this.block) {\n containerElement.style.setProperty('--comp-pop-width', '100%');\n }\n\n if (currentDirection === 'up') {\n const controlStyle = getComputedStyle(controlElement);\n const controlSize =\n parseInt(controlStyle.height || '0') +\n parseInt(controlStyle.borderTopWidth || '0') +\n parseInt(controlStyle.borderBottomWidth || '0');\n\n containerElement.style.setProperty('--comp-pop-bottom', `${controlSize}px`);\n }\n\n // Wait for one paint to prevent layout thrashing\n await waitForNextPaint();\n containerElement.style.setProperty('--comp-pop-opacity', '1');\n };\n\n clearCSSProperties() {\n this.containerElement.style.removeProperty('--comp-pop-max-height');\n this.containerElement.style.removeProperty('--comp-pop-top');\n this.containerElement.style.removeProperty('--comp-pop-bottom');\n this.containerElement.style.removeProperty('--comp-pop-left');\n this.containerElement.style.removeProperty('--comp-pop-right');\n this.containerElement.style.removeProperty('--comp-pop-width');\n this.containerElement.style.removeProperty('--comp-pop-opacity');\n }\n\n setDirectionAndShow(direction: 'up' | 'down') {\n // Due to some runtime inconsistency across devices/browsers we need to add one more check here because the\n // popover can be closed between the time the popover is opened and the time the direction is determined\n const isOpen = this.open;\n if (!isOpen) return;\n\n this.currentDirection = direction;\n if (this.mode === 'legacy' || !this.supportsPopoverAPI) {\n this.show = true;\n this.setAbsoluteCSSProperties();\n } else {\n this.setPopoverAPICSSProperties();\n this.containerElement.showPopover();\n }\n }\n\n async determinePopDirection() {\n const { containerElement, controlElement, providedDirection, displayBuffer } = this;\n if (containerElement) containerElement.style.maxHeight = null;\n await waitForNextPaint();\n\n const { isModule } = this;\n const { top: controlTop, bottom: controlBottom } = controlElement?.getBoundingClientRect?.() ?? {\n top: 0,\n bottom: 0,\n };\n\n let windowHeight: number;\n let maxSpaceAbove: number;\n let maxSpaceBelow: number;\n if (isModule) {\n const {\n outletOffset = 0,\n innerHeight = window.innerHeight,\n top: topBarHeight = 0,\n bottom: bottomBarHeight = 0,\n } = window.Tecton?.platformDimensions || {};\n\n const distanceToIframeBottom = window.innerHeight - controlBottom;\n\n // controlElement position visually on the page\n const visualControlTop = outletOffset > 0 ? controlTop : controlTop + outletOffset - topBarHeight;\n const visualControlBottom = outletOffset + controlBottom - topBarHeight;\n\n // visual space around the controlElement\n const viewableSpaceAbove = visualControlTop;\n const viewableSpaceBelow = innerHeight - bottomBarHeight - visualControlBottom;\n\n // calculate space above and below controlElement\n const isIframeShorterThanWindow = distanceToIframeBottom < viewableSpaceBelow;\n maxSpaceAbove = viewableSpaceAbove - displayBuffer;\n maxSpaceBelow = isIframeShorterThanWindow\n ? distanceToIframeBottom - displayBuffer\n : viewableSpaceBelow - displayBuffer;\n } else {\n windowHeight = window.innerHeight;\n maxSpaceAbove = controlTop - displayBuffer;\n maxSpaceBelow = windowHeight - controlBottom - displayBuffer;\n }\n\n const directionWithMostSpace: 'up' | 'down' = maxSpaceAbove > maxSpaceBelow ? 'up' : 'down';\n\n // We do not want to update the max height once the popover is open unless the page orientation shifts (resize or mobile use cases)\n const shouldUpdateMaxHeight =\n !containerElement.style.getPropertyValue('--comp-pop-max-height') || this.orientationChanged;\n // we do not want to constantly update the max-height after an orientation change, so we switch this back to false\n this.orientationChanged = false;\n const currentOrDetermineDirection = this.currentDirection || providedDirection || directionWithMostSpace;\n\n switch (currentOrDetermineDirection) {\n case 'up':\n if (shouldUpdateMaxHeight) {\n containerElement.style.setProperty('--comp-pop-max-height', `${maxSpaceAbove}px`);\n }\n this.setDirectionAndShow('up');\n break;\n case 'down':\n if (shouldUpdateMaxHeight) {\n containerElement.style.setProperty('--comp-pop-max-height', `${maxSpaceBelow}px`);\n }\n this.setDirectionAndShow('down');\n break;\n default:\n break;\n }\n }\n\n /// DOM ///\n render() {\n const containerClasses = ['container', this.currentDirection, this.align];\n if (this.show) containerClasses.push('show');\n if (this.block) containerClasses.push('block');\n if (this.mode === 'legacy') containerClasses.push('legacy');\n\n return (\n <div\n ref={el => (this.containerElement = el)}\n class={containerClasses.join(' ')}\n test-id=\"outerContainer\"\n tabIndex={-1}\n popover=\"manual\"\n >\n <div\n ref={el => (this.contentElement = el)}\n class=\"content\"\n >\n <slot />\n </div>\n </div>\n );\n }\n}\n"],"version":3}