@globalpayments/vega 2.20.0 → 2.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (250) hide show
  1. package/dist/cjs/{app-globals-c199ea5e.js → app-globals-f7f3c776.js} +2 -2
  2. package/dist/cjs/{child-nodes-event-prevent-slimmer-1a9ac556.js → child-nodes-event-prevent-slimmer-18814356.js} +1 -1
  3. package/dist/cjs/{event-emit-slimmer-69a0ae5b.js → event-emit-slimmer-95dfc7c2.js} +1 -1
  4. package/dist/cjs/{form-field-controller-slimmer-8e71addd.js → form-field-controller-slimmer-db68a8da.js} +10 -4
  5. package/dist/cjs/index-1299d729.js +4 -0
  6. package/dist/cjs/index.cjs.js +3 -3
  7. package/dist/cjs/{internal-vega-event-manager-908ef630.js → internal-vega-event-manager-6ba0e3ab.js} +1 -1
  8. package/dist/cjs/loader.cjs.js +5 -5
  9. package/dist/cjs/static-remote-invocation-call-registry-d231186a.js +64 -0
  10. package/dist/cjs/{static-subject-title-35e2a92c.js → static-subject-title-41c88385.js} +4 -0
  11. package/dist/cjs/vega-accordion.cjs.entry.js +5 -5
  12. package/dist/cjs/vega-app-header-button.cjs.entry.js +4 -4
  13. package/dist/cjs/vega-banner.cjs.entry.js +3 -3
  14. package/dist/cjs/vega-breadcrumb.cjs.entry.js +6 -8
  15. package/dist/cjs/vega-button-circle.cjs.entry.js +5 -5
  16. package/dist/cjs/vega-button-group_2.cjs.entry.js +4 -4
  17. package/dist/cjs/vega-button-link.cjs.entry.js +4 -4
  18. package/dist/cjs/vega-button.cjs.entry.js +5 -5
  19. package/dist/cjs/vega-calendar_3.cjs.entry.js +52 -16
  20. package/dist/cjs/vega-carousel.cjs.entry.js +3 -3
  21. package/dist/cjs/vega-checkbox_2.cjs.entry.js +6 -6
  22. package/dist/cjs/vega-chip.cjs.entry.js +4 -4
  23. package/dist/cjs/vega-color-picker.cjs.entry.js +5 -5
  24. package/dist/cjs/vega-combo-box.cjs.entry.js +6 -6
  25. package/dist/cjs/vega-date-picker_2.cjs.entry.js +6 -6
  26. package/dist/cjs/vega-dialog_2.cjs.entry.js +4 -4
  27. package/dist/cjs/vega-dropdown_5.cjs.entry.js +23 -5
  28. package/dist/cjs/vega-env-manager-23b8b23c.js +2 -2
  29. package/dist/cjs/{vega-event-id-a05199e1.js → vega-event-id-99d9343f.js} +1 -1
  30. package/dist/cjs/vega-field-error.cjs.entry.js +1 -1
  31. package/dist/cjs/vega-field-label.cjs.entry.js +4 -4
  32. package/dist/cjs/vega-form.cjs.entry.js +6 -6
  33. package/dist/cjs/vega-hint.cjs.entry.js +38 -0
  34. package/dist/cjs/vega-image-uploader.cjs.entry.js +6 -6
  35. package/dist/cjs/vega-input-credit-card.cjs.entry.js +6 -6
  36. package/dist/cjs/vega-input-phone-number.cjs.entry.js +46 -50
  37. package/dist/cjs/vega-input-range.cjs.entry.js +6 -6
  38. package/dist/cjs/vega-input-select.cjs.entry.js +6 -6
  39. package/dist/cjs/vega-input.cjs.entry.js +22 -11
  40. package/dist/cjs/vega-item-toggle.cjs.entry.js +3 -3
  41. package/dist/cjs/vega-left-nav_5.cjs.entry.js +4 -4
  42. package/dist/cjs/vega-page-notification_2.cjs.entry.js +1 -1
  43. package/dist/cjs/vega-pagination.cjs.entry.js +10 -6
  44. package/dist/cjs/vega-popover_2.cjs.entry.js +3 -3
  45. package/dist/cjs/vega-progress-tracker.cjs.entry.js +3 -3
  46. package/dist/cjs/vega-radio_2.cjs.entry.js +8 -8
  47. package/dist/cjs/vega-segment-control.cjs.entry.js +3 -3
  48. package/dist/cjs/vega-selection-tile_2.cjs.entry.js +6 -6
  49. package/dist/cjs/vega-signature-capture.cjs.entry.js +5 -5
  50. package/dist/cjs/{vega-skeleton-loader-controller-38ab6039.js → vega-skeleton-loader-controller-aa3e09d6.js} +1 -1
  51. package/dist/cjs/vega-stepper.cjs.entry.js +6 -6
  52. package/dist/cjs/vega-tab-group_2.cjs.entry.js +5 -5
  53. package/dist/cjs/vega-table_8.cjs.entry.js +69 -37
  54. package/dist/cjs/vega-textarea.cjs.entry.js +6 -6
  55. package/dist/cjs/vega-time-picker_2.cjs.entry.js +6 -6
  56. package/dist/cjs/vega-toggle-switch.cjs.entry.js +3 -3
  57. package/dist/cjs/vega.cjs.js +5 -5
  58. package/dist/collection/collection-manifest.json +6 -0
  59. package/dist/collection/components/vega-accordion/vega-accordion.js +1 -1
  60. package/dist/collection/components/vega-breadcrumb/slimmers/controllers/vega-breadcrumb-click-controller.js +2 -4
  61. package/dist/collection/components/vega-calendar/vega-calendar-event/slimmers/controllers/vega-calendar-sub-state-controller.js +15 -1
  62. package/dist/collection/components/vega-calendar/vega-calendar-event/slimmers/renderers/vega-calendar-event-renderer.js +15 -10
  63. package/dist/collection/components/vega-calendar/vega-calendar-event/vega-calendar-event.js +3 -1
  64. package/dist/collection/components/vega-calendar/vega-calendar.js +37 -0
  65. package/dist/collection/components/vega-dropdown/slimmers/controllers/vega-dropdown-search-controller.js +6 -0
  66. package/dist/collection/components/vega-dropdown/slimmers/renderers/vega-dropdown-item-level-renderer.js +15 -0
  67. package/dist/collection/components/vega-hint/vega-hint.js +38 -0
  68. package/dist/collection/components/vega-input/slimmers/controllers/vega-input-mask-config-controller.js +1 -1
  69. package/dist/collection/components/vega-input/vega-input.js +1 -1
  70. package/dist/collection/components/vega-input-phone-number/slimmers/controllers/country-select-controller.js +18 -8
  71. package/dist/collection/components/vega-input-phone-number/slimmers/renderers/country-select-renderer.js +26 -36
  72. package/dist/collection/components/vega-input-phone-number/slimmers/renderers/phone-number-input-renderer.js +1 -0
  73. package/dist/collection/components/vega-input-phone-number/vega-input-phone-number.js +0 -2
  74. package/dist/collection/components/vega-input-select/vega-input-select.js +1 -1
  75. package/dist/collection/components/vega-pagination/vega-pagination.js +6 -2
  76. package/dist/collection/components/vega-table/slimmers/controllers/vega-table-data-source-controller.js +1 -3
  77. package/dist/collection/components/vega-table/slimmers/controllers/vega-table-sort-controller.js +30 -29
  78. package/dist/collection/components/vega-table/slimmers/controllers/vega-table-sorter.js +33 -0
  79. package/dist/collection/components/vega-table/test/vega-table-sorter.test.js +508 -0
  80. package/dist/collection/constants/ui.js +1 -0
  81. package/dist/collection/helpers/change-manager/subject/static-remote-invocation-subject/static-remote-invocation-call-registry.js +3 -3
  82. package/dist/collection/helpers/change-manager/subject/static-subject/static-subject-title.js +1 -0
  83. package/dist/collection/helpers/change-manager/test/static-remote-invocation-subject.test.js +3 -3
  84. package/dist/collection/helpers/event-manager/event-id/vega-event-id.js +1 -1
  85. package/dist/collection/helpers/formatter/string-formatter/custom-formatter-strategy.js +16 -4
  86. package/dist/collection/helpers/formatter/test/string-formatter/custom-formatter-strategy.test.js +7 -2
  87. package/dist/collection/helpers/slimmers/form-field-controller-slimmer.js +9 -3
  88. package/dist/collection/helpers/slimmers/test/form-field-controller-slimmer.test.js +17 -0
  89. package/dist/collection/helpers/vega-telemetry-helper/test/vega-env-manager.test.js +1 -1
  90. package/dist/collection/helpers/vega-telemetry-helper/vega-env-manager.js +2 -2
  91. package/dist/collection/utils/e2e-utils.js +6 -2
  92. package/dist/esm/{app-globals-f06cad68.js → app-globals-565328e2.js} +2 -2
  93. package/dist/esm/{array-8c82516c.js → array-506b88b9.js} +1 -1
  94. package/dist/esm/{child-nodes-event-prevent-slimmer-64aa84be.js → child-nodes-event-prevent-slimmer-75851864.js} +1 -1
  95. package/dist/esm/{event-emit-slimmer-61856017.js → event-emit-slimmer-929b3e70.js} +1 -1
  96. package/dist/esm/{form-field-controller-slimmer-f8f42321.js → form-field-controller-slimmer-b237bb58.js} +11 -5
  97. package/dist/esm/index-c3505689.js +4 -0
  98. package/dist/esm/index.js +3 -3
  99. package/dist/esm/{internal-vega-event-manager-16ece1ab.js → internal-vega-event-manager-b0d04798.js} +1 -1
  100. package/dist/esm/{legend-input-processor-ea4840cb.js → legend-input-processor-abb0b4f4.js} +1 -1
  101. package/dist/esm/loader.js +5 -5
  102. package/dist/esm/{mutation-observer-filters-8e5cb1e0.js → mutation-observer-filters-a484f098.js} +1 -1
  103. package/dist/esm/static-remote-invocation-call-registry-56d7e6b2.js +62 -0
  104. package/dist/esm/{static-subject-title-2a4d6602.js → static-subject-title-2e153754.js} +3 -1
  105. package/dist/esm/vega-accordion.entry.js +5 -5
  106. package/dist/esm/vega-app-header-button.entry.js +4 -4
  107. package/dist/esm/vega-banner.entry.js +3 -3
  108. package/dist/esm/vega-bar-chart.entry.js +3 -3
  109. package/dist/esm/vega-breadcrumb.entry.js +6 -8
  110. package/dist/esm/vega-button-circle.entry.js +5 -5
  111. package/dist/esm/vega-button-group_2.entry.js +4 -4
  112. package/dist/esm/vega-button-link.entry.js +4 -4
  113. package/dist/esm/vega-button.entry.js +5 -5
  114. package/dist/esm/vega-calendar_3.entry.js +53 -17
  115. package/dist/esm/vega-carousel.entry.js +3 -3
  116. package/dist/esm/vega-checkbox_2.entry.js +8 -8
  117. package/dist/esm/vega-chip.entry.js +4 -4
  118. package/dist/esm/vega-color-picker.entry.js +7 -7
  119. package/dist/esm/vega-combo-box.entry.js +8 -8
  120. package/dist/esm/vega-date-picker_2.entry.js +8 -8
  121. package/dist/esm/vega-dialog_2.entry.js +4 -4
  122. package/dist/esm/vega-dropdown_5.entry.js +24 -6
  123. package/dist/esm/vega-env-manager-8f8dc473.js +2 -2
  124. package/dist/esm/{vega-event-id-e2ea4301.js → vega-event-id-13e22d1e.js} +1 -1
  125. package/dist/esm/vega-field-error.entry.js +1 -1
  126. package/dist/esm/vega-field-label.entry.js +4 -4
  127. package/dist/esm/vega-form.entry.js +8 -8
  128. package/dist/esm/vega-hint.entry.js +34 -0
  129. package/dist/esm/vega-image-uploader.entry.js +8 -8
  130. package/dist/esm/vega-input-credit-card.entry.js +8 -8
  131. package/dist/esm/vega-input-phone-number.entry.js +48 -52
  132. package/dist/esm/vega-input-range.entry.js +8 -8
  133. package/dist/esm/vega-input-select.entry.js +8 -8
  134. package/dist/esm/vega-input.entry.js +24 -13
  135. package/dist/esm/vega-item-toggle.entry.js +3 -3
  136. package/dist/esm/vega-left-nav_5.entry.js +4 -4
  137. package/dist/esm/vega-line-chart.entry.js +3 -3
  138. package/dist/esm/vega-page-notification_2.entry.js +1 -1
  139. package/dist/esm/vega-pagination.entry.js +10 -6
  140. package/dist/esm/vega-pie-chart.entry.js +2 -2
  141. package/dist/esm/vega-popover_2.entry.js +3 -3
  142. package/dist/esm/vega-progress-tracker.entry.js +3 -3
  143. package/dist/esm/vega-radio_2.entry.js +9 -9
  144. package/dist/esm/vega-segment-control.entry.js +3 -3
  145. package/dist/esm/vega-selection-tile_2.entry.js +8 -8
  146. package/dist/esm/vega-signature-capture.entry.js +7 -7
  147. package/dist/esm/{vega-skeleton-loader-controller-5ac7211f.js → vega-skeleton-loader-controller-7378a2e4.js} +1 -1
  148. package/dist/esm/vega-stepper.entry.js +8 -8
  149. package/dist/esm/vega-tab-group_2.entry.js +5 -5
  150. package/dist/esm/vega-table_8.entry.js +71 -39
  151. package/dist/esm/vega-textarea.entry.js +8 -8
  152. package/dist/esm/vega-time-picker_2.entry.js +8 -8
  153. package/dist/esm/vega-toggle-switch.entry.js +3 -3
  154. package/dist/esm/vega.js +5 -5
  155. package/dist/esm/{y-axis-input-processor-1d9192ae.js → y-axis-input-processor-08c89594.js} +2 -2
  156. package/dist/types/components/vega-calendar/vega-calendar-event/slimmers/controllers/vega-calendar-sub-state-controller.d.ts +1 -0
  157. package/dist/types/components/vega-calendar/vega-calendar-event/slimmers/renderers/vega-calendar-event-renderer.d.ts +2 -1
  158. package/dist/types/components/vega-calendar/vega-calendar-event/vega-calendar-event.d.ts +1 -0
  159. package/dist/types/components/vega-calendar/vega-calendar.d.ts +11 -0
  160. package/dist/types/components/vega-dropdown/slimmers/renderers/vega-dropdown-item-level-renderer.d.ts +3 -0
  161. package/dist/types/components/vega-hint/vega-hint.d.ts +11 -0
  162. package/dist/types/components/vega-input/types.d.ts +1 -0
  163. package/dist/types/components/vega-input-phone-number/slimmers/controllers/country-select-controller.d.ts +9 -5
  164. package/dist/types/components/vega-input-phone-number/slimmers/renderers/country-select-renderer.d.ts +3 -13
  165. package/dist/types/components/vega-input-phone-number/vega-input-phone-number.d.ts +0 -1
  166. package/dist/types/components/vega-input-select/types.d.ts +1 -0
  167. package/dist/types/components/vega-table/slimmers/controllers/vega-table-sort-controller.d.ts +3 -3
  168. package/dist/types/components/vega-table/slimmers/controllers/vega-table-sorter.d.ts +27 -0
  169. package/dist/types/components/vega-table/test/vega-table-sorter.test.d.ts +1 -0
  170. package/dist/types/components/vega-table/vega-table.d.ts +3 -2
  171. package/dist/types/components.d.ts +21 -0
  172. package/dist/types/constants/ui.d.ts +1 -1
  173. package/dist/types/helpers/change-manager/subject/static-remote-invocation-subject/static-remote-invocation-call-registry.d.ts +3 -3
  174. package/dist/types/helpers/change-manager/subject/static-subject/static-subject-title.d.ts +2 -1
  175. package/dist/types/helpers/formatter/string-formatter/custom-formatter-strategy.d.ts +6 -3
  176. package/dist/types/helpers/slimmers/form-field-controller-slimmer.d.ts +4 -1
  177. package/dist/types/utils/e2e-utils.d.ts +2 -0
  178. package/dist/vega/index.esm.js +1 -1
  179. package/dist/vega/{p-b0cbbf88.entry.js → p-0629c827.entry.js} +1 -1
  180. package/dist/vega/{p-2a08269c.entry.js → p-0a157187.entry.js} +1 -1
  181. package/dist/vega/{p-9eef4b8c.entry.js → p-0fdbffc4.entry.js} +1 -1
  182. package/dist/vega/{p-ce48be2b.entry.js → p-10456650.entry.js} +1 -1
  183. package/dist/vega/{p-4b1ed9e1.entry.js → p-1496ae4a.entry.js} +1 -1
  184. package/dist/vega/{p-72f38014.entry.js → p-15604d96.entry.js} +1 -1
  185. package/dist/vega/{p-0776022d.entry.js → p-1e7118b1.entry.js} +1 -1
  186. package/dist/vega/p-1f52fbdc.entry.js +1 -0
  187. package/dist/vega/{p-a2c10ac6.entry.js → p-2113e8a0.entry.js} +1 -1
  188. package/dist/vega/{p-52171abe.entry.js → p-21688c09.entry.js} +1 -1
  189. package/dist/vega/p-22cffbcc.entry.js +1 -0
  190. package/dist/vega/{p-f8975f50.js → p-33596687.js} +1 -1
  191. package/dist/vega/{p-96fda429.entry.js → p-394a4289.entry.js} +1 -1
  192. package/dist/vega/{p-27327fc6.js → p-3f20d9f0.js} +1 -1
  193. package/dist/vega/{p-91077f54.entry.js → p-4c919221.entry.js} +1 -1
  194. package/dist/vega/{p-75a78fcb.entry.js → p-4cf6fea1.entry.js} +1 -1
  195. package/dist/vega/p-4d4648f8.js +1 -0
  196. package/dist/vega/{p-88b42b8e.js → p-4dc711c1.js} +1 -1
  197. package/dist/vega/p-507d3a25.js +1 -0
  198. package/dist/vega/p-5f136969.entry.js +1 -0
  199. package/dist/vega/p-5f377954.js +1 -1
  200. package/dist/vega/{p-dcf93050.entry.js → p-68ead15a.entry.js} +1 -1
  201. package/dist/vega/{p-f155aba3.entry.js → p-6aab349d.entry.js} +1 -1
  202. package/dist/vega/{p-59373fa3.entry.js → p-6d7fa33c.entry.js} +1 -1
  203. package/dist/vega/p-7b2315b5.entry.js +1 -0
  204. package/dist/vega/{p-f7236eef.entry.js → p-8f13530c.entry.js} +1 -1
  205. package/dist/vega/{p-9e0314dd.entry.js → p-9c3ed69a.entry.js} +1 -1
  206. package/dist/vega/{p-1951d74f.entry.js → p-9d58efb1.entry.js} +1 -1
  207. package/dist/vega/{p-fbc0f4fd.js → p-9fc2882a.js} +1 -1
  208. package/dist/vega/{p-0477bb3e.entry.js → p-a1557df0.entry.js} +1 -1
  209. package/dist/vega/{p-beaeeaaf.entry.js → p-a8b216c0.entry.js} +1 -1
  210. package/dist/vega/{p-122dd21c.entry.js → p-a8f406e3.entry.js} +1 -1
  211. package/dist/vega/p-ae403881.entry.js +1 -0
  212. package/dist/vega/p-af4e1120.entry.js +1 -0
  213. package/dist/vega/{p-9ddfbe02.entry.js → p-b211ca98.entry.js} +1 -1
  214. package/dist/vega/{p-8250b935.js → p-b32611f0.js} +1 -1
  215. package/dist/vega/p-b8a63b73.js +1 -0
  216. package/dist/vega/{p-37e34b11.entry.js → p-b8e45e21.entry.js} +1 -1
  217. package/dist/vega/p-bb63021c.entry.js +1 -0
  218. package/dist/vega/{p-d77148c0.entry.js → p-bc37ab37.entry.js} +1 -1
  219. package/dist/vega/{p-d87980fe.js → p-c216dfc3.js} +1 -1
  220. package/dist/vega/{p-5ebb355b.js → p-c4542d96.js} +1 -1
  221. package/dist/vega/{p-6f62b38f.entry.js → p-ca905ecc.entry.js} +1 -1
  222. package/dist/vega/{p-11e7deae.entry.js → p-cbb1c0a7.entry.js} +1 -1
  223. package/dist/vega/{p-516b24fc.entry.js → p-cee7b0e6.entry.js} +1 -1
  224. package/dist/vega/{p-9d75e265.entry.js → p-cf0c2937.entry.js} +1 -1
  225. package/dist/vega/{p-bd19100b.entry.js → p-d5e0c79c.entry.js} +1 -1
  226. package/dist/vega/{p-1c1ebbbf.entry.js → p-d7b21179.entry.js} +1 -1
  227. package/dist/vega/{p-0d7d26a1.entry.js → p-db129cbf.entry.js} +1 -1
  228. package/dist/vega/{p-7d2ef81d.js → p-ddc70a7b.js} +1 -1
  229. package/dist/vega/{p-8b4e8250.entry.js → p-e48c71be.entry.js} +1 -1
  230. package/dist/vega/p-e66d54c5.entry.js +1 -0
  231. package/dist/vega/{p-f9dc62a3.entry.js → p-e9851b18.entry.js} +1 -1
  232. package/dist/vega/{p-f3f22a96.entry.js → p-ed0d4be8.entry.js} +1 -1
  233. package/dist/vega/{p-69b28805.js → p-ee68920f.js} +1 -1
  234. package/dist/vega/{p-be57a828.entry.js → p-f58e4e4a.entry.js} +1 -1
  235. package/dist/vega/p-f5ebc64a.js +1 -0
  236. package/dist/vega/{p-4aa84e12.entry.js → p-faf4cfd8.entry.js} +1 -1
  237. package/dist/vega/{p-2295b3e5.entry.js → p-fb7ca3e4.entry.js} +1 -1
  238. package/dist/vega/{p-dcde7c0f.entry.js → p-fbd75ce7.entry.js} +1 -1
  239. package/dist/vega/vega.esm.js +1 -1
  240. package/package.json +1 -1
  241. package/dist/vega/p-08c6ec82.entry.js +0 -1
  242. package/dist/vega/p-277e29a4.entry.js +0 -1
  243. package/dist/vega/p-53f24899.entry.js +0 -1
  244. package/dist/vega/p-6ddc92df.entry.js +0 -1
  245. package/dist/vega/p-b07f0e8c.entry.js +0 -1
  246. package/dist/vega/p-bb491bed.js +0 -1
  247. package/dist/vega/p-cbeb3e3c.entry.js +0 -1
  248. package/dist/vega/p-d165d4b7.js +0 -1
  249. package/dist/vega/p-dd9e0b55.entry.js +0 -1
  250. package/dist/vega/p-ec045268.js +0 -1
