@globalpayments/vega 2.16.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.
- package/dist/cjs/{app-globals-5e074c5e.js → app-globals-4e0416c1.js} +2 -2
- package/dist/cjs/{childNodesEventPreventSlimmer-7e1895d7.js → childNodesEventPreventSlimmer-6848c3cf.js} +1 -1
- package/dist/cjs/{eventEmitSlimmer-ea57144a.js → eventEmitSlimmer-1d70a720.js} +1 -1
- package/dist/cjs/{formFieldControllerSlimmer-9271a8b8.js → formFieldControllerSlimmer-8b54f14d.js} +1 -1
- package/dist/cjs/index.cjs.js +3 -3
- package/dist/cjs/{internalVegaEventManager-543c20cb.js → internalVegaEventManager-743a124d.js} +2 -2
- package/dist/cjs/loader.cjs.js +5 -5
- package/dist/cjs/{subStateObserverSlimmer-48ad20a1.js → subStateObserverSlimmer-60e4d6da.js} +28 -14
- package/dist/cjs/vega-accordion.cjs.entry.js +4 -4
- package/dist/cjs/vega-app-header-button.cjs.entry.js +4 -4
- package/dist/cjs/vega-banner.cjs.entry.js +3 -3
- package/dist/cjs/vega-breadcrumb.cjs.entry.js +4 -4
- package/dist/cjs/vega-button-circle.cjs.entry.js +4 -4
- package/dist/cjs/vega-button-group_2.cjs.entry.js +6 -6
- package/dist/cjs/vega-button-link.cjs.entry.js +4 -4
- package/dist/cjs/vega-button.cjs.entry.js +57 -12
- package/dist/cjs/vega-calendar_2.cjs.entry.js +830 -90
- package/dist/cjs/vega-carousel.cjs.entry.js +3 -3
- package/dist/cjs/vega-checkbox_2.cjs.entry.js +6 -6
- package/dist/cjs/vega-chip.cjs.entry.js +4 -4
- package/dist/cjs/vega-color-picker.cjs.entry.js +5 -5
- package/dist/cjs/vega-combo-box.cjs.entry.js +6 -6
- package/dist/cjs/vega-date-picker_2.cjs.entry.js +6 -6
- package/dist/cjs/vega-dialog_2.cjs.entry.js +4 -4
- package/dist/cjs/vega-dropdown_5.cjs.entry.js +308 -183
- package/dist/cjs/vega-field-label.cjs.entry.js +4 -4
- package/dist/cjs/vega-form.cjs.entry.js +6 -6
- package/dist/cjs/vega-image-uploader.cjs.entry.js +6 -6
- package/dist/cjs/vega-input-credit-card.cjs.entry.js +6 -6
- package/dist/cjs/vega-input-range.cjs.entry.js +6 -6
- package/dist/cjs/vega-input-select.cjs.entry.js +168 -58
- package/dist/cjs/vega-input.cjs.entry.js +5 -5
- package/dist/cjs/vega-item-toggle.cjs.entry.js +3 -3
- package/dist/cjs/vega-left-nav_5.cjs.entry.js +4 -4
- package/dist/cjs/vega-loader-wrapper_2.cjs.entry.js +1 -1
- package/dist/cjs/vega-page-notification_2.cjs.entry.js +1 -1
- package/dist/cjs/vega-pagination.cjs.entry.js +4 -4
- package/dist/cjs/vega-popover_2.cjs.entry.js +3 -3
- package/dist/cjs/vega-progress-tracker.cjs.entry.js +3 -3
- package/dist/cjs/vega-radio_2.cjs.entry.js +6 -6
- package/dist/cjs/vega-segment-control.cjs.entry.js +3 -3
- package/dist/cjs/vega-selection-tile_2.cjs.entry.js +7 -7
- package/dist/cjs/{vega-skeleton-loader-controller-bac82c82.js → vega-skeleton-loader-controller-8932c0ed.js} +3 -3
- package/dist/cjs/vega-stepper.cjs.entry.js +6 -6
- package/dist/cjs/vega-tab-group_2.cjs.entry.js +4 -4
- package/dist/cjs/vega-table_8.cjs.entry.js +6 -6
- package/dist/cjs/vega-textarea.cjs.entry.js +6 -6
- package/dist/cjs/vega-time-picker_2.cjs.entry.js +6 -6
- package/dist/cjs/vega-toggle-switch.cjs.entry.js +3 -3
- package/dist/cjs/vega.cjs.js +5 -5
- package/dist/cjs/{vegaEventId-d7774262.js → vegaEventId-f375a6a3.js} +2 -0
- package/dist/cjs/{vegaInternalEventId-173c4941.js → vegaInternalEventId-ac38dd4b.js} +2 -0
- package/dist/collection/components/vega-button/slimmers/renderers/vega-button-loading-renderer.js +24 -0
- package/dist/collection/components/vega-button/vega-button.css +9 -1
- package/dist/collection/components/vega-button/vega-button.js +49 -7
- package/dist/collection/components/vega-calendar/slimmers/common/controllers/vega-calendar-current-period-controller.js +38 -24
- package/dist/collection/components/vega-calendar/slimmers/common/controllers/vega-calendar-event-controller.js +54 -1
- package/dist/collection/components/vega-calendar/slimmers/common/controllers/vega-calendar-view-controller.js +13 -21
- package/dist/collection/components/vega-calendar/slimmers/common/helpers/repeatPattern/baseRepeatPattern.js +61 -0
- package/dist/collection/components/vega-calendar/slimmers/common/helpers/repeatPattern/calendarEventDailyRepeatPattern.js +70 -0
- package/dist/collection/components/vega-calendar/slimmers/common/helpers/repeatPattern/calendarEventMonthlyRepeatPattern.js +90 -0
- package/dist/collection/components/vega-calendar/slimmers/common/helpers/repeatPattern/calendarEventRepeatPatternFactory.js +60 -0
- package/dist/collection/components/vega-calendar/slimmers/common/helpers/repeatPattern/calendarEventWeeklyRepeatPattern.js +163 -0
- package/dist/collection/components/vega-calendar/slimmers/common/helpers/repeatPattern/calendarEventYearlyRepeatPattern.js +92 -0
- package/dist/collection/components/vega-calendar/slimmers/common/helpers/test/calendarEventRepeatPatternFactory.test.js +105 -0
- package/dist/collection/components/vega-calendar/slimmers/common/layout/test/longEventLayoutGenerator.test.js +0 -5
- package/dist/collection/components/vega-calendar/slimmers/common/renderers/vega-calendar-switch-panel.js +1 -1
- package/dist/collection/components/vega-calendar/slimmers/day-view/renderers/timed-event/layout/test/dayViewEventLayoutGenerator.test.js +0 -5
- package/dist/collection/components/vega-calendar/slimmers/day-view/renderers/vega-calendar-view-with-time-renderer.js +21 -4
- package/dist/collection/components/vega-calendar/slimmers/month-view/renderers/vega-calendar-month-view-renderer.js +45 -2
- package/dist/collection/components/vega-calendar/vega-calendar.css +0 -1
- package/dist/collection/components/vega-calendar/vega-calendar.js +51 -4
- package/dist/collection/components/vega-dropdown/slimmers/controllers/vega-dropdown-appender-controller.js +0 -4
- package/dist/collection/components/vega-dropdown/slimmers/controllers/vega-dropdown-children-controller.js +14 -1
- package/dist/collection/components/vega-dropdown/slimmers/controllers/vega-dropdown-scrollable-controller.js +142 -0
- package/dist/collection/components/vega-dropdown/slimmers/renderers/vega-dropdown-list-renderer.js +16 -50
- package/dist/collection/components/vega-dropdown/slimmers/renderers/vega-dropdown-renderer.js +6 -1
- package/dist/collection/components/vega-dropdown/vega-dropdown-item/slimmers/controllers/vega-dropdown-item-state-controller.js +1 -0
- package/dist/collection/components/vega-dropdown/vega-dropdown-item/slimmers/renderers/vega-dropdown-item-renderer.js +7 -5
- package/dist/collection/components/vega-dropdown/vega-dropdown-item/vega-dropdown-item.js +1 -1
- package/dist/collection/components/vega-dropdown/vega-dropdown.js +5 -2
- package/dist/collection/components/vega-input-select/slimmers/controllers/vega-input-select-dropdown-controller.js +23 -0
- package/dist/collection/components/vega-input-select/slimmers/controllers/vega-input-select-items-slot-controler.js +62 -0
- package/dist/collection/components/vega-input-select/slimmers/controllers/vega-input-select-source-controller.js +11 -0
- package/dist/collection/components/vega-input-select/slimmers/controllers/vega-input-select-value-controller.js +7 -10
- package/dist/collection/components/vega-input-select/slimmers/renderers/vega-input-select-dropdown-renderer.js +18 -2
- package/dist/collection/components/vega-input-select/vega-input-select.js +5 -0
- package/dist/collection/components/vega-loading-indicator/vega-loading-indicator.js +2 -2
- package/dist/collection/constants/ui.js +1 -1
- package/dist/collection/helpers/calendar/calendar-date.js +11 -0
- package/dist/collection/helpers/calendar/calendar-event.js +73 -24
- package/dist/collection/helpers/calendar/calendar-period/calendar-period.abstract.js +8 -0
- package/dist/collection/helpers/calendar/calendar-period/day-period.js +1 -0
- package/dist/collection/helpers/calendar/calendar-period/month-period.js +16 -3
- package/dist/collection/helpers/calendar/calendar-period/week-period.js +1 -0
- package/dist/collection/helpers/calendar/test/calendar-event.test.js +23 -20
- package/dist/collection/helpers/event-manager/eventID/componentEventIdMap.js +2 -2
- package/dist/collection/helpers/event-manager/eventID/vegaEventId.js +1 -1
- package/dist/collection/helpers/event-manager/eventID/vegaInternalEventId.js +1 -0
- package/dist/collection/helpers/slimmers/sub-state/subStateObserverSlimmer.js +27 -13
- package/dist/collection/helpers/slimmers/sub-state/test/sub-state-observer-slimmer.test.js +15 -3
- package/dist/collection/helpers/vega-telemetry-helper/test/vegaEnvManager.test.js +1 -1
- package/dist/collection/helpers/vega-telemetry-helper/vegaEnvManager.js +2 -2
- package/dist/esm/{app-globals-032d6105.js → app-globals-ba85a900.js} +2 -2
- package/dist/esm/{childNodesEventPreventSlimmer-b9c50cc4.js → childNodesEventPreventSlimmer-d0da4527.js} +1 -1
- package/dist/esm/{eventEmitSlimmer-9c33f04e.js → eventEmitSlimmer-7b16eef9.js} +1 -1
- package/dist/esm/{formFieldControllerSlimmer-85ff874e.js → formFieldControllerSlimmer-ea050a17.js} +1 -1
- package/dist/esm/index.js +3 -3
- package/dist/esm/{internalVegaEventManager-e1501923.js → internalVegaEventManager-71d00966.js} +2 -2
- package/dist/esm/loader.js +5 -5
- package/dist/esm/{subStateObserverSlimmer-354b33f6.js → subStateObserverSlimmer-2a8a615e.js} +28 -14
- package/dist/esm/vega-accordion.entry.js +4 -4
- package/dist/esm/vega-app-header-button.entry.js +4 -4
- package/dist/esm/vega-banner.entry.js +3 -3
- package/dist/esm/vega-breadcrumb.entry.js +4 -4
- package/dist/esm/vega-button-circle.entry.js +4 -4
- package/dist/esm/vega-button-group_2.entry.js +6 -6
- package/dist/esm/vega-button-link.entry.js +4 -4
- package/dist/esm/vega-button.entry.js +59 -14
- package/dist/esm/vega-calendar_2.entry.js +830 -90
- package/dist/esm/vega-carousel.entry.js +3 -3
- package/dist/esm/vega-checkbox_2.entry.js +6 -6
- package/dist/esm/vega-chip.entry.js +4 -4
- package/dist/esm/vega-color-picker.entry.js +5 -5
- package/dist/esm/vega-combo-box.entry.js +6 -6
- package/dist/esm/vega-date-picker_2.entry.js +6 -6
- package/dist/esm/vega-dialog_2.entry.js +4 -4
- package/dist/esm/vega-dropdown_5.entry.js +308 -183
- package/dist/esm/vega-field-label.entry.js +4 -4
- package/dist/esm/vega-form.entry.js +6 -6
- package/dist/esm/vega-image-uploader.entry.js +6 -6
- package/dist/esm/vega-input-credit-card.entry.js +6 -6
- package/dist/esm/vega-input-range.entry.js +6 -6
- package/dist/esm/vega-input-select.entry.js +168 -58
- package/dist/esm/vega-input.entry.js +5 -5
- package/dist/esm/vega-item-toggle.entry.js +3 -3
- package/dist/esm/vega-left-nav_5.entry.js +4 -4
- package/dist/esm/vega-loader-wrapper_2.entry.js +1 -1
- package/dist/esm/vega-page-notification_2.entry.js +1 -1
- package/dist/esm/vega-pagination.entry.js +4 -4
- package/dist/esm/vega-popover_2.entry.js +3 -3
- package/dist/esm/vega-progress-tracker.entry.js +3 -3
- package/dist/esm/vega-radio_2.entry.js +6 -6
- package/dist/esm/vega-segment-control.entry.js +3 -3
- package/dist/esm/vega-selection-tile_2.entry.js +7 -7
- package/dist/esm/{vega-skeleton-loader-controller-3f5500e5.js → vega-skeleton-loader-controller-778b12be.js} +3 -3
- package/dist/esm/vega-stepper.entry.js +6 -6
- package/dist/esm/vega-tab-group_2.entry.js +4 -4
- package/dist/esm/vega-table_8.entry.js +6 -6
- package/dist/esm/vega-textarea.entry.js +6 -6
- package/dist/esm/vega-time-picker_2.entry.js +6 -6
- package/dist/esm/vega-toggle-switch.entry.js +3 -3
- package/dist/esm/vega.js +5 -5
- package/dist/esm/{vegaEventId-680887e1.js → vegaEventId-f279bb62.js} +2 -1
- package/dist/esm/{vegaInternalEventId-600b3751.js → vegaInternalEventId-bde5d617.js} +2 -1
- package/dist/types/components/vega-button/slimmers/renderers/vega-button-loading-renderer.d.ts +13 -0
- package/dist/types/components/vega-button/vega-button.d.ts +16 -0
- package/dist/types/components/vega-calendar/slimmers/common/controllers/vega-calendar-current-period-controller.d.ts +12 -9
- package/dist/types/components/vega-calendar/slimmers/common/controllers/vega-calendar-event-controller.d.ts +20 -0
- package/dist/types/components/vega-calendar/slimmers/common/controllers/vega-calendar-view-controller.d.ts +8 -12
- package/dist/types/components/vega-calendar/slimmers/common/helpers/repeatPattern/baseRepeatPattern.d.ts +50 -0
- package/dist/types/components/vega-calendar/slimmers/common/helpers/repeatPattern/calendarEventDailyRepeatPattern.d.ts +43 -0
- package/dist/types/components/vega-calendar/slimmers/common/helpers/repeatPattern/calendarEventMonthlyRepeatPattern.d.ts +55 -0
- package/dist/types/components/vega-calendar/slimmers/common/helpers/repeatPattern/calendarEventRepeatPatternFactory.d.ts +34 -0
- package/dist/types/components/vega-calendar/slimmers/common/helpers/repeatPattern/calendarEventWeeklyRepeatPattern.d.ts +99 -0
- package/dist/types/components/vega-calendar/slimmers/common/helpers/repeatPattern/calendarEventYearlyRepeatPattern.d.ts +57 -0
- package/dist/types/components/vega-calendar/slimmers/common/helpers/test/calendarEventRepeatPatternFactory.test.d.ts +1 -0
- package/dist/types/components/vega-calendar/slimmers/day-view/renderers/vega-calendar-view-with-time-renderer.d.ts +8 -0
- package/dist/types/components/vega-calendar/slimmers/month-view/renderers/vega-calendar-month-view-renderer.d.ts +23 -0
- package/dist/types/components/vega-calendar/types.d.ts +14 -2
- package/dist/types/components/vega-calendar/vega-calendar.d.ts +15 -3
- package/dist/types/components/vega-dropdown/slimmers/controllers/vega-dropdown-appender-controller.d.ts +0 -1
- package/dist/types/components/vega-dropdown/slimmers/controllers/vega-dropdown-children-controller.d.ts +4 -0
- package/dist/types/components/vega-dropdown/slimmers/controllers/vega-dropdown-scrollable-controller.d.ts +57 -0
- package/dist/types/components/vega-dropdown/slimmers/renderers/vega-dropdown-list-renderer.d.ts +7 -17
- package/dist/types/components/vega-dropdown/slimmers/renderers/vega-dropdown-renderer.d.ts +3 -0
- package/dist/types/components/vega-dropdown/vega-dropdown.d.ts +2 -1
- package/dist/types/components/vega-input-select/slimmers/controllers/vega-input-select-dropdown-controller.d.ts +2 -0
- package/dist/types/components/vega-input-select/slimmers/controllers/vega-input-select-items-slot-controler.d.ts +19 -0
- package/dist/types/components/vega-input-select/slimmers/controllers/vega-input-select-source-controller.d.ts +11 -1
- package/dist/types/components/vega-input-select/slimmers/controllers/vega-input-select-value-controller.d.ts +1 -1
- package/dist/types/components/vega-input-select/slimmers/renderers/vega-input-select-dropdown-renderer.d.ts +6 -0
- package/dist/types/components/vega-input-select/vega-input-select.d.ts +2 -0
- package/dist/types/components.d.ts +17 -1
- package/dist/types/constants/ui.d.ts +1 -1
- package/dist/types/helpers/calendar/calendar-date.d.ts +8 -0
- package/dist/types/helpers/calendar/calendar-event.d.ts +44 -2
- package/dist/types/helpers/calendar/calendar-period/calendar-period.abstract.d.ts +10 -2
- package/dist/types/helpers/calendar/calendar-period/day-period.d.ts +1 -0
- package/dist/types/helpers/calendar/calendar-period/month-period.d.ts +12 -0
- package/dist/types/helpers/calendar/calendar-period/week-period.d.ts +1 -0
- package/dist/types/helpers/event-manager/eventID/vegaEventId.d.ts +1 -1
- package/dist/types/helpers/event-manager/eventID/vegaInternalEventId.d.ts +1 -0
- package/dist/types/helpers/slimmers/sub-state/subStateObserverSlimmer.d.ts +9 -0
- package/dist/types/types/components.type.d.ts +1 -0
- package/dist/vega/index.esm.js +1 -1
- package/dist/vega/{p-0f88130f.entry.js → p-0ef3d3fd.entry.js} +1 -1
- package/dist/vega/p-1080d80a.js +1 -0
- package/dist/vega/{p-9d9f7c25.entry.js → p-154a3145.entry.js} +1 -1
- package/dist/vega/{p-cbb90cf6.entry.js → p-1bc3348e.entry.js} +1 -1
- package/dist/vega/{p-86d3e5eb.entry.js → p-255aa39b.entry.js} +1 -1
- package/dist/vega/p-29654e12.entry.js +1 -0
- package/dist/vega/{p-77b39fe7.entry.js → p-2f905e6f.entry.js} +1 -1
- package/dist/vega/p-3490dd8a.entry.js +1 -0
- package/dist/vega/p-3fee5d7e.entry.js +1 -0
- package/dist/vega/p-44f4924b.js +1 -0
- package/dist/vega/p-4546cd3d.entry.js +1 -0
- package/dist/vega/{p-77ff7c72.js → p-5141bcac.js} +1 -1
- package/dist/vega/{p-16608c5a.js → p-51e2c836.js} +1 -1
- package/dist/vega/{p-d7cb0227.entry.js → p-52bf3ce1.entry.js} +1 -1
- package/dist/vega/{p-cd05ab96.entry.js → p-5611cf4c.entry.js} +1 -1
- package/dist/vega/{p-40db8b33.entry.js → p-5e3f5e8e.entry.js} +1 -1
- package/dist/vega/p-642d58ff.js +1 -0
- package/dist/vega/{p-9b5e858e.entry.js → p-6470d034.entry.js} +1 -1
- package/dist/vega/{p-8e63fc54.entry.js → p-6877dc17.entry.js} +1 -1
- package/dist/vega/{p-1dfddf03.entry.js → p-69cf5269.entry.js} +1 -1
- package/dist/vega/{p-21675b8e.entry.js → p-70af1334.entry.js} +1 -1
- package/dist/vega/{p-bd1bc019.entry.js → p-7115c145.entry.js} +1 -1
- package/dist/vega/{p-7d22c459.entry.js → p-795927c4.entry.js} +1 -1
- package/dist/vega/{p-6ad96891.entry.js → p-7c1d2dcf.entry.js} +1 -1
- package/dist/vega/p-7f9cb4c0.entry.js +1 -0
- package/dist/vega/p-82fd348b.entry.js +1 -0
- package/dist/vega/p-8543f9c3.entry.js +1 -0
- package/dist/vega/{p-12e93c00.entry.js → p-8771bf66.entry.js} +1 -1
- package/dist/vega/{p-84787f59.entry.js → p-88cf7e56.entry.js} +1 -1
- package/dist/vega/{p-d7f7e2df.entry.js → p-8e7d6700.entry.js} +1 -1
- package/dist/vega/p-9119ad95.entry.js +1 -0
- package/dist/vega/p-9799f3d8.entry.js +1 -0
- package/dist/vega/{p-61c96c79.entry.js → p-a6c43909.entry.js} +1 -1
- package/dist/vega/{p-ceb5067a.entry.js → p-b23ad436.entry.js} +1 -1
- package/dist/vega/{p-c8e1b56d.entry.js → p-b570e6c7.entry.js} +1 -1
- package/dist/vega/{p-ba37eaad.entry.js → p-b6f68efd.entry.js} +1 -1
- package/dist/vega/{p-25f60a0b.entry.js → p-b8a47375.entry.js} +1 -1
- package/dist/vega/{p-7fd253e0.entry.js → p-b8d45e28.entry.js} +1 -1
- package/dist/vega/{p-9e5f7b82.js → p-bba06111.js} +1 -1
- package/dist/vega/{p-2066e3eb.entry.js → p-c1401fab.entry.js} +1 -1
- package/dist/vega/{p-a9f61d9e.entry.js → p-cafe75e8.entry.js} +1 -1
- package/dist/vega/{p-7d9934ee.entry.js → p-cf40587e.entry.js} +1 -1
- package/dist/vega/{p-7706a169.js → p-d126407a.js} +1 -1
- package/dist/vega/{p-fb34de30.entry.js → p-e373bc4d.entry.js} +1 -1
- package/dist/vega/p-eacf64be.js +1 -0
- package/dist/vega/{p-1d628d23.entry.js → p-ec4afdaa.entry.js} +1 -1
- package/dist/vega/{p-a9d3ea86.js → p-f0330fcc.js} +1 -1
- package/dist/vega/{p-c0ca1a1c.entry.js → p-f8a97354.entry.js} +1 -1
- package/dist/vega/{p-f5d3d49f.entry.js → p-f96ee751.entry.js} +1 -1
- package/dist/vega/vega.esm.js +1 -1
- package/package.json +1 -1
- package/dist/vega/p-1092a8ce.entry.js +0 -1
- package/dist/vega/p-43515fe4.entry.js +0 -1
- package/dist/vega/p-592e755b.entry.js +0 -1
- package/dist/vega/p-76265c0e.entry.js +0 -1
- package/dist/vega/p-9316cd6d.entry.js +0 -1
- package/dist/vega/p-a9c3e9fd.js +0 -1
- package/dist/vega/p-aae8855d.js +0 -1
- package/dist/vega/p-bb845e70.entry.js +0 -1
- package/dist/vega/p-c47d4933.js +0 -1
- package/dist/vega/p-c9f922bf.entry.js +0 -1
- package/dist/vega/p-ca1fae74.entry.js +0 -1
- package/dist/vega/p-eb461dad.entry.js +0 -1
- package/dist/vega/p-f1d8fd1c.js +0 -1
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { CalendarDate } from '../../../../../../helpers/calendar';
|
|
2
|
+
import { CalendarEventDailyRepeatPattern } from '../repeatPattern/calendarEventDailyRepeatPattern';
|
|
3
|
+
import { CalendarEventMonthlyRepeatPattern } from '../repeatPattern/calendarEventMonthlyRepeatPattern';
|
|
4
|
+
import { CalendarEventWeeklyRepeatPattern } from '../repeatPattern/calendarEventWeeklyRepeatPattern';
|
|
5
|
+
import { CalendarEventYearlyRepeatPattern } from '../repeatPattern/calendarEventYearlyRepeatPattern';
|
|
6
|
+
/** This code snippet defines a TypeScript class `CalendarEventRepeatPatternFactory` that serves as a factory for creating different types of repeat patterns for calendar events. Here's a breakdown of what the class and its methods are doing: */
|
|
7
|
+
class CalendarEventRepeatPatternFactory {
|
|
8
|
+
/**
|
|
9
|
+
* This `getPattern` method within the `CalendarEventRepeatPatternFactory` class is a public method that is responsible for creating and returning a specific type of repeat pattern for a calendar event based on the input parameters provided. Here's a breakdown of what this method is doing:
|
|
10
|
+
*
|
|
11
|
+
* @param {Date} startDate repeat start date
|
|
12
|
+
* @param {VegaCalendarEventRepeatOptions|undefined} repeatOptions repeat options
|
|
13
|
+
* @returns {CalendarEventBaseRepeatPattern} the match repeat pattern
|
|
14
|
+
*/
|
|
15
|
+
getPattern(startDate, repeatOptions) {
|
|
16
|
+
const repeatStartDate = CalendarDate.from(startDate);
|
|
17
|
+
const { frequency, interval = 1, byWeekDay, until, count, } = repeatOptions;
|
|
18
|
+
const repeatEndDate = this.initDate(until);
|
|
19
|
+
return this.initRepeatPattern(frequency, repeatStartDate, interval < 1 ? 1 : interval, count, repeatEndDate, byWeekDay);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* The `initDate` function initializes a `CalendarDate` object based on the input date string or Date object provided.
|
|
23
|
+
*
|
|
24
|
+
* @param {Nullable<string | Date>} date - The `date` parameter can be either a string or a Date object.
|
|
25
|
+
* @returns {Nullable<CalendarDate>} The function `initDate` returns a `Nullable<CalendarDate>`, which means it can return either a `CalendarDate` object or `null`.
|
|
26
|
+
*/
|
|
27
|
+
initDate(date) {
|
|
28
|
+
if (date && typeof date === 'object') {
|
|
29
|
+
return CalendarDate.from(date);
|
|
30
|
+
}
|
|
31
|
+
else if (date && typeof date === 'string') {
|
|
32
|
+
const [month, day, year] = date.split('/');
|
|
33
|
+
return new CalendarDate(Number(year), Number(month), Number(day));
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* The function `initRepeatPattern` initializes a repeat pattern based on the frequency specified for a calendar event.
|
|
38
|
+
*
|
|
39
|
+
* @param {VegaCalendarEventRepeatType} frequency event frequency
|
|
40
|
+
* @param {CalendarDate} repeatStartDate event start date
|
|
41
|
+
* @param {number} interval event repeat interval
|
|
42
|
+
* @param {Nullable<number>} count the event repeat count
|
|
43
|
+
* @param {Nullable<CalendarDate>} repeatEndDate repeat end date
|
|
44
|
+
* @param {Nullable<VegaCalendarWeekDayType[]>} byWeekDay weekly week days
|
|
45
|
+
* @returns {CalendarEventBaseRepeatPattern} calendar event repeat pattern instance
|
|
46
|
+
*/
|
|
47
|
+
initRepeatPattern(frequency, repeatStartDate, interval, count, repeatEndDate, byWeekDay) {
|
|
48
|
+
switch (frequency) {
|
|
49
|
+
case 'daily':
|
|
50
|
+
return new CalendarEventDailyRepeatPattern(repeatStartDate, interval, count, repeatEndDate);
|
|
51
|
+
case 'weekly':
|
|
52
|
+
return new CalendarEventWeeklyRepeatPattern(repeatStartDate, interval, count, repeatEndDate, byWeekDay);
|
|
53
|
+
case 'monthly':
|
|
54
|
+
return new CalendarEventMonthlyRepeatPattern(repeatStartDate, interval, count, repeatEndDate);
|
|
55
|
+
default:
|
|
56
|
+
return new CalendarEventYearlyRepeatPattern(repeatStartDate, interval, count, repeatEndDate);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
export default new CalendarEventRepeatPatternFactory();
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { CalendarDate } from '../../../../../../helpers/calendar';
|
|
2
|
+
import { flatNestedArray } from '../../../../../../utils/array';
|
|
3
|
+
import { CalendarEventBaseRepeatPattern } from './baseRepeatPattern';
|
|
4
|
+
/** The `CalendarEventWeeklyRepeatPattern` class in TypeScript represents a weekly repeat pattern for calendar events, allowing for matching dates based on specific weekdays and generating future dates with optional constraints. */
|
|
5
|
+
export class CalendarEventWeeklyRepeatPattern extends CalendarEventBaseRepeatPattern {
|
|
6
|
+
/**
|
|
7
|
+
* This TypeScript constructor initializes a calendar date range with specified parameters including start date, end date, interval, count, until date, and an array of week days.
|
|
8
|
+
*
|
|
9
|
+
* @param {CalendarDate} startDate - The `startDate` parameter represents the starting date of the
|
|
10
|
+
* calendar event or schedule. It is of type `CalendarDate`, which likely includes the year, month, and day components of a date.
|
|
11
|
+
* @param {number} interval - The `interval` parameter represents the frequency of the recurrence. For
|
|
12
|
+
* example, if `interval` is set to 1, the event will occur every week. If it's set to 2, the event
|
|
13
|
+
* will occur every two weeks.
|
|
14
|
+
* @param {Nullable<number>} count - The `count` parameter specifies the number of occurrences of the rule. If `count` is
|
|
15
|
+
* provided, the recurrence will generate at most that many occurrences. If `count` is not provided,
|
|
16
|
+
* the recurrence will continue indefinitely based on other parameters like `endDate` or `until`.
|
|
17
|
+
* @param {Nullable<CalendarDate>} until - The `until` parameter specifies the end date for the recurrence rule. If provided,
|
|
18
|
+
* the recurrence will continue until this date. If not provided, the recurrence will continue
|
|
19
|
+
* indefinitely based on other parameters like `count` or `interval`.
|
|
20
|
+
* @param {Nullable<VegaCalendarWeekDayType[]>} byWeekDay - The `byWeekDay` parameter is an array of
|
|
21
|
+
* `VegaCalendarWeekDayType` values, which represent the days of the week for which the event should occur.
|
|
22
|
+
*/
|
|
23
|
+
constructor(startDate, interval, count, until, byWeekDay) {
|
|
24
|
+
super(startDate, interval, count, until);
|
|
25
|
+
this.byWeekDay = this.sortWeekDay(byWeekDay);
|
|
26
|
+
this.initCache();
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* The function `getRepeatSeries` retrieves a series of repeated events within a specified calendar period.
|
|
30
|
+
*
|
|
31
|
+
* @param {CalendarPeriod} period - The `period` parameter in the `getRepeatSeries` method represents
|
|
32
|
+
* a specific time period in the form of a `CalendarPeriod` object. This object typically contains a
|
|
33
|
+
* `startDate` and an `endDate`, which define the range of dates for which you want to generate repeat series.
|
|
34
|
+
* @param {number} eventSpansDays - the current repeat series cross days, default value is one
|
|
35
|
+
* @returns {CalendarDate[]} repeat start date array
|
|
36
|
+
*/
|
|
37
|
+
getRepeatSeries(period, eventSpansDays = 1) {
|
|
38
|
+
this.generateRepeatDateCacheUntilEndDate(period.endDate);
|
|
39
|
+
return this.getValidCache().filter((item) => {
|
|
40
|
+
return this.isSeriesInPeriod(item, eventSpansDays, period);
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* This function generates repeated dates and caches them until a specified end date.
|
|
45
|
+
*
|
|
46
|
+
* @param {CalendarDate} endDate - The `endDate` parameter is a `CalendarDate` object that represents
|
|
47
|
+
* the date until which the repeat date cache needs to be generated. The function
|
|
48
|
+
* `generateRepeatDateCacheUntilEndDate` generates repeat dates until this specified end date.
|
|
49
|
+
*/
|
|
50
|
+
generateRepeatDateCacheUntilEndDate(endDate) {
|
|
51
|
+
const lastMatchDate = this.cache[this.cache.length - 1];
|
|
52
|
+
if (lastMatchDate[0].toDate() < endDate.toDate() &&
|
|
53
|
+
(!this.count || (typeof this.count === 'number' && this.cache.length < this.count))) {
|
|
54
|
+
let nextMatchDate = this.getNextRepeatStartDate(lastMatchDate);
|
|
55
|
+
while (nextMatchDate && nextMatchDate[0].toDate() < endDate.toDate()) {
|
|
56
|
+
nextMatchDate = this.getNextRepeatStartDate(nextMatchDate);
|
|
57
|
+
if (typeof this.count === 'number' && this.getValidCache().length >= this.count) {
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* The function getNextRepeatStartDate calculates the next start dates based on a given array of CalendarDate objects and returns them if certain conditions are met.
|
|
65
|
+
*
|
|
66
|
+
* @param {CalendarDate[]} dates - The `dates` parameter is an array of `CalendarDate` objects.
|
|
67
|
+
* @returns {Nullable<CalendarDate[]>} The `getNextRepeatStartDate` function returns a nullable array of `CalendarDate` objects.
|
|
68
|
+
* If there are no next dates available or if the cache count exceeds a specified limit, it returns
|
|
69
|
+
* `null`. Otherwise, it returns an array of `CalendarDate` objects representing the next start dates.
|
|
70
|
+
*/
|
|
71
|
+
getNextRepeatStartDate(dates) {
|
|
72
|
+
const nextDate = this.getNextStartDates(dates);
|
|
73
|
+
if (nextDate.length === 0 ||
|
|
74
|
+
(typeof this.count === 'number' && this.getValidCache().length >= this.count)) {
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
const nextCalendarDates = nextDate.map((item) => CalendarDate.from(item));
|
|
79
|
+
this.cache.push(nextCalendarDates);
|
|
80
|
+
return nextCalendarDates;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* The function `getNextStartDates` takes an array of `CalendarDate` objects, calculates the next dates based on a specified interval, and filters out dates that are after a specified end date.
|
|
85
|
+
*
|
|
86
|
+
* @param {CalendarDate[]} dates - The `dates` parameter is an array of `CalendarDate` objects
|
|
87
|
+
* representing specific dates in a calendar. Each `CalendarDate` object has properties for the year,
|
|
88
|
+
* month, and date.
|
|
89
|
+
* @returns {Date[]} The `getNextStartDates` function returns an array of `Date` objects representing the next
|
|
90
|
+
* start dates based on the input `CalendarDate` array. The function calculates the next start dates
|
|
91
|
+
* by adding a specific interval (multiplied by 7 to represent weeks) to each date in the input array.
|
|
92
|
+
* Finally, it filters out any dates that are after a specified `until` date, if provided.
|
|
93
|
+
*/
|
|
94
|
+
getNextStartDates(dates) {
|
|
95
|
+
const nextDates = dates.map((dateItem) => new Date(dateItem.year, dateItem.month - 1, dateItem.date + this.interval * 7));
|
|
96
|
+
return nextDates.filter((item) => !this.until || item <= this.until.toDate());
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* The `initCache` function initializes a cache of calendar dates based on the start date and weekly repeat pattern.
|
|
100
|
+
*/
|
|
101
|
+
initCache() {
|
|
102
|
+
const result = [];
|
|
103
|
+
const currentWeekDayIndex = this.getCurrentDayIndex(this.repeatStartDate);
|
|
104
|
+
this.byWeekDay.forEach((day) => {
|
|
105
|
+
const index = CalendarEventWeeklyRepeatPattern.weekDay.indexOf(day);
|
|
106
|
+
const days = index - currentWeekDayIndex;
|
|
107
|
+
const { year, month, date } = this.repeatStartDate;
|
|
108
|
+
const dateItem = CalendarDate.from(new Date(year, month - 1, date + days));
|
|
109
|
+
result.push(dateItem);
|
|
110
|
+
});
|
|
111
|
+
this.cache = [result];
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* The function `sortWeekDay` sorts an array of week days based on their position in a predefined list.
|
|
115
|
+
*
|
|
116
|
+
* @param {boolean} weekDay - The `weekDay` parameter is an array of week day values that need to be sorted in a
|
|
117
|
+
* specific order. The function `sortWeekDay` takes this array and sorts it based on a predefined
|
|
118
|
+
* order specified in `CalendarEventWeeklyRepeatPattern.weekDay`.
|
|
119
|
+
* @returns {VegaCalendarWeekDayType[]} The `sortWeekDay` function is returning the `weekDay` array sorted based on the index of
|
|
120
|
+
* each `VegaCalendarWeekDayType` item in the `CalendarEventWeeklyRepeatPattern.weekDay` array.
|
|
121
|
+
*/
|
|
122
|
+
sortWeekDay(weekDay) {
|
|
123
|
+
if (weekDay && weekDay.length) {
|
|
124
|
+
return weekDay
|
|
125
|
+
.map((item) => item.toLocaleLowerCase())
|
|
126
|
+
.sort((itemA, itemB) => {
|
|
127
|
+
return (CalendarEventWeeklyRepeatPattern.weekDay.indexOf(itemA) -
|
|
128
|
+
CalendarEventWeeklyRepeatPattern.weekDay.indexOf(itemB));
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
return [CalendarEventWeeklyRepeatPattern.weekDay[this.getCurrentDayIndex(this.repeatStartDate)]];
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* This function returns the index of the current day in a week, with Sunday represented as 0.
|
|
137
|
+
*
|
|
138
|
+
* @param {CalendarDate} date - The `date` parameter in the `getCurrentDayIndex` function is of type
|
|
139
|
+
* `CalendarDate`, which is a custom data type representing a date in a calendar.
|
|
140
|
+
* @returns {number} The function `getCurrentDayIndex` returns the index of the current day in the week, with
|
|
141
|
+
* Sunday being represented as 0 and Saturday being represented as 6.
|
|
142
|
+
*/
|
|
143
|
+
getCurrentDayIndex(date) {
|
|
144
|
+
return date.toDate().getDay();
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* The function `getValidCache` returns a filtered and concatenated array of CalendarDate objects from the cache based on a start date.
|
|
148
|
+
*
|
|
149
|
+
* @returns {CalendarDate[]} The `getValidCache` method returns an array of `CalendarDate` objects that meet the
|
|
150
|
+
* condition of having a date greater than or equal to the `startDate` property. The method first
|
|
151
|
+
* flattens a nested array of `CalendarDate` objects stored in the `cache` property, then filters out
|
|
152
|
+
* the `CalendarDate` objects that do not meet the condition, and finally concatenates the filtered
|
|
153
|
+
* array
|
|
154
|
+
*/
|
|
155
|
+
getValidCache() {
|
|
156
|
+
const flatArr = flatNestedArray(this.cache.slice(1));
|
|
157
|
+
return this.cache[0]
|
|
158
|
+
.filter((item) => item.toDate() >= this.repeatStartDate.toDate())
|
|
159
|
+
.concat(flatArr)
|
|
160
|
+
.slice(0, typeof this.count === 'number' ? this.count : undefined);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
CalendarEventWeeklyRepeatPattern.weekDay = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'].map((item) => item.toLowerCase());
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { CalendarDate } from '../../../../../../helpers/calendar';
|
|
2
|
+
import { CalendarEventBaseRepeatPattern } from './baseRepeatPattern';
|
|
3
|
+
/** The `CalendarEventYearlyRepeatPattern` class defines a yearly repeat pattern for calendar events, checking for matches and generating future dates based on specified criteria. */
|
|
4
|
+
export class CalendarEventYearlyRepeatPattern extends CalendarEventBaseRepeatPattern {
|
|
5
|
+
/**
|
|
6
|
+
* The constructor initializes a new instance with specified start and end dates, interval, count, and until date.
|
|
7
|
+
*
|
|
8
|
+
* @param {CalendarDate} startDate - The `startDate` parameter is of type `CalendarDate` and
|
|
9
|
+
* represents the starting date of a calendar event or interval.
|
|
10
|
+
* @param {number} interval - The `interval` parameter represents the frequency at which the event
|
|
11
|
+
* occurs. For example, if the interval is set to 2, the event will occur every 2 units of time (days,
|
|
12
|
+
* weeks, months, etc.).
|
|
13
|
+
* @param {Nullable<number>} count - The `count` parameter specifies the number of occurrences of the event. If `count`
|
|
14
|
+
* is provided, the event will repeat `count` times within the specified interval. If `count` is not
|
|
15
|
+
* provided, the event will repeat indefinitely based on the other parameters like `endDate` or
|
|
16
|
+
* `until`.
|
|
17
|
+
* @param {Nullable<CalendarDate>} until - The `until` parameter in the constructor is of type `Nullable<CalendarDate>`. This
|
|
18
|
+
* means that it can either accept a `CalendarDate` object or be `null`. It is used to specify a date
|
|
19
|
+
* until which the recurring event should repeat. If `until` is provided, the event
|
|
20
|
+
*/
|
|
21
|
+
constructor(startDate, interval, count, until) {
|
|
22
|
+
super(startDate, interval, count, until);
|
|
23
|
+
this.matchDay = this.repeatStartDate.date;
|
|
24
|
+
this.matchMonth = this.repeatStartDate.month;
|
|
25
|
+
this.initCache();
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* The function generates repeat dates and caches them until reaching the specified end date.
|
|
29
|
+
*
|
|
30
|
+
* @param {CalendarDate} endDate - The `endDate` parameter in the
|
|
31
|
+
* `generateRepeatDateCacheUntilEndDate` function is a CalendarDate object that represents the date
|
|
32
|
+
* until which the repeat date cache should be generated. The function checks if the last date in the
|
|
33
|
+
* cache is before the `endDate`, and if so, it generates additional repeat dates
|
|
34
|
+
*/
|
|
35
|
+
generateRepeatDateCacheUntilEndDate(endDate) {
|
|
36
|
+
const lastMatchDate = this.cache[this.cache.length - 1];
|
|
37
|
+
if (lastMatchDate.toDate() < endDate.toDate() &&
|
|
38
|
+
(!this.count || (typeof this.count === 'number' && this.cache.length < this.count))) {
|
|
39
|
+
let nextMatchDate = this.getNextRepeatStartDate(lastMatchDate);
|
|
40
|
+
while (nextMatchDate && nextMatchDate.toDate() < endDate.toDate()) {
|
|
41
|
+
nextMatchDate = this.getNextRepeatStartDate(nextMatchDate);
|
|
42
|
+
if (typeof this.count === 'number' && this.cache.length >= this.count) {
|
|
43
|
+
break;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* The function getNextRepeatStartDate calculates the next repeat start date based on a given date and certain conditions.
|
|
50
|
+
*
|
|
51
|
+
* @param {CalendarDate} date - The `date` parameter represents the current date for which you want to
|
|
52
|
+
* calculate the next repeat start date. It is of type `CalendarDate`, which seems to be a custom
|
|
53
|
+
* class or structure that holds year, month, and day information.
|
|
54
|
+
* @returns {Nullable<CalendarDate>} The function `getNextRepeatStartDate` returns either a `CalendarDate` object or `null`
|
|
55
|
+
* based on certain conditions. If the next date exceeds the `until` date or the count limit has been
|
|
56
|
+
* reached, it returns `null`. Otherwise, it adds the next date to the cache and returns it as a
|
|
57
|
+
* `CalendarDate`.
|
|
58
|
+
*/
|
|
59
|
+
getNextRepeatStartDate(date) {
|
|
60
|
+
const nextDate = this.getNextStartDate(date.year + this.interval);
|
|
61
|
+
const nextCalendarDate = CalendarDate.from(nextDate);
|
|
62
|
+
if ((this.until && nextDate > this.until.toDate()) ||
|
|
63
|
+
(typeof this.count === 'number' && this.cache.length >= this.count)) {
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
this.cache.push(nextCalendarDate);
|
|
68
|
+
return nextCalendarDate;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* get the new date with fixed month and fixed date, if the date.getDate() not equal the fixed date or fixed month, find the next year
|
|
73
|
+
*
|
|
74
|
+
* @param {number} year year
|
|
75
|
+
* @returns {Date} the new date
|
|
76
|
+
*/
|
|
77
|
+
getNextStartDate(year) {
|
|
78
|
+
const nextDate = new Date(year, this.matchMonth - 1, this.matchDay);
|
|
79
|
+
if (nextDate.getDate() === this.matchDay && nextDate.getMonth() + 1 === this.matchMonth) {
|
|
80
|
+
return nextDate;
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
return this.getNextStartDate(year + 1);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* The function `initCache` initializes a cache array with the `startDate` value.
|
|
88
|
+
*/
|
|
89
|
+
initCache() {
|
|
90
|
+
this.cache = [this.repeatStartDate];
|
|
91
|
+
}
|
|
92
|
+
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { CalendarDate, DayPeriod, MonthPeriod } from '../../../../../../helpers/calendar';
|
|
2
|
+
import calendarEventRepeatPatternFactory from '../repeatPattern/calendarEventRepeatPatternFactory';
|
|
3
|
+
import { CalendarEventDailyRepeatPattern } from '../repeatPattern/calendarEventDailyRepeatPattern';
|
|
4
|
+
import { CalendarEventMonthlyRepeatPattern } from '../repeatPattern/calendarEventMonthlyRepeatPattern';
|
|
5
|
+
import { CalendarEventWeeklyRepeatPattern } from '../repeatPattern/calendarEventWeeklyRepeatPattern';
|
|
6
|
+
import { CalendarEventYearlyRepeatPattern } from '../repeatPattern/calendarEventYearlyRepeatPattern';
|
|
7
|
+
const dailyRepeatOptions = {
|
|
8
|
+
frequency: 'daily',
|
|
9
|
+
interval: 1,
|
|
10
|
+
until: '01/02/2024',
|
|
11
|
+
};
|
|
12
|
+
const weeklyRepeatOptions = {
|
|
13
|
+
frequency: 'weekly',
|
|
14
|
+
interval: 1,
|
|
15
|
+
count: 2,
|
|
16
|
+
byWeekDay: ['Mon', 'Wed'],
|
|
17
|
+
};
|
|
18
|
+
const monthlyRepeatOptions = {
|
|
19
|
+
frequency: 'monthly',
|
|
20
|
+
interval: 1,
|
|
21
|
+
count: 2,
|
|
22
|
+
};
|
|
23
|
+
const yearlyRepeatOptions = {
|
|
24
|
+
frequency: 'yearly',
|
|
25
|
+
interval: 1,
|
|
26
|
+
count: 2,
|
|
27
|
+
};
|
|
28
|
+
describe('calendarEventRepeatPatternFactory', () => {
|
|
29
|
+
it('calendarEventRepeatPatternFactory#dailyPattern', () => {
|
|
30
|
+
const pattern = calendarEventRepeatPatternFactory.getPattern(new Date(2024, 0, 1), dailyRepeatOptions);
|
|
31
|
+
expect(pattern instanceof CalendarEventDailyRepeatPattern).toBeTruthy();
|
|
32
|
+
const result = pattern.getRepeatSeries(new MonthPeriod(new CalendarDate(2024, 1, 1)));
|
|
33
|
+
expect(result.length).toEqual(2);
|
|
34
|
+
expect(result[0].date).toEqual(1);
|
|
35
|
+
expect(result[1].date).toEqual(2);
|
|
36
|
+
});
|
|
37
|
+
it('calendarEventRepeatPatternFactory#dailyPattern in default options', () => {
|
|
38
|
+
const pattern = calendarEventRepeatPatternFactory.getPattern(new Date(2024, 0, 1), { frequency: 'daily' });
|
|
39
|
+
expect(pattern instanceof CalendarEventDailyRepeatPattern).toBeTruthy();
|
|
40
|
+
expect(pattern['interval']).toEqual(1);
|
|
41
|
+
});
|
|
42
|
+
it('calendarEventRepeatPatternFactory#dailyPattern interval set to zero', () => {
|
|
43
|
+
const pattern = calendarEventRepeatPatternFactory.getPattern(new Date(2024, 0, 1), { frequency: 'daily', interval: 0 });
|
|
44
|
+
expect(pattern instanceof CalendarEventDailyRepeatPattern).toBeTruthy();
|
|
45
|
+
expect(pattern['interval']).toEqual(1);
|
|
46
|
+
});
|
|
47
|
+
it('calendarEventRepeatPatternFactory#weeklyPattern', () => {
|
|
48
|
+
const pattern = calendarEventRepeatPatternFactory.getPattern(new Date(2024, 0, 1), weeklyRepeatOptions);
|
|
49
|
+
expect(pattern instanceof CalendarEventWeeklyRepeatPattern).toBeTruthy();
|
|
50
|
+
const result = pattern.getRepeatSeries(new MonthPeriod(new CalendarDate(2024, 1, 1)));
|
|
51
|
+
expect(result.length).toEqual(2);
|
|
52
|
+
expect(result[0].date).toEqual(1);
|
|
53
|
+
expect(result[1].date).toEqual(3);
|
|
54
|
+
});
|
|
55
|
+
it('calendarEventRepeatPatternFactory#weeklyPattern', () => {
|
|
56
|
+
const pattern = calendarEventRepeatPatternFactory.getPattern(new Date(2024, 0, 1), {
|
|
57
|
+
frequency: 'weekly',
|
|
58
|
+
interval: 1,
|
|
59
|
+
});
|
|
60
|
+
expect(pattern instanceof CalendarEventWeeklyRepeatPattern).toBeTruthy();
|
|
61
|
+
expect(pattern['byWeekDay']).toEqual(['Mon'.toLowerCase()]);
|
|
62
|
+
});
|
|
63
|
+
it('calendarEventRepeatPatternFactory#monthlyPattern', () => {
|
|
64
|
+
const pattern = calendarEventRepeatPatternFactory.getPattern(new Date(2024, 0, 1), Object.assign(Object.assign({}, monthlyRepeatOptions), { interval: 2 }));
|
|
65
|
+
expect(pattern instanceof CalendarEventMonthlyRepeatPattern).toBeTruthy();
|
|
66
|
+
const result = pattern.getRepeatSeries(new MonthPeriod(new CalendarDate(2024, 1, 1)), 2);
|
|
67
|
+
expect(result.length).toEqual(1);
|
|
68
|
+
expect(result[0]).toEqual(new CalendarDate(2024, 1, 1));
|
|
69
|
+
});
|
|
70
|
+
it('calendarEventRepeatPatternFactory#yearlyPattern', () => {
|
|
71
|
+
const pattern = calendarEventRepeatPatternFactory.getPattern(new Date(2024, 0, 1), yearlyRepeatOptions);
|
|
72
|
+
expect(pattern instanceof CalendarEventYearlyRepeatPattern).toBeTruthy();
|
|
73
|
+
const result = pattern.getRepeatSeries(new MonthPeriod(new CalendarDate(2024, 1, 1)), 2);
|
|
74
|
+
expect(result.length).toEqual(1);
|
|
75
|
+
expect(result[0]).toEqual(new CalendarDate(2024, 1, 1));
|
|
76
|
+
});
|
|
77
|
+
it('calendarEventRepeatPatternFactory#yearlyPattern getRepeatSeries', () => {
|
|
78
|
+
const pattern = calendarEventRepeatPatternFactory.getPattern(new Date(2024, 6, 1), { frequency: 'weekly', interval: 1, until: '07/08/2024' });
|
|
79
|
+
expect(pattern.getRepeatSeries(new MonthPeriod(new CalendarDate(2024, 7, 1)), 2)).toEqual([
|
|
80
|
+
CalendarDate.from(new Date(2024, 6, 1)),
|
|
81
|
+
CalendarDate.from(new Date(2024, 6, 8)),
|
|
82
|
+
]);
|
|
83
|
+
});
|
|
84
|
+
it('calendarEventRepeatPatternFactory#dailyPattern getRepeatSeries', () => {
|
|
85
|
+
const pattern = calendarEventRepeatPatternFactory.getPattern(new Date(2024, 5, 30), { frequency: 'daily', interval: 3, until: '07/12/2024' });
|
|
86
|
+
expect(pattern.getRepeatSeries(new MonthPeriod(new CalendarDate(2024, 7, 1)), 2)).toEqual([
|
|
87
|
+
CalendarDate.from(new Date(2024, 5, 30)),
|
|
88
|
+
CalendarDate.from(new Date(2024, 6, 3)),
|
|
89
|
+
CalendarDate.from(new Date(2024, 6, 6)),
|
|
90
|
+
CalendarDate.from(new Date(2024, 6, 9)),
|
|
91
|
+
CalendarDate.from(new Date(2024, 6, 12)),
|
|
92
|
+
]);
|
|
93
|
+
});
|
|
94
|
+
it('calendarEventRepeatPatternFactory#dailyPattern isSeriesInPeriod monthPeriod', () => {
|
|
95
|
+
const pattern = calendarEventRepeatPatternFactory.getPattern(new Date(2024, 6, 27), { frequency: 'monthly', interval: 1, count: 2 });
|
|
96
|
+
const monthPeriod = new MonthPeriod(new CalendarDate(2024, 8, 1));
|
|
97
|
+
expect(pattern['isSeriesInPeriod'](new CalendarDate(2024, 7, 27), 3, monthPeriod)).toBeTruthy();
|
|
98
|
+
expect(pattern['isSeriesInPeriod'](new CalendarDate(2024, 8, 27), 3, monthPeriod)).toBeTruthy();
|
|
99
|
+
});
|
|
100
|
+
it('calendarEventRepeatPatternFactory#dailyPattern isSeriesInPeriod dayPeriod', () => {
|
|
101
|
+
const pattern = calendarEventRepeatPatternFactory.getPattern(new Date(2024, 6, 31), { frequency: 'monthly', interval: 1, count: 2 });
|
|
102
|
+
const dayPeriod = new DayPeriod(new CalendarDate(2024, 8, 1));
|
|
103
|
+
expect(pattern['isSeriesInPeriod'](new CalendarDate(2024, 7, 31), 3, dayPeriod)).toBeTruthy();
|
|
104
|
+
});
|
|
105
|
+
});
|
|
@@ -9,7 +9,6 @@ const mockEvents1 = [
|
|
|
9
9
|
startTime: '10:00',
|
|
10
10
|
endTime: '11:00',
|
|
11
11
|
isAllDay: false,
|
|
12
|
-
repeat: 'none',
|
|
13
12
|
disabled: false,
|
|
14
13
|
variant: 'primary',
|
|
15
14
|
},
|
|
@@ -21,7 +20,6 @@ const mockEvents1 = [
|
|
|
21
20
|
startTime: '10:00',
|
|
22
21
|
endTime: '10:15',
|
|
23
22
|
isAllDay: false,
|
|
24
|
-
repeat: 'none',
|
|
25
23
|
disabled: false,
|
|
26
24
|
variant: 'primary',
|
|
27
25
|
color: '#73E6DC',
|
|
@@ -36,7 +34,6 @@ const mockEvents2 = [
|
|
|
36
34
|
startTime: '10:00',
|
|
37
35
|
endTime: '11:00',
|
|
38
36
|
isAllDay: false,
|
|
39
|
-
repeat: 'none',
|
|
40
37
|
disabled: false,
|
|
41
38
|
variant: 'primary',
|
|
42
39
|
},
|
|
@@ -48,7 +45,6 @@ const mockEvents2 = [
|
|
|
48
45
|
startTime: '10:30',
|
|
49
46
|
endTime: '11:30',
|
|
50
47
|
isAllDay: false,
|
|
51
|
-
repeat: 'none',
|
|
52
48
|
disabled: false,
|
|
53
49
|
variant: 'secondary',
|
|
54
50
|
color: '#806BFF',
|
|
@@ -63,7 +59,6 @@ const mockEvent4 = [
|
|
|
63
59
|
startTime: '10:00',
|
|
64
60
|
endTime: '10:15',
|
|
65
61
|
isAllDay: false,
|
|
66
|
-
repeat: 'none',
|
|
67
62
|
disabled: false,
|
|
68
63
|
variant: 'primary',
|
|
69
64
|
color: '#73E6DC',
|
|
@@ -22,7 +22,7 @@ export class VegaCalendarSwitchPanelRenderer extends VegaSlimmer {
|
|
|
22
22
|
* @param {NotifyObserverPayload<VegaCalendarViewModeType>} input mark which view should be selected
|
|
23
23
|
*/
|
|
24
24
|
this.handleViewChange = (input) => {
|
|
25
|
-
this.
|
|
25
|
+
this.currentPeriodController.updateCalendarPeriod(input.detail, this.currentPeriod.current);
|
|
26
26
|
};
|
|
27
27
|
/**
|
|
28
28
|
* reset view content to today
|
|
@@ -9,7 +9,6 @@ const mockEvents = [
|
|
|
9
9
|
startTime: '10:00',
|
|
10
10
|
endTime: '11:00',
|
|
11
11
|
isAllDay: false,
|
|
12
|
-
repeat: 'none',
|
|
13
12
|
disabled: false,
|
|
14
13
|
variant: 'primary',
|
|
15
14
|
},
|
|
@@ -21,7 +20,6 @@ const mockEvents = [
|
|
|
21
20
|
startTime: '10:00',
|
|
22
21
|
endTime: '10:15',
|
|
23
22
|
isAllDay: false,
|
|
24
|
-
repeat: 'none',
|
|
25
23
|
disabled: false,
|
|
26
24
|
variant: 'primary',
|
|
27
25
|
color: '#73E6DC',
|
|
@@ -34,7 +32,6 @@ const mockEvents = [
|
|
|
34
32
|
startTime: '10:30',
|
|
35
33
|
endTime: '11:30',
|
|
36
34
|
isAllDay: false,
|
|
37
|
-
repeat: 'none',
|
|
38
35
|
disabled: false,
|
|
39
36
|
variant: 'secondary',
|
|
40
37
|
color: '#806BFF',
|
|
@@ -47,7 +44,6 @@ const mockEvents = [
|
|
|
47
44
|
startTime: '10:45',
|
|
48
45
|
endTime: '11:00',
|
|
49
46
|
isAllDay: false,
|
|
50
|
-
repeat: 'none',
|
|
51
47
|
disabled: false,
|
|
52
48
|
variant: 'secondary',
|
|
53
49
|
color: '#806BFF',
|
|
@@ -60,7 +56,6 @@ const mockEvents = [
|
|
|
60
56
|
startTime: '11:00',
|
|
61
57
|
endTime: '12:00',
|
|
62
58
|
isAllDay: false,
|
|
63
|
-
repeat: 'none',
|
|
64
59
|
disabled: false,
|
|
65
60
|
variant: 'secondary',
|
|
66
61
|
color: '#806BFF',
|
|
@@ -51,7 +51,7 @@ export class VegaCalendarViewWithTimeRenderer extends VegaSlimmer {
|
|
|
51
51
|
h("div", { class: "calendar-view-content" }, source.map((item) => {
|
|
52
52
|
return (h("div", { class: "grid-col border-divider-left", key: item.date },
|
|
53
53
|
h("div", { class: "hour-empty border-divider-top" }),
|
|
54
|
-
this.renderHourBlock()));
|
|
54
|
+
this.renderHourBlock(item)));
|
|
55
55
|
})),
|
|
56
56
|
this.dayViewTimedEventRenderer.render(),
|
|
57
57
|
this.timeLineRenderer.renderTimeMarker(source))));
|
|
@@ -59,14 +59,28 @@ export class VegaCalendarViewWithTimeRenderer extends VegaSlimmer {
|
|
|
59
59
|
/**
|
|
60
60
|
* The function `renderHourBlock` returns an array of HTML elements representing hour blocks with time information.
|
|
61
61
|
*
|
|
62
|
+
* @param {CalendarDate} calendarDate then current calendar date object
|
|
62
63
|
* @returns {HTMLElement[]} An array of HTMLElements is being returned. Each HTMLElement represents an hour block with a time value inside a div element.
|
|
63
64
|
*/
|
|
64
|
-
renderHourBlock() {
|
|
65
|
+
renderHourBlock(calendarDate) {
|
|
65
66
|
const timeLineSource = Array(24).fill('');
|
|
66
|
-
return timeLineSource.map(() => {
|
|
67
|
-
return h("div", { class: "grid-cell border-divider-top"
|
|
67
|
+
return timeLineSource.map((_item, index) => {
|
|
68
|
+
return (h("div", { class: "grid-cell border-divider-top",
|
|
69
|
+
// eslint-disable-next-line react/jsx-no-bind
|
|
70
|
+
onDblClick: () => {
|
|
71
|
+
this.handleDateBlockClick(calendarDate, index);
|
|
72
|
+
} }));
|
|
68
73
|
});
|
|
69
74
|
}
|
|
75
|
+
/**
|
|
76
|
+
* emit vega click event when click the date block
|
|
77
|
+
*
|
|
78
|
+
* @param {CalendarDate} calendarDate the calendar date object
|
|
79
|
+
*/
|
|
80
|
+
handleDateBlockClick(calendarDate, hour) {
|
|
81
|
+
const { year, month, date } = calendarDate;
|
|
82
|
+
this.dateDblClickEmitter.emit({ year, month, date, hour });
|
|
83
|
+
}
|
|
70
84
|
}
|
|
71
85
|
__decorate([
|
|
72
86
|
MapToComponentField()
|
|
@@ -86,3 +100,6 @@ __decorate([
|
|
|
86
100
|
__decorate([
|
|
87
101
|
MapToComponentField()
|
|
88
102
|
], VegaCalendarViewWithTimeRenderer.prototype, "calendarViewController", void 0);
|
|
103
|
+
__decorate([
|
|
104
|
+
MapToComponentField()
|
|
105
|
+
], VegaCalendarViewWithTimeRenderer.prototype, "dateDblClickEmitter", void 0);
|
|
@@ -37,7 +37,9 @@ export class VegaCalendarMonthViewRenderer extends VegaSlimmer {
|
|
|
37
37
|
'current-month-day': item.compare(currentDate).inMonth,
|
|
38
38
|
'active': item.isToday(),
|
|
39
39
|
'disabled': false,
|
|
40
|
-
}, key: `${item.month}-${item.date}
|
|
40
|
+
}, key: `${item.month}-${item.date}`,
|
|
41
|
+
// eslint-disable-next-line react/jsx-no-bind
|
|
42
|
+
onDblClick: (e) => this.handleDateBlockClick(e, item) },
|
|
41
43
|
this.renderDateBlock(item),
|
|
42
44
|
this.monthEventRenderer.render(item, eventsArray[itemIndex], displayEventsArray[itemIndex], itemIndex)));
|
|
43
45
|
})));
|
|
@@ -53,7 +55,42 @@ export class VegaCalendarMonthViewRenderer extends VegaSlimmer {
|
|
|
53
55
|
const isMonthFirstDay = item.date === 1;
|
|
54
56
|
return (h("div", { class: "date" },
|
|
55
57
|
isMonthFirstDay && h("div", { class: "month-block" }, getMonthName(item.toDate(), true)),
|
|
56
|
-
h("div", { role: "button", tabIndex: 0, class: "grid-col"
|
|
58
|
+
h("div", { role: "button", tabIndex: 0, class: "grid-col",
|
|
59
|
+
// eslint-disable-next-line react/jsx-no-bind
|
|
60
|
+
onDblClick: (e) => this.goToCurrentDayView(e, item) }, item.date)));
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* switch to current date day view
|
|
64
|
+
*
|
|
65
|
+
* @param {MouseEvent} e the double click event object
|
|
66
|
+
* @param {CalendarDate} calendarDate the calendar date object
|
|
67
|
+
*/
|
|
68
|
+
goToCurrentDayView(e, calendarDate) {
|
|
69
|
+
e.stopPropagation();
|
|
70
|
+
this.currentPeriodController.updateCalendarPeriod('day', calendarDate);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* emit vega click event when click the date block
|
|
74
|
+
*
|
|
75
|
+
* @param {MouseEvent} e the mouse event object
|
|
76
|
+
* @param {CalendarDate} calendarDate the calendar date object
|
|
77
|
+
*/
|
|
78
|
+
handleDateBlockClick(e, calendarDate) {
|
|
79
|
+
const target = e.target;
|
|
80
|
+
if (this.isMonthBlockBlankArea(target)) {
|
|
81
|
+
const { year, month, date } = calendarDate;
|
|
82
|
+
this.dateDblClickEmitter.emit({ year, month, date, hour: 0 });
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* determine if the clicked element is blank area
|
|
87
|
+
*
|
|
88
|
+
* @param {HTMLElement} element the target element
|
|
89
|
+
* @returns {boolean} true or false
|
|
90
|
+
*/
|
|
91
|
+
isMonthBlockBlankArea(element) {
|
|
92
|
+
// the more button and the calendar event component should not trigger dateDblClick event
|
|
93
|
+
return !element.classList.contains('more-button') && element.tagName !== 'VEGA-CALENDAR-EVENT';
|
|
57
94
|
}
|
|
58
95
|
}
|
|
59
96
|
__decorate([
|
|
@@ -68,6 +105,12 @@ __decorate([
|
|
|
68
105
|
__decorate([
|
|
69
106
|
MapToComponentField()
|
|
70
107
|
], VegaCalendarMonthViewRenderer.prototype, "calendarViewController", void 0);
|
|
108
|
+
__decorate([
|
|
109
|
+
MapToComponentField()
|
|
110
|
+
], VegaCalendarMonthViewRenderer.prototype, "currentPeriodController", void 0);
|
|
71
111
|
__decorate([
|
|
72
112
|
MapToComponentField()
|
|
73
113
|
], VegaCalendarMonthViewRenderer.prototype, "monthEventRenderer", void 0);
|
|
114
|
+
__decorate([
|
|
115
|
+
MapToComponentField()
|
|
116
|
+
], VegaCalendarMonthViewRenderer.prototype, "dateDblClickEmitter", void 0);
|