q2-tecton-elements 1.50.1 → 1.51.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 (578) hide show
  1. package/dist/cjs/click-elsewhere_2.cjs.entry.js +21 -12
  2. package/dist/cjs/click-elsewhere_2.cjs.entry.js.map +1 -1
  3. package/dist/cjs/index-9aa4a776.js +235 -0
  4. package/dist/cjs/index-9aa4a776.js.map +1 -0
  5. package/dist/cjs/{index-43010ce4.js → index-f69742cf.js} +1 -1
  6. package/dist/cjs/{index-43010ce4.js.map → index-f69742cf.js.map} +1 -1
  7. package/dist/cjs/loader.cjs.js +1 -1
  8. package/dist/cjs/q2-action-group.cjs.entry.js +50 -0
  9. package/dist/cjs/q2-action-group.cjs.entry.js.map +1 -0
  10. package/dist/cjs/q2-action-sheet.cjs.entry.js +1364 -3
  11. package/dist/cjs/q2-action-sheet.cjs.entry.js.map +1 -1
  12. package/dist/cjs/q2-avatar.cjs.entry.js +1 -1
  13. package/dist/cjs/q2-badge_7.cjs.entry.js +23 -13
  14. package/dist/cjs/q2-badge_7.cjs.entry.js.map +1 -1
  15. package/dist/cjs/q2-calendar.cjs.entry.js +2 -2
  16. package/dist/cjs/q2-card.cjs.entry.js +1 -1
  17. package/dist/cjs/q2-carousel-pane.cjs.entry.js +3 -3
  18. package/dist/cjs/q2-carousel.cjs.entry.js +1 -1
  19. package/dist/cjs/q2-chart-area.cjs.entry.js +2 -2
  20. package/dist/cjs/q2-chart-area.cjs.entry.js.map +1 -1
  21. package/dist/cjs/q2-chart-bar.cjs.entry.js +2 -2
  22. package/dist/cjs/q2-chart-bar.cjs.entry.js.map +1 -1
  23. package/dist/cjs/q2-chart-donut.cjs.entry.js +16 -16
  24. package/dist/cjs/q2-chart-donut.cjs.entry.js.map +1 -1
  25. package/dist/cjs/q2-checkbox-group.cjs.entry.js +2 -2
  26. package/dist/cjs/q2-checkbox-group.cjs.entry.js.map +1 -1
  27. package/dist/cjs/q2-checkbox.cjs.entry.js +1 -1
  28. package/dist/cjs/q2-currency.cjs.entry.js +1 -1
  29. package/dist/cjs/q2-data-table.cjs.entry.js +62 -62
  30. package/dist/cjs/q2-data-table.cjs.entry.js.map +1 -1
  31. package/dist/cjs/q2-detail.cjs.entry.js +2 -2
  32. package/dist/cjs/q2-dropdown-item.cjs.entry.js +2 -2
  33. package/dist/cjs/q2-dropdown-item.cjs.entry.js.map +1 -1
  34. package/dist/cjs/q2-dropdown.cjs.entry.js +77 -5
  35. package/dist/cjs/q2-dropdown.cjs.entry.js.map +1 -1
  36. package/dist/cjs/q2-editable-field.cjs.entry.js +1 -1
  37. package/dist/cjs/q2-formatted-text.cjs.entry.js +72 -0
  38. package/dist/cjs/q2-formatted-text.cjs.entry.js.map +1 -0
  39. package/dist/cjs/q2-item.cjs.entry.js +2 -2
  40. package/dist/cjs/q2-legend.cjs.entry.js +2 -2
  41. package/dist/cjs/q2-legend.cjs.entry.js.map +1 -1
  42. package/dist/cjs/q2-link.cjs.entry.js +64 -0
  43. package/dist/cjs/q2-link.cjs.entry.js.map +1 -0
  44. package/dist/cjs/q2-list.cjs.entry.js +2 -2
  45. package/dist/cjs/q2-loc.cjs.entry.js +2 -2
  46. package/dist/cjs/q2-message.cjs.entry.js +2 -2
  47. package/dist/cjs/q2-month-picker.cjs.entry.js +3 -3
  48. package/dist/cjs/q2-optgroup.cjs.entry.js +2 -2
  49. package/dist/cjs/q2-option-list.cjs.entry.js +9 -4
  50. package/dist/cjs/q2-option-list.cjs.entry.js.map +1 -1
  51. package/dist/cjs/q2-option.cjs.entry.js +1 -1
  52. package/dist/cjs/q2-pagination.cjs.entry.js +90 -9
  53. package/dist/cjs/q2-pagination.cjs.entry.js.map +1 -1
  54. package/dist/cjs/q2-pill.cjs.entry.js +26 -5
  55. package/dist/cjs/q2-pill.cjs.entry.js.map +1 -1
  56. package/dist/cjs/q2-radio-group.cjs.entry.js +2 -2
  57. package/dist/cjs/q2-radio-group.cjs.entry.js.map +1 -1
  58. package/dist/cjs/q2-radio.cjs.entry.js +1 -1
  59. package/dist/cjs/q2-relative-time.cjs.entry.js +3 -3
  60. package/dist/cjs/q2-resize-observer.cjs.entry.js +96 -0
  61. package/dist/cjs/q2-resize-observer.cjs.entry.js.map +1 -0
  62. package/dist/cjs/q2-section.cjs.entry.js +27 -3
  63. package/dist/cjs/q2-section.cjs.entry.js.map +1 -1
  64. package/dist/cjs/q2-select.cjs.entry.js +7 -6
  65. package/dist/cjs/q2-select.cjs.entry.js.map +1 -1
  66. package/dist/cjs/q2-stepper-pane.cjs.entry.js +1 -1
  67. package/dist/cjs/q2-stepper-vertical.cjs.entry.js +2 -2
  68. package/dist/cjs/q2-stepper.cjs.entry.js +39 -3
  69. package/dist/cjs/q2-stepper.cjs.entry.js.map +1 -1
  70. package/dist/cjs/q2-tag.cjs.entry.js +3 -2
  71. package/dist/cjs/q2-tag.cjs.entry.js.map +1 -1
  72. package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
  73. package/dist/cjs/q2-textarea.cjs.entry.js +46 -11
  74. package/dist/cjs/q2-textarea.cjs.entry.js.map +1 -1
  75. package/dist/cjs/q2-tooltip.cjs.entry.js +2 -2
  76. package/dist/cjs/q2-tooltip.cjs.entry.js.map +1 -1
  77. package/dist/cjs/tecton-tab-pane.cjs.entry.js +2 -2
  78. package/dist/collection/collection-manifest.json +4 -0
  79. package/dist/collection/components/q2-action-group/q2-action-group.css +99 -0
  80. package/dist/collection/components/q2-action-group/q2-action-group.js +120 -0
  81. package/dist/collection/components/q2-action-group/q2-action-group.js.map +1 -0
  82. package/dist/collection/components/q2-action-group/test/q2-action-group.e2e.js +30 -0
  83. package/dist/collection/components/q2-action-group/test/q2-action-group.e2e.js.map +1 -0
  84. package/dist/collection/components/q2-action-group/test/q2-action-group.spec.js +156 -0
  85. package/dist/collection/components/q2-action-group/test/q2-action-group.spec.js.map +1 -0
  86. package/dist/collection/components/q2-action-sheet/q2-action-sheet.js +3 -2
  87. package/dist/collection/components/q2-action-sheet/q2-action-sheet.js.map +1 -1
  88. package/dist/collection/components/q2-avatar/q2-avatar.js +1 -1
  89. package/dist/collection/components/q2-avatar/test/q2-avatar-test.e2e.js +14 -9
  90. package/dist/collection/components/q2-avatar/test/q2-avatar-test.e2e.js.map +1 -1
  91. package/dist/collection/components/q2-badge/test/q2-badge-test.e2e.js +14 -9
  92. package/dist/collection/components/q2-badge/test/q2-badge-test.e2e.js.map +1 -1
  93. package/dist/collection/components/q2-btn/test/q2-btn-test.e2e.js +14 -9
  94. package/dist/collection/components/q2-btn/test/q2-btn-test.e2e.js.map +1 -1
  95. package/dist/collection/components/q2-calendar/q2-month-picker.js +2 -2
  96. package/dist/collection/components/q2-calendar/test/q2-calendar-test.e2e.js +227 -223
  97. package/dist/collection/components/q2-calendar/test/q2-calendar-test.e2e.js.map +1 -1
  98. package/dist/collection/components/q2-card/test/q2-card-test.e2e.js +12 -7
  99. package/dist/collection/components/q2-card/test/q2-card-test.e2e.js.map +1 -1
  100. package/dist/collection/components/q2-carousel/test/q2-carousel-test.e2e.js +49 -45
  101. package/dist/collection/components/q2-carousel/test/q2-carousel-test.e2e.js.map +1 -1
  102. package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.js +2 -2
  103. package/dist/collection/components/q2-chart-area/q2-chart-area.js +2 -2
  104. package/dist/collection/components/q2-chart-area/q2-chart-area.js.map +1 -1
  105. package/dist/collection/components/q2-chart-area/test/q2-chart-area-test.e2e.js +12 -7
  106. package/dist/collection/components/q2-chart-area/test/q2-chart-area-test.e2e.js.map +1 -1
  107. package/dist/collection/components/q2-chart-bar/q2-chart-bar.js +2 -2
  108. package/dist/collection/components/q2-chart-bar/q2-chart-bar.js.map +1 -1
  109. package/dist/collection/components/q2-chart-bar/test/q2-chart-bar-test.e2e.js +16 -11
  110. package/dist/collection/components/q2-chart-bar/test/q2-chart-bar-test.e2e.js.map +1 -1
  111. package/dist/collection/components/q2-chart-donut/q2-chart-donut.js +15 -15
  112. package/dist/collection/components/q2-chart-donut/q2-chart-donut.js.map +1 -1
  113. package/dist/collection/components/q2-chart-donut/test/q2-chart-donut-test.e2e.js +32 -26
  114. package/dist/collection/components/q2-chart-donut/test/q2-chart-donut-test.e2e.js.map +1 -1
  115. package/dist/collection/components/q2-checkbox/test/q2-checkbox-test.e2e.js +12 -7
  116. package/dist/collection/components/q2-checkbox/test/q2-checkbox-test.e2e.js.map +1 -1
  117. package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.js +2 -2
  118. package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.js.map +1 -1
  119. package/dist/collection/components/q2-checkbox-group/test/q2-checkbox-group-test.e2e.js +22 -17
  120. package/dist/collection/components/q2-checkbox-group/test/q2-checkbox-group-test.e2e.js.map +1 -1
  121. package/dist/collection/components/q2-currency/q2-currency.js +1 -1
  122. package/dist/collection/components/q2-currency/test/q2-currency-test.e2e.js +12 -7
  123. package/dist/collection/components/q2-currency/test/q2-currency-test.e2e.js.map +1 -1
  124. package/dist/collection/components/q2-data-table/q2-data-table.js +104 -104
  125. package/dist/collection/components/q2-data-table/q2-data-table.js.map +1 -1
  126. package/dist/collection/components/q2-data-table/test/q2-data-table-test.e2e.js +42 -24
  127. package/dist/collection/components/q2-data-table/test/q2-data-table-test.e2e.js.map +1 -1
  128. package/dist/collection/components/q2-detail/q2-detail.js +1 -1
  129. package/dist/collection/components/q2-detail/test/q2-detail-test.e2e.js +12 -7
  130. package/dist/collection/components/q2-detail/test/q2-detail-test.e2e.js.map +1 -1
  131. package/dist/collection/components/q2-dropdown/q2-dropdown.js +201 -4
  132. package/dist/collection/components/q2-dropdown/q2-dropdown.js.map +1 -1
  133. package/dist/collection/components/q2-dropdown/test/q2-dropdown-test.e2e.js +305 -124
  134. package/dist/collection/components/q2-dropdown/test/q2-dropdown-test.e2e.js.map +1 -1
  135. package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.js +1 -1
  136. package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.js.map +1 -1
  137. package/dist/collection/components/q2-dropdown-item/test/q2-dropdown-item-test.e2e.js +18 -13
  138. package/dist/collection/components/q2-dropdown-item/test/q2-dropdown-item-test.e2e.js.map +1 -1
  139. package/dist/collection/components/q2-editable-field/test/q2-editable-field-test.e2e.js +14 -18
  140. package/dist/collection/components/q2-editable-field/test/q2-editable-field-test.e2e.js.map +1 -1
  141. package/dist/collection/components/q2-formatted-text/q2-formatted-text.css +94 -0
  142. package/dist/collection/components/q2-formatted-text/q2-formatted-text.js +230 -0
  143. package/dist/collection/components/q2-formatted-text/q2-formatted-text.js.map +1 -0
  144. package/dist/collection/components/q2-formatted-text/test/q2-formatted-text-test.e2e.js +430 -0
  145. package/dist/collection/components/q2-formatted-text/test/q2-formatted-text-test.e2e.js.map +1 -0
  146. package/dist/collection/components/q2-icon/test/q2-icon-test.e2e.js +14 -9
  147. package/dist/collection/components/q2-icon/test/q2-icon-test.e2e.js.map +1 -1
  148. package/dist/collection/components/q2-input/q2-input.css +9 -0
  149. package/dist/collection/components/q2-input/q2-input.js +7 -8
  150. package/dist/collection/components/q2-input/q2-input.js.map +1 -1
  151. package/dist/collection/components/q2-input/test/q2-input-test.e2e.js +50 -33
  152. package/dist/collection/components/q2-input/test/q2-input-test.e2e.js.map +1 -1
  153. package/dist/collection/components/q2-item/q2-item.js +1 -1
  154. package/dist/collection/components/q2-item/test/q2-item-test.e2e.js +32 -7
  155. package/dist/collection/components/q2-item/test/q2-item-test.e2e.js.map +1 -1
  156. package/dist/collection/components/q2-legend/q2-legend.css +1 -1
  157. package/dist/collection/components/q2-legend/q2-legend.js +1 -1
  158. package/dist/collection/components/q2-legend/test/q2-legend-test.e2e.js +13 -8
  159. package/dist/collection/components/q2-legend/test/q2-legend-test.e2e.js.map +1 -1
  160. package/dist/collection/components/q2-link/q2-link.css +146 -0
  161. package/dist/collection/components/q2-link/q2-link.js +242 -0
  162. package/dist/collection/components/q2-link/q2-link.js.map +1 -0
  163. package/dist/collection/components/q2-link/test/q2-link-test.e2e.js +145 -0
  164. package/dist/collection/components/q2-link/test/q2-link-test.e2e.js.map +1 -0
  165. package/dist/collection/components/q2-list/q2-list.js +1 -1
  166. package/dist/collection/components/q2-list/test/q2-list-test.e2e.js +12 -7
  167. package/dist/collection/components/q2-list/test/q2-list-test.e2e.js.map +1 -1
  168. package/dist/collection/components/q2-loading/test/q2-loading-element-test.e2e.js +14 -9
  169. package/dist/collection/components/q2-loading/test/q2-loading-element-test.e2e.js.map +1 -1
  170. package/dist/collection/components/q2-loading/test/q2-loading-test.e2e.js +14 -9
  171. package/dist/collection/components/q2-loading/test/q2-loading-test.e2e.js.map +1 -1
  172. package/dist/collection/components/q2-loc/q2-loc.js +1 -1
  173. package/dist/collection/components/q2-loc/test/q2-loc-test.e2e.js +16 -11
  174. package/dist/collection/components/q2-loc/test/q2-loc-test.e2e.js.map +1 -1
  175. package/dist/collection/components/q2-message/q2-message.js +1 -1
  176. package/dist/collection/components/q2-message/test/q2-message-test.e2e.js +14 -9
  177. package/dist/collection/components/q2-message/test/q2-message-test.e2e.js.map +1 -1
  178. package/dist/collection/components/q2-optgroup/q2-optgroup.js +1 -1
  179. package/dist/collection/components/q2-optgroup/test/q2-optgroup-test.e2e.js +20 -13
  180. package/dist/collection/components/q2-optgroup/test/q2-optgroup-test.e2e.js.map +1 -1
  181. package/dist/collection/components/q2-option/q2-option.js +1 -1
  182. package/dist/collection/components/q2-option/test/q2-option-test.e2e.js +28 -12
  183. package/dist/collection/components/q2-option/test/q2-option-test.e2e.js.map +1 -1
  184. package/dist/collection/components/q2-option-list/q2-option-list.js +7 -5
  185. package/dist/collection/components/q2-option-list/q2-option-list.js.map +1 -1
  186. package/dist/collection/components/q2-option-list/test/q2-option-list-test.e2e.js +415 -405
  187. package/dist/collection/components/q2-option-list/test/q2-option-list-test.e2e.js.map +1 -1
  188. package/dist/collection/components/q2-pagination/q2-pagination.js +230 -14
  189. package/dist/collection/components/q2-pagination/q2-pagination.js.map +1 -1
  190. package/dist/collection/components/q2-pagination/test/q2-pagination-test.e2e.js +138 -15
  191. package/dist/collection/components/q2-pagination/test/q2-pagination-test.e2e.js.map +1 -1
  192. package/dist/collection/components/q2-pill/q2-pill.css +12 -0
  193. package/dist/collection/components/q2-pill/q2-pill.js +43 -3
  194. package/dist/collection/components/q2-pill/q2-pill.js.map +1 -1
  195. package/dist/collection/components/q2-pill/test/q2-pill-test.e2e.js +412 -212
  196. package/dist/collection/components/q2-pill/test/q2-pill-test.e2e.js.map +1 -1
  197. package/dist/collection/components/q2-popover/q2-popover.js +37 -11
  198. package/dist/collection/components/q2-popover/q2-popover.js.map +1 -1
  199. package/dist/collection/components/q2-popover/test/q2-popover-test.e2e.js +296 -236
  200. package/dist/collection/components/q2-popover/test/q2-popover-test.e2e.js.map +1 -1
  201. package/dist/collection/components/q2-popover/test/q2-popover-test.spec.js +3 -3
  202. package/dist/collection/components/q2-popover/test/q2-popover-test.spec.js.map +1 -1
  203. package/dist/collection/components/q2-radio/test/q2-radio-test.e2e.js +21 -7
  204. package/dist/collection/components/q2-radio/test/q2-radio-test.e2e.js.map +1 -1
  205. package/dist/collection/components/q2-radio-group/q2-radio-group.js +2 -2
  206. package/dist/collection/components/q2-radio-group/q2-radio-group.js.map +1 -1
  207. package/dist/collection/components/q2-radio-group/test/q2-radio-group-test.e2e.js +32 -26
  208. package/dist/collection/components/q2-radio-group/test/q2-radio-group-test.e2e.js.map +1 -1
  209. package/dist/collection/components/q2-relative-time/q2-relative-time.js +1 -1
  210. package/dist/collection/components/q2-relative-time/test/q2-relative-time-test.e2e.js +12 -7
  211. package/dist/collection/components/q2-relative-time/test/q2-relative-time-test.e2e.js.map +1 -1
  212. package/dist/collection/components/q2-resize-observer/q2-resize-observer.css +71 -0
  213. package/dist/collection/components/q2-resize-observer/q2-resize-observer.js +166 -0
  214. package/dist/collection/components/q2-resize-observer/q2-resize-observer.js.map +1 -0
  215. package/dist/collection/components/q2-resize-observer/test/q2-resize-observer.e2e.js +83 -0
  216. package/dist/collection/components/q2-resize-observer/test/q2-resize-observer.e2e.js.map +1 -0
  217. package/dist/collection/components/q2-resize-observer/test/q2-resize-observer.spec.js +66 -0
  218. package/dist/collection/components/q2-resize-observer/test/q2-resize-observer.spec.js.map +1 -0
  219. package/dist/collection/components/q2-section/q2-section.js +78 -2
  220. package/dist/collection/components/q2-section/q2-section.js.map +1 -1
  221. package/dist/collection/components/q2-section/test/q2-section-test.e2e.js +39 -9
  222. package/dist/collection/components/q2-section/test/q2-section-test.e2e.js.map +1 -1
  223. package/dist/collection/components/q2-select/q2-select.js +23 -5
  224. package/dist/collection/components/q2-select/q2-select.js.map +1 -1
  225. package/dist/collection/components/q2-select/test/q2-select-test.e2e.js +695 -676
  226. package/dist/collection/components/q2-select/test/q2-select-test.e2e.js.map +1 -1
  227. package/dist/collection/components/q2-stepper/q2-stepper.js +76 -2
  228. package/dist/collection/components/q2-stepper/q2-stepper.js.map +1 -1
  229. package/dist/collection/components/q2-stepper/test/q2-stepper-test.e2e.js +183 -87
  230. package/dist/collection/components/q2-stepper/test/q2-stepper-test.e2e.js.map +1 -1
  231. package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.js +2 -2
  232. package/dist/collection/components/q2-stepper-pane/test/q2-stepper-pane-test.e2e.js +20 -9
  233. package/dist/collection/components/q2-stepper-pane/test/q2-stepper-pane-test.e2e.js.map +1 -1
  234. package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js +1 -1
  235. package/dist/collection/components/q2-stepper-vertical/test/q2-stepper-vertical-test.e2e.js +71 -67
  236. package/dist/collection/components/q2-stepper-vertical/test/q2-stepper-vertical-test.e2e.js.map +1 -1
  237. package/dist/collection/components/q2-tab-container/q2-tab-container.js +50 -7
  238. package/dist/collection/components/q2-tab-container/q2-tab-container.js.map +1 -1
  239. package/dist/collection/components/q2-tab-container/test/q2-tab-container-test.e2e.js +89 -65
  240. package/dist/collection/components/q2-tab-container/test/q2-tab-container-test.e2e.js.map +1 -1
  241. package/dist/collection/components/q2-tab-pane/q2-tab-pane.js +1 -1
  242. package/dist/collection/components/q2-tab-pane/test/q2-tab-pane-test.e2e.js +14 -9
  243. package/dist/collection/components/q2-tab-pane/test/q2-tab-pane-test.e2e.js.map +1 -1
  244. package/dist/collection/components/q2-tag/q2-tag.js +19 -1
  245. package/dist/collection/components/q2-tag/q2-tag.js.map +1 -1
  246. package/dist/collection/components/q2-tag/test/q2-tag-test.e2e.js +47 -28
  247. package/dist/collection/components/q2-tag/test/q2-tag-test.e2e.js.map +1 -1
  248. package/dist/collection/components/q2-textarea/q2-textarea.js +51 -13
  249. package/dist/collection/components/q2-textarea/q2-textarea.js.map +1 -1
  250. package/dist/collection/components/q2-textarea/test/q2-textarea-test.e2e.js +31 -10
  251. package/dist/collection/components/q2-textarea/test/q2-textarea-test.e2e.js.map +1 -1
  252. package/dist/collection/components/q2-tooltip/q2-tooltip.css +5 -2
  253. package/dist/collection/components/q2-tooltip/test/q2-tooltip-test.e2e.js +51 -13
  254. package/dist/collection/components/q2-tooltip/test/q2-tooltip-test.e2e.js.map +1 -1
  255. package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js +2 -2
  256. package/dist/collection/components/tecton-tab-pane/test/tecton-tab-pane-test.e2e.js +18 -13
  257. package/dist/collection/components/tecton-tab-pane/test/tecton-tab-pane-test.e2e.js.map +1 -1
  258. package/dist/collection/utils/helpers.js +65 -0
  259. package/dist/collection/utils/helpers.js.map +1 -1
  260. package/dist/collection/utils/index.js +11 -11
  261. package/dist/collection/utils/index.js.map +1 -1
  262. package/dist/collection/utils/sanitize-html-string.js +10 -0
  263. package/dist/collection/utils/sanitize-html-string.js.map +1 -0
  264. package/dist/collection/utils/sanitize-regex-string.js +4 -0
  265. package/dist/collection/utils/sanitize-regex-string.js.map +1 -0
  266. package/dist/components/index.js +8 -0
  267. package/dist/components/index.js.map +1 -1
  268. package/dist/components/index2.js +11 -1356
  269. package/dist/components/index2.js.map +1 -1
  270. package/dist/components/q2-action-group.d.ts +11 -0
  271. package/dist/components/q2-action-group.js +75 -0
  272. package/dist/components/q2-action-group.js.map +1 -0
  273. package/dist/components/q2-action-sheet.js +1363 -2
  274. package/dist/components/q2-action-sheet.js.map +1 -1
  275. package/dist/components/q2-avatar2.js +1 -1
  276. package/dist/components/q2-btn2.js +1 -1
  277. package/dist/components/q2-carousel-pane.js +2 -2
  278. package/dist/components/q2-chart-area.js +1 -1
  279. package/dist/components/q2-chart-area.js.map +1 -1
  280. package/dist/components/q2-chart-bar.js +1 -1
  281. package/dist/components/q2-chart-bar.js.map +1 -1
  282. package/dist/components/q2-chart-donut.js +15 -15
  283. package/dist/components/q2-chart-donut.js.map +1 -1
  284. package/dist/components/q2-checkbox-group.js +2 -2
  285. package/dist/components/q2-checkbox-group.js.map +1 -1
  286. package/dist/components/q2-currency.js +1 -1
  287. package/dist/components/q2-data-table.js +64 -64
  288. package/dist/components/q2-data-table.js.map +1 -1
  289. package/dist/components/q2-detail.js +1 -1
  290. package/dist/components/q2-dropdown-item2.js +1 -1
  291. package/dist/components/q2-dropdown-item2.js.map +1 -1
  292. package/dist/components/q2-dropdown.js +82 -5
  293. package/dist/components/q2-dropdown.js.map +1 -1
  294. package/dist/components/q2-formatted-text.d.ts +11 -0
  295. package/dist/components/q2-formatted-text.js +101 -0
  296. package/dist/components/q2-formatted-text.js.map +1 -0
  297. package/dist/components/q2-input2.js +4 -5
  298. package/dist/components/q2-input2.js.map +1 -1
  299. package/dist/components/q2-item.js +1 -1
  300. package/dist/components/q2-legend2.js +2 -2
  301. package/dist/components/q2-legend2.js.map +1 -1
  302. package/dist/components/q2-link.d.ts +11 -0
  303. package/dist/components/q2-link.js +93 -0
  304. package/dist/components/q2-link.js.map +1 -0
  305. package/dist/components/q2-list.js +1 -1
  306. package/dist/components/q2-loc.js +1 -1
  307. package/dist/components/q2-message2.js +1 -1
  308. package/dist/components/q2-month-picker.js +2 -2
  309. package/dist/components/q2-optgroup2.js +1 -1
  310. package/dist/components/q2-option-list2.js +8 -3
  311. package/dist/components/q2-option-list2.js.map +1 -1
  312. package/dist/components/q2-option2.js +1 -1
  313. package/dist/components/q2-pagination.js +97 -10
  314. package/dist/components/q2-pagination.js.map +1 -1
  315. package/dist/components/q2-pill.js +29 -5
  316. package/dist/components/q2-pill.js.map +1 -1
  317. package/dist/components/q2-popover2.js +22 -12
  318. package/dist/components/q2-popover2.js.map +1 -1
  319. package/dist/components/q2-radio-group.js +2 -2
  320. package/dist/components/q2-radio-group.js.map +1 -1
  321. package/dist/components/q2-relative-time.js +1 -1
  322. package/dist/components/q2-resize-observer.d.ts +11 -0
  323. package/dist/components/q2-resize-observer.js +8 -0
  324. package/dist/components/q2-resize-observer.js.map +1 -0
  325. package/dist/components/q2-resize-observer2.js +112 -0
  326. package/dist/components/q2-resize-observer2.js.map +1 -0
  327. package/dist/components/q2-section.js +30 -4
  328. package/dist/components/q2-section.js.map +1 -1
  329. package/dist/components/q2-select2.js +7 -5
  330. package/dist/components/q2-select2.js.map +1 -1
  331. package/dist/components/q2-stepper-vertical.js +1 -1
  332. package/dist/components/q2-stepper.js +40 -3
  333. package/dist/components/q2-stepper.js.map +1 -1
  334. package/dist/components/q2-tab-container.js +20 -8
  335. package/dist/components/q2-tab-container.js.map +1 -1
  336. package/dist/components/q2-tab-pane.js +1 -1
  337. package/dist/components/q2-tag.js +3 -1
  338. package/dist/components/q2-tag.js.map +1 -1
  339. package/dist/components/q2-textarea.js +49 -12
  340. package/dist/components/q2-textarea.js.map +1 -1
  341. package/dist/components/q2-tooltip.js +1 -1
  342. package/dist/components/q2-tooltip.js.map +1 -1
  343. package/dist/components/tecton-tab-pane.js +2 -2
  344. package/dist/esm/click-elsewhere_2.entry.js +21 -12
  345. package/dist/esm/click-elsewhere_2.entry.js.map +1 -1
  346. package/dist/esm/{index-c6d74f10.js → index-3184c760.js} +1 -1
  347. package/dist/esm/{index-c6d74f10.js.map → index-3184c760.js.map} +1 -1
  348. package/dist/esm/index-844fc010.js +211 -0
  349. package/dist/esm/index-844fc010.js.map +1 -0
  350. package/dist/esm/loader.js +1 -1
  351. package/dist/esm/q2-action-group.entry.js +46 -0
  352. package/dist/esm/q2-action-group.entry.js.map +1 -0
  353. package/dist/esm/q2-action-sheet.entry.js +1363 -2
  354. package/dist/esm/q2-action-sheet.entry.js.map +1 -1
  355. package/dist/esm/q2-avatar.entry.js +1 -1
  356. package/dist/esm/q2-badge_7.entry.js +23 -13
  357. package/dist/esm/q2-badge_7.entry.js.map +1 -1
  358. package/dist/esm/q2-calendar.entry.js +2 -2
  359. package/dist/esm/q2-card.entry.js +1 -1
  360. package/dist/esm/q2-carousel-pane.entry.js +3 -3
  361. package/dist/esm/q2-carousel.entry.js +1 -1
  362. package/dist/esm/q2-chart-area.entry.js +2 -2
  363. package/dist/esm/q2-chart-area.entry.js.map +1 -1
  364. package/dist/esm/q2-chart-bar.entry.js +2 -2
  365. package/dist/esm/q2-chart-bar.entry.js.map +1 -1
  366. package/dist/esm/q2-chart-donut.entry.js +16 -16
  367. package/dist/esm/q2-chart-donut.entry.js.map +1 -1
  368. package/dist/esm/q2-checkbox-group.entry.js +2 -2
  369. package/dist/esm/q2-checkbox-group.entry.js.map +1 -1
  370. package/dist/esm/q2-checkbox.entry.js +1 -1
  371. package/dist/esm/q2-currency.entry.js +1 -1
  372. package/dist/esm/q2-data-table.entry.js +62 -62
  373. package/dist/esm/q2-data-table.entry.js.map +1 -1
  374. package/dist/esm/q2-detail.entry.js +2 -2
  375. package/dist/esm/q2-dropdown-item.entry.js +2 -2
  376. package/dist/esm/q2-dropdown-item.entry.js.map +1 -1
  377. package/dist/esm/q2-dropdown.entry.js +77 -5
  378. package/dist/esm/q2-dropdown.entry.js.map +1 -1
  379. package/dist/esm/q2-editable-field.entry.js +1 -1
  380. package/dist/esm/q2-formatted-text.entry.js +68 -0
  381. package/dist/esm/q2-formatted-text.entry.js.map +1 -0
  382. package/dist/esm/q2-item.entry.js +2 -2
  383. package/dist/esm/q2-legend.entry.js +2 -2
  384. package/dist/esm/q2-legend.entry.js.map +1 -1
  385. package/dist/esm/q2-link.entry.js +60 -0
  386. package/dist/esm/q2-link.entry.js.map +1 -0
  387. package/dist/esm/q2-list.entry.js +2 -2
  388. package/dist/esm/q2-loc.entry.js +2 -2
  389. package/dist/esm/q2-message.entry.js +2 -2
  390. package/dist/esm/q2-month-picker.entry.js +3 -3
  391. package/dist/esm/q2-optgroup.entry.js +2 -2
  392. package/dist/esm/q2-option-list.entry.js +9 -4
  393. package/dist/esm/q2-option-list.entry.js.map +1 -1
  394. package/dist/esm/q2-option.entry.js +1 -1
  395. package/dist/esm/q2-pagination.entry.js +90 -9
  396. package/dist/esm/q2-pagination.entry.js.map +1 -1
  397. package/dist/esm/q2-pill.entry.js +26 -5
  398. package/dist/esm/q2-pill.entry.js.map +1 -1
  399. package/dist/esm/q2-radio-group.entry.js +2 -2
  400. package/dist/esm/q2-radio-group.entry.js.map +1 -1
  401. package/dist/esm/q2-radio.entry.js +1 -1
  402. package/dist/esm/q2-relative-time.entry.js +3 -3
  403. package/dist/esm/q2-resize-observer.entry.js +92 -0
  404. package/dist/esm/q2-resize-observer.entry.js.map +1 -0
  405. package/dist/esm/q2-section.entry.js +27 -3
  406. package/dist/esm/q2-section.entry.js.map +1 -1
  407. package/dist/esm/q2-select.entry.js +7 -6
  408. package/dist/esm/q2-select.entry.js.map +1 -1
  409. package/dist/esm/q2-stepper-pane.entry.js +1 -1
  410. package/dist/esm/q2-stepper-vertical.entry.js +2 -2
  411. package/dist/esm/q2-stepper.entry.js +39 -3
  412. package/dist/esm/q2-stepper.entry.js.map +1 -1
  413. package/dist/esm/q2-tag.entry.js +3 -2
  414. package/dist/esm/q2-tag.entry.js.map +1 -1
  415. package/dist/esm/q2-tecton-elements.js +1 -1
  416. package/dist/esm/q2-textarea.entry.js +47 -12
  417. package/dist/esm/q2-textarea.entry.js.map +1 -1
  418. package/dist/esm/q2-tooltip.entry.js +2 -2
  419. package/dist/esm/q2-tooltip.entry.js.map +1 -1
  420. package/dist/esm/tecton-tab-pane.entry.js +2 -2
  421. package/dist/q2-tecton-elements/{p-0a3a804a.entry.js → p-06701928.entry.js} +2 -2
  422. package/dist/q2-tecton-elements/{p-0a3a804a.entry.js.map → p-06701928.entry.js.map} +1 -1
  423. package/dist/q2-tecton-elements/{p-5d936af5.entry.js → p-07d1c3ae.entry.js} +2 -2
  424. package/dist/q2-tecton-elements/p-15ac45d6.js +2 -0
  425. package/dist/q2-tecton-elements/p-15ac45d6.js.map +1 -0
  426. package/dist/q2-tecton-elements/{p-ce4e6b41.entry.js → p-16910682.entry.js} +2 -2
  427. package/dist/q2-tecton-elements/p-16910682.entry.js.map +1 -0
  428. package/dist/q2-tecton-elements/p-188eb162.entry.js +3 -0
  429. package/dist/q2-tecton-elements/p-188eb162.entry.js.map +1 -0
  430. package/dist/q2-tecton-elements/{p-58cafc0d.entry.js → p-1c760a89.entry.js} +2 -2
  431. package/dist/q2-tecton-elements/{p-074ae80c.entry.js → p-1c88d057.entry.js} +2 -2
  432. package/dist/q2-tecton-elements/{p-3b0d3cd4.entry.js → p-20a3d6ed.entry.js} +2 -2
  433. package/dist/q2-tecton-elements/p-20a3d6ed.entry.js.map +1 -0
  434. package/dist/q2-tecton-elements/{p-77a0cc0c.entry.js → p-2733583e.entry.js} +2 -2
  435. package/dist/q2-tecton-elements/{p-4116579f.entry.js → p-3e428290.entry.js} +2 -2
  436. package/dist/q2-tecton-elements/p-3e428290.entry.js.map +1 -0
  437. package/dist/q2-tecton-elements/{p-072c5877.entry.js → p-4774e5b3.entry.js} +2 -2
  438. package/dist/q2-tecton-elements/{p-77272c4c.entry.js → p-490ef8e5.entry.js} +2 -2
  439. package/dist/q2-tecton-elements/{p-0a1dff75.entry.js → p-4e10550d.entry.js} +2 -2
  440. package/dist/q2-tecton-elements/p-4e10550d.entry.js.map +1 -0
  441. package/dist/q2-tecton-elements/{p-2ca6d44f.entry.js → p-50f7328f.entry.js} +2 -2
  442. package/dist/q2-tecton-elements/p-5637c486.entry.js +2 -0
  443. package/dist/q2-tecton-elements/p-5637c486.entry.js.map +1 -0
  444. package/dist/q2-tecton-elements/p-56df21b0.entry.js +2 -0
  445. package/dist/q2-tecton-elements/p-56df21b0.entry.js.map +1 -0
  446. package/dist/q2-tecton-elements/{p-34856c71.entry.js → p-5a834214.entry.js} +2 -2
  447. package/dist/q2-tecton-elements/{p-34856c71.entry.js.map → p-5a834214.entry.js.map} +1 -1
  448. package/dist/q2-tecton-elements/p-5f99a4a8.entry.js +2 -0
  449. package/dist/q2-tecton-elements/p-5f99a4a8.entry.js.map +1 -0
  450. package/dist/q2-tecton-elements/p-72d948b4.entry.js +2 -0
  451. package/dist/q2-tecton-elements/p-72d948b4.entry.js.map +1 -0
  452. package/dist/q2-tecton-elements/{p-3c7be0bb.entry.js → p-7903cd15.entry.js} +2 -2
  453. package/dist/q2-tecton-elements/p-7903cd15.entry.js.map +1 -0
  454. package/dist/q2-tecton-elements/{p-d2e1631a.entry.js → p-7906f49e.entry.js} +2 -2
  455. package/dist/q2-tecton-elements/{p-d2e1631a.entry.js.map → p-7906f49e.entry.js.map} +1 -1
  456. package/dist/q2-tecton-elements/{p-2fcaf2d6.entry.js → p-7aef0c08.entry.js} +2 -2
  457. package/dist/q2-tecton-elements/{p-8a4b106d.entry.js → p-7c9a0122.entry.js} +2 -2
  458. package/dist/q2-tecton-elements/p-7c9f8b62.entry.js +2 -0
  459. package/dist/q2-tecton-elements/p-7c9f8b62.entry.js.map +1 -0
  460. package/dist/q2-tecton-elements/{p-cf32b5db.entry.js → p-81fbe718.entry.js} +2 -2
  461. package/dist/q2-tecton-elements/p-81fbe718.entry.js.map +1 -0
  462. package/dist/q2-tecton-elements/{p-6237c775.entry.js → p-896c7008.entry.js} +2 -2
  463. package/dist/q2-tecton-elements/{p-395904b4.entry.js → p-8d07cf91.entry.js} +2 -2
  464. package/dist/q2-tecton-elements/{p-fffb54e9.entry.js → p-8d2b02e1.entry.js} +2 -2
  465. package/dist/q2-tecton-elements/{p-6e6d9793.entry.js → p-95a7c042.entry.js} +2 -2
  466. package/dist/q2-tecton-elements/{p-45407ecc.entry.js → p-96b1406c.entry.js} +2 -2
  467. package/dist/q2-tecton-elements/{p-cb3f48de.entry.js → p-a47597dd.entry.js} +2 -2
  468. package/dist/q2-tecton-elements/p-a47597dd.entry.js.map +1 -0
  469. package/dist/q2-tecton-elements/p-a5d0e252.entry.js +2 -0
  470. package/dist/q2-tecton-elements/p-a5d0e252.entry.js.map +1 -0
  471. package/dist/q2-tecton-elements/{p-2c26295e.entry.js → p-ac6aa392.entry.js} +2 -2
  472. package/dist/q2-tecton-elements/{p-376a0589.entry.js → p-ad057d10.entry.js} +2 -2
  473. package/dist/q2-tecton-elements/p-ad798287.entry.js +2 -0
  474. package/dist/q2-tecton-elements/p-ad798287.entry.js.map +1 -0
  475. package/dist/q2-tecton-elements/{p-ad998f71.entry.js → p-b0e5e9dc.entry.js} +2 -2
  476. package/dist/q2-tecton-elements/p-b0e5e9dc.entry.js.map +1 -0
  477. package/dist/q2-tecton-elements/{p-34696e3f.entry.js → p-b1784be3.entry.js} +2 -2
  478. package/dist/q2-tecton-elements/{p-259b728a.entry.js → p-b7de110e.entry.js} +2 -2
  479. package/dist/q2-tecton-elements/{p-8111547c.entry.js → p-c235ab3f.entry.js} +2 -2
  480. package/dist/q2-tecton-elements/p-c5667d5d.entry.js +2 -0
  481. package/dist/q2-tecton-elements/p-c5667d5d.entry.js.map +1 -0
  482. package/dist/q2-tecton-elements/{p-c81d299a.entry.js → p-e216ef3f.entry.js} +2 -2
  483. package/dist/q2-tecton-elements/p-e2c800ef.entry.js +2 -0
  484. package/dist/q2-tecton-elements/p-e2c800ef.entry.js.map +1 -0
  485. package/dist/q2-tecton-elements/p-f135b265.entry.js +2 -0
  486. package/dist/q2-tecton-elements/p-f135b265.entry.js.map +1 -0
  487. package/dist/q2-tecton-elements/{p-721365be.js → p-f1e887f5.js} +1 -1
  488. package/dist/q2-tecton-elements/{p-6b7c53a8.entry.js → p-f5f23659.entry.js} +2 -2
  489. package/dist/q2-tecton-elements/p-f7867f21.entry.js +2 -0
  490. package/dist/q2-tecton-elements/p-f7867f21.entry.js.map +1 -0
  491. package/dist/q2-tecton-elements/p-ff8f1a32.entry.js +2 -0
  492. package/dist/q2-tecton-elements/p-ff8f1a32.entry.js.map +1 -0
  493. package/dist/q2-tecton-elements/p-fff01dc1.entry.js +2 -0
  494. package/dist/q2-tecton-elements/p-fff01dc1.entry.js.map +1 -0
  495. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
  496. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js.map +1 -1
  497. package/dist/types/components/q2-action-group/q2-action-group.d.ts +30 -0
  498. package/dist/types/components/q2-chart-area/q2-chart-area.d.ts +1 -1
  499. package/dist/types/components/q2-chart-bar/q2-chart-bar.d.ts +1 -1
  500. package/dist/types/components/q2-chart-donut/q2-chart-donut.d.ts +2 -0
  501. package/dist/types/components/q2-data-table/q2-data-table.d.ts +15 -13
  502. package/dist/types/components/q2-dropdown/q2-dropdown.d.ts +36 -0
  503. package/dist/types/components/q2-formatted-text/q2-formatted-text.d.ts +34 -0
  504. package/dist/types/components/q2-input/q2-input.d.ts +10 -9
  505. package/dist/types/components/q2-legend/q2-legend.d.ts +1 -0
  506. package/dist/types/components/q2-link/q2-link.d.ts +36 -0
  507. package/dist/types/components/q2-pagination/q2-pagination.d.ts +60 -3
  508. package/dist/types/components/q2-pill/q2-pill.d.ts +11 -0
  509. package/dist/types/components/q2-popover/q2-popover.d.ts +7 -1
  510. package/dist/types/components/q2-resize-observer/q2-resize-observer.d.ts +28 -0
  511. package/dist/types/components/q2-section/q2-section.d.ts +12 -0
  512. package/dist/types/components/q2-select/q2-select.d.ts +5 -0
  513. package/dist/types/components/q2-stepper/q2-stepper.d.ts +10 -1
  514. package/dist/types/components/q2-tab-container/q2-tab-container.d.ts +8 -2
  515. package/dist/types/components/q2-tag/q2-tag.d.ts +5 -0
  516. package/dist/types/components/q2-textarea/q2-textarea.d.ts +8 -3
  517. package/dist/types/components.d.ts +394 -18
  518. package/dist/types/utils/helpers.d.ts +28 -0
  519. package/dist/types/utils/index.d.ts +3 -3
  520. package/dist/types/utils/sanitize-html-string.d.ts +1 -0
  521. package/dist/types/utils/sanitize-regex-string.d.ts +1 -0
  522. package/package.json +4 -4
  523. package/dist/cjs/index-64d8b839.js +0 -1580
  524. package/dist/cjs/index-64d8b839.js.map +0 -1
  525. package/dist/esm/index-4a80972c.js +0 -1556
  526. package/dist/esm/index-4a80972c.js.map +0 -1
  527. package/dist/q2-tecton-elements/p-0a1dff75.entry.js.map +0 -1
  528. package/dist/q2-tecton-elements/p-3b0d3cd4.entry.js.map +0 -1
  529. package/dist/q2-tecton-elements/p-3c7be0bb.entry.js.map +0 -1
  530. package/dist/q2-tecton-elements/p-403bf3d4.entry.js +0 -2
  531. package/dist/q2-tecton-elements/p-403bf3d4.entry.js.map +0 -1
  532. package/dist/q2-tecton-elements/p-4116579f.entry.js.map +0 -1
  533. package/dist/q2-tecton-elements/p-661ed976.entry.js +0 -2
  534. package/dist/q2-tecton-elements/p-661ed976.entry.js.map +0 -1
  535. package/dist/q2-tecton-elements/p-9a1a4bc0.js +0 -3
  536. package/dist/q2-tecton-elements/p-9a1a4bc0.js.map +0 -1
  537. package/dist/q2-tecton-elements/p-a7a0b8aa.entry.js +0 -2
  538. package/dist/q2-tecton-elements/p-a7a0b8aa.entry.js.map +0 -1
  539. package/dist/q2-tecton-elements/p-aa57b657.entry.js +0 -2
  540. package/dist/q2-tecton-elements/p-aa57b657.entry.js.map +0 -1
  541. package/dist/q2-tecton-elements/p-ad998f71.entry.js.map +0 -1
  542. package/dist/q2-tecton-elements/p-adec9275.entry.js +0 -2
  543. package/dist/q2-tecton-elements/p-adec9275.entry.js.map +0 -1
  544. package/dist/q2-tecton-elements/p-adf0a7c9.entry.js +0 -2
  545. package/dist/q2-tecton-elements/p-adf0a7c9.entry.js.map +0 -1
  546. package/dist/q2-tecton-elements/p-b72fd065.entry.js +0 -2
  547. package/dist/q2-tecton-elements/p-b72fd065.entry.js.map +0 -1
  548. package/dist/q2-tecton-elements/p-c0c658d1.entry.js +0 -2
  549. package/dist/q2-tecton-elements/p-c0c658d1.entry.js.map +0 -1
  550. package/dist/q2-tecton-elements/p-cb3f48de.entry.js.map +0 -1
  551. package/dist/q2-tecton-elements/p-ce4e6b41.entry.js.map +0 -1
  552. package/dist/q2-tecton-elements/p-cf32b5db.entry.js.map +0 -1
  553. package/dist/q2-tecton-elements/p-cf966a0f.entry.js +0 -2
  554. package/dist/q2-tecton-elements/p-cf966a0f.entry.js.map +0 -1
  555. package/dist/q2-tecton-elements/p-dc77bf66.entry.js +0 -2
  556. package/dist/q2-tecton-elements/p-dc77bf66.entry.js.map +0 -1
  557. /package/dist/q2-tecton-elements/{p-5d936af5.entry.js.map → p-07d1c3ae.entry.js.map} +0 -0
  558. /package/dist/q2-tecton-elements/{p-58cafc0d.entry.js.map → p-1c760a89.entry.js.map} +0 -0
  559. /package/dist/q2-tecton-elements/{p-074ae80c.entry.js.map → p-1c88d057.entry.js.map} +0 -0
  560. /package/dist/q2-tecton-elements/{p-77a0cc0c.entry.js.map → p-2733583e.entry.js.map} +0 -0
  561. /package/dist/q2-tecton-elements/{p-072c5877.entry.js.map → p-4774e5b3.entry.js.map} +0 -0
  562. /package/dist/q2-tecton-elements/{p-77272c4c.entry.js.map → p-490ef8e5.entry.js.map} +0 -0
  563. /package/dist/q2-tecton-elements/{p-2ca6d44f.entry.js.map → p-50f7328f.entry.js.map} +0 -0
  564. /package/dist/q2-tecton-elements/{p-2fcaf2d6.entry.js.map → p-7aef0c08.entry.js.map} +0 -0
  565. /package/dist/q2-tecton-elements/{p-8a4b106d.entry.js.map → p-7c9a0122.entry.js.map} +0 -0
  566. /package/dist/q2-tecton-elements/{p-6237c775.entry.js.map → p-896c7008.entry.js.map} +0 -0
  567. /package/dist/q2-tecton-elements/{p-395904b4.entry.js.map → p-8d07cf91.entry.js.map} +0 -0
  568. /package/dist/q2-tecton-elements/{p-fffb54e9.entry.js.map → p-8d2b02e1.entry.js.map} +0 -0
  569. /package/dist/q2-tecton-elements/{p-6e6d9793.entry.js.map → p-95a7c042.entry.js.map} +0 -0
  570. /package/dist/q2-tecton-elements/{p-45407ecc.entry.js.map → p-96b1406c.entry.js.map} +0 -0
  571. /package/dist/q2-tecton-elements/{p-2c26295e.entry.js.map → p-ac6aa392.entry.js.map} +0 -0
  572. /package/dist/q2-tecton-elements/{p-376a0589.entry.js.map → p-ad057d10.entry.js.map} +0 -0
  573. /package/dist/q2-tecton-elements/{p-34696e3f.entry.js.map → p-b1784be3.entry.js.map} +0 -0
  574. /package/dist/q2-tecton-elements/{p-259b728a.entry.js.map → p-b7de110e.entry.js.map} +0 -0
  575. /package/dist/q2-tecton-elements/{p-8111547c.entry.js.map → p-c235ab3f.entry.js.map} +0 -0
  576. /package/dist/q2-tecton-elements/{p-c81d299a.entry.js.map → p-e216ef3f.entry.js.map} +0 -0
  577. /package/dist/q2-tecton-elements/{p-721365be.js.map → p-f1e887f5.js.map} +0 -0
  578. /package/dist/q2-tecton-elements/{p-6b7c53a8.entry.js.map → p-f5f23659.entry.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"q2-dropdown-test.e2e.js","sourceRoot":"","sources":["../../../../src/components/q2-dropdown/test/q2-dropdown-test.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { E2EElement, E2EPage, EventSpy, newSpecPage } from '@stencil/core/testing';\nimport {\n setTestStrings,\n setup,\n dispatchEvent,\n testDeprecatedAriaLabel,\n getNestedElementProperty,\n getListOfStyleCompilationIssues,\n evaluateA11y,\n} from '@/utils/helpers';\nimport { Q2Popover } from 'src/components/q2-popover/q2-popover';\nimport { Q2Dropdown } from 'src/components/q2-dropdown/q2-dropdown';\nimport { Q2DropdownItem } from 'src/components/q2-dropdown-item/q2-dropdown-item';\n\nexport type TectonWindow = typeof window & {\n resolveMenu: any;\n navigateTo: any;\n showOverpanel: any;\n};\n\ndescribe('q2-dropdown', () => {\n let page: E2EPage;\n let dropdown: E2EElement;\n let dropdownContainer: E2EElement;\n let popover: E2EElement;\n let dropdownButton: E2EElement;\n let buttonFocusSpy: EventSpy;\n let firstOption: E2EElement;\n let firstOptionFocusSpy: EventSpy;\n let lastOption: E2EElement;\n let lastOptionFocusSpy: EventSpy;\n let closeDropdownBtn: E2EElement;\n\n describe('[A11y] guideline compliance', () => {\n it('Does not have accessibility violations with only label', async () => {\n const page = await setup({\n html: `\n <q2-dropdown label=\"My Dropdown\">\n <q2-dropdown-item>Item Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n const hasViolations = await evaluateA11y(page);\n expect(hasViolations).toBe(false);\n });\n });\n\n it('properly compiles CSS vars and functions', async () => {\n const page = await setup({ html: '<q2-dropdown></q2-dropdown>' });\n expect(await getListOfStyleCompilationIssues(page, 'q2-dropdown')).toHaveLength(0);\n });\n\n it('renders base state', async () => {\n page = await setup({\n html: `\n <q2-dropdown>\n <q2-dropdown-item>Item Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n\n dropdown = await page.find('q2-dropdown');\n expect(dropdown).not.toBeNull();\n\n dropdownContainer = await page.find('q2-dropdown >>> click-elsewhere');\n expect(dropdownContainer).not.toHaveClass('dropdown-open');\n\n dropdownButton = await page.find('q2-dropdown >>> [test-id=\"dropdownButton\"]');\n expect(dropdownButton).not.toHaveAttribute('fab');\n expect(dropdownButton).not.toHaveAttribute('intent');\n expect(dropdownButton).not.toHaveAttribute('active');\n expect(dropdownButton).not.toHaveAttribute('disabled');\n expect(await dropdownButton.getProperty('ariaExpanded')).toEqual('false');\n expect(await dropdownButton.getProperty('ariaHasPopup')).toEqual('menu');\n expect(await dropdownButton.getProperty('ariaLabel')).toBe(undefined);\n\n const dropdownButtonIcon = await page.find('q2-dropdown >>> q2-icon');\n expect(dropdownButtonIcon).toBeNull();\n\n const dropdownButtonText = await page.find('q2-dropdown >>> .dropdown-button-text');\n expect(dropdownButtonText).toBeNull();\n\n const dropdownSlot = await page.find('q2-dropdown >>> slot');\n expect(dropdownSlot).not.toBeNull();\n\n closeDropdownBtn = await page.find('q2-dropdown >>> .close-dropdown');\n expect(closeDropdownBtn).toBeNull();\n });\n\n it('binds button props', async () => {\n page = await setup({\n html: `\n <q2-dropdown\n type=\"icon\"\n icon=\"options\"\n label=\"Label Text\"\n >\n <q2-dropdown-item>Item Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n\n dropdownButton = await page.find('q2-dropdown >>> [test-id=\"dropdownButton\"]');\n expect(dropdownButton).not.toHaveAttribute('fab');\n expect(dropdownButton).not.toHaveAttribute('intent');\n expect(dropdownButton).not.toHaveAttribute('disabled');\n expect(dropdownButton).not.toHaveAttribute('aria-label');\n\n const dropdownButtonIcon = await page.find('q2-dropdown >>> q2-icon');\n expect(dropdownButtonIcon).not.toBeNull();\n expect(dropdownButtonIcon).toEqualAttribute('type', 'options');\n\n const dropdownButtonText = await page.find('q2-dropdown >>> .dropdown-button-text');\n expect(dropdownButtonText).not.toBeNull();\n expect(dropdownButtonText.innerText).toEqual('Label Text');\n\n dropdown = await page.find('q2-dropdown');\n dropdown.setProperty('type', 'fab');\n await page.waitForChanges();\n\n expect(dropdownButton).not.toHaveAttribute('icon');\n expect(dropdownButton).toHaveAttribute('fab');\n\n dropdown.setProperty('type', 'primary');\n await page.waitForChanges();\n\n expect(dropdownButton).not.toHaveAttribute('fab');\n expect(dropdownButton).toHaveAttribute('intent');\n expect(dropdownButton).toEqualAttribute('intent', 'workflow-primary');\n\n dropdown.setProperty('type', 'secondary');\n await page.waitForChanges();\n\n expect(dropdownButton).toEqualAttribute('intent', 'workflow-secondary');\n\n dropdown.setProperty('type', 'foo');\n await page.waitForChanges();\n\n expect(dropdownButton).not.toHaveAttribute('icon');\n expect(dropdownButton).not.toHaveAttribute('fab');\n expect(dropdownButton).not.toHaveAttribute('intent');\n\n dropdown.setProperty('ariaLabel', 'Aria-Label Text');\n await page.waitForChanges();\n\n expect(dropdownButton).toHaveAttribute('hide-label');\n expect(dropdownButton).toEqualAttribute('label', 'Aria-Label Text');\n\n dropdown.setProperty('disabled', true);\n await page.waitForChanges();\n\n expect(dropdownButton).toHaveAttribute('disabled');\n });\n\n it('handles focus manipulation', async () => {\n page = await setup({\n html: `\n <q2-dropdown>\n <q2-dropdown-item>Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 2 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n\n dropdownButton = await page.find('q2-dropdown >>> [test-id=\"dropdownButton\"]');\n buttonFocusSpy = await dropdownButton.spyOnEvent('focus');\n\n firstOption = await page.find('q2-dropdown-item:first-of-type');\n lastOption = await page.find('q2-dropdown-item:last-of-type');\n const item1Spy = await firstOption.spyOnEvent('focus');\n const item2Spy = await lastOption.spyOnEvent('focus');\n\n expect(item1Spy).toHaveReceivedEventTimes(0);\n expect(item2Spy).toHaveReceivedEventTimes(0);\n\n await dropdownButton.press('ArrowDown');\n expect(item1Spy).toHaveReceivedEventTimes(1);\n\n await page.keyboard.press('ArrowDown');\n expect(item2Spy).toHaveReceivedEventTimes(1);\n\n await page.keyboard.press('ArrowDown');\n expect(item1Spy).toHaveReceivedEventTimes(2);\n\n await page.keyboard.press('ArrowDown');\n expect(item2Spy).toHaveReceivedEventTimes(2);\n\n await page.keyboard.press('ArrowUp');\n expect(item1Spy).toHaveReceivedEventTimes(3);\n\n await page.keyboard.press('ArrowUp');\n expect(item2Spy).toHaveReceivedEventTimes(3);\n });\n\n it('localizes label and aria-label', async () => {\n page = await setup({\n html: `\n <q2-dropdown>\n <q2-dropdown-item>Item Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n\n await setTestStrings(page, {\n 'dropdown.label': 'Label text',\n 'dropdown.ariaLabel': 'Aria-Label text',\n });\n\n dropdown = await page.find('q2-dropdown');\n\n dropdown.setProperty('label', 'dropdown.label');\n await page.waitForChanges();\n\n const dropdownButtonText = await page.find('q2-dropdown >>> .dropdown-button-text');\n expect(dropdownButtonText).toEqualText('Label text');\n\n dropdown.setProperty('ariaLabel', 'dropdown.ariaLabel');\n await page.waitForChanges();\n\n dropdownButton = await page.find('q2-dropdown >>> [test-id=\"dropdownButton\"]');\n expect(dropdownButton).toEqualAttribute('label', 'Aria-Label text');\n });\n\n it('regular dropdown with popover-direction=\"up\" opens upward', async () => {\n page = await setup({\n html: `\n <q2-dropdown popover-direction=\"up\">\n <q2-dropdown-item>Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 2 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n const popover = await page.find('q2-dropdown >>> q2-popover');\n await dispatchEvent(page, ['q2-dropdown', '[test-id=\"dropdownButton\"]'], 'click');\n expect(await popover.getProperty('direction')).toEqual('up');\n });\n\n it('with popover-alignment=\"left\" opens left', async () => {\n page = await setup({\n html: `\n <q2-dropdown popover-alignment=\"left\">\n <q2-dropdown-item>Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 2 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n const popover = await page.find('q2-dropdown >>> q2-popover');\n await dispatchEvent(page, ['q2-dropdown', '[test-id=\"dropdownButton\"]'], 'click');\n expect(await popover.getProperty('align')).toEqual('left');\n });\n\n it('if type custom, q2-btn icon attribute is false', async () => {\n page = await setup({\n html: `\n <q2-dropdown type=\"custom\">\n <q2-avatar slot=\"custom-dropdown-button\"></q2-avatar>\n <q2-dropdown-item>Item 1 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n const dropdownCustom = await page.find('q2-dropdown >>> [test-id=\"dropdownButton\"]');\n expect(dropdownCustom).not.toHaveAttribute('icon');\n });\n\n it('if type custom, show custom-dropdown-button slot', async () => {\n page = await setup({\n html: `\n <q2-dropdown type=\"custom\">\n <q2-avatar slot=\"custom-dropdown-button\"></q2-avatar>\n <q2-dropdown-item>Item 1 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n const dropdownCustom = await page.find('q2-dropdown >>> [test-id=\"dropdownButton\"]');\n expect(dropdownCustom).not.toHaveAttribute('icon');\n\n const dropdownSlot = await page.find('q2-dropdown >>> [test-id=\"dropdownCustom\"]');\n expect(dropdownSlot).not.toHaveClass('hidden');\n\n const dropdown = await page.find('q2-dropdown');\n dropdown.setAttribute('type', 'icon');\n await page.waitForChanges();\n\n const dropdownButton = await page.find('q2-dropdown >>> [test-id=\"dropdownCustom\"]');\n expect(dropdownButton).toHaveClass('hidden');\n });\n\n describe('focus transferring', () => {\n const html = `<q2-dropdown style=\"margin-top: 9999px\">\n <q2-dropdown-item>Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 2 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 3 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 4 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 5 Text</q2-dropdown-item>\n </q2-dropdown>`;\n\n it('focuses when focus event dispatched ', async () => {\n page = await setup({ html });\n await dispatchEvent(page, ['q2-dropdown'], 'focus');\n const innerActiveTestId = async (page: E2EPage) => {\n return page.$eval('q2-dropdown', el => {\n return el.shadowRoot.querySelector('q2-btn').shadowRoot.activeElement?.getAttribute('test-id');\n });\n };\n expect(await innerActiveTestId(page)).toEqual('q2BtnInnerButton');\n });\n\n it('focuses when focus method called ', async () => {\n page = await setup({ html });\n const dropdown = await page.find('q2-dropdown');\n dropdown.triggerEvent('focus');\n await page.waitForChanges();\n const innerActiveTestId = async (page: E2EPage) => {\n return page.$eval('q2-dropdown', el => {\n return el.shadowRoot.querySelector('q2-btn').shadowRoot.activeElement?.getAttribute('test-id');\n });\n };\n expect(await innerActiveTestId(page)).toEqual('q2BtnInnerButton');\n });\n });\n\n it.skip('adds menu items from the config', async () => {\n page = await setup({\n html: `\n <q2-dropdown name=\"testMenu\" pop-direction=\"up\">\n <q2-dropdown-item>Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 2 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n\n const resolveMenu = jest.fn().mockImplementation(name => {\n expect(name).toEqual('testMenu');\n return [\n {\n itemLabel: 'testItem',\n action: 'navigateTo',\n featureName: 'testFeature',\n },\n ];\n });\n await page.exposeFunction('resolveMenu', resolveMenu);\n await page.evaluate(() => {\n (this as any).TectonElements.resolveMenu = resolveMenu;\n });\n expect(resolveMenu).toHaveBeenCalledTimes(0);\n\n dropdown = await page.find('q2-dropdown');\n dropdown.setProperty('context', 'None');\n await page.waitForChanges();\n expect(resolveMenu).toHaveBeenCalledTimes(1);\n\n const dropdownItems = await page.findAll('q2-dropdown q2-dropdown-item');\n expect(dropdownItems.length).toEqual(3);\n });\n\n it.skip('replaces menu outlet items when the contextValue changes', async () => {\n page = await setup({\n html: `\n <q2-dropdown name=\"testMenu\" context=\"None\" contextValue=\"12345\">\n <q2-dropdown-item>Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 2 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n });\n\n it.skip('still works with keyboard functionality', async () => {\n page = await setup({\n html: `\n <q2-dropdown name=\"testMenu\" context=\"None\" contextValue=\"12345\">\n <q2-dropdown-item>Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 2 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n });\n\n describe('Props', () => {\n describe('open', () => {\n it('passes the open property to the popover and dispatches popoverStateChanged event', async () => {\n page = await setup({\n html: `\n <q2-dropdown>\n <q2-dropdown-item>Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 2 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n dropdown = await page.find('q2-dropdown');\n popover = await page.find('q2-dropdown >>> q2-popover');\n const popoverStateChangedSpy = await dropdown.spyOnEvent('popoverStateChanged');\n\n expect(await dropdown.getProperty('open')).toBeUndefined();\n expect(await popover.getProperty('open')).toBeUndefined();\n expect(popoverStateChangedSpy).toHaveReceivedEventTimes(0);\n\n dropdown.setProperty('open', true);\n await page.waitForChanges();\n\n expect(await dropdown.getProperty('open')).toBe(true);\n expect(await popover.getProperty('open')).toBe(true);\n expect(popoverStateChangedSpy).toHaveReceivedEventTimes(1);\n });\n });\n\n describe('block', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-dropdown block>\n <q2-dropdown-item>Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 2 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n dropdown = await page.find('q2-dropdown');\n dropdownButton = await page.find('q2-dropdown >>> [test-id=\"dropdownButton\"]');\n popover = await page.find('q2-dropdown >>> q2-popover');\n });\n it('passes the block propery to the host, button, and popover elements', async () => {\n expect(await dropdown.getProperty('block')).toBe(true);\n expect(await dropdownButton.getProperty('block')).toBe(true);\n expect(await popover.getProperty('block')).toBe(true);\n });\n it('sets the display property to block on host and button elements', async () => {\n const dropdownStyles = await dropdown.getComputedStyle();\n const dropdownButtonStyles = await dropdownButton.getComputedStyle();\n\n expect(dropdownStyles.display).toBe('block');\n expect(dropdownButtonStyles.display).toBe('block');\n });\n });\n\n describe('popoverMode', () => {\n it('does not set any mode on the popover (default)', async () => {\n const page = await newSpecPage({\n components: [Q2Popover, Q2Dropdown, Q2DropdownItem],\n html: `\n <q2-dropdown>\n <q2-dropdown-item>Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 2 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n expect(page.root.shadowRoot.querySelector('q2-popover').mode).toBeNull();\n });\n\n it('sets the value of popoverMode as the mode on the popover', async () => {\n const page = await newSpecPage({\n components: [Q2Popover, Q2Dropdown, Q2DropdownItem],\n html: `\n <q2-dropdown popover-mode=\"legacy\">\n <q2-dropdown-item>Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 2 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n expect(page.root.shadowRoot.querySelector('q2-popover').mode).toBe('legacy');\n });\n });\n });\n\n describe('Events', () => {\n describe('popoverStateChanged', () => {\n it('updates open property and scrolls popover container to top', async () => {\n page = await setup({\n html: `\n <q2-dropdown open>\n ${Array.from({ length: 20 })\n .map(i => `<q2-dropdown-item>Item ${i} Text</q2-dropdown-item>`)\n .join('')}\n </q2-dropdown>\n `,\n });\n\n dropdown = await page.find('q2-dropdown');\n popover = await page.find('q2-dropdown >>> q2-popover');\n\n expect(await dropdown.getProperty('open')).toBe(true);\n expect(await popover.getProperty('open')).toBe(true);\n\n // Manually set the scrollTop to 100\n await popover.callMethod('scrollContainerTo', { top: 100 });\n await page.waitForChanges();\n\n // Ensure the scrollTop is 100\n let containerScrollTop = await getNestedElementProperty(\n page,\n ['q2-dropdown', 'q2-popover', '.container'],\n 'scrollTop'\n );\n expect(containerScrollTop).toEqual(100);\n\n // Close the popover\n await page.$eval('q2-dropdown', el =>\n el.dispatchEvent(new CustomEvent('popoverStateChanged', { detail: { open: false } }))\n );\n await page.waitForChanges();\n\n expect(await dropdown.getProperty('open')).toBe(false);\n expect(await popover.getProperty('open')).toBe(false);\n\n // Ensure the scrollTop is reset to 0\n containerScrollTop = await getNestedElementProperty(\n page,\n ['q2-dropdown', 'q2-popover', '.container'],\n 'scrollTop'\n );\n expect(containerScrollTop).toEqual(0);\n });\n });\n });\n\n describe('Mouse', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-dropdown icon=\"options\">\n <q2-dropdown-item test-id=\"option-1\">Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item test-id=\"option-2\">Item 2 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n dropdown = await page.find('q2-dropdown');\n dropdownContainer = await page.find('q2-dropdown >>> click-elsewhere');\n dropdownButton = await page.find('q2-dropdown >>> [test-id=\"dropdownButton\"]');\n buttonFocusSpy = await dropdownButton.spyOnEvent('focus');\n firstOption = await page.find('q2-dropdown-item:first-of-type');\n\n expect(await dropdown.getProperty('open')).toBeUndefined();\n expect(buttonFocusSpy).toHaveReceivedEventTimes(0);\n expect(dropdown).not.toHaveAttribute('open');\n expect(dropdownContainer).not.toHaveClass('dropdown-open');\n });\n\n describe('dropdown button toggle behavior', () => {\n it('opens the dropdown', async () => {\n await dropdownButton.click();\n\n expect(dropdown).toHaveAttribute('open');\n expect(dropdownContainer).toHaveClass('dropdown-open');\n expect(buttonFocusSpy).toHaveReceivedEventTimes(1);\n });\n\n it('closes an opened dropdown', async () => {\n await dropdownButton.click();\n expect(dropdown).toHaveAttribute('open');\n expect(dropdownContainer).toHaveClass('dropdown-open');\n\n await dropdownButton.click();\n await page.waitForChanges();\n expect(dropdown).not.toHaveAttribute('open');\n expect(dropdownContainer).not.toHaveClass('dropdown-open');\n });\n });\n\n describe('dropdown item selection behavior', () => {\n it('closes the dropdown and focuses the button when an item is clicked', async () => {\n await dropdownButton.click();\n expect(dropdown).toHaveAttribute('open');\n expect(dropdownContainer).toHaveClass('dropdown-open');\n expect(buttonFocusSpy).toHaveReceivedEventTimes(1);\n\n await firstOption.click();\n await page.waitForChanges();\n\n expect(dropdown).not.toHaveAttribute('open');\n expect(dropdownContainer).not.toHaveClass('dropdown-open');\n expect(buttonFocusSpy).toHaveReceivedEventTimes(3);\n });\n });\n });\n\n describe('Keyboard', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-dropdown>\n <q2-dropdown-item test-id=\"option-1\">Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item test-id=\"option-2\">Item 2 Text</q2-dropdown-item>\n </q2-dropdown>\n <button>Outside Button</button>\n `,\n });\n dropdown = await page.find('q2-dropdown');\n dropdownButton = await page.find('q2-dropdown >>> [test-id=\"dropdownButton\"]');\n buttonFocusSpy = await dropdownButton.spyOnEvent('focus');\n firstOption = await page.find('q2-dropdown-item:first-of-type');\n firstOptionFocusSpy = await firstOption.spyOnEvent('focus');\n lastOption = await page.find('q2-dropdown-item:last-of-type');\n lastOptionFocusSpy = await lastOption.spyOnEvent('focus');\n dropdownContainer = await page.find('q2-dropdown >>> click-elsewhere');\n\n expect(await dropdown.getProperty('open')).toBeUndefined();\n expect(buttonFocusSpy).toHaveReceivedEventTimes(0);\n expect(dropdownContainer).not.toHaveClass('dropdown-open');\n });\n\n describe('toggle button behavior', () => {\n describe('when popover is closed', () => {\n it('ArrowUp: opens the popover and focuses last item', async () => {\n await dropdownButton.press('ArrowUp');\n await page.waitForChanges();\n\n expect(dropdownContainer).toHaveClass('dropdown-open');\n expect(buttonFocusSpy).toHaveReceivedEventTimes(2);\n expect(lastOptionFocusSpy).toHaveReceivedEventTimes(1);\n });\n\n it('ArrowDown: opens the popover and focuses first item', async () => {\n await dropdownButton.press('ArrowDown');\n await page.waitForChanges();\n\n expect(dropdownContainer).toHaveClass('dropdown-open');\n expect(buttonFocusSpy).toHaveReceivedEventTimes(2);\n expect(firstOptionFocusSpy).toHaveReceivedEventTimes(1);\n });\n });\n\n describe('when popover is open', () => {\n beforeEach(async () => {\n dropdown.setProperty('open', true);\n await page.waitForChanges();\n expect(dropdownContainer).toHaveClass('dropdown-open');\n buttonFocusSpy.events = [];\n });\n\n it('Escape: closes the popover and focuses toggle button', async () => {\n await dropdownButton.press('Escape');\n await page.waitForChanges();\n\n expect(dropdownContainer).not.toHaveClass('dropdown-open');\n expect(buttonFocusSpy).toHaveReceivedEventTimes(2);\n });\n\n it('Tab: closes the popover and focuses next element in tab order', async () => {\n const outerButton = await page.find('button');\n const outerButtonSpy = await outerButton.spyOnEvent('focus');\n await dropdownButton.press('Tab');\n await page.waitForChanges();\n\n expect(dropdownContainer).not.toHaveClass('dropdown-open');\n expect(buttonFocusSpy).toHaveReceivedEventTimes(2);\n expect(outerButtonSpy).toHaveReceivedEventTimes(1);\n });\n });\n });\n\n describe('dropdown item behavior', () => {\n describe('when inside popover', () => {\n beforeEach(async () => {\n dropdown.setProperty('open', true);\n await page.waitForChanges();\n expect(dropdownContainer).toHaveClass('dropdown-open');\n buttonFocusSpy.events = [];\n firstOptionFocusSpy.events = [];\n lastOptionFocusSpy.events = [];\n });\n\n it('Escape: closes the popover and focuses the toggle button', async () => {\n await dispatchEvent(page, ['q2-dropdown-item'], 'focus');\n expect(firstOptionFocusSpy).toHaveReceivedEventTimes(1);\n\n await page.keyboard.press('Escape');\n await page.waitForChanges();\n\n expect(dropdownContainer).not.toHaveClass('dropdown-open');\n expect(buttonFocusSpy).toHaveReceivedEventTimes(2);\n });\n\n it('Tab: closes the popover and focuses next element in tab order', async () => {\n const outerButton = await page.find('button');\n const outerButtonSpy = await outerButton.spyOnEvent('focus');\n await dispatchEvent(page, ['q2-dropdown-item'], 'focus');\n expect(firstOptionFocusSpy).toHaveReceivedEventTimes(1);\n\n await page.keyboard.press('Tab');\n await page.waitForChanges();\n\n expect(dropdownContainer).not.toHaveClass('dropdown-open');\n expect(buttonFocusSpy).toHaveReceivedEventTimes(0);\n expect(outerButtonSpy).toHaveReceivedEventTimes(1);\n });\n\n it('ArrowUp: focuses the previous dropdown item', async () => {\n await dispatchEvent(page, ['q2-dropdown-item:last-of-type'], 'focus');\n expect(firstOptionFocusSpy).toHaveReceivedEventTimes(0);\n expect(lastOptionFocusSpy).toHaveReceivedEventTimes(1);\n\n await page.keyboard.press('ArrowUp');\n await page.waitForChanges();\n\n expect(firstOptionFocusSpy).toHaveReceivedEventTimes(1);\n });\n\n it('ArrowDown: focuses the next dropdown item', async () => {\n await dispatchEvent(page, ['q2-dropdown-item'], 'focus');\n expect(firstOptionFocusSpy).toHaveReceivedEventTimes(1);\n\n await page.keyboard.press('ArrowDown');\n await page.waitForChanges();\n\n expect(lastOptionFocusSpy).toHaveReceivedEventTimes(1);\n });\n });\n });\n });\n\n describe('Deprecations', () => {\n it('handles deprecated `popDirection` prop', async () => {\n page = await setup({\n html: `\n <q2-dropdown pop-direction=\"up\">\n <q2-dropdown-item>Item 1</q2-dropdown-item>\n <q2-dropdown-item>Item 2</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n await page.waitForChanges();\n dropdown = await page.find('q2-dropdown');\n expect(await dropdown.getProperty('popDirection')).toEqual('up');\n expect(await dropdown.getProperty('popoverDirection')).toEqual('up');\n\n await dropdown.setProperty('popDirection', 'down');\n await page.waitForChanges();\n\n expect(await dropdown.getProperty('popDirection')).toEqual('down');\n expect(await dropdown.getProperty('popoverDirection')).toEqual('down');\n });\n\n it('handles deprecated `ariaLabel` prop', async () => {\n const label = 'My Label';\n page = await setup({\n html: `\n <q2-dropdown aria-label=\"${label}\">\n <q2-dropdown-item>Item 1</q2-dropdown-item>\n <q2-dropdown-item>Item 2</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n await page.waitForChanges();\n await testDeprecatedAriaLabel(await page.find('q2-dropdown'), label);\n const innerButton = await page.find('q2-dropdown >>> q2-btn');\n expect(innerButton).toEqualAttribute('label', label);\n expect(innerButton).toHaveAttribute('hide-label');\n });\n\n it('handles deprecated `alignment` prop', async () => {\n page = await setup({\n html: `\n <q2-dropdown alignment=\"left\">\n <q2-dropdown-item>Item 1</q2-dropdown-item>\n <q2-dropdown-item>Item 2</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n await page.waitForChanges();\n dropdown = await page.find('q2-dropdown');\n expect(await dropdown.getProperty('alignment')).toEqual('left');\n expect(await dropdown.getProperty('popoverAlignment')).toEqual('left');\n\n await dropdown.setProperty('alignment', 'right');\n await page.waitForChanges();\n\n expect(await dropdown.getProperty('alignment')).toEqual('right');\n expect(await dropdown.getProperty('popoverAlignment')).toEqual('right');\n });\n });\n});\n"]}
