q2-tecton-elements 1.35.2 → 1.37.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (352) hide show
  1. package/dist/cjs/charting-d02cba1f.js.map +1 -1
  2. package/dist/cjs/click-elsewhere_2.cjs.entry.js +1 -1
  3. package/dist/cjs/{index-f6545293.js → index-6f9f259c.js} +12 -9
  4. package/dist/cjs/index-6f9f259c.js.map +1 -0
  5. package/dist/cjs/loader.cjs.js +1 -1
  6. package/dist/cjs/q2-action-sheet.cjs.entry.js +2 -2
  7. package/dist/cjs/q2-action-sheet.cjs.entry.js.map +1 -1
  8. package/dist/cjs/q2-btn_2.cjs.entry.js +1 -1
  9. package/dist/cjs/q2-calendar.cjs.entry.js +46 -3
  10. package/dist/cjs/q2-calendar.cjs.entry.js.map +1 -1
  11. package/dist/cjs/q2-card.cjs.entry.js +1 -1
  12. package/dist/cjs/q2-carousel-pane.cjs.entry.js +1 -1
  13. package/dist/cjs/q2-carousel.cjs.entry.js +1 -1
  14. package/dist/cjs/q2-chart-area.cjs.entry.js +2 -2
  15. package/dist/cjs/q2-chart-area.cjs.entry.js.map +1 -1
  16. package/dist/cjs/q2-chart-bar.cjs.entry.js +2 -2
  17. package/dist/cjs/q2-chart-bar.cjs.entry.js.map +1 -1
  18. package/dist/cjs/q2-chart-donut.cjs.entry.js +12 -8
  19. package/dist/cjs/q2-chart-donut.cjs.entry.js.map +1 -1
  20. package/dist/cjs/q2-checkbox-group.cjs.entry.js +25 -6
  21. package/dist/cjs/q2-checkbox-group.cjs.entry.js.map +1 -1
  22. package/dist/cjs/q2-checkbox.cjs.entry.js +1 -1
  23. package/dist/cjs/q2-data-table.cjs.entry.js +2 -2
  24. package/dist/cjs/q2-data-table.cjs.entry.js.map +1 -1
  25. package/dist/cjs/q2-dropdown-item.cjs.entry.js +1 -1
  26. package/dist/cjs/q2-dropdown.cjs.entry.js +3 -3
  27. package/dist/cjs/q2-dropdown.cjs.entry.js.map +1 -1
  28. package/dist/cjs/q2-editable-field.cjs.entry.js +34 -6
  29. package/dist/cjs/q2-editable-field.cjs.entry.js.map +1 -1
  30. package/dist/cjs/q2-icon.cjs.entry.js +1 -1
  31. package/dist/cjs/q2-input.cjs.entry.js +17 -10
  32. package/dist/cjs/q2-input.cjs.entry.js.map +1 -1
  33. package/dist/cjs/q2-loc.cjs.entry.js +1 -1
  34. package/dist/cjs/q2-message.cjs.entry.js +14 -13
  35. package/dist/cjs/q2-message.cjs.entry.js.map +1 -1
  36. package/dist/cjs/q2-month-picker.cjs.entry.js +1 -1
  37. package/dist/cjs/q2-optgroup_2.cjs.entry.js +1 -1
  38. package/dist/cjs/q2-option-list.cjs.entry.js +1 -1
  39. package/dist/cjs/q2-pagination.cjs.entry.js +37 -11
  40. package/dist/cjs/q2-pagination.cjs.entry.js.map +1 -1
  41. package/dist/cjs/q2-pill.cjs.entry.js +3 -3
  42. package/dist/cjs/q2-pill.cjs.entry.js.map +1 -1
  43. package/dist/cjs/q2-radio-group.cjs.entry.js +9 -1
  44. package/dist/cjs/q2-radio-group.cjs.entry.js.map +1 -1
  45. package/dist/cjs/q2-radio.cjs.entry.js +12 -3
  46. package/dist/cjs/q2-radio.cjs.entry.js.map +1 -1
  47. package/dist/cjs/q2-section.cjs.entry.js +1 -1
  48. package/dist/cjs/q2-select.cjs.entry.js +54 -5
  49. package/dist/cjs/q2-select.cjs.entry.js.map +1 -1
  50. package/dist/cjs/q2-stepper-pane.cjs.entry.js +1 -1
  51. package/dist/cjs/q2-stepper-vertical.cjs.entry.js +1 -1
  52. package/dist/cjs/q2-stepper.cjs.entry.js +1 -1
  53. package/dist/cjs/q2-tab-container.cjs.entry.js +2 -2
  54. package/dist/cjs/q2-tab-container.cjs.entry.js.map +1 -1
  55. package/dist/cjs/q2-tag.cjs.entry.js +1 -1
  56. package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
  57. package/dist/cjs/q2-textarea.cjs.entry.js +13 -1
  58. package/dist/cjs/q2-textarea.cjs.entry.js.map +1 -1
  59. package/dist/cjs/q2-tooltip.cjs.entry.js +1 -1
  60. package/dist/collection/collection-manifest.json +1 -1
  61. package/dist/collection/components/q2-action-sheet/styles.css +0 -8
  62. package/dist/collection/components/q2-calendar/index.js +120 -2
  63. package/dist/collection/components/q2-calendar/index.js.map +1 -1
  64. package/dist/collection/components/q2-chart-area/index.js +2 -2
  65. package/dist/collection/components/q2-chart-area/index.js.map +1 -1
  66. package/dist/collection/components/q2-chart-bar/index.js +2 -2
  67. package/dist/collection/components/q2-chart-bar/index.js.map +1 -1
  68. package/dist/collection/components/q2-chart-donut/index.js +13 -9
  69. package/dist/collection/components/q2-chart-donut/index.js.map +1 -1
  70. package/dist/collection/components/q2-checkbox-group/index.js +45 -5
  71. package/dist/collection/components/q2-checkbox-group/index.js.map +1 -1
  72. package/dist/collection/components/q2-data-table/index.js +6 -6
  73. package/dist/collection/components/q2-data-table/styles.css +37 -36
  74. package/dist/collection/components/q2-dropdown/index.js +1 -1
  75. package/dist/collection/components/q2-dropdown/index.js.map +1 -1
  76. package/dist/collection/components/q2-dropdown/styles.css +4 -0
  77. package/dist/collection/components/q2-editable-field/index.js +96 -6
  78. package/dist/collection/components/q2-editable-field/index.js.map +1 -1
  79. package/dist/collection/components/q2-input/index.js +49 -11
  80. package/dist/collection/components/q2-input/index.js.map +1 -1
  81. package/dist/collection/components/q2-message/index.js +14 -13
  82. package/dist/collection/components/q2-message/index.js.map +1 -1
  83. package/dist/collection/components/q2-option-list/index.js +2 -2
  84. package/dist/collection/components/q2-pagination/index.js +60 -9
  85. package/dist/collection/components/q2-pagination/index.js.map +1 -1
  86. package/dist/collection/components/q2-pagination/styles.css +1 -0
  87. package/dist/collection/components/q2-pill/index.js +2 -2
  88. package/dist/collection/components/q2-pill/index.js.map +1 -1
  89. package/dist/collection/components/q2-radio/index.js +29 -3
  90. package/dist/collection/components/q2-radio/index.js.map +1 -1
  91. package/dist/collection/components/q2-radio-group/index.js +27 -0
  92. package/dist/collection/components/q2-radio-group/index.js.map +1 -1
  93. package/dist/collection/components/q2-select/index.js +127 -5
  94. package/dist/collection/components/q2-select/index.js.map +1 -1
  95. package/dist/collection/components/q2-stepper-pane/index.js +2 -2
  96. package/dist/collection/components/q2-tab-container/index.js +1 -1
  97. package/dist/collection/components/q2-tab-container/index.js.map +1 -1
  98. package/dist/collection/components/q2-textarea/index.js +37 -0
  99. package/dist/collection/components/q2-textarea/index.js.map +1 -1
  100. package/dist/collection/utils/charting.js.map +1 -1
  101. package/dist/collection/utils/index.js +8 -6
  102. package/dist/collection/utils/index.js.map +1 -1
  103. package/dist/components/charting.js.map +1 -1
  104. package/dist/components/index11.js +14 -13
  105. package/dist/components/index11.js.map +1 -1
  106. package/dist/components/index16.js +11 -8
  107. package/dist/components/index16.js.map +1 -1
  108. package/dist/components/index9.js +19 -10
  109. package/dist/components/index9.js.map +1 -1
  110. package/dist/components/q2-action-sheet.js +1 -1
  111. package/dist/components/q2-action-sheet.js.map +1 -1
  112. package/dist/components/q2-calendar.js +51 -4
  113. package/dist/components/q2-calendar.js.map +1 -1
  114. package/dist/components/q2-chart-area.js +1 -1
  115. package/dist/components/q2-chart-area.js.map +1 -1
  116. package/dist/components/q2-chart-bar.js +1 -1
  117. package/dist/components/q2-chart-bar.js.map +1 -1
  118. package/dist/components/q2-chart-donut.js +11 -7
  119. package/dist/components/q2-chart-donut.js.map +1 -1
  120. package/dist/components/q2-checkbox-group.js +26 -6
  121. package/dist/components/q2-checkbox-group.js.map +1 -1
  122. package/dist/components/q2-data-table.js +1 -1
  123. package/dist/components/q2-data-table.js.map +1 -1
  124. package/dist/components/q2-dropdown.js +2 -2
  125. package/dist/components/q2-dropdown.js.map +1 -1
  126. package/dist/components/q2-editable-field.js +39 -7
  127. package/dist/components/q2-editable-field.js.map +1 -1
  128. package/dist/components/q2-pagination.js +37 -10
  129. package/dist/components/q2-pagination.js.map +1 -1
  130. package/dist/components/q2-pill.js +2 -2
  131. package/dist/components/q2-pill.js.map +1 -1
  132. package/dist/components/q2-radio-group.js +10 -1
  133. package/dist/components/q2-radio-group.js.map +1 -1
  134. package/dist/components/q2-radio.js +13 -3
  135. package/dist/components/q2-radio.js.map +1 -1
  136. package/dist/components/q2-select.js +59 -6
  137. package/dist/components/q2-select.js.map +1 -1
  138. package/dist/components/q2-tab-container.js +1 -1
  139. package/dist/components/q2-tab-container.js.map +1 -1
  140. package/dist/components/q2-textarea.js +15 -2
  141. package/dist/components/q2-textarea.js.map +1 -1
  142. package/dist/docs.json +241 -9
  143. package/dist/esm/charting-2a73ba8e.js.map +1 -1
  144. package/dist/esm/click-elsewhere_2.entry.js +1 -1
  145. package/dist/esm/{index-35ff2881.js → index-74a659a5.js} +12 -9
  146. package/dist/esm/index-74a659a5.js.map +1 -0
  147. package/dist/esm/loader.js +1 -1
  148. package/dist/esm/q2-action-sheet.entry.js +2 -2
  149. package/dist/esm/q2-action-sheet.entry.js.map +1 -1
  150. package/dist/esm/q2-btn_2.entry.js +1 -1
  151. package/dist/esm/q2-calendar.entry.js +46 -3
  152. package/dist/esm/q2-calendar.entry.js.map +1 -1
  153. package/dist/esm/q2-card.entry.js +1 -1
  154. package/dist/esm/q2-carousel-pane.entry.js +1 -1
  155. package/dist/esm/q2-carousel.entry.js +1 -1
  156. package/dist/esm/q2-chart-area.entry.js +2 -2
  157. package/dist/esm/q2-chart-area.entry.js.map +1 -1
  158. package/dist/esm/q2-chart-bar.entry.js +2 -2
  159. package/dist/esm/q2-chart-bar.entry.js.map +1 -1
  160. package/dist/esm/q2-chart-donut.entry.js +12 -8
  161. package/dist/esm/q2-chart-donut.entry.js.map +1 -1
  162. package/dist/esm/q2-checkbox-group.entry.js +25 -6
  163. package/dist/esm/q2-checkbox-group.entry.js.map +1 -1
  164. package/dist/esm/q2-checkbox.entry.js +1 -1
  165. package/dist/esm/q2-data-table.entry.js +2 -2
  166. package/dist/esm/q2-data-table.entry.js.map +1 -1
  167. package/dist/esm/q2-dropdown-item.entry.js +1 -1
  168. package/dist/esm/q2-dropdown.entry.js +3 -3
  169. package/dist/esm/q2-dropdown.entry.js.map +1 -1
  170. package/dist/esm/q2-editable-field.entry.js +34 -6
  171. package/dist/esm/q2-editable-field.entry.js.map +1 -1
  172. package/dist/esm/q2-icon.entry.js +1 -1
  173. package/dist/esm/q2-input.entry.js +17 -10
  174. package/dist/esm/q2-input.entry.js.map +1 -1
  175. package/dist/esm/q2-loc.entry.js +1 -1
  176. package/dist/esm/q2-message.entry.js +14 -13
  177. package/dist/esm/q2-message.entry.js.map +1 -1
  178. package/dist/esm/q2-month-picker.entry.js +1 -1
  179. package/dist/esm/q2-optgroup_2.entry.js +1 -1
  180. package/dist/esm/q2-option-list.entry.js +1 -1
  181. package/dist/esm/q2-pagination.entry.js +37 -11
  182. package/dist/esm/q2-pagination.entry.js.map +1 -1
  183. package/dist/esm/q2-pill.entry.js +3 -3
  184. package/dist/esm/q2-pill.entry.js.map +1 -1
  185. package/dist/esm/q2-radio-group.entry.js +9 -1
  186. package/dist/esm/q2-radio-group.entry.js.map +1 -1
  187. package/dist/esm/q2-radio.entry.js +12 -3
  188. package/dist/esm/q2-radio.entry.js.map +1 -1
  189. package/dist/esm/q2-section.entry.js +1 -1
  190. package/dist/esm/q2-select.entry.js +54 -5
  191. package/dist/esm/q2-select.entry.js.map +1 -1
  192. package/dist/esm/q2-stepper-pane.entry.js +1 -1
  193. package/dist/esm/q2-stepper-vertical.entry.js +1 -1
  194. package/dist/esm/q2-stepper.entry.js +1 -1
  195. package/dist/esm/q2-tab-container.entry.js +2 -2
  196. package/dist/esm/q2-tab-container.entry.js.map +1 -1
  197. package/dist/esm/q2-tag.entry.js +1 -1
  198. package/dist/esm/q2-tecton-elements.js +1 -1
  199. package/dist/esm/q2-textarea.entry.js +13 -1
  200. package/dist/esm/q2-textarea.entry.js.map +1 -1
  201. package/dist/esm/q2-tooltip.entry.js +1 -1
  202. package/dist/q2-tecton-elements/{p-2b91b34e.entry.js → p-077107c1.entry.js} +2 -2
  203. package/dist/q2-tecton-elements/p-09d4b3d3.entry.js +2 -0
  204. package/dist/q2-tecton-elements/p-09d4b3d3.entry.js.map +1 -0
  205. package/dist/q2-tecton-elements/{p-b73e7870.entry.js → p-0d4aec6e.entry.js} +2 -2
  206. package/dist/q2-tecton-elements/p-1c993698.entry.js +2 -0
  207. package/dist/q2-tecton-elements/p-1c993698.entry.js.map +1 -0
  208. package/dist/q2-tecton-elements/{p-0c1b74e9.entry.js → p-252889b7.entry.js} +2 -2
  209. package/dist/q2-tecton-elements/p-252889b7.entry.js.map +1 -0
  210. package/dist/q2-tecton-elements/{p-d4da72f0.entry.js → p-25bd1b18.entry.js} +2 -2
  211. package/dist/q2-tecton-elements/p-25bd1b18.entry.js.map +1 -0
  212. package/dist/q2-tecton-elements/p-2a975246.entry.js +2 -0
  213. package/dist/q2-tecton-elements/p-2a975246.entry.js.map +1 -0
  214. package/dist/q2-tecton-elements/{p-55deaceb.entry.js → p-30facf35.entry.js} +2 -2
  215. package/dist/q2-tecton-elements/p-3798ad96.entry.js +2 -0
  216. package/dist/q2-tecton-elements/p-3798ad96.entry.js.map +1 -0
  217. package/dist/q2-tecton-elements/p-458b1987.js.map +1 -1
  218. package/dist/q2-tecton-elements/{p-2325975a.entry.js → p-46287c02.entry.js} +2 -2
  219. package/dist/q2-tecton-elements/{p-2bf5a3bc.entry.js → p-47c60d4a.entry.js} +2 -2
  220. package/dist/q2-tecton-elements/{p-6cc730db.entry.js → p-4abbd0b1.entry.js} +2 -2
  221. package/dist/q2-tecton-elements/{p-dafdb018.entry.js → p-570c1d3d.entry.js} +2 -2
  222. package/dist/q2-tecton-elements/p-570c1d3d.entry.js.map +1 -0
  223. package/dist/q2-tecton-elements/{p-4fb81d03.entry.js → p-578e3f98.entry.js} +2 -2
  224. package/dist/q2-tecton-elements/p-58cdb9c7.entry.js +2 -0
  225. package/dist/q2-tecton-elements/p-58cdb9c7.entry.js.map +1 -0
  226. package/dist/q2-tecton-elements/p-597f8656.entry.js +2 -0
  227. package/dist/q2-tecton-elements/p-597f8656.entry.js.map +1 -0
  228. package/dist/q2-tecton-elements/{p-ce27270b.entry.js → p-59d34a17.entry.js} +2 -2
  229. package/dist/q2-tecton-elements/{p-3c0d391b.entry.js → p-5bc4d94c.entry.js} +2 -2
  230. package/dist/q2-tecton-elements/{p-70a59bf1.entry.js → p-67f33354.entry.js} +2 -2
  231. package/dist/q2-tecton-elements/p-67f33354.entry.js.map +1 -0
  232. package/dist/q2-tecton-elements/{p-c9f32e51.entry.js → p-6cacc879.entry.js} +2 -2
  233. package/dist/q2-tecton-elements/{p-f637136f.entry.js → p-7366d36d.entry.js} +2 -2
  234. package/dist/q2-tecton-elements/{p-e5a8f7ff.entry.js → p-75fd6df5.entry.js} +2 -2
  235. package/dist/q2-tecton-elements/{p-e5a8f7ff.entry.js.map → p-75fd6df5.entry.js.map} +1 -1
  236. package/dist/q2-tecton-elements/{p-68371e6d.entry.js → p-8e7b762a.entry.js} +2 -2
  237. package/dist/q2-tecton-elements/{p-ece07c0d.entry.js → p-9a28b93a.entry.js} +2 -2
  238. package/dist/q2-tecton-elements/{p-d3827468.entry.js → p-9c9a2550.entry.js} +2 -2
  239. package/dist/q2-tecton-elements/p-9d743327.entry.js +2 -0
  240. package/dist/q2-tecton-elements/p-9d743327.entry.js.map +1 -0
  241. package/dist/q2-tecton-elements/{p-8c6f8d06.entry.js → p-9ef2829e.entry.js} +2 -2
  242. package/dist/q2-tecton-elements/{p-8c6f8d06.entry.js.map → p-9ef2829e.entry.js.map} +1 -1
  243. package/dist/q2-tecton-elements/{p-3fd4f83d.entry.js → p-a52371cf.entry.js} +2 -2
  244. package/dist/q2-tecton-elements/{p-f11326c2.entry.js → p-a53e9f1e.entry.js} +2 -2
  245. package/dist/q2-tecton-elements/{p-586c8654.entry.js → p-a60f82c0.entry.js} +2 -2
  246. package/dist/q2-tecton-elements/p-a60f82c0.entry.js.map +1 -0
  247. package/dist/q2-tecton-elements/{p-f6be73b7.entry.js → p-ac82ea35.entry.js} +2 -2
  248. package/dist/q2-tecton-elements/{p-f6be73b7.entry.js.map → p-ac82ea35.entry.js.map} +1 -1
  249. package/dist/q2-tecton-elements/{p-8e8a40ca.entry.js → p-bfd69d42.entry.js} +2 -2
  250. package/dist/q2-tecton-elements/{p-82bda2ff.entry.js → p-db6921fb.entry.js} +2 -2
  251. package/dist/q2-tecton-elements/{p-cfbd2cb1.entry.js → p-e45856f7.entry.js} +2 -2
  252. package/dist/q2-tecton-elements/p-e45856f7.entry.js.map +1 -0
  253. package/dist/q2-tecton-elements/{p-654987bf.entry.js → p-e8858d0d.entry.js} +2 -2
  254. package/dist/q2-tecton-elements/p-e8858d0d.entry.js.map +1 -0
  255. package/dist/q2-tecton-elements/{p-99ab3236.js → p-ef856249.js} +2 -2
  256. package/dist/q2-tecton-elements/p-ef856249.js.map +1 -0
  257. package/dist/q2-tecton-elements/{p-073df9e2.entry.js → p-efbe6c17.entry.js} +2 -2
  258. package/dist/q2-tecton-elements/p-efbe6c17.entry.js.map +1 -0
  259. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
  260. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js.map +1 -1
  261. package/dist/test/elements/q2-calendar-test.e2e.js +177 -0
  262. package/dist/test/elements/q2-calendar-test.e2e.js.map +1 -1
  263. package/dist/test/elements/q2-chart-area-test.e2e.js +30 -1
  264. package/dist/test/elements/q2-chart-area-test.e2e.js.map +1 -1
  265. package/dist/test/elements/q2-chart-bar-test.e2e.js +30 -1
  266. package/dist/test/elements/q2-chart-bar-test.e2e.js.map +1 -1
  267. package/dist/test/elements/q2-chart-donut-test.e2e.js +21 -18
  268. package/dist/test/elements/q2-chart-donut-test.e2e.js.map +1 -1
  269. package/dist/test/elements/q2-checkbox-group-test.e2e.js +138 -18
  270. package/dist/test/elements/q2-checkbox-group-test.e2e.js.map +1 -1
  271. package/dist/test/elements/q2-checkbox-test.e2e.js +143 -115
  272. package/dist/test/elements/q2-checkbox-test.e2e.js.map +1 -1
  273. package/dist/test/elements/q2-dropdown-test.e2e.js +28 -0
  274. package/dist/test/elements/q2-dropdown-test.e2e.js.map +1 -1
  275. package/dist/test/elements/q2-editable-field-test.e2e.js +149 -28
  276. package/dist/test/elements/q2-editable-field-test.e2e.js.map +1 -1
  277. package/dist/test/elements/q2-input-test.e2e.js +150 -9
  278. package/dist/test/elements/q2-input-test.e2e.js.map +1 -1
  279. package/dist/test/elements/q2-message-test.e2e.js +38 -1
  280. package/dist/test/elements/q2-message-test.e2e.js.map +1 -1
  281. package/dist/test/elements/q2-pill-test.e2e.js +37 -1
  282. package/dist/test/elements/q2-pill-test.e2e.js.map +1 -1
  283. package/dist/test/elements/q2-radio-group-test.e2e.js +148 -186
  284. package/dist/test/elements/q2-radio-group-test.e2e.js.map +1 -1
  285. package/dist/test/elements/q2-radio-test.e2e.js +100 -15
  286. package/dist/test/elements/q2-radio-test.e2e.js.map +1 -1
  287. package/dist/test/elements/q2-select-test.e2e.js +203 -0
  288. package/dist/test/elements/q2-select-test.e2e.js.map +1 -1
  289. package/dist/test/elements/q2-tag-test.e2e.js +5 -0
  290. package/dist/test/elements/q2-tag-test.e2e.js.map +1 -1
  291. package/dist/test/elements/q2-textarea-test.e2e.js +33 -1
  292. package/dist/test/elements/q2-textarea-test.e2e.js.map +1 -1
  293. package/dist/types/components/q2-calendar/index.d.ts +8 -1
  294. package/dist/types/components/q2-chart-area/index.d.ts +1 -1
  295. package/dist/types/components/q2-chart-bar/index.d.ts +1 -1
  296. package/dist/types/components/q2-chart-donut/index.d.ts +2 -5
  297. package/dist/types/components/q2-checkbox-group/index.d.ts +3 -0
  298. package/dist/types/components/q2-editable-field/index.d.ts +10 -2
  299. package/dist/types/components/q2-input/index.d.ts +2 -0
  300. package/dist/types/components/q2-message/index.d.ts +1 -0
  301. package/dist/types/components/q2-pagination/index.d.ts +4 -0
  302. package/dist/types/components/q2-radio/index.d.ts +1 -0
  303. package/dist/types/components/q2-radio-group/index.d.ts +1 -0
  304. package/dist/types/components/q2-select/index.d.ts +9 -1
  305. package/dist/types/components/q2-textarea/index.d.ts +2 -0
  306. package/dist/types/components.d.ts +23 -4
  307. package/dist/types/utils/charting.d.ts +0 -6
  308. package/package.json +3 -3
  309. package/dist/cjs/index-f6545293.js.map +0 -1
  310. package/dist/esm/index-35ff2881.js.map +0 -1
  311. package/dist/q2-tecton-elements/p-073df9e2.entry.js.map +0 -1
  312. package/dist/q2-tecton-elements/p-0c1b74e9.entry.js.map +0 -1
  313. package/dist/q2-tecton-elements/p-215d5ab4.entry.js +0 -2
  314. package/dist/q2-tecton-elements/p-215d5ab4.entry.js.map +0 -1
  315. package/dist/q2-tecton-elements/p-2987498c.entry.js +0 -2
  316. package/dist/q2-tecton-elements/p-2987498c.entry.js.map +0 -1
  317. package/dist/q2-tecton-elements/p-57838409.entry.js +0 -2
  318. package/dist/q2-tecton-elements/p-57838409.entry.js.map +0 -1
  319. package/dist/q2-tecton-elements/p-586c8654.entry.js.map +0 -1
  320. package/dist/q2-tecton-elements/p-654987bf.entry.js.map +0 -1
  321. package/dist/q2-tecton-elements/p-70a59bf1.entry.js.map +0 -1
  322. package/dist/q2-tecton-elements/p-7a6e33d4.entry.js +0 -2
  323. package/dist/q2-tecton-elements/p-7a6e33d4.entry.js.map +0 -1
  324. package/dist/q2-tecton-elements/p-99ab3236.js.map +0 -1
  325. package/dist/q2-tecton-elements/p-ae2fa966.entry.js +0 -2
  326. package/dist/q2-tecton-elements/p-ae2fa966.entry.js.map +0 -1
  327. package/dist/q2-tecton-elements/p-b8d1c16f.entry.js +0 -2
  328. package/dist/q2-tecton-elements/p-b8d1c16f.entry.js.map +0 -1
  329. package/dist/q2-tecton-elements/p-cfbd2cb1.entry.js.map +0 -1
  330. package/dist/q2-tecton-elements/p-d4da72f0.entry.js.map +0 -1
  331. package/dist/q2-tecton-elements/p-dafdb018.entry.js.map +0 -1
  332. package/dist/q2-tecton-elements/p-deb1e1c8.entry.js +0 -2
  333. package/dist/q2-tecton-elements/p-deb1e1c8.entry.js.map +0 -1
  334. /package/dist/q2-tecton-elements/{p-2b91b34e.entry.js.map → p-077107c1.entry.js.map} +0 -0
  335. /package/dist/q2-tecton-elements/{p-b73e7870.entry.js.map → p-0d4aec6e.entry.js.map} +0 -0
  336. /package/dist/q2-tecton-elements/{p-55deaceb.entry.js.map → p-30facf35.entry.js.map} +0 -0
  337. /package/dist/q2-tecton-elements/{p-2325975a.entry.js.map → p-46287c02.entry.js.map} +0 -0
  338. /package/dist/q2-tecton-elements/{p-2bf5a3bc.entry.js.map → p-47c60d4a.entry.js.map} +0 -0
  339. /package/dist/q2-tecton-elements/{p-6cc730db.entry.js.map → p-4abbd0b1.entry.js.map} +0 -0
  340. /package/dist/q2-tecton-elements/{p-4fb81d03.entry.js.map → p-578e3f98.entry.js.map} +0 -0
  341. /package/dist/q2-tecton-elements/{p-ce27270b.entry.js.map → p-59d34a17.entry.js.map} +0 -0
  342. /package/dist/q2-tecton-elements/{p-3c0d391b.entry.js.map → p-5bc4d94c.entry.js.map} +0 -0
  343. /package/dist/q2-tecton-elements/{p-c9f32e51.entry.js.map → p-6cacc879.entry.js.map} +0 -0
  344. /package/dist/q2-tecton-elements/{p-f637136f.entry.js.map → p-7366d36d.entry.js.map} +0 -0
  345. /package/dist/q2-tecton-elements/{p-68371e6d.entry.js.map → p-8e7b762a.entry.js.map} +0 -0
  346. /package/dist/q2-tecton-elements/{p-ece07c0d.entry.js.map → p-9a28b93a.entry.js.map} +0 -0
  347. /package/dist/q2-tecton-elements/{p-d3827468.entry.js.map → p-9c9a2550.entry.js.map} +0 -0
  348. /package/dist/q2-tecton-elements/{p-3fd4f83d.entry.js.map → p-a52371cf.entry.js.map} +0 -0
  349. /package/dist/q2-tecton-elements/{p-f11326c2.entry.js.map → p-a53e9f1e.entry.js.map} +0 -0
  350. /package/dist/q2-tecton-elements/{p-8e8a40ca.entry.js.map → p-bfd69d42.entry.js.map} +0 -0
  351. /package/dist/q2-tecton-elements/{p-82bda2ff.entry.js.map → p-db6921fb.entry.js.map} +0 -0
  352. /package/dist/types/workspace/workspace/{tecton-production_release_1.35.x → _Gitlab_tecton-production_master}/packages/q2-tecton-elements/.stencil/test/helpers.d.ts +0 -0
