@globalpayments/vega 2.15.0 → 2.17.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 (281) hide show
  1. package/dist/cjs/{app-globals-6b5136b1.js → app-globals-4e0416c1.js} +15 -8
  2. package/dist/cjs/{childNodesEventPreventSlimmer-5b352793.js → childNodesEventPreventSlimmer-6848c3cf.js} +13 -1
  3. package/dist/cjs/{eventEmitSlimmer-ea57144a.js → eventEmitSlimmer-1d70a720.js} +1 -1
  4. package/dist/cjs/{formFieldControllerSlimmer-9271a8b8.js → formFieldControllerSlimmer-8b54f14d.js} +1 -1
  5. package/dist/cjs/index.cjs.js +11 -10
  6. package/dist/cjs/{internalVegaEventManager-543c20cb.js → internalVegaEventManager-743a124d.js} +2 -2
  7. package/dist/cjs/loader.cjs.js +5 -5
  8. package/dist/cjs/{subStateObserverSlimmer-48ad20a1.js → subStateObserverSlimmer-60e4d6da.js} +28 -14
  9. package/dist/cjs/vega-accordion.cjs.entry.js +4 -4
  10. package/dist/cjs/vega-app-header-button.cjs.entry.js +4 -4
  11. package/dist/cjs/vega-banner.cjs.entry.js +3 -3
  12. package/dist/cjs/vega-breadcrumb.cjs.entry.js +4 -4
  13. package/dist/cjs/vega-button-circle.cjs.entry.js +4 -4
  14. package/dist/cjs/vega-button-group_2.cjs.entry.js +6 -6
  15. package/dist/cjs/vega-button-link.cjs.entry.js +4 -4
  16. package/dist/cjs/vega-button.cjs.entry.js +57 -12
  17. package/dist/cjs/vega-calendar_2.cjs.entry.js +830 -90
  18. package/dist/cjs/vega-carousel.cjs.entry.js +3 -3
  19. package/dist/cjs/vega-checkbox_2.cjs.entry.js +6 -6
  20. package/dist/cjs/vega-chip.cjs.entry.js +4 -4
  21. package/dist/cjs/vega-color-picker.cjs.entry.js +5 -5
  22. package/dist/cjs/vega-combo-box.cjs.entry.js +6 -6
  23. package/dist/cjs/vega-date-picker_2.cjs.entry.js +6 -6
  24. package/dist/cjs/vega-dialog_2.cjs.entry.js +4 -4
  25. package/dist/cjs/vega-dropdown_5.cjs.entry.js +310 -184
  26. package/dist/cjs/vega-field-label.cjs.entry.js +4 -4
  27. package/dist/cjs/vega-form.cjs.entry.js +6 -6
  28. package/dist/cjs/vega-image-uploader.cjs.entry.js +6 -6
  29. package/dist/cjs/vega-input-credit-card.cjs.entry.js +6 -6
  30. package/dist/cjs/vega-input-range.cjs.entry.js +6 -6
  31. package/dist/cjs/vega-input-select.cjs.entry.js +217 -105
  32. package/dist/cjs/vega-input.cjs.entry.js +5 -5
  33. package/dist/cjs/vega-item-toggle.cjs.entry.js +3 -3
  34. package/dist/cjs/vega-left-nav_5.cjs.entry.js +4 -4
  35. package/dist/cjs/vega-loader-wrapper_2.cjs.entry.js +1 -1
  36. package/dist/cjs/vega-page-notification_2.cjs.entry.js +1 -1
  37. package/dist/cjs/vega-pagination.cjs.entry.js +4 -4
  38. package/dist/cjs/vega-popover_2.cjs.entry.js +3 -3
  39. package/dist/cjs/vega-progress-tracker.cjs.entry.js +3 -3
  40. package/dist/cjs/vega-radio_2.cjs.entry.js +6 -6
  41. package/dist/cjs/vega-segment-control.cjs.entry.js +3 -3
  42. package/dist/cjs/vega-selection-tile_2.cjs.entry.js +7 -7
  43. package/dist/cjs/{index-b8881ddc.js → vega-skeleton-loader-controller-8932c0ed.js} +91 -3
  44. package/dist/cjs/vega-skeleton.cjs.entry.js +1 -1
  45. package/dist/cjs/vega-stepper.cjs.entry.js +6 -6
  46. package/dist/cjs/vega-tab-group_2.cjs.entry.js +4 -4
  47. package/dist/cjs/vega-table_8.cjs.entry.js +6 -6
  48. package/dist/cjs/vega-textarea.cjs.entry.js +6 -6
  49. package/dist/cjs/vega-time-picker_2.cjs.entry.js +6 -6
  50. package/dist/cjs/vega-toggle-switch.cjs.entry.js +3 -3
  51. package/dist/cjs/vega.cjs.js +5 -5
  52. package/dist/cjs/{vegaEventId-d7774262.js → vegaEventId-f375a6a3.js} +2 -0
  53. package/dist/cjs/{vegaInternalEventId-173c4941.js → vegaInternalEventId-ac38dd4b.js} +2 -0
  54. package/dist/collection/components/vega-button/slimmers/renderers/vega-button-loading-renderer.js +24 -0
  55. package/dist/collection/components/vega-button/vega-button.css +9 -1
  56. package/dist/collection/components/vega-button/vega-button.js +49 -7
  57. package/dist/collection/components/vega-calendar/slimmers/common/controllers/vega-calendar-current-period-controller.js +38 -24
  58. package/dist/collection/components/vega-calendar/slimmers/common/controllers/vega-calendar-event-controller.js +54 -1
  59. package/dist/collection/components/vega-calendar/slimmers/common/controllers/vega-calendar-view-controller.js +13 -21
  60. package/dist/collection/components/vega-calendar/slimmers/common/helpers/repeatPattern/baseRepeatPattern.js +61 -0
  61. package/dist/collection/components/vega-calendar/slimmers/common/helpers/repeatPattern/calendarEventDailyRepeatPattern.js +70 -0
  62. package/dist/collection/components/vega-calendar/slimmers/common/helpers/repeatPattern/calendarEventMonthlyRepeatPattern.js +90 -0
  63. package/dist/collection/components/vega-calendar/slimmers/common/helpers/repeatPattern/calendarEventRepeatPatternFactory.js +60 -0
  64. package/dist/collection/components/vega-calendar/slimmers/common/helpers/repeatPattern/calendarEventWeeklyRepeatPattern.js +163 -0
  65. package/dist/collection/components/vega-calendar/slimmers/common/helpers/repeatPattern/calendarEventYearlyRepeatPattern.js +92 -0
  66. package/dist/collection/components/vega-calendar/slimmers/common/helpers/test/calendarEventRepeatPatternFactory.test.js +105 -0
  67. package/dist/collection/components/vega-calendar/slimmers/common/layout/test/longEventLayoutGenerator.test.js +0 -5
  68. package/dist/collection/components/vega-calendar/slimmers/common/renderers/vega-calendar-switch-panel.js +1 -1
  69. package/dist/collection/components/vega-calendar/slimmers/day-view/renderers/timed-event/layout/test/dayViewEventLayoutGenerator.test.js +0 -5
  70. package/dist/collection/components/vega-calendar/slimmers/day-view/renderers/vega-calendar-view-with-time-renderer.js +21 -4
  71. package/dist/collection/components/vega-calendar/slimmers/month-view/renderers/vega-calendar-month-view-renderer.js +45 -2
  72. package/dist/collection/components/vega-calendar/vega-calendar.css +2 -1
  73. package/dist/collection/components/vega-calendar/vega-calendar.js +51 -4
  74. package/dist/collection/components/vega-dropdown/slimmers/controllers/vega-dropdown-appender-controller.js +0 -4
  75. package/dist/collection/components/vega-dropdown/slimmers/controllers/vega-dropdown-children-controller.js +14 -1
  76. package/dist/collection/components/vega-dropdown/slimmers/controllers/vega-dropdown-scrollable-controller.js +142 -0
  77. package/dist/collection/components/vega-dropdown/slimmers/renderers/vega-dropdown-list-renderer.js +16 -50
  78. package/dist/collection/components/vega-dropdown/slimmers/renderers/vega-dropdown-renderer.js +8 -2
  79. package/dist/collection/components/vega-dropdown/vega-dropdown-item/slimmers/controllers/vega-dropdown-item-state-controller.js +1 -0
  80. package/dist/collection/components/vega-dropdown/vega-dropdown-item/slimmers/renderers/vega-dropdown-item-renderer.js +7 -5
  81. package/dist/collection/components/vega-dropdown/vega-dropdown-item/vega-dropdown-item.js +1 -1
  82. package/dist/collection/components/vega-dropdown/vega-dropdown.js +5 -2
  83. package/dist/collection/components/vega-input-select/slimmers/controllers/vega-input-select-dropdown-controller.js +22 -40
  84. package/dist/collection/components/vega-input-select/slimmers/controllers/vega-input-select-items-slot-controler.js +62 -0
  85. package/dist/collection/components/vega-input-select/slimmers/controllers/vega-input-select-lazy-load-controller.js +2 -2
  86. package/dist/collection/components/vega-input-select/slimmers/controllers/vega-input-select-source-controller.js +48 -0
  87. package/dist/collection/components/vega-input-select/slimmers/controllers/vega-input-select-value-controller.js +7 -10
  88. package/dist/collection/components/vega-input-select/slimmers/renderers/vega-input-select-dropdown-renderer.js +25 -6
  89. package/dist/collection/components/vega-input-select/vega-input-select.js +10 -2
  90. package/dist/collection/components/vega-loading-indicator/vega-loading-indicator.js +2 -2
  91. package/dist/collection/components/vega-skeleton/vega-skeleton.css +5 -2
  92. package/dist/collection/constants/ui.js +1 -1
  93. package/dist/collection/global/scripts/beforeVegaLoad.js +8 -0
  94. package/dist/collection/helpers/calendar/calendar-date.js +11 -0
  95. package/dist/collection/helpers/calendar/calendar-event.js +73 -24
  96. package/dist/collection/helpers/calendar/calendar-period/calendar-period.abstract.js +8 -0
  97. package/dist/collection/helpers/calendar/calendar-period/day-period.js +1 -0
  98. package/dist/collection/helpers/calendar/calendar-period/month-period.js +16 -3
  99. package/dist/collection/helpers/calendar/calendar-period/week-period.js +1 -0
  100. package/dist/collection/helpers/calendar/test/calendar-event.test.js +23 -20
  101. package/dist/collection/helpers/event-manager/eventID/componentEventIdMap.js +2 -2
  102. package/dist/collection/helpers/event-manager/eventID/vegaEventId.js +1 -1
  103. package/dist/collection/helpers/event-manager/eventID/vegaInternalEventId.js +1 -0
  104. package/dist/collection/helpers/event-manager/slimmers/childNodesEventPreventSlimmer.js +12 -0
  105. package/dist/collection/helpers/event-manager/test/childNodesEventPreventSlimmer.test.js +14 -0
  106. package/dist/collection/helpers/publicApi.js +1 -0
  107. package/dist/collection/helpers/skeleton-loader/tests/vega-skeleton-loader-controller.test.js +139 -0
  108. package/dist/collection/helpers/skeleton-loader/vega-skeleton-loader-controller.js +87 -0
  109. package/dist/collection/helpers/slimmers/sub-state/subStateObserverSlimmer.js +27 -13
  110. package/dist/collection/helpers/slimmers/sub-state/test/sub-state-observer-slimmer.test.js +15 -3
  111. package/dist/collection/helpers/vega-telemetry-helper/test/vegaEnvManager.test.js +1 -1
  112. package/dist/collection/helpers/vega-telemetry-helper/vegaEnvManager.js +2 -2
  113. package/dist/esm/{app-globals-cf903368.js → app-globals-ba85a900.js} +9 -2
  114. package/dist/esm/{childNodesEventPreventSlimmer-ca73e6c1.js → childNodesEventPreventSlimmer-d0da4527.js} +13 -1
  115. package/dist/esm/{eventEmitSlimmer-9c33f04e.js → eventEmitSlimmer-7b16eef9.js} +1 -1
  116. package/dist/esm/{formFieldControllerSlimmer-85ff874e.js → formFieldControllerSlimmer-ea050a17.js} +1 -1
  117. package/dist/esm/index.js +3 -3
  118. package/dist/esm/{internalVegaEventManager-e1501923.js → internalVegaEventManager-71d00966.js} +2 -2
  119. package/dist/esm/loader.js +5 -5
  120. package/dist/esm/{subStateObserverSlimmer-354b33f6.js → subStateObserverSlimmer-2a8a615e.js} +28 -14
  121. package/dist/esm/vega-accordion.entry.js +4 -4
  122. package/dist/esm/vega-app-header-button.entry.js +4 -4
  123. package/dist/esm/vega-banner.entry.js +3 -3
  124. package/dist/esm/vega-breadcrumb.entry.js +4 -4
  125. package/dist/esm/vega-button-circle.entry.js +4 -4
  126. package/dist/esm/vega-button-group_2.entry.js +6 -6
  127. package/dist/esm/vega-button-link.entry.js +4 -4
  128. package/dist/esm/vega-button.entry.js +59 -14
  129. package/dist/esm/vega-calendar_2.entry.js +830 -90
  130. package/dist/esm/vega-carousel.entry.js +3 -3
  131. package/dist/esm/vega-checkbox_2.entry.js +6 -6
  132. package/dist/esm/vega-chip.entry.js +4 -4
  133. package/dist/esm/vega-color-picker.entry.js +5 -5
  134. package/dist/esm/vega-combo-box.entry.js +6 -6
  135. package/dist/esm/vega-date-picker_2.entry.js +6 -6
  136. package/dist/esm/vega-dialog_2.entry.js +4 -4
  137. package/dist/esm/vega-dropdown_5.entry.js +310 -184
  138. package/dist/esm/vega-field-label.entry.js +4 -4
  139. package/dist/esm/vega-form.entry.js +6 -6
  140. package/dist/esm/vega-image-uploader.entry.js +6 -6
  141. package/dist/esm/vega-input-credit-card.entry.js +6 -6
  142. package/dist/esm/vega-input-range.entry.js +6 -6
  143. package/dist/esm/vega-input-select.entry.js +217 -105
  144. package/dist/esm/vega-input.entry.js +5 -5
  145. package/dist/esm/vega-item-toggle.entry.js +3 -3
  146. package/dist/esm/vega-left-nav_5.entry.js +4 -4
  147. package/dist/esm/vega-loader-wrapper_2.entry.js +1 -1
  148. package/dist/esm/vega-page-notification_2.entry.js +1 -1
  149. package/dist/esm/vega-pagination.entry.js +4 -4
  150. package/dist/esm/vega-popover_2.entry.js +3 -3
  151. package/dist/esm/vega-progress-tracker.entry.js +3 -3
  152. package/dist/esm/vega-radio_2.entry.js +6 -6
  153. package/dist/esm/vega-segment-control.entry.js +3 -3
  154. package/dist/esm/vega-selection-tile_2.entry.js +7 -7
  155. package/dist/esm/{index-dd06e5e7.js → vega-skeleton-loader-controller-778b12be.js} +91 -4
  156. package/dist/esm/vega-skeleton.entry.js +1 -1
  157. package/dist/esm/vega-stepper.entry.js +6 -6
  158. package/dist/esm/vega-tab-group_2.entry.js +4 -4
  159. package/dist/esm/vega-table_8.entry.js +6 -6
  160. package/dist/esm/vega-textarea.entry.js +6 -6
  161. package/dist/esm/vega-time-picker_2.entry.js +6 -6
  162. package/dist/esm/vega-toggle-switch.entry.js +3 -3
  163. package/dist/esm/vega.js +5 -5
  164. package/dist/esm/{vegaEventId-680887e1.js → vegaEventId-f279bb62.js} +2 -1
  165. package/dist/esm/{vegaInternalEventId-600b3751.js → vegaInternalEventId-bde5d617.js} +2 -1
  166. package/dist/types/components/vega-button/slimmers/renderers/vega-button-loading-renderer.d.ts +13 -0
  167. package/dist/types/components/vega-button/vega-button.d.ts +16 -0
  168. package/dist/types/components/vega-calendar/slimmers/common/controllers/vega-calendar-current-period-controller.d.ts +12 -9
  169. package/dist/types/components/vega-calendar/slimmers/common/controllers/vega-calendar-event-controller.d.ts +20 -0
  170. package/dist/types/components/vega-calendar/slimmers/common/controllers/vega-calendar-view-controller.d.ts +8 -12
  171. package/dist/types/components/vega-calendar/slimmers/common/helpers/repeatPattern/baseRepeatPattern.d.ts +50 -0
  172. package/dist/types/components/vega-calendar/slimmers/common/helpers/repeatPattern/calendarEventDailyRepeatPattern.d.ts +43 -0
  173. package/dist/types/components/vega-calendar/slimmers/common/helpers/repeatPattern/calendarEventMonthlyRepeatPattern.d.ts +55 -0
  174. package/dist/types/components/vega-calendar/slimmers/common/helpers/repeatPattern/calendarEventRepeatPatternFactory.d.ts +34 -0
  175. package/dist/types/components/vega-calendar/slimmers/common/helpers/repeatPattern/calendarEventWeeklyRepeatPattern.d.ts +99 -0
  176. package/dist/types/components/vega-calendar/slimmers/common/helpers/repeatPattern/calendarEventYearlyRepeatPattern.d.ts +57 -0
  177. package/dist/types/components/vega-calendar/slimmers/common/helpers/test/calendarEventRepeatPatternFactory.test.d.ts +1 -0
  178. package/dist/types/components/vega-calendar/slimmers/day-view/renderers/vega-calendar-view-with-time-renderer.d.ts +8 -0
  179. package/dist/types/components/vega-calendar/slimmers/month-view/renderers/vega-calendar-month-view-renderer.d.ts +23 -0
  180. package/dist/types/components/vega-calendar/types.d.ts +14 -2
  181. package/dist/types/components/vega-calendar/vega-calendar.d.ts +15 -3
  182. package/dist/types/components/vega-dropdown/slimmers/controllers/vega-dropdown-appender-controller.d.ts +0 -1
  183. package/dist/types/components/vega-dropdown/slimmers/controllers/vega-dropdown-children-controller.d.ts +4 -0
  184. package/dist/types/components/vega-dropdown/slimmers/controllers/vega-dropdown-scrollable-controller.d.ts +57 -0
  185. package/dist/types/components/vega-dropdown/slimmers/renderers/vega-dropdown-list-renderer.d.ts +7 -17
  186. package/dist/types/components/vega-dropdown/slimmers/renderers/vega-dropdown-renderer.d.ts +3 -0
  187. package/dist/types/components/vega-dropdown/vega-dropdown.d.ts +2 -1
  188. package/dist/types/components/vega-input-select/slimmers/controllers/vega-input-select-dropdown-controller.d.ts +2 -19
  189. package/dist/types/components/vega-input-select/slimmers/controllers/vega-input-select-items-slot-controler.d.ts +19 -0
  190. package/dist/types/components/vega-input-select/slimmers/controllers/vega-input-select-lazy-load-controller.d.ts +1 -1
  191. package/dist/types/components/vega-input-select/slimmers/controllers/vega-input-select-source-controller.d.ts +29 -0
  192. package/dist/types/components/vega-input-select/slimmers/controllers/vega-input-select-value-controller.d.ts +1 -1
  193. package/dist/types/components/vega-input-select/slimmers/renderers/vega-input-select-dropdown-renderer.d.ts +7 -1
  194. package/dist/types/components/vega-input-select/vega-input-select.d.ts +4 -2
  195. package/dist/types/components.d.ts +17 -1
  196. package/dist/types/constants/ui.d.ts +1 -1
  197. package/dist/types/helpers/calendar/calendar-date.d.ts +8 -0
  198. package/dist/types/helpers/calendar/calendar-event.d.ts +44 -2
  199. package/dist/types/helpers/calendar/calendar-period/calendar-period.abstract.d.ts +10 -2
  200. package/dist/types/helpers/calendar/calendar-period/day-period.d.ts +1 -0
  201. package/dist/types/helpers/calendar/calendar-period/month-period.d.ts +12 -0
  202. package/dist/types/helpers/calendar/calendar-period/week-period.d.ts +1 -0
  203. package/dist/types/helpers/event-manager/eventID/vegaEventId.d.ts +1 -1
  204. package/dist/types/helpers/event-manager/eventID/vegaInternalEventId.d.ts +1 -0
  205. package/dist/types/helpers/event-manager/slimmers/childNodesEventPreventSlimmer.d.ts +6 -0
  206. package/dist/types/helpers/publicApi.d.ts +1 -0
  207. package/dist/types/helpers/skeleton-loader/interface.d.ts +16 -0
  208. package/dist/types/helpers/skeleton-loader/tests/vega-skeleton-loader-controller.test.d.ts +1 -0
  209. package/dist/types/helpers/skeleton-loader/vega-skeleton-loader-controller.d.ts +48 -0
  210. package/dist/types/helpers/slimmers/sub-state/subStateObserverSlimmer.d.ts +9 -0
  211. package/dist/types/types/components.type.d.ts +1 -0
  212. package/dist/types/types/publicApi.d.ts +1 -0
  213. package/dist/vega/index.esm.js +1 -1
  214. package/dist/vega/{p-692df03d.entry.js → p-0ef3d3fd.entry.js} +1 -1
  215. package/dist/vega/p-1080d80a.js +1 -0
  216. package/dist/vega/{p-6f7f9cda.entry.js → p-154a3145.entry.js} +1 -1
  217. package/dist/vega/{p-af72a212.entry.js → p-1bc3348e.entry.js} +1 -1
  218. package/dist/vega/{p-b58e2fae.entry.js → p-255aa39b.entry.js} +1 -1
  219. package/dist/vega/p-29654e12.entry.js +1 -0
  220. package/dist/vega/{p-77b39fe7.entry.js → p-2f905e6f.entry.js} +1 -1
  221. package/dist/vega/p-3490dd8a.entry.js +1 -0
  222. package/dist/vega/p-3fee5d7e.entry.js +1 -0
  223. package/dist/vega/p-44f4924b.js +1 -0
  224. package/dist/vega/p-4546cd3d.entry.js +1 -0
  225. package/dist/vega/p-4bc71294.entry.js +1 -0
  226. package/dist/vega/{p-77ff7c72.js → p-5141bcac.js} +1 -1
  227. package/dist/vega/{p-16608c5a.js → p-51e2c836.js} +1 -1
  228. package/dist/vega/{p-2bb1c1c1.entry.js → p-52bf3ce1.entry.js} +1 -1
  229. package/dist/vega/{p-cd05ab96.entry.js → p-5611cf4c.entry.js} +1 -1
  230. package/dist/vega/{p-1b3a0b54.entry.js → p-5e3f5e8e.entry.js} +1 -1
  231. package/dist/vega/p-642d58ff.js +1 -0
  232. package/dist/vega/{p-9047ee85.entry.js → p-6470d034.entry.js} +1 -1
  233. package/dist/vega/{p-3efc814a.entry.js → p-6877dc17.entry.js} +1 -1
  234. package/dist/vega/{p-1dfddf03.entry.js → p-69cf5269.entry.js} +1 -1
  235. package/dist/vega/{p-ceec3241.entry.js → p-70af1334.entry.js} +1 -1
  236. package/dist/vega/{p-f723790c.entry.js → p-7115c145.entry.js} +1 -1
  237. package/dist/vega/{p-de5db6c9.entry.js → p-795927c4.entry.js} +1 -1
  238. package/dist/vega/{p-6ad96891.entry.js → p-7c1d2dcf.entry.js} +1 -1
  239. package/dist/vega/p-7f9cb4c0.entry.js +1 -0
  240. package/dist/vega/p-82fd348b.entry.js +1 -0
  241. package/dist/vega/p-8543f9c3.entry.js +1 -0
  242. package/dist/vega/{p-d224e798.entry.js → p-8771bf66.entry.js} +1 -1
  243. package/dist/vega/{p-84787f59.entry.js → p-88cf7e56.entry.js} +1 -1
  244. package/dist/vega/{p-eb709bc0.entry.js → p-8e7d6700.entry.js} +1 -1
  245. package/dist/vega/p-9119ad95.entry.js +1 -0
  246. package/dist/vega/p-9799f3d8.entry.js +1 -0
  247. package/dist/vega/{p-61c96c79.entry.js → p-a6c43909.entry.js} +1 -1
  248. package/dist/vega/{p-e1a284b1.entry.js → p-b23ad436.entry.js} +1 -1
  249. package/dist/vega/{p-b708b0c2.entry.js → p-b570e6c7.entry.js} +1 -1
  250. package/dist/vega/{p-ba37eaad.entry.js → p-b6f68efd.entry.js} +1 -1
  251. package/dist/vega/{p-38a22eb3.entry.js → p-b8a47375.entry.js} +1 -1
  252. package/dist/vega/{p-2e59a4f1.entry.js → p-b8d45e28.entry.js} +1 -1
  253. package/dist/vega/{p-99c8fe92.js → p-bba06111.js} +1 -1
  254. package/dist/vega/{p-282648c1.entry.js → p-c1401fab.entry.js} +1 -1
  255. package/dist/vega/{p-a9f61d9e.entry.js → p-cafe75e8.entry.js} +1 -1
  256. package/dist/vega/{p-37d3b80c.entry.js → p-cf40587e.entry.js} +1 -1
  257. package/dist/vega/p-d126407a.js +1 -0
  258. package/dist/vega/{p-c849236f.entry.js → p-e373bc4d.entry.js} +1 -1
  259. package/dist/vega/p-eacf64be.js +1 -0
  260. package/dist/vega/{p-1d628d23.entry.js → p-ec4afdaa.entry.js} +1 -1
  261. package/dist/vega/p-f0330fcc.js +1 -0
  262. package/dist/vega/{p-c0ca1a1c.entry.js → p-f8a97354.entry.js} +1 -1
  263. package/dist/vega/{p-8c62c493.entry.js → p-f96ee751.entry.js} +1 -1
  264. package/dist/vega/vega.esm.js +1 -1
  265. package/package.json +1 -1
  266. package/dist/vega/p-009405b6.entry.js +0 -1
  267. package/dist/vega/p-38b01f3f.entry.js +0 -1
  268. package/dist/vega/p-38d19c4f.entry.js +0 -1
  269. package/dist/vega/p-4d2859c9.entry.js +0 -1
  270. package/dist/vega/p-557516a4.entry.js +0 -1
  271. package/dist/vega/p-592e755b.entry.js +0 -1
  272. package/dist/vega/p-999e1318.js +0 -1
  273. package/dist/vega/p-a6cb10e8.entry.js +0 -1
  274. package/dist/vega/p-a9c3e9fd.js +0 -1
  275. package/dist/vega/p-aae8855d.js +0 -1
  276. package/dist/vega/p-b3056874.entry.js +0 -1
  277. package/dist/vega/p-c47d4933.js +0 -1
  278. package/dist/vega/p-d978ee2c.entry.js +0 -1
  279. package/dist/vega/p-eb461dad.entry.js +0 -1
  280. package/dist/vega/p-f1d8fd1c.js +0 -1
  281. package/dist/vega/p-fda33444.js +0 -1