@@ -57,6 +57,7 @@ export class VegaCalendar {
57
57
  this.moreActionClickEmitter = createEventEmitSlimmer(VegaCalendar, VegaMoreActionClick);
58
58
  this.changeEventPrevent = new ChildNodesEventPreventSlimmer([VegaChange], () => this.switchPanelRenderer.getSwitchPanelRef());
59
59
  this.timeFormatNotifySlimmer = createSubStateNotifySlimmer(VegaCalendar, 'timeFormat', 'watchTimeFormat');
60
+ this.showEventColorBarNotifySlimmer = createSubStateNotifySlimmer(VegaCalendar, 'showEventColorBar', 'watchShowEventColorBar');
60
61
  this.showAllEventsInDayOrWeekView = false;
61
62
  this.calendarEvents = [];
62
63
  /**
@@ -68,6 +69,10 @@ export class VegaCalendar {
68
69
  * Specifies the time format of the calendar.
69
70
  */
70
71
  this.timeFormat = '24-hour';
72
+ /**
73
+ * Controls the visibility of the calendar's event color bar.
74
+ */
75
+ this.showEventColorBar = true;
71
76
  }
72
77
  /**
73
78
  * Tracks changes to the current period state.
@@ -102,6 +107,14 @@ export class VegaCalendar {
102
107
  watchTimeFormat(newValue) {
103
108
  methodPlaceholder(newValue);
104
109
  }
110
+ /**
111
+ * Monitors changes in the visibility of the calendar's event color bar.
112
+ *
113
+ * @param {boolean} newValue
114
+ */
115
+ watchShowEventColorBar(newValue) {
116
+ methodPlaceholder(newValue);
117
+ }
105
118
  render() {
106
119
  return sanitizeVegaComponent(h(Host, null, this.renderer.render()), this.host);
107
120
  }
