q2-tecton-elements 1.49.2 → 1.50.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (703) hide show
  1. package/dist/cjs/click-elsewhere_2.cjs.entry.js +2 -2
  2. package/dist/cjs/{index-42fcd170.js → index-43010ce4.js} +1 -1
  3. package/dist/cjs/{index-42fcd170.js.map → index-43010ce4.js.map} +1 -1
  4. package/dist/cjs/index-64d8b839.js +1580 -0
  5. package/dist/cjs/index-64d8b839.js.map +1 -0
  6. package/dist/cjs/loader.cjs.js +1 -1
  7. package/dist/cjs/q2-action-sheet.cjs.entry.js +5 -5
  8. package/dist/cjs/q2-action-sheet.cjs.entry.js.map +1 -1
  9. package/dist/cjs/q2-avatar.cjs.entry.js +1 -1
  10. package/dist/cjs/{q2-input.cjs.entry.js → q2-badge_7.cjs.entry.js} +1284 -3
  11. package/dist/cjs/q2-badge_7.cjs.entry.js.map +1 -0
  12. package/dist/cjs/q2-calendar.cjs.entry.js +3 -3
  13. package/dist/cjs/q2-calendar.cjs.entry.js.map +1 -1
  14. package/dist/cjs/q2-card.cjs.entry.js +1 -1
  15. package/dist/cjs/q2-carousel-pane.cjs.entry.js +3 -3
  16. package/dist/cjs/q2-carousel-pane.cjs.entry.js.map +1 -1
  17. package/dist/cjs/q2-carousel.cjs.entry.js +131 -149
  18. package/dist/cjs/q2-carousel.cjs.entry.js.map +1 -1
  19. package/dist/cjs/q2-chart-area.cjs.entry.js +3 -3
  20. package/dist/cjs/q2-chart-area.cjs.entry.js.map +1 -1
  21. package/dist/cjs/q2-chart-bar.cjs.entry.js +3 -3
  22. package/dist/cjs/q2-chart-bar.cjs.entry.js.map +1 -1
  23. package/dist/cjs/q2-chart-donut.cjs.entry.js +2 -2
  24. package/dist/cjs/q2-checkbox-group.cjs.entry.js +2 -2
  25. package/dist/cjs/q2-checkbox.cjs.entry.js +2 -2
  26. package/dist/cjs/q2-currency.cjs.entry.js +1 -1
  27. package/dist/cjs/q2-data-table.cjs.entry.js +62 -2
  28. package/dist/cjs/q2-data-table.cjs.entry.js.map +1 -1
  29. package/dist/cjs/q2-detail.cjs.entry.js +2 -2
  30. package/dist/cjs/q2-dropdown-item.cjs.entry.js +11 -13
  31. package/dist/cjs/q2-dropdown-item.cjs.entry.js.map +1 -1
  32. package/dist/cjs/q2-dropdown.cjs.entry.js +62 -58
  33. package/dist/cjs/q2-dropdown.cjs.entry.js.map +1 -1
  34. package/dist/cjs/q2-editable-field.cjs.entry.js +4 -4
  35. package/dist/cjs/q2-editable-field.cjs.entry.js.map +1 -1
  36. package/dist/cjs/q2-item.cjs.entry.js +3 -3
  37. package/dist/cjs/q2-item.cjs.entry.js.map +1 -1
  38. package/dist/cjs/q2-legend.cjs.entry.js +2 -2
  39. package/dist/cjs/q2-legend.cjs.entry.js.map +1 -1
  40. package/dist/cjs/q2-list.cjs.entry.js +2 -2
  41. package/dist/cjs/q2-loc.cjs.entry.js +2 -2
  42. package/dist/cjs/q2-message.cjs.entry.js +2 -2
  43. package/dist/cjs/q2-month-picker.cjs.entry.js +3 -3
  44. package/dist/cjs/q2-optgroup.cjs.entry.js +2 -2
  45. package/dist/cjs/q2-option-list.cjs.entry.js +13 -11
  46. package/dist/cjs/q2-option-list.cjs.entry.js.map +1 -1
  47. package/dist/cjs/q2-option.cjs.entry.js +1 -1
  48. package/dist/cjs/q2-pagination.cjs.entry.js +3 -3
  49. package/dist/cjs/q2-pill.cjs.entry.js +95 -36
  50. package/dist/cjs/q2-pill.cjs.entry.js.map +1 -1
  51. package/dist/cjs/q2-radio-group.cjs.entry.js +2 -2
  52. package/dist/cjs/q2-radio.cjs.entry.js +2 -2
  53. package/dist/cjs/q2-relative-time.cjs.entry.js +3 -3
  54. package/dist/cjs/q2-section.cjs.entry.js +4 -4
  55. package/dist/cjs/q2-section.cjs.entry.js.map +1 -1
  56. package/dist/cjs/q2-select.cjs.entry.js +19 -18
  57. package/dist/cjs/q2-select.cjs.entry.js.map +1 -1
  58. package/dist/cjs/q2-stepper-pane.cjs.entry.js +2 -2
  59. package/dist/cjs/q2-stepper-vertical.cjs.entry.js +2 -2
  60. package/dist/cjs/q2-stepper.cjs.entry.js +2 -2
  61. package/dist/cjs/q2-tag.cjs.entry.js +33 -6
  62. package/dist/cjs/q2-tag.cjs.entry.js.map +1 -1
  63. package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
  64. package/dist/cjs/q2-textarea.cjs.entry.js +2 -2
  65. package/dist/cjs/q2-tooltip.cjs.entry.js +1 -1
  66. package/dist/cjs/tecton-tab-pane.cjs.entry.js +2 -2
  67. package/dist/collection/collection-manifest.json +7 -8
  68. package/dist/collection/components/click-elsewhere/click-elsewhere.js.map +1 -1
  69. package/dist/{test/elements → collection/components/click-elsewhere/test}/click-elsewhere-test.e2e.js +1 -1
  70. package/dist/collection/components/click-elsewhere/test/click-elsewhere-test.e2e.js.map +1 -0
  71. package/dist/collection/components/q2-action-sheet/q2-action-sheet.js +5 -5
  72. package/dist/collection/components/q2-action-sheet/q2-action-sheet.js.map +1 -1
  73. package/dist/{test/elements → collection/components/q2-action-sheet/test}/q2-action-sheet-test.e2e.js +29 -1
  74. package/dist/collection/components/q2-action-sheet/test/q2-action-sheet-test.e2e.js.map +1 -0
  75. package/dist/collection/components/q2-avatar/q2-avatar.js +1 -1
  76. package/dist/collection/components/q2-avatar/q2-avatar.js.map +1 -1
  77. package/dist/{test/elements → collection/components/q2-avatar/test}/q2-avatar-test.e2e.js +1 -1
  78. package/dist/collection/components/q2-avatar/test/q2-avatar-test.e2e.js.map +1 -0
  79. package/dist/collection/components/q2-badge/q2-badge.js +0 -1
  80. package/dist/collection/components/q2-badge/q2-badge.js.map +1 -1
  81. package/dist/{test/elements → collection/components/q2-badge/test}/q2-badge-test.e2e.js +1 -1
  82. package/dist/collection/components/q2-badge/test/q2-badge-test.e2e.js.map +1 -0
  83. package/dist/collection/components/q2-btn/q2-btn.css +1 -0
  84. package/dist/collection/components/q2-btn/q2-btn.js +3 -15
  85. package/dist/collection/components/q2-btn/q2-btn.js.map +1 -1
  86. package/dist/{test/elements → collection/components/q2-btn/test}/q2-btn-test.e2e.js +36 -1
  87. package/dist/collection/components/q2-btn/test/q2-btn-test.e2e.js.map +1 -0
  88. package/dist/collection/components/q2-calendar/q2-calendar-helpers.js.map +1 -1
  89. package/dist/collection/components/q2-calendar/q2-calendar-types.js.map +1 -1
  90. package/dist/collection/components/q2-calendar/q2-calendar-validation.js.map +1 -1
  91. package/dist/collection/components/q2-calendar/q2-calendar.js +1 -1
  92. package/dist/collection/components/q2-calendar/q2-calendar.js.map +1 -1
  93. package/dist/collection/components/q2-calendar/q2-month-picker.js +2 -2
  94. package/dist/collection/components/q2-calendar/q2-month-picker.js.map +1 -1
  95. package/dist/{test/elements/q2-calendar → collection/components/q2-calendar/test}/helpers-test.e2e.js +2 -2
  96. package/dist/collection/components/q2-calendar/test/helpers-test.e2e.js.map +1 -0
  97. package/dist/{test/elements → collection/components/q2-calendar/test}/q2-calendar-month-picker-test.e2e.js +1 -1
  98. package/dist/collection/components/q2-calendar/test/q2-calendar-month-picker-test.e2e.js.map +1 -0
  99. package/dist/{test/elements → collection/components/q2-calendar/test}/q2-calendar-test.e2e.js +3 -3
  100. package/dist/collection/components/q2-calendar/test/q2-calendar-test.e2e.js.map +1 -0
  101. package/dist/{test/elements/q2-calendar → collection/components/q2-calendar/test}/validation-test.e2e.js +2 -2
  102. package/dist/collection/components/q2-calendar/test/validation-test.e2e.js.map +1 -0
  103. package/dist/collection/components/q2-card/q2-card.js.map +1 -1
  104. package/dist/{test/elements → collection/components/q2-card/test}/q2-card-test.e2e.js +1 -1
  105. package/dist/collection/components/q2-card/test/q2-card-test.e2e.js.map +1 -0
  106. package/dist/collection/components/q2-carousel/q2-carousel.js +190 -164
  107. package/dist/collection/components/q2-carousel/q2-carousel.js.map +1 -1
  108. package/dist/{test/elements → collection/components/q2-carousel/test}/q2-carousel-test.e2e.js +175 -188
  109. package/dist/collection/components/q2-carousel/test/q2-carousel-test.e2e.js.map +1 -0
  110. package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.js +5 -5
  111. package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.js.map +1 -1
  112. package/dist/{test/elements → collection/components/q2-carousel-pane/test}/q2-carousel-pane-test.e2e.js +1 -1
  113. package/dist/collection/components/q2-carousel-pane/test/q2-carousel-pane-test.e2e.js.map +1 -0
  114. package/dist/{test/elements → collection/components/q2-carousel-pane/test}/q2-carousel-pane-test.spec.js +1 -1
  115. package/dist/collection/components/q2-carousel-pane/test/q2-carousel-pane-test.spec.js.map +1 -0
  116. package/dist/collection/components/q2-chart-area/q2-chart-area.js +20 -20
  117. package/dist/collection/components/q2-chart-area/q2-chart-area.js.map +1 -1
  118. package/dist/{test/elements → collection/components/q2-chart-area/test}/q2-chart-area-test.e2e.js +1 -1
  119. package/dist/collection/components/q2-chart-area/test/q2-chart-area-test.e2e.js.map +1 -0
  120. package/dist/collection/components/q2-chart-bar/q2-chart-bar.js +20 -20
  121. package/dist/collection/components/q2-chart-bar/q2-chart-bar.js.map +1 -1
  122. package/dist/{test/elements → collection/components/q2-chart-bar/test}/q2-chart-bar-test.e2e.js +1 -1
  123. package/dist/collection/components/q2-chart-bar/test/q2-chart-bar-test.e2e.js.map +1 -0
  124. package/dist/collection/components/q2-chart-donut/q2-chart-donut.js +1 -1
  125. package/dist/collection/components/q2-chart-donut/q2-chart-donut.js.map +1 -1
  126. package/dist/{test/elements → collection/components/q2-chart-donut/test}/q2-chart-donut-test.e2e.js +1 -1
  127. package/dist/collection/components/q2-chart-donut/test/q2-chart-donut-test.e2e.js.map +1 -0
  128. package/dist/collection/components/q2-checkbox/q2-checkbox.js +1 -1
  129. package/dist/collection/components/q2-checkbox/q2-checkbox.js.map +1 -1
  130. package/dist/{test/elements → collection/components/q2-checkbox/test}/q2-checkbox-test.e2e.js +1 -1
  131. package/dist/collection/components/q2-checkbox/test/q2-checkbox-test.e2e.js.map +1 -0
  132. package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.js +1 -1
  133. package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.js.map +1 -1
  134. package/dist/{test/elements → collection/components/q2-checkbox-group/test}/q2-checkbox-group-test.e2e.js +1 -1
  135. package/dist/collection/components/q2-checkbox-group/test/q2-checkbox-group-test.e2e.js.map +1 -0
  136. package/dist/collection/components/q2-currency/q2-currency.js +1 -1
  137. package/dist/collection/components/q2-currency/q2-currency.js.map +1 -1
  138. package/dist/{test/elements → collection/components/q2-currency/test}/q2-currency-test.e2e.js +2 -2
  139. package/dist/collection/components/q2-currency/test/q2-currency-test.e2e.js.map +1 -0
  140. package/dist/collection/components/q2-data-table/q2-data-table.js +240 -7
  141. package/dist/collection/components/q2-data-table/q2-data-table.js.map +1 -1
  142. package/dist/{test/elements → collection/components/q2-data-table/test}/q2-data-table-test.e2e.js +64 -2
  143. package/dist/collection/components/q2-data-table/test/q2-data-table-test.e2e.js.map +1 -0
  144. package/dist/collection/components/q2-detail/q2-detail.js +1 -1
  145. package/dist/collection/components/q2-detail/q2-detail.js.map +1 -1
  146. package/dist/{test/elements/q2-detail → collection/components/q2-detail/test}/q2-detail-test.e2e.js +3 -3
  147. package/dist/collection/components/q2-detail/test/q2-detail-test.e2e.js.map +1 -0
  148. package/dist/collection/components/q2-dropdown/q2-dropdown.js +65 -57
  149. package/dist/collection/components/q2-dropdown/q2-dropdown.js.map +1 -1
  150. package/dist/{test/elements → collection/components/q2-dropdown/test}/q2-dropdown-test.e2e.js +165 -120
  151. package/dist/collection/components/q2-dropdown/test/q2-dropdown-test.e2e.js.map +1 -0
  152. package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.js +10 -12
  153. package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.js.map +1 -1
  154. package/dist/{test/elements → collection/components/q2-dropdown-item/test}/q2-dropdown-item-test.e2e.js +5 -13
  155. package/dist/collection/components/q2-dropdown-item/test/q2-dropdown-item-test.e2e.js.map +1 -0
  156. package/dist/collection/components/q2-editable-field/q2-editable-field.js +3 -3
  157. package/dist/collection/components/q2-editable-field/q2-editable-field.js.map +1 -1
  158. package/dist/{test/elements → collection/components/q2-editable-field/test}/q2-editable-field-test.e2e.js +1 -4
  159. package/dist/collection/components/q2-editable-field/test/q2-editable-field-test.e2e.js.map +1 -0
  160. package/dist/collection/components/q2-icon/q2-icon-types.js.map +1 -1
  161. package/dist/collection/components/q2-icon/q2-icon.js.map +1 -1
  162. package/dist/{test/elements → collection/components/q2-icon/test}/q2-icon-test.e2e.js +2 -2
  163. package/dist/collection/components/q2-icon/test/q2-icon-test.e2e.js.map +1 -0
  164. package/dist/collection/components/q2-input/formatting/alpha.js.map +1 -1
  165. package/dist/collection/components/q2-input/formatting/alphanumeric.js.map +1 -1
  166. package/dist/collection/components/q2-input/formatting/credit-card.js.map +1 -1
  167. package/dist/collection/components/q2-input/formatting/credit-card.spec.js.map +1 -1
  168. package/dist/collection/components/q2-input/formatting/currency.js.map +1 -1
  169. package/dist/collection/components/q2-input/formatting/date.js.map +1 -1
  170. package/dist/collection/components/q2-input/formatting/generic.js.map +1 -1
  171. package/dist/collection/components/q2-input/formatting/number.js.map +1 -1
  172. package/dist/collection/components/q2-input/formatting/numeric.js.map +1 -1
  173. package/dist/collection/components/q2-input/formatting/phone.js.map +1 -1
  174. package/dist/collection/components/q2-input/formatting/postal.js.map +1 -1
  175. package/dist/collection/components/q2-input/formatting/ssn.js.map +1 -1
  176. package/dist/collection/components/q2-input/formatting/tin.js.map +1 -1
  177. package/dist/collection/components/q2-input/q2-input-types.js.map +1 -1
  178. package/dist/collection/components/q2-input/q2-input.js +2 -2
  179. package/dist/collection/components/q2-input/q2-input.js.map +1 -1
  180. package/dist/{test/elements → collection/components/q2-input/test}/q2-input-credit-card-test.e2e.js +1 -1
  181. package/dist/collection/components/q2-input/test/q2-input-credit-card-test.e2e.js.map +1 -0
  182. package/dist/{test/elements → collection/components/q2-input/test}/q2-input-test.e2e.js +1 -1
  183. package/dist/collection/components/q2-input/test/q2-input-test.e2e.js.map +1 -0
  184. package/dist/collection/components/q2-item/q2-item.css +3 -3
  185. package/dist/collection/components/q2-item/q2-item.js +1 -1
  186. package/dist/collection/components/q2-item/q2-item.js.map +1 -1
  187. package/dist/{test/elements → collection/components/q2-item/test}/q2-item-test.e2e.js +1 -1
  188. package/dist/collection/components/q2-item/test/q2-item-test.e2e.js.map +1 -0
  189. package/dist/{test/elements → collection/components/q2-item/test}/q2-item-test.spec.js +1 -1
  190. package/dist/collection/components/q2-item/test/q2-item-test.spec.js.map +1 -0
  191. package/dist/collection/components/q2-legend/q2-legend.css +6 -6
  192. package/dist/collection/components/q2-legend/q2-legend.js +1 -1
  193. package/dist/collection/components/q2-legend/q2-legend.js.map +1 -1
  194. package/dist/{test/elements → collection/components/q2-legend/test}/q2-legend-test.e2e.js +1 -1
  195. package/dist/collection/components/q2-legend/test/q2-legend-test.e2e.js.map +1 -0
  196. package/dist/{test/elements → collection/components/q2-legend/test}/q2-legend-test.spec.js +1 -1
  197. package/dist/collection/components/q2-legend/test/q2-legend-test.spec.js.map +1 -0
  198. package/dist/collection/components/q2-list/q2-list.js +1 -1
  199. package/dist/collection/components/q2-list/q2-list.js.map +1 -1
  200. package/dist/{test/elements/q2-detail → collection/components/q2-list/test}/q2-list-test.e2e.js +1 -1
  201. package/dist/collection/components/q2-list/test/q2-list-test.e2e.js.map +1 -0
  202. package/dist/collection/components/q2-loading/q2-loading.js.map +1 -1
  203. package/dist/collection/components/q2-loading/skeleton/q2-loading-element/index.js.map +1 -1
  204. package/dist/collection/components/q2-loading/skeleton/shapes.js.map +1 -1
  205. package/dist/{test/elements → collection/components/q2-loading/test}/q2-loading-element-test.e2e.js +1 -1
  206. package/dist/collection/components/q2-loading/test/q2-loading-element-test.e2e.js.map +1 -0
  207. package/dist/{test/elements → collection/components/q2-loading/test}/q2-loading-test.e2e.js +1 -1
  208. package/dist/collection/components/q2-loading/test/q2-loading-test.e2e.js.map +1 -0
  209. package/dist/collection/components/q2-loc/q2-loc.js +1 -1
  210. package/dist/collection/components/q2-loc/q2-loc.js.map +1 -1
  211. package/dist/{test/elements → collection/components/q2-loc/test}/q2-loc-test.e2e.js +1 -1
  212. package/dist/collection/components/q2-loc/test/q2-loc-test.e2e.js.map +1 -0
  213. package/dist/collection/components/q2-message/q2-message.js +1 -1
  214. package/dist/collection/components/q2-message/q2-message.js.map +1 -1
  215. package/dist/{test/elements → collection/components/q2-message/test}/q2-message-test.e2e.js +1 -1
  216. package/dist/collection/components/q2-message/test/q2-message-test.e2e.js.map +1 -0
  217. package/dist/collection/components/q2-optgroup/q2-optgroup.js +1 -1
  218. package/dist/collection/components/q2-optgroup/q2-optgroup.js.map +1 -1
  219. package/dist/{test/elements → collection/components/q2-optgroup/test}/q2-optgroup-test.e2e.js +1 -1
  220. package/dist/collection/components/q2-optgroup/test/q2-optgroup-test.e2e.js.map +1 -0
  221. package/dist/collection/components/q2-option/q2-option.js +1 -1
  222. package/dist/collection/components/q2-option/q2-option.js.map +1 -1
  223. package/dist/{test/elements → collection/components/q2-option/test}/q2-option-test.e2e.js +1 -1
  224. package/dist/collection/components/q2-option/test/q2-option-test.e2e.js.map +1 -0
  225. package/dist/collection/components/q2-option-list/q2-option-list.js +15 -13
  226. package/dist/collection/components/q2-option-list/q2-option-list.js.map +1 -1
  227. package/dist/{test/elements → collection/components/q2-option-list/test}/q2-option-list-test.e2e.js +1 -1
  228. package/dist/collection/components/q2-option-list/test/q2-option-list-test.e2e.js.map +1 -0
  229. package/dist/collection/components/q2-pagination/q2-pagination.js +2 -2
  230. package/dist/collection/components/q2-pagination/q2-pagination.js.map +1 -1
  231. package/dist/{test/elements → collection/components/q2-pagination/test}/q2-pagination-test.e2e.js +1 -1
  232. package/dist/collection/components/q2-pagination/test/q2-pagination-test.e2e.js.map +1 -0
  233. package/dist/collection/components/q2-pill/q2-pill.js +172 -37
  234. package/dist/collection/components/q2-pill/q2-pill.js.map +1 -1
  235. package/dist/{test/elements → collection/components/q2-pill/test}/q2-pill-test.e2e.js +484 -392
  236. package/dist/collection/components/q2-pill/test/q2-pill-test.e2e.js.map +1 -0
  237. package/dist/collection/components/q2-popover/q2-popover.js +1 -1
  238. package/dist/collection/components/q2-popover/q2-popover.js.map +1 -1
  239. package/dist/{test/elements → collection/components/q2-popover/test}/q2-popover-test.e2e.js +2 -2
  240. package/dist/collection/components/q2-popover/test/q2-popover-test.e2e.js.map +1 -0
  241. package/dist/{test/elements → collection/components/q2-popover/test}/q2-popover-test.spec.js +1 -1
  242. package/dist/collection/components/q2-popover/test/q2-popover-test.spec.js.map +1 -0
  243. package/dist/collection/components/q2-radio/q2-radio.js +1 -1
  244. package/dist/collection/components/q2-radio/q2-radio.js.map +1 -1
  245. package/dist/{test/elements → collection/components/q2-radio/test}/q2-radio-test.e2e.js +1 -1
  246. package/dist/collection/components/q2-radio/test/q2-radio-test.e2e.js.map +1 -0
  247. package/dist/collection/components/q2-radio-group/q2-radio-group.js +1 -1
  248. package/dist/collection/components/q2-radio-group/q2-radio-group.js.map +1 -1
  249. package/dist/{test/elements → collection/components/q2-radio-group/test}/q2-radio-group-test.e2e.js +1 -1
  250. package/dist/collection/components/q2-radio-group/test/q2-radio-group-test.e2e.js.map +1 -0
  251. package/dist/collection/components/q2-relative-time/q2-relative-time.js +1 -1
  252. package/dist/collection/components/q2-relative-time/q2-relative-time.js.map +1 -1
  253. package/dist/{test/elements → collection/components/q2-relative-time/test}/q2-relative-time-test.e2e.js +2 -2
  254. package/dist/collection/components/q2-relative-time/test/q2-relative-time-test.e2e.js.map +1 -0
  255. package/dist/collection/components/q2-section/q2-section.css +1 -1
  256. package/dist/collection/components/q2-section/q2-section.js +2 -2
  257. package/dist/collection/components/q2-section/q2-section.js.map +1 -1
  258. package/dist/{test/elements → collection/components/q2-section/test}/q2-section-test.e2e.js +12 -7
  259. package/dist/collection/components/q2-section/test/q2-section-test.e2e.js.map +1 -0
  260. package/dist/collection/components/q2-select/q2-select.js +18 -17
  261. package/dist/collection/components/q2-select/q2-select.js.map +1 -1
  262. package/dist/{test/elements → collection/components/q2-select/test}/q2-select-test.e2e.js +20 -2
  263. package/dist/collection/components/q2-select/test/q2-select-test.e2e.js.map +1 -0
  264. package/dist/collection/components/q2-stepper/q2-stepper.js +1 -1
  265. package/dist/collection/components/q2-stepper/q2-stepper.js.map +1 -1
  266. package/dist/{test/elements → collection/components/q2-stepper/test}/q2-stepper-test.e2e.js +1 -1
  267. package/dist/collection/components/q2-stepper/test/q2-stepper-test.e2e.js.map +1 -0
  268. package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.js +3 -3
  269. package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.js.map +1 -1
  270. package/dist/{test/elements → collection/components/q2-stepper-pane/test}/q2-stepper-pane-test.e2e.js +1 -1
  271. package/dist/collection/components/q2-stepper-pane/test/q2-stepper-pane-test.e2e.js.map +1 -0
  272. package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js +1 -1
  273. package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js.map +1 -1
  274. package/dist/{test/elements → collection/components/q2-stepper-vertical/test}/q2-stepper-vertical-test.e2e.js +1 -1
  275. package/dist/collection/components/q2-stepper-vertical/test/q2-stepper-vertical-test.e2e.js.map +1 -0
  276. package/dist/collection/components/q2-tab-container/q2-tab-container.js +21 -20
  277. package/dist/collection/components/q2-tab-container/q2-tab-container.js.map +1 -1
  278. package/dist/{test/elements → collection/components/q2-tab-container/test}/q2-tab-container-test.e2e.js +1 -1
  279. package/dist/collection/components/q2-tab-container/test/q2-tab-container-test.e2e.js.map +1 -0
  280. package/dist/collection/components/q2-tab-container/test/q2-tab-container-test.spec.js +54 -0
  281. package/dist/collection/components/q2-tab-container/test/q2-tab-container-test.spec.js.map +1 -0
  282. package/dist/collection/components/q2-tab-pane/q2-tab-pane.js +1 -1
  283. package/dist/collection/components/q2-tab-pane/q2-tab-pane.js.map +1 -1
  284. package/dist/{test/elements → collection/components/q2-tab-pane/test}/q2-tab-pane-test.e2e.js +1 -1
  285. package/dist/collection/components/q2-tab-pane/test/q2-tab-pane-test.e2e.js.map +1 -0
  286. package/dist/collection/components/q2-tag/q2-tag.js +92 -6
  287. package/dist/collection/components/q2-tag/q2-tag.js.map +1 -1
  288. package/dist/{test/elements → collection/components/q2-tag/test}/q2-tag-test.e2e.js +40 -8
  289. package/dist/collection/components/q2-tag/test/q2-tag-test.e2e.js.map +1 -0
  290. package/dist/collection/components/q2-textarea/q2-textarea.js +1 -1
  291. package/dist/collection/components/q2-textarea/q2-textarea.js.map +1 -1
  292. package/dist/{test/elements → collection/components/q2-textarea/test}/q2-textarea-test.e2e.js +1 -1
  293. package/dist/collection/components/q2-textarea/test/q2-textarea-test.e2e.js.map +1 -0
  294. package/dist/collection/components/q2-tooltip/q2-tooltip.js.map +1 -1
  295. package/dist/{test/elements → collection/components/q2-tooltip/test}/q2-tooltip-test.e2e.js +1 -1
  296. package/dist/collection/components/q2-tooltip/test/q2-tooltip-test.e2e.js.map +1 -0
  297. package/dist/collection/components/tecton-tab-pane/tecton-tab-pane-types.js.map +1 -1
  298. package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js +2 -2
  299. package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js.map +1 -1
  300. package/dist/{test/elements → collection/components/tecton-tab-pane/test}/tecton-tab-pane-test.e2e.js +1 -1
  301. package/dist/collection/components/tecton-tab-pane/test/tecton-tab-pane-test.e2e.js.map +1 -0
  302. package/dist/collection/index.js.map +1 -1
  303. package/dist/collection/utils/action-sheet.js.map +1 -1
  304. package/dist/collection/utils/charting.js.map +1 -1
  305. package/dist/{test → collection/utils}/helpers.js +1 -1
  306. package/dist/collection/utils/helpers.js.map +1 -0
  307. package/dist/collection/utils/index.js +9 -0
  308. package/dist/collection/utils/index.js.map +1 -1
  309. package/dist/{test/utils → collection/utils/test}/action-sheet-test.e2e.js +1 -1
  310. package/dist/collection/utils/test/action-sheet-test.e2e.js.map +1 -0
  311. package/dist/{test/utils → collection/utils/test}/index.spec.js +1 -1
  312. package/dist/collection/utils/test/index.spec.js.map +1 -0
  313. package/dist/components/action-sheet.js +1 -1
  314. package/dist/components/index.js +0 -2
  315. package/dist/components/index.js.map +1 -1
  316. package/dist/components/index2.js +1355 -1
  317. package/dist/components/index2.js.map +1 -1
  318. package/dist/components/q2-action-sheet.js +5 -5
  319. package/dist/components/q2-action-sheet.js.map +1 -1
  320. package/dist/components/q2-avatar2.js +1 -1
  321. package/dist/components/q2-badge2.js.map +1 -1
  322. package/dist/components/q2-btn2.js +6 -12
  323. package/dist/components/q2-btn2.js.map +1 -1
  324. package/dist/components/q2-calendar.js +1 -1
  325. package/dist/components/q2-calendar.js.map +1 -1
  326. package/dist/components/q2-carousel-pane.js +2 -2
  327. package/dist/components/q2-carousel-pane.js.map +1 -1
  328. package/dist/components/q2-carousel.js +133 -154
  329. package/dist/components/q2-carousel.js.map +1 -1
  330. package/dist/components/q2-chart-area.js +3 -3
  331. package/dist/components/q2-chart-area.js.map +1 -1
  332. package/dist/components/q2-chart-bar.js +4 -4
  333. package/dist/components/q2-chart-bar.js.map +1 -1
  334. package/dist/components/q2-chart-donut.js +1 -1
  335. package/dist/components/q2-checkbox-group.js +1 -1
  336. package/dist/components/q2-checkbox2.js +1 -1
  337. package/dist/components/q2-currency.js +1 -1
  338. package/dist/components/q2-data-table.js +68 -2
  339. package/dist/components/q2-data-table.js.map +1 -1
  340. package/dist/components/q2-detail.js +1 -1
  341. package/dist/components/q2-dropdown-item2.js +10 -12
  342. package/dist/components/q2-dropdown-item2.js.map +1 -1
  343. package/dist/components/q2-dropdown.js +61 -57
  344. package/dist/components/q2-dropdown.js.map +1 -1
  345. package/dist/components/q2-editable-field.js +3 -3
  346. package/dist/components/q2-editable-field.js.map +1 -1
  347. package/dist/components/q2-input2.js +2 -2
  348. package/dist/components/q2-item.js +2 -2
  349. package/dist/components/q2-item.js.map +1 -1
  350. package/dist/components/q2-legend2.js +2 -2
  351. package/dist/components/q2-legend2.js.map +1 -1
  352. package/dist/components/q2-list.js +1 -1
  353. package/dist/components/q2-loc.js +1 -1
  354. package/dist/components/q2-message2.js +2 -2
  355. package/dist/components/q2-month-picker.js +2 -2
  356. package/dist/components/q2-optgroup2.js +1 -1
  357. package/dist/components/q2-option-list2.js +13 -11
  358. package/dist/components/q2-option-list2.js.map +1 -1
  359. package/dist/components/q2-option2.js +1 -1
  360. package/dist/components/q2-pagination.js +2 -2
  361. package/dist/components/q2-pill.js +100 -38
  362. package/dist/components/q2-pill.js.map +1 -1
  363. package/dist/components/q2-popover2.js +2 -2
  364. package/dist/components/q2-radio-group.js +1 -1
  365. package/dist/components/q2-radio.js +1 -1
  366. package/dist/components/q2-relative-time.js +1 -1
  367. package/dist/components/q2-section.js +3 -3
  368. package/dist/components/q2-section.js.map +1 -1
  369. package/dist/components/q2-select2.js +20 -19
  370. package/dist/components/q2-select2.js.map +1 -1
  371. package/dist/components/q2-stepper-pane.js +1 -1
  372. package/dist/components/q2-stepper-vertical.js +1 -1
  373. package/dist/components/q2-stepper.js +1 -1
  374. package/dist/components/q2-tab-container.js +21 -20
  375. package/dist/components/q2-tab-container.js.map +1 -1
  376. package/dist/components/q2-tab-pane.js +1 -1
  377. package/dist/components/q2-tag.js +38 -8
  378. package/dist/components/q2-tag.js.map +1 -1
  379. package/dist/components/q2-textarea.js +2 -2
  380. package/dist/components/tecton-tab-pane.js +2 -2
  381. package/dist/esm/{action-sheet-dd527168.js → action-sheet-e64cb6f7.js} +2 -2
  382. package/dist/esm/{action-sheet-dd527168.js.map → action-sheet-e64cb6f7.js.map} +1 -1
  383. package/dist/esm/click-elsewhere_2.entry.js +2 -2
  384. package/dist/esm/index-4a80972c.js +1556 -0
  385. package/dist/esm/index-4a80972c.js.map +1 -0
  386. package/dist/esm/{index-1c019b24.js → index-c6d74f10.js} +1 -1
  387. package/dist/esm/{index-1c019b24.js.map → index-c6d74f10.js.map} +1 -1
  388. package/dist/esm/loader.js +1 -1
  389. package/dist/esm/q2-action-sheet.entry.js +5 -5
  390. package/dist/esm/q2-action-sheet.entry.js.map +1 -1
  391. package/dist/esm/q2-avatar.entry.js +1 -1
  392. package/dist/esm/{q2-input.entry.js → q2-badge_7.entry.js} +1280 -5
  393. package/dist/esm/q2-badge_7.entry.js.map +1 -0
  394. package/dist/esm/q2-calendar.entry.js +3 -3
  395. package/dist/esm/q2-calendar.entry.js.map +1 -1
  396. package/dist/esm/q2-card.entry.js +1 -1
  397. package/dist/esm/q2-carousel-pane.entry.js +3 -3
  398. package/dist/esm/q2-carousel-pane.entry.js.map +1 -1
  399. package/dist/esm/q2-carousel.entry.js +131 -149
  400. package/dist/esm/q2-carousel.entry.js.map +1 -1
  401. package/dist/esm/q2-chart-area.entry.js +3 -3
  402. package/dist/esm/q2-chart-area.entry.js.map +1 -1
  403. package/dist/esm/q2-chart-bar.entry.js +3 -3
  404. package/dist/esm/q2-chart-bar.entry.js.map +1 -1
  405. package/dist/esm/q2-chart-donut.entry.js +2 -2
  406. package/dist/esm/q2-checkbox-group.entry.js +2 -2
  407. package/dist/esm/q2-checkbox.entry.js +2 -2
  408. package/dist/esm/q2-currency.entry.js +1 -1
  409. package/dist/esm/q2-data-table.entry.js +62 -2
  410. package/dist/esm/q2-data-table.entry.js.map +1 -1
  411. package/dist/esm/q2-detail.entry.js +2 -2
  412. package/dist/esm/q2-dropdown-item.entry.js +11 -13
  413. package/dist/esm/q2-dropdown-item.entry.js.map +1 -1
  414. package/dist/esm/q2-dropdown.entry.js +62 -58
  415. package/dist/esm/q2-dropdown.entry.js.map +1 -1
  416. package/dist/esm/q2-editable-field.entry.js +4 -4
  417. package/dist/esm/q2-editable-field.entry.js.map +1 -1
  418. package/dist/esm/q2-item.entry.js +3 -3
  419. package/dist/esm/q2-item.entry.js.map +1 -1
  420. package/dist/esm/q2-legend.entry.js +2 -2
  421. package/dist/esm/q2-legend.entry.js.map +1 -1
  422. package/dist/esm/q2-list.entry.js +2 -2
  423. package/dist/esm/q2-loc.entry.js +2 -2
  424. package/dist/esm/q2-message.entry.js +2 -2
  425. package/dist/esm/q2-month-picker.entry.js +3 -3
  426. package/dist/esm/q2-optgroup.entry.js +2 -2
  427. package/dist/esm/q2-option-list.entry.js +13 -11
  428. package/dist/esm/q2-option-list.entry.js.map +1 -1
  429. package/dist/esm/q2-option.entry.js +1 -1
  430. package/dist/esm/q2-pagination.entry.js +3 -3
  431. package/dist/esm/q2-pill.entry.js +96 -37
  432. package/dist/esm/q2-pill.entry.js.map +1 -1
  433. package/dist/esm/q2-radio-group.entry.js +2 -2
  434. package/dist/esm/q2-radio.entry.js +2 -2
  435. package/dist/esm/q2-relative-time.entry.js +3 -3
  436. package/dist/esm/q2-section.entry.js +4 -4
  437. package/dist/esm/q2-section.entry.js.map +1 -1
  438. package/dist/esm/q2-select.entry.js +20 -19
  439. package/dist/esm/q2-select.entry.js.map +1 -1
  440. package/dist/esm/q2-stepper-pane.entry.js +2 -2
  441. package/dist/esm/q2-stepper-vertical.entry.js +2 -2
  442. package/dist/esm/q2-stepper.entry.js +2 -2
  443. package/dist/esm/q2-tag.entry.js +34 -7
  444. package/dist/esm/q2-tag.entry.js.map +1 -1
  445. package/dist/esm/q2-tecton-elements.js +1 -1
  446. package/dist/esm/q2-textarea.entry.js +2 -2
  447. package/dist/esm/q2-tooltip.entry.js +1 -1
  448. package/dist/esm/tecton-tab-pane.entry.js +2 -2
  449. package/dist/q2-tecton-elements/{p-da711c59.entry.js → p-072c5877.entry.js} +2 -2
  450. package/dist/q2-tecton-elements/{p-f6358905.entry.js → p-074ae80c.entry.js} +2 -2
  451. package/dist/q2-tecton-elements/p-0a1dff75.entry.js +2 -0
  452. package/dist/q2-tecton-elements/p-0a1dff75.entry.js.map +1 -0
  453. package/dist/q2-tecton-elements/{p-93680d12.entry.js → p-0a3a804a.entry.js} +2 -2
  454. package/dist/q2-tecton-elements/{p-93680d12.entry.js.map → p-0a3a804a.entry.js.map} +1 -1
  455. package/dist/q2-tecton-elements/p-259b728a.entry.js +2 -0
  456. package/dist/q2-tecton-elements/{p-77a763eb.entry.js.map → p-259b728a.entry.js.map} +1 -1
  457. package/dist/q2-tecton-elements/{p-7b9a6bb7.entry.js → p-2c26295e.entry.js} +2 -2
  458. package/dist/q2-tecton-elements/{p-bbf9d36d.entry.js → p-2ca6d44f.entry.js} +2 -2
  459. package/dist/q2-tecton-elements/{p-2bcb7e89.entry.js → p-2fcaf2d6.entry.js} +2 -2
  460. package/dist/q2-tecton-elements/p-2fcaf2d6.entry.js.map +1 -0
  461. package/dist/q2-tecton-elements/{p-0852e6fe.entry.js → p-34696e3f.entry.js} +2 -2
  462. package/dist/q2-tecton-elements/{p-1e7fa870.entry.js → p-34856c71.entry.js} +2 -2
  463. package/dist/q2-tecton-elements/p-34856c71.entry.js.map +1 -0
  464. package/dist/q2-tecton-elements/p-376a0589.entry.js +2 -0
  465. package/dist/q2-tecton-elements/p-376a0589.entry.js.map +1 -0
  466. package/dist/q2-tecton-elements/{p-630613c7.entry.js → p-395904b4.entry.js} +2 -2
  467. package/dist/q2-tecton-elements/p-3b0d3cd4.entry.js +2 -0
  468. package/dist/q2-tecton-elements/p-3b0d3cd4.entry.js.map +1 -0
  469. package/dist/q2-tecton-elements/{p-d8d9ba1f.entry.js → p-3c7be0bb.entry.js} +2 -2
  470. package/dist/q2-tecton-elements/p-3c7be0bb.entry.js.map +1 -0
  471. package/dist/q2-tecton-elements/p-403bf3d4.entry.js +2 -0
  472. package/dist/q2-tecton-elements/{p-5037fa67.entry.js.map → p-403bf3d4.entry.js.map} +1 -1
  473. package/dist/q2-tecton-elements/{p-db79c056.entry.js → p-4116579f.entry.js} +2 -2
  474. package/dist/q2-tecton-elements/{p-e0a6baea.entry.js → p-45407ecc.entry.js} +2 -2
  475. package/dist/q2-tecton-elements/{p-ec8a0b64.entry.js → p-58cafc0d.entry.js} +2 -2
  476. package/dist/q2-tecton-elements/{p-4388e521.entry.js → p-5d936af5.entry.js} +2 -2
  477. package/dist/q2-tecton-elements/p-6237c775.entry.js +2 -0
  478. package/dist/q2-tecton-elements/p-6237c775.entry.js.map +1 -0
  479. package/dist/q2-tecton-elements/{p-a177d812.entry.js → p-661ed976.entry.js} +2 -2
  480. package/dist/q2-tecton-elements/{p-da0cacef.entry.js → p-6b7c53a8.entry.js} +2 -2
  481. package/dist/q2-tecton-elements/{p-6c933b14.entry.js → p-6e6d9793.entry.js} +2 -2
  482. package/dist/q2-tecton-elements/{p-be518818.js → p-721365be.js} +1 -1
  483. package/dist/q2-tecton-elements/{p-a8e7e591.entry.js → p-77272c4c.entry.js} +2 -2
  484. package/dist/q2-tecton-elements/{p-793a453e.entry.js → p-77a0cc0c.entry.js} +2 -2
  485. package/dist/q2-tecton-elements/{p-9c589ab3.entry.js → p-8111547c.entry.js} +2 -2
  486. package/dist/q2-tecton-elements/{p-05b30f98.entry.js → p-8a4b106d.entry.js} +2 -2
  487. package/dist/q2-tecton-elements/p-8a4b106d.entry.js.map +1 -0
  488. package/dist/q2-tecton-elements/p-9a1a4bc0.js +3 -0
  489. package/dist/q2-tecton-elements/p-9a1a4bc0.js.map +1 -0
  490. package/dist/q2-tecton-elements/p-a7a0b8aa.entry.js +2 -0
  491. package/dist/q2-tecton-elements/p-a7a0b8aa.entry.js.map +1 -0
  492. package/dist/q2-tecton-elements/p-aa57b657.entry.js +2 -0
  493. package/dist/q2-tecton-elements/p-aa57b657.entry.js.map +1 -0
  494. package/dist/q2-tecton-elements/p-ad998f71.entry.js +2 -0
  495. package/dist/q2-tecton-elements/p-ad998f71.entry.js.map +1 -0
  496. package/dist/q2-tecton-elements/{p-e3ad770b.entry.js → p-adec9275.entry.js} +2 -2
  497. package/dist/q2-tecton-elements/p-adf0a7c9.entry.js +2 -0
  498. package/dist/q2-tecton-elements/p-adf0a7c9.entry.js.map +1 -0
  499. package/dist/q2-tecton-elements/p-b72fd065.entry.js +2 -0
  500. package/dist/q2-tecton-elements/p-b72fd065.entry.js.map +1 -0
  501. package/dist/q2-tecton-elements/{p-780a1d0e.js → p-b7554a79.js} +2 -2
  502. package/dist/q2-tecton-elements/{p-40df4468.entry.js → p-c0c658d1.entry.js} +2 -2
  503. package/dist/q2-tecton-elements/{p-baa2eaa9.entry.js → p-c81d299a.entry.js} +2 -2
  504. package/dist/q2-tecton-elements/p-c81d299a.entry.js.map +1 -0
  505. package/dist/q2-tecton-elements/{p-08176bd0.entry.js → p-cb3f48de.entry.js} +2 -2
  506. package/dist/q2-tecton-elements/{p-2810ba28.entry.js → p-ce4e6b41.entry.js} +2 -2
  507. package/dist/q2-tecton-elements/{p-76b98623.entry.js → p-cf32b5db.entry.js} +2 -2
  508. package/dist/q2-tecton-elements/p-cf966a0f.entry.js +2 -0
  509. package/dist/q2-tecton-elements/p-cf966a0f.entry.js.map +1 -0
  510. package/dist/q2-tecton-elements/{p-c5aac064.entry.js → p-d2e1631a.entry.js} +2 -2
  511. package/dist/q2-tecton-elements/{p-c5aac064.entry.js.map → p-d2e1631a.entry.js.map} +1 -1
  512. package/dist/q2-tecton-elements/{p-2e6669a7.entry.js → p-dc77bf66.entry.js} +2 -2
  513. package/dist/q2-tecton-elements/{p-e4b8f4b3.entry.js → p-fffb54e9.entry.js} +2 -2
  514. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
  515. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js.map +1 -1
  516. package/dist/types/components/q2-action-sheet/q2-action-sheet.d.ts +60 -0
  517. package/dist/types/components/q2-btn/q2-btn.d.ts +1 -2
  518. package/dist/types/components/q2-calendar/q2-calendar.d.ts +323 -0
  519. package/dist/types/components/q2-carousel/q2-carousel.d.ts +36 -25
  520. package/dist/types/components/q2-carousel-pane/q2-carousel-pane.d.ts +3 -3
  521. package/dist/types/components/q2-chart-area/q2-chart-area.d.ts +6 -6
  522. package/dist/types/components/q2-chart-bar/q2-chart-bar.d.ts +14 -14
  523. package/dist/types/components/q2-data-table/q2-data-table.d.ts +259 -0
  524. package/dist/types/components/q2-dropdown/q2-dropdown.d.ts +129 -0
  525. package/dist/types/components/q2-dropdown-item/q2-dropdown-item.d.ts +50 -0
  526. package/dist/types/components/q2-editable-field/q2-editable-field.d.ts +140 -0
  527. package/dist/types/components/q2-loading/skeleton/shapes.d.ts +1 -0
  528. package/dist/types/components/q2-optgroup/q2-optgroup.d.ts +1 -1
  529. package/dist/types/components/q2-option-list/q2-option-list.d.ts +99 -0
  530. package/dist/types/components/q2-pagination/q2-pagination.d.ts +60 -0
  531. package/dist/types/components/q2-pill/q2-pill.d.ts +128 -0
  532. package/dist/types/components/q2-select/q2-select.d.ts +232 -0
  533. package/dist/types/components/q2-stepper/q2-stepper.d.ts +52 -0
  534. package/dist/types/components/q2-stepper-vertical/q2-stepper-vertical.d.ts +62 -0
  535. package/dist/types/components/q2-tab-container/q2-tab-container.d.ts +5 -5
  536. package/dist/types/components/q2-tag/q2-tag.d.ts +63 -0
  537. package/dist/types/components.d.ts +77 -33
  538. package/dist/types/utils/action-sheet.d.ts +12 -0
  539. package/dist/types/{workspace/workspace/tecton-production_release_1.49.x/packages/q2-tecton-elements/.stencil/test → utils}/helpers.d.ts +1 -1
  540. package/dist/types/utils/index.d.ts +1 -0
  541. package/package.json +8 -6
  542. package/dist/cjs/index-a93362ed.js +0 -225
  543. package/dist/cjs/index-a93362ed.js.map +0 -1
  544. package/dist/cjs/q2-badge.cjs.entry.js +0 -52
  545. package/dist/cjs/q2-badge.cjs.entry.js.map +0 -1
  546. package/dist/cjs/q2-btn_2.cjs.entry.js +0 -237
  547. package/dist/cjs/q2-btn_2.cjs.entry.js.map +0 -1
  548. package/dist/cjs/q2-icon.cjs.entry.js +0 -731
  549. package/dist/cjs/q2-icon.cjs.entry.js.map +0 -1
  550. package/dist/cjs/q2-input.cjs.entry.js.map +0 -1
  551. package/dist/cjs/q2-tab-container.cjs.entry.js +0 -263
  552. package/dist/cjs/q2-tab-container.cjs.entry.js.map +0 -1
  553. package/dist/cjs/q2-tab-pane.cjs.entry.js +0 -46
  554. package/dist/cjs/q2-tab-pane.cjs.entry.js.map +0 -1
  555. package/dist/cjs/slot-component.cjs.entry.js +0 -19
  556. package/dist/cjs/slot-component.cjs.entry.js.map +0 -1
  557. package/dist/components/slot-component.d.ts +0 -11
  558. package/dist/components/slot-component.js +0 -34
  559. package/dist/components/slot-component.js.map +0 -1
  560. package/dist/esm/index-3c5cd75e.js +0 -202
  561. package/dist/esm/index-3c5cd75e.js.map +0 -1
  562. package/dist/esm/q2-badge.entry.js +0 -48
  563. package/dist/esm/q2-badge.entry.js.map +0 -1
  564. package/dist/esm/q2-btn_2.entry.js +0 -232
  565. package/dist/esm/q2-btn_2.entry.js.map +0 -1
  566. package/dist/esm/q2-icon.entry.js +0 -727
  567. package/dist/esm/q2-icon.entry.js.map +0 -1
  568. package/dist/esm/q2-input.entry.js.map +0 -1
  569. package/dist/esm/q2-tab-container.entry.js +0 -259
  570. package/dist/esm/q2-tab-container.entry.js.map +0 -1
  571. package/dist/esm/q2-tab-pane.entry.js +0 -42
  572. package/dist/esm/q2-tab-pane.entry.js.map +0 -1
  573. package/dist/esm/slot-component.entry.js +0 -15
  574. package/dist/esm/slot-component.entry.js.map +0 -1
  575. package/dist/q2-tecton-elements/p-05b30f98.entry.js.map +0 -1
  576. package/dist/q2-tecton-elements/p-089a7a1e.entry.js +0 -2
  577. package/dist/q2-tecton-elements/p-089a7a1e.entry.js.map +0 -1
  578. package/dist/q2-tecton-elements/p-1e7fa870.entry.js.map +0 -1
  579. package/dist/q2-tecton-elements/p-25bfe0b2.entry.js +0 -2
  580. package/dist/q2-tecton-elements/p-25bfe0b2.entry.js.map +0 -1
  581. package/dist/q2-tecton-elements/p-2bcb7e89.entry.js.map +0 -1
  582. package/dist/q2-tecton-elements/p-333a41ca.entry.js +0 -2
  583. package/dist/q2-tecton-elements/p-333a41ca.entry.js.map +0 -1
  584. package/dist/q2-tecton-elements/p-4da4cb5d.entry.js +0 -2
  585. package/dist/q2-tecton-elements/p-4da4cb5d.entry.js.map +0 -1
  586. package/dist/q2-tecton-elements/p-5037fa67.entry.js +0 -2
  587. package/dist/q2-tecton-elements/p-550881db.entry.js +0 -2
  588. package/dist/q2-tecton-elements/p-550881db.entry.js.map +0 -1
  589. package/dist/q2-tecton-elements/p-5775b02b.entry.js +0 -2
  590. package/dist/q2-tecton-elements/p-5775b02b.entry.js.map +0 -1
  591. package/dist/q2-tecton-elements/p-77a763eb.entry.js +0 -2
  592. package/dist/q2-tecton-elements/p-84190698.js +0 -2
  593. package/dist/q2-tecton-elements/p-84190698.js.map +0 -1
  594. package/dist/q2-tecton-elements/p-9e90a38a.entry.js +0 -2
  595. package/dist/q2-tecton-elements/p-9e90a38a.entry.js.map +0 -1
  596. package/dist/q2-tecton-elements/p-9ecabc7a.entry.js +0 -2
  597. package/dist/q2-tecton-elements/p-9ecabc7a.entry.js.map +0 -1
  598. package/dist/q2-tecton-elements/p-a657277b.entry.js +0 -2
  599. package/dist/q2-tecton-elements/p-a657277b.entry.js.map +0 -1
  600. package/dist/q2-tecton-elements/p-b3322f94.entry.js +0 -2
  601. package/dist/q2-tecton-elements/p-b3322f94.entry.js.map +0 -1
  602. package/dist/q2-tecton-elements/p-baa2eaa9.entry.js.map +0 -1
  603. package/dist/q2-tecton-elements/p-c8b4f5f7.entry.js +0 -2
  604. package/dist/q2-tecton-elements/p-c8b4f5f7.entry.js.map +0 -1
  605. package/dist/q2-tecton-elements/p-d2d3d95b.entry.js +0 -2
  606. package/dist/q2-tecton-elements/p-d2d3d95b.entry.js.map +0 -1
  607. package/dist/q2-tecton-elements/p-d78669df.entry.js +0 -2
  608. package/dist/q2-tecton-elements/p-d78669df.entry.js.map +0 -1
  609. package/dist/q2-tecton-elements/p-d8d9ba1f.entry.js.map +0 -1
  610. package/dist/q2-tecton-elements/p-dbfab45b.entry.js +0 -2
  611. package/dist/q2-tecton-elements/p-dbfab45b.entry.js.map +0 -1
  612. package/dist/q2-tecton-elements/p-e44560d9.entry.js +0 -2
  613. package/dist/q2-tecton-elements/p-e44560d9.entry.js.map +0 -1
  614. package/dist/q2-tecton-elements/p-ea7876eb.entry.js +0 -2
  615. package/dist/q2-tecton-elements/p-ea7876eb.entry.js.map +0 -1
  616. package/dist/test/elements/click-elsewhere-test.e2e.js.map +0 -1
  617. package/dist/test/elements/q2-action-sheet-test.e2e.js.map +0 -1
  618. package/dist/test/elements/q2-avatar-test.e2e.js.map +0 -1
  619. package/dist/test/elements/q2-badge-test.e2e.js.map +0 -1
  620. package/dist/test/elements/q2-btn-test.e2e.js.map +0 -1
  621. package/dist/test/elements/q2-calendar/helpers-test.e2e.js.map +0 -1
  622. package/dist/test/elements/q2-calendar/validation-test.e2e.js.map +0 -1
  623. package/dist/test/elements/q2-calendar-month-picker-test.e2e.js.map +0 -1
  624. package/dist/test/elements/q2-calendar-test.e2e.js.map +0 -1
  625. package/dist/test/elements/q2-card-test.e2e.js.map +0 -1
  626. package/dist/test/elements/q2-carousel-pane-test.e2e.js.map +0 -1
  627. package/dist/test/elements/q2-carousel-pane-test.spec.js.map +0 -1
  628. package/dist/test/elements/q2-carousel-test.e2e.js.map +0 -1
  629. package/dist/test/elements/q2-chart-area-test.e2e.js.map +0 -1
  630. package/dist/test/elements/q2-chart-bar-test.e2e.js.map +0 -1
  631. package/dist/test/elements/q2-chart-donut-test.e2e.js.map +0 -1
  632. package/dist/test/elements/q2-checkbox-group-test.e2e.js.map +0 -1
  633. package/dist/test/elements/q2-checkbox-test.e2e.js.map +0 -1
  634. package/dist/test/elements/q2-currency-test.e2e.js.map +0 -1
  635. package/dist/test/elements/q2-data-table-test.e2e.js.map +0 -1
  636. package/dist/test/elements/q2-detail/q2-detail-test.e2e.js.map +0 -1
  637. package/dist/test/elements/q2-detail/q2-list-test.e2e.js.map +0 -1
  638. package/dist/test/elements/q2-detail/slot-component.js +0 -32
  639. package/dist/test/elements/q2-detail/slot-component.js.map +0 -1
  640. package/dist/test/elements/q2-dropdown-item-test.e2e.js.map +0 -1
  641. package/dist/test/elements/q2-dropdown-test.e2e.js.map +0 -1
  642. package/dist/test/elements/q2-editable-field-test.e2e.js.map +0 -1
  643. package/dist/test/elements/q2-icon-test.e2e.js.map +0 -1
  644. package/dist/test/elements/q2-input-credit-card-test.e2e.js.map +0 -1
  645. package/dist/test/elements/q2-input-test.e2e.js.map +0 -1
  646. package/dist/test/elements/q2-item-test.e2e.js.map +0 -1
  647. package/dist/test/elements/q2-item-test.spec.js.map +0 -1
  648. package/dist/test/elements/q2-legend-test.e2e.js.map +0 -1
  649. package/dist/test/elements/q2-legend-test.spec.js.map +0 -1
  650. package/dist/test/elements/q2-loading-element-test.e2e.js.map +0 -1
  651. package/dist/test/elements/q2-loading-test.e2e.js.map +0 -1
  652. package/dist/test/elements/q2-loc-test.e2e.js.map +0 -1
  653. package/dist/test/elements/q2-message-test.e2e.js.map +0 -1
  654. package/dist/test/elements/q2-optgroup-test.e2e.js.map +0 -1
  655. package/dist/test/elements/q2-option-list-test.e2e.js.map +0 -1
  656. package/dist/test/elements/q2-option-test.e2e.js.map +0 -1
  657. package/dist/test/elements/q2-pagination-test.e2e.js.map +0 -1
  658. package/dist/test/elements/q2-pill-test.e2e.js.map +0 -1
  659. package/dist/test/elements/q2-popover-test.e2e.js.map +0 -1
  660. package/dist/test/elements/q2-popover-test.spec.js.map +0 -1
  661. package/dist/test/elements/q2-radio-group-test.e2e.js.map +0 -1
  662. package/dist/test/elements/q2-radio-test.e2e.js.map +0 -1
  663. package/dist/test/elements/q2-relative-time-test.e2e.js.map +0 -1
  664. package/dist/test/elements/q2-section-test.e2e.js.map +0 -1
  665. package/dist/test/elements/q2-select-test.e2e.js.map +0 -1
  666. package/dist/test/elements/q2-stepper-pane-test.e2e.js.map +0 -1
  667. package/dist/test/elements/q2-stepper-test.e2e.js.map +0 -1
  668. package/dist/test/elements/q2-stepper-vertical-test.e2e.js.map +0 -1
  669. package/dist/test/elements/q2-tab-container-test.e2e.js.map +0 -1
  670. package/dist/test/elements/q2-tab-pane-test.e2e.js.map +0 -1
  671. package/dist/test/elements/q2-tag-test.e2e.js.map +0 -1
  672. package/dist/test/elements/q2-textarea-test.e2e.js.map +0 -1
  673. package/dist/test/elements/q2-tooltip-test.e2e.js.map +0 -1
  674. package/dist/test/elements/tecton-tab-pane-test.e2e.js.map +0 -1
  675. package/dist/test/helpers.js.map +0 -1
  676. package/dist/test/utils/action-sheet-test.e2e.js.map +0 -1
  677. package/dist/test/utils/index.spec.js.map +0 -1
  678. package/dist/types/workspace/workspace/tecton-production_release_1.49.x/packages/q2-tecton-elements/.stencil/test/elements/q2-detail/slot-component.d.ts +0 -4
  679. /package/dist/q2-tecton-elements/{p-da711c59.entry.js.map → p-072c5877.entry.js.map} +0 -0
  680. /package/dist/q2-tecton-elements/{p-f6358905.entry.js.map → p-074ae80c.entry.js.map} +0 -0
  681. /package/dist/q2-tecton-elements/{p-7b9a6bb7.entry.js.map → p-2c26295e.entry.js.map} +0 -0
  682. /package/dist/q2-tecton-elements/{p-bbf9d36d.entry.js.map → p-2ca6d44f.entry.js.map} +0 -0
  683. /package/dist/q2-tecton-elements/{p-0852e6fe.entry.js.map → p-34696e3f.entry.js.map} +0 -0
  684. /package/dist/q2-tecton-elements/{p-630613c7.entry.js.map → p-395904b4.entry.js.map} +0 -0
  685. /package/dist/q2-tecton-elements/{p-db79c056.entry.js.map → p-4116579f.entry.js.map} +0 -0
  686. /package/dist/q2-tecton-elements/{p-e0a6baea.entry.js.map → p-45407ecc.entry.js.map} +0 -0
  687. /package/dist/q2-tecton-elements/{p-ec8a0b64.entry.js.map → p-58cafc0d.entry.js.map} +0 -0
  688. /package/dist/q2-tecton-elements/{p-4388e521.entry.js.map → p-5d936af5.entry.js.map} +0 -0
  689. /package/dist/q2-tecton-elements/{p-a177d812.entry.js.map → p-661ed976.entry.js.map} +0 -0
  690. /package/dist/q2-tecton-elements/{p-da0cacef.entry.js.map → p-6b7c53a8.entry.js.map} +0 -0
  691. /package/dist/q2-tecton-elements/{p-6c933b14.entry.js.map → p-6e6d9793.entry.js.map} +0 -0
  692. /package/dist/q2-tecton-elements/{p-be518818.js.map → p-721365be.js.map} +0 -0
  693. /package/dist/q2-tecton-elements/{p-a8e7e591.entry.js.map → p-77272c4c.entry.js.map} +0 -0
  694. /package/dist/q2-tecton-elements/{p-793a453e.entry.js.map → p-77a0cc0c.entry.js.map} +0 -0
  695. /package/dist/q2-tecton-elements/{p-9c589ab3.entry.js.map → p-8111547c.entry.js.map} +0 -0
  696. /package/dist/q2-tecton-elements/{p-e3ad770b.entry.js.map → p-adec9275.entry.js.map} +0 -0
  697. /package/dist/q2-tecton-elements/{p-780a1d0e.js.map → p-b7554a79.js.map} +0 -0
  698. /package/dist/q2-tecton-elements/{p-40df4468.entry.js.map → p-c0c658d1.entry.js.map} +0 -0
  699. /package/dist/q2-tecton-elements/{p-08176bd0.entry.js.map → p-cb3f48de.entry.js.map} +0 -0
  700. /package/dist/q2-tecton-elements/{p-2810ba28.entry.js.map → p-ce4e6b41.entry.js.map} +0 -0
  701. /package/dist/q2-tecton-elements/{p-76b98623.entry.js.map → p-cf32b5db.entry.js.map} +0 -0
  702. /package/dist/q2-tecton-elements/{p-2e6669a7.entry.js.map → p-dc77bf66.entry.js.map} +0 -0
  703. /package/dist/q2-tecton-elements/{p-e4b8f4b3.entry.js.map → p-fffb54e9.entry.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"names":["formatDateISO","value","date","Date","isValidDate","formatISO","representation","memoizedFormatDateShort","formatDateShort","isoDate","toISOString","Intl","DateTimeFormat","month","day","year","timeZone","resolvedOptions","format","memoizedFormatDateLong","formatDateLong","memoizedFormatDateFull","formatDateFull","weekday","convertMomentFormat","stringFormat","replace","stringToDate","isString","undefined","result","dateParts","split","map","part","padStart","isIsoString","length","isCompleteDate","isPartialDate","isStandardSlashDate","includes","unshift","pop","UTC","parseInt","now","yearNumber","monthNumber","dayNumber","getFullYear","removeTimezoneOffset","timeZoneOffset","getTimezoneOffset","setMinutes","Math","abs","stringArrayToDate","dateArray","Array","isArray","setupMonthYear","monthIndex","getMonth","selectedYear","validateInput","input","validDays","validDates","invalidDates","startDate","endDate","formatString","assume","isValid","isAvailable","messageType","message","loc","inputDate","buildInputDate","getDate","calendarPosition","monthName","getMonths","getDay","isoString","isNotValidDate","isInvalidDate","isBeforeStartDate","isAfterEndDate","isInvalid","Number","twoDigitDay","fourDigitYear","assumeYear","monthDay","mm","dd","nowLocal","assumedYear","slice","toString","handleMissingZeros","match","sp","reorderDateString","firstDayOfWeekInMonth","getDays","getDaysOfWeek","generateDatesFromMonthYear","daysInMonth","getDaysInMonth","keys","reduce","acc","stepIndex","push","getValidDaysOfWeek","checksum","sunValid","monValid","tuesValid","wedsValid","thursValid","friValid","satValid","ret","validateAgainstChecksum","validDaysOfWeek","newDate","validateAgainstBlacklist","validateAgainstWhitelist","some","validDate","isSameDay","buildDates","selectedMonthYear","currentSelection","dateValidators","typedValue","validationFns","baseValidation","bind","generateDateList","isIncompleteDate","datesInMonth","dayInMonth","dateIndex","fn","dayState","getDayState","classList","generateClassesForCalDay","Object","assign","integer","isEmpty","isActivity","startOfMonthEmpties","addEmptiesMonthStart","endOfMonthEmpties","addEmptiesMonthEnd","isNewDateBeforeStartDate","isAfter","isNewDateAfterEndDate","isBefore","isNowAfterCutoffTime","cutOffTime","currentDate","isSelected","isToday","isStartDate","isEndDate","classes","join","monthStartDayOfWeek","addEmptyDates","monthEndDayOfWeek","emptyDate","from","to","q2CalendarCss","Q2CalendarStyle0","Q2Calendar","this","dayAbbrStrings","dayStrings","defaultFormatString","formatModifier","internalError","monthStrings","scheduledAfterRender","closeCalendar","open","focusInput","goToMonthYear","dateList","buildDateList","checkActiveCellForBlankness","onClickElsewhere","event","target","localName","stopPropagation","onDateKeydown","currentDay","dataset","generateDateFromDay","key","preventDefault","activateDay","addDays","shiftKey","find","selectDate","onDateSelection","dateCell","closest","clickedDate","onHeaderControlKeydown","hasSelectedCell","_a","calendarBody","querySelector","onInputBlur","isTypeable","daysOfWeekChecksum","setHints","defaultHintMessage","setCompleteInput","valueOnBlur","change","emit","onInputChange","onInputClick","disabled","toggleCalendar","onInputFocus","controlElement","tmpTypedValue","onInputInput","detail","onInputKeydown","dateValue","openCalendar","typeable","onInputKeyup","yyyy","validateDate","keyboardSelection","onPopupKeyup","onRefocus","btnPrevMonth","dispatchEvent","FocusEvent","readonly","invalid","success","connectedCallback","componentWillLoad","popDirectionHandler","handleAriaLabel","componentDidLoad","overrideFocus","hostElement","componentDidRender","setTimeout","forEach","defaultChangeHandler","onchange","handleClear","defaultErrorHandler","onerror","hintMessageType","hintMessage","delegateFocus","isEventFromElement","shadowRoot","focus","popoverStateHandler","defaultSuccessHandler","onsuccess","closePopover","_togglePopover","openPopover","setValue","waitForNextPaint","tableCell","calendarTable","click","typeValue","formattedDate","innerInputField","InputEvent","KeyboardEvent","ariaLabelObserver","cutoffTimeObserver","daysOfWeekChecksumObserver","endDateObserver","invalidDatesObserver","handleRenamedProp","startDateObserver","typeableChanged","valueObserver","validDatesObserver","newValue","isMoment","toDate","shortFormattedValue","canClear","clearable","computedPlaceholder","disabledMsg","buttonLabel","placeholder","currentWeeks","weeks","accum","item","index","chunkIndex","floor","ct","cutoffTime","isMomentString","test","errorList","errors","list","filter","error","concat","formattedValue","displayFormat","hintList","hints","hint","innerInputContainer","_b","selectedDate","selectedCell","toggleElement","btnCalendarToggle","focusDay","monthYear","calendarDays","h","role","ref","scope","onClick","onKeyDown","elm","week","ariaLabel","class","tabindex","calendarPopover","onKeyUp","calendarLabel","label","type","btnNextMonth","btnPrevYear","btnNextYear","id","disclaimer","onFocus","activeElement","tagName","hasAttribute","calendarCells","querySelectorAll","indexOfCell","indexOf","dayToFocus","cell","hintField","el","hintMessageElement","inputField","hideLabel","optional","ariaExpanded","onChange","onInput","onBlur","_role","_preventEntry","slot","present","errorCode","isSelectedMonthAndYear","calculationDateList","dateValueDayOfMonth","_c","isDateValueInvalid","console","warn","render","popoverElement","direction","popoverDirection","minHeight","popoverMinHeight","align","popoverAlignment","mode","popoverMode","block"],"sources":["src/components/q2-calendar/q2-calendar-helpers.ts","src/components/q2-calendar/q2-calendar-validation.ts","src/components/q2-calendar/q2-calendar.scss?tag=q2-calendar&encapsulation=shadow","src/components/q2-calendar/q2-calendar.tsx"],"sourcesContent":["import { isValid as isValidDate, formatISO, setMinutes } from 'date-fns';\nimport { loc } from '../../utils';\nimport { ISelectedMonthYear, InputValidation } from './q2-calendar-types';\n\nexport interface IMomentLikeObject {\n toDate(): Date;\n}\n\nexport function formatDateISO(value: string | Date) {\n const date = new Date(value);\n if (!isValidDate(date)) return;\n\n return formatISO(date, { representation: 'date' });\n}\n\nlet memoizedFormatDateShort: Intl.DateTimeFormat;\nexport function formatDateShort(value: string | Date) {\n const date = new Date(value);\n if (!isValidDate(date)) return;\n\n const isoDate = date.toISOString();\n if (!memoizedFormatDateShort) {\n memoizedFormatDateShort = new Intl.DateTimeFormat('en-US', {\n month: '2-digit',\n day: '2-digit',\n year: 'numeric',\n timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n });\n }\n\n return memoizedFormatDateShort.format(new Date(isoDate));\n}\n\nlet memoizedFormatDateLong: Intl.DateTimeFormat;\nexport function formatDateLong(value: string | Date) {\n const date = new Date(value);\n if (!isValidDate(date)) return;\n if (!memoizedFormatDateLong) {\n memoizedFormatDateLong = new Intl.DateTimeFormat('en-US', {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n });\n }\n\n return memoizedFormatDateLong.format(date);\n}\n\nlet memoizedFormatDateFull: Intl.DateTimeFormat;\nexport function formatDateFull(value: string | Date) {\n if (!value) return;\n const date = new Date(value);\n if (!isValidDate(date)) return;\n if (!memoizedFormatDateFull) {\n memoizedFormatDateFull = new Intl.DateTimeFormat('en-US', {\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n weekday: 'long',\n timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n });\n }\n\n return memoizedFormatDateFull.format(date);\n}\n\nexport function convertMomentFormat(stringFormat: string) {\n return stringFormat\n .replace(/[d]/g, 'E')\n .replace(/[D]/g, 'd')\n .replace(/[Y]/g, 'y')\n .replace(/[l]/g, 'P')\n .replace(/[W]/g, 'I');\n}\n\nexport function stringToDate(date: string | null | void): Date | undefined {\n const isString = typeof date === 'string';\n if (!isString && date && isValidDate(new Date(date || undefined))) {\n date = formatDateISO(date);\n } else if (!date || !isValidDate(new Date(date))) {\n return undefined;\n }\n\n let result: Date;\n const dateParts = date.split(/[\\/\\-]/).map(part => part.padStart(2, '0'));\n const isIsoString = isString && date.length >= 24 && date[10] === 'T';\n const isCompleteDate = dateParts.length === 3;\n const isPartialDate = dateParts.length < 3;\n if (isIsoString) {\n date = date.split('T')[0];\n result = new Date(date);\n } else if (isCompleteDate) {\n const isStandardSlashDate = date.includes('/') && dateParts[2].length === 4;\n\n // Reorder mm/dd/yyyy dates for ISO formatting\n // [mm, dd, yyyy] -> [yyyy, mm, dd]\n if (isStandardSlashDate) dateParts.unshift(dateParts.pop());\n\n result = new Date(Date.UTC(parseInt(dateParts[0]), parseInt(dateParts[1]) - 1, parseInt(dateParts[2])));\n } else if (isPartialDate) {\n const now = new Date();\n\n let yearNumber: number;\n let monthNumber: string;\n let dayNumber: string;\n switch (dateParts.length) {\n case 1:\n yearNumber = now.getFullYear();\n monthNumber = dateParts[0];\n dayNumber = '01';\n break;\n\n case 2:\n yearNumber = now.getFullYear();\n monthNumber = dateParts[0];\n dayNumber = dateParts[1];\n break;\n }\n\n result = new Date(`${yearNumber}-${monthNumber}-${dayNumber}`);\n }\n\n if (!isValidDate(result)) return undefined;\n\n // result = setHours(result, 0);\n result = removeTimezoneOffset(result);\n\n return isValidDate(result) ? result : undefined;\n}\n\nexport function removeTimezoneOffset(date: Date) {\n const timeZoneOffset = date.getTimezoneOffset();\n // Minutes compensation for some timezones like India, Central Australia and etc use GMT+5:30, GMT+9:30\n return setMinutes(date, timeZoneOffset + Math.abs(timeZoneOffset % 60));\n}\n\nexport function stringArrayToDate(dateArray: string[]): Date[] {\n if (!Array.isArray(dateArray) || dateArray.length === 0) {\n return [];\n }\n return dateArray.map(date => stringToDate(date));\n}\n\nexport function setupMonthYear(value: Date | undefined = new Date()): ISelectedMonthYear {\n return {\n monthIndex: value.getMonth(),\n selectedYear: value.getFullYear(),\n };\n}\n\nexport function validateInput(\n input: string = '',\n validDays: number[] = [],\n validDates: string[] = [], // white list\n invalidDates: string[] = [], // black list\n startDate: string,\n endDate: string,\n formatString: string = 'mm/dd/yyyy',\n assume: string\n): InputValidation {\n let isValid: boolean = true;\n let isAvailable: boolean = false;\n let messageType: string = 'info';\n let message: string = `${loc('tecton.element.calendar.hint.format')}: ${formatString}`;\n if (!input) {\n return { isValid, inputDate: new Date(''), isAvailable, messageType, message };\n }\n\n const inputDate = buildInputDate(input, assume);\n const month = inputDate.getMonth() + 1;\n const date = inputDate.getDate();\n const year = inputDate.getFullYear();\n const calendarPosition = [month, date, year];\n\n if (isValidDate(inputDate)) {\n const monthName = getMonths()[inputDate.getMonth()];\n\n if (input.length === 10) {\n isValid = true;\n messageType = null;\n message = null;\n }\n\n isAvailable = validDays.includes(inputDate.getDay());\n const isoString = formatDateISO(inputDate);\n\n if (isAvailable) {\n const isNotValidDate = validDates.length && !validDates.includes(isoString);\n const isInvalidDate = invalidDates.length && invalidDates.includes(isoString);\n const isBeforeStartDate = startDate && startDate > isoString;\n const isAfterEndDate = endDate && endDate < isoString;\n\n if (isNotValidDate || isInvalidDate || isBeforeStartDate || isAfterEndDate) {\n isAvailable = false;\n }\n }\n\n if (input.length >= 5 && !isAvailable) {\n isValid = false;\n messageType = 'error';\n const isInvalid = !monthName || !date || !year;\n message = isInvalid\n ? `${loc('tecton.element.calendar.hint.invalidDate')}: ${formatString}`\n : loc('tecton.element.calendar.hint.notAvailableDate', [formatDateLong(inputDate)]);\n }\n } else {\n isValid = false;\n messageType = 'error';\n message = `${loc('tecton.element.calendar.hint.invalidDate')}: ${formatString}`;\n }\n\n return {\n isValid,\n messageType,\n message,\n inputDate,\n isAvailable,\n calendarPosition,\n };\n}\n\nexport function buildInputDate(input: string, assume: string) {\n const now = new Date();\n // eslint-disable-next-line prefer-const\n let [month, day, year] = input.split('/');\n if (month === '0') month = '01';\n if (day === '0') day = '01';\n if (input.length === 10) {\n return new Date(input);\n } else if (month && day && Number(day) > 0) {\n const twoDigitDay = Number(day) < 10 ? `0${Number(day)}` : day;\n const fourDigitYear = !year || year.length < 4 ? assumeYear(month, day, assume) : year;\n return new Date(`${month}/${twoDigitDay}/${fourDigitYear}`);\n } else if (month) {\n return new Date(`${month}/01/${now.getFullYear()}`);\n }\n}\n\nfunction assumeYear(month: string, day: string, assume: string): string {\n const monthDay = `${month}/${day}`;\n const now = new Date();\n const mm: string = now.getMonth() < 9 ? `0${now.getMonth() + 1}` : `${now.getMonth() + 1}`;\n const dd: string = now.getDate() < 10 ? `0${now.getDate()}` : `${now.getDate()}`;\n const nowLocal = `${mm}/${dd}/${now.getFullYear()}`;\n let assumedYear = now.getFullYear();\n if (assume === 'future' && nowLocal.slice(0, 5) > monthDay) {\n assumedYear = now.getFullYear() + 1;\n } else if (assume === 'past' && nowLocal.slice(0, 5) < monthDay) {\n assumedYear = now.getFullYear() - 1;\n }\n return assumedYear.toString();\n}\n\nexport function handleMissingZeros(input): string {\n if (!input) {\n return '';\n }\n if (input.match(/^[1-9]\\/$/)) {\n return `0${input}/`;\n } else if (input.match(/^[0-9]{2}\\/[1-9]{1}\\/$/)) {\n const sp = input.split('/');\n return `${sp[0]}/0${sp[1]}/`;\n }\n return input;\n}\n\nexport function reorderDateString(input: string): string {\n const dateParts = (input || '').split('-');\n if (dateParts.length !== 3) return '';\n return `${dateParts[1]}/${dateParts[2]}/${dateParts[0]}`;\n}\n\nexport function firstDayOfWeekInMonth(month: number, year: number): number {\n return new Date(year, month, 1, 1, 1, 1, 1).getDay();\n}\n\nexport function getDays(): string[] {\n return [\n loc('tecton.element.calendar.days.short.Sunday'),\n loc('tecton.element.calendar.days.short.Monday'),\n loc('tecton.element.calendar.days.short.Tuesday'),\n loc('tecton.element.calendar.days.short.Wednesday'),\n loc('tecton.element.calendar.days.short.Thursday'),\n loc('tecton.element.calendar.days.short.Friday'),\n loc('tecton.element.calendar.days.short.Saturday'),\n ];\n}\n\nexport function getDaysOfWeek(): string[] {\n return [\n loc('tecton.element.calendar.days.Sunday'),\n loc('tecton.element.calendar.days.Monday'),\n loc('tecton.element.calendar.days.Tuesday'),\n loc('tecton.element.calendar.days.Wednesday'),\n loc('tecton.element.calendar.days.Thursday'),\n loc('tecton.element.calendar.days.Friday'),\n loc('tecton.element.calendar.days.Saturday'),\n ];\n}\n\nexport function getMonths(): string[] {\n return [\n loc('tecton.element.calendar.months.January'),\n loc('tecton.element.calendar.months.February'),\n loc('tecton.element.calendar.months.March'),\n loc('tecton.element.calendar.months.April'),\n loc('tecton.element.calendar.months.May'),\n loc('tecton.element.calendar.months.June'),\n loc('tecton.element.calendar.months.July'),\n loc('tecton.element.calendar.months.August'),\n loc('tecton.element.calendar.months.September'),\n loc('tecton.element.calendar.months.October'),\n loc('tecton.element.calendar.months.November'),\n loc('tecton.element.calendar.months.December'),\n ];\n}\n","import { firstDayOfWeekInMonth } from './q2-calendar-helpers';\nimport { getDaysInMonth, isSameDay, isBefore, isAfter, isValid as isValidDate } from 'date-fns';\nimport { CalendarDay, DateEmpty, Year, IDateValidators, ISelectedMonthYear } from './q2-calendar-types';\n\n// Validation Helpers\nexport type DateList = CalendarDay[];\nexport type IsValid = boolean;\nexport type IsActivityDate = boolean;\nexport type DateValidation = (date: Date) => IsValid;\n\nexport function generateDatesFromMonthYear(month: number, year: Year): Date[] {\n const daysInMonth = getDaysInMonth(new Date(year, month));\n\n return [...Array(daysInMonth).keys()].reduce((acc, stepIndex) => {\n acc.push(new Date(year, month, stepIndex + 1));\n return acc;\n }, []);\n}\n\nexport function getValidDaysOfWeek(checksum: number = 127): number[] {\n /* tslint:disable:no-bitwise */\n const sunValid = checksum & 1;\n const monValid = checksum & 2;\n const tuesValid = checksum & 4;\n const wedsValid = checksum & 8;\n const thursValid = checksum & 16;\n const friValid = checksum & 32;\n const satValid = checksum & 64;\n /* tslint:enable:no-bitwise */\n const ret = [];\n\n if (checksum <= 0) return ret;\n if (sunValid) ret.push(0);\n if (monValid) ret.push(1);\n if (tuesValid) ret.push(2);\n if (wedsValid) ret.push(3);\n if (thursValid) ret.push(4);\n if (friValid) ret.push(5);\n if (satValid) ret.push(6);\n\n return ret;\n}\n\nexport function validateAgainstChecksum(validDaysOfWeek: number[], newDate: Date): IsValid {\n return validDaysOfWeek.includes(newDate.getDay());\n}\n\nexport function validateAgainstBlacklist(invalidDates: Date[], newDate: Date): IsValid {\n return !validateAgainstWhitelist(invalidDates, newDate);\n}\n\nexport function validateAgainstWhitelist(validDates: Date[], newDate: Date): IsValid {\n return validDates.some(validDate => isSameDay(validDate, newDate));\n}\n\nexport function buildDates(\n validDaysOfWeek: number[],\n validDates: Date[],\n invalidDates: Date[],\n selectedMonthYear: ISelectedMonthYear,\n currentSelection: Date | undefined,\n dateValidators: IDateValidators,\n typedValue: string\n): DateList {\n const validationFns = [baseValidation.bind(null, dateValidators, new Date())];\n if (validDates?.length) {\n validationFns.push(validateAgainstWhitelist.bind(null, validDates));\n } else {\n validationFns.push(validateAgainstChecksum.bind(null, validDaysOfWeek));\n }\n validationFns.push(validateAgainstBlacklist.bind(null, invalidDates));\n\n return generateDateList(selectedMonthYear, currentSelection, dateValidators, validationFns, typedValue);\n}\n\nexport function generateDateList(\n { monthIndex, selectedYear }: ISelectedMonthYear,\n currentSelection: Date | undefined,\n dateValidators: IDateValidators,\n validationFns: DateValidation[],\n typedValue: string\n): DateList {\n const isIncompleteDate = !isValidDate(new Date(typedValue));\n const datesInMonth = generateDatesFromMonthYear(monthIndex, selectedYear).map((dayInMonth, dateIndex) => {\n const isInvalid = validationFns.some(fn => !fn(dayInMonth));\n const dayState = getDayState(dayInMonth, dateValidators, currentSelection);\n const classList = generateClassesForCalDay({\n ...dayState,\n isInvalid,\n isIncompleteDate,\n });\n\n return {\n ...dayState,\n isValid: !isInvalid,\n date: dayInMonth,\n integer: dateIndex + 1,\n isEmpty: false,\n isActivity: false,\n classList,\n };\n });\n\n const startOfMonthEmpties = addEmptiesMonthStart(firstDayOfWeekInMonth(monthIndex, selectedYear));\n const endOfMonthEmpties = addEmptiesMonthEnd((startOfMonthEmpties.length + datesInMonth.length) % 7);\n\n return [...startOfMonthEmpties, ...datesInMonth, ...endOfMonthEmpties] as CalendarDay[];\n}\n\nexport function baseValidation(dateValidators: IDateValidators, now: Date, newDate: Date): boolean {\n const isNewDateBeforeStartDate = isAfter(dateValidators?.startDate, newDate);\n const isNewDateAfterEndDate = isBefore(dateValidators?.endDate, newDate);\n const isNowAfterCutoffTime = isSameDay(now, newDate) && isAfter(now, dateValidators?.cutOffTime);\n\n return !(isNewDateBeforeStartDate || isNowAfterCutoffTime || isNewDateAfterEndDate);\n}\n\nexport function getDayState(dayInMonth: Date, dateValidators: IDateValidators, currentDate: Date | undefined) {\n if (!currentDate) currentDate = new Date();\n const isSelected = currentDate && isSameDay(currentDate, dayInMonth);\n const isToday = isSameDay(dayInMonth, new Date());\n const isStartDate = isSameDay(dayInMonth, dateValidators?.startDate);\n const isEndDate = isSameDay(dayInMonth, dateValidators?.endDate);\n\n return { isSelected, isToday, isStartDate, isEndDate };\n}\n\nexport function generateClassesForCalDay({\n isInvalid,\n isSelected,\n isEndDate,\n isStartDate,\n isToday,\n isIncompleteDate,\n}: {\n isInvalid: boolean;\n isSelected: boolean;\n isEndDate: boolean;\n isStartDate: boolean;\n isToday: boolean;\n isIncompleteDate: boolean;\n}): string {\n const classes = [];\n if (!isInvalid) classes.push('is-valid');\n if (isSelected) classes.push('is-selected');\n if (isEndDate) classes.push('is-end-date');\n if (isStartDate) classes.push('is-start-date');\n if (isToday) classes.push('is-today');\n if (isSelected && isInvalid && !isIncompleteDate) classes.push('is-unavailable');\n\n return classes.join(' ');\n}\n\nexport function addEmptiesMonthStart(monthStartDayOfWeek: number): DateEmpty[] {\n return addEmptyDates(0, monthStartDayOfWeek);\n}\n\nexport function addEmptiesMonthEnd(monthEndDayOfWeek: number): DateEmpty[] {\n if (monthEndDayOfWeek === 0) return [];\n return addEmptyDates(monthEndDayOfWeek, 7);\n}\n\nexport const emptyDate: DateEmpty = {\n date: null,\n integer: null,\n isActivity: false,\n isEmpty: true,\n isValid: false,\n isToday: false,\n isSelected: false,\n isStartDate: false,\n isEndDate: false,\n classList: '',\n};\n\nexport function addEmptyDates(from: number, to: number): DateEmpty[] {\n if (from === 7) from = 0;\n return [...Array(to - from).keys()].map(() => ({ ...emptyDate }) as DateEmpty);\n}\n","@import '../../styles/host.scss';\n@import '../../styles/functions';\n\n:host {\n display: block;\n}\n\n:host[hidden] {\n display: none;\n}\n\nclick-elsewhere {\n position: relative;\n display: block;\n}\n\nq2-input {\n margin: 0;\n cursor: pointer;\n}\n\nq2-popover {\n --comp-min-tappable-size: 44px;\n --comp-table-border-spacing: 2px;\n --comp-min-tappable-size-and-spacing: calc(var(--comp-min-tappable-size) + var(--comp-table-border-spacing));\n --comp-popover-padding: #{var-list(var-prefixer(calendar-popover-padding), --app-scale-1x, 5px)};\n --comp-min-table-width: calc(var(--comp-min-tappable-size-and-spacing) * 7);\n --comp-table-container-border-spacing: calc(var(--comp-table-border-spacing) * 2);\n --comp-popover-total-padding: calc(var(--comp-popover-padding) * 2);\n\n --tct-popover-min-width: calc(\n var(--comp-min-table-width) + var(--comp-table-container-border-spacing) + var(--comp-popover-total-padding)\n );\n}\n\n.calendar-field-popup {\n padding: var(--comp-popover-padding);\n}\n\n.calendar-label {\n --comp-label-padding: #{var-list(\n --tct-calendar-label-padding,\n unquote('#{var-list(var-prefixer(calendar-label-vertical-padding), --tct-scale-2, --app-scale-2x, 10px)} 0')\n )};\n font-size: var-list(var-prefixer(calendar-label-font-size), 16px);\n flex: 1 1;\n flex-basis: calc(100% - var-list(--tct-btn-icon-width, 44px));\n margin: 0;\n padding: var(--comp-label-padding);\n}\n\n.cal-month-heading {\n padding: 0 0 0.75rem;\n display: flex;\n justify-content: center;\n align-items: center;\n font-size: var-list(var-prefixer(calendar-month-font-size), 16px);\n font-weight: var-list(var-prefixer(calendar-month-font-weight), 600);\n text-align: center;\n}\n\n.cal-month-text {\n min-width: 82px;\n display: inline-block;\n}\n\n.cal-year-text {\n min-width: 50px;\n display: inline-block;\n}\n\ntable {\n width: 100%;\n margin-bottom: 2px;\n text-align: center;\n border-spacing: var(--comp-table-border-spacing);\n}\n\nth {\n font-size: var-list(var-prefixer(calendar-day-heading-font-size), inherit);\n font-weight: var-list(var-prefixer(calendar-day-heading-font-weight), 600);\n width: 14.285714%;\n}\n\ntd {\n height: var(--comp-min-tappable-size);\n cursor: pointer;\n border: var-list(var-prefixer(calendar-day-border), 0);\n border-radius: var-list(var-prefixer(calendar-day-border-radius));\n\n &.is-unavailable {\n border: 1px solid var-list(--tct-input-error-border-color, --const-stoplight-alert, #d20a0a);\n }\n\n &.is-valid:hover {\n border: var-list(var-prefixer(calendar-day-hover-border), var-prefixer(calendar-day-border) 0);\n border-radius: var-list(\n var-prefixer(calendar-day-hover-border-radius),\n var-prefixer(calendar-day-border-radius)\n );\n\n background: var-list(\n --tct-calendar-day-hover-background,\n var-prefixer(calendar-day-hover-bg),\n --tct-gray-14,\n --app-gray14,\n --tct-gray-l4,\n --app-gray-l4,\n #f2f2f2\n );\n color: var-list(var-prefixer(calendar-day-hover-font-color), inherit);\n }\n\n &[aria-hidden],\n &[aria-disabled] {\n pointer-events: none;\n cursor: not-allowed;\n }\n\n &[aria-disabled] {\n opacity: var-list(var-prefixer(calendar-day-disabled-opacity), --app-disabled-opacity, 0.4);\n }\n\n &[aria-selected] {\n border: var-list(var-prefixer(calendar-day-selected-border), var-prefixer(calendar-day-border) 0);\n border-radius: var-list(\n var-prefixer(calendar-day-selected-border-radius),\n var-prefixer(calendar-day-border-radius)\n );\n background: var-list(\n --tct-calendar-day-selected-background,\n var-prefixer(calendar-day-selected-bg),\n --tct-calendar-day-hover-background, \n var-prefixer(calendar-day-hover-bg),\n var-prefixer(gray-14),\n --tct-gray-l4,\n --app-gray-l4,\n #f2f2f2\n );\n color: var-list(\n var-prefixer(calendar-day-selected-font-color),\n var-prefixer(calendar-day-hover-font-color),\n inherit\n );\n box-shadow: 0 0 0 2px\n var-list(\n var-prefixer(calendar-day-selected-outline-color),\n --tct-stoplight-info,\n --const-stoplight-info,\n #0079c1\n );\n \n }\n &[aria-selected]:focus {\n box-shadow: 0 0 0 2px\n var-list(\n var-prefixer(calendar-day-selected-outline-color),\n --tct-stoplight-info,\n --const-stoplight-info,\n #0079c1\n ),\n 0 0 0 4px var(--const-focus-color, #0066cc)\n }\n}\n\n.today-decorator {\n text-transform: uppercase;\n font-weight: 700;\n font-size: 10px;\n height: 12px;\n}\n\n\n.calendar-disclaimer {\n font-size: var-list(\n var-prefixer(calendar-disclaimer-font-size),\n --tct-font-size-small,\n --app-font-size-small,\n 12px\n );\n border-style: solid;\n border-width: var-list(var-prefixer(calendar-disclaimer-border-width), unquote('1px 0 0 0'));\n border-color: var-list(\n var-prefixer(calendar-disclaimer-border-color),\n var-prefixer(gray-13),\n --tct-gray-l3,\n --app-gray-l3,\n #e6e6e6\n );\n padding: var-list(--tct-calendar-disclaimer-padding, --tct-scale-2, --app-scale-2x, 10px);\n text-align: left;\n}\n","import {\n Component,\n ComponentInterface,\n Prop,\n Element,\n State,\n Event,\n EventEmitter,\n Listen,\n Watch,\n Method,\n h,\n} from '@stencil/core';\nimport { ISelectedMonthYear, CalendarDay, IDateValidators } from './q2-calendar-types';\nimport { addDays, isSameDay, format, isValid as isValidDate } from 'date-fns';\nimport {\n stringToDate,\n setupMonthYear,\n getMonths,\n getDays,\n getDaysOfWeek,\n stringArrayToDate,\n convertMomentFormat,\n validateInput,\n handleMissingZeros,\n formatDateISO,\n formatDateShort,\n IMomentLikeObject,\n removeTimezoneOffset,\n reorderDateString,\n formatDateFull,\n} from './q2-calendar-helpers';\nimport { buildDates, getValidDaysOfWeek, DateList } from './q2-calendar-validation';\nimport {\n handleAriaLabel,\n loc,\n overrideFocus,\n isEventFromElement,\n handleRenamedProp,\n waitForNextPaint,\n} from '../../utils';\nimport { IEventDetail } from '../q2-input/q2-input-types';\nimport { Q2InputCustomEvent } from 'src/components';\n\n@Component({ tag: 'q2-calendar', shadow: true, styleUrl: 'q2-calendar.scss' })\nexport class Q2Calendar implements ComponentInterface {\n // #region Own Properties\n\n btnCalendarToggle: HTMLQ2BtnElement;\n btnNextMonth: HTMLQ2BtnElement;\n btnNextYear: HTMLQ2BtnElement;\n btnPrevMonth: HTMLQ2BtnElement;\n btnPrevYear: HTMLQ2BtnElement;\n calendarBody: HTMLDivElement;\n calendarTable: HTMLTableElement;\n controlElement: HTMLQ2InputElement;\n dayAbbrStrings = getDays();\n dayStrings = getDaysOfWeek();\n defaultFormatString = 'mm/dd/yyyy';\n formatModifier: string = 'M/D/YYYY'; // To allow missing leading zero, 4/3/2021 => converts into 04/03/2021\n hintMessageElement: HTMLQ2MessageElement;\n internalError: string = '';\n monthStrings = getMonths();\n popoverElement?: HTMLQ2PopoverElement;\n scheduledAfterRender: (() => void)[] = [];\n selectedMonthYear: ISelectedMonthYear;\n valueOnBlur: string | { toDate(): Date };\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 dateList: CalendarDay[];\n\n @State()\n hintMessage: string = this.defaultHintMessage;\n\n @State()\n hintMessageType: 'info' | 'error' = 'info';\n\n @State()\n keyboardSelection: boolean = false;\n\n @State()\n typedValue: string = '';\n\n // #endregion\n // #region Public Property API\n\n /** @deprecated */\n @Prop({ reflect: true, mutable: true })\n ariaLabel: string;\n\n /**\n * Detects the year automatically based on today's date when the user presses the `Escape` key or the `Blur` mouse event occurs.\n * Setting `future` or `past` as the value will increase or decrease the year by one, respectively.\n */\n @Prop({ reflect: true })\n assume: 'current' | 'future' | 'past' = 'current';\n\n /** @deprecated */\n @Prop({ reflect: true })\n buttonLabel: string;\n\n /** A label shown at the top of the popover date picker. */\n @Prop({ reflect: true })\n calendarLabel: string;\n\n /** Display a button in the input field allowing the user to clear their selection. */\n @Prop({ reflect: true })\n clearable: boolean;\n\n /**\n * Specifies a time of day after which a date is no longer valid.\n *\n * @warning\n * Must be a valid ISO date string.\n */\n @Prop({ reflect: true })\n cutoffTime: string;\n\n /**\n * The most concise way to define valid days of the week for calendar. Each day of the week has a checksum value:\n *\n * - Sunday = 1\n * - Monday = 2\n * - Tuesday = 4\n * - Wednesday = 8\n * - Thursday = 16\n * - Friday = 32\n * - Saturday = 64\n *\n * Add the checksum values of your desired valid days together, and set `daysOfWeekChecksum` to that summed value.\n *\n * **Example:**\n * @snippet\n * element.daysOfWeekChecksum = 127 // All days of the week are valid\n * element.daysOfWeekChecksum = 62; // Only weekdays are valid\n * element.daysOfWeekChecksum = 65; // Only Saturday and Sunday are valid\n *\n */\n @Prop({ reflect: true })\n daysOfWeekChecksum: number;\n\n /** Disable the input field. */\n @Prop({ reflect: true })\n disabled: boolean;\n\n /**\n * Text that displays as the placeholder when the field is marked `disabled`.\n * @localizable\n */\n @Prop({ reflect: true })\n disabledMsg: string;\n\n /** Text that appears at the bottom of the popover date picker. */\n @Prop({ reflect: true })\n disclaimer: string;\n\n /**\n * Determines the display format of the date field value.\n *\n * Must follow the [date-fns](https://date-fns.org/v2.28.0/docs/format) token specification.\n */\n @Prop({ reflect: true })\n displayFormat: string;\n\n /**\n * Defines the last selectable date in the date picker popover.\n *\n * @warning\n * Must be a valid ISO date string.\n */\n @Prop({ reflect: true })\n endDate: string;\n\n /**\n * Each item in the `errors` array will appear below the input field when the field is focused and `typeable` is `true`.\n * @localizable\n */\n @Prop({ mutable: true })\n errors: string[];\n\n /** Hide the input field's ` <label> ` element from view. */\n @Prop({ reflect: true, mutable: true })\n hideLabel: boolean;\n\n /**\n * Each item in the `hints` array will appear below the input field when the field is focused and `typeable` is true.\n * @localizable\n */\n @Prop({ mutable: true })\n hints: string[];\n\n /** Show error styles when the calendar is in an errant state. */\n @Prop({ reflect: true, mutable: true })\n invalid: boolean;\n\n /**\n * Defines an explicit date blacklist.\n *\n * @warning\n * Must be a valid ISO date string.\n *\n * @info\n * When explicit date definitions like `invalidDates` is used, other date validity methods like `daysOfWeekChecksum` are overriden.\n */\n @Prop()\n invalidDates: string[];\n\n /** The visible label for the `q2-calendar` input field. */\n @Prop({ reflect: true, mutable: true })\n label: string;\n\n /** @deprecated */\n @Prop()\n onsuccess: (e: CustomEvent) => void;\n\n /** Determine whether the popover is open or closed. */\n @Prop({ reflect: true, mutable: true })\n open: boolean;\n\n /** Appends \"(optional)\" to the label and sets `aria-required=\"false\"`. */\n @Prop({ reflect: true })\n optional: boolean;\n\n /**\n * Text that appears within the input field when it is blurred and empty.\n * Placeholder text disappears when the user focuses on the field and provides input.\n */\n @Prop({ reflect: true })\n placeholder: string;\n\n /** @deprecated */\n @Prop({ reflect: true })\n popDirection: 'up' | 'down';\n\n /** Aligns the popover date picker to the left or right side of the input field. */\n @Prop()\n popoverAlignment: 'left' | 'right';\n\n /**\n * Force the direction of the popover date picker when it opens.\n * If no value is passed, the component will auto-detect the direction based on available space.\n */\n @Prop({ mutable: true })\n popoverDirection: 'up' | 'down';\n\n /** @deprecated */\n @Prop()\n popoverMinHeight: number = 355;\n\n /**\n * Determines the display mode of the popover.\n *\n * Providing a value of `legacy` instructs the popover to use absolute positioning instead of fixed positioning.\n *\n * @info\n * This is a temporary solution to work around styling issues related to using fixed positioning for the popover\n * when nested inside of elements with transform properties. This will be removed once the popover API is available\n * for use.\n */\n @Prop({ mutable: true })\n popoverMode: 'legacy' = null;\n\n /**\n * The field's content is not editable, but the field remains focusable.\n *\n * Appends \"(readonly)\" to the field label. Supersedes `optional` if both are `true`.\n */\n @Prop({ reflect: true })\n readonly: boolean;\n\n /**\n * Defines the first selectabe date in the date picker popover.\n *\n * @warning\n * Must be a valid ISO date string.\n */\n @Prop({ reflect: true })\n startDate: string;\n\n /** The user can type in the field. Only available in desktop browsers. */\n @Prop({ reflect: true })\n typeable: boolean;\n\n /**\n * Defines an explicit date whitelist.\n *\n * @warning\n * Must be a valid ISO date string.\n *\n * @info\n * When explicit date definitions like `validDates` is used, other date validity methods like `daysOfWeekChecksum` are overriden.\n */\n @Prop()\n validDates: string[];\n\n /**\n * The value of the `q2-calendar` element, e.g. the selected date.\n *\n * **How to change or clear the value with javascript:**\n * @snippet\n * // change date\n * element.value = '2022-12-21';\n * // clear date\n * element.value = null;\n */\n @Prop({ mutable: true, reflect: true })\n value: string | { toDate(): Date };\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when a date is selected or typed in the input field.\n * @legacyEvent\n */\n @Event()\n change: EventEmitter<{\n // ISO formatted date\n value: string | null;\n }>;\n\n /**\n * Emitted when an invalid date is entered into the field.\n */\n @Event()\n error: EventEmitter<{ errors: { message: string; errorCode: string }[] }>;\n\n /**\n * Emitted when a valid date is entered or selected.\n */\n @Event()\n success: EventEmitter<{\n // ISO formatted date\n value: string;\n }>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n connectedCallback() {\n this.selectedMonthYear = setupMonthYear(this.dateValue);\n this.dateList = this.buildDateList(this.selectedMonthYear);\n if (this.value && this.isTypeable && !this.typedValue) {\n this.typedValue = reorderDateString(this.value as string);\n }\n this.validateDate();\n }\n\n componentWillLoad() {\n this.popDirectionHandler();\n handleAriaLabel(this);\n }\n\n componentDidLoad(): void {\n overrideFocus(this.hostElement);\n }\n\n componentDidRender() {\n setTimeout(() => {\n this.scheduledAfterRender.forEach(fn => fn());\n this.scheduledAfterRender = [];\n }, 25);\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('change')\n defaultChangeHandler(event: CustomEvent) {\n if (event.target === this.hostElement && !this.hostElement.onchange && !!event.detail) {\n this.value = event.detail.value;\n }\n }\n\n @Listen('clear')\n handleClear() {\n this.change.emit({ value: null });\n this.value = null;\n this.typedValue = '';\n }\n\n @Listen('error')\n defaultErrorHandler(event: CustomEvent) {\n if (event.target === this.hostElement && !this.hostElement.onerror) {\n if (this.hintMessageType === 'error' && this.hintMessage) {\n this.internalError = this.hintMessage;\n } else {\n this.internalError = loc('tecton.element.calendar.hint.invalidDate');\n }\n }\n }\n\n @Listen('focus')\n delegateFocus(event: FocusEvent) {\n if (!isEventFromElement(event, this.hostElement)) return;\n this.controlElement.shadowRoot.querySelector<HTMLElement>('.input-field').focus();\n }\n\n @Listen('popoverStateChanged')\n popoverStateHandler({ detail: { open } }: CustomEvent<{ open: boolean }>) {\n if (this.open !== open) this.open = open;\n }\n\n @Listen('success')\n defaultSuccessHandler(event: CustomEvent) {\n if (event.target !== this.hostElement) {\n return;\n }\n\n if (typeof this.onsuccess === 'function') {\n this.onsuccess(event);\n } else {\n this.internalError = '';\n if (this.hintMessageType === 'error' && this.hintMessage) {\n this.hintMessage = null;\n this.hintMessageType = null;\n this.invalid = false;\n }\n }\n }\n\n // #endregion\n // #region Public Methods API\n\n /**\n * Emulates clicking the `<input>` to hide the popover if it is visible.\n *\n * @testOnly\n */\n @Method()\n async closePopover() {\n if (!this.open) return;\n this._togglePopover();\n }\n\n /**\n * Emulates clicking the `<input>` to display the popover if it is hidden.\n *\n * @testOnly\n */\n @Method()\n async openPopover() {\n if (this.open) return;\n this._togglePopover();\n }\n\n /**\n * Emulates clicking the `<input>` to display the popover, moving to the correct month and year, and clicking the\n * provided date.\n *\n * While a `string` value can be passed, we recommended passing a `Date` object. If the value is invalid, the method\n * will not select the date.\n *\n * @testOnly\n */\n @Method()\n async setValue(value: string | Date) {\n const date = typeof value === 'string' ? stringToDate(value) : value;\n if (!isValidDate(date)) return;\n\n await this.openPopover();\n await waitForNextPaint();\n\n this.goToMonthYear(date.getMonth(), date.getFullYear());\n await waitForNextPaint();\n const tableCell = this.calendarTable?.querySelector<HTMLTableCellElement>(\n `td[data-date=\"${formatDateISO(date)}\"]`\n );\n tableCell?.click();\n }\n\n /**\n * Emulates focusing the `<input>`, entering the provided value, and emitting an `input` event.\n *\n * While a `string` value can be passed, we recommended passing a `Date` object. If the value is invalid, the method\n * will not select the date.\n *\n * @warning\n * Only applicable when the input is typeable.\n *\n * @testOnly\n */\n @Method()\n async typeValue(value: string | Date) {\n if (!this.typeable) return;\n\n const date = typeof value === 'string' ? stringToDate(value) : value;\n const formattedDate = formatDateShort(date);\n if (!isValidDate(date)) return;\n\n const { innerInputField, controlElement } = this;\n innerInputField.focus();\n innerInputField.dispatchEvent(new FocusEvent('focus'));\n innerInputField.value = formattedDate;\n innerInputField.dispatchEvent(new InputEvent('input'));\n controlElement.dispatchEvent(new KeyboardEvent('keyup'));\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('ariaLabel')\n ariaLabelObserver() {\n handleAriaLabel(this);\n }\n\n @Watch('cutoffTime')\n cutoffTimeObserver() {\n this.dateList = this.buildDateList(this.selectedMonthYear);\n this.validateDate();\n }\n\n @Watch('daysOfWeekChecksum')\n daysOfWeekChecksumObserver() {\n this.dateList = this.buildDateList(this.selectedMonthYear);\n this.validateDate();\n }\n\n @Watch('endDate')\n endDateObserver() {\n this.dateList = this.buildDateList(this.selectedMonthYear);\n this.validateDate();\n }\n\n @Watch('invalidDates')\n invalidDatesObserver() {\n this.dateList = this.buildDateList(this.selectedMonthYear);\n this.validateDate();\n }\n\n @Watch('popDirection')\n popDirectionHandler() {\n handleRenamedProp(this, 'popDirection', 'popoverDirection');\n }\n\n @Watch('startDate')\n startDateObserver() {\n this.dateList = this.buildDateList(this.selectedMonthYear);\n this.validateDate();\n }\n\n @Watch('typeable')\n typeableChanged() {\n this.valueObserver(this.value);\n }\n\n @Watch('validDates')\n validDatesObserver() {\n this.dateList = this.buildDateList(this.selectedMonthYear);\n this.validateDate();\n }\n\n @Watch('value')\n valueObserver(newValue: string | IMomentLikeObject) {\n // resetting by empty string\n if (newValue === '') {\n this.value = undefined;\n this.setHints({ isValid: true, message: this.defaultHintMessage, messageType: 'info' });\n return;\n }\n const isMoment = newValue && typeof newValue !== 'string' && 'toDate' in newValue;\n const newDate = isMoment ? (newValue as IMomentLikeObject).toDate() : stringToDate(newValue as string);\n const shortFormattedValue = formatDateShort(newDate);\n if (this.isTypeable) {\n this.typedValue = shortFormattedValue;\n } else {\n this.controlElement.value = shortFormattedValue;\n this.selectedMonthYear = setupMonthYear(newDate);\n this.dateList = this.buildDateList(this.selectedMonthYear);\n this.validateDate();\n }\n\n // reset hint when value is cleared\n if (this.invalid) return;\n\n if (shortFormattedValue) {\n this.setHints({\n isValid: true,\n message: null,\n messageType: null,\n });\n } else {\n this.setHints({ isValid: true, message: this.defaultHintMessage, messageType: 'info' });\n }\n }\n\n // #endregion\n // #region Local Methods\n\n get canClear() {\n if (this.isTypeable) {\n return this.clearable && !!this.typedValue;\n } else {\n return this.clearable && !!this.value;\n }\n }\n\n get computedPlaceholder(): string {\n if (this.disabled && this.disabledMsg) {\n return loc(this.disabledMsg);\n }\n\n if (this.buttonLabel && (this.disabled || this.placeholder)) {\n return loc(this.buttonLabel);\n }\n\n return (this.placeholder && loc(this.placeholder)) || '';\n }\n\n get currentWeeks() {\n const weeks = this.dateList.reduce<CalendarDay[][]>((accum, item, index) => {\n const chunkIndex = Math.floor(index / 7);\n\n if (!accum[chunkIndex]) {\n accum[chunkIndex] = [];\n }\n\n accum[chunkIndex].push(item);\n\n return accum;\n }, []);\n\n return weeks;\n }\n\n get dateValidators(): IDateValidators {\n const ct = new Date(this.cutoffTime || ''); // should fallback to InvalidDate\n return {\n startDate: stringToDate(this.startDate),\n endDate: stringToDate(this.endDate),\n cutOffTime: isValidDate(ct) ? ct : undefined,\n };\n }\n\n get dateValue(): Date | undefined {\n if (this.isTypeable) {\n return stringToDate(this.typedValue);\n } else {\n let { value } = this;\n const isMoment = value && typeof value !== 'string' && 'toDate' in value;\n if (isMoment) return (value as IMomentLikeObject).toDate();\n\n // stringified moment value assigned in html template e.g.) handlebar\n const isMomentString =\n typeof value === 'string' && value.split(' ').length === 6 && /GMT-\\d{4}/g.test(value);\n if (isMomentString) {\n value = formatDateISO(value as string);\n }\n\n return stringToDate(value as string);\n }\n }\n\n get defaultHintMessage() {\n return this.typeable\n ? loc('tecton.element.calendar.hint.format') + ': ' + this.defaultFormatString\n : loc('tecton.element.calendar.hint.select');\n }\n\n get errorList() {\n const { errors, internalError, invalid } = this;\n let list = [];\n if (internalError) {\n list = [internalError];\n }\n if (Array.isArray(errors) && errors.length) {\n list = errors\n .filter(error => !!error)\n .map(error => loc(error))\n .concat(list);\n } else if (!internalError && invalid) {\n return ['tecton.element.calendar.invalid'];\n }\n return list;\n }\n\n get formattedValue() {\n const { typedValue, dateValue, displayFormat, isTypeable } = this;\n if (isTypeable) return typedValue;\n\n if (dateValue === undefined) return '';\n if (displayFormat) return format(dateValue, convertMomentFormat(displayFormat));\n\n return new Intl.DateTimeFormat('en-US', {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n }).format(dateValue);\n }\n\n get hintList() {\n const { hints, hintMessageType, hintMessage } = this;\n if (Array.isArray(hints) && hints.length) return hints.filter(hint => !!hint).map(hint => loc(hint));\n if (hintMessageType === 'info' && hintMessage) return [hintMessage];\n return [];\n }\n\n get innerInputContainer(): HTMLElement {\n return this.controlElement?.shadowRoot?.querySelector('.input-container');\n }\n\n get innerInputField(): HTMLInputElement | HTMLButtonElement {\n return this.controlElement?.shadowRoot?.querySelector('.input-field');\n }\n\n get isTypeable(): boolean {\n return this.typeable;\n }\n\n get selectedDate() {\n const selectedCell = this.calendarBody?.querySelector<HTMLTableCellElement>('[aria-selected=\"true\"]');\n return selectedCell ? removeTimezoneOffset(new Date(selectedCell.dataset.date)) : null;\n }\n\n _togglePopover() {\n const toggleElement = this.typeable ? this.btnCalendarToggle : this.innerInputField;\n toggleElement?.click();\n toggleElement?.focus();\n toggleElement.dispatchEvent(new FocusEvent('focus'));\n }\n\n activateDay(date: Date) {\n this.goToMonthYear(date.getMonth(), date.getFullYear());\n this.scheduledAfterRender.push(() => this.focusDay(date));\n }\n\n buildDateList(monthYear: ISelectedMonthYear): DateList {\n const invalidDates = stringArrayToDate(this.invalidDates);\n const validDaysOfWeek = getValidDaysOfWeek(this.daysOfWeekChecksum);\n const validDates = stringArrayToDate(this.validDates);\n return buildDates(\n validDaysOfWeek,\n validDates,\n invalidDates,\n monthYear,\n this.dateValue,\n this.dateValidators,\n this.typedValue\n );\n }\n\n calendarDays() {\n return (\n <table\n role=\"grid\"\n aria-labelledby=\"table-label\"\n ref={ref => (this.calendarTable = ref)}\n >\n <thead>\n <tr>\n {[...Array(7).keys()].map(index => (\n <th\n scope=\"col\"\n aria-label={this.dayStrings[index]}\n >\n {this.dayAbbrStrings[index]}\n </th>\n ))}\n </tr>\n </thead>\n <tbody\n onClick={this.onDateSelection}\n onKeyDown={this.onDateKeydown}\n ref={elm => (this.calendarBody = elm)}\n test-id=\"calendarTableBody\"\n >\n {this.currentWeeks.map(week => (\n <tr>\n {week.map(day => {\n let ariaLabel = '';\n if (day.isToday) ariaLabel = `${loc('tecton.element.calendar.today')}, `;\n ariaLabel += formatDateFull(day.date);\n if (day.isSelected) ariaLabel += ` (${loc('tecton.element.calendar.selected')})`;\n return (\n <td\n class={day.classList}\n aria-hidden={day.isEmpty ? 'true' : undefined}\n tabindex={day.isSelected ? 0 : -1}\n role={day.isSelected ? 'gridcell' : undefined}\n aria-selected={day.isSelected ? 'true' : undefined}\n aria-disabled={day.isValid ? undefined : 'true'}\n data-day={day.integer || undefined}\n data-date={day.date ? formatDateISO(day.date) : undefined}\n >\n {day?.isToday && (\n <div\n class=\"today-decorator\"\n aria-hidden=\"true\"\n >\n {loc('tecton.element.calendar.today')}\n </div>\n )}\n <div aria-label={ariaLabel}>{day?.integer ?? ''}</div>\n </td>\n );\n })}\n </tr>\n ))}\n </tbody>\n </table>\n );\n }\n\n calendarPopover() {\n const { monthIndex, selectedYear } = this.selectedMonthYear;\n return (\n <div\n class=\"calendar-field-popup\"\n onKeyUp={this.onPopupKeyup}\n >\n {this.calendarLabel && <p class=\"calendar-label\">{loc(this.calendarLabel)}</p>}\n <div class=\"cal-month-heading\">\n <q2-btn\n label={loc('tecton.element.calendar.previousMonth')}\n hide-label\n ref={elm => (this.btnPrevMonth = elm)}\n class=\"cal-nav-btn prev-month\"\n test-id=\"previousMonthButton\"\n onClick={() => this.goToMonthYear(monthIndex - 1, selectedYear)}\n >\n <q2-icon type=\"chevron-left\" />\n </q2-btn>\n <span class=\"cal-month-text\">{this.monthStrings[monthIndex]}</span>\n <q2-btn\n label={loc('tecton.element.calendar.nextMonth')}\n hide-label\n class=\"cal-nav-btn next-month\"\n ref={elm => (this.btnNextMonth = elm)}\n test-id=\"nextMonthButton\"\n onClick={() => this.goToMonthYear(monthIndex + 1, selectedYear)}\n >\n <q2-icon type=\"chevron-right\" />\n </q2-btn>\n <q2-btn\n label={loc('tecton.element.calendar.previousYear')}\n hide-label\n class=\"cal-nav-btn prev-year\"\n ref={elm => (this.btnPrevYear = elm)}\n test-id=\"previousYearButton\"\n onClick={() => this.goToMonthYear(monthIndex, selectedYear - 1)}\n >\n <q2-icon type=\"chevron-left\" />\n </q2-btn>\n <span class=\"cal-year-text\">{this.selectedMonthYear.selectedYear}</span>\n <q2-btn\n label={loc('tecton.element.calendar.nextYear')}\n hide-label\n class=\"cal-nav-btn next-year\"\n ref={elm => (this.btnNextYear = elm)}\n test-id=\"nextYearButton\"\n onClick={() => this.goToMonthYear(monthIndex, selectedYear + 1)}\n onKeyDown={this.onHeaderControlKeydown}\n >\n <q2-icon type=\"chevron-right\" />\n </q2-btn>\n </div>\n <div\n class=\"sr\"\n aria-live=\"polite\"\n id=\"table-label\"\n >\n {`${this.monthStrings[monthIndex]} ${selectedYear}`}\n </div>\n {this.calendarDays()}\n {this.disclaimer && <div class=\"calendar-disclaimer\">{loc(this.disclaimer)}</div>}\n <q2-btn\n class=\"sr refocus-popup\"\n onFocus={this.onRefocus}\n />\n </div>\n );\n }\n\n checkActiveCellForBlankness() {\n const activeElement = this.hostElement.shadowRoot.activeElement;\n if (!activeElement || activeElement.tagName !== 'TD' || !activeElement.hasAttribute('aria-hidden')) return;\n\n const { calendarBody } = this;\n const calendarCells = Array.from(calendarBody.querySelectorAll<Element>('td'));\n const indexOfCell = Array.from(calendarCells).indexOf(activeElement);\n\n const dayToFocus =\n indexOfCell < 15 ? 1 : calendarCells.filter(cell => !cell.hasAttribute('aria-hidden')).length;\n\n this.focusDay(this.generateDateFromDay(dayToFocus));\n }\n\n closeCalendar = () => {\n if (!this.open) return;\n this.open = false;\n this.focusInput();\n };\n\n async focusDay(date: Date) {\n if (!date) return;\n await waitForNextPaint();\n this.calendarBody.querySelector<HTMLElement>(`td[data-day=\"${date.getDate()}\"]`)?.focus();\n }\n\n focusInput() {\n this.controlElement?.focus();\n }\n\n generateDateFromDay(day: number) {\n const { monthIndex, selectedYear } = this.selectedMonthYear;\n return new Date(selectedYear, monthIndex, day);\n }\n\n goToMonthYear = (monthIndex: number, year: number) => {\n if (monthIndex < 0) {\n monthIndex = 11;\n year--;\n } else if (monthIndex > 11) {\n monthIndex = 0;\n year++;\n }\n this.selectedMonthYear = {\n monthIndex,\n selectedYear: year,\n };\n this.dateList = this.buildDateList(this.selectedMonthYear);\n\n this.scheduledAfterRender.push(() => this.checkActiveCellForBlankness());\n };\n\n hintField() {\n if (!this.hintMessage) return;\n\n return (\n <q2-message\n class=\"calendar-hint sr\"\n ref={el => (this.hintMessageElement = el)}\n type={this.hintMessageType}\n >\n {this.hintMessage}\n </q2-message>\n );\n }\n\n inputField() {\n const { isTypeable } = this;\n return (\n <q2-input\n ref={el => (this.controlElement = el)}\n class=\"calendar-input-field\"\n value={this.formattedValue}\n label={loc(this.label)}\n hideLabel={this.hideLabel}\n disabled={!!this.disabled}\n readonly={!!this.readonly}\n clearable={this.canClear}\n placeholder={this.computedPlaceholder}\n optional={!!this.optional}\n ariaExpanded={`${!!this.open}`}\n hints={this.hintList}\n errors={this.errorList}\n onClick={isTypeable ? undefined : this.onInputClick}\n onChange={this.onInputChange}\n onInput={this.onInputInput}\n onKeyDown={this.onInputKeydown}\n onKeyUp={this.onInputKeyup}\n onBlur={this.onInputBlur}\n onFocus={this.onInputFocus}\n icon-right={isTypeable ? undefined : 'calendar'}\n format-modifier={isTypeable ? this.formatModifier : this.displayFormat || this.formatModifier}\n type=\"date\"\n hide-messages={!isTypeable}\n test-id=\"inputAndCalendarToggle\"\n _role=\"combobox\"\n _preventEntry={!isTypeable}\n >\n {isTypeable && (\n <q2-btn\n ref={el => (this.btnCalendarToggle = el)}\n slot=\"input-right\"\n onClick={this.onInputClick}\n test-id=\"calendarToggle\"\n label=\"tecton.element.calendar.toggleAriaLabel\"\n hide-label\n >\n <q2-icon type=\"calendar\" />\n </q2-btn>\n )}\n </q2-input>\n );\n }\n\n onClickElsewhere = (event: CustomEvent) => {\n const target = event.target as HTMLClickElsewhereElement;\n if (target.localName === 'click-elsewhere') {\n event.stopPropagation();\n this.closeCalendar();\n }\n };\n\n onDateKeydown = (event: KeyboardEvent) => {\n const { monthIndex, selectedYear } = this.selectedMonthYear;\n const currentDay = parseInt((event.target as HTMLElement).dataset.day);\n const currentDate = this.generateDateFromDay(currentDay);\n\n switch (event.key) {\n case 'ArrowUp':\n event.preventDefault();\n this.activateDay(addDays(currentDate, -7));\n break;\n\n case 'ArrowDown':\n event.preventDefault();\n this.activateDay(addDays(currentDate, 7));\n break;\n\n case 'ArrowRight':\n event.preventDefault();\n this.activateDay(addDays(currentDate, 1));\n break;\n\n case 'ArrowLeft':\n event.preventDefault();\n this.activateDay(addDays(currentDate, -1));\n break;\n\n case 'PageUp':\n event.preventDefault();\n if (event.shiftKey) this.goToMonthYear(monthIndex, selectedYear - 1);\n else this.goToMonthYear(monthIndex - 1, selectedYear);\n break;\n\n case 'PageDown':\n event.preventDefault();\n if (event.shiftKey) this.goToMonthYear(monthIndex, selectedYear + 1);\n else this.goToMonthYear(monthIndex + 1, selectedYear);\n break;\n\n case 'Home':\n event.preventDefault();\n this.activateDay(addDays(currentDate, -currentDate.getDay()));\n break;\n\n case 'End':\n event.preventDefault();\n this.activateDay(addDays(currentDate, 6 - currentDate.getDay()));\n break;\n\n case 'Escape':\n event.preventDefault();\n this.closeCalendar();\n this.focusInput();\n break;\n\n case 'Enter':\n event.preventDefault();\n if (!this.dateList.find(({ date }) => isSameDay(date, currentDate)).isValid) return;\n this.selectDate(currentDate);\n this.closeCalendar();\n this.focusInput();\n break;\n\n case ' ':\n event.preventDefault();\n if (!this.dateList.find(({ date }) => isSameDay(date, currentDate)).isValid) return;\n this.selectDate(currentDate);\n this.closeCalendar();\n this.focusInput();\n break;\n }\n };\n\n onDateSelection = (event: MouseEvent) => {\n const dateCell = (event.target as HTMLElement).closest<HTMLElement>('td:not([aria-hidden])');\n if (!dateCell) return;\n const clickedDate = removeTimezoneOffset(new Date(dateCell.dataset.date));\n this.selectDate(clickedDate);\n this.closeCalendar();\n };\n\n onHeaderControlKeydown = (event: KeyboardEvent) => {\n const currentDate = this.generateDateFromDay(1);\n const hasSelectedCell = this.calendarBody?.querySelector<HTMLTableCellElement>('[aria-selected=\"true\"]');\n\n if (event.key === 'Tab' && !hasSelectedCell) {\n event.preventDefault();\n this.activateDay(currentDate);\n }\n };\n\n onInputBlur = () => {\n if (!this.isTypeable) return;\n\n const validDays = getValidDaysOfWeek(this.daysOfWeekChecksum);\n const { typedValue } = this;\n const { isValid, inputDate, isAvailable } = validateInput(\n this.typedValue,\n validDays,\n this.validDates,\n this.invalidDates,\n this.startDate,\n this.endDate,\n this.defaultFormatString,\n this.assume\n );\n\n if (!typedValue && inputDate?.toString() === 'Invalid Date') {\n // initial/clear state\n this.setHints({ isValid: true, message: this.defaultHintMessage, messageType: 'info' });\n } else if (\n isValid ||\n (typedValue &&\n typedValue.length > 4 && // at least mm/dd provided\n inputDate &&\n isValidDate(inputDate) &&\n isAvailable)\n ) {\n this.setCompleteInput(inputDate);\n } else if (this.value) {\n this.valueOnBlur = this.value;\n this.value = null;\n this.change.emit({ value: null });\n this.typedValue = typedValue;\n }\n };\n\n onInputChange = (event: Event) => {\n event.stopPropagation();\n };\n\n onInputClick = () => {\n if (this.disabled) return;\n this.toggleCalendar();\n };\n\n onInputFocus = (event: FocusEvent) => {\n if (!this.isTypeable) return;\n if (event.target === this.controlElement) {\n if (this.valueOnBlur && !this.value) {\n const tmpTypedValue = this.typedValue;\n this.value = this.valueOnBlur;\n this.typedValue = tmpTypedValue;\n this.valueOnBlur = null;\n }\n this.closeCalendar();\n }\n };\n\n onInputInput = ({ detail: { value } }: Q2InputCustomEvent<IEventDetail> & InputEvent) => {\n this.typedValue = value;\n };\n\n onInputKeydown = (event: KeyboardEvent) => {\n const { dateValue } = this;\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.openCalendar();\n this.activateDay(dateValue || new Date());\n break;\n\n case 'Enter':\n case ' ':\n if (this.typeable) break;\n event.preventDefault();\n if (this.open) {\n this.closeCalendar();\n } else {\n this.openCalendar();\n this.activateDay(dateValue || new Date());\n }\n break;\n }\n };\n\n onInputKeyup = (event: KeyboardEvent) => {\n if (this.disabled) {\n return;\n }\n\n switch (event.key) {\n case 'Escape':\n this.onInputBlur();\n this.closeCalendar();\n break;\n }\n\n if (!this.isTypeable) return;\n\n // handle missing zero in month and date\n this.typedValue = handleMissingZeros(this.typedValue);\n const { typedValue } = this;\n const validDays = getValidDaysOfWeek(this.daysOfWeekChecksum);\n const { isValid, message, messageType, inputDate, isAvailable, calendarPosition } = validateInput(\n typedValue,\n validDays,\n this.validDates,\n this.invalidDates,\n this.startDate,\n this.endDate,\n this.defaultFormatString,\n this.assume\n );\n\n if (calendarPosition) {\n const [mm, dd, yyyy] = calendarPosition;\n const date = new Date(yyyy, mm - 1, dd);\n if (isValidDate(date)) {\n this.selectedMonthYear = setupMonthYear(date);\n this.dateList = this.buildDateList(this.selectedMonthYear);\n this.validateDate();\n }\n }\n\n if (event.key === 'Enter') {\n if (\n isValid ||\n (typedValue &&\n typedValue.length > 4 && // at least mm/dd provided\n inputDate &&\n isValidDate(inputDate) &&\n isAvailable)\n ) {\n this.setCompleteInput(inputDate);\n } else if (this.value) {\n this.value = null;\n this.change.emit({ value: null });\n this.typedValue = typedValue;\n }\n\n if (this.keyboardSelection) {\n this.keyboardSelection = false;\n this.closeCalendar();\n } else {\n this.toggleCalendar();\n }\n } else {\n this.setHints({ isValid, message, messageType });\n }\n };\n\n onPopupKeyup = (event: KeyboardEvent) => {\n if (event.key === 'Escape' || event.key === 'Esc') {\n this.onInputBlur();\n this.closeCalendar();\n }\n };\n\n onRefocus = () => {\n this.btnPrevMonth?.dispatchEvent(new FocusEvent('focus'));\n };\n\n openCalendar = () => {\n if (this.readonly || this.open) return;\n this.selectedMonthYear = setupMonthYear(this.dateValue);\n this.dateList = this.buildDateList(this.selectedMonthYear);\n this.open = true;\n };\n\n selectDate = (newDate: Date) => {\n const { isValid } = this.dateList.find(({ date }) => isSameDay(date, newDate));\n if (!isValid) return;\n this.change.emit({ value: formatDateISO(newDate) });\n this.typedValue = formatDateShort(newDate);\n this.invalid = false;\n this.success.emit({ value: formatDateISO(newDate) });\n };\n\n setCompleteInput(inputDate: Date) {\n const formattedDate = formatDateShort(inputDate);\n this.change.emit({ value: formatDateISO(inputDate) });\n this.typedValue = formattedDate;\n this.internalError = null;\n this.setHints({\n isValid: true,\n message: null,\n messageType: null,\n });\n }\n\n setHints({ isValid, message, messageType }) {\n if (message === this.hintMessage) return this.hintMessageElement?.present();\n this.invalid = !isValid;\n this.hintMessage = message;\n this.hintMessageType = messageType;\n if (messageType === 'error' && message) {\n this.internalError = message;\n this.error.emit({\n errors: [\n {\n message,\n errorCode: 'generalInvalid',\n },\n ],\n });\n }\n }\n\n toggleCalendar = () => {\n if (this.readonly) return;\n if (this.open) {\n this.closeCalendar();\n } else {\n this.openCalendar();\n }\n };\n\n validateDate() {\n try {\n if (!!this.value) {\n const { dateValue } = this;\n const month = dateValue?.getMonth() ?? undefined;\n const year = dateValue?.getFullYear() ?? undefined;\n const { monthIndex, selectedYear } = this.selectedMonthYear;\n\n const isSelectedMonthAndYear = month === monthIndex && year === selectedYear;\n let calculationDateList = [];\n\n if (!dateValue) {\n calculationDateList = [];\n } else if (isSelectedMonthAndYear) {\n calculationDateList = this.dateList;\n } else {\n calculationDateList = this.buildDateList({\n monthIndex: month,\n selectedYear: year,\n });\n }\n\n const dateValueDayOfMonth = dateValue?.getDate() ?? undefined;\n const isDateValueInvalid = dateValueDayOfMonth\n ? !calculationDateList.find(({ integer }) => integer === dateValueDayOfMonth).isValid\n : true;\n if (isDateValueInvalid) {\n this.error.emit({\n errors: [\n {\n message: `Value passed is invalid: The date ${this.value} is not valid`,\n errorCode: 'generalInvalid',\n },\n ],\n });\n } else {\n this.success.emit({ value: formatDateISO(dateValue) });\n }\n }\n } catch (error) {\n console.warn('Invalid moment value ', this.dateValue);\n }\n }\n\n // #endregion\n // #region Render Methods\n\n render() {\n return (\n <click-elsewhere\n class={this.open ? 'dropdown-open' : undefined}\n onChange={this.onClickElsewhere}\n >\n {this.inputField()}\n <q2-popover\n ref={el => (this.popoverElement = el)}\n controlElement={this.innerInputContainer}\n open={this.open}\n direction={this.popoverDirection}\n minHeight={this.popoverMinHeight}\n align={this.popoverAlignment}\n mode={this.popoverMode || undefined}\n block\n >\n {this.hintField()}\n {this.calendarPopover()}\n </q2-popover>\n </click-elsewhere>\n );\n }\n\n // #endregion\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{r as t,c as e,h as n,g as o}from"./p-a5f18e27.js";import{l as a,o as i}from"./p-84190698.js";const r="*{box-sizing:border-box}*:active{outline:none}*:focus{outline:none;box-shadow:var(--const-double-focus-ring, 0 0 0 2px #ffffff, 0 0 0 4px #0066cc)}:host{box-shadow:none !important}::-moz-focus-inner{border:none}input,textarea,button{font-family:inherit;font-size:inherit;font-stretch:inherit}:host(.sr),:host(.sr) button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.sr,.sr button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.hidden{display:none}:host([hidden]){display:none}.invisible{visibility:hidden}.month-container{--comp-month-primary-background:var(--tct-btn-primary-background, var(--tct-btn-primary-bg, var(--t-btn-primary-bg, #2e2e2e)));--comp-month-primary-font-color:var(--tct-btn-primary-font-color, var(--t-btn-primary-font-color, var(--tct-white, var(--app-white, #ffffff))));--comp-month-primary-background:var(--tct-btn-secondary-background, var(--tct-btn-secondary-bg, var(--t-button-default-bg, #cccccc)));--comp-month-secondary-font-color:var(--tct-btn-secondary-font-color, var(--t-btn-secondary-font-color, var(--t-button-default-font-color, #2e2e2e)))}.month-container .navigation{display:flex;justify-content:space-between;flex-direction:row}.month-container .navigation .year-btn{padding:0 1rem;display:flex;align-items:center}.month-container .navigation .year-btn .year{margin-right:0.2rem}.month-container .navigation .year-btn .year-icon{--t-icon-stroke-width:2px;width:16px;height:16px;transition:all 0.3s ease-in-out}.month-container .navigation .year-btn .year-icon.on{transform:rotate(-180deg)}.month-container .navigation .month-controller{display:flex;align-items:center}.month-container .month-list{display:grid;grid-template-columns:auto auto auto}.month-container .month-list .month{display:flex;justify-content:center;align-items:center;padding:0.5rem 0}.month-container .month-list .month .month-button{border-radius:50%;aspect-ratio:1;width:50px;display:flex;justify-content:center;align-items:center}.month-container .month-list .month .month-button:hover{background:var(--comp-month-primary-background);color:var(--comp-month-secondary-font-color);cursor:pointer}.month-container .month-list .month .month-button:active,.month-container .month-list .month .month-button.active{background:var(--comp-month-primary-background);color:var(--comp-month-primary-font-color)}.month-container .today-label{padding:0.5rem 0;color:var(--tct-calendar-day-selected-outline-color, var(--t-calendar-day-selected-outline-color, var(--tct-stoplight-info, var(--const-stoplight-info, #0079c1))))}";const c=r;const s=class{constructor(n){t(this,n);this.toggleChange=e(this,"toggleChange",7);this.viewChange=e(this,"viewChange",7);this.monthGrid=[[0,1,2],[3,4,5],[6,7,8],[9,10,11]];this.months=["January","February","March","April","May","June","July","August","September","October","November","December"].map((t=>({label:a(`tecton.element.calendar.months.${t}`),abbr:a(`tecton.element.calendar.months.abbr.${t}`)})));this.scheduledAfterRender=[];this.focusMonth=t=>{const e=this.hostElement.shadowRoot.querySelector(`.month-button[data-index="${t}"]`);if(e){this.focusedIndex=t;e.focus()}};this.moveMonth=(t,e,n)=>{const o=t.length;const a=t[0].length;const i=Math.floor(e/a);const r=e%a;const c=[i,r];if(n.key==="ArrowUp"){n.stopPropagation();n.preventDefault();return t[Math.max(0,c[0]-1)][c[1]]}else if(n.key==="ArrowDown"){n.stopPropagation();n.preventDefault();return t[Math.min(o-1,c[0]+1)][c[1]]}else if(n.key==="ArrowLeft"){n.stopPropagation();n.preventDefault();return Math.max(0,e-1)}else if(n.key==="ArrowRight"){n.stopPropagation();n.preventDefault();return Math.min(this.months.length-1,e+1)}else{return t[c[0]][c[1]]}};this.onMonthKeydown=t=>{if(t.key==="Escape"||t.key==="Esc"){this.toggleChange.emit({close:true});return}const e=t.target.dataset.index;if(!e)return;if(t.key==="Enter"||t.key===" "){t.preventDefault();t.stopPropagation();this.selectMonth(Number(e))}else{const n=this.moveMonth(this.monthGrid,Number(e),t);this.focusMonth(n)}};this.onMonthSelection=t=>{var e,n;const o=t.target.closest(".month-button");if((e=o===null||o===void 0?void 0:o.dataset)===null||e===void 0?void 0:e.index){this.selectMonth(Number((n=o===null||o===void 0?void 0:o.dataset)===null||n===void 0?void 0:n.index))}};this.selectMonth=t=>{var e,n,o;this.selectedIndex=t;this.focusedIndex=t;const a=this.hostElement.shadowRoot.querySelector(`.month-button[data-index="${t}"]`);(e=this.hostElement.shadowRoot.querySelectorAll(`.month-button`))===null||e===void 0?void 0:e.forEach((t=>t.classList.remove("active")));a===null||a===void 0?void 0:a.classList.add("active");a===null||a===void 0?void 0:a.focus();const i={view:"day",monthIndex:t,selectedYear:this.year};(o=(n=this.hostElement).onchange)===null||o===void 0?void 0:o.call(n,new CustomEvent("click",{bubbles:true,detail:i}));this.viewChange.emit(i)};this.selectYear=t=>{this.year=Math.max(1970,t)};this.focusedIndex=0;this.selectedIndex=0;this.showYearLayer=false;this.disabledMonths=undefined;this.today=undefined;this.year=Number((new Date).toLocaleString("en-US",{year:"numeric"}))}componentDidLoad(){i(this.hostElement)}componentDidRender(){var t;(t=this.scheduledAfterRender)===null||t===void 0?void 0:t.forEach((t=>t()));this.scheduledAfterRender=[]}render(){return n("div",{key:"9a3d5b9d43098c70309afeca4c363d50e868f991",class:"month-container",onKeyDown:this.onMonthKeydown},n("div",{key:"5ac2d482a9ad89e91159fa434c9936ce15334424",class:"navigation"},n("q2-btn",{key:"2f8b0f30e9d0fa8afe77460693fd6e079a45b38f",class:"year-btn",onClick:()=>this.viewChange.emit({view:"year",selectedYear:this.year})},n("span",{key:"f072969beb15c5789afc9042e2826ea74b3a6296",class:"year"},this.year),n("q2-icon",{key:"5b5cb096290de9963532a6524c127e6bdfd8cbdf",class:"year-icon off",type:"chevron-down"})),n("div",{key:"af5660c0768fa85b40091b75039c3fdc48ab7577",class:"month-controller"},n("div",{key:"d76a935b9e17b79a9a9a3bbd06d090d4dfdb2409",class:"cal-year-prev-next"},n("q2-btn",{key:"37a15ade5e768d735d76901d9376932efbe237f1",label:a("tecton.element.calendar.previousYear"),"hide-label":true,class:"cal-nav-btn prev-year","test-id":"previousYearButton",onClick:()=>this.selectYear(this.year-1)},n("q2-icon",{key:"42e9ee837d8ac8162f384e2f67e2ccc11bfae2d2",type:"arrow-left"})),n("q2-btn",{key:"474bf6cc02daa2c4b0663276b2b65d1951abda36",label:a("tecton.element.calendar.nextYear"),"hide-label":true,class:"cal-nav-btn next-year","test-id":"nextYearButton",onClick:()=>this.selectYear(this.year+1)},n("q2-icon",{key:"80ec6db5a6b9f150fc4dd96c01eae42ce31bc969",type:"arrow-right"}))))),n("div",{key:"f5e78be0913701d00c81e4674d82e24f28d675e0",class:"month-list",onClick:this.onMonthSelection},this.months.map(((t,e)=>n("div",{class:"month"},n("span",{role:"button",class:"month-button","data-index":e,"aria-label":t.label,tabindex:e===this.focusedIndex?0:-1},t.abbr))))),this.today&&n("div",{key:"66c9301a80b27c8dcaa47022991178053d618d89",class:"today-label"},a("tecton.element.calendar.today"),": ",this.today))}get hostElement(){return o(this)}};s.style=c;export{s as q2_month_picker};
2
- //# sourceMappingURL=p-630613c7.entry.js.map
1
+ import{r as t,c as n,h as e,g as o}from"./p-a5f18e27.js";import{l as a,o as i}from"./p-9a1a4bc0.js";const r="*{box-sizing:border-box}*:active{outline:none}*:focus{outline:none;box-shadow:var(--const-double-focus-ring, 0 0 0 2px #ffffff, 0 0 0 4px #0066cc)}:host{box-shadow:none !important}::-moz-focus-inner{border:none}input,textarea,button{font-family:inherit;font-size:inherit;font-stretch:inherit}:host(.sr),:host(.sr) button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.sr,.sr button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.hidden{display:none}:host([hidden]){display:none}.invisible{visibility:hidden}.month-container{--comp-month-primary-background:var(--tct-btn-primary-background, var(--tct-btn-primary-bg, var(--t-btn-primary-bg, #2e2e2e)));--comp-month-primary-font-color:var(--tct-btn-primary-font-color, var(--t-btn-primary-font-color, var(--tct-white, var(--app-white, #ffffff))));--comp-month-primary-background:var(--tct-btn-secondary-background, var(--tct-btn-secondary-bg, var(--t-button-default-bg, #cccccc)));--comp-month-secondary-font-color:var(--tct-btn-secondary-font-color, var(--t-btn-secondary-font-color, var(--t-button-default-font-color, #2e2e2e)))}.month-container .navigation{display:flex;justify-content:space-between;flex-direction:row}.month-container .navigation .year-btn{padding:0 1rem;display:flex;align-items:center}.month-container .navigation .year-btn .year{margin-right:0.2rem}.month-container .navigation .year-btn .year-icon{--t-icon-stroke-width:2px;width:16px;height:16px;transition:all 0.3s ease-in-out}.month-container .navigation .year-btn .year-icon.on{transform:rotate(-180deg)}.month-container .navigation .month-controller{display:flex;align-items:center}.month-container .month-list{display:grid;grid-template-columns:auto auto auto}.month-container .month-list .month{display:flex;justify-content:center;align-items:center;padding:0.5rem 0}.month-container .month-list .month .month-button{border-radius:50%;aspect-ratio:1;width:50px;display:flex;justify-content:center;align-items:center}.month-container .month-list .month .month-button:hover{background:var(--comp-month-primary-background);color:var(--comp-month-secondary-font-color);cursor:pointer}.month-container .month-list .month .month-button:active,.month-container .month-list .month .month-button.active{background:var(--comp-month-primary-background);color:var(--comp-month-primary-font-color)}.month-container .today-label{padding:0.5rem 0;color:var(--tct-calendar-day-selected-outline-color, var(--t-calendar-day-selected-outline-color, var(--tct-stoplight-info, var(--const-stoplight-info, #0079c1))))}";const c=r;const s=class{constructor(e){t(this,e);this.toggleChange=n(this,"toggleChange",7);this.viewChange=n(this,"viewChange",7);this.monthGrid=[[0,1,2],[3,4,5],[6,7,8],[9,10,11]];this.months=["January","February","March","April","May","June","July","August","September","October","November","December"].map((t=>({label:a(`tecton.element.calendar.months.${t}`),abbr:a(`tecton.element.calendar.months.abbr.${t}`)})));this.scheduledAfterRender=[];this.focusMonth=t=>{const n=this.hostElement.shadowRoot.querySelector(`.month-button[data-index="${t}"]`);if(n){this.focusedIndex=t;n.focus()}};this.moveMonth=(t,n,e)=>{const o=t.length;const a=t[0].length;const i=Math.floor(n/a);const r=n%a;const c=[i,r];if(e.key==="ArrowUp"){e.stopPropagation();e.preventDefault();return t[Math.max(0,c[0]-1)][c[1]]}else if(e.key==="ArrowDown"){e.stopPropagation();e.preventDefault();return t[Math.min(o-1,c[0]+1)][c[1]]}else if(e.key==="ArrowLeft"){e.stopPropagation();e.preventDefault();return Math.max(0,n-1)}else if(e.key==="ArrowRight"){e.stopPropagation();e.preventDefault();return Math.min(this.months.length-1,n+1)}else{return t[c[0]][c[1]]}};this.onMonthKeydown=t=>{if(t.key==="Escape"||t.key==="Esc"){this.toggleChange.emit({close:true});return}const n=t.target.dataset.index;if(!n)return;if(t.key==="Enter"||t.key===" "){t.preventDefault();t.stopPropagation();this.selectMonth(Number(n))}else{const e=this.moveMonth(this.monthGrid,Number(n),t);this.focusMonth(e)}};this.onMonthSelection=t=>{var n,e;const o=t.target.closest(".month-button");if((n=o===null||o===void 0?void 0:o.dataset)===null||n===void 0?void 0:n.index){this.selectMonth(Number((e=o===null||o===void 0?void 0:o.dataset)===null||e===void 0?void 0:e.index))}};this.selectMonth=t=>{var n,e,o;this.selectedIndex=t;this.focusedIndex=t;const a=this.hostElement.shadowRoot.querySelector(`.month-button[data-index="${t}"]`);(n=this.hostElement.shadowRoot.querySelectorAll(`.month-button`))===null||n===void 0?void 0:n.forEach((t=>t.classList.remove("active")));a===null||a===void 0?void 0:a.classList.add("active");a===null||a===void 0?void 0:a.focus();const i={view:"day",monthIndex:t,selectedYear:this.year};(o=(e=this.hostElement).onchange)===null||o===void 0?void 0:o.call(e,new CustomEvent("click",{bubbles:true,detail:i}));this.viewChange.emit(i)};this.selectYear=t=>{this.year=Math.max(1970,t)};this.focusedIndex=0;this.selectedIndex=0;this.showYearLayer=false;this.disabledMonths=undefined;this.today=undefined;this.year=Number((new Date).toLocaleString("en-US",{year:"numeric"}))}componentDidLoad(){i(this.hostElement)}componentDidRender(){var t;(t=this.scheduledAfterRender)===null||t===void 0?void 0:t.forEach((t=>t()));this.scheduledAfterRender=[]}render(){return e("div",{key:"81330bd8327818f2afc2071bf88c3d4a9a25f1dd",class:"month-container",onKeyDown:this.onMonthKeydown},e("div",{key:"3f46eb248acc1c8d4b80826d1d72a5d8795d6707",class:"navigation"},e("q2-btn",{key:"07862558c87003e0cf53abd922976063c98297e9",class:"year-btn",onClick:()=>this.viewChange.emit({view:"year",selectedYear:this.year})},e("span",{key:"87f7e1bfc22b297eed50c050b3449c0a7cfa7cbb",class:"year"},this.year),e("q2-icon",{key:"f0e95030a63a1016391177c52770b8bc7723654f",class:"year-icon off",type:"chevron-down"})),e("div",{key:"2dae852a2934e0701827607062091745b9157a93",class:"month-controller"},e("div",{key:"da9f25a7ba14e79c092f01c43834a5dd8eac3a9d",class:"cal-year-prev-next"},e("q2-btn",{key:"3e556a869dc73e8b8b124827cde3ea38dd05ac8d",label:a("tecton.element.calendar.previousYear"),"hide-label":true,class:"cal-nav-btn prev-year","test-id":"previousYearButton",onClick:()=>this.selectYear(this.year-1)},e("q2-icon",{key:"818784c3c4b9139f206b1512d39f6b159edc28f0",type:"arrow-left"})),e("q2-btn",{key:"b59ea5592d98d9d351cba75b1ea083faeb4fe758",label:a("tecton.element.calendar.nextYear"),"hide-label":true,class:"cal-nav-btn next-year","test-id":"nextYearButton",onClick:()=>this.selectYear(this.year+1)},e("q2-icon",{key:"6e823542f44f2a1d26d3528d0c2f7aa49412c1a1",type:"arrow-right"}))))),e("div",{key:"af3443ca09423f246bad3e00a261d047e8c9369b",class:"month-list",onClick:this.onMonthSelection},this.months.map(((t,n)=>e("div",{class:"month"},e("span",{role:"button",class:"month-button","data-index":n,"aria-label":t.label,tabindex:n===this.focusedIndex?0:-1},t.abbr))))),this.today&&e("div",{key:"ec7306ce48afb546b9f82a68c2ec7c2a592fd13c",class:"today-label"},a("tecton.element.calendar.today"),": ",this.today))}get hostElement(){return o(this)}};s.style=c;export{s as q2_month_picker};
2
+ //# sourceMappingURL=p-395904b4.entry.js.map
@@ -0,0 +1,2 @@
1
+ import{r as t,c as i,h as a,F as e,H as o,g as r}from"./p-a5f18e27.js";import{o as s,i as n,w as c,l as h}from"./p-9a1a4bc0.js";import{a as p,s as l}from"./p-b7554a79.js";const d="*{box-sizing:border-box}*:active{outline:none}*:focus{outline:none;box-shadow:var(--const-double-focus-ring, 0 0 0 2px #ffffff, 0 0 0 4px #0066cc)}:host{box-shadow:none !important}::-moz-focus-inner{border:none}input,textarea,button{font-family:inherit;font-size:inherit;font-stretch:inherit}:host(.sr),:host(.sr) button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.sr,.sr button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.hidden{display:none}:host([hidden]){display:none}.invisible{visibility:hidden}:host{display:inline-block;position:relative;line-height:0}:host(:not(:last-child)){margin-inline-end:var(--tct-tag-margin, var(--t-tag-margin, var(--app-scale-2x, 10px)))}.tag-wrapper{--comp-tag-btn-size:var(--tct-tag-btn-size, var(--t-tag-btn-size, var(--app-scale-6x, 30px)));--comp-tag-background:var(--tct-tag-background, var(--t-tag-background, var(--t-gray-13, #e6e6e6)));--comp-tag-color:var(--tct-tag-color, var(--t-tag-color, var(--t-gray-3, #262626)));background:var(--comp-tag-background);color:var(--comp-tag-color);border-radius:var(--tct-tag-border-radius, var(--t-tag-border-radius, var(--app-border-radius-1, 4px)));position:relative}:host([theme=primary]) .tag-wrapper{--comp-tag-background:var(--tct-tag-primary-background, var(--t-primary, #0079c1));--comp-tag-color:var(--tct-tag-primary-font-color, var(--t-primary-text, #ffffff))}:host([theme=secondary]) .tag-wrapper{--comp-tag-background:var(--tct-tag-secondary-background, var(--t-secondary, #b3c2cc));--comp-tag-color:var(--tct-tag-secondary-font-color, var(--t-secondary-text, #141414))}:host([theme=tertiary]) .tag-wrapper{--comp-tag-background:var(--tct-tag-tertiary-background, var(--t-tertiary, #e8f5fc));--comp-tag-color:var(--tct-tag-tertiary-font-color, var(--t-tertiary-text, #141414))}.tag{display:flex;width:max-content;height:var(--tct-tag-height, var(--t-tag-height, var(--app-scale-6x, 30px)));line-height:var(--tct-tag-height, var(--t-tag-height, var(--app-scale-6x, 30px)));padding-inline:var(--tct-tag-padding-inline, var(--t-tag-padding-inline, var(--app-scale-3x, 15px)))}.tag.has-options{padding-right:6px}.btn-wrapper{--comp-tag-clickable-size:var(--tct-tag-clickable-size, var(--t-tag-clickable-size, 44px));--comp-tag-btn-offset:calc(calc(calc(var(--comp-tag-clickable-size) - var(--comp-tag-btn-size)) / 2) * -1);--comp-tag-background:var(--tct-tag-background, var(--t-tag-background, var(--t-gray-13, #e6e6e6)));height:var(--comp-tag-clickable-size);display:flex;align-items:center;justify-content:center;position:relative;right:var(--comp-tag-btn-offset);top:var(--comp-tag-btn-offset);cursor:pointer}button{height:var(--comp-tag-btn-size);stroke:var(--comp-tag-color);--tct-icon-stroke-primary:var(--comp-tag-color);cursor:pointer;border:0;background:transparent;display:flex;align-items:center;justify-content:center;padding:0;padding-right:6px;--tct-icon-size:18px}";const g=d;const v=class{constructor(a){t(this,a);this.click=i(this,"click",7);var e;this.determineOptionCount=()=>{const t=this.hostElement.querySelectorAll("q2-option").length;this.optionCount=t};this.handleButtonFocusout=async t=>{const i=t.relatedTarget;if((i===null||i===void 0?void 0:i.tagName)==="Q2-OPTION")return;this.open=false};this.handleChange=t=>{t.stopPropagation();if(!this.optionCount)return;const{value:i}=t.detail;this.click.emit({value:i})};this.handleClick=async t=>{t.stopPropagation();this.popoverElement.controlElement=this.dropdownBtn;if(p(this)){const{value:i}=await l(this,t);this.click.emit({value:i})}else{await this.popoverElement.toggle()}};this.handleKeydown=async t=>{const i=t.metaKey||t.ctrlKey||t.key==="Tab";if(i)return;t.preventDefault();this.popoverElement.controlElement=this.dropdownBtn;if(p(this,t)){const{value:i}=await l(this,t);this.click.emit({value:i})}else{this.optionList.handleExternalKeydown(t)}};this.handleWrapperClick=()=>{this.dropdownBtn.focus();this.dropdownBtn.click()};this.onClickElsewhere=t=>{const i=t.target;if(i.localName==="click-elsewhere"){t.stopPropagation();const{popoverElement:i}=this;if(!i)return;i.open=false}};this.optionCount=undefined;this.hoist=!!((e=window.Tecton)===null||e===void 0?void 0:e.useActionSheets);this.label=undefined;this.open=undefined;this.optionListLabel="options";this.popoverAlignment="right";this.popoverDirection=undefined;this.popoverMinHeight=150;this.theme=undefined}disconnectedCallback(){this.mutationObserver.disconnect();this.mutationObserver=null}componentWillLoad(){const t=new MutationObserver(this.determineOptionCount);t.observe(this.hostElement,{childList:true,attributes:true});this.mutationObserver=t}componentDidLoad(){s(this.hostElement)}delegateFocus(t){if(!n(t,this.hostElement))return;if(!this.optionCount)return;this.dropdownBtn.focus()}popoverStateHandler({detail:{open:t}}){if(this.open!==t)this.open=t;if(t)return;this.optionList.setActiveElement(null)}async closePopover(){if(!this.optionCount||!this.open)return;this._togglePopover()}async openPopover(){if(!this.optionCount||this.open)return;this._togglePopover()}async selectOption(t){if(!this.optionCount)return;await this.openPopover();await c();const i=await this.optionList.getOptions();const a=i.find((i=>i.value===t));a===null||a===void 0?void 0:a.click()}_togglePopover(){const{dropdownBtn:t}=this;t===null||t===void 0?void 0:t.click();t===null||t===void 0?void 0:t.focus();t.dispatchEvent(new FocusEvent("focus"))}renderHiddenElement(){return a("div",{id:"option-description",class:"sr","aria-hidden":"true"},h("tecton.element.optionList.optionCount",[this.optionCount]))}render(){const{optionCount:t,open:i}=this;const r=["tag"];if(t)r.push("has-options");return a(o,{key:"c9fc6f73127ff99fd620e57432929663cdbb37f1",role:this.optionCount>0?"list":undefined},a("click-elsewhere",{key:"8346fc899733f03207e2ff2d6835ce8296722cf1",onChange:this.onClickElsewhere},this.optionCount?a(e,null,a("div",{class:"btn-wrapper",onClick:this.handleWrapperClick},a("button",{class:"tag-wrapper",ref:t=>this.dropdownBtn=t,"test-id":"btn-control",type:"button",role:"combobox",onClick:this.handleClick,onKeyDown:this.handleKeydown,onFocusout:this.handleButtonFocusout,"aria-controls":"option-list","aria-expanded":i?"true":"false","aria-describedby":"option-description"},a("div",{class:r.join(" ")},this.label),a("q2-icon",{type:"options"}))),this.renderHiddenElement()):a("div",{class:"tag-wrapper",onClick:t=>t.stopPropagation()},a("div",{class:r.join(" ")},this.label)),this.optionCount>0&&a("q2-popover",{key:"7c058fb98f9a6b0eb8ecbafb2deca06a267d73fa",ref:t=>this.popoverElement=t,controlElement:this.dropdownBtn,open:this.open,minHeight:this.popoverMinHeight,direction:this.popoverDirection,align:this.popoverAlignment},a("q2-option-list",{key:"49286a6bb2c45428ca7098c23ed69eff6c4896b4",id:"option-list",ref:t=>this.optionList=t,onChange:this.handleChange,type:"menu",align:"right",label:h("tecton.element.optionList.label",[this.optionListLabel]),"no-select":true},a("slot",{key:"12d582a691fdbcd7dcee38963e91cd20857aba04"})))))}get hostElement(){return r(this)}};v.style=g;export{v as q2_tag};
2
+ //# sourceMappingURL=p-3b0d3cd4.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["q2TagCss","Q2TagStyle0","Q2Tag","this","determineOptionCount","numberOfOptions","hostElement","querySelectorAll","length","optionCount","handleButtonFocusout","async","event","relatedTarget","tagName","open","handleChange","stopPropagation","value","detail","click","emit","handleClick","popoverElement","controlElement","dropdownBtn","shouldShowActionSheet","showActionSheetList","toggle","handleKeydown","isTabMetaOrCtrl","metaKey","ctrlKey","key","preventDefault","optionList","handleExternalKeydown","handleWrapperClick","focus","onClickElsewhere","target","localName","_a","window","Tecton","useActionSheets","disconnectedCallback","mutationObserver","disconnect","componentWillLoad","observer","MutationObserver","observe","childList","attributes","componentDidLoad","overrideFocus","delegateFocus","isEventFromElement","popoverStateHandler","setActiveElement","closePopover","_togglePopover","openPopover","selectOption","waitForNextPaint","allOptions","getOptions","desiredOption","find","option","dispatchEvent","FocusEvent","renderHiddenElement","h","id","class","loc","render","wrapperClassNames","push","Host","role","undefined","onChange","Fragment","onClick","ref","el","type","onKeyDown","onFocusout","join","label","e","minHeight","popoverMinHeight","direction","popoverDirection","align","popoverAlignment","optionListLabel"],"sources":["src/components/q2-tag/q2-tag.scss?tag=q2-tag&encapsulation=shadow","src/components/q2-tag/q2-tag.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions';\n\n:host {\n display: inline-block;\n position: relative;\n line-height: 0;\n}\n\n:host(:not(:last-child)) {\n margin-inline-end: var-list(var-prefixer(tag-margin), --app-scale-2x, 10px);\n}\n\n.tag-wrapper {\n --comp-tag-btn-size: #{var-list(var-prefixer(tag-btn-size), --app-scale-6x, 30px)};\n --comp-tag-background: #{var-list(var-prefixer(tag-background), --t-gray-13, #e6e6e6)};\n --comp-tag-color: #{var-list(var-prefixer(tag-color), --t-gray-3, #262626)};\n background: var(--comp-tag-background);\n color: var(--comp-tag-color);\n border-radius: var-list(var-prefixer(tag-border-radius), --app-border-radius-1, 4px);\n position: relative;\n\n :host([theme='primary']) & {\n --comp-tag-background: #{var-list(--tct-tag-primary-background, --t-primary, #0079c1)};\n --comp-tag-color: #{var-list(--tct-tag-primary-font-color, --t-primary-text, #ffffff)};\n }\n\n :host([theme='secondary']) & {\n --comp-tag-background: #{var-list(--tct-tag-secondary-background, --t-secondary, #b3c2cc)};\n --comp-tag-color: #{var-list(--tct-tag-secondary-font-color, --t-secondary-text, #141414)};\n }\n\n :host([theme='tertiary']) & {\n --comp-tag-background: #{var-list(--tct-tag-tertiary-background, --t-tertiary, #e8f5fc)};\n --comp-tag-color: #{var-list(--tct-tag-tertiary-font-color, --t-tertiary-text, #141414)};\n }\n}\n\n.tag {\n display: flex;\n width: max-content;\n height: var-list(var-prefixer(tag-height), --app-scale-6x, 30px);\n line-height: var-list(var-prefixer(tag-height), --app-scale-6x, 30px);\n padding-inline: var-list(var-prefixer(tag-padding-inline), --app-scale-3x, 15px);\n}\n\n.tag.has-options {\n padding-right: 6px;\n}\n\n.btn-wrapper {\n --comp-tag-clickable-size: #{var-list(var-prefixer(tag-clickable-size), 44px)};\n --comp-tag-btn-offset: calc(calc(calc(var(--comp-tag-clickable-size) - var(--comp-tag-btn-size)) / 2) * -1);\n --comp-tag-background: #{var-list(var-prefixer(tag-background), --t-gray-13, #e6e6e6)};\n height: var(--comp-tag-clickable-size);\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n right: var(--comp-tag-btn-offset);\n top: var(--comp-tag-btn-offset);\n cursor: pointer;\n}\n\nbutton {\n height: var(--comp-tag-btn-size);\n stroke: var(--comp-tag-color);\n --tct-icon-stroke-primary: var(--comp-tag-color);\n cursor: pointer;\n border: 0;\n background: transparent;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n padding-right: 6px;\n --tct-icon-size: 18px;\n}\n","import {\n Component,\n State,\n Prop,\n h,\n ComponentInterface,\n Host,\n Listen,\n Method,\n Element,\n EventEmitter,\n Event,\n Fragment,\n} from '@stencil/core';\nimport { isEventFromElement, loc, overrideFocus, waitForNextPaint } from 'src/utils';\nimport { shouldShowActionSheet, showActionSheetList } from 'src/utils/action-sheet';\n\n@Component({ tag: 'q2-tag', shadow: true, styleUrl: 'q2-tag.scss' })\nexport class Q2Tag implements ComponentInterface {\n // #region Own Properties\n\n dropdownBtn: HTMLButtonElement;\n mutationObserver: MutationObserver;\n optionList: HTMLQ2OptionListElement;\n popoverElement: HTMLQ2PopoverElement;\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 optionCount: number;\n\n // #endregion\n // #region Public Property API\n\n /**\n * Instructs the component to use the action sheet workflow for displaying its options.\n *\n * For more information, see [Action Sheets](https://tecton.q2developer.com/guides/action-sheets/).\n */\n @Prop()\n hoist: boolean = !!window.Tecton?.useActionSheets;\n\n /**\n * The text that populates the label.\n * @localizable\n */\n @Prop({ reflect: true })\n label: string;\n\n /** Determine whether the popover is open or closed. */\n @Prop({ reflect: true, mutable: true })\n open: boolean;\n\n /** Determines the label that is applied to the option list for accessibility purposes. */\n @Prop()\n optionListLabel: string = 'options';\n\n /** Aligns the popover dropdown to the left or right side of the input field. */\n @Prop({ mutable: true })\n popoverAlignment: 'left' | 'right' = 'right';\n\n /**\n * Force the direction of the popover dropdown when it opens.\n * If no value is passed, the component will auto-detect the direction based on available space.\n */\n @Prop()\n popoverDirection: 'up' | 'down';\n\n /** @deprecated */\n @Prop()\n popoverMinHeight: number = 150;\n\n /** The color of the element. */\n @Prop({ reflect: true })\n theme: 'primary' | 'secondary' | 'tertiary';\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when a provided option is clicked.\n *\n * Requires at least one option to be provided.\n */\n @Event()\n click: EventEmitter<{ value: string }>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback() {\n this.mutationObserver.disconnect();\n this.mutationObserver = null;\n }\n\n componentWillLoad() {\n const observer = new MutationObserver(this.determineOptionCount);\n observer.observe(this.hostElement, { childList: true, attributes: true });\n this.mutationObserver = observer;\n }\n\n componentDidLoad(): void {\n overrideFocus(this.hostElement);\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('focus')\n delegateFocus(event: FocusEvent) {\n if (!isEventFromElement(event, this.hostElement)) return;\n if (!this.optionCount) return;\n this.dropdownBtn.focus();\n }\n\n @Listen('popoverStateChanged')\n popoverStateHandler({ detail: { open } }: CustomEvent<{ open: boolean }>) {\n if (this.open !== open) this.open = open;\n if (open) return;\n this.optionList.setActiveElement(null);\n }\n\n // #endregion\n // #region Public Methods API\n\n @Method()\n async closePopover() {\n if (!this.optionCount || !this.open) return;\n this._togglePopover();\n }\n\n @Method()\n async openPopover() {\n if (!this.optionCount || this.open) return;\n this._togglePopover();\n }\n\n @Method()\n async selectOption(value) {\n if (!this.optionCount) return;\n await this.openPopover();\n await waitForNextPaint();\n const allOptions = await this.optionList.getOptions();\n const desiredOption = allOptions.find(option => option.value === value);\n desiredOption?.click();\n }\n\n // #endregion\n // #region Local Methods\n\n _togglePopover() {\n const { dropdownBtn } = this;\n dropdownBtn?.click();\n dropdownBtn?.focus();\n dropdownBtn.dispatchEvent(new FocusEvent('focus'));\n }\n\n determineOptionCount = () => {\n const numberOfOptions = this.hostElement.querySelectorAll('q2-option').length;\n this.optionCount = numberOfOptions;\n };\n\n handleButtonFocusout = async (event: FocusEvent) => {\n const relatedTarget = event.relatedTarget as unknown as HTMLElement;\n if (relatedTarget?.tagName === 'Q2-OPTION') return;\n this.open = false;\n };\n\n handleChange = event => {\n event.stopPropagation();\n if (!this.optionCount) return;\n const { value } = event.detail;\n\n this.click.emit({ value });\n };\n\n handleClick = async (event: MouseEvent) => {\n event.stopPropagation();\n this.popoverElement.controlElement = this.dropdownBtn;\n if (shouldShowActionSheet(this)) {\n const { value } = await showActionSheetList(this, event);\n this.click.emit({ value });\n } else {\n await this.popoverElement.toggle();\n }\n };\n\n handleKeydown = async (event: KeyboardEvent) => {\n const isTabMetaOrCtrl = event.metaKey || event.ctrlKey || event.key === 'Tab';\n if (isTabMetaOrCtrl) return;\n\n event.preventDefault();\n this.popoverElement.controlElement = this.dropdownBtn;\n if (shouldShowActionSheet(this, event)) {\n const { value } = await showActionSheetList(this, event);\n this.click.emit({ value });\n } else {\n this.optionList.handleExternalKeydown(event);\n }\n };\n\n handleWrapperClick = () => {\n this.dropdownBtn.focus();\n this.dropdownBtn.click();\n };\n\n onClickElsewhere = (event: CustomEvent) => {\n const target = event.target as HTMLClickElsewhereElement;\n if (target.localName === 'click-elsewhere') {\n event.stopPropagation();\n const { popoverElement } = this;\n if (!popoverElement) return;\n popoverElement.open = false;\n }\n };\n\n // #endregion\n // #region Render Methods\n\n renderHiddenElement() {\n return (\n <div\n id=\"option-description\"\n class=\"sr\"\n aria-hidden=\"true\"\n >\n {loc('tecton.element.optionList.optionCount', [this.optionCount])}\n </div>\n );\n }\n\n render() {\n const { optionCount, open } = this;\n const wrapperClassNames = ['tag'];\n if (optionCount) wrapperClassNames.push('has-options');\n\n return (\n <Host role={this.optionCount > 0 ? 'list' : undefined}>\n <click-elsewhere onChange={this.onClickElsewhere}>\n {this.optionCount ? (\n <Fragment>\n <div\n class=\"btn-wrapper\"\n onClick={this.handleWrapperClick}\n >\n <button\n class=\"tag-wrapper\"\n ref={el => (this.dropdownBtn = el)}\n test-id=\"btn-control\"\n type=\"button\"\n role=\"combobox\"\n onClick={this.handleClick}\n onKeyDown={this.handleKeydown}\n onFocusout={this.handleButtonFocusout}\n aria-controls=\"option-list\"\n aria-expanded={open ? 'true' : 'false'}\n aria-describedby=\"option-description\"\n >\n <div class={wrapperClassNames.join(' ')}>{this.label}</div>\n <q2-icon type=\"options\"></q2-icon>\n </button>\n </div>\n {this.renderHiddenElement()}\n </Fragment>\n ) : (\n <div\n class=\"tag-wrapper\"\n onClick={e => e.stopPropagation()}\n >\n <div class={wrapperClassNames.join(' ')}>{this.label}</div>\n </div>\n )}\n\n {this.optionCount > 0 && (\n <q2-popover\n ref={el => (this.popoverElement = el)}\n controlElement={this.dropdownBtn}\n open={this.open}\n minHeight={this.popoverMinHeight}\n direction={this.popoverDirection}\n align={this.popoverAlignment}\n >\n <q2-option-list\n id=\"option-list\"\n ref={el => (this.optionList = el)}\n onChange={this.handleChange}\n type=\"menu\"\n align=\"right\"\n label={loc('tecton.element.optionList.label', [this.optionListLabel])}\n no-select\n >\n <slot />\n </q2-option-list>\n </q2-popover>\n )}\n </click-elsewhere>\n </Host>\n );\n }\n\n // #endregion\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{r as t,c as e,h as a,F as r,g as o}from"./p-a5f18e27.js";import{r as l,l as n}from"./p-84190698.js";const d="*{box-sizing:border-box}*:active{outline:none}*:focus{outline:none;box-shadow:var(--const-double-focus-ring, 0 0 0 2px #ffffff, 0 0 0 4px #0066cc)}:host{box-shadow:none !important}::-moz-focus-inner{border:none}input,textarea,button{font-family:inherit;font-size:inherit;font-stretch:inherit}:host(.sr),:host(.sr) button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.sr,.sr button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.hidden{display:none}:host([hidden]){display:none}.invisible{visibility:hidden}:host{display:block}.container{--comp-cell-padding:var(--tct-data-table-cell-padding, var(--tct-table-cell-padding, var(--app-scale-3x, 15px)));--comp-select-column-width:var(--tct-data-table-select-column-width, var(--tct-table-select-column-width, var(--tct-checkbox-size, 20px)));--comp-dropdown-column-width:var(--tct-data-table-dropdown-column-width, var(--tct-table-dropdown-column-width, var(--tct-btn-icon-width, 44px)));--comp-expandable-row-control-column-width:var(--tct-data-table-expandable-row-control-column-width, var(--tct-table-expandable-row-control-column-width, var(--tct-btn-icon-width, 44px)));overflow:auto;--comp-scrollbar-size:var(--tct-scrollbar-size, var(--t-scrollbar-size, var(--app-scale-1x, 5px)));--comp-scrollbar-border-radius:var(--tct-scrollbar-border-radius, var(--t-scrollbar-border-radius, var(--app-border-radius-1, 4px)));--comp-scrollbar-color:var(--tct-scrollbar-color, var(--t-scrollbar-color, var(--t-a11y-gray-color, #747474)));scrollbar-width:thin;scrollbar-color:var(--comp-scrollbar-color) transparent}.container::-webkit-scrollbar{width:var(--comp-scrollbar-size);height:var(--comp-scrollbar-size);margin:5px}.container::-webkit-scrollbar-thumb{background:var(--comp-scrollbar-color);border-radius:var(--comp-scrollbar-border-radius)}.container::-webkit-scrollbar-track{background:transparent;border-radius:var(--comp-scrollbar-border-radius)}:host([shadowed]:not([shadowed=false])) .container{box-shadow:var(--tct-data-table-shadow, var(--tct-table-shadow, var(--app-shadow-1, 0px 0px 2px rgba(0, 0, 0, 0.12), 0px 2px 4px rgba(0, 0, 0, 0.14))))}:host([density=compact]) .container{--comp-cell-padding:var(--tct-data-table-cell-padding-compact, var(--tct-table-cell-padding-compact, var(--app-scale-1x, 5px)))}:host([density=comfortable]) .container{--comp-cell-padding:var(--tct-data-table-cell-padding-comfortable, var(--tct-table-cell-padding-comfortable, var(--app-scale-5x, 25px)))}table{table-layout:var(--tct-data-table-layout, var(--tct-table-layout, auto));border-collapse:collapse;border-spacing:0;width:var(--tct-data-table-width, var(--tct-table-width));min-width:100%;background:var(--tct-data-table-background, var(--tct-table-background, var(--t-base, #ffffff)));caption-side:var(--tct-data-table-caption-side, var(--tct-table-caption-side, bottom))}thead{border-width:var(--tct-data-table-header-border-width, var(--tct-table-header-border-width, 0 0 2px 0));border-style:var(--tct-data-table-header-border-style, var(--tct-table-header-border-style, solid));border-color:var(--tct-data-table-header-border-color, var(--tct-table-header-border-color, var(--t-gray-9, #999999)));background:var(--tct-data-table-header-background, var(--tct-table-header-background))}col.select-column{width:var(--comp-select-column-width)}col.expandable-row-control-column{width:var(--comp-expandable-row-control-column-width)}col.dropdown-column{width:var(--comp-dropdown-column-width)}:host(:is([bordered=vertical],[bordered=grid])) col{border-width:var(--tct-data-table-column-border-width, 0 1px 0 0);border-style:var(--tct-data-table-column-border-style, solid);border-color:var(--tct-data-table-column-border-color, var(--t-gray-9, #999999))}:host(:is([bordered=vertical],[bordered=grid])) col:last-child{border:none}td,th{padding:var(--comp-cell-padding);text-align:start;vertical-align:middle}td.align-end,th.align-end{text-align:end}td.align-center,th.align-center{text-align:center}td.vertical-align-top,th.vertical-align-top{vertical-align:top}td.vertical-align-bottom,th.vertical-align-bottom{vertical-align:bottom}th .header-content{font-weight:var(--tct-data-table-header-font-weight, var(--tct-table-header-font-weight, 600));font-size:var(--tct-data-table-header-font-size, var(--app-font-size, 14px))}th.sorted .header-content{font-weight:var(--tct-data-table-header-sorted-font-weight, var(--tct-table-header-sorted-font-weight, 600))}th .sorted-indicator{--comp-header-sortable-icon-size:var(--tct-data-table-header-sortable-icon-size, var(--tct-table-header-sortable-icon-size, var(--app-scale-3x, 15px)));--tct-icon-stroke-width:2;width:var(--comp-header-sortable-icon-size);height:var(--comp-header-sortable-icon-size)}th .sorted-indicator.direction-ASC{transform:rotate(180deg)}th q2-btn .header-content{display:flex;align-items:center;gap:var(--tct-data-table-header-content-gap, var(--tct-table-header-content-gap, var(--app-scale-2x, 10px)))}tr.expandable,tr.clickable{cursor:pointer}tr.expandable:focus,tr.clickable:focus{outline:none;box-shadow:none}tr.striped:nth-child(even){background:var(--tct-data-table-row-even-background, var(--t-gray-14, #f2f2f2))}tr.striped:nth-child(odd){background:var(--tct-data-table-row-odd-background, transparent)}tr.expandable:hover{background:var(--tct-data-table-expandable-row-hover-background, var(--tct-table-expandable-row-hover-background, var(--t-gray-14, #f2f2f2)))}tr.clickable:hover{background:var(--tct-data-table-clickable-row-hover-background, var(--tct-table-clickable-row-hover-background, var(--t-gray-14, #f2f2f2)))}tr.selected{background:var(--tct-data-table-selected-row-background, var(--tct-table-selected-row-background, var(--t-gray-14, #f2f2f2)))}tr.expanded{background:var(--tct-data-table-expanded-row-background, var(--tct-table-expanded-row-background, var(--t-gray-14, #f2f2f2)))}tr.expanded .toggle-expandable-row{transform:rotate(180deg)}:host(:is([bordered],[bordered=horizontal],[bordered=grid]):not([bordered=vertical],[bordered=false])) tbody tr{border-width:var(--tct-data-table-row-border-width, var(--tct-table-row-border-width, 0 0 1px 0));border-style:var(--tct-data-table-row-border-style, var(--tct-table-row-border-style, solid));border-color:var(--tct-data-table-row-border-color, var(--tct-table-row-border-color, var(--t-gray-9, #999999)))}tr.loading-row{background:var(--tct-data-table-loading-row-background, var(--tct-table-loading-row-background, var(--t-base, #ffffff)))}tr.loading-row td{text-align:center}tr.loading-row q2-loading{font-size:4em}tr.empty-state{background:var(--tct-data-table-loading-row-background, var(--t-base, #ffffff))}tr.empty-state td{text-align:center}tr.empty-state .empty-state-content{display:flex;flex-direction:column;align-items:center;padding-top:var(--app-scale-10x, 50px);padding-bottom:var(--app-scale-10x, 50px);gap:var(--app-scale-4x, 20px);--tct-icon-size:var(--app-scale-6x, 30px)}tr.expandable-row{background:var(--tct-data-table-expanded-row-background, var(--tct-table-expanded-row-background, var(--t-gray-14, #f2f2f2)))}td.clamped div{text-overflow:ellipsis;overflow:hidden;display:-webkit-box;-webkit-line-clamp:var(--comp-line-clamp-count, 1);-webkit-box-orient:vertical}td.expandable-row-control-column{--tct-btn-icon-hover-bg:transparent;padding:var(--tct-data-table-expandable-row-control-column-padding, var(--tct-table-expandable-row-control-column-padding, 0 5px));text-align:center}td.dropdown-column{padding:var(--tct-data-table-dropdown-column-padding, var(--tct-table-dropdown-column-padding, 0 5px));text-align:center}td.click-column:not(.sr){padding:var(--tct-data-table-clickable-column-padding, var(--tct-table-clickable-column-padding, 0 5px));text-align:center}caption{padding:var(--tct-data-table-caption-padding, var(--tct-table-caption-padding, var(--app-scale-2x, 10px)));font-size:var(--tct-data-table-caption-font-size, var(--tct-table-caption-font-size, inherit));font-weight:var(--tct-data-table-caption-font-weight, var(--tct-table-caption-font-weight, 600));text-align:var(--tct-data-table-caption-text-align, var(--tct-table-caption-text-align, center));color:var(--tct-data-table-caption-color, var(--tct-table-caption-color, inherit))}q2-checkbox{padding:0}";const c=d;const i=class{constructor(a){t(this,a);this.click=e(this,"click",7);this.select=e(this,"select",7);this.selectAllRows=e(this,"selectAllRows",7);this.sort=e(this,"sort",7);this.toggle=e(this,"toggle",7);this.checkSlots=()=>{var t,e,a,r;this.hasExpandableRows=!!((e=(t=this.hostElement)===null||t===void 0?void 0:t.querySelector(`[slot$="-expandable-content"]`))!==null&&e!==void 0?e:false);this.hasDropdowns=!!((r=(a=this.hostElement)===null||a===void 0?void 0:a.querySelector(`[slot$="-dropdown"]`))!==null&&r!==void 0?r:false);this.checkSlotCount+=1};this.onClickRow=(t,e)=>{t.stopPropagation();this.click.emit({row:e})};this.onClickTableRow=(t,e)=>{if(this.clickable){this.onClickRow(t,e)}else if(this.hasExpandableRows){this.onToggleRow(t,e)}};this.onControlContainerClick=t=>{t.stopPropagation()};this.onSelectRow=(t,e)=>{t.stopPropagation();const{selectMode:a,serializedRows:r,selectedRows:o}=this;const{checked:l}=t.detail;const n=Object.assign(Object.assign({},e),{selected:l});let d;if(a==="single"){d=l?[n]:[]}else{d=l?[...o,n]:o.filter((t=>t.id!==n.id))}const c=d.length===r.length;const i=!c&&d.length>0;const s=this.select.emit({row:n,rows:d,allSelected:c});if(s.defaultPrevented)return;this.serializedRows=this.serializedRows.map((t=>t.id===n.id?n:t));this.allRowsSelected=c;this.someRowsSelected=i};this.onSort=t=>{const e=t.sorted==="ASC"?"DESC":"ASC";const a=t.key;const r=this.sort.emit({header:t,direction:e});if(r.defaultPrevented)return;const o=t.sortable!=="manual";if(!o)return;this.serializedHeaders=this.serializedHeaders.map((t=>{const r=a===t.key?e:undefined;return Object.assign(Object.assign({},t),{sorted:r})}));this.serializedRows=this.sortRows(this.serializedRows,Object.assign(Object.assign({},t),{sorted:e}))};this.onToggleRow=(t,e)=>{t.stopPropagation();const a=Object.assign(Object.assign({},e),{expanded:!e.expanded});const r=this.toggle.emit({row:a});if(r.defaultPrevented)return;this.serializedRows=this.serializedRows.map((t=>{if(t.id===a.id)return a;else return Object.assign({},t)}))};this.allRowsSelected=false;this.checkSlotCount=0;this.hasDropdowns=false;this.hasExpandableRows=false;this.hasRowData=false;this.serializedHeaders=[];this.serializedRows=[];this.someRowsSelected=false;this.bordered=undefined;this.caption=undefined;this.clickable=undefined;this.density=undefined;this.emptyIcon="inbox";this.emptyMessage="tecton.element.dataTable.emptyMessage";this.headers=undefined;this.hideCaption=undefined;this.hideClickable=undefined;this.loading=undefined;this.rows=undefined;this.selectable=undefined;this.selectMode="multiple";this.shadowed=undefined;this.striped=undefined}disconnectedCallback(){if(this.mutationObserver){this.mutationObserver.disconnect();this.mutationObserver=null}if(this.resizeObserver){this.resizeObserver.disconnect();this.resizeObserver=null}}componentWillLoad(){this.headersHandler(this.headers);this.rowsHandler(this.rows)}componentDidLoad(){if(typeof MutationObserver!=="undefined"){const t=new MutationObserver((()=>this.checkSlots()));t.observe(this.hostElement,{childList:true,subtree:true,attributes:true});this.mutationObserver=t}if(typeof ResizeObserver!=="undefined"){this.resizeObserver=new ResizeObserver((()=>l()));this.resizeObserver.observe(this.hostElement)}}onClickListener(t){if(t instanceof PointerEvent)t.stopImmediatePropagation()}onSelectAllRows(t){t.stopPropagation();const{checked:e}=t.detail;const a=e?this.serializedRows.map((t=>{if(t.disabled){return t}else{return Object.assign(Object.assign({},t),{selected:e})}})):[];const r=this.select.emit({row:undefined,rows:a,allSelected:e});if(r.defaultPrevented)return;this.serializedRows=this.serializedRows.map((t=>{if(t.disabled)return t;t.selected=e;return t}));this.allRowsSelected=e;this.someRowsSelected=false}headersHandler(t=[]){this.serializedHeaders=t.map((t=>{const{title:e}=t;let{key:a}=t;if(!a)a=e.toLowerCase().replace(/\s/g,"-");return Object.assign({key:a},t)}))}rowsHandler(t=[]){const{serializedHeaders:e,mappedHeaders:a}=this;const r={id:null,cells:{},selected:false,expanded:false,disabled:false};let o=true;let l=false;const n=t.map((({id:t,cells:e,selected:n,expanded:d,disabled:c})=>{const i=Object.entries(e).reduce(((t,[e,r])=>{const o=a[e]||{};const{align:l,type:n="text",lineClamp:d,verticalAlign:c}=o;const i="type"in o&&o.type==="badge";const s={value:"",ariaLabel:undefined,type:n,align:l,lineClamp:d,verticalAlign:c,badgeStatus:i?o.badgeStatus:undefined,badgeTheme:i?o.badgeTheme:undefined};const b=typeof r==="object"?Object.assign(Object.assign({},s),r):Object.assign(Object.assign({},s),{value:r});t[e]=b;return t}),{});if(o&&!n)o=false;if(!o&&n)l=true;return Object.assign(Object.assign({},r),{id:t,selected:!!n,expanded:!!d,disabled:!!c,cells:i})}));const d=e.find((({sorted:t})=>t));const c=!!d&&d.sortable!=="manual";this.hasRowData=!!t.length;this.allRowsSelected=this.hasRowData&&o;this.someRowsSelected=this.hasRowData&&l;this.serializedRows=!!c?this.sortRows(n,d):n;this.checkSlots()}selectableHandler(){if(this.selectable===false){this.selectAllRows.emit({checked:false})}}get mappedHeaders(){return this.serializedHeaders.reduce(((t,e)=>{t[e.key]=e;return t}),{})}get numberOfColumns(){var t,e;return((e=(t=this.serializedHeaders)===null||t===void 0?void 0:t.length)!==null&&e!==void 0?e:0)+(this.selectable?1:0)+(this.clickable?1:0)+(this.hasExpandableRows?1:0)+(this.hasDropdowns?1:0)}get selectedRow(){return this.selectedRows.find((({selected:t})=>!!t))}get selectedRows(){return this.serializedRows.filter((({selected:t})=>t))}sortRows(t,e){const{key:a,sorted:r}=e;const o=r||"ASC";const l=[...t].sort(((t,e)=>{const r=t.cells[a].value;const l=e.cells[a].value;if(r<l)return o==="ASC"?-1:1;if(r>l)return o==="ASC"?1:-1;return 0}));return l}render(){const{caption:t}=this;return a("div",{key:"b27b40cf415c66de9e08a45382eb4c7b4d755836",class:"container"},a("table",{key:"49b04f206c0ff875ff5b64107c4482d7101f7d53"},t&&a("caption",{key:"84567c79359510ba05ff2dfec643109ee610f173",class:this.hideCaption?"sr":undefined},t),this.renderTableColGroup(),this.renderTableHeader(),this.renderEmptyState(),this.renderTableRows()))}renderCellContent(t){if(!t)return;const{type:e,ariaLabel:r,value:o}=t;if([undefined,null].includes(o))return;switch(e){case"badge":let e;switch(typeof o){case"string":e=parseFloat(o);break;case"boolean":e=o?1:0;break;default:e=o;break}return a("q2-badge",{"aria-label":r,value:e,theme:t.badgeTheme,status:t.badgeStatus,size:"large"});case"icon":const l=typeof o==="string"?o:`${o}`;return a("q2-icon",{label:r,type:l});case"boolean":return!!o?a("q2-icon",{label:n("tecton.element.dataTable.booleanTrue"),type:"checkmark"}):a("div",{"aria-label":n("tecton.element.dataTable.booleanFalse")});case"code":return a("code",{"aria-label":r},o);default:return a("div",{"aria-label":r},o)}}renderEmptyState(){const{hasRowData:t,numberOfColumns:e,emptyIcon:r,emptyMessage:o,loading:l}=this;if(t||l)return null;return a("slot",{name:"empty-table"},a("tbody",null,a("tr",{class:"empty-state"},a("td",{colSpan:e},a("div",{class:"empty-state-content"},a("q2-icon",{type:r}),a("p",null,n(o)))))))}renderTableColGroup(){const{serializedHeaders:t,selectable:e,clickable:r,hasExpandableRows:o,hasDropdowns:l}=this;if(!t.length)return null;return a("colgroup",null,e&&a("col",{class:"select-column"}),t.map((({width:t,backgroundColor:e})=>a("col",{style:{width:t,backgroundColor:e}}))),r&&a("col",{class:"click-column"}),o&&a("col",{class:"expandable-row-control-column"}),l&&a("col",{class:"dropdown-column"}))}renderTableHeader(){const{serializedHeaders:t,selectable:e,clickable:r,hideClickable:o,selectMode:l,hasExpandableRows:d,hasDropdowns:c,allRowsSelected:i,someRowsSelected:s,hasRowData:b,loading:h}=this;if(!t.length)return null;return a("thead",null,a("tr",null,e&&a("th",null,l==="multiple"&&a("q2-checkbox",{label:n("tecton.element.dataTable.selectAllRows"),"hide-label":true,onChange:()=>this.selectAllRows.emit({checked:!i}),checked:b&&i&&!s,indeterminate:b&&s&&!i,disabled:h||!b,"test-id":"select-all-rows-control"})),t.map((t=>{const{align:e,sorted:r,verticalAlign:o}=t;const l=[];if(e)l.push(`align-${e}`);if(o)l.push(`vertical-align-${o}`);if(!!r)l.push("sorted");return a("th",{class:l.join(" "),id:`header-${t.key}`},t.sortable?a("q2-btn",{onClick:()=>this.onSort(t),"test-id":"sort-control",disabled:this.loading},a("div",{class:"header-content","aria-label":t.ariaLabel||undefined},a("slot",{name:`header-cell-${t.key}`},t.title),!!r?a("q2-icon",{class:`sorted-indicator direction-${r}`,type:"arrow-down",label:r==="ASC"?n("tecton.element.dataTable.sortedAscending"):n("tecton.element.dataTable.sortedDescending"),"test-id":"sorted-indicator"}):a("q2-icon",{class:`sorted-indicator`,type:"sort",label:n("tecton.element.dataTable.clickToSort"),"test-id":"sorted-indicator"}))):a("div",{class:"header-content","aria-label":t.ariaLabel||undefined},a("slot",{name:`header-cell-${t.key}`},t.title)))})),r&&a("th",{id:"click",class:o?"sr":undefined},a("span",{class:"sr"},n("tecton.element.dataTable.clickRow"))),d&&a("th",{id:"toggle"},a("span",{class:"sr"},n("tecton.element.dataTable.toggleRow"))),c&&a("th",null,a("span",{class:"sr"},n("tecton.element.dataTable.dropdown")))))}renderTableRows(){const{serializedHeaders:t,serializedRows:e,selectable:o,clickable:l,striped:d,hideClickable:c,selectMode:i,hasExpandableRows:s,hasDropdowns:b,numberOfColumns:h,loading:p}=this;if(p){return a("tbody",null,a("tr",{class:"loading-row"},a("td",{colSpan:h},a("q2-loading",{inline:true}))))}let u=false;let v;if(i==="single"){v=this.selectedRow;u=!!v}const f=[];if(l)f.push("click-column");if(c)f.push("sr");const g=f.join(" ");return a("tbody",null,e.map((e=>{const c=`row-${e.id}-cell`;const i=`row-${e.id}-expandable-content`;const p=`row-${e.id}-dropdown`;const f=s&&!!this.hostElement.querySelector(`[slot="${i}"]`);const w=b&&!!this.hostElement.querySelector(`[slot="${p}"]`);const m=[];if(f)m.push("expandable");if(l)m.push("clickable");if(d)m.push("striped");if(e.expanded)m.push("expanded");if(e.selected)m.push("selected");const x=l||f;return a(r,null,a("tr",{id:`row-${e.id}`,class:m.join(" "),onClick:x&&(t=>this.onClickTableRow(t,e)),tabIndex:x?-1:undefined},o&&a("td",{class:"select-column",onClick:this.onControlContainerClick},a("q2-checkbox",{label:n("tecton.element.dataTable.selectRow"),"hide-label":true,checked:e.selected,disabled:u&&e!==v||e.disabled,onChange:t=>this.onSelectRow(t,e),"test-id":"select-row-control"})),t.map((({key:t})=>{const r=e.cells[t];const o=r===null||r===void 0?void 0:r.lineClamp;const l=r===null||r===void 0?void 0:r.align;const n=r===null||r===void 0?void 0:r.verticalAlign;const d=[];if(l)d.push(`align-${l}`);if(n)d.push(`vertical-align-${n}`);if(o)d.push("clamped");const i=o?{"--comp-line-clamp-count":`${o}`}:undefined;return a("td",{class:d.join(" "),style:i},a("slot",{name:`${c}-${t}`},this.renderCellContent(r)))})),l&&a("td",{class:g},a("q2-btn",{intent:"neutral",size:"small",onClick:t=>this.onClickRow(t,e),"test-id":"clickable-row-control"},n("tecton.element.dataTable.clickRow"))),s&&a("td",{class:"expandable-row-control-column",onClick:this.onControlContainerClick},f&&a("q2-btn",{onClick:t=>this.onToggleRow(t,e),ariaExpanded:`${e.expanded}`,ariaControls:i,ariaLabel:n("tecton.element.dataTable.toggleRow"),"test-id":"expandable-row-control"},a("q2-icon",{type:"chevron-down",class:"toggle-expandable-row"}))),b&&a("td",{class:"dropdown-column",onClick:this.onControlContainerClick},w&&a("slot",{name:p}))),f&&a("tr",{id:i,class:"expandable-row",hidden:!e.expanded,"aria-hidden":!e.expanded},a("td",{colSpan:h,headers:"toggle"},a("div",{class:"expandable-content"},a("slot",{name:i})))))})))}get hostElement(){return o(this)}static get watchers(){return{headers:["headersHandler"],rows:["rowsHandler"],selectable:["selectableHandler"]}}};i.style=c;export{i as q2_data_table};
2
- //# sourceMappingURL=p-d8d9ba1f.entry.js.map
1
+ import{r as t,c as e,h as a,F as o,g as r}from"./p-a5f18e27.js";import{r as l,l as n}from"./p-9a1a4bc0.js";const c="*{box-sizing:border-box}*:active{outline:none}*:focus{outline:none;box-shadow:var(--const-double-focus-ring, 0 0 0 2px #ffffff, 0 0 0 4px #0066cc)}:host{box-shadow:none !important}::-moz-focus-inner{border:none}input,textarea,button{font-family:inherit;font-size:inherit;font-stretch:inherit}:host(.sr),:host(.sr) button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.sr,.sr button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.hidden{display:none}:host([hidden]){display:none}.invisible{visibility:hidden}:host{display:block}.container{--comp-cell-padding:var(--tct-data-table-cell-padding, var(--tct-table-cell-padding, var(--app-scale-3x, 15px)));--comp-select-column-width:var(--tct-data-table-select-column-width, var(--tct-table-select-column-width, var(--tct-checkbox-size, 20px)));--comp-dropdown-column-width:var(--tct-data-table-dropdown-column-width, var(--tct-table-dropdown-column-width, var(--tct-btn-icon-width, 44px)));--comp-expandable-row-control-column-width:var(--tct-data-table-expandable-row-control-column-width, var(--tct-table-expandable-row-control-column-width, var(--tct-btn-icon-width, 44px)));overflow:auto;--comp-scrollbar-size:var(--tct-scrollbar-size, var(--t-scrollbar-size, var(--app-scale-1x, 5px)));--comp-scrollbar-border-radius:var(--tct-scrollbar-border-radius, var(--t-scrollbar-border-radius, var(--app-border-radius-1, 4px)));--comp-scrollbar-color:var(--tct-scrollbar-color, var(--t-scrollbar-color, var(--t-a11y-gray-color, #747474)));scrollbar-width:thin;scrollbar-color:var(--comp-scrollbar-color) transparent}.container::-webkit-scrollbar{width:var(--comp-scrollbar-size);height:var(--comp-scrollbar-size);margin:5px}.container::-webkit-scrollbar-thumb{background:var(--comp-scrollbar-color);border-radius:var(--comp-scrollbar-border-radius)}.container::-webkit-scrollbar-track{background:transparent;border-radius:var(--comp-scrollbar-border-radius)}:host([shadowed]:not([shadowed=false])) .container{box-shadow:var(--tct-data-table-shadow, var(--tct-table-shadow, var(--app-shadow-1, 0px 0px 2px rgba(0, 0, 0, 0.12), 0px 2px 4px rgba(0, 0, 0, 0.14))))}:host([density=compact]) .container{--comp-cell-padding:var(--tct-data-table-cell-padding-compact, var(--tct-table-cell-padding-compact, var(--app-scale-1x, 5px)))}:host([density=comfortable]) .container{--comp-cell-padding:var(--tct-data-table-cell-padding-comfortable, var(--tct-table-cell-padding-comfortable, var(--app-scale-5x, 25px)))}table{table-layout:var(--tct-data-table-layout, var(--tct-table-layout, auto));border-collapse:collapse;border-spacing:0;width:var(--tct-data-table-width, var(--tct-table-width));min-width:100%;background:var(--tct-data-table-background, var(--tct-table-background, var(--t-base, #ffffff)));caption-side:var(--tct-data-table-caption-side, var(--tct-table-caption-side, bottom))}thead{border-width:var(--tct-data-table-header-border-width, var(--tct-table-header-border-width, 0 0 2px 0));border-style:var(--tct-data-table-header-border-style, var(--tct-table-header-border-style, solid));border-color:var(--tct-data-table-header-border-color, var(--tct-table-header-border-color, var(--t-gray-9, #999999)));background:var(--tct-data-table-header-background, var(--tct-table-header-background))}col.select-column{width:var(--comp-select-column-width)}col.expandable-row-control-column{width:var(--comp-expandable-row-control-column-width)}col.dropdown-column{width:var(--comp-dropdown-column-width)}:host(:is([bordered=vertical],[bordered=grid])) col{border-width:var(--tct-data-table-column-border-width, 0 1px 0 0);border-style:var(--tct-data-table-column-border-style, solid);border-color:var(--tct-data-table-column-border-color, var(--t-gray-9, #999999))}:host(:is([bordered=vertical],[bordered=grid])) col:last-child{border:none}td,th{padding:var(--comp-cell-padding);text-align:start;vertical-align:middle}td.align-end,th.align-end{text-align:end}td.align-center,th.align-center{text-align:center}td.vertical-align-top,th.vertical-align-top{vertical-align:top}td.vertical-align-bottom,th.vertical-align-bottom{vertical-align:bottom}th .header-content{font-weight:var(--tct-data-table-header-font-weight, var(--tct-table-header-font-weight, 600));font-size:var(--tct-data-table-header-font-size, var(--app-font-size, 14px))}th.sorted .header-content{font-weight:var(--tct-data-table-header-sorted-font-weight, var(--tct-table-header-sorted-font-weight, 600))}th .sorted-indicator{--comp-header-sortable-icon-size:var(--tct-data-table-header-sortable-icon-size, var(--tct-table-header-sortable-icon-size, var(--app-scale-3x, 15px)));--tct-icon-stroke-width:2;width:var(--comp-header-sortable-icon-size);height:var(--comp-header-sortable-icon-size)}th .sorted-indicator.direction-ASC{transform:rotate(180deg)}th q2-btn .header-content{display:flex;align-items:center;gap:var(--tct-data-table-header-content-gap, var(--tct-table-header-content-gap, var(--app-scale-2x, 10px)))}tr.expandable,tr.clickable{cursor:pointer}tr.expandable:focus,tr.clickable:focus{outline:none;box-shadow:none}tr.striped:nth-child(even){background:var(--tct-data-table-row-even-background, var(--t-gray-14, #f2f2f2))}tr.striped:nth-child(odd){background:var(--tct-data-table-row-odd-background, transparent)}tr.expandable:hover{background:var(--tct-data-table-expandable-row-hover-background, var(--tct-table-expandable-row-hover-background, var(--t-gray-14, #f2f2f2)))}tr.clickable:hover{background:var(--tct-data-table-clickable-row-hover-background, var(--tct-table-clickable-row-hover-background, var(--t-gray-14, #f2f2f2)))}tr.selected{background:var(--tct-data-table-selected-row-background, var(--tct-table-selected-row-background, var(--t-gray-14, #f2f2f2)))}tr.expanded{background:var(--tct-data-table-expanded-row-background, var(--tct-table-expanded-row-background, var(--t-gray-14, #f2f2f2)))}tr.expanded .toggle-expandable-row{transform:rotate(180deg)}:host(:is([bordered],[bordered=horizontal],[bordered=grid]):not([bordered=vertical],[bordered=false])) tbody tr{border-width:var(--tct-data-table-row-border-width, var(--tct-table-row-border-width, 0 0 1px 0));border-style:var(--tct-data-table-row-border-style, var(--tct-table-row-border-style, solid));border-color:var(--tct-data-table-row-border-color, var(--tct-table-row-border-color, var(--t-gray-9, #999999)))}tr.loading-row{background:var(--tct-data-table-loading-row-background, var(--tct-table-loading-row-background, var(--t-base, #ffffff)))}tr.loading-row td{text-align:center}tr.loading-row q2-loading{font-size:4em}tr.empty-state{background:var(--tct-data-table-loading-row-background, var(--t-base, #ffffff))}tr.empty-state td{text-align:center}tr.empty-state .empty-state-content{display:flex;flex-direction:column;align-items:center;padding-top:var(--app-scale-10x, 50px);padding-bottom:var(--app-scale-10x, 50px);gap:var(--app-scale-4x, 20px);--tct-icon-size:var(--app-scale-6x, 30px)}tr.expandable-row{background:var(--tct-data-table-expanded-row-background, var(--tct-table-expanded-row-background, var(--t-gray-14, #f2f2f2)))}td.clamped div{text-overflow:ellipsis;overflow:hidden;display:-webkit-box;-webkit-line-clamp:var(--comp-line-clamp-count, 1);-webkit-box-orient:vertical}td.expandable-row-control-column{--tct-btn-icon-hover-bg:transparent;padding:var(--tct-data-table-expandable-row-control-column-padding, var(--tct-table-expandable-row-control-column-padding, 0 5px));text-align:center}td.dropdown-column{padding:var(--tct-data-table-dropdown-column-padding, var(--tct-table-dropdown-column-padding, 0 5px));text-align:center}td.click-column:not(.sr){padding:var(--tct-data-table-clickable-column-padding, var(--tct-table-clickable-column-padding, 0 5px));text-align:center}caption{padding:var(--tct-data-table-caption-padding, var(--tct-table-caption-padding, var(--app-scale-2x, 10px)));font-size:var(--tct-data-table-caption-font-size, var(--tct-table-caption-font-size, inherit));font-weight:var(--tct-data-table-caption-font-weight, var(--tct-table-caption-font-weight, 600));text-align:var(--tct-data-table-caption-text-align, var(--tct-table-caption-text-align, center));color:var(--tct-data-table-caption-color, var(--tct-table-caption-color, inherit))}q2-checkbox{padding:0}";const d=c;const i=class{constructor(a){t(this,a);this.click=e(this,"click",7);this.select=e(this,"select",7);this.selectAllRows=e(this,"selectAllRows",7);this.sort=e(this,"sort",7);this.toggle=e(this,"toggle",7);this.checkSlots=()=>{var t,e,a,o;this.hasExpandableRows=!!((e=(t=this.hostElement)===null||t===void 0?void 0:t.querySelector(`[slot$="-expandable-content"]`))!==null&&e!==void 0?e:false);this.hasDropdowns=!!((o=(a=this.hostElement)===null||a===void 0?void 0:a.querySelector(`[slot$="-dropdown"]`))!==null&&o!==void 0?o:false);this.checkSlotCount+=1};this.onClickRow=(t,e)=>{t.stopPropagation();this.click.emit({row:e})};this.onClickTableRow=(t,e)=>{if(this.clickable){this.onClickRow(t,e)}else if(this.hasExpandableRows){this.onToggleRow(t,e)}};this.onControlContainerClick=t=>{t.stopPropagation()};this.onSelectRow=(t,e)=>{t.stopPropagation();const{selectMode:a,serializedRows:o,selectedRows:r}=this;const{checked:l}=t.detail;const n=Object.assign(Object.assign({},e),{selected:l});let c;if(a==="single"){c=l?[n]:[]}else{c=l?[...r,n]:r.filter((t=>t.id!==n.id))}const d=c.length===o.length;const i=!d&&c.length>0;const s=this.select.emit({row:n,rows:c,allSelected:d});if(s.defaultPrevented)return;this.serializedRows=this.serializedRows.map((t=>t.id===n.id?n:t));this.allRowsSelected=d;this.someRowsSelected=i};this.onSort=t=>{const e=t.sorted==="ASC"?"DESC":"ASC";const a=t.key;const o=this.sort.emit({header:t,direction:e});if(o.defaultPrevented)return;const r=t.sortable!=="manual";if(!r)return;this.serializedHeaders=this.serializedHeaders.map((t=>{const o=a===t.key?e:undefined;return Object.assign(Object.assign({},t),{sorted:o})}));this.serializedRows=this.sortRows(this.serializedRows,Object.assign(Object.assign({},t),{sorted:e}))};this.onToggleRow=(t,e)=>{t.stopPropagation();const a=Object.assign(Object.assign({},e),{expanded:!e.expanded});const o=this.toggle.emit({row:a});if(o.defaultPrevented)return;this.serializedRows=this.serializedRows.map((t=>{if(t.id===a.id)return a;else return Object.assign({},t)}))};this.allRowsSelected=false;this.checkSlotCount=0;this.hasDropdowns=false;this.hasExpandableRows=false;this.hasRowData=false;this.serializedHeaders=[];this.serializedRows=[];this.someRowsSelected=false;this.bordered=undefined;this.caption=undefined;this.clickable=undefined;this.density=undefined;this.emptyIcon="inbox";this.emptyMessage="tecton.element.dataTable.emptyMessage";this.headers=undefined;this.hideCaption=undefined;this.hideClickable=undefined;this.loading=undefined;this.rows=undefined;this.selectable=undefined;this.selectMode="multiple";this.shadowed=undefined;this.striped=undefined}disconnectedCallback(){if(this.mutationObserver){this.mutationObserver.disconnect();this.mutationObserver=null}if(this.resizeObserver){this.resizeObserver.disconnect();this.resizeObserver=null}}componentWillLoad(){this.headersHandler(this.headers);this.rowsHandler(this.rows)}componentDidLoad(){if(typeof MutationObserver!=="undefined"){const t=new MutationObserver((()=>this.checkSlots()));t.observe(this.hostElement,{childList:true,subtree:true,attributes:true});this.mutationObserver=t}if(typeof ResizeObserver!=="undefined"){this.resizeObserver=new ResizeObserver((()=>l()));this.resizeObserver.observe(this.hostElement)}}onClickListener(t){if(t instanceof PointerEvent)t.stopImmediatePropagation()}onSelectAllRows(t){t.stopPropagation();const{checked:e}=t.detail;const a=e?this.serializedRows.map((t=>{if(t.disabled){return t}else{return Object.assign(Object.assign({},t),{selected:e})}})):[];const o=this.select.emit({row:undefined,rows:a,allSelected:e});if(o.defaultPrevented)return;this.serializedRows=this.serializedRows.map((t=>{if(t.disabled)return t;t.selected=e;return t}));this.allRowsSelected=e;this.someRowsSelected=false}headersHandler(t=[]){this.serializedHeaders=t.map((t=>{const{title:e}=t;let{key:a}=t;if(!a)a=e.toLowerCase().replace(/\s/g,"-");return Object.assign({key:a},t)}))}rowsHandler(t=[]){const{serializedHeaders:e,mappedHeaders:a}=this;const o={id:null,cells:{},selected:false,expanded:false,disabled:false};let r=true;let l=false;const n=t.map((({id:t,cells:e,selected:n,expanded:c,disabled:d})=>{const i=Object.entries(e).reduce(((t,[e,o])=>{const r=a[e]||{};const{align:l,type:n="text",lineClamp:c,verticalAlign:d}=r;const i="type"in r&&r.type==="badge";const s={value:"",ariaLabel:undefined,type:n,align:l,lineClamp:c,verticalAlign:d,badgeStatus:i?r.badgeStatus:undefined,badgeTheme:i?r.badgeTheme:undefined};const b=typeof o==="object"?Object.assign(Object.assign({},s),o):Object.assign(Object.assign({},s),{value:o});t[e]=b;return t}),{});if(r&&!n)r=false;if(!r&&n)l=true;return Object.assign(Object.assign({},o),{id:t,selected:!!n,expanded:!!c,disabled:!!d,cells:i})}));const c=e.find((({sorted:t})=>t));const d=!!c&&c.sortable!=="manual";this.hasRowData=!!t.length;this.allRowsSelected=this.hasRowData&&r;this.someRowsSelected=this.hasRowData&&l;this.serializedRows=!!d?this.sortRows(n,c):n;this.checkSlots()}selectableHandler(){if(this.selectable===false){this.selectAllRows.emit({checked:false})}}async sortColumn(t){const e=this.hostElement.shadowRoot.querySelector(`#header-${t.key} q2-btn[test-id="sort-control"]`);e===null||e===void 0?void 0:e.click()}async toggleRowExpansion(t){const e=this.hostElement.shadowRoot.querySelector(`#row-${t} q2-btn[test-id="expandable-row-control"]`);e===null||e===void 0?void 0:e.click()}async toggleRowSelect(t){const e=this.hostElement.shadowRoot.querySelector(`#row-${t} q2-checkbox[test-id="select-row-control"]`);e===null||e===void 0?void 0:e.click()}async clickRow(t){const e=this.hostElement.shadowRoot.querySelector(`#row-${t} q2-btn[test-id="clickable-row-control"]`);e===null||e===void 0?void 0:e.click()}async getCellContent(t,e){var a,o;const r=(a=this.hostElement.querySelector(`[slot=row-${t}-cell-${e}`))===null||a===void 0?void 0:a.textContent;const l=(o=this.hostElement.shadowRoot.querySelector(`slot[name=row-${t}-cell-${e}]`))===null||o===void 0?void 0:o.textContent;return r||l||""}async toggleSelectAllRows(){if(!this.selectable)return;const t=this.hostElement.shadowRoot.querySelector(`q2-checkbox[test-id="select-all-rows-control"]`);t===null||t===void 0?void 0:t.click()}get mappedHeaders(){return this.serializedHeaders.reduce(((t,e)=>{t[e.key]=e;return t}),{})}get numberOfColumns(){var t,e;return((e=(t=this.serializedHeaders)===null||t===void 0?void 0:t.length)!==null&&e!==void 0?e:0)+(this.selectable?1:0)+(this.clickable?1:0)+(this.hasExpandableRows?1:0)+(this.hasDropdowns?1:0)}get selectedRow(){return this.selectedRows.find((({selected:t})=>!!t))}get selectedRows(){return this.serializedRows.filter((({selected:t})=>t))}sortRows(t,e){const{key:a,sorted:o}=e;const r=o||"ASC";const l=[...t].sort(((t,e)=>{const o=t.cells[a].value;const l=e.cells[a].value;if(o<l)return r==="ASC"?-1:1;if(o>l)return r==="ASC"?1:-1;return 0}));return l}render(){const{caption:t}=this;return a("div",{key:"ca929992a1cbe3dc46b9793d66b94bf927378458",class:"container"},a("table",{key:"4b3b8f54037d166262a115573fa9a80d63b9b3fe"},t&&a("caption",{key:"85de87c8cce24c2fc3d5c3718aff47924ecfe76c",class:this.hideCaption?"sr":undefined},t),this.renderTableColGroup(),this.renderTableHeader(),this.renderEmptyState(),this.renderTableRows()))}renderCellContent(t){if(!t)return;const{type:e,ariaLabel:o,value:r}=t;if([undefined,null].includes(r))return;switch(e){case"badge":let e;switch(typeof r){case"string":e=parseFloat(r);break;case"boolean":e=r?1:0;break;default:e=r;break}return a("q2-badge",{"aria-label":o,value:e,theme:t.badgeTheme,status:t.badgeStatus,size:"large"});case"icon":const l=typeof r==="string"?r:`${r}`;return a("q2-icon",{label:o,type:l});case"boolean":return!!r?a("q2-icon",{label:n("tecton.element.dataTable.booleanTrue"),type:"checkmark"}):a("div",{"aria-label":n("tecton.element.dataTable.booleanFalse")});case"code":return a("code",{"aria-label":o},r);default:return a("div",{"aria-label":o},r)}}renderEmptyState(){const{hasRowData:t,numberOfColumns:e,emptyIcon:o,emptyMessage:r,loading:l}=this;if(t||l)return null;return a("slot",{name:"empty-table"},a("tbody",null,a("tr",{class:"empty-state"},a("td",{colSpan:e},a("div",{class:"empty-state-content"},a("q2-icon",{type:o}),a("p",null,n(r)))))))}renderTableColGroup(){const{serializedHeaders:t,selectable:e,clickable:o,hasExpandableRows:r,hasDropdowns:l}=this;if(!t.length)return null;return a("colgroup",null,e&&a("col",{class:"select-column"}),t.map((({width:t,backgroundColor:e})=>a("col",{style:{width:t,backgroundColor:e}}))),o&&a("col",{class:"click-column"}),r&&a("col",{class:"expandable-row-control-column"}),l&&a("col",{class:"dropdown-column"}))}renderTableHeader(){const{serializedHeaders:t,selectable:e,clickable:o,hideClickable:r,selectMode:l,hasExpandableRows:c,hasDropdowns:d,allRowsSelected:i,someRowsSelected:s,hasRowData:b,loading:h}=this;if(!t.length)return null;return a("thead",null,a("tr",null,e&&a("th",null,l==="multiple"&&a("q2-checkbox",{label:n("tecton.element.dataTable.selectAllRows"),"hide-label":true,onChange:()=>this.selectAllRows.emit({checked:!i}),checked:b&&i&&!s,indeterminate:b&&s&&!i,disabled:h||!b,"test-id":"select-all-rows-control"})),t.map((t=>{const{align:e,sorted:o,verticalAlign:r}=t;const l=[];if(e)l.push(`align-${e}`);if(r)l.push(`vertical-align-${r}`);if(!!o)l.push("sorted");return a("th",{class:l.join(" "),id:`header-${t.key}`},t.sortable?a("q2-btn",{onClick:()=>this.onSort(t),"test-id":"sort-control",disabled:this.loading},a("div",{class:"header-content","aria-label":t.ariaLabel||undefined},a("slot",{name:`header-cell-${t.key}`},t.title),!!o?a("q2-icon",{class:`sorted-indicator direction-${o}`,type:"arrow-down",label:o==="ASC"?n("tecton.element.dataTable.sortedAscending"):n("tecton.element.dataTable.sortedDescending"),"test-id":"sorted-indicator"}):a("q2-icon",{class:`sorted-indicator`,type:"sort",label:n("tecton.element.dataTable.clickToSort"),"test-id":"sorted-indicator"}))):a("div",{class:"header-content","aria-label":t.ariaLabel||undefined},a("slot",{name:`header-cell-${t.key}`},t.title)))})),o&&a("th",{id:"click",class:r?"sr":undefined},a("span",{class:"sr"},n("tecton.element.dataTable.clickRow"))),c&&a("th",{id:"toggle"},a("span",{class:"sr"},n("tecton.element.dataTable.toggleRow"))),d&&a("th",null,a("span",{class:"sr"},n("tecton.element.dataTable.dropdown")))))}renderTableRows(){const{serializedHeaders:t,serializedRows:e,selectable:r,clickable:l,striped:c,hideClickable:d,selectMode:i,hasExpandableRows:s,hasDropdowns:b,numberOfColumns:h,loading:p}=this;if(p){return a("tbody",null,a("tr",{class:"loading-row"},a("td",{colSpan:h},a("q2-loading",{inline:true}))))}let u=false;let v;if(i==="single"){v=this.selectedRow;u=!!v}const g=[];if(l)g.push("click-column");if(d)g.push("sr");const f=g.join(" ");return a("tbody",null,e.map((e=>{const d=`row-${e.id}-cell`;const i=`row-${e.id}-expandable-content`;const p=`row-${e.id}-dropdown`;const g=s&&!!this.hostElement.querySelector(`[slot="${i}"]`);const w=b&&!!this.hostElement.querySelector(`[slot="${p}"]`);const m=[];if(g)m.push("expandable");if(l)m.push("clickable");if(c)m.push("striped");if(e.expanded)m.push("expanded");if(e.selected)m.push("selected");const x=l||g;return a(o,null,a("tr",{id:`row-${e.id}`,class:m.join(" "),onClick:x&&(t=>this.onClickTableRow(t,e)),tabIndex:x?-1:undefined},r&&a("td",{class:"select-column",onClick:this.onControlContainerClick},a("q2-checkbox",{label:n("tecton.element.dataTable.selectRow"),"hide-label":true,checked:e.selected,disabled:u&&e!==v||e.disabled,onChange:t=>this.onSelectRow(t,e),"test-id":"select-row-control"})),t.map((({key:t})=>{const o=e.cells[t];const r=o===null||o===void 0?void 0:o.lineClamp;const l=o===null||o===void 0?void 0:o.align;const n=o===null||o===void 0?void 0:o.verticalAlign;const c=[];if(l)c.push(`align-${l}`);if(n)c.push(`vertical-align-${n}`);if(r)c.push("clamped");const i=r?{"--comp-line-clamp-count":`${r}`}:undefined;return a("td",{class:c.join(" "),style:i},a("slot",{name:`${d}-${t}`},this.renderCellContent(o)))})),l&&a("td",{class:f},a("q2-btn",{intent:"neutral",size:"small",onClick:t=>this.onClickRow(t,e),"test-id":"clickable-row-control"},n("tecton.element.dataTable.clickRow"))),s&&a("td",{class:"expandable-row-control-column",onClick:this.onControlContainerClick},g&&a("q2-btn",{onClick:t=>this.onToggleRow(t,e),ariaExpanded:`${e.expanded}`,ariaControls:i,ariaLabel:n("tecton.element.dataTable.toggleRow"),"test-id":"expandable-row-control"},a("q2-icon",{type:"chevron-down",class:"toggle-expandable-row"}))),b&&a("td",{class:"dropdown-column",onClick:this.onControlContainerClick},w&&a("slot",{name:p}))),g&&a("tr",{id:i,class:"expandable-row",hidden:!e.expanded,"aria-hidden":!e.expanded},a("td",{colSpan:h,headers:"toggle"},a("div",{class:"expandable-content"},a("slot",{name:i})))))})))}get hostElement(){return r(this)}static get watchers(){return{headers:["headersHandler"],rows:["rowsHandler"],selectable:["selectableHandler"]}}};i.style=d;export{i as q2_data_table};
2
+ //# sourceMappingURL=p-3c7be0bb.entry.js.map