q2-tecton-elements 1.54.5 → 1.55.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 (559) hide show
  1. package/dist/bundle-report.json +2047 -769
  2. package/dist/cjs/{index-76f63767.js → index-905f4c87.js} +3 -2
  3. package/dist/cjs/index-905f4c87.js.map +1 -0
  4. package/dist/cjs/loader.cjs.js +1 -1
  5. package/dist/cjs/q2-action-group.cjs.entry.js +45 -14
  6. package/dist/cjs/q2-action-group.cjs.entry.js.map +1 -1
  7. package/dist/cjs/q2-action-sheet.cjs.entry.js +4 -1364
  8. package/dist/cjs/q2-action-sheet.cjs.entry.js.map +1 -1
  9. package/dist/cjs/q2-avatar.cjs.entry.js +1 -1
  10. package/dist/cjs/q2-badge_7.cjs.entry.js +59 -22
  11. package/dist/cjs/q2-badge_7.cjs.entry.js.map +1 -1
  12. package/dist/cjs/q2-calendar.cjs.entry.js +2 -2
  13. package/dist/cjs/q2-calendar.cjs.entry.js.map +1 -1
  14. package/dist/cjs/q2-card.cjs.entry.js +1 -1
  15. package/dist/cjs/q2-carousel-pane.cjs.entry.js +3 -3
  16. package/dist/cjs/q2-carousel.cjs.entry.js +1 -1
  17. package/dist/cjs/q2-chart-area.cjs.entry.js +2 -2
  18. package/dist/cjs/q2-chart-bar.cjs.entry.js +2 -2
  19. package/dist/cjs/q2-chart-donut.cjs.entry.js +2 -2
  20. package/dist/cjs/q2-checkbox-group.cjs.entry.js +2 -2
  21. package/dist/cjs/q2-checkbox-group.cjs.entry.js.map +1 -1
  22. package/dist/cjs/q2-checkbox.cjs.entry.js +21 -21
  23. package/dist/cjs/q2-checkbox.cjs.entry.js.map +1 -1
  24. package/dist/cjs/q2-currency.cjs.entry.js +1 -1
  25. package/dist/cjs/q2-data-table.cjs.entry.js +1 -1
  26. package/dist/cjs/q2-detail.cjs.entry.js +2 -2
  27. package/dist/cjs/q2-dropdown-item.cjs.entry.js +1 -1
  28. package/dist/cjs/q2-dropdown.cjs.entry.js +1 -1
  29. package/dist/cjs/q2-editable-field.cjs.entry.js +1 -1
  30. package/dist/cjs/q2-file-picker.cjs.entry.js +2 -2
  31. package/dist/cjs/q2-file-picker.cjs.entry.js.map +1 -1
  32. package/dist/cjs/q2-form.cjs.entry.js +23 -0
  33. package/dist/cjs/q2-form.cjs.entry.js.map +1 -0
  34. package/dist/cjs/q2-formatted-text.cjs.entry.js +1 -1
  35. package/dist/cjs/q2-item_3.cjs.entry.js +3 -3
  36. package/dist/cjs/q2-legend.cjs.entry.js +2 -2
  37. package/dist/cjs/q2-legend.cjs.entry.js.map +1 -1
  38. package/dist/cjs/q2-loc.cjs.entry.js +20 -26
  39. package/dist/cjs/q2-loc.cjs.entry.js.map +1 -1
  40. package/dist/cjs/q2-message.cjs.entry.js +2 -2
  41. package/dist/cjs/q2-modal.cjs.entry.js +172 -0
  42. package/dist/cjs/q2-modal.cjs.entry.js.map +1 -0
  43. package/dist/cjs/q2-month-picker.cjs.entry.js +3 -3
  44. package/dist/cjs/q2-optgroup.cjs.entry.js +2 -2
  45. package/dist/cjs/q2-option-list_2.cjs.entry.js +2 -2
  46. package/dist/cjs/q2-option.cjs.entry.js +22 -24
  47. package/dist/cjs/q2-option.cjs.entry.js.map +1 -1
  48. package/dist/cjs/q2-pagination.cjs.entry.js +4 -4
  49. package/dist/cjs/q2-pill.cjs.entry.js +2 -2
  50. package/dist/cjs/q2-radio-group.cjs.entry.js +2 -2
  51. package/dist/cjs/q2-radio-group.cjs.entry.js.map +1 -1
  52. package/dist/cjs/q2-radio.cjs.entry.js +1 -1
  53. package/dist/cjs/q2-relative-time.cjs.entry.js +2 -2
  54. package/dist/cjs/q2-resize-observer.cjs.entry.js +2 -2
  55. package/dist/cjs/q2-resize-observer.cjs.entry.js.map +1 -1
  56. package/dist/cjs/q2-section.cjs.entry.js +3 -3
  57. package/dist/cjs/q2-select.cjs.entry.js +10 -6
  58. package/dist/cjs/q2-select.cjs.entry.js.map +1 -1
  59. package/dist/cjs/q2-stepper-pane.cjs.entry.js +1 -1
  60. package/dist/cjs/q2-stepper-vertical.cjs.entry.js +2 -2
  61. package/dist/cjs/q2-stepper.cjs.entry.js +2 -2
  62. package/dist/cjs/q2-tag.cjs.entry.js +51 -9
  63. package/dist/cjs/q2-tag.cjs.entry.js.map +1 -1
  64. package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
  65. package/dist/cjs/q2-textarea.cjs.entry.js +3 -3
  66. package/dist/cjs/q2-textarea.cjs.entry.js.map +1 -1
  67. package/dist/cjs/q2-tooltip.cjs.entry.js +2 -2
  68. package/dist/cjs/q2-tooltip.cjs.entry.js.map +1 -1
  69. package/dist/cjs/sanitize-html-string-b8e3b24b.js +1366 -0
  70. package/dist/cjs/sanitize-html-string-b8e3b24b.js.map +1 -0
  71. package/dist/cjs/tecton-tab-pane.cjs.entry.js +2 -2
  72. package/dist/collection/collection-manifest.json +3 -1
  73. package/dist/collection/components/click-elsewhere/click-elsewhere.js.map +1 -1
  74. package/dist/collection/components/click-elsewhere/test/click-elsewhere-test.e2e.js.map +1 -1
  75. package/dist/collection/components/q2-action-group/q2-action-group.css +11 -4
  76. package/dist/collection/components/q2-action-group/q2-action-group.js +47 -13
  77. package/dist/collection/components/q2-action-group/q2-action-group.js.map +1 -1
  78. package/dist/collection/components/q2-action-group/test/q2-action-group-test.e2e.js +365 -0
  79. package/dist/collection/components/q2-action-group/test/q2-action-group-test.e2e.js.map +1 -0
  80. package/dist/collection/components/q2-action-group/test/{q2-action-group.spec.js → q2-action-group-test.spec.js} +67 -26
  81. package/dist/collection/components/q2-action-group/test/q2-action-group-test.spec.js.map +1 -0
  82. package/dist/collection/components/q2-action-sheet/q2-action-sheet.js +1 -1
  83. package/dist/collection/components/q2-action-sheet/q2-action-sheet.js.map +1 -1
  84. package/dist/collection/components/q2-action-sheet/test/q2-action-sheet-test.e2e.js.map +1 -1
  85. package/dist/collection/components/q2-avatar/q2-avatar.js +1 -1
  86. package/dist/collection/components/q2-avatar/q2-avatar.js.map +1 -1
  87. package/dist/collection/components/q2-avatar/test/q2-avatar-test.e2e.js.map +1 -1
  88. package/dist/collection/components/q2-badge/q2-badge.css +52 -41
  89. package/dist/collection/components/q2-badge/q2-badge.js +88 -22
  90. package/dist/collection/components/q2-badge/q2-badge.js.map +1 -1
  91. package/dist/collection/components/q2-badge/test/q2-badge-test.e2e.js +35 -126
  92. package/dist/collection/components/q2-badge/test/q2-badge-test.e2e.js.map +1 -1
  93. package/dist/collection/components/q2-badge/test/q2-badge-test.spec.js +415 -0
  94. package/dist/collection/components/q2-badge/test/q2-badge-test.spec.js.map +1 -0
  95. package/dist/collection/components/q2-btn/q2-btn.css +12 -10
  96. package/dist/collection/components/q2-btn/q2-btn.js.map +1 -1
  97. package/dist/collection/components/q2-btn/test/q2-btn-test.e2e.js.map +1 -1
  98. package/dist/collection/components/q2-calendar/q2-calendar-helpers.js.map +1 -1
  99. package/dist/collection/components/q2-calendar/q2-calendar-types.js.map +1 -1
  100. package/dist/collection/components/q2-calendar/q2-calendar-validation.js.map +1 -1
  101. package/dist/collection/components/q2-calendar/q2-calendar.css +2 -0
  102. package/dist/collection/components/q2-calendar/q2-calendar.js.map +1 -1
  103. package/dist/collection/components/q2-calendar/q2-month-picker.js +2 -2
  104. package/dist/collection/components/q2-calendar/q2-month-picker.js.map +1 -1
  105. package/dist/collection/components/q2-calendar/test/helpers-test.e2e.js.map +1 -1
  106. package/dist/collection/components/q2-calendar/test/q2-calendar-month-picker-test.e2e.js.map +1 -1
  107. package/dist/collection/components/q2-calendar/test/q2-calendar-test.e2e.js.map +1 -1
  108. package/dist/collection/components/q2-calendar/test/validation-test.e2e.js.map +1 -1
  109. package/dist/collection/components/q2-card/q2-card.js.map +1 -1
  110. package/dist/collection/components/q2-card/test/q2-card-test.e2e.js.map +1 -1
  111. package/dist/collection/components/q2-carousel/q2-carousel.js.map +1 -1
  112. package/dist/collection/components/q2-carousel/test/q2-carousel-test.e2e.js.map +1 -1
  113. package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.js +2 -2
  114. package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.js.map +1 -1
  115. package/dist/collection/components/q2-carousel-pane/test/q2-carousel-pane-test.e2e.js.map +1 -1
  116. package/dist/collection/components/q2-carousel-pane/test/q2-carousel-pane-test.spec.js.map +1 -1
  117. package/dist/collection/components/q2-chart-area/q2-chart-area.js +1 -1
  118. package/dist/collection/components/q2-chart-area/q2-chart-area.js.map +1 -1
  119. package/dist/collection/components/q2-chart-area/test/q2-chart-area-test.e2e.js.map +1 -1
  120. package/dist/collection/components/q2-chart-bar/q2-chart-bar.js +1 -1
  121. package/dist/collection/components/q2-chart-bar/q2-chart-bar.js.map +1 -1
  122. package/dist/collection/components/q2-chart-bar/test/q2-chart-bar-test.e2e.js.map +1 -1
  123. package/dist/collection/components/q2-chart-donut/q2-chart-donut.js +1 -1
  124. package/dist/collection/components/q2-chart-donut/q2-chart-donut.js.map +1 -1
  125. package/dist/collection/components/q2-chart-donut/test/q2-chart-donut-test.e2e.js.map +1 -1
  126. package/dist/collection/components/q2-checkbox/q2-checkbox.css +99 -62
  127. package/dist/collection/components/q2-checkbox/q2-checkbox.js +19 -19
  128. package/dist/collection/components/q2-checkbox/q2-checkbox.js.map +1 -1
  129. package/dist/collection/components/q2-checkbox/test/q2-checkbox-test.e2e.js +227 -208
  130. package/dist/collection/components/q2-checkbox/test/q2-checkbox-test.e2e.js.map +1 -1
  131. package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.css +8 -1
  132. package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.js.map +1 -1
  133. package/dist/collection/components/q2-checkbox-group/test/q2-checkbox-group-test.e2e.js.map +1 -1
  134. package/dist/collection/components/q2-currency/q2-currency.js +1 -1
  135. package/dist/collection/components/q2-currency/q2-currency.js.map +1 -1
  136. package/dist/collection/components/q2-currency/test/q2-currency-test.e2e.js.map +1 -1
  137. package/dist/collection/components/q2-data-table/q2-data-table.js.map +1 -1
  138. package/dist/collection/components/q2-data-table/test/q2-data-table-test.e2e.js.map +1 -1
  139. package/dist/collection/components/q2-detail/q2-detail.js +1 -1
  140. package/dist/collection/components/q2-detail/q2-detail.js.map +1 -1
  141. package/dist/collection/components/q2-detail/test/q2-detail-test.e2e.js.map +1 -1
  142. package/dist/collection/components/q2-dropdown/q2-dropdown.js.map +1 -1
  143. package/dist/collection/components/q2-dropdown/test/q2-dropdown-test.e2e.js.map +1 -1
  144. package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.js.map +1 -1
  145. package/dist/collection/components/q2-dropdown-item/test/q2-dropdown-item-test.e2e.js.map +1 -1
  146. package/dist/collection/components/q2-editable-field/q2-editable-field.js.map +1 -1
  147. package/dist/collection/components/q2-editable-field/test/q2-editable-field-test.e2e.js.map +1 -1
  148. package/dist/collection/components/q2-example/q2-example.js.map +1 -1
  149. package/dist/collection/components/q2-example/test/q2-example.e2e.js.map +1 -1
  150. package/dist/collection/components/q2-example/test/q2-example.spec.js.map +1 -1
  151. package/dist/collection/components/q2-file-picker/q2-file-picker.css +2 -0
  152. package/dist/collection/components/q2-file-picker/q2-file-picker.js.map +1 -1
  153. package/dist/collection/components/q2-file-picker/test/q2-file-picker-test.e2e.js.map +1 -1
  154. package/dist/collection/components/q2-file-picker/test/q2-file-picker-test.spec.js.map +1 -1
  155. package/dist/collection/components/q2-form/q2-form.css +93 -0
  156. package/dist/collection/components/q2-form/q2-form.js +44 -0
  157. package/dist/collection/components/q2-form/q2-form.js.map +1 -0
  158. package/dist/collection/components/q2-form/test/q2-form-test.e2e.js +93 -0
  159. package/dist/collection/components/q2-form/test/q2-form-test.e2e.js.map +1 -0
  160. package/dist/collection/components/q2-formatted-text/q2-formatted-text.js +1 -1
  161. package/dist/collection/components/q2-formatted-text/q2-formatted-text.js.map +1 -1
  162. package/dist/collection/components/q2-formatted-text/test/q2-formatted-text-test.e2e.js.map +1 -1
  163. package/dist/collection/components/q2-icon/q2-icon-types.js.map +1 -1
  164. package/dist/collection/components/q2-icon/q2-icon.js.map +1 -1
  165. package/dist/collection/components/q2-icon/test/q2-icon-test.e2e.js +1 -352
  166. package/dist/collection/components/q2-icon/test/q2-icon-test.e2e.js.map +1 -1
  167. package/dist/collection/components/q2-icon/test/q2-icon-test.spec.js +464 -0
  168. package/dist/collection/components/q2-icon/test/q2-icon-test.spec.js.map +1 -0
  169. package/dist/collection/components/q2-input/formatting/alpha.js.map +1 -1
  170. package/dist/collection/components/q2-input/formatting/alpha.spec.js.map +1 -1
  171. package/dist/collection/components/q2-input/formatting/alphanumeric.js.map +1 -1
  172. package/dist/collection/components/q2-input/formatting/alphanumeric.spec.js.map +1 -1
  173. package/dist/collection/components/q2-input/formatting/credit-card.js.map +1 -1
  174. package/dist/collection/components/q2-input/formatting/credit-card.spec.js.map +1 -1
  175. package/dist/collection/components/q2-input/formatting/currency.js.map +1 -1
  176. package/dist/collection/components/q2-input/formatting/currency.spec.js.map +1 -1
  177. package/dist/collection/components/q2-input/formatting/date.js.map +1 -1
  178. package/dist/collection/components/q2-input/formatting/date.spec.js.map +1 -1
  179. package/dist/collection/components/q2-input/formatting/generic.js.map +1 -1
  180. package/dist/collection/components/q2-input/formatting/number.js.map +1 -1
  181. package/dist/collection/components/q2-input/formatting/numeric.js.map +1 -1
  182. package/dist/collection/components/q2-input/formatting/numeric.spec.js.map +1 -1
  183. package/dist/collection/components/q2-input/formatting/phone.js.map +1 -1
  184. package/dist/collection/components/q2-input/formatting/phone.spec.js.map +1 -1
  185. package/dist/collection/components/q2-input/formatting/postal.js.map +1 -1
  186. package/dist/collection/components/q2-input/formatting/postal.spec.js.map +1 -1
  187. package/dist/collection/components/q2-input/formatting/ssn.js.map +1 -1
  188. package/dist/collection/components/q2-input/formatting/ssn.spec.js.map +1 -1
  189. package/dist/collection/components/q2-input/formatting/tin.js.map +1 -1
  190. package/dist/collection/components/q2-input/formatting/tin.spec.js.map +1 -1
  191. package/dist/collection/components/q2-input/q2-input-types.js.map +1 -1
  192. package/dist/collection/components/q2-input/q2-input.css +3 -2
  193. package/dist/collection/components/q2-input/q2-input.js +4 -3
  194. package/dist/collection/components/q2-input/q2-input.js.map +1 -1
  195. package/dist/collection/components/q2-input/test/q2-input-credit-card-test.e2e.js.map +1 -1
  196. package/dist/collection/components/q2-input/test/q2-input-test.e2e.js.map +1 -1
  197. package/dist/collection/components/q2-input/test/q2-input-test.spec.js +10 -0
  198. package/dist/collection/components/q2-input/test/q2-input-test.spec.js.map +1 -1
  199. package/dist/collection/components/q2-item/q2-item.js +1 -1
  200. package/dist/collection/components/q2-item/q2-item.js.map +1 -1
  201. package/dist/collection/components/q2-item/test/q2-item-test.e2e.js.map +1 -1
  202. package/dist/collection/components/q2-item/test/q2-item-test.spec.js.map +1 -1
  203. package/dist/collection/components/q2-legend/q2-legend.css +1 -1
  204. package/dist/collection/components/q2-legend/q2-legend.js +1 -1
  205. package/dist/collection/components/q2-legend/q2-legend.js.map +1 -1
  206. package/dist/collection/components/q2-legend/test/q2-legend-test.e2e.js.map +1 -1
  207. package/dist/collection/components/q2-legend/test/q2-legend-test.spec.js.map +1 -1
  208. package/dist/collection/components/q2-link/q2-link.js.map +1 -1
  209. package/dist/collection/components/q2-link/test/q2-link-test.e2e.js.map +1 -1
  210. package/dist/collection/components/q2-link/test/q2-link-test.spec.js.map +1 -1
  211. package/dist/collection/components/q2-list/q2-list.js +1 -1
  212. package/dist/collection/components/q2-list/q2-list.js.map +1 -1
  213. package/dist/collection/components/q2-list/test/q2-list-test.e2e.js.map +1 -1
  214. package/dist/collection/components/q2-loading/q2-loading.js.map +1 -1
  215. package/dist/collection/components/q2-loading/skeleton/q2-loading-element/index.js.map +1 -1
  216. package/dist/collection/components/q2-loading/skeleton/shapes.js.map +1 -1
  217. package/dist/collection/components/q2-loading/test/q2-loading-element-test.e2e.js.map +1 -1
  218. package/dist/collection/components/q2-loading/test/q2-loading-test.e2e.js.map +1 -1
  219. package/dist/collection/components/q2-loc/q2-loc.js +19 -37
  220. package/dist/collection/components/q2-loc/q2-loc.js.map +1 -1
  221. package/dist/collection/components/q2-loc/test/q2-loc-test.e2e.js +1 -7
  222. package/dist/collection/components/q2-loc/test/q2-loc-test.e2e.js.map +1 -1
  223. package/dist/collection/components/q2-loc/test/q2-loc-test.spec.js +140 -82
  224. package/dist/collection/components/q2-loc/test/q2-loc-test.spec.js.map +1 -1
  225. package/dist/collection/components/q2-message/q2-message.js +1 -1
  226. package/dist/collection/components/q2-message/q2-message.js.map +1 -1
  227. package/dist/collection/components/q2-message/test/q2-message-test.e2e.js.map +1 -1
  228. package/dist/collection/components/q2-modal/q2-modal.css +223 -0
  229. package/dist/collection/components/q2-modal/q2-modal.js +470 -0
  230. package/dist/collection/components/q2-modal/q2-modal.js.map +1 -0
  231. package/dist/collection/components/q2-modal/test/q2-modal-test.e2e.js +102 -0
  232. package/dist/collection/components/q2-modal/test/q2-modal-test.e2e.js.map +1 -0
  233. package/dist/collection/components/q2-modal/test/q2-modal-test.spec.js +127 -0
  234. package/dist/collection/components/q2-modal/test/q2-modal-test.spec.js.map +1 -0
  235. package/dist/collection/components/q2-optgroup/q2-optgroup.js +1 -1
  236. package/dist/collection/components/q2-optgroup/q2-optgroup.js.map +1 -1
  237. package/dist/collection/components/q2-optgroup/test/q2-optgroup-test.e2e.js.map +1 -1
  238. package/dist/collection/components/q2-option/q2-option.js +22 -24
  239. package/dist/collection/components/q2-option/q2-option.js.map +1 -1
  240. package/dist/collection/components/q2-option/test/q2-option-test.e2e.js +32 -5
  241. package/dist/collection/components/q2-option/test/q2-option-test.e2e.js.map +1 -1
  242. package/dist/collection/components/q2-option/test/q2-option-test.spec.js +137 -19
  243. package/dist/collection/components/q2-option/test/q2-option-test.spec.js.map +1 -1
  244. package/dist/collection/components/q2-option-list/q2-option-list.js.map +1 -1
  245. package/dist/collection/components/q2-option-list/test/q2-option-list-test.e2e.js.map +1 -1
  246. package/dist/collection/components/q2-option-list/test/q2-option-list.spec.js.map +1 -1
  247. package/dist/collection/components/q2-pagination/q2-pagination.js +3 -3
  248. package/dist/collection/components/q2-pagination/q2-pagination.js.map +1 -1
  249. package/dist/collection/components/q2-pagination/test/q2-pagination-test.e2e.js.map +1 -1
  250. package/dist/collection/components/q2-pill/q2-pill.js +1 -1
  251. package/dist/collection/components/q2-pill/q2-pill.js.map +1 -1
  252. package/dist/collection/components/q2-pill/test/q2-pill-test.e2e.js.map +1 -1
  253. package/dist/collection/components/q2-popover/q2-popover.js +1 -1
  254. package/dist/collection/components/q2-popover/q2-popover.js.map +1 -1
  255. package/dist/collection/components/q2-popover/test/q2-popover-test.e2e.js.map +1 -1
  256. package/dist/collection/components/q2-popover/test/q2-popover-test.spec.js.map +1 -1
  257. package/dist/collection/components/q2-radio/q2-radio.js.map +1 -1
  258. package/dist/collection/components/q2-radio/test/q2-radio-test.e2e.js.map +1 -1
  259. package/dist/collection/components/q2-radio-group/q2-radio-group.css +4 -2
  260. package/dist/collection/components/q2-radio-group/q2-radio-group.js.map +1 -1
  261. package/dist/collection/components/q2-radio-group/test/q2-radio-group-test.e2e.js.map +1 -1
  262. package/dist/collection/components/q2-relative-time/q2-relative-time.js +1 -1
  263. package/dist/collection/components/q2-relative-time/q2-relative-time.js.map +1 -1
  264. package/dist/collection/components/q2-relative-time/test/q2-relative-time-test.e2e.js.map +1 -1
  265. package/dist/collection/components/q2-resize-observer/q2-resize-observer.js +2 -2
  266. package/dist/collection/components/q2-resize-observer/q2-resize-observer.js.map +1 -1
  267. package/dist/collection/components/q2-resize-observer/test/q2-resize-observer.e2e.js.map +1 -1
  268. package/dist/collection/components/q2-resize-observer/test/q2-resize-observer.spec.js.map +1 -1
  269. package/dist/collection/components/q2-section/q2-section.js +2 -2
  270. package/dist/collection/components/q2-section/q2-section.js.map +1 -1
  271. package/dist/collection/components/q2-section/test/q2-section-test.e2e.js.map +1 -1
  272. package/dist/collection/components/q2-select/q2-select.css +2 -2
  273. package/dist/collection/components/q2-select/q2-select.js +15 -4
  274. package/dist/collection/components/q2-select/q2-select.js.map +1 -1
  275. package/dist/collection/components/q2-select/test/q2-select-test.e2e.js +5 -1
  276. package/dist/collection/components/q2-select/test/q2-select-test.e2e.js.map +1 -1
  277. package/dist/collection/components/q2-select/test/q2-select-test.spec.js +85 -0
  278. package/dist/collection/components/q2-select/test/q2-select-test.spec.js.map +1 -0
  279. package/dist/collection/components/q2-stepper/q2-stepper.js +1 -1
  280. package/dist/collection/components/q2-stepper/q2-stepper.js.map +1 -1
  281. package/dist/collection/components/q2-stepper/test/q2-stepper-test.e2e.js.map +1 -1
  282. package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.js.map +1 -1
  283. package/dist/collection/components/q2-stepper-pane/test/q2-stepper-pane-test.e2e.js.map +1 -1
  284. package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js +1 -1
  285. package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js.map +1 -1
  286. package/dist/collection/components/q2-stepper-vertical/test/q2-stepper-vertical-test.e2e.js.map +1 -1
  287. package/dist/collection/components/q2-tab-container/q2-tab-container.js +1 -1
  288. package/dist/collection/components/q2-tab-container/q2-tab-container.js.map +1 -1
  289. package/dist/collection/components/q2-tab-container/test/q2-tab-container-test.e2e.js.map +1 -1
  290. package/dist/collection/components/q2-tab-container/test/q2-tab-container-test.spec.js.map +1 -1
  291. package/dist/collection/components/q2-tab-pane/q2-tab-pane.js +1 -1
  292. package/dist/collection/components/q2-tab-pane/q2-tab-pane.js.map +1 -1
  293. package/dist/collection/components/q2-tab-pane/test/q2-tab-pane-test.e2e.js.map +1 -1
  294. package/dist/collection/components/q2-tag/q2-tag.css +9 -0
  295. package/dist/collection/components/q2-tag/q2-tag.js +65 -15
  296. package/dist/collection/components/q2-tag/q2-tag.js.map +1 -1
  297. package/dist/collection/components/q2-tag/test/q2-tag-test.e2e.js +131 -341
  298. package/dist/collection/components/q2-tag/test/q2-tag-test.e2e.js.map +1 -1
  299. package/dist/collection/components/q2-tag/test/q2-tag-test.spec.js +719 -0
  300. package/dist/collection/components/q2-tag/test/q2-tag-test.spec.js.map +1 -0
  301. package/dist/collection/components/q2-textarea/q2-textarea.css +2 -2
  302. package/dist/collection/components/q2-textarea/q2-textarea.js +1 -1
  303. package/dist/collection/components/q2-textarea/q2-textarea.js.map +1 -1
  304. package/dist/collection/components/q2-textarea/test/q2-textarea-test.e2e.js.map +1 -1
  305. package/dist/collection/components/q2-tooltip/q2-tooltip.css +0 -1
  306. package/dist/collection/components/q2-tooltip/q2-tooltip.js.map +1 -1
  307. package/dist/collection/components/q2-tooltip/test/q2-tooltip-test.e2e.js.map +1 -1
  308. package/dist/collection/components/tecton-tab-pane/tecton-tab-pane-types.js.map +1 -1
  309. package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js +2 -2
  310. package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js.map +1 -1
  311. package/dist/collection/components/tecton-tab-pane/test/tecton-tab-pane-test.e2e.js.map +1 -1
  312. package/dist/collection/index.js.map +1 -1
  313. package/dist/collection/utils/action-sheet.js.map +1 -1
  314. package/dist/collection/utils/charting.js.map +1 -1
  315. package/dist/collection/utils/helpers.js +1 -25
  316. package/dist/collection/utils/helpers.js.map +1 -1
  317. package/dist/collection/utils/index.js +2 -1
  318. package/dist/collection/utils/index.js.map +1 -1
  319. package/dist/collection/utils/mirror-emit.js.map +1 -1
  320. package/dist/collection/utils/sanitize-html-string.js.map +1 -1
  321. package/dist/collection/utils/sanitize-regex-string.js.map +1 -1
  322. package/dist/collection/utils/test/action-sheet-test.e2e.js.map +1 -1
  323. package/dist/collection/utils/test/index.spec.js.map +1 -1
  324. package/dist/components/index.js +4 -0
  325. package/dist/components/index.js.map +1 -1
  326. package/dist/components/index2.js +2 -1
  327. package/dist/components/index2.js.map +1 -1
  328. package/dist/components/q2-action-group.js +1 -116
  329. package/dist/components/q2-action-group.js.map +1 -1
  330. package/dist/components/q2-action-group2.js +151 -0
  331. package/dist/components/q2-action-group2.js.map +1 -0
  332. package/dist/components/q2-action-sheet.js +2 -1362
  333. package/dist/components/q2-action-sheet.js.map +1 -1
  334. package/dist/components/q2-avatar2.js +1 -1
  335. package/dist/components/q2-badge2.js +54 -16
  336. package/dist/components/q2-badge2.js.map +1 -1
  337. package/dist/components/q2-btn2.js +1 -1
  338. package/dist/components/q2-btn2.js.map +1 -1
  339. package/dist/components/q2-calendar.js +1 -1
  340. package/dist/components/q2-calendar.js.map +1 -1
  341. package/dist/components/q2-carousel-pane.js +2 -2
  342. package/dist/components/q2-chart-area.js +1 -1
  343. package/dist/components/q2-chart-bar.js +1 -1
  344. package/dist/components/q2-chart-donut.js +1 -1
  345. package/dist/components/q2-checkbox-group.js +1 -1
  346. package/dist/components/q2-checkbox-group.js.map +1 -1
  347. package/dist/components/q2-checkbox2.js +20 -20
  348. package/dist/components/q2-checkbox2.js.map +1 -1
  349. package/dist/components/q2-currency.js +1 -1
  350. package/dist/components/q2-detail.js +1 -1
  351. package/dist/components/q2-file-picker.js +1 -1
  352. package/dist/components/q2-file-picker.js.map +1 -1
  353. package/dist/components/q2-form.d.ts +11 -0
  354. package/dist/components/q2-form.js +39 -0
  355. package/dist/components/q2-form.js.map +1 -0
  356. package/dist/components/q2-formatted-text.js +1 -1
  357. package/dist/components/q2-input2.js +5 -4
  358. package/dist/components/q2-input2.js.map +1 -1
  359. package/dist/components/q2-item2.js +1 -1
  360. package/dist/components/q2-legend2.js +2 -2
  361. package/dist/components/q2-legend2.js.map +1 -1
  362. package/dist/components/q2-list2.js +1 -1
  363. package/dist/components/q2-loc.js +22 -33
  364. package/dist/components/q2-loc.js.map +1 -1
  365. package/dist/components/q2-message2.js +1 -1
  366. package/dist/components/q2-modal.d.ts +11 -0
  367. package/dist/components/q2-modal.js +231 -0
  368. package/dist/components/q2-modal.js.map +1 -0
  369. package/dist/components/q2-month-picker.js +2 -2
  370. package/dist/components/q2-optgroup2.js +1 -1
  371. package/dist/components/q2-option2.js +23 -25
  372. package/dist/components/q2-option2.js.map +1 -1
  373. package/dist/components/q2-pagination.js +3 -3
  374. package/dist/components/q2-pill.js +1 -1
  375. package/dist/components/q2-popover2.js +1 -1
  376. package/dist/components/q2-radio-group.js +1 -1
  377. package/dist/components/q2-radio-group.js.map +1 -1
  378. package/dist/components/q2-relative-time.js +1 -1
  379. package/dist/components/q2-resize-observer2.js +2 -2
  380. package/dist/components/q2-resize-observer2.js.map +1 -1
  381. package/dist/components/q2-section.js +2 -2
  382. package/dist/components/q2-select2.js +9 -5
  383. package/dist/components/q2-select2.js.map +1 -1
  384. package/dist/components/q2-stepper-vertical.js +1 -1
  385. package/dist/components/q2-stepper.js +1 -1
  386. package/dist/components/q2-tab-container.js +1 -1
  387. package/dist/components/q2-tab-pane.js +1 -1
  388. package/dist/components/q2-tag.js +50 -8
  389. package/dist/components/q2-tag.js.map +1 -1
  390. package/dist/components/q2-textarea.js +2 -2
  391. package/dist/components/q2-textarea.js.map +1 -1
  392. package/dist/components/q2-tooltip.js +1 -1
  393. package/dist/components/q2-tooltip.js.map +1 -1
  394. package/dist/components/sanitize-html-string.js +1364 -0
  395. package/dist/components/sanitize-html-string.js.map +1 -0
  396. package/dist/components/tecton-tab-pane.js +2 -2
  397. package/dist/esm/{index-504f1a9e.js → index-f2a66217.js} +3 -2
  398. package/dist/esm/index-f2a66217.js.map +1 -0
  399. package/dist/esm/loader.js +1 -1
  400. package/dist/esm/q2-action-group.entry.js +45 -14
  401. package/dist/esm/q2-action-group.entry.js.map +1 -1
  402. package/dist/esm/q2-action-sheet.entry.js +3 -1363
  403. package/dist/esm/q2-action-sheet.entry.js.map +1 -1
  404. package/dist/esm/q2-avatar.entry.js +1 -1
  405. package/dist/esm/q2-badge_7.entry.js +59 -22
  406. package/dist/esm/q2-badge_7.entry.js.map +1 -1
  407. package/dist/esm/q2-calendar.entry.js +2 -2
  408. package/dist/esm/q2-calendar.entry.js.map +1 -1
  409. package/dist/esm/q2-card.entry.js +1 -1
  410. package/dist/esm/q2-carousel-pane.entry.js +3 -3
  411. package/dist/esm/q2-carousel.entry.js +1 -1
  412. package/dist/esm/q2-chart-area.entry.js +2 -2
  413. package/dist/esm/q2-chart-bar.entry.js +2 -2
  414. package/dist/esm/q2-chart-donut.entry.js +2 -2
  415. package/dist/esm/q2-checkbox-group.entry.js +2 -2
  416. package/dist/esm/q2-checkbox-group.entry.js.map +1 -1
  417. package/dist/esm/q2-checkbox.entry.js +21 -21
  418. package/dist/esm/q2-checkbox.entry.js.map +1 -1
  419. package/dist/esm/q2-currency.entry.js +1 -1
  420. package/dist/esm/q2-data-table.entry.js +1 -1
  421. package/dist/esm/q2-detail.entry.js +2 -2
  422. package/dist/esm/q2-dropdown-item.entry.js +1 -1
  423. package/dist/esm/q2-dropdown.entry.js +1 -1
  424. package/dist/esm/q2-editable-field.entry.js +1 -1
  425. package/dist/esm/q2-file-picker.entry.js +2 -2
  426. package/dist/esm/q2-file-picker.entry.js.map +1 -1
  427. package/dist/esm/q2-form.entry.js +19 -0
  428. package/dist/esm/q2-form.entry.js.map +1 -0
  429. package/dist/esm/q2-formatted-text.entry.js +1 -1
  430. package/dist/esm/q2-item_3.entry.js +3 -3
  431. package/dist/esm/q2-legend.entry.js +2 -2
  432. package/dist/esm/q2-legend.entry.js.map +1 -1
  433. package/dist/esm/q2-loc.entry.js +21 -27
  434. package/dist/esm/q2-loc.entry.js.map +1 -1
  435. package/dist/esm/q2-message.entry.js +2 -2
  436. package/dist/esm/q2-modal.entry.js +168 -0
  437. package/dist/esm/q2-modal.entry.js.map +1 -0
  438. package/dist/esm/q2-month-picker.entry.js +3 -3
  439. package/dist/esm/q2-optgroup.entry.js +2 -2
  440. package/dist/esm/q2-option-list_2.entry.js +2 -2
  441. package/dist/esm/q2-option.entry.js +22 -24
  442. package/dist/esm/q2-option.entry.js.map +1 -1
  443. package/dist/esm/q2-pagination.entry.js +4 -4
  444. package/dist/esm/q2-pill.entry.js +2 -2
  445. package/dist/esm/q2-radio-group.entry.js +2 -2
  446. package/dist/esm/q2-radio-group.entry.js.map +1 -1
  447. package/dist/esm/q2-radio.entry.js +1 -1
  448. package/dist/esm/q2-relative-time.entry.js +2 -2
  449. package/dist/esm/q2-resize-observer.entry.js +2 -2
  450. package/dist/esm/q2-resize-observer.entry.js.map +1 -1
  451. package/dist/esm/q2-section.entry.js +3 -3
  452. package/dist/esm/q2-select.entry.js +10 -6
  453. package/dist/esm/q2-select.entry.js.map +1 -1
  454. package/dist/esm/q2-stepper-pane.entry.js +1 -1
  455. package/dist/esm/q2-stepper-vertical.entry.js +2 -2
  456. package/dist/esm/q2-stepper.entry.js +2 -2
  457. package/dist/esm/q2-tag.entry.js +51 -9
  458. package/dist/esm/q2-tag.entry.js.map +1 -1
  459. package/dist/esm/q2-tecton-elements.js +1 -1
  460. package/dist/esm/q2-textarea.entry.js +3 -3
  461. package/dist/esm/q2-textarea.entry.js.map +1 -1
  462. package/dist/esm/q2-tooltip.entry.js +2 -2
  463. package/dist/esm/q2-tooltip.entry.js.map +1 -1
  464. package/dist/esm/sanitize-html-string-735c19f5.js +1364 -0
  465. package/dist/esm/sanitize-html-string-735c19f5.js.map +1 -0
  466. package/dist/esm/tecton-tab-pane.entry.js +2 -2
  467. package/dist/jest.setup.js +22 -0
  468. package/dist/jest.setup.js.map +1 -0
  469. package/dist/q2-tecton-elements/{index-504f1a9e.js → index-f2a66217.js} +9 -8
  470. package/dist/q2-tecton-elements/index-f2a66217.js.map +1 -0
  471. package/dist/q2-tecton-elements/q2-action-group.entry.js +49 -17
  472. package/dist/q2-tecton-elements/q2-action-group.entry.js.map +1 -1
  473. package/dist/q2-tecton-elements/q2-action-sheet.entry.js +121 -1331
  474. package/dist/q2-tecton-elements/q2-action-sheet.entry.js.map +1 -1
  475. package/dist/q2-tecton-elements/q2-avatar.entry.js +6 -6
  476. package/dist/q2-tecton-elements/q2-badge_7.entry.js +199 -164
  477. package/dist/q2-tecton-elements/q2-badge_7.entry.js.map +1 -1
  478. package/dist/q2-tecton-elements/q2-calendar.entry.js +180 -180
  479. package/dist/q2-tecton-elements/q2-calendar.entry.js.map +1 -1
  480. package/dist/q2-tecton-elements/q2-card.entry.js +1 -1
  481. package/dist/q2-tecton-elements/q2-carousel-pane.entry.js +21 -21
  482. package/dist/q2-tecton-elements/q2-carousel.entry.js +1 -1
  483. package/dist/q2-tecton-elements/q2-chart-area.entry.js +3 -3
  484. package/dist/q2-tecton-elements/q2-chart-bar.entry.js +3 -3
  485. package/dist/q2-tecton-elements/q2-chart-donut.entry.js +7 -7
  486. package/dist/q2-tecton-elements/q2-checkbox-group.entry.js +5 -5
  487. package/dist/q2-tecton-elements/q2-checkbox-group.entry.js.map +1 -1
  488. package/dist/q2-tecton-elements/q2-checkbox.entry.js +92 -88
  489. package/dist/q2-tecton-elements/q2-checkbox.entry.js.map +1 -1
  490. package/dist/q2-tecton-elements/q2-currency.entry.js +6 -6
  491. package/dist/q2-tecton-elements/q2-data-table.entry.js +1 -1
  492. package/dist/q2-tecton-elements/q2-detail.entry.js +39 -39
  493. package/dist/q2-tecton-elements/q2-dropdown-item.entry.js +1 -1
  494. package/dist/q2-tecton-elements/q2-dropdown.entry.js +1 -1
  495. package/dist/q2-tecton-elements/q2-editable-field.entry.js +1 -1
  496. package/dist/q2-tecton-elements/q2-file-picker.entry.js +2 -2
  497. package/dist/q2-tecton-elements/q2-file-picker.entry.js.map +1 -1
  498. package/dist/q2-tecton-elements/q2-form.entry.js +25 -0
  499. package/dist/q2-tecton-elements/q2-form.entry.js.map +1 -0
  500. package/dist/q2-tecton-elements/q2-formatted-text.entry.js +2 -2
  501. package/dist/q2-tecton-elements/q2-item_3.entry.js +22 -22
  502. package/dist/q2-tecton-elements/q2-legend.entry.js +6 -6
  503. package/dist/q2-tecton-elements/q2-legend.entry.js.map +1 -1
  504. package/dist/q2-tecton-elements/q2-loc.entry.js +23 -32
  505. package/dist/q2-tecton-elements/q2-loc.entry.js.map +1 -1
  506. package/dist/q2-tecton-elements/q2-message.entry.js +21 -21
  507. package/dist/q2-tecton-elements/q2-modal.entry.js +226 -0
  508. package/dist/q2-tecton-elements/q2-modal.entry.js.map +1 -0
  509. package/dist/q2-tecton-elements/q2-month-picker.entry.js +14 -14
  510. package/dist/q2-tecton-elements/q2-optgroup.entry.js +8 -8
  511. package/dist/q2-tecton-elements/q2-option-list_2.entry.js +4 -4
  512. package/dist/q2-tecton-elements/q2-option.entry.js +38 -38
  513. package/dist/q2-tecton-elements/q2-option.entry.js.map +1 -1
  514. package/dist/q2-tecton-elements/q2-pagination.entry.js +38 -38
  515. package/dist/q2-tecton-elements/q2-pill.entry.js +14 -14
  516. package/dist/q2-tecton-elements/q2-radio-group.entry.js +28 -28
  517. package/dist/q2-tecton-elements/q2-radio-group.entry.js.map +1 -1
  518. package/dist/q2-tecton-elements/q2-radio.entry.js +1 -1
  519. package/dist/q2-tecton-elements/q2-relative-time.entry.js +5 -5
  520. package/dist/q2-tecton-elements/q2-resize-observer.entry.js +5 -2
  521. package/dist/q2-tecton-elements/q2-resize-observer.entry.js.map +1 -1
  522. package/dist/q2-tecton-elements/q2-section.entry.js +19 -19
  523. package/dist/q2-tecton-elements/q2-select.entry.js +13 -9
  524. package/dist/q2-tecton-elements/q2-select.entry.js.map +1 -1
  525. package/dist/q2-tecton-elements/q2-stepper-pane.entry.js +1 -1
  526. package/dist/q2-tecton-elements/q2-stepper-vertical.entry.js +5 -5
  527. package/dist/q2-tecton-elements/q2-stepper.entry.js +22 -22
  528. package/dist/q2-tecton-elements/q2-tag.entry.js +84 -45
  529. package/dist/q2-tecton-elements/q2-tag.entry.js.map +1 -1
  530. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
  531. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js.map +1 -1
  532. package/dist/q2-tecton-elements/q2-textarea.entry.js +4 -4
  533. package/dist/q2-tecton-elements/q2-textarea.entry.js.map +1 -1
  534. package/dist/q2-tecton-elements/q2-tooltip.entry.js +2 -2
  535. package/dist/q2-tecton-elements/q2-tooltip.entry.js.map +1 -1
  536. package/dist/q2-tecton-elements/sanitize-html-string-735c19f5.js +1214 -0
  537. package/dist/q2-tecton-elements/sanitize-html-string-735c19f5.js.map +1 -0
  538. package/dist/q2-tecton-elements/tecton-tab-pane.entry.js +9 -9
  539. package/dist/types/builds/q2e/development/tecton/tecton/packages/q2-tecton-elements/.stencil/jest.setup.d.ts +1 -0
  540. package/dist/types/components/q2-action-group/q2-action-group.d.ts +5 -2
  541. package/dist/types/components/q2-badge/q2-badge.d.ts +17 -3
  542. package/dist/types/components/q2-checkbox/q2-checkbox.d.ts +3 -3
  543. package/dist/types/components/q2-form/q2-form.d.ts +6 -0
  544. package/dist/types/components/q2-loc/q2-loc.d.ts +5 -5
  545. package/dist/types/components/q2-modal/q2-modal.d.ts +80 -0
  546. package/dist/types/components/q2-option/q2-option.d.ts +4 -4
  547. package/dist/types/components/q2-select/q2-select.d.ts +1 -0
  548. package/dist/types/components/q2-tag/q2-tag.d.ts +19 -0
  549. package/dist/types/components.d.ts +182 -6
  550. package/dist/types/util.d.ts +1 -8
  551. package/dist/types/utils/helpers.d.ts +1 -13
  552. package/dist/types/utils/index.d.ts +3 -2
  553. package/package.json +3 -3
  554. package/dist/cjs/index-76f63767.js.map +0 -1
  555. package/dist/collection/components/q2-action-group/test/q2-action-group.e2e.js +0 -166
  556. package/dist/collection/components/q2-action-group/test/q2-action-group.e2e.js.map +0 -1
  557. package/dist/collection/components/q2-action-group/test/q2-action-group.spec.js.map +0 -1
  558. package/dist/esm/index-504f1a9e.js.map +0 -1
  559. package/dist/q2-tecton-elements/index-504f1a9e.js.map +0 -1