@@ -1,3 +1,4 @@
1
+ import calendarEventRepeatPatternFactory from '../../components/vega-calendar/slimmers/common/helpers/repeatPattern/calendarEventRepeatPatternFactory';
1
2
  import { generateUUID } from '../../utils/misc';
2
3
  import { CalendarDate } from './calendar-date';
3
4
  const CalendarDateFormatReg = /^\d{1,2}\/\d{1,2}\/\d{4}/;
@@ -10,12 +11,20 @@ export class CalendarEvent {
10
11
  * @param {VegaCalendarRawEvent} eventOptions - The `eventOptions` parameter in the constructor
11
12
  * represents the raw event data for a Vega calendar event. It contains information such as the event
12
13
  * title, start and end dates, location, description, and any other relevant details about the event.
14
+ * @param {string} eventKey If a value is not provided for `eventKey`, a UUID (Universally
15
+ * Unique Identifier) will be generated as a default value. This identifier is used to distinguish
16
+ * different events and can be helpful for tracking
13
17
  */
14
- constructor(eventOptions) {
18
+ constructor(eventOptions, eventKey) {
19
+ // the default value is 1 when the event end date is same as start date
20
+ this._eventSpansDays = 1;
21
+ this.repeatPattern = null;
15
22
  this._event = eventOptions;
16
- this._eventKey = generateUUID();
23
+ this._eventKey = eventKey || generateUUID();
17
24
  this.checkEventRequireField(eventOptions);
18
25
  this.initDate(eventOptions);
26
+ this.initEventSpansDays();
27
+ this.initRepeatPattern();
19
28
  }
20
29
  /**
21
30
  * The function returns the raw event data for a VegaCalendar event.
@@ -74,12 +83,12 @@ export class CalendarEvent {
74
83
  return !!this._event.isAllDay;
75
84
  }
76
85
  /**
77
- * The function isRepeatEvent returns a boolean value based on whether the event's repeat property is not equal to 'none'.
86
+ * The function isRepeatEvent returns a boolean value based on whether the event's repeatOptions property is not equal to 'none'.
78
87
  *
79
88
  * @returns {boolean} The method `isRepeatEvent` returns a boolean value indicating whether the `_event` has a repeat value other than 'none'.
80
89
  */
81
90
  get isRepeatEvent() {
82
- return this._event.repeat !== 'none';
91
+ return this.repeatPattern !== null;
83
92
  }
84
93
  /**
85
94
  * The function returns the start date property of an object.
@@ -113,16 +122,39 @@ export class CalendarEvent {
113
122
  get endTime() {
114
123
  return this._endTime;
115
124
  }
125
+ /**
126
+ * This function returns the number of days that an event spans.
127
+ *
128
+ * @returns {number} The method `get eventSpansDays()` is returning the value of the property
129
+ * `_eventSpansDays`, which is of type `number`.
130
+ */
131
+ get eventSpansDays() {
132
+ return this._eventSpansDays;
133
+ }
134
+ /**
135
+ * The function `copyTo` copies a calendar event with updated start and end dates.
136
+ *
137
+ * @param {string} eventKey - The `eventKey` parameter in the `copyTo` function is a string that represents the key or identifier of the new calendar event that will be created.
138
+ * @param {CalendarDate} startDate - The `startDate` parameter in the `copyTo` function represents
139
+ * the starting date of a calendar event. It is of type `CalendarDate`, which may contain information such as the day, month, and year of the event.
140
+ * @returns {CalendarEvent} A new `CalendarEvent` object is being returned with the properties from the original
141
+ * `_event` object (excluding `repeatOptions`) and the `startDate` and `endDate` properties set to
142
+ * the `toDate()` values of the `startDate` and `endDate` parameters.
143
+ */
144
+ copyTo(eventKey, startDate) {
145
+ const endDate = this._eventSpansDays > 1
146
+ ? new Date(startDate.year, startDate.month - 1, startDate.date + (this._eventSpansDays - 1))
147
+ : startDate.toDate();
148
+ const result = new CalendarEvent(Object.assign(Object.assign({}, this._event), { startDate: startDate.toDate(), endDate: endDate, startTime: this.startTime, endTime: this.endTime }), eventKey);
149
+ return result;
150
+ }
116
151
  /**
117
152
  * Check the event is a group event or not
118
153
  *
119
154
  * @returns {boolean} true or false
120
155
  */
121
156
  isGroupEvent() {
122
- const { year: startYear, month: startMonth, date: startDay, } = CalendarDate.from(this.startDate);
123
- const { year: endYear, month: endMonth, date: endDay, } = CalendarDate.from(this.endDate);
124
- return (!(startYear === endYear && startMonth === endMonth && startDay === endDay) &&
125
- this._event.repeat !== 'daily');
157
+ return this._eventSpansDays > 1;
126
158
  }
127
159
  /**
128
160
  * This TypeScript function checks if a given date falls within the range of a calendar event based on its start and end dates, considering different repeat types like daily, weekly, monthly, and yearly.
@@ -135,23 +167,8 @@ export class CalendarEvent {
135
167
  const { startDate, endDate } = this;
136
168
  const startCalendarDate = CalendarDate.from(startDate);
137
169
  const endCalendarDate = CalendarDate.from(new Date(endDate.getFullYear(), endDate.getMonth(), endDate.getDate() + 1));
138
- const repeat = this._event.repeat;
139
170
  const currentDate = date.toDate();
140
- if (startCalendarDate.toDate() <= currentDate) {
141
- switch (repeat) {
142
- case 'daily':
143
- return true;
144
- case 'weekly':
145
- return currentDate.getDay() === startDate.getDay();
146
- case 'monthly':
147
- return date.date === startCalendarDate.date;
148
- case 'yearly':
149
- return date.month === startCalendarDate.month && date.date === startCalendarDate.date;
150
- default:
151
- return endCalendarDate.toDate() > currentDate;
152
- }
153
- }
154
- return false;
171
+ return startCalendarDate.toDate() <= currentDate && endCalendarDate.toDate() > currentDate;
155
172
  }
156
173
  /**
157
174
  * Get the number of minutes the event lasted
@@ -166,6 +183,21 @@ export class CalendarEvent {
166
183
  const endDate = new Date(now.year, now.month, now.date, Number(endHour) === 0 && Number(startHour) !== 0 ? 24 : Number(endHour), Number(endMinutes));
167
184
  return (endDate.valueOf() - startDate.valueOf()) / (60 * 1000);
168
185
  }
186
+ /**
187
+ * This function returns an array of repeat series based on a given calendar period.
188
+ *
189
+ * @param {CalendarPeriod} period - The `period` parameter in the `getRepeatSeries` method is of type
190
+ * `CalendarPeriod`. It represents a specific time period within a calendar, typically defined by a
191
+ * start date and an end date. The method uses this period to generate a series of repeated events
192
+ * based on a daily repeat pattern specified
193
+ * @returns {CalendarDate[]} repeat start date array
194
+ */
195
+ getRepeatSeries(period) {
196
+ if (this.repeatPattern) {
197
+ return this.repeatPattern.getRepeatSeries(period, this._eventSpansDays);
198
+ }
199
+ return [];
200
+ }
169
201
  /**
170
202
  * The function `convertTimeTo24Hour` converts a time string from 12-hour format to 24-hour format in TypeScript.
171
203
  *
@@ -253,4 +285,21 @@ export class CalendarEvent {
253
285
  this._endTime = this.convertTimeTo24Hour(endTime);
254
286
  }
255
287
  }
288
+ /**
289
+ * The function initializes a repeat pattern controller for a calendar event with specified start and end dates and repeat options.
290
+ */
291
+ initRepeatPattern() {
292
+ if (this._event.repeatOptions && this._event.repeatOptions.frequency) {
293
+ this.repeatPattern = calendarEventRepeatPatternFactory.getPattern(this._startDate, this._event.repeatOptions);
294
+ }
295
+ }
296
+ /**
297
+ * Initializes the event cross days by the event start date and end date.
298
+ */
299
+ initEventSpansDays() {
300
+ const start = CalendarDate.from(this.startDate);
301
+ const end = CalendarDate.from(this.endDate);
302
+ this._eventSpansDays =
303
+ (end.toDate().valueOf() - start.toDate().valueOf()) / (24 * 60 * 60 * 1000) + 1;
304
+ }
256
305
  }
@@ -41,6 +41,14 @@ export class CalendarPeriod {
41
41
  get count() {
42
42
  return this._count;
43
43
  }
44
+ /**
45
+ * This function returns the type of the object.
46
+ *
47
+ * @type {string}
48
+ */
49
+ get type() {
50
+ return this._type;
51
+ }
44
52
  /**
45
53
  * Go to a specific date.
46
54
  *
@@ -6,6 +6,7 @@ import { CalendarDate } from '../calendar-date';
6
6
  export class DayPeriod extends CalendarPeriod {
7
7
  constructor(current) {
8
8
  super(DayPeriod.DISPLAY_DATE_COUNT, current);
9
+ this._type = 'day';
9
10
  }
10
11
  /**
11
12
  * @inheritDoc
@@ -5,9 +5,22 @@ import { CalendarDate } from '../calendar-date';
5
5
  */
6
6
  export class MonthPeriod extends CalendarPeriod {
7
7
  constructor(current) {
8
- const date = current || CalendarDate.from(new Date());
9
- const firstDayOfMonth = new CalendarDate(date.year, date.month, 1);
10
- super(MonthPeriod.DISPLAY_DATE_COUNT, firstDayOfMonth);
8
+ super(MonthPeriod.DISPLAY_DATE_COUNT, MonthPeriod.getMonthFirstDay(current));
9
+ this._type = 'month';
10
+ }
11
+ /**
12
+ * The function `getMonthFirstDay` returns the first day of a given month in a calendar.
13
+ *
14
+ * @param {CalendarDate} [calendarDate] - The `calendarDate` parameter is an optional parameter of
15
+ * type `CalendarDate`. It represents a specific date in the calendar. If a `calendarDate` is
16
+ * provided, the function will use that date to determine the first day of the month. If no
17
+ * `calendarDate` is provided, the function
18
+ * @returns {CalendarDate} A new `CalendarDate` object representing the first day of the month from the provided
19
+ * `calendarDate` parameter or the current date if no parameter is provided.
20
+ */
21
+ static getMonthFirstDay(calendarDate) {
22
+ const date = calendarDate || CalendarDate.from(new Date());
23
+ return new CalendarDate(date.year, date.month, 1);
11
24
  }
12
25
  /**
13
26
  * @inheritDoc
@@ -7,6 +7,7 @@ import { CalendarDate } from '../calendar-date';
7
7
  export class WeekPeriod extends CalendarPeriod {
8
8
  constructor(current) {
9
9
  super(WeekPeriod.DISPLAY_DATE_COUNT, current);
10
+ this._type = 'week';
10
11
  }
11
12
  /**
12
13
  * @inheritDoc
@@ -1,5 +1,6 @@
1
1
  import { CalendarDate } from '../calendar-date';
2
2
  import { CalendarEvent } from '../calendar-event';
3
+ import { MonthPeriod } from '../calendar-period/month-period';
3
4
  const mockDate = new Date(2024, 5, 13, 13, 44);
4
5
  const mockStringDate = '06/13/2024';
5
6
  const rawEvent = {
@@ -10,7 +11,6 @@ const rawEvent = {
10
11
  startTime: '',
11
12
  endTime: '14:44',
12
13
  disabled: false,
13
- repeat: 'none',
14
14
  isAllDay: false,
15
15
  variant: 'secondary',
16
16
  color: 'red',
@@ -32,6 +32,8 @@ describe('calendar-event', () => {
32
32
  expect(calendarEvent.disabled).toEqual(false);
33
33
  expect(calendarEvent.color).toEqual('red');
34
34
  expect(calendarEvent.event).toEqual(rawEvent);
35
+ expect(calendarEvent.eventSpansDays).toEqual(1);
36
+ expect(calendarEvent.getRepeatSeries(new MonthPeriod(new CalendarDate(2024, 6, 1)))).toEqual([]);
35
37
  });
36
38
  it('should throw error when event options is incorrect', () => {
37
39
  function wrongStartDate() {
@@ -83,7 +85,10 @@ describe('calendar-event', () => {
83
85
  it('should get group event correct', () => {
84
86
  const calendarEvent1 = new CalendarEvent(Object.assign(Object.assign({}, rawEvent), { endDate: '06/14/2024', endTime: '18:00' }));
85
87
  expect(calendarEvent1.isGroupEvent()).toBeTruthy();
86
- const calendarEvent2 = new CalendarEvent(Object.assign(Object.assign({}, rawEvent), { endDate: '06/14/2024', endTime: '18:00', repeat: 'daily' }));
88
+ const calendarEvent2 = new CalendarEvent(Object.assign(Object.assign({}, rawEvent), { endDate: '06/13/2024', endTime: '18:00', repeatOptions: {
89
+ frequency: 'daily',
90
+ interval: 1,
91
+ } }));
87
92
  expect(calendarEvent2.isGroupEvent()).toBeFalsy();
88
93
  });
89
94
  it('should check current day event correct with normal event', () => {
@@ -91,24 +96,7 @@ describe('calendar-event', () => {
91
96
  expect(calendarEvent1.isCurrentDayEvent(new CalendarDate(2024, 6, 14))).toBeTruthy();
92
97
  expect(calendarEvent1.isCurrentDayEvent(new CalendarDate(2024, 6, 15))).toBeFalsy();
93
98
  });
94
- it('should check current day event correct with repeat event', () => {
95
- const calendarEvent1 = new CalendarEvent(Object.assign(Object.assign({}, rawEvent), { endDate: '06/14/2024', repeat: 'daily' }));
96
- expect(calendarEvent1.isCurrentDayEvent(new CalendarDate(2024, 6, 12))).toBeFalsy();
97
- expect(calendarEvent1.isCurrentDayEvent(new CalendarDate(2024, 6, 13))).toBeTruthy();
98
- const calendarEvent2 = new CalendarEvent(Object.assign(Object.assign({}, rawEvent), { endDate: '06/14/2024', repeat: 'weekly' }));
99
- expect(calendarEvent2.isCurrentDayEvent(new CalendarDate(2024, 6, 19))).toBeFalsy();
100
- expect(calendarEvent2.isCurrentDayEvent(new CalendarDate(2024, 6, 13))).toBeTruthy();
101
- expect(calendarEvent2.isCurrentDayEvent(new CalendarDate(2024, 6, 20))).toBeTruthy();
102
- const calendarEvent3 = new CalendarEvent(Object.assign(Object.assign({}, rawEvent), { endDate: '06/14/2024', repeat: 'monthly' }));
103
- expect(calendarEvent3.isCurrentDayEvent(new CalendarDate(2024, 6, 13))).toBeTruthy();
104
- expect(calendarEvent3.isCurrentDayEvent(new CalendarDate(2024, 7, 12))).toBeFalsy();
105
- expect(calendarEvent3.isCurrentDayEvent(new CalendarDate(2024, 7, 13))).toBeTruthy();
106
- const calendarEvent4 = new CalendarEvent(Object.assign(Object.assign({}, rawEvent), { endDate: '06/14/2024', repeat: 'yearly' }));
107
- expect(calendarEvent4.isCurrentDayEvent(new CalendarDate(2024, 6, 13))).toBeTruthy();
108
- expect(calendarEvent4.isCurrentDayEvent(new CalendarDate(2025, 6, 13))).toBeTruthy();
109
- expect(calendarEvent4.isCurrentDayEvent(new CalendarDate(2024, 7, 14))).toBeFalsy();
110
- });
111
- it('should check current day event correct with repeat event', () => {
99
+ it('should get event duration correct', () => {
112
100
  const calendarEvent1 = new CalendarEvent(Object.assign(Object.assign({}, rawEvent), { startDate: '06/14/2024', startTime: '10:00', endTime: '11:00', endDate: '06/14/2024' }));
113
101
  expect(calendarEvent1.getEventDuration()).toEqual(60);
114
102
  const calendarEvent2 = new CalendarEvent(Object.assign(Object.assign({}, rawEvent), { startDate: '06/14/2024', startTime: '23:00', endTime: '00:00', endDate: '06/14/2024' }));
@@ -127,4 +115,19 @@ describe('calendar-event', () => {
127
115
  expect(calendarEvent3.startTime).toEqual('13:00');
128
116
  expect(calendarEvent3.endTime).toEqual('14:30');
129
117
  });
118
+ it('should create event correct when call copyTo', () => {
119
+ const calendarEvent1 = new CalendarEvent(Object.assign(Object.assign({}, rawEvent), { startDate: '06/14/2024', endDate: '06/15/2024', startTime: '12:00 am', endTime: '12:00 pm', repeatOptions: {
120
+ frequency: 'daily',
121
+ interval: 2,
122
+ until: '06/16/2024',
123
+ } }));
124
+ const copyEvent1 = calendarEvent1.copyTo('test', new CalendarDate(2024, 6, 14));
125
+ const copyEvent2 = calendarEvent1.copyTo('test', new CalendarDate(2024, 6, 16));
126
+ expect(copyEvent1.startDate.getDate()).toEqual(14);
127
+ expect(copyEvent1.endDate.getDate()).toEqual(15);
128
+ expect(copyEvent1.eventKey).toEqual('test');
129
+ expect(copyEvent2.startDate.getDate()).toEqual(16);
130
+ expect(copyEvent2.endDate.getDate()).toEqual(17);
131
+ expect(copyEvent2.eventKey).toEqual('test');
132
+ });
130
133
  });
@@ -1,4 +1,4 @@
1
- import { VegaExpand, VegaClick, VegaDropdownClick, VegaClose, VegaChange, VegaEventClick, VegaPageUpdate, VegaCreate, VegaSearch, VegaDropdownShow, VegaDropdownHide, VegaDropdownSearch, VegaFormSubmit, VegaFormReset, VegaValidate, VegaRemove, VegaCancel, VegaFocus, VegaBlur, VegaToggleStatus, VegaOpen, VegaStateUpdate, VegaGroupClick, VegaMenuClick, VegaActionClick, VegaPageSizeChange, VegaPopoverShow, VegaPopoverHide, VegaCurrentStepUpdate, VegaSelectChange, VegaSelectAllChange, VegaRowClick, } from './vegaEventId';
1
+ import { VegaExpand, VegaClick, VegaDropdownClick, VegaClose, VegaChange, VegaEventClick, VegaDateDblClick, VegaPageUpdate, VegaCreate, VegaSearch, VegaDropdownShow, VegaDropdownHide, VegaDropdownSearch, VegaFormSubmit, VegaFormReset, VegaValidate, VegaRemove, VegaCancel, VegaFocus, VegaBlur, VegaToggleStatus, VegaOpen, VegaStateUpdate, VegaGroupClick, VegaMenuClick, VegaActionClick, VegaPageSizeChange, VegaPopoverShow, VegaPopoverHide, VegaCurrentStepUpdate, VegaSelectChange, VegaSelectAllChange, VegaRowClick, } from './vegaEventId';
2
2
  const entries = [
3
3
  ['vega-accordion', [VegaExpand]],
4
4
  ['vega-app-header-button', [VegaClick, VegaDropdownClick]],
@@ -8,7 +8,7 @@ const entries = [
8
8
  ['vega-button-circle', [VegaClick]],
9
9
  ['vega-button-group', [VegaClick]],
10
10
  ['vega-button-link', [VegaClick]],
11
- ['vega-calendar', [VegaChange, VegaEventClick]],
11
+ ['vega-calendar', [VegaChange, VegaEventClick, VegaDateDblClick]],
12
12
  ['vega-carousel', [VegaPageUpdate]],
13
13
  ['vega-checkbox', [VegaChange]],
14
14
  ['vega-checkbox-group', [VegaChange]],
@@ -86,5 +86,5 @@ export const VegaDropdownHide = new VegaEventID('vegaHide', 'dropdownHide');
86
86
  export const VegaDropdownSearch = new VegaEventID('vegaSearch', 'dropdownSearch');
87
87
  export const VegaActionClick = new VegaEventID('vegaActionClick', 'actionClick');
88
88
  export const VegaEventClick = new VegaEventID('vegaEventClick', 'eventClick');
89
- export const VegaDateClick = new VegaEventID('vegaDateClick', 'dateClick');
89
+ export const VegaDateDblClick = new VegaEventID('vegaDateDblClick', 'dateDblClick');
90
90
  export const HTMLNativeEventIds = [VegaChange, VegaClick, VegaFocus, VegaBlur];
@@ -25,3 +25,4 @@ export const VegaInternalLeftNavLinkClick = new VegaInternalEventID('leftNavLink
25
25
  export const VegaInternalSubStatePull = new VegaInternalEventID('subStatePull');
26
26
  export const VegaInternalSubStatePush = new VegaInternalEventID('subStatePush');
27
27
  export const VegaInternalCalendarMonthEventsChange = new VegaInternalEventID('monthEventsChange');
28
+ export const VegaInternalDropdownTemplateItemsChange = new VegaInternalEventID('dropdownTemplateItemsChange');
@@ -30,6 +30,9 @@ export class ChildNodesEventPreventSlimmer extends VegaSlimmer {
30
30
  */
31
31
  this.preventChildEvent = (event) => {
32
32
  const hostElement = this.getHostElement();
33
+ if (this.shouldSkipEventPrevent()) {
34
+ return;
35
+ }
33
36
  if (typeof this.customPreventHandle === 'function') {
34
37
  this.customPreventHandle(event);
35
38
  }
@@ -109,6 +112,15 @@ export class ChildNodesEventPreventSlimmer extends VegaSlimmer {
109
112
  !!jqueryDelegatedEvent &&
110
113
  jqueryDelegatedStrategyController.isSupportDelegated(this.host, eventId));
111
114
  }
115
+ /**
116
+ * The function `shouldSkipEventPrevent` checks if a host element has a specific dataset value to determine whether event prevention should be skipped.
117
+ *
118
+ * @returns {boolean} If the `hostElement` exists and has a `dataset.vegaNoEventPrevent` attribute with a value of `'true'`, then the function returns `true`. Otherwise, it returns `false`.
119
+ */
120
+ shouldSkipEventPrevent() {
121
+ const hostElement = this.getHostElement();
122
+ return hostElement && hostElement.dataset.vegaNoEventPrevent === 'true';
123
+ }
112
124
  }
113
125
  __decorate([
114
126
  MapToComponentField()
@@ -107,6 +107,20 @@ describe('ChildNodesEventPreventSlimmer', () => {
107
107
  mockedComponent.disconnectedCallback();
108
108
  expect(mockedComponent['slimmer']['isEventListenerAdded']).toBeFalsy();
109
109
  });
110
+ test('should skip prevent child event when set skip flag after component did render', () => {
111
+ const mockedComponent = new MockedSlimmer();
112
+ const host = document.createElement('div');
113
+ mockedComponent.host = host;
114
+ host.innerHTML = `<p><span></span></p>`;
115
+ mockedComponent.parentElement = host.querySelector('p');
116
+ const mockListener = jest.fn();
117
+ host.addEventListener('vegaClick', mockListener);
118
+ mockedComponent.componentDidLoad();
119
+ mockedComponent.parentElement.setAttribute('data-vega-no-event-prevent', 'true');
120
+ host.dispatchEvent(new CustomEvent('vegaClick', { bubbles: true, cancelable: true }));
121
+ host.querySelector('span').dispatchEvent(new CustomEvent('vegaClick', { bubbles: true, cancelable: true }));
122
+ expect(mockListener).toBeCalledTimes(2);
123
+ });
110
124
  });
111
125
  describe('shadow dom', () => {
112
126
  class MockedShadowComponent {
@@ -11,3 +11,4 @@ export { BaseStrategy as VegaJQueryDelegatedEventStrategy } from './event-manage
11
11
  export { VegaIconManager } from './icon/iconManager';
12
12
  export { ValidCreditCardNumberRule } from './validator/rules/validCreditCardNumberRule';
13
13
  export { waitForVega } from './common';
14
+ export { VegaSkeletonLoader } from '../helpers/skeleton-loader/vega-skeleton-loader-controller';
@@ -0,0 +1,139 @@
1
+ jest.mock('../../../utils/misc', () => ({
2
+ generateUUID: () => 'TEST_UUID',
3
+ }));
4
+ import { VegaSkeletonLoader } from '../vega-skeleton-loader-controller';
5
+ describe('vega-skeleton-loader-controller', () => {
6
+ beforeEach(() => {
7
+ document.body.innerHTML = `
8
+ <div class="target-class"></div>
9
+ `;
10
+ });
11
+ afterEach(() => {
12
+ VegaSkeletonLoader.unLoadAll();
13
+ document.body.innerHTML = '';
14
+ });
15
+ it('should render a skeleton in target', () => {
16
+ VegaSkeletonLoader.load({
17
+ target: '.target-class',
18
+ });
19
+ expect(document.body).toMatchInlineSnapshot(`
20
+ <body>
21
+ <div class="target-class">
22
+ <vega-skeleton data-vega-skeleton-loader-key="vega-skeleton-loader-TEST_UUID"></vega-skeleton>
23
+ </div>
24
+ </body>
25
+ `);
26
+ });
27
+ it('should remove the skeleton when call unLoad', () => {
28
+ const key = VegaSkeletonLoader.load({
29
+ target: '.target-class',
30
+ });
31
+ expect(document.body).toMatchInlineSnapshot(`
32
+ <body>
33
+ <div class="target-class">
34
+ <vega-skeleton data-vega-skeleton-loader-key="vega-skeleton-loader-TEST_UUID"></vega-skeleton>
35
+ </div>
36
+ </body>
37
+ `);
38
+ expect(VegaSkeletonLoader['loaderMap'].size).toEqual(1);
39
+ VegaSkeletonLoader.unLoad(key);
40
+ expect(VegaSkeletonLoader['loaderMap'].size).toEqual(0);
41
+ expect(document.body).toMatchInlineSnapshot(`
42
+ <body>
43
+ <div class="target-class"></div>
44
+ </body>
45
+ `);
46
+ });
47
+ it('should remove all the skeletons when call unLoadAll', () => {
48
+ VegaSkeletonLoader.load({
49
+ target: '.target-class',
50
+ });
51
+ expect(VegaSkeletonLoader['loaderMap'].size).toEqual(1);
52
+ expect(document.body).toMatchInlineSnapshot(`
53
+ <body>
54
+ <div class="target-class">
55
+ <vega-skeleton data-vega-skeleton-loader-key="vega-skeleton-loader-TEST_UUID"></vega-skeleton>
56
+ </div>
57
+ </body>
58
+ `);
59
+ VegaSkeletonLoader.unLoadAll();
60
+ expect(VegaSkeletonLoader['loaderMap'].size).toEqual(0);
61
+ expect(document.body).toMatchInlineSnapshot(`
62
+ <body>
63
+ <div class="target-class"></div>
64
+ </body>
65
+ `);
66
+ });
67
+ it('should render a skeleton with type', () => {
68
+ VegaSkeletonLoader.load({
69
+ target: '.target-class',
70
+ type: 'full-width-paragraph',
71
+ });
72
+ expect(document.body.querySelector('vega-skeleton').type).toEqual('full-width-paragraph');
73
+ });
74
+ it('should render a skeleton with width and height', () => {
75
+ VegaSkeletonLoader.load({
76
+ target: '.target-class',
77
+ type: 'image',
78
+ width: '200px',
79
+ height: '100px',
80
+ });
81
+ const skeletonEl = document.querySelector('vega-skeleton');
82
+ expect(skeletonEl.type).toEqual('image');
83
+ expect(skeletonEl.width).toEqual('200px');
84
+ expect(skeletonEl.height).toEqual('100px');
85
+ });
86
+ it('should render complex items', () => {
87
+ VegaSkeletonLoader.load({
88
+ target: '.target-class',
89
+ items: [
90
+ { type: 'ellipse', width: '30px', height: '30px' },
91
+ { type: 'text', width: '100px' },
92
+ ],
93
+ });
94
+ const skeletons = document.querySelectorAll('vega-skeleton');
95
+ expect(document.body).toMatchInlineSnapshot(`
96
+ <body>
97
+ <div class="target-class">
98
+ <vega-skeleton data-vega-skeleton-loader-key="vega-skeleton-loader-TEST_UUID"></vega-skeleton>
99
+ <vega-skeleton data-vega-skeleton-loader-key="vega-skeleton-loader-TEST_UUID"></vega-skeleton>
100
+ </div>
101
+ </body>
102
+ `);
103
+ expect({ type: skeletons[0].type, width: skeletons[0].width, height: skeletons[0].height }).toEqual({
104
+ type: 'ellipse',
105
+ width: '30px',
106
+ height: '30px',
107
+ });
108
+ expect({ type: skeletons[1].type, width: skeletons[1].width }).toEqual({
109
+ type: 'text',
110
+ width: '100px',
111
+ });
112
+ });
113
+ it('should render item with wrapped layout', () => {
114
+ VegaSkeletonLoader.load({
115
+ target: '.target-class',
116
+ items: [
117
+ { type: 'image', width: '100%', height: '200px' },
118
+ { type: 'paragraph', width: '100%' },
119
+ ],
120
+ layout: {
121
+ props: {
122
+ direction: 'col',
123
+ gap: 'size-20',
124
+ },
125
+ style: { width: 'calc(33% - 12px)' },
126
+ },
127
+ });
128
+ expect(document.body).toMatchInlineSnapshot(`
129
+ <body>
130
+ <div class="target-class">
131
+ <vega-flex class="vega-skeleton-loader-template-container" data-vega-skeleton-loader-key="vega-skeleton-loader-TEST_UUID" style="width: calc(33% - 12px);">
132
+ <vega-skeleton></vega-skeleton>
133
+ <vega-skeleton></vega-skeleton>
134
+ </vega-flex>
135
+ </div>
136
+ </body>
137
+ `);
138
+ });
139
+ });
@@ -0,0 +1,87 @@
1
+ import { generateUUID } from '../../utils/misc';
2
+ /**
3
+ * Vega Skeleton Loader Controller to show skeletons in the target elements
4
+ */
5
+ class VegaSkeletonLoaderController {
6
+ constructor() {
7
+ this.loaderMap = new Map();
8
+ }
9
+ /**
10
+ * Load the skeletons in the target elements
11
+ *
12
+ * @param { VegaSkeletonLoaderConfig } config - Configuration for the loading function
13
+ * @param {string} config.target - Target elements to show the skeletons.
14
+ * @param {VegaSkeletonLoaderConfig.type} [config.type = 'text'] - Type of the skeleton.
15
+ * @param {VegaSkeletonLoaderConfig.width} config.width - Width of the skeleton.
16
+ * @param {VegaSkeletonLoaderConfig.height} config.height - Height of the skeleton.
17
+ * @param {VegaSkeletonLoaderConfig.items} config.items - Configuration for multiple skeleton items.
18
+ * @param {VegaSkeletonLoaderConfig.layout} config.layout - Layout of the skeleton items.
19
+ * @returns { string } - Key of the loaded skeleton items.
20
+ */
21
+ load({ target, type = 'text', width, height, items, layout }) {
22
+ const targets = Array.from(document.body.querySelectorAll(target));
23
+ const key = `vega-skeleton-loader-${generateUUID()}`;
24
+ const loaderItems = [];
25
+ targets.forEach((target) => {
26
+ const skeletonsLoaders = !items
27
+ ? [this.createSkeleton({ type, width, height })]
28
+ : items.map(this.createSkeleton);
29
+ const itemsWithKey = (layout ? [this.wrapLayout(skeletonsLoaders, layout)] : skeletonsLoaders).map((item) => {
30
+ item.dataset[VegaSkeletonLoaderController.LOADER_DATA_SET_KEY] = key;
31
+ return item;
32
+ });
33
+ loaderItems.push(...itemsWithKey);
34
+ target.append(...itemsWithKey);
35
+ });
36
+ this.loaderMap.set(key, loaderItems);
37
+ return key;
38
+ }
39
+ /**
40
+ * Remove the skeletons from the dom.
41
+ *
42
+ * @param {string} key - The key returned from {@link VegaSkeletonLoaderController.load}.
43
+ */
44
+ unLoad(key) {
45
+ if (this.loaderMap.has(key)) {
46
+ this.loaderMap.get(key).forEach((item) => item.remove());
47
+ this.loaderMap.delete(key);
48
+ }
49
+ }
50
+ /**
51
+ * Remove all the skeletons from the dom.
52
+ */
53
+ unLoadAll() {
54
+ for (const items of this.loaderMap.values()) {
55
+ items.forEach((item) => item.remove());
56
+ }
57
+ this.loaderMap.clear();
58
+ }
59
+ /**
60
+ * Create a skeleton item. The skeleton animated always be true
61
+ *
62
+ * @param {VegaSkeletonLoaderItem} config - Configuration for the skeleton item.
63
+ * @returns {HTMLElement} - Skeleton item.
64
+ */
65
+ createSkeleton(config) {
66
+ const { type, width, height } = config;
67
+ const skeleton = document.createElement('vega-skeleton');
68
+ Object.assign(skeleton, { animated: true, type, width, height });
69
+ return skeleton;
70
+ }
71
+ /**
72
+ * Wrap the flex layout for the skeletons.
73
+ *
74
+ * @param {HTMLElement[]} skeletons - Skeleton elements of the loader.
75
+ * @param {VegaSkeletonLoaderLayout} layout - Flex properties for the layout.
76
+ * @returns {HTMLElement} - Container wrapping the skeletons in the specified flex layout.
77
+ */
78
+ wrapLayout(skeletons, layout) {
79
+ const skeletonContainer = document.createElement('vega-flex');
80
+ Object.assign(skeletonContainer, Object.assign({ className: 'vega-skeleton-loader-template-container' }, layout.props));
81
+ Object.assign(skeletonContainer.style, layout.style);
82
+ skeletonContainer.append(...skeletons);
83
+ return skeletonContainer;
84
+ }
85
+ }
86
+ VegaSkeletonLoaderController.LOADER_DATA_SET_KEY = 'vegaSkeletonLoaderKey';
87
+ export const VegaSkeletonLoader = new VegaSkeletonLoaderController();