q2-tecton-elements 1.38.2 → 1.39.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 (399) hide show
  1. package/dist/cjs/click-elsewhere_2.cjs.entry.js +1 -1
  2. package/dist/cjs/click-elsewhere_2.cjs.entry.js.map +1 -1
  3. package/dist/cjs/{index-09c712ea.js → index-9113a9da.js} +2 -2
  4. package/dist/cjs/{index-09c712ea.js.map → index-9113a9da.js.map} +1 -1
  5. package/dist/cjs/loader.cjs.js +1 -1
  6. package/dist/cjs/q2-action-sheet.cjs.entry.js +1 -1
  7. package/dist/cjs/q2-action-sheet.cjs.entry.js.map +1 -1
  8. package/dist/cjs/q2-btn_2.cjs.entry.js +2 -2
  9. package/dist/cjs/q2-btn_2.cjs.entry.js.map +1 -1
  10. package/dist/cjs/q2-calendar.cjs.entry.js +11 -2
  11. package/dist/cjs/q2-calendar.cjs.entry.js.map +1 -1
  12. package/dist/cjs/q2-card.cjs.entry.js +20 -23
  13. package/dist/cjs/q2-card.cjs.entry.js.map +1 -1
  14. package/dist/cjs/q2-carousel-pane.cjs.entry.js +1 -1
  15. package/dist/cjs/q2-carousel-pane.cjs.entry.js.map +1 -1
  16. package/dist/cjs/q2-carousel.cjs.entry.js +30 -4
  17. package/dist/cjs/q2-carousel.cjs.entry.js.map +1 -1
  18. package/dist/cjs/q2-chart-area.cjs.entry.js +1 -1
  19. package/dist/cjs/q2-chart-area.cjs.entry.js.map +1 -1
  20. package/dist/cjs/q2-chart-bar.cjs.entry.js +1 -1
  21. package/dist/cjs/q2-chart-donut.cjs.entry.js +14 -14
  22. package/dist/cjs/q2-chart-donut.cjs.entry.js.map +1 -1
  23. package/dist/cjs/q2-checkbox-group.cjs.entry.js +1 -1
  24. package/dist/cjs/q2-checkbox-group.cjs.entry.js.map +1 -1
  25. package/dist/cjs/q2-checkbox.cjs.entry.js +1 -1
  26. package/dist/cjs/q2-checkbox.cjs.entry.js.map +1 -1
  27. package/dist/cjs/q2-data-table.cjs.entry.js +43 -21
  28. package/dist/cjs/q2-data-table.cjs.entry.js.map +1 -1
  29. package/dist/cjs/q2-dropdown-item.cjs.entry.js +1 -1
  30. package/dist/cjs/q2-dropdown.cjs.entry.js +1 -1
  31. package/dist/cjs/q2-editable-field.cjs.entry.js +1 -1
  32. package/dist/cjs/q2-editable-field.cjs.entry.js.map +1 -1
  33. package/dist/cjs/q2-icon.cjs.entry.js +1 -1
  34. package/dist/cjs/q2-input.cjs.entry.js +6 -3
  35. package/dist/cjs/q2-input.cjs.entry.js.map +1 -1
  36. package/dist/cjs/q2-loc.cjs.entry.js +1 -1
  37. package/dist/cjs/q2-message.cjs.entry.js +1 -1
  38. package/dist/cjs/q2-month-picker.cjs.entry.js +1 -1
  39. package/dist/cjs/q2-optgroup_2.cjs.entry.js +1 -1
  40. package/dist/cjs/q2-optgroup_2.cjs.entry.js.map +1 -1
  41. package/dist/cjs/q2-option-list.cjs.entry.js +1 -1
  42. package/dist/cjs/q2-option-list.cjs.entry.js.map +1 -1
  43. package/dist/cjs/q2-pagination.cjs.entry.js +1 -1
  44. package/dist/cjs/q2-pagination.cjs.entry.js.map +1 -1
  45. package/dist/cjs/q2-pill.cjs.entry.js +1 -1
  46. package/dist/cjs/q2-pill.cjs.entry.js.map +1 -1
  47. package/dist/cjs/q2-radio-group.cjs.entry.js +1 -1
  48. package/dist/cjs/q2-radio-group.cjs.entry.js.map +1 -1
  49. package/dist/cjs/q2-radio.cjs.entry.js +1 -1
  50. package/dist/cjs/q2-radio.cjs.entry.js.map +1 -1
  51. package/dist/cjs/q2-section.cjs.entry.js +2 -2
  52. package/dist/cjs/q2-section.cjs.entry.js.map +1 -1
  53. package/dist/cjs/q2-select.cjs.entry.js +1 -1
  54. package/dist/cjs/q2-select.cjs.entry.js.map +1 -1
  55. package/dist/cjs/q2-stepper-pane.cjs.entry.js +1 -1
  56. package/dist/cjs/q2-stepper-pane.cjs.entry.js.map +1 -1
  57. package/dist/cjs/q2-stepper-vertical.cjs.entry.js +4 -4
  58. package/dist/cjs/q2-stepper-vertical.cjs.entry.js.map +1 -1
  59. package/dist/cjs/q2-stepper.cjs.entry.js +1 -1
  60. package/dist/cjs/q2-stepper.cjs.entry.js.map +1 -1
  61. package/dist/cjs/q2-tab-container.cjs.entry.js +1 -1
  62. package/dist/cjs/q2-tab-container.cjs.entry.js.map +1 -1
  63. package/dist/cjs/q2-tab-pane.cjs.entry.js.map +1 -1
  64. package/dist/cjs/q2-tag.cjs.entry.js +1 -1
  65. package/dist/cjs/q2-tag.cjs.entry.js.map +1 -1
  66. package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
  67. package/dist/cjs/q2-textarea.cjs.entry.js +1 -1
  68. package/dist/cjs/q2-textarea.cjs.entry.js.map +1 -1
  69. package/dist/cjs/q2-tooltip.cjs.entry.js +1 -1
  70. package/dist/cjs/tecton-tab-pane.cjs.entry.js.map +1 -1
  71. package/dist/collection/components/click-elsewhere/index.js +1 -1
  72. package/dist/collection/components/click-elsewhere/index.js.map +1 -1
  73. package/dist/collection/components/q2-action-sheet/index.js +6 -3
  74. package/dist/collection/components/q2-action-sheet/index.js.map +1 -1
  75. package/dist/collection/components/q2-btn/styles.css +11 -11
  76. package/dist/collection/components/q2-calendar/index.js +23 -11
  77. package/dist/collection/components/q2-calendar/index.js.map +1 -1
  78. package/dist/collection/components/q2-card/index.js +21 -27
  79. package/dist/collection/components/q2-card/index.js.map +1 -1
  80. package/dist/collection/components/q2-card/styles.css +57 -0
  81. package/dist/collection/components/q2-carousel/index.js +33 -5
  82. package/dist/collection/components/q2-carousel/index.js.map +1 -1
  83. package/dist/collection/components/q2-carousel-pane/index.js +8 -4
  84. package/dist/collection/components/q2-carousel-pane/index.js.map +1 -1
  85. package/dist/collection/components/q2-chart-area/index.js +9 -4
  86. package/dist/collection/components/q2-chart-area/index.js.map +1 -1
  87. package/dist/collection/components/q2-chart-donut/index.js +58 -22
  88. package/dist/collection/components/q2-chart-donut/index.js.map +1 -1
  89. package/dist/collection/components/q2-checkbox/index.js +5 -2
  90. package/dist/collection/components/q2-checkbox/index.js.map +1 -1
  91. package/dist/collection/components/q2-checkbox-group/index.js +12 -5
  92. package/dist/collection/components/q2-checkbox-group/index.js.map +1 -1
  93. package/dist/collection/components/q2-data-table/index.js +73 -29
  94. package/dist/collection/components/q2-data-table/index.js.map +1 -1
  95. package/dist/collection/components/q2-editable-field/index.js +6 -6
  96. package/dist/collection/components/q2-editable-field/index.js.map +1 -1
  97. package/dist/collection/components/q2-input/formatting/phone.js +1 -1
  98. package/dist/collection/components/q2-input/formatting/phone.js.map +1 -1
  99. package/dist/collection/components/q2-input/index.js +23 -19
  100. package/dist/collection/components/q2-input/index.js.map +1 -1
  101. package/dist/collection/components/q2-input/types.js.map +1 -1
  102. package/dist/collection/components/q2-option/index.js +5 -2
  103. package/dist/collection/components/q2-option/index.js.map +1 -1
  104. package/dist/collection/components/q2-option-list/index.js +15 -9
  105. package/dist/collection/components/q2-option-list/index.js.map +1 -1
  106. package/dist/collection/components/q2-pagination/index.js +8 -5
  107. package/dist/collection/components/q2-pagination/index.js.map +1 -1
  108. package/dist/collection/components/q2-pill/index.js +5 -2
  109. package/dist/collection/components/q2-pill/index.js.map +1 -1
  110. package/dist/collection/components/q2-popover/index.js +1 -1
  111. package/dist/collection/components/q2-popover/index.js.map +1 -1
  112. package/dist/collection/components/q2-radio/index.js +3 -3
  113. package/dist/collection/components/q2-radio/index.js.map +1 -1
  114. package/dist/collection/components/q2-radio-group/index.js +7 -4
  115. package/dist/collection/components/q2-radio-group/index.js.map +1 -1
  116. package/dist/collection/components/q2-section/index.js +7 -4
  117. package/dist/collection/components/q2-section/index.js.map +1 -1
  118. package/dist/collection/components/q2-section/styles.css +8 -6
  119. package/dist/collection/components/q2-select/index.js +8 -5
  120. package/dist/collection/components/q2-select/index.js.map +1 -1
  121. package/dist/collection/components/q2-stepper/index.js +5 -2
  122. package/dist/collection/components/q2-stepper/index.js.map +1 -1
  123. package/dist/collection/components/q2-stepper-pane/index.js +11 -8
  124. package/dist/collection/components/q2-stepper-pane/index.js.map +1 -1
  125. package/dist/collection/components/q2-stepper-vertical/index.js +13 -6
  126. package/dist/collection/components/q2-stepper-vertical/index.js.map +1 -1
  127. package/dist/collection/components/q2-tab-container/index.js +14 -8
  128. package/dist/collection/components/q2-tab-container/index.js.map +1 -1
  129. package/dist/collection/components/q2-tab-pane/index.js +5 -2
  130. package/dist/collection/components/q2-tab-pane/index.js.map +1 -1
  131. package/dist/collection/components/q2-tag/index.js +1 -1
  132. package/dist/collection/components/q2-tag/index.js.map +1 -1
  133. package/dist/collection/components/q2-textarea/index.js +14 -8
  134. package/dist/collection/components/q2-textarea/index.js.map +1 -1
  135. package/dist/collection/components/tecton-tab-pane/index.js +5 -2
  136. package/dist/collection/components/tecton-tab-pane/index.js.map +1 -1
  137. package/dist/collection/utils/index.js +1 -1
  138. package/dist/collection/utils/index.js.map +1 -1
  139. package/dist/components/index13.js.map +1 -1
  140. package/dist/components/index14.js.map +1 -1
  141. package/dist/components/index15.js.map +1 -1
  142. package/dist/components/index16.js +1 -1
  143. package/dist/components/index16.js.map +1 -1
  144. package/dist/components/index2.js.map +1 -1
  145. package/dist/components/index5.js +1 -1
  146. package/dist/components/index5.js.map +1 -1
  147. package/dist/components/index6.js.map +1 -1
  148. package/dist/components/index9.js +5 -2
  149. package/dist/components/index9.js.map +1 -1
  150. package/dist/components/q2-action-sheet.js.map +1 -1
  151. package/dist/components/q2-calendar.js +10 -1
  152. package/dist/components/q2-calendar.js.map +1 -1
  153. package/dist/components/q2-card.js +19 -22
  154. package/dist/components/q2-card.js.map +1 -1
  155. package/dist/components/q2-carousel-pane.js.map +1 -1
  156. package/dist/components/q2-carousel.js +32 -4
  157. package/dist/components/q2-carousel.js.map +1 -1
  158. package/dist/components/q2-chart-area.js.map +1 -1
  159. package/dist/components/q2-chart-donut.js +16 -15
  160. package/dist/components/q2-chart-donut.js.map +1 -1
  161. package/dist/components/q2-checkbox-group.js.map +1 -1
  162. package/dist/components/q2-data-table.js +43 -21
  163. package/dist/components/q2-data-table.js.map +1 -1
  164. package/dist/components/q2-editable-field.js.map +1 -1
  165. package/dist/components/q2-pagination.js.map +1 -1
  166. package/dist/components/q2-pill.js.map +1 -1
  167. package/dist/components/q2-radio-group.js.map +1 -1
  168. package/dist/components/q2-radio.js.map +1 -1
  169. package/dist/components/q2-section.js +1 -1
  170. package/dist/components/q2-section.js.map +1 -1
  171. package/dist/components/q2-select.js.map +1 -1
  172. package/dist/components/q2-stepper-pane.js.map +1 -1
  173. package/dist/components/q2-stepper-vertical.js +3 -3
  174. package/dist/components/q2-stepper-vertical.js.map +1 -1
  175. package/dist/components/q2-stepper.js.map +1 -1
  176. package/dist/components/q2-tab-container.js.map +1 -1
  177. package/dist/components/q2-tab-pane.js.map +1 -1
  178. package/dist/components/q2-tag.js.map +1 -1
  179. package/dist/components/q2-textarea.js.map +1 -1
  180. package/dist/components/tecton-tab-pane.js.map +1 -1
  181. package/dist/esm/click-elsewhere_2.entry.js +1 -1
  182. package/dist/esm/click-elsewhere_2.entry.js.map +1 -1
  183. package/dist/esm/{index-84f1034e.js → index-fbe28822.js} +2 -2
  184. package/dist/esm/{index-84f1034e.js.map → index-fbe28822.js.map} +1 -1
  185. package/dist/esm/loader.js +1 -1
  186. package/dist/esm/q2-action-sheet.entry.js +1 -1
  187. package/dist/esm/q2-action-sheet.entry.js.map +1 -1
  188. package/dist/esm/q2-btn_2.entry.js +2 -2
  189. package/dist/esm/q2-btn_2.entry.js.map +1 -1
  190. package/dist/esm/q2-calendar.entry.js +11 -2
  191. package/dist/esm/q2-calendar.entry.js.map +1 -1
  192. package/dist/esm/q2-card.entry.js +20 -23
  193. package/dist/esm/q2-card.entry.js.map +1 -1
  194. package/dist/esm/q2-carousel-pane.entry.js +1 -1
  195. package/dist/esm/q2-carousel-pane.entry.js.map +1 -1
  196. package/dist/esm/q2-carousel.entry.js +30 -4
  197. package/dist/esm/q2-carousel.entry.js.map +1 -1
  198. package/dist/esm/q2-chart-area.entry.js +1 -1
  199. package/dist/esm/q2-chart-area.entry.js.map +1 -1
  200. package/dist/esm/q2-chart-bar.entry.js +1 -1
  201. package/dist/esm/q2-chart-donut.entry.js +14 -14
  202. package/dist/esm/q2-chart-donut.entry.js.map +1 -1
  203. package/dist/esm/q2-checkbox-group.entry.js +1 -1
  204. package/dist/esm/q2-checkbox-group.entry.js.map +1 -1
  205. package/dist/esm/q2-checkbox.entry.js +1 -1
  206. package/dist/esm/q2-checkbox.entry.js.map +1 -1
  207. package/dist/esm/q2-data-table.entry.js +43 -21
  208. package/dist/esm/q2-data-table.entry.js.map +1 -1
  209. package/dist/esm/q2-dropdown-item.entry.js +1 -1
  210. package/dist/esm/q2-dropdown.entry.js +1 -1
  211. package/dist/esm/q2-editable-field.entry.js +1 -1
  212. package/dist/esm/q2-editable-field.entry.js.map +1 -1
  213. package/dist/esm/q2-icon.entry.js +1 -1
  214. package/dist/esm/q2-input.entry.js +6 -3
  215. package/dist/esm/q2-input.entry.js.map +1 -1
  216. package/dist/esm/q2-loc.entry.js +1 -1
  217. package/dist/esm/q2-message.entry.js +1 -1
  218. package/dist/esm/q2-month-picker.entry.js +1 -1
  219. package/dist/esm/q2-optgroup_2.entry.js +1 -1
  220. package/dist/esm/q2-optgroup_2.entry.js.map +1 -1
  221. package/dist/esm/q2-option-list.entry.js +1 -1
  222. package/dist/esm/q2-option-list.entry.js.map +1 -1
  223. package/dist/esm/q2-pagination.entry.js +1 -1
  224. package/dist/esm/q2-pagination.entry.js.map +1 -1
  225. package/dist/esm/q2-pill.entry.js +1 -1
  226. package/dist/esm/q2-pill.entry.js.map +1 -1
  227. package/dist/esm/q2-radio-group.entry.js +1 -1
  228. package/dist/esm/q2-radio-group.entry.js.map +1 -1
  229. package/dist/esm/q2-radio.entry.js +1 -1
  230. package/dist/esm/q2-radio.entry.js.map +1 -1
  231. package/dist/esm/q2-section.entry.js +2 -2
  232. package/dist/esm/q2-section.entry.js.map +1 -1
  233. package/dist/esm/q2-select.entry.js +1 -1
  234. package/dist/esm/q2-select.entry.js.map +1 -1
  235. package/dist/esm/q2-stepper-pane.entry.js +1 -1
  236. package/dist/esm/q2-stepper-pane.entry.js.map +1 -1
  237. package/dist/esm/q2-stepper-vertical.entry.js +4 -4
  238. package/dist/esm/q2-stepper-vertical.entry.js.map +1 -1
  239. package/dist/esm/q2-stepper.entry.js +1 -1
  240. package/dist/esm/q2-stepper.entry.js.map +1 -1
  241. package/dist/esm/q2-tab-container.entry.js +1 -1
  242. package/dist/esm/q2-tab-container.entry.js.map +1 -1
  243. package/dist/esm/q2-tab-pane.entry.js.map +1 -1
  244. package/dist/esm/q2-tag.entry.js +1 -1
  245. package/dist/esm/q2-tag.entry.js.map +1 -1
  246. package/dist/esm/q2-tecton-elements.js +1 -1
  247. package/dist/esm/q2-textarea.entry.js +1 -1
  248. package/dist/esm/q2-textarea.entry.js.map +1 -1
  249. package/dist/esm/q2-tooltip.entry.js +1 -1
  250. package/dist/esm/tecton-tab-pane.entry.js.map +1 -1
  251. package/dist/q2-tecton-elements/p-0253a00b.entry.js +2 -0
  252. package/dist/q2-tecton-elements/p-0253a00b.entry.js.map +1 -0
  253. package/dist/q2-tecton-elements/{p-72b4ecc6.entry.js → p-07229496.entry.js} +2 -2
  254. package/dist/q2-tecton-elements/p-07229496.entry.js.map +1 -0
  255. package/dist/q2-tecton-elements/{p-a6b03db1.entry.js → p-0ecff52c.entry.js} +2 -2
  256. package/dist/q2-tecton-elements/{p-a6b03db1.entry.js.map → p-0ecff52c.entry.js.map} +1 -1
  257. package/dist/q2-tecton-elements/{p-f198f77b.entry.js → p-1179b32c.entry.js} +2 -2
  258. package/dist/q2-tecton-elements/p-1179b32c.entry.js.map +1 -0
  259. package/dist/q2-tecton-elements/{p-311f37e2.entry.js → p-15c69543.entry.js} +2 -2
  260. package/dist/q2-tecton-elements/{p-9220365b.entry.js → p-212c6301.entry.js} +2 -2
  261. package/dist/q2-tecton-elements/p-212c6301.entry.js.map +1 -0
  262. package/dist/q2-tecton-elements/p-3090b655.entry.js +2 -0
  263. package/dist/q2-tecton-elements/p-3090b655.entry.js.map +1 -0
  264. package/dist/q2-tecton-elements/{p-8f8d5362.entry.js → p-3569e648.entry.js} +2 -2
  265. package/dist/q2-tecton-elements/p-3569e648.entry.js.map +1 -0
  266. package/dist/q2-tecton-elements/{p-0cade28b.entry.js → p-36bff57a.entry.js} +2 -2
  267. package/dist/q2-tecton-elements/{p-57e81863.entry.js → p-39e94e12.entry.js} +2 -2
  268. package/dist/q2-tecton-elements/{p-57e81863.entry.js.map → p-39e94e12.entry.js.map} +1 -1
  269. package/dist/q2-tecton-elements/p-3f20d610.entry.js +2 -0
  270. package/dist/q2-tecton-elements/p-3f20d610.entry.js.map +1 -0
  271. package/dist/q2-tecton-elements/{p-29a7ca63.entry.js → p-44c2d7a2.entry.js} +2 -2
  272. package/dist/q2-tecton-elements/{p-29a7ca63.entry.js.map → p-44c2d7a2.entry.js.map} +1 -1
  273. package/dist/q2-tecton-elements/{p-deb773a5.entry.js → p-461dca3d.entry.js} +2 -2
  274. package/dist/q2-tecton-elements/{p-deb773a5.entry.js.map → p-461dca3d.entry.js.map} +1 -1
  275. package/dist/q2-tecton-elements/{p-3d82d94f.entry.js → p-5964fd50.entry.js} +2 -2
  276. package/dist/q2-tecton-elements/{p-3d82d94f.entry.js.map → p-5964fd50.entry.js.map} +1 -1
  277. package/dist/q2-tecton-elements/{p-e98d9cf2.entry.js → p-5b4c30b8.entry.js} +2 -2
  278. package/dist/q2-tecton-elements/p-5b4c30b8.entry.js.map +1 -0
  279. package/dist/q2-tecton-elements/{p-69dcf12e.entry.js → p-5d6c2534.entry.js} +2 -2
  280. package/dist/q2-tecton-elements/p-5d6c2534.entry.js.map +1 -0
  281. package/dist/q2-tecton-elements/{p-a09c90c1.entry.js → p-66bc9475.entry.js} +2 -2
  282. package/dist/q2-tecton-elements/{p-a09c90c1.entry.js.map → p-66bc9475.entry.js.map} +1 -1
  283. package/dist/q2-tecton-elements/{p-e4dadcd7.entry.js → p-6ba6d83e.entry.js} +2 -2
  284. package/dist/q2-tecton-elements/p-6ba6d83e.entry.js.map +1 -0
  285. package/dist/q2-tecton-elements/{p-5843f6c8.entry.js → p-78d5707b.entry.js} +2 -2
  286. package/dist/q2-tecton-elements/p-78d5707b.entry.js.map +1 -0
  287. package/dist/q2-tecton-elements/{p-85dc889e.entry.js → p-7e276297.entry.js} +2 -2
  288. package/dist/q2-tecton-elements/p-7e276297.entry.js.map +1 -0
  289. package/dist/q2-tecton-elements/{p-059ea7c9.entry.js → p-81e36fcd.entry.js} +2 -2
  290. package/dist/q2-tecton-elements/{p-8f273db2.entry.js → p-88b303a7.entry.js} +2 -2
  291. package/dist/q2-tecton-elements/{p-8f273db2.entry.js.map → p-88b303a7.entry.js.map} +1 -1
  292. package/dist/q2-tecton-elements/p-9889692d.entry.js +2 -0
  293. package/dist/q2-tecton-elements/p-9889692d.entry.js.map +1 -0
  294. package/dist/q2-tecton-elements/p-9da0db14.entry.js.map +1 -1
  295. package/dist/q2-tecton-elements/{p-c057134f.entry.js → p-9dff6592.entry.js} +2 -2
  296. package/dist/q2-tecton-elements/p-9dff6592.entry.js.map +1 -0
  297. package/dist/q2-tecton-elements/{p-145849d0.entry.js → p-a5a23edc.entry.js} +2 -2
  298. package/dist/q2-tecton-elements/p-a5a23edc.entry.js.map +1 -0
  299. package/dist/q2-tecton-elements/{p-db3bbfb8.entry.js → p-a9c40d3b.entry.js} +2 -2
  300. package/dist/q2-tecton-elements/p-a9c40d3b.entry.js.map +1 -0
  301. package/dist/q2-tecton-elements/{p-15179d55.entry.js → p-aa96f160.entry.js} +2 -2
  302. package/dist/q2-tecton-elements/{p-5c033ed9.entry.js → p-b3a32a46.entry.js} +2 -2
  303. package/dist/q2-tecton-elements/{p-5c033ed9.entry.js.map → p-b3a32a46.entry.js.map} +1 -1
  304. package/dist/q2-tecton-elements/{p-f3868a77.entry.js → p-b6ed1342.entry.js} +2 -2
  305. package/dist/q2-tecton-elements/{p-f3868a77.entry.js.map → p-b6ed1342.entry.js.map} +1 -1
  306. package/dist/q2-tecton-elements/{p-52132d80.entry.js → p-ba19d09f.entry.js} +2 -2
  307. package/dist/q2-tecton-elements/p-ba19d09f.entry.js.map +1 -0
  308. package/dist/q2-tecton-elements/{p-81b917a5.entry.js → p-cc7ba0cb.entry.js} +2 -2
  309. package/dist/q2-tecton-elements/{p-107f07f2.entry.js → p-ce009987.entry.js} +2 -2
  310. package/dist/q2-tecton-elements/p-d7fb3534.entry.js.map +1 -1
  311. package/dist/q2-tecton-elements/{p-959f47ef.entry.js → p-de7352f5.entry.js} +2 -2
  312. package/dist/q2-tecton-elements/{p-6ae87415.entry.js → p-ef2e2991.entry.js} +2 -2
  313. package/dist/q2-tecton-elements/{p-b83568e7.entry.js → p-f1479052.entry.js} +2 -2
  314. package/dist/q2-tecton-elements/p-f1479052.entry.js.map +1 -0
  315. package/dist/q2-tecton-elements/{p-f34521a4.js → p-fb903495.js} +2 -2
  316. package/dist/q2-tecton-elements/{p-f34521a4.js.map → p-fb903495.js.map} +1 -1
  317. package/dist/q2-tecton-elements/{p-2812f9d2.entry.js → p-ff137358.entry.js} +2 -2
  318. package/dist/q2-tecton-elements/p-ff137358.entry.js.map +1 -0
  319. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
  320. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js.map +1 -1
  321. package/dist/test/elements/q2-btn-test.e2e.js +31 -0
  322. package/dist/test/elements/q2-btn-test.e2e.js.map +1 -1
  323. package/dist/test/elements/q2-card-test.e2e.js +69 -11
  324. package/dist/test/elements/q2-card-test.e2e.js.map +1 -1
  325. package/dist/test/elements/q2-carousel-test.e2e.js +41 -3
  326. package/dist/test/elements/q2-carousel-test.e2e.js.map +1 -1
  327. package/dist/test/elements/q2-chart-donut-test.e2e.js +64 -9
  328. package/dist/test/elements/q2-chart-donut-test.e2e.js.map +1 -1
  329. package/dist/test/elements/q2-data-table-test.e2e.js +91 -2
  330. package/dist/test/elements/q2-data-table-test.e2e.js.map +1 -1
  331. package/dist/test/elements/q2-input-test.e2e.js +151 -67
  332. package/dist/test/elements/q2-input-test.e2e.js.map +1 -1
  333. package/dist/test/helpers.js +48 -0
  334. package/dist/test/helpers.js.map +1 -1
  335. package/dist/types/components/click-elsewhere/index.d.ts +3 -0
  336. package/dist/types/components/q2-action-sheet/index.d.ts +7 -0
  337. package/dist/types/components/q2-calendar/index.d.ts +23 -3
  338. package/dist/types/components/q2-card/index.d.ts +14 -4
  339. package/dist/types/components/q2-carousel/index.d.ts +8 -0
  340. package/dist/types/components/q2-carousel-pane/index.d.ts +7 -1
  341. package/dist/types/components/q2-chart-area/index.d.ts +7 -1
  342. package/dist/types/components/q2-chart-donut/index.d.ts +18 -3
  343. package/dist/types/components/q2-checkbox/index.d.ts +4 -0
  344. package/dist/types/components/q2-checkbox-group/index.d.ts +8 -1
  345. package/dist/types/components/q2-data-table/index.d.ts +43 -3
  346. package/dist/types/components/q2-editable-field/index.d.ts +18 -2
  347. package/dist/types/components/q2-input/index.d.ts +19 -2
  348. package/dist/types/components/q2-input/types.d.ts +1 -0
  349. package/dist/types/components/q2-option/index.d.ts +4 -0
  350. package/dist/types/components/q2-option-list/index.d.ts +15 -1
  351. package/dist/types/components/q2-pagination/index.d.ts +8 -2
  352. package/dist/types/components/q2-pill/index.d.ts +4 -0
  353. package/dist/types/components/q2-popover/index.d.ts +3 -0
  354. package/dist/types/components/q2-radio/index.d.ts +6 -1
  355. package/dist/types/components/q2-radio-group/index.d.ts +7 -1
  356. package/dist/types/components/q2-section/index.d.ts +7 -1
  357. package/dist/types/components/q2-select/index.d.ts +16 -1
  358. package/dist/types/components/q2-stepper/index.d.ts +4 -0
  359. package/dist/types/components/q2-stepper-pane/index.d.ts +11 -1
  360. package/dist/types/components/q2-stepper-vertical/index.d.ts +10 -2
  361. package/dist/types/components/q2-tab-container/index.d.ts +12 -2
  362. package/dist/types/components/q2-tab-pane/index.d.ts +4 -0
  363. package/dist/types/components/q2-tag/index.d.ts +5 -0
  364. package/dist/types/components/q2-textarea/index.d.ts +14 -2
  365. package/dist/types/components/tecton-tab-pane/index.d.ts +4 -0
  366. package/dist/types/components.d.ts +223 -27
  367. package/dist/types/workspace/workspace/{tecton-production_release_1.38.x → _Gitlab_tecton-production_master}/packages/q2-tecton-elements/.stencil/test/helpers.d.ts +1 -0
  368. package/package.json +4 -3
  369. package/dist/q2-tecton-elements/p-072bda73.entry.js +0 -2
  370. package/dist/q2-tecton-elements/p-072bda73.entry.js.map +0 -1
  371. package/dist/q2-tecton-elements/p-145849d0.entry.js.map +0 -1
  372. package/dist/q2-tecton-elements/p-2812f9d2.entry.js.map +0 -1
  373. package/dist/q2-tecton-elements/p-52132d80.entry.js.map +0 -1
  374. package/dist/q2-tecton-elements/p-5843f6c8.entry.js.map +0 -1
  375. package/dist/q2-tecton-elements/p-69dcf12e.entry.js.map +0 -1
  376. package/dist/q2-tecton-elements/p-72b4ecc6.entry.js.map +0 -1
  377. package/dist/q2-tecton-elements/p-85dc889e.entry.js.map +0 -1
  378. package/dist/q2-tecton-elements/p-8f8d5362.entry.js.map +0 -1
  379. package/dist/q2-tecton-elements/p-9220365b.entry.js.map +0 -1
  380. package/dist/q2-tecton-elements/p-a4017e55.entry.js +0 -2
  381. package/dist/q2-tecton-elements/p-a4017e55.entry.js.map +0 -1
  382. package/dist/q2-tecton-elements/p-af98db79.entry.js +0 -2
  383. package/dist/q2-tecton-elements/p-af98db79.entry.js.map +0 -1
  384. package/dist/q2-tecton-elements/p-b83568e7.entry.js.map +0 -1
  385. package/dist/q2-tecton-elements/p-c0334e63.entry.js +0 -2
  386. package/dist/q2-tecton-elements/p-c0334e63.entry.js.map +0 -1
  387. package/dist/q2-tecton-elements/p-c057134f.entry.js.map +0 -1
  388. package/dist/q2-tecton-elements/p-db3bbfb8.entry.js.map +0 -1
  389. package/dist/q2-tecton-elements/p-e4dadcd7.entry.js.map +0 -1
  390. package/dist/q2-tecton-elements/p-e98d9cf2.entry.js.map +0 -1
  391. package/dist/q2-tecton-elements/p-f198f77b.entry.js.map +0 -1
  392. /package/dist/q2-tecton-elements/{p-311f37e2.entry.js.map → p-15c69543.entry.js.map} +0 -0
  393. /package/dist/q2-tecton-elements/{p-0cade28b.entry.js.map → p-36bff57a.entry.js.map} +0 -0
  394. /package/dist/q2-tecton-elements/{p-059ea7c9.entry.js.map → p-81e36fcd.entry.js.map} +0 -0
  395. /package/dist/q2-tecton-elements/{p-15179d55.entry.js.map → p-aa96f160.entry.js.map} +0 -0
  396. /package/dist/q2-tecton-elements/{p-81b917a5.entry.js.map → p-cc7ba0cb.entry.js.map} +0 -0
  397. /package/dist/q2-tecton-elements/{p-107f07f2.entry.js.map → p-ce009987.entry.js.map} +0 -0
  398. /package/dist/q2-tecton-elements/{p-959f47ef.entry.js.map → p-de7352f5.entry.js.map} +0 -0
  399. /package/dist/q2-tecton-elements/{p-6ae87415.entry.js.map → p-ef2e2991.entry.js.map} +0 -0
