q2-tecton-elements 1.37.1 → 1.38.1

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 (501) hide show
  1. package/dist/cjs/click-elsewhere_2.cjs.entry.js +68 -58
  2. package/dist/cjs/click-elsewhere_2.cjs.entry.js.map +1 -1
  3. package/dist/cjs/{index-6f9f259c.js → index-09c712ea.js} +13 -2
  4. package/dist/cjs/index-09c712ea.js.map +1 -0
  5. package/dist/cjs/loader.cjs.js +1 -1
  6. package/dist/cjs/q2-action-sheet.cjs.entry.js +2 -2
  7. package/dist/cjs/q2-action-sheet.cjs.entry.js.map +1 -1
  8. package/dist/cjs/q2-avatar.cjs.entry.js +1 -1
  9. package/dist/cjs/q2-avatar.cjs.entry.js.map +1 -1
  10. package/dist/cjs/q2-badge.cjs.entry.js +1 -1
  11. package/dist/cjs/q2-badge.cjs.entry.js.map +1 -1
  12. package/dist/cjs/q2-btn_2.cjs.entry.js +3 -3
  13. package/dist/cjs/q2-btn_2.cjs.entry.js.map +1 -1
  14. package/dist/cjs/q2-calendar.cjs.entry.js +38 -4
  15. package/dist/cjs/q2-calendar.cjs.entry.js.map +1 -1
  16. package/dist/cjs/q2-card.cjs.entry.js +2 -2
  17. package/dist/cjs/q2-card.cjs.entry.js.map +1 -1
  18. package/dist/cjs/q2-carousel-pane.cjs.entry.js +2 -2
  19. package/dist/cjs/q2-carousel-pane.cjs.entry.js.map +1 -1
  20. package/dist/cjs/q2-carousel.cjs.entry.js +2 -2
  21. package/dist/cjs/q2-carousel.cjs.entry.js.map +1 -1
  22. package/dist/cjs/q2-chart-area.cjs.entry.js +2 -2
  23. package/dist/cjs/q2-chart-area.cjs.entry.js.map +1 -1
  24. package/dist/cjs/q2-chart-bar.cjs.entry.js +2 -2
  25. package/dist/cjs/q2-chart-bar.cjs.entry.js.map +1 -1
  26. package/dist/cjs/q2-chart-donut.cjs.entry.js +11 -2
  27. package/dist/cjs/q2-chart-donut.cjs.entry.js.map +1 -1
  28. package/dist/cjs/q2-checkbox-group.cjs.entry.js +7 -2
  29. package/dist/cjs/q2-checkbox-group.cjs.entry.js.map +1 -1
  30. package/dist/cjs/q2-checkbox.cjs.entry.js +2 -2
  31. package/dist/cjs/q2-checkbox.cjs.entry.js.map +1 -1
  32. package/dist/cjs/q2-data-table.cjs.entry.js +2 -2
  33. package/dist/cjs/q2-data-table.cjs.entry.js.map +1 -1
  34. package/dist/cjs/q2-dropdown-item.cjs.entry.js +2 -2
  35. package/dist/cjs/q2-dropdown-item.cjs.entry.js.map +1 -1
  36. package/dist/cjs/q2-dropdown.cjs.entry.js +2 -2
  37. package/dist/cjs/q2-dropdown.cjs.entry.js.map +1 -1
  38. package/dist/cjs/q2-editable-field.cjs.entry.js +26 -3
  39. package/dist/cjs/q2-editable-field.cjs.entry.js.map +1 -1
  40. package/dist/cjs/q2-icon.cjs.entry.js +2 -2
  41. package/dist/cjs/q2-icon.cjs.entry.js.map +1 -1
  42. package/dist/cjs/q2-input.cjs.entry.js +125 -12
  43. package/dist/cjs/q2-input.cjs.entry.js.map +1 -1
  44. package/dist/cjs/q2-loc.cjs.entry.js +2 -2
  45. package/dist/cjs/q2-loc.cjs.entry.js.map +1 -1
  46. package/dist/cjs/q2-message.cjs.entry.js +5 -2
  47. package/dist/cjs/q2-message.cjs.entry.js.map +1 -1
  48. package/dist/cjs/q2-month-picker.cjs.entry.js +2 -2
  49. package/dist/cjs/q2-month-picker.cjs.entry.js.map +1 -1
  50. package/dist/cjs/q2-optgroup_2.cjs.entry.js +3 -3
  51. package/dist/cjs/q2-optgroup_2.cjs.entry.js.map +1 -1
  52. package/dist/cjs/q2-option-list.cjs.entry.js +19 -11
  53. package/dist/cjs/q2-option-list.cjs.entry.js.map +1 -1
  54. package/dist/cjs/q2-pagination.cjs.entry.js +2 -2
  55. package/dist/cjs/q2-pagination.cjs.entry.js.map +1 -1
  56. package/dist/cjs/q2-pill.cjs.entry.js +2 -2
  57. package/dist/cjs/q2-pill.cjs.entry.js.map +1 -1
  58. package/dist/cjs/q2-radio-group.cjs.entry.js +7 -2
  59. package/dist/cjs/q2-radio-group.cjs.entry.js.map +1 -1
  60. package/dist/cjs/q2-radio.cjs.entry.js +2 -2
  61. package/dist/cjs/q2-radio.cjs.entry.js.map +1 -1
  62. package/dist/cjs/q2-section.cjs.entry.js +2 -2
  63. package/dist/cjs/q2-section.cjs.entry.js.map +1 -1
  64. package/dist/cjs/q2-select.cjs.entry.js +73 -20
  65. package/dist/cjs/q2-select.cjs.entry.js.map +1 -1
  66. package/dist/cjs/q2-stepper-pane.cjs.entry.js +2 -2
  67. package/dist/cjs/q2-stepper-pane.cjs.entry.js.map +1 -1
  68. package/dist/cjs/q2-stepper-vertical.cjs.entry.js +2 -2
  69. package/dist/cjs/q2-stepper-vertical.cjs.entry.js.map +1 -1
  70. package/dist/cjs/q2-stepper.cjs.entry.js +2 -2
  71. package/dist/cjs/q2-stepper.cjs.entry.js.map +1 -1
  72. package/dist/cjs/q2-tab-container.cjs.entry.js +16 -10
  73. package/dist/cjs/q2-tab-container.cjs.entry.js.map +1 -1
  74. package/dist/cjs/q2-tab-pane.cjs.entry.js +1 -1
  75. package/dist/cjs/q2-tab-pane.cjs.entry.js.map +1 -1
  76. package/dist/cjs/q2-tag.cjs.entry.js +2 -2
  77. package/dist/cjs/q2-tag.cjs.entry.js.map +1 -1
  78. package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
  79. package/dist/cjs/q2-textarea.cjs.entry.js +39 -6
  80. package/dist/cjs/q2-textarea.cjs.entry.js.map +1 -1
  81. package/dist/cjs/q2-tooltip.cjs.entry.js +2 -2
  82. package/dist/cjs/q2-tooltip.cjs.entry.js.map +1 -1
  83. package/dist/cjs/tecton-tab-pane.cjs.entry.js +1 -1
  84. package/dist/cjs/tecton-tab-pane.cjs.entry.js.map +1 -1
  85. package/dist/collection/components/q2-action-sheet/styles.css +1 -1
  86. package/dist/collection/components/q2-avatar/styles.css +1 -1
  87. package/dist/collection/components/q2-badge/styles.css +1 -1
  88. package/dist/collection/components/q2-btn/styles.css +18 -3
  89. package/dist/collection/components/q2-calendar/index.js +59 -10
  90. package/dist/collection/components/q2-calendar/index.js.map +1 -1
  91. package/dist/collection/components/q2-calendar/q2-month-picker.css +1 -1
  92. package/dist/collection/components/q2-calendar/styles.css +1 -1
  93. package/dist/collection/components/q2-card/styles.css +1 -1
  94. package/dist/collection/components/q2-carousel/styles.css +1 -1
  95. package/dist/collection/components/q2-carousel-pane/styles.css +1 -1
  96. package/dist/collection/components/q2-chart-area/styles.css +1 -1
  97. package/dist/collection/components/q2-chart-bar/styles.css +1 -1
  98. package/dist/collection/components/q2-chart-donut/index.js +12 -3
  99. package/dist/collection/components/q2-chart-donut/index.js.map +1 -1
  100. package/dist/collection/components/q2-chart-donut/styles.css +1 -1
  101. package/dist/collection/components/q2-checkbox/styles.css +84 -20
  102. package/dist/collection/components/q2-checkbox-group/index.js +10 -2
  103. package/dist/collection/components/q2-checkbox-group/index.js.map +1 -1
  104. package/dist/collection/components/q2-checkbox-group/styles.css +1 -1
  105. package/dist/collection/components/q2-data-table/index.js +6 -6
  106. package/dist/collection/components/q2-data-table/styles.css +1 -1
  107. package/dist/collection/components/q2-dropdown/styles.css +1 -1
  108. package/dist/collection/components/q2-dropdown-item/styles.css +1 -1
  109. package/dist/collection/components/q2-editable-field/index.js +44 -9
  110. package/dist/collection/components/q2-editable-field/index.js.map +1 -1
  111. package/dist/collection/components/q2-editable-field/styles.css +1 -1
  112. package/dist/collection/components/q2-icon/styles.css +1 -1
  113. package/dist/collection/components/q2-input/formatting/date.js +1 -1
  114. package/dist/collection/components/q2-input/formatting/date.js.map +1 -1
  115. package/dist/collection/components/q2-input/index.js +156 -16
  116. package/dist/collection/components/q2-input/index.js.map +1 -1
  117. package/dist/collection/components/q2-input/styles.css +64 -51
  118. package/dist/collection/components/q2-loading/styles.css +1 -1
  119. package/dist/collection/components/q2-loc/styles.css +1 -1
  120. package/dist/collection/components/q2-message/index.js +4 -1
  121. package/dist/collection/components/q2-message/index.js.map +1 -1
  122. package/dist/collection/components/q2-message/styles.css +1 -1
  123. package/dist/collection/components/q2-optgroup/styles.css +2 -2
  124. package/dist/collection/components/q2-option/styles.css +1 -1
  125. package/dist/collection/components/q2-option-list/index.js +19 -11
  126. package/dist/collection/components/q2-option-list/index.js.map +1 -1
  127. package/dist/collection/components/q2-option-list/styles.css +1 -1
  128. package/dist/collection/components/q2-pagination/styles.css +1 -1
  129. package/dist/collection/components/q2-pill/styles.css +7 -7
  130. package/dist/collection/components/q2-popover/index.js +90 -73
  131. package/dist/collection/components/q2-popover/index.js.map +1 -1
  132. package/dist/collection/components/q2-popover/styles.css +13 -13
  133. package/dist/collection/components/q2-radio/styles.css +36 -13
  134. package/dist/collection/components/q2-radio-group/index.js +10 -2
  135. package/dist/collection/components/q2-radio-group/index.js.map +1 -1
  136. package/dist/collection/components/q2-radio-group/styles.css +1 -1
  137. package/dist/collection/components/q2-section/styles.css +1 -1
  138. package/dist/collection/components/q2-select/index.js +96 -26
  139. package/dist/collection/components/q2-select/index.js.map +1 -1
  140. package/dist/collection/components/q2-select/styles.css +18 -10
  141. package/dist/collection/components/q2-stepper/styles.css +2 -12
  142. package/dist/collection/components/q2-stepper-pane/index.js +2 -2
  143. package/dist/collection/components/q2-stepper-pane/styles.css +1 -1
  144. package/dist/collection/components/q2-stepper-vertical/styles.css +1 -1
  145. package/dist/collection/components/q2-tab-container/index.js +14 -8
  146. package/dist/collection/components/q2-tab-container/index.js.map +1 -1
  147. package/dist/collection/components/q2-tab-container/styles.css +1 -1
  148. package/dist/collection/components/q2-tab-pane/styles.css +1 -1
  149. package/dist/collection/components/q2-tag/styles.css +4 -4
  150. package/dist/collection/components/q2-textarea/index.js +44 -8
  151. package/dist/collection/components/q2-textarea/index.js.map +1 -1
  152. package/dist/collection/components/q2-textarea/styles.css +69 -11
  153. package/dist/collection/components/q2-tooltip/styles.css +1 -1
  154. package/dist/collection/components/tecton-tab-pane/styles.css +1 -1
  155. package/dist/collection/utils/index.js +11 -1
  156. package/dist/collection/utils/index.js.map +1 -1
  157. package/dist/components/index10.js +1 -1
  158. package/dist/components/index10.js.map +1 -1
  159. package/dist/components/index11.js +5 -2
  160. package/dist/components/index11.js.map +1 -1
  161. package/dist/components/index12.js +1 -1
  162. package/dist/components/index12.js.map +1 -1
  163. package/dist/components/index13.js +1 -1
  164. package/dist/components/index13.js.map +1 -1
  165. package/dist/components/index14.js +18 -10
  166. package/dist/components/index14.js.map +1 -1
  167. package/dist/components/index15.js +69 -59
  168. package/dist/components/index15.js.map +1 -1
  169. package/dist/components/index16.js +12 -2
  170. package/dist/components/index16.js.map +1 -1
  171. package/dist/components/index3.js +1 -1
  172. package/dist/components/index3.js.map +1 -1
  173. package/dist/components/index4.js +1 -1
  174. package/dist/components/index4.js.map +1 -1
  175. package/dist/components/index5.js +1 -1
  176. package/dist/components/index5.js.map +1 -1
  177. package/dist/components/index6.js +1 -1
  178. package/dist/components/index6.js.map +1 -1
  179. package/dist/components/index7.js +1 -1
  180. package/dist/components/index7.js.map +1 -1
  181. package/dist/components/index8.js +1 -1
  182. package/dist/components/index8.js.map +1 -1
  183. package/dist/components/index9.js +127 -12
  184. package/dist/components/index9.js.map +1 -1
  185. package/dist/components/q2-action-sheet.js +1 -1
  186. package/dist/components/q2-action-sheet.js.map +1 -1
  187. package/dist/components/q2-calendar.js +37 -3
  188. package/dist/components/q2-calendar.js.map +1 -1
  189. package/dist/components/q2-card.js +1 -1
  190. package/dist/components/q2-card.js.map +1 -1
  191. package/dist/components/q2-carousel-pane.js +1 -1
  192. package/dist/components/q2-carousel-pane.js.map +1 -1
  193. package/dist/components/q2-carousel.js +1 -1
  194. package/dist/components/q2-carousel.js.map +1 -1
  195. package/dist/components/q2-chart-area.js +1 -1
  196. package/dist/components/q2-chart-area.js.map +1 -1
  197. package/dist/components/q2-chart-bar.js +1 -1
  198. package/dist/components/q2-chart-bar.js.map +1 -1
  199. package/dist/components/q2-chart-donut.js +10 -1
  200. package/dist/components/q2-chart-donut.js.map +1 -1
  201. package/dist/components/q2-checkbox-group.js +6 -1
  202. package/dist/components/q2-checkbox-group.js.map +1 -1
  203. package/dist/components/q2-data-table.js +1 -1
  204. package/dist/components/q2-data-table.js.map +1 -1
  205. package/dist/components/q2-dropdown.js +1 -1
  206. package/dist/components/q2-dropdown.js.map +1 -1
  207. package/dist/components/q2-editable-field.js +25 -2
  208. package/dist/components/q2-editable-field.js.map +1 -1
  209. package/dist/components/q2-loc.js +1 -1
  210. package/dist/components/q2-loc.js.map +1 -1
  211. package/dist/components/q2-month-picker.js +1 -1
  212. package/dist/components/q2-month-picker.js.map +1 -1
  213. package/dist/components/q2-pagination.js +1 -1
  214. package/dist/components/q2-pagination.js.map +1 -1
  215. package/dist/components/q2-pill.js +1 -1
  216. package/dist/components/q2-pill.js.map +1 -1
  217. package/dist/components/q2-radio-group.js +6 -1
  218. package/dist/components/q2-radio-group.js.map +1 -1
  219. package/dist/components/q2-radio.js +1 -1
  220. package/dist/components/q2-radio.js.map +1 -1
  221. package/dist/components/q2-section.js +1 -1
  222. package/dist/components/q2-section.js.map +1 -1
  223. package/dist/components/q2-select.js +74 -19
  224. package/dist/components/q2-select.js.map +1 -1
  225. package/dist/components/q2-stepper-pane.js +1 -1
  226. package/dist/components/q2-stepper-pane.js.map +1 -1
  227. package/dist/components/q2-stepper-vertical.js +1 -1
  228. package/dist/components/q2-stepper-vertical.js.map +1 -1
  229. package/dist/components/q2-stepper.js +1 -1
  230. package/dist/components/q2-stepper.js.map +1 -1
  231. package/dist/components/q2-tab-container.js +15 -9
  232. package/dist/components/q2-tab-container.js.map +1 -1
  233. package/dist/components/q2-tab-pane.js +1 -1
  234. package/dist/components/q2-tab-pane.js.map +1 -1
  235. package/dist/components/q2-tag.js +1 -1
  236. package/dist/components/q2-tag.js.map +1 -1
  237. package/dist/components/q2-textarea.js +38 -5
  238. package/dist/components/q2-textarea.js.map +1 -1
  239. package/dist/components/q2-tooltip.js +1 -1
  240. package/dist/components/q2-tooltip.js.map +1 -1
  241. package/dist/components/tecton-tab-pane.js +1 -1
  242. package/dist/components/tecton-tab-pane.js.map +1 -1
  243. package/dist/esm/click-elsewhere_2.entry.js +68 -58
  244. package/dist/esm/click-elsewhere_2.entry.js.map +1 -1
  245. package/dist/esm/{index-74a659a5.js → index-84f1034e.js} +13 -3
  246. package/dist/esm/index-84f1034e.js.map +1 -0
  247. package/dist/esm/loader.js +1 -1
  248. package/dist/esm/q2-action-sheet.entry.js +2 -2
  249. package/dist/esm/q2-action-sheet.entry.js.map +1 -1
  250. package/dist/esm/q2-avatar.entry.js +1 -1
  251. package/dist/esm/q2-avatar.entry.js.map +1 -1
  252. package/dist/esm/q2-badge.entry.js +1 -1
  253. package/dist/esm/q2-badge.entry.js.map +1 -1
  254. package/dist/esm/q2-btn_2.entry.js +3 -3
  255. package/dist/esm/q2-btn_2.entry.js.map +1 -1
  256. package/dist/esm/q2-calendar.entry.js +38 -4
  257. package/dist/esm/q2-calendar.entry.js.map +1 -1
  258. package/dist/esm/q2-card.entry.js +2 -2
  259. package/dist/esm/q2-card.entry.js.map +1 -1
  260. package/dist/esm/q2-carousel-pane.entry.js +2 -2
  261. package/dist/esm/q2-carousel-pane.entry.js.map +1 -1
  262. package/dist/esm/q2-carousel.entry.js +2 -2
  263. package/dist/esm/q2-carousel.entry.js.map +1 -1
  264. package/dist/esm/q2-chart-area.entry.js +2 -2
  265. package/dist/esm/q2-chart-area.entry.js.map +1 -1
  266. package/dist/esm/q2-chart-bar.entry.js +2 -2
  267. package/dist/esm/q2-chart-bar.entry.js.map +1 -1
  268. package/dist/esm/q2-chart-donut.entry.js +11 -2
  269. package/dist/esm/q2-chart-donut.entry.js.map +1 -1
  270. package/dist/esm/q2-checkbox-group.entry.js +7 -2
  271. package/dist/esm/q2-checkbox-group.entry.js.map +1 -1
  272. package/dist/esm/q2-checkbox.entry.js +2 -2
  273. package/dist/esm/q2-checkbox.entry.js.map +1 -1
  274. package/dist/esm/q2-data-table.entry.js +2 -2
  275. package/dist/esm/q2-data-table.entry.js.map +1 -1
  276. package/dist/esm/q2-dropdown-item.entry.js +2 -2
  277. package/dist/esm/q2-dropdown-item.entry.js.map +1 -1
  278. package/dist/esm/q2-dropdown.entry.js +2 -2
  279. package/dist/esm/q2-dropdown.entry.js.map +1 -1
  280. package/dist/esm/q2-editable-field.entry.js +26 -3
  281. package/dist/esm/q2-editable-field.entry.js.map +1 -1
  282. package/dist/esm/q2-icon.entry.js +2 -2
  283. package/dist/esm/q2-icon.entry.js.map +1 -1
  284. package/dist/esm/q2-input.entry.js +125 -12
  285. package/dist/esm/q2-input.entry.js.map +1 -1
  286. package/dist/esm/q2-loc.entry.js +2 -2
  287. package/dist/esm/q2-loc.entry.js.map +1 -1
  288. package/dist/esm/q2-message.entry.js +5 -2
  289. package/dist/esm/q2-message.entry.js.map +1 -1
  290. package/dist/esm/q2-month-picker.entry.js +2 -2
  291. package/dist/esm/q2-month-picker.entry.js.map +1 -1
  292. package/dist/esm/q2-optgroup_2.entry.js +3 -3
  293. package/dist/esm/q2-optgroup_2.entry.js.map +1 -1
  294. package/dist/esm/q2-option-list.entry.js +19 -11
  295. package/dist/esm/q2-option-list.entry.js.map +1 -1
  296. package/dist/esm/q2-pagination.entry.js +2 -2
  297. package/dist/esm/q2-pagination.entry.js.map +1 -1
  298. package/dist/esm/q2-pill.entry.js +2 -2
  299. package/dist/esm/q2-pill.entry.js.map +1 -1
  300. package/dist/esm/q2-radio-group.entry.js +7 -2
  301. package/dist/esm/q2-radio-group.entry.js.map +1 -1
  302. package/dist/esm/q2-radio.entry.js +2 -2
  303. package/dist/esm/q2-radio.entry.js.map +1 -1
  304. package/dist/esm/q2-section.entry.js +2 -2
  305. package/dist/esm/q2-section.entry.js.map +1 -1
  306. package/dist/esm/q2-select.entry.js +73 -20
  307. package/dist/esm/q2-select.entry.js.map +1 -1
  308. package/dist/esm/q2-stepper-pane.entry.js +2 -2
  309. package/dist/esm/q2-stepper-pane.entry.js.map +1 -1
  310. package/dist/esm/q2-stepper-vertical.entry.js +2 -2
  311. package/dist/esm/q2-stepper-vertical.entry.js.map +1 -1
  312. package/dist/esm/q2-stepper.entry.js +2 -2
  313. package/dist/esm/q2-stepper.entry.js.map +1 -1
  314. package/dist/esm/q2-tab-container.entry.js +16 -10
  315. package/dist/esm/q2-tab-container.entry.js.map +1 -1
  316. package/dist/esm/q2-tab-pane.entry.js +1 -1
  317. package/dist/esm/q2-tab-pane.entry.js.map +1 -1
  318. package/dist/esm/q2-tag.entry.js +2 -2
  319. package/dist/esm/q2-tag.entry.js.map +1 -1
  320. package/dist/esm/q2-tecton-elements.js +1 -1
  321. package/dist/esm/q2-textarea.entry.js +39 -6
  322. package/dist/esm/q2-textarea.entry.js.map +1 -1
  323. package/dist/esm/q2-tooltip.entry.js +2 -2
  324. package/dist/esm/q2-tooltip.entry.js.map +1 -1
  325. package/dist/esm/tecton-tab-pane.entry.js +1 -1
  326. package/dist/esm/tecton-tab-pane.entry.js.map +1 -1
  327. package/dist/q2-tecton-elements/p-059ea7c9.entry.js +2 -0
  328. package/dist/q2-tecton-elements/{p-bfd69d42.entry.js.map → p-059ea7c9.entry.js.map} +1 -1
  329. package/dist/q2-tecton-elements/p-072bda73.entry.js +2 -0
  330. package/dist/q2-tecton-elements/{p-077107c1.entry.js.map → p-072bda73.entry.js.map} +1 -1
  331. package/dist/q2-tecton-elements/p-0cade28b.entry.js +2 -0
  332. package/dist/q2-tecton-elements/{p-47c60d4a.entry.js.map → p-0cade28b.entry.js.map} +1 -1
  333. package/dist/q2-tecton-elements/p-0fb2be4c.entry.js +2 -0
  334. package/dist/q2-tecton-elements/{p-536978fe.entry.js.map → p-0fb2be4c.entry.js.map} +1 -1
  335. package/dist/q2-tecton-elements/p-107f07f2.entry.js +2 -0
  336. package/dist/q2-tecton-elements/{p-4abbd0b1.entry.js.map → p-107f07f2.entry.js.map} +1 -1
  337. package/dist/q2-tecton-elements/p-145849d0.entry.js +2 -0
  338. package/dist/q2-tecton-elements/p-145849d0.entry.js.map +1 -0
  339. package/dist/q2-tecton-elements/p-14e3c48f.entry.js +2 -0
  340. package/dist/q2-tecton-elements/p-14e3c48f.entry.js.map +1 -0
  341. package/dist/q2-tecton-elements/p-15179d55.entry.js +2 -0
  342. package/dist/q2-tecton-elements/{p-46287c02.entry.js.map → p-15179d55.entry.js.map} +1 -1
  343. package/dist/q2-tecton-elements/p-2812f9d2.entry.js +2 -0
  344. package/dist/q2-tecton-elements/{p-58cdb9c7.entry.js.map → p-2812f9d2.entry.js.map} +1 -1
  345. package/dist/q2-tecton-elements/p-29a7ca63.entry.js +2 -0
  346. package/dist/q2-tecton-elements/{p-a52371cf.entry.js.map → p-29a7ca63.entry.js.map} +1 -1
  347. package/dist/q2-tecton-elements/p-311f37e2.entry.js +2 -0
  348. package/dist/q2-tecton-elements/{p-1c993698.entry.js.map → p-311f37e2.entry.js.map} +1 -1
  349. package/dist/q2-tecton-elements/{p-9ef2829e.entry.js → p-3d82d94f.entry.js} +2 -2
  350. package/dist/q2-tecton-elements/{p-9ef2829e.entry.js.map → p-3d82d94f.entry.js.map} +1 -1
  351. package/dist/q2-tecton-elements/{p-8e7b762a.entry.js → p-52132d80.entry.js} +2 -2
  352. package/dist/q2-tecton-elements/{p-8e7b762a.entry.js.map → p-52132d80.entry.js.map} +1 -1
  353. package/dist/q2-tecton-elements/p-57e81863.entry.js +2 -0
  354. package/dist/q2-tecton-elements/{p-e45856f7.entry.js.map → p-57e81863.entry.js.map} +1 -1
  355. package/dist/q2-tecton-elements/p-5843f6c8.entry.js +2 -0
  356. package/dist/q2-tecton-elements/p-5843f6c8.entry.js.map +1 -0
  357. package/dist/q2-tecton-elements/p-5c033ed9.entry.js +2 -0
  358. package/dist/q2-tecton-elements/{p-09d4b3d3.entry.js.map → p-5c033ed9.entry.js.map} +1 -1
  359. package/dist/q2-tecton-elements/{p-a60f82c0.entry.js → p-69dcf12e.entry.js} +2 -2
  360. package/dist/q2-tecton-elements/{p-a60f82c0.entry.js.map → p-69dcf12e.entry.js.map} +1 -1
  361. package/dist/q2-tecton-elements/p-6ae87415.entry.js +2 -0
  362. package/dist/q2-tecton-elements/{p-9d743327.entry.js.map → p-6ae87415.entry.js.map} +1 -1
  363. package/dist/q2-tecton-elements/p-72b4ecc6.entry.js +2 -0
  364. package/dist/q2-tecton-elements/{p-597f8656.entry.js.map → p-72b4ecc6.entry.js.map} +1 -1
  365. package/dist/q2-tecton-elements/p-81b917a5.entry.js +2 -0
  366. package/dist/q2-tecton-elements/{p-9c9a2550.entry.js.map → p-81b917a5.entry.js.map} +1 -1
  367. package/dist/q2-tecton-elements/p-85dc889e.entry.js +2 -0
  368. package/dist/q2-tecton-elements/p-85dc889e.entry.js.map +1 -0
  369. package/dist/q2-tecton-elements/p-8f273db2.entry.js +2 -0
  370. package/dist/q2-tecton-elements/p-8f273db2.entry.js.map +1 -0
  371. package/dist/q2-tecton-elements/p-8f8d5362.entry.js +2 -0
  372. package/dist/q2-tecton-elements/p-8f8d5362.entry.js.map +1 -0
  373. package/dist/q2-tecton-elements/p-9220365b.entry.js +2 -0
  374. package/dist/q2-tecton-elements/{p-6cacc879.entry.js.map → p-9220365b.entry.js.map} +1 -1
  375. package/dist/q2-tecton-elements/{p-75fd6df5.entry.js → p-959f47ef.entry.js} +2 -2
  376. package/dist/q2-tecton-elements/{p-75fd6df5.entry.js.map → p-959f47ef.entry.js.map} +1 -1
  377. package/dist/q2-tecton-elements/p-9da0db14.entry.js +2 -0
  378. package/dist/q2-tecton-elements/{p-6170e44c.entry.js.map → p-9da0db14.entry.js.map} +1 -1
  379. package/dist/q2-tecton-elements/p-a09c90c1.entry.js +2 -0
  380. package/dist/q2-tecton-elements/{p-efbe6c17.entry.js.map → p-a09c90c1.entry.js.map} +1 -1
  381. package/dist/q2-tecton-elements/p-a4017e55.entry.js +2 -0
  382. package/dist/q2-tecton-elements/p-a4017e55.entry.js.map +1 -0
  383. package/dist/q2-tecton-elements/p-a6b03db1.entry.js +2 -0
  384. package/dist/q2-tecton-elements/p-a6b03db1.entry.js.map +1 -0
  385. package/dist/q2-tecton-elements/p-af98db79.entry.js +2 -0
  386. package/dist/q2-tecton-elements/{p-59d34a17.entry.js.map → p-af98db79.entry.js.map} +1 -1
  387. package/dist/q2-tecton-elements/{p-e8858d0d.entry.js → p-b83568e7.entry.js} +2 -2
  388. package/dist/q2-tecton-elements/p-b83568e7.entry.js.map +1 -0
  389. package/dist/q2-tecton-elements/p-bb0d4f5a.entry.js +2 -0
  390. package/dist/q2-tecton-elements/{p-ff6afb42.entry.js.map → p-bb0d4f5a.entry.js.map} +1 -1
  391. package/dist/q2-tecton-elements/p-c057134f.entry.js +2 -0
  392. package/dist/q2-tecton-elements/p-c057134f.entry.js.map +1 -0
  393. package/dist/q2-tecton-elements/p-d7fb3534.entry.js +2 -0
  394. package/dist/q2-tecton-elements/{p-3505f25c.entry.js.map → p-d7fb3534.entry.js.map} +1 -1
  395. package/dist/q2-tecton-elements/p-db3bbfb8.entry.js +2 -0
  396. package/dist/q2-tecton-elements/p-db3bbfb8.entry.js.map +1 -0
  397. package/dist/q2-tecton-elements/p-deb773a5.entry.js +2 -0
  398. package/dist/q2-tecton-elements/p-deb773a5.entry.js.map +1 -0
  399. package/dist/q2-tecton-elements/p-e4dadcd7.entry.js +2 -0
  400. package/dist/q2-tecton-elements/{p-9a28b93a.entry.js.map → p-e4dadcd7.entry.js.map} +1 -1
  401. package/dist/q2-tecton-elements/p-e98d9cf2.entry.js +2 -0
  402. package/dist/q2-tecton-elements/p-e98d9cf2.entry.js.map +1 -0
  403. package/dist/q2-tecton-elements/p-f198f77b.entry.js +2 -0
  404. package/dist/q2-tecton-elements/p-f198f77b.entry.js.map +1 -0
  405. package/dist/q2-tecton-elements/p-f34521a4.js +2 -0
  406. package/dist/q2-tecton-elements/p-f34521a4.js.map +1 -0
  407. package/dist/q2-tecton-elements/p-f3868a77.entry.js +2 -0
  408. package/dist/q2-tecton-elements/p-f3868a77.entry.js.map +1 -0
  409. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
  410. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js.map +1 -1
  411. package/dist/test/elements/q2-calendar-test.e2e.js +109 -47
  412. package/dist/test/elements/q2-calendar-test.e2e.js.map +1 -1
  413. package/dist/test/elements/q2-checkbox-test.e2e.js +156 -0
  414. package/dist/test/elements/q2-checkbox-test.e2e.js.map +1 -1
  415. package/dist/test/elements/q2-editable-field-test.e2e.js +27 -0
  416. package/dist/test/elements/q2-editable-field-test.e2e.js.map +1 -1
  417. package/dist/test/elements/q2-input-test.e2e.js +88 -4
  418. package/dist/test/elements/q2-input-test.e2e.js.map +1 -1
  419. package/dist/test/elements/q2-option-list-test.e2e.js +40 -10
  420. package/dist/test/elements/q2-option-list-test.e2e.js.map +1 -1
  421. package/dist/test/elements/q2-popover-test.e2e.js +269 -79
  422. package/dist/test/elements/q2-popover-test.e2e.js.map +1 -1
  423. package/dist/test/elements/q2-select-test.e2e.js +117 -42
  424. package/dist/test/elements/q2-select-test.e2e.js.map +1 -1
  425. package/dist/test/elements/q2-tab-container-test.e2e.js +2 -2
  426. package/dist/test/elements/q2-tab-container-test.e2e.js.map +1 -1
  427. package/dist/test/elements/q2-textarea-test.e2e.js +879 -199
  428. package/dist/test/elements/q2-textarea-test.e2e.js.map +1 -1
  429. package/dist/test/helpers.js +2 -1
  430. package/dist/test/helpers.js.map +1 -1
  431. package/dist/types/components/q2-calendar/index.d.ts +31 -0
  432. package/dist/types/components/q2-chart-donut/index.d.ts +9 -0
  433. package/dist/types/components/q2-checkbox-group/index.d.ts +5 -0
  434. package/dist/types/components/q2-editable-field/index.d.ts +23 -0
  435. package/dist/types/components/q2-input/index.d.ts +28 -2
  436. package/dist/types/components/q2-message/index.d.ts +3 -0
  437. package/dist/types/components/q2-popover/index.d.ts +9 -1
  438. package/dist/types/components/q2-radio-group/index.d.ts +5 -0
  439. package/dist/types/components/q2-select/index.d.ts +33 -3
  440. package/dist/types/components/q2-textarea/index.d.ts +12 -1
  441. package/dist/types/components.d.ts +93 -2
  442. package/dist/types/global.d.ts +2 -1
  443. package/dist/types/utils/index.d.ts +1 -0
  444. package/package.json +3 -3
  445. package/dist/cjs/index-6f9f259c.js.map +0 -1
  446. package/dist/docs.d.ts +0 -322
  447. package/dist/docs.json +0 -10294
  448. package/dist/esm/index-74a659a5.js.map +0 -1
  449. package/dist/q2-tecton-elements/p-077107c1.entry.js +0 -2
  450. package/dist/q2-tecton-elements/p-09d4b3d3.entry.js +0 -2
  451. package/dist/q2-tecton-elements/p-0d4aec6e.entry.js +0 -2
  452. package/dist/q2-tecton-elements/p-0d4aec6e.entry.js.map +0 -1
  453. package/dist/q2-tecton-elements/p-1c993698.entry.js +0 -2
  454. package/dist/q2-tecton-elements/p-252889b7.entry.js +0 -2
  455. package/dist/q2-tecton-elements/p-252889b7.entry.js.map +0 -1
  456. package/dist/q2-tecton-elements/p-25bd1b18.entry.js +0 -2
  457. package/dist/q2-tecton-elements/p-25bd1b18.entry.js.map +0 -1
  458. package/dist/q2-tecton-elements/p-2a975246.entry.js +0 -2
  459. package/dist/q2-tecton-elements/p-2a975246.entry.js.map +0 -1
  460. package/dist/q2-tecton-elements/p-30facf35.entry.js +0 -2
  461. package/dist/q2-tecton-elements/p-30facf35.entry.js.map +0 -1
  462. package/dist/q2-tecton-elements/p-3505f25c.entry.js +0 -2
  463. package/dist/q2-tecton-elements/p-46287c02.entry.js +0 -2
  464. package/dist/q2-tecton-elements/p-47c60d4a.entry.js +0 -2
  465. package/dist/q2-tecton-elements/p-4abbd0b1.entry.js +0 -2
  466. package/dist/q2-tecton-elements/p-536978fe.entry.js +0 -2
  467. package/dist/q2-tecton-elements/p-570c1d3d.entry.js +0 -2
  468. package/dist/q2-tecton-elements/p-570c1d3d.entry.js.map +0 -1
  469. package/dist/q2-tecton-elements/p-578e3f98.entry.js +0 -2
  470. package/dist/q2-tecton-elements/p-578e3f98.entry.js.map +0 -1
  471. package/dist/q2-tecton-elements/p-58cdb9c7.entry.js +0 -2
  472. package/dist/q2-tecton-elements/p-597f8656.entry.js +0 -2
  473. package/dist/q2-tecton-elements/p-59d34a17.entry.js +0 -2
  474. package/dist/q2-tecton-elements/p-5bc4d94c.entry.js +0 -2
  475. package/dist/q2-tecton-elements/p-5bc4d94c.entry.js.map +0 -1
  476. package/dist/q2-tecton-elements/p-6170e44c.entry.js +0 -2
  477. package/dist/q2-tecton-elements/p-67f33354.entry.js +0 -2
  478. package/dist/q2-tecton-elements/p-67f33354.entry.js.map +0 -1
  479. package/dist/q2-tecton-elements/p-680929be.entry.js +0 -2
  480. package/dist/q2-tecton-elements/p-680929be.entry.js.map +0 -1
  481. package/dist/q2-tecton-elements/p-6cacc879.entry.js +0 -2
  482. package/dist/q2-tecton-elements/p-7366d36d.entry.js +0 -2
  483. package/dist/q2-tecton-elements/p-7366d36d.entry.js.map +0 -1
  484. package/dist/q2-tecton-elements/p-9a28b93a.entry.js +0 -2
  485. package/dist/q2-tecton-elements/p-9c9a2550.entry.js +0 -2
  486. package/dist/q2-tecton-elements/p-9d743327.entry.js +0 -2
  487. package/dist/q2-tecton-elements/p-a52371cf.entry.js +0 -2
  488. package/dist/q2-tecton-elements/p-a53e9f1e.entry.js +0 -2
  489. package/dist/q2-tecton-elements/p-a53e9f1e.entry.js.map +0 -1
  490. package/dist/q2-tecton-elements/p-ac82ea35.entry.js +0 -2
  491. package/dist/q2-tecton-elements/p-ac82ea35.entry.js.map +0 -1
  492. package/dist/q2-tecton-elements/p-bfd69d42.entry.js +0 -2
  493. package/dist/q2-tecton-elements/p-db6921fb.entry.js +0 -2
  494. package/dist/q2-tecton-elements/p-db6921fb.entry.js.map +0 -1
  495. package/dist/q2-tecton-elements/p-e45856f7.entry.js +0 -2
  496. package/dist/q2-tecton-elements/p-e8858d0d.entry.js.map +0 -1
  497. package/dist/q2-tecton-elements/p-ef856249.js +0 -2
  498. package/dist/q2-tecton-elements/p-ef856249.js.map +0 -1
  499. package/dist/q2-tecton-elements/p-efbe6c17.entry.js +0 -2
  500. package/dist/q2-tecton-elements/p-ff6afb42.entry.js +0 -2
  501. /package/dist/types/workspace/workspace/{tecton-production_release_1.37.x → tecton-production_release_1.38.x}/packages/q2-tecton-elements/.stencil/test/helpers.d.ts +0 -0
