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
@@ -2,6 +2,7 @@ import { Q2Loc } from "../q2-loc";
2
2
  import { setupSpecPageWithLoc } from "../../../utils/helpers";
3
3
  describe('q2loc', () => {
4
4
  let specPage;
5
+ let locClass;
5
6
  let locElement;
6
7
  const testStringsDict = {
7
8
  'tecton.element.loc.test': 'Test String',
@@ -16,18 +17,28 @@ describe('q2loc', () => {
16
17
  components: [Q2Loc],
17
18
  html: '<q2-loc value="tecton.element.loc.test"></q2-loc>',
18
19
  }, testStringsDict);
19
- locElement = specPage.rootInstance;
20
- expect(locElement.displayValue).toEqual('Test String');
20
+ locElement = specPage.root;
21
+ expect(locElement.textContent).toEqual('Test String');
21
22
  });
22
23
  it('translates when changed', async () => {
23
24
  specPage = await setupSpecPageWithLoc({
24
25
  components: [Q2Loc],
25
26
  html: '<q2-loc value="tecton.element.loc.test"></q2-loc>',
26
27
  }, testStringsDict);
27
- locElement = specPage.rootInstance;
28
- expect(locElement.displayValue).toEqual('Test String');
29
- locElement.value = 'tecton.element.loc.changed';
30
- expect(locElement.displayValue).toEqual('Changed String');
28
+ locClass = specPage.rootInstance;
29
+ locElement = specPage.root;
30
+ expect(locElement.textContent).toEqual('Test String');
31
+ locClass.value = 'tecton.element.loc.changed';
32
+ await specPage.waitForChanges();
33
+ expect(locElement.textContent).toEqual('Changed String');
34
+ });
35
+ it('value is preferred when textContent also provided', async () => {
36
+ specPage = await setupSpecPageWithLoc({
37
+ components: [Q2Loc],
38
+ html: '<q2-loc value="tecton.element.loc.test">tecton.element.loc.changed</q2-loc>',
39
+ }, testStringsDict);
40
+ locElement = specPage.root;
41
+ expect(locElement.textContent).toEqual('Test String');
31
42
  });
32
43
  });
33
44
  describe('when not provided', () => {
@@ -36,8 +47,8 @@ describe('q2loc', () => {
36
47
  components: [Q2Loc],
37
48
  html: '<q2-loc>tecton.element.loc.test</q2-loc>',
38
49
  }, testStringsDict);
39
- locElement = specPage.rootInstance;
40
- expect(locElement.displayValue).toEqual('Test String');
50
+ locElement = specPage.root;
51
+ expect(locElement.textContent).toEqual('Test String');
41
52
  });
42
53
  });
43
54
  });
@@ -48,18 +59,11 @@ describe('q2loc', () => {
48
59
  components: [Q2Loc],
49
60
  html: '<q2-loc value="tecton.element.loc.substitution"></q2-loc>',
50
61
  }, testStringsDict);
51
- locElement = specPage.rootInstance;
52
- locElement.substitutions = ['Jane', 'Doe'];
53
- expect(locElement.displayValue).toEqual('Substitution String with Jane and Doe');
54
- });
55
- it('applies substitutions to the textContent of the element', async () => {
56
- specPage = await setupSpecPageWithLoc({
57
- components: [Q2Loc],
58
- html: '<q2-loc>tecton.element.loc.substitution</q2-loc>',
59
- }, testStringsDict);
60
- locElement = specPage.rootInstance;
61
- locElement.substitutions = ['Jane', 'Doe'];
62
- expect(locElement.displayValue).toEqual('Substitution String with Jane and Doe');
62
+ locClass = specPage.rootInstance;
63
+ locElement = specPage.root;
64
+ locClass.substitutions = ['Jane', 'Doe'];
65
+ await specPage.waitForChanges();
66
+ expect(locElement.textContent).toEqual('Substitution String with Jane and Doe');
63
67
  });
64
68
  });
65
69
  describe('when not provided', () => {
@@ -68,97 +72,151 @@ describe('q2loc', () => {
68
72
  components: [Q2Loc],
69
73
  html: '<q2-loc>tecton.element.loc.substitution</q2-loc>',
70
74
  }, testStringsDict);
71
- locElement = specPage.rootInstance;
72
- expect(locElement.displayValue).toEqual('Substitution String with {0} and {1}');
75
+ locElement = specPage.root;
76
+ expect(locElement.textContent).toEqual('Substitution String with {0} and {1}');
73
77
  });
74
78
  });
75
79
  });
76
80
  });
