q2-tecton-elements 1.52.2 → 1.54.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 (361) hide show
  1. package/dist/bundle-report.json +43422 -0
  2. package/dist/cjs/{action-sheet-d32c41ae.js → action-sheet-8254c0fd.js} +6 -3
  3. package/dist/cjs/action-sheet-8254c0fd.js.map +1 -0
  4. package/dist/cjs/click-elsewhere.cjs.entry.js +96 -0
  5. package/dist/cjs/click-elsewhere.cjs.entry.js.map +1 -0
  6. package/dist/cjs/{index-07285783.js → index-76f63767.js} +1 -21
  7. package/dist/cjs/index-76f63767.js.map +1 -0
  8. package/dist/cjs/loader.cjs.js +1 -1
  9. package/dist/cjs/q2-action-group.cjs.entry.js +38 -17
  10. package/dist/cjs/q2-action-group.cjs.entry.js.map +1 -1
  11. package/dist/cjs/q2-action-sheet.cjs.entry.js +1 -1
  12. package/dist/cjs/q2-avatar.cjs.entry.js +1 -1
  13. package/dist/cjs/q2-avatar.cjs.entry.js.map +1 -1
  14. package/dist/cjs/q2-badge_7.cjs.entry.js +52 -18
  15. package/dist/cjs/q2-badge_7.cjs.entry.js.map +1 -1
  16. package/dist/cjs/q2-calendar.cjs.entry.js +1 -1
  17. package/dist/cjs/q2-card.cjs.entry.js +1 -1
  18. package/dist/cjs/q2-carousel-pane.cjs.entry.js +1 -1
  19. package/dist/cjs/q2-carousel.cjs.entry.js +1 -1
  20. package/dist/cjs/q2-chart-area.cjs.entry.js +1 -1
  21. package/dist/cjs/q2-chart-bar.cjs.entry.js +1 -1
  22. package/dist/cjs/q2-chart-donut.cjs.entry.js +1 -1
  23. package/dist/cjs/q2-checkbox-group.cjs.entry.js +1 -1
  24. package/dist/cjs/q2-checkbox.cjs.entry.js +1 -1
  25. package/dist/cjs/q2-data-table.cjs.entry.js +1 -1
  26. package/dist/cjs/q2-detail.cjs.entry.js +1 -1
  27. package/dist/cjs/q2-dropdown-item.cjs.entry.js +17 -16
  28. package/dist/cjs/q2-dropdown-item.cjs.entry.js.map +1 -1
  29. package/dist/cjs/q2-dropdown.cjs.entry.js +48 -99
  30. package/dist/cjs/q2-dropdown.cjs.entry.js.map +1 -1
  31. package/dist/cjs/q2-editable-field.cjs.entry.js +1 -1
  32. package/dist/cjs/q2-file-picker.cjs.entry.js +236 -0
  33. package/dist/cjs/q2-file-picker.cjs.entry.js.map +1 -0
  34. package/dist/cjs/q2-item_3.cjs.entry.js +251 -0
  35. package/dist/cjs/q2-item_3.cjs.entry.js.map +1 -0
  36. package/dist/cjs/q2-loc.cjs.entry.js +1 -1
  37. package/dist/cjs/q2-message.cjs.entry.js +1 -1
  38. package/dist/cjs/q2-month-picker.cjs.entry.js +1 -1
  39. package/dist/cjs/q2-optgroup.cjs.entry.js +1 -1
  40. package/dist/cjs/{q2-option-list.cjs.entry.js → q2-option-list_2.cjs.entry.js} +355 -21
  41. package/dist/cjs/q2-option-list_2.cjs.entry.js.map +1 -0
  42. package/dist/cjs/q2-option.cjs.entry.js +18 -4
  43. package/dist/cjs/q2-option.cjs.entry.js.map +1 -1
  44. package/dist/cjs/q2-pagination.cjs.entry.js +4 -4
  45. package/dist/cjs/q2-pill.cjs.entry.js +14 -9
  46. package/dist/cjs/q2-pill.cjs.entry.js.map +1 -1
  47. package/dist/cjs/q2-radio-group.cjs.entry.js +1 -1
  48. package/dist/cjs/q2-radio.cjs.entry.js +1 -1
  49. package/dist/cjs/q2-relative-time.cjs.entry.js +2 -2
  50. package/dist/cjs/q2-resize-observer.cjs.entry.js +1 -1
  51. package/dist/cjs/q2-section.cjs.entry.js +3 -3
  52. package/dist/cjs/q2-select.cjs.entry.js +8 -5
  53. package/dist/cjs/q2-select.cjs.entry.js.map +1 -1
  54. package/dist/cjs/q2-stepper-pane.cjs.entry.js +1 -1
  55. package/dist/cjs/q2-stepper-vertical.cjs.entry.js +2 -2
  56. package/dist/cjs/q2-stepper.cjs.entry.js +2 -2
  57. package/dist/cjs/q2-tag.cjs.entry.js +9 -4
  58. package/dist/cjs/q2-tag.cjs.entry.js.map +1 -1
  59. package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
  60. package/dist/cjs/q2-textarea.cjs.entry.js +1 -1
  61. package/dist/cjs/q2-tooltip.cjs.entry.js +1 -1
  62. package/dist/cjs/tecton-tab-pane.cjs.entry.js +2 -2
  63. package/dist/collection/collection-manifest.json +1 -0
  64. package/dist/collection/components/q2-action-group/q2-action-group.css +25 -8
  65. package/dist/collection/components/q2-action-group/q2-action-group.js +55 -33
  66. package/dist/collection/components/q2-action-group/q2-action-group.js.map +1 -1
  67. package/dist/collection/components/q2-action-group/test/q2-action-group.e2e.js +142 -6
  68. package/dist/collection/components/q2-action-group/test/q2-action-group.e2e.js.map +1 -1
  69. package/dist/collection/components/q2-action-group/test/q2-action-group.spec.js +126 -62
  70. package/dist/collection/components/q2-action-group/test/q2-action-group.spec.js.map +1 -1
  71. package/dist/collection/components/q2-action-sheet/test/q2-action-sheet-test.e2e.js +1 -1
  72. package/dist/collection/components/q2-action-sheet/test/q2-action-sheet-test.e2e.js.map +1 -1
  73. package/dist/collection/components/q2-avatar/q2-avatar.css +5 -0
  74. package/dist/collection/components/q2-btn/q2-btn.css +74 -0
  75. package/dist/collection/components/q2-btn/q2-btn.js +50 -16
  76. package/dist/collection/components/q2-btn/q2-btn.js.map +1 -1
  77. package/dist/collection/components/q2-btn/test/q2-btn-test.e2e.js +29 -0
  78. package/dist/collection/components/q2-btn/test/q2-btn-test.e2e.js.map +1 -1
  79. package/dist/collection/components/q2-dropdown/q2-dropdown.js +83 -103
  80. package/dist/collection/components/q2-dropdown/q2-dropdown.js.map +1 -1
  81. package/dist/collection/components/q2-dropdown/test/q2-dropdown-test.e2e.js +188 -24
  82. package/dist/collection/components/q2-dropdown/test/q2-dropdown-test.e2e.js.map +1 -1
  83. package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.css +1 -1
  84. package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.js +54 -16
  85. package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.js.map +1 -1
  86. package/dist/collection/components/q2-file-picker/q2-file-picker.css +307 -0
  87. package/dist/collection/components/q2-file-picker/q2-file-picker.js +426 -0
  88. package/dist/collection/components/q2-file-picker/q2-file-picker.js.map +1 -0
  89. package/dist/collection/components/q2-file-picker/test/q2-file-picker-test.e2e.js +11 -0
  90. package/dist/collection/components/q2-file-picker/test/q2-file-picker-test.e2e.js.map +1 -0
  91. package/dist/collection/components/q2-file-picker/test/q2-file-picker-test.spec.js +435 -0
  92. package/dist/collection/components/q2-file-picker/test/q2-file-picker-test.spec.js.map +1 -0
  93. package/dist/collection/components/q2-item/q2-item.css +3 -0
  94. package/dist/collection/components/q2-link/q2-link.js +26 -7
  95. package/dist/collection/components/q2-link/q2-link.js.map +1 -1
  96. package/dist/collection/components/q2-link/test/q2-link-test.e2e.js +20 -118
  97. package/dist/collection/components/q2-link/test/q2-link-test.e2e.js.map +1 -1
  98. package/dist/collection/components/q2-link/test/q2-link-test.spec.js +193 -0
  99. package/dist/collection/components/q2-link/test/q2-link-test.spec.js.map +1 -0
  100. package/dist/collection/components/q2-list/q2-list.css +6 -0
  101. package/dist/collection/components/q2-loading/q2-loading.js +1 -1
  102. package/dist/collection/components/q2-loading/q2-loading.js.map +1 -1
  103. package/dist/collection/components/q2-option/q2-option.css +9 -3
  104. package/dist/collection/components/q2-option/q2-option.js +37 -4
  105. package/dist/collection/components/q2-option/q2-option.js.map +1 -1
  106. package/dist/collection/components/q2-option/test/q2-option-test.spec.js +22 -0
  107. package/dist/collection/components/q2-option/test/q2-option-test.spec.js.map +1 -1
  108. package/dist/collection/components/q2-option-list/q2-option-list.js +56 -29
  109. package/dist/collection/components/q2-option-list/q2-option-list.js.map +1 -1
  110. package/dist/collection/components/q2-option-list/test/q2-option-list.spec.js +489 -0
  111. package/dist/collection/components/q2-option-list/test/q2-option-list.spec.js.map +1 -0
  112. package/dist/collection/components/q2-pagination/q2-pagination.js +3 -3
  113. package/dist/collection/components/q2-pill/q2-pill.js +12 -7
  114. package/dist/collection/components/q2-pill/q2-pill.js.map +1 -1
  115. package/dist/collection/components/q2-pill/test/q2-pill-test.e2e.js +109 -1
  116. package/dist/collection/components/q2-pill/test/q2-pill-test.e2e.js.map +1 -1
  117. package/dist/collection/components/q2-popover/q2-popover.js +1 -1
  118. package/dist/collection/components/q2-popover/q2-popover.js.map +1 -1
  119. package/dist/collection/components/q2-relative-time/q2-relative-time.js +1 -1
  120. package/dist/collection/components/q2-resize-observer/q2-resize-observer.js +1 -1
  121. package/dist/collection/components/q2-section/q2-section.js +2 -2
  122. package/dist/collection/components/q2-select/q2-select.js +7 -4
  123. package/dist/collection/components/q2-select/q2-select.js.map +1 -1
  124. package/dist/collection/components/q2-select/test/q2-select-test.e2e.js +1 -14
  125. package/dist/collection/components/q2-select/test/q2-select-test.e2e.js.map +1 -1
  126. package/dist/collection/components/q2-stepper/q2-stepper.js +1 -1
  127. package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js +1 -1
  128. package/dist/collection/components/q2-tab-container/q2-tab-container.js +1 -1
  129. package/dist/collection/components/q2-tab-pane/q2-tab-pane.js +1 -1
  130. package/dist/collection/components/q2-tag/q2-tag.js +7 -2
  131. package/dist/collection/components/q2-tag/q2-tag.js.map +1 -1
  132. package/dist/collection/components/q2-tag/test/q2-tag-test.e2e.js +1 -1
  133. package/dist/collection/components/q2-tag/test/q2-tag-test.e2e.js.map +1 -1
  134. package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js +2 -2
  135. package/dist/collection/utils/action-sheet.js +5 -2
  136. package/dist/collection/utils/action-sheet.js.map +1 -1
  137. package/dist/collection/utils/helpers.js +29 -3
  138. package/dist/collection/utils/helpers.js.map +1 -1
  139. package/dist/collection/utils/test/action-sheet-test.e2e.js +34 -6
  140. package/dist/collection/utils/test/action-sheet-test.e2e.js.map +1 -1
  141. package/dist/components/action-sheet.js +6 -3
  142. package/dist/components/action-sheet.js.map +1 -1
  143. package/dist/components/index.js +2 -0
  144. package/dist/components/index.js.map +1 -1
  145. package/dist/components/index2.js +1 -20
  146. package/dist/components/index2.js.map +1 -1
  147. package/dist/components/q2-action-group.js +41 -19
  148. package/dist/components/q2-action-group.js.map +1 -1
  149. package/dist/components/q2-avatar2.js +1 -1
  150. package/dist/components/q2-avatar2.js.map +1 -1
  151. package/dist/components/q2-btn2.js +50 -16
  152. package/dist/components/q2-btn2.js.map +1 -1
  153. package/dist/components/q2-dropdown-item2.js +19 -17
  154. package/dist/components/q2-dropdown-item2.js.map +1 -1
  155. package/dist/components/q2-dropdown.js +67 -110
  156. package/dist/components/q2-dropdown.js.map +1 -1
  157. package/dist/components/q2-file-picker.d.ts +11 -0
  158. package/dist/components/q2-file-picker.js +301 -0
  159. package/dist/components/q2-file-picker.js.map +1 -0
  160. package/dist/components/q2-item.js +1 -130
  161. package/dist/components/q2-item.js.map +1 -1
  162. package/dist/{esm/q2-item.entry.js → components/q2-item2.js} +29 -11
  163. package/dist/components/q2-item2.js.map +1 -0
  164. package/dist/components/q2-link.js +1 -86
  165. package/dist/components/q2-link.js.map +1 -1
  166. package/dist/{esm/q2-link.entry.js → components/q2-link2.js} +42 -10
  167. package/dist/components/q2-link2.js.map +1 -0
  168. package/dist/components/q2-list.js +1 -94
  169. package/dist/components/q2-list.js.map +1 -1
  170. package/dist/{esm/q2-list.entry.js → components/q2-list2.js} +30 -11
  171. package/dist/components/q2-list2.js.map +1 -0
  172. package/dist/components/q2-loading2.js.map +1 -1
  173. package/dist/components/q2-option-list2.js +44 -19
  174. package/dist/components/q2-option-list2.js.map +1 -1
  175. package/dist/components/q2-option2.js +20 -4
  176. package/dist/components/q2-option2.js.map +1 -1
  177. package/dist/components/q2-pagination.js +3 -3
  178. package/dist/components/q2-pill.js +13 -8
  179. package/dist/components/q2-pill.js.map +1 -1
  180. package/dist/components/q2-popover2.js +1 -1
  181. package/dist/components/q2-popover2.js.map +1 -1
  182. package/dist/components/q2-relative-time.js +1 -1
  183. package/dist/components/q2-resize-observer2.js +1 -1
  184. package/dist/components/q2-section.js +2 -2
  185. package/dist/components/q2-select2.js +8 -5
  186. package/dist/components/q2-select2.js.map +1 -1
  187. package/dist/components/q2-stepper-vertical.js +1 -1
  188. package/dist/components/q2-stepper.js +1 -1
  189. package/dist/components/q2-tab-container.js +1 -1
  190. package/dist/components/q2-tab-pane.js +1 -1
  191. package/dist/components/q2-tag.js +8 -3
  192. package/dist/components/q2-tag.js.map +1 -1
  193. package/dist/components/tecton-tab-pane.js +2 -2
  194. package/dist/esm/{action-sheet-e64cb6f7.js → action-sheet-1e24cb38.js} +7 -4
  195. package/dist/esm/action-sheet-1e24cb38.js.map +1 -0
  196. package/dist/esm/click-elsewhere.entry.js +92 -0
  197. package/dist/esm/click-elsewhere.entry.js.map +1 -0
  198. package/dist/esm/{index-d18e2a20.js → index-504f1a9e.js} +2 -21
  199. package/dist/esm/index-504f1a9e.js.map +1 -0
  200. package/dist/esm/loader.js +1 -1
  201. package/dist/esm/q2-action-group.entry.js +39 -18
  202. package/dist/esm/q2-action-group.entry.js.map +1 -1
  203. package/dist/esm/q2-action-sheet.entry.js +1 -1
  204. package/dist/esm/q2-avatar.entry.js +1 -1
  205. package/dist/esm/q2-avatar.entry.js.map +1 -1
  206. package/dist/esm/q2-badge_7.entry.js +52 -18
  207. package/dist/esm/q2-badge_7.entry.js.map +1 -1
  208. package/dist/esm/q2-calendar.entry.js +1 -1
  209. package/dist/esm/q2-card.entry.js +1 -1
  210. package/dist/esm/q2-carousel-pane.entry.js +1 -1
  211. package/dist/esm/q2-carousel.entry.js +1 -1
  212. package/dist/esm/q2-chart-area.entry.js +1 -1
  213. package/dist/esm/q2-chart-bar.entry.js +1 -1
  214. package/dist/esm/q2-chart-donut.entry.js +1 -1
  215. package/dist/esm/q2-checkbox-group.entry.js +1 -1
  216. package/dist/esm/q2-checkbox.entry.js +1 -1
  217. package/dist/esm/q2-data-table.entry.js +1 -1
  218. package/dist/esm/q2-detail.entry.js +1 -1
  219. package/dist/esm/q2-dropdown-item.entry.js +18 -17
  220. package/dist/esm/q2-dropdown-item.entry.js.map +1 -1
  221. package/dist/esm/q2-dropdown.entry.js +48 -99
  222. package/dist/esm/q2-dropdown.entry.js.map +1 -1
  223. package/dist/esm/q2-editable-field.entry.js +1 -1
  224. package/dist/esm/q2-file-picker.entry.js +232 -0
  225. package/dist/esm/q2-file-picker.entry.js.map +1 -0
  226. package/dist/esm/q2-item_3.entry.js +245 -0
  227. package/dist/esm/q2-item_3.entry.js.map +1 -0
  228. package/dist/esm/q2-loc.entry.js +1 -1
  229. package/dist/esm/q2-message.entry.js +1 -1
  230. package/dist/esm/q2-month-picker.entry.js +1 -1
  231. package/dist/esm/q2-optgroup.entry.js +1 -1
  232. package/dist/esm/{q2-option-list.entry.js → q2-option-list_2.entry.js} +355 -22
  233. package/dist/esm/q2-option-list_2.entry.js.map +1 -0
  234. package/dist/esm/q2-option.entry.js +18 -4
  235. package/dist/esm/q2-option.entry.js.map +1 -1
  236. package/dist/esm/q2-pagination.entry.js +4 -4
  237. package/dist/esm/q2-pill.entry.js +14 -9
  238. package/dist/esm/q2-pill.entry.js.map +1 -1
  239. package/dist/esm/q2-radio-group.entry.js +1 -1
  240. package/dist/esm/q2-radio.entry.js +1 -1
  241. package/dist/esm/q2-relative-time.entry.js +2 -2
  242. package/dist/esm/q2-resize-observer.entry.js +1 -1
  243. package/dist/esm/q2-section.entry.js +3 -3
  244. package/dist/esm/q2-select.entry.js +8 -5
  245. package/dist/esm/q2-select.entry.js.map +1 -1
  246. package/dist/esm/q2-stepper-pane.entry.js +1 -1
  247. package/dist/esm/q2-stepper-vertical.entry.js +2 -2
  248. package/dist/esm/q2-stepper.entry.js +2 -2
  249. package/dist/esm/q2-tag.entry.js +9 -4
  250. package/dist/esm/q2-tag.entry.js.map +1 -1
  251. package/dist/esm/q2-tecton-elements.js +1 -1
  252. package/dist/esm/q2-textarea.entry.js +1 -1
  253. package/dist/esm/q2-tooltip.entry.js +1 -1
  254. package/dist/esm/tecton-tab-pane.entry.js +2 -2
  255. package/dist/q2-tecton-elements/action-sheet-1e24cb38.js +80 -0
  256. package/dist/q2-tecton-elements/action-sheet-1e24cb38.js.map +1 -0
  257. package/dist/q2-tecton-elements/click-elsewhere.entry.js +90 -0
  258. package/dist/q2-tecton-elements/click-elsewhere.entry.js.map +1 -0
  259. package/dist/q2-tecton-elements/{index-d18e2a20.js → index-504f1a9e.js} +51 -69
  260. package/dist/q2-tecton-elements/index-504f1a9e.js.map +1 -0
  261. package/dist/q2-tecton-elements/q2-action-group.entry.js +57 -33
  262. package/dist/q2-tecton-elements/q2-action-group.entry.js.map +1 -1
  263. package/dist/q2-tecton-elements/q2-action-sheet.entry.js +1 -1
  264. package/dist/q2-tecton-elements/q2-avatar.entry.js +1 -1
  265. package/dist/q2-tecton-elements/q2-avatar.entry.js.map +1 -1
  266. package/dist/q2-tecton-elements/q2-badge_7.entry.js +222 -181
  267. package/dist/q2-tecton-elements/q2-badge_7.entry.js.map +1 -1
  268. package/dist/q2-tecton-elements/q2-calendar.entry.js +1 -1
  269. package/dist/q2-tecton-elements/q2-card.entry.js +1 -1
  270. package/dist/q2-tecton-elements/q2-carousel-pane.entry.js +1 -1
  271. package/dist/q2-tecton-elements/q2-carousel.entry.js +1 -1
  272. package/dist/q2-tecton-elements/q2-chart-area.entry.js +1 -1
  273. package/dist/q2-tecton-elements/q2-chart-bar.entry.js +1 -1
  274. package/dist/q2-tecton-elements/q2-chart-donut.entry.js +1 -1
  275. package/dist/q2-tecton-elements/q2-checkbox-group.entry.js +1 -1
  276. package/dist/q2-tecton-elements/q2-checkbox.entry.js +1 -1
  277. package/dist/q2-tecton-elements/q2-data-table.entry.js +1 -1
  278. package/dist/q2-tecton-elements/q2-detail.entry.js +1 -1
  279. package/dist/q2-tecton-elements/q2-dropdown-item.entry.js +34 -34
  280. package/dist/q2-tecton-elements/q2-dropdown-item.entry.js.map +1 -1
  281. package/dist/q2-tecton-elements/q2-dropdown.entry.js +86 -137
  282. package/dist/q2-tecton-elements/q2-dropdown.entry.js.map +1 -1
  283. package/dist/q2-tecton-elements/q2-editable-field.entry.js +1 -1
  284. package/dist/q2-tecton-elements/q2-file-picker.entry.js +339 -0
  285. package/dist/q2-tecton-elements/q2-file-picker.entry.js.map +1 -0
  286. package/dist/q2-tecton-elements/q2-item_3.entry.js +332 -0
  287. package/dist/q2-tecton-elements/q2-item_3.entry.js.map +1 -0
  288. package/dist/q2-tecton-elements/q2-loc.entry.js +1 -1
  289. package/dist/q2-tecton-elements/q2-message.entry.js +1 -1
  290. package/dist/q2-tecton-elements/q2-month-picker.entry.js +1 -1
  291. package/dist/q2-tecton-elements/q2-optgroup.entry.js +1 -1
  292. package/dist/q2-tecton-elements/q2-option-list_2.entry.js +902 -0
  293. package/dist/q2-tecton-elements/q2-option-list_2.entry.js.map +1 -0
  294. package/dist/q2-tecton-elements/q2-option.entry.js +31 -21
  295. package/dist/q2-tecton-elements/q2-option.entry.js.map +1 -1
  296. package/dist/q2-tecton-elements/q2-pagination.entry.js +34 -34
  297. package/dist/q2-tecton-elements/q2-pill.entry.js +24 -20
  298. package/dist/q2-tecton-elements/q2-pill.entry.js.map +1 -1
  299. package/dist/q2-tecton-elements/q2-radio-group.entry.js +1 -1
  300. package/dist/q2-tecton-elements/q2-radio.entry.js +1 -1
  301. package/dist/q2-tecton-elements/q2-relative-time.entry.js +2 -2
  302. package/dist/q2-tecton-elements/q2-resize-observer.entry.js +1 -1
  303. package/dist/q2-tecton-elements/q2-section.entry.js +19 -19
  304. package/dist/q2-tecton-elements/q2-select.entry.js +21 -18
  305. package/dist/q2-tecton-elements/q2-select.entry.js.map +1 -1
  306. package/dist/q2-tecton-elements/q2-stepper-pane.entry.js +1 -1
  307. package/dist/q2-tecton-elements/q2-stepper-vertical.entry.js +37 -37
  308. package/dist/q2-tecton-elements/q2-stepper.entry.js +29 -29
  309. package/dist/q2-tecton-elements/q2-tag.entry.js +15 -11
  310. package/dist/q2-tecton-elements/q2-tag.entry.js.map +1 -1
  311. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
  312. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js.map +1 -1
  313. package/dist/q2-tecton-elements/q2-textarea.entry.js +1 -1
  314. package/dist/q2-tecton-elements/q2-tooltip.entry.js +1 -1
  315. package/dist/q2-tecton-elements/tecton-tab-pane.entry.js +6 -6
  316. package/dist/types/components/q2-action-group/q2-action-group.d.ts +19 -11
  317. package/dist/types/components/q2-btn/q2-btn.d.ts +8 -3
  318. package/dist/types/components/q2-dropdown/q2-dropdown.d.ts +18 -9
  319. package/dist/types/components/q2-dropdown-item/q2-dropdown-item.d.ts +14 -1
  320. package/dist/types/components/q2-file-picker/q2-file-picker.d.ts +98 -0
  321. package/dist/types/components/q2-link/q2-link.d.ts +8 -6
  322. package/dist/types/components/q2-loading/q2-loading.d.ts +2 -2
  323. package/dist/types/components/q2-option/q2-option.d.ts +10 -1
  324. package/dist/types/components/q2-option-list/q2-option-list.d.ts +9 -8
  325. package/dist/types/components/q2-pill/q2-pill.d.ts +2 -2
  326. package/dist/types/components.d.ts +192 -28
  327. package/dist/types/util.d.ts +1 -0
  328. package/dist/types/utils/helpers.d.ts +1 -1
  329. package/package.json +4 -3
  330. package/dist/cjs/action-sheet-d32c41ae.js.map +0 -1
  331. package/dist/cjs/click-elsewhere_2.cjs.entry.js +0 -406
  332. package/dist/cjs/click-elsewhere_2.cjs.entry.js.map +0 -1
  333. package/dist/cjs/index-07285783.js.map +0 -1
  334. package/dist/cjs/q2-item.cjs.entry.js +0 -120
  335. package/dist/cjs/q2-item.cjs.entry.js.map +0 -1
  336. package/dist/cjs/q2-link.cjs.entry.js +0 -64
  337. package/dist/cjs/q2-link.cjs.entry.js.map +0 -1
  338. package/dist/cjs/q2-list.cjs.entry.js +0 -83
  339. package/dist/cjs/q2-list.cjs.entry.js.map +0 -1
  340. package/dist/cjs/q2-option-list.cjs.entry.js.map +0 -1
  341. package/dist/esm/action-sheet-e64cb6f7.js.map +0 -1
  342. package/dist/esm/click-elsewhere_2.entry.js +0 -401
  343. package/dist/esm/click-elsewhere_2.entry.js.map +0 -1
  344. package/dist/esm/index-d18e2a20.js.map +0 -1
  345. package/dist/esm/q2-item.entry.js.map +0 -1
  346. package/dist/esm/q2-link.entry.js.map +0 -1
  347. package/dist/esm/q2-list.entry.js.map +0 -1
  348. package/dist/esm/q2-option-list.entry.js.map +0 -1
  349. package/dist/q2-tecton-elements/action-sheet-e64cb6f7.js +0 -77
  350. package/dist/q2-tecton-elements/action-sheet-e64cb6f7.js.map +0 -1
  351. package/dist/q2-tecton-elements/click-elsewhere_2.entry.js +0 -398
  352. package/dist/q2-tecton-elements/click-elsewhere_2.entry.js.map +0 -1
  353. package/dist/q2-tecton-elements/index-d18e2a20.js.map +0 -1
  354. package/dist/q2-tecton-elements/q2-item.entry.js +0 -158
  355. package/dist/q2-tecton-elements/q2-item.entry.js.map +0 -1
  356. package/dist/q2-tecton-elements/q2-link.entry.js +0 -83
  357. package/dist/q2-tecton-elements/q2-link.entry.js.map +0 -1
  358. package/dist/q2-tecton-elements/q2-list.entry.js +0 -100
  359. package/dist/q2-tecton-elements/q2-list.entry.js.map +0 -1
  360. package/dist/q2-tecton-elements/q2-option-list.entry.js +0 -585
  361. package/dist/q2-tecton-elements/q2-option-list.entry.js.map +0 -1
