q2-tecton-elements 1.53.0 → 1.53.2

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 (442) hide show
  1. package/dist/cjs/click-elsewhere_2.cjs.entry.js +64 -61
  2. package/dist/cjs/click-elsewhere_2.cjs.entry.js.map +1 -1
  3. package/dist/cjs/{index-07285783.js → index-76f63767.js} +1 -21
  4. package/dist/cjs/index-76f63767.js.map +1 -0
  5. package/dist/cjs/loader.cjs.js +1 -1
  6. package/dist/cjs/q2-action-group.cjs.entry.js +2 -2
  7. package/dist/cjs/q2-action-sheet.cjs.entry.js +2 -2
  8. package/dist/cjs/q2-avatar.cjs.entry.js +1 -1
  9. package/dist/cjs/q2-badge_7.cjs.entry.js +12 -4
  10. package/dist/cjs/q2-badge_7.cjs.entry.js.map +1 -1
  11. package/dist/cjs/q2-calendar.cjs.entry.js +1 -1
  12. package/dist/cjs/q2-card.cjs.entry.js +1 -1
  13. package/dist/cjs/q2-carousel-pane.cjs.entry.js +3 -3
  14. package/dist/cjs/q2-carousel.cjs.entry.js +1 -1
  15. package/dist/cjs/q2-chart-area.cjs.entry.js +2 -2
  16. package/dist/cjs/q2-chart-bar.cjs.entry.js +2 -2
  17. package/dist/cjs/q2-chart-donut.cjs.entry.js +2 -2
  18. package/dist/cjs/q2-checkbox-group.cjs.entry.js +1 -1
  19. package/dist/cjs/q2-checkbox.cjs.entry.js +1 -1
  20. package/dist/cjs/q2-currency.cjs.entry.js +1 -1
  21. package/dist/cjs/q2-data-table.cjs.entry.js +1 -1
  22. package/dist/cjs/q2-detail.cjs.entry.js +2 -2
  23. package/dist/cjs/q2-dropdown-item.cjs.entry.js +1 -1
  24. package/dist/cjs/q2-dropdown.cjs.entry.js +10 -12
  25. package/dist/cjs/q2-dropdown.cjs.entry.js.map +1 -1
  26. package/dist/cjs/q2-editable-field.cjs.entry.js +7 -8
  27. package/dist/cjs/q2-editable-field.cjs.entry.js.map +1 -1
  28. package/dist/cjs/q2-example.cjs.entry.js +1 -1
  29. package/dist/cjs/q2-file-picker.cjs.entry.js +1 -1
  30. package/dist/cjs/q2-formatted-text.cjs.entry.js +1 -1
  31. package/dist/cjs/q2-item_3.cjs.entry.js +3 -3
  32. package/dist/cjs/q2-legend.cjs.entry.js +1 -1
  33. package/dist/cjs/q2-loc.cjs.entry.js +2 -2
  34. package/dist/cjs/q2-message.cjs.entry.js +2 -2
  35. package/dist/cjs/q2-month-picker.cjs.entry.js +3 -3
  36. package/dist/cjs/q2-optgroup.cjs.entry.js +2 -2
  37. package/dist/cjs/q2-option-list.cjs.entry.js +1 -1
  38. package/dist/cjs/q2-option.cjs.entry.js +2 -2
  39. package/dist/cjs/q2-pagination.cjs.entry.js +4 -4
  40. package/dist/cjs/q2-pill.cjs.entry.js +2 -2
  41. package/dist/cjs/q2-radio-group.cjs.entry.js +1 -1
  42. package/dist/cjs/q2-radio.cjs.entry.js +1 -1
  43. package/dist/cjs/q2-relative-time.cjs.entry.js +2 -2
  44. package/dist/cjs/q2-resize-observer.cjs.entry.js +1 -1
  45. package/dist/cjs/q2-section.cjs.entry.js +3 -3
  46. package/dist/cjs/q2-select.cjs.entry.js +89 -13
  47. package/dist/cjs/q2-select.cjs.entry.js.map +1 -1
  48. package/dist/cjs/q2-stepper-pane.cjs.entry.js +1 -1
  49. package/dist/cjs/q2-stepper-vertical.cjs.entry.js +2 -2
  50. package/dist/cjs/q2-stepper.cjs.entry.js +2 -2
  51. package/dist/cjs/q2-tag.cjs.entry.js +2 -2
  52. package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
  53. package/dist/cjs/q2-textarea.cjs.entry.js +3 -2
  54. package/dist/cjs/q2-textarea.cjs.entry.js.map +1 -1
  55. package/dist/cjs/q2-tooltip.cjs.entry.js +1 -1
  56. package/dist/cjs/tecton-tab-pane.cjs.entry.js +2 -2
  57. package/dist/collection/components/click-elsewhere/click-elsewhere.js.map +1 -1
  58. package/dist/collection/components/click-elsewhere/test/click-elsewhere-test.e2e.js.map +1 -1
  59. package/dist/collection/components/q2-action-group/q2-action-group.js +1 -1
  60. package/dist/collection/components/q2-action-group/q2-action-group.js.map +1 -1
  61. package/dist/collection/components/q2-action-group/test/q2-action-group.e2e.js.map +1 -1
  62. package/dist/collection/components/q2-action-group/test/q2-action-group.spec.js.map +1 -1
  63. package/dist/collection/components/q2-action-sheet/q2-action-sheet.js +1 -1
  64. package/dist/collection/components/q2-action-sheet/q2-action-sheet.js.map +1 -1
  65. package/dist/collection/components/q2-action-sheet/test/q2-action-sheet-test.e2e.js.map +1 -1
  66. package/dist/collection/components/q2-avatar/q2-avatar.js +1 -1
  67. package/dist/collection/components/q2-avatar/q2-avatar.js.map +1 -1
  68. package/dist/collection/components/q2-avatar/test/q2-avatar-test.e2e.js.map +1 -1
  69. package/dist/collection/components/q2-badge/q2-badge.js.map +1 -1
  70. package/dist/collection/components/q2-badge/test/q2-badge-test.e2e.js.map +1 -1
  71. package/dist/collection/components/q2-btn/q2-btn.js +4 -0
  72. package/dist/collection/components/q2-btn/q2-btn.js.map +1 -1
  73. package/dist/collection/components/q2-btn/test/q2-btn-test.e2e.js.map +1 -1
  74. package/dist/collection/components/q2-calendar/q2-calendar-helpers.js.map +1 -1
  75. package/dist/collection/components/q2-calendar/q2-calendar-types.js.map +1 -1
  76. package/dist/collection/components/q2-calendar/q2-calendar-validation.js.map +1 -1
  77. package/dist/collection/components/q2-calendar/q2-calendar.js.map +1 -1
  78. package/dist/collection/components/q2-calendar/q2-month-picker.js +2 -2
  79. package/dist/collection/components/q2-calendar/q2-month-picker.js.map +1 -1
  80. package/dist/collection/components/q2-calendar/test/helpers-test.e2e.js.map +1 -1
  81. package/dist/collection/components/q2-calendar/test/q2-calendar-month-picker-test.e2e.js.map +1 -1
  82. package/dist/collection/components/q2-calendar/test/q2-calendar-test.e2e.js +2 -2
  83. package/dist/collection/components/q2-calendar/test/q2-calendar-test.e2e.js.map +1 -1
  84. package/dist/collection/components/q2-calendar/test/validation-test.e2e.js.map +1 -1
  85. package/dist/collection/components/q2-card/q2-card.js.map +1 -1
  86. package/dist/collection/components/q2-card/test/q2-card-test.e2e.js.map +1 -1
  87. package/dist/collection/components/q2-carousel/q2-carousel.js.map +1 -1
  88. package/dist/collection/components/q2-carousel/test/q2-carousel-test.e2e.js.map +1 -1
  89. package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.js +2 -2
  90. package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.js.map +1 -1
  91. package/dist/collection/components/q2-carousel-pane/test/q2-carousel-pane-test.e2e.js.map +1 -1
  92. package/dist/collection/components/q2-carousel-pane/test/q2-carousel-pane-test.spec.js.map +1 -1
  93. package/dist/collection/components/q2-chart-area/q2-chart-area.js +1 -1
  94. package/dist/collection/components/q2-chart-area/q2-chart-area.js.map +1 -1
  95. package/dist/collection/components/q2-chart-area/test/q2-chart-area-test.e2e.js.map +1 -1
  96. package/dist/collection/components/q2-chart-bar/q2-chart-bar.js +1 -1
  97. package/dist/collection/components/q2-chart-bar/q2-chart-bar.js.map +1 -1
  98. package/dist/collection/components/q2-chart-bar/test/q2-chart-bar-test.e2e.js.map +1 -1
  99. package/dist/collection/components/q2-chart-donut/q2-chart-donut.js +1 -1
  100. package/dist/collection/components/q2-chart-donut/q2-chart-donut.js.map +1 -1
  101. package/dist/collection/components/q2-chart-donut/test/q2-chart-donut-test.e2e.js.map +1 -1
  102. package/dist/collection/components/q2-checkbox/q2-checkbox.js.map +1 -1
  103. package/dist/collection/components/q2-checkbox/test/q2-checkbox-test.e2e.js.map +1 -1
  104. package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.js.map +1 -1
  105. package/dist/collection/components/q2-checkbox-group/test/q2-checkbox-group-test.e2e.js.map +1 -1
  106. package/dist/collection/components/q2-currency/q2-currency.js +1 -1
  107. package/dist/collection/components/q2-currency/q2-currency.js.map +1 -1
  108. package/dist/collection/components/q2-currency/test/q2-currency-test.e2e.js.map +1 -1
  109. package/dist/collection/components/q2-data-table/q2-data-table.js.map +1 -1
  110. package/dist/collection/components/q2-data-table/test/q2-data-table-test.e2e.js.map +1 -1
  111. package/dist/collection/components/q2-detail/q2-detail.js +1 -1
  112. package/dist/collection/components/q2-detail/q2-detail.js.map +1 -1
  113. package/dist/collection/components/q2-detail/test/q2-detail-test.e2e.js.map +1 -1
  114. package/dist/collection/components/q2-dropdown/q2-dropdown.js +9 -11
  115. package/dist/collection/components/q2-dropdown/q2-dropdown.js.map +1 -1
  116. package/dist/collection/components/q2-dropdown/test/q2-dropdown-test.e2e.js +5 -17
  117. package/dist/collection/components/q2-dropdown/test/q2-dropdown-test.e2e.js.map +1 -1
  118. package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.js.map +1 -1
  119. package/dist/collection/components/q2-dropdown-item/test/q2-dropdown-item-test.e2e.js.map +1 -1
  120. package/dist/collection/components/q2-editable-field/q2-editable-field.js +12 -7
  121. package/dist/collection/components/q2-editable-field/q2-editable-field.js.map +1 -1
  122. package/dist/collection/components/q2-editable-field/test/q2-editable-field-test.e2e.js.map +1 -1
  123. package/dist/collection/components/q2-example/q2-example.js +1 -1
  124. package/dist/collection/components/q2-example/q2-example.js.map +1 -1
  125. package/dist/collection/components/q2-example/test/q2-example.e2e.js.map +1 -1
  126. package/dist/collection/components/q2-example/test/q2-example.spec.js.map +1 -1
  127. package/dist/collection/components/q2-file-picker/q2-file-picker.js.map +1 -1
  128. package/dist/collection/components/q2-file-picker/test/q2-file-picker-test.e2e.js.map +1 -1
  129. package/dist/collection/components/q2-file-picker/test/q2-file-picker-test.spec.js.map +1 -1
  130. package/dist/collection/components/q2-formatted-text/q2-formatted-text.js +1 -1
  131. package/dist/collection/components/q2-formatted-text/q2-formatted-text.js.map +1 -1
  132. package/dist/collection/components/q2-formatted-text/test/q2-formatted-text-test.e2e.js.map +1 -1
  133. package/dist/collection/components/q2-icon/q2-icon-types.js.map +1 -1
  134. package/dist/collection/components/q2-icon/q2-icon.js +4 -0
  135. package/dist/collection/components/q2-icon/q2-icon.js.map +1 -1
  136. package/dist/collection/components/q2-icon/test/q2-icon-test.e2e.js.map +1 -1
  137. package/dist/collection/components/q2-input/formatting/alpha.js.map +1 -1
  138. package/dist/collection/components/q2-input/formatting/alpha.spec.js.map +1 -1
  139. package/dist/collection/components/q2-input/formatting/alphanumeric.js.map +1 -1
  140. package/dist/collection/components/q2-input/formatting/alphanumeric.spec.js.map +1 -1
  141. package/dist/collection/components/q2-input/formatting/credit-card.js.map +1 -1
  142. package/dist/collection/components/q2-input/formatting/credit-card.spec.js.map +1 -1
  143. package/dist/collection/components/q2-input/formatting/currency.js.map +1 -1
  144. package/dist/collection/components/q2-input/formatting/currency.spec.js.map +1 -1
  145. package/dist/collection/components/q2-input/formatting/date.js.map +1 -1
  146. package/dist/collection/components/q2-input/formatting/date.spec.js.map +1 -1
  147. package/dist/collection/components/q2-input/formatting/generic.js.map +1 -1
  148. package/dist/collection/components/q2-input/formatting/number.js.map +1 -1
  149. package/dist/collection/components/q2-input/formatting/numeric.js.map +1 -1
  150. package/dist/collection/components/q2-input/formatting/numeric.spec.js.map +1 -1
  151. package/dist/collection/components/q2-input/formatting/phone.js.map +1 -1
  152. package/dist/collection/components/q2-input/formatting/phone.spec.js.map +1 -1
  153. package/dist/collection/components/q2-input/formatting/postal.js.map +1 -1
  154. package/dist/collection/components/q2-input/formatting/postal.spec.js.map +1 -1
  155. package/dist/collection/components/q2-input/formatting/ssn.js.map +1 -1
  156. package/dist/collection/components/q2-input/formatting/ssn.spec.js.map +1 -1
  157. package/dist/collection/components/q2-input/formatting/tin.js.map +1 -1
  158. package/dist/collection/components/q2-input/formatting/tin.spec.js.map +1 -1
  159. package/dist/collection/components/q2-input/q2-input-types.js.map +1 -1
  160. package/dist/collection/components/q2-input/q2-input.js +1 -1
  161. package/dist/collection/components/q2-input/q2-input.js.map +1 -1
  162. package/dist/collection/components/q2-input/test/q2-input-credit-card-test.e2e.js.map +1 -1
  163. package/dist/collection/components/q2-input/test/q2-input-test.e2e.js.map +1 -1
  164. package/dist/collection/components/q2-input/test/q2-input-test.spec.js.map +1 -1
  165. package/dist/collection/components/q2-item/q2-item.js +1 -1
  166. package/dist/collection/components/q2-item/q2-item.js.map +1 -1
  167. package/dist/collection/components/q2-item/test/q2-item-test.e2e.js.map +1 -1
  168. package/dist/collection/components/q2-item/test/q2-item-test.spec.js.map +1 -1
  169. package/dist/collection/components/q2-legend/q2-legend.js +1 -1
  170. package/dist/collection/components/q2-legend/q2-legend.js.map +1 -1
  171. package/dist/collection/components/q2-legend/test/q2-legend-test.e2e.js.map +1 -1
  172. package/dist/collection/components/q2-legend/test/q2-legend-test.spec.js.map +1 -1
  173. package/dist/collection/components/q2-link/q2-link.js.map +1 -1
  174. package/dist/collection/components/q2-link/test/q2-link-test.e2e.js.map +1 -1
  175. package/dist/collection/components/q2-list/q2-list.js +1 -1
  176. package/dist/collection/components/q2-list/q2-list.js.map +1 -1
  177. package/dist/collection/components/q2-list/test/q2-list-test.e2e.js.map +1 -1
  178. package/dist/collection/components/q2-loading/q2-loading.js.map +1 -1
  179. package/dist/collection/components/q2-loading/skeleton/q2-loading-element/index.js.map +1 -1
  180. package/dist/collection/components/q2-loading/skeleton/shapes.js.map +1 -1
  181. package/dist/collection/components/q2-loading/test/q2-loading-element-test.e2e.js.map +1 -1
  182. package/dist/collection/components/q2-loading/test/q2-loading-test.e2e.js.map +1 -1
  183. package/dist/collection/components/q2-loc/q2-loc.js +1 -1
  184. package/dist/collection/components/q2-loc/q2-loc.js.map +1 -1
  185. package/dist/collection/components/q2-loc/test/q2-loc-test.e2e.js.map +1 -1
  186. package/dist/collection/components/q2-loc/test/q2-loc-test.spec.js.map +1 -1
  187. package/dist/collection/components/q2-message/q2-message.js +1 -1
  188. package/dist/collection/components/q2-message/q2-message.js.map +1 -1
  189. package/dist/collection/components/q2-message/test/q2-message-test.e2e.js.map +1 -1
  190. package/dist/collection/components/q2-optgroup/q2-optgroup.js +1 -1
  191. package/dist/collection/components/q2-optgroup/q2-optgroup.js.map +1 -1
  192. package/dist/collection/components/q2-optgroup/test/q2-optgroup-test.e2e.js.map +1 -1
  193. package/dist/collection/components/q2-option/q2-option.js +1 -1
  194. package/dist/collection/components/q2-option/q2-option.js.map +1 -1
  195. package/dist/collection/components/q2-option/test/q2-option-test.e2e.js.map +1 -1
  196. package/dist/collection/components/q2-option/test/q2-option-test.spec.js.map +1 -1
  197. package/dist/collection/components/q2-option-list/q2-option-list.js.map +1 -1
  198. package/dist/collection/components/q2-option-list/test/q2-option-list-test.e2e.js.map +1 -1
  199. package/dist/collection/components/q2-pagination/q2-pagination.js +3 -3
  200. package/dist/collection/components/q2-pagination/q2-pagination.js.map +1 -1
  201. package/dist/collection/components/q2-pagination/test/q2-pagination-test.e2e.js +1 -0
  202. package/dist/collection/components/q2-pagination/test/q2-pagination-test.e2e.js.map +1 -1
  203. package/dist/collection/components/q2-pill/q2-pill.js +1 -1
  204. package/dist/collection/components/q2-pill/q2-pill.js.map +1 -1
  205. package/dist/collection/components/q2-pill/test/q2-pill-test.e2e.js +1 -1
  206. package/dist/collection/components/q2-pill/test/q2-pill-test.e2e.js.map +1 -1
  207. package/dist/collection/components/q2-popover/q2-popover.css +18 -10
  208. package/dist/collection/components/q2-popover/q2-popover.js +64 -60
  209. package/dist/collection/components/q2-popover/q2-popover.js.map +1 -1
  210. package/dist/collection/components/q2-popover/test/q2-popover-test.e2e.js +1 -34
  211. package/dist/collection/components/q2-popover/test/q2-popover-test.e2e.js.map +1 -1
  212. package/dist/collection/components/q2-popover/test/q2-popover-test.spec.js +743 -435
  213. package/dist/collection/components/q2-popover/test/q2-popover-test.spec.js.map +1 -1
  214. package/dist/collection/components/q2-radio/q2-radio.js.map +1 -1
  215. package/dist/collection/components/q2-radio/test/q2-radio-test.e2e.js.map +1 -1
  216. package/dist/collection/components/q2-radio-group/q2-radio-group.js.map +1 -1
  217. package/dist/collection/components/q2-radio-group/test/q2-radio-group-test.e2e.js.map +1 -1
  218. package/dist/collection/components/q2-relative-time/q2-relative-time.js +1 -1
  219. package/dist/collection/components/q2-relative-time/q2-relative-time.js.map +1 -1
  220. package/dist/collection/components/q2-relative-time/test/q2-relative-time-test.e2e.js.map +1 -1
  221. package/dist/collection/components/q2-resize-observer/q2-resize-observer.js +1 -1
  222. package/dist/collection/components/q2-resize-observer/q2-resize-observer.js.map +1 -1
  223. package/dist/collection/components/q2-resize-observer/test/q2-resize-observer.e2e.js.map +1 -1
  224. package/dist/collection/components/q2-resize-observer/test/q2-resize-observer.spec.js.map +1 -1
  225. package/dist/collection/components/q2-section/q2-section.js +2 -2
  226. package/dist/collection/components/q2-section/q2-section.js.map +1 -1
  227. package/dist/collection/components/q2-section/test/q2-section-test.e2e.js.map +1 -1
  228. package/dist/collection/components/q2-select/q2-select.js +110 -15
  229. package/dist/collection/components/q2-select/q2-select.js.map +1 -1
  230. package/dist/collection/components/q2-select/test/q2-select-test.e2e.js +1 -1
  231. package/dist/collection/components/q2-select/test/q2-select-test.e2e.js.map +1 -1
  232. package/dist/collection/components/q2-select/test/q2-select-test.spec.js +412 -0
  233. package/dist/collection/components/q2-select/test/q2-select-test.spec.js.map +1 -0
  234. package/dist/collection/components/q2-stepper/q2-stepper.js +1 -1
  235. package/dist/collection/components/q2-stepper/q2-stepper.js.map +1 -1
  236. package/dist/collection/components/q2-stepper/test/q2-stepper-test.e2e.js.map +1 -1
  237. package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.js.map +1 -1
  238. package/dist/collection/components/q2-stepper-pane/test/q2-stepper-pane-test.e2e.js.map +1 -1
  239. package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js +1 -1
  240. package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js.map +1 -1
  241. package/dist/collection/components/q2-stepper-vertical/test/q2-stepper-vertical-test.e2e.js.map +1 -1
  242. package/dist/collection/components/q2-tab-container/q2-tab-container.js +1 -1
  243. package/dist/collection/components/q2-tab-container/q2-tab-container.js.map +1 -1
  244. package/dist/collection/components/q2-tab-container/test/q2-tab-container-test.e2e.js.map +1 -1
  245. package/dist/collection/components/q2-tab-container/test/q2-tab-container-test.spec.js.map +1 -1
  246. package/dist/collection/components/q2-tab-pane/q2-tab-pane.js +1 -1
  247. package/dist/collection/components/q2-tab-pane/q2-tab-pane.js.map +1 -1
  248. package/dist/collection/components/q2-tab-pane/test/q2-tab-pane-test.e2e.js.map +1 -1
  249. package/dist/collection/components/q2-tag/q2-tag.js +1 -1
  250. package/dist/collection/components/q2-tag/q2-tag.js.map +1 -1
  251. package/dist/collection/components/q2-tag/test/q2-tag-test.e2e.js +6 -1
  252. package/dist/collection/components/q2-tag/test/q2-tag-test.e2e.js.map +1 -1
  253. package/dist/collection/components/q2-textarea/q2-textarea.js +2 -1
  254. package/dist/collection/components/q2-textarea/q2-textarea.js.map +1 -1
  255. package/dist/collection/components/q2-textarea/test/q2-textarea-test.e2e.js.map +1 -1
  256. package/dist/collection/components/q2-tooltip/q2-tooltip.js.map +1 -1
  257. package/dist/collection/components/q2-tooltip/test/q2-tooltip-test.e2e.js.map +1 -1
  258. package/dist/collection/components/tecton-tab-pane/tecton-tab-pane-types.js.map +1 -1
  259. package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js +2 -2
  260. package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js.map +1 -1
  261. package/dist/collection/components/tecton-tab-pane/test/tecton-tab-pane-test.e2e.js.map +1 -1
  262. package/dist/collection/index.js.map +1 -1
  263. package/dist/collection/utils/action-sheet.js.map +1 -1
  264. package/dist/collection/utils/charting.js.map +1 -1
  265. package/dist/collection/utils/helpers.js.map +1 -1
  266. package/dist/collection/utils/index.js.map +1 -1
  267. package/dist/collection/utils/sanitize-html-string.js.map +1 -1
  268. package/dist/collection/utils/sanitize-regex-string.js.map +1 -1
  269. package/dist/collection/utils/test/action-sheet-test.e2e.js.map +1 -1
  270. package/dist/collection/utils/test/index.spec.js.map +1 -1
  271. package/dist/components/index2.js +1 -20
  272. package/dist/components/index2.js.map +1 -1
  273. package/dist/components/q2-action-group.js +1 -1
  274. package/dist/components/q2-action-sheet.js +1 -1
  275. package/dist/components/q2-avatar2.js +1 -1
  276. package/dist/components/q2-btn2.js +4 -0
  277. package/dist/components/q2-btn2.js.map +1 -1
  278. package/dist/components/q2-carousel-pane.js +2 -2
  279. package/dist/components/q2-chart-area.js +1 -1
  280. package/dist/components/q2-chart-bar.js +1 -1
  281. package/dist/components/q2-chart-donut.js +1 -1
  282. package/dist/components/q2-currency.js +1 -1
  283. package/dist/components/q2-detail.js +1 -1
  284. package/dist/components/q2-dropdown.js +9 -11
  285. package/dist/components/q2-dropdown.js.map +1 -1
  286. package/dist/components/q2-editable-field.js +7 -8
  287. package/dist/components/q2-editable-field.js.map +1 -1
  288. package/dist/components/q2-example.js +1 -1
  289. package/dist/components/q2-formatted-text.js +1 -1
  290. package/dist/components/q2-icon2.js +4 -0
  291. package/dist/components/q2-icon2.js.map +1 -1
  292. package/dist/components/q2-input2.js +1 -1
  293. package/dist/components/q2-item2.js +1 -1
  294. package/dist/components/q2-legend2.js +1 -1
  295. package/dist/components/q2-list2.js +1 -1
  296. package/dist/components/q2-loc.js +1 -1
  297. package/dist/components/q2-message2.js +1 -1
  298. package/dist/components/q2-month-picker.js +2 -2
  299. package/dist/components/q2-optgroup2.js +1 -1
  300. package/dist/components/q2-option2.js +1 -1
  301. package/dist/components/q2-pagination.js +3 -3
  302. package/dist/components/q2-pill.js +1 -1
  303. package/dist/components/q2-popover2.js +63 -60
  304. package/dist/components/q2-popover2.js.map +1 -1
  305. package/dist/components/q2-relative-time.js +1 -1
  306. package/dist/components/q2-resize-observer2.js +1 -1
  307. package/dist/components/q2-section.js +2 -2
  308. package/dist/components/q2-select2.js +92 -16
  309. package/dist/components/q2-select2.js.map +1 -1
  310. package/dist/components/q2-stepper-vertical.js +1 -1
  311. package/dist/components/q2-stepper.js +1 -1
  312. package/dist/components/q2-tab-container.js +1 -1
  313. package/dist/components/q2-tab-pane.js +1 -1
  314. package/dist/components/q2-tag.js +1 -1
  315. package/dist/components/q2-textarea.js +2 -1
  316. package/dist/components/q2-textarea.js.map +1 -1
  317. package/dist/components/tecton-tab-pane.js +2 -2
  318. package/dist/esm/click-elsewhere_2.entry.js +64 -61
  319. package/dist/esm/click-elsewhere_2.entry.js.map +1 -1
  320. package/dist/esm/{index-d18e2a20.js → index-504f1a9e.js} +2 -21
  321. package/dist/esm/index-504f1a9e.js.map +1 -0
  322. package/dist/esm/loader.js +1 -1
  323. package/dist/esm/q2-action-group.entry.js +2 -2
  324. package/dist/esm/q2-action-sheet.entry.js +2 -2
  325. package/dist/esm/q2-avatar.entry.js +1 -1
  326. package/dist/esm/q2-badge_7.entry.js +12 -4
  327. package/dist/esm/q2-badge_7.entry.js.map +1 -1
  328. package/dist/esm/q2-calendar.entry.js +1 -1
  329. package/dist/esm/q2-card.entry.js +1 -1
  330. package/dist/esm/q2-carousel-pane.entry.js +3 -3
  331. package/dist/esm/q2-carousel.entry.js +1 -1
  332. package/dist/esm/q2-chart-area.entry.js +2 -2
  333. package/dist/esm/q2-chart-bar.entry.js +2 -2
  334. package/dist/esm/q2-chart-donut.entry.js +2 -2
  335. package/dist/esm/q2-checkbox-group.entry.js +1 -1
  336. package/dist/esm/q2-checkbox.entry.js +1 -1
  337. package/dist/esm/q2-currency.entry.js +1 -1
  338. package/dist/esm/q2-data-table.entry.js +1 -1
  339. package/dist/esm/q2-detail.entry.js +2 -2
  340. package/dist/esm/q2-dropdown-item.entry.js +1 -1
  341. package/dist/esm/q2-dropdown.entry.js +10 -12
  342. package/dist/esm/q2-dropdown.entry.js.map +1 -1
  343. package/dist/esm/q2-editable-field.entry.js +7 -8
  344. package/dist/esm/q2-editable-field.entry.js.map +1 -1
  345. package/dist/esm/q2-example.entry.js +1 -1
  346. package/dist/esm/q2-file-picker.entry.js +1 -1
  347. package/dist/esm/q2-formatted-text.entry.js +1 -1
  348. package/dist/esm/q2-item_3.entry.js +3 -3
  349. package/dist/esm/q2-legend.entry.js +1 -1
  350. package/dist/esm/q2-loc.entry.js +2 -2
  351. package/dist/esm/q2-message.entry.js +2 -2
  352. package/dist/esm/q2-month-picker.entry.js +3 -3
  353. package/dist/esm/q2-optgroup.entry.js +2 -2
  354. package/dist/esm/q2-option-list.entry.js +1 -1
  355. package/dist/esm/q2-option.entry.js +2 -2
  356. package/dist/esm/q2-pagination.entry.js +4 -4
  357. package/dist/esm/q2-pill.entry.js +2 -2
  358. package/dist/esm/q2-radio-group.entry.js +1 -1
  359. package/dist/esm/q2-radio.entry.js +1 -1
  360. package/dist/esm/q2-relative-time.entry.js +2 -2
  361. package/dist/esm/q2-resize-observer.entry.js +1 -1
  362. package/dist/esm/q2-section.entry.js +3 -3
  363. package/dist/esm/q2-select.entry.js +90 -14
  364. package/dist/esm/q2-select.entry.js.map +1 -1
  365. package/dist/esm/q2-stepper-pane.entry.js +1 -1
  366. package/dist/esm/q2-stepper-vertical.entry.js +2 -2
  367. package/dist/esm/q2-stepper.entry.js +2 -2
  368. package/dist/esm/q2-tag.entry.js +2 -2
  369. package/dist/esm/q2-tecton-elements.js +1 -1
  370. package/dist/esm/q2-textarea.entry.js +3 -2
  371. package/dist/esm/q2-textarea.entry.js.map +1 -1
  372. package/dist/esm/q2-tooltip.entry.js +1 -1
  373. package/dist/esm/tecton-tab-pane.entry.js +2 -2
  374. package/dist/jest.setup.js +22 -0
  375. package/dist/jest.setup.js.map +1 -0
  376. package/dist/q2-tecton-elements/click-elsewhere_2.entry.js +175 -163
  377. package/dist/q2-tecton-elements/click-elsewhere_2.entry.js.map +1 -1
  378. package/dist/q2-tecton-elements/{index-d18e2a20.js → index-504f1a9e.js} +51 -69
  379. package/dist/q2-tecton-elements/index-504f1a9e.js.map +1 -0
  380. package/dist/q2-tecton-elements/q2-action-group.entry.js +4 -4
  381. package/dist/q2-tecton-elements/q2-action-sheet.entry.js +34 -34
  382. package/dist/q2-tecton-elements/q2-avatar.entry.js +6 -6
  383. package/dist/q2-tecton-elements/q2-badge_7.entry.js +25 -17
  384. package/dist/q2-tecton-elements/q2-badge_7.entry.js.map +1 -1
  385. package/dist/q2-tecton-elements/q2-calendar.entry.js +1 -1
  386. package/dist/q2-tecton-elements/q2-card.entry.js +1 -1
  387. package/dist/q2-tecton-elements/q2-carousel-pane.entry.js +21 -21
  388. package/dist/q2-tecton-elements/q2-carousel.entry.js +1 -1
  389. package/dist/q2-tecton-elements/q2-chart-area.entry.js +3 -3
  390. package/dist/q2-tecton-elements/q2-chart-bar.entry.js +3 -3
  391. package/dist/q2-tecton-elements/q2-chart-donut.entry.js +101 -101
  392. package/dist/q2-tecton-elements/q2-checkbox-group.entry.js +1 -1
  393. package/dist/q2-tecton-elements/q2-checkbox.entry.js +1 -1
  394. package/dist/q2-tecton-elements/q2-currency.entry.js +6 -6
  395. package/dist/q2-tecton-elements/q2-data-table.entry.js +1 -1
  396. package/dist/q2-tecton-elements/q2-detail.entry.js +39 -39
  397. package/dist/q2-tecton-elements/q2-dropdown-item.entry.js +1 -1
  398. package/dist/q2-tecton-elements/q2-dropdown.entry.js +14 -16
  399. package/dist/q2-tecton-elements/q2-dropdown.entry.js.map +1 -1
  400. package/dist/q2-tecton-elements/q2-editable-field.entry.js +27 -18
  401. package/dist/q2-tecton-elements/q2-editable-field.entry.js.map +1 -1
  402. package/dist/q2-tecton-elements/q2-example.entry.js +1 -1
  403. package/dist/q2-tecton-elements/q2-file-picker.entry.js +1 -1
  404. package/dist/q2-tecton-elements/q2-formatted-text.entry.js +2 -2
  405. package/dist/q2-tecton-elements/q2-item_3.entry.js +19 -19
  406. package/dist/q2-tecton-elements/q2-legend.entry.js +2 -2
  407. package/dist/q2-tecton-elements/q2-loc.entry.js +5 -5
  408. package/dist/q2-tecton-elements/q2-message.entry.js +21 -21
  409. package/dist/q2-tecton-elements/q2-month-picker.entry.js +14 -14
  410. package/dist/q2-tecton-elements/q2-optgroup.entry.js +8 -8
  411. package/dist/q2-tecton-elements/q2-option-list.entry.js +1 -1
  412. package/dist/q2-tecton-elements/q2-option.entry.js +14 -14
  413. package/dist/q2-tecton-elements/q2-pagination.entry.js +34 -34
  414. package/dist/q2-tecton-elements/q2-pill.entry.js +14 -14
  415. package/dist/q2-tecton-elements/q2-radio-group.entry.js +1 -1
  416. package/dist/q2-tecton-elements/q2-radio.entry.js +1 -1
  417. package/dist/q2-tecton-elements/q2-relative-time.entry.js +2 -2
  418. package/dist/q2-tecton-elements/q2-resize-observer.entry.js +1 -1
  419. package/dist/q2-tecton-elements/q2-section.entry.js +19 -19
  420. package/dist/q2-tecton-elements/q2-select.entry.js +156 -92
  421. package/dist/q2-tecton-elements/q2-select.entry.js.map +1 -1
  422. package/dist/q2-tecton-elements/q2-stepper-pane.entry.js +1 -1
  423. package/dist/q2-tecton-elements/q2-stepper-vertical.entry.js +37 -37
  424. package/dist/q2-tecton-elements/q2-stepper.entry.js +29 -29
  425. package/dist/q2-tecton-elements/q2-tag.entry.js +25 -25
  426. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
  427. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js.map +1 -1
  428. package/dist/q2-tecton-elements/q2-textarea.entry.js +4 -3
  429. package/dist/q2-tecton-elements/q2-textarea.entry.js.map +1 -1
  430. package/dist/q2-tecton-elements/q2-tooltip.entry.js +1 -1
  431. package/dist/q2-tecton-elements/tecton-tab-pane.entry.js +6 -6
  432. package/dist/types/builds/q2e/development/tecton/tecton/packages/q2-tecton-elements/.stencil/jest.setup.d.ts +1 -0
  433. package/dist/types/components/q2-btn/q2-btn.d.ts +1 -0
  434. package/dist/types/components/q2-dropdown/q2-dropdown.d.ts +1 -4
  435. package/dist/types/components/q2-editable-field/q2-editable-field.d.ts +2 -1
  436. package/dist/types/components/q2-icon/q2-icon.d.ts +1 -0
  437. package/dist/types/components/q2-popover/q2-popover.d.ts +4 -4
  438. package/dist/types/components/q2-select/q2-select.d.ts +19 -0
  439. package/package.json +3 -3
  440. package/dist/cjs/index-07285783.js.map +0 -1
  441. package/dist/esm/index-d18e2a20.js.map +0 -1
  442. package/dist/q2-tecton-elements/index-d18e2a20.js.map +0 -1
