q2-tecton-elements 1.54.6 → 1.54.7

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 (364) hide show
  1. package/dist/bundle-report.json +100 -45
  2. package/dist/cjs/loader.cjs.js +1 -1
  3. package/dist/cjs/q2-action-group.cjs.entry.js +1 -1
  4. package/dist/cjs/q2-action-sheet.cjs.entry.js +1 -1
  5. package/dist/cjs/q2-avatar.cjs.entry.js +1 -1
  6. package/dist/cjs/q2-badge_7.cjs.entry.js +3 -3
  7. package/dist/cjs/q2-carousel-pane.cjs.entry.js +2 -2
  8. package/dist/cjs/q2-chart-area.cjs.entry.js +1 -1
  9. package/dist/cjs/q2-chart-bar.cjs.entry.js +1 -1
  10. package/dist/cjs/q2-chart-donut.cjs.entry.js +1 -1
  11. package/dist/cjs/q2-currency.cjs.entry.js +1 -1
  12. package/dist/cjs/q2-detail.cjs.entry.js +1 -1
  13. package/dist/cjs/q2-dropdown.cjs.entry.js +24 -21
  14. package/dist/cjs/q2-dropdown.cjs.entry.js.map +1 -1
  15. package/dist/cjs/q2-example.cjs.entry.js +1 -1
  16. package/dist/cjs/q2-formatted-text.cjs.entry.js +1 -1
  17. package/dist/cjs/q2-item_3.cjs.entry.js +2 -2
  18. package/dist/cjs/q2-legend.cjs.entry.js +1 -1
  19. package/dist/cjs/q2-loc.cjs.entry.js +1 -1
  20. package/dist/cjs/q2-message.cjs.entry.js +1 -1
  21. package/dist/cjs/q2-month-picker.cjs.entry.js +2 -2
  22. package/dist/cjs/q2-optgroup.cjs.entry.js +1 -1
  23. package/dist/cjs/q2-option-list_2.cjs.entry.js +58 -59
  24. package/dist/cjs/q2-option-list_2.cjs.entry.js.map +1 -1
  25. package/dist/cjs/q2-pagination.cjs.entry.js +3 -3
  26. package/dist/cjs/q2-pill.cjs.entry.js +1 -1
  27. package/dist/cjs/q2-relative-time.cjs.entry.js +1 -1
  28. package/dist/cjs/q2-resize-observer.cjs.entry.js +1 -1
  29. package/dist/cjs/q2-section.cjs.entry.js +2 -2
  30. package/dist/cjs/q2-select.cjs.entry.js +85 -11
  31. package/dist/cjs/q2-select.cjs.entry.js.map +1 -1
  32. package/dist/cjs/q2-stepper-vertical.cjs.entry.js +1 -1
  33. package/dist/cjs/q2-stepper.cjs.entry.js +1 -1
  34. package/dist/cjs/q2-tag.cjs.entry.js +1 -1
  35. package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
  36. package/dist/cjs/q2-textarea.cjs.entry.js +1 -1
  37. package/dist/cjs/tecton-tab-pane.cjs.entry.js +2 -2
  38. package/dist/collection/components/click-elsewhere/click-elsewhere.js.map +1 -1
  39. package/dist/collection/components/click-elsewhere/test/click-elsewhere-test.e2e.js.map +1 -1
  40. package/dist/collection/components/q2-action-group/q2-action-group.js +1 -1
  41. package/dist/collection/components/q2-action-group/q2-action-group.js.map +1 -1
  42. package/dist/collection/components/q2-action-group/test/q2-action-group.e2e.js.map +1 -1
  43. package/dist/collection/components/q2-action-group/test/q2-action-group.spec.js.map +1 -1
  44. package/dist/collection/components/q2-action-sheet/q2-action-sheet.js +1 -1
  45. package/dist/collection/components/q2-action-sheet/q2-action-sheet.js.map +1 -1
  46. package/dist/collection/components/q2-action-sheet/test/q2-action-sheet-test.e2e.js.map +1 -1
  47. package/dist/collection/components/q2-avatar/q2-avatar.js +1 -1
  48. package/dist/collection/components/q2-avatar/q2-avatar.js.map +1 -1
  49. package/dist/collection/components/q2-avatar/test/q2-avatar-test.e2e.js.map +1 -1
  50. package/dist/collection/components/q2-badge/q2-badge.js.map +1 -1
  51. package/dist/collection/components/q2-badge/test/q2-badge-test.e2e.js.map +1 -1
  52. package/dist/collection/components/q2-btn/q2-btn.js.map +1 -1
  53. package/dist/collection/components/q2-btn/test/q2-btn-test.e2e.js.map +1 -1
  54. package/dist/collection/components/q2-calendar/q2-calendar-helpers.js.map +1 -1
  55. package/dist/collection/components/q2-calendar/q2-calendar-types.js.map +1 -1
  56. package/dist/collection/components/q2-calendar/q2-calendar-validation.js.map +1 -1
  57. package/dist/collection/components/q2-calendar/q2-calendar.js.map +1 -1
  58. package/dist/collection/components/q2-calendar/q2-month-picker.js +2 -2
  59. package/dist/collection/components/q2-calendar/q2-month-picker.js.map +1 -1
  60. package/dist/collection/components/q2-calendar/test/helpers-test.e2e.js.map +1 -1
  61. package/dist/collection/components/q2-calendar/test/q2-calendar-month-picker-test.e2e.js.map +1 -1
  62. package/dist/collection/components/q2-calendar/test/q2-calendar-test.e2e.js +2 -2
  63. package/dist/collection/components/q2-calendar/test/q2-calendar-test.e2e.js.map +1 -1
  64. package/dist/collection/components/q2-calendar/test/validation-test.e2e.js.map +1 -1
  65. package/dist/collection/components/q2-card/q2-card.js.map +1 -1
  66. package/dist/collection/components/q2-card/test/q2-card-test.e2e.js.map +1 -1
  67. package/dist/collection/components/q2-carousel/q2-carousel.js.map +1 -1
  68. package/dist/collection/components/q2-carousel/test/q2-carousel-test.e2e.js.map +1 -1
  69. package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.js +2 -2
  70. package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.js.map +1 -1
  71. package/dist/collection/components/q2-carousel-pane/test/q2-carousel-pane-test.e2e.js.map +1 -1
  72. package/dist/collection/components/q2-carousel-pane/test/q2-carousel-pane-test.spec.js.map +1 -1
  73. package/dist/collection/components/q2-chart-area/q2-chart-area.js +1 -1
  74. package/dist/collection/components/q2-chart-area/q2-chart-area.js.map +1 -1
  75. package/dist/collection/components/q2-chart-area/test/q2-chart-area-test.e2e.js.map +1 -1
  76. package/dist/collection/components/q2-chart-bar/q2-chart-bar.js +1 -1
  77. package/dist/collection/components/q2-chart-bar/q2-chart-bar.js.map +1 -1
  78. package/dist/collection/components/q2-chart-bar/test/q2-chart-bar-test.e2e.js.map +1 -1
  79. package/dist/collection/components/q2-chart-donut/q2-chart-donut.js +1 -1
  80. package/dist/collection/components/q2-chart-donut/q2-chart-donut.js.map +1 -1
  81. package/dist/collection/components/q2-chart-donut/test/q2-chart-donut-test.e2e.js.map +1 -1
  82. package/dist/collection/components/q2-checkbox/q2-checkbox.js.map +1 -1
  83. package/dist/collection/components/q2-checkbox/test/q2-checkbox-test.e2e.js.map +1 -1
  84. package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.js.map +1 -1
  85. package/dist/collection/components/q2-checkbox-group/test/q2-checkbox-group-test.e2e.js.map +1 -1
  86. package/dist/collection/components/q2-currency/q2-currency.js +1 -1
  87. package/dist/collection/components/q2-currency/q2-currency.js.map +1 -1
  88. package/dist/collection/components/q2-currency/test/q2-currency-test.e2e.js.map +1 -1
  89. package/dist/collection/components/q2-data-table/q2-data-table.js.map +1 -1
  90. package/dist/collection/components/q2-data-table/test/q2-data-table-test.e2e.js.map +1 -1
  91. package/dist/collection/components/q2-detail/q2-detail.js +1 -1
  92. package/dist/collection/components/q2-detail/q2-detail.js.map +1 -1
  93. package/dist/collection/components/q2-detail/test/q2-detail-test.e2e.js.map +1 -1
  94. package/dist/collection/components/q2-dropdown/q2-dropdown.js +25 -21
  95. package/dist/collection/components/q2-dropdown/q2-dropdown.js.map +1 -1
  96. package/dist/collection/components/q2-dropdown/test/q2-dropdown-test.e2e.js +34 -32
  97. package/dist/collection/components/q2-dropdown/test/q2-dropdown-test.e2e.js.map +1 -1
  98. package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.js.map +1 -1
  99. package/dist/collection/components/q2-dropdown-item/test/q2-dropdown-item-test.e2e.js.map +1 -1
  100. package/dist/collection/components/q2-editable-field/q2-editable-field.js.map +1 -1
  101. package/dist/collection/components/q2-editable-field/test/q2-editable-field-test.e2e.js.map +1 -1
  102. package/dist/collection/components/q2-example/q2-example.js +1 -1
  103. package/dist/collection/components/q2-example/q2-example.js.map +1 -1
  104. package/dist/collection/components/q2-example/test/q2-example.e2e.js.map +1 -1
  105. package/dist/collection/components/q2-example/test/q2-example.spec.js.map +1 -1
  106. package/dist/collection/components/q2-file-picker/q2-file-picker.js.map +1 -1
  107. package/dist/collection/components/q2-file-picker/test/q2-file-picker-test.e2e.js.map +1 -1
  108. package/dist/collection/components/q2-file-picker/test/q2-file-picker-test.spec.js.map +1 -1
  109. package/dist/collection/components/q2-formatted-text/q2-formatted-text.js +1 -1
  110. package/dist/collection/components/q2-formatted-text/q2-formatted-text.js.map +1 -1
  111. package/dist/collection/components/q2-formatted-text/test/q2-formatted-text-test.e2e.js.map +1 -1
  112. package/dist/collection/components/q2-icon/q2-icon-types.js.map +1 -1
  113. package/dist/collection/components/q2-icon/q2-icon.js.map +1 -1
  114. package/dist/collection/components/q2-icon/test/q2-icon-test.e2e.js.map +1 -1
  115. package/dist/collection/components/q2-input/formatting/alpha.js.map +1 -1
  116. package/dist/collection/components/q2-input/formatting/alpha.spec.js.map +1 -1
  117. package/dist/collection/components/q2-input/formatting/alphanumeric.js.map +1 -1
  118. package/dist/collection/components/q2-input/formatting/alphanumeric.spec.js.map +1 -1
  119. package/dist/collection/components/q2-input/formatting/credit-card.js.map +1 -1
  120. package/dist/collection/components/q2-input/formatting/credit-card.spec.js.map +1 -1
  121. package/dist/collection/components/q2-input/formatting/currency.js.map +1 -1
  122. package/dist/collection/components/q2-input/formatting/currency.spec.js.map +1 -1
  123. package/dist/collection/components/q2-input/formatting/date.js.map +1 -1
  124. package/dist/collection/components/q2-input/formatting/date.spec.js.map +1 -1
  125. package/dist/collection/components/q2-input/formatting/generic.js.map +1 -1
  126. package/dist/collection/components/q2-input/formatting/number.js.map +1 -1
  127. package/dist/collection/components/q2-input/formatting/numeric.js.map +1 -1
  128. package/dist/collection/components/q2-input/formatting/numeric.spec.js.map +1 -1
  129. package/dist/collection/components/q2-input/formatting/phone.js.map +1 -1
  130. package/dist/collection/components/q2-input/formatting/phone.spec.js.map +1 -1
  131. package/dist/collection/components/q2-input/formatting/postal.js.map +1 -1
  132. package/dist/collection/components/q2-input/formatting/postal.spec.js.map +1 -1
  133. package/dist/collection/components/q2-input/formatting/ssn.js.map +1 -1
  134. package/dist/collection/components/q2-input/formatting/ssn.spec.js.map +1 -1
  135. package/dist/collection/components/q2-input/formatting/tin.js.map +1 -1
  136. package/dist/collection/components/q2-input/formatting/tin.spec.js.map +1 -1
  137. package/dist/collection/components/q2-input/q2-input-types.js.map +1 -1
  138. package/dist/collection/components/q2-input/q2-input.js +1 -1
  139. package/dist/collection/components/q2-input/q2-input.js.map +1 -1
  140. package/dist/collection/components/q2-input/test/q2-input-credit-card-test.e2e.js.map +1 -1
  141. package/dist/collection/components/q2-input/test/q2-input-test.e2e.js.map +1 -1
  142. package/dist/collection/components/q2-input/test/q2-input-test.spec.js.map +1 -1
  143. package/dist/collection/components/q2-item/q2-item.js +1 -1
  144. package/dist/collection/components/q2-item/q2-item.js.map +1 -1
  145. package/dist/collection/components/q2-item/test/q2-item-test.e2e.js.map +1 -1
  146. package/dist/collection/components/q2-item/test/q2-item-test.spec.js.map +1 -1
  147. package/dist/collection/components/q2-legend/q2-legend.js +1 -1
  148. package/dist/collection/components/q2-legend/q2-legend.js.map +1 -1
  149. package/dist/collection/components/q2-legend/test/q2-legend-test.e2e.js.map +1 -1
  150. package/dist/collection/components/q2-legend/test/q2-legend-test.spec.js.map +1 -1
  151. package/dist/collection/components/q2-link/q2-link.js.map +1 -1
  152. package/dist/collection/components/q2-link/test/q2-link-test.e2e.js.map +1 -1
  153. package/dist/collection/components/q2-link/test/q2-link-test.spec.js.map +1 -1
  154. package/dist/collection/components/q2-list/q2-list.js +1 -1
  155. package/dist/collection/components/q2-list/q2-list.js.map +1 -1
  156. package/dist/collection/components/q2-list/test/q2-list-test.e2e.js.map +1 -1
  157. package/dist/collection/components/q2-loading/q2-loading.js.map +1 -1
  158. package/dist/collection/components/q2-loading/skeleton/q2-loading-element/index.js.map +1 -1
  159. package/dist/collection/components/q2-loading/skeleton/shapes.js.map +1 -1
  160. package/dist/collection/components/q2-loading/test/q2-loading-element-test.e2e.js.map +1 -1
  161. package/dist/collection/components/q2-loading/test/q2-loading-test.e2e.js.map +1 -1
  162. package/dist/collection/components/q2-loc/q2-loc.js +1 -1
  163. package/dist/collection/components/q2-loc/q2-loc.js.map +1 -1
  164. package/dist/collection/components/q2-loc/test/q2-loc-test.e2e.js.map +1 -1
  165. package/dist/collection/components/q2-loc/test/q2-loc-test.spec.js.map +1 -1
  166. package/dist/collection/components/q2-message/q2-message.js +1 -1
  167. package/dist/collection/components/q2-message/q2-message.js.map +1 -1
  168. package/dist/collection/components/q2-message/test/q2-message-test.e2e.js.map +1 -1
  169. package/dist/collection/components/q2-optgroup/q2-optgroup.js +1 -1
  170. package/dist/collection/components/q2-optgroup/q2-optgroup.js.map +1 -1
  171. package/dist/collection/components/q2-optgroup/test/q2-optgroup-test.e2e.js.map +1 -1
  172. package/dist/collection/components/q2-option/q2-option.js.map +1 -1
  173. package/dist/collection/components/q2-option/test/q2-option-test.e2e.js.map +1 -1
  174. package/dist/collection/components/q2-option/test/q2-option-test.spec.js.map +1 -1
  175. package/dist/collection/components/q2-option-list/q2-option-list.js.map +1 -1
  176. package/dist/collection/components/q2-option-list/test/q2-option-list-test.e2e.js.map +1 -1
  177. package/dist/collection/components/q2-option-list/test/q2-option-list.spec.js.map +1 -1
  178. package/dist/collection/components/q2-pagination/q2-pagination.js +3 -3
  179. package/dist/collection/components/q2-pagination/q2-pagination.js.map +1 -1
  180. package/dist/collection/components/q2-pagination/test/q2-pagination-test.e2e.js +1 -0
  181. package/dist/collection/components/q2-pagination/test/q2-pagination-test.e2e.js.map +1 -1
  182. package/dist/collection/components/q2-pill/q2-pill.js +1 -1
  183. package/dist/collection/components/q2-pill/q2-pill.js.map +1 -1
  184. package/dist/collection/components/q2-pill/test/q2-pill-test.e2e.js.map +1 -1
  185. package/dist/collection/components/q2-popover/q2-popover.css +18 -10
  186. package/dist/collection/components/q2-popover/q2-popover.js +59 -59
  187. package/dist/collection/components/q2-popover/q2-popover.js.map +1 -1
  188. package/dist/collection/components/q2-popover/test/q2-popover-test.e2e.js +1 -34
  189. package/dist/collection/components/q2-popover/test/q2-popover-test.e2e.js.map +1 -1
  190. package/dist/collection/components/q2-popover/test/q2-popover-test.spec.js +743 -435
  191. package/dist/collection/components/q2-popover/test/q2-popover-test.spec.js.map +1 -1
  192. package/dist/collection/components/q2-radio/q2-radio.js.map +1 -1
  193. package/dist/collection/components/q2-radio/test/q2-radio-test.e2e.js.map +1 -1
  194. package/dist/collection/components/q2-radio-group/q2-radio-group.js.map +1 -1
  195. package/dist/collection/components/q2-radio-group/test/q2-radio-group-test.e2e.js.map +1 -1
  196. package/dist/collection/components/q2-relative-time/q2-relative-time.js +1 -1
  197. package/dist/collection/components/q2-relative-time/q2-relative-time.js.map +1 -1
  198. package/dist/collection/components/q2-relative-time/test/q2-relative-time-test.e2e.js.map +1 -1
  199. package/dist/collection/components/q2-resize-observer/q2-resize-observer.js +1 -1
  200. package/dist/collection/components/q2-resize-observer/q2-resize-observer.js.map +1 -1
  201. package/dist/collection/components/q2-resize-observer/test/q2-resize-observer.e2e.js.map +1 -1
  202. package/dist/collection/components/q2-resize-observer/test/q2-resize-observer.spec.js.map +1 -1
  203. package/dist/collection/components/q2-section/q2-section.js +2 -2
  204. package/dist/collection/components/q2-section/q2-section.js.map +1 -1
  205. package/dist/collection/components/q2-section/test/q2-section-test.e2e.js.map +1 -1
  206. package/dist/collection/components/q2-select/q2-select.js +107 -14
  207. package/dist/collection/components/q2-select/q2-select.js.map +1 -1
  208. package/dist/collection/components/q2-select/test/q2-select-test.e2e.js.map +1 -1
  209. package/dist/collection/components/q2-select/test/q2-select-test.spec.js +412 -0
  210. package/dist/collection/components/q2-select/test/q2-select-test.spec.js.map +1 -0
  211. package/dist/collection/components/q2-stepper/q2-stepper.js +1 -1
  212. package/dist/collection/components/q2-stepper/q2-stepper.js.map +1 -1
  213. package/dist/collection/components/q2-stepper/test/q2-stepper-test.e2e.js.map +1 -1
  214. package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.js.map +1 -1
  215. package/dist/collection/components/q2-stepper-pane/test/q2-stepper-pane-test.e2e.js.map +1 -1
  216. package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js +1 -1
  217. package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js.map +1 -1
  218. package/dist/collection/components/q2-stepper-vertical/test/q2-stepper-vertical-test.e2e.js.map +1 -1
  219. package/dist/collection/components/q2-tab-container/q2-tab-container.js +1 -1
  220. package/dist/collection/components/q2-tab-container/q2-tab-container.js.map +1 -1
  221. package/dist/collection/components/q2-tab-container/test/q2-tab-container-test.e2e.js.map +1 -1
  222. package/dist/collection/components/q2-tab-container/test/q2-tab-container-test.spec.js.map +1 -1
  223. package/dist/collection/components/q2-tab-pane/q2-tab-pane.js +1 -1
  224. package/dist/collection/components/q2-tab-pane/q2-tab-pane.js.map +1 -1
  225. package/dist/collection/components/q2-tab-pane/test/q2-tab-pane-test.e2e.js.map +1 -1
  226. package/dist/collection/components/q2-tag/q2-tag.js +1 -1
  227. package/dist/collection/components/q2-tag/q2-tag.js.map +1 -1
  228. package/dist/collection/components/q2-tag/test/q2-tag-test.e2e.js +5 -0
  229. package/dist/collection/components/q2-tag/test/q2-tag-test.e2e.js.map +1 -1
  230. package/dist/collection/components/q2-textarea/q2-textarea.js +1 -1
  231. package/dist/collection/components/q2-textarea/q2-textarea.js.map +1 -1
  232. package/dist/collection/components/q2-textarea/test/q2-textarea-test.e2e.js.map +1 -1
  233. package/dist/collection/components/q2-tooltip/q2-tooltip.js.map +1 -1
  234. package/dist/collection/components/q2-tooltip/test/q2-tooltip-test.e2e.js.map +1 -1
  235. package/dist/collection/components/tecton-tab-pane/tecton-tab-pane-types.js.map +1 -1
  236. package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js +2 -2
  237. package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js.map +1 -1
  238. package/dist/collection/components/tecton-tab-pane/test/tecton-tab-pane-test.e2e.js.map +1 -1
  239. package/dist/collection/index.js.map +1 -1
  240. package/dist/collection/utils/action-sheet.js.map +1 -1
  241. package/dist/collection/utils/charting.js.map +1 -1
  242. package/dist/collection/utils/helpers.js.map +1 -1
  243. package/dist/collection/utils/index.js.map +1 -1
  244. package/dist/collection/utils/mirror-emit.js.map +1 -1
  245. package/dist/collection/utils/sanitize-html-string.js.map +1 -1
  246. package/dist/collection/utils/sanitize-regex-string.js.map +1 -1
  247. package/dist/collection/utils/test/action-sheet-test.e2e.js.map +1 -1
  248. package/dist/collection/utils/test/index.spec.js.map +1 -1
  249. package/dist/components/q2-action-group.js +1 -1
  250. package/dist/components/q2-action-sheet.js +1 -1
  251. package/dist/components/q2-avatar2.js +1 -1
  252. package/dist/components/q2-carousel-pane.js +2 -2
  253. package/dist/components/q2-chart-area.js +1 -1
  254. package/dist/components/q2-chart-bar.js +1 -1
  255. package/dist/components/q2-chart-donut.js +1 -1
  256. package/dist/components/q2-currency.js +1 -1
  257. package/dist/components/q2-detail.js +1 -1
  258. package/dist/components/q2-dropdown.js +24 -21
  259. package/dist/components/q2-dropdown.js.map +1 -1
  260. package/dist/components/q2-example.js +1 -1
  261. package/dist/components/q2-formatted-text.js +1 -1
  262. package/dist/components/q2-input2.js +1 -1
  263. package/dist/components/q2-item2.js +1 -1
  264. package/dist/components/q2-legend2.js +1 -1
  265. package/dist/components/q2-list2.js +1 -1
  266. package/dist/components/q2-loc.js +1 -1
  267. package/dist/components/q2-message2.js +1 -1
  268. package/dist/components/q2-month-picker.js +2 -2
  269. package/dist/components/q2-optgroup2.js +1 -1
  270. package/dist/components/q2-pagination.js +3 -3
  271. package/dist/components/q2-pill.js +1 -1
  272. package/dist/components/q2-popover2.js +58 -59
  273. package/dist/components/q2-popover2.js.map +1 -1
  274. package/dist/components/q2-relative-time.js +1 -1
  275. package/dist/components/q2-resize-observer2.js +1 -1
  276. package/dist/components/q2-section.js +2 -2
  277. package/dist/components/q2-select2.js +89 -15
  278. package/dist/components/q2-select2.js.map +1 -1
  279. package/dist/components/q2-stepper-vertical.js +1 -1
  280. package/dist/components/q2-stepper.js +1 -1
  281. package/dist/components/q2-tab-container.js +1 -1
  282. package/dist/components/q2-tab-pane.js +1 -1
  283. package/dist/components/q2-tag.js +1 -1
  284. package/dist/components/q2-textarea.js +1 -1
  285. package/dist/components/tecton-tab-pane.js +2 -2
  286. package/dist/esm/loader.js +1 -1
  287. package/dist/esm/q2-action-group.entry.js +1 -1
  288. package/dist/esm/q2-action-sheet.entry.js +1 -1
  289. package/dist/esm/q2-avatar.entry.js +1 -1
  290. package/dist/esm/q2-badge_7.entry.js +3 -3
  291. package/dist/esm/q2-carousel-pane.entry.js +2 -2
  292. package/dist/esm/q2-chart-area.entry.js +1 -1
  293. package/dist/esm/q2-chart-bar.entry.js +1 -1
  294. package/dist/esm/q2-chart-donut.entry.js +1 -1
  295. package/dist/esm/q2-currency.entry.js +1 -1
  296. package/dist/esm/q2-detail.entry.js +1 -1
  297. package/dist/esm/q2-dropdown.entry.js +24 -21
  298. package/dist/esm/q2-dropdown.entry.js.map +1 -1
  299. package/dist/esm/q2-example.entry.js +1 -1
  300. package/dist/esm/q2-formatted-text.entry.js +1 -1
  301. package/dist/esm/q2-item_3.entry.js +2 -2
  302. package/dist/esm/q2-legend.entry.js +1 -1
  303. package/dist/esm/q2-loc.entry.js +1 -1
  304. package/dist/esm/q2-message.entry.js +1 -1
  305. package/dist/esm/q2-month-picker.entry.js +2 -2
  306. package/dist/esm/q2-optgroup.entry.js +1 -1
  307. package/dist/esm/q2-option-list_2.entry.js +58 -59
  308. package/dist/esm/q2-option-list_2.entry.js.map +1 -1
  309. package/dist/esm/q2-pagination.entry.js +3 -3
  310. package/dist/esm/q2-pill.entry.js +1 -1
  311. package/dist/esm/q2-relative-time.entry.js +1 -1
  312. package/dist/esm/q2-resize-observer.entry.js +1 -1
  313. package/dist/esm/q2-section.entry.js +2 -2
  314. package/dist/esm/q2-select.entry.js +87 -13
  315. package/dist/esm/q2-select.entry.js.map +1 -1
  316. package/dist/esm/q2-stepper-vertical.entry.js +1 -1
  317. package/dist/esm/q2-stepper.entry.js +1 -1
  318. package/dist/esm/q2-tag.entry.js +1 -1
  319. package/dist/esm/q2-tecton-elements.js +1 -1
  320. package/dist/esm/q2-textarea.entry.js +1 -1
  321. package/dist/esm/tecton-tab-pane.entry.js +2 -2
  322. package/dist/jest.setup.js +22 -0
  323. package/dist/jest.setup.js.map +1 -0
  324. package/dist/q2-tecton-elements/q2-action-group.entry.js +3 -3
  325. package/dist/q2-tecton-elements/q2-action-sheet.entry.js +33 -33
  326. package/dist/q2-tecton-elements/q2-avatar.entry.js +6 -6
  327. package/dist/q2-tecton-elements/q2-badge_7.entry.js +16 -16
  328. package/dist/q2-tecton-elements/q2-carousel-pane.entry.js +20 -20
  329. package/dist/q2-tecton-elements/q2-chart-area.entry.js +2 -2
  330. package/dist/q2-tecton-elements/q2-chart-bar.entry.js +2 -2
  331. package/dist/q2-tecton-elements/q2-chart-donut.entry.js +100 -100
  332. package/dist/q2-tecton-elements/q2-currency.entry.js +6 -6
  333. package/dist/q2-tecton-elements/q2-detail.entry.js +38 -38
  334. package/dist/q2-tecton-elements/q2-dropdown.entry.js +26 -22
  335. package/dist/q2-tecton-elements/q2-dropdown.entry.js.map +1 -1
  336. package/dist/q2-tecton-elements/q2-example.entry.js +1 -1
  337. package/dist/q2-tecton-elements/q2-formatted-text.entry.js +2 -2
  338. package/dist/q2-tecton-elements/q2-item_3.entry.js +18 -18
  339. package/dist/q2-tecton-elements/q2-legend.entry.js +2 -2
  340. package/dist/q2-tecton-elements/q2-loc.entry.js +5 -5
  341. package/dist/q2-tecton-elements/q2-message.entry.js +20 -20
  342. package/dist/q2-tecton-elements/q2-month-picker.entry.js +13 -13
  343. package/dist/q2-tecton-elements/q2-optgroup.entry.js +7 -7
  344. package/dist/q2-tecton-elements/q2-option-list_2.entry.js +128 -123
  345. package/dist/q2-tecton-elements/q2-option-list_2.entry.js.map +1 -1
  346. package/dist/q2-tecton-elements/q2-pagination.entry.js +18 -18
  347. package/dist/q2-tecton-elements/q2-pill.entry.js +13 -13
  348. package/dist/q2-tecton-elements/q2-relative-time.entry.js +1 -1
  349. package/dist/q2-tecton-elements/q2-resize-observer.entry.js +1 -1
  350. package/dist/q2-tecton-elements/q2-section.entry.js +19 -19
  351. package/dist/q2-tecton-elements/q2-select.entry.js +151 -89
  352. package/dist/q2-tecton-elements/q2-select.entry.js.map +1 -1
  353. package/dist/q2-tecton-elements/q2-stepper-vertical.entry.js +28 -28
  354. package/dist/q2-tecton-elements/q2-stepper.entry.js +28 -28
  355. package/dist/q2-tecton-elements/q2-tag.entry.js +5 -5
  356. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
  357. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js.map +1 -1
  358. package/dist/q2-tecton-elements/q2-textarea.entry.js +2 -2
  359. package/dist/q2-tecton-elements/tecton-tab-pane.entry.js +9 -9
  360. package/dist/types/builds/q2e/development/tecton/tecton/packages/q2-tecton-elements/.stencil/jest.setup.d.ts +1 -0
  361. package/dist/types/components/q2-dropdown/q2-dropdown.d.ts +6 -4
  362. package/dist/types/components/q2-popover/q2-popover.d.ts +4 -4
  363. package/dist/types/components/q2-select/q2-select.d.ts +19 -0
  364. package/package.json +3 -3
