q2-tecton-elements 1.36.0 → 1.37.0

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 (312) hide show
  1. package/dist/cjs/click-elsewhere_2.cjs.entry.js +1 -1
  2. package/dist/cjs/{index-f6545293.js → index-6f9f259c.js} +12 -9
  3. package/dist/cjs/index-6f9f259c.js.map +1 -0
  4. package/dist/cjs/loader.cjs.js +1 -1
  5. package/dist/cjs/q2-action-sheet.cjs.entry.js +2 -2
  6. package/dist/cjs/q2-action-sheet.cjs.entry.js.map +1 -1
  7. package/dist/cjs/q2-btn_2.cjs.entry.js +1 -1
  8. package/dist/cjs/q2-calendar.cjs.entry.js +46 -3
  9. package/dist/cjs/q2-calendar.cjs.entry.js.map +1 -1
  10. package/dist/cjs/q2-card.cjs.entry.js +1 -1
  11. package/dist/cjs/q2-carousel-pane.cjs.entry.js +1 -1
  12. package/dist/cjs/q2-carousel.cjs.entry.js +1 -1
  13. package/dist/cjs/q2-chart-area.cjs.entry.js +2 -2
  14. package/dist/cjs/q2-chart-area.cjs.entry.js.map +1 -1
  15. package/dist/cjs/q2-chart-bar.cjs.entry.js +2 -2
  16. package/dist/cjs/q2-chart-bar.cjs.entry.js.map +1 -1
  17. package/dist/cjs/q2-chart-donut.cjs.entry.js +12 -8
  18. package/dist/cjs/q2-chart-donut.cjs.entry.js.map +1 -1
  19. package/dist/cjs/q2-checkbox-group.cjs.entry.js +25 -6
  20. package/dist/cjs/q2-checkbox-group.cjs.entry.js.map +1 -1
  21. package/dist/cjs/q2-checkbox.cjs.entry.js +1 -1
  22. package/dist/cjs/q2-data-table.cjs.entry.js +2 -2
  23. package/dist/cjs/q2-data-table.cjs.entry.js.map +1 -1
  24. package/dist/cjs/q2-dropdown-item.cjs.entry.js +1 -1
  25. package/dist/cjs/q2-dropdown.cjs.entry.js +1 -1
  26. package/dist/cjs/q2-editable-field.cjs.entry.js +34 -6
  27. package/dist/cjs/q2-editable-field.cjs.entry.js.map +1 -1
  28. package/dist/cjs/q2-icon.cjs.entry.js +1 -1
  29. package/dist/cjs/q2-input.cjs.entry.js +17 -10
  30. package/dist/cjs/q2-input.cjs.entry.js.map +1 -1
  31. package/dist/cjs/q2-loc.cjs.entry.js +1 -1
  32. package/dist/cjs/q2-message.cjs.entry.js +14 -13
  33. package/dist/cjs/q2-message.cjs.entry.js.map +1 -1
  34. package/dist/cjs/q2-month-picker.cjs.entry.js +1 -1
  35. package/dist/cjs/q2-optgroup_2.cjs.entry.js +1 -1
  36. package/dist/cjs/q2-option-list.cjs.entry.js +1 -1
  37. package/dist/cjs/q2-pagination.cjs.entry.js +1 -1
  38. package/dist/cjs/q2-pill.cjs.entry.js +3 -3
  39. package/dist/cjs/q2-pill.cjs.entry.js.map +1 -1
  40. package/dist/cjs/q2-radio-group.cjs.entry.js +9 -1
  41. package/dist/cjs/q2-radio-group.cjs.entry.js.map +1 -1
  42. package/dist/cjs/q2-radio.cjs.entry.js +12 -3
  43. package/dist/cjs/q2-radio.cjs.entry.js.map +1 -1
  44. package/dist/cjs/q2-section.cjs.entry.js +1 -1
  45. package/dist/cjs/q2-select.cjs.entry.js +54 -5
  46. package/dist/cjs/q2-select.cjs.entry.js.map +1 -1
  47. package/dist/cjs/q2-stepper-pane.cjs.entry.js +1 -1
  48. package/dist/cjs/q2-stepper-vertical.cjs.entry.js +1 -1
  49. package/dist/cjs/q2-stepper.cjs.entry.js +1 -1
  50. package/dist/cjs/q2-tab-container.cjs.entry.js +1 -1
  51. package/dist/cjs/q2-tag.cjs.entry.js +1 -1
  52. package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
  53. package/dist/cjs/q2-textarea.cjs.entry.js +13 -1
  54. package/dist/cjs/q2-textarea.cjs.entry.js.map +1 -1
  55. package/dist/cjs/q2-tooltip.cjs.entry.js +1 -1
  56. package/dist/collection/components/q2-action-sheet/styles.css +0 -8
  57. package/dist/collection/components/q2-calendar/index.js +120 -2
  58. package/dist/collection/components/q2-calendar/index.js.map +1 -1
  59. package/dist/collection/components/q2-chart-area/index.js +1 -1
  60. package/dist/collection/components/q2-chart-area/index.js.map +1 -1
  61. package/dist/collection/components/q2-chart-bar/index.js +1 -1
  62. package/dist/collection/components/q2-chart-bar/index.js.map +1 -1
  63. package/dist/collection/components/q2-chart-donut/index.js +11 -7
  64. package/dist/collection/components/q2-chart-donut/index.js.map +1 -1
  65. package/dist/collection/components/q2-checkbox-group/index.js +45 -5
  66. package/dist/collection/components/q2-checkbox-group/index.js.map +1 -1
  67. package/dist/collection/components/q2-data-table/styles.css +37 -36
  68. package/dist/collection/components/q2-editable-field/index.js +96 -6
  69. package/dist/collection/components/q2-editable-field/index.js.map +1 -1
  70. package/dist/collection/components/q2-input/index.js +48 -10
  71. package/dist/collection/components/q2-input/index.js.map +1 -1
  72. package/dist/collection/components/q2-message/index.js +14 -13
  73. package/dist/collection/components/q2-message/index.js.map +1 -1
  74. package/dist/collection/components/q2-pill/index.js +2 -2
  75. package/dist/collection/components/q2-pill/index.js.map +1 -1
  76. package/dist/collection/components/q2-radio/index.js +29 -3
  77. package/dist/collection/components/q2-radio/index.js.map +1 -1
  78. package/dist/collection/components/q2-radio-group/index.js +27 -0
  79. package/dist/collection/components/q2-radio-group/index.js.map +1 -1
  80. package/dist/collection/components/q2-select/index.js +127 -5
  81. package/dist/collection/components/q2-select/index.js.map +1 -1
  82. package/dist/collection/components/q2-textarea/index.js +37 -0
  83. package/dist/collection/components/q2-textarea/index.js.map +1 -1
  84. package/dist/collection/utils/index.js +8 -6
  85. package/dist/collection/utils/index.js.map +1 -1
  86. package/dist/components/index11.js +14 -13
  87. package/dist/components/index11.js.map +1 -1
  88. package/dist/components/index16.js +11 -8
  89. package/dist/components/index16.js.map +1 -1
  90. package/dist/components/index9.js +19 -10
  91. package/dist/components/index9.js.map +1 -1
  92. package/dist/components/q2-action-sheet.js +1 -1
  93. package/dist/components/q2-action-sheet.js.map +1 -1
  94. package/dist/components/q2-calendar.js +51 -4
  95. package/dist/components/q2-calendar.js.map +1 -1
  96. package/dist/components/q2-chart-area.js +1 -1
  97. package/dist/components/q2-chart-area.js.map +1 -1
  98. package/dist/components/q2-chart-bar.js +1 -1
  99. package/dist/components/q2-chart-bar.js.map +1 -1
  100. package/dist/components/q2-chart-donut.js +11 -7
  101. package/dist/components/q2-chart-donut.js.map +1 -1
  102. package/dist/components/q2-checkbox-group.js +26 -6
  103. package/dist/components/q2-checkbox-group.js.map +1 -1
  104. package/dist/components/q2-data-table.js +1 -1
  105. package/dist/components/q2-data-table.js.map +1 -1
  106. package/dist/components/q2-editable-field.js +39 -7
  107. package/dist/components/q2-editable-field.js.map +1 -1
  108. package/dist/components/q2-pill.js +2 -2
  109. package/dist/components/q2-pill.js.map +1 -1
  110. package/dist/components/q2-radio-group.js +10 -1
  111. package/dist/components/q2-radio-group.js.map +1 -1
  112. package/dist/components/q2-radio.js +13 -3
  113. package/dist/components/q2-radio.js.map +1 -1
  114. package/dist/components/q2-select.js +59 -6
  115. package/dist/components/q2-select.js.map +1 -1
  116. package/dist/components/q2-textarea.js +15 -2
  117. package/dist/components/q2-textarea.js.map +1 -1
  118. package/dist/docs.json +224 -9
  119. package/dist/esm/click-elsewhere_2.entry.js +1 -1
  120. package/dist/esm/{index-35ff2881.js → index-74a659a5.js} +12 -9
  121. package/dist/esm/index-74a659a5.js.map +1 -0
  122. package/dist/esm/loader.js +1 -1
  123. package/dist/esm/q2-action-sheet.entry.js +2 -2
  124. package/dist/esm/q2-action-sheet.entry.js.map +1 -1
  125. package/dist/esm/q2-btn_2.entry.js +1 -1
  126. package/dist/esm/q2-calendar.entry.js +46 -3
  127. package/dist/esm/q2-calendar.entry.js.map +1 -1
  128. package/dist/esm/q2-card.entry.js +1 -1
  129. package/dist/esm/q2-carousel-pane.entry.js +1 -1
  130. package/dist/esm/q2-carousel.entry.js +1 -1
  131. package/dist/esm/q2-chart-area.entry.js +2 -2
  132. package/dist/esm/q2-chart-area.entry.js.map +1 -1
  133. package/dist/esm/q2-chart-bar.entry.js +2 -2
  134. package/dist/esm/q2-chart-bar.entry.js.map +1 -1
  135. package/dist/esm/q2-chart-donut.entry.js +12 -8
  136. package/dist/esm/q2-chart-donut.entry.js.map +1 -1
  137. package/dist/esm/q2-checkbox-group.entry.js +25 -6
  138. package/dist/esm/q2-checkbox-group.entry.js.map +1 -1
  139. package/dist/esm/q2-checkbox.entry.js +1 -1
  140. package/dist/esm/q2-data-table.entry.js +2 -2
  141. package/dist/esm/q2-data-table.entry.js.map +1 -1
  142. package/dist/esm/q2-dropdown-item.entry.js +1 -1
  143. package/dist/esm/q2-dropdown.entry.js +1 -1
  144. package/dist/esm/q2-editable-field.entry.js +34 -6
  145. package/dist/esm/q2-editable-field.entry.js.map +1 -1
  146. package/dist/esm/q2-icon.entry.js +1 -1
  147. package/dist/esm/q2-input.entry.js +17 -10
  148. package/dist/esm/q2-input.entry.js.map +1 -1
  149. package/dist/esm/q2-loc.entry.js +1 -1
  150. package/dist/esm/q2-message.entry.js +14 -13
  151. package/dist/esm/q2-message.entry.js.map +1 -1
  152. package/dist/esm/q2-month-picker.entry.js +1 -1
  153. package/dist/esm/q2-optgroup_2.entry.js +1 -1
  154. package/dist/esm/q2-option-list.entry.js +1 -1
  155. package/dist/esm/q2-pagination.entry.js +1 -1
  156. package/dist/esm/q2-pill.entry.js +3 -3
  157. package/dist/esm/q2-pill.entry.js.map +1 -1
  158. package/dist/esm/q2-radio-group.entry.js +9 -1
  159. package/dist/esm/q2-radio-group.entry.js.map +1 -1
  160. package/dist/esm/q2-radio.entry.js +12 -3
  161. package/dist/esm/q2-radio.entry.js.map +1 -1
  162. package/dist/esm/q2-section.entry.js +1 -1
  163. package/dist/esm/q2-select.entry.js +54 -5
  164. package/dist/esm/q2-select.entry.js.map +1 -1
  165. package/dist/esm/q2-stepper-pane.entry.js +1 -1
  166. package/dist/esm/q2-stepper-vertical.entry.js +1 -1
  167. package/dist/esm/q2-stepper.entry.js +1 -1
  168. package/dist/esm/q2-tab-container.entry.js +1 -1
  169. package/dist/esm/q2-tag.entry.js +1 -1
  170. package/dist/esm/q2-tecton-elements.js +1 -1
  171. package/dist/esm/q2-textarea.entry.js +13 -1
  172. package/dist/esm/q2-textarea.entry.js.map +1 -1
  173. package/dist/esm/q2-tooltip.entry.js +1 -1
  174. package/dist/q2-tecton-elements/{p-2b91b34e.entry.js → p-077107c1.entry.js} +2 -2
  175. package/dist/q2-tecton-elements/p-09d4b3d3.entry.js +2 -0
  176. package/dist/q2-tecton-elements/p-09d4b3d3.entry.js.map +1 -0
  177. package/dist/q2-tecton-elements/{p-b73e7870.entry.js → p-0d4aec6e.entry.js} +2 -2
  178. package/dist/q2-tecton-elements/p-1c993698.entry.js +2 -0
  179. package/dist/q2-tecton-elements/p-1c993698.entry.js.map +1 -0
  180. package/dist/q2-tecton-elements/{p-0c1b74e9.entry.js → p-252889b7.entry.js} +2 -2
  181. package/dist/q2-tecton-elements/p-252889b7.entry.js.map +1 -0
  182. package/dist/q2-tecton-elements/{p-d4da72f0.entry.js → p-25bd1b18.entry.js} +2 -2
  183. package/dist/q2-tecton-elements/p-25bd1b18.entry.js.map +1 -0
  184. package/dist/q2-tecton-elements/p-2a975246.entry.js +2 -0
  185. package/dist/q2-tecton-elements/p-2a975246.entry.js.map +1 -0
  186. package/dist/q2-tecton-elements/{p-55deaceb.entry.js → p-30facf35.entry.js} +2 -2
  187. package/dist/q2-tecton-elements/p-3798ad96.entry.js +2 -0
  188. package/dist/q2-tecton-elements/p-3798ad96.entry.js.map +1 -0
  189. package/dist/q2-tecton-elements/{p-2325975a.entry.js → p-46287c02.entry.js} +2 -2
  190. package/dist/q2-tecton-elements/{p-2bf5a3bc.entry.js → p-47c60d4a.entry.js} +2 -2
  191. package/dist/q2-tecton-elements/{p-6cc730db.entry.js → p-4abbd0b1.entry.js} +2 -2
  192. package/dist/q2-tecton-elements/{p-dafdb018.entry.js → p-570c1d3d.entry.js} +2 -2
  193. package/dist/q2-tecton-elements/p-570c1d3d.entry.js.map +1 -0
  194. package/dist/q2-tecton-elements/{p-4fb81d03.entry.js → p-578e3f98.entry.js} +2 -2
  195. package/dist/q2-tecton-elements/p-58cdb9c7.entry.js +2 -0
  196. package/dist/q2-tecton-elements/p-58cdb9c7.entry.js.map +1 -0
  197. package/dist/q2-tecton-elements/{p-c3650c2e.entry.js → p-597f8656.entry.js} +2 -2
  198. package/dist/q2-tecton-elements/{p-ce27270b.entry.js → p-59d34a17.entry.js} +2 -2
  199. package/dist/q2-tecton-elements/{p-3c0d391b.entry.js → p-5bc4d94c.entry.js} +2 -2
  200. package/dist/q2-tecton-elements/{p-70a59bf1.entry.js → p-67f33354.entry.js} +2 -2
  201. package/dist/q2-tecton-elements/p-67f33354.entry.js.map +1 -0
  202. package/dist/q2-tecton-elements/{p-c9f32e51.entry.js → p-6cacc879.entry.js} +2 -2
  203. package/dist/q2-tecton-elements/{p-f637136f.entry.js → p-7366d36d.entry.js} +2 -2
  204. package/dist/q2-tecton-elements/{p-e5a8f7ff.entry.js → p-75fd6df5.entry.js} +2 -2
  205. package/dist/q2-tecton-elements/{p-e5a8f7ff.entry.js.map → p-75fd6df5.entry.js.map} +1 -1
  206. package/dist/q2-tecton-elements/{p-68371e6d.entry.js → p-8e7b762a.entry.js} +2 -2
  207. package/dist/q2-tecton-elements/{p-ece07c0d.entry.js → p-9a28b93a.entry.js} +2 -2
  208. package/dist/q2-tecton-elements/{p-d3827468.entry.js → p-9c9a2550.entry.js} +2 -2
  209. package/dist/q2-tecton-elements/{p-15ca5c98.entry.js → p-9d743327.entry.js} +2 -2
  210. package/dist/q2-tecton-elements/{p-8c6f8d06.entry.js → p-9ef2829e.entry.js} +2 -2
  211. package/dist/q2-tecton-elements/{p-8c6f8d06.entry.js.map → p-9ef2829e.entry.js.map} +1 -1
  212. package/dist/q2-tecton-elements/{p-3fd4f83d.entry.js → p-a52371cf.entry.js} +2 -2
  213. package/dist/q2-tecton-elements/{p-f11326c2.entry.js → p-a53e9f1e.entry.js} +2 -2
  214. package/dist/q2-tecton-elements/{p-586c8654.entry.js → p-a60f82c0.entry.js} +2 -2
  215. package/dist/q2-tecton-elements/p-a60f82c0.entry.js.map +1 -0
  216. package/dist/q2-tecton-elements/{p-6e6b160d.entry.js → p-ac82ea35.entry.js} +2 -2
  217. package/dist/q2-tecton-elements/{p-8e8a40ca.entry.js → p-bfd69d42.entry.js} +2 -2
  218. package/dist/q2-tecton-elements/{p-82bda2ff.entry.js → p-db6921fb.entry.js} +2 -2
  219. package/dist/q2-tecton-elements/{p-cfbd2cb1.entry.js → p-e45856f7.entry.js} +2 -2
  220. package/dist/q2-tecton-elements/p-e45856f7.entry.js.map +1 -0
  221. package/dist/q2-tecton-elements/{p-654987bf.entry.js → p-e8858d0d.entry.js} +2 -2
  222. package/dist/q2-tecton-elements/p-e8858d0d.entry.js.map +1 -0
  223. package/dist/q2-tecton-elements/{p-99ab3236.js → p-ef856249.js} +2 -2
  224. package/dist/q2-tecton-elements/p-ef856249.js.map +1 -0
  225. package/dist/q2-tecton-elements/{p-073df9e2.entry.js → p-efbe6c17.entry.js} +2 -2
  226. package/dist/q2-tecton-elements/p-efbe6c17.entry.js.map +1 -0
  227. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
  228. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js.map +1 -1
  229. package/dist/test/elements/q2-calendar-test.e2e.js +177 -0
  230. package/dist/test/elements/q2-calendar-test.e2e.js.map +1 -1
  231. package/dist/test/elements/q2-chart-area-test.e2e.js +30 -1
  232. package/dist/test/elements/q2-chart-area-test.e2e.js.map +1 -1
  233. package/dist/test/elements/q2-chart-bar-test.e2e.js +30 -1
  234. package/dist/test/elements/q2-chart-bar-test.e2e.js.map +1 -1
  235. package/dist/test/elements/q2-chart-donut-test.e2e.js +21 -18
  236. package/dist/test/elements/q2-chart-donut-test.e2e.js.map +1 -1
  237. package/dist/test/elements/q2-checkbox-group-test.e2e.js +138 -18
  238. package/dist/test/elements/q2-checkbox-group-test.e2e.js.map +1 -1
  239. package/dist/test/elements/q2-checkbox-test.e2e.js +143 -115
  240. package/dist/test/elements/q2-checkbox-test.e2e.js.map +1 -1
  241. package/dist/test/elements/q2-editable-field-test.e2e.js +149 -28
  242. package/dist/test/elements/q2-editable-field-test.e2e.js.map +1 -1
  243. package/dist/test/elements/q2-input-test.e2e.js +150 -9
  244. package/dist/test/elements/q2-input-test.e2e.js.map +1 -1
  245. package/dist/test/elements/q2-message-test.e2e.js +38 -1
  246. package/dist/test/elements/q2-message-test.e2e.js.map +1 -1
  247. package/dist/test/elements/q2-pill-test.e2e.js +37 -1
  248. package/dist/test/elements/q2-pill-test.e2e.js.map +1 -1
  249. package/dist/test/elements/q2-radio-group-test.e2e.js +148 -186
  250. package/dist/test/elements/q2-radio-group-test.e2e.js.map +1 -1
  251. package/dist/test/elements/q2-radio-test.e2e.js +100 -15
  252. package/dist/test/elements/q2-radio-test.e2e.js.map +1 -1
  253. package/dist/test/elements/q2-select-test.e2e.js +203 -0
  254. package/dist/test/elements/q2-select-test.e2e.js.map +1 -1
  255. package/dist/test/elements/q2-tag-test.e2e.js +5 -0
  256. package/dist/test/elements/q2-tag-test.e2e.js.map +1 -1
  257. package/dist/test/elements/q2-textarea-test.e2e.js +33 -1
  258. package/dist/test/elements/q2-textarea-test.e2e.js.map +1 -1
  259. package/dist/types/components/q2-calendar/index.d.ts +8 -1
  260. package/dist/types/components/q2-chart-donut/index.d.ts +1 -1
  261. package/dist/types/components/q2-checkbox-group/index.d.ts +3 -0
  262. package/dist/types/components/q2-editable-field/index.d.ts +10 -2
  263. package/dist/types/components/q2-input/index.d.ts +2 -0
  264. package/dist/types/components/q2-message/index.d.ts +1 -0
  265. package/dist/types/components/q2-radio/index.d.ts +1 -0
  266. package/dist/types/components/q2-radio-group/index.d.ts +1 -0
  267. package/dist/types/components/q2-select/index.d.ts +9 -1
  268. package/dist/types/components/q2-textarea/index.d.ts +2 -0
  269. package/dist/types/components.d.ts +19 -0
  270. package/package.json +3 -3
  271. package/dist/cjs/index-f6545293.js.map +0 -1
  272. package/dist/esm/index-35ff2881.js.map +0 -1
  273. package/dist/q2-tecton-elements/p-073df9e2.entry.js.map +0 -1
  274. package/dist/q2-tecton-elements/p-0c1b74e9.entry.js.map +0 -1
  275. package/dist/q2-tecton-elements/p-215d5ab4.entry.js +0 -2
  276. package/dist/q2-tecton-elements/p-215d5ab4.entry.js.map +0 -1
  277. package/dist/q2-tecton-elements/p-2987498c.entry.js +0 -2
  278. package/dist/q2-tecton-elements/p-2987498c.entry.js.map +0 -1
  279. package/dist/q2-tecton-elements/p-586c8654.entry.js.map +0 -1
  280. package/dist/q2-tecton-elements/p-654987bf.entry.js.map +0 -1
  281. package/dist/q2-tecton-elements/p-70a59bf1.entry.js.map +0 -1
  282. package/dist/q2-tecton-elements/p-7a6e33d4.entry.js +0 -2
  283. package/dist/q2-tecton-elements/p-7a6e33d4.entry.js.map +0 -1
  284. package/dist/q2-tecton-elements/p-99ab3236.js.map +0 -1
  285. package/dist/q2-tecton-elements/p-ae2fa966.entry.js +0 -2
  286. package/dist/q2-tecton-elements/p-ae2fa966.entry.js.map +0 -1
  287. package/dist/q2-tecton-elements/p-b8d1c16f.entry.js +0 -2
  288. package/dist/q2-tecton-elements/p-b8d1c16f.entry.js.map +0 -1
  289. package/dist/q2-tecton-elements/p-cfbd2cb1.entry.js.map +0 -1
  290. package/dist/q2-tecton-elements/p-d4da72f0.entry.js.map +0 -1
  291. package/dist/q2-tecton-elements/p-dafdb018.entry.js.map +0 -1
  292. /package/dist/q2-tecton-elements/{p-2b91b34e.entry.js.map → p-077107c1.entry.js.map} +0 -0
  293. /package/dist/q2-tecton-elements/{p-b73e7870.entry.js.map → p-0d4aec6e.entry.js.map} +0 -0
  294. /package/dist/q2-tecton-elements/{p-55deaceb.entry.js.map → p-30facf35.entry.js.map} +0 -0
  295. /package/dist/q2-tecton-elements/{p-2325975a.entry.js.map → p-46287c02.entry.js.map} +0 -0
  296. /package/dist/q2-tecton-elements/{p-2bf5a3bc.entry.js.map → p-47c60d4a.entry.js.map} +0 -0
  297. /package/dist/q2-tecton-elements/{p-6cc730db.entry.js.map → p-4abbd0b1.entry.js.map} +0 -0
  298. /package/dist/q2-tecton-elements/{p-4fb81d03.entry.js.map → p-578e3f98.entry.js.map} +0 -0
  299. /package/dist/q2-tecton-elements/{p-c3650c2e.entry.js.map → p-597f8656.entry.js.map} +0 -0
  300. /package/dist/q2-tecton-elements/{p-ce27270b.entry.js.map → p-59d34a17.entry.js.map} +0 -0
  301. /package/dist/q2-tecton-elements/{p-3c0d391b.entry.js.map → p-5bc4d94c.entry.js.map} +0 -0
  302. /package/dist/q2-tecton-elements/{p-c9f32e51.entry.js.map → p-6cacc879.entry.js.map} +0 -0
  303. /package/dist/q2-tecton-elements/{p-f637136f.entry.js.map → p-7366d36d.entry.js.map} +0 -0
  304. /package/dist/q2-tecton-elements/{p-68371e6d.entry.js.map → p-8e7b762a.entry.js.map} +0 -0
  305. /package/dist/q2-tecton-elements/{p-ece07c0d.entry.js.map → p-9a28b93a.entry.js.map} +0 -0
  306. /package/dist/q2-tecton-elements/{p-d3827468.entry.js.map → p-9c9a2550.entry.js.map} +0 -0
  307. /package/dist/q2-tecton-elements/{p-15ca5c98.entry.js.map → p-9d743327.entry.js.map} +0 -0
  308. /package/dist/q2-tecton-elements/{p-3fd4f83d.entry.js.map → p-a52371cf.entry.js.map} +0 -0
  309. /package/dist/q2-tecton-elements/{p-f11326c2.entry.js.map → p-a53e9f1e.entry.js.map} +0 -0
  310. /package/dist/q2-tecton-elements/{p-6e6b160d.entry.js.map → p-ac82ea35.entry.js.map} +0 -0
  311. /package/dist/q2-tecton-elements/{p-8e8a40ca.entry.js.map → p-bfd69d42.entry.js.map} +0 -0
  312. /package/dist/q2-tecton-elements/{p-82bda2ff.entry.js.map → p-db6921fb.entry.js.map} +0 -0
