@globalpayments/vega 2.27.0 → 2.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. package/dist/cjs/{app-globals-190595cc.js → app-globals-512d84f4.js} +1 -1
  2. package/dist/cjs/{form-field-controller-slimmer-ee984eb2.js → form-field-controller-slimmer-223f8ee3.js} +1 -1
  3. package/dist/cjs/index.cjs.js +1 -1
  4. package/dist/cjs/loader.cjs.js +3 -3
  5. package/dist/cjs/{sub-state-observer-slimmer-832a4215.js → sub-state-observer-slimmer-36660092.js} +2 -2
  6. package/dist/cjs/{translation-slimmer-8ebf126d.js → translation-slimmer-83577cfd.js} +1 -1
  7. package/dist/cjs/vega-app-header-button.cjs.entry.js +1 -1
  8. package/dist/cjs/vega-button-circle.cjs.entry.js +1 -1
  9. package/dist/cjs/vega-button-group_2.cjs.entry.js +3 -3
  10. package/dist/cjs/vega-button.cjs.entry.js +1 -1
  11. package/dist/cjs/vega-calendar_3.cjs.entry.js +937 -838
  12. package/dist/cjs/vega-checkbox_2.cjs.entry.js +2 -2
  13. package/dist/cjs/vega-chip.cjs.entry.js +1 -1
  14. package/dist/cjs/vega-color-picker.cjs.entry.js +2 -2
  15. package/dist/cjs/vega-combo-box.cjs.entry.js +2 -2
  16. package/dist/cjs/vega-date-picker_2.cjs.entry.js +3 -3
  17. package/dist/cjs/vega-dropdown_5.cjs.entry.js +3 -3
  18. package/dist/cjs/vega-env-manager-23b8b23c.js +2 -2
  19. package/dist/cjs/vega-file-uploader.cjs.entry.js +3 -3
  20. package/dist/cjs/vega-form.cjs.entry.js +2 -2
  21. package/dist/cjs/vega-image-uploader.cjs.entry.js +3 -3
  22. package/dist/cjs/vega-input-credit-card.cjs.entry.js +2 -2
  23. package/dist/cjs/vega-input-phone-number.cjs.entry.js +2 -2
  24. package/dist/cjs/vega-input-range.cjs.entry.js +3 -3
  25. package/dist/cjs/vega-input-select.cjs.entry.js +3 -3
  26. package/dist/cjs/vega-input.cjs.entry.js +46 -13
  27. package/dist/cjs/vega-pagination.cjs.entry.js +2 -2
  28. package/dist/cjs/vega-radio_2.cjs.entry.js +2 -2
  29. package/dist/cjs/vega-selection-chip_2.cjs.entry.js +3 -3
  30. package/dist/cjs/vega-selection-tile_2.cjs.entry.js +3 -3
  31. package/dist/cjs/vega-signature-capture.cjs.entry.js +3 -3
  32. package/dist/cjs/vega-stepper.cjs.entry.js +2 -2
  33. package/dist/cjs/vega-table_8.cjs.entry.js +3 -3
  34. package/dist/cjs/vega-textarea.cjs.entry.js +2 -2
  35. package/dist/cjs/vega-time-picker_2.cjs.entry.js +3 -3
  36. package/dist/cjs/vega-toggle-switch.cjs.entry.js +2 -2
  37. package/dist/cjs/vega.cjs.js +3 -3
  38. package/dist/collection/components/vega-app-header-button/vega-app-header-button.css +7 -1
  39. package/dist/collection/components/vega-button/vega-button.css +1 -0
  40. package/dist/collection/components/vega-button-circle/vega-button-circle.css +4 -0
  41. package/dist/collection/components/vega-button-group/vega-button-group-item/vega-button-group-item.css +10 -0
  42. package/dist/collection/components/vega-button-group/vega-button-group.css +13 -0
  43. package/dist/collection/components/vega-calendar/slimmers/common/controllers/vega-calendar-current-period-controller.js +17 -3
  44. package/dist/collection/components/vega-calendar/slimmers/common/controllers/vega-calendar-event-responsive-controller.js +1 -1
  45. package/dist/collection/components/vega-calendar/slimmers/common/controllers/vega-calendar-view-controller.js +3 -0
  46. package/dist/collection/components/vega-calendar/slimmers/common/layout/full-day-event-layout-generator.js +1 -1
  47. package/dist/collection/components/vega-calendar/slimmers/common/renderers/vega-calendar-switch-panel.js +4 -3
  48. package/dist/collection/components/vega-calendar/slimmers/common/renderers/vega-calendar-view-renderer.js +4 -1
  49. package/dist/collection/components/vega-calendar/slimmers/day-view/renderers/timed-event/vega-calendar-day-event-layout-renderer.js +1 -1
  50. package/dist/collection/components/vega-calendar/slimmers/day-view/renderers/vega-calendar-time-line-renderer.js +1 -1
  51. package/dist/collection/components/vega-calendar/slimmers/day-view/renderers/vega-calendar-view-with-time-renderer.js +0 -3
  52. package/dist/collection/components/vega-calendar/slimmers/month-view/renderers/vega-calendar-month-event-renderer.js +3 -1
  53. package/dist/collection/components/vega-calendar/slimmers/month-view/renderers/vega-calendar-month-view-renderer.js +0 -3
  54. package/dist/collection/components/vega-calendar/utils/index.js +24 -0
  55. package/dist/collection/components/vega-calendar/vega-calendar-event/slimmers/renderers/vega-calendar-event-renderer.js +3 -2
  56. package/dist/collection/components/vega-calendar/vega-calendar.css +10 -6
  57. package/dist/collection/components/vega-calendar/vega-calendar.js +36 -0
  58. package/dist/collection/components/vega-chip/vega-chip.css +4 -0
  59. package/dist/collection/helpers/calendar/calendar-period/calendar-period.abstract.js +8 -0
  60. package/dist/collection/helpers/calendar/calendar-period/day-period.js +27 -4
  61. package/dist/collection/helpers/calendar/calendar-period/month-period.js +4 -2
  62. package/dist/collection/helpers/calendar/calendar-period/week-period.js +4 -2
  63. package/dist/collection/helpers/calendar/calendar-view-generator/month-view-generator.js +8 -2
  64. package/dist/collection/helpers/calendar/calendar-view-generator/week-view-generator.js +8 -1
  65. package/dist/collection/helpers/calendar/test/calendar-period/day-period.test.js +16 -0
  66. package/dist/collection/helpers/calendar/test/calendar-view-generator/month-view-generator.test.js +50 -0
  67. package/dist/collection/helpers/calendar/test/calendar-view-generator/week-view-generator.test.js +15 -0
  68. package/dist/collection/helpers/formatter/string-formatter/number-mask-strategy.js +36 -4
  69. package/dist/collection/helpers/formatter/string-formatter/number-thousand-comma-strategy.js +9 -7
  70. package/dist/collection/helpers/formatter/test/string-formatter/number-mask-strategy.test.js +11 -2
  71. package/dist/collection/helpers/formatter/test/string-formatter/number-thousand-comma-mask-strategy.test.js +2 -0
  72. package/dist/collection/helpers/slimmers/sub-state/sub-state-observer-slimmer.js +2 -2
  73. package/dist/collection/helpers/slimmers/test/string-input-formatter-slimmer.test.js +20 -0
  74. package/dist/esm/{app-globals-d0b86358.js → app-globals-41797af8.js} +1 -1
  75. package/dist/esm/{form-field-controller-slimmer-2f9c871b.js → form-field-controller-slimmer-edbaaf7c.js} +1 -1
  76. package/dist/esm/index.js +1 -1
  77. package/dist/esm/loader.js +3 -3
  78. package/dist/esm/{sub-state-observer-slimmer-af28076b.js → sub-state-observer-slimmer-8eff5559.js} +2 -2
  79. package/dist/esm/{translation-slimmer-c740a5f3.js → translation-slimmer-79f9a9c9.js} +1 -1
  80. package/dist/esm/vega-app-header-button.entry.js +1 -1
  81. package/dist/esm/vega-button-circle.entry.js +1 -1
  82. package/dist/esm/vega-button-group_2.entry.js +3 -3
  83. package/dist/esm/vega-button.entry.js +1 -1
  84. package/dist/esm/vega-calendar_3.entry.js +937 -838
  85. package/dist/esm/vega-checkbox_2.entry.js +2 -2
  86. package/dist/esm/vega-chip.entry.js +1 -1
  87. package/dist/esm/vega-color-picker.entry.js +2 -2
  88. package/dist/esm/vega-combo-box.entry.js +2 -2
  89. package/dist/esm/vega-date-picker_2.entry.js +3 -3
  90. package/dist/esm/vega-dropdown_5.entry.js +3 -3
  91. package/dist/esm/vega-env-manager-8f8dc473.js +2 -2
  92. package/dist/esm/vega-file-uploader.entry.js +3 -3
  93. package/dist/esm/vega-form.entry.js +2 -2
  94. package/dist/esm/vega-image-uploader.entry.js +3 -3
  95. package/dist/esm/vega-input-credit-card.entry.js +2 -2
  96. package/dist/esm/vega-input-phone-number.entry.js +2 -2
  97. package/dist/esm/vega-input-range.entry.js +3 -3
  98. package/dist/esm/vega-input-select.entry.js +3 -3
  99. package/dist/esm/vega-input.entry.js +46 -13
  100. package/dist/esm/vega-pagination.entry.js +2 -2
  101. package/dist/esm/vega-radio_2.entry.js +2 -2
  102. package/dist/esm/vega-selection-chip_2.entry.js +3 -3
  103. package/dist/esm/vega-selection-tile_2.entry.js +3 -3
  104. package/dist/esm/vega-signature-capture.entry.js +3 -3
  105. package/dist/esm/vega-stepper.entry.js +2 -2
  106. package/dist/esm/vega-table_8.entry.js +3 -3
  107. package/dist/esm/vega-textarea.entry.js +2 -2
  108. package/dist/esm/vega-time-picker_2.entry.js +3 -3
  109. package/dist/esm/vega-toggle-switch.entry.js +2 -2
  110. package/dist/esm/vega.js +3 -3
  111. package/dist/types/components/vega-calendar/slimmers/common/controllers/vega-calendar-current-period-controller.d.ts +5 -0
  112. package/dist/types/components/vega-calendar/slimmers/common/controllers/vega-calendar-view-controller.d.ts +1 -0
  113. package/dist/types/components/vega-calendar/slimmers/common/renderers/vega-calendar-switch-panel.d.ts +1 -1
  114. package/dist/types/components/vega-calendar/slimmers/common/renderers/vega-calendar-view-renderer.d.ts +1 -0
  115. package/dist/types/components/vega-calendar/slimmers/day-view/renderers/vega-calendar-view-with-time-renderer.d.ts +0 -1
  116. package/dist/types/components/vega-calendar/slimmers/month-view/renderers/vega-calendar-month-view-renderer.d.ts +0 -1
  117. package/dist/types/components/vega-calendar/utils/index.d.ts +13 -0
  118. package/dist/types/components/vega-calendar/vega-calendar.d.ts +10 -0
  119. package/dist/types/components.d.ts +10 -0
  120. package/dist/types/helpers/calendar/calendar-period/calendar-period.abstract.d.ts +7 -0
  121. package/dist/types/helpers/calendar/calendar-period/day-period.d.ts +8 -1
  122. package/dist/types/helpers/calendar/calendar-period/month-period.d.ts +2 -1
  123. package/dist/types/helpers/calendar/calendar-period/week-period.d.ts +2 -1
  124. package/dist/types/helpers/formatter/string-formatter/number-mask-strategy.d.ts +20 -0
  125. package/dist/types/helpers/slimmers/sub-state/sub-state-observer-slimmer.d.ts +1 -1
  126. package/dist/vega/index.esm.js +1 -1
  127. package/dist/vega/{p-f57454a6.js → p-0120ce7a.js} +1 -1
  128. package/dist/vega/{p-1dc80394.entry.js → p-0395e791.entry.js} +1 -1
  129. package/dist/vega/{p-8a1d8b99.entry.js → p-048a97d1.entry.js} +1 -1
  130. package/dist/vega/{p-963e8c45.entry.js → p-0dd750b0.entry.js} +1 -1
  131. package/dist/vega/{p-c31002d0.entry.js → p-1b901368.entry.js} +1 -1
  132. package/dist/vega/p-1f38eef6.entry.js +1 -0
  133. package/dist/vega/{p-8912d5c9.entry.js → p-1fc5373a.entry.js} +1 -1
  134. package/dist/vega/{p-7f8db003.entry.js → p-22a85055.entry.js} +1 -1
  135. package/dist/vega/{p-351a0ea1.entry.js → p-34545d2d.entry.js} +1 -1
  136. package/dist/vega/{p-f37e6adf.entry.js → p-40f6add9.entry.js} +1 -1
  137. package/dist/vega/p-41784db1.js +1 -0
  138. package/dist/vega/{p-c9e3413b.entry.js → p-4bc042ec.entry.js} +1 -1
  139. package/dist/vega/{p-a7666db3.entry.js → p-5d231a82.entry.js} +1 -1
  140. package/dist/vega/p-5f377954.js +1 -1
  141. package/dist/vega/{p-ded47af0.entry.js → p-657df167.entry.js} +1 -1
  142. package/dist/vega/{p-28f6ead3.entry.js → p-6d015656.entry.js} +1 -1
  143. package/dist/vega/{p-8c2852c4.entry.js → p-6e3cc7f0.entry.js} +1 -1
  144. package/dist/vega/{p-09352107.entry.js → p-8c72aa56.entry.js} +1 -1
  145. package/dist/vega/{p-ba3db23b.entry.js → p-8f60c3ee.entry.js} +1 -1
  146. package/dist/vega/{p-bffaa859.entry.js → p-9a4ffc2c.entry.js} +1 -1
  147. package/dist/vega/p-9e6934fb.js +1 -0
  148. package/dist/vega/p-a19ae233.entry.js +1 -0
  149. package/dist/vega/{p-e7e19350.entry.js → p-a454acc4.entry.js} +1 -1
  150. package/dist/vega/{p-27b73500.entry.js → p-a8b1f19c.entry.js} +1 -1
  151. package/dist/vega/{p-14c0b4ea.js → p-bccacf42.js} +1 -1
  152. package/dist/vega/{p-8eadc60b.entry.js → p-d0a83562.entry.js} +1 -1
  153. package/dist/vega/{p-288b47f0.entry.js → p-d4fb2264.entry.js} +1 -1
  154. package/dist/vega/{p-fa78f87f.entry.js → p-d550fc66.entry.js} +1 -1
  155. package/dist/vega/p-d686dd96.entry.js +1 -0
  156. package/dist/vega/p-e0410974.entry.js +1 -0
  157. package/dist/vega/{p-0afaa0f3.entry.js → p-ead9a2b9.entry.js} +1 -1
  158. package/dist/vega/{p-54f5c773.entry.js → p-f0ad06bd.entry.js} +1 -1
  159. package/dist/vega/{p-8aaa9233.entry.js → p-f2019f70.entry.js} +1 -1
  160. package/dist/vega/{p-af71fe84.entry.js → p-fc746bae.entry.js} +1 -1
  161. package/dist/vega/vega.esm.js +1 -1
  162. package/package.json +1 -1
  163. package/dist/vega/p-15452727.js +0 -1
  164. package/dist/vega/p-38e3d50e.entry.js +0 -1
  165. package/dist/vega/p-8a646846.entry.js +0 -1
  166. package/dist/vega/p-bf557666.entry.js +0 -1
  167. package/dist/vega/p-d7bd2be5.entry.js +0 -1
  168. package/dist/vega/p-dee487f9.js +0 -1
  169. /package/dist/cjs/{translation-77e9ccce.js → translation-0dd74433.js} +0 -0
  170. /package/dist/esm/{translation-3b437b6d.js → translation-0fa7cf77.js} +0 -0
  171. /package/dist/vega/{p-05ebf5a3.js → p-be784f53.js} +0 -0
@@ -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.setCurrentPeriod(new DayPeriod(date));
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);
@@ -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 = [new VegaCalendarFullDayEventLayoutRow()];
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 ite click
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 start = this.currentPeriod.startDate;
141
- const end = this.currentPeriod.endDate;
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}` : null,
63
+ zIndex: columnIndex > 0 ? `${columnIndex}` : undefined,
64
64
  };
65
65
  }
66
66
  }
@@ -95,7 +95,7 @@ export class VegaCalendarTimeLineRenderer extends VegaSlimmer {
95
95
  }
96
96
  else {
97
97
  for (let i = 0; i < 24; i++) {
98
- timeLine.push(pad(i));
98
+ timeLine.push(`${pad(i)}`);
99
99
  }
100
100
  }
101
101
  return timeLine;
@@ -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 && removeItems.includes(items[items.length - 1])) {
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 = 'primary', disabled } = this.calendarEvent;
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
- [variant]: true,
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(7, minmax(64px, 1fr));
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(7, minmax(64px, 1fr));
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(7, minmax(64px, 1fr));
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(7, minmax(64px, 1fr));
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(7, minmax(64px, 1fr));
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(7, minmax(64px, 1fr));
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([
@@ -2031,6 +2031,10 @@
2031
2031
  display: inline-block;
2032
2032
  max-width: 100%;
2033
2033
  position: relative;
2034
+ border-radius: 9999px;
2035
+ }
2036
+ :host vega-flex {
2037
+ border-radius: 9999px;
2034
2038
  }
2035
2039
 
2036
2040
  :host button {
@@ -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
- return this.createBy(CalendarDate.from(nextDate));
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
- return this.createBy(CalendarDate.from(previousDate));
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 calendarDates = [];
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
- return new CalendarView(this.generateWeekHead(), calendarDates);
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
  }
@@ -10,6 +10,13 @@ export class WeekViewGenerator extends CalendarViewGenerator {
10
10
  */
11
11
  generate(period) {
12
12
  const dates = this.generateDates(period);
13
- return new CalendarView(this.generateWeekHead(), [dates.map(CalendarDate.from)]);
13
+ const showWeekends = period.showWeekends;
14
+ let weekDays = this.generateWeekHead();
15
+ let dateItems = [dates.map(CalendarDate.from)];
16
+ if (showWeekends === false) {
17
+ weekDays = weekDays.slice(1, 6);
18
+ dateItems = dateItems.map((items) => items.slice(1, 6));
19
+ }
20
+ return new CalendarView(weekDays, dateItems);
14
21
  }
15
22
  }
@@ -62,4 +62,20 @@ describe('day-period', () => {
62
62
  endDate: previousDate,
63
63
  });
64
64
  });
65
+ it('should go to closet workday when call the now method and the showWeekend set to false', () => {
66
+ // Sun
67
+ jest.setSystemTime(new Date(2024, 10, 10));
68
+ const dayPeriod = new DayPeriod(undefined, false);
69
+ const { current } = dayPeriod.now();
70
+ expect(current.date).toEqual(11);
71
+ });
72
+ it('should get closet workday when call the method and the showWeekend set to false', () => {
73
+ //Sat
74
+ const calendarDate = new CalendarDate(2024, 11, 9);
75
+ let dayPeriod = new DayPeriod(calendarDate, false);
76
+ dayPeriod = dayPeriod.next();
77
+ expect(dayPeriod.current.date).toEqual(11);
78
+ dayPeriod = dayPeriod.previous();
79
+ expect(dayPeriod.current.date).toEqual(8);
80
+ });
65
81
  });
@@ -70,4 +70,54 @@ describe('month-view-generator', () => {
70
70
  _weekdays: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
71
71
  });
72
72
  });
73
+ it('should generate a month view calendar without weekends', () => {
74
+ const generator = new MonthViewGenerator();
75
+ expect(generator.generate(new MonthPeriod(undefined, false))).toEqual({
76
+ _dateItems: [
77
+ [
78
+ { _date: 28, _month: 3, _year: 2022 },
79
+ { _date: 29, _month: 3, _year: 2022 },
80
+ { _date: 30, _month: 3, _year: 2022 },
81
+ { _date: 31, _month: 3, _year: 2022 },
82
+ { _date: 1, _month: 4, _year: 2022 },
83
+ ],
84
+ [
85
+ { _date: 4, _month: 4, _year: 2022 },
86
+ { _date: 5, _month: 4, _year: 2022 },
87
+ { _date: 6, _month: 4, _year: 2022 },
88
+ { _date: 7, _month: 4, _year: 2022 },
89
+ { _date: 8, _month: 4, _year: 2022 },
90
+ ],
91
+ [
92
+ { _date: 11, _month: 4, _year: 2022 },
93
+ { _date: 12, _month: 4, _year: 2022 },
94
+ { _date: 13, _month: 4, _year: 2022 },
95
+ { _date: 14, _month: 4, _year: 2022 },
96
+ { _date: 15, _month: 4, _year: 2022 },
97
+ ],
98
+ [
99
+ { _date: 18, _month: 4, _year: 2022 },
100
+ { _date: 19, _month: 4, _year: 2022 },
101
+ { _date: 20, _month: 4, _year: 2022 },
102
+ { _date: 21, _month: 4, _year: 2022 },
103
+ { _date: 22, _month: 4, _year: 2022 },
104
+ ],
105
+ [
106
+ { _date: 25, _month: 4, _year: 2022 },
107
+ { _date: 26, _month: 4, _year: 2022 },
108
+ { _date: 27, _month: 4, _year: 2022 },
109
+ { _date: 28, _month: 4, _year: 2022 },
110
+ { _date: 29, _month: 4, _year: 2022 },
111
+ ],
112
+ [
113
+ { _date: 2, _month: 5, _year: 2022 },
114
+ { _date: 3, _month: 5, _year: 2022 },
115
+ { _date: 4, _month: 5, _year: 2022 },
116
+ { _date: 5, _month: 5, _year: 2022 },
117
+ { _date: 6, _month: 5, _year: 2022 },
118
+ ],
119
+ ],
120
+ _weekdays: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri'],
121
+ });
122
+ });
73
123
  });
@@ -25,4 +25,19 @@ describe('week-view-generator', () => {
25
25
  _weekdays: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
26
26
  });
27
27
  });
28
+ it('should generate a week view calendar without weekends', () => {
29
+ const generator = new WeekViewGenerator();
30
+ expect(generator.generate(new WeekPeriod(undefined, false))).toEqual({
31
+ _dateItems: [
32
+ [
33
+ { _date: 4, _month: 4, _year: 2022 },
34
+ { _date: 5, _month: 4, _year: 2022 },
35
+ { _date: 6, _month: 4, _year: 2022 },
36
+ { _date: 7, _month: 4, _year: 2022 },
37
+ { _date: 8, _month: 4, _year: 2022 },
38
+ ],
39
+ ],
40
+ _weekdays: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri'],
41
+ });
42
+ });
28
43
  });