@@ -1,10 +1,10 @@
1
1
  import { r as t, c as e, h as i } from "./index-7a5365e2.js";
2
2
 
3
- const n = "*{box-sizing:border-box}*:active{outline:none}*:focus{outline:none;box-shadow:var(--const-double-focus-ring, 0 0 0 2px #ffffff, 0 0 0 4px #0066cc)}:host{box-shadow:none !important}::-moz-focus-inner{border:none}input,textarea,button{font-family:inherit;font-size:inherit;font-stretch:inherit}:host(.sr),:host(.sr) button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.sr,.sr button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.hidden{display:none}:host([hidden]){display:none}.invisible{visibility:hidden}:host{position:relative;width:100%;display:block}ul{list-style:none;padding:0;margin:0}.item-button{align-items:center;background-color:transparent;border:none;column-gap:var(--tct-legend-item-gap, var(--app-scale-2x, 10px));display:flex;height:var(--tct-legend-item-height, var(--app-scale-9x, 45px));opacity:1;padding-block:0;padding-inline:var(--tct-legend-item-padding-inline, var(--app-scale-2x, 10px));transition:opacity var(--app-tween-1, 0.2s ease);width:100%}.item-button:hover{cursor:pointer}.item-button-faded>*{opacity:var(--tct-legend-item-opacity-faded, var(--app-disabled-opacity, 0.4))}.item-color-indicator{border-radius:50%;display:inline-block;flex-shrink:0;height:var(--tct-legend-item-color-indicator-size, var(--app-scale-3x, 15px));width:var(--tct-legend-item-color-indicator-size, var(--app-scale-3x, 15px))}.item-name{color:var(--tct-legend-item-name-font-color, var(--t-text, #4d4d4d));display:inline-block;flex-grow:1;font-size:var(--tct-legend-item-name-font-size, var(--app-font-size, 14px));font-weight:var(--tct-legend-item-name-font-weight, 600);line-height:var(--tct-legend-item-name-line-height, var(--app-line-height, 1.428571429em));text-align:left}.item-value{color:var(--tct-legend-item-value-font-color, var(--t-text, #4d4d4d));display:inline-block;flex-grow:1;font-size:var(--tct-legend-item-value-font-size, var(--app-font-size, 14px));font-weight:var(--tct-legend-item-value-font-weight, 400);line-height:var(--tct-legend-item-value-line-height, var(--app-line-height, 1.428571429em));text-align:right}";
3
+ const n = "*{box-sizing:border-box}*:active{outline:none}*:focus{outline:none;box-shadow:var(--const-double-focus-ring, 0 0 0 2px #ffffff, 0 0 0 4px #0066cc)}:host{box-shadow:none !important}::-moz-focus-inner{border:none}input,textarea,button{font-family:inherit;font-size:inherit;font-stretch:inherit}:host(.sr),:host(.sr) button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.sr,.sr button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.hidden{display:none}:host([hidden]){display:none}.invisible{visibility:hidden}:host{position:relative;width:100%;display:block}ul{list-style:none;padding:0;margin:0}.item-button{align-items:center;background-color:transparent;border:none;column-gap:var(--tct-legend-item-gap, var(--app-scale-2x, 10px));display:flex;height:var(--tct-legend-item-height, 24px);opacity:1;padding-block:0;padding-inline:var(--tct-legend-item-padding-inline, var(--app-scale-2x, 10px));transition:opacity var(--app-tween-1, 0.2s ease);width:100%}.item-button:hover{cursor:pointer}.item-button-faded>*{opacity:var(--tct-legend-item-opacity-faded, var(--app-disabled-opacity, 0.4))}.item-color-indicator{border-radius:50%;display:inline-block;flex-shrink:0;height:var(--tct-legend-item-color-indicator-size, var(--app-scale-3x, 15px));width:var(--tct-legend-item-color-indicator-size, var(--app-scale-3x, 15px))}.item-name{color:var(--tct-legend-item-name-font-color, var(--t-text, #4d4d4d));display:inline-block;flex-grow:1;font-size:var(--tct-legend-item-name-font-size, var(--app-font-size, 14px));font-weight:var(--tct-legend-item-name-font-weight, 600);line-height:var(--tct-legend-item-name-line-height, var(--app-line-height, 1.428571429em));text-align:left}.item-value{color:var(--tct-legend-item-value-font-color, var(--t-text, #4d4d4d));display:inline-block;flex-grow:1;font-size:var(--tct-legend-item-value-font-size, var(--app-font-size, 14px));font-weight:var(--tct-legend-item-value-font-weight, 400);line-height:var(--tct-legend-item-value-line-height, var(--app-line-height, 1.428571429em));text-align:right}";
4
4
 
