@gipisistemas/ng-core 1.1.10 → 1.1.12
Sign up to get free protection for your applications and to get access to all the features.
- package/assets/styles/colors.scss +228 -211
- package/assets/styles/styles.scss +50 -5
- package/bundles/gipisistemas-ng-core.umd.js +3497 -146
- package/bundles/gipisistemas-ng-core.umd.js.map +1 -1
- package/bundles/gipisistemas-ng-core.umd.min.js +9 -9
- package/bundles/gipisistemas-ng-core.umd.min.js.map +1 -1
- package/core/gipi-components/components/abstract-crud.component.d.ts +2 -2
- package/core/gipi-components/components/abstract-find.component.d.ts +5 -4
- package/core/gipi-components/components/abstract.component.d.ts +1 -0
- package/esm2015/core/components/abstract-find.component.js +4 -1
- package/esm2015/core/gipi-components/components/abstract-crud.component.js +5 -5
- package/esm2015/core/gipi-components/components/abstract-find.component.js +45 -21
- package/esm2015/core/gipi-components/components/abstract.component.js +5 -2
- package/esm2015/gipi-components.js +19 -6
- package/esm2015/gipisistemas-ng-core.js +3 -1
- package/esm2015/shared/gipi-components/datepicker/date-range-picker/date-range-picker.component.js +1 -1
- package/esm2015/shared/gipi-components/datepicker/datepicker/datepicker.component.js +3 -3
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/calendar-body.js +1 -1
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/date-range-input.js +1 -1
- package/esm2015/shared/gipi-components/datetime-picker/datetime-picker/datetime-picker.component.js +158 -0
- package/esm2015/shared/gipi-components/datetime-picker/datetime-picker.module.js +82 -0
- package/esm2015/shared/gipi-components/datetime-picker/mat-datetime-picker/calendar-body.js +116 -0
- package/esm2015/shared/gipi-components/datetime-picker/mat-datetime-picker/calendar.js +676 -0
- package/esm2015/shared/gipi-components/datetime-picker/mat-datetime-picker/clock.js +306 -0
- package/esm2015/shared/gipi-components/datetime-picker/mat-datetime-picker/datetimepicker-animations.js +30 -0
- package/esm2015/shared/gipi-components/datetime-picker/mat-datetime-picker/datetimepicker-errors.js +7 -0
- package/esm2015/shared/gipi-components/datetime-picker/mat-datetime-picker/datetimepicker-filtertype.js +7 -0
- package/esm2015/shared/gipi-components/datetime-picker/mat-datetime-picker/datetimepicker-input.js +346 -0
- package/esm2015/shared/gipi-components/datetime-picker/mat-datetime-picker/datetimepicker-toggle.js +83 -0
- package/esm2015/shared/gipi-components/datetime-picker/mat-datetime-picker/datetimepicker-type.js +1 -0
- package/esm2015/shared/gipi-components/datetime-picker/mat-datetime-picker/datetimepicker.js +451 -0
- package/esm2015/shared/gipi-components/datetime-picker/mat-datetime-picker/month-view.js +151 -0
- package/esm2015/shared/gipi-components/datetime-picker/mat-datetime-picker/multi-year-view.js +230 -0
- package/esm2015/shared/gipi-components/datetime-picker/mat-datetime-picker/shared/adapter/adapter.module.js +43 -0
- package/esm2015/shared/gipi-components/datetime-picker/mat-datetime-picker/shared/adapter/datetime-adapter.js +139 -0
- package/esm2015/shared/gipi-components/datetime-picker/mat-datetime-picker/shared/adapter/datetime-formats.js +3 -0
- package/esm2015/shared/gipi-components/datetime-picker/mat-datetime-picker/shared/adapter/native-datetime-adapter.js +138 -0
- package/esm2015/shared/gipi-components/datetime-picker/mat-datetime-picker/shared/adapter/native-datetime-formats.js +20 -0
- package/esm2015/shared/gipi-components/datetime-picker/mat-datetime-picker/year-view.js +141 -0
- package/esm2015/shared/gipi-components/dropdown-menu/dropdown-menu.component.js +1 -1
- package/esm2015/shared/gipi-components/form-field/form-field.component.js +1 -1
- package/esm2015/shared/gipi-components/input-currency/input-currency.component.js +1 -1
- package/esm2015/shared/gipi-components/input-monthpicker/input-monthpicker.component.js +1 -1
- package/esm2015/shared/gipi-components/input-select/input-select.component.js +1 -1
- package/esm2015/shared/gipi-components/month-year-picker/month-year-picker.component.js +1 -1
- package/esm2015/shared/gipi-components/radio-group/radio-group.component.js +1 -1
- package/esm2015/shared/gipi-components/range-page/range-page.component.js +1 -1
- package/esm2015/shared/gipi-components/range-slider/range-slider.component.js +1 -1
- package/esm2015/shared/gipi-components/select-button/select-button.component.js +1 -1
- package/esm2015/shared/gipi-components/textarea/textarea.component.js +1 -1
- package/esm2015/shared/shared.module.js +51 -3
- package/esm5/core/components/abstract-find.component.js +4 -1
- package/esm5/core/gipi-components/components/abstract-crud.component.js +5 -5
- package/esm5/core/gipi-components/components/abstract-find.component.js +45 -21
- package/esm5/core/gipi-components/components/abstract.component.js +5 -2
- package/esm5/gipi-components.js +19 -6
- package/esm5/gipisistemas-ng-core.js +3 -1
- package/esm5/shared/gipi-components/datepicker/date-range-picker/date-range-picker.component.js +1 -1
- package/esm5/shared/gipi-components/datepicker/datepicker/datepicker.component.js +3 -3
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/calendar-body.js +1 -1
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/date-range-input.js +1 -1
- package/esm5/shared/gipi-components/datetime-picker/datetime-picker/datetime-picker.component.js +176 -0
- package/esm5/shared/gipi-components/datetime-picker/datetime-picker.module.js +85 -0
- package/esm5/shared/gipi-components/datetime-picker/mat-datetime-picker/calendar-body.js +119 -0
- package/esm5/shared/gipi-components/datetime-picker/mat-datetime-picker/calendar.js +747 -0
- package/esm5/shared/gipi-components/datetime-picker/mat-datetime-picker/clock.js +332 -0
- package/esm5/shared/gipi-components/datetime-picker/mat-datetime-picker/datetimepicker-animations.js +30 -0
- package/esm5/shared/gipi-components/datetime-picker/mat-datetime-picker/datetimepicker-errors.js +7 -0
- package/esm5/shared/gipi-components/datetime-picker/mat-datetime-picker/datetimepicker-filtertype.js +7 -0
- package/esm5/shared/gipi-components/datetime-picker/mat-datetime-picker/datetimepicker-input.js +377 -0
- package/esm5/shared/gipi-components/datetime-picker/mat-datetime-picker/datetimepicker-toggle.js +89 -0
- package/esm5/shared/gipi-components/datetime-picker/mat-datetime-picker/datetimepicker-type.js +1 -0
- package/esm5/shared/gipi-components/datetime-picker/mat-datetime-picker/datetimepicker.js +495 -0
- package/esm5/shared/gipi-components/datetime-picker/mat-datetime-picker/month-view.js +160 -0
- package/esm5/shared/gipi-components/datetime-picker/mat-datetime-picker/multi-year-view.js +248 -0
- package/esm5/shared/gipi-components/datetime-picker/mat-datetime-picker/shared/adapter/adapter.module.js +49 -0
- package/esm5/shared/gipi-components/datetime-picker/mat-datetime-picker/shared/adapter/datetime-adapter.js +145 -0
- package/esm5/shared/gipi-components/datetime-picker/mat-datetime-picker/shared/adapter/datetime-formats.js +3 -0
- package/esm5/shared/gipi-components/datetime-picker/mat-datetime-picker/shared/adapter/native-datetime-adapter.js +141 -0
- package/esm5/shared/gipi-components/datetime-picker/mat-datetime-picker/shared/adapter/native-datetime-formats.js +20 -0
- package/esm5/shared/gipi-components/datetime-picker/mat-datetime-picker/year-view.js +151 -0
- package/esm5/shared/gipi-components/dropdown-menu/dropdown-menu.component.js +1 -1
- package/esm5/shared/gipi-components/form-field/form-field.component.js +1 -1
- package/esm5/shared/gipi-components/input-currency/input-currency.component.js +1 -1
- package/esm5/shared/gipi-components/input-monthpicker/input-monthpicker.component.js +1 -1
- package/esm5/shared/gipi-components/input-select/input-select.component.js +1 -1
- package/esm5/shared/gipi-components/month-year-picker/month-year-picker.component.js +1 -1
- package/esm5/shared/gipi-components/radio-group/radio-group.component.js +1 -1
- package/esm5/shared/gipi-components/range-page/range-page.component.js +1 -1
- package/esm5/shared/gipi-components/range-slider/range-slider.component.js +1 -1
- package/esm5/shared/gipi-components/select-button/select-button.component.js +1 -1
- package/esm5/shared/gipi-components/textarea/textarea.component.js +1 -1
- package/esm5/shared/shared.module.js +51 -3
- package/fesm2015/gipisistemas-ng-core.js +3264 -191
- package/fesm2015/gipisistemas-ng-core.js.map +1 -1
- package/fesm5/gipisistemas-ng-core.js +3475 -152
- package/fesm5/gipisistemas-ng-core.js.map +1 -1
- package/gipi-components.d.ts +16 -0
- package/gipisistemas-ng-core.d.ts +2 -0
- package/gipisistemas-ng-core.metadata.json +1 -1
- package/package.json +4 -4
- package/shared/gipi-components/datetime-picker/datetime-picker/datetime-picker.component.d.ts +40 -0
- package/shared/gipi-components/datetime-picker/datetime-picker.module.d.ts +2 -0
- package/shared/gipi-components/datetime-picker/mat-datetime-picker/calendar-body.d.ts +50 -0
- package/shared/gipi-components/datetime-picker/mat-datetime-picker/calendar.d.ts +140 -0
- package/shared/gipi-components/datetime-picker/mat-datetime-picker/clock.d.ts +66 -0
- package/shared/gipi-components/datetime-picker/mat-datetime-picker/datetimepicker-animations.d.ts +8 -0
- package/shared/gipi-components/datetime-picker/mat-datetime-picker/datetimepicker-errors.d.ts +2 -0
- package/shared/gipi-components/datetime-picker/mat-datetime-picker/datetimepicker-filtertype.d.ts +5 -0
- package/shared/gipi-components/datetime-picker/mat-datetime-picker/datetimepicker-input.d.ts +98 -0
- package/shared/gipi-components/datetime-picker/mat-datetime-picker/datetimepicker-toggle.d.ts +20 -0
- package/shared/gipi-components/datetime-picker/mat-datetime-picker/datetimepicker-type.d.ts +1 -0
- package/shared/gipi-components/datetime-picker/mat-datetime-picker/datetimepicker.d.ts +133 -0
- package/shared/gipi-components/datetime-picker/mat-datetime-picker/month-view.d.ts +53 -0
- package/shared/gipi-components/datetime-picker/mat-datetime-picker/multi-year-view.d.ts +80 -0
- package/shared/gipi-components/datetime-picker/mat-datetime-picker/shared/adapter/adapter.module.d.ts +4 -0
- package/shared/gipi-components/datetime-picker/mat-datetime-picker/shared/adapter/datetime-adapter.d.ts +46 -0
- package/shared/gipi-components/datetime-picker/mat-datetime-picker/shared/adapter/datetime-formats.d.ts +20 -0
- package/shared/gipi-components/datetime-picker/mat-datetime-picker/shared/adapter/native-datetime-adapter.d.ts +36 -0
- package/shared/gipi-components/datetime-picker/mat-datetime-picker/shared/adapter/native-datetime-formats.d.ts +2 -0
- package/shared/gipi-components/datetime-picker/mat-datetime-picker/year-view.d.ts +52 -0
@@ -0,0 +1,145 @@
|
|
1
|
+
import { __extends } from "tslib";
|
2
|
+
import { DateAdapter } from '@angular/material/core';
|
3
|
+
var GIPIDatetimeAdapter = /** @class */ (function (_super) {
|
4
|
+
__extends(GIPIDatetimeAdapter, _super);
|
5
|
+
function GIPIDatetimeAdapter(_delegate) {
|
6
|
+
var _this = _super.call(this) || this;
|
7
|
+
_this._delegate = _delegate;
|
8
|
+
return _this;
|
9
|
+
}
|
10
|
+
GIPIDatetimeAdapter.prototype.getValidDateOrNull = function (obj) {
|
11
|
+
return this.isDateInstance(obj) && this.isValid(obj) ? obj : null;
|
12
|
+
};
|
13
|
+
GIPIDatetimeAdapter.prototype.compareDatetime = function (first, second, respectMinutePart) {
|
14
|
+
if (respectMinutePart === void 0) { respectMinutePart = true; }
|
15
|
+
return (this.compareDate(first, second) ||
|
16
|
+
this.getHour(first) - this.getHour(second) ||
|
17
|
+
(respectMinutePart && this.getMinute(first) - this.getMinute(second)));
|
18
|
+
};
|
19
|
+
GIPIDatetimeAdapter.prototype.sameDatetime = function (first, second) {
|
20
|
+
if (first && second) {
|
21
|
+
var firstValid = this.isValid(first);
|
22
|
+
var secondValid = this.isValid(second);
|
23
|
+
if (firstValid && secondValid) {
|
24
|
+
return !this.compareDatetime(first, second);
|
25
|
+
}
|
26
|
+
return firstValid === secondValid;
|
27
|
+
}
|
28
|
+
return first === second;
|
29
|
+
};
|
30
|
+
GIPIDatetimeAdapter.prototype.sameYear = function (first, second) {
|
31
|
+
return first && second && this.getYear(first) === this.getYear(second);
|
32
|
+
};
|
33
|
+
GIPIDatetimeAdapter.prototype.sameDay = function (first, second) {
|
34
|
+
return (first &&
|
35
|
+
second &&
|
36
|
+
this.getDate(first) === this.getDate(second) &&
|
37
|
+
this.sameMonthAndYear(first, second));
|
38
|
+
};
|
39
|
+
GIPIDatetimeAdapter.prototype.sameHour = function (first, second) {
|
40
|
+
return (first &&
|
41
|
+
second &&
|
42
|
+
this.getHour(first) === this.getHour(second) &&
|
43
|
+
this.sameDay(first, second));
|
44
|
+
};
|
45
|
+
GIPIDatetimeAdapter.prototype.sameMinute = function (first, second) {
|
46
|
+
return (first &&
|
47
|
+
second &&
|
48
|
+
this.getMinute(first) === this.getMinute(second) &&
|
49
|
+
this.sameHour(first, second));
|
50
|
+
};
|
51
|
+
GIPIDatetimeAdapter.prototype.sameMonthAndYear = function (first, second) {
|
52
|
+
if (first && second) {
|
53
|
+
var firstValid = this.isValid(first);
|
54
|
+
var secondValid = this.isValid(second);
|
55
|
+
if (firstValid && secondValid) {
|
56
|
+
return !(this.getYear(first) - this.getYear(second) ||
|
57
|
+
this.getMonth(first) - this.getMonth(second));
|
58
|
+
}
|
59
|
+
return firstValid === secondValid;
|
60
|
+
}
|
61
|
+
return first === second;
|
62
|
+
};
|
63
|
+
// delegate
|
64
|
+
GIPIDatetimeAdapter.prototype.deserialize = function (value) {
|
65
|
+
return this._delegate.deserialize(value);
|
66
|
+
};
|
67
|
+
GIPIDatetimeAdapter.prototype.clone = function (date) {
|
68
|
+
return this._delegate.clone(date);
|
69
|
+
};
|
70
|
+
GIPIDatetimeAdapter.prototype.addCalendarYears = function (date, years) {
|
71
|
+
return this._delegate.addCalendarYears(date, years);
|
72
|
+
};
|
73
|
+
GIPIDatetimeAdapter.prototype.addCalendarMonths = function (date, months) {
|
74
|
+
return this._delegate.addCalendarMonths(date, months);
|
75
|
+
};
|
76
|
+
GIPIDatetimeAdapter.prototype.addCalendarDays = function (date, days) {
|
77
|
+
return this._delegate.addCalendarDays(date, days);
|
78
|
+
};
|
79
|
+
GIPIDatetimeAdapter.prototype.getYear = function (date) {
|
80
|
+
return this._delegate.getYear(date);
|
81
|
+
};
|
82
|
+
GIPIDatetimeAdapter.prototype.getMonth = function (date) {
|
83
|
+
return this._delegate.getMonth(date);
|
84
|
+
};
|
85
|
+
GIPIDatetimeAdapter.prototype.getDate = function (date) {
|
86
|
+
return this._delegate.getDate(date);
|
87
|
+
};
|
88
|
+
GIPIDatetimeAdapter.prototype.getDayOfWeek = function (date) {
|
89
|
+
return this._delegate.getDayOfWeek(date);
|
90
|
+
};
|
91
|
+
GIPIDatetimeAdapter.prototype.getMonthNames = function (style) {
|
92
|
+
return this._delegate.getMonthNames(style);
|
93
|
+
};
|
94
|
+
GIPIDatetimeAdapter.prototype.getDateNames = function () {
|
95
|
+
return this._delegate.getDateNames();
|
96
|
+
};
|
97
|
+
GIPIDatetimeAdapter.prototype.getDayOfWeekNames = function (style) {
|
98
|
+
return this._delegate.getDayOfWeekNames(style);
|
99
|
+
};
|
100
|
+
GIPIDatetimeAdapter.prototype.getYearName = function (date) {
|
101
|
+
return this._delegate.getYearName(date);
|
102
|
+
};
|
103
|
+
GIPIDatetimeAdapter.prototype.getFirstDayOfWeek = function () {
|
104
|
+
return this._delegate.getFirstDayOfWeek();
|
105
|
+
};
|
106
|
+
GIPIDatetimeAdapter.prototype.getNumDaysInMonth = function (date) {
|
107
|
+
return this._delegate.getNumDaysInMonth(date);
|
108
|
+
};
|
109
|
+
GIPIDatetimeAdapter.prototype.createDate = function (year, month, date) {
|
110
|
+
return this._delegate.createDate(year, month, date);
|
111
|
+
};
|
112
|
+
GIPIDatetimeAdapter.prototype.today = function () {
|
113
|
+
return this._delegate.today();
|
114
|
+
};
|
115
|
+
GIPIDatetimeAdapter.prototype.parse = function (value, parseFormat) {
|
116
|
+
return this._delegate.parse(value, parseFormat);
|
117
|
+
};
|
118
|
+
GIPIDatetimeAdapter.prototype.format = function (date, displayFormat) {
|
119
|
+
return this._delegate.format(date, displayFormat);
|
120
|
+
};
|
121
|
+
GIPIDatetimeAdapter.prototype.toIso8601 = function (date) {
|
122
|
+
return this._delegate.toIso8601(date);
|
123
|
+
};
|
124
|
+
GIPIDatetimeAdapter.prototype.isDateInstance = function (obj) {
|
125
|
+
return this._delegate.isDateInstance(obj);
|
126
|
+
};
|
127
|
+
GIPIDatetimeAdapter.prototype.isValid = function (date) {
|
128
|
+
return this._delegate.isValid(date);
|
129
|
+
};
|
130
|
+
GIPIDatetimeAdapter.prototype.invalid = function () {
|
131
|
+
return this._delegate.invalid();
|
132
|
+
};
|
133
|
+
GIPIDatetimeAdapter.prototype.clampDate = function (date, min, max) {
|
134
|
+
if (min && this.compareDatetime(date, min) < 0) {
|
135
|
+
return min;
|
136
|
+
}
|
137
|
+
if (max && this.compareDatetime(date, max) > 0) {
|
138
|
+
return max;
|
139
|
+
}
|
140
|
+
return date;
|
141
|
+
};
|
142
|
+
return GIPIDatetimeAdapter;
|
143
|
+
}(DateAdapter));
|
144
|
+
export { GIPIDatetimeAdapter };
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUtYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BnaXBpc2lzdGVtYXMvbmctY29yZS8iLCJzb3VyY2VzIjpbInNoYXJlZC9naXBpLWNvbXBvbmVudHMvZGF0ZXRpbWUtcGlja2VyL21hdC1kYXRldGltZS1waWNrZXIvc2hhcmVkL2FkYXB0ZXIvZGF0ZXRpbWUtYWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXJEO0lBQXFELHVDQUFjO0lBRS9ELDZCQUFzQixTQUF5QjtRQUEvQyxZQUNJLGlCQUFPLFNBQ1Y7UUFGcUIsZUFBUyxHQUFULFNBQVMsQ0FBZ0I7O0lBRS9DLENBQUM7SUFvQkQsZ0RBQWtCLEdBQWxCLFVBQW1CLEdBQVE7UUFDdkIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3RFLENBQUM7SUFFRCw2Q0FBZSxHQUFmLFVBQWdCLEtBQVEsRUFBRSxNQUFTLEVBQUUsaUJBQWlDO1FBQWpDLGtDQUFBLEVBQUEsd0JBQWlDO1FBQ2xFLE9BQU8sQ0FDSCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUM7WUFDL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUMxQyxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUN4RSxDQUFDO0lBQ04sQ0FBQztJQUVELDBDQUFZLEdBQVosVUFBYSxLQUFlLEVBQUUsTUFBZ0I7UUFDMUMsSUFBSSxLQUFLLElBQUksTUFBTSxFQUFF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QU87UUFDWCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxxQ0FBTyxHQUFQO1FBQ0ksT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCx1Q0FBUyxHQUFULFVBQVUsSUFBTyxFQUFFLEdBQWMsRUFBRSxHQUFjO1FBQzdDLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUM1QyxPQUFPLEdBQUcsQ0FBQztTQUNkO1FBQ0QsSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzVDLE9BQU8sR0FBRyxDQUFDO1NBQ2Q7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBQ0wsMEJBQUM7QUFBRCxDQUFDLEFBcE1ELENBQXFELFdBQVcsR0FvTS9EIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZUFkYXB0ZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEdJUElEYXRldGltZUFkYXB0ZXI8RD4gZXh0ZW5kcyBEYXRlQWRhcHRlcjxEPiB7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX2RlbGVnYXRlOiBEYXRlQWRhcHRlcjxEPikge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIGFic3RyYWN0IGdldEhvdXIoZGF0ZTogRCk6IG51bWJlcjtcblxuICAgIGFic3RyYWN0IGdldE1pbnV0ZShkYXRlOiBEKTogbnVtYmVyO1xuXG4gICAgYWJzdHJhY3QgZ2V0Rmlyc3REYXRlT2ZNb250aChkYXRlOiBEKTogRDtcblxuICAgIGFic3RyYWN0IGlzSW5OZXh0TW9udGgoc3RhcnREYXRlOiBELCBlbmREYXRlOiBEKTogYm9vbGVhbjtcblxuICAgIGFic3RyYWN0IGdldEhvdXJOYW1lcygpOiBzdHJpbmdbXTtcblxuICAgIGFic3RyYWN0IGdldE1pbnV0ZU5hbWVzKCk6IHN0cmluZ1tdO1xuXG4gICAgYWJzdHJhY3QgYWRkQ2FsZW5kYXJIb3VycyhkYXRlOiBELCBtb250aHM6IG51bWJlcik6IEQ7XG5cbiAgICBhYnN0cmFjdCBhZGRDYWxlbmRhck1pbnV0ZXMoZGF0ZTogRCwgbW9udGhzOiBudW1iZXIpOiBEO1xuXG4gICAgYWJzdHJhY3QgY3JlYXRlRGF0ZXRpbWUoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyLCBkYXRlOiBudW1iZXIsIGhvdXI6IG51bWJlciwgbWludXRlOiBudW1iZXIpOiBEO1xuXG4gICAgZ2V0VmFsaWREYXRlT3JOdWxsKG9iajogYW55KTogRCB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0RhdGVJbnN0YW5jZShvYmopICYmIHRoaXMuaXNWYWxpZChvYmopID8gb2JqIDogbnVsbDtcbiAgICB9XG5cbiAgICBjb21wYXJlRGF0ZXRpbWUoZmlyc3Q6IEQsIHNlY29uZDogRCwgcmVzcGVjdE1pbnV0ZVBhcnQ6IGJvb2xlYW4gPSB0cnVlKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMuY29tcGFyZURhdGUoZmlyc3QsIHNlY29uZCkgfHxcbiAgICAgICAgICAgIHRoaXMuZ2V0SG91cihmaXJzdCkgLSB0aGlzLmdldEhvdXIoc2Vjb25kKSB8fFxuICAgICAgICAgICAgKHJlc3BlY3RNaW51dGVQYXJ0ICYmIHRoaXMuZ2V0TWludXRlKGZpcnN0KSAtIHRoaXMuZ2V0TWludXRlKHNlY29uZCkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgc2FtZURhdGV0aW1lKGZpcnN0OiBEIHwgbnVsbCwgc2Vjb25kOiBEIHwgbnVsbCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoZmlyc3QgJiYgc2Vjb25kKSB7XG4gICAgICAgICAgICBjb25zdCBmaXJzdFZhbGlkID0gdGhpcy5pc1ZhbGlkKGZpcnN0KTtcbiAgICAgICAgICAgIGNvbnN0IHNlY29uZFZhbGlkID0gdGhpcy5pc1ZhbGlkKHNlY29uZCk7XG4gICAgICAgICAgICBpZiAoZmlyc3RWYWxpZCAmJiBzZWNvbmRWYWxpZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAhdGhpcy5jb21wYXJlRGF0ZXRpbWUoZmlyc3QsIHNlY29uZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmlyc3RWYWxpZCA9PT0gc2Vjb25kVmFsaWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpcnN0ID09PSBzZWNvbmQ7XG4gICAgfVxuXG4gICAgc2FtZVllYXIoZmlyc3Q6IEQsIHNlY29uZDogRCkge1xuICAgICAgICByZXR1cm4gZmlyc3QgJiYgc2Vjb25kICYmIHRoaXMuZ2V0WWVhcihmaXJzdCkgPT09IHRoaXMuZ2V0WWVhcihzZWNvbmQpO1xuICAgIH1cblxuICAgIHNhbWVEYXkoZmlyc3Q6IEQsIHNlY29uZDogRCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgZmlyc3QgJiZcbiAgICAgICAgICAgIHNlY29uZCAmJlxuICAgICAgICAgICAgdGhpcy5nZXREYXRlKGZpcnN0KSA9PT0gdGhpcy5nZXREYXRlKHNlY29uZCkgJiZcbiAgICAgICAgICAgIHRoaXMuc2FtZU1vbnRoQW5kWWVhcihmaXJzdCwgc2Vjb25kKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHNhbWVIb3VyKGZpcnN0OiBELCBzZWNvbmQ6IEQpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGZpcnN0ICYmXG4gICAgICAgICAgICBzZWNvbmQgJiZcbiAgICAgICAgICAgIHRoaXMuZ2V0SG91cihmaXJzdCkgPT09IHRoaXMuZ2V0SG91cihzZWNvbmQpICYmXG4gICAgICAgICAgICB0aGlzLnNhbWVEYXkoZmlyc3QsIHNlY29uZClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBzYW1lTWludXRlKGZpcnN0OiBELCBzZWNvbmQ6IEQpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGZpcnN0ICYmXG4gICAgICAgICAgICBzZWNvbmQgJiZcbiAgICAgICAgICAgIHRoaXMuZ2V0TWludXRlKGZpcnN0KSA9PT0gdGhpcy5nZXRNaW51dGUoc2Vjb25kKSAmJlxuICAgICAgICAgICAgdGhpcy5zYW1lSG91cihmaXJzdCwgc2Vjb25kKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHNhbWVNb250aEFuZFllYXIoZmlyc3Q6IEQgfCBudWxsLCBzZWNvbmQ6IEQgfCBudWxsKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChmaXJzdCAmJiBzZWNvbmQpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0VmFsaWQgPSB0aGlzLmlzVmFsaWQoZmlyc3QpO1xuICAgICAgICAgICAgY29uc3Qgc2Vjb25kVmFsaWQgPSB0aGlzLmlzVmFsaWQoc2Vjb25kKTtcbiAgICAgICAgICAgIGlmIChmaXJzdFZhbGlkICYmIHNlY29uZFZhbGlkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICEoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0WWVhcihmaXJzdCkgLSB0aGlzLmdldFllYXIoc2Vjb25kKSB8fFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldE1vbnRoKGZpcnN0KSAtIHRoaXMuZ2V0TW9udGgoc2Vjb25kKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmlyc3RWYWxpZCA9PT0gc2Vjb25kVmFsaWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpcnN0ID09PSBzZWNvbmQ7XG4gICAgfVxuXG4gICAgLy8gZGVsZWdhdGVcbiAgICBkZXNlcmlhbGl6ZSh2YWx1ZTogYW55KTogRCB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVsZWdhdGUuZGVzZXJpYWxpemUodmFsdWUpO1xuICAgIH1cblxuICAgIGNsb25lKGRhdGU6IEQpOiBEIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlbGVnYXRlLmNsb25lKGRhdGUpO1xuICAgIH1cblxuICAgIGFkZENhbGVuZGFyWWVhcnMoZGF0ZTogRCwgeWVhcnM6IG51bWJlcik6IEQge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVsZWdhdGUuYWRkQ2FsZW5kYXJZZWFycyhkYXRlLCB5ZWFycyk7XG4gICAgfVxuXG4gICAgYWRkQ2FsZW5kYXJNb250aHMoZGF0ZTogRCwgbW9udGhzOiBudW1iZXIpOiBEIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlbGVnYXRlLmFkZENhbGVuZGFyTW9udGhzKGRhdGUsIG1vbnRocyk7XG4gICAgfVxuXG4gICAgYWRkQ2FsZW5kYXJEYXlzKGRhdGU6IEQsIGRheXM6IG51bWJlcik6IEQge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVsZWdhdGUuYWRkQ2FsZW5kYXJEYXlzKGRhdGUsIGRheXMpO1xuICAgIH1cblxuICAgIGdldFllYXIoZGF0ZTogRCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWxlZ2F0ZS5nZXRZZWFyKGRhdGUpO1xuICAgIH1cblxuICAgIGdldE1vbnRoKGRhdGU6IEQpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVsZWdhdGUuZ2V0TW9udGgoZGF0ZSk7XG4gICAgfVxuXG4gICAgZ2V0RGF0ZShkYXRlOiBEKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlbGVnYXRlLmdldERhdGUoZGF0ZSk7XG4gICAgfVxuXG4gICAgZ2V0RGF5T2ZXZWVrKGRhdGU6IEQpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVsZWdhdGUuZ2V0RGF5T2ZXZWVrKGRhdGUpO1xuICAgIH1cblxuICAgIGdldE1vbnRoTmFtZXMoc3R5bGUpOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWxlZ2F0ZS5nZXRNb250aE5hbWVzKHN0eWxlKTtcbiAgICB9XG5cbiAgICBnZXREYXRlTmFtZXMoKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVsZWdhdGUuZ2V0RGF0ZU5hbWVzKCk7XG4gICAgfVxuXG4gICAgZ2V0RGF5T2ZXZWVrTmFtZXMoc3R5bGUpOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWxlZ2F0ZS5nZXREYXlPZldlZWtOYW1lcyhzdHlsZSk7XG4gICAgfVxuXG4gICAgZ2V0WWVhck5hbWUoZGF0ZTogRCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWxlZ2F0ZS5nZXRZZWFyTmFtZShkYXRlKTtcbiAgICB9XG5cbiAgICBnZXRGaXJzdERheU9mV2VlaygpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVsZWdhdGUuZ2V0Rmlyc3REYXlPZldlZWsoKTtcbiAgICB9XG5cbiAgICBnZXROdW1EYXlzSW5Nb250aChkYXRlOiBEKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlbGVnYXRlLmdldE51bURheXNJbk1vbnRoKGRhdGUpO1xuICAgIH1cblxuICAgIGNyZWF0ZURhdGUoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyLCBkYXRlOiBudW1iZXIpOiBEIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlbGVnYXRlLmNyZWF0ZURhdGUoeWVhciwgbW9udGgsIGRhdGUpO1xuICAgIH1cblxuICAgIHRvZGF5KCk6IEQge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVsZWdhdGUudG9kYXkoKTtcbiAgICB9XG5cbiAgICBwYXJzZSh2YWx1ZTogYW55LCBwYXJzZUZvcm1hdDogYW55KTogRCB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVsZWdhdGUucGFyc2UodmFsdWUsIHBhcnNlRm9ybWF0KTtcbiAgICB9XG5cbiAgICBmb3JtYXQoZGF0ZTogRCwgZGlzcGxheUZvcm1hdDogYW55KTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlbGVnYXRlLmZvcm1hdChkYXRlLCBkaXNwbGF5Rm9ybWF0KTtcbiAgICB9XG5cbiAgICB0b0lzbzg2MDEoZGF0ZTogRCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWxlZ2F0ZS50b0lzbzg2MDEoZGF0ZSk7XG4gICAgfVxuXG4gICAgaXNEYXRlSW5zdGFuY2Uob2JqOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlbGVnYXRlLmlzRGF0ZUluc3RhbmNlKG9iaik7XG4gICAgfVxuXG4gICAgaXNWYWxpZChkYXRlOiBEKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWxlZ2F0ZS5pc1ZhbGlkKGRhdGUpO1xuICAgIH1cblxuICAgIGludmFsaWQoKTogRCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWxlZ2F0ZS5pbnZhbGlkKCk7XG4gICAgfVxuXG4gICAgY2xhbXBEYXRlKGRhdGU6IEQsIG1pbj86IEQgfCBudWxsLCBtYXg/OiBEIHwgbnVsbCk6IEQge1xuICAgICAgICBpZiAobWluICYmIHRoaXMuY29tcGFyZURhdGV0aW1lKGRhdGUsIG1pbikgPCAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbWluO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtYXggJiYgdGhpcy5jb21wYXJlRGF0ZXRpbWUoZGF0ZSwgbWF4KSA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiBtYXg7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxufVxuIl19
|
@@ -0,0 +1,3 @@
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
2
|
+
export var GIPI_DATETIME_FORMATS = new InjectionToken('mat-datetime-formats');
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUtZm9ybWF0cy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BnaXBpc2lzdGVtYXMvbmctY29yZS8iLCJzb3VyY2VzIjpbInNoYXJlZC9naXBpLWNvbXBvbmVudHMvZGF0ZXRpbWUtcGlja2VyL21hdC1kYXRldGltZS1waWNrZXIvc2hhcmVkL2FkYXB0ZXIvZGF0ZXRpbWUtZm9ybWF0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBcUIvQyxNQUFNLENBQUMsSUFBTSxxQkFBcUIsR0FBRyxJQUFJLGNBQWMsQ0FBc0Isc0JBQXNCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgR0lQSURhdGV0aW1lRm9ybWF0cyB7XG4gICAgcGFyc2U6IHtcbiAgICAgICAgZGF0ZUlucHV0PzogYW55O1xuICAgICAgICBtb250aElucHV0PzogYW55O1xuICAgICAgICB0aW1lSW5wdXQ/OiBhbnk7XG4gICAgICAgIGRhdGV0aW1lSW5wdXQ/OiBhbnk7XG4gICAgfTtcbiAgICBkaXNwbGF5OiB7XG4gICAgICAgIGRhdGVJbnB1dDogYW55O1xuICAgICAgICBtb250aElucHV0OiBhbnk7XG4gICAgICAgIHRpbWVJbnB1dDogYW55O1xuICAgICAgICBkYXRldGltZUlucHV0OiBhbnk7XG4gICAgICAgIG1vbnRoWWVhckxhYmVsOiBhbnk7XG4gICAgICAgIGRhdGVBMTF5TGFiZWw6IGFueTtcbiAgICAgICAgbW9udGhZZWFyQTExeUxhYmVsOiBhbnk7XG4gICAgICAgIHBvcHVwSGVhZGVyRGF0ZUxhYmVsOiBhbnk7XG4gICAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IEdJUElfREFURVRJTUVfRk9STUFUUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxHSVBJRGF0ZXRpbWVGb3JtYXRzPignbWF0LWRhdGV0aW1lLWZvcm1hdHMnKTtcbiJdfQ==
|
@@ -0,0 +1,141 @@
|
|
1
|
+
import { __decorate, __extends, __metadata, __param } from "tslib";
|
2
|
+
import { Inject, Injectable, Optional } from '@angular/core';
|
3
|
+
import { DateAdapter, MAT_DATE_LOCALE } from '@angular/material/core';
|
4
|
+
import { GIPIDatetimeAdapter } from './datetime-adapter';
|
5
|
+
var ɵ0 = function (i) { return String(i); };
|
6
|
+
/** The default hour names to use if Intl API is not available. */
|
7
|
+
var DEFAULT_HOUR_NAMES = range(24, ɵ0);
|
8
|
+
var ɵ1 = function (i) { return String(i); };
|
9
|
+
/** The default minute names to use if Intl API is not available. */
|
10
|
+
var DEFAULT_MINUTE_NAMES = range(60, ɵ1);
|
11
|
+
function range(length, valueFunction) {
|
12
|
+
var valuesArray = Array(length);
|
13
|
+
for (var i = 0; i < length; i++) {
|
14
|
+
valuesArray[i] = valueFunction(i);
|
15
|
+
}
|
16
|
+
return valuesArray;
|
17
|
+
}
|
18
|
+
var GIPINativeDatetimeAdapter = /** @class */ (function (_super) {
|
19
|
+
__extends(GIPINativeDatetimeAdapter, _super);
|
20
|
+
function GIPINativeDatetimeAdapter(matDateLocale, _delegate) {
|
21
|
+
var _this = _super.call(this, _delegate) || this;
|
22
|
+
_this.setLocale(matDateLocale);
|
23
|
+
return _this;
|
24
|
+
}
|
25
|
+
GIPINativeDatetimeAdapter.prototype.clone = function (date) {
|
26
|
+
return this.createDatetime(this.getYear(date), this.getMonth(date), this.getDate(date), this.getHour(date), this.getMinute(date));
|
27
|
+
};
|
28
|
+
GIPINativeDatetimeAdapter.prototype.getHour = function (date) {
|
29
|
+
return date.getHours();
|
30
|
+
};
|
31
|
+
GIPINativeDatetimeAdapter.prototype.getMinute = function (date) {
|
32
|
+
return date.getMinutes();
|
33
|
+
};
|
34
|
+
GIPINativeDatetimeAdapter.prototype.isInNextMonth = function (startDate, endDate) {
|
35
|
+
var nextMonth = this.getDateInNextMonth(startDate);
|
36
|
+
return this.sameMonthAndYear(nextMonth, endDate);
|
37
|
+
};
|
38
|
+
GIPINativeDatetimeAdapter.prototype.createDatetime = function (year, month, date, hour, minute) {
|
39
|
+
// Check for invalid month and date (except upper bound on date which we have to check after
|
40
|
+
// creating the Date).
|
41
|
+
if (month < 0 || month > 11) {
|
42
|
+
throw Error("Invalid month index \"" + month + "\". Month index has to be between 0 and 11.");
|
43
|
+
}
|
44
|
+
if (date < 1) {
|
45
|
+
throw Error("Invalid date \"" + date + "\". Date has to be greater than 0.");
|
46
|
+
}
|
47
|
+
if (hour < 0 || hour > 23) {
|
48
|
+
throw Error("Invalid hour \"" + hour + "\". Hour has to be between 0 and 23.");
|
49
|
+
}
|
50
|
+
if (minute < 0 || minute > 59) {
|
51
|
+
throw Error("Invalid minute \"" + minute + "\". Minute has to be between 0 and 59.");
|
52
|
+
}
|
53
|
+
var result = this._createDateWithOverflow(year, month, date, hour, minute);
|
54
|
+
// Check that the date wasn't above the upper bound for the month, causing the month to overflow
|
55
|
+
if (result.getMonth() !== month) {
|
56
|
+
throw Error("Invalid date \"" + date + "\" for month with index \"" + month + "\".");
|
57
|
+
}
|
58
|
+
return result;
|
59
|
+
};
|
60
|
+
GIPINativeDatetimeAdapter.prototype.getFirstDateOfMonth = function (date) {
|
61
|
+
var result = new Date();
|
62
|
+
result.setFullYear(date.getFullYear(), date.getMonth(), 1);
|
63
|
+
return result;
|
64
|
+
};
|
65
|
+
GIPINativeDatetimeAdapter.prototype.getHourNames = function () {
|
66
|
+
return DEFAULT_HOUR_NAMES;
|
67
|
+
};
|
68
|
+
GIPINativeDatetimeAdapter.prototype.getMinuteNames = function () {
|
69
|
+
return DEFAULT_MINUTE_NAMES;
|
70
|
+
};
|
71
|
+
GIPINativeDatetimeAdapter.prototype.addCalendarYears = function (date, years) {
|
72
|
+
return this.addCalendarMonths(date, years * 12);
|
73
|
+
};
|
74
|
+
GIPINativeDatetimeAdapter.prototype.addCalendarMonths = function (date, months) {
|
75
|
+
var newDate = this._createDateWithOverflow(this.getYear(date), this.getMonth(date) + months, this.getDate(date), this.getHour(date), this.getMinute(date));
|
76
|
+
// It's possible to wind up in the wrong month if the original month has more days than the new
|
77
|
+
// month. In this case we want to go to the last day of the desired month.
|
78
|
+
// Note: the additional + 12 % 12 ensures we end up with a positive number, since JS % doesn't
|
79
|
+
// guarantee this.
|
80
|
+
if (this.getMonth(newDate) !== (((this.getMonth(date) + months) % 12) + 12) % 12) {
|
81
|
+
newDate = this._createDateWithOverflow(this.getYear(newDate), this.getMonth(newDate), 0, this.getHour(date), this.getMinute(date));
|
82
|
+
}
|
83
|
+
return newDate;
|
84
|
+
};
|
85
|
+
GIPINativeDatetimeAdapter.prototype.addCalendarDays = function (date, days) {
|
86
|
+
return this._createDateWithOverflow(this.getYear(date), this.getMonth(date), this.getDate(date) + days, this.getHour(date), this.getMinute(date));
|
87
|
+
};
|
88
|
+
GIPINativeDatetimeAdapter.prototype.addCalendarHours = function (date, hours) {
|
89
|
+
return this._createDateWithOverflow(this.getYear(date), this.getMonth(date), this.getDate(date), this.getHour(date) + hours, this.getMinute(date));
|
90
|
+
};
|
91
|
+
GIPINativeDatetimeAdapter.prototype.addCalendarMinutes = function (date, minutes) {
|
92
|
+
return this._createDateWithOverflow(this.getYear(date), this.getMonth(date), this.getDate(date), this.getHour(date), this.getMinute(date) + minutes);
|
93
|
+
};
|
94
|
+
GIPINativeDatetimeAdapter.prototype.toIso8601 = function (date) {
|
95
|
+
return (_super.prototype.toIso8601.call(this, date) + 'T' + [this._2digit(date.getUTCHours()), this._2digit(date.getUTCMinutes()),].join(':'));
|
96
|
+
};
|
97
|
+
GIPINativeDatetimeAdapter.prototype.getDateInNextMonth = function (date) {
|
98
|
+
return new Date(date.getFullYear(), date.getMonth() + 1, 1, date.getHours(), date.getMinutes());
|
99
|
+
};
|
100
|
+
/**
|
101
|
+
* Strip out unicode LTR and RTL characters. Edge and IE insert these into formatted dates while
|
102
|
+
* other browsers do not. We remove them to make output consistent and because they interfere with
|
103
|
+
* date parsing.
|
104
|
+
* @param str The string to strip direction characters from.
|
105
|
+
* @returns The stripped string.
|
106
|
+
*/
|
107
|
+
GIPINativeDatetimeAdapter.prototype._stripDirectionalityCharacters = function (str) {
|
108
|
+
return str.replace(/[\u200e\u200f]/g, '');
|
109
|
+
};
|
110
|
+
/**
|
111
|
+
* Pads a number to make it two digits.
|
112
|
+
* @param n The number to pad.
|
113
|
+
* @returns The padded number.
|
114
|
+
*/
|
115
|
+
GIPINativeDatetimeAdapter.prototype._2digit = function (n) {
|
116
|
+
return ('00' + n).slice(-2);
|
117
|
+
};
|
118
|
+
/** Creates a date but allows the month and date to overflow. */
|
119
|
+
GIPINativeDatetimeAdapter.prototype._createDateWithOverflow = function (year, month, date, hours, minutes) {
|
120
|
+
var result = new Date(year, month, date, hours, minutes);
|
121
|
+
// We need to correct for the fact that JS native Date treats years in range [0, 99] as
|
122
|
+
// abbreviations for 19xx.
|
123
|
+
if (year >= 0 && year < 100) {
|
124
|
+
result.setFullYear(this.getYear(result) - 1900);
|
125
|
+
}
|
126
|
+
return result;
|
127
|
+
};
|
128
|
+
GIPINativeDatetimeAdapter.ctorParameters = function () { return [
|
129
|
+
{ type: String, decorators: [{ type: Optional }, { type: Inject, args: [MAT_DATE_LOCALE,] }] },
|
130
|
+
{ type: DateAdapter }
|
131
|
+
]; };
|
132
|
+
GIPINativeDatetimeAdapter = __decorate([
|
133
|
+
Injectable(),
|
134
|
+
__param(0, Optional()), __param(0, Inject(MAT_DATE_LOCALE)),
|
135
|
+
__metadata("design:paramtypes", [String, DateAdapter])
|
136
|
+
], GIPINativeDatetimeAdapter);
|
137
|
+
return GIPINativeDatetimeAdapter;
|
138
|
+
}(GIPIDatetimeAdapter));
|
139
|
+
export { GIPINativeDatetimeAdapter };
|
140
|
+
export { ɵ0, ɵ1 };
|
141
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlLWRhdGV0aW1lLWFkYXB0ZXIuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZ2lwaXNpc3RlbWFzL25nLWNvcmUvIiwic291cmNlcyI6WyJzaGFyZWQvZ2lwaS1jb21wb25lbnRzL2RhdGV0aW1lLXBpY2tlci9tYXQtZGF0ZXRpbWUtcGlja2VyL3NoYXJlZC9hZGFwdGVyL25hdGl2ZS1kYXRldGltZS1hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztTQUdwQixVQUFDLENBQUMsSUFBSyxPQUFBLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBVCxDQUFTO0FBRHJELGtFQUFrRTtBQUNsRSxJQUFNLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxFQUFFLEtBQW1CLENBQUM7U0FHaEIsVUFBQyxDQUFDLElBQUssT0FBQSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQVQsQ0FBUztBQUR2RCxvRUFBb0U7QUFDcEUsSUFBTSxvQkFBb0IsR0FBRyxLQUFLLENBQUMsRUFBRSxLQUFtQixDQUFDO0FBRXpELFNBQVMsS0FBSyxDQUFJLE1BQWMsRUFBRSxhQUFtQztJQUNqRSxJQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUM3QixXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ3JDO0lBQ0QsT0FBTyxXQUFXLENBQUM7QUFDdkIsQ0FBQztBQUdEO0lBQStDLDZDQUF5QjtJQUVwRSxtQ0FD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QUFNLENBQUMsZUFBZSxDQUFDLENBQUE7aURBQ3pCLFdBQVc7T0FKakIseUJBQXlCLENBeUtyQztJQUFELGdDQUFDO0NBQUEsQUF6S0QsQ0FBK0MsbUJBQW1CLEdBeUtqRTtTQXpLWSx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRlQWRhcHRlciwgTUFUX0RBVEVfTE9DQUxFIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBHSVBJRGF0ZXRpbWVBZGFwdGVyIH0gZnJvbSAnLi9kYXRldGltZS1hZGFwdGVyJztcblxuLyoqIFRoZSBkZWZhdWx0IGhvdXIgbmFtZXMgdG8gdXNlIGlmIEludGwgQVBJIGlzIG5vdCBhdmFpbGFibGUuICovXG5jb25zdCBERUZBVUxUX0hPVVJfTkFNRVMgPSByYW5nZSgyNCwgKGkpID0+IFN0cmluZyhpKSk7XG5cbi8qKiBUaGUgZGVmYXVsdCBtaW51dGUgbmFtZXMgdG8gdXNlIGlmIEludGwgQVBJIGlzIG5vdCBhdmFpbGFibGUuICovXG5jb25zdCBERUZBVUxUX01JTlVURV9OQU1FUyA9IHJhbmdlKDYwLCAoaSkgPT4gU3RyaW5nKGkpKTtcblxuZnVuY3Rpb24gcmFuZ2U8VD4obGVuZ3RoOiBudW1iZXIsIHZhbHVlRnVuY3Rpb246IChpbmRleDogbnVtYmVyKSA9PiBUKTogVFtdIHtcbiAgICBjb25zdCB2YWx1ZXNBcnJheSA9IEFycmF5KGxlbmd0aCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICB2YWx1ZXNBcnJheVtpXSA9IHZhbHVlRnVuY3Rpb24oaSk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZXNBcnJheTtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEdJUElOYXRpdmVEYXRldGltZUFkYXB0ZXIgZXh0ZW5kcyBHSVBJRGF0ZXRpbWVBZGFwdGVyPERhdGU+IHtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE1BVF9EQVRFX0xPQ0FMRSkgbWF0RGF0ZUxvY2FsZTogc3RyaW5nLFxuICAgICAgICBfZGVsZWdhdGU6IERhdGVBZGFwdGVyPERhdGU+XG4gICAgKSB7XG4gICAgICAgIHN1cGVyKF9kZWxlZ2F0ZSk7XG4gICAgICAgIHRoaXMuc2V0TG9jYWxlKG1hdERhdGVMb2NhbGUpO1xuICAgIH1cblxuICAgIGNsb25lKGRhdGU6IERhdGUpOiBEYXRlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRGF0ZXRpbWUoXG4gICAgICAgICAgICB0aGlzLmdldFllYXIoZGF0ZSksXG4gICAgICAgICAgICB0aGlzLmdldE1vbnRoKGRhdGUpLFxuICAgICAgICAgICAgdGhpcy5nZXREYXRlKGRhdGUpLFxuICAgICAgICAgICAgdGhpcy5nZXRIb3VyKGRhdGUpLFxuICAgICAgICAgICAgdGhpcy5nZXRNaW51dGUoZGF0ZSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXRIb3VyKGRhdGU6IERhdGUpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gZGF0ZS5nZXRIb3VycygpO1xuICAgIH1cblxuICAgIGdldE1pbnV0ZShkYXRlOiBEYXRlKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGRhdGUuZ2V0TWludXRlcygpO1xuICAgIH1cblxuICAgIGlzSW5OZXh0TW9udGgoc3RhcnREYXRlOiBEYXRlLCBlbmREYXRlOiBEYXRlKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IG5leHRNb250aCA9IHRoaXMuZ2V0RGF0ZUluTmV4dE1vbnRoKHN0YXJ0RGF0ZSk7XG4gICAgICAgIHJldHVybiB0aGlzLnNhbWVNb250aEFuZFllYXIobmV4dE1vbnRoLCBlbmREYXRlKTtcbiAgICB9XG5cbiAgICBjcmVhdGVEYXRldGltZSh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIGRhdGU6IG51bWJlciwgaG91cjogbnVtYmVyLCBtaW51dGU6IG51bWJlcik6IERhdGUge1xuICAgICAgICAvLyBDaGVjayBmb3IgaW52YWxpZCBtb250aCBhbmQgZGF0ZSAoZXhjZXB0IHVwcGVyIGJvdW5kIG9uIGRhdGUgd2hpY2ggd2UgaGF2ZSB0byBjaGVjayBhZnRlclxuICAgICAgICAvLyBjcmVhdGluZyB0aGUgRGF0ZSkuXG4gICAgICAgIGlmIChtb250aCA8IDAgfHwgbW9udGggPiAxMSkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoYEludmFsaWQgbW9udGggaW5kZXggXCIke21vbnRofVwiLiBNb250aCBpbmRleCBoYXMgdG8gYmUgYmV0d2VlbiAwIGFuZCAxMS5gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkYXRlIDwgMSkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoYEludmFsaWQgZGF0ZSBcIiR7ZGF0ZX1cIi4gRGF0ZSBoYXMgdG8gYmUgZ3JlYXRlciB0aGFuIDAuYCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaG91ciA8IDAgfHwgaG91ciA+IDIzKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcihgSW52YWxpZCBob3VyIFwiJHtob3VyfVwiLiBIb3VyIGhhcyB0byBiZSBiZXR3ZWVuIDAgYW5kIDIzLmApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1pbnV0ZSA8IDAgfHwgbWludXRlID4gNTkpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKGBJbnZhbGlkIG1pbnV0ZSBcIiR7bWludXRlfVwiLiBNaW51dGUgaGFzIHRvIGJlIGJldHdlZW4gMCBhbmQgNTkuYCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLl9jcmVhdGVEYXRlV2l0aE92ZXJmbG93KHllYXIsIG1vbnRoLCBkYXRlLCBob3VyLCBtaW51dGUpO1xuXG4gICAgICAgIC8vIENoZWNrIHRoYXQgdGhlIGRhdGUgd2Fzbid0IGFib3ZlIHRoZSB1cHBlciBib3VuZCBmb3IgdGhlIG1vbnRoLCBjYXVzaW5nIHRoZSBtb250aCB0byBvdmVyZmxvd1xuICAgICAgICBpZiAocmVzdWx0LmdldE1vbnRoKCkgIT09IG1vbnRoKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcihgSW52YWxpZCBkYXRlIFwiJHtkYXRlfVwiIGZvciBtb250aCB3aXRoIGluZGV4IFwiJHttb250aH1cIi5gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgZ2V0Rmlyc3REYXRlT2ZNb250aChkYXRlOiBEYXRlKTogRGF0ZSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBEYXRlKCk7XG4gICAgICAgIHJlc3VsdC5zZXRGdWxsWWVhcihkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgMSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgZ2V0SG91ck5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIERFRkFVTFRfSE9VUl9OQU1FUztcbiAgICB9XG5cbiAgICBnZXRNaW51dGVOYW1lcygpOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiBERUZBVUxUX01JTlVURV9OQU1FUztcbiAgICB9XG5cbiAgICBhZGRDYWxlbmRhclllYXJzKGRhdGU6IERhdGUsIHllYXJzOiBudW1iZXIpOiBEYXRlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkQ2FsZW5kYXJNb250aHMoZGF0ZSwgeWVhcnMgKiAxMik7XG4gICAgfVxuXG4gICAgYWRkQ2FsZW5kYXJNb250aHMoZGF0ZTogRGF0ZSwgbW9udGhzOiBudW1iZXIpOiBEYXRlIHtcbiAgICAgICAgbGV0IG5ld0RhdGUgPSB0aGlzLl9jcmVhdGVEYXRlV2l0aE92ZXJmbG93KFxuICAgICAgICAgICAgdGhpcy5nZXRZZWFyKGRhdGUpLFxuICAgICAgICAgICAgdGhpcy5nZXRNb250aChkYXRlKSArIG1vbnRocyxcbiAgICAgICAgICAgIHRoaXMuZ2V0RGF0ZShkYXRlKSxcbiAgICAgICAgICAgIHRoaXMuZ2V0SG91cihkYXRlKSxcbiAgICAgICAgICAgIHRoaXMuZ2V0TWludXRlKGRhdGUpXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gSXQncyBwb3NzaWJsZSB0byB3aW5kIHVwIGluIHRoZSB3cm9uZyBtb250aCBpZiB0aGUgb3JpZ2luYWwgbW9udGggaGFzIG1vcmUgZGF5cyB0aGFuIHRoZSBuZXdcbiAgICAgICAgLy8gbW9udGguIEluIHRoaXMgY2FzZSB3ZSB3YW50IHRvIGdvIHRvIHRoZSBsYXN0IGRheSBvZiB0aGUgZGVzaXJlZCBtb250aC5cbiAgICAgICAgLy8gTm90ZTogdGhlIGFkZGl0aW9uYWwgKyAxMiAlIDEyIGVuc3VyZXMgd2UgZW5kIHVwIHdpdGggYSBwb3NpdGl2ZSBudW1iZXIsIHNpbmNlIEpTICUgZG9lc24ndFxuICAgICAgICAvLyBndWFyYW50ZWUgdGhpcy5cbiAgICAgICAgaWYgKHRoaXMuZ2V0TW9udGgobmV3RGF0ZSkgIT09ICgoKHRoaXMuZ2V0TW9udGgoZGF0ZSkgKyBtb250aHMpICUgMTIpICsgMTIpICUgMTIpIHtcbiAgICAgICAgICAgIG5ld0RhdGUgPSB0aGlzLl9jcmVhdGVEYXRlV2l0aE92ZXJmbG93KHRoaXMuZ2V0WWVhcihuZXdEYXRlKSwgdGhpcy5nZXRNb250aChuZXdEYXRlKSwgMCwgdGhpcy5nZXRIb3VyKGRhdGUpLCB0aGlzLmdldE1pbnV0ZShkYXRlKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV3RGF0ZTtcbiAgICB9XG5cbiAgICBhZGRDYWxlbmRhckRheXMoZGF0ZTogRGF0ZSwgZGF5czogbnVtYmVyKTogRGF0ZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jcmVhdGVEYXRlV2l0aE92ZXJmbG93KFxuICAgICAgICAgICAgdGhpcy5nZXRZZWFyKGRhdGUpLFxuICAgICAgICAgICAgdGhpcy5nZXRNb250aChkYXRlKSxcbiAgICAgICAgICAgIHRoaXMuZ2V0RGF0ZShkYXRlKSArIGRheXMsXG4gICAgICAgICAgICB0aGlzLmdldEhvdXIoZGF0ZSksXG4gICAgICAgICAgICB0aGlzLmdldE1pbnV0ZShkYXRlKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGFkZENhbGVuZGFySG91cnMoZGF0ZTogRGF0ZSwgaG91cnM6IG51bWJlcik6IERhdGUge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3JlYXRlRGF0ZVdpdGhPdmVyZmxvdyhcbiAgICAgICAgICAgIHRoaXMuZ2V0WWVhcihkYXRlKSxcbiAgICAgICAgICAgIHRoaXMuZ2V0TW9udGgoZGF0ZSksXG4gICAgICAgICAgICB0aGlzLmdldERhdGUoZGF0ZSksXG4gICAgICAgICAgICB0aGlzLmdldEhvdXIoZGF0ZSkgKyBob3VycyxcbiAgICAgICAgICAgIHRoaXMuZ2V0TWludXRlKGRhdGUpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgYWRkQ2FsZW5kYXJNaW51dGVzKGRhdGU6IERhdGUsIG1pbnV0ZXM6IG51bWJlcik6IERhdGUge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3JlYXRlRGF0ZVdpdGhPdmVyZmxvdyhcbiAgICAgICAgICAgIHRoaXMuZ2V0WWVhcihkYXRlKSxcbiAgICAgICAgICAgIHRoaXMuZ2V0TW9udGgoZGF0ZSksXG4gICAgICAgICAgICB0aGlzLmdldERhdGUoZGF0ZSksXG4gICAgICAgICAgICB0aGlzLmdldEhvdXIoZGF0ZSksXG4gICAgICAgICAgICB0aGlzLmdldE1pbnV0ZShkYXRlKSArIG1pbnV0ZXNcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICB0b0lzbzg2MDEoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAoc3VwZXIudG9Jc284NjAxKGRhdGUpICsgJ1QnICsgW3RoaXMuXzJkaWdpdChkYXRlLmdldFVUQ0hvdXJzKCkpLCB0aGlzLl8yZGlnaXQoZGF0ZS5nZXRVVENNaW51dGVzKCkpLF0uam9pbignOicpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldERhdGVJbk5leHRNb250aChkYXRlOiBEYXRlKSB7XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSArIDEsIDEsIGRhdGUuZ2V0SG91cnMoKSwgZGF0ZS5nZXRNaW51dGVzKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN0cmlwIG91dCB1bmljb2RlIExUUiBhbmQgUlRMIGNoYXJhY3RlcnMuIEVkZ2UgYW5kIElFIGluc2VydCB0aGVzZSBpbnRvIGZvcm1hdHRlZCBkYXRlcyB3aGlsZVxuICAgICAqIG90aGVyIGJyb3dzZXJzIGRvIG5vdC4gV2UgcmVtb3ZlIHRoZW0gdG8gbWFrZSBvdXRwdXQgY29uc2lzdGVudCBhbmQgYmVjYXVzZSB0aGV5IGludGVyZmVyZSB3aXRoXG4gICAgICogZGF0ZSBwYXJzaW5nLlxuICAgICAqIEBwYXJhbSBzdHIgVGhlIHN0cmluZyB0byBzdHJpcCBkaXJlY3Rpb24gY2hhcmFjdGVycyBmcm9tLlxuICAgICAqIEByZXR1cm5zIFRoZSBzdHJpcHBlZCBzdHJpbmcuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfc3RyaXBEaXJlY3Rpb25hbGl0eUNoYXJhY3RlcnMoc3RyOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHN0ci5yZXBsYWNlKC9bXFx1MjAwZVxcdTIwMGZdL2csICcnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYWRzIGEgbnVtYmVyIHRvIG1ha2UgaXQgdHdvIGRpZ2l0cy5cbiAgICAgKiBAcGFyYW0gbiBUaGUgbnVtYmVyIHRvIHBhZC5cbiAgICAgKiBAcmV0dXJucyBUaGUgcGFkZGVkIG51bWJlci5cbiAgICAgKi9cbiAgICBwcml2YXRlIF8yZGlnaXQobjogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiAoJzAwJyArIG4pLnNsaWNlKC0yKTtcbiAgICB9XG5cbiAgICAvKiogQ3JlYXRlcyBhIGRhdGUgYnV0IGFsbG93cyB0aGUgbW9udGggYW5kIGRhdGUgdG8gb3ZlcmZsb3cuICovXG4gICAgcHJpdmF0ZSBfY3JlYXRlRGF0ZVdpdGhPdmVyZmxvdyh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIGRhdGU6IG51bWJlciwgaG91cnM6IG51bWJlciwgbWludXRlczogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCBkYXRlLCBob3VycywgbWludXRlcyk7XG5cbiAgICAgICAgLy8gV2UgbmVlZCB0byBjb3JyZWN0IGZvciB0aGUgZmFjdCB0aGF0IEpTIG5hdGl2ZSBEYXRlIHRyZWF0cyB5ZWFycyBpbiByYW5nZSBbMCwgOTldIGFzXG4gICAgICAgIC8vIGFiYnJldmlhdGlvbnMgZm9yIDE5eHguXG4gICAgICAgIGlmICh5ZWFyID49IDAgJiYgeWVhciA8IDEwMCkge1xuICAgICAgICAgICAgcmVzdWx0LnNldEZ1bGxZZWFyKHRoaXMuZ2V0WWVhcihyZXN1bHQpIC0gMTkwMCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG59XG4iXX0=
|
@@ -0,0 +1,20 @@
|
|
1
|
+
export var GIPI_NATIVE_DATETIME_FORMATS = {
|
2
|
+
parse: {},
|
3
|
+
display: {
|
4
|
+
dateInput: { year: 'numeric', month: '2-digit', day: '2-digit' },
|
5
|
+
monthInput: { month: 'long' },
|
6
|
+
datetimeInput: {
|
7
|
+
year: 'numeric',
|
8
|
+
month: '2-digit',
|
9
|
+
day: '2-digit',
|
10
|
+
hour: '2-digit',
|
11
|
+
minute: '2-digit',
|
12
|
+
},
|
13
|
+
timeInput: { hour: '2-digit', minute: '2-digit' },
|
14
|
+
monthYearLabel: { year: 'numeric', month: 'short' },
|
15
|
+
dateA11yLabel: { year: 'numeric', month: 'long', day: 'numeric' },
|
16
|
+
monthYearA11yLabel: { year: 'numeric', month: 'long' },
|
17
|
+
popupHeaderDateLabel: { weekday: 'short', month: 'short', day: '2-digit' },
|
18
|
+
},
|
19
|
+
};
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlLWRhdGV0aW1lLWZvcm1hdHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZ2lwaXNpc3RlbWFzL25nLWNvcmUvIiwic291cmNlcyI6WyJzaGFyZWQvZ2lwaS1jb21wb25lbnRzL2RhdGV0aW1lLXBpY2tlci9tYXQtZGF0ZXRpbWUtcGlja2VyL3NoYXJlZC9hZGFwdGVyL25hdGl2ZS1kYXRldGltZS1mb3JtYXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBQyxJQUFNLDRCQUE0QixHQUF3QjtJQUM3RCxLQUFLLEVBQUUsRUFBRTtJQUNULE9BQU8sRUFBRTtRQUNMLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFO1FBQ2hFLFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7UUFDN0IsYUFBYSxFQUFFO1lBQ1gsSUFBSSxFQUFFLFNBQVM7WUFDZixLQUFLLEVBQUUsU0FBUztZQUNoQixHQUFHLEVBQUUsU0FBUztZQUNkLElBQUksRUFBRSxTQUFTO1lBQ2YsTUFBTSxFQUFFLFNBQVM7U0FDcEI7UUFDRCxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUU7UUFDakQsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO1FBQ25ELGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFO1FBQ2pFLGtCQUFrQixFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO1FBQ3RELG9CQUFvQixFQUFFLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUU7S0FDN0U7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR0lQSURhdGV0aW1lRm9ybWF0cyB9IGZyb20gJy4vZGF0ZXRpbWUtZm9ybWF0cyc7XG5cbmV4cG9ydCBjb25zdCBHSVBJX05BVElWRV9EQVRFVElNRV9GT1JNQVRTOiBHSVBJRGF0ZXRpbWVGb3JtYXRzID0ge1xuICAgIHBhcnNlOiB7fSxcbiAgICBkaXNwbGF5OiB7XG4gICAgICAgIGRhdGVJbnB1dDogeyB5ZWFyOiAnbnVtZXJpYycsIG1vbnRoOiAnMi1kaWdpdCcsIGRheTogJzItZGlnaXQnIH0sXG4gICAgICAgIG1vbnRoSW5wdXQ6IHsgbW9udGg6ICdsb25nJyB9LFxuICAgICAgICBkYXRldGltZUlucHV0OiB7XG4gICAgICAgICAgICB5ZWFyOiAnbnVtZXJpYycsXG4gICAgICAgICAgICBtb250aDogJzItZGlnaXQnLFxuICAgICAgICAgICAgZGF5OiAnMi1kaWdpdCcsXG4gICAgICAgICAgICBob3VyOiAnMi1kaWdpdCcsXG4gICAgICAgICAgICBtaW51dGU6ICcyLWRpZ2l0JyxcbiAgICAgICAgfSxcbiAgICAgICAgdGltZUlucHV0OiB7IGhvdXI6ICcyLWRpZ2l0JywgbWludXRlOiAnMi1kaWdpdCcgfSxcbiAgICAgICAgbW9udGhZZWFyTGFiZWw6IHsgeWVhcjogJ251bWVyaWMnLCBtb250aDogJ3Nob3J0JyB9LFxuICAgICAgICBkYXRlQTExeUxhYmVsOiB7IHllYXI6ICdudW1lcmljJywgbW9udGg6ICdsb25nJywgZGF5OiAnbnVtZXJpYycgfSxcbiAgICAgICAgbW9udGhZZWFyQTExeUxhYmVsOiB7IHllYXI6ICdudW1lcmljJywgbW9udGg6ICdsb25nJyB9LFxuICAgICAgICBwb3B1cEhlYWRlckRhdGVMYWJlbDogeyB3ZWVrZGF5OiAnc2hvcnQnLCBtb250aDogJ3Nob3J0JywgZGF5OiAnMi1kaWdpdCcgfSxcbiAgICB9LFxufTtcbiJdfQ==
|
@@ -0,0 +1,151 @@
|
|
1
|
+
import { __decorate, __metadata, __param } from "tslib";
|
2
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, Optional, Output, ViewEncapsulation, } from '@angular/core';
|
3
|
+
import { GIPIDatetimepickerCalendarCell } from './calendar-body';
|
4
|
+
import { slideCalendar } from './datetimepicker-animations';
|
5
|
+
import { createMissingDateImplError } from './datetimepicker-errors';
|
6
|
+
import { GIPIDatetimeAdapter } from './shared/adapter/datetime-adapter';
|
7
|
+
import { GIPI_DATETIME_FORMATS, } from './shared/adapter/datetime-formats';
|
8
|
+
/**
|
9
|
+
* An internal component used to display a single year in the datepicker.
|
10
|
+
* @docs-private
|
11
|
+
*/
|
12
|
+
var GIPIDatetimepickerYearViewComponent = /** @class */ (function () {
|
13
|
+
function GIPIDatetimepickerYearViewComponent(_adapter, _dateFormats) {
|
14
|
+
this._adapter = _adapter;
|
15
|
+
this._dateFormats = _dateFormats;
|
16
|
+
this.type = 'date';
|
17
|
+
/** Emits when a new month is selected. */
|
18
|
+
this.selectedChange = new EventEmitter();
|
19
|
+
this._userSelection = new EventEmitter();
|
20
|
+
if (!this._adapter) {
|
21
|
+
throw createMissingDateImplError('DatetimeAdapter');
|
22
|
+
}
|
23
|
+
if (!this._dateFormats) {
|
24
|
+
throw createMissingDateImplError('GIPI_DATETIME_FORMATS');
|
25
|
+
}
|
26
|
+
this._activeDate = this._adapter.today();
|
27
|
+
}
|
28
|
+
Object.defineProperty(GIPIDatetimepickerYearViewComponent.prototype, "activeDate", {
|
29
|
+
get: function () {
|
30
|
+
return this._activeDate;
|
31
|
+
},
|
32
|
+
set: function (value) {
|
33
|
+
var oldActiveDate = this._activeDate;
|
34
|
+
this._activeDate = value || this._adapter.today();
|
35
|
+
if (oldActiveDate && this._activeDate && !this._adapter.sameYear(oldActiveDate, this._activeDate)) {
|
36
|
+
this._init();
|
37
|
+
}
|
38
|
+
},
|
39
|
+
enumerable: false,
|
40
|
+
configurable: true
|
41
|
+
});
|
42
|
+
Object.defineProperty(GIPIDatetimepickerYearViewComponent.prototype, "selected", {
|
43
|
+
get: function () {
|
44
|
+
return this._selected;
|
45
|
+
},
|
46
|
+
set: function (value) {
|
47
|
+
this._selected = value;
|
48
|
+
this._selectedMonth = this._getMonthInCurrentYear(this.selected);
|
49
|
+
},
|
50
|
+
enumerable: false,
|
51
|
+
configurable: true
|
52
|
+
});
|
53
|
+
GIPIDatetimepickerYearViewComponent.prototype.ngAfterContentInit = function () {
|
54
|
+
this._init();
|
55
|
+
};
|
56
|
+
/** Handles when a new month is selected. */
|
57
|
+
GIPIDatetimepickerYearViewComponent.prototype._monthSelected = function (month) {
|
58
|
+
var normalizedDate = this._adapter.createDatetime(this._adapter.getYear(this.activeDate), month, 1, 0, 0);
|
59
|
+
this.selectedChange.emit(this._adapter.createDatetime(this._adapter.getYear(this.activeDate), month, Math.min(this._adapter.getDate(this.activeDate), this._adapter.getNumDaysInMonth(normalizedDate)), this._adapter.getHour(this.activeDate), this._adapter.getMinute(this.activeDate)));
|
60
|
+
if (this.type === 'month') {
|
61
|
+
this._userSelection.emit();
|
62
|
+
}
|
63
|
+
};
|
64
|
+
GIPIDatetimepickerYearViewComponent.prototype._calendarStateDone = function () {
|
65
|
+
this._calendarState = '';
|
66
|
+
};
|
67
|
+
/** Initializes this month view. */
|
68
|
+
GIPIDatetimepickerYearViewComponent.prototype._init = function () {
|
69
|
+
var _this = this;
|
70
|
+
this._selectedMonth = this._getMonthInCurrentYear(this.selected);
|
71
|
+
this._todayMonth = this._getMonthInCurrentYear(this._adapter.today());
|
72
|
+
this._yearLabel = this._adapter.getYearName(this.activeDate);
|
73
|
+
var monthNames = this._adapter.getMonthNames('short');
|
74
|
+
// First row of months only contains 5 elements so we can fit the year label on the same row.
|
75
|
+
this._months = [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]].map(function (row) { return row.map(function (month) { return _this._createCellForMonth(month, monthNames[month]); }); });
|
76
|
+
};
|
77
|
+
/**
|
78
|
+
* Gets the month in this year that the given Date falls on.
|
79
|
+
* Returns null if the given Date is in another year.
|
80
|
+
*/
|
81
|
+
GIPIDatetimepickerYearViewComponent.prototype._getMonthInCurrentYear = function (date) {
|
82
|
+
return this._adapter.sameYear(date, this.activeDate)
|
83
|
+
? this._adapter.getMonth(date)
|
84
|
+
: null;
|
85
|
+
};
|
86
|
+
/** Creates an MdCalendarCell for the given month. */
|
87
|
+
GIPIDatetimepickerYearViewComponent.prototype._createCellForMonth = function (month, monthName) {
|
88
|
+
var ariaLabel = this._adapter.format(this._adapter.createDatetime(this._adapter.getYear(this.activeDate), month, 1, this._adapter.getHour(this.activeDate), this._adapter.getMinute(this.activeDate)), this._dateFormats.display.monthYearA11yLabel);
|
89
|
+
return new GIPIDatetimepickerCalendarCell(month, monthName.toLocaleUpperCase(), ariaLabel, this._isMonthEnabled(month));
|
90
|
+
};
|
91
|
+
/** Whether the given month is enabled. */
|
92
|
+
GIPIDatetimepickerYearViewComponent.prototype._isMonthEnabled = function (month) {
|
93
|
+
if (!this.dateFilter) {
|
94
|
+
return true;
|
95
|
+
}
|
96
|
+
var firstOfMonth = this._adapter.createDatetime(this._adapter.getYear(this.activeDate), month, 1, this._adapter.getHour(this.activeDate), this._adapter.getMinute(this.activeDate));
|
97
|
+
// If any date in the month is enabled count the month as enabled.
|
98
|
+
for (var date = firstOfMonth; this._adapter.getMonth(date) == month; date = this._adapter.addCalendarDays(date, 1)) {
|
99
|
+
if (this.dateFilter(date)) {
|
100
|
+
return true;
|
101
|
+
}
|
102
|
+
}
|
103
|
+
return false;
|
104
|
+
};
|
105
|
+
GIPIDatetimepickerYearViewComponent.ctorParameters = function () { return [
|
106
|
+
{ type: GIPIDatetimeAdapter, decorators: [{ type: Optional }] },
|
107
|
+
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [GIPI_DATETIME_FORMATS,] }] }
|
108
|
+
]; };
|
109
|
+
__decorate([
|
110
|
+
Input(),
|
111
|
+
__metadata("design:type", String)
|
112
|
+
], GIPIDatetimepickerYearViewComponent.prototype, "type", void 0);
|
113
|
+
__decorate([
|
114
|
+
Input(),
|
115
|
+
__metadata("design:type", Function)
|
116
|
+
], GIPIDatetimepickerYearViewComponent.prototype, "dateFilter", void 0);
|
117
|
+
__decorate([
|
118
|
+
Input(),
|
119
|
+
__metadata("design:type", Object),
|
120
|
+
__metadata("design:paramtypes", [Object])
|
121
|
+
], GIPIDatetimepickerYearViewComponent.prototype, "activeDate", null);
|
122
|
+
__decorate([
|
123
|
+
Input(),
|
124
|
+
__metadata("design:type", Object),
|
125
|
+
__metadata("design:paramtypes", [Object])
|
126
|
+
], GIPIDatetimepickerYearViewComponent.prototype, "selected", null);
|
127
|
+
__decorate([
|
128
|
+
Output(),
|
129
|
+
__metadata("design:type", Object)
|
130
|
+
], GIPIDatetimepickerYearViewComponent.prototype, "selectedChange", void 0);
|
131
|
+
__decorate([
|
132
|
+
Output(),
|
133
|
+
__metadata("design:type", Object)
|
134
|
+
], GIPIDatetimepickerYearViewComponent.prototype, "_userSelection", void 0);
|
135
|
+
GIPIDatetimepickerYearViewComponent = __decorate([
|
136
|
+
Component({
|
137
|
+
selector: 'gipi-mat-datetime-picker-year-view',
|
138
|
+
template: "<table class=\"gipi-mat-datetime-picker-calendar-table\"\n role=\"presentation\">\n <thead class=\"gipi-mat-datetime-picker-calendar-table-header\">\n <tr>\n <th class=\"gipi-mat-datetime-picker-calendar-table-header-divider\"\n colspan=\"4\">\n </th>\n </tr>\n </thead>\n <tbody gipiMatDatetimePickerCalendarBody\n allowDisabledSelection=\"true\"\n role=\"grid\"\n [label]=\"_yearLabel\"\n [rows]=\"_months\"\n [todayValue]=\"_todayMonth\"\n [labelMinRequiredCells]=\"2\"\n [numCols]=\"4\"\n [cellAspectRatio]=\"4 / 7\"\n [activeCell]=\"_adapter.getMonth(activeDate)\"\n [selectedValue]=\"_selectedMonth\"\n [@slideCalendar]=\"_calendarState\"\n (@slideCalendar.done)=\"_calendarStateDone()\"\n (selectedValueChange)=\"_monthSelected($event)\">\n </tbody>\n</table>\n",
|
139
|
+
animations: [slideCalendar],
|
140
|
+
encapsulation: ViewEncapsulation.None,
|
141
|
+
changeDetection: ChangeDetectionStrategy.OnPush
|
142
|
+
}),
|
143
|
+
__param(0, Optional()),
|
144
|
+
__param(1, Optional()),
|
145
|
+
__param(1, Inject(GIPI_DATETIME_FORMATS)),
|
146
|
+
__metadata("design:paramtypes", [GIPIDatetimeAdapter, Object])
|
147
|
+
], GIPIDatetimepickerYearViewComponent);
|
148
|
+
return GIPIDatetimepickerYearViewComponent;
|
149
|
+
}());
|
150
|
+
export { GIPIDatetimepickerYearViewComponent };
|
151
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWVhci12aWV3LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGdpcGlzaXN0ZW1hcy9uZy1jb3JlLyIsInNvdXJjZXMiOlsic2hhcmVkL2dpcGktY29tcG9uZW50cy9kYXRldGltZS1waWNrZXIvbWF0LWRhdGV0aW1lLXBpY2tlci95ZWFyLXZpZXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBb0IsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEdBQUcsTUFBTSxlQUFlLENBQUM7QUFFeEosT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzVELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXJFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxxQkFBcUIsR0FBd0IsTUFBTSxtQ0FBbUMsQ0FBQztBQUVoRzs7O0dBR0c7QUFRSDtJQWdESSw2Q0FDdUIsUUFBZ0MsRUFHM0MsWUFBaUM7UUFIdEIsYUFBUSxHQUFSLFFBQVEsQ0FBd0I7UUFHM0MsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBcENwQyxTQUFJLEdBQTJCLE1BQU0sQ0FBQztRQTRCL0MsMENBQTBDO1FBQ2hDLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQUssQ0FBQztRQUN2QyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFRaEQsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDaEIsTUFBTSwwQkFBMEIsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1NBQ3ZEO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDcEIsTUFBTSwwQkFBMEIsQ0FBQyx1QkFBdUIsQ0FBQyxD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OzsyRUFBa0M7SUFJakM7UUFBUixLQUFLLEVBQUU7Ozt5RUFFUDtJQVdRO1FBQVIsS0FBSyxFQUFFOzs7dUVBRVA7SUFPUztRQUFULE1BQU0sRUFBRTs7K0VBQXdDO0lBQ3ZDO1FBQVQsTUFBTSxFQUFFOzsrRUFBMkM7SUE5QzNDLG1DQUFtQztRQVAvQyxTQUFTLENBQUM7WUFDUCxRQUFRLEVBQUUsb0NBQW9DO1lBQzlDLG05QkFBNkI7WUFDN0IsVUFBVSxFQUFFLENBQUMsYUFBYSxDQUFDO1lBQzNCLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO1lBQ3JDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO1NBQ2xELENBQUM7UUFrRE8sV0FBQSxRQUFRLEVBQUUsQ0FBQTtRQUNWLFdBQUEsUUFBUSxFQUFFLENBQUE7UUFDVixXQUFBLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO3lDQUZELG1CQUFtQjtPQWpEM0MsbUNBQW1DLENBaUovQztJQUFELDBDQUFDO0NBQUEsQUFqSkQsSUFpSkM7U0FqSlksbUNBQW1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIElucHV0LCBPcHRpb25hbCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbiwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgR0lQSURhdGV0aW1lcGlja2VyQ2FsZW5kYXJDZWxsIH0gZnJvbSAnLi9jYWxlbmRhci1ib2R5JztcbmltcG9ydCB7IHNsaWRlQ2FsZW5kYXIgfSBmcm9tICcuL2RhdGV0aW1lcGlja2VyLWFuaW1hdGlvbnMnO1xuaW1wb3J0IHsgY3JlYXRlTWlzc2luZ0RhdGVJbXBsRXJyb3IgfSBmcm9tICcuL2RhdGV0aW1lcGlja2VyLWVycm9ycyc7XG5pbXBvcnQgeyBHSVBJRGF0ZXRpbWVwaWNrZXJUeXBlIH0gZnJvbSAnLi9kYXRldGltZXBpY2tlci10eXBlJztcbmltcG9ydCB7IEdJUElEYXRldGltZUFkYXB0ZXIgfSBmcm9tICcuL3NoYXJlZC9hZGFwdGVyL2RhdGV0aW1lLWFkYXB0ZXInO1xuaW1wb3J0IHsgR0lQSV9EQVRFVElNRV9GT1JNQVRTLCBHSVBJRGF0ZXRpbWVGb3JtYXRzLCB9IGZyb20gJy4vc2hhcmVkL2FkYXB0ZXIvZGF0ZXRpbWUtZm9ybWF0cyc7XG5cbi8qKlxuICogQW4gaW50ZXJuYWwgY29tcG9uZW50IHVzZWQgdG8gZGlzcGxheSBhIHNpbmdsZSB5ZWFyIGluIHRoZSBkYXRlcGlja2VyLlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2dpcGktbWF0LWRhdGV0aW1lLXBpY2tlci15ZWFyLXZpZXcnLFxuICAgIHRlbXBsYXRlVXJsOiAneWVhci12aWV3Lmh0bWwnLFxuICAgIGFuaW1hdGlvbnM6IFtzbGlkZUNhbGVuZGFyXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBHSVBJRGF0ZXRpbWVwaWNrZXJZZWFyVmlld0NvbXBvbmVudDxEPiBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xuXG4gICAgLyoqIEdyaWQgb2YgY2FsZW5kYXIgY2VsbHMgcmVwcmVzZW50aW5nIHRoZSBtb250aHMgb2YgdGhlIHllYXIuICovXG4gICAgX21vbnRoczogR0lQSURhdGV0aW1lcGlja2VyQ2FsZW5kYXJDZWxsW11bXTtcblxuICAgIC8qKiBUaGUgbGFiZWwgZm9yIHRoaXMgeWVhciAoZS5nLiBcIjIwMTdcIikuICovXG4gICAgX3llYXJMYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqIFRoZSBtb250aCBpbiB0aGlzIHllYXIgdGhhdCB0b2RheSBmYWxscyBvbi4gTnVsbCBpZiB0b2RheSBpcyBpbiBhIGRpZmZlcmVudCB5ZWFyLiAqL1xuICAgIF90b2RheU1vbnRoOiBudW1iZXI7XG5cbiAgICAvKiogVGhlIG1vbnRoIGluIHRoaXMgeWVhciB0aGF0IHRoZSBzZWxlY3RlZCBEYXRlIGZhbGxzIG9uLiBOdWxsIGlmIHRoZSBzZWxlY3RlZCBEYXRlIGlzIGluIGEgZGlmZmVyZW50IHllYXIuICovXG4gICAgX3NlbGVjdGVkTW9udGg6IG51bWJlcjtcblxuICAgIF9jYWxlbmRhclN0YXRlOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSB0eXBlOiBHSVBJRGF0ZXRpbWVwaWNrZXJUeXBlID0gJ2RhdGUnO1xuXG4gICAgLyoqIEEgZnVuY3Rpb24gdXNlZCB0byBmaWx0ZXIgd2hpY2ggZGF0ZXMgYXJlIHNlbGVjdGFibGUuICovXG4gICAgQElucHV0KCkgZGF0ZUZpbHRlcjogKGRhdGU6IEQpID0+IGJvb2xlYW47XG5cbiAgICAvKiogVGhlIGRhdGUgdG8gZGlzcGxheSBpbiB0aGlzIHllYXIgdmlldyAoZXZlcnl0aGluZyBvdGhlciB0aGFuIHRoZSB5ZWFyIGlzIGlnbm9yZWQpLiAqL1xuICAgIHByaXZhdGUgX2FjdGl2ZURhdGU6IEQ7XG4gICAgQElucHV0KCkgZ2V0IGFjdGl2ZURhdGUoKTogRCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hY3RpdmVEYXRlO1xuICAgIH1cbiAgICBzZXQgYWN0aXZlRGF0ZSh2YWx1ZTogRCkge1xuICAgICAgICBsZXQgb2xkQWN0aXZlRGF0ZSA9IHRoaXMuX2FjdGl2ZURhdGU7XG4gICAgICAgIHRoaXMuX2FjdGl2ZURhdGUgPSB2YWx1ZSB8fCB0aGlzLl9hZGFwdGVyLnRvZGF5KCk7XG4gICAgICAgIGlmIChvbGRBY3RpdmVEYXRlICYmIHRoaXMuX2FjdGl2ZURhdGUgJiYgIXRoaXMuX2FkYXB0ZXIuc2FtZVllYXIob2xkQWN0aXZlRGF0ZSwgdGhpcy5fYWN0aXZlRGF0ZSkpIHtcbiAgICAgICAgICAgIHRoaXMuX2luaXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBUaGUgY3VycmVudGx5IHNlbGVjdGVkIGRhdGUuICovXG4gICAgcHJpdmF0ZSBfc2VsZWN0ZWQ6IEQ7XG4gICAgQElucHV0KCkgZ2V0IHNlbGVjdGVkKCk6IEQge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWQ7XG4gICAgfVxuICAgIHNldCBzZWxlY3RlZCh2YWx1ZTogRCkge1xuICAgICAgICB0aGlzLl9zZWxlY3RlZCA9IHZhbHVlO1xuICAgICAgICB0aGlzLl9zZWxlY3RlZE1vbnRoID0gdGhpcy5fZ2V0TW9udGhJbkN1cnJlbnRZZWFyKHRoaXMuc2VsZWN0ZWQpO1xuICAgIH1cblxuICAgIC8qKiBFbWl0cyB3aGVuIGEgbmV3IG1vbnRoIGlzIHNlbGVjdGVkLiAqL1xuICAgIEBPdXRwdXQoKSBzZWxlY3RlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RD4oKTtcbiAgICBAT3V0cHV0KCkgX3VzZXJTZWxlY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKCkgcHVibGljIF9hZGFwdGVyOiBHSVBJRGF0ZXRpbWVBZGFwdGVyPEQ+LFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBASW5qZWN0KEdJUElfREFURVRJTUVfRk9STUFUUylcbiAgICAgICAgcHJpdmF0ZSBfZGF0ZUZvcm1hdHM6IEdJUElEYXRldGltZUZvcm1hdHNcbiAgICApIHtcbiAgICAgICAgaWYgKCF0aGlzLl9hZGFwdGVyKSB7XG4gICAgICAgICAgICB0aHJvdyBjcmVhdGVNaXNzaW5nRGF0ZUltcGxFcnJvcignRGF0ZXRpbWVBZGFwdGVyJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuX2RhdGVGb3JtYXRzKSB7XG4gICAgICAgICAgICB0aHJvdyBjcmVhdGVNaXNzaW5nRGF0ZUltcGxFcnJvcignR0lQSV9EQVRFVElNRV9GT1JNQVRTJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9hY3RpdmVEYXRlID0gdGhpcy5fYWRhcHRlci50b2RheSgpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy5faW5pdCgpO1xuICAgIH1cblxuICAgIC8qKiBIYW5kbGVzIHdoZW4gYSBuZXcgbW9udGggaXMgc2VsZWN0ZWQuICovXG4gICAgX21vbnRoU2VsZWN0ZWQobW9udGg6IG51bWJlcikge1xuICAgICAgICBjb25zdCBub3JtYWxpemVkRGF0ZSA9IHRoaXMuX2FkYXB0ZXIuY3JlYXRlRGF0ZXRpbWUodGhpcy5fYWRhcHRlci5nZXRZZWFyKHRoaXMuYWN0aXZlRGF0ZSksIG1vbnRoLCAxLCAwLCAwKTtcblxuICAgICAgICB0aGlzLnNlbGVjdGVkQ2hhbmdlLmVtaXQoXG4gICAgICAgICAgICB0aGlzLl9hZGFwdGVyLmNyZWF0ZURhdGV0aW1lKFxuICAgICAgICAgICAgICAgIHRoaXMuX2FkYXB0ZXIuZ2V0WWVhcih0aGlzLmFjdGl2ZURhdGUpLFxuICAgICAgICAgICAgICAgIG1vbnRoLFxuICAgICAgICAgICAgICAgIE1hdGgubWluKHRoaXMuX2FkYXB0ZXIuZ2V0RGF0ZSh0aGlzLmFjdGl2ZURhdGUpLCB0aGlzLl9hZGFwdGVyLmdldE51bURheXNJbk1vbnRoKG5vcm1hbGl6ZWREYXRlKSksXG4gICAgICAgICAgICAgICAgdGhpcy5fYWRhcHRlci5nZXRIb3VyKHRoaXMuYWN0aXZlRGF0ZSksXG4gICAgICAgICAgICAgICAgdGhpcy5fYWRhcHRlci5nZXRNaW51dGUodGhpcy5hY3RpdmVEYXRlKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgICBpZiAodGhpcy50eXBlID09PSAnbW9udGgnKSB7XG4gICAgICAgICAgICB0aGlzLl91c2VyU2VsZWN0aW9uLmVtaXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIF9jYWxlbmRhclN0YXRlRG9uZSgpIHtcbiAgICAgICAgdGhpcy5fY2FsZW5kYXJTdGF0ZSA9ICcnO1xuICAgIH1cblxuICAgIC8qKiBJbml0aWFsaXplcyB0aGlzIG1vbnRoIHZpZXcuICovXG4gICAgcHJpdmF0ZSBfaW5pdCgpIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRNb250aCA9IHRoaXMuX2dldE1vbnRoSW5DdXJyZW50WWVhcih0aGlzLnNlbGVjdGVkKTtcbiAgICAgICAgdGhpcy5fdG9kYXlNb250aCA9IHRoaXMuX2dldE1vbnRoSW5DdXJyZW50WWVhcih0aGlzLl9hZGFwdGVyLnRvZGF5KCkpO1xuICAgICAgICB0aGlzLl95ZWFyTGFiZWwgPSB0aGlzLl9hZGFwdGVyLmdldFllYXJOYW1lKHRoaXMuYWN0aXZlRGF0ZSk7XG5cbiAgICAgICAgbGV0IG1vbnRoTmFtZXMgPSB0aGlzLl9hZGFwdGVyLmdldE1vbnRoTmFtZXMoJ3Nob3J0Jyk7XG4gICAgICAgIC8vIEZpcnN0IHJvdyBvZiBtb250aHMgb25seSBjb250YWlucyA1IGVsZW1lbnRzIHNvIHdlIGNhbiBmaXQgdGhlIHllYXIgbGFiZWwgb24gdGhlIHNhbWUgcm93LlxuICAgICAgICB0aGlzLl9tb250aHMgPSBbWzAsIDEsIDIsIDNdLCBbNCwgNSwgNiwgN10sIFs4LCA5LCAxMCwgMTFdXS5tYXAoKHJvdykgPT4gcm93Lm1hcCgobW9udGgpID0+IHRoaXMuX2NyZWF0ZUNlbGxGb3JNb250aChtb250aCwgbW9udGhOYW1lc1ttb250aF0pKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbW9udGggaW4gdGhpcyB5ZWFyIHRoYXQgdGhlIGdpdmVuIERhdGUgZmFsbHMgb24uXG4gICAgICogUmV0dXJucyBudWxsIGlmIHRoZSBnaXZlbiBEYXRlIGlzIGluIGFub3RoZXIgeWVhci5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9nZXRNb250aEluQ3VycmVudFllYXIoZGF0ZTogRCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRhcHRlci5zYW1lWWVhcihkYXRlLCB0aGlzLmFjdGl2ZURhdGUpXG4gICAgICAgICAgICA/IHRoaXMuX2FkYXB0ZXIuZ2V0TW9udGgoZGF0ZSlcbiAgICAgICAgICAgIDogbnVsbDtcbiAgICB9XG5cbiAgICAvKiogQ3JlYXRlcyBhbiBNZENhbGVuZGFyQ2VsbCBmb3IgdGhlIGdpdmVuIG1vbnRoLiAqL1xuICAgIHByaXZhdGUgX2NyZWF0ZUNlbGxGb3JNb250aChtb250aDogbnVtYmVyLCBtb250aE5hbWU6IHN0cmluZykge1xuICAgICAgICBsZXQgYXJpYUxhYmVsID0gdGhpcy5fYWRhcHRlci5mb3JtYXQoXG4gICAgICAgICAgICB0aGlzLl9hZGFwdGVyLmNyZWF0ZURhdGV0aW1lKHRoaXMuX2FkYXB0ZXIuZ2V0WWVhcih0aGlzLmFjdGl2ZURhdGUpLCBtb250aCwgMSwgdGhpcy5fYWRhcHRlci5nZXRIb3VyKHRoaXMuYWN0aXZlRGF0ZSksIHRoaXMuX2FkYXB0ZXIuZ2V0TWludXRlKHRoaXMuYWN0aXZlRGF0ZSkpLFxuICAgICAgICAgICAgdGhpcy5fZGF0ZUZvcm1hdHMuZGlzcGxheS5tb250aFllYXJBMTF5TGFiZWxcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIG5ldyBHSVBJRGF0ZXRpbWVwaWNrZXJDYWxlbmRhckNlbGwobW9udGgsIG1vbnRoTmFtZS50b0xvY2FsZVVwcGVyQ2FzZSgpLCBhcmlhTGFiZWwsIHRoaXMuX2lzTW9udGhFbmFibGVkKG1vbnRoKSk7XG4gICAgfVxuXG4gICAgLyoqIFdoZXRoZXIgdGhlIGdpdmVuIG1vbnRoIGlzIGVuYWJsZWQuICovXG4gICAgcHJpdmF0ZSBfaXNNb250aEVuYWJsZWQobW9udGg6IG51bWJlcikge1xuICAgICAgICBpZiAoIXRoaXMuZGF0ZUZpbHRlcikge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZmlyc3RPZk1vbnRoID0gdGhpcy5fYWRhcHRlci5jcmVhdGVEYXRldGltZShcbiAgICAgICAgICAgIHRoaXMuX2FkYXB0ZXIuZ2V0WWVhcih0aGlzLmFjdGl2ZURhdGUpLFxuICAgICAgICAgICAgbW9udGgsXG4gICAgICAgICAgICAxLFxuICAgICAgICAgICAgdGhpcy5fYWRhcHRlci5nZXRIb3VyKHRoaXMuYWN0aXZlRGF0ZSksXG4gICAgICAgICAgICB0aGlzLl9hZGFwdGVyLmdldE1pbnV0ZSh0aGlzLmFjdGl2ZURhdGUpXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gSWYgYW55IGRhdGUgaW4gdGhlIG1vbnRoIGlzIGVuYWJsZWQgY291bnQgdGhlIG1vbnRoIGFzIGVuYWJsZWQuXG4gICAgICAgIGZvciAobGV0IGRhdGUgPSBmaXJzdE9mTW9udGg7IHRoaXMuX2FkYXB0ZXIuZ2V0TW9udGgoZGF0ZSkgPT0gbW9udGg7IGRhdGUgPSB0aGlzLl9hZGFwdGVyLmFkZENhbGVuZGFyRGF5cyhkYXRlLCAxKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZGF0ZUZpbHRlcihkYXRlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxufVxuIl19
|
@@ -180,7 +180,7 @@ var GIPIDropdownMenuComponent = /** @class */ (function () {
|
|
180
180
|
'class': 'gipi-dropdown-menu',
|
181
181
|
},
|
182
182
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
183
|
-
styles: [".dropdown-menu-container{display:flex;flex-direction:column;gap:1rem;width:100%}.dropdown-menu-container .dropdown-menu-label{color:#131313;font-size:1.4rem;line-height:100%}.dropdown-menu-container .dropdown-menu-label>span{color:#d14014;font-size:inherit;line-height:inherit}.dropdown-menu-container .dropdown-menu-content{display:flex;flex-direction:row;align-items:center;justify-content:space-between;padding:12px;gap:1rem;width:100%;max-height:4rem;border-radius:5px;cursor:pointer;background-color:#fff;border:1px solid
|
183
|
+
styles: [".dropdown-menu-container{display:flex;flex-direction:column;gap:1rem;width:100%}.dropdown-menu-container .dropdown-menu-label{color:#131313;font-size:1.4rem;line-height:100%}.dropdown-menu-container .dropdown-menu-label>span{color:#d14014;font-size:inherit;line-height:inherit}.dropdown-menu-container .dropdown-menu-content{display:flex;flex-direction:row;align-items:center;justify-content:space-between;padding:12px;gap:1rem;width:100%;max-height:4rem;border-radius:5px;cursor:pointer;background-color:#fff;border:1px solid #0000001f;color:#696969;transition:.2s}.dropdown-menu-container .dropdown-menu-content:focus-within,.dropdown-menu-container .dropdown-menu-content:has(.dropdown-menu-input:active),.dropdown-menu-container .dropdown-menu-content:has(.dropdown-menu-input:focus){box-shadow:0 0 0 .2rem #f0f0f0}.dropdown-menu-container .dropdown-menu-content:focus-within,.dropdown-menu-container .dropdown-menu-content:hover{border-color:#bfbfbf!important;background-color:#f5f5f5}.dropdown-menu-container .dropdown-menu-content:has(.dropdown-menu-input:disabled){background-color:#e0e1e2!important;border-color:#e0e1e2!important;color:#d1d2d4!important;box-shadow:none!important;cursor:not-allowed!important;pointer-events:none!important}.dropdown-menu-container .dropdown-menu-content:has(.dropdown-menu-input:disabled) .dropdown-menu-input,.dropdown-menu-container .dropdown-menu-content:has(.dropdown-menu-input:disabled) .dropdown-menu-suffix .dropdown-menu-button{cursor:not-allowed!important;pointer-events:none!important}.dropdown-menu-container .dropdown-menu-content:has(.dropdown-menu-input:disabled) .dropdown-menu-suffix .dropdown-menu-trigger{border-color:#e0e1e2!important;pointer-events:none!important}.dropdown-menu-container .dropdown-menu-content:has(.dropdown-menu-input:disabled) mat-icon{color:#d1d2d4!important;fill:#d1d2d4!important;cursor:not-allowed!important;pointer-events:none!important}.dropdown-menu-container .dropdown-menu-content .dropdown-menu-input{cursor:pointer;height:16px;outline:0;border:none;background-color:transparent;color:inherit;flex:1;max-width:90%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dropdown-menu-container .dropdown-menu-content .dropdown-menu-suffix{display:flex;flex-direction:row;align-items:center;gap:16px}.dropdown-menu-container .dropdown-menu-content .dropdown-menu-suffix .dropdown-menu-trigger{display:flex;flex-direction:column;align-items:center;justify-content:center;padding-inline:8px;border-radius:40px;border:1px solid transparent;color:#131313;background-color:#f0f0f0;font-size:1.2rem;line-height:1.4rem}.dropdown-menu-container .dropdown-menu-content .dropdown-menu-suffix .dropdown-menu-button{display:flex;align-items:center;justify-content:center;outline:0;border:none;cursor:pointer;background-color:transparent}.dropdown-menu-container .dropdown-menu-content .dropdown-menu-suffix .dropdown-menu-button:hover:not(:disabled)>mat-icon{transform:scale(1.08)}.dropdown-menu-icon{width:1.6rem;height:1.6rem;font-size:1.6rem;color:#131313;fill:#131313}.btn-popover-content{background-color:#fff;border-radius:4px;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12);padding:8px}"]
|
184
184
|
}),
|
185
185
|
__metadata("design:paramtypes", [ChangeDetectorRef,
|
186
186
|
ElementRef])
|
@@ -265,7 +265,7 @@ var GIPIFormFieldComponent = /** @class */ (function () {
|
|
265
265
|
'class': 'gipi-form-field',
|
266
266
|
},
|
267
267
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
268
|
-
styles: [":host{display:block;min-width:0;max-width:100%;flex:1}.form-field-container{display:flex;flex-direction:column;gap:1rem;width:100%}.form-field-container .form-field-label{color:#131313;font-size:1.4rem;line-height:100%}.form-field-container .form-field-label>span{color:#d14014;font-size:inherit;line-height:inherit}.form-field-container .form-field-content{display:flex;flex-direction:row;align-items:center;justify-content:space-between;padding:1.2rem;gap:1rem;width:100%;max-height:4rem;border-radius:5px;cursor:text;background-color:#fff;border:1px solid
|
268
|
+
styles: [":host{display:block;min-width:0;max-width:100%;flex:1}.form-field-container{display:flex;flex-direction:column;gap:1rem;width:100%}.form-field-container .form-field-label{color:#131313;font-size:1.4rem;line-height:100%}.form-field-container .form-field-label>span{color:#d14014;font-size:inherit;line-height:inherit}.form-field-container .form-field-content{display:flex;flex-direction:row;align-items:center;justify-content:space-between;padding:1.2rem;gap:1rem;width:100%;max-height:4rem;border-radius:5px;cursor:text;background-color:#fff;border:1px solid #0000001f;color:#696969;caret-color:#9a9da2;transition:.2s}.form-field-container .form-field-content:focus-within,.form-field-container .form-field-content:has(.form-field-input:active),.form-field-container .form-field-content:has(.form-field-input:focus){box-shadow:0 0 0 .2rem #f0f0f0}.form-field-container .form-field-content:focus-within,.form-field-container .form-field-content:hover{border-color:#bfbfbf!important}.form-field-container .form-field-content:has(.form-field-input:invalid){border-color:#d14014!important;color:#d14014!important;caret-color:#d14014!important}.form-field-container .form-field-content:has(.form-field-input:invalid):focus-within{box-shadow:0 0 0 .2rem #f1c4b6!important}.form-field-container .form-field-content:has(.form-field-input:disabled){border-color:#e0e1e2!important;color:#d1d2d4!important;box-shadow:none!important;cursor:not-allowed!important;caret-color:#d1d2d4!important;pointer-events:none!important}.form-field-container .form-field-content:has(.form-field-input:disabled) .form-field-input,.form-field-container .form-field-content:has(.form-field-input:disabled) .form-field-suffix .form-field-button{cursor:not-allowed!important;pointer-events:none!important}.form-field-container .form-field-content:has(.form-field-input:disabled) .form-field-suffix .form-field-trigger{border-color:#e0e1e2!important;pointer-events:none!important}.form-field-container .form-field-content:has(.form-field-input:disabled) mat-icon{color:#d1d2d4!important;fill:#d1d2d4!important;cursor:not-allowed!important;pointer-events:none!important}.form-field-container .form-field-content.form-field-select,.form-field-container .form-field-content.form-field-select .form-field-input{box-shadow:none!important;cursor:pointer!important}.form-field-container .form-field-content .form-field-input{height:16px;outline:0;border:none;background-color:transparent;color:inherit;flex:1;max-width:85%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.form-field-container .form-field-content .form-field-suffix{display:flex;flex-direction:row;align-items:center;gap:1.6rem}.form-field-container .form-field-content .form-field-suffix .form-field-trigger{display:flex;flex-direction:column;align-items:center;justify-content:center;padding-inline:8px;border-radius:40px;border:1px solid transparent;color:#131313;background-color:#f0f0f0;font-size:1.2rem;line-height:1.4rem}.form-field-container .form-field-content .form-field-suffix .form-field-button{display:flex;align-items:center;justify-content:center;outline:0;border:none;cursor:pointer;background-color:transparent}.form-field-container .form-field-content .form-field-suffix .form-field-button:hover:not(:disabled)>mat-icon{transform:scale(1.08)}.form-field-icon{width:1.6rem;height:1.6rem;font-size:1.6rem;color:#131313;fill:#131313}.form-field-icon-arrow{border:solid #131313;border-width:0 2px 2px 0;display:inline-block;padding:3px;transform:rotate(45deg);margin:-5px 4px 0}"]
|
269
269
|
}),
|
270
270
|
__metadata("design:paramtypes", [ChangeDetectorRef,
|
271
271
|
ElementRef])
|
@@ -196,7 +196,7 @@ var GIPIInputCurrencyComponent = /** @class */ (function () {
|
|
196
196
|
'class': 'gipi-input-currency',
|
197
197
|
},
|
198
198
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
199
|
-
styles: [":host{display:block;min-width:0;max-width:100%;flex:1}.input-currency-container{display:flex;flex-direction:column;gap:1rem;width:100%}.input-currency-container .input-currency-label{color:#131313;font-size:1.4rem;line-height:100%}.input-currency-container .input-currency-label>span{color:#d14014;font-size:inherit;line-height:inherit}.input-currency-container .input-currency-content{display:flex;flex-direction:row;align-items:center;justify-content:space-between;padding:12px;width:100%;max-height:4rem;border-radius:5px;cursor:text;background-color:#fff;border:1px solid
|
199
|
+
styles: [":host{display:block;min-width:0;max-width:100%;flex:1}.input-currency-container{display:flex;flex-direction:column;gap:1rem;width:100%}.input-currency-container .input-currency-label{color:#131313;font-size:1.4rem;line-height:100%}.input-currency-container .input-currency-label>span{color:#d14014;font-size:inherit;line-height:inherit}.input-currency-container .input-currency-content{display:flex;flex-direction:row;align-items:center;justify-content:space-between;padding:12px;width:100%;max-height:4rem;border-radius:5px;cursor:text;background-color:#fff;border:1px solid #0000001f;color:#696969;caret-color:#9a9da2;transition:.2s}.input-currency-container .input-currency-content:focus-within,.input-currency-container .input-currency-content:has(.input-currency-input:active),.input-currency-container .input-currency-content:has(.input-currency-input:focus){box-shadow:0 0 0 .2rem #f0f0f0}.input-currency-container .input-currency-content:focus-within,.input-currency-container .input-currency-content:hover{border-color:#bfbfbf!important}.input-currency-container .input-currency-content:has(.input-currency-input:invalid){border-color:#d14014!important;color:#d14014!important;caret-color:#d14014!important}.input-currency-container .input-currency-content:has(.input-currency-input:invalid):focus-within{box-shadow:0 0 0 .2rem #f1c4b6!important}.input-currency-container .input-currency-content:has(.input-currency-input:disabled){color:#bbbdc1!important;border-color:#e0e1e2!important;background-color:#f5f5f6!important;cursor:not-allowed!important;box-shadow:none!important;pointer-events:none!important}.input-currency-container .input-currency-content .input-currency-input{height:16px;outline:0;border:none;background-color:transparent;color:inherit;flex:1}"]
|
200
200
|
}),
|
201
201
|
__metadata("design:paramtypes", [ChangeDetectorRef,
|
202
202
|
ElementRef])
|