q2-tecton-elements 1.66.2 → 1.67.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 (694) hide show
  1. package/dist/bundle-report.json +3106 -2970
  2. package/dist/cjs/action-sheet-D71RSc-w.js.map +1 -1
  3. package/dist/cjs/click-elsewhere.q2-option-list.q2-popover.entry.cjs.js.map +1 -0
  4. package/dist/cjs/{q2-option-list_2.cjs.entry.js → click-elsewhere_3.cjs.entry.js} +168 -20
  5. package/dist/cjs/click-elsewhere_3.cjs.entry.js.map +1 -0
  6. package/dist/cjs/{index-DyAq0y0v.js → index-YvKoRT-t.js} +61 -21
  7. package/dist/cjs/index-YvKoRT-t.js.map +1 -0
  8. package/dist/cjs/loader.cjs.js +1 -1
  9. package/dist/cjs/q2-action-group_2.cjs.entry.js +3 -3
  10. package/dist/cjs/q2-action-sheet.cjs.entry.js +3 -3
  11. package/dist/cjs/q2-avatar.cjs.entry.js +33 -2
  12. package/dist/cjs/q2-avatar.cjs.entry.js.map +1 -1
  13. package/dist/cjs/q2-avatar.entry.cjs.js.map +1 -1
  14. package/dist/cjs/q2-badge.cjs.entry.js +1 -1
  15. package/dist/cjs/q2-btn.q2-loading.entry.cjs.js.map +1 -1
  16. package/dist/cjs/q2-btn_2.cjs.entry.js +22 -8
  17. package/dist/cjs/q2-btn_2.cjs.entry.js.map +1 -1
  18. package/dist/cjs/q2-calendar.cjs.entry.js +3 -3
  19. package/dist/cjs/q2-calendar.cjs.entry.js.map +1 -1
  20. package/dist/cjs/q2-calendar.entry.cjs.js.map +1 -1
  21. package/dist/cjs/q2-card-image.cjs.entry.js +3 -3
  22. package/dist/cjs/q2-card.cjs.entry.js +1 -1
  23. package/dist/cjs/q2-carousel-pane.cjs.entry.js +4 -4
  24. package/dist/cjs/q2-carousel-pane.cjs.entry.js.map +1 -1
  25. package/dist/cjs/q2-carousel-pane.entry.cjs.js.map +1 -1
  26. package/dist/cjs/q2-carousel.cjs.entry.js +67 -42
  27. package/dist/cjs/q2-carousel.cjs.entry.js.map +1 -1
  28. package/dist/cjs/q2-carousel.entry.cjs.js.map +1 -1
  29. package/dist/cjs/q2-chart-area.cjs.entry.js +4 -2
  30. package/dist/cjs/q2-chart-area.cjs.entry.js.map +1 -1
  31. package/dist/cjs/q2-chart-area.entry.cjs.js.map +1 -1
  32. package/dist/cjs/q2-chart-bar.cjs.entry.js +4 -2
  33. package/dist/cjs/q2-chart-bar.cjs.entry.js.map +1 -1
  34. package/dist/cjs/q2-chart-bar.entry.cjs.js.map +1 -1
  35. package/dist/cjs/q2-chart-donut.cjs.entry.js +7 -3
  36. package/dist/cjs/q2-chart-donut.cjs.entry.js.map +1 -1
  37. package/dist/cjs/q2-chart-donut.entry.cjs.js.map +1 -1
  38. package/dist/cjs/q2-checkbox-group.cjs.entry.js +3 -3
  39. package/dist/cjs/q2-checkbox-group.cjs.entry.js.map +1 -1
  40. package/dist/cjs/q2-checkbox-group.entry.cjs.js.map +1 -1
  41. package/dist/cjs/q2-checkbox.q2-tag.entry.cjs.js.map +1 -0
  42. package/dist/cjs/q2-checkbox_2.cjs.entry.js +322 -0
  43. package/dist/cjs/q2-checkbox_2.cjs.entry.js.map +1 -0
  44. package/dist/cjs/q2-context.cjs.entry.js +2 -2
  45. package/dist/cjs/q2-currency.cjs.entry.js +1 -1
  46. package/dist/cjs/q2-data-table.cjs.entry.js +13 -16
  47. package/dist/cjs/q2-data-table.cjs.entry.js.map +1 -1
  48. package/dist/cjs/q2-data-table.entry.cjs.js.map +1 -1
  49. package/dist/cjs/q2-detail.cjs.entry.js +2 -2
  50. package/dist/cjs/q2-dropdown-item.cjs.entry.js +1 -1
  51. package/dist/cjs/q2-dropdown.cjs.entry.js +2 -2
  52. package/dist/cjs/q2-editable-field.cjs.entry.js +2 -2
  53. package/dist/cjs/q2-editable-field.cjs.entry.js.map +1 -1
  54. package/dist/cjs/q2-editable-field.entry.cjs.js.map +1 -1
  55. package/dist/cjs/q2-example.cjs.entry.js +1 -1
  56. package/dist/cjs/q2-file-picker.cjs.entry.js +1 -1
  57. package/dist/cjs/q2-file-picker.cjs.entry.js.map +1 -1
  58. package/dist/cjs/q2-file-picker.entry.cjs.js.map +1 -1
  59. package/dist/cjs/q2-form.cjs.entry.js +1 -1
  60. package/dist/cjs/q2-formatted-text.cjs.entry.js +1 -1
  61. package/dist/cjs/q2-grid-area.cjs.entry.js +1 -1
  62. package/dist/cjs/q2-grid.cjs.entry.js +1 -1
  63. package/dist/cjs/q2-icon.cjs.entry.js +11 -1
  64. package/dist/cjs/q2-icon.cjs.entry.js.map +1 -1
  65. package/dist/cjs/q2-icon.entry.cjs.js.map +1 -1
  66. package/dist/cjs/q2-input.cjs.entry.js +2 -2
  67. package/dist/cjs/q2-input.cjs.entry.js.map +1 -1
  68. package/dist/cjs/q2-input.entry.cjs.js.map +1 -1
  69. package/dist/cjs/q2-item.cjs.entry.js +3 -3
  70. package/dist/cjs/q2-item.cjs.entry.js.map +1 -1
  71. package/dist/cjs/q2-item.entry.cjs.js.map +1 -1
  72. package/dist/cjs/q2-legend.cjs.entry.js +2 -2
  73. package/dist/cjs/q2-legend.cjs.entry.js.map +1 -1
  74. package/dist/cjs/q2-legend.entry.cjs.js.map +1 -1
  75. package/dist/cjs/q2-link.q2-list.entry.cjs.js.map +1 -1
  76. package/dist/cjs/q2-link_2.cjs.entry.js +14 -6
  77. package/dist/cjs/q2-link_2.cjs.entry.js.map +1 -1
  78. package/dist/cjs/q2-loc.cjs.entry.js +1 -1
  79. package/dist/cjs/q2-message.cjs.entry.js +3 -3
  80. package/dist/cjs/q2-message.cjs.entry.js.map +1 -1
  81. package/dist/cjs/q2-message.entry.cjs.js.map +1 -1
  82. package/dist/cjs/q2-meter.cjs.entry.js +2 -2
  83. package/dist/cjs/q2-modal.cjs.entry.js +4 -21
  84. package/dist/cjs/q2-modal.cjs.entry.js.map +1 -1
  85. package/dist/cjs/q2-modal.entry.cjs.js.map +1 -1
  86. package/dist/cjs/q2-month-picker.cjs.entry.js +3 -3
  87. package/dist/cjs/q2-mutation-observer.cjs.entry.js +1 -1
  88. package/dist/cjs/q2-optgroup.cjs.entry.js +2 -2
  89. package/dist/cjs/q2-option.cjs.entry.js +1 -1
  90. package/dist/cjs/q2-pagination.cjs.entry.js +12 -7
  91. package/dist/cjs/q2-pagination.cjs.entry.js.map +1 -1
  92. package/dist/cjs/q2-pagination.entry.cjs.js.map +1 -1
  93. package/dist/cjs/q2-pill.cjs.entry.js +3 -3
  94. package/dist/cjs/q2-pill.cjs.entry.js.map +1 -1
  95. package/dist/cjs/q2-pill.entry.cjs.js.map +1 -1
  96. package/dist/cjs/q2-radio-group.cjs.entry.js +3 -3
  97. package/dist/cjs/q2-radio-group.cjs.entry.js.map +1 -1
  98. package/dist/cjs/q2-radio-group.entry.cjs.js.map +1 -1
  99. package/dist/cjs/q2-radio.cjs.entry.js +3 -3
  100. package/dist/cjs/q2-radio.cjs.entry.js.map +1 -1
  101. package/dist/cjs/q2-radio.entry.cjs.js.map +1 -1
  102. package/dist/cjs/q2-relative-time.cjs.entry.js +2 -2
  103. package/dist/cjs/q2-section.cjs.entry.js +3 -3
  104. package/dist/cjs/q2-select.cjs.entry.js +22 -8
  105. package/dist/cjs/q2-select.cjs.entry.js.map +1 -1
  106. package/dist/cjs/q2-select.entry.cjs.js.map +1 -1
  107. package/dist/cjs/q2-stepper-pane.cjs.entry.js +7 -6
  108. package/dist/cjs/q2-stepper-pane.cjs.entry.js.map +1 -1
  109. package/dist/cjs/q2-stepper-pane.entry.cjs.js.map +1 -1
  110. package/dist/cjs/q2-stepper-vertical.cjs.entry.js +16 -8
  111. package/dist/cjs/q2-stepper-vertical.cjs.entry.js.map +1 -1
  112. package/dist/cjs/q2-stepper-vertical.entry.cjs.js.map +1 -1
  113. package/dist/cjs/q2-stepper.cjs.entry.js +7 -4
  114. package/dist/cjs/q2-stepper.cjs.entry.js.map +1 -1
  115. package/dist/cjs/q2-stepper.entry.cjs.js.map +1 -1
  116. package/dist/cjs/q2-tab-container.cjs.entry.js +3 -3
  117. package/dist/cjs/q2-tab-container.cjs.entry.js.map +1 -1
  118. package/dist/cjs/q2-tab-container.entry.cjs.js.map +1 -1
  119. package/dist/cjs/q2-tab-pane.cjs.entry.js +1 -1
  120. package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
  121. package/dist/cjs/q2-textarea.cjs.entry.js +3 -3
  122. package/dist/cjs/q2-textarea.cjs.entry.js.map +1 -1
  123. package/dist/cjs/q2-textarea.entry.cjs.js.map +1 -1
  124. package/dist/cjs/q2-toast.cjs.entry.js +1 -1
  125. package/dist/cjs/q2-tooltip.cjs.entry.js +33 -3
  126. package/dist/cjs/q2-tooltip.cjs.entry.js.map +1 -1
  127. package/dist/cjs/q2-tooltip.entry.cjs.js.map +1 -1
  128. package/dist/cjs/{sanitize-html-string-C2iwHNz5.js → sanitize-html-string-CW6y5624.js} +27 -17
  129. package/dist/cjs/sanitize-html-string-CW6y5624.js.map +1 -0
  130. package/dist/cjs/tecton-tab-pane.cjs.entry.js +2 -2
  131. package/dist/collection/__mocks__/echarts.js +12 -0
  132. package/dist/collection/__mocks__/echarts.js.map +1 -0
  133. package/dist/collection/collection-manifest.json +3 -3
  134. package/dist/collection/components/q2-action-group/q2-action-group.js +1 -1
  135. package/dist/collection/components/q2-action-sheet/q2-action-sheet.js +1 -1
  136. package/dist/collection/components/q2-avatar/q2-avatar.css +84 -89
  137. package/dist/collection/components/q2-avatar/q2-avatar.js +35 -1
  138. package/dist/collection/components/q2-avatar/q2-avatar.js.map +1 -1
  139. package/dist/collection/components/q2-btn/q2-btn.css +10 -3
  140. package/dist/collection/components/q2-btn/q2-btn.js +42 -6
  141. package/dist/collection/components/q2-btn/q2-btn.js.map +1 -1
  142. package/dist/collection/components/q2-calendar/q2-calendar-helpers.js.map +1 -1
  143. package/dist/collection/components/q2-calendar/q2-calendar-types.js.map +1 -1
  144. package/dist/collection/components/q2-calendar/q2-calendar-validation.js.map +1 -1
  145. package/dist/collection/components/q2-calendar/q2-calendar.css +4 -1
  146. package/dist/collection/components/q2-calendar/q2-calendar.js +1 -1
  147. package/dist/collection/components/q2-calendar/q2-calendar.js.map +1 -1
  148. package/dist/collection/components/q2-calendar/q2-month-picker.js +2 -2
  149. package/dist/collection/components/q2-card-image/q2-card-image.js +2 -2
  150. package/dist/collection/components/q2-carousel/q2-carousel.css +143 -13
  151. package/dist/collection/components/q2-carousel/q2-carousel.js +90 -42
  152. package/dist/collection/components/q2-carousel/q2-carousel.js.map +1 -1
  153. package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.css +2 -11
  154. package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.js +2 -2
  155. package/dist/collection/components/q2-chart-area/q2-chart-area.js +18 -16
  156. package/dist/collection/components/q2-chart-area/q2-chart-area.js.map +1 -1
  157. package/dist/collection/components/q2-chart-bar/q2-chart-bar.js +8 -6
  158. package/dist/collection/components/q2-chart-bar/q2-chart-bar.js.map +1 -1
  159. package/dist/collection/components/q2-chart-donut/q2-chart-donut.css +4 -1
  160. package/dist/collection/components/q2-chart-donut/q2-chart-donut.js +30 -26
  161. package/dist/collection/components/q2-chart-donut/q2-chart-donut.js.map +1 -1
  162. package/dist/collection/components/q2-checkbox/q2-checkbox.css +4 -1
  163. package/dist/collection/components/q2-checkbox/q2-checkbox.js +38 -1
  164. package/dist/collection/components/q2-checkbox/q2-checkbox.js.map +1 -1
  165. package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.css +1 -1
  166. package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.js +1 -1
  167. package/dist/collection/components/q2-context/q2-context.js +1 -1
  168. package/dist/collection/components/q2-currency/q2-currency.js +1 -1
  169. package/dist/collection/components/q2-data-table/q2-data-table.css +14 -0
  170. package/dist/collection/components/q2-data-table/q2-data-table.js +47 -50
  171. package/dist/collection/components/q2-data-table/q2-data-table.js.map +1 -1
  172. package/dist/collection/components/q2-detail/q2-detail.js +1 -1
  173. package/dist/collection/components/q2-dropdown/q2-dropdown.js +1 -1
  174. package/dist/collection/components/q2-editable-field/q2-editable-field.js +2 -2
  175. package/dist/collection/components/q2-editable-field/q2-editable-field.js.map +1 -1
  176. package/dist/collection/components/q2-example/q2-example.js +1 -1
  177. package/dist/collection/components/q2-file-picker/q2-file-picker.js +9 -9
  178. package/dist/collection/components/q2-file-picker/q2-file-picker.js.map +1 -1
  179. package/dist/collection/components/q2-form/q2-form.js +1 -1
  180. package/dist/collection/components/q2-formatted-text/q2-formatted-text.js +1 -1
  181. package/dist/collection/components/q2-grid/q2-grid.js +1 -1
  182. package/dist/collection/components/q2-grid-area/q2-grid-area.js +1 -1
  183. package/dist/collection/components/q2-icon/assets/brand.symbol.svg +1 -1
  184. package/dist/collection/components/q2-icon/assets/browsersos.symbol.svg +1 -1
  185. package/dist/collection/components/q2-icon/assets/cards.symbol.svg +1 -1
  186. package/dist/collection/components/q2-icon/assets/communication.symbol.svg +1 -1
  187. package/dist/collection/components/q2-icon/assets/currencies.symbol.svg +1 -1
  188. package/dist/collection/components/q2-icon/assets/devices.symbol.svg +1 -1
  189. package/dist/collection/components/q2-icon/assets/filetypes.symbol.svg +1 -1
  190. package/dist/collection/components/q2-icon/assets/gestures.symbol.svg +1 -1
  191. package/dist/collection/components/q2-icon/assets/icon-list.json +1 -1
  192. package/dist/collection/components/q2-icon/assets/icon-map.json +1 -1
  193. package/dist/collection/components/q2-icon/assets/legacy.symbol.svg +1 -1
  194. package/dist/collection/components/q2-icon/assets/mobile.symbol.svg +1 -1
  195. package/dist/collection/components/q2-icon/assets/standard.symbol.svg +1 -1
  196. package/dist/collection/components/q2-icon/assets/status.symbol.svg +1 -1
  197. package/dist/collection/components/q2-icon/q2-icon.js +8 -0
  198. package/dist/collection/components/q2-icon/q2-icon.js.map +1 -1
  199. package/dist/collection/components/q2-input/formatting/credit-card.js.map +1 -1
  200. package/dist/collection/components/q2-input/formatting/currency.js.map +1 -1
  201. package/dist/collection/components/q2-input/formatting/generic.js.map +1 -1
  202. package/dist/collection/components/q2-input/formatting/number.js.map +1 -1
  203. package/dist/collection/components/q2-input/formatting/numeric.js.map +1 -1
  204. package/dist/collection/components/q2-input/formatting/phone.js.map +1 -1
  205. package/dist/collection/components/q2-input/q2-input-types.js.map +1 -1
  206. package/dist/collection/components/q2-input/q2-input.js +42 -42
  207. package/dist/collection/components/q2-input/q2-input.js.map +1 -1
  208. package/dist/collection/components/q2-item/q2-item.css +4 -0
  209. package/dist/collection/components/q2-item/q2-item.js +1 -1
  210. package/dist/collection/components/q2-legend/q2-legend.css +3 -0
  211. package/dist/collection/components/q2-legend/q2-legend.js +36 -36
  212. package/dist/collection/components/q2-legend/q2-legend.js.map +1 -1
  213. package/dist/collection/components/q2-link/q2-link.css +5 -2
  214. package/dist/collection/components/q2-link/q2-link.js +33 -3
  215. package/dist/collection/components/q2-link/q2-link.js.map +1 -1
  216. package/dist/collection/components/q2-list/q2-list.js +1 -1
  217. package/dist/collection/components/q2-message/q2-message.css +19 -16
  218. package/dist/collection/components/q2-message/q2-message.js +1 -1
  219. package/dist/collection/components/q2-message/q2-message.js.map +1 -1
  220. package/dist/collection/components/q2-meter/q2-meter.js +1 -1
  221. package/dist/collection/components/q2-modal/q2-modal.css +3 -3
  222. package/dist/collection/components/q2-modal/q2-modal.js +1 -94
  223. package/dist/collection/components/q2-modal/q2-modal.js.map +1 -1
  224. package/dist/collection/components/q2-mutation-observer/q2-mutation-observer.js +1 -1
  225. package/dist/collection/components/q2-optgroup/q2-optgroup.js +1 -1
  226. package/dist/collection/components/q2-option-list/q2-option-list.js +13 -13
  227. package/dist/collection/components/q2-option-list/q2-option-list.js.map +1 -1
  228. package/dist/collection/components/q2-pagination/q2-pagination.js +15 -10
  229. package/dist/collection/components/q2-pagination/q2-pagination.js.map +1 -1
  230. package/dist/collection/components/q2-pill/q2-pill.css +9 -0
  231. package/dist/collection/components/q2-pill/q2-pill.js +13 -13
  232. package/dist/collection/components/q2-pill/q2-pill.js.map +1 -1
  233. package/dist/collection/components/q2-popover/q2-popover.css +66 -1
  234. package/dist/collection/components/q2-popover/q2-popover.js +94 -14
  235. package/dist/collection/components/q2-popover/q2-popover.js.map +1 -1
  236. package/dist/collection/components/q2-radio/q2-radio.css +4 -3
  237. package/dist/collection/components/q2-radio/q2-radio.js +1 -1
  238. package/dist/collection/components/q2-radio-group/q2-radio-group.css +1 -1
  239. package/dist/collection/components/q2-radio-group/q2-radio-group.js +1 -1
  240. package/dist/collection/components/q2-relative-time/q2-relative-time.js +1 -1
  241. package/dist/collection/components/q2-resize-observer/q2-resize-observer.js +1 -1
  242. package/dist/collection/components/q2-section/q2-section.js +2 -2
  243. package/dist/collection/components/q2-select/q2-select.js +23 -7
  244. package/dist/collection/components/q2-select/q2-select.js.map +1 -1
  245. package/dist/collection/components/q2-stepper/q2-stepper.css +9 -2
  246. package/dist/collection/components/q2-stepper/q2-stepper.js +5 -2
  247. package/dist/collection/components/q2-stepper/q2-stepper.js.map +1 -1
  248. package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.js +52 -30
  249. package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.js.map +1 -1
  250. package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.css +11 -2
  251. package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js +20 -6
  252. package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js.map +1 -1
  253. package/dist/collection/components/q2-tab-container/q2-tab-container.css +7 -1
  254. package/dist/collection/components/q2-tab-container/q2-tab-container.js +1 -1
  255. package/dist/collection/components/q2-tab-pane/q2-tab-pane.js +1 -1
  256. package/dist/collection/components/q2-tag/q2-tag.css +3 -0
  257. package/dist/collection/components/q2-tag/q2-tag.js +1 -1
  258. package/dist/collection/components/q2-textarea/q2-textarea.css +1 -0
  259. package/dist/collection/components/q2-textarea/q2-textarea.js +1 -1
  260. package/dist/collection/components/q2-tooltip/q2-tooltip.css +1 -1
  261. package/dist/collection/components/q2-tooltip/q2-tooltip.js +34 -1
  262. package/dist/collection/components/q2-tooltip/q2-tooltip.js.map +1 -1
  263. package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js +2 -2
  264. package/dist/collection/index.js +1 -0
  265. package/dist/collection/index.js.map +1 -1
  266. package/dist/collection/utils/action-sheet.js.map +1 -1
  267. package/dist/collection/utils/index.js +59 -19
  268. package/dist/collection/utils/index.js.map +1 -1
  269. package/dist/components/action-sheet.js.map +1 -1
  270. package/dist/components/index2.js +59 -19
  271. package/dist/components/index2.js.map +1 -1
  272. package/dist/components/q2-action-group2.js +1 -1
  273. package/dist/components/q2-action-sheet.js +1 -1
  274. package/dist/components/q2-avatar2.js +34 -2
  275. package/dist/components/q2-avatar2.js.map +1 -1
  276. package/dist/components/q2-btn2.js +22 -7
  277. package/dist/components/q2-btn2.js.map +1 -1
  278. package/dist/components/q2-calendar.js +2 -2
  279. package/dist/components/q2-calendar.js.map +1 -1
  280. package/dist/components/q2-card-image.js +2 -2
  281. package/dist/components/q2-carousel-pane.js +3 -3
  282. package/dist/components/q2-carousel-pane.js.map +1 -1
  283. package/dist/components/q2-carousel.js +69 -55
  284. package/dist/components/q2-carousel.js.map +1 -1
  285. package/dist/components/q2-chart-area.js +3 -1
  286. package/dist/components/q2-chart-area.js.map +1 -1
  287. package/dist/components/q2-chart-bar.js +3 -1
  288. package/dist/components/q2-chart-bar.js.map +1 -1
  289. package/dist/components/q2-chart-donut.js +6 -2
  290. package/dist/components/q2-chart-donut.js.map +1 -1
  291. package/dist/components/q2-checkbox-group.js +2 -2
  292. package/dist/components/q2-checkbox-group.js.map +1 -1
  293. package/dist/components/q2-checkbox2.js +13 -2
  294. package/dist/components/q2-checkbox2.js.map +1 -1
  295. package/dist/components/q2-context.js +1 -1
  296. package/dist/components/q2-currency.js +1 -1
  297. package/dist/components/q2-data-table.js +46 -25
  298. package/dist/components/q2-data-table.js.map +1 -1
  299. package/dist/components/q2-detail.js +1 -1
  300. package/dist/components/q2-dropdown.js +1 -1
  301. package/dist/components/q2-editable-field.js +1 -1
  302. package/dist/components/q2-editable-field.js.map +1 -1
  303. package/dist/components/q2-example.js +1 -1
  304. package/dist/components/q2-file-picker.js.map +1 -1
  305. package/dist/components/q2-form.js +1 -1
  306. package/dist/components/q2-formatted-text.js +1 -1
  307. package/dist/components/q2-grid-area.js +1 -1
  308. package/dist/components/q2-grid.js +1 -1
  309. package/dist/components/q2-icon2.js +10 -0
  310. package/dist/components/q2-icon2.js.map +1 -1
  311. package/dist/components/q2-input2.js +1 -1
  312. package/dist/components/q2-input2.js.map +1 -1
  313. package/dist/components/q2-item2.js +2 -2
  314. package/dist/components/q2-item2.js.map +1 -1
  315. package/dist/components/q2-legend2.js +2 -2
  316. package/dist/components/q2-legend2.js.map +1 -1
  317. package/dist/components/q2-link2.js +13 -4
  318. package/dist/components/q2-link2.js.map +1 -1
  319. package/dist/components/q2-list2.js +1 -1
  320. package/dist/components/q2-message2.js +2 -2
  321. package/dist/components/q2-message2.js.map +1 -1
  322. package/dist/components/q2-meter.js +1 -1
  323. package/dist/components/q2-modal.js +2 -23
  324. package/dist/components/q2-modal.js.map +1 -1
  325. package/dist/components/q2-month-picker.js +2 -2
  326. package/dist/components/q2-mutation-observer.js +1 -1
  327. package/dist/components/q2-optgroup2.js +1 -1
  328. package/dist/components/q2-option-list2.js +1 -1
  329. package/dist/components/q2-option-list2.js.map +1 -1
  330. package/dist/components/q2-pagination.js +11 -6
  331. package/dist/components/q2-pagination.js.map +1 -1
  332. package/dist/components/q2-pill.js +2 -2
  333. package/dist/components/q2-pill.js.map +1 -1
  334. package/dist/components/q2-popover2.js +76 -15
  335. package/dist/components/q2-popover2.js.map +1 -1
  336. package/dist/components/q2-radio-group.js +2 -2
  337. package/dist/components/q2-radio-group.js.map +1 -1
  338. package/dist/components/q2-radio.js +2 -2
  339. package/dist/components/q2-radio.js.map +1 -1
  340. package/dist/components/q2-relative-time.js +1 -1
  341. package/dist/components/q2-resize-observer2.js +1 -1
  342. package/dist/components/q2-section.js +2 -2
  343. package/dist/components/q2-select2.js +23 -8
  344. package/dist/components/q2-select2.js.map +1 -1
  345. package/dist/components/q2-stepper-pane.js +9 -6
  346. package/dist/components/q2-stepper-pane.js.map +1 -1
  347. package/dist/components/q2-stepper-vertical.js +16 -8
  348. package/dist/components/q2-stepper-vertical.js.map +1 -1
  349. package/dist/components/q2-stepper.js +6 -3
  350. package/dist/components/q2-stepper.js.map +1 -1
  351. package/dist/components/q2-tab-container.js +2 -2
  352. package/dist/components/q2-tab-container.js.map +1 -1
  353. package/dist/components/q2-tab-pane.js +1 -1
  354. package/dist/components/q2-tag.js +1 -257
  355. package/dist/components/q2-tag.js.map +1 -1
  356. package/dist/{esm/q2-tag.entry.js → components/q2-tag2.js} +68 -15
  357. package/dist/components/q2-tag2.js.map +1 -0
  358. package/dist/components/q2-textarea.js +2 -2
  359. package/dist/components/q2-textarea.js.map +1 -1
  360. package/dist/components/q2-tooltip2.js +35 -3
  361. package/dist/components/q2-tooltip2.js.map +1 -1
  362. package/dist/components/sanitize-html-string.js +25 -15
  363. package/dist/components/sanitize-html-string.js.map +1 -1
  364. package/dist/components/tecton-tab-pane.js +2 -2
  365. package/dist/esm/action-sheet-B7adb3xs.js.map +1 -1
  366. package/dist/esm/click-elsewhere.q2-option-list.q2-popover.entry.js.map +1 -0
  367. package/dist/esm/{q2-option-list_2.entry.js → click-elsewhere_3.entry.js} +169 -22
  368. package/dist/esm/click-elsewhere_3.entry.js.map +1 -0
  369. package/dist/esm/{index-B4WYBDS9.js → index-C4PILj1_.js} +61 -21
  370. package/dist/esm/index-C4PILj1_.js.map +1 -0
  371. package/dist/esm/loader.js +1 -1
  372. package/dist/esm/q2-action-group_2.entry.js +3 -3
  373. package/dist/esm/q2-action-sheet.entry.js +3 -3
  374. package/dist/esm/q2-avatar.entry.js +33 -2
  375. package/dist/esm/q2-avatar.entry.js.map +1 -1
  376. package/dist/esm/q2-badge.entry.js +1 -1
  377. package/dist/esm/q2-btn.q2-loading.entry.js.map +1 -1
  378. package/dist/esm/q2-btn_2.entry.js +22 -8
  379. package/dist/esm/q2-btn_2.entry.js.map +1 -1
  380. package/dist/esm/q2-calendar.entry.js +3 -3
  381. package/dist/esm/q2-calendar.entry.js.map +1 -1
  382. package/dist/esm/q2-card-image.entry.js +3 -3
  383. package/dist/esm/q2-card.entry.js +1 -1
  384. package/dist/esm/q2-carousel-pane.entry.js +4 -4
  385. package/dist/esm/q2-carousel-pane.entry.js.map +1 -1
  386. package/dist/esm/q2-carousel.entry.js +67 -42
  387. package/dist/esm/q2-carousel.entry.js.map +1 -1
  388. package/dist/esm/q2-chart-area.entry.js +4 -2
  389. package/dist/esm/q2-chart-area.entry.js.map +1 -1
  390. package/dist/esm/q2-chart-bar.entry.js +4 -2
  391. package/dist/esm/q2-chart-bar.entry.js.map +1 -1
  392. package/dist/esm/q2-chart-donut.entry.js +7 -3
  393. package/dist/esm/q2-chart-donut.entry.js.map +1 -1
  394. package/dist/esm/q2-checkbox-group.entry.js +3 -3
  395. package/dist/esm/q2-checkbox-group.entry.js.map +1 -1
  396. package/dist/esm/q2-checkbox.q2-tag.entry.js.map +1 -0
  397. package/dist/esm/q2-checkbox_2.entry.js +319 -0
  398. package/dist/esm/q2-checkbox_2.entry.js.map +1 -0
  399. package/dist/esm/q2-context.entry.js +2 -2
  400. package/dist/esm/q2-currency.entry.js +1 -1
  401. package/dist/esm/q2-data-table.entry.js +13 -16
  402. package/dist/esm/q2-data-table.entry.js.map +1 -1
  403. package/dist/esm/q2-detail.entry.js +2 -2
  404. package/dist/esm/q2-dropdown-item.entry.js +1 -1
  405. package/dist/esm/q2-dropdown.entry.js +2 -2
  406. package/dist/esm/q2-editable-field.entry.js +2 -2
  407. package/dist/esm/q2-editable-field.entry.js.map +1 -1
  408. package/dist/esm/q2-example.entry.js +1 -1
  409. package/dist/esm/q2-file-picker.entry.js +1 -1
  410. package/dist/esm/q2-file-picker.entry.js.map +1 -1
  411. package/dist/esm/q2-form.entry.js +1 -1
  412. package/dist/esm/q2-formatted-text.entry.js +1 -1
  413. package/dist/esm/q2-grid-area.entry.js +1 -1
  414. package/dist/esm/q2-grid.entry.js +1 -1
  415. package/dist/esm/q2-icon.entry.js +11 -1
  416. package/dist/esm/q2-icon.entry.js.map +1 -1
  417. package/dist/esm/q2-input.entry.js +2 -2
  418. package/dist/esm/q2-input.entry.js.map +1 -1
  419. package/dist/esm/q2-item.entry.js +3 -3
  420. package/dist/esm/q2-item.entry.js.map +1 -1
  421. package/dist/esm/q2-legend.entry.js +2 -2
  422. package/dist/esm/q2-legend.entry.js.map +1 -1
  423. package/dist/esm/q2-link.q2-list.entry.js.map +1 -1
  424. package/dist/esm/q2-link_2.entry.js +14 -6
  425. package/dist/esm/q2-link_2.entry.js.map +1 -1
  426. package/dist/esm/q2-loc.entry.js +1 -1
  427. package/dist/esm/q2-message.entry.js +3 -3
  428. package/dist/esm/q2-message.entry.js.map +1 -1
  429. package/dist/esm/q2-meter.entry.js +2 -2
  430. package/dist/esm/q2-modal.entry.js +4 -21
  431. package/dist/esm/q2-modal.entry.js.map +1 -1
  432. package/dist/esm/q2-month-picker.entry.js +3 -3
  433. package/dist/esm/q2-mutation-observer.entry.js +1 -1
  434. package/dist/esm/q2-optgroup.entry.js +2 -2
  435. package/dist/esm/q2-option.entry.js +1 -1
  436. package/dist/esm/q2-pagination.entry.js +12 -7
  437. package/dist/esm/q2-pagination.entry.js.map +1 -1
  438. package/dist/esm/q2-pill.entry.js +3 -3
  439. package/dist/esm/q2-pill.entry.js.map +1 -1
  440. package/dist/esm/q2-radio-group.entry.js +3 -3
  441. package/dist/esm/q2-radio-group.entry.js.map +1 -1
  442. package/dist/esm/q2-radio.entry.js +3 -3
  443. package/dist/esm/q2-radio.entry.js.map +1 -1
  444. package/dist/esm/q2-relative-time.entry.js +2 -2
  445. package/dist/esm/q2-section.entry.js +3 -3
  446. package/dist/esm/q2-select.entry.js +22 -8
  447. package/dist/esm/q2-select.entry.js.map +1 -1
  448. package/dist/esm/q2-stepper-pane.entry.js +7 -6
  449. package/dist/esm/q2-stepper-pane.entry.js.map +1 -1
  450. package/dist/esm/q2-stepper-vertical.entry.js +16 -8
  451. package/dist/esm/q2-stepper-vertical.entry.js.map +1 -1
  452. package/dist/esm/q2-stepper.entry.js +7 -4
  453. package/dist/esm/q2-stepper.entry.js.map +1 -1
  454. package/dist/esm/q2-tab-container.entry.js +3 -3
  455. package/dist/esm/q2-tab-container.entry.js.map +1 -1
  456. package/dist/esm/q2-tab-pane.entry.js +1 -1
  457. package/dist/esm/q2-tecton-elements.js +1 -1
  458. package/dist/esm/q2-textarea.entry.js +3 -3
  459. package/dist/esm/q2-textarea.entry.js.map +1 -1
  460. package/dist/esm/q2-toast.entry.js +1 -1
  461. package/dist/esm/q2-tooltip.entry.js +33 -3
  462. package/dist/esm/q2-tooltip.entry.js.map +1 -1
  463. package/dist/esm/{sanitize-html-string-BPwFpYg-.js → sanitize-html-string-B35VmRc9.js} +27 -17
  464. package/dist/esm/sanitize-html-string-B35VmRc9.js.map +1 -0
  465. package/dist/esm/tecton-tab-pane.entry.js +2 -2
  466. package/dist/q2-tecton-elements/action-sheet-B7adb3xs.js.map +1 -1
  467. package/dist/q2-tecton-elements/assets/brand.symbol.svg +1 -1
  468. package/dist/q2-tecton-elements/assets/browsersos.symbol.svg +1 -1
  469. package/dist/q2-tecton-elements/assets/cards.symbol.svg +1 -1
  470. package/dist/q2-tecton-elements/assets/communication.symbol.svg +1 -1
  471. package/dist/q2-tecton-elements/assets/currencies.symbol.svg +1 -1
  472. package/dist/q2-tecton-elements/assets/devices.symbol.svg +1 -1
  473. package/dist/q2-tecton-elements/assets/filetypes.symbol.svg +1 -1
  474. package/dist/q2-tecton-elements/assets/gestures.symbol.svg +1 -1
  475. package/dist/q2-tecton-elements/assets/icon-list.json +1 -1
  476. package/dist/q2-tecton-elements/assets/icon-map.json +1 -1
  477. package/dist/q2-tecton-elements/assets/legacy.symbol.svg +1 -1
  478. package/dist/q2-tecton-elements/assets/mobile.symbol.svg +1 -1
  479. package/dist/q2-tecton-elements/assets/standard.symbol.svg +1 -1
  480. package/dist/q2-tecton-elements/assets/status.symbol.svg +1 -1
  481. package/dist/q2-tecton-elements/click-elsewhere.q2-option-list.q2-popover.entry.esm.js.map +1 -0
  482. package/dist/q2-tecton-elements/{q2-option-list_2.entry.js → click-elsewhere_3.entry.js} +357 -224
  483. package/dist/q2-tecton-elements/click-elsewhere_3.entry.js.map +1 -0
  484. package/dist/q2-tecton-elements/{index-B4WYBDS9.js → index-C4PILj1_.js} +53 -14
  485. package/dist/q2-tecton-elements/index-C4PILj1_.js.map +1 -0
  486. package/dist/q2-tecton-elements/q2-action-group_2.entry.js +5 -5
  487. package/dist/q2-tecton-elements/q2-action-sheet.entry.js +10 -10
  488. package/dist/q2-tecton-elements/q2-avatar.entry.esm.js.map +1 -1
  489. package/dist/q2-tecton-elements/q2-avatar.entry.js +68 -30
  490. package/dist/q2-tecton-elements/q2-avatar.entry.js.map +1 -1
  491. package/dist/q2-tecton-elements/q2-badge.entry.js +1 -1
  492. package/dist/q2-tecton-elements/q2-btn.q2-loading.entry.esm.js.map +1 -1
  493. package/dist/q2-tecton-elements/q2-btn_2.entry.js +30 -21
  494. package/dist/q2-tecton-elements/q2-btn_2.entry.js.map +1 -1
  495. package/dist/q2-tecton-elements/q2-calendar.entry.esm.js.map +1 -1
  496. package/dist/q2-tecton-elements/q2-calendar.entry.js +4 -4
  497. package/dist/q2-tecton-elements/q2-calendar.entry.js.map +1 -1
  498. package/dist/q2-tecton-elements/q2-card-image.entry.js +3 -3
  499. package/dist/q2-tecton-elements/q2-card.entry.js +1 -1
  500. package/dist/q2-tecton-elements/q2-carousel-pane.entry.esm.js.map +1 -1
  501. package/dist/q2-tecton-elements/q2-carousel-pane.entry.js +17 -17
  502. package/dist/q2-tecton-elements/q2-carousel-pane.entry.js.map +1 -1
  503. package/dist/q2-tecton-elements/q2-carousel.entry.esm.js.map +1 -1
  504. package/dist/q2-tecton-elements/q2-carousel.entry.js +269 -242
  505. package/dist/q2-tecton-elements/q2-carousel.entry.js.map +1 -1
  506. package/dist/q2-tecton-elements/q2-chart-area.entry.esm.js.map +1 -1
  507. package/dist/q2-tecton-elements/q2-chart-area.entry.js +6 -5
  508. package/dist/q2-tecton-elements/q2-chart-area.entry.js.map +1 -1
  509. package/dist/q2-tecton-elements/q2-chart-bar.entry.esm.js.map +1 -1
  510. package/dist/q2-tecton-elements/q2-chart-bar.entry.js +4 -3
  511. package/dist/q2-tecton-elements/q2-chart-bar.entry.js.map +1 -1
  512. package/dist/q2-tecton-elements/q2-chart-donut.entry.esm.js.map +1 -1
  513. package/dist/q2-tecton-elements/q2-chart-donut.entry.js +13 -11
  514. package/dist/q2-tecton-elements/q2-chart-donut.entry.js.map +1 -1
  515. package/dist/q2-tecton-elements/q2-checkbox-group.entry.esm.js.map +1 -1
  516. package/dist/q2-tecton-elements/q2-checkbox-group.entry.js +8 -8
  517. package/dist/q2-tecton-elements/q2-checkbox-group.entry.js.map +1 -1
  518. package/dist/q2-tecton-elements/q2-checkbox.q2-tag.entry.esm.js.map +1 -0
  519. package/dist/q2-tecton-elements/q2-checkbox_2.entry.js +482 -0
  520. package/dist/q2-tecton-elements/q2-checkbox_2.entry.js.map +1 -0
  521. package/dist/q2-tecton-elements/q2-context.entry.js +16 -16
  522. package/dist/q2-tecton-elements/q2-currency.entry.js +8 -8
  523. package/dist/q2-tecton-elements/q2-data-table.entry.esm.js.map +1 -1
  524. package/dist/q2-tecton-elements/q2-data-table.entry.js +26 -28
  525. package/dist/q2-tecton-elements/q2-data-table.entry.js.map +1 -1
  526. package/dist/q2-tecton-elements/q2-detail.entry.js +4 -4
  527. package/dist/q2-tecton-elements/q2-dropdown-item.entry.js +1 -1
  528. package/dist/q2-tecton-elements/q2-dropdown.entry.js +79 -79
  529. package/dist/q2-tecton-elements/q2-editable-field.entry.esm.js.map +1 -1
  530. package/dist/q2-tecton-elements/q2-editable-field.entry.js +2 -2
  531. package/dist/q2-tecton-elements/q2-editable-field.entry.js.map +1 -1
  532. package/dist/q2-tecton-elements/q2-example.entry.js +1 -1
  533. package/dist/q2-tecton-elements/q2-file-picker.entry.esm.js.map +1 -1
  534. package/dist/q2-tecton-elements/q2-file-picker.entry.js +1 -1
  535. package/dist/q2-tecton-elements/q2-file-picker.entry.js.map +1 -1
  536. package/dist/q2-tecton-elements/q2-form.entry.js +2 -2
  537. package/dist/q2-tecton-elements/q2-formatted-text.entry.js +2 -2
  538. package/dist/q2-tecton-elements/q2-grid-area.entry.js +2 -2
  539. package/dist/q2-tecton-elements/q2-grid.entry.js +3 -3
  540. package/dist/q2-tecton-elements/q2-icon.entry.esm.js.map +1 -1
  541. package/dist/q2-tecton-elements/q2-icon.entry.js +122 -111
  542. package/dist/q2-tecton-elements/q2-icon.entry.js.map +1 -1
  543. package/dist/q2-tecton-elements/q2-input.entry.esm.js.map +1 -1
  544. package/dist/q2-tecton-elements/q2-input.entry.js +7 -7
  545. package/dist/q2-tecton-elements/q2-input.entry.js.map +1 -1
  546. package/dist/q2-tecton-elements/q2-item.entry.esm.js.map +1 -1
  547. package/dist/q2-tecton-elements/q2-item.entry.js +40 -40
  548. package/dist/q2-tecton-elements/q2-item.entry.js.map +1 -1
  549. package/dist/q2-tecton-elements/q2-legend.entry.esm.js.map +1 -1
  550. package/dist/q2-tecton-elements/q2-legend.entry.js +3 -3
  551. package/dist/q2-tecton-elements/q2-legend.entry.js.map +1 -1
  552. package/dist/q2-tecton-elements/q2-link.q2-list.entry.esm.js.map +1 -1
  553. package/dist/q2-tecton-elements/q2-link_2.entry.js +24 -18
  554. package/dist/q2-tecton-elements/q2-link_2.entry.js.map +1 -1
  555. package/dist/q2-tecton-elements/q2-loc.entry.js +1 -1
  556. package/dist/q2-tecton-elements/q2-message.entry.esm.js.map +1 -1
  557. package/dist/q2-tecton-elements/q2-message.entry.js +29 -25
  558. package/dist/q2-tecton-elements/q2-message.entry.js.map +1 -1
  559. package/dist/q2-tecton-elements/q2-meter.entry.js +14 -14
  560. package/dist/q2-tecton-elements/q2-modal.entry.esm.js.map +1 -1
  561. package/dist/q2-tecton-elements/q2-modal.entry.js +65 -79
  562. package/dist/q2-tecton-elements/q2-modal.entry.js.map +1 -1
  563. package/dist/q2-tecton-elements/q2-month-picker.entry.js +30 -30
  564. package/dist/q2-tecton-elements/q2-mutation-observer.entry.js +1 -1
  565. package/dist/q2-tecton-elements/q2-optgroup.entry.js +5 -5
  566. package/dist/q2-tecton-elements/q2-option.entry.js +1 -1
  567. package/dist/q2-tecton-elements/q2-pagination.entry.esm.js.map +1 -1
  568. package/dist/q2-tecton-elements/q2-pagination.entry.js +43 -32
  569. package/dist/q2-tecton-elements/q2-pagination.entry.js.map +1 -1
  570. package/dist/q2-tecton-elements/q2-pill.entry.esm.js.map +1 -1
  571. package/dist/q2-tecton-elements/q2-pill.entry.js +40 -40
  572. package/dist/q2-tecton-elements/q2-pill.entry.js.map +1 -1
  573. package/dist/q2-tecton-elements/q2-radio-group.entry.esm.js.map +1 -1
  574. package/dist/q2-tecton-elements/q2-radio-group.entry.js +8 -8
  575. package/dist/q2-tecton-elements/q2-radio-group.entry.js.map +1 -1
  576. package/dist/q2-tecton-elements/q2-radio.entry.esm.js.map +1 -1
  577. package/dist/q2-tecton-elements/q2-radio.entry.js +23 -23
  578. package/dist/q2-tecton-elements/q2-radio.entry.js.map +1 -1
  579. package/dist/q2-tecton-elements/q2-relative-time.entry.js +2 -2
  580. package/dist/q2-tecton-elements/q2-section.entry.js +12 -12
  581. package/dist/q2-tecton-elements/q2-select.entry.esm.js.map +1 -1
  582. package/dist/q2-tecton-elements/q2-select.entry.js +21 -8
  583. package/dist/q2-tecton-elements/q2-select.entry.js.map +1 -1
  584. package/dist/q2-tecton-elements/q2-stepper-pane.entry.esm.js.map +1 -1
  585. package/dist/q2-tecton-elements/q2-stepper-pane.entry.js +16 -15
  586. package/dist/q2-tecton-elements/q2-stepper-pane.entry.js.map +1 -1
  587. package/dist/q2-tecton-elements/q2-stepper-vertical.entry.esm.js.map +1 -1
  588. package/dist/q2-tecton-elements/q2-stepper-vertical.entry.js +73 -67
  589. package/dist/q2-tecton-elements/q2-stepper-vertical.entry.js.map +1 -1
  590. package/dist/q2-tecton-elements/q2-stepper.entry.esm.js.map +1 -1
  591. package/dist/q2-tecton-elements/q2-stepper.entry.js +38 -36
  592. package/dist/q2-tecton-elements/q2-stepper.entry.js.map +1 -1
  593. package/dist/q2-tecton-elements/q2-tab-container.entry.esm.js.map +1 -1
  594. package/dist/q2-tecton-elements/q2-tab-container.entry.js +19 -19
  595. package/dist/q2-tecton-elements/q2-tab-container.entry.js.map +1 -1
  596. package/dist/q2-tecton-elements/q2-tab-pane.entry.js +2 -2
  597. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
  598. package/dist/q2-tecton-elements/q2-textarea.entry.esm.js.map +1 -1
  599. package/dist/q2-tecton-elements/q2-textarea.entry.js +4 -4
  600. package/dist/q2-tecton-elements/q2-textarea.entry.js.map +1 -1
  601. package/dist/q2-tecton-elements/q2-toast.entry.js +1 -1
  602. package/dist/q2-tecton-elements/q2-tooltip.entry.esm.js.map +1 -1
  603. package/dist/q2-tecton-elements/q2-tooltip.entry.js +41 -5
  604. package/dist/q2-tecton-elements/q2-tooltip.entry.js.map +1 -1
  605. package/dist/q2-tecton-elements/{sanitize-html-string-BPwFpYg-.js → sanitize-html-string-B35VmRc9.js} +118 -109
  606. package/dist/q2-tecton-elements/sanitize-html-string-B35VmRc9.js.map +1 -0
  607. package/dist/q2-tecton-elements/tecton-tab-pane.entry.js +6 -6
  608. package/dist/scripts/docs-generator/index.js +1 -1
  609. package/dist/scripts/docs-generator/index.js.map +1 -1
  610. package/dist/types/__mocks__/echarts.d.ts +16 -0
  611. package/dist/types/components/q2-avatar/q2-avatar.d.ts +9 -0
  612. package/dist/types/components/q2-btn/q2-btn.d.ts +6 -0
  613. package/dist/types/components/q2-calendar/q2-calendar-helpers.d.ts +3 -3
  614. package/dist/types/components/q2-calendar/q2-calendar-types.d.ts +2 -2
  615. package/dist/types/components/q2-calendar/q2-calendar-validation.d.ts +5 -5
  616. package/dist/types/components/q2-calendar/q2-calendar.d.ts +8 -8
  617. package/dist/types/components/q2-carousel/q2-carousel.d.ts +6 -0
  618. package/dist/types/components/q2-chart-area/q2-chart-area.d.ts +4 -4
  619. package/dist/types/components/q2-chart-bar/q2-chart-bar.d.ts +3 -3
  620. package/dist/types/components/q2-chart-donut/q2-chart-donut.d.ts +9 -9
  621. package/dist/types/components/q2-checkbox/q2-checkbox.d.ts +11 -0
  622. package/dist/types/components/q2-data-table/q2-data-table.d.ts +8 -41
  623. package/dist/types/components/q2-editable-field/q2-editable-field.d.ts +4 -4
  624. package/dist/types/components/q2-file-picker/q2-file-picker.d.ts +1 -13
  625. package/dist/types/components/q2-input/formatting/alpha.d.ts +1 -1
  626. package/dist/types/components/q2-input/formatting/alphanumeric.d.ts +1 -1
  627. package/dist/types/components/q2-input/formatting/cif.d.ts +1 -1
  628. package/dist/types/components/q2-input/formatting/clabe.d.ts +1 -1
  629. package/dist/types/components/q2-input/formatting/credit-card.d.ts +2 -2
  630. package/dist/types/components/q2-input/formatting/currency.d.ts +2 -2
  631. package/dist/types/components/q2-input/formatting/generic.d.ts +2 -2
  632. package/dist/types/components/q2-input/formatting/iban.d.ts +1 -1
  633. package/dist/types/components/q2-input/formatting/number.d.ts +3 -2
  634. package/dist/types/components/q2-input/formatting/numeric.d.ts +2 -2
  635. package/dist/types/components/q2-input/formatting/phone.d.ts +2 -2
  636. package/dist/types/components/q2-input/formatting/postal.d.ts +1 -1
  637. package/dist/types/components/q2-input/formatting/routingnumber.d.ts +1 -1
  638. package/dist/types/components/q2-input/formatting/ssn.d.ts +1 -1
  639. package/dist/types/components/q2-input/formatting/swift.d.ts +1 -1
  640. package/dist/types/components/q2-input/formatting/tin.d.ts +1 -1
  641. package/dist/types/components/q2-input/q2-input-types.d.ts +2 -22
  642. package/dist/types/components/q2-input/q2-input.d.ts +16 -15
  643. package/dist/types/components/q2-legend/q2-legend.d.ts +11 -11
  644. package/dist/types/components/q2-link/q2-link.d.ts +6 -0
  645. package/dist/types/components/q2-modal/q2-modal.d.ts +0 -17
  646. package/dist/types/components/q2-option-list/q2-option-list.d.ts +4 -4
  647. package/dist/types/components/q2-pagination/q2-pagination.d.ts +2 -0
  648. package/dist/types/components/q2-pill/q2-pill.d.ts +5 -5
  649. package/dist/types/components/q2-popover/q2-popover.d.ts +8 -0
  650. package/dist/types/components/q2-select/q2-select.d.ts +9 -6
  651. package/dist/types/components/q2-stepper-pane/q2-stepper-pane.d.ts +8 -11
  652. package/dist/types/components/q2-stepper-vertical/q2-stepper-vertical.d.ts +10 -7
  653. package/dist/types/components/q2-tooltip/q2-tooltip.d.ts +4 -0
  654. package/dist/types/components.d.ts +148 -118
  655. package/dist/types/global.d.ts +2 -2
  656. package/dist/types/index.d.ts +1 -0
  657. package/dist/types/utils/action-sheet.d.ts +5 -5
  658. package/dist/types/utils/index.d.ts +13 -0
  659. package/package.json +8 -9
  660. package/dist/cjs/click-elsewhere.cjs.entry.js +0 -97
  661. package/dist/cjs/click-elsewhere.cjs.entry.js.map +0 -1
  662. package/dist/cjs/click-elsewhere.entry.cjs.js.map +0 -1
  663. package/dist/cjs/index-DyAq0y0v.js.map +0 -1
  664. package/dist/cjs/q2-checkbox.cjs.entry.js +0 -110
  665. package/dist/cjs/q2-checkbox.cjs.entry.js.map +0 -1
  666. package/dist/cjs/q2-checkbox.entry.cjs.js.map +0 -1
  667. package/dist/cjs/q2-option-list.q2-popover.entry.cjs.js.map +0 -1
  668. package/dist/cjs/q2-option-list_2.cjs.entry.js.map +0 -1
  669. package/dist/cjs/q2-tag.cjs.entry.js +0 -211
  670. package/dist/cjs/q2-tag.cjs.entry.js.map +0 -1
  671. package/dist/cjs/q2-tag.entry.cjs.js.map +0 -1
  672. package/dist/cjs/sanitize-html-string-C2iwHNz5.js.map +0 -1
  673. package/dist/esm/click-elsewhere.entry.js +0 -95
  674. package/dist/esm/click-elsewhere.entry.js.map +0 -1
  675. package/dist/esm/index-B4WYBDS9.js.map +0 -1
  676. package/dist/esm/q2-checkbox.entry.js +0 -108
  677. package/dist/esm/q2-checkbox.entry.js.map +0 -1
  678. package/dist/esm/q2-option-list.q2-popover.entry.js.map +0 -1
  679. package/dist/esm/q2-option-list_2.entry.js.map +0 -1
  680. package/dist/esm/q2-tag.entry.js.map +0 -1
  681. package/dist/esm/sanitize-html-string-BPwFpYg-.js.map +0 -1
  682. package/dist/q2-tecton-elements/click-elsewhere.entry.esm.js.map +0 -1
  683. package/dist/q2-tecton-elements/click-elsewhere.entry.js +0 -94
  684. package/dist/q2-tecton-elements/click-elsewhere.entry.js.map +0 -1
  685. package/dist/q2-tecton-elements/index-B4WYBDS9.js.map +0 -1
  686. package/dist/q2-tecton-elements/q2-checkbox.entry.esm.js.map +0 -1
  687. package/dist/q2-tecton-elements/q2-checkbox.entry.js +0 -228
  688. package/dist/q2-tecton-elements/q2-checkbox.entry.js.map +0 -1
  689. package/dist/q2-tecton-elements/q2-option-list.q2-popover.entry.esm.js.map +0 -1
  690. package/dist/q2-tecton-elements/q2-option-list_2.entry.js.map +0 -1
  691. package/dist/q2-tecton-elements/q2-tag.entry.esm.js.map +0 -1
  692. package/dist/q2-tecton-elements/q2-tag.entry.js +0 -256
  693. package/dist/q2-tecton-elements/q2-tag.entry.js.map +0 -1
  694. package/dist/q2-tecton-elements/sanitize-html-string-BPwFpYg-.js.map +0 -1