5
5
  const s = n;
6
6
 
7
- const a = class {
7
+ const o = class {
8
8
  constructor(i) {
9
9
  t(this, i);
10
10
  this.click = e(this, "click", 7);
@@ -103,10 +103,10 @@ const a = class {
103
103
  // #region Render Methods
104
104
  render() {
105
105
  return i("click-elsewhere", {
106
- key: "b80e97d61b66d2a3950c0e680d8f6fdf0594391a",
106
+ key: "17df977aa81845d2b4e6db411b2860495ba61e4b",
107
107
  onChange: () => this.onClickElsewhere(this)
108
108
  }, i("ul", {
109
- key: "14dc772fa9b1608e415573e90d4c2780c12adef5"
109
+ key: "21d4f05b1b2e5f5374e04a8a93249704043ed447"
110
110
  }, this.dataWithClasses.map((t => i("li", {
111
111
  class: "item"
112
112
  }, i("button", {
@@ -140,7 +140,7 @@ const a = class {
140
140
  }
141
141
  };
142
142
 
143
- a.style = s;
143
+ o.style = s;
144
144
 
145
- export { a as q2_legend };
145
+ export { o as q2_legend };
146
146
  //# sourceMappingURL=q2-legend.entry.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["q2LegendCss","Q2LegendStyle0","Q2Legend","componentWillLoad","this","watchHoveredItemId","hoveredItemId","watchSelectedItemId","selectedItemId","newItemId","newItemIndex","getDataIndexForId","hoveredItemIndex","selectedItemIndex","dataWithClasses","data","map","item","index","Object","assign","classes","isItemButtonFaded","isItemButtonSelected","formatValue","value","valueAsFloat","parseFloat","toString","format","Intl","NumberFormat","style","currency","id","findIndex","onClick","event","itemData","stopPropagation","itemIndex","detail","click","emit","onClickElsewhere","obj","onMouseEnter","mouseenter","onMouseLeave","mouseleave","render","h","key","onChange","class","name","backgroundColor","color"],"sources":["src/components/q2-legend/q2-legend.scss?tag=q2-legend&encapsulation=shadow","src/components/q2-legend/q2-legend.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions';\n\n:host {\n position: relative;\n width: 100%;\n display: block;\n}\n\nul {\n list-style: none;\n padding: 0;\n margin: 0;\n}\n\n.item-button {\n align-items: center;\n background-color: transparent;\n border: none;\n column-gap: var-list(--tct-legend-item-gap, --app-scale-2x, 10px);\n display: flex;\n height: var-list(--tct-legend-item-height, --app-scale-9x, 45px);\n opacity: 1;\n padding-block: 0;\n padding-inline: #{var-list(--tct-legend-item-padding-inline, --app-scale-2x, 10px)};\n transition: opacity var(--app-tween-1, 0.2s ease);\n width: 100%;\n\n &:hover {\n cursor: pointer;\n }\n\n &-faded > * {\n opacity: var-list(--tct-legend-item-opacity-faded, --app-disabled-opacity, 0.4);\n }\n}\n\n.item-color-indicator {\n border-radius: 50%;\n display: inline-block;\n flex-shrink: 0;\n height: var-list(--tct-legend-item-color-indicator-size, --app-scale-3x, 15px);\n width: var-list(--tct-legend-item-color-indicator-size, --app-scale-3x, 15px);\n}\n\n.item-name {\n color: var-list(--tct-legend-item-name-font-color, --t-text, #4d4d4d);\n display: inline-block;\n flex-grow: 1;\n font-size: var-list(--tct-legend-item-name-font-size, --app-font-size, 14px);\n font-weight: var(--tct-legend-item-name-font-weight, 600);\n line-height: var-list(--tct-legend-item-name-line-height, --app-line-height, 1.428571429em);\n text-align: left;\n}\n\n.item-value {\n color: var-list(--tct-legend-item-value-font-color, --t-text, #4d4d4d);\n display: inline-block;\n flex-grow: 1;\n font-size: var-list(--tct-legend-item-value-font-size, --app-font-size, 14px);\n font-weight: var-list(--tct-legend-item-value-font-weight, 400);\n line-height: var-list(--tct-legend-item-value-line-height, --app-line-height, 1.428571429em);\n text-align: right;\n}\n","import { Component, ComponentInterface, Event, EventEmitter, h, Prop, State, Watch } from '@stencil/core';\nimport { IDonutChartData } from 'q2-tecton-common/lib/types/element-types';\n\n@Component({\n tag: 'q2-legend',\n shadow: true,\n styleUrl: 'q2-legend.scss',\n})\nexport class Q2Legend implements ComponentInterface {\n // #region State Properties\n\n @State()\n hoveredItemIndex: number = -1;\n\n @State()\n selectedItemIndex: number = -1;\n\n // #endregion\n // #region Public Property API\n\n /** An array of objects that contain the data to be displayed. */\n @Prop()\n data: IDonutChartData[] = [];\n\n /** The format of the value displayed in the legend. */\n @Prop({ reflect: true })\n format: 'default' | 'currency' = 'default';\n\n /** The id of the item to set as hovered. */\n @Prop({ reflect: true })\n hoveredItemId: string = null;\n\n /** The id of the item to set as selected. */\n @Prop({ reflect: true })\n selectedItemId: string = null;\n\n // #endregion\n // #region Events\n\n @Event()\n click: EventEmitter<IDonutChartData>;\n\n @Event()\n mouseenter: EventEmitter<IDonutChartData>;\n\n @Event()\n mouseleave: EventEmitter<IDonutChartData>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n componentWillLoad() {\n this.watchHoveredItemId(this.hoveredItemId);\n this.watchSelectedItemId(this.selectedItemId);\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('hoveredItemId')\n watchHoveredItemId(newItemId: string) {\n const newItemIndex = this.getDataIndexForId(newItemId);\n this.hoveredItemIndex = newItemIndex;\n }\n\n @Watch('selectedItemId')\n watchSelectedItemId(newItemId: string) {\n const newItemIndex = this.getDataIndexForId(newItemId);\n this.selectedItemIndex = newItemIndex;\n }\n\n // #endregion\n // #region Local Methods\n\n get dataWithClasses() {\n return this.data.map((item, index) => ({\n ...item,\n classes: {\n 'item-button': true,\n 'item-button-faded': this.isItemButtonFaded(index),\n 'item-button-selected': this.isItemButtonSelected(index),\n },\n }));\n }\n\n formatValue(value: string | number) {\n const valueAsFloat = parseFloat(value.toString());\n if (this.format === 'currency') {\n return Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n }).format(valueAsFloat);\n }\n\n return Intl.NumberFormat('en-US').format(valueAsFloat);\n }\n\n getDataIndexForId(id: string) {\n const index = this.data.findIndex(item => item.id === id);\n return index >= 0 ? index : -1;\n }\n\n isItemButtonFaded(index: number) {\n if (this.isItemButtonSelected(index) || index == this.hoveredItemIndex) return false;\n\n if (this.selectedItemIndex >= 0 && this.hoveredItemIndex === -1) return true;\n\n return this.hoveredItemIndex >= 0 && index !== this.hoveredItemIndex;\n }\n\n isItemButtonSelected(index: number) {\n return index === this.selectedItemIndex;\n }\n\n onClick(event: MouseEvent, itemData: IDonutChartData) {\n event.stopPropagation();\n const itemIndex = this.getDataIndexForId(itemData.id);\n if (this.selectedItemIndex === itemIndex) {\n this.selectedItemIndex = -1;\n if (event.detail === 0) {\n // Keyboard click\n this.hoveredItemIndex = -1;\n } else {\n // Mouse click\n this.hoveredItemIndex = itemIndex;\n }\n this.click.emit(null);\n return;\n }\n\n this.selectedItemIndex = itemIndex;\n this.click.emit(this.data[itemIndex]);\n }\n\n onClickElsewhere(obj) {\n obj.selectedItemIndex = -1;\n }\n\n onMouseEnter(event: Event, itemData: IDonutChartData) {\n event.stopPropagation();\n const itemIndex = this.getDataIndexForId(itemData.id);\n this.hoveredItemIndex = itemIndex;\n this.mouseenter.emit(this.data[itemIndex]);\n }\n\n onMouseLeave(event: Event, itemData: IDonutChartData) {\n event.stopPropagation();\n const itemIndex = this.getDataIndexForId(itemData.id);\n this.hoveredItemIndex = -1;\n this.mouseleave.emit(this.data[itemIndex]);\n }\n\n // #endregion\n // #region Render Methods\n\n render() {\n return (\n <click-elsewhere onChange={() => this.onClickElsewhere(this)}>\n <ul>\n {this.dataWithClasses.map(item => (\n <li class=\"item\">\n <button\n test-id=\"item\"\n aria-label={`${item.name} ${this.formatValue(item.value)}`}\n class={item.classes}\n onClick={event => this.onClick(event, item)}\n onMouseEnter={event => this.onMouseEnter(event, item)}\n onMouseLeave={event => this.onMouseLeave(event, item)}\n >\n <span\n test-id=\"itemColor\"\n class=\"item-color-indicator\"\n style={{ backgroundColor: item.color }}\n aria-hidden=\"true\"\n />\n <span\n test-id=\"itemName\"\n class=\"item-name\"\n >\n {item.name}\n </span>\n <span\n id={`item-${item.id}`}\n test-id=\"itemValue\"\n class=\"item-value\"\n >\n {this.formatValue(item.value)}\n </span>\n </button>\n </li>\n ))}\n </ul>\n </click-elsewhere>\n );\n }\n\n // #endregion\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["q2LegendCss","Q2LegendStyle0","Q2Legend","componentWillLoad","this","watchHoveredItemId","hoveredItemId","watchSelectedItemId","selectedItemId","newItemId","newItemIndex","getDataIndexForId","hoveredItemIndex","selectedItemIndex","dataWithClasses","data","map","item","index","Object","assign","classes","isItemButtonFaded","isItemButtonSelected","formatValue","value","valueAsFloat","parseFloat","toString","format","Intl","NumberFormat","style","currency","id","findIndex","onClick","event","itemData","stopPropagation","itemIndex","detail","click","emit","onClickElsewhere","obj","onMouseEnter","mouseenter","onMouseLeave","mouseleave","render","h","key","onChange","class","name","backgroundColor","color"],"sources":["src/components/q2-legend/q2-legend.scss?tag=q2-legend&encapsulation=shadow","src/components/q2-legend/q2-legend.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions';\n\n:host {\n position: relative;\n width: 100%;\n display: block;\n}\n\nul {\n list-style: none;\n padding: 0;\n margin: 0;\n}\n\n.item-button {\n align-items: center;\n background-color: transparent;\n border: none;\n column-gap: var-list(--tct-legend-item-gap, --app-scale-2x, 10px);\n display: flex;\n height: var-list(--tct-legend-item-height, 24px);\n opacity: 1;\n padding-block: 0;\n padding-inline: #{var-list(--tct-legend-item-padding-inline, --app-scale-2x, 10px)};\n transition: opacity var(--app-tween-1, 0.2s ease);\n width: 100%;\n\n &:hover {\n cursor: pointer;\n }\n\n &-faded > * {\n opacity: var-list(--tct-legend-item-opacity-faded, --app-disabled-opacity, 0.4);\n }\n}\n\n.item-color-indicator {\n border-radius: 50%;\n display: inline-block;\n flex-shrink: 0;\n height: var-list(--tct-legend-item-color-indicator-size, --app-scale-3x, 15px);\n width: var-list(--tct-legend-item-color-indicator-size, --app-scale-3x, 15px);\n}\n\n.item-name {\n color: var-list(--tct-legend-item-name-font-color, --t-text, #4d4d4d);\n display: inline-block;\n flex-grow: 1;\n font-size: var-list(--tct-legend-item-name-font-size, --app-font-size, 14px);\n font-weight: var(--tct-legend-item-name-font-weight, 600);\n line-height: var-list(--tct-legend-item-name-line-height, --app-line-height, 1.428571429em);\n text-align: left;\n}\n\n.item-value {\n color: var-list(--tct-legend-item-value-font-color, --t-text, #4d4d4d);\n display: inline-block;\n flex-grow: 1;\n font-size: var-list(--tct-legend-item-value-font-size, --app-font-size, 14px);\n font-weight: var-list(--tct-legend-item-value-font-weight, 400);\n line-height: var-list(--tct-legend-item-value-line-height, --app-line-height, 1.428571429em);\n text-align: right;\n}\n","import { Component, ComponentInterface, Event, EventEmitter, h, Prop, State, Watch } from '@stencil/core';\nimport { IDonutChartData } from 'q2-tecton-common/lib/types/element-types';\n\n@Component({\n tag: 'q2-legend',\n shadow: true,\n styleUrl: 'q2-legend.scss',\n})\nexport class Q2Legend implements ComponentInterface {\n // #region State Properties\n\n @State()\n hoveredItemIndex: number = -1;\n\n @State()\n selectedItemIndex: number = -1;\n\n // #endregion\n // #region Public Property API\n\n /** An array of objects that contain the data to be displayed. */\n @Prop()\n data: IDonutChartData[] = [];\n\n /** The format of the value displayed in the legend. */\n @Prop({ reflect: true })\n format: 'default' | 'currency' = 'default';\n\n /** The id of the item to set as hovered. */\n @Prop({ reflect: true })\n hoveredItemId: string = null;\n\n /** The id of the item to set as selected. */\n @Prop({ reflect: true })\n selectedItemId: string = null;\n\n // #endregion\n // #region Events\n\n @Event()\n click: EventEmitter<IDonutChartData>;\n\n @Event()\n mouseenter: EventEmitter<IDonutChartData>;\n\n @Event()\n mouseleave: EventEmitter<IDonutChartData>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n componentWillLoad() {\n this.watchHoveredItemId(this.hoveredItemId);\n this.watchSelectedItemId(this.selectedItemId);\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('hoveredItemId')\n watchHoveredItemId(newItemId: string) {\n const newItemIndex = this.getDataIndexForId(newItemId);\n this.hoveredItemIndex = newItemIndex;\n }\n\n @Watch('selectedItemId')\n watchSelectedItemId(newItemId: string) {\n const newItemIndex = this.getDataIndexForId(newItemId);\n this.selectedItemIndex = newItemIndex;\n }\n\n // #endregion\n // #region Local Methods\n\n get dataWithClasses() {\n return this.data.map((item, index) => ({\n ...item,\n classes: {\n 'item-button': true,\n 'item-button-faded': this.isItemButtonFaded(index),\n 'item-button-selected': this.isItemButtonSelected(index),\n },\n }));\n }\n\n formatValue(value: string | number) {\n const valueAsFloat = parseFloat(value.toString());\n if (this.format === 'currency') {\n return Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n }).format(valueAsFloat);\n }\n\n return Intl.NumberFormat('en-US').format(valueAsFloat);\n }\n\n getDataIndexForId(id: string) {\n const index = this.data.findIndex(item => item.id === id);\n return index >= 0 ? index : -1;\n }\n\n isItemButtonFaded(index: number) {\n if (this.isItemButtonSelected(index) || index == this.hoveredItemIndex) return false;\n\n if (this.selectedItemIndex >= 0 && this.hoveredItemIndex === -1) return true;\n\n return this.hoveredItemIndex >= 0 && index !== this.hoveredItemIndex;\n }\n\n isItemButtonSelected(index: number) {\n return index === this.selectedItemIndex;\n }\n\n onClick(event: MouseEvent, itemData: IDonutChartData) {\n event.stopPropagation();\n const itemIndex = this.getDataIndexForId(itemData.id);\n if (this.selectedItemIndex === itemIndex) {\n this.selectedItemIndex = -1;\n if (event.detail === 0) {\n // Keyboard click\n this.hoveredItemIndex = -1;\n } else {\n // Mouse click\n this.hoveredItemIndex = itemIndex;\n }\n this.click.emit(null);\n return;\n }\n\n this.selectedItemIndex = itemIndex;\n this.click.emit(this.data[itemIndex]);\n }\n\n onClickElsewhere(obj) {\n obj.selectedItemIndex = -1;\n }\n\n onMouseEnter(event: Event, itemData: IDonutChartData) {\n event.stopPropagation();\n const itemIndex = this.getDataIndexForId(itemData.id);\n this.hoveredItemIndex = itemIndex;\n this.mouseenter.emit(this.data[itemIndex]);\n }\n\n onMouseLeave(event: Event, itemData: IDonutChartData) {\n event.stopPropagation();\n const itemIndex = this.getDataIndexForId(itemData.id);\n this.hoveredItemIndex = -1;\n this.mouseleave.emit(this.data[itemIndex]);\n }\n\n // #endregion\n // #region Render Methods\n\n render() {\n return (\n <click-elsewhere onChange={() => this.onClickElsewhere(this)}>\n <ul>\n {this.dataWithClasses.map(item => (\n <li class=\"item\">\n <button\n test-id=\"item\"\n aria-label={`${item.name} ${this.formatValue(item.value)}`}\n class={item.classes}\n onClick={event => this.onClick(event, item)}\n onMouseEnter={event => this.onMouseEnter(event, item)}\n onMouseLeave={event => this.onMouseLeave(event, item)}\n >\n <span\n test-id=\"itemColor\"\n class=\"item-color-indicator\"\n style={{ backgroundColor: item.color }}\n aria-hidden=\"true\"\n />\n <span\n test-id=\"itemName\"\n class=\"item-name\"\n >\n {item.name}\n </span>\n <span\n id={`item-${item.id}`}\n test-id=\"itemValue\"\n class=\"item-value\"\n >\n {this.formatValue(item.value)}\n </span>\n </button>\n </li>\n ))}\n </ul>\n </click-elsewhere>\n );\n }\n\n // #endregion\n}\n"],"mappings":"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"}
@@ -1,17 +1,16 @@
1
- import { r as t, h as i, g as n } from "./index-7a5365e2.js";
1
+ import { r as t, g as i } from "./index-7a5365e2.js";
2
2
 
3
- import { l as s } from "./index-504f1a9e.js";
3
+ import { l as n } from "./index-f2a66217.js";
4
4
 
5
5
  const e = "*{box-sizing:border-box}*:active{outline:none}*:focus{outline:none;box-shadow:var(--const-double-focus-ring, 0 0 0 2px #ffffff, 0 0 0 4px #0066cc)}:host{box-shadow:none !important}::-moz-focus-inner{border:none}input,textarea,button{font-family:inherit;font-size:inherit;font-stretch:inherit}:host(.sr),:host(.sr) button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.sr,.sr button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.hidden{display:none}:host([hidden]){display:none}.invisible{visibility:hidden}:host{display:inline}";
6
6
 
7
7
  const o = e;
8
8
 
9
- const r = class {
9
+ const s = class {
10
10
  constructor(i) {
11
11
  t(this, i);
12
- // #endregion
13
- // #region Local Methods
14
- this.initMutationObserver = () => {
12
+ this.initMutationObserver = () => {
13
+ if (!("MutationObserver" in window)) return;
15
14
  const t = new MutationObserver(this.mutationHandler);
16
15
  t.observe(this.hostElement, {
17
16
  childList: true,
@@ -20,23 +19,20 @@ const r = class {
20
19
  });
21
20
  this.mutationObserver = t;
22
21
  };
23
- this.initValue = async () => {
24
- const t = this.hostElement.textContent.trim();
22
+ this.initValue = () => {
23
+ const {hostTextContent: t} = this;
24
+ this.hostElement.textContent = null;
25
25
  if (!this.value && t) {
26
26
  this.value = t;
27
- this.hostElement.textContent = null;
28
- } else {
29
- this.propHandler();
30
27
  }
31
28
  };
32
- this.mutationHandler = async () => {
33
- const t = this.hostElement.textContent.trim();
34
- if (t && this.value !== t) {
35
- this.value = t;
29
+ this.mutationHandler = () => {
30
+ const {hostTextContent: t} = this;
31
+ if (t && this.translatedValue !== t) {
36
32
  this.hostElement.textContent = null;
33
+ this.value = t;
37
34
  }
38
35
  };
39
- this.displayValue = undefined;
40
36
  this.substitutions = undefined;
41
37
  this.value = undefined;
42
38
  }
@@ -51,32 +47,27 @@ const r = class {
51
47
  this.initValue();
52
48
  }
53
49
  componentDidLoad() {
54
- if ("MutationObserver" in window) this.initMutationObserver();
50
+ this.initMutationObserver();
55
51
  }
56
52
  // #endregion
57
- // #region Watchers
58
- propHandler() {
59
- this.displayValue = s(this.value, this.substitutions);
53
+ // #region Local Methods
54
+ get hostTextContent() {
55
+ return this.hostElement.textContent.trim();
56
+ }
57
+ get translatedValue() {
58
+ return n(this.value, this.substitutions);
60
59
  }
61
60
  // #endregion
62
61
  // #region Render Methods
63
62
  render() {
64
- return i("span", {
65
- key: "8774b0a4bfb39826f6d7be0640c7a0244ab22a09"
66
- }, this.displayValue);
63
+ return this.translatedValue;
67
64
  }
68
65
  get hostElement() {
69
- return n(this);
70
- }
71
- static get watchers() {
72
- return {
73
- value: [ "propHandler" ],
74
- substitutions: [ "propHandler" ]
75
- };
66
+ return i(this);
76
67
  }
77
68
  };
78
69
 
79
- r.style = o;
70
+ s.style = o;
80
71
 
81
- export { r as q2_loc };
72
+ export { s as q2_loc };
82
73
  //# sourceMappingURL=q2-loc.entry.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["q2LocCss","Q2LocStyle0","Q2Loc","this","initMutationObserver","observer","MutationObserver","mutationHandler","observe","hostElement","childList","subtree","characterData","mutationObserver","initValue","async","textContent","trim","value","propHandler","disconnectedCallback","_a","disconnect","componentWillLoad","componentDidLoad","window","displayValue","loc","substitutions","render","h","key"],"sources":["src/components/q2-loc/q2-loc.scss?tag=q2-loc&encapsulation=shadow","src/components/q2-loc/q2-loc.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n\n:host {\n display: inline\n}","import { Element, Component, Prop, State, Watch, h } from '@stencil/core';\nimport { loc } from 'src/utils';\n\n@Component({ tag: 'q2-loc', shadow: true, styleUrl: 'q2-loc.scss' })\nexport class Q2Loc {\n // #region Own Properties\n\n mutationObserver: MutationObserver;\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 displayValue: string;\n\n // #endregion\n // #region Public Property API\n\n /** Any substitutions you would like to pass into the localization string. */\n @Prop()\n substitutions: string[];\n\n /**\n * The reference to the localization key you would like to display the localized output of.\n * If no value is provided, any text inside the element will be used as a fallback.\n * @localizable\n */\n @Prop({ reflect: true, mutable: true })\n value: string;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback() {\n this.mutationObserver?.disconnect();\n this.mutationObserver = null;\n }\n\n componentWillLoad() {\n this.initValue();\n }\n\n componentDidLoad() {\n if ('MutationObserver' in window) this.initMutationObserver();\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('value')\n @Watch('substitutions')\n propHandler() {\n this.displayValue = loc(this.value, this.substitutions);\n }\n\n // #endregion\n // #region Local Methods\n\n initMutationObserver = () => {\n const observer = new MutationObserver(this.mutationHandler);\n observer.observe(this.hostElement, { childList: true, subtree: true, characterData: true });\n this.mutationObserver = observer;\n };\n\n initValue = async () => {\n const textContent = this.hostElement.textContent.trim();\n if (!this.value && textContent) {\n this.value = textContent;\n this.hostElement.textContent = null;\n } else {\n this.propHandler();\n }\n };\n\n mutationHandler = async () => {\n const textContent = this.hostElement.textContent.trim();\n if (textContent && this.value !== textContent) {\n this.value = textContent;\n this.hostElement.textContent = null;\n }\n };\n\n // #endregion\n // #region Render Methods\n\n render() {\n return <span>{this.displayValue}</span>;\n }\n\n // #endregion\n}\n"],"mappings":";;;;AAAA,MAAMA,IAAW;;AACjB,MAAAC,IAAeD;;MCGFE,IAAK;;;;;QA4DdC,KAAAC,uBAAuB;MACnB,MAAMC,IAAW,IAAIC,iBAAiBH,KAAKI;MAC3CF,EAASG,QAAQL,KAAKM,aAAa;QAAEC,WAAW;QAAMC,SAAS;QAAMC,eAAe;;MACpFT,KAAKU,mBAAmBR;AAAQ;IAGpCF,KAAAW,YAAYC;MACR,MAAMC,IAAcb,KAAKM,YAAYO,YAAYC;MACjD,KAAKd,KAAKe,SAASF,GAAa;QAC5Bb,KAAKe,QAAQF;QACbb,KAAKM,YAAYO,cAAc;aAC5B;QACHb,KAAKgB;;;IAIbhB,KAAAI,kBAAkBQ;MACd,MAAMC,IAAcb,KAAKM,YAAYO,YAAYC;MACjD,IAAID,KAAeb,KAAKe,UAAUF,GAAa;QAC3Cb,KAAKe,QAAQF;QACbb,KAAKM,YAAYO,cAAc;;;;;;;;;EA7CvC,oBAAAI;;KACIC,IAAAlB,KAAKU,sBAAgB,QAAAQ,WAAA,aAAAA,EAAEC;IACvBnB,KAAKU,mBAAmB;;EAG5B,iBAAAU;IACIpB,KAAKW;;EAGT,gBAAAU;IACI,IAAI,sBAAsBC,QAAQtB,KAAKC;;;;EAQ3C,WAAAe;IACIhB,KAAKuB,eAAeC,EAAIxB,KAAKe,OAAOf,KAAKyB;;;;EAiC7C,MAAAC;IACI,OAAOC,EAAA;MAAAC,KAAA;OAAO5B,KAAKuB"}
1
+ {"version":3,"names":["q2LocCss","Q2LocStyle0","Q2Loc","this","initMutationObserver","window","observer","MutationObserver","mutationHandler","observe","hostElement","childList","subtree","characterData","mutationObserver","initValue","hostTextContent","textContent","value","translatedValue","disconnectedCallback","_a","disconnect","componentWillLoad","componentDidLoad","trim","loc","substitutions","render"],"sources":["src/components/q2-loc/q2-loc.scss?tag=q2-loc","src/components/q2-loc/q2-loc.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n\n:host {\n display: inline\n}","import { Element, Component, Prop } from '@stencil/core';\nimport { loc } from 'src/utils';\n\n@Component({ tag: 'q2-loc', shadow: false, styleUrl: 'q2-loc.scss' })\nexport class Q2Loc {\n // #region Own Properties\n\n mutationObserver: MutationObserver;\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region Public Property API\n\n /** Any substitutions you would like to pass into the localization string. */\n @Prop()\n substitutions: string[];\n\n /**\n * The reference to the localization key you would like to display the localized output of.\n * If no value is provided, any text inside the element will be used as a fallback.\n * @localizable\n */\n @Prop({ reflect: true, mutable: true })\n value: string;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback() {\n this.mutationObserver?.disconnect();\n this.mutationObserver = null;\n }\n\n componentWillLoad() {\n this.initValue();\n }\n\n componentDidLoad() {\n this.initMutationObserver();\n }\n\n // #endregion\n // #region Local Methods\n\n get hostTextContent(): string {\n return this.hostElement.textContent.trim();\n }\n\n get translatedValue(): string {\n return loc(this.value, this.substitutions);\n }\n\n initMutationObserver = () => {\n if (!('MutationObserver' in window)) return;\n const observer = new MutationObserver(this.mutationHandler);\n observer.observe(this.hostElement, { childList: true, subtree: true, characterData: true });\n this.mutationObserver = observer;\n };\n\n initValue = () => {\n const { hostTextContent } = this;\n this.hostElement.textContent = null;\n if (!this.value && hostTextContent) {\n this.value = hostTextContent;\n }\n };\n\n mutationHandler = () => {\n const { hostTextContent } = this;\n if (hostTextContent && this.translatedValue !== hostTextContent) {\n this.hostElement.textContent = null;\n this.value = hostTextContent;\n }\n };\n\n // #endregion\n // #region Render Methods\n\n render() {\n return this.translatedValue;\n }\n\n // #endregion\n}\n"],"mappings":";;;;AAAA,MAAMA,IAAW;;AACjB,MAAAC,IAAeD;;MCGFE,IAAK;;;IAqDdC,KAAAC,uBAAuB;MACnB,MAAM,sBAAsBC,SAAS;MACrC,MAAMC,IAAW,IAAIC,iBAAiBJ,KAAKK;MAC3CF,EAASG,QAAQN,KAAKO,aAAa;QAAEC,WAAW;QAAMC,SAAS;QAAMC,eAAe;;MACpFV,KAAKW,mBAAmBR;AAAQ;IAGpCH,KAAAY,YAAY;MACR,OAAMC,iBAAEA,KAAoBb;MAC5BA,KAAKO,YAAYO,cAAc;MAC/B,KAAKd,KAAKe,SAASF,GAAiB;QAChCb,KAAKe,QAAQF;;;IAIrBb,KAAAK,kBAAkB;MACd,OAAMQ,iBAAEA,KAAoBb;MAC5B,IAAIa,KAAmBb,KAAKgB,oBAAoBH,GAAiB;QAC7Db,KAAKO,YAAYO,cAAc;QAC/Bd,KAAKe,QAAQF;;;;;;;;EA3CrB,oBAAAI;;KACIC,IAAAlB,KAAKW,sBAAgB,QAAAO,WAAA,aAAAA,EAAEC;IACvBnB,KAAKW,mBAAmB;;EAG5B,iBAAAS;IACIpB,KAAKY;;EAGT,gBAAAS;IACIrB,KAAKC;;;;EAMT,mBAAIY;IACA,OAAOb,KAAKO,YAAYO,YAAYQ;;EAGxC,mBAAIN;IACA,OAAOO,EAAIvB,KAAKe,OAAOf,KAAKwB;;;;EA6BhC,MAAAC;IACI,OAAOzB,KAAKgB"}
@@ -1,14 +1,14 @@
1
- import { r as t, h as a, g as e } from "./index-7a5365e2.js";
1
+ import { r as t, h as e, g as a } from "./index-7a5365e2.js";
2
2
 
3
- import { o as s, i as o, n as r, t as i, l as n } from "./index-504f1a9e.js";
3
+ import { o as s, i as o, n as r, t as i, l as n } from "./index-f2a66217.js";
4
4
 
5
5
  const c = "*{box-sizing:border-box}*:active{outline:none}*:focus{outline:none;box-shadow:var(--const-double-focus-ring, 0 0 0 2px #ffffff, 0 0 0 4px #0066cc)}:host{box-shadow:none !important}::-moz-focus-inner{border:none}input,textarea,button{font-family:inherit;font-size:inherit;font-stretch:inherit}:host(.sr),:host(.sr) button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.sr,.sr button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.hidden{display:none}:host([hidden]){display:none}.invisible{visibility:hidden}:host{display:block}:host([hidden]){display:none}.message{border-left-width:var(--tct-message-bar-width, var(--t-message-bar-width, var(--app-scale-1x, 5px)));border-left-style:solid;--comp-line-height:var(--tct-message-line-height, var(--t-message-line-height, var(--app-line-height, 1.428571429em)));display:grid;gap:var(--tct-scale-1, var(--app-scale-1x, 5px));align-items:flex-start;background:var(--tct-message-background, var(--tct-message-bg, var(--t-message-bg, var(--tct-gray-14, var(--t-gray-14, var(--tct-gray-l3, var(--app-gray-l3, #f2f2f2)))))));color:var(--tct-message-font-color, var(--t-message-font-color, inherit));box-shadow:var(--tct-message-box-shadow, var(--t-message-box-shadow, inherit));border-radius:var(--tct-message-border-radius, var(--t-message-border-radius, inherit))}.message:focus{box-shadow:var(--const-global-focus)}.message-icon{--comp-top-offset:calc(calc(var(--comp-line-height) - var(--comp-icon-size)) / 2);--tct-icon-size:var(--comp-icon-size);top:var(--comp-top-offset);margin-bottom:calc(var(--comp-top-offset) * -1)}.message-content{flex:1;line-height:var(--comp-line-height)}::slotted(ul){--comp-list-default-padding:0 0 0 var(--app-scale-3x, 15px);padding:var(--tct-message-list-padding, var(--comp-list-default-padding))}:host(:not([appearance])),:host([appearance=standard]){--comp-default-margin:var(--app-scale-3x, 5px) 0;margin:var(--tct-message-margin, var(--comp-default-margin))}:host(:not([appearance])) .message,:host([appearance=standard]) .message{--comp-icon-size:var(--tct-message-icon-size, var(--t-message-icon-size, 24px));--comp-padding:var(--tct-message-padding, var(--t-message-padding, var(--app-scale-3x, 15px)));grid-template-columns:var(--comp-icon-size) 1fr;padding:var(--comp-padding);padding-left:calc(var(--comp-padding) - var(--tct-scale-2, var(--app-scale-2x, 10px)));padding-bottom:calc(var(--comp-padding) - var(--tct-scale-1, var(--app-scale-1x, 5px)))}:host(:not([appearance])) ::slotted(ul),:host([appearance=standard]) ::slotted(ul){--comp-list-default-margin:var(--app-scale-3x, 15px) 0;margin:var(--tct-message-list-margin, var(--comp-list-default-margin))}:host([appearance=minimal]){margin:0}:host([appearance=minimal]) .message{padding:var(--tct-message-minimal-padding, var(--t-message-minimal-padding, var(--app-scale-2x, 10px)));grid-template-columns:1fr}:host([appearance=minimal]) ::slotted(ul){margin:var(--tct-scale-1, var(--app-scale-1x, 5px)) 0}:host(:not([type])) .message,:host([type=info]) .message{border-left-color:var(--tct-stoplight-info, var(--const-stoplight-info, #0079c1))}:host(:not([type])) .message-icon,:host([type=info]) .message-icon{--tct-icon-stroke-primary:var(--tct-stoplight-info, var(--const-stoplight-info, #0079c1));--tct-icon-stroke-secondary:var(--tct-stoplight-info, var(--const-stoplight-info, #0079c1))}:host([type=success]) .message{border-left-color:var(--tct-stoplight-success, var(--const-stoplight-success, #0e8a00))}:host([type=success]) .message-icon{--tct-icon-stroke-primary:var(--tct-stoplight-success, var(--const-stoplight-success, #0e8a00));--tct-icon-stroke-secondary:var(--tct-stoplight-success, var(--const-stoplight-success, #0e8a00))}:host([type=warning]) .message{border-left-color:var(--tct-stoplight-warning, var(--const-stoplight-warning, #c35500))}:host([type=warning]) .message-icon{--tct-icon-stroke-primary:var(--tct-stoplight-warning, var(--const-stoplight-warning, #c35500));--tct-icon-stroke-secondary:var(--tct-stoplight-warning, var(--const-stoplight-warning, #c35500))}:host([type=error]) .message,:host([type=danger]) .message{border-left-color:var(--tct-stoplight-error, var(--const-stoplight-alert, #d20a0a))}:host([type=error]) .message-icon,:host([type=danger]) .message-icon{--tct-icon-stroke-primary:var(--tct-stoplight-error, var(--const-stoplight-alert, #d20a0a));--tct-icon-stroke-secondary:var(--tct-stoplight-error, var(--const-stoplight-alert, #d20a0a))}";
6
6
 
7
7
  const p = c;
8
8
 
9
9
  const d = class {
10
- constructor(a) {
11
- t(this, a);
10
+ constructor(e) {
11
+ t(this, e);
12
12
  this.presentToggle = undefined;
13
13
  this.appearance = "standard";
14
14
  this.description = false;
@@ -44,15 +44,15 @@ const d = class {
44
44
  return i();
45
45
  }
46
46
  messageIcon(t) {
47
- const e = {
47
+ const a = {
48
48
  success: "success",
49
49
  warning: "warning",
50
50
  danger: "error",
51
51
  error: "error",
52
52
  info: "info"
53
53
  };
54
- const s = e[t] || e.info;
55
- return a("q2-icon", {
54
+ const s = a[t] || a.info;
55
+ return e("q2-icon", {
56
56
  type: s,
57
57
  class: "message-icon"
58
58
  });
@@ -61,35 +61,35 @@ const d = class {
61
61
  // #region Render Methods
62
62
  render() {
63
63
  const {isFirefox: t} = this;
64
- const e = t && this.presentToggle;
64
+ const a = t && this.presentToggle;
65
65
  const s = !t && this.presentToggle;
66
66
  const {description: o} = this;
67
67
  const r = n(`tecton.element.message.type.${this.type ? this.type : "info"}`);
68
- return a("div", {
69
- key: "862e4f7aa7ae624a695ce6727f72ed8759584173",
68
+ return e("div", {
69
+ key: "ccca9e80908f73482c73f865743e5f7cd6438d99",
70
70
  tabindex: "-1",
71
71
  class: "message",
72
72
  role: o ? undefined : "alert",
73
73
  "aria-live": o ? undefined : "assertive",
74
74
  "aria-atomic": o ? undefined : "true",
75
- "aria-relevant": o && e ? undefined : "all",
75
+ "aria-relevant": o && a ? undefined : "all",
76
76
  "test-id": "messageContainer"
77
- }, this.appearance === "standard" ? this.messageIcon(this.type) : "", s && a("div", {
78
- key: "84084e80aac97b4e4e33a2bcf348094cd88279fb",
77
+ }, this.appearance === "standard" ? this.messageIcon(this.type) : "", s && e("div", {
78
+ key: "a9937495e83a7e0852034c36639d8c60ea3c30ac",
79
79
  class: "sr"
80
- }), a("div", {
81
- key: "4a437099dce9df5657a7f5039a55f5b326d2ee58",
80
+ }), e("div", {
81
+ key: "e650f7ef7c2544e44f63ce7a23f33f04145a7e83",
82
82
  class: "sr message-label"
83
- }, r), a("div", {
84
- key: "8bf021fb84aa6d4973546060acaddae5d059d351",
83
+ }, r), e("div", {
84
+ key: "daa66069373ac3030fb33dc3c88c0621c91bb6a4",
85
85
  class: "message-content",
86
- "aria-hidden": e ? "true" : undefined
87
- }, a("slot", {
88
- key: "1790d7a0df5758d13c8b76577a4703808cddc832"
86
+ "aria-hidden": a ? "true" : undefined
87
+ }, e("slot", {
88
+ key: "464a52a941be194c1267beee2c1b307ece17f964"
89
89
  })));
90
90
  }
91
91
  get hostElement() {
92
- return e(this);
92
+ return a(this);
93
93
  }
94
94
  };
95
95
 
@@ -0,0 +1,226 @@
1
+ import { r as t, c as i, h as o, g as a } from "./index-7a5365e2.js";
2
+
3
+ import { p as e, w as r, e as s } from "./index-f2a66217.js";
4
+
5
+ import { s as d } from "./sanitize-html-string-735c19f5.js";
6
+
7
+ const n = '*{box-sizing:border-box}*:active{outline:none}*:focus{outline:none;box-shadow:var(--const-double-focus-ring, 0 0 0 2px #ffffff, 0 0 0 4px #0066cc)}:host{box-shadow:none !important}::-moz-focus-inner{border:none}input,textarea,button{font-family:inherit;font-size:inherit;font-stretch:inherit}:host(.sr),:host(.sr) button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.sr,.sr button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.hidden{display:none}:host([hidden]){display:none}.invisible{visibility:hidden}@keyframes showBackdrop{from{opacity:0}}@keyframes hideBackdrop{to{opacity:0}}dialog{--comp-border-radius-default:var(--app-scale-3x, 15px);--comp-border-radius:var(--tct-modal-border-radius, var(--comp-border-radius-default));--comp-desktop-border-radius:var(--tct-modal-border-radius, var(--app-scale-3x, 15px));--comp-close-button-size:var(--tct-modal-close-button-size, var(--t-a11y-min-size, 44px));--comp-header-height:var(--tct-modal-header-height, var(--t-a11y-min-size, 44px));--comp-dialog-background:var(--tct-modal-background, var(--t-base, #ffffff));--comp-dialog-color:var(--tct-modal-color, var(--t-text, #4d4d4d));--comp-dialog-padding:var(--tct-modal-padding, var(--app-scale-3x, 15px));--comp-content-gradient-height:var(--tct-modal-content-gradient-height, var(--app-scale-2x, 10px));--comp-dialog-gap:var(--tct-modal-gap, var(--app-scale-2x, 10px));--comp-dialog-max-width:var(--tct-modal-max-width, 600px);--comp-dialog-max-height:var(--tct-modal-max-height, 100vh);--comp-dialog-min-height:var(--tct-modal-min-height, 40vh);--comp-dialog-box-shadow:var(--tct-modal-box-shadow, var(--app-shadow-2, 0px 0px 2px rgba(0, 0, 0, 0.12), 0px 4px 8px rgba(0, 0, 0, 0.14)));position:fixed;top:100%;bottom:unset;color:var(--comp-dialog-color);background:var(--comp-dialog-background);transition:transform var(--tct-modal-tween, var(--app-tween-2, 0.4s ease)), opacity var(--tct-modal-tween, var(--app-tween-2, 0.4s ease));width:100%;max-width:var(--comp-dialog-max-width);border:0;border-radius:var(--comp-border-radius);box-shadow:var(--comp-dialog-box-shadow);padding:0;height:auto;overflow:hidden}dialog::backdrop{opacity:0;background:var(--tct-modal-backdrop-background, var(--t-top-a2, rgba(13, 13, 13, 0.6)))}dialog[open]{border-radius:var(--comp-desktop-border-radius);top:0px;bottom:0px;height:fit-content;transform:translateY(10%);opacity:1}dialog[open].is-opening,dialog[open].is-open{opacity:1;transform:translateY(0)}dialog[open].is-opening::backdrop,dialog[open].is-open::backdrop{opacity:1;animation:showBackdrop var(--tct-modal-tween, var(--app-tween-2, 0.4s ease))}dialog[open].is-closing{transform:translateY(10%)}dialog[open].is-closing::backdrop{animation:hideBackdrop var(--tct-modal-tween, var(--app-tween-2, 0.4s ease))}.content{overflow-y:auto;--comp-scrollbar-size:var(--tct-scrollbar-size, var(--t-scrollbar-size, var(--app-scale-1x, 5px)));--comp-scrollbar-border-radius:var(--tct-scrollbar-border-radius, var(--t-scrollbar-border-radius, var(--app-border-radius-1, 4px)));--comp-scrollbar-color:var(--tct-scrollbar-color, var(--t-scrollbar-color, var(--t-a11y-gray-color, #747474)));scrollbar-width:thin;scrollbar-color:var(--comp-scrollbar-color) transparent}.content::-webkit-scrollbar{width:var(--comp-scrollbar-size);height:var(--comp-scrollbar-size);margin:5px}.content::-webkit-scrollbar-thumb{background:var(--comp-scrollbar-color);border-radius:var(--comp-scrollbar-border-radius)}.content::-webkit-scrollbar-track{background:transparent;border-radius:var(--comp-scrollbar-border-radius)}.content .icon{height:var(--tct-modal-icon-size, var(--app-scale-9x, 45px));margin:var(--tct-modal-icon-margin, var(--app-scale-2x, 10px));display:flex;justify-content:center}.content .icon q2-icon{width:var(--tct-modal-icon-size, var(--app-scale-9x, 45px))}.content .image{display:flex;justify-content:center}.content .image img{width:100%;border-radius:var(--tct-modal-image-border-radius, var(--app-border-radius-2, 8px))}.content .message{font-size:1rem}.content.more-gradient{-webkit-mask-image:linear-gradient(to bottom, red 85%, transparent 100%);mask-image:linear-gradient(to bottom, red 85%, transparent 100%)}.interior{display:grid;min-height:var(--comp-dialog-min-height);grid-template-rows:auto 1fr auto;gap:var(--comp-dialog-gap);max-height:calc(var(--comp-dialog-max-height) - var(--comp-dialog-padding));padding:var(--comp-dialog-padding)}.interior.is-list header,.interior.is-list footer{position:relative}.interior.is-list header:before,.interior.is-list footer:before{content:"";display:block;position:absolute;left:0;height:var(--comp-content-gradient-height);width:100%;z-index:1}header{display:flex;justify-content:space-between}header .title{text-overflow:ellipsis;overflow:hidden;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;text-align:left;font-weight:var(--tct-modal-title-font-weight, 400);margin:0;padding-top:0.5rem}header .btn-close{grid-area:close;width:var(--comp-close-button-size);height:var(--comp-close-button-size)}';
8
+
9
+ const c = n;
10
+
11
+ const l = class {
12
+ constructor(o) {
13
+ t(this, o);
14
+ this.tctClick = i(this, "tctClick", 7);
15
+ this.tctClose = i(this, "tctClose", 7);
16
+ this.tctOpen = i(this, "tctOpen", 7);
17
+ this.tctReady = i(this, "tctReady", 3);
18
+ // #region Own Properties
19
+ // to prevent background scroll when modal scrolls
20
+ this.bodyOverflow = "";
21
+ this.scheduledAfterRender = [];
22
+ // #endregion
23
+ // #region Local Methods
24
+ // to be removed
25
+ this.iconStyle = () => {
26
+ const t = {};
27
+ if (this.iconStrokePrimary) t["--tct-icon-stroke-primary"] = this.iconStrokePrimary;
28
+ if (this.iconStrokeSecondary) t["--tct-icon-stroke-secondary"] = this.iconStrokeSecondary;
29
+ if (this.iconFillColor) t["--tct-icon-fill"] = this.iconFillColor;
30
+ if (this.iconStrokeWidth) t["--tct-icon-stroke-width"] = this.iconStrokeWidth;
31
+ return t;
32
+ };
33
+ this.initializeModal = () => {
34
+ // limits 4 buttons in action slot
35
+ this.hostElement.querySelectorAll('[slot="action"]').forEach(((t, i) => {
36
+ if (i >= this.maxActionButtons) {
37
+ console.warn(`q2-modal allows up to ${this.maxActionButtons} action buttons, [${t.getAttribute("label") || t.textContent}] button is now hidden.`);
38
+ t.hidden = true;
39
+ }
40
+ }));
41
+ this.contentElement.scrollTo({
42
+ top: 0
43
+ });
44
+ this.debouncedScroll();
45
+ };
46
+ this.onCancel = t => {
47
+ t.preventDefault();
48
+ this.closeModal();
49
+ };
50
+ this.onClick = t => {
51
+ t.stopPropagation();
52
+ const i = t.target;
53
+ if (!(i instanceof HTMLElement)) return;
54
+ const o = i.getAttribute("slot");
55
+ if (o === "action") {
56
+ this.tctClick.emit({
57
+ value: i.dataset.value
58
+ });
59
+ this.onCancel(t);
60
+ } else {
61
+ const o = !!i.closest(".interior , q2-modal");
62
+ if (o) return;
63
+ this.onCancel(t);
64
+ }
65
+ };
66
+ this.onContentScroll = () => {
67
+ var t;
68
+ const i = this.contentElement.scrollHeight;
69
+ const o = Math.ceil(this.contentElement.scrollTop);
70
+ const a = Math.ceil(((t = this.contentElement.getBoundingClientRect()) === null || t === void 0 ? void 0 : t.height) || 0);
71
+ // to show bottom gradient when more contents available
72
+ if (i > a) {
73
+ i <= a + o ? this.contentElement.classList.remove("more-gradient") : this.contentElement.classList.add("more-gradient");
74
+ } else {
75
+ this.contentElement.classList.remove("more-gradient");
76
+ }
77
+ };
78
+ this.maxActionButtons = 4;
79
+ this.renderStatus = "is-closing";
80
+ this.closable = true;
81
+ this.customMarkup = undefined;
82
+ this.description = undefined;
83
+ this.icon = undefined;
84
+ this.iconFillColor = undefined;
85
+ this.iconStrokePrimary = undefined;
86
+ this.iconStrokeSecondary = undefined;
87
+ this.iconStrokeWidth = undefined;
88
+ this.imageSrc = undefined;
89
+ this.title = undefined;
90
+ }
91
+ // #endregion
92
+ // #region Component Lifecycle Events
93
+ disconnectedCallback() {
94
+ var t;
95
+ this.dialogElement.removeEventListener("cancel", this.onCancel);
96
+ (t = this.contentElement) === null || t === void 0 ? void 0 : t.removeEventListener("scroll", this.debouncedScroll);
97
+ }
98
+ componentDidLoad() {
99
+ this.dialogElement.addEventListener("cancel", this.onCancel);
100
+ this.tctReady.emit();
101
+ this.bodyOverflow = document.body.style.overflow;
102
+ this.debouncedScroll = e(this.onContentScroll, 100);
103
+ this.contentElement.addEventListener("scroll", this.debouncedScroll);
104
+ }
105
+ componentDidRender() {
106
+ var t;
107
+ (t = this.scheduledAfterRender) === null || t === void 0 ? void 0 : t.forEach((t => t()));
108
+ this.scheduledAfterRender = [];
109
+ }
110
+ // #endregion
111
+ // #region Public Methods API
112
+ async closeModal(t) {
113
+ this.tctClose.emit(t);
114
+ this.renderStatus = "is-closing";
115
+ document.body.style.overflow = this.bodyOverflow;
116
+ this.dialogElement.addEventListener("transitionend", (() => {
117
+ if (this.renderStatus !== "is-closing") return;
118
+ this.dialogElement.close();
119
+ this.renderStatus = null;
120
+ }), {
121
+ once: true
122
+ });
123
+ }
124
+ async openModal(t) {
125
+ var i;
126
+ if ((i = this.dialogElement) === null || i === void 0 ? void 0 : i.open) return;
127
+ this.tctOpen.emit(t);
128
+ await r();
129
+ // overwrite the properties if option provided
130
+ if (t) {
131
+ this.title = (t === null || t === void 0 ? void 0 : t.title) || this.title;
132
+ this.description = (t === null || t === void 0 ? void 0 : t.description) || this.description;
133
+ this.imageSrc = (t === null || t === void 0 ? void 0 : t.imageSrc) || this.imageSrc;
134
+ this.icon = (t === null || t === void 0 ? void 0 : t.icon) || this.icon;
135
+ this.iconStrokePrimary = (t === null || t === void 0 ? void 0 : t.iconStrokePrimary) || this.iconStrokePrimary;
136
+ this.iconStrokeSecondary = (t === null || t === void 0 ? void 0 : t.imageSrc) || this.imageSrc;
137
+ this.iconFillColor = (t === null || t === void 0 ? void 0 : t.iconFillColor) || this.iconFillColor;
138
+ this.iconStrokeWidth = (t === null || t === void 0 ? void 0 : t.iconStrokeWidth) || this.iconStrokeWidth;
139
+ this.description = (t === null || t === void 0 ? void 0 : t.description) || this.description;
140
+ }
141
+ this.dialogElement.showModal();
142
+ this.dialogElement.open = true;
143
+ document.body.style.overflow = "hidden";
144
+ this.initializeModal();
145
+ this.renderStatus = "is-opening";
146
+ this.dialogElement.addEventListener("transitionend", (() => {
147
+ if (this.renderStatus !== "is-opening") return;
148
+ this.renderStatus = "is-open";
149
+ }), {
150
+ once: true
151
+ });
152
+ }
153
+ // #endregion
154
+ // #region Render Methods
155
+ render() {
156
+ const t = `interior`;
157
+ const i = `${this.renderStatus || ""}`;
158
+ return o("dialog", {
159
+ key: "73f146b4e163c9395837b932588870487645b6ce",
160
+ ref: t => this.dialogElement = t,
161
+ class: i,
162
+ onClick: this.onClick
163
+ }, o("div", {
164
+ key: "4219e99c0186ffe1a7e0d3a9e81334adb02a4979",
165
+ class: t
166
+ }, this.title && o("header", {
167
+ key: "77d134b2d00f7e4221b25917ab46714446c19b22"
168
+ }, this.title && o("h2", {
169
+ key: "0f43942c22bd5b9ca7784bcd4c637c6fc3fb1203",
170
+ class: "title"
171
+ }, this.title), !!this.closable && o("q2-btn", {
172
+ key: "6dcf3f2a05cf76a78cf8e2fddd4566d88ddb7421",
173
+ class: "btn-close",
174
+ "test-id": "btnClose",
175
+ onClick: this.onCancel,
176
+ label: "tecton.element.modal.close",
177
+ "hide-label": true
178
+ }, o("q2-icon", {
179
+ key: "8cdf1b3e2b4990547381f04527e0ca3116802949",
180
+ type: "close"
181
+ }))), o("div", {
182
+ key: "e1bcef9f5eca9e2f4504abbbd4d90ba690e4a6d2",
183
+ class: "content",
184
+ ref: t => this.contentElement = t
185
+ }, this.icon && o("div", {
186
+ key: "0bd5d3ca0d3f13c3879b752202697841fffabf94",
187
+ class: "icon"
188
+ }, o("q2-icon", {
189
+ key: "f236ba5a6f0b14fa865ace8f69813634fa65494c",
190
+ type: this.icon,
191
+ style: this.iconStyle()
192
+ })), this.imageSrc && o("div", {
193
+ key: "9c2978ebff4bdc67930fe2a5232b5fb92822e3c9",
194
+ class: "image"
195
+ }, o("img", {
196
+ key: "6c5ac47ad9f780e6496b3c8464f003a7f76cbb58",
197
+ src: this.imageSrc
198
+ })), s(this.hostElement, "content") && o("slot", {
199
+ key: "cd4bb02b38c02115a5c8601cc0c4371cbe01611d",
200
+ name: "content"
201
+ }), this.description && o("p", {
202
+ key: "e94d10a5b24629b9a8c965b28a5b439a83e1324b",
203
+ class: "description"
204
+ }, this.description), this.customMarkup && o("p", {
205
+ key: "cfc781b852faeba9d089355a92809873f0efdda0",
206
+ class: "customMarkup",
207
+ innerHTML: d(this.customMarkup)
208
+ })), o("footer", {
209
+ key: "57c18d04f08e1e00bf3e869d84e8e2f9d8901ae5"
210
+ }, o("q2-action-group", {
211
+ key: "9f27a49f45568166416acf2a9df83d3d0da58cb2",
212
+ "full-width": true
213
+ }, o("slot", {
214
+ key: "64a30e7f6ebaf5f5b99264235d5510835826f566",
215
+ name: "action"
216
+ })))));
217
+ }
218
+ get hostElement() {
219
+ return a(this);
220
+ }
221
+ };
222
+
223
+ l.style = c;
224
+
225
+ export { l as q2_modal };
226
+ //# sourceMappingURL=q2-modal.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["q2ModalCss","Q2ModalStyle0","Q2Modal","this","bodyOverflow","scheduledAfterRender","iconStyle","styleObject","iconStrokePrimary","iconStrokeSecondary","iconFillColor","iconStrokeWidth","initializeModal","hostElement","querySelectorAll","forEach","el","i","maxActionButtons","console","warn","getAttribute","textContent","hidden","contentElement","scrollTo","top","debouncedScroll","onCancel","event","preventDefault","closeModal","onClick","stopPropagation","eventTarget","target","HTMLElement","slot","tctClick","emit","value","dataset","isInContent","closest","onContentScroll","scrollHeight","scrollTop","Math","ceil","contentHeight","_a","getBoundingClientRect","height","classList","remove","add","disconnectedCallback","dialogElement","removeEventListener","componentDidLoad","addEventListener","tctReady","document","body","style","overflow","debounce","componentDidRender","fn","data","tctClose","renderStatus","close","once","openModal","option","open","tctOpen","waitForNextPaint","title","description","imageSrc","icon","showModal","render","interiorClasses","h","key","ref","class","closable","label","type","src","hasSlotContent","name","customMarkup","innerHTML","sanitizeHTMLString"],"sources":["src/components/q2-modal/q2-modal.scss?tag=q2-modal&encapsulation=shadow","src/components/q2-modal/q2-modal.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions';\n\n@keyframes showBackdrop {\n from {\n opacity: 0;\n }\n}\n\n@keyframes hideBackdrop {\n to {\n opacity: 0;\n }\n}\n\n// CSS variables don't inherit into the ::backdrop pseudo-element\n$animation-tween: #{var-list(--tct-modal-tween, --app-tween-2, unquote('0.4s ease'))};\n\ndialog {\n --comp-border-radius-default: var(--app-scale-3x, 15px);\n --comp-border-radius: #{var-list(--tct-modal-border-radius, --comp-border-radius-default)};\n --comp-desktop-border-radius: #{var-list(--tct-modal-border-radius, --app-scale-3x, 15px)};\n --comp-close-button-size: #{var-list(--tct-modal-close-button-size, --t-a11y-min-size, 44px)};\n --comp-header-height: #{var-list(--tct-modal-header-height, --t-a11y-min-size, 44px)};\n --comp-dialog-background: #{var-list(--tct-modal-background, --t-base, #ffffff)};\n --comp-dialog-color: #{var-list(--tct-modal-color, --t-text, #4d4d4d)};\n --comp-dialog-padding: #{var-list(--tct-modal-padding, --app-scale-3x, 15px)};\n --comp-content-gradient-height: #{var-list(--tct-modal-content-gradient-height, --app-scale-2x, 10px)};\n --comp-dialog-gap: #{var-list(--tct-modal-gap, --app-scale-2x, 10px)};\n --comp-dialog-max-width: #{var-list(--tct-modal-max-width, 600px)};\n --comp-dialog-max-height: #{var-list(--tct-modal-max-height, 100vh)}; // should not use vh in the extension\n --comp-dialog-min-height: #{var-list(--tct-modal-min-height, 40vh)};\n --comp-dialog-box-shadow: #{var-list(\n --tct-modal-box-shadow,\n --app-shadow-2,\n unquote(\"0px 0px 2px rgba(0, 0, 0, 0.12), 0px 4px 8px rgba(0, 0, 0, 0.14)\")\n )};\n\n position: fixed;\n top: 100%;\n bottom: unset;\n color: var(--comp-dialog-color);\n background: var(--comp-dialog-background);\n transition: transform $animation-tween, opacity $animation-tween;\n width: 100%;\n max-width: var(--comp-dialog-max-width);\n border: 0;\n border-radius: var(--comp-border-radius);\n box-shadow: var(--comp-dialog-box-shadow);\n padding: 0;\n height: auto;\n overflow: hidden;\n &::backdrop {\n opacity: 0;\n background: var-list(--tct-modal-backdrop-background, --t-top-a2, rgba(13, 13, 13, 0.6));\n }\n\n &[open] {\n border-radius: var(--comp-desktop-border-radius);\n top: 0px;\n bottom: 0px;\n height: fit-content;\n transform: translateY(10%);\n opacity: 1;\n\n &.is-opening,\n &.is-open {\n opacity: 1;\n transform: translateY(0);\n &::backdrop {\n opacity: 1;\n animation: showBackdrop $animation-tween;\n }\n }\n\n &.is-closing {\n transform: translateY(10%);\n\n &::backdrop {\n animation: hideBackdrop $animation-tween;\n }\n }\n }\n}\n\n.content {\n overflow-y: auto;\n @include tiny-scrollbar();\n\n .icon {\n height: var-list(--tct-modal-icon-size --app-scale-9x, 45px);\n margin: var-list(--tct-modal-icon-margin, --app-scale-2x, 10px);\n display: flex;\n justify-content: center;\n q2-icon {\n width: var-list(--tct-modal-icon-size --app-scale-9x, 45px);\n }\n }\n .image {\n display: flex;\n justify-content: center;\n img {\n width: 100%;\n border-radius: var-list(--tct-modal-image-border-radius, --app-border-radius-2, 8px);\n }\n }\n .message {\n font-size: 1rem;\n }\n &.more-gradient {\n -webkit-mask-image: linear-gradient(to bottom, red 85%, transparent 100%);\n mask-image: linear-gradient(to bottom, red 85%, transparent 100%);\n }\n}\n\n.interior {\n display: grid;\n min-height: var(--comp-dialog-min-height);\n grid-template-rows: auto 1fr auto;\n gap: var(--comp-dialog-gap);\n max-height: calc(var(--comp-dialog-max-height) - var(--comp-dialog-padding));\n padding: var(--comp-dialog-padding);\n\n &.is-list {\n header,\n footer {\n position: relative;\n\n &:before {\n content: '';\n display: block;\n position: absolute;\n left: 0;\n height: var(--comp-content-gradient-height);\n width: 100%;\n z-index: 1;\n }\n }\n }\n}\n\nheader {\n display: flex;\n justify-content: space-between;\n .title {\n @include line-clamp(3);\n text-align: left;\n font-weight: var-list(--tct-modal-title-font-weight, 400);\n margin: 0;\n padding-top: 0.5rem;\n }\n\n .btn-close {\n grid-area: close;\n width: var(--comp-close-button-size);\n height: var(--comp-close-button-size);\n }\n}\n","import { Component, ComponentInterface, Prop, Method, h, State, Event, EventEmitter, Element } from '@stencil/core';\nimport { ModalOption, ModalResponse } from 'q2-tecton-common/lib/utility/modal';\nimport { debounce, hasSlotContent, waitForNextPaint } from 'src/utils';\nimport sanitizeHTMLString from '@/utils/sanitize-html-string';\n\n@Component({ tag: 'q2-modal', shadow: true, styleUrl: 'q2-modal.scss' })\nexport class Q2Modal implements ComponentInterface {\n // #region Own Properties\n\n // to prevent background scroll when modal scrolls\n bodyOverflow: string = '';\n contentElement: HTMLDivElement;\n debouncedScroll: () => void;\n dialogElement: HTMLDialogElement;\n scheduledAfterRender: (() => void)[] = [];\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 maxActionButtons: number = 4;\n\n @State()\n renderStatus: 'is-open' | 'is-closing' | 'is-opening' = 'is-closing';\n\n // #endregion\n // #region Public Property API\n\n /**\n * Controls visibility of close button on top right corner.\n */\n @Prop({ reflect: true })\n closable: boolean = true;\n\n /**\n * Allows HTML markup as modal content, but it'll be sanitized as needed for security purpose.\n */\n @Prop()\n customMarkup: string;\n\n /**\n * Plain text, description of the modal.\n */\n @Prop()\n description: string;\n\n /**\n * Icon type, [See Icon document](https://tecton.q2developer.com/design-system/q2-icon).\n */\n @Prop()\n icon: string;\n\n /**\n * Icon fill color, [See Icon document](https://tecton.q2developer.com/design-system/q2-icon).\n */\n @Prop()\n iconFillColor: string;\n\n /**\n * Icon primary stroke color, [See Icon document](https://tecton.q2developer.com/design-system/q2-icon).\n */\n @Prop()\n iconStrokePrimary: string;\n\n /**\n * Icon secondary stroke color, [See Icon document](https://tecton.q2developer.com/design-system/q2-icon).\n */\n @Prop()\n iconStrokeSecondary: string;\n\n /**\n * Icon secondary stroke width, [See Icon document](https://tecton.q2developer.com/design-system/q2-icon).\n */\n @Prop()\n iconStrokeWidth: string;\n\n /**\n * Image URL in modal content, it renders with 100% width.\n */\n @Prop({ reflect: true })\n imageSrc: string;\n\n /**\n * Plain text, title of the modal on top area.\n */\n @Prop({ mutable: true, reflect: true })\n title: string;\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when one of action button is clicked.\n */\n @Event()\n tctClick: EventEmitter;\n\n /**\n * Emitted when modal is closed.\n */\n @Event()\n tctClose: EventEmitter;\n\n /**\n * Emitted when the modal is opened.\n */\n @Event()\n tctOpen: EventEmitter;\n\n /**\n * Emitted when the modal has finished rendering.\n * @private\n */\n @Event({ bubbles: false })\n tctReady: EventEmitter;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback() {\n this.dialogElement.removeEventListener('cancel', this.onCancel);\n this.contentElement?.removeEventListener('scroll', this.debouncedScroll);\n }\n\n componentDidLoad() {\n this.dialogElement.addEventListener('cancel', this.onCancel);\n this.tctReady.emit();\n this.bodyOverflow = document.body.style.overflow;\n this.debouncedScroll = debounce(this.onContentScroll, 100);\n this.contentElement.addEventListener('scroll', this.debouncedScroll);\n }\n\n componentDidRender(): void {\n this.scheduledAfterRender?.forEach(fn => fn());\n this.scheduledAfterRender = [];\n }\n\n // #endregion\n // #region Public Methods API\n\n @Method()\n async closeModal(data?: ModalResponse) {\n this.tctClose.emit(data);\n this.renderStatus = 'is-closing';\n document.body.style.overflow = this.bodyOverflow;\n this.dialogElement.addEventListener(\n 'transitionend',\n () => {\n if (this.renderStatus !== 'is-closing') return;\n this.dialogElement.close();\n this.renderStatus = null;\n },\n { once: true }\n );\n }\n\n @Method()\n async openModal(option?: ModalOption) {\n if (this.dialogElement?.open) return;\n this.tctOpen.emit(option);\n await waitForNextPaint();\n // overwrite the properties if option provided\n if (option) {\n this.title = option?.title || this.title;\n this.description = option?.description || this.description;\n this.imageSrc = option?.imageSrc || this.imageSrc;\n this.icon = option?.icon || this.icon;\n this.iconStrokePrimary = option?.iconStrokePrimary || this.iconStrokePrimary;\n this.iconStrokeSecondary = option?.imageSrc || this.imageSrc;\n this.iconFillColor = option?.iconFillColor || this.iconFillColor;\n this.iconStrokeWidth = option?.iconStrokeWidth || this.iconStrokeWidth;\n this.description = option?.description || this.description;\n }\n this.dialogElement.showModal();\n this.dialogElement.open = true;\n document.body.style.overflow = 'hidden';\n this.initializeModal();\n this.renderStatus = 'is-opening';\n this.dialogElement.addEventListener(\n 'transitionend',\n () => {\n if (this.renderStatus !== 'is-opening') return;\n this.renderStatus = 'is-open';\n },\n { once: true }\n );\n }\n\n // #endregion\n // #region Local Methods\n\n // to be removed\n\n iconStyle = () => {\n const styleObject = {};\n if (this.iconStrokePrimary) styleObject['--tct-icon-stroke-primary'] = this.iconStrokePrimary;\n if (this.iconStrokeSecondary) styleObject['--tct-icon-stroke-secondary'] = this.iconStrokeSecondary;\n if (this.iconFillColor) styleObject['--tct-icon-fill'] = this.iconFillColor;\n if (this.iconStrokeWidth) styleObject['--tct-icon-stroke-width'] = this.iconStrokeWidth;\n return styleObject;\n };\n\n initializeModal = () => {\n // limits 4 buttons in action slot\n this.hostElement.querySelectorAll<HTMLElement>('[slot=\"action\"]').forEach((el, i) => {\n if (i >= this.maxActionButtons) {\n console.warn(\n `q2-modal allows up to ${this.maxActionButtons} action buttons, [${el.getAttribute('label') || el.textContent}] button is now hidden.`\n );\n el.hidden = true;\n }\n });\n this.contentElement.scrollTo({ top: 0 });\n this.debouncedScroll();\n };\n\n onCancel = (event: Event) => {\n event.preventDefault();\n this.closeModal();\n };\n\n onClick = (event: MouseEvent) => {\n event.stopPropagation();\n const eventTarget = event.target as HTMLElement;\n if (!(eventTarget instanceof HTMLElement)) return;\n const slot = eventTarget.getAttribute('slot');\n if (slot === 'action') {\n this.tctClick.emit({ value: eventTarget.dataset.value });\n this.onCancel(event);\n } else {\n const isInContent = !!eventTarget.closest('.interior , q2-modal');\n if (isInContent) return;\n this.onCancel(event);\n }\n };\n\n onContentScroll = () => {\n const scrollHeight = this.contentElement.scrollHeight;\n const scrollTop = Math.ceil(this.contentElement.scrollTop);\n const contentHeight = Math.ceil(this.contentElement.getBoundingClientRect()?.height || 0);\n // to show bottom gradient when more contents available\n if (scrollHeight > contentHeight) {\n scrollHeight <= contentHeight + scrollTop\n ? this.contentElement.classList.remove('more-gradient')\n : this.contentElement.classList.add('more-gradient');\n } else {\n this.contentElement.classList.remove('more-gradient');\n }\n };\n\n // #endregion\n // #region Render Methods\n\n render() {\n const interiorClasses = `interior`;\n const renderStatus = `${this.renderStatus || ''}`;\n return (\n <dialog\n ref={el => (this.dialogElement = el)}\n class={renderStatus}\n onClick={this.onClick}\n >\n <div class={interiorClasses}>\n {this.title && (\n <header>\n {this.title && <h2 class=\"title\">{this.title}</h2>}\n {!!this.closable && (\n <q2-btn\n class=\"btn-close\"\n test-id=\"btnClose\"\n onClick={this.onCancel}\n label=\"tecton.element.modal.close\"\n hide-label\n >\n <q2-icon type=\"close\" />\n </q2-btn>\n )}\n </header>\n )}\n <div\n class=\"content\"\n ref={el => (this.contentElement = el)}\n >\n {this.icon && (\n <div class=\"icon\">\n <q2-icon\n type={this.icon}\n style={this.iconStyle()}\n ></q2-icon>\n </div>\n )}\n {this.imageSrc && (\n <div class=\"image\">\n <img src={this.imageSrc}></img>\n </div>\n )}\n {hasSlotContent(this.hostElement, 'content') && <slot name=\"content\"></slot>}\n {this.description && <p class=\"description\">{this.description}</p>}\n {this.customMarkup && (\n <p\n class=\"customMarkup\"\n innerHTML={sanitizeHTMLString(this.customMarkup)}\n ></p>\n )}\n </div>\n <footer>\n <q2-action-group full-width>\n <slot name=\"action\"></slot>\n </q2-action-group>\n </footer>\n </div>\n </dialog>\n );\n }\n\n // #endregion\n}\n"],"mappings":"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"}