77
- describe('State', () => {
78
- describe('displayValue', () => {
79
- it('is set to translated value', async () => {
80
- specPage = await setupSpecPageWithLoc({
81
- components: [Q2Loc],
82
- html: '<q2-loc value="tecton.element.loc.test"></q2-loc>',
83
- }, testStringsDict);
84
- locElement = specPage.rootInstance;
85
- expect(locElement.displayValue).toEqual('Test String');
86
- });
87
- it('is set to translated value with substitutions', async () => {
88
- specPage = await setupSpecPageWithLoc({
89
- components: [Q2Loc],
90
- html: '<q2-loc value="tecton.element.loc.substitution"></q2-loc>',
91
- }, testStringsDict);
92
- locElement = specPage.rootInstance;
93
- locElement.substitutions = ['Jane', 'Doe'];
94
- expect(locElement.displayValue).toEqual('Substitution String with Jane and Doe');
95
- });
96
- });
97
- });
98
- describe('Watchers', () => {
99
- describe('value', () => {
100
- it('executes propHandler', async () => {
81
+ describe('Lifecycle Methods', () => {
82
+ describe('componentWillLoad', () => {
83
+ it('calls initValue', async () => {
101
84
  specPage = await setupSpecPageWithLoc({
102
85
  components: [Q2Loc],
103
86
  html: '<q2-loc></q2-loc>',
104
87
  }, testStringsDict);
105
- specPage.rootInstance.propHandler = jest.fn();
106
- locElement = specPage.rootInstance;
107
- locElement.value = 'tecton.element.loc.test';
108
- expect(locElement.propHandler).toHaveBeenCalled();
88
+ locClass = specPage.rootInstance;
89
+ const initValueSpy = jest.spyOn(locClass, 'initValue');
90
+ locClass.componentWillLoad();
91
+ expect(initValueSpy).toHaveBeenCalled();
109
92
  });
110
93
  });
111
- describe('substitutions', () => {
112
- it('executes propHandler', async () => {
94
+ describe('componentDidLoad', () => {
95
+ it('calls initMutationObserver', async () => {
113
96
  specPage = await setupSpecPageWithLoc({
114
97
  components: [Q2Loc],
115
98
  html: '<q2-loc></q2-loc>',
116
99
  }, testStringsDict);
117
- locElement = specPage.rootInstance;
118
- locElement.propHandler = jest.fn();
119
- locElement.substitutions = ['Foo', 'Bar'];
120
- expect(locElement.propHandler).toHaveBeenCalled();
100
+ locClass = specPage.rootInstance;
101
+ const initMutationObserverSpy = jest.spyOn(locClass, 'initMutationObserver');
102
+ locClass.componentDidLoad();
103
+ expect(initMutationObserverSpy).toHaveBeenCalled();
121
104
  });
122
105
  });
123
106
  });
124
- describe('Local methods', () => {
125
- describe('initValue', () => {
126
- describe('when value prop provided', () => {
127
- it('calls propHandler when provided a value attribute', async () => {
107
+ describe('Local Methods', () => {
108
+ describe('Getters', () => {
109
+ describe('hostTextContent', () => {
110
+ it('returns the textContent of the host element', async () => {
128
111
  specPage = await setupSpecPageWithLoc({
129
112
  components: [Q2Loc],
130
- html: '<q2-loc value="tecton.element.loc.test"></q2-loc>',
113
+ html: '<q2-loc>Text Content</q2-loc>',
131
114
  }, testStringsDict);
132
- locElement = specPage.rootInstance;
133
- locElement.propHandler = jest.fn();
134
- locElement.initValue();
135
- expect(locElement.propHandler).toHaveBeenCalled();
136
- expect(locElement.displayValue).toEqual('Test String');
115
+ locClass = specPage.rootInstance;
116
+ locElement = specPage.root;
117
+ expect(locClass.hostTextContent).toEqual('Text Content');
137
118
  });
138
119
  });
139
- describe('when only textContent provided', () => {
140
- it('sets the value property to the textContent of the element', async () => {
120
+ describe('translatedValue', () => {
121
+ it('returns the translation of the value', async () => {
141
122
  specPage = await setupSpecPageWithLoc({
142
123
  components: [Q2Loc],
143
- html: '<q2-loc>tecton.element.loc.test</q2-loc>',
124
+ html: '<q2-loc value="tecton.element.loc.test"></q2-loc>',
144
125
  }, testStringsDict);
145
- locElement = specPage.rootInstance;
146
- expect(locElement.value).toEqual('tecton.element.loc.test');
147
- expect(locElement.displayValue).toEqual('Test String');
126
+ locClass = specPage.rootInstance;
127
+ expect(locClass.translatedValue).toEqual('Test String');
148
128
  });
149
- it('removes the textContent node after setting the value property', async () => {
150
- specPage = await setupSpecPageWithLoc({
151
- components: [Q2Loc],
152
- html: '<q2-loc>tecton.element.loc.test</q2-loc>',
153
- }, testStringsDict);
154
- locElement = specPage.rootInstance;
155
- expect(locElement.value).toEqual('tecton.element.loc.test');
156
- expect(locElement.displayValue).toEqual('Test String');
157
- expect(locElement.hostElement.textContent).toEqual('');
129
+ });
130
+ });
131
+ describe('Methods', () => {
132
+ describe('initValue', () => {
133
+ describe('when no value provided and textContent is provided', () => {
134
+ it('sets the value property to the textContent of the element', async () => {
135
+ specPage = await setupSpecPageWithLoc({
136
+ components: [Q2Loc],
137
+ html: '<q2-loc>tecton.element.loc.test</q2-loc>',
138
+ }, testStringsDict);
139
+ locClass = specPage.rootInstance;
140
+ expect(locClass.value).toEqual('tecton.element.loc.test');
141
+ });
142
+ it('replaces the textContent with the translation', async () => {
143
+ specPage = await setupSpecPageWithLoc({
144
+ components: [Q2Loc],
145
+ html: '<q2-loc>tecton.element.loc.test</q2-loc>',
146
+ }, testStringsDict);
147
+ locClass = specPage.rootInstance;
148
+ locElement = specPage.root;
149
+ expect(locClass.value).toEqual('tecton.element.loc.test');
150
+ expect(locElement.textContent).toEqual('Test String');
151
+ });
158
152
  });
159
153
  });
154
+ describe('mutationHandler', () => {
155
+ describe('when hostTextContent does not match translatedValue', () => {
156
+ it('sets the textContent to nothing', async () => {
157
+ specPage = await setupSpecPageWithLoc({
158
+ components: [Q2Loc],
159
+ html: '<q2-loc>My Text</q2-loc>',
160
+ }, testStringsDict);
161
+ locClass = specPage.rootInstance;
162
+ locElement = specPage.root;
163
+ expect(locElement.textContent).toEqual('My Text');
164
+ locClass.value = 'tecton.element.loc.test';
165
+ expect(locElement.textContent).toEqual('My Text');
166
+ locClass.mutationHandler();
167
+ expect(locElement.textContent).toEqual('');
168
+ });
169
+ it('sets the value to the hostTextContent', async () => {
170
+ specPage = await setupSpecPageWithLoc({
171
+ components: [Q2Loc],
172
+ html: '<q2-loc>Text One</q2-loc>',
173
+ }, testStringsDict);
174
+ locClass = specPage.rootInstance;
175
+ locElement = specPage.root;
176
+ expect(locElement.textContent).toEqual('Text One');
177
+ locClass.hostElement.textContent = 'Text Two';
178
+ expect(locElement.textContent).toEqual('Text Two');
179
+ locClass.mutationHandler();
180
+ expect(locClass.value).toEqual('Text Two');
181
+ });
182
+ });
183
+ describe('when no hostTextContent', () => {
184
+ it('does nothing', async () => {
185
+ specPage = await setupSpecPageWithLoc({
186
+ components: [Q2Loc],
187
+ html: '<q2-loc></q2-loc>',
188
+ }, testStringsDict);
189
+ locClass = specPage.rootInstance;
190
+ locElement = specPage.root;
191
+ expect(locElement.textContent).toEqual('');
192
+ locClass.mutationHandler();
193
+ await specPage.waitForChanges();
194
+ expect(locElement.textContent).toEqual('');
195
+ });
196
+ });
197
+ });
198
+ });
199
+ });
200
+ describe('textContent logic', () => {
201
+ it('is set to translated value', async () => {
202
+ specPage = await setupSpecPageWithLoc({
203
+ components: [Q2Loc],
204
+ html: '<q2-loc value="tecton.element.loc.test"></q2-loc>',
205
+ }, testStringsDict);
206
+ locElement = specPage.root;
207
+ expect(locElement.textContent).toEqual('Test String');
208
+ });
209
+ it('is set to translated value with substitutions', async () => {
210
+ specPage = await setupSpecPageWithLoc({
211
+ components: [Q2Loc],
212
+ html: '<q2-loc value="tecton.element.loc.substitution"></q2-loc>',
213
+ }, testStringsDict);
214
+ locClass = specPage.rootInstance;
215
+ locElement = specPage.root;
216
+ locClass.substitutions = ['Jane', 'Doe'];
217
+ await specPage.waitForChanges();
218
+ expect(locElement.textContent).toEqual('Substitution String with Jane and Doe');
160
219
  });
161
- describe('mutationHandler', () => { });
162
220
  });
163
221
  });
164
222
  //# sourceMappingURL=q2-loc-test.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"q2-loc-test.spec.js","sourceRoot":"","sources":["../../../../src/components/q2-loc/test/q2-loc-test.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { SpecPage } from '@stencil/core/testing';\nimport { Q2Loc } from '../q2-loc';\nimport { setupSpecPageWithLoc } from '@/utils/helpers';\n\ndescribe('q2loc', () => {\n let specPage: SpecPage;\n let locElement: Q2Loc;\n const testStringsDict = {\n 'tecton.element.loc.test': 'Test String',\n 'tecton.element.loc.changed': 'Changed String',\n 'tecton.element.loc.substitution': 'Substitution String with {0} and {1}',\n };\n describe('Props', () => {\n describe('value', () => {\n describe('when provided', () => {\n it('translates properly on init', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Loc],\n html: '<q2-loc value=\"tecton.element.loc.test\"></q2-loc>',\n },\n testStringsDict\n );\n locElement = specPage.rootInstance;\n expect(locElement.displayValue).toEqual('Test String');\n });\n it('translates when changed', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Loc],\n html: '<q2-loc value=\"tecton.element.loc.test\"></q2-loc>',\n },\n testStringsDict\n );\n locElement = specPage.rootInstance;\n expect(locElement.displayValue).toEqual('Test String');\n locElement.value = 'tecton.element.loc.changed';\n expect(locElement.displayValue).toEqual('Changed String');\n });\n });\n describe('when not provided', () => {\n it('translates the textContent of the element', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Loc],\n html: '<q2-loc>tecton.element.loc.test</q2-loc>',\n },\n testStringsDict\n );\n locElement = specPage.rootInstance;\n expect(locElement.displayValue).toEqual('Test String');\n });\n });\n });\n\n describe('substitutions', () => {\n describe('when provided', () => {\n it('applies substitutions', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Loc],\n html: '<q2-loc value=\"tecton.element.loc.substitution\"></q2-loc>',\n },\n testStringsDict\n );\n locElement = specPage.rootInstance;\n locElement.substitutions = ['Jane', 'Doe'];\n expect(locElement.displayValue).toEqual('Substitution String with Jane and Doe');\n });\n it('applies substitutions to the textContent of the element', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Loc],\n html: '<q2-loc>tecton.element.loc.substitution</q2-loc>',\n },\n testStringsDict\n );\n locElement = specPage.rootInstance;\n locElement.substitutions = ['Jane', 'Doe'];\n expect(locElement.displayValue).toEqual('Substitution String with Jane and Doe');\n });\n });\n describe('when not provided', () => {\n it('does not apply substitutions', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Loc],\n html: '<q2-loc>tecton.element.loc.substitution</q2-loc>',\n },\n testStringsDict\n );\n locElement = specPage.rootInstance;\n expect(locElement.displayValue).toEqual('Substitution String with {0} and {1}');\n });\n });\n });\n });\n\n describe('State', () => {\n describe('displayValue', () => {\n it('is set to translated value', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Loc],\n html: '<q2-loc value=\"tecton.element.loc.test\"></q2-loc>',\n },\n testStringsDict\n );\n locElement = specPage.rootInstance;\n expect(locElement.displayValue).toEqual('Test String');\n });\n it('is set to translated value with substitutions', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Loc],\n html: '<q2-loc value=\"tecton.element.loc.substitution\"></q2-loc>',\n },\n testStringsDict\n );\n locElement = specPage.rootInstance;\n locElement.substitutions = ['Jane', 'Doe'];\n expect(locElement.displayValue).toEqual('Substitution String with Jane and Doe');\n });\n });\n });\n\n describe('Watchers', () => {\n describe('value', () => {\n it('executes propHandler', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Loc],\n html: '<q2-loc></q2-loc>',\n },\n testStringsDict\n );\n specPage.rootInstance.propHandler = jest.fn();\n locElement = specPage.rootInstance;\n locElement.value = 'tecton.element.loc.test';\n expect(locElement.propHandler).toHaveBeenCalled();\n });\n });\n describe('substitutions', () => {\n it('executes propHandler', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Loc],\n html: '<q2-loc></q2-loc>',\n },\n testStringsDict\n );\n locElement = specPage.rootInstance;\n locElement.propHandler = jest.fn();\n locElement.substitutions = ['Foo', 'Bar'];\n expect(locElement.propHandler).toHaveBeenCalled();\n });\n });\n });\n\n describe('Local methods', () => {\n describe('initValue', () => {\n describe('when value prop provided', () => {\n it('calls propHandler when provided a value attribute', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Loc],\n html: '<q2-loc value=\"tecton.element.loc.test\"></q2-loc>',\n },\n testStringsDict\n );\n\n locElement = specPage.rootInstance;\n locElement.propHandler = jest.fn();\n locElement.initValue();\n expect(locElement.propHandler).toHaveBeenCalled();\n expect(locElement.displayValue).toEqual('Test String');\n });\n });\n\n describe('when only textContent provided', () => {\n it('sets the value property to the textContent of the element', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Loc],\n html: '<q2-loc>tecton.element.loc.test</q2-loc>',\n },\n testStringsDict\n );\n\n locElement = specPage.rootInstance;\n expect(locElement.value).toEqual('tecton.element.loc.test');\n expect(locElement.displayValue).toEqual('Test String');\n });\n it('removes the textContent node after setting the value property', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Loc],\n html: '<q2-loc>tecton.element.loc.test</q2-loc>',\n },\n testStringsDict\n );\n\n locElement = specPage.rootInstance;\n expect(locElement.value).toEqual('tecton.element.loc.test');\n expect(locElement.displayValue).toEqual('Test String');\n expect(locElement.hostElement.textContent).toEqual('');\n });\n });\n });\n describe('mutationHandler', () => {});\n });\n});\n"]}
1
+ {"version":3,"file":"q2-loc-test.spec.js","sourceRoot":"","sources":["../../../../../src/components/q2-loc/test/q2-loc-test.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { SpecPage } from '@stencil/core/testing';\nimport { Q2Loc } from '../q2-loc';\nimport { setupSpecPageWithLoc } from '@/utils/helpers';\n\ndescribe('q2loc', () => {\n let specPage: SpecPage;\n let locClass;\n let locElement;\n const testStringsDict = {\n 'tecton.element.loc.test': 'Test String',\n 'tecton.element.loc.changed': 'Changed String',\n 'tecton.element.loc.substitution': 'Substitution String with {0} and {1}',\n };\n describe('Props', () => {\n describe('value', () => {\n describe('when provided', () => {\n it('translates properly on init', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Loc],\n html: '<q2-loc value=\"tecton.element.loc.test\"></q2-loc>',\n },\n testStringsDict\n );\n locElement = specPage.root;\n\n expect(locElement.textContent).toEqual('Test String');\n });\n\n it('translates when changed', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Loc],\n html: '<q2-loc value=\"tecton.element.loc.test\"></q2-loc>',\n },\n testStringsDict\n );\n locClass = specPage.rootInstance;\n locElement = specPage.root;\n expect(locElement.textContent).toEqual('Test String');\n locClass.value = 'tecton.element.loc.changed';\n await specPage.waitForChanges();\n\n expect(locElement.textContent).toEqual('Changed String');\n });\n\n it('value is preferred when textContent also provided', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Loc],\n html: '<q2-loc value=\"tecton.element.loc.test\">tecton.element.loc.changed</q2-loc>',\n },\n testStringsDict\n );\n locElement = specPage.root;\n\n expect(locElement.textContent).toEqual('Test String');\n });\n });\n\n describe('when not provided', () => {\n it('translates the textContent of the element', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Loc],\n html: '<q2-loc>tecton.element.loc.test</q2-loc>',\n },\n testStringsDict\n );\n locElement = specPage.root;\n\n expect(locElement.textContent).toEqual('Test String');\n });\n });\n });\n\n describe('substitutions', () => {\n describe('when provided', () => {\n it('applies substitutions', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Loc],\n html: '<q2-loc value=\"tecton.element.loc.substitution\"></q2-loc>',\n },\n testStringsDict\n );\n locClass = specPage.rootInstance;\n locElement = specPage.root;\n locClass.substitutions = ['Jane', 'Doe'];\n await specPage.waitForChanges();\n\n expect(locElement.textContent).toEqual('Substitution String with Jane and Doe');\n });\n });\n describe('when not provided', () => {\n it('does not apply substitutions', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Loc],\n html: '<q2-loc>tecton.element.loc.substitution</q2-loc>',\n },\n testStringsDict\n );\n locElement = specPage.root;\n\n expect(locElement.textContent).toEqual('Substitution String with {0} and {1}');\n });\n });\n });\n });\n\n describe('Lifecycle Methods', () => {\n describe('componentWillLoad', () => {\n it('calls initValue', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Loc],\n html: '<q2-loc></q2-loc>',\n },\n testStringsDict\n );\n locClass = specPage.rootInstance;\n const initValueSpy = jest.spyOn(locClass, 'initValue');\n locClass.componentWillLoad();\n expect(initValueSpy).toHaveBeenCalled();\n });\n });\n\n describe('componentDidLoad', () => {\n it('calls initMutationObserver', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Loc],\n html: '<q2-loc></q2-loc>',\n },\n testStringsDict\n );\n locClass = specPage.rootInstance;\n const initMutationObserverSpy = jest.spyOn(locClass, 'initMutationObserver');\n locClass.componentDidLoad();\n expect(initMutationObserverSpy).toHaveBeenCalled();\n });\n });\n });\n\n describe('Local Methods', () => {\n describe('Getters', () => {\n describe('hostTextContent', () => {\n it('returns the textContent of the host element', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Loc],\n html: '<q2-loc>Text Content</q2-loc>',\n },\n testStringsDict\n );\n locClass = specPage.rootInstance;\n locElement = specPage.root;\n\n expect(locClass.hostTextContent).toEqual('Text Content');\n });\n });\n\n describe('translatedValue', () => {\n it('returns the translation of the value', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Loc],\n html: '<q2-loc value=\"tecton.element.loc.test\"></q2-loc>',\n },\n testStringsDict\n );\n locClass = specPage.rootInstance;\n\n expect(locClass.translatedValue).toEqual('Test String');\n });\n });\n });\n\n describe('Methods', () => {\n describe('initValue', () => {\n describe('when no value provided and textContent is provided', () => {\n it('sets the value property to the textContent of the element', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Loc],\n html: '<q2-loc>tecton.element.loc.test</q2-loc>',\n },\n testStringsDict\n );\n locClass = specPage.rootInstance;\n\n expect(locClass.value).toEqual('tecton.element.loc.test');\n });\n\n it('replaces the textContent with the translation', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Loc],\n html: '<q2-loc>tecton.element.loc.test</q2-loc>',\n },\n testStringsDict\n );\n\n locClass = specPage.rootInstance;\n locElement = specPage.root;\n\n expect(locClass.value).toEqual('tecton.element.loc.test');\n expect(locElement.textContent).toEqual('Test String');\n });\n });\n });\n\n describe('mutationHandler', () => {\n describe('when hostTextContent does not match translatedValue', () => {\n it('sets the textContent to nothing', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Loc],\n html: '<q2-loc>My Text</q2-loc>',\n },\n testStringsDict\n );\n locClass = specPage.rootInstance;\n locElement = specPage.root;\n\n expect(locElement.textContent).toEqual('My Text');\n locClass.value = 'tecton.element.loc.test';\n expect(locElement.textContent).toEqual('My Text');\n\n locClass.mutationHandler();\n\n expect(locElement.textContent).toEqual('');\n });\n\n it('sets the value to the hostTextContent', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Loc],\n html: '<q2-loc>Text One</q2-loc>',\n },\n testStringsDict\n );\n locClass = specPage.rootInstance;\n locElement = specPage.root;\n\n expect(locElement.textContent).toEqual('Text One');\n locClass.hostElement.textContent = 'Text Two';\n\n expect(locElement.textContent).toEqual('Text Two');\n\n locClass.mutationHandler();\n\n expect(locClass.value).toEqual('Text Two');\n });\n });\n\n describe('when no hostTextContent', () => {\n it('does nothing', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Loc],\n html: '<q2-loc></q2-loc>',\n },\n testStringsDict\n );\n locClass = specPage.rootInstance;\n locElement = specPage.root;\n\n expect(locElement.textContent).toEqual('');\n locClass.mutationHandler();\n await specPage.waitForChanges();\n\n expect(locElement.textContent).toEqual('');\n });\n });\n });\n });\n });\n\n describe('textContent logic', () => {\n it('is set to translated value', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Loc],\n html: '<q2-loc value=\"tecton.element.loc.test\"></q2-loc>',\n },\n testStringsDict\n );\n locElement = specPage.root;\n\n expect(locElement.textContent).toEqual('Test String');\n });\n it('is set to translated value with substitutions', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Loc],\n html: '<q2-loc value=\"tecton.element.loc.substitution\"></q2-loc>',\n },\n testStringsDict\n );\n locClass = specPage.rootInstance;\n locElement = specPage.root;\n locClass.substitutions = ['Jane', 'Doe'];\n await specPage.waitForChanges();\n\n expect(locElement.textContent).toEqual('Substitution String with Jane and Doe');\n });\n });\n});\n"]}
@@ -57,7 +57,7 @@ export class Q2Message {
57
57
  const addDivForAriaLive = !isFirefox && this.presentToggle;
58
58
  const { description } = this;
59
59
  const messageLabel = loc(`tecton.element.message.type.${this.type ? this.type : 'info'}`);
60
- return (h("div", { key: '862e4f7aa7ae624a695ce6727f72ed8759584173', tabindex: "-1", class: "message", role: description ? undefined : 'alert', "aria-live": description ? undefined : 'assertive', "aria-atomic": description ? undefined : 'true', "aria-relevant": description && addAriaHiddenForAriaLive ? undefined : 'all', "test-id": "messageContainer" }, this.appearance === 'standard' ? this.messageIcon(this.type) : '', addDivForAriaLive && h("div", { key: '84084e80aac97b4e4e33a2bcf348094cd88279fb', class: "sr" }), h("div", { key: '4a437099dce9df5657a7f5039a55f5b326d2ee58', class: "sr message-label" }, messageLabel), h("div", { key: '8bf021fb84aa6d4973546060acaddae5d059d351', class: "message-content", "aria-hidden": addAriaHiddenForAriaLive ? 'true' : undefined }, h("slot", { key: '1790d7a0df5758d13c8b76577a4703808cddc832' }))));
60
+ return (h("div", { key: 'ccca9e80908f73482c73f865743e5f7cd6438d99', tabindex: "-1", class: "message", role: description ? undefined : 'alert', "aria-live": description ? undefined : 'assertive', "aria-atomic": description ? undefined : 'true', "aria-relevant": description && addAriaHiddenForAriaLive ? undefined : 'all', "test-id": "messageContainer" }, this.appearance === 'standard' ? this.messageIcon(this.type) : '', addDivForAriaLive && h("div", { key: 'a9937495e83a7e0852034c36639d8c60ea3c30ac', class: "sr" }), h("div", { key: 'e650f7ef7c2544e44f63ce7a23f33f04145a7e83', class: "sr message-label" }, messageLabel), h("div", { key: 'daa66069373ac3030fb33dc3c88c0621c91bb6a4', class: "message-content", "aria-hidden": addAriaHiddenForAriaLive ? 'true' : undefined }, h("slot", { key: '464a52a941be194c1267beee2c1b307ece17f964' }))));
61
61
  }
62
62
  static get is() { return "q2-message"; }
63
63
  static get encapsulation() { return "shadow"; }
@@ -1 +1 @@
1
- {"version":3,"file":"q2-message.js","sourceRoot":"","sources":["../../../src/components/q2-message/q2-message.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Prop, h, Method, State, Element, Listen } from '@stencil/core';\nimport { isEventFromElement, isFirefox as checkIfFirefox, loc, nextPaint, overrideFocus } from 'src/utils';\n\n@Component({ tag: 'q2-message', shadow: true, styleUrl: 'q2-message.scss' })\nexport class Q2Message {\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region State Properties\n\n @State()\n presentToggle: boolean;\n\n // #endregion\n // #region Public Property API\n\n /** The visual style of the message. The minimal style is for use cases where you have less space to display information. */\n @Prop({ reflect: true })\n appearance: 'minimal' | 'standard' = 'standard';\n\n /** Determines whether or not assistive technology immediately presents the content to the user, via the `aria-live` attribute. */\n @Prop({ reflect: true })\n description: boolean = false;\n\n /** The type of message to display on the screen. */\n @Prop({ reflect: true })\n type: 'info' | 'error' | 'danger' | 'warning' | 'success' = 'info';\n\n // #endregion\n // #region Component Lifecycle Events\n\n componentDidLoad(): void {\n overrideFocus(this.hostElement);\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('focus')\n delegateFocus(event: FocusEvent) {\n if (!isEventFromElement(event, this.hostElement)) return;\n this.hostElement.shadowRoot.querySelector<HTMLElement>('.message').focus();\n }\n\n // #endregion\n // #region Public Methods API\n\n /**\n * Prompts assistive technology to announce the message.\n */\n @Method()\n async present() {\n const { isFirefox } = this;\n this.presentToggle = !this.presentToggle;\n if (!isFirefox) return;\n nextPaint(() => {\n this.presentToggle = false;\n });\n }\n\n // #endregion\n // #region Local Methods\n\n get isFirefox() {\n return checkIfFirefox();\n }\n\n messageIcon(type: string) {\n const iconMap = {\n success: 'success',\n warning: 'warning',\n danger: 'error',\n error: 'error',\n info: 'info',\n };\n\n const iconType: string = iconMap[type] || iconMap.info;\n\n return (\n <q2-icon\n type={iconType}\n class=\"message-icon\"\n />\n );\n }\n\n // #endregion\n // #region Render Methods\n\n render() {\n const { isFirefox } = this;\n const addAriaHiddenForAriaLive = isFirefox && this.presentToggle;\n const addDivForAriaLive = !isFirefox && this.presentToggle;\n const { description } = this;\n const messageLabel: string = loc(`tecton.element.message.type.${this.type ? this.type : 'info'}`);\n\n return (\n <div\n tabindex=\"-1\"\n class=\"message\"\n role={description ? undefined : 'alert'}\n aria-live={description ? undefined : 'assertive'}\n aria-atomic={description ? undefined : 'true'}\n aria-relevant={description && addAriaHiddenForAriaLive ? undefined : 'all'}\n test-id=\"messageContainer\"\n >\n {this.appearance === 'standard' ? this.messageIcon(this.type) : ''}\n {addDivForAriaLive && <div class=\"sr\"></div>}\n <div class=\"sr message-label\">{messageLabel}</div>\n <div\n class=\"message-content\"\n aria-hidden={addAriaHiddenForAriaLive ? 'true' : undefined}\n >\n <slot />\n </div>\n </div>\n );\n }\n\n // #endregion\n}\n"]}
1
+ {"version":3,"file":"q2-message.js","sourceRoot":"","sources":["../../../../src/components/q2-message/q2-message.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Prop, h, Method, State, Element, Listen } from '@stencil/core';\nimport { isEventFromElement, isFirefox as checkIfFirefox, loc, nextPaint, overrideFocus } from 'src/utils';\n\n@Component({ tag: 'q2-message', shadow: true, styleUrl: 'q2-message.scss' })\nexport class Q2Message {\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region State Properties\n\n @State()\n presentToggle: boolean;\n\n // #endregion\n // #region Public Property API\n\n /** The visual style of the message. The minimal style is for use cases where you have less space to display information. */\n @Prop({ reflect: true })\n appearance: 'minimal' | 'standard' = 'standard';\n\n /** Determines whether or not assistive technology immediately presents the content to the user, via the `aria-live` attribute. */\n @Prop({ reflect: true })\n description: boolean = false;\n\n /** The type of message to display on the screen. */\n @Prop({ reflect: true })\n type: 'info' | 'error' | 'danger' | 'warning' | 'success' = 'info';\n\n // #endregion\n // #region Component Lifecycle Events\n\n componentDidLoad(): void {\n overrideFocus(this.hostElement);\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('focus')\n delegateFocus(event: FocusEvent) {\n if (!isEventFromElement(event, this.hostElement)) return;\n this.hostElement.shadowRoot.querySelector<HTMLElement>('.message').focus();\n }\n\n // #endregion\n // #region Public Methods API\n\n /**\n * Prompts assistive technology to announce the message.\n */\n @Method()\n async present() {\n const { isFirefox } = this;\n this.presentToggle = !this.presentToggle;\n if (!isFirefox) return;\n nextPaint(() => {\n this.presentToggle = false;\n });\n }\n\n // #endregion\n // #region Local Methods\n\n get isFirefox() {\n return checkIfFirefox();\n }\n\n messageIcon(type: string) {\n const iconMap = {\n success: 'success',\n warning: 'warning',\n danger: 'error',\n error: 'error',\n info: 'info',\n };\n\n const iconType: string = iconMap[type] || iconMap.info;\n\n return (\n <q2-icon\n type={iconType}\n class=\"message-icon\"\n />\n );\n }\n\n // #endregion\n // #region Render Methods\n\n render() {\n const { isFirefox } = this;\n const addAriaHiddenForAriaLive = isFirefox && this.presentToggle;\n const addDivForAriaLive = !isFirefox && this.presentToggle;\n const { description } = this;\n const messageLabel: string = loc(`tecton.element.message.type.${this.type ? this.type : 'info'}`);\n\n return (\n <div\n tabindex=\"-1\"\n class=\"message\"\n role={description ? undefined : 'alert'}\n aria-live={description ? undefined : 'assertive'}\n aria-atomic={description ? undefined : 'true'}\n aria-relevant={description && addAriaHiddenForAriaLive ? undefined : 'all'}\n test-id=\"messageContainer\"\n >\n {this.appearance === 'standard' ? this.messageIcon(this.type) : ''}\n {addDivForAriaLive && <div class=\"sr\"></div>}\n <div class=\"sr message-label\">{messageLabel}</div>\n <div\n class=\"message-content\"\n aria-hidden={addAriaHiddenForAriaLive ? 'true' : undefined}\n >\n <slot />\n </div>\n </div>\n );\n }\n\n // #endregion\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"q2-message-test.e2e.js","sourceRoot":"","sources":["../../../../src/components/q2-message/test/q2-message-test.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { setTestStrings, setup, dispatchEvent, getListOfStyleCompilationIssues, evaluateA11y } from '@/utils/helpers';\n\ndescribe('q2-message', () => {\n it('properly compiles CSS vars and functions', async () => {\n const page = await setup({ html: '<q2-message></q2-message>' });\n expect(await getListOfStyleCompilationIssues(page, 'q2-message')).toHaveLength(0);\n });\n\n describe('@Props', () => {\n describe('type', () => {\n describe('when omitted', () => {\n it('defaults to \"info\" type and icon', async () => {\n const page = await setup({\n html: '<q2-message></q2-message>',\n });\n const messageElement = await page.find('q2-message');\n const messageIcon = await page.find('q2-message >>> .message-icon');\n\n expect(await messageElement.getAttribute('type')).toEqual('info');\n expect(await messageIcon.getAttribute('type')).toEqual('info');\n });\n\n it('defaults to \"info\" message type label', async () => {\n const ariaLabel = 'q2-message aria-label';\n const page = await setup({ html: '' });\n await setTestStrings(page, {\n 'tecton.element.message.type.info': ariaLabel,\n });\n await page.setContent('<q2-message></q2-message>');\n await page.waitForChanges();\n const typeLabel = await page.find('q2-message >>> .sr.message-label');\n\n expect(typeLabel).toEqualText(ariaLabel);\n });\n });\n\n describe('when value is \"success\"', () => {\n it('renders with \"success\" icon', async () => {\n const page = await setup({\n html: '<q2-message type=\"success\"></q2-message>',\n });\n const messageIcon = await page.find('q2-message >>> .message-icon');\n\n expect(await messageIcon.getAttribute('type')).toEqual('success');\n });\n\n it('renders with \"success\" message type label', async () => {\n await expectScreenReaderMessageLabel('success');\n });\n });\n\n describe('when value is \"warning\"', () => {\n it('renders with \"warning\" icon', async () => {\n const page = await setup({\n html: '<q2-message type=\"warning\"></q2-message>',\n });\n const messageIcon = await page.find('q2-message >>> .message-icon');\n\n expect(await messageIcon.getAttribute('type')).toEqual('warning');\n });\n\n it('renders with \"warning\" message type label', async () => {\n await expectScreenReaderMessageLabel('warning');\n });\n });\n\n describe('when value is \"danger\"', () => {\n it('renders with \"error\" icon', async () => {\n const page = await setup({\n html: '<q2-message type=\"danger\"></q2-message>',\n });\n const messageIcon = await page.find('q2-message >>> .message-icon');\n\n expect(await messageIcon.getAttribute('type')).toEqual('error');\n });\n\n it('renders with \"danger\" message type label', async () => {\n await expectScreenReaderMessageLabel('danger');\n });\n });\n\n describe('when value is \"error\"', () => {\n it('renders with \"error\" icon', async () => {\n const page = await setup({\n html: '<q2-message type=\"error\"></q2-message>',\n });\n const messageIcon = await page.find('q2-message >>> .message-icon');\n\n expect(await messageIcon.getAttribute('type')).toEqual('error');\n });\n\n it('renders with \"error\" message type label', async () => {\n await expectScreenReaderMessageLabel('error');\n });\n });\n });\n\n describe('appearance', () => {\n describe('when value is \"minimal\"', () => {\n it('does not render icon', async () => {\n const page = await setup({\n html: '<q2-message appearance=\"minimal\">Hipster script</q2-message>',\n });\n const messageIcon = await page.find('q2-message >>> .message-icon');\n\n expect(messageIcon).toBeNull();\n });\n });\n\n describe('when omitted', () => {\n it('defaults to \"standard\" and renders icon', async () => {\n const page = await setup({\n html: '<q2-message>Hipster script</q2-message>',\n });\n const messageElement = await page.find('q2-message');\n const messageIcon = await page.find('q2-message >>> .message-icon');\n\n expect(await messageElement.getAttribute('appearance')).toEqual('standard');\n expect(messageIcon).toBeDefined();\n });\n });\n });\n\n describe('description', () => {\n describe('when provided', () => {\n it('does not add aria-attributes and role', async () => {\n const page = await setup({\n html: '<q2-message description>Tony Stark</q2-message>',\n });\n const messageBlock = await page.find('q2-message >>> .message');\n\n expect(await messageBlock.getAttribute('role')).toBeNull();\n expect(await messageBlock.getAttribute('aria-live')).toBeNull();\n expect(await messageBlock.getAttribute('aria-atomic')).toBeNull();\n });\n });\n\n describe('when omitted', () => {\n it('adds aria-attributes and role', async () => {\n const page = await setup({\n html: '<q2-message>Tony Stark</q2-message>',\n });\n const messageBlock = await page.find('q2-message >>> .message');\n\n expect(await messageBlock.getAttribute('role')).toEqual('alert');\n expect(await messageBlock.getAttribute('aria-live')).toEqual('assertive');\n expect(await messageBlock.getAttribute('aria-atomic')).toEqual('true');\n expect(await messageBlock.getAttribute('aria-relevant')).toEqual('all');\n });\n });\n });\n });\n\n describe('focus transferring', () => {\n const html = '<q2-message type=\"info\" appearance=\"standard\">Tony Stark</q2-message>';\n\n it('focuses when focus event dispatched ', async function (): Promise<void> {\n const page = await setup({ html });\n await dispatchEvent(page, ['q2-message'], 'focus');\n const containsClass = await page.$eval('q2-message', el => {\n return el.shadowRoot.activeElement.classList.contains('message');\n });\n expect(containsClass).toBe(true);\n });\n\n it('focuses when focus event method called ', async function (): Promise<void> {\n const page = await setup({ html });\n const message = await page.find('q2-message');\n await message.triggerEvent('focus');\n await page.waitForChanges();\n const containsClass = await page.$eval('q2-message', el => {\n return el.shadowRoot.activeElement.classList.contains('message');\n });\n expect(containsClass).toBe(true);\n });\n });\n\n describe('Accessibility', () => {\n describe('aXe DevTools', () => {\n it('does not have accessibility violations', async () => {\n const page = await setup({\n html: '<q2-message type=\"success\"></q2-message>',\n });\n const hasViolations = await evaluateA11y(page);\n expect(hasViolations).toBe(false);\n });\n });\n describe('Accessibility Tree', () => {});\n describe('Keyboard Controls', () => {});\n describe('Other', () => {});\n });\n});\n\nasync function expectScreenReaderMessageLabel(type: string): Promise<void> {\n const page = await setup({\n html: '<q2-message></q2-message>',\n });\n const screenReaderLabel = 'q2-message aria-label';\n await setTestStrings(page, {\n [`tecton.element.message.type.${type}`]: screenReaderLabel,\n });\n const messageElement = await page.find('q2-message');\n messageElement.setAttribute('type', type);\n await page.waitForChanges();\n const typeLabel = await page.find('q2-message >>> .sr.message-label');\n\n expect(typeLabel).toEqualText(screenReaderLabel);\n}\n"]}
1
+ {"version":3,"file":"q2-message-test.e2e.js","sourceRoot":"","sources":["../../../../../src/components/q2-message/test/q2-message-test.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { setTestStrings, setup, dispatchEvent, getListOfStyleCompilationIssues, evaluateA11y } from '@/utils/helpers';\n\ndescribe('q2-message', () => {\n it('properly compiles CSS vars and functions', async () => {\n const page = await setup({ html: '<q2-message></q2-message>' });\n expect(await getListOfStyleCompilationIssues(page, 'q2-message')).toHaveLength(0);\n });\n\n describe('@Props', () => {\n describe('type', () => {\n describe('when omitted', () => {\n it('defaults to \"info\" type and icon', async () => {\n const page = await setup({\n html: '<q2-message></q2-message>',\n });\n const messageElement = await page.find('q2-message');\n const messageIcon = await page.find('q2-message >>> .message-icon');\n\n expect(await messageElement.getAttribute('type')).toEqual('info');\n expect(await messageIcon.getAttribute('type')).toEqual('info');\n });\n\n it('defaults to \"info\" message type label', async () => {\n const ariaLabel = 'q2-message aria-label';\n const page = await setup({ html: '' });\n await setTestStrings(page, {\n 'tecton.element.message.type.info': ariaLabel,\n });\n await page.setContent('<q2-message></q2-message>');\n await page.waitForChanges();\n const typeLabel = await page.find('q2-message >>> .sr.message-label');\n\n expect(typeLabel).toEqualText(ariaLabel);\n });\n });\n\n describe('when value is \"success\"', () => {\n it('renders with \"success\" icon', async () => {\n const page = await setup({\n html: '<q2-message type=\"success\"></q2-message>',\n });\n const messageIcon = await page.find('q2-message >>> .message-icon');\n\n expect(await messageIcon.getAttribute('type')).toEqual('success');\n });\n\n it('renders with \"success\" message type label', async () => {\n await expectScreenReaderMessageLabel('success');\n });\n });\n\n describe('when value is \"warning\"', () => {\n it('renders with \"warning\" icon', async () => {\n const page = await setup({\n html: '<q2-message type=\"warning\"></q2-message>',\n });\n const messageIcon = await page.find('q2-message >>> .message-icon');\n\n expect(await messageIcon.getAttribute('type')).toEqual('warning');\n });\n\n it('renders with \"warning\" message type label', async () => {\n await expectScreenReaderMessageLabel('warning');\n });\n });\n\n describe('when value is \"danger\"', () => {\n it('renders with \"error\" icon', async () => {\n const page = await setup({\n html: '<q2-message type=\"danger\"></q2-message>',\n });\n const messageIcon = await page.find('q2-message >>> .message-icon');\n\n expect(await messageIcon.getAttribute('type')).toEqual('error');\n });\n\n it('renders with \"danger\" message type label', async () => {\n await expectScreenReaderMessageLabel('danger');\n });\n });\n\n describe('when value is \"error\"', () => {\n it('renders with \"error\" icon', async () => {\n const page = await setup({\n html: '<q2-message type=\"error\"></q2-message>',\n });\n const messageIcon = await page.find('q2-message >>> .message-icon');\n\n expect(await messageIcon.getAttribute('type')).toEqual('error');\n });\n\n it('renders with \"error\" message type label', async () => {\n await expectScreenReaderMessageLabel('error');\n });\n });\n });\n\n describe('appearance', () => {\n describe('when value is \"minimal\"', () => {\n it('does not render icon', async () => {\n const page = await setup({\n html: '<q2-message appearance=\"minimal\">Hipster script</q2-message>',\n });\n const messageIcon = await page.find('q2-message >>> .message-icon');\n\n expect(messageIcon).toBeNull();\n });\n });\n\n describe('when omitted', () => {\n it('defaults to \"standard\" and renders icon', async () => {\n const page = await setup({\n html: '<q2-message>Hipster script</q2-message>',\n });\n const messageElement = await page.find('q2-message');\n const messageIcon = await page.find('q2-message >>> .message-icon');\n\n expect(await messageElement.getAttribute('appearance')).toEqual('standard');\n expect(messageIcon).toBeDefined();\n });\n });\n });\n\n describe('description', () => {\n describe('when provided', () => {\n it('does not add aria-attributes and role', async () => {\n const page = await setup({\n html: '<q2-message description>Tony Stark</q2-message>',\n });\n const messageBlock = await page.find('q2-message >>> .message');\n\n expect(await messageBlock.getAttribute('role')).toBeNull();\n expect(await messageBlock.getAttribute('aria-live')).toBeNull();\n expect(await messageBlock.getAttribute('aria-atomic')).toBeNull();\n });\n });\n\n describe('when omitted', () => {\n it('adds aria-attributes and role', async () => {\n const page = await setup({\n html: '<q2-message>Tony Stark</q2-message>',\n });\n const messageBlock = await page.find('q2-message >>> .message');\n\n expect(await messageBlock.getAttribute('role')).toEqual('alert');\n expect(await messageBlock.getAttribute('aria-live')).toEqual('assertive');\n expect(await messageBlock.getAttribute('aria-atomic')).toEqual('true');\n expect(await messageBlock.getAttribute('aria-relevant')).toEqual('all');\n });\n });\n });\n });\n\n describe('focus transferring', () => {\n const html = '<q2-message type=\"info\" appearance=\"standard\">Tony Stark</q2-message>';\n\n it('focuses when focus event dispatched ', async function (): Promise<void> {\n const page = await setup({ html });\n await dispatchEvent(page, ['q2-message'], 'focus');\n const containsClass = await page.$eval('q2-message', el => {\n return el.shadowRoot.activeElement.classList.contains('message');\n });\n expect(containsClass).toBe(true);\n });\n\n it('focuses when focus event method called ', async function (): Promise<void> {\n const page = await setup({ html });\n const message = await page.find('q2-message');\n await message.triggerEvent('focus');\n await page.waitForChanges();\n const containsClass = await page.$eval('q2-message', el => {\n return el.shadowRoot.activeElement.classList.contains('message');\n });\n expect(containsClass).toBe(true);\n });\n });\n\n describe('Accessibility', () => {\n describe('aXe DevTools', () => {\n it('does not have accessibility violations', async () => {\n const page = await setup({\n html: '<q2-message type=\"success\"></q2-message>',\n });\n const hasViolations = await evaluateA11y(page);\n expect(hasViolations).toBe(false);\n });\n });\n describe('Accessibility Tree', () => {});\n describe('Keyboard Controls', () => {});\n describe('Other', () => {});\n });\n});\n\nasync function expectScreenReaderMessageLabel(type: string): Promise<void> {\n const page = await setup({\n html: '<q2-message></q2-message>',\n });\n const screenReaderLabel = 'q2-message aria-label';\n await setTestStrings(page, {\n [`tecton.element.message.type.${type}`]: screenReaderLabel,\n });\n const messageElement = await page.find('q2-message');\n messageElement.setAttribute('type', type);\n await page.waitForChanges();\n const typeLabel = await page.find('q2-message >>> .sr.message-label');\n\n expect(typeLabel).toEqualText(screenReaderLabel);\n}\n"]}