q2-tecton-elements 1.63.2 → 1.64.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (390) hide show
  1. package/dist/bundle-report.json +2382 -3464
  2. package/dist/cjs/action-sheet-D3n8vaeA.js.map +1 -1
  3. package/dist/cjs/index-CyqXtdz-.js.map +1 -1
  4. package/dist/cjs/loader.cjs.js +1 -1
  5. package/dist/cjs/q2-action-group_2.cjs.entry.js +1 -1
  6. package/dist/cjs/q2-action-sheet.cjs.entry.js +1 -1
  7. package/dist/cjs/q2-action-sheet.cjs.entry.js.map +1 -1
  8. package/dist/cjs/q2-action-sheet.entry.cjs.js.map +1 -1
  9. package/dist/cjs/q2-avatar.cjs.entry.js +4 -2
  10. package/dist/cjs/q2-avatar.cjs.entry.js.map +1 -1
  11. package/dist/cjs/q2-avatar.entry.cjs.js.map +1 -1
  12. package/dist/cjs/q2-btn.q2-loading.entry.cjs.js.map +1 -1
  13. package/dist/cjs/q2-btn_2.cjs.entry.js +2 -2
  14. package/dist/cjs/q2-btn_2.cjs.entry.js.map +1 -1
  15. package/dist/cjs/q2-card.cjs.entry.js +5 -5
  16. package/dist/cjs/q2-card.cjs.entry.js.map +1 -1
  17. package/dist/cjs/q2-card.entry.cjs.js.map +1 -1
  18. package/dist/cjs/q2-chart-area.cjs.entry.js +1 -1
  19. package/dist/cjs/q2-chart-area.cjs.entry.js.map +1 -1
  20. package/dist/cjs/q2-chart-area.entry.cjs.js.map +1 -1
  21. package/dist/cjs/q2-chart-bar.cjs.entry.js +1 -1
  22. package/dist/cjs/q2-chart-bar.cjs.entry.js.map +1 -1
  23. package/dist/cjs/q2-chart-bar.entry.cjs.js.map +1 -1
  24. package/dist/cjs/q2-chart-donut.cjs.entry.js +5 -5
  25. package/dist/cjs/q2-chart-donut.cjs.entry.js.map +1 -1
  26. package/dist/cjs/q2-chart-donut.entry.cjs.js.map +1 -1
  27. package/dist/cjs/q2-checkbox.cjs.entry.js +1 -1
  28. package/dist/cjs/q2-checkbox.cjs.entry.js.map +1 -1
  29. package/dist/cjs/q2-checkbox.entry.cjs.js.map +1 -1
  30. package/dist/cjs/q2-data-table.cjs.entry.js +15 -10
  31. package/dist/cjs/q2-data-table.cjs.entry.js.map +1 -1
  32. package/dist/cjs/q2-data-table.entry.cjs.js.map +1 -1
  33. package/dist/cjs/q2-dropdown-item.cjs.entry.js +3 -3
  34. package/dist/cjs/q2-dropdown-item.cjs.entry.js.map +1 -1
  35. package/dist/cjs/q2-dropdown-item.entry.cjs.js.map +1 -1
  36. package/dist/cjs/q2-dropdown.cjs.entry.js +1 -1
  37. package/dist/cjs/q2-dropdown.cjs.entry.js.map +1 -1
  38. package/dist/cjs/q2-dropdown.entry.cjs.js.map +1 -1
  39. package/dist/cjs/q2-file-picker.cjs.entry.js +24 -17
  40. package/dist/cjs/q2-file-picker.cjs.entry.js.map +1 -1
  41. package/dist/cjs/q2-file-picker.entry.cjs.js.map +1 -1
  42. package/dist/cjs/q2-formatted-text.cjs.entry.js +7 -7
  43. package/dist/cjs/q2-formatted-text.cjs.entry.js.map +1 -1
  44. package/dist/cjs/q2-formatted-text.entry.cjs.js.map +1 -1
  45. package/dist/cjs/q2-icon.cjs.entry.js +1 -0
  46. package/dist/cjs/q2-icon.cjs.entry.js.map +1 -1
  47. package/dist/cjs/q2-icon.entry.cjs.js.map +1 -1
  48. package/dist/cjs/q2-input.cjs.entry.js +8 -8
  49. package/dist/cjs/q2-input.cjs.entry.js.map +1 -1
  50. package/dist/cjs/q2-input.entry.cjs.js.map +1 -1
  51. package/dist/cjs/q2-legend.cjs.entry.js +1 -1
  52. package/dist/cjs/q2-legend.cjs.entry.js.map +1 -1
  53. package/dist/cjs/q2-legend.entry.cjs.js.map +1 -1
  54. package/dist/cjs/q2-link.q2-list.entry.cjs.js.map +1 -1
  55. package/dist/cjs/q2-link_2.cjs.entry.js +1 -1
  56. package/dist/cjs/q2-link_2.cjs.entry.js.map +1 -1
  57. package/dist/cjs/q2-modal.cjs.entry.js +1 -1
  58. package/dist/cjs/q2-modal.cjs.entry.js.map +1 -1
  59. package/dist/cjs/q2-modal.entry.cjs.js.map +1 -1
  60. package/dist/cjs/q2-mutation-observer.cjs.entry.js +106 -0
  61. package/dist/cjs/q2-mutation-observer.cjs.entry.js.map +1 -0
  62. package/dist/cjs/q2-mutation-observer.entry.cjs.js.map +1 -0
  63. package/dist/cjs/q2-optgroup.cjs.entry.js +1 -1
  64. package/dist/cjs/q2-pagination.cjs.entry.js +25 -5
  65. package/dist/cjs/q2-pagination.cjs.entry.js.map +1 -1
  66. package/dist/cjs/q2-pagination.entry.cjs.js.map +1 -1
  67. package/dist/cjs/q2-pill.cjs.entry.js +1 -1
  68. package/dist/cjs/q2-relative-time.cjs.entry.js +1 -1
  69. package/dist/cjs/q2-section-container.cjs.entry.js +102 -0
  70. package/dist/cjs/q2-section-container.cjs.entry.js.map +1 -0
  71. package/dist/cjs/q2-section-container.entry.cjs.js.map +1 -0
  72. package/dist/cjs/q2-section.cjs.entry.js +2 -2
  73. package/dist/cjs/q2-stepper-vertical.cjs.entry.js +1 -1
  74. package/dist/cjs/q2-stepper.cjs.entry.js +1 -1
  75. package/dist/cjs/q2-tab-container.cjs.entry.js +1 -1
  76. package/dist/cjs/q2-tab-pane.cjs.entry.js +1 -1
  77. package/dist/cjs/q2-tag.cjs.entry.js +1 -1
  78. package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
  79. package/dist/cjs/q2-textarea.cjs.entry.js +1 -1
  80. package/dist/cjs/q2-textarea.cjs.entry.js.map +1 -1
  81. package/dist/cjs/q2-textarea.entry.cjs.js.map +1 -1
  82. package/dist/cjs/tecton-tab-pane.cjs.entry.js +2 -2
  83. package/dist/collection/collection-manifest.json +2 -0
  84. package/dist/collection/components/q2-action-sheet/q2-action-sheet.js +7 -7
  85. package/dist/collection/components/q2-action-sheet/q2-action-sheet.js.map +1 -1
  86. package/dist/collection/components/q2-avatar/q2-avatar.css +69 -13
  87. package/dist/collection/components/q2-avatar/q2-avatar.js +23 -1
  88. package/dist/collection/components/q2-avatar/q2-avatar.js.map +1 -1
  89. package/dist/collection/components/q2-card/q2-card.js +5 -5
  90. package/dist/collection/components/q2-card/q2-card.js.map +1 -1
  91. package/dist/collection/components/q2-chart-area/q2-chart-area.js +1 -1
  92. package/dist/collection/components/q2-chart-area/q2-chart-area.js.map +1 -1
  93. package/dist/collection/components/q2-chart-bar/q2-chart-bar.js +1 -1
  94. package/dist/collection/components/q2-chart-bar/q2-chart-bar.js.map +1 -1
  95. package/dist/collection/components/q2-chart-donut/q2-chart-donut.css +17 -8
  96. package/dist/collection/components/q2-chart-donut/q2-chart-donut.js +4 -4
  97. package/dist/collection/components/q2-chart-donut/q2-chart-donut.js.map +1 -1
  98. package/dist/collection/components/q2-checkbox/q2-checkbox.css +14 -2
  99. package/dist/collection/components/q2-data-table/q2-data-table.css +8 -0
  100. package/dist/collection/components/q2-data-table/q2-data-table.js +67 -16
  101. package/dist/collection/components/q2-data-table/q2-data-table.js.map +1 -1
  102. package/dist/collection/components/q2-dropdown/q2-dropdown.js +1 -1
  103. package/dist/collection/components/q2-dropdown/q2-dropdown.js.map +1 -1
  104. package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.css +22 -5
  105. package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.js +2 -2
  106. package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.js.map +1 -1
  107. package/dist/collection/components/q2-file-picker/q2-file-picker.js +30 -23
  108. package/dist/collection/components/q2-file-picker/q2-file-picker.js.map +1 -1
  109. package/dist/collection/components/q2-formatted-text/q2-formatted-text.js +27 -27
  110. package/dist/collection/components/q2-formatted-text/q2-formatted-text.js.map +1 -1
  111. package/dist/collection/components/q2-grid/q2-grid.js +30 -30
  112. package/dist/collection/components/q2-grid-area/q2-grid-area.js +42 -42
  113. package/dist/collection/components/q2-icon/assets/cards.symbol.svg +1 -2
  114. package/dist/collection/components/q2-icon/assets/icon-list.json +1 -1
  115. package/dist/collection/components/q2-icon/assets/icon-map.json +1 -1
  116. package/dist/collection/components/q2-icon/assets/standard.symbol.svg +1 -1
  117. package/dist/collection/components/q2-icon/q2-icon-types.js.map +1 -1
  118. package/dist/collection/components/q2-input/q2-input.js +11 -11
  119. package/dist/collection/components/q2-input/q2-input.js.map +1 -1
  120. package/dist/collection/components/q2-legend/q2-legend.js +1 -1
  121. package/dist/collection/components/q2-legend/q2-legend.js.map +1 -1
  122. package/dist/collection/components/q2-link/q2-link.js +1 -1
  123. package/dist/collection/components/q2-link/q2-link.js.map +1 -1
  124. package/dist/collection/components/q2-loading/q2-loading.css +32 -20
  125. package/dist/collection/components/q2-loading/q2-loading.js +1 -1
  126. package/dist/collection/components/q2-loading/q2-loading.js.map +1 -1
  127. package/dist/collection/components/q2-modal/q2-modal.js +5 -5
  128. package/dist/collection/components/q2-modal/q2-modal.js.map +1 -1
  129. package/dist/collection/components/q2-mutation-observer/q2-mutation-observer.js +233 -0
  130. package/dist/collection/components/q2-mutation-observer/q2-mutation-observer.js.map +1 -0
  131. package/dist/collection/components/q2-optgroup/q2-optgroup.js +1 -1
  132. package/dist/collection/components/q2-option-list/q2-option-list.js +4 -4
  133. package/dist/collection/components/q2-pagination/q2-pagination.js +45 -5
  134. package/dist/collection/components/q2-pagination/q2-pagination.js.map +1 -1
  135. package/dist/collection/components/q2-pill/q2-pill.js +1 -1
  136. package/dist/collection/components/q2-relative-time/q2-relative-time.js +1 -1
  137. package/dist/collection/components/q2-resize-observer/q2-resize-observer.js +1 -1
  138. package/dist/collection/components/q2-section/q2-section.js +2 -2
  139. package/dist/collection/components/q2-section-container/q2-section-container.js +198 -0
  140. package/dist/collection/components/q2-section-container/q2-section-container.js.map +1 -0
  141. package/dist/collection/components/q2-stepper/q2-stepper.js +1 -1
  142. package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.js +2 -2
  143. package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js +1 -1
  144. package/dist/collection/components/q2-tab-container/q2-tab-container.js +1 -1
  145. package/dist/collection/components/q2-tab-pane/q2-tab-pane.js +1 -1
  146. package/dist/collection/components/q2-tag/q2-tag.js +1 -1
  147. package/dist/collection/components/q2-textarea/q2-textarea.js +1 -1
  148. package/dist/collection/components/q2-textarea/q2-textarea.js.map +1 -1
  149. package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js +2 -2
  150. package/dist/collection/utils/action-sheet.js.map +1 -1
  151. package/dist/collection/utils/helpers.js.map +1 -1
  152. package/dist/collection/utils/index.js.map +1 -1
  153. package/dist/components/action-sheet.js.map +1 -1
  154. package/dist/components/index.js +4 -0
  155. package/dist/components/index.js.map +1 -1
  156. package/dist/components/index2.js.map +1 -1
  157. package/dist/components/q2-action-sheet.js +1 -1
  158. package/dist/components/q2-action-sheet.js.map +1 -1
  159. package/dist/components/q2-avatar2.js +5 -2
  160. package/dist/components/q2-avatar2.js.map +1 -1
  161. package/dist/components/q2-card.js +5 -5
  162. package/dist/components/q2-card.js.map +1 -1
  163. package/dist/components/q2-chart-area.js +1 -1
  164. package/dist/components/q2-chart-area.js.map +1 -1
  165. package/dist/components/q2-chart-bar.js +1 -1
  166. package/dist/components/q2-chart-bar.js.map +1 -1
  167. package/dist/components/q2-chart-donut.js +5 -5
  168. package/dist/components/q2-chart-donut.js.map +1 -1
  169. package/dist/components/q2-checkbox2.js +1 -1
  170. package/dist/components/q2-checkbox2.js.map +1 -1
  171. package/dist/components/q2-data-table.js +17 -10
  172. package/dist/components/q2-data-table.js.map +1 -1
  173. package/dist/components/q2-dropdown-item2.js +3 -3
  174. package/dist/components/q2-dropdown-item2.js.map +1 -1
  175. package/dist/components/q2-dropdown.js +1 -1
  176. package/dist/components/q2-dropdown.js.map +1 -1
  177. package/dist/components/q2-file-picker.js +25 -18
  178. package/dist/components/q2-file-picker.js.map +1 -1
  179. package/dist/components/q2-formatted-text.js +9 -9
  180. package/dist/components/q2-formatted-text.js.map +1 -1
  181. package/dist/components/q2-icon2.js +1 -0
  182. package/dist/components/q2-icon2.js.map +1 -1
  183. package/dist/components/q2-input2.js +9 -9
  184. package/dist/components/q2-input2.js.map +1 -1
  185. package/dist/components/q2-legend2.js +1 -1
  186. package/dist/components/q2-legend2.js.map +1 -1
  187. package/dist/components/q2-link2.js +1 -1
  188. package/dist/components/q2-link2.js.map +1 -1
  189. package/dist/components/q2-loading2.js +2 -2
  190. package/dist/components/q2-loading2.js.map +1 -1
  191. package/dist/components/q2-modal.js +1 -1
  192. package/dist/components/q2-modal.js.map +1 -1
  193. package/dist/components/q2-mutation-observer.d.ts +11 -0
  194. package/dist/components/q2-mutation-observer.js +130 -0
  195. package/dist/components/q2-mutation-observer.js.map +1 -0
  196. package/dist/components/q2-optgroup2.js +1 -1
  197. package/dist/components/q2-pagination.js +26 -5
  198. package/dist/components/q2-pagination.js.map +1 -1
  199. package/dist/components/q2-pill.js +1 -1
  200. package/dist/components/q2-relative-time.js +1 -1
  201. package/dist/components/q2-resize-observer2.js +1 -1
  202. package/dist/components/q2-section-container.d.ts +11 -0
  203. package/dist/components/q2-section-container.js +128 -0
  204. package/dist/components/q2-section-container.js.map +1 -0
  205. package/dist/components/q2-section.js +2 -2
  206. package/dist/components/q2-stepper-vertical.js +1 -1
  207. package/dist/components/q2-stepper.js +1 -1
  208. package/dist/components/q2-tab-container.js +1 -1
  209. package/dist/components/q2-tab-pane.js +1 -1
  210. package/dist/components/q2-tag.js +1 -1
  211. package/dist/components/q2-textarea.js +1 -1
  212. package/dist/components/q2-textarea.js.map +1 -1
  213. package/dist/components/tecton-tab-pane.js +2 -2
  214. package/dist/esm/action-sheet-D3xPdhm8.js.map +1 -1
  215. package/dist/esm/index-YJ5sXwiE.js.map +1 -1
  216. package/dist/esm/loader.js +1 -1
  217. package/dist/esm/q2-action-group_2.entry.js +1 -1
  218. package/dist/esm/q2-action-sheet.entry.js +1 -1
  219. package/dist/esm/q2-action-sheet.entry.js.map +1 -1
  220. package/dist/esm/q2-avatar.entry.js +4 -2
  221. package/dist/esm/q2-avatar.entry.js.map +1 -1
  222. package/dist/esm/q2-btn.q2-loading.entry.js.map +1 -1
  223. package/dist/esm/q2-btn_2.entry.js +2 -2
  224. package/dist/esm/q2-btn_2.entry.js.map +1 -1
  225. package/dist/esm/q2-card.entry.js +5 -5
  226. package/dist/esm/q2-card.entry.js.map +1 -1
  227. package/dist/esm/q2-chart-area.entry.js +1 -1
  228. package/dist/esm/q2-chart-area.entry.js.map +1 -1
  229. package/dist/esm/q2-chart-bar.entry.js +1 -1
  230. package/dist/esm/q2-chart-bar.entry.js.map +1 -1
  231. package/dist/esm/q2-chart-donut.entry.js +5 -5
  232. package/dist/esm/q2-chart-donut.entry.js.map +1 -1
  233. package/dist/esm/q2-checkbox.entry.js +1 -1
  234. package/dist/esm/q2-checkbox.entry.js.map +1 -1
  235. package/dist/esm/q2-data-table.entry.js +15 -10
  236. package/dist/esm/q2-data-table.entry.js.map +1 -1
  237. package/dist/esm/q2-dropdown-item.entry.js +3 -3
  238. package/dist/esm/q2-dropdown-item.entry.js.map +1 -1
  239. package/dist/esm/q2-dropdown.entry.js +1 -1
  240. package/dist/esm/q2-dropdown.entry.js.map +1 -1
  241. package/dist/esm/q2-file-picker.entry.js +24 -17
  242. package/dist/esm/q2-file-picker.entry.js.map +1 -1
  243. package/dist/esm/q2-formatted-text.entry.js +7 -7
  244. package/dist/esm/q2-formatted-text.entry.js.map +1 -1
  245. package/dist/esm/q2-icon.entry.js +1 -0
  246. package/dist/esm/q2-icon.entry.js.map +1 -1
  247. package/dist/esm/q2-input.entry.js +8 -8
  248. package/dist/esm/q2-input.entry.js.map +1 -1
  249. package/dist/esm/q2-legend.entry.js +1 -1
  250. package/dist/esm/q2-legend.entry.js.map +1 -1
  251. package/dist/esm/q2-link.q2-list.entry.js.map +1 -1
  252. package/dist/esm/q2-link_2.entry.js +1 -1
  253. package/dist/esm/q2-link_2.entry.js.map +1 -1
  254. package/dist/esm/q2-modal.entry.js +1 -1
  255. package/dist/esm/q2-modal.entry.js.map +1 -1
  256. package/dist/esm/q2-mutation-observer.entry.js +104 -0
  257. package/dist/esm/q2-mutation-observer.entry.js.map +1 -0
  258. package/dist/esm/q2-optgroup.entry.js +1 -1
  259. package/dist/esm/q2-pagination.entry.js +25 -5
  260. package/dist/esm/q2-pagination.entry.js.map +1 -1
  261. package/dist/esm/q2-pill.entry.js +1 -1
  262. package/dist/esm/q2-relative-time.entry.js +1 -1
  263. package/dist/esm/q2-section-container.entry.js +100 -0
  264. package/dist/esm/q2-section-container.entry.js.map +1 -0
  265. package/dist/esm/q2-section.entry.js +2 -2
  266. package/dist/esm/q2-stepper-vertical.entry.js +1 -1
  267. package/dist/esm/q2-stepper.entry.js +1 -1
  268. package/dist/esm/q2-tab-container.entry.js +1 -1
  269. package/dist/esm/q2-tab-pane.entry.js +1 -1
  270. package/dist/esm/q2-tag.entry.js +1 -1
  271. package/dist/esm/q2-tecton-elements.js +1 -1
  272. package/dist/esm/q2-textarea.entry.js +1 -1
  273. package/dist/esm/q2-textarea.entry.js.map +1 -1
  274. package/dist/esm/tecton-tab-pane.entry.js +2 -2
  275. package/dist/q2-tecton-elements/action-sheet-D3xPdhm8.js.map +1 -1
  276. package/dist/q2-tecton-elements/assets/cards.symbol.svg +1 -2
  277. package/dist/q2-tecton-elements/assets/icon-list.json +1 -1
  278. package/dist/q2-tecton-elements/assets/icon-map.json +1 -1
  279. package/dist/q2-tecton-elements/assets/standard.symbol.svg +1 -1
  280. package/dist/q2-tecton-elements/charting-Ckq0XMDu.js.map +1 -0
  281. package/dist/q2-tecton-elements/index-CvNuBFrq.js.map +1 -0
  282. package/dist/q2-tecton-elements/index-DIB7EjIC.js.map +1 -0
  283. package/dist/q2-tecton-elements/index-RUz6101x.js.map +1 -0
  284. package/dist/q2-tecton-elements/index-YJ5sXwiE.js.map +1 -1
  285. package/dist/q2-tecton-elements/q2-action-group_2.entry.js +1 -1
  286. package/dist/q2-tecton-elements/q2-action-sheet.entry.esm.js.map +1 -1
  287. package/dist/q2-tecton-elements/q2-action-sheet.entry.js +62 -62
  288. package/dist/q2-tecton-elements/q2-action-sheet.entry.js.map +1 -1
  289. package/dist/q2-tecton-elements/q2-avatar.entry.esm.js.map +1 -1
  290. package/dist/q2-tecton-elements/q2-avatar.entry.js +26 -25
  291. package/dist/q2-tecton-elements/q2-avatar.entry.js.map +1 -1
  292. package/dist/q2-tecton-elements/q2-btn.q2-loading.entry.esm.js.map +1 -1
  293. package/dist/q2-tecton-elements/q2-btn_2.entry.js +11 -6
  294. package/dist/q2-tecton-elements/q2-btn_2.entry.js.map +1 -1
  295. package/dist/q2-tecton-elements/q2-card.entry.esm.js.map +1 -1
  296. package/dist/q2-tecton-elements/q2-card.entry.js +5 -5
  297. package/dist/q2-tecton-elements/q2-card.entry.js.map +1 -1
  298. package/dist/q2-tecton-elements/q2-chart-area.entry.esm.js.map +1 -1
  299. package/dist/q2-tecton-elements/q2-chart-area.entry.js +2 -2
  300. package/dist/q2-tecton-elements/q2-chart-area.entry.js.map +1 -1
  301. package/dist/q2-tecton-elements/q2-chart-bar.entry.esm.js.map +1 -1
  302. package/dist/q2-tecton-elements/q2-chart-bar.entry.js +2 -2
  303. package/dist/q2-tecton-elements/q2-chart-bar.entry.js.map +1 -1
  304. package/dist/q2-tecton-elements/q2-chart-donut.entry.esm.js.map +1 -1
  305. package/dist/q2-tecton-elements/q2-chart-donut.entry.js +48 -47
  306. package/dist/q2-tecton-elements/q2-chart-donut.entry.js.map +1 -1
  307. package/dist/q2-tecton-elements/q2-checkbox.entry.esm.js.map +1 -1
  308. package/dist/q2-tecton-elements/q2-checkbox.entry.js +6 -6
  309. package/dist/q2-tecton-elements/q2-checkbox.entry.js.map +1 -1
  310. package/dist/q2-tecton-elements/q2-data-table.entry.esm.js.map +1 -1
  311. package/dist/q2-tecton-elements/q2-data-table.entry.js +23 -19
  312. package/dist/q2-tecton-elements/q2-data-table.entry.js.map +1 -1
  313. package/dist/q2-tecton-elements/q2-dropdown-item.entry.esm.js.map +1 -1
  314. package/dist/q2-tecton-elements/q2-dropdown-item.entry.js +23 -21
  315. package/dist/q2-tecton-elements/q2-dropdown-item.entry.js.map +1 -1
  316. package/dist/q2-tecton-elements/q2-dropdown.entry.esm.js.map +1 -1
  317. package/dist/q2-tecton-elements/q2-dropdown.entry.js +4 -4
  318. package/dist/q2-tecton-elements/q2-dropdown.entry.js.map +1 -1
  319. package/dist/q2-tecton-elements/q2-file-picker.entry.esm.js.map +1 -1
  320. package/dist/q2-tecton-elements/q2-file-picker.entry.js +42 -35
  321. package/dist/q2-tecton-elements/q2-file-picker.entry.js.map +1 -1
  322. package/dist/q2-tecton-elements/q2-formatted-text.entry.esm.js.map +1 -1
  323. package/dist/q2-tecton-elements/q2-formatted-text.entry.js +7 -7
  324. package/dist/q2-tecton-elements/q2-formatted-text.entry.js.map +1 -1
  325. package/dist/q2-tecton-elements/q2-icon.entry.esm.js.map +1 -1
  326. package/dist/q2-tecton-elements/q2-icon.entry.js +1 -0
  327. package/dist/q2-tecton-elements/q2-icon.entry.js.map +1 -1
  328. package/dist/q2-tecton-elements/q2-input.entry.esm.js.map +1 -1
  329. package/dist/q2-tecton-elements/q2-input.entry.js +7 -7
  330. package/dist/q2-tecton-elements/q2-input.entry.js.map +1 -1
  331. package/dist/q2-tecton-elements/q2-legend.entry.esm.js.map +1 -1
  332. package/dist/q2-tecton-elements/q2-legend.entry.js +2 -2
  333. package/dist/q2-tecton-elements/q2-legend.entry.js.map +1 -1
  334. package/dist/q2-tecton-elements/q2-link.q2-list.entry.esm.js.map +1 -1
  335. package/dist/q2-tecton-elements/q2-link_2.entry.js +1 -0
  336. package/dist/q2-tecton-elements/q2-link_2.entry.js.map +1 -1
  337. package/dist/q2-tecton-elements/q2-modal.entry.esm.js.map +1 -1
  338. package/dist/q2-tecton-elements/q2-modal.entry.js +23 -23
  339. package/dist/q2-tecton-elements/q2-modal.entry.js.map +1 -1
  340. package/dist/q2-tecton-elements/q2-mutation-observer.entry.esm.js.map +1 -0
  341. package/dist/q2-tecton-elements/q2-mutation-observer.entry.js +107 -0
  342. package/dist/q2-tecton-elements/q2-mutation-observer.entry.js.map +1 -0
  343. package/dist/q2-tecton-elements/q2-optgroup.entry.js +4 -4
  344. package/dist/q2-tecton-elements/q2-pagination.entry.esm.js.map +1 -1
  345. package/dist/q2-tecton-elements/q2-pagination.entry.js +50 -38
  346. package/dist/q2-tecton-elements/q2-pagination.entry.js.map +1 -1
  347. package/dist/q2-tecton-elements/q2-pill.entry.js +12 -12
  348. package/dist/q2-tecton-elements/q2-relative-time.entry.js +1 -1
  349. package/dist/q2-tecton-elements/q2-section-container.entry.esm.js.map +1 -0
  350. package/dist/q2-tecton-elements/q2-section-container.entry.js +95 -0
  351. package/dist/q2-tecton-elements/q2-section-container.entry.js.map +1 -0
  352. package/dist/q2-tecton-elements/q2-section.entry.js +11 -11
  353. package/dist/q2-tecton-elements/q2-stepper-vertical.entry.js +37 -37
  354. package/dist/q2-tecton-elements/q2-stepper.entry.js +12 -12
  355. package/dist/q2-tecton-elements/q2-tab-container.entry.js +12 -12
  356. package/dist/q2-tecton-elements/q2-tab-pane.entry.js +2 -2
  357. package/dist/q2-tecton-elements/q2-tag.entry.js +15 -15
  358. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
  359. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js.map +1 -1
  360. package/dist/q2-tecton-elements/q2-textarea.entry.esm.js.map +1 -1
  361. package/dist/q2-tecton-elements/q2-textarea.entry.js +2 -2
  362. package/dist/q2-tecton-elements/q2-textarea.entry.js.map +1 -1
  363. package/dist/q2-tecton-elements/sanitize-html-string-Csx7LCh3.js.map +1 -0
  364. package/dist/q2-tecton-elements/shapes-BJsBbYur.js.map +1 -0
  365. package/dist/q2-tecton-elements/tecton-tab-pane.entry.js +6 -6
  366. package/dist/types/components/q2-action-sheet/q2-action-sheet.d.ts +1 -1
  367. package/dist/types/components/q2-avatar/q2-avatar.d.ts +2 -0
  368. package/dist/types/components/q2-card/q2-card.d.ts +1 -1
  369. package/dist/types/components/q2-chart-area/q2-chart-area.d.ts +1 -1
  370. package/dist/types/components/q2-chart-bar/q2-chart-bar.d.ts +1 -1
  371. package/dist/types/components/q2-chart-donut/q2-chart-donut.d.ts +1 -1
  372. package/dist/types/components/q2-data-table/q2-data-table.d.ts +9 -3
  373. package/dist/types/components/q2-file-picker/q2-file-picker.d.ts +3 -1
  374. package/dist/types/components/q2-formatted-text/q2-formatted-text.d.ts +6 -6
  375. package/dist/types/components/q2-icon/q2-icon-types.d.ts +1 -2
  376. package/dist/types/components/q2-input/q2-input.d.ts +1 -1
  377. package/dist/types/components/q2-legend/q2-legend.d.ts +1 -1
  378. package/dist/types/components/q2-modal/q2-modal.d.ts +1 -1
  379. package/dist/types/components/q2-mutation-observer/q2-mutation-observer.d.ts +40 -0
  380. package/dist/types/components/q2-pagination/q2-pagination.d.ts +2 -0
  381. package/dist/types/components/q2-section-container/q2-section-container.d.ts +34 -0
  382. package/dist/types/components/q2-textarea/q2-textarea.d.ts +1 -2
  383. package/dist/types/components.d.ts +175 -4
  384. package/dist/types/global.d.ts +3 -3
  385. package/dist/types/util.d.ts +6 -6
  386. package/dist/types/utils/action-sheet.d.ts +1 -1
  387. package/dist/types/utils/helpers.d.ts +2 -3
  388. package/dist/types/utils/index.d.ts +2 -2
  389. package/package.json +5 -5
  390. /package/dist/types/{builds/q2e/development/tecton/tecton → Users/kvanhouten/Documents/Work/tecton_extra}/packages/q2-tecton-elements/.stencil/jest.setup.d.ts +0 -0
