@progressio_resources/gravity-design-system 3.0.49 → 3.0.52

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 (29) hide show
  1. package/esm2022/lib/components/gravity-calendar-next/components/day-calendar/day-calendar.component.mjs +216 -0
  2. package/esm2022/lib/components/gravity-calendar-next/components/month-calendary/month-calendar.component.mjs +88 -0
  3. package/esm2022/lib/components/gravity-calendar-next/components/year-calendar/year-calendar.component.mjs +96 -0
  4. package/esm2022/lib/components/gravity-calendar-next/gravity-calendar-next.component.mjs +13 -9
  5. package/esm2022/lib/components/gravity-calendar-next/shared/calendar.constants.mjs +7 -1
  6. package/esm2022/lib/components/gravity-calendar-next/shared/calendar.modal.mjs +1 -1
  7. package/esm2022/lib/components/gravity-calendar-next/shared/calendar.utils.mjs +21 -6
  8. package/esm2022/lib/components/gravity-currency/gravity-currency.component.mjs +3 -3
  9. package/esm2022/lib/components/gravity-currency-display/gravity-currency-display.component.mjs +10 -3
  10. package/esm2022/lib/components/gravity-data-view/gravity-data-view.component.mjs +16 -5
  11. package/esm2022/lib/components/gravity-status-indicator/gravity-status-indicator.component.mjs +3 -3
  12. package/esm2022/lib/components/gravity-tab-primary/gravity-tab-primary.component.mjs +2 -2
  13. package/esm2022/lib/gravity-design-system.module.mjs +10 -4
  14. package/fesm2022/progressio_resources-gravity-design-system.mjs +248 -35
  15. package/fesm2022/progressio_resources-gravity-design-system.mjs.map +1 -1
  16. package/lib/components/gravity-calendar-next/components/{days-calendar/days-calendar.component.d.ts → day-calendar/day-calendar.component.d.ts} +4 -4
  17. package/lib/components/gravity-calendar-next/components/month-calendary/month-calendar.component.d.ts +34 -0
  18. package/lib/components/gravity-calendar-next/components/year-calendar/year-calendar.component.d.ts +34 -0
  19. package/lib/components/gravity-calendar-next/gravity-calendar-next.component.d.ts +4 -3
  20. package/lib/components/gravity-calendar-next/shared/calendar.constants.d.ts +2 -0
  21. package/lib/components/gravity-calendar-next/shared/calendar.modal.d.ts +4 -0
  22. package/lib/components/gravity-calendar-next/shared/calendar.utils.d.ts +7 -2
  23. package/lib/components/gravity-currency/gravity-currency.component.d.ts +1 -1
  24. package/lib/components/gravity-currency-display/gravity-currency-display.component.d.ts +4 -2
  25. package/lib/components/gravity-data-view/gravity-data-view.component.d.ts +4 -0
  26. package/lib/components/gravity-status-indicator/gravity-status-indicator.component.d.ts +1 -1
  27. package/lib/gravity-design-system.module.d.ts +12 -10
  28. package/package.json +1 -1
  29. package/esm2022/lib/components/gravity-calendar-next/components/days-calendar/days-calendar.component.mjs +0 -216