@@ -207,6 +207,27 @@ describe('q2-carousel', () => {
207
207
  expect(await userMessageBody.innerText).toEqual('tecton.element.carousel.insufficientPanesMessageBody');
208
208
  });
209
209
  });
210
+ describe('when mutation observer is triggered', () => {
211
+ it('it re-organizes the carousel panes and updates state', async () => {
212
+ const page = await setup({
213
+ html: renderCarousel(3),
214
+ });
215
+ let carouselPanes = await page.findAll('q2-carousel-pane');
216
+ let pageIndicators = await page.findAll('q2-carousel .q2-carousel-page-indicator');
217
+ expect(carouselPanes).toHaveLength(3);
218
+ expect(pageIndicators).toHaveLength(3);
219
+ await page.$eval('q2-carousel', (el) => {
220
+ const newPane = document.createElement(`q2-carousel-pane`);
221
+ newPane.setAttribute('label', 'New Pane');
222
+ el.appendChild(newPane);
223
+ });
224
+ await page.waitForChanges();
225
+ carouselPanes = await page.findAll('q2-carousel-pane');
226
+ pageIndicators = await page.findAll('q2-carousel .q2-carousel-page-indicator');
227
+ expect(carouselPanes).toHaveLength(4);
228
+ expect(pageIndicators).toHaveLength(4);
229
+ });
230
+ });
210
231
  describe('focus transferring', () => {
211
232
  const html = `<q2-carousel>
212
233
  <q2-carousel-pane>
@@ -381,11 +402,28 @@ describe('q2-carousel', () => {
381
402
  expect(autoPlayBtn).not.toBeNull();
382
403
  const autoPlayIcon = await page.find('.q2-carousel-autoplay-control q2-icon');
383
404
  expect(autoPlayIcon).toEqualAttribute('type', 'pause');
384
- const carouselWrapper = await page.find('.q2-carousel-swiper-wrapper');
385
- expect(carouselWrapper).toEqualAttribute('aria-live', 'off');
386
405
  await autoPlayBtn.click();
387
406
  expect(autoPlayIcon).toEqualAttribute('type', 'play');
388
- expect(carouselWrapper).toEqualAttribute('aria-live', 'polite');
407
+ });
408
+ it('sets aria-live value to off when auto-playing and not focused', async () => {
409
+ const isFocused = async (page, selector) => page.evaluate(selector => {
410
+ const element = document.querySelector(selector);
411
+ return element === document.activeElement;
412
+ }, selector);
413
+ const page = await setup({
414
+ html: `${renderCarousel(3, { autoPlay: true })} <q2-input></q2-input>`,
415
+ });
416
+ const autoPlayBtn = await page.find('.q2-carousel-autoplay-control');
417
+ const inputField = await page.find('q2-input');
418
+ const carouselWrapper = await page.find('.q2-carousel-swiper-wrapper');
419
+ expect(autoPlayBtn).not.toBeNull();
420
+ expect(inputField).not.toBeNull();
421
+ await inputField.click();
422
+ await new Promise(r => setTimeout(r, 10000));
423
+ await page.waitForChanges();
424
+ const inputFocused = await isFocused(page, 'q2-input');
425
+ expect(inputFocused).toBeTruthy();
426
+ expect(carouselWrapper).toEqualAttribute('aria-live', 'off');
389
427
  });
390
428
  });
391
429
  });
@@ -1 +1 @@
1
- {"version":3,"file":"q2-carousel-test.e2e.js","sourceRoot":"","sources":["../../../test/elements/q2-carousel-test.e2e.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE3E,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;EACzB,MAAM,cAAc,GAAG,CACnB,aAAqB,EACrB,MAMC,EACH,EAAE;IACA,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,EAAE,iBAClE;MACC,cAAc,EAAE,KAAK;MACrB,cAAc,EAAE,KAAK;MACrB,cAAc,EAAE,KAAK;MACrB,QAAQ,EAAE,KAAK;KAClB,EACE,MAAM,CACZ,CAAC;IACF,OAAO;sBACO,cAAc,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE;sBAC9C,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE;sBACvC,cAAc,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE;sBACxC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;sBAC3B,KAAK,CAAC,CAAC,CAAC,UAAU,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE;;sBAE/B,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAClC,KAAK,CAAC,EAAE,CAAC,0BAA0B,KAAK,GAAG,CAAC,qBAAqB,CACpE;+BACU,CAAC;EAC5B,CAAC,CAAC;EAEF,EAAE,CAAC,iCAAiC,EAAE,KAAK;IACvC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;MACrB,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;KAC1B,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAChD,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;IACvF,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;IACzE,MAAM,iBAAiB,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAC3C,MAAM,sBAAsB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;IACzG,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IAClF,MAAM,yBAAyB,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC;IAChG,MAAM,qBAAqB,GAAG,yBAAyB,CAAC,CAAC,CAAC,CAAC;IAC3D,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAAC;IAE3F,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;IAChC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3E,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1E,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnF,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAClF,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAClF,MAAM,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;IAC1C,MAAM,CAAC,yBAAyB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAClD,MAAM,CAAC,qBAAqB,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9E,MAAM,CAAC,sBAAsB,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjF,MAAM,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACtC,MAAM,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;IAC5D,MAAM,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9D,MAAM,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpE,MAAM,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpE,MAAM,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;EAC9E,CAAC,CAAC,CAAC;EAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACtB,MAAM,aAAa,GAAG,KAAK,EAAE,IAAa,EAAE,SAAiB,EAAE,EAAE,CAC7D,IAAI,CAAC,QAAQ,CACT,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,aAAa,KAAK,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,SAAS,CAAC,EAChG,SAAS,CACZ,CAAC;IAEN,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;MACjD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;QACrB,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;OAC1B,CAAC,CAAC;MAEH,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;MAEzE,MAAM,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;MAC/B,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;MACtG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;MAE5D,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;MACxC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;MAE5B,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;MACtG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;MAC5D,MAAM,CAAC,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;MAEnD,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;MACxC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;MAE5B,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;MACtG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;MAC5D,MAAM,CAAC,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;MAEnD,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;MACvC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;MAE5B,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;MACtG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;MAC5D,MAAM,CAAC,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;MAEnD,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;MACjC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;MAE5B,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;MACtG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;MAC5D,MAAM,CAAC,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;MAEnD,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;MAClC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;MAE5B,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;MACtG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;MAC5D,MAAM,CAAC,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;EACP,CAAC,CAAC,CAAC;EAEH,EAAE,CAAC,yFAAyF,EAAE,KAAK;IAC/F,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;MACrB,IAAI,EAAE,cAAc,CAAC,CAAC,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;KACpD,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAChD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;IACzE,MAAM,iBAAiB,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAC3C,MAAM,kBAAkB,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAC5C,MAAM,iBAAiB,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAC3C,MAAM,sBAAsB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;IAEzG,MAAM,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACzE,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAClF,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpF,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACnF,MAAM,CAAC,sBAAsB,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhF,oBAAoB;IACpB,MAAM,aAAa,CAAC,IAAI,EAAE,+BAA+B,EAAE,OAAO,CAAC,CAAC;IACpE,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACnF,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnF,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAEnF,qBAAqB;IACrB,MAAM,aAAa,CAAC,IAAI,EAAE,+BAA+B,EAAE,OAAO,CAAC,CAAC;IACpE,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACnF,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpF,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAElF,sBAAsB;IACtB,MAAM,aAAa,CAAC,IAAI,EAAE,qCAAqC,EAAE,OAAO,CAAC,CAAC;IAC1E,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACnF,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnF,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAEnF,qBAAqB;IACrB,MAAM,aAAa,CAAC,IAAI,EAAE,qCAAqC,EAAE,OAAO,CAAC,CAAC;IAC1E,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACnF,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpF,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;EACtF,CAAC,CAAC,CAAC;EAEH,QAAQ,CAAC,uDAAuD,EAAE,GAAG,EAAE;IACnE,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;MACvC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;QACrB,IAAI,EAAE,cAAc,CAAC,CAAC,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;OAC1E,CAAC,CAAC;MAEH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;MAChD,MAAM,sBAAsB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;MACzG,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAAC;MAE3F,MAAM,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;MACzE,MAAM,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;MACzE,MAAM,CAAC,sBAAsB,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;MAC3D,MAAM,CAAC,iBAAiB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;EACP,CAAC,CAAC,CAAC;EAEH,EAAE,CAAC,0BAA0B,EAAE,KAAK;IAChC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;MACrB,IAAI,EAAE,cAAc,CAAC,CAAC,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;KACpD,CAAC,CAAC;IACH,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;IACvF,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IAC7E,MAAM,qBAAqB,GAAG,MAAM,IAAI,CAAC,IAAI,CACzC,mEAAmE,CACtE,CAAC;IACF,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IAE1E,MAAM,CAAC,iBAAiB,CAAC,CAAC,gBAAgB,CAAC,YAAY,EAAE,mCAAmC,CAAC,CAAC;IAC9F,MAAM,CAAC,iBAAiB,CAAC,CAAC,gBAAgB,CAAC,YAAY,EAAE,yCAAyC,CAAC,CAAC;IACpG,MAAM,CAAC,qBAAqB,CAAC,CAAC,gBAAgB,CAAC,YAAY,EAAE,yCAAyC,CAAC,CAAC;IACxG,MAAM,CAAC,qBAAqB,CAAC,CAAC,gBAAgB,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IACxE,MAAM,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,uCAAuC,CAAC,CAAC;IAEtF,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IAC1E,MAAM,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,2CAA2C,CAAC,CAAC;EAC9F,CAAC,CAAC,CAAC;EAEH,EAAE,CAAC,oFAAoF,EAAE,KAAK;IAC1F,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;MACrB,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;KAC1B,CAAC,CAAC;IAEH,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACtE,MAAM,yBAAyB,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC;IAChG,MAAM,mCAAmC,GAAG,MAAM,IAAI,CAAC,OAAO,CAC1D,oGAAoG,CACvG,CAAC;IACF,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACvE,MAAM,CAAC,yBAAyB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAClD,MAAM,CAAC,mCAAmC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;EAChE,CAAC,CAAC,CAAC;EAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK;IAClE,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;MACrB,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;KAC1B,CAAC,CAAC;IAEH,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAE3E,MAAM,CAAC,MAAM,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAE7E,MAAM,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IACpD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;IAE5B,MAAM,CAAC,MAAM,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;EAChF,CAAC,CAAC,CAAC;EAEH,EAAE,CAAC,uFAAuF,EAAE,KAAK;IAC7F,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;MACrB,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;KAC1B,CAAC,CAAC;IAEH,MAAM,sBAAsB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;IACzG,MAAM,CAAC,sBAAsB,CAAC,CAAC,QAAQ,EAAE,CAAC;EAC9C,CAAC,CAAC,CAAC;EAEH,EAAE,CAAC,qFAAqF,EAAE,KAAK;IAC3F,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;MACrB,IAAI,EAAE,cAAc,CAAC,CAAC,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;KACpD,CAAC,CAAC;IAEH,MAAM,sBAAsB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;IACzG,MAAM,CAAC,sBAAsB,CAAC,CAAC,QAAQ,EAAE,CAAC;EAC9C,CAAC,CAAC,CAAC;EAEH,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC5C,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;MACxC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;QACrB,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;OAC1B,CAAC,CAAC;MAEH,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;MAC1E,MAAM,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;IAClC,CAAC,CAAC,CAAC;EACP,CAAC,CAAC,CAAC;EAEH,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IACxC,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;MACzD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;QACrB,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;OAC1B,CAAC,CAAC;MAEH,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;MACnE,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;MACpG,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;MAEhG,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;MACnC,MAAM,CAAC,MAAM,iBAAiB,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,wDAAwD,CAAC,CAAC;MAC5G,MAAM,CAAC,MAAM,eAAe,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,sDAAsD,CAAC,CAAC;IAC5G,CAAC,CAAC,CAAC;EACP,CAAC,CAAC,CAAC;EAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAChC,MAAM,IAAI,GAAG;;;;;;;;;;;;;;2BAcM,CAAC;IACpB,EAAE,CAAC,oDAAoD,EAAE,KAAK;MAC1D,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;MACnC,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC,CAAC;MACpD,MAAM,iBAAiB,GAAG,KAAK,EAAE,IAAa,EAAE,EAAE;QAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE;UAClC,OAAO,EAAE,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,YAAY,CAAC;QAC7D,CAAC,CAAC,CAAC;MACP,CAAC,CAAC;MACF,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK;MACvD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;MACnC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;MAChD,MAAM,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;MACrC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;MAC5B,MAAM,iBAAiB,GAAG,KAAK,EAAE,IAAa,EAAE,EAAE;QAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE;UAClC,OAAO,EAAE,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,YAAY,CAAC;QAC7D,CAAC,CAAC,CAAC;MACP,CAAC,CAAC;MACF,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;EACP,CAAC,CAAC,CAAC;EAEH,EAAE,CAAC,IAAI,CAAC,iDAAiD,EAAE,KAAK;IAC5D,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;MACrB,IAAI,EAAE;;;;;;;;;;;;;;;;aAgBL;KACJ,CAAC,CAAC;IAEH,IAAI,oBAAoB,CAAC;IAEzB,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACjC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;IAC5B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACjC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;IAE5B,oBAAoB,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,GAAG,EAAE;MACxD,OAAO,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC;IAC5C,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC,8BAA8B,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpF,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACjC,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;IAC5B,oBAAoB,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,GAAG,EAAE;MACxD,OAAO,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC;IAC5C,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1E,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACjC,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;IAC5B,oBAAoB,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,GAAG,EAAE;MACxD,OAAO,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC;IAC5C,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,0EAA0E;EAC9H,CAAC,CAAC,CAAC;EAEH,EAAE,CAAC,IAAI,CAAC,qDAAqD,EAAE,KAAK;IAChE,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;MACrB,IAAI,EAAE;;;;;;;;;;;;;;;;;;aAkBL;KACJ,CAAC,CAAC;IAEH,IAAI,oBAAoB,CAAC;IAEzB,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACjC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;IAC5B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACjC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;IAE5B,oBAAoB,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,GAAG,EAAE;MACxD,OAAO,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC;IAC5C,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhE,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACjC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;IAE5B,oBAAoB,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,GAAG,EAAE;MACxD,OAAO,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC;IAC5C,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAExE,MAAM,aAAa,CAAC,IAAI,EAAE,+BAA+B,EAAE,OAAO,CAAC,CAAC;IACpE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;IAC5B,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;IACzC,oBAAoB,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,GAAG,EAAE;MACxD,OAAO,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC;IAC5C,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1E,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACjC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;IAC5B,oBAAoB,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,GAAG,EAAE;MACxD,OAAO,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC;IAC5C,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhE,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACjC,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;IAE5B,oBAAoB,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,GAAG,EAAE;MACxD,OAAO,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC;IAC5C,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1E,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACjC,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;IAE5B,oBAAoB,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,GAAG,EAAE;MACxD,OAAO,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC;IAC5C,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,0EAA0E;EAC9H,CAAC,CAAC,CAAC;EAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACpB,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;MACtB,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC/B,EAAE,CAAC,iCAAiC,EAAE,KAAK;UACvC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;YACrB,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;WAC1B,CAAC,CAAC;UAEH,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;UACrE,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC;UAE/B,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;UACvE,MAAM,CAAC,eAAe,CAAC,CAAC,gBAAgB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;MACP,CAAC,CAAC,CAAC;MAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,6BAA6B,EAAE,KAAK;UACnC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;YACrB,IAAI,EAAE,cAAc,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;WAC9C,CAAC,CAAC;UAEH,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;UACrE,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;UACnC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;UAC9E,MAAM,CAAC,YAAY,CAAC,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;UACvD,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;UACvE,MAAM,CAAC,eAAe,CAAC,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;UAE7D,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC;UAC1B,MAAM,CAAC,YAAY,CAAC,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;UACtD,MAAM,CAAC,eAAe,CAAC,CAAC,gBAAgB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;MACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;MAC5B,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC/B,EAAE,CAAC,2BAA2B,EAAE,KAAK;UACjC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;YACrB,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;WAC1B,CAAC,CAAC;UAEH,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;UAEvF,MAAM,CAAC,iBAAiB,CAAC,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC;UAC9D,MAAM,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;UAEhE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;UAChD,MAAM,QAAQ,CAAC,WAAW,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;UACnD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;UAE5B,MAAM,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC;UAClE,MAAM,CAAC,iBAAiB,CAAC,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;MACP,CAAC,CAAC,CAAC;MAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,+BAA+B,EAAE,KAAK;UACrC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;YACrB,IAAI,EAAE,cAAc,CAAC,CAAC,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;WACpD,CAAC,CAAC;UAEH,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;UAEvF,MAAM,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC;UAClE,MAAM,CAAC,iBAAiB,CAAC,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;MACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;MAC5B,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC/B,EAAE,CAAC,oBAAoB,EAAE,KAAK;UAC1B,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;YACrB,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;WAC1B,CAAC,CAAC;UAEH,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;UAC1E,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC;UACrF,MAAM,CAAC,UAAU,CAAC,CAAC,UAAU,EAAE,CAAC;UAChC,MAAM,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;MACP,CAAC,CAAC,CAAC;MAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,4BAA4B,EAAE,KAAK;UAClC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;YACrB,IAAI,EAAE,cAAc,CAAC,CAAC,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;WACpD,CAAC,CAAC;UAEH,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;UAC1E,MAAM,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;MACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;MAClC,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC/B,EAAE,CAAC,oCAAoC,EAAE,KAAK;UAC1C,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;YACrB,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;WAC1B,CAAC,CAAC;UAEH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;UACvE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;UACvE,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;UAC3B,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC/B,CAAC,CAAC,CAAC;MACP,CAAC,CAAC,CAAC;MAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,4BAA4B,EAAE,KAAK;UAClC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;YACrB,IAAI,EAAE,cAAc,CAAC,CAAC,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;WACpD,CAAC,CAAC;UAEH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;UACvE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;UACvE,MAAM,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,CAAC;UAC7B,MAAM,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,CAAC;QACjC,CAAC,CAAC,CAAC;MACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;MACnB,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC/B,EAAE,CAAC,0BAA0B,EAAE,KAAK;UAChC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;YACrB,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;WAC1B,CAAC,CAAC;UAEH,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;UAEzE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;UAC3D,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;UAC5D,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;UAC/D,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;UAChE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;UAC/D,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;MACP,CAAC,CAAC,CAAC;MAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,8BAA8B,EAAE,KAAK;UACpC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;YACrB,IAAI,EAAE,cAAc,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;WACxC,CAAC,CAAC;UAEH,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;UAEzE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;UAC/D,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;UAChE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;UAC3D,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;UAC5D,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;UAC/D,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;MACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;EACP,CAAC,CAAC,CAAC;EAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;MACjD,MAAM,KAAK,GAAG,UAAU,CAAC;MACzB,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;QACrB,IAAI,EAAE;+CACyB,KAAK;;;;;iBAKnC;OACJ,CAAC,CAAC;MACH,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;MAC5B,MAAM,uBAAuB,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,CAAC;MACrE,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;MAC/E,MAAM,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;EACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC","sourcesContent":["import { E2EPage } from '@stencil/core/testing';\nimport { setup, dispatchEvent, testDeprecatedAriaLabel } from '../helpers';\n\ndescribe('q2-carousel', () => {\n const renderCarousel = (\n numberOfPanes: number,\n config?: {\n showNavigation?: boolean;\n hidePagination?: boolean;\n fullWidthPanes?: boolean;\n autoPlay?: boolean;\n index?: number;\n }\n ) => {\n const { showNavigation, hidePagination, fullWidthPanes, autoPlay, index } = {\n ...{\n showNavigation: false,\n hidePagination: false,\n fullWidthPanes: false,\n autoPlay: false,\n },\n ...config,\n };\n return `<q2-carousel\n ${showNavigation ? `show-navigation-arrows` : ''}\n ${hidePagination ? `hide-pagination` : ''}\n ${fullWidthPanes ? `full-width-panes` : ''}\n ${autoPlay ? `auto-play` : ''}\n ${index ? `index=\"${index}\"` : ''}\n >\n ${[...Array(numberOfPanes).keys()].map(\n index => `<q2-carousel-pane>Pane ${index + 1}</q2-carousel-pane>`\n )}\n </q2-carousel>`;\n };\n\n it('renders with default properties', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3),\n });\n\n const carousel = await page.find('q2-carousel');\n const carouselContainer = await page.find('q2-carousel .q2-carousel-swiper-container');\n const carouselPanes = await page.findAll('q2-carousel q2-carousel-pane');\n const firstCarouselPane = carouselPanes[0];\n const navPaginationContainer = await page.find('q2-carousel .q2-carousel-pagination-navigation-wrapper');\n const carouselPagination = await page.find('q2-carousel .q2-carousel-pagination');\n const carouselPaginationButtons = await page.findAll('q2-carousel .q2-carousel-page-indicator');\n const firstPaginationButton = carouselPaginationButtons[0];\n const navigationButtons = await page.findAll('q2-carousel .q2-carousel-navigation-button');\n\n expect(carousel).not.toBeNull();\n expect(carousel.getAttribute('id').includes('q2-carousel-')).toEqual(true);\n expect(carousel.classList.contains('q2-carousel-instance')).toEqual(true);\n expect(carouselContainer.classList.contains('content-peek-display')).toEqual(true);\n expect(firstCarouselPane.classList.contains('swiper-slide-active')).toEqual(true);\n expect(carouselContainer.classList.contains('insufficient-panes')).toEqual(false);\n expect(carouselPagination).not.toBeNull();\n expect(carouselPaginationButtons).toHaveLength(3);\n expect(firstPaginationButton.classList.contains('active-page')).toEqual(true);\n expect(navPaginationContainer.classList.contains('evenly-space')).toEqual(false);\n expect(navigationButtons).toEqual([]);\n expect(await carousel.getProperty('swiper')).not.toBeNull();\n expect(await carousel.getProperty('autoPlay')).toEqual(false);\n expect(await carousel.getProperty('fullWidthPanes')).toEqual(false);\n expect(await carousel.getProperty('hidePagination')).toEqual(false);\n expect(await carousel.getProperty('showNavigationArrows')).toEqual(false);\n });\n\n describe('keyboard', () => {\n const isPaneFocused = async (page: E2EPage, paneIndex: number) =>\n page.evaluate(\n paneIndex => document.activeElement === document.querySelectorAll('q2-carousel-pane')[paneIndex],\n paneIndex\n );\n\n it('can advance the carousel using keys', async () => {\n const page = await setup({\n html: renderCarousel(6),\n });\n\n const carouselPanes = await page.findAll('q2-carousel q2-carousel-pane');\n\n await carouselPanes[0].focus();\n expect(carouselPanes.filter(pane => !pane.classList.contains('swiper-slide-active'))).toHaveLength(5);\n expect(carouselPanes[0]).toHaveClass('swiper-slide-active');\n\n await page.keyboard.press('ArrowRight');\n await page.waitForChanges();\n\n expect(carouselPanes.filter(pane => !pane.classList.contains('swiper-slide-active'))).toHaveLength(5);\n expect(carouselPanes[1]).toHaveClass('swiper-slide-active');\n expect(await isPaneFocused(page, 1)).toEqual(true);\n\n await page.keyboard.press('ArrowRight');\n await page.waitForChanges();\n\n expect(carouselPanes.filter(pane => !pane.classList.contains('swiper-slide-active'))).toHaveLength(5);\n expect(carouselPanes[2]).toHaveClass('swiper-slide-active');\n expect(await isPaneFocused(page, 2)).toEqual(true);\n\n await page.keyboard.press('ArrowLeft');\n await page.waitForChanges();\n\n expect(carouselPanes.filter(pane => !pane.classList.contains('swiper-slide-active'))).toHaveLength(5);\n expect(carouselPanes[1]).toHaveClass('swiper-slide-active');\n expect(await isPaneFocused(page, 1)).toEqual(true);\n\n await page.keyboard.press('End');\n await page.waitForChanges();\n\n expect(carouselPanes.filter(pane => !pane.classList.contains('swiper-slide-active'))).toHaveLength(5);\n expect(carouselPanes[5]).toHaveClass('swiper-slide-active');\n expect(await isPaneFocused(page, 5)).toEqual(true);\n\n await page.keyboard.press('Home');\n await page.waitForChanges();\n\n expect(carouselPanes.filter(pane => !pane.classList.contains('swiper-slide-active'))).toHaveLength(5);\n expect(carouselPanes[0]).toHaveClass('swiper-slide-active');\n expect(await isPaneFocused(page, 0)).toEqual(true);\n });\n });\n\n it('pagination dots and navigation arrows can make the carousel advance or go back in order', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3, { showNavigation: true }),\n });\n\n const carousel = await page.find('q2-carousel');\n const carouselPanes = await page.findAll('q2-carousel q2-carousel-pane');\n const firstCarouselPane = carouselPanes[0];\n const secondCarouselPane = carouselPanes[1];\n const thirdCarouselPane = carouselPanes[2];\n const navPaginationContainer = await page.find('q2-carousel .q2-carousel-pagination-navigation-wrapper');\n\n expect(await carousel.getProperty('showNavigationArrows')).toEqual(true);\n expect(firstCarouselPane.classList.contains('swiper-slide-active')).toEqual(true);\n expect(secondCarouselPane.classList.contains('swiper-slide-active')).toEqual(false);\n expect(thirdCarouselPane.classList.contains('swiper-slide-active')).toEqual(false);\n expect(navPaginationContainer.classList.contains('evenly-space')).toEqual(true);\n\n // go to second pane\n await dispatchEvent(page, '.q2-carousel-page-indicator-1', 'click');\n expect(firstCarouselPane.classList.contains('swiper-slide-active')).toEqual(false);\n expect(secondCarouselPane.classList.contains('swiper-slide-active')).toEqual(true);\n expect(thirdCarouselPane.classList.contains('swiper-slide-active')).toEqual(false);\n\n // back to third pane\n await dispatchEvent(page, '.q2-carousel-page-indicator-2', 'click');\n expect(firstCarouselPane.classList.contains('swiper-slide-active')).toEqual(false);\n expect(secondCarouselPane.classList.contains('swiper-slide-active')).toEqual(false);\n expect(thirdCarouselPane.classList.contains('swiper-slide-active')).toEqual(true);\n\n // back to second pane\n await dispatchEvent(page, '.q2-carousel-navigation-button-prev', 'click');\n expect(firstCarouselPane.classList.contains('swiper-slide-active')).toEqual(false);\n expect(secondCarouselPane.classList.contains('swiper-slide-active')).toEqual(true);\n expect(thirdCarouselPane.classList.contains('swiper-slide-active')).toEqual(false);\n\n // back to third pane\n await dispatchEvent(page, '.q2-carousel-navigation-button-next', 'click');\n expect(firstCarouselPane.classList.contains('swiper-slide-active')).toEqual(false);\n expect(secondCarouselPane.classList.contains('swiper-slide-active')).toEqual(false);\n expect(thirdCarouselPane.classList.contains('swiper-slide-active')).toEqual(true);\n });\n\n describe('when hide-pagination and show-navigation are provided', () => {\n it('still renders accordingly', async () => {\n const page = await setup({\n html: renderCarousel(3, { hidePagination: true, showNavigation: true }),\n });\n\n const carousel = await page.find('q2-carousel');\n const navPaginationContainer = await page.find('q2-carousel .q2-carousel-pagination-navigation-wrapper');\n const navigationButtons = await page.findAll('q2-carousel .q2-carousel-navigation-button');\n\n expect(await carousel.getProperty('showNavigationArrows')).toEqual(true);\n expect(await carousel.getProperty('showNavigationArrows')).toEqual(true);\n expect(navPaginationContainer).toHaveClass('evenly-space');\n expect(navigationButtons).toHaveLength(2);\n });\n });\n\n it('localizes necessary text', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3, { showNavigation: true }),\n });\n const carouselContainer = await page.find('q2-carousel .q2-carousel-swiper-container');\n const firstCarouselPane = await page.find('q2-carousel .q2-carousel-pane-0');\n const firstPaginationButton = await page.find(\n 'q2-carousel .q2-carousel-pagination .q2-carousel-page-indicator-0'\n );\n const nextNavBtn = await page.find('.q2-carousel-navigation-button-next');\n\n expect(carouselContainer).toEqualAttribute('aria-label', 'tecton.element.carousel.ariaLabel');\n expect(firstCarouselPane).toEqualAttribute('aria-label', 'tecton.element.carousel.itemDescription');\n expect(firstPaginationButton).toEqualAttribute('aria-label', 'tecton.element.carousel.itemDescription');\n expect(firstPaginationButton).toEqualAttribute('aria-selected', 'true');\n expect(nextNavBtn).toEqualAttribute('label', 'tecton.element.carousel.nextItemLabel');\n\n const prevNavBtn = await page.find('.q2-carousel-navigation-button-prev');\n expect(prevNavBtn).toEqualAttribute('label', 'tecton.element.carousel.previousItemLabel');\n });\n\n it('displays dynamic pagination indicators if more than five q2-carousel-panes present', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(6),\n });\n\n const carouselPagination = await page.find('.q2-carousel-pagination');\n const carouselPaginationButtons = await page.findAll('q2-carousel .q2-carousel-page-indicator');\n const carouselPaginationNonVisibleButtons = await page.findAll(\n '.q2-carousel-page-indicator:not(.active-page):not(.active-adjacent):not(.active-adjacent-adjacent)'\n );\n expect(carouselPagination.classList.contains('dynamic')).toEqual(true);\n expect(carouselPaginationButtons).toHaveLength(6);\n expect(carouselPaginationNonVisibleButtons).toHaveLength(3);\n });\n\n it('puts itself in compact mode if dimensions are right for it', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3),\n });\n\n const carouselContainer = await page.find('.q2-carousel-swiper-container');\n\n expect(await carouselContainer.classList.contains('compact')).toEqual(false);\n\n await page.setViewport({ width: 500, height: 800 });\n await page.waitForChanges();\n\n expect(await carouselContainer.classList.contains('compact')).toEqual(true);\n });\n\n it('hides pagination/navigation if only one content pane is provided in content peek mode', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(1),\n });\n\n const navPaginationContainer = await page.find('q2-carousel .q2-carousel-pagination-navigation-wrapper');\n expect(navPaginationContainer).toBeNull();\n });\n\n it('hides pagination/navigation if only one content pane is provided in full-width mode', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(1, { fullWidthPanes: true }),\n });\n\n const navPaginationContainer = await page.find('q2-carousel .q2-carousel-pagination-navigation-wrapper');\n expect(navPaginationContainer).toBeNull();\n });\n\n describe('when only one pane is provided', () => {\n it('does not render pagination', async () => {\n const page = await setup({\n html: renderCarousel(1),\n });\n\n const pagination = await page.find('q2-carousel .q2-carousel-pagination');\n expect(pagination).toBeNull();\n });\n });\n\n describe('when no panes are provided', () => {\n it('informs the user that more panes are needed', async () => {\n const page = await setup({\n html: renderCarousel(0),\n });\n\n const userMessage = await page.find('.insufficient-pane-feedback');\n const userMessageHeader = await page.find('.insufficient-pane-feedback .insufficient-panes-header');\n const userMessageBody = await page.find('.insufficient-pane-feedback .insufficient-panes-body');\n\n expect(userMessage).not.toBeNull();\n expect(await userMessageHeader.innerText).toEqual('tecton.element.carousel.insufficientPanesMessageHeader');\n expect(await userMessageBody.innerText).toEqual('tecton.element.carousel.insufficientPanesMessageBody');\n });\n });\n\n describe('focus transferring', () => {\n const html = `<q2-carousel>\n <q2-carousel-pane>\n <h2>Hello</h2>\n <p>World</p>\n </q2-carousel-pane>\n <q2-carousel-pane>\n <h2>Foo</h2>\n <p>Bar</p>\n </q2-carousel-pane>\n <q2-carousel-pane>\n <h2>Fizz</h2>\n <p>Buzz</p>\n <button>Action</button>\n </q2-carousel-pane>\n </q2-carousel>`;\n it('focuses selected pane when focus event dispatched ', async function (): Promise<void> {\n const page = await setup({ html });\n await dispatchEvent(page, ['q2-carousel'], 'focus');\n const innerActiveTestId = async (page: E2EPage) => {\n return page.$eval('q2-carousel', el => {\n return el.querySelector('q2-carousel-pane').isActivePane;\n });\n };\n expect(await innerActiveTestId(page)).toEqual(true);\n });\n\n it('focuses selected pane when focus method called ', async function (): Promise<void> {\n const page = await setup({ html });\n const carousel = await page.find('q2-carousel');\n await carousel.triggerEvent('focus');\n await page.waitForChanges();\n const innerActiveTestId = async (page: E2EPage) => {\n return page.$eval('q2-carousel', el => {\n return el.querySelector('q2-carousel-pane').isActivePane;\n });\n };\n expect(await innerActiveTestId(page)).toEqual(true);\n });\n });\n\n it.skip('manages focus from pagination to carousel panes', async function (): Promise<void> {\n const page = await setup({\n html: `\n <q2-carousel>\n <q2-carousel-pane>\n <h2>Hello</h2>\n <p>World</p>\n </q2-carousel-pane>\n <q2-carousel-pane>\n <h2>Foo</h2>\n <p>Bar</p>\n </q2-carousel-pane>\n <q2-carousel-pane>\n <h2>Fizz</h2>\n <p>Buzz</p>\n <button>Action</button>\n </q2-carousel-pane>\n </q2-carousel>\n `,\n });\n\n let activeElementClasses;\n\n await page.keyboard.press('Tab');\n await page.waitForChanges();\n await page.keyboard.press('Tab');\n await page.waitForChanges();\n\n activeElementClasses = await page.$eval('q2-carousel', () => {\n return document.activeElement.className;\n });\n expect(activeElementClasses.includes('q2-carousel-page-indicator-0')).toEqual(true);\n\n await page.keyboard.down('Shift');\n await page.keyboard.press('Tab');\n await page.keyboard.up('Shift');\n await page.waitForChanges();\n activeElementClasses = await page.$eval('q2-carousel', () => {\n return document.activeElement.className;\n });\n expect(activeElementClasses.includes('q2-carousel-pane-0')).toEqual(true);\n\n await page.keyboard.down('Shift');\n await page.keyboard.press('Tab');\n await page.keyboard.up('Shift');\n await page.waitForChanges();\n activeElementClasses = await page.$eval('q2-carousel', () => {\n return document.activeElement.className;\n });\n expect(activeElementClasses.length).toEqual(0); // shift+tab from a pane should land focus outside of the carousel element\n });\n\n it.skip('manages focus from panes to inner focusable content', async function (): Promise<void> {\n const page = await setup({\n html: `\n <q2-carousel>\n <q2-carousel-pane>\n <h2>Hello</h2>\n <p>World</p>\n <q2-btn color=\"primary\" class=\"button 1\">Nested Focusable Content</q2-btn>\n </q2-carousel-pane>\n <q2-carousel-pane>\n <h2>Foo</h2>\n <p>Bar</p>\n <q2-btn color=\"primary\" class=\"button 2\">Nested Focusable Content</q2-btn>\n </q2-carousel-pane>\n <q2-carousel-pane>\n <h2>Fizz</h2>\n <p>Buzz</p>\n <button>Action</button>\n </q2-carousel-pane>\n </q2-carousel>\n `,\n });\n\n let activeElementClasses;\n\n await page.keyboard.press('Tab');\n await page.waitForChanges();\n await page.keyboard.press('Tab');\n await page.waitForChanges();\n\n activeElementClasses = await page.$eval('q2-carousel', () => {\n return document.activeElement.className;\n });\n expect(activeElementClasses.includes('button 1')).toEqual(true);\n\n await page.keyboard.press('Tab');\n await page.waitForChanges();\n\n activeElementClasses = await page.$eval('q2-carousel', () => {\n return document.activeElement.className;\n });\n expect(activeElementClasses.includes('page-indicator-0')).toEqual(true);\n\n await dispatchEvent(page, '.q2-carousel-page-indicator-1', 'click');\n await page.waitForChanges();\n await page.waitForEvent('transitionend');\n activeElementClasses = await page.$eval('q2-carousel', () => {\n return document.activeElement.className;\n });\n expect(activeElementClasses.includes('q2-carousel-pane-1')).toEqual(true);\n\n await page.keyboard.press('Tab');\n await page.waitForChanges();\n activeElementClasses = await page.$eval('q2-carousel', () => {\n return document.activeElement.className;\n });\n expect(activeElementClasses.includes('button 2')).toEqual(true);\n\n await page.keyboard.down('Shift');\n await page.keyboard.press('Tab');\n await page.keyboard.up('Shift');\n await page.waitForChanges();\n\n activeElementClasses = await page.$eval('q2-carousel', () => {\n return document.activeElement.className;\n });\n expect(activeElementClasses.includes('q2-carousel-pane-1')).toEqual(true);\n\n await page.keyboard.down('Shift');\n await page.keyboard.press('Tab');\n await page.keyboard.up('Shift');\n await page.waitForChanges();\n\n activeElementClasses = await page.$eval('q2-carousel', () => {\n return document.activeElement.className;\n });\n expect(activeElementClasses.length).toEqual(0); // shift+tab from a pane should land focus outside of the carousel element\n });\n\n describe('@Props', () => {\n describe('autoPlay', () => {\n describe('when not provided', () => {\n it('does not render autoplay button', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3),\n });\n\n const autoPlayBtn = await page.find('.q2-carousel-autoplay-control');\n expect(autoPlayBtn).toBeNull();\n\n const carouselWrapper = await page.find('.q2-carousel-swiper-wrapper');\n expect(carouselWrapper).toEqualAttribute('aria-live', 'polite');\n });\n });\n\n describe('when provided', () => {\n it('renders the autoplay button', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3, { autoPlay: true }),\n });\n\n const autoPlayBtn = await page.find('.q2-carousel-autoplay-control');\n expect(autoPlayBtn).not.toBeNull();\n const autoPlayIcon = await page.find('.q2-carousel-autoplay-control q2-icon');\n expect(autoPlayIcon).toEqualAttribute('type', 'pause');\n const carouselWrapper = await page.find('.q2-carousel-swiper-wrapper');\n expect(carouselWrapper).toEqualAttribute('aria-live', 'off');\n\n await autoPlayBtn.click();\n expect(autoPlayIcon).toEqualAttribute('type', 'play');\n expect(carouselWrapper).toEqualAttribute('aria-live', 'polite');\n });\n });\n });\n\n describe('fullWidthPanes', () => {\n describe('when not provided', () => {\n it('adds content-peek-display', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3),\n });\n\n const carouselContainer = await page.find('q2-carousel .q2-carousel-swiper-container');\n\n expect(carouselContainer).toHaveClass('content-peek-display');\n expect(carouselContainer).not.toHaveClass('full-width-display');\n\n const carousel = await page.find('q2-carousel');\n await carousel.setProperty('fullWidthPanes', true);\n await page.waitForChanges();\n\n expect(carouselContainer).not.toHaveClass('content-peek-display');\n expect(carouselContainer).toHaveClass('full-width-display');\n });\n });\n\n describe('when provided', () => {\n it('adds full-width-display class', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3, { fullWidthPanes: true }),\n });\n\n const carouselContainer = await page.find('q2-carousel .q2-carousel-swiper-container');\n\n expect(carouselContainer).not.toHaveClass('content-peek-display');\n expect(carouselContainer).toHaveClass('full-width-display');\n });\n });\n });\n\n describe('hidePagination', () => {\n describe('when not provided', () => {\n it('renders pagination', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3),\n });\n\n const pagination = await page.find('q2-carousel .q2-carousel-pagination');\n const pageIndicators = await page.findAll('q2-carousel .q2-carousel-page-indicator');\n expect(pagination).toBeTruthy();\n expect(pageIndicators).toHaveLength(3);\n });\n });\n\n describe('when provided', () => {\n it('does not render pagination', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3, { hidePagination: true }),\n });\n\n const pagination = await page.find('q2-carousel .q2-carousel-pagination');\n expect(pagination).toBeNull();\n });\n });\n });\n\n describe('showNavigationArrows', () => {\n describe('when not provided', () => {\n it('does not render navigation buttons', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3),\n });\n\n const prevBtn = await page.find('.q2-carousel-navigation-button-prev');\n const nextBtn = await page.find('.q2-carousel-navigation-button-next');\n expect(prevBtn).toBeNull();\n expect(nextBtn).toBeNull();\n });\n });\n\n describe('when provided', () => {\n it('renders navigation buttons', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3, { showNavigation: true }),\n });\n\n const prevBtn = await page.find('.q2-carousel-navigation-button-prev');\n const nextBtn = await page.find('.q2-carousel-navigation-button-next');\n expect(prevBtn).toBeTruthy();\n expect(nextBtn).toBeTruthy();\n });\n });\n });\n\n describe('index', () => {\n describe('when not provided', () => {\n it('starts on the first pane', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3),\n });\n\n const carouselPanes = await page.findAll('q2-carousel q2-carousel-pane');\n\n expect(carouselPanes[0]).toHaveAttribute('is-active-pane');\n expect(carouselPanes[0]).toHaveClass('swiper-slide-active');\n expect(carouselPanes[1]).not.toHaveAttribute('is-active-pane');\n expect(carouselPanes[1]).not.toHaveClass('swiper-slide-active');\n expect(carouselPanes[2]).not.toHaveAttribute('is-active-pane');\n expect(carouselPanes[2]).not.toHaveClass('swiper-slide-active');\n });\n });\n\n describe('when provided', () => {\n it('starts on the specified pane', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3, { index: 2 }),\n });\n\n const carouselPanes = await page.findAll('q2-carousel q2-carousel-pane');\n\n expect(carouselPanes[0]).not.toHaveAttribute('is-active-pane');\n expect(carouselPanes[0]).not.toHaveClass('swiper-slide-active');\n expect(carouselPanes[1]).toHaveAttribute('is-active-pane');\n expect(carouselPanes[1]).toHaveClass('swiper-slide-active');\n expect(carouselPanes[2]).not.toHaveAttribute('is-active-pane');\n expect(carouselPanes[2]).not.toHaveClass('swiper-slide-active');\n });\n });\n });\n });\n\n describe('Deprecations', () => {\n it('handles deprecated `ariaLabel` prop', async () => {\n const label = 'My Label';\n const page = await setup({\n html: `\n <q2-carousel aria-label=\"${label}\">\n <q2-carousel-pane>\n <h2>Foo</h2>\n </q2-carousel-pane>\n </q2-carousel>\n `,\n });\n await page.waitForChanges();\n await testDeprecatedAriaLabel(await page.find('q2-carousel'), label);\n const container = await page.find('q2-carousel .q2-carousel-swiper-container');\n expect(container).toEqualAttribute('aria-label', label);\n });\n });\n});\n"]}
1
+ {"version":3,"file":"q2-carousel-test.e2e.js","sourceRoot":"","sources":["../../../test/elements/q2-carousel-test.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { E2EPage } from '@stencil/core/testing';\nimport { setup, dispatchEvent, testDeprecatedAriaLabel } from '../helpers';\n\ndescribe('q2-carousel', () => {\n const renderCarousel = (\n numberOfPanes: number,\n config?: {\n showNavigation?: boolean;\n hidePagination?: boolean;\n fullWidthPanes?: boolean;\n autoPlay?: boolean;\n index?: number;\n }\n ) => {\n const { showNavigation, hidePagination, fullWidthPanes, autoPlay, index } = {\n ...{\n showNavigation: false,\n hidePagination: false,\n fullWidthPanes: false,\n autoPlay: false,\n },\n ...config,\n };\n return `<q2-carousel\n ${showNavigation ? `show-navigation-arrows` : ''}\n ${hidePagination ? `hide-pagination` : ''}\n ${fullWidthPanes ? `full-width-panes` : ''}\n ${autoPlay ? `auto-play` : ''}\n ${index ? `index=\"${index}\"` : ''}\n >\n ${[...Array(numberOfPanes).keys()].map(\n index => `<q2-carousel-pane>Pane ${index + 1}</q2-carousel-pane>`\n )}\n </q2-carousel>`;\n };\n\n it('renders with default properties', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3),\n });\n\n const carousel = await page.find('q2-carousel');\n const carouselContainer = await page.find('q2-carousel .q2-carousel-swiper-container');\n const carouselPanes = await page.findAll('q2-carousel q2-carousel-pane');\n const firstCarouselPane = carouselPanes[0];\n const navPaginationContainer = await page.find('q2-carousel .q2-carousel-pagination-navigation-wrapper');\n const carouselPagination = await page.find('q2-carousel .q2-carousel-pagination');\n const carouselPaginationButtons = await page.findAll('q2-carousel .q2-carousel-page-indicator');\n const firstPaginationButton = carouselPaginationButtons[0];\n const navigationButtons = await page.findAll('q2-carousel .q2-carousel-navigation-button');\n\n expect(carousel).not.toBeNull();\n expect(carousel.getAttribute('id').includes('q2-carousel-')).toEqual(true);\n expect(carousel.classList.contains('q2-carousel-instance')).toEqual(true);\n expect(carouselContainer.classList.contains('content-peek-display')).toEqual(true);\n expect(firstCarouselPane.classList.contains('swiper-slide-active')).toEqual(true);\n expect(carouselContainer.classList.contains('insufficient-panes')).toEqual(false);\n expect(carouselPagination).not.toBeNull();\n expect(carouselPaginationButtons).toHaveLength(3);\n expect(firstPaginationButton.classList.contains('active-page')).toEqual(true);\n expect(navPaginationContainer.classList.contains('evenly-space')).toEqual(false);\n expect(navigationButtons).toEqual([]);\n expect(await carousel.getProperty('swiper')).not.toBeNull();\n expect(await carousel.getProperty('autoPlay')).toEqual(false);\n expect(await carousel.getProperty('fullWidthPanes')).toEqual(false);\n expect(await carousel.getProperty('hidePagination')).toEqual(false);\n expect(await carousel.getProperty('showNavigationArrows')).toEqual(false);\n });\n\n describe('keyboard', () => {\n const isPaneFocused = async (page: E2EPage, paneIndex: number) =>\n page.evaluate(\n paneIndex => document.activeElement === document.querySelectorAll('q2-carousel-pane')[paneIndex],\n paneIndex\n );\n\n it('can advance the carousel using keys', async () => {\n const page = await setup({\n html: renderCarousel(6),\n });\n\n const carouselPanes = await page.findAll('q2-carousel q2-carousel-pane');\n\n await carouselPanes[0].focus();\n expect(carouselPanes.filter(pane => !pane.classList.contains('swiper-slide-active'))).toHaveLength(5);\n expect(carouselPanes[0]).toHaveClass('swiper-slide-active');\n\n await page.keyboard.press('ArrowRight');\n await page.waitForChanges();\n\n expect(carouselPanes.filter(pane => !pane.classList.contains('swiper-slide-active'))).toHaveLength(5);\n expect(carouselPanes[1]).toHaveClass('swiper-slide-active');\n expect(await isPaneFocused(page, 1)).toEqual(true);\n\n await page.keyboard.press('ArrowRight');\n await page.waitForChanges();\n\n expect(carouselPanes.filter(pane => !pane.classList.contains('swiper-slide-active'))).toHaveLength(5);\n expect(carouselPanes[2]).toHaveClass('swiper-slide-active');\n expect(await isPaneFocused(page, 2)).toEqual(true);\n\n await page.keyboard.press('ArrowLeft');\n await page.waitForChanges();\n\n expect(carouselPanes.filter(pane => !pane.classList.contains('swiper-slide-active'))).toHaveLength(5);\n expect(carouselPanes[1]).toHaveClass('swiper-slide-active');\n expect(await isPaneFocused(page, 1)).toEqual(true);\n\n await page.keyboard.press('End');\n await page.waitForChanges();\n\n expect(carouselPanes.filter(pane => !pane.classList.contains('swiper-slide-active'))).toHaveLength(5);\n expect(carouselPanes[5]).toHaveClass('swiper-slide-active');\n expect(await isPaneFocused(page, 5)).toEqual(true);\n\n await page.keyboard.press('Home');\n await page.waitForChanges();\n\n expect(carouselPanes.filter(pane => !pane.classList.contains('swiper-slide-active'))).toHaveLength(5);\n expect(carouselPanes[0]).toHaveClass('swiper-slide-active');\n expect(await isPaneFocused(page, 0)).toEqual(true);\n });\n });\n\n it('pagination dots and navigation arrows can make the carousel advance or go back in order', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3, { showNavigation: true }),\n });\n\n const carousel = await page.find('q2-carousel');\n const carouselPanes = await page.findAll('q2-carousel q2-carousel-pane');\n const firstCarouselPane = carouselPanes[0];\n const secondCarouselPane = carouselPanes[1];\n const thirdCarouselPane = carouselPanes[2];\n const navPaginationContainer = await page.find('q2-carousel .q2-carousel-pagination-navigation-wrapper');\n\n expect(await carousel.getProperty('showNavigationArrows')).toEqual(true);\n expect(firstCarouselPane.classList.contains('swiper-slide-active')).toEqual(true);\n expect(secondCarouselPane.classList.contains('swiper-slide-active')).toEqual(false);\n expect(thirdCarouselPane.classList.contains('swiper-slide-active')).toEqual(false);\n expect(navPaginationContainer.classList.contains('evenly-space')).toEqual(true);\n\n // go to second pane\n await dispatchEvent(page, '.q2-carousel-page-indicator-1', 'click');\n expect(firstCarouselPane.classList.contains('swiper-slide-active')).toEqual(false);\n expect(secondCarouselPane.classList.contains('swiper-slide-active')).toEqual(true);\n expect(thirdCarouselPane.classList.contains('swiper-slide-active')).toEqual(false);\n\n // back to third pane\n await dispatchEvent(page, '.q2-carousel-page-indicator-2', 'click');\n expect(firstCarouselPane.classList.contains('swiper-slide-active')).toEqual(false);\n expect(secondCarouselPane.classList.contains('swiper-slide-active')).toEqual(false);\n expect(thirdCarouselPane.classList.contains('swiper-slide-active')).toEqual(true);\n\n // back to second pane\n await dispatchEvent(page, '.q2-carousel-navigation-button-prev', 'click');\n expect(firstCarouselPane.classList.contains('swiper-slide-active')).toEqual(false);\n expect(secondCarouselPane.classList.contains('swiper-slide-active')).toEqual(true);\n expect(thirdCarouselPane.classList.contains('swiper-slide-active')).toEqual(false);\n\n // back to third pane\n await dispatchEvent(page, '.q2-carousel-navigation-button-next', 'click');\n expect(firstCarouselPane.classList.contains('swiper-slide-active')).toEqual(false);\n expect(secondCarouselPane.classList.contains('swiper-slide-active')).toEqual(false);\n expect(thirdCarouselPane.classList.contains('swiper-slide-active')).toEqual(true);\n });\n\n describe('when hide-pagination and show-navigation are provided', () => {\n it('still renders accordingly', async () => {\n const page = await setup({\n html: renderCarousel(3, { hidePagination: true, showNavigation: true }),\n });\n\n const carousel = await page.find('q2-carousel');\n const navPaginationContainer = await page.find('q2-carousel .q2-carousel-pagination-navigation-wrapper');\n const navigationButtons = await page.findAll('q2-carousel .q2-carousel-navigation-button');\n\n expect(await carousel.getProperty('showNavigationArrows')).toEqual(true);\n expect(await carousel.getProperty('showNavigationArrows')).toEqual(true);\n expect(navPaginationContainer).toHaveClass('evenly-space');\n expect(navigationButtons).toHaveLength(2);\n });\n });\n\n it('localizes necessary text', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3, { showNavigation: true }),\n });\n const carouselContainer = await page.find('q2-carousel .q2-carousel-swiper-container');\n const firstCarouselPane = await page.find('q2-carousel .q2-carousel-pane-0');\n const firstPaginationButton = await page.find(\n 'q2-carousel .q2-carousel-pagination .q2-carousel-page-indicator-0'\n );\n const nextNavBtn = await page.find('.q2-carousel-navigation-button-next');\n\n expect(carouselContainer).toEqualAttribute('aria-label', 'tecton.element.carousel.ariaLabel');\n expect(firstCarouselPane).toEqualAttribute('aria-label', 'tecton.element.carousel.itemDescription');\n expect(firstPaginationButton).toEqualAttribute('aria-label', 'tecton.element.carousel.itemDescription');\n expect(firstPaginationButton).toEqualAttribute('aria-selected', 'true');\n expect(nextNavBtn).toEqualAttribute('label', 'tecton.element.carousel.nextItemLabel');\n\n const prevNavBtn = await page.find('.q2-carousel-navigation-button-prev');\n expect(prevNavBtn).toEqualAttribute('label', 'tecton.element.carousel.previousItemLabel');\n });\n\n it('displays dynamic pagination indicators if more than five q2-carousel-panes present', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(6),\n });\n\n const carouselPagination = await page.find('.q2-carousel-pagination');\n const carouselPaginationButtons = await page.findAll('q2-carousel .q2-carousel-page-indicator');\n const carouselPaginationNonVisibleButtons = await page.findAll(\n '.q2-carousel-page-indicator:not(.active-page):not(.active-adjacent):not(.active-adjacent-adjacent)'\n );\n expect(carouselPagination.classList.contains('dynamic')).toEqual(true);\n expect(carouselPaginationButtons).toHaveLength(6);\n expect(carouselPaginationNonVisibleButtons).toHaveLength(3);\n });\n\n it('puts itself in compact mode if dimensions are right for it', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3),\n });\n\n const carouselContainer = await page.find('.q2-carousel-swiper-container');\n\n expect(await carouselContainer.classList.contains('compact')).toEqual(false);\n\n await page.setViewport({ width: 500, height: 800 });\n await page.waitForChanges();\n\n expect(await carouselContainer.classList.contains('compact')).toEqual(true);\n });\n\n it('hides pagination/navigation if only one content pane is provided in content peek mode', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(1),\n });\n\n const navPaginationContainer = await page.find('q2-carousel .q2-carousel-pagination-navigation-wrapper');\n expect(navPaginationContainer).toBeNull();\n });\n\n it('hides pagination/navigation if only one content pane is provided in full-width mode', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(1, { fullWidthPanes: true }),\n });\n\n const navPaginationContainer = await page.find('q2-carousel .q2-carousel-pagination-navigation-wrapper');\n expect(navPaginationContainer).toBeNull();\n });\n\n describe('when only one pane is provided', () => {\n it('does not render pagination', async () => {\n const page = await setup({\n html: renderCarousel(1),\n });\n\n const pagination = await page.find('q2-carousel .q2-carousel-pagination');\n expect(pagination).toBeNull();\n });\n });\n\n describe('when no panes are provided', () => {\n it('informs the user that more panes are needed', async () => {\n const page = await setup({\n html: renderCarousel(0),\n });\n\n const userMessage = await page.find('.insufficient-pane-feedback');\n const userMessageHeader = await page.find('.insufficient-pane-feedback .insufficient-panes-header');\n const userMessageBody = await page.find('.insufficient-pane-feedback .insufficient-panes-body');\n\n expect(userMessage).not.toBeNull();\n expect(await userMessageHeader.innerText).toEqual('tecton.element.carousel.insufficientPanesMessageHeader');\n expect(await userMessageBody.innerText).toEqual('tecton.element.carousel.insufficientPanesMessageBody');\n });\n });\n\n describe('when mutation observer is triggered', () => {\n it('it re-organizes the carousel panes and updates state', async () => {\n const page = await setup({\n html: renderCarousel(3),\n });\n let carouselPanes = await page.findAll('q2-carousel-pane');\n let pageIndicators = await page.findAll('q2-carousel .q2-carousel-page-indicator');\n\n expect(carouselPanes).toHaveLength(3);\n expect(pageIndicators).toHaveLength(3);\n\n await page.$eval('q2-carousel', (el: HTMLElement) => {\n const newPane = document.createElement(`q2-carousel-pane`);\n newPane.setAttribute('label', 'New Pane');\n el.appendChild(newPane);\n });\n await page.waitForChanges();\n\n carouselPanes = await page.findAll('q2-carousel-pane');\n pageIndicators = await page.findAll('q2-carousel .q2-carousel-page-indicator');\n\n expect(carouselPanes).toHaveLength(4);\n expect(pageIndicators).toHaveLength(4);\n });\n });\n\n describe('focus transferring', () => {\n const html = `<q2-carousel>\n <q2-carousel-pane>\n <h2>Hello</h2>\n <p>World</p>\n </q2-carousel-pane>\n <q2-carousel-pane>\n <h2>Foo</h2>\n <p>Bar</p>\n </q2-carousel-pane>\n <q2-carousel-pane>\n <h2>Fizz</h2>\n <p>Buzz</p>\n <button>Action</button>\n </q2-carousel-pane>\n </q2-carousel>`;\n it('focuses selected pane when focus event dispatched ', async function (): Promise<void> {\n const page = await setup({ html });\n await dispatchEvent(page, ['q2-carousel'], 'focus');\n const innerActiveTestId = async (page: E2EPage) => {\n return page.$eval('q2-carousel', el => {\n return el.querySelector('q2-carousel-pane').isActivePane;\n });\n };\n expect(await innerActiveTestId(page)).toEqual(true);\n });\n\n it('focuses selected pane when focus method called ', async function (): Promise<void> {\n const page = await setup({ html });\n const carousel = await page.find('q2-carousel');\n await carousel.triggerEvent('focus');\n await page.waitForChanges();\n const innerActiveTestId = async (page: E2EPage) => {\n return page.$eval('q2-carousel', el => {\n return el.querySelector('q2-carousel-pane').isActivePane;\n });\n };\n expect(await innerActiveTestId(page)).toEqual(true);\n });\n });\n\n it.skip('manages focus from pagination to carousel panes', async function (): Promise<void> {\n const page = await setup({\n html: `\n <q2-carousel>\n <q2-carousel-pane>\n <h2>Hello</h2>\n <p>World</p>\n </q2-carousel-pane>\n <q2-carousel-pane>\n <h2>Foo</h2>\n <p>Bar</p>\n </q2-carousel-pane>\n <q2-carousel-pane>\n <h2>Fizz</h2>\n <p>Buzz</p>\n <button>Action</button>\n </q2-carousel-pane>\n </q2-carousel>\n `,\n });\n\n let activeElementClasses;\n\n await page.keyboard.press('Tab');\n await page.waitForChanges();\n await page.keyboard.press('Tab');\n await page.waitForChanges();\n\n activeElementClasses = await page.$eval('q2-carousel', () => {\n return document.activeElement.className;\n });\n expect(activeElementClasses.includes('q2-carousel-page-indicator-0')).toEqual(true);\n\n await page.keyboard.down('Shift');\n await page.keyboard.press('Tab');\n await page.keyboard.up('Shift');\n await page.waitForChanges();\n activeElementClasses = await page.$eval('q2-carousel', () => {\n return document.activeElement.className;\n });\n expect(activeElementClasses.includes('q2-carousel-pane-0')).toEqual(true);\n\n await page.keyboard.down('Shift');\n await page.keyboard.press('Tab');\n await page.keyboard.up('Shift');\n await page.waitForChanges();\n activeElementClasses = await page.$eval('q2-carousel', () => {\n return document.activeElement.className;\n });\n expect(activeElementClasses.length).toEqual(0); // shift+tab from a pane should land focus outside of the carousel element\n });\n\n it.skip('manages focus from panes to inner focusable content', async function (): Promise<void> {\n const page = await setup({\n html: `\n <q2-carousel>\n <q2-carousel-pane>\n <h2>Hello</h2>\n <p>World</p>\n <q2-btn color=\"primary\" class=\"button 1\">Nested Focusable Content</q2-btn>\n </q2-carousel-pane>\n <q2-carousel-pane>\n <h2>Foo</h2>\n <p>Bar</p>\n <q2-btn color=\"primary\" class=\"button 2\">Nested Focusable Content</q2-btn>\n </q2-carousel-pane>\n <q2-carousel-pane>\n <h2>Fizz</h2>\n <p>Buzz</p>\n <button>Action</button>\n </q2-carousel-pane>\n </q2-carousel>\n `,\n });\n\n let activeElementClasses;\n\n await page.keyboard.press('Tab');\n await page.waitForChanges();\n await page.keyboard.press('Tab');\n await page.waitForChanges();\n\n activeElementClasses = await page.$eval('q2-carousel', () => {\n return document.activeElement.className;\n });\n expect(activeElementClasses.includes('button 1')).toEqual(true);\n\n await page.keyboard.press('Tab');\n await page.waitForChanges();\n\n activeElementClasses = await page.$eval('q2-carousel', () => {\n return document.activeElement.className;\n });\n expect(activeElementClasses.includes('page-indicator-0')).toEqual(true);\n\n await dispatchEvent(page, '.q2-carousel-page-indicator-1', 'click');\n await page.waitForChanges();\n await page.waitForEvent('transitionend');\n activeElementClasses = await page.$eval('q2-carousel', () => {\n return document.activeElement.className;\n });\n expect(activeElementClasses.includes('q2-carousel-pane-1')).toEqual(true);\n\n await page.keyboard.press('Tab');\n await page.waitForChanges();\n activeElementClasses = await page.$eval('q2-carousel', () => {\n return document.activeElement.className;\n });\n expect(activeElementClasses.includes('button 2')).toEqual(true);\n\n await page.keyboard.down('Shift');\n await page.keyboard.press('Tab');\n await page.keyboard.up('Shift');\n await page.waitForChanges();\n\n activeElementClasses = await page.$eval('q2-carousel', () => {\n return document.activeElement.className;\n });\n expect(activeElementClasses.includes('q2-carousel-pane-1')).toEqual(true);\n\n await page.keyboard.down('Shift');\n await page.keyboard.press('Tab');\n await page.keyboard.up('Shift');\n await page.waitForChanges();\n\n activeElementClasses = await page.$eval('q2-carousel', () => {\n return document.activeElement.className;\n });\n expect(activeElementClasses.length).toEqual(0); // shift+tab from a pane should land focus outside of the carousel element\n });\n\n describe('@Props', () => {\n describe('autoPlay', () => {\n describe('when not provided', () => {\n it('does not render autoplay button', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3),\n });\n\n const autoPlayBtn = await page.find('.q2-carousel-autoplay-control');\n expect(autoPlayBtn).toBeNull();\n\n const carouselWrapper = await page.find('.q2-carousel-swiper-wrapper');\n expect(carouselWrapper).toEqualAttribute('aria-live', 'polite');\n });\n });\n\n describe('when provided', () => {\n it('renders the autoplay button', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3, { autoPlay: true }),\n });\n\n const autoPlayBtn = await page.find('.q2-carousel-autoplay-control');\n expect(autoPlayBtn).not.toBeNull();\n const autoPlayIcon = await page.find('.q2-carousel-autoplay-control q2-icon');\n expect(autoPlayIcon).toEqualAttribute('type', 'pause');\n\n await autoPlayBtn.click();\n expect(autoPlayIcon).toEqualAttribute('type', 'play');\n });\n\n it('sets aria-live value to off when auto-playing and not focused', async () => {\n const isFocused = async (page: E2EPage, selector: string) =>\n page.evaluate(selector => {\n const element = document.querySelector(selector);\n return element === document.activeElement;\n }, selector);\n\n const page = await setup({\n html: `${renderCarousel(3, { autoPlay: true })} <q2-input></q2-input>`,\n });\n const autoPlayBtn = await page.find('.q2-carousel-autoplay-control');\n const inputField = await page.find('q2-input');\n const carouselWrapper = await page.find('.q2-carousel-swiper-wrapper');\n\n expect(autoPlayBtn).not.toBeNull();\n expect(inputField).not.toBeNull();\n\n await inputField.click();\n await new Promise(r => setTimeout(r, 10000));\n await page.waitForChanges();\n const inputFocused = await isFocused(page, 'q2-input');\n\n expect(inputFocused).toBeTruthy();\n expect(carouselWrapper).toEqualAttribute('aria-live', 'off');\n });\n });\n });\n\n describe('fullWidthPanes', () => {\n describe('when not provided', () => {\n it('adds content-peek-display', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3),\n });\n\n const carouselContainer = await page.find('q2-carousel .q2-carousel-swiper-container');\n\n expect(carouselContainer).toHaveClass('content-peek-display');\n expect(carouselContainer).not.toHaveClass('full-width-display');\n\n const carousel = await page.find('q2-carousel');\n await carousel.setProperty('fullWidthPanes', true);\n await page.waitForChanges();\n\n expect(carouselContainer).not.toHaveClass('content-peek-display');\n expect(carouselContainer).toHaveClass('full-width-display');\n });\n });\n\n describe('when provided', () => {\n it('adds full-width-display class', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3, { fullWidthPanes: true }),\n });\n\n const carouselContainer = await page.find('q2-carousel .q2-carousel-swiper-container');\n\n expect(carouselContainer).not.toHaveClass('content-peek-display');\n expect(carouselContainer).toHaveClass('full-width-display');\n });\n });\n });\n\n describe('hidePagination', () => {\n describe('when not provided', () => {\n it('renders pagination', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3),\n });\n\n const pagination = await page.find('q2-carousel .q2-carousel-pagination');\n const pageIndicators = await page.findAll('q2-carousel .q2-carousel-page-indicator');\n expect(pagination).toBeTruthy();\n expect(pageIndicators).toHaveLength(3);\n });\n });\n\n describe('when provided', () => {\n it('does not render pagination', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3, { hidePagination: true }),\n });\n\n const pagination = await page.find('q2-carousel .q2-carousel-pagination');\n expect(pagination).toBeNull();\n });\n });\n });\n\n describe('showNavigationArrows', () => {\n describe('when not provided', () => {\n it('does not render navigation buttons', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3),\n });\n\n const prevBtn = await page.find('.q2-carousel-navigation-button-prev');\n const nextBtn = await page.find('.q2-carousel-navigation-button-next');\n expect(prevBtn).toBeNull();\n expect(nextBtn).toBeNull();\n });\n });\n\n describe('when provided', () => {\n it('renders navigation buttons', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3, { showNavigation: true }),\n });\n\n const prevBtn = await page.find('.q2-carousel-navigation-button-prev');\n const nextBtn = await page.find('.q2-carousel-navigation-button-next');\n expect(prevBtn).toBeTruthy();\n expect(nextBtn).toBeTruthy();\n });\n });\n });\n\n describe('index', () => {\n describe('when not provided', () => {\n it('starts on the first pane', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3),\n });\n\n const carouselPanes = await page.findAll('q2-carousel q2-carousel-pane');\n\n expect(carouselPanes[0]).toHaveAttribute('is-active-pane');\n expect(carouselPanes[0]).toHaveClass('swiper-slide-active');\n expect(carouselPanes[1]).not.toHaveAttribute('is-active-pane');\n expect(carouselPanes[1]).not.toHaveClass('swiper-slide-active');\n expect(carouselPanes[2]).not.toHaveAttribute('is-active-pane');\n expect(carouselPanes[2]).not.toHaveClass('swiper-slide-active');\n });\n });\n\n describe('when provided', () => {\n it('starts on the specified pane', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3, { index: 2 }),\n });\n\n const carouselPanes = await page.findAll('q2-carousel q2-carousel-pane');\n\n expect(carouselPanes[0]).not.toHaveAttribute('is-active-pane');\n expect(carouselPanes[0]).not.toHaveClass('swiper-slide-active');\n expect(carouselPanes[1]).toHaveAttribute('is-active-pane');\n expect(carouselPanes[1]).toHaveClass('swiper-slide-active');\n expect(carouselPanes[2]).not.toHaveAttribute('is-active-pane');\n expect(carouselPanes[2]).not.toHaveClass('swiper-slide-active');\n });\n });\n });\n });\n\n describe('Deprecations', () => {\n it('handles deprecated `ariaLabel` prop', async () => {\n const label = 'My Label';\n const page = await setup({\n html: `\n <q2-carousel aria-label=\"${label}\">\n <q2-carousel-pane>\n <h2>Foo</h2>\n </q2-carousel-pane>\n </q2-carousel>\n `,\n });\n await page.waitForChanges();\n await testDeprecatedAriaLabel(await page.find('q2-carousel'), label);\n const container = await page.find('q2-carousel .q2-carousel-swiper-container');\n expect(container).toEqualAttribute('aria-label', label);\n });\n });\n});\n"]}
@@ -17,16 +17,10 @@ describe('q2-chart-donut', () => {
17
17
  const clearSelection = async (page) => {
18
18
  return page.$eval('q2-chart-donut', (element) => element.clearSelection());
19
19
  };
20
- beforeEach(async () => {
21
- page = await setup({ html: '' });
22
- await setTestStrings(page, {
23
- 'tecton.element.chartDonut.button.summaryName': 'Total',
24
- 'tecton.element.chartDonut.button.description': 'Use the left and right arrow keys to navigate between slices of the chart. The escape key will reset the chart to its original state.',
25
- 'tecton.element.chartDonut.button.roleDescription': 'Chart button',
26
- });
27
- await page.setContent('<q2-chart-donut></q2-chart-donut>');
20
+ const setupChart = async (page, props = '') => {
21
+ await page.setContent(`<q2-chart-donut ${props}></q2-chart-donut>`);
28
22
  chart = await page.find('q2-chart-donut');
29
- chart.setProperty('data', [
23
+ await chart.setProperty('data', [
30
24
  { value: 1048, name: 'Groceries', id: 'groceries', icon: 'cart' },
31
25
  { value: 735, name: 'Pets', id: 'pets', icon: 'paw' },
32
26
  { value: 580, name: 'Rent', id: 'rent', icon: 'home', color: 'var(--const-stoplight-info)' },
@@ -34,12 +28,22 @@ describe('q2-chart-donut', () => {
34
28
  { value: 300, name: 'Gifts', id: 'gifts', icon: 'gift', color: 'rebeccapurple' },
35
29
  ]);
36
30
  await page.waitForChanges();
31
+ };
32
+ beforeEach(async () => {
33
+ page = await setup({ html: '' });
34
+ await setTestStrings(page, {
35
+ 'tecton.element.chartDonut.button.summaryName': 'Total',
36
+ 'tecton.element.chartDonut.button.description': 'Use the left and right arrow keys to navigate between slices of the chart. The escape key will reset the chart to its original state.',
37
+ 'tecton.element.chartDonut.button.roleDescription': 'Chart button',
38
+ });
37
39
  });
38
40
  it('renders a canvas element', async () => {
41
+ await setupChart(page);
39
42
  const canvas = await page.find('q2-chart-donut >>> canvas');
40
43
  expect(canvas).toBeTruthy();
41
44
  });
42
45
  it('adds color properties to q2-icon', async () => {
46
+ await setupChart(page);
43
47
  const getIconStyleProp = async (page, prop) => page.$eval('q2-chart-donut', (element, [prop]) => {
44
48
  return element.shadowRoot.querySelector('q2-icon').style.getPropertyValue(prop);
45
49
  }, [prop]);
@@ -53,12 +57,14 @@ describe('q2-chart-donut', () => {
53
57
  describe('summaryName', () => {
54
58
  describe('when not provided', () => {
55
59
  it('renders with default value', async () => {
60
+ await setupChart(page);
56
61
  name = await page.find('q2-chart-donut >>> .name');
57
62
  expect(name).toEqualText('Total');
58
63
  });
59
64
  });
60
65
  describe('when provided', () => {
61
66
  it('renders with provided value', async () => {
67
+ await setupChart(page);
62
68
  chart.setProperty('summaryName', 'All The Things');
63
69
  await page.waitForChanges();
64
70
  name = await page.find('q2-chart-donut >>> .name');
@@ -69,12 +75,14 @@ describe('q2-chart-donut', () => {
69
75
  describe('summaryIcon', () => {
70
76
  describe('when not provided', () => {
71
77
  it('does not render', async () => {
78
+ await setupChart(page);
72
79
  icon = await page.find('q2-chart-donut >>> .icon');
73
80
  expect(icon).toBeNull();
74
81
  });
75
82
  });
76
83
  describe('when provided', () => {
77
84
  it('renders with provided value', async () => {
85
+ await setupChart(page);
78
86
  chart.setProperty('summaryIcon', 'coins');
79
87
  await page.waitForChanges();
80
88
  icon = await page.find('q2-chart-donut >>> q2-icon');
@@ -85,12 +93,14 @@ describe('q2-chart-donut', () => {
85
93
  describe('format', () => {
86
94
  describe('when not provided', () => {
87
95
  it('renders default format', async () => {
96
+ await setupChart(page);
88
97
  value = await page.find('q2-chart-donut >>> .value');
89
98
  expect(value).toEqualText('3,147');
90
99
  });
91
100
  });
92
101
  describe('when provided', () => {
93
102
  it('renders as currency', async () => {
103
+ await setupChart(page);
94
104
  chart.setProperty('format', 'currency');
95
105
  await page.waitForChanges();
96
106
  value = await page.find('q2-chart-donut >>> .value');
@@ -101,6 +111,7 @@ describe('q2-chart-donut', () => {
101
111
  describe('isClickable', () => {
102
112
  describe('when not provided', () => {
103
113
  it('renders center content in a div', async () => {
114
+ await setupChart(page);
104
115
  centerCard = await page.find('q2-chart-donut >>> .center-card');
105
116
  expect(centerCard.tagName).toEqualText('DIV');
106
117
  expect(centerCard).not.toHaveAttribute('aria-description');
@@ -109,6 +120,7 @@ describe('q2-chart-donut', () => {
109
120
  });
110
121
  describe('when provided', () => {
111
122
  it('renders center content in a button', async () => {
123
+ await setupChart(page);
112
124
  chart.setProperty('isClickable', true);
113
125
  await page.waitForChanges();
114
126
  centerCard = await page.find('q2-chart-donut >>> .center-card');
@@ -118,11 +130,46 @@ describe('q2-chart-donut', () => {
118
130
  });
119
131
  });
120
132
  });
133
+ describe('minSliceSize', () => {
134
+ const convertSliceSizeToAngle = (sliceSize) => {
135
+ return (parseFloat(sliceSize) / 100) * 360;
136
+ };
137
+ const getMinAngel = async (page) => {
138
+ return page.evaluate(async () => {
139
+ const chartElement = document.querySelector('q2-chart-donut');
140
+ const chartInstance = await chartElement.getChartOptions();
141
+ return chartInstance.series[0].minAngle;
142
+ });
143
+ };
144
+ const sliceSize = '9.5%';
145
+ describe('when not provided', () => {
146
+ it('renders with default value', async () => {
147
+ await setupChart(page);
148
+ const minAngle = await getMinAngel(page);
149
+ expect(minAngle).toEqual(convertSliceSizeToAngle('2.5%'));
150
+ });
151
+ });
152
+ describe('when provided', () => {
153
+ it('on load renders with provided value', async () => {
154
+ await setupChart(page, `min-slice-size="${sliceSize}"`);
155
+ const minAngle = await getMinAngel(page);
156
+ expect(minAngle).toEqual(convertSliceSizeToAngle(sliceSize));
157
+ });
158
+ it('after load renders with provided value', async () => {
159
+ await setupChart(page);
160
+ chart.setProperty('minSliceSize', sliceSize);
161
+ await page.waitForChanges();
162
+ const minAngle = await getMinAngel(page);
163
+ expect(minAngle).toEqual(convertSliceSizeToAngle(sliceSize));
164
+ });
165
+ });
166
+ });
121
167
  });
122
168
  describe('Watchers', () => {
123
169
  describe('innerRadius', () => {
124
170
  describe('when changed to a value greater than outerRadius', () => {
125
171
  it('reverts the value to be 15% less than the outerRadius', async () => {
172
+ await setupChart(page);
126
173
  expect(await chart.getProperty('innerRadius')).toEqual('70%');
127
174
  expect(await chart.getProperty('outerRadius')).toEqual('85%');
128
175
  chart.setProperty('innerRadius', '90%');
@@ -134,6 +181,7 @@ describe('q2-chart-donut', () => {
134
181
  describe('outerRadius', () => {
135
182
  describe('when changed to a value less than innerRadius', () => {
136
183
  it('reverts the value to be 15% more than the innerRadius', async () => {
184
+ await setupChart(page);
137
185
  expect(await chart.getProperty('innerRadius')).toEqual('70%');
138
186
  expect(await chart.getProperty('outerRadius')).toEqual('85%');
139
187
  chart.setProperty('outerRadius', '65%');
@@ -145,6 +193,7 @@ describe('q2-chart-donut', () => {
145
193
  });
146
194
  describe('Methods', () => {
147
195
  beforeEach(async () => {
196
+ await setupChart(page);
148
197
  centerCard = await page.find('q2-chart-donut >>> .center-card');
149
198
  changeSpy = await chart.spyOnEvent('change');
150
199
  });
@@ -231,6 +280,7 @@ describe('q2-chart-donut', () => {
231
280
  });
232
281
  describe('when element is clickable', () => {
233
282
  beforeEach(async () => {
283
+ await setupChart(page);
234
284
  chart.setProperty('isClickable', true);
235
285
  await page.waitForChanges();
236
286
  centerCard = await page.find('q2-chart-donut >>> .center-card');
@@ -293,6 +343,7 @@ describe('q2-chart-donut', () => {
293
343
  });
294
344
  describe('Accessibility', () => {
295
345
  it('renders a descriptive aria-label for the chart', async () => {
346
+ await setupChart(page);
296
347
  chart.setProperty('chartName', 'Recent Spending');
297
348
  await page.waitForChanges();
298
349
  const chartContainer = await page.find('q2-chart-donut >>> .chart-container');
@@ -301,6 +352,7 @@ describe('q2-chart-donut', () => {
301
352
  expect(ariaLabelText).toContain('This is a chart with type Pie chart named Recent Spending.The data is as follows: the data for Groceries is 1048, the data for Pets is 735, the data for Rent is 580, the data for Automobile is 484, the data for Gifts is 300.');
302
353
  });
303
354
  it('renders a descriptive aria-describedby element for the chart', async () => {
355
+ await setupChart(page);
304
356
  chart.setProperty('chartName', 'Recent Spending');
305
357
  chart.setProperty('isClickable', true);
306
358
  await page.waitForChanges();
@@ -310,17 +362,20 @@ describe('q2-chart-donut', () => {
310
362
  });
311
363
  describe('focus', () => {
312
364
  it('does not focus anything when focus event is dispatched', async function () {
365
+ await setupChart(page);
313
366
  chart.triggerEvent('focus');
314
367
  await page.waitForChanges();
315
368
  expect(await getFocusedAttribute(page, 'test-id')).toBeNull();
316
369
  });
317
370
  it('does not focus anything when element.focus() is called', async function () {
371
+ await setupChart(page);
318
372
  await chart.focus();
319
373
  await page.waitForChanges();
320
374
  expect(await getFocusedAttribute(page, 'test-id')).toBeNull();
321
375
  });
322
376
  describe('when element is clickable', () => {
323
377
  beforeEach(async () => {
378
+ await setupChart(page);
324
379
  chart.setProperty('isClickable', true);
325
380
  await page.waitForChanges();
326
381
  });