q2-tecton-elements 1.65.0 → 1.66.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 (687) hide show
  1. package/dist/bundle-report.json +1908 -745
  2. package/dist/cjs/{action-sheet-CiK2Bap_.js → action-sheet-D71RSc-w.js} +5 -2
  3. package/dist/cjs/action-sheet-D71RSc-w.js.map +1 -0
  4. package/dist/cjs/component-DRAntnCA.js +47 -0
  5. package/dist/cjs/component-DRAntnCA.js.map +1 -0
  6. package/dist/cjs/loader.cjs.js +1 -1
  7. package/dist/cjs/q2-action-group.q2-resize-observer.entry.cjs.js.map +1 -1
  8. package/dist/cjs/q2-action-group_2.cjs.entry.js +121 -45
  9. package/dist/cjs/q2-action-group_2.cjs.entry.js.map +1 -1
  10. package/dist/cjs/q2-action-sheet.cjs.entry.js +9 -5
  11. package/dist/cjs/q2-action-sheet.cjs.entry.js.map +1 -1
  12. package/dist/cjs/q2-action-sheet.entry.cjs.js.map +1 -1
  13. package/dist/cjs/q2-avatar.cjs.entry.js +2 -2
  14. package/dist/cjs/q2-avatar.cjs.entry.js.map +1 -1
  15. package/dist/cjs/q2-avatar.entry.cjs.js.map +1 -1
  16. package/dist/cjs/q2-btn.q2-loading.entry.cjs.js.map +1 -1
  17. package/dist/cjs/q2-btn_2.cjs.entry.js +13 -4
  18. package/dist/cjs/q2-btn_2.cjs.entry.js.map +1 -1
  19. package/dist/cjs/q2-calendar.cjs.entry.js +3 -3
  20. package/dist/cjs/q2-calendar.cjs.entry.js.map +1 -1
  21. package/dist/cjs/q2-calendar.entry.cjs.js.map +1 -1
  22. package/dist/cjs/q2-card-image.cjs.entry.js +5 -5
  23. package/dist/cjs/q2-card-image.cjs.entry.js.map +1 -1
  24. package/dist/cjs/q2-card-image.entry.cjs.js.map +1 -1
  25. package/dist/cjs/q2-card.cjs.entry.js +1 -1
  26. package/dist/cjs/q2-card.cjs.entry.js.map +1 -1
  27. package/dist/cjs/q2-card.entry.cjs.js.map +1 -1
  28. package/dist/cjs/q2-carousel-pane.cjs.entry.js +7 -3
  29. package/dist/cjs/q2-carousel-pane.cjs.entry.js.map +1 -1
  30. package/dist/cjs/q2-carousel-pane.entry.cjs.js.map +1 -1
  31. package/dist/cjs/q2-carousel.cjs.entry.js +12 -2
  32. package/dist/cjs/q2-carousel.cjs.entry.js.map +1 -1
  33. package/dist/cjs/q2-carousel.entry.cjs.js.map +1 -1
  34. package/dist/cjs/q2-chart-area.cjs.entry.js +1 -1
  35. package/dist/cjs/q2-chart-bar.cjs.entry.js +1 -1
  36. package/dist/cjs/q2-chart-donut.cjs.entry.js +1 -1
  37. package/dist/cjs/q2-checkbox-group.cjs.entry.js +5 -1
  38. package/dist/cjs/q2-checkbox-group.cjs.entry.js.map +1 -1
  39. package/dist/cjs/q2-checkbox-group.entry.cjs.js.map +1 -1
  40. package/dist/cjs/q2-checkbox.cjs.entry.js +3 -4
  41. package/dist/cjs/q2-checkbox.cjs.entry.js.map +1 -1
  42. package/dist/cjs/q2-checkbox.entry.cjs.js.map +1 -1
  43. package/dist/cjs/q2-context.cjs.entry.js +1 -1
  44. package/dist/cjs/q2-context.cjs.entry.js.map +1 -1
  45. package/dist/cjs/q2-context.entry.cjs.js.map +1 -1
  46. package/dist/cjs/q2-currency.cjs.entry.js +1 -1
  47. package/dist/cjs/q2-data-table.cjs.entry.js +19 -9
  48. package/dist/cjs/q2-data-table.cjs.entry.js.map +1 -1
  49. package/dist/cjs/q2-data-table.entry.cjs.js.map +1 -1
  50. package/dist/cjs/q2-detail.cjs.entry.js +2 -2
  51. package/dist/cjs/q2-detail.cjs.entry.js.map +1 -1
  52. package/dist/cjs/q2-detail.entry.cjs.js.map +1 -1
  53. package/dist/cjs/q2-dropdown-item.cjs.entry.js +3 -1
  54. package/dist/cjs/q2-dropdown-item.cjs.entry.js.map +1 -1
  55. package/dist/cjs/q2-dropdown-item.entry.cjs.js.map +1 -1
  56. package/dist/cjs/q2-dropdown.cjs.entry.js +33 -8
  57. package/dist/cjs/q2-dropdown.cjs.entry.js.map +1 -1
  58. package/dist/cjs/q2-dropdown.entry.cjs.js.map +1 -1
  59. package/dist/cjs/q2-editable-field.cjs.entry.js +2 -2
  60. package/dist/cjs/q2-editable-field.cjs.entry.js.map +1 -1
  61. package/dist/cjs/q2-editable-field.entry.cjs.js.map +1 -1
  62. package/dist/cjs/q2-example.cjs.entry.js +1 -1
  63. package/dist/cjs/q2-file-picker.cjs.entry.js +2 -2
  64. package/dist/cjs/q2-file-picker.cjs.entry.js.map +1 -1
  65. package/dist/cjs/q2-file-picker.entry.cjs.js.map +1 -1
  66. package/dist/cjs/q2-form.cjs.entry.js +1 -1
  67. package/dist/cjs/q2-formatted-text.cjs.entry.js +1 -1
  68. package/dist/cjs/q2-grid-area.cjs.entry.js +9 -1
  69. package/dist/cjs/q2-grid-area.cjs.entry.js.map +1 -1
  70. package/dist/cjs/q2-grid-area.entry.cjs.js.map +1 -1
  71. package/dist/cjs/q2-icon.cjs.entry.js +6 -0
  72. package/dist/cjs/q2-icon.cjs.entry.js.map +1 -1
  73. package/dist/cjs/q2-icon.entry.cjs.js.map +1 -1
  74. package/dist/cjs/q2-input.cjs.entry.js +8 -6
  75. package/dist/cjs/q2-input.cjs.entry.js.map +1 -1
  76. package/dist/cjs/q2-input.entry.cjs.js.map +1 -1
  77. package/dist/cjs/q2-item.cjs.entry.js +17 -17
  78. package/dist/cjs/q2-item.cjs.entry.js.map +1 -1
  79. package/dist/cjs/q2-item.entry.cjs.js.map +1 -1
  80. package/dist/cjs/q2-legend.cjs.entry.js +1 -1
  81. package/dist/cjs/q2-link.q2-list.entry.cjs.js.map +1 -1
  82. package/dist/cjs/q2-link_2.cjs.entry.js +11 -7
  83. package/dist/cjs/q2-link_2.cjs.entry.js.map +1 -1
  84. package/dist/cjs/q2-message.cjs.entry.js +2 -2
  85. package/dist/cjs/q2-message.cjs.entry.js.map +1 -1
  86. package/dist/cjs/q2-message.entry.cjs.js.map +1 -1
  87. package/dist/cjs/q2-meter.cjs.entry.js +1 -1
  88. package/dist/cjs/q2-modal.cjs.entry.js +2 -2
  89. package/dist/cjs/q2-month-picker.cjs.entry.js +2 -2
  90. package/dist/cjs/q2-mutation-observer.cjs.entry.js +1 -1
  91. package/dist/cjs/q2-optgroup.cjs.entry.js +4 -2
  92. package/dist/cjs/q2-optgroup.cjs.entry.js.map +1 -1
  93. package/dist/cjs/q2-optgroup.entry.cjs.js.map +1 -1
  94. package/dist/cjs/q2-option-list.q2-popover.entry.cjs.js.map +1 -1
  95. package/dist/cjs/q2-option-list_2.cjs.entry.js +5 -3
  96. package/dist/cjs/q2-option-list_2.cjs.entry.js.map +1 -1
  97. package/dist/cjs/q2-option.cjs.entry.js +3 -1
  98. package/dist/cjs/q2-option.cjs.entry.js.map +1 -1
  99. package/dist/cjs/q2-option.entry.cjs.js.map +1 -1
  100. package/dist/cjs/q2-pagination.cjs.entry.js +10 -12
  101. package/dist/cjs/q2-pagination.cjs.entry.js.map +1 -1
  102. package/dist/cjs/q2-pagination.entry.cjs.js.map +1 -1
  103. package/dist/cjs/q2-pill.cjs.entry.js +2 -2
  104. package/dist/cjs/q2-radio.cjs.entry.js +2 -2
  105. package/dist/cjs/q2-radio.cjs.entry.js.map +1 -1
  106. package/dist/cjs/q2-radio.entry.cjs.js.map +1 -1
  107. package/dist/cjs/q2-relative-time.cjs.entry.js +1 -1
  108. package/dist/cjs/q2-section-container.cjs.entry.js +2 -0
  109. package/dist/cjs/q2-section-container.cjs.entry.js.map +1 -1
  110. package/dist/cjs/q2-section-container.entry.cjs.js.map +1 -1
  111. package/dist/cjs/q2-section.cjs.entry.js +2 -2
  112. package/dist/cjs/q2-select.cjs.entry.js +7 -3
  113. package/dist/cjs/q2-select.cjs.entry.js.map +1 -1
  114. package/dist/cjs/q2-select.entry.cjs.js.map +1 -1
  115. package/dist/cjs/q2-stepper-pane.cjs.entry.js +3 -1
  116. package/dist/cjs/q2-stepper-pane.cjs.entry.js.map +1 -1
  117. package/dist/cjs/q2-stepper-pane.entry.cjs.js.map +1 -1
  118. package/dist/cjs/q2-stepper-vertical.cjs.entry.js +1 -1
  119. package/dist/cjs/q2-stepper.cjs.entry.js +6 -2
  120. package/dist/cjs/q2-stepper.cjs.entry.js.map +1 -1
  121. package/dist/cjs/q2-stepper.entry.cjs.js.map +1 -1
  122. package/dist/cjs/q2-tab-container.cjs.entry.js +5 -1
  123. package/dist/cjs/q2-tab-container.cjs.entry.js.map +1 -1
  124. package/dist/cjs/q2-tab-container.entry.cjs.js.map +1 -1
  125. package/dist/cjs/q2-tab-pane.cjs.entry.js +8 -1
  126. package/dist/cjs/q2-tab-pane.cjs.entry.js.map +1 -1
  127. package/dist/cjs/q2-tab-pane.entry.cjs.js.map +1 -1
  128. package/dist/cjs/q2-tag.cjs.entry.js +3 -3
  129. package/dist/cjs/q2-tag.cjs.entry.js.map +1 -1
  130. package/dist/cjs/q2-tag.entry.cjs.js.map +1 -1
  131. package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
  132. package/dist/cjs/q2-textarea.cjs.entry.js +2 -2
  133. package/dist/cjs/q2-textarea.cjs.entry.js.map +1 -1
  134. package/dist/cjs/q2-textarea.entry.cjs.js.map +1 -1
  135. package/dist/cjs/q2-toast.cjs.entry.js +192 -0
  136. package/dist/cjs/q2-toast.cjs.entry.js.map +1 -0
  137. package/dist/cjs/q2-toast.entry.cjs.js.map +1 -0
  138. package/dist/cjs/{sanitize-html-string-DPqrzfM9.js → sanitize-html-string-C2iwHNz5.js} +30 -6
  139. package/dist/cjs/sanitize-html-string-C2iwHNz5.js.map +1 -0
  140. package/dist/cjs/tecton-tab-pane.cjs.entry.js +4 -2
  141. package/dist/cjs/tecton-tab-pane.cjs.entry.js.map +1 -1
  142. package/dist/cjs/tecton-tab-pane.entry.cjs.js.map +1 -1
  143. package/dist/collection/collection-manifest.json +3 -2
  144. package/dist/collection/components/q2-action-group/q2-action-group.css +11 -4
  145. package/dist/collection/components/q2-action-group/q2-action-group.js +121 -45
  146. package/dist/collection/components/q2-action-group/q2-action-group.js.map +1 -1
  147. package/dist/collection/components/q2-action-sheet/q2-action-sheet.css +8 -0
  148. package/dist/collection/components/q2-action-sheet/q2-action-sheet.js +9 -5
  149. package/dist/collection/components/q2-action-sheet/q2-action-sheet.js.map +1 -1
  150. package/dist/collection/components/q2-avatar/q2-avatar.css +3 -0
  151. package/dist/collection/components/q2-avatar/q2-avatar.js +1 -1
  152. package/dist/collection/components/q2-btn/q2-btn.css +9 -1
  153. package/dist/collection/components/q2-btn/q2-btn.js +1 -1
  154. package/dist/collection/components/q2-btn/q2-btn.js.map +1 -1
  155. package/dist/collection/components/q2-calendar/q2-calendar.css +5 -1
  156. package/dist/collection/components/q2-calendar/q2-calendar.js +2 -2
  157. package/dist/collection/components/q2-calendar/q2-calendar.js.map +1 -1
  158. package/dist/collection/components/q2-calendar/q2-month-picker.js +2 -2
  159. package/dist/collection/components/q2-card/q2-card.css +1 -0
  160. package/dist/collection/components/q2-card-image/q2-card-image.js +6 -6
  161. package/dist/collection/components/q2-card-image/q2-card-image.js.map +1 -1
  162. package/dist/collection/components/q2-carousel/q2-carousel.css +1 -1
  163. package/dist/collection/components/q2-carousel/q2-carousel.js +11 -1
  164. package/dist/collection/components/q2-carousel/q2-carousel.js.map +1 -1
  165. package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.css +11 -1
  166. package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.js +6 -2
  167. package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.js.map +1 -1
  168. package/dist/collection/components/q2-chart-area/q2-chart-area.js +1 -1
  169. package/dist/collection/components/q2-chart-bar/q2-chart-bar.js +1 -1
  170. package/dist/collection/components/q2-chart-donut/q2-chart-donut.js +1 -1
  171. package/dist/collection/components/q2-checkbox/q2-checkbox.css +136 -15
  172. package/dist/collection/components/q2-checkbox/q2-checkbox.js +2 -8
  173. package/dist/collection/components/q2-checkbox/q2-checkbox.js.map +1 -1
  174. package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.js +5 -1
  175. package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.js.map +1 -1
  176. package/dist/collection/components/q2-context/q2-context.js +1 -1
  177. package/dist/collection/components/q2-context/q2-context.js.map +1 -1
  178. package/dist/collection/components/q2-currency/q2-currency.js +1 -1
  179. package/dist/collection/components/q2-data-table/q2-data-table.css +3 -0
  180. package/dist/collection/components/q2-data-table/q2-data-table.js +53 -20
  181. package/dist/collection/components/q2-data-table/q2-data-table.js.map +1 -1
  182. package/dist/collection/components/q2-detail/q2-detail.css +6 -0
  183. package/dist/collection/components/q2-detail/q2-detail.js +1 -1
  184. package/dist/collection/components/q2-dropdown/q2-dropdown.css +17 -0
  185. package/dist/collection/components/q2-dropdown/q2-dropdown.js +75 -8
  186. package/dist/collection/components/q2-dropdown/q2-dropdown.js.map +1 -1
  187. package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.css +1 -0
  188. package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.js +2 -0
  189. package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.js.map +1 -1
  190. package/dist/collection/components/q2-editable-field/q2-editable-field.js +2 -2
  191. package/dist/collection/components/q2-editable-field/q2-editable-field.js.map +1 -1
  192. package/dist/collection/components/q2-example/q2-example.js +1 -1
  193. package/dist/collection/components/q2-file-picker/q2-file-picker.css +4 -1
  194. package/dist/collection/components/q2-file-picker/q2-file-picker.js +4 -4
  195. package/dist/collection/components/q2-file-picker/q2-file-picker.js.map +1 -1
  196. package/dist/collection/components/q2-form/q2-form.js +1 -1
  197. package/dist/collection/components/q2-formatted-text/q2-formatted-text.js +1 -1
  198. package/dist/collection/components/q2-grid/q2-grid.js +30 -30
  199. package/dist/collection/components/q2-grid-area/q2-grid-area.js +51 -43
  200. package/dist/collection/components/q2-grid-area/q2-grid-area.js.map +1 -1
  201. package/dist/collection/components/q2-icon/assets/brand.symbol.svg +1 -1
  202. package/dist/collection/components/q2-icon/assets/browsersos.symbol.svg +1 -1
  203. package/dist/collection/components/q2-icon/assets/cards.symbol.svg +1 -1
  204. package/dist/collection/components/q2-icon/assets/communication.symbol.svg +1 -1
  205. package/dist/collection/components/q2-icon/assets/currencies.symbol.svg +1 -1
  206. package/dist/collection/components/q2-icon/assets/devices.symbol.svg +1 -1
  207. package/dist/collection/components/q2-icon/assets/filetypes.symbol.svg +1 -1
  208. package/dist/collection/components/q2-icon/assets/gestures.symbol.svg +1 -1
  209. package/dist/collection/components/q2-icon/assets/icon-list.json +1 -1
  210. package/dist/collection/components/q2-icon/assets/icon-map.json +1 -1
  211. package/dist/collection/components/q2-icon/assets/legacy.symbol.svg +1 -1
  212. package/dist/collection/components/q2-icon/assets/mobile.symbol.svg +1 -1
  213. package/dist/collection/components/q2-icon/assets/standard.symbol.svg +1 -1
  214. package/dist/collection/components/q2-input/formatting/phone.js +4 -2
  215. package/dist/collection/components/q2-input/formatting/phone.js.map +1 -1
  216. package/dist/collection/components/q2-input/q2-input.css +3 -0
  217. package/dist/collection/components/q2-input/q2-input.js +6 -6
  218. package/dist/collection/components/q2-input/q2-input.js.map +1 -1
  219. package/dist/collection/components/q2-item/q2-item.css +3 -0
  220. package/dist/collection/components/q2-item/q2-item.js +19 -18
  221. package/dist/collection/components/q2-item/q2-item.js.map +1 -1
  222. package/dist/collection/components/q2-legend/q2-legend.js +1 -1
  223. package/dist/collection/components/q2-link/q2-link.css +53 -1
  224. package/dist/collection/components/q2-link/q2-link.js +50 -8
  225. package/dist/collection/components/q2-link/q2-link.js.map +1 -1
  226. package/dist/collection/components/q2-list/q2-list.js +1 -1
  227. package/dist/collection/components/q2-loading/q2-loading.css +1 -1
  228. package/dist/collection/components/q2-loading/q2-loading.js +10 -1
  229. package/dist/collection/components/q2-loading/q2-loading.js.map +1 -1
  230. package/dist/collection/components/q2-message/q2-message.css +1 -0
  231. package/dist/collection/components/q2-message/q2-message.js +1 -1
  232. package/dist/collection/components/q2-meter/q2-meter.js +1 -1
  233. package/dist/collection/components/q2-modal/q2-modal.js +1 -1
  234. package/dist/collection/components/q2-mutation-observer/q2-mutation-observer.js +1 -1
  235. package/dist/collection/components/q2-optgroup/q2-optgroup.css +6 -4
  236. package/dist/collection/components/q2-optgroup/q2-optgroup.js +3 -1
  237. package/dist/collection/components/q2-optgroup/q2-optgroup.js.map +1 -1
  238. package/dist/collection/components/q2-option/q2-option.css +5 -0
  239. package/dist/collection/components/q2-option/q2-option.js +2 -0
  240. package/dist/collection/components/q2-option/q2-option.js.map +1 -1
  241. package/dist/collection/components/q2-option-list/q2-option-list.js +8 -6
  242. package/dist/collection/components/q2-option-list/q2-option-list.js.map +1 -1
  243. package/dist/collection/components/q2-pagination/q2-pagination.css +3 -0
  244. package/dist/collection/components/q2-pagination/q2-pagination.js +20 -17
  245. package/dist/collection/components/q2-pagination/q2-pagination.js.map +1 -1
  246. package/dist/collection/components/q2-pill/q2-pill.js +1 -1
  247. package/dist/collection/components/q2-popover/q2-popover.css +1 -1
  248. package/dist/collection/components/q2-popover/q2-popover.js +1 -1
  249. package/dist/collection/components/q2-radio/q2-radio.css +85 -35
  250. package/dist/collection/components/q2-radio/q2-radio.js +1 -1
  251. package/dist/collection/components/q2-radio/q2-radio.js.map +1 -1
  252. package/dist/collection/components/q2-relative-time/q2-relative-time.js +1 -1
  253. package/dist/collection/components/q2-resize-observer/q2-resize-observer.js +1 -1
  254. package/dist/collection/components/q2-section/q2-section.js +2 -2
  255. package/dist/collection/components/q2-section-container/q2-section-container.js +2 -0
  256. package/dist/collection/components/q2-section-container/q2-section-container.js.map +1 -1
  257. package/dist/collection/components/q2-select/q2-select.js +6 -5
  258. package/dist/collection/components/q2-select/q2-select.js.map +1 -1
  259. package/dist/collection/components/q2-stepper/q2-stepper.css +1 -3
  260. package/dist/collection/components/q2-stepper/q2-stepper.js +6 -2
  261. package/dist/collection/components/q2-stepper/q2-stepper.js.map +1 -1
  262. package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.js +7 -5
  263. package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.js.map +1 -1
  264. package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js +1 -1
  265. package/dist/collection/components/q2-tab-container/q2-tab-container.js +5 -1
  266. package/dist/collection/components/q2-tab-container/q2-tab-container.js.map +1 -1
  267. package/dist/collection/components/q2-tab-pane/q2-tab-pane.js +8 -1
  268. package/dist/collection/components/q2-tab-pane/q2-tab-pane.js.map +1 -1
  269. package/dist/collection/components/q2-tag/q2-tag.css +8 -0
  270. package/dist/collection/components/q2-tag/q2-tag.js +1 -1
  271. package/dist/collection/components/q2-textarea/q2-textarea.css +2 -1
  272. package/dist/collection/components/q2-textarea/q2-textarea.js +1 -1
  273. package/dist/collection/components/q2-toast/q2-toast.css +230 -0
  274. package/dist/collection/components/q2-toast/q2-toast.js +452 -0
  275. package/dist/collection/components/q2-toast/q2-toast.js.map +1 -0
  276. package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js +4 -2
  277. package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js.map +1 -1
  278. package/dist/collection/utils/action-sheet.js +3 -0
  279. package/dist/collection/utils/action-sheet.js.map +1 -1
  280. package/dist/collection/utils/component.js +38 -0
  281. package/dist/collection/utils/component.js.map +1 -0
  282. package/dist/collection/utils/helpers.js +6 -1
  283. package/dist/collection/utils/helpers.js.map +1 -1
  284. package/dist/collection/utils/sanitize-html-string.js +6 -0
  285. package/dist/collection/utils/sanitize-html-string.js.map +1 -1
  286. package/dist/components/action-sheet.js +3 -0
  287. package/dist/components/action-sheet.js.map +1 -1
  288. package/dist/components/component.js +42 -0
  289. package/dist/components/component.js.map +1 -0
  290. package/dist/components/index.js +2 -0
  291. package/dist/components/index.js.map +1 -1
  292. package/dist/components/q2-action-group2.js +121 -45
  293. package/dist/components/q2-action-group2.js.map +1 -1
  294. package/dist/components/q2-action-sheet.js +9 -5
  295. package/dist/components/q2-action-sheet.js.map +1 -1
  296. package/dist/components/q2-avatar2.js +2 -2
  297. package/dist/components/q2-avatar2.js.map +1 -1
  298. package/dist/components/q2-btn2.js +2 -2
  299. package/dist/components/q2-btn2.js.map +1 -1
  300. package/dist/components/q2-calendar.js +3 -3
  301. package/dist/components/q2-calendar.js.map +1 -1
  302. package/dist/components/q2-card-image.js +6 -6
  303. package/dist/components/q2-card-image.js.map +1 -1
  304. package/dist/components/q2-card.js +1 -1
  305. package/dist/components/q2-card.js.map +1 -1
  306. package/dist/components/q2-carousel-pane.js +7 -3
  307. package/dist/components/q2-carousel-pane.js.map +1 -1
  308. package/dist/components/q2-carousel.js +12 -2
  309. package/dist/components/q2-carousel.js.map +1 -1
  310. package/dist/components/q2-chart-area.js +1 -1
  311. package/dist/components/q2-chart-bar.js +1 -1
  312. package/dist/components/q2-chart-donut.js +1 -1
  313. package/dist/components/q2-checkbox-group.js +5 -1
  314. package/dist/components/q2-checkbox-group.js.map +1 -1
  315. package/dist/components/q2-checkbox2.js +3 -4
  316. package/dist/components/q2-checkbox2.js.map +1 -1
  317. package/dist/components/q2-context.js +1 -1
  318. package/dist/components/q2-context.js.map +1 -1
  319. package/dist/components/q2-currency.js +1 -1
  320. package/dist/components/q2-data-table.js +20 -9
  321. package/dist/components/q2-data-table.js.map +1 -1
  322. package/dist/components/q2-detail.js +2 -2
  323. package/dist/components/q2-detail.js.map +1 -1
  324. package/dist/components/q2-dropdown-item2.js +3 -1
  325. package/dist/components/q2-dropdown-item2.js.map +1 -1
  326. package/dist/components/q2-dropdown.js +34 -7
  327. package/dist/components/q2-dropdown.js.map +1 -1
  328. package/dist/components/q2-editable-field.js +2 -2
  329. package/dist/components/q2-editable-field.js.map +1 -1
  330. package/dist/components/q2-example.js +1 -1
  331. package/dist/components/q2-file-picker.js +2 -2
  332. package/dist/components/q2-file-picker.js.map +1 -1
  333. package/dist/components/q2-form.js +1 -1
  334. package/dist/components/q2-formatted-text.js +1 -1
  335. package/dist/components/q2-grid-area.js +9 -1
  336. package/dist/components/q2-grid-area.js.map +1 -1
  337. package/dist/components/q2-icon2.js +6 -0
  338. package/dist/components/q2-icon2.js.map +1 -1
  339. package/dist/components/q2-input2.js +8 -6
  340. package/dist/components/q2-input2.js.map +1 -1
  341. package/dist/components/q2-item2.js +17 -17
  342. package/dist/components/q2-item2.js.map +1 -1
  343. package/dist/components/q2-legend2.js +1 -1
  344. package/dist/components/q2-link2.js +12 -6
  345. package/dist/components/q2-link2.js.map +1 -1
  346. package/dist/components/q2-list2.js +1 -1
  347. package/dist/components/q2-loading2.js +11 -2
  348. package/dist/components/q2-loading2.js.map +1 -1
  349. package/dist/components/q2-message2.js +2 -2
  350. package/dist/components/q2-message2.js.map +1 -1
  351. package/dist/components/q2-meter.js +1 -1
  352. package/dist/components/q2-modal.js +1 -1
  353. package/dist/components/q2-month-picker.js +2 -2
  354. package/dist/components/q2-mutation-observer.js +1 -1
  355. package/dist/components/q2-optgroup2.js +4 -2
  356. package/dist/components/q2-optgroup2.js.map +1 -1
  357. package/dist/components/q2-option-list2.js +3 -1
  358. package/dist/components/q2-option-list2.js.map +1 -1
  359. package/dist/components/q2-option2.js +3 -1
  360. package/dist/components/q2-option2.js.map +1 -1
  361. package/dist/components/q2-pagination.js +11 -13
  362. package/dist/components/q2-pagination.js.map +1 -1
  363. package/dist/components/q2-pill.js +1 -1
  364. package/dist/components/q2-popover2.js +2 -2
  365. package/dist/components/q2-popover2.js.map +1 -1
  366. package/dist/components/q2-radio.js +2 -2
  367. package/dist/components/q2-radio.js.map +1 -1
  368. package/dist/components/q2-relative-time.js +1 -1
  369. package/dist/components/q2-resize-observer2.js +1 -1
  370. package/dist/components/q2-section-container.js +2 -0
  371. package/dist/components/q2-section-container.js.map +1 -1
  372. package/dist/components/q2-section.js +2 -2
  373. package/dist/components/q2-select2.js +6 -2
  374. package/dist/components/q2-select2.js.map +1 -1
  375. package/dist/components/q2-stepper-pane.js +3 -1
  376. package/dist/components/q2-stepper-pane.js.map +1 -1
  377. package/dist/components/q2-stepper-vertical.js +1 -1
  378. package/dist/components/q2-stepper.js +7 -3
  379. package/dist/components/q2-stepper.js.map +1 -1
  380. package/dist/components/q2-tab-container.js +5 -1
  381. package/dist/components/q2-tab-container.js.map +1 -1
  382. package/dist/components/q2-tab-pane.js +8 -1
  383. package/dist/components/q2-tab-pane.js.map +1 -1
  384. package/dist/components/q2-tag.js +2 -2
  385. package/dist/components/q2-tag.js.map +1 -1
  386. package/dist/components/q2-textarea.js +2 -2
  387. package/dist/components/q2-textarea.js.map +1 -1
  388. package/dist/components/q2-toast.d.ts +11 -0
  389. package/dist/components/q2-toast.js +233 -0
  390. package/dist/components/q2-toast.js.map +1 -0
  391. package/dist/components/sanitize-html-string.js +28 -5
  392. package/dist/components/sanitize-html-string.js.map +1 -1
  393. package/dist/components/tecton-tab-pane.js +4 -2
  394. package/dist/components/tecton-tab-pane.js.map +1 -1
  395. package/dist/esm/{action-sheet-WwoBwnIp.js → action-sheet-B7adb3xs.js} +5 -2
  396. package/dist/esm/action-sheet-B7adb3xs.js.map +1 -0
  397. package/dist/esm/component-DVxzK3WH.js +42 -0
  398. package/dist/esm/component-DVxzK3WH.js.map +1 -0
  399. package/dist/esm/loader.js +1 -1
  400. package/dist/esm/q2-action-group.q2-resize-observer.entry.js.map +1 -1
  401. package/dist/esm/q2-action-group_2.entry.js +121 -45
  402. package/dist/esm/q2-action-group_2.entry.js.map +1 -1
  403. package/dist/esm/q2-action-sheet.entry.js +9 -5
  404. package/dist/esm/q2-action-sheet.entry.js.map +1 -1
  405. package/dist/esm/q2-avatar.entry.js +2 -2
  406. package/dist/esm/q2-avatar.entry.js.map +1 -1
  407. package/dist/esm/q2-btn.q2-loading.entry.js.map +1 -1
  408. package/dist/esm/q2-btn_2.entry.js +13 -4
  409. package/dist/esm/q2-btn_2.entry.js.map +1 -1
  410. package/dist/esm/q2-calendar.entry.js +3 -3
  411. package/dist/esm/q2-calendar.entry.js.map +1 -1
  412. package/dist/esm/q2-card-image.entry.js +6 -6
  413. package/dist/esm/q2-card-image.entry.js.map +1 -1
  414. package/dist/esm/q2-card.entry.js +1 -1
  415. package/dist/esm/q2-card.entry.js.map +1 -1
  416. package/dist/esm/q2-carousel-pane.entry.js +7 -3
  417. package/dist/esm/q2-carousel-pane.entry.js.map +1 -1
  418. package/dist/esm/q2-carousel.entry.js +12 -2
  419. package/dist/esm/q2-carousel.entry.js.map +1 -1
  420. package/dist/esm/q2-chart-area.entry.js +1 -1
  421. package/dist/esm/q2-chart-bar.entry.js +1 -1
  422. package/dist/esm/q2-chart-donut.entry.js +1 -1
  423. package/dist/esm/q2-checkbox-group.entry.js +5 -1
  424. package/dist/esm/q2-checkbox-group.entry.js.map +1 -1
  425. package/dist/esm/q2-checkbox.entry.js +3 -4
  426. package/dist/esm/q2-checkbox.entry.js.map +1 -1
  427. package/dist/esm/q2-context.entry.js +1 -1
  428. package/dist/esm/q2-context.entry.js.map +1 -1
  429. package/dist/esm/q2-currency.entry.js +1 -1
  430. package/dist/esm/q2-data-table.entry.js +19 -9
  431. package/dist/esm/q2-data-table.entry.js.map +1 -1
  432. package/dist/esm/q2-detail.entry.js +2 -2
  433. package/dist/esm/q2-detail.entry.js.map +1 -1
  434. package/dist/esm/q2-dropdown-item.entry.js +3 -1
  435. package/dist/esm/q2-dropdown-item.entry.js.map +1 -1
  436. package/dist/esm/q2-dropdown.entry.js +33 -8
  437. package/dist/esm/q2-dropdown.entry.js.map +1 -1
  438. package/dist/esm/q2-editable-field.entry.js +2 -2
  439. package/dist/esm/q2-editable-field.entry.js.map +1 -1
  440. package/dist/esm/q2-example.entry.js +1 -1
  441. package/dist/esm/q2-file-picker.entry.js +2 -2
  442. package/dist/esm/q2-file-picker.entry.js.map +1 -1
  443. package/dist/esm/q2-form.entry.js +1 -1
  444. package/dist/esm/q2-formatted-text.entry.js +1 -1
  445. package/dist/esm/q2-grid-area.entry.js +10 -2
  446. package/dist/esm/q2-grid-area.entry.js.map +1 -1
  447. package/dist/esm/q2-icon.entry.js +6 -0
  448. package/dist/esm/q2-icon.entry.js.map +1 -1
  449. package/dist/esm/q2-input.entry.js +8 -6
  450. package/dist/esm/q2-input.entry.js.map +1 -1
  451. package/dist/esm/q2-item.entry.js +17 -17
  452. package/dist/esm/q2-item.entry.js.map +1 -1
  453. package/dist/esm/q2-legend.entry.js +1 -1
  454. package/dist/esm/q2-link.q2-list.entry.js.map +1 -1
  455. package/dist/esm/q2-link_2.entry.js +11 -7
  456. package/dist/esm/q2-link_2.entry.js.map +1 -1
  457. package/dist/esm/q2-message.entry.js +2 -2
  458. package/dist/esm/q2-message.entry.js.map +1 -1
  459. package/dist/esm/q2-meter.entry.js +1 -1
  460. package/dist/esm/q2-modal.entry.js +2 -2
  461. package/dist/esm/q2-month-picker.entry.js +2 -2
  462. package/dist/esm/q2-mutation-observer.entry.js +1 -1
  463. package/dist/esm/q2-optgroup.entry.js +4 -2
  464. package/dist/esm/q2-optgroup.entry.js.map +1 -1
  465. package/dist/esm/q2-option-list.q2-popover.entry.js.map +1 -1
  466. package/dist/esm/q2-option-list_2.entry.js +5 -3
  467. package/dist/esm/q2-option-list_2.entry.js.map +1 -1
  468. package/dist/esm/q2-option.entry.js +3 -1
  469. package/dist/esm/q2-option.entry.js.map +1 -1
  470. package/dist/esm/q2-pagination.entry.js +10 -12
  471. package/dist/esm/q2-pagination.entry.js.map +1 -1
  472. package/dist/esm/q2-pill.entry.js +2 -2
  473. package/dist/esm/q2-radio.entry.js +2 -2
  474. package/dist/esm/q2-radio.entry.js.map +1 -1
  475. package/dist/esm/q2-relative-time.entry.js +1 -1
  476. package/dist/esm/q2-section-container.entry.js +2 -0
  477. package/dist/esm/q2-section-container.entry.js.map +1 -1
  478. package/dist/esm/q2-section.entry.js +2 -2
  479. package/dist/esm/q2-select.entry.js +7 -3
  480. package/dist/esm/q2-select.entry.js.map +1 -1
  481. package/dist/esm/q2-stepper-pane.entry.js +3 -1
  482. package/dist/esm/q2-stepper-pane.entry.js.map +1 -1
  483. package/dist/esm/q2-stepper-vertical.entry.js +1 -1
  484. package/dist/esm/q2-stepper.entry.js +7 -3
  485. package/dist/esm/q2-stepper.entry.js.map +1 -1
  486. package/dist/esm/q2-tab-container.entry.js +5 -1
  487. package/dist/esm/q2-tab-container.entry.js.map +1 -1
  488. package/dist/esm/q2-tab-pane.entry.js +9 -2
  489. package/dist/esm/q2-tab-pane.entry.js.map +1 -1
  490. package/dist/esm/q2-tag.entry.js +3 -3
  491. package/dist/esm/q2-tag.entry.js.map +1 -1
  492. package/dist/esm/q2-tecton-elements.js +1 -1
  493. package/dist/esm/q2-textarea.entry.js +2 -2
  494. package/dist/esm/q2-textarea.entry.js.map +1 -1
  495. package/dist/esm/q2-toast.entry.js +190 -0
  496. package/dist/esm/q2-toast.entry.js.map +1 -0
  497. package/dist/esm/{sanitize-html-string-DOVERJq5.js → sanitize-html-string-BPwFpYg-.js} +30 -7
  498. package/dist/esm/sanitize-html-string-BPwFpYg-.js.map +1 -0
  499. package/dist/esm/tecton-tab-pane.entry.js +4 -2
  500. package/dist/esm/tecton-tab-pane.entry.js.map +1 -1
  501. package/dist/jest.e2e-coverage.js +25 -0
  502. package/dist/jest.e2e-coverage.js.map +1 -0
  503. package/dist/q2-tecton-elements/{action-sheet-WwoBwnIp.js → action-sheet-B7adb3xs.js} +19 -14
  504. package/dist/q2-tecton-elements/action-sheet-B7adb3xs.js.map +1 -0
  505. package/dist/q2-tecton-elements/assets/brand.symbol.svg +1 -1
  506. package/dist/q2-tecton-elements/assets/browsersos.symbol.svg +1 -1
  507. package/dist/q2-tecton-elements/assets/cards.symbol.svg +1 -1
  508. package/dist/q2-tecton-elements/assets/communication.symbol.svg +1 -1
  509. package/dist/q2-tecton-elements/assets/currencies.symbol.svg +1 -1
  510. package/dist/q2-tecton-elements/assets/devices.symbol.svg +1 -1
  511. package/dist/q2-tecton-elements/assets/filetypes.symbol.svg +1 -1
  512. package/dist/q2-tecton-elements/assets/gestures.symbol.svg +1 -1
  513. package/dist/q2-tecton-elements/assets/icon-list.json +1 -1
  514. package/dist/q2-tecton-elements/assets/icon-map.json +1 -1
  515. package/dist/q2-tecton-elements/assets/legacy.symbol.svg +1 -1
  516. package/dist/q2-tecton-elements/assets/mobile.symbol.svg +1 -1
  517. package/dist/q2-tecton-elements/assets/standard.symbol.svg +1 -1
  518. package/dist/q2-tecton-elements/component-DVxzK3WH.js +40 -0
  519. package/dist/q2-tecton-elements/component-DVxzK3WH.js.map +1 -0
  520. package/dist/q2-tecton-elements/q2-action-group.q2-resize-observer.entry.esm.js.map +1 -1
  521. package/dist/q2-tecton-elements/q2-action-group_2.entry.js +131 -63
  522. package/dist/q2-tecton-elements/q2-action-group_2.entry.js.map +1 -1
  523. package/dist/q2-tecton-elements/q2-action-sheet.entry.esm.js.map +1 -1
  524. package/dist/q2-tecton-elements/q2-action-sheet.entry.js +79 -75
  525. package/dist/q2-tecton-elements/q2-action-sheet.entry.js.map +1 -1
  526. package/dist/q2-tecton-elements/q2-avatar.entry.esm.js.map +1 -1
  527. package/dist/q2-tecton-elements/q2-avatar.entry.js +7 -7
  528. package/dist/q2-tecton-elements/q2-avatar.entry.js.map +1 -1
  529. package/dist/q2-tecton-elements/q2-btn.q2-loading.entry.esm.js.map +1 -1
  530. package/dist/q2-tecton-elements/q2-btn_2.entry.js +11 -4
  531. package/dist/q2-tecton-elements/q2-btn_2.entry.js.map +1 -1
  532. package/dist/q2-tecton-elements/q2-calendar.entry.esm.js.map +1 -1
  533. package/dist/q2-tecton-elements/q2-calendar.entry.js +4 -3
  534. package/dist/q2-tecton-elements/q2-calendar.entry.js.map +1 -1
  535. package/dist/q2-tecton-elements/q2-card-image.entry.esm.js.map +1 -1
  536. package/dist/q2-tecton-elements/q2-card-image.entry.js +11 -11
  537. package/dist/q2-tecton-elements/q2-card-image.entry.js.map +1 -1
  538. package/dist/q2-tecton-elements/q2-card.entry.esm.js.map +1 -1
  539. package/dist/q2-tecton-elements/q2-card.entry.js +1 -1
  540. package/dist/q2-tecton-elements/q2-card.entry.js.map +1 -1
  541. package/dist/q2-tecton-elements/q2-carousel-pane.entry.esm.js.map +1 -1
  542. package/dist/q2-tecton-elements/q2-carousel-pane.entry.js +25 -20
  543. package/dist/q2-tecton-elements/q2-carousel-pane.entry.js.map +1 -1
  544. package/dist/q2-tecton-elements/q2-carousel.entry.esm.js.map +1 -1
  545. package/dist/q2-tecton-elements/q2-carousel.entry.js +79 -67
  546. package/dist/q2-tecton-elements/q2-carousel.entry.js.map +1 -1
  547. package/dist/q2-tecton-elements/q2-chart-area.entry.js +2 -2
  548. package/dist/q2-tecton-elements/q2-chart-bar.entry.js +2 -2
  549. package/dist/q2-tecton-elements/q2-chart-donut.entry.js +9 -9
  550. package/dist/q2-tecton-elements/q2-checkbox-group.entry.esm.js.map +1 -1
  551. package/dist/q2-tecton-elements/q2-checkbox-group.entry.js +20 -15
  552. package/dist/q2-tecton-elements/q2-checkbox-group.entry.js.map +1 -1
  553. package/dist/q2-tecton-elements/q2-checkbox.entry.esm.js.map +1 -1
  554. package/dist/q2-tecton-elements/q2-checkbox.entry.js +70 -71
  555. package/dist/q2-tecton-elements/q2-checkbox.entry.js.map +1 -1
  556. package/dist/q2-tecton-elements/q2-context.entry.esm.js.map +1 -1
  557. package/dist/q2-tecton-elements/q2-context.entry.js +12 -12
  558. package/dist/q2-tecton-elements/q2-context.entry.js.map +1 -1
  559. package/dist/q2-tecton-elements/q2-currency.entry.js +8 -8
  560. package/dist/q2-tecton-elements/q2-data-table.entry.esm.js.map +1 -1
  561. package/dist/q2-tecton-elements/q2-data-table.entry.js +40 -27
  562. package/dist/q2-tecton-elements/q2-data-table.entry.js.map +1 -1
  563. package/dist/q2-tecton-elements/q2-detail.entry.esm.js.map +1 -1
  564. package/dist/q2-tecton-elements/q2-detail.entry.js +10 -10
  565. package/dist/q2-tecton-elements/q2-detail.entry.js.map +1 -1
  566. package/dist/q2-tecton-elements/q2-dropdown-item.entry.esm.js.map +1 -1
  567. package/dist/q2-tecton-elements/q2-dropdown-item.entry.js +11 -8
  568. package/dist/q2-tecton-elements/q2-dropdown-item.entry.js.map +1 -1
  569. package/dist/q2-tecton-elements/q2-dropdown.entry.esm.js.map +1 -1
  570. package/dist/q2-tecton-elements/q2-dropdown.entry.js +113 -85
  571. package/dist/q2-tecton-elements/q2-dropdown.entry.js.map +1 -1
  572. package/dist/q2-tecton-elements/q2-editable-field.entry.esm.js.map +1 -1
  573. package/dist/q2-tecton-elements/q2-editable-field.entry.js +2 -1
  574. package/dist/q2-tecton-elements/q2-editable-field.entry.js.map +1 -1
  575. package/dist/q2-tecton-elements/q2-example.entry.js +1 -1
  576. package/dist/q2-tecton-elements/q2-file-picker.entry.esm.js.map +1 -1
  577. package/dist/q2-tecton-elements/q2-file-picker.entry.js +3 -2
  578. package/dist/q2-tecton-elements/q2-file-picker.entry.js.map +1 -1
  579. package/dist/q2-tecton-elements/q2-form.entry.js +7 -7
  580. package/dist/q2-tecton-elements/q2-formatted-text.entry.js +2 -2
  581. package/dist/q2-tecton-elements/q2-grid-area.entry.esm.js.map +1 -1
  582. package/dist/q2-tecton-elements/q2-grid-area.entry.js +18 -7
  583. package/dist/q2-tecton-elements/q2-grid-area.entry.js.map +1 -1
  584. package/dist/q2-tecton-elements/q2-icon.entry.esm.js.map +1 -1
  585. package/dist/q2-tecton-elements/q2-icon.entry.js +145 -137
  586. package/dist/q2-tecton-elements/q2-icon.entry.js.map +1 -1
  587. package/dist/q2-tecton-elements/q2-input.entry.esm.js.map +1 -1
  588. package/dist/q2-tecton-elements/q2-input.entry.js +14 -8
  589. package/dist/q2-tecton-elements/q2-input.entry.js.map +1 -1
  590. package/dist/q2-tecton-elements/q2-item.entry.esm.js.map +1 -1
  591. package/dist/q2-tecton-elements/q2-item.entry.js +56 -53
  592. package/dist/q2-tecton-elements/q2-item.entry.js.map +1 -1
  593. package/dist/q2-tecton-elements/q2-legend.entry.js +2 -2
  594. package/dist/q2-tecton-elements/q2-link.q2-list.entry.esm.js.map +1 -1
  595. package/dist/q2-tecton-elements/q2-link_2.entry.js +22 -18
  596. package/dist/q2-tecton-elements/q2-link_2.entry.js.map +1 -1
  597. package/dist/q2-tecton-elements/q2-message.entry.esm.js.map +1 -1
  598. package/dist/q2-tecton-elements/q2-message.entry.js +9 -9
  599. package/dist/q2-tecton-elements/q2-message.entry.js.map +1 -1
  600. package/dist/q2-tecton-elements/q2-meter.entry.js +7 -7
  601. package/dist/q2-tecton-elements/q2-modal.entry.js +21 -21
  602. package/dist/q2-tecton-elements/q2-month-picker.entry.js +30 -30
  603. package/dist/q2-tecton-elements/q2-mutation-observer.entry.js +1 -1
  604. package/dist/q2-tecton-elements/q2-optgroup.entry.esm.js.map +1 -1
  605. package/dist/q2-tecton-elements/q2-optgroup.entry.js +15 -12
  606. package/dist/q2-tecton-elements/q2-optgroup.entry.js.map +1 -1
  607. package/dist/q2-tecton-elements/q2-option-list.q2-popover.entry.esm.js.map +1 -1
  608. package/dist/q2-tecton-elements/q2-option-list_2.entry.js +52 -49
  609. package/dist/q2-tecton-elements/q2-option-list_2.entry.js.map +1 -1
  610. package/dist/q2-tecton-elements/q2-option.entry.esm.js.map +1 -1
  611. package/dist/q2-tecton-elements/q2-option.entry.js +15 -12
  612. package/dist/q2-tecton-elements/q2-option.entry.js.map +1 -1
  613. package/dist/q2-tecton-elements/q2-pagination.entry.esm.js.map +1 -1
  614. package/dist/q2-tecton-elements/q2-pagination.entry.js +66 -66
  615. package/dist/q2-tecton-elements/q2-pagination.entry.js.map +1 -1
  616. package/dist/q2-tecton-elements/q2-pill.entry.js +37 -37
  617. package/dist/q2-tecton-elements/q2-radio.entry.esm.js.map +1 -1
  618. package/dist/q2-tecton-elements/q2-radio.entry.js +47 -45
  619. package/dist/q2-tecton-elements/q2-radio.entry.js.map +1 -1
  620. package/dist/q2-tecton-elements/q2-relative-time.entry.js +1 -1
  621. package/dist/q2-tecton-elements/q2-section-container.entry.esm.js.map +1 -1
  622. package/dist/q2-tecton-elements/q2-section-container.entry.js +5 -2
  623. package/dist/q2-tecton-elements/q2-section-container.entry.js.map +1 -1
  624. package/dist/q2-tecton-elements/q2-section.entry.js +11 -11
  625. package/dist/q2-tecton-elements/q2-select.entry.esm.js.map +1 -1
  626. package/dist/q2-tecton-elements/q2-select.entry.js +6 -3
  627. package/dist/q2-tecton-elements/q2-select.entry.js.map +1 -1
  628. package/dist/q2-tecton-elements/q2-stepper-pane.entry.esm.js.map +1 -1
  629. package/dist/q2-tecton-elements/q2-stepper-pane.entry.js +22 -19
  630. package/dist/q2-tecton-elements/q2-stepper-pane.entry.js.map +1 -1
  631. package/dist/q2-tecton-elements/q2-stepper-vertical.entry.js +69 -69
  632. package/dist/q2-tecton-elements/q2-stepper.entry.esm.js.map +1 -1
  633. package/dist/q2-tecton-elements/q2-stepper.entry.js +42 -39
  634. package/dist/q2-tecton-elements/q2-stepper.entry.js.map +1 -1
  635. package/dist/q2-tecton-elements/q2-tab-container.entry.esm.js.map +1 -1
  636. package/dist/q2-tecton-elements/q2-tab-container.entry.js +21 -16
  637. package/dist/q2-tecton-elements/q2-tab-container.entry.js.map +1 -1
  638. package/dist/q2-tecton-elements/q2-tab-pane.entry.esm.js.map +1 -1
  639. package/dist/q2-tecton-elements/q2-tab-pane.entry.js +17 -7
  640. package/dist/q2-tecton-elements/q2-tab-pane.entry.js.map +1 -1
  641. package/dist/q2-tecton-elements/q2-tag.entry.esm.js.map +1 -1
  642. package/dist/q2-tecton-elements/q2-tag.entry.js +59 -59
  643. package/dist/q2-tecton-elements/q2-tag.entry.js.map +1 -1
  644. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
  645. package/dist/q2-tecton-elements/q2-textarea.entry.esm.js.map +1 -1
  646. package/dist/q2-tecton-elements/q2-textarea.entry.js +3 -3
  647. package/dist/q2-tecton-elements/q2-textarea.entry.js.map +1 -1
  648. package/dist/q2-tecton-elements/q2-toast.entry.esm.js.map +1 -0
  649. package/dist/q2-tecton-elements/q2-toast.entry.js +222 -0
  650. package/dist/q2-tecton-elements/q2-toast.entry.js.map +1 -0
  651. package/dist/q2-tecton-elements/{sanitize-html-string-DOVERJq5.js → sanitize-html-string-BPwFpYg-.js} +167 -145
  652. package/dist/q2-tecton-elements/sanitize-html-string-BPwFpYg-.js.map +1 -0
  653. package/dist/q2-tecton-elements/tecton-tab-pane.entry.esm.js.map +1 -1
  654. package/dist/q2-tecton-elements/tecton-tab-pane.entry.js +8 -8
  655. package/dist/q2-tecton-elements/tecton-tab-pane.entry.js.map +1 -1
  656. package/dist/scripts/docs-generator/index.js +1 -1
  657. package/dist/scripts/docs-generator/index.js.map +1 -1
  658. package/dist/types/builds/q2e/development/tecton/tecton/packages/q2-tecton-elements/.stencil/jest.e2e-coverage.d.ts +1 -0
  659. package/dist/types/components/q2-action-group/q2-action-group.d.ts +7 -4
  660. package/dist/types/components/q2-carousel-pane/q2-carousel-pane.d.ts +1 -0
  661. package/dist/types/components/q2-checkbox/q2-checkbox.d.ts +0 -5
  662. package/dist/types/components/q2-data-table/q2-data-table.d.ts +8 -0
  663. package/dist/types/components/q2-dropdown/q2-dropdown.d.ts +22 -3
  664. package/dist/types/components/q2-grid-area/q2-grid-area.d.ts +2 -0
  665. package/dist/types/components/q2-input/q2-input.d.ts +4 -5
  666. package/dist/types/components/q2-item/q2-item.d.ts +5 -4
  667. package/dist/types/components/q2-link/q2-link.d.ts +4 -0
  668. package/dist/types/components/q2-pagination/q2-pagination.d.ts +11 -3
  669. package/dist/types/components/q2-select/q2-select.d.ts +1 -2
  670. package/dist/types/components/q2-tab-pane/q2-tab-pane.d.ts +2 -0
  671. package/dist/types/components/q2-toast/q2-toast.d.ts +67 -0
  672. package/dist/types/components.d.ts +189 -34
  673. package/dist/types/utils/action-sheet.d.ts +2 -1
  674. package/dist/types/utils/component.d.ts +4 -0
  675. package/dist/types/utils/sanitize-html-string.d.ts +1 -0
  676. package/package.json +72 -66
  677. package/dist/cjs/action-sheet-CiK2Bap_.js.map +0 -1
  678. package/dist/cjs/sanitize-html-string-DPqrzfM9.js.map +0 -1
  679. package/dist/esm/action-sheet-WwoBwnIp.js.map +0 -1
  680. package/dist/esm/sanitize-html-string-DOVERJq5.js.map +0 -1
  681. package/dist/q2-tecton-elements/action-sheet-WwoBwnIp.js.map +0 -1
  682. package/dist/q2-tecton-elements/sanitize-html-string-DOVERJq5.js.map +0 -1
  683. /package/dist/types/{Users/kvanhouten/Documents/Work/tecton_extra → builds/q2e/development/tecton/tecton}/packages/q2-tecton-elements/.stencil/jest.setup.d.ts +0 -0
  684. /package/dist/types/{Users/kvanhouten/Documents/Work/tecton_extra → builds/q2e/development/tecton/tecton}/packages/q2-tecton-elements/.stencil/scripts/docs-generator/index.d.ts +0 -0
  685. /package/dist/types/{Users/kvanhouten/Documents/Work/tecton_extra → builds/q2e/development/tecton/tecton}/packages/q2-tecton-elements/.stencil/scripts/docs-generator/markdown-generator.d.ts +0 -0
  686. /package/dist/types/{Users/kvanhouten/Documents/Work/tecton_extra → builds/q2e/development/tecton/tecton}/packages/q2-tecton-elements/.stencil/scripts/docs-generator/tag-handlers.d.ts +0 -0
  687. /package/dist/types/{Users/kvanhouten/Documents/Work/tecton_extra → builds/q2e/development/tecton/tecton}/packages/q2-tecton-elements/.stencil/scripts/docs-generator/types.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"q2-dropdown-item.entry.esm.js","sources":["src/components/q2-dropdown-item/q2-dropdown-item.scss?tag=q2-dropdown-item&encapsulation=shadow","src/components/q2-dropdown-item/q2-dropdown-item.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions';\n\n.dropdown-separator {\n --comp-default-separator-margin: 0 #{var-list(--tct-scale-1, --app-scale-3x, 15px)};\n margin: var-list(var-prefixer(dropdown-separator-margin), --comp-default-separator-margin);\n border-bottom: 1px solid var-list(--tct-dropdown-item-separator-color --t-gray-11 #cccccc);\n}\n\n.dropdown-item-wrapper {\n --comp-selected-icon-size: #{var-list(var-prefixer(option-selected-icon-size), --tct-scale-3, --app-scale-3x, 15px)};\n\n --comp-default-dropdown-item-padding-x: var(--app-scale-2x, 10px);\n --comp-default-dropdown-item-padding-y: var(--app-scale-2x, 10px);\n --comp-default-dropdown-item-padding: var(--comp-default-dropdown-item-padding-y)\n var(--comp-default-dropdown-item-padding-x);\n\n \n display: grid;\n align-items: center;\n gap: var-list(--tct-scale-1, --app-scale-1x, 5px);\n grid-template-columns: 1fr;\n\n &.removable {\n grid-template-columns: 1fr auto;\n .dropdown-item {\n padding-right: 0;\n }\n .remove-dropdown-item {\n flex: 0 0 44px;\n }\n }\n color: inherit;\n}\n\n.dropdown-item-button {\n --comp-selected-icon-size: #{var-list(var-prefixer(option-selected-icon-size), --tct-scale-3, --app-scale-3x, 15px)};\n --comp-dropdown-item-tween: #{var-list(--tct-tween-1, --app-tween-1, cubic-bezier(0.4, 0, 0.2, 1))};\n margin: var-list(--tct-scale-0, --app-scale-0x, 0);\n padding: var-list(--tct-scale-0, --app-scale-0x, 0);\n min-height: var(--tct-dropdown-item-min-height, 44px);\n min-width: 44px;\n border: none;\n background: transparent;\n outline: 0;\n transition: var-list(--tct-dropdown-item-tween, --comp-dropdown-item-tween);\n transition-property: background, color, box-shadow, fill, border-color, border-width;\n &:disabled {\n opacity: var-list(--tct-dropdown-item-disabled-opacity, --tct-disabled-opacity, --app-disabled-opacity, 0.4);\n cursor: not-allowed;\n }\n cursor: pointer;\n}\n\n.dropdown-item {\n --comp-selected-icon-size: #{var-list(var-prefixer(option-selected-icon-size), --tct-scale-3, --app-scale-3x, 15px)};\n --comp-default-dropdown-item-padding-x: var(--app-scale-2x, 10px);\n width: 100%;\n display: grid;\n align-items:center;\n justify-content: start;\n grid-template-columns: 1fr;\n gap: var-list(--tct-scale-1, --app-scale-1x, 5px);\n min-height: var(--tct-dropdown-item-min-height, 44px);\n padding-left: var(--comp-default-dropdown-item-padding-x);\n padding-right: var(--comp-default-dropdown-item-padding-x);\n text-align: left;\n min-height: var(--tct-dropdown-item-min-height, 44px);\n}\n\n.dropdown-item-button:focus-visible {\n box-shadow: var-list(\n --tct-option-focus-box-shadow,\n --const-inset-double-focus-ring,\n unquote('inset var(--const-global-focus, 0 0 0 2px var(--const-focus-color, #0066CC))')\n ) !important;\n}\n.dropdown-item-btn-content{\n display:flex;\n justify-content: start;\n color: var-list(var-prefixer(dropdown-item-font-color), inherit);\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n:host(:not([disabled])) {\n .dropdown-item-button:hover,\n .dropdown-item-button:focus {\n background: var-list(\n --tct-dropdown-item-hover-background,\n var-prefixer(dropdown-item-selected-bg),\n var-prefixer(gray-14),\n --tct-gray-l3,\n --app-gray-l3,\n --t-base,\n #f2f2f2\n );\n color: var(--tct-option-active-color, inherit);\n }\n\n .dropdown-item-button:hover,\n .dropdown-item-button:focus {\n color: var-list(--tct-dropdown-item-hover-color, var-prefixer(dropdown-item-selected-font-color), inherit);\n }\n\n .dropdown-item-button:focus {\n box-shadow: var-list(\n --tct-dropdown-item-focus-box-shadow,\n --const-inset-double-focus-ring,\n unquote(\n 'inset 0 0 0 2px var(--t-base), inset 0 0 0 4px var(--const-focus-color), inset 0 0 0 6px var(--t-base)'\n )\n );\n }\n}\n","import {\n Component,\n ComponentInterface,\n Prop,\n State,\n Element,\n Event,\n Listen,\n Watch,\n h,\n EventEmitter,\n} from '@stencil/core';\nimport { loc, handleAriaLabel, overrideFocus } from 'src/utils';\nimport mirrorEmit from '@/utils/mirror-emit';\nimport { JSX } from '../../components';\n\n/**\n * @name Dropdown Item\n * @category Display\n * @summary Use as a single action item within a Dropdown menu.\n */\n@Component({ tag: 'q2-dropdown-item', shadow: true, styleUrl: 'q2-dropdown-item.scss' })\nexport class Q2DropdownItem implements ComponentInterface {\n // #region Own Properties\n\n dropdownItemBtn: HTMLButtonElement;\n removeBtn: HTMLButtonElement;\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region State Properties\n\n @State()\n q2LocValue: string;\n\n // #endregion\n // #region Public Property API\n\n /**\n * Used by q2-option-list to indicate the option is active\n * @private\n */\n @Prop({ reflect: true })\n active: boolean;\n\n /** @deprecated */\n @Prop({ reflect: true, mutable: true })\n ariaLabel: string;\n\n /** Disables interaction with the item and blocks its click event. */\n @Prop({ reflect: true })\n disabled: boolean;\n\n /**\n * The text that appears within the dropdown item.\n *\n * @info\n * This will be used as the `aria-label` for this item.\n * @localizable\n */\n @Prop({ reflect: true, mutable: true })\n label: string;\n\n /**\n * Renders an icon button in the item.\n * Clicking on this button will change the `type` on the item's click event detail to \"remove\".\n */\n @Prop({ reflect: true })\n removable: boolean;\n\n /**\n * Renders a line in the item instead of text.\n * Click events from these items will not have details provided.\n * A `separator` allows for quick visual grouping of items, so interactions should not be bound to these options.\n */\n @Prop({ reflect: true })\n separator: boolean;\n\n /** A static reference value for the item. This value is returned in the click event detail. */\n @Prop({ reflect: true })\n value: string;\n\n // #endregion\n // #region Events\n\n /**\n * Is emitted when the item is clicked.\n * @deprecated\n */\n @Event()\n click: EventEmitter<{ type: 'select' | 'remove'; value: string }>;\n\n /**\n * Is emitted when the item is clicked.\n */\n @Event()\n tctClick: EventEmitter<{ type: 'select' | 'remove'; value: string }>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n componentWillLoad() {\n handleAriaLabel(this);\n this.q2LocValue = this.handleQ2LocValue();\n }\n\n componentDidLoad() {\n if (this.separator) return;\n overrideFocus(this.hostElement);\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('focus')\n onHostElementFocus(event: FocusEvent) {\n if (event.target === this.hostElement) {\n this.focusItem();\n }\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('ariaLabel')\n ariaLabelObserver() {\n handleAriaLabel(this);\n }\n\n // #endregion\n // #region Local Methods\n\n get innerLabel(): string {\n return this.label || this.hostElement.textContent.trim() || this.q2LocValue;\n }\n\n get removeLabel(): string {\n return loc('tecton.element.dropdownItem.remove', [this.innerLabel || '']);\n }\n\n focusItem() {\n this.dropdownItemBtn.focus({ preventScroll: true });\n }\n\n focusRemoveBtn() {\n this.removeBtn && this.removeBtn.focus();\n }\n\n handleQ2LocValue = (): string => {\n const locElement = this.hostElement.querySelector('q2-loc');\n if (!locElement) return '';\n\n return locElement.value\n ? loc(locElement.value, locElement.substitutions)\n : loc(locElement.innerText, locElement.substitutions);\n };\n\n onItemClick = (event: MouseEvent) => {\n event.stopImmediatePropagation();\n\n mirrorEmit(this, ['click', 'tctClick'], {\n type: 'select',\n value: this.value || '',\n });\n };\n\n onItemFocus = (event: FocusEvent) => {\n event.stopPropagation();\n };\n\n onItemKeydown = (event: KeyboardEvent) => {\n if (event.key === 'ArrowRight') this.focusRemoveBtn();\n };\n\n onRemoveBtnClick = (event: MouseEvent) => {\n event.stopImmediatePropagation();\n\n mirrorEmit(this, ['click', 'tctClick'], {\n type: 'remove',\n value: this.value || '',\n });\n };\n\n onRemoveBtnFocus = (event: FocusEvent) => {\n event.stopPropagation();\n };\n\n onRemoveBtnKeydown = (event: KeyboardEvent) => {\n if (event.key === 'ArrowLeft') this.focusItem();\n };\n\n // #endregion\n // #region Render Methods\n\n renderItemDOM(): JSX.IntrinsicElements {\n return (\n <div\n class={`dropdown-item-wrapper ${this.removable ? 'removable' : ''}`}\n role=\"presentation\"\n >\n <button\n ref={el => (this.dropdownItemBtn = el)}\n aria-label={loc(this.innerLabel)}\n class=\"dropdown-item-button dropdown-item\"\n tabindex=\"-1\"\n disabled={this.disabled}\n role=\"menuitem\"\n onClick={this.onItemClick}\n onKeyDown={this.onItemKeydown}\n onFocus={this.onItemFocus}\n test-id=\"dropdownItem\"\n >\n <div class=\"dropdown-item-btn-content\">\n <slot>{loc(this.innerLabel)}</slot>\n </div>\n </button>\n\n {this.removable && (\n <button\n ref={el => (this.removeBtn = el)}\n class=\"dropdown-item-button remove-dropdown-item\"\n tabindex=\"-1\"\n aria-label={this.removeLabel}\n disabled={this.disabled}\n role=\"menuitem\"\n onClick={this.onRemoveBtnClick}\n onKeyDown={this.onRemoveBtnKeydown}\n onFocus={this.onRemoveBtnFocus}\n test-id=\"removeDropdownItem\"\n >\n <q2-icon type=\"close\" />\n </button>\n )}\n </div>\n );\n }\n\n renderSeparatorDOM(): JSX.IntrinsicElements {\n return (\n <div\n class=\"dropdown-separator\"\n test-id=\"dropdownItemSeparator\"\n role=\"separator\"\n ></div>\n );\n }\n\n render() {\n if (this.separator) {\n return this.renderSeparatorDOM();\n }\n\n return this.renderItemDOM();\n }\n\n // #endregion\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"q2-dropdown-item.entry.esm.js","sources":["src/components/q2-dropdown-item/q2-dropdown-item.scss?tag=q2-dropdown-item&encapsulation=shadow","src/components/q2-dropdown-item/q2-dropdown-item.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions';\n\n.dropdown-separator {\n --comp-default-separator-margin: 0 #{var-list(--tct-scale-1, --app-scale-3x, 15px)};\n margin: var-list(var-prefixer(dropdown-separator-margin), --comp-default-separator-margin);\n border-bottom: 1px solid var-list(--tct-dropdown-item-separator-color --t-gray-11 #cccccc);\n}\n\n.dropdown-item-wrapper {\n --comp-selected-icon-size: #{var-list(var-prefixer(option-selected-icon-size), --tct-scale-3, --app-scale-3x, 15px)};\n\n --comp-default-dropdown-item-padding-x: var(--app-scale-2x, 10px);\n --comp-default-dropdown-item-padding-y: var(--app-scale-2x, 10px);\n --comp-default-dropdown-item-padding: var(--comp-default-dropdown-item-padding-y)\n var(--comp-default-dropdown-item-padding-x);\n\n \n display: grid;\n align-items: center;\n gap: var-list(--tct-scale-1, --app-scale-1x, 5px);\n grid-template-columns: 1fr;\n\n &.removable {\n grid-template-columns: 1fr auto;\n .dropdown-item {\n padding-right: 0;\n }\n .remove-dropdown-item {\n flex: 0 0 44px;\n }\n }\n color: inherit;\n}\n\n.dropdown-item-button {\n --comp-selected-icon-size: #{var-list(var-prefixer(option-selected-icon-size), --tct-scale-3, --app-scale-3x, 15px)};\n --comp-dropdown-item-tween: #{var-list(--tct-tween-1, --app-tween-1, cubic-bezier(0.4, 0, 0.2, 1))};\n margin: var-list(--tct-scale-0, --app-scale-0x, 0);\n padding: var-list(--tct-scale-0, --app-scale-0x, 0);\n min-height: var(--tct-dropdown-item-min-height, 44px);\n min-width: 44px;\n border: none;\n background: transparent;\n outline: 0;\n transition: var-list(--tct-dropdown-item-tween, --comp-dropdown-item-tween);\n transition-property: background, color, box-shadow, fill, border-color, border-width;\n &:disabled {\n opacity: var-list(--tct-dropdown-item-disabled-opacity, --tct-disabled-opacity, --app-disabled-opacity, 0.4);\n cursor: not-allowed;\n }\n cursor: pointer;\n}\n\n.dropdown-item {\n --comp-selected-icon-size: #{var-list(var-prefixer(option-selected-icon-size), --tct-scale-3, --app-scale-3x, 15px)};\n --comp-default-dropdown-item-padding-x: var(--app-scale-2x, 10px);\n width: 100%;\n display: grid;\n align-items:center;\n justify-content: start;\n grid-template-columns: 1fr;\n gap: var-list(--tct-scale-1, --app-scale-1x, 5px);\n min-height: var(--tct-dropdown-item-min-height, 44px);\n padding-left: var(--comp-default-dropdown-item-padding-x);\n padding-right: var(--comp-default-dropdown-item-padding-x);\n text-align: left;\n min-height: var(--tct-dropdown-item-min-height, 44px);\n}\n\n.dropdown-item-button:focus-visible {\n box-shadow: var-list(\n --tct-option-focus-box-shadow,\n --const-inset-double-focus-ring,\n unquote('inset var(--const-global-focus, 0 0 0 2px var(--const-focus-color, #0066CC))')\n ) !important;\n}\n.dropdown-item-btn-content{\n display:flex;\n justify-content: start;\n color: var-list(var-prefixer(dropdown-item-font-color), inherit);\n font-size: var(--tct-dropdown-item-font-size, inherit);\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n:host(:not([disabled])) {\n .dropdown-item-button:hover,\n .dropdown-item-button:focus {\n background: var-list(\n --tct-dropdown-item-hover-background,\n var-prefixer(dropdown-item-selected-bg),\n var-prefixer(gray-14),\n --tct-gray-l3,\n --app-gray-l3,\n --t-base,\n #f2f2f2\n );\n color: var(--tct-option-active-color, inherit);\n }\n\n .dropdown-item-button:hover,\n .dropdown-item-button:focus {\n color: var-list(--tct-dropdown-item-hover-color, var-prefixer(dropdown-item-selected-font-color), inherit);\n }\n\n .dropdown-item-button:focus {\n box-shadow: var-list(\n --tct-dropdown-item-focus-box-shadow,\n --const-inset-double-focus-ring,\n unquote(\n 'inset 0 0 0 2px var(--t-base), inset 0 0 0 4px var(--const-focus-color), inset 0 0 0 6px var(--t-base)'\n )\n );\n }\n}\n","import {\n Component,\n ComponentInterface,\n Prop,\n State,\n Element,\n Event,\n Listen,\n Watch,\n h,\n EventEmitter,\n} from '@stencil/core';\nimport { loc, handleAriaLabel, overrideFocus } from 'src/utils';\nimport mirrorEmit from '@/utils/mirror-emit';\nimport { JSX } from '../../components';\nimport { hasValidAncestor } from '@/utils/component';\n\n/**\n * @name Dropdown Item\n * @category Display\n * @summary Use as a single action item within a Dropdown menu.\n */\n@Component({ tag: 'q2-dropdown-item', shadow: true, styleUrl: 'q2-dropdown-item.scss' })\nexport class Q2DropdownItem implements ComponentInterface {\n // #region Own Properties\n\n dropdownItemBtn: HTMLButtonElement;\n removeBtn: HTMLButtonElement;\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region State Properties\n\n @State()\n q2LocValue: string;\n\n // #endregion\n // #region Public Property API\n\n /**\n * Used by q2-option-list to indicate the option is active\n * @private\n */\n @Prop({ reflect: true })\n active: boolean;\n\n /** @deprecated */\n @Prop({ reflect: true, mutable: true })\n ariaLabel: string;\n\n /** Disables interaction with the item and blocks its click event. */\n @Prop({ reflect: true })\n disabled: boolean;\n\n /**\n * The text that appears within the dropdown item.\n *\n * @info\n * This will be used as the `aria-label` for this item.\n * @localizable\n */\n @Prop({ reflect: true, mutable: true })\n label: string;\n\n /**\n * Renders an icon button in the item.\n * Clicking on this button will change the `type` on the item's click event detail to \"remove\".\n */\n @Prop({ reflect: true })\n removable: boolean;\n\n /**\n * Renders a line in the item instead of text.\n * Click events from these items will not have details provided.\n * A `separator` allows for quick visual grouping of items, so interactions should not be bound to these options.\n */\n @Prop({ reflect: true })\n separator: boolean;\n\n /** A static reference value for the item. This value is returned in the click event detail. */\n @Prop({ reflect: true })\n value: string;\n\n // #endregion\n // #region Events\n\n /**\n * Is emitted when the item is clicked.\n * @deprecated\n */\n @Event()\n click: EventEmitter<{ type: 'select' | 'remove'; value: string }>;\n\n /**\n * Is emitted when the item is clicked.\n */\n @Event()\n tctClick: EventEmitter<{ type: 'select' | 'remove'; value: string }>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n componentWillLoad() {\n hasValidAncestor(this.hostElement, 'q2-dropdown');\n handleAriaLabel(this);\n this.q2LocValue = this.handleQ2LocValue();\n }\n\n componentDidLoad() {\n if (this.separator) return;\n overrideFocus(this.hostElement);\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('focus')\n onHostElementFocus(event: FocusEvent) {\n if (event.target === this.hostElement) {\n this.focusItem();\n }\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('ariaLabel')\n ariaLabelObserver() {\n handleAriaLabel(this);\n }\n\n // #endregion\n // #region Local Methods\n\n get innerLabel(): string {\n return this.label || this.hostElement.textContent.trim() || this.q2LocValue;\n }\n\n get removeLabel(): string {\n return loc('tecton.element.dropdownItem.remove', [this.innerLabel || '']);\n }\n\n focusItem() {\n this.dropdownItemBtn.focus({ preventScroll: true });\n }\n\n focusRemoveBtn() {\n this.removeBtn && this.removeBtn.focus();\n }\n\n handleQ2LocValue = (): string => {\n const locElement = this.hostElement.querySelector('q2-loc');\n if (!locElement) return '';\n\n return locElement.value\n ? loc(locElement.value, locElement.substitutions)\n : loc(locElement.innerText, locElement.substitutions);\n };\n\n onItemClick = (event: MouseEvent) => {\n event.stopImmediatePropagation();\n\n mirrorEmit(this, ['click', 'tctClick'], {\n type: 'select',\n value: this.value || '',\n });\n };\n\n onItemFocus = (event: FocusEvent) => {\n event.stopPropagation();\n };\n\n onItemKeydown = (event: KeyboardEvent) => {\n if (event.key === 'ArrowRight') this.focusRemoveBtn();\n };\n\n onRemoveBtnClick = (event: MouseEvent) => {\n event.stopImmediatePropagation();\n\n mirrorEmit(this, ['click', 'tctClick'], {\n type: 'remove',\n value: this.value || '',\n });\n };\n\n onRemoveBtnFocus = (event: FocusEvent) => {\n event.stopPropagation();\n };\n\n onRemoveBtnKeydown = (event: KeyboardEvent) => {\n if (event.key === 'ArrowLeft') this.focusItem();\n };\n\n // #endregion\n // #region Render Methods\n\n renderItemDOM(): JSX.IntrinsicElements {\n return (\n <div\n class={`dropdown-item-wrapper ${this.removable ? 'removable' : ''}`}\n role=\"presentation\"\n >\n <button\n ref={el => (this.dropdownItemBtn = el)}\n aria-label={loc(this.innerLabel)}\n class=\"dropdown-item-button dropdown-item\"\n tabindex=\"-1\"\n disabled={this.disabled}\n role=\"menuitem\"\n onClick={this.onItemClick}\n onKeyDown={this.onItemKeydown}\n onFocus={this.onItemFocus}\n test-id=\"dropdownItem\"\n >\n <div class=\"dropdown-item-btn-content\">\n <slot>{loc(this.innerLabel)}</slot>\n </div>\n </button>\n\n {this.removable && (\n <button\n ref={el => (this.removeBtn = el)}\n class=\"dropdown-item-button remove-dropdown-item\"\n tabindex=\"-1\"\n aria-label={this.removeLabel}\n disabled={this.disabled}\n role=\"menuitem\"\n onClick={this.onRemoveBtnClick}\n onKeyDown={this.onRemoveBtnKeydown}\n onFocus={this.onRemoveBtnFocus}\n test-id=\"removeDropdownItem\"\n >\n <q2-icon type=\"close\" />\n </button>\n )}\n </div>\n );\n }\n\n renderSeparatorDOM(): JSX.IntrinsicElements {\n return (\n <div\n class=\"dropdown-separator\"\n test-id=\"dropdownItemSeparator\"\n role=\"separator\"\n ></div>\n );\n }\n\n render() {\n if (this.separator) {\n return this.renderSeparatorDOM();\n }\n\n return this.renderItemDOM();\n }\n\n // #endregion\n}\n"],"names":[],"mappings":"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"}
@@ -1,12 +1,14 @@
1
1
  import { r as t, c as o, h as e, g as r } from "./index-CGkHOjh1.js";
2
2
 
3
- import { l as i, d as a, o as n } from "./index-B4WYBDS9.js";
3
+ import { l as i, d as n, o as a } from "./index-B4WYBDS9.js";
4
4
 
5
5
  import { m as d } from "./mirror-emit-DUjY_ucm.js";
6
6
 
7
- const s = "*{box-sizing:border-box}*:active{outline:none}*:focus-visible{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}.dropdown-separator{--comp-default-separator-margin:0 var(--tct-scale-1, var(--app-scale-3x, 15px));margin:var(--tct-dropdown-separator-margin, var(--t-dropdown-separator-margin, var(--comp-default-separator-margin)));border-bottom:1px solid var(--tct-dropdown-item-separator-color, var(--t-gray-11, #cccccc))}.dropdown-item-wrapper{--comp-selected-icon-size:var(--tct-option-selected-icon-size, var(--t-option-selected-icon-size, var(--tct-scale-3, var(--app-scale-3x, 15px))));--comp-default-dropdown-item-padding-x:var(--app-scale-2x, 10px);--comp-default-dropdown-item-padding-y:var(--app-scale-2x, 10px);--comp-default-dropdown-item-padding:var(--comp-default-dropdown-item-padding-y)\n var(--comp-default-dropdown-item-padding-x);display:grid;align-items:center;gap:var(--tct-scale-1, var(--app-scale-1x, 5px));grid-template-columns:1fr;color:inherit}.dropdown-item-wrapper.removable{grid-template-columns:1fr auto}.dropdown-item-wrapper.removable .dropdown-item{padding-right:0}.dropdown-item-wrapper.removable .remove-dropdown-item{flex:0 0 44px}.dropdown-item-button{--comp-selected-icon-size:var(--tct-option-selected-icon-size, var(--t-option-selected-icon-size, var(--tct-scale-3, var(--app-scale-3x, 15px))));--comp-dropdown-item-tween:var(--tct-tween-1, var(--app-tween-1, cubic-bezier(0.4, 0, 0.2, 1)));margin:var(--tct-scale-0, var(--app-scale-0x, 0));padding:var(--tct-scale-0, var(--app-scale-0x, 0));min-height:var(--tct-dropdown-item-min-height, 44px);min-width:44px;border:none;background:transparent;outline:0;transition:var(--tct-dropdown-item-tween, var(--comp-dropdown-item-tween));transition-property:background, color, box-shadow, fill, border-color, border-width;cursor:pointer}.dropdown-item-button:disabled{opacity:var(--tct-dropdown-item-disabled-opacity, var(--tct-disabled-opacity, var(--app-disabled-opacity, 0.4)));cursor:not-allowed}.dropdown-item{--comp-selected-icon-size:var(--tct-option-selected-icon-size, var(--t-option-selected-icon-size, var(--tct-scale-3, var(--app-scale-3x, 15px))));--comp-default-dropdown-item-padding-x:var(--app-scale-2x, 10px);width:100%;display:grid;align-items:center;justify-content:start;grid-template-columns:1fr;gap:var(--tct-scale-1, var(--app-scale-1x, 5px));min-height:var(--tct-dropdown-item-min-height, 44px);padding-left:var(--comp-default-dropdown-item-padding-x);padding-right:var(--comp-default-dropdown-item-padding-x);text-align:left;min-height:var(--tct-dropdown-item-min-height, 44px)}.dropdown-item-button:focus-visible{box-shadow:var(--tct-option-focus-box-shadow, var(--const-inset-double-focus-ring, inset var(--const-global-focus, 0 0 0 2px var(--const-focus-color, #0066CC)))) !important}.dropdown-item-btn-content{display:flex;justify-content:start;color:var(--tct-dropdown-item-font-color, var(--t-dropdown-item-font-color, inherit));overflow:hidden;text-overflow:ellipsis}:host(:not([disabled])) .dropdown-item-button:hover,:host(:not([disabled])) .dropdown-item-button:focus{background:var(--tct-dropdown-item-hover-background, var(--tct-dropdown-item-selected-bg, var(--t-dropdown-item-selected-bg, var(--tct-gray-14, var(--t-gray-14, var(--tct-gray-l3, var(--app-gray-l3, var(--t-base, #f2f2f2))))))));color:var(--tct-option-active-color, inherit)}:host(:not([disabled])) .dropdown-item-button:hover,:host(:not([disabled])) .dropdown-item-button:focus{color:var(--tct-dropdown-item-hover-color, var(--tct-dropdown-item-selected-font-color, var(--t-dropdown-item-selected-font-color, inherit)))}:host(:not([disabled])) .dropdown-item-button:focus{box-shadow:var(--tct-dropdown-item-focus-box-shadow, var(--const-inset-double-focus-ring, inset 0 0 0 2px var(--t-base), inset 0 0 0 4px var(--const-focus-color), inset 0 0 0 6px var(--t-base)))}";
7
+ import { b as s } from "./component-DVxzK3WH.js";
8
8
 
9
- const p = class {
9
+ const p = "*{box-sizing:border-box}*:active{outline:none}*:focus-visible{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}.dropdown-separator{--comp-default-separator-margin:0 var(--tct-scale-1, var(--app-scale-3x, 15px));margin:var(--tct-dropdown-separator-margin, var(--t-dropdown-separator-margin, var(--comp-default-separator-margin)));border-bottom:1px solid var(--tct-dropdown-item-separator-color, var(--t-gray-11, #cccccc))}.dropdown-item-wrapper{--comp-selected-icon-size:var(--tct-option-selected-icon-size, var(--t-option-selected-icon-size, var(--tct-scale-3, var(--app-scale-3x, 15px))));--comp-default-dropdown-item-padding-x:var(--app-scale-2x, 10px);--comp-default-dropdown-item-padding-y:var(--app-scale-2x, 10px);--comp-default-dropdown-item-padding:var(--comp-default-dropdown-item-padding-y)\n var(--comp-default-dropdown-item-padding-x);display:grid;align-items:center;gap:var(--tct-scale-1, var(--app-scale-1x, 5px));grid-template-columns:1fr;color:inherit}.dropdown-item-wrapper.removable{grid-template-columns:1fr auto}.dropdown-item-wrapper.removable .dropdown-item{padding-right:0}.dropdown-item-wrapper.removable .remove-dropdown-item{flex:0 0 44px}.dropdown-item-button{--comp-selected-icon-size:var(--tct-option-selected-icon-size, var(--t-option-selected-icon-size, var(--tct-scale-3, var(--app-scale-3x, 15px))));--comp-dropdown-item-tween:var(--tct-tween-1, var(--app-tween-1, cubic-bezier(0.4, 0, 0.2, 1)));margin:var(--tct-scale-0, var(--app-scale-0x, 0));padding:var(--tct-scale-0, var(--app-scale-0x, 0));min-height:var(--tct-dropdown-item-min-height, 44px);min-width:44px;border:none;background:transparent;outline:0;transition:var(--tct-dropdown-item-tween, var(--comp-dropdown-item-tween));transition-property:background, color, box-shadow, fill, border-color, border-width;cursor:pointer}.dropdown-item-button:disabled{opacity:var(--tct-dropdown-item-disabled-opacity, var(--tct-disabled-opacity, var(--app-disabled-opacity, 0.4)));cursor:not-allowed}.dropdown-item{--comp-selected-icon-size:var(--tct-option-selected-icon-size, var(--t-option-selected-icon-size, var(--tct-scale-3, var(--app-scale-3x, 15px))));--comp-default-dropdown-item-padding-x:var(--app-scale-2x, 10px);width:100%;display:grid;align-items:center;justify-content:start;grid-template-columns:1fr;gap:var(--tct-scale-1, var(--app-scale-1x, 5px));min-height:var(--tct-dropdown-item-min-height, 44px);padding-left:var(--comp-default-dropdown-item-padding-x);padding-right:var(--comp-default-dropdown-item-padding-x);text-align:left;min-height:var(--tct-dropdown-item-min-height, 44px)}.dropdown-item-button:focus-visible{box-shadow:var(--tct-option-focus-box-shadow, var(--const-inset-double-focus-ring, inset var(--const-global-focus, 0 0 0 2px var(--const-focus-color, #0066CC)))) !important}.dropdown-item-btn-content{display:flex;justify-content:start;color:var(--tct-dropdown-item-font-color, var(--t-dropdown-item-font-color, inherit));font-size:var(--tct-dropdown-item-font-size, inherit);overflow:hidden;text-overflow:ellipsis}:host(:not([disabled])) .dropdown-item-button:hover,:host(:not([disabled])) .dropdown-item-button:focus{background:var(--tct-dropdown-item-hover-background, var(--tct-dropdown-item-selected-bg, var(--t-dropdown-item-selected-bg, var(--tct-gray-14, var(--t-gray-14, var(--tct-gray-l3, var(--app-gray-l3, var(--t-base, #f2f2f2))))))));color:var(--tct-option-active-color, inherit)}:host(:not([disabled])) .dropdown-item-button:hover,:host(:not([disabled])) .dropdown-item-button:focus{color:var(--tct-dropdown-item-hover-color, var(--tct-dropdown-item-selected-font-color, var(--t-dropdown-item-selected-font-color, inherit)))}:host(:not([disabled])) .dropdown-item-button:focus{box-shadow:var(--tct-dropdown-item-focus-box-shadow, var(--const-inset-double-focus-ring, inset 0 0 0 2px var(--t-base), inset 0 0 0 4px var(--const-focus-color), inset 0 0 0 6px var(--t-base)))}";
10
+
11
+ const c = class {
10
12
  constructor(e) {
11
13
  t(this, e);
12
14
  this.click = o(this, "click", 7);
@@ -46,12 +48,13 @@ const p = class {
46
48
  // #endregion
47
49
  // #region Component Lifecycle Events
48
50
  componentWillLoad() {
49
- a(this);
51
+ s(this.hostElement, "q2-dropdown");
52
+ n(this);
50
53
  this.q2LocValue = this.handleQ2LocValue();
51
54
  }
52
55
  componentDidLoad() {
53
56
  if (this.separator) return;
54
- n(this.hostElement);
57
+ a(this.hostElement);
55
58
  }
56
59
  // #endregion
57
60
  // #region Listeners
@@ -63,7 +66,7 @@ const p = class {
63
66
  // #endregion
64
67
  // #region Watchers
65
68
  ariaLabelObserver() {
66
- a(this);
69
+ n(this);
67
70
  }
68
71
  // #endregion
69
72
  // #region Local Methods
@@ -138,8 +141,8 @@ const p = class {
138
141
  }
139
142
  };
140
143
 
141
- p.style = s;
144
+ c.style = p;
142
145
 
143
- export { p as q2_dropdown_item };
146
+ export { c as q2_dropdown_item };
144
147
  //# sourceMappingURL=q2-dropdown-item.entry.esm.js.map
145
148
  //# sourceMappingURL=q2-dropdown-item.entry.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["q2DropdownItemCss","Q2DropdownItem","constructor","hostRef","this","handleQ2LocValue","locElement","hostElement","querySelector","value","loc","substitutions","innerText","onItemClick","event","stopImmediatePropagation","mirrorEmit","type","onItemFocus","stopPropagation","onItemKeydown","key","focusRemoveBtn","onRemoveBtnClick","onRemoveBtnFocus","onRemoveBtnKeydown","focusItem","componentWillLoad","handleAriaLabel","q2LocValue","componentDidLoad","separator","overrideFocus","onHostElementFocus","target","ariaLabelObserver","innerLabel","label","textContent","trim","removeLabel","dropdownItemBtn","focus","preventScroll","removeBtn","renderItemDOM","h","class","removable","role","ref","el","tabindex","disabled","onClick","onKeyDown","onFocus","renderSeparatorDOM","render"],"sources":["src/components/q2-dropdown-item/q2-dropdown-item.scss?tag=q2-dropdown-item&encapsulation=shadow","src/components/q2-dropdown-item/q2-dropdown-item.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions';\n\n.dropdown-separator {\n --comp-default-separator-margin: 0 #{var-list(--tct-scale-1, --app-scale-3x, 15px)};\n margin: var-list(var-prefixer(dropdown-separator-margin), --comp-default-separator-margin);\n border-bottom: 1px solid var-list(--tct-dropdown-item-separator-color --t-gray-11 #cccccc);\n}\n\n.dropdown-item-wrapper {\n --comp-selected-icon-size: #{var-list(var-prefixer(option-selected-icon-size), --tct-scale-3, --app-scale-3x, 15px)};\n\n --comp-default-dropdown-item-padding-x: var(--app-scale-2x, 10px);\n --comp-default-dropdown-item-padding-y: var(--app-scale-2x, 10px);\n --comp-default-dropdown-item-padding: var(--comp-default-dropdown-item-padding-y)\n var(--comp-default-dropdown-item-padding-x);\n\n \n display: grid;\n align-items: center;\n gap: var-list(--tct-scale-1, --app-scale-1x, 5px);\n grid-template-columns: 1fr;\n\n &.removable {\n grid-template-columns: 1fr auto;\n .dropdown-item {\n padding-right: 0;\n }\n .remove-dropdown-item {\n flex: 0 0 44px;\n }\n }\n color: inherit;\n}\n\n.dropdown-item-button {\n --comp-selected-icon-size: #{var-list(var-prefixer(option-selected-icon-size), --tct-scale-3, --app-scale-3x, 15px)};\n --comp-dropdown-item-tween: #{var-list(--tct-tween-1, --app-tween-1, cubic-bezier(0.4, 0, 0.2, 1))};\n margin: var-list(--tct-scale-0, --app-scale-0x, 0);\n padding: var-list(--tct-scale-0, --app-scale-0x, 0);\n min-height: var(--tct-dropdown-item-min-height, 44px);\n min-width: 44px;\n border: none;\n background: transparent;\n outline: 0;\n transition: var-list(--tct-dropdown-item-tween, --comp-dropdown-item-tween);\n transition-property: background, color, box-shadow, fill, border-color, border-width;\n &:disabled {\n opacity: var-list(--tct-dropdown-item-disabled-opacity, --tct-disabled-opacity, --app-disabled-opacity, 0.4);\n cursor: not-allowed;\n }\n cursor: pointer;\n}\n\n.dropdown-item {\n --comp-selected-icon-size: #{var-list(var-prefixer(option-selected-icon-size), --tct-scale-3, --app-scale-3x, 15px)};\n --comp-default-dropdown-item-padding-x: var(--app-scale-2x, 10px);\n width: 100%;\n display: grid;\n align-items:center;\n justify-content: start;\n grid-template-columns: 1fr;\n gap: var-list(--tct-scale-1, --app-scale-1x, 5px);\n min-height: var(--tct-dropdown-item-min-height, 44px);\n padding-left: var(--comp-default-dropdown-item-padding-x);\n padding-right: var(--comp-default-dropdown-item-padding-x);\n text-align: left;\n min-height: var(--tct-dropdown-item-min-height, 44px);\n}\n\n.dropdown-item-button:focus-visible {\n box-shadow: var-list(\n --tct-option-focus-box-shadow,\n --const-inset-double-focus-ring,\n unquote('inset var(--const-global-focus, 0 0 0 2px var(--const-focus-color, #0066CC))')\n ) !important;\n}\n.dropdown-item-btn-content{\n display:flex;\n justify-content: start;\n color: var-list(var-prefixer(dropdown-item-font-color), inherit);\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n:host(:not([disabled])) {\n .dropdown-item-button:hover,\n .dropdown-item-button:focus {\n background: var-list(\n --tct-dropdown-item-hover-background,\n var-prefixer(dropdown-item-selected-bg),\n var-prefixer(gray-14),\n --tct-gray-l3,\n --app-gray-l3,\n --t-base,\n #f2f2f2\n );\n color: var(--tct-option-active-color, inherit);\n }\n\n .dropdown-item-button:hover,\n .dropdown-item-button:focus {\n color: var-list(--tct-dropdown-item-hover-color, var-prefixer(dropdown-item-selected-font-color), inherit);\n }\n\n .dropdown-item-button:focus {\n box-shadow: var-list(\n --tct-dropdown-item-focus-box-shadow,\n --const-inset-double-focus-ring,\n unquote(\n 'inset 0 0 0 2px var(--t-base), inset 0 0 0 4px var(--const-focus-color), inset 0 0 0 6px var(--t-base)'\n )\n );\n }\n}\n","import {\n Component,\n ComponentInterface,\n Prop,\n State,\n Element,\n Event,\n Listen,\n Watch,\n h,\n EventEmitter,\n} from '@stencil/core';\nimport { loc, handleAriaLabel, overrideFocus } from 'src/utils';\nimport mirrorEmit from '@/utils/mirror-emit';\nimport { JSX } from '../../components';\n\n/**\n * @name Dropdown Item\n * @category Display\n * @summary Use as a single action item within a Dropdown menu.\n */\n@Component({ tag: 'q2-dropdown-item', shadow: true, styleUrl: 'q2-dropdown-item.scss' })\nexport class Q2DropdownItem implements ComponentInterface {\n // #region Own Properties\n\n dropdownItemBtn: HTMLButtonElement;\n removeBtn: HTMLButtonElement;\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region State Properties\n\n @State()\n q2LocValue: string;\n\n // #endregion\n // #region Public Property API\n\n /**\n * Used by q2-option-list to indicate the option is active\n * @private\n */\n @Prop({ reflect: true })\n active: boolean;\n\n /** @deprecated */\n @Prop({ reflect: true, mutable: true })\n ariaLabel: string;\n\n /** Disables interaction with the item and blocks its click event. */\n @Prop({ reflect: true })\n disabled: boolean;\n\n /**\n * The text that appears within the dropdown item.\n *\n * @info\n * This will be used as the `aria-label` for this item.\n * @localizable\n */\n @Prop({ reflect: true, mutable: true })\n label: string;\n\n /**\n * Renders an icon button in the item.\n * Clicking on this button will change the `type` on the item's click event detail to \"remove\".\n */\n @Prop({ reflect: true })\n removable: boolean;\n\n /**\n * Renders a line in the item instead of text.\n * Click events from these items will not have details provided.\n * A `separator` allows for quick visual grouping of items, so interactions should not be bound to these options.\n */\n @Prop({ reflect: true })\n separator: boolean;\n\n /** A static reference value for the item. This value is returned in the click event detail. */\n @Prop({ reflect: true })\n value: string;\n\n // #endregion\n // #region Events\n\n /**\n * Is emitted when the item is clicked.\n * @deprecated\n */\n @Event()\n click: EventEmitter<{ type: 'select' | 'remove'; value: string }>;\n\n /**\n * Is emitted when the item is clicked.\n */\n @Event()\n tctClick: EventEmitter<{ type: 'select' | 'remove'; value: string }>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n componentWillLoad() {\n handleAriaLabel(this);\n this.q2LocValue = this.handleQ2LocValue();\n }\n\n componentDidLoad() {\n if (this.separator) return;\n overrideFocus(this.hostElement);\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('focus')\n onHostElementFocus(event: FocusEvent) {\n if (event.target === this.hostElement) {\n this.focusItem();\n }\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('ariaLabel')\n ariaLabelObserver() {\n handleAriaLabel(this);\n }\n\n // #endregion\n // #region Local Methods\n\n get innerLabel(): string {\n return this.label || this.hostElement.textContent.trim() || this.q2LocValue;\n }\n\n get removeLabel(): string {\n return loc('tecton.element.dropdownItem.remove', [this.innerLabel || '']);\n }\n\n focusItem() {\n this.dropdownItemBtn.focus({ preventScroll: true });\n }\n\n focusRemoveBtn() {\n this.removeBtn && this.removeBtn.focus();\n }\n\n handleQ2LocValue = (): string => {\n const locElement = this.hostElement.querySelector('q2-loc');\n if (!locElement) return '';\n\n return locElement.value\n ? loc(locElement.value, locElement.substitutions)\n : loc(locElement.innerText, locElement.substitutions);\n };\n\n onItemClick = (event: MouseEvent) => {\n event.stopImmediatePropagation();\n\n mirrorEmit(this, ['click', 'tctClick'], {\n type: 'select',\n value: this.value || '',\n });\n };\n\n onItemFocus = (event: FocusEvent) => {\n event.stopPropagation();\n };\n\n onItemKeydown = (event: KeyboardEvent) => {\n if (event.key === 'ArrowRight') this.focusRemoveBtn();\n };\n\n onRemoveBtnClick = (event: MouseEvent) => {\n event.stopImmediatePropagation();\n\n mirrorEmit(this, ['click', 'tctClick'], {\n type: 'remove',\n value: this.value || '',\n });\n };\n\n onRemoveBtnFocus = (event: FocusEvent) => {\n event.stopPropagation();\n };\n\n onRemoveBtnKeydown = (event: KeyboardEvent) => {\n if (event.key === 'ArrowLeft') this.focusItem();\n };\n\n // #endregion\n // #region Render Methods\n\n renderItemDOM(): JSX.IntrinsicElements {\n return (\n <div\n class={`dropdown-item-wrapper ${this.removable ? 'removable' : ''}`}\n role=\"presentation\"\n >\n <button\n ref={el => (this.dropdownItemBtn = el)}\n aria-label={loc(this.innerLabel)}\n class=\"dropdown-item-button dropdown-item\"\n tabindex=\"-1\"\n disabled={this.disabled}\n role=\"menuitem\"\n onClick={this.onItemClick}\n onKeyDown={this.onItemKeydown}\n onFocus={this.onItemFocus}\n test-id=\"dropdownItem\"\n >\n <div class=\"dropdown-item-btn-content\">\n <slot>{loc(this.innerLabel)}</slot>\n </div>\n </button>\n\n {this.removable && (\n <button\n ref={el => (this.removeBtn = el)}\n class=\"dropdown-item-button remove-dropdown-item\"\n tabindex=\"-1\"\n aria-label={this.removeLabel}\n disabled={this.disabled}\n role=\"menuitem\"\n onClick={this.onRemoveBtnClick}\n onKeyDown={this.onRemoveBtnKeydown}\n onFocus={this.onRemoveBtnFocus}\n test-id=\"removeDropdownItem\"\n >\n <q2-icon type=\"close\" />\n </button>\n )}\n </div>\n );\n }\n\n renderSeparatorDOM(): JSX.IntrinsicElements {\n return (\n <div\n class=\"dropdown-separator\"\n test-id=\"dropdownItemSeparator\"\n role=\"separator\"\n ></div>\n );\n }\n\n render() {\n if (this.separator) {\n return this.renderSeparatorDOM();\n }\n\n return this.renderItemDOM();\n }\n\n // #endregion\n}\n"],"mappings":";;;;;;AAAA,MAAMA,IAAoB;;MCsBbC,IAAc;EAD3B,WAAAC,CAAAC;;;;IAoIIC,KAAgBC,mBAAG;MACf,MAAMC,IAAaF,KAAKG,YAAYC,cAAc;MAClD,KAAKF,GAAY,OAAO;MAExB,OAAOA,EAAWG,QACZC,EAAIJ,EAAWG,OAAOH,EAAWK,iBACjCD,EAAIJ,EAAWM,WAAWN,EAAWK;AAAc;IAG7DP,KAAAS,cAAeC;MACXA,EAAMC;MAENC,EAAWZ,MAAM,EAAC,SAAS,cAAa;QACpCa,MAAM;QACNR,OAAOL,KAAKK,SAAS;;AACvB;IAGNL,KAAAc,cAAeJ;MACXA,EAAMK;AAAiB;IAG3Bf,KAAAgB,gBAAiBN;MACb,IAAIA,EAAMO,QAAQ,cAAcjB,KAAKkB;AAAgB;IAGzDlB,KAAAmB,mBAAoBT;MAChBA,EAAMC;MAENC,EAAWZ,MAAM,EAAC,SAAS,cAAa;QACpCa,MAAM;QACNR,OAAOL,KAAKK,SAAS;;AACvB;IAGNL,KAAAoB,mBAAoBV;MAChBA,EAAMK;AAAiB;IAG3Bf,KAAAqB,qBAAsBX;MAClB,IAAIA,EAAMO,QAAQ,aAAajB,KAAKsB;AAAW;AAoEtD;;;EA3JG,iBAAAC;IACIC,EAAgBxB;IAChBA,KAAKyB,aAAazB,KAAKC;;EAG3B,gBAAAyB;IACI,IAAI1B,KAAK2B,WAAW;IACpBC,EAAc5B,KAAKG;;;;EAOvB,kBAAA0B,CAAmBnB;IACf,IAAIA,EAAMoB,WAAW9B,KAAKG,aAAa;MACnCH,KAAKsB;;;;;EAQb,iBAAAS;IACIP,EAAgBxB;;;;EAMpB,cAAIgC;IACA,OAAOhC,KAAKiC,SAASjC,KAAKG,YAAY+B,YAAYC,UAAUnC,KAAKyB;;EAGrE,eAAIW;IACA,OAAO9B,EAAI,sCAAsC,EAACN,KAAKgC,cAAc;;EAGzE,SAAAV;IACItB,KAAKqC,gBAAgBC,MAAM;MAAEC,eAAe;;;EAGhD,cAAArB;IACIlB,KAAKwC,aAAaxC,KAAKwC,UAAUF;;;;EAiDrC,aAAAG;IACI,OACIC,EAAA;MACIC,OAAO,yBAAyB3C,KAAK4C,YAAY,cAAc;MAC/DC,MAAK;OAELH,EACI;MAAAI,KAAKC,KAAO/C,KAAKqC,kBAAkBU;MAAG,cAC1BzC,EAAIN,KAAKgC;MACrBW,OAAM;MACNK,UAAS;MACTC,UAAUjD,KAAKiD;MACfJ,MAAK;MACLK,SAASlD,KAAKS;MACd0C,WAAWnD,KAAKgB;MAChBoC,SAASpD,KAAKc;MAAW,WACjB;OAER4B,EAAK;MAAAC,OAAM;OACPD,EAAO,cAAApC,EAAIN,KAAKgC,gBAIvBhC,KAAK4C,aACFF,EAAA;MACII,KAAKC,KAAO/C,KAAKwC,YAAYO;MAC7BJ,OAAM;MACNK,UAAS;MAAI,cACDhD,KAAKoC;MACjBa,UAAUjD,KAAKiD;MACfJ,MAAK;MACLK,SAASlD,KAAKmB;MACdgC,WAAWnD,KAAKqB;MAChB+B,SAASpD,KAAKoB;MAAgB,WACtB;OAERsB,EAAS;MAAA7B,MAAK;;;EAOlC,kBAAAwC;IACI,OACIX,EAAA;MACIC,OAAM;MAAoB,WAClB;MACRE,MAAK;;;EAKjB,MAAAS;IACI,IAAItD,KAAK2B,WAAW;MAChB,OAAO3B,KAAKqD;;IAGhB,OAAOrD,KAAKyC","ignoreList":[]}
1
+ {"version":3,"names":["q2DropdownItemCss","Q2DropdownItem","constructor","hostRef","this","handleQ2LocValue","locElement","hostElement","querySelector","value","loc","substitutions","innerText","onItemClick","event","stopImmediatePropagation","mirrorEmit","type","onItemFocus","stopPropagation","onItemKeydown","key","focusRemoveBtn","onRemoveBtnClick","onRemoveBtnFocus","onRemoveBtnKeydown","focusItem","componentWillLoad","hasValidAncestor","handleAriaLabel","q2LocValue","componentDidLoad","separator","overrideFocus","onHostElementFocus","target","ariaLabelObserver","innerLabel","label","textContent","trim","removeLabel","dropdownItemBtn","focus","preventScroll","removeBtn","renderItemDOM","h","class","removable","role","ref","el","tabindex","disabled","onClick","onKeyDown","onFocus","renderSeparatorDOM","render"],"sources":["src/components/q2-dropdown-item/q2-dropdown-item.scss?tag=q2-dropdown-item&encapsulation=shadow","src/components/q2-dropdown-item/q2-dropdown-item.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions';\n\n.dropdown-separator {\n --comp-default-separator-margin: 0 #{var-list(--tct-scale-1, --app-scale-3x, 15px)};\n margin: var-list(var-prefixer(dropdown-separator-margin), --comp-default-separator-margin);\n border-bottom: 1px solid var-list(--tct-dropdown-item-separator-color --t-gray-11 #cccccc);\n}\n\n.dropdown-item-wrapper {\n --comp-selected-icon-size: #{var-list(var-prefixer(option-selected-icon-size), --tct-scale-3, --app-scale-3x, 15px)};\n\n --comp-default-dropdown-item-padding-x: var(--app-scale-2x, 10px);\n --comp-default-dropdown-item-padding-y: var(--app-scale-2x, 10px);\n --comp-default-dropdown-item-padding: var(--comp-default-dropdown-item-padding-y)\n var(--comp-default-dropdown-item-padding-x);\n\n \n display: grid;\n align-items: center;\n gap: var-list(--tct-scale-1, --app-scale-1x, 5px);\n grid-template-columns: 1fr;\n\n &.removable {\n grid-template-columns: 1fr auto;\n .dropdown-item {\n padding-right: 0;\n }\n .remove-dropdown-item {\n flex: 0 0 44px;\n }\n }\n color: inherit;\n}\n\n.dropdown-item-button {\n --comp-selected-icon-size: #{var-list(var-prefixer(option-selected-icon-size), --tct-scale-3, --app-scale-3x, 15px)};\n --comp-dropdown-item-tween: #{var-list(--tct-tween-1, --app-tween-1, cubic-bezier(0.4, 0, 0.2, 1))};\n margin: var-list(--tct-scale-0, --app-scale-0x, 0);\n padding: var-list(--tct-scale-0, --app-scale-0x, 0);\n min-height: var(--tct-dropdown-item-min-height, 44px);\n min-width: 44px;\n border: none;\n background: transparent;\n outline: 0;\n transition: var-list(--tct-dropdown-item-tween, --comp-dropdown-item-tween);\n transition-property: background, color, box-shadow, fill, border-color, border-width;\n &:disabled {\n opacity: var-list(--tct-dropdown-item-disabled-opacity, --tct-disabled-opacity, --app-disabled-opacity, 0.4);\n cursor: not-allowed;\n }\n cursor: pointer;\n}\n\n.dropdown-item {\n --comp-selected-icon-size: #{var-list(var-prefixer(option-selected-icon-size), --tct-scale-3, --app-scale-3x, 15px)};\n --comp-default-dropdown-item-padding-x: var(--app-scale-2x, 10px);\n width: 100%;\n display: grid;\n align-items:center;\n justify-content: start;\n grid-template-columns: 1fr;\n gap: var-list(--tct-scale-1, --app-scale-1x, 5px);\n min-height: var(--tct-dropdown-item-min-height, 44px);\n padding-left: var(--comp-default-dropdown-item-padding-x);\n padding-right: var(--comp-default-dropdown-item-padding-x);\n text-align: left;\n min-height: var(--tct-dropdown-item-min-height, 44px);\n}\n\n.dropdown-item-button:focus-visible {\n box-shadow: var-list(\n --tct-option-focus-box-shadow,\n --const-inset-double-focus-ring,\n unquote('inset var(--const-global-focus, 0 0 0 2px var(--const-focus-color, #0066CC))')\n ) !important;\n}\n.dropdown-item-btn-content{\n display:flex;\n justify-content: start;\n color: var-list(var-prefixer(dropdown-item-font-color), inherit);\n font-size: var(--tct-dropdown-item-font-size, inherit);\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n:host(:not([disabled])) {\n .dropdown-item-button:hover,\n .dropdown-item-button:focus {\n background: var-list(\n --tct-dropdown-item-hover-background,\n var-prefixer(dropdown-item-selected-bg),\n var-prefixer(gray-14),\n --tct-gray-l3,\n --app-gray-l3,\n --t-base,\n #f2f2f2\n );\n color: var(--tct-option-active-color, inherit);\n }\n\n .dropdown-item-button:hover,\n .dropdown-item-button:focus {\n color: var-list(--tct-dropdown-item-hover-color, var-prefixer(dropdown-item-selected-font-color), inherit);\n }\n\n .dropdown-item-button:focus {\n box-shadow: var-list(\n --tct-dropdown-item-focus-box-shadow,\n --const-inset-double-focus-ring,\n unquote(\n 'inset 0 0 0 2px var(--t-base), inset 0 0 0 4px var(--const-focus-color), inset 0 0 0 6px var(--t-base)'\n )\n );\n }\n}\n","import {\n Component,\n ComponentInterface,\n Prop,\n State,\n Element,\n Event,\n Listen,\n Watch,\n h,\n EventEmitter,\n} from '@stencil/core';\nimport { loc, handleAriaLabel, overrideFocus } from 'src/utils';\nimport mirrorEmit from '@/utils/mirror-emit';\nimport { JSX } from '../../components';\nimport { hasValidAncestor } from '@/utils/component';\n\n/**\n * @name Dropdown Item\n * @category Display\n * @summary Use as a single action item within a Dropdown menu.\n */\n@Component({ tag: 'q2-dropdown-item', shadow: true, styleUrl: 'q2-dropdown-item.scss' })\nexport class Q2DropdownItem implements ComponentInterface {\n // #region Own Properties\n\n dropdownItemBtn: HTMLButtonElement;\n removeBtn: HTMLButtonElement;\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region State Properties\n\n @State()\n q2LocValue: string;\n\n // #endregion\n // #region Public Property API\n\n /**\n * Used by q2-option-list to indicate the option is active\n * @private\n */\n @Prop({ reflect: true })\n active: boolean;\n\n /** @deprecated */\n @Prop({ reflect: true, mutable: true })\n ariaLabel: string;\n\n /** Disables interaction with the item and blocks its click event. */\n @Prop({ reflect: true })\n disabled: boolean;\n\n /**\n * The text that appears within the dropdown item.\n *\n * @info\n * This will be used as the `aria-label` for this item.\n * @localizable\n */\n @Prop({ reflect: true, mutable: true })\n label: string;\n\n /**\n * Renders an icon button in the item.\n * Clicking on this button will change the `type` on the item's click event detail to \"remove\".\n */\n @Prop({ reflect: true })\n removable: boolean;\n\n /**\n * Renders a line in the item instead of text.\n * Click events from these items will not have details provided.\n * A `separator` allows for quick visual grouping of items, so interactions should not be bound to these options.\n */\n @Prop({ reflect: true })\n separator: boolean;\n\n /** A static reference value for the item. This value is returned in the click event detail. */\n @Prop({ reflect: true })\n value: string;\n\n // #endregion\n // #region Events\n\n /**\n * Is emitted when the item is clicked.\n * @deprecated\n */\n @Event()\n click: EventEmitter<{ type: 'select' | 'remove'; value: string }>;\n\n /**\n * Is emitted when the item is clicked.\n */\n @Event()\n tctClick: EventEmitter<{ type: 'select' | 'remove'; value: string }>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n componentWillLoad() {\n hasValidAncestor(this.hostElement, 'q2-dropdown');\n handleAriaLabel(this);\n this.q2LocValue = this.handleQ2LocValue();\n }\n\n componentDidLoad() {\n if (this.separator) return;\n overrideFocus(this.hostElement);\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('focus')\n onHostElementFocus(event: FocusEvent) {\n if (event.target === this.hostElement) {\n this.focusItem();\n }\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('ariaLabel')\n ariaLabelObserver() {\n handleAriaLabel(this);\n }\n\n // #endregion\n // #region Local Methods\n\n get innerLabel(): string {\n return this.label || this.hostElement.textContent.trim() || this.q2LocValue;\n }\n\n get removeLabel(): string {\n return loc('tecton.element.dropdownItem.remove', [this.innerLabel || '']);\n }\n\n focusItem() {\n this.dropdownItemBtn.focus({ preventScroll: true });\n }\n\n focusRemoveBtn() {\n this.removeBtn && this.removeBtn.focus();\n }\n\n handleQ2LocValue = (): string => {\n const locElement = this.hostElement.querySelector('q2-loc');\n if (!locElement) return '';\n\n return locElement.value\n ? loc(locElement.value, locElement.substitutions)\n : loc(locElement.innerText, locElement.substitutions);\n };\n\n onItemClick = (event: MouseEvent) => {\n event.stopImmediatePropagation();\n\n mirrorEmit(this, ['click', 'tctClick'], {\n type: 'select',\n value: this.value || '',\n });\n };\n\n onItemFocus = (event: FocusEvent) => {\n event.stopPropagation();\n };\n\n onItemKeydown = (event: KeyboardEvent) => {\n if (event.key === 'ArrowRight') this.focusRemoveBtn();\n };\n\n onRemoveBtnClick = (event: MouseEvent) => {\n event.stopImmediatePropagation();\n\n mirrorEmit(this, ['click', 'tctClick'], {\n type: 'remove',\n value: this.value || '',\n });\n };\n\n onRemoveBtnFocus = (event: FocusEvent) => {\n event.stopPropagation();\n };\n\n onRemoveBtnKeydown = (event: KeyboardEvent) => {\n if (event.key === 'ArrowLeft') this.focusItem();\n };\n\n // #endregion\n // #region Render Methods\n\n renderItemDOM(): JSX.IntrinsicElements {\n return (\n <div\n class={`dropdown-item-wrapper ${this.removable ? 'removable' : ''}`}\n role=\"presentation\"\n >\n <button\n ref={el => (this.dropdownItemBtn = el)}\n aria-label={loc(this.innerLabel)}\n class=\"dropdown-item-button dropdown-item\"\n tabindex=\"-1\"\n disabled={this.disabled}\n role=\"menuitem\"\n onClick={this.onItemClick}\n onKeyDown={this.onItemKeydown}\n onFocus={this.onItemFocus}\n test-id=\"dropdownItem\"\n >\n <div class=\"dropdown-item-btn-content\">\n <slot>{loc(this.innerLabel)}</slot>\n </div>\n </button>\n\n {this.removable && (\n <button\n ref={el => (this.removeBtn = el)}\n class=\"dropdown-item-button remove-dropdown-item\"\n tabindex=\"-1\"\n aria-label={this.removeLabel}\n disabled={this.disabled}\n role=\"menuitem\"\n onClick={this.onRemoveBtnClick}\n onKeyDown={this.onRemoveBtnKeydown}\n onFocus={this.onRemoveBtnFocus}\n test-id=\"removeDropdownItem\"\n >\n <q2-icon type=\"close\" />\n </button>\n )}\n </div>\n );\n }\n\n renderSeparatorDOM(): JSX.IntrinsicElements {\n return (\n <div\n class=\"dropdown-separator\"\n test-id=\"dropdownItemSeparator\"\n role=\"separator\"\n ></div>\n );\n }\n\n render() {\n if (this.separator) {\n return this.renderSeparatorDOM();\n }\n\n return this.renderItemDOM();\n }\n\n // #endregion\n}\n"],"mappings":";;;;;;;;AAAA,MAAMA,IAAoB;;MCuBbC,IAAc;EAD3B,WAAAC,CAAAC;;;;IAqIIC,KAAgBC,mBAAG;MACf,MAAMC,IAAaF,KAAKG,YAAYC,cAAc;MAClD,KAAKF,GAAY,OAAO;MAExB,OAAOA,EAAWG,QACZC,EAAIJ,EAAWG,OAAOH,EAAWK,iBACjCD,EAAIJ,EAAWM,WAAWN,EAAWK;AAAc;IAG7DP,KAAAS,cAAeC;MACXA,EAAMC;MAENC,EAAWZ,MAAM,EAAC,SAAS,cAAa;QACpCa,MAAM;QACNR,OAAOL,KAAKK,SAAS;;AACvB;IAGNL,KAAAc,cAAeJ;MACXA,EAAMK;AAAiB;IAG3Bf,KAAAgB,gBAAiBN;MACb,IAAIA,EAAMO,QAAQ,cAAcjB,KAAKkB;AAAgB;IAGzDlB,KAAAmB,mBAAoBT;MAChBA,EAAMC;MAENC,EAAWZ,MAAM,EAAC,SAAS,cAAa;QACpCa,MAAM;QACNR,OAAOL,KAAKK,SAAS;;AACvB;IAGNL,KAAAoB,mBAAoBV;MAChBA,EAAMK;AAAiB;IAG3Bf,KAAAqB,qBAAsBX;MAClB,IAAIA,EAAMO,QAAQ,aAAajB,KAAKsB;AAAW;AAoEtD;;;EA5JG,iBAAAC;IACIC,EAAiBxB,KAAKG,aAAa;IACnCsB,EAAgBzB;IAChBA,KAAK0B,aAAa1B,KAAKC;;EAG3B,gBAAA0B;IACI,IAAI3B,KAAK4B,WAAW;IACpBC,EAAc7B,KAAKG;;;;EAOvB,kBAAA2B,CAAmBpB;IACf,IAAIA,EAAMqB,WAAW/B,KAAKG,aAAa;MACnCH,KAAKsB;;;;;EAQb,iBAAAU;IACIP,EAAgBzB;;;;EAMpB,cAAIiC;IACA,OAAOjC,KAAKkC,SAASlC,KAAKG,YAAYgC,YAAYC,UAAUpC,KAAK0B;;EAGrE,eAAIW;IACA,OAAO/B,EAAI,sCAAsC,EAACN,KAAKiC,cAAc;;EAGzE,SAAAX;IACItB,KAAKsC,gBAAgBC,MAAM;MAAEC,eAAe;;;EAGhD,cAAAtB;IACIlB,KAAKyC,aAAazC,KAAKyC,UAAUF;;;;EAiDrC,aAAAG;IACI,OACIC,EAAA;MACIC,OAAO,yBAAyB5C,KAAK6C,YAAY,cAAc;MAC/DC,MAAK;OAELH,EACI;MAAAI,KAAKC,KAAOhD,KAAKsC,kBAAkBU;MAAG,cAC1B1C,EAAIN,KAAKiC;MACrBW,OAAM;MACNK,UAAS;MACTC,UAAUlD,KAAKkD;MACfJ,MAAK;MACLK,SAASnD,KAAKS;MACd2C,WAAWpD,KAAKgB;MAChBqC,SAASrD,KAAKc;MAAW,WACjB;OAER6B,EAAK;MAAAC,OAAM;OACPD,EAAO,cAAArC,EAAIN,KAAKiC,gBAIvBjC,KAAK6C,aACFF,EAAA;MACII,KAAKC,KAAOhD,KAAKyC,YAAYO;MAC7BJ,OAAM;MACNK,UAAS;MAAI,cACDjD,KAAKqC;MACjBa,UAAUlD,KAAKkD;MACfJ,MAAK;MACLK,SAASnD,KAAKmB;MACdiC,WAAWpD,KAAKqB;MAChBgC,SAASrD,KAAKoB;MAAgB,WACtB;OAERuB,EAAS;MAAA9B,MAAK;;;EAOlC,kBAAAyC;IACI,OACIX,EAAA;MACIC,OAAM;MAAoB,WAClB;MACRE,MAAK;;;EAKjB,MAAAS;IACI,IAAIvD,KAAK4B,WAAW;MAChB,OAAO5B,KAAKsD;;IAGhB,OAAOtD,KAAK0C","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"q2-dropdown.entry.esm.js","sources":["src/components/q2-dropdown/q2-dropdown.scss?tag=q2-dropdown&encapsulation=shadow","src/components/q2-dropdown/q2-dropdown.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions';\n\n:host {\n display: inline-flex;\n}\n\n:host([block]) {\n display: block;\n}\n\nq2-icon {\n pointer-events: none;\n margin-block: -100px;\n}\n\nclick-elsewhere {\n position: relative;\n display: block;\n}\n\nq2-popover {\n --tct-popover-min-width: #{var-list(var-prefixer(dropdown-width))};\n}\n","import { shouldShowActionSheet, showActionSheetList } from '@/utils/action-sheet';\nimport { Component, ComponentInterface, Prop, Method, Element, Watch, h, Fragment, Listen } from '@stencil/core';\nimport {\n handleAriaLabel,\n handleRenamedProp,\n isEventFromElement,\n loc,\n overrideFocus,\n waitForNextPaint,\n} from 'src/utils';\n\n/**\n * @name Dropdown\n * @category Display\n * @summary Use for menus of contextual actions triggered by a button click.\n * @slot control - An optional slot to provide custom content as the clickable interface. The Dropdown **must** have `type=\"custom\"` to use the control slot.\n */\n@Component({ tag: 'q2-dropdown', shadow: true, styleUrl: 'q2-dropdown.scss' })\nexport class Q2Dropdown implements ComponentInterface {\n // #region Own Properties\n\n controlElement?: HTMLQ2BtnElement;\n dropdownItemSelector: string = 'q2-dropdown-item:not([disabled]):not([separator])';\n optionList: HTMLQ2OptionListElement;\n optionSelector: string = 'q2-option:not([disabled]):not([separator])';\n popoverElement?: HTMLQ2PopoverElement;\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region Public Property API\n\n @Prop({ reflect: true })\n additionalContext: string;\n\n /** @deprecated */\n @Prop({ reflect: true })\n alignment: 'left' | 'right';\n\n /** @deprecated */\n @Prop({ reflect: true, mutable: true })\n ariaLabel: string;\n\n /** If `true`, component expands to fill the width of its parent element. */\n @Prop({ reflect: true })\n block: boolean;\n\n /**\n * Tells the outlet what the type of object being passed in as contextValue.\n * This will allow for the hierarchy resolution logic to work to determine if an option should or should not be shown.\n *\n * @info\n * Only applicable when using `<q2-dropdown>` for outlets.\n */\n @Prop({ reflect: true })\n context: string;\n\n /**\n * Passes important information to the outlet (e.g., pass an account id that your platform can use to look up what module to show for that account type).\n *\n * @info\n * Only applicable when using `<q2-dropdown>` for outlets.\n */\n @Prop({ reflect: true })\n contextValue: string;\n\n /** Indicates the menu cannot be focused or interacted with. */\n @Prop({ reflect: true })\n disabled: boolean;\n\n /**\n * Hide's the field's `<label>` element from view.\n * @warning\n * Only use when a visible label is impractical.\n */\n @Prop({ reflect: true, mutable: true })\n hideLabel: boolean;\n\n /**\n * Instructs the component to use the action sheet workflow for displaying its options.\n *\n * For more information, see [Action Sheets](https://tecton.q2developer.com/guides/action-sheets/).\n */\n @Prop()\n hoist: boolean = !!window.Tecton?.useActionSheets;\n\n /** The icon that will render within the toggle button. You may use any of the `q2-icon` types. */\n @Prop({ reflect: true })\n icon: string;\n\n /**\n * The text that appears within the button.\n * @warning\n * This property should not be used if the `type` is `icon`.\n * @localizable\n */\n @Prop({ reflect: true, mutable: true })\n label: string;\n\n /**\n * Identifies this menu as an outlet. Used in conjunction with context and, optionally, `contextValue`.\n * @info\n * Only applicable when using `<q2-dropdown>` for outlets.\n */\n @Prop({ reflect: true })\n name: string;\n\n /**\n * Determine whether the popover is open or closed.\n *\n * @readonly\n */\n @Prop({ reflect: true, mutable: true })\n open: boolean;\n\n /** Determines the label that is applied to the option list for accessibility purposes. */\n @Prop()\n optionListLabel: string;\n\n /** @deprecated */\n @Prop({ reflect: true })\n popDirection: 'up' | 'down';\n\n /** Aligns the popover dropdown to the left or right side of the input field. */\n @Prop({ mutable: true })\n popoverAlignment: 'left' | 'right' = 'left'; // being used in dropdown.scss\n\n /**\n * Force the direction of the popover dropdown when it opens.\n * If no value is passed, the component will auto-detect the direction based on available space.\n */\n @Prop({ mutable: true })\n popoverDirection: 'up' | 'down';\n\n /**\n * Force the maximum height of the popover. This value will be interpreted as pixels.\n * If no value is passed, or the value exceeds available space, the component will auto-detect the maximum height based on available space.\n */\n @Prop()\n popoverMaxHeight: number;\n\n /** @deprecated */\n @Prop()\n popoverMinHeight: number;\n\n /**\n * Determines the display mode of the popover.\n *\n * Providing a value of `legacy` instructs the popover to use absolute positioning instead of fixed positioning.\n *\n * @info\n * This is a temporary solution to work around styling issues related to using fixed positioning for the popover\n * when nested inside of elements with transform properties. This will be removed once the popover API is available\n * for use.\n */\n @Prop({ mutable: true })\n popoverMode: 'legacy' = null;\n\n /**\n * Use with `context` to tell the outlet where it appears. It will be matched with the appropriately configured module for that context.\n * @info\n * Only applicable when using `<q2-dropdown>` for outlets.\n */\n @Prop({ reflect: true })\n resolvedType: string;\n\n /** The type of button used as the menu toggle.\n * @info\n * Type must be \"custom\" to use the custom button slot.\n */\n @Prop({ reflect: true })\n type: 'icon' | 'fab' | 'custom' | 'primary' | 'secondary' | 'neutral' = 'icon';\n\n // #endregion\n // #region Component Lifecycle Events\n\n componentWillLoad() {\n this._alignOptionStructure();\n this.popDirectionHandler();\n this.alignmentHandler();\n this.ariaLabelHandler();\n }\n\n componentDidLoad() {\n this.orchestrateResolvedMenuItems();\n overrideFocus(this.hostElement);\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('focus')\n delegateFocus(event: FocusEvent) {\n if (!isEventFromElement(event, this.hostElement)) return;\n this.focusToggle();\n }\n\n @Listen('popoverStateChanged')\n popoverStateChangeHandler({ detail: { open } }: CustomEvent<{ open: boolean }>) {\n if (this.open !== open) this.open = open;\n if (open) {\n this.popoverElement?.scrollContainerTo({ top: 0 });\n } else {\n this.optionList.setActiveElement(null);\n }\n }\n\n // #endregion\n // #region Public Methods API\n\n /**\n * Emulates clicking the dropdown `<button>` to hide the popover if it is showing.\n * @testOnly\n */\n @Method()\n async closePopover() {\n if (!this.open || this.disabled) return;\n this._togglePopover();\n }\n\n /**\n * Emulates clicking the dropdown `<button>` to show the popover if it is hidden.\n * @testOnly\n */\n @Method()\n async openPopover() {\n if (this.open || this.disabled) return;\n this._togglePopover();\n }\n\n /**\n * Emulates opening the dropdown and selecting a [Dropdown Item](https://tecton.q2developer.com/design-system/q2-dropdown-item/).\n *\n * If the dropdown is closed, this will open it before selecting the item.\n *\n * If the value does not match any item's value, this method does nothing.\n * @testOnly\n */\n @Method()\n async selectItem(value: string) {\n const item = this.hostElement.querySelector<HTMLQ2DropdownItemElement>(\n `${this.dropdownItemSelector}[value=\"${value}\"]`\n );\n const itemBtn = item?.shadowRoot.querySelector<HTMLButtonElement>('.dropdown-item');\n if (!item || this.disabled) return;\n if (!this.open) {\n this.controlElement?.click();\n await waitForNextPaint();\n }\n itemBtn.click();\n await waitForNextPaint();\n }\n\n /**\n * Emulates opening the dropdown and selecting a [Dropdown Item](https://tecton.q2developer.com/design-system/q2-dropdown-item/)'s *remove* button.\n *\n * If the dropdown is closed, this will open it before selecting the remove item button.\n *\n * Requirements for this method to work properly:\n * - Provided `value` matches the item's `value` property\n * - Item has the `removable` property enabled\n * @testOnly\n */\n @Method()\n async selectRemoveItem(value: string) {\n const item = this.hostElement.querySelector<HTMLQ2DropdownItemElement>(\n `${this.dropdownItemSelector}[value=\"${value}\"]`\n );\n const removeButton = item?.shadowRoot.querySelector<HTMLButtonElement>('.remove-dropdown-item');\n if (!item || !removeButton || this.disabled) return;\n if (!this.open) {\n this.controlElement?.click();\n await waitForNextPaint();\n }\n removeButton.click();\n await waitForNextPaint();\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('additionalContext')\n additionalContextHandler() {\n this.orchestrateResolvedMenuItems();\n }\n\n @Watch('alignment')\n alignmentHandler() {\n handleRenamedProp(this, 'alignment', 'popoverAlignment');\n }\n\n @Watch('ariaLabel')\n ariaLabelHandler() {\n handleAriaLabel(this);\n }\n\n @Watch('context')\n contextHandler() {\n this.orchestrateResolvedMenuItems();\n }\n\n @Watch('contextValue')\n contextValueHandler() {\n this.orchestrateResolvedMenuItems();\n }\n\n @Watch('name')\n nameHandler() {\n this.orchestrateResolvedMenuItems();\n }\n\n @Watch('popDirection')\n popDirectionHandler() {\n handleRenamedProp(this, 'popDirection', 'popoverDirection');\n }\n\n @Watch('resolvedType')\n resolvedTypeHandler() {\n this.orchestrateResolvedMenuItems();\n }\n\n // #endregion\n // #region Local Methods\n\n get determineDropdownItemCount() {\n return this.hostElement.querySelectorAll(this.dropdownItemSelector).length;\n }\n\n get hasCustomControl() {\n return !!this.hostElement.querySelector('[slot=control]');\n }\n\n get toggleButtonProps() {\n const allowedIntents = ['primary', 'secondary', 'neutral'];\n const allowedTypes = ['icon', 'fab', 'custom', ...allowedIntents];\n const type = allowedTypes.includes(this.type) ? this.type : '';\n const icon = type === 'icon';\n const fab = type === 'fab';\n const custom = type === 'custom';\n let intent;\n if (allowedIntents.includes(type)) {\n intent = type === 'neutral' ? type : `workflow-${type}`;\n }\n const active = this.open;\n const disabled = !!this.disabled;\n const ariaExpanded = this.open;\n const className = !icon && !fab && !intent ? 'unstyled' : '';\n\n return {\n icon,\n fab,\n intent,\n active,\n disabled,\n ariaExpanded,\n className,\n custom,\n };\n }\n\n _alignOptionStructure(elem: Element = this.hostElement) {\n Array.from(elem.children).forEach(el => {\n if (el.tagName === 'Q2-OPTION') {\n el.setAttribute('_hide-selected-block', '');\n } else if (el.tagName === 'Q2-OPTGROUP') {\n this._alignOptionStructure(el);\n }\n });\n }\n\n _clickItem(value: string) {\n if (!value || this.disabled) return;\n const item = this.hostElement.querySelector<HTMLQ2DropdownItemElement>(\n `${this.dropdownItemSelector}[value=\"${value}\"]`\n );\n const option = this.hostElement.querySelector<HTMLQ2OptionElement>(`${this.optionSelector}[value=\"${value}\"]`);\n item?.shadowRoot.querySelector<HTMLButtonElement>('.dropdown-item')?.click();\n option?.click();\n }\n\n async _handleActionSheet(event: MouseEvent | KeyboardEvent) {\n const { value } = await showActionSheetList(this, event);\n this._clickItem(value);\n this.controlElement.focus();\n }\n\n _togglePopover() {\n const { controlElement } = this;\n if (!controlElement) return;\n controlElement.click();\n controlElement.focus();\n controlElement.dispatchEvent(new FocusEvent('focus'));\n }\n\n focusToggle = () => {\n this.controlElement.focus();\n };\n\n handleFocusOut = (event: FocusEvent) => {\n const relatedTarget = event.relatedTarget as unknown as HTMLElement;\n if (this.popoverElement?.contains(relatedTarget)) return;\n if (this.hostElement.contains(relatedTarget)) return;\n this.open = false;\n };\n\n onClickElsewhere = (event: CustomEvent) => {\n const target = event.target as HTMLElement;\n if (target.localName === 'q2-option-list') {\n event.stopPropagation();\n }\n if (target.localName === 'click-elsewhere') {\n event.stopPropagation();\n const { popoverElement } = this;\n if (!popoverElement) return;\n popoverElement.open = false;\n }\n };\n\n onPopoverState = (event: CustomEvent<{ open: boolean; action: string }>) => {\n if (event.detail.open) return;\n this.controlElement.focus();\n };\n\n onToggleClick = async (event: MouseEvent) => {\n event.stopPropagation();\n this.popoverElement.controlElement = this.controlElement;\n if (shouldShowActionSheet(this)) {\n this._handleActionSheet(event);\n } else {\n await this.popoverElement.toggle();\n }\n };\n\n onToggleKeydown = async (event: KeyboardEvent) => {\n const isTabMetaOrCtrl = event.metaKey || event.ctrlKey || event.key === 'Tab';\n if (isTabMetaOrCtrl) return;\n\n event.preventDefault();\n this.popoverElement.controlElement = this.controlElement;\n if (shouldShowActionSheet(this, event)) {\n this._handleActionSheet(event);\n } else {\n this.optionList.handleExternalKeydown(event);\n }\n };\n\n orchestrateResolvedMenuItems() {\n if (!this.name || !this.context) {\n // this is only for contextual menu outlets\n this.removeResolvedElements();\n return;\n }\n\n this.resolveMenuItemElements()\n .then(data => {\n this.removeResolvedElements();\n data.forEach(element => {\n this.hostElement.appendChild(element);\n });\n })\n .catch(err => {\n this.removeResolvedElements();\n throw err;\n });\n }\n\n removeResolvedElements() {\n const resolvedElements = this.hostElement.querySelectorAll('q2-dropdown-item.resolved-menu-item');\n resolvedElements.forEach(element => this.hostElement.removeChild(element));\n }\n\n resolveMenu() {\n return (\n this.name &&\n window.TectonElements &&\n window.TectonElements.resolveMenu(this.name, this.contextValue, this.resolvedType, this.additionalContext)\n );\n }\n\n resolveMenuItemElements() {\n return this.resolveMenu().then(datas => {\n return datas.map(menuItemData => {\n let onClickFn;\n let queryParams;\n if (menuItemData['tct-ctxid']) {\n queryParams = {};\n queryParams[menuItemData.contextIdParamName] = menuItemData['tct-ctxid'];\n }\n\n switch (menuItemData.action) {\n case 'navigateTo':\n onClickFn = function () {\n return window.TectonElements?.navigateTo?.(\n menuItemData.featureName,\n menuItemData.moduleName,\n queryParams\n );\n };\n break;\n case 'showOverpanel':\n onClickFn = function () {\n return window.TectonElements?.showOverpanel?.(\n `${menuItemData.featureName}.${menuItemData.moduleName}`,\n queryParams,\n undefined,\n true\n );\n };\n break;\n }\n\n const newDropdownItem = document.createElement('q2-dropdown-item');\n newDropdownItem.setAttribute('value', menuItemData.itemLabel);\n newDropdownItem.classList.add('resolved-menu-item');\n newDropdownItem.textContent = menuItemData.itemLabel;\n newDropdownItem.onclick = onClickFn;\n\n return newDropdownItem;\n });\n });\n }\n\n // #endregion\n // #region Render Methods\n\n render() {\n const btnProps = this.toggleButtonProps;\n\n return (\n <click-elsewhere\n class={this.open ? 'dropdown-open' : ''}\n onChange={this.onClickElsewhere}\n test-id=\"dropdownContainer\"\n >\n <q2-btn\n ref={el => (this.controlElement = el)}\n class={btnProps.className}\n onClick={this.onToggleClick}\n onKeyDown={this.onToggleKeydown}\n fab={btnProps.fab}\n intent={btnProps.intent}\n onFocusout={this.handleFocusOut}\n active={btnProps.active}\n disabled={btnProps.disabled}\n ariaExpanded={`${!!btnProps.ariaExpanded}`}\n label={this.hideLabel && this.label ? loc(this.label) : undefined}\n hideLabel={this.hideLabel}\n ariaHasPopup=\"menu\"\n test-id=\"dropdownButton\"\n block={this.block}\n description={loc('tecton.element.dropdown.itemCount', [this.determineDropdownItemCount])}\n >\n {this.hasCustomControl ? (\n <div\n test-id=\"dropdownControl\"\n class={btnProps.custom ? '' : 'hidden'}\n >\n <slot name=\"control\" />\n </div>\n ) : (\n <Fragment>\n {this.label && !this.hideLabel && (\n <span class=\"dropdown-button-text\">{loc(this.label)}</span>\n )}\n {this.icon ? <q2-icon type={this.icon} /> : ' '}\n </Fragment>\n )}\n </q2-btn>\n <q2-popover\n ref={el => (this.popoverElement = el)}\n controlElement={this.controlElement}\n open={this.open}\n max-height={this.popoverMaxHeight}\n onFocusout={this.handleFocusOut}\n minHeight={this.popoverMinHeight}\n direction={this.popoverDirection}\n align={this.popoverAlignment}\n mode={this.popoverMode || undefined}\n block={this.block}\n >\n <q2-option-list\n onPopoverState={this.onPopoverState}\n id=\"option-list\"\n ref={el => (this.optionList = el)}\n type=\"menu\"\n label={loc('tecton.element.optionList.label', [this.optionListLabel])}\n no-select\n >\n <slot />\n </q2-option-list>\n </q2-popover>\n </click-elsewhere>\n );\n }\n\n // #endregion\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"q2-dropdown.entry.esm.js","sources":["src/components/q2-dropdown/q2-dropdown.scss?tag=q2-dropdown&encapsulation=shadow","src/components/q2-dropdown/q2-dropdown.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions';\n\n:host {\n display: inline-flex;\n}\n\n:host([block]) {\n display: block;\n}\n\n:host([full-width]:not([full-width=\"false\"])) {\n display: inline-flex;\n justify-content: center;\n width: 100%;\n}\n\n::slotted([slot=\"popover-top\"]) {\n padding: var-list(--tct-dropdown-popover-top-slot-padding, 0);\n border-bottom: var-list(--tct-dropdown-slot-border-top);\n}\n\n::slotted([slot=\"popover-bottom\"]) {\n padding: var-list(--tct-dropdown-popover-bottom-slot-padding, 0);\n border-top: var-list(--tct-dropdown-slot-border-bottom);\n}\n\nq2-icon {\n pointer-events: none;\n margin-block: -100px;\n}\n\nclick-elsewhere {\n position: relative;\n display: block;\n}\n\nq2-popover {\n --tct-popover-min-width: #{var-list(var-prefixer(dropdown-width))};\n --tct-popover-padding: #{var-list(--tct-dropdown-content-padding)};\n}\n","import { shouldShowActionSheet, showActionSheetList } from '@/utils/action-sheet';\nimport { Component, ComponentInterface, Prop, Method, Element, Watch, h, Fragment, Listen } from '@stencil/core';\nimport {\n handleAriaLabel,\n handleRenamedProp,\n isEventFromElement,\n loc,\n overrideFocus,\n waitForNextPaint,\n} from 'src/utils';\n\n/**\n * @name Dropdown\n * @category Display\n * @summary Use for menus of contextual actions triggered by a button click.\n * @slot control - An optional slot to provide custom content as the clickable interface. The Dropdown **must** have `type=\"custom\"` to use the control slot.\n * @slot popover-top - An optional slot to display custom content persistently at the top of the q2-dropdown.\n * @slot popover-bottom - An optional slot to display custom content persistently at the bottom of the q2-dropdown.\n */\n@Component({ tag: 'q2-dropdown', shadow: true, styleUrl: 'q2-dropdown.scss' })\nexport class Q2Dropdown implements ComponentInterface {\n // #region Own Properties\n\n controlElement?: HTMLQ2BtnElement;\n dropdownItemSelector: string = 'q2-dropdown-item:not([disabled]):not([separator])';\n optionList: HTMLQ2OptionListElement;\n optionSelector: string = 'q2-option:not([disabled]):not([separator])';\n popoverElement?: HTMLQ2PopoverElement;\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region Public Property API\n\n @Prop({ reflect: true })\n additionalContext: string;\n\n /** @deprecated */\n @Prop({ reflect: true })\n alignment: 'left' | 'right';\n\n /** @deprecated */\n @Prop({ reflect: true, mutable: true })\n ariaLabel: string;\n\n /** If `true`, component expands to fill the width of its parent element. */\n @Prop({ reflect: true })\n block: boolean;\n\n /**\n * Tells the outlet what the type of object being passed in as contextValue.\n * This will allow for the hierarchy resolution logic to work to determine if an option should or should not be shown.\n *\n * @info\n * Only applicable when using `<q2-dropdown>` for outlets.\n */\n @Prop({ reflect: true })\n context: string;\n\n /**\n * Passes important information to the outlet (e.g., pass an account id that your platform can use to look up what module to show for that account type).\n *\n * @info\n * Only applicable when using `<q2-dropdown>` for outlets.\n */\n @Prop({ reflect: true })\n contextValue: string;\n\n /** Indicates the menu cannot be focused or interacted with. */\n @Prop({ reflect: true })\n disabled: boolean;\n\n /** If `true`, it takes up 100% width. */\n @Prop({ reflect: true })\n fullWidth: boolean;\n\n /**\n * Hide's the field's `<label>` element from view.\n * @warning\n * Only use when a visible label is impractical.\n */\n @Prop({ reflect: true, mutable: true })\n hideLabel: boolean;\n\n /**\n * Instructs the component to use the action sheet workflow for displaying its options.\n *\n * For more information, see [Action Sheets](https://tecton.q2developer.com/guides/action-sheets/).\n */\n @Prop()\n hoist: boolean = !!window.Tecton?.useActionSheets;\n\n /** The icon that will render within the toggle button. You may use any of the `q2-icon` types. */\n @Prop({ reflect: true })\n icon: string;\n\n /**\n * The text that appears within the button.\n * @warning\n * This property should not be used if the `type` is `icon`.\n * @localizable\n */\n @Prop({ reflect: true, mutable: true })\n label: string;\n\n /**\n * Identifies this menu as an outlet. Used in conjunction with context and, optionally, `contextValue`.\n * @info\n * Only applicable when using `<q2-dropdown>` for outlets.\n */\n @Prop({ reflect: true })\n name: string;\n\n /**\n * Determine whether the popover is open or closed.\n *\n * @readonly\n */\n @Prop({ reflect: true, mutable: true })\n open: boolean;\n\n /** Determines the label that is applied to the option list for accessibility purposes. */\n @Prop()\n optionListLabel: string;\n\n /** @deprecated */\n @Prop({ reflect: true })\n popDirection: 'up' | 'down';\n\n /** Aligns the popover dropdown to the left or right side of the input field. */\n @Prop({ mutable: true })\n popoverAlignment: 'left' | 'right' = 'left'; // being used in dropdown.scss\n\n /**\n * Force the direction of the popover dropdown when it opens.\n * If no value is passed, the component will auto-detect the direction based on available space.\n */\n @Prop({ mutable: true })\n popoverDirection: 'up' | 'down';\n\n /**\n * Force the maximum height of the popover. This value will be interpreted as pixels.\n * If no value is passed, or the value exceeds available space, the component will auto-detect the maximum height based on available space.\n */\n @Prop()\n popoverMaxHeight: number;\n\n /** @deprecated */\n @Prop()\n popoverMinHeight: number;\n\n /**\n * Determines the display mode of the popover.\n *\n * Providing a value of `legacy` instructs the popover to use absolute positioning instead of fixed positioning.\n *\n * @info\n * This is a temporary solution to work around styling issues related to using fixed positioning for the popover\n * when nested inside of elements with transform properties. This will be removed once the popover API is available\n * for use.\n */\n @Prop({ mutable: true })\n popoverMode: 'legacy' = null;\n\n /**\n * Use with `context` to tell the outlet where it appears. It will be matched with the appropriately configured module for that context.\n * @info\n * Only applicable when using `<q2-dropdown>` for outlets.\n */\n @Prop({ reflect: true })\n resolvedType: string;\n\n /** The type of button used as the menu toggle.\n * @info\n * Type must be \"custom\" to use the custom button slot.\n */\n @Prop({ reflect: true })\n type: 'icon' | 'fab' | 'custom' | 'primary' | 'secondary' | 'neutral' = 'icon';\n\n // #endregion\n // #region Component Lifecycle Events\n\n componentWillLoad() {\n this._alignOptionStructure();\n this.popDirectionHandler();\n this.alignmentHandler();\n this.ariaLabelHandler();\n }\n\n componentDidLoad() {\n this.orchestrateResolvedMenuItems();\n overrideFocus(this.hostElement);\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('focus')\n delegateFocus(event: FocusEvent) {\n if (!isEventFromElement(event, this.hostElement)) return;\n this.focusToggle();\n }\n\n @Listen('popoverStateChanged')\n popoverStateChangeHandler({ detail: { open } }: CustomEvent<{ open: boolean }>) {\n if (this.open !== open) this.open = open;\n if (open) {\n this.popoverElement?.scrollContainerTo({ top: 0 });\n } else {\n this.optionList.setActiveElement(null);\n }\n }\n\n // #endregion\n // #region Public Methods API\n\n /**\n * Gets the outerHTML for top/bottom slotted elements.\n */\n @Method()\n async _getSlotsHtml() {\n return [\n ...Array.from(this.hostElement.querySelectorAll(`[slot='popover-top']`)).map(slot => ({\n slot: 'top',\n html: slot.outerHTML,\n })),\n ...Array.from(this.hostElement.querySelectorAll(`[slot='popover-bottom']`)).map(slot => ({\n slot: 'bottom',\n html: slot.outerHTML,\n })),\n ];\n }\n\n /**\n * Emulates clicking the dropdown `<button>` to hide the popover if it is showing.\n * @testOnly\n */\n @Method()\n async closePopover() {\n if (!this.open || this.disabled) return;\n this._togglePopover();\n }\n\n /**\n * Emulates clicking the dropdown `<button>` to show the popover if it is hidden.\n * @testOnly\n */\n @Method()\n async openPopover() {\n if (this.open || this.disabled) return;\n this._togglePopover();\n }\n\n /**\n * Emulates opening the dropdown and selecting a\n * [Dropdown Item](https://tecton.q2developer.com/design-system/q2-dropdown-item/) or\n * [Option](https://tecton.q2developer.com/design-system/q2-option/).\n *\n * If the dropdown is closed, this will open it before selecting the item.\n *\n * If the value does not match any item's value, or the dropdown is disabled, this method does nothing.\n * @testOnly\n */\n @Method()\n async selectItem(value: string) {\n const item = this.hostElement.querySelector<HTMLQ2DropdownItemElement>(\n `${this.dropdownItemSelector}[value=\"${value}\"]`\n );\n const option = this.hostElement.querySelector<HTMLQ2OptionElement>(`${this.optionSelector}[value=\"${value}\"]`);\n const itemBtn = item?.shadowRoot.querySelector<HTMLButtonElement>('.dropdown-item');\n const target = item ? itemBtn : option;\n if (!target || this.disabled) return;\n if (!this.open) {\n this.controlElement?.click();\n await waitForNextPaint();\n }\n target.click();\n await waitForNextPaint();\n }\n\n /**\n * Emulates opening the dropdown and selecting a\n * [Dropdown Item](https://tecton.q2developer.com/design-system/q2-dropdown-item/)'s *remove* button.\n *\n * This method only applies to the deprecated `q2-dropdown-item` element, since\n * `q2-option` (its replacement) does not support the `removable` attribute.\n *\n * If the dropdown is closed, this will open it before selecting the remove item button.\n *\n * If the dropdown is disabled, this method does nothing.\n *\n * Requirements for this method to work properly:\n * - Provided `value` matches the item's `value` property\n * - Item has the `removable` property enabled\n * @testOnly\n */\n @Method()\n async selectRemoveItem(value: string) {\n const item = this.hostElement.querySelector<HTMLQ2DropdownItemElement>(\n `${this.dropdownItemSelector}[value=\"${value}\"]`\n );\n const removeButton = item?.shadowRoot.querySelector<HTMLButtonElement>('.remove-dropdown-item');\n if (!item || !removeButton || this.disabled) return;\n if (!this.open) {\n this.controlElement?.click();\n await waitForNextPaint();\n }\n removeButton.click();\n await waitForNextPaint();\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('additionalContext')\n additionalContextHandler() {\n this.orchestrateResolvedMenuItems();\n }\n\n @Watch('alignment')\n alignmentHandler() {\n handleRenamedProp(this, 'alignment', 'popoverAlignment');\n }\n\n @Watch('ariaLabel')\n ariaLabelHandler() {\n handleAriaLabel(this);\n }\n\n @Watch('context')\n contextHandler() {\n this.orchestrateResolvedMenuItems();\n }\n\n @Watch('contextValue')\n contextValueHandler() {\n this.orchestrateResolvedMenuItems();\n }\n\n @Watch('name')\n nameHandler() {\n this.orchestrateResolvedMenuItems();\n }\n\n @Watch('popDirection')\n popDirectionHandler() {\n handleRenamedProp(this, 'popDirection', 'popoverDirection');\n }\n\n @Watch('resolvedType')\n resolvedTypeHandler() {\n this.orchestrateResolvedMenuItems();\n }\n\n // #endregion\n // #region Local Methods\n\n get determineDropdownItemCount() {\n return this.hostElement.querySelectorAll(this.dropdownItemSelector).length;\n }\n\n get hasCustomControl() {\n return !!this.hostElement.querySelector('[slot=control]');\n }\n\n get toggleButtonProps() {\n const allowedIntents = ['primary', 'secondary', 'neutral'];\n const allowedTypes = ['icon', 'fab', 'custom', ...allowedIntents];\n const type = allowedTypes.includes(this.type) ? this.type : '';\n const icon = type === 'icon';\n const fab = type === 'fab';\n const custom = type === 'custom';\n let intent;\n if (allowedIntents.includes(type)) {\n intent = type === 'neutral' ? type : `workflow-${type}`;\n }\n const active = this.open;\n const disabled = !!this.disabled;\n const ariaExpanded = this.open;\n const className = !icon && !fab && !intent ? 'unstyled' : '';\n\n return {\n icon,\n fab,\n intent,\n active,\n disabled,\n ariaExpanded,\n className,\n custom,\n };\n }\n\n _alignOptionStructure(elem: Element = this.hostElement) {\n Array.from(elem.children).forEach(el => {\n if (el.tagName === 'Q2-OPTION') {\n el.setAttribute('_hide-selected-block', '');\n } else if (el.tagName === 'Q2-OPTGROUP') {\n this._alignOptionStructure(el);\n }\n });\n }\n\n _clickItem(value: string) {\n if (!value || this.disabled) return;\n const item = this.hostElement.querySelector<HTMLQ2DropdownItemElement>(\n `${this.dropdownItemSelector}[value=\"${value}\"]`\n );\n const option = this.hostElement.querySelector<HTMLQ2OptionElement>(`${this.optionSelector}[value=\"${value}\"]`);\n item?.shadowRoot.querySelector<HTMLButtonElement>('.dropdown-item')?.click();\n option?.click();\n }\n\n async _handleActionSheet(event: MouseEvent | KeyboardEvent) {\n const { value } = await showActionSheetList(this, event);\n this._clickItem(value);\n this.controlElement.focus();\n }\n\n _togglePopover() {\n const { controlElement } = this;\n if (!controlElement) return;\n controlElement.click();\n controlElement.focus();\n controlElement.dispatchEvent(new FocusEvent('focus'));\n }\n\n focusToggle = () => {\n this.controlElement.focus();\n };\n\n handleFocusOut = (event: FocusEvent) => {\n const relatedTarget = event.relatedTarget as unknown as HTMLElement;\n if (this.popoverElement?.contains(relatedTarget)) return;\n if (this.hostElement.contains(relatedTarget)) return;\n this.open = false;\n };\n\n onClickElsewhere = (event: CustomEvent) => {\n const target = event.target as HTMLElement;\n if (target.localName === 'q2-option-list') {\n event.stopPropagation();\n }\n if (target.localName === 'click-elsewhere') {\n event.stopPropagation();\n const { popoverElement } = this;\n if (!popoverElement) return;\n popoverElement.open = false;\n }\n };\n\n onPopoverState = (event: CustomEvent<{ open: boolean; action: string }>) => {\n if (event.detail.open) return;\n this.controlElement.focus();\n };\n\n onToggleClick = async (event: MouseEvent) => {\n event.stopPropagation();\n this.popoverElement.controlElement = this.controlElement;\n if (shouldShowActionSheet(this)) {\n this._handleActionSheet(event);\n } else {\n await this.popoverElement.toggle();\n }\n };\n\n onToggleKeydown = async (event: KeyboardEvent) => {\n const isTabMetaOrCtrl = event.metaKey || event.ctrlKey || event.key === 'Tab';\n if (isTabMetaOrCtrl) return;\n\n event.preventDefault();\n this.popoverElement.controlElement = this.controlElement;\n if (shouldShowActionSheet(this, event)) {\n this._handleActionSheet(event);\n } else {\n this.optionList.handleExternalKeydown(event);\n }\n };\n\n orchestrateResolvedMenuItems() {\n if (!this.name || !this.context) {\n // this is only for contextual menu outlets\n this.removeResolvedElements();\n return;\n }\n\n this.resolveMenuItemElements()\n .then(data => {\n this.removeResolvedElements();\n data.forEach(element => {\n this.hostElement.appendChild(element);\n });\n })\n .catch(err => {\n this.removeResolvedElements();\n throw err;\n });\n }\n\n removeResolvedElements() {\n const resolvedElements = this.hostElement.querySelectorAll('q2-dropdown-item.resolved-menu-item');\n resolvedElements.forEach(element => this.hostElement.removeChild(element));\n }\n\n resolveMenu() {\n return (\n this.name &&\n window.TectonElements &&\n window.TectonElements.resolveMenu(this.name, this.contextValue, this.resolvedType, this.additionalContext)\n );\n }\n\n resolveMenuItemElements() {\n return this.resolveMenu().then(datas => {\n return datas.map(menuItemData => {\n let onClickFn;\n let queryParams;\n if (menuItemData['tct-ctxid']) {\n queryParams = {};\n queryParams[menuItemData.contextIdParamName] = menuItemData['tct-ctxid'];\n }\n\n switch (menuItemData.action) {\n case 'navigateTo':\n onClickFn = function () {\n return window.TectonElements?.navigateTo?.(\n menuItemData.featureName,\n menuItemData.moduleName,\n queryParams\n );\n };\n break;\n case 'showOverpanel':\n onClickFn = function () {\n return window.TectonElements?.showOverpanel?.(\n `${menuItemData.featureName}.${menuItemData.moduleName}`,\n queryParams,\n undefined,\n true\n );\n };\n break;\n }\n\n const newDropdownItem = document.createElement('q2-dropdown-item');\n newDropdownItem.setAttribute('value', menuItemData.itemLabel);\n newDropdownItem.classList.add('resolved-menu-item');\n newDropdownItem.textContent = menuItemData.itemLabel;\n newDropdownItem.onclick = onClickFn;\n\n return newDropdownItem;\n });\n });\n }\n\n // #endregion\n // #region Render Methods\n\n render() {\n const btnProps = this.toggleButtonProps;\n return (\n <click-elsewhere\n class={this.open ? 'dropdown-open' : ''}\n onChange={this.onClickElsewhere}\n test-id=\"dropdownContainer\"\n >\n <q2-btn\n tabIndex={0}\n ref={el => (this.controlElement = el)}\n class={btnProps.className}\n onClick={this.onToggleClick}\n onKeyDown={this.onToggleKeydown}\n fab={btnProps.fab}\n intent={btnProps.intent}\n onFocusout={this.handleFocusOut}\n active={btnProps.active}\n disabled={btnProps.disabled}\n ariaExpanded={`${!!btnProps.ariaExpanded}`}\n label={this.hideLabel && this.label ? loc(this.label) : undefined}\n hideLabel={this.hideLabel}\n ariaHasPopup=\"menu\"\n test-id=\"dropdownButton\"\n block={this.block}\n description={loc('tecton.element.dropdown.itemCount', [this.determineDropdownItemCount])}\n >\n {this.hasCustomControl ? (\n <div\n test-id=\"dropdownControl\"\n class={btnProps.custom ? '' : 'hidden'}\n >\n <slot name=\"control\" />\n </div>\n ) : (\n <Fragment>\n {this.label && !this.hideLabel && (\n <span class=\"dropdown-button-text\">{loc(this.label)}</span>\n )}\n {this.icon ? <q2-icon type={this.icon} /> : ' '}\n </Fragment>\n )}\n </q2-btn>\n <q2-popover\n ref={el => (this.popoverElement = el)}\n controlElement={this.controlElement}\n open={this.open}\n max-height={this.popoverMaxHeight}\n onFocusout={this.handleFocusOut}\n minHeight={this.popoverMinHeight}\n direction={this.popoverDirection}\n align={this.popoverAlignment}\n mode={this.popoverMode || undefined}\n block={this.block}\n >\n <slot name=\"popover-top\" />\n <q2-option-list\n onPopoverState={this.onPopoverState}\n id=\"option-list\"\n ref={el => (this.optionList = el)}\n type=\"menu\"\n label={loc('tecton.element.optionList.label', [this.optionListLabel])}\n no-select\n >\n <slot />\n </q2-option-list>\n <slot name=\"popover-bottom\" />\n </q2-popover>\n </click-elsewhere>\n );\n }\n\n // #endregion\n}\n"],"names":[],"mappings":"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"}