@@ -1 +1 @@
1
- {"file":"q2-dropdown.entry.js","mappings":"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","names":[],"sources":["src/components/q2-dropdown/q2-dropdown.scss?tag=q2-dropdown&encapsulation=shadow","src/components/q2-dropdown/q2-dropdown.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions';\n\n:host {\n display: inline-flex;\n}\n\n:host([block]) {\n display: block;\n}\n\nq2-icon {\n pointer-events: none;\n margin-block: -100px;\n}\n\nclick-elsewhere {\n position: relative;\n display: block;\n}\n\nq2-popover {\n --tct-popover-min-width: #{var-list(var-prefixer(dropdown-width))};\n}\n","import { shouldShowActionSheet, showActionSheetList } from '@/utils/action-sheet';\nimport { Component, ComponentInterface, Prop, Method, Element, Watch, h, Fragment, Listen } from '@stencil/core';\nimport {\n handleAriaLabel,\n handleRenamedProp,\n isEventFromElement,\n loc,\n overrideFocus,\n waitForNextPaint,\n} from 'src/utils';\n\n@Component({ tag: 'q2-dropdown', shadow: true, styleUrl: 'q2-dropdown.scss' })\nexport class Q2Dropdown implements ComponentInterface {\n // #region Own Properties\n\n controlElement?: HTMLQ2BtnElement;\n dropdownItemSelector: string = 'q2-dropdown-item:not([disabled]):not([separator])';\n popoverElement?: HTMLQ2PopoverElement;\n optionList: HTMLQ2OptionListElement;\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region Public Property API\n\n @Prop({ reflect: true })\n additionalContext: string;\n\n /** @deprecated */\n @Prop({ reflect: true })\n alignment: 'left' | 'right';\n\n /** @deprecated */\n @Prop({ reflect: true, mutable: true })\n ariaLabel: string;\n\n /** If `true`, component expands to fill the width of its parent element. */\n @Prop({ reflect: true })\n block: boolean;\n\n /**\n * Tells the outlet what the type of object being passed in as contextValue.\n * This will allow for the hierarchy resolution logic to work to determine if an option should or should not be shown.\n *\n * @info\n * Only applicable when using `<q2-dropdown>` for outlets.\n */\n @Prop({ reflect: true })\n context: string;\n\n /**\n * Passes important information to the outlet (e.g., pass an account id that your platform can use to look up what module to show for that account type).\n *\n * @info\n * Only applicable when using `<q2-dropdown>` for outlets.\n */\n @Prop({ reflect: true })\n contextValue: string;\n\n /** Indicates the menu cannot be focused or interacted with. */\n @Prop({ reflect: true })\n disabled: boolean;\n\n /**\n * Hide's the field's `<label>` element from view.\n * @warning\n * Only use when a visible label is impractical.\n */\n @Prop({ reflect: true, mutable: true })\n hideLabel: boolean;\n\n /**\n * Instructs the component to use the action sheet workflow for displaying its options.\n *\n * For more information, see [Action Sheets](https://tecton.q2developer.com/guides/action-sheets/).\n */\n @Prop()\n hoist: boolean = !!window.Tecton?.useActionSheets;\n\n /** The icon that will render within the toggle button. You may use any of the `q2-icon` types. */\n @Prop({ reflect: true })\n icon: string;\n\n /**\n * The text that appears within the button.\n * @warning\n * This property should not be used if the `type` is `icon`.\n * @localizable\n */\n @Prop({ reflect: true, mutable: true })\n label: string;\n\n /**\n * Identifies this menu as an outlet. Used in conjunction with context and, optionally, `contextValue`.\n * @info\n * Only applicable when using `<q2-dropdown>` for outlets.\n */\n @Prop({ reflect: true })\n name: string;\n\n /**\n * Determine whether the popover is open or closed.\n *\n * @readonly\n */\n @Prop({ reflect: true, mutable: true })\n open: boolean;\n\n /** Determines the label that is applied to the option list for accessibility purposes. */\n @Prop()\n optionListLabel: string;\n\n /** @deprecated */\n @Prop({ reflect: true })\n popDirection: 'up' | 'down';\n\n /** Aligns the popover dropdown to the left or right side of the input field. */\n @Prop({ mutable: true })\n popoverAlignment: 'left' | 'right' = 'left'; // being used in dropdown.scss\n\n /**\n * Force the direction of the popover dropdown when it opens.\n * If no value is passed, the component will auto-detect the direction based on available space.\n */\n @Prop({ mutable: true })\n popoverDirection: 'up' | 'down';\n\n /**\n * Force the maximum height of the popover. This value will be interpreted as pixels.\n * If no value is passed, or the value exceeds available space, the component will auto-detect the maximum height based on available space.\n */\n @Prop()\n popoverMaxHeight: number;\n\n /** @deprecated */\n @Prop()\n popoverMinHeight: number;\n\n /**\n * Determines the display mode of the popover.\n *\n * Providing a value of `legacy` instructs the popover to use absolute positioning instead of fixed positioning.\n *\n * @info\n * This is a temporary solution to work around styling issues related to using fixed positioning for the popover\n * when nested inside of elements with transform properties. This will be removed once the popover API is available\n * for use.\n */\n @Prop({ mutable: true })\n popoverMode: 'legacy' = null;\n\n /**\n * Use with `context` to tell the outlet where it appears. It will be matched with the appropriately configured module for that context.\n * @info\n * Only applicable when using `<q2-dropdown>` for outlets.\n */\n @Prop({ reflect: true })\n resolvedType: string;\n\n /** The type of button used as the menu toggle.\n * @info\n * Type must be \"custom\" to use the custom button slot.\n */\n @Prop({ reflect: true })\n type: 'icon' | 'fab' | 'custom' | 'primary' | 'secondary' | 'neutral' = 'icon';\n\n // #endregion\n // #region Component Lifecycle Events\n\n componentWillLoad() {\n this.popDirectionHandler();\n this.alignmentHandler();\n this.ariaLabelHandler();\n }\n\n componentDidLoad() {\n this.orchestrateResolvedMenuItems();\n overrideFocus(this.hostElement);\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('focus')\n delegateFocus(event: FocusEvent) {\n if (!isEventFromElement(event, this.hostElement)) return;\n this.focusToggle();\n }\n\n @Listen('popoverStateChanged')\n popoverStateChangeHandler({ detail: { open } }: CustomEvent<{ open: boolean }>) {\n if (this.open !== open) this.open = open;\n this.popoverElement?.scrollContainerTo({ top: 0 });\n this.optionList.setActiveElement(null);\n }\n\n // #endregion\n // #region Public Methods API\n\n /**\n * Emulates clicking the dropdown `<button>` to hide the popover if it is showing.\n * @testOnly\n */\n @Method()\n async closePopover() {\n if (!this.open || this.disabled) return;\n this._togglePopover();\n }\n\n /**\n * Emulates clicking the dropdown `<button>` to show the popover if it is hidden.\n * @testOnly\n */\n @Method()\n async openPopover() {\n if (this.open || this.disabled) return;\n this._togglePopover();\n }\n\n /**\n * Emulates opening the dropdown and selecting a [Dropdown Item](https://tecton.q2developer.com/design-system/q2-dropdown-item/).\n *\n * If the dropdown is closed, this will open it before selecting the item.\n *\n * If the value does not match any item's value, this method does nothing.\n * @testOnly\n */\n @Method()\n async selectItem(value: string) {\n const item = this.hostElement.querySelector<HTMLQ2DropdownItemElement>(\n `${this.dropdownItemSelector}[value=\"${value}\"]`\n );\n const itemBtn = item?.shadowRoot.querySelector<HTMLButtonElement>('.dropdown-item');\n if (!item || this.disabled) return;\n if (!this.open) {\n this.controlElement?.click();\n await waitForNextPaint();\n }\n itemBtn.click();\n await waitForNextPaint();\n }\n\n /**\n * Emulates opening the dropdown and selecting a [Dropdown Item](https://tecton.q2developer.com/design-system/q2-dropdown-item/)'s *remove* button.\n *\n * If the dropdown is closed, this will open it before selecting the remove item button.\n *\n * Requirements for this method to work properly:\n * - Provided `value` matches the item's `value` property\n * - Item has the `removable` property enabled\n * @testOnly\n */\n @Method()\n async selectRemoveItem(value: string) {\n const item = this.hostElement.querySelector<HTMLQ2DropdownItemElement>(\n `${this.dropdownItemSelector}[value=\"${value}\"]`\n );\n const removeButton = item?.shadowRoot.querySelector<HTMLButtonElement>('.remove-dropdown-item');\n if (!item || !removeButton || this.disabled) return;\n if (!this.open) {\n this.controlElement?.click();\n await waitForNextPaint();\n }\n removeButton.click();\n await waitForNextPaint();\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('additionalContext')\n additionalContextHandler() {\n this.orchestrateResolvedMenuItems();\n }\n\n @Watch('alignment')\n alignmentHandler() {\n handleRenamedProp(this, 'alignment', 'popoverAlignment');\n }\n\n @Watch('ariaLabel')\n ariaLabelHandler() {\n handleAriaLabel(this);\n }\n\n @Watch('context')\n contextHandler() {\n this.orchestrateResolvedMenuItems();\n }\n\n @Watch('contextValue')\n contextValueHandler() {\n this.orchestrateResolvedMenuItems();\n }\n\n @Watch('name')\n nameHandler() {\n this.orchestrateResolvedMenuItems();\n }\n\n @Watch('popDirection')\n popDirectionHandler() {\n handleRenamedProp(this, 'popDirection', 'popoverDirection');\n }\n\n @Watch('resolvedType')\n resolvedTypeHandler() {\n this.orchestrateResolvedMenuItems();\n }\n\n // #endregion\n // #region Local Methods\n\n get determineDropdownItemCount() {\n return this.hostElement.querySelectorAll(this.dropdownItemSelector).length;\n }\n\n get hasCustomControl() {\n return !!this.hostElement.querySelector('[slot=control]');\n }\n\n get toggleButtonProps() {\n const allowedIntents = ['primary', 'secondary', 'neutral'];\n const allowedTypes = ['icon', 'fab', 'custom', ...allowedIntents];\n const type = allowedTypes.includes(this.type) ? this.type : '';\n const icon = type === 'icon';\n const fab = type === 'fab';\n const custom = type === 'custom';\n let intent;\n if (allowedIntents.includes(type)) {\n intent = type === 'neutral' ? type : `workflow-${type}`;\n }\n const active = this.open;\n const disabled = !!this.disabled;\n const ariaExpanded = this.open;\n const className = !icon && !fab && !intent ? 'unstyled' : '';\n\n return {\n icon,\n fab,\n intent,\n active,\n disabled,\n ariaExpanded,\n className,\n custom,\n };\n }\n\n _clickItem(value: string) {\n if (!value) return;\n const item = this.hostElement.querySelector<HTMLQ2DropdownItemElement>(\n `${this.dropdownItemSelector}[value=\"${value}\"]`\n );\n const itemBtn = item?.shadowRoot.querySelector<HTMLButtonElement>('.dropdown-item');\n if (!item || this.disabled) return;\n itemBtn.click();\n }\n\n async _handleActionSheet(event: MouseEvent | KeyboardEvent) {\n const { value } = await showActionSheetList(this, event);\n this._clickItem(value);\n this.controlElement.focus();\n }\n\n _togglePopover() {\n const { controlElement } = this;\n if (!controlElement) return;\n controlElement.click();\n controlElement.focus();\n controlElement.dispatchEvent(new FocusEvent('focus'));\n }\n\n focusToggle = () => {\n this.controlElement.focus();\n };\n\n onClickElsewhere = (event: CustomEvent) => {\n const target = event.target as HTMLElement;\n if (target.localName === 'q2-option-list') {\n event.stopPropagation();\n }\n if (target.localName === 'click-elsewhere') {\n event.stopPropagation();\n const { popoverElement } = this;\n if (!popoverElement) return;\n popoverElement.open = false;\n }\n };\n\n onToggleClick = async (event: MouseEvent) => {\n event.stopPropagation();\n if (shouldShowActionSheet(this)) {\n this._handleActionSheet(event);\n } else {\n await this.popoverElement.toggle();\n }\n };\n\n onToggleKeydown = async (event: KeyboardEvent) => {\n const isTabMetaOrCtrl = event.metaKey || event.ctrlKey || event.key === 'Tab';\n if (isTabMetaOrCtrl) return;\n\n event.preventDefault();\n if (shouldShowActionSheet(this, event)) {\n this._handleActionSheet(event);\n } else {\n this.optionList.handleExternalKeydown(event);\n }\n };\n\n onPopoverState = (event: CustomEvent<{ open: boolean; action: string }>) => {\n if (event.detail.open) return;\n this.controlElement.focus();\n };\n\n handleFocusOut = (event: FocusEvent) => {\n const relatedTarget = event.relatedTarget as unknown as HTMLElement;\n if (this.popoverElement?.contains(relatedTarget)) return;\n if (this.hostElement.contains(relatedTarget)) return;\n this.open = false;\n };\n\n orchestrateResolvedMenuItems() {\n if (!this.name || !this.context) {\n // this is only for contextual menu outlets\n this.removeResolvedElements();\n return;\n }\n\n this.resolveMenuItemElements()\n .then(data => {\n this.removeResolvedElements();\n data.forEach(element => {\n this.hostElement.appendChild(element);\n });\n })\n .catch(err => {\n this.removeResolvedElements();\n throw err;\n });\n }\n\n removeResolvedElements() {\n const resolvedElements = this.hostElement.querySelectorAll('q2-dropdown-item.resolved-menu-item');\n resolvedElements.forEach(element => this.hostElement.removeChild(element));\n }\n\n resolveMenu() {\n return (\n this.name &&\n window.TectonElements &&\n window.TectonElements.resolveMenu(this.name, this.contextValue, this.resolvedType, this.additionalContext)\n );\n }\n\n resolveMenuItemElements() {\n return this.resolveMenu().then(datas => {\n return datas.map(menuItemData => {\n let onClickFn;\n let queryParams;\n if (menuItemData['tct-ctxid']) {\n queryParams = {};\n queryParams[menuItemData.contextIdParamName] = menuItemData['tct-ctxid'];\n }\n\n switch (menuItemData.action) {\n case 'navigateTo':\n onClickFn = function () {\n return window.TectonElements?.navigateTo?.(\n menuItemData.featureName,\n menuItemData.moduleName,\n queryParams\n );\n };\n break;\n case 'showOverpanel':\n onClickFn = function () {\n return window.TectonElements?.showOverpanel?.(\n `${menuItemData.featureName}.${menuItemData.moduleName}`,\n queryParams,\n undefined,\n true\n );\n };\n break;\n }\n\n const newDropdownItem = document.createElement('q2-dropdown-item');\n newDropdownItem.setAttribute('value', menuItemData.itemLabel);\n newDropdownItem.classList.add('resolved-menu-item');\n newDropdownItem.textContent = menuItemData.itemLabel;\n newDropdownItem.onclick = onClickFn;\n\n return newDropdownItem;\n });\n });\n }\n\n // #endregion\n // #region Render Methods\n\n render() {\n const btnProps = this.toggleButtonProps;\n\n return (\n <click-elsewhere\n class={this.open ? 'dropdown-open' : ''}\n onChange={this.onClickElsewhere}\n test-id=\"dropdownContainer\"\n >\n <q2-btn\n ref={el => (this.controlElement = el)}\n class={btnProps.className}\n onClick={this.onToggleClick}\n onKeyDown={this.onToggleKeydown}\n fab={btnProps.fab}\n intent={btnProps.intent}\n onFocusout={this.handleFocusOut}\n active={btnProps.active}\n disabled={btnProps.disabled}\n ariaExpanded={`${!!btnProps.ariaExpanded}`}\n label={this.hideLabel && this.label ? loc(this.label) : undefined}\n hideLabel={this.hideLabel}\n ariaHasPopup=\"menu\"\n test-id=\"dropdownButton\"\n block={this.block}\n description={loc('tecton.element.dropdown.itemCount', [this.determineDropdownItemCount])}\n >\n {this.hasCustomControl ? (\n <div\n test-id=\"dropdownControl\"\n class={btnProps.custom ? '' : 'hidden'}\n >\n <slot name=\"control\" />\n </div>\n ) : (\n <Fragment>\n {this.icon ? <q2-icon type={this.icon} /> : ' '}\n {this.label && !this.hideLabel && (\n <span class=\"dropdown-button-text\">{loc(this.label)}</span>\n )}\n </Fragment>\n )}\n </q2-btn>\n <q2-popover\n ref={el => (this.popoverElement = el)}\n controlElement={this.controlElement}\n open={this.open}\n max-height={this.popoverMaxHeight}\n onFocusout={this.handleFocusOut}\n minHeight={this.popoverMinHeight}\n direction={this.popoverDirection}\n align={this.popoverAlignment}\n mode={this.popoverMode || undefined}\n block={this.block}\n >\n <q2-option-list\n onPopoverState={this.onPopoverState}\n id=\"option-list\"\n ref={el => (this.optionList = el)}\n type=\"menu\"\n label={loc('tecton.element.optionList.label', [this.optionListLabel])}\n no-select\n >\n <slot />\n </q2-option-list>\n </q2-popover>\n </click-elsewhere>\n );\n }\n\n // #endregion\n}\n"],"version":3}
1
+ {"file":"q2-dropdown.entry.js","mappings":"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","names":[],"sources":["src/components/q2-dropdown/q2-dropdown.scss?tag=q2-dropdown&encapsulation=shadow","src/components/q2-dropdown/q2-dropdown.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions';\n\n:host {\n display: inline-flex;\n}\n\n:host([block]) {\n display: block;\n}\n\nq2-icon {\n pointer-events: none;\n margin-block: -100px;\n}\n\nclick-elsewhere {\n position: relative;\n display: block;\n}\n\nq2-popover {\n --tct-popover-min-width: #{var-list(var-prefixer(dropdown-width))};\n}\n","import { shouldShowActionSheet, showActionSheetList } from '@/utils/action-sheet';\nimport { Component, ComponentInterface, Prop, Method, Element, Watch, h, Fragment, Listen } from '@stencil/core';\nimport {\n handleAriaLabel,\n handleRenamedProp,\n isEventFromElement,\n loc,\n overrideFocus,\n waitForNextPaint,\n} from 'src/utils';\n\n/** @slot control - An optional slot to provide custom content as the clickable interface. The Dropdown **must** have `type=\"custom\"` to use the control slot. */\n@Component({ tag: 'q2-dropdown', shadow: true, styleUrl: 'q2-dropdown.scss' })\nexport class Q2Dropdown implements ComponentInterface {\n // #region Own Properties\n\n controlElement?: HTMLQ2BtnElement;\n dropdownItemSelector: string = 'q2-dropdown-item:not([disabled]):not([separator])';\n optionSelector: string = 'q2-option:not([disabled]):not([separator])';\n optionList: HTMLQ2OptionListElement;\n popoverElement?: HTMLQ2PopoverElement;\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region Public Property API\n\n @Prop({ reflect: true })\n additionalContext: string;\n\n /** @deprecated */\n @Prop({ reflect: true })\n alignment: 'left' | 'right';\n\n /** @deprecated */\n @Prop({ reflect: true, mutable: true })\n ariaLabel: string;\n\n /** If `true`, component expands to fill the width of its parent element. */\n @Prop({ reflect: true })\n block: boolean;\n\n /**\n * Tells the outlet what the type of object being passed in as contextValue.\n * This will allow for the hierarchy resolution logic to work to determine if an option should or should not be shown.\n *\n * @info\n * Only applicable when using `<q2-dropdown>` for outlets.\n */\n @Prop({ reflect: true })\n context: string;\n\n /**\n * Passes important information to the outlet (e.g., pass an account id that your platform can use to look up what module to show for that account type).\n *\n * @info\n * Only applicable when using `<q2-dropdown>` for outlets.\n */\n @Prop({ reflect: true })\n contextValue: string;\n\n /** Indicates the menu cannot be focused or interacted with. */\n @Prop({ reflect: true })\n disabled: boolean;\n\n /**\n * Hide's the field's `<label>` element from view.\n * @warning\n * Only use when a visible label is impractical.\n */\n @Prop({ reflect: true, mutable: true })\n hideLabel: boolean;\n\n /**\n * Instructs the component to use the action sheet workflow for displaying its options.\n *\n * For more information, see [Action Sheets](https://tecton.q2developer.com/guides/action-sheets/).\n */\n @Prop()\n hoist: boolean = !!window.Tecton?.useActionSheets;\n\n /** The icon that will render within the toggle button. You may use any of the `q2-icon` types. */\n @Prop({ reflect: true })\n icon: string;\n\n /**\n * The text that appears within the button.\n * @warning\n * This property should not be used if the `type` is `icon`.\n * @localizable\n */\n @Prop({ reflect: true, mutable: true })\n label: string;\n\n /**\n * Identifies this menu as an outlet. Used in conjunction with context and, optionally, `contextValue`.\n * @info\n * Only applicable when using `<q2-dropdown>` for outlets.\n */\n @Prop({ reflect: true })\n name: string;\n\n /**\n * Determine whether the popover is open or closed.\n *\n * @readonly\n */\n @Prop({ reflect: true, mutable: true })\n open: boolean;\n\n /** Determines the label that is applied to the option list for accessibility purposes. */\n @Prop()\n optionListLabel: string;\n\n /** @deprecated */\n @Prop({ reflect: true })\n popDirection: 'up' | 'down';\n\n /** Aligns the popover dropdown to the left or right side of the input field. */\n @Prop({ mutable: true })\n popoverAlignment: 'left' | 'right' = 'left'; // being used in dropdown.scss\n\n /**\n * Force the direction of the popover dropdown when it opens.\n * If no value is passed, the component will auto-detect the direction based on available space.\n */\n @Prop({ mutable: true })\n popoverDirection: 'up' | 'down';\n\n /**\n * Force the maximum height of the popover. This value will be interpreted as pixels.\n * If no value is passed, or the value exceeds available space, the component will auto-detect the maximum height based on available space.\n */\n @Prop()\n popoverMaxHeight: number;\n\n /** @deprecated */\n @Prop()\n popoverMinHeight: number;\n\n /**\n * Determines the display mode of the popover.\n *\n * Providing a value of `legacy` instructs the popover to use absolute positioning instead of fixed positioning.\n *\n * @info\n * This is a temporary solution to work around styling issues related to using fixed positioning for the popover\n * when nested inside of elements with transform properties. This will be removed once the popover API is available\n * for use.\n */\n @Prop({ mutable: true })\n popoverMode: 'legacy' = null;\n\n /**\n * Use with `context` to tell the outlet where it appears. It will be matched with the appropriately configured module for that context.\n * @info\n * Only applicable when using `<q2-dropdown>` for outlets.\n */\n @Prop({ reflect: true })\n resolvedType: string;\n\n /** The type of button used as the menu toggle.\n * @info\n * Type must be \"custom\" to use the custom button slot.\n */\n @Prop({ reflect: true })\n type: 'icon' | 'fab' | 'custom' | 'primary' | 'secondary' | 'neutral' = 'icon';\n\n // #endregion\n // #region Component Lifecycle Events\n\n componentWillLoad() {\n this.popDirectionHandler();\n this.alignmentHandler();\n this.ariaLabelHandler();\n }\n\n componentDidLoad() {\n this.orchestrateResolvedMenuItems();\n overrideFocus(this.hostElement);\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('focus')\n delegateFocus(event: FocusEvent) {\n if (!isEventFromElement(event, this.hostElement)) return;\n this.focusToggle();\n }\n\n @Listen('popoverStateChanged')\n popoverStateChangeHandler({ detail: { open } }: CustomEvent<{ open: boolean }>) {\n if (this.open !== open) this.open = open;\n this.popoverElement?.scrollContainerTo({ top: 0 });\n if (!open) {\n this.optionList.setActiveElement(null);\n }\n }\n\n // #endregion\n // #region Public Methods API\n\n /**\n * Emulates clicking the dropdown `<button>` to hide the popover if it is showing.\n * @testOnly\n */\n @Method()\n async closePopover() {\n if (!this.open || this.disabled) return;\n this._togglePopover();\n }\n\n /**\n * Emulates clicking the dropdown `<button>` to show the popover if it is hidden.\n * @testOnly\n */\n @Method()\n async openPopover() {\n if (this.open || this.disabled) return;\n this._togglePopover();\n }\n\n /**\n * Emulates opening the dropdown and selecting a [Dropdown Item](https://tecton.q2developer.com/design-system/q2-dropdown-item/).\n *\n * If the dropdown is closed, this will open it before selecting the item.\n *\n * If the value does not match any item's value, this method does nothing.\n * @testOnly\n */\n @Method()\n async selectItem(value: string) {\n const item = this.hostElement.querySelector<HTMLQ2DropdownItemElement>(\n `${this.dropdownItemSelector}[value=\"${value}\"]`\n );\n const itemBtn = item?.shadowRoot.querySelector<HTMLButtonElement>('.dropdown-item');\n if (!item || this.disabled) return;\n if (!this.open) {\n this.controlElement?.click();\n await waitForNextPaint();\n }\n itemBtn.click();\n await waitForNextPaint();\n }\n\n /**\n * Emulates opening the dropdown and selecting a [Dropdown Item](https://tecton.q2developer.com/design-system/q2-dropdown-item/)'s *remove* button.\n *\n * If the dropdown is closed, this will open it before selecting the remove item button.\n *\n * Requirements for this method to work properly:\n * - Provided `value` matches the item's `value` property\n * - Item has the `removable` property enabled\n * @testOnly\n */\n @Method()\n async selectRemoveItem(value: string) {\n const item = this.hostElement.querySelector<HTMLQ2DropdownItemElement>(\n `${this.dropdownItemSelector}[value=\"${value}\"]`\n );\n const removeButton = item?.shadowRoot.querySelector<HTMLButtonElement>('.remove-dropdown-item');\n if (!item || !removeButton || this.disabled) return;\n if (!this.open) {\n this.controlElement?.click();\n await waitForNextPaint();\n }\n removeButton.click();\n await waitForNextPaint();\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('additionalContext')\n additionalContextHandler() {\n this.orchestrateResolvedMenuItems();\n }\n\n @Watch('alignment')\n alignmentHandler() {\n handleRenamedProp(this, 'alignment', 'popoverAlignment');\n }\n\n @Watch('ariaLabel')\n ariaLabelHandler() {\n handleAriaLabel(this);\n }\n\n @Watch('context')\n contextHandler() {\n this.orchestrateResolvedMenuItems();\n }\n\n @Watch('contextValue')\n contextValueHandler() {\n this.orchestrateResolvedMenuItems();\n }\n\n @Watch('name')\n nameHandler() {\n this.orchestrateResolvedMenuItems();\n }\n\n @Watch('popDirection')\n popDirectionHandler() {\n handleRenamedProp(this, 'popDirection', 'popoverDirection');\n }\n\n @Watch('resolvedType')\n resolvedTypeHandler() {\n this.orchestrateResolvedMenuItems();\n }\n\n // #endregion\n // #region Local Methods\n\n get determineDropdownItemCount() {\n return this.hostElement.querySelectorAll(this.dropdownItemSelector).length;\n }\n\n get hasCustomControl() {\n return !!this.hostElement.querySelector('[slot=control]');\n }\n\n get toggleButtonProps() {\n const allowedIntents = ['primary', 'secondary', 'neutral'];\n const allowedTypes = ['icon', 'fab', 'custom', ...allowedIntents];\n const type = allowedTypes.includes(this.type) ? this.type : '';\n const icon = type === 'icon';\n const fab = type === 'fab';\n const custom = type === 'custom';\n let intent;\n if (allowedIntents.includes(type)) {\n intent = type === 'neutral' ? type : `workflow-${type}`;\n }\n const active = this.open;\n const disabled = !!this.disabled;\n const ariaExpanded = this.open;\n const className = !icon && !fab && !intent ? 'unstyled' : '';\n\n return {\n icon,\n fab,\n intent,\n active,\n disabled,\n ariaExpanded,\n className,\n custom,\n };\n }\n\n _clickItem(value: string) {\n if (!value || this.disabled) return;\n const item = this.hostElement.querySelector<HTMLQ2DropdownItemElement>(\n `${this.dropdownItemSelector}[value=\"${value}\"]`\n );\n const option = this.hostElement.querySelector<HTMLQ2OptionElement>(`${this.optionSelector}[value=\"${value}\"]`);\n item?.shadowRoot.querySelector<HTMLButtonElement>('.dropdown-item')?.click();\n option?.click();\n }\n\n async _handleActionSheet(event: MouseEvent | KeyboardEvent) {\n const { value } = await showActionSheetList(this, event);\n this._clickItem(value);\n this.controlElement.focus();\n }\n\n _togglePopover() {\n const { controlElement } = this;\n if (!controlElement) return;\n controlElement.click();\n controlElement.focus();\n controlElement.dispatchEvent(new FocusEvent('focus'));\n }\n\n focusToggle = () => {\n this.controlElement.focus();\n };\n\n handleFocusOut = (event: FocusEvent) => {\n const relatedTarget = event.relatedTarget as unknown as HTMLElement;\n if (this.popoverElement?.contains(relatedTarget)) return;\n if (this.hostElement.contains(relatedTarget)) return;\n this.open = false;\n };\n\n onClickElsewhere = (event: CustomEvent) => {\n const target = event.target as HTMLElement;\n if (target.localName === 'q2-option-list') {\n event.stopPropagation();\n }\n if (target.localName === 'click-elsewhere') {\n event.stopPropagation();\n const { popoverElement } = this;\n if (!popoverElement) return;\n popoverElement.open = false;\n }\n };\n\n onPopoverState = (event: CustomEvent<{ open: boolean; action: string }>) => {\n if (event.detail.open) return;\n this.controlElement.focus();\n };\n\n onToggleClick = async (event: MouseEvent) => {\n event.stopPropagation();\n if (shouldShowActionSheet(this)) {\n this._handleActionSheet(event);\n } else {\n await this.popoverElement.toggle();\n }\n };\n\n onToggleKeydown = async (event: KeyboardEvent) => {\n const isTabMetaOrCtrl = event.metaKey || event.ctrlKey || event.key === 'Tab';\n if (isTabMetaOrCtrl) return;\n\n event.preventDefault();\n if (shouldShowActionSheet(this, event)) {\n this._handleActionSheet(event);\n } else {\n this.optionList.handleExternalKeydown(event);\n }\n };\n\n orchestrateResolvedMenuItems() {\n if (!this.name || !this.context) {\n // this is only for contextual menu outlets\n this.removeResolvedElements();\n return;\n }\n\n this.resolveMenuItemElements()\n .then(data => {\n this.removeResolvedElements();\n data.forEach(element => {\n this.hostElement.appendChild(element);\n });\n })\n .catch(err => {\n this.removeResolvedElements();\n throw err;\n });\n }\n\n removeResolvedElements() {\n const resolvedElements = this.hostElement.querySelectorAll('q2-dropdown-item.resolved-menu-item');\n resolvedElements.forEach(element => this.hostElement.removeChild(element));\n }\n\n resolveMenu() {\n return (\n this.name &&\n window.TectonElements &&\n window.TectonElements.resolveMenu(this.name, this.contextValue, this.resolvedType, this.additionalContext)\n );\n }\n\n resolveMenuItemElements() {\n return this.resolveMenu().then(datas => {\n return datas.map(menuItemData => {\n let onClickFn;\n let queryParams;\n if (menuItemData['tct-ctxid']) {\n queryParams = {};\n queryParams[menuItemData.contextIdParamName] = menuItemData['tct-ctxid'];\n }\n\n switch (menuItemData.action) {\n case 'navigateTo':\n onClickFn = function () {\n return window.TectonElements?.navigateTo?.(\n menuItemData.featureName,\n menuItemData.moduleName,\n queryParams\n );\n };\n break;\n case 'showOverpanel':\n onClickFn = function () {\n return window.TectonElements?.showOverpanel?.(\n `${menuItemData.featureName}.${menuItemData.moduleName}`,\n queryParams,\n undefined,\n true\n );\n };\n break;\n }\n\n const newDropdownItem = document.createElement('q2-dropdown-item');\n newDropdownItem.setAttribute('value', menuItemData.itemLabel);\n newDropdownItem.classList.add('resolved-menu-item');\n newDropdownItem.textContent = menuItemData.itemLabel;\n newDropdownItem.onclick = onClickFn;\n\n return newDropdownItem;\n });\n });\n }\n\n // #endregion\n // #region Render Methods\n\n render() {\n const btnProps = this.toggleButtonProps;\n\n return (\n <click-elsewhere\n class={this.open ? 'dropdown-open' : ''}\n onChange={this.onClickElsewhere}\n test-id=\"dropdownContainer\"\n >\n <q2-btn\n ref={el => (this.controlElement = el)}\n class={btnProps.className}\n onClick={this.onToggleClick}\n onKeyDown={this.onToggleKeydown}\n fab={btnProps.fab}\n intent={btnProps.intent}\n onFocusout={this.handleFocusOut}\n active={btnProps.active}\n disabled={btnProps.disabled}\n ariaExpanded={`${!!btnProps.ariaExpanded}`}\n label={this.hideLabel && this.label ? loc(this.label) : undefined}\n hideLabel={this.hideLabel}\n ariaHasPopup=\"menu\"\n test-id=\"dropdownButton\"\n block={this.block}\n description={loc('tecton.element.dropdown.itemCount', [this.determineDropdownItemCount])}\n >\n {this.hasCustomControl ? (\n <div\n test-id=\"dropdownControl\"\n class={btnProps.custom ? '' : 'hidden'}\n >\n <slot name=\"control\" />\n </div>\n ) : (\n <Fragment>\n {this.icon ? <q2-icon type={this.icon} /> : ' '}\n {this.label && !this.hideLabel && (\n <span class=\"dropdown-button-text\">{loc(this.label)}</span>\n )}\n </Fragment>\n )}\n </q2-btn>\n <q2-popover\n ref={el => (this.popoverElement = el)}\n controlElement={this.controlElement}\n open={this.open}\n max-height={this.popoverMaxHeight}\n onFocusout={this.handleFocusOut}\n minHeight={this.popoverMinHeight}\n direction={this.popoverDirection}\n align={this.popoverAlignment}\n mode={this.popoverMode || undefined}\n block={this.block}\n >\n <q2-option-list\n onPopoverState={this.onPopoverState}\n id=\"option-list\"\n ref={el => (this.optionList = el)}\n type=\"menu\"\n label={loc('tecton.element.optionList.label', [this.optionListLabel])}\n no-select\n >\n <slot />\n </q2-option-list>\n </q2-popover>\n </click-elsewhere>\n );\n }\n\n // #endregion\n}\n"],"version":3}
@@ -126,7 +126,7 @@ const Q2Example = class {
126
126
  }, onClick: () => this.tctClick.emit(), role: "menu" }, h("slot", null))));
