@globalpayments/vega 2.27.0 → 2.28.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/{app-globals-190595cc.js → app-globals-512d84f4.js} +1 -1
- package/dist/cjs/{form-field-controller-slimmer-ee984eb2.js → form-field-controller-slimmer-223f8ee3.js} +1 -1
- package/dist/cjs/index.cjs.js +1 -1
- package/dist/cjs/loader.cjs.js +3 -3
- package/dist/cjs/{string-input-formatter-slimmer-fcfa5bb7.js → string-input-formatter-slimmer-79272527.js} +8 -13
- package/dist/cjs/{sub-state-observer-slimmer-832a4215.js → sub-state-observer-slimmer-36660092.js} +2 -2
- package/dist/cjs/{translation-slimmer-8ebf126d.js → translation-slimmer-83577cfd.js} +1 -1
- package/dist/cjs/vega-app-header-button.cjs.entry.js +1 -1
- package/dist/cjs/vega-button-circle.cjs.entry.js +1 -1
- package/dist/cjs/vega-button-group_2.cjs.entry.js +3 -3
- package/dist/cjs/vega-button.cjs.entry.js +1 -1
- package/dist/cjs/vega-calendar_3.cjs.entry.js +963 -838
- package/dist/cjs/vega-checkbox_2.cjs.entry.js +2 -2
- package/dist/cjs/vega-chip.cjs.entry.js +1 -1
- package/dist/cjs/vega-color-picker.cjs.entry.js +2 -2
- package/dist/cjs/vega-combo-box.cjs.entry.js +2 -2
- package/dist/cjs/vega-date-picker_2.cjs.entry.js +4 -4
- package/dist/cjs/vega-dropdown_5.cjs.entry.js +3 -3
- package/dist/cjs/vega-env-manager-23b8b23c.js +2 -2
- package/dist/cjs/vega-file-uploader.cjs.entry.js +3 -3
- package/dist/cjs/vega-form.cjs.entry.js +2 -2
- package/dist/cjs/vega-image-uploader.cjs.entry.js +3 -3
- package/dist/cjs/vega-input-credit-card.cjs.entry.js +2 -2
- package/dist/cjs/vega-input-phone-number.cjs.entry.js +2 -2
- package/dist/cjs/vega-input-range.cjs.entry.js +3 -3
- package/dist/cjs/vega-input-select.cjs.entry.js +3 -3
- package/dist/cjs/vega-input.cjs.entry.js +48 -16
- package/dist/cjs/vega-pagination.cjs.entry.js +2 -2
- package/dist/cjs/vega-radio_2.cjs.entry.js +2 -2
- package/dist/cjs/vega-selection-chip_2.cjs.entry.js +3 -3
- package/dist/cjs/vega-selection-tile_2.cjs.entry.js +3 -3
- package/dist/cjs/vega-signature-capture.cjs.entry.js +3 -3
- package/dist/cjs/vega-stepper.cjs.entry.js +2 -2
- package/dist/cjs/vega-table_8.cjs.entry.js +3 -3
- package/dist/cjs/vega-textarea.cjs.entry.js +2 -2
- package/dist/cjs/vega-time-picker_2.cjs.entry.js +3 -3
- package/dist/cjs/vega-toggle-switch.cjs.entry.js +2 -2
- package/dist/cjs/vega.cjs.js +3 -3
- package/dist/collection/components/vega-app-header-button/vega-app-header-button.css +7 -1
- package/dist/collection/components/vega-button/vega-button.css +1 -0
- package/dist/collection/components/vega-button-circle/vega-button-circle.css +4 -0
- package/dist/collection/components/vega-button-group/vega-button-group-item/vega-button-group-item.css +10 -0
- package/dist/collection/components/vega-button-group/vega-button-group.css +13 -0
- package/dist/collection/components/vega-calendar/slimmers/common/controllers/vega-calendar-current-period-controller.js +17 -3
- package/dist/collection/components/vega-calendar/slimmers/common/controllers/vega-calendar-event-responsive-controller.js +1 -1
- package/dist/collection/components/vega-calendar/slimmers/common/controllers/vega-calendar-view-controller.js +3 -0
- package/dist/collection/components/vega-calendar/slimmers/common/helpers/repeat-pattern/calendar-event-daily-repeat-pattern.js +7 -1
- package/dist/collection/components/vega-calendar/slimmers/common/helpers/repeat-pattern/calendar-event-monthly-repeat-pattern.js +7 -1
- package/dist/collection/components/vega-calendar/slimmers/common/helpers/repeat-pattern/calendar-event-weekly-repeat-pattern.js +9 -1
- package/dist/collection/components/vega-calendar/slimmers/common/helpers/repeat-pattern/calendar-event-yearly-repeat-pattern.js +7 -1
- package/dist/collection/components/vega-calendar/slimmers/common/helpers/test/calendar-event-repeat-pattern-factory.test.js +56 -0
- package/dist/collection/components/vega-calendar/slimmers/common/layout/full-day-event-layout-generator.js +1 -1
- package/dist/collection/components/vega-calendar/slimmers/common/renderers/vega-calendar-switch-panel.js +4 -3
- package/dist/collection/components/vega-calendar/slimmers/common/renderers/vega-calendar-view-renderer.js +4 -1
- package/dist/collection/components/vega-calendar/slimmers/day-view/renderers/timed-event/vega-calendar-day-event-layout-renderer.js +1 -1
- package/dist/collection/components/vega-calendar/slimmers/day-view/renderers/vega-calendar-time-line-renderer.js +1 -1
- package/dist/collection/components/vega-calendar/slimmers/day-view/renderers/vega-calendar-view-with-time-renderer.js +0 -3
- package/dist/collection/components/vega-calendar/slimmers/month-view/renderers/vega-calendar-month-event-renderer.js +3 -1
- package/dist/collection/components/vega-calendar/slimmers/month-view/renderers/vega-calendar-month-view-renderer.js +0 -3
- package/dist/collection/components/vega-calendar/utils/index.js +24 -0
- package/dist/collection/components/vega-calendar/vega-calendar-event/slimmers/renderers/vega-calendar-event-renderer.js +3 -2
- package/dist/collection/components/vega-calendar/vega-calendar.css +10 -6
- package/dist/collection/components/vega-calendar/vega-calendar.js +36 -0
- package/dist/collection/components/vega-chip/vega-chip.css +4 -0
- package/dist/collection/helpers/calendar/calendar-period/calendar-period.abstract.js +8 -0
- package/dist/collection/helpers/calendar/calendar-period/day-period.js +27 -4
- package/dist/collection/helpers/calendar/calendar-period/month-period.js +4 -2
- package/dist/collection/helpers/calendar/calendar-period/week-period.js +4 -2
- package/dist/collection/helpers/calendar/calendar-view-generator/month-view-generator.js +8 -2
- package/dist/collection/helpers/calendar/calendar-view-generator/week-view-generator.js +8 -1
- package/dist/collection/helpers/calendar/test/calendar-period/day-period.test.js +16 -0
- package/dist/collection/helpers/calendar/test/calendar-view-generator/month-view-generator.test.js +50 -0
- package/dist/collection/helpers/calendar/test/calendar-view-generator/week-view-generator.test.js +15 -0
- package/dist/collection/helpers/formatter/string-formatter/number-mask-strategy.js +36 -4
- package/dist/collection/helpers/formatter/string-formatter/number-thousand-comma-strategy.js +10 -9
- package/dist/collection/helpers/formatter/test/string-formatter/number-mask-strategy.test.js +11 -2
- package/dist/collection/helpers/formatter/test/string-formatter/number-thousand-comma-mask-strategy.test.js +10 -0
- package/dist/collection/helpers/slimmers/string-input-formatter-slimmer.js +8 -13
- package/dist/collection/helpers/slimmers/sub-state/sub-state-observer-slimmer.js +2 -2
- package/dist/collection/helpers/slimmers/test/string-input-formatter-slimmer.test.js +52 -20
- package/dist/collection/utils/spec-utils.js +28 -0
- package/dist/collection/utils/test-utils.js +21 -0
- package/dist/esm/{app-globals-d0b86358.js → app-globals-41797af8.js} +1 -1
- package/dist/esm/{form-field-controller-slimmer-2f9c871b.js → form-field-controller-slimmer-edbaaf7c.js} +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/loader.js +3 -3
- package/dist/esm/{string-input-formatter-slimmer-bfe3f5e5.js → string-input-formatter-slimmer-fc23bc9f.js} +8 -13
- package/dist/esm/{sub-state-observer-slimmer-af28076b.js → sub-state-observer-slimmer-8eff5559.js} +2 -2
- package/dist/esm/{translation-slimmer-c740a5f3.js → translation-slimmer-79f9a9c9.js} +1 -1
- package/dist/esm/vega-app-header-button.entry.js +1 -1
- package/dist/esm/vega-button-circle.entry.js +1 -1
- package/dist/esm/vega-button-group_2.entry.js +3 -3
- package/dist/esm/vega-button.entry.js +1 -1
- package/dist/esm/vega-calendar_3.entry.js +963 -838
- package/dist/esm/vega-checkbox_2.entry.js +2 -2
- package/dist/esm/vega-chip.entry.js +1 -1
- package/dist/esm/vega-color-picker.entry.js +2 -2
- package/dist/esm/vega-combo-box.entry.js +2 -2
- package/dist/esm/vega-date-picker_2.entry.js +4 -4
- package/dist/esm/vega-dropdown_5.entry.js +3 -3
- package/dist/esm/vega-env-manager-8f8dc473.js +2 -2
- package/dist/esm/vega-file-uploader.entry.js +3 -3
- package/dist/esm/vega-form.entry.js +2 -2
- package/dist/esm/vega-image-uploader.entry.js +3 -3
- package/dist/esm/vega-input-credit-card.entry.js +2 -2
- package/dist/esm/vega-input-phone-number.entry.js +2 -2
- package/dist/esm/vega-input-range.entry.js +3 -3
- package/dist/esm/vega-input-select.entry.js +3 -3
- package/dist/esm/vega-input.entry.js +48 -16
- package/dist/esm/vega-pagination.entry.js +2 -2
- package/dist/esm/vega-radio_2.entry.js +2 -2
- package/dist/esm/vega-selection-chip_2.entry.js +3 -3
- package/dist/esm/vega-selection-tile_2.entry.js +3 -3
- package/dist/esm/vega-signature-capture.entry.js +3 -3
- package/dist/esm/vega-stepper.entry.js +2 -2
- package/dist/esm/vega-table_8.entry.js +3 -3
- package/dist/esm/vega-textarea.entry.js +2 -2
- package/dist/esm/vega-time-picker_2.entry.js +3 -3
- package/dist/esm/vega-toggle-switch.entry.js +2 -2
- package/dist/esm/vega.js +3 -3
- package/dist/types/components/vega-calendar/slimmers/common/controllers/vega-calendar-current-period-controller.d.ts +5 -0
- package/dist/types/components/vega-calendar/slimmers/common/controllers/vega-calendar-view-controller.d.ts +1 -0
- package/dist/types/components/vega-calendar/slimmers/common/renderers/vega-calendar-switch-panel.d.ts +1 -1
- package/dist/types/components/vega-calendar/slimmers/common/renderers/vega-calendar-view-renderer.d.ts +1 -0
- package/dist/types/components/vega-calendar/slimmers/day-view/renderers/vega-calendar-view-with-time-renderer.d.ts +0 -1
- package/dist/types/components/vega-calendar/slimmers/month-view/renderers/vega-calendar-month-view-renderer.d.ts +0 -1
- package/dist/types/components/vega-calendar/utils/index.d.ts +13 -0
- package/dist/types/components/vega-calendar/vega-calendar.d.ts +10 -0
- package/dist/types/components.d.ts +10 -0
- package/dist/types/helpers/calendar/calendar-period/calendar-period.abstract.d.ts +7 -0
- package/dist/types/helpers/calendar/calendar-period/day-period.d.ts +8 -1
- package/dist/types/helpers/calendar/calendar-period/month-period.d.ts +2 -1
- package/dist/types/helpers/calendar/calendar-period/week-period.d.ts +2 -1
- package/dist/types/helpers/formatter/string-formatter/number-mask-strategy.d.ts +20 -0
- package/dist/types/helpers/slimmers/sub-state/sub-state-observer-slimmer.d.ts +1 -1
- package/dist/types/utils/spec-utils.d.ts +8 -0
- package/dist/types/utils/test-utils.d.ts +10 -0
- package/dist/vega/index.esm.js +1 -1
- package/dist/vega/{p-f57454a6.js → p-0120ce7a.js} +1 -1
- package/dist/vega/{p-1dc80394.entry.js → p-0395e791.entry.js} +1 -1
- package/dist/vega/{p-8a1d8b99.entry.js → p-048a97d1.entry.js} +1 -1
- package/dist/vega/{p-963e8c45.entry.js → p-0dd750b0.entry.js} +1 -1
- package/dist/vega/{p-c31002d0.entry.js → p-128fbe13.entry.js} +1 -1
- package/dist/vega/p-1f38eef6.entry.js +1 -0
- package/dist/vega/{p-8912d5c9.entry.js → p-1fc5373a.entry.js} +1 -1
- package/dist/vega/{p-7f8db003.entry.js → p-22a85055.entry.js} +1 -1
- package/dist/vega/{p-351a0ea1.entry.js → p-34545d2d.entry.js} +1 -1
- package/dist/vega/{p-f37e6adf.entry.js → p-40f6add9.entry.js} +1 -1
- package/dist/vega/p-41784db1.js +1 -0
- package/dist/vega/{p-c9e3413b.entry.js → p-4bc042ec.entry.js} +1 -1
- package/dist/vega/{p-a7666db3.entry.js → p-5d231a82.entry.js} +1 -1
- package/dist/vega/p-5f377954.js +1 -1
- package/dist/vega/{p-ded47af0.entry.js → p-657df167.entry.js} +1 -1
- package/dist/vega/{p-28f6ead3.entry.js → p-6d015656.entry.js} +1 -1
- package/dist/vega/{p-8c2852c4.entry.js → p-6e3cc7f0.entry.js} +1 -1
- package/dist/vega/p-8843226a.entry.js +1 -0
- package/dist/vega/{p-09352107.entry.js → p-8c72aa56.entry.js} +1 -1
- package/dist/vega/{p-ba3db23b.entry.js → p-8f60c3ee.entry.js} +1 -1
- package/dist/vega/{p-bffaa859.entry.js → p-9a4ffc2c.entry.js} +1 -1
- package/dist/vega/p-9e6934fb.js +1 -0
- package/dist/vega/p-a10074a8.entry.js +1 -0
- package/dist/vega/{p-e7e19350.entry.js → p-a454acc4.entry.js} +1 -1
- package/dist/vega/p-a46329bb.js +1 -0
- package/dist/vega/{p-27b73500.entry.js → p-a8b1f19c.entry.js} +1 -1
- package/dist/vega/{p-14c0b4ea.js → p-bccacf42.js} +1 -1
- package/dist/vega/{p-8eadc60b.entry.js → p-d0a83562.entry.js} +1 -1
- package/dist/vega/{p-288b47f0.entry.js → p-d4fb2264.entry.js} +1 -1
- package/dist/vega/{p-fa78f87f.entry.js → p-d550fc66.entry.js} +1 -1
- package/dist/vega/p-d686dd96.entry.js +1 -0
- package/dist/vega/{p-0afaa0f3.entry.js → p-ead9a2b9.entry.js} +1 -1
- package/dist/vega/{p-54f5c773.entry.js → p-f0ad06bd.entry.js} +1 -1
- package/dist/vega/{p-8aaa9233.entry.js → p-f2019f70.entry.js} +1 -1
- package/dist/vega/{p-af71fe84.entry.js → p-fc746bae.entry.js} +1 -1
- package/dist/vega/vega.esm.js +1 -1
- package/package.json +1 -1
- package/dist/vega/p-15452727.js +0 -1
- package/dist/vega/p-38e3d50e.entry.js +0 -1
- package/dist/vega/p-8a646846.entry.js +0 -1
- package/dist/vega/p-bf557666.entry.js +0 -1
- package/dist/vega/p-d7bd2be5.entry.js +0 -1
- package/dist/vega/p-db120a1e.js +0 -1
- package/dist/vega/p-dee487f9.js +0 -1
- /package/dist/cjs/{translation-77e9ccce.js → translation-0dd74433.js} +0 -0
- /package/dist/esm/{translation-3b437b6d.js → translation-0fa7cf77.js} +0 -0
- /package/dist/vega/{p-05ebf5a3.js → p-be784f53.js} +0 -0
|
@@ -5,12 +5,25 @@
|
|
|
5
5
|
*/
|
|
6
6
|
:host {
|
|
7
7
|
display: inline-block;
|
|
8
|
+
border-radius: 9999px;
|
|
8
9
|
}
|
|
9
10
|
|
|
10
11
|
.vega-button-group-primary {
|
|
11
12
|
gap: 6px;
|
|
12
13
|
}
|
|
13
14
|
|
|
15
|
+
.vega-button-group-container:not(.vega-button-group-tertiary) {
|
|
16
|
+
border-radius: 9999px;
|
|
17
|
+
}
|
|
18
|
+
.vega-button-group-container:not(.vega-button-group-tertiary) > ::slotted(.vega-button-group-item:first-child) {
|
|
19
|
+
border-top-left-radius: 9999px;
|
|
20
|
+
border-bottom-left-radius: 9999px;
|
|
21
|
+
}
|
|
22
|
+
.vega-button-group-container:not(.vega-button-group-tertiary) > ::slotted(.vega-button-group-item:last-child) {
|
|
23
|
+
border-top-right-radius: 9999px;
|
|
24
|
+
border-bottom-right-radius: 9999px;
|
|
25
|
+
}
|
|
26
|
+
|
|
14
27
|
.vega-button-group-tertiary > ::slotted(.vega-button-group-item) {
|
|
15
28
|
padding-left: 12px;
|
|
16
29
|
padding-right: 12px;
|
|
@@ -6,6 +6,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
6
6
|
};
|
|
7
7
|
import { MapToComponentField, MapToComponentMethod, VegaSlimmer } from 'vega-slimmer/core';
|
|
8
8
|
import { CalendarDate, DayPeriod, MonthPeriod, WeekPeriod, } from '../../../../../helpers/calendar';
|
|
9
|
+
import { getClosestWorkday } from '../../../utils';
|
|
9
10
|
/** This TypeScript class `VegaCalendarCurrentPeriodController` updates the current period based on the view mode in a calendar component. */
|
|
10
11
|
export class VegaCalendarCurrentPeriodController extends VegaSlimmer {
|
|
11
12
|
/**
|
|
@@ -25,13 +26,14 @@ export class VegaCalendarCurrentPeriodController extends VegaSlimmer {
|
|
|
25
26
|
updateCalendarPeriod(viewMode, date) {
|
|
26
27
|
switch (viewMode) {
|
|
27
28
|
case 'month':
|
|
28
|
-
this.setCurrentPeriod(new MonthPeriod(date));
|
|
29
|
+
this.setCurrentPeriod(new MonthPeriod(date, this.showWeekends));
|
|
29
30
|
break;
|
|
30
31
|
case 'week':
|
|
31
|
-
this.setCurrentPeriod(new WeekPeriod(date));
|
|
32
|
+
this.setCurrentPeriod(new WeekPeriod(date, this.showWeekends));
|
|
32
33
|
break;
|
|
33
34
|
case 'day':
|
|
34
|
-
this.
|
|
35
|
+
date = this.showWeekends === false ? getClosestWorkday(date) : date;
|
|
36
|
+
this.setCurrentPeriod(new DayPeriod(date, this.showWeekends));
|
|
35
37
|
break;
|
|
36
38
|
}
|
|
37
39
|
}
|
|
@@ -73,6 +75,12 @@ export class VegaCalendarCurrentPeriodController extends VegaSlimmer {
|
|
|
73
75
|
this.updateCalendarPeriod(viewMode, this.currentPeriod.current);
|
|
74
76
|
}
|
|
75
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* The calendar period should update when the property showWeekends change
|
|
80
|
+
*/
|
|
81
|
+
updateCurrentPeriodAfterHideWeekEndsChange() {
|
|
82
|
+
this.updateCalendarPeriod(this.viewMode, this.currentPeriod.current);
|
|
83
|
+
}
|
|
76
84
|
/**
|
|
77
85
|
* The function `getStartDateAndEndDate` returns an array of `VegaCalendarDateType` objects based on the `startDate` and `endDate` properties of the `currentPeriod` object.
|
|
78
86
|
*
|
|
@@ -106,6 +114,9 @@ __decorate([
|
|
|
106
114
|
__decorate([
|
|
107
115
|
MapToComponentField({ writable: true })
|
|
108
116
|
], VegaCalendarCurrentPeriodController.prototype, "viewMode", void 0);
|
|
117
|
+
__decorate([
|
|
118
|
+
MapToComponentField()
|
|
119
|
+
], VegaCalendarCurrentPeriodController.prototype, "showWeekends", void 0);
|
|
109
120
|
__decorate([
|
|
110
121
|
MapToComponentMethod('componentWillLoad')
|
|
111
122
|
], VegaCalendarCurrentPeriodController.prototype, "initialCurrentPeriod", null);
|
|
@@ -115,3 +126,6 @@ __decorate([
|
|
|
115
126
|
__decorate([
|
|
116
127
|
MapToComponentMethod('watchViewModeChange')
|
|
117
128
|
], VegaCalendarCurrentPeriodController.prototype, "updateCurrentPeriodByViewMode", null);
|
|
129
|
+
__decorate([
|
|
130
|
+
MapToComponentMethod('watchShowWeekendsChange')
|
|
131
|
+
], VegaCalendarCurrentPeriodController.prototype, "updateCurrentPeriodAfterHideWeekEndsChange", null);
|
|
@@ -32,7 +32,7 @@ export class VegaCalendarEventResponsiveController extends PageResizeObserverSli
|
|
|
32
32
|
// The debounce method will case this method called after component disconnect, then the slimmer will get issue to get viewMode from component class, this issue will catch in spec.ts
|
|
33
33
|
try {
|
|
34
34
|
const eventContainerRef = this.monthEventRenderer.getMonthEventContainerRef();
|
|
35
|
-
if (this.viewMode === 'month' && eventContainerRef) {
|
|
35
|
+
if (this.viewMode === 'month' && eventContainerRef && eventContainerRef.parentElement) {
|
|
36
36
|
const maxContainerHeight = eventContainerRef.parentElement.getBoundingClientRect().height;
|
|
37
37
|
const count = Math.floor((maxContainerHeight - VegaCalendarEventResponsiveController.monthDateTitleHeight) /
|
|
38
38
|
VegaCalendarEventItemRenderer.backgroundColorModeEventHeight);
|
|
@@ -59,6 +59,9 @@ __decorate([
|
|
|
59
59
|
__decorate([
|
|
60
60
|
MapToComponentField()
|
|
61
61
|
], VegaCalendarViewController.prototype, "currentPeriod", void 0);
|
|
62
|
+
__decorate([
|
|
63
|
+
MapToComponentField()
|
|
64
|
+
], VegaCalendarViewController.prototype, "showWeekends", void 0);
|
|
62
65
|
__decorate([
|
|
63
66
|
MapToComponentField()
|
|
64
67
|
], VegaCalendarViewController.prototype, "currentPeriodController", void 0);
|
|
@@ -34,7 +34,13 @@ export class CalendarEventDailyRepeatPattern extends CalendarEventBaseRepeatPatt
|
|
|
34
34
|
(!this.count || (typeof this.count === 'number' && this.cache.length < this.count))) {
|
|
35
35
|
let nextMatchDate = this.getNextRepeatStartDate(lastMatchDate);
|
|
36
36
|
while (nextMatchDate && nextMatchDate.toDate() < endDate.toDate()) {
|
|
37
|
-
|
|
37
|
+
const newNextMatchDate = this.getNextRepeatStartDate(nextMatchDate);
|
|
38
|
+
//The below if block is used to break the infinite loop when the `getNextRepeatStartDate` method return unexpected result. such as when the date is greater than a certain value, it will be returned back 1900.
|
|
39
|
+
if (newNextMatchDate && newNextMatchDate.toDate() <= nextMatchDate.toDate()) {
|
|
40
|
+
this.cache.pop();
|
|
41
|
+
break;
|
|
42
|
+
}
|
|
43
|
+
nextMatchDate = newNextMatchDate;
|
|
38
44
|
if (typeof this.count === 'number' && this.cache.length >= this.count) {
|
|
39
45
|
break;
|
|
40
46
|
}
|
|
@@ -37,7 +37,13 @@ export class CalendarEventMonthlyRepeatPattern extends CalendarEventBaseRepeatPa
|
|
|
37
37
|
(!this.count || (typeof this.count === 'number' && this.cache.length < this.count))) {
|
|
38
38
|
let nextMatchDate = this.getNextRepeatStartDate(lastMatchDate);
|
|
39
39
|
while (nextMatchDate && nextMatchDate.toDate() < endDate.toDate()) {
|
|
40
|
-
|
|
40
|
+
const newNextMatchDate = this.getNextRepeatStartDate(nextMatchDate);
|
|
41
|
+
//The below if block is used to break the infinite loop when the `getNextRepeatStartDate` method return unexpected result. such as when the date is greater than a certain value, it will be returned back 1900.
|
|
42
|
+
if (newNextMatchDate && newNextMatchDate.toDate() <= nextMatchDate.toDate()) {
|
|
43
|
+
this.cache.pop();
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
nextMatchDate = newNextMatchDate;
|
|
41
47
|
if (typeof this.count === 'number' && this.cache.length >= this.count) {
|
|
42
48
|
break;
|
|
43
49
|
}
|
|
@@ -53,7 +53,15 @@ export class CalendarEventWeeklyRepeatPattern extends CalendarEventBaseRepeatPat
|
|
|
53
53
|
(!this.count || (typeof this.count === 'number' && this.cache.length < this.count))) {
|
|
54
54
|
let nextMatchDate = this.getNextRepeatStartDate(lastMatchDate);
|
|
55
55
|
while (nextMatchDate && nextMatchDate[0].toDate() < endDate.toDate()) {
|
|
56
|
-
|
|
56
|
+
const newNextMatchDate = this.getNextRepeatStartDate(nextMatchDate);
|
|
57
|
+
//The below if block is used to break the infinite loop when the `getNextRepeatStartDate` method return unexpected result. such as when the date is greater than a certain value, it will be returned back 1900.
|
|
58
|
+
if (newNextMatchDate &&
|
|
59
|
+
newNextMatchDate[0] &&
|
|
60
|
+
newNextMatchDate[0].toDate() <= nextMatchDate[0].toDate()) {
|
|
61
|
+
this.cache.pop();
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
64
|
+
nextMatchDate = newNextMatchDate;
|
|
57
65
|
if (typeof this.count === 'number' && this.getValidCache().length >= this.count) {
|
|
58
66
|
break;
|
|
59
67
|
}
|
|
@@ -38,7 +38,13 @@ export class CalendarEventYearlyRepeatPattern extends CalendarEventBaseRepeatPat
|
|
|
38
38
|
(!this.count || (typeof this.count === 'number' && this.cache.length < this.count))) {
|
|
39
39
|
let nextMatchDate = this.getNextRepeatStartDate(lastMatchDate);
|
|
40
40
|
while (nextMatchDate && nextMatchDate.toDate() < endDate.toDate()) {
|
|
41
|
-
|
|
41
|
+
const newNextMatchDate = this.getNextRepeatStartDate(nextMatchDate);
|
|
42
|
+
//The below if block is used to break the infinite loop when the `getNextRepeatStartDate` method return unexpected result. such as when the date is greater than a certain value, it will be returned back 1900.
|
|
43
|
+
if (newNextMatchDate && newNextMatchDate.toDate() <= nextMatchDate.toDate()) {
|
|
44
|
+
this.cache.pop();
|
|
45
|
+
break;
|
|
46
|
+
}
|
|
47
|
+
nextMatchDate = newNextMatchDate;
|
|
42
48
|
if (typeof this.count === 'number' && this.cache.length >= this.count) {
|
|
43
49
|
break;
|
|
44
50
|
}
|
|
@@ -102,4 +102,60 @@ describe('calendarEventRepeatPatternFactory', () => {
|
|
|
102
102
|
const dayPeriod = new DayPeriod(new CalendarDate(2024, 8, 1));
|
|
103
103
|
expect(pattern['isSeriesInPeriod'](new CalendarDate(2024, 7, 31), 3, dayPeriod)).toBeTruthy();
|
|
104
104
|
});
|
|
105
|
+
it('dailyPattern#generateRepeatDateCacheUntilEndDate boundary testing', () => {
|
|
106
|
+
const pattern = calendarEventRepeatPatternFactory.getPattern(new Date(2024, 0, 1), {
|
|
107
|
+
frequency: 'daily',
|
|
108
|
+
interval: 1,
|
|
109
|
+
until: '01/04/2024',
|
|
110
|
+
});
|
|
111
|
+
spyOn(CalendarDate, 'from').and.callFake(function (item) {
|
|
112
|
+
return item.getDate() === 3
|
|
113
|
+
? new CalendarDate(item.getFullYear(), 1, 1)
|
|
114
|
+
: new CalendarDate(item.getFullYear(), item.getMonth() + 1, item.getDate());
|
|
115
|
+
});
|
|
116
|
+
pattern['generateRepeatDateCacheUntilEndDate'](CalendarDate.from(new Date(2024, 1, 1)));
|
|
117
|
+
expect(pattern['cache'].length).toEqual(2);
|
|
118
|
+
});
|
|
119
|
+
it('monthlyPattern#generateRepeatDateCacheUntilEndDate boundary testing', () => {
|
|
120
|
+
const pattern = calendarEventRepeatPatternFactory.getPattern(new Date(2024, 0, 1), {
|
|
121
|
+
frequency: 'monthly',
|
|
122
|
+
interval: 1,
|
|
123
|
+
until: '04/03/2024',
|
|
124
|
+
});
|
|
125
|
+
spyOn(CalendarDate, 'from').and.callFake(function (item) {
|
|
126
|
+
return item.getMonth() === 2
|
|
127
|
+
? new CalendarDate(item.getFullYear(), 1, 1)
|
|
128
|
+
: new CalendarDate(item.getFullYear(), item.getMonth() + 1, item.getDate());
|
|
129
|
+
});
|
|
130
|
+
pattern['generateRepeatDateCacheUntilEndDate'](CalendarDate.from(new Date(2024, 4, 1)));
|
|
131
|
+
expect(pattern['cache'].length).toEqual(2);
|
|
132
|
+
});
|
|
133
|
+
it('yearlyPattern#generateRepeatDateCacheUntilEndDate boundary testing', () => {
|
|
134
|
+
const pattern = calendarEventRepeatPatternFactory.getPattern(new Date(2024, 0, 1), {
|
|
135
|
+
frequency: 'yearly',
|
|
136
|
+
interval: 1,
|
|
137
|
+
until: '03/03/2027',
|
|
138
|
+
});
|
|
139
|
+
spyOn(CalendarDate, 'from').and.callFake(function (item) {
|
|
140
|
+
return item.getFullYear() === 2026
|
|
141
|
+
? new CalendarDate(1900, 1, 1)
|
|
142
|
+
: new CalendarDate(item.getFullYear(), item.getMonth() + 1, item.getDate());
|
|
143
|
+
});
|
|
144
|
+
pattern['generateRepeatDateCacheUntilEndDate'](CalendarDate.from(new Date(2028, 1, 1)));
|
|
145
|
+
expect(pattern['cache'].length).toEqual(2);
|
|
146
|
+
});
|
|
147
|
+
it('weeklyPattern#generateRepeatDateCacheUntilEndDate boundary testing', () => {
|
|
148
|
+
const pattern = calendarEventRepeatPatternFactory.getPattern(new Date(2024, 0, 1), {
|
|
149
|
+
frequency: 'weekly',
|
|
150
|
+
interval: 1,
|
|
151
|
+
until: '02/01/2024',
|
|
152
|
+
});
|
|
153
|
+
spyOn(CalendarDate, 'from').and.callFake(function (item) {
|
|
154
|
+
return item.getDate() === 15
|
|
155
|
+
? new CalendarDate(item.getFullYear(), 1, 1)
|
|
156
|
+
: new CalendarDate(item.getFullYear(), item.getMonth() + 1, item.getDate());
|
|
157
|
+
});
|
|
158
|
+
pattern['generateRepeatDateCacheUntilEndDate'](CalendarDate.from(new Date(2024, 3, 1)));
|
|
159
|
+
expect(pattern['cache'].length).toEqual(2);
|
|
160
|
+
});
|
|
105
161
|
});
|
|
@@ -13,7 +13,7 @@ export class VegaCalendarFullDayEventLayoutGenerator extends VegaCalendarBaseEve
|
|
|
13
13
|
*/
|
|
14
14
|
generate(calendarEvents) {
|
|
15
15
|
const allShouldOrderLongEvents = this.collectAllShouldOrderLongEvents(calendarEvents);
|
|
16
|
-
const layoutRows = [
|
|
16
|
+
const layoutRows = [this.createNewLayoutCell()];
|
|
17
17
|
allShouldOrderLongEvents.forEach((eventView) => {
|
|
18
18
|
this.addCurrentEventToLayout(layoutRows, eventView);
|
|
19
19
|
});
|
|
@@ -44,7 +44,7 @@ export class VegaCalendarSwitchPanelRenderer extends VegaSlimmer {
|
|
|
44
44
|
this.currentPeriodController.setCurrentPeriod(this.currentPeriod.previous());
|
|
45
45
|
};
|
|
46
46
|
/**
|
|
47
|
-
* The more action menu
|
|
47
|
+
* The more action menu item click
|
|
48
48
|
*
|
|
49
49
|
* @param {NotifyObserverPayload<string>} payload The object contains the menu item key
|
|
50
50
|
*/
|
|
@@ -137,8 +137,9 @@ export class VegaCalendarSwitchPanelRenderer extends VegaSlimmer {
|
|
|
137
137
|
break;
|
|
138
138
|
}
|
|
139
139
|
case 'week': {
|
|
140
|
-
const
|
|
141
|
-
const
|
|
140
|
+
const weekItems = this.calendarView.dateItems[0];
|
|
141
|
+
const start = weekItems[0];
|
|
142
|
+
const end = weekItems[weekItems.length - 1];
|
|
142
143
|
const [startMonthName, endMonthName] = [start, end].map((item) => this.translationSlimmer.t(getMonthName(item.toDate())));
|
|
143
144
|
result = `${start.date} ${startMonthName}${start.year === end.year ? '' : ', ' + start.year} - ${end.date} ${endMonthName}, ${end.year}`;
|
|
144
145
|
break;
|
|
@@ -14,7 +14,7 @@ export class VegaCalendarViewRenderer extends VegaSlimmer {
|
|
|
14
14
|
* @returns {HTMLElement} html element
|
|
15
15
|
*/
|
|
16
16
|
render() {
|
|
17
|
-
return (h("div", { class: `calendar-view calendar-view-${this.viewMode}` }, this.viewMode === 'month'
|
|
17
|
+
return (h("div", { class: `calendar-view calendar-view-${this.viewMode} ${this.showWeekends === false ? 'calendar-hide-weekends' : ''}` }, this.viewMode === 'month'
|
|
18
18
|
? this.monthViewRenderer.render()
|
|
19
19
|
: this.viewWithTimeRenderer.render()));
|
|
20
20
|
}
|
|
@@ -22,6 +22,9 @@ export class VegaCalendarViewRenderer extends VegaSlimmer {
|
|
|
22
22
|
__decorate([
|
|
23
23
|
MapToComponentField()
|
|
24
24
|
], VegaCalendarViewRenderer.prototype, "viewMode", void 0);
|
|
25
|
+
__decorate([
|
|
26
|
+
MapToComponentField()
|
|
27
|
+
], VegaCalendarViewRenderer.prototype, "showWeekends", void 0);
|
|
25
28
|
__decorate([
|
|
26
29
|
MapToComponentField()
|
|
27
30
|
], VegaCalendarViewRenderer.prototype, "monthViewRenderer", void 0);
|
|
@@ -60,7 +60,7 @@ export class VegaCalendarDayViewEventLayoutRenderer extends VegaSlimmer {
|
|
|
60
60
|
top: `${(100 / VegaCalendarDayViewEventLayoutRenderer.totalNumberOfCells) * startIndex}%`,
|
|
61
61
|
width: `calc(100% - ${left * 100}%)`,
|
|
62
62
|
height: `${(100 / VegaCalendarDayViewEventLayoutRenderer.totalNumberOfCells) * (endIndex - startIndex)}%`,
|
|
63
|
-
zIndex: columnIndex > 0 ? `${columnIndex}` :
|
|
63
|
+
zIndex: columnIndex > 0 ? `${columnIndex}` : undefined,
|
|
64
64
|
};
|
|
65
65
|
}
|
|
66
66
|
}
|
|
@@ -98,9 +98,6 @@ __decorate([
|
|
|
98
98
|
__decorate([
|
|
99
99
|
MapToComponentField()
|
|
100
100
|
], VegaCalendarViewWithTimeRenderer.prototype, "calendarView", void 0);
|
|
101
|
-
__decorate([
|
|
102
|
-
MapToComponentField()
|
|
103
|
-
], VegaCalendarViewWithTimeRenderer.prototype, "calendarViewController", void 0);
|
|
104
101
|
__decorate([
|
|
105
102
|
MapToComponentField()
|
|
106
103
|
], VegaCalendarViewWithTimeRenderer.prototype, "dateDblClickEmitter", void 0);
|
|
@@ -147,7 +147,9 @@ export class VegaCalendarMonthEventRenderer extends VegaSlimmer {
|
|
|
147
147
|
}
|
|
148
148
|
if (removeItems.length) {
|
|
149
149
|
rowEvents.forEach((items) => {
|
|
150
|
-
if (items.length &&
|
|
150
|
+
if (items.length &&
|
|
151
|
+
items[items.length - 1] &&
|
|
152
|
+
removeItems.includes(items[items.length - 1])) {
|
|
151
153
|
result.push(items.slice(0, items.length - 1));
|
|
152
154
|
}
|
|
153
155
|
else {
|
|
@@ -108,9 +108,6 @@ __decorate([
|
|
|
108
108
|
__decorate([
|
|
109
109
|
MapToComponentField()
|
|
110
110
|
], VegaCalendarMonthViewRenderer.prototype, "currentPeriod", void 0);
|
|
111
|
-
__decorate([
|
|
112
|
-
MapToComponentField()
|
|
113
|
-
], VegaCalendarMonthViewRenderer.prototype, "calendarViewController", void 0);
|
|
114
111
|
__decorate([
|
|
115
112
|
MapToComponentField()
|
|
116
113
|
], VegaCalendarMonthViewRenderer.prototype, "currentPeriodController", void 0);
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
import { CalendarDate } from '../../../helpers/calendar';
|
|
2
|
+
export var DateDirection;
|
|
3
|
+
(function (DateDirection) {
|
|
4
|
+
DateDirection["PREVIOUS"] = "-1";
|
|
5
|
+
DateDirection["NEXT"] = "1";
|
|
6
|
+
})(DateDirection || (DateDirection = {}));
|
|
1
7
|
/**
|
|
2
8
|
* get month name from the month number
|
|
3
9
|
*
|
|
@@ -30,3 +36,21 @@ export function getTimeIndex(timeString, unit = 15) {
|
|
|
30
36
|
export function getCalendarEventSlotName(eventKey) {
|
|
31
37
|
return 'vega-calendar-event-slot-' + eventKey;
|
|
32
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* Returns the closest workday to a given calendar date based on a specified direction.
|
|
41
|
+
*
|
|
42
|
+
* @param {Date} date - The starting date from which you want to find the closest workday.
|
|
43
|
+
* @param {'-1' | '1'} [direction=1] - Determines whether to find the closest workday in the past or future. It can have two possible values:
|
|
44
|
+
* @returns {Date} The closest workday to the input date
|
|
45
|
+
*/
|
|
46
|
+
export function getClosestWorkday(date, direction = DateDirection.NEXT) {
|
|
47
|
+
const day = date.toDate().getDay();
|
|
48
|
+
if (day === 0 || day === 6) {
|
|
49
|
+
let nextWorkdayGap = day === 0 ? 1 : 2;
|
|
50
|
+
if (direction === DateDirection.PREVIOUS) {
|
|
51
|
+
nextWorkdayGap = day === 0 ? -2 : -1;
|
|
52
|
+
}
|
|
53
|
+
return CalendarDate.from(new Date(date.year, date.month - 1, date.date + nextWorkdayGap));
|
|
54
|
+
}
|
|
55
|
+
return date;
|
|
56
|
+
}
|
|
@@ -71,13 +71,14 @@ export class VegaCalendarEventRenderer extends VegaSlimmer {
|
|
|
71
71
|
* @returns {HTMLAnchorElement} event element
|
|
72
72
|
*/
|
|
73
73
|
renderNormalEvent() {
|
|
74
|
-
const { variant
|
|
74
|
+
const { variant, disabled } = this.calendarEvent;
|
|
75
|
+
const variantText = variant || 'primary';
|
|
75
76
|
const isMonthEvent = !this.host.classList.contains('day-event');
|
|
76
77
|
const classMap = {
|
|
77
78
|
'slot-container': this.slotMode,
|
|
78
79
|
'event-container': true,
|
|
79
80
|
'disabled': disabled,
|
|
80
|
-
[
|
|
81
|
+
[variantText]: true,
|
|
81
82
|
};
|
|
82
83
|
if (isMonthEvent) {
|
|
83
84
|
return (h("div", { role: "button", tabIndex: 0, class: classMap, ref: (node) => (this.slotContainerRef = node) },
|
|
@@ -78,6 +78,10 @@
|
|
|
78
78
|
flex-grow: 1;
|
|
79
79
|
overflow-y: auto;
|
|
80
80
|
overflow-x: hidden;
|
|
81
|
+
--calendar-weekday-columns: 7;
|
|
82
|
+
}
|
|
83
|
+
.calendar-view.calendar-hide-weekends {
|
|
84
|
+
--calendar-weekday-columns: 5;
|
|
81
85
|
}
|
|
82
86
|
|
|
83
87
|
.calendar-view-month .calendar-view-month-container {
|
|
@@ -130,7 +134,7 @@
|
|
|
130
134
|
position: relative;
|
|
131
135
|
display: grid;
|
|
132
136
|
grid-template-rows: 1fr;
|
|
133
|
-
grid-template-columns: repeat(
|
|
137
|
+
grid-template-columns: repeat(var(--calendar-weekday-columns), minmax(64px, 1fr));
|
|
134
138
|
}
|
|
135
139
|
.calendar-view-month .calendar-view-row.calendar-view-title {
|
|
136
140
|
position: sticky;
|
|
@@ -411,22 +415,22 @@
|
|
|
411
415
|
.calendar-view-week .calendar-view-container .calendar-view-title {
|
|
412
416
|
display: grid;
|
|
413
417
|
grid-template-rows: 1fr;
|
|
414
|
-
grid-template-columns: repeat(
|
|
418
|
+
grid-template-columns: repeat(var(--calendar-weekday-columns), minmax(64px, 1fr));
|
|
415
419
|
}
|
|
416
420
|
.calendar-view-week .calendar-view-container .calendar-view-event-all {
|
|
417
|
-
grid-template-columns: repeat(
|
|
421
|
+
grid-template-columns: repeat(var(--calendar-weekday-columns), minmax(64px, 1fr));
|
|
418
422
|
}
|
|
419
423
|
.calendar-view-week .calendar-view-container .calendar-view-day-container .calendar-view-content {
|
|
420
424
|
display: grid;
|
|
421
|
-
grid-template-columns: repeat(
|
|
425
|
+
grid-template-columns: repeat(var(--calendar-weekday-columns), minmax(64px, 1fr));
|
|
422
426
|
}
|
|
423
427
|
.calendar-view-week .time-marker-container .time-marker {
|
|
424
428
|
display: grid;
|
|
425
|
-
grid-template-columns: repeat(
|
|
429
|
+
grid-template-columns: repeat(var(--calendar-weekday-columns), minmax(64px, 1fr));
|
|
426
430
|
}
|
|
427
431
|
.calendar-view-week .day-event-container {
|
|
428
432
|
display: grid;
|
|
429
|
-
grid-template-columns: repeat(
|
|
433
|
+
grid-template-columns: repeat(var(--calendar-weekday-columns), minmax(64px, 1fr));
|
|
430
434
|
}
|
|
431
435
|
|
|
432
436
|
.calendar-view-day .calendar-view-container {
|
|
@@ -84,6 +84,12 @@ export class VegaCalendar {
|
|
|
84
84
|
* @vegaVersion 2.21.0
|
|
85
85
|
*/
|
|
86
86
|
this.showEventColorBar = true;
|
|
87
|
+
/**
|
|
88
|
+
* Controls the visibility of the weekend columns in the calendar.
|
|
89
|
+
*
|
|
90
|
+
* @vegaVersion 2.28.0
|
|
91
|
+
*/
|
|
92
|
+
this.showWeekends = true;
|
|
87
93
|
}
|
|
88
94
|
/**
|
|
89
95
|
* Tracks changes to the current period state.
|
|
@@ -126,6 +132,12 @@ export class VegaCalendar {
|
|
|
126
132
|
watchShowEventColorBar(newValue) {
|
|
127
133
|
methodPlaceholder(newValue);
|
|
128
134
|
}
|
|
135
|
+
/**
|
|
136
|
+
* Monitors changes in the visibility of the weekend columns in the calendar.
|
|
137
|
+
*/
|
|
138
|
+
watchShowWeekendsChange() {
|
|
139
|
+
methodPlaceholder();
|
|
140
|
+
}
|
|
129
141
|
render() {
|
|
130
142
|
return sanitizeVegaComponent(h(Host, null, this.renderer.render()), this.host);
|
|
131
143
|
}
|
|
@@ -256,6 +268,27 @@ export class VegaCalendar {
|
|
|
256
268
|
"attribute": "show-event-color-bar",
|
|
257
269
|
"reflect": false,
|
|
258
270
|
"defaultValue": "true"
|
|
271
|
+
},
|
|
272
|
+
"showWeekends": {
|
|
273
|
+
"type": "boolean",
|
|
274
|
+
"mutable": false,
|
|
275
|
+
"complexType": {
|
|
276
|
+
"original": "boolean",
|
|
277
|
+
"resolved": "boolean",
|
|
278
|
+
"references": {}
|
|
279
|
+
},
|
|
280
|
+
"required": false,
|
|
281
|
+
"optional": false,
|
|
282
|
+
"docs": {
|
|
283
|
+
"tags": [{
|
|
284
|
+
"name": "vegaVersion",
|
|
285
|
+
"text": "2.28.0"
|
|
286
|
+
}],
|
|
287
|
+
"text": "Controls the visibility of the weekend columns in the calendar."
|
|
288
|
+
},
|
|
289
|
+
"attribute": "show-weekends",
|
|
290
|
+
"reflect": false,
|
|
291
|
+
"defaultValue": "true"
|
|
259
292
|
}
|
|
260
293
|
}; }
|
|
261
294
|
static get states() { return {
|
|
@@ -467,6 +500,9 @@ export class VegaCalendar {
|
|
|
467
500
|
}, {
|
|
468
501
|
"propName": "showEventColorBar",
|
|
469
502
|
"methodName": "watchShowEventColorBar"
|
|
503
|
+
}, {
|
|
504
|
+
"propName": "showWeekends",
|
|
505
|
+
"methodName": "watchShowWeekendsChange"
|
|
470
506
|
}]; }
|
|
471
507
|
}
|
|
472
508
|
__decorate([
|
|
@@ -49,6 +49,14 @@ export class CalendarPeriod {
|
|
|
49
49
|
get type() {
|
|
50
50
|
return this._type;
|
|
51
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* This function returns the showWeekends of the object.
|
|
54
|
+
*
|
|
55
|
+
* @type {boolean}
|
|
56
|
+
*/
|
|
57
|
+
get showWeekends() {
|
|
58
|
+
return this._showWeekends;
|
|
59
|
+
}
|
|
52
60
|
/**
|
|
53
61
|
* Go to a specific date.
|
|
54
62
|
*
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import { CalendarPeriod } from './calendar-period.abstract';
|
|
2
2
|
import { CalendarDate } from '../calendar-date';
|
|
3
|
+
import { DateDirection, getClosestWorkday } from '../../../components/vega-calendar/utils';
|
|
3
4
|
/**
|
|
4
5
|
* Period of day.
|
|
5
6
|
*/
|
|
6
7
|
export class DayPeriod extends CalendarPeriod {
|
|
7
|
-
constructor(current) {
|
|
8
|
+
constructor(current, showWeekends) {
|
|
8
9
|
super(DayPeriod.DISPLAY_DATE_COUNT, current);
|
|
9
10
|
this._type = 'day';
|
|
11
|
+
this._showWeekends = true;
|
|
12
|
+
this._showWeekends = showWeekends === false ? false : true;
|
|
10
13
|
}
|
|
11
14
|
/**
|
|
12
15
|
* @inheritDoc
|
|
@@ -14,7 +17,11 @@ export class DayPeriod extends CalendarPeriod {
|
|
|
14
17
|
next() {
|
|
15
18
|
const nextDate = this.current.toDate();
|
|
16
19
|
nextDate.setDate(nextDate.getDate() + 1);
|
|
17
|
-
|
|
20
|
+
let calendarDate = CalendarDate.from(nextDate);
|
|
21
|
+
if (this._showWeekends === false) {
|
|
22
|
+
calendarDate = getClosestWorkday(calendarDate);
|
|
23
|
+
}
|
|
24
|
+
return this.createBy(calendarDate);
|
|
18
25
|
}
|
|
19
26
|
/**
|
|
20
27
|
* @inheritDoc
|
|
@@ -22,13 +29,29 @@ export class DayPeriod extends CalendarPeriod {
|
|
|
22
29
|
previous() {
|
|
23
30
|
const previousDate = this.current.toDate();
|
|
24
31
|
previousDate.setDate(previousDate.getDate() - 1);
|
|
25
|
-
|
|
32
|
+
let calendarDate = CalendarDate.from(previousDate);
|
|
33
|
+
if (this._showWeekends === false) {
|
|
34
|
+
calendarDate = getClosestWorkday(calendarDate, DateDirection.PREVIOUS);
|
|
35
|
+
}
|
|
36
|
+
return this.createBy(calendarDate);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Go to now.
|
|
40
|
+
*
|
|
41
|
+
* @returns {this} - The current period.
|
|
42
|
+
*/
|
|
43
|
+
now() {
|
|
44
|
+
let calendarDate = CalendarDate.from(new Date());
|
|
45
|
+
if (this._showWeekends === false) {
|
|
46
|
+
calendarDate = getClosestWorkday(calendarDate);
|
|
47
|
+
}
|
|
48
|
+
return this.createBy(calendarDate);
|
|
26
49
|
}
|
|
27
50
|
/**
|
|
28
51
|
* @inheritDoc
|
|
29
52
|
*/
|
|
30
53
|
createBy(current) {
|
|
31
|
-
return new DayPeriod(current);
|
|
54
|
+
return new DayPeriod(current, this._showWeekends);
|
|
32
55
|
}
|
|
33
56
|
}
|
|
34
57
|
DayPeriod.DISPLAY_DATE_COUNT = 1;
|
|
@@ -4,9 +4,11 @@ import { CalendarDate } from '../calendar-date';
|
|
|
4
4
|
* Period of month
|
|
5
5
|
*/
|
|
6
6
|
export class MonthPeriod extends CalendarPeriod {
|
|
7
|
-
constructor(current) {
|
|
7
|
+
constructor(current, showWeekends) {
|
|
8
8
|
super(MonthPeriod.DISPLAY_DATE_COUNT, MonthPeriod.getMonthFirstDay(current));
|
|
9
9
|
this._type = 'month';
|
|
10
|
+
this._showWeekends = true;
|
|
11
|
+
this._showWeekends = showWeekends === false ? false : true;
|
|
10
12
|
}
|
|
11
13
|
/**
|
|
12
14
|
* The function `getMonthFirstDay` returns the first day of a given month in a calendar.
|
|
@@ -42,7 +44,7 @@ export class MonthPeriod extends CalendarPeriod {
|
|
|
42
44
|
* @inheritDoc
|
|
43
45
|
*/
|
|
44
46
|
createBy(current) {
|
|
45
|
-
return new MonthPeriod(current);
|
|
47
|
+
return new MonthPeriod(current, this._showWeekends);
|
|
46
48
|
}
|
|
47
49
|
}
|
|
48
50
|
MonthPeriod.DISPLAY_DATE_COUNT = 6 * 7;
|
|
@@ -5,9 +5,11 @@ import { CalendarDate } from '../calendar-date';
|
|
|
5
5
|
* Period of the week
|
|
6
6
|
*/
|
|
7
7
|
export class WeekPeriod extends CalendarPeriod {
|
|
8
|
-
constructor(current) {
|
|
8
|
+
constructor(current, showWeekends) {
|
|
9
9
|
super(WeekPeriod.DISPLAY_DATE_COUNT, current);
|
|
10
10
|
this._type = 'week';
|
|
11
|
+
this._showWeekends = true;
|
|
12
|
+
this._showWeekends = showWeekends === false ? false : true;
|
|
11
13
|
}
|
|
12
14
|
/**
|
|
13
15
|
* @inheritDoc
|
|
@@ -29,7 +31,7 @@ export class WeekPeriod extends CalendarPeriod {
|
|
|
29
31
|
* @inheritDoc
|
|
30
32
|
*/
|
|
31
33
|
createBy(current) {
|
|
32
|
-
return new WeekPeriod(current);
|
|
34
|
+
return new WeekPeriod(current, this._showWeekends);
|
|
33
35
|
}
|
|
34
36
|
}
|
|
35
37
|
WeekPeriod.DISPLAY_DATE_COUNT = 7;
|
|
@@ -9,7 +9,8 @@ export class MonthViewGenerator extends CalendarViewGenerator {
|
|
|
9
9
|
* @inheritDoc
|
|
10
10
|
*/
|
|
11
11
|
generate(period) {
|
|
12
|
-
const
|
|
12
|
+
const showWeekends = period.showWeekends;
|
|
13
|
+
let calendarDates = [];
|
|
13
14
|
let week = [];
|
|
14
15
|
const dates = this.generateDates(period);
|
|
15
16
|
dates.forEach((date, i) => {
|
|
@@ -19,6 +20,11 @@ export class MonthViewGenerator extends CalendarViewGenerator {
|
|
|
19
20
|
const item = CalendarDate.from(date);
|
|
20
21
|
week.push(item);
|
|
21
22
|
});
|
|
22
|
-
|
|
23
|
+
let weekDays = this.generateWeekHead();
|
|
24
|
+
if (showWeekends === false) {
|
|
25
|
+
weekDays = weekDays.slice(1, 6);
|
|
26
|
+
calendarDates = calendarDates.map((items) => items.slice(1, 6));
|
|
27
|
+
}
|
|
28
|
+
return new CalendarView(weekDays, calendarDates);
|
|
23
29
|
}
|
|
24
30
|
}
|