@@ -1,5 +1,5 @@
1
1
  import { r as registerInstance, c as createEvent, h, g as getElement } from './index-ebc7f269.js';
2
- import { l as loc, h as handleAriaLabel, o as overrideFocus, i as isEventFromElement } from './index-35ff2881.js';
2
+ import { l as loc, h as handleAriaLabel, o as overrideFocus, i as isEventFromElement, w as waitForNextPaint } from './index-74a659a5.js';
3
3
 
4
4
  const stylesCss = "*{box-sizing:border-box}*:active{outline:none}*:focus{outline:none;box-shadow:var(--const-double-focus-ring, 0 0 0 2px #ffffff, 0 0 0 4px #33b4ff #06C)}:host{box-shadow:none !important}::-moz-focus-inner{border:none}input,textarea,button{font-family:inherit;font-size:inherit;font-stretch:inherit}:host(.sr),:host(.sr) button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.sr,.sr button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.hidden{display:none}:host([hidden]){display:none}.invisible{visibility:hidden}:host{display:inline-block;max-width:100%}.q2-editable-field-wrapper:not([hidden]){display:flex}.q2-editable-field-wrapper.editing{align-items:flex-end}:host([block]){display:block;width:100%}:host([block]) .q2-editable-field-wrapper:not([hidden]){display:grid;grid-template-columns:1fr auto auto}q2-input,.text-wrapper{margin:0 var(--tct-scale-2, var(--app-scale-2x, 10px)) 0 0}q2-input{flex:1 1 auto;min-width:170px}.text-wrapper{flex:0 auto;align-self:center;display:inline-block}:host([truncated]) .text-wrapper{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}q2-btn{flex:0 0 44px}dl{margin:var(--tct-scale-0, var(--app-scale-0x, 0))}dt{font-weight:600}dd{margin-left:var(--tct-scale-0, var(--app-scale-0x, 0));display:flex;align-items:center}";