@@ -1 +1 @@
1
- {"file":"index14.js","mappings":"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","names":[],"sources":["./src/components/q2-option-list/styles.scss?tag=q2-option-list&encapsulation=shadow","./src/components/q2-option-list/index.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions';\n\n:host {\n position: relative;\n width: 100%;\n display: block;\n line-height: var-list(var-prefixer(option-list-line-height),--app-line-height, 1.428571429em);\n}\n\n.content {\n text-align: start;\n\n :host([is-sizeable]) & {\n display: block;\n height: auto;\n }\n}\n","import {\n Component,\n Prop,\n h,\n Event,\n State,\n Element,\n ComponentInterface,\n Host,\n EventEmitter,\n Method,\n Watch,\n Listen,\n} from '@stencil/core';\nimport { isEventFromElement, loc, nextPaint, overrideFocus, waitForNextPaint } from 'src/utils';\n\nexport interface IOptionValue {\n value: string;\n display?: string;\n}\n\n@Component({\n tag: 'q2-option-list',\n shadow: true,\n styleUrl: 'styles.scss',\n})\nexport class Q2OptionList implements ComponentInterface {\n @Prop({ reflect: true }) customSearch: boolean;\n @Prop({ reflect: true }) noSelect: boolean;\n @Prop({ reflect: true }) align: 'left' | 'right';\n @Prop({ mutable: true }) selectedOptions: IOptionValue[] = [];\n @Prop({ reflect: true }) multiple: boolean;\n @Prop({ reflect: true }) disabled: boolean;\n @Prop({ reflect: true, mutable: true }) showSelected: boolean;\n /**\n * Translates to the role of the option list\n * @type {('menu' | 'listbox')}\n */\n @Prop() type: 'menu' | 'listbox' = 'listbox';\n @Prop() label: string = loc('tecton.element.optionList.label');\n\n @Event() change: EventEmitter<{ value: string; values: IOptionValue[] }>;\n @Event() popoverState: EventEmitter<{ open: boolean; action: 'close' | 'select' | 'open' }>;\n @Event({ bubbles: false }) ready: EventEmitter;\n @State() hasOptions: boolean;\n contentElement: HTMLElement;\n activeIndex: number;\n pivotIndex: number;\n scheduledAfterRender: (() => void)[] = [];\n searchString: string;\n searchStringTimer: number;\n keyStore: {\n queue: string[];\n lastPressedAt: Date;\n } = {\n queue: [],\n lastPressedAt: new Date(),\n };\n\n @Element() hostElement: HTMLElement;\n\n /// LifeCycle Hooks ///\n componentWillLoad() {\n this.hasOptions = !!this.hostElement.querySelectorAll('q2-option').length;\n }\n\n componentDidLoad(): void {\n overrideFocus(this.hostElement);\n this.checkOptions();\n this.selectedOptionsUpdated();\n this.ready.emit();\n }\n\n componentDidRender() {\n this.scheduledAfterRender.forEach(fn => fn());\n this.scheduledAfterRender = [];\n }\n\n /// Getters ///\n get allContents(): (HTMLQ2OptgroupElement | HTMLQ2OptionElement)[] {\n const rootSlot = this.getRootSlot(this.hostElement);\n const acceptedTags = ['Q2-OPTGROUP', 'Q2-OPTION'];\n return rootSlot.filter(element => acceptedTags.includes(element.tagName)) as (\n | HTMLQ2OptgroupElement\n | HTMLQ2OptionElement\n )[];\n }\n\n get allOptions(): HTMLQ2OptionElement[] {\n const contents = this.allContents;\n\n const extractOptions = (\n elements: (HTMLQ2OptgroupElement | HTMLQ2OptionElement | Element)[]\n ): HTMLQ2OptionElement[] => {\n return elements.reduce((acc, element) => {\n if (element.tagName === 'Q2-OPTGROUP') {\n return [...acc, ...extractOptions(Array.from(element.children))];\n } else if (element.tagName === 'Q2-OPTION') {\n return [...acc, element];\n } else {\n return acc;\n }\n }, []);\n };\n\n return extractOptions(contents);\n }\n\n get allVisibleOptions(): HTMLQ2OptionElement[] {\n return this.allOptions.filter(\n option => !option.hidden && !option._multiSelectHidden && !option.disabled && !option.disabledGroup\n );\n }\n\n /// Helpers ///\n async checkOptions() {\n const { type } = this;\n const options = await this.getOptions();\n if (!type) return;\n const optionRole = type === 'menu' ? 'menuitem' : 'option';\n options.forEach(option => {\n option.role = optionRole;\n });\n }\n\n getRootSlot(element: Element): Element[] {\n const slot = element.querySelector('slot');\n const assignedElements = slot?.assignedElements() ?? Array.from(element.children);\n const hasAnotherSlot = !!assignedElements.length && assignedElements[0].tagName === 'SLOT';\n if (hasAnotherSlot) {\n return this.getRootSlot(assignedElements[0]);\n } else {\n return assignedElements;\n }\n }\n\n scrollToActiveOption() {\n const activeOption = this.allOptions[this.activeIndex];\n activeOption?.scrollIntoView({ block: 'nearest' });\n }\n\n async openDropdownWithActiveElement(activeIndex: number) {\n if (this.disabled) return;\n this.activeIndex = activeIndex;\n this.popoverState.emit({ open: true, action: 'open' });\n await waitForNextPaint();\n this.setActiveOption();\n await waitForNextPaint();\n this.setFocusedOption();\n this.scrollToActiveOption();\n }\n\n getDefaultActiveIndex() {\n const { allOptions } = this;\n const firstSelected = allOptions.findIndex(element => element.selected);\n if (firstSelected > -1) return firstSelected;\n\n const firstEnabled = allOptions.findIndex(element => !element.hidden);\n if (firstEnabled > -1) return firstEnabled;\n\n return 0;\n }\n\n updateSingleOptionAttrs() {\n const { allOptions, selectedOptions } = this;\n const selectedValue = selectedOptions[0]?.value || undefined;\n allOptions.forEach(element => {\n element.selected = element.value === selectedValue;\n });\n }\n\n updateMultipleOptionAttrs() {\n const { allOptions, selectedOptions } = this;\n const selectedValues = selectedOptions.map(({ value }) => value);\n allOptions.forEach(element => {\n element.selected = selectedValues.includes(element.value);\n });\n }\n\n setActiveOption() {\n const activeIndex = this.activeIndex;\n\n this.allOptions.forEach((element, elementIndex) => {\n element.active = activeIndex === elementIndex;\n });\n }\n\n setFocusedOption() {\n const option = this.allOptions[this.activeIndex];\n if (!option) return;\n\n const isHostElementVisible = !!this.hostElement.offsetParent;\n if (isHostElementVisible) option.focus();\n else nextPaint(() => option.focus());\n }\n\n getNextVisibleIndex(direction) {\n const { allVisibleOptions, allOptions, activeIndex } = this;\n const activeOption = allOptions[activeIndex];\n const visibleActiveOptionIndex = allVisibleOptions.indexOf(activeOption);\n let nextVisibleOptionIndex = visibleActiveOptionIndex + direction;\n\n if (nextVisibleOptionIndex < 0) {\n nextVisibleOptionIndex = allVisibleOptions.length - 1;\n } else if (nextVisibleOptionIndex > allVisibleOptions.length - 1) {\n nextVisibleOptionIndex = 0;\n }\n\n const nextVisibleOption = allVisibleOptions[nextVisibleOptionIndex];\n return allOptions.indexOf(nextVisibleOption);\n }\n\n focusSelectedSibling(option: HTMLQ2OptionElement) {\n const { allVisibleOptions, allOptions } = this;\n const hasNoSiblings = allVisibleOptions.length < 2;\n if (hasNoSiblings) {\n this.showSelected = false;\n return;\n }\n\n const selectedOptionVisibleIndex = allVisibleOptions.indexOf(option);\n const nextVisibleSiblingIndex = selectedOptionVisibleIndex\n ? selectedOptionVisibleIndex - 1\n : selectedOptionVisibleIndex + 1;\n const nextVisibleSibling = allVisibleOptions[nextVisibleSiblingIndex];\n const nextSiblingIndex = allOptions.indexOf(nextVisibleSibling);\n\n this.activeIndex = nextSiblingIndex;\n this.setFocusedOption();\n this.scheduledAfterRender.push(() => {\n option._multiSelectHidden = !option.selected;\n });\n }\n\n selectOption(selectedOption: HTMLQ2OptionElement) {\n const { multiple, noSelect, showSelected } = this;\n if (!selectedOption || selectedOption.disabled || selectedOption.disabledGroup) return;\n const selectedValue = selectedOption.value;\n const valueObject = {\n value: selectedValue,\n display: selectedOption.display || selectedOption.innerText.trim(),\n };\n\n let values: IOptionValue[] = [];\n if (multiple) {\n const { selectedOptions } = this;\n const isAlreadySelected = selectedOptions.find(option => option.value === selectedValue);\n\n if (isAlreadySelected) {\n values = selectedOptions.filter(({ value }) => value !== selectedValue);\n } else {\n values = [...selectedOptions, valueObject];\n }\n\n if (showSelected) this.focusSelectedSibling(selectedOption);\n } else {\n values = [valueObject];\n }\n\n if (noSelect) this.setActiveElement(null);\n else this.selectedOptions = values;\n\n this.change.emit({ value: selectedValue, values });\n\n if (multiple) return;\n this.popoverState.emit({ open: false, action: 'select' });\n }\n\n adjustActiveOptionAndScroll(numToAdd: number) {\n this.activeIndex += numToAdd;\n this.setActiveOption();\n this.setFocusedOption();\n this.scrollToActiveOption();\n }\n\n resetTimer() {\n if (this.searchStringTimer) {\n clearTimeout(this.searchStringTimer);\n }\n\n this.searchStringTimer = window.setTimeout(() => {\n this.searchString = null;\n }, 2000);\n }\n\n searchAndFocus = (keyValue: string, shouldSelect: boolean) => {\n // pseudo search in non-searchable select\n const reorder = () => {\n this.pivotIndex = this.pivotIndex === undefined ? 0 : (this.activeIndex || 0) + 1;\n const list = this.allOptions.map((element, index) => ({ element, index }));\n return [...list.slice(this.pivotIndex), ...list.slice(0, this.pivotIndex)];\n };\n\n const buildQueue = () => {\n const now = new Date();\n if (now.getTime() - this.keyStore.lastPressedAt.getTime() > 1000) {\n // empty stored keys if delay > 1s\n this.keyStore.queue.length = 0;\n }\n if (this.keyStore.queue.length !== 1 || this.keyStore.queue[0] !== keyValue) {\n this.keyStore.queue.push(keyValue);\n }\n this.keyStore.lastPressedAt = now;\n };\n\n const searchIndex = (list: any[]) => {\n const keyStr = this.keyStore.queue.join('');\n return list.find(v => {\n return (\n !v.element.disabled &&\n v.element.display &&\n (v.element.display.match(new RegExp(`^${keyStr}`, 'i')) ||\n v.element.display.replace(/\\s/g, '').match(new RegExp(`^${keyStr}`, 'i')))\n );\n });\n };\n\n const setFocus = ({ index }) => {\n if (this.multiple) {\n // multiple: should open to make sure that which options are selected\n this.openDropdownWithActiveElement(index);\n } else {\n this.activeIndex = index;\n if (shouldSelect) this.selectOption(this.allOptions[index]);\n else this.setActiveElement(index);\n }\n };\n\n buildQueue();\n const matched = searchIndex(reorder());\n if (matched) {\n setFocus(matched);\n }\n };\n\n searchOptions(key: string, shouldSelect?: boolean) {\n this.searchString = key;\n this.searchAndFocus(key, shouldSelect);\n }\n\n /// Watchers ///\n @Watch('showSelected')\n showSelectedUpdated(showSelected: boolean) {\n if (showSelected && this.selectedOptions.length === 0) {\n this.showSelected = false;\n return;\n }\n this.allOptions.forEach(option => (option._multiSelectHidden = showSelected ? !option.selected : false));\n }\n\n @Watch('selectedOptions')\n selectedOptionsUpdated() {\n if (this.multiple) {\n this.updateMultipleOptionAttrs();\n } else {\n this.updateSingleOptionAttrs();\n }\n }\n\n /// Listeners ///\n @Listen('focus')\n delegateFocus(event: FocusEvent) {\n if (!isEventFromElement(event, this.hostElement)) return;\n this.popoverState.emit({ open: true, action: 'open' });\n const { activeIndex } = this;\n if (typeof activeIndex === 'number' && activeIndex > -1) {\n this.setActiveOption();\n this.setFocusedOption();\n } else {\n this.setDefaultActiveElement();\n }\n }\n\n @Listen('click')\n handleClick(event: MouseEvent) {\n event.stopPropagation();\n }\n\n /// Public Methods ///\n @Method()\n async setDefaultActiveElement() {\n this.activeIndex = this.getDefaultActiveIndex();\n this.setActiveOption();\n this.setFocusedOption();\n }\n\n @Method()\n async setActiveElement(index: number) {\n this.activeIndex = index;\n this.setActiveOption();\n this.setFocusedOption();\n }\n\n @Method()\n async handleExternalKeydown(event: KeyboardEvent) {\n this.externalKeydownHandler(event);\n }\n\n @Method()\n async getContents(): Promise<(HTMLQ2OptgroupElement | HTMLQ2OptionElement)[]> {\n return this.allContents;\n }\n\n @Method()\n async getOptions(): Promise<HTMLQ2OptionElement[]> {\n return this.allOptions;\n }\n\n /// Event Handlers ///\n /* tslint:disable:cyclomatic-complexity */\n externalKeydownHandler = (event: KeyboardEvent) => {\n event.stopPropagation();\n const { activeIndex, customSearch, allOptions } = this;\n const { key } = event;\n\n let nextIndex;\n switch (key) {\n case ' ':\n if (this.searchString) {\n if (customSearch) break;\n\n this.searchOptions(key, true);\n break;\n } else if (this.type === 'menu') {\n this.activeIndex = 0;\n this.openDropdownWithActiveElement(0);\n } else {\n this.setDefaultActiveElement();\n nextPaint(() => this.popoverState.emit({ open: true, action: 'open' }));\n }\n break;\n\n case 'Enter':\n if (this.type === 'menu') {\n this.activeIndex = 0;\n this.openDropdownWithActiveElement(0);\n } else {\n this.setDefaultActiveElement();\n nextPaint(() => this.popoverState.emit({ open: true, action: 'open' }));\n }\n break;\n\n case 'ArrowUp':\n event.preventDefault();\n this.activeIndex = 0;\n nextIndex = !!this.selectedOptions.length ? this.getDefaultActiveIndex() : this.getNextVisibleIndex(-1);\n if (nextIndex === -1) break;\n this.openDropdownWithActiveElement(nextIndex);\n break;\n\n case 'ArrowDown':\n event.preventDefault();\n this.activeIndex = 0;\n nextIndex = !!this.selectedOptions.length ? this.getDefaultActiveIndex() : this.getNextVisibleIndex(0);\n if (nextIndex === -1) break;\n this.openDropdownWithActiveElement(nextIndex);\n break;\n\n case 'Home':\n event.preventDefault();\n this.openDropdownWithActiveElement(0);\n break;\n\n case 'End':\n event.preventDefault();\n this.openDropdownWithActiveElement(allOptions.length - 1);\n break;\n\n case 'PageUp':\n event.preventDefault();\n this.openDropdownWithActiveElement(Math.max((activeIndex || 0) - 10, 0));\n break;\n\n case 'PageDown':\n event.preventDefault();\n this.openDropdownWithActiveElement(Math.min((activeIndex || 0) + 10, allOptions.length - 1));\n break;\n\n case 'Tab':\n this.popoverState.emit({ open: false, action: 'close' });\n break;\n\n case 'Esc':\n case 'Escape':\n if (this.noSelect) this.setActiveElement(null);\n this.popoverState.emit({ open: false, action: 'close' });\n break;\n\n default:\n if (customSearch) break;\n if (!key.match(/^[\\w]$/)) break;\n\n this.searchOptions(key, true);\n break;\n }\n };\n\n internalKeydownHandler = (event: KeyboardEvent) => {\n event.stopPropagation();\n const { activeIndex, customSearch, allOptions } = this;\n const { key, shiftKey } = event;\n\n let newOption;\n switch (key) {\n case ' ':\n if (this.searchString && !this.multiple) {\n if (customSearch) break;\n\n this.searchOptions(key, false);\n break;\n }\n\n event.preventDefault();\n newOption = allOptions.find(element => element.active);\n if (!newOption || newOption.disabled) break;\n this.selectOption(newOption);\n break;\n\n case 'Enter':\n event.preventDefault();\n newOption = allOptions.find(element => element.active);\n if (!newOption || newOption.disabled) break;\n this.selectOption(newOption);\n break;\n\n case 'ArrowUp':\n event.preventDefault();\n const isFirstOptionActive = activeIndex === 0;\n if (isFirstOptionActive) break;\n if (activeIndex === undefined) {\n this.setDefaultActiveElement();\n break;\n } else {\n const nextIndex = this.getNextVisibleIndex(-1);\n if (nextIndex === -1) break;\n this.adjustActiveOptionAndScroll(nextIndex - activeIndex);\n break;\n }\n\n case 'ArrowDown':\n event.preventDefault();\n const isLastOptionActive = activeIndex === allOptions.length - 1;\n if (isLastOptionActive) break;\n if (activeIndex === undefined) {\n this.setDefaultActiveElement();\n break;\n } else {\n const nextIndex = this.getNextVisibleIndex(1);\n if (nextIndex === -1) break;\n this.adjustActiveOptionAndScroll(nextIndex - activeIndex);\n break;\n }\n\n case 'Home':\n event.preventDefault();\n this.openDropdownWithActiveElement(0);\n break;\n\n case 'End':\n event.preventDefault();\n this.openDropdownWithActiveElement(allOptions.length - 1);\n break;\n\n case 'PageUp':\n event.preventDefault();\n this.openDropdownWithActiveElement(Math.max(activeIndex - 10, 0));\n break;\n\n case 'PageDown':\n event.preventDefault();\n this.openDropdownWithActiveElement(Math.min(activeIndex + 10, allOptions.length - 1));\n break;\n\n case 'Tab':\n if (shiftKey) break;\n if (this.multiple && this.type === 'listbox') break;\n newOption = allOptions.find(element => element.active);\n if (!newOption || newOption.disabled) return;\n this.selectOption(newOption);\n break;\n\n case 'Esc':\n case 'Escape':\n if (this.noSelect) this.setActiveElement(null);\n this.popoverState.emit({ open: false, action: 'close' });\n break;\n\n default:\n if (customSearch) break;\n if (!key.match(/^[\\w]$/)) break;\n\n this.searchOptions(key, false);\n break;\n }\n };\n /* tslint:enable:cyclomatic-complexity */\n\n focusoutHandler = (event: FocusEvent) => {\n const { relatedTarget } = event as unknown as { relatedTarget: HTMLQ2OptionElement };\n const isInDropdown = this.allOptions.includes(relatedTarget);\n const isInLightDom = !isInDropdown && this.hostElement.contains(relatedTarget);\n if (isInDropdown || isInLightDom) {\n event.stopPropagation();\n }\n };\n\n clickHandler = (event: Event) => {\n const target = event.target as HTMLQ2OptionElement;\n const option = target.closest('q2-option');\n this.selectOption(option);\n };\n\n /// DOM ///\n render() {\n return (\n <Host>\n <div\n class=\"content\"\n ref={el => (this.contentElement = el)}\n onFocusout={this.focusoutHandler}\n >\n <div\n class=\"options\"\n aria-label={loc('tecton.element.optionList.label', [this.label])}\n role={this.type || 'listbox'}\n onKeyDown={this.internalKeydownHandler}\n onClick={this.clickHandler}\n >\n <slot />\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
1
+ {"file":"index14.js","mappings":"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","names":[],"sources":["./src/components/q2-option-list/styles.scss?tag=q2-option-list&encapsulation=shadow","./src/components/q2-option-list/index.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions';\n\n:host {\n position: relative;\n width: 100%;\n display: block;\n line-height: var-list(var-prefixer(option-list-line-height),--app-line-height, 1.428571429em);\n}\n\n.content {\n text-align: start;\n\n :host([is-sizeable]) & {\n display: block;\n height: auto;\n }\n}\n","import {\n Component,\n Prop,\n h,\n Event,\n State,\n Element,\n ComponentInterface,\n Host,\n EventEmitter,\n Method,\n Watch,\n Listen,\n} from '@stencil/core';\nimport { isEventFromElement, loc, nextPaint, overrideFocus, waitForNextPaint } from 'src/utils';\n\nexport interface IOptionValue {\n value: string;\n display?: string;\n}\n\n@Component({\n tag: 'q2-option-list',\n shadow: true,\n styleUrl: 'styles.scss',\n})\nexport class Q2OptionList implements ComponentInterface {\n @Prop({ reflect: true }) customSearch: boolean;\n @Prop({ reflect: true }) noSelect: boolean;\n @Prop({ reflect: true }) align: 'left' | 'right';\n @Prop({ mutable: true }) selectedOptions: IOptionValue[] = [];\n @Prop({ reflect: true }) multiple: boolean;\n @Prop({ reflect: true }) disabled: boolean;\n @Prop({ reflect: true, mutable: true }) showSelected: boolean;\n /**\n * Translates to the role of the option list\n * @type {('menu' | 'listbox')}\n */\n @Prop() type: 'menu' | 'listbox' = 'listbox';\n @Prop() label: string = loc('tecton.element.optionList.label');\n\n @Event() change: EventEmitter<{ value: string; values: IOptionValue[] }>;\n @Event() popoverState: EventEmitter<{ open: boolean; action: 'close' | 'select' | 'open' }>;\n @Event({ bubbles: false }) ready: EventEmitter;\n @State() hasOptions: boolean;\n contentElement: HTMLElement;\n activeIndex: number;\n pivotIndex: number;\n scheduledAfterRender: (() => void)[] = [];\n searchString: string;\n searchStringTimer: number;\n keyStore: {\n queue: string[];\n lastPressedAt: Date;\n } = {\n queue: [],\n lastPressedAt: new Date(),\n };\n\n @Element() hostElement: HTMLElement;\n\n /// LifeCycle Hooks ///\n componentWillLoad() {\n this.hasOptions = !!this.hostElement.querySelectorAll('q2-option').length;\n }\n\n componentDidLoad(): void {\n overrideFocus(this.hostElement);\n this.checkOptions();\n this.selectedOptionsUpdated();\n this.ready.emit();\n }\n\n componentDidRender() {\n this.scheduledAfterRender.forEach(fn => fn());\n this.scheduledAfterRender = [];\n }\n\n /// Getters ///\n get allContents(): (HTMLQ2OptgroupElement | HTMLQ2OptionElement)[] {\n const rootSlot = this.getRootSlot(this.hostElement);\n const acceptedTags = ['Q2-OPTGROUP', 'Q2-OPTION'];\n return rootSlot.filter(element => acceptedTags.includes(element.tagName)) as (\n | HTMLQ2OptgroupElement\n | HTMLQ2OptionElement\n )[];\n }\n\n get allOptions(): HTMLQ2OptionElement[] {\n const contents = this.allContents;\n\n const extractOptions = (\n elements: (HTMLQ2OptgroupElement | HTMLQ2OptionElement | Element)[]\n ): HTMLQ2OptionElement[] => {\n return elements.reduce((acc, element) => {\n if (element.tagName === 'Q2-OPTGROUP') {\n return [...acc, ...extractOptions(Array.from(element.children))];\n } else if (element.tagName === 'Q2-OPTION') {\n return [...acc, element];\n } else {\n return acc;\n }\n }, []);\n };\n\n return extractOptions(contents);\n }\n\n get allVisibleOptions(): HTMLQ2OptionElement[] {\n return this.allOptions.filter(\n option => !option.hidden && !option._multiSelectHidden && !option.disabled && !option.disabledGroup\n );\n }\n\n /// Helpers ///\n async checkOptions() {\n const { type } = this;\n const options = await this.getOptions();\n if (!type) return;\n const optionRole = type === 'menu' ? 'menuitem' : 'option';\n options.forEach(option => {\n option.role = optionRole;\n });\n }\n\n getRootSlot(element: Element): Element[] {\n const slot = element.querySelector('slot');\n const assignedElements = slot?.assignedElements() ?? Array.from(element.children);\n const hasAnotherSlot = !!assignedElements.length && assignedElements[0].tagName === 'SLOT';\n if (hasAnotherSlot) {\n return this.getRootSlot(assignedElements[0]);\n } else {\n return assignedElements;\n }\n }\n\n scrollToActiveOption() {\n const activeOption = this.allOptions[this.activeIndex];\n activeOption?.scrollIntoView({ block: 'nearest' });\n }\n\n async openDropdownWithActiveElement(activeIndex: number) {\n if (this.disabled) return;\n this.activeIndex = activeIndex;\n this.popoverState.emit({ open: true, action: 'open' });\n await waitForNextPaint();\n this.setActiveOption();\n await waitForNextPaint();\n this.setFocusedOption();\n this.scrollToActiveOption();\n }\n\n getDefaultActiveIndex() {\n const { allOptions } = this;\n const firstSelected = allOptions.findIndex(element => element.selected);\n if (firstSelected > -1) return firstSelected;\n\n const firstEnabled = allOptions.findIndex(element => !element.hidden);\n if (firstEnabled > -1) return firstEnabled;\n\n return 0;\n }\n\n updateSingleOptionAttrs() {\n const { allOptions, selectedOptions } = this;\n const selectedValue = selectedOptions[0]?.value || undefined;\n allOptions.forEach(element => {\n element.selected = element.value === selectedValue;\n });\n }\n\n updateMultipleOptionAttrs() {\n const { allOptions, selectedOptions } = this;\n const selectedValues = selectedOptions.map(({ value }) => value);\n allOptions.forEach(element => {\n element.selected = selectedValues.includes(element.value);\n });\n }\n\n setActiveOption() {\n const activeIndex = this.activeIndex;\n\n this.allOptions.forEach((element, elementIndex) => {\n element.active = activeIndex === elementIndex;\n });\n }\n\n setFocusedOption() {\n const option = this.allOptions[this.activeIndex];\n if (!option) return;\n\n const isHostElementVisible = !!this.hostElement.offsetParent;\n if (isHostElementVisible) option.focus();\n else nextPaint(() => option.focus());\n }\n\n getNextVisibleIndex(direction) {\n const { allVisibleOptions, allOptions, activeIndex } = this;\n const activeOption = allOptions[activeIndex];\n const visibleActiveOptionIndex = allVisibleOptions.indexOf(activeOption);\n let nextVisibleOptionIndex = visibleActiveOptionIndex + direction;\n\n if (nextVisibleOptionIndex < 0) {\n nextVisibleOptionIndex = allVisibleOptions.length - 1;\n } else if (nextVisibleOptionIndex > allVisibleOptions.length - 1) {\n nextVisibleOptionIndex = 0;\n }\n\n const nextVisibleOption = allVisibleOptions[nextVisibleOptionIndex];\n return allOptions.indexOf(nextVisibleOption);\n }\n\n focusSelectedSibling(option: HTMLQ2OptionElement) {\n const { allVisibleOptions, allOptions } = this;\n const hasNoSiblings = allVisibleOptions.length < 2;\n if (hasNoSiblings) {\n this.showSelected = false;\n return;\n }\n\n const selectedOptionVisibleIndex = allVisibleOptions.indexOf(option);\n const nextVisibleSiblingIndex = selectedOptionVisibleIndex\n ? selectedOptionVisibleIndex - 1\n : selectedOptionVisibleIndex + 1;\n const nextVisibleSibling = allVisibleOptions[nextVisibleSiblingIndex];\n const nextSiblingIndex = allOptions.indexOf(nextVisibleSibling);\n\n this.activeIndex = nextSiblingIndex;\n this.setFocusedOption();\n this.scheduledAfterRender.push(() => {\n option._multiSelectHidden = !option.selected;\n });\n }\n\n selectOption(selectedOption: HTMLQ2OptionElement) {\n const { multiple, noSelect, showSelected } = this;\n if (!selectedOption || selectedOption.disabled || selectedOption.disabledGroup) return;\n const selectedValue = selectedOption.value;\n const valueObject = {\n value: selectedValue,\n display: selectedOption.display || selectedOption.innerText.trim(),\n };\n\n let values: IOptionValue[] = [];\n if (multiple) {\n const { selectedOptions } = this;\n const isAlreadySelected = selectedOptions.find(option => option.value === selectedValue);\n\n if (isAlreadySelected) {\n values = selectedOptions.filter(({ value }) => value !== selectedValue);\n } else {\n values = [...selectedOptions, valueObject];\n }\n\n if (showSelected) this.focusSelectedSibling(selectedOption);\n } else {\n values = [valueObject];\n }\n\n if (noSelect) this.setActiveElement(null);\n else this.selectedOptions = values;\n\n this.change.emit({ value: selectedValue, values });\n }\n\n adjustActiveOptionAndScroll(numToAdd: number) {\n this.activeIndex += numToAdd;\n this.setActiveOption();\n this.setFocusedOption();\n this.scrollToActiveOption();\n }\n\n resetTimer() {\n if (this.searchStringTimer) {\n clearTimeout(this.searchStringTimer);\n }\n\n this.searchStringTimer = window.setTimeout(() => {\n this.searchString = null;\n }, 2000);\n }\n\n searchAndFocus = (keyValue: string, shouldSelect: boolean) => {\n // pseudo search in non-searchable select\n const reorder = () => {\n this.pivotIndex = this.pivotIndex === undefined ? 0 : (this.activeIndex || 0) + 1;\n const list = this.allOptions.map((element, index) => ({ element, index }));\n return [...list.slice(this.pivotIndex), ...list.slice(0, this.pivotIndex)];\n };\n\n const buildQueue = () => {\n const now = new Date();\n if (now.getTime() - this.keyStore.lastPressedAt.getTime() > 1000) {\n // empty stored keys if delay > 1s\n this.keyStore.queue.length = 0;\n }\n if (this.keyStore.queue.length !== 1 || this.keyStore.queue[0] !== keyValue) {\n this.keyStore.queue.push(keyValue);\n }\n this.keyStore.lastPressedAt = now;\n };\n\n const searchIndex = (list: any[]) => {\n const keyStr = this.keyStore.queue.join('');\n return list.find(v => {\n return (\n !v.element.disabled &&\n v.element.display &&\n (v.element.display.match(new RegExp(`^${keyStr}`, 'i')) ||\n v.element.display.replace(/\\s/g, '').match(new RegExp(`^${keyStr}`, 'i')))\n );\n });\n };\n\n const setFocus = ({ index }) => {\n if (this.multiple) {\n // multiple: should open to make sure that which options are selected\n this.openDropdownWithActiveElement(index);\n } else {\n this.activeIndex = index;\n if (shouldSelect) {\n this.selectOption(this.allOptions[index]);\n this.popoverState.emit({ open: false, action: 'select' });\n } else this.setActiveElement(index);\n }\n };\n\n buildQueue();\n const matched = searchIndex(reorder());\n if (matched) {\n setFocus(matched);\n }\n };\n\n searchOptions(key: string, shouldSelect?: boolean) {\n this.searchString = key;\n this.searchAndFocus(key, shouldSelect);\n }\n\n /// Watchers ///\n @Watch('showSelected')\n showSelectedUpdated(showSelected: boolean) {\n if (showSelected && this.selectedOptions.length === 0) {\n this.showSelected = false;\n return;\n }\n this.allOptions.forEach(option => (option._multiSelectHidden = showSelected ? !option.selected : false));\n }\n\n @Watch('selectedOptions')\n selectedOptionsUpdated() {\n if (this.multiple) {\n this.updateMultipleOptionAttrs();\n } else {\n this.updateSingleOptionAttrs();\n }\n }\n\n /// Listeners ///\n @Listen('focus')\n delegateFocus(event: FocusEvent) {\n if (!isEventFromElement(event, this.hostElement)) return;\n this.popoverState.emit({ open: true, action: 'open' });\n const { activeIndex } = this;\n if (typeof activeIndex === 'number' && activeIndex > -1) {\n this.setActiveOption();\n this.setFocusedOption();\n } else {\n this.setDefaultActiveElement();\n }\n }\n\n @Listen('click')\n handleClick(event: MouseEvent) {\n event.stopPropagation();\n }\n\n /// Public Methods ///\n @Method()\n async setDefaultActiveElement() {\n this.activeIndex = this.getDefaultActiveIndex();\n this.setActiveOption();\n this.setFocusedOption();\n }\n\n @Method()\n async setActiveElement(index: number) {\n this.activeIndex = index;\n this.setActiveOption();\n this.setFocusedOption();\n }\n\n @Method()\n async handleExternalKeydown(event: KeyboardEvent) {\n this.externalKeydownHandler(event);\n }\n\n @Method()\n async getContents(): Promise<(HTMLQ2OptgroupElement | HTMLQ2OptionElement)[]> {\n return this.allContents;\n }\n\n @Method()\n async getOptions(): Promise<HTMLQ2OptionElement[]> {\n return this.allOptions;\n }\n\n /// Event Handlers ///\n /* tslint:disable:cyclomatic-complexity */\n externalKeydownHandler = (event: KeyboardEvent) => {\n event.stopPropagation();\n const { activeIndex, customSearch, allOptions } = this;\n const { key } = event;\n\n let nextIndex;\n switch (key) {\n case ' ':\n if (this.searchString) {\n if (customSearch) break;\n\n this.searchOptions(key, true);\n break;\n } else if (this.type === 'menu') {\n this.activeIndex = 0;\n this.openDropdownWithActiveElement(0);\n } else {\n this.setDefaultActiveElement();\n nextPaint(() => this.popoverState.emit({ open: true, action: 'open' }));\n }\n break;\n\n case 'Enter':\n if (this.type === 'menu') {\n this.activeIndex = 0;\n this.openDropdownWithActiveElement(0);\n } else {\n this.setDefaultActiveElement();\n nextPaint(() => this.popoverState.emit({ open: true, action: 'open' }));\n }\n break;\n\n case 'ArrowUp':\n event.preventDefault();\n this.activeIndex = 0;\n nextIndex = !!this.selectedOptions.length ? this.getDefaultActiveIndex() : this.getNextVisibleIndex(-1);\n if (nextIndex === -1) break;\n this.openDropdownWithActiveElement(nextIndex);\n break;\n\n case 'ArrowDown':\n event.preventDefault();\n this.activeIndex = 0;\n nextIndex = !!this.selectedOptions.length ? this.getDefaultActiveIndex() : this.getNextVisibleIndex(0);\n if (nextIndex === -1) break;\n this.openDropdownWithActiveElement(nextIndex);\n break;\n\n case 'Home':\n event.preventDefault();\n this.openDropdownWithActiveElement(0);\n break;\n\n case 'End':\n event.preventDefault();\n this.openDropdownWithActiveElement(allOptions.length - 1);\n break;\n\n case 'PageUp':\n event.preventDefault();\n this.openDropdownWithActiveElement(Math.max((activeIndex || 0) - 10, 0));\n break;\n\n case 'PageDown':\n event.preventDefault();\n this.openDropdownWithActiveElement(Math.min((activeIndex || 0) + 10, allOptions.length - 1));\n break;\n\n case 'Tab':\n this.popoverState.emit({ open: false, action: 'close' });\n break;\n\n case 'Esc':\n case 'Escape':\n if (this.noSelect) this.setActiveElement(null);\n this.popoverState.emit({ open: false, action: 'close' });\n break;\n\n default:\n if (customSearch) break;\n if (!key.match(/^[\\w]$/)) break;\n\n this.searchOptions(key, true);\n break;\n }\n };\n\n internalKeydownHandler = (event: KeyboardEvent) => {\n event.stopPropagation();\n const { activeIndex, customSearch, allOptions, multiple } = this;\n const { key, shiftKey } = event;\n\n let newOption;\n switch (key) {\n case ' ':\n if (this.searchString && !this.multiple) {\n if (customSearch) break;\n\n this.searchOptions(key, false);\n break;\n }\n\n event.preventDefault();\n newOption = allOptions.find(element => element.active);\n if (!newOption || newOption.disabled) break;\n this.selectOption(newOption);\n if (multiple) break;\n this.popoverState.emit({ open: false, action: 'select' });\n break;\n\n case 'Enter':\n event.preventDefault();\n newOption = allOptions.find(element => element.active);\n if (!newOption || newOption.disabled) break;\n this.selectOption(newOption);\n if (multiple) break;\n this.popoverState.emit({ open: false, action: 'select' });\n break;\n\n case 'ArrowUp':\n event.preventDefault();\n const isFirstOptionActive = activeIndex === 0;\n if (isFirstOptionActive) break;\n if (activeIndex === undefined) {\n this.setDefaultActiveElement();\n break;\n } else {\n const nextIndex = this.getNextVisibleIndex(-1);\n if (nextIndex === -1) break;\n this.adjustActiveOptionAndScroll(nextIndex - activeIndex);\n break;\n }\n\n case 'ArrowDown':\n event.preventDefault();\n const isLastOptionActive = activeIndex === allOptions.length - 1;\n if (isLastOptionActive) break;\n if (activeIndex === undefined) {\n this.setDefaultActiveElement();\n break;\n } else {\n const nextIndex = this.getNextVisibleIndex(1);\n if (nextIndex === -1) break;\n this.adjustActiveOptionAndScroll(nextIndex - activeIndex);\n break;\n }\n\n case 'Home':\n event.preventDefault();\n this.openDropdownWithActiveElement(0);\n break;\n\n case 'End':\n event.preventDefault();\n this.openDropdownWithActiveElement(allOptions.length - 1);\n break;\n\n case 'PageUp':\n event.preventDefault();\n this.openDropdownWithActiveElement(Math.max(activeIndex - 10, 0));\n break;\n\n case 'PageDown':\n event.preventDefault();\n this.openDropdownWithActiveElement(Math.min(activeIndex + 10, allOptions.length - 1));\n break;\n\n case 'Tab':\n if (shiftKey) break;\n if (this.multiple && this.type === 'listbox') break;\n newOption = allOptions.find(element => element.active);\n if (!newOption || newOption.disabled) return;\n this.selectOption(newOption);\n break;\n\n case 'Esc':\n case 'Escape':\n if (this.noSelect) this.setActiveElement(null);\n this.popoverState.emit({ open: false, action: 'close' });\n break;\n\n default:\n if (customSearch) break;\n if (!key.match(/^[\\w]$/)) break;\n\n this.searchOptions(key, false);\n break;\n }\n };\n /* tslint:enable:cyclomatic-complexity */\n\n focusoutHandler = (event: FocusEvent) => {\n const { relatedTarget } = event as unknown as { relatedTarget: HTMLQ2OptionElement };\n const isInQ2OptionList = this.allOptions.includes(relatedTarget);\n const isInLightDom = !isInQ2OptionList && this.hostElement.contains(relatedTarget);\n if (isInQ2OptionList || isInLightDom) {\n event.stopPropagation();\n }\n };\n\n clickHandler = (event: Event) => {\n const target = event.target as HTMLQ2OptionElement;\n const option = target.closest('q2-option');\n this.selectOption(option);\n if (this.multiple) return;\n this.popoverState.emit({ open: false, action: 'select' });\n };\n\n /// DOM ///\n render() {\n return (\n <Host>\n <div\n class=\"content\"\n ref={el => (this.contentElement = el)}\n onFocusout={this.focusoutHandler}\n >\n <div\n class=\"options\"\n aria-label={loc('tecton.element.optionList.label', [this.label])}\n aria-multiselectable={`${!!this.multiple}`}\n role={this.type || 'listbox'}\n onKeyDown={this.internalKeydownHandler}\n onClick={this.clickHandler}\n >\n <slot />\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
@@ -1,7 +1,7 @@
1
1
  import { proxyCustomElement, HTMLElement, createEvent, h } from '@stencil/core/internal/client';
2
- import { r as resizeIframe, w as waitForNextPaint } from './index16.js';
2
+ import { j as handleDeprecationWarning, r as resizeIframe, n as nextPaint, w as waitForNextPaint } from './index16.js';
3
3
 
4
- const stylesCss = "*{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 #33b4ff #06C)}: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}:host{display:block;width:100%}:host([align=right]){display:block;position:absolute;right:0;text-align:end;left:unset}.container{display:none;overflow:hidden;opacity:0;height:0;position:absolute;top:var(--tct-popover-top, var(--t-popover-top, initial));visibility:hidden;background:var(--tct-popover-background, var(--tct-popover-background-color, var(--t-popover-background-color, var(--app-white, #ffffff))));color:var(--tct-popover-text-color, var(--t-popover-text-color, var(--t-text, #4d4d4d)));z-index:var(--tct-popover-z-index, var(--t-popover-z-index, 100));width:max-content;min-width:var(--tct-popover-min-width, var(--t-popover-min-width, 135px));box-shadow:var(--tct-popover-box-shadow, var(--t-popover-box-shadow, var(--app-shadow-1, 0 2px 4px rgba(0, 0, 0, 0.3))));text-align:start;left:0;border-radius:var(--tct-popover-border-radius, var(--t-popover-border-radius, 0));max-height:var(--comp-pop-max-height);--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, 3px)));--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}.container::-webkit-scrollbar{width:var(--comp-scrollbar-size);height:var(--comp-scrollbar-size);margin:5px}.container::-webkit-scrollbar-thumb{background:var(--comp-scrollbar-color);border-radius:var(--comp-scrollbar-border-radius)}.container::-webkit-scrollbar-track{background:transparent;border-radius:var(--comp-scrollbar-border-radius)}:host([block]) .container{left:unset;right:unset;width:100%;min-width:var(--tct-popover-min-width, var(--t-popover-min-width, unset))}:host([align=right]) .container{right:0;text-align:end;left:unset}:host([open]) .container{visibility:visible}:host([open]) .container.show{height:auto;overflow:auto;opacity:1}.container.up{bottom:var(--comp-pop-offset)}click-elsewhere{position:relative;display:block}.content{height:auto}";
4
+ const stylesCss = "*{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}:host{display:block;width:100%}:host([align=right]){display:block;position:absolute;right:0;text-align:end;left:unset}.container{display:none;overflow:hidden;opacity:0;height:0;position:absolute;top:var(--tct-popover-top, initial);background:var(--tct-popover-background, var(--app-white, #ffffff));color:var(--tct-popover-font-color, var(--t-text, #4d4d4d));z-index:var(--tct-popover-z-index, 100);width:max-content;min-width:var(--tct-popover-min-width, 135px);box-shadow:var(--tct-popover-box-shadow, var(--app-shadow-1, 0 2px 4px rgba(0, 0, 0, 0.3)));text-align:start;left:0;margin-block:var(--tct-popover-margin-block, 0);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);--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, 3px)));--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}.container::-webkit-scrollbar{width:var(--comp-scrollbar-size);height:var(--comp-scrollbar-size);margin:5px}.container::-webkit-scrollbar-thumb{background:var(--comp-scrollbar-color);border-radius:var(--comp-scrollbar-border-radius)}.container::-webkit-scrollbar-track{background:transparent;border-radius:var(--comp-scrollbar-border-radius)}:host([block]) .container{left:unset;right:unset;width:100%;min-width:var(--tct-popover-min-width, unset)}:host([align=right]) .container{right:0;text-align:end;left:unset}:host([open]) .container.show{height:auto;overflow:auto;opacity:1}.container.up{bottom:var(--comp-pop-offset)}click-elsewhere{position:relative;display:block}.content{height:auto}";
5
5
 
6
6
  const Q2Popover = /*@__PURE__*/ proxyCustomElement(class Q2Popover extends HTMLElement {
7
7
  constructor() {
@@ -10,7 +10,16 @@ const Q2Popover = /*@__PURE__*/ proxyCustomElement(class Q2Popover extends HTMLE
10
10
  this.__attachShadow();
11
11
  this.popoverStateChanged = createEvent(this, "popoverStateChanged", 7);
12
12
  this.scheduledAfterRender = [];
13
+ /**
14
+ * The number of pixels to leave between the popover and the edge of the viewport
15
+ */
16
+ this.displayBuffer = 10;
13
17
  /// Helpers ///
18
+ this.handleMinHeight = () => {
19
+ if (this.minHeight) {
20
+ handleDeprecationWarning(this, 'minHeight', 'prop');
21
+ }
22
+ };
14
23
  this.viewPortChanged = () => {
15
24
  if (!this.open)
16
25
  return;
@@ -20,13 +29,14 @@ const Q2Popover = /*@__PURE__*/ proxyCustomElement(class Q2Popover extends HTMLE
20
29
  this.align = undefined;
21
30
  this.open = undefined;
22
31
  this.block = undefined;
23
- this.minHeight = undefined;
24
32
  this.controlElement = undefined;
33
+ this.minHeight = undefined;
25
34
  this.currentDirection = undefined;
26
35
  this.show = false;
27
36
  }
28
37
  /// Lifecycle hooks ///
29
38
  componentDidLoad() {
39
+ this.handleMinHeight();
30
40
  if (this.open)
31
41
  this.determinePopDirection();
32
42
  }
@@ -57,11 +67,16 @@ const Q2Popover = /*@__PURE__*/ proxyCustomElement(class Q2Popover extends HTMLE
57
67
  else {
58
68
  this.removeViewportListeners();
59
69
  this.currentDirection = undefined;
60
- this.containerElement.style.removeProperty('display');
61
- this.containerElement.style.removeProperty('--comp-pop-max-height');
62
70
  this.show = false;
71
+ nextPaint(() => {
72
+ this.containerElement.style.removeProperty('--comp-pop-max-height');
73
+ this.containerElement.style.removeProperty('display');
74
+ });
63
75
  }
64
76
  }
77
+ minHeightProvided() {
78
+ this.handleMinHeight();
79
+ }
65
80
  /// Listeners ///
66
81
  popoverStateHandler(event) {
67
82
  const { detail: { open }, } = event;
@@ -85,71 +100,65 @@ const Q2Popover = /*@__PURE__*/ proxyCustomElement(class Q2Popover extends HTMLE
85
100
  this.currentDirection = direction;
86
101
  this.show = true;
87
102
  }
103
+ get isModule() {
104
+ var _a, _b;
105
+ const isIframe = window !== window.top;
106
+ const hasPlatformDimensions = Object.keys((_b = (_a = window.Tecton) === null || _a === void 0 ? void 0 : _a.platformDimensions) !== null && _b !== void 0 ? _b : {}).length > 0;
107
+ return isIframe && hasPlatformDimensions;
108
+ }
88
109
  async determinePopDirection() {
89
- var _a, _b, _c, _d, _e, _f, _g, _h, _j;
90
- const { containerElement, contentElement, direction, controlElement, currentDirection } = this;
110
+ var _a, _b;
111
+ const { containerElement, direction, controlElement, displayBuffer } = this;
91
112
  if (containerElement)
92
113
  containerElement.style.maxHeight = null;
93
- // If the direction is already set then use it, otherwise use the current direction
94
- const currentOrStatedDirection = direction !== null && direction !== void 0 ? direction : currentDirection;
95
- // Set the container to block so we can get the height
114
+ // Show the container so we can get the height
96
115
  containerElement.style.setProperty('display', 'block');
97
116
  await waitForNextPaint();
98
- // Determine the dimensions of the control element
99
- const { top: topOffset, height } = (_a = controlElement === null || controlElement === void 0 ? void 0 : controlElement.getBoundingClientRect()) !== null && _a !== void 0 ? _a : {
117
+ const { isModule } = this;
118
+ const { top: controlTop, bottom: controlBottom } = (_a = controlElement === null || controlElement === void 0 ? void 0 : controlElement.getBoundingClientRect()) !== null && _a !== void 0 ? _a : {
100
119
  top: 0,
101
- height: 0,
120
+ bottom: 0,
102
121
  };
103
- const contentHeight = contentElement.clientHeight;
104
- const scrollY = ((_c = (_b = window.Tecton) === null || _b === void 0 ? void 0 : _b.platformDimensions) === null || _c === void 0 ? void 0 : _c.scrollY) ||
105
- ((_d = window.visualViewport) === null || _d === void 0 ? void 0 : _d.offsetTop) || // Only Android Chrome provides this which we need when scrolled
106
- 0;
107
- const outletOffset = scrollY + (((_f = (_e = window.Tecton) === null || _e === void 0 ? void 0 : _e.platformDimensions) === null || _f === void 0 ? void 0 : _f.outletOffset) || 0);
108
- const innerHeight = ((_h = (_g = window.Tecton) === null || _g === void 0 ? void 0 : _g.platformDimensions) === null || _h === void 0 ? void 0 : _h.innerHeight) || ((_j = window.visualViewport) === null || _j === void 0 ? void 0 : _j.height) || window.innerHeight;
109
- const bottomOffset = scrollY + innerHeight - topOffset - height - outletOffset;
110
- const canShowFullSizeBelow = bottomOffset > contentHeight;
111
- const canShowFullSizeAbove = contentHeight <= topOffset;
112
- let determinedDirection;
113
- // Show the full-size popover below or above if it will fit
114
- if (currentOrStatedDirection === 'down' && canShowFullSizeBelow)
115
- return this.setDirectionAndShow('down');
116
- else if (currentOrStatedDirection === 'up' && canShowFullSizeAbove)
117
- return this.setDirectionAndShow('up');
118
- else if (currentOrStatedDirection === undefined && canShowFullSizeBelow)
119
- determinedDirection = 'down';
120
- else if (currentOrStatedDirection === undefined && canShowFullSizeAbove)
121
- determinedDirection = 'up';
122
- if (determinedDirection)
123
- return this.setDirectionAndShow(determinedDirection);
124
- // If full size will not fit then make it as tall as possible
125
- const { minHeight = 150 } = this;
126
- const displayBuffer = 5;
127
- const canShowMinHeightBelow = bottomOffset >= minHeight + displayBuffer;
128
- let maxHeight;
129
- if (currentOrStatedDirection === 'down') {
130
- maxHeight = Math.max(bottomOffset - displayBuffer, minHeight);
131
- determinedDirection = 'down';
132
- }
133
- else if (currentOrStatedDirection === 'up') {
134
- maxHeight = Math.max(topOffset - displayBuffer, minHeight);
135
- determinedDirection = 'up';
136
- }
137
- else if (canShowMinHeightBelow) {
138
- maxHeight = Math.max(bottomOffset - displayBuffer, minHeight);
139
- determinedDirection = 'down';
122
+ let windowHeight;
123
+ let maxSpaceAbove;
124
+ let maxSpaceBelow;
125
+ if (isModule) {
126
+ const platformDimensions = (_b = window.Tecton) === null || _b === void 0 ? void 0 : _b.platformDimensions;
127
+ const distanceToIframeBottom = window.visualViewport.height - controlBottom;
128
+ const viewableSpaceBelow = platformDimensions.innerHeight - (platformDimensions.outletOffset + controlBottom);
129
+ const isIframeShorterThanWindow = distanceToIframeBottom < viewableSpaceBelow;
130
+ windowHeight = platformDimensions.innerHeight;
131
+ // If the top of the module is below the top of the window we just use the controlTop
132
+ // Otherwise we need to add the outletOffset to the controlTop
133
+ maxSpaceAbove =
134
+ (platformDimensions.outletOffset > 0 ? controlTop : controlTop + platformDimensions.outletOffset) -
135
+ displayBuffer;
136
+ maxSpaceBelow = isIframeShorterThanWindow
137
+ ? distanceToIframeBottom - displayBuffer
138
+ : viewableSpaceBelow - displayBuffer;
140
139
  }
141
140
  else {
142
- maxHeight = Math.max(topOffset - scrollY - displayBuffer, minHeight);
143
- determinedDirection = 'up';
141
+ windowHeight = window.visualViewport.height;
142
+ maxSpaceAbove = controlTop - displayBuffer;
143
+ maxSpaceBelow = windowHeight - controlBottom - displayBuffer;
144
+ }
145
+ const directionWithMostSpace = maxSpaceAbove > maxSpaceBelow ? 'up' : 'down';
146
+ switch (direction !== null && direction !== void 0 ? direction : directionWithMostSpace) {
147
+ case 'up':
148
+ containerElement.style.setProperty('--comp-pop-max-height', `${maxSpaceAbove}px`);
149
+ return this.setDirectionAndShow('up');
150
+ case 'down':
151
+ containerElement.style.setProperty('--comp-pop-max-height', `${maxSpaceBelow}px`);
152
+ return this.setDirectionAndShow('down');
144
153
  }
145
- containerElement.style.setProperty('--comp-pop-max-height', `${maxHeight}px`);
146
- return this.setDirectionAndShow(determinedDirection);
147
154
  }
148
155
  determinePopOffset() {
149
- var _a;
150
156
  const { controlElement, containerElement } = this;
151
- const dropdownHeight = (_a = controlElement === null || controlElement === void 0 ? void 0 : controlElement.getBoundingClientRect().height) !== null && _a !== void 0 ? _a : 0;
152
- containerElement.style.setProperty('--comp-pop-offset', `${dropdownHeight}px`);
157
+ const controlStyle = getComputedStyle(controlElement);
158
+ const controlSize = parseInt(controlStyle.height) +
159
+ parseInt(controlStyle.borderTopWidth) +
160
+ parseInt(controlStyle.borderBottomWidth);
161
+ containerElement.style.setProperty('--comp-pop-offset', `${controlSize}px`);
153
162
  }
154
163
  /// DOM ///
155
164
  render() {
@@ -160,7 +169,8 @@ const Q2Popover = /*@__PURE__*/ proxyCustomElement(class Q2Popover extends HTMLE
160
169
  }
161
170
  get hostElement() { return this; }
162
171
  static get watchers() { return {
163
- "open": ["openChanged"]
172
+ "open": ["openChanged"],
173
+ "minHeight": ["minHeightProvided"]
164
174
  }; }
165
175
  static get style() { return stylesCss; }
166
176
  }, [1, "q2-popover", {
@@ -168,8 +178,8 @@ const Q2Popover = /*@__PURE__*/ proxyCustomElement(class Q2Popover extends HTMLE
168
178
  "align": [513],
169
179
  "open": [1540],
170
180
  "block": [516],
171
- "minHeight": [2, "min-height"],
172
181
  "controlElement": [16],
182
+ "minHeight": [2, "min-height"],
173
183
  "currentDirection": [32],
174
184
  "show": [32],
175
185
  "toggle": [64],
@@ -1 +1 @@
1
- {"file":"index15.js","mappings":"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","names":[],"sources":["./src/components/q2-popover/styles.scss?tag=q2-popover&encapsulation=shadow","./src/components/q2-popover/index.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions';\n\n:host {\n display: block;\n width: 100%;\n}\n\n:host([align='right']) {\n display: block;\n position: absolute;\n right: 0;\n text-align: end;\n left: unset;\n}\n\n.container {\n display: none;\n overflow: hidden;\n opacity: 0;\n height: 0;\n position: absolute;\n top: var-list(var-prefixer(popover-top), initial);\n visibility: hidden;\n background: var-list(--tct-popover-background, var-prefixer(popover-background-color), --app-white, #ffffff);\n color: var-list(var-prefixer(popover-text-color), --t-text, #4d4d4d);\n z-index: var-list(var-prefixer(popover-z-index), 100);\n width: max-content;\n min-width: var-list(var-prefixer(popover-min-width), 135px);\n box-shadow: var-list(var-prefixer(popover-box-shadow), --app-shadow-1, unquote('0 2px 4px rgba(0, 0, 0, 0.3)'));\n text-align: start;\n left: 0;\n border-radius: var-list(var-prefixer(popover-border-radius), 0);\n\n // --comp-pop-max-height is set via JS\n max-height: var(--comp-pop-max-height);\n\n @include tiny-scrollbar();\n\n :host([block]) & {\n left: unset;\n right: unset;\n width: 100%;\n min-width: var-list(var-prefixer(popover-min-width), unset);\n }\n\n :host([align='right']) & {\n right: 0;\n text-align: end;\n left: unset;\n }\n\n :host([open]) & {\n visibility: visible;\n }\n\n :host([open]) &.show {\n height: auto;\n overflow: auto;\n opacity: 1;\n }\n\n &.up {\n bottom: var(--comp-pop-offset);\n }\n}\n\nclick-elsewhere {\n position: relative;\n display: block;\n}\n\n.content {\n height: auto;\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 { resizeIframe, waitForNextPaint } from '../../utils';\n\n@Component({\n tag: 'q2-popover',\n shadow: true,\n styleUrl: 'styles.scss',\n})\nexport class Q2Popover implements ComponentInterface {\n @Prop({ reflect: true }) direction: 'up' | 'down';\n @Prop({ reflect: true }) align: 'left' | 'right';\n @Prop({ reflect: true, mutable: true }) open: boolean;\n @Prop({ reflect: true }) block: boolean;\n @Prop() minHeight: number;\n @Prop() controlElement: HTMLElement;\n\n @Element() hostElement: HTMLElement;\n @Event() popoverStateChanged: EventEmitter<{ open: boolean }>;\n\n @State() currentDirection: 'down' | 'up' = undefined;\n @State() show: boolean = false;\n containerElement: HTMLDivElement;\n contentElement: HTMLDivElement;\n scheduledAfterRender: (() => void)[] = [];\n\n /// Lifecycle hooks ///\n componentDidLoad() {\n if (this.open) this.determinePopDirection();\n }\n\n componentDidRender() {\n setTimeout(() => {\n this.scheduledAfterRender.forEach(fn => fn());\n this.scheduledAfterRender = [];\n }, 25);\n }\n\n disconnectedCallback() {\n this.removeViewportListeners();\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 openChanged(open) {\n this.popoverStateChanged.emit({ open });\n this.scheduledAfterRender.push(resizeIframe);\n if (open) {\n this.addViewportListeners();\n this.determinePopDirection();\n } else {\n this.removeViewportListeners();\n this.currentDirection = undefined;\n this.containerElement.style.removeProperty('display');\n this.containerElement.style.removeProperty('--comp-pop-max-height');\n this.show = false;\n }\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 /// Helpers ///\n viewPortChanged = () => {\n if (!this.open) return;\n this.determinePopDirection();\n };\n\n addViewportListeners() {\n // window.visualViewport.addEventListener('scroll', this.viewPortChanged);\n window.visualViewport.addEventListener('resize', this.viewPortChanged);\n }\n\n removeViewportListeners() {\n // window.visualViewport.removeEventListener('scroll', this.viewPortChanged);\n window.visualViewport.removeEventListener('resize', this.viewPortChanged);\n }\n\n async setDirectionAndShow(direction: 'up' | 'down') {\n if (direction === 'up') {\n this.determinePopOffset();\n }\n\n this.currentDirection = direction;\n this.show = true;\n }\n\n async determinePopDirection() {\n const { containerElement, contentElement, direction, controlElement, currentDirection } = this;\n if (containerElement) containerElement.style.maxHeight = null;\n\n // If the direction is already set then use it, otherwise use the current direction\n const currentOrStatedDirection = direction ?? currentDirection;\n\n // Set the container to block so we can get the height\n containerElement.style.setProperty('display', 'block');\n await waitForNextPaint();\n\n // Determine the dimensions of the control element\n const { top: topOffset, height } = controlElement?.getBoundingClientRect() ?? {\n top: 0,\n height: 0,\n };\n\n const contentHeight = contentElement.clientHeight;\n const scrollY =\n window.Tecton?.platformDimensions?.scrollY ||\n window.visualViewport?.offsetTop || // Only Android Chrome provides this which we need when scrolled\n 0;\n const outletOffset = scrollY + (window.Tecton?.platformDimensions?.outletOffset || 0);\n const innerHeight =\n window.Tecton?.platformDimensions?.innerHeight || window.visualViewport?.height || window.innerHeight;\n const bottomOffset = scrollY + innerHeight - topOffset - height - outletOffset;\n const canShowFullSizeBelow = bottomOffset > contentHeight;\n const canShowFullSizeAbove = contentHeight <= topOffset;\n let determinedDirection: 'up' | 'down';\n\n // Show the full-size popover below or above if it will fit\n if (currentOrStatedDirection === 'down' && canShowFullSizeBelow) return this.setDirectionAndShow('down');\n else if (currentOrStatedDirection === 'up' && canShowFullSizeAbove) return this.setDirectionAndShow('up');\n else if (currentOrStatedDirection === undefined && canShowFullSizeBelow) determinedDirection = 'down';\n else if (currentOrStatedDirection === undefined && canShowFullSizeAbove) determinedDirection = 'up';\n\n if (determinedDirection) return this.setDirectionAndShow(determinedDirection);\n\n // If full size will not fit then make it as tall as possible\n const { minHeight = 150 } = this;\n const displayBuffer = 5;\n const canShowMinHeightBelow = bottomOffset >= minHeight + displayBuffer;\n\n let maxHeight;\n if (currentOrStatedDirection === 'down') {\n maxHeight = Math.max(bottomOffset - displayBuffer, minHeight);\n determinedDirection = 'down';\n } else if (currentOrStatedDirection === 'up') {\n maxHeight = Math.max(topOffset - displayBuffer, minHeight);\n determinedDirection = 'up';\n } else if (canShowMinHeightBelow) {\n maxHeight = Math.max(bottomOffset - displayBuffer, minHeight);\n determinedDirection = 'down';\n } else {\n maxHeight = Math.max(topOffset - scrollY - displayBuffer, minHeight);\n determinedDirection = 'up';\n }\n containerElement.style.setProperty('--comp-pop-max-height', `${maxHeight}px`);\n return this.setDirectionAndShow(determinedDirection);\n }\n\n determinePopOffset() {\n const { controlElement, containerElement } = this;\n const dropdownHeight = controlElement?.getBoundingClientRect().height ?? 0;\n containerElement.style.setProperty('--comp-pop-offset', `${dropdownHeight}px`);\n }\n\n /// DOM ///\n render() {\n const containerClasses = ['container', this.currentDirection];\n if (this.show) containerClasses.push('show');\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"],"version":3}
1
+ {"file":"index15.js","mappings":"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","names":[],"sources":["./src/components/q2-popover/styles.scss?tag=q2-popover&encapsulation=shadow","./src/components/q2-popover/index.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions';\n\n:host {\n display: block;\n width: 100%;\n}\n\n:host([align='right']) {\n display: block;\n position: absolute;\n right: 0;\n text-align: end;\n left: unset;\n}\n\n.container {\n display: none;\n overflow: hidden;\n opacity: 0;\n height: 0;\n position: absolute;\n top: var-list(--tct-popover-top, initial);\n background: var-list(--tct-popover-background, --app-white, #ffffff);\n color: var-list(--tct-popover-font-color, --t-text, #4d4d4d);\n z-index: var-list(--tct-popover-z-index, 100);\n width: max-content;\n min-width: var-list(--tct-popover-min-width, 135px);\n box-shadow: var-list(--tct-popover-box-shadow, --app-shadow-1, unquote('0 2px 4px rgba(0, 0, 0, 0.3)'));\n text-align: start;\n left: 0;\n margin-block: var-list(--tct-popover-margin-block, 0);\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\n // --comp-pop-max-height is set via JS\n max-height: var(--comp-pop-max-height);\n\n @include tiny-scrollbar();\n\n :host([block]) & {\n left: unset;\n right: unset;\n width: 100%;\n min-width: var-list(--tct-popover-min-width, unset);\n }\n\n :host([align='right']) & {\n right: 0;\n text-align: end;\n left: unset;\n }\n\n :host([open]) &.show {\n height: auto;\n overflow: auto;\n opacity: 1;\n }\n\n &.up {\n bottom: var(--comp-pop-offset);\n }\n}\n\nclick-elsewhere {\n position: relative;\n display: block;\n}\n\n.content {\n height: auto;\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 { nextPaint, resizeIframe, waitForNextPaint, handleDeprecationWarning } from '../../utils';\n\n@Component({\n tag: 'q2-popover',\n shadow: true,\n styleUrl: 'styles.scss',\n})\nexport class Q2Popover implements ComponentInterface {\n @Prop({ reflect: true }) direction: 'up' | 'down';\n @Prop({ reflect: true }) align: 'left' | 'right';\n @Prop({ reflect: true, mutable: true }) open: boolean;\n @Prop({ reflect: true }) block: boolean;\n @Prop() controlElement: HTMLElement;\n\n /** @deprecated */\n @Prop() minHeight: number;\n\n @Element() hostElement: HTMLElement;\n @Event() popoverStateChanged: EventEmitter<{ open: boolean }>;\n\n @State() currentDirection: 'down' | 'up' = undefined;\n @State() show: boolean = false;\n containerElement: HTMLDivElement;\n contentElement: HTMLDivElement;\n scheduledAfterRender: (() => void)[] = [];\n\n /**\n * The number of pixels to leave between the popover and the edge of the viewport\n */\n displayBuffer = 10;\n\n /// Lifecycle hooks ///\n componentDidLoad() {\n this.handleMinHeight();\n if (this.open) this.determinePopDirection();\n }\n\n componentDidRender() {\n setTimeout(() => {\n this.scheduledAfterRender.forEach(fn => fn());\n this.scheduledAfterRender = [];\n }, 25);\n }\n\n disconnectedCallback() {\n this.removeViewportListeners();\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 openChanged(open) {\n this.popoverStateChanged.emit({ open });\n this.scheduledAfterRender.push(resizeIframe);\n if (open) {\n this.addViewportListeners();\n this.determinePopDirection();\n } else {\n this.removeViewportListeners();\n this.currentDirection = undefined;\n this.show = false;\n nextPaint(() => {\n this.containerElement.style.removeProperty('--comp-pop-max-height');\n this.containerElement.style.removeProperty('display');\n });\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 /// Helpers ///\n handleMinHeight = () => {\n if (this.minHeight) {\n handleDeprecationWarning(this, 'minHeight', 'prop');\n }\n };\n\n viewPortChanged = () => {\n if (!this.open) return;\n this.determinePopDirection();\n };\n\n addViewportListeners() {\n // window.visualViewport.addEventListener('scroll', this.viewPortChanged);\n window.visualViewport.addEventListener('resize', this.viewPortChanged);\n }\n\n removeViewportListeners() {\n // window.visualViewport.removeEventListener('scroll', this.viewPortChanged);\n window.visualViewport.removeEventListener('resize', this.viewPortChanged);\n }\n\n async setDirectionAndShow(direction: 'up' | 'down') {\n if (direction === 'up') {\n this.determinePopOffset();\n }\n\n this.currentDirection = direction;\n this.show = true;\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 async determinePopDirection() {\n const { containerElement, direction, controlElement, displayBuffer } = this;\n if (containerElement) containerElement.style.maxHeight = null;\n\n // Show the container so we can get the height\n containerElement.style.setProperty('display', 'block');\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 platformDimensions = window.Tecton?.platformDimensions;\n const distanceToIframeBottom = window.visualViewport.height - controlBottom;\n const viewableSpaceBelow =\n platformDimensions.innerHeight - (platformDimensions.outletOffset + controlBottom);\n const isIframeShorterThanWindow = distanceToIframeBottom < viewableSpaceBelow;\n windowHeight = platformDimensions.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 =\n (platformDimensions.outletOffset > 0 ? controlTop : controlTop + platformDimensions.outletOffset) -\n 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 switch (direction ?? directionWithMostSpace) {\n case 'up':\n containerElement.style.setProperty('--comp-pop-max-height', `${maxSpaceAbove}px`);\n return this.setDirectionAndShow('up');\n case 'down':\n containerElement.style.setProperty('--comp-pop-max-height', `${maxSpaceBelow}px`);\n return this.setDirectionAndShow('down');\n default:\n break;\n }\n }\n\n determinePopOffset() {\n const { controlElement, containerElement } = this;\n const controlStyle = getComputedStyle(controlElement);\n const controlSize =\n parseInt(controlStyle.height) +\n parseInt(controlStyle.borderTopWidth) +\n parseInt(controlStyle.borderBottomWidth);\n\n containerElement.style.setProperty('--comp-pop-offset', `${controlSize}px`);\n }\n\n /// DOM ///\n render() {\n const containerClasses = ['container', this.currentDirection];\n if (this.show) containerClasses.push('show');\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"],"version":3}
@@ -520,7 +520,14 @@ function labelDOM(target) {
520
520
  const { label, hideLabel, optional, readonly } = target;
521
521
  const labelClasses = ['input-label'];
522
522
  let helpText = '';
523
- if (hideLabel)
523
+ let shouldHideLabel = hideLabel;
524
+ if (!shouldHideLabel) {
525
+ const labelSlot = target.hostElement.shadowRoot.querySelector('slot[name="label"]');
526
+ const hasSlotContent = (labelSlot === null || labelSlot === void 0 ? void 0 : labelSlot.assignedNodes().length) > 0;
527
+ const hasLabel = !!label;
528
+ shouldHideLabel = hasLabel || hasSlotContent ? false : true;
529
+ }
530
+ if (shouldHideLabel)
524
531
  labelClasses.push('sr');
525
532
  if (optional) {
526
533
  helpText = h("span", { class: "optional-tag" }, loc('tecton.element.input.optional'));
@@ -534,6 +541,9 @@ function labelDOM(target) {
534
541
  label ? loc(label) : undefined,
535
542
  helpText)));
536
543
  }
544
+ function hasSlotContent(target, slotName) {
545
+ return target.querySelector(`[slot="${slotName}"]`) !== null;
546
+ }
537
547
  function handleAriaLabel(target) {
538
548
  const { ariaLabel } = target;
539
549
  if (!ariaLabel)
@@ -628,6 +638,6 @@ const handleColor = (target) => {
628
638
  }
629
639
  };
630
640
 
631
- export { handleRenamedProp as a, isTouchDevice as b, createGuid as c, isRelatedTargetWithinHost as d, isHostLosingFocus as e, addSmoothScrollPolyfill as f, labelDOM as g, handleAriaLabel as h, isEventFromElement as i, handleDeprecationWarning as j, handleColor as k, loc as l, messagesDOM as m, nextPaint as n, overrideFocus as o, isMobile as p, isFirefox as q, resizeIframe as r, setMessageHeight as s, waitForNextPaint as w };
641
+ export { handleRenamedProp as a, isTouchDevice as b, createGuid as c, isRelatedTargetWithinHost as d, isHostLosingFocus as e, addSmoothScrollPolyfill as f, labelDOM as g, handleAriaLabel as h, isEventFromElement as i, handleDeprecationWarning as j, handleColor as k, loc as l, messagesDOM as m, nextPaint as n, overrideFocus as o, isMobile as p, hasSlotContent as q, resizeIframe as r, setMessageHeight as s, isFirefox as t, waitForNextPaint as w };
632
642
 
633
643
  //# sourceMappingURL=index16.js.map