@@ -125,14 +125,19 @@ li button {
125
125
  padding: var(--tct-tab-padding, var(--t-tab-padding, var(--tct-scale-2, var(--app-scale-2x, 10px))));
126
126
  color: var(--tct-tab-inactive-color, var(--t-tab-inactive-color, inherit));
127
127
  font-size: var(--tct-tab-font-size, var(--t-tab-font-size, 17px));
128
+ line-height: var(--tct-tab-line-height, 20px);
128
129
  display: block;
129
130
  transition: background var(--t-tween-ease-inout) var(--t-tween-time-in-xxs), color var(--t-tween-ease-inout) var(--t-tween-time-in-xxs), border-color var(--t-tween-ease-inout) var(--t-tween-time-in-xxs);
130
131
  }
131
132
  :host([type=section]) li button {
132
133
  --comp-tab-section-padding: var(--tct-scale-2, var(--app-scale-2x, 10px)) var(--tct-scale-1, var(--app-scale-1x, 5px));
133
- font-size: var(--tct-tab-section-font-size, inherit);
134
+ font-size: var(--tct-tab-section-font-size, 14px);
135
+ line-height: var(--tct-tab-section-line-height, 18px);
134
136
  padding: var(--tct-tab-section-padding, var(--t-tab-section-padding, var(--comp-tab-section-padding)));
135
137
  }
