@energycap/components 0.44.8 → 0.44.9-Angular19Upgrade.20260217-1620
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/energycap-components.mjs +379 -354
- package/fesm2022/energycap-components.mjs.map +1 -1
- package/lib/controls/button/copy-button-base.directive.d.ts +1 -1
- package/lib/controls/date-input/date-input.component.d.ts +1 -1
- package/lib/controls/form-control-base.d.ts +1 -1
- package/lib/core/date-time-helper.d.ts +2 -2
- package/lib/display/hierarchy/hierarchy-base.d.ts +1 -1
- package/lib/display/hierarchy/hierarchy-mocks.spec.d.ts +1 -1
- package/lib/display/resizable/resizable-base.d.ts +1 -1
- package/lib/shared/display/pipes/date-display.pipe.d.ts +1 -1
- package/lib/shared/page/page-base/page-base.component.d.ts +1 -1
- package/lib/shared/testing/public-mocks.spec.d.ts +1 -1
- package/lib/shared/wizard/wizard-base/wizard-base.component.d.ts +1 -1
- package/package.json +1 -3
- package/schematics/utilities/typescript.js +3 -4
- package/schematics/utilities/typescript.js.map +1 -1
- package/schematics/utilities/workspace.d.ts +0 -8
- package/schematics/utilities/workspace.js +48 -71
- package/schematics/utilities/workspace.js.map +1 -1
- package/esm2022/energycap-components.mjs +0 -5
- package/esm2022/lib/components.module.mjs +0 -425
- package/esm2022/lib/controls/banner/banner.component.mjs +0 -112
- package/esm2022/lib/controls/button/button.component.mjs +0 -114
- package/esm2022/lib/controls/button/copy-button-base.directive.mjs +0 -67
- package/esm2022/lib/controls/button/copy-button.directive.mjs +0 -28
- package/esm2022/lib/controls/button/copy-table-button.directive.mjs +0 -43
- package/esm2022/lib/controls/calendar/calendar-item.component.mjs +0 -91
- package/esm2022/lib/controls/calendar/calendar.component.mjs +0 -251
- package/esm2022/lib/controls/calendar/calendar.types.mjs +0 -2
- package/esm2022/lib/controls/checkbox/checkbox.component.mjs +0 -140
- package/esm2022/lib/controls/collapsible-toggle/collapsible-toggle.component.mjs +0 -38
- package/esm2022/lib/controls/combobox/combobox.component.mjs +0 -879
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/date-input-selection-strategy-base.mjs +0 -57
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/day-selection-strategy.mjs +0 -62
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/last-28-days-selection-strategy.mjs +0 -100
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/last-7-days-selection-strategy.mjs +0 -101
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/month-selection-strategy.mjs +0 -76
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/quarter-selection-strategy.mjs +0 -79
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/range-selection-strategy.mjs +0 -210
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/year-selection-strategy.mjs +0 -81
- package/esm2022/lib/controls/date-input/date-input.component.mjs +0 -466
- package/esm2022/lib/controls/date-input/date-input.types.mjs +0 -44
- package/esm2022/lib/controls/dropdown/dropdown.component.mjs +0 -243
- package/esm2022/lib/controls/file-upload/file-upload.component.mjs +0 -261
- package/esm2022/lib/controls/form-control/form-control.component.mjs +0 -110
- package/esm2022/lib/controls/form-control-base.mjs +0 -151
- package/esm2022/lib/controls/form-control-label/form-control-label.component.mjs +0 -136
- package/esm2022/lib/controls/form-group/form-group.component.mjs +0 -261
- package/esm2022/lib/controls/help-popover/help-popover.component.mjs +0 -31
- package/esm2022/lib/controls/item-picker/item-picker.component.mjs +0 -329
- package/esm2022/lib/controls/link-button/link-button.component.mjs +0 -11
- package/esm2022/lib/controls/menu/menu.component.mjs +0 -485
- package/esm2022/lib/controls/navigation/link-item.mjs +0 -2
- package/esm2022/lib/controls/navigation/nav-group.mjs +0 -39
- package/esm2022/lib/controls/navigation/nav-item-active.directive.mjs +0 -92
- package/esm2022/lib/controls/navigation/nav-item.mjs +0 -2
- package/esm2022/lib/controls/numericbox/numericbox.component.mjs +0 -372
- package/esm2022/lib/controls/popover/popover.component.mjs +0 -117
- package/esm2022/lib/controls/radio-button/radio-button-option.mjs +0 -3
- package/esm2022/lib/controls/radio-button/radio-button.component.mjs +0 -82
- package/esm2022/lib/controls/select/select.component.mjs +0 -88
- package/esm2022/lib/controls/tabs/tabs.component.mjs +0 -47
- package/esm2022/lib/controls/textbox/textbox.component.mjs +0 -155
- package/esm2022/lib/core/cache.service.mjs +0 -105
- package/esm2022/lib/core/custom-validators.mjs +0 -29
- package/esm2022/lib/core/date-time-helper.mjs +0 -228
- package/esm2022/lib/core/error.service.mjs +0 -61
- package/esm2022/lib/core/router-helper.service.mjs +0 -111
- package/esm2022/lib/core/scroll.service.mjs +0 -89
- package/esm2022/lib/core/telemetry-tracker.service.mjs +0 -16
- package/esm2022/lib/core/telemetry.service.mjs +0 -38
- package/esm2022/lib/core/validation-message.service.mjs +0 -185
- package/esm2022/lib/core/validation-patterns.mjs +0 -31
- package/esm2022/lib/core/window.service.mjs +0 -186
- package/esm2022/lib/display/app-bar/app-bar.component.mjs +0 -49
- package/esm2022/lib/display/avatar/avatar.component.mjs +0 -67
- package/esm2022/lib/display/avatar/avatar.service.mjs +0 -64
- package/esm2022/lib/display/confirm/confirm.component.mjs +0 -168
- package/esm2022/lib/display/dialog/dialog-content.mjs +0 -2
- package/esm2022/lib/display/dialog/dialog-group/dialog-group.component.mjs +0 -63
- package/esm2022/lib/display/dialog/dialog-types.mjs +0 -77
- package/esm2022/lib/display/dialog/dialog.component.mjs +0 -287
- package/esm2022/lib/display/dialog/dialog.service.mjs +0 -71
- package/esm2022/lib/display/help/help-types.mjs +0 -2
- package/esm2022/lib/display/hierarchy/hierarchy-base.mjs +0 -111
- package/esm2022/lib/display/hierarchy/hierarchy-mocks.spec.mjs +0 -54
- package/esm2022/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.mjs +0 -65
- package/esm2022/lib/display/item-display/item-display.component.mjs +0 -83
- package/esm2022/lib/display/json-display/json-display.component.mjs +0 -47
- package/esm2022/lib/display/resizable/resizable-base.mjs +0 -120
- package/esm2022/lib/display/resizable/resizable.component.mjs +0 -57
- package/esm2022/lib/display/spinner/spinner.component.mjs +0 -12
- package/esm2022/lib/display/splash/splash.component.mjs +0 -61
- package/esm2022/lib/display/splash/splash.service.mjs +0 -35
- package/esm2022/lib/display/table/resizable-column.component.mjs +0 -20
- package/esm2022/lib/display/table/resizable-table.directive.mjs +0 -227
- package/esm2022/lib/display/table/searchable-table.component.mjs +0 -344
- package/esm2022/lib/display/table/table-detail-row.component.mjs +0 -28
- package/esm2022/lib/display/table/table-locked-column.component.mjs +0 -58
- package/esm2022/lib/display/table/table-master-header-row.component.mjs +0 -14
- package/esm2022/lib/display/table/table-master-row.component.mjs +0 -163
- package/esm2022/lib/display/table/table-pagination.component.mjs +0 -155
- package/esm2022/lib/display/table/table-selectable-row.component.mjs +0 -235
- package/esm2022/lib/display/table/table.component.mjs +0 -257
- package/esm2022/lib/display/tags/tag.mjs +0 -18
- package/esm2022/lib/display/tags/tags.component.mjs +0 -82
- package/esm2022/lib/display/toast/toast/toast.component.mjs +0 -77
- package/esm2022/lib/display/toast/toast-types.mjs +0 -8
- package/esm2022/lib/display/toast/toast.service.mjs +0 -35
- package/esm2022/lib/display/toast/toaster/toaster.component.mjs +0 -114
- package/esm2022/lib/display/tooltip/tooltip.component.mjs +0 -28
- package/esm2022/lib/display/tooltip/tooltip.service.mjs +0 -78
- package/esm2022/lib/display/tooltip-directive/tooltip.directive.mjs +0 -173
- package/esm2022/lib/display/tree/tree.component.mjs +0 -139
- package/esm2022/lib/display/view-overlay/view-overlay.component.mjs +0 -58
- package/esm2022/lib/shared/directives/click-area-for/click-area-for.directive.mjs +0 -32
- package/esm2022/lib/shared/directives/if-viewport-width/if-viewport-width.directive.mjs +0 -111
- package/esm2022/lib/shared/directives/keyboard-nav-container/keyboard-nav-container.directive.mjs +0 -103
- package/esm2022/lib/shared/directives/popup/popup-container.directive.mjs +0 -166
- package/esm2022/lib/shared/display/pipes/date-display-2.pipe.mjs +0 -39
- package/esm2022/lib/shared/display/pipes/date-display.pipe.mjs +0 -51
- package/esm2022/lib/shared/display/pipes/highlight-text.pipe.mjs +0 -30
- package/esm2022/lib/shared/display/pipes/relative-date.pipe.mjs +0 -62
- package/esm2022/lib/shared/display/pipes/row-count.pipe.mjs +0 -48
- package/esm2022/lib/shared/display/pipes/time-display.pipe.mjs +0 -41
- package/esm2022/lib/shared/display.mjs +0 -6
- package/esm2022/lib/shared/form-group.helper.mjs +0 -67
- package/esm2022/lib/shared/json-helper.mjs +0 -19
- package/esm2022/lib/shared/lodash-helper.mjs +0 -52
- package/esm2022/lib/shared/page/page-base/page-base.component.mjs +0 -387
- package/esm2022/lib/shared/page/page-statuses.mjs +0 -23
- package/esm2022/lib/shared/page/page-title/page-title.component.mjs +0 -23
- package/esm2022/lib/shared/page/page-view/page-view.component.mjs +0 -147
- package/esm2022/lib/shared/testing/copy-button-base-test-injector-factory.spec.mjs +0 -17
- package/esm2022/lib/shared/testing/hierarchy-base-test-injector-factory.spec.mjs +0 -17
- package/esm2022/lib/shared/testing/page-base-component-test-helper.spec.mjs +0 -38
- package/esm2022/lib/shared/testing/page-base-component-test-injector-factory.spec.mjs +0 -98
- package/esm2022/lib/shared/testing/public-mocks.spec.mjs +0 -148
- package/esm2022/lib/shared/testing/spy-factory.spec.mjs +0 -40
- package/esm2022/lib/shared/testing/translation-mocks.spec.mjs +0 -57
- package/esm2022/lib/shared/user-preference.service.mjs +0 -17
- package/esm2022/lib/shared/wizard/wizard-base/wizard-base.component.mjs +0 -246
- package/esm2022/lib/shared/wizard/wizard-buttons/wizard-buttons.component.mjs +0 -68
- package/esm2022/lib/shared/wizard/wizard-progress/wizard-progress.component.mjs +0 -18
- package/esm2022/public-api.mjs +0 -115
|
@@ -1,251 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';
|
|
2
|
-
import { range } from 'lodash';
|
|
3
|
-
import moment from 'moment';
|
|
4
|
-
import { DateTimeHelper } from '../../core/date-time-helper';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@angular/common";
|
|
7
|
-
import * as i2 from "./calendar-item.component";
|
|
8
|
-
export class CalendarComponent {
|
|
9
|
-
constructor() {
|
|
10
|
-
this.id = 'calendar';
|
|
11
|
-
this.selection = null;
|
|
12
|
-
this.selectionMode = 'day';
|
|
13
|
-
this.minDate = DateTimeHelper.minDatePickerDate;
|
|
14
|
-
this.maxDate = DateTimeHelper.maxDatePickerDate;
|
|
15
|
-
this.tabindex = 0;
|
|
16
|
-
this.dateSelected = new EventEmitter();
|
|
17
|
-
/** Determines the current view of the calendar. */
|
|
18
|
-
this.view = { mode: 'day', date: new Date() };
|
|
19
|
-
this.viewChange = new EventEmitter();
|
|
20
|
-
/** Array of calendar item rows to display in the calendar. */
|
|
21
|
-
this.calendarItems = [];
|
|
22
|
-
/** Weekday labels to show at the top of the calendar in day view. */
|
|
23
|
-
this.weekDays = moment.weekdaysShort().map(d => d.slice(0, 1));
|
|
24
|
-
this.disablePreviousButton = false;
|
|
25
|
-
this.disableNextButton = false;
|
|
26
|
-
// Trackby functions for ngFor loops. These reduce the number of DOM elements that need to be updated when the calendar is re-drawn.
|
|
27
|
-
// Without these there are some change-detection issues on the first-time rendering of the calendar.
|
|
28
|
-
this.trackByDateRow = (index, row) => `${row[0].date.toISOString()}-${row[row.length - 1].date.toISOString()}`;
|
|
29
|
-
this.trackByDate = (index, item) => item.date.toISOString();
|
|
30
|
-
}
|
|
31
|
-
ngOnChanges(changes) {
|
|
32
|
-
if (changes.view) {
|
|
33
|
-
this.drawCalendar(this.view);
|
|
34
|
-
}
|
|
35
|
-
if (changes.minDate || changes.maxDate) {
|
|
36
|
-
this.updateNextPreviousStates();
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
ngOnInit() {
|
|
40
|
-
if (!this.calendarItems.length) {
|
|
41
|
-
this.drawCalendar(this.view);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
onNextClick() {
|
|
45
|
-
// If we're in day view, we're incrementing by month
|
|
46
|
-
// In month, quarter, and year views we're incrementing by year\
|
|
47
|
-
const unit = this.view.mode === 'day' ? 'month' : 'year';
|
|
48
|
-
// In year view, we're moving by 16 years at a time. Otherwise we're just moving by 1 month/year.
|
|
49
|
-
const count = this.view.mode === 'year' ? 16 : 1;
|
|
50
|
-
const goToDate = moment(this.view.date).add(count, unit).toDate();
|
|
51
|
-
this.drawCalendar({ mode: this.view.mode, date: goToDate });
|
|
52
|
-
}
|
|
53
|
-
onPreviousClick() {
|
|
54
|
-
// If we're in day view, we're incrementing by month
|
|
55
|
-
// In month, quarter, and year views we're incrementing by year
|
|
56
|
-
const unit = this.view.mode === 'day' ? 'month' : 'year';
|
|
57
|
-
// In year view, we're moving by 16 years at a time. Otherwise we're just moving by 1 month/year.
|
|
58
|
-
const count = this.view.mode === 'year' ? 16 : 1;
|
|
59
|
-
const goToDate = moment(this.view.date).subtract(count, unit).toDate();
|
|
60
|
-
this.drawCalendar({ mode: this.view.mode, date: goToDate });
|
|
61
|
-
}
|
|
62
|
-
/** Switches the calendar to month view. */
|
|
63
|
-
onMonthClick() {
|
|
64
|
-
this.drawCalendar({ mode: 'month', date: this.view.date });
|
|
65
|
-
}
|
|
66
|
-
/** Switches the calendar to year view. */
|
|
67
|
-
onYearClick() {
|
|
68
|
-
this.drawCalendar({ mode: 'year', date: this.view.date });
|
|
69
|
-
}
|
|
70
|
-
onItemSelected(item) {
|
|
71
|
-
switch (this.view.mode) {
|
|
72
|
-
case 'day':
|
|
73
|
-
this.onDaySelected(item);
|
|
74
|
-
break;
|
|
75
|
-
case 'month':
|
|
76
|
-
this.onMonthSelected(item);
|
|
77
|
-
break;
|
|
78
|
-
case 'quarter':
|
|
79
|
-
this.onQuarterSelected(item);
|
|
80
|
-
break;
|
|
81
|
-
case 'year':
|
|
82
|
-
this.onYearSelected(item);
|
|
83
|
-
break;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
onYearSelected(item) {
|
|
87
|
-
// If in year selection mode, emit the calendar item so the date picker can update the selection.
|
|
88
|
-
if (this.selectionMode === 'year') {
|
|
89
|
-
this.dateSelected.emit(item.date);
|
|
90
|
-
// If we're in quarter selection mode, draw the quarter view.
|
|
91
|
-
}
|
|
92
|
-
else if (this.selectionMode === 'quarter') {
|
|
93
|
-
this.drawCalendar({ mode: 'quarter', date: item.date });
|
|
94
|
-
// All other selection modes should zoom in to the month view when a year is selected.
|
|
95
|
-
}
|
|
96
|
-
else {
|
|
97
|
-
this.drawCalendar({ mode: 'month', date: item.date });
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
onQuarterSelected(item) {
|
|
101
|
-
// Quarter view is only accessible when in quarter selection mode,
|
|
102
|
-
// so there's no other views to draw from here. Just emit the selected item.
|
|
103
|
-
this.dateSelected.emit(item.date);
|
|
104
|
-
}
|
|
105
|
-
onMonthSelected(item) {
|
|
106
|
-
// When in month selection mode, emit the selected month item and don't change the view.
|
|
107
|
-
if (this.selectionMode === 'month') {
|
|
108
|
-
this.dateSelected.emit(item.date);
|
|
109
|
-
// Month view is only accessible from day, last7days, last28days, month, and range selection modes.
|
|
110
|
-
// If we're not in month selection mode, we need to zoom in to the day view.
|
|
111
|
-
}
|
|
112
|
-
else {
|
|
113
|
-
this.drawCalendar({ mode: 'day', date: item.date });
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
onDaySelected(item) {
|
|
117
|
-
// No further views other than day mode. Just emit the selected item.
|
|
118
|
-
this.dateSelected.emit(item.date);
|
|
119
|
-
}
|
|
120
|
-
drawCalendar(view) {
|
|
121
|
-
// If the view has changed, emit the new view.
|
|
122
|
-
if (view.date !== this.view.date || view.mode !== this.view.mode) {
|
|
123
|
-
this.view = view;
|
|
124
|
-
this.viewChange.emit(view);
|
|
125
|
-
}
|
|
126
|
-
this.month = moment(this.view.date).format('MMM');
|
|
127
|
-
this.year = moment(this.view.date).format('YYYY');
|
|
128
|
-
this.calendarItems = this.getCalendarItems(this.view);
|
|
129
|
-
const startYear = this.calendarItems[0][0].date < this.minDate ? this.minDate : this.calendarItems[0][0].date;
|
|
130
|
-
const lastItem = this.getLastItem();
|
|
131
|
-
const endYear = lastItem.date > this.maxDate ? this.maxDate : lastItem.date;
|
|
132
|
-
this.yearRange = `${moment(startYear).format('YYYY')}–${moment(endYear).format('YYYY')}`;
|
|
133
|
-
this.updateNextPreviousStates();
|
|
134
|
-
}
|
|
135
|
-
getCalendarItems(view) {
|
|
136
|
-
switch (view.mode) {
|
|
137
|
-
case 'day': return this.getDayViewItems(view.date);
|
|
138
|
-
case 'month': return this.getMonthViewItems(view.date);
|
|
139
|
-
case 'quarter': return this.getQuarterViewItems(view.date);
|
|
140
|
-
case 'year': return this.getYearViewItems(view.date);
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
getDayViewItems(activeDate) {
|
|
144
|
-
// 6 rows of 7 days = 42 days
|
|
145
|
-
return range(0, 6).map(r => {
|
|
146
|
-
return range(0, 7).map(d => {
|
|
147
|
-
// Use the start of the week of the first day of the month.
|
|
148
|
-
// This pads out the first week with any days from the previous month.
|
|
149
|
-
const date = moment(activeDate).startOf('month').startOf('week').add(r * 7 + d, 'day');
|
|
150
|
-
return {
|
|
151
|
-
date: date.toDate(),
|
|
152
|
-
label: date.format('D')
|
|
153
|
-
};
|
|
154
|
-
});
|
|
155
|
-
});
|
|
156
|
-
}
|
|
157
|
-
getMonthViewItems(activeDate) {
|
|
158
|
-
// 4 rows of 3 months = 12 months
|
|
159
|
-
return range(0, 4).map(r => {
|
|
160
|
-
return range(0, 3).map(m => {
|
|
161
|
-
const date = moment(activeDate).startOf('year').add(r * 3 + m, 'month');
|
|
162
|
-
return {
|
|
163
|
-
date: date.toDate(),
|
|
164
|
-
label: date.format('MMM')
|
|
165
|
-
};
|
|
166
|
-
});
|
|
167
|
-
});
|
|
168
|
-
}
|
|
169
|
-
getQuarterViewItems(activeDate) {
|
|
170
|
-
// 2 rows of 2 quarters = 4 quarters
|
|
171
|
-
return range(0, 2).map(r => {
|
|
172
|
-
return range(0, 2).map(q => {
|
|
173
|
-
const date = moment(activeDate).startOf('year').add(r * 2 + q, 'quarter');
|
|
174
|
-
const endDate = moment(date).endOf('quarter');
|
|
175
|
-
return {
|
|
176
|
-
date: date.toDate(),
|
|
177
|
-
label: `${date.format('MMM')}–${endDate.format('MMM')}`
|
|
178
|
-
};
|
|
179
|
-
});
|
|
180
|
-
});
|
|
181
|
-
}
|
|
182
|
-
getYearViewItems(activeDate) {
|
|
183
|
-
// 4 rows of 4 years = 16 years
|
|
184
|
-
return range(0, 4).map(r => {
|
|
185
|
-
return range(0, 4).map(y => {
|
|
186
|
-
// Subtracting 8 years to put the current active year at the beginning of the 3rd row.
|
|
187
|
-
const date = moment(activeDate).startOf('year').subtract(8, 'years').add(r * 4 + y, 'year');
|
|
188
|
-
return {
|
|
189
|
-
date: date.toDate(),
|
|
190
|
-
label: date.format('YYYY')
|
|
191
|
-
};
|
|
192
|
-
});
|
|
193
|
-
});
|
|
194
|
-
}
|
|
195
|
-
updateNextPreviousStates() {
|
|
196
|
-
// We change the granularity of the min and max date checks based on the current view mode.
|
|
197
|
-
// We don't want to disable the next/previous buttons if the min or max date is within the
|
|
198
|
-
// next or previous view
|
|
199
|
-
const unit = this.view.mode === 'day' ? 'month' : 'year';
|
|
200
|
-
// When in year view, we need to subtract 9 years to determine if we're past the min date.
|
|
201
|
-
// The year view is 16 years long, and the current date is the 9th year in the view.
|
|
202
|
-
const subCount = this.view.mode === 'year' ? 9 : 1;
|
|
203
|
-
if (moment(this.view.date).subtract(subCount, unit).isBefore(this.minDate, unit)) {
|
|
204
|
-
this.disablePreviousButton = true;
|
|
205
|
-
}
|
|
206
|
-
else {
|
|
207
|
-
this.disablePreviousButton = false;
|
|
208
|
-
}
|
|
209
|
-
// When in year view, we need to add 8 years to determine if we're past the max date.
|
|
210
|
-
// The year view is 16 years long, and the current date is the 9th year in the view.
|
|
211
|
-
const addCount = this.view.mode === 'year' ? 8 : 1;
|
|
212
|
-
if (moment(this.view.date).add(addCount, unit).isAfter(this.maxDate, unit)) {
|
|
213
|
-
this.disableNextButton = true;
|
|
214
|
-
}
|
|
215
|
-
else {
|
|
216
|
-
this.disableNextButton = false;
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
getLastItem() {
|
|
220
|
-
const lastRow = this.calendarItems[this.calendarItems.length - 1];
|
|
221
|
-
return lastRow[lastRow.length - 1];
|
|
222
|
-
}
|
|
223
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CalendarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
224
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CalendarComponent, selector: "ec-calendar", inputs: { id: "id", selection: "selection", selectionMode: "selectionMode", minDate: "minDate", maxDate: "maxDate", tabindex: "tabindex", view: "view" }, outputs: { dateSelected: "dateSelected", viewChange: "viewChange" }, host: { properties: { "attr.id": "this.id" } }, usesOnChanges: true, ngImport: i0, template: "<header class=\"d-flex align-items-center mt-1 mb-2 px-1\">\n <button id=\"{{id}}_prev_button\"\n class=\"mr-auto\"\n (click)=\"onPreviousClick()\"\n [disabled]=\"disablePreviousButton\"\n tabindex=\"{{tabindex}}\">\n <i class=\"ec-icon icon-angle-down rotate-90\"></i>\n </button>\n\n <button *ngIf=\"view.mode === 'day'\"\n id=\"{{id}}_month_button\"\n class=\"text-body-1 font-weight-bold\"\n (click)=\"onMonthClick()\"\n tabindex=\"{{tabindex}}\">\n {{month}}\n </button>\n\n <button *ngIf=\"view.mode !== 'year'\"\n id=\"{{id}}_year_button\"\n class=\"text-body-1 font-weight-bold\"\n (click)=\"onYearClick()\"\n tabindex=\"{{tabindex}}\">\n {{year}}\n </button>\n\n <div id=\"{{id}}_year_range\"\n *ngIf=\"view.mode === 'year'\"\n class=\"text-body-1 font-weight-bold\"\n [innerHTML]=\"yearRange\">\n </div>\n\n <button id=\"{{id}}_next_button\"\n class=\"ml-auto\"\n (click)=\"onNextClick()\"\n [disabled]=\"disableNextButton\"\n tabindex=\"{{tabindex}}\">\n <i class=\"ec-icon icon-angle-down rotate-270\"></i>\n </button>\n</header>\n\n<div *ngIf=\"view.mode === 'day'\"\n class=\"mb-1 px-2 d-flex\">\n <h3 *ngFor=\"let day of weekDays\"\n class=\"text-heading-3 d-flex justify-content-center align-items-center\"\n style=\"width: 2rem; height: 1.75rem;\">{{day}}</h3>\n</div>\n\n<div *ngFor=\"let row of calendarItems; last as isLast; trackBy: trackByDateRow\"\n class=\"px-2 d-flex {{view.mode}}-view\"\n [class.mb-1]=\"!isLast\"\n [class.mb-2]=\"isLast\">\n <button *ngFor=\"let item of row; trackBy: trackByDate\"\n id=\"{{id}}_item_{{item.date | date:'MM_dd_yyyy'}}\"\n ec-calendar-item\n [item]=\"item\"\n [selection]=\"selection\"\n [view]=\"view\"\n (click)=\"onItemSelected(item)\"\n [innerHTML]=\"item.label\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n tabindex=\"{{tabindex}}\">\n </button>\n</div>\n", styles: [":host{display:inline-block}button{font-size:var(--ec-font-size-action);height:2rem;line-height:1.25rem;padding:.3125rem .5rem;border:0;border-radius:var(--ec-border-radius);display:flex;align-items:center;justify-content:center;cursor:pointer;background-color:transparent}button .label{display:flex;align-items:center;justify-content:center;white-space:nowrap;flex:auto}button .ec-icon{flex:none}button .ec-icon+.label{flex:none;margin-left:.25rem}button.has-badge{padding-right:.0625rem}button:focus{outline:none;position:relative;z-index:1}button:disabled{background-color:var(--ec-background-color-disabled);border:1px solid var(--ec-form-control-border-color-disabled);color:var(--ec-color-disabled-dark);opacity:var(--ec-form-control-opacity-disabled);cursor:default}button:disabled .ec-icon{color:var(--ec-color-disabled-dark)}button:disabled{background-color:transparent;border-color:transparent;color:var(--ec-color-hint-dark);--ec-color-icon: var(--ec-color-hint-dark)}button:hover:not(:disabled){background-color:var(--ec-background-color-hover)}button:active:not(:disabled){background-color:var(--ec-background-color-selected);font-weight:700}button:focus:not(:disabled){box-shadow:var(--ec-button-box-shadow-active, 0 0 0 2px var(--ec-border-color-focus))}button.is-selected{background-color:var(--ec-background-color-selected);font-weight:700}.day-view button{width:2rem;height:1.75rem}.month-view button{width:4.67rem;height:3.25rem}.quarter-view button{width:7rem;height:6.75rem}.year-view button{width:3.5rem;height:3.25rem}.is-selected:has(+.is-selected:not(:disabled)){border-top-right-radius:0;border-bottom-right-radius:0}.is-selected:not(:disabled)+.is-selected{border-top-left-radius:0;border-bottom-left-radius:0}\n"], dependencies: [{ 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.CalendarItemComponent, selector: "button[ec-calendar-item]", inputs: ["item", "selection", "view", "minDate", "maxDate"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
225
|
-
}
|
|
226
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CalendarComponent, decorators: [{
|
|
227
|
-
type: Component,
|
|
228
|
-
args: [{ selector: 'ec-calendar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<header class=\"d-flex align-items-center mt-1 mb-2 px-1\">\n <button id=\"{{id}}_prev_button\"\n class=\"mr-auto\"\n (click)=\"onPreviousClick()\"\n [disabled]=\"disablePreviousButton\"\n tabindex=\"{{tabindex}}\">\n <i class=\"ec-icon icon-angle-down rotate-90\"></i>\n </button>\n\n <button *ngIf=\"view.mode === 'day'\"\n id=\"{{id}}_month_button\"\n class=\"text-body-1 font-weight-bold\"\n (click)=\"onMonthClick()\"\n tabindex=\"{{tabindex}}\">\n {{month}}\n </button>\n\n <button *ngIf=\"view.mode !== 'year'\"\n id=\"{{id}}_year_button\"\n class=\"text-body-1 font-weight-bold\"\n (click)=\"onYearClick()\"\n tabindex=\"{{tabindex}}\">\n {{year}}\n </button>\n\n <div id=\"{{id}}_year_range\"\n *ngIf=\"view.mode === 'year'\"\n class=\"text-body-1 font-weight-bold\"\n [innerHTML]=\"yearRange\">\n </div>\n\n <button id=\"{{id}}_next_button\"\n class=\"ml-auto\"\n (click)=\"onNextClick()\"\n [disabled]=\"disableNextButton\"\n tabindex=\"{{tabindex}}\">\n <i class=\"ec-icon icon-angle-down rotate-270\"></i>\n </button>\n</header>\n\n<div *ngIf=\"view.mode === 'day'\"\n class=\"mb-1 px-2 d-flex\">\n <h3 *ngFor=\"let day of weekDays\"\n class=\"text-heading-3 d-flex justify-content-center align-items-center\"\n style=\"width: 2rem; height: 1.75rem;\">{{day}}</h3>\n</div>\n\n<div *ngFor=\"let row of calendarItems; last as isLast; trackBy: trackByDateRow\"\n class=\"px-2 d-flex {{view.mode}}-view\"\n [class.mb-1]=\"!isLast\"\n [class.mb-2]=\"isLast\">\n <button *ngFor=\"let item of row; trackBy: trackByDate\"\n id=\"{{id}}_item_{{item.date | date:'MM_dd_yyyy'}}\"\n ec-calendar-item\n [item]=\"item\"\n [selection]=\"selection\"\n [view]=\"view\"\n (click)=\"onItemSelected(item)\"\n [innerHTML]=\"item.label\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n tabindex=\"{{tabindex}}\">\n </button>\n</div>\n", styles: [":host{display:inline-block}button{font-size:var(--ec-font-size-action);height:2rem;line-height:1.25rem;padding:.3125rem .5rem;border:0;border-radius:var(--ec-border-radius);display:flex;align-items:center;justify-content:center;cursor:pointer;background-color:transparent}button .label{display:flex;align-items:center;justify-content:center;white-space:nowrap;flex:auto}button .ec-icon{flex:none}button .ec-icon+.label{flex:none;margin-left:.25rem}button.has-badge{padding-right:.0625rem}button:focus{outline:none;position:relative;z-index:1}button:disabled{background-color:var(--ec-background-color-disabled);border:1px solid var(--ec-form-control-border-color-disabled);color:var(--ec-color-disabled-dark);opacity:var(--ec-form-control-opacity-disabled);cursor:default}button:disabled .ec-icon{color:var(--ec-color-disabled-dark)}button:disabled{background-color:transparent;border-color:transparent;color:var(--ec-color-hint-dark);--ec-color-icon: var(--ec-color-hint-dark)}button:hover:not(:disabled){background-color:var(--ec-background-color-hover)}button:active:not(:disabled){background-color:var(--ec-background-color-selected);font-weight:700}button:focus:not(:disabled){box-shadow:var(--ec-button-box-shadow-active, 0 0 0 2px var(--ec-border-color-focus))}button.is-selected{background-color:var(--ec-background-color-selected);font-weight:700}.day-view button{width:2rem;height:1.75rem}.month-view button{width:4.67rem;height:3.25rem}.quarter-view button{width:7rem;height:6.75rem}.year-view button{width:3.5rem;height:3.25rem}.is-selected:has(+.is-selected:not(:disabled)){border-top-right-radius:0;border-bottom-right-radius:0}.is-selected:not(:disabled)+.is-selected{border-top-left-radius:0;border-bottom-left-radius:0}\n"] }]
|
|
229
|
-
}], propDecorators: { id: [{
|
|
230
|
-
type: HostBinding,
|
|
231
|
-
args: ['attr.id']
|
|
232
|
-
}, {
|
|
233
|
-
type: Input
|
|
234
|
-
}], selection: [{
|
|
235
|
-
type: Input
|
|
236
|
-
}], selectionMode: [{
|
|
237
|
-
type: Input
|
|
238
|
-
}], minDate: [{
|
|
239
|
-
type: Input
|
|
240
|
-
}], maxDate: [{
|
|
241
|
-
type: Input
|
|
242
|
-
}], tabindex: [{
|
|
243
|
-
type: Input
|
|
244
|
-
}], dateSelected: [{
|
|
245
|
-
type: Output
|
|
246
|
-
}], view: [{
|
|
247
|
-
type: Input
|
|
248
|
-
}], viewChange: [{
|
|
249
|
-
type: Output
|
|
250
|
-
}] } });
|
|
251
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL2NhbGVuZGFyL2NhbGVuZGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9jYWxlbmRhci9jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQy9JLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDL0IsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7OztBQVU3RCxNQUFNLE9BQU8saUJBQWlCO0lBTjlCO1FBU2tCLE9BQUUsR0FBVyxVQUFVLENBQUM7UUFFL0IsY0FBUyxHQUErQixJQUFJLENBQUM7UUFDN0Msa0JBQWEsR0FBNEIsS0FBSyxDQUFDO1FBRS9DLFlBQU8sR0FBUyxjQUFjLENBQUMsaUJBQWlCLENBQUM7UUFDakQsWUFBTyxHQUFTLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQztRQUUxQyxhQUFRLEdBQVksQ0FBQyxDQUFDO1FBRTVCLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUVsRCxtREFBbUQ7UUFDbkMsU0FBSSxHQUFrQixFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUN2RCxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQWlCLENBQUM7UUFXaEUsOERBQThEO1FBQ3ZELGtCQUFhLEdBQXNCLEVBQUUsQ0FB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QixDQUFDLE1BQU07OEJBSy9CLEVBQUU7c0JBRGpCLFdBQVc7dUJBQUMsU0FBUzs7c0JBQ3JCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRVUsUUFBUTtzQkFBdkIsS0FBSztnQkFFSSxZQUFZO3NCQUFyQixNQUFNO2dCQUdTLElBQUk7c0JBQW5CLEtBQUs7Z0JBQ1csVUFBVTtzQkFBMUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyByYW5nZSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBEYXRlVGltZUhlbHBlciB9IGZyb20gJy4uLy4uL2NvcmUvZGF0ZS10aW1lLWhlbHBlcic7XG5pbXBvcnQgeyBEYXRlSW5wdXQgfSBmcm9tICcuLi9kYXRlLWlucHV0L2RhdGUtaW5wdXQudHlwZXMnO1xuaW1wb3J0IHsgQ2FsZW5kYXIgfSBmcm9tICcuL2NhbGVuZGFyLnR5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZWMtY2FsZW5kYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYWxlbmRhci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBDYWxlbmRhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0IHtcblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuaWQnKVxuICBASW5wdXQoKSBwdWJsaWMgaWQ6IHN0cmluZyA9ICdjYWxlbmRhcic7XG5cbiAgQElucHV0KCkgc2VsZWN0aW9uOiBEYXRlSW5wdXQuU2VsZWN0aW9uIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIHNlbGVjdGlvbk1vZGU6IERhdGVJbnB1dC5TZWxlY3Rpb25Nb2RlID0gJ2RheSc7XG5cbiAgQElucHV0KCkgbWluRGF0ZTogRGF0ZSA9IERhdGVUaW1lSGVscGVyLm1pbkRhdGVQaWNrZXJEYXRlO1xuICBASW5wdXQoKSBtYXhEYXRlOiBEYXRlID0gRGF0ZVRpbWVIZWxwZXIubWF4RGF0ZVBpY2tlckRhdGU7XG5cbiAgQElucHV0KCkgcHVibGljIHRhYmluZGV4PzogbnVtYmVyID0gMDtcblxuICBAT3V0cHV0KCkgZGF0ZVNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuXG4gIC8qKiBEZXRlcm1pbmVzIHRoZSBjdXJyZW50IHZpZXcgb2YgdGhlIGNhbGVuZGFyLiAqL1xuICBASW5wdXQoKSBwdWJsaWMgdmlldzogQ2FsZW5kYXIuVmlldyA9IHsgbW9kZTogJ2RheScsIGRhdGU6IG5ldyBEYXRlKCkgfTtcbiAgQE91dHB1dCgpIHB1YmxpYyB2aWV3Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxDYWxlbmRhci5WaWV3PigpO1xuXG4gIC8qKiBNb250aCBvZiB0aGUgYWN0aXZlIGRhdGUgZGlzcGxheWVkIGluIHRoZSBoZWFkZXIgYnV0dG9ucy4gKi9cbiAgcHVibGljIG1vbnRoPzogc3RyaW5nO1xuXG4gIC8qKiBZZWFyIG9mIHRoZSBhY3RpdmUgZGF0ZSBkaXNwbGF5ZWQgaW4gdGhlIGhlYWRlciBidXR0b25zLiAqL1xuICBwdWJsaWMgeWVhcj86IHN0cmluZztcblxuICAvKiogUmFuZ2Ugb2YgeWVhcnMgdG8gZGlzcGxheSBpbiB0aGUgeWVhciB2aWV3LiAqL1xuICBwdWJsaWMgeWVhclJhbmdlPzogc3RyaW5nO1xuXG4gIC8qKiBBcnJheSBvZiBjYWxlbmRhciBpdGVtIHJvd3MgdG8gZGlzcGxheSBpbiB0aGUgY2FsZW5kYXIuICovXG4gIHB1YmxpYyBjYWxlbmRhckl0ZW1zOiBDYWxlbmRhci5JdGVtW11bXSA9IFtdO1xuXG4gIC8qKiBXZWVrZGF5IGxhYmVscyB0byBzaG93IGF0IHRoZSB0b3Agb2YgdGhlIGNhbGVuZGFyIGluIGRheSB2aWV3LiAqL1xuICBwdWJsaWMgd2Vla0RheXMgPSBtb21lbnQud2Vla2RheXNTaG9ydCgpLm1hcChkID0+IGQuc2xpY2UoMCwgMSkpO1xuXG4gIHB1YmxpYyBkaXNhYmxlUHJldmlvdXNCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIGRpc2FibGVOZXh0QnV0dG9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gVHJhY2tieSBmdW5jdGlvbnMgZm9yIG5nRm9yIGxvb3BzLiBUaGVzZSByZWR1Y2UgdGhlIG51bWJlciBvZiBET00gZWxlbWVudHMgdGhhdCBuZWVkIHRvIGJlIHVwZGF0ZWQgd2hlbiB0aGUgY2FsZW5kYXIgaXMgcmUtZHJhd24uXG4gIC8vIFdpdGhvdXQgdGhlc2UgdGhlcmUgYXJlIHNvbWUgY2hhbmdlLWRldGVjdGlvbiBpc3N1ZXMgb24gdGhlIGZpcnN0LXRpbWUgcmVuZGVyaW5nIG9mIHRoZSBjYWxlbmRhci5cbiAgcHVibGljIHRyYWNrQnlEYXRlUm93ID0gKGluZGV4OiBudW1iZXIsIHJvdzogQ2FsZW5kYXIuSXRlbVtdKSA9PiBgJHtyb3dbMF0uZGF0ZS50b0lTT1N0cmluZygpfS0ke3Jvd1tyb3cubGVuZ3RoIC0gMV0uZGF0ZS50b0lTT1N0cmluZygpfWA7XG4gIHB1YmxpYyB0cmFja0J5RGF0ZSA9IChpbmRleDogbnVtYmVyLCBpdGVtOiBDYWxlbmRhci5JdGVtKSA9PiBpdGVtLmRhdGUudG9JU09TdHJpbmcoKTtcblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMudmlldykge1xuICAgICAgdGhpcy5kcmF3Q2FsZW5kYXIodGhpcy52aWV3KTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcy5taW5EYXRlIHx8IGNoYW5nZXMubWF4RGF0ZSkge1xuICAgICAgdGhpcy51cGRhdGVOZXh0UHJldmlvdXNTdGF0ZXMoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY2FsZW5kYXJJdGVtcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuZHJhd0NhbGVuZGFyKHRoaXMudmlldyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uTmV4dENsaWNrKCk6IHZvaWQge1xuICAgIC8vIElmIHdlJ3JlIGluIGRheSB2aWV3LCB3ZSdyZSBpbmNyZW1lbnRpbmcgYnkgbW9udGhcbiAgICAvLyBJbiBtb250aCwgcXVhcnRlciwgYW5kIHllYXIgdmlld3Mgd2UncmUgaW5jcmVtZW50aW5nIGJ5IHllYXJcXFxuICAgIGNvbnN0IHVuaXQgPSB0aGlzLnZpZXcubW9kZSA9PT0gJ2RheScgPyAnbW9udGgnIDogJ3llYXInO1xuICAgIC8vIEluIHllYXIgdmlldywgd2UncmUgbW92aW5nIGJ5IDE2IHllYXJzIGF0IGEgdGltZS4gT3RoZXJ3aXNlIHdlJ3JlIGp1c3QgbW92aW5nIGJ5IDEgbW9udGgveWVhci5cbiAgICBjb25zdCBjb3VudCA9IHRoaXMudmlldy5tb2RlID09PSAneWVhcicgPyAxNiA6IDE7XG4gICAgY29uc3QgZ29Ub0RhdGUgPSBtb21lbnQodGhpcy52aWV3LmRhdGUpLmFkZChjb3VudCwgdW5pdCkudG9EYXRlKCk7XG4gICAgdGhpcy5kcmF3Q2FsZW5kYXIoeyBtb2RlOiB0aGlzLnZpZXcubW9kZSwgZGF0ZTogZ29Ub0RhdGUgfSk7XG4gIH1cblxuICBwdWJsaWMgb25QcmV2aW91c0NsaWNrKCk6IHZvaWQge1xuICAgIC8vIElmIHdlJ3JlIGluIGRheSB2aWV3LCB3ZSdyZSBpbmNyZW1lbnRpbmcgYnkgbW9udGhcbiAgICAvLyBJbiBtb250aCwgcXVhcnRlciwgYW5kIHllYXIgdmlld3Mgd2UncmUgaW5jcmVtZW50aW5nIGJ5IHllYXJcbiAgICBjb25zdCB1bml0ID0gdGhpcy52aWV3Lm1vZGUgPT09ICdkYXknID8gJ21vbnRoJyA6ICd5ZWFyJztcbiAgICAvLyBJbiB5ZWFyIHZpZXcsIHdlJ3JlIG1vdmluZyBieSAxNiB5ZWFycyBhdCBhIHRpbWUuIE90aGVyd2lzZSB3ZSdyZSBqdXN0IG1vdmluZyBieSAxIG1vbnRoL3llYXIuXG4gICAgY29uc3QgY291bnQgPSB0aGlzLnZpZXcubW9kZSA9PT0gJ3llYXInID8gMTYgOiAxO1xuICAgIGNvbnN0IGdvVG9EYXRlID0gbW9tZW50KHRoaXMudmlldy5kYXRlKS5zdWJ0cmFjdChjb3VudCwgdW5pdCkudG9EYXRlKCk7XG4gICAgdGhpcy5kcmF3Q2FsZW5kYXIoeyBtb2RlOiB0aGlzLnZpZXcubW9kZSwgZGF0ZTogZ29Ub0RhdGUgfSk7XG4gIH1cblxuICAvKiogU3dpdGNoZXMgdGhlIGNhbGVuZGFyIHRvIG1vbnRoIHZpZXcuICovXG4gIHB1YmxpYyBvbk1vbnRoQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5kcmF3Q2FsZW5kYXIoeyBtb2RlOiAnbW9udGgnLCBkYXRlOiB0aGlzLnZpZXcuZGF0ZSB9KTtcbiAgfVxuXG4gIC8qKiBTd2l0Y2hlcyB0aGUgY2FsZW5kYXIgdG8geWVhciB2aWV3LiAqL1xuICBwdWJsaWMgb25ZZWFyQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5kcmF3Q2FsZW5kYXIoeyBtb2RlOiAneWVhcicsIGRhdGU6IHRoaXMudmlldy5kYXRlIH0pO1xuICB9XG5cbiAgcHVibGljIG9uSXRlbVNlbGVjdGVkKGl0ZW06IENhbGVuZGFyLkl0ZW0pOiB2b2lkIHtcbiAgICBzd2l0Y2godGhpcy52aWV3Lm1vZGUpIHtcbiAgICAgIGNhc2UgJ2RheSc6XG4gICAgICAgIHRoaXMub25EYXlTZWxlY3RlZChpdGVtKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdtb250aCc6XG4gICAgICAgIHRoaXMub25Nb250aFNlbGVjdGVkKGl0ZW0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3F1YXJ0ZXInOlxuICAgICAgICB0aGlzLm9uUXVhcnRlclNlbGVjdGVkKGl0ZW0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3llYXInOlxuICAgICAgICB0aGlzLm9uWWVhclNlbGVjdGVkKGl0ZW0pO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG9uWWVhclNlbGVjdGVkKGl0ZW06IENhbGVuZGFyLkl0ZW0pOiB2b2lkIHtcbiAgICAvLyBJZiBpbiB5ZWFyIHNlbGVjdGlvbiBtb2RlLCBlbWl0IHRoZSBjYWxlbmRhciBpdGVtIHNvIHRoZSBkYXRlIHBpY2tlciBjYW4gdXBkYXRlIHRoZSBzZWxlY3Rpb24uXG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ3llYXInKSB7XG4gICAgICB0aGlzLmRhdGVTZWxlY3RlZC5lbWl0KGl0ZW0uZGF0ZSk7XG4gICAgLy8gSWYgd2UncmUgaW4gcXVhcnRlciBzZWxlY3Rpb24gbW9kZSwgZHJhdyB0aGUgcXVhcnRlciB2aWV3LlxuICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09PSAncXVhcnRlcicpIHtcbiAgICAgIHRoaXMuZHJhd0NhbGVuZGFyKHsgbW9kZTogJ3F1YXJ0ZXInLCBkYXRlOiBpdGVtLmRhdGUgfSk7XG4gICAgLy8gQWxsIG90aGVyIHNlbGVjdGlvbiBtb2RlcyBzaG91bGQgem9vbSBpbiB0byB0aGUgbW9udGggdmlldyB3aGVuIGEgeWVhciBpcyBzZWxlY3RlZC5cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kcmF3Q2FsZW5kYXIoeyBtb2RlOiAnbW9udGgnLCBkYXRlOiBpdGVtLmRhdGUgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvblF1YXJ0ZXJTZWxlY3RlZChpdGVtOiBDYWxlbmRhci5JdGVtKTogdm9pZCB7XG4gICAgLy8gUXVhcnRlciB2aWV3IGlzIG9ubHkgYWNjZXNzaWJsZSB3aGVuIGluIHF1YXJ0ZXIgc2VsZWN0aW9uIG1vZGUsXG4gICAgLy8gc28gdGhlcmUncyBubyBvdGhlciB2aWV3cyB0byBkcmF3IGZyb20gaGVyZS4gSnVzdCBlbWl0IHRoZSBzZWxlY3RlZCBpdGVtLlxuICAgIHRoaXMuZGF0ZVNlbGVjdGVkLmVtaXQoaXRlbS5kYXRlKTtcbiAgfVxuXG4gIHByaXZhdGUgb25Nb250aFNlbGVjdGVkKGl0ZW06IENhbGVuZGFyLkl0ZW0pOiB2b2lkIHtcbiAgICAvLyBXaGVuIGluIG1vbnRoIHNlbGVjdGlvbiBtb2RlLCBlbWl0IHRoZSBzZWxlY3RlZCBtb250aCBpdGVtIGFuZCBkb24ndCBjaGFuZ2UgdGhlIHZpZXcuXG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ21vbnRoJykge1xuICAgICAgdGhpcy5kYXRlU2VsZWN0ZWQuZW1pdChpdGVtLmRhdGUpO1xuICAgIC8vIE1vbnRoIHZpZXcgaXMgb25seSBhY2Nlc3NpYmxlIGZyb20gZGF5LCBsYXN0N2RheXMsIGxhc3QyOGRheXMsIG1vbnRoLCBhbmQgcmFuZ2Ugc2VsZWN0aW9uIG1vZGVzLlxuICAgIC8vIElmIHdlJ3JlIG5vdCBpbiBtb250aCBzZWxlY3Rpb24gbW9kZSwgd2UgbmVlZCB0byB6b29tIGluIHRvIHRoZSBkYXkgdmlldy5cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kcmF3Q2FsZW5kYXIoeyBtb2RlOiAnZGF5JywgZGF0ZTogaXRlbS5kYXRlIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb25EYXlTZWxlY3RlZChpdGVtOiBDYWxlbmRhci5JdGVtKTogdm9pZCB7XG4gICAgLy8gTm8gZnVydGhlciB2aWV3cyBvdGhlciB0aGFuIGRheSBtb2RlLiBKdXN0IGVtaXQgdGhlIHNlbGVjdGVkIGl0ZW0uXG4gICAgdGhpcy5kYXRlU2VsZWN0ZWQuZW1pdChpdGVtLmRhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBkcmF3Q2FsZW5kYXIodmlldzogQ2FsZW5kYXIuVmlldyk6IHZvaWQge1xuICAgIC8vIElmIHRoZSB2aWV3IGhhcyBjaGFuZ2VkLCBlbWl0IHRoZSBuZXcgdmlldy5cbiAgICBpZiAodmlldy5kYXRlICE9PSB0aGlzLnZpZXcuZGF0ZSB8fCB2aWV3Lm1vZGUgIT09IHRoaXMudmlldy5tb2RlKSB7XG4gICAgICB0aGlzLnZpZXcgPSB2aWV3O1xuICAgICAgdGhpcy52aWV3Q2hhbmdlLmVtaXQodmlldyk7XG4gICAgfVxuICAgIFxuICAgIHRoaXMubW9udGggPSBtb21lbnQodGhpcy52aWV3LmRhdGUpLmZvcm1hdCgnTU1NJyk7XG4gICAgdGhpcy55ZWFyID0gbW9tZW50KHRoaXMudmlldy5kYXRlKS5mb3JtYXQoJ1lZWVknKTtcbiAgICB0aGlzLmNhbGVuZGFySXRlbXMgPSB0aGlzLmdldENhbGVuZGFySXRlbXModGhpcy52aWV3KTtcblxuICAgIGNvbnN0IHN0YXJ0WWVhciA9IHRoaXMuY2FsZW5kYXJJdGVtc1swXVswXS5kYXRlIDwgdGhpcy5taW5EYXRlID8gdGhpcy5taW5EYXRlIDogdGhpcy5jYWxlbmRhckl0ZW1zWzBdWzBdLmRhdGU7XG4gICAgY29uc3QgbGFzdEl0ZW0gPSB0aGlzLmdldExhc3RJdGVtKCk7XG4gICAgY29uc3QgZW5kWWVhciA9IGxhc3RJdGVtLmRhdGUgPiB0aGlzLm1heERhdGUgPyB0aGlzLm1heERhdGUgOiBsYXN0SXRlbS5kYXRlO1xuICAgIHRoaXMueWVhclJhbmdlID0gYCR7bW9tZW50KHN0YXJ0WWVhcikuZm9ybWF0KCdZWVlZJyl9Jm5kYXNoOyR7bW9tZW50KGVuZFllYXIpLmZvcm1hdCgnWVlZWScpfWA7XG5cbiAgICB0aGlzLnVwZGF0ZU5leHRQcmV2aW91c1N0YXRlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDYWxlbmRhckl0ZW1zKHZpZXc6IENhbGVuZGFyLlZpZXcpOiBDYWxlbmRhci5JdGVtW11bXSB7XG4gICAgc3dpdGNoICh2aWV3Lm1vZGUpIHtcbiAgICAgIGNhc2UgJ2RheSc6IHJldHVybiB0aGlzLmdldERheVZpZXdJdGVtcyh2aWV3LmRhdGUpO1xuICAgICAgY2FzZSAnbW9udGgnOiByZXR1cm4gdGhpcy5nZXRNb250aFZpZXdJdGVtcyh2aWV3LmRhdGUpO1xuICAgICAgY2FzZSAncXVhcnRlcic6IHJldHVybiB0aGlzLmdldFF1YXJ0ZXJWaWV3SXRlbXModmlldy5kYXRlKTtcbiAgICAgIGNhc2UgJ3llYXInOiByZXR1cm4gdGhpcy5nZXRZZWFyVmlld0l0ZW1zKHZpZXcuZGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXREYXlWaWV3SXRlbXMoYWN0aXZlRGF0ZTogRGF0ZSk6IENhbGVuZGFyLkl0ZW1bXVtdIHtcbiAgICAvLyA2IHJvd3Mgb2YgNyBkYXlzID0gNDIgZGF5c1xuICAgIHJldHVybiByYW5nZSgwLCA2KS5tYXAociA9PiB7XG4gICAgICByZXR1cm4gcmFuZ2UoMCwgNykubWFwKGQgPT4ge1xuICAgICAgICAvLyBVc2UgdGhlIHN0YXJ0IG9mIHRoZSB3ZWVrIG9mIHRoZSBmaXJzdCBkYXkgb2YgdGhlIG1vbnRoLlxuICAgICAgICAvLyBUaGlzIHBhZHMgb3V0IHRoZSBmaXJzdCB3ZWVrIHdpdGggYW55IGRheXMgZnJvbSB0aGUgcHJldmlvdXMgbW9udGguXG4gICAgICAgIGNvbnN0IGRhdGUgPSBtb21lbnQoYWN0aXZlRGF0ZSkuc3RhcnRPZignbW9udGgnKS5zdGFydE9mKCd3ZWVrJykuYWRkKHIgKiA3ICsgZCwgJ2RheScpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRhdGU6IGRhdGUudG9EYXRlKCksXG4gICAgICAgICAgbGFiZWw6IGRhdGUuZm9ybWF0KCdEJylcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNb250aFZpZXdJdGVtcyhhY3RpdmVEYXRlOiBEYXRlKTogQ2FsZW5kYXIuSXRlbVtdW10ge1xuICAgIC8vIDQgcm93cyBvZiAzIG1vbnRocyA9IDEyIG1vbnRoc1xuICAgIHJldHVybiByYW5nZSgwLCA0KS5tYXAociA9PiB7XG4gICAgICByZXR1cm4gcmFuZ2UoMCwgMykubWFwKG0gPT4ge1xuICAgICAgICBjb25zdCBkYXRlID0gbW9tZW50KGFjdGl2ZURhdGUpLnN0YXJ0T2YoJ3llYXInKS5hZGQociAqIDMgKyBtLCAnbW9udGgnKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkYXRlOiBkYXRlLnRvRGF0ZSgpLFxuICAgICAgICAgIGxhYmVsOiBkYXRlLmZvcm1hdCgnTU1NJylcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRRdWFydGVyVmlld0l0ZW1zKGFjdGl2ZURhdGU6IERhdGUpOiBDYWxlbmRhci5JdGVtW11bXSB7XG4gICAgLy8gMiByb3dzIG9mIDIgcXVhcnRlcnMgPSA0IHF1YXJ0ZXJzXG4gICAgcmV0dXJuIHJhbmdlKDAsIDIpLm1hcChyID0+IHtcbiAgICAgIHJldHVybiByYW5nZSgwLCAyKS5tYXAocSA9PiB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSBtb21lbnQoYWN0aXZlRGF0ZSkuc3RhcnRPZigneWVhcicpLmFkZChyICogMiArIHEsICdxdWFydGVyJyk7XG4gICAgICAgIGNvbnN0IGVuZERhdGUgPSBtb21lbnQoZGF0ZSkuZW5kT2YoJ3F1YXJ0ZXInKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkYXRlOiBkYXRlLnRvRGF0ZSgpLFxuICAgICAgICAgIGxhYmVsOiBgJHtkYXRlLmZvcm1hdCgnTU1NJyl9Jm5kYXNoOyR7ZW5kRGF0ZS5mb3JtYXQoJ01NTScpfWBcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRZZWFyVmlld0l0ZW1zKGFjdGl2ZURhdGU6IERhdGUpOiBDYWxlbmRhci5JdGVtW11bXSB7XG4gICAgLy8gNCByb3dzIG9mIDQgeWVhcnMgPSAxNiB5ZWFyc1xuICAgIHJldHVybiByYW5nZSgwLCA0KS5tYXAociA9PiB7XG4gICAgICByZXR1cm4gcmFuZ2UoMCwgNCkubWFwKHkgPT4ge1xuICAgICAgICAvLyBTdWJ0cmFjdGluZyA4IHllYXJzIHRvIHB1dCB0aGUgY3VycmVudCBhY3RpdmUgeWVhciBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSAzcmQgcm93LlxuICAgICAgICBjb25zdCBkYXRlID0gbW9tZW50KGFjdGl2ZURhdGUpLnN0YXJ0T2YoJ3llYXInKS5zdWJ0cmFjdCg4LCAneWVhcnMnKS5hZGQociAqIDQgKyB5LCAneWVhcicpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRhdGU6IGRhdGUudG9EYXRlKCksXG4gICAgICAgICAgbGFiZWw6IGRhdGUuZm9ybWF0KCdZWVlZJylcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVOZXh0UHJldmlvdXNTdGF0ZXMoKTogdm9pZCB7XG4gICAgLy8gV2UgY2hhbmdlIHRoZSBncmFudWxhcml0eSBvZiB0aGUgbWluIGFuZCBtYXggZGF0ZSBjaGVja3MgYmFzZWQgb24gdGhlIGN1cnJlbnQgdmlldyBtb2RlLlxuICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gZGlzYWJsZSB0aGUgbmV4dC9wcmV2aW91cyBidXR0b25zIGlmIHRoZSBtaW4gb3IgbWF4IGRhdGUgaXMgd2l0aGluIHRoZVxuICAgIC8vIG5leHQgb3IgcHJldmlvdXMgdmlld1xuICAgIGNvbnN0IHVuaXQgPSB0aGlzLnZpZXcubW9kZSA9PT0gJ2RheScgPyAnbW9udGgnIDogJ3llYXInO1xuXG4gICAgLy8gV2hlbiBpbiB5ZWFyIHZpZXcsIHdlIG5lZWQgdG8gc3VidHJhY3QgOSB5ZWFycyB0byBkZXRlcm1pbmUgaWYgd2UncmUgcGFzdCB0aGUgbWluIGRhdGUuXG4gICAgLy8gVGhlIHllYXIgdmlldyBpcyAxNiB5ZWFycyBsb25nLCBhbmQgdGhlIGN1cnJlbnQgZGF0ZSBpcyB0aGUgOXRoIHllYXIgaW4gdGhlIHZpZXcuXG4gICAgY29uc3Qgc3ViQ291bnQgPSB0aGlzLnZpZXcubW9kZSA9PT0gJ3llYXInID8gOSA6IDE7XG4gICAgaWYgKG1vbWVudCh0aGlzLnZpZXcuZGF0ZSkuc3VidHJhY3Qoc3ViQ291bnQsIHVuaXQpLmlzQmVmb3JlKHRoaXMubWluRGF0ZSwgdW5pdCkpIHtcbiAgICAgIHRoaXMuZGlzYWJsZVByZXZpb3VzQnV0dG9uID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kaXNhYmxlUHJldmlvdXNCdXR0b24gPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBXaGVuIGluIHllYXIgdmlldywgd2UgbmVlZCB0byBhZGQgOCB5ZWFycyB0byBkZXRlcm1pbmUgaWYgd2UncmUgcGFzdCB0aGUgbWF4IGRhdGUuXG4gICAgLy8gVGhlIHllYXIgdmlldyBpcyAxNiB5ZWFycyBsb25nLCBhbmQgdGhlIGN1cnJlbnQgZGF0ZSBpcyB0aGUgOXRoIHllYXIgaW4gdGhlIHZpZXcuXG4gICAgY29uc3QgYWRkQ291bnQgPSB0aGlzLnZpZXcubW9kZSA9PT0gJ3llYXInID8gOCA6IDE7XG4gICAgaWYgKG1vbWVudCh0aGlzLnZpZXcuZGF0ZSkuYWRkKGFkZENvdW50LCB1bml0KS5pc0FmdGVyKHRoaXMubWF4RGF0ZSwgdW5pdCkpIHtcbiAgICAgIHRoaXMuZGlzYWJsZU5leHRCdXR0b24gPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRpc2FibGVOZXh0QnV0dG9uID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRMYXN0SXRlbSgpOiBDYWxlbmRhci5JdGVtIHtcbiAgICBjb25zdCBsYXN0Um93ID0gdGhpcy5jYWxlbmRhckl0ZW1zW3RoaXMuY2FsZW5kYXJJdGVtcy5sZW5ndGggLSAxXTtcbiAgICByZXR1cm4gbGFzdFJvd1tsYXN0Um93Lmxlbmd0aCAtIDFdO1xuICB9XG59XG4iLCI8aGVhZGVyIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtdC0xIG1iLTIgcHgtMVwiPlxuICA8YnV0dG9uIGlkPVwie3tpZH19X3ByZXZfYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cIm1yLWF1dG9cIlxuICAgICAgICAgIChjbGljayk9XCJvblByZXZpb3VzQ2xpY2soKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVQcmV2aW91c0J1dHRvblwiXG4gICAgICAgICAgdGFiaW5kZXg9XCJ7e3RhYmluZGV4fX1cIj5cbiAgICA8aSBjbGFzcz1cImVjLWljb24gaWNvbi1hbmdsZS1kb3duIHJvdGF0ZS05MFwiPjwvaT5cbiAgPC9idXR0b24+XG5cbiAgPGJ1dHRvbiAqbmdJZj1cInZpZXcubW9kZSA9PT0gJ2RheSdcIlxuICAgICAgICAgIGlkPVwie3tpZH19X21vbnRoX2J1dHRvblwiXG4gICAgICAgICAgY2xhc3M9XCJ0ZXh0LWJvZHktMSBmb250LXdlaWdodC1ib2xkXCJcbiAgICAgICAgICAoY2xpY2spPVwib25Nb250aENsaWNrKClcIlxuICAgICAgICAgIHRhYmluZGV4PVwie3t0YWJpbmRleH19XCI+XG4gICAge3ttb250aH19XG4gIDwvYnV0dG9uPlxuXG4gIDxidXR0b24gKm5nSWY9XCJ2aWV3Lm1vZGUgIT09ICd5ZWFyJ1wiXG4gICAgICAgICAgaWQ9XCJ7e2lkfX1feWVhcl9idXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwidGV4dC1ib2R5LTEgZm9udC13ZWlnaHQtYm9sZFwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uWWVhckNsaWNrKClcIlxuICAgICAgICAgIHRhYmluZGV4PVwie3t0YWJpbmRleH19XCI+XG4gICAge3t5ZWFyfX1cbiAgPC9idXR0b24+XG5cbiAgPGRpdiBpZD1cInt7aWR9fV95ZWFyX3JhbmdlXCJcbiAgICAgICAqbmdJZj1cInZpZXcubW9kZSA9PT0gJ3llYXInXCJcbiAgICAgICBjbGFzcz1cInRleHQtYm9keS0xIGZvbnQtd2VpZ2h0LWJvbGRcIlxuICAgICAgIFtpbm5lckhUTUxdPVwieWVhclJhbmdlXCI+XG4gIDwvZGl2PlxuXG4gIDxidXR0b24gaWQ9XCJ7e2lkfX1fbmV4dF9idXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwibWwtYXV0b1wiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uTmV4dENsaWNrKClcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlTmV4dEJ1dHRvblwiXG4gICAgICAgICAgdGFiaW5kZXg9XCJ7e3RhYmluZGV4fX1cIj5cbiAgICA8aSBjbGFzcz1cImVjLWljb24gaWNvbi1hbmdsZS1kb3duIHJvdGF0ZS0yNzBcIj48L2k+XG4gIDwvYnV0dG9uPlxuPC9oZWFkZXI+XG5cbjxkaXYgKm5nSWY9XCJ2aWV3Lm1vZGUgPT09ICdkYXknXCJcbiAgICAgY2xhc3M9XCJtYi0xIHB4LTIgZC1mbGV4XCI+XG4gIDxoMyAqbmdGb3I9XCJsZXQgZGF5IG9mIHdlZWtEYXlzXCJcbiAgICAgIGNsYXNzPVwidGV4dC1oZWFkaW5nLTMgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgIHN0eWxlPVwid2lkdGg6IDJyZW07IGhlaWdodDogMS43NXJlbTtcIj57e2RheX19PC9oMz5cbjwvZGl2PlxuXG48ZGl2ICpuZ0Zvcj1cImxldCByb3cgb2YgY2FsZW5kYXJJdGVtczsgbGFzdCBhcyBpc0xhc3Q7IHRyYWNrQnk6IHRyYWNrQnlEYXRlUm93XCJcbiAgICAgY2xhc3M9XCJweC0yIGQtZmxleCB7e3ZpZXcubW9kZX19LXZpZXdcIlxuICAgICBbY2xhc3MubWItMV09XCIhaXNMYXN0XCJcbiAgICAgW2NsYXNzLm1iLTJdPVwiaXNMYXN0XCI+XG4gIDxidXR0b24gKm5nRm9yPVwibGV0IGl0ZW0gb2Ygcm93OyB0cmFja0J5OiB0cmFja0J5RGF0ZVwiXG4gICAgICAgICAgaWQ9XCJ7e2lkfX1faXRlbV97e2l0ZW0uZGF0ZSB8IGRhdGU6J01NX2RkX3l5eXknfX1cIlxuICAgICAgICAgIGVjLWNhbGVuZGFyLWl0ZW1cbiAgICAgICAgICBbaXRlbV09XCJpdGVtXCJcbiAgICAgICAgICBbc2VsZWN0aW9uXT1cInNlbGVjdGlvblwiXG4gICAgICAgICAgW3ZpZXddPVwidmlld1wiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uSXRlbVNlbGVjdGVkKGl0ZW0pXCJcbiAgICAgICAgICBbaW5uZXJIVE1MXT1cIml0ZW0ubGFiZWxcIlxuICAgICAgICAgIFttaW5EYXRlXT1cIm1pbkRhdGVcIlxuICAgICAgICAgIFttYXhEYXRlXT1cIm1heERhdGVcIlxuICAgICAgICAgIHRhYmluZGV4PVwie3t0YWJpbmRleH19XCI+XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvY29udHJvbHMvY2FsZW5kYXIvY2FsZW5kYXIudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBuYW1lc3BhY2UgQ2FsZW5kYXIge1xuICBleHBvcnQgdHlwZSBWaWV3TW9kZSA9ICdkYXknIHwgJ21vbnRoJyB8ICdxdWFydGVyJyB8ICd5ZWFyJztcblxuICBleHBvcnQgdHlwZSBWaWV3ID0ge1xuICAgIG1vZGU6IFZpZXdNb2RlO1xuICAgIGRhdGU6IERhdGU7XG4gIH07XG5cbiAgZXhwb3J0IHR5cGUgSXRlbSA9IHtcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIGRhdGU6IERhdGU7XG4gIH07XG59XG4iXX0=
|
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
import { Component, Input, ViewChild } from '@angular/core';
|
|
2
|
-
import { merge, Subject } from 'rxjs';
|
|
3
|
-
import { distinctUntilChanged, takeUntil } from 'rxjs/operators';
|
|
4
|
-
import { FormControlBase } from "../form-control-base";
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "../../core/validation-message.service";
|
|
7
|
-
import * as i2 from "../../shared/form-group.helper";
|
|
8
|
-
import * as i3 from "@angular/common";
|
|
9
|
-
import * as i4 from "@angular/forms";
|
|
10
|
-
import * as i5 from "../help-popover/help-popover.component";
|
|
11
|
-
import * as i6 from "@ngx-translate/core";
|
|
12
|
-
export class CheckboxComponent extends FormControlBase {
|
|
13
|
-
constructor(validationMessageService, formGroupHelper) {
|
|
14
|
-
super(validationMessageService, formGroupHelper);
|
|
15
|
-
this.validationMessageService = validationMessageService;
|
|
16
|
-
this.formGroupHelper = formGroupHelper;
|
|
17
|
-
/**
|
|
18
|
-
* The name of the checkbox input element
|
|
19
|
-
*/
|
|
20
|
-
this.name = '';
|
|
21
|
-
/**
|
|
22
|
-
* Determines whether to ignore or include disabled dependent checkboxes in the check to determine the checkbox state.
|
|
23
|
-
*/
|
|
24
|
-
this.ignoreDisabledDependents = true;
|
|
25
|
-
/**
|
|
26
|
-
* If the checkbox is a master checkbox (i.e. it has a dependentCheckboxesGroup),
|
|
27
|
-
* indeterminate is true if there are some checked dependents and some unchecked dependents.
|
|
28
|
-
*/
|
|
29
|
-
this.indeterminate = false;
|
|
30
|
-
//Used to prevent valueChanges loops in the master checkbox and dependent checkboxes value changes.
|
|
31
|
-
this.ignoreCall = false;
|
|
32
|
-
/** Fired whenever the dependent checkboxes are changed to clear out subscriptions to the previous dependents */
|
|
33
|
-
this.resetDependentSubscriptions = new Subject();
|
|
34
|
-
}
|
|
35
|
-
ngAfterViewInit() {
|
|
36
|
-
if (this.autofocus) {
|
|
37
|
-
this.inputElement.nativeElement.focus();
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
ngOnChanges(changes) {
|
|
41
|
-
if (changes.dependentCheckboxesGroup) {
|
|
42
|
-
this.setupDependents();
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
dispatchEvent(event) {
|
|
46
|
-
if (event.type === 'click' && !this.formModel.disabled) {
|
|
47
|
-
this.formModel.patchValue(!this.formModel.value);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Create watchers that allow the master and dependent checkbox states to stay in sync as the user interacts with them.
|
|
52
|
-
* Dependents can update the master when their values change and the master updates dependents when the value changes.
|
|
53
|
-
*/
|
|
54
|
-
setupDependents() {
|
|
55
|
-
if (!this.dependentCheckboxesGroup) {
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
58
|
-
// Remove any subscriptions to previous dependents
|
|
59
|
-
this.resetDependentSubscriptions.next();
|
|
60
|
-
//Extract the values (i.e. the checkboxes) from the FormGroup controls key-value map and return them.
|
|
61
|
-
let dependentCheckboxes = Object.values(this.dependentCheckboxesGroup.controls);
|
|
62
|
-
this.updateMasterState(dependentCheckboxes);
|
|
63
|
-
//When the master value changes, we set all its dependents to that value.
|
|
64
|
-
//We also set indeterminate to false since we know that all dependents will either be checked or unchecked.
|
|
65
|
-
this.formModel.valueChanges.pipe(distinctUntilChanged(), takeUntil(merge(this.componentDestroyed, this.resetDependentSubscriptions))).subscribe((value) => {
|
|
66
|
-
if (!this.ignoreCall) {
|
|
67
|
-
this.ignoreCall = true; //Ignore any value changes calls on the dependents to prevent a loop.
|
|
68
|
-
dependentCheckboxes.forEach(checkbox => {
|
|
69
|
-
if (!checkbox.disabled || !this.ignoreDisabledDependents) {
|
|
70
|
-
checkbox.setValue(value);
|
|
71
|
-
}
|
|
72
|
-
});
|
|
73
|
-
this.indeterminate = false;
|
|
74
|
-
this.ignoreCall = false;
|
|
75
|
-
}
|
|
76
|
-
});
|
|
77
|
-
//When a dependent value changes, we need to reevaluate the master state.
|
|
78
|
-
//We are subscribing to the form models directly instead of the entire group because we found that adding checkboxes to
|
|
79
|
-
// more than one form group causes only the last group to emit valueChanges events.
|
|
80
|
-
//That prevented combined row-master and table-master setups from working properly.
|
|
81
|
-
dependentCheckboxes.forEach(checkbox => {
|
|
82
|
-
checkbox.valueChanges.pipe(distinctUntilChanged(), takeUntil(merge(this.componentDestroyed, this.resetDependentSubscriptions))).subscribe((value) => {
|
|
83
|
-
if (value !== true && value !== false) {
|
|
84
|
-
console.error(`The value ${value} is not true or false, which are the only supported values for FormControls in the dependentCheckboxesGroup`);
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
|
-
if (!this.ignoreCall) {
|
|
88
|
-
this.ignoreCall = true; //Ignore any value changes calls on the master to prevent a loop.
|
|
89
|
-
this.updateMasterState(dependentCheckboxes);
|
|
90
|
-
this.ignoreCall = false;
|
|
91
|
-
}
|
|
92
|
-
});
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* If all dependents are true, the master should be true and determinate.
|
|
97
|
-
* If all dependents are false, the master should be false and determinate.
|
|
98
|
-
* If some dependents are true and some dependents are false, the master should be false and indeterminate.
|
|
99
|
-
*
|
|
100
|
-
* If ignoreDisabledDependents is true, does not include the disabled dependents when checking values
|
|
101
|
-
*/
|
|
102
|
-
updateMasterState(dependentCheckboxes) {
|
|
103
|
-
let dependentsToCheck = [];
|
|
104
|
-
if (this.ignoreDisabledDependents) {
|
|
105
|
-
dependentsToCheck = dependentCheckboxes.filter(checkbox => checkbox.enabled);
|
|
106
|
-
}
|
|
107
|
-
else {
|
|
108
|
-
dependentsToCheck = dependentCheckboxes;
|
|
109
|
-
}
|
|
110
|
-
let isTrue = (checkbox) => { return checkbox.value === true; };
|
|
111
|
-
if (dependentsToCheck.every(isTrue)) {
|
|
112
|
-
this.formModel.setValue(true);
|
|
113
|
-
this.indeterminate = false;
|
|
114
|
-
}
|
|
115
|
-
else if (dependentsToCheck.some(isTrue)) {
|
|
116
|
-
this.formModel.setValue(false);
|
|
117
|
-
this.indeterminate = true;
|
|
118
|
-
}
|
|
119
|
-
else {
|
|
120
|
-
this.formModel.setValue(false);
|
|
121
|
-
this.indeterminate = false;
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CheckboxComponent, deps: [{ token: i1.ValidationMessageService }, { token: i2.FormGroupHelper }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
125
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CheckboxComponent, selector: "ec-checkbox", inputs: { name: "name", dependentCheckboxesGroup: "dependentCheckboxesGroup", ignoreDisabledDependents: "ignoreDisabledDependents" }, viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["checkboxInput"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"control\">\n <label class=\"checkbox\"\n [ngClass]=\"{'is-disabled': formModel.disabled, 'no-label': !label, 'is-readonly': readonly}\">\n <input id=\"{{id}}_input\"\n #checkboxInput\n class='input'\n [class.indeterminate]=\"indeterminate\"\n [attr.id]=\"inputId\"\n [attr.name]=\"name\"\n type=\"checkbox\"\n tabindex=\"{{tabindex}}\"\n [formControl]=\"formModel\"\n [attr.cdkFocusInitial]=\"autofocus || null\">\n <i class=\"ec-icon icon-check\"></i>\n\n <span id=\"{{id}}_label\"\n *ngIf=\"label\"\n class=\"label\">\n <span [innerHtml]=\"label | translate\"></span>\n <ec-help-popover id=\"{{id}}_helpPopover\"\n *ngIf=\"helpPopover\"\n class=\"d-inline-block my-n2 mx-n1\"\n text=\"{{helpPopover | translate}}\"\n contentPosition=\"{{helpPopoverPosition}}\">\n </ec-help-popover>\n </span>\n </label>\n</div>", styles: [":host{color:var(--ec-form-control-color);font-size:var(--ec-form-control-font-size);display:block;margin-bottom:1rem;width:100%}:host :host-context(.form-condensed){margin-bottom:.5rem}:host .control{width:100%;display:flex;flex-direction:column}:host .control.control-label-bottom{flex-direction:column-reverse}:host .control.control-label-left{flex-direction:row}:host .control.control-label-left label{margin-right:.25rem}:host .control.control-label-right{flex-direction:row-reverse}:host .control.control-label-right label{margin-left:.25rem}:host .control.control-label-left,:host .control.control-label-right{align-items:center}:host .control.control-label-left label,:host .control.control-label-right label{flex:1 1;margin-top:0;margin-bottom:0}:host .control.control-label-left .control-input,:host .control.control-label-right .control-input{flex:2 2}:host .control.is-readonly input,:host .control.is-readonly select,:host .control.is-readonly textarea{border-color:var(--ec-form-control-border-color-readonly);background-color:var(--ec-form-control-background-color-readonly);background-clip:border-box;background-image:none;color:var(--ec-form-control-color-readonly);opacity:1;-webkit-user-select:none;user-select:none;pointer-events:none;overflow:hidden;white-space:nowrap}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid{background-color:var(--ec-form-control-background-color-invalid);border-color:var(--ec-form-control-border-color-invalid);background-repeat:no-repeat;background-position:.5rem center;background-size:1rem,1rem;padding-left:1.75rem;background-image:none}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid:focus,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid:focus{border-color:var(--ec-form-control-background-color-invalid)}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid:hover:not(:disabled):not(:focus),:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid:hover:not(:disabled):not(:focus){border-color:var(--ec-form-control-border-color-hover)}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid~.icon-invalid,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid~.icon-invalid{display:inline-flex;position:absolute;left:.5rem;top:.5rem;z-index:1}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid~.icon-required,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid~.icon-required{display:none}:host .control.invalid:not(.open) .textbox-group-btn-right ::ng-deep button{background-color:var(--ec-form-control-background-color-invalid)}:host .control.invalid:not(.open) .textbox-group-btn-right ::ng-deep button:not(:focus){border-color:var(--ec-form-control-border-color-invalid)}:host .control.invalid:not(.open) .textbox-group-btn-right ::ng-deep button:hover:not(:disabled):not(:focus){border-color:var(--ec-form-control-border-color-hover)}:host .textbox-group{display:flex;position:relative}:host textarea:focus,:host input:focus,:host select:focus{outline:none}:host(.w-auto){width:auto}.checkbox{cursor:pointer;display:inline-flex;margin-bottom:0;position:relative}.checkbox.is-disabled{cursor:default}.input{margin-top:.5rem;opacity:0;position:absolute;z-index:-1}.input:not(:checked)+.ec-icon{color:var(--ec-form-control-border-color)}.input:not(:checked)+.ec-icon:before{display:none}.input.indeterminate+.ec-icon,.input:indeterminate+.ec-icon{color:var(--ec-color-interactive)}.input.indeterminate+.ec-icon:before,.input:indeterminate+.ec-icon:before{content:\"\";background-color:currentColor;display:block;width:10px;height:3px}.input:focus+.ec-icon{color:var(--ec-color-interactive);box-shadow:var(--ec-form-control-box-shadow-focus);border-color:var(--ec-form-control-border-color-focus)}.input:disabled+.ec-icon{color:var(--ec-form-control-color-disabled);background-color:var(--ec-form-control-background-color-disabled);border-color:var(--ec-form-control-border-color-disabled);opacity:var(--ec-form-control-opacity-disabled)}.input:disabled~.label{color:var(--ec-form-control-color-disabled);opacity:var(--ec-form-control-opacity-disabled)}.input:hover:not(:disabled):not(:focus)+.ec-icon{border-color:var(--ec-border-color-control-hover)}.ec-icon{background-color:var(--ec-form-control-background-color);background-clip:padding-box;border:1px solid currentColor;color:var(--ec-color-interactive);margin-top:.5rem;flex:none;pointer-events:none;display:inline-flex;align-items:center;justify-content:center;height:1em;width:1em;border-radius:.125rem}.ec-icon:before{font-size:.6875em}.label{line-height:1.25rem;padding:.375rem 0;margin-left:.5rem;min-height:2rem;height:auto}.checkbox.is-readonly{pointer-events:none}.checkbox.is-readonly .input{opacity:0}.checkbox.is-readonly .ec-icon{background-color:var(--ec-form-control-background-color-readonly);border-color:var(--ec-form-control-border-color-readonly)}.checkbox.is-readonly .label,.checkbox.is-readonly .ec-icon{opacity:1;color:var(--ec-form-control-color)}.checkbox.is-readonly ec-help-popover{pointer-events:auto}.no-label .input,.no-label .icon-check{margin-top:0}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i5.HelpPopoverComponent, selector: "ec-help-popover", inputs: ["id", "text", "contentPosition", "maxWidth"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] }); }
|
|
126
|
-
}
|
|
127
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CheckboxComponent, decorators: [{
|
|
128
|
-
type: Component,
|
|
129
|
-
args: [{ selector: 'ec-checkbox', template: "<div class=\"control\">\n <label class=\"checkbox\"\n [ngClass]=\"{'is-disabled': formModel.disabled, 'no-label': !label, 'is-readonly': readonly}\">\n <input id=\"{{id}}_input\"\n #checkboxInput\n class='input'\n [class.indeterminate]=\"indeterminate\"\n [attr.id]=\"inputId\"\n [attr.name]=\"name\"\n type=\"checkbox\"\n tabindex=\"{{tabindex}}\"\n [formControl]=\"formModel\"\n [attr.cdkFocusInitial]=\"autofocus || null\">\n <i class=\"ec-icon icon-check\"></i>\n\n <span id=\"{{id}}_label\"\n *ngIf=\"label\"\n class=\"label\">\n <span [innerHtml]=\"label | translate\"></span>\n <ec-help-popover id=\"{{id}}_helpPopover\"\n *ngIf=\"helpPopover\"\n class=\"d-inline-block my-n2 mx-n1\"\n text=\"{{helpPopover | translate}}\"\n contentPosition=\"{{helpPopoverPosition}}\">\n </ec-help-popover>\n </span>\n </label>\n</div>", styles: [":host{color:var(--ec-form-control-color);font-size:var(--ec-form-control-font-size);display:block;margin-bottom:1rem;width:100%}:host :host-context(.form-condensed){margin-bottom:.5rem}:host .control{width:100%;display:flex;flex-direction:column}:host .control.control-label-bottom{flex-direction:column-reverse}:host .control.control-label-left{flex-direction:row}:host .control.control-label-left label{margin-right:.25rem}:host .control.control-label-right{flex-direction:row-reverse}:host .control.control-label-right label{margin-left:.25rem}:host .control.control-label-left,:host .control.control-label-right{align-items:center}:host .control.control-label-left label,:host .control.control-label-right label{flex:1 1;margin-top:0;margin-bottom:0}:host .control.control-label-left .control-input,:host .control.control-label-right .control-input{flex:2 2}:host .control.is-readonly input,:host .control.is-readonly select,:host .control.is-readonly textarea{border-color:var(--ec-form-control-border-color-readonly);background-color:var(--ec-form-control-background-color-readonly);background-clip:border-box;background-image:none;color:var(--ec-form-control-color-readonly);opacity:1;-webkit-user-select:none;user-select:none;pointer-events:none;overflow:hidden;white-space:nowrap}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid{background-color:var(--ec-form-control-background-color-invalid);border-color:var(--ec-form-control-border-color-invalid);background-repeat:no-repeat;background-position:.5rem center;background-size:1rem,1rem;padding-left:1.75rem;background-image:none}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid:focus,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid:focus{border-color:var(--ec-form-control-background-color-invalid)}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid:hover:not(:disabled):not(:focus),:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid:hover:not(:disabled):not(:focus){border-color:var(--ec-form-control-border-color-hover)}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid~.icon-invalid,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid~.icon-invalid{display:inline-flex;position:absolute;left:.5rem;top:.5rem;z-index:1}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid~.icon-required,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid~.icon-required{display:none}:host .control.invalid:not(.open) .textbox-group-btn-right ::ng-deep button{background-color:var(--ec-form-control-background-color-invalid)}:host .control.invalid:not(.open) .textbox-group-btn-right ::ng-deep button:not(:focus){border-color:var(--ec-form-control-border-color-invalid)}:host .control.invalid:not(.open) .textbox-group-btn-right ::ng-deep button:hover:not(:disabled):not(:focus){border-color:var(--ec-form-control-border-color-hover)}:host .textbox-group{display:flex;position:relative}:host textarea:focus,:host input:focus,:host select:focus{outline:none}:host(.w-auto){width:auto}.checkbox{cursor:pointer;display:inline-flex;margin-bottom:0;position:relative}.checkbox.is-disabled{cursor:default}.input{margin-top:.5rem;opacity:0;position:absolute;z-index:-1}.input:not(:checked)+.ec-icon{color:var(--ec-form-control-border-color)}.input:not(:checked)+.ec-icon:before{display:none}.input.indeterminate+.ec-icon,.input:indeterminate+.ec-icon{color:var(--ec-color-interactive)}.input.indeterminate+.ec-icon:before,.input:indeterminate+.ec-icon:before{content:\"\";background-color:currentColor;display:block;width:10px;height:3px}.input:focus+.ec-icon{color:var(--ec-color-interactive);box-shadow:var(--ec-form-control-box-shadow-focus);border-color:var(--ec-form-control-border-color-focus)}.input:disabled+.ec-icon{color:var(--ec-form-control-color-disabled);background-color:var(--ec-form-control-background-color-disabled);border-color:var(--ec-form-control-border-color-disabled);opacity:var(--ec-form-control-opacity-disabled)}.input:disabled~.label{color:var(--ec-form-control-color-disabled);opacity:var(--ec-form-control-opacity-disabled)}.input:hover:not(:disabled):not(:focus)+.ec-icon{border-color:var(--ec-border-color-control-hover)}.ec-icon{background-color:var(--ec-form-control-background-color);background-clip:padding-box;border:1px solid currentColor;color:var(--ec-color-interactive);margin-top:.5rem;flex:none;pointer-events:none;display:inline-flex;align-items:center;justify-content:center;height:1em;width:1em;border-radius:.125rem}.ec-icon:before{font-size:.6875em}.label{line-height:1.25rem;padding:.375rem 0;margin-left:.5rem;min-height:2rem;height:auto}.checkbox.is-readonly{pointer-events:none}.checkbox.is-readonly .input{opacity:0}.checkbox.is-readonly .ec-icon{background-color:var(--ec-form-control-background-color-readonly);border-color:var(--ec-form-control-border-color-readonly)}.checkbox.is-readonly .label,.checkbox.is-readonly .ec-icon{opacity:1;color:var(--ec-form-control-color)}.checkbox.is-readonly ec-help-popover{pointer-events:auto}.no-label .input,.no-label .icon-check{margin-top:0}\n"] }]
|
|
130
|
-
}], ctorParameters: () => [{ type: i1.ValidationMessageService }, { type: i2.FormGroupHelper }], propDecorators: { name: [{
|
|
131
|
-
type: Input
|
|
132
|
-
}], dependentCheckboxesGroup: [{
|
|
133
|
-
type: Input
|
|
134
|
-
}], ignoreDisabledDependents: [{
|
|
135
|
-
type: Input
|
|
136
|
-
}], inputElement: [{
|
|
137
|
-
type: ViewChild,
|
|
138
|
-
args: ['checkboxInput', { static: true }]
|
|
139
|
-
}] } });
|
|
140
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBYyxLQUFLLEVBQTRCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqSCxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7OztBQVV2RCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsZUFBZTtJQXdDcEQsWUFDWSx3QkFBa0QsRUFDbEQsZUFBZ0M7UUFFMUMsS0FBSyxDQUFDLHdCQUF3QixFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBSHZDLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBeEM1Qzs7V0FFRztRQUNhLFNBQUksR0FBVyxFQUFFLENBQUM7UUFhbEM7O1dBRUc7UUFDYSw2QkFBd0IsR0FBWSxJQUFJLENBQUM7UUFPekQ7OztXQUdHO1FBQ0ksa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFFdEMsbUdBQW1HO1FBQzNGLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFFcEMsZ0hBQWdIO1FBQ3hHLGdDQUEyQixHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFPMUQsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLElBQUks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Q0EyQk07OzRGRFZPLGlCQUFpQjtrQkFON0IsU0FBUzsrQkFDRSxhQUFhOzJIQVVQLElBQUk7c0JBQW5CLEtBQUs7Z0JBV1Usd0JBQXdCO3NCQUF2QyxLQUFLO2dCQUtVLHdCQUF3QjtzQkFBdkMsS0FBSztnQkFLa0QsWUFBWTtzQkFBbkUsU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IG1lcmdlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVmFsaWRhdGlvbk1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS92YWxpZGF0aW9uLW1lc3NhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBDbGlja2FibGVFbGVtZW50IH0gZnJvbSAnLi4vLi4vc2hhcmVkL2RpcmVjdGl2ZXMvY2xpY2stYXJlYS1mb3IvY2xpY2stYXJlYS1mb3IuZGlyZWN0aXZlJztcbmltcG9ydCB7IEZvcm1Hcm91cEhlbHBlciB9IGZyb20gJy4uLy4uL3NoYXJlZC9mb3JtLWdyb3VwLmhlbHBlcic7XG5pbXBvcnQgeyBGb3JtQ29udHJvbEJhc2UgfSBmcm9tIFwiLi4vZm9ybS1jb250cm9sLWJhc2VcIjtcblxuZXhwb3J0IHR5cGUgQ2hlY2tib3hTdGF0ZSA9ICd1bmNoZWNrZWQnIHwgJ2luZGV0ZXJtaW5hdGUnIHwgJ2NoZWNrZWQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlYy1jaGVja2JveCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGVja2JveC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NoZWNrYm94LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5cbmV4cG9ydCBjbGFzcyBDaGVja2JveENvbXBvbmVudCBleHRlbmRzIEZvcm1Db250cm9sQmFzZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIENsaWNrYWJsZUVsZW1lbnQsIE9uQ2hhbmdlcyB7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBjaGVja2JveCBpbnB1dCBlbGVtZW50XG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgbmFtZTogc3RyaW5nID0gJyc7XG5cbiAgLyoqXG4gICAqIEFuIG9iamVjdCB3aXRoIGEgY29sbGVjdGlvbiBvZiBGb3JtQ29udHJvbHMgd2hvIGNhbiBvbmx5IGhhdmUgYSB2YWx1ZSBvZiB0cnVlIG9yIGZhbHNlLlxuICAgKiBBIEZvcm1Hcm91cCBvciBGb3JtQXJyYXkgd29yayBmaW5lLCBvciBhIGN1c3RvbSBvYmplY3QgcmVmZXJlbmNlIGlzIHBvc3NpYmxlIHRvb1xuICAgKiBUaGUgbWFzdGVyIGNoZWNrYm94IHdpbGwgcmVhdHRhY2ggdG8gZGVwZW5kZW50IGNvbnRyb2xzIGFueSB0aW1lIHRoaXMgcmVmZXJlbmNlIGNoYW5nZXNcbiAgICogVGhlIGNvbnRyb2xzIHNob3VsZCBiZSBmbGF0IChpLmUuIGlmIHVzaW5nIGEgRm9ybUdyb3VwIHRoZW4gaXQgY2Fubm90IGhhdmUgbmVzdGVkIEZvcm1Hcm91cHMgd2l0aGluIGl0KS5cbiAgICogXG4gICAqIEZvciBleGFtcGxlOiBcbiAgICogZGVwZW5kZW50Q2hlY2tib3hlc0dyb3VwID0gbmV3IEZvcm1Hcm91cCh7Y2hpbGQxOiBuZXcgRm9ybUNvbnRyb2woZmFsc2UpLCBjaGlsZDI6IG5ldyBGb3JtQ29udHJvbChmYWxzZSksIGNoaWxkMzogbmV3IEZvcm1Db250cm9sKGZhbHNlKX0pXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgZGVwZW5kZW50Q2hlY2tib3hlc0dyb3VwPzoge2NvbnRyb2xzOiBBYnN0cmFjdENvbnRyb2xbXSB8IHtba2V5OiBzdHJpbmddOiBBYnN0cmFjdENvbnRyb2x9fTtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGlnbm9yZSBvciBpbmNsdWRlIGRpc2FibGVkIGRlcGVuZGVudCBjaGVja2JveGVzIGluIHRoZSBjaGVjayB0byBkZXRlcm1pbmUgdGhlIGNoZWNrYm94IHN0YXRlLlxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGlnbm9yZURpc2FibGVkRGVwZW5kZW50czogYm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFJlZmVyZW5jZSB0byB0aGUgY2hlY2tib3ggaW5wdXQgY29udHJvbFxuICAqL1xuICBAVmlld0NoaWxkKCdjaGVja2JveElucHV0JywgeyBzdGF0aWM6IHRydWUgfSkgcHJvdGVjdGVkIGlucHV0RWxlbWVudCE6IEVsZW1lbnRSZWY7XG5cbiAgLyoqXG4gICAqIElmIHRoZSBjaGVja2JveCBpcyBhIG1hc3RlciBjaGVja2JveCAoaS5lLiBpdCBoYXMgYSBkZXBlbmRlbnRDaGVja2JveGVzR3JvdXApLFxuICAgKiBpbmRldGVybWluYXRlIGlzIHRydWUgaWYgdGhlcmUgYXJlIHNvbWUgY2hlY2tlZCBkZXBlbmRlbnRzIGFuZCBzb21lIHVuY2hlY2tlZCBkZXBlbmRlbnRzLlxuICAgKi9cbiAgcHVibGljIGluZGV0ZXJtaW5hdGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvL1VzZWQgdG8gcHJldmVudCB2YWx1ZUNoYW5nZXMgbG9vcHMgaW4gdGhlIG1hc3RlciBjaGVja2JveCBhbmQgZGVwZW5kZW50IGNoZWNrYm94ZXMgdmFsdWUgY2hhbmdlcy5cbiAgcHJpdmF0ZSBpZ25vcmVDYWxsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIEZpcmVkIHdoZW5ldmVyIHRoZSBkZXBlbmRlbnQgY2hlY2tib3hlcyBhcmUgY2hhbmdlZCB0byBjbGVhciBvdXQgc3Vic2NyaXB0aW9ucyB0byB0aGUgcHJldmlvdXMgZGVwZW5kZW50cyAqL1xuICBwcml2YXRlIHJlc2V0RGVwZW5kZW50U3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHZhbGlkYXRpb25NZXNzYWdlU2VydmljZTogVmFsaWRhdGlvbk1lc3NhZ2VTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBmb3JtR3JvdXBIZWxwZXI6IEZvcm1Hcm91cEhlbHBlclxuICApIHtcbiAgICBzdXBlcih2YWxpZGF0aW9uTWVzc2FnZVNlcnZpY2UsIGZvcm1Hcm91cEhlbHBlcik7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKHRoaXMuYXV0b2ZvY3VzKSB7XG4gICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzLmRlcGVuZGVudENoZWNrYm94ZXNHcm91cCkge1xuICAgICAgdGhpcy5zZXR1cERlcGVuZGVudHMoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZGlzcGF0Y2hFdmVudChldmVudDogRXZlbnQpIHtcbiAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2NsaWNrJyAmJiAhdGhpcy5mb3JtTW9kZWwuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuZm9ybU1vZGVsLnBhdGNoVmFsdWUoIXRoaXMuZm9ybU1vZGVsLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHdhdGNoZXJzIHRoYXQgYWxsb3cgdGhlIG1hc3RlciBhbmQgZGVwZW5kZW50IGNoZWNrYm94IHN0YXRlcyB0byBzdGF5IGluIHN5bmMgYXMgdGhlIHVzZXIgaW50ZXJhY3RzIHdpdGggdGhlbS4gXG4gICAqIERlcGVuZGVudHMgY2FuIHVwZGF0ZSB0aGUgbWFzdGVyIHdoZW4gdGhlaXIgdmFsdWVzIGNoYW5nZSBhbmQgdGhlIG1hc3RlciB1cGRhdGVzIGRlcGVuZGVudHMgd2hlbiB0aGUgdmFsdWUgY2hhbmdlcy4gXG4gICAqL1xuICBwcml2YXRlIHNldHVwRGVwZW5kZW50cygpIHtcbiAgICAgIGlmKCF0aGlzLmRlcGVuZGVudENoZWNrYm94ZXNHcm91cCkge3JldHVybn1cblxuICAgICAgLy8gUmVtb3ZlIGFueSBzdWJzY3JpcHRpb25zIHRvIHByZXZpb3VzIGRlcGVuZGVudHNcbiAgICAgIHRoaXMucmVzZXREZXBlbmRlbnRTdWJzY3JpcHRpb25zLm5leHQoKTtcblxuICAgICAgLy9FeHRyYWN0IHRoZSB2YWx1ZXMgKGkuZS4gdGhlIGNoZWNrYm94ZXMpIGZyb20gdGhlIEZvcm1Hcm91cCBjb250cm9scyBrZXktdmFsdWUgbWFwIGFuZCByZXR1cm4gdGhlbS4gXG4gICAgICBsZXQgZGVwZW5kZW50Q2hlY2tib3hlczogQWJzdHJhY3RDb250cm9sW10gPSBPYmplY3QudmFsdWVzKHRoaXMuZGVwZW5kZW50Q2hlY2tib3hlc0dyb3VwLmNvbnRyb2xzKTtcblxuICAgICAgdGhpcy51cGRhdGVNYXN0ZXJTdGF0ZShkZXBlbmRlbnRDaGVja2JveGVzKTtcblxuICAgICAgLy9XaGVuIHRoZSBtYXN0ZXIgdmFsdWUgY2hhbmdlcywgd2Ugc2V0IGFsbCBpdHMgZGVwZW5kZW50cyB0byB0aGF0IHZhbHVlLlxuICAgICAgLy9XZSBhbHNvIHNldCBpbmRldGVybWluYXRlIHRvIGZhbHNlIHNpbmNlIHdlIGtub3cgdGhhdCBhbGwgZGVwZW5kZW50cyB3aWxsIGVpdGhlciBiZSBjaGVja2VkIG9yIHVuY2hlY2tlZC5cbiAgICAgIHRoaXMuZm9ybU1vZGVsLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICB0YWtlVW50aWwobWVyZ2UodGhpcy5jb21wb25lbnREZXN0cm95ZWQsIHRoaXMucmVzZXREZXBlbmRlbnRTdWJzY3JpcHRpb25zKSlcbiAgICAgICkuc3Vic2NyaWJlKCh2YWx1ZTogYm9vbGVhbikgPT4ge1xuICAgICAgICBpZighdGhpcy5pZ25vcmVDYWxsKSB7XG4gICAgICAgICAgdGhpcy5pZ25vcmVDYWxsID0gdHJ1ZTsgLy9JZ25vcmUgYW55IHZhbHVlIGNoYW5nZXMgY2FsbHMgb24gdGhlIGRlcGVuZGVudHMgdG8gcHJldmVudCBhIGxvb3AuXG4gICAgICAgICAgZGVwZW5kZW50Q2hlY2tib3hlcy5mb3JFYWNoKGNoZWNrYm94ID0+IHtcbiAgICAgICAgICAgIGlmICghY2hlY2tib3guZGlzYWJsZWQgfHwgIXRoaXMuaWdub3JlRGlzYWJsZWREZXBlbmRlbnRzKSB7XG4gICAgICAgICAgICAgIGNoZWNrYm94LnNldFZhbHVlKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuaWdub3JlQ2FsbCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgICAvL1doZW4gYSBkZXBlbmRlbnQgdmFsdWUgY2hhbmdlcywgd2UgbmVlZCB0byByZWV2YWx1YXRlIHRoZSBtYXN0ZXIgc3RhdGUuXG4gICAgICAvL1dlIGFyZSBzdWJzY3JpYmluZyB0byB0aGUgZm9ybSBtb2RlbHMgZGlyZWN0bHkgaW5zdGVhZCBvZiB0aGUgZW50aXJlIGdyb3VwIGJlY2F1c2Ugd2UgZm91bmQgdGhhdCBhZGRpbmcgY2hlY2tib3hlcyB0byBcbiAgICAgIC8vICBtb3JlIHRoYW4gb25lIGZvcm0gZ3JvdXAgY2F1c2VzIG9ubHkgdGhlIGxhc3QgZ3JvdXAgdG8gZW1pdCB2YWx1ZUNoYW5nZXMgZXZlbnRzLiBcbiAgICAgIC8vVGhhdCBwcmV2ZW50ZWQgY29tYmluZWQgcm93LW1hc3RlciBhbmQgdGFibGUtbWFzdGVyIHNldHVwcyBmcm9tIHdvcmtpbmcgcHJvcGVybHkuXG4gICAgICBkZXBlbmRlbnRDaGVja2JveGVzLmZvckVhY2goY2hlY2tib3ggPT4ge1xuICAgICAgICAgIGNoZWNrYm94LnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgICAgIHRha2VVbnRpbChtZXJnZSh0aGlzLmNvbXBvbmVudERlc3Ryb3llZCwgdGhpcy5yZXNldERlcGVuZGVudFN1YnNjcmlwdGlvbnMpKVxuICAgICAgICAgICkuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgaWYodmFsdWUgIT09IHRydWUgJiYgdmFsdWUgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgVGhlIHZhbHVlICR7dmFsdWV9IGlzIG5vdCB0cnVlIG9yIGZhbHNlLCB3aGljaCBhcmUgdGhlIG9ubHkgc3VwcG9ydGVkIHZhbHVlcyBmb3IgRm9ybUNvbnRyb2xzIGluIHRoZSBkZXBlbmRlbnRDaGVja2JveGVzR3JvdXBgKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZighdGhpcy5pZ25vcmVDYWxsKSB7XG4gICAgICAgICAgICAgIHRoaXMuaWdub3JlQ2FsbCA9IHRydWU7IC8vSWdub3JlIGFueSB2YWx1ZSBjaGFuZ2VzIGNhbGxzIG9uIHRoZSBtYXN0ZXIgdG8gcHJldmVudCBhIGxvb3AuXG4gICAgICAgICAgICAgIHRoaXMudXBkYXRlTWFzdGVyU3RhdGUoZGVwZW5kZW50Q2hlY2tib3hlcyk7XG4gICAgICAgICAgICAgIHRoaXMuaWdub3JlQ2FsbCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICB9KVxuICB9XG5cbiAgLyoqIFxuICAgKiBJZiBhbGwgZGVwZW5kZW50cyBhcmUgdHJ1ZSwgdGhlIG1hc3RlciBzaG91bGQgYmUgdHJ1ZSBhbmQgZGV0ZXJtaW5hdGUuXG4gICAqIElmIGFsbCBkZXBlbmRlbnRzIGFyZSBmYWxzZSwgdGhlIG1hc3RlciBzaG91bGQgYmUgZmFsc2UgYW5kIGRldGVybWluYXRlLlxuICAgKiBJZiBzb21lIGRlcGVuZGVudHMgYXJlIHRydWUgYW5kIHNvbWUgZGVwZW5kZW50cyBhcmUgZmFsc2UsIHRoZSBtYXN0ZXIgc2hvdWxkIGJlIGZhbHNlIGFuZCBpbmRldGVybWluYXRlLlxuICAgKiBcbiAgICogSWYgaWdub3JlRGlzYWJsZWREZXBlbmRlbnRzIGlzIHRydWUsIGRvZXMgbm90IGluY2x1ZGUgdGhlIGRpc2FibGVkIGRlcGVuZGVudHMgd2hlbiBjaGVja2luZyB2YWx1ZXNcbiAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVNYXN0ZXJTdGF0ZShkZXBlbmRlbnRDaGVja2JveGVzOiBBYnN0cmFjdENvbnRyb2xbXSkge1xuICAgIGxldCBkZXBlbmRlbnRzVG9DaGVjayA9IFtdO1xuICAgIGlmICh0aGlzLmlnbm9yZURpc2FibGVkRGVwZW5kZW50cykge1xuICAgICAgZGVwZW5kZW50c1RvQ2hlY2sgPSBkZXBlbmRlbnRDaGVja2JveGVzLmZpbHRlcihjaGVja2JveCA9PiBjaGVja2JveC5lbmFibGVkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGVwZW5kZW50c1RvQ2hlY2sgPSBkZXBlbmRlbnRDaGVja2JveGVzO1xuICAgIH1cblxuICAgIGxldCBpc1RydWUgPSAoY2hlY2tib3g6IEFic3RyYWN0Q29udHJvbCkgPT4ge3JldHVybiBjaGVja2JveC52YWx1ZSA9PT0gdHJ1ZX07XG4gICAgaWYoZGVwZW5kZW50c1RvQ2hlY2suZXZlcnkoaXNUcnVlKSkge1xuICAgICAgICB0aGlzLmZvcm1Nb2RlbC5zZXRWYWx1ZSh0cnVlKTtcbiAgICAgICAgdGhpcy5pbmRldGVybWluYXRlID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmKGRlcGVuZGVudHNUb0NoZWNrLnNvbWUoaXNUcnVlKSkge1xuICAgICAgICB0aGlzLmZvcm1Nb2RlbC5zZXRWYWx1ZShmYWxzZSk7XG4gICAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZSA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5mb3JtTW9kZWwuc2V0VmFsdWUoZmFsc2UpO1xuICAgICAgICB0aGlzLmluZGV0ZXJtaW5hdGUgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxufSIsIjxkaXYgY2xhc3M9XCJjb250cm9sXCI+XG4gICAgICAgPGxhYmVsIGNsYXNzPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2lzLWRpc2FibGVkJzogZm9ybU1vZGVsLmRpc2FibGVkLCAnbm8tbGFiZWwnOiAhbGFiZWwsICdpcy1yZWFkb25seSc6IHJlYWRvbmx5fVwiPlxuICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJ7e2lkfX1faW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgI2NoZWNrYm94SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSdpbnB1dCdcbiAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pbmRldGVybWluYXRlXT1cImluZGV0ZXJtaW5hdGVcIlxuICAgICAgICAgICAgICAgICAgICAgW2F0dHIuaWRdPVwiaW5wdXRJZFwiXG4gICAgICAgICAgICAgICAgICAgICBbYXR0ci5uYW1lXT1cIm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwie3t0YWJpbmRleH19XCJcbiAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtTW9kZWxcIlxuICAgICAgICAgICAgICAgICAgICAgW2F0dHIuY2RrRm9jdXNJbml0aWFsXT1cImF1dG9mb2N1cyB8fCBudWxsXCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiZWMtaWNvbiBpY29uLWNoZWNrXCI+PC9pPlxuXG4gICAgICAgICAgICAgIDxzcGFuIGlkPVwie3tpZH19X2xhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckh0bWxdPVwibGFiZWwgfCB0cmFuc2xhdGVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICA8ZWMtaGVscC1wb3BvdmVyIGlkPVwie3tpZH19X2hlbHBQb3BvdmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJoZWxwUG9wb3ZlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1pbmxpbmUtYmxvY2sgbXktbjIgbXgtbjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0PVwie3toZWxwUG9wb3ZlciB8IHRyYW5zbGF0ZX19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudFBvc2l0aW9uPVwie3toZWxwUG9wb3ZlclBvc2l0aW9ufX1cIj5cbiAgICAgICAgICAgICAgICAgICAgIDwvZWMtaGVscC1wb3BvdmVyPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgPC9sYWJlbD5cbjwvZGl2PiJdfQ==
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { Component, Input, EventEmitter, Output } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "../button/button.component";
|
|
4
|
-
export class CollapsibleToggleComponent {
|
|
5
|
-
constructor() {
|
|
6
|
-
/**
|
|
7
|
-
* The expanded state.
|
|
8
|
-
* The toggle icon is changed in the template based on the value of expanded.
|
|
9
|
-
*/
|
|
10
|
-
this.expanded = false;
|
|
11
|
-
/**
|
|
12
|
-
* Emits the value of expanded to the parent component for two-way binding
|
|
13
|
-
*/
|
|
14
|
-
this.expandedChange = new EventEmitter();
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* On click, toggle the value of exanded and emit the current value
|
|
18
|
-
*/
|
|
19
|
-
onToggle() {
|
|
20
|
-
this.expanded = !this.expanded;
|
|
21
|
-
this.expandedChange.emit(this.expanded);
|
|
22
|
-
}
|
|
23
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CollapsibleToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CollapsibleToggleComponent, selector: "ec-collapsible-toggle", inputs: { id: "id", expanded: "expanded", tabindex: "tabindex" }, outputs: { expandedChange: "expandedChange" }, ngImport: i0, template: `<ec-button id="{{id}}_button" type="icon" icon="icon-angle-down {{expanded ? '' : 'rotate-270'}}" tabindex="{{tabindex}}" (clicked)="onToggle()"></ec-button>`, isInline: true, styles: [":host{width:1.5rem;height:1.5rem;display:inline-flex;justify-content:center;align-items:center}ec-button::ng-deep .ec-button-icon{width:1.25rem;height:1.25rem}\n"], dependencies: [{ kind: "component", type: i1.ButtonComponent, selector: "ec-button", inputs: ["id", "disabled", "lockButton", "icon", "iconColor", "label", "badge", "tabindex", "type", "pending", "pendingIcon", "customTemplate", "isSubmit", "autofocus"], outputs: ["clicked"] }] }); }
|
|
25
|
-
}
|
|
26
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CollapsibleToggleComponent, decorators: [{
|
|
27
|
-
type: Component,
|
|
28
|
-
args: [{ selector: 'ec-collapsible-toggle', template: `<ec-button id="{{id}}_button" type="icon" icon="icon-angle-down {{expanded ? '' : 'rotate-270'}}" tabindex="{{tabindex}}" (clicked)="onToggle()"></ec-button>`, styles: [":host{width:1.5rem;height:1.5rem;display:inline-flex;justify-content:center;align-items:center}ec-button::ng-deep .ec-button-icon{width:1.25rem;height:1.25rem}\n"] }]
|
|
29
|
-
}], propDecorators: { id: [{
|
|
30
|
-
type: Input
|
|
31
|
-
}], expanded: [{
|
|
32
|
-
type: Input
|
|
33
|
-
}], tabindex: [{
|
|
34
|
-
type: Input
|
|
35
|
-
}], expandedChange: [{
|
|
36
|
-
type: Output
|
|
37
|
-
}] } });
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGFwc2libGUtdG9nZ2xlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9jb2xsYXBzaWJsZS10b2dnbGUvY29sbGFwc2libGUtdG9nZ2xlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFPdkUsTUFBTSxPQUFPLDBCQUEwQjtJQUx2QztRQVlFOzs7V0FHRztRQUNhLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFLMUM7O1dBRUc7UUFDYyxtQkFBYyxHQUEwQixJQUFJLFlBQVksRUFBVyxDQUFDO0tBU3RGO0lBUEM7O09BRUc7SUFDSSxRQUFRO1FBQ2IsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDL0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFDLENBQUM7K0dBM0JVLDBCQUEwQjttR0FBMUIsMEJBQTBCLDhLQUgzQiwrSkFBK0o7OzRGQUc5SiwwQkFBMEI7a0JBTHRDLFNBQVM7K0JBQ0UsdUJBQXVCLFlBQ3ZCLCtKQUErSjs4QkFRekosRUFBRTtzQkFBakIsS0FBSztnQkFNVSxRQUFRO3NCQUF2QixLQUFLO2dCQUdVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBS1csY0FBYztzQkFBOUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIEV2ZW50RW1pdHRlciwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VjLWNvbGxhcHNpYmxlLXRvZ2dsZScsXG4gIHRlbXBsYXRlOiBgPGVjLWJ1dHRvbiBpZD1cInt7aWR9fV9idXR0b25cIiB0eXBlPVwiaWNvblwiIGljb249XCJpY29uLWFuZ2xlLWRvd24ge3tleHBhbmRlZCA/ICcnIDogJ3JvdGF0ZS0yNzAnfX1cIiB0YWJpbmRleD1cInt7dGFiaW5kZXh9fVwiIChjbGlja2VkKT1cIm9uVG9nZ2xlKClcIj48L2VjLWJ1dHRvbj5gLFxuICBzdHlsZVVybHM6IFsnLi9jb2xsYXBzaWJsZS10b2dnbGUuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBDb2xsYXBzaWJsZVRvZ2dsZUNvbXBvbmVudCB7XG5cbiAgLyoqIFxuICAgKiBJZGVudGlmaWVyIHRvIHBhc3MgdG8gdGhlIGJ1dHRvbiBcbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBpZD86IHN0cmluZztcblxuICAvKiogXG4gICAqIFRoZSBleHBhbmRlZCBzdGF0ZS4gXG4gICAqIFRoZSB0b2dnbGUgaWNvbiBpcyBjaGFuZ2VkIGluIHRoZSB0ZW1wbGF0ZSBiYXNlZCBvbiB0aGUgdmFsdWUgb2YgZXhwYW5kZWQuIFxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGV4cGFuZGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIEJ1dHRvbiB0YWJpbmRleCAqL1xuICBASW5wdXQoKSBwdWJsaWMgdGFiaW5kZXg/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEVtaXRzIHRoZSB2YWx1ZSBvZiBleHBhbmRlZCB0byB0aGUgcGFyZW50IGNvbXBvbmVudCBmb3IgdHdvLXdheSBiaW5kaW5nXG4gICAqL1xuICBAT3V0cHV0KCkgcHVibGljIGV4cGFuZGVkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIFxuICAvKipcbiAgICogT24gY2xpY2ssIHRvZ2dsZSB0aGUgdmFsdWUgb2YgZXhhbmRlZCBhbmQgZW1pdCB0aGUgY3VycmVudCB2YWx1ZVxuICAgKi9cbiAgcHVibGljIG9uVG9nZ2xlKCk6IHZvaWQge1xuICAgIHRoaXMuZXhwYW5kZWQgPSAhdGhpcy5leHBhbmRlZDtcbiAgICB0aGlzLmV4cGFuZGVkQ2hhbmdlLmVtaXQodGhpcy5leHBhbmRlZCk7XG4gIH1cbn1cbiJdfQ==
|