@@ -42,6 +42,7 @@ export class Q2Option {
42
42
  this.multiline = undefined;
43
43
  this.role = 'option';
44
44
  this.selected = undefined;
45
+ this.separator = undefined;
45
46
  this.value = undefined;
46
47
  }
47
48
  // #endregion
@@ -52,6 +53,7 @@ export class Q2Option {
52
53
  this.mutationObserver = null;
53
54
  }
54
55
  componentWillLoad() {
56
+ this.separatorChangedHandler(this.separator);
55
57
  this.initDisplay();
56
58
  }
57
59
  componentDidLoad() {
@@ -60,6 +62,11 @@ export class Q2Option {
60
62
  }
61
63
  // #endregion
62
64
  // #region Watchers
65
+ async separatorChangedHandler(separator) {
66
+ if (!separator)
67
+ return;
68
+ this.role = 'separator';
69
+ }
63
70
  async displayChangedHandler() {
64
71
  this.display = loc(this.display);
65
72
  await this.handleTextContent();
@@ -67,10 +74,16 @@ export class Q2Option {
67
74
  }
68
75
  // #endregion
69
76
  // #region Render Methods
70
- render() {
77
+ renderSeparator() {
78
+ return h("div", { class: "separator" });
79
+ }
80
+ renderOption() {
71
81
  const { display, disabled, disabledGroup, selected, _multiSelectHidden } = this;
72
82
  const isDisabled = disabled || disabledGroup;
73
- return (h(Host, { key: '70d5ca1da1b82a1406cdeb6f2db5e0f0ade4d727', tabindex: "-1", "aria-disabled": isDisabled ? 'true' : undefined, "aria-selected": `${!!selected}`, "aria-hidden": _multiSelectHidden ? 'true' : undefined, display: loc(display) }, this.selected && h("q2-icon", { key: '2803339b76a90830b9db0ba482cbaf2a66c1e8a4', type: "checkmark" }), h("div", { key: '77ed1a226afe2f65c3e08d42e4f380e1e3a6e1f4', class: "content" }, h("slot", { key: '569d40708b0736d1ff693104fd7af7fe4842931c' }))));
83
+ return (h(Host, { tabindex: "-1", "aria-disabled": isDisabled ? 'true' : undefined, "aria-selected": `${!!selected}`, "aria-hidden": _multiSelectHidden ? 'true' : undefined, display: loc(display) }, this.selected && h("q2-icon", { type: "checkmark" }), h("div", { class: "content" }, h("slot", null))));
84
+ }
85
+ render() {
86
+ return this.separator ? this.renderSeparator() : this.renderOption();
74
87
  }
75
88
  static get is() { return "q2-option"; }
76
89
  static get encapsulation() { return "shadow"; }
@@ -203,7 +216,7 @@ export class Q2Option {
203
216
  },
204
217
  "role": {
205
218
  "type": "string",
206
- "mutable": false,
219
+ "mutable": true,
207
220
  "complexType": {
208
221
  "original": "string",
209
222
  "resolved": "string",
@@ -214,7 +227,7 @@ export class Q2Option {
214
227
  "docs": {
215
228
  "tags": [{
216
229
  "name": "type",
217
- "text": "{('option' | 'menuitem')}"
230
+ "text": "{('option' | 'menuitem' | 'separator')}"
218
231
  }, {
219
232
  "name": "private",
220
233
  "text": undefined
@@ -245,6 +258,23 @@ export class Q2Option {
245
258
  "attribute": "selected",
246
259
  "reflect": true
247
260
  },
261
+ "separator": {
262
+ "type": "boolean",
263
+ "mutable": false,
264
+ "complexType": {
265
+ "original": "boolean",
266
+ "resolved": "boolean",
267
+ "references": {}
268
+ },
269
+ "required": false,
270
+ "optional": false,
271
+ "docs": {
272
+ "tags": [],
273
+ "text": "Renders a line in the item instead of text.\nClick events from these items will not have details provided.\nA `separator` allows for quick visual grouping of items, so interactions should not be bound to these options."
274
+ },
275
+ "attribute": "separator",
276
+ "reflect": true
277
+ },
248
278
  "value": {
249
279
  "type": "string",
250
280
  "mutable": false,
@@ -288,6 +318,9 @@ export class Q2Option {
288
318
  static get elementRef() { return "hostElement"; }
289
319
  static get watchers() {
290
320
  return [{
321
+ "propName": "separator",
322
+ "methodName": "separatorChangedHandler"
323
+ }, {
291
324
  "propName": "display",
292
325
  "methodName": "displayChangedHandler"
293
326
  }];
@@ -1 +1 @@
1
- {"version":3,"file":"q2-option.js","sourceRoot":"","sources":["../../../src/components/q2-option/q2-option.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Prop, h, Element, ComponentInterface, Host, Event, EventEmitter, Watch } from '@stencil/core';\nimport { getAllText, loc } from '@/utils';\n\n@Component({ tag: 'q2-option', shadow: true, styleUrl: 'q2-option.scss' })\nexport class Q2Option implements ComponentInterface {\n // #region Own Properties\n\n displayProvidedAtInit: boolean;\n mutationObserver: MutationObserver;\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region Public Property API\n\n @Prop({ reflect: true, attribute: '_multiSelectHidden' })\n _multiSelectHidden: boolean = false;\n\n /**\n * Used by q2-option-list to indicate the option is active\n * @private\n */\n @Prop({ reflect: true })\n active: boolean;\n\n /** Disables the option. */\n @Prop({ reflect: true })\n disabled: boolean;\n\n /**\n * Used by consuming elements to disable all options in the group\n * @private\n */\n @Prop({ reflect: true })\n disabledGroup: boolean;\n\n /**\n * The text that is displayed in the field when selected. If not provided, any text inside the element will be used.\n * @localizable\n */\n @Prop({ reflect: true, mutable: true })\n display: string;\n\n /**\n * Used by consuming elements to enable multiline content support\n * @private\n */\n @Prop({ reflect: true })\n multiline: boolean;\n\n /**\n * Used by q2-option-list to set a role on the option\n * @type {('option' | 'menuitem')}\n * @private\n */\n @Prop({ reflect: true })\n role: string = 'option';\n\n /**\n * Used by q2-option-list to indicate the option is selected\n * @private\n */\n @Prop({ reflect: true })\n selected: boolean;\n\n /** Serves as the option's value. */\n @Prop({ reflect: true })\n value: string;\n\n // #endregion\n // #region Events\n\n /**\n * Used by consuming elements to indicate the display value of the option has changed.\n * @private\n */\n @Event()\n displayChanged: EventEmitter<{ value: string; display: string }>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback() {\n this.mutationObserver?.disconnect();\n this.mutationObserver = null;\n }\n\n componentWillLoad() {\n this.initDisplay();\n }\n\n componentDidLoad() {\n if ('MutationObserver' in window) this.initMutationObserver();\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('display')\n async displayChangedHandler() {\n this.display = loc(this.display);\n await this.handleTextContent();\n this.displayChanged.emit({ display: this.display, value: this.value });\n }\n\n // #endregion\n // #region Local Methods\n\n handleTextContent = async () => {\n if (this.multiline) return;\n const textContent = await getAllText(this.hostElement);\n if (this.display === textContent) return;\n if (this.display && !textContent) this.hostElement.textContent = loc(this.display);\n };\n\n initDisplay = async () => {\n if (this.multiline) return;\n const textContent = await getAllText(this.hostElement);\n if (this.display) this.displayProvidedAtInit = true;\n this.display = !!this.display ? loc(this.display) : textContent;\n await this.handleTextContent();\n };\n\n initMutationObserver = () => {\n const observer = new MutationObserver(this.mutationHandler);\n observer.observe(this.hostElement, { childList: true, subtree: true, characterData: true });\n this.mutationObserver = observer;\n };\n\n mutationHandler = async () => {\n const allTextContent = await getAllText(this.hostElement);\n if (this.display === allTextContent || this.multiline) return;\n if (!this.displayProvidedAtInit) this.display = allTextContent;\n };\n\n // #endregion\n // #region Render Methods\n\n render() {\n const { display, disabled, disabledGroup, selected, _multiSelectHidden } = this;\n const isDisabled = disabled || disabledGroup;\n\n return (\n <Host\n tabindex=\"-1\"\n aria-disabled={isDisabled ? 'true' : undefined}\n aria-selected={`${!!selected}`}\n aria-hidden={_multiSelectHidden ? 'true' : undefined}\n display={loc(display)}\n >\n {this.selected && <q2-icon type=\"checkmark\" />}\n <div class=\"content\">\n <slot />\n </div>\n </Host>\n );\n }\n\n // #endregion\n}\n"]}
1
+ {"version":3,"file":"q2-option.js","sourceRoot":"","sources":["../../../src/components/q2-option/q2-option.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Prop, h, Element, ComponentInterface, Host, Event, EventEmitter, Watch } from '@stencil/core';\nimport { getAllText, loc } from '@/utils';\n\n@Component({ tag: 'q2-option', shadow: true, styleUrl: 'q2-option.scss' })\nexport class Q2Option implements ComponentInterface {\n // #region Own Properties\n\n displayProvidedAtInit: boolean;\n mutationObserver: MutationObserver;\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region Public Property API\n\n @Prop({ reflect: true, attribute: '_multiSelectHidden' })\n _multiSelectHidden: boolean = false;\n\n /**\n * Used by q2-option-list to indicate the option is active\n * @private\n */\n @Prop({ reflect: true })\n active: boolean;\n\n /** Disables the option. */\n @Prop({ reflect: true })\n disabled: boolean;\n\n /**\n * Used by consuming elements to disable all options in the group\n * @private\n */\n @Prop({ reflect: true })\n disabledGroup: boolean;\n\n /**\n * The text that is displayed in the field when selected. If not provided, any text inside the element will be used.\n * @localizable\n */\n @Prop({ reflect: true, mutable: true })\n display: string;\n\n /**\n * Used by consuming elements to enable multiline content support\n * @private\n */\n @Prop({ reflect: true })\n multiline: boolean;\n\n /**\n * Used by q2-option-list to set a role on the option\n * @type {('option' | 'menuitem' | 'separator')}\n * @private\n */\n @Prop({ reflect: true, mutable: true })\n role: string = 'option';\n\n /**\n * Used by q2-option-list to indicate the option is selected\n * @private\n */\n @Prop({ reflect: true })\n selected: 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 /** Serves as the option's value. */\n @Prop({ reflect: true })\n value: string;\n\n // #endregion\n // #region Events\n\n /**\n * Used by consuming elements to indicate the display value of the option has changed.\n * @private\n */\n @Event()\n displayChanged: EventEmitter<{ value: string; display: string }>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback() {\n this.mutationObserver?.disconnect();\n this.mutationObserver = null;\n }\n\n componentWillLoad() {\n this.separatorChangedHandler(this.separator);\n this.initDisplay();\n }\n\n componentDidLoad() {\n if ('MutationObserver' in window) this.initMutationObserver();\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('separator')\n async separatorChangedHandler(separator: boolean) {\n if (!separator) return;\n this.role = 'separator';\n }\n\n @Watch('display')\n async displayChangedHandler() {\n this.display = loc(this.display);\n await this.handleTextContent();\n this.displayChanged.emit({ display: this.display, value: this.value });\n }\n\n // #endregion\n // #region Local Methods\n\n handleTextContent = async () => {\n if (this.multiline) return;\n const textContent = await getAllText(this.hostElement);\n if (this.display === textContent) return;\n if (this.display && !textContent) this.hostElement.textContent = loc(this.display);\n };\n\n initDisplay = async () => {\n if (this.multiline) return;\n const textContent = await getAllText(this.hostElement);\n if (this.display) this.displayProvidedAtInit = true;\n this.display = !!this.display ? loc(this.display) : textContent;\n await this.handleTextContent();\n };\n\n initMutationObserver = () => {\n const observer = new MutationObserver(this.mutationHandler);\n observer.observe(this.hostElement, { childList: true, subtree: true, characterData: true });\n this.mutationObserver = observer;\n };\n\n mutationHandler = async () => {\n const allTextContent = await getAllText(this.hostElement);\n if (this.display === allTextContent || this.multiline) return;\n if (!this.displayProvidedAtInit) this.display = allTextContent;\n };\n\n // #endregion\n // #region Render Methods\n\n renderSeparator() {\n return <div class=\"separator\"></div>;\n }\n\n renderOption() {\n const { display, disabled, disabledGroup, selected, _multiSelectHidden } = this;\n const isDisabled = disabled || disabledGroup;\n return (\n <Host\n tabindex=\"-1\"\n aria-disabled={isDisabled ? 'true' : undefined}\n aria-selected={`${!!selected}`}\n aria-hidden={_multiSelectHidden ? 'true' : undefined}\n display={loc(display)}\n >\n {this.selected && <q2-icon type=\"checkmark\" />}\n <div class=\"content\">\n <slot />\n </div>\n </Host>\n );\n }\n\n render() {\n return this.separator ? this.renderSeparator() : this.renderOption();\n }\n\n // #endregion\n}\n"]}
@@ -295,6 +295,28 @@ describe('q2-option', () => {
295
295
  });
296
296
  });
297
297
  });
298
+ describe('separator', () => {
299
+ describe('when provided', () => {
300
+ it('renders an element with a class of separator', async () => {
301
+ specPage = await setupSpecPageWithLoc({
302
+ components: [Q2Option],
303
+ html: '<q2-option separator></q2-option>',
304
+ });
305
+ expect(specPage.root.shadowRoot.querySelector('.separator')).toBeTruthy();
306
+ expect(specPage.root.role).toBe('separator');
307
+ });
308
+ });
309
+ describe('when not provided', () => {
310
+ it('does not render an element with a class of separator', async () => {
311
+ specPage = await setupSpecPageWithLoc({
312
+ components: [Q2Option],
313
+ html: '<q2-option></q2-option>',
314
+ });
315
+ expect(specPage.root.shadowRoot.querySelector('.separator')).toBeNull();
316
+ expect(specPage.root.role).toBe('option');
317
+ });
318
+ });
319
+ });
298
320
  describe('value', () => {
299
321
  describe('when provided', () => {
300
322
  it('sets the value property to the provided value', async () => {
@@ -1 +1 @@
1
- {"version":3,"file":"q2-option-test.spec.js","sourceRoot":"","sources":["../../../../src/components/q2-option/test/q2-option-test.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { SpecPage } from '@stencil/core/testing';\nimport { setupSpecPageWithLoc } from '@/utils/helpers';\nimport { Q2Option } from '../q2-option';\n\ndescribe('q2-option', () => {\n let specPage: SpecPage;\n let optionClass;\n let optionElement;\n const testStringsDict = {\n 'tecton.element.option.test': 'Option Text',\n 'tecton.element.option.changed': 'Option Changed',\n 'tecton.element.loc.test': 'Loc Text',\n };\n\n describe('Initialization', () => {\n it('renders with default attributes', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option></q2-option>',\n });\n optionClass = specPage.rootInstance;\n optionElement = specPage.root;\n\n expect(optionClass).toBeTruthy();\n expect(optionClass._multiSelectHidden).toBeFalsy();\n expect(optionClass.active).toBeFalsy();\n expect(optionClass.disabled).toBeFalsy();\n expect(optionClass.disabledGroup).toBeFalsy();\n expect(optionClass.display).toBe('');\n expect(optionClass.multiline).toBeFalsy();\n expect(optionClass.role).toBe('option');\n expect(optionClass.selected).toBeFalsy();\n expect(optionClass.value).toBeFalsy();\n expect(optionElement).toBeTruthy();\n expect(optionElement.getAttribute('tabindex')).toBe('-1');\n expect(optionElement.getAttribute('aria-disabled')).toBeFalsy();\n expect(optionElement.getAttribute('aria-selected')).toBe('false');\n expect(optionElement.getAttribute('aria-hidden')).toBeFalsy();\n });\n });\n\n describe('Props', () => {\n describe('_multiSelectHidden', () => {\n describe('when provided', () => {\n it('sets aria-hidden to true', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option _multiSelectHidden></q2-option>',\n });\n optionElement = specPage.root;\n expect(optionElement.getAttribute('aria-hidden')).toBe('true');\n });\n });\n describe('when not provided', () => {\n it('sets aria-hidden to false', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option></q2-option>',\n });\n optionElement = specPage.root;\n expect(optionElement.getAttribute('aria-hidden')).toBeFalsy();\n });\n });\n });\n describe('active', () => {\n describe('when provided', () => {\n it('sets the property to true', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option active></q2-option>',\n });\n optionClass = specPage.rootInstance;\n expect(optionClass.active).toBe(true);\n });\n it('sets the property to false', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option active=\"false\"></q2-option>',\n });\n optionClass = specPage.rootInstance;\n expect(optionClass.active).toBe(false);\n });\n });\n describe('when not provided', () => {\n it('sets the property to undefined', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option></q2-option>',\n });\n optionClass = specPage.rootInstance;\n expect(optionClass.active).toBeUndefined();\n });\n });\n });\n describe('disabled', () => {\n describe('when provided', () => {\n describe('when true', () => {\n it('sets aria-disabled to true', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option disabled></q2-option>',\n });\n optionElement = specPage.root;\n expect(optionElement.getAttribute('aria-disabled')).toBe('true');\n });\n });\n describe('when false', () => {\n it('does not set the aria-disabled attribute', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option disabled=\"false\"></q2-option>',\n });\n optionElement = specPage.root;\n expect(optionElement.getAttribute('aria-disabled')).toBeNull();\n });\n });\n });\n describe('when not provided', () => {\n it('does not set the aria-disabled attribute', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option></q2-option>',\n });\n optionElement = specPage.root;\n expect(optionElement.getAttribute('aria-disabled')).toBeNull();\n });\n });\n });\n describe('disabledGroup', () => {\n describe('when provided', () => {\n describe('when true', () => {\n it('sets aria-disabled to true', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option disabled-group></q2-option>',\n });\n optionElement = specPage.root;\n expect(optionElement.getAttribute('aria-disabled')).toBe('true');\n });\n });\n describe('when false', () => {\n it('does not set the aria-disabled attribute', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option disabled-group=\"false\"></q2-option>',\n });\n optionElement = specPage.root;\n expect(optionElement.getAttribute('aria-disabled')).toBeNull();\n });\n });\n });\n describe('when not provided', () => {\n it('does not set the aria-disabled attribute', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option></q2-option>',\n });\n optionElement = specPage.root;\n expect(optionElement.getAttribute('aria-disabled')).toBeNull();\n });\n });\n });\n describe('display', () => {\n describe('when provided', () => {\n it('sets the value of the display property', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option display=\"My Display\"></q2-option>',\n });\n optionClass = specPage.rootInstance;\n optionElement = specPage.root;\n expect(optionClass.display).toBe('My Display');\n expect(optionElement.display).toBe('My Display');\n });\n it('translates the provided value', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Option],\n html: '<q2-option display=\"tecton.element.option.test\"></q2-option>',\n },\n testStringsDict\n );\n optionClass = specPage.rootInstance;\n optionElement = specPage.root;\n expect(optionClass.display).toBe('Option Text');\n expect(optionElement.display).toBe('Option Text');\n });\n it('stays the source of truth if textContent changes', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option display=\"My Display\">Option Text</q2-option>',\n });\n optionClass = specPage.rootInstance;\n optionElement = specPage.root;\n optionElement.textContent = 'Option Text Changed';\n await specPage.waitForChanges();\n expect(optionClass.display).toBe('My Display');\n expect(optionElement.display).toBe('My Display');\n });\n });\n describe('when not provided', () => {\n it('sets display to an empty string', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option></q2-option>',\n });\n optionElement = specPage.root;\n expect(optionElement.display).toBe('');\n });\n it('it sets display to the textContent of the element', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option>Option Text</q2-option>',\n });\n optionElement = specPage.root;\n expect(optionElement.display).toBe('Option Text');\n });\n });\n });\n describe('multiline', () => {\n describe('when provided', () => {\n it('prevents initDisplay() from setting display to textContent', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option multiline>Option Text</q2-option>',\n });\n optionElement = specPage.root;\n expect(optionElement.display).toBeUndefined();\n });\n it('prevents handleTextContent() from setting textContent to display', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option multiline display=\"Option Text\"></q2-option>',\n });\n optionElement = specPage.root;\n expect(optionElement.textContent).toBe('');\n });\n });\n describe('when not provided', () => {\n it('does not short circuit the initDisplay() local method', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option>Option Text</q2-option>',\n });\n optionElement = specPage.root;\n expect(optionElement.display).toBe('Option Text');\n });\n it('does not short circuit the handleTextContent() local method', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option display=\"Option Text\"></q2-option>',\n });\n optionElement = specPage.root;\n expect(optionElement.textContent).toBe('Option Text');\n });\n });\n });\n describe('role', () => {\n describe('when provided', () => {\n it('sets the role property to the provided value', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option role=\"listitem\"></q2-option>',\n });\n optionClass = specPage.rootInstance;\n expect(optionClass.role).toBe('listitem');\n });\n });\n describe('when not provided', () => {\n it('defaults to \"option\"', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option></q2-option>',\n });\n optionClass = specPage.rootInstance;\n expect(optionClass.role).toBe('option');\n });\n });\n });\n describe('selected', () => {\n describe('when provided', () => {\n it('sets aria-selected to true', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option selected></q2-option>',\n });\n optionElement = specPage.root;\n const iconElement = optionElement.shadowRoot.querySelector('q2-icon[type=\"checkmark\"]');\n expect(optionElement.getAttribute('aria-selected')).toBe('true');\n expect(iconElement).toBeTruthy();\n });\n });\n describe('when not provided', () => {\n it('sets aria-selected to false', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option></q2-option>',\n });\n optionElement = specPage.root;\n const iconElement = optionElement.shadowRoot.querySelector('q2-icon[type=\"checkmark\"]');\n expect(optionElement.getAttribute('aria-selected')).toBe('false');\n expect(iconElement).toBeNull();\n });\n });\n });\n describe('value', () => {\n describe('when provided', () => {\n it('sets the value property to the provided value', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option value=\"My Value\"></q2-option>',\n });\n optionClass = specPage.rootInstance;\n expect(optionClass.value).toBe('My Value');\n });\n });\n describe('when not provided', () => {\n it('defaults to undefined', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option></q2-option>',\n });\n optionClass = specPage.rootInstance;\n expect(optionClass.value).toBeUndefined();\n });\n });\n });\n });\n\n describe('Events', () => {\n describe('displayChanged', () => {\n it('emits the event when invoked', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option></q2-option>',\n });\n optionClass = specPage.rootInstance;\n optionElement = specPage.root;\n const displayChangedSpy = jest.spyOn(optionClass.displayChanged, 'emit');\n optionClass.displayChanged.emit();\n await specPage.waitForChanges();\n expect(displayChangedSpy).toHaveBeenCalled();\n });\n it('emits the event when display is changed', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option></q2-option>',\n });\n optionClass = specPage.rootInstance;\n optionElement = specPage.root;\n const displayChangedSpy = jest.spyOn(optionClass.displayChanged, 'emit');\n optionClass.display = 'Option Changed';\n await specPage.waitForChanges();\n expect(displayChangedSpy).toHaveBeenCalled();\n });\n it('event detail contains the display and value props', async () => {\n specPage = await setupSpecPageWithLoc(\n { components: [Q2Option], html: '<q2-option value=\"My Value\" display=\"Option Text\"></q2-option>' },\n testStringsDict\n );\n optionClass = specPage.rootInstance;\n optionElement = specPage.root;\n const displayChangedSpy = jest.spyOn(optionClass.displayChanged, 'emit');\n optionClass.display = 'Option Changed';\n await specPage.waitForChanges();\n expect(displayChangedSpy).toHaveBeenCalled();\n expect(displayChangedSpy).toHaveBeenCalledWith({\n display: 'Option Changed',\n value: 'My Value',\n });\n });\n it('emits when no display provided and textContent changes', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option></q2-option>',\n });\n optionClass = specPage.rootInstance;\n optionElement = specPage.root;\n const displayChangedSpy = jest.spyOn(optionClass.displayChanged, 'emit');\n optionElement.textContent = 'Option Text Changed';\n await specPage.waitForChanges();\n optionClass.mutationHandler();\n await specPage.waitForChanges();\n expect(displayChangedSpy).toHaveBeenCalledWith({\n display: 'Option Text Changed',\n value: undefined,\n });\n });\n it('does not emit if textContent changes and display was already provided', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option display=\"Option Text\"></q2-option>',\n });\n optionClass = specPage.rootInstance;\n optionElement = specPage.root;\n const displayChangedSpy = jest.spyOn(optionClass.displayChanged, 'emit');\n optionElement.textContent = 'Option Text Changed';\n optionClass.mutationHandler();\n await specPage.waitForChanges();\n expect(displayChangedSpy).not.toHaveBeenCalled();\n });\n });\n });\n\n describe('Watchers', () => {\n describe('display', () => {\n it('translates the new display value', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Option],\n html: '<q2-option display=\"tecton.element.option.test\"></q2-option>',\n },\n testStringsDict\n );\n optionClass = specPage.rootInstance;\n optionElement = specPage.root;\n expect(optionElement.display).toBe('Option Text');\n optionClass.display = 'tecton.element.option.changed';\n expect(optionElement.display).toBe('Option Changed');\n });\n it('triggers handleTextContent() local method', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option display=\"Option Text\"></q2-option>',\n });\n optionClass = specPage.rootInstance;\n const handleTextContentSpy = jest.spyOn(optionClass, 'handleTextContent');\n optionClass.display = 'New Display Text';\n await specPage.waitForChanges();\n expect(handleTextContentSpy).toHaveBeenCalled();\n });\n it('emits the displayChanged event with the a translated display value', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Option],\n html: '<q2-option value=\"My Value\" display=\"Option Text\"></q2-option>',\n },\n testStringsDict\n );\n optionClass = specPage.rootInstance;\n const displayChangedSpy = jest.spyOn(optionClass.displayChanged, 'emit');\n optionClass.display = 'tecton.element.option.changed';\n await specPage.waitForChanges();\n expect(displayChangedSpy).toHaveBeenCalledWith({\n display: 'Option Changed',\n value: 'My Value',\n });\n });\n });\n });\n\n describe('Local Methods', () => {\n describe('handleTextContent', () => {\n it('sets the hostElement textContent if none exists and display is provided', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option display=\"Option Text\"></q2-option>',\n });\n optionClass = specPage.rootInstance;\n optionElement = specPage.root;\n optionClass.handleTextContent();\n await specPage.waitForChanges();\n expect(optionElement.textContent).toBe('Option Text');\n });\n });\n describe('initDisplay', () => {\n describe('when display is provided', () => {\n it('sets displayProvidedAtInit to true', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option display=\"Option Text\"></q2-option>',\n });\n optionClass = specPage.rootInstance;\n expect(optionClass.displayProvidedAtInit).toBe(true);\n });\n it('sets display to the provided value', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option display=\"Option Text\"></q2-option>',\n });\n optionClass = specPage.rootInstance;\n expect(optionClass.display).toBe('Option Text');\n });\n it('sets display to the translated value', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Option],\n html: '<q2-option display=\"tecton.element.option.test\"></q2-option>',\n },\n testStringsDict\n );\n optionClass = specPage.rootInstance;\n expect(optionClass.display).toBe('Option Text');\n });\n });\n describe('when display is not provided', () => {\n it('sets display to the textContent of the hostElement', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option>Option Text</q2-option>',\n });\n optionClass = specPage.rootInstance;\n expect(optionClass.display).toBe('Option Text');\n });\n it('sets display to the translated textContent of the hostElement', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Option],\n html: '<q2-option>tecton.element.option.test</q2-option>',\n },\n testStringsDict\n );\n optionClass = specPage.rootInstance;\n expect(optionClass.display).toBe('Option Text');\n });\n });\n it('fires handleTextContent() when multiline is not provided', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option display=\"Option Text\"></q2-option>',\n });\n optionClass = specPage.rootInstance;\n const handleTextContentSpy = jest.spyOn(optionClass, 'handleTextContent');\n optionClass.initDisplay();\n await specPage.waitForChanges();\n expect(handleTextContentSpy).toHaveBeenCalled();\n });\n });\n describe('mutationHandler', () => {\n it('if display matches textContent it does not change display value', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option display=\"Option Text\"></q2-option>',\n });\n optionClass = specPage.rootInstance;\n optionElement = specPage.root;\n const displayChangedSpy = jest.spyOn(optionClass.displayChanged, 'emit');\n optionElement.textContent = 'Option Text';\n await specPage.waitForChanges();\n expect(optionClass.display).toBe('Option Text');\n expect(displayChangedSpy).not.toHaveBeenCalled();\n });\n it('sets the value of display if it was not provided at init', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option></q2-option>',\n });\n optionClass = specPage.rootInstance;\n optionElement = specPage.root;\n optionElement.textContent = 'Option Text';\n optionClass.mutationHandler();\n await specPage.waitForChanges();\n expect(optionClass.display).toBe('Option Text');\n });\n });\n });\n});\n"]}
1
+ {"version":3,"file":"q2-option-test.spec.js","sourceRoot":"","sources":["../../../../src/components/q2-option/test/q2-option-test.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { SpecPage } from '@stencil/core/testing';\nimport { setupSpecPageWithLoc } from '@/utils/helpers';\nimport { Q2Option } from '../q2-option';\n\ndescribe('q2-option', () => {\n let specPage: SpecPage;\n let optionClass;\n let optionElement;\n const testStringsDict = {\n 'tecton.element.option.test': 'Option Text',\n 'tecton.element.option.changed': 'Option Changed',\n 'tecton.element.loc.test': 'Loc Text',\n };\n\n describe('Initialization', () => {\n it('renders with default attributes', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option></q2-option>',\n });\n optionClass = specPage.rootInstance;\n optionElement = specPage.root;\n\n expect(optionClass).toBeTruthy();\n expect(optionClass._multiSelectHidden).toBeFalsy();\n expect(optionClass.active).toBeFalsy();\n expect(optionClass.disabled).toBeFalsy();\n expect(optionClass.disabledGroup).toBeFalsy();\n expect(optionClass.display).toBe('');\n expect(optionClass.multiline).toBeFalsy();\n expect(optionClass.role).toBe('option');\n expect(optionClass.selected).toBeFalsy();\n expect(optionClass.value).toBeFalsy();\n expect(optionElement).toBeTruthy();\n expect(optionElement.getAttribute('tabindex')).toBe('-1');\n expect(optionElement.getAttribute('aria-disabled')).toBeFalsy();\n expect(optionElement.getAttribute('aria-selected')).toBe('false');\n expect(optionElement.getAttribute('aria-hidden')).toBeFalsy();\n });\n });\n\n describe('Props', () => {\n describe('_multiSelectHidden', () => {\n describe('when provided', () => {\n it('sets aria-hidden to true', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option _multiSelectHidden></q2-option>',\n });\n optionElement = specPage.root;\n expect(optionElement.getAttribute('aria-hidden')).toBe('true');\n });\n });\n describe('when not provided', () => {\n it('sets aria-hidden to false', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option></q2-option>',\n });\n optionElement = specPage.root;\n expect(optionElement.getAttribute('aria-hidden')).toBeFalsy();\n });\n });\n });\n describe('active', () => {\n describe('when provided', () => {\n it('sets the property to true', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option active></q2-option>',\n });\n optionClass = specPage.rootInstance;\n expect(optionClass.active).toBe(true);\n });\n it('sets the property to false', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option active=\"false\"></q2-option>',\n });\n optionClass = specPage.rootInstance;\n expect(optionClass.active).toBe(false);\n });\n });\n describe('when not provided', () => {\n it('sets the property to undefined', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option></q2-option>',\n });\n optionClass = specPage.rootInstance;\n expect(optionClass.active).toBeUndefined();\n });\n });\n });\n describe('disabled', () => {\n describe('when provided', () => {\n describe('when true', () => {\n it('sets aria-disabled to true', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option disabled></q2-option>',\n });\n optionElement = specPage.root;\n expect(optionElement.getAttribute('aria-disabled')).toBe('true');\n });\n });\n describe('when false', () => {\n it('does not set the aria-disabled attribute', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option disabled=\"false\"></q2-option>',\n });\n optionElement = specPage.root;\n expect(optionElement.getAttribute('aria-disabled')).toBeNull();\n });\n });\n });\n describe('when not provided', () => {\n it('does not set the aria-disabled attribute', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option></q2-option>',\n });\n optionElement = specPage.root;\n expect(optionElement.getAttribute('aria-disabled')).toBeNull();\n });\n });\n });\n describe('disabledGroup', () => {\n describe('when provided', () => {\n describe('when true', () => {\n it('sets aria-disabled to true', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option disabled-group></q2-option>',\n });\n optionElement = specPage.root;\n expect(optionElement.getAttribute('aria-disabled')).toBe('true');\n });\n });\n describe('when false', () => {\n it('does not set the aria-disabled attribute', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option disabled-group=\"false\"></q2-option>',\n });\n optionElement = specPage.root;\n expect(optionElement.getAttribute('aria-disabled')).toBeNull();\n });\n });\n });\n describe('when not provided', () => {\n it('does not set the aria-disabled attribute', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option></q2-option>',\n });\n optionElement = specPage.root;\n expect(optionElement.getAttribute('aria-disabled')).toBeNull();\n });\n });\n });\n describe('display', () => {\n describe('when provided', () => {\n it('sets the value of the display property', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option display=\"My Display\"></q2-option>',\n });\n optionClass = specPage.rootInstance;\n optionElement = specPage.root;\n expect(optionClass.display).toBe('My Display');\n expect(optionElement.display).toBe('My Display');\n });\n it('translates the provided value', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Option],\n html: '<q2-option display=\"tecton.element.option.test\"></q2-option>',\n },\n testStringsDict\n );\n optionClass = specPage.rootInstance;\n optionElement = specPage.root;\n expect(optionClass.display).toBe('Option Text');\n expect(optionElement.display).toBe('Option Text');\n });\n it('stays the source of truth if textContent changes', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option display=\"My Display\">Option Text</q2-option>',\n });\n optionClass = specPage.rootInstance;\n optionElement = specPage.root;\n optionElement.textContent = 'Option Text Changed';\n await specPage.waitForChanges();\n expect(optionClass.display).toBe('My Display');\n expect(optionElement.display).toBe('My Display');\n });\n });\n describe('when not provided', () => {\n it('sets display to an empty string', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option></q2-option>',\n });\n optionElement = specPage.root;\n expect(optionElement.display).toBe('');\n });\n it('it sets display to the textContent of the element', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option>Option Text</q2-option>',\n });\n optionElement = specPage.root;\n expect(optionElement.display).toBe('Option Text');\n });\n });\n });\n describe('multiline', () => {\n describe('when provided', () => {\n it('prevents initDisplay() from setting display to textContent', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option multiline>Option Text</q2-option>',\n });\n optionElement = specPage.root;\n expect(optionElement.display).toBeUndefined();\n });\n it('prevents handleTextContent() from setting textContent to display', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option multiline display=\"Option Text\"></q2-option>',\n });\n optionElement = specPage.root;\n expect(optionElement.textContent).toBe('');\n });\n });\n describe('when not provided', () => {\n it('does not short circuit the initDisplay() local method', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option>Option Text</q2-option>',\n });\n optionElement = specPage.root;\n expect(optionElement.display).toBe('Option Text');\n });\n it('does not short circuit the handleTextContent() local method', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option display=\"Option Text\"></q2-option>',\n });\n optionElement = specPage.root;\n expect(optionElement.textContent).toBe('Option Text');\n });\n });\n });\n describe('role', () => {\n describe('when provided', () => {\n it('sets the role property to the provided value', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option role=\"listitem\"></q2-option>',\n });\n optionClass = specPage.rootInstance;\n expect(optionClass.role).toBe('listitem');\n });\n });\n describe('when not provided', () => {\n it('defaults to \"option\"', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option></q2-option>',\n });\n optionClass = specPage.rootInstance;\n expect(optionClass.role).toBe('option');\n });\n });\n });\n describe('selected', () => {\n describe('when provided', () => {\n it('sets aria-selected to true', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option selected></q2-option>',\n });\n optionElement = specPage.root;\n const iconElement = optionElement.shadowRoot.querySelector('q2-icon[type=\"checkmark\"]');\n expect(optionElement.getAttribute('aria-selected')).toBe('true');\n expect(iconElement).toBeTruthy();\n });\n });\n describe('when not provided', () => {\n it('sets aria-selected to false', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option></q2-option>',\n });\n optionElement = specPage.root;\n const iconElement = optionElement.shadowRoot.querySelector('q2-icon[type=\"checkmark\"]');\n expect(optionElement.getAttribute('aria-selected')).toBe('false');\n expect(iconElement).toBeNull();\n });\n });\n });\n describe('separator', () => {\n describe('when provided', () => {\n it('renders an element with a class of separator', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option separator></q2-option>',\n });\n expect(specPage.root.shadowRoot.querySelector('.separator')).toBeTruthy();\n expect(specPage.root.role).toBe('separator');\n });\n });\n describe('when not provided', () => {\n it('does not render an element with a class of separator', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option></q2-option>',\n });\n expect(specPage.root.shadowRoot.querySelector('.separator')).toBeNull();\n expect(specPage.root.role).toBe('option');\n });\n });\n });\n describe('value', () => {\n describe('when provided', () => {\n it('sets the value property to the provided value', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option value=\"My Value\"></q2-option>',\n });\n optionClass = specPage.rootInstance;\n expect(optionClass.value).toBe('My Value');\n });\n });\n describe('when not provided', () => {\n it('defaults to undefined', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option></q2-option>',\n });\n optionClass = specPage.rootInstance;\n expect(optionClass.value).toBeUndefined();\n });\n });\n });\n });\n\n describe('Events', () => {\n describe('displayChanged', () => {\n it('emits the event when invoked', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option></q2-option>',\n });\n optionClass = specPage.rootInstance;\n optionElement = specPage.root;\n const displayChangedSpy = jest.spyOn(optionClass.displayChanged, 'emit');\n optionClass.displayChanged.emit();\n await specPage.waitForChanges();\n expect(displayChangedSpy).toHaveBeenCalled();\n });\n it('emits the event when display is changed', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option></q2-option>',\n });\n optionClass = specPage.rootInstance;\n optionElement = specPage.root;\n const displayChangedSpy = jest.spyOn(optionClass.displayChanged, 'emit');\n optionClass.display = 'Option Changed';\n await specPage.waitForChanges();\n expect(displayChangedSpy).toHaveBeenCalled();\n });\n it('event detail contains the display and value props', async () => {\n specPage = await setupSpecPageWithLoc(\n { components: [Q2Option], html: '<q2-option value=\"My Value\" display=\"Option Text\"></q2-option>' },\n testStringsDict\n );\n optionClass = specPage.rootInstance;\n optionElement = specPage.root;\n const displayChangedSpy = jest.spyOn(optionClass.displayChanged, 'emit');\n optionClass.display = 'Option Changed';\n await specPage.waitForChanges();\n expect(displayChangedSpy).toHaveBeenCalled();\n expect(displayChangedSpy).toHaveBeenCalledWith({\n display: 'Option Changed',\n value: 'My Value',\n });\n });\n it('emits when no display provided and textContent changes', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option></q2-option>',\n });\n optionClass = specPage.rootInstance;\n optionElement = specPage.root;\n const displayChangedSpy = jest.spyOn(optionClass.displayChanged, 'emit');\n optionElement.textContent = 'Option Text Changed';\n await specPage.waitForChanges();\n optionClass.mutationHandler();\n await specPage.waitForChanges();\n expect(displayChangedSpy).toHaveBeenCalledWith({\n display: 'Option Text Changed',\n value: undefined,\n });\n });\n it('does not emit if textContent changes and display was already provided', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option display=\"Option Text\"></q2-option>',\n });\n optionClass = specPage.rootInstance;\n optionElement = specPage.root;\n const displayChangedSpy = jest.spyOn(optionClass.displayChanged, 'emit');\n optionElement.textContent = 'Option Text Changed';\n optionClass.mutationHandler();\n await specPage.waitForChanges();\n expect(displayChangedSpy).not.toHaveBeenCalled();\n });\n });\n });\n\n describe('Watchers', () => {\n describe('display', () => {\n it('translates the new display value', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Option],\n html: '<q2-option display=\"tecton.element.option.test\"></q2-option>',\n },\n testStringsDict\n );\n optionClass = specPage.rootInstance;\n optionElement = specPage.root;\n expect(optionElement.display).toBe('Option Text');\n optionClass.display = 'tecton.element.option.changed';\n expect(optionElement.display).toBe('Option Changed');\n });\n it('triggers handleTextContent() local method', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option display=\"Option Text\"></q2-option>',\n });\n optionClass = specPage.rootInstance;\n const handleTextContentSpy = jest.spyOn(optionClass, 'handleTextContent');\n optionClass.display = 'New Display Text';\n await specPage.waitForChanges();\n expect(handleTextContentSpy).toHaveBeenCalled();\n });\n it('emits the displayChanged event with the a translated display value', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Option],\n html: '<q2-option value=\"My Value\" display=\"Option Text\"></q2-option>',\n },\n testStringsDict\n );\n optionClass = specPage.rootInstance;\n const displayChangedSpy = jest.spyOn(optionClass.displayChanged, 'emit');\n optionClass.display = 'tecton.element.option.changed';\n await specPage.waitForChanges();\n expect(displayChangedSpy).toHaveBeenCalledWith({\n display: 'Option Changed',\n value: 'My Value',\n });\n });\n });\n });\n\n describe('Local Methods', () => {\n describe('handleTextContent', () => {\n it('sets the hostElement textContent if none exists and display is provided', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option display=\"Option Text\"></q2-option>',\n });\n optionClass = specPage.rootInstance;\n optionElement = specPage.root;\n optionClass.handleTextContent();\n await specPage.waitForChanges();\n expect(optionElement.textContent).toBe('Option Text');\n });\n });\n describe('initDisplay', () => {\n describe('when display is provided', () => {\n it('sets displayProvidedAtInit to true', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option display=\"Option Text\"></q2-option>',\n });\n optionClass = specPage.rootInstance;\n expect(optionClass.displayProvidedAtInit).toBe(true);\n });\n it('sets display to the provided value', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option display=\"Option Text\"></q2-option>',\n });\n optionClass = specPage.rootInstance;\n expect(optionClass.display).toBe('Option Text');\n });\n it('sets display to the translated value', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Option],\n html: '<q2-option display=\"tecton.element.option.test\"></q2-option>',\n },\n testStringsDict\n );\n optionClass = specPage.rootInstance;\n expect(optionClass.display).toBe('Option Text');\n });\n });\n describe('when display is not provided', () => {\n it('sets display to the textContent of the hostElement', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option>Option Text</q2-option>',\n });\n optionClass = specPage.rootInstance;\n expect(optionClass.display).toBe('Option Text');\n });\n it('sets display to the translated textContent of the hostElement', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Option],\n html: '<q2-option>tecton.element.option.test</q2-option>',\n },\n testStringsDict\n );\n optionClass = specPage.rootInstance;\n expect(optionClass.display).toBe('Option Text');\n });\n });\n it('fires handleTextContent() when multiline is not provided', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option display=\"Option Text\"></q2-option>',\n });\n optionClass = specPage.rootInstance;\n const handleTextContentSpy = jest.spyOn(optionClass, 'handleTextContent');\n optionClass.initDisplay();\n await specPage.waitForChanges();\n expect(handleTextContentSpy).toHaveBeenCalled();\n });\n });\n describe('mutationHandler', () => {\n it('if display matches textContent it does not change display value', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option display=\"Option Text\"></q2-option>',\n });\n optionClass = specPage.rootInstance;\n optionElement = specPage.root;\n const displayChangedSpy = jest.spyOn(optionClass.displayChanged, 'emit');\n optionElement.textContent = 'Option Text';\n await specPage.waitForChanges();\n expect(optionClass.display).toBe('Option Text');\n expect(displayChangedSpy).not.toHaveBeenCalled();\n });\n it('sets the value of display if it was not provided at init', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Option],\n html: '<q2-option></q2-option>',\n });\n optionClass = specPage.rootInstance;\n optionElement = specPage.root;\n optionElement.textContent = 'Option Text';\n optionClass.mutationHandler();\n await specPage.waitForChanges();\n expect(optionClass.display).toBe('Option Text');\n });\n });\n });\n});\n"]}