q2-tecton-elements 1.51.1 → 1.52.1

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 (613) hide show
  1. package/dist/cjs/click-elsewhere_2.cjs.entry.js +16 -5
  2. package/dist/cjs/click-elsewhere_2.cjs.entry.js.map +1 -1
  3. package/dist/cjs/{index-9aa4a776.js → index-07285783.js} +86 -2
  4. package/dist/cjs/index-07285783.js.map +1 -0
  5. package/dist/cjs/{index-14c3693c.js → index-e7e68b1e.js} +40 -5
  6. package/dist/cjs/index-e7e68b1e.js.map +1 -0
  7. package/dist/cjs/loader.cjs.js +2 -2
  8. package/dist/cjs/q2-action-group.cjs.entry.js +2 -2
  9. package/dist/cjs/q2-action-sheet.cjs.entry.js +3 -3
  10. package/dist/cjs/q2-avatar.cjs.entry.js +2 -2
  11. package/dist/cjs/q2-badge_7.cjs.entry.js +49 -44
  12. package/dist/cjs/q2-badge_7.cjs.entry.js.map +1 -1
  13. package/dist/cjs/q2-calendar.cjs.entry.js +17 -20
  14. package/dist/cjs/q2-calendar.cjs.entry.js.map +1 -1
  15. package/dist/cjs/q2-card.cjs.entry.js +4 -2
  16. package/dist/cjs/q2-card.cjs.entry.js.map +1 -1
  17. package/dist/cjs/q2-carousel-pane.cjs.entry.js +4 -4
  18. package/dist/cjs/q2-carousel.cjs.entry.js +2 -2
  19. package/dist/cjs/q2-chart-area.cjs.entry.js +16 -3
  20. package/dist/cjs/q2-chart-area.cjs.entry.js.map +1 -1
  21. package/dist/cjs/q2-chart-bar.cjs.entry.js +3 -3
  22. package/dist/cjs/q2-chart-donut.cjs.entry.js +19 -3
  23. package/dist/cjs/q2-chart-donut.cjs.entry.js.map +1 -1
  24. package/dist/cjs/q2-checkbox-group.cjs.entry.js +6 -5
  25. package/dist/cjs/q2-checkbox-group.cjs.entry.js.map +1 -1
  26. package/dist/cjs/q2-checkbox.cjs.entry.js +2 -2
  27. package/dist/cjs/q2-currency.cjs.entry.js +14 -2
  28. package/dist/cjs/q2-currency.cjs.entry.js.map +1 -1
  29. package/dist/cjs/q2-data-table.cjs.entry.js +3 -3
  30. package/dist/cjs/q2-data-table.cjs.entry.js.map +1 -1
  31. package/dist/cjs/q2-detail.cjs.entry.js +3 -3
  32. package/dist/cjs/q2-dropdown-item.cjs.entry.js +12 -14
  33. package/dist/cjs/q2-dropdown-item.cjs.entry.js.map +1 -1
  34. package/dist/cjs/q2-dropdown.cjs.entry.js +7 -5
  35. package/dist/cjs/q2-dropdown.cjs.entry.js.map +1 -1
  36. package/dist/cjs/q2-editable-field.cjs.entry.js +3 -3
  37. package/dist/cjs/q2-example.cjs.entry.js +145 -0
  38. package/dist/cjs/q2-example.cjs.entry.js.map +1 -0
  39. package/dist/cjs/q2-formatted-text.cjs.entry.js +2 -2
  40. package/dist/cjs/q2-item.cjs.entry.js +3 -3
  41. package/dist/cjs/q2-legend.cjs.entry.js +2 -2
  42. package/dist/cjs/q2-link.cjs.entry.js +4 -4
  43. package/dist/cjs/q2-link.cjs.entry.js.map +1 -1
  44. package/dist/cjs/q2-list.cjs.entry.js +6 -7
  45. package/dist/cjs/q2-list.cjs.entry.js.map +1 -1
  46. package/dist/cjs/q2-loading-element.cjs.entry.js +2 -2
  47. package/dist/cjs/q2-loc.cjs.entry.js +52 -3
  48. package/dist/cjs/q2-loc.cjs.entry.js.map +1 -1
  49. package/dist/cjs/q2-message.cjs.entry.js +3 -3
  50. package/dist/cjs/q2-month-picker.cjs.entry.js +4 -4
  51. package/dist/cjs/q2-optgroup.cjs.entry.js +5 -4
  52. package/dist/cjs/q2-optgroup.cjs.entry.js.map +1 -1
  53. package/dist/cjs/q2-option-list.cjs.entry.js +2 -2
  54. package/dist/cjs/q2-option.cjs.entry.js +50 -33
  55. package/dist/cjs/q2-option.cjs.entry.js.map +1 -1
  56. package/dist/cjs/q2-pagination.cjs.entry.js +11 -7
  57. package/dist/cjs/q2-pagination.cjs.entry.js.map +1 -1
  58. package/dist/cjs/q2-pill.cjs.entry.js +19 -18
  59. package/dist/cjs/q2-pill.cjs.entry.js.map +1 -1
  60. package/dist/cjs/q2-radio-group.cjs.entry.js +5 -5
  61. package/dist/cjs/q2-radio-group.cjs.entry.js.map +1 -1
  62. package/dist/cjs/q2-radio.cjs.entry.js +3 -3
  63. package/dist/cjs/q2-relative-time.cjs.entry.js +3 -3
  64. package/dist/cjs/q2-resize-observer.cjs.entry.js +2 -2
  65. package/dist/cjs/q2-section.cjs.entry.js +8 -6
  66. package/dist/cjs/q2-section.cjs.entry.js.map +1 -1
  67. package/dist/cjs/q2-select.cjs.entry.js +6 -5
  68. package/dist/cjs/q2-select.cjs.entry.js.map +1 -1
  69. package/dist/cjs/q2-stepper-pane.cjs.entry.js +5 -4
  70. package/dist/cjs/q2-stepper-pane.cjs.entry.js.map +1 -1
  71. package/dist/cjs/q2-stepper-vertical.cjs.entry.js +16 -4
  72. package/dist/cjs/q2-stepper-vertical.cjs.entry.js.map +1 -1
  73. package/dist/cjs/q2-stepper.cjs.entry.js +6 -4
  74. package/dist/cjs/q2-stepper.cjs.entry.js.map +1 -1
  75. package/dist/cjs/q2-tag.cjs.entry.js +6 -4
  76. package/dist/cjs/q2-tag.cjs.entry.js.map +1 -1
  77. package/dist/cjs/q2-tecton-elements.cjs.js +2 -2
  78. package/dist/cjs/q2-textarea.cjs.entry.js +3 -3
  79. package/dist/cjs/q2-tooltip.cjs.entry.js +2 -2
  80. package/dist/cjs/{shapes-be198cc0.js → shapes-5d45fc11.js} +2 -2
  81. package/dist/cjs/{shapes-be198cc0.js.map → shapes-5d45fc11.js.map} +1 -1
  82. package/dist/cjs/tecton-tab-pane.cjs.entry.js +3 -3
  83. package/dist/collection/collection-manifest.json +1 -0
  84. package/dist/collection/components/q2-action-group/q2-action-group.js +1 -1
  85. package/dist/collection/components/q2-action-sheet/q2-action-sheet.js +1 -1
  86. package/dist/collection/components/q2-avatar/q2-avatar.js +1 -1
  87. package/dist/collection/components/q2-calendar/q2-calendar.js +16 -18
  88. package/dist/collection/components/q2-calendar/q2-calendar.js.map +1 -1
  89. package/dist/collection/components/q2-calendar/q2-month-picker.js +2 -2
  90. package/dist/collection/components/q2-calendar/test/q2-calendar-test.e2e.js +27 -0
  91. package/dist/collection/components/q2-calendar/test/q2-calendar-test.e2e.js.map +1 -1
  92. package/dist/collection/components/q2-card/q2-card.js +2 -0
  93. package/dist/collection/components/q2-card/q2-card.js.map +1 -1
  94. package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.js +2 -2
  95. package/dist/collection/components/q2-chart-area/q2-chart-area.js +42 -1
  96. package/dist/collection/components/q2-chart-area/q2-chart-area.js.map +1 -1
  97. package/dist/collection/components/q2-chart-area/test/q2-chart-area-test.e2e.js +15 -0
  98. package/dist/collection/components/q2-chart-area/test/q2-chart-area-test.e2e.js.map +1 -1
  99. package/dist/collection/components/q2-chart-bar/q2-chart-bar.js +1 -1
  100. package/dist/collection/components/q2-chart-donut/q2-chart-donut.js +41 -1
  101. package/dist/collection/components/q2-chart-donut/q2-chart-donut.js.map +1 -1
  102. package/dist/collection/components/q2-chart-donut/test/q2-chart-donut-test.e2e.js +11 -0
  103. package/dist/collection/components/q2-chart-donut/test/q2-chart-donut-test.e2e.js.map +1 -1
  104. package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.css +30 -23
  105. package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.js +4 -3
  106. package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.js.map +1 -1
  107. package/dist/collection/components/q2-currency/q2-currency.js +37 -1
  108. package/dist/collection/components/q2-currency/q2-currency.js.map +1 -1
  109. package/dist/collection/components/q2-currency/test/q2-currency-test.e2e.js +34 -23
  110. package/dist/collection/components/q2-currency/test/q2-currency-test.e2e.js.map +1 -1
  111. package/dist/collection/components/q2-data-table/q2-data-table.js +1 -1
  112. package/dist/collection/components/q2-data-table/q2-data-table.js.map +1 -1
  113. package/dist/collection/components/q2-data-table/test/q2-data-table-test.e2e.js +6 -4
  114. package/dist/collection/components/q2-data-table/test/q2-data-table-test.e2e.js.map +1 -1
  115. package/dist/collection/components/q2-detail/q2-detail.js +1 -1
  116. package/dist/collection/components/q2-dropdown/q2-dropdown.css +5 -0
  117. package/dist/collection/components/q2-dropdown/q2-dropdown.js +10 -4
  118. package/dist/collection/components/q2-dropdown/q2-dropdown.js.map +1 -1
  119. package/dist/collection/components/q2-dropdown/test/q2-dropdown-test.e2e.js +59 -14
  120. package/dist/collection/components/q2-dropdown/test/q2-dropdown-test.e2e.js.map +1 -1
  121. package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.css +29 -11
  122. package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.js +9 -11
  123. package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.js.map +1 -1
  124. package/dist/collection/components/q2-dropdown-item/test/q2-dropdown-item-test.e2e.js +108 -74
  125. package/dist/collection/components/q2-dropdown-item/test/q2-dropdown-item-test.e2e.js.map +1 -1
  126. package/dist/collection/components/q2-editable-field/q2-editable-field.js +1 -1
  127. package/dist/collection/components/q2-example/q2-example.css +66 -0
  128. package/dist/collection/components/q2-example/q2-example.js +312 -0
  129. package/dist/collection/components/q2-example/q2-example.js.map +1 -0
  130. package/dist/collection/components/q2-example/test/q2-example.e2e.js +27 -0
  131. package/dist/collection/components/q2-example/test/q2-example.e2e.js.map +1 -0
  132. package/dist/collection/components/q2-example/test/q2-example.spec.js +126 -0
  133. package/dist/collection/components/q2-example/test/q2-example.spec.js.map +1 -0
  134. package/dist/collection/components/q2-formatted-text/q2-formatted-text.js +1 -1
  135. package/dist/collection/components/q2-input/formatting/alpha.spec.js +10 -0
  136. package/dist/collection/components/q2-input/formatting/alpha.spec.js.map +1 -0
  137. package/dist/collection/components/q2-input/formatting/alphanumeric.spec.js +7 -0
  138. package/dist/collection/components/q2-input/formatting/alphanumeric.spec.js.map +1 -0
  139. package/dist/collection/components/q2-input/formatting/currency.spec.js +20 -0
  140. package/dist/collection/components/q2-input/formatting/currency.spec.js.map +1 -0
  141. package/dist/collection/components/q2-input/formatting/date.js +1 -1
  142. package/dist/collection/components/q2-input/formatting/date.js.map +1 -1
  143. package/dist/collection/components/q2-input/formatting/date.spec.js +17 -0
  144. package/dist/collection/components/q2-input/formatting/date.spec.js.map +1 -0
  145. package/dist/collection/components/q2-input/formatting/numeric.spec.js +32 -0
  146. package/dist/collection/components/q2-input/formatting/numeric.spec.js.map +1 -0
  147. package/dist/collection/components/q2-input/formatting/phone.spec.js +16 -0
  148. package/dist/collection/components/q2-input/formatting/phone.spec.js.map +1 -0
  149. package/dist/collection/components/q2-input/formatting/postal.js +1 -1
  150. package/dist/collection/components/q2-input/formatting/postal.js.map +1 -1
  151. package/dist/collection/components/q2-input/formatting/postal.spec.js +28 -0
  152. package/dist/collection/components/q2-input/formatting/postal.spec.js.map +1 -0
  153. package/dist/collection/components/q2-input/formatting/ssn.spec.js +7 -0
  154. package/dist/collection/components/q2-input/formatting/ssn.spec.js.map +1 -0
  155. package/dist/collection/components/q2-input/formatting/tin.spec.js +7 -0
  156. package/dist/collection/components/q2-input/formatting/tin.spec.js.map +1 -0
  157. package/dist/collection/components/q2-input/q2-input.js +58 -44
  158. package/dist/collection/components/q2-input/q2-input.js.map +1 -1
  159. package/dist/collection/components/q2-input/test/q2-input-test.e2e.js +259 -2106
  160. package/dist/collection/components/q2-input/test/q2-input-test.e2e.js.map +1 -1
  161. package/dist/collection/components/q2-input/test/q2-input-test.spec.js +4035 -0
  162. package/dist/collection/components/q2-input/test/q2-input-test.spec.js.map +1 -0
  163. package/dist/collection/components/q2-item/q2-item.js +1 -1
  164. package/dist/collection/components/q2-legend/q2-legend.js +1 -1
  165. package/dist/collection/components/q2-link/q2-link.css +17 -20
  166. package/dist/collection/components/q2-link/q2-link.js +2 -2
  167. package/dist/collection/components/q2-link/q2-link.js.map +1 -1
  168. package/dist/collection/components/q2-link/test/q2-link-test.e2e.js +6 -6
  169. package/dist/collection/components/q2-link/test/q2-link-test.e2e.js.map +1 -1
  170. package/dist/collection/components/q2-list/q2-list.js +4 -5
  171. package/dist/collection/components/q2-list/q2-list.js.map +1 -1
  172. package/dist/collection/components/q2-loc/q2-loc.js +66 -4
  173. package/dist/collection/components/q2-loc/q2-loc.js.map +1 -1
  174. package/dist/collection/components/q2-loc/test/q2-loc-test.e2e.js +19 -30
  175. package/dist/collection/components/q2-loc/test/q2-loc-test.e2e.js.map +1 -1
  176. package/dist/collection/components/q2-loc/test/q2-loc-test.spec.js +164 -0
  177. package/dist/collection/components/q2-loc/test/q2-loc-test.spec.js.map +1 -0
  178. package/dist/collection/components/q2-message/q2-message.js +1 -1
  179. package/dist/collection/components/q2-optgroup/q2-optgroup.js +3 -2
  180. package/dist/collection/components/q2-optgroup/q2-optgroup.js.map +1 -1
  181. package/dist/collection/components/q2-option/q2-option.css +1 -1
  182. package/dist/collection/components/q2-option/q2-option.js +57 -34
  183. package/dist/collection/components/q2-option/q2-option.js.map +1 -1
  184. package/dist/collection/components/q2-option/test/q2-option-test.e2e.js +110 -106
  185. package/dist/collection/components/q2-option/test/q2-option-test.e2e.js.map +1 -1
  186. package/dist/collection/components/q2-option/test/q2-option-test.spec.js +532 -0
  187. package/dist/collection/components/q2-option/test/q2-option-test.spec.js.map +1 -0
  188. package/dist/collection/components/q2-pagination/q2-pagination.js +9 -5
  189. package/dist/collection/components/q2-pagination/q2-pagination.js.map +1 -1
  190. package/dist/collection/components/q2-pagination/test/q2-pagination-test.e2e.js +18 -1
  191. package/dist/collection/components/q2-pagination/test/q2-pagination-test.e2e.js.map +1 -1
  192. package/dist/collection/components/q2-pill/q2-pill.js +18 -17
  193. package/dist/collection/components/q2-pill/q2-pill.js.map +1 -1
  194. package/dist/collection/components/q2-pill/test/q2-pill-test.e2e.js +128 -57
  195. package/dist/collection/components/q2-pill/test/q2-pill-test.e2e.js.map +1 -1
  196. package/dist/collection/components/q2-popover/q2-popover.js +17 -4
  197. package/dist/collection/components/q2-popover/q2-popover.js.map +1 -1
  198. package/dist/collection/components/q2-radio/q2-radio.js +1 -1
  199. package/dist/collection/components/q2-radio-group/q2-radio-group.css +19 -9
  200. package/dist/collection/components/q2-radio-group/q2-radio-group.js +2 -2
  201. package/dist/collection/components/q2-radio-group/q2-radio-group.js.map +1 -1
  202. package/dist/collection/components/q2-relative-time/q2-relative-time.js +1 -1
  203. package/dist/collection/components/q2-resize-observer/q2-resize-observer.js +1 -1
  204. package/dist/collection/components/q2-section/q2-section.js +6 -4
  205. package/dist/collection/components/q2-section/q2-section.js.map +1 -1
  206. package/dist/collection/components/q2-select/q2-select.js +5 -3
  207. package/dist/collection/components/q2-select/q2-select.js.map +1 -1
  208. package/dist/collection/components/q2-select/test/q2-select-test.e2e.js +123 -62
  209. package/dist/collection/components/q2-select/test/q2-select-test.e2e.js.map +1 -1
  210. package/dist/collection/components/q2-stepper/q2-stepper.js +4 -2
  211. package/dist/collection/components/q2-stepper/q2-stepper.js.map +1 -1
  212. package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.js +3 -2
  213. package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.js.map +1 -1
  214. package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js +46 -2
  215. package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js.map +1 -1
  216. package/dist/collection/components/q2-stepper-vertical/test/q2-stepper-vertical-test.e2e.js +26 -0
  217. package/dist/collection/components/q2-stepper-vertical/test/q2-stepper-vertical-test.e2e.js.map +1 -1
  218. package/dist/collection/components/q2-tab-container/q2-tab-container.js +4 -3
  219. package/dist/collection/components/q2-tab-container/q2-tab-container.js.map +1 -1
  220. package/dist/collection/components/q2-tab-pane/q2-tab-pane.js +1 -1
  221. package/dist/collection/components/q2-tag/q2-tag.js +5 -2
  222. package/dist/collection/components/q2-tag/q2-tag.js.map +1 -1
  223. package/dist/collection/components/q2-tag/test/q2-tag-test.e2e.js +55 -4
  224. package/dist/collection/components/q2-tag/test/q2-tag-test.e2e.js.map +1 -1
  225. package/dist/collection/components/q2-textarea/q2-textarea.js +1 -1
  226. package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js +2 -2
  227. package/dist/collection/utils/helpers.js +63 -41
  228. package/dist/collection/utils/helpers.js.map +1 -1
  229. package/dist/collection/utils/index.js +83 -0
  230. package/dist/collection/utils/index.js.map +1 -1
  231. package/dist/components/index.js +2 -0
  232. package/dist/components/index.js.map +1 -1
  233. package/dist/components/index2.js +84 -1
  234. package/dist/components/index2.js.map +1 -1
  235. package/dist/components/q2-action-group.js +1 -1
  236. package/dist/components/q2-action-sheet.js +1 -1
  237. package/dist/components/q2-avatar2.js +1 -1
  238. package/dist/components/q2-calendar.js +16 -18
  239. package/dist/components/q2-calendar.js.map +1 -1
  240. package/dist/components/q2-card.js +2 -0
  241. package/dist/components/q2-card.js.map +1 -1
  242. package/dist/components/q2-carousel-pane.js +2 -2
  243. package/dist/components/q2-chart-area.js +16 -2
  244. package/dist/components/q2-chart-area.js.map +1 -1
  245. package/dist/components/q2-chart-bar.js +1 -1
  246. package/dist/components/q2-chart-donut.js +19 -2
  247. package/dist/components/q2-chart-donut.js.map +1 -1
  248. package/dist/components/q2-checkbox-group.js +5 -4
  249. package/dist/components/q2-checkbox-group.js.map +1 -1
  250. package/dist/components/q2-currency.js +15 -2
  251. package/dist/components/q2-currency.js.map +1 -1
  252. package/dist/components/q2-data-table.js +1 -1
  253. package/dist/components/q2-data-table.js.map +1 -1
  254. package/dist/components/q2-detail.js +1 -1
  255. package/dist/components/q2-dropdown-item2.js +12 -26
  256. package/dist/components/q2-dropdown-item2.js.map +1 -1
  257. package/dist/components/q2-dropdown.js +6 -3
  258. package/dist/components/q2-dropdown.js.map +1 -1
  259. package/dist/components/q2-editable-field.js +1 -1
  260. package/dist/components/q2-example.d.ts +11 -0
  261. package/dist/components/q2-example.js +170 -0
  262. package/dist/components/q2-example.js.map +1 -0
  263. package/dist/components/q2-formatted-text.js +1 -1
  264. package/dist/components/q2-input2.js +41 -37
  265. package/dist/components/q2-input2.js.map +1 -1
  266. package/dist/components/q2-item.js +1 -1
  267. package/dist/components/q2-legend2.js +1 -1
  268. package/dist/components/q2-link.js +3 -3
  269. package/dist/components/q2-link.js.map +1 -1
  270. package/dist/components/q2-list.js +4 -5
  271. package/dist/components/q2-list.js.map +1 -1
  272. package/dist/components/q2-loc.js +55 -2
  273. package/dist/components/q2-loc.js.map +1 -1
  274. package/dist/components/q2-message2.js +1 -1
  275. package/dist/components/q2-month-picker.js +2 -2
  276. package/dist/components/q2-optgroup2.js +3 -2
  277. package/dist/components/q2-optgroup2.js.map +1 -1
  278. package/dist/components/q2-option-list2.js +1 -1
  279. package/dist/components/q2-option2.js +52 -33
  280. package/dist/components/q2-option2.js.map +1 -1
  281. package/dist/components/q2-pagination.js +9 -5
  282. package/dist/components/q2-pagination.js.map +1 -1
  283. package/dist/components/q2-pill.js +18 -17
  284. package/dist/components/q2-pill.js.map +1 -1
  285. package/dist/components/q2-popover2.js +16 -4
  286. package/dist/components/q2-popover2.js.map +1 -1
  287. package/dist/components/q2-radio-group.js +3 -3
  288. package/dist/components/q2-radio-group.js.map +1 -1
  289. package/dist/components/q2-radio.js +1 -1
  290. package/dist/components/q2-relative-time.js +1 -1
  291. package/dist/components/q2-resize-observer2.js +1 -1
  292. package/dist/components/q2-section.js +6 -4
  293. package/dist/components/q2-section.js.map +1 -1
  294. package/dist/components/q2-select2.js +6 -4
  295. package/dist/components/q2-select2.js.map +1 -1
  296. package/dist/components/q2-stepper-pane.js +3 -2
  297. package/dist/components/q2-stepper-pane.js.map +1 -1
  298. package/dist/components/q2-stepper-vertical.js +16 -3
  299. package/dist/components/q2-stepper-vertical.js.map +1 -1
  300. package/dist/components/q2-stepper.js +4 -2
  301. package/dist/components/q2-stepper.js.map +1 -1
  302. package/dist/components/q2-tab-container.js +4 -3
  303. package/dist/components/q2-tab-container.js.map +1 -1
  304. package/dist/components/q2-tab-pane.js +1 -1
  305. package/dist/components/q2-tag.js +5 -2
  306. package/dist/components/q2-tag.js.map +1 -1
  307. package/dist/components/q2-textarea.js +1 -1
  308. package/dist/components/tecton-tab-pane.js +2 -2
  309. package/dist/esm/click-elsewhere_2.entry.js +16 -5
  310. package/dist/esm/click-elsewhere_2.entry.js.map +1 -1
  311. package/dist/esm/{index-1e1ce94e.js → index-7a5365e2.js} +40 -5
  312. package/dist/esm/index-7a5365e2.js.map +1 -0
  313. package/dist/esm/{index-844fc010.js → index-d18e2a20.js} +86 -3
  314. package/dist/esm/index-d18e2a20.js.map +1 -0
  315. package/dist/esm/loader.js +3 -3
  316. package/dist/esm/q2-action-group.entry.js +2 -2
  317. package/dist/esm/q2-action-sheet.entry.js +3 -3
  318. package/dist/esm/q2-avatar.entry.js +2 -2
  319. package/dist/esm/q2-badge_7.entry.js +49 -44
  320. package/dist/esm/q2-badge_7.entry.js.map +1 -1
  321. package/dist/esm/q2-calendar.entry.js +17 -20
  322. package/dist/esm/q2-calendar.entry.js.map +1 -1
  323. package/dist/esm/q2-card.entry.js +4 -2
  324. package/dist/esm/q2-card.entry.js.map +1 -1
  325. package/dist/esm/q2-carousel-pane.entry.js +4 -4
  326. package/dist/esm/q2-carousel.entry.js +2 -2
  327. package/dist/esm/q2-chart-area.entry.js +16 -3
  328. package/dist/esm/q2-chart-area.entry.js.map +1 -1
  329. package/dist/esm/q2-chart-bar.entry.js +3 -3
  330. package/dist/esm/q2-chart-donut.entry.js +19 -3
  331. package/dist/esm/q2-chart-donut.entry.js.map +1 -1
  332. package/dist/esm/q2-checkbox-group.entry.js +6 -5
  333. package/dist/esm/q2-checkbox-group.entry.js.map +1 -1
  334. package/dist/esm/q2-checkbox.entry.js +2 -2
  335. package/dist/esm/q2-currency.entry.js +14 -2
  336. package/dist/esm/q2-currency.entry.js.map +1 -1
  337. package/dist/esm/q2-data-table.entry.js +3 -3
  338. package/dist/esm/q2-data-table.entry.js.map +1 -1
  339. package/dist/esm/q2-detail.entry.js +3 -3
  340. package/dist/esm/q2-dropdown-item.entry.js +12 -14
  341. package/dist/esm/q2-dropdown-item.entry.js.map +1 -1
  342. package/dist/esm/q2-dropdown.entry.js +7 -5
  343. package/dist/esm/q2-dropdown.entry.js.map +1 -1
  344. package/dist/esm/q2-editable-field.entry.js +3 -3
  345. package/dist/esm/q2-example.entry.js +141 -0
  346. package/dist/esm/q2-example.entry.js.map +1 -0
  347. package/dist/esm/q2-formatted-text.entry.js +2 -2
  348. package/dist/esm/q2-item.entry.js +3 -3
  349. package/dist/esm/q2-legend.entry.js +2 -2
  350. package/dist/esm/q2-link.entry.js +4 -4
  351. package/dist/esm/q2-link.entry.js.map +1 -1
  352. package/dist/esm/q2-list.entry.js +6 -7
  353. package/dist/esm/q2-list.entry.js.map +1 -1
  354. package/dist/esm/q2-loading-element.entry.js +2 -2
  355. package/dist/esm/q2-loc.entry.js +52 -3
  356. package/dist/esm/q2-loc.entry.js.map +1 -1
  357. package/dist/esm/q2-message.entry.js +3 -3
  358. package/dist/esm/q2-month-picker.entry.js +4 -4
  359. package/dist/esm/q2-optgroup.entry.js +5 -4
  360. package/dist/esm/q2-optgroup.entry.js.map +1 -1
  361. package/dist/esm/q2-option-list.entry.js +2 -2
  362. package/dist/esm/q2-option.entry.js +50 -33
  363. package/dist/esm/q2-option.entry.js.map +1 -1
  364. package/dist/esm/q2-pagination.entry.js +11 -7
  365. package/dist/esm/q2-pagination.entry.js.map +1 -1
  366. package/dist/esm/q2-pill.entry.js +19 -18
  367. package/dist/esm/q2-pill.entry.js.map +1 -1
  368. package/dist/esm/q2-radio-group.entry.js +5 -5
  369. package/dist/esm/q2-radio-group.entry.js.map +1 -1
  370. package/dist/esm/q2-radio.entry.js +3 -3
  371. package/dist/esm/q2-relative-time.entry.js +3 -3
  372. package/dist/esm/q2-resize-observer.entry.js +2 -2
  373. package/dist/esm/q2-section.entry.js +8 -6
  374. package/dist/esm/q2-section.entry.js.map +1 -1
  375. package/dist/esm/q2-select.entry.js +6 -5
  376. package/dist/esm/q2-select.entry.js.map +1 -1
  377. package/dist/esm/q2-stepper-pane.entry.js +5 -4
  378. package/dist/esm/q2-stepper-pane.entry.js.map +1 -1
  379. package/dist/esm/q2-stepper-vertical.entry.js +16 -4
  380. package/dist/esm/q2-stepper-vertical.entry.js.map +1 -1
  381. package/dist/esm/q2-stepper.entry.js +6 -4
  382. package/dist/esm/q2-stepper.entry.js.map +1 -1
  383. package/dist/esm/q2-tag.entry.js +6 -4
  384. package/dist/esm/q2-tag.entry.js.map +1 -1
  385. package/dist/esm/q2-tecton-elements.js +3 -3
  386. package/dist/esm/q2-textarea.entry.js +3 -3
  387. package/dist/esm/q2-tooltip.entry.js +2 -2
  388. package/dist/esm/{shapes-36183b2a.js → shapes-c7e1a3fa.js} +2 -2
  389. package/dist/esm/{shapes-36183b2a.js.map → shapes-c7e1a3fa.js.map} +1 -1
  390. package/dist/esm/tecton-tab-pane.entry.js +3 -3
  391. package/dist/q2-tecton-elements/action-sheet-e64cb6f7.js +77 -0
  392. package/dist/q2-tecton-elements/{p-b7554a79.js.map → action-sheet-e64cb6f7.js.map} +1 -1
  393. package/dist/q2-tecton-elements/app-globals-0f993ce5.js +4 -0
  394. package/dist/q2-tecton-elements/{p-e1255160.js.map → app-globals-0f993ce5.js.map} +1 -1
  395. package/dist/q2-tecton-elements/charting-1abfb877.js +34872 -0
  396. package/dist/q2-tecton-elements/{p-2941aafa.js.map → charting-1abfb877.js.map} +1 -1
  397. package/dist/q2-tecton-elements/click-elsewhere_2.entry.js +410 -0
  398. package/dist/q2-tecton-elements/click-elsewhere_2.entry.js.map +1 -0
  399. package/dist/q2-tecton-elements/dataSample-7b62e101.js +2602 -0
  400. package/dist/q2-tecton-elements/{p-ad80aef0.js.map → dataSample-7b62e101.js.map} +1 -1
  401. package/dist/q2-tecton-elements/index-3184c760.js +18168 -0
  402. package/dist/q2-tecton-elements/{p-f1e887f5.js.map → index-3184c760.js.map} +1 -1
  403. package/dist/q2-tecton-elements/index-7a5365e2.js +1792 -0
  404. package/dist/q2-tecton-elements/index-7a5365e2.js.map +1 -0
  405. package/dist/q2-tecton-elements/index-d18e2a20.js +323 -0
  406. package/dist/q2-tecton-elements/index-d18e2a20.js.map +1 -0
  407. package/dist/q2-tecton-elements/q2-action-group.entry.js +56 -0
  408. package/dist/q2-tecton-elements/{p-5637c486.entry.js.map → q2-action-group.entry.js.map} +1 -1
  409. package/dist/q2-tecton-elements/q2-action-sheet.entry.js +1480 -0
  410. package/dist/q2-tecton-elements/{p-188eb162.entry.js.map → q2-action-sheet.entry.js.map} +1 -1
  411. package/dist/q2-tecton-elements/q2-avatar.entry.js +101 -0
  412. package/dist/q2-tecton-elements/{p-07d1c3ae.entry.js.map → q2-avatar.entry.js.map} +1 -1
  413. package/dist/q2-tecton-elements/q2-badge_7.entry.js +5449 -0
  414. package/dist/q2-tecton-elements/q2-badge_7.entry.js.map +1 -0
  415. package/dist/q2-tecton-elements/q2-calendar.entry.js +1313 -0
  416. package/dist/q2-tecton-elements/q2-calendar.entry.js.map +1 -0
  417. package/dist/q2-tecton-elements/q2-card.entry.js +170 -0
  418. package/dist/q2-tecton-elements/q2-card.entry.js.map +1 -0
  419. package/dist/q2-tecton-elements/q2-carousel-pane.entry.js +130 -0
  420. package/dist/q2-tecton-elements/{p-7aef0c08.entry.js.map → q2-carousel-pane.entry.js.map} +1 -1
  421. package/dist/q2-tecton-elements/q2-carousel.entry.js +4613 -0
  422. package/dist/q2-tecton-elements/{p-e216ef3f.entry.js.map → q2-carousel.entry.js.map} +1 -1
  423. package/dist/q2-tecton-elements/q2-chart-area.entry.js +4330 -0
  424. package/dist/q2-tecton-elements/q2-chart-area.entry.js.map +1 -0
  425. package/dist/q2-tecton-elements/q2-chart-bar.entry.js +1479 -0
  426. package/dist/q2-tecton-elements/{p-7906f49e.entry.js.map → q2-chart-bar.entry.js.map} +1 -1
  427. package/dist/q2-tecton-elements/q2-chart-donut.entry.js +4537 -0
  428. package/dist/q2-tecton-elements/q2-chart-donut.entry.js.map +1 -0
  429. package/dist/q2-tecton-elements/q2-checkbox-group.entry.js +166 -0
  430. package/dist/q2-tecton-elements/q2-checkbox-group.entry.js.map +1 -0
  431. package/dist/q2-tecton-elements/q2-checkbox.entry.js +223 -0
  432. package/dist/q2-tecton-elements/{p-b7de110e.entry.js.map → q2-checkbox.entry.js.map} +1 -1
  433. package/dist/q2-tecton-elements/q2-currency.entry.js +153 -0
  434. package/dist/q2-tecton-elements/q2-currency.entry.js.map +1 -0
  435. package/dist/q2-tecton-elements/q2-data-table.entry.js +622 -0
  436. package/dist/q2-tecton-elements/{p-7903cd15.entry.js.map → q2-data-table.entry.js.map} +1 -1
  437. package/dist/q2-tecton-elements/q2-detail.entry.js +128 -0
  438. package/dist/q2-tecton-elements/{p-f5f23659.entry.js.map → q2-detail.entry.js.map} +1 -1
  439. package/dist/q2-tecton-elements/q2-dropdown-item.entry.js +146 -0
  440. package/dist/q2-tecton-elements/q2-dropdown-item.entry.js.map +1 -0
  441. package/dist/q2-tecton-elements/q2-dropdown.entry.js +430 -0
  442. package/dist/q2-tecton-elements/q2-dropdown.entry.js.map +1 -0
  443. package/dist/q2-tecton-elements/q2-editable-field.entry.js +296 -0
  444. package/dist/q2-tecton-elements/{p-896c7008.entry.js.map → q2-editable-field.entry.js.map} +1 -1
  445. package/dist/q2-tecton-elements/q2-example.entry.js +152 -0
  446. package/dist/q2-tecton-elements/q2-example.entry.js.map +1 -0
  447. package/dist/q2-tecton-elements/q2-formatted-text.entry.js +73 -0
  448. package/dist/q2-tecton-elements/{p-7c9f8b62.entry.js.map → q2-formatted-text.entry.js.map} +1 -1
  449. package/dist/q2-tecton-elements/q2-item.entry.js +158 -0
  450. package/dist/q2-tecton-elements/{p-7c9a0122.entry.js.map → q2-item.entry.js.map} +1 -1
  451. package/dist/q2-tecton-elements/q2-legend.entry.js +146 -0
  452. package/dist/q2-tecton-elements/{p-ff8f1a32.entry.js.map → q2-legend.entry.js.map} +1 -1
  453. package/dist/q2-tecton-elements/q2-link.entry.js +83 -0
  454. package/dist/q2-tecton-elements/q2-link.entry.js.map +1 -0
  455. package/dist/q2-tecton-elements/q2-list.entry.js +100 -0
  456. package/dist/q2-tecton-elements/q2-list.entry.js.map +1 -0
  457. package/dist/q2-tecton-elements/q2-loading-element.entry.js +36 -0
  458. package/dist/q2-tecton-elements/{p-a068c84c.entry.js.map → q2-loading-element.entry.js.map} +1 -1
  459. package/dist/q2-tecton-elements/q2-loc.entry.js +82 -0
  460. package/dist/q2-tecton-elements/q2-loc.entry.js.map +1 -0
  461. package/dist/q2-tecton-elements/q2-message.entry.js +99 -0
  462. package/dist/q2-tecton-elements/{p-8d2b02e1.entry.js.map → q2-message.entry.js.map} +1 -1
  463. package/dist/q2-tecton-elements/q2-month-picker.entry.js +198 -0
  464. package/dist/q2-tecton-elements/{p-8d07cf91.entry.js.map → q2-month-picker.entry.js.map} +1 -1
  465. package/dist/q2-tecton-elements/q2-optgroup.entry.js +88 -0
  466. package/dist/q2-tecton-elements/q2-optgroup.entry.js.map +1 -0
  467. package/dist/q2-tecton-elements/q2-option-list.entry.js +585 -0
  468. package/dist/q2-tecton-elements/{p-a5d0e252.entry.js.map → q2-option-list.entry.js.map} +1 -1
  469. package/dist/q2-tecton-elements/q2-option.entry.js +110 -0
  470. package/dist/q2-tecton-elements/q2-option.entry.js.map +1 -0
  471. package/dist/q2-tecton-elements/q2-pagination.entry.js +377 -0
  472. package/dist/q2-tecton-elements/q2-pagination.entry.js.map +1 -0
  473. package/dist/q2-tecton-elements/q2-pill.entry.js +434 -0
  474. package/dist/q2-tecton-elements/q2-pill.entry.js.map +1 -0
  475. package/dist/q2-tecton-elements/q2-radio-group.entry.js +227 -0
  476. package/dist/q2-tecton-elements/q2-radio-group.entry.js.map +1 -0
  477. package/dist/q2-tecton-elements/q2-radio.entry.js +144 -0
  478. package/dist/q2-tecton-elements/{p-c235ab3f.entry.js.map → q2-radio.entry.js.map} +1 -1
  479. package/dist/q2-tecton-elements/q2-relative-time.entry.js +162 -0
  480. package/dist/q2-tecton-elements/{p-95a7c042.entry.js.map → q2-relative-time.entry.js.map} +1 -1
  481. package/dist/q2-tecton-elements/q2-resize-observer.entry.js +100 -0
  482. package/dist/q2-tecton-elements/{p-e2c800ef.entry.js.map → q2-resize-observer.entry.js.map} +1 -1
  483. package/dist/q2-tecton-elements/q2-section.entry.js +256 -0
  484. package/dist/q2-tecton-elements/q2-section.entry.js.map +1 -0
  485. package/dist/q2-tecton-elements/q2-select.entry.js +684 -0
  486. package/dist/q2-tecton-elements/q2-select.entry.js.map +1 -0
  487. package/dist/q2-tecton-elements/q2-stepper-pane.entry.js +124 -0
  488. package/dist/q2-tecton-elements/q2-stepper-pane.entry.js.map +1 -0
  489. package/dist/q2-tecton-elements/q2-stepper-vertical.entry.js +356 -0
  490. package/dist/q2-tecton-elements/q2-stepper-vertical.entry.js.map +1 -0
  491. package/dist/q2-tecton-elements/q2-stepper.entry.js +332 -0
  492. package/dist/q2-tecton-elements/q2-stepper.entry.js.map +1 -0
  493. package/dist/q2-tecton-elements/q2-tag.entry.js +213 -0
  494. package/dist/q2-tecton-elements/q2-tag.entry.js.map +1 -0
  495. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +21 -1
  496. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js.map +1 -1
  497. package/dist/q2-tecton-elements/q2-textarea.entry.js +364 -0
  498. package/dist/q2-tecton-elements/{p-f135b265.entry.js.map → q2-textarea.entry.js.map} +1 -1
  499. package/dist/q2-tecton-elements/q2-tooltip.entry.js +105 -0
  500. package/dist/q2-tecton-elements/{p-c5667d5d.entry.js.map → q2-tooltip.entry.js.map} +1 -1
  501. package/dist/q2-tecton-elements/sectorHelper-183cedd0.js +949 -0
  502. package/dist/q2-tecton-elements/{p-eea5aa01.js.map → sectorHelper-183cedd0.js.map} +1 -1
  503. package/dist/q2-tecton-elements/shapes-c7e1a3fa.js +132 -0
  504. package/dist/q2-tecton-elements/{p-50b425de.js.map → shapes-c7e1a3fa.js.map} +1 -1
  505. package/dist/q2-tecton-elements/tecton-tab-pane.entry.js +134 -0
  506. package/dist/q2-tecton-elements/{p-96b1406c.entry.js.map → tecton-tab-pane.entry.js.map} +1 -1
  507. package/dist/types/components/q2-calendar/q2-calendar.d.ts +4 -5
  508. package/dist/types/components/q2-chart-area/q2-chart-area.d.ts +6 -0
  509. package/dist/types/components/q2-chart-donut/q2-chart-donut.d.ts +6 -0
  510. package/dist/types/components/q2-currency/q2-currency.d.ts +7 -0
  511. package/dist/types/components/q2-dropdown/q2-dropdown.d.ts +1 -1
  512. package/dist/types/components/q2-dropdown-item/q2-dropdown-item.d.ts +2 -2
  513. package/dist/types/components/q2-example/q2-example.d.ts +119 -0
  514. package/dist/types/components/q2-input/formatting/date.d.ts +22 -0
  515. package/dist/types/components/q2-input/formatting/postal.d.ts +197 -0
  516. package/dist/types/components/q2-input/q2-input.d.ts +15 -12
  517. package/dist/types/components/q2-loc/q2-loc.d.ts +15 -1
  518. package/dist/types/components/q2-option/q2-option.d.ts +11 -3
  519. package/dist/types/components/q2-pill/q2-pill.d.ts +3 -3
  520. package/dist/types/components/q2-popover/q2-popover.d.ts +1 -0
  521. package/dist/types/components/q2-select/q2-select.d.ts +1 -1
  522. package/dist/types/components/q2-stepper-vertical/q2-stepper-vertical.d.ts +6 -0
  523. package/dist/types/components/q2-tag/q2-tag.d.ts +1 -1
  524. package/dist/types/components.d.ts +104 -14
  525. package/dist/types/utils/helpers.d.ts +13 -0
  526. package/dist/types/utils/index.d.ts +11 -0
  527. package/package.json +7 -7
  528. package/dist/cjs/index-14c3693c.js.map +0 -1
  529. package/dist/cjs/index-9aa4a776.js.map +0 -1
  530. package/dist/esm/index-1e1ce94e.js.map +0 -1
  531. package/dist/esm/index-844fc010.js.map +0 -1
  532. package/dist/q2-tecton-elements/p-06701928.entry.js +0 -2
  533. package/dist/q2-tecton-elements/p-06701928.entry.js.map +0 -1
  534. package/dist/q2-tecton-elements/p-07d1c3ae.entry.js +0 -2
  535. package/dist/q2-tecton-elements/p-1305f7ca.entry.js +0 -2
  536. package/dist/q2-tecton-elements/p-1305f7ca.entry.js.map +0 -1
  537. package/dist/q2-tecton-elements/p-15ac45d6.js +0 -2
  538. package/dist/q2-tecton-elements/p-15ac45d6.js.map +0 -1
  539. package/dist/q2-tecton-elements/p-16910682.entry.js +0 -2
  540. package/dist/q2-tecton-elements/p-16910682.entry.js.map +0 -1
  541. package/dist/q2-tecton-elements/p-188eb162.entry.js +0 -3
  542. package/dist/q2-tecton-elements/p-1c760a89.entry.js +0 -2
  543. package/dist/q2-tecton-elements/p-1c760a89.entry.js.map +0 -1
  544. package/dist/q2-tecton-elements/p-1c88d057.entry.js +0 -2
  545. package/dist/q2-tecton-elements/p-1c88d057.entry.js.map +0 -1
  546. package/dist/q2-tecton-elements/p-20a3d6ed.entry.js +0 -2
  547. package/dist/q2-tecton-elements/p-20a3d6ed.entry.js.map +0 -1
  548. package/dist/q2-tecton-elements/p-2733583e.entry.js +0 -2
  549. package/dist/q2-tecton-elements/p-2733583e.entry.js.map +0 -1
  550. package/dist/q2-tecton-elements/p-2941aafa.js +0 -39
  551. package/dist/q2-tecton-elements/p-3e428290.entry.js +0 -2
  552. package/dist/q2-tecton-elements/p-3e428290.entry.js.map +0 -1
  553. package/dist/q2-tecton-elements/p-4774e5b3.entry.js +0 -2
  554. package/dist/q2-tecton-elements/p-4774e5b3.entry.js.map +0 -1
  555. package/dist/q2-tecton-elements/p-490ef8e5.entry.js +0 -2
  556. package/dist/q2-tecton-elements/p-490ef8e5.entry.js.map +0 -1
  557. package/dist/q2-tecton-elements/p-4e10550d.entry.js +0 -2
  558. package/dist/q2-tecton-elements/p-4e10550d.entry.js.map +0 -1
  559. package/dist/q2-tecton-elements/p-50b425de.js +0 -2
  560. package/dist/q2-tecton-elements/p-50f7328f.entry.js +0 -2
  561. package/dist/q2-tecton-elements/p-50f7328f.entry.js.map +0 -1
  562. package/dist/q2-tecton-elements/p-5637c486.entry.js +0 -2
  563. package/dist/q2-tecton-elements/p-56df21b0.entry.js +0 -2
  564. package/dist/q2-tecton-elements/p-56df21b0.entry.js.map +0 -1
  565. package/dist/q2-tecton-elements/p-5a834214.entry.js +0 -2
  566. package/dist/q2-tecton-elements/p-5a834214.entry.js.map +0 -1
  567. package/dist/q2-tecton-elements/p-5f99a4a8.entry.js +0 -2
  568. package/dist/q2-tecton-elements/p-5f99a4a8.entry.js.map +0 -1
  569. package/dist/q2-tecton-elements/p-72d948b4.entry.js +0 -2
  570. package/dist/q2-tecton-elements/p-72d948b4.entry.js.map +0 -1
  571. package/dist/q2-tecton-elements/p-7903cd15.entry.js +0 -2
  572. package/dist/q2-tecton-elements/p-7906f49e.entry.js +0 -2
  573. package/dist/q2-tecton-elements/p-7aef0c08.entry.js +0 -2
  574. package/dist/q2-tecton-elements/p-7c9a0122.entry.js +0 -2
  575. package/dist/q2-tecton-elements/p-7c9f8b62.entry.js +0 -2
  576. package/dist/q2-tecton-elements/p-81fbe718.entry.js +0 -2
  577. package/dist/q2-tecton-elements/p-81fbe718.entry.js.map +0 -1
  578. package/dist/q2-tecton-elements/p-896c7008.entry.js +0 -2
  579. package/dist/q2-tecton-elements/p-8d07cf91.entry.js +0 -2
  580. package/dist/q2-tecton-elements/p-8d2b02e1.entry.js +0 -2
  581. package/dist/q2-tecton-elements/p-95a7c042.entry.js +0 -2
  582. package/dist/q2-tecton-elements/p-96b1406c.entry.js +0 -2
  583. package/dist/q2-tecton-elements/p-a068c84c.entry.js +0 -2
  584. package/dist/q2-tecton-elements/p-a47597dd.entry.js +0 -2
  585. package/dist/q2-tecton-elements/p-a47597dd.entry.js.map +0 -1
  586. package/dist/q2-tecton-elements/p-a5d0e252.entry.js +0 -2
  587. package/dist/q2-tecton-elements/p-a5f18e27.js +0 -3
  588. package/dist/q2-tecton-elements/p-a5f18e27.js.map +0 -1
  589. package/dist/q2-tecton-elements/p-ac6aa392.entry.js +0 -2
  590. package/dist/q2-tecton-elements/p-ac6aa392.entry.js.map +0 -1
  591. package/dist/q2-tecton-elements/p-ad057d10.entry.js +0 -2
  592. package/dist/q2-tecton-elements/p-ad057d10.entry.js.map +0 -1
  593. package/dist/q2-tecton-elements/p-ad80aef0.js +0 -2
  594. package/dist/q2-tecton-elements/p-b0e5e9dc.entry.js +0 -2
  595. package/dist/q2-tecton-elements/p-b0e5e9dc.entry.js.map +0 -1
  596. package/dist/q2-tecton-elements/p-b1784be3.entry.js +0 -2
  597. package/dist/q2-tecton-elements/p-b1784be3.entry.js.map +0 -1
  598. package/dist/q2-tecton-elements/p-b7554a79.js +0 -2
  599. package/dist/q2-tecton-elements/p-b7de110e.entry.js +0 -2
  600. package/dist/q2-tecton-elements/p-c235ab3f.entry.js +0 -2
  601. package/dist/q2-tecton-elements/p-c5667d5d.entry.js +0 -2
  602. package/dist/q2-tecton-elements/p-e1255160.js +0 -2
  603. package/dist/q2-tecton-elements/p-e216ef3f.entry.js +0 -2
  604. package/dist/q2-tecton-elements/p-e2c800ef.entry.js +0 -2
  605. package/dist/q2-tecton-elements/p-eea5aa01.js +0 -2
  606. package/dist/q2-tecton-elements/p-f135b265.entry.js +0 -2
  607. package/dist/q2-tecton-elements/p-f1e887f5.js +0 -2
  608. package/dist/q2-tecton-elements/p-f5f23659.entry.js +0 -2
  609. package/dist/q2-tecton-elements/p-f7867f21.entry.js +0 -2
  610. package/dist/q2-tecton-elements/p-f7867f21.entry.js.map +0 -1
  611. package/dist/q2-tecton-elements/p-ff8f1a32.entry.js +0 -2
  612. package/dist/q2-tecton-elements/p-fff01dc1.entry.js +0 -2
  613. package/dist/q2-tecton-elements/p-fff01dc1.entry.js.map +0 -1