@@ -12,6 +12,7 @@ const l = class {
12
12
  // #region Public Property API
13
13
  /** Indicates the horizontal alignment of pagination elements */ this.alignment = "right";
14
14
  /** Determines whether the component uses dynamic resizing behavior. This is disabled when `pagesOnly`, `recordsOnly`, or `stacked` is true. */ this.autoSize = true;
15
+ /** Allows the component to be disabled should the state of the page require this */ this.disabled = false;
15
16
  this.checkSize = () => {
16
17
  const {hostElement: t, containerElement: e} = this;
17
18
  const i = this.containerWidth > t.clientWidth;
@@ -25,6 +26,7 @@ const l = class {
25
26
  }));
26
27
  };
27
28
  this.handlePageChange = t => {
29
+ if (this.disabled) return;
28
30
  const {totalPages: e, inputField: i} = this;
29
31
  t = parseInt(`${t}`);
30
32
  if (isNaN(t) || t < 1) {
@@ -41,6 +43,7 @@ const l = class {
41
43
  });
42
44
  };
43
45
  this.handlePerPageChange = t => {
46
+ if (this.disabled) return;
44
47
  this.perPage = t.detail.value * 1;
45
48
  };
46
49
  }
@@ -61,6 +64,7 @@ const l = class {
61
64
  // #region Listeners
62
65
  onHostElementFocus(t) {
63
66
  var e;
67
+ if (this.disabled) return;
64
68
  if (!o(t, this.hostElement)) return;
65
69
  const {isFullViewHidden: i, containerElement: n, inputField: a} = this;
66
70
  if (i) {
@@ -78,6 +82,7 @@ const l = class {
78
82
  * @testOnly
79
83
  */
80
84
  async clickFirstPage() {
85
+ if (this.disabled) return;
81
86
  const t = this.firstPageBtn;
82
87
  if (t === null || t === void 0 ? void 0 : t.disabled) return;
83
88
  t.click();
@@ -88,6 +93,7 @@ const l = class {
88
93
  * If the `<button>` is disabled, this method does nothing.
89
94
  * @testOnly
90
95
  */ async clickLastPage() {
96
+ if (this.disabled) return;
91
97
  const t = this.lastPageBtn;
92
98
  if (t === null || t === void 0 ? void 0 : t.disabled) return;
93
99
  t.click();
@@ -98,6 +104,7 @@ const l = class {
98
104
  * If the `<button>` is disabled, this method does nothing.
99
105
  * @testOnly
100
106
  */ async clickNextPage() {
107
+ if (this.disabled) return;
101
108
  const t = this.nextPageBtn;
102
109
  if (t === null || t === void 0 ? void 0 : t.disabled) return;
103
110
  t.click();
@@ -108,6 +115,7 @@ const l = class {
108
115
  * If the `<button>` is disabled, this method does nothing.
109
116
  * @testOnly
110
117
  */ async clickPreviousPage() {
118
+ if (this.disabled) return;
111
119
  const t = this.prevPageBtn;
112
120
  if (t === null || t === void 0 ? void 0 : t.disabled) return;
113
121
  t.click();
@@ -120,6 +128,7 @@ const l = class {
120
128
  * @testOnly
121
129
  */ async selectPerPageIncrementValue(t) {
122
130
  var e;
131
+ if (this.disabled) return;
123
132
  if (isNaN(t) || !this.showPerPageSelect || !this.perPageIncrementsArray.includes(t)) return;
124
133
  this.perPageSelect.focus();
125
134
  this.perPageSelect.click();
@@ -134,6 +143,7 @@ const l = class {
134
143
  * @testOnly
135
144
  */ async setPageValue(t) {
136
145
  var e, i;
146
+ if (this.disabled) return;
137
147
  if (!this.inputField || isNaN(t) || t < 1 || t > this.totalPages) return;
138
148
  (e = this.inputField) === null || e === void 0 ? void 0 : e.focus();
139
149
  this.inputField.value = `${t}`;
@@ -230,7 +240,8 @@ const l = class {
230
240
  return i("q2-select", {
231
241
  ref: t => this.perPageSelect = t,
232
242
  onChange: this.handlePerPageChange,
233
- value: this.perPageIncrementsArray.includes(this.perPage) ? `${this.perPage}` : undefined
243
+ value: this.perPageIncrementsArray.includes(this.perPage) ? `${this.perPage}` : undefined,
244
+ disabled: this.disabled
234
245
  }, t.map((t => i("q2-option", {
235
246
  value: `${t}`,
236
247
  display: `${r("tecton.element.pagination.view")} ${t}`
@@ -238,39 +249,39 @@ const l = class {
238
249
  }
239
250
  render() {
240
251
  var t;
241
- const {pagesOnly: e, recordsOnly: n, isFullViewHidden: a, recordTypeWithDefault: s, totalPages: o, totalWithDefault: c, pageWithDefault: l, currentRange: h, nextRange: p, prevRange: d, showPerPageSelect: g} = this;
242
- const f = l < 2;
243
- const u = l === o;
244
- let b = r("tecton.element.pagination.goToNext");
245
- let v = r("tecton.element.pagination.goToPrevious");
252
+ const {pagesOnly: e, recordsOnly: n, isFullViewHidden: a, recordTypeWithDefault: s, totalPages: o, totalWithDefault: c, pageWithDefault: l, currentRange: h, nextRange: d, prevRange: p, showPerPageSelect: g, disabled: f} = this;
253
+ const u = l < 2;
254
+ const b = l === o;
255
+ let v = r("tecton.element.pagination.goToNext");
256
+ let y = r("tecton.element.pagination.goToPrevious");
246
257
  if (e) {
247
- v = r("tecton.element.pagination.goToPages", {
258
+ y = r("tecton.element.pagination.goToPages", {
248
259
  next: l - 1,
249
260
  total: o
250
261
  });
251
- b = r("tecton.element.pagination.goToPages", {
262
+ v = r("tecton.element.pagination.goToPages", {
252
263
  next: l + 1,
253
264
  total: o
254
265
  });
255
266
  } else if (n) {
256
- v = r("tecton.element.pagination.goToRecords", {
257
- range: d,
267
+ y = r("tecton.element.pagination.goToRecords", {
268
+ range: p,
258
269
  recordType: s.toLowerCase(),
259
270
  total: c
260
271
  });
261
- b = r("tecton.element.pagination.goToRecords", {
262
- range: p,
272
+ v = r("tecton.element.pagination.goToRecords", {
273
+ range: d,
263
274
  recordType: s.toLowerCase(),
264
275
  total: c
265
276
  });
266
277
  }
267
278
  return i("nav", {
268
- key: "ff2d67fa5ec9b02c562fb5fbd430d054a1f22ff5",
279
+ key: "e361c761f1215578c0ae8c92d9aed8a3a7b3db2c",
269
280
  class: this.containerClasses.join(" "),
270
281
  ref: t => this.containerElement = t,
271
282
  "aria-label": r("tecton.element.pagination.title")
272
283
  }, i("div", {
273
- key: "b6e7a0648e03303848a48df370b9424f5a43317a",
284
+ key: "1f24bdc3815f324339071c66159d9075e806c51f",
274
285
  class: "description",
275
286
  "test-id": "description"
276
287
  }, e ? r("tecton.element.pagination.pages", {
@@ -281,47 +292,47 @@ const l = class {
281
292
  recordType: s.toLowerCase(),
282
293
  total: c.toLocaleString()
283
294
  })), i("div", {
284
- key: "45618378f232169ca593b008277b6f27f4a4a6c8",
295
+ key: "7e57d4ca13d2607d35819d6742e2f75ecc217ced",
285
296
  class: "controls"
286
297
  }, i("div", {
287
- key: "99202f961f90314e19d3e22e57c4d2ee17fe7081",
298
+ key: "a19255ad887040652c2095e38765cf28ee59f4bc",
288
299
  class: "btn-group"
289
300
  }, i("q2-btn", {
290
- key: "873f7cc19194c02209a5ebde71d8c3a66602fcbd",
301
+ key: "739c592502590b9c29f9e1cad0618c2b3c78f9a5",
291
302
  ref: t => this.firstPageBtn = t,
292
303
  label: r("tecton.element.pagination.goToFirstPage"),
293
- disabled: f,
304
+ disabled: f || u,
294
305
  hidden: a,
295
306
  onClick: () => this.handlePageChange(1),
296
307
  "test-id": "firstPageBtn",
297
308
  "hide-label": true
298
309
  }, i("q2-icon", {
299
- key: "39c2b383873470b31db5a20555130a58f60f0fa1",
310
+ key: "2f3548edc4ef3ef35f49a14bb6e16c909f15b9ef",
300
311
  type: "chevron-double-left"
301
312
  })), i("q2-btn", {
302
- key: "7a1a2723c98490393ed05d9c62746114a894cbbb",
313
+ key: "57e5ecacd4149bf540f476d8a9e9dce7de5d4812",
303
314
  ref: t => this.prevPageBtn = t,
304
- label: v,
305
- disabled: f,
315
+ label: y,
316
+ disabled: f || u,
306
317
  onClick: () => this.handlePageChange(l - 1),
307
318
  "test-id": "prevPageBtn",
308
319
  "hide-label": true
309
320
  }, i("q2-icon", {
310
- key: "b72239efda8f4dd8cf007e24fa27b7bba373eb26",
321
+ key: "382d537e1a8d61c8212cf0a17a2f6be5c85d7da6",
311
322
  type: "chevron-left"
312
323
  }))), i("div", {
313
- key: "8baa75ed71a56d48cfaea72bf6b706a458bc61ab",
324
+ key: "dd6afd78e533ff445912854131757f13d92bb8f1",
314
325
  class: "input-display",
315
326
  hidden: a
316
327
  }, i("span", {
317
- key: "05d5651db1d26bab5abfb7dad42a554ec58c6785",
328
+ key: "a016b75b1e9de2446f8e90e3ed73db296bfc1c20",
318
329
  "aria-hidden": "true"
319
330
  }, r("tecton.element.pagination.page")), i("div", {
320
- key: "9110938a5e8407e23449cfa1150b6127edcbb306",
331
+ key: "f5a2ef87d3382cd6cf4ea7311c2a71184648d825",
321
332
  class: "input-wrapper",
322
333
  onClick: () => this.inputField.dispatchEvent(new FocusEvent("focus"))
323
334
  }, i("q2-input", {
324
- key: "63f66f6ff6db96e29a10b816cb37ad95d89f92fd",
335
+ key: "1cb2e7458d9c085068c80043f1a3e05d7ab16867",
325
336
  ref: t => this.inputField = t,
326
337
  type: "number",
327
338
  value: `${l}`,
@@ -335,38 +346,39 @@ const l = class {
335
346
  this.handlePageChange(t.detail.value);
336
347
  },
337
348
  "test-id": "pageInput",
338
- current: "page"
349
+ current: "page",
350
+ disabled: f
339
351
  })), i("span", {
340
- key: "9581a223b29ab6abea350f6c8d970074970e9632",
352
+ key: "38eb5fd6b5da163ef1ea61e9c3faa2e8e78ab555",
341
353
  "aria-hidden": "true"
342
354
  }, r("tecton.element.pagination.ofPages", [ o.toLocaleString() ]))), i("div", {
343
- key: "dd276153e4d88987e849cf72140560bf9d9419a0",
355
+ key: "eb1511ae4ccfd6bd88f858deadfffe0a5a3d791d",
344
356
  class: "btn-group"
345
357
  }, i("q2-btn", {
346
- key: "b7a26bfeba26042a9a3eed2b45114bf6de110c56",
358
+ key: "c16ad56cac594f73eafcec87d613768b6a4771a6",
347
359
  ref: t => this.nextPageBtn = t,
348
- label: b,
349
- disabled: u,
360
+ label: v,
361
+ disabled: f || b,
350
362
  onClick: () => this.handlePageChange(l + 1),
351
363
  "test-id": "nextPageBtn",
352
364
  "hide-label": true
353
365
  }, i("q2-icon", {
354
- key: "b5d9a65fbcd44cdd814ed37137efe3e05c567117",
366
+ key: "5ed0f655aad405b41d16f6f70a2f5f2355163918",
355
367
  type: "chevron-right"
356
368
  })), i("q2-btn", {
357
- key: "8d19df8df2d928f052beb4437f368cc61faf06ff",
369
+ key: "3f32e59bb7063093f08663b175ebc736cb02dd6a",
358
370
  ref: t => this.lastPageBtn = t,
359
371
  label: "tecton.element.pagination.goToLastPage",
360
- disabled: u,
372
+ disabled: f || b,
361
373
  hidden: a,
362
374
  onClick: () => this.handlePageChange(o),
363
375
  "test-id": "lastPageBtn",
364
376
  "hide-label": true
365
377
  }, i("q2-icon", {
366
- key: "5daf583e551905f924bbf7c3942a80aa1d46d911",
378
+ key: "2fcebb986383e784c91a7c828f20de7503b07d6e",
367
379
  type: "chevron-double-right"
368
380
  })))), i("div", {
369
- key: "f8f5b4141b084969d17ee78d06504501c3e7bff4",
381
+ key: "08af55bdfd90c01f1491d4000ea1db4fc9684e51",
370
382
  class: "per-page",
371
383
  hidden: a || !((t = this.perPageIncrements) === null || t === void 0 ? void 0 : t.length)
372
384
  }, g && this.renderPerPage()));
@@ -1 +1 @@
1
- {"version":3,"names":["q2PaginationCss","Q2Pagination","constructor","hostRef","this","alignment","autoSize","checkSize","hostElement","containerElement","isOverflowing","containerWidth","clientWidth","isSmall","nextPaint","containerWidthHasNotChanged","handlePageChange","page","totalPages","inputField","parseInt","isNaN","value","onchange","change","emit","handlePerPageChange","event","perPage","detail","disconnectedCallback","removeResizeObserver","componentWillLoad","checkDisplayTypes","manageResizeObserver","componentDidLoad","overrideFocus","onHostElementFocus","isEventFromElement","isFullViewHidden","_a","querySelector","focus","clickFirstPage","button","firstPageBtn","disabled","click","clickLastPage","lastPageBtn","clickNextPage","nextPageBtn","clickPreviousPage","prevPageBtn","selectPerPageIncrementValue","showPerPageSelect","perPageIncrementsArray","includes","perPageSelect","options","Array","from","querySelectorAll","find","option","setPageValue","_b","blur","resizeObserver","ResizeObserver","observe","window","addEventListener","pagesOnly","recordsOnly","stacked","containerClasses","classes","push","currentRange","perPageWithDefault","totalWithDefault","total","pageWithDefault","start","end","Math","min","nextRange","isArray","perPageIncrements","map","num","Number","trim","replace","split","prevRange","max","recordTypeWithDefault","recordType","loc","length","pages","ceil","disconnect","removeEventListener","renderPerPage","increments","sort","a","b","undefined","join","h","ref","el","onChange","display","render","onFirstPage","onLastPage","nextButtonLabel","prevButtonLabel","next","range","toLowerCase","key","class","current","toLocaleString","label","hidden","onClick","type","dispatchEvent","FocusEvent","hideLabel","optional","stopPropagation"],"sources":["src/components/q2-pagination/q2-pagination.scss?tag=q2-pagination&encapsulation=shadow","src/components/q2-pagination/q2-pagination.tsx"],"sourcesContent":["@import '../../styles/host';\n@import '../../styles/functions';\n\n:host {\n display: flex;\n width: 100%;\n}\n\n:host([alignment='right']) {\n justify-content: flex-end;\n}\n\n:host([alignment='center']) {\n justify-content: center;\n}\n\n:host([alignment='left']) {\n justify-content: flex-start;\n}\n\n:host([hidden]) {\n display: none;\n}\n\n.container {\n display: inline-flex;\n column-gap: var-list(var-prefixer(pagination-column-gap), --app-scale-2x, 10px);\n align-items: center;\n height: var-list(var-prefixer(pagination-height), 44px);\n\n &.stacked {\n flex-direction: column;\n column-gap: 0;\n row-gap: var-list(--tct-pagination-row-gap, --app-scale-2x, 10px);\n height: auto;\n align-items: stretch;\n\n .description {\n text-align: center;\n }\n\n .controls {\n justify-content: center;\n }\n\n .per-page {\n display: flex;\n justify-content: center;\n }\n\n q2-select {\n --tct-select-margin: 0;\n width: var(--tct-pagination-perpage-width, 60%);\n }\n }\n}\n\n.controls {\n display: flex;\n}\n\n.btn-group {\n display: flex;\n gap: var-list(var-prefixer(pagination-btn-gap), 0);\n}\n\n.description,\n.input-display {\n white-space: nowrap;\n}\n\n.input-display {\n display: grid;\n grid-template-columns: auto var(--tct-pagination-input-width, 50px) auto;\n align-items: center;\n gap: var-list(var-prefixer(pagination-controls-gap), --app-scale-1x, 5px);\n\n &[hidden] {\n display: none;\n }\n}\n\n.input-wrapper {\n height: var-list(var-prefixer(pagination-height), 44px);\n display: flex;\n align-items: center;\n}\n\nq2-btn {\n --tct-btn-border-radius: #{var-list(var-prefixer(pagination-btn-border-radius))};\n --tct-btn-border: #{var-list(var-prefixer(pagination-btn-border))};\n --tct-btn-icon-hover-background: #{var-list(--tct-pagination-btn-hover-background, --app-gray-l3, #f2f2f2)};\n --tct-icon-stroke-primary: #{var-list(--tct-pagination-btn-icon-stroke-primary, --app-gray, #747474)};\n --tct-icon-stroke-secondary: #{var-list(--tct-pagination-btn-icon-stroke-secondary, --app-gray, #747474)};\n}\n\nq2-icon {\n --tct-icon-size: #{var-list(var-prefixer(pagination-icon-size), 12px)};\n color: var-list(var-prefixer(pagination-icon-color), --t-text, #4d4d4d);\n}\n\nq2-input {\n --tct-input-margin-top: 0;\n --tct-input-margin-bottom: 0;\n --tct-input-height: #{var-list(var-prefixer(pagination-input-height), 30px)};\n --tct-input-min-height: var(--tct-input-height);\n --tct-input-align: center;\n}\n\nq2-select {\n --tct-select-input-min-height: #{var-list(var-prefixer(pagination-select-height), 30px)};\n --tct-select-input-max-height: #{var-list(var-prefixer(pagination-select-height), 30px)};\n width: #{var-list(var-prefixer(pagination-perpage-width), 100%)};\n min-width: #{var-list(var-prefixer(pagination-perpage-min-width), 110px)};\n}\n","import {\n Component,\n State,\n Prop,\n h,\n ComponentInterface,\n Watch,\n Listen,\n Element,\n Method,\n Event,\n EventEmitter,\n} from '@stencil/core';\nimport { isEventFromElement, loc, nextPaint, overrideFocus } from 'src/utils';\n\n@Component({ tag: 'q2-pagination', shadow: true, styleUrl: 'q2-pagination.scss' })\nexport class Q2Pagination implements ComponentInterface {\n // #region Own Properties\n\n containerElement: HTMLElement;\n containerWidth: number;\n firstPageBtn: HTMLQ2BtnElement;\n inputField: HTMLQ2InputElement;\n lastPageBtn: HTMLQ2BtnElement;\n nextPageBtn: HTMLQ2BtnElement;\n perPageSelect: HTMLQ2SelectElement;\n prevPageBtn: HTMLQ2BtnElement;\n resizeObserver: ResizeObserver;\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 isSmall: boolean;\n\n // #endregion\n // #region Public Property API\n\n /** Indicates the horizontal alignment of pagination elements */\n @Prop()\n alignment: 'left' | 'center' | 'right' = 'right';\n\n /** Determines whether the component uses dynamic resizing behavior. This is disabled when `pagesOnly`, `recordsOnly`, or `stacked` is true. */\n @Prop({ reflect: true, mutable: true })\n autoSize: boolean = true;\n\n /** The current page that is being displayed. */\n @Prop({ reflect: true, mutable: true })\n page: number;\n\n /**\n * The number of pages that can be displayed.\n * @info\n * Only referenced when `pagesOnly` is true.\n */\n @Prop({ reflect: true, mutable: true })\n pages: number;\n\n /** Indicates to display only the current and total pages. This disables the `autoSize` feature. */\n @Prop({ reflect: true, mutable: true })\n pagesOnly: boolean;\n\n /** The total number of records displayed on each page. This disables the `autoSize` feature. */\n @Prop({ reflect: true, mutable: true })\n perPage: number;\n\n /**\n * A list of perPage values.\n * This generates a [Select](https://tecton.q2developer.com/design-system/q2-select/) element that allows the user to modify the `perPage` value.\n * @info\n * `pagesOnly` or `recordsOnly` being true disables this feature.\n *\n * **Example:**\n * @snippet\n * this.perPageIncrements = [10, 25, 50];\n */\n @Prop({ reflect: true, mutable: true })\n perPageIncrements: number[] | string[] | string | undefined;\n\n /** Indicates to display only the current and total records. */\n @Prop({ reflect: true, mutable: true })\n recordsOnly: boolean;\n\n /** Description of the record type to be displayed alongside the record count. */\n @Prop()\n recordType: string;\n\n /** Allows the component to be displayed in a stacked layout. This disables the `autoSize` feature. */\n @Prop({ reflect: true })\n stacked: boolean;\n\n /** The total number of records to paginate. */\n @Prop({ reflect: true })\n total: number;\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when the page is changed.\n * @legacyEvent\n */\n @Event()\n change: EventEmitter<{ page: number }>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback() {\n this.removeResizeObserver();\n }\n\n componentWillLoad(): void {\n this.checkDisplayTypes();\n this.manageResizeObserver();\n }\n\n componentDidLoad(): void {\n this.containerWidth = this.containerElement.clientWidth;\n\n overrideFocus(this.hostElement);\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('focus')\n onHostElementFocus(event) {\n if (!isEventFromElement(event, this.hostElement)) return;\n const { isFullViewHidden, containerElement, inputField } = this;\n if (isFullViewHidden) {\n containerElement.querySelector<HTMLElement>('q2-btn:not([disabled])')?.focus();\n } else {\n inputField.focus();\n }\n }\n\n // #endregion\n // #region Public Methods API\n\n /**\n * Emulates clicking the button that controls moving to the first page, and emitting a change event with the updated page number.\n *\n * If the `<button>` is disabled, this method does nothing.\n * @testOnly\n */\n @Method()\n async clickFirstPage() {\n const button = this.firstPageBtn;\n if (button?.disabled) return;\n button.click();\n }\n\n /**\n * Emulates clicking the button that controls moving to the last page, and emitting a change event with the updated page number.\n *\n * If the `<button>` is disabled, this method does nothing.\n * @testOnly\n */\n @Method()\n async clickLastPage() {\n const button = this.lastPageBtn;\n if (button?.disabled) return;\n button.click();\n }\n\n /**\n * Emulates clicking the button that controls moving to the next page, and emitting a change event with the updated page number.\n *\n * If the `<button>` is disabled, this method does nothing.\n * @testOnly\n */\n @Method()\n async clickNextPage() {\n const button = this.nextPageBtn;\n if (button?.disabled) return;\n button.click();\n }\n\n /**\n * Emulates clicking the button that controls moving to the previous page, and emitting a change event with the updated page number.\n *\n * If the `<button>` is disabled, this method does nothing.\n * @testOnly\n */\n @Method()\n async clickPreviousPage() {\n const button = this.prevPageBtn;\n if (button?.disabled) return;\n button.click();\n }\n\n /**\n * Emulates selecting a `perPage` value from the `perPageIncrements` dropdown,\n * and updates the value of the `perPage` property.\n *\n * If `value` is not in the `perPageIncrements` array, this method does nothing.\n * @testOnly\n */\n @Method()\n async selectPerPageIncrementValue(value: number) {\n if (isNaN(value) || !this.showPerPageSelect || !this.perPageIncrementsArray.includes(value)) return;\n this.perPageSelect.focus();\n this.perPageSelect.click();\n const options = Array.from(this.perPageSelect.querySelectorAll('q2-option'));\n options.find(option => option.value === `${value}`)?.click();\n }\n\n /**\n * Emulates setting the page value in the `<input>` field,\n * and emitting a change event with the updated page number.\n *\n * If `value` is invalid, this method does nothing.\n * @testOnly\n */\n @Method()\n async setPageValue(value: number) {\n if (!this.inputField || isNaN(value) || value < 1 || value > this.totalPages) return;\n this.inputField?.focus();\n this.inputField.value = `${value}`;\n this.inputField?.blur();\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('autoSize')\n manageResizeObserver() {\n if (this.autoSize) {\n if (this.resizeObserver) return;\n this.resizeObserver = new ResizeObserver(() => this.checkSize());\n this.resizeObserver.observe(this.hostElement);\n window.addEventListener('resize', this.checkSize);\n } else {\n this.isSmall = false;\n this.removeResizeObserver();\n }\n }\n\n @Watch('recordsOnly')\n @Watch('pagesOnly')\n @Watch('stacked')\n checkDisplayTypes() {\n if (this.pagesOnly || this.recordsOnly || this.stacked) this.autoSize = false;\n }\n\n // #endregion\n // #region Local Methods\n\n get containerClasses() {\n const classes = ['container'];\n if (this.stacked) classes.push('stacked');\n return classes;\n }\n\n get currentRange() {\n const { perPageWithDefault: perPage, totalWithDefault: total, pageWithDefault: page } = this;\n const start = total > 0 ? (page - 1) * perPage + 1 : 0;\n const end = Math.min(page * perPage, total);\n return `${start} - ${end}`;\n }\n\n get isFullViewHidden() {\n return this.isSmall || this.recordsOnly || this.pagesOnly;\n }\n\n get nextRange() {\n const { perPageWithDefault: perPage, totalWithDefault: total, pageWithDefault: page } = this;\n const start = page * perPage + 1;\n const end = Math.min((page + 1) * perPage, total);\n return `${start} - ${end}`;\n }\n\n get pageWithDefault() {\n return this.total > 0 ? this.page || 1 : 0;\n }\n\n get perPageIncrementsArray() {\n if (Array.isArray(this.perPageIncrements)) {\n return this.perPageIncrements.map(num => Number(num));\n } else if (typeof this.perPageIncrements === 'string') {\n return this.perPageIncrements\n .trim()\n .replace(/[\\[\\]\\\"\\']/g, '')\n .split(',')\n .map(num => Number(num));\n } else {\n return [];\n }\n }\n\n get perPageWithDefault() {\n return this.perPage || 10;\n }\n\n get prevRange() {\n const { perPageWithDefault: perPage, pageWithDefault: page } = this;\n const start = Math.max(1, (page - 2) * perPage + 1);\n const end = (page - 1) * perPage;\n return `${start} - ${end}`;\n }\n\n get recordTypeWithDefault() {\n return this.recordType || loc('tecton.element.pagination.defaultRecordType');\n }\n\n get showPerPageSelect() {\n return this.perPageIncrements?.length > 1;\n }\n\n get totalPages() {\n const { pagesOnly, totalWithDefault: total, perPageWithDefault: perPage, pages } = this;\n\n if (pagesOnly && pages && !isNaN(parseInt(`${pages}`))) return pages;\n\n return Math.ceil(total / perPage);\n }\n\n get totalWithDefault() {\n return this.total || 0;\n }\n\n checkSize = () => {\n const { hostElement, containerElement } = this;\n const isOverflowing = this.containerWidth > hostElement.clientWidth;\n this.isSmall = isOverflowing;\n if (isOverflowing) return;\n\n nextPaint(() => {\n const containerWidthHasNotChanged = this.containerWidth === containerElement.clientWidth;\n if (containerWidthHasNotChanged) return;\n this.containerWidth = containerElement.clientWidth;\n this.checkSize();\n });\n };\n\n handlePageChange = (page: number) => {\n const { totalPages, inputField } = this;\n page = parseInt(`${page}`);\n if (isNaN(page) || page < 1) {\n page = 1;\n } else if (page > totalPages) {\n page = totalPages;\n }\n\n if (inputField.value !== `${page}`) inputField.value = `${page}`;\n\n if (!this.hostElement.onchange) {\n this.page = page;\n }\n\n this.change.emit({ page });\n };\n\n handlePerPageChange = (event: CustomEvent) => {\n this.perPage = event.detail.value * 1;\n };\n\n removeResizeObserver() {\n if (this.resizeObserver) {\n this.resizeObserver?.disconnect();\n this.resizeObserver = null;\n window.removeEventListener('resize', this.checkSize);\n }\n }\n\n // #endregion\n // #region Render Methods\n\n renderPerPage() {\n const increments = this.perPageIncrementsArray.sort((a, b) => a - b);\n if (this.perPage === undefined) this.perPage = increments[0];\n this.perPageIncrements = `[${increments.join(',')}]`;\n return (\n <q2-select\n ref={el => (this.perPageSelect = el)}\n onChange={this.handlePerPageChange}\n value={this.perPageIncrementsArray.includes(this.perPage) ? `${this.perPage}` : undefined}\n >\n {increments.map(perPage => (\n <q2-option\n value={`${perPage}`}\n display={`${loc('tecton.element.pagination.view')} ${perPage}`}\n >{`${loc('tecton.element.pagination.view')} ${perPage}`}</q2-option>\n ))}\n </q2-select>\n );\n }\n\n render() {\n const {\n pagesOnly,\n recordsOnly,\n isFullViewHidden,\n recordTypeWithDefault: recordType,\n totalPages,\n totalWithDefault: total,\n pageWithDefault: page,\n currentRange,\n nextRange,\n prevRange,\n showPerPageSelect,\n } = this;\n const onFirstPage = page < 2;\n const onLastPage = page === totalPages;\n\n let nextButtonLabel: string = loc('tecton.element.pagination.goToNext');\n let prevButtonLabel: string = loc('tecton.element.pagination.goToPrevious');\n if (pagesOnly) {\n prevButtonLabel = loc('tecton.element.pagination.goToPages', { next: page - 1, total: totalPages });\n nextButtonLabel = loc('tecton.element.pagination.goToPages', { next: page + 1, total: totalPages });\n } else if (recordsOnly) {\n prevButtonLabel = loc('tecton.element.pagination.goToRecords', {\n range: prevRange,\n recordType: recordType.toLowerCase(),\n total,\n });\n nextButtonLabel = loc('tecton.element.pagination.goToRecords', {\n range: nextRange,\n recordType: recordType.toLowerCase(),\n total,\n });\n }\n\n return (\n <nav\n class={this.containerClasses.join(' ')}\n ref={el => (this.containerElement = el)}\n aria-label={loc('tecton.element.pagination.title')}\n >\n <div\n class=\"description\"\n test-id=\"description\"\n >\n {pagesOnly\n ? loc('tecton.element.pagination.pages', {\n current: page,\n total: totalPages,\n })\n : loc('tecton.element.pagination.description', {\n range: currentRange,\n recordType: recordType.toLowerCase(),\n total: total.toLocaleString(),\n })}\n </div>\n <div class=\"controls\">\n <div class=\"btn-group\">\n <q2-btn\n ref={el => (this.firstPageBtn = el)}\n label={loc('tecton.element.pagination.goToFirstPage')}\n disabled={onFirstPage}\n hidden={isFullViewHidden}\n onClick={() => this.handlePageChange(1)}\n test-id=\"firstPageBtn\"\n hide-label\n >\n <q2-icon type=\"chevron-double-left\" />\n </q2-btn>\n <q2-btn\n ref={el => (this.prevPageBtn = el)}\n label={prevButtonLabel}\n disabled={onFirstPage}\n onClick={() => this.handlePageChange(page - 1)}\n test-id=\"prevPageBtn\"\n hide-label\n >\n <q2-icon type=\"chevron-left\" />\n </q2-btn>\n </div>\n <div\n class=\"input-display\"\n hidden={isFullViewHidden}\n >\n <span aria-hidden=\"true\">{loc('tecton.element.pagination.page')}</span>\n <div\n class=\"input-wrapper\"\n onClick={() => this.inputField.dispatchEvent(new FocusEvent('focus'))}\n >\n <q2-input\n ref={el => (this.inputField = el)}\n type=\"number\"\n value={`${page}`}\n min={1}\n max={this.totalPages}\n hideLabel\n optional\n label={`${loc('tecton.element.pagination.page')} (${loc(\n 'tecton.element.pagination.ofPages',\n [totalPages.toLocaleString()]\n )})`}\n onChange={event => {\n event.stopPropagation();\n this.handlePageChange(event.detail.value);\n }}\n test-id=\"pageInput\"\n current=\"page\"\n ></q2-input>\n </div>\n <span aria-hidden=\"true\">\n {loc('tecton.element.pagination.ofPages', [totalPages.toLocaleString()])}\n </span>\n </div>\n <div class=\"btn-group\">\n <q2-btn\n ref={el => (this.nextPageBtn = el)}\n label={nextButtonLabel}\n disabled={onLastPage}\n onClick={() => this.handlePageChange(page + 1)}\n test-id=\"nextPageBtn\"\n hide-label\n >\n <q2-icon type=\"chevron-right\" />\n </q2-btn>\n <q2-btn\n ref={el => (this.lastPageBtn = el)}\n label=\"tecton.element.pagination.goToLastPage\"\n disabled={onLastPage}\n hidden={isFullViewHidden}\n onClick={() => this.handlePageChange(totalPages)}\n test-id=\"lastPageBtn\"\n hide-label\n >\n <q2-icon type=\"chevron-double-right\" />\n </q2-btn>\n </div>\n </div>\n <div\n class=\"per-page\"\n hidden={isFullViewHidden || !this.perPageIncrements?.length}\n >\n {showPerPageSelect && this.renderPerPage()}\n </div>\n </nav>\n );\n }\n\n // #endregion\n}\n"],"mappings":";;;;AAAA,MAAMA,IAAkB;;MCgBXC,IAAY;EADzB,WAAAC,CAAAC;;;;;wEA+BIC,KAASC,YAAgC;uJAIzCD,KAAQE,WAAY;IAsRpBF,KAASG,YAAG;MACR,OAAMC,aAAEA,GAAWC,kBAAEA,KAAqBL;MAC1C,MAAMM,IAAgBN,KAAKO,iBAAiBH,EAAYI;MACxDR,KAAKS,UAAUH;MACf,IAAIA,GAAe;MAEnBI,GAAU;QACN,MAAMC,IAA8BX,KAAKO,mBAAmBF,EAAiBG;QAC7E,IAAIG,GAA6B;QACjCX,KAAKO,iBAAiBF,EAAiBG;QACvCR,KAAKG;AAAW;AAClB;IAGNH,KAAAY,mBAAoBC;MAChB,OAAMC,YAAEA,GAAUC,YAAEA,KAAef;MACnCa,IAAOG,SAAS,GAAGH;MACnB,IAAII,MAAMJ,MAASA,IAAO,GAAG;QACzBA,IAAO;aACJ,IAAIA,IAAOC,GAAY;QAC1BD,IAAOC;;MAGX,IAAIC,EAAWG,UAAU,GAAGL,KAAQE,EAAWG,QAAQ,GAAGL;MAE1D,KAAKb,KAAKI,YAAYe,UAAU;QAC5BnB,KAAKa,OAAOA;;MAGhBb,KAAKoB,OAAOC,KAAK;QAAER;;AAAO;IAG9Bb,KAAAsB,sBAAuBC;MACnBvB,KAAKwB,UAAUD,EAAME,OAAOP,QAAQ;AAAC;AAsL5C;;;EA7aG,oBAAAQ;IACI1B,KAAK2B;;EAGT,iBAAAC;IACI5B,KAAK6B;IACL7B,KAAK8B;;EAGT,gBAAAC;IACI/B,KAAKO,iBAAiBP,KAAKK,iBAAiBG;IAE5CwB,EAAchC,KAAKI;;;;EAOvB,kBAAA6B,CAAmBV;;IACf,KAAKW,EAAmBX,GAAOvB,KAAKI,cAAc;IAClD,OAAM+B,kBAAEA,GAAgB9B,kBAAEA,GAAgBU,YAAEA,KAAef;IAC3D,IAAImC,GAAkB;OAClBC,IAAA/B,EAAiBgC,cAA2B,+BAAyB,QAAAD,WAAA,aAAAA,EAAEE;WACpE;MACHvB,EAAWuB;;;;;;;;;;;EAcnB,oBAAMC;IACF,MAAMC,IAASxC,KAAKyC;IACpB,IAAID,MAAA,QAAAA,WAAA,aAAAA,EAAQE,UAAU;IACtBF,EAAOG;;;;;;;SAUX,mBAAMC;IACF,MAAMJ,IAASxC,KAAK6C;IACpB,IAAIL,MAAA,QAAAA,WAAA,aAAAA,EAAQE,UAAU;IACtBF,EAAOG;;;;;;;SAUX,mBAAMG;IACF,MAAMN,IAASxC,KAAK+C;IACpB,IAAIP,MAAA,QAAAA,WAAA,aAAAA,EAAQE,UAAU;IACtBF,EAAOG;;;;;;;SAUX,uBAAMK;IACF,MAAMR,IAASxC,KAAKiD;IACpB,IAAIT,MAAA,QAAAA,WAAA,aAAAA,EAAQE,UAAU;IACtBF,EAAOG;;;;;;;;SAWX,iCAAMO,CAA4BhC;;IAC9B,IAAID,MAAMC,OAAWlB,KAAKmD,sBAAsBnD,KAAKoD,uBAAuBC,SAASnC,IAAQ;IAC7FlB,KAAKsD,cAAchB;IACnBtC,KAAKsD,cAAcX;IACnB,MAAMY,IAAUC,MAAMC,KAAKzD,KAAKsD,cAAcI,iBAAiB;KAC/DtB,IAAAmB,EAAQI,MAAKC,KAAUA,EAAO1C,UAAU,GAAGA,WAAU,QAAAkB,WAAA,aAAAA,EAAAO;;;;;;;;SAWzD,kBAAMkB,CAAa3C;;IACf,KAAKlB,KAAKe,cAAcE,MAAMC,MAAUA,IAAQ,KAAKA,IAAQlB,KAAKc,YAAY;KAC9EsB,IAAApC,KAAKe,gBAAY,QAAAqB,WAAA,aAAAA,EAAAE;IACjBtC,KAAKe,WAAWG,QAAQ,GAAGA;KAC3B4C,IAAA9D,KAAKe,gBAAY,QAAA+C,WAAA,aAAAA,EAAAC;;;;EAOrB,oBAAAjC;IACI,IAAI9B,KAAKE,UAAU;MACf,IAAIF,KAAKgE,gBAAgB;MACzBhE,KAAKgE,iBAAiB,IAAIC,gBAAe,MAAMjE,KAAKG;MACpDH,KAAKgE,eAAeE,QAAQlE,KAAKI;MACjC+D,OAAOC,iBAAiB,UAAUpE,KAAKG;WACpC;MACHH,KAAKS,UAAU;MACfT,KAAK2B;;;EAOb,iBAAAE;IACI,IAAI7B,KAAKqE,aAAarE,KAAKsE,eAAetE,KAAKuE,SAASvE,KAAKE,WAAW;;;;EAM5E,oBAAIsE;IACA,MAAMC,IAAU,EAAC;IACjB,IAAIzE,KAAKuE,SAASE,EAAQC,KAAK;IAC/B,OAAOD;;EAGX,gBAAIE;IACA,OAAQC,oBAAoBpD,GAASqD,kBAAkBC,GAAOC,iBAAiBlE,KAASb;IACxF,MAAMgF,IAAQF,IAAQ,KAAKjE,IAAO,KAAKW,IAAU,IAAI;IACrD,MAAMyD,IAAMC,KAAKC,IAAItE,IAAOW,GAASsD;IACrC,OAAO,GAAGE,OAAWC;;EAGzB,oBAAI9C;IACA,OAAOnC,KAAKS,WAAWT,KAAKsE,eAAetE,KAAKqE;;EAGpD,aAAIe;IACA,OAAQR,oBAAoBpD,GAASqD,kBAAkBC,GAAOC,iBAAiBlE,KAASb;IACxF,MAAMgF,IAAQnE,IAAOW,IAAU;IAC/B,MAAMyD,IAAMC,KAAKC,KAAKtE,IAAO,KAAKW,GAASsD;IAC3C,OAAO,GAAGE,OAAWC;;EAGzB,mBAAIF;IACA,OAAO/E,KAAK8E,QAAQ,IAAI9E,KAAKa,QAAQ,IAAI;;EAG7C,0BAAIuC;IACA,IAAII,MAAM6B,QAAQrF,KAAKsF,oBAAoB;MACvC,OAAOtF,KAAKsF,kBAAkBC,KAAIC,KAAOC,OAAOD;WAC7C,WAAWxF,KAAKsF,sBAAsB,UAAU;MACnD,OAAOtF,KAAKsF,kBACPI,OACAC,QAAQ,eAAe,IACvBC,MAAM,KACNL,KAAIC,KAAOC,OAAOD;WACpB;MACH,OAAO;;;EAIf,sBAAIZ;IACA,OAAO5E,KAAKwB,WAAW;;EAG3B,aAAIqE;IACA,OAAQjB,oBAAoBpD,GAASuD,iBAAiBlE,KAASb;IAC/D,MAAMgF,IAAQE,KAAKY,IAAI,IAAIjF,IAAO,KAAKW,IAAU;IACjD,MAAMyD,KAAOpE,IAAO,KAAKW;IACzB,OAAO,GAAGwD,OAAWC;;EAGzB,yBAAIc;IACA,OAAO/F,KAAKgG,cAAcC,EAAI;;EAGlC,qBAAI9C;;IACA,SAAOf,IAAApC,KAAKsF,uBAAmB,QAAAlD,WAAA,aAAAA,EAAA8D,UAAS;;EAG5C,cAAIpF;IACA,OAAMuD,WAAEA,GAAWQ,kBAAkBC,GAAOF,oBAAoBpD,GAAO2E,OAAEA,KAAUnG;IAEnF,IAAIqE,KAAa8B,MAAUlF,MAAMD,SAAS,GAAGmF,OAAW,OAAOA;IAE/D,OAAOjB,KAAKkB,KAAKtB,IAAQtD;;EAG7B,oBAAIqD;IACA,OAAO7E,KAAK8E,SAAS;;EAuCzB,oBAAAnD;;IACI,IAAI3B,KAAKgE,gBAAgB;OACrB5B,IAAApC,KAAKgE,oBAAgB,QAAA5B,WAAA,aAAAA,EAAAiE;MACrBrG,KAAKgE,iBAAiB;MACtBG,OAAOmC,oBAAoB,UAAUtG,KAAKG;;;;;EAOlD,aAAAoG;IACI,MAAMC,IAAaxG,KAAKoD,uBAAuBqD,MAAK,CAACC,GAAGC,MAAMD,IAAIC;IAClE,IAAI3G,KAAKwB,YAAYoF,WAAW5G,KAAKwB,UAAUgF,EAAW;IAC1DxG,KAAKsF,oBAAoB,IAAIkB,EAAWK,KAAK;IAC7C,OACIC,EACI;MAAAC,KAAKC,KAAOhH,KAAKsD,gBAAgB0D;MACjCC,UAAUjH,KAAKsB;MACfJ,OAAOlB,KAAKoD,uBAAuBC,SAASrD,KAAKwB,WAAW,GAAGxB,KAAKwB,YAAYoF;OAE/EJ,EAAWjB,KAAI/D,KACZsF,EAAA;MACI5F,OAAO,GAAGM;MACV0F,SAAS,GAAGjB,EAAI,qCAAqCzE;OACvD,GAAGyE,EAAI,qCAAqCzE;;EAM9D,MAAA2F;;IACI,OAAM9C,WACFA,GAASC,aACTA,GAAWnC,kBACXA,GACA4D,uBAAuBC,GAAUlF,YACjCA,GACA+D,kBAAkBC,GAClBC,iBAAiBlE,GAAI8D,cACrBA,GAAYS,WACZA,GAASS,WACTA,GAAS1C,mBACTA,KACAnD;IACJ,MAAMoH,IAAcvG,IAAO;IAC3B,MAAMwG,IAAaxG,MAASC;IAE5B,IAAIwG,IAA0BrB,EAAI;IAClC,IAAIsB,IAA0BtB,EAAI;IAClC,IAAI5B,GAAW;MACXkD,IAAkBtB,EAAI,uCAAuC;QAAEuB,MAAM3G,IAAO;QAAGiE,OAAOhE;;MACtFwG,IAAkBrB,EAAI,uCAAuC;QAAEuB,MAAM3G,IAAO;QAAGiE,OAAOhE;;WACnF,IAAIwD,GAAa;MACpBiD,IAAkBtB,EAAI,yCAAyC;QAC3DwB,OAAO5B;QACPG,YAAYA,EAAW0B;QACvB5C;;MAEJwC,IAAkBrB,EAAI,yCAAyC;QAC3DwB,OAAOrC;QACPY,YAAYA,EAAW0B;QACvB5C;;;IAIR,OACIgC,EAAA;MAAAa,KAAA;MACIC,OAAO5H,KAAKwE,iBAAiBqC,KAAK;MAClCE,KAAKC,KAAOhH,KAAKK,mBAAmB2G;MAAG,cAC3Bf,EAAI;OAEhBa,EAAA;MAAAa,KAAA;MACIC,OAAM;MACE;OAEPvD,IACK4B,EAAI,mCAAmC;MACnC4B,SAAShH;MACTiE,OAAOhE;SAEXmF,EAAI,yCAAyC;MACzCwB,OAAO9C;MACPqB,YAAYA,EAAW0B;MACvB5C,OAAOA,EAAMgD;SAG3BhB,EAAK;MAAAa,KAAA;MAAAC,OAAM;OACPd,EAAK;MAAAa,KAAA;MAAAC,OAAM;OACPd,EAAA;MAAAa,KAAA;MACIZ,KAAKC,KAAOhH,KAAKyC,eAAeuE;MAChCe,OAAO9B,EAAI;MACXvD,UAAU0E;MACVY,QAAQ7F;MACR8F,SAAS,MAAMjI,KAAKY,iBAAiB;MAAE,WAC/B;MAAc;OAGtBkG,EAAA;MAAAa,KAAA;MAASO,MAAK;SAElBpB,EAAA;MAAAa,KAAA;MACIZ,KAAKC,KAAOhH,KAAKiD,cAAc+D;MAC/Be,OAAOR;MACP7E,UAAU0E;MACVa,SAAS,MAAMjI,KAAKY,iBAAiBC,IAAO;MAAE,WACtC;MAAa;OAGrBiG,EAAA;MAAAa,KAAA;MAASO,MAAK;UAGtBpB,EAAA;MAAAa,KAAA;MACIC,OAAM;MACNI,QAAQ7F;OAER2E,EAAA;MAAAa,KAAA;MAAA,eAAkB;OAAQ1B,EAAI,oCAC9Ba,EACI;MAAAa,KAAA;MAAAC,OAAM;MACNK,SAAS,MAAMjI,KAAKe,WAAWoH,cAAc,IAAIC,WAAW;OAE5DtB,EAAA;MAAAa,KAAA;MACIZ,KAAKC,KAAOhH,KAAKe,aAAaiG;MAC9BkB,MAAK;MACLhH,OAAO,GAAGL;MACVsE,KAAK;MACLW,KAAK9F,KAAKc;MACVuH,WACA;MAAAC,UACA;MAAAP,OAAO,GAAG9B,EAAI,sCAAsCA,EAChD,qCACA,EAACnF,EAAWgH;MAEhBb,UAAU1F;QACNA,EAAMgH;QACNvI,KAAKY,iBAAiBW,EAAME,OAAOP;AAAM;MAC5C,WACO;MACR2G,SAAQ;SAGhBf,EAAA;MAAAa,KAAA;MAAA,eAAkB;OACb1B,EAAI,qCAAqC,EAACnF,EAAWgH,uBAG9DhB,EAAK;MAAAa,KAAA;MAAAC,OAAM;OACPd,EAAA;MAAAa,KAAA;MACIZ,KAAKC,KAAOhH,KAAK+C,cAAciE;MAC/Be,OAAOT;MACP5E,UAAU2E;MACVY,SAAS,MAAMjI,KAAKY,iBAAiBC,IAAO;MAAE,WACtC;MAAa;OAGrBiG,EAAA;MAAAa,KAAA;MAASO,MAAK;SAElBpB,EAAA;MAAAa,KAAA;MACIZ,KAAKC,KAAOhH,KAAK6C,cAAcmE;MAC/Be,OAAM;MACNrF,UAAU2E;MACVW,QAAQ7F;MACR8F,SAAS,MAAMjI,KAAKY,iBAAiBE;MAAW,WACxC;MAAa;OAGrBgG,EAAA;MAAAa,KAAA;MAASO,MAAK;WAI1BpB,EACI;MAAAa,KAAA;MAAAC,OAAM;MACNI,QAAQ7F,QAAqBC,IAAApC,KAAKsF,uBAAiB,QAAAlD,WAAA,aAAAA,EAAE8D;OAEpD/C,KAAqBnD,KAAKuG","ignoreList":[]}
1
+ {"version":3,"names":["q2PaginationCss","Q2Pagination","constructor","hostRef","this","alignment","autoSize","disabled","checkSize","hostElement","containerElement","isOverflowing","containerWidth","clientWidth","isSmall","nextPaint","containerWidthHasNotChanged","handlePageChange","page","totalPages","inputField","parseInt","isNaN","value","onchange","change","emit","handlePerPageChange","event","perPage","detail","disconnectedCallback","removeResizeObserver","componentWillLoad","checkDisplayTypes","manageResizeObserver","componentDidLoad","overrideFocus","onHostElementFocus","isEventFromElement","isFullViewHidden","_a","querySelector","focus","clickFirstPage","button","firstPageBtn","click","clickLastPage","lastPageBtn","clickNextPage","nextPageBtn","clickPreviousPage","prevPageBtn","selectPerPageIncrementValue","showPerPageSelect","perPageIncrementsArray","includes","perPageSelect","options","Array","from","querySelectorAll","find","option","setPageValue","_b","blur","resizeObserver","ResizeObserver","observe","window","addEventListener","pagesOnly","recordsOnly","stacked","containerClasses","classes","push","currentRange","perPageWithDefault","totalWithDefault","total","pageWithDefault","start","end","Math","min","nextRange","isArray","perPageIncrements","map","num","Number","trim","replace","split","prevRange","max","recordTypeWithDefault","recordType","loc","length","pages","ceil","disconnect","removeEventListener","renderPerPage","increments","sort","a","b","undefined","join","h","ref","el","onChange","display","render","onFirstPage","onLastPage","nextButtonLabel","prevButtonLabel","next","range","toLowerCase","key","class","current","toLocaleString","label","hidden","onClick","type","dispatchEvent","FocusEvent","hideLabel","optional","stopPropagation"],"sources":["src/components/q2-pagination/q2-pagination.scss?tag=q2-pagination&encapsulation=shadow","src/components/q2-pagination/q2-pagination.tsx"],"sourcesContent":["@import '../../styles/host';\n@import '../../styles/functions';\n\n:host {\n display: flex;\n width: 100%;\n}\n\n:host([alignment='right']) {\n justify-content: flex-end;\n}\n\n:host([alignment='center']) {\n justify-content: center;\n}\n\n:host([alignment='left']) {\n justify-content: flex-start;\n}\n\n:host([hidden]) {\n display: none;\n}\n\n.container {\n display: inline-flex;\n column-gap: var-list(var-prefixer(pagination-column-gap), --app-scale-2x, 10px);\n align-items: center;\n height: var-list(var-prefixer(pagination-height), 44px);\n\n &.stacked {\n flex-direction: column;\n column-gap: 0;\n row-gap: var-list(--tct-pagination-row-gap, --app-scale-2x, 10px);\n height: auto;\n align-items: stretch;\n\n .description {\n text-align: center;\n }\n\n .controls {\n justify-content: center;\n }\n\n .per-page {\n display: flex;\n justify-content: center;\n }\n\n q2-select {\n --tct-select-margin: 0;\n width: var(--tct-pagination-perpage-width, 60%);\n }\n }\n}\n\n.controls {\n display: flex;\n}\n\n.btn-group {\n display: flex;\n gap: var-list(var-prefixer(pagination-btn-gap), 0);\n}\n\n.description,\n.input-display {\n white-space: nowrap;\n}\n\n.input-display {\n display: grid;\n grid-template-columns: auto var(--tct-pagination-input-width, 50px) auto;\n align-items: center;\n gap: var-list(var-prefixer(pagination-controls-gap), --app-scale-1x, 5px);\n\n &[hidden] {\n display: none;\n }\n}\n\n.input-wrapper {\n height: var-list(var-prefixer(pagination-height), 44px);\n display: flex;\n align-items: center;\n}\n\nq2-btn {\n --tct-btn-border-radius: #{var-list(var-prefixer(pagination-btn-border-radius))};\n --tct-btn-border: #{var-list(var-prefixer(pagination-btn-border))};\n --tct-btn-icon-hover-background: #{var-list(--tct-pagination-btn-hover-background, --app-gray-l3, #f2f2f2)};\n --tct-icon-stroke-primary: #{var-list(--tct-pagination-btn-icon-stroke-primary, --app-gray, #747474)};\n --tct-icon-stroke-secondary: #{var-list(--tct-pagination-btn-icon-stroke-secondary, --app-gray, #747474)};\n}\n\nq2-icon {\n --tct-icon-size: #{var-list(var-prefixer(pagination-icon-size), 12px)};\n color: var-list(var-prefixer(pagination-icon-color), --t-text, #4d4d4d);\n}\n\nq2-input {\n --tct-input-margin-top: 0;\n --tct-input-margin-bottom: 0;\n --tct-input-height: #{var-list(var-prefixer(pagination-input-height), 30px)};\n --tct-input-min-height: var(--tct-input-height);\n --tct-input-align: center;\n}\n\nq2-select {\n --tct-select-input-min-height: #{var-list(var-prefixer(pagination-select-height), 30px)};\n --tct-select-input-max-height: #{var-list(var-prefixer(pagination-select-height), 30px)};\n width: #{var-list(var-prefixer(pagination-perpage-width), 100%)};\n min-width: #{var-list(var-prefixer(pagination-perpage-min-width), 110px)};\n}\n","import {\n Component,\n State,\n Prop,\n h,\n ComponentInterface,\n Watch,\n Listen,\n Element,\n Method,\n Event,\n EventEmitter,\n} from '@stencil/core';\nimport { isEventFromElement, loc, nextPaint, overrideFocus } from 'src/utils';\n\n@Component({ tag: 'q2-pagination', shadow: true, styleUrl: 'q2-pagination.scss' })\nexport class Q2Pagination implements ComponentInterface {\n // #region Own Properties\n\n containerElement: HTMLElement;\n containerWidth: number;\n firstPageBtn: HTMLQ2BtnElement;\n inputField: HTMLQ2InputElement;\n lastPageBtn: HTMLQ2BtnElement;\n nextPageBtn: HTMLQ2BtnElement;\n perPageSelect: HTMLQ2SelectElement;\n prevPageBtn: HTMLQ2BtnElement;\n resizeObserver: ResizeObserver;\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 isSmall: boolean;\n\n // #endregion\n // #region Public Property API\n\n /** Indicates the horizontal alignment of pagination elements */\n @Prop()\n alignment: 'left' | 'center' | 'right' = 'right';\n\n /** Determines whether the component uses dynamic resizing behavior. This is disabled when `pagesOnly`, `recordsOnly`, or `stacked` is true. */\n @Prop({ reflect: true, mutable: true })\n autoSize: boolean = true;\n\n /** Allows the component to be disabled should the state of the page require this */\n @Prop({ reflect: true, mutable: true })\n disabled: boolean = false;\n\n /** The current page that is being displayed. */\n @Prop({ reflect: true, mutable: true })\n page: number;\n\n /**\n * The number of pages that can be displayed.\n * @info\n * Only referenced when `pagesOnly` is true.\n */\n @Prop({ reflect: true, mutable: true })\n pages: number;\n\n /** Indicates to display only the current and total pages. This disables the `autoSize` feature. */\n @Prop({ reflect: true, mutable: true })\n pagesOnly: boolean;\n\n /** The total number of records displayed on each page. This disables the `autoSize` feature. */\n @Prop({ reflect: true, mutable: true })\n perPage: number;\n\n /**\n * A list of perPage values.\n * This generates a [Select](https://tecton.q2developer.com/design-system/q2-select/) element that allows the user to modify the `perPage` value.\n * @info\n * `pagesOnly` or `recordsOnly` being true disables this feature.\n *\n * **Example:**\n * @snippet\n * this.perPageIncrements = [10, 25, 50];\n */\n @Prop({ reflect: true, mutable: true })\n perPageIncrements: number[] | string[] | string | undefined;\n\n /** Indicates to display only the current and total records. */\n @Prop({ reflect: true, mutable: true })\n recordsOnly: boolean;\n\n /** Description of the record type to be displayed alongside the record count. */\n @Prop()\n recordType: string;\n\n /** Allows the component to be displayed in a stacked layout. This disables the `autoSize` feature. */\n @Prop({ reflect: true })\n stacked: boolean;\n\n /** The total number of records to paginate. */\n @Prop({ reflect: true })\n total: number;\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when the page is changed.\n * @legacyEvent\n */\n @Event()\n change: EventEmitter<{ page: number }>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback() {\n this.removeResizeObserver();\n }\n\n componentWillLoad(): void {\n this.checkDisplayTypes();\n this.manageResizeObserver();\n }\n\n componentDidLoad(): void {\n this.containerWidth = this.containerElement.clientWidth;\n\n overrideFocus(this.hostElement);\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('focus')\n onHostElementFocus(event) {\n if (this.disabled) return;\n if (!isEventFromElement(event, this.hostElement)) return;\n const { isFullViewHidden, containerElement, inputField } = this;\n if (isFullViewHidden) {\n containerElement.querySelector<HTMLElement>('q2-btn:not([disabled])')?.focus();\n } else {\n inputField.focus();\n }\n }\n\n // #endregion\n // #region Public Methods API\n\n /**\n * Emulates clicking the button that controls moving to the first page, and emitting a change event with the updated page number.\n *\n * If the `<button>` is disabled, this method does nothing.\n * @testOnly\n */\n @Method()\n async clickFirstPage() {\n if (this.disabled) return;\n const button = this.firstPageBtn;\n if (button?.disabled) return;\n button.click();\n }\n\n /**\n * Emulates clicking the button that controls moving to the last page, and emitting a change event with the updated page number.\n *\n * If the `<button>` is disabled, this method does nothing.\n * @testOnly\n */\n @Method()\n async clickLastPage() {\n if (this.disabled) return;\n const button = this.lastPageBtn;\n if (button?.disabled) return;\n button.click();\n }\n\n /**\n * Emulates clicking the button that controls moving to the next page, and emitting a change event with the updated page number.\n *\n * If the `<button>` is disabled, this method does nothing.\n * @testOnly\n */\n @Method()\n async clickNextPage() {\n if (this.disabled) return;\n const button = this.nextPageBtn;\n if (button?.disabled) return;\n button.click();\n }\n\n /**\n * Emulates clicking the button that controls moving to the previous page, and emitting a change event with the updated page number.\n *\n * If the `<button>` is disabled, this method does nothing.\n * @testOnly\n */\n @Method()\n async clickPreviousPage() {\n if (this.disabled) return;\n const button = this.prevPageBtn;\n if (button?.disabled) return;\n button.click();\n }\n\n /**\n * Emulates selecting a `perPage` value from the `perPageIncrements` dropdown,\n * and updates the value of the `perPage` property.\n *\n * If `value` is not in the `perPageIncrements` array, this method does nothing.\n * @testOnly\n */\n @Method()\n async selectPerPageIncrementValue(value: number) {\n if (this.disabled) return;\n if (isNaN(value) || !this.showPerPageSelect || !this.perPageIncrementsArray.includes(value)) return;\n this.perPageSelect.focus();\n this.perPageSelect.click();\n const options = Array.from(this.perPageSelect.querySelectorAll('q2-option'));\n options.find(option => option.value === `${value}`)?.click();\n }\n\n /**\n * Emulates setting the page value in the `<input>` field,\n * and emitting a change event with the updated page number.\n *\n * If `value` is invalid, this method does nothing.\n * @testOnly\n */\n @Method()\n async setPageValue(value: number) {\n if (this.disabled) return;\n if (!this.inputField || isNaN(value) || value < 1 || value > this.totalPages) return;\n this.inputField?.focus();\n this.inputField.value = `${value}`;\n this.inputField?.blur();\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('autoSize')\n manageResizeObserver() {\n if (this.autoSize) {\n if (this.resizeObserver) return;\n this.resizeObserver = new ResizeObserver(() => this.checkSize());\n this.resizeObserver.observe(this.hostElement);\n window.addEventListener('resize', this.checkSize);\n } else {\n this.isSmall = false;\n this.removeResizeObserver();\n }\n }\n\n @Watch('recordsOnly')\n @Watch('pagesOnly')\n @Watch('stacked')\n checkDisplayTypes() {\n if (this.pagesOnly || this.recordsOnly || this.stacked) this.autoSize = false;\n }\n\n // #endregion\n // #region Local Methods\n\n get containerClasses() {\n const classes = ['container'];\n if (this.stacked) classes.push('stacked');\n return classes;\n }\n\n get currentRange() {\n const { perPageWithDefault: perPage, totalWithDefault: total, pageWithDefault: page } = this;\n const start = total > 0 ? (page - 1) * perPage + 1 : 0;\n const end = Math.min(page * perPage, total);\n return `${start} - ${end}`;\n }\n\n get isFullViewHidden() {\n return this.isSmall || this.recordsOnly || this.pagesOnly;\n }\n\n get nextRange() {\n const { perPageWithDefault: perPage, totalWithDefault: total, pageWithDefault: page } = this;\n const start = page * perPage + 1;\n const end = Math.min((page + 1) * perPage, total);\n return `${start} - ${end}`;\n }\n\n get pageWithDefault() {\n return this.total > 0 ? this.page || 1 : 0;\n }\n\n get perPageIncrementsArray() {\n if (Array.isArray(this.perPageIncrements)) {\n return this.perPageIncrements.map(num => Number(num));\n } else if (typeof this.perPageIncrements === 'string') {\n return this.perPageIncrements\n .trim()\n .replace(/[\\[\\]\\\"\\']/g, '')\n .split(',')\n .map(num => Number(num));\n } else {\n return [];\n }\n }\n\n get perPageWithDefault() {\n return this.perPage || 10;\n }\n\n get prevRange() {\n const { perPageWithDefault: perPage, pageWithDefault: page } = this;\n const start = Math.max(1, (page - 2) * perPage + 1);\n const end = (page - 1) * perPage;\n return `${start} - ${end}`;\n }\n\n get recordTypeWithDefault() {\n return this.recordType || loc('tecton.element.pagination.defaultRecordType');\n }\n\n get showPerPageSelect() {\n return this.perPageIncrements?.length > 1;\n }\n\n get totalPages() {\n const { pagesOnly, totalWithDefault: total, perPageWithDefault: perPage, pages } = this;\n\n if (pagesOnly && pages && !isNaN(parseInt(`${pages}`))) return pages;\n\n return Math.ceil(total / perPage);\n }\n\n get totalWithDefault() {\n return this.total || 0;\n }\n\n checkSize = () => {\n const { hostElement, containerElement } = this;\n const isOverflowing = this.containerWidth > hostElement.clientWidth;\n this.isSmall = isOverflowing;\n if (isOverflowing) return;\n\n nextPaint(() => {\n const containerWidthHasNotChanged = this.containerWidth === containerElement.clientWidth;\n if (containerWidthHasNotChanged) return;\n this.containerWidth = containerElement.clientWidth;\n this.checkSize();\n });\n };\n\n handlePageChange = (page: number) => {\n if (this.disabled) return;\n const { totalPages, inputField } = this;\n page = parseInt(`${page}`);\n if (isNaN(page) || page < 1) {\n page = 1;\n } else if (page > totalPages) {\n page = totalPages;\n }\n\n if (inputField.value !== `${page}`) inputField.value = `${page}`;\n\n if (!this.hostElement.onchange) {\n this.page = page;\n }\n\n this.change.emit({ page });\n };\n\n handlePerPageChange = (event: CustomEvent) => {\n if (this.disabled) return;\n this.perPage = event.detail.value * 1;\n };\n\n removeResizeObserver() {\n if (this.resizeObserver) {\n this.resizeObserver?.disconnect();\n this.resizeObserver = null;\n window.removeEventListener('resize', this.checkSize);\n }\n }\n\n // #endregion\n // #region Render Methods\n\n renderPerPage() {\n const increments = this.perPageIncrementsArray.sort((a, b) => a - b);\n if (this.perPage === undefined) this.perPage = increments[0];\n this.perPageIncrements = `[${increments.join(',')}]`;\n return (\n <q2-select\n ref={el => (this.perPageSelect = el)}\n onChange={this.handlePerPageChange}\n value={this.perPageIncrementsArray.includes(this.perPage) ? `${this.perPage}` : undefined}\n disabled={this.disabled}\n >\n {increments.map(perPage => (\n <q2-option\n value={`${perPage}`}\n display={`${loc('tecton.element.pagination.view')} ${perPage}`}\n >{`${loc('tecton.element.pagination.view')} ${perPage}`}</q2-option>\n ))}\n </q2-select>\n );\n }\n\n render() {\n const {\n pagesOnly,\n recordsOnly,\n isFullViewHidden,\n recordTypeWithDefault: recordType,\n totalPages,\n totalWithDefault: total,\n pageWithDefault: page,\n currentRange,\n nextRange,\n prevRange,\n showPerPageSelect,\n disabled,\n } = this;\n const onFirstPage = page < 2;\n const onLastPage = page === totalPages;\n\n let nextButtonLabel: string = loc('tecton.element.pagination.goToNext');\n let prevButtonLabel: string = loc('tecton.element.pagination.goToPrevious');\n if (pagesOnly) {\n prevButtonLabel = loc('tecton.element.pagination.goToPages', { next: page - 1, total: totalPages });\n nextButtonLabel = loc('tecton.element.pagination.goToPages', { next: page + 1, total: totalPages });\n } else if (recordsOnly) {\n prevButtonLabel = loc('tecton.element.pagination.goToRecords', {\n range: prevRange,\n recordType: recordType.toLowerCase(),\n total,\n });\n nextButtonLabel = loc('tecton.element.pagination.goToRecords', {\n range: nextRange,\n recordType: recordType.toLowerCase(),\n total,\n });\n }\n\n return (\n <nav\n class={this.containerClasses.join(' ')}\n ref={el => (this.containerElement = el)}\n aria-label={loc('tecton.element.pagination.title')}\n >\n <div\n class=\"description\"\n test-id=\"description\"\n >\n {pagesOnly\n ? loc('tecton.element.pagination.pages', {\n current: page,\n total: totalPages,\n })\n : loc('tecton.element.pagination.description', {\n range: currentRange,\n recordType: recordType.toLowerCase(),\n total: total.toLocaleString(),\n })}\n </div>\n <div class=\"controls\">\n <div class=\"btn-group\">\n <q2-btn\n ref={el => (this.firstPageBtn = el)}\n label={loc('tecton.element.pagination.goToFirstPage')}\n disabled={disabled || onFirstPage}\n hidden={isFullViewHidden}\n onClick={() => this.handlePageChange(1)}\n test-id=\"firstPageBtn\"\n hide-label\n >\n <q2-icon type=\"chevron-double-left\" />\n </q2-btn>\n <q2-btn\n ref={el => (this.prevPageBtn = el)}\n label={prevButtonLabel}\n disabled={disabled || onFirstPage}\n onClick={() => this.handlePageChange(page - 1)}\n test-id=\"prevPageBtn\"\n hide-label\n >\n <q2-icon type=\"chevron-left\" />\n </q2-btn>\n </div>\n <div\n class=\"input-display\"\n hidden={isFullViewHidden}\n >\n <span aria-hidden=\"true\">{loc('tecton.element.pagination.page')}</span>\n <div\n class=\"input-wrapper\"\n onClick={() => this.inputField.dispatchEvent(new FocusEvent('focus'))}\n >\n <q2-input\n ref={el => (this.inputField = el)}\n type=\"number\"\n value={`${page}`}\n min={1}\n max={this.totalPages}\n hideLabel\n optional\n label={`${loc('tecton.element.pagination.page')} (${loc(\n 'tecton.element.pagination.ofPages',\n [totalPages.toLocaleString()]\n )})`}\n onChange={event => {\n event.stopPropagation();\n this.handlePageChange(event.detail.value);\n }}\n test-id=\"pageInput\"\n current=\"page\"\n disabled={disabled}\n ></q2-input>\n </div>\n <span aria-hidden=\"true\">\n {loc('tecton.element.pagination.ofPages', [totalPages.toLocaleString()])}\n </span>\n </div>\n <div class=\"btn-group\">\n <q2-btn\n ref={el => (this.nextPageBtn = el)}\n label={nextButtonLabel}\n disabled={disabled || onLastPage}\n onClick={() => this.handlePageChange(page + 1)}\n test-id=\"nextPageBtn\"\n hide-label\n >\n <q2-icon type=\"chevron-right\" />\n </q2-btn>\n <q2-btn\n ref={el => (this.lastPageBtn = el)}\n label=\"tecton.element.pagination.goToLastPage\"\n disabled={disabled || onLastPage}\n hidden={isFullViewHidden}\n onClick={() => this.handlePageChange(totalPages)}\n test-id=\"lastPageBtn\"\n hide-label\n >\n <q2-icon type=\"chevron-double-right\" />\n </q2-btn>\n </div>\n </div>\n <div\n class=\"per-page\"\n hidden={isFullViewHidden || !this.perPageIncrements?.length}\n >\n {showPerPageSelect && this.renderPerPage()}\n </div>\n </nav>\n );\n }\n\n // #endregion\n}\n"],"mappings":"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","ignoreList":[]}
@@ -359,19 +359,19 @@ const v = class {
359
359
  if (t || i) r.push("has-icon");
360
360
  if (t) r.push("has-options");
361
361
  return o("click-elsewhere", {
362
- key: "90d7ef86d7225825885e94bcba9a3086e267154a",
362
+ key: "e7808292f13c5065a372be65944d789e6908a551",
363
363
  onChange: this.onClickElsewhere
364
364
  }, o("div", {
365
- key: "b62546e4578028fd8d36104866894892085dc8b1",
365
+ key: "c9708498aa93476eff3cc68b3ef741c31c8ad9b1",
366
366
  class: r.join(" ")
367
367
  }, o("div", {
368
- key: "fb123e4a87909cca94eec53a91099d175b262b56",
368
+ key: "9b756d3fc7dcf8209a4ecf880611a405947ef2b4",
369
369
  class: "btn-height-wrapper",
370
370
  ref: t => this.primaryBtnWrapper = t,
371
371
  onClick: this.handleWrapperClick,
372
372
  tabIndex: -1
373
373
  }, o("button", {
374
- key: "03315bc2d8d45a409cb7c4327f1cf30304fa1837",
374
+ key: "5167564d23175ea50dcff0c12d0bf22c691c863a",
375
375
  class: "btn-primary",
376
376
  "test-id": "btn-control",
377
377
  type: "button",
@@ -387,7 +387,7 @@ const v = class {
387
387
  "aria-label": `${this.buttonContent}${!t && i ? ` ${s("tecton.element.pill.active")}` : ""}`,
388
388
  "aria-describedby": t && "option-description" || undefined
389
389
  }, this.truncatedButtonContent)), this.renderIcon(), !!t && this.renderHiddenElement()), this.optionCount > 0 && o("q2-popover", {
390
- key: "48f236ca6152cfd816eccbcdb14789e928e21424",
390
+ key: "df99bf0be930209e56de6e0b091e6847643df41d",
391
391
  ref: t => this.popoverElement = t,
392
392
  controlElement: this.primaryBtn,
393
393
  open: this.open,
@@ -397,20 +397,20 @@ const v = class {
397
397
  align: this.popoverAlignment,
398
398
  onFocusout: this.handleFocusOut
399
399
  }, o("div", {
400
- key: "136f441b28ecb20ed9b85f25add811d6fdcf4aff",
400
+ key: "da8d529eb84d83fc126aff7d8f7af5cc8c28090b",
401
401
  class: "popover-content"
402
402
  }, o("div", {
403
- key: "6a8b06aa9d78a72d543d97d69a81880474bc607f",
403
+ key: "1c8edb11248927a81138333abcfc7937c7c8b4e3",
404
404
  ref: t => this.popoverTopContainer = t,
405
405
  class: "popover-top-container",
406
406
  tabindex: "-1",
407
407
  hidden: !this.hasPopoverTop,
408
408
  onKeyDown: this.handleKeydown
409
409
  }, o("slot", {
410
- key: "5e792494a0f541e761fec06011ca4644fa1c200b",
410
+ key: "6969d464fdee4f40f2753c0deed463c1b1de2bf1",
411
411
  name: "popover-top"
412
412
  })), o("q2-option-list", {
413
- key: "3c078dd97a9ec41a4e3af50eda6f1f16a26e0291",
413
+ key: "b6d68ff335503eb7e2b50d210a57d94b1a66f93d",
414
414
  type: "listbox",
415
415
  ref: t => this.optionList = t,
416
416
  id: "option-list",
@@ -421,16 +421,16 @@ const v = class {
421
421
  onPopoverState: this.onPopoverState,
422
422
  label: s("tecton.element.optionList.label", [ this.optionListLabel ])
423
423
  }, o("slot", {
424
- key: "9b55d9e81a2b5713391d8884090f7588a9b54701"
424
+ key: "2995021179f4597fb47796b16ddb5db5b26b1a60"
425
425
  })), o("div", {
426
- key: "bf9e18b0f0533795678882fe3e2017c294efaf3e",
426
+ key: "8f916f36da1a3809f8003659789a1d3792394f11",
427
427
  ref: t => this.popoverBottomContainer = t,
428
428
  class: "popover-bottom-container",
429
429
  tabindex: "-1",
430
430
  hidden: !this.hasPopoverBottom,
431
431
  onKeyDown: this.handleKeydown
432
432
  }, o("slot", {
433
- key: "1c4410a3a03fe9b5280d34111b83767715f9bd77",
433
+ key: "ec1a18a9651cca88e07c486d9b886ffc8c833277",
434
434
  name: "popover-bottom"
435
435
  })))));
436
436
  }
@@ -141,7 +141,7 @@ const o = class {
141
141
  render() {
142
142
  const {shouldShow: e, displayedMessage: s} = this;
143
143
  return t(i, {
144
- key: "b7d36d01109176c2c77edf737093c94b3d3a897f"
144
+ key: "28fd755c61e0bac9a47f06496d90ddcee8034caa"
145
145
  }, e ? t("time", {
146
146
  dateTime: s
147
147
  }, s) : null);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"q2-section-container.entry.esm.js","sources":["src/components/q2-section-container/q2-section-container.tsx"],"sourcesContent":["import { Component, Element, ComponentInterface, h, Prop, Watch } from '@stencil/core';\n\n@Component({ tag: 'q2-section-container', shadow: true })\nexport class Q2SectonContainer implements ComponentInterface {\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region Public Property API\n\n /**\n * Determines if a single or multiple sections can be open at a time.\n */\n @Prop({ mutable: true })\n openMode: 'multiple' | 'single' = 'single';\n\n /**\n * Determines which section starts open.\n */\n @Prop()\n openPaneIndex: number = 0;\n\n /**\n * Determines if all sections inside the section-container start opened or closed.\n *\n * @info\n * If you have openMode set to multiple, all panes will start open.\n */\n @Prop({ mutable: true })\n startAllOpen: boolean = false;\n\n /**\n * Determines if the section-container starts opened or closed.\n *\n * @info\n * If you have openMode set to single, the pane specified in openPaneIndex will start open, or the first pane if unspecified.\n * If you have openMode set to multiple, you can also select startAllOpen to open all panes.\n * @warning\n * OpenMode = multiple and StartAllOpen=true does not work correctly inside of a q2-tab that starts closed.\n */\n @Prop({ mutable: true })\n startOpen: boolean = true;\n\n // #endregion\n // #region Component Lifecycle Events\n\n componentWillLoad() {\n this.filterSlottedElements();\n this.fixSlottedElements();\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('openMode')\n @Watch('openPaneIndex')\n @Watch('startAllOpen')\n @Watch('startOpen')\n handleOpenStateChange() {\n this.fixSlottedElements();\n }\n\n // #endregion\n // #region Local Methods\n\n filterSlottedElements = () => {\n if (!('HTMLSlotElement' in window)) return;\n Array.from(this.hostElement.children).forEach(el => {\n if ('Q2-SECTION' !== el.tagName) {\n el.remove();\n }\n });\n };\n\n fixSlottedElements = () => {\n if (!('HTMLSlotElement' in window)) return;\n Array.from(this.hostElement.children).forEach((el, i) => {\n el.setAttribute('collapsible', '');\n if (this.openMode === 'single') {\n el.addEventListener('change', event => {\n const target = event.target as HTMLElement;\n const children = Array.from(target.parentElement.children);\n const siblings = children.filter(child => child !== target);\n siblings.forEach(el => el.setAttribute('expanded', 'false'));\n });\n }\n\n if (!el.getAttribute('label')) {\n el.setAttribute('label', 'Section ' + (i + 1));\n }\n\n if (!this.startOpen) {\n el.removeAttribute('expanded');\n } else {\n if (this.openPaneIndex === i || (this.openMode === 'multiple' && this.startAllOpen)) {\n el.setAttribute('expanded', '');\n } else {\n el.removeAttribute('expanded');\n }\n }\n });\n };\n\n // #endregion\n // #region Render Methods\n\n render = () => <slot />;\n\n // #endregion\n}\n"],"names":[],"mappings":";;MAGa,iBAAiB,GAAA,MAAA;AAD9B,IAAA,WAAA,CAAA,OAAA,EAAA;;;;AAUI;;AAEG;AAEH,QAAA,IAAQ,CAAA,QAAA,GAA0B,QAAQ;AAE1C;;AAEG;AAEH,QAAA,IAAa,CAAA,aAAA,GAAW,CAAC;AAEzB;;;;;AAKG;AAEH,QAAA,IAAY,CAAA,YAAA,GAAY,KAAK;AAE7B;;;;;;;;AAQG;AAEH,QAAA,IAAS,CAAA,SAAA,GAAY,IAAI;;;AAwBzB,QAAA,IAAqB,CAAA,qBAAA,GAAG,MAAK;AACzB,YAAA,IAAI,EAAE,iBAAiB,IAAI,MAAM,CAAC;gBAAE;AACpC,YAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,IAAG;AAC/C,gBAAA,IAAI,YAAY,KAAK,EAAE,CAAC,OAAO,EAAE;oBAC7B,EAAE,CAAC,MAAM,EAAE;;AAEnB,aAAC,CAAC;AACN,SAAC;AAED,QAAA,IAAkB,CAAA,kBAAA,GAAG,MAAK;AACtB,YAAA,IAAI,EAAE,iBAAiB,IAAI,MAAM,CAAC;gBAAE;AACpC,YAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,KAAI;AACpD,gBAAA,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,EAAE,CAAC;AAClC,gBAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;AAC5B,oBAAA,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,KAAK,IAAG;AAClC,wBAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;AAC1C,wBAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC;AAC1D,wBAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,KAAK,MAAM,CAAC;AAC3D,wBAAA,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AAChE,qBAAC,CAAC;;gBAGN,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;AAC3B,oBAAA,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;;AAGlD,gBAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACjB,oBAAA,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC;;qBAC3B;AACH,oBAAA,IAAI,IAAI,CAAC,aAAa,KAAK,CAAC,KAAK,IAAI,CAAC,QAAQ,KAAK,UAAU,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE;AACjF,wBAAA,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,CAAC;;yBAC5B;AACH,wBAAA,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC;;;AAG1C,aAAC,CAAC;AACN,SAAC;;;AAKD,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,eAAQ;AAG1B;;;IA/DG,iBAAiB,GAAA;QACb,IAAI,CAAC,qBAAqB,EAAE;QAC5B,IAAI,CAAC,kBAAkB,EAAE;;;;IAU7B,qBAAqB,GAAA;QACjB,IAAI,CAAC,kBAAkB,EAAE;;;;;;;;;;;;;"}
@@ -0,0 +1,95 @@
1
+ import { r as e, h as t, g as n } from "./index-CGkHOjh1.js";
2
+
3
+ const s = class {
4
+ constructor(n) {
5
+ e(this, n);
6
+ // #endregion
7
+ // #region Public Property API
8
+ /**
9
+ * Determines if a single or multiple sections can be open at a time.
10
+ */ this.openMode = "single";
11
+ /**
12
+ * Determines which section starts open.
13
+ */ this.openPaneIndex = 0;
14
+ /**
15
+ * Determines if all sections inside the section-container start opened or closed.
16
+ *
17
+ * @info
18
+ * If you have openMode set to multiple, all panes will start open.
19
+ */ this.startAllOpen = false;
20
+ /**
21
+ * Determines if the section-container starts opened or closed.
22
+ *
23
+ * @info
24
+ * If you have openMode set to single, the pane specified in openPaneIndex will start open, or the first pane if unspecified.
25
+ * If you have openMode set to multiple, you can also select startAllOpen to open all panes.
26
+ * @warning
27
+ * OpenMode = multiple and StartAllOpen=true does not work correctly inside of a q2-tab that starts closed.
28
+ */ this.startOpen = true;
29
+ // #endregion
30
+ // #region Local Methods
31
+ this.filterSlottedElements = () => {
32
+ if (!("HTMLSlotElement" in window)) return;
33
+ Array.from(this.hostElement.children).forEach((e => {
34
+ if ("Q2-SECTION" !== e.tagName) {
35
+ e.remove();
36
+ }
37
+ }));
38
+ };
39
+ this.fixSlottedElements = () => {
40
+ if (!("HTMLSlotElement" in window)) return;
41
+ Array.from(this.hostElement.children).forEach(((e, t) => {
42
+ e.setAttribute("collapsible", "");
43
+ if (this.openMode === "single") {
44
+ e.addEventListener("change", (e => {
45
+ const t = e.target;
46
+ const n = Array.from(t.parentElement.children);
47
+ const s = n.filter((e => e !== t));
48
+ s.forEach((e => e.setAttribute("expanded", "false")));
49
+ }));
50
+ }
51
+ if (!e.getAttribute("label")) {
52
+ e.setAttribute("label", "Section " + (t + 1));
53
+ }
54
+ if (!this.startOpen) {
55
+ e.removeAttribute("expanded");
56
+ } else {
57
+ if (this.openPaneIndex === t || this.openMode === "multiple" && this.startAllOpen) {
58
+ e.setAttribute("expanded", "");
59
+ } else {
60
+ e.removeAttribute("expanded");
61
+ }
62
+ }
63
+ }));
64
+ };
65
+ // #endregion
66
+ // #region Render Methods
67
+ this.render = () => t("slot", null);
68
+ }
69
+ // #endregion
70
+ // #region Component Lifecycle Events
71
+ componentWillLoad() {
72
+ this.filterSlottedElements();
73
+ this.fixSlottedElements();
74
+ }
75
+ // #endregion
76
+ // #region Watchers
77
+ handleOpenStateChange() {
78
+ this.fixSlottedElements();
79
+ }
80
+ get hostElement() {
81
+ return n(this);
82
+ }
83
+ static get watchers() {
84
+ return {
85
+ openMode: [ "handleOpenStateChange" ],
86
+ openPaneIndex: [ "handleOpenStateChange" ],
87
+ startAllOpen: [ "handleOpenStateChange" ],
88
+ startOpen: [ "handleOpenStateChange" ]
89
+ };
90
+ }
91
+ };
92
+
93
+ export { s as q2_section_container };
94
+ //# sourceMappingURL=q2-section-container.entry.esm.js.map
95
+ //# sourceMappingURL=q2-section-container.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Q2SectonContainer","constructor","hostRef","this","openMode","openPaneIndex","startAllOpen","startOpen","filterSlottedElements","window","Array","from","hostElement","children","forEach","el","tagName","remove","fixSlottedElements","i","setAttribute","addEventListener","event","target","parentElement","siblings","filter","child","getAttribute","removeAttribute","render","h","componentWillLoad","handleOpenStateChange"],"sources":["src/components/q2-section-container/q2-section-container.tsx"],"sourcesContent":["import { Component, Element, ComponentInterface, h, Prop, Watch } from '@stencil/core';\n\n@Component({ tag: 'q2-section-container', shadow: true })\nexport class Q2SectonContainer implements ComponentInterface {\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region Public Property API\n\n /**\n * Determines if a single or multiple sections can be open at a time.\n */\n @Prop({ mutable: true })\n openMode: 'multiple' | 'single' = 'single';\n\n /**\n * Determines which section starts open.\n */\n @Prop()\n openPaneIndex: number = 0;\n\n /**\n * Determines if all sections inside the section-container start opened or closed.\n *\n * @info\n * If you have openMode set to multiple, all panes will start open.\n */\n @Prop({ mutable: true })\n startAllOpen: boolean = false;\n\n /**\n * Determines if the section-container starts opened or closed.\n *\n * @info\n * If you have openMode set to single, the pane specified in openPaneIndex will start open, or the first pane if unspecified.\n * If you have openMode set to multiple, you can also select startAllOpen to open all panes.\n * @warning\n * OpenMode = multiple and StartAllOpen=true does not work correctly inside of a q2-tab that starts closed.\n */\n @Prop({ mutable: true })\n startOpen: boolean = true;\n\n // #endregion\n // #region Component Lifecycle Events\n\n componentWillLoad() {\n this.filterSlottedElements();\n this.fixSlottedElements();\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('openMode')\n @Watch('openPaneIndex')\n @Watch('startAllOpen')\n @Watch('startOpen')\n handleOpenStateChange() {\n this.fixSlottedElements();\n }\n\n // #endregion\n // #region Local Methods\n\n filterSlottedElements = () => {\n if (!('HTMLSlotElement' in window)) return;\n Array.from(this.hostElement.children).forEach(el => {\n if ('Q2-SECTION' !== el.tagName) {\n el.remove();\n }\n });\n };\n\n fixSlottedElements = () => {\n if (!('HTMLSlotElement' in window)) return;\n Array.from(this.hostElement.children).forEach((el, i) => {\n el.setAttribute('collapsible', '');\n if (this.openMode === 'single') {\n el.addEventListener('change', event => {\n const target = event.target as HTMLElement;\n const children = Array.from(target.parentElement.children);\n const siblings = children.filter(child => child !== target);\n siblings.forEach(el => el.setAttribute('expanded', 'false'));\n });\n }\n\n if (!el.getAttribute('label')) {\n el.setAttribute('label', 'Section ' + (i + 1));\n }\n\n if (!this.startOpen) {\n el.removeAttribute('expanded');\n } else {\n if (this.openPaneIndex === i || (this.openMode === 'multiple' && this.startAllOpen)) {\n el.setAttribute('expanded', '');\n } else {\n el.removeAttribute('expanded');\n }\n }\n });\n };\n\n // #endregion\n // #region Render Methods\n\n render = () => <slot />;\n\n // #endregion\n}\n"],"mappings":";;MAGaA,IAAiB;EAD9B,WAAAC,CAAAC;;;;;;eAcIC,KAAQC,WAA0B;;;eAMlCD,KAAaE,gBAAW;;;;;;eASxBF,KAAYG,eAAY;;;;;;;;;eAYxBH,KAASI,YAAY;;;QAwBrBJ,KAAqBK,wBAAG;MACpB,MAAM,qBAAqBC,SAAS;MACpCC,MAAMC,KAAKR,KAAKS,YAAYC,UAAUC,SAAQC;QAC1C,IAAI,iBAAiBA,EAAGC,SAAS;UAC7BD,EAAGE;;;AAET;IAGNd,KAAkBe,qBAAG;MACjB,MAAM,qBAAqBT,SAAS;MACpCC,MAAMC,KAAKR,KAAKS,YAAYC,UAAUC,SAAQ,CAACC,GAAII;QAC/CJ,EAAGK,aAAa,eAAe;QAC/B,IAAIjB,KAAKC,aAAa,UAAU;UAC5BW,EAAGM,iBAAiB,WAAUC;YAC1B,MAAMC,IAASD,EAAMC;YACrB,MAAMV,IAAWH,MAAMC,KAAKY,EAAOC,cAAcX;YACjD,MAAMY,IAAWZ,EAASa,QAAOC,KAASA,MAAUJ;YACpDE,EAASX,SAAQC,KAAMA,EAAGK,aAAa,YAAY;AAAS;;QAIpE,KAAKL,EAAGa,aAAa,UAAU;UAC3Bb,EAAGK,aAAa,SAAS,cAAcD,IAAI;;QAG/C,KAAKhB,KAAKI,WAAW;UACjBQ,EAAGc,gBAAgB;eAChB;UACH,IAAI1B,KAAKE,kBAAkBc,KAAMhB,KAAKC,aAAa,cAAcD,KAAKG,cAAe;YACjFS,EAAGK,aAAa,YAAY;iBACzB;YACHL,EAAGc,gBAAgB;;;;AAG7B;;;QAMN1B,KAAA2B,SAAS,MAAMC,EAAA;AAGlB;;;EA/DG,iBAAAC;IACI7B,KAAKK;IACLL,KAAKe;;;;EAUT,qBAAAe;IACI9B,KAAKe","ignoreList":[]}