5
5
 
@@ -87,7 +87,7 @@ const Q2EditableField = class {
87
87
  componentDidRender() {
88
88
  this.scheduledAfterRender.forEach(fn => fn());
89
89
  this.scheduledAfterRender = [];
90
- this.formattedValue = this.q2InputElement.formattedValue;
90
+ this.formattedValue = this.inputElement.formattedValue;
91
91
  }
92
92
  componentDidLoad() {
93
93
  overrideFocus(this.hostElement);
@@ -101,7 +101,7 @@ const Q2EditableField = class {
101
101
  const hasErrors = errors.length;
102
102
  if (isInputFocused || !focusedElement || !editing || !hasErrors)
103
103
  return;
104
- this.q2InputElement.focus();
104
+ this.inputElement.focus();
105
105
  }
106
106
  ariaLabelObserver() {
107
107
  handleAriaLabel(this);
@@ -123,7 +123,7 @@ const Q2EditableField = class {
123
123
  this.value = event.detail.value;
124
124
  break;
125
125
  case 'cancel':
126
- this.q2InputElement.value = this.value;
126
+ this.inputElement.value = this.value;
127
127
  break;
128
128
  }
129
129
  this.editing = event.detail.editing;
@@ -133,11 +133,39 @@ const Q2EditableField = class {
133
133
  return;
134
134
  this.hostElement.shadowRoot.querySelector(this.editing ? 'q2-input' : 'q2-btn.begin-edit').focus();
135
135
  }
136
+ /// Methods ///
137
+ clickEdit() {
138
+ var _a;
139
+ if (this.editing)
140
+ return;
141
+ (_a = this.editBtnElement) === null || _a === void 0 ? void 0 : _a.click();
142
+ }
143
+ clickCancel() {
144
+ var _a;
145
+ if (!this.editing)
146
+ return;
147
+ (_a = this.cancelBtnElement) === null || _a === void 0 ? void 0 : _a.click();
148
+ }
149
+ clickSave() {
150
+ var _a;
151
+ if (!this.editing)
152
+ return;
153
+ (_a = this.saveBtnElement) === null || _a === void 0 ? void 0 : _a.click();
154
+ }
155
+ async setValue(value, options = { clickSave: true }) {
156
+ await this.clickEdit();
157
+ await waitForNextPaint();
158
+ await this.inputElement.setValue(value);
159
+ if (options.clickSave) {
160
+ await this.clickSave();
161
+ await waitForNextPaint();
162
+ }
163
+ }
136
164
  render() {
137
165
  return (h("div", null, this.generateEditStateDOM(), this.generateReadStateDOM()));
138
166
  }
139
167
  generateEditStateDOM() {
140
- return (h("div", { class: this.wrapperClass, hidden: !this.editing }, h("q2-input", { ref: el => (this.q2InputElement = el), label: this.locLabel, hideLabel: this.hideLabel, value: this.value, hints: (Array.isArray(this.hints) && this.hints.map(str => loc(str))) || undefined, errors: (Array.isArray(this.errors) && this.errors.map(str => loc(str))) || 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", { 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", { 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" }))));
168
+ 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: (Array.isArray(this.hints) && this.hints.map(str => loc(str))) || undefined, errors: (Array.isArray(this.errors) && this.errors.map(str => loc(str))) || 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" }))));
141
169
  }
142
170
  generateReadStateDOM() {
143
171
  if (this.persistentLabel && this.locLabel) {
@@ -146,7 +174,7 @@ const Q2EditableField = class {
146
174
  return (h("div", { class: this.wrapperClass, hidden: this.editing }, h("div", { class: "text-wrapper" }, this.formattedValue || this.value), this.generateEditBtn()));
147
175
  }
148
176
  generateEditBtn() {
149
- return (h("q2-btn", { ref: el => (this.q2EditBtnElement = 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" })));
177
+ 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" })));
150
178
  }
151
179
  get hostElement() { return getElement(this); }
152
180
  static get watchers() { return {
@@ -1 +1 @@
1
- {"file":"q2-editable-field.entry.js","mappings":"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","names":[],"sources":["./src/components/q2-editable-field/styles.scss?tag=q2-editable-field&encapsulation=shadow","./src/components/q2-editable-field/index.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n\n:host {\n display: inline-block;\n max-width: 100%;\n}\n\n.q2-editable-field-wrapper:not([hidden]) {\n display: flex;\n}\n\n.q2-editable-field-wrapper.editing {\n align-items: flex-end;\n}\n\n:host([block]) {\n display:block;\n width: 100%;\n .q2-editable-field-wrapper:not([hidden]) {\n display: grid;\n grid-template-columns: 1fr auto auto;\n }\n}\n\nq2-input,\n.text-wrapper {\n margin: 0 var(--tct-scale-2, var(--app-scale-2x, 10px)) 0 0;\n}\n\nq2-input {\n flex: 1 1 auto;\n min-width: 170px;\n}\n\n.text-wrapper {\n flex: 0 auto;\n align-self: center;\n display: inline-block;\n}\n\n:host([truncated]) .text-wrapper {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\nq2-btn {\n flex: 0 0 44px;\n}\n\ndl {\n margin: var(--tct-scale-0, var(--app-scale-0x, 0));\n}\n\ndt {\n font-weight: 600;\n}\n\ndd {\n margin-left: var(--tct-scale-0, var(--app-scale-0x, 0));\n display: flex;\n align-items: center;\n}\n","import { Component, State, Prop, h, Listen, Element, Event, EventEmitter, Watch } from '@stencil/core';\nimport { IEventDetail, Q2InputCustomEvent } from 'src/components';\nimport { handleAriaLabel, isEventFromElement, loc, overrideFocus } from 'src/utils';\nimport { Q2Input } from '../q2-input';\nimport { IFormatterValueObject } from '../q2-input/types';\n\ninterface IExtendedQ2InputElement extends HTMLQ2InputElement {\n formattedValue: IFormatterValueObject['formattedValue'];\n}\n\n@Component({\n tag: 'q2-editable-field',\n shadow: true,\n styleUrl: 'styles.scss',\n})\nexport class Q2EditableField {\n @Prop({ reflect: true, mutable: true }) value: string = '';\n @Prop({ reflect: true, mutable: true }) editing: boolean = false;\n @Prop({ reflect: true, mutable: true }) label: string = '';\n @Prop({ reflect: true, mutable: true }) hideLabel: boolean;\n @Prop({ reflect: true }) type: Q2Input['type'];\n @Prop({ reflect: true }) formatModifier: string;\n @Prop({ reflect: true }) truncated: boolean;\n @Prop({ reflect: true }) maxlength: number;\n @Prop({ reflect: true }) persistentLabel: boolean;\n @Prop({ reflect: true }) disabled: boolean;\n @Prop({ reflect: true }) block: boolean;\n @Prop() hints: string[];\n @Prop() errors: string[];\n\n /** @deprecated */\n @Prop({ reflect: true, mutable: true }) ariaLabel: string;\n\n scheduledAfterRender: (() => void)[] = [];\n\n @Element() hostElement: HTMLElement;\n q2InputElement: HTMLQ2InputElement;\n q2EditBtnElement: HTMLQ2BtnElement;\n\n @State() formattedValue: string;\n innerValue: string;\n defaultValue: string = this.value;\n\n get locLabel() {\n return (this.label && loc(this.label)) || '';\n }\n\n /////// LIFECYCLE HOOKS ///////\n\n componentWillLoad() {\n handleAriaLabel(this);\n }\n\n componentDidRender() {\n this.scheduledAfterRender.forEach(fn => fn());\n this.scheduledAfterRender = [];\n this.formattedValue = (this.q2InputElement as IExtendedQ2InputElement).formattedValue;\n }\n\n componentDidLoad() {\n overrideFocus(this.hostElement);\n }\n\n //////// OBSERVERS ////////\n\n @Watch('errors')\n errorsObserver() {\n const { editing, errors = [] } = this;\n const focusedElement = this.hostElement.shadowRoot.activeElement;\n const isInputFocused = focusedElement?.tagName === 'Q2-INPUT' ?? false;\n const hasErrors = errors.length;\n if (isInputFocused || !focusedElement || !editing || !hasErrors) return;\n this.q2InputElement.focus();\n }\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 get wrapperClass() {\n return `q2-editable-field-wrapper ${this.editing ? 'editing' : ''}`;\n }\n\n ///////// HOST ELEMENT EVENTS //////\n\n @Listen('change')\n onHostElementChange(event: CustomEvent) {\n if (!isEventFromElement(event, this.hostElement) || this.hostElement.onchange) return;\n switch (event.detail.name) {\n case 'save':\n this.value = event.detail.value;\n break;\n\n case 'cancel':\n this.q2InputElement.value = this.value;\n break;\n }\n\n this.editing = event.detail.editing;\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 ///////// EVENTS /////////\n\n @Event() input: EventEmitter;\n @Event() change: EventEmitter;\n\n //////// ACTIONS /////////\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 inputChange = (e: CustomEvent) => {\n e.stopPropagation();\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 inputClick = (event: MouseEvent) => {\n event.stopPropagation();\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 setTimeout(() => {\n const { errors = [] } = this;\n if (!errors.length) return;\n this.hostElement.focus();\n }, 1);\n };\n\n editClick = (event: MouseEvent) => {\n event?.stopPropagation();\n this.change.emit({ editing: true, name: 'edit' });\n };\n\n cancelClick = (event?: MouseEvent) => {\n event?.stopPropagation();\n this.change.emit({ editing: false, name: 'cancel' });\n this.hostElement.shadowRoot.querySelector('q2-input').value = this.defaultValue;\n };\n\n render() {\n return (\n <div>\n {this.generateEditStateDOM()}\n {this.generateReadStateDOM()}\n </div>\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.q2InputElement = el)}\n label={this.locLabel}\n hideLabel={this.hideLabel}\n value={this.value}\n hints={(Array.isArray(this.hints) && this.hints.map(str => loc(str))) || undefined}\n errors={(Array.isArray(this.errors) && this.errors.map(str => loc(str))) || 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 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 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 generateEditBtn() {\n return (\n <q2-btn\n ref={el => (this.q2EditBtnElement = 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"],"version":3}
1
+ {"file":"q2-editable-field.entry.js","mappings":"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","names":[],"sources":["./src/components/q2-editable-field/styles.scss?tag=q2-editable-field&encapsulation=shadow","./src/components/q2-editable-field/index.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n\n:host {\n display: inline-block;\n max-width: 100%;\n}\n\n.q2-editable-field-wrapper:not([hidden]) {\n display: flex;\n}\n\n.q2-editable-field-wrapper.editing {\n align-items: flex-end;\n}\n\n:host([block]) {\n display:block;\n width: 100%;\n .q2-editable-field-wrapper:not([hidden]) {\n display: grid;\n grid-template-columns: 1fr auto auto;\n }\n}\n\nq2-input,\n.text-wrapper {\n margin: 0 var(--tct-scale-2, var(--app-scale-2x, 10px)) 0 0;\n}\n\nq2-input {\n flex: 1 1 auto;\n min-width: 170px;\n}\n\n.text-wrapper {\n flex: 0 auto;\n align-self: center;\n display: inline-block;\n}\n\n:host([truncated]) .text-wrapper {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\nq2-btn {\n flex: 0 0 44px;\n}\n\ndl {\n margin: var(--tct-scale-0, var(--app-scale-0x, 0));\n}\n\ndt {\n font-weight: 600;\n}\n\ndd {\n margin-left: var(--tct-scale-0, var(--app-scale-0x, 0));\n display: flex;\n align-items: center;\n}\n","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';\nimport { IFormatterValueObject } from '../q2-input/types';\n\ninterface IExtendedQ2InputElement extends HTMLQ2InputElement {\n formattedValue: IFormatterValueObject['formattedValue'];\n}\n\n@Component({\n tag: 'q2-editable-field',\n shadow: true,\n styleUrl: 'styles.scss',\n})\nexport class Q2EditableField {\n @Prop({ reflect: true, mutable: true }) value: string = '';\n @Prop({ reflect: true, mutable: true }) editing: boolean = false;\n @Prop({ reflect: true, mutable: true }) label: string = '';\n @Prop({ reflect: true, mutable: true }) hideLabel: boolean;\n @Prop({ reflect: true }) type: Q2Input['type'];\n @Prop({ reflect: true }) formatModifier: string;\n @Prop({ reflect: true }) truncated: boolean;\n @Prop({ reflect: true }) maxlength: number;\n @Prop({ reflect: true }) persistentLabel: boolean;\n @Prop({ reflect: true }) disabled: boolean;\n @Prop({ reflect: true }) block: boolean;\n @Prop() hints: string[];\n @Prop() errors: string[];\n\n /** @deprecated */\n @Prop({ reflect: true, mutable: true }) ariaLabel: string;\n\n scheduledAfterRender: (() => void)[] = [];\n\n @Element() hostElement: HTMLElement;\n inputElement: HTMLQ2InputElement;\n editBtnElement: HTMLQ2BtnElement;\n cancelBtnElement: HTMLQ2BtnElement;\n saveBtnElement: HTMLQ2BtnElement;\n\n @State() formattedValue: string;\n innerValue: string;\n defaultValue: string = this.value;\n\n get locLabel() {\n return (this.label && loc(this.label)) || '';\n }\n\n /////// LIFECYCLE HOOKS ///////\n\n componentWillLoad() {\n handleAriaLabel(this);\n }\n\n componentDidRender() {\n this.scheduledAfterRender.forEach(fn => fn());\n this.scheduledAfterRender = [];\n this.formattedValue = (this.inputElement as IExtendedQ2InputElement).formattedValue;\n }\n\n componentDidLoad() {\n overrideFocus(this.hostElement);\n }\n\n //////// OBSERVERS ////////\n\n @Watch('errors')\n errorsObserver() {\n const { editing, errors = [] } = this;\n const focusedElement = this.hostElement.shadowRoot.activeElement;\n const isInputFocused = focusedElement?.tagName === 'Q2-INPUT' ?? false;\n const hasErrors = errors.length;\n if (isInputFocused || !focusedElement || !editing || !hasErrors) return;\n this.inputElement.focus();\n }\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 get wrapperClass() {\n return `q2-editable-field-wrapper ${this.editing ? 'editing' : ''}`;\n }\n\n ///////// HOST ELEMENT EVENTS //////\n\n @Listen('change')\n onHostElementChange(event: CustomEvent) {\n if (!isEventFromElement(event, this.hostElement) || this.hostElement.onchange) return;\n switch (event.detail.name) {\n case 'save':\n this.value = event.detail.value;\n break;\n\n case 'cancel':\n this.inputElement.value = this.value;\n break;\n }\n\n this.editing = event.detail.editing;\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 ///////// EVENTS /////////\n\n @Event() input: EventEmitter;\n @Event() change: EventEmitter;\n\n /// Methods ///\n @Method()\n clickEdit() {\n if (this.editing) return;\n this.editBtnElement?.click();\n }\n\n @Method()\n clickCancel() {\n if (!this.editing) return;\n this.cancelBtnElement?.click();\n }\n\n @Method()\n clickSave() {\n if (!this.editing) return;\n this.saveBtnElement?.click();\n }\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 //////// ACTIONS /////////\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 inputChange = (e: CustomEvent) => {\n e.stopPropagation();\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 inputClick = (event: MouseEvent) => {\n event.stopPropagation();\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 setTimeout(() => {\n const { errors = [] } = this;\n if (!errors.length) return;\n this.hostElement.focus();\n }, 1);\n };\n\n editClick = (event: MouseEvent) => {\n event?.stopPropagation();\n this.change.emit({ editing: true, name: 'edit' });\n };\n\n cancelClick = (event?: MouseEvent) => {\n event?.stopPropagation();\n this.change.emit({ editing: false, name: 'cancel' });\n this.hostElement.shadowRoot.querySelector('q2-input').value = this.defaultValue;\n };\n\n render() {\n return (\n <div>\n {this.generateEditStateDOM()}\n {this.generateReadStateDOM()}\n </div>\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={(Array.isArray(this.hints) && this.hints.map(str => loc(str))) || undefined}\n errors={(Array.isArray(this.errors) && this.errors.map(str => loc(str))) || 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 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"],"version":3}
@@ -1,5 +1,5 @@
1
1
  import { r as registerInstance, h, g as getElement } from './index-ebc7f269.js';
2
- import { c as createGuid } from './index-35ff2881.js';
2
+ import { c as createGuid } from './index-74a659a5.js';
3
3
  import { i as icons } from './icons-2755eafa.js';
4
4
 
5
5
  const stylesCss = "*{box-sizing:border-box}*:active{outline:none}*:focus{outline:none;box-shadow:var(--const-double-focus-ring, 0 0 0 2px #ffffff, 0 0 0 4px #33b4ff #06C)}:host{box-shadow:none !important}::-moz-focus-inner{border:none}input,textarea,button{font-family:inherit;font-size:inherit;font-stretch:inherit}:host(.sr),:host(.sr) button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.sr,.sr button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.hidden{display:none}:host([hidden]){display:none}.invisible{visibility:hidden}:host{display:inline-block;height:var(--tct-icon-size, 24px);width:var(--tct-icon-size, 24px);position:relative;fill:none}:host([inline]){height:1em;width:1em}svg{display:block;position:absolute;top:0;left:0;stroke-width:var(--tct-icon-stroke-width, var(--t-icon-stroke-width, 1.5));stroke-linecap:var(--tct-icon-cap, var(--t-icon-cap, round));stroke-linejoin:var(--tct-icon-cap, var(--t-icon-cap, round))}.stroke-primary{stroke:var(--tct-icon-stroke-primary, var(--t-icon-stroke-primary, var(--t-text, currentColor)))}.stroke-secondary{stroke:var(--tct-icon-stroke-secondary, var(--t-icon-stroke-secondary, var(--t-text, currentColor)))}.fill-primary{fill:var(--tct-icon-stroke-primary, var(--t-icon-stroke-primary, var(--t-text, currentColor)))}.filled{fill:var(--tct-icon-fill, var(--comp-icon-fill, var(--t-icon-fill, none)))}.uniform{fill:var(--tct-icon-stroke-primary, var(--t-icon-stroke-primary, currentColor))}:host([type=info]),:host([type=info-filled]){--tct-icon-stroke-primary:transparent;--comp-icon-fill:var(--tct-stoplight-info, var(--const-stoplight-info, #0079c1))}:host([type=success]),:host([type=success-filled]){--tct-icon-stroke-primary:transparent;--comp-icon-fill:var(--tct-stoplight-success, var(--const-stoplight-success, #0e8a00))}:host([type=warning]),:host([type=warning-filled]){--tct-icon-stroke-primary:transparent;--comp-icon-fill:var(--tct-stoplight-warning, var(--const-stoplight-warning, #c35500))}:host([type=error]),:host([type=error-filled]){--tct-icon-stroke-primary:transparent;--comp-icon-fill:var(--tct-stoplight-alert, var(--const-stoplight-alert, #c30000))}";
@@ -1,5 +1,5 @@
1
1
  import { r as registerInstance, c as createEvent, h, F as Fragment, g as getElement } from './index-ebc7f269.js';
2
- import { k as isMobile, c as createGuid, s as setMessageHeight, h as handleAriaLabel, o as overrideFocus, l as loc, i as isEventFromElement, m as messagesDOM, g as labelDOM } from './index-35ff2881.js';
2
+ import { k as isMobile, c as createGuid, s as setMessageHeight, h as handleAriaLabel, o as overrideFocus, l as loc, i as isEventFromElement, m as messagesDOM, g as labelDOM } from './index-74a659a5.js';
3
3
 
4
4
  function formatNumber(val = '', options = {
5
5
  prefix: '',
@@ -3251,6 +3251,19 @@ const Q2Input = class {
3251
3251
  errorsObserver() {
3252
3252
  this.hasFocus && this.scheduledAfterRender.push(() => setMessageHeight(this));
3253
3253
  }
3254
+ /// Methods ///
3255
+ setValue(value) {
3256
+ const { inputField } = this;
3257
+ inputField.focus();
3258
+ inputField.dispatchEvent(new FocusEvent('focus'));
3259
+ inputField.value = value;
3260
+ inputField.dispatchEvent(new InputEvent('input'));
3261
+ }
3262
+ clearValue() {
3263
+ if (!this.clearable)
3264
+ return;
3265
+ this.onClearInput();
3266
+ }
3254
3267
  ///////// HOST ELEMENT EVENTS //////
3255
3268
  onHostElementFocus(event) {
3256
3269
  if (!isEventFromElement(event, this.hostElement))
@@ -3258,6 +3271,7 @@ const Q2Input = class {
3258
3271
  this.inputField.focus();
3259
3272
  }
3260
3273
  onHostElementChange(event) {
3274
+ event.stopPropagation();
3261
3275
  if (event.target === this.hostElement && !this.hostElement.onchange) {
3262
3276
  this.value = event.detail.value;
3263
3277
  }
@@ -3292,19 +3306,12 @@ const Q2Input = class {
3292
3306
  const inputClasses = ['input-field'];
3293
3307
  if (hasCustomDisplaySlot)
3294
3308
  inputClasses.push('sr');
3295
- return (h(Fragment, null, hasCustomDisplaySlot && (h("div", { class: "custom-display-container" }, h("slot", { name: "custom-display" }))), h("input", { class: inputClasses.join(' '), id: this.inputId, type: this.computedType, size: this.formattedValueObject.prefix ? 10 : undefined, max: this.max, min: this.min, step: this.step, "aria-current": this.current || undefined, "aria-describedby": this.inputDescribedBy, "aria-required": `${!this.optional}`, "aria-invalid": `${this.hasError}`, "aria-controls": (this.ariaControls && `${this.ariaControls}`) || undefined, "aria-owns": (this.ariaOwns && `${this.ariaOwns}`) || undefined, "aria-haspopup": (this.ariaHaspopup && `${this.ariaHaspopup}`) || undefined, "aria-expanded": (!!this.ariaExpanded && `${!!this.ariaExpanded}`) || undefined, "aria-activedescendant": this.ariaActivedescendant && `${this.ariaActivedescendant}`, "aria-label": this.hideLabel && this.label ? loc(this.label) : undefined, autocomplete: this.computedAutocomplete, autocapitalize: this.autocapitalize, autocorrect: this.autocorrect === 'on' ? 'on' : 'off', autofocus: this.autofocus, placeholder: (this.placeholder && loc(this.placeholder)) || undefined, role: (this.role && `${this.role}`) || undefined, "test-id": "inputField", readonly: !!this.readonly, disabled: !!this.disabled, onFocus: this.onInputFocus, onBlur: this.onInputBlur, onClick: this.onInputClick, onKeyDown: this.onInputKeydown, onInput: this.onInputInput, onPaste: this.onInputPaste, inputmode: this.inputMode })));
3309
+ return (h(Fragment, null, hasCustomDisplaySlot && (h("div", { class: "custom-display-container" }, h("slot", { name: "custom-display" }))), h("input", { class: inputClasses.join(' '), id: this.inputId, type: this.computedType, size: this.formattedValueObject.prefix ? 10 : undefined, max: this.max, min: this.min, step: this.step, "aria-current": this.current || undefined, "aria-describedby": this.inputDescribedBy, "aria-required": `${!this.optional}`, "aria-invalid": `${this.hasError}`, "aria-controls": (this.ariaControls && `${this.ariaControls}`) || undefined, "aria-owns": (this.ariaOwns && `${this.ariaOwns}`) || undefined, "aria-haspopup": (this.ariaHaspopup && `${this.ariaHaspopup}`) || undefined, "aria-expanded": (!!this.ariaExpanded && `${!!this.ariaExpanded}`) || undefined, "aria-activedescendant": this.ariaActivedescendant && `${this.ariaActivedescendant}`, autocomplete: this.computedAutocomplete, autocapitalize: this.autocapitalize, autocorrect: this.autocorrect === 'on' ? 'on' : 'off', autofocus: this.autofocus, placeholder: (this.placeholder && loc(this.placeholder)) || undefined, role: (this.role && `${this.role}`) || undefined, "test-id": "inputField", readonly: !!this.readonly, disabled: !!this.disabled, onFocus: this.onInputFocus, onBlur: this.onInputBlur, onClick: this.onInputClick, onKeyDown: this.onInputKeydown, onInput: this.onInputInput, onPaste: this.onInputPaste, inputmode: this.inputMode })));
3296
3310
  }
3297
3311
  /* tslint:enable:cyclomatic-complexity */
3298
3312
  pseudoInputDOM() {
3299
3313
  const showPlaceholder = !this.value && !!this.placeholder;
3300
- let ariaLabelSuffix = '';
3301
- if (this.optional) {
3302
- ariaLabelSuffix = loc('tecton.element.input.optional');
3303
- }
3304
- if (this.readonly) {
3305
- ariaLabelSuffix = loc('tecton.element.input.readonly');
3306
- }
3307
- return (h("div", { class: "pseudo-input-container" }, h("button", { class: "input-field", type: "button", id: this.inputId, "aria-describedby": this.inputDescribedBy, "aria-invalid": `${this.hasError}`, "aria-controls": (this.ariaControls && `${this.ariaControls}`) || undefined, "aria-owns": (this.ariaOwns && `${this.ariaOwns}`) || undefined, "aria-haspopup": (this.ariaHaspopup && `${this.ariaHaspopup}`) || undefined, "aria-expanded": this.ariaExpanded === 'true' ? 'true' : undefined, "aria-activedescendant": this.ariaActivedescendant && `${this.ariaActivedescendant}`, "aria-label": `${this.value}, ${(this.label && loc(this.label)) || ''}${ariaLabelSuffix}`, role: (this.role && `${this.role}`) || undefined, disabled: !!this.disabled, "test-id": "q2InputInnerClearButton", onFocus: this.onInputFocus, onBlur: this.onInputBlur }, h("div", { class: "custom-display-container" }, h("slot", { name: "custom-display" }, h("span", { class: showPlaceholder ? 'placeholder-text' : '' }, showPlaceholder ? this.placeholder : this.value))))));
3314
+ return (h("div", { class: "pseudo-input-container" }, h("button", { class: "input-field", type: "button", id: this.inputId, "aria-describedby": this.inputDescribedBy, "aria-invalid": `${this.hasError}`, "aria-controls": (this.ariaControls && `${this.ariaControls}`) || undefined, "aria-owns": (this.ariaOwns && `${this.ariaOwns}`) || undefined, "aria-haspopup": (this.ariaHaspopup && `${this.ariaHaspopup}`) || undefined, "aria-expanded": this.ariaExpanded === 'true' ? 'true' : undefined, "aria-activedescendant": this.ariaActivedescendant && `${this.ariaActivedescendant}`, role: (this.role && `${this.role}`) || undefined, disabled: !!this.disabled, "test-id": "q2InputInnerClearButton", onFocus: this.onInputFocus, onBlur: this.onInputBlur }, h("div", { class: "custom-display-container" }, h("slot", { name: "custom-display" }, h("span", { class: showPlaceholder ? 'placeholder-text' : '' }, showPlaceholder ? this.placeholder : this.value))))));
3308
3315
  }
3309
3316
  placeCursorAtEnd() {
3310
3317
  const { inputField } = this;