138
+ li button:focus-visible {
139
+ box-shadow: var(--tct-tab-focus-visible-box-shadow, var(--const-double-focus-ring));
140
+ }
136
141
  li button:hover {
137
142
  color: var(--tct-tab-hover-color, var(--t-tab-hover-color, var(--tct-tab-active-color, var(--t-tab-active-color, #2e2e2e))));
138
143
  background: var(--tct-tab-hover-background, var(--tct-tab-hover-bg-color, var(--t-tab-hover-bg-color, inherit)));
@@ -144,6 +149,7 @@ li button[aria-selected=true] {
144
149
  border-style: var(--tct-tab-active-border-style, var(--t-tab-active-border-style, solid));
145
150
  width: var(--tct-tab-active-width, var(--t-tab-active-width, 100%));
146
151
  background: var(--tct-tab-active-background, var(--tct-tab-active-bg-color, var(--t-tab-active-bg-color, inherit)));
152
+ text-decoration: var(--tct-tab-active-text-decoration, none);
147
153
  }
148
154
  :host([color=alt]) li button {
149
155
  color: var(--tct-tab-alt-inactive-color, var(--t-tab-alt-inactive-color, inherit));
@@ -266,7 +266,7 @@ export class Q2TabContainer {
266
266
  return (h("div", { class: "tab-pane-badge", "aria-label": `${tab.label}, ${tab.badgeCount} ${description}` }, tab.label, h("q2-badge", { value: tab.badgeCount, theme: theme, status: tab.badgeStatus })));
267
267
  }
268
268
  render() {
269
- return (h(Fragment, { key: '2181b2505b4d48d9812b61d5414264425ff7f4af' }, h("div", { key: '0901678c9f074277414bf0dfd1b73cb3ec93cd6f', class: "tab-container" }, this.scrollEnabled && (h(Fragment, { key: '3cc265f40d308947e07bb2ca7cf2496bf1f74d44' }, h("div", { key: '8b0606af29da80fb969e94b2708077bf2e4ef7e2', class: "gradient-left", hidden: !this.showScrollLeft }), h("div", { key: '2412d226cf903beae013965e345f0f56ca9991d6', class: "gradient-right", hidden: !this.showScrollRight }), h("q2-btn", { key: 'edf2bf63eebe24832e529178fa185ad27c3a45ba', class: "btn-left", hidden: !this.showScrollLeft, onTctClick: () => this.onScrollBtnClick('left') }, h("q2-icon", { key: '7900b5426d1ec51880fe8c36d33a59873b1be508', type: "chevron-left", label: "scroll left" })), h("q2-btn", { key: '001628dae8b16b4c5aff651c8515cce25d08bbf2', class: "btn-right", hidden: !this.showScrollRight, onTctClick: () => this.onScrollBtnClick('right') }, h("q2-icon", { key: 'f4579ca37dd0e2908e3f68dc60eb923d4a3f314e', type: "chevron-right", label: "scroll right" })))), h("ul", { key: '53efc8ffaaf29dc1dfd9b86ee4105a87350aebfb', onScroll: this.checkScrollState, ref: el => (this.listElement = el), class: this.noPrint ? 'no-print' : null, role: "tablist" }, this.tabs.map((tab, index) => this.renderTab(tab, index)))), h("div", { key: '1e3d76467f667d04a488aacd5a51b641a0acbabc', class: "tab-content" }, h("slot", { key: '4384593fb9579c4187c50eee288517aba22c9ace', onSlotchange: () => this.onSlotChange() }))));
269
+ return (h(Fragment, { key: '1913175c15aecb5bf14cd1dbdc35e9c987fde9d4' }, h("div", { key: '635d91af2197e6ef1078cdc9bd6fcf8d4b135675', class: "tab-container" }, this.scrollEnabled && (h(Fragment, { key: '138d7b25a3644ccf9b14934a06ba515e04770bac' }, h("div", { key: 'a5e723731fb2c42a0c280cc15d7220a64f67b60b', class: "gradient-left", hidden: !this.showScrollLeft }), h("div", { key: 'bd13d0b8412a08277b112473aa4664e287bce7c4', class: "gradient-right", hidden: !this.showScrollRight }), h("q2-btn", { key: '7887ac9fcf831190abc8610cb6271839a662efd2', class: "btn-left", hidden: !this.showScrollLeft, onTctClick: () => this.onScrollBtnClick('left') }, h("q2-icon", { key: 'c7ef1331d91747e4c23f0ecdc48600ae2ca0d2ad', type: "chevron-left", label: "scroll left" })), h("q2-btn", { key: 'a8564bd1e158bef750300112d024933600f7f6ac', class: "btn-right", hidden: !this.showScrollRight, onTctClick: () => this.onScrollBtnClick('right') }, h("q2-icon", { key: '16dfc165369e2cc344d76e817b879d8c02d47b23', type: "chevron-right", label: "scroll right" })))), h("ul", { key: '660241dfc441a2f55328156e23c601061ff89c17', onScroll: this.checkScrollState, ref: el => (this.listElement = el), class: this.noPrint ? 'no-print' : null, role: "tablist" }, this.tabs.map((tab, index) => this.renderTab(tab, index)))), h("div", { key: '54fc457ab57a00bd13eac3ebdb019bd49bbd7a71', class: "tab-content" }, h("slot", { key: '479a982a16116bc5e82e28f171387c07a33bcb9c', onSlotchange: () => this.onSlotChange() }))));
270
270
  }
271
271
  static get is() { return "q2-tab-container"; }
272
272
  static get encapsulation() { return "shadow"; }
@@ -19,7 +19,7 @@ export class Q2TabPane {
19
19
  // #endregion
20
20
  // #region Render Methods
21
21
  render() {
22
- return (h("div", { key: '1f9e5f993a4d548dade126f8acf05e9c958eddc0', id: `tab-pane-${this.guid}-${this.index}`, class: `tab-pane${this.selected ? '' : ' hidden'}`, role: "tabpanel", tabindex: "-1", "aria-hidden": `${!this.selected}`, "aria-labelledby": `tab-${this.guid}-${this.index}` }, h("slot", { key: 'd5eeb1c72d8c416b91851a661d3aa4736d17f16b' })));
22
+ return (h("div", { key: '6550750c490f276b314f5e10cba438aa5f458657', id: `tab-pane-${this.guid}-${this.index}`, class: `tab-pane${this.selected ? '' : ' hidden'}`, role: "tabpanel", tabindex: "-1", "aria-hidden": `${!this.selected}`, "aria-labelledby": `tab-${this.guid}-${this.index}` }, h("slot", { key: 'bc8b8e38e3d2635f61ccc06830c095cc743c235a' })));
23
23
  }
24
24
  static get is() { return "q2-tab-pane"; }
25
25
  static get encapsulation() { return "shadow"; }
@@ -105,6 +105,9 @@ button {
105
105
  --comp-tag-color: var(--tct-tag-tertiary-font-color, var(--t-tertiary-text, #141414));
106
106
  --comp-tag-border-color: var(--tct-tag-tertiary-border-color, var(--t-tertiary, #e8f5fc));
107
107
  }
108
+ .tag-wrapper:focus-visible {
109
+ box-shadow: var(--tct-tag-focus-visible-box-shadow, var(--const-double-focus-ring));
110
+ }
108
111
 
109
112
  .tag {
110
113
  display: flex;
@@ -198,7 +198,7 @@ export class Q2Tag {
198
198
  if (this.optionCount)
199
199
  wrapperClassNames.push('has-options');
200
200
  const shouldShowOptions = this.optionCount > 0;
201
- return (h(Host, { key: '2ce592e9fc8db8d547cad71623270837ec0539d6' }, h("click-elsewhere", { key: 'b0a0ad314e84ccae1e06b197bc6fec8f1c333349', onChange: this.onClickElsewhere }, shouldShowOptions ? (h(Fragment, null, h("div", { class: "btn-wrapper", onClick: this.handleWrapperClick }, h("button", { class: "tag-wrapper", ref: el => (this.dropdownBtn = el), "test-id": "btn-control", type: "button", role: "combobox", onClick: this.handleClick, onKeyDown: this.handleKeydown, onFocusout: this.handleButtonFocusout, "aria-controls": "option-list", "aria-expanded": open ? 'true' : 'false', "aria-describedby": "option-description", "aria-label": loc(this.label) }, h("div", { class: wrapperClassNames.join(' ') }, loc(this.label)), h("q2-icon", { type: "options" }))), this.renderHiddenElement())) : (h("div", { class: "tag-wrapper", onClick: e => e.stopPropagation() }, h("div", { class: wrapperClassNames.join(' ') }, h("slot", { name: "decorator" }), loc(this.label)))), shouldShowOptions && (h("q2-popover", { key: 'd67e1d087a62530ef3c013f070ae522531acd508', ref: el => (this.popoverElement = el), controlElement: this.dropdownBtn, open: this.open, maxHeight: this.popoverMaxHeight, minHeight: this.popoverMinHeight, direction: this.popoverDirection, align: this.popoverAlignment }, h("q2-option-list", { key: '6c2484d7110eeff81dfebef4c05dec99adffe935', id: "option-list", ref: el => (this.optionList = el), onChange: this.handleChange, type: "menu", align: "right", label: loc('tecton.element.optionList.label', [this.optionListLabel]), "no-select": true }, h("slot", { key: 'db0c912240b4e2425c16bce894abb8be42ab67e2' })))))));
201
+ return (h(Host, { key: '664af4451fdb556b1746ec0f1a0a66de86642a7a' }, h("click-elsewhere", { key: '8da25535a510070733d25fa1d63dedfa0865b7ab', onChange: this.onClickElsewhere }, shouldShowOptions ? (h(Fragment, null, h("div", { class: "btn-wrapper", onClick: this.handleWrapperClick }, h("button", { class: "tag-wrapper", ref: el => (this.dropdownBtn = el), "test-id": "btn-control", type: "button", role: "combobox", onClick: this.handleClick, onKeyDown: this.handleKeydown, onFocusout: this.handleButtonFocusout, "aria-controls": "option-list", "aria-expanded": open ? 'true' : 'false', "aria-describedby": "option-description", "aria-label": loc(this.label) }, h("div", { class: wrapperClassNames.join(' ') }, loc(this.label)), h("q2-icon", { type: "options" }))), this.renderHiddenElement())) : (h("div", { class: "tag-wrapper", onClick: e => e.stopPropagation() }, h("div", { class: wrapperClassNames.join(' ') }, h("slot", { name: "decorator" }), loc(this.label)))), shouldShowOptions && (h("q2-popover", { key: '28397ef79ce03d335959ad993a4de4278073a9ba', ref: el => (this.popoverElement = el), controlElement: this.dropdownBtn, open: this.open, maxHeight: this.popoverMaxHeight, minHeight: this.popoverMinHeight, direction: this.popoverDirection, align: this.popoverAlignment }, h("q2-option-list", { key: '3379d0003bde9036485c06ff696a2f08fc599451', id: "option-list", ref: el => (this.optionList = el), onChange: this.handleChange, type: "menu", align: "right", label: loc('tecton.element.optionList.label', [this.optionListLabel]), "no-select": true }, h("slot", { key: '1cf6372351972e02563e74ba1e9cc79e261a9a2a' })))))));
202
202
  }
203
203
  static get is() { return "q2-tag"; }
204
204
  static get encapsulation() { return "shadow"; }
@@ -195,6 +195,7 @@ textarea:not([cols]) {
195
195
  backdrop-filter: var(--tct-textarea-error-backdrop-filter, var(--comp-textarea-backdrop-filter));
196
196
  border-color: var(--tct-textarea-error-border-color, var(--t-textarea-error-border-color, var(--const-stoplight-alert, #d20a0a)));
197
197
  background: var(--tct-textarea-error-background, var(--comp-textarea-background));
198
+ box-shadow: var(--tct-textarea-error-box-shadow, var(--tct-textarea-box-shadow, var(--t-textarea-box-shadow, none)));
198
199
  }
199
200
  textarea:hover {
200
201
  border-color: var(--tct-textarea-hover-border-color, var(--comp-textarea-border-color));
@@ -277,7 +277,7 @@ export class Q2Textarea {
277
277
  ]))));
278
278
  }
279
279
  render() {
280
- return (h("div", { key: 'a9b5fe04a27d30b849855d25b4ab470a6670827a', class: this.wrapperClasses }, renderLabel(this), h("div", { key: '73bb18321f257624ca7563572cee97d4d77a2879', class: "content-container", ref: el => (this.contentContainer = el) }, this.renderInput(), this.maxlength ? this.renderMaxLength() : '', renderMessages(this))));
280
+ return (h("div", { key: '1a53c8b1528031f5ccb957f2a2320f7a8a8f4607', class: this.wrapperClasses }, renderLabel(this), h("div", { key: '1de221d01fd339d749b557d408acabdc06c07ecc', class: "content-container", ref: el => (this.contentContainer = el) }, this.renderInput(), this.maxlength ? this.renderMaxLength() : '', renderMessages(this))));
281
281
  }
282
282
  static get is() { return "q2-textarea"; }
283
283
  static get encapsulation() { return "shadow"; }
@@ -118,7 +118,7 @@ button {
118
118
  word-wrap: break-word;
119
119
  white-space: pre;
120
120
  pointer-events: none;
121
- content: attr(aria-label);
121
+ content: attr(data-label);
122
122
  background: var(--comp-background);
123
123
  border-radius: var(--tct-tooltip-border-radius, var(--t-tooltip-border-radius, var(--app-border-radius-1, 4px)));
124
124
  }
@@ -20,8 +20,12 @@ export class Q2Tooltip {
20
20
  }
21
21
  // #endregion
22
22
  // #region Component Lifecycle Events
23
+ disconnectedCallback() {
24
+ this.clearTooltipOnChildren();
25
+ }
23
26
  componentDidLoad() {
24
27
  overrideFocus(this.hostElement);
28
+ this.propagateTooltip();
25
29
  if (this.persistent)
26
30
  this.adjustSide();
27
31
  }
@@ -62,6 +66,11 @@ export class Q2Tooltip {
62
66
  this.adjustSide();
63
67
  }
64
68
  // #endregion
69
+ // #region Watchers
70
+ labelChanged() {
71
+ this.propagateTooltip();
72
+ }
73
+ // #endregion
65
74
  // #region Local Methods
66
75
  get shouldBeVisible() {
67
76
  if (this.persistent)
@@ -120,6 +129,14 @@ export class Q2Tooltip {
120
129
  if (isKeyboardFocus)
121
130
  return;
122
131
  }
132
+ clearTooltipOnChildren() {
133
+ const children = Array.from(this.hostElement.children);
134
+ for (const child of children) {
135
+ if ('_tooltip' in child) {
136
+ child._tooltip = undefined;
137
+ }
138
+ }
139
+ }
123
140
  findFocusVisibleElement(element) {
124
141
  if (!element)
125
142
  return;
@@ -133,6 +150,16 @@ export class Q2Tooltip {
133
150
  else
134
151
  this.focusClass = null;
135
152
  }
153
+ propagateTooltip() {
154
+ if (this.focusable)
155
+ return;
156
+ const children = Array.from(this.hostElement.children);
157
+ for (const child of children) {
158
+ if ('_tooltip' in child) {
159
+ child._tooltip = this.label || undefined;
160
+ }
161
+ }
162
+ }
136
163
  // #endregion
137
164
  // #region Render Methods
138
165
  render() {
@@ -142,7 +169,7 @@ export class Q2Tooltip {
142
169
  classes.push(focusClass);
143
170
  if (this.persistOnHoverDismissed)
144
171
  classes.push('dismissed');
145
- return this.label ? (h("div", { tabindex: this.focusable ? 0 : undefined, ref: el => (this.tooltipElement = el), class: classes.join(' '), "aria-label": this.label, onAnimationEnd: () => this.animationEndHandler(), role: "tooltip", "test-id": "tooltipContainer" }, h("slot", null))) : (h("slot", null));
172
+ return this.label ? (h("div", { tabindex: this.focusable ? 0 : undefined, ref: el => (this.tooltipElement = el), class: classes.join(' '), "aria-label": this.focusable ? this.label : undefined, "data-label": this.label, onAnimationEnd: () => this.animationEndHandler(), role: this.focusable ? 'tooltip' : undefined, "test-id": "tooltipContainer" }, h("slot", { onSlotchange: () => this.propagateTooltip() }))) : (h("slot", { onSlotchange: () => this.propagateTooltip() }));
146
173
  }
147
174
  static get is() { return "q2-tooltip"; }
148
175
  static get encapsulation() { return "shadow"; }
@@ -324,6 +351,12 @@ export class Q2Tooltip {
324
351
  };
325
352
  }
326
353
  static get elementRef() { return "hostElement"; }
354
+ static get watchers() {
355
+ return [{
356
+ "propName": "label",
357
+ "methodName": "labelChanged"
358
+ }];
359
+ }
327
360
  static get listeners() {
328
361
  return [{
329
362
  "name": "focus",
@@ -1 +1 @@
1
- {"version":3,"file":"q2-tooltip.js","sourceRoot":"","sources":["../../../../src/components/q2-tooltip/q2-tooltip.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Prop, h, ComponentInterface, Element, Listen, State } from '@stencil/core';\nimport { isEventFromElement, overrideFocus } from 'src/utils';\n\n/**\n * @name Tooltip\n * @category Feedback\n * @summary Use for brief hints or explanations shown on hover or focus.\n */\n@Component({ tag: 'q2-tooltip', shadow: true, styleUrl: 'q2-tooltip.scss' })\nexport class Q2Tooltip implements ComponentInterface {\n // #region Own Properties\n\n animationEndCount = 0;\n tooltipElement: HTMLDivElement;\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 focusClass: 'has-keyboard-focus' | 'has-generic-focus' | 'has-generic-focus-out';\n\n @State()\n persistOnHoverDismissed: boolean;\n\n // #endregion\n // #region Public Property API\n\n /** Displays the element as a block, making it take up the full width of its container. */\n @Prop({ reflect: true })\n block: boolean;\n\n /**\n * Makes the component focusable, thereby putting it in the tab order of the keyboard.\n * @warning\n * This is only meant to be used when the `q2-tooltip` is wrapped around an element that is not focusable (e.g., icons, static text, badges, etc.).\n */\n @Prop({ reflect: true })\n focusable: boolean = false;\n\n /** Whether to show the tooltip immediately upon hover. */\n @Prop({ reflect: true })\n immediate: boolean;\n\n /** text that is displayed when the tooltip is activated. */\n @Prop({ reflect: true })\n label: string;\n\n /** Enables the use of multi-line tooltips with a default `max-width` of `200px`. */\n @Prop({ reflect: true })\n multiline: boolean;\n\n /** Displays the tooltip persistently. */\n @Prop({ reflect: true })\n persistent: boolean;\n\n /**\n * Allows the tooltip bubble itself to be hovered.\n * When enabled, the tooltip remains visible while moving between the trigger and the tooltip bubble.\n */\n @Prop({ reflect: true })\n persistOnHover: boolean;\n\n /** The position of the tooltip based on [cardinal and intercardinal directions](https://en.wikipedia.org/wiki/Cardinal_direction). */\n @Prop({ reflect: true })\n position: 'n' | 's' | 'e' | 'w' | 'nw' | 'ne' | 'sw' | 'se' = 'n';\n\n // #endregion\n // #region Component Lifecycle Events\n\n componentDidLoad(): void {\n overrideFocus(this.hostElement);\n if (this.persistent) this.adjustSide();\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('focus', { capture: true })\n focusCaptureHandler() {\n this.checkFocusClass();\n }\n\n @Listen('focus')\n focusHandler(event) {\n if (!isEventFromElement(event, this.hostElement)) return;\n if (!this.focusable) return;\n this.tooltipElement.focus();\n }\n\n @Listen('focusout')\n focusOutHandler() {\n if (this.shouldBeVisible) return;\n if (this.focusClass === 'has-generic-focus') this.focusClass = 'has-generic-focus-out';\n else this.focusClass = null;\n }\n\n // Escape must be handled on `document` so it still dismisses when the tooltip is visible by hover only and focus is not inside the tooltip host.\n @Listen('keydown', { target: 'document' })\n keyDownDocumentHandler(event: KeyboardEvent) {\n if (!['Esc', 'Escape'].includes(event.key)) return;\n if (!this.shouldBeVisible) return;\n if (this.persistOnHover) this.persistOnHoverDismissed = true;\n this.hideTooltip();\n }\n\n @Listen('mouseenter')\n mouseEnterHandler() {\n this.persistOnHoverDismissed = false;\n }\n\n @Listen('mouseover')\n @Listen('mouseclick')\n handleMouseOver() {\n this.adjustSide();\n }\n\n // #endregion\n // #region Local Methods\n\n get shouldBeVisible() {\n if (this.persistent) return true;\n return this.hostElement.matches(':hover, :focus-within') && !this.persistOnHoverDismissed;\n }\n\n adjustSide() {\n const { left: hostLeft, right: hostRight, width: hostWidth } = this.hostElement.getBoundingClientRect();\n if (!hostLeft || !hostWidth) return;\n\n const { width, paddingLeft, paddingRight } = window.getComputedStyle(this.tooltipElement, '::after');\n\n const tooltipWidth =\n Number(width.replace(/[px]/g, '')) +\n Number(paddingLeft.replace(/[px]/g, '')) +\n Number(paddingRight.replace(/[px]/g, ''));\n const extraMargin = ['se', 'sw', 'ne', 'nw'].includes(this.position) ? 0 : 15;\n\n const distanceLeft = hostLeft + hostWidth / 2;\n const distanceRight = window.innerWidth - hostRight + +hostWidth / 2;\n\n if (['ne', 'se'].includes(this.position)) {\n if (tooltipWidth > distanceRight) {\n this.tooltipElement.style.setProperty(\n '--comp-offset-translate',\n `-${Math.round(tooltipWidth - distanceRight + extraMargin)}px`\n );\n }\n } else if (['nw', 'sw'].includes(this.position)) {\n if (tooltipWidth > distanceLeft) {\n this.tooltipElement.style.setProperty(\n '--comp-offset-translate',\n `${Math.round(tooltipWidth - distanceLeft + extraMargin)}px`\n );\n }\n } else if (['n', 's'].includes(this.position)) {\n if (tooltipWidth / 2 > distanceLeft) {\n this.tooltipElement.style.setProperty(\n '--comp-offset-translate',\n `${Math.round(tooltipWidth / 2 - distanceLeft + extraMargin)}px`\n );\n } else if (tooltipWidth / 2 > distanceRight) {\n this.tooltipElement.style.setProperty(\n '--comp-offset-translate',\n `-${Math.round(tooltipWidth / 2 - distanceRight + extraMargin)}px`\n );\n } else {\n this.tooltipElement.style.setProperty('--comp-offset-translate', `0px`);\n }\n }\n }\n\n animationEndHandler() {\n this.animationEndCount = this.animationEndCount + 1;\n const { focusClass, animationEndCount } = this;\n\n // animationEnd is fired once for :before and once for :after pseudo elements\n // there are multiple animations defined for .has-generic-focus\n // so we need to wait for all of them to finish before we can remove the class\n if (focusClass === 'has-generic-focus-out' || (focusClass === 'has-generic-focus' && animationEndCount === 4)) {\n this.focusClass = null;\n this.animationEndCount = 0;\n }\n }\n\n checkFocusClass() {\n if (!this.shouldBeVisible) return;\n const isKeyboardFocus = !!this.findFocusVisibleElement(document.activeElement);\n this.focusClass = isKeyboardFocus ? 'has-keyboard-focus' : 'has-generic-focus';\n if (isKeyboardFocus) return;\n }\n\n findFocusVisibleElement(element: Element) {\n if (!element) return;\n if (element.shadowRoot) element = this.findFocusVisibleElement(element.shadowRoot.activeElement);\n return element?.matches(':focus-visible') ? element : null;\n }\n\n hideTooltip() {\n if (this.focusClass === 'has-generic-focus') this.focusClass = 'has-generic-focus-out';\n else this.focusClass = null;\n }\n\n // #endregion\n // #region Render Methods\n\n render() {\n const { focusClass } = this;\n const classes = ['tooltip'];\n if (focusClass) classes.push(focusClass);\n if (this.persistOnHoverDismissed) classes.push('dismissed');\n\n return this.label ? (\n <div\n tabindex={this.focusable ? 0 : undefined}\n ref={el => (this.tooltipElement = el)}\n class={classes.join(' ')}\n aria-label={this.label}\n onAnimationEnd={() => this.animationEndHandler()}\n role=\"tooltip\"\n test-id=\"tooltipContainer\"\n >\n <slot />\n </div>\n ) : (\n <slot />\n );\n }\n\n // #endregion\n}\n"]}
1
+ {"version":3,"file":"q2-tooltip.js","sourceRoot":"","sources":["../../../../src/components/q2-tooltip/q2-tooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAsB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtG,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE9D;;;;GAIG;AAEH,MAAM,OAAO,SAAS;IADtB;QAEI,yBAAyB;QAEzB,sBAAiB,GAAG,CAAC,CAAC;QAyBtB;;;;WAIG;QAEH,cAAS,GAAY,KAAK,CAAC;QAyB3B,sIAAsI;QAEtI,aAAQ,GAAsD,GAAG,CAAC;KAqMrE;IAnMG,aAAa;IACb,qCAAqC;IAErC,oBAAoB;QAChB,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAClC,CAAC;IAED,gBAAgB;QACZ,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAChC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,UAAU;YAAE,IAAI,CAAC,UAAU,EAAE,CAAC;IAC3C,CAAC;IAED,aAAa;IACb,oBAAoB;IAGpB,mBAAmB;QACf,IAAI,CAAC,eAAe,EAAE,CAAC;IAC3B,CAAC;IAGD,YAAY,CAAC,KAAK;QACd,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC;YAAE,OAAO;QACzD,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO;QAC5B,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;IAChC,CAAC;IAGD,eAAe;QACX,IAAI,IAAI,CAAC,eAAe;YAAE,OAAO;QACjC,IAAI,IAAI,CAAC,UAAU,KAAK,mBAAmB;YAAE,IAAI,CAAC,UAAU,GAAG,uBAAuB,CAAC;;YAClF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IAChC,CAAC;IAED,iJAAiJ;IAEjJ,sBAAsB,CAAC,KAAoB;QACvC,IAAI,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;YAAE,OAAO;QACnD,IAAI,CAAC,IAAI,CAAC,eAAe;YAAE,OAAO;QAClC,IAAI,IAAI,CAAC,cAAc;YAAE,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;QAC7D,IAAI,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC;IAGD,iBAAiB;QACb,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;IACzC,CAAC;IAID,eAAe;QACX,IAAI,CAAC,UAAU,EAAE,CAAC;IACtB,CAAC;IAED,aAAa;IACb,mBAAmB;IAGnB,YAAY;QACR,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC5B,CAAC;IAED,aAAa;IACb,wBAAwB;IAExB,IAAI,eAAe;QACf,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC;QACjC,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC;IAC9F,CAAC;IAED,UAAU;QACN,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,qBAAqB,EAAE,CAAC;QACxG,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS;YAAE,OAAO;QAEpC,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;QAErG,MAAM,YAAY,GACd,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAClC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACxC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;QAC9C,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAE9E,MAAM,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,CAAC,CAAC;QAC9C,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,GAAG,SAAS,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;QAErE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvC,IAAI,YAAY,GAAG,aAAa,EAAE,CAAC;gBAC/B,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,CACjC,yBAAyB,EACzB,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,aAAa,GAAG,WAAW,CAAC,IAAI,CACjE,CAAC;YACN,CAAC;QACL,CAAC;aAAM,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9C,IAAI,YAAY,GAAG,YAAY,EAAE,CAAC;gBAC9B,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,CACjC,yBAAyB,EACzB,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,YAAY,GAAG,WAAW,CAAC,IAAI,CAC/D,CAAC;YACN,CAAC;QACL,CAAC;aAAM,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5C,IAAI,YAAY,GAAG,CAAC,GAAG,YAAY,EAAE,CAAC;gBAClC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,CACjC,yBAAyB,EACzB,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,GAAG,YAAY,GAAG,WAAW,CAAC,IAAI,CACnE,CAAC;YACN,CAAC;iBAAM,IAAI,YAAY,GAAG,CAAC,GAAG,aAAa,EAAE,CAAC;gBAC1C,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,CACjC,yBAAyB,EACzB,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,GAAG,aAAa,GAAG,WAAW,CAAC,IAAI,CACrE,CAAC;YACN,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;YAC5E,CAAC;QACL,CAAC;IACL,CAAC;IAED,mBAAmB;QACf,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;QACpD,MAAM,EAAE,UAAU,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC;QAE/C,6EAA6E;QAC7E,+DAA+D;QAC/D,8EAA8E;QAC9E,IAAI,UAAU,KAAK,uBAAuB,IAAI,CAAC,UAAU,KAAK,mBAAmB,IAAI,iBAAiB,KAAK,CAAC,CAAC,EAAE,CAAC;YAC5G,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAC/B,CAAC;IACL,CAAC;IAED,eAAe;QACX,IAAI,CAAC,IAAI,CAAC,eAAe;YAAE,OAAO;QAClC,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAC/E,IAAI,CAAC,UAAU,GAAG,eAAe,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,mBAAmB,CAAC;QAC/E,IAAI,eAAe;YAAE,OAAO;IAChC,CAAC;IAED,sBAAsB;QAClB,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACvD,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;YAC3B,IAAI,UAAU,IAAI,KAAK,EAAE,CAAC;gBACrB,KAA4C,CAAC,QAAQ,GAAG,SAAS,CAAC;YACvE,CAAC;QACL,CAAC;IACL,CAAC;IAED,uBAAuB,CAAC,OAAgB;QACpC,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,IAAI,OAAO,CAAC,UAAU;YAAE,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QACjG,OAAO,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,CAAC,gBAAgB,CAAC,EAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/D,CAAC;IAED,WAAW;QACP,IAAI,IAAI,CAAC,UAAU,KAAK,mBAAmB;YAAE,IAAI,CAAC,UAAU,GAAG,uBAAuB,CAAC;;YAClF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IAChC,CAAC;IAED,gBAAgB;QACZ,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO;QAC3B,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACvD,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;YAC3B,IAAI,UAAU,IAAI,KAAK,EAAE,CAAC;gBACrB,KAA4C,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC;YACrF,CAAC;QACL,CAAC;IACL,CAAC;IAED,aAAa;IACb,yBAAyB;IAEzB,MAAM;QACF,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QAC5B,MAAM,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC;QAC5B,IAAI,UAAU;YAAE,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzC,IAAI,IAAI,CAAC,uBAAuB;YAAE,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE5D,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAChB,WACI,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EACxC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC,EACrC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,gBACZ,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,gBACvC,IAAI,CAAC,KAAK,EACtB,cAAc,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAChD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,aACpC,kBAAkB;YAE1B,YAAM,YAAY,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAI,CACnD,CACT,CAAC,CAAC,CAAC,CACA,YAAM,YAAY,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAI,CACxD,CAAC;IACN,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGJ","sourcesContent":["import { Component, Prop, h, ComponentInterface, Element, Listen, State, Watch } from '@stencil/core';\nimport { isEventFromElement, overrideFocus } from 'src/utils';\n\n/**\n * @name Tooltip\n * @category Feedback\n * @summary Use for brief hints or explanations shown on hover or focus.\n */\n@Component({ tag: 'q2-tooltip', shadow: true, styleUrl: 'q2-tooltip.scss' })\nexport class Q2Tooltip implements ComponentInterface {\n // #region Own Properties\n\n animationEndCount = 0;\n tooltipElement: HTMLDivElement;\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 focusClass: 'has-keyboard-focus' | 'has-generic-focus' | 'has-generic-focus-out';\n\n @State()\n persistOnHoverDismissed: boolean;\n\n // #endregion\n // #region Public Property API\n\n /** Displays the element as a block, making it take up the full width of its container. */\n @Prop({ reflect: true })\n block: boolean;\n\n /**\n * Makes the component focusable, thereby putting it in the tab order of the keyboard.\n * @warning\n * This is only meant to be used when the `q2-tooltip` is wrapped around an element that is not focusable (e.g., icons, static text, badges, etc.).\n */\n @Prop({ reflect: true })\n focusable: boolean = false;\n\n /** Whether to show the tooltip immediately upon hover. */\n @Prop({ reflect: true })\n immediate: boolean;\n\n /** text that is displayed when the tooltip is activated. */\n @Prop({ reflect: true })\n label: string;\n\n /** Enables the use of multi-line tooltips with a default `max-width` of `200px`. */\n @Prop({ reflect: true })\n multiline: boolean;\n\n /** Displays the tooltip persistently. */\n @Prop({ reflect: true })\n persistent: boolean;\n\n /**\n * Allows the tooltip bubble itself to be hovered.\n * When enabled, the tooltip remains visible while moving between the trigger and the tooltip bubble.\n */\n @Prop({ reflect: true })\n persistOnHover: boolean;\n\n /** The position of the tooltip based on [cardinal and intercardinal directions](https://en.wikipedia.org/wiki/Cardinal_direction). */\n @Prop({ reflect: true })\n position: 'n' | 's' | 'e' | 'w' | 'nw' | 'ne' | 'sw' | 'se' = 'n';\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback(): void {\n this.clearTooltipOnChildren();\n }\n\n componentDidLoad(): void {\n overrideFocus(this.hostElement);\n this.propagateTooltip();\n if (this.persistent) this.adjustSide();\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('focus', { capture: true })\n focusCaptureHandler() {\n this.checkFocusClass();\n }\n\n @Listen('focus')\n focusHandler(event) {\n if (!isEventFromElement(event, this.hostElement)) return;\n if (!this.focusable) return;\n this.tooltipElement.focus();\n }\n\n @Listen('focusout')\n focusOutHandler() {\n if (this.shouldBeVisible) return;\n if (this.focusClass === 'has-generic-focus') this.focusClass = 'has-generic-focus-out';\n else this.focusClass = null;\n }\n\n // Escape must be handled on `document` so it still dismisses when the tooltip is visible by hover only and focus is not inside the tooltip host.\n @Listen('keydown', { target: 'document' })\n keyDownDocumentHandler(event: KeyboardEvent) {\n if (!['Esc', 'Escape'].includes(event.key)) return;\n if (!this.shouldBeVisible) return;\n if (this.persistOnHover) this.persistOnHoverDismissed = true;\n this.hideTooltip();\n }\n\n @Listen('mouseenter')\n mouseEnterHandler() {\n this.persistOnHoverDismissed = false;\n }\n\n @Listen('mouseover')\n @Listen('mouseclick')\n handleMouseOver() {\n this.adjustSide();\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('label')\n labelChanged() {\n this.propagateTooltip();\n }\n\n // #endregion\n // #region Local Methods\n\n get shouldBeVisible() {\n if (this.persistent) return true;\n return this.hostElement.matches(':hover, :focus-within') && !this.persistOnHoverDismissed;\n }\n\n adjustSide() {\n const { left: hostLeft, right: hostRight, width: hostWidth } = this.hostElement.getBoundingClientRect();\n if (!hostLeft || !hostWidth) return;\n\n const { width, paddingLeft, paddingRight } = window.getComputedStyle(this.tooltipElement, '::after');\n\n const tooltipWidth =\n Number(width.replace(/[px]/g, '')) +\n Number(paddingLeft.replace(/[px]/g, '')) +\n Number(paddingRight.replace(/[px]/g, ''));\n const extraMargin = ['se', 'sw', 'ne', 'nw'].includes(this.position) ? 0 : 15;\n\n const distanceLeft = hostLeft + hostWidth / 2;\n const distanceRight = window.innerWidth - hostRight + +hostWidth / 2;\n\n if (['ne', 'se'].includes(this.position)) {\n if (tooltipWidth > distanceRight) {\n this.tooltipElement.style.setProperty(\n '--comp-offset-translate',\n `-${Math.round(tooltipWidth - distanceRight + extraMargin)}px`\n );\n }\n } else if (['nw', 'sw'].includes(this.position)) {\n if (tooltipWidth > distanceLeft) {\n this.tooltipElement.style.setProperty(\n '--comp-offset-translate',\n `${Math.round(tooltipWidth - distanceLeft + extraMargin)}px`\n );\n }\n } else if (['n', 's'].includes(this.position)) {\n if (tooltipWidth / 2 > distanceLeft) {\n this.tooltipElement.style.setProperty(\n '--comp-offset-translate',\n `${Math.round(tooltipWidth / 2 - distanceLeft + extraMargin)}px`\n );\n } else if (tooltipWidth / 2 > distanceRight) {\n this.tooltipElement.style.setProperty(\n '--comp-offset-translate',\n `-${Math.round(tooltipWidth / 2 - distanceRight + extraMargin)}px`\n );\n } else {\n this.tooltipElement.style.setProperty('--comp-offset-translate', `0px`);\n }\n }\n }\n\n animationEndHandler() {\n this.animationEndCount = this.animationEndCount + 1;\n const { focusClass, animationEndCount } = this;\n\n // animationEnd is fired once for :before and once for :after pseudo elements\n // there are multiple animations defined for .has-generic-focus\n // so we need to wait for all of them to finish before we can remove the class\n if (focusClass === 'has-generic-focus-out' || (focusClass === 'has-generic-focus' && animationEndCount === 4)) {\n this.focusClass = null;\n this.animationEndCount = 0;\n }\n }\n\n checkFocusClass() {\n if (!this.shouldBeVisible) return;\n const isKeyboardFocus = !!this.findFocusVisibleElement(document.activeElement);\n this.focusClass = isKeyboardFocus ? 'has-keyboard-focus' : 'has-generic-focus';\n if (isKeyboardFocus) return;\n }\n\n clearTooltipOnChildren() {\n const children = Array.from(this.hostElement.children);\n for (const child of children) {\n if ('_tooltip' in child) {\n (child as HTMLElement & { _tooltip: string })._tooltip = undefined;\n }\n }\n }\n\n findFocusVisibleElement(element: Element) {\n if (!element) return;\n if (element.shadowRoot) element = this.findFocusVisibleElement(element.shadowRoot.activeElement);\n return element?.matches(':focus-visible') ? element : null;\n }\n\n hideTooltip() {\n if (this.focusClass === 'has-generic-focus') this.focusClass = 'has-generic-focus-out';\n else this.focusClass = null;\n }\n\n propagateTooltip() {\n if (this.focusable) return;\n const children = Array.from(this.hostElement.children);\n for (const child of children) {\n if ('_tooltip' in child) {\n (child as HTMLElement & { _tooltip: string })._tooltip = this.label || undefined;\n }\n }\n }\n\n // #endregion\n // #region Render Methods\n\n render() {\n const { focusClass } = this;\n const classes = ['tooltip'];\n if (focusClass) classes.push(focusClass);\n if (this.persistOnHoverDismissed) classes.push('dismissed');\n\n return this.label ? (\n <div\n tabindex={this.focusable ? 0 : undefined}\n ref={el => (this.tooltipElement = el)}\n class={classes.join(' ')}\n aria-label={this.focusable ? this.label : undefined}\n data-label={this.label}\n onAnimationEnd={() => this.animationEndHandler()}\n role={this.focusable ? 'tooltip' : undefined}\n test-id=\"tooltipContainer\"\n >\n <slot onSlotchange={() => this.propagateTooltip()} />\n </div>\n ) : (\n <slot onSlotchange={() => this.propagateTooltip()} />\n );\n }\n\n // #endregion\n}\n"]}
@@ -49,9 +49,9 @@ export class TectonTabPane {
49
49
  // #endregion
50
50
  // #region Render Methods
51
51
  render() {
52
- return (h("div", { key: 'ace595f724970ba699a0ca62c27b393de637d9ea', id: `tab-pane-${this.guid}-${this.index}`, class: `tab-pane${this.selected ? '' : ' hidden'}`, role: "tabpanel", tabindex: "-1", "aria-hidden": `${!this.selected}`, "aria-labelledby": `tab-${this.guid}-${this.index}` }, this.selected && this.provided !== undefined && !this.provided && (h("div", { key: 'ee8fe1eda2ed564d8afbfcbc2a80b9aa93b68d93' }, h("slot", { key: '9da63a65b251f15c84508eccf89c5457b4412de4', name: "loading-wrapper" }), h("iframe", { key: 'dd0b576edfa8ce64d864ab0215d6c51995841d57', hidden: true, name: this.moduleId, scrolling: "no", src: this.showForm && this.authPayload.length ? '' : this.url || '', "data-module-id": this.moduleId, style: this.minHeight ? { minHeight: this.minHeight } : null, onLoad: this.onIFrameLoad, title: this.iframeTitle, allow: "geolocation; camera" }), this._showForm && this.authPayload ? (h("form", { hidden: true, method: "post", action: this.url, target: this.moduleId, encType: "multipart/form-data" }, this.authPayload.map(element => {
52
+ return (h("div", { key: '7001a993b32e67644b26c0af1bd594c6e0bb9fd3', id: `tab-pane-${this.guid}-${this.index}`, class: `tab-pane${this.selected ? '' : ' hidden'}`, role: "tabpanel", tabindex: "-1", "aria-hidden": `${!this.selected}`, "aria-labelledby": `tab-${this.guid}-${this.index}` }, this.selected && this.provided !== undefined && !this.provided && (h("div", { key: '1e2cac90e08e633e5dd23ca2b1e7378ab77c1c03' }, h("slot", { key: '99ab7a254419bc59b7ee19afde9ad1d332d437be', name: "loading-wrapper" }), h("iframe", { key: '996630a2030f32a1d43cb574461b5c105934cec6', hidden: true, name: this.moduleId, scrolling: "no", src: this.showForm && this.authPayload.length ? '' : this.url || '', "data-module-id": this.moduleId, style: this.minHeight ? { minHeight: this.minHeight } : null, onLoad: this.onIFrameLoad, title: this.iframeTitle, allow: "geolocation; camera" }), this._showForm && this.authPayload ? (h("form", { hidden: true, method: "post", action: this.url, target: this.moduleId, encType: "multipart/form-data" }, this.authPayload.map(element => {
53
53
  return (h("input", { type: "hidden", value: element.value, name: element.key }));
54
- }))) : (''))), h("div", { key: '8a160438d70d8e488fa43815949cd4990dea2f5e', class: "slot-wrapper", hidden: this.selected && this.provided !== undefined && !this.provided }, h("slot", { key: 'ac6d5a0e507221c1f2efa6b26506ebdb5eed7de1' }))));
54
+ }))) : (''))), h("div", { key: '4f8b8a32f0d6f1b5102745845ae83f04d913964d', class: "slot-wrapper", hidden: this.selected && this.provided !== undefined && !this.provided }, h("slot", { key: '2bbda438ddd7355fedc37e04ec7707736ddb1f03' }))));
55
55
  }
56
56
  static get is() { return "tecton-tab-pane"; }
57
57
  static get encapsulation() { return "shadow"; }
@@ -1,2 +1,3 @@
1
1
  export * from './components';
2
+ export * from 'q2-tecton-common/lib/types/elements';
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC","sourcesContent":["export * from './components';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,qCAAqC,CAAC","sourcesContent":["export * from './components';\nexport * from 'q2-tecton-common/lib/types/elements';\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"action-sheet.js","sourceRoot":"","sources":["../../../src/utils/action-sheet.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n ActionSheetSelectedOption,\n ActionSheetListCloseData,\n ActionSheetListData,\n ActionSheetListOption,\n ActionSheetListOptgroup,\n ActionSheetStaticHtmlData,\n} from 'q2-tecton-common/lib/types/action-sheet';\n\ninterface IActionSheetComponent {\n hoist: boolean;\n}\nexport const shouldShowActionSheet = (component: IActionSheetComponent, event?: KeyboardEvent | MouseEvent) => {\n const isDialogSupported = 'open' in document.createElement('dialog');\n if (!isDialogSupported) return false;\n\n const canShowActionSheet = !!window.TectonElements?.showActionSheet;\n if (!canShowActionSheet) return false;\n\n const keysThatTriggerOpen = ['ArrowDown', 'ArrowUp', 'PageDown', 'PageUp', 'Home', 'End', 'Enter', ' '];\n if (event) {\n const eventIsKeyboardEvent = event instanceof KeyboardEvent;\n const eventIsMouseEvent = event instanceof MouseEvent;\n const keyboardEventShouldTriggerOpen = eventIsKeyboardEvent && keysThatTriggerOpen.includes(event.key);\n const mouseEventShouldTriggerOpen = eventIsMouseEvent && event.type === 'click';\n const eventShouldTriggerOpen = mouseEventShouldTriggerOpen || keyboardEventShouldTriggerOpen;\n if (!eventShouldTriggerOpen) return false;\n }\n\n if (component.hoist) return true;\n return false;\n};\n\nconst parseOptions = (options: (HTMLQ2OptgroupElement | HTMLQ2OptionElement | HTMLQ2DropdownItemElement)[]): any[] => {\n const defaultOption = {\n disabled: false,\n separator: false,\n display: '',\n hidden: false,\n multiline: false,\n value: '',\n innerHTML: '',\n };\n const optionPropsToGet = Object.keys(defaultOption);\n const defaultOptgroup = {\n disabled: false,\n label: '',\n options: [],\n };\n const optgroupPropsToGet = Object.keys(defaultOptgroup);\n return options.map(option => {\n if (option.tagName === 'Q2-OPTGROUP') {\n const optgroup = option as HTMLQ2OptgroupElement;\n return optgroupPropsToGet.reduce<ActionSheetListOptgroup>(\n (acc, prop) => {\n if (prop === 'options') {\n const options = Array.from(option.children).filter(\n child => child.tagName === 'Q2-OPTION' || child.tagName === 'Q2-OPTGROUP'\n ) as HTMLQ2OptgroupElement[];\n\n acc[prop] = parseOptions(options);\n } else {\n acc[prop] = optgroup[prop];\n }\n return acc;\n },\n { ...defaultOptgroup }\n );\n } else if (option.tagName === 'Q2-OPTION' || option.tagName === 'Q2-DROPDOWN-ITEM') {\n return optionPropsToGet.reduce<ActionSheetListOption>(\n (acc, prop) => {\n if (option[prop] !== undefined) {\n acc[prop] = option[prop];\n }\n return acc;\n },\n { ...defaultOption }\n );\n }\n });\n};\n\nexport const buildListData = async (\n component: IActionSheetListComponent,\n event?: MouseEvent | KeyboardEvent\n): Promise<ActionSheetListData> => {\n return {\n appearance: 'list',\n title: component.label || '',\n description: '',\n event,\n listProps: {\n multiple: !!component.optionList.multiple,\n selectedOptions: (component.optionList.selectedOptions as ActionSheetSelectedOption[]) || [],\n noSelect: !!component.optionList.noSelect,\n },\n options: parseOptions(await component.optionList.getContents()),\n // static html only\n slotsHtml: (await component._getSlotsHtml?.()) || [],\n };\n};\n\ninterface IActionSheetListComponent {\n optionList: HTMLQ2OptionListElement;\n label: string;\n _getSlotsHtml?: () => Promise<ActionSheetStaticHtmlData[]>;\n}\nexport const showActionSheetList = async (\n component: IActionSheetListComponent,\n event?: MouseEvent | KeyboardEvent\n): Promise<ActionSheetListCloseData> => {\n const listData = await buildListData(component, event);\n return window.TectonElements?.showActionSheet(listData);\n};\n"]}
1
+ {"version":3,"file":"action-sheet.js","sourceRoot":"","sources":["../../../src/utils/action-sheet.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n ActionSheetSelectedOption,\n ActionSheetListCloseData,\n ActionSheetListData,\n ActionSheetListOption,\n ActionSheetListOptgroup,\n ActionSheetStaticHtmlData,\n} from 'q2-tecton-common/lib/types/action-sheet';\n\ninterface ActionSheetComponent {\n hoist: boolean;\n}\nexport const shouldShowActionSheet = (component: ActionSheetComponent, event?: KeyboardEvent | MouseEvent) => {\n const isDialogSupported = 'open' in document.createElement('dialog');\n if (!isDialogSupported) return false;\n\n const canShowActionSheet = !!window.TectonElements?.showActionSheet;\n if (!canShowActionSheet) return false;\n\n const keysThatTriggerOpen = ['ArrowDown', 'ArrowUp', 'PageDown', 'PageUp', 'Home', 'End', 'Enter', ' '];\n if (event) {\n const eventIsKeyboardEvent = event instanceof KeyboardEvent;\n const eventIsMouseEvent = event instanceof MouseEvent;\n const keyboardEventShouldTriggerOpen = eventIsKeyboardEvent && keysThatTriggerOpen.includes(event.key);\n const mouseEventShouldTriggerOpen = eventIsMouseEvent && event.type === 'click';\n const eventShouldTriggerOpen = mouseEventShouldTriggerOpen || keyboardEventShouldTriggerOpen;\n if (!eventShouldTriggerOpen) return false;\n }\n\n if (component.hoist) return true;\n return false;\n};\n\nconst parseOptions = (options: (HTMLQ2OptgroupElement | HTMLQ2OptionElement | HTMLQ2DropdownItemElement)[]): any[] => {\n const defaultOption = {\n disabled: false,\n separator: false,\n display: '',\n hidden: false,\n multiline: false,\n value: '',\n innerHTML: '',\n };\n const optionPropsToGet = Object.keys(defaultOption);\n const defaultOptgroup = {\n disabled: false,\n label: '',\n options: [],\n };\n const optgroupPropsToGet = Object.keys(defaultOptgroup);\n return options.map(option => {\n if (option.tagName === 'Q2-OPTGROUP') {\n const optgroup = option as HTMLQ2OptgroupElement;\n return optgroupPropsToGet.reduce<ActionSheetListOptgroup>(\n (acc, prop) => {\n if (prop === 'options') {\n const options = Array.from(option.children).filter(\n child => child.tagName === 'Q2-OPTION' || child.tagName === 'Q2-OPTGROUP'\n ) as HTMLQ2OptgroupElement[];\n\n acc[prop] = parseOptions(options);\n } else {\n acc[prop] = optgroup[prop];\n }\n return acc;\n },\n { ...defaultOptgroup }\n );\n } else if (option.tagName === 'Q2-OPTION' || option.tagName === 'Q2-DROPDOWN-ITEM') {\n return optionPropsToGet.reduce<ActionSheetListOption>(\n (acc, prop) => {\n if (option[prop] !== undefined) {\n acc[prop] = option[prop];\n }\n return acc;\n },\n { ...defaultOption }\n );\n }\n });\n};\n\nexport const buildListData = async (\n component: ActionSheetListComponent,\n event?: MouseEvent | KeyboardEvent\n): Promise<ActionSheetListData> => {\n return {\n appearance: 'list',\n title: component.label || '',\n description: '',\n event,\n listProps: {\n multiple: !!component.optionList.multiple,\n selectedOptions: (component.optionList.selectedOptions as ActionSheetSelectedOption[]) || [],\n noSelect: !!component.optionList.noSelect,\n },\n options: parseOptions(await component.optionList.getContents()),\n // static html only\n slotsHtml: (await component._getSlotsHtml?.()) || [],\n };\n};\n\ninterface ActionSheetListComponent {\n optionList: HTMLQ2OptionListElement;\n label: string;\n _getSlotsHtml?: () => Promise<ActionSheetStaticHtmlData[]>;\n}\nexport const showActionSheetList = async (\n component: ActionSheetListComponent,\n event?: MouseEvent | KeyboardEvent\n): Promise<ActionSheetListCloseData> => {\n const listData = await buildListData(component, event);\n return window.TectonElements?.showActionSheet(listData);\n};\n"]}
@@ -46,6 +46,11 @@ export function isInScrollableContainer(element) {
46
46
  return true;
47
47
  }
48
48
  }
49
+ // Check if the iframe itself is the scrolling container
50
+ const isIframe = window !== window.top;
51
+ if (isIframe && document.documentElement.scrollHeight > window.innerHeight) {
52
+ return true;
53
+ }
49
54
  return false;
50
55
  }
51
56
  export function isHostLosingFocus(event, hostElement) {
@@ -137,39 +142,74 @@ export function loc(key, subs) {
137
142
  }
138
143
  return (_c = (_b = window === null || window === void 0 ? void 0 : window.TectonElements) === null || _b === void 0 ? void 0 : _b.loc(key, subs)) !== null && _c !== void 0 ? _c : key;
139
144
  }
145
+ /**
146
+ * Returns browser name, version, platform, and context (browser vs app WebView).
147
+ * Desktop Chrome: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36
148
+ * Desktop Safari: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.4 Safari/605.1.15
149
+ * Desktop Edge: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36 Edg/146.0.0.0
150
+ * Desktop Firefox: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:149.0) Gecko/20100101 Firefox/149.0
151
+ * Mobile app Android: Mozilla/5.0 (Linux; Android 16; sdk_gphone64_arm64 Build/BE2A.250530.026.D1; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/146.0.7680.177 Mobile Safari/537.36
152
+ * Mobile browser Android: Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Mobile Safari/537.36
153
+ * Mobile app iOS: Mozilla/5.0 (iPhone; CPU iPhone OS 18_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148
154
+ * Mobile browser iOS: Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.0.1 Mobile/15E148 Safari/604.1 -> 18.7 is the OS version, 26.0.1 is the Safari version
155
+ */
140
156
  export function getBrowserInfo() {
141
157
  const userAgent = navigator.userAgent;
142
- let browserName = 'Unknown';
143
- let browserVersion = 'Unknown';
144
- if (userAgent.includes('Firefox')) {
145
- browserName = 'Firefox';
146
- const match = userAgent.match(/Firefox\/(\d+\.\d+)/);
147
- if (match && match[1]) {
148
- browserVersion = match[1];
158
+ let name = 'Unknown';
159
+ let version = 'Unknown';
160
+ // Detect platform
161
+ const isMobileDevice = /Android|iPhone|iPad|iPod/i.test(userAgent) || userAgent.includes(' iOS/');
162
+ const platform = isMobileDevice ? 'mobile' : 'desktop';
163
+ // Detect context — app (WebView) vs standalone browser
164
+ let context = 'browser';
165
+ if (isMobileDevice) {
166
+ const isAndroidWebView = userAgent.includes('; wv)');
167
+ const isIOSDevice = /iPhone|iPad|iPod/.test(userAgent) || userAgent.includes(' iOS/');
168
+ const isIOSWebView = isIOSDevice && !userAgent.includes('Safari');
169
+ if (isAndroidWebView || isIOSWebView) {
170
+ context = 'app';
149
171
  }
150
172
  }
151
- else if (userAgent.includes('Chrome') && !userAgent.includes('Edg')) {
152
- browserName = 'Chrome';
153
- const match = userAgent.match(/Chrome\/(\d+\.\d+\.\d+\.\d+)/);
173
+ // Detect browser name and version — check mobile-specific patterns first
174
+ if (userAgent.includes(' iPhone OS') && !userAgent.includes('Safari')) {
175
+ // iOS app WebView — no "Safari" token in userAgent
176
+ name = 'Safari';
177
+ version = userAgent.split(' iPhone OS')[1].trim().split(/\s/)[0].replaceAll('_', '.');
178
+ }
179
+ else if (userAgent.includes(' iOS/')) {
180
+ // Alternate iOS app userAgent format (e.g. ngam-ios/26.5.0.107 arm64 iOS/26.4 CFNetwork/1.0 Darwin/25.4.0)
181
+ name = 'Safari';
182
+ version = userAgent.split(' iOS/')[1].split(/\s/)[0];
183
+ }
184
+ else if (userAgent.includes('Edg')) {
185
+ name = 'Edge';
186
+ const match = userAgent.match(/Edg\/(\d+(?:\.\d+)+)/);
154
187
  if (match && match[1]) {
155
- browserVersion = match[1];
188
+ version = match[1];
156
189
  }
157
190
  }
158
- else if (userAgent.includes('Safari') && !userAgent.includes('Chrome')) {
159
- browserName = 'Safari';
160
- const match = userAgent.match(/Version\/(\d+\.\d+)/);
191
+ else if (userAgent.includes('Firefox')) {
192
+ name = 'Firefox';
193
+ const match = userAgent.match(/Firefox\/(\d+\.\d+)/);
161
194
  if (match && match[1]) {
162
- browserVersion = match[1];
195
+ version = match[1];
163
196
  }
164
197
  }
165
- else if (userAgent.includes('Edg')) {
166
- browserName = 'Edge';
198
+ else if (userAgent.includes('Chrome')) {
199
+ name = 'Chrome';
167
200
  const match = userAgent.match(/Chrome\/(\d+\.\d+\.\d+\.\d+)/);
168
201
  if (match && match[1]) {
169
- browserVersion = match[1];
202
+ version = match[1];
203
+ }
204
+ }
205
+ else if (userAgent.includes('Safari')) {
206
+ name = 'Safari';
207
+ const match = userAgent.match(/Version\/(\d+(?:\.\d+)+)/);
208
+ if (match && match[1]) {
209
+ version = match[1];
170
210
  }
171
211
  }
172
- return { name: browserName, version: browserVersion };
212
+ return { name, version, platform, context };
173
213
  }
174
214
  export function renderLabel(target) {
175
215
  const { label, hideLabel, optional, readonly } = target;