@@ -199,6 +212,24 @@ export class VegaCalendar {
199
212
  "tags": [],
200
213
  "text": "Defines the configuration options for the more action button's dropdown menu."
201
214
  }
215
+ },
216
+ "showEventColorBar": {
217
+ "type": "boolean",
218
+ "mutable": false,
219
+ "complexType": {
220
+ "original": "boolean",
221
+ "resolved": "boolean",
222
+ "references": {}
223
+ },
224
+ "required": false,
225
+ "optional": false,
226
+ "docs": {
227
+ "tags": [],
228
+ "text": "Controls the visibility of the calendar's event color bar."
229
+ },
230
+ "attribute": "show-event-color-bar",
231
+ "reflect": false,
232
+ "defaultValue": "true"
202
233
  }
203
234
  }; }
204
235
  static get states() { return {
@@ -383,6 +414,9 @@ export class VegaCalendar {
383
414
  }, {
384
415
  "propName": "timeFormat",
385
416
  "methodName": "watchTimeFormat"
417
+ }, {
418
+ "propName": "showEventColorBar",
419
+ "methodName": "watchShowEventColorBar"
386
420
  }]; }
387
421
  }
388
422
  __decorate([
@@ -460,3 +494,6 @@ __decorate([
460
494
  __decorate([
461
495
  InjectVegaSlimmer()
462
496
  ], VegaCalendar.prototype, "timeFormatNotifySlimmer", void 0);
497
+ __decorate([
498
+ InjectVegaSlimmer()
499
+ ], VegaCalendar.prototype, "showEventColorBarNotifySlimmer", void 0);
@@ -5,6 +5,8 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
7
  import { MapToComponentField, VegaSlimmer } from 'vega-slimmer/core';
8
+ import staticRemoteInvocationCallRegistry from '../../../../helpers/change-manager/subject/static-remote-invocation-subject/static-remote-invocation-call-registry';
9
+ import { DROPDOWN_SEARCH_INTERNAL_OVERRIDEN } from '../../../../helpers/change-manager/subject/static-subject/static-subject-title';
8
10
  /**
9
11
  * The `VegaDropdownSearchController` class is a TypeScript class that provides methods for searching
10
12
  * and filtering dropdown items based on a search string.
@@ -46,6 +48,10 @@ export class VegaDropdownSearchController extends VegaSlimmer {
46
48
  * @returns {VegaDropdownSourceItem[]} an array of VegaDropdownSourceItem objects.
47
49
  */
48
50
  searchSource(source, result) {
51
+ const searchResult = staticRemoteInvocationCallRegistry.call(DROPDOWN_SEARCH_INTERNAL_OVERRIDEN, source, this.searchString, this.caseSensitive);
52
+ if (searchResult) {
53
+ return searchResult;
54
+ }
49
55
  source.forEach((item) => {
50
56
  if (item['children']) {
51
57
  const filtered = this.searchSource(item['children'], []);
@@ -6,14 +6,29 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  };
7
7
  import { h } from '@stencil/core';
8
8
  import { MapToComponentField, VegaSlimmer } from 'vega-slimmer/core';
9
+ import staticRemoteInvocationCallRegistry from '../../../../helpers/change-manager/subject/static-remote-invocation-subject/static-remote-invocation-call-registry';
10
+ import { DROPDOWN_RENDER_ITEM_INTERNAL_OVERRIDEN } from '../../../../helpers/change-manager/subject/static-subject/static-subject-title';
9
11
  export class VegaDropdownItemLevelRenderer extends VegaSlimmer {
10
12
  render(item, fixHeight) {
13
+ const renderResult = staticRemoteInvocationCallRegistry.call(DROPDOWN_RENDER_ITEM_INTERNAL_OVERRIDEN, item, fixHeight);
14
+ if (renderResult) {
15
+ return renderResult;
16
+ }
11
17
  return (h("vega-dropdown-item", Object.assign({}, item, { itemKey: item.key, height: fixHeight, prefixIcon: item.prefixIcon })));
12
18
  }
13
19
  }
20
+ __decorate([
21
+ MapToComponentField()
22
+ ], VegaDropdownItemLevelRenderer.prototype, "host", void 0);
14
23
  __decorate([
15
24
  MapToComponentField()
16
25
  ], VegaDropdownItemLevelRenderer.prototype, "selectType", void 0);
26
+ __decorate([
27
+ MapToComponentField()
28
+ ], VegaDropdownItemLevelRenderer.prototype, "caseSensitive", void 0);
29
+ __decorate([
30
+ MapToComponentField()
31
+ ], VegaDropdownItemLevelRenderer.prototype, "searchString", void 0);
17
32
  __decorate([
18
33
  MapToComponentField()
19
34
  ], VegaDropdownItemLevelRenderer.prototype, "selectedController", void 0);
@@ -0,0 +1,38 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { Component, Host, h, Element } from '@stencil/core';
8
+ import { InjectVegaGlobalSlimmer, InjectVegaSlimmer } from 'vega-slimmer/core';
9
+ import { VegaComponentUsageRuntimeMetricsSlimmer } from '../../helpers/slimmers/component-usage-runtime-metrics';
10
+ import { sanitizeVegaComponent } from '../../utils/component';
11
+ /**
12
+ * @VegaInternalComponent
13
+ */
14
+ /**
15
+ * This is an internal used component and shouldn't be used by client,
16
+ * it doesn't show up in storybook either.
17
+ */
18
+ export class VegaHint {
19
+ constructor() {
20
+ this.globalSlimmers = {};
21
+ this.vegaComponentUsageRuntimeMetricsSlimmer = new VegaComponentUsageRuntimeMetricsSlimmer();
22
+ }
23
+ render() {
24
+ return sanitizeVegaComponent(h(Host, null,
25
+ h("vega-box", { padding: { x: 'size-8', top: 'size-4' } },
26
+ h("vega-font", { variant: "font-footnote1-short", color: "text-secondary" },
27
+ h("slot", null)))), this.host);
28
+ }
29
+ static get is() { return "vega-hint"; }
30
+ static get encapsulation() { return "shadow"; }
31
+ static get elementRef() { return "host"; }
32
+ }
33
+ __decorate([
34
+ InjectVegaGlobalSlimmer()
35
+ ], VegaHint.prototype, "globalSlimmers", void 0);
36
+ __decorate([
37
+ InjectVegaSlimmer()
38
+ ], VegaHint.prototype, "vegaComponentUsageRuntimeMetricsSlimmer", void 0);
@@ -98,7 +98,7 @@ export class VegaInputMaskConfigController extends StringInputFormatterSlimmer {
98
98
  stringFormatStrategy = new StringMaskStrategy(maskConfig.options);
99
99
  break;
100
100
  case 'custom-formatter':
101
- stringFormatStrategy = new CustomFormatterStrategy(maskConfig.formatter);
101
+ stringFormatStrategy = new CustomFormatterStrategy(maskConfig.formatter, maskConfig.resetCaretPosition);
102
102
  break;
103
103
  }
104
104
  if (this.type === 'number' && maskTrigger === 'input' && !maskConfig) {
@@ -670,7 +670,7 @@ export class VegaInput {
670
670
  "mutable": false,
671
671
  "complexType": {
672
672
  "original": "MaskConfigType | MaskConfigType[]",
673
- "resolved": "MaskConfigType[] | ({ type: \"number\" | \"phone\" | \"zipcode\" | \"taxId\" | \"custom\" | \"thousand-comma\" | \"custom-formatter\"; options?: MaskConfig | NumberMaskConfig; trigger?: \"blur\" | \"input\"; formatter?: (value: string) => string; })",
673
+ "resolved": "MaskConfigType[] | ({ type: \"number\" | \"phone\" | \"zipcode\" | \"taxId\" | \"custom\" | \"thousand-comma\" | \"custom-formatter\"; options?: MaskConfig | NumberMaskConfig; trigger?: \"blur\" | \"input\"; formatter?: (value: string) => string; resetCaretPosition?: boolean; })",
674
674
  "references": {
675
675
  "MaskConfigType": {
676
676
  "location": "import",
@@ -6,19 +6,31 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  };
7
7
  import { MapToComponentField, VegaSlimmer } from 'vega-slimmer/core';
8
8
  import { getCountries } from 'libphonenumber-js';
9
+ import staticRemoteInvocationCallRegistry from '../../../../helpers/change-manager/subject/static-remote-invocation-subject/static-remote-invocation-call-registry';
10
+ import { DROPDOWN_SEARCH_INTERNAL_OVERRIDEN } from '../../../../helpers/change-manager/subject/static-subject/static-subject-title';
11
+ import { COUNTRIES } from '../../assets/countries';
9
12
  /**
10
13
  * The `CountrySelectController` class in TypeScript includes methods to set the search string and
11
14
  * countryCode properties.
12
15
  */
13
16
  export class CountrySelectController extends VegaSlimmer {
14
17
  /**
15
- * The setCountryCodeSearchString function in TypeScript sets the value of the countryCodeSearchString property.
18
+ * Registers a remote invocation call for a dropdown search.
19
+ */
20
+ static registerRemoteDropdownSearch() {
21
+ staticRemoteInvocationCallRegistry.register(DROPDOWN_SEARCH_INTERNAL_OVERRIDEN, this.filterDropdownSourcesBySearchString.bind(this));
22
+ }
23
+ /**
24
+ * Remote invocation call for a dropdown search.
16
25
  *
17
- * @param {string} value - The `value` parameter in the `setCountryCodeSearchString` method is of type `string`
18
- * and represents the new search string that will be set for the object.
26
+ * @param {DropdownSourceItem[]} source - Source of dropdown.
27
+ * @param {string} searchString - Searching string of dropdown.
28
+ * @returns {DropdownSourceItem[]} The searched source.
19
29
  */
20
- setCountryCodeSearchString(value) {
21
- this.countryCodeSearchString = value;
30
+ static filterDropdownSourcesBySearchString(source, searchString) {
31
+ return source.filter((item) => `${COUNTRIES[item.key].toLowerCase()} +${item.label}`
32
+ .toLowerCase()
33
+ .includes(searchString.toLowerCase()));
22
34
  }
23
35
  /**
24
36
  * The function `setCountryCode` sets the countryCode property of an object to the specified VegaCountryCode value.
@@ -32,9 +44,7 @@ export class CountrySelectController extends VegaSlimmer {
32
44
  }
33
45
  CountrySelectController.defaultCountryCode = 'US';
34
46
  CountrySelectController.defaultAllowedCountryCodes = getCountries();
35
- __decorate([
36
- MapToComponentField({ writable: true })
37
- ], CountrySelectController.prototype, "countryCodeSearchString", void 0);
38
47
  __decorate([
39
48
  MapToComponentField({ writable: true })
40
49
  ], CountrySelectController.prototype, "countryCode", void 0);
50
+ CountrySelectController.registerRemoteDropdownSearch();
@@ -7,11 +7,13 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  import { h } from '@stencil/core';
8
8
  import { MapToComponentField, MapToComponentMethod, VegaSlimmer } from 'vega-slimmer/core';
9
9
  import { DomNodeSubjectObserverFactory } from '../../../../helpers/change-manager/subject/dom-node-subject/dom-node-subject-observer-factory';
10
- import { VegaChange, VegaSearch } from '../../../../helpers/event-manager/event-id/vega-event-id';
10
+ import { VegaChange } from '../../../../helpers/event-manager/event-id/vega-event-id';
11
11
  import { VegaInternalIconManager } from '../../../../helpers/icon/internal-icon-manager';
12
12
  import { CountryFlags } from '../../assets/country-flags';
13
13
  import { getCountryCallingCode } from 'libphonenumber-js';
14
14
  import { COUNTRIES } from '../../assets/countries';
15
+ import staticRemoteInvocationCallRegistry from '../../../../helpers/change-manager/subject/static-remote-invocation-subject/static-remote-invocation-call-registry';
16
+ import { DROPDOWN_RENDER_ITEM_INTERNAL_OVERRIDEN } from '../../../../helpers/change-manager/subject/static-subject/static-subject-title';
15
17
  export class CountrySelectRenderer extends VegaSlimmer {
16
18
  constructor() {
17
19
  super(...arguments);
@@ -24,31 +26,15 @@ export class CountrySelectRenderer extends VegaSlimmer {
24
26
  void this.inputSelectRef.doOpen();
25
27
  };
26
28
  /**
27
- * This `renderOption` function is responsible for rendering a dropdown item for a specific country in
29
+ * This `renderDropdownItem` function is responsible for rendering a dropdown item for a specific country in
28
30
  * the `VegaInputPhoneNumberCountryCodeRenderer` component.
29
31
  */
30
- this.renderOption = (countryType) => {
31
- const { callingCode, countryCode, name } = countryType;
32
- const callingCodeWithPrefix = `+${callingCode}`;
33
- return (h("vega-dropdown-item", { label: callingCodeWithPrefix, itemKey: countryCode, key: countryCode },
32
+ this.renderDropdownItem = (item, fixHeight) => {
33
+ return (h("vega-dropdown-item", { height: fixHeight, label: item.label, itemKey: item.key, key: item.key },
34
34
  h("vega-flex", { alignItems: "center", gap: "size-12" },
35
- h("vega-icon", { icon: VegaInternalIconManager.getIconKey(countryCode), size: "size-16" }),
36
- h("vega-font", { variant: "font-field-value", color: "text-primary" }, name),
37
- h("vega-font", { variant: "font-field-value", color: "text-primary" }, `(${callingCodeWithPrefix})`))));
38
- };
39
- /**
40
- * The `private countrySearchFilter` function is a filter function defined within the
41
- * `CountrySelectController` class. It takes a `VegaCountryType` object as input and returns a boolean
42
- * value based on whether the country matches the search criteria specified by the `countryCodeSearchString`
43
- * property of the class.
44
- *
45
- * @param {VegaCountryType} country - the country to be searched
46
- * @returns {boolean} the boolean return value
47
- */
48
- this.countrySearchFilter = (country) => {
49
- return this.countryCodeSearchString
50
- ? `${country.name.toLowerCase()} +${country.callingCode}`.includes(this.countryCodeSearchString.toLowerCase())
51
- : true;
35
+ h("vega-icon", { icon: VegaInternalIconManager.getIconKey(item.key), size: "size-16" }),
36
+ h("vega-font", { variant: "font-field-value", color: "text-primary" }, COUNTRIES[item.key]),
37
+ h("vega-font", { variant: "font-field-value", color: "text-primary" }, `(${item.label})`))));
52
38
  };
53
39
  /**
54
40
  * The `private customCountriesFilter` function is a custom filter function used to filter out
@@ -82,8 +68,15 @@ export class CountrySelectRenderer extends VegaSlimmer {
82
68
  * rendering the JSX structure of the component. Here's a breakdown of what it is doing:
83
69
  */
84
70
  render() {
71
+ const countries = this.getCountrySelectOptions();
85
72
  return (h("vega-box", null,
86
- h("vega-input-select", { vegaDropdownProps: { matchTargetWidth: false }, size: this.size, prefixIcon: VegaInternalIconManager.getIconKey(this.countryCode), disabled: this.disabled, placeholder: "", ref: (inputSelect) => {
73
+ h("vega-input-select", { source: countries.map((country) => ({
74
+ id: country.countryCode,
75
+ displayName: `+${country.callingCode}`,
76
+ })), vegaDropdownProps: {
77
+ matchTargetWidth: false,
78
+ size: this.estimateMaxWidthOfCountries(countries),
79
+ }, size: this.size, prefixIcon: VegaInternalIconManager.getIconKey(this.countryCode), disabled: this.disabled, placeholder: "", ref: (inputSelect) => {
87
80
  this.inputSelectRef = inputSelect;
88
81
  DomNodeSubjectObserverFactory.addUniqueObserverToNode(inputSelect, VegaChange,
89
82
  /*
@@ -94,12 +87,8 @@ export class CountrySelectRenderer extends VegaSlimmer {
94
87
  (e) => {
95
88
  this.handleCountrySelectChange(e.detail);
96
89
  });
97
- DomNodeSubjectObserverFactory.addUniqueObserverToNode(inputSelect, VegaSearch, (e) => {
98
- this.countrySelectController.setCountryCodeSearchString(e.detail);
99
- });
100
- }, value: this.countryCode },
101
- h("div", { slot: "items" },
102
- h("div", null, this.getCountrySelectOptions().map((country) => this.renderOption(country)))))));
90
+ staticRemoteInvocationCallRegistry.register(DROPDOWN_RENDER_ITEM_INTERNAL_OVERRIDEN, this.renderDropdownItem.bind(this));
91
+ }, value: this.countryCode })));
103
92
  }
104
93
  /*
105
94
  * The below method is e2e-test covered in
@@ -123,9 +112,7 @@ export class CountrySelectRenderer extends VegaSlimmer {
123
112
  * `countrySearchFilter` filters.
124
113
  */
125
114
  getCountrySelectOptions() {
126
- return this.constructCountryArray(CountrySelectRenderer.allCountries)
127
- .filter(this.customCountriesFilter)
128
- .filter(this.countrySearchFilter);
115
+ return this.constructCountryArray(CountrySelectRenderer.allCountries).filter(this.customCountriesFilter);
129
116
  }
130
117
  /**
131
118
  * The function constructCountryArray takes a list of country names and returns an array of country
@@ -146,6 +133,12 @@ export class CountrySelectRenderer extends VegaSlimmer {
146
133
  name: countries[country],
147
134
  }));
148
135
  }
136
+ estimateMaxWidthOfCountries(countries) {
137
+ const maxLength = Math.max(...countries.map((country) => country.name.length));
138
+ // 162 is extra element width in dropdown-item, includes checked icon, country icon, country calling code,
139
+ // and gap of item, padding of item.
140
+ return maxLength * 8.5 + 162;
141
+ }
149
142
  }
150
143
  (() => {
151
144
  VegaInternalIconManager.register(CountryFlags);
@@ -163,9 +156,6 @@ __decorate([
163
156
  __decorate([
164
157
  MapToComponentField()
165
158
  ], CountrySelectRenderer.prototype, "allowedCountryCodes", void 0);
166
- __decorate([
167
- MapToComponentField()
168
- ], CountrySelectRenderer.prototype, "countryCodeSearchString", void 0);
169
159
  __decorate([
170
160
  MapToComponentField()
171
161
  ], CountrySelectRenderer.prototype, "countrySelectController", void 0);
@@ -54,6 +54,7 @@ export class PhoneNumberInputRenderer extends VegaSlimmer {
54
54
  }, value: this.phoneNumberInputValue, maskConfig: {
55
55
  type: 'custom-formatter',
56
56
  formatter: this.phoneNumberMaskFormatter,
57
+ resetCaretPosition: true,
57
58
  } })));
58
59
  }
59
60
  /**
@@ -55,7 +55,6 @@ export class VegaInputPhoneNumber {
55
55
  inputContainerGetter: () => this.inputPhoneNumberRenderer.getInputPhoneNumberContainerRef(),
56
56
  touchableAreaGetter: () => [this.phoneNumberInputRenderer.getInputRef()],
57
57
  });
58
- this.countryCodeSearchString = '';
59
58
  this.phoneNumberInputValue = '';
60
59
  /**
61
60
  * Specifies the label or title for the phone number input field.
@@ -363,7 +362,6 @@ export class VegaInputPhoneNumber {
363
362
  }
364
363
  }; }
365
364
  static get states() { return {
366
- "countryCodeSearchString": {},
367
365
  "phoneNumberInputValue": {}
368
366
  }; }
369
367
  static get events() { return [{
@@ -437,7 +437,7 @@ export class VegaInputSelect {
437
437
  "mutable": false,
438
438
  "complexType": {
439
439
  "original": "VegaDropdownPropsForSelect",
440
- "resolved": "{ caseSensitive?: boolean; matchContainerHeight?: boolean; matchTargetWidth?: boolean; maxHeight?: number; positionRelativeTo?: string; searchable?: boolean; useDefaultFilter?: boolean; }",
440
+ "resolved": "{ caseSensitive?: boolean; matchContainerHeight?: boolean; matchTargetWidth?: boolean; maxHeight?: number; positionRelativeTo?: string; searchable?: boolean; size?: ResponsiveType<SizeType>; useDefaultFilter?: boolean; }",
441
441
  "references": {
442
442
  "VegaDropdownPropsForSelect": {
443
443
  "location": "import",
@@ -69,8 +69,12 @@ export class VegaPagination {
69
69
  switch (item) {
70
70
  case 'currentPageLabel':
71
71
  return (h(VegaPaginationCurrentPageLabel, { total: this.total, current: this.current, pageSize: this.pageSize }));
72
- case 'pageSizeSelector':
73
- return (h(VegaPaginationPageSizeSelector, { pageSize: this.pageSize, pageSizeSelectorOptions: this.pageSizeSelectorOptions, onChange: this.onPageSizeSelectorChange }));
72
+ case 'pageSizeSelector': {
73
+ const pageSizeSelectorOptions = this.pageSizeSelectorOptions.includes(this.pageSize)
74
+ ? this.pageSizeSelectorOptions
75
+ : [...this.pageSizeSelectorOptions, this.pageSize];
76
+ return (h(VegaPaginationPageSizeSelector, { pageSize: this.pageSize, pageSizeSelectorOptions: pageSizeSelectorOptions, onChange: this.onPageSizeSelectorChange }));
77
+ }
74
78
  case 'pageSelector':
75
79
  return (h(VegaPaginationPageSelector, { current: this.current, total: this.total, onChange: this.onPageSelectorChange, pageCount: this.pageCount }));
76
80
  case 'goTo':
@@ -133,9 +133,7 @@ export class VegaTableDataSourceController extends VegaSlimmer {
133
133
  ? this.columns.filter((column) => column.sorter && column.sorter !== 'event' && this.sortersMap.has(column.prop))
134
134
  : [];
135
135
  if (sortedColumns.length > 0) {
136
- const sortProp = sortedColumns[sortedColumns.length - 1].prop;
137
- const sortedOrder = this.sortersMap.get(sortProp).order;
138
- this.setCurrentData(this.vegaTableSortController.sortData(this.dataSource, sortProp, sortedOrder));
136
+ this.setCurrentData(this.vegaTableSortController.sortData(this.dataSource, Array.from(this.sortersMap.values())));
139
137
  }
140
138
  else {
141
139
  this.setCurrentData(this.dataSource);
@@ -6,32 +6,11 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  };
7
7
  import { MapToComponentField, MapToComponentMethod, VegaSlimmer } from 'vega-slimmer/core';
8
8
  import { isNonNullable } from '../../../../types/type-guard';
9
+ import { VegaTableSorter } from './vega-table-sorter';
9
10
  /**
10
11
  * The sort controller for the vega-table
11
12
  */
12
13
  export class VegaTableSortController extends VegaSlimmer {
13
- constructor() {
14
- super(...arguments);
15
- /**
16
- * The method to sort the data by sorter which include prop name and order
17
- *
18
- * @param {VegaTableDataSourceItem[]} data - The source that will be sorted
19
- * @param {string} sortProp - The prop name of which prop you want to sort by
20
- * @param {VegaTableSortOrderType} sortOrder - The order of the sorter
21
- * @returns {VegaTableDataSourceItem[]} The sorted data source
22
- */
23
- this.sortData = (data, sortProp, sortOrder) => {
24
- const sorter = this.columns.find((column) => typeof column.sorter === 'function' && column.prop === sortProp).sorter;
25
- const cloneData = data.slice();
26
- if (!sortOrder) {
27
- return cloneData;
28
- }
29
- return cloneData.sort((a, b) => {
30
- const compareResult = sorter(a, b);
31
- return sortOrder === 'asc' ? compareResult : -compareResult;
32
- });
33
- };
34
- }
35
14
  /**
36
15
  * The callback of [watchColumns]{@link VegaTable.watchColumns}
37
16
  */
@@ -45,16 +24,20 @@ export class VegaTableSortController extends VegaSlimmer {
45
24
  * @param {VegaTableSortOrderType} nextSortOrder - The next sorter order
46
25
  */
47
26
  handleHeadSortClick(column, nextSortOrder) {
48
- if (this.sortersMap.has(column.prop)) {
49
- this.sortersMap.delete(column.prop);
27
+ if (!nextSortOrder) {
28
+ if (this.sortersMap.has(column.prop)) {
29
+ this.sortersMap.delete(column.prop);
30
+ }
50
31
  }
51
- if (nextSortOrder) {
52
- this.sortersMap.set(column.prop, { order: nextSortOrder, prop: column.prop });
32
+ else {
33
+ this.sortersMap.set(column.prop, new VegaTableSorter(column.prop, nextSortOrder, column.sorter));
53
34
  }
54
35
  if (column.sorter !== 'event') {
55
- this.vegaTableDataSourceController.setCurrentData(this.sortData(this.vegaTableDataSourceController.getDataSource(), column.prop, nextSortOrder));
36
+ this.vegaTableDataSourceController.setCurrentData(this.sortData(this.vegaTableDataSourceController.getDataSource(), Array.from(this.sortersMap.values())));
56
37
  }
57
- this.changeEventEmitter.emit({ sorters: [...this.sortersMap.values()] });
38
+ this.changeEventEmitter.emit({
39
+ sorters: Array.from(this.sortersMap.values()).map((s) => s.toExternalFormat()),
40
+ });
58
41
  }
59
42
  /**
60
43
  * Sync the default sort order from the columns
@@ -63,7 +46,25 @@ export class VegaTableSortController extends VegaSlimmer {
63
46
  this.columns
64
47
  .filter((column) => isNonNullable(column.sorter) && isNonNullable(column.sortOrder))
65
48
  .forEach((item) => {
66
- this.sortersMap.set(item.prop, { order: item.sortOrder, prop: item.prop });
49
+ this.sortersMap.set(item.prop, new VegaTableSorter(item.prop, item.sortOrder, item.sorter));
50
+ });
51
+ }
52
+ /**
53
+ * The method to sort the data by sorter which include prop name and order
54
+ *
55
+ * @param {VegaTableDataSourceItem[]} data - The source that will be sorted
56
+ * @param {VegaTableSorter[]} sorters - array of sorters ordered by sequence of columns to be sorted
57
+ * @returns {VegaTableDataSourceItem[]} The sorted data source
58
+ */
59
+ sortData(data, sorters) {
60
+ return [...data].sort((a, b) => {
61
+ for (const sorter of sorters) {
62
+ const result = sorter.sort(a, b);
63
+ if (isNonNullable(result)) {
64
+ return result;
65
+ }
66
+ }
67
+ return 0;
67
68
  });
68
69
  }
69
70
  }
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Vega Table Sorter
3
+ * This is a helper class for sorting table data based on defined columns to be sorted
4
+ * Supports multi-column sorting
5
+ */
6
+ export class VegaTableSorter {
7
+ constructor(prop, order, sorter) {
8
+ this.prop = prop;
9
+ this.order = order;
10
+ this.sorter = sorter;
11
+ }
12
+ /**
13
+ * Sort utility
14
+ *
15
+ * @param {VegaTableDataSourceItem} a column value
16
+ * @param {VegaTableDataSourceItem} b column value
17
+ * @returns {Nullable<number>} compare result
18
+ */
19
+ sort(a, b) {
20
+ const compareResult = this.sorter(a, b);
21
+ if (compareResult !== 0) {
22
+ return this.order === 'asc' ? compareResult : -compareResult;
23
+ }
24
+ }
25
+ /**
26
+ * Get params from sorter object for external use
27
+ *
28
+ * @returns {{VegaTableSorterType}} sorter prop and order
29
+ */
30
+ toExternalFormat() {
31
+ return { prop: this.prop, order: this.order };
32
+ }
33
+ }