@@ -145,6 +145,11 @@ describe('q2-tag', () => {
145
145
  const tagWrapper = await page.find('q2-tag >>> .tag-wrapper');
146
146
  expect(tagWrapper.nodeName).toEqual('DIV');
147
147
  });
148
+ it('zero is not rendered inside the click-elsewhere element (TCT-2433)', async () => {
149
+ const clickElsewhere = await page.find('q2-tag >>> click-elsewhere');
150
+ expect(await tag.getProperty('label')).toBe('My tag');
151
+ expect(clickElsewhere.textContent.slice(-1)).not.toBe('0');
152
+ });
148
153
  });
149
154
  describe('Props', () => {
150
155
  describe('hoist', () => {
@@ -1 +1 @@
1
- {"version":3,"file":"q2-tag-test.e2e.js","sourceRoot":"","sources":["../../../test/elements/q2-tag-test.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { E2EElement, E2EPage, EventSpy } from '@stencil/core/testing';\nimport { ActionSheetListCloseData } from 'q2-tecton-common/lib/utility/action-sheet';\nimport {\n setup,\n getFocusedAttribute,\n getFocusedTagName,\n getFocusedOptionValue,\n getActiveElementTestId,\n checkStylesForCompilationIssues,\n} from '../helpers';\n\ndescribe('q2-tag', () => {\n let page: E2EPage;\n let tag: E2EElement;\n let optionList: E2EElement;\n let popover: E2EElement;\n let controlBtn: E2EElement;\n let allOptions: E2EElement[];\n let optionContainer: E2EElement;\n let clickSpy: EventSpy;\n let changeSpy: EventSpy;\n\n it('properly compiles CSS vars and functions', async () => {\n const page = await setup({ html: `<q2-tag></q2-tag>` });\n const styleCheckResults = await checkStylesForCompilationIssues(page, 'q2-tag');\n expect(styleCheckResults).toHaveLength(0);\n });\n\n it('does not render button or dropdown by default', async () => {\n page = await setup({\n html: `<q2-tag label=\"My tag\"></q2-tag>`,\n });\n optionList = await page.find('q2-tag >>> q2-option-list');\n controlBtn = await page.find('q2-tag >>> button');\n\n expect(controlBtn).toBeNull();\n expect(optionList).toBeNull();\n });\n\n describe('when options are provided', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `,\n });\n tag = await page.find('q2-tag');\n allOptions = await page.findAll('q2-option');\n optionList = await page.find('q2-tag >>> q2-option-list');\n popover = await page.find('q2-tag >>> q2-popover');\n optionContainer = await page.find('q2-tag >>> q2-option-list >>> .options');\n controlBtn = await page.find('q2-tag >>> button');\n clickSpy = await tag.spyOnEvent('click');\n changeSpy = await tag.spyOnEvent('change');\n });\n\n it('renders the tag-wrapper as a button', async () => {\n const tagWrapper = await page.find('q2-tag >>> .tag-wrapper');\n expect(tagWrapper.nodeName).toEqual('BUTTON');\n });\n\n it('can select option via keyboard', async () => {\n const tagLabel = await page.find('q2-tag >>> .tag');\n\n expect(tagLabel.classList.contains('has-options')).toBe(true);\n expect(popover).not.toHaveAttribute('open');\n\n await controlBtn.press('ArrowDown');\n await page.waitForChanges();\n\n expect(tag).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedOptionValue(page)).toEqual('1');\n\n await optionContainer.press('ArrowDown');\n await page.waitForChanges();\n expect(await getFocusedOptionValue(page)).toEqual('2');\n await allOptions[1].press(' ');\n await page.waitForChanges();\n\n expect(tag).not.toHaveAttribute('open');\n expect(popover).not.toHaveAttribute('open');\n expect(clickSpy).toHaveReceivedEventDetail({\n value: '2',\n });\n expect(changeSpy).not.toHaveReceivedEvent();\n });\n\n it('can select option via mouse', async () => {\n const tagLabel = await page.find('q2-tag >>> .tag');\n\n expect(tagLabel.classList.contains('has-options')).toBe(true);\n expect(popover).not.toHaveAttribute('open');\n\n await controlBtn.click();\n await page.waitForChanges();\n\n expect(tag).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedTagName(page)).toEqual('Q2-TAG');\n\n await allOptions[1].click();\n await page.waitForChanges();\n\n // expect(tag).not.toHaveAttribute('open');\n // expect(popover).not.toHaveAttribute('open');\n expect(clickSpy).toHaveReceivedEventDetail({\n value: '2',\n });\n expect(changeSpy).not.toHaveReceivedEvent();\n });\n\n describe('when keyboard is pressed', () => {\n it('opens list and focuses first option on ArrowDown', async () => {\n await controlBtn.press('ArrowDown');\n await page.waitForChanges();\n\n expect(tag).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedOptionValue(page)).toEqual('1');\n });\n\n it('opens list and focuses last option on ArrowUp', async () => {\n await controlBtn.press('ArrowUp');\n await page.waitForChanges();\n\n expect(tag).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedOptionValue(page)).toEqual('3');\n });\n\n it('opens list and focuses first option on Enter', async () => {\n await controlBtn.press('Enter');\n await page.waitForChanges();\n\n expect(tag).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedOptionValue(page)).toEqual('1');\n });\n\n it('opens list and focuses first option on Space', async () => {\n await controlBtn.press(' ');\n await page.waitForChanges();\n\n expect(tag).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedOptionValue(page)).toEqual('1');\n });\n\n it('opens list and focuses last option on Home', async () => {\n await controlBtn.press('Home');\n await page.waitForChanges();\n\n expect(tag).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedAttribute(page, 'value')).toEqual('1');\n });\n\n it('opens list and focuses last option on End', async () => {\n await controlBtn.press('End');\n await page.waitForChanges();\n\n expect(tag).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedAttribute(page, 'value')).toEqual('3');\n });\n });\n });\n\n describe('when options are NOT provided', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\">\n </q2-tag>\n `,\n });\n tag = await page.find('q2-tag');\n });\n it('renders the tag-wrapper as a div', async () => {\n const tagWrapper = await page.find('q2-tag >>> .tag-wrapper');\n expect(tagWrapper.nodeName).toEqual('DIV');\n });\n });\n\n describe('Props', () => {\n describe('hoist', () => {\n const runHoistSetup = async (\n action: string,\n hoistEnabled: boolean = false,\n defineShowActionSheet: boolean = false,\n isCancelled: boolean = false\n ) => {\n page = await setup({\n html: `\n <q2-tag ${hoistEnabled ? 'hoist' : ''} label=\"My tag\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `,\n });\n\n if (defineShowActionSheet) {\n await page.evaluate(isCancelled => {\n const returnValue: ActionSheetListCloseData = isCancelled\n ? {\n type: 'cancel',\n value: '',\n values: [],\n }\n : {\n value: '3',\n values: [{ display: 'Option 3', value: '3' }],\n type: 'confirm',\n };\n (this as Window).TectonElements.showActionSheet = async () => returnValue;\n }, isCancelled);\n }\n\n popover = await page.find('q2-tag >>> q2-popover');\n tag = await page.find('q2-tag');\n controlBtn = await page.find('q2-tag >>> button');\n clickSpy = await tag.spyOnEvent('click');\n\n expect(popover).not.toHaveAttribute('open');\n\n if (action === 'click') {\n await controlBtn.click();\n } else {\n await controlBtn.press(action);\n }\n await page.waitForChanges();\n };\n\n describe('when window.Tecton.useActionSheets is true', () => {\n it('defaults the hoist prop to true', async () => {\n page = await setup({ html: `` });\n await page.evaluate(() => {\n (this as Window).Tecton = {\n inMobileApp: false,\n useActionSheets: true,\n noStrings: false,\n platformDimensions: null,\n platformUrl: null,\n };\n });\n await page.setContent(`\n <q2-tag label=\"My tag\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `);\n await page.waitForChanges();\n\n tag = await page.find('q2-tag');\n expect(await tag.getProperty('hoist')).toEqual(true);\n });\n\n it('sets hoist to false when manually set to false', async () => {\n page = await setup({ html: `` });\n await page.evaluate(() => {\n (this as Window).Tecton = {\n inMobileApp: false,\n useActionSheets: true,\n noStrings: false,\n platformDimensions: null,\n platformUrl: null,\n };\n });\n await page.setContent(`\n <q2-tag label=\"My tag\" hoist=\"false\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `);\n await page.waitForChanges();\n\n tag = await page.find('q2-tag');\n expect(await tag.getProperty('hoist')).toEqual(false);\n });\n });\n\n describe('when false (default)', () => {\n it('opens popover on click', async () => {\n await runHoistSetup('click', false, true);\n\n expect(popover).toHaveAttribute('open');\n\n const option = await page.find('q2-option[value=\"3\"]');\n await option.click();\n await page.waitForChanges();\n\n expect(popover).not.toHaveAttribute('open');\n\n expect(clickSpy).toHaveReceivedEventDetail({\n value: '3',\n });\n });\n });\n\n describe('when true', () => {\n describe('when window.TectonElements.showActionSheet is not defined', () => {\n it('opens popover on click', async () => {\n await runHoistSetup('click', true, false);\n\n const option = await page.find('q2-option[value=\"3\"]');\n await option.click();\n await page.waitForChanges();\n\n expect(popover).not.toHaveAttribute('open');\n\n expect(clickSpy).toHaveReceivedEventDetail({\n value: '3',\n });\n });\n });\n\n describe('when window.TectonElements.showActionSheet is defined', () => {\n ['click', 'ArrowDown', 'Space', 'Enter'].forEach(action => {\n it(`calls showActionSheet on ${action}`, async () => {\n await runHoistSetup(action, true, true);\n\n expect(clickSpy).toHaveReceivedEventDetail({\n value: '3',\n });\n });\n });\n\n it(`calls showActionSheet on click and returns no data when cancelled`, async () => {\n await runHoistSetup('click', true, true, true);\n\n expect(clickSpy).toHaveReceivedEventDetail({\n value: '',\n });\n });\n });\n });\n });\n\n describe('popoverMinHeight', () => {\n describe('when not provided', () => {\n it('defaults to 150 and passes that value to q2-popover', async () => {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `,\n });\n tag = await page.find('q2-tag');\n popover = await page.find('q2-tag >>> q2-popover');\n\n expect(await tag.getProperty('popoverMinHeight')).toEqual(150);\n expect(await popover.getProperty('minHeight')).toEqual(150);\n });\n });\n describe('when provided', () => {\n it('passes the provided value to the q2-popover', async () => {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\" popover-min-height=\"300\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `,\n });\n popover = await page.find('q2-tag >>> q2-popover');\n\n expect(await popover.getProperty('minHeight')).toEqual(300);\n });\n });\n });\n\n describe('popoverDirection', () => {\n describe('when not provided', () => {\n it('does not default and does not pass a value to q2-popover', async () => {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `,\n });\n tag = await page.find('q2-tag');\n popover = await page.find('q2-tag >>> q2-popover');\n\n expect(await tag.getProperty('popoverDirection')).toBeUndefined();\n expect(await popover.getProperty('direction')).toBeUndefined();\n });\n });\n describe('when provided', () => {\n it('passes the provided value to the q2-popover', async () => {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\" popover-direction=\"up\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `,\n });\n popover = await page.find('q2-tag >>> q2-popover');\n\n expect(await popover.getProperty('direction')).toEqual('up');\n });\n });\n });\n describe('popoverAlingment', () => {\n it('can be initally set to left, then assigned to right, then back to left', async () => {\n page = await setup({\n html: `\n <q2-tag popover-alignment=\"left\">\n <q2-dropdown-item>Item 1</q2-dropdown-item>\n <q2-dropdown-item>Item 2</q2-dropdown-item>\n </q2-tag>\n `,\n });\n await page.waitForChanges();\n tag = await page.find('q2-tag');\n expect(await tag.getProperty('popoverAlignment')).toEqual('left');\n\n tag.setProperty('popoverAlignment', 'right');\n await page.waitForChanges();\n\n expect(await tag.getProperty('popoverAlignment')).toEqual('right');\n\n tag.setProperty('popoverAlignment', 'left');\n await page.waitForChanges();\n\n expect(await tag.getProperty('popoverAlignment')).toEqual('left');\n });\n it('will default to right via the prop inital value in q2-tag', async () => {\n page = await setup({\n html: `\n <q2-tag>\n <q2-dropdown-item>Item 1</q2-dropdown-item>\n <q2-dropdown-item>Item 2</q2-dropdown-item>\n </q2-tag>\n `,\n });\n await page.waitForChanges();\n tag = await page.find('q2-tag');\n expect(await tag.getProperty('popoverAlignment')).toEqual('right');\n });\n });\n });\n\n describe('focus', () => {\n let page: E2EPage;\n let tag: E2EElement;\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `,\n });\n tag = await page.find('q2-tag');\n });\n\n it('focuses active option and opens the list when focus event is dispatched', async function (): Promise<void> {\n await tag.triggerEvent('focus');\n await page.waitForChanges();\n\n expect(await getFocusedAttribute(page, 'test-id')).toEqual('btn-control');\n });\n\n it('focuses active option and opens the list when element.focus() is called', async function (): Promise<void> {\n await tag.focus();\n await page.waitForChanges();\n\n expect(await getFocusedAttribute(page, 'test-id')).toEqual('btn-control');\n });\n });\n\n describe('Regressions', () => {\n describe('TCT-2161', () => {\n it('leaves the element when Tab is pressed', async function (): Promise<void> {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n <button test-id=\"btn-next\">Test</button>\n `,\n });\n tag = await page.find('q2-tag');\n await tag.focus();\n\n expect(await getActiveElementTestId(page)).toEqual('btn-control');\n\n await tag.press('Tab');\n await page.waitForChanges();\n\n expect(await getActiveElementTestId(page)).toEqual('btn-next');\n });\n });\n });\n\n describe('Accessibility', () => {\n it(\"option-list should have a role of 'menu' and the options a role of 'menuoption'\", async () => {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\" open>\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `,\n });\n await page.waitForChanges();\n\n const snapshot = await page.accessibility.snapshot();\n const button = snapshot.children[0];\n const optionList = snapshot.children[1];\n\n expect(button.role).toEqual('combobox');\n expect(optionList.role).toEqual('menu');\n expect(optionList.children).toHaveLength(3);\n optionList.children.forEach(child => {\n expect(child.role).toEqual('menuitem');\n });\n });\n });\n});\n"]}
1
+ {"version":3,"file":"q2-tag-test.e2e.js","sourceRoot":"","sources":["../../../test/elements/q2-tag-test.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { E2EElement, E2EPage, EventSpy } from '@stencil/core/testing';\nimport { ActionSheetListCloseData } from 'q2-tecton-common/lib/utility/action-sheet';\nimport {\n setup,\n getFocusedAttribute,\n getFocusedTagName,\n getFocusedOptionValue,\n getActiveElementTestId,\n checkStylesForCompilationIssues,\n} from '../helpers';\n\ndescribe('q2-tag', () => {\n let page: E2EPage;\n let tag: E2EElement;\n let optionList: E2EElement;\n let popover: E2EElement;\n let controlBtn: E2EElement;\n let allOptions: E2EElement[];\n let optionContainer: E2EElement;\n let clickSpy: EventSpy;\n let changeSpy: EventSpy;\n\n it('properly compiles CSS vars and functions', async () => {\n const page = await setup({ html: `<q2-tag></q2-tag>` });\n const styleCheckResults = await checkStylesForCompilationIssues(page, 'q2-tag');\n expect(styleCheckResults).toHaveLength(0);\n });\n\n it('does not render button or dropdown by default', async () => {\n page = await setup({\n html: `<q2-tag label=\"My tag\"></q2-tag>`,\n });\n optionList = await page.find('q2-tag >>> q2-option-list');\n controlBtn = await page.find('q2-tag >>> button');\n\n expect(controlBtn).toBeNull();\n expect(optionList).toBeNull();\n });\n\n describe('when options are provided', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `,\n });\n tag = await page.find('q2-tag');\n allOptions = await page.findAll('q2-option');\n optionList = await page.find('q2-tag >>> q2-option-list');\n popover = await page.find('q2-tag >>> q2-popover');\n optionContainer = await page.find('q2-tag >>> q2-option-list >>> .options');\n controlBtn = await page.find('q2-tag >>> button');\n clickSpy = await tag.spyOnEvent('click');\n changeSpy = await tag.spyOnEvent('change');\n });\n\n it('renders the tag-wrapper as a button', async () => {\n const tagWrapper = await page.find('q2-tag >>> .tag-wrapper');\n expect(tagWrapper.nodeName).toEqual('BUTTON');\n });\n\n it('can select option via keyboard', async () => {\n const tagLabel = await page.find('q2-tag >>> .tag');\n\n expect(tagLabel.classList.contains('has-options')).toBe(true);\n expect(popover).not.toHaveAttribute('open');\n\n await controlBtn.press('ArrowDown');\n await page.waitForChanges();\n\n expect(tag).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedOptionValue(page)).toEqual('1');\n\n await optionContainer.press('ArrowDown');\n await page.waitForChanges();\n expect(await getFocusedOptionValue(page)).toEqual('2');\n await allOptions[1].press(' ');\n await page.waitForChanges();\n\n expect(tag).not.toHaveAttribute('open');\n expect(popover).not.toHaveAttribute('open');\n expect(clickSpy).toHaveReceivedEventDetail({\n value: '2',\n });\n expect(changeSpy).not.toHaveReceivedEvent();\n });\n\n it('can select option via mouse', async () => {\n const tagLabel = await page.find('q2-tag >>> .tag');\n\n expect(tagLabel.classList.contains('has-options')).toBe(true);\n expect(popover).not.toHaveAttribute('open');\n\n await controlBtn.click();\n await page.waitForChanges();\n\n expect(tag).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedTagName(page)).toEqual('Q2-TAG');\n\n await allOptions[1].click();\n await page.waitForChanges();\n\n // expect(tag).not.toHaveAttribute('open');\n // expect(popover).not.toHaveAttribute('open');\n expect(clickSpy).toHaveReceivedEventDetail({\n value: '2',\n });\n expect(changeSpy).not.toHaveReceivedEvent();\n });\n\n describe('when keyboard is pressed', () => {\n it('opens list and focuses first option on ArrowDown', async () => {\n await controlBtn.press('ArrowDown');\n await page.waitForChanges();\n\n expect(tag).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedOptionValue(page)).toEqual('1');\n });\n\n it('opens list and focuses last option on ArrowUp', async () => {\n await controlBtn.press('ArrowUp');\n await page.waitForChanges();\n\n expect(tag).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedOptionValue(page)).toEqual('3');\n });\n\n it('opens list and focuses first option on Enter', async () => {\n await controlBtn.press('Enter');\n await page.waitForChanges();\n\n expect(tag).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedOptionValue(page)).toEqual('1');\n });\n\n it('opens list and focuses first option on Space', async () => {\n await controlBtn.press(' ');\n await page.waitForChanges();\n\n expect(tag).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedOptionValue(page)).toEqual('1');\n });\n\n it('opens list and focuses last option on Home', async () => {\n await controlBtn.press('Home');\n await page.waitForChanges();\n\n expect(tag).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedAttribute(page, 'value')).toEqual('1');\n });\n\n it('opens list and focuses last option on End', async () => {\n await controlBtn.press('End');\n await page.waitForChanges();\n\n expect(tag).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedAttribute(page, 'value')).toEqual('3');\n });\n });\n });\n\n describe('when options are NOT provided', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\">\n </q2-tag>\n `,\n });\n tag = await page.find('q2-tag');\n });\n it('renders the tag-wrapper as a div', async () => {\n const tagWrapper = await page.find('q2-tag >>> .tag-wrapper');\n expect(tagWrapper.nodeName).toEqual('DIV');\n });\n it('zero is not rendered inside the click-elsewhere element (TCT-2433)', async () => {\n const clickElsewhere = await page.find('q2-tag >>> click-elsewhere');\n expect(await tag.getProperty('label')).toBe('My tag');\n expect(clickElsewhere.textContent.slice(-1)).not.toBe('0');\n });\n });\n\n describe('Props', () => {\n describe('hoist', () => {\n const runHoistSetup = async (\n action: string,\n hoistEnabled: boolean = false,\n defineShowActionSheet: boolean = false,\n isCancelled: boolean = false\n ) => {\n page = await setup({\n html: `\n <q2-tag ${hoistEnabled ? 'hoist' : ''} label=\"My tag\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `,\n });\n\n if (defineShowActionSheet) {\n await page.evaluate(isCancelled => {\n const returnValue: ActionSheetListCloseData = isCancelled\n ? {\n type: 'cancel',\n value: '',\n values: [],\n }\n : {\n value: '3',\n values: [{ display: 'Option 3', value: '3' }],\n type: 'confirm',\n };\n (this as Window).TectonElements.showActionSheet = async () => returnValue;\n }, isCancelled);\n }\n\n popover = await page.find('q2-tag >>> q2-popover');\n tag = await page.find('q2-tag');\n controlBtn = await page.find('q2-tag >>> button');\n clickSpy = await tag.spyOnEvent('click');\n\n expect(popover).not.toHaveAttribute('open');\n\n if (action === 'click') {\n await controlBtn.click();\n } else {\n await controlBtn.press(action);\n }\n await page.waitForChanges();\n };\n\n describe('when window.Tecton.useActionSheets is true', () => {\n it('defaults the hoist prop to true', async () => {\n page = await setup({ html: `` });\n await page.evaluate(() => {\n (this as Window).Tecton = {\n inMobileApp: false,\n useActionSheets: true,\n noStrings: false,\n platformDimensions: null,\n platformUrl: null,\n };\n });\n await page.setContent(`\n <q2-tag label=\"My tag\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `);\n await page.waitForChanges();\n\n tag = await page.find('q2-tag');\n expect(await tag.getProperty('hoist')).toEqual(true);\n });\n\n it('sets hoist to false when manually set to false', async () => {\n page = await setup({ html: `` });\n await page.evaluate(() => {\n (this as Window).Tecton = {\n inMobileApp: false,\n useActionSheets: true,\n noStrings: false,\n platformDimensions: null,\n platformUrl: null,\n };\n });\n await page.setContent(`\n <q2-tag label=\"My tag\" hoist=\"false\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `);\n await page.waitForChanges();\n\n tag = await page.find('q2-tag');\n expect(await tag.getProperty('hoist')).toEqual(false);\n });\n });\n\n describe('when false (default)', () => {\n it('opens popover on click', async () => {\n await runHoistSetup('click', false, true);\n\n expect(popover).toHaveAttribute('open');\n\n const option = await page.find('q2-option[value=\"3\"]');\n await option.click();\n await page.waitForChanges();\n\n expect(popover).not.toHaveAttribute('open');\n\n expect(clickSpy).toHaveReceivedEventDetail({\n value: '3',\n });\n });\n });\n\n describe('when true', () => {\n describe('when window.TectonElements.showActionSheet is not defined', () => {\n it('opens popover on click', async () => {\n await runHoistSetup('click', true, false);\n\n const option = await page.find('q2-option[value=\"3\"]');\n await option.click();\n await page.waitForChanges();\n\n expect(popover).not.toHaveAttribute('open');\n\n expect(clickSpy).toHaveReceivedEventDetail({\n value: '3',\n });\n });\n });\n\n describe('when window.TectonElements.showActionSheet is defined', () => {\n ['click', 'ArrowDown', 'Space', 'Enter'].forEach(action => {\n it(`calls showActionSheet on ${action}`, async () => {\n await runHoistSetup(action, true, true);\n\n expect(clickSpy).toHaveReceivedEventDetail({\n value: '3',\n });\n });\n });\n\n it(`calls showActionSheet on click and returns no data when cancelled`, async () => {\n await runHoistSetup('click', true, true, true);\n\n expect(clickSpy).toHaveReceivedEventDetail({\n value: '',\n });\n });\n });\n });\n });\n\n describe('popoverMinHeight', () => {\n describe('when not provided', () => {\n it('defaults to 150 and passes that value to q2-popover', async () => {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `,\n });\n tag = await page.find('q2-tag');\n popover = await page.find('q2-tag >>> q2-popover');\n\n expect(await tag.getProperty('popoverMinHeight')).toEqual(150);\n expect(await popover.getProperty('minHeight')).toEqual(150);\n });\n });\n describe('when provided', () => {\n it('passes the provided value to the q2-popover', async () => {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\" popover-min-height=\"300\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `,\n });\n popover = await page.find('q2-tag >>> q2-popover');\n\n expect(await popover.getProperty('minHeight')).toEqual(300);\n });\n });\n });\n\n describe('popoverDirection', () => {\n describe('when not provided', () => {\n it('does not default and does not pass a value to q2-popover', async () => {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `,\n });\n tag = await page.find('q2-tag');\n popover = await page.find('q2-tag >>> q2-popover');\n\n expect(await tag.getProperty('popoverDirection')).toBeUndefined();\n expect(await popover.getProperty('direction')).toBeUndefined();\n });\n });\n describe('when provided', () => {\n it('passes the provided value to the q2-popover', async () => {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\" popover-direction=\"up\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `,\n });\n popover = await page.find('q2-tag >>> q2-popover');\n\n expect(await popover.getProperty('direction')).toEqual('up');\n });\n });\n });\n describe('popoverAlingment', () => {\n it('can be initally set to left, then assigned to right, then back to left', async () => {\n page = await setup({\n html: `\n <q2-tag popover-alignment=\"left\">\n <q2-dropdown-item>Item 1</q2-dropdown-item>\n <q2-dropdown-item>Item 2</q2-dropdown-item>\n </q2-tag>\n `,\n });\n await page.waitForChanges();\n tag = await page.find('q2-tag');\n expect(await tag.getProperty('popoverAlignment')).toEqual('left');\n\n tag.setProperty('popoverAlignment', 'right');\n await page.waitForChanges();\n\n expect(await tag.getProperty('popoverAlignment')).toEqual('right');\n\n tag.setProperty('popoverAlignment', 'left');\n await page.waitForChanges();\n\n expect(await tag.getProperty('popoverAlignment')).toEqual('left');\n });\n it('will default to right via the prop inital value in q2-tag', async () => {\n page = await setup({\n html: `\n <q2-tag>\n <q2-dropdown-item>Item 1</q2-dropdown-item>\n <q2-dropdown-item>Item 2</q2-dropdown-item>\n </q2-tag>\n `,\n });\n await page.waitForChanges();\n tag = await page.find('q2-tag');\n expect(await tag.getProperty('popoverAlignment')).toEqual('right');\n });\n });\n });\n\n describe('focus', () => {\n let page: E2EPage;\n let tag: E2EElement;\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `,\n });\n tag = await page.find('q2-tag');\n });\n\n it('focuses active option and opens the list when focus event is dispatched', async function (): Promise<void> {\n await tag.triggerEvent('focus');\n await page.waitForChanges();\n\n expect(await getFocusedAttribute(page, 'test-id')).toEqual('btn-control');\n });\n\n it('focuses active option and opens the list when element.focus() is called', async function (): Promise<void> {\n await tag.focus();\n await page.waitForChanges();\n\n expect(await getFocusedAttribute(page, 'test-id')).toEqual('btn-control');\n });\n });\n\n describe('Regressions', () => {\n describe('TCT-2161', () => {\n it('leaves the element when Tab is pressed', async function (): Promise<void> {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n <button test-id=\"btn-next\">Test</button>\n `,\n });\n tag = await page.find('q2-tag');\n await tag.focus();\n\n expect(await getActiveElementTestId(page)).toEqual('btn-control');\n\n await tag.press('Tab');\n await page.waitForChanges();\n\n expect(await getActiveElementTestId(page)).toEqual('btn-next');\n });\n });\n });\n\n describe('Accessibility', () => {\n it(\"option-list should have a role of 'menu' and the options a role of 'menuoption'\", async () => {\n page = await setup({\n html: `\n <q2-tag label=\"My tag\" open>\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-tag>\n `,\n });\n await page.waitForChanges();\n\n const snapshot = await page.accessibility.snapshot();\n const button = snapshot.children[0];\n const optionList = snapshot.children[1];\n\n expect(button.role).toEqual('combobox');\n expect(optionList.role).toEqual('menu');\n expect(optionList.children).toHaveLength(3);\n optionList.children.forEach(child => {\n expect(child.role).toEqual('menuitem');\n });\n });\n });\n});\n"]}
@@ -1,4 +1,4 @@
1
- import { setup, dispatchEvent } from '../helpers';
1
+ import { setup, dispatchEvent, getActiveElementTestId } from '../helpers';
2
2
  describe('q2-textarea', () => {
3
3
  it('registers in the dom and accepts values', async function () {
4
4
  const page = await setup({ html: '<q2-textarea label="name" />' });
@@ -441,5 +441,37 @@ describe('q2-textarea', () => {
441
441
  expect(contained).toBe('inputField');
442
442
  });
443
443
  });
444
+ describe('Methods', () => {
445
+ describe('setValue', () => {
446
+ it('sets the value of the textarea', async () => {
447
+ const page = await setup({ html: '<q2-textarea label="My textarea" />' });
448
+ const textarea = await page.find('q2-textarea');
449
+ const innerTextarea = await page.find('q2-textarea >>> textarea');
450
+ const textareaChangeSpy = await textarea.spyOnEvent('change');
451
+ const textareaInputSpy = await textarea.spyOnEvent('input');
452
+ expect(textareaChangeSpy).toHaveReceivedEventTimes(0);
453
+ expect(textareaInputSpy).toHaveReceivedEventTimes(0);
454
+ expect(await getActiveElementTestId(page)).toBeNull();
455
+ const newValue = 'The truth is, I am Iron Man.';
456
+ await textarea.callMethod('setValue', newValue);
457
+ await page.waitForChanges();
458
+ expect(textareaChangeSpy).toHaveReceivedEventTimes(0);
459
+ expect(textareaInputSpy).toHaveReceivedEventTimes(1);
460
+ expect(textareaInputSpy).toHaveReceivedEventDetail({
461
+ value: newValue,
462
+ });
463
+ expect(await textarea.getProperty('value')).toEqual(newValue);
464
+ expect(await innerTextarea.getProperty('value')).toEqual(newValue);
465
+ expect(await getActiveElementTestId(page)).toEqual('inputField');
466
+ await innerTextarea.press('Tab');
467
+ await page.waitForChanges();
468
+ expect(textareaChangeSpy).toHaveReceivedEventTimes(1);
469
+ expect(textareaChangeSpy).toHaveReceivedEventDetail({
470
+ value: newValue,
471
+ });
472
+ expect(await getActiveElementTestId(page)).toBeNull();
473
+ });
474
+ });
475
+ });
444
476
  });
445
477
  //# sourceMappingURL=q2-textarea-test.e2e.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"q2-textarea-test.e2e.js","sourceRoot":"","sources":["../../../test/elements/q2-textarea-test.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { E2EPage } from '@stencil/core/testing';\nimport { setup, dispatchEvent } from '../helpers';\n\ndescribe('q2-textarea', () => {\n it('registers in the dom and accepts values', async function (): Promise<void> {\n const page = await setup({ html: '<q2-textarea label=\"name\" />' });\n const label = await page.find('q2-textarea >>> label');\n\n expect(label.innerText.trim()).toEqual('name');\n });\n\n describe('label', () => {\n it('displays the label by default', async () => {\n const page = await setup({ html: '<q2-textarea label=\"name\" />' });\n const label = await page.find('q2-textarea >>> label');\n\n expect(label.innerText.trim()).toEqual('name');\n });\n\n it('hides the label and adds it as aria-label on textarea when hide-label is set', async () => {\n const page = await setup({ html: '<q2-textarea label=\"name\" hide-label />' });\n const textArea = await page.find('q2-textarea >>> textarea');\n\n expect(textArea.getAttribute('aria-label')).toEqual('name');\n });\n });\n\n describe('events', () => {\n it('focuses the inner textarea when focused programmatically', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n const q2Textarea = await page.find('q2-textarea');\n q2Textarea.triggerEvent('focus');\n\n await page.waitForChanges();\n\n const activeElementName = await page.$eval(\n 'q2-textarea',\n (element: HTMLElement) => element.shadowRoot.activeElement.tagName\n );\n\n expect(activeElementName).toEqual(innerTextarea.tagName);\n });\n\n it('emits input event that proxies inner input event', async function () {\n const page = await setup({ html: '<q2-textarea />' });\n const q2Textarea = await page.find('q2-textarea');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n const inputSpy = await q2Textarea.spyOnEvent('input');\n await innerTextarea.press('I');\n await page.waitForChanges();\n\n expect(inputSpy).toHaveReceivedEventDetail({\n value: 'I',\n });\n });\n\n it('emits change event that proxies change(blur) input event', async function () {\n const page = await setup({ html: '<q2-textarea value=\"Ir\" />' });\n const q2Textarea = await page.find('q2-textarea');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n const changeSpy = await q2Textarea.spyOnEvent('change');\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'focus');\n await innerTextarea.press('o');\n await page.waitForChanges();\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'blur');\n\n expect(changeSpy).toHaveReceivedEventTimes(1);\n expect(changeSpy).toHaveReceivedEventDetail({\n value: 'Iro',\n });\n\n await innerTextarea.press('n');\n await page.waitForChanges();\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'change');\n\n expect(changeSpy).toHaveReceivedEventTimes(2);\n expect(changeSpy).toHaveReceivedEventDetail({\n value: 'Iron',\n });\n });\n\n it('emits input event after content is pasted into field', async function () {\n const page = await setup({ html: '<q2-textarea />' });\n const q2Textarea = await page.find('q2-textarea');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n const inputSpy = await q2Textarea.spyOnEvent('input');\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'paste', {\n pastedValue: 'Iron Man',\n });\n\n expect(await innerTextarea.getProperty('value')).toEqual('Iron Man');\n await page.waitForChanges();\n\n expect(inputSpy).toHaveReceivedEventTimes(1);\n expect(inputSpy).toHaveReceivedEventDetail({\n value: 'Iron Man',\n });\n });\n });\n\n describe('errors', () => {\n describe('when errors are provided', () => {\n let errors;\n beforeEach(() => {\n errors = ['Busted'];\n });\n\n it('shows errors when focused', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n const q2Textarea = await page.find('q2-textarea');\n q2Textarea.setProperty('errors', errors);\n\n await page.waitForChanges();\n\n const { messageCount, messagesText, messagesHeight, hasErrorClass, hasErrorIcon, hasAriaInvalid } =\n await page.$eval('q2-textarea', element => {\n const messageContainer = element.shadowRoot.querySelector<HTMLElement>('.messages-container');\n return {\n messagesHeight: messageContainer.clientHeight,\n messageCount: messageContainer.querySelectorAll('li').length,\n messagesText: messageContainer.innerText.trim(),\n hasErrorClass: !!element.shadowRoot.querySelector('.has-error'),\n hasErrorIcon: !!element.shadowRoot.querySelector('q2-icon.icon-error'),\n hasAriaInvalid: !!element.shadowRoot.querySelector('textarea[aria-invalid=true]'),\n };\n });\n\n expect(messagesHeight).toEqual(0);\n expect(messageCount).toEqual(1);\n expect(messagesText).toEqual(errors[0]);\n expect(hasErrorClass).toBe(true);\n expect(hasErrorIcon).toBe(true);\n expect(hasAriaInvalid).toBe(true);\n\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'focus');\n\n const { expandedMessagesHeight } = await page.$eval('q2-textarea', element => ({\n expandedMessagesHeight: element.shadowRoot.querySelector('.messages-container').clientHeight,\n }));\n\n expect(expandedMessagesHeight).toBeGreaterThan(0);\n });\n\n it('does not show error messages when hide-messages is true', async () => {\n const page = await setup({ html: '<q2-textarea hide-messages />' });\n const q2Textarea = await page.find('q2-textarea');\n q2Textarea.setProperty('errors', errors);\n\n await page.waitForChanges();\n\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'focus');\n\n const { messageCount, messagesText, messagesHeight, hasErrorClass, hasErrorIcon, hasAriaInvalid } =\n await page.$eval('q2-textarea', element => {\n const messageContainer = element.shadowRoot.querySelector<HTMLElement>('.messages-container');\n return {\n messageCount: messageContainer.querySelectorAll('li').length,\n messagesText: messageContainer.innerText.trim(),\n messagesHeight: messageContainer.clientHeight,\n hasErrorClass: !!element.shadowRoot.querySelector('.has-error'),\n hasErrorIcon: !!element.shadowRoot.querySelector('q2-icon.icon-error'),\n hasAriaInvalid: !!element.shadowRoot.querySelector('textarea[aria-invalid=true]'),\n };\n });\n\n expect(messagesHeight).toEqual(0);\n expect(messageCount).toEqual(1);\n expect(messagesText).toEqualHtml('');\n expect(hasErrorClass).toBe(true);\n expect(hasErrorIcon).toBe(true);\n expect(hasAriaInvalid).toBe(true);\n });\n\n describe('when hints are provided', () => {\n it('renders errors', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n const q2Textarea = await page.find('q2-textarea');\n q2Textarea.setProperty('errors', errors);\n q2Textarea.setProperty('hints', ['Here is a hint']);\n\n await page.waitForChanges();\n\n const { messagesText } = await page.$eval('q2-textarea', element => {\n const messageContainer = element.shadowRoot.querySelector<HTMLElement>('.messages-container');\n return {\n messagesText: messageContainer.innerText.trim(),\n };\n });\n\n expect(messagesText).toEqual(errors[0]);\n });\n });\n });\n\n describe('when errors are not provided', () => {\n it('does not render any indicators of error', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n await page.waitForChanges();\n\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'focus');\n\n const { messageCount, messagesHeight, hasErrorClass, hasErrorIcon, hasAriaInvalid } = await page.$eval(\n 'q2-textarea',\n element => {\n const messageContainer = element.shadowRoot.querySelector<HTMLElement>('.messages-container');\n return {\n messageCount: messageContainer.querySelectorAll('li').length,\n messagesHeight: messageContainer.clientHeight,\n hasErrorClass: !!element.shadowRoot.querySelector('.has-error'),\n hasErrorIcon: !!element.shadowRoot.querySelector('q2-icon.icon-error'),\n hasAriaInvalid: !!element.shadowRoot.querySelector('textarea[aria-invalid=true]'),\n };\n }\n );\n\n expect(messagesHeight).toEqual(0);\n expect(messageCount).toEqual(0);\n expect(hasErrorClass).toBe(false);\n expect(hasErrorIcon).toBe(false);\n expect(hasAriaInvalid).toBe(false);\n });\n });\n });\n\n describe('hints', () => {\n describe('when hints are provided', () => {\n let hints;\n beforeEach(() => {\n hints = ['Busted'];\n });\n\n it('shows hints when focused', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n const q2Textarea = await page.find('q2-textarea');\n q2Textarea.setProperty('hints', hints);\n\n await page.waitForChanges();\n\n const { messageCount, messagesText, messagesHeight } = await page.$eval('q2-textarea', element => {\n const messageContainer = element.shadowRoot.querySelector<HTMLElement>('.messages-container');\n return {\n messageCount: messageContainer.querySelectorAll('li').length,\n messagesText: messageContainer.innerText.trim(),\n messagesHeight: messageContainer.clientHeight,\n };\n });\n\n expect(messagesHeight).toEqual(0);\n expect(messageCount).toEqual(1);\n expect(messagesText).toEqual(hints[0]);\n\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'focus');\n\n const { expandedMessagesHeight } = await page.$eval('q2-textarea', element => ({\n expandedMessagesHeight: element.shadowRoot.querySelector('.messages-container').clientHeight,\n }));\n\n expect(expandedMessagesHeight).toBeGreaterThan(0);\n });\n\n it('does not show hints messages when hide-messages is true', async () => {\n const page = await setup({ html: '<q2-textarea hide-messages />' });\n const q2Textarea = await page.find('q2-textarea');\n q2Textarea.setProperty('hints', hints);\n\n await page.waitForChanges();\n\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'focus');\n\n const { messageCount, messagesText, messagesHeight } = await page.$eval('q2-textarea', element => {\n const messageContainer = element.shadowRoot.querySelector<HTMLElement>('.messages-container');\n return {\n messageCount: messageContainer.querySelectorAll('li').length,\n messagesText: messageContainer.innerText.trim(),\n messagesHeight: messageContainer.clientHeight,\n };\n });\n\n expect(messagesHeight).toEqual(0);\n expect(messageCount).toEqual(1);\n expect(messagesText).toEqualHtml('');\n });\n });\n\n describe('when hints are not provided', () => {\n it('does not render any indicators of hints', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n await page.waitForChanges();\n\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'focus');\n\n const { messageCount, messagesHeight } = await page.$eval('q2-textarea', element => {\n const messageContainer = element.shadowRoot.querySelector<HTMLElement>('.messages-container');\n return {\n messageCount: messageContainer.querySelectorAll('li').length,\n messagesHeight: messageContainer.clientHeight,\n };\n });\n\n expect(messagesHeight).toEqual(0);\n expect(messageCount).toEqual(0);\n });\n });\n });\n\n describe('optional', () => {\n it('marks field as required by default', async () => {\n const page = await setup({ html: '<q2-textarea label=\"Name\" />' });\n const optionalTag = await page.find('q2-textarea >>> .optional-tag');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(optionalTag).toBeNull();\n expect(innerTextarea).toEqualAttribute('aria-required', 'true');\n });\n\n it('marks field as optional when property is provided', async () => {\n const page = await setup({ html: '<q2-textarea label=\"Name\" optional />' });\n const optionalTag = await page.find('q2-textarea >>> .optional-tag');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(optionalTag).toBeTruthy();\n expect(optionalTag.innerText.trim()).toEqual('tecton.element.input.optional');\n expect(innerTextarea).toEqualAttribute('aria-required', 'false');\n });\n });\n\n describe('placeholder', () => {\n it('is not rendered by default', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).not.toHaveAttribute('placeholder');\n });\n\n it('is rendered when provided', async () => {\n const page = await setup({ html: '<q2-textarea placeholder=\"Name\" />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).toEqualAttribute('placeholder', 'Name');\n });\n });\n\n describe('disabled', () => {\n it('is not rendered by default', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).not.toHaveAttribute('disabled');\n });\n\n it('is rendered when provided', async () => {\n const page = await setup({ html: '<q2-textarea disabled />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).toHaveAttribute('disabled');\n });\n });\n\n describe('readonly', () => {\n it('is not rendered by default', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).not.toHaveAttribute('readonly');\n });\n\n it('is rendered when provided', async () => {\n const page = await setup({ html: '<q2-textarea readonly />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).toHaveAttribute('readonly');\n });\n });\n\n describe('spellcheck', () => {\n it('is not rendered by default', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).not.toHaveAttribute('spellcheck');\n });\n\n it('is rendered when provided', async () => {\n const page = await setup({ html: '<q2-textarea spellcheck />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).toHaveAttribute('spellcheck');\n });\n });\n\n describe('maxlength', () => {\n it('is not rendered by default', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n\n await page.waitForChanges();\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n const maxLengthContainer = await page.find('q2-textarea >>> .max-length');\n\n expect(innerTextarea).not.toHaveAttribute('maxlength');\n expect(maxLengthContainer).toBeNull();\n });\n\n describe('when provided', () => {\n it('renders max length elements and attributes', async () => {\n const page = await setup({ html: '<q2-textarea maxlength=\"5\" />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n const maxLengthContainer = await page.find('q2-textarea >>> .max-length');\n\n expect(innerTextarea).toEqualAttribute('maxlength', '5');\n expect(maxLengthContainer).toEqualText('0/5');\n });\n\n it('updates max length when value changes', async () => {\n const page = await setup({ html: '<q2-textarea maxlength=\"5\" />' });\n const q2Textarea = await page.find('q2-textarea');\n const maxLengthContainer = await page.find('q2-textarea >>> .max-length');\n\n expect(maxLengthContainer).toEqualText('0/5');\n\n q2Textarea.setProperty('value', 'A');\n await page.waitForChanges();\n\n expect(maxLengthContainer).toEqualText('1/5');\n });\n\n it('limits length of values provided', async () => {\n const page = await setup({ html: '<q2-textarea maxlength=\"5\" />' });\n const q2Textarea = await page.find('q2-textarea');\n const maxLengthContainer = await page.find('q2-textarea >>> .max-length');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(maxLengthContainer).toEqualText('0/5');\n\n q2Textarea.setProperty('value', 'ABCDEFG');\n await page.waitForChanges();\n\n expect(await innerTextarea.getProperty('value')).toEqual('ABCDE');\n expect(maxLengthContainer).toEqualText('5/5');\n });\n });\n });\n\n describe('rows', () => {\n it('sets attribute to 3 by default', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).toEqualAttribute('rows', '3');\n });\n\n it('sets attribute to specified value', async () => {\n const page = await setup({ html: '<q2-textarea rows=\"5\" resize=\"none\" />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).toEqualAttribute('rows', '5');\n });\n\n it('removes attribute from textarea after render when vertical resizing enabled', async () => {\n const page = await setup({ html: '<q2-textarea rows=\"5\" resize=\"vertical\" />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).not.toHaveAttribute('rows');\n });\n });\n\n describe('cols', () => {\n it('does not render by default', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).not.toHaveAttribute('cols');\n });\n\n it('sets attribute to specified value', async () => {\n const page = await setup({ html: '<q2-textarea cols=\"50\" resize=\"none\" />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).toEqualAttribute('cols', '50');\n });\n\n it('removes attribute from textarea after render when horizontal resizing enabled', async () => {\n const page = await setup({ html: '<q2-textarea cols=\"50\" resize=\"horizontal\" />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).not.toHaveAttribute('cols');\n });\n });\n\n describe('resize', () => {\n const resizeTextarea = async (page: E2EPage, [moveX, moveY]: [number, number] = [-10, -10]) => {\n const q2Textarea = await page.find('q2-textarea');\n const resizeBtn = await page.find('q2-textarea >>> .btn-resize');\n const contentContainer = await page.find('q2-textarea >>> .content-container');\n\n const oldWidth = await contentContainer.getProperty('offsetWidth');\n const oldHeight = await contentContainer.getProperty('offsetHeight');\n\n const x =\n (await q2Textarea.getProperty('offsetLeft')) +\n (await resizeBtn.getProperty('offsetLeft')) +\n (await resizeBtn.getProperty('offsetWidth')) / 2;\n const y =\n (await q2Textarea.getProperty('offsetTop')) +\n (await resizeBtn.getProperty('offsetTop')) +\n (await resizeBtn.getProperty('offsetHeight')) / 2;\n\n await page.mouse.move(x, y);\n await page.mouse.down();\n await page.mouse.move(x + moveX, y + moveY);\n await page.mouse.up();\n\n const newWidth = await contentContainer.getProperty('offsetWidth');\n const newHeight = await contentContainer.getProperty('offsetHeight');\n\n return { oldWidth, oldHeight, newWidth, newHeight };\n };\n\n it('allows for vertical resizing by default', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n const { oldWidth, oldHeight, newWidth, newHeight } = await resizeTextarea(page);\n\n expect(newWidth).toEqual(oldWidth);\n expect(newHeight).toEqual(oldHeight - 10);\n });\n\n it('allows for horizontal resizing when specified', async () => {\n const page = await setup({ html: '<q2-textarea resize=\"horizontal\" />' });\n const { oldWidth, oldHeight, newWidth, newHeight } = await resizeTextarea(page);\n\n expect(newWidth).toEqual(oldWidth - 10);\n expect(newHeight).toEqual(oldHeight);\n });\n\n it('allows for horizontal and vertical resizing when specified', async () => {\n const page = await setup({ html: '<q2-textarea resize=\"both\" />' });\n const { oldWidth, oldHeight, newWidth, newHeight } = await resizeTextarea(page);\n\n expect(newWidth).toEqual(oldWidth - 10);\n expect(newHeight).toEqual(oldHeight - 10);\n });\n\n it('disables resizing when specified', async () => {\n const page = await setup({ html: '<q2-textarea resize=\"none\" />' });\n const resizeBtn = await page.find('q2-textarea >>> .btn-resize');\n\n expect(resizeBtn).toBeNull();\n });\n });\n\n describe('focus transferring', () => {\n const html = '<q2-textarea value=\"Ir\" />';\n\n it('focuses when focus event dispatched ', async function (): Promise<void> {\n const page = await setup({ html });\n await dispatchEvent(page, ['q2-textarea'], 'focus');\n const selected = await page.$eval('q2-textarea', el => {\n return el.shadowRoot.activeElement.getAttribute('test-id');\n });\n expect(selected).toBe('inputField');\n });\n it('focuses when focus event method called ', async function (): Promise<void> {\n const page = await setup({ html });\n const section = await page.find('q2-textarea');\n await section.triggerEvent('focus');\n await page.waitForChanges();\n const contained = await page.$eval('q2-textarea', el => {\n return el.shadowRoot.activeElement.getAttribute('test-id');\n });\n expect(contained).toBe('inputField');\n });\n });\n});\n"]}
1
+ {"version":3,"file":"q2-textarea-test.e2e.js","sourceRoot":"","sources":["../../../test/elements/q2-textarea-test.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { E2EPage } from '@stencil/core/testing';\nimport { setup, dispatchEvent, getActiveElementTestId } from '../helpers';\n\ndescribe('q2-textarea', () => {\n it('registers in the dom and accepts values', async function (): Promise<void> {\n const page = await setup({ html: '<q2-textarea label=\"name\" />' });\n const label = await page.find('q2-textarea >>> label');\n\n expect(label.innerText.trim()).toEqual('name');\n });\n\n describe('label', () => {\n it('displays the label by default', async () => {\n const page = await setup({ html: '<q2-textarea label=\"name\" />' });\n const label = await page.find('q2-textarea >>> label');\n\n expect(label.innerText.trim()).toEqual('name');\n });\n\n it('hides the label and adds it as aria-label on textarea when hide-label is set', async () => {\n const page = await setup({ html: '<q2-textarea label=\"name\" hide-label />' });\n const textArea = await page.find('q2-textarea >>> textarea');\n\n expect(textArea.getAttribute('aria-label')).toEqual('name');\n });\n });\n\n describe('events', () => {\n it('focuses the inner textarea when focused programmatically', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n const q2Textarea = await page.find('q2-textarea');\n q2Textarea.triggerEvent('focus');\n\n await page.waitForChanges();\n\n const activeElementName = await page.$eval(\n 'q2-textarea',\n (element: HTMLElement) => element.shadowRoot.activeElement.tagName\n );\n\n expect(activeElementName).toEqual(innerTextarea.tagName);\n });\n\n it('emits input event that proxies inner input event', async function () {\n const page = await setup({ html: '<q2-textarea />' });\n const q2Textarea = await page.find('q2-textarea');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n const inputSpy = await q2Textarea.spyOnEvent('input');\n await innerTextarea.press('I');\n await page.waitForChanges();\n\n expect(inputSpy).toHaveReceivedEventDetail({\n value: 'I',\n });\n });\n\n it('emits change event that proxies change(blur) input event', async function () {\n const page = await setup({ html: '<q2-textarea value=\"Ir\" />' });\n const q2Textarea = await page.find('q2-textarea');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n const changeSpy = await q2Textarea.spyOnEvent('change');\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'focus');\n await innerTextarea.press('o');\n await page.waitForChanges();\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'blur');\n\n expect(changeSpy).toHaveReceivedEventTimes(1);\n expect(changeSpy).toHaveReceivedEventDetail({\n value: 'Iro',\n });\n\n await innerTextarea.press('n');\n await page.waitForChanges();\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'change');\n\n expect(changeSpy).toHaveReceivedEventTimes(2);\n expect(changeSpy).toHaveReceivedEventDetail({\n value: 'Iron',\n });\n });\n\n it('emits input event after content is pasted into field', async function () {\n const page = await setup({ html: '<q2-textarea />' });\n const q2Textarea = await page.find('q2-textarea');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n const inputSpy = await q2Textarea.spyOnEvent('input');\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'paste', {\n pastedValue: 'Iron Man',\n });\n\n expect(await innerTextarea.getProperty('value')).toEqual('Iron Man');\n await page.waitForChanges();\n\n expect(inputSpy).toHaveReceivedEventTimes(1);\n expect(inputSpy).toHaveReceivedEventDetail({\n value: 'Iron Man',\n });\n });\n });\n\n describe('errors', () => {\n describe('when errors are provided', () => {\n let errors;\n beforeEach(() => {\n errors = ['Busted'];\n });\n\n it('shows errors when focused', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n const q2Textarea = await page.find('q2-textarea');\n q2Textarea.setProperty('errors', errors);\n\n await page.waitForChanges();\n\n const { messageCount, messagesText, messagesHeight, hasErrorClass, hasErrorIcon, hasAriaInvalid } =\n await page.$eval('q2-textarea', element => {\n const messageContainer = element.shadowRoot.querySelector<HTMLElement>('.messages-container');\n return {\n messagesHeight: messageContainer.clientHeight,\n messageCount: messageContainer.querySelectorAll('li').length,\n messagesText: messageContainer.innerText.trim(),\n hasErrorClass: !!element.shadowRoot.querySelector('.has-error'),\n hasErrorIcon: !!element.shadowRoot.querySelector('q2-icon.icon-error'),\n hasAriaInvalid: !!element.shadowRoot.querySelector('textarea[aria-invalid=true]'),\n };\n });\n\n expect(messagesHeight).toEqual(0);\n expect(messageCount).toEqual(1);\n expect(messagesText).toEqual(errors[0]);\n expect(hasErrorClass).toBe(true);\n expect(hasErrorIcon).toBe(true);\n expect(hasAriaInvalid).toBe(true);\n\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'focus');\n\n const { expandedMessagesHeight } = await page.$eval('q2-textarea', element => ({\n expandedMessagesHeight: element.shadowRoot.querySelector('.messages-container').clientHeight,\n }));\n\n expect(expandedMessagesHeight).toBeGreaterThan(0);\n });\n\n it('does not show error messages when hide-messages is true', async () => {\n const page = await setup({ html: '<q2-textarea hide-messages />' });\n const q2Textarea = await page.find('q2-textarea');\n q2Textarea.setProperty('errors', errors);\n\n await page.waitForChanges();\n\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'focus');\n\n const { messageCount, messagesText, messagesHeight, hasErrorClass, hasErrorIcon, hasAriaInvalid } =\n await page.$eval('q2-textarea', element => {\n const messageContainer = element.shadowRoot.querySelector<HTMLElement>('.messages-container');\n return {\n messageCount: messageContainer.querySelectorAll('li').length,\n messagesText: messageContainer.innerText.trim(),\n messagesHeight: messageContainer.clientHeight,\n hasErrorClass: !!element.shadowRoot.querySelector('.has-error'),\n hasErrorIcon: !!element.shadowRoot.querySelector('q2-icon.icon-error'),\n hasAriaInvalid: !!element.shadowRoot.querySelector('textarea[aria-invalid=true]'),\n };\n });\n\n expect(messagesHeight).toEqual(0);\n expect(messageCount).toEqual(1);\n expect(messagesText).toEqualHtml('');\n expect(hasErrorClass).toBe(true);\n expect(hasErrorIcon).toBe(true);\n expect(hasAriaInvalid).toBe(true);\n });\n\n describe('when hints are provided', () => {\n it('renders errors', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n const q2Textarea = await page.find('q2-textarea');\n q2Textarea.setProperty('errors', errors);\n q2Textarea.setProperty('hints', ['Here is a hint']);\n\n await page.waitForChanges();\n\n const { messagesText } = await page.$eval('q2-textarea', element => {\n const messageContainer = element.shadowRoot.querySelector<HTMLElement>('.messages-container');\n return {\n messagesText: messageContainer.innerText.trim(),\n };\n });\n\n expect(messagesText).toEqual(errors[0]);\n });\n });\n });\n\n describe('when errors are not provided', () => {\n it('does not render any indicators of error', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n await page.waitForChanges();\n\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'focus');\n\n const { messageCount, messagesHeight, hasErrorClass, hasErrorIcon, hasAriaInvalid } = await page.$eval(\n 'q2-textarea',\n element => {\n const messageContainer = element.shadowRoot.querySelector<HTMLElement>('.messages-container');\n return {\n messageCount: messageContainer.querySelectorAll('li').length,\n messagesHeight: messageContainer.clientHeight,\n hasErrorClass: !!element.shadowRoot.querySelector('.has-error'),\n hasErrorIcon: !!element.shadowRoot.querySelector('q2-icon.icon-error'),\n hasAriaInvalid: !!element.shadowRoot.querySelector('textarea[aria-invalid=true]'),\n };\n }\n );\n\n expect(messagesHeight).toEqual(0);\n expect(messageCount).toEqual(0);\n expect(hasErrorClass).toBe(false);\n expect(hasErrorIcon).toBe(false);\n expect(hasAriaInvalid).toBe(false);\n });\n });\n });\n\n describe('hints', () => {\n describe('when hints are provided', () => {\n let hints;\n beforeEach(() => {\n hints = ['Busted'];\n });\n\n it('shows hints when focused', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n const q2Textarea = await page.find('q2-textarea');\n q2Textarea.setProperty('hints', hints);\n\n await page.waitForChanges();\n\n const { messageCount, messagesText, messagesHeight } = await page.$eval('q2-textarea', element => {\n const messageContainer = element.shadowRoot.querySelector<HTMLElement>('.messages-container');\n return {\n messageCount: messageContainer.querySelectorAll('li').length,\n messagesText: messageContainer.innerText.trim(),\n messagesHeight: messageContainer.clientHeight,\n };\n });\n\n expect(messagesHeight).toEqual(0);\n expect(messageCount).toEqual(1);\n expect(messagesText).toEqual(hints[0]);\n\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'focus');\n\n const { expandedMessagesHeight } = await page.$eval('q2-textarea', element => ({\n expandedMessagesHeight: element.shadowRoot.querySelector('.messages-container').clientHeight,\n }));\n\n expect(expandedMessagesHeight).toBeGreaterThan(0);\n });\n\n it('does not show hints messages when hide-messages is true', async () => {\n const page = await setup({ html: '<q2-textarea hide-messages />' });\n const q2Textarea = await page.find('q2-textarea');\n q2Textarea.setProperty('hints', hints);\n\n await page.waitForChanges();\n\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'focus');\n\n const { messageCount, messagesText, messagesHeight } = await page.$eval('q2-textarea', element => {\n const messageContainer = element.shadowRoot.querySelector<HTMLElement>('.messages-container');\n return {\n messageCount: messageContainer.querySelectorAll('li').length,\n messagesText: messageContainer.innerText.trim(),\n messagesHeight: messageContainer.clientHeight,\n };\n });\n\n expect(messagesHeight).toEqual(0);\n expect(messageCount).toEqual(1);\n expect(messagesText).toEqualHtml('');\n });\n });\n\n describe('when hints are not provided', () => {\n it('does not render any indicators of hints', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n await page.waitForChanges();\n\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'focus');\n\n const { messageCount, messagesHeight } = await page.$eval('q2-textarea', element => {\n const messageContainer = element.shadowRoot.querySelector<HTMLElement>('.messages-container');\n return {\n messageCount: messageContainer.querySelectorAll('li').length,\n messagesHeight: messageContainer.clientHeight,\n };\n });\n\n expect(messagesHeight).toEqual(0);\n expect(messageCount).toEqual(0);\n });\n });\n });\n\n describe('optional', () => {\n it('marks field as required by default', async () => {\n const page = await setup({ html: '<q2-textarea label=\"Name\" />' });\n const optionalTag = await page.find('q2-textarea >>> .optional-tag');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(optionalTag).toBeNull();\n expect(innerTextarea).toEqualAttribute('aria-required', 'true');\n });\n\n it('marks field as optional when property is provided', async () => {\n const page = await setup({ html: '<q2-textarea label=\"Name\" optional />' });\n const optionalTag = await page.find('q2-textarea >>> .optional-tag');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(optionalTag).toBeTruthy();\n expect(optionalTag.innerText.trim()).toEqual('tecton.element.input.optional');\n expect(innerTextarea).toEqualAttribute('aria-required', 'false');\n });\n });\n\n describe('placeholder', () => {\n it('is not rendered by default', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).not.toHaveAttribute('placeholder');\n });\n\n it('is rendered when provided', async () => {\n const page = await setup({ html: '<q2-textarea placeholder=\"Name\" />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).toEqualAttribute('placeholder', 'Name');\n });\n });\n\n describe('disabled', () => {\n it('is not rendered by default', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).not.toHaveAttribute('disabled');\n });\n\n it('is rendered when provided', async () => {\n const page = await setup({ html: '<q2-textarea disabled />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).toHaveAttribute('disabled');\n });\n });\n\n describe('readonly', () => {\n it('is not rendered by default', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).not.toHaveAttribute('readonly');\n });\n\n it('is rendered when provided', async () => {\n const page = await setup({ html: '<q2-textarea readonly />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).toHaveAttribute('readonly');\n });\n });\n\n describe('spellcheck', () => {\n it('is not rendered by default', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).not.toHaveAttribute('spellcheck');\n });\n\n it('is rendered when provided', async () => {\n const page = await setup({ html: '<q2-textarea spellcheck />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).toHaveAttribute('spellcheck');\n });\n });\n\n describe('maxlength', () => {\n it('is not rendered by default', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n\n await page.waitForChanges();\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n const maxLengthContainer = await page.find('q2-textarea >>> .max-length');\n\n expect(innerTextarea).not.toHaveAttribute('maxlength');\n expect(maxLengthContainer).toBeNull();\n });\n\n describe('when provided', () => {\n it('renders max length elements and attributes', async () => {\n const page = await setup({ html: '<q2-textarea maxlength=\"5\" />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n const maxLengthContainer = await page.find('q2-textarea >>> .max-length');\n\n expect(innerTextarea).toEqualAttribute('maxlength', '5');\n expect(maxLengthContainer).toEqualText('0/5');\n });\n\n it('updates max length when value changes', async () => {\n const page = await setup({ html: '<q2-textarea maxlength=\"5\" />' });\n const q2Textarea = await page.find('q2-textarea');\n const maxLengthContainer = await page.find('q2-textarea >>> .max-length');\n\n expect(maxLengthContainer).toEqualText('0/5');\n\n q2Textarea.setProperty('value', 'A');\n await page.waitForChanges();\n\n expect(maxLengthContainer).toEqualText('1/5');\n });\n\n it('limits length of values provided', async () => {\n const page = await setup({ html: '<q2-textarea maxlength=\"5\" />' });\n const q2Textarea = await page.find('q2-textarea');\n const maxLengthContainer = await page.find('q2-textarea >>> .max-length');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(maxLengthContainer).toEqualText('0/5');\n\n q2Textarea.setProperty('value', 'ABCDEFG');\n await page.waitForChanges();\n\n expect(await innerTextarea.getProperty('value')).toEqual('ABCDE');\n expect(maxLengthContainer).toEqualText('5/5');\n });\n });\n });\n\n describe('rows', () => {\n it('sets attribute to 3 by default', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).toEqualAttribute('rows', '3');\n });\n\n it('sets attribute to specified value', async () => {\n const page = await setup({ html: '<q2-textarea rows=\"5\" resize=\"none\" />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).toEqualAttribute('rows', '5');\n });\n\n it('removes attribute from textarea after render when vertical resizing enabled', async () => {\n const page = await setup({ html: '<q2-textarea rows=\"5\" resize=\"vertical\" />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).not.toHaveAttribute('rows');\n });\n });\n\n describe('cols', () => {\n it('does not render by default', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).not.toHaveAttribute('cols');\n });\n\n it('sets attribute to specified value', async () => {\n const page = await setup({ html: '<q2-textarea cols=\"50\" resize=\"none\" />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).toEqualAttribute('cols', '50');\n });\n\n it('removes attribute from textarea after render when horizontal resizing enabled', async () => {\n const page = await setup({ html: '<q2-textarea cols=\"50\" resize=\"horizontal\" />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).not.toHaveAttribute('cols');\n });\n });\n\n describe('resize', () => {\n const resizeTextarea = async (page: E2EPage, [moveX, moveY]: [number, number] = [-10, -10]) => {\n const q2Textarea = await page.find('q2-textarea');\n const resizeBtn = await page.find('q2-textarea >>> .btn-resize');\n const contentContainer = await page.find('q2-textarea >>> .content-container');\n\n const oldWidth = await contentContainer.getProperty('offsetWidth');\n const oldHeight = await contentContainer.getProperty('offsetHeight');\n\n const x =\n (await q2Textarea.getProperty('offsetLeft')) +\n (await resizeBtn.getProperty('offsetLeft')) +\n (await resizeBtn.getProperty('offsetWidth')) / 2;\n const y =\n (await q2Textarea.getProperty('offsetTop')) +\n (await resizeBtn.getProperty('offsetTop')) +\n (await resizeBtn.getProperty('offsetHeight')) / 2;\n\n await page.mouse.move(x, y);\n await page.mouse.down();\n await page.mouse.move(x + moveX, y + moveY);\n await page.mouse.up();\n\n const newWidth = await contentContainer.getProperty('offsetWidth');\n const newHeight = await contentContainer.getProperty('offsetHeight');\n\n return { oldWidth, oldHeight, newWidth, newHeight };\n };\n\n it('allows for vertical resizing by default', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n const { oldWidth, oldHeight, newWidth, newHeight } = await resizeTextarea(page);\n\n expect(newWidth).toEqual(oldWidth);\n expect(newHeight).toEqual(oldHeight - 10);\n });\n\n it('allows for horizontal resizing when specified', async () => {\n const page = await setup({ html: '<q2-textarea resize=\"horizontal\" />' });\n const { oldWidth, oldHeight, newWidth, newHeight } = await resizeTextarea(page);\n\n expect(newWidth).toEqual(oldWidth - 10);\n expect(newHeight).toEqual(oldHeight);\n });\n\n it('allows for horizontal and vertical resizing when specified', async () => {\n const page = await setup({ html: '<q2-textarea resize=\"both\" />' });\n const { oldWidth, oldHeight, newWidth, newHeight } = await resizeTextarea(page);\n\n expect(newWidth).toEqual(oldWidth - 10);\n expect(newHeight).toEqual(oldHeight - 10);\n });\n\n it('disables resizing when specified', async () => {\n const page = await setup({ html: '<q2-textarea resize=\"none\" />' });\n const resizeBtn = await page.find('q2-textarea >>> .btn-resize');\n\n expect(resizeBtn).toBeNull();\n });\n });\n\n describe('focus transferring', () => {\n const html = '<q2-textarea value=\"Ir\" />';\n\n it('focuses when focus event dispatched ', async function (): Promise<void> {\n const page = await setup({ html });\n await dispatchEvent(page, ['q2-textarea'], 'focus');\n const selected = await page.$eval('q2-textarea', el => {\n return el.shadowRoot.activeElement.getAttribute('test-id');\n });\n expect(selected).toBe('inputField');\n });\n it('focuses when focus event method called ', async function (): Promise<void> {\n const page = await setup({ html });\n const section = await page.find('q2-textarea');\n await section.triggerEvent('focus');\n await page.waitForChanges();\n const contained = await page.$eval('q2-textarea', el => {\n return el.shadowRoot.activeElement.getAttribute('test-id');\n });\n expect(contained).toBe('inputField');\n });\n });\n\n describe('Methods', () => {\n describe('setValue', () => {\n it('sets the value of the textarea', async () => {\n const page = await setup({ html: '<q2-textarea label=\"My textarea\" />' });\n const textarea = await page.find('q2-textarea');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n const textareaChangeSpy = await textarea.spyOnEvent('change');\n const textareaInputSpy = await textarea.spyOnEvent('input');\n\n expect(textareaChangeSpy).toHaveReceivedEventTimes(0);\n expect(textareaInputSpy).toHaveReceivedEventTimes(0);\n expect(await getActiveElementTestId(page)).toBeNull();\n const newValue = 'The truth is, I am Iron Man.';\n\n await textarea.callMethod('setValue', newValue);\n await page.waitForChanges();\n\n expect(textareaChangeSpy).toHaveReceivedEventTimes(0);\n expect(textareaInputSpy).toHaveReceivedEventTimes(1);\n expect(textareaInputSpy).toHaveReceivedEventDetail({\n value: newValue,\n });\n expect(await textarea.getProperty('value')).toEqual(newValue);\n expect(await innerTextarea.getProperty('value')).toEqual(newValue);\n expect(await getActiveElementTestId(page)).toEqual('inputField');\n\n await innerTextarea.press('Tab');\n await page.waitForChanges();\n\n expect(textareaChangeSpy).toHaveReceivedEventTimes(1);\n expect(textareaChangeSpy).toHaveReceivedEventDetail({\n value: newValue,\n });\n expect(await getActiveElementTestId(page)).toBeNull();\n });\n });\n });\n});\n"]}
@@ -51,6 +51,8 @@ export declare class Q2Calendar implements ComponentInterface {
51
51
  formatModifier: string;
52
52
  hintMessageElement: HTMLQ2MessageElement;
53
53
  controlElement: HTMLQ2InputElement;
54
+ btnCalendarToggle: HTMLQ2BtnElement;
55
+ calendarTable: HTMLTableElement;
54
56
  btnPrevMonth: HTMLQ2BtnElement;
55
57
  btnNextMonth: HTMLQ2BtnElement;
56
58
  btnPrevYear: HTMLQ2BtnElement;
@@ -69,7 +71,7 @@ export declare class Q2Calendar implements ComponentInterface {
69
71
  dayStrings: string[];
70
72
  monthStrings: string[];
71
73
  get selectedDate(): Date;
72
- get innerInputField(): HTMLElement;
74
+ get innerInputField(): HTMLInputElement | HTMLButtonElement;
73
75
  get defaultHintMessage(): string;
74
76
  get canClear(): boolean;
75
77
  get currentWeeks(): CalendarDay[][];
@@ -88,6 +90,11 @@ export declare class Q2Calendar implements ComponentInterface {
88
90
  popoverStateHandler({ detail: { open } }: CustomEvent<{
89
91
  open: boolean;
90
92
  }>): void;
93
+ _togglePopover(): void;
94
+ openPopover(): void;
95
+ closePopover(): void;
96
+ setValue(value: string | Date): Promise<void>;
97
+ typeValue(value: string | Date): Promise<void>;
91
98
  popDirectionHandler(): void;
92
99
  ariaLabelObserver(): void;
93
100
  typeableChanged(): void;
@@ -67,7 +67,7 @@ export declare class Q2ChartDonut implements ComponentInterface {
67
67
  selectByIndex(index: number): Promise<void>;
68
68
  clearSelection(): Promise<void>;
69
69
  onClickElsewhere: (event: Event) => void;
70
- onButtonKeyUp: (event: KeyboardEvent) => void;
70
+ onButtonKeyDown: (event: KeyboardEvent) => void;
71
71
  onButtonClick: (event: MouseEvent) => void;
72
72
  onContainerClick: (event: Event) => void;
73
73
  renderCenterBlock(): any;
@@ -13,10 +13,13 @@ export declare class Q2CheckboxGroup implements ComponentInterface {
13
13
  get protectedValue(): object;
14
14
  onMutationObserved: () => void;
15
15
  onInnerCheckboxChange: (event: CustomEvent) => void;
16
+ componentWillLoad(): void;
16
17
  componentDidLoad(): void;
17
18
  disconnectedCallback(): void;
18
19
  valueUpdated(): void;
19
20
  updateDisabled(): void;
21
+ updateReadonly(newReadonly: boolean): void;
22
+ setValue(values: string | string[]): void;
20
23
  change: EventEmitter;
21
24
  onHostElementChange(event: CustomEvent): void;
22
25
  render(): any;
@@ -19,8 +19,10 @@ export declare class Q2EditableField {
19
19
  ariaLabel: string;
20
20
  scheduledAfterRender: (() => void)[];
21
21
  hostElement: HTMLElement;
22
- q2InputElement: HTMLQ2InputElement;
23
- q2EditBtnElement: HTMLQ2BtnElement;
22
+ inputElement: HTMLQ2InputElement;
23
+ editBtnElement: HTMLQ2BtnElement;
24
+ cancelBtnElement: HTMLQ2BtnElement;
25
+ saveBtnElement: HTMLQ2BtnElement;
24
26
  formattedValue: string;
25
27
  innerValue: string;
26
28
  defaultValue: string;
@@ -36,6 +38,12 @@ export declare class Q2EditableField {
36
38
  delegateFocus(event: FocusEvent): void;
37
39
  input: EventEmitter;
38
40
  change: EventEmitter;
41
+ clickEdit(): void;
42
+ clickCancel(): void;
43
+ clickSave(): void;
44
+ setValue(value: string, options?: {
45
+ clickSave?: boolean;
46
+ }): Promise<void>;
39
47
  inputInput: (event: Q2InputCustomEvent<IEventDetail> & InputEvent) => void;
40
48
  inputChange: (e: CustomEvent) => void;
41
49
  inputKeyDown: (e: KeyboardEvent) => void;
@@ -102,6 +102,8 @@ export declare class Q2Input {
102
102
  formatModifierObserver(): void;
103
103
  hintsObserver(): void;
104
104
  errorsObserver(): void;
105
+ setValue(value: string): void;
106
+ clearValue(): void;
105
107
  onHostElementFocus(event: any): void;
106
108
  onHostElementChange(event: CustomEvent): void;
107
109
  input: EventEmitter<IEventDetail>;
@@ -9,4 +9,5 @@ export declare class Q2Message {
9
9
  present(): Promise<void>;
10
10
  delegateFocus(event: FocusEvent): void;
11
11
  render(): any;
12
+ messageIcon(type: string): any;
12
13
  }