127
127
  }
128
128
  render() {
129
- return h(Host, { key: 'e4df51465f7c14e0ff4ae2463613e73cc6100318', attribute: "navigation" }, this.renderMenuInner());
129
+ return h(Host, { key: '2a8810e8b8152257cb5f710570a7b60708f76bde', attribute: "navigation" }, this.renderMenuInner());
130
130
  }
131
131
  get el() { return getElement(this); }
132
132
  static get watchers() { return {
@@ -51,7 +51,7 @@ const Q2FormattedText = class {
51
51
  // #region Render Methods
52
52
  render() {
53
53
  const { formattedTextClasses } = this;
54
- return (h("div", { key: '1957c3f976bc87c24859d94c27e1baf35da8fc03', class: formattedTextClasses, "aria-label": this.formattedValue }, h("span", { key: '8dac0d558d205fc183d16c4aef922ab470eec6ab' }, this.formattedValue)));
54
+ return (h("div", { key: '0deb2247f66e39d44ab56bc889520cd67caf20dc', class: formattedTextClasses, "aria-label": this.formattedValue }, h("span", { key: '7b8bba7f894f439d4628329082dd41a3629b3f79' }, this.formattedValue)));
55
55
  }
56
56
  static get watchers() { return {
57
57
  "value": ["propsUpdated"],
@@ -105,7 +105,7 @@ const Q2Item = class {
105
105
  // #region Render Methods
106
106
  render() {
107
107
  const { clickable } = this;
108
- return (h("div", { key: '0829fd5b35d9479ab8a7dae744e8a09e90a1a128', "test-id": "itemContainer", class: this.itemClasses, ref: el => (this.itemElement = el), role: clickable ? 'button' : undefined, tabIndex: clickable ? 0 : undefined }, this.hasBulletSlotContent && (h("div", { key: '6fba2ecbbe6fe30121f15cda9cc5026a5c5468c2', class: this.bulletClasses }, h("slot", { key: '9bd9880d99124c1102725b5ce6ca49ac1e229cf9', name: "bullet" }))), h("div", { key: '0c184236511ba043c91a009c93680858e34de545', class: this.mainClasses }, this.hasHeaderSlotContent && (h("div", { key: '2570b5fd60955dbbc97f5f3d941a5d653785fb0e', class: "header" }, h("slot", { key: 'a438cafe8aeded03ee814f736ae897852a9f1415', name: "header" }))), this.hasBodySlotContent && (h("div", { key: '270585a7a4ca111aedd4baeab101c353814aa72c', class: "body" }, h("slot", { key: 'cc95afec425e06c0a9edccedb0420207ccab88a0', name: "body" })))), this.hasActionSlotContent && (h("div", { key: 'c6a32baa731bd79c57a625d615058442a5bc764a', class: this.actionClasses }, h("slot", { key: '2b3104f1e0b4eed5e605c5784468f608240a881b', name: "action" }))), this.hasFooterSlotContent && (h("div", { key: '0a989b6ec5ca51e55fb44d0e90f57fe792a6bf35', class: this.footerClasses }, h("slot", { key: '76ae62c0b433f78b187853da2cf40394f7ca315e', name: "footer" })))));
108
+ return (h("div", { key: '2511d34e01575fe19d4a9becdce7a44ccc8736e7', "test-id": "itemContainer", class: this.itemClasses, ref: el => (this.itemElement = el), role: clickable ? 'button' : undefined, tabIndex: clickable ? 0 : undefined }, this.hasBulletSlotContent && (h("div", { key: '47595ae0c96465a0524c4b08f7c77997fa5ad012', class: this.bulletClasses }, h("slot", { key: '0e446493744bdc304336f20e5bab89864b430cec', name: "bullet" }))), h("div", { key: '061814832dc71b7bbe239cddb2e474f7ea91558c', class: this.mainClasses }, this.hasHeaderSlotContent && (h("div", { key: '9f27b6fa63241088951935cff169385ef23b55e4', class: "header" }, h("slot", { key: '9c99e37648c9c4c5a8b981aa16ec8a7b42a1887a', name: "header" }))), this.hasBodySlotContent && (h("div", { key: 'e8a788366c10d06fef823b9be88c40fba65d4e71', class: "body" }, h("slot", { key: '617965a59d689b0679e920794ebf9a36848f4eab', name: "body" })))), this.hasActionSlotContent && (h("div", { key: '38c6a30f60c6a8bc8c953ed4b74a3687a0ba03a1', class: this.actionClasses }, h("slot", { key: '76efb6ba1377adcb3fc850d8966ecc49b55896b5', name: "action" }))), this.hasFooterSlotContent && (h("div", { key: '9a9bf0234ebac99487797bc93afa6e73097f1e68', class: this.footerClasses }, h("slot", { key: '91abd31668cff2657ecf57ce8b9d6f63e8d375ae', name: "footer" })))));
109
109
  }
110
110
  get hostElement() { return getElement(this); }
111
111
  };
@@ -234,7 +234,7 @@ const Q2List = class {
234
234
  // #endregion
235
235
  // #region Render Methods
236
236
  render() {
237
- return (h("div", { key: 'e4371faae59ae85dee324d6d6783a4b93c23f67f', class: this.listClasses, ref: el => (this.listElement = el) }, (this.hasFilterSlot || this.hasLabelContent) && (h("div", { key: '59cc98b62d2581a66a9ed127189fb23364c49bff', class: this.headerClasses }, h("div", { key: '568b6fab57c7552d5a577d19bd31760f6d1aa461', class: "label" }, this.label), this.hasFilterSlot && h("slot", { key: 'd27e785788847cf1a422568383bfe5d986764b2b', name: "filter" }))), h("div", { key: '7a00add6911167d7a27008f10f5d44cfae5d80b2', role: "list" }, h("slot", { key: 'dd5a0290091b0f1cb00a14cde43bab36e87573d2' }))));
237
+ return (h("div", { key: 'a748db824284ab2660f437fa8687dd274247d61c', class: this.listClasses, ref: el => (this.listElement = el) }, (this.hasFilterSlot || this.hasLabelContent) && (h("div", { key: '71e253d36bade6a67869db2562534728d51e4db3', class: this.headerClasses }, h("div", { key: '1cae46b23e094964fccbb404fc96c33d31485b16', class: "label" }, this.label), this.hasFilterSlot && h("slot", { key: 'e2697d250030f34b125df9a5af14f29d733e1c72', name: "filter" }))), h("div", { key: '9b2ab45f809fa53a00cfd2fa967402b09da70ffa', role: "list" }, h("slot", { key: '6ce5ba056277fca5a01cd7a94f832bc68ef16078' }))));
238
238
  }
239
239
  get hostElement() { return getElement(this); }
240
240
  };
@@ -102,7 +102,7 @@ const Q2Legend = class {
102
102
  // #endregion
103
103
  // #region Render Methods
104
104
  render() {
105
- return (h("click-elsewhere", { key: 'b80e97d61b66d2a3950c0e680d8f6fdf0594391a', onChange: () => this.onClickElsewhere(this) }, h("ul", { key: '14dc772fa9b1608e415573e90d4c2780c12adef5' }, this.dataWithClasses.map(item => (h("li", { class: "item" }, h("button", { "test-id": "item", "aria-label": `${item.name} ${this.formatValue(item.value)}`, class: item.classes, onClick: event => this.onClick(event, item), onMouseEnter: event => this.onMouseEnter(event, item), onMouseLeave: event => this.onMouseLeave(event, item) }, h("span", { "test-id": "itemColor", class: "item-color-indicator", style: { backgroundColor: item.color }, "aria-hidden": "true" }), h("span", { "test-id": "itemName", class: "item-name" }, item.name), h("span", { id: `item-${item.id}`, "test-id": "itemValue", class: "item-value" }, this.formatValue(item.value)))))))));
105
+ return (h("click-elsewhere", { key: '14c2b27428cc8a8e95bf8df62aac0c235bd65606', onChange: () => this.onClickElsewhere(this) }, h("ul", { key: 'b597b625d0abb353d7752a9ca6ccedc9dc4eea6a' }, this.dataWithClasses.map(item => (h("li", { class: "item" }, h("button", { "test-id": "item", "aria-label": `${item.name} ${this.formatValue(item.value)}`, class: item.classes, onClick: event => this.onClick(event, item), onMouseEnter: event => this.onMouseEnter(event, item), onMouseLeave: event => this.onMouseLeave(event, item) }, h("span", { "test-id": "itemColor", class: "item-color-indicator", style: { backgroundColor: item.color }, "aria-hidden": "true" }), h("span", { "test-id": "itemName", class: "item-name" }, item.name), h("span", { id: `item-${item.id}`, "test-id": "itemValue", class: "item-value" }, this.formatValue(item.value)))))))));
106
106
  }
107
107
  static get watchers() { return {
108
108
  "hoveredItemId": ["watchHoveredItemId"],
@@ -57,7 +57,7 @@ const Q2Loc = class {
57
57
  // #endregion
58
58
  // #region Render Methods
59
59
  render() {
60
- return h("span", { key: '8774b0a4bfb39826f6d7be0640c7a0244ab22a09' }, this.displayValue);
60
+ return h("span", { key: 'c5b41696e6cc9c97491da8d5b8e2743ac1e37ca0' }, this.displayValue);
61
61
  }
62
62
  get hostElement() { return getElement(this); }
63
63
  static get watchers() { return {
@@ -62,7 +62,7 @@ const Q2Message = class {
62
62
  const addDivForAriaLive = !isFirefox && this.presentToggle;
63
63
  const { description } = this;
64
64
  const messageLabel = loc(`tecton.element.message.type.${this.type ? this.type : 'info'}`);
65
- return (h("div", { key: '862e4f7aa7ae624a695ce6727f72ed8759584173', tabindex: "-1", class: "message", role: description ? undefined : 'alert', "aria-live": description ? undefined : 'assertive', "aria-atomic": description ? undefined : 'true', "aria-relevant": description && addAriaHiddenForAriaLive ? undefined : 'all', "test-id": "messageContainer" }, this.appearance === 'standard' ? this.messageIcon(this.type) : '', addDivForAriaLive && h("div", { key: '84084e80aac97b4e4e33a2bcf348094cd88279fb', class: "sr" }), h("div", { key: '4a437099dce9df5657a7f5039a55f5b326d2ee58', class: "sr message-label" }, messageLabel), h("div", { key: '8bf021fb84aa6d4973546060acaddae5d059d351', class: "message-content", "aria-hidden": addAriaHiddenForAriaLive ? 'true' : undefined }, h("slot", { key: '1790d7a0df5758d13c8b76577a4703808cddc832' }))));
65
+ return (h("div", { key: '32df9337d60e4cde91b479f7ac2145b490c6e86f', tabindex: "-1", class: "message", role: description ? undefined : 'alert', "aria-live": description ? undefined : 'assertive', "aria-atomic": description ? undefined : 'true', "aria-relevant": description && addAriaHiddenForAriaLive ? undefined : 'all', "test-id": "messageContainer" }, this.appearance === 'standard' ? this.messageIcon(this.type) : '', addDivForAriaLive && h("div", { key: '8c85280a31471b39972eaf836eba26e46f8fa384', class: "sr" }), h("div", { key: '38197f54a04591a1b059fb84adeaa753e7d75b5a', class: "sr message-label" }, messageLabel), h("div", { key: '9cc59dd782ad77089f1e9bd9e19f03f6e2333752', class: "message-content", "aria-hidden": addAriaHiddenForAriaLive ? 'true' : undefined }, h("slot", { key: '10589fb202d11974e4a9eddd89646f88f1a38230' }))));
66
66
  }
67
67
  get hostElement() { return getElement(this); }
68
68
  };
@@ -141,10 +141,10 @@ const Q2MonthPicker = class {
141
141
  // #endregion
142
142
  // #region Render Methods
143
143
  render() {
144
- return (h("div", { key: 'a25f142e55a4b9fa27dd0be8a50a965ba79bb544', class: "month-container", onKeyDown: this.onMonthKeydown }, h("div", { key: '14c16da95a5ff20603d87e8f5bec76037d2df0dc', class: "navigation" }, h("q2-btn", { key: 'f42fcd35aa88a0fd9455e2b10fa9f71d9e706727', class: "year-btn", onClick: () => this.viewChange.emit({
144
+ return (h("div", { key: '86262b17f3ec60dd3790c116fd54b60d38db54d6', class: "month-container", onKeyDown: this.onMonthKeydown }, h("div", { key: '618578dd17aff647bbd071f78429f206ba615808', class: "navigation" }, h("q2-btn", { key: '65a83ffac1aac5188ac8299fe6cee64eb0ddaae1', class: "year-btn", onClick: () => this.viewChange.emit({
145
145
  view: 'year',
146
146
  selectedYear: this.year,
147
- }) }, h("span", { key: '48482c7f65b28b1caa86d06d04f5c0294e4effb4', class: "year" }, this.year), h("q2-icon", { key: 'e0dea457dbbeb54609bc75d4b5215893853874bc', class: "year-icon off", type: "chevron-down" })), h("div", { key: '24b722a65945224c964e54944ad810da3ae077e3', class: "month-controller" }, h("div", { key: 'a101dbfe3b8e3a071e3b835eddc1b39455391ab5', class: "cal-year-prev-next" }, h("q2-btn", { key: '8895ef11b257dc13295939d0b8cd2ab933016cd2', label: loc('tecton.element.calendar.previousYear'), "hide-label": true, class: "cal-nav-btn prev-year", "test-id": "previousYearButton", onClick: () => this.selectYear(this.year - 1) }, h("q2-icon", { key: 'af38ef5e10c5754e4a0f57a3131e7c12b6792a89', type: "arrow-left" })), h("q2-btn", { key: '03a9b7c64770e77affe5eb60e165e46f63b6d6b6', label: loc('tecton.element.calendar.nextYear'), "hide-label": true, class: "cal-nav-btn next-year", "test-id": "nextYearButton", onClick: () => this.selectYear(this.year + 1) }, h("q2-icon", { key: '951ecf4a0c546878351fef33efbfaa641c451c8e', type: "arrow-right" }))))), h("div", { key: '48084e3520d2ab0a3dd0f59387e4d4183d958679', class: "month-list", onClick: this.onMonthSelection }, this.months.map((month, index) => (h("div", { class: "month" }, h("span", { role: "button", class: "month-button", "data-index": index, "aria-label": month.label, tabindex: index === this.focusedIndex ? 0 : -1 }, month.abbr))))), this.today && (h("div", { key: '5a18fa4aef615742b863fd96c3066964186b8f92', class: "today-label" }, loc('tecton.element.calendar.today'), ": ", this.today))));
147
+ }) }, h("span", { key: 'a45b4604f888d680db4dc17bd0e0e1d2eed3406d', class: "year" }, this.year), h("q2-icon", { key: 'cd08dc672c8ad200966339d1df0664ffc711c792', class: "year-icon off", type: "chevron-down" })), h("div", { key: 'f42557dd4a8eeeb31bfc256a1508b91dc65d6a05', class: "month-controller" }, h("div", { key: '07ff15c4e7073551655b175a29a4251d02dac597', class: "cal-year-prev-next" }, h("q2-btn", { key: '969e197aba094a6c021f0917ed40da908630587f', label: loc('tecton.element.calendar.previousYear'), "hide-label": true, class: "cal-nav-btn prev-year", "test-id": "previousYearButton", onClick: () => this.selectYear(this.year - 1) }, h("q2-icon", { key: 'dbcaa8e8ddc32a3a2b376aa43236930617532dad', type: "arrow-left" })), h("q2-btn", { key: 'ad254449993df25e5da4ddb57ee7aba0d215ea59', label: loc('tecton.element.calendar.nextYear'), "hide-label": true, class: "cal-nav-btn next-year", "test-id": "nextYearButton", onClick: () => this.selectYear(this.year + 1) }, h("q2-icon", { key: '52e12f42f7ace465672863a0e0ba4df917f7412d', type: "arrow-right" }))))), h("div", { key: 'bc1ee824c1ea7123c25f3e8b42adb8618a820d8a', class: "month-list", onClick: this.onMonthSelection }, this.months.map((month, index) => (h("div", { class: "month" }, h("span", { role: "button", class: "month-button", "data-index": index, "aria-label": month.label, tabindex: index === this.focusedIndex ? 0 : -1 }, month.abbr))))), this.today && (h("div", { key: 'fce1f228472c32f7e72c9d4fa4c25db6996dc09d', class: "today-label" }, loc('tecton.element.calendar.today'), ": ", this.today))));
148
148
  }
149
149
  get hostElement() { return getElement(this); }
150
150
  };
@@ -49,7 +49,7 @@ const Q2Optgroup = class {
49
49
  // #endregion
50
50
  // #region Render Methods
51
51
  render() {
52
- return (h("div", { key: '306cf0d06e8664a616974421d45a3083235bc03b', class: "q2-optgroup-container", hidden: this.hidden, "aria-labelledby": this.headerId, role: "group" }, h("div", { key: '738affcd788d0f9e2fdf548f4f14d6d98b8a1c7e', class: "q2-optgroup-header", id: this.headerId }, (this.label && loc(this.label)) || ''), h("div", { key: 'cff8fad7e158854df77ad3d9cb85ea578aa0edc5', class: "q2-optgroup-options" }, h("slot", { key: 'd5daf0a105b29ace1c1f0daf5b99ec6bc8fc684c' }))));
52
+ return (h("div", { key: '979cb6a0423ae7373853b897ae5b48ca6f84b095', class: "q2-optgroup-container", hidden: this.hidden, "aria-labelledby": this.headerId, role: "group" }, h("div", { key: '7e62006e32a809308b63379465cc7549af2edd94', class: "q2-optgroup-header", id: this.headerId }, (this.label && loc(this.label)) || ''), h("div", { key: '49a7dece0f48e25d8dcf9104ebd8706e14624ab7', class: "q2-optgroup-options" }, h("slot", { key: '0d3418b67fbc0c951561526abc81e91503d5b976' }))));
53
53
  }
54
54
  get hostElement() { return getElement(this); }
55
55
  static get watchers() { return {
@@ -583,7 +583,7 @@ const Q2OptionList = class {
583
583
  };
584
584
  Q2OptionList.style = Q2OptionListStyle0;
585
585
 
586
- 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}";
586
+ 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}";
587
587
  const Q2PopoverStyle0 = q2PopoverCss;
588
588
 
589
589
  const Q2Popover = class {
@@ -594,13 +594,15 @@ const Q2Popover = class {
594
594
  * The number of pixels to leave between the popover and the edge of the viewport
595
595
  */
596
596
  this.displayBuffer = 10;
597
- /** remove when Popover API is supported in iOS */
598
597
  this.orientationChanged = false;
599
598
  this.handleMinHeight = () => {
600
599
  if (this.minHeight) {
601
600
  handleDeprecationWarning(this, 'minHeight', 'prop');
602
601
  }
603
602
  };
603
+ this.handlePopoverToggleEvent = (event) => {
604
+ this.popoverStateChanged.emit({ open: event.newState === 'open' });
605
+ };
604
606
  this.setAbsoluteCSSProperties = async () => {
605
607
  const { controlElement, containerElement, currentDirection, align } = this;
606
608
  if (align === 'right') {
@@ -625,25 +627,42 @@ const Q2Popover = class {
625
627
  await waitForNextPaint();
626
628
  containerElement.style.setProperty('--comp-pop-opacity', '1');
627
629
  };
628
- this.setFixedCSSProperties = async () => {
629
- var _a, _b;
630
- const { controlElement, containerElement, currentDirection, rootElementRect } = this;
630
+ this.setPopoverAPICSSProperties = async () => {
631
+ var _a, _b, _c, _d, _e, _f;
632
+ const { controlElement, containerElement, currentDirection, isModule, align } = this;
631
633
  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 : {
632
634
  top: 0,
633
635
  bottom: 0,
634
636
  left: 0,
635
637
  right: 0,
636
638
  };
637
- const popoverLeft = controlLeft - rootElementRect.left;
639
+ const popoverLeft = controlLeft;
640
+ const popoverRight = ((_c = window === null || window === void 0 ? void 0 : window.visualViewport) === null || _c === void 0 ? void 0 : _c.width) - controlRight;
641
+ if (align === 'right') {
642
+ containerElement.style.setProperty('--comp-pop-right', `${popoverRight - window.scrollX}px`);
643
+ containerElement.style.setProperty('--comp-pop-left', 'unset');
644
+ }
645
+ else {
646
+ containerElement.style.setProperty('--comp-pop-left', `${popoverLeft + window.scrollX}px`);
647
+ containerElement.style.setProperty('--comp-pop-right', 'unset');
648
+ }
638
649
  if (this.block)
639
650
  containerElement.style.setProperty('--comp-pop-width', `${(controlElement === null || controlElement === void 0 ? void 0 : controlElement.offsetWidth) || 0}px`);
640
- containerElement.style.setProperty('--comp-pop-left', `${popoverLeft}px`);
641
- containerElement.style.setProperty('--comp-pop-right', `${rootElementRect.width + rootElementRect.left - controlRight}px`);
642
651
  if (currentDirection === 'up') {
643
- containerElement.style.setProperty('--comp-pop-bottom', `${rootElementRect.height + rootElementRect.top - controlTop}px`);
652
+ if (isModule) {
653
+ containerElement.style.setProperty('--comp-pop-bottom', `${window.innerHeight - controlTop}px`);
654
+ }
655
+ else {
656
+ 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`);
657
+ }
644
658
  }
645
659
  if (currentDirection === 'down') {
646
- containerElement.style.setProperty('--comp-pop-top', `${controlBottom - rootElementRect.top}px`);
660
+ if (isModule) {
661
+ containerElement.style.setProperty('--comp-pop-top', `${controlBottom}px`);
662
+ }
663
+ else {
664
+ 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`);
665
+ }
647
666
  }
648
667
  // Wait for one paint to prevent layout thrashing
649
668
  await waitForNextPaint();
@@ -660,7 +679,7 @@ const Q2Popover = class {
660
679
  };
661
680
  this.currentDirection = undefined;
662
681
  this.show = false;
663
- this.align = undefined;
682
+ this.align = 'left';
664
683
  this.block = undefined;
665
684
  this.controlElement = undefined;
666
685
  this.direction = undefined;
@@ -673,13 +692,21 @@ const Q2Popover = class {
673
692
  // #region Component Lifecycle Events
674
693
  disconnectedCallback() {
675
694
  this.removeViewportListeners();
695
+ this.containerElement.removeEventListener('toggle', this.handlePopoverToggleEvent);
676
696
  this.containerElement = null;
677
697
  this.contentElement = null;
678
698
  this.controlElement = null;
679
- this.rootElementRect = null;
699
+ }
700
+ componentWillLoad() {
701
+ if (!this.supportsPopoverAPI) {
702
+ 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.');
703
+ this.mode = 'legacy';
704
+ }
680
705
  }
681
706
  componentDidLoad() {
682
707
  this.handleMinHeight();
708
+ if (this.supportsPopoverAPI)
709
+ this.containerElement.addEventListener('toggle', this.handlePopoverToggleEvent);
683
710
  if (this.open)
684
711
  this.determinePopDirection();
685
712
  }
@@ -706,7 +733,6 @@ const Q2Popover = class {
706
733
  this.handleMinHeight();
707
734
  }
708
735
  async openChanged(open) {
709
- this.setRootElement();
710
736
  this.popoverStateChanged.emit({ open });
711
737
  if (open) {
712
738
  this.addViewportListeners();
@@ -715,7 +741,12 @@ const Q2Popover = class {
715
741
  else {
716
742
  this.removeViewportListeners();
717
743
  this.currentDirection = undefined;
718
- this.show = false;
744
+ if (this.mode === 'legacy' || !this.supportsPopoverAPI) {
745
+ this.show = false;
746
+ }
747
+ else {
748
+ this.containerElement.hidePopover();
749
+ }
719
750
  await waitForNextPaint();
720
751
  this.clearCSSProperties();
721
752
  }
@@ -738,6 +769,9 @@ const Q2Popover = class {
738
769
  return undefined;
739
770
  }
740
771
  }
772
+ get supportsPopoverAPI() {
773
+ return Object.hasOwn(HTMLElement.prototype, 'popover');
774
+ }
741
775
  get validatedMaxHeight() {
742
776
  const { maxHeight } = this;
743
777
  return isNaN(maxHeight) ? undefined : maxHeight;
@@ -745,11 +779,10 @@ const Q2Popover = class {
745
779
  addViewportListeners() {
746
780
  var _a;
747
781
  window.addEventListener('resize', this.viewPortOrientationChanged);
748
- // #region remove when Popover API is supported in iOS
782
+ visualViewport === null || visualViewport === void 0 ? void 0 : visualViewport.addEventListener('resize', this.viewPortChanged);
749
783
  window.addEventListener('scroll', this.viewPortChanged, { passive: true, capture: true });
750
784
  (_a = screen === null || screen === void 0 ? void 0 : screen.orientation) === null || _a === void 0 ? void 0 : _a.addEventListener('orientationchange', this.viewPortOrientationChanged);
751
785
  window.addEventListener('orientationchange', this.viewPortOrientationChanged);
752
- // #endregion
753
786
  }
754
787
  clearCSSProperties() {
755
788
  this.containerElement.style.removeProperty('--comp-pop-max-height');
@@ -820,72 +853,38 @@ const Q2Popover = class {
820
853
  removeViewportListeners() {
821
854
  var _a;
822
855
  window.removeEventListener('resize', this.viewPortOrientationChanged);
823
- // #region remove when Popover API is supported in iOS
856
+ visualViewport === null || visualViewport === void 0 ? void 0 : visualViewport.removeEventListener('resize', this.viewPortChanged);
824
857
  window.removeEventListener('scroll', this.viewPortChanged, { capture: true });
825
858
  (_a = screen === null || screen === void 0 ? void 0 : screen.orientation) === null || _a === void 0 ? void 0 : _a.removeEventListener('orientationchange', this.viewPortOrientationChanged);
826
859
  window.removeEventListener('orientationchange', this.viewPortOrientationChanged);
827
- // #endregion
828
860
  }
829
861
  setDirectionAndShow(direction) {
830
- this.setRootElement();
831
862
  // Due to some runtime inconsistency across devices/browsers we need to add one more check here because the
832
863
  // popover can be closed between the time the popover is opened and the time the direction is determined
833
864
  const isOpen = this.open;
834
865
  if (!isOpen)
835
866
  return;
836
867
  this.currentDirection = direction;
837
- this.show = true;
838
- if (this.mode === 'legacy') {
868
+ if (this.mode === 'legacy' || !this.supportsPopoverAPI) {
869
+ this.show = true;
839
870
  this.setAbsoluteCSSProperties();
840
871
  }
841
872
  else {
842
- this.setFixedCSSProperties();
873
+ this.setPopoverAPICSSProperties();
874
+ this.containerElement.showPopover();
843
875
  }
844
876
  }
845
- setRootElement() {
846
- let currentElement = this.hostElement;
847
- while (currentElement && currentElement !== document.documentElement) {
848
- const computedStyle = window.getComputedStyle(currentElement);
849
- // Check if the element has any styles applied that create a new containg block
850
- if (computedStyle.transform !== 'none' ||
851
- computedStyle.filter !== 'none' ||
852
- computedStyle.perspective !== 'none' ||
853
- computedStyle.containerType !== 'normal' ||
854
- ['transform', 'perspective', 'filter'].includes(computedStyle.willChange) ||
855
- ['layout', 'paint', 'strict', 'content'].includes(computedStyle.contain)) {
856
- this.rootElementRect = currentElement.getBoundingClientRect();
857
- return;
858
- }
859
- const rootNode = currentElement.getRootNode();
860
- const isRootNodeWebComponent = typeof ShadowRoot !== 'undefined' &&
861
- rootNode instanceof ShadowRoot &&
862
- rootNode.host instanceof HTMLElement;
863
- if (isRootNodeWebComponent) {
864
- currentElement = rootNode.host;
865
- }
866
- else {
867
- currentElement = currentElement.parentElement;
868
- }
869
- }
870
- // Return the document's bounding rect if no element is found
871
- this.rootElementRect = {
872
- top: 0,
873
- bottom: 0,
874
- left: 0,
875
- right: 0,
876
- height: window.visualViewport.height,
877
- width: window.visualViewport.width,
878
- };
879
- }
880
877
  // #endregion
881
878
  // #region Render Methods
882
879
  render() {
883
- const containerClasses = ['container', this.currentDirection];
880
+ const containerClasses = ['container', this.currentDirection, this.align];
884
881
  if (this.show)
885
882
  containerClasses.push('show');
883
+ if (this.block)
884
+ containerClasses.push('block');
886
885
  if (this.mode === 'legacy')
887
886
  containerClasses.push('legacy');
888
- return (h("div", { key: '294386b6ea2ecfc2f8fe9eb6dad1bc925e2f6349', ref: el => (this.containerElement = el), class: containerClasses.join(' '), "test-id": "outerContainer", tabIndex: -1 }, h("div", { key: 'd2d59287a81a7ce3ef4275a9963a6aa7a71a360e', ref: el => (this.contentElement = el), class: "content" }, h("slot", { key: '00e78b1984a1bba43766f9d4d663ddd7b97ac667' }))));
887
+ return (h("div", { key: 'acaaed8fe34bb4ee949c4032be9a08b61a28b238', ref: el => (this.containerElement = el), class: containerClasses.join(' '), "test-id": "outerContainer", tabIndex: -1, popover: "auto" }, h("div", { key: 'b8e93864b158caa9e9e2cde64a84d9ea9288b761', ref: el => (this.contentElement = el), class: "content" }, h("slot", { key: 'e43fee80ed07626f26aba98271c8408f9d69a37e' }))));
889
888
  }
890
889
  get hostElement() { return getElement(this); }
891
890
  static get watchers() { return {