@@ -1,2 +0,0 @@
1
- import{r as t,c as e,h as r,F as i,g as o}from"./p-a5f18e27.js";import{o as s,i as a,l}from"./p-15ac45d6.js";const n='*{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 #0066cc)}: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:block;position:relative}ul{--comp-bullet-background:var(--tct-stepper-bullet-active-background, var(--tct-stepper-bullet-active-bg, var(--t-stepper-bullet-active-bg, var(--t-primary, #0079c1))));--comp-bullet-font-color:var(--tct-stepper-bullet-active-font-color, var(--t-stepper-bullet-active-font-color, var(--t-primary-font-color, #ffffff)));--comp-bullet-size:var(--tct-stepper-btn-icon-size, var(--t-stepper-btn-icon-size, 24px));--comp-bullet-gap:var(--tct-stepper-btn-gap, var(--t-stepper-btn-gap, var(--app-scale-3x, 15px)));--comp-bullet-font-size:var(--tct-stepper-btn-label-font-size, var(--t-stepper-btn-label-font-size, 16px));--comp-step-width:var(--tct-stepper-step-width, var(--t-stepper-step-width, var(--t-stepper-step-width, 80px)));--comp-step-gap:var(--tct-stepper-step-gap, var(--t-stepper-step-gap, 5px));--comp-btn-icon-size:var(--tct-stepper-btn-icon-size, var(--t-stepper-btn-icon-size, 24px));--comp-btn-label-font-size:var(--tct-stepper-btn-label-font-size, var(--t-stepper-btn-label-font-size, 16px));--comp-tween:var(--tct-stepper-tween, var(--t-stepper-tween, var(--app-tween-1, 0.2s ease)));overflow-x:auto;display:flex;justify-content:center;list-style:none;padding:0;padding:var(--tct-stepper-list-padding, var(--t-stepper-list-padding, 2px));margin:0;gap:var(--comp-step-gap);--comp-scrollbar-size:var(--tct-scrollbar-size, var(--t-scrollbar-size, var(--app-scale-1x, 5px)));--comp-scrollbar-border-radius:var(--tct-scrollbar-border-radius, var(--t-scrollbar-border-radius, var(--app-border-radius-1, 4px)));--comp-scrollbar-color:var(--tct-scrollbar-color, var(--t-scrollbar-color, var(--t-a11y-gray-color, #747474)));scrollbar-width:thin;scrollbar-color:var(--comp-scrollbar-color) transparent}ul::-webkit-scrollbar{width:var(--comp-scrollbar-size);height:var(--comp-scrollbar-size);margin:5px}ul::-webkit-scrollbar-thumb{background:var(--comp-scrollbar-color);border-radius:var(--comp-scrollbar-border-radius)}ul::-webkit-scrollbar-track{background:transparent;border-radius:var(--comp-scrollbar-border-radius)}.has-scroll ul{justify-content:unset}li{min-height:var(--tct-stepper-min-height, var(--t-stepper-min-height, 50px));flex:0 0 auto;position:relative;width:var(--comp-step-width);text-align:center;max-width:150px;min-width:80px}.step-btn{position:relative;background:transparent;border:0;cursor:pointer;display:flex;flex-direction:column;align-items:center;height:calc(100% - 4px);width:100%;transition:var(--comp-tween);padding:0;transition-property:box-shadow;outline:none;margin-top:2px;--comp-active-color:var(--comp-bullet-background)}.step-btn.status-complete{--comp-active-color:var(--const-stoplight-success, #0e8a00);--tct-stoplight-success:var(--comp-active-color)}.step-btn.status-error{--comp-active-color:var(--const-stoplight-alert, #d20a0a);--tct-stoplight-warning:var(--comp-active-color)}.step-btn[aria-disabled]{cursor:not-allowed}.step-btn[aria-disabled],.step-btn[aria-disabled]+.step-divider{--comp-bullet-font-color:var(--tct-stepper-bullet-inactive-font-color, var(--t-stepper-bullet-inactive-font-color, var(--t-text, #4d4d4d)));--comp-bullet-background:var(--tct-stepper-bullet-inactive-background, var(--tct-stepper-bullet-inactive-bg, var(--t-stepper-bullet-inactive-bg, var(--t-gray-12, #d9d9d9))))}.step-icon,.step-bubble{display:flex;justify-content:center;align-items:center;line-height:0;margin:var(--comp-bullet-gap) auto;color:var(--comp-bullet-font-color);width:var(--comp-btn-icon-size);height:var(--comp-btn-icon-size);min-height:var(--comp-btn-icon-size);font-size:var(--comp-bullet-font-size);transition:var(--comp-tween);transition-property:background, color;border-radius:50%;position:relative}.step-icon q2-icon,.step-bubble q2-icon{--tct-icon-fill:var(--comp-active-color)}.step-icon q2-icon:before,.step-bubble q2-icon:before{content:"";display:block;background:var(--comp-bullet-font-color);position:absolute;width:80%;height:80%;left:11%;top:11%;border-radius:50%}.status-complete .step-icon,.status-error .step-icon,.status-complete .step-bubble,.status-error .step-bubble{background:var(--comp-active-color)}[aria-selected] .step-icon,[aria-selected] .step-bubble{box-shadow:0 0 0 2px var(--t-base, #ffffff), 0 0 0 4px var(--comp-active-color);font-weight:var(--tct-stepper-bullet-active-font-weight, var(--t-stepper-bullet-active-font-weight, 600))}.step-bubble{background:var(--comp-bullet-background)}.step-divider{width:calc(var(--comp-step-width) - var(--comp-step-gap) - var(--comp-bullet-gap) - var(--comp-bullet-size));top:calc(var(--comp-bullet-size) / 2 + var(--comp-bullet-gap));left:calc(var(--comp-step-width) * -0.5 + var(--comp-step-gap) + var(--comp-bullet-gap));border:0;border-top:1px solid var(--comp-bullet-background);height:0;position:absolute;margin:0;transition:border var(--comp-tween)}.step-container{position:relative}.step-label{color:var(--tct-stepper-label-color, var(--tct-stepper-title-color, var(--t-stepper-title-color, var(--t-text, #4d4d4d))));font-size:var(--tct-stepper-label-font-size, var(--tct-stepper-title-font-size, var(--t-stepper-title-font-size, var(--app-font-size-small, 12px))));line-height:var(--tct-stepper-label-line-height, 1.5em);text-overflow:ellipsis;overflow:hidden;display:-webkit-box;-webkit-line-clamp:var(--tct-stepper-label-line-count, 2);-webkit-box-orient:vertical}[aria-selected] .step-label{font-weight:var(--tct-stepper-active-font-weight, var(--t-stepper-active-font-weight, 600))}[aria-describedby] .step-label{-webkit-line-clamp:var(--tct-stepper-label-line-count, 1)}.step-description{color:var(--tct-stepper-description-color, var(--t-stepper-description-color, var(--t-textA, rgba(77, 77, 77, 0.77))));font-size:var(--tct-stepper-description-font-size, var(--t-stepper-description-font-size, var(--app-font-size-small, 12px)));text-overflow:ellipsis;overflow:hidden;display:-webkit-box;-webkit-line-clamp:var(--tct-stepper-description-line-count, 4);-webkit-box-orient:vertical;padding-bottom:0.2em}.step-description .ellipsize{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:var(--comp-step-width);display:block}.gradient-left,.gradient-right{z-index:1;position:absolute;top:0;height:100%;width:18px}.gradient-left{background-image:linear-gradient(to left, var(--t-base-a0, rgba(255, 255, 255, 0)), var(--t-base-a2, rgba(255, 255, 255, 0.5)) 10%, var(--t-base, #ffffff) 100%);left:0}.gradient-right{background-image:linear-gradient(to right, var(--t-base-a0, rgba(255, 255, 255, 0)), var(--t-base-a2, rgba(255, 255, 255, 0.5)) 10%, var(--t-base, #ffffff) 100%);right:0}.btn-left,.btn-right{--tct-icon-size:18px;--tct-btn-icon-hover-background:transparent;--tct-btn-icon-width:22px;--tct-icon-stroke-primary:var(--tct-stepper-scroll-arrow-color, var(--t-stepper-scroll-arrow-color, var(--t-text, #4d4d4d)));position:absolute;top:calc(50% - 22px);z-index:2}.btn-left q2-icon,.btn-right q2-icon{--tct-icon-stroke-width:3}.btn-left{left:0}.btn-right{right:0}';const c=n;const p=class{constructor(r){t(this,r);this.change=e(this,"change",7);this.scheduledAfterRender=[];this.checkForPanes=()=>{const{allPanes:t}=this;if(!t.length)return;this.stepCount=t.length};this.checkScrollState=()=>{if(!this.listElement)return;const{scrollLeft:t,scrollWidth:e,clientWidth:r}=this.listElement;this.scrollEnabled=e>r;this.showScrollLeft=!!t;this.showScrollRight=e!==t+r};this.onScrollBtnClick=t=>{const e=Math.floor(this.listElement.clientWidth/2);this.listElement.scrollBy({left:t==="left"?-e:e,behavior:"smooth"})};this.onSlotChange=()=>{this.checkForPanes();this.checkScrollState()};this.onStepClick=(t,e)=>{t.stopPropagation();const{currentStep:r,stepCount:i,lastEnabledStep:o}=this;if(e>o||e===r)return;this.change.emit({selectedStep:e,lastEnabledStep:o,currentStep:r,stepCount:i})};this.onStepKeyDown=(t,e)=>{const{lastEnabledStep:r,stepCount:i}=this;const{key:o}=t;let s;switch(o){case"ArrowLeft":t.preventDefault();s=Math.max(e-1,0);break;case"ArrowRight":t.preventDefault();s=Math.min(e+1,i);break;case"Home":t.preventDefault();s=1;break;case"End":t.preventDefault();s=r;break}if(!s)return;this.focusStep(s,true)};this.contentChangeTriggerCount=0;this.scrollEnabled=false;this.showScrollLeft=false;this.showScrollRight=false;this.currentStep=1;this.lastEnabledStep=undefined;this.stepCount=undefined}disconnectedCallback(){this.resizeObserver.disconnect()}componentWillLoad(){if(!this.lastEnabledStep)this.lastEnabledStep=this.currentStep||1;this.resizeObserver=new ResizeObserver((()=>this.checkScrollState()));this.checkForPanes()}componentDidLoad(){this.resizeObserver.observe(this.listElement);this.checkScrollState();s(this.hostElement);setTimeout((()=>this.showStep(this.currentStep||1)),0)}componentDidRender(){this.scheduledAfterRender.forEach((t=>t()));this.scheduledAfterRender=[]}defaultChangeHandler(t){const{hostElement:e}=this;if(t.target===e&&!e.getAttribute("onchange")&&!!t.detail){this.currentStep=t.detail.selectedStep}}contentChangeHandler(){this.contentChangeTriggerCount+=1}delegateFocus(t){if(!a(t,this.hostElement))return;this.focusStep(this.currentStep,true,true)}statusChangeHandler(t){const e=Array.from(this.allPanes).findIndex((e=>t.detail.id===e.id));if(e>-1){this.allPanes[e].status=t.detail.status;this.renderStepBtn(e)}}async selectStep(t){var e,r;let i;switch(typeof t){case"number":if(t>this.lastEnabledStep||t<1)break;i=this.listElement.children[t-1];if(!i)return;(e=i.firstElementChild)===null||e===void 0?void 0:e.click();break;case"string":const o=this.hostElement.querySelector(`#${t}`);if(!o)break;const s=this.allPanes.indexOf(o);if(s+1>this.lastEnabledStep||s<0)break;i=this.listElement.children[s];if(!i)break;(r=i.firstElementChild)===null||r===void 0?void 0:r.click();break}}currentStepChanged(t){this.showStep(t)}get allPanes(){return Array.from(this.hostElement.querySelectorAll("q2-stepper-pane"))}focusStep(t,e,r){var i;const o=this.listElement.children[t-1];const s=document.activeElement===this.hostElement;if(!o)return;if(s||r){(i=o.firstElementChild)===null||i===void 0?void 0:i.focus()}if(e){const t=o.offsetLeft-this.listElement.clientWidth/2;this.listElement.scrollTo({left:t,behavior:"smooth"})}}getPaneSlotOrProperty(t,e){var r;const i=t.querySelector(`:scope > [slot="${e}"]`);return(r=i===null||i===void 0?void 0:i.outerHTML)!==null&&r!==void 0?r:l(t[e])}resizeIframe(){var t,e;return(e=(t=window===null||window===void 0?void 0:window.TectonElements)===null||t===void 0?void 0:t.resizeIframe)===null||e===void 0?void 0:e.call(t)}showStep(t){if(t>this.lastEnabledStep){const{currentStep:e,stepCount:r}=this;this.lastEnabledStep=t;this.change.emit({selectedStep:null,lastEnabledStep:t,currentStep:e,stepCount:r})}this.scheduledAfterRender.push(this.resizeIframe);this.showStepPane(t);this.focusStep(t,this.scrollEnabled)}showStepPane(t){this.allPanes.forEach(((e,r)=>{e.isActive=t===r+1}))}renderStepBtn(t){var e;const{allPanes:o,stepCount:s,currentStep:a,lastEnabledStep:n}=this;const c=(e=o===null||o===void 0?void 0:o[t])!==null&&e!==void 0?e:null;const{id:p,status:b}=c;const d=this.getPaneSlotOrProperty(c,"label");const h=this.getPaneSlotOrProperty(c,"description");const v=t+1;const u=v===a;const f=!!d&&`label-${p}`;const g=!!d&&!!h&&`description-${p}`;const m=!d&&l("tecton.element.stepper.number",[`${v}`,`${s}`]);let w;if(b==="complete")w="success-filled";else if(b==="error")w="warning-filled";const x=["step-btn"];if(b)x.push(`status-${b}`);const k=b==="locked";const y=k||v>n;return r("li",{role:"presentation"},r("button",{class:x.join(" "),type:"button","aria-labelledby":f,"aria-describedBy":g,"aria-label":m,"aria-selected":u,"aria-disabled":y?"true":null,role:"tab",tabIndex:u?0:-1,onKeyDown:t=>this.onStepKeyDown(t,v),onClick:t=>!k&&this.onStepClick(t,v)},r(i,null,w?r("div",{class:"step-icon"},r("q2-icon",{type:w})):r("div",{class:"step-bubble"},v),f&&r("div",{class:"step-label",id:f,innerHTML:d}),f&&g&&r("div",{class:"step-description",id:g,innerHTML:h}))),t?r("div",{class:"step-divider"}):"")}render(){const{stepCount:t,scrollEnabled:e,showScrollLeft:o,showScrollRight:s}=this;const a=["step-container"];if(e)a.push("has-scroll");return r(i,{key:"301bb6d606d272d94d410fe02b7cbbd77fff9df6"},r("div",{key:"092a53f199221b012f134b5570d809961ccb128a",class:a.join(" ")},e&&r(i,{key:"7de8b86ec973640795bd6639bb65722eeb6b5635"},r("div",{key:"1be776974e4925344468a763bc031d69c84933da",class:"gradient-left",hidden:!o}),r("div",{key:"634e94553a5671a7ca5db5cf71e875cb96281e58",class:"gradient-right",hidden:!s}),r("q2-btn",{key:"2387f9ed1f6cb08cafb07b6cf212094e61ebe197",class:"btn-left",hideLabel:true,hidden:!this.showScrollLeft,label:l("tecton.element.stepper.scrollLeft"),onClick:()=>this.onScrollBtnClick("left")},r("q2-icon",{key:"a80f570480facea5601eb5e39cefe39a251c85a2",type:"chevron-left"})),r("q2-btn",{key:"515178ad7c257c69e52a8fd0b70228d51586e3b1",class:"btn-right",hideLabel:true,hidden:!this.showScrollRight,label:l("tecton.element.stepper.scrollRight"),onClick:()=>this.onScrollBtnClick("right")},r("q2-icon",{key:"198eeec44ee4ec3770b8433eac622c9e6ce8e267",type:"chevron-right"}))),r("ul",{key:"d2e70be7ead2e575dbf621a038565a60b00e8fc3",onScroll:this.checkScrollState,ref:t=>this.listElement=t,role:"tablist"},t>0&&[...Array(t).keys()].map((t=>this.renderStepBtn(t))))),r("div",{key:"94323e24a7b470daebc0f3c36512ef8068b7f8ce",role:"list"},r("slot",{key:"b87444498045a57258ec22830ffdf0af65502731",onSlotchange:()=>this.onSlotChange()})))}get hostElement(){return o(this)}static get watchers(){return{currentStep:["currentStepChanged"]}}};p.style=c;export{p as q2_stepper};
2
- //# sourceMappingURL=p-3e428290.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["q2StepperCss","Q2StepperStyle0","Q2Stepper","this","scheduledAfterRender","checkForPanes","allPanes","length","stepCount","checkScrollState","listElement","scrollLeft","scrollWidth","clientWidth","scrollEnabled","showScrollLeft","showScrollRight","onScrollBtnClick","direction","scrollAmount","Math","floor","scrollBy","left","behavior","onSlotChange","onStepClick","event","selectedStep","stopPropagation","currentStep","lastEnabledStep","change","emit","onStepKeyDown","stepNumber","key","preventDefault","max","min","focusStep","disconnectedCallback","resizeObserver","disconnect","componentWillLoad","ResizeObserver","componentDidLoad","observe","overrideFocus","hostElement","setTimeout","showStep","componentDidRender","forEach","fn","defaultChangeHandler","target","getAttribute","detail","contentChangeHandler","contentChangeTriggerCount","delegateFocus","isEventFromElement","statusChangeHandler","index","Array","from","findIndex","el","id","status","renderStepBtn","selectStep","value","stepListItem","children","_a","firstElementChild","click","pane","querySelector","stepIndex","indexOf","_b","currentStepChanged","querySelectorAll","scrollIntoView","forceFocus","isActive","document","activeElement","focus","offsetLeft","scrollTo","getPaneSlotOrProperty","slotName","slot","outerHTML","loc","resizeIframe","window","TectonElements","call","push","showStepPane","label","description","isCurrentStep","labelId","descriptionId","btnLabel","statusIcon","stepClasses","isLocked","disabled","h","role","class","join","type","tabIndex","onKeyDown","ev","onClick","Fragment","innerHTML","render","containerClasses","hidden","hideLabel","onScroll","ref","keys","map","onSlotchange"],"sources":["src/components/q2-stepper/q2-stepper.scss?tag=q2-stepper&encapsulation=shadow","src/components/q2-stepper/q2-stepper.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions';\n\n:host {\n display: block;\n position: relative;\n}\n\nul {\n --comp-bullet-background: #{var-list(\n --tct-stepper-bullet-active-background,\n var-prefixer(stepper-bullet-active-bg),\n --t-primary,\n #0079c1\n )};\n --comp-bullet-font-color: #{var-list(\n var-prefixer(stepper-bullet-active-font-color),\n --t-primary-font-color,\n #ffffff\n )};\n --comp-bullet-size: #{var-list(var-prefixer(stepper-btn-icon-size), 24px)};\n --comp-bullet-gap: #{var-list(var-prefixer(stepper-btn-gap), --app-scale-3x, 15px)};\n --comp-bullet-font-size: #{var-list(var-prefixer(stepper-btn-label-font-size), 16px)};\n\n --comp-step-width: #{var-list(var-prefixer(stepper-step-width), --t-stepper-step-width, 80px)};\n --comp-step-gap: #{var-list(var-prefixer(stepper-step-gap), 5px)};\n --comp-btn-icon-size: #{var-list(var-prefixer(stepper-btn-icon-size), 24px)};\n --comp-btn-label-font-size: #{var-list(var-prefixer(stepper-btn-label-font-size), 16px)};\n --comp-tween: #{var-list(var-prefixer(stepper-tween), --app-tween-1, unquote('0.2s ease'))};\n\n overflow-x: auto;\n display: flex;\n justify-content: center;\n list-style: none;\n padding: 0;\n padding: var-list(var-prefixer(stepper-list-padding), 2px);\n margin: 0;\n gap: var(--comp-step-gap);\n @include tiny-scrollbar();\n\n .has-scroll & {\n justify-content: unset;\n }\n}\n\nli {\n min-height: var-list(var-prefixer(stepper-min-height), 50px);\n flex: 0 0 auto;\n position: relative;\n width: var(--comp-step-width);\n text-align: center;\n max-width: 150px;\n min-width: 80px;\n}\n\n.step-btn {\n position: relative;\n background: transparent;\n border: 0;\n cursor: pointer;\n display: flex;\n flex-direction: column;\n align-items: center;\n height: calc(100% - 4px);\n width: 100%;\n transition: var(--comp-tween);\n padding: 0;\n transition-property: box-shadow;\n outline: none;\n margin-top: 2px;\n\n --comp-active-color: var(--comp-bullet-background);\n &.status-complete {\n --comp-active-color: var(--const-stoplight-success, #0e8a00);\n --tct-stoplight-success: var(--comp-active-color);\n }\n &.status-error {\n --comp-active-color: var(--const-stoplight-alert, #d20a0a);\n --tct-stoplight-warning: var(--comp-active-color);\n }\n\n &[aria-disabled] {\n cursor: not-allowed;\n\n &,\n & + .step-divider {\n --comp-bullet-font-color: #{var-list(var-prefixer(stepper-bullet-inactive-font-color), --t-text, #4d4d4d)};\n --comp-bullet-background: #{var-list(\n --tct-stepper-bullet-inactive-background,\n var-prefixer(stepper-bullet-inactive-bg),\n --t-gray-12,\n #d9d9d9\n )};\n }\n }\n}\n.step-icon,\n.step-bubble {\n display: flex;\n justify-content: center;\n align-items: center;\n line-height: 0;\n margin: var(--comp-bullet-gap) auto;\n color: var(--comp-bullet-font-color);\n width: var(--comp-btn-icon-size);\n height: var(--comp-btn-icon-size);\n min-height: var(--comp-btn-icon-size);\n font-size: var(--comp-bullet-font-size);\n transition: var(--comp-tween);\n transition-property: background, color;\n border-radius: 50%;\n position: relative;\n\n q2-icon {\n --tct-icon-fill: var(--comp-active-color);\n &:before {\n content: '';\n display: block;\n background: var(--comp-bullet-font-color);\n position: absolute;\n width: 80%;\n height: 80%;\n left: 11%;\n top: 11%;\n border-radius: 50%;\n }\n }\n .status-complete &,\n .status-error & {\n background: var(--comp-active-color);\n }\n [aria-selected] & {\n box-shadow:\n 0 0 0 2px var(--t-base, #ffffff),\n 0 0 0 4px var(--comp-active-color);\n font-weight: var-list(var-prefixer(stepper-bullet-active-font-weight), 600);\n }\n}\n\n.step-bubble {\n background: var(--comp-bullet-background);\n}\n\n.step-divider {\n width: calc(var(--comp-step-width) - var(--comp-step-gap) - var(--comp-bullet-gap) - var(--comp-bullet-size));\n top: calc(calc(var(--comp-bullet-size) / 2) + var(--comp-bullet-gap));\n left: calc(calc(var(--comp-step-width) * -0.5) + var(--comp-step-gap) + var(--comp-bullet-gap));\n border: 0;\n border-top: 1px solid var(--comp-bullet-background);\n height: 0;\n position: absolute;\n margin: 0;\n transition: border var(--comp-tween);\n}\n\n.step-container {\n position: relative;\n}\n\n.step-label {\n color: var-list(--tct-stepper-label-color, var-prefixer(stepper-title-color), --t-text, #4d4d4d);\n font-size: var-list(\n --tct-stepper-label-font-size,\n var-prefixer(stepper-title-font-size),\n --app-font-size-small,\n 12px\n );\n line-height: var-list(--tct-stepper-label-line-height, 1.5em);\n @include line-clamp(var(--tct-stepper-label-line-count, 2));\n\n [aria-selected] & {\n font-weight: var-list(var-prefixer(stepper-active-font-weight), 600);\n }\n\n [aria-describedby] & {\n -webkit-line-clamp: var(--tct-stepper-label-line-count, 1);\n }\n}\n\n.step-description {\n color: var-list(var-prefixer(stepper-description-color), --t-textA, rgba(77, 77, 77, 0.77));\n font-size: var-list(var-prefixer(stepper-description-font-size), --app-font-size-small, 12px);\n @include line-clamp(var(--tct-stepper-description-line-count, 4));\n\n // Add padding for descenders\n padding-bottom: 0.2em;\n\n // For description slot on q2-stepper-pane\n .ellipsize {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: var(--comp-step-width);\n display: block;\n }\n}\n\n.gradient-left,\n.gradient-right {\n z-index: 1;\n position: absolute;\n top: 0;\n height: 100%;\n width: 18px;\n}\n\n.gradient-left {\n background-image: linear-gradient(\n to left,\n var(--t-base-a0, rgba(255, 255, 255, 0)),\n var(--t-base-a2, rgba(255, 255, 255, 0.5)) 10%,\n var(--t-base, #ffffff) 100%\n );\n left: 0;\n}\n\n.gradient-right {\n background-image: linear-gradient(\n to right,\n var(--t-base-a0, rgba(255, 255, 255, 0)),\n var(--t-base-a2, rgba(255, 255, 255, 0.5)) 10%,\n var(--t-base, #ffffff) 100%\n );\n right: 0;\n}\n\n.btn-left,\n.btn-right {\n --tct-icon-size: 18px;\n --tct-btn-icon-hover-background: transparent;\n --tct-btn-icon-width: 22px;\n --tct-icon-stroke-primary: #{var-list(var-prefixer(stepper-scroll-arrow-color), --t-text, #4d4d4d)};\n\n position: absolute;\n top: calc(50% - 22px);\n z-index: 2;\n q2-icon {\n --tct-icon-stroke-width: 3;\n }\n}\n\n.btn-left {\n left: 0;\n}\n\n.btn-right {\n right: 0;\n}\n","import {\n Component,\n Prop,\n h,\n Element,\n ComponentInterface,\n State,\n Watch,\n Listen,\n Method,\n Event,\n EventEmitter,\n Fragment,\n} from '@stencil/core';\nimport { loc, overrideFocus, isEventFromElement } from 'src/utils';\n@Component({ tag: 'q2-stepper', shadow: true, styleUrl: 'q2-stepper.scss' })\nexport class Q2Stepper implements ComponentInterface {\n // #region Own Properties\n\n listElement: HTMLUListElement;\n resizeObserver: ResizeObserver;\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 contentChangeTriggerCount: number = 0;\n\n @State()\n scrollEnabled: boolean = false;\n\n @State()\n showScrollLeft: boolean = false;\n\n @State()\n showScrollRight: boolean = false;\n\n // #endregion\n // #region Public Property API\n\n /** The currently selected step. */\n @Prop({ reflect: true, mutable: true })\n currentStep: number = 1;\n\n /**\n * The last step the user may navigate to.\n * @info\n * Will be managed automatically if not provided.\n */\n @Prop({ mutable: true })\n lastEnabledStep: number;\n\n /**\n * Used to determine the number of steps in the stepper.\n * @private\n */\n @Prop({ mutable: true })\n stepCount: number;\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when the selected step changes.\n * @legacyEvent\n */\n @Event()\n change: EventEmitter;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback() {\n this.resizeObserver.disconnect();\n }\n\n componentWillLoad() {\n if (!this.lastEnabledStep) this.lastEnabledStep = this.currentStep || 1;\n this.resizeObserver = new ResizeObserver(() => this.checkScrollState());\n this.checkForPanes();\n }\n\n componentDidLoad() {\n this.resizeObserver.observe(this.listElement);\n this.checkScrollState();\n overrideFocus(this.hostElement);\n setTimeout(() => this.showStep(this.currentStep || 1), 0);\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 defaultChangeHandler(event: CustomEvent) {\n const { hostElement } = this;\n if (event.target === hostElement && !hostElement.getAttribute('onchange') && !!event.detail) {\n this.currentStep = event.detail.selectedStep;\n }\n }\n\n @Listen('contentChange')\n contentChangeHandler() {\n this.contentChangeTriggerCount += 1;\n }\n\n @Listen('focus')\n delegateFocus(event: FocusEvent) {\n if (!isEventFromElement(event, this.hostElement)) return;\n this.focusStep(this.currentStep, true, true);\n }\n\n @Listen('statusChange')\n statusChangeHandler(event: CustomEvent) {\n const index = Array.from(this.allPanes).findIndex(el => event.detail.id === el.id);\n if (index > -1) {\n this.allPanes[index].status = event.detail.status;\n this.renderStepBtn(index);\n }\n }\n\n // #endregion\n // #region Public Methods API\n\n /**\n * Emulates clicking a step in the stepper and emitting the change event.\n *\n * You may provide either the step number or the stepper pane id.\n *\n * If the value is invalid or the step is locked, the method will do nothing.\n * @testOnly\n */\n @Method()\n async selectStep(value: number | string) {\n let stepListItem;\n switch (typeof value) {\n case 'number':\n if (value > this.lastEnabledStep || value < 1) break;\n stepListItem = this.listElement.children[value - 1];\n if (!stepListItem) return;\n (stepListItem.firstElementChild as HTMLButtonElement)?.click();\n break;\n case 'string':\n const pane = this.hostElement.querySelector<HTMLQ2StepperPaneElement>(`#${value}`);\n if (!pane) break;\n const stepIndex = this.allPanes.indexOf(pane);\n if (stepIndex + 1 > this.lastEnabledStep || stepIndex < 0) break;\n stepListItem = this.listElement.children[stepIndex];\n if (!stepListItem) break;\n (stepListItem.firstElementChild as HTMLButtonElement)?.click();\n break;\n default:\n break;\n }\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('currentStep')\n currentStepChanged(stepNumber: number) {\n this.showStep(stepNumber);\n }\n\n // #endregion\n // #region Local Methods\n\n get allPanes() {\n return Array.from(this.hostElement.querySelectorAll<HTMLQ2StepperPaneElement>('q2-stepper-pane'));\n }\n\n checkForPanes = () => {\n const { allPanes } = this;\n if (!allPanes.length) return;\n\n this.stepCount = allPanes.length;\n };\n\n checkScrollState = () => {\n if (!this.listElement) return;\n const { scrollLeft, scrollWidth, clientWidth } = this.listElement;\n this.scrollEnabled = scrollWidth > clientWidth;\n this.showScrollLeft = !!scrollLeft;\n this.showScrollRight = scrollWidth !== scrollLeft + clientWidth;\n };\n\n focusStep(stepNumber: number, scrollIntoView?: boolean, forceFocus?: boolean) {\n const stepListItem = this.listElement.children[stepNumber - 1] as HTMLLIElement;\n const isActive = document.activeElement === this.hostElement;\n if (!stepListItem) return;\n if (isActive || forceFocus) {\n (stepListItem.firstElementChild as HTMLButtonElement)?.focus();\n }\n\n if (scrollIntoView) {\n const left = stepListItem.offsetLeft - this.listElement.clientWidth / 2;\n this.listElement.scrollTo({\n left,\n behavior: 'smooth',\n });\n }\n }\n\n getPaneSlotOrProperty(pane: HTMLQ2StepperPaneElement, slotName: 'description' | 'label') {\n const slot = pane.querySelector<HTMLElement>(`:scope > [slot=\"${slotName}\"]`);\n return slot?.outerHTML ?? loc(pane[slotName]);\n }\n\n onScrollBtnClick = (direction: 'left' | 'right') => {\n const scrollAmount = Math.floor(this.listElement.clientWidth / 2);\n\n this.listElement.scrollBy({\n left: direction === 'left' ? -scrollAmount : scrollAmount,\n behavior: 'smooth',\n });\n };\n\n onSlotChange = () => {\n this.checkForPanes();\n this.checkScrollState();\n };\n\n onStepClick = (event, selectedStep: number) => {\n event.stopPropagation();\n const { currentStep, stepCount, lastEnabledStep } = this;\n if (selectedStep > lastEnabledStep || selectedStep === currentStep) return;\n\n this.change.emit({\n selectedStep,\n lastEnabledStep,\n currentStep,\n stepCount,\n });\n };\n\n onStepKeyDown = (event: KeyboardEvent, stepNumber: number) => {\n const { lastEnabledStep, stepCount } = this;\n const { key } = event;\n\n let selectedStep;\n switch (key) {\n case 'ArrowLeft':\n event.preventDefault();\n selectedStep = Math.max(stepNumber - 1, 0);\n break;\n\n case 'ArrowRight':\n event.preventDefault();\n selectedStep = Math.min(stepNumber + 1, stepCount);\n break;\n\n case 'Home':\n event.preventDefault();\n selectedStep = 1;\n break;\n\n case 'End':\n event.preventDefault();\n selectedStep = lastEnabledStep;\n break;\n }\n\n if (!selectedStep) return;\n this.focusStep(selectedStep, true);\n };\n\n resizeIframe() {\n return window?.TectonElements?.resizeIframe?.();\n }\n\n showStep(stepNumber: number) {\n if (stepNumber > this.lastEnabledStep) {\n const { currentStep, stepCount } = this;\n this.lastEnabledStep = stepNumber;\n this.change.emit({\n selectedStep: null,\n lastEnabledStep: stepNumber,\n currentStep,\n stepCount,\n });\n }\n\n this.scheduledAfterRender.push(this.resizeIframe);\n this.showStepPane(stepNumber);\n this.focusStep(stepNumber, this.scrollEnabled);\n }\n\n showStepPane(stepNumber: number) {\n this.allPanes.forEach((pane, index) => {\n pane.isActive = stepNumber === index + 1;\n });\n }\n\n // #endregion\n // #region Render Methods\n\n renderStepBtn(stepIndex: number) {\n const { allPanes, stepCount, currentStep, lastEnabledStep } = this;\n const pane = allPanes?.[stepIndex] ?? null;\n const { id, status } = pane;\n const label = this.getPaneSlotOrProperty(pane, 'label');\n const description = this.getPaneSlotOrProperty(pane, 'description');\n\n const stepNumber = stepIndex + 1;\n const isCurrentStep = stepNumber === currentStep;\n const labelId = !!label && `label-${id}`;\n const descriptionId = !!label && !!description && `description-${id}`;\n const btnLabel = !label && loc('tecton.element.stepper.number', [`${stepNumber}`, `${stepCount}`]);\n\n let statusIcon;\n if (status === 'complete') statusIcon = 'success-filled';\n else if (status === 'error') statusIcon = 'warning-filled';\n\n const stepClasses = ['step-btn'];\n if (status) stepClasses.push(`status-${status}`);\n const isLocked = status === 'locked';\n const disabled = isLocked || stepNumber > lastEnabledStep;\n\n return (\n <li role=\"presentation\">\n <button\n class={stepClasses.join(' ')}\n type=\"button\"\n aria-labelledby={labelId}\n aria-describedBy={descriptionId}\n aria-label={btnLabel}\n aria-selected={isCurrentStep}\n aria-disabled={disabled ? 'true' : null}\n role=\"tab\"\n tabIndex={isCurrentStep ? 0 : -1}\n onKeyDown={ev => this.onStepKeyDown(ev, stepNumber)}\n onClick={ev => !isLocked && this.onStepClick(ev, stepNumber)}\n >\n <Fragment>\n {statusIcon ? (\n <div class=\"step-icon\">\n <q2-icon type={statusIcon}></q2-icon>\n </div>\n ) : (\n <div class=\"step-bubble\">{stepNumber}</div>\n )}\n {labelId && (\n <div\n class=\"step-label\"\n id={labelId}\n innerHTML={label}\n ></div>\n )}\n {labelId && descriptionId && (\n <div\n class=\"step-description\"\n id={descriptionId}\n innerHTML={description}\n ></div>\n )}\n </Fragment>\n </button>\n {stepIndex ? <div class=\"step-divider\"></div> : ''}\n </li>\n );\n }\n\n render() {\n const { stepCount, scrollEnabled, showScrollLeft, showScrollRight } = this;\n const containerClasses = ['step-container'];\n if (scrollEnabled) containerClasses.push('has-scroll');\n\n return (\n <Fragment>\n <div class={containerClasses.join(' ')}>\n {scrollEnabled && (\n <Fragment>\n <div\n class=\"gradient-left\"\n hidden={!showScrollLeft}\n ></div>\n <div\n class=\"gradient-right\"\n hidden={!showScrollRight}\n ></div>\n\n <q2-btn\n class=\"btn-left\"\n hideLabel={true}\n hidden={!this.showScrollLeft}\n label={loc('tecton.element.stepper.scrollLeft')}\n onClick={() => this.onScrollBtnClick('left')}\n >\n <q2-icon type=\"chevron-left\"></q2-icon>\n </q2-btn>\n\n <q2-btn\n class=\"btn-right\"\n hideLabel={true}\n hidden={!this.showScrollRight}\n label={loc('tecton.element.stepper.scrollRight')}\n onClick={() => this.onScrollBtnClick('right')}\n >\n <q2-icon type=\"chevron-right\"></q2-icon>\n </q2-btn>\n </Fragment>\n )}\n\n <ul\n onScroll={this.checkScrollState}\n ref={el => (this.listElement = el)}\n role=\"tablist\"\n >\n {stepCount > 0 && [...Array(stepCount).keys()].map(stepIndex => this.renderStepBtn(stepIndex))}\n </ul>\n </div>\n <div role=\"list\">\n <slot onSlotchange={() => this.onSlotChange()} />\n </div>\n </Fragment>\n );\n }\n\n // #endregion\n}\n"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{r,h as t}from"./p-a5f18e27.js";const e="*{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 #0066cc)}: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}.currency{color:var(--tct-currency-color, inherit);font-size:var(--tct-currency-font-size, inherit);font-weight:var(--tct-currency-font-weight, inherit)}.currency-small{color:var(--tct-currency-small-color, inherit);font-size:var(--tct-currency-small-font-size, 24px);font-weight:var(--tct-currency-small-font-weight, 600)}.currency-small .superscript{vertical-align:super;color:var(--tct-currency-small-superscript-color, inherit);font-size:var(--tct-currency-small-superscript-font-size, var(--app-font-size-small, 12px));font-weight:var(--tct-currency-small-superscript-font-weight, 700)}.currency-medium{color:var(--tct-currency-medium-color, inherit);font-size:var(--tct-currency-medium-font-size, 42px);font-weight:var(--tct-currency-medium-font-weight, 600)}.currency-medium .superscript{vertical-align:super;color:var(--tct-currency-medium-superscript-color, inherit);font-size:var(--tct-currency-medium-superscript-font-size, 16px);font-weight:var(--tct-currency-medium-superscript-font-weight, 700)}.currency-large{color:var(--tct-currency-large-color, inherit);font-size:var(--tct-currency-large-font-size, 70px);font-weight:var(--tct-currency-large-font-weight, 700)}.currency-large .superscript{vertical-align:super;color:var(--tct-currency-large-superscript-color, inherit);font-size:var(--tct-currency-large-superscript-font-size, 28px);font-weight:var(--tct-currency-large-superscript-font-weight, 800)}";const s=e;const i=class{constructor(t){r(this,t);this.amount=undefined;this.currency="USD";this.locale=document.documentElement.lang||"en-US";this.signDisplay="auto";this.size=undefined;this.slotSize=undefined}componentWillLoad(){this.formatCurrency()}propsUpdated(){this.formatCurrency()}get amountCore(){const{formattedParts:r,shouldSuperscriptFraction:t}=this;let e="";for(const t of r){if(t.type==="integer"||t.type==="decimal"||t.type==="group"||t.type==="literal"){e+=t.value}}if(t&&e[e.length-1]===".")e=e.slice(0,-1);e=e.trimEnd();return e}get currencyClasses(){const r=["currency"];const t=this.size?this.size:this.slotSize;if(!!t)r.push(`currency-${t}`);return r.join(" ")}get currencyIsFront(){const r=this.formattedParts.findIndex((r=>r.type==="currency"));if(r===0||r===1)return true;return false}get currencySymbol(){const{formattedParts:r,currencyIsFront:t}=this;const e=r.findIndex((r=>r.type==="currency"));const s=r[e].value;return t?s:" "+s}get fraction(){const{formattedParts:r}=this;const t=r.find((r=>r.type==="fraction"));if(!t)return;return t.value}get hasPlusMinusSign(){return this.formattedParts.some((r=>r.type==="minusSign"||r.type==="plusSign"))}get plusMinusSign(){const{formattedParts:r,hasPlusMinusSign:t}=this;if(!t)return;const e=r.find((r=>r.type==="minusSign"||r.type==="plusSign"));return e.value}get shouldSuperscriptFraction(){const r=this.formattedParts.findIndex((r=>r.type==="fraction"));const t=this.formattedParts[r-1].value===",";if(t||!this.currencyIsFront||this.sizeValue==="small"||!this.sizeProvided)return false;return true}get shouldSuperscriptSymbol(){if(!this.currencyIsFront||this.sizeProvided)return true;return false}get sizeProvided(){return!!this.size||!!this.slotSize}get sizeValue(){return this.size?this.size:this.slotSize}formatCurrency(){const r=new Intl.NumberFormat(this.locale,{style:"currency",currency:this.currency,signDisplay:this.signDisplay});this.formattedParts=r.formatToParts(this.amount);this.readableCurrency=r.format(this.amount)}render(){const{hasPlusMinusSign:r,plusMinusSign:e,currencyIsFront:s,currencySymbol:i,shouldSuperscriptSymbol:n,amountCore:c,fraction:o,shouldSuperscriptFraction:a,readableCurrency:u,currencyClasses:p}=this;return t("div",{key:"d921c89c1a7cc2b8cc768f828a68794b81ea896e",class:p,"aria-label":u},r&&t("span",{key:"042f4f077827825dc9a59fd88770bd92758e4a1d"},e),s&&t("span",{key:"1a383dd810cdf6e4e8c7f2b0c3cb823ea27a30d5",class:n?"superscript":""},i),t("span",{key:"2c2892e40610254844efcfff6dae56699a94beff"},c),t("span",{key:"1c4cea0da09310e0d252a82e66dbd6473ef2b9f5",class:a?"superscript":""},o),!s&&t("span",{key:"0f54a283e8979f4fe276a1c1a4202eff4bdb3673",class:n?"superscript":""},i))}static get watchers(){return{amount:["propsUpdated"],currency:["propsUpdated"],locale:["propsUpdated"],size:["propsUpdated"],slotSize:["propsUpdated"],signDisplay:["propsUpdated"]}}};i.style=s;export{i as q2_currency};
2
- //# sourceMappingURL=p-4774e5b3.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["q2CurrencyCss","Q2CurrencyStyle0","Q2Currency","document","documentElement","lang","componentWillLoad","this","formatCurrency","propsUpdated","amountCore","formattedParts","shouldSuperscriptFraction","amount","part","type","value","length","slice","trimEnd","currencyClasses","classes","sizeClass","size","slotSize","push","join","currencyIsFront","index","findIndex","currencySymbol","currencyIndex","symbol","fraction","find","hasPlusMinusSign","some","plusMinusSign","sign","fractionIndex","commaBeforeFraction","sizeValue","sizeProvided","shouldSuperscriptSymbol","formatOptions","Intl","NumberFormat","locale","style","currency","signDisplay","formatToParts","readableCurrency","format","render","h","key","class"],"sources":["src/components/q2-currency/q2-currency.scss?tag=q2-currency&encapsulation=shadow","src/components/q2-currency/q2-currency.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions';\n\n:host {\n display: inline-block;\n}\n\n.currency {\n color: var-list(--tct-currency-color, inherit);\n font-size: var-list(--tct-currency-font-size, inherit);\n font-weight: var-list(--tct-currency-font-weight, inherit);\n}\n\n.currency-small {\n color: var-list(--tct-currency-small-color, inherit);\n font-size: var-list(--tct-currency-small-font-size, 24px);\n font-weight: var-list(--tct-currency-small-font-weight, 600);\n\n .superscript {\n vertical-align: super;\n color: var-list(--tct-currency-small-superscript-color, inherit);\n font-size: var-list(--tct-currency-small-superscript-font-size, --app-font-size-small, 12px);\n font-weight: var-list(--tct-currency-small-superscript-font-weight, 700);\n }\n}\n\n.currency-medium {\n color: var-list(--tct-currency-medium-color, inherit);\n font-size: var-list(--tct-currency-medium-font-size, 42px);\n font-weight: var-list(--tct-currency-medium-font-weight, 600);\n\n .superscript {\n vertical-align: super;\n color: var-list(--tct-currency-medium-superscript-color, inherit);\n font-size: var-list(--tct-currency-medium-superscript-font-size, 16px);\n font-weight: var-list(--tct-currency-medium-superscript-font-weight, 700);\n }\n}\n\n.currency-large {\n color: var-list(--tct-currency-large-color, inherit);\n font-size: var-list(--tct-currency-large-font-size, 70px);\n font-weight: var-list(--tct-currency-large-font-weight, 700);\n\n .superscript {\n vertical-align: super;\n color: var-list(--tct-currency-large-superscript-color, inherit);\n font-size: var-list(--tct-currency-large-superscript-font-size, 28px);\n font-weight: var-list(--tct-currency-large-superscript-font-weight, 800);\n }\n}\n","import { Component, Prop, Watch, h, ComponentInterface } from '@stencil/core';\n@Component({ tag: 'q2-currency', shadow: true, styleUrl: 'q2-currency.scss' })\nexport class Q2Currency implements ComponentInterface {\n // #region Own Properties\n\n /** @private The parts of the formatted number. */\n formattedParts: Intl.NumberFormatPart[];\n /** @private The full currency for aria-label purposes. */\n readableCurrency: string;\n\n // #endregion\n // #region Public Property API\n\n /** The amount you want formatted. */\n @Prop({ reflect: true })\n amount: number;\n\n /** Formats the `amount` to a specific currency. */\n @Prop({ reflect: true })\n currency: string = 'USD';\n\n /** Formats to the language provided. Accepts multiple locales in an array as sequential fallbacks. */\n @Prop({ reflect: true })\n locale: string | string[] = document.documentElement.lang || 'en-US';\n\n /**\n * Determine how the positive or negative sign should display.\n *\n * Behavior:\n * - `always`: Always display the sign.\n * - `auto`: Sign displays for negative numbers only, including negative zero.\n * - `exceptZero`: Sign displays for positive and negative numbers, but not zero.\n * - `never`: Never display the sign.\n */\n @Prop({ reflect: true })\n signDisplay: 'never' | 'auto' | 'always' | 'exceptZero' = 'auto';\n\n /** Applies styling based on the size provided. If no size is provided, it will display as inline text. */\n @Prop({ reflect: true })\n size: 'small' | 'medium' | 'large';\n\n /** @private Inherited from q2-detail when slotted to match styling of q2-detail and q2-currency texts. */\n @Prop({ reflect: true })\n slotSize: string;\n\n // #endregion\n // #region Component Lifecycle Events\n\n componentWillLoad(): void | Promise<void> {\n this.formatCurrency();\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('amount')\n @Watch('currency')\n @Watch('locale')\n @Watch('size')\n @Watch('slotSize')\n @Watch('signDisplay')\n propsUpdated() {\n this.formatCurrency();\n }\n\n // #endregion\n // #region Local Methods\n\n get amountCore(): string {\n const { formattedParts, shouldSuperscriptFraction } = this;\n let amount: string = '';\n\n for (const part of formattedParts) {\n if (\n part.type === 'integer' ||\n part.type === 'decimal' ||\n part.type === 'group' ||\n part.type === 'literal'\n ) {\n amount += part.value;\n }\n }\n\n // removes trailing decimal point if superscripting the fraction\n if (shouldSuperscriptFraction && amount[amount.length - 1] === '.') amount = amount.slice(0, -1);\n // removes end whitespace that breaks formatting\n amount = amount.trimEnd();\n\n return amount;\n }\n\n get currencyClasses(): string {\n const classes = ['currency'];\n const sizeClass = this.size ? this.size : this.slotSize;\n\n if (!!sizeClass) classes.push(`currency-${sizeClass}`);\n\n return classes.join(' ');\n }\n\n get currencyIsFront(): boolean {\n const index = this.formattedParts.findIndex((part: Intl.NumberFormatPart) => part.type === 'currency');\n if (index === 0 || index === 1) return true;\n return false;\n }\n\n get currencySymbol(): string {\n const { formattedParts, currencyIsFront } = this;\n const currencyIndex = formattedParts.findIndex((part: Intl.NumberFormatPart) => part.type === 'currency');\n const symbol = formattedParts[currencyIndex].value;\n return currencyIsFront ? symbol : ' ' + symbol;\n }\n\n get fraction(): string {\n const { formattedParts } = this;\n const fraction = formattedParts.find((part: Intl.NumberFormatPart) => part.type === 'fraction');\n if (!fraction) return;\n\n return fraction.value;\n }\n\n get hasPlusMinusSign(): boolean {\n return this.formattedParts.some(\n (part: Intl.NumberFormatPart) => part.type === 'minusSign' || part.type === 'plusSign'\n );\n }\n\n get plusMinusSign(): string {\n const { formattedParts, hasPlusMinusSign } = this;\n if (!hasPlusMinusSign) return;\n\n const sign = formattedParts.find(\n (part: Intl.NumberFormatPart) => part.type === 'minusSign' || part.type === 'plusSign'\n );\n return sign.value;\n }\n\n get shouldSuperscriptFraction(): boolean {\n const fractionIndex = this.formattedParts.findIndex((part: Intl.NumberFormatPart) => part.type === 'fraction');\n const commaBeforeFraction = this.formattedParts[fractionIndex - 1].value === ',';\n\n if (commaBeforeFraction || !this.currencyIsFront || this.sizeValue === 'small' || !this.sizeProvided)\n return false;\n\n return true;\n }\n\n get shouldSuperscriptSymbol(): boolean {\n if (!this.currencyIsFront || this.sizeProvided) return true;\n\n return false;\n }\n\n get sizeProvided(): boolean {\n return !!this.size || !!this.slotSize;\n }\n\n get sizeValue(): string {\n return this.size ? this.size : this.slotSize;\n }\n\n formatCurrency() {\n const formatOptions = new Intl.NumberFormat(this.locale, {\n style: 'currency',\n currency: this.currency,\n signDisplay: this.signDisplay,\n });\n this.formattedParts = formatOptions.formatToParts(this.amount);\n this.readableCurrency = formatOptions.format(this.amount);\n }\n\n // #endregion\n // #region Render Methods\n\n render() {\n const {\n hasPlusMinusSign,\n plusMinusSign,\n currencyIsFront,\n currencySymbol,\n shouldSuperscriptSymbol,\n amountCore,\n fraction,\n shouldSuperscriptFraction,\n readableCurrency,\n currencyClasses,\n } = this;\n\n return (\n <div\n class={currencyClasses}\n aria-label={readableCurrency}\n >\n {hasPlusMinusSign && <span>{plusMinusSign}</span>}\n {currencyIsFront && <span class={shouldSuperscriptSymbol ? 'superscript' : ''}>{currencySymbol}</span>}\n <span>{amountCore}</span>\n <span class={shouldSuperscriptFraction ? 'superscript' : ''}>{fraction}</span>\n {!currencyIsFront && <span class={shouldSuperscriptSymbol ? 'superscript' : ''}>{currencySymbol}</span>}\n </div>\n );\n }\n\n // #endregion\n}\n"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{r as e,h as t,g as i}from"./p-a5f18e27.js";import{e as s}from"./p-15ac45d6.js";const o="*{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 #0066cc)}: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}*{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 #0066cc)}: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([bordered]:not([bordered=false])) ::slotted(q2-item:not(:last-child)),:host([bordered]:not([bordered=false])) .header{border-style:var(--tct-list-item-border-style, solid);border-width:var(--tct-list-item-border-width, 0 0 1px 0);border-color:var(--tct-list-item-border-color, var(--t-gray-12, #d9d9d9))}::slotted(q2-item){--comp-item-padding:var(--tct-list-item-padding, var(--app-scale-2x, 10px) var(--app-scale-4x, 20px));--tct-item-padding:var(--comp-item-padding)}.header{--comp-default-header-padding:0 var(--app-scale-4x, 20px);display:flex;gap:var(--app-scale-3x, 12px);padding:var(--tct-list-header-padding, var(--comp-default-header-padding));min-height:var(--tct-list-header-min-height, var(--t-list-header-min-height, 44px))}.header-spacebetween{justify-content:space-between}.header-start{justify-content:flex-start}.header-end{justify-content:flex-end}.header .label{width:100%;height:var(--tct-list-label-height, 44px);line-height:var(--tct-list-label-line-height, 44px);font-size:var(--tct-list-label-font-size, var(--app-font-size, 14px));font-weight:var(--tct-list-label-font-weight, 600);color:var(--tct-list-label-font-color, var(--t-text, #4d4d4d))}";const r=o;const n=class{constructor(t){e(this,t);this.scheduledAfterRender=[];this.onMutationObserved=()=>{this.renderTrigger+=1;this.scheduledAfterRender.push((()=>{Array.from(this.hostElement.children).forEach((e=>{if(e.tagName==="Q2-ITEM")e.role="listitem"}))}))};this.renderTrigger=0;this.bordered=undefined;this.label=undefined}disconnectedCallback(){if(this.mutationObserver){this.mutationObserver.disconnect();this.mutationObserver=null}}componentDidLoad(){if(typeof MutationObserver==="undefined")return;const e=new MutationObserver(this.onMutationObserved);e.observe(this.hostElement,{childList:true,subtree:true});this.mutationObserver=e;this.onMutationObserved()}componentDidRender(){this.scheduledAfterRender.forEach((e=>e()));this.scheduledAfterRender=[]}get hasFilterSlot(){return!!this.hostElement.querySelector("q2-pill")||s(this.hostElement,"pill")}get hasLabelContent(){return!!this.label}get headerClasses(){const e=["header"];if(this.hasLabelContent&&this.hasFilterSlot){e.push("header-spacebetween")}else if(this.hasLabelContent&&!this.hasFilterSlot){e.push("header-start")}else if(!this.hasLabelContent&&this.hasFilterSlot){e.push("header-end")}return e.join(" ")}get listClasses(){const e=["list"];return e.join(" ")}render(){return t("div",{key:"f6b93c87dbc86ff0522ef0827e3f60f9b28993e3",class:this.listClasses,ref:e=>this.listElement=e},(this.hasFilterSlot||this.hasLabelContent)&&t("div",{key:"39973ea29515746cbf0ce22029084b0530ae5af6",class:this.headerClasses},t("div",{key:"bcd3fb06ee6879f3b0558301b7d9ff31699be9b6",class:"label"},this.label),this.hasFilterSlot&&t("slot",{key:"9229cd8da2c0c362627e9ee7e8f04cddbc3f26a2",name:"filter"})),t("div",{key:"e1ee3f55a2b896770e1041239e70a91df434cc68",role:"list"},t("slot",{key:"0c621e0bd3d9ee7382754f8be92231983bc91562"})))}get hostElement(){return i(this)}};n.style=r;export{n as q2_list};
2
- //# sourceMappingURL=p-490ef8e5.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["q2ListCss","Q2ListStyle0","Q2List","this","scheduledAfterRender","onMutationObserved","renderTrigger","push","Array","from","hostElement","children","forEach","child","tagName","role","disconnectedCallback","mutationObserver","disconnect","componentDidLoad","MutationObserver","observer","observe","childList","subtree","componentDidRender","fn","hasFilterSlot","querySelector","hasSlotContent","hasLabelContent","label","headerClasses","classes","join","listClasses","render","h","key","class","ref","el","listElement","name"],"sources":["src/components/q2-list/q2-list.scss?tag=q2-list&encapsulation=shadow","src/components/q2-list/q2-list.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions';\n@import '../q2-btn/q2-btn-mixins';\n\n:host([bordered]:not([bordered='false'])) {\n ::slotted(q2-item:not(:last-child)),\n .header {\n border-style: var-list(--tct-list-item-border-style, solid);\n border-width: var-list(--tct-list-item-border-width, unquote('0 0 1px 0'));\n border-color: var-list(--tct-list-item-border-color, --t-gray-12, #d9d9d9);\n }\n}\n\n::slotted(q2-item) {\n --comp-item-padding: #{var-list(\n --tct-list-item-padding,\n unquote('#{var-list(--app-scale-2x, 10px) var-list(--app-scale-4x, 20px)}')\n )};\n --tct-item-padding: var(--comp-item-padding);\n}\n\n.header {\n --comp-default-header-padding: 0 var(--app-scale-4x, 20px);\n display: flex;\n gap: var(--app-scale-3x, 12px);\n padding: var-list(--tct-list-header-padding, --comp-default-header-padding);\n min-height: var-list(var-prefixer(list-header-min-height), 44px);\n &-spacebetween {\n justify-content: space-between;\n }\n &-start {\n justify-content: flex-start;\n }\n &-end {\n justify-content: flex-end;\n }\n .label {\n width: 100%;\n height: var(--tct-list-label-height, 44px);\n line-height: var(--tct-list-label-line-height, 44px);\n font-size: var-list(--tct-list-label-font-size, --app-font-size, 14px);\n font-weight: var(--tct-list-label-font-weight, 600);\n color: var-list(--tct-list-label-font-color, --t-text, #4d4d4d);\n }\n}\n","import { Component, Element, h, State, Prop } from '@stencil/core';\nimport { hasSlotContent } from 'src/utils';\n\n@Component({\n tag: 'q2-list',\n styleUrl: 'q2-list.scss',\n shadow: true,\n})\nexport class Q2List {\n // #region Own Properties\n\n listElement: HTMLDivElement;\n mutationObserver: MutationObserver;\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 renderTrigger: number = 0;\n\n // #endregion\n // #region Public Property API\n\n /** Adds a border between each items */\n @Prop({ mutable: true, reflect: true })\n bordered: boolean;\n\n /** label text on header area */\n @Prop({ reflect: true })\n label: string;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback() {\n if (this.mutationObserver) {\n this.mutationObserver.disconnect();\n this.mutationObserver = null;\n }\n }\n\n componentDidLoad() {\n if (typeof MutationObserver === 'undefined') return;\n const observer = new MutationObserver(this.onMutationObserved);\n observer.observe(this.hostElement, { childList: true, subtree: true });\n this.mutationObserver = observer;\n this.onMutationObserved();\n }\n\n componentDidRender() {\n this.scheduledAfterRender.forEach(fn => fn());\n this.scheduledAfterRender = [];\n }\n\n // #endregion\n // #region Local Methods\n\n get hasFilterSlot() {\n return !!this.hostElement.querySelector('q2-pill') || hasSlotContent(this.hostElement, 'pill');\n }\n\n get hasLabelContent() {\n return !!this.label;\n }\n\n get headerClasses() {\n const classes = ['header'];\n if (this.hasLabelContent && this.hasFilterSlot) {\n classes.push('header-spacebetween');\n } else if (this.hasLabelContent && !this.hasFilterSlot) {\n classes.push('header-start');\n } else if (!this.hasLabelContent && this.hasFilterSlot) {\n classes.push('header-end');\n }\n return classes.join(' ');\n }\n\n get listClasses() {\n const classes = ['list'];\n return classes.join(' ');\n }\n\n onMutationObserved = () => {\n this.renderTrigger += 1;\n this.scheduledAfterRender.push(() => {\n Array.from(this.hostElement.children).forEach(child => {\n if (child.tagName === 'Q2-ITEM') child.role = 'listitem';\n });\n });\n };\n\n // #endregion\n // #region Render Methods\n\n render() {\n return (\n <div\n class={this.listClasses}\n ref={el => (this.listElement = el)}\n >\n {(this.hasFilterSlot || this.hasLabelContent) && (\n <div class={this.headerClasses}>\n <div class=\"label\">{this.label}</div>\n {this.hasFilterSlot && <slot name=\"filter\" />}\n </div>\n )}\n <div role=\"list\">\n <slot />\n </div>\n </div>\n );\n }\n\n // #endregion\n}\n"],"mappings":"sFAAA,MAAMA,EAAY,y8EAClB,MAAAC,EAAeD,E,MCOFE,EAAM,M,yBAKfC,KAAAC,qBAAuC,GA4EvCD,KAAAE,mBAAqB,KACjBF,KAAKG,eAAiB,EACtBH,KAAKC,qBAAqBG,MAAK,KAC3BC,MAAMC,KAAKN,KAAKO,YAAYC,UAAUC,SAAQC,IAC1C,GAAIA,EAAMC,UAAY,UAAWD,EAAME,KAAO,UAAU,GAC1D,GACJ,E,mBAtEkB,E,6CAgBxB,oBAAAC,GACI,GAAIb,KAAKc,iBAAkB,CACvBd,KAAKc,iBAAiBC,aACtBf,KAAKc,iBAAmB,I,EAIhC,gBAAAE,GACI,UAAWC,mBAAqB,YAAa,OAC7C,MAAMC,EAAW,IAAID,iBAAiBjB,KAAKE,oBAC3CgB,EAASC,QAAQnB,KAAKO,YAAa,CAAEa,UAAW,KAAMC,QAAS,OAC/DrB,KAAKc,iBAAmBI,EACxBlB,KAAKE,oB,CAGT,kBAAAoB,GACItB,KAAKC,qBAAqBQ,SAAQc,GAAMA,MACxCvB,KAAKC,qBAAuB,E,CAMhC,iBAAIuB,GACA,QAASxB,KAAKO,YAAYkB,cAAc,YAAcC,EAAe1B,KAAKO,YAAa,O,CAG3F,mBAAIoB,GACA,QAAS3B,KAAK4B,K,CAGlB,iBAAIC,GACA,MAAMC,EAAU,CAAC,UACjB,GAAI9B,KAAK2B,iBAAmB3B,KAAKwB,cAAe,CAC5CM,EAAQ1B,KAAK,sB,MACV,GAAIJ,KAAK2B,kBAAoB3B,KAAKwB,cAAe,CACpDM,EAAQ1B,KAAK,e,MACV,IAAKJ,KAAK2B,iBAAmB3B,KAAKwB,cAAe,CACpDM,EAAQ1B,KAAK,a,CAEjB,OAAO0B,EAAQC,KAAK,I,CAGxB,eAAIC,GACA,MAAMF,EAAU,CAAC,QACjB,OAAOA,EAAQC,KAAK,I,CAexB,MAAAE,GACI,OACIC,EAAA,OAAAC,IAAA,2CACIC,MAAOpC,KAAKgC,YACZK,IAAKC,GAAOtC,KAAKuC,YAAcD,IAE7BtC,KAAKwB,eAAiBxB,KAAK2B,kBACzBO,EAAA,OAAAC,IAAA,2CAAKC,MAAOpC,KAAK6B,eACbK,EAAA,OAAAC,IAAA,2CAAKC,MAAM,SAASpC,KAAK4B,OACxB5B,KAAKwB,eAAiBU,EAAA,QAAAC,IAAA,2CAAMK,KAAK,YAG1CN,EAAA,OAAAC,IAAA,2CAAKvB,KAAK,QACNsB,EAAA,QAAAC,IAAA,8C"}
@@ -1,2 +0,0 @@
1
- import{r as t,c as e,h as i,g as n}from"./p-a5f18e27.js";import{m as s,o as a,i as r,n as o,l as c}from"./p-15ac45d6.js";const d="*{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 #0066cc)}: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:block;background:var(--tct-section-background, var(--tct-section-background-color, var(--t-section-background-color, var(--tct-section-bg, var(--t-section-bg, var(--app-white, #ffffff))))));color:var(--tct-section-font-color, var(--t-section-font-color, var(--t-text, #4d4d4d)));border-radius:var(--tct-section-border-radius, var(--t-section-border-radius, var(--app-border-radius-1, 4px)));margin:var(--tct-section-margin, var(--t-section-margin, var(--app-scale-3x, 15px)));border-width:var(--tct-section-border-width, 0);border-style:var(--tct-section-border-style, solid);border-color:var(--tct-section-border-color, none)}@media screen and (max-width: 767px){:host{--comp-default-margin:var(--app-scale-3x, 15px) 0;margin:var(--tct-section-margin, var(--t-section-margin, var(--comp-default-margin)))}}@media print{:host{--comp-default-print-margin:var(--app-scale-3x, 15px) 0;margin:var(--tct-section-print-margin, var(--comp-default-print-margin))}}.wrapper{--comp-tween:var(--tct-section-tween, var(--t-section-tween, var(--app-tween-1, 0.2s ease)));--comp-default-wrapper-padding:var(--app-scale-1x, 5px) 0;display:block;padding:var(--tct-section-wrapper-padding, var(--t-section-wrapper-padding, var(--comp-default-wrapper-padding)))}.wrapper:hover{box-shadow:var(--tct-section-wrapper-hover-box-shadow, var(--t-section-wrapper-hover-box-shadow, inherit))}:host([collapsible]) .wrapper{--comp-tween:var(--tct-section-tween, var(--t-section-tween, var(--app-tween-2, 0.4s ease)))}header{--comp-default-header-padding:0 var(--app-scale-3x, 15px);padding:var(--tct-section-header-padding, var(--t-section-header-padding, var(--comp-default-header-padding)));display:flex}@media print{header{padding:var(--tct-section-header-print-padding, 0)}}header.has-header{min-height:var(--tct-section-header-min-height, var(--t-section-header-min-height, 44px))}.header-content{flex:1 1 100%;min-width:0;align-self:center}:host([collapsible]) .header-content{cursor:pointer}.title{margin:var(--tct-section-title-margin, 0);font-size:var(--tct-section-title-font-size, 20px);font-weight:var(--tct-section-title-font-weight, 600);text-transform:var(--tct-section-title-text-transform, none);letter-spacing:var(--tct-section-title-letter-spacing, 0.5px)}q2-icon{transition:transform var(--comp-tween)}:host(:not([expanded])) q2-icon,:host([expanded=false]) q2-icon{transform:rotate(180deg)}.content-wrapper{height:auto}.content-wrapper.is-closed{display:none;overflow:hidden}.content-wrapper.is-transitioning{overflow:hidden}:host([collapsible]) .content-wrapper{transition:height var(--comp-tween)}.content{--comp-default-content-padding:var(--app-scale-2x, 10px) var(--app-scale-3x, 15px);padding:var(--tct-section-content-padding, var(--t-section-content-padding, var(--comp-default-content-padding)))}@media print{.content{padding:var(--tct-section-content-print-padding, 0)}}.content:focus{box-shadow:none}:host([collapsible]) :host(:not([expanded])) .content{visibility:hidden}";const h=d;const p=class{constructor(i){t(this,i);this.change=e(this,"change",7);this.contentId="content";this.titleId="title";this.addContentSlotListener=()=>{if(this.contentSlot){this.contentSlot.addEventListener("slotchange",s);return}const t=new MutationObserver(s);t.observe(this.contentContainer,{childList:true,subtree:true});this.contentSlotMutationObserver=t};this.addHeaderSlotListener=()=>{if(this.headerSlot){this.headerSlot.addEventListener("slotchange",this.onHeaderSlotChange);return}const t=new MutationObserver(this.onHeaderSlotChange);t.observe(this.headerSlotWrapper,{childList:true});this.headerSlotMutationObserver=t};this.clearResizeInterval=()=>{this.resizerFn&&clearInterval(this.resizerFn)};this.onHeaderClick=()=>{this.change.emit({expanded:!this.expanded})};this.onHeaderSlotChange=()=>{const t=!!this.hostElement.querySelector('[slot="q2-section-header"]');if(this.hasYieldedHeader!==t){this.hasYieldedHeader=!!t}};this.onTransitionEnd=()=>{if(this.expanded){this.contentHeight=undefined}else{this.hideContent=true}setTimeout((()=>{this.clearResizeInterval()}),1e3)};this.removeContentSlotListener=()=>{if(this.contentSlot){this.contentSlot.removeEventListener("slotchange",s);return}this.contentSlotMutationObserver.disconnect()};this.removeHeaderSlotListener=()=>{if(this.headerSlot){this.headerSlot.removeEventListener("slotchange",this.onHeaderSlotChange);return}this.headerSlotMutationObserver.disconnect()};this.contentHeight=undefined;this.hasYieldedHeader=false;this.hideContent=false;this.collapsible=undefined;this.expanded=undefined;this.label=undefined;this.noCollapseIcon=undefined}disconnectedCallback(){this.removeHeaderSlotListener();this.removeContentSlotListener()}componentWillLoad(){this.onHeaderSlotChange();const{collapsible:t,expanded:e}=this;this.contentHeight=t&&e?undefined:"0px";this.hideContent=!e}componentDidLoad(){this.addHeaderSlotListener();this.addContentSlotListener();a(this.hostElement)}defaultChangeHandler(t){if(t.target===this.hostElement&&!this.hostElement.onchange&&!!t.detail){this.expanded=t.detail.expanded}}delegateFocus(t){if(!r(t,this.hostElement))return;this.contentContainer.focus()}collapsibleObserver(){this.contentHeight=this.currentHeight}async expandedObserver(t){this.clearResizeInterval();this.resizerFn=setInterval(s,5);if(t){this.expandSection()}else{this.collapseSection()}}async collapse(){if(!this.collapsible||!this.expanded)return;const t=this.hostElement.shadowRoot.querySelector('[test-id="toggleButton"]');t===null||t===void 0?void 0:t.click()}async expand(){if(!this.collapsible||this.expanded)return;const t=this.hostElement.shadowRoot.querySelector('[test-id="toggleButton"]');t===null||t===void 0?void 0:t.click()}get contentContainerHeight(){return`${this.contentContainer.offsetHeight||0}px`}get currentHeight(){const{collapsible:t,expanded:e}=this;if(!t){return null}else if(e){return this.contentContainerHeight}else{return"0"}}async collapseSection(){this.contentHeight=this.contentContainerHeight;await o((()=>{this.contentHeight=this.currentHeight}))}async expandSection(){this.hideContent=false;await o((()=>{this.contentHeight=this.currentHeight}))}render(){const t=this.label||this.hasYieldedHeader;const e=["content-wrapper"];const{collapsible:n,hideContent:s,contentHeight:a}=this;if(n){if(s)e.push("is-closed");else if(a)e.push("is-transitioning")}const r=!this.hasYieldedHeader&&!!this.label;return i("section",{key:"994cfe09abd1a9d8220ca4017cb4003ae1e2cf39",class:"wrapper"},i("header",{key:"56a44ef98988748508c673bd3725887a1743a99b",class:t?"has-header":""},i("div",{key:"03cc85008637fe3de375d223de79ac59c6b6ba64",class:"header-content",id:this.titleId,onClick:this.collapsible&&this.onHeaderClick},r&&i("h2",{key:"69c2119b393e0b3f02392686ec49835273a9ebcb",class:"title"},c(this.label)),i("div",{key:"62a92b25033d9c9709a680b05becc2a48779197c",ref:t=>this.headerSlotWrapper=t,class:"header-slot-wrapper"},i("slot",{key:"f5b2dbc68e33d01f31845bdbfb429e0a18a5e174",ref:t=>this.headerSlot=t,name:"q2-section-header"}))),this.collapsible&&!this.noCollapseIcon&&i("q2-btn",{key:"1983d339de073ca38b6879fca9d96fbe4648e533",label:c(this.label||"tecton.element.section.defaultToggleLabel"),ariaExpanded:`${!!this.expanded}`,ariaControls:this.contentId,"test-id":"toggleButton","hide-label":true,onClick:this.onHeaderClick},i("q2-icon",{key:"de36065a7fdeb1c381184304e4ed679f27d4f771",type:"chevron-up"}))),i("div",{key:"e681760db4a6551d03ded78c25ab24257b6eaf0b",class:e.join(" "),id:this.contentId,"aria-labelledby":this.titleId,role:"region",onTransitionEnd:this.onTransitionEnd,style:this.collapsible&&{height:this.contentHeight}},i("div",{key:"004500e012e4eb718f7e018c20a0cc3590b9ebce",ref:t=>this.contentContainer=t,class:"content",tabindex:"-1"},i("slot",{key:"f83f550c26a3f36d2a72c777a9f904a3774e963f",ref:t=>this.contentSlot=t}))))}get hostElement(){return n(this)}static get watchers(){return{collapsible:["collapsibleObserver"],expanded:["expandedObserver"]}}};p.style=h;export{p as q2_section};
2
- //# sourceMappingURL=p-4e10550d.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["q2SectionCss","Q2SectionStyle0","Q2Section","this","contentId","titleId","addContentSlotListener","contentSlot","addEventListener","resizeIframe","observer","MutationObserver","observe","contentContainer","childList","subtree","contentSlotMutationObserver","addHeaderSlotListener","headerSlot","onHeaderSlotChange","headerSlotWrapper","headerSlotMutationObserver","clearResizeInterval","resizerFn","clearInterval","onHeaderClick","change","emit","expanded","hasSlotContent","hostElement","querySelector","hasYieldedHeader","onTransitionEnd","contentHeight","undefined","hideContent","setTimeout","removeContentSlotListener","removeEventListener","disconnect","removeHeaderSlotListener","disconnectedCallback","componentWillLoad","collapsible","componentDidLoad","overrideFocus","defaultChangeHandler","event","target","onchange","detail","delegateFocus","isEventFromElement","focus","collapsibleObserver","currentHeight","expandedObserver","setInterval","expandSection","collapseSection","collapse","btn","shadowRoot","click","expand","contentContainerHeight","offsetHeight","nextPaint","render","hasHeader","label","wrapperClasses","push","showDefaultHeader","h","key","class","id","onClick","loc","ref","el","name","noCollapseIcon","ariaExpanded","ariaControls","type","join","role","style","height","tabindex"],"sources":["src/components/q2-section/q2-section.scss?tag=q2-section&encapsulation=shadow","src/components/q2-section/q2-section.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions.scss';\n\n:host {\n display: block;\n background: var-list(\n --tct-section-background,\n var-prefixer(section-background-color),\n var-prefixer(section-bg),\n --app-white,\n #ffffff\n );\n color: var-list(var-prefixer(section-font-color), --t-text, #4d4d4d);\n border-radius: var-list(var-prefixer(section-border-radius), --app-border-radius-1, 4px);\n margin: var-list(var-prefixer(section-margin), --app-scale-3x, 15px);\n border-width: var-list(--tct-section-border-width, 0);\n border-style: var-list(--tct-section-border-style, solid);\n border-color: var-list(--tct-section-border-color, none);\n\n @media screen and (max-width: 767px) {\n --comp-default-margin: var(--app-scale-3x, 15px) 0;\n margin: var-list(var-prefixer(section-margin), --comp-default-margin);\n }\n\n @media print {\n --comp-default-print-margin: var(--app-scale-3x, 15px) 0;\n margin: var-list(--tct-section-print-margin, --comp-default-print-margin);\n }\n}\n\n.wrapper {\n --comp-tween: #{var-list(var-prefixer(section-tween), --app-tween-1, unquote('0.2s ease'))};\n --comp-default-wrapper-padding: var(--app-scale-1x, 5px) 0;\n display: block;\n padding: var-list(var-prefixer(section-wrapper-padding), --comp-default-wrapper-padding);\n\n &:hover {\n box-shadow: var-list(var-prefixer(section-wrapper-hover-box-shadow), inherit);\n }\n\n :host([collapsible]) & {\n --comp-tween: #{var-list(var-prefixer(section-tween), --app-tween-2, unquote('0.4s ease'))};\n }\n}\n\nheader {\n --comp-default-header-padding: 0 var(--app-scale-3x, 15px);\n padding: var-list(var-prefixer(section-header-padding), --comp-default-header-padding);\n display: flex;\n\n @media print {\n padding: var-list(--tct-section-header-print-padding, 0);\n }\n\n &.has-header {\n min-height: var-list(var-prefixer(section-header-min-height), 44px);\n }\n}\n\n.header-content {\n flex: 1 1 100%;\n min-width: 0;\n align-self: center;\n\n :host([collapsible]) & {\n cursor: pointer;\n }\n}\n\n.title {\n margin: var-list(--tct-section-title-margin, 0);\n font-size: var-list(--tct-section-title-font-size, 20px);\n font-weight: var-list(--tct-section-title-font-weight, 600);\n text-transform: var-list(--tct-section-title-text-transform, none);\n letter-spacing: var-list(--tct-section-title-letter-spacing, 0.5px);\n}\n\nq2-icon {\n transition: transform var(--comp-tween);\n\n :host(:not([expanded])) &,\n :host([expanded='false']) & {\n transform: rotate(180deg);\n }\n}\n\n.content-wrapper {\n height: auto;\n\n &.is-closed {\n display: none;\n overflow: hidden;\n }\n\n &.is-transitioning {\n overflow: hidden;\n }\n\n :host([collapsible]) & {\n transition: height var(--comp-tween);\n }\n}\n\n.content {\n --comp-default-content-padding: var(--app-scale-2x, 10px) var(--app-scale-3x, 15px);\n padding: var-list(var-prefixer(section-content-padding), --comp-default-content-padding);\n\n @media print {\n padding: var-list(--tct-section-content-print-padding, 0);\n }\n\n &:focus {\n box-shadow: none;\n }\n\n :host([collapsible]) :host(:not([expanded])) & {\n visibility: hidden;\n }\n}\n","import {\n Component,\n ComponentInterface,\n Prop,\n Element,\n Listen,\n State,\n Watch,\n h,\n Event,\n EventEmitter,\n Method,\n} from '@stencil/core';\nimport { isEventFromElement, loc, nextPaint, overrideFocus, resizeIframe } from 'src/utils';\n\n@Component({ tag: 'q2-section', shadow: true, styleUrl: 'q2-section.scss' })\nexport class Q2Section implements ComponentInterface {\n // #region Own Properties\n\n contentContainer: HTMLDivElement;\n contentId: string = 'content';\n contentSlot: HTMLSlotElement;\n contentSlotMutationObserver: MutationObserver;\n headerSlot: HTMLSlotElement;\n headerSlotMutationObserver: MutationObserver;\n headerSlotWrapper: HTMLDivElement;\n resizerFn: NodeJS.Timeout | undefined;\n titleId: string = 'title';\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 contentHeight: string;\n\n @State()\n hasYieldedHeader: boolean = false;\n\n @State()\n hideContent: boolean = false;\n\n // #endregion\n // #region Public Property API\n\n /** Determines if the section is collapsible. */\n @Prop({ reflect: true })\n collapsible: boolean;\n\n /** Indicates if the `q2-section` is in an expanded state or not. */\n @Prop({ reflect: true, mutable: true })\n expanded: boolean;\n\n /**\n * The text to display above the `q2-section`. Renders as an `<h2>` element.\n *\n * It is also used to provided an `aria-label` for the toggle button when the component is collapsible.\n *\n * @warning\n * If you are providing a custom header, setting this property is still strongly encouraged for the purposes of\n * accessibility.\n */\n @Prop({ reflect: true })\n label: string;\n\n /** Determines if the collapse chevron icon should show in the `q2-section` header. */\n @Prop({ reflect: true })\n noCollapseIcon: boolean;\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when the section is expanded or collapsed.\n * @legacyEvent\n */\n @Event()\n change: EventEmitter<{ expanded: boolean }>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback() {\n this.removeHeaderSlotListener();\n this.removeContentSlotListener();\n }\n\n componentWillLoad() {\n this.onHeaderSlotChange();\n const { collapsible, expanded } = this;\n this.contentHeight = collapsible && expanded ? undefined : '0px';\n this.hideContent = !expanded;\n }\n\n componentDidLoad() {\n this.addHeaderSlotListener();\n this.addContentSlotListener();\n overrideFocus(this.hostElement);\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('change')\n defaultChangeHandler(event: CustomEvent) {\n if (event.target === this.hostElement && !this.hostElement.onchange && !!event.detail) {\n this.expanded = event.detail.expanded;\n }\n }\n\n @Listen('focus')\n delegateFocus(event: FocusEvent) {\n if (!isEventFromElement(event, this.hostElement)) return;\n this.contentContainer.focus();\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('collapsible')\n collapsibleObserver() {\n this.contentHeight = this.currentHeight;\n }\n\n @Watch('expanded')\n async expandedObserver(expanded: boolean) {\n this.clearResizeInterval();\n this.resizerFn = setInterval(resizeIframe, 5);\n\n if (expanded) {\n this.expandSection();\n } else {\n this.collapseSection();\n }\n }\n\n // #endregion\n // #region Test Methods API\n\n /**\n * A test method to collapse section.\n *\n * @testOnly\n */\n @Method()\n async collapse() {\n if (!this.collapsible || !this.expanded) return;\n const btn = this.hostElement.shadowRoot.querySelector('[test-id=\"toggleButton\"]');\n (btn as HTMLQ2BtnElement)?.click();\n }\n\n /**\n * A test method to expand section.\n *\n * @testOnly\n */\n @Method()\n async expand() {\n if (!this.collapsible || this.expanded) return;\n const btn = this.hostElement.shadowRoot.querySelector('[test-id=\"toggleButton\"]');\n (btn as HTMLQ2BtnElement)?.click();\n }\n\n // #endregion\n // #region Local Methods\n\n get contentContainerHeight() {\n return `${this.contentContainer.offsetHeight || 0}px`;\n }\n\n get currentHeight() {\n const { collapsible, expanded } = this;\n if (!collapsible) {\n return null;\n } else if (expanded) {\n return this.contentContainerHeight;\n } else {\n return '0';\n }\n }\n\n addContentSlotListener = () => {\n if (this.contentSlot) {\n this.contentSlot.addEventListener('slotchange', resizeIframe);\n return;\n }\n\n const observer = new MutationObserver(resizeIframe);\n observer.observe(this.contentContainer, { childList: true, subtree: true });\n this.contentSlotMutationObserver = observer;\n };\n\n addHeaderSlotListener = () => {\n if (this.headerSlot) {\n this.headerSlot.addEventListener('slotchange', this.onHeaderSlotChange);\n return;\n }\n\n const observer = new MutationObserver(this.onHeaderSlotChange);\n observer.observe(this.headerSlotWrapper, { childList: true });\n this.headerSlotMutationObserver = observer;\n };\n\n clearResizeInterval = () => {\n this.resizerFn && clearInterval(this.resizerFn);\n };\n\n async collapseSection() {\n this.contentHeight = this.contentContainerHeight;\n await nextPaint(() => {\n this.contentHeight = this.currentHeight;\n });\n }\n\n async expandSection() {\n this.hideContent = false;\n await nextPaint(() => {\n this.contentHeight = this.currentHeight;\n });\n }\n\n onHeaderClick = () => {\n this.change.emit({\n expanded: !this.expanded,\n });\n };\n\n onHeaderSlotChange = () => {\n const hasSlotContent = !!this.hostElement.querySelector('[slot=\"q2-section-header\"]');\n\n if (this.hasYieldedHeader !== hasSlotContent) {\n this.hasYieldedHeader = !!hasSlotContent;\n }\n };\n\n onTransitionEnd = () => {\n if (this.expanded) {\n this.contentHeight = undefined;\n } else {\n this.hideContent = true;\n }\n\n setTimeout(() => {\n // This gives enough time for all values to get passed over\n // Previously, the interval was never cleared and the fn was called indefinitely then filtered\n // Will revisit in TCT-599\n this.clearResizeInterval();\n }, 1000);\n };\n\n removeContentSlotListener = () => {\n if (this.contentSlot) {\n this.contentSlot.removeEventListener('slotchange', resizeIframe);\n return;\n }\n this.contentSlotMutationObserver.disconnect();\n };\n\n removeHeaderSlotListener = () => {\n if (this.headerSlot) {\n this.headerSlot.removeEventListener('slotchange', this.onHeaderSlotChange);\n return;\n }\n\n this.headerSlotMutationObserver.disconnect();\n };\n\n // #endregion\n // #region Render Methods\n\n render() {\n const hasHeader = this.label || this.hasYieldedHeader;\n const wrapperClasses = ['content-wrapper'];\n const { collapsible, hideContent, contentHeight } = this;\n if (collapsible) {\n if (hideContent) wrapperClasses.push('is-closed');\n else if (contentHeight) wrapperClasses.push('is-transitioning');\n }\n\n const showDefaultHeader = !this.hasYieldedHeader && !!this.label;\n\n return (\n <section class=\"wrapper\">\n <header class={hasHeader ? 'has-header' : ''}>\n <div\n class=\"header-content\"\n id={this.titleId}\n onClick={this.collapsible && this.onHeaderClick}\n >\n {showDefaultHeader && <h2 class=\"title\">{loc(this.label)}</h2>}\n <div\n ref={el => (this.headerSlotWrapper = el)}\n class=\"header-slot-wrapper\"\n >\n <slot\n ref={(el: HTMLSlotElement) => (this.headerSlot = el)}\n name=\"q2-section-header\"\n />\n </div>\n </div>\n {this.collapsible && !this.noCollapseIcon && (\n <q2-btn\n label={loc(this.label || 'tecton.element.section.defaultToggleLabel')}\n ariaExpanded={`${!!this.expanded}`}\n ariaControls={this.contentId}\n test-id=\"toggleButton\"\n hide-label\n onClick={this.onHeaderClick}\n >\n <q2-icon type=\"chevron-up\" />\n </q2-btn>\n )}\n </header>\n <div\n class={wrapperClasses.join(' ')}\n id={this.contentId}\n aria-labelledby={this.titleId}\n role=\"region\"\n onTransitionEnd={this.onTransitionEnd}\n style={\n this.collapsible && {\n height: this.contentHeight,\n }\n }\n >\n <div\n ref={el => (this.contentContainer = el)}\n class=\"content\"\n tabindex=\"-1\"\n >\n <slot ref={(el: HTMLSlotElement) => (this.contentSlot = el)} />\n </div>\n </div>\n </section>\n );\n }\n\n // #endregion\n}\n"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{h as e}from"./p-a5f18e27.js";const l={circle:({width:l,additionalClasses:i})=>e("div",{class:`skeleton-shape circle ${i||""}`,style:{width:l,height:l}}),rectangle:({width:l,height:i,borderRadius:d,additionalClasses:t})=>e("div",{class:`skeleton-shape rectangle ${t||""}`,style:{width:l,height:i,borderRadius:d}})};const i={field:()=>e("div",{class:"skeleton-shape field"},e("div",{class:"skeleton-field-label"},l.rectangle({height:"1rem",width:"50%"})),l.rectangle({height:"var(--tct-input-height, 42px)",borderRadius:"3px"})),text:(i,d)=>{var t;const s=(t=i===null||i===void 0?void 0:i[0])!==null&&t!==void 0?t:1;const o=d===null||d===void 0?void 0:d.has("header");const a=(d===null||d===void 0?void 0:d.has("center"))&&"center"||(d===null||d===void 0?void 0:d.has("right"))&&"right"||"left";const n=(d===null||d===void 0?void 0:d.has("smallheader"))?" smaller":"";const r=o?`header ${a}${n}`:"";return e("div",{class:"skeleton-shape text"},o&&l.rectangle({width:"60%",additionalClasses:r}),!!s&&Array(s).fill(undefined).map((()=>l.rectangle({height:"1rem"}))))}};const d={circle:()=>l.circle({width:"100%"}),rectangle:()=>l.rectangle({height:"100%",borderRadius:"var(--tct-border-radius-1, 4px)"}),table:(i,d)=>{var t,s;const o=(t=i===null||i===void 0?void 0:i[0])!==null&&t!==void 0?t:5;const a=(s=i===null||i===void 0?void 0:i[1])!==null&&s!==void 0?s:5;const n=d===null||d===void 0?void 0:d.has("headless");const r=d===null||d===void 0?void 0:d.has("bordered");return e("div",{class:"skeleton-shape table"},!n&&e("div",{class:"skeleton-table-head"},e("div",{class:"skeleton-table-row skeleton-table-header flex"},!!o&&Array(o).fill(undefined).map((()=>l.rectangle({height:"1rem"})))),e("div",{class:"skeleton-table-row-border"},l.rectangle({height:"3px"}))),e("div",{class:"skeleton-table-body"},!!a&&Array(a).fill(undefined).map((()=>e("div",{class:"skeleton-table-row-wrapper"},e("div",{class:"skeleton-table-row flex"},!!o&&Array(o).fill(undefined).map((()=>l.rectangle({height:"1.5rem"})))),r&&e("div",{class:"skeleton-table-row-border"},l.rectangle({height:"1px",additionalClasses:"no-margin"})))))))},field:i.field,form:l=>{var d,t,s;const o=(d=(l===null||l===void 0?void 0:l[1])&&(l===null||l===void 0?void 0:l[0]))!==null&&d!==void 0?d:1;const a=(s=(t=l===null||l===void 0?void 0:l[1])!==null&&t!==void 0?t:l===null||l===void 0?void 0:l[0])!==null&&s!==void 0?s:1;const n=o*a;return e("div",{class:`skeleton-shape form flex columns-${o}`},!!n&&Array(n).fill(undefined).map(i.field))},text:i.text,"detailed-item":(d,t)=>{const s=t===null||t===void 0?void 0:t.has("square");const o=(t===null||t===void 0?void 0:t.has("center"))&&"center"||(t===null||t===void 0?void 0:t.has("right"))&&"right"||"left";return e("div",{class:`skeleton-shape detailed-item flex ${o}`},e("div",{class:`detailed-item-image flex-${o}`},s?l.rectangle({width:"1.5em",height:"1.5em",borderRadius:"3px"}):l.circle({width:"1.5em"})),e("div",{class:`detailed-item-text flex flex-v-center flex-${o}`},e("div",null,i.text(d,t))))},"label-value":i=>{var d;const t=2*((d=i===null||i===void 0?void 0:i[0])!==null&&d!==void 0?d:1);return e("div",{class:"skeleton-shape label-value flex"},!!t&&Array(t).fill(undefined).map((()=>l.rectangle({height:"1rem"}))))}};export{l as a,d as s};
2
- //# sourceMappingURL=p-50b425de.js.map
@@ -1,2 +0,0 @@
1
- import{r as t,h as e,g as r}from"./p-a5f18e27.js";import{c as o,l as a}from"./p-15ac45d6.js";const i="*{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 #0066cc)}: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:block}.q2-optgroup-header{--comp-header-padding:var(--tct-scale-1, var(--app-scale-1x, 5px)) var(--tct-scale-2, var(--app-scale-2x, 10px));background:var(--tct-optgroup-header-background, var(--tct-optgroup-header-bg, var(--t-optgroup-header-bg, var(--tct-gray-13, var(--t-gray-13, var(--tct-gray-l2, var(--app-gray-l2, #e6e6e6)))))));color:var(--tct-optgroup-header-color, inherit);padding:var(--tct-optgroup-header-padding, var(--t-optgroup-header-padding, var(--comp-header-padding)));font-weight:var(--tct-optgroup-header-font-weight, var(--t-optgroup-header-font-weight, 600));text-transform:var(--tct-optgroup-header-text-transform, var(--t-optgroup-header-text-transform, uppercase));position:sticky;top:calc(var(--comp-popover-top-container-height, 0px) + var(--tct-optgroup-top, var(--t-optgroup-top, 0px)));z-index:5}";const s=i;const p=class{constructor(e){t(this,e);this.guid=o();this.setHidden=()=>{this.hidden=this.options.every((t=>t.hidden||t._multiSelectHidden))};this.hidden=false;this.disabled=false;this.label=undefined}disconnectedCallback(){this.mutationObserver.disconnect();this.mutationObserver=null}componentWillLoad(){const t=new MutationObserver(this.setHidden);t.observe(this.hostElement,{childList:true,attributes:true,subtree:true});this.mutationObserver=t;this.setHidden();this.disabledWatcher(this.disabled)}disabledWatcher(t){this.options.forEach((e=>{e.disabledGroup=!!t}))}get headerId(){return`q2-optgroup-header-${this.guid}`}get options(){return Array.from(this.hostElement.querySelectorAll("q2-option"))}render(){return e("div",{key:"2c58c18d1f6d5b7886d12a0c5ae99975912fe41b",class:"q2-optgroup-container",hidden:this.hidden,"aria-labelledby":this.headerId,role:"group"},e("div",{key:"7852309fb1c677c76931f630b6f975379450f5d1",class:"q2-optgroup-header",id:this.headerId},this.label&&a(this.label)||""),e("div",{key:"4481127fec8a882f0bfcaf3d2047ec2f9b4eb059",class:"q2-optgroup-options"},e("slot",{key:"03425c1d351eb91b0956c03ef3584a978578db37"})))}get hostElement(){return r(this)}static get watchers(){return{disabled:["disabledWatcher"]}}};p.style=s;export{p as q2_optgroup};
2
- //# sourceMappingURL=p-50f7328f.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["q2OptgroupCss","Q2OptgroupStyle0","Q2Optgroup","this","guid","createGuid","setHidden","hidden","options","every","opt","_multiSelectHidden","disconnectedCallback","mutationObserver","disconnect","componentWillLoad","observer","MutationObserver","observe","hostElement","childList","attributes","subtree","disabledWatcher","disabled","forEach","disabledGroup","headerId","Array","from","querySelectorAll","render","h","key","class","role","id","label","loc"],"sources":["src/components/q2-optgroup/q2-optgroup.scss?tag=q2-optgroup&encapsulation=shadow","src/components/q2-optgroup/q2-optgroup.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions';\n\n:host {\n display: block;\n}\n\n.q2-optgroup-header {\n --comp-header-padding: #{var-list(--tct-scale-1, --app-scale-1x, 5px) var-list(--tct-scale-2, --app-scale-2x, 10px)};\n background: var-list(\n --tct-optgroup-header-background,\n var-prefixer(optgroup-header-bg),\n --tct-gray-13,\n --t-gray-13,\n --tct-gray-l2,\n --app-gray-l2,\n #e6e6e6\n );\n color: var-list(--tct-optgroup-header-color, inherit);\n padding: var-list(var-prefixer(optgroup-header-padding), --comp-header-padding);\n font-weight: var-list(var-prefixer(optgroup-header-font-weight), 600);\n text-transform: var-list(var-prefixer(optgroup-header-text-transform), uppercase);\n position: sticky;\n top: calc(var(--comp-popover-top-container-height, 0px) + var-list(var-prefixer(optgroup-top), 0px));\n z-index: 5; // Keeps the optgroup over any hover or focus states\n}\n","import { Component, h, ComponentInterface, Prop, Element, Watch, State } from '@stencil/core';\nimport { createGuid, loc } from 'src/utils';\n\n@Component({ tag: 'q2-optgroup', shadow: true, styleUrl: 'q2-optgroup.scss' })\nexport class Q2Optgroup implements ComponentInterface {\n // #region Own Properties\n\n guid: number = createGuid();\n mutationObserver: MutationObserver;\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 hidden: boolean = false;\n\n // #endregion\n // #region Public Property API\n\n /** Serves as the group header text. */\n @Prop({ reflect: true })\n disabled: boolean = false;\n\n /** Determines whether all nested options are disabled. */\n @Prop({ reflect: true })\n label: string;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback() {\n this.mutationObserver.disconnect();\n this.mutationObserver = null;\n }\n\n componentWillLoad() {\n const observer = new MutationObserver(this.setHidden);\n observer.observe(this.hostElement, { childList: true, attributes: true, subtree: true });\n this.mutationObserver = observer;\n\n // set initially\n this.setHidden();\n this.disabledWatcher(this.disabled);\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('disabled')\n disabledWatcher(disabled: boolean) {\n this.options.forEach(opt => {\n opt.disabledGroup = !!disabled;\n });\n }\n\n // #endregion\n // #region Local Methods\n\n get headerId() {\n return `q2-optgroup-header-${this.guid}`;\n }\n\n get options() {\n return Array.from(this.hostElement.querySelectorAll('q2-option'));\n }\n\n setHidden = () => {\n this.hidden = this.options.every(opt => opt.hidden || opt._multiSelectHidden);\n };\n\n // #endregion\n // #region Render Methods\n\n render() {\n return (\n <div\n class=\"q2-optgroup-container\"\n hidden={this.hidden}\n aria-labelledby={this.headerId}\n role=\"group\"\n >\n <div\n class=\"q2-optgroup-header\"\n id={this.headerId}\n >\n {(this.label && loc(this.label)) || ''}\n </div>\n <div class=\"q2-optgroup-options\">\n <slot />\n </div>\n </div>\n );\n }\n\n // #endregion\n}\n"],"mappings":"6FAAA,MAAMA,EAAgB,m+CACtB,MAAAC,EAAeD,E,MCGFE,EAAU,M,yBAGnBC,KAAAC,KAAeC,IAiEfF,KAAAG,UAAY,KACRH,KAAKI,OAASJ,KAAKK,QAAQC,OAAMC,GAAOA,EAAIH,QAAUG,EAAIC,oBAAmB,E,YArD/D,M,cAOE,M,qBASpB,oBAAAC,GACIT,KAAKU,iBAAiBC,aACtBX,KAAKU,iBAAmB,I,CAG5B,iBAAAE,GACI,MAAMC,EAAW,IAAIC,iBAAiBd,KAAKG,WAC3CU,EAASE,QAAQf,KAAKgB,YAAa,CAAEC,UAAW,KAAMC,WAAY,KAAMC,QAAS,OACjFnB,KAAKU,iBAAmBG,EAGxBb,KAAKG,YACLH,KAAKoB,gBAAgBpB,KAAKqB,S,CAO9B,eAAAD,CAAgBC,GACZrB,KAAKK,QAAQiB,SAAQf,IACjBA,EAAIgB,gBAAkBF,CAAQ,G,CAOtC,YAAIG,GACA,MAAO,sBAAsBxB,KAAKC,M,CAGtC,WAAII,GACA,OAAOoB,MAAMC,KAAK1B,KAAKgB,YAAYW,iBAAiB,a,CAUxD,MAAAC,GACI,OACIC,EAAA,OAAAC,IAAA,2CACIC,MAAM,wBACN3B,OAAQJ,KAAKI,OAAM,kBACFJ,KAAKwB,SACtBQ,KAAK,SAELH,EAAA,OAAAC,IAAA,2CACIC,MAAM,qBACNE,GAAIjC,KAAKwB,UAEPxB,KAAKkC,OAASC,EAAInC,KAAKkC,QAAW,IAExCL,EAAA,OAAAC,IAAA,2CAAKC,MAAM,uBACPF,EAAA,QAAAC,IAAA,8C"}
@@ -1,2 +0,0 @@
1
- import{r as t,h as o}from"./p-a5f18e27.js";const i="*{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 #0066cc)}: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(:not([hidden])){display:block;width:100%;--comp-default-btn-group-margin:var(--app-scale-5x, 25px) 0;margin:var(--tct-btn-group-margin, var(--comp-default-btn-group-margin))}.container{width:100%;display:flex;gap:var(--tct-btn-group-gap, var(--app-scale-2x, 10px))}.container.vertical{flex-direction:var(--tct-btn-group-vertical-flex-direction, column)}.container.vertical ::slotted(q2-btn){display:block;width:100%}.container.horizontal{justify-content:var(--tct-btn-group-horizontal-justify-content, flex-start);flex-direction:var(--tct-btn-group-horizontal-flex-direction, row-reverse);align-items:var(--tct-btn-group-horizontal-align-items, center);flex-wrap:var(--tct-btn-group-horizontal-flex-wrap, wrap)}.container.horizontal.full-width{flex-wrap:nowrap}.container.vertical ::slotted(q2-btn),.container.horizontal.full-width ::slotted(q2-btn){display:block;width:100%}";const n=i;const e=class{constructor(o){t(this,o);this.handleResize=t=>{const o=t.detail.entries[0].contentRect.width;const i=this.orientationThreshold>o;this.autoOrientation=i?"vertical":"horizontal"};this.autoOrientation="vertical";this.orientationThreshold=440;this.orientation="auto";this.fullWidth=undefined}render(){const{orientation:t,autoOrientation:i,fullWidth:n}=this;const e=["container"];if(n)e.push("full-width");e.push(t==="auto"?i:t);return o("q2-resize-observer",{key:"c54581213b0dd9ec12bcf95f779c816b551a92ef",onTctResize:this.handleResize,disabled:this.orientation!=="auto"},o("div",{key:"ea09d4fba28775bf9f503e69daa4e0e93b0a7723",class:e.join(" "),role:"group"},o("slot",{key:"0ffaa62bee644b270fecba1c97ef7119e718d376"})))}};e.style=n;export{e as q2_action_group};
2
- //# sourceMappingURL=p-5637c486.entry.js.map
@@ -1,2 +0,0 @@
1
- import{r as t,c as e,h as i,g as s}from"./p-a5f18e27.js";import{l as o,a as l,o as n,q as r,i as a,w as c,t as d}from"./p-15ac45d6.js";import{a as h,s as p}from"./p-b7554a79.js";const u="*{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 #0066cc)}: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}.q2-element-dropdown{display:none;position:absolute;background-color:var(--app-white, #ffffff);color:var(--t-text, #4d4d4d);left:0;width:100%;z-index:100;margin-top:1px;box-shadow:var(--app-shadow-1, 0px 0px 2px rgba(0, 0, 0, 0.12), 0px 2px 4px rgba(0, 0, 0, 0.14));height:0;overflow:hidden;opacity:0;visibility:hidden;transition:opacity var(--app-tween-1, 0.2s ease);border-radius:var(--tct-dropdown-border-radius, --t-dropdown-border-radius, 0);--comp-scrollbar-size:var(--tct-scrollbar-size, var(--t-scrollbar-size, var(--app-scale-1x, 5px)));--comp-scrollbar-border-radius:var(--tct-scrollbar-border-radius, var(--t-scrollbar-border-radius, var(--app-border-radius-1, 4px)));--comp-scrollbar-color:var(--tct-scrollbar-color, var(--t-scrollbar-color, var(--t-a11y-gray-color, #747474)));scrollbar-width:thin;scrollbar-color:var(--comp-scrollbar-color) transparent}.q2-element-dropdown::-webkit-scrollbar{width:var(--comp-scrollbar-size);height:var(--comp-scrollbar-size);margin:5px}.q2-element-dropdown::-webkit-scrollbar-thumb{background:var(--comp-scrollbar-color);border-radius:var(--comp-scrollbar-border-radius)}.q2-element-dropdown::-webkit-scrollbar-track{background:transparent;border-radius:var(--comp-scrollbar-border-radius)}.q2-element-dropdown.sizable{display:block;height:auto}.dropdown-open .q2-element-dropdown{display:block;height:auto;overflow:auto;opacity:1;visibility:visible}:host([alignment=right]) .q2-element-dropdown{left:auto;right:0}:host([block]) q2-btn,:host([block]){display:block}:host{--comp-select-margin:var(--tct-select-margin, var(--tct-select-margin-top, var(--t-select-margin-top, var(--app-scale-4, 30px))) 0 var(--tct-select-margin-bottom, var(--t-select-margin-bottom, var(--app-scale-4, 30px))));display:block;margin:var(--comp-select-margin)}.q2-select-container{position:relative;display:block}.q2-select-input{margin:0;--tct-input-min-height:var(--tct-select-input-min-height, var(--t-select-input-min-height));--tct-input-max-height:var(--tct-select-input-max-height, var(--t-select-input-max-height, none))}::slotted([slot=_selected-display]){width:100%;min-height:var(--comp-selected-display-height, 44px)}.custom-display-content{position:absolute;bottom:0;left:calc(var(--tct-scale-2, var(--app-scale-2x, 10px)) + 1px);height:44px;width:calc(100% - 34px - var(--tct-scale-3, var(--app-scale-3x, 15px)));overflow:hidden;cursor:pointer;transition:left var(--tct-tween-2, var(--app-tween-1, 0.2s ease))}.custom-display-content:not([hidden]){display:flex;align-items:center}.is-searchable.is-focused .custom-display-content,.is-searchable .custom-display-content:active{left:calc(var(--tct-scale-3, var(--app-scale-3x, 15px)) + 1px)}.has-error .custom-display-content{width:calc(100% - 68px - var(--tct-scale-3, var(--app-scale-3x, 15px)))}.popover-content{display:flex;flex-direction:column-reverse}.popover-bottom-container{position:sticky;bottom:0;z-index:5}.popover-top-container{position:sticky;top:0;z-index:5}.popover-top-container .multi-select-header{padding:var(--tct-scale-2, var(--app-scale-2x, 10px)) var(--tct-scale-2, var(--app-scale-2x, 10px));background:var(--app-white);display:flex;gap:var(--app-scale-2x, 10px);align-items:center}.popover-top-container .multi-select-header fieldset{margin:0;padding:0;border:0;display:flex;gap:var(--app-scale-2x, 10px)}.popover-top-container .multi-select-header legend{padding:0;float:left}.popover-top-container .multi-select-header label{cursor:pointer;padding:var(--tct-select-multi-select-option-padding, var(--t-select-multi-select-option-padding, var(--tct-btn-badge-padding, var(--t-btn-badge-padding, 2px 5px))));font-size:var(--tct-select-multi-select-option-font-size, var(--t-select-multi-select-option-font-size, var(--tct-btn-badge-font-size, var(--t-btn-badge-font-size, inherit))));border-radius:var(--tct-select-multi-select-option-radius, var(--t-select-multi-select-option-radius, var(--tct-btn-badge-border-radius, var(--t-btn-badge-border-radius, var(--app-border-radius-1, 4px)))));background:var(--tct-select-multi-select-option-background, var(--tct-select-multi-select-option-bg, var(--t-select-multi-select-option-bg, var(--tct-badge-background, var(--tct-btn-badge-bg, var(--t-btn-badge-bg, transparent))))));color:var(--tct-select-multi-select-option-color, var(--t-select-multi-select-option-color, var(--tct-btn-badge-font-color, var(--t-btn-badge-font-color, inherit))))}.popover-top-container .multi-select-header label:hover{background:var(--tct-select-multi-select-option-hover-background, var(--tct-select-multi-select-option-hover-background-color, var(--t-select-multi-select-option-hover-background-color, var(--tct-btn-badge-hover-bg, var(--t-btn-badge-hover-bg, var(--tct-gray-14, var(--t-gray-14, var(--app-gray-l3, #f2f2f2))))))));color:var(--tct-select-multi-select-option-hover-color, var(--tct-select-multi-select-option-color, var(--t-select-multi-select-option-color, var(--tct-btn-badge-hover-font-color, var(--t-btn-badge-hover-font-color, var(--tct-gray-5, var(--t-gray-5, var(--app-gray-d2, #404040))))))))}.popover-top-container .multi-select-header input:checked+label,.popover-top-container .multi-select-header input:checked+label:enabled:hover{background:var(--tct-select-multi-select-option-active-background, var(--tct-select-multi-select-option-active-background-color, var(--t-select-multi-select-option-active-background-color, var(--tct-btn-primary-bg, var(--t-btn-primary-bg, #2e2e2e)))));color:var(--tct-select-multi-select-option-active-color, var(--t-select-multi-select-option-active-color, var(--tct-btn-primary-font-color, var(--t-btn-primary-font-color, var(--app-white, #ffffff)))))}.popover-top-container .multi-select-header input:disabled+label{opacity:var(--tct-select-multi-select-option-disabled-opacity, var(--t-select-multi-select-option-disabled-opacity, var(--tct-btn-disabled-opacity, var(--t-btn-disabled-opacity, var(--app-disabled-opacity, 0.4)))));cursor:not-allowed}.popover-top-container .multi-select-header input:focus+label{box-shadow:var(--const-double-focus-ring)}";const v=u;const b=class{constructor(i){t(this,i);this.change=e(this,"change",7);this.input=e(this,"input",7);var s;this.scheduledAfterRender=[];this.clickedElsewhere=t=>{const e=t.target;if(e.localName!=="click-elsewhere")return;t.stopPropagation()};this.inputBlurHandler=()=>{this.inputFocused=false};this.inputChangeHandler=t=>{t.stopPropagation()};this.inputClickHandler=async t=>{t.stopPropagation();if(h(this)){return this.executeActionSheet(t)}this.toggleDropdown();this.focusInput()};this.inputFocusHandler=()=>{this.inputFocused=true};this.inputInputHandler=t=>{t.stopPropagation();const e=t.detail.value;const i=!!this.value;if(i)this.clearValue();if(!this.open)this.openDropdownWithoutActiveElement();this.prioritizeSearch=true;this.searchText=e;this.input.emit({query:e})};this.inputKeydownHandler=t=>{if(this.readonly||this.disabled)return;const{key:e,shiftKey:i}=t;const s=e==="Tab"&&i;const o=this.hasPopoverTop||this.hasPopoverBottom;if(o&&(e==="Tab"||s))return;if(h(this,t)&&!o){return this.executeActionSheet(t)}const l=["ArrowDown","ArrowUp","PageDown","PageUp","Home","End","Escape","Tab"];if(this.searchable&&(e===" "||e==="Enter")&&this.inputField.value==""){t.preventDefault();if(!this.open)this.openDropdownWithoutActiveElement()}if(this.searchable&&!l.includes(e))return;if(this.shouldClearSearchText(t))this.clearSearchText();if(e===" ")t.preventDefault();this.optionList.handleExternalKeydown(t)};this.onCustomDisplayClick=t=>{t.stopPropagation();this.focusInput();this.toggleDropdown()};this.onMutationObserved=()=>{const{hostElement:t,hasPopoverTop:e,hasPopoverBottom:i}=this;const s=t.querySelector(".custom-display-content");const o=t.shadowRoot.querySelector('slot[name="q2-select-display"]');const l=!!o?o.assignedNodes().length>0:s.children.length>0;if(this.hasCustomDisplay!==l){this.hasCustomDisplay=l}const n=t.shadowRoot.querySelector('slot[name="popover-top"]');const r=(n===null||n===void 0?void 0:n.assignedNodes().length)>0;if(e!==r){this.hasPopoverTop=r}const a=t.shadowRoot.querySelector('slot[name="popover-bottom"]');const c=(a===null||a===void 0?void 0:a.assignedNodes().length)>0;if(i!==c){this.hasPopoverBottom=c}this.checkSelectedOptions()};this.onOptionListChange=t=>{t.stopPropagation();const{values:e}=t.detail;if(e.length===0)this.showAllOptions();this.handleSelectionChanges(t.detail)};this.onPopoverState=({detail:{open:t,action:e}})=>{if(!t||this.searchText){if(e!=="select"){this.optionList.setActiveElement(null)}this.inputField.focus()}if(this.open===t)return;this.open=t};this.showAllOptions=()=>{this.showSelected=false};this.showSelectedOptions=()=>{this.showSelected=true};this.visibilityToggleKeyDown=t=>{const e=t.key;const i=e==="Tab"&&t.shiftKey;const s=["ArrowLeft","ArrowRight","ArrowUp","ArrowDown"].includes(e);if(s)t.stopPropagation();if(i){t.stopPropagation();if(this.hasPopoverTop)return;this.optionList.setDefaultActiveElement()}};this.hasCustomDisplay=false;this.hasPopoverBottom=false;this.hasPopoverTop=false;this.inputFocused=false;this.open=false;this.prioritizeSearch=false;this.searchText="";this.showSelected=false;this.statusMessage=undefined;this.structuredSelectedOptions=[];this.ariaLabel=undefined;this.clearable=undefined;this.disabled=false;this.errors=undefined;this.hideLabel=undefined;this.hoist=!!((s=window.Tecton)===null||s===void 0?void 0:s.useActionSheets);this.invalid=undefined;this.label=undefined;this.listLabel=o("tecton.element.select.listLabel");this.minRows=3;this.multilineOptions=false;this.multiple=false;this.optional=false;this.placeholder=undefined;this.popDirection=undefined;this.popoverMaxHeight=undefined;this.popoverMode=null;this.readonly=false;this.searchable=false;this.selectedOptions=[];this.value=undefined}disconnectedCallback(){var t;(t=this.mutationObserver)===null||t===void 0?void 0:t.disconnect();this.mutationObserver=null}componentWillLoad(){l(this);this.buildStructuredSelectedOptions();this.handleMultilineOptionsUpdate(this.multilineOptions,false)}componentDidLoad(){const t=new MutationObserver(this.onMutationObserved);t.observe(this.hostElement,{childList:true,subtree:true});this.mutationObserver=t;this.onMutationObserved();n(this.hostElement);setTimeout((()=>this.checkSelectedDisplay()),0)}componentDidRender(){setTimeout((()=>{this.scheduledAfterRender.forEach((t=>t()));this.scheduledAfterRender=[]}),25)}onHostElementChange(t){if(this.readonly||this.disabled)return;if(t.target!==this.hostElement||this.hostElement.onchange)return;if(this.multiple){this.value=null;this.selectedOptions=t.detail.selectedOptions}else{this.value=t.detail.value;this.selectedOptions=[]}}onClearHandler(){this.clearValue()}handleSelectedDisplay(t){if(this.multiple)return;this.inputField.value=t.detail.display}delegateFocus(t){const e=r(t,this.hostElement);const i=this.prioritizeSearch=e&&this.searchable;if(i){this.clearSelectedDisplay()}else if(a(t,this.hostElement)){this.inputField.shadowRoot.querySelector(".input-field").focus()}}handleFocusout(t){const e=d(t,this.hostElement);if(e)this.closeDropdown();this.prioritizeSearch=!e&&this.searchable}onHostElementInput(t){if(!this.searchable||t.target!==this.hostElement||this.hostElement.oninput)return;const e=this.optionElements;const i=this.searchText.trim().toLocaleLowerCase();let s=0;e.forEach((t=>{var e;if(i===""){t.hidden=false;return}const o=((e=t.firstElementChild)===null||e===void 0?void 0:e.tagName)==="Q2-CARD"?t.firstElementChild.title:null;const{display:l="",innerText:n=""}=t;const r=[l,o,n];const a=r.some((t=>{var e;return(e=t===null||t===void 0?void 0:t.toLocaleLowerCase().includes(i))!==null&&e!==void 0?e:false}));t.hidden=!a;if(a)s++}));const l=i?"tecton.element.select.searchable.results":"tecton.element.select.allOptions";const n=i?s:e.length;this.setStatusMessage(o(l,[n]))}keydownHandler(t){this.inputKeydownHandler(t)}async closePopover(){if(!this.open||this.disabled)return;this._togglePopover()}async openPopover(){if(this.open||this.disabled)return;this._togglePopover()}searchOptions(t){if(!this.searchable)return;const{innerInputField:e}=this;e.focus();e.dispatchEvent(new FocusEvent("focus"));e.value=t;e.dispatchEvent(new InputEvent("input"))}async setValue(t,e={closePopover:true}){const i=new Set(Array.isArray(t)?t:[t]);if(!this.open){await this.openPopover();await c()}i.forEach((t=>{var e;(e=this.optionElements.find((e=>e.value===t)))===null||e===void 0?void 0:e.click()}));if(e.closePopover){await this.closePopover();await c()}}ariaLabelObserver(){l(this)}handleMultilineOptionsUpdate(t,e){if(t===e)return;this.optionElements.forEach((e=>e.multiline=t))}openChanged(t){this.scheduledAfterRender.push((async()=>{await c();const{popoverTopContainer:e,popoverElement:i}=this;const s=t&&(e===null||e===void 0?void 0:e.offsetHeight)||0;if(s){i.style.setProperty("--comp-popover-top-container-height",`${s}px`)}else{i.style.removeProperty("--comp-popover-top-container-height")}}))}buildStructuredSelectedOptions(){const{multiple:t,selectedOptions:e,value:i}=this;if(t){this.structuredSelectedOptions=!!(e===null||e===void 0?void 0:e.length)?e.map((t=>typeof t==="string"?{value:t}:t)):[]}else{this.structuredSelectedOptions=i?[{value:i}]:[]}}valueUpdated(){if(this.multiple)return;this.clearSearchText()}get badgeValue(){var t,e;if(!this.multiple)return null;const i=(e=(t=this.selectedOptions)===null||t===void 0?void 0:t.length)!==null&&e!==void 0?e:0;if(this.open&&this.searchable)return i?`${i}`:null;else return i>1?`+${i-1}`:null}get firstSelectedOptionElement(){const{firstSelectedValue:t}=this;return t?this.optionElements.find((({value:e})=>e===t)):null}get firstSelectedValue(){var t;return this.multiple?(t=this.selectedOptions)===null||t===void 0?void 0:t[0]:this.value}get innerInputContainer(){var t,e;return(e=(t=this.inputField)===null||t===void 0?void 0:t.shadowRoot)===null||e===void 0?void 0:e.querySelector(".input-container")}get innerInputField(){var t,e;return(e=(t=this.inputField)===null||t===void 0?void 0:t.shadowRoot)===null||e===void 0?void 0:e.querySelector(".input-field")}get optionElements(){return Array.from(this.hostElement.querySelectorAll("q2-option"))}get popoverMinHeight(){const{minRows:t}=this;const e=this.hostElement.querySelector("q2-option:not([hidden])");let i=e&&window.getComputedStyle(e).minHeight;if(!i||i==="0px")i="44px";return t*parseInt(i)}get selectedDisplay(){if(this.prioritizeSearch||this.searchText)return this.searchText;if(this.hasCustomDisplay)return"";return this.multiple?this.calculateMultiSelectSelectedDisplay():this.calculateSingleSelectSelectedDisplay()}get selectedDisplaySlot(){return this.hostElement.querySelector('[slot="_selected-display"]')}get wrapperClasses(){const{errors:t}=this;const e=["q2-select-container"];if(Array.isArray(t)&&t.length>0)e.push("has-error");if(this.inputFocused)e.push("is-focused");if(this.searchable)e.push("is-searchable");return e.join(" ")}_togglePopover(){const{innerInputField:t}=this;t===null||t===void 0?void 0:t.click();t===null||t===void 0?void 0:t.focus();t.dispatchEvent(new FocusEvent("focus"))}calculateMultiSelectSelectedDisplay(){var t,e,i;const{firstSelectedOptionElement:s,firstSelectedValue:l,multilineOptions:n}=this;if(!l)return"";if(s===null||s===void 0?void 0:s.display)return o(s.display);if(n&&this.searchable)return this.searchText;if(n)return"";return(i=(e=(t=s===null||s===void 0?void 0:s.textContent)===null||t===void 0?void 0:t.trim())!==null&&e!==void 0?e:s===null||s===void 0?void 0:s.value)!==null&&i!==void 0?i:l}calculateSingleSelectSelectedDisplay(){var t;const{firstSelectedOptionElement:e,multilineOptions:i}=this;if(i){return(e===null||e===void 0?void 0:e.display)&&o(e.display)||this.value||""}else{return(e===null||e===void 0?void 0:e.display)&&o(e.display)||((t=e===null||e===void 0?void 0:e.textContent)===null||t===void 0?void 0:t.trim())||this.value||""}}checkSelectedDisplay(){let t=this.selectedDisplaySlot;const{value:e,multiple:i,selectedOptions:s,multilineOptions:o,firstSelectedOptionElement:l,prioritizeSearch:n}=this;const r=!e&&i&&!(s===null||s===void 0?void 0:s.length);if(n||!o||r)return this.clearSelectedDisplay();if(!l||l.display)return this.clearSelectedDisplay();const a=l.firstElementChild.cloneNode(true);a.querySelectorAll("[hide-on-select]").forEach((t=>t.remove()));if(t){const e=t.clientHeight===0?"auto":`${t.clientHeight}px`;t.style.setProperty("--comp-selected-display-height",e);if(t.firstElementChild.outerHTML!==a.outerHTML){t.replaceChild(a,t.firstElementChild)}}else{t=document.createElement("div");t.slot="_selected-display";t.appendChild(a);this.hostElement.appendChild(t)}return t}checkSelectedDisplayHeight(){const{selectedDisplaySlot:t}=this;if(!t)return;t.style.setProperty("--comp-selected-display-height","44px")}checkSelectedOptions(){const{multiple:t,selectedOptions:e,value:i}=this;this.optionElements.forEach((s=>{if(t){s.selected=e.includes(s.value)}else{s.selected=s.value===i}}))}clearSearchText(){if(!this.searchText)return;this.searchText="";this.input.emit({query:""})}clearSelectedDisplay(){var t;(t=this.selectedDisplaySlot)===null||t===void 0?void 0:t.remove()}clearValue(){const{multiple:t}=this;this.value="";this.selectedOptions=[];this.change.emit({value:t?undefined:"",selectedOptions:t?[]:undefined})}closeDropdown(){this.open=false;this.clearSearchText()}async executeActionSheet(t){const e=await p(this,t);this.handleSelectionChanges(e)}focusInput(){var t;(t=this.inputField)===null||t===void 0?void 0:t.dispatchEvent(new FocusEvent("focus"))}handleSelectionChanges(t){const{value:e="",values:i=[]}=t;const s=i.map((t=>t.value));const{multiple:o}=this;if(!this.hostElement.onchange){this.selectedOptions=s}this.change.emit({value:o?undefined:e,selectedOptions:o?s:undefined})}openDropdownWithoutActiveElement(){if(this.readonly||this.disabled)return;this.optionList.setActiveElement(null);this.open=true}setStatusMessage(t){clearTimeout(this.statusMessageTimer);this.statusMessage="";this.statusMessageTimer=setTimeout((()=>{this.statusMessage=t}),1e3)}shouldClearSearchText(t){return this.searchable&&!!this.searchText&&t.key==="Escape"}toggleDropdown(){if(this.readonly||this.disabled)return;if(this.open&&!this.searchText){this.closeDropdown()}else{this.openDropdownWithoutActiveElement()}}renderCustomDisplay(){const t=this.checkSelectedDisplay();if(!t)return;this.checkSelectedDisplayHeight();return i("slot",{name:"_selected-display",slot:"custom-display"})}renderOptionsDropdown(){return i("q2-popover",{ref:t=>this.popoverElement=t,controlElement:this.innerInputContainer,open:this.open,"max-height":this.popoverMaxHeight,minHeight:this.popoverMinHeight,direction:this.popDirection,mode:this.popoverMode||undefined,block:true},i("div",{class:"popover-content"},i("q2-option-list",{onPopoverState:this.onPopoverState,ref:t=>this.optionList=t,type:"listbox",id:"option-list","show-selected":this.showSelected,label:this.listLabel,multiple:this.multiple,selectedOptions:this.structuredSelectedOptions,onChange:this.onOptionListChange},i("slot",null)),i("div",{class:"popover-top-container",ref:t=>this.popoverTopContainer=t,hidden:!this.multiple&&!this.hasPopoverTop,tabindex:"-1"},i("slot",{name:"popover-top"}),this.multiple&&this.renderVisibilityToggle())),i("div",{class:"popover-bottom-container",hidden:!this.hasPopoverBottom,tabindex:"-1"},i("slot",{name:"popover-bottom"})))}renderVisibilityToggle(){var t,e;const s=(e=(t=this.selectedOptions)===null||t===void 0?void 0:t.length)!==null&&e!==void 0?e:0;const{showSelected:l}=this;return i("div",{class:"multi-select-header"},i("fieldset",null,i("legend",{"aria-label":o("tecton.element.select.multiHeader.showing")},o("tecton.element.select.multiHeader.showing")),i("div",null,i("input",{class:"sr",type:"radio",id:"all",name:"viewDisplay",value:"all",checked:!l,"aria-label":o("tecton.element.select.multiHeader.allAriaLabel"),"test-id":"allOptionsButton",onClick:this.showAllOptions,onKeyDown:this.visibilityToggleKeyDown}),i("label",{htmlFor:"all"},o("tecton.element.select.multiHeader.all"))),i("div",null,i("input",{class:"sr",type:"radio",id:"selected",disabled:s===0,name:"viewDisplay",value:"selected","aria-label":o("tecton.element.select.multiHeader.selectedAriaLabel",[s]),checked:l,"test-id":"selectedOptionsButton",onClick:this.showSelectedOptions,onKeyDown:this.visibilityToggleKeyDown}),i("label",{htmlFor:"selected"},o("tecton.element.select.multiHeader.selected",[s])))))}render(){var t;return i("click-elsewhere",{key:"1b93bb0fd1b8d21fa839387a931fb9d97b4e2906",class:this.wrapperClasses,onChange:this.clickedElsewhere},i("div",{key:"8fbbb1afec8161204bd25b698f58ef913c959344","aria-live":"polite","aria-atomic":"true",role:"status",class:"sr"},this.statusMessage),i("q2-input",{key:"b67fd2569162a1009ff2868b73091859ba7005ba",ref:t=>this.inputField=t,class:"q2-select-input",label:this.label&&o(this.label)||"",value:this.selectedDisplay,clearable:this.clearable&&(!!this.value||!!((t=this.selectedOptions)===null||t===void 0?void 0:t.length))||undefined,errors:Array.isArray(this.errors)&&this.errors.length>0&&this.errors.map((t=>o(t)))||this.invalid&&["tecton.element.select.invalid"]||[],disabled:this.disabled,optional:this.optional,readonly:!!this.readonly,placeholder:this.placeholder||undefined,hideLabel:this.hideLabel,ariaExpanded:`${this.open}`,ariaControls:"option-list",ariaHaspopup:"listbox","test-id":"toggleDropdown","hide-messages":true,iconRight:"chevron-down",onClick:this.inputClickHandler,onInput:this.inputInputHandler,onKeyDown:this.inputKeydownHandler,onFocus:this.inputFocusHandler,onBlur:this.inputBlurHandler,onChange:this.inputChangeHandler,badgeValue:this.badgeValue,badgeTheme:this.inputFocused?"primary":undefined,_role:"combobox",_preventEntry:!this.searchable},this.renderCustomDisplay()),i("div",{key:"a0a3f6cabce2f0d64346a8aa71c89e6a93b2b6e8",class:"custom-display-content",hidden:!this.hasCustomDisplay||!!this.searchText,onClick:this.onCustomDisplayClick},i("slot",{key:"bf07ea5bd0ea6354e1d0631339944c516e975dc3",name:"q2-select-display"})),this.renderOptionsDropdown())}get hostElement(){return s(this)}static get watchers(){return{ariaLabel:["ariaLabelObserver"],multilineOptions:["handleMultilineOptionsUpdate"],open:["openChanged"],value:["buildStructuredSelectedOptions","valueUpdated"],selectedOptions:["buildStructuredSelectedOptions"]}}};b.style=v;export{b as q2_select};
2
- //# sourceMappingURL=p-56df21b0.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["q2SelectCss","Q2SelectStyle0","Q2Select","this","scheduledAfterRender","clickedElsewhere","event","target","localName","stopPropagation","inputBlurHandler","inputFocused","inputChangeHandler","inputClickHandler","async","shouldShowActionSheet","executeActionSheet","toggleDropdown","focusInput","inputFocusHandler","inputInputHandler","eventValue","detail","value","shouldClearValue","clearValue","open","openDropdownWithoutActiveElement","prioritizeSearch","searchText","input","emit","query","inputKeydownHandler","readonly","disabled","key","shiftKey","isShiftTab","hasSlot","hasPopoverTop","hasPopoverBottom","keysForOptionListToHandle","searchable","inputField","preventDefault","includes","shouldClearSearchText","clearSearchText","optionList","handleExternalKeydown","onCustomDisplayClick","onMutationObserved","hostElement","slotContainer","querySelector","displaySlot","shadowRoot","hasCustomDisplay","assignedNodes","length","children","popTopSlot","topSlotHasNode","popBottomSlot","bottomSlotHasNode","checkSelectedOptions","onOptionListChange","values","showAllOptions","handleSelectionChanges","onPopoverState","action","setActiveElement","focus","showSelected","showSelectedOptions","visibilityToggleKeyDown","isRadioControlKey","setDefaultActiveElement","_a","window","Tecton","useActionSheets","loc","disconnectedCallback","mutationObserver","disconnect","componentWillLoad","handleAriaLabel","buildStructuredSelectedOptions","handleMultilineOptionsUpdate","multilineOptions","componentDidLoad","observer","MutationObserver","observe","childList","subtree","overrideFocus","setTimeout","checkSelectedDisplay","componentDidRender","forEach","fn","onHostElementChange","onchange","multiple","selectedOptions","onClearHandler","handleSelectedDisplay","display","delegateFocus","fromHost","isRelatedTargetWithinHost","clearSelectedDisplay","isEventFromElement","handleFocusout","isLeavingHost","isHostLosingFocus","closeDropdown","onHostElementInput","oninput","options","optionElements","trim","toLocaleLowerCase","matchedCount","option","hidden","title","firstElementChild","tagName","innerText","searchParams","matched","some","text","statusMessageLocString","count","setStatusMessage","keydownHandler","closePopover","_togglePopover","openPopover","searchOptions","innerInputField","dispatchEvent","FocusEvent","InputEvent","setValue","valuesSet","Set","Array","isArray","waitForNextPaint","find","click","ariaLabelObserver","newValue","oldValue","element","multiline","openChanged","isOpen","push","popoverTopContainer","popoverElement","height","offsetHeight","style","setProperty","removeProperty","structuredSelectedOptions","map","valueUpdated","badgeValue","optionsLength","_b","firstSelectedOptionElement","firstSelectedValue","innerInputContainer","from","querySelectorAll","popoverMinHeight","minRows","firstOption","minHeight","getComputedStyle","parseInt","selectedDisplay","calculateMultiSelectSelectedDisplay","calculateSingleSelectSelectedDisplay","selectedDisplaySlot","wrapperClasses","errors","classes","join","_c","textContent","namedSlot","hasNoValue","selectionClone","cloneNode","remove","clientHeight","outerHTML","replaceChild","document","createElement","slot","appendChild","checkSelectedDisplayHeight","selected","change","undefined","result","showActionSheetList","changeDetails","selectedOptionValues","message","clearTimeout","statusMessageTimer","statusMessage","renderCustomDisplay","hasSelectedDisplay","h","name","renderOptionsDropdown","ref","el","controlElement","popoverMaxHeight","direction","popDirection","mode","popoverMode","block","class","type","id","label","listLabel","onChange","tabindex","renderVisibilityToggle","selectedOptionsCount","checked","onClick","onKeyDown","htmlFor","render","role","clearable","error","invalid","optional","placeholder","hideLabel","ariaExpanded","ariaControls","ariaHaspopup","iconRight","onInput","onFocus","onBlur","badgeTheme","_role","_preventEntry"],"sources":["src/components/q2-select/q2-select.scss?tag=q2-select&encapsulation=shadow","src/components/q2-select/q2-select.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions';\n@import '../../styles/dropdowns';\n\n:host {\n --comp-select-margin: #{var-list(\n --tct-select-margin,\n unquote(\n '#{var-list(var-prefixer(select-margin-top), --app-scale-4, 30px)} 0 #{var-list(var-prefixer(select-margin-bottom), --app-scale-4, 30px)}'\n )\n )};\n display: block;\n margin: var(--comp-select-margin);\n}\n\n.q2-select-container {\n position: relative;\n display: block;\n}\n\n.q2-select-input {\n margin: 0;\n\n --tct-input-min-height: #{var-list(var-prefixer(select-input-min-height))};\n --tct-input-max-height: #{var-list(var-prefixer(select-input-max-height), none)};\n}\n\n::slotted([slot='_selected-display']) {\n width: 100%;\n min-height: var(--comp-selected-display-height, 44px);\n}\n\n.custom-display-content {\n position: absolute;\n bottom: 0;\n left: calc(var-list(--tct-scale-2, --app-scale-2x, 10px) + 1px);\n height: 44px;\n width: calc(100% - 34px - var-list(--tct-scale-3, --app-scale-3x, 15px));\n overflow: hidden;\n cursor: pointer;\n transition: left var-list(--tct-tween-2, --app-tween-1, unquote('0.2s ease'));\n}\n\n.custom-display-content:not([hidden]) {\n display: flex;\n align-items: center;\n}\n\n.is-searchable.is-focused .custom-display-content,\n.is-searchable .custom-display-content:active {\n left: calc(var-list(--tct-scale-3, --app-scale-3x, 15px) + 1px);\n}\n\n.has-error .custom-display-content {\n width: calc(100% - 68px - var-list(--tct-scale-3, --app-scale-3x, 15px));\n}\n\n.popover-content {\n display: flex;\n flex-direction: column-reverse;\n}\n\n.popover-bottom-container {\n position: sticky;\n bottom: 0;\n z-index: 5;\n}\n\n.popover-top-container {\n position: sticky;\n top: 0;\n z-index: 5;\n .multi-select-header {\n padding: var(--tct-scale-2, var(--app-scale-2x, 10px)) var(--tct-scale-2, var(--app-scale-2x, 10px));\n background: var(--app-white);\n display: flex;\n gap: var-list(--app-scale-2x, 10px);\n align-items: center;\n\n fieldset {\n margin: 0;\n padding: 0;\n border: 0;\n display: flex;\n gap: var-list(--app-scale-2x, 10px);\n }\n\n legend {\n padding: 0;\n float: left;\n }\n\n label {\n cursor: pointer;\n padding: var-list(\n var-prefixer(select-multi-select-option-padding),\n var-prefixer(btn-badge-padding),\n unquote('2px 5px')\n );\n font-size: var-list(\n var-prefixer(select-multi-select-option-font-size),\n var-prefixer(btn-badge-font-size),\n inherit\n );\n border-radius: var-list(\n var-prefixer(select-multi-select-option-radius),\n var-prefixer(btn-badge-border-radius),\n --app-border-radius-1,\n 4px\n );\n background: var-list(\n --tct-select-multi-select-option-background,\n var-prefixer(select-multi-select-option-bg),\n --tct-badge-background,\n var-prefixer(btn-badge-bg),\n transparent\n );\n color: var-list(\n var-prefixer(select-multi-select-option-color),\n var-prefixer(btn-badge-font-color),\n inherit\n );\n\n &:hover {\n background: var-list(\n --tct-select-multi-select-option-hover-background,\n var-prefixer(select-multi-select-option-hover-background-color),\n var-prefixer(btn-badge-hover-bg),\n var-prefixer(gray-14),\n --app-gray-l3,\n #f2f2f2\n );\n color: var-list(\n --tct-select-multi-select-option-hover-color,\n var-prefixer(select-multi-select-option-color),\n var-prefixer(btn-badge-hover-font-color),\n var-prefixer(gray-5),\n --app-gray-d2,\n #404040\n );\n }\n }\n\n input {\n &:checked + label {\n &,\n &:enabled:hover {\n background: var-list(\n --tct-select-multi-select-option-active-background,\n var-prefixer(select-multi-select-option-active-background-color),\n var-prefixer(btn-primary-bg),\n #2e2e2e\n );\n color: var-list(\n var-prefixer(select-multi-select-option-active-color),\n var-prefixer(btn-primary-font-color),\n --app-white,\n #ffffff\n );\n }\n }\n\n &:disabled + label {\n opacity: var-list(\n var-prefixer(select-multi-select-option-disabled-opacity),\n var-prefixer(btn-disabled-opacity),\n --app-disabled-opacity,\n 0.4\n );\n cursor: not-allowed;\n }\n\n &:focus + label {\n box-shadow: var(--const-double-focus-ring);\n }\n }\n }\n}\n","import {\n Component,\n Prop,\n Element,\n h,\n Listen,\n State,\n EventEmitter,\n Event,\n ComponentInterface,\n Watch,\n Method,\n} from '@stencil/core';\nimport { IEventDetail, Q2InputCustomEvent, Q2OptionListCustomEvent } from 'src/components';\nimport {\n handleAriaLabel,\n isEventFromElement,\n isHostLosingFocus,\n isRelatedTargetWithinHost,\n loc,\n overrideFocus,\n waitForNextPaint,\n} from '../../utils';\nimport { IOptionValue } from '../q2-option-list/q2-option-list';\nimport { shouldShowActionSheet, showActionSheetList } from 'src/utils/action-sheet';\n\n@Component({ tag: 'q2-select', shadow: true, styleUrl: 'q2-select.scss' })\nexport class Q2Select implements ComponentInterface {\n // #region Own Properties\n\n inputField?: HTMLQ2InputElement;\n mutationObserver: MutationObserver;\n optionList: HTMLQ2OptionListElement;\n popoverElement?: HTMLQ2PopoverElement;\n popoverTopContainer?: HTMLDivElement;\n scheduledAfterRender: (() => void)[] = [];\n statusMessageTimer: NodeJS.Timeout;\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 hasCustomDisplay: boolean = false;\n\n @State()\n hasPopoverBottom: boolean = false;\n\n @State()\n hasPopoverTop: boolean = false;\n\n @State()\n inputFocused: boolean = false;\n\n @State()\n open: boolean = false;\n\n @State()\n prioritizeSearch: boolean = false;\n\n @State()\n searchText: string = '';\n\n @State()\n showSelected: boolean = false;\n\n @State()\n statusMessage: string;\n\n @State()\n structuredSelectedOptions: IOptionValue[] = [];\n\n // #endregion\n // #region Public Property API\n\n /** @deprecated */\n @Prop({ reflect: true, mutable: true })\n ariaLabel: string;\n\n /** Renders an icon button when the field is non-empty. Pressing the button clears all input from the field. */\n @Prop({ reflect: true })\n clearable: boolean;\n\n /** Disables all interaction with the field and leverages the disabled visual style of `q2-input`. */\n @Prop({ reflect: true })\n disabled: boolean = false;\n\n /**\n * The presence of `errors` will mark the field as invalid, putting it into an error state.\n * @localizable\n */\n @Prop()\n errors: string[];\n\n /**\n * Hide's the field's `<label>` element from view.\n * @warning\n * Only use when a visible label is impractical.\n */\n @Prop({ reflect: true, mutable: true })\n hideLabel: boolean;\n\n /**\n * Instructs the component to use the action sheet workflow for displaying its options.\n *\n * For more information, see [Action Sheets](https://tecton.q2developer.com/guides/action-sheets/).\n * @warning\n * If your `q2-select` renders inside of an iframe, and you are using multiline/robust content options,\n * any custom CSS you apply to your options will not get passed up to the platform which displays the action sheet.\n * For this reason, we strongly suggest using the [q2-card](https://tecton.q2developer.com/design-system/q2-card/) component since its styling is managed by Tecton.\n */\n @Prop()\n hoist: boolean = !!window.Tecton?.useActionSheets;\n\n /** Determines whether to show an error state. Its primary use-case is for an unfilled field. */\n @Prop({ reflect: true })\n invalid: boolean;\n\n /**\n * The text that will be used as the label for the field.\n * @localizable\n */\n @Prop({ reflect: true, mutable: true })\n label: string;\n\n /**\n * Determines the label that is applied to the option list for accessibility purposes.\n * @localizable\n */\n @Prop()\n listLabel: string = loc('tecton.element.select.listLabel');\n\n /** The minimum number of rows the component will try to display below or above the component when opened. */\n @Prop()\n minRows: number = 3;\n\n /** Enables text wrapping for `q2-option` elements. When `false`, the text truncates and does not wrap. */\n @Prop({ reflect: true })\n multilineOptions: boolean = false;\n\n /** Enables multi-select functionality. */\n @Prop({ reflect: true })\n multiple: boolean = false;\n\n /** Appends \"(optional)\" to the field label, and sets `aria-required` on the nested input tag to `false`. */\n @Prop({ reflect: true })\n optional: boolean = false;\n\n /**\n * Text that appears within the field when it is blurred and empty.\n * Placeholder text disappears when the user selects an option.\n * @localizable\n */\n @Prop({ reflect: true })\n placeholder: string;\n\n /** @deprecated */\n @Prop({ reflect: true })\n popDirection: 'up' | 'down';\n\n /**\n * Force the maximum height of the popover. This value will be interpreted as pixels.\n * If no value is passed, or the value exceeds available space, the component will auto-detect the maximum height based on available space.\n */\n @Prop()\n popoverMaxHeight: number;\n\n /**\n * Determines the display mode of the popover.\n *\n * Providing a value of `legacy` instructs the popover to use absolute positioning instead of fixed positioning.\n *\n * @info\n * This is a temporary solution to work around styling issues related to using fixed positioning for the popover\n * when nested inside of elements with transform properties. This will be removed once the popover API is available\n * for use.\n */\n @Prop({ mutable: true })\n popoverMode: 'legacy' = null;\n\n /**\n * Appends \"(read only)\" to the field label, and field becomes unusable, but remains focusable.\n * Takes priority over `optional` if both are `true`.\n */\n @Prop({ reflect: true })\n readonly: boolean = false;\n\n /** Enables search functionality. */\n @Prop({ reflect: true })\n searchable: boolean = false;\n\n /**\n * Each item in this array should correspond to the value of a `q2-option` element.\n * This property is only relevant for `multiple` (i.e., multi-select) implementations.\n */\n @Prop({ mutable: true })\n selectedOptions: string[] = [];\n\n /**\n * The current value for the select. This should correspond to the value of a nested q2-option element.\n * This property is only relevant for single-select implementations.\n */\n @Prop({ mutable: true })\n value: string;\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when an option is selected or deselected.\n *\n * When the multi-select is enabled, the `value` property will be `undefined` and the `selectedOptions` property\n * will contain the selected option values.\n *\n * @legacyEvent\n */\n @Event()\n change: EventEmitter<{ value: string; selectedOptions: string[] }>;\n\n /**\n * Emitted when the input value changes.\n *\n * Requires the `searchable` prop to be set to `true`.\n */\n @Event()\n input: EventEmitter<{ query: string }>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback() {\n this.mutationObserver?.disconnect();\n this.mutationObserver = null;\n }\n\n componentWillLoad() {\n handleAriaLabel(this);\n this.buildStructuredSelectedOptions();\n this.handleMultilineOptionsUpdate(this.multilineOptions, false);\n }\n\n componentDidLoad() {\n const observer = new MutationObserver(this.onMutationObserved);\n observer.observe(this.hostElement, { childList: true, subtree: true });\n this.mutationObserver = observer;\n this.onMutationObserved();\n overrideFocus(this.hostElement);\n setTimeout(() => this.checkSelectedDisplay(), 0);\n }\n\n componentDidRender() {\n setTimeout(() => {\n this.scheduledAfterRender.forEach(fn => fn());\n this.scheduledAfterRender = [];\n }, 25);\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('change')\n onHostElementChange(event: CustomEvent<{ value: string; selectedOptions: string[] }>) {\n if (this.readonly || this.disabled) return;\n if (event.target !== this.hostElement || this.hostElement.onchange) return;\n if (this.multiple) {\n this.value = null;\n this.selectedOptions = event.detail.selectedOptions;\n } else {\n this.value = event.detail.value;\n this.selectedOptions = [];\n }\n }\n\n @Listen('clear')\n onClearHandler() {\n this.clearValue();\n }\n\n @Listen('displayChanged')\n handleSelectedDisplay(event: CustomEvent) {\n if (this.multiple) return;\n this.inputField.value = event.detail.display;\n }\n\n @Listen('focus')\n delegateFocus(event: FocusEvent) {\n const fromHost = isRelatedTargetWithinHost(event, this.hostElement);\n const prioritizeSearch = (this.prioritizeSearch = fromHost && this.searchable);\n if (prioritizeSearch) {\n this.clearSelectedDisplay();\n } else if (isEventFromElement(event, this.hostElement)) {\n this.inputField.shadowRoot.querySelector<HTMLElement>('.input-field').focus();\n }\n }\n\n @Listen('focusout')\n handleFocusout(event: FocusEvent) {\n const isLeavingHost = isHostLosingFocus(event, this.hostElement);\n if (isLeavingHost) this.closeDropdown();\n this.prioritizeSearch = !isLeavingHost && this.searchable;\n }\n\n @Listen('input')\n onHostElementInput(event: CustomEvent) {\n if (!this.searchable || event.target !== this.hostElement || this.hostElement.oninput) return;\n const options = this.optionElements;\n const query = this.searchText.trim().toLocaleLowerCase();\n let matchedCount = 0;\n options.forEach(option => {\n if (query === '') {\n option.hidden = false;\n return;\n }\n\n const title =\n option.firstElementChild?.tagName === 'Q2-CARD'\n ? (option.firstElementChild as HTMLQ2CardElement).title\n : null;\n const { display = '', innerText = '' } = option;\n const searchParams = [display, title, innerText];\n const matched = searchParams.some(text => text?.toLocaleLowerCase().includes(query) ?? false);\n\n option.hidden = !matched;\n if (matched) matchedCount++;\n });\n\n const statusMessageLocString = query\n ? 'tecton.element.select.searchable.results'\n : 'tecton.element.select.allOptions';\n const count = query ? matchedCount : options.length;\n this.setStatusMessage(loc(statusMessageLocString, [count]));\n }\n\n @Listen('keydown')\n keydownHandler(event: KeyboardEvent) {\n this.inputKeydownHandler(event);\n }\n\n // #endregion\n // #region Public Methods API\n\n /**\n * Emulates clicking the `<input>` to hide the popover if it is visible.\n *\n * @testOnly\n */\n @Method()\n async closePopover() {\n if (!this.open || this.disabled) return;\n this._togglePopover();\n }\n\n /**\n * Emulates clicking the `<input>` to display the popover if it is hidden.\n *\n * @testOnly\n */\n @Method()\n async openPopover() {\n if (this.open || this.disabled) return;\n this._togglePopover();\n }\n\n /**\n * Emulates focusing the `<input>`, entering the provided value, and emitting an `input` event.\n *\n * @warning\n * Only applicable when the input is searchable.\n *\n * @testOnly\n */\n @Method()\n searchOptions(query: string) {\n if (!this.searchable) return;\n\n const { innerInputField } = this;\n innerInputField.focus();\n innerInputField.dispatchEvent(new FocusEvent('focus'));\n innerInputField.value = query;\n innerInputField.dispatchEvent(new InputEvent('input'));\n }\n\n /**\n * Emulates clicking the `<input>` to display the popover and selecting the option(s) with the specified value(s).\n *\n * If the multi-select is enabled and the `closePopover` argument is `true` (default), the popover will be closed\n * after the option(s) are selected.\n *\n * @testOnly\n */\n @Method()\n async setValue(values: string | string[], options: { closePopover?: boolean } = { closePopover: true }) {\n const valuesSet = new Set(Array.isArray(values) ? values : [values]);\n if (!this.open) {\n await this.openPopover();\n await waitForNextPaint();\n }\n\n valuesSet.forEach(value => {\n this.optionElements.find(option => option.value === value)?.click();\n });\n\n if (options.closePopover) {\n await this.closePopover();\n await waitForNextPaint();\n }\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('ariaLabel')\n ariaLabelObserver() {\n handleAriaLabel(this);\n }\n\n @Watch('multilineOptions')\n handleMultilineOptionsUpdate(newValue, oldValue) {\n if (newValue === oldValue) return;\n this.optionElements.forEach(element => (element.multiline = newValue));\n }\n\n @Watch('open')\n openChanged(isOpen: boolean) {\n this.scheduledAfterRender.push(async () => {\n await waitForNextPaint();\n const { popoverTopContainer, popoverElement } = this;\n const height = (isOpen && popoverTopContainer?.offsetHeight) || 0;\n if (height) {\n popoverElement.style.setProperty('--comp-popover-top-container-height', `${height}px`);\n } else {\n popoverElement.style.removeProperty('--comp-popover-top-container-height');\n }\n });\n }\n\n @Watch('value')\n @Watch('selectedOptions')\n buildStructuredSelectedOptions() {\n const { multiple, selectedOptions, value } = this;\n if (multiple) {\n this.structuredSelectedOptions = !!selectedOptions?.length\n ? selectedOptions.map(option => (typeof option === 'string' ? { value: option } : option))\n : [];\n } else {\n this.structuredSelectedOptions = value ? [{ value }] : [];\n }\n }\n\n @Watch('value')\n valueUpdated() {\n if (this.multiple) return;\n this.clearSearchText();\n }\n\n // #endregion\n // #region Local Methods\n\n get badgeValue(): string {\n if (!this.multiple) return null;\n const optionsLength = this.selectedOptions?.length ?? 0;\n if (this.open && this.searchable) return optionsLength ? `${optionsLength}` : null;\n else return optionsLength > 1 ? `+${optionsLength - 1}` : null;\n }\n\n get firstSelectedOptionElement() {\n const { firstSelectedValue } = this;\n return firstSelectedValue ? this.optionElements.find(({ value }) => value === firstSelectedValue) : null;\n }\n\n get firstSelectedValue() {\n return this.multiple ? this.selectedOptions?.[0] : this.value;\n }\n\n get innerInputContainer(): HTMLElement {\n return this.inputField?.shadowRoot?.querySelector('.input-container');\n }\n\n get innerInputField(): HTMLInputElement | HTMLButtonElement {\n return this.inputField?.shadowRoot?.querySelector('.input-field');\n }\n\n get optionElements() {\n return Array.from(this.hostElement.querySelectorAll<HTMLQ2OptionElement>('q2-option'));\n }\n\n get popoverMinHeight() {\n const { minRows } = this;\n const firstOption = this.hostElement.querySelector<HTMLQ2OptionElement>('q2-option:not([hidden])');\n let minHeight = firstOption && window.getComputedStyle(firstOption).minHeight;\n\n // Safari doesn't return a min-height for non-visible items\n if (!minHeight || minHeight === '0px') minHeight = '44px';\n\n return minRows * parseInt(minHeight);\n }\n\n get selectedDisplay() {\n if (this.prioritizeSearch || this.searchText) return this.searchText;\n if (this.hasCustomDisplay) return '';\n return this.multiple ? this.calculateMultiSelectSelectedDisplay() : this.calculateSingleSelectSelectedDisplay();\n }\n\n get selectedDisplaySlot() {\n return this.hostElement.querySelector<HTMLElement>('[slot=\"_selected-display\"]');\n }\n\n get wrapperClasses() {\n const { errors } = this;\n const classes = ['q2-select-container'];\n if (Array.isArray(errors) && errors.length > 0) classes.push('has-error');\n if (this.inputFocused) classes.push('is-focused');\n if (this.searchable) classes.push('is-searchable');\n return classes.join(' ');\n }\n\n _togglePopover() {\n const { innerInputField } = this;\n innerInputField?.click();\n innerInputField?.focus();\n innerInputField.dispatchEvent(new FocusEvent('focus'));\n }\n\n calculateMultiSelectSelectedDisplay() {\n const { firstSelectedOptionElement, firstSelectedValue, multilineOptions } = this;\n if (!firstSelectedValue) return '';\n if (firstSelectedOptionElement?.display) return loc(firstSelectedOptionElement.display);\n if (multilineOptions && this.searchable) return this.searchText;\n if (multilineOptions) return '';\n return (\n firstSelectedOptionElement?.textContent?.trim() ?? firstSelectedOptionElement?.value ?? firstSelectedValue\n );\n }\n\n calculateSingleSelectSelectedDisplay() {\n const { firstSelectedOptionElement, multilineOptions } = this;\n if (multilineOptions) {\n return (firstSelectedOptionElement?.display && loc(firstSelectedOptionElement.display)) || this.value || '';\n } else {\n return (\n (firstSelectedOptionElement?.display && loc(firstSelectedOptionElement.display)) ||\n firstSelectedOptionElement?.textContent?.trim() ||\n this.value ||\n ''\n );\n }\n }\n\n checkSelectedDisplay() {\n let namedSlot = this.selectedDisplaySlot;\n const { value, multiple, selectedOptions, multilineOptions, firstSelectedOptionElement, prioritizeSearch } =\n this;\n const hasNoValue = !value && multiple && !selectedOptions?.length;\n if (prioritizeSearch || !multilineOptions || hasNoValue) return this.clearSelectedDisplay();\n\n if (!firstSelectedOptionElement || firstSelectedOptionElement.display) return this.clearSelectedDisplay();\n\n // Clone selected option and remove elements with hide-on-select attribute\n const selectionClone = firstSelectedOptionElement.firstElementChild.cloneNode(true) as HTMLElement;\n selectionClone.querySelectorAll('[hide-on-select]').forEach(element => element.remove());\n\n if (namedSlot) {\n const height = namedSlot.clientHeight === 0 ? 'auto' : `${namedSlot.clientHeight}px`;\n namedSlot.style.setProperty('--comp-selected-display-height', height);\n if (namedSlot.firstElementChild.outerHTML !== selectionClone.outerHTML) {\n namedSlot.replaceChild(selectionClone, namedSlot.firstElementChild);\n }\n } else {\n namedSlot = document.createElement('div');\n namedSlot.slot = '_selected-display';\n namedSlot.appendChild(selectionClone);\n this.hostElement.appendChild(namedSlot);\n }\n return namedSlot;\n }\n\n checkSelectedDisplayHeight() {\n const { selectedDisplaySlot } = this;\n if (!selectedDisplaySlot) return;\n selectedDisplaySlot.style.setProperty('--comp-selected-display-height', '44px');\n }\n\n checkSelectedOptions() {\n const { multiple, selectedOptions, value } = this;\n this.optionElements.forEach(option => {\n if (multiple) {\n option.selected = selectedOptions.includes(option.value);\n } else {\n option.selected = option.value === value;\n }\n });\n }\n\n clearSearchText() {\n if (!this.searchText) return;\n this.searchText = '';\n this.input.emit({ query: '' });\n }\n\n clearSelectedDisplay() {\n this.selectedDisplaySlot?.remove();\n }\n\n clearValue() {\n const { multiple } = this;\n this.value = '';\n this.selectedOptions = [];\n this.change.emit({ value: multiple ? undefined : '', selectedOptions: multiple ? [] : undefined });\n }\n\n clickedElsewhere = (event: CustomEvent) => {\n const target = event.target as HTMLClickElsewhereElement;\n if (target.localName !== 'click-elsewhere') return;\n event.stopPropagation();\n };\n\n closeDropdown() {\n this.open = false;\n this.clearSearchText();\n }\n\n async executeActionSheet(event: MouseEvent | KeyboardEvent) {\n const result = await showActionSheetList(this, event);\n this.handleSelectionChanges(result);\n }\n\n focusInput() {\n this.inputField?.dispatchEvent(new FocusEvent('focus'));\n }\n\n handleSelectionChanges(changeDetails: { value?: string; values?: IOptionValue[] }) {\n const { value = '', values = [] } = changeDetails;\n const selectedOptionValues = values.map(value => value.value);\n const { multiple } = this;\n if (!this.hostElement.onchange) {\n this.selectedOptions = selectedOptionValues;\n }\n\n this.change.emit({\n value: multiple ? undefined : value,\n selectedOptions: multiple ? selectedOptionValues : undefined,\n });\n }\n\n inputBlurHandler = () => {\n this.inputFocused = false;\n };\n\n inputChangeHandler = (event: Event) => {\n event.stopPropagation();\n };\n\n inputClickHandler = async (event: MouseEvent) => {\n event.stopPropagation();\n if (shouldShowActionSheet(this)) {\n return this.executeActionSheet(event);\n }\n this.toggleDropdown();\n this.focusInput();\n };\n\n inputFocusHandler = () => {\n this.inputFocused = true;\n };\n\n inputInputHandler = (event: Q2InputCustomEvent<IEventDetail> & InputEvent) => {\n event.stopPropagation();\n const eventValue = event.detail.value;\n const shouldClearValue = !!this.value;\n\n if (shouldClearValue) this.clearValue();\n if (!this.open) this.openDropdownWithoutActiveElement();\n\n this.prioritizeSearch = true;\n this.searchText = eventValue;\n this.input.emit({ query: eventValue });\n };\n\n inputKeydownHandler = (event: KeyboardEvent) => {\n if (this.readonly || this.disabled) return;\n const { key, shiftKey } = event;\n const isShiftTab = key === 'Tab' && shiftKey;\n const hasSlot = this.hasPopoverTop || this.hasPopoverBottom;\n if (hasSlot && (key === 'Tab' || isShiftTab)) return;\n\n // slots are incompatible with action sheet\n if (shouldShowActionSheet(this, event) && !hasSlot) {\n return this.executeActionSheet(event);\n }\n\n const keysForOptionListToHandle = [\n 'ArrowDown',\n 'ArrowUp',\n 'PageDown',\n 'PageUp',\n 'Home',\n 'End',\n 'Escape',\n 'Tab',\n ];\n\n if (this.searchable && (key === ' ' || key === 'Enter') && this.inputField.value == '') {\n event.preventDefault();\n if (!this.open) this.openDropdownWithoutActiveElement();\n }\n\n if (this.searchable && !keysForOptionListToHandle.includes(key)) return;\n if (this.shouldClearSearchText(event)) this.clearSearchText();\n\n // Prevent click event from firing when spacebar is pressed\n if (key === ' ') event.preventDefault();\n\n this.optionList.handleExternalKeydown(event);\n };\n\n onCustomDisplayClick = (event: MouseEvent) => {\n event.stopPropagation();\n this.focusInput();\n this.toggleDropdown();\n };\n\n onMutationObserved = () => {\n const { hostElement, hasPopoverTop, hasPopoverBottom } = this;\n const slotContainer = hostElement.querySelector('.custom-display-content');\n const displaySlot = hostElement.shadowRoot.querySelector<HTMLSlotElement>('slot[name=\"q2-select-display\"]');\n const hasCustomDisplay = !!displaySlot\n ? displaySlot.assignedNodes().length > 0\n : slotContainer.children.length > 0;\n\n if (this.hasCustomDisplay !== hasCustomDisplay) {\n this.hasCustomDisplay = hasCustomDisplay;\n }\n\n const popTopSlot = hostElement.shadowRoot.querySelector<HTMLSlotElement>('slot[name=\"popover-top\"]');\n const topSlotHasNode = popTopSlot?.assignedNodes().length > 0;\n if (hasPopoverTop !== topSlotHasNode) {\n this.hasPopoverTop = topSlotHasNode;\n }\n\n const popBottomSlot = hostElement.shadowRoot.querySelector<HTMLSlotElement>('slot[name=\"popover-bottom\"]');\n const bottomSlotHasNode = popBottomSlot?.assignedNodes().length > 0;\n if (hasPopoverBottom !== bottomSlotHasNode) {\n this.hasPopoverBottom = bottomSlotHasNode;\n }\n\n this.checkSelectedOptions();\n };\n\n onOptionListChange = (event: Q2OptionListCustomEvent<{ value: string; values: IOptionValue[] }>) => {\n event.stopPropagation();\n const { values } = event.detail;\n\n if (values.length === 0) this.showAllOptions();\n this.handleSelectionChanges(event.detail);\n };\n\n onPopoverState = ({\n detail: { open, action },\n }: CustomEvent<{ open: boolean; action: 'close' | 'select' | 'open' }>) => {\n if (!open || this.searchText) {\n if (action !== 'select') {\n this.optionList.setActiveElement(null);\n }\n this.inputField.focus();\n }\n\n if (this.open === open) return;\n this.open = open;\n };\n\n openDropdownWithoutActiveElement() {\n if (this.readonly || this.disabled) return;\n this.optionList.setActiveElement(null);\n this.open = true;\n }\n\n setStatusMessage(message) {\n clearTimeout(this.statusMessageTimer);\n this.statusMessage = '';\n this.statusMessageTimer = setTimeout(() => {\n this.statusMessage = message;\n }, 1000);\n }\n\n shouldClearSearchText(event: KeyboardEvent) {\n return this.searchable && !!this.searchText && event.key === 'Escape';\n }\n\n showAllOptions = () => {\n this.showSelected = false;\n };\n\n showSelectedOptions = () => {\n this.showSelected = true;\n };\n\n toggleDropdown() {\n if (this.readonly || this.disabled) return;\n\n if (this.open && !this.searchText) {\n this.closeDropdown();\n } else {\n this.openDropdownWithoutActiveElement();\n }\n }\n\n visibilityToggleKeyDown = (event: KeyboardEvent) => {\n const key = event.key;\n const isShiftTab = key === 'Tab' && event.shiftKey;\n const isRadioControlKey = ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown'].includes(key);\n if (isRadioControlKey) event.stopPropagation();\n if (isShiftTab) {\n event.stopPropagation();\n // allows shift+tab keys to select the top slot when present\n if (this.hasPopoverTop) return;\n\n this.optionList.setDefaultActiveElement();\n }\n };\n\n // #endregion\n // #region Render Methods\n\n renderCustomDisplay() {\n const hasSelectedDisplay = this.checkSelectedDisplay();\n if (!hasSelectedDisplay) return;\n this.checkSelectedDisplayHeight();\n\n return (\n <slot\n name=\"_selected-display\"\n slot=\"custom-display\"\n />\n );\n }\n\n renderOptionsDropdown() {\n return (\n <q2-popover\n ref={el => (this.popoverElement = el)}\n controlElement={this.innerInputContainer}\n open={this.open}\n max-height={this.popoverMaxHeight}\n minHeight={this.popoverMinHeight}\n direction={this.popDirection}\n mode={this.popoverMode || undefined}\n block\n >\n <div class=\"popover-content\">\n <q2-option-list\n onPopoverState={this.onPopoverState}\n ref={el => (this.optionList = el)}\n type=\"listbox\"\n id=\"option-list\"\n show-selected={this.showSelected}\n label={this.listLabel}\n multiple={this.multiple}\n selectedOptions={this.structuredSelectedOptions}\n onChange={this.onOptionListChange}\n >\n <slot />\n </q2-option-list>\n <div\n class=\"popover-top-container\"\n ref={el => (this.popoverTopContainer = el)}\n hidden={!this.multiple && !this.hasPopoverTop}\n tabindex=\"-1\"\n >\n <slot name=\"popover-top\"></slot>\n {this.multiple && this.renderVisibilityToggle()}\n </div>\n </div>\n <div\n class=\"popover-bottom-container\"\n hidden={!this.hasPopoverBottom}\n tabindex=\"-1\"\n >\n <slot name=\"popover-bottom\" />\n </div>\n </q2-popover>\n );\n }\n\n renderVisibilityToggle() {\n const selectedOptionsCount = this.selectedOptions?.length ?? 0;\n const { showSelected } = this;\n return (\n <div class=\"multi-select-header\">\n <fieldset>\n <legend aria-label={loc('tecton.element.select.multiHeader.showing')}>\n {loc('tecton.element.select.multiHeader.showing')}\n </legend>\n <div>\n <input\n class=\"sr\"\n type=\"radio\"\n id=\"all\"\n name=\"viewDisplay\"\n value=\"all\"\n checked={!showSelected}\n aria-label={loc('tecton.element.select.multiHeader.allAriaLabel')}\n test-id=\"allOptionsButton\"\n onClick={this.showAllOptions}\n onKeyDown={this.visibilityToggleKeyDown}\n />\n <label htmlFor=\"all\">{loc('tecton.element.select.multiHeader.all')}</label>\n </div>\n\n <div>\n <input\n class=\"sr\"\n type=\"radio\"\n id=\"selected\"\n disabled={selectedOptionsCount === 0}\n name=\"viewDisplay\"\n value=\"selected\"\n aria-label={loc('tecton.element.select.multiHeader.selectedAriaLabel', [\n selectedOptionsCount,\n ])}\n checked={showSelected}\n test-id=\"selectedOptionsButton\"\n onClick={this.showSelectedOptions}\n onKeyDown={this.visibilityToggleKeyDown}\n />\n <label htmlFor=\"selected\">\n {loc('tecton.element.select.multiHeader.selected', [selectedOptionsCount])}\n </label>\n </div>\n </fieldset>\n </div>\n );\n }\n\n render() {\n return (\n <click-elsewhere\n class={this.wrapperClasses}\n onChange={this.clickedElsewhere}\n >\n <div\n aria-live=\"polite\"\n aria-atomic=\"true\"\n role=\"status\"\n class=\"sr\"\n >\n {this.statusMessage}\n </div>\n <q2-input\n ref={el => (this.inputField = el)}\n class=\"q2-select-input\"\n label={(this.label && loc(this.label)) || ''}\n value={this.selectedDisplay}\n clearable={(this.clearable && (!!this.value || !!this.selectedOptions?.length)) || undefined}\n errors={\n (Array.isArray(this.errors) &&\n this.errors.length > 0 &&\n this.errors.map(error => loc(error))) ||\n (this.invalid && ['tecton.element.select.invalid']) ||\n []\n }\n disabled={this.disabled}\n optional={this.optional}\n readonly={!!this.readonly}\n placeholder={this.placeholder || undefined}\n hideLabel={this.hideLabel}\n ariaExpanded={`${this.open}`}\n ariaControls=\"option-list\"\n ariaHaspopup=\"listbox\"\n test-id=\"toggleDropdown\"\n hide-messages\n iconRight=\"chevron-down\"\n onClick={this.inputClickHandler}\n onInput={this.inputInputHandler}\n onKeyDown={this.inputKeydownHandler}\n onFocus={this.inputFocusHandler}\n onBlur={this.inputBlurHandler}\n onChange={this.inputChangeHandler}\n badgeValue={this.badgeValue}\n badgeTheme={this.inputFocused ? 'primary' : undefined}\n _role=\"combobox\"\n _preventEntry={!this.searchable}\n >\n {this.renderCustomDisplay()}\n </q2-input>\n <div\n class=\"custom-display-content\"\n hidden={!this.hasCustomDisplay || !!this.searchText}\n onClick={this.onCustomDisplayClick}\n >\n <slot name=\"q2-select-display\" />\n </div>\n {this.renderOptionsDropdown()}\n </click-elsewhere>\n );\n }\n\n // #endregion\n}\n"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{r as t,h as e,g as o}from"./p-a5f18e27.js";import{l as r,a as n}from"./p-15ac45d6.js";const i="*{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 #0066cc)}: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}.dropdown-separator{--comp-default-separator-margin:0 var(--tct-scale-1, var(--app-scale-3x, 15px));margin:var(--tct-dropdown-separator-margin, var(--t-dropdown-separator-margin, var(--comp-default-separator-margin)));border-bottom:1px solid var(--tct-dropdown-item-separator-color, var(--t-dropdown-item-separator-color, var(--tct-gray-11, var(--t-gray-11, var(--tct-gray-l1, var(--app-gray-l1, #cccccc))))))}.dropdown-item-wrapper{display:flex}.dropdown-item{min-height:44px;flex:1 1 100%;padding:var(--tct-dropdown-item-padding, var(--t-dropdown-item-padding, 2px))}.dropdown-item-content{--comp-default-content-padding:12px var(--app-scale-3x, 15px);padding:var(--tct-dropdown-item-content-padding, var(--t-dropdown-item-content-padding, var(--comp-default-content-padding)));text-align:left;background:var(--tct-dropdown-item-background, var(--tct-dropdown-item-bg, var(--t-dropdown-item-bg, var(--tct-white, var(--t-base, var(--app-white, #ffffff))))));color:var(--tct-dropdown-item-font-color, var(--t-dropdown-item-font-color, inherit));transition:background-color var(--tct-dropdown-item-content-tween, var(--t-dropdown-item-content-tween, var(--tct-tween-1, var(--app-tween-1, 0.2s ease))));overflow:hidden;text-overflow:ellipsis;flex:1}:host(:not([disabled])) .dropdown-item-content:hover,:host(:not([disabled])) .dropdown-item:focus-within .dropdown-item-content{background:var(--tct-dropdown-item-hover-background, var(--tct-dropdown-item-selected-bg, var(--t-dropdown-item-selected-bg, var(--tct-gray-14, var(--t-gray-14, var(--tct-gray-l3, var(--app-gray-l3, var(--t-base, #f2f2f2))))))));color:var(--tct-dropdown-item-hover-color, var(--tct-dropdown-item-selected-font-color, var(--t-dropdown-item-selected-font-color, inherit)))}.remove-dropdown-item{flex:0 0 44px;margin:2px}";const d=i;const a=class{constructor(e){t(this,e);this.handleQ2LocValue=()=>{const t=this.hostElement.querySelector("q2-loc");return t?r(t.value,t.substitutions):""};this.onItemClick=t=>{t.stopImmediatePropagation();this.hostElement.dispatchEvent(new CustomEvent("click",{detail:{type:"select",value:this.value||""},bubbles:true}))};this.onItemFocus=t=>{t.stopPropagation()};this.onItemKeydown=t=>{if(t.key==="ArrowRight")this.focusRemoveBtn()};this.onRemoveBtnClick=t=>{t.stopImmediatePropagation();this.hostElement.dispatchEvent(new CustomEvent("click",{detail:{type:"remove",value:this.value||""},bubbles:true}))};this.onRemoveBtnFocus=t=>{t.stopPropagation()};this.onRemoveBtnKeydown=t=>{if(t.key==="ArrowLeft")this.focusItem()};this.q2LocValue=undefined;this.ariaLabel=undefined;this.disabled=undefined;this.label=undefined;this.removable=undefined;this.separator=undefined;this.value=undefined}componentWillLoad(){n(this);this.q2LocValue=this.handleQ2LocValue()}onHostElementFocus(t){if(t.target===this.hostElement){this.focusItem()}}ariaLabelObserver(){n(this)}get dropdownItemBtn(){return this.hostElement.shadowRoot.querySelector(".dropdown-item")}get innerLabel(){return this.label||this.hostElement.textContent.trim()||this.q2LocValue}get removeBtn(){return this.hostElement.shadowRoot.querySelector(".remove-dropdown-item")}get removeLabel(){return r("tecton.element.dropdownItem.remove",[this.innerLabel||""])}focusItem(){this.dropdownItemBtn.dispatchEvent(new FocusEvent("focus",{bubbles:false}))}focusRemoveBtn(){this.removeBtn&&this.removeBtn.dispatchEvent(new FocusEvent("focus",{bubbles:false}))}renderItemDOM(){return e("div",{class:"dropdown-item-wrapper"},e("q2-btn",{class:"dropdown-item",label:this.innerLabel,"hide-label":true,tabIndex:-1,disabled:this.disabled,_role:"menuitem",onClick:this.onItemClick,onKeyDown:this.onItemKeydown,onFocus:this.onItemFocus,"test-id":"dropdownItem"},e("div",{class:"dropdown-item-content"},e("slot",null))),!!this.removable&&e("q2-btn",{class:"remove-dropdown-item",label:this.removeLabel,"hide-label":true,disabled:this.disabled,_role:"menuitem",onClick:this.onRemoveBtnClick,onKeyDown:this.onRemoveBtnKeydown,onFocus:this.onRemoveBtnFocus,"test-id":"removeDropdownItem"},e("q2-icon",{type:"close"})))}renderSeparatorDOM(){return e("div",{class:"dropdown-separator",role:"separator","test-id":"dropdownItemSeparator"})}render(){if(!!this.separator){return this.renderSeparatorDOM()}return this.renderItemDOM()}get hostElement(){return o(this)}static get watchers(){return{ariaLabel:["ariaLabelObserver"]}}};a.style=d;export{a as q2_dropdown_item};
2
- //# sourceMappingURL=p-5a834214.entry.js.map