@@ -75,7 +75,6 @@ export class Q2EditableField {
75
75
  componentDidRender() {
76
76
  this.scheduledAfterRender.forEach(fn => fn());
77
77
  this.scheduledAfterRender = [];
78
- this.formattedValue = this.inputElement.formattedValue;
79
78
  }
80
79
  // #endregion
81
80
  // #region Listeners
@@ -107,6 +106,9 @@ export class Q2EditableField {
107
106
  return;
108
107
  this.hostElement.shadowRoot.querySelector(this.editing ? 'q2-input' : 'q2-btn.begin-edit').focus();
109
108
  }
109
+ inputFormatted(event) {
110
+ this.formattedValue = event.detail.formattedValue;
111
+ }
110
112
  // #endregion
111
113
  // #region Public Methods API
112
114
  /**
@@ -191,22 +193,19 @@ export class Q2EditableField {
191
193
  get wrapperClass() {
192
194
  return `q2-editable-field-wrapper ${this.editing ? 'editing' : ''}`;
193
195
  }
194
- generateEditBtn() {
195
- return (h("q2-btn", { ref: el => (this.editBtnElement = el), class: "begin-edit", label: `${loc('tecton.element.editableField.edit')} ${this.locLabel}`, "hide-label": true, disabled: this.disabled, "test-id": "editButton", onClick: this.editClick }, h("q2-icon", { type: "edit" })));
196
- }
197
196
  generateEditStateDOM() {
198
197
  return (h("div", { class: this.wrapperClass, hidden: !this.editing }, h("q2-input", { ref: el => (this.inputElement = el), label: this.locLabel, hideLabel: this.hideLabel, value: this.value, hints: this.hasHints ? this.hints : undefined, errors: this.hasErrors ? this.errors : undefined, type: this.type, disabled: this.disabled, formatModifier: this.formatModifier, maxlength: this.maxlength, "test-id": "editableInput", onInput: this.inputInput, onChange: this.inputChange, onKeyDown: this.inputKeyDown, onClick: this.inputClick }), h("q2-btn", { ref: el => (this.cancelBtnElement = el), class: "cancel-edit", label: `${loc('tecton.element.editableField.cancel')} ${this.locLabel}`, "hide-label": true, "test-id": "cancelButton", onClick: this.cancelClick }, h("q2-icon", { type: "close" })), h("q2-btn", { ref: el => (this.saveBtnElement = el), class: "save-edit", label: `${loc('tecton.element.editableField.save')} ${this.locLabel}`, "hide-label": true, "test-id": "saveButton", onClick: this.saveClick }, h("q2-icon", { type: "checkmark" }))));
199
198
  }
200
199
  generateReadStateDOM() {
201
200
  if (this.persistentLabel && this.locLabel) {
202
- return (h("div", { class: this.wrapperClass, hidden: this.editing }, h("dl", null, h("dt", { class: "read-state-label" }, this.locLabel), h("dd", null, h("span", { class: "text-wrapper" }, this.formattedValue || this.value), this.generateEditBtn()))));
201
+ return (h("div", { class: this.wrapperClass, hidden: this.editing }, h("dl", null, h("dt", { class: "read-state-label" }, this.locLabel), h("dd", null, h("span", { class: "text-wrapper" }, this.formattedValue || this.value), h("q2-btn", { ref: el => (this.editBtnElement = el), class: "begin-edit", label: `${loc('tecton.element.editableField.edit')} ${this.locLabel}`, "hide-label": true, disabled: this.disabled, "test-id": "editButton", onClick: this.editClick }, h("q2-icon", { type: "edit" }))))));
203
202
  }
204
- return (h("div", { class: this.wrapperClass, hidden: this.editing }, h("div", { class: "text-wrapper" }, this.formattedValue || this.value), this.generateEditBtn()));
203
+ return (h("div", { class: this.wrapperClass, hidden: this.editing }, h("div", { class: "text-wrapper" }, this.formattedValue || this.value), h("q2-btn", { ref: el => (this.editBtnElement = el), class: "begin-edit", label: `${loc('tecton.element.editableField.edit')} ${this.locLabel}`, "hide-label": true, disabled: this.disabled, "test-id": "editButton", onClick: this.editClick }, h("q2-icon", { type: "edit" }))));
205
204
  }
206
205
  // #endregion
207
206
  // #region Render Methods
208
207
  render() {
209
- return (h("div", { key: '255dac3b6e39618e37fc129ef0a743aca1aefc88' }, this.generateEditStateDOM(), this.generateReadStateDOM()));
208
+ return (h("div", { key: '4dd832e58ab37f49b7026b6b297de802c83f630b' }, this.generateEditStateDOM(), this.generateReadStateDOM()));
210
209
  }
211
210
  static get is() { return "q2-editable-field"; }
212
211
  static get encapsulation() { return "shadow"; }
@@ -620,6 +619,12 @@ export class Q2EditableField {
620
619
  "target": undefined,
621
620
  "capture": false,
622
621
  "passive": false
622
+ }, {
623
+ "name": "formatted",
624
+ "method": "inputFormatted",
625
+ "target": undefined,
626
+ "capture": false,
627
+ "passive": false
623
628
  }];
624
629
  }
625
630
  }
@@ -1 +1 @@
1
- {"version":3,"file":"q2-editable-field.js","sourceRoot":"","sources":["../../../src/components/q2-editable-field/q2-editable-field.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, State, Prop, h, Listen, Element, Event, EventEmitter, Method, Watch } from '@stencil/core';\nimport { IEventDetail, Q2InputCustomEvent } from 'src/components';\nimport { handleAriaLabel, isEventFromElement, loc, overrideFocus, waitForNextPaint } from 'src/utils';\nimport { Q2Input } from '../q2-input/q2-input';\nimport { IFormatterValueObject } from '../q2-input/q2-input-types';\n\ninterface IExtendedQ2InputElement extends HTMLQ2InputElement {\n formattedValue: IFormatterValueObject['formattedValue'];\n}\n\n@Component({ tag: 'q2-editable-field', shadow: true, styleUrl: 'q2-editable-field.scss' })\nexport class Q2EditableField {\n // #region Own Properties\n\n cancelBtnElement: HTMLQ2BtnElement;\n defaultValue: string;\n editBtnElement: HTMLQ2BtnElement;\n innerValue: string;\n inputElement: HTMLQ2InputElement;\n saveBtnElement: HTMLQ2BtnElement;\n scheduledAfterRender: (() => void)[] = [];\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region State Properties\n\n @State()\n formattedValue: string;\n\n // #endregion\n // #region Public Property API\n\n /** @deprecated */\n @Prop({ reflect: true, mutable: true })\n ariaLabel: string;\n\n /** If `true`, component expands to fill the width of its parent element. */\n @Prop({ reflect: true })\n block: boolean;\n\n /** Disables the edit button and field. */\n @Prop({ reflect: true })\n disabled: boolean;\n\n /** Controls the edit state of the element. */\n @Prop({ reflect: true, mutable: true })\n editing: boolean = false;\n\n /**\n * Determines the `errors` applied to the `q2-input` element.\n *\n * See [q2-input](https://tecton.q2developer.com/design-system/q2-input/) for more information.\n */\n @Prop()\n errors: string[];\n\n /**\n * Determines the `formatModifier` applied to the `q2-input` element.\n * @info\n * Only applicable when `type=\"currency\"`.\n *\n * See [q2-input](https://tecton.q2developer.com/design-system/q2-input/) for more information.\n */\n @Prop({ reflect: true })\n formatModifier: string;\n\n /** Hide's the field's `<label>` element from view. */\n @Prop({ reflect: true, mutable: true })\n hideLabel: boolean;\n\n /**\n * Determines the `hints` applied to the `q2-input` element.\n *\n * See [q2-input](https://tecton.q2developer.com/design-system/q2-input/) for more information.\n */\n @Prop()\n hints: string[];\n\n /**\n * The visible descriptor for the element.\n * Serves as the input label while in the edit state and as a decorative label for the read state when `persistentLabel` is `true`.\n * @localizable\n */\n @Prop({ reflect: true, mutable: true })\n label: string = '';\n\n /**\n * Determines the `maxLength` applied to the `q2-input`.\n *\n * See [q2-input](https://tecton.q2developer.com/design-system/q2-input/) for more information.\n */\n @Prop({ reflect: true })\n maxlength: number;\n\n /** Displays the provided label in the read state. */\n @Prop({ reflect: true })\n persistentLabel: boolean;\n\n /** Shortens long values with ellipses instead of splitting into multiple lines. */\n @Prop({ reflect: true })\n truncated: boolean;\n\n /**\n * Determines the `type` applied to the `q2-input` element.\n *\n * See [q2-input](https://tecton.q2developer.com/design-system/q2-input/) for all `type` values.\n */\n @Prop({ reflect: true })\n type: Q2Input['type'];\n\n /** Serves as the visible text while in the read state, and the default value of the input while in the edit state. */\n @Prop({ reflect: true, mutable: true })\n value: string = '';\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when the 'Edit', 'Cancel', or 'Save' buttons are clicked.\n *\n * The event detail will not include a `value` or `formattedValue` if the event name is 'edit' or 'cancel'.\n *@info\n * If you are utilizing events to provide input validation, it is recommended you use the `input` event, not the `change` event.\n */\n @Event()\n change: EventEmitter<{\n editing: boolean;\n name: 'edit' | 'cancel' | 'save';\n value?: string;\n formattedValue?: string;\n }>;\n\n /**\n * Emitted when the user updates the `q2-input` element in the editing state.\n */\n @Event()\n input: EventEmitter<{ formattedValue: string; value: string }>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n componentWillLoad() {\n handleAriaLabel(this);\n\n this.defaultValue = this.value;\n }\n\n componentDidLoad() {\n overrideFocus(this.hostElement);\n }\n\n componentDidRender() {\n this.scheduledAfterRender.forEach(fn => fn());\n this.scheduledAfterRender = [];\n this.formattedValue = (this.inputElement as IExtendedQ2InputElement).formattedValue;\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('change')\n onHostElementChange(event: CustomEvent) {\n if (!isEventFromElement(event, this.hostElement) || this.hostElement.onchange) return;\n queueMicrotask(() => {\n switch (event.detail.name) {\n case 'save':\n if (this.hasErrors) {\n this.inputElement.focus();\n break;\n }\n this.value = event.detail.value;\n this.editing = event.detail.editing;\n break;\n\n case 'cancel':\n this.inputElement.value = this.value;\n this.editing = event.detail.editing;\n break;\n\n case 'edit':\n this.editing = event.detail.editing;\n break;\n }\n });\n }\n\n @Listen('focus')\n delegateFocus(event: FocusEvent) {\n if (!isEventFromElement(event, this.hostElement)) return;\n this.hostElement.shadowRoot.querySelector<HTMLElement>(this.editing ? 'q2-input' : 'q2-btn.begin-edit').focus();\n }\n\n // #endregion\n // #region Public Methods API\n\n /**\n * Emulates clicking the cancel button, which will hide the `<q2-input>` field.\n *\n * @testOnly\n */\n @Method()\n clickCancel() {\n if (!this.editing) return;\n this.cancelBtnElement?.click();\n }\n\n /**\n * Emulates clicking the edit button, which will display the `<q2-input>` field.\n *\n * @testOnly\n */\n @Method()\n clickEdit() {\n if (this.editing) return;\n this.editBtnElement?.click();\n }\n\n /**\n * Emulates clicking the save button, saving value in the `<q2-input>` field, and emitting a `change` event.\n *\n * @testOnly\n */\n @Method()\n clickSave() {\n if (!this.editing) return;\n this.saveBtnElement?.click();\n }\n\n /**\n * Emulates clicking the edit button, and setting the value of the `<q2-input>` field.\n *\n * If the `clickSave` argument is `true` (default), the save button will be clicked after the value is set, and a\\\n * `change` event will be emitted.\n *\n * @testOnly\n */\n @Method()\n async setValue(value: string, options: { clickSave?: boolean } = { clickSave: true }) {\n await this.clickEdit();\n await waitForNextPaint();\n\n await this.inputElement.setValue(value);\n\n if (options.clickSave) {\n await this.clickSave();\n await waitForNextPaint();\n }\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('ariaLabel')\n ariaLabelObserver() {\n handleAriaLabel(this);\n }\n\n @Watch('editing')\n observesEditing(newValue: boolean, oldValue: boolean) {\n if (newValue === oldValue) return;\n this.scheduledAfterRender.push(this.hostElement.focus);\n }\n\n @Watch('errors')\n errorsObserver() {\n const { editing, hasErrors } = this;\n const focusedElement = this.hostElement.shadowRoot.activeElement;\n const isInputFocused = focusedElement?.tagName === 'Q2-INPUT';\n if (isInputFocused || !focusedElement || !editing || !hasErrors) return;\n this.inputElement.focus();\n }\n\n // #endregion\n // #region Local Methods\n\n get hasErrors(): boolean {\n return Array.isArray(this.errors) && !!this.errors.length;\n }\n\n get hasHints(): boolean {\n return Array.isArray(this.hints) && !!this.hints.length;\n }\n\n get locLabel() {\n return (this.label && loc(this.label)) || '';\n }\n\n get wrapperClass() {\n return `q2-editable-field-wrapper ${this.editing ? 'editing' : ''}`;\n }\n\n cancelClick = (event?: MouseEvent) => {\n event?.stopPropagation();\n this.change.emit({ editing: false, name: 'cancel' });\n this.inputElement.setValue(this.defaultValue);\n };\n\n editClick = (event: MouseEvent) => {\n event?.stopPropagation();\n this.change.emit({ editing: true, name: 'edit' });\n };\n\n generateEditBtn() {\n return (\n <q2-btn\n ref={el => (this.editBtnElement = el)}\n class=\"begin-edit\"\n label={`${loc('tecton.element.editableField.edit')} ${this.locLabel}`}\n hide-label\n disabled={this.disabled}\n test-id=\"editButton\"\n onClick={this.editClick}\n >\n <q2-icon type=\"edit\" />\n </q2-btn>\n );\n }\n\n generateEditStateDOM() {\n return (\n <div\n class={this.wrapperClass}\n hidden={!this.editing}\n >\n <q2-input\n ref={el => (this.inputElement = el)}\n label={this.locLabel}\n hideLabel={this.hideLabel}\n value={this.value}\n hints={this.hasHints ? this.hints : undefined}\n errors={this.hasErrors ? this.errors : undefined}\n type={this.type}\n disabled={this.disabled}\n formatModifier={this.formatModifier}\n maxlength={this.maxlength}\n test-id=\"editableInput\"\n onInput={this.inputInput}\n onChange={this.inputChange}\n onKeyDown={this.inputKeyDown}\n onClick={this.inputClick}\n />\n <q2-btn\n ref={el => (this.cancelBtnElement = el)}\n class=\"cancel-edit\"\n label={`${loc('tecton.element.editableField.cancel')} ${this.locLabel}`}\n hide-label\n test-id=\"cancelButton\"\n onClick={this.cancelClick}\n >\n <q2-icon type=\"close\" />\n </q2-btn>\n <q2-btn\n ref={el => (this.saveBtnElement = el)}\n class=\"save-edit\"\n label={`${loc('tecton.element.editableField.save')} ${this.locLabel}`}\n hide-label\n test-id=\"saveButton\"\n onClick={this.saveClick}\n >\n <q2-icon type=\"checkmark\" />\n </q2-btn>\n </div>\n );\n }\n\n generateReadStateDOM() {\n if (this.persistentLabel && this.locLabel) {\n return (\n <div\n class={this.wrapperClass}\n hidden={this.editing}\n >\n <dl>\n <dt class=\"read-state-label\">{this.locLabel}</dt>\n <dd>\n <span class=\"text-wrapper\">{this.formattedValue || this.value}</span>\n {this.generateEditBtn()}\n </dd>\n </dl>\n </div>\n );\n }\n return (\n <div\n class={this.wrapperClass}\n hidden={this.editing}\n >\n <div class=\"text-wrapper\">{this.formattedValue || this.value}</div>\n {this.generateEditBtn()}\n </div>\n );\n }\n\n inputChange = (e: CustomEvent) => {\n e.stopPropagation();\n };\n\n inputClick = (event: MouseEvent) => {\n event.stopPropagation();\n };\n\n inputInput = (event: Q2InputCustomEvent<IEventDetail> & InputEvent) => {\n event.stopPropagation();\n this.input.emit(event.detail);\n this.formattedValue = event.detail.formattedValue;\n this.innerValue = event.detail.value;\n };\n\n inputKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape' || e.key === 'Esc') {\n e.preventDefault();\n this.cancelClick();\n return;\n }\n\n if (e.key === 'Enter') {\n e.preventDefault();\n this.saveClick();\n return;\n }\n };\n\n saveClick = (event?: MouseEvent) => {\n event && event.stopPropagation();\n const valueFromInputProp = this.hostElement.shadowRoot.querySelector('q2-input').value;\n this.defaultValue = valueFromInputProp;\n this.change.emit({\n editing: false,\n name: 'save',\n value: this.innerValue || valueFromInputProp,\n formattedValue: this.formattedValue || valueFromInputProp,\n });\n };\n\n // #endregion\n // #region Render Methods\n\n render() {\n return (\n <div>\n {this.generateEditStateDOM()}\n {this.generateReadStateDOM()}\n </div>\n );\n }\n\n // #endregion\n}\n"]}
1
+ {"version":3,"file":"q2-editable-field.js","sourceRoot":"","sources":["../../../../src/components/q2-editable-field/q2-editable-field.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, State, Prop, h, Listen, Element, Event, EventEmitter, Method, Watch } from '@stencil/core';\nimport { IEventDetail, Q2InputCustomEvent } from 'src/components';\nimport { handleAriaLabel, isEventFromElement, loc, overrideFocus, waitForNextPaint } from 'src/utils';\nimport { Q2Input } from '../q2-input/q2-input';\nimport { IFormatterValueObject } from '../q2-input/q2-input-types';\n\n@Component({ tag: 'q2-editable-field', shadow: true, styleUrl: 'q2-editable-field.scss' })\nexport class Q2EditableField {\n // #region Own Properties\n\n cancelBtnElement: HTMLQ2BtnElement;\n defaultValue: string;\n editBtnElement: HTMLQ2BtnElement;\n innerValue: string;\n inputElement: HTMLQ2InputElement;\n saveBtnElement: HTMLQ2BtnElement;\n scheduledAfterRender: (() => void)[] = [];\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region State Properties\n\n @State()\n formattedValue: string;\n\n // #endregion\n // #region Public Property API\n\n /** @deprecated */\n @Prop({ reflect: true, mutable: true })\n ariaLabel: string;\n\n /** If `true`, component expands to fill the width of its parent element. */\n @Prop({ reflect: true })\n block: boolean;\n\n /** Disables the edit button and field. */\n @Prop({ reflect: true })\n disabled: boolean;\n\n /** Controls the edit state of the element. */\n @Prop({ reflect: true, mutable: true })\n editing: boolean = false;\n\n /**\n * Determines the `errors` applied to the `q2-input` element.\n *\n * See [q2-input](https://tecton.q2developer.com/design-system/q2-input/) for more information.\n */\n @Prop()\n errors: string[];\n\n /**\n * Determines the `formatModifier` applied to the `q2-input` element.\n * @info\n * Only applicable when `type=\"currency\"`.\n *\n * See [q2-input](https://tecton.q2developer.com/design-system/q2-input/) for more information.\n */\n @Prop({ reflect: true })\n formatModifier: string;\n\n /** Hide's the field's `<label>` element from view. */\n @Prop({ reflect: true, mutable: true })\n hideLabel: boolean;\n\n /**\n * Determines the `hints` applied to the `q2-input` element.\n *\n * See [q2-input](https://tecton.q2developer.com/design-system/q2-input/) for more information.\n */\n @Prop()\n hints: string[];\n\n /**\n * The visible descriptor for the element.\n * Serves as the input label while in the edit state and as a decorative label for the read state when `persistentLabel` is `true`.\n * @localizable\n */\n @Prop({ reflect: true, mutable: true })\n label: string = '';\n\n /**\n * Determines the `maxLength` applied to the `q2-input`.\n *\n * See [q2-input](https://tecton.q2developer.com/design-system/q2-input/) for more information.\n */\n @Prop({ reflect: true })\n maxlength: number;\n\n /** Displays the provided label in the read state. */\n @Prop({ reflect: true })\n persistentLabel: boolean;\n\n /** Shortens long values with ellipses instead of splitting into multiple lines. */\n @Prop({ reflect: true })\n truncated: boolean;\n\n /**\n * Determines the `type` applied to the `q2-input` element.\n *\n * See [q2-input](https://tecton.q2developer.com/design-system/q2-input/) for all `type` values.\n */\n @Prop({ reflect: true })\n type: Q2Input['type'];\n\n /** Serves as the visible text while in the read state, and the default value of the input while in the edit state. */\n @Prop({ reflect: true, mutable: true })\n value: string = '';\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when the 'Edit', 'Cancel', or 'Save' buttons are clicked.\n *\n * The event detail will not include a `value` or `formattedValue` if the event name is 'edit' or 'cancel'.\n *@info\n * If you are utilizing events to provide input validation, it is recommended you use the `input` event, not the `change` event.\n */\n @Event()\n change: EventEmitter<{\n editing: boolean;\n name: 'edit' | 'cancel' | 'save';\n value?: string;\n formattedValue?: string;\n }>;\n\n /**\n * Emitted when the user updates the `q2-input` element in the editing state.\n */\n @Event()\n input: EventEmitter<{ formattedValue: string; value: string }>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n componentWillLoad() {\n handleAriaLabel(this);\n\n this.defaultValue = this.value;\n }\n\n componentDidLoad() {\n overrideFocus(this.hostElement);\n }\n\n componentDidRender() {\n this.scheduledAfterRender.forEach(fn => fn());\n this.scheduledAfterRender = [];\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('change')\n onHostElementChange(event: CustomEvent) {\n if (!isEventFromElement(event, this.hostElement) || this.hostElement.onchange) return;\n queueMicrotask(() => {\n switch (event.detail.name) {\n case 'save':\n if (this.hasErrors) {\n this.inputElement.focus();\n break;\n }\n this.value = event.detail.value;\n this.editing = event.detail.editing;\n break;\n\n case 'cancel':\n this.inputElement.value = this.value;\n this.editing = event.detail.editing;\n break;\n\n case 'edit':\n this.editing = event.detail.editing;\n break;\n }\n });\n }\n\n @Listen('focus')\n delegateFocus(event: FocusEvent) {\n if (!isEventFromElement(event, this.hostElement)) return;\n this.hostElement.shadowRoot.querySelector<HTMLElement>(this.editing ? 'q2-input' : 'q2-btn.begin-edit').focus();\n }\n\n @Listen('formatted')\n inputFormatted(event: CustomEvent<IFormatterValueObject>) {\n this.formattedValue = event.detail.formattedValue;\n }\n\n // #endregion\n // #region Public Methods API\n\n /**\n * Emulates clicking the cancel button, which will hide the `<q2-input>` field.\n *\n * @testOnly\n */\n @Method()\n clickCancel() {\n if (!this.editing) return;\n this.cancelBtnElement?.click();\n }\n\n /**\n * Emulates clicking the edit button, which will display the `<q2-input>` field.\n *\n * @testOnly\n */\n @Method()\n clickEdit() {\n if (this.editing) return;\n this.editBtnElement?.click();\n }\n\n /**\n * Emulates clicking the save button, saving value in the `<q2-input>` field, and emitting a `change` event.\n *\n * @testOnly\n */\n @Method()\n clickSave() {\n if (!this.editing) return;\n this.saveBtnElement?.click();\n }\n\n /**\n * Emulates clicking the edit button, and setting the value of the `<q2-input>` field.\n *\n * If the `clickSave` argument is `true` (default), the save button will be clicked after the value is set, and a\\\n * `change` event will be emitted.\n *\n * @testOnly\n */\n @Method()\n async setValue(value: string, options: { clickSave?: boolean } = { clickSave: true }) {\n await this.clickEdit();\n await waitForNextPaint();\n\n await this.inputElement.setValue(value);\n\n if (options.clickSave) {\n await this.clickSave();\n await waitForNextPaint();\n }\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('ariaLabel')\n ariaLabelObserver() {\n handleAriaLabel(this);\n }\n\n @Watch('editing')\n observesEditing(newValue: boolean, oldValue: boolean) {\n if (newValue === oldValue) return;\n this.scheduledAfterRender.push(this.hostElement.focus);\n }\n\n @Watch('errors')\n errorsObserver() {\n const { editing, hasErrors } = this;\n const focusedElement = this.hostElement.shadowRoot.activeElement;\n const isInputFocused = focusedElement?.tagName === 'Q2-INPUT';\n if (isInputFocused || !focusedElement || !editing || !hasErrors) return;\n this.inputElement.focus();\n }\n\n // #endregion\n // #region Local Methods\n\n get hasErrors(): boolean {\n return Array.isArray(this.errors) && !!this.errors.length;\n }\n\n get hasHints(): boolean {\n return Array.isArray(this.hints) && !!this.hints.length;\n }\n\n get locLabel() {\n return (this.label && loc(this.label)) || '';\n }\n\n get wrapperClass() {\n return `q2-editable-field-wrapper ${this.editing ? 'editing' : ''}`;\n }\n\n cancelClick = (event?: MouseEvent) => {\n event?.stopPropagation();\n this.change.emit({ editing: false, name: 'cancel' });\n this.inputElement.setValue(this.defaultValue);\n };\n\n editClick = (event: MouseEvent) => {\n event?.stopPropagation();\n this.change.emit({ editing: true, name: 'edit' });\n };\n\n generateEditStateDOM() {\n return (\n <div\n class={this.wrapperClass}\n hidden={!this.editing}\n >\n <q2-input\n ref={el => (this.inputElement = el)}\n label={this.locLabel}\n hideLabel={this.hideLabel}\n value={this.value}\n hints={this.hasHints ? this.hints : undefined}\n errors={this.hasErrors ? this.errors : undefined}\n type={this.type}\n disabled={this.disabled}\n formatModifier={this.formatModifier}\n maxlength={this.maxlength}\n test-id=\"editableInput\"\n onInput={this.inputInput}\n onChange={this.inputChange}\n onKeyDown={this.inputKeyDown}\n onClick={this.inputClick}\n />\n <q2-btn\n ref={el => (this.cancelBtnElement = el)}\n class=\"cancel-edit\"\n label={`${loc('tecton.element.editableField.cancel')} ${this.locLabel}`}\n hide-label\n test-id=\"cancelButton\"\n onClick={this.cancelClick}\n >\n <q2-icon type=\"close\" />\n </q2-btn>\n <q2-btn\n ref={el => (this.saveBtnElement = el)}\n class=\"save-edit\"\n label={`${loc('tecton.element.editableField.save')} ${this.locLabel}`}\n hide-label\n test-id=\"saveButton\"\n onClick={this.saveClick}\n >\n <q2-icon type=\"checkmark\" />\n </q2-btn>\n </div>\n );\n }\n\n generateReadStateDOM() {\n if (this.persistentLabel && this.locLabel) {\n return (\n <div\n class={this.wrapperClass}\n hidden={this.editing}\n >\n <dl>\n <dt class=\"read-state-label\">{this.locLabel}</dt>\n <dd>\n <span class=\"text-wrapper\">{this.formattedValue || this.value}</span>\n <q2-btn\n ref={el => (this.editBtnElement = el)}\n class=\"begin-edit\"\n label={`${loc('tecton.element.editableField.edit')} ${this.locLabel}`}\n hide-label\n disabled={this.disabled}\n test-id=\"editButton\"\n onClick={this.editClick}\n >\n <q2-icon type=\"edit\" />\n </q2-btn>\n </dd>\n </dl>\n </div>\n );\n }\n return (\n <div\n class={this.wrapperClass}\n hidden={this.editing}\n >\n <div class=\"text-wrapper\">{this.formattedValue || this.value}</div>\n <q2-btn\n ref={el => (this.editBtnElement = el)}\n class=\"begin-edit\"\n label={`${loc('tecton.element.editableField.edit')} ${this.locLabel}`}\n hide-label\n disabled={this.disabled}\n test-id=\"editButton\"\n onClick={this.editClick}\n >\n <q2-icon type=\"edit\" />\n </q2-btn>\n </div>\n );\n }\n\n inputChange = (e: CustomEvent) => {\n e.stopPropagation();\n };\n\n inputClick = (event: MouseEvent) => {\n event.stopPropagation();\n };\n\n inputInput = (event: Q2InputCustomEvent<IEventDetail> & InputEvent) => {\n event.stopPropagation();\n this.input.emit(event.detail);\n this.formattedValue = event.detail.formattedValue;\n this.innerValue = event.detail.value;\n };\n\n inputKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape' || e.key === 'Esc') {\n e.preventDefault();\n this.cancelClick();\n return;\n }\n\n if (e.key === 'Enter') {\n e.preventDefault();\n this.saveClick();\n return;\n }\n };\n\n saveClick = (event?: MouseEvent) => {\n event && event.stopPropagation();\n const valueFromInputProp = this.hostElement.shadowRoot.querySelector('q2-input').value;\n this.defaultValue = valueFromInputProp;\n this.change.emit({\n editing: false,\n name: 'save',\n value: this.innerValue || valueFromInputProp,\n formattedValue: this.formattedValue || valueFromInputProp,\n });\n };\n\n // #endregion\n // #region Render Methods\n\n render() {\n return (\n <div>\n {this.generateEditStateDOM()}\n {this.generateReadStateDOM()}\n </div>\n );\n }\n\n // #endregion\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"q2-editable-field-test.e2e.js","sourceRoot":"","sources":["../../../../src/components/q2-editable-field/test/q2-editable-field-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 getActiveElementTestId,\n testDeprecatedAriaLabel,\n getNestedElementStyle,\n getNestedElementProperty,\n getListOfStyleCompilationIssues,\n evaluateA11y,\n} from '@/utils/helpers';\n\ndescribe('q2-editable-field', () => {\n let page: E2EPage;\n let editableField: E2EElement;\n let inputField: E2EElement;\n let editButton: E2EElement;\n let saveButton: E2EElement;\n let cancelButton: E2EElement;\n\n it('properly compiles CSS vars and functions', async () => {\n page = await setup({ html: '<q2-editable-field></q2-editable-field>' });\n expect(await getListOfStyleCompilationIssues(page, 'q2-editable-field')).toHaveLength(0);\n });\n\n it('localizes appropriate attribute strings', async function () {\n page = await setup({\n html: `<q2-editable-field editing value=\"Test Value\"></q2-editable-field>`,\n });\n\n setTestStrings(page, {\n 'q2-editable-field.label': 'Label Text',\n 'q2-editable-field.ariaLabel': 'Aria-Label Text',\n });\n\n inputField = await page.find('q2-editable-field >>> q2-input');\n editableField = await page.find('q2-editable-field');\n\n editableField.setProperty('label', 'q2-editable-field.label');\n await page.waitForChanges();\n\n expect(inputField).toEqualAttribute('label', 'Label Text');\n expect(inputField).not.toHaveAttribute('hide-label');\n\n editableField.setProperty('ariaLabel', 'q2-editable-field.ariaLabel');\n await page.waitForChanges();\n\n expect(inputField).toEqualAttribute('label', 'Aria-Label Text');\n expect(inputField).toHaveAttribute('hide-label');\n });\n\n describe('Rendering', () => {\n it('should render the component in the dom', async () => {\n page = await setup({ html: `<q2-editable-field></q2-editable-field>` });\n\n editableField = await page.find('q2-editable-field');\n\n expect(editableField.tagName).toEqual('Q2-EDITABLE-FIELD');\n\n const editStateWrapper = await page.find('q2-editable-field >>> .q2-editable-field-wrapper:nth-child(1)');\n const readStateWrapper = await page.find('q2-editable-field >>> .q2-editable-field-wrapper:nth-child(2)');\n\n // both edit and read states render\n expect(editStateWrapper).toBeTruthy();\n expect(readStateWrapper).toBeTruthy();\n });\n\n it('it correctly renders the read state when label not persisted', async () => {\n page = await setup({\n html: `<q2-editable-field value=\"Test Value\"></q2-editable-field>`,\n });\n\n const readStateWrapper = await page.find('q2-editable-field >>> .q2-editable-field-wrapper:nth-child(2)');\n const readStateHidden = await readStateWrapper.getProperty('hidden');\n const readStateTextWrapper = await page.find('q2-editable-field >>> .text-wrapper');\n editButton = await page.find('q2-editable-field >>> .begin-edit');\n\n expect(readStateHidden).toEqual(false);\n\n expect(readStateWrapper).not.toHaveClass('editing');\n\n // value rendered into text wrapper\n expect(readStateTextWrapper.textContent).toEqual('Test Value');\n\n // edit button renders\n expect(editButton).toBeTruthy();\n });\n\n it('it correctly renders the read state when label is persisted', async () => {\n page = await setup({\n html: `<q2-editable-field value=\"Test Value\" label=\"Test Label\" persistent-label></q2-editable-field>`,\n });\n\n const readStateWrapper = await page.find('q2-editable-field >>> .q2-editable-field-wrapper:nth-child(2)');\n expect(readStateWrapper).not.toHaveClass('editing');\n expect(await readStateWrapper.getProperty('hidden')).toEqual(false);\n\n const readStateLabel = await page.find('q2-editable-field >>> .read-state-label');\n\n expect(readStateLabel).not.toBeNull;\n expect(readStateLabel.tagName).toEqual('DT');\n expect(readStateLabel.textContent).toEqual('Test Label');\n\n const readStateTextWrapper = await page.find('q2-editable-field >>> .text-wrapper');\n\n // value rendered into text wrapper\n expect(readStateTextWrapper.textContent).toEqual('Test Value');\n\n editButton = await page.find('q2-editable-field >>> .begin-edit');\n\n // edit button renders\n expect(editButton).toBeTruthy();\n });\n\n it('correctly renders the edit state', async () => {\n page = await setup({\n html: `<q2-editable-field editing value=\"Test Value\"></q2-editable-field>`,\n });\n\n const editStateWrapper = await page.find('q2-editable-field >>> .q2-editable-field-wrapper:nth-child(1)');\n inputField = await page.find('q2-editable-field >>> q2-input');\n\n expect(editStateWrapper).toHaveClass('editing');\n\n // input renders\n expect(inputField).toBeTruthy();\n\n const inputValue = await inputField.getProperty('value');\n\n // input value matches element value\n expect(inputValue).toEqual('Test Value');\n\n cancelButton = await page.find('q2-editable-field >>> .cancel-edit');\n saveButton = await page.find('q2-editable-field >>> .save-edit');\n\n expect(cancelButton).toBeTruthy();\n expect(saveButton).toBeTruthy();\n });\n });\n\n describe('Props', () => {\n it('passes appropriate properties through to q2-input', async () => {\n page = await setup({\n html: `<q2-editable-field editing label=\"Test Label\" type=\"testType\" format-modifier=\"testFormatModifier\" maxlength=\"10\" value=\"Test Value\"></q2-editable-field>`,\n });\n editableField = await page.find('q2-editable-field');\n editableField.setProperty('errors', ['error1', 'error2']);\n editableField.setProperty('hints', ['hint1', 'hint2']);\n\n await page.waitForChanges();\n\n inputField = await page.find('q2-editable-field >>> q2-input');\n\n const inputType = await inputField.getProperty('type');\n const inputErrors = await inputField.getProperty('errors');\n const inputHints = await inputField.getProperty('hints');\n const inputLabel = await inputField.getProperty('label');\n const inputFormatter = await inputField.getProperty('formatModifier');\n const inputMaxLength = await inputField.getProperty('maxlength');\n\n expect(inputType).toEqual('testType');\n expect(inputErrors).toEqual(['error1', 'error2']);\n expect(inputHints).toEqual(['hint1', 'hint2']);\n expect(inputLabel).toEqual('Test Label');\n expect(inputFormatter).toEqual('testFormatModifier');\n expect(inputMaxLength).toEqual(10);\n expect(inputField).not.toHaveAttribute('hide-label');\n\n editableField.setProperty('ariaLabel', 'Test aria-label');\n await page.waitForChanges();\n\n expect(inputField).toEqualAttribute('label', 'Test aria-label');\n expect(inputField).toHaveAttribute('hide-label');\n });\n describe('when value and type are provided to q2-editable-field', () => {\n it('maintains formatted value in q2-input', async () => {\n page = await setup({\n html: `<q2-editable-field type='phone' value='1234567890'></q2-editable-field>`,\n });\n inputField = await page.find('q2-editable-field >>> q2-input');\n const formattedVal = await inputField.getProperty('formattedValue');\n expect(formattedVal).toBe('(123) 456-7890');\n });\n\n it('displays formattedValue in .text-wrapper on q2-editable-field', async () => {\n page = await setup({\n html: `<q2-editable-field type='phone' value='1234567890'></q2-editable-field>`,\n });\n\n inputField = await page.find('q2-editable-field >>> q2-input');\n const formattedVal = await inputField.getProperty('formattedValue');\n const textWrapper = await page.find('q2-editable-field >>> .text-wrapper');\n\n expect(formattedVal).toBe(textWrapper.innerText);\n });\n });\n describe('when errors is updated', () => {\n beforeEach(async () => {\n page = await setup({\n html: `<q2-editable-field value=\"Test Value\" editing></q2-editable-field>`,\n });\n editableField = await page.find('q2-editable-field');\n });\n\n describe('when component has focus', () => {\n it('focuses on input field', async () => {\n saveButton = await page.find('q2-editable-field >>> [test-id=saveButton]');\n saveButton.focus();\n await page.waitForChanges();\n expect(await getActiveElementTestId(page)).toEqual('saveButton');\n editableField.setProperty('errors', [\"It's busted.\"]);\n await page.waitForChanges();\n expect(await getActiveElementTestId(page)).toEqual('editableInput');\n });\n });\n\n describe('when component does not have focus', () => {\n it('does not change focus', async () => {\n expect(await getActiveElementTestId(page)).toBeNull();\n editableField.setProperty('errors', [\"It's busted.\"]);\n await page.waitForChanges();\n expect(await getActiveElementTestId(page)).toBeNull();\n });\n });\n\n describe('when component is disabled', () => {\n beforeEach(async () => {\n page = await setup({ html: `<q2-editable-field disabled> Hello </q2-editable-field>` });\n });\n\n it('editButton is disabled', async () => {\n editableField = await page.find('q2-editable-field');\n const spy = await editableField.spyOnEvent('click');\n await dispatchEvent(page, ['q2-editable-field', '[test-id=\"editButton\"]'], 'click');\n expect(spy).not.toHaveReceivedEvent();\n });\n\n it('editableInput is disabled', async () => {\n editableField = await page.find('q2-editable-field');\n const spy = await editableField.spyOnEvent('click');\n await dispatchEvent(page, ['q2-editable-field', '[test-id=\"editableInput\"]'], 'click');\n expect(spy).not.toHaveReceivedEvent();\n });\n });\n });\n });\n\n describe('Events', () => {\n describe('Input', () => {\n it('correctly bubbles the q2-input input event', async function () {\n page = await setup({\n html: `<q2-editable-field editing value=\"Test Value\"></q2-editable-field>`,\n });\n editableField = await page.find('q2-editable-field');\n const inputEventSpy = await editableField.spyOnEvent('input');\n\n await dispatchEvent(page, ['q2-editable-field', 'q2-input'], 'input', {\n detail: { value: 'testValue', formattedValue: 'formattedTestValue' },\n });\n\n expect(inputEventSpy).toHaveReceivedEventDetail({\n value: 'testValue',\n formattedValue: 'formattedTestValue',\n });\n });\n });\n\n describe('Change', () => {\n it('correctly emits the change event data', async function () {\n page = await setup({\n html: `<q2-editable-field editing value=\"Test Value\"></q2-editable-field>`,\n });\n editableField = await page.find('q2-editable-field');\n const changeEventSpy = await editableField.spyOnEvent('change');\n\n await dispatchEvent(page, ['q2-editable-field', '.save-edit'], 'click');\n\n expect(changeEventSpy).toHaveReceivedEventDetail({\n value: 'Test Value',\n editing: false,\n name: 'save',\n formattedValue: 'Test Value',\n });\n\n await dispatchEvent(page, ['q2-editable-field', '.begin-edit'], 'click');\n\n expect(changeEventSpy).toHaveReceivedEventDetail({ editing: true, name: 'edit' });\n\n await dispatchEvent(page, ['q2-editable-field', '.cancel-edit'], 'click');\n\n expect(changeEventSpy).toHaveReceivedEventDetail({ editing: false, name: 'cancel' });\n });\n\n it('allows custom handler to control the change event effects', async function () {\n page = await setup({\n html: `<q2-editable-field editing value=\"Test Value\"></q2-editable-field>`,\n });\n editableField = await page.find('q2-editable-field');\n let isEditing = await editableField.getProperty('editing');\n\n await page.$eval('q2-editable-field', function (editableField) {\n (editableField as HTMLQ2EditableFieldElement).onchange = function (e: CustomEvent) {\n // basically don't allow editing value to change via change event\n (e.target as HTMLQ2EditableFieldElement).editing = !e.detail.editing;\n };\n });\n\n await page.waitForChanges();\n expect(isEditing).toEqual(true);\n await dispatchEvent(page, ['q2-editable-field', '.save-edit'], 'click');\n isEditing = await editableField.getProperty('editing');\n\n // still editable because onchange event overwrote default behavior\n expect(isEditing).toEqual(true);\n\n // manually set editing to false to test inverse\n editableField.setProperty('editing', false);\n await page.waitForChanges();\n isEditing = await editableField.getProperty('editing');\n expect(isEditing).toEqual(false);\n await dispatchEvent(page, ['q2-editable-field', '.begin-edit'], 'click');\n isEditing = await editableField.getProperty('editing');\n\n // still false...\n expect(isEditing).toEqual(false);\n });\n\n it('triggers change event from Escape and Enter keyboard events', async function () {\n page = await setup({\n html: `<q2-editable-field editing value=\"Test Value\"></q2-editable-field>`,\n });\n editableField = await page.find('q2-editable-field');\n const changeEventSpy = await editableField.spyOnEvent('change');\n\n await dispatchEvent(page, ['q2-editable-field', 'q2-input'], 'keydown', { key: 'Escape' });\n\n expect(changeEventSpy).toHaveReceivedEventDetail({ name: 'cancel', editing: false });\n\n await dispatchEvent(page, ['q2-editable-field', '.begin-edit'], 'click');\n\n expect(changeEventSpy).toHaveReceivedEventDetail({ name: 'edit', editing: true });\n\n await dispatchEvent(page, ['q2-editable-field', 'q2-input'], 'keydown', {\n key: 'Enter',\n bubbles: true,\n });\n\n expect(changeEventSpy).toHaveReceivedEventDetail({\n name: 'save',\n editing: false,\n value: 'Test Value',\n formattedValue: 'Test Value',\n });\n });\n });\n describe('Click', () => {\n it('prevents click propagation from internal elements', async function () {\n page = await setup({\n html: `<q2-editable-field editing value=\"Test Value\"></q2-editable-field>`,\n });\n editableField = await page.find('q2-editable-field');\n const clickEventSpy = await editableField.spyOnEvent('click');\n\n await dispatchEvent(page, ['q2-editable-field', 'q2-input'], 'click', { composed: true });\n expect(clickEventSpy).not.toHaveReceivedEvent();\n\n await dispatchEvent(page, ['q2-editable-field', '.begin-edit'], 'click', {\n composed: true,\n });\n expect(clickEventSpy).not.toHaveReceivedEvent();\n\n await dispatchEvent(page, ['q2-editable-field', '.cancel-edit'], 'click', {\n composed: true,\n });\n expect(clickEventSpy).not.toHaveReceivedEvent();\n\n await dispatchEvent(page, ['q2-editable-field', '.begin-edit'], 'click', {\n composed: true,\n });\n expect(clickEventSpy).not.toHaveReceivedEvent();\n\n await dispatchEvent(page, ['q2-editable-field', '.save-edit'], 'click', { composed: true });\n expect(clickEventSpy).not.toHaveReceivedEvent();\n\n await dispatchEvent(page, ['q2-editable-field', '.text-wrapper'], 'click', {\n composed: true,\n });\n expect(clickEventSpy).toHaveReceivedEventTimes(1);\n });\n\n describe('when save button is clicked', () => {\n beforeEach(async () => {\n page = await setup({\n html: `<q2-editable-field value=\"Test Value\" editing></q2-editable-field>`,\n });\n editableField = await page.find('q2-editable-field');\n });\n\n describe('when there are errors', () => {\n it('maintains edit state and focuses the input field', async () => {\n editableField.setProperty('errors', [\"It's busted.\"]);\n await page.waitForChanges();\n\n saveButton = await page.find('q2-editable-field >>> [test-id=saveButton]');\n await saveButton.focus();\n expect(await getActiveElementTestId(page)).toEqual('saveButton');\n\n await saveButton.click();\n expect(await getActiveElementTestId(page)).toEqual('editableInput');\n });\n });\n\n describe('when there are not errors', () => {\n it('closes the edit state and focuses the edit button', async () => {\n saveButton = await page.find('q2-editable-field >>> [test-id=saveButton]');\n await saveButton.focus();\n expect(await getActiveElementTestId(page)).toEqual('saveButton');\n await saveButton.click();\n editableField = await page.find('q2-editable-field');\n expect(await editableField.getAttribute('editable')).toBeFalsy();\n expect(await getActiveElementTestId(page)).toEqual('editButton');\n });\n });\n });\n });\n\n describe('Focus', () => {\n describe('when invoked directly', () => {\n describe('when in default mode', () => {\n beforeEach(async () => {\n page = await setup({\n html: `<q2-editable-field value=\"Test Value\"></q2-editable-field>`,\n });\n editableField = await page.find('q2-editable-field');\n });\n\n it('focuses edit button on event dispatch', async () => {\n await dispatchEvent(page, ['q2-editable-field'], 'focus');\n expect(await getActiveElementTestId(page)).toEqual('editButton');\n });\n\n it('focuses edit button when method called', async () => {\n await editableField.focus();\n await page.waitForChanges();\n expect(await getActiveElementTestId(page)).toEqual('editButton');\n });\n });\n\n describe('when in edit mode', () => {\n beforeEach(async () => {\n page = await setup({\n html: `<q2-editable-field value=\"Test Value\" editing></q2-editable-field>`,\n });\n editableField = await page.find('q2-editable-field');\n });\n\n it('focuses input on event dispatch', async () => {\n await page.waitForChanges();\n await dispatchEvent(page, ['q2-editable-field'], 'focus');\n expect(await getActiveElementTestId(page)).toEqual('editableInput');\n });\n\n it('focuses input when method called', async () => {\n await editableField.focus();\n await page.waitForChanges();\n expect(await getActiveElementTestId(page)).toEqual('editableInput');\n });\n });\n });\n\n it('shifts focus on editing change', async function () {\n page = await setup({\n html: `<q2-editable-field value=\"Test Value\"></q2-editable-field>`,\n });\n editButton = await page.find('q2-editable-field >>> .begin-edit');\n inputField = await page.find('q2-editable-field >>> q2-input');\n const inputFocusSpy = await inputField.spyOnEvent('focus');\n\n expect(inputFocusSpy).toHaveReceivedEventTimes(0);\n\n await dispatchEvent(page, ['q2-editable-field', '.begin-edit'], 'click');\n\n // focus on input when switched to editing state\n expect(inputFocusSpy).toHaveReceivedEventTimes(2); // 2 because of focus bubbling\n\n const editBtnFocusSpy = await editButton.spyOnEvent('focus');\n\n expect(editBtnFocusSpy).toHaveReceivedEventTimes(0);\n\n await dispatchEvent(page, ['q2-editable-field', '.save-edit'], 'click');\n\n // edit button focused when changed to no longer editing\n expect(editBtnFocusSpy).toHaveReceivedEventTimes(2); // 2 because of focus bubbling\n });\n });\n });\n\n describe('Keyboard input', () => {\n it('correctly restores previous value when cancel button clicked', async function () {\n const defaultValue = 'Default Value';\n const newValue = 'New Value';\n page = await setup({\n html: `<q2-editable-field editing value=\"${defaultValue}\"></q2-editable-field>`,\n });\n inputField = await page.find('q2-editable-field >>> q2-input');\n let inputValue = await inputField.getProperty('value');\n\n // input value matches element value\n expect(inputValue).toEqual(defaultValue);\n\n await dispatchEvent(page, ['q2-editable-field', '.begin-edit'], 'click');\n inputField.setProperty('value', newValue);\n await page.waitForChanges();\n\n inputValue = await inputField.getProperty('value');\n expect(inputValue).toEqual(newValue);\n\n await dispatchEvent(page, ['q2-editable-field', '.cancel-edit'], 'click');\n inputValue = await inputField.getProperty('value');\n await page.waitForChanges();\n expect(inputValue).toEqual(defaultValue);\n });\n\n it('correctly restores previous value when cancel button clicked and save button clicked', async function () {\n const defaultValue = 'Default Value';\n const newValue = 'New Value';\n page = await setup({\n html: `<q2-editable-field editing value=\"${defaultValue}\"></q2-editable-field>`,\n });\n inputField = await page.find('q2-editable-field >>> q2-input');\n let inputValue;\n\n await dispatchEvent(page, ['q2-editable-field', '.begin-edit'], 'click');\n inputField.setProperty('value', newValue);\n await page.waitForChanges();\n inputValue = await inputField.getProperty('value');\n expect(inputValue).toEqual(newValue);\n\n // should not save after cancel buton clicked\n await dispatchEvent(page, ['q2-editable-field', '.cancel-edit'], 'click');\n inputValue = await inputField.getProperty('value');\n await page.waitForChanges();\n expect(inputValue).toEqual(defaultValue);\n\n await dispatchEvent(page, ['q2-editable-field', '.begin-edit'], 'click');\n inputValue = await inputField.getProperty('value');\n await page.waitForChanges();\n expect(inputValue).toEqual(defaultValue);\n await dispatchEvent(page, ['q2-editable-field', '.save-edit'], 'click');\n inputValue = await inputField.getProperty('value');\n await page.waitForChanges();\n expect(inputValue).toEqual(defaultValue);\n });\n\n it('correctly restores previous value when escape key pressed', async function () {\n const defaultValue = 'Default Value';\n const newValue = 'New Value';\n page = await setup({\n html: `<q2-editable-field editing value=\"${defaultValue}\"></q2-editable-field>`,\n });\n inputField = await page.find('q2-editable-field >>> q2-input');\n let inputValue = await inputField.getProperty('value');\n\n // input value matches element value\n expect(inputValue).toEqual(defaultValue);\n\n await dispatchEvent(page, ['q2-editable-field', '.begin-edit'], 'click');\n inputField.setProperty('value', newValue);\n await page.waitForChanges();\n\n inputValue = await inputField.getProperty('value');\n expect(inputValue).toEqual(newValue);\n\n await dispatchEvent(page, ['q2-editable-field', 'q2-input'], 'keydown', { key: 'Escape' });\n\n inputValue = await inputField.getProperty('value');\n await page.waitForChanges();\n expect(inputValue).toEqual(defaultValue);\n });\n });\n\n describe('Methods', () => {\n beforeEach(async () => {\n page = await setup({\n html: `<q2-editable-field value=\"Original Value\"></q2-editable-field>`,\n });\n editableField = await page.find('q2-editable-field');\n inputField = await page.find('q2-editable-field >>> [test-id=editableInput]');\n editButton = await page.find('q2-editable-field >>> [test-id=editButton]');\n saveButton = await page.find('q2-editable-field >>> [test-id=saveButton]');\n cancelButton = await page.find('q2-editable-field >>> [test-id=cancelButton]');\n });\n\n describe('clickEdit', () => {\n it('clicks the edit button and enters editing mode', async () => {\n const editButtonClickSpy = await editButton.spyOnEvent('click');\n\n expect(editButtonClickSpy).toHaveReceivedEventTimes(0);\n expect(await editableField.getProperty('editing')).toEqual(false);\n\n await editableField.callMethod('clickEdit');\n await page.waitForChanges();\n\n expect(editButtonClickSpy).toHaveReceivedEventTimes(1);\n expect(await editableField.getProperty('editing')).toEqual(true);\n expect(await getActiveElementTestId(page)).toEqual('editableInput');\n });\n\n it('does nothing if already in editing mode', async () => {\n await editableField.setProperty('editing', true);\n await page.waitForChanges();\n\n const editButtonClickSpy = await editButton.spyOnEvent('click');\n\n expect(editButtonClickSpy).toHaveReceivedEventTimes(0);\n expect(await editableField.getProperty('editing')).toEqual(true);\n\n await editableField.callMethod('clickEdit');\n await page.waitForChanges();\n\n expect(editButtonClickSpy).toHaveReceivedEventTimes(0);\n expect(await editableField.getProperty('editing')).toEqual(true);\n });\n });\n\n describe('clickCancel', () => {\n it('clicks the cancel button and exits editing mode', async () => {\n await editableField.setProperty('editing', true);\n await page.waitForChanges();\n\n const cancelButtonClickSpy = await cancelButton.spyOnEvent('click');\n\n expect(cancelButtonClickSpy).toHaveReceivedEventTimes(0);\n expect(await editableField.getProperty('editing')).toEqual(true);\n\n await editableField.callMethod('clickCancel');\n await page.waitForChanges();\n\n expect(cancelButtonClickSpy).toHaveReceivedEventTimes(1);\n expect(await editableField.getProperty('editing')).toEqual(false);\n expect(await getActiveElementTestId(page)).toEqual('editButton');\n });\n\n it('does nothing if not in editing mode', async () => {\n const cancelButtonClickSpy = await cancelButton.spyOnEvent('click');\n\n expect(cancelButtonClickSpy).toHaveReceivedEventTimes(0);\n expect(await editableField.getProperty('editing')).toEqual(false);\n\n await editableField.callMethod('clickCancel');\n await page.waitForChanges();\n\n expect(cancelButtonClickSpy).toHaveReceivedEventTimes(0);\n expect(await editableField.getProperty('editing')).toEqual(false);\n });\n });\n\n describe('clickSave', () => {\n it('clicks the save button and exits editing mode', async () => {\n editableField.setProperty('editing', true);\n await page.waitForChanges();\n\n const saveButtonClickSpy = await saveButton.spyOnEvent('click');\n\n expect(saveButtonClickSpy).toHaveReceivedEventTimes(0);\n expect(await editableField.getProperty('editing')).toEqual(true);\n\n await editableField.callMethod('clickSave');\n await page.waitForChanges();\n\n expect(saveButtonClickSpy).toHaveReceivedEventTimes(1);\n expect(await editableField.getProperty('editing')).toEqual(false);\n expect(await getActiveElementTestId(page)).toEqual('editButton');\n });\n\n it('does nothing if not in editing mode', async () => {\n const saveButtonClickSpy = await saveButton.spyOnEvent('click');\n\n expect(saveButtonClickSpy).toHaveReceivedEventTimes(0);\n expect(await editableField.getProperty('editing')).toEqual(false);\n\n await editableField.callMethod('clickSave');\n await page.waitForChanges();\n\n expect(saveButtonClickSpy).toHaveReceivedEventTimes(0);\n expect(await editableField.getProperty('editing')).toEqual(false);\n });\n });\n\n describe('setValue', () => {\n it('clicks edit button, updates value, and clicks save button', async () => {\n const editButtonClickSpy = await editButton.spyOnEvent('click');\n const saveButtonClickSpy = await saveButton.spyOnEvent('click');\n\n expect(editButtonClickSpy).toHaveReceivedEventTimes(0);\n expect(saveButtonClickSpy).toHaveReceivedEventTimes(0);\n expect(await editableField.getProperty('editing')).toEqual(false);\n const newValue = 'New Value';\n\n await editableField.callMethod('setValue', newValue);\n await page.waitForChanges();\n\n expect(editButtonClickSpy).toHaveReceivedEventTimes(1);\n expect(saveButtonClickSpy).toHaveReceivedEventTimes(1);\n expect(await editableField.getProperty('editing')).toEqual(false);\n expect(await editableField.getProperty('value')).toEqual(newValue);\n expect(await inputField.getProperty('value')).toEqual(newValue);\n expect(\n await getNestedElementProperty(page, ['q2-editable-field', 'q2-input', 'input'], 'value')\n ).toEqual(newValue);\n expect(await getActiveElementTestId(page)).toEqual('editButton');\n });\n\n it('clicks edit button, updates value, but does NOT click save when told not to', async () => {\n const editButtonClickSpy = await editButton.spyOnEvent('click');\n const saveButtonClickSpy = await saveButton.spyOnEvent('click');\n\n expect(editButtonClickSpy).toHaveReceivedEventTimes(0);\n expect(saveButtonClickSpy).toHaveReceivedEventTimes(0);\n expect(await editableField.getProperty('editing')).toEqual(false);\n const newValue = 'New Value';\n\n await editableField.callMethod('setValue', newValue, { clickSave: false });\n await page.waitForChanges();\n\n expect(editButtonClickSpy).toHaveReceivedEventTimes(1);\n expect(saveButtonClickSpy).toHaveReceivedEventTimes(0);\n expect(await editableField.getProperty('editing')).toEqual(true);\n expect(await editableField.getProperty('value')).toEqual('Original Value');\n expect(await inputField.getProperty('value')).toEqual('Original Value');\n expect(\n await getNestedElementProperty(page, ['q2-editable-field', 'q2-input', 'input'], 'value')\n ).toEqual(newValue);\n expect(await getActiveElementTestId(page)).toEqual('editableInput');\n });\n });\n });\n\n describe('display block', () => {\n describe('when block property is provided', () => {\n beforeEach(async () => {\n page = await setup({\n html: `<q2-editable-field block value=\"Test Value\"></q2-editable-field>`,\n });\n editableField = await page.find('q2-editable-field');\n });\n\n it('block property passes to q2-editable-field', async () => {\n expect(editableField).toHaveAttribute('block');\n expect(editableField.getAttribute('block')).toEqual('');\n });\n\n it('sets CSS to display: block', async () => {\n const editFieldDisplay = await getNestedElementStyle(page, 'q2-editable-field', 'display');\n expect(editFieldDisplay).toBe('block');\n });\n\n it('sets the q2-editable-field-wrapper CSS to display:grid', async () => {\n editableField.setProperty('editing', true);\n await page.waitForChanges();\n const wrapperDisplay = await getNestedElementStyle(\n page,\n ['q2-editable-field', '.q2-editable-field-wrapper'],\n 'display'\n );\n expect(wrapperDisplay).toEqual('grid');\n });\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-editable-field aria-label=\"${label}\"></q2-editable-field>`,\n });\n await page.waitForChanges();\n await testDeprecatedAriaLabel(await page.find('q2-editable-field'), label);\n inputField = await page.find('q2-editable-field >>> q2-input');\n\n expect(inputField).toEqualAttribute('label', label);\n expect(inputField).toHaveAttribute('hide-label');\n });\n });\n\n describe('Accessibility', () => {\n describe('aXe DevTools', () => {\n it('does not have accessibility violations', async () => {\n const page = await setup({\n html: `<q2-editable-field value=\"Test Value\"></q2-editable-field>`,\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"]}
1
+ {"version":3,"file":"q2-editable-field-test.e2e.js","sourceRoot":"","sources":["../../../../../src/components/q2-editable-field/test/q2-editable-field-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 getActiveElementTestId,\n testDeprecatedAriaLabel,\n getNestedElementStyle,\n getNestedElementProperty,\n getListOfStyleCompilationIssues,\n evaluateA11y,\n} from '@/utils/helpers';\n\ndescribe('q2-editable-field', () => {\n let page: E2EPage;\n let editableField: E2EElement;\n let inputField: E2EElement;\n let editButton: E2EElement;\n let saveButton: E2EElement;\n let cancelButton: E2EElement;\n\n it('properly compiles CSS vars and functions', async () => {\n page = await setup({ html: '<q2-editable-field></q2-editable-field>' });\n expect(await getListOfStyleCompilationIssues(page, 'q2-editable-field')).toHaveLength(0);\n });\n\n it('localizes appropriate attribute strings', async function () {\n page = await setup({\n html: `<q2-editable-field editing value=\"Test Value\"></q2-editable-field>`,\n });\n\n setTestStrings(page, {\n 'q2-editable-field.label': 'Label Text',\n 'q2-editable-field.ariaLabel': 'Aria-Label Text',\n });\n\n inputField = await page.find('q2-editable-field >>> q2-input');\n editableField = await page.find('q2-editable-field');\n\n editableField.setProperty('label', 'q2-editable-field.label');\n await page.waitForChanges();\n\n expect(inputField).toEqualAttribute('label', 'Label Text');\n expect(inputField).not.toHaveAttribute('hide-label');\n\n editableField.setProperty('ariaLabel', 'q2-editable-field.ariaLabel');\n await page.waitForChanges();\n\n expect(inputField).toEqualAttribute('label', 'Aria-Label Text');\n expect(inputField).toHaveAttribute('hide-label');\n });\n\n describe('Rendering', () => {\n it('should render the component in the dom', async () => {\n page = await setup({ html: `<q2-editable-field></q2-editable-field>` });\n\n editableField = await page.find('q2-editable-field');\n\n expect(editableField.tagName).toEqual('Q2-EDITABLE-FIELD');\n\n const editStateWrapper = await page.find('q2-editable-field >>> .q2-editable-field-wrapper:nth-child(1)');\n const readStateWrapper = await page.find('q2-editable-field >>> .q2-editable-field-wrapper:nth-child(2)');\n\n // both edit and read states render\n expect(editStateWrapper).toBeTruthy();\n expect(readStateWrapper).toBeTruthy();\n });\n\n it('it correctly renders the read state when label not persisted', async () => {\n page = await setup({\n html: `<q2-editable-field value=\"Test Value\"></q2-editable-field>`,\n });\n\n const readStateWrapper = await page.find('q2-editable-field >>> .q2-editable-field-wrapper:nth-child(2)');\n const readStateHidden = await readStateWrapper.getProperty('hidden');\n const readStateTextWrapper = await page.find('q2-editable-field >>> .text-wrapper');\n editButton = await page.find('q2-editable-field >>> .begin-edit');\n\n expect(readStateHidden).toEqual(false);\n\n expect(readStateWrapper).not.toHaveClass('editing');\n\n // value rendered into text wrapper\n expect(readStateTextWrapper.textContent).toEqual('Test Value');\n\n // edit button renders\n expect(editButton).toBeTruthy();\n });\n\n it('it correctly renders the read state when label is persisted', async () => {\n page = await setup({\n html: `<q2-editable-field value=\"Test Value\" label=\"Test Label\" persistent-label></q2-editable-field>`,\n });\n\n const readStateWrapper = await page.find('q2-editable-field >>> .q2-editable-field-wrapper:nth-child(2)');\n expect(readStateWrapper).not.toHaveClass('editing');\n expect(await readStateWrapper.getProperty('hidden')).toEqual(false);\n\n const readStateLabel = await page.find('q2-editable-field >>> .read-state-label');\n\n expect(readStateLabel).not.toBeNull;\n expect(readStateLabel.tagName).toEqual('DT');\n expect(readStateLabel.textContent).toEqual('Test Label');\n\n const readStateTextWrapper = await page.find('q2-editable-field >>> .text-wrapper');\n\n // value rendered into text wrapper\n expect(readStateTextWrapper.textContent).toEqual('Test Value');\n\n editButton = await page.find('q2-editable-field >>> .begin-edit');\n\n // edit button renders\n expect(editButton).toBeTruthy();\n });\n\n it('correctly renders the edit state', async () => {\n page = await setup({\n html: `<q2-editable-field editing value=\"Test Value\"></q2-editable-field>`,\n });\n\n const editStateWrapper = await page.find('q2-editable-field >>> .q2-editable-field-wrapper:nth-child(1)');\n inputField = await page.find('q2-editable-field >>> q2-input');\n\n expect(editStateWrapper).toHaveClass('editing');\n\n // input renders\n expect(inputField).toBeTruthy();\n\n const inputValue = await inputField.getProperty('value');\n\n // input value matches element value\n expect(inputValue).toEqual('Test Value');\n\n cancelButton = await page.find('q2-editable-field >>> .cancel-edit');\n saveButton = await page.find('q2-editable-field >>> .save-edit');\n\n expect(cancelButton).toBeTruthy();\n expect(saveButton).toBeTruthy();\n });\n });\n\n describe('Props', () => {\n it('passes appropriate properties through to q2-input', async () => {\n page = await setup({\n html: `<q2-editable-field editing label=\"Test Label\" type=\"testType\" format-modifier=\"testFormatModifier\" maxlength=\"10\" value=\"Test Value\"></q2-editable-field>`,\n });\n editableField = await page.find('q2-editable-field');\n editableField.setProperty('errors', ['error1', 'error2']);\n editableField.setProperty('hints', ['hint1', 'hint2']);\n\n await page.waitForChanges();\n\n inputField = await page.find('q2-editable-field >>> q2-input');\n\n const inputType = await inputField.getProperty('type');\n const inputErrors = await inputField.getProperty('errors');\n const inputHints = await inputField.getProperty('hints');\n const inputLabel = await inputField.getProperty('label');\n const inputFormatter = await inputField.getProperty('formatModifier');\n const inputMaxLength = await inputField.getProperty('maxlength');\n\n expect(inputType).toEqual('testType');\n expect(inputErrors).toEqual(['error1', 'error2']);\n expect(inputHints).toEqual(['hint1', 'hint2']);\n expect(inputLabel).toEqual('Test Label');\n expect(inputFormatter).toEqual('testFormatModifier');\n expect(inputMaxLength).toEqual(10);\n expect(inputField).not.toHaveAttribute('hide-label');\n\n editableField.setProperty('ariaLabel', 'Test aria-label');\n await page.waitForChanges();\n\n expect(inputField).toEqualAttribute('label', 'Test aria-label');\n expect(inputField).toHaveAttribute('hide-label');\n });\n describe('when value and type are provided to q2-editable-field', () => {\n it('maintains formatted value in q2-input', async () => {\n page = await setup({\n html: `<q2-editable-field type='phone' value='1234567890'></q2-editable-field>`,\n });\n inputField = await page.find('q2-editable-field >>> q2-input');\n const formattedVal = await inputField.getProperty('formattedValue');\n expect(formattedVal).toBe('(123) 456-7890');\n });\n\n it('displays formattedValue in .text-wrapper on q2-editable-field', async () => {\n page = await setup({\n html: `<q2-editable-field type='phone' value='1234567890'></q2-editable-field>`,\n });\n\n inputField = await page.find('q2-editable-field >>> q2-input');\n const formattedVal = await inputField.getProperty('formattedValue');\n const textWrapper = await page.find('q2-editable-field >>> .text-wrapper');\n\n expect(formattedVal).toBe(textWrapper.innerText);\n });\n });\n describe('when errors is updated', () => {\n beforeEach(async () => {\n page = await setup({\n html: `<q2-editable-field value=\"Test Value\" editing></q2-editable-field>`,\n });\n editableField = await page.find('q2-editable-field');\n });\n\n describe('when component has focus', () => {\n it('focuses on input field', async () => {\n saveButton = await page.find('q2-editable-field >>> [test-id=saveButton]');\n saveButton.focus();\n await page.waitForChanges();\n expect(await getActiveElementTestId(page)).toEqual('saveButton');\n editableField.setProperty('errors', [\"It's busted.\"]);\n await page.waitForChanges();\n expect(await getActiveElementTestId(page)).toEqual('editableInput');\n });\n });\n\n describe('when component does not have focus', () => {\n it('does not change focus', async () => {\n expect(await getActiveElementTestId(page)).toBeNull();\n editableField.setProperty('errors', [\"It's busted.\"]);\n await page.waitForChanges();\n expect(await getActiveElementTestId(page)).toBeNull();\n });\n });\n\n describe('when component is disabled', () => {\n beforeEach(async () => {\n page = await setup({ html: `<q2-editable-field disabled> Hello </q2-editable-field>` });\n });\n\n it('editButton is disabled', async () => {\n editableField = await page.find('q2-editable-field');\n const spy = await editableField.spyOnEvent('click');\n await dispatchEvent(page, ['q2-editable-field', '[test-id=\"editButton\"]'], 'click');\n expect(spy).not.toHaveReceivedEvent();\n });\n\n it('editableInput is disabled', async () => {\n editableField = await page.find('q2-editable-field');\n const spy = await editableField.spyOnEvent('click');\n await dispatchEvent(page, ['q2-editable-field', '[test-id=\"editableInput\"]'], 'click');\n expect(spy).not.toHaveReceivedEvent();\n });\n });\n });\n });\n\n describe('Events', () => {\n describe('Input', () => {\n it('correctly bubbles the q2-input input event', async function () {\n page = await setup({\n html: `<q2-editable-field editing value=\"Test Value\"></q2-editable-field>`,\n });\n editableField = await page.find('q2-editable-field');\n const inputEventSpy = await editableField.spyOnEvent('input');\n\n await dispatchEvent(page, ['q2-editable-field', 'q2-input'], 'input', {\n detail: { value: 'testValue', formattedValue: 'formattedTestValue' },\n });\n\n expect(inputEventSpy).toHaveReceivedEventDetail({\n value: 'testValue',\n formattedValue: 'formattedTestValue',\n });\n });\n });\n\n describe('Change', () => {\n it('correctly emits the change event data', async function () {\n page = await setup({\n html: `<q2-editable-field editing value=\"Test Value\"></q2-editable-field>`,\n });\n editableField = await page.find('q2-editable-field');\n const changeEventSpy = await editableField.spyOnEvent('change');\n\n await dispatchEvent(page, ['q2-editable-field', '.save-edit'], 'click');\n\n expect(changeEventSpy).toHaveReceivedEventDetail({\n value: 'Test Value',\n editing: false,\n name: 'save',\n formattedValue: 'Test Value',\n });\n\n await dispatchEvent(page, ['q2-editable-field', '.begin-edit'], 'click');\n\n expect(changeEventSpy).toHaveReceivedEventDetail({ editing: true, name: 'edit' });\n\n await dispatchEvent(page, ['q2-editable-field', '.cancel-edit'], 'click');\n\n expect(changeEventSpy).toHaveReceivedEventDetail({ editing: false, name: 'cancel' });\n });\n\n it('allows custom handler to control the change event effects', async function () {\n page = await setup({\n html: `<q2-editable-field editing value=\"Test Value\"></q2-editable-field>`,\n });\n editableField = await page.find('q2-editable-field');\n let isEditing = await editableField.getProperty('editing');\n\n await page.$eval('q2-editable-field', function (editableField) {\n (editableField as HTMLQ2EditableFieldElement).onchange = function (e: CustomEvent) {\n // basically don't allow editing value to change via change event\n (e.target as HTMLQ2EditableFieldElement).editing = !e.detail.editing;\n };\n });\n\n await page.waitForChanges();\n expect(isEditing).toEqual(true);\n await dispatchEvent(page, ['q2-editable-field', '.save-edit'], 'click');\n isEditing = await editableField.getProperty('editing');\n\n // still editable because onchange event overwrote default behavior\n expect(isEditing).toEqual(true);\n\n // manually set editing to false to test inverse\n editableField.setProperty('editing', false);\n await page.waitForChanges();\n isEditing = await editableField.getProperty('editing');\n expect(isEditing).toEqual(false);\n await dispatchEvent(page, ['q2-editable-field', '.begin-edit'], 'click');\n isEditing = await editableField.getProperty('editing');\n\n // still false...\n expect(isEditing).toEqual(false);\n });\n\n it('triggers change event from Escape and Enter keyboard events', async function () {\n page = await setup({\n html: `<q2-editable-field editing value=\"Test Value\"></q2-editable-field>`,\n });\n editableField = await page.find('q2-editable-field');\n const changeEventSpy = await editableField.spyOnEvent('change');\n\n await dispatchEvent(page, ['q2-editable-field', 'q2-input'], 'keydown', { key: 'Escape' });\n\n expect(changeEventSpy).toHaveReceivedEventDetail({ name: 'cancel', editing: false });\n\n await dispatchEvent(page, ['q2-editable-field', '.begin-edit'], 'click');\n\n expect(changeEventSpy).toHaveReceivedEventDetail({ name: 'edit', editing: true });\n\n await dispatchEvent(page, ['q2-editable-field', 'q2-input'], 'keydown', {\n key: 'Enter',\n bubbles: true,\n });\n\n expect(changeEventSpy).toHaveReceivedEventDetail({\n name: 'save',\n editing: false,\n value: 'Test Value',\n formattedValue: 'Test Value',\n });\n });\n });\n describe('Click', () => {\n it('prevents click propagation from internal elements', async function () {\n page = await setup({\n html: `<q2-editable-field editing value=\"Test Value\"></q2-editable-field>`,\n });\n editableField = await page.find('q2-editable-field');\n const clickEventSpy = await editableField.spyOnEvent('click');\n\n await dispatchEvent(page, ['q2-editable-field', 'q2-input'], 'click', { composed: true });\n expect(clickEventSpy).not.toHaveReceivedEvent();\n\n await dispatchEvent(page, ['q2-editable-field', '.begin-edit'], 'click', {\n composed: true,\n });\n expect(clickEventSpy).not.toHaveReceivedEvent();\n\n await dispatchEvent(page, ['q2-editable-field', '.cancel-edit'], 'click', {\n composed: true,\n });\n expect(clickEventSpy).not.toHaveReceivedEvent();\n\n await dispatchEvent(page, ['q2-editable-field', '.begin-edit'], 'click', {\n composed: true,\n });\n expect(clickEventSpy).not.toHaveReceivedEvent();\n\n await dispatchEvent(page, ['q2-editable-field', '.save-edit'], 'click', { composed: true });\n expect(clickEventSpy).not.toHaveReceivedEvent();\n\n await dispatchEvent(page, ['q2-editable-field', '.text-wrapper'], 'click', {\n composed: true,\n });\n expect(clickEventSpy).toHaveReceivedEventTimes(1);\n });\n\n describe('when save button is clicked', () => {\n beforeEach(async () => {\n page = await setup({\n html: `<q2-editable-field value=\"Test Value\" editing></q2-editable-field>`,\n });\n editableField = await page.find('q2-editable-field');\n });\n\n describe('when there are errors', () => {\n it('maintains edit state and focuses the input field', async () => {\n editableField.setProperty('errors', [\"It's busted.\"]);\n await page.waitForChanges();\n\n saveButton = await page.find('q2-editable-field >>> [test-id=saveButton]');\n await saveButton.focus();\n expect(await getActiveElementTestId(page)).toEqual('saveButton');\n\n await saveButton.click();\n expect(await getActiveElementTestId(page)).toEqual('editableInput');\n });\n });\n\n describe('when there are not errors', () => {\n it('closes the edit state and focuses the edit button', async () => {\n saveButton = await page.find('q2-editable-field >>> [test-id=saveButton]');\n await saveButton.focus();\n expect(await getActiveElementTestId(page)).toEqual('saveButton');\n await saveButton.click();\n editableField = await page.find('q2-editable-field');\n expect(await editableField.getAttribute('editable')).toBeFalsy();\n expect(await getActiveElementTestId(page)).toEqual('editButton');\n });\n });\n });\n });\n\n describe('Focus', () => {\n describe('when invoked directly', () => {\n describe('when in default mode', () => {\n beforeEach(async () => {\n page = await setup({\n html: `<q2-editable-field value=\"Test Value\"></q2-editable-field>`,\n });\n editableField = await page.find('q2-editable-field');\n });\n\n it('focuses edit button on event dispatch', async () => {\n await dispatchEvent(page, ['q2-editable-field'], 'focus');\n expect(await getActiveElementTestId(page)).toEqual('editButton');\n });\n\n it('focuses edit button when method called', async () => {\n await editableField.focus();\n await page.waitForChanges();\n expect(await getActiveElementTestId(page)).toEqual('editButton');\n });\n });\n\n describe('when in edit mode', () => {\n beforeEach(async () => {\n page = await setup({\n html: `<q2-editable-field value=\"Test Value\" editing></q2-editable-field>`,\n });\n editableField = await page.find('q2-editable-field');\n });\n\n it('focuses input on event dispatch', async () => {\n await page.waitForChanges();\n await dispatchEvent(page, ['q2-editable-field'], 'focus');\n expect(await getActiveElementTestId(page)).toEqual('editableInput');\n });\n\n it('focuses input when method called', async () => {\n await editableField.focus();\n await page.waitForChanges();\n expect(await getActiveElementTestId(page)).toEqual('editableInput');\n });\n });\n });\n\n it('shifts focus on editing change', async function () {\n page = await setup({\n html: `<q2-editable-field value=\"Test Value\"></q2-editable-field>`,\n });\n editButton = await page.find('q2-editable-field >>> .begin-edit');\n inputField = await page.find('q2-editable-field >>> q2-input');\n const inputFocusSpy = await inputField.spyOnEvent('focus');\n\n expect(inputFocusSpy).toHaveReceivedEventTimes(0);\n\n await dispatchEvent(page, ['q2-editable-field', '.begin-edit'], 'click');\n\n // focus on input when switched to editing state\n expect(inputFocusSpy).toHaveReceivedEventTimes(2); // 2 because of focus bubbling\n\n const editBtnFocusSpy = await editButton.spyOnEvent('focus');\n\n expect(editBtnFocusSpy).toHaveReceivedEventTimes(0);\n\n await dispatchEvent(page, ['q2-editable-field', '.save-edit'], 'click');\n\n // edit button focused when changed to no longer editing\n expect(editBtnFocusSpy).toHaveReceivedEventTimes(2); // 2 because of focus bubbling\n });\n });\n });\n\n describe('Keyboard input', () => {\n it('correctly restores previous value when cancel button clicked', async function () {\n const defaultValue = 'Default Value';\n const newValue = 'New Value';\n page = await setup({\n html: `<q2-editable-field editing value=\"${defaultValue}\"></q2-editable-field>`,\n });\n inputField = await page.find('q2-editable-field >>> q2-input');\n let inputValue = await inputField.getProperty('value');\n\n // input value matches element value\n expect(inputValue).toEqual(defaultValue);\n\n await dispatchEvent(page, ['q2-editable-field', '.begin-edit'], 'click');\n inputField.setProperty('value', newValue);\n await page.waitForChanges();\n\n inputValue = await inputField.getProperty('value');\n expect(inputValue).toEqual(newValue);\n\n await dispatchEvent(page, ['q2-editable-field', '.cancel-edit'], 'click');\n inputValue = await inputField.getProperty('value');\n await page.waitForChanges();\n expect(inputValue).toEqual(defaultValue);\n });\n\n it('correctly restores previous value when cancel button clicked and save button clicked', async function () {\n const defaultValue = 'Default Value';\n const newValue = 'New Value';\n page = await setup({\n html: `<q2-editable-field editing value=\"${defaultValue}\"></q2-editable-field>`,\n });\n inputField = await page.find('q2-editable-field >>> q2-input');\n let inputValue;\n\n await dispatchEvent(page, ['q2-editable-field', '.begin-edit'], 'click');\n inputField.setProperty('value', newValue);\n await page.waitForChanges();\n inputValue = await inputField.getProperty('value');\n expect(inputValue).toEqual(newValue);\n\n // should not save after cancel buton clicked\n await dispatchEvent(page, ['q2-editable-field', '.cancel-edit'], 'click');\n inputValue = await inputField.getProperty('value');\n await page.waitForChanges();\n expect(inputValue).toEqual(defaultValue);\n\n await dispatchEvent(page, ['q2-editable-field', '.begin-edit'], 'click');\n inputValue = await inputField.getProperty('value');\n await page.waitForChanges();\n expect(inputValue).toEqual(defaultValue);\n await dispatchEvent(page, ['q2-editable-field', '.save-edit'], 'click');\n inputValue = await inputField.getProperty('value');\n await page.waitForChanges();\n expect(inputValue).toEqual(defaultValue);\n });\n\n it('correctly restores previous value when escape key pressed', async function () {\n const defaultValue = 'Default Value';\n const newValue = 'New Value';\n page = await setup({\n html: `<q2-editable-field editing value=\"${defaultValue}\"></q2-editable-field>`,\n });\n inputField = await page.find('q2-editable-field >>> q2-input');\n let inputValue = await inputField.getProperty('value');\n\n // input value matches element value\n expect(inputValue).toEqual(defaultValue);\n\n await dispatchEvent(page, ['q2-editable-field', '.begin-edit'], 'click');\n inputField.setProperty('value', newValue);\n await page.waitForChanges();\n\n inputValue = await inputField.getProperty('value');\n expect(inputValue).toEqual(newValue);\n\n await dispatchEvent(page, ['q2-editable-field', 'q2-input'], 'keydown', { key: 'Escape' });\n\n inputValue = await inputField.getProperty('value');\n await page.waitForChanges();\n expect(inputValue).toEqual(defaultValue);\n });\n });\n\n describe('Methods', () => {\n beforeEach(async () => {\n page = await setup({\n html: `<q2-editable-field value=\"Original Value\"></q2-editable-field>`,\n });\n editableField = await page.find('q2-editable-field');\n inputField = await page.find('q2-editable-field >>> [test-id=editableInput]');\n editButton = await page.find('q2-editable-field >>> [test-id=editButton]');\n saveButton = await page.find('q2-editable-field >>> [test-id=saveButton]');\n cancelButton = await page.find('q2-editable-field >>> [test-id=cancelButton]');\n });\n\n describe('clickEdit', () => {\n it('clicks the edit button and enters editing mode', async () => {\n const editButtonClickSpy = await editButton.spyOnEvent('click');\n\n expect(editButtonClickSpy).toHaveReceivedEventTimes(0);\n expect(await editableField.getProperty('editing')).toEqual(false);\n\n await editableField.callMethod('clickEdit');\n await page.waitForChanges();\n\n expect(editButtonClickSpy).toHaveReceivedEventTimes(1);\n expect(await editableField.getProperty('editing')).toEqual(true);\n expect(await getActiveElementTestId(page)).toEqual('editableInput');\n });\n\n it('does nothing if already in editing mode', async () => {\n await editableField.setProperty('editing', true);\n await page.waitForChanges();\n\n const editButtonClickSpy = await editButton.spyOnEvent('click');\n\n expect(editButtonClickSpy).toHaveReceivedEventTimes(0);\n expect(await editableField.getProperty('editing')).toEqual(true);\n\n await editableField.callMethod('clickEdit');\n await page.waitForChanges();\n\n expect(editButtonClickSpy).toHaveReceivedEventTimes(0);\n expect(await editableField.getProperty('editing')).toEqual(true);\n });\n });\n\n describe('clickCancel', () => {\n it('clicks the cancel button and exits editing mode', async () => {\n await editableField.setProperty('editing', true);\n await page.waitForChanges();\n\n const cancelButtonClickSpy = await cancelButton.spyOnEvent('click');\n\n expect(cancelButtonClickSpy).toHaveReceivedEventTimes(0);\n expect(await editableField.getProperty('editing')).toEqual(true);\n\n await editableField.callMethod('clickCancel');\n await page.waitForChanges();\n\n expect(cancelButtonClickSpy).toHaveReceivedEventTimes(1);\n expect(await editableField.getProperty('editing')).toEqual(false);\n expect(await getActiveElementTestId(page)).toEqual('editButton');\n });\n\n it('does nothing if not in editing mode', async () => {\n const cancelButtonClickSpy = await cancelButton.spyOnEvent('click');\n\n expect(cancelButtonClickSpy).toHaveReceivedEventTimes(0);\n expect(await editableField.getProperty('editing')).toEqual(false);\n\n await editableField.callMethod('clickCancel');\n await page.waitForChanges();\n\n expect(cancelButtonClickSpy).toHaveReceivedEventTimes(0);\n expect(await editableField.getProperty('editing')).toEqual(false);\n });\n });\n\n describe('clickSave', () => {\n it('clicks the save button and exits editing mode', async () => {\n editableField.setProperty('editing', true);\n await page.waitForChanges();\n\n const saveButtonClickSpy = await saveButton.spyOnEvent('click');\n\n expect(saveButtonClickSpy).toHaveReceivedEventTimes(0);\n expect(await editableField.getProperty('editing')).toEqual(true);\n\n await editableField.callMethod('clickSave');\n await page.waitForChanges();\n\n expect(saveButtonClickSpy).toHaveReceivedEventTimes(1);\n expect(await editableField.getProperty('editing')).toEqual(false);\n expect(await getActiveElementTestId(page)).toEqual('editButton');\n });\n\n it('does nothing if not in editing mode', async () => {\n const saveButtonClickSpy = await saveButton.spyOnEvent('click');\n\n expect(saveButtonClickSpy).toHaveReceivedEventTimes(0);\n expect(await editableField.getProperty('editing')).toEqual(false);\n\n await editableField.callMethod('clickSave');\n await page.waitForChanges();\n\n expect(saveButtonClickSpy).toHaveReceivedEventTimes(0);\n expect(await editableField.getProperty('editing')).toEqual(false);\n });\n });\n\n describe('setValue', () => {\n it('clicks edit button, updates value, and clicks save button', async () => {\n const editButtonClickSpy = await editButton.spyOnEvent('click');\n const saveButtonClickSpy = await saveButton.spyOnEvent('click');\n\n expect(editButtonClickSpy).toHaveReceivedEventTimes(0);\n expect(saveButtonClickSpy).toHaveReceivedEventTimes(0);\n expect(await editableField.getProperty('editing')).toEqual(false);\n const newValue = 'New Value';\n\n await editableField.callMethod('setValue', newValue);\n await page.waitForChanges();\n\n expect(editButtonClickSpy).toHaveReceivedEventTimes(1);\n expect(saveButtonClickSpy).toHaveReceivedEventTimes(1);\n expect(await editableField.getProperty('editing')).toEqual(false);\n expect(await editableField.getProperty('value')).toEqual(newValue);\n expect(await inputField.getProperty('value')).toEqual(newValue);\n expect(\n await getNestedElementProperty(page, ['q2-editable-field', 'q2-input', 'input'], 'value')\n ).toEqual(newValue);\n expect(await getActiveElementTestId(page)).toEqual('editButton');\n });\n\n it('clicks edit button, updates value, but does NOT click save when told not to', async () => {\n const editButtonClickSpy = await editButton.spyOnEvent('click');\n const saveButtonClickSpy = await saveButton.spyOnEvent('click');\n\n expect(editButtonClickSpy).toHaveReceivedEventTimes(0);\n expect(saveButtonClickSpy).toHaveReceivedEventTimes(0);\n expect(await editableField.getProperty('editing')).toEqual(false);\n const newValue = 'New Value';\n\n await editableField.callMethod('setValue', newValue, { clickSave: false });\n await page.waitForChanges();\n\n expect(editButtonClickSpy).toHaveReceivedEventTimes(1);\n expect(saveButtonClickSpy).toHaveReceivedEventTimes(0);\n expect(await editableField.getProperty('editing')).toEqual(true);\n expect(await editableField.getProperty('value')).toEqual('Original Value');\n expect(await inputField.getProperty('value')).toEqual('Original Value');\n expect(\n await getNestedElementProperty(page, ['q2-editable-field', 'q2-input', 'input'], 'value')\n ).toEqual(newValue);\n expect(await getActiveElementTestId(page)).toEqual('editableInput');\n });\n });\n });\n\n describe('display block', () => {\n describe('when block property is provided', () => {\n beforeEach(async () => {\n page = await setup({\n html: `<q2-editable-field block value=\"Test Value\"></q2-editable-field>`,\n });\n editableField = await page.find('q2-editable-field');\n });\n\n it('block property passes to q2-editable-field', async () => {\n expect(editableField).toHaveAttribute('block');\n expect(editableField.getAttribute('block')).toEqual('');\n });\n\n it('sets CSS to display: block', async () => {\n const editFieldDisplay = await getNestedElementStyle(page, 'q2-editable-field', 'display');\n expect(editFieldDisplay).toBe('block');\n });\n\n it('sets the q2-editable-field-wrapper CSS to display:grid', async () => {\n editableField.setProperty('editing', true);\n await page.waitForChanges();\n const wrapperDisplay = await getNestedElementStyle(\n page,\n ['q2-editable-field', '.q2-editable-field-wrapper'],\n 'display'\n );\n expect(wrapperDisplay).toEqual('grid');\n });\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-editable-field aria-label=\"${label}\"></q2-editable-field>`,\n });\n await page.waitForChanges();\n await testDeprecatedAriaLabel(await page.find('q2-editable-field'), label);\n inputField = await page.find('q2-editable-field >>> q2-input');\n\n expect(inputField).toEqualAttribute('label', label);\n expect(inputField).toHaveAttribute('hide-label');\n });\n });\n\n describe('Accessibility', () => {\n describe('aXe DevTools', () => {\n it('does not have accessibility violations', async () => {\n const page = await setup({\n html: `<q2-editable-field value=\"Test Value\"></q2-editable-field>`,\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"]}
@@ -118,7 +118,7 @@ export class Q2Example {
118
118
  }, onClick: () => this.tctClick.emit(), role: "menu" }, h("slot", null))));
119
119
  }
120
120
  render() {
121
- return h(Host, { key: 'e4df51465f7c14e0ff4ae2463613e73cc6100318', attribute: "navigation" }, this.renderMenuInner());
121
+ return h(Host, { key: '2a8810e8b8152257cb5f710570a7b60708f76bde', attribute: "navigation" }, this.renderMenuInner());
122
122
  }
123
123
  static get is() { return "q2-example"; }
124
124
  static get encapsulation() { return "shadow"; }
@@ -1 +1 @@
1
- {"version":3,"file":"q2-example.js","sourceRoot":"","sources":["../../../src/components/q2-example/q2-example.tsx"],"names":[],"mappings":"AAAA,OAAO,EACH,SAAS,EAET,OAAO,EAEP,QAAQ,EACR,MAAM,EACN,KAAK,EACL,CAAC,EACD,IAAI,EACJ,MAAM,EACN,IAAI,EACJ,KAAK,EACL,KAAK,GACR,MAAM,eAAe,CAAC;AAOvB,MAAM,OAAO,SAAS;;QAiBlB,aAAQ,GAAG,SAAS,CAAC;;sBA6BZ,CAAC;;;oBA8BH,SAAS;;IAsBhB,aAAa;IACb,qCAAqC;IAErC;;;OAGG;IAEH,iBAAiB,KAAI,CAAC;IAEtB,oBAAoB,KAAI,CAAC;IAEzB,iBAAiB,KAAI,CAAC;IAEtB,gBAAgB,KAAI,CAAC;IAErB,qBAAqB,CAAC,MAAW,EAAE,MAAW,EAAE,QAAgB;QAC5D,IAAI,QAAQ,KAAK,SAAS,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YAC9C,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,mBAAmB,KAAI,CAAC;IAExB,kBAAkB,KAAI,CAAC;IAEvB,mBAAmB,KAAI,CAAC;IAExB,kBAAkB,KAAI,CAAC;IAEvB,aAAa;IACb,oBAAoB;IAEpB;;;;;OAKG;IAGH,OAAO,CAAC,EAAW;QACf,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;IAGD,MAAM,CAAC,EAAW;QACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1B,CAAC;IAED,aAAa;IACb,6BAA6B;IAE7B;;;;;OAKG;IAEH;;OAEG;IAEH,KAAK,CAAC,KAAK;QACP,MAAM;IACV,CAAC;IAED;;;;;OAKG;IAEH,KAAK,CAAC,QAAQ;QACV,MAAM;QACN,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,aAAa;IACb,mBAAmB;IAEnB;;;;OAIG;IAGH,cAAc,CAAC,UAAkB,EAAE,UAAkB;QACjD,IAAI,UAAU,KAAK,UAAU,EAAE,CAAC;YAC5B,IAAI,CAAC,WAAW,EAAE,CAAC;QACvB,CAAC;IACL,CAAC;IAGD,aAAa,CAAC,SAAiB,EAAE,SAAiB;QAC9C,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC1B,IAAI,CAAC,WAAW,EAAE,CAAC;QACvB,CAAC;IACL,CAAC;IAED,aAAa;IACb,wBAAwB;IAExB;;;;;;OAMG;IAEH,IAAI,SAAS;QACT,KAAK;QACL,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,gBAAgB;QAClB,MAAM;IACV,CAAC;IAED,WAAW;QACP,MAAM;IACV,CAAC;IAED,aAAa;IACb,yBAAyB;IAEzB;;;;;OAKG;IAEH,eAAe;QACX,OAAO,CACH,EAAC,QAAQ;YACL,WACI,KAAK,EAAE;oBACH,IAAI,EAAE,IAAI;oBACV,YAAY,EAAE,IAAI;oBAClB,QAAQ,EAAE,IAAI,CAAC,QAAQ;iBAC1B,EACD,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EACnC,IAAI,EAAC,MAAM;gBAEX,eAAa,CACX,CACC,CACd,CAAC;IACN,CAAC;IAED,MAAM;QACF,OAAO,EAAC,IAAI,qDAAC,SAAS,EAAC,YAAY,IAAE,IAAI,CAAC,eAAe,EAAE,CAAQ,CAAC;IACxE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGJ","sourcesContent":["import {\n Component,\n ComponentInterface,\n Element,\n EventEmitter,\n Fragment,\n Method,\n Event,\n h,\n Host,\n Listen,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\n\n@Component({\n tag: 'q2-example',\n shadow: true,\n styleUrl: 'q2-example.scss',\n})\nexport class Q2Example implements ComponentInterface {\n // #region Own Properties\n\n /**\n * 1. Own properties\n * Variables that are not exposed publicly due to the lack of the @Prop()\n * decorator. They are for internal use only. List in alphabetical order\n * and always set the type if a default value has not been set. If a\n * default value has been set, then the type can be omitted because it is\n * already inferred. If one of these properties needs to be initialized\n * with the value of another one of these properties, then the\n * initialization should be done in the componentWillLoad() lifecycle\n * event so that these properties can be alphabetizes without referencing\n * a property before it is declared.\n */\n\n num: number;\n someText = 'default';\n\n // #endregion\n // #region Host HTML Element\n\n /**\n * 2. Host HTML element\n * Reference to host HTML element if needed.\n */\n\n @Element()\n el: HTMLElement;\n\n // #endregion\n // #region State Properties\n\n /**\n * 3. State properties\n * Variables that are used to track state internally via the @State()\n * decorator. They are for internal use only. List in alphabetical order\n * and always set the type if a default value has not been set. If a\n * default value has been set, then the type can be omitted because it is\n * already inferred.\n */\n\n @State()\n isValidated: boolean;\n\n @State()\n status = 0;\n\n // #endregion\n // #region Public Property API\n\n /**\n * 4. Public property API\n * Variables that are exposed publicly via @Prop() decorator as\n * properties and attributes on the host element. Document each using\n * JSDoc comments, list in alphabetical order, and always set the type if\n * a default value has not been set. If a default value has been set,\n * then the type can be omitted because it is already inferred.\n */\n\n /**\n * The content of the menu.\n */\n @Prop()\n content: string;\n\n /**\n * If `true`, the user cannot interact with the menu.\n */\n @Prop()\n disabled: boolean;\n\n /**\n * Specifies the menu type.\n */\n @Prop()\n type = 'overlay';\n\n // #endregion\n // #region Events\n\n /**\n * 5. Events\n * Custom events dispatched from the component that are defined via the\n * @Event() decorator. Start each event name with \"tct\" so they do not\n * conflict with native events. Document each using JSDoc comments and\n * list in alphabetical order.\n */\n\n @Event()\n tctClick: EventEmitter;\n\n @Event()\n tctDrag: EventEmitter;\n\n @Event()\n tctOpen: EventEmitter;\n\n // #endregion\n // #region Component Lifecycle Events\n\n /**\n * 6. Component lifecycle events\n * Order by their natural call order.\n */\n\n connectedCallback() {}\n\n disconnectedCallback() {}\n\n componentWillLoad() {}\n\n componentDidLoad() {}\n\n componentShouldUpdate(newVal: any, oldVal: any, propName: string) {\n if (propName === 'content' && newVal !== oldVal) {\n return true;\n }\n return false;\n }\n\n componentWillUpdate() {}\n\n componentDidUpdate() {}\n\n componentWillRender() {}\n\n componentDidRender() {}\n\n // #endregion\n // #region Listeners\n\n /**\n * 7. Listeners\n * Event listeners defined via the @Listen() decorator. List in\n * alphabetical order of the event name. Recommend starting listener\n * methods with \"on\".\n */\n\n @Listen('click')\n onClick(ev: UIEvent) {\n this.tctClick.emit(ev);\n }\n\n @Listen('drag')\n onDrag(ev: UIEvent) {\n this.tctDrag.emit(ev);\n }\n\n // #endregion\n // #region Public Methods API\n\n /**\n * 8. Public methods API\n * Methods exposed on the host element via the @Method() decorator.\n * Document each using JSDoc comments and include the \"@testOnly\" tag for\n * test methods. Must be async, and listed in alphabetical order.\n */\n\n /**\n * Closes the menu.\n */\n @Method()\n async close(): Promise<void> {\n // ...\n }\n\n /*\n * Opens the menu. If the menu is already open or it can't be opened, it\n * returns `false`.\n *\n * @testOnly\n */\n @Method()\n async openMenu(): Promise<boolean> {\n // ...\n return true;\n }\n\n // #endregion\n // #region Watchers\n\n /**\n * 9. Watchers\n * Methods that are called when a property is updated as specified via\n * the @Watch() decorator. List in alphabetical order of the property.\n */\n\n @Watch('content')\n contentChanged(newContent: string, oldContent: string) {\n if (newContent !== oldContent) {\n this.updateState();\n }\n }\n\n @Watch('status')\n statusChanged(newStatus: string, oldStatus: string) {\n if (newStatus !== oldStatus) {\n this.updateState();\n }\n }\n\n // #endregion\n // #region Local Methods\n\n /**\n * 10. Local methods\n * Methods that contain internal business logic. These methods cannot be\n * called from the host element. This includes getters. List getters\n * first in alphabetical order, then list the rest of the methods in\n * alphabetical order.\n */\n\n get menuState(): string {\n //...\n return 'open';\n }\n\n async prepareAnimation(): Promise<void> {\n // ...\n }\n\n updateState() {\n // ...\n }\n\n // #endregion\n // #region Render Methods\n\n /**\n * 11. Render methods\n * The render() method and helper methods used by render() that return\n * JSX. Names should start with \"render\". List in alphabetical order,\n * except for the render() method which should always be last\n */\n\n renderMenuInner() {\n return (\n <Fragment>\n <div\n class={{\n menu: true,\n 'page-inner': true,\n disabled: this.disabled,\n }}\n onClick={() => this.tctClick.emit()}\n role=\"menu\"\n >\n <slot></slot>\n </div>\n </Fragment>\n );\n }\n\n render() {\n return <Host attribute=\"navigation\">{this.renderMenuInner()}</Host>;\n }\n\n // #endregion\n}\n"]}
1
+ {"version":3,"file":"q2-example.js","sourceRoot":"","sources":["../../../../src/components/q2-example/q2-example.tsx"],"names":[],"mappings":"AAAA,OAAO,EACH,SAAS,EAET,OAAO,EAEP,QAAQ,EACR,MAAM,EACN,KAAK,EACL,CAAC,EACD,IAAI,EACJ,MAAM,EACN,IAAI,EACJ,KAAK,EACL,KAAK,GACR,MAAM,eAAe,CAAC;AAOvB,MAAM,OAAO,SAAS;;QAiBlB,aAAQ,GAAG,SAAS,CAAC;;sBA6BZ,CAAC;;;oBA8BH,SAAS;;IAsBhB,aAAa;IACb,qCAAqC;IAErC;;;OAGG;IAEH,iBAAiB,KAAI,CAAC;IAEtB,oBAAoB,KAAI,CAAC;IAEzB,iBAAiB,KAAI,CAAC;IAEtB,gBAAgB,KAAI,CAAC;IAErB,qBAAqB,CAAC,MAAW,EAAE,MAAW,EAAE,QAAgB;QAC5D,IAAI,QAAQ,KAAK,SAAS,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YAC9C,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,mBAAmB,KAAI,CAAC;IAExB,kBAAkB,KAAI,CAAC;IAEvB,mBAAmB,KAAI,CAAC;IAExB,kBAAkB,KAAI,CAAC;IAEvB,aAAa;IACb,oBAAoB;IAEpB;;;;;OAKG;IAGH,OAAO,CAAC,EAAW;QACf,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;IAGD,MAAM,CAAC,EAAW;QACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1B,CAAC;IAED,aAAa;IACb,6BAA6B;IAE7B;;;;;OAKG;IAEH;;OAEG;IAEH,KAAK,CAAC,KAAK;QACP,MAAM;IACV,CAAC;IAED;;;;;OAKG;IAEH,KAAK,CAAC,QAAQ;QACV,MAAM;QACN,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,aAAa;IACb,mBAAmB;IAEnB;;;;OAIG;IAGH,cAAc,CAAC,UAAkB,EAAE,UAAkB;QACjD,IAAI,UAAU,KAAK,UAAU,EAAE,CAAC;YAC5B,IAAI,CAAC,WAAW,EAAE,CAAC;QACvB,CAAC;IACL,CAAC;IAGD,aAAa,CAAC,SAAiB,EAAE,SAAiB;QAC9C,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC1B,IAAI,CAAC,WAAW,EAAE,CAAC;QACvB,CAAC;IACL,CAAC;IAED,aAAa;IACb,wBAAwB;IAExB;;;;;;OAMG;IAEH,IAAI,SAAS;QACT,KAAK;QACL,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,gBAAgB;QAClB,MAAM;IACV,CAAC;IAED,WAAW;QACP,MAAM;IACV,CAAC;IAED,aAAa;IACb,yBAAyB;IAEzB;;;;;OAKG;IAEH,eAAe;QACX,OAAO,CACH,EAAC,QAAQ;YACL,WACI,KAAK,EAAE;oBACH,IAAI,EAAE,IAAI;oBACV,YAAY,EAAE,IAAI;oBAClB,QAAQ,EAAE,IAAI,CAAC,QAAQ;iBAC1B,EACD,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EACnC,IAAI,EAAC,MAAM;gBAEX,eAAa,CACX,CACC,CACd,CAAC;IACN,CAAC;IAED,MAAM;QACF,OAAO,EAAC,IAAI,qDAAC,SAAS,EAAC,YAAY,IAAE,IAAI,CAAC,eAAe,EAAE,CAAQ,CAAC;IACxE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGJ","sourcesContent":["import {\n Component,\n ComponentInterface,\n Element,\n EventEmitter,\n Fragment,\n Method,\n Event,\n h,\n Host,\n Listen,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\n\n@Component({\n tag: 'q2-example',\n shadow: true,\n styleUrl: 'q2-example.scss',\n})\nexport class Q2Example implements ComponentInterface {\n // #region Own Properties\n\n /**\n * 1. Own properties\n * Variables that are not exposed publicly due to the lack of the @Prop()\n * decorator. They are for internal use only. List in alphabetical order\n * and always set the type if a default value has not been set. If a\n * default value has been set, then the type can be omitted because it is\n * already inferred. If one of these properties needs to be initialized\n * with the value of another one of these properties, then the\n * initialization should be done in the componentWillLoad() lifecycle\n * event so that these properties can be alphabetizes without referencing\n * a property before it is declared.\n */\n\n num: number;\n someText = 'default';\n\n // #endregion\n // #region Host HTML Element\n\n /**\n * 2. Host HTML element\n * Reference to host HTML element if needed.\n */\n\n @Element()\n el: HTMLElement;\n\n // #endregion\n // #region State Properties\n\n /**\n * 3. State properties\n * Variables that are used to track state internally via the @State()\n * decorator. They are for internal use only. List in alphabetical order\n * and always set the type if a default value has not been set. If a\n * default value has been set, then the type can be omitted because it is\n * already inferred.\n */\n\n @State()\n isValidated: boolean;\n\n @State()\n status = 0;\n\n // #endregion\n // #region Public Property API\n\n /**\n * 4. Public property API\n * Variables that are exposed publicly via @Prop() decorator as\n * properties and attributes on the host element. Document each using\n * JSDoc comments, list in alphabetical order, and always set the type if\n * a default value has not been set. If a default value has been set,\n * then the type can be omitted because it is already inferred.\n */\n\n /**\n * The content of the menu.\n */\n @Prop()\n content: string;\n\n /**\n * If `true`, the user cannot interact with the menu.\n */\n @Prop()\n disabled: boolean;\n\n /**\n * Specifies the menu type.\n */\n @Prop()\n type = 'overlay';\n\n // #endregion\n // #region Events\n\n /**\n * 5. Events\n * Custom events dispatched from the component that are defined via the\n * @Event() decorator. Start each event name with \"tct\" so they do not\n * conflict with native events. Document each using JSDoc comments and\n * list in alphabetical order.\n */\n\n @Event()\n tctClick: EventEmitter;\n\n @Event()\n tctDrag: EventEmitter;\n\n @Event()\n tctOpen: EventEmitter;\n\n // #endregion\n // #region Component Lifecycle Events\n\n /**\n * 6. Component lifecycle events\n * Order by their natural call order.\n */\n\n connectedCallback() {}\n\n disconnectedCallback() {}\n\n componentWillLoad() {}\n\n componentDidLoad() {}\n\n componentShouldUpdate(newVal: any, oldVal: any, propName: string) {\n if (propName === 'content' && newVal !== oldVal) {\n return true;\n }\n return false;\n }\n\n componentWillUpdate() {}\n\n componentDidUpdate() {}\n\n componentWillRender() {}\n\n componentDidRender() {}\n\n // #endregion\n // #region Listeners\n\n /**\n * 7. Listeners\n * Event listeners defined via the @Listen() decorator. List in\n * alphabetical order of the event name. Recommend starting listener\n * methods with \"on\".\n */\n\n @Listen('click')\n onClick(ev: UIEvent) {\n this.tctClick.emit(ev);\n }\n\n @Listen('drag')\n onDrag(ev: UIEvent) {\n this.tctDrag.emit(ev);\n }\n\n // #endregion\n // #region Public Methods API\n\n /**\n * 8. Public methods API\n * Methods exposed on the host element via the @Method() decorator.\n * Document each using JSDoc comments and include the \"@testOnly\" tag for\n * test methods. Must be async, and listed in alphabetical order.\n */\n\n /**\n * Closes the menu.\n */\n @Method()\n async close(): Promise<void> {\n // ...\n }\n\n /*\n * Opens the menu. If the menu is already open or it can't be opened, it\n * returns `false`.\n *\n * @testOnly\n */\n @Method()\n async openMenu(): Promise<boolean> {\n // ...\n return true;\n }\n\n // #endregion\n // #region Watchers\n\n /**\n * 9. Watchers\n * Methods that are called when a property is updated as specified via\n * the @Watch() decorator. List in alphabetical order of the property.\n */\n\n @Watch('content')\n contentChanged(newContent: string, oldContent: string) {\n if (newContent !== oldContent) {\n this.updateState();\n }\n }\n\n @Watch('status')\n statusChanged(newStatus: string, oldStatus: string) {\n if (newStatus !== oldStatus) {\n this.updateState();\n }\n }\n\n // #endregion\n // #region Local Methods\n\n /**\n * 10. Local methods\n * Methods that contain internal business logic. These methods cannot be\n * called from the host element. This includes getters. List getters\n * first in alphabetical order, then list the rest of the methods in\n * alphabetical order.\n */\n\n get menuState(): string {\n //...\n return 'open';\n }\n\n async prepareAnimation(): Promise<void> {\n // ...\n }\n\n updateState() {\n // ...\n }\n\n // #endregion\n // #region Render Methods\n\n /**\n * 11. Render methods\n * The render() method and helper methods used by render() that return\n * JSX. Names should start with \"render\". List in alphabetical order,\n * except for the render() method which should always be last\n */\n\n renderMenuInner() {\n return (\n <Fragment>\n <div\n class={{\n menu: true,\n 'page-inner': true,\n disabled: this.disabled,\n }}\n onClick={() => this.tctClick.emit()}\n role=\"menu\"\n >\n <slot></slot>\n </div>\n </Fragment>\n );\n }\n\n render() {\n return <Host attribute=\"navigation\">{this.renderMenuInner()}</Host>;\n }\n\n // #endregion\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"q2-example.e2e.js","sourceRoot":"","sources":["../../../../src/components/q2-example/test/q2-example.e2e.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAGtD,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IACxB,IAAI,IAAa,CAAC;IAElB,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,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;gBACrD,MAAM,aAAa,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;gBAE/C,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;YAChC,EAAE,CAAC,iFAAiF,EAAE,KAAK,IAAI,EAAE;gBAC7F,IAAI,GAAG,MAAM,KAAK,CAAC;oBACf,IAAI,EAAE,2BAA2B;iBACpC,CAAC,CAAC;gBACH,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;gBACrD,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAElC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACxC,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC","sourcesContent":["import { evaluateA11y, setup } from '@/utils/helpers';\nimport { E2EPage } from '@stencil/core/testing';\n\ndescribe('q2-example', () => {\n let page: E2EPage;\n\n describe('Accessibility', () => {\n describe('aXe DevTools', () => {\n it('does not have accessibility violations', async () => {\n const page = await setup({ html: `<q2-example />` });\n const hasViolations = await evaluateA11y(page);\n\n expect(hasViolations).toBe(false);\n });\n });\n\n describe('Accessibility Tree', () => {\n it(\"option-list should have a role of 'menu' and the options a role of 'menuoption'\", async () => {\n page = await setup({\n html: `<q2-example></q2-example>`,\n });\n await page.waitForChanges();\n\n const snapshot = await page.accessibility.snapshot();\n const menu = snapshot.children[0];\n\n expect(menu.role).toEqual('menu');\n });\n });\n describe('Keyboard Controls', () => {});\n describe('Other', () => {});\n });\n});\n"]}
1
+ {"version":3,"file":"q2-example.e2e.js","sourceRoot":"","sources":["../../../../../src/components/q2-example/test/q2-example.e2e.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAGtD,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IACxB,IAAI,IAAa,CAAC;IAElB,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,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;gBACrD,MAAM,aAAa,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;gBAE/C,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;YAChC,EAAE,CAAC,iFAAiF,EAAE,KAAK,IAAI,EAAE;gBAC7F,IAAI,GAAG,MAAM,KAAK,CAAC;oBACf,IAAI,EAAE,2BAA2B;iBACpC,CAAC,CAAC;gBACH,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;gBACrD,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAElC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACxC,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC","sourcesContent":["import { evaluateA11y, setup } from '@/utils/helpers';\nimport { E2EPage } from '@stencil/core/testing';\n\ndescribe('q2-example', () => {\n let page: E2EPage;\n\n describe('Accessibility', () => {\n describe('aXe DevTools', () => {\n it('does not have accessibility violations', async () => {\n const page = await setup({ html: `<q2-example />` });\n const hasViolations = await evaluateA11y(page);\n\n expect(hasViolations).toBe(false);\n });\n });\n\n describe('Accessibility Tree', () => {\n it(\"option-list should have a role of 'menu' and the options a role of 'menuoption'\", async () => {\n page = await setup({\n html: `<q2-example></q2-example>`,\n });\n await page.waitForChanges();\n\n const snapshot = await page.accessibility.snapshot();\n const menu = snapshot.children[0];\n\n expect(menu.role).toEqual('menu');\n });\n });\n describe('Keyboard Controls', () => {});\n describe('Other', () => {});\n });\n});\n"]}