1
+ {"version":3,"file":"q2-dropdown-test.e2e.js","sourceRoot":"","sources":["../../../../src/components/q2-dropdown/test/q2-dropdown-test.e2e.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACnF,OAAO,EACH,cAAc,EACd,KAAK,EACL,aAAa,EACb,uBAAuB,EACvB,wBAAwB,EACxB,+BAA+B,EAC/B,YAAY,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,kDAAkD,CAAC;AAQlF,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IACzB,IAAI,IAAa,CAAC;IAClB,IAAI,QAAoB,CAAC;IACzB,IAAI,iBAA6B,CAAC;IAClC,IAAI,OAAmB,CAAC;IACxB,IAAI,cAA0B,CAAC;IAC/B,IAAI,cAAwB,CAAC;IAC7B,IAAI,WAAuB,CAAC;IAC5B,IAAI,mBAA6B,CAAC;IAClC,IAAI,UAAsB,CAAC;IAC3B,IAAI,kBAA4B,CAAC;IACjC,IAAI,gBAA4B,CAAC;IAEjC,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,6BAA6B,EAAE,CAAC,CAAC;QAClE,MAAM,CAAC,MAAM,+BAA+B,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;QAChC,IAAI,GAAG,MAAM,KAAK,CAAC;YACf,IAAI,EAAE;;;;aAIL;SACJ,CAAC,CAAC;QAEH,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC1C,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAEhC,iBAAiB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QACvE,MAAM,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;QAE3D,cAAc,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QAC/E,MAAM,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAClD,MAAM,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QACvD,MAAM,CAAC,MAAM,cAAc,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC1E,MAAM,CAAC,MAAM,cAAc,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACzE,MAAM,CAAC,MAAM,cAAc,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEtE,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACtE,MAAM,CAAC,kBAAkB,CAAC,CAAC,QAAQ,EAAE,CAAC;QAEtC,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;QACpF,MAAM,CAAC,kBAAkB,CAAC,CAAC,QAAQ,EAAE,CAAC;QAEtC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAC7D,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAEpC,gBAAgB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QACtE,MAAM,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;QAChC,IAAI,GAAG,MAAM,KAAK,CAAC;YACf,IAAI,EAAE;;;;;;;;aAQL;SACJ,CAAC,CAAC;QAEH,cAAc,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QAC/E,MAAM,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAClD,MAAM,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QACvD,MAAM,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;QAEzD,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACtE,MAAM,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC1C,MAAM,CAAC,kBAAkB,CAAC,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAE/D,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;QACpF,MAAM,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC1C,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAE3D,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC1C,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACpC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,MAAM,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACnD,MAAM,CAAC,cAAc,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAE9C,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACxC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,MAAM,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAClD,MAAM,CAAC,cAAc,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QACjD,MAAM,CAAC,cAAc,CAAC,CAAC,gBAAgB,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;QAEtE,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAC1C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,MAAM,CAAC,cAAc,CAAC,CAAC,gBAAgB,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;QAExE,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACpC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,MAAM,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACnD,MAAM,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAClD,MAAM,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAErD,QAAQ,CAAC,WAAW,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;QACrD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,MAAM,CAAC,cAAc,CAAC,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;QACrD,MAAM,CAAC,cAAc,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;QAEpE,QAAQ,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACvC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,MAAM,CAAC,cAAc,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;QACxC,IAAI,GAAG,MAAM,KAAK,CAAC;YACf,IAAI,EAAE;;;;;aAKL;SACJ,CAAC,CAAC;QAEH,cAAc,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QAC/E,cAAc,GAAG,MAAM,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAE1D,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QAChE,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QAC9D,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACvD,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAEtD,MAAM,CAAC,QAAQ,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,CAAC,QAAQ,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;QAE7C,MAAM,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACxC,MAAM,CAAC,QAAQ,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;QAE7C,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACvC,MAAM,CAAC,QAAQ,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;QAE7C,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACvC,MAAM,CAAC,QAAQ,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;QAE7C,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACvC,MAAM,CAAC,QAAQ,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;QAE7C,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACrC,MAAM,CAAC,QAAQ,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;QAE7C,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACrC,MAAM,CAAC,QAAQ,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAC5C,IAAI,GAAG,MAAM,KAAK,CAAC;YACf,IAAI,EAAE;;;;aAIL;SACJ,CAAC,CAAC;QAEH,MAAM,cAAc,CAAC,IAAI,EAAE;YACvB,gBAAgB,EAAE,YAAY;YAC9B,oBAAoB,EAAE,iBAAiB;SAC1C,CAAC,CAAC;QAEH,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAE1C,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QAChD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;QACpF,MAAM,CAAC,kBAAkB,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAErD,QAAQ,CAAC,WAAW,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAC;QACxD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,cAAc,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QAC/E,MAAM,CAAC,cAAc,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACvE,IAAI,GAAG,MAAM,KAAK,CAAC;YACf,IAAI,EAAE;;;;;aAKL;SACJ,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAC9D,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,aAAa,EAAE,4BAA4B,CAAC,EAAE,OAAO,CAAC,CAAC;QAClF,MAAM,CAAC,MAAM,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACtD,IAAI,GAAG,MAAM,KAAK,CAAC;YACf,IAAI,EAAE;;;;;aAKL;SACJ,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAC9D,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,aAAa,EAAE,4BAA4B,CAAC,EAAE,OAAO,CAAC,CAAC;QAClF,MAAM,CAAC,MAAM,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAC5D,IAAI,GAAG,MAAM,KAAK,CAAC;YACf,IAAI,EAAE;;;;;aAKL;SACJ,CAAC,CAAC;QACH,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QACrF,MAAM,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;QAC9D,IAAI,GAAG,MAAM,KAAK,CAAC;YACf,IAAI,EAAE;;;;;aAKL;SACJ,CAAC,CAAC;QACH,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QACrF,MAAM,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAEnD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QACnF,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAE/C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAChD,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACtC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QACrF,MAAM,CAAC,cAAc,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAChC,MAAM,IAAI,GAAG;;;;;;2BAMM,CAAC;QAEpB,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;YAClD,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7B,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC,CAAC;YACpD,MAAM,iBAAiB,GAAG,KAAK,EAAE,IAAa,EAAE,EAAE;gBAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE;;oBAClC,OAAO,MAAA,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,aAAa,0CAAE,YAAY,CAAC,SAAS,CAAC,CAAC;gBACnG,CAAC,CAAC,CAAC;YACP,CAAC,CAAC;YACF,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YAC/C,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAChD,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YAC/B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAC5B,MAAM,iBAAiB,GAAG,KAAK,EAAE,IAAa,EAAE,EAAE;gBAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE;;oBAClC,OAAO,MAAA,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,aAAa,0CAAE,YAAY,CAAC,SAAS,CAAC,CAAC;gBACnG,CAAC,CAAC,CAAC;YACP,CAAC,CAAC;YACF,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,IAAI,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;QAClD,IAAI,GAAG,MAAM,KAAK,CAAC;YACf,IAAI,EAAE;;;;;aAKL;SACJ,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE;YACpD,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACjC,OAAO;gBACH;oBACI,SAAS,EAAE,UAAU;oBACrB,MAAM,EAAE,YAAY;oBACpB,WAAW,EAAE,aAAa;iBAC7B;aACJ,CAAC;QACN,CAAC,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;QACtD,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;YACpB,IAAY,CAAC,cAAc,CAAC,WAAW,GAAG,WAAW,CAAC;QAC3D,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,WAAW,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAE7C,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC1C,QAAQ,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACxC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5B,MAAM,CAAC,WAAW,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAE7C,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;QACzE,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,IAAI,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QAC3E,IAAI,GAAG,MAAM,KAAK,CAAC;YACf,IAAI,EAAE;;;;;aAKL;SACJ,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,IAAI,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;QAC1D,IAAI,GAAG,MAAM,KAAK,CAAC;YACf,IAAI,EAAE;;;;;aAKL;SACJ,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;QACnB,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;YAClB,EAAE,CAAC,kFAAkF,EAAE,KAAK,IAAI,EAAE;gBAC9F,IAAI,GAAG,MAAM,KAAK,CAAC;oBACf,IAAI,EAAE;;;;;qBAKL;iBACJ,CAAC,CAAC;gBACH,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC1C,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;gBACxD,MAAM,sBAAsB,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;gBAEhF,MAAM,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;gBAC3D,MAAM,CAAC,MAAM,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;gBAC1D,MAAM,CAAC,sBAAsB,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;gBAE3D,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBACnC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACtD,MAAM,CAAC,MAAM,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrD,MAAM,CAAC,sBAAsB,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;YAC/D,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;YACnB,UAAU,CAAC,KAAK,IAAI,EAAE;gBAClB,IAAI,GAAG,MAAM,KAAK,CAAC;oBACf,IAAI,EAAE;;;;;qBAKL;iBACJ,CAAC,CAAC;gBACH,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC1C,cAAc,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;gBAC/E,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YAC5D,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;gBAChF,MAAM,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACvD,MAAM,CAAC,MAAM,cAAc,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC7D,MAAM,CAAC,MAAM,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1D,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;gBAC5E,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,gBAAgB,EAAE,CAAC;gBACzD,MAAM,oBAAoB,GAAG,MAAM,cAAc,CAAC,gBAAgB,EAAE,CAAC;gBAErE,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC7C,MAAM,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACvD,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;YACzB,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;gBAC5D,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;oBAC3B,UAAU,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,cAAc,CAAC;oBACnD,IAAI,EAAE;;;;;qBAKL;iBACJ,CAAC,CAAC;gBACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC7E,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;gBACtE,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;oBAC3B,UAAU,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,cAAc,CAAC;oBACnD,IAAI,EAAE;;;;;qBAKL;iBACJ,CAAC,CAAC;gBACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACjF,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;YAC9B,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;gBAC3D,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;oBAC3B,UAAU,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,cAAc,CAAC;oBACnD,IAAI,EAAE;;;;;qBAKL;iBACJ,CAAC,CAAC;gBACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjF,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;YACrB,EAAE,CAAC,uGAAuG,EAAE,KAAK,IAAI,EAAE;gBACnH,IAAI,GAAG,MAAM,KAAK,CAAC;oBACf,IAAI,EAAE;;;;;;qBAML;iBACJ,CAAC,CAAC;gBAEH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC5C,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAE1C,MAAM,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;gBAC3D,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;gBACrB,MAAM,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACrB,UAAU,CAAC,KAAK,IAAI,EAAE;YAClB,IAAI,GAAG,MAAM,KAAK,CAAC;gBACf,IAAI,EAAE;;;;;iBAKL;aACJ,CAAC,CAAC;YACH,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC1C,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;YACpE,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;YACxB,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;gBACtD,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBACvD,QAAQ,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;gBACvC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,QAAQ,CAAC,UAAU,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;gBAClD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,CAAC,QAAQ,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;YACjD,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;gBACxE,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBACvD,MAAM,QAAQ,CAAC,UAAU,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAC;gBAC9D,MAAM,CAAC,QAAQ,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;YACjD,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;gBACzC,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;oBACpD,MAAM,sBAAsB,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;oBAChF,MAAM,QAAQ,CAAC,UAAU,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;oBAClD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAC5B,MAAM,CAAC,sBAAsB,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;gBAC/D,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;oBACzD,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;oBACvD,MAAM,QAAQ,CAAC,UAAU,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;oBAClD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAC5B,MAAM,CAAC,QAAQ,CAAC,CAAC,yBAAyB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACpF,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;YAC9B,UAAU,CAAC,KAAK,IAAI,EAAE;gBAClB,WAAW,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;gBAC3C,UAAU,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;gBAC1C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAChC,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;gBACtD,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBACvD,QAAQ,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;gBACvC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,QAAQ,CAAC,UAAU,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;gBACxD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,CAAC,QAAQ,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;YACjD,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;gBACxE,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBACvD,MAAM,QAAQ,CAAC,UAAU,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAAC;gBACpE,MAAM,CAAC,QAAQ,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;YACjD,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;gBACvD,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBACvD,WAAW,CAAC,WAAW,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;gBAC5C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,QAAQ,CAAC,UAAU,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;gBACxD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,CAAC,QAAQ,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;YACjD,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;gBACzC,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;oBACpD,MAAM,sBAAsB,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;oBAChF,MAAM,QAAQ,CAAC,UAAU,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;oBACxD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAC5B,MAAM,CAAC,sBAAsB,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;gBAC/D,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;oBAC/E,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;oBACvD,MAAM,QAAQ,CAAC,UAAU,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;oBACxD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAC5B,MAAM,CAAC,QAAQ,CAAC,CAAC,yBAAyB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACpF,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;YACzB,EAAE,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;gBAChC,MAAM,sBAAsB,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;gBAChF,MAAM,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;gBAC3D,MAAM,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;gBACzC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACtD,MAAM,CAAC,sBAAsB,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;YAC/D,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;gBACtD,QAAQ,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;gBACvC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,sBAAsB,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;gBAChF,MAAM,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;gBACzC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;gBAC3D,MAAM,CAAC,sBAAsB,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;YAC/D,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;gBAC1D,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBACnC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,sBAAsB,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;gBAChF,MAAM,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACtD,MAAM,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;gBACzC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACtD,MAAM,CAAC,sBAAsB,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;YAC/D,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;YAC1B,EAAE,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;gBACjC,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBACnC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,sBAAsB,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;gBAChF,MAAM,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACtD,MAAM,QAAQ,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;gBAC1C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACvD,MAAM,CAAC,sBAAsB,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;YAC/D,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;gBACtD,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBACnC,QAAQ,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;gBACvC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,sBAAsB,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;gBAChF,MAAM,QAAQ,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;gBAC1C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACtD,MAAM,CAAC,sBAAsB,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;YAC/D,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;gBAC5D,MAAM,sBAAsB,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;gBAChF,MAAM,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;gBAC3D,MAAM,QAAQ,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;gBAC1C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;gBAC3D,MAAM,CAAC,sBAAsB,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;YAC/D,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACpB,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;YACjC,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;gBACxE,IAAI,GAAG,MAAM,KAAK,CAAC;oBACf,IAAI,EAAE;;8BAEI,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;yBACvB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,0BAA0B,CAAC,0BAA0B,CAAC;yBAC/D,IAAI,CAAC,EAAE,CAAC;;qBAEpB;iBACJ,CAAC,CAAC;gBAEH,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC1C,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;gBAExD,MAAM,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACtD,MAAM,CAAC,MAAM,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAErD,oCAAoC;gBACpC,MAAM,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;gBAC5D,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,8BAA8B;gBAC9B,IAAI,kBAAkB,GAAG,MAAM,wBAAwB,CACnD,IAAI,EACJ,CAAC,aAAa,EAAE,YAAY,EAAE,YAAY,CAAC,EAC3C,WAAW,CACd,CAAC;gBACF,MAAM,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAExC,oBAAoB;gBACpB,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE,CACjC,EAAE,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,qBAAqB,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CACxF,CAAC;gBACF,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACvD,MAAM,CAAC,MAAM,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAEtD,qCAAqC;gBACrC,kBAAkB,GAAG,MAAM,wBAAwB,CAC/C,IAAI,EACJ,CAAC,aAAa,EAAE,YAAY,EAAE,YAAY,CAAC,EAC3C,WAAW,CACd,CAAC;gBACF,MAAM,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;QACnB,UAAU,CAAC,KAAK,IAAI,EAAE;YAClB,IAAI,GAAG,MAAM,KAAK,CAAC;gBACf,IAAI,EAAE;;;;;iBAKL;aACJ,CAAC,CAAC;YACH,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC1C,iBAAiB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;YACvE,cAAc,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;YAC/E,cAAc,GAAG,MAAM,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAC1D,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;YAEhE,MAAM,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;YAC3D,MAAM,CAAC,cAAc,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;YACnD,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YAC7C,MAAM,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;YAC7C,EAAE,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;gBAChC,MAAM,cAAc,CAAC,KAAK,EAAE,CAAC;gBAE7B,MAAM,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;gBACzC,MAAM,CAAC,iBAAiB,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;gBACvD,MAAM,CAAC,cAAc,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;YACvD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;gBACvC,MAAM,cAAc,CAAC,KAAK,EAAE,CAAC;gBAC7B,MAAM,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;gBACzC,MAAM,CAAC,iBAAiB,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;gBAEvD,MAAM,cAAc,CAAC,KAAK,EAAE,CAAC;gBAC7B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;gBAC7C,MAAM,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;YAC/D,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,kCAAkC,EAAE,GAAG,EAAE;YAC9C,EAAE,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;gBAChF,MAAM,cAAc,CAAC,KAAK,EAAE,CAAC;gBAC7B,MAAM,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;gBACzC,MAAM,CAAC,iBAAiB,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;gBACvD,MAAM,CAAC,cAAc,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;gBAEnD,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC;gBAC1B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;gBAC7C,MAAM,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;gBAC3D,MAAM,CAAC,cAAc,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;YACvD,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;YACpD,IAAI,GAAG,MAAM,KAAK,CAAC;gBACf,IAAI,EAAE;;;;;iBAKL;aACJ,CAAC,CAAC;YACH,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAC5B,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC1C,MAAM,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACjE,MAAM,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAErE,MAAM,QAAQ,CAAC,WAAW,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;YACnD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACnE,MAAM,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACjD,MAAM,KAAK,GAAG,UAAU,CAAC;YACzB,IAAI,GAAG,MAAM,KAAK,CAAC;gBACf,IAAI,EAAE;+CACyB,KAAK;;;;iBAInC;aACJ,CAAC,CAAC;YACH,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAC5B,MAAM,uBAAuB,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,CAAC;YACrE,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YAC9D,MAAM,CAAC,WAAW,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACrD,MAAM,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACjD,IAAI,GAAG,MAAM,KAAK,CAAC;gBACf,IAAI,EAAE;;;;;iBAKL;aACJ,CAAC,CAAC;YACH,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAC5B,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC1C,MAAM,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAChE,MAAM,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAEvE,MAAM,QAAQ,CAAC,WAAW,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACjD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACjE,MAAM,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC5E,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC3B,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;YAC1B,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;gBACpD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;oBACrB,IAAI,EAAE;;;;qBAIL;iBACJ,CAAC,CAAC;gBACH,MAAM,aAAa,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;gBAC/C,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACzC,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;YAC/B,UAAU,CAAC,KAAK,IAAI,EAAE;gBAClB,IAAI,GAAG,MAAM,KAAK,CAAC;oBACf,IAAI,EAAE;;;;;;qBAML;iBACJ,CAAC,CAAC;gBACH,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC1C,cAAc,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;gBAC/E,cAAc,GAAG,MAAM,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBAC1D,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;gBAChE,mBAAmB,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBAC5D,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;gBAC9D,kBAAkB,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBAC1D,iBAAiB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;gBAEvE,MAAM,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;gBAC3D,MAAM,CAAC,cAAc,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;gBACnD,MAAM,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;YAC/D,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;gBACpC,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;oBACpC,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;wBAC9D,MAAM,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;wBACtC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;wBAE5B,MAAM,CAAC,iBAAiB,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;wBACvD,MAAM,CAAC,cAAc,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;wBACnD,MAAM,CAAC,kBAAkB,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;oBAC3D,CAAC,CAAC,CAAC;oBAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;wBACjE,MAAM,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;wBACxC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;wBAE5B,MAAM,CAAC,iBAAiB,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;wBACvD,MAAM,CAAC,cAAc,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;wBACnD,MAAM,CAAC,mBAAmB,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;oBAC5D,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;oBAClC,UAAU,CAAC,KAAK,IAAI,EAAE;wBAClB,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;wBACnC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;wBAC5B,MAAM,CAAC,iBAAiB,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;wBACvD,cAAc,CAAC,MAAM,GAAG,EAAE,CAAC;oBAC/B,CAAC,CAAC,CAAC;oBAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;wBAClE,MAAM,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;wBACrC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;wBAE5B,MAAM,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;wBAC3D,MAAM,CAAC,cAAc,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;oBACvD,CAAC,CAAC,CAAC;oBAEH,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;wBAC3E,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;wBAC9C,MAAM,cAAc,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;wBAC7D,MAAM,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;wBAClC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;wBAE5B,MAAM,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;wBAC3D,MAAM,CAAC,cAAc,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;wBACnD,MAAM,CAAC,cAAc,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;oBACvD,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;gBACpC,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;oBACjC,UAAU,CAAC,KAAK,IAAI,EAAE;wBAClB,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;wBACnC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;wBAC5B,MAAM,CAAC,iBAAiB,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;wBACvD,cAAc,CAAC,MAAM,GAAG,EAAE,CAAC;wBAC3B,mBAAmB,CAAC,MAAM,GAAG,EAAE,CAAC;wBAChC,kBAAkB,CAAC,MAAM,GAAG,EAAE,CAAC;oBACnC,CAAC,CAAC,CAAC;oBAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;wBACtE,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC,CAAC;wBACzD,MAAM,CAAC,mBAAmB,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;wBAExD,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;wBACpC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;wBAE5B,MAAM,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;wBAC3D,MAAM,CAAC,cAAc,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;oBACvD,CAAC,CAAC,CAAC;oBAEH,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;wBAC3E,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;wBAC9C,MAAM,cAAc,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;wBAC7D,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC,CAAC;wBACzD,MAAM,CAAC,mBAAmB,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;wBAExD,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;wBACjC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;wBAE5B,MAAM,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;wBAC3D,MAAM,CAAC,cAAc,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;wBACnD,MAAM,CAAC,cAAc,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;oBACvD,CAAC,CAAC,CAAC;oBAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;wBACzD,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,+BAA+B,CAAC,EAAE,OAAO,CAAC,CAAC;wBACtE,MAAM,CAAC,mBAAmB,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;wBACxD,MAAM,CAAC,kBAAkB,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;wBAEvD,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;wBACrC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;wBAE5B,MAAM,CAAC,mBAAmB,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;oBAC5D,CAAC,CAAC,CAAC;oBAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;wBACvD,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC,CAAC;wBACzD,MAAM,CAAC,mBAAmB,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;wBAExD,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;wBACvC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;wBAE5B,MAAM,CAAC,kBAAkB,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;oBAC3D,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC","sourcesContent":["import { E2EElement, E2EPage, EventSpy, newSpecPage } from '@stencil/core/testing';\nimport {\n setTestStrings,\n setup,\n dispatchEvent,\n testDeprecatedAriaLabel,\n getNestedElementProperty,\n getListOfStyleCompilationIssues,\n evaluateA11y,\n} from '@/utils/helpers';\nimport { Q2Popover } from 'src/components/q2-popover/q2-popover';\nimport { Q2Dropdown } from 'src/components/q2-dropdown/q2-dropdown';\nimport { Q2DropdownItem } from 'src/components/q2-dropdown-item/q2-dropdown-item';\n\nexport type TectonWindow = typeof window & {\n resolveMenu: any;\n navigateTo: any;\n showOverpanel: any;\n};\n\ndescribe('q2-dropdown', () => {\n let page: E2EPage;\n let dropdown: E2EElement;\n let dropdownContainer: E2EElement;\n let popover: E2EElement;\n let dropdownButton: E2EElement;\n let buttonFocusSpy: EventSpy;\n let firstOption: E2EElement;\n let firstOptionFocusSpy: EventSpy;\n let lastOption: E2EElement;\n let lastOptionFocusSpy: EventSpy;\n let closeDropdownBtn: E2EElement;\n\n it('properly compiles CSS vars and functions', async () => {\n const page = await setup({ html: '<q2-dropdown></q2-dropdown>' });\n expect(await getListOfStyleCompilationIssues(page, 'q2-dropdown')).toHaveLength(0);\n });\n\n it('renders base state', async () => {\n page = await setup({\n html: `\n <q2-dropdown>\n <q2-dropdown-item>Item Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n\n dropdown = await page.find('q2-dropdown');\n expect(dropdown).not.toBeNull();\n\n dropdownContainer = await page.find('q2-dropdown >>> click-elsewhere');\n expect(dropdownContainer).not.toHaveClass('dropdown-open');\n\n dropdownButton = await page.find('q2-dropdown >>> [test-id=\"dropdownButton\"]');\n expect(dropdownButton).not.toHaveAttribute('fab');\n expect(dropdownButton).not.toHaveAttribute('intent');\n expect(dropdownButton).not.toHaveAttribute('active');\n expect(dropdownButton).not.toHaveAttribute('disabled');\n expect(await dropdownButton.getProperty('ariaExpanded')).toEqual('false');\n expect(await dropdownButton.getProperty('ariaHasPopup')).toEqual('menu');\n expect(await dropdownButton.getProperty('ariaLabel')).toBe(undefined);\n\n const dropdownButtonIcon = await page.find('q2-dropdown >>> q2-icon');\n expect(dropdownButtonIcon).toBeNull();\n\n const dropdownButtonText = await page.find('q2-dropdown >>> .dropdown-button-text');\n expect(dropdownButtonText).toBeNull();\n\n const dropdownSlot = await page.find('q2-dropdown >>> slot');\n expect(dropdownSlot).not.toBeNull();\n\n closeDropdownBtn = await page.find('q2-dropdown >>> .close-dropdown');\n expect(closeDropdownBtn).toBeNull();\n });\n\n it('binds button props', async () => {\n page = await setup({\n html: `\n <q2-dropdown\n type=\"icon\"\n icon=\"options\"\n label=\"Label Text\"\n >\n <q2-dropdown-item>Item Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n\n dropdownButton = await page.find('q2-dropdown >>> [test-id=\"dropdownButton\"]');\n expect(dropdownButton).not.toHaveAttribute('fab');\n expect(dropdownButton).not.toHaveAttribute('intent');\n expect(dropdownButton).not.toHaveAttribute('disabled');\n expect(dropdownButton).not.toHaveAttribute('aria-label');\n\n const dropdownButtonIcon = await page.find('q2-dropdown >>> q2-icon');\n expect(dropdownButtonIcon).not.toBeNull();\n expect(dropdownButtonIcon).toEqualAttribute('type', 'options');\n\n const dropdownButtonText = await page.find('q2-dropdown >>> .dropdown-button-text');\n expect(dropdownButtonText).not.toBeNull();\n expect(dropdownButtonText.innerText).toEqual('Label Text');\n\n dropdown = await page.find('q2-dropdown');\n dropdown.setProperty('type', 'fab');\n await page.waitForChanges();\n\n expect(dropdownButton).not.toHaveAttribute('icon');\n expect(dropdownButton).toHaveAttribute('fab');\n\n dropdown.setProperty('type', 'primary');\n await page.waitForChanges();\n\n expect(dropdownButton).not.toHaveAttribute('fab');\n expect(dropdownButton).toHaveAttribute('intent');\n expect(dropdownButton).toEqualAttribute('intent', 'workflow-primary');\n\n dropdown.setProperty('type', 'secondary');\n await page.waitForChanges();\n\n expect(dropdownButton).toEqualAttribute('intent', 'workflow-secondary');\n\n dropdown.setProperty('type', 'foo');\n await page.waitForChanges();\n\n expect(dropdownButton).not.toHaveAttribute('icon');\n expect(dropdownButton).not.toHaveAttribute('fab');\n expect(dropdownButton).not.toHaveAttribute('intent');\n\n dropdown.setProperty('ariaLabel', 'Aria-Label Text');\n await page.waitForChanges();\n\n expect(dropdownButton).toHaveAttribute('hide-label');\n expect(dropdownButton).toEqualAttribute('label', 'Aria-Label Text');\n\n dropdown.setProperty('disabled', true);\n await page.waitForChanges();\n\n expect(dropdownButton).toHaveAttribute('disabled');\n });\n\n it('handles focus manipulation', async () => {\n page = await setup({\n html: `\n <q2-dropdown>\n <q2-dropdown-item>Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 2 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n\n dropdownButton = await page.find('q2-dropdown >>> [test-id=\"dropdownButton\"]');\n buttonFocusSpy = await dropdownButton.spyOnEvent('focus');\n\n firstOption = await page.find('q2-dropdown-item:first-of-type');\n lastOption = await page.find('q2-dropdown-item:last-of-type');\n const item1Spy = await firstOption.spyOnEvent('focus');\n const item2Spy = await lastOption.spyOnEvent('focus');\n\n expect(item1Spy).toHaveReceivedEventTimes(0);\n expect(item2Spy).toHaveReceivedEventTimes(0);\n\n await dropdownButton.press('ArrowDown');\n expect(item1Spy).toHaveReceivedEventTimes(1);\n\n await page.keyboard.press('ArrowDown');\n expect(item2Spy).toHaveReceivedEventTimes(1);\n\n await page.keyboard.press('ArrowDown');\n expect(item1Spy).toHaveReceivedEventTimes(2);\n\n await page.keyboard.press('ArrowDown');\n expect(item2Spy).toHaveReceivedEventTimes(2);\n\n await page.keyboard.press('ArrowUp');\n expect(item1Spy).toHaveReceivedEventTimes(3);\n\n await page.keyboard.press('ArrowUp');\n expect(item2Spy).toHaveReceivedEventTimes(3);\n });\n\n it('localizes label and aria-label', async () => {\n page = await setup({\n html: `\n <q2-dropdown>\n <q2-dropdown-item>Item Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n\n await setTestStrings(page, {\n 'dropdown.label': 'Label text',\n 'dropdown.ariaLabel': 'Aria-Label text',\n });\n\n dropdown = await page.find('q2-dropdown');\n\n dropdown.setProperty('label', 'dropdown.label');\n await page.waitForChanges();\n\n const dropdownButtonText = await page.find('q2-dropdown >>> .dropdown-button-text');\n expect(dropdownButtonText).toEqualText('Label text');\n\n dropdown.setProperty('ariaLabel', 'dropdown.ariaLabel');\n await page.waitForChanges();\n\n dropdownButton = await page.find('q2-dropdown >>> [test-id=\"dropdownButton\"]');\n expect(dropdownButton).toEqualAttribute('label', 'Aria-Label text');\n });\n\n it('regular dropdown with popover-direction=\"up\" opens upward', async () => {\n page = await setup({\n html: `\n <q2-dropdown popover-direction=\"up\">\n <q2-dropdown-item>Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 2 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n const popover = await page.find('q2-dropdown >>> q2-popover');\n await dispatchEvent(page, ['q2-dropdown', '[test-id=\"dropdownButton\"]'], 'click');\n expect(await popover.getProperty('direction')).toEqual('up');\n });\n\n it('with popover-alignment=\"left\" opens left', async () => {\n page = await setup({\n html: `\n <q2-dropdown popover-alignment=\"left\">\n <q2-dropdown-item>Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 2 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n const popover = await page.find('q2-dropdown >>> q2-popover');\n await dispatchEvent(page, ['q2-dropdown', '[test-id=\"dropdownButton\"]'], 'click');\n expect(await popover.getProperty('align')).toEqual('left');\n });\n\n it('if type custom, q2-btn icon attribute is false', async () => {\n page = await setup({\n html: `\n <q2-dropdown type=\"custom\">\n <q2-avatar slot=\"custom-dropdown-button\"></q2-avatar>\n <q2-dropdown-item>Item 1 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n const dropdownCustom = await page.find('q2-dropdown >>> [test-id=\"dropdownButton\"]');\n expect(dropdownCustom).not.toHaveAttribute('icon');\n });\n\n it('if type custom, show custom-dropdown-button slot', async () => {\n page = await setup({\n html: `\n <q2-dropdown type=\"custom\">\n <q2-avatar slot=\"custom-dropdown-button\"></q2-avatar>\n <q2-dropdown-item>Item 1 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n const dropdownCustom = await page.find('q2-dropdown >>> [test-id=\"dropdownButton\"]');\n expect(dropdownCustom).not.toHaveAttribute('icon');\n\n const dropdownSlot = await page.find('q2-dropdown >>> [test-id=\"dropdownCustom\"]');\n expect(dropdownSlot).not.toHaveClass('hidden');\n\n const dropdown = await page.find('q2-dropdown');\n dropdown.setAttribute('type', 'icon');\n await page.waitForChanges();\n\n const dropdownButton = await page.find('q2-dropdown >>> [test-id=\"dropdownCustom\"]');\n expect(dropdownButton).toHaveClass('hidden');\n });\n\n describe('focus transferring', () => {\n const html = `<q2-dropdown style=\"margin-top: 9999px\">\n <q2-dropdown-item>Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 2 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 3 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 4 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 5 Text</q2-dropdown-item>\n </q2-dropdown>`;\n\n it('focuses when focus event dispatched ', async () => {\n page = await setup({ html });\n await dispatchEvent(page, ['q2-dropdown'], 'focus');\n const innerActiveTestId = async (page: E2EPage) => {\n return page.$eval('q2-dropdown', el => {\n return el.shadowRoot.querySelector('q2-btn').shadowRoot.activeElement?.getAttribute('test-id');\n });\n };\n expect(await innerActiveTestId(page)).toEqual('q2BtnInnerButton');\n });\n\n it('focuses when focus method called ', async () => {\n page = await setup({ html });\n const dropdown = await page.find('q2-dropdown');\n dropdown.triggerEvent('focus');\n await page.waitForChanges();\n const innerActiveTestId = async (page: E2EPage) => {\n return page.$eval('q2-dropdown', el => {\n return el.shadowRoot.querySelector('q2-btn').shadowRoot.activeElement?.getAttribute('test-id');\n });\n };\n expect(await innerActiveTestId(page)).toEqual('q2BtnInnerButton');\n });\n });\n\n it.skip('adds menu items from the config', async () => {\n page = await setup({\n html: `\n <q2-dropdown name=\"testMenu\" pop-direction=\"up\">\n <q2-dropdown-item>Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 2 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n\n const resolveMenu = jest.fn().mockImplementation(name => {\n expect(name).toEqual('testMenu');\n return [\n {\n itemLabel: 'testItem',\n action: 'navigateTo',\n featureName: 'testFeature',\n },\n ];\n });\n await page.exposeFunction('resolveMenu', resolveMenu);\n await page.evaluate(() => {\n (this as any).TectonElements.resolveMenu = resolveMenu;\n });\n expect(resolveMenu).toHaveBeenCalledTimes(0);\n\n dropdown = await page.find('q2-dropdown');\n dropdown.setProperty('context', 'None');\n await page.waitForChanges();\n expect(resolveMenu).toHaveBeenCalledTimes(1);\n\n const dropdownItems = await page.findAll('q2-dropdown q2-dropdown-item');\n expect(dropdownItems.length).toEqual(3);\n });\n\n it.skip('replaces menu outlet items when the contextValue changes', async () => {\n page = await setup({\n html: `\n <q2-dropdown name=\"testMenu\" context=\"None\" contextValue=\"12345\">\n <q2-dropdown-item>Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 2 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n });\n\n it.skip('still works with keyboard functionality', async () => {\n page = await setup({\n html: `\n <q2-dropdown name=\"testMenu\" context=\"None\" contextValue=\"12345\">\n <q2-dropdown-item>Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 2 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n });\n\n describe('Props', () => {\n describe('open', () => {\n it('passes the open property to the popover and dispatches popoverStateChanged event', async () => {\n page = await setup({\n html: `\n <q2-dropdown>\n <q2-dropdown-item>Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 2 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n dropdown = await page.find('q2-dropdown');\n popover = await page.find('q2-dropdown >>> q2-popover');\n const popoverStateChangedSpy = await dropdown.spyOnEvent('popoverStateChanged');\n\n expect(await dropdown.getProperty('open')).toBeUndefined();\n expect(await popover.getProperty('open')).toBeUndefined();\n expect(popoverStateChangedSpy).toHaveReceivedEventTimes(0);\n\n dropdown.setProperty('open', true);\n await page.waitForChanges();\n\n expect(await dropdown.getProperty('open')).toBe(true);\n expect(await popover.getProperty('open')).toBe(true);\n expect(popoverStateChangedSpy).toHaveReceivedEventTimes(1);\n });\n });\n\n describe('block', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-dropdown block>\n <q2-dropdown-item>Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 2 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n dropdown = await page.find('q2-dropdown');\n dropdownButton = await page.find('q2-dropdown >>> [test-id=\"dropdownButton\"]');\n popover = await page.find('q2-dropdown >>> q2-popover');\n });\n it('passes the block propery to the host, button, and popover elements', async () => {\n expect(await dropdown.getProperty('block')).toBe(true);\n expect(await dropdownButton.getProperty('block')).toBe(true);\n expect(await popover.getProperty('block')).toBe(true);\n });\n it('sets the display property to block on host and button elements', async () => {\n const dropdownStyles = await dropdown.getComputedStyle();\n const dropdownButtonStyles = await dropdownButton.getComputedStyle();\n\n expect(dropdownStyles.display).toBe('block');\n expect(dropdownButtonStyles.display).toBe('block');\n });\n });\n\n describe('popoverMode', () => {\n it('does not set any mode on the popover (default)', async () => {\n const page = await newSpecPage({\n components: [Q2Popover, Q2Dropdown, Q2DropdownItem],\n html: `\n <q2-dropdown>\n <q2-dropdown-item>Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 2 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n expect(page.root.shadowRoot.querySelector('q2-popover').mode).toBeNull();\n });\n\n it('sets the value of popoverMode as the mode on the popover', async () => {\n const page = await newSpecPage({\n components: [Q2Popover, Q2Dropdown, Q2DropdownItem],\n html: `\n <q2-dropdown popover-mode=\"legacy\">\n <q2-dropdown-item>Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 2 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n expect(page.root.shadowRoot.querySelector('q2-popover').mode).toBe('legacy');\n });\n });\n\n describe('popoverMaxHeight', () => {\n it('when provided, passes the value to q2-popover', async () => {\n const page = await newSpecPage({\n components: [Q2Popover, Q2Dropdown, Q2DropdownItem],\n html: `\n <q2-dropdown popover-max-height=\"600\">\n <q2-dropdown-item>Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 2 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n expect(page.root.shadowRoot.querySelector('q2-popover').maxHeight).toBe(600);\n });\n });\n\n describe('Control', () => {\n it('when a nested element has slot property set to control that element can be clicked to toggle dropdown', async () => {\n page = await setup({\n html: `\n <q2-dropdown>\n <q2-avatar slot=\"control\"></q2-avatar>\n <q2-dropdown-item>Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 2 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n\n const avatar = await page.find('q2-avatar');\n dropdown = await page.find('q2-dropdown');\n\n expect(await dropdown.getProperty('open')).toBeUndefined();\n await avatar.click();\n expect(dropdown).toHaveAttribute('open');\n });\n });\n });\n\n describe('Methods', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-dropdown>\n <q2-dropdown-item value=\"item-1\" test-id=\"item-1\">Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item value=\"item-2\" test-id=\"item-2\">Item 2 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n dropdown = await page.find('q2-dropdown');\n firstOption = await page.find('q2-dropdown-item[test-id=\"item-1\"]');\n lastOption = await page.find('q2-dropdown-item[test-id=\"item-2\"]');\n });\n describe('selectItem', () => {\n it('does nothing if the dropdown is disabled', async () => {\n const clickSpy = await firstOption.spyOnEvent('click');\n dropdown.setProperty('disabled', true);\n await page.waitForChanges();\n await dropdown.callMethod('selectItem', 'item-1');\n await page.waitForChanges();\n expect(clickSpy).toHaveReceivedEventTimes(0);\n });\n it('does nothing if the provided value does not match any item', async () => {\n const clickSpy = await firstOption.spyOnEvent('click');\n await dropdown.callMethod('selectItem', 'invalid-item-value');\n expect(clickSpy).toHaveReceivedEventTimes(0);\n });\n describe('when provided a valid value', () => {\n it('opens the dropdown if not already open', async () => {\n const popoverStateChangedSpy = await dropdown.spyOnEvent('popoverStateChanged');\n await dropdown.callMethod('selectItem', 'item-1');\n await page.waitForChanges();\n expect(popoverStateChangedSpy).toHaveReceivedEventTimes(2);\n });\n it('clicks the item matching the provided value', async () => {\n const clickSpy = await firstOption.spyOnEvent('click');\n await dropdown.callMethod('selectItem', 'item-1');\n await page.waitForChanges();\n expect(clickSpy).toHaveReceivedEventDetail({ type: 'select', value: 'item-1' });\n });\n });\n });\n\n describe('selectRemoveItem', () => {\n beforeEach(async () => {\n firstOption.setProperty('removable', true);\n lastOption.setProperty('removable', true);\n await page.waitForChanges();\n });\n it('does nothing if the dropdown is disabled', async () => {\n const clickSpy = await firstOption.spyOnEvent('click');\n dropdown.setProperty('disabled', true);\n await page.waitForChanges();\n await dropdown.callMethod('selectRemoveItem', 'item-1');\n await page.waitForChanges();\n expect(clickSpy).toHaveReceivedEventTimes(0);\n });\n it('does nothing if the provided value does not match any item', async () => {\n const clickSpy = await firstOption.spyOnEvent('click');\n await dropdown.callMethod('selectRemoveItem', 'invalid-item-value');\n expect(clickSpy).toHaveReceivedEventTimes(0);\n });\n it('does nothing if the item is not removable', async () => {\n const clickSpy = await firstOption.spyOnEvent('click');\n firstOption.setProperty('removable', false);\n await page.waitForChanges();\n await dropdown.callMethod('selectRemoveItem', 'item-1');\n await page.waitForChanges();\n expect(clickSpy).toHaveReceivedEventTimes(0);\n });\n describe('when provided a valid value', () => {\n it('opens the dropdown if not already open', async () => {\n const popoverStateChangedSpy = await dropdown.spyOnEvent('popoverStateChanged');\n await dropdown.callMethod('selectRemoveItem', 'item-1');\n await page.waitForChanges();\n expect(popoverStateChangedSpy).toHaveReceivedEventTimes(2);\n });\n it('clicks the remove item button corresponding to the provided value', async () => {\n const clickSpy = await firstOption.spyOnEvent('click');\n await dropdown.callMethod('selectRemoveItem', 'item-1');\n await page.waitForChanges();\n expect(clickSpy).toHaveReceivedEventDetail({ type: 'remove', value: 'item-1' });\n });\n });\n });\n\n describe('openPopover', () => {\n it('opens the dropdown', async () => {\n const popoverStateChangedSpy = await dropdown.spyOnEvent('popoverStateChanged');\n expect(await dropdown.getProperty('open')).toBeUndefined();\n await dropdown.callMethod('openPopover');\n await page.waitForChanges();\n expect(await dropdown.getProperty('open')).toBe(true);\n expect(popoverStateChangedSpy).toHaveReceivedEventTimes(1);\n });\n it('does nothing if the dropdown is disabled', async () => {\n dropdown.setProperty('disabled', true);\n await page.waitForChanges();\n const popoverStateChangedSpy = await dropdown.spyOnEvent('popoverStateChanged');\n await dropdown.callMethod('openPopover');\n await page.waitForChanges();\n expect(await dropdown.getProperty('open')).toBeUndefined();\n expect(popoverStateChangedSpy).toHaveReceivedEventTimes(0);\n });\n it('does nothing if the dropdown is already open', async () => {\n dropdown.setProperty('open', true);\n await page.waitForChanges();\n const popoverStateChangedSpy = await dropdown.spyOnEvent('popoverStateChanged');\n expect(await dropdown.getProperty('open')).toBe(true);\n await dropdown.callMethod('openPopover');\n await page.waitForChanges();\n expect(await dropdown.getProperty('open')).toBe(true);\n expect(popoverStateChangedSpy).toHaveReceivedEventTimes(0);\n });\n });\n\n describe('closePopover', () => {\n it('closes the dropdown', async () => {\n dropdown.setProperty('open', true);\n await page.waitForChanges();\n const popoverStateChangedSpy = await dropdown.spyOnEvent('popoverStateChanged');\n expect(await dropdown.getProperty('open')).toBe(true);\n await dropdown.callMethod('closePopover');\n await page.waitForChanges();\n expect(await dropdown.getProperty('open')).toBe(false);\n expect(popoverStateChangedSpy).toHaveReceivedEventTimes(1);\n });\n\n it('does nothing if the dropdown is disabled', async () => {\n dropdown.setProperty('open', true);\n dropdown.setProperty('disabled', true);\n await page.waitForChanges();\n const popoverStateChangedSpy = await dropdown.spyOnEvent('popoverStateChanged');\n await dropdown.callMethod('closePopover');\n await page.waitForChanges();\n expect(await dropdown.getProperty('open')).toBe(true);\n expect(popoverStateChangedSpy).toHaveReceivedEventTimes(0);\n });\n\n it('does nothing if the dropdown is already closed', async () => {\n const popoverStateChangedSpy = await dropdown.spyOnEvent('popoverStateChanged');\n expect(await dropdown.getProperty('open')).toBeUndefined();\n await dropdown.callMethod('closePopover');\n await page.waitForChanges();\n expect(await dropdown.getProperty('open')).toBeUndefined();\n expect(popoverStateChangedSpy).toHaveReceivedEventTimes(0);\n });\n });\n });\n\n describe('Events', () => {\n describe('popoverStateChanged', () => {\n it('updates open property and scrolls popover container to top', async () => {\n page = await setup({\n html: `\n <q2-dropdown open>\n ${Array.from({ length: 20 })\n .map(i => `<q2-dropdown-item>Item ${i} Text</q2-dropdown-item>`)\n .join('')}\n </q2-dropdown>\n `,\n });\n\n dropdown = await page.find('q2-dropdown');\n popover = await page.find('q2-dropdown >>> q2-popover');\n\n expect(await dropdown.getProperty('open')).toBe(true);\n expect(await popover.getProperty('open')).toBe(true);\n\n // Manually set the scrollTop to 100\n await popover.callMethod('scrollContainerTo', { top: 100 });\n await page.waitForChanges();\n\n // Ensure the scrollTop is 100\n let containerScrollTop = await getNestedElementProperty(\n page,\n ['q2-dropdown', 'q2-popover', '.container'],\n 'scrollTop'\n );\n expect(containerScrollTop).toEqual(100);\n\n // Close the popover\n await page.$eval('q2-dropdown', el =>\n el.dispatchEvent(new CustomEvent('popoverStateChanged', { detail: { open: false } }))\n );\n await page.waitForChanges();\n\n expect(await dropdown.getProperty('open')).toBe(false);\n expect(await popover.getProperty('open')).toBe(false);\n\n // Ensure the scrollTop is reset to 0\n containerScrollTop = await getNestedElementProperty(\n page,\n ['q2-dropdown', 'q2-popover', '.container'],\n 'scrollTop'\n );\n expect(containerScrollTop).toEqual(0);\n });\n });\n });\n\n describe('Mouse', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-dropdown icon=\"options\">\n <q2-dropdown-item test-id=\"option-1\">Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item test-id=\"option-2\">Item 2 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n dropdown = await page.find('q2-dropdown');\n dropdownContainer = await page.find('q2-dropdown >>> click-elsewhere');\n dropdownButton = await page.find('q2-dropdown >>> [test-id=\"dropdownButton\"]');\n buttonFocusSpy = await dropdownButton.spyOnEvent('focus');\n firstOption = await page.find('q2-dropdown-item:first-of-type');\n\n expect(await dropdown.getProperty('open')).toBeUndefined();\n expect(buttonFocusSpy).toHaveReceivedEventTimes(0);\n expect(dropdown).not.toHaveAttribute('open');\n expect(dropdownContainer).not.toHaveClass('dropdown-open');\n });\n\n describe('dropdown button toggle behavior', () => {\n it('opens the dropdown', async () => {\n await dropdownButton.click();\n\n expect(dropdown).toHaveAttribute('open');\n expect(dropdownContainer).toHaveClass('dropdown-open');\n expect(buttonFocusSpy).toHaveReceivedEventTimes(1);\n });\n\n it('closes an opened dropdown', async () => {\n await dropdownButton.click();\n expect(dropdown).toHaveAttribute('open');\n expect(dropdownContainer).toHaveClass('dropdown-open');\n\n await dropdownButton.click();\n await page.waitForChanges();\n expect(dropdown).not.toHaveAttribute('open');\n expect(dropdownContainer).not.toHaveClass('dropdown-open');\n });\n });\n\n describe('dropdown item selection behavior', () => {\n it('closes the dropdown and focuses the button when an item is clicked', async () => {\n await dropdownButton.click();\n expect(dropdown).toHaveAttribute('open');\n expect(dropdownContainer).toHaveClass('dropdown-open');\n expect(buttonFocusSpy).toHaveReceivedEventTimes(1);\n\n await firstOption.click();\n await page.waitForChanges();\n\n expect(dropdown).not.toHaveAttribute('open');\n expect(dropdownContainer).not.toHaveClass('dropdown-open');\n expect(buttonFocusSpy).toHaveReceivedEventTimes(3);\n });\n });\n });\n\n describe('Deprecations', () => {\n it('handles deprecated `popDirection` prop', async () => {\n page = await setup({\n html: `\n <q2-dropdown pop-direction=\"up\">\n <q2-dropdown-item>Item 1</q2-dropdown-item>\n <q2-dropdown-item>Item 2</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n await page.waitForChanges();\n dropdown = await page.find('q2-dropdown');\n expect(await dropdown.getProperty('popDirection')).toEqual('up');\n expect(await dropdown.getProperty('popoverDirection')).toEqual('up');\n\n await dropdown.setProperty('popDirection', 'down');\n await page.waitForChanges();\n\n expect(await dropdown.getProperty('popDirection')).toEqual('down');\n expect(await dropdown.getProperty('popoverDirection')).toEqual('down');\n });\n\n it('handles deprecated `ariaLabel` prop', async () => {\n const label = 'My Label';\n page = await setup({\n html: `\n <q2-dropdown aria-label=\"${label}\">\n <q2-dropdown-item>Item 1</q2-dropdown-item>\n <q2-dropdown-item>Item 2</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n await page.waitForChanges();\n await testDeprecatedAriaLabel(await page.find('q2-dropdown'), label);\n const innerButton = await page.find('q2-dropdown >>> q2-btn');\n expect(innerButton).toEqualAttribute('label', label);\n expect(innerButton).toHaveAttribute('hide-label');\n });\n\n it('handles deprecated `alignment` prop', async () => {\n page = await setup({\n html: `\n <q2-dropdown alignment=\"left\">\n <q2-dropdown-item>Item 1</q2-dropdown-item>\n <q2-dropdown-item>Item 2</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n await page.waitForChanges();\n dropdown = await page.find('q2-dropdown');\n expect(await dropdown.getProperty('alignment')).toEqual('left');\n expect(await dropdown.getProperty('popoverAlignment')).toEqual('left');\n\n await dropdown.setProperty('alignment', 'right');\n await page.waitForChanges();\n\n expect(await dropdown.getProperty('alignment')).toEqual('right');\n expect(await dropdown.getProperty('popoverAlignment')).toEqual('right');\n });\n });\n\n describe('Accessibility', () => {\n describe('aXe DevTools', () => {\n it('does not have accessibility violations', async () => {\n const page = await setup({\n html: `\n <q2-dropdown label=\"My Dropdown\">\n <q2-dropdown-item>Item Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n const hasViolations = await evaluateA11y(page);\n expect(hasViolations).toBe(false);\n });\n });\n describe('Accessibility Tree', () => {});\n describe('Keyboard Controls', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-dropdown>\n <q2-dropdown-item test-id=\"option-1\">Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item test-id=\"option-2\">Item 2 Text</q2-dropdown-item>\n </q2-dropdown>\n <button>Outside Button</button>\n `,\n });\n dropdown = await page.find('q2-dropdown');\n dropdownButton = await page.find('q2-dropdown >>> [test-id=\"dropdownButton\"]');\n buttonFocusSpy = await dropdownButton.spyOnEvent('focus');\n firstOption = await page.find('q2-dropdown-item:first-of-type');\n firstOptionFocusSpy = await firstOption.spyOnEvent('focus');\n lastOption = await page.find('q2-dropdown-item:last-of-type');\n lastOptionFocusSpy = await lastOption.spyOnEvent('focus');\n dropdownContainer = await page.find('q2-dropdown >>> click-elsewhere');\n\n expect(await dropdown.getProperty('open')).toBeUndefined();\n expect(buttonFocusSpy).toHaveReceivedEventTimes(0);\n expect(dropdownContainer).not.toHaveClass('dropdown-open');\n });\n\n describe('toggle button behavior', () => {\n describe('when popover is closed', () => {\n it('ArrowUp: opens the popover and focuses last item', async () => {\n await dropdownButton.press('ArrowUp');\n await page.waitForChanges();\n\n expect(dropdownContainer).toHaveClass('dropdown-open');\n expect(buttonFocusSpy).toHaveReceivedEventTimes(2);\n expect(lastOptionFocusSpy).toHaveReceivedEventTimes(1);\n });\n\n it('ArrowDown: opens the popover and focuses first item', async () => {\n await dropdownButton.press('ArrowDown');\n await page.waitForChanges();\n\n expect(dropdownContainer).toHaveClass('dropdown-open');\n expect(buttonFocusSpy).toHaveReceivedEventTimes(2);\n expect(firstOptionFocusSpy).toHaveReceivedEventTimes(1);\n });\n });\n\n describe('when popover is open', () => {\n beforeEach(async () => {\n dropdown.setProperty('open', true);\n await page.waitForChanges();\n expect(dropdownContainer).toHaveClass('dropdown-open');\n buttonFocusSpy.events = [];\n });\n\n it('Escape: closes the popover and focuses toggle button', async () => {\n await dropdownButton.press('Escape');\n await page.waitForChanges();\n\n expect(dropdownContainer).not.toHaveClass('dropdown-open');\n expect(buttonFocusSpy).toHaveReceivedEventTimes(2);\n });\n\n it('Tab: closes the popover and focuses next element in tab order', async () => {\n const outerButton = await page.find('button');\n const outerButtonSpy = await outerButton.spyOnEvent('focus');\n await dropdownButton.press('Tab');\n await page.waitForChanges();\n\n expect(dropdownContainer).not.toHaveClass('dropdown-open');\n expect(buttonFocusSpy).toHaveReceivedEventTimes(2);\n expect(outerButtonSpy).toHaveReceivedEventTimes(1);\n });\n });\n });\n\n describe('dropdown item behavior', () => {\n describe('when inside popover', () => {\n beforeEach(async () => {\n dropdown.setProperty('open', true);\n await page.waitForChanges();\n expect(dropdownContainer).toHaveClass('dropdown-open');\n buttonFocusSpy.events = [];\n firstOptionFocusSpy.events = [];\n lastOptionFocusSpy.events = [];\n });\n\n it('Escape: closes the popover and focuses the toggle button', async () => {\n await dispatchEvent(page, ['q2-dropdown-item'], 'focus');\n expect(firstOptionFocusSpy).toHaveReceivedEventTimes(1);\n\n await page.keyboard.press('Escape');\n await page.waitForChanges();\n\n expect(dropdownContainer).not.toHaveClass('dropdown-open');\n expect(buttonFocusSpy).toHaveReceivedEventTimes(2);\n });\n\n it('Tab: closes the popover and focuses next element in tab order', async () => {\n const outerButton = await page.find('button');\n const outerButtonSpy = await outerButton.spyOnEvent('focus');\n await dispatchEvent(page, ['q2-dropdown-item'], 'focus');\n expect(firstOptionFocusSpy).toHaveReceivedEventTimes(1);\n\n await page.keyboard.press('Tab');\n await page.waitForChanges();\n\n expect(dropdownContainer).not.toHaveClass('dropdown-open');\n expect(buttonFocusSpy).toHaveReceivedEventTimes(0);\n expect(outerButtonSpy).toHaveReceivedEventTimes(1);\n });\n\n it('ArrowUp: focuses the previous dropdown item', async () => {\n await dispatchEvent(page, ['q2-dropdown-item:last-of-type'], 'focus');\n expect(firstOptionFocusSpy).toHaveReceivedEventTimes(0);\n expect(lastOptionFocusSpy).toHaveReceivedEventTimes(1);\n\n await page.keyboard.press('ArrowUp');\n await page.waitForChanges();\n\n expect(firstOptionFocusSpy).toHaveReceivedEventTimes(1);\n });\n\n it('ArrowDown: focuses the next dropdown item', async () => {\n await dispatchEvent(page, ['q2-dropdown-item'], 'focus');\n expect(firstOptionFocusSpy).toHaveReceivedEventTimes(1);\n\n await page.keyboard.press('ArrowDown');\n await page.waitForChanges();\n\n expect(lastOptionFocusSpy).toHaveReceivedEventTimes(1);\n });\n });\n });\n });\n describe('Other', () => {});\n });\n});\n"]}
@@ -89,7 +89,7 @@ export class Q2DropdownItem {
89
89
  // #endregion
90
90
  // #region Render Methods
91
91
  renderItemDOM() {
92
- return (h("div", { class: "dropdown-item-wrapper" }, h("q2-btn", { class: "dropdown-item", label: this.innerLabel, "hide-label": true, tabIndex: -1, disabled: !!this.disabled, _role: "menuitem", onClick: this.onItemClick, onKeyDown: this.onItemKeydown, onFocus: this.onItemFocus, "test-id": "dropdownItem" }, h("div", { class: "dropdown-item-content" }, h("slot", null))), !!this.removable && (h("q2-btn", { class: "remove-dropdown-item", label: this.removeLabel, "hide-label": true, disabled: !!this.disabled, _role: "menuitem", onClick: this.onRemoveBtnClick, onKeyDown: this.onRemoveBtnKeydown, onFocus: this.onRemoveBtnFocus, "test-id": "removeDropdownItem" }, h("q2-icon", { type: "close" })))));
92
+ return (h("div", { class: "dropdown-item-wrapper" }, h("q2-btn", { class: "dropdown-item", label: this.innerLabel, "hide-label": true, tabIndex: -1, disabled: this.disabled, _role: "menuitem", onClick: this.onItemClick, onKeyDown: this.onItemKeydown, onFocus: this.onItemFocus, "test-id": "dropdownItem" }, h("div", { class: "dropdown-item-content" }, h("slot", null))), !!this.removable && (h("q2-btn", { class: "remove-dropdown-item", label: this.removeLabel, "hide-label": true, disabled: this.disabled, _role: "menuitem", onClick: this.onRemoveBtnClick, onKeyDown: this.onRemoveBtnKeydown, onFocus: this.onRemoveBtnFocus, "test-id": "removeDropdownItem" }, h("q2-icon", { type: "close" })))));
93
93
  }
94
94
  renderSeparatorDOM() {
95
95
  return (h("div", { class: "dropdown-separator", role: "separator", "test-id": "dropdownItemSeparator" }));
@@ -1 +1 @@
1
- {"version":3,"file":"q2-dropdown-item.js","sourceRoot":"","sources":["../../../src/components/q2-dropdown-item/q2-dropdown-item.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, ComponentInterface, Prop, State, Element, Listen, Watch, h } from '@stencil/core';\nimport { loc, handleAriaLabel } from 'src/utils';\nimport { JSX } from '../../components';\n\n@Component({ tag: 'q2-dropdown-item', shadow: true, styleUrl: 'q2-dropdown-item.scss' })\nexport class Q2DropdownItem implements ComponentInterface {\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region State Properties\n\n @State()\n q2LocValue: string;\n\n // #endregion\n // #region Public Property API\n\n /** @deprecated */\n @Prop({ reflect: true, mutable: true })\n ariaLabel: string;\n\n /** Disables interaction with the item and blocks its click event. */\n @Prop({ reflect: true })\n disabled: boolean;\n\n /**\n * The text that appears within the dropdown item.\n *\n * @info\n * This will be used as the `aria-label` for this item.\n * @localizable\n */\n @Prop({ reflect: true, mutable: true })\n label: string;\n\n /**\n * Renders an icon button in the item.\n * Clicking on this button will change the `type` on the item's click event detail to \"remove\".\n */\n @Prop({ reflect: true })\n removable: boolean;\n\n /**\n * Renders a line in the item instead of text.\n * Click events from these items will not have details provided.\n * A `separator` allows for quick visual grouping of items, so interactions should not be bound to these options.\n */\n @Prop({ reflect: true })\n separator: boolean;\n\n /** A static reference value for the item. This value is returned in the click event detail. */\n @Prop({ reflect: true })\n value: string;\n\n // #endregion\n // #region Component Lifecycle Events\n\n componentWillLoad() {\n handleAriaLabel(this);\n this.q2LocValue = this.handleQ2LocValue();\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('focus')\n onHostElementFocus(event: FocusEvent) {\n if (event.target === this.hostElement) {\n this.focusItem();\n }\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('ariaLabel')\n ariaLabelObserver() {\n handleAriaLabel(this);\n }\n\n // #endregion\n // #region Local Methods\n\n get dropdownItemBtn(): HTMLQ2BtnElement {\n return this.hostElement.shadowRoot.querySelector('.dropdown-item');\n }\n\n get innerLabel(): string {\n return this.label || this.hostElement.textContent.trim() || this.q2LocValue;\n }\n\n get removeBtn(): HTMLQ2BtnElement {\n return this.hostElement.shadowRoot.querySelector('.remove-dropdown-item');\n }\n\n get removeLabel(): string {\n return loc('tecton.element.dropdownItem.remove', [this.innerLabel || '']);\n }\n\n focusItem() {\n this.dropdownItemBtn.dispatchEvent(new FocusEvent('focus', { bubbles: false }));\n }\n\n focusRemoveBtn() {\n this.removeBtn && this.removeBtn.dispatchEvent(new FocusEvent('focus', { bubbles: false }));\n }\n\n handleQ2LocValue = (): string => {\n const locElement = this.hostElement.querySelector('q2-loc');\n return locElement ? loc(locElement.value, locElement.substitutions) : '';\n };\n\n onItemClick = (event: MouseEvent) => {\n event.stopImmediatePropagation();\n this.hostElement.dispatchEvent(\n new CustomEvent('click', {\n detail: {\n type: 'select',\n value: this.value || '',\n },\n bubbles: true,\n })\n );\n };\n\n onItemFocus = (event: FocusEvent) => {\n event.stopPropagation();\n };\n\n onItemKeydown = (event: KeyboardEvent) => {\n if (event.key === 'ArrowRight') this.focusRemoveBtn();\n };\n\n onRemoveBtnClick = (event: MouseEvent) => {\n event.stopImmediatePropagation();\n\n this.hostElement.dispatchEvent(\n new CustomEvent('click', {\n detail: {\n type: 'remove',\n value: this.value || '',\n },\n bubbles: true,\n })\n );\n };\n\n onRemoveBtnFocus = (event: FocusEvent) => {\n event.stopPropagation();\n };\n\n onRemoveBtnKeydown = (event: KeyboardEvent) => {\n if (event.key === 'ArrowLeft') this.focusItem();\n };\n\n // #endregion\n // #region Render Methods\n\n renderItemDOM(): JSX.IntrinsicElements {\n return (\n <div class=\"dropdown-item-wrapper\">\n <q2-btn\n class=\"dropdown-item\"\n label={this.innerLabel}\n hide-label\n tabIndex={-1}\n disabled={!!this.disabled}\n _role=\"menuitem\"\n onClick={this.onItemClick}\n onKeyDown={this.onItemKeydown}\n onFocus={this.onItemFocus}\n test-id=\"dropdownItem\"\n >\n <div class=\"dropdown-item-content\">\n <slot />\n </div>\n </q2-btn>\n {!!this.removable && (\n <q2-btn\n class=\"remove-dropdown-item\"\n label={this.removeLabel}\n hide-label\n disabled={!!this.disabled}\n _role=\"menuitem\"\n onClick={this.onRemoveBtnClick}\n onKeyDown={this.onRemoveBtnKeydown}\n onFocus={this.onRemoveBtnFocus}\n test-id=\"removeDropdownItem\"\n >\n <q2-icon type=\"close\" />\n </q2-btn>\n )}\n </div>\n );\n }\n\n renderSeparatorDOM(): JSX.IntrinsicElements {\n return (\n <div\n class=\"dropdown-separator\"\n role=\"separator\"\n test-id=\"dropdownItemSeparator\"\n />\n );\n }\n\n render() {\n if (!!this.separator) {\n return this.renderSeparatorDOM();\n }\n\n return this.renderItemDOM();\n }\n\n // #endregion\n}\n"]}
1
+ {"version":3,"file":"q2-dropdown-item.js","sourceRoot":"","sources":["../../../src/components/q2-dropdown-item/q2-dropdown-item.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, ComponentInterface, Prop, State, Element, Listen, Watch, h } from '@stencil/core';\nimport { loc, handleAriaLabel } from 'src/utils';\nimport { JSX } from '../../components';\n\n@Component({ tag: 'q2-dropdown-item', shadow: true, styleUrl: 'q2-dropdown-item.scss' })\nexport class Q2DropdownItem implements ComponentInterface {\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region State Properties\n\n @State()\n q2LocValue: string;\n\n // #endregion\n // #region Public Property API\n\n /** @deprecated */\n @Prop({ reflect: true, mutable: true })\n ariaLabel: string;\n\n /** Disables interaction with the item and blocks its click event. */\n @Prop({ reflect: true })\n disabled: boolean;\n\n /**\n * The text that appears within the dropdown item.\n *\n * @info\n * This will be used as the `aria-label` for this item.\n * @localizable\n */\n @Prop({ reflect: true, mutable: true })\n label: string;\n\n /**\n * Renders an icon button in the item.\n * Clicking on this button will change the `type` on the item's click event detail to \"remove\".\n */\n @Prop({ reflect: true })\n removable: boolean;\n\n /**\n * Renders a line in the item instead of text.\n * Click events from these items will not have details provided.\n * A `separator` allows for quick visual grouping of items, so interactions should not be bound to these options.\n */\n @Prop({ reflect: true })\n separator: boolean;\n\n /** A static reference value for the item. This value is returned in the click event detail. */\n @Prop({ reflect: true })\n value: string;\n\n // #endregion\n // #region Component Lifecycle Events\n\n componentWillLoad() {\n handleAriaLabel(this);\n this.q2LocValue = this.handleQ2LocValue();\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('focus')\n onHostElementFocus(event: FocusEvent) {\n if (event.target === this.hostElement) {\n this.focusItem();\n }\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('ariaLabel')\n ariaLabelObserver() {\n handleAriaLabel(this);\n }\n\n // #endregion\n // #region Local Methods\n\n get dropdownItemBtn(): HTMLQ2BtnElement {\n return this.hostElement.shadowRoot.querySelector('.dropdown-item');\n }\n\n get innerLabel(): string {\n return this.label || this.hostElement.textContent.trim() || this.q2LocValue;\n }\n\n get removeBtn(): HTMLQ2BtnElement {\n return this.hostElement.shadowRoot.querySelector('.remove-dropdown-item');\n }\n\n get removeLabel(): string {\n return loc('tecton.element.dropdownItem.remove', [this.innerLabel || '']);\n }\n\n focusItem() {\n this.dropdownItemBtn.dispatchEvent(new FocusEvent('focus', { bubbles: false }));\n }\n\n focusRemoveBtn() {\n this.removeBtn && this.removeBtn.dispatchEvent(new FocusEvent('focus', { bubbles: false }));\n }\n\n handleQ2LocValue = (): string => {\n const locElement = this.hostElement.querySelector('q2-loc');\n return locElement ? loc(locElement.value, locElement.substitutions) : '';\n };\n\n onItemClick = (event: MouseEvent) => {\n event.stopImmediatePropagation();\n this.hostElement.dispatchEvent(\n new CustomEvent('click', {\n detail: {\n type: 'select',\n value: this.value || '',\n },\n bubbles: true,\n })\n );\n };\n\n onItemFocus = (event: FocusEvent) => {\n event.stopPropagation();\n };\n\n onItemKeydown = (event: KeyboardEvent) => {\n if (event.key === 'ArrowRight') this.focusRemoveBtn();\n };\n\n onRemoveBtnClick = (event: MouseEvent) => {\n event.stopImmediatePropagation();\n\n this.hostElement.dispatchEvent(\n new CustomEvent('click', {\n detail: {\n type: 'remove',\n value: this.value || '',\n },\n bubbles: true,\n })\n );\n };\n\n onRemoveBtnFocus = (event: FocusEvent) => {\n event.stopPropagation();\n };\n\n onRemoveBtnKeydown = (event: KeyboardEvent) => {\n if (event.key === 'ArrowLeft') this.focusItem();\n };\n\n // #endregion\n // #region Render Methods\n\n renderItemDOM(): JSX.IntrinsicElements {\n return (\n <div class=\"dropdown-item-wrapper\">\n <q2-btn\n class=\"dropdown-item\"\n label={this.innerLabel}\n hide-label\n tabIndex={-1}\n disabled={this.disabled}\n _role=\"menuitem\"\n onClick={this.onItemClick}\n onKeyDown={this.onItemKeydown}\n onFocus={this.onItemFocus}\n test-id=\"dropdownItem\"\n >\n <div class=\"dropdown-item-content\">\n <slot />\n </div>\n </q2-btn>\n {!!this.removable && (\n <q2-btn\n class=\"remove-dropdown-item\"\n label={this.removeLabel}\n hide-label\n disabled={this.disabled}\n _role=\"menuitem\"\n onClick={this.onRemoveBtnClick}\n onKeyDown={this.onRemoveBtnKeydown}\n onFocus={this.onRemoveBtnFocus}\n test-id=\"removeDropdownItem\"\n >\n <q2-icon type=\"close\" />\n </q2-btn>\n )}\n </div>\n );\n }\n\n renderSeparatorDOM(): JSX.IntrinsicElements {\n return (\n <div\n class=\"dropdown-separator\"\n role=\"separator\"\n test-id=\"dropdownItemSeparator\"\n />\n );\n }\n\n render() {\n if (!!this.separator) {\n return this.renderSeparatorDOM();\n }\n\n return this.renderItemDOM();\n }\n\n // #endregion\n}\n"]}
@@ -5,19 +5,6 @@ describe('q2-dropdown-item', () => {
5
5
  let itemBtn;
6
6
  let itemSeparator;
7
7
  let removeBtn;
8
- describe('[A11y] guideline compliance', () => {
9
- it('Does not have accessibility violations with only label', async () => {
10
- page = await setup({
11
- html: `
12
- <div role="menu">
13
- <q2-dropdown-item value="itemValue">item text</q2-dropdown-item>
14
- </div>
15
- `,
16
- });
17
- const hasViolations = await evaluateA11y(page);
18
- expect(hasViolations).toBe(false);
19
- });
20
- });
21
8
  it('properly compiles CSS vars and functions', async () => {
22
9
  page = await setup({ html: '<q2-dropdown-item></q2-dropdown-item>' });
23
10
  expect(await getListOfStyleCompilationIssues(page, 'q2-dropdown-item')).toHaveLength(0);
@@ -243,5 +230,23 @@ describe('q2-dropdown-item', () => {
243
230
  expect(itemBtn).toHaveAttribute('hide-label');
244
231
  });
245
232
  });
233
+ describe('Accessibility', () => {
234
+ describe('aXe DevTools', () => {
235
+ it('does not have accessibility violations', async () => {
236
+ page = await setup({
237
+ html: `
238
+ <div role="menu">
239
+ <q2-dropdown-item value="itemValue">item text</q2-dropdown-item>
240
+ </div>
241
+ `,
242
+ });
243
+ const hasViolations = await evaluateA11y(page);
244
+ expect(hasViolations).toBe(false);
245
+ });
246
+ });
247
+ describe('Accessibility Tree', () => { });
248
+ describe('Keyboard Controls', () => { });
249
+ describe('Other', () => { });
250
+ });
246
251
  });
247
252
  //# sourceMappingURL=q2-dropdown-item-test.e2e.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"q2-dropdown-item-test.e2e.js","sourceRoot":"","sources":["../../../../src/components/q2-dropdown-item/test/q2-dropdown-item-test.e2e.ts"],"names":[],"mappings":"AACA,OAAO,EACH,cAAc,EACd,KAAK,EACL,aAAa,EACb,uBAAuB,EACvB,+BAA+B,EAC/B,YAAY,GACf,MAAM,iBAAiB,CAAC;AAEzB,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAC9B,IAAI,IAAa,CAAC;IAClB,IAAI,IAAgB,CAAC;IACrB,IAAI,OAAmB,CAAC;IACxB,IAAI,aAAyB,CAAC;IAC9B,IAAI,SAAqB,CAAC;IAE1B,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACzC,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;YACpE,IAAI,GAAG,MAAM,KAAK,CAAC;gBACf,IAAI,EAAE;;;;iBAIL;aACJ,CAAC,CAAC;YACH,MAAM,aAAa,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;YAC/C,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACtD,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,uCAAuC,EAAE,CAAC,CAAC;QACtE,MAAM,CAAC,MAAM,+BAA+B,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC5F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oBAAoB,EAAE,KAAK;QAC1B,IAAI,GAAG,MAAM,KAAK,CAAC;YACf,IAAI,EAAE;;aAEL;SACJ,CAAC,CAAC;QAEH,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;QAC3E,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC/B,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxD,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;QAC7C,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAChD,MAAM,CAAC,MAAM,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAE/D,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;QAC1F,MAAM,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE,CAAC;QAEjC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,KAAK,CACjC,kBAAkB,EAClB,CAAC,OAAkC,EAAE,EAAE,CACnC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAC9E,CAAC;QACF,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAE1C,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC3C,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACnC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,MAAM,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,KAAK;QACnC,IAAI,GAAG,MAAM,KAAK,CAAC;YACf,IAAI,EAAE;;aAEL;SACJ,CAAC,CAAC;QAEH,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAEhD,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,kBAAkB,EAAE,0BAA0B,CAAC,EAAE,OAAO,CAAC,CAAC;QACrF,MAAM,CAAC,QAAQ,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,CAAC,QAAQ,CAAC,CAAC,yBAAyB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;QAEnF,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,kBAAkB,EAAE,gCAAgC,CAAC,EAAE,OAAO,CAAC,CAAC;QAC3F,MAAM,CAAC,QAAQ,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,CAAC,QAAQ,CAAC,CAAC,yBAAyB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK;QACpD,IAAI,GAAG,MAAM,KAAK,CAAC;YACf,IAAI,EAAE,2CAA2C;SACpD,CAAC,CAAC;QAEH,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAC3D,kBAAkB,EAClB,CAAC,EAA6B,EAAE,EAAE;YAC9B,MAAM,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;YAC9D,MAAM,WAAW,GAAG,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC;YAC1E,MAAM,YAAY,GAAG,WAAW,CAAC,WAAW,CAAC;YAC7C,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC;YACrC,MAAM,UAAU,GAAG,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;YACnF,OAAO;gBACH,QAAQ;gBACR,YAAY;gBACZ,UAAU;aACb,CAAC;QACN,CAAC,CACJ,CAAC;QAEF,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,YAAY,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;QACnB,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;YACnB,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;gBAC3B,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;oBAC/C,IAAI,GAAG,MAAM,KAAK,CAAC;wBACf,IAAI,EAAE;;;;qBAIT;qBACA,CAAC,CAAC;oBACH,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;oBACjE,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;gBAC/D,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;gBAC/B,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;oBACzE,IAAI,GAAG,MAAM,KAAK,CAAC;wBACf,IAAI,EAAE;;;;qBAIT;qBACA,CAAC,CAAC;oBACH,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;oBACjE,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;gBAC/D,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,0EAA0E,EAAE,KAAK,IAAI,EAAE;oBACtF,IAAI,GAAG,MAAM,KAAK,CAAC;wBACf,IAAI,EAAE;;;;qBAIT;qBACA,CAAC,CAAC;oBACH,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;oBACjE,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;gBAC/D,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;YACvB,EAAE,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;gBACpC,IAAI,GAAG,MAAM,KAAK,CAAC;oBACf,IAAI,EAAE;;iBAET;iBACA,CAAC,CAAC;gBAEH,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;gBAC5E,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;gBACrC,MAAM,CAAC,aAAa,CAAC,CAAC,gBAAgB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;gBAC5D,MAAM,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;gBAExD,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;gBACjE,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC/B,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;YACvB,UAAU,CAAC,KAAK,IAAI,EAAE;gBAClB,IAAI,GAAG,MAAM,KAAK,CAAC;oBACf,IAAI,EAAE,EAAE;iBACX,CAAC,CAAC;gBACH,MAAM,cAAc,CAAC,IAAI,EAAE;oBACvB,oCAAoC,EAAE,mBAAmB;iBAC5D,CAAC,CAAC;gBACH,MAAM,IAAI,CAAC,UAAU,CAAC,mEAAmE,CAAC,CAAC;gBAC3F,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAChC,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;gBACrC,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBAC3C,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;gBAE1E,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;gBACjC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;gBAClD,MAAM,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;gBAC9D,MAAM,CAAC,MAAM,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACrE,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;gBACpD,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBAC3C,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;gBACvC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;gBAE1E,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;gBACjC,MAAM,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,yBAAyB,CAAC,CAAC;YAC3E,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;YACtB,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;gBACxC,IAAI,GAAG,MAAM,KAAK,CAAC;oBACf,IAAI,EAAE;;;;qBAIL;iBACJ,CAAC,CAAC;gBACH,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;gBAEjE,MAAM,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YAChD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;gBACvD,IAAI,GAAG,MAAM,KAAK,CAAC;oBACf,IAAI,EAAE;;;;qBAIL;iBACJ,CAAC,CAAC;gBACH,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;gBACjE,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;gBAC1E,MAAM,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;gBAC5C,MAAM,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YAClD,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;QACnB,EAAE,CAAC,kEAAkE,EAAE,KAAK;YACxE,IAAI,GAAG,MAAM,KAAK,CAAC;gBACf,IAAI,EAAE;;aAET;aACA,CAAC,CAAC;YAEH,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAC3C,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAEpD,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;YAC3E,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAE1D,MAAM,CAAC,YAAY,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;YACjD,MAAM,CAAC,eAAe,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;YAEpD,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,kBAAkB,EAAE,gCAAgC,CAAC,EAAE,OAAO,CAAC,CAAC;YAC3F,MAAM,CAAC,YAAY,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;YACjD,MAAM,CAAC,eAAe,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;YAEpD,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,kBAAkB,EAAE,0BAA0B,CAAC,EAAE,OAAO,CAAC,CAAC;YACrF,MAAM,CAAC,YAAY,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;YACjD,MAAM,CAAC,eAAe,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4BAA4B,EAAE,KAAK;YAClC,IAAI,GAAG,MAAM,KAAK,CAAC;gBACf,IAAI,EAAE;;aAET;aACA,CAAC,CAAC;YAEH,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;YAC3E,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAC1D,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;YACnF,MAAM,iBAAiB,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAE9D,MAAM,CAAC,eAAe,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;YACpD,MAAM,CAAC,iBAAiB,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;YAEtD,MAAM,aAAa,CAAC,IAAI,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAC;YACvD,MAAM,CAAC,eAAe,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;YAEpD,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YACxC,MAAM,CAAC,iBAAiB,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;YAEtD,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACvC,MAAM,CAAC,eAAe,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;YAEpD,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YACxC,MAAM,CAAC,iBAAiB,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;YAEtD,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACvC,MAAM,CAAC,eAAe,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACjD,MAAM,KAAK,GAAG,UAAU,CAAC;YACzB,IAAI,GAAG,MAAM,KAAK,CAAC;gBACf,IAAI,EAAE,iCAAiC,KAAK,2BAA2B;aAC1E,CAAC,CAAC;YACH,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAC5B,MAAM,uBAAuB,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,KAAK,CAAC,CAAC;YAC1E,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;YACjE,MAAM,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACjD,MAAM,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC","sourcesContent":["import { E2EElement, E2EPage } from '@stencil/core/testing';\nimport {\n setTestStrings,\n setup,\n dispatchEvent,\n testDeprecatedAriaLabel,\n getListOfStyleCompilationIssues,\n evaluateA11y,\n} from '@/utils/helpers';\n\ndescribe('q2-dropdown-item', () => {\n let page: E2EPage;\n let item: E2EElement;\n let itemBtn: E2EElement;\n let itemSeparator: E2EElement;\n let removeBtn: E2EElement;\n\n describe('[A11y] guideline compliance', () => {\n it('Does not have accessibility violations with only label', async () => {\n page = await setup({\n html: `\n <div role=\"menu\">\n <q2-dropdown-item value=\"itemValue\">item text</q2-dropdown-item>\n </div>\n `,\n });\n const hasViolations = await evaluateA11y(page);\n expect(hasViolations).toBe(false);\n });\n });\n\n it('properly compiles CSS vars and functions', async () => {\n page = await setup({ html: '<q2-dropdown-item></q2-dropdown-item>' });\n expect(await getListOfStyleCompilationIssues(page, 'q2-dropdown-item')).toHaveLength(0);\n });\n\n it('renders base state', async function (): Promise<void> {\n page = await setup({\n html: `\n <q2-dropdown-item value=\"itemValue\">item text</q2-dropdown-item>\n `,\n });\n\n itemBtn = await page.find('q2-dropdown-item >>> [test-id=\"dropdownItem\"]');\n expect(itemBtn).not.toBeNull();\n expect(itemBtn.tagName.toLowerCase()).toEqual('q2-btn');\n expect(itemBtn).toHaveClass('dropdown-item');\n expect(itemBtn).not.toHaveAttribute('disabled');\n expect(await itemBtn.getProperty('_role')).toEqual('menuitem');\n\n itemSeparator = await page.find('q2-dropdown-item >>> [test-id=\"dropdownItemSeparator\"]');\n expect(itemSeparator).toBeNull();\n\n const itemSlotText = await page.$eval(\n 'q2-dropdown-item',\n (element: HTMLQ2DropdownItemElement) =>\n element.shadowRoot.querySelector('slot').assignedNodes()[0].textContent\n );\n expect(itemSlotText).toEqual('item text');\n\n item = await page.find('q2-dropdown-item');\n item.setProperty('disabled', true);\n await page.waitForChanges();\n\n expect(itemBtn).toHaveAttribute('disabled');\n });\n\n it('correctly emits click event', async function (): Promise<void> {\n page = await setup({\n html: `\n <q2-dropdown-item value=\"itemValue\" removable>item text</q2-dropdown-item>\n `,\n });\n\n item = await page.find('q2-dropdown-item');\n const clickSpy = await item.spyOnEvent('click');\n\n await dispatchEvent(page, ['q2-dropdown-item', '[test-id=\"dropdownItem\"]'], 'click');\n expect(clickSpy).toHaveReceivedEventTimes(1);\n expect(clickSpy).toHaveReceivedEventDetail({ type: 'select', value: 'itemValue' });\n\n await dispatchEvent(page, ['q2-dropdown-item', '[test-id=\"removeDropdownItem\"]'], 'click');\n expect(clickSpy).toHaveReceivedEventTimes(2);\n expect(clickSpy).toHaveReceivedEventDetail({ type: 'remove', value: 'itemValue' });\n });\n\n it('item content is the same width as the q2-btn', async function (): Promise<void> {\n page = await setup({\n html: `<q2-dropdown-item>Test</q2-dropdown-item>`,\n });\n\n const { btnWidth, contentWidth, btnPadding } = await page.$eval(\n 'q2-dropdown-item',\n (el: HTMLQ2DropdownItemElement) => {\n const itemBtn = el.shadowRoot.querySelector('.dropdown-item');\n const itemContent = el.shadowRoot.querySelector('.dropdown-item-content');\n const contentWidth = itemContent.clientWidth;\n const btnWidth = itemBtn.clientWidth;\n const btnPadding = parseInt(getComputedStyle(itemBtn).getPropertyValue('padding'));\n return {\n btnWidth,\n contentWidth,\n btnPadding,\n };\n }\n );\n\n expect(btnWidth).toEqual(contentWidth + btnPadding * 2);\n });\n\n describe('Props', () => {\n describe('label', () => {\n describe('when provided', () => {\n it('applies label to itemDOM() button', async () => {\n page = await setup({\n html: `\n <div role=\"menu\">\n <q2-dropdown-item value=\"itemValue\" label=\"item text\"></q2-dropdown-item>\n </div>\n `,\n });\n itemBtn = await page.find('q2-dropdown-item >>> .dropdown-item');\n expect(itemBtn.getAttribute('label')).toEqual('item text');\n });\n });\n describe('when not provided', () => {\n it('tries to use textContent to apply label to itemDOM() button', async () => {\n page = await setup({\n html: `\n <div role=\"menu\">\n <q2-dropdown-item value=\"itemValue\">item text</q2-dropdown-item>\n </div>\n `,\n });\n itemBtn = await page.find('q2-dropdown-item >>> .dropdown-item');\n expect(itemBtn.getAttribute('label')).toEqual('item text');\n });\n it('applies label to itemDOM() button when using q2-loc component (TCT-2678)', async () => {\n page = await setup({\n html: `\n <div role=\"menu\">\n <q2-dropdown-item value=\"itemValue\"><q2-loc value=\"item text\"/></q2-dropdown-item>\n </div>\n `,\n });\n itemBtn = await page.find('q2-dropdown-item >>> .dropdown-item');\n expect(itemBtn.getAttribute('label')).toEqual('item text');\n });\n });\n });\n\n describe('separator', () => {\n it('renders as a separator', async () => {\n page = await setup({\n html: `\n <q2-dropdown-item value=\"itemValue\" separator>item text</q2-dropdown-item>\n `,\n });\n\n itemSeparator = await page.find('q2-dropdown-item >>> .dropdown-separator');\n expect(itemSeparator).not.toBeNull();\n expect(itemSeparator).toEqualAttribute('role', 'separator');\n expect(itemSeparator).toHaveClass('dropdown-separator');\n\n itemBtn = await page.find('q2-dropdown-item >>> .dropdown-item');\n expect(itemBtn).toBeNull();\n });\n });\n\n describe('removable', () => {\n beforeEach(async () => {\n page = await setup({\n html: ``,\n });\n await setTestStrings(page, {\n 'tecton.element.dropdownItem.remove': 'Remove Option {0}',\n });\n await page.setContent('<q2-dropdown-item value=\"itemValue\" removable></q2-dropdown-item>');\n await page.waitForChanges();\n });\n it('renders a remove button', async () => {\n item = await page.find('q2-dropdown-item');\n removeBtn = await page.find('q2-dropdown-item >>> .remove-dropdown-item');\n\n expect(removeBtn).not.toBeNull();\n expect(removeBtn).not.toHaveAttribute('disabled');\n expect(removeBtn).toEqualAttribute('label', 'Remove Option ');\n expect(await removeBtn.getProperty('_role')).toEqual('menuitem');\n });\n\n it('uses item label in remove button label', async () => {\n item = await page.find('q2-dropdown-item');\n item.setProperty('label', 'Item Text');\n await page.waitForChanges();\n removeBtn = await page.find('q2-dropdown-item >>> .remove-dropdown-item');\n\n expect(removeBtn).not.toBeNull();\n expect(removeBtn).toEqualAttribute('label', 'Remove Option Item Text');\n });\n });\n\n describe('disabled', () => {\n it('disables the dropdown item', async () => {\n page = await setup({\n html: `\n <div role=\"menu\">\n <q2-dropdown-item value=\"itemValue\" disabled></q2-dropdown-item>\n </div>\n `,\n });\n itemBtn = await page.find('q2-dropdown-item >>> .dropdown-item');\n\n expect(itemBtn).toHaveAttribute('disabled');\n });\n\n it('disables the remove button when removable', async () => {\n page = await setup({\n html: `\n <div role=\"menu\">\n <q2-dropdown-item value=\"itemValue\" disabled removable></q2-dropdown-item>\n </div>\n `,\n });\n itemBtn = await page.find('q2-dropdown-item >>> .dropdown-item');\n removeBtn = await page.find('q2-dropdown-item >>> .remove-dropdown-item');\n expect(itemBtn).toHaveAttribute('disabled');\n expect(removeBtn).toHaveAttribute('disabled');\n });\n });\n });\n\n describe('Focus', () => {\n it('does not trigger focus delegator when item or remove btn focused', async function (): Promise<void> {\n page = await setup({\n html: `\n <q2-dropdown-item value=\"itemValue\" removable>item text</q2-dropdown-item>\n `,\n });\n\n item = await page.find('q2-dropdown-item');\n const itemFocusSpy = await item.spyOnEvent('focus');\n\n itemBtn = await page.find('q2-dropdown-item >>> [test-id=\"dropdownItem\"]');\n const itemBtnFocusSpy = await itemBtn.spyOnEvent('focus');\n\n expect(itemFocusSpy).toHaveReceivedEventTimes(0);\n expect(itemBtnFocusSpy).toHaveReceivedEventTimes(0);\n\n await dispatchEvent(page, ['q2-dropdown-item', '[test-id=\"removeDropdownItem\"]'], 'focus');\n expect(itemFocusSpy).toHaveReceivedEventTimes(0);\n expect(itemBtnFocusSpy).toHaveReceivedEventTimes(0);\n\n await dispatchEvent(page, ['q2-dropdown-item', '[test-id=\"dropdownItem\"]'], 'focus');\n expect(itemFocusSpy).toHaveReceivedEventTimes(0);\n expect(itemBtnFocusSpy).toHaveReceivedEventTimes(2);\n });\n\n it('handles focus manipulation', async function (): Promise<void> {\n page = await setup({\n html: `\n <q2-dropdown-item value=\"itemValue\" removable>item text</q2-dropdown-item>\n `,\n });\n\n itemBtn = await page.find('q2-dropdown-item >>> [test-id=\"dropdownItem\"]');\n const itemBtnFocusSpy = await itemBtn.spyOnEvent('focus');\n removeBtn = await page.find('q2-dropdown-item >>> [test-id=\"removeDropdownItem\"]');\n const removeBtnFocusSpy = await removeBtn.spyOnEvent('focus');\n\n expect(itemBtnFocusSpy).toHaveReceivedEventTimes(0);\n expect(removeBtnFocusSpy).toHaveReceivedEventTimes(0);\n\n await dispatchEvent(page, 'q2-dropdown-item', 'focus');\n expect(itemBtnFocusSpy).toHaveReceivedEventTimes(2);\n\n await page.keyboard.press('ArrowRight');\n expect(removeBtnFocusSpy).toHaveReceivedEventTimes(2);\n\n await page.keyboard.press('ArrowLeft');\n expect(itemBtnFocusSpy).toHaveReceivedEventTimes(4);\n\n await page.keyboard.press('ArrowRight');\n expect(removeBtnFocusSpy).toHaveReceivedEventTimes(4);\n\n await page.keyboard.press('ArrowLeft');\n expect(itemBtnFocusSpy).toHaveReceivedEventTimes(6);\n });\n });\n\n describe('Deprecations', () => {\n it('handles deprecated `ariaLabel` prop', async () => {\n const label = 'My Label';\n page = await setup({\n html: `<q2-dropdown-item aria-label=\"${label}\">Text</q2-dropdown-item>`,\n });\n await page.waitForChanges();\n await testDeprecatedAriaLabel(await page.find('q2-dropdown-item'), label);\n itemBtn = await page.find('q2-dropdown-item >>> .dropdown-item');\n expect(itemBtn).toEqualAttribute('label', label);\n expect(itemBtn).toHaveAttribute('hide-label');\n });\n });\n});\n"]}
1
+ {"version":3,"file":"q2-dropdown-item-test.e2e.js","sourceRoot":"","sources":["../../../../src/components/q2-dropdown-item/test/q2-dropdown-item-test.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { E2EElement, E2EPage } from '@stencil/core/testing';\nimport {\n setTestStrings,\n setup,\n dispatchEvent,\n testDeprecatedAriaLabel,\n getListOfStyleCompilationIssues,\n evaluateA11y,\n} from '@/utils/helpers';\n\ndescribe('q2-dropdown-item', () => {\n let page: E2EPage;\n let item: E2EElement;\n let itemBtn: E2EElement;\n let itemSeparator: E2EElement;\n let removeBtn: E2EElement;\n\n it('properly compiles CSS vars and functions', async () => {\n page = await setup({ html: '<q2-dropdown-item></q2-dropdown-item>' });\n expect(await getListOfStyleCompilationIssues(page, 'q2-dropdown-item')).toHaveLength(0);\n });\n\n it('renders base state', async function (): Promise<void> {\n page = await setup({\n html: `\n <q2-dropdown-item value=\"itemValue\">item text</q2-dropdown-item>\n `,\n });\n\n itemBtn = await page.find('q2-dropdown-item >>> [test-id=\"dropdownItem\"]');\n expect(itemBtn).not.toBeNull();\n expect(itemBtn.tagName.toLowerCase()).toEqual('q2-btn');\n expect(itemBtn).toHaveClass('dropdown-item');\n expect(itemBtn).not.toHaveAttribute('disabled');\n expect(await itemBtn.getProperty('_role')).toEqual('menuitem');\n\n itemSeparator = await page.find('q2-dropdown-item >>> [test-id=\"dropdownItemSeparator\"]');\n expect(itemSeparator).toBeNull();\n\n const itemSlotText = await page.$eval(\n 'q2-dropdown-item',\n (element: HTMLQ2DropdownItemElement) =>\n element.shadowRoot.querySelector('slot').assignedNodes()[0].textContent\n );\n expect(itemSlotText).toEqual('item text');\n\n item = await page.find('q2-dropdown-item');\n item.setProperty('disabled', true);\n await page.waitForChanges();\n\n expect(itemBtn).toHaveAttribute('disabled');\n });\n\n it('correctly emits click event', async function (): Promise<void> {\n page = await setup({\n html: `\n <q2-dropdown-item value=\"itemValue\" removable>item text</q2-dropdown-item>\n `,\n });\n\n item = await page.find('q2-dropdown-item');\n const clickSpy = await item.spyOnEvent('click');\n\n await dispatchEvent(page, ['q2-dropdown-item', '[test-id=\"dropdownItem\"]'], 'click');\n expect(clickSpy).toHaveReceivedEventTimes(1);\n expect(clickSpy).toHaveReceivedEventDetail({ type: 'select', value: 'itemValue' });\n\n await dispatchEvent(page, ['q2-dropdown-item', '[test-id=\"removeDropdownItem\"]'], 'click');\n expect(clickSpy).toHaveReceivedEventTimes(2);\n expect(clickSpy).toHaveReceivedEventDetail({ type: 'remove', value: 'itemValue' });\n });\n\n it('item content is the same width as the q2-btn', async function (): Promise<void> {\n page = await setup({\n html: `<q2-dropdown-item>Test</q2-dropdown-item>`,\n });\n\n const { btnWidth, contentWidth, btnPadding } = await page.$eval(\n 'q2-dropdown-item',\n (el: HTMLQ2DropdownItemElement) => {\n const itemBtn = el.shadowRoot.querySelector('.dropdown-item');\n const itemContent = el.shadowRoot.querySelector('.dropdown-item-content');\n const contentWidth = itemContent.clientWidth;\n const btnWidth = itemBtn.clientWidth;\n const btnPadding = parseInt(getComputedStyle(itemBtn).getPropertyValue('padding'));\n return {\n btnWidth,\n contentWidth,\n btnPadding,\n };\n }\n );\n\n expect(btnWidth).toEqual(contentWidth + btnPadding * 2);\n });\n\n describe('Props', () => {\n describe('label', () => {\n describe('when provided', () => {\n it('applies label to itemDOM() button', async () => {\n page = await setup({\n html: `\n <div role=\"menu\">\n <q2-dropdown-item value=\"itemValue\" label=\"item text\"></q2-dropdown-item>\n </div>\n `,\n });\n itemBtn = await page.find('q2-dropdown-item >>> .dropdown-item');\n expect(itemBtn.getAttribute('label')).toEqual('item text');\n });\n });\n describe('when not provided', () => {\n it('tries to use textContent to apply label to itemDOM() button', async () => {\n page = await setup({\n html: `\n <div role=\"menu\">\n <q2-dropdown-item value=\"itemValue\">item text</q2-dropdown-item>\n </div>\n `,\n });\n itemBtn = await page.find('q2-dropdown-item >>> .dropdown-item');\n expect(itemBtn.getAttribute('label')).toEqual('item text');\n });\n it('applies label to itemDOM() button when using q2-loc component (TCT-2678)', async () => {\n page = await setup({\n html: `\n <div role=\"menu\">\n <q2-dropdown-item value=\"itemValue\"><q2-loc value=\"item text\"/></q2-dropdown-item>\n </div>\n `,\n });\n itemBtn = await page.find('q2-dropdown-item >>> .dropdown-item');\n expect(itemBtn.getAttribute('label')).toEqual('item text');\n });\n });\n });\n\n describe('separator', () => {\n it('renders as a separator', async () => {\n page = await setup({\n html: `\n <q2-dropdown-item value=\"itemValue\" separator>item text</q2-dropdown-item>\n `,\n });\n\n itemSeparator = await page.find('q2-dropdown-item >>> .dropdown-separator');\n expect(itemSeparator).not.toBeNull();\n expect(itemSeparator).toEqualAttribute('role', 'separator');\n expect(itemSeparator).toHaveClass('dropdown-separator');\n\n itemBtn = await page.find('q2-dropdown-item >>> .dropdown-item');\n expect(itemBtn).toBeNull();\n });\n });\n\n describe('removable', () => {\n beforeEach(async () => {\n page = await setup({\n html: ``,\n });\n await setTestStrings(page, {\n 'tecton.element.dropdownItem.remove': 'Remove Option {0}',\n });\n await page.setContent('<q2-dropdown-item value=\"itemValue\" removable></q2-dropdown-item>');\n await page.waitForChanges();\n });\n it('renders a remove button', async () => {\n item = await page.find('q2-dropdown-item');\n removeBtn = await page.find('q2-dropdown-item >>> .remove-dropdown-item');\n\n expect(removeBtn).not.toBeNull();\n expect(removeBtn).not.toHaveAttribute('disabled');\n expect(removeBtn).toEqualAttribute('label', 'Remove Option ');\n expect(await removeBtn.getProperty('_role')).toEqual('menuitem');\n });\n\n it('uses item label in remove button label', async () => {\n item = await page.find('q2-dropdown-item');\n item.setProperty('label', 'Item Text');\n await page.waitForChanges();\n removeBtn = await page.find('q2-dropdown-item >>> .remove-dropdown-item');\n\n expect(removeBtn).not.toBeNull();\n expect(removeBtn).toEqualAttribute('label', 'Remove Option Item Text');\n });\n });\n\n describe('disabled', () => {\n it('disables the dropdown item', async () => {\n page = await setup({\n html: `\n <div role=\"menu\">\n <q2-dropdown-item value=\"itemValue\" disabled></q2-dropdown-item>\n </div>\n `,\n });\n itemBtn = await page.find('q2-dropdown-item >>> .dropdown-item');\n\n expect(itemBtn).toHaveAttribute('disabled');\n });\n\n it('disables the remove button when removable', async () => {\n page = await setup({\n html: `\n <div role=\"menu\">\n <q2-dropdown-item value=\"itemValue\" disabled removable></q2-dropdown-item>\n </div>\n `,\n });\n itemBtn = await page.find('q2-dropdown-item >>> .dropdown-item');\n removeBtn = await page.find('q2-dropdown-item >>> .remove-dropdown-item');\n expect(itemBtn).toHaveAttribute('disabled');\n expect(removeBtn).toHaveAttribute('disabled');\n });\n });\n });\n\n describe('Focus', () => {\n it('does not trigger focus delegator when item or remove btn focused', async function (): Promise<void> {\n page = await setup({\n html: `\n <q2-dropdown-item value=\"itemValue\" removable>item text</q2-dropdown-item>\n `,\n });\n\n item = await page.find('q2-dropdown-item');\n const itemFocusSpy = await item.spyOnEvent('focus');\n\n itemBtn = await page.find('q2-dropdown-item >>> [test-id=\"dropdownItem\"]');\n const itemBtnFocusSpy = await itemBtn.spyOnEvent('focus');\n\n expect(itemFocusSpy).toHaveReceivedEventTimes(0);\n expect(itemBtnFocusSpy).toHaveReceivedEventTimes(0);\n\n await dispatchEvent(page, ['q2-dropdown-item', '[test-id=\"removeDropdownItem\"]'], 'focus');\n expect(itemFocusSpy).toHaveReceivedEventTimes(0);\n expect(itemBtnFocusSpy).toHaveReceivedEventTimes(0);\n\n await dispatchEvent(page, ['q2-dropdown-item', '[test-id=\"dropdownItem\"]'], 'focus');\n expect(itemFocusSpy).toHaveReceivedEventTimes(0);\n expect(itemBtnFocusSpy).toHaveReceivedEventTimes(2);\n });\n\n it('handles focus manipulation', async function (): Promise<void> {\n page = await setup({\n html: `\n <q2-dropdown-item value=\"itemValue\" removable>item text</q2-dropdown-item>\n `,\n });\n\n itemBtn = await page.find('q2-dropdown-item >>> [test-id=\"dropdownItem\"]');\n const itemBtnFocusSpy = await itemBtn.spyOnEvent('focus');\n removeBtn = await page.find('q2-dropdown-item >>> [test-id=\"removeDropdownItem\"]');\n const removeBtnFocusSpy = await removeBtn.spyOnEvent('focus');\n\n expect(itemBtnFocusSpy).toHaveReceivedEventTimes(0);\n expect(removeBtnFocusSpy).toHaveReceivedEventTimes(0);\n\n await dispatchEvent(page, 'q2-dropdown-item', 'focus');\n expect(itemBtnFocusSpy).toHaveReceivedEventTimes(2);\n\n await page.keyboard.press('ArrowRight');\n expect(removeBtnFocusSpy).toHaveReceivedEventTimes(2);\n\n await page.keyboard.press('ArrowLeft');\n expect(itemBtnFocusSpy).toHaveReceivedEventTimes(4);\n\n await page.keyboard.press('ArrowRight');\n expect(removeBtnFocusSpy).toHaveReceivedEventTimes(4);\n\n await page.keyboard.press('ArrowLeft');\n expect(itemBtnFocusSpy).toHaveReceivedEventTimes(6);\n });\n });\n\n describe('Deprecations', () => {\n it('handles deprecated `ariaLabel` prop', async () => {\n const label = 'My Label';\n page = await setup({\n html: `<q2-dropdown-item aria-label=\"${label}\">Text</q2-dropdown-item>`,\n });\n await page.waitForChanges();\n await testDeprecatedAriaLabel(await page.find('q2-dropdown-item'), label);\n itemBtn = await page.find('q2-dropdown-item >>> .dropdown-item');\n expect(itemBtn).toEqualAttribute('label', label);\n expect(itemBtn).toHaveAttribute('hide-label');\n });\n });\n\n describe('Accessibility', () => {\n describe('aXe DevTools', () => {\n it('does not have accessibility violations', async () => {\n page = await setup({\n html: `\n <div role=\"menu\">\n <q2-dropdown-item value=\"itemValue\">item text</q2-dropdown-item>\n </div>\n `,\n });\n const hasViolations = await evaluateA11y(page);\n expect(hasViolations).toBe(false);\n });\n });\n describe('Accessibility Tree', () => {});\n describe('Keyboard Controls', () => {});\n describe('Other', () => {});\n });\n});\n"]}