@@ -0,0 +1,216 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { CALENDAR_I18N, DAYS_EN, DAYS_ES, MONTHS_EN, MONTHS_ES } from "../../shared/calendar.constants";
3
+ import { toDate, changeMonth, toCalendarDay, trackByWeek, trackByDay, getStartDate } from '../../shared/calendar.utils';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common";
6
+ import * as i2 from "../../../gravity-button/gravity-button.component";
7
+ import * as i3 from "../../../gravity-icon/gravity-icon.component";
8
+ import * as i4 from "../../../gravity-link/gravity-link.component";
9
+ import * as i5 from "../../../gravity-dropdown-label/gravity-dropdown-label.component";
10
+ export class DayCalendarComponent {
11
+ constructor() {
12
+ this.range = false;
13
+ this.restart = false;
14
+ this.disabled = false;
15
+ this.language = 'en';
16
+ this.actionsSection = true;
17
+ this.navType = 'both';
18
+ this.clearSelection = new EventEmitter();
19
+ this.calendarResponse = new EventEmitter();
20
+ this.trackByDay = trackByDay;
21
+ this.trackByWeek = trackByWeek;
22
+ this.changeMonth = changeMonth;
23
+ this.currentDate = new Date();
24
+ this.hoveredDay = null;
25
+ this.selectedDay = null;
26
+ this.selectedRangeEnd = null;
27
+ this.selectedRangeStart = null;
28
+ }
29
+ get i18n() { return CALENDAR_I18N[this.language]; }
30
+ get daysList() { return this.language === 'en' ? DAYS_EN : DAYS_ES; }
31
+ get monthsList() { return this.language === 'en' ? MONTHS_EN : MONTHS_ES; }
32
+ ngOnChanges(changes) {
33
+ const shouldRestart = changes['restart'] && this.restart;
34
+ const shouldProcessPreSelected = changes['preSelectedDate'] && this.preSelectedDate;
35
+ if (shouldRestart || shouldProcessPreSelected) {
36
+ this.processPreselectedDate();
37
+ }
38
+ }
39
+ processPreselectedDate() {
40
+ if (this.range && Array.isArray(this.preSelectedDate)) {
41
+ const [start, end] = this.preSelectedDate;
42
+ if (start instanceof Date) {
43
+ this.selectedRangeStart = toCalendarDay(start);
44
+ this.currentDate = getStartDate(start);
45
+ }
46
+ if (end instanceof Date) {
47
+ this.selectedRangeEnd = toCalendarDay(end);
48
+ }
49
+ }
50
+ else if (this.preSelectedDate instanceof Date) {
51
+ this.selectedDay = toCalendarDay(this.preSelectedDate);
52
+ this.currentDate = getStartDate(this.preSelectedDate);
53
+ }
54
+ }
55
+ isDateSelected() {
56
+ if (!this.range) {
57
+ return !!this.selectedDay;
58
+ }
59
+ else {
60
+ return !!this.selectedRangeStart && !!this.selectedRangeEnd;
61
+ }
62
+ }
63
+ isPreview(day) {
64
+ if (!this.selectedRangeStart || this.selectedRangeEnd || !this.hoveredDay) {
65
+ return false;
66
+ }
67
+ const current = toDate(day);
68
+ const hover = toDate(this.hoveredDay);
69
+ const start = toDate(this.selectedRangeStart);
70
+ if (hover <= start) {
71
+ return false;
72
+ }
73
+ return current > start && current <= hover;
74
+ }
75
+ getDaySelectionClass(day) {
76
+ if (!day.inCurrentMonth)
77
+ return 'disabled';
78
+ return this.range ? this.getRangeSelectionClass(day) : this.getSingleDaySelectionClass(day);
79
+ }
80
+ getSingleDaySelectionClass(day) {
81
+ if (this.selectedDay && day.day === this.selectedDay.day &&
82
+ day.month === this.selectedDay.month && day.year === this.selectedDay.year) {
83
+ return 'sl single';
84
+ }
85
+ return '';
86
+ }
87
+ getRangeSelectionClass(day) {
88
+ if (!this.selectedRangeStart)
89
+ return 'nsl-start';
90
+ const current = toDate(day);
91
+ const start = toDate(this.selectedRangeStart);
92
+ if (!this.selectedRangeEnd) {
93
+ if (current.getTime() === start.getTime())
94
+ return 'sl start';
95
+ if (this.hoveredDay) {
96
+ const hover = toDate(this.hoveredDay);
97
+ if (current.getTime() === hover.getTime() && hover < start)
98
+ return 'nsl-start';
99
+ }
100
+ return 'nsl-end';
101
+ }
102
+ const end = toDate(this.selectedRangeEnd);
103
+ if (current.getTime() === start.getTime())
104
+ return 'sl start';
105
+ if (current.getTime() === end.getTime())
106
+ return 'sl end';
107
+ if (current > start && current < end)
108
+ return 'sl range';
109
+ return 'nsl-start';
110
+ }
111
+ applySelectedDate() {
112
+ if (!this.range && this.selectedDay) {
113
+ const date = toDate(this.selectedDay);
114
+ this.calendarResponse.emit(date);
115
+ }
116
+ else if (this.range && this.selectedRangeStart && this.selectedRangeEnd) {
117
+ const start = toDate(this.selectedRangeStart);
118
+ const end = toDate(this.selectedRangeEnd);
119
+ this.calendarResponse.emit([start, end]);
120
+ }
121
+ }
122
+ clearSelectedDate() {
123
+ this.selectedDay = null;
124
+ this.selectedRangeEnd = null;
125
+ this.selectedRangeStart = null;
126
+ this.clearSelection.emit();
127
+ }
128
+ onHoverDay(day) {
129
+ if (this.selectedRangeEnd) {
130
+ return;
131
+ }
132
+ this.hoveredDay = day;
133
+ }
134
+ clearHover() { this.hoveredDay = null; }
135
+ onSelectDay(day) {
136
+ if (!day.inCurrentMonth)
137
+ return;
138
+ if (!this.range) {
139
+ this.selectedDay = day;
140
+ const currentDate = toDate(day);
141
+ this.calendarResponse.emit(currentDate);
142
+ return;
143
+ }
144
+ if (!this.selectedRangeStart || this.selectedRangeEnd) {
145
+ this.selectedRangeStart = day;
146
+ this.selectedRangeEnd = null;
147
+ }
148
+ else {
149
+ const selectedDate = toDate(day);
150
+ const startDate = toDate(this.selectedRangeStart);
151
+ selectedDate >= startDate ? this.selectedRangeEnd = day : this.selectedRangeStart = day;
152
+ }
153
+ }
154
+ getMonthGrid() {
155
+ let week = [];
156
+ const today = new Date();
157
+ const grid = [];
158
+ const baseDate = this.currentDate;
159
+ const month = baseDate.getMonth();
160
+ const year = baseDate.getFullYear();
161
+ const firstDay = new Date(year, month, 1);
162
+ const startWeekday = (firstDay.getDay() + 6) % 7;
163
+ const daysInMonth = new Date(year, month + 1, 0).getDate();
164
+ const daysInPrevMonth = new Date(year, month, 0).getDate();
165
+ // fill days from previous month
166
+ for (let i = startWeekday - 1; i >= 0; i--) {
167
+ const day = daysInPrevMonth - i;
168
+ week.push({ day, month: month - 1, year, isToday: false, inCurrentMonth: false });
169
+ }
170
+ // fill days from current month
171
+ for (let d = 1; d <= daysInMonth; d++) {
172
+ const isToday = d === today.getDate() && month === today.getMonth() && year === today.getFullYear();
173
+ week.push({ day: d, month, year, isToday, inCurrentMonth: true });
174
+ if (week.length === 7) {
175
+ grid.push(week);
176
+ week = [];
177
+ }
178
+ }
179
+ // fill remaining days from next month
180
+ let nextDay = 1;
181
+ while (week.length < 7) {
182
+ week.push({ day: nextDay++, month: month + 1, year, isToday: false, inCurrentMonth: false });
183
+ }
184
+ const hasCurrentMonthDay = week.some(day => day.inCurrentMonth);
185
+ if (hasCurrentMonthDay) {
186
+ grid.push(week);
187
+ }
188
+ return grid;
189
+ }
190
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DayCalendarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
191
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DayCalendarComponent, selector: "day-calendar", inputs: { range: "range", restart: "restart", disabled: "disabled", language: "language", preSelectedDate: "preSelectedDate", actionsSection: "actionsSection", navType: "navType" }, outputs: { clearSelection: "clearSelection", calendarResponse: "response" }, usesOnChanges: true, ngImport: i0, template: "<section class=\"gravity-calendar-header\">\n <div class=\"previous-button\">\n <gravity-icon *ngIf=\"!(navType === 'next')\" [style.--icon-color]=\"'var(--text-highlight-primary)'\" [iconName]=\"'arrow-left'\"\n [iconSize]=\"'sm-12'\" (click)=\"currentDate = changeMonth(-1, currentDate)\" ></gravity-icon>\n </div>\n\n <div class=\"month-year-label\">\n <gravity-dropdown-label [fontClass]=\"'hr-title sm-bold'\" [size]=\"'sm'\" [label]=\"monthsList[currentDate.getMonth()]\"></gravity-dropdown-label>\n <gravity-dropdown-label [fontClass]=\"'hr-title sm-bold'\" [size]=\"'sm'\" [label]=\"currentDate.getFullYear().toString()\"></gravity-dropdown-label>\n </div>\n\n <div class=\"next-button\">\n <gravity-icon *ngIf=\"!(navType === 'prev')\" [style.--icon-color]=\"'var(--text-highlight-primary)'\" [iconName]=\"'arrow-right'\"\n [iconSize]=\"'sm-12'\" (click)=\"currentDate = changeMonth(1, currentDate)\"></gravity-icon>\n </div>\n</section>\n\n<section class=\"gravity-calendar-body\">\n <section class=\"days-name-line\">\n <div class=\"days-name\">\n <span class=\"hr-body sm-regular\" *ngFor=\"let day of daysList\">{{day}}</span>\n </div>\n <div class=\"separator-line\"></div>\n </section>\n\n <section class=\"days-number-selector\">\n <div class=\"days-number-table\">\n <div class=\"week-row\" *ngFor=\"let week of getMonthGrid(); trackBy: trackByWeek\">\n <span class=\"hr-body sm-regular\" *ngFor=\"let day of week; trackBy: trackByDay\"\n [ngClass]=\"disabled ? 'disabled' : getDaySelectionClass(day)\"\n [class.disabled]=\"!day.inCurrentMonth\" [class.today]=\"day.isToday\" [class.preview]=\"range ? isPreview(day) : null\"\n (click)=\"onSelectDay(day)\" (mouseenter)=\"range ? onHoverDay(day) : null\" (mouseleave)=\"range ? clearHover() : null\">\n {{ day.day }}\n </span>\n </div>\n </div>\n\n <div class=\"action-section\">\n <gravity-link *ngIf=\"actionsSection\" [linkText]=\"i18n.clear\" [state]=\"!isDateSelected() ? 'disabled' : 'active'\" (click)=\"clearSelectedDate()\"></gravity-link>\n <gravity-button *ngIf=\"actionsSection\" [size]=\"'sm'\" [type]=\"'tertiary'\" [disabled]=\"!isDateSelected()\" (click)=\"applySelectedDate()\">{{i18n.apply}}</gravity-button>\n </div>\n </section>\n</section>\n", styles: [":root{--gravity-spacing-none: 0;--gravity-spacing-xxs: .25rem;--gravity-spacing-xs: .5rem;--gravity-spacing-sm: 1rem;--gravity-spacing-md: 1.5rem;--gravity-spacing-lg: 2rem;--gravity-spacing-xl: 2.5rem;--gravity-spacing-xxl: 3rem;--gravity-spacing-xxxl: 4rem;--gravity-spacing-xxxxl: 6rem;--gravity-spacing-xxxxxl: 12rem}.gravity-padding-none{padding:0!important}.gravity-padding-top-none{padding-top:0!important}.gravity-padding-bottom-none{padding-bottom:0!important}.gravity-padding-left-none{padding-left:0!important}.gravity-padding-right-none{padding-right:0!important}.gravity-padding-block-none{padding-block:0!important}.gravity-padding-inline-none{padding-inline:0!important}.gravity-padding-xxs{padding:.25rem!important}.gravity-padding-top-xxs{padding-top:.25rem!important}.gravity-padding-bottom-xxs{padding-bottom:.25rem!important}.gravity-padding-left-xxs{padding-left:.25rem!important}.gravity-padding-right-xxs{padding-right:.25rem!important}.gravity-padding-block-xxs{padding-block:.25rem!important}.gravity-padding-inline-xxs{padding-inline:.25rem!important}.gravity-padding-xs{padding:.5rem!important}.gravity-padding-top-xs{padding-top:.5rem!important}.gravity-padding-bottom-xs{padding-bottom:.5rem!important}.gravity-padding-left-xs{padding-left:.5rem!important}.gravity-padding-right-xs{padding-right:.5rem!important}.gravity-padding-block-xs{padding-block:.5rem!important}.gravity-padding-inline-xs{padding-inline:.5rem!important}.gravity-padding-sm{padding:1rem!important}.gravity-padding-top-sm{padding-top:1rem!important}.gravity-padding-bottom-sm{padding-bottom:1rem!important}.gravity-padding-left-sm{padding-left:1rem!important}.gravity-padding-right-sm{padding-right:1rem!important}.gravity-padding-block-sm{padding-block:1rem!important}.gravity-padding-inline-sm{padding-inline:1rem!important}.gravity-padding-md{padding:1.5rem!important}.gravity-padding-top-md{padding-top:1.5rem!important}.gravity-padding-bottom-md{padding-bottom:1.5rem!important}.gravity-padding-left-md{padding-left:1.5rem!important}.gravity-padding-right-md{padding-right:1.5rem!important}.gravity-padding-block-md{padding-block:1.5rem!important}.gravity-padding-inline-md{padding-inline:1.5rem!important}.gravity-padding-lg{padding:2rem!important}.gravity-padding-top-lg{padding-top:2rem!important}.gravity-padding-bottom-lg{padding-bottom:2rem!important}.gravity-padding-left-lg{padding-left:2rem!important}.gravity-padding-right-lg{padding-right:2rem!important}.gravity-padding-block-lg{padding-block:2rem!important}.gravity-padding-inline-lg{padding-inline:2rem!important}.gravity-padding-xl{padding:2.5rem!important}.gravity-padding-top-xl{padding-top:2.5rem!important}.gravity-padding-bottom-xl{padding-bottom:2.5rem!important}.gravity-padding-left-xl{padding-left:2.5rem!important}.gravity-padding-right-xl{padding-right:2.5rem!important}.gravity-padding-block-xl{padding-block:2.5rem!important}.gravity-padding-inline-xl{padding-inline:2.5rem!important}.gravity-padding-xxl{padding:3rem!important}.gravity-padding-top-xxl{padding-top:3rem!important}.gravity-padding-bottom-xxl{padding-bottom:3rem!important}.gravity-padding-left-xxl{padding-left:3rem!important}.gravity-padding-right-xxl{padding-right:3rem!important}.gravity-padding-block-xxl{padding-block:3rem!important}.gravity-padding-inline-xxl{padding-inline:3rem!important}.gravity-padding-xxxl{padding:4rem!important}.gravity-padding-top-xxxl{padding-top:4rem!important}.gravity-padding-bottom-xxxl{padding-bottom:4rem!important}.gravity-padding-left-xxxl{padding-left:4rem!important}.gravity-padding-right-xxxl{padding-right:4rem!important}.gravity-padding-block-xxxl{padding-block:4rem!important}.gravity-padding-inline-xxxl{padding-inline:4rem!important}.gravity-padding-xxxxl{padding:6rem!important}.gravity-padding-top-xxxxl{padding-top:6rem!important}.gravity-padding-bottom-xxxxl{padding-bottom:6rem!important}.gravity-padding-left-xxxxl{padding-left:6rem!important}.gravity-padding-right-xxxxl{padding-right:6rem!important}.gravity-padding-block-xxxxl{padding-block:6rem!important}.gravity-padding-inline-xxxxl{padding-inline:6rem!important}.gravity-padding-xxxxxl{padding:12rem!important}.gravity-padding-top-xxxxxl{padding-top:12rem!important}.gravity-padding-bottom-xxxxxl{padding-bottom:12rem!important}.gravity-padding-left-xxxxxl{padding-left:12rem!important}.gravity-padding-right-xxxxxl{padding-right:12rem!important}.gravity-padding-block-xxxxxl{padding-block:12rem!important}.gravity-padding-inline-xxxxxl{padding-inline:12rem!important}.gravity-margin-none{margin:0!important}.gravity-margin-top-none{margin-top:0!important}.gravity-margin-bottom-none{margin-bottom:0!important}.gravity-margin-left-none{margin-left:0!important}.gravity-margin-right-none{margin-right:0!important}.gravity-margin-block-none{margin-block:0!important}.gravity-margin-inline-none{margin-inline:0!important}.gravity-margin-xxs{margin:.25rem!important}.gravity-margin-top-xxs{margin-top:.25rem!important}.gravity-margin-bottom-xxs{margin-bottom:.25rem!important}.gravity-margin-left-xxs{margin-left:.25rem!important}.gravity-margin-right-xxs{margin-right:.25rem!important}.gravity-margin-block-xxs{margin-block:.25rem!important}.gravity-margin-inline-xxs{margin-inline:.25rem!important}.gravity-margin-xs{margin:.5rem!important}.gravity-margin-top-xs{margin-top:.5rem!important}.gravity-margin-bottom-xs{margin-bottom:.5rem!important}.gravity-margin-left-xs{margin-left:.5rem!important}.gravity-margin-right-xs{margin-right:.5rem!important}.gravity-margin-block-xs{margin-block:.5rem!important}.gravity-margin-inline-xs{margin-inline:.5rem!important}.gravity-margin-sm{margin:1rem!important}.gravity-margin-top-sm{margin-top:1rem!important}.gravity-margin-bottom-sm{margin-bottom:1rem!important}.gravity-margin-left-sm{margin-left:1rem!important}.gravity-margin-right-sm{margin-right:1rem!important}.gravity-margin-block-sm{margin-block:1rem!important}.gravity-margin-inline-sm{margin-inline:1rem!important}.gravity-margin-md{margin:1.5rem!important}.gravity-margin-top-md{margin-top:1.5rem!important}.gravity-margin-bottom-md{margin-bottom:1.5rem!important}.gravity-margin-left-md{margin-left:1.5rem!important}.gravity-margin-right-md{margin-right:1.5rem!important}.gravity-margin-block-md{margin-block:1.5rem!important}.gravity-margin-inline-md{margin-inline:1.5rem!important}.gravity-margin-lg{margin:2rem!important}.gravity-margin-top-lg{margin-top:2rem!important}.gravity-margin-bottom-lg{margin-bottom:2rem!important}.gravity-margin-left-lg{margin-left:2rem!important}.gravity-margin-right-lg{margin-right:2rem!important}.gravity-margin-block-lg{margin-block:2rem!important}.gravity-margin-inline-lg{margin-inline:2rem!important}.gravity-margin-xl{margin:2.5rem!important}.gravity-margin-top-xl{margin-top:2.5rem!important}.gravity-margin-bottom-xl{margin-bottom:2.5rem!important}.gravity-margin-left-xl{margin-left:2.5rem!important}.gravity-margin-right-xl{margin-right:2.5rem!important}.gravity-margin-block-xl{margin-block:2.5rem!important}.gravity-margin-inline-xl{margin-inline:2.5rem!important}.gravity-margin-xxl{margin:3rem!important}.gravity-margin-top-xxl{margin-top:3rem!important}.gravity-margin-bottom-xxl{margin-bottom:3rem!important}.gravity-margin-left-xxl{margin-left:3rem!important}.gravity-margin-right-xxl{margin-right:3rem!important}.gravity-margin-block-xxl{margin-block:3rem!important}.gravity-margin-inline-xxl{margin-inline:3rem!important}.gravity-margin-xxxl{margin:4rem!important}.gravity-margin-top-xxxl{margin-top:4rem!important}.gravity-margin-bottom-xxxl{margin-bottom:4rem!important}.gravity-margin-left-xxxl{margin-left:4rem!important}.gravity-margin-right-xxxl{margin-right:4rem!important}.gravity-margin-block-xxxl{margin-block:4rem!important}.gravity-margin-inline-xxxl{margin-inline:4rem!important}.gravity-margin-xxxxl{margin:6rem!important}.gravity-margin-top-xxxxl{margin-top:6rem!important}.gravity-margin-bottom-xxxxl{margin-bottom:6rem!important}.gravity-margin-left-xxxxl{margin-left:6rem!important}.gravity-margin-right-xxxxl{margin-right:6rem!important}.gravity-margin-block-xxxxl{margin-block:6rem!important}.gravity-margin-inline-xxxxl{margin-inline:6rem!important}.gravity-margin-xxxxxl{margin:12rem!important}.gravity-margin-top-xxxxxl{margin-top:12rem!important}.gravity-margin-bottom-xxxxxl{margin-bottom:12rem!important}.gravity-margin-left-xxxxxl{margin-left:12rem!important}.gravity-margin-right-xxxxxl{margin-right:12rem!important}.gravity-margin-block-xxxxxl{margin-block:12rem!important}.gravity-margin-inline-xxxxxl{margin-inline:12rem!important}.border-radius-none{border-radius:0}.border-radius-xs{border-radius:.0625rem}.border-radius-sm{border-radius:.3125rem}.border-radius-md{border-radius:.625rem}.border-radius-lg{border-radius:.9375rem}.border-radius-xl{border-radius:1.25rem}.border-radius-xxl{border-radius:2rem}.border-radius-rounded{border-radius:6.25rem}.gravity-calendar-header{display:flex;align-items:center;justify-content:space-between}.gravity-calendar-header .month-year-label{display:flex;gap:var(--gravity-spacing-sm)}.gravity-calendar-header .next-button,.gravity-calendar-header .previous-button{cursor:pointer;margin:var(--gravity-spacing-xs)}.gravity-calendar-body{width:248px;display:flex;align-items:center;align-self:stretch;flex-direction:column;justify-content:center}.gravity-calendar-body .days-name-line{display:flex;align-items:center;align-self:stretch;flex-direction:column;justify-content:center;gap:var(--gravity-spacing-xs);padding-bottom:var(--gravity-spacing-xs)}.gravity-calendar-body .days-name-line .days-name{display:flex;align-items:center;align-self:stretch;justify-content:space-between}.gravity-calendar-body .days-name-line .days-name span{display:flex;cursor:default;align-items:center;justify-content:center;padding:var(--gravity-spacing-xs);color:var(--text-highlight-primary)}.gravity-calendar-body .days-name-line .separator-line{width:248px;border-bottom:2px solid var(--divider-menu-active-primary)}.gravity-calendar-body .days-number-selector{display:flex;align-items:center;align-self:stretch;flex-direction:column;justify-content:center;gap:var(--gravity-spacing-sm)}.gravity-calendar-body .days-number-selector .days-number-table{display:flex;min-height:150px;align-items:center;align-self:stretch;flex-direction:column;justify-content:flex-start}.gravity-calendar-body .days-number-selector .days-number-table .week-row{height:25px;display:flex;align-items:center;align-self:stretch}.gravity-calendar-body .days-number-selector .days-number-table .week-row span{gap:10px;flex:1 0 0;display:flex;cursor:pointer;align-items:center;align-self:stretch;flex-direction:column;justify-content:center;padding:var(--gravity-spacing-xs);border-radius:var(--gravity-spacing-xs);border:2px solid var(--bg-calender-primary)}.gravity-calendar-body .days-number-selector .days-number-table .week-row span:not(.sl).today{border-color:var(--bg-number-calendar-hover-primary)}.gravity-calendar-body .days-number-selector .days-number-table .week-row span:not(.disabled):not(.sl):hover{color:var(--on-bg-button-pressed-tertiary);background:var(--bg-button-active-tertiary);border-color:var(--bg-button-active-tertiary)}.gravity-calendar-body .days-number-selector .days-number-table .week-row span.single,.gravity-calendar-body .days-number-selector .days-number-table .week-row span.start,.gravity-calendar-body .days-number-selector .days-number-table .week-row span.end{color:var(--on-bg-button-pressed-primary);background:var(--bg-button-pressed-primary);border-color:var(--bg-button-pressed-primary)}.gravity-calendar-body .days-number-selector .days-number-table .week-row span.range,.gravity-calendar-body .days-number-selector .days-number-table .week-row span:not(.disabled).preview{border-radius:0;background:var(--bg-button-active-tertiary);border-color:var(--bg-button-active-tertiary)}.gravity-calendar-body .days-number-selector .days-number-table .week-row span.start,.gravity-calendar-body .days-number-selector .days-number-table .week-row span.nsl-start:hover{border-radius:var(--gravity-spacing-xs) 0 0 var(--gravity-spacing-xs)}.gravity-calendar-body .days-number-selector .days-number-table .week-row span.end,.gravity-calendar-body .days-number-selector .days-number-table .week-row span.nsl-end:hover{border-radius:0 var(--gravity-spacing-xs) var(--gravity-spacing-xs) 0}.gravity-calendar-body .days-number-selector .days-number-table .week-row span.nsl-end:hover{border-color:var(--bg-button-pressed-primary)!important}.gravity-calendar-body .days-number-selector .days-number-table .week-row span.disabled{cursor:default;pointer-events:none;color:var(--on-bg-disabled)}.gravity-calendar-body .days-number-selector .action-section{height:25px;display:flex;align-items:center;align-self:stretch;justify-content:space-between}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.GravityButtonComponent, selector: "gravity-button", inputs: ["cypressTag", "disabled", "customState", "iconPosition", "iconName", "isLoading", "showContent", "size", "type"] }, { kind: "component", type: i3.GravityIconComponent, selector: "gravity-icon", inputs: ["customIconColorVariable", "iconName", "iconSize", "hoverIcon", "size", "isCoin"] }, { kind: "component", type: i4.GravityLinkComponent, selector: "gravity-link", inputs: ["linkText", "fontClass", "link", "cypressTag", "iconName", "target", "iconPosition", "iconSize", "state"] }, { kind: "component", type: i5.GravityDropdownLabelComponent, selector: "gravity-dropdown-label", inputs: ["label", "fontClass", "isOpen", "stopPropagation", "size"], outputs: ["onClickLabel"] }] }); }
192
+ }
193
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DayCalendarComponent, decorators: [{
194
+ type: Component,
195
+ args: [{ selector: 'day-calendar', template: "<section class=\"gravity-calendar-header\">\n <div class=\"previous-button\">\n <gravity-icon *ngIf=\"!(navType === 'next')\" [style.--icon-color]=\"'var(--text-highlight-primary)'\" [iconName]=\"'arrow-left'\"\n [iconSize]=\"'sm-12'\" (click)=\"currentDate = changeMonth(-1, currentDate)\" ></gravity-icon>\n </div>\n\n <div class=\"month-year-label\">\n <gravity-dropdown-label [fontClass]=\"'hr-title sm-bold'\" [size]=\"'sm'\" [label]=\"monthsList[currentDate.getMonth()]\"></gravity-dropdown-label>\n <gravity-dropdown-label [fontClass]=\"'hr-title sm-bold'\" [size]=\"'sm'\" [label]=\"currentDate.getFullYear().toString()\"></gravity-dropdown-label>\n </div>\n\n <div class=\"next-button\">\n <gravity-icon *ngIf=\"!(navType === 'prev')\" [style.--icon-color]=\"'var(--text-highlight-primary)'\" [iconName]=\"'arrow-right'\"\n [iconSize]=\"'sm-12'\" (click)=\"currentDate = changeMonth(1, currentDate)\"></gravity-icon>\n </div>\n</section>\n\n<section class=\"gravity-calendar-body\">\n <section class=\"days-name-line\">\n <div class=\"days-name\">\n <span class=\"hr-body sm-regular\" *ngFor=\"let day of daysList\">{{day}}</span>\n </div>\n <div class=\"separator-line\"></div>\n </section>\n\n <section class=\"days-number-selector\">\n <div class=\"days-number-table\">\n <div class=\"week-row\" *ngFor=\"let week of getMonthGrid(); trackBy: trackByWeek\">\n <span class=\"hr-body sm-regular\" *ngFor=\"let day of week; trackBy: trackByDay\"\n [ngClass]=\"disabled ? 'disabled' : getDaySelectionClass(day)\"\n [class.disabled]=\"!day.inCurrentMonth\" [class.today]=\"day.isToday\" [class.preview]=\"range ? isPreview(day) : null\"\n (click)=\"onSelectDay(day)\" (mouseenter)=\"range ? onHoverDay(day) : null\" (mouseleave)=\"range ? clearHover() : null\">\n {{ day.day }}\n </span>\n </div>\n </div>\n\n <div class=\"action-section\">\n <gravity-link *ngIf=\"actionsSection\" [linkText]=\"i18n.clear\" [state]=\"!isDateSelected() ? 'disabled' : 'active'\" (click)=\"clearSelectedDate()\"></gravity-link>\n <gravity-button *ngIf=\"actionsSection\" [size]=\"'sm'\" [type]=\"'tertiary'\" [disabled]=\"!isDateSelected()\" (click)=\"applySelectedDate()\">{{i18n.apply}}</gravity-button>\n </div>\n </section>\n</section>\n", styles: [":root{--gravity-spacing-none: 0;--gravity-spacing-xxs: .25rem;--gravity-spacing-xs: .5rem;--gravity-spacing-sm: 1rem;--gravity-spacing-md: 1.5rem;--gravity-spacing-lg: 2rem;--gravity-spacing-xl: 2.5rem;--gravity-spacing-xxl: 3rem;--gravity-spacing-xxxl: 4rem;--gravity-spacing-xxxxl: 6rem;--gravity-spacing-xxxxxl: 12rem}.gravity-padding-none{padding:0!important}.gravity-padding-top-none{padding-top:0!important}.gravity-padding-bottom-none{padding-bottom:0!important}.gravity-padding-left-none{padding-left:0!important}.gravity-padding-right-none{padding-right:0!important}.gravity-padding-block-none{padding-block:0!important}.gravity-padding-inline-none{padding-inline:0!important}.gravity-padding-xxs{padding:.25rem!important}.gravity-padding-top-xxs{padding-top:.25rem!important}.gravity-padding-bottom-xxs{padding-bottom:.25rem!important}.gravity-padding-left-xxs{padding-left:.25rem!important}.gravity-padding-right-xxs{padding-right:.25rem!important}.gravity-padding-block-xxs{padding-block:.25rem!important}.gravity-padding-inline-xxs{padding-inline:.25rem!important}.gravity-padding-xs{padding:.5rem!important}.gravity-padding-top-xs{padding-top:.5rem!important}.gravity-padding-bottom-xs{padding-bottom:.5rem!important}.gravity-padding-left-xs{padding-left:.5rem!important}.gravity-padding-right-xs{padding-right:.5rem!important}.gravity-padding-block-xs{padding-block:.5rem!important}.gravity-padding-inline-xs{padding-inline:.5rem!important}.gravity-padding-sm{padding:1rem!important}.gravity-padding-top-sm{padding-top:1rem!important}.gravity-padding-bottom-sm{padding-bottom:1rem!important}.gravity-padding-left-sm{padding-left:1rem!important}.gravity-padding-right-sm{padding-right:1rem!important}.gravity-padding-block-sm{padding-block:1rem!important}.gravity-padding-inline-sm{padding-inline:1rem!important}.gravity-padding-md{padding:1.5rem!important}.gravity-padding-top-md{padding-top:1.5rem!important}.gravity-padding-bottom-md{padding-bottom:1.5rem!important}.gravity-padding-left-md{padding-left:1.5rem!important}.gravity-padding-right-md{padding-right:1.5rem!important}.gravity-padding-block-md{padding-block:1.5rem!important}.gravity-padding-inline-md{padding-inline:1.5rem!important}.gravity-padding-lg{padding:2rem!important}.gravity-padding-top-lg{padding-top:2rem!important}.gravity-padding-bottom-lg{padding-bottom:2rem!important}.gravity-padding-left-lg{padding-left:2rem!important}.gravity-padding-right-lg{padding-right:2rem!important}.gravity-padding-block-lg{padding-block:2rem!important}.gravity-padding-inline-lg{padding-inline:2rem!important}.gravity-padding-xl{padding:2.5rem!important}.gravity-padding-top-xl{padding-top:2.5rem!important}.gravity-padding-bottom-xl{padding-bottom:2.5rem!important}.gravity-padding-left-xl{padding-left:2.5rem!important}.gravity-padding-right-xl{padding-right:2.5rem!important}.gravity-padding-block-xl{padding-block:2.5rem!important}.gravity-padding-inline-xl{padding-inline:2.5rem!important}.gravity-padding-xxl{padding:3rem!important}.gravity-padding-top-xxl{padding-top:3rem!important}.gravity-padding-bottom-xxl{padding-bottom:3rem!important}.gravity-padding-left-xxl{padding-left:3rem!important}.gravity-padding-right-xxl{padding-right:3rem!important}.gravity-padding-block-xxl{padding-block:3rem!important}.gravity-padding-inline-xxl{padding-inline:3rem!important}.gravity-padding-xxxl{padding:4rem!important}.gravity-padding-top-xxxl{padding-top:4rem!important}.gravity-padding-bottom-xxxl{padding-bottom:4rem!important}.gravity-padding-left-xxxl{padding-left:4rem!important}.gravity-padding-right-xxxl{padding-right:4rem!important}.gravity-padding-block-xxxl{padding-block:4rem!important}.gravity-padding-inline-xxxl{padding-inline:4rem!important}.gravity-padding-xxxxl{padding:6rem!important}.gravity-padding-top-xxxxl{padding-top:6rem!important}.gravity-padding-bottom-xxxxl{padding-bottom:6rem!important}.gravity-padding-left-xxxxl{padding-left:6rem!important}.gravity-padding-right-xxxxl{padding-right:6rem!important}.gravity-padding-block-xxxxl{padding-block:6rem!important}.gravity-padding-inline-xxxxl{padding-inline:6rem!important}.gravity-padding-xxxxxl{padding:12rem!important}.gravity-padding-top-xxxxxl{padding-top:12rem!important}.gravity-padding-bottom-xxxxxl{padding-bottom:12rem!important}.gravity-padding-left-xxxxxl{padding-left:12rem!important}.gravity-padding-right-xxxxxl{padding-right:12rem!important}.gravity-padding-block-xxxxxl{padding-block:12rem!important}.gravity-padding-inline-xxxxxl{padding-inline:12rem!important}.gravity-margin-none{margin:0!important}.gravity-margin-top-none{margin-top:0!important}.gravity-margin-bottom-none{margin-bottom:0!important}.gravity-margin-left-none{margin-left:0!important}.gravity-margin-right-none{margin-right:0!important}.gravity-margin-block-none{margin-block:0!important}.gravity-margin-inline-none{margin-inline:0!important}.gravity-margin-xxs{margin:.25rem!important}.gravity-margin-top-xxs{margin-top:.25rem!important}.gravity-margin-bottom-xxs{margin-bottom:.25rem!important}.gravity-margin-left-xxs{margin-left:.25rem!important}.gravity-margin-right-xxs{margin-right:.25rem!important}.gravity-margin-block-xxs{margin-block:.25rem!important}.gravity-margin-inline-xxs{margin-inline:.25rem!important}.gravity-margin-xs{margin:.5rem!important}.gravity-margin-top-xs{margin-top:.5rem!important}.gravity-margin-bottom-xs{margin-bottom:.5rem!important}.gravity-margin-left-xs{margin-left:.5rem!important}.gravity-margin-right-xs{margin-right:.5rem!important}.gravity-margin-block-xs{margin-block:.5rem!important}.gravity-margin-inline-xs{margin-inline:.5rem!important}.gravity-margin-sm{margin:1rem!important}.gravity-margin-top-sm{margin-top:1rem!important}.gravity-margin-bottom-sm{margin-bottom:1rem!important}.gravity-margin-left-sm{margin-left:1rem!important}.gravity-margin-right-sm{margin-right:1rem!important}.gravity-margin-block-sm{margin-block:1rem!important}.gravity-margin-inline-sm{margin-inline:1rem!important}.gravity-margin-md{margin:1.5rem!important}.gravity-margin-top-md{margin-top:1.5rem!important}.gravity-margin-bottom-md{margin-bottom:1.5rem!important}.gravity-margin-left-md{margin-left:1.5rem!important}.gravity-margin-right-md{margin-right:1.5rem!important}.gravity-margin-block-md{margin-block:1.5rem!important}.gravity-margin-inline-md{margin-inline:1.5rem!important}.gravity-margin-lg{margin:2rem!important}.gravity-margin-top-lg{margin-top:2rem!important}.gravity-margin-bottom-lg{margin-bottom:2rem!important}.gravity-margin-left-lg{margin-left:2rem!important}.gravity-margin-right-lg{margin-right:2rem!important}.gravity-margin-block-lg{margin-block:2rem!important}.gravity-margin-inline-lg{margin-inline:2rem!important}.gravity-margin-xl{margin:2.5rem!important}.gravity-margin-top-xl{margin-top:2.5rem!important}.gravity-margin-bottom-xl{margin-bottom:2.5rem!important}.gravity-margin-left-xl{margin-left:2.5rem!important}.gravity-margin-right-xl{margin-right:2.5rem!important}.gravity-margin-block-xl{margin-block:2.5rem!important}.gravity-margin-inline-xl{margin-inline:2.5rem!important}.gravity-margin-xxl{margin:3rem!important}.gravity-margin-top-xxl{margin-top:3rem!important}.gravity-margin-bottom-xxl{margin-bottom:3rem!important}.gravity-margin-left-xxl{margin-left:3rem!important}.gravity-margin-right-xxl{margin-right:3rem!important}.gravity-margin-block-xxl{margin-block:3rem!important}.gravity-margin-inline-xxl{margin-inline:3rem!important}.gravity-margin-xxxl{margin:4rem!important}.gravity-margin-top-xxxl{margin-top:4rem!important}.gravity-margin-bottom-xxxl{margin-bottom:4rem!important}.gravity-margin-left-xxxl{margin-left:4rem!important}.gravity-margin-right-xxxl{margin-right:4rem!important}.gravity-margin-block-xxxl{margin-block:4rem!important}.gravity-margin-inline-xxxl{margin-inline:4rem!important}.gravity-margin-xxxxl{margin:6rem!important}.gravity-margin-top-xxxxl{margin-top:6rem!important}.gravity-margin-bottom-xxxxl{margin-bottom:6rem!important}.gravity-margin-left-xxxxl{margin-left:6rem!important}.gravity-margin-right-xxxxl{margin-right:6rem!important}.gravity-margin-block-xxxxl{margin-block:6rem!important}.gravity-margin-inline-xxxxl{margin-inline:6rem!important}.gravity-margin-xxxxxl{margin:12rem!important}.gravity-margin-top-xxxxxl{margin-top:12rem!important}.gravity-margin-bottom-xxxxxl{margin-bottom:12rem!important}.gravity-margin-left-xxxxxl{margin-left:12rem!important}.gravity-margin-right-xxxxxl{margin-right:12rem!important}.gravity-margin-block-xxxxxl{margin-block:12rem!important}.gravity-margin-inline-xxxxxl{margin-inline:12rem!important}.border-radius-none{border-radius:0}.border-radius-xs{border-radius:.0625rem}.border-radius-sm{border-radius:.3125rem}.border-radius-md{border-radius:.625rem}.border-radius-lg{border-radius:.9375rem}.border-radius-xl{border-radius:1.25rem}.border-radius-xxl{border-radius:2rem}.border-radius-rounded{border-radius:6.25rem}.gravity-calendar-header{display:flex;align-items:center;justify-content:space-between}.gravity-calendar-header .month-year-label{display:flex;gap:var(--gravity-spacing-sm)}.gravity-calendar-header .next-button,.gravity-calendar-header .previous-button{cursor:pointer;margin:var(--gravity-spacing-xs)}.gravity-calendar-body{width:248px;display:flex;align-items:center;align-self:stretch;flex-direction:column;justify-content:center}.gravity-calendar-body .days-name-line{display:flex;align-items:center;align-self:stretch;flex-direction:column;justify-content:center;gap:var(--gravity-spacing-xs);padding-bottom:var(--gravity-spacing-xs)}.gravity-calendar-body .days-name-line .days-name{display:flex;align-items:center;align-self:stretch;justify-content:space-between}.gravity-calendar-body .days-name-line .days-name span{display:flex;cursor:default;align-items:center;justify-content:center;padding:var(--gravity-spacing-xs);color:var(--text-highlight-primary)}.gravity-calendar-body .days-name-line .separator-line{width:248px;border-bottom:2px solid var(--divider-menu-active-primary)}.gravity-calendar-body .days-number-selector{display:flex;align-items:center;align-self:stretch;flex-direction:column;justify-content:center;gap:var(--gravity-spacing-sm)}.gravity-calendar-body .days-number-selector .days-number-table{display:flex;min-height:150px;align-items:center;align-self:stretch;flex-direction:column;justify-content:flex-start}.gravity-calendar-body .days-number-selector .days-number-table .week-row{height:25px;display:flex;align-items:center;align-self:stretch}.gravity-calendar-body .days-number-selector .days-number-table .week-row span{gap:10px;flex:1 0 0;display:flex;cursor:pointer;align-items:center;align-self:stretch;flex-direction:column;justify-content:center;padding:var(--gravity-spacing-xs);border-radius:var(--gravity-spacing-xs);border:2px solid var(--bg-calender-primary)}.gravity-calendar-body .days-number-selector .days-number-table .week-row span:not(.sl).today{border-color:var(--bg-number-calendar-hover-primary)}.gravity-calendar-body .days-number-selector .days-number-table .week-row span:not(.disabled):not(.sl):hover{color:var(--on-bg-button-pressed-tertiary);background:var(--bg-button-active-tertiary);border-color:var(--bg-button-active-tertiary)}.gravity-calendar-body .days-number-selector .days-number-table .week-row span.single,.gravity-calendar-body .days-number-selector .days-number-table .week-row span.start,.gravity-calendar-body .days-number-selector .days-number-table .week-row span.end{color:var(--on-bg-button-pressed-primary);background:var(--bg-button-pressed-primary);border-color:var(--bg-button-pressed-primary)}.gravity-calendar-body .days-number-selector .days-number-table .week-row span.range,.gravity-calendar-body .days-number-selector .days-number-table .week-row span:not(.disabled).preview{border-radius:0;background:var(--bg-button-active-tertiary);border-color:var(--bg-button-active-tertiary)}.gravity-calendar-body .days-number-selector .days-number-table .week-row span.start,.gravity-calendar-body .days-number-selector .days-number-table .week-row span.nsl-start:hover{border-radius:var(--gravity-spacing-xs) 0 0 var(--gravity-spacing-xs)}.gravity-calendar-body .days-number-selector .days-number-table .week-row span.end,.gravity-calendar-body .days-number-selector .days-number-table .week-row span.nsl-end:hover{border-radius:0 var(--gravity-spacing-xs) var(--gravity-spacing-xs) 0}.gravity-calendar-body .days-number-selector .days-number-table .week-row span.nsl-end:hover{border-color:var(--bg-button-pressed-primary)!important}.gravity-calendar-body .days-number-selector .days-number-table .week-row span.disabled{cursor:default;pointer-events:none;color:var(--on-bg-disabled)}.gravity-calendar-body .days-number-selector .action-section{height:25px;display:flex;align-items:center;align-self:stretch;justify-content:space-between}\n"] }]
196
+ }], propDecorators: { range: [{
197
+ type: Input
198
+ }], restart: [{
199
+ type: Input
200
+ }], disabled: [{
201
+ type: Input
202
+ }], language: [{
203
+ type: Input
204
+ }], preSelectedDate: [{
205
+ type: Input
206
+ }], actionsSection: [{
207
+ type: Input
208
+ }], navType: [{
209
+ type: Input
210
+ }], clearSelection: [{
211
+ type: Output
212
+ }], calendarResponse: [{
213
+ type: Output,
214
+ args: ['response']
215
+ }] } });
216
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5LWNhbGVuZGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyYXZpdHktZGVzaWduLXN5c3RlbS9zcmMvbGliL2NvbXBvbmVudHMvZ3Jhdml0eS1jYWxlbmRhci1uZXh0L2NvbXBvbmVudHMvZGF5LWNhbGVuZGFyL2RheS1jYWxlbmRhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncmF2aXR5LWRlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2dyYXZpdHktY2FsZW5kYXItbmV4dC9jb21wb25lbnRzL2RheS1jYWxlbmRhci9kYXktY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBZ0IsTUFBTSxlQUFlLENBQUM7QUFDL0YsT0FBTyxFQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RyxPQUFPLEVBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7OztBQU90SCxNQUFNLE9BQU8sb0JBQW9CO0lBTGpDO1FBTW9CLFVBQUssR0FBWSxLQUFLLENBQUM7UUFDdkIsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUN6QixhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLGFBQVEsR0FBZ0IsSUFBSSxDQUFDO1FBRTdCLG1CQUFjLEdBQVksSUFBSSxDQUFDO1FBQy9CLFlBQU8sR0FBNkIsTUFBTSxDQUFBO1FBRXpDLG1CQUFjLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFDcEQscUJBQWdCLEdBQWdDLElBQUks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QUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FBRTtRQUU1QyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDOytHQTNMUSxvQkFBb0I7bUdBQXBCLG9CQUFvQiw0VUNWakMscStFQTJDQTs7NEZEakNhLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDSSxjQUFjOzhCQUtSLEtBQUs7c0JBQXBCLEtBQUs7Z0JBQ1UsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsZUFBZTtzQkFBOUIsS0FBSztnQkFDVSxjQUFjO3NCQUE3QixLQUFLO2dCQUNVLE9BQU87c0JBQXRCLEtBQUs7Z0JBRVcsY0FBYztzQkFBOUIsTUFBTTtnQkFDb0IsZ0JBQWdCO3NCQUExQyxNQUFNO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NhbGVuZGFyRGF5fSBmcm9tIFwiLi4vLi4vc2hhcmVkL2NhbGVuZGFyLm1vZGFsXCI7XG5pbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXN9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDQUxFTkRBUl9JMThOLCBEQVlTX0VOLCBEQVlTX0VTLCBNT05USFNfRU4sIE1PTlRIU19FU30gZnJvbSBcIi4uLy4uL3NoYXJlZC9jYWxlbmRhci5jb25zdGFudHNcIjtcbmltcG9ydCB7dG9EYXRlLCBjaGFuZ2VNb250aCwgdG9DYWxlbmRhckRheSwgdHJhY2tCeVdlZWssIHRyYWNrQnlEYXksIGdldFN0YXJ0RGF0ZX0gZnJvbSAnLi4vLi4vc2hhcmVkL2NhbGVuZGFyLnV0aWxzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdkYXktY2FsZW5kYXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kYXktY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2RheS1jYWxlbmRhci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIERheUNhbGVuZGFyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgICBASW5wdXQoKSBwdWJsaWMgcmFuZ2U6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBwdWJsaWMgcmVzdGFydDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBsYW5ndWFnZTogJ2VzJyB8ICdlbicgPSAnZW4nO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBwcmVTZWxlY3RlZERhdGU6IERhdGUgfCBEYXRlW107XG4gICAgQElucHV0KCkgcHVibGljIGFjdGlvbnNTZWN0aW9uOiBib29sZWFuID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBwdWJsaWMgbmF2VHlwZTogJ3ByZXYnIHwgJ25leHQnIHwgJ2JvdGgnID0gJ2JvdGgnXG5cbiAgICBAT3V0cHV0KCkgcHVibGljIGNsZWFyU2VsZWN0aW9uOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gICAgQE91dHB1dCgncmVzcG9uc2UnKSBwdWJsaWMgY2FsZW5kYXJSZXNwb25zZTogRXZlbnRFbWl0dGVyPERhdGVbXSB8IERhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlW10gfCBEYXRlPigpO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHRyYWNrQnlEYXkgPSB0cmFja0J5RGF5O1xuICAgIHByb3RlY3RlZCByZWFkb25seSB0cmFja0J5V2VlayA9IHRyYWNrQnlXZWVrO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBjaGFuZ2VNb250aCA9IGNoYW5nZU1vbnRoO1xuXG4gICAgcHVibGljIGN1cnJlbnREYXRlOiBEYXRlID0gbmV3IERhdGUoKTtcbiAgICBwdWJsaWMgaG92ZXJlZERheTogQ2FsZW5kYXJEYXkgfCBudWxsID0gbnVsbDtcbiAgICBwdWJsaWMgc2VsZWN0ZWREYXk6IENhbGVuZGFyRGF5IHwgbnVsbCA9IG51bGw7XG4gICAgcHVibGljIHNlbGVjdGVkUmFuZ2VFbmQ6IENhbGVuZGFyRGF5IHwgbnVsbCA9IG51bGw7XG4gICAgcHVibGljIHNlbGVjdGVkUmFuZ2VTdGFydDogQ2FsZW5kYXJEYXkgfCBudWxsID0gbnVsbDtcblxuICAgIHB1YmxpYyBnZXQgaTE4bigpIHsgcmV0dXJuIENBTEVOREFSX0kxOE5bdGhpcy5sYW5ndWFnZV07IH1cbiAgICBwdWJsaWMgZ2V0IGRheXNMaXN0KCkgeyByZXR1cm4gdGhpcy5sYW5ndWFnZSA9PT0gJ2VuJyA/IERBWVNfRU4gOiBEQVlTX0VTOyB9XG4gICAgcHVibGljIGdldCBtb250aHNMaXN0KCkgeyByZXR1cm4gdGhpcy5sYW5ndWFnZSA9PT0gJ2VuJyA/IE1PTlRIU19FTiA6IE1PTlRIU19FUzsgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBjb25zdCBzaG91bGRSZXN0YXJ0ID0gY2hhbmdlc1sncmVzdGFydCddICYmIHRoaXMucmVzdGFydDtcbiAgICAgICAgY29uc3Qgc2hvdWxkUHJvY2Vzc1ByZVNlbGVjdGVkID0gY2hhbmdlc1sncHJlU2VsZWN0ZWREYXRlJ10gJiYgdGhpcy5wcmVTZWxlY3RlZERhdGU7XG4gICAgICAgIGlmIChzaG91bGRSZXN0YXJ0IHx8IHNob3VsZFByb2Nlc3NQcmVTZWxlY3RlZCkgeyB0aGlzLnByb2Nlc3NQcmVzZWxlY3RlZERhdGUoKTsgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcHJvY2Vzc1ByZXNlbGVjdGVkRGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucmFuZ2UgJiYgQXJyYXkuaXNBcnJheSh0aGlzLnByZVNlbGVjdGVkRGF0ZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IFtzdGFydCwgZW5kXSA9IHRoaXMucHJlU2VsZWN0ZWREYXRlO1xuXG4gICAgICAgICAgICBpZiAoc3RhcnQgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFJhbmdlU3RhcnQgPSB0b0NhbGVuZGFyRGF5KHN0YXJ0KTtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnREYXRlID0gZ2V0U3RhcnREYXRlKHN0YXJ0KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGVuZCBpbnN0YW5jZW9mIERhdGUpIHsgdGhpcy5zZWxlY3RlZFJhbmdlRW5kID0gdG9DYWxlbmRhckRheShlbmQpOyB9XG5cbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnByZVNlbGVjdGVkRGF0ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXkgPSB0b0NhbGVuZGFyRGF5KHRoaXMucHJlU2VsZWN0ZWREYXRlKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudERhdGUgPSBnZXRTdGFydERhdGUodGhpcy5wcmVTZWxlY3RlZERhdGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGlzRGF0ZVNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMucmFuZ2UpIHsgcmV0dXJuICEhdGhpcy5zZWxlY3RlZERheTsgfVxuICAgICAgICBlbHNlIHsgcmV0dXJuICEhdGhpcy5zZWxlY3RlZFJhbmdlU3RhcnQgJiYgISF0aGlzLnNlbGVjdGVkUmFuZ2VFbmQ7IH1cbiAgICB9XG5cbiAgICBwdWJsaWMgaXNQcmV2aWV3KGRheTogQ2FsZW5kYXJEYXkpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkUmFuZ2VTdGFydCB8fCB0aGlzLnNlbGVjdGVkUmFuZ2VFbmQgfHwgIXRoaXMuaG92ZXJlZERheSkgeyByZXR1cm4gZmFsc2U7IH1cblxuICAgICAgICBjb25zdCBjdXJyZW50ID0gdG9EYXRlKGRheSk7XG4gICAgICAgIGNvbnN0IGhvdmVyID0gdG9EYXRlKHRoaXMuaG92ZXJlZERheSk7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gdG9EYXRlKHRoaXMuc2VsZWN0ZWRSYW5nZVN0YXJ0KTtcblxuICAgICAgICBpZiAoaG92ZXIgPD0gc3RhcnQpIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgICAgIHJldHVybiBjdXJyZW50ID4gc3RhcnQgJiYgY3VycmVudCA8PSBob3ZlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RGF5U2VsZWN0aW9uQ2xhc3MoZGF5OiBDYWxlbmRhckRheSk6IHN0cmluZyB7XG4gICAgICAgIGlmICghZGF5LmluQ3VycmVudE1vbnRoKSByZXR1cm4gJ2Rpc2FibGVkJztcbiAgICAgICAgcmV0dXJuIHRoaXMucmFuZ2UgPyB0aGlzLmdldFJhbmdlU2VsZWN0aW9uQ2xhc3MoZGF5KSA6IHRoaXMuZ2V0U2luZ2xlRGF5U2VsZWN0aW9uQ2xhc3MoZGF5KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFNpbmdsZURheVNlbGVjdGlvbkNsYXNzKGRheTogQ2FsZW5kYXJEYXkpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZERheSAmJiBkYXkuZGF5ID09PSB0aGlzLnNlbGVjdGVkRGF5LmRheSAmJlxuICAgICAgICAgICAgZGF5Lm1vbnRoID09PSB0aGlzLnNlbGVjdGVkRGF5Lm1vbnRoICYmIGRheS55ZWFyID09PSB0aGlzLnNlbGVjdGVkRGF5LnllYXIpIHtcbiAgICAgICAgICAgIHJldHVybiAnc2wgc2luZ2xlJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRSYW5nZVNlbGVjdGlvbkNsYXNzKGRheTogQ2FsZW5kYXJEYXkpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRSYW5nZVN0YXJ0KSByZXR1cm4gJ25zbC1zdGFydCc7XG5cbiAgICAgICAgY29uc3QgY3VycmVudCA9IHRvRGF0ZShkYXkpO1xuICAgICAgICBjb25zdCBzdGFydCA9IHRvRGF0ZSh0aGlzLnNlbGVjdGVkUmFuZ2VTdGFydCk7XG5cbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkUmFuZ2VFbmQpIHtcbiAgICAgICAgICAgIGlmIChjdXJyZW50LmdldFRpbWUoKSA9PT0gc3RhcnQuZ2V0VGltZSgpKSByZXR1cm4gJ3NsIHN0YXJ0JztcblxuICAgICAgICAgICAgaWYgKHRoaXMuaG92ZXJlZERheSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGhvdmVyID0gdG9EYXRlKHRoaXMuaG92ZXJlZERheSk7XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnQuZ2V0VGltZSgpID09PSBob3Zlci5nZXRUaW1lKCkgJiYgaG92ZXIgPCBzdGFydCkgcmV0dXJuICduc2wtc3RhcnQnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gJ25zbC1lbmQnO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZW5kID0gdG9EYXRlKHRoaXMuc2VsZWN0ZWRSYW5nZUVuZCk7XG5cbiAgICAgICAgaWYgKGN1cnJlbnQuZ2V0VGltZSgpID09PSBzdGFydC5nZXRUaW1lKCkpIHJldHVybiAnc2wgc3RhcnQnO1xuICAgICAgICBpZiAoY3VycmVudC5nZXRUaW1lKCkgPT09IGVuZC5nZXRUaW1lKCkpIHJldHVybiAnc2wgZW5kJztcbiAgICAgICAgaWYgKGN1cnJlbnQgPiBzdGFydCAmJiBjdXJyZW50IDwgZW5kKSByZXR1cm4gJ3NsIHJhbmdlJztcblxuICAgICAgICByZXR1cm4gJ25zbC1zdGFydCc7XG4gICAgfVxuXG4gICAgcHVibGljIGFwcGx5U2VsZWN0ZWREYXRlKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMucmFuZ2UgJiYgdGhpcy5zZWxlY3RlZERheSkge1xuICAgICAgICAgICAgY29uc3QgZGF0ZSA9IHRvRGF0ZSh0aGlzLnNlbGVjdGVkRGF5KVxuICAgICAgICAgICAgdGhpcy5jYWxlbmRhclJlc3BvbnNlLmVtaXQoZGF0ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5yYW5nZSAmJiB0aGlzLnNlbGVjdGVkUmFuZ2VTdGFydCAmJiB0aGlzLnNlbGVjdGVkUmFuZ2VFbmQpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gdG9EYXRlKHRoaXMuc2VsZWN0ZWRSYW5nZVN0YXJ0KTtcbiAgICAgICAgICAgIGNvbnN0IGVuZCA9dG9EYXRlKHRoaXMuc2VsZWN0ZWRSYW5nZUVuZCk7XG4gICAgICAgICAgICB0aGlzLmNhbGVuZGFyUmVzcG9uc2UuZW1pdChbc3RhcnQsIGVuZF0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNsZWFyU2VsZWN0ZWREYXRlKCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkRGF5ID0gbnVsbDtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJhbmdlRW5kID0gbnVsbDtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJhbmdlU3RhcnQgPSBudWxsO1xuICAgICAgICB0aGlzLmNsZWFyU2VsZWN0aW9uLmVtaXQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25Ib3ZlckRheShkYXk6IENhbGVuZGFyRGF5KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkUmFuZ2VFbmQpIHsgcmV0dXJuOyB9XG4gICAgICAgIHRoaXMuaG92ZXJlZERheSA9IGRheTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xlYXJIb3ZlcigpOiB2b2lkIHsgdGhpcy5ob3ZlcmVkRGF5ID0gbnVsbDsgfVxuXG4gICAgcHVibGljIG9uU2VsZWN0RGF5KGRheTogQ2FsZW5kYXJEYXkpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFkYXkuaW5DdXJyZW50TW9udGgpIHJldHVybjtcblxuICAgICAgICBpZiAoIXRoaXMucmFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXkgPSBkYXk7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50RGF0ZSA9IHRvRGF0ZShkYXkpXG4gICAgICAgICAgICB0aGlzLmNhbGVuZGFyUmVzcG9uc2UuZW1pdChjdXJyZW50RGF0ZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRSYW5nZVN0YXJ0IHx8IHRoaXMuc2VsZWN0ZWRSYW5nZUVuZCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFJhbmdlU3RhcnQgPSBkYXk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkUmFuZ2VFbmQgPSBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWREYXRlID0gdG9EYXRlKGRheSk7XG4gICAgICAgICAgICBjb25zdCBzdGFydERhdGUgPSB0b0RhdGUodGhpcy5zZWxlY3RlZFJhbmdlU3RhcnQpO1xuICAgICAgICAgICAgc2VsZWN0ZWREYXRlID49IHN0YXJ0RGF0ZSA/IHRoaXMuc2VsZWN0ZWRSYW5nZUVuZCA9IGRheSA6IHRoaXMuc2VsZWN0ZWRSYW5nZVN0YXJ0ID0gZGF5O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldE1vbnRoR3JpZCgpOiBDYWxlbmRhckRheVtdW10ge1xuICAgICAgICBsZXQgd2VlazogQ2FsZW5kYXJEYXlbXSA9IFtdO1xuXG4gICAgICAgIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcbiAgICAgICAgY29uc3QgZ3JpZDogQ2FsZW5kYXJEYXlbXVtdID0gW107XG4gICAgICAgIGNvbnN0IGJhc2VEYXRlID0gdGhpcy5jdXJyZW50RGF0ZTtcbiAgICAgICAgY29uc3QgbW9udGggPSBiYXNlRGF0ZS5nZXRNb250aCgpO1xuICAgICAgICBjb25zdCB5ZWFyID0gYmFzZURhdGUuZ2V0RnVsbFllYXIoKTtcblxuICAgICAgICBjb25zdCBmaXJzdERheSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCAxKTtcbiAgICAgICAgY29uc3Qgc3RhcnRXZWVrZGF5ID0gKGZpcnN0RGF5LmdldERheSgpICsgNikgJSA3O1xuICAgICAgICBjb25zdCBkYXlzSW5Nb250aCA9IG5ldyBEYXRlKHllYXIsIG1vbnRoICsgMSwgMCkuZ2V0RGF0ZSgpO1xuICAgICAgICBjb25zdCBkYXlzSW5QcmV2TW9udGggPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMCkuZ2V0RGF0ZSgpO1xuXG4gICAgICAgIC8vIGZpbGwgZGF5cyBmcm9tIHByZXZpb3VzIG1vbnRoXG4gICAgICAgIGZvciAobGV0IGkgPSBzdGFydFdlZWtkYXkgLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgY29uc3QgZGF5ID0gZGF5c0luUHJldk1vbnRoIC0gaTtcbiAgICAgICAgICAgIHdlZWsucHVzaCh7IGRheSwgbW9udGg6IG1vbnRoIC0gMSwgeWVhciwgaXNUb2RheTogZmFsc2UsIGluQ3VycmVudE1vbnRoOiBmYWxzZSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGZpbGwgZGF5cyBmcm9tIGN1cnJlbnQgbW9udGhcbiAgICAgICAgZm9yIChsZXQgZCA9IDE7IGQgPD0gZGF5c0luTW9udGg7IGQrKykge1xuICAgICAgICAgICAgY29uc3QgaXNUb2RheSA9IGQgPT09IHRvZGF5LmdldERhdGUoKSAmJiBtb250aCA9PT0gdG9kYXkuZ2V0TW9udGgoKSAmJiB5ZWFyID09PSB0b2RheS5nZXRGdWxsWWVhcigpO1xuICAgICAgICAgICAgd2Vlay5wdXNoKHsgZGF5OiBkLCBtb250aCwgeWVhciwgaXNUb2RheSwgaW5DdXJyZW50TW9udGg6IHRydWUgfSk7XG5cbiAgICAgICAgICAgIGlmICh3ZWVrLmxlbmd0aCA9PT0gNykgeyBncmlkLnB1c2god2Vlayk7IHdlZWsgPSBbXTsgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gZmlsbCByZW1haW5pbmcgZGF5cyBmcm9tIG5leHQgbW9udGhcbiAgICAgICAgbGV0IG5leHREYXkgPSAxO1xuICAgICAgICB3aGlsZSAod2Vlay5sZW5ndGggPCA3KSB7XG4gICAgICAgICAgICB3ZWVrLnB1c2goeyBkYXk6IG5leHREYXkrKywgbW9udGg6IG1vbnRoICsgMSwgeWVhciwgaXNUb2RheTogZmFsc2UsIGluQ3VycmVudE1vbnRoOiBmYWxzZSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGhhc0N1cnJlbnRNb250aERheSA9IHdlZWsuc29tZShkYXkgPT4gZGF5LmluQ3VycmVudE1vbnRoKTtcbiAgICAgICAgaWYgKGhhc0N1cnJlbnRNb250aERheSkgeyBncmlkLnB1c2god2Vlayk7IH1cblxuICAgICAgICByZXR1cm4gZ3JpZDtcbiAgICB9XG5cbn0iLCI8c2VjdGlvbiBjbGFzcz1cImdyYXZpdHktY2FsZW5kYXItaGVhZGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cInByZXZpb3VzLWJ1dHRvblwiPlxuICAgICAgICA8Z3Jhdml0eS1pY29uICpuZ0lmPVwiIShuYXZUeXBlID09PSAnbmV4dCcpXCIgW3N0eWxlLi0taWNvbi1jb2xvcl09XCIndmFyKC0tdGV4dC1oaWdobGlnaHQtcHJpbWFyeSknXCIgW2ljb25OYW1lXT1cIidhcnJvdy1sZWZ0J1wiXG4gICAgICAgICAgICAgICAgICAgICAgW2ljb25TaXplXT1cIidzbS0xMidcIiAoY2xpY2spPVwiY3VycmVudERhdGUgPSBjaGFuZ2VNb250aCgtMSwgY3VycmVudERhdGUpXCIgPjwvZ3Jhdml0eS1pY29uPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cIm1vbnRoLXllYXItbGFiZWxcIj5cbiAgICAgICAgPGdyYXZpdHktZHJvcGRvd24tbGFiZWwgW2ZvbnRDbGFzc109XCInaHItdGl0bGUgc20tYm9sZCdcIiBbc2l6ZV09XCInc20nXCIgW2xhYmVsXT1cIm1vbnRoc0xpc3RbY3VycmVudERhdGUuZ2V0TW9udGgoKV1cIj48L2dyYXZpdHktZHJvcGRvd24tbGFiZWw+XG4gICAgICAgIDxncmF2aXR5LWRyb3Bkb3duLWxhYmVsIFtmb250Q2xhc3NdPVwiJ2hyLXRpdGxlIHNtLWJvbGQnXCIgW3NpemVdPVwiJ3NtJ1wiIFtsYWJlbF09XCJjdXJyZW50RGF0ZS5nZXRGdWxsWWVhcigpLnRvU3RyaW5nKClcIj48L2dyYXZpdHktZHJvcGRvd24tbGFiZWw+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwibmV4dC1idXR0b25cIj5cbiAgICAgICAgPGdyYXZpdHktaWNvbiAqbmdJZj1cIiEobmF2VHlwZSA9PT0gJ3ByZXYnKVwiIFtzdHlsZS4tLWljb24tY29sb3JdPVwiJ3ZhcigtLXRleHQtaGlnaGxpZ2h0LXByaW1hcnkpJ1wiIFtpY29uTmFtZV09XCInYXJyb3ctcmlnaHQnXCJcbiAgICAgICAgICAgICAgICAgICAgICBbaWNvblNpemVdPVwiJ3NtLTEyJ1wiIChjbGljayk9XCJjdXJyZW50RGF0ZSA9IGNoYW5nZU1vbnRoKDEsIGN1cnJlbnREYXRlKVwiPjwvZ3Jhdml0eS1pY29uPlxuICAgIDwvZGl2PlxuPC9zZWN0aW9uPlxuXG48c2VjdGlvbiBjbGFzcz1cImdyYXZpdHktY2FsZW5kYXItYm9keVwiPlxuICAgIDxzZWN0aW9uIGNsYXNzPVwiZGF5cy1uYW1lLWxpbmVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRheXMtbmFtZVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoci1ib2R5IHNtLXJlZ3VsYXJcIiAqbmdGb3I9XCJsZXQgZGF5IG9mIGRheXNMaXN0XCI+e3tkYXl9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZXBhcmF0b3ItbGluZVwiPjwvZGl2PlxuICAgIDwvc2VjdGlvbj5cblxuICAgIDxzZWN0aW9uIGNsYXNzPVwiZGF5cy1udW1iZXItc2VsZWN0b3JcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRheXMtbnVtYmVyLXRhYmxlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2Vlay1yb3dcIiAqbmdGb3I9XCJsZXQgd2VlayBvZiBnZXRNb250aEdyaWQoKTsgdHJhY2tCeTogdHJhY2tCeVdlZWtcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoci1ib2R5IHNtLXJlZ3VsYXJcIiAqbmdGb3I9XCJsZXQgZGF5IG9mIHdlZWs7IHRyYWNrQnk6IHRyYWNrQnlEYXlcIlxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJkaXNhYmxlZCA/ICdkaXNhYmxlZCcgOiBnZXREYXlTZWxlY3Rpb25DbGFzcyhkYXkpXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIiFkYXkuaW5DdXJyZW50TW9udGhcIiBbY2xhc3MudG9kYXldPVwiZGF5LmlzVG9kYXlcIiBbY2xhc3MucHJldmlld109XCJyYW5nZSA/IGlzUHJldmlldyhkYXkpIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblNlbGVjdERheShkYXkpXCIgKG1vdXNlZW50ZXIpPVwicmFuZ2UgPyBvbkhvdmVyRGF5KGRheSkgOiBudWxsXCIgKG1vdXNlbGVhdmUpPVwicmFuZ2UgPyBjbGVhckhvdmVyKCkgOiBudWxsXCI+XG4gICAgICAgICAgICAgICAge3sgZGF5LmRheSB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbi1zZWN0aW9uXCI+XG4gICAgICAgICAgICA8Z3Jhdml0eS1saW5rICpuZ0lmPVwiYWN0aW9uc1NlY3Rpb25cIiBbbGlua1RleHRdPVwiaTE4bi5jbGVhclwiIFtzdGF0ZV09XCIhaXNEYXRlU2VsZWN0ZWQoKSA/ICdkaXNhYmxlZCcgOiAnYWN0aXZlJ1wiIChjbGljayk9XCJjbGVhclNlbGVjdGVkRGF0ZSgpXCI+PC9ncmF2aXR5LWxpbms+XG4gICAgICAgICAgICA8Z3Jhdml0eS1idXR0b24gKm5nSWY9XCJhY3Rpb25zU2VjdGlvblwiIFtzaXplXT1cIidzbSdcIiBbdHlwZV09XCIndGVydGlhcnknXCIgW2Rpc2FibGVkXT1cIiFpc0RhdGVTZWxlY3RlZCgpXCIgKGNsaWNrKT1cImFwcGx5U2VsZWN0ZWREYXRlKClcIj57e2kxOG4uYXBwbHl9fTwvZ3Jhdml0eS1idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvc2VjdGlvbj5cbjwvc2VjdGlvbj5cbiJdfQ==
@@ -0,0 +1,88 @@
1
+ import { changeYear, getStartDate, toCalendarMonth, toMonth, trackByMonth } from "../../shared/calendar.utils";
2
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
3
+ import { CALENDAR_I18N, MONTHS_EN_SHORT, MONTHS_ES_SHORT } from "../../shared/calendar.constants";
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common";
6
+ import * as i2 from "../../../gravity-button/gravity-button.component";
7
+ import * as i3 from "../../../gravity-icon/gravity-icon.component";
8
+ import * as i4 from "../../../gravity-link/gravity-link.component";
9
+ export class MonthCalendarComponent {
10
+ constructor() {
11
+ this.restart = false;
12
+ this.disabled = false;
13
+ this.language = 'en';
14
+ this.actionsSection = true;
15
+ this.clearSelection = new EventEmitter();
16
+ this.calendarResponse = new EventEmitter();
17
+ this.changeYear = changeYear;
18
+ this.trackByMonth = trackByMonth;
19
+ this.currentDate = new Date();
20
+ }
21
+ get i18n() { return CALENDAR_I18N[this.language]; }
22
+ get monthsList() { return this.language === 'en' ? MONTHS_EN_SHORT : MONTHS_ES_SHORT; }
23
+ ngOnChanges(changes) {
24
+ const shouldRestart = changes['restart'] && this.restart;
25
+ const shouldProcessPreSelected = changes['preSelectedDate'] && this.preSelectedDate;
26
+ if (shouldRestart || shouldProcessPreSelected) {
27
+ this.processPreselectedDate();
28
+ }
29
+ }
30
+ processPreselectedDate() {
31
+ if (this.preSelectedDate instanceof Date) {
32
+ this.currentDate = getStartDate(this.preSelectedDate);
33
+ this.selectedMonth = toCalendarMonth(this.preSelectedDate);
34
+ }
35
+ }
36
+ onSelectMonth(month) {
37
+ this.selectedMonth = month;
38
+ this.currentDate = new Date(month.year, month.month, 1);
39
+ this.calendarResponse.emit(this.currentDate);
40
+ return;
41
+ }
42
+ getMonthSelectionClass(month) {
43
+ if (this.selectedMonth && this.selectedMonth.month === month.month && this.selectedMonth.year === month.year) {
44
+ return 'selected';
45
+ }
46
+ if (new Date().getMonth() === month.month) {
47
+ return 'this-month';
48
+ }
49
+ return '';
50
+ }
51
+ clearSelectedMonth() {
52
+ this.selectedMonth = null;
53
+ this.clearSelection.emit();
54
+ }
55
+ applySelectedMonth() {
56
+ const date = toMonth(this.selectedMonth);
57
+ this.calendarResponse.emit(date);
58
+ }
59
+ getYearMonthsList() {
60
+ const months = [];
61
+ for (let i = 0; i < 12; i++) {
62
+ months.push({ month: i, year: this.currentDate.getFullYear() });
63
+ }
64
+ return months;
65
+ }
66
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MonthCalendarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
67
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MonthCalendarComponent, selector: "month-calendary", inputs: { restart: "restart", disabled: "disabled", language: "language", preSelectedDate: "preSelectedDate", actionsSection: "actionsSection" }, outputs: { clearSelection: "clearSelection", calendarResponse: "response" }, usesOnChanges: true, ngImport: i0, template: "\n<section class=\"gravity-calendar-header\">\n <div class=\"header-container\">\n <div class=\"previous-button\">\n <gravity-icon [style.--icon-color]=\"'var(--text-highlight-primary)'\" [iconName]=\"'arrow-left'\"\n [iconSize]=\"'sm-12'\" (click)=\"currentDate = changeYear(-1, currentDate)\" ></gravity-icon>\n </div>\n\n <div class=\"year-label\">\n <p class=\"'hr-title sm-bold'\"> {{currentDate.getFullYear().toString()}} </p>\n </div>\n\n <div class=\"next-button\">\n <gravity-icon [style.--icon-color]=\"'var(--text-highlight-primary)'\" [iconName]=\"'arrow-right'\"\n [iconSize]=\"'sm-12'\" (click)=\"currentDate = changeYear(1, currentDate)\"></gravity-icon>\n </div>\n </div>\n <div class=\"separator-line\"></div>\n</section>\n\n<section class=\"gravity-calendar-body\">\n <div class=\"months-table\">\n <span class=\"hr-body sm-regular\" *ngFor=\"let month of getYearMonthsList(), trackBy: trackByMonth\"\n [ngClass]=\"disabled ? 'disabled' : getMonthSelectionClass(month)\"\n (click)=\"onSelectMonth(month)\">\n {{ monthsList[month.month] }}\n </span>\n </div>\n\n <div *ngIf=\"actionsSection\" class=\"action-section\" >\n <gravity-link [linkText]=\"i18n.clear\" [state]=\"!selectedMonth ? 'disabled' : 'active'\" (click)=\"clearSelectedMonth()\"></gravity-link>\n <gravity-button [size]=\"'sm'\" [type]=\"'tertiary'\" [disabled]=\"!selectedMonth\" (click)=\"applySelectedMonth()\">{{i18n.apply}}</gravity-button>\n </div>\n</section>", styles: [".gravity-calendar-header{width:215px;height:40px;display:flex;align-self:stretch;align-items:center;flex-direction:column;justify-content:center;gap:var(--gravity-spacing-sm);padding-top:var(--gravity-spacing-xs)}.gravity-calendar-header .header-container{display:flex;align-items:center;align-self:stretch;justify-content:space-between;padding:0 var(--gravity-spacing-xs)}.gravity-calendar-header .header-container .next-button,.gravity-calendar-header .header-container .previous-button{cursor:pointer}.gravity-calendar-header .separator-line{width:215px;border-bottom:2px solid var(--divider-menu-active-primary)}.gravity-calendar-body{width:215px;display:flex;align-items:center;align-self:stretch;flex-direction:column;justify-content:center;gap:var(--gravity-spacing-sm);margin-top:var(--gravity-spacing-sm)}.gravity-calendar-body .months-table{display:flex;flex-wrap:wrap;justify-content:space-between;gap:0 var(--gravity-spacing-sm)}.gravity-calendar-body .months-table span{width:37px;height:25px;display:flex;cursor:pointer;align-items:center;justify-content:center;border-radius:var(--gravity-spacing-xs);border:2px solid var(--bg-calender-primary)}.gravity-calendar-body .months-table span.this-month{border-color:var(--bg-number-calendar-hover-primary)}.gravity-calendar-body .months-table span:not(.disabled):not(.selected):hover{color:var(--on-bg-button-pressed-tertiary);background:var(--bg-button-active-tertiary);border-color:var(--bg-button-active-tertiary)}.gravity-calendar-body .months-table span.selected{color:var(--on-bg-button-pressed-primary);background:var(--bg-button-pressed-primary);border-color:var(--bg-button-pressed-primary)}.gravity-calendar-body .action-section{height:25px;display:flex;align-items:center;align-self:stretch;justify-content:space-between}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.GravityButtonComponent, selector: "gravity-button", inputs: ["cypressTag", "disabled", "customState", "iconPosition", "iconName", "isLoading", "showContent", "size", "type"] }, { kind: "component", type: i3.GravityIconComponent, selector: "gravity-icon", inputs: ["customIconColorVariable", "iconName", "iconSize", "hoverIcon", "size", "isCoin"] }, { kind: "component", type: i4.GravityLinkComponent, selector: "gravity-link", inputs: ["linkText", "fontClass", "link", "cypressTag", "iconName", "target", "iconPosition", "iconSize", "state"] }] }); }
68
+ }
69
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MonthCalendarComponent, decorators: [{
70
+ type: Component,
71
+ args: [{ selector: 'month-calendary', template: "\n<section class=\"gravity-calendar-header\">\n <div class=\"header-container\">\n <div class=\"previous-button\">\n <gravity-icon [style.--icon-color]=\"'var(--text-highlight-primary)'\" [iconName]=\"'arrow-left'\"\n [iconSize]=\"'sm-12'\" (click)=\"currentDate = changeYear(-1, currentDate)\" ></gravity-icon>\n </div>\n\n <div class=\"year-label\">\n <p class=\"'hr-title sm-bold'\"> {{currentDate.getFullYear().toString()}} </p>\n </div>\n\n <div class=\"next-button\">\n <gravity-icon [style.--icon-color]=\"'var(--text-highlight-primary)'\" [iconName]=\"'arrow-right'\"\n [iconSize]=\"'sm-12'\" (click)=\"currentDate = changeYear(1, currentDate)\"></gravity-icon>\n </div>\n </div>\n <div class=\"separator-line\"></div>\n</section>\n\n<section class=\"gravity-calendar-body\">\n <div class=\"months-table\">\n <span class=\"hr-body sm-regular\" *ngFor=\"let month of getYearMonthsList(), trackBy: trackByMonth\"\n [ngClass]=\"disabled ? 'disabled' : getMonthSelectionClass(month)\"\n (click)=\"onSelectMonth(month)\">\n {{ monthsList[month.month] }}\n </span>\n </div>\n\n <div *ngIf=\"actionsSection\" class=\"action-section\" >\n <gravity-link [linkText]=\"i18n.clear\" [state]=\"!selectedMonth ? 'disabled' : 'active'\" (click)=\"clearSelectedMonth()\"></gravity-link>\n <gravity-button [size]=\"'sm'\" [type]=\"'tertiary'\" [disabled]=\"!selectedMonth\" (click)=\"applySelectedMonth()\">{{i18n.apply}}</gravity-button>\n </div>\n</section>", styles: [".gravity-calendar-header{width:215px;height:40px;display:flex;align-self:stretch;align-items:center;flex-direction:column;justify-content:center;gap:var(--gravity-spacing-sm);padding-top:var(--gravity-spacing-xs)}.gravity-calendar-header .header-container{display:flex;align-items:center;align-self:stretch;justify-content:space-between;padding:0 var(--gravity-spacing-xs)}.gravity-calendar-header .header-container .next-button,.gravity-calendar-header .header-container .previous-button{cursor:pointer}.gravity-calendar-header .separator-line{width:215px;border-bottom:2px solid var(--divider-menu-active-primary)}.gravity-calendar-body{width:215px;display:flex;align-items:center;align-self:stretch;flex-direction:column;justify-content:center;gap:var(--gravity-spacing-sm);margin-top:var(--gravity-spacing-sm)}.gravity-calendar-body .months-table{display:flex;flex-wrap:wrap;justify-content:space-between;gap:0 var(--gravity-spacing-sm)}.gravity-calendar-body .months-table span{width:37px;height:25px;display:flex;cursor:pointer;align-items:center;justify-content:center;border-radius:var(--gravity-spacing-xs);border:2px solid var(--bg-calender-primary)}.gravity-calendar-body .months-table span.this-month{border-color:var(--bg-number-calendar-hover-primary)}.gravity-calendar-body .months-table span:not(.disabled):not(.selected):hover{color:var(--on-bg-button-pressed-tertiary);background:var(--bg-button-active-tertiary);border-color:var(--bg-button-active-tertiary)}.gravity-calendar-body .months-table span.selected{color:var(--on-bg-button-pressed-primary);background:var(--bg-button-pressed-primary);border-color:var(--bg-button-pressed-primary)}.gravity-calendar-body .action-section{height:25px;display:flex;align-items:center;align-self:stretch;justify-content:space-between}\n"] }]
72
+ }], propDecorators: { restart: [{
73
+ type: Input
74
+ }], disabled: [{
75
+ type: Input
76
+ }], language: [{
77
+ type: Input
78
+ }], preSelectedDate: [{
79
+ type: Input
80
+ }], actionsSection: [{
81
+ type: Input
82
+ }], clearSelection: [{
83
+ type: Output
84
+ }], calendarResponse: [{
85
+ type: Output,
86
+ args: ['response']
87
+ }] } });
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9udGgtY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3Jhdml0eS1kZXNpZ24tc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9ncmF2aXR5LWNhbGVuZGFyLW5leHQvY29tcG9uZW50cy9tb250aC1jYWxlbmRhcnkvbW9udGgtY2FsZW5kYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3Jhdml0eS1kZXNpZ24tc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9ncmF2aXR5LWNhbGVuZGFyLW5leHQvY29tcG9uZW50cy9tb250aC1jYWxlbmRhcnkvbW9udGgtY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLFVBQVUsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RyxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQUMsYUFBYSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7O0FBUWhHLE1BQU0sT0FBTyxzQkFBc0I7SUFMbkM7UUFPb0IsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUN6QixhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLGFBQVEsR0FBZ0IsSUFBSSxDQUFDO1FBRTdCLG1CQUFjLEdBQVksSUFBSSxDQUFDO1FBRTlCLG1CQUFjLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFDcEQscUJBQWdCLEdBQWdDLElBQUksWUFBWSxFQUFpQixDQUFDO1FBRTFGLGVBQVUsR0FBRyxVQUFVLENBQUM7UUFDeEIsaUJBQVksR0FBRyxZQUFZLENBQUM7UUFH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QixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsZUFBZTtzQkFBOUIsS0FBSztnQkFDVSxjQUFjO3NCQUE3QixLQUFLO2dCQUVXLGNBQWM7c0JBQTlCLE1BQU07Z0JBQ29CLGdCQUFnQjtzQkFBMUMsTUFBTTt1QkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDYWxlbmRhck1vbnRofSBmcm9tIFwiLi4vLi4vc2hhcmVkL2NhbGVuZGFyLm1vZGFsXCI7XG5pbXBvcnQge2NoYW5nZVllYXIsIGdldFN0YXJ0RGF0ZSwgdG9DYWxlbmRhck1vbnRoLCB0b01vbnRoLCB0cmFja0J5TW9udGh9IGZyb20gXCIuLi8uLi9zaGFyZWQvY2FsZW5kYXIudXRpbHNcIjtcbmltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE91dHB1dCwgU2ltcGxlQ2hhbmdlc30gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NBTEVOREFSX0kxOE4sIE1PTlRIU19FTl9TSE9SVCwgTU9OVEhTX0VTX1NIT1JUfSBmcm9tIFwiLi4vLi4vc2hhcmVkL2NhbGVuZGFyLmNvbnN0YW50c1wiO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vbnRoLWNhbGVuZGFyeScsXG4gIHRlbXBsYXRlVXJsOiAnLi9tb250aC1jYWxlbmRhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21vbnRoLWNhbGVuZGFyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTW9udGhDYWxlbmRhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG5cbiAgICBASW5wdXQoKSBwdWJsaWMgcmVzdGFydDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBsYW5ndWFnZTogJ2VzJyB8ICdlbicgPSAnZW4nO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBwcmVTZWxlY3RlZERhdGU6IERhdGUgfCBEYXRlW107XG4gICAgQElucHV0KCkgcHVibGljIGFjdGlvbnNTZWN0aW9uOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBPdXRwdXQoKSBwdWJsaWMgY2xlYXJTZWxlY3Rpb246IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgICBAT3V0cHV0KCdyZXNwb25zZScpIHB1YmxpYyBjYWxlbmRhclJlc3BvbnNlOiBFdmVudEVtaXR0ZXI8RGF0ZVtdIHwgRGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyPERhdGVbXSB8IERhdGU+KCk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2hhbmdlWWVhciA9IGNoYW5nZVllYXI7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHRyYWNrQnlNb250aCA9IHRyYWNrQnlNb250aDtcblxuICAgIHB1YmxpYyBzZWxlY3RlZE1vbnRoOiBDYWxlbmRhck1vbnRoO1xuICAgIHB1YmxpYyBjdXJyZW50RGF0ZTogRGF0ZSA9IG5ldyBEYXRlKCk7XG5cbiAgICBwdWJsaWMgZ2V0IGkxOG4oKSB7IHJldHVybiBDQUxFTkRBUl9JMThOW3RoaXMubGFuZ3VhZ2VdOyB9XG4gICAgcHVibGljIGdldCBtb250aHNMaXN0KCkgeyByZXR1cm4gdGhpcy5sYW5ndWFnZSA9PT0gJ2VuJyA/IE1PTlRIU19FTl9TSE9SVCA6IE1PTlRIU19FU19TSE9SVDsgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBjb25zdCBzaG91bGRSZXN0YXJ0ID0gY2hhbmdlc1sncmVzdGFydCddICYmIHRoaXMucmVzdGFydDtcbiAgICAgICAgY29uc3Qgc2hvdWxkUHJvY2Vzc1ByZVNlbGVjdGVkID0gY2hhbmdlc1sncHJlU2VsZWN0ZWREYXRlJ10gJiYgdGhpcy5wcmVTZWxlY3RlZERhdGU7XG4gICAgICAgIGlmIChzaG91bGRSZXN0YXJ0IHx8IHNob3VsZFByb2Nlc3NQcmVTZWxlY3RlZCkgeyB0aGlzLnByb2Nlc3NQcmVzZWxlY3RlZERhdGUoKTsgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcHJvY2Vzc1ByZXNlbGVjdGVkRGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucHJlU2VsZWN0ZWREYXRlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50RGF0ZSA9IGdldFN0YXJ0RGF0ZSh0aGlzLnByZVNlbGVjdGVkRGF0ZSk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTW9udGggPSB0b0NhbGVuZGFyTW9udGgodGhpcy5wcmVTZWxlY3RlZERhdGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uU2VsZWN0TW9udGgobW9udGg6IENhbGVuZGFyTW9udGgpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE1vbnRoID0gbW9udGg7XG4gICAgICAgIHRoaXMuY3VycmVudERhdGUgPSBuZXcgRGF0ZShtb250aC55ZWFyLCBtb250aC5tb250aCwgMSk7XG4gICAgICAgIHRoaXMuY2FsZW5kYXJSZXNwb25zZS5lbWl0KHRoaXMuY3VycmVudERhdGUpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcHVibGljIGdldE1vbnRoU2VsZWN0aW9uQ2xhc3MobW9udGg6IENhbGVuZGFyTW9udGgpOiBzdHJpbmcge1xuXG4gICAgICAgaWYodGhpcy5zZWxlY3RlZE1vbnRoICYmIHRoaXMuc2VsZWN0ZWRNb250aC5tb250aCA9PT0gbW9udGgubW9udGggJiYgdGhpcy5zZWxlY3RlZE1vbnRoLnllYXIgPT09IG1vbnRoLnllYXIpIHtcbiAgICAgICAgICAgcmV0dXJuICdzZWxlY3RlZCdcbiAgICAgICB9XG5cbiAgICAgICBpZihuZXcgRGF0ZSgpLmdldE1vbnRoKCkgPT09IG1vbnRoLm1vbnRoKSB7XG4gICAgICAgICAgIHJldHVybiAndGhpcy1tb250aCdcbiAgICAgICB9XG5cbiAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgcHVibGljIGNsZWFyU2VsZWN0ZWRNb250aCgpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE1vbnRoID0gbnVsbDtcbiAgICAgICAgdGhpcy5jbGVhclNlbGVjdGlvbi5lbWl0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFwcGx5U2VsZWN0ZWRNb250aCgpIHtcbiAgICAgICAgY29uc3QgZGF0ZSA9IHRvTW9udGgodGhpcy5zZWxlY3RlZE1vbnRoKVxuICAgICAgICB0aGlzLmNhbGVuZGFyUmVzcG9uc2UuZW1pdChkYXRlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0WWVhck1vbnRoc0xpc3QoKTogQ2FsZW5kYXJNb250aFtdIHtcbiAgICAgICAgY29uc3QgbW9udGhzOiBDYWxlbmRhck1vbnRoW10gPSBbXTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEyOyBpKyspIHtcbiAgICAgICAgICAgIG1vbnRocy5wdXNoKHttb250aDogaSwgeWVhcjogdGhpcy5jdXJyZW50RGF0ZS5nZXRGdWxsWWVhcigpfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbW9udGhzO1xuICAgIH1cblxufVxuIiwiXG48c2VjdGlvbiBjbGFzcz1cImdyYXZpdHktY2FsZW5kYXItaGVhZGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImhlYWRlci1jb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInByZXZpb3VzLWJ1dHRvblwiPlxuICAgICAgICAgICAgPGdyYXZpdHktaWNvbiBbc3R5bGUuLS1pY29uLWNvbG9yXT1cIid2YXIoLS10ZXh0LWhpZ2hsaWdodC1wcmltYXJ5KSdcIiBbaWNvbk5hbWVdPVwiJ2Fycm93LWxlZnQnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25TaXplXT1cIidzbS0xMidcIiAoY2xpY2spPVwiY3VycmVudERhdGUgPSBjaGFuZ2VZZWFyKC0xLCBjdXJyZW50RGF0ZSlcIiA+PC9ncmF2aXR5LWljb24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ5ZWFyLWxhYmVsXCI+XG4gICAgICAgICAgICA8cCBjbGFzcz1cIidoci10aXRsZSBzbS1ib2xkJ1wiPiB7e2N1cnJlbnREYXRlLmdldEZ1bGxZZWFyKCkudG9TdHJpbmcoKX19IDwvcD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm5leHQtYnV0dG9uXCI+XG4gICAgICAgICAgICA8Z3Jhdml0eS1pY29uIFtzdHlsZS4tLWljb24tY29sb3JdPVwiJ3ZhcigtLXRleHQtaGlnaGxpZ2h0LXByaW1hcnkpJ1wiIFtpY29uTmFtZV09XCInYXJyb3ctcmlnaHQnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25TaXplXT1cIidzbS0xMidcIiAoY2xpY2spPVwiY3VycmVudERhdGUgPSBjaGFuZ2VZZWFyKDEsIGN1cnJlbnREYXRlKVwiPjwvZ3Jhdml0eS1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic2VwYXJhdG9yLWxpbmVcIj48L2Rpdj5cbjwvc2VjdGlvbj5cblxuPHNlY3Rpb24gY2xhc3M9XCJncmF2aXR5LWNhbGVuZGFyLWJvZHlcIj5cbiAgICA8ZGl2IGNsYXNzPVwibW9udGhzLXRhYmxlXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJoci1ib2R5IHNtLXJlZ3VsYXJcIiAqbmdGb3I9XCJsZXQgbW9udGggb2YgZ2V0WWVhck1vbnRoc0xpc3QoKSwgdHJhY2tCeTogdHJhY2tCeU1vbnRoXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJkaXNhYmxlZCA/ICdkaXNhYmxlZCcgOiBnZXRNb250aFNlbGVjdGlvbkNsYXNzKG1vbnRoKVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0TW9udGgobW9udGgpXCI+XG4gICAgICAgICAgICB7eyBtb250aHNMaXN0W21vbnRoLm1vbnRoXSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nSWY9XCJhY3Rpb25zU2VjdGlvblwiIGNsYXNzPVwiYWN0aW9uLXNlY3Rpb25cIiA+XG4gICAgICAgIDxncmF2aXR5LWxpbmsgW2xpbmtUZXh0XT1cImkxOG4uY2xlYXJcIiBbc3RhdGVdPVwiIXNlbGVjdGVkTW9udGggPyAnZGlzYWJsZWQnIDogJ2FjdGl2ZSdcIiAoY2xpY2spPVwiY2xlYXJTZWxlY3RlZE1vbnRoKClcIj48L2dyYXZpdHktbGluaz5cbiAgICAgICAgPGdyYXZpdHktYnV0dG9uIFtzaXplXT1cIidzbSdcIiBbdHlwZV09XCIndGVydGlhcnknXCIgW2Rpc2FibGVkXT1cIiFzZWxlY3RlZE1vbnRoXCIgKGNsaWNrKT1cImFwcGx5U2VsZWN0ZWRNb250aCgpXCI+e3tpMThuLmFwcGx5fX08L2dyYXZpdHktYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9zZWN0aW9uPiJdfQ==
@@ -0,0 +1,96 @@
1
+ import { CALENDAR_I18N } from "../../shared/calendar.constants";
2
+ import { getStartDate, trackByYear } from "../../shared/calendar.utils";
3
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common";
6
+ import * as i2 from "../../../gravity-button/gravity-button.component";
7
+ import * as i3 from "../../../gravity-icon/gravity-icon.component";
8
+ import * as i4 from "../../../gravity-link/gravity-link.component";
9
+ export class YearCalendarComponent {
10
+ constructor() {
11
+ this.restart = false;
12
+ this.disabled = false;
13
+ this.language = 'en';
14
+ this.actionsSection = true;
15
+ this.clearSelection = new EventEmitter();
16
+ this.calendarResponse = new EventEmitter();
17
+ this.startYear = new Date().getFullYear();
18
+ this.currentDate = new Date();
19
+ this.trackByYear = trackByYear;
20
+ }
21
+ get i18n() { return CALENDAR_I18N[this.language]; }
22
+ ngOnInit() {
23
+ if (!this.preSelectedDate) {
24
+ this.setYearsBlock(new Date().getFullYear());
25
+ }
26
+ }
27
+ ngOnChanges(changes) {
28
+ const shouldRestart = changes['restart'] && this.restart;
29
+ const shouldProcessPreSelected = changes['preSelectedDate'] && this.preSelectedDate;
30
+ if (shouldRestart || shouldProcessPreSelected) {
31
+ this.processPreselectedDate();
32
+ }
33
+ }
34
+ processPreselectedDate() {
35
+ if (this.preSelectedDate instanceof Date) {
36
+ this.currentDate = getStartDate(this.preSelectedDate);
37
+ this.selectedYear = this.preSelectedDate.getFullYear();
38
+ this.setYearsBlock(this.selectedYear);
39
+ }
40
+ }
41
+ setYearsBlock(year) {
42
+ const offset = year % 12;
43
+ this.startYear = year - offset;
44
+ }
45
+ onSelectYear(year) {
46
+ this.selectedYear = year;
47
+ this.currentDate = new Date(year, 0, 1);
48
+ this.calendarResponse.emit(this.currentDate);
49
+ }
50
+ getYearSelectionClass(year) {
51
+ if (this.selectedYear && this.selectedYear === year) {
52
+ return 'selected';
53
+ }
54
+ if (new Date().getFullYear() === year) {
55
+ return 'this-year';
56
+ }
57
+ return '';
58
+ }
59
+ clearSelectedYear() {
60
+ this.selectedYear = null;
61
+ this.clearSelection.emit();
62
+ }
63
+ applySelectedYear() {
64
+ const date = new Date(this.selectedYear, 0, 1);
65
+ this.calendarResponse.emit(date);
66
+ }
67
+ getYearList() {
68
+ const years = [];
69
+ for (let i = 0; i < 12; i++) {
70
+ years.push(this.startYear + i);
71
+ }
72
+ return years;
73
+ }
74
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: YearCalendarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
75
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: YearCalendarComponent, selector: "year-calendar", inputs: { restart: "restart", disabled: "disabled", language: "language", preSelectedDate: "preSelectedDate", actionsSection: "actionsSection" }, outputs: { clearSelection: "clearSelection", calendarResponse: "response" }, usesOnChanges: true, ngImport: i0, template: "\n<section class=\"gravity-calendar-header\">\n <div class=\"header-container\">\n <div class=\"previous-button\">\n <gravity-icon [style.--icon-color]=\"'var(--text-highlight-primary)'\" [iconName]=\"'arrow-left'\"\n [iconSize]=\"'sm-12'\" (click)=\"startYear = startYear - 12\"></gravity-icon>\n </div>\n\n <div class=\"year-label\"> <p class=\"'hr-title sm-bold'\"> {{startYear}} - {{startYear + 11}} </p> </div>\n\n <div class=\"next-button\">\n <gravity-icon [style.--icon-color]=\"'var(--text-highlight-primary)'\" [iconName]=\"'arrow-right'\"\n [iconSize]=\"'sm-12'\" (click)=\"startYear = startYear + 12\"></gravity-icon>\n </div>\n </div>\n <div class=\"separator-line\"></div>\n</section>\n\n<section class=\"gravity-calendar-body\">\n <div class=\"months-table\">\n <span class=\"hr-body sm-regular\" *ngFor=\"let year of getYearList(), trackBy: trackByYear\"\n [ngClass]=\"disabled ? 'disabled' : getYearSelectionClass(year)\"\n (click)=\"onSelectYear(year)\">\n {{ year }}\n </span>\n </div>\n\n <div *ngIf=\"actionsSection\" class=\"action-section\">\n <gravity-link [linkText]=\"i18n.clear\" [state]=\"!selectedYear ? 'disabled' : 'active'\" (click)=\"clearSelectedYear()\"></gravity-link>\n <gravity-button [size]=\"'sm'\" [type]=\"'tertiary'\" [disabled]=\"!selectedYear\" (click)=\"applySelectedYear()\">{{i18n.apply}}</gravity-button>\n </div>\n</section>\n", styles: [".gravity-calendar-header{width:215px;height:40px;display:flex;align-self:stretch;align-items:center;flex-direction:column;justify-content:center;gap:var(--gravity-spacing-sm);padding-top:var(--gravity-spacing-xs)}.gravity-calendar-header .header-container{display:flex;align-items:center;align-self:stretch;justify-content:space-between;padding:0 var(--gravity-spacing-xs)}.gravity-calendar-header .header-container .next-button,.gravity-calendar-header .header-container .previous-button{cursor:pointer}.gravity-calendar-header .separator-line{width:215px;border-bottom:2px solid var(--divider-menu-active-primary)}.gravity-calendar-body{width:215px;display:flex;align-items:center;align-self:stretch;flex-direction:column;justify-content:center;gap:var(--gravity-spacing-sm);margin-top:var(--gravity-spacing-sm)}.gravity-calendar-body .months-table{display:flex;flex-wrap:wrap;justify-content:space-between;gap:0 var(--gravity-spacing-sm)}.gravity-calendar-body .months-table span{width:37px;height:25px;display:flex;cursor:pointer;align-items:center;justify-content:center;border-radius:var(--gravity-spacing-xs);border:2px solid var(--bg-calender-primary)}.gravity-calendar-body .months-table span.this-year{border-color:var(--bg-number-calendar-hover-primary)}.gravity-calendar-body .months-table span:not(.disabled):hover{color:var(--on-bg-button-pressed-tertiary);background:var(--bg-button-active-tertiary);border-color:var(--bg-button-active-tertiary)}.gravity-calendar-body .months-table span.selected{color:var(--on-bg-button-pressed-primary);background:var(--bg-button-pressed-primary);border-color:var(--bg-button-pressed-primary)}.gravity-calendar-body .action-section{height:25px;display:flex;align-items:center;align-self:stretch;justify-content:space-between}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.GravityButtonComponent, selector: "gravity-button", inputs: ["cypressTag", "disabled", "customState", "iconPosition", "iconName", "isLoading", "showContent", "size", "type"] }, { kind: "component", type: i3.GravityIconComponent, selector: "gravity-icon", inputs: ["customIconColorVariable", "iconName", "iconSize", "hoverIcon", "size", "isCoin"] }, { kind: "component", type: i4.GravityLinkComponent, selector: "gravity-link", inputs: ["linkText", "fontClass", "link", "cypressTag", "iconName", "target", "iconPosition", "iconSize", "state"] }] }); }
76
+ }
77
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: YearCalendarComponent, decorators: [{
78
+ type: Component,
79
+ args: [{ selector: 'year-calendar', template: "\n<section class=\"gravity-calendar-header\">\n <div class=\"header-container\">\n <div class=\"previous-button\">\n <gravity-icon [style.--icon-color]=\"'var(--text-highlight-primary)'\" [iconName]=\"'arrow-left'\"\n [iconSize]=\"'sm-12'\" (click)=\"startYear = startYear - 12\"></gravity-icon>\n </div>\n\n <div class=\"year-label\"> <p class=\"'hr-title sm-bold'\"> {{startYear}} - {{startYear + 11}} </p> </div>\n\n <div class=\"next-button\">\n <gravity-icon [style.--icon-color]=\"'var(--text-highlight-primary)'\" [iconName]=\"'arrow-right'\"\n [iconSize]=\"'sm-12'\" (click)=\"startYear = startYear + 12\"></gravity-icon>\n </div>\n </div>\n <div class=\"separator-line\"></div>\n</section>\n\n<section class=\"gravity-calendar-body\">\n <div class=\"months-table\">\n <span class=\"hr-body sm-regular\" *ngFor=\"let year of getYearList(), trackBy: trackByYear\"\n [ngClass]=\"disabled ? 'disabled' : getYearSelectionClass(year)\"\n (click)=\"onSelectYear(year)\">\n {{ year }}\n </span>\n </div>\n\n <div *ngIf=\"actionsSection\" class=\"action-section\">\n <gravity-link [linkText]=\"i18n.clear\" [state]=\"!selectedYear ? 'disabled' : 'active'\" (click)=\"clearSelectedYear()\"></gravity-link>\n <gravity-button [size]=\"'sm'\" [type]=\"'tertiary'\" [disabled]=\"!selectedYear\" (click)=\"applySelectedYear()\">{{i18n.apply}}</gravity-button>\n </div>\n</section>\n", styles: [".gravity-calendar-header{width:215px;height:40px;display:flex;align-self:stretch;align-items:center;flex-direction:column;justify-content:center;gap:var(--gravity-spacing-sm);padding-top:var(--gravity-spacing-xs)}.gravity-calendar-header .header-container{display:flex;align-items:center;align-self:stretch;justify-content:space-between;padding:0 var(--gravity-spacing-xs)}.gravity-calendar-header .header-container .next-button,.gravity-calendar-header .header-container .previous-button{cursor:pointer}.gravity-calendar-header .separator-line{width:215px;border-bottom:2px solid var(--divider-menu-active-primary)}.gravity-calendar-body{width:215px;display:flex;align-items:center;align-self:stretch;flex-direction:column;justify-content:center;gap:var(--gravity-spacing-sm);margin-top:var(--gravity-spacing-sm)}.gravity-calendar-body .months-table{display:flex;flex-wrap:wrap;justify-content:space-between;gap:0 var(--gravity-spacing-sm)}.gravity-calendar-body .months-table span{width:37px;height:25px;display:flex;cursor:pointer;align-items:center;justify-content:center;border-radius:var(--gravity-spacing-xs);border:2px solid var(--bg-calender-primary)}.gravity-calendar-body .months-table span.this-year{border-color:var(--bg-number-calendar-hover-primary)}.gravity-calendar-body .months-table span:not(.disabled):hover{color:var(--on-bg-button-pressed-tertiary);background:var(--bg-button-active-tertiary);border-color:var(--bg-button-active-tertiary)}.gravity-calendar-body .months-table span.selected{color:var(--on-bg-button-pressed-primary);background:var(--bg-button-pressed-primary);border-color:var(--bg-button-pressed-primary)}.gravity-calendar-body .action-section{height:25px;display:flex;align-items:center;align-self:stretch;justify-content:space-between}\n"] }]
80
+ }], propDecorators: { restart: [{
81
+ type: Input
82
+ }], disabled: [{
83
+ type: Input
84
+ }], language: [{
85
+ type: Input
86
+ }], preSelectedDate: [{
87
+ type: Input
88
+ }], actionsSection: [{
89
+ type: Input
90
+ }], clearSelection: [{
91
+ type: Output
92
+ }], calendarResponse: [{
93
+ type: Output,
94
+ args: ['response']
95
+ }] } });
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWVhci1jYWxlbmRhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncmF2aXR5LWRlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2dyYXZpdHktY2FsZW5kYXItbmV4dC9jb21wb25lbnRzL3llYXItY2FsZW5kYXIveWVhci1jYWxlbmRhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncmF2aXR5LWRlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2dyYXZpdHktY2FsZW5kYXItbmV4dC9jb21wb25lbnRzL3llYXItY2FsZW5kYXIveWVhci1jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUFDLFlBQVksRUFBRSxXQUFXLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFnQixNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBT3BGLE1BQU0sT0FBTyxxQkFBcUI7SUFMbEM7UUFNa0IsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUN6QixhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLGFBQVEsR0FBZ0IsSUFBSSxDQUFDO1FBRTdCLG1CQUFjLEdBQVksSUFBSSxDQUFDO1FBRTlCLG1CQUFjLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFDcEQscUJBQWdCLEdBQWdDLElBQUksWUFBWSxFQUFpQixDQUFDO1FBRXRHLGNBQVMsR0FBVyxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRTdDLGdCQUFXLEdBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQW9FbkIsZ0JBQVcsR0FBRyxXQUFXLENB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QUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxlQUFlO3NCQUE5QixLQUFLO2dCQUNVLGNBQWM7c0JBQTdCLEtBQUs7Z0JBRVcsY0FBYztzQkFBOUIsTUFBTTtnQkFDb0IsZ0JBQWdCO3NCQUExQyxNQUFNO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NBTEVOREFSX0kxOE59IGZyb20gXCIuLi8uLi9zaGFyZWQvY2FsZW5kYXIuY29uc3RhbnRzXCI7XG5pbXBvcnQge2dldFN0YXJ0RGF0ZSwgdHJhY2tCeVllYXJ9IGZyb20gXCIuLi8uLi9zaGFyZWQvY2FsZW5kYXIudXRpbHNcIjtcbmltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXN9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd5ZWFyLWNhbGVuZGFyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3llYXItY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi95ZWFyLWNhbGVuZGFyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgWWVhckNhbGVuZGFyQ29tcG9uZW50IHtcbiAgQElucHV0KCkgcHVibGljIHJlc3RhcnQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBsYW5ndWFnZTogJ2VzJyB8ICdlbicgPSAnZW4nO1xuICBASW5wdXQoKSBwdWJsaWMgcHJlU2VsZWN0ZWREYXRlOiBEYXRlIHwgRGF0ZVtdO1xuICBASW5wdXQoKSBwdWJsaWMgYWN0aW9uc1NlY3Rpb246IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBPdXRwdXQoKSBwdWJsaWMgY2xlYXJTZWxlY3Rpb246IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgncmVzcG9uc2UnKSBwdWJsaWMgY2FsZW5kYXJSZXNwb25zZTogRXZlbnRFbWl0dGVyPERhdGVbXSB8IERhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlW10gfCBEYXRlPigpO1xuXG4gIHB1YmxpYyBzdGFydFllYXI6IG51bWJlciA9IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKTtcbiAgcHVibGljIHNlbGVjdGVkWWVhcjogbnVtYmVyO1xuICBwdWJsaWMgY3VycmVudERhdGU6IERhdGUgPSBuZXcgRGF0ZSgpO1xuXG4gIHB1YmxpYyBnZXQgaTE4bigpIHtyZXR1cm4gQ0FMRU5EQVJfSTE4Tlt0aGlzLmxhbmd1YWdlXTt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnByZVNlbGVjdGVkRGF0ZSkge1xuICAgICAgdGhpcy5zZXRZZWFyc0Jsb2NrKG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGNvbnN0IHNob3VsZFJlc3RhcnQgPSBjaGFuZ2VzWydyZXN0YXJ0J10gJiYgdGhpcy5yZXN0YXJ0O1xuICAgIGNvbnN0IHNob3VsZFByb2Nlc3NQcmVTZWxlY3RlZCA9IGNoYW5nZXNbJ3ByZVNlbGVjdGVkRGF0ZSddICYmIHRoaXMucHJlU2VsZWN0ZWREYXRlO1xuICAgIGlmIChzaG91bGRSZXN0YXJ0IHx8IHNob3VsZFByb2Nlc3NQcmVTZWxlY3RlZCkgeyB0aGlzLnByb2Nlc3NQcmVzZWxlY3RlZERhdGUoKTsgfVxuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzUHJlc2VsZWN0ZWREYXRlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByZVNlbGVjdGVkRGF0ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIHRoaXMuY3VycmVudERhdGUgPSBnZXRTdGFydERhdGUodGhpcy5wcmVTZWxlY3RlZERhdGUpO1xuICAgICAgdGhpcy5zZWxlY3RlZFllYXIgPSB0aGlzLnByZVNlbGVjdGVkRGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgdGhpcy5zZXRZZWFyc0Jsb2NrKHRoaXMuc2VsZWN0ZWRZZWFyKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRZZWFyc0Jsb2NrKHllYXI6IG51bWJlcikge1xuICAgIGNvbnN0IG9mZnNldCA9IHllYXIgJSAxMjtcbiAgICB0aGlzLnN0YXJ0WWVhciA9IHllYXIgLSBvZmZzZXQ7XG4gIH1cblxuICBwdWJsaWMgb25TZWxlY3RZZWFyKHllYXI6IG51bWJlcikge1xuICAgIHRoaXMuc2VsZWN0ZWRZZWFyID0geWVhcjtcbiAgICB0aGlzLmN1cnJlbnREYXRlID0gbmV3IERhdGUoeWVhciwgMCwgMSk7XG4gICAgdGhpcy5jYWxlbmRhclJlc3BvbnNlLmVtaXQodGhpcy5jdXJyZW50RGF0ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0WWVhclNlbGVjdGlvbkNsYXNzKHllYXI6IG51bWJlcik6IHN0cmluZyB7XG5cbiAgICBpZih0aGlzLnNlbGVjdGVkWWVhciAmJiB0aGlzLnNlbGVjdGVkWWVhciA9PT0geWVhcikge1xuICAgICAgcmV0dXJuICdzZWxlY3RlZCdcbiAgICB9XG5cbiAgICBpZihuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkgPT09IHllYXIpIHtcbiAgICAgIHJldHVybiAndGhpcy15ZWFyJ1xuICAgIH1cblxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIHB1YmxpYyBjbGVhclNlbGVjdGVkWWVhcigpIHtcbiAgICB0aGlzLnNlbGVjdGVkWWVhciA9IG51bGw7XG4gICAgdGhpcy5jbGVhclNlbGVjdGlvbi5lbWl0KCk7XG4gIH1cblxuICBwdWJsaWMgYXBwbHlTZWxlY3RlZFllYXIoKSB7XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHRoaXMuc2VsZWN0ZWRZZWFyLCAwICwgMSk7XG4gICAgdGhpcy5jYWxlbmRhclJlc3BvbnNlLmVtaXQoZGF0ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0WWVhckxpc3QoKTogbnVtYmVyW10ge1xuICAgIGNvbnN0IHllYXJzOiBudW1iZXJbXSA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMjsgaSsrKSB7XG4gICAgICB5ZWFycy5wdXNoKHRoaXMuc3RhcnRZZWFyICsgaSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHllYXJzO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRyYWNrQnlZZWFyID0gdHJhY2tCeVllYXI7XG59XG4iLCJcbjxzZWN0aW9uIGNsYXNzPVwiZ3Jhdml0eS1jYWxlbmRhci1oZWFkZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJldmlvdXMtYnV0dG9uXCI+XG4gICAgICAgICAgICA8Z3Jhdml0eS1pY29uIFtzdHlsZS4tLWljb24tY29sb3JdPVwiJ3ZhcigtLXRleHQtaGlnaGxpZ2h0LXByaW1hcnkpJ1wiIFtpY29uTmFtZV09XCInYXJyb3ctbGVmdCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvblNpemVdPVwiJ3NtLTEyJ1wiIChjbGljayk9XCJzdGFydFllYXIgPSBzdGFydFllYXIgLSAxMlwiPjwvZ3Jhdml0eS1pY29uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwieWVhci1sYWJlbFwiPiA8cCBjbGFzcz1cIidoci10aXRsZSBzbS1ib2xkJ1wiPiB7e3N0YXJ0WWVhcn19IC0ge3tzdGFydFllYXIgKyAxMX19IDwvcD4gPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm5leHQtYnV0dG9uXCI+XG4gICAgICAgICAgICA8Z3Jhdml0eS1pY29uIFtzdHlsZS4tLWljb24tY29sb3JdPVwiJ3ZhcigtLXRleHQtaGlnaGxpZ2h0LXByaW1hcnkpJ1wiIFtpY29uTmFtZV09XCInYXJyb3ctcmlnaHQnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25TaXplXT1cIidzbS0xMidcIiAoY2xpY2spPVwic3RhcnRZZWFyID0gc3RhcnRZZWFyICsgMTJcIj48L2dyYXZpdHktaWNvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInNlcGFyYXRvci1saW5lXCI+PC9kaXY+XG48L3NlY3Rpb24+XG5cbjxzZWN0aW9uIGNsYXNzPVwiZ3Jhdml0eS1jYWxlbmRhci1ib2R5XCI+XG4gICAgPGRpdiBjbGFzcz1cIm1vbnRocy10YWJsZVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaHItYm9keSBzbS1yZWd1bGFyXCIgKm5nRm9yPVwibGV0IHllYXIgb2YgZ2V0WWVhckxpc3QoKSwgdHJhY2tCeTogdHJhY2tCeVllYXJcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImRpc2FibGVkID8gJ2Rpc2FibGVkJyA6IGdldFllYXJTZWxlY3Rpb25DbGFzcyh5ZWFyKVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0WWVhcih5ZWFyKVwiPlxuICAgICAgICAgICAge3sgeWVhciB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nSWY9XCJhY3Rpb25zU2VjdGlvblwiIGNsYXNzPVwiYWN0aW9uLXNlY3Rpb25cIj5cbiAgICAgICAgPGdyYXZpdHktbGluayBbbGlua1RleHRdPVwiaTE4bi5jbGVhclwiIFtzdGF0ZV09XCIhc2VsZWN0ZWRZZWFyID8gJ2Rpc2FibGVkJyA6ICdhY3RpdmUnXCIgKGNsaWNrKT1cImNsZWFyU2VsZWN0ZWRZZWFyKClcIj48L2dyYXZpdHktbGluaz5cbiAgICAgICAgPGdyYXZpdHktYnV0dG9uIFtzaXplXT1cIidzbSdcIiBbdHlwZV09XCIndGVydGlhcnknXCIgW2Rpc2FibGVkXT1cIiFzZWxlY3RlZFllYXJcIiAoY2xpY2spPVwiYXBwbHlTZWxlY3RlZFllYXIoKVwiPnt7aTE4bi5hcHBseX19PC9ncmF2aXR5LWJ1dHRvbj5cbiAgICA8L2Rpdj5cbjwvc2VjdGlvbj5cbiJdfQ==