@acpaas-ui/ngx-calendar 5.2.1 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -8
- package/esm2020/acpaas-ui-ngx-calendar.mjs +5 -0
- package/esm2020/lib/calendar.conf.mjs +27 -0
- package/esm2020/lib/calendar.module.mjs +66 -0
- package/esm2020/lib/components/calendar/calendar.component.mjs +214 -0
- package/esm2020/lib/components/decennia/decennia.component.mjs +85 -0
- package/esm2020/lib/components/month/month.component.mjs +158 -0
- package/esm2020/lib/components/year/year.component.mjs +84 -0
- package/esm2020/lib/services/calendar.service.mjs +56 -0
- package/esm2020/lib/types/calendar.types.mjs +4 -0
- package/esm2020/public-api.mjs +9 -0
- package/fesm2015/acpaas-ui-ngx-calendar.mjs +728 -0
- package/fesm2015/acpaas-ui-ngx-calendar.mjs.map +1 -0
- package/fesm2020/acpaas-ui-ngx-calendar.mjs +667 -0
- package/fesm2020/acpaas-ui-ngx-calendar.mjs.map +1 -0
- package/{acpaas-ui-ngx-calendar.d.ts → index.d.ts} +1 -0
- package/lib/calendar.conf.d.ts +3 -2
- package/lib/calendar.module.d.ts +11 -1
- package/lib/components/calendar/calendar.component.d.ts +4 -1
- package/lib/components/decennia/decennia.component.d.ts +3 -0
- package/lib/components/month/month.component.d.ts +4 -1
- package/lib/components/year/year.component.d.ts +3 -0
- package/lib/services/calendar.service.d.ts +4 -1
- package/lib/types/calendar.types.d.ts +2 -2
- package/package.json +32 -19
- package/CHANGELOG.md +0 -291
- package/acpaas-ui-ngx-calendar.metadata.json +0 -1
- package/bundles/acpaas-ui-ngx-calendar.umd.js +0 -1181
- package/bundles/acpaas-ui-ngx-calendar.umd.js.map +0 -1
- package/bundles/acpaas-ui-ngx-calendar.umd.min.js +0 -16
- package/bundles/acpaas-ui-ngx-calendar.umd.min.js.map +0 -1
- package/esm2015/acpaas-ui-ngx-calendar.js +0 -10
- package/esm2015/lib/calendar.conf.js +0 -36
- package/esm2015/lib/calendar.module.js +0 -59
- package/esm2015/lib/components/calendar/calendar.component.js +0 -238
- package/esm2015/lib/components/decennia/decennia.component.js +0 -96
- package/esm2015/lib/components/month/month.component.js +0 -201
- package/esm2015/lib/components/year/year.component.js +0 -90
- package/esm2015/lib/services/calendar.service.js +0 -101
- package/esm2015/lib/types/calendar.types.js +0 -34
- package/esm2015/public-api.js +0 -14
- package/esm5/acpaas-ui-ngx-calendar.js +0 -10
- package/esm5/lib/calendar.conf.js +0 -36
- package/esm5/lib/calendar.module.js +0 -68
- package/esm5/lib/components/calendar/calendar.component.js +0 -265
- package/esm5/lib/components/decennia/decennia.component.js +0 -114
- package/esm5/lib/components/month/month.component.js +0 -230
- package/esm5/lib/components/year/year.component.js +0 -99
- package/esm5/lib/services/calendar.service.js +0 -129
- package/esm5/lib/types/calendar.types.js +0 -34
- package/esm5/public-api.js +0 -14
- package/fesm2015/acpaas-ui-ngx-calendar.js +0 -846
- package/fesm2015/acpaas-ui-ngx-calendar.js.map +0 -1
- package/fesm5/acpaas-ui-ngx-calendar.js +0 -959
- package/fesm5/acpaas-ui-ngx-calendar.js.map +0 -1
package/README.md
CHANGED
|
@@ -14,13 +14,13 @@ Visit our [documentation site](https://antwerp-ui.digipolis.be/) for full how-to
|
|
|
14
14
|
|
|
15
15
|
### API
|
|
16
16
|
|
|
17
|
-
| Name
|
|
18
|
-
|
|
|
19
|
-
| `@Input() selectedDate: Date;`
|
|
20
|
-
| `@Input() range: DateRange;`
|
|
21
|
-
| `@Input() weekdayLabels: WeekdayLabelsConfig;` | -
|
|
22
|
-
| `@Input() monthLabels: MonthLabelsConfig;`
|
|
23
|
-
| `@Output() selectDate: EventEmitter<any>`
|
|
17
|
+
| Name | Default value | Description |
|
|
18
|
+
| ---------------------------------------------- | ------------- | --------------------------------------------------------------------------------------------- |
|
|
19
|
+
| `@Input() selectedDate: Date;` | - | The date the user selected. Will be used as a base for the different calendar views. |
|
|
20
|
+
| `@Input() range: DateRange;` | - | A date range to decide which dates are available for selection. |
|
|
21
|
+
| `@Input() weekdayLabels: WeekdayLabelsConfig;` | - | Override the default weekday labels. Can also be done in the `forChild` method. |
|
|
22
|
+
| `@Input() monthLabels: MonthLabelsConfig;` | - | Override the default month labels. Can also be done in the `forChild` method. |
|
|
23
|
+
| `@Output() selectDate: EventEmitter<any>` | - | Will emit the selected date and completion state (the date is complete when a day is picked). |
|
|
24
24
|
|
|
25
25
|
### Example
|
|
26
26
|
|
|
@@ -41,7 +41,7 @@ export class AppModule {};
|
|
|
41
41
|
```
|
|
42
42
|
|
|
43
43
|
```
|
|
44
|
-
import { DateRange } from '@acpaas-ui/
|
|
44
|
+
import { DateRange } from '@acpaas-ui/ngx-utils';
|
|
45
45
|
|
|
46
46
|
public clickedDate: Date = new Date();
|
|
47
47
|
public range: DateRange = [1, 6];
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNwYWFzLXVpLW5neC1jYWxlbmRhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hY3BhYXMtdWktbmd4LWNhbGVuZGFyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
export const CALENDAR_DEFAULT_WEEKDAY_LABELS = [
|
|
3
|
+
'Maandag',
|
|
4
|
+
'Dinsdag',
|
|
5
|
+
'Woensdag',
|
|
6
|
+
'Donderdag',
|
|
7
|
+
'Vrijdag',
|
|
8
|
+
'Zaterdag',
|
|
9
|
+
'Zondag',
|
|
10
|
+
];
|
|
11
|
+
export const CALENDAR_DEFAULT_MONTH_LABELS = [
|
|
12
|
+
'Januari',
|
|
13
|
+
'Februari',
|
|
14
|
+
'Maart',
|
|
15
|
+
'April',
|
|
16
|
+
'Mei',
|
|
17
|
+
'Juni',
|
|
18
|
+
'Juli',
|
|
19
|
+
'Augustus',
|
|
20
|
+
'September',
|
|
21
|
+
'Oktober',
|
|
22
|
+
'November',
|
|
23
|
+
'December',
|
|
24
|
+
];
|
|
25
|
+
export const CALENDAR_WEEKDAY_LABELS = new InjectionToken('weekdayLabels');
|
|
26
|
+
export const CALENDAR_MONTH_LABELS = new InjectionToken('monthLabels');
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29uZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvY2FsZW5kYXIuY29uZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRy9DLE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHO0lBQzdDLFNBQVM7SUFDVCxTQUFTO0lBQ1QsVUFBVTtJQUNWLFdBQVc7SUFDWCxTQUFTO0lBQ1QsVUFBVTtJQUNWLFFBQVE7Q0FDVCxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUc7SUFDM0MsU0FBUztJQUNULFVBQVU7SUFDVixPQUFPO0lBQ1AsT0FBTztJQUNQLEtBQUs7SUFDTCxNQUFNO0lBQ04sTUFBTTtJQUNOLFVBQVU7SUFDVixXQUFXO0lBQ1gsU0FBUztJQUNULFVBQVU7SUFDVixVQUFVO0NBQ1gsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLElBQUksY0FBYyxDQUFzQixlQUFlLENBQUMsQ0FBQztBQUNoRyxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLGNBQWMsQ0FBb0IsYUFBYSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTW9udGhMYWJlbHNDb25maWcsIFdlZWtkYXlMYWJlbHNDb25maWcgfSBmcm9tICcuL3R5cGVzL2NhbGVuZGFyLnR5cGVzJztcblxuZXhwb3J0IGNvbnN0IENBTEVOREFSX0RFRkFVTFRfV0VFS0RBWV9MQUJFTFMgPSBbXG4gICdNYWFuZGFnJyxcbiAgJ0RpbnNkYWcnLFxuICAnV29lbnNkYWcnLFxuICAnRG9uZGVyZGFnJyxcbiAgJ1ZyaWpkYWcnLFxuICAnWmF0ZXJkYWcnLFxuICAnWm9uZGFnJyxcbl07XG5cbmV4cG9ydCBjb25zdCBDQUxFTkRBUl9ERUZBVUxUX01PTlRIX0xBQkVMUyA9IFtcbiAgJ0phbnVhcmknLFxuICAnRmVicnVhcmknLFxuICAnTWFhcnQnLFxuICAnQXByaWwnLFxuICAnTWVpJyxcbiAgJ0p1bmknLFxuICAnSnVsaScsXG4gICdBdWd1c3R1cycsXG4gICdTZXB0ZW1iZXInLFxuICAnT2t0b2JlcicsXG4gICdOb3ZlbWJlcicsXG4gICdEZWNlbWJlcicsXG5dO1xuXG5leHBvcnQgY29uc3QgQ0FMRU5EQVJfV0VFS0RBWV9MQUJFTFMgPSBuZXcgSW5qZWN0aW9uVG9rZW48V2Vla2RheUxhYmVsc0NvbmZpZz4oJ3dlZWtkYXlMYWJlbHMnKTtcbmV4cG9ydCBjb25zdCBDQUxFTkRBUl9NT05USF9MQUJFTFMgPSBuZXcgSW5qZWN0aW9uVG9rZW48TW9udGhMYWJlbHNDb25maWc+KCdtb250aExhYmVscycpO1xuIl19
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { IconModule } from '@acpaas-ui/ngx-icon';
|
|
4
|
+
import { CALENDAR_DEFAULT_MONTH_LABELS, CALENDAR_DEFAULT_WEEKDAY_LABELS, CALENDAR_MONTH_LABELS, CALENDAR_WEEKDAY_LABELS, } from './calendar.conf';
|
|
5
|
+
import { CalendarService } from './services/calendar.service';
|
|
6
|
+
import { CalendarComponent } from './components/calendar/calendar.component';
|
|
7
|
+
import { CalendarDecenniaComponent } from './components/decennia/decennia.component';
|
|
8
|
+
import { CalendarMonthComponent } from './components/month/month.component';
|
|
9
|
+
import { CalendarYearComponent } from './components/year/year.component';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
export class CalendarModule {
|
|
12
|
+
static forChild(weekdayLabels, monthLabels) {
|
|
13
|
+
return {
|
|
14
|
+
ngModule: CalendarModule,
|
|
15
|
+
providers: [
|
|
16
|
+
CalendarService,
|
|
17
|
+
{ provide: CALENDAR_WEEKDAY_LABELS, useValue: weekdayLabels },
|
|
18
|
+
{ provide: CALENDAR_MONTH_LABELS, useValue: monthLabels },
|
|
19
|
+
],
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/** @nocollapse */ CalendarModule.ɵfac = function CalendarModule_Factory(t) { return new (t || CalendarModule)(); };
|
|
24
|
+
/** @nocollapse */ CalendarModule.ɵmod = /** @pureOrBreakMyCode */ i0.ɵɵdefineNgModule({ type: CalendarModule });
|
|
25
|
+
/** @nocollapse */ CalendarModule.ɵinj = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjector({ providers: [
|
|
26
|
+
CalendarService,
|
|
27
|
+
{
|
|
28
|
+
provide: CALENDAR_WEEKDAY_LABELS,
|
|
29
|
+
useValue: CALENDAR_DEFAULT_WEEKDAY_LABELS,
|
|
30
|
+
},
|
|
31
|
+
{ provide: CALENDAR_MONTH_LABELS, useValue: CALENDAR_DEFAULT_MONTH_LABELS },
|
|
32
|
+
], imports: [CommonModule, IconModule] });
|
|
33
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CalendarModule, [{
|
|
34
|
+
type: NgModule,
|
|
35
|
+
args: [{
|
|
36
|
+
imports: [CommonModule, IconModule],
|
|
37
|
+
declarations: [
|
|
38
|
+
CalendarComponent,
|
|
39
|
+
CalendarDecenniaComponent,
|
|
40
|
+
CalendarMonthComponent,
|
|
41
|
+
CalendarYearComponent,
|
|
42
|
+
],
|
|
43
|
+
exports: [
|
|
44
|
+
CalendarComponent,
|
|
45
|
+
CalendarDecenniaComponent,
|
|
46
|
+
CalendarMonthComponent,
|
|
47
|
+
CalendarYearComponent,
|
|
48
|
+
],
|
|
49
|
+
providers: [
|
|
50
|
+
CalendarService,
|
|
51
|
+
{
|
|
52
|
+
provide: CALENDAR_WEEKDAY_LABELS,
|
|
53
|
+
useValue: CALENDAR_DEFAULT_WEEKDAY_LABELS,
|
|
54
|
+
},
|
|
55
|
+
{ provide: CALENDAR_MONTH_LABELS, useValue: CALENDAR_DEFAULT_MONTH_LABELS },
|
|
56
|
+
],
|
|
57
|
+
}]
|
|
58
|
+
}], null, null); })();
|
|
59
|
+
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(CalendarModule, { declarations: [CalendarComponent,
|
|
60
|
+
CalendarDecenniaComponent,
|
|
61
|
+
CalendarMonthComponent,
|
|
62
|
+
CalendarYearComponent], imports: [CommonModule, IconModule], exports: [CalendarComponent,
|
|
63
|
+
CalendarDecenniaComponent,
|
|
64
|
+
CalendarMonthComponent,
|
|
65
|
+
CalendarYearComponent] }); })();
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jYWxlbmRhci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLEVBQ0wsNkJBQTZCLEVBQzdCLCtCQUErQixFQUMvQixxQkFBcUIsRUFDckIsdUJBQXVCLEdBQ3hCLE1BQU0saUJBQWlCLENBQUM7QUFFekIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzlELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOztBQXlCekUsTUFBTSxPQUFPLGNBQWM7SUFDekIsTUFBTSxDQUFDLFFBQVEsQ0FDYixhQUFrQyxFQUNsQyxXQUE4QjtRQUU5QixPQUFPO1lBQ0wsUUFBUSxFQUFFLGNBQWM7WUFDeEIsU0FBUyxFQUFFO2dCQUNULGVBQWU7Z0JBQ2YsRUFBRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRTtnQkFDN0QsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRTthQUMxRDtTQUNGLENBQUM7SUFDSixDQUFDOzsrRkFiVSxjQUFjOytGQUFkLGNBQWM7b0dBVGQ7UUFDVCxlQUFlO1FBQ2Y7WUFDRSxPQUFPLEVBQUUsdUJBQXVCO1lBQ2hDLFFBQVEsRUFBRSwrQkFBK0I7U0FDMUM7UUFDRCxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxRQUFRLEVBQUUsNkJBQTZCLEVBQUU7S0FDNUUsWUFwQlMsWUFBWSxFQUFFLFVBQVU7dUZBc0J2QixjQUFjO2NBdkIxQixRQUFRO2VBQUM7Z0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQztnQkFDbkMsWUFBWSxFQUFFO29CQUNaLGlCQUFpQjtvQkFDakIseUJBQXlCO29CQUN6QixzQkFBc0I7b0JBQ3RCLHFCQUFxQjtpQkFDdEI7Z0JBQ0QsT0FBTyxFQUFFO29CQUNQLGlCQUFpQjtvQkFDakIseUJBQXlCO29CQUN6QixzQkFBc0I7b0JBQ3RCLHFCQUFxQjtpQkFDdEI7Z0JBQ0QsU0FBUyxFQUFFO29CQUNULGVBQWU7b0JBQ2Y7d0JBQ0UsT0FBTyxFQUFFLHVCQUF1Qjt3QkFDaEMsUUFBUSxFQUFFLCtCQUErQjtxQkFDMUM7b0JBQ0QsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsUUFBUSxFQUFFLDZCQUE2QixFQUFFO2lCQUM1RTthQUNGOzt3RkFDWSxjQUFjLG1CQXBCdkIsaUJBQWlCO1FBQ2pCLHlCQUF5QjtRQUN6QixzQkFBc0I7UUFDdEIscUJBQXFCLGFBTGIsWUFBWSxFQUFFLFVBQVUsYUFRaEMsaUJBQWlCO1FBQ2pCLHlCQUF5QjtRQUN6QixzQkFBc0I7UUFDdEIscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJY29uTW9kdWxlIH0gZnJvbSAnQGFjcGFhcy11aS9uZ3gtaWNvbic7XG5pbXBvcnQge1xuICBDQUxFTkRBUl9ERUZBVUxUX01PTlRIX0xBQkVMUyxcbiAgQ0FMRU5EQVJfREVGQVVMVF9XRUVLREFZX0xBQkVMUyxcbiAgQ0FMRU5EQVJfTU9OVEhfTEFCRUxTLFxuICBDQUxFTkRBUl9XRUVLREFZX0xBQkVMUyxcbn0gZnJvbSAnLi9jYWxlbmRhci5jb25mJztcbmltcG9ydCB7IE1vbnRoTGFiZWxzQ29uZmlnLCBXZWVrZGF5TGFiZWxzQ29uZmlnIH0gZnJvbSAnLi90eXBlcy9jYWxlbmRhci50eXBlcyc7XG5pbXBvcnQgeyBDYWxlbmRhclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2NhbGVuZGFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FsZW5kYXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2FsZW5kYXIvY2FsZW5kYXIuY29tcG9uZW50JztcbmltcG9ydCB7IENhbGVuZGFyRGVjZW5uaWFDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZGVjZW5uaWEvZGVjZW5uaWEuY29tcG9uZW50JztcbmltcG9ydCB7IENhbGVuZGFyTW9udGhDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbW9udGgvbW9udGguY29tcG9uZW50JztcbmltcG9ydCB7IENhbGVuZGFyWWVhckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy95ZWFyL3llYXIuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSWNvbk1vZHVsZV0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIENhbGVuZGFyQ29tcG9uZW50LFxuICAgIENhbGVuZGFyRGVjZW5uaWFDb21wb25lbnQsXG4gICAgQ2FsZW5kYXJNb250aENvbXBvbmVudCxcbiAgICBDYWxlbmRhclllYXJDb21wb25lbnQsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBDYWxlbmRhckNvbXBvbmVudCxcbiAgICBDYWxlbmRhckRlY2VubmlhQ29tcG9uZW50LFxuICAgIENhbGVuZGFyTW9udGhDb21wb25lbnQsXG4gICAgQ2FsZW5kYXJZZWFyQ29tcG9uZW50LFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICBDYWxlbmRhclNlcnZpY2UsXG4gICAge1xuICAgICAgcHJvdmlkZTogQ0FMRU5EQVJfV0VFS0RBWV9MQUJFTFMsXG4gICAgICB1c2VWYWx1ZTogQ0FMRU5EQVJfREVGQVVMVF9XRUVLREFZX0xBQkVMUyxcbiAgICB9LFxuICAgIHsgcHJvdmlkZTogQ0FMRU5EQVJfTU9OVEhfTEFCRUxTLCB1c2VWYWx1ZTogQ0FMRU5EQVJfREVGQVVMVF9NT05USF9MQUJFTFMgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2FsZW5kYXJNb2R1bGUge1xuICBzdGF0aWMgZm9yQ2hpbGQoXG4gICAgd2Vla2RheUxhYmVsczogV2Vla2RheUxhYmVsc0NvbmZpZyxcbiAgICBtb250aExhYmVsczogTW9udGhMYWJlbHNDb25maWdcbiAgKTogTW9kdWxlV2l0aFByb3ZpZGVyczxhbnk+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IENhbGVuZGFyTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIENhbGVuZGFyU2VydmljZSxcbiAgICAgICAgeyBwcm92aWRlOiBDQUxFTkRBUl9XRUVLREFZX0xBQkVMUywgdXNlVmFsdWU6IHdlZWtkYXlMYWJlbHMgfSxcbiAgICAgICAgeyBwcm92aWRlOiBDQUxFTkRBUl9NT05USF9MQUJFTFMsIHVzZVZhbHVlOiBtb250aExhYmVscyB9LFxuICAgICAgXSxcbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Inject, Input, Output, } from '@angular/core';
|
|
2
|
+
import { DateHelper } from '@acpaas-ui/ngx-utils';
|
|
3
|
+
import { CALENDAR_DEFAULT_MONTH_LABELS, CALENDAR_DEFAULT_WEEKDAY_LABELS, CALENDAR_MONTH_LABELS, CALENDAR_WEEKDAY_LABELS, } from '../../calendar.conf';
|
|
4
|
+
import { CALENDAR_VIEW_DECENNIA, CALENDAR_VIEW_MONTH, CALENDAR_VIEW_YEAR, } from '../../types/calendar.types';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "../../services/calendar.service";
|
|
7
|
+
import * as i2 from "@angular/common";
|
|
8
|
+
import * as i3 from "@acpaas-ui/ngx-icon";
|
|
9
|
+
import * as i4 from "../decennia/decennia.component";
|
|
10
|
+
import * as i5 from "../month/month.component";
|
|
11
|
+
import * as i6 from "../year/year.component";
|
|
12
|
+
function CalendarComponent_aui_calendar_month_10_Template(rf, ctx) { if (rf & 1) {
|
|
13
|
+
const _r4 = i0.ɵɵgetCurrentView();
|
|
14
|
+
i0.ɵɵelementStart(0, "aui-calendar-month", 10);
|
|
15
|
+
i0.ɵɵlistener("selectDate", function CalendarComponent_aui_calendar_month_10_Template_aui_calendar_month_selectDate_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.pickDate($event)); });
|
|
16
|
+
i0.ɵɵelementEnd();
|
|
17
|
+
} if (rf & 2) {
|
|
18
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
19
|
+
i0.ɵɵproperty("activeDate", ctx_r0.activeDate)("range", ctx_r0.range)("interval", ctx_r0.interval)("selectedDate", ctx_r0.selectedDate)("weekdayLabels", ctx_r0.weekdayLabels);
|
|
20
|
+
} }
|
|
21
|
+
function CalendarComponent_aui_calendar_year_11_Template(rf, ctx) { if (rf & 1) {
|
|
22
|
+
const _r6 = i0.ɵɵgetCurrentView();
|
|
23
|
+
i0.ɵɵelementStart(0, "aui-calendar-year", 11);
|
|
24
|
+
i0.ɵɵlistener("selectDate", function CalendarComponent_aui_calendar_year_11_Template_aui_calendar_year_selectDate_0_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r5 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r5.pickDate($event)); });
|
|
25
|
+
i0.ɵɵelementEnd();
|
|
26
|
+
} if (rf & 2) {
|
|
27
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
28
|
+
i0.ɵɵproperty("activeDate", ctx_r1.activeDate)("monthLabels", ctx_r1.monthLabels)("selectedDate", ctx_r1.selectedDate);
|
|
29
|
+
} }
|
|
30
|
+
function CalendarComponent_aui_calendar_decennia_12_Template(rf, ctx) { if (rf & 1) {
|
|
31
|
+
const _r8 = i0.ɵɵgetCurrentView();
|
|
32
|
+
i0.ɵɵelementStart(0, "aui-calendar-decennia", 12);
|
|
33
|
+
i0.ɵɵlistener("selectDate", function CalendarComponent_aui_calendar_decennia_12_Template_aui_calendar_decennia_selectDate_0_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r7 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r7.pickDate($event)); });
|
|
34
|
+
i0.ɵɵelementEnd();
|
|
35
|
+
} if (rf & 2) {
|
|
36
|
+
const ctx_r2 = i0.ɵɵnextContext();
|
|
37
|
+
i0.ɵɵproperty("activeDate", ctx_r2.activeDate)("selectedDate", ctx_r2.selectedDate);
|
|
38
|
+
} }
|
|
39
|
+
export class CalendarComponent {
|
|
40
|
+
constructor(moduleMonthLabels = CALENDAR_DEFAULT_MONTH_LABELS, moduleWeekdayLabels = CALENDAR_DEFAULT_WEEKDAY_LABELS, calendarService) {
|
|
41
|
+
this.moduleMonthLabels = moduleMonthLabels;
|
|
42
|
+
this.moduleWeekdayLabels = moduleWeekdayLabels;
|
|
43
|
+
this.calendarService = calendarService;
|
|
44
|
+
this.role = 'application';
|
|
45
|
+
this.ariahidden = 'false';
|
|
46
|
+
this.ariaPreviousLabels = ['Ga naar vorige maand', 'Ga naar vorig jaar', 'Ga naar vorige 18 jaren'];
|
|
47
|
+
this.ariaNextLabels = ['Ga naar volgende maand', 'Ga naar volgend jaar', 'Ga naar volgende 18 jaren'];
|
|
48
|
+
this.selectDate = new EventEmitter();
|
|
49
|
+
this.CALENDAR_VIEW_MONTH = CALENDAR_VIEW_MONTH;
|
|
50
|
+
this.CALENDAR_VIEW_YEAR = CALENDAR_VIEW_YEAR;
|
|
51
|
+
this.CALENDAR_VIEW_DECENNIA = CALENDAR_VIEW_DECENNIA;
|
|
52
|
+
this.activeView = CALENDAR_VIEW_MONTH;
|
|
53
|
+
this.headerLabel = '';
|
|
54
|
+
this.ariaPreviousLabel = this.ariaPreviousLabels[0];
|
|
55
|
+
this.ariaNextLabel = this.ariaNextLabels[0];
|
|
56
|
+
}
|
|
57
|
+
ngOnInit() {
|
|
58
|
+
this.initControl();
|
|
59
|
+
}
|
|
60
|
+
ngOnChanges(changes) {
|
|
61
|
+
const selectedDate = changes.selectedDate && changes.selectedDate.currentValue ? changes.selectedDate : null;
|
|
62
|
+
if (typeof this.monthLabels !== 'undefined' &&
|
|
63
|
+
selectedDate &&
|
|
64
|
+
!DateHelper.datesAreEqual(selectedDate.currentValue, selectedDate.previousValue)) {
|
|
65
|
+
this.activeDate = this.selectedDate;
|
|
66
|
+
this.updateHeaderLabel();
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
let activeDateToSet = new Date();
|
|
70
|
+
if (this.interval && this.interval.isInRange(activeDateToSet)) {
|
|
71
|
+
activeDateToSet = this.interval.min;
|
|
72
|
+
}
|
|
73
|
+
this.activeDate = DateHelper.parseDate(activeDateToSet);
|
|
74
|
+
this.initControl();
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
updateActiveDate(factor = 0) {
|
|
78
|
+
const activeDate = this.activeDate ? new Date(this.activeDate) : new Date();
|
|
79
|
+
switch (this.activeView) {
|
|
80
|
+
case CALENDAR_VIEW_MONTH:
|
|
81
|
+
activeDate.setMonth(activeDate.getMonth() + factor);
|
|
82
|
+
break;
|
|
83
|
+
case CALENDAR_VIEW_YEAR:
|
|
84
|
+
activeDate.setFullYear(activeDate.getFullYear() + factor);
|
|
85
|
+
break;
|
|
86
|
+
case CALENDAR_VIEW_DECENNIA:
|
|
87
|
+
activeDate.setFullYear(activeDate.getFullYear() + 18 * factor);
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
90
|
+
this.activeDate = activeDate;
|
|
91
|
+
this.updateHeaderLabel();
|
|
92
|
+
}
|
|
93
|
+
switchView(factor = 1) {
|
|
94
|
+
const views = [CALENDAR_VIEW_MONTH, CALENDAR_VIEW_YEAR, CALENDAR_VIEW_DECENNIA];
|
|
95
|
+
const currView = views.indexOf(this.activeView);
|
|
96
|
+
let nextView = currView + factor >= views.length ? 0 : currView + factor;
|
|
97
|
+
nextView = nextView < 0 ? views.length - 1 : nextView;
|
|
98
|
+
this.activeView = views[nextView];
|
|
99
|
+
// reset activeDate when returning to month view without model update
|
|
100
|
+
if (this.selectedDate && nextView === 0 && factor === 1) {
|
|
101
|
+
this.activeDate = this.selectedDate;
|
|
102
|
+
}
|
|
103
|
+
this.updateHeaderLabel();
|
|
104
|
+
}
|
|
105
|
+
updateHeaderLabel() {
|
|
106
|
+
switch (this.activeView) {
|
|
107
|
+
case CALENDAR_VIEW_MONTH:
|
|
108
|
+
this.headerLabel = this.monthLabels[this.activeDate.getMonth()] + ' ' + this.activeDate.getFullYear();
|
|
109
|
+
this.ariaPreviousLabel = this.ariaPreviousLabels[0];
|
|
110
|
+
this.ariaNextLabel = this.ariaNextLabels[0];
|
|
111
|
+
break;
|
|
112
|
+
case CALENDAR_VIEW_YEAR:
|
|
113
|
+
this.headerLabel = String(this.activeDate.getFullYear());
|
|
114
|
+
this.ariaPreviousLabel = this.ariaPreviousLabels[1];
|
|
115
|
+
this.ariaNextLabel = this.ariaNextLabels[1];
|
|
116
|
+
break;
|
|
117
|
+
case CALENDAR_VIEW_DECENNIA:
|
|
118
|
+
const startYear = this.activeDate.getFullYear();
|
|
119
|
+
this.headerLabel = `${startYear} - ${startYear + 17}`;
|
|
120
|
+
this.ariaPreviousLabel = this.ariaPreviousLabels[2];
|
|
121
|
+
this.ariaNextLabel = this.ariaNextLabels[2];
|
|
122
|
+
break;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
pickDate(date) {
|
|
126
|
+
const complete = this.activeView === CALENDAR_VIEW_MONTH;
|
|
127
|
+
this.selectDate.emit({
|
|
128
|
+
date,
|
|
129
|
+
complete,
|
|
130
|
+
});
|
|
131
|
+
if (!complete) {
|
|
132
|
+
this.activeDate = date;
|
|
133
|
+
this.switchView(-1);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
initControl() {
|
|
137
|
+
this.weekdayLabels = this.weekdayLabels || this.moduleWeekdayLabels;
|
|
138
|
+
this.monthLabels = this.monthLabels || this.moduleMonthLabels;
|
|
139
|
+
this.activeDate = this.calendarService.getClosestDateForRange(this.activeDate, this.range);
|
|
140
|
+
if (this.selectedDate) {
|
|
141
|
+
this.activeDate = this.selectedDate;
|
|
142
|
+
this.updateActiveDate();
|
|
143
|
+
}
|
|
144
|
+
this.updateHeaderLabel();
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
/** @nocollapse */ CalendarComponent.ɵfac = function CalendarComponent_Factory(t) { return new (t || CalendarComponent)(i0.ɵɵdirectiveInject(CALENDAR_MONTH_LABELS), i0.ɵɵdirectiveInject(CALENDAR_WEEKDAY_LABELS), i0.ɵɵdirectiveInject(i1.CalendarService)); };
|
|
148
|
+
/** @nocollapse */ CalendarComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: CalendarComponent, selectors: [["aui-calendar"]], hostVars: 2, hostBindings: function CalendarComponent_HostBindings(rf, ctx) { if (rf & 2) {
|
|
149
|
+
i0.ɵɵattribute("role", ctx.role)("aria-hidden", ctx.ariahidden);
|
|
150
|
+
} }, inputs: { ariaPreviousLabels: "ariaPreviousLabels", ariaNextLabels: "ariaNextLabels", selectedDate: "selectedDate", range: "range", interval: "interval", weekdayLabels: "weekdayLabels", monthLabels: "monthLabels" }, outputs: { selectDate: "selectDate" }, features: [i0.ɵɵNgOnChangesFeature], decls: 13, vars: 8, consts: [[1, "m-datepicker__nav"], ["type", "button", 1, "m-datepicker__nav-title", 3, "click"], ["name", "ai-arrow-down-1", "role", "button", "tabindex", "0"], [1, "m-datepicker__nav-pagination"], ["type", "button", 1, "a-button", "a-button--text", "a-button--primary", "has-icon", 3, "click"], ["name", "ai-arrow-left-1"], ["name", "ai-arrow-right-1"], [3, "activeDate", "range", "interval", "selectedDate", "weekdayLabels", "selectDate", 4, "ngIf"], [3, "activeDate", "monthLabels", "selectedDate", "selectDate", 4, "ngIf"], [3, "activeDate", "selectedDate", "selectDate", 4, "ngIf"], [3, "activeDate", "range", "interval", "selectedDate", "weekdayLabels", "selectDate"], [3, "activeDate", "monthLabels", "selectedDate", "selectDate"], [3, "activeDate", "selectedDate", "selectDate"]], template: function CalendarComponent_Template(rf, ctx) { if (rf & 1) {
|
|
151
|
+
i0.ɵɵelementStart(0, "div", 0)(1, "button", 1);
|
|
152
|
+
i0.ɵɵlistener("click", function CalendarComponent_Template_button_click_1_listener() { return ctx.switchView(); });
|
|
153
|
+
i0.ɵɵtext(2);
|
|
154
|
+
i0.ɵɵpipe(3, "titlecase");
|
|
155
|
+
i0.ɵɵelement(4, "aui-icon", 2);
|
|
156
|
+
i0.ɵɵelementEnd();
|
|
157
|
+
i0.ɵɵelementStart(5, "div", 3)(6, "button", 4);
|
|
158
|
+
i0.ɵɵlistener("click", function CalendarComponent_Template_button_click_6_listener() { return ctx.updateActiveDate(-1); });
|
|
159
|
+
i0.ɵɵelement(7, "aui-icon", 5);
|
|
160
|
+
i0.ɵɵelementEnd();
|
|
161
|
+
i0.ɵɵelementStart(8, "button", 4);
|
|
162
|
+
i0.ɵɵlistener("click", function CalendarComponent_Template_button_click_8_listener() { return ctx.updateActiveDate(1); });
|
|
163
|
+
i0.ɵɵelement(9, "aui-icon", 6);
|
|
164
|
+
i0.ɵɵelementEnd()()();
|
|
165
|
+
i0.ɵɵtemplate(10, CalendarComponent_aui_calendar_month_10_Template, 1, 5, "aui-calendar-month", 7);
|
|
166
|
+
i0.ɵɵtemplate(11, CalendarComponent_aui_calendar_year_11_Template, 1, 3, "aui-calendar-year", 8);
|
|
167
|
+
i0.ɵɵtemplate(12, CalendarComponent_aui_calendar_decennia_12_Template, 1, 2, "aui-calendar-decennia", 9);
|
|
168
|
+
} if (rf & 2) {
|
|
169
|
+
i0.ɵɵadvance(2);
|
|
170
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 6, ctx.headerLabel), " ");
|
|
171
|
+
i0.ɵɵadvance(4);
|
|
172
|
+
i0.ɵɵattribute("aria-label", ctx.ariaPreviousLabel);
|
|
173
|
+
i0.ɵɵadvance(2);
|
|
174
|
+
i0.ɵɵattribute("aria-label", ctx.ariaNextLabel);
|
|
175
|
+
i0.ɵɵadvance(2);
|
|
176
|
+
i0.ɵɵproperty("ngIf", ctx.activeView === ctx.CALENDAR_VIEW_MONTH);
|
|
177
|
+
i0.ɵɵadvance(1);
|
|
178
|
+
i0.ɵɵproperty("ngIf", ctx.activeView === ctx.CALENDAR_VIEW_YEAR);
|
|
179
|
+
i0.ɵɵadvance(1);
|
|
180
|
+
i0.ɵɵproperty("ngIf", ctx.activeView === ctx.CALENDAR_VIEW_DECENNIA);
|
|
181
|
+
} }, dependencies: [i2.NgIf, i3.IconComponent, i4.CalendarDecenniaComponent, i5.CalendarMonthComponent, i6.CalendarYearComponent, i2.TitleCasePipe], encapsulation: 2, changeDetection: 0 });
|
|
182
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CalendarComponent, [{
|
|
183
|
+
type: Component,
|
|
184
|
+
args: [{ selector: 'aui-calendar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"m-datepicker__nav\">\n <button (click)=\"switchView()\" class=\"m-datepicker__nav-title\" type=\"button\">\n {{ headerLabel | titlecase }}\n <aui-icon name=\"ai-arrow-down-1\" role=\"button\" tabindex=\"0\" />\n </button>\n\n <div class=\"m-datepicker__nav-pagination\">\n <button\n (click)=\"updateActiveDate(-1)\"\n [attr.aria-label]=\"ariaPreviousLabel\"\n class=\"a-button a-button--text a-button--primary has-icon\"\n type=\"button\"\n >\n <aui-icon name=\"ai-arrow-left-1\"></aui-icon>\n </button>\n <button\n (click)=\"updateActiveDate(1)\"\n [attr.aria-label]=\"ariaNextLabel\"\n class=\"a-button a-button--text a-button--primary has-icon\"\n type=\"button\"\n >\n <aui-icon name=\"ai-arrow-right-1\"></aui-icon>\n </button>\n </div>\n</div>\n<aui-calendar-month\n (selectDate)=\"pickDate($event)\"\n *ngIf=\"activeView === CALENDAR_VIEW_MONTH\"\n [activeDate]=\"activeDate\"\n [range]=\"range\"\n [interval]=\"interval\"\n [selectedDate]=\"selectedDate\"\n [weekdayLabels]=\"weekdayLabels\"\n></aui-calendar-month>\n<aui-calendar-year\n (selectDate)=\"pickDate($event)\"\n *ngIf=\"activeView === CALENDAR_VIEW_YEAR\"\n [activeDate]=\"activeDate\"\n [monthLabels]=\"monthLabels\"\n [selectedDate]=\"selectedDate\"\n></aui-calendar-year>\n<aui-calendar-decennia\n (selectDate)=\"pickDate($event)\"\n *ngIf=\"activeView === CALENDAR_VIEW_DECENNIA\"\n [activeDate]=\"activeDate\"\n [selectedDate]=\"selectedDate\"\n></aui-calendar-decennia>" }]
|
|
185
|
+
}], function () { return [{ type: undefined, decorators: [{
|
|
186
|
+
type: Inject,
|
|
187
|
+
args: [CALENDAR_MONTH_LABELS]
|
|
188
|
+
}] }, { type: undefined, decorators: [{
|
|
189
|
+
type: Inject,
|
|
190
|
+
args: [CALENDAR_WEEKDAY_LABELS]
|
|
191
|
+
}] }, { type: i1.CalendarService }]; }, { role: [{
|
|
192
|
+
type: HostBinding,
|
|
193
|
+
args: ['attr.role']
|
|
194
|
+
}], ariahidden: [{
|
|
195
|
+
type: HostBinding,
|
|
196
|
+
args: ['attr.aria-hidden']
|
|
197
|
+
}], ariaPreviousLabels: [{
|
|
198
|
+
type: Input
|
|
199
|
+
}], ariaNextLabels: [{
|
|
200
|
+
type: Input
|
|
201
|
+
}], selectedDate: [{
|
|
202
|
+
type: Input
|
|
203
|
+
}], range: [{
|
|
204
|
+
type: Input
|
|
205
|
+
}], interval: [{
|
|
206
|
+
type: Input
|
|
207
|
+
}], weekdayLabels: [{
|
|
208
|
+
type: Input
|
|
209
|
+
}], monthLabels: [{
|
|
210
|
+
type: Input
|
|
211
|
+
}], selectDate: [{
|
|
212
|
+
type: Output
|
|
213
|
+
}] }); })();
|
|
214
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2NhbGVuZGFyL2NhbGVuZGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9jYWxlbmRhci9jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBR0wsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxzQkFBc0IsQ0FBQztBQUU3RCxPQUFPLEVBQ0wsNkJBQTZCLEVBQzdCLCtCQUErQixFQUMvQixxQkFBcUIsRUFDckIsdUJBQXVCLEdBQ3hCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixtQkFBbUIsRUFDbkIsa0JBQWtCLEdBR25CLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7Ozs7SUNGcEMsOENBUUM7SUFQQywwTUFBYyxlQUFBLHVCQUFnQixDQUFBLElBQUM7SUFPaEMsaUJBQXFCOzs7SUFMcEIsOENBQXlCLHVCQUFBLDZCQUFBLHFDQUFBLHVDQUFBOzs7O0lBTTNCLDZDQU1DO0lBTEMsd01BQWMsZUFBQSx1QkFBZ0IsQ0FBQSxJQUFDO0lBS2hDLGlCQUFvQjs7O0lBSG5CLDhDQUF5QixtQ0FBQSxxQ0FBQTs7OztJQUkzQixpREFLQztJQUpDLGdOQUFjLGVBQUEsdUJBQWdCLENBQUEsSUFBQztJQUloQyxpQkFBd0I7OztJQUZ2Qiw4Q0FBeUIscUNBQUE7O0FEUjNCLE1BQU0sT0FBTyxpQkFBaUI7SUF3QjVCLFlBQ3dDLG9CQUFvQiw2QkFBNkIsRUFDL0Msc0JBQXNCLCtCQUErQixFQUNyRixlQUFnQztRQUZGLHNC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dUJBQUMscUJBQXFCOztzQkFDNUIsTUFBTTt1QkFBQyx1QkFBdUI7c0RBekJQLElBQUk7a0JBQTdCLFdBQVc7bUJBQUMsV0FBVztZQUNTLFVBQVU7a0JBQTFDLFdBQVc7bUJBQUMsa0JBQWtCO1lBRXRCLGtCQUFrQjtrQkFBMUIsS0FBSztZQUNHLGNBQWM7a0JBQXRCLEtBQUs7WUFFRyxZQUFZO2tCQUFwQixLQUFLO1lBQ0csS0FBSztrQkFBYixLQUFLO1lBRU4sUUFBUTtrQkFEUCxLQUFLO1lBRUcsYUFBYTtrQkFBckIsS0FBSztZQUNHLFdBQVc7a0JBQW5CLEtBQUs7WUFDSSxVQUFVO2tCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IERhdGVIZWxwZXIsIERhdGVSYW5nZSB9IGZyb20gJ0BhY3BhYXMtdWkvbmd4LXV0aWxzJztcblxuaW1wb3J0IHtcbiAgQ0FMRU5EQVJfREVGQVVMVF9NT05USF9MQUJFTFMsXG4gIENBTEVOREFSX0RFRkFVTFRfV0VFS0RBWV9MQUJFTFMsXG4gIENBTEVOREFSX01PTlRIX0xBQkVMUyxcbiAgQ0FMRU5EQVJfV0VFS0RBWV9MQUJFTFMsXG59IGZyb20gJy4uLy4uL2NhbGVuZGFyLmNvbmYnO1xuaW1wb3J0IHtcbiAgQ0FMRU5EQVJfVklFV19ERUNFTk5JQSxcbiAgQ0FMRU5EQVJfVklFV19NT05USCxcbiAgQ0FMRU5EQVJfVklFV19ZRUFSLFxuICBNb250aExhYmVsc0NvbmZpZyxcbiAgV2Vla2RheUxhYmVsc0NvbmZpZyxcbn0gZnJvbSAnLi4vLi4vdHlwZXMvY2FsZW5kYXIudHlwZXMnO1xuaW1wb3J0IHsgQ2FsZW5kYXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2FsZW5kYXIuc2VydmljZSc7XG5pbXBvcnQgeyBJbnRlcnZhbCB9IGZyb20gJ0BhY3BhYXMtdWkvbmd4LXV0aWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXVpLWNhbGVuZGFyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhbGVuZGFyLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIENhbGVuZGFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBASG9zdEJpbmRpbmcoJ2F0dHIucm9sZScpIHJvbGUgPSAnYXBwbGljYXRpb24nO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1oaWRkZW4nKSBhcmlhaGlkZGVuID0gJ2ZhbHNlJztcblxuICBASW5wdXQoKSBhcmlhUHJldmlvdXNMYWJlbHMgPSBbJ0dhIG5hYXIgdm9yaWdlIG1hYW5kJywgJ0dhIG5hYXIgdm9yaWcgamFhcicsICdHYSBuYWFyIHZvcmlnZSAxOCBqYXJlbiddO1xuICBASW5wdXQoKSBhcmlhTmV4dExhYmVscyA9IFsnR2EgbmFhciB2b2xnZW5kZSBtYWFuZCcsICdHYSBuYWFyIHZvbGdlbmQgamFhcicsICdHYSBuYWFyIHZvbGdlbmRlIDE4IGphcmVuJ107XG5cbiAgQElucHV0KCkgc2VsZWN0ZWREYXRlOiBEYXRlO1xuICBASW5wdXQoKSByYW5nZTogRGF0ZVJhbmdlO1xuICBASW5wdXQoKVxuICBpbnRlcnZhbD86IEludGVydmFsLklJbnRlcnZhbDxEYXRlPjtcbiAgQElucHV0KCkgd2Vla2RheUxhYmVsczogV2Vla2RheUxhYmVsc0NvbmZpZztcbiAgQElucHV0KCkgbW9udGhMYWJlbHM6IE1vbnRoTGFiZWxzQ29uZmlnO1xuICBAT3V0cHV0KCkgc2VsZWN0RGF0ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwdWJsaWMgQ0FMRU5EQVJfVklFV19NT05USCA9IENBTEVOREFSX1ZJRVdfTU9OVEg7XG4gIHB1YmxpYyBDQUxFTkRBUl9WSUVXX1lFQVIgPSBDQUxFTkRBUl9WSUVXX1lFQVI7XG4gIHB1YmxpYyBDQUxFTkRBUl9WSUVXX0RFQ0VOTklBID0gQ0FMRU5EQVJfVklFV19ERUNFTk5JQTtcbiAgcHVibGljIGFjdGl2ZURhdGU6IERhdGU7XG4gIHB1YmxpYyBhY3RpdmVWaWV3OiBzdHJpbmcgPSBDQUxFTkRBUl9WSUVXX01PTlRIO1xuICBwdWJsaWMgaGVhZGVyTGFiZWwgPSAnJztcbiAgcHVibGljIGFyaWFQcmV2aW91c0xhYmVsID0gdGhpcy5hcmlhUHJldmlvdXNMYWJlbHNbMF07XG4gIHB1YmxpYyBhcmlhTmV4dExhYmVsID0gdGhpcy5hcmlhTmV4dExhYmVsc1swXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KENBTEVOREFSX01PTlRIX0xBQkVMUykgcHVibGljIG1vZHVsZU1vbnRoTGFiZWxzID0gQ0FMRU5EQVJfREVGQVVMVF9NT05USF9MQUJFTFMsXG4gICAgQEluamVjdChDQUxFTkRBUl9XRUVLREFZX0xBQkVMUykgcHVibGljIG1vZHVsZVdlZWtkYXlMYWJlbHMgPSBDQUxFTkRBUl9ERUZBVUxUX1dFRUtEQVlfTEFCRUxTLFxuICAgIHByaXZhdGUgY2FsZW5kYXJTZXJ2aWNlOiBDYWxlbmRhclNlcnZpY2VcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmluaXRDb250cm9sKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWREYXRlID0gY2hhbmdlcy5zZWxlY3RlZERhdGUgJiYgY2hhbmdlcy5zZWxlY3RlZERhdGUuY3VycmVudFZhbHVlID8gY2hhbmdlcy5zZWxlY3RlZERhdGUgOiBudWxsO1xuXG4gICAgaWYgKFxuICAgICAgdHlwZW9mIHRoaXMubW9udGhMYWJlbHMgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICBzZWxlY3RlZERhdGUgJiZcbiAgICAgICFEYXRlSGVscGVyLmRhdGVzQXJlRXF1YWwoc2VsZWN0ZWREYXRlLmN1cnJlbnRWYWx1ZSwgc2VsZWN0ZWREYXRlLnByZXZpb3VzVmFsdWUpXG4gICAgKSB7XG4gICAgICB0aGlzLmFjdGl2ZURhdGUgPSB0aGlzLnNlbGVjdGVkRGF0ZTtcbiAgICAgIHRoaXMudXBkYXRlSGVhZGVyTGFiZWwoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGFjdGl2ZURhdGVUb1NldCA9IG5ldyBEYXRlKCk7XG5cbiAgICAgIGlmICh0aGlzLmludGVydmFsICYmIHRoaXMuaW50ZXJ2YWwuaXNJblJhbmdlKGFjdGl2ZURhdGVUb1NldCkpIHtcbiAgICAgICAgYWN0aXZlRGF0ZVRvU2V0ID0gdGhpcy5pbnRlcnZhbC5taW47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuYWN0aXZlRGF0ZSA9IERhdGVIZWxwZXIucGFyc2VEYXRlKGFjdGl2ZURhdGVUb1NldCk7XG5cbiAgICAgIHRoaXMuaW5pdENvbnRyb2woKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVBY3RpdmVEYXRlKGZhY3RvcjogbnVtYmVyID0gMCk6IHZvaWQge1xuICAgIGNvbnN0IGFjdGl2ZURhdGUgPSB0aGlzLmFjdGl2ZURhdGUgPyBuZXcgRGF0ZSh0aGlzLmFjdGl2ZURhdGUpIDogbmV3IERhdGUoKTtcblxuICAgIHN3aXRjaCAodGhpcy5hY3RpdmVWaWV3KSB7XG4gICAgICBjYXNlIENBTEVOREFSX1ZJRVdfTU9OVEg6XG4gICAgICAgIGFjdGl2ZURhdGUuc2V0TW9udGgoYWN0aXZlRGF0ZS5nZXRNb250aCgpICsgZmFjdG9yKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIENBTEVOREFSX1ZJRVdfWUVBUjpcbiAgICAgICAgYWN0aXZlRGF0ZS5zZXRGdWxsWWVhcihhY3RpdmVEYXRlLmdldEZ1bGxZZWFyKCkgKyBmYWN0b3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQ0FMRU5EQVJfVklFV19ERUNFTk5JQTpcbiAgICAgICAgYWN0aXZlRGF0ZS5zZXRGdWxsWWVhcihhY3RpdmVEYXRlLmdldEZ1bGxZZWFyKCkgKyAxOCAqIGZhY3Rvcik7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHRoaXMuYWN0aXZlRGF0ZSA9IGFjdGl2ZURhdGU7XG4gICAgdGhpcy51cGRhdGVIZWFkZXJMYWJlbCgpO1xuICB9XG5cbiAgc3dpdGNoVmlldyhmYWN0b3I6IG51bWJlciA9IDEpOiB2b2lkIHtcbiAgICBjb25zdCB2aWV3cyA9IFtDQUxFTkRBUl9WSUVXX01PTlRILCBDQUxFTkRBUl9WSUVXX1lFQVIsIENBTEVOREFSX1ZJRVdfREVDRU5OSUFdO1xuXG4gICAgY29uc3QgY3VyclZpZXcgPSB2aWV3cy5pbmRleE9mKHRoaXMuYWN0aXZlVmlldyk7XG4gICAgbGV0IG5leHRWaWV3ID0gY3VyclZpZXcgKyBmYWN0b3IgPj0gdmlld3MubGVuZ3RoID8gMCA6IGN1cnJWaWV3ICsgZmFjdG9yO1xuICAgIG5leHRWaWV3ID0gbmV4dFZpZXcgPCAwID8gdmlld3MubGVuZ3RoIC0gMSA6IG5leHRWaWV3O1xuXG4gICAgdGhpcy5hY3RpdmVWaWV3ID0gdmlld3NbbmV4dFZpZXddO1xuXG4gICAgLy8gcmVzZXQgYWN0aXZlRGF0ZSB3aGVuIHJldHVybmluZyB0byBtb250aCB2aWV3IHdpdGhvdXQgbW9kZWwgdXBkYXRlXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWREYXRlICYmIG5leHRWaWV3ID09PSAwICYmIGZhY3RvciA9PT0gMSkge1xuICAgICAgdGhpcy5hY3RpdmVEYXRlID0gdGhpcy5zZWxlY3RlZERhdGU7XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVIZWFkZXJMYWJlbCgpO1xuICB9XG5cbiAgdXBkYXRlSGVhZGVyTGFiZWwoKTogdm9pZCB7XG4gICAgc3dpdGNoICh0aGlzLmFjdGl2ZVZpZXcpIHtcbiAgICAgIGNhc2UgQ0FMRU5EQVJfVklFV19NT05USDpcbiAgICAgICAgdGhpcy5oZWFkZXJMYWJlbCA9IHRoaXMubW9udGhMYWJlbHNbdGhpcy5hY3RpdmVEYXRlLmdldE1vbnRoKCldICsgJyAnICsgdGhpcy5hY3RpdmVEYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgIHRoaXMuYXJpYVByZXZpb3VzTGFiZWwgPSB0aGlzLmFyaWFQcmV2aW91c0xhYmVsc1swXTtcbiAgICAgICAgdGhpcy5hcmlhTmV4dExhYmVsID0gdGhpcy5hcmlhTmV4dExhYmVsc1swXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIENBTEVOREFSX1ZJRVdfWUVBUjpcbiAgICAgICAgdGhpcy5oZWFkZXJMYWJlbCA9IFN0cmluZyh0aGlzLmFjdGl2ZURhdGUuZ2V0RnVsbFllYXIoKSk7XG4gICAgICAgIHRoaXMuYXJpYVByZXZpb3VzTGFiZWwgPSB0aGlzLmFyaWFQcmV2aW91c0xhYmVsc1sxXTtcbiAgICAgICAgdGhpcy5hcmlhTmV4dExhYmVsID0gdGhpcy5hcmlhTmV4dExhYmVsc1sxXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIENBTEVOREFSX1ZJRVdfREVDRU5OSUE6XG4gICAgICAgIGNvbnN0IHN0YXJ0WWVhciA9IHRoaXMuYWN0aXZlRGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgICB0aGlzLmhlYWRlckxhYmVsID0gYCR7c3RhcnRZZWFyfSAtICR7c3RhcnRZZWFyICsgMTd9YDtcbiAgICAgICAgdGhpcy5hcmlhUHJldmlvdXNMYWJlbCA9IHRoaXMuYXJpYVByZXZpb3VzTGFiZWxzWzJdO1xuICAgICAgICB0aGlzLmFyaWFOZXh0TGFiZWwgPSB0aGlzLmFyaWFOZXh0TGFiZWxzWzJdO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBwaWNrRGF0ZShkYXRlOiBEYXRlKTogdm9pZCB7XG4gICAgY29uc3QgY29tcGxldGUgPSB0aGlzLmFjdGl2ZVZpZXcgPT09IENBTEVOREFSX1ZJRVdfTU9OVEg7XG5cbiAgICB0aGlzLnNlbGVjdERhdGUuZW1pdCh7XG4gICAgICBkYXRlLFxuICAgICAgY29tcGxldGUsXG4gICAgfSk7XG5cbiAgICBpZiAoIWNvbXBsZXRlKSB7XG4gICAgICB0aGlzLmFjdGl2ZURhdGUgPSBkYXRlO1xuICAgICAgdGhpcy5zd2l0Y2hWaWV3KC0xKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXRDb250cm9sKCk6IHZvaWQge1xuICAgIHRoaXMud2Vla2RheUxhYmVscyA9IHRoaXMud2Vla2RheUxhYmVscyB8fCB0aGlzLm1vZHVsZVdlZWtkYXlMYWJlbHM7XG4gICAgdGhpcy5tb250aExhYmVscyA9IHRoaXMubW9udGhMYWJlbHMgfHwgdGhpcy5tb2R1bGVNb250aExhYmVscztcbiAgICB0aGlzLmFjdGl2ZURhdGUgPSB0aGlzLmNhbGVuZGFyU2VydmljZS5nZXRDbG9zZXN0RGF0ZUZvclJhbmdlKHRoaXMuYWN0aXZlRGF0ZSwgdGhpcy5yYW5nZSk7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWREYXRlKSB7XG4gICAgICB0aGlzLmFjdGl2ZURhdGUgPSB0aGlzLnNlbGVjdGVkRGF0ZTtcbiAgICAgIHRoaXMudXBkYXRlQWN0aXZlRGF0ZSgpO1xuICAgIH1cbiAgICB0aGlzLnVwZGF0ZUhlYWRlckxhYmVsKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtLWRhdGVwaWNrZXJfX25hdlwiPlxuICA8YnV0dG9uIChjbGljayk9XCJzd2l0Y2hWaWV3KClcIiBjbGFzcz1cIm0tZGF0ZXBpY2tlcl9fbmF2LXRpdGxlXCIgdHlwZT1cImJ1dHRvblwiPlxuICAgIHt7IGhlYWRlckxhYmVsIHwgdGl0bGVjYXNlIH19XG4gICAgPGF1aS1pY29uIG5hbWU9XCJhaS1hcnJvdy1kb3duLTFcIiByb2xlPVwiYnV0dG9uXCIgdGFiaW5kZXg9XCIwXCIgLz5cbiAgPC9idXR0b24+XG5cbiAgPGRpdiBjbGFzcz1cIm0tZGF0ZXBpY2tlcl9fbmF2LXBhZ2luYXRpb25cIj5cbiAgICA8YnV0dG9uXG4gICAgICAoY2xpY2spPVwidXBkYXRlQWN0aXZlRGF0ZSgtMSlcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhUHJldmlvdXNMYWJlbFwiXG4gICAgICBjbGFzcz1cImEtYnV0dG9uIGEtYnV0dG9uLS10ZXh0IGEtYnV0dG9uLS1wcmltYXJ5IGhhcy1pY29uXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgID5cbiAgICAgIDxhdWktaWNvbiBuYW1lPVwiYWktYXJyb3ctbGVmdC0xXCI+PC9hdWktaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICAoY2xpY2spPVwidXBkYXRlQWN0aXZlRGF0ZSgxKVwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFOZXh0TGFiZWxcIlxuICAgICAgY2xhc3M9XCJhLWJ1dHRvbiBhLWJ1dHRvbi0tdGV4dCBhLWJ1dHRvbi0tcHJpbWFyeSBoYXMtaWNvblwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICA+XG4gICAgICA8YXVpLWljb24gbmFtZT1cImFpLWFycm93LXJpZ2h0LTFcIj48L2F1aS1pY29uPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuPGF1aS1jYWxlbmRhci1tb250aFxuICAoc2VsZWN0RGF0ZSk9XCJwaWNrRGF0ZSgkZXZlbnQpXCJcbiAgKm5nSWY9XCJhY3RpdmVWaWV3ID09PSBDQUxFTkRBUl9WSUVXX01PTlRIXCJcbiAgW2FjdGl2ZURhdGVdPVwiYWN0aXZlRGF0ZVwiXG4gIFtyYW5nZV09XCJyYW5nZVwiXG4gIFtpbnRlcnZhbF09XCJpbnRlcnZhbFwiXG4gIFtzZWxlY3RlZERhdGVdPVwic2VsZWN0ZWREYXRlXCJcbiAgW3dlZWtkYXlMYWJlbHNdPVwid2Vla2RheUxhYmVsc1wiXG4+PC9hdWktY2FsZW5kYXItbW9udGg+XG48YXVpLWNhbGVuZGFyLXllYXJcbiAgKHNlbGVjdERhdGUpPVwicGlja0RhdGUoJGV2ZW50KVwiXG4gICpuZ0lmPVwiYWN0aXZlVmlldyA9PT0gQ0FMRU5EQVJfVklFV19ZRUFSXCJcbiAgW2FjdGl2ZURhdGVdPVwiYWN0aXZlRGF0ZVwiXG4gIFttb250aExhYmVsc109XCJtb250aExhYmVsc1wiXG4gIFtzZWxlY3RlZERhdGVdPVwic2VsZWN0ZWREYXRlXCJcbj48L2F1aS1jYWxlbmRhci15ZWFyPlxuPGF1aS1jYWxlbmRhci1kZWNlbm5pYVxuICAoc2VsZWN0RGF0ZSk9XCJwaWNrRGF0ZSgkZXZlbnQpXCJcbiAgKm5nSWY9XCJhY3RpdmVWaWV3ID09PSBDQUxFTkRBUl9WSUVXX0RFQ0VOTklBXCJcbiAgW2FjdGl2ZURhdGVdPVwiYWN0aXZlRGF0ZVwiXG4gIFtzZWxlY3RlZERhdGVdPVwic2VsZWN0ZWREYXRlXCJcbj48L2F1aS1jYWxlbmRhci1kZWNlbm5pYT4iXX0=
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { chunk, get } from 'lodash-es';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
const _c0 = function (a0, a1) { return { "is-current": a0, "is-selected": a1 }; };
|
|
6
|
+
function CalendarDecenniaComponent_tr_3_td_1_Template(rf, ctx) { if (rf & 1) {
|
|
7
|
+
const _r5 = i0.ɵɵgetCurrentView();
|
|
8
|
+
i0.ɵɵelementStart(0, "td")(1, "button", 3);
|
|
9
|
+
i0.ɵɵlistener("click", function CalendarDecenniaComponent_tr_3_td_1_Template_button_click_1_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r5); const year_r3 = restoredCtx.$implicit; const ctx_r4 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r4.pickDate($event, year_r3)); });
|
|
10
|
+
i0.ɵɵtext(2);
|
|
11
|
+
i0.ɵɵelementEnd()();
|
|
12
|
+
} if (rf & 2) {
|
|
13
|
+
const year_r3 = ctx.$implicit;
|
|
14
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
15
|
+
i0.ɵɵadvance(1);
|
|
16
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(2, _c0, year_r3 === ctx_r2.current, year_r3 === ctx_r2.selectedYear));
|
|
17
|
+
i0.ɵɵadvance(1);
|
|
18
|
+
i0.ɵɵtextInterpolate1(" ", year_r3, " ");
|
|
19
|
+
} }
|
|
20
|
+
function CalendarDecenniaComponent_tr_3_Template(rf, ctx) { if (rf & 1) {
|
|
21
|
+
i0.ɵɵelementStart(0, "tr");
|
|
22
|
+
i0.ɵɵtemplate(1, CalendarDecenniaComponent_tr_3_td_1_Template, 3, 5, "td", 2);
|
|
23
|
+
i0.ɵɵelementEnd();
|
|
24
|
+
} if (rf & 2) {
|
|
25
|
+
const group_r1 = ctx.$implicit;
|
|
26
|
+
i0.ɵɵadvance(1);
|
|
27
|
+
i0.ɵɵproperty("ngForOf", group_r1);
|
|
28
|
+
} }
|
|
29
|
+
export class CalendarDecenniaComponent {
|
|
30
|
+
constructor() {
|
|
31
|
+
this.selectDate = new EventEmitter();
|
|
32
|
+
this.years = [];
|
|
33
|
+
this.selectedYear = -1;
|
|
34
|
+
this.current = -1;
|
|
35
|
+
}
|
|
36
|
+
ngOnInit() {
|
|
37
|
+
const current = new Date();
|
|
38
|
+
this.current = current.getFullYear();
|
|
39
|
+
}
|
|
40
|
+
ngOnChanges(changes) {
|
|
41
|
+
const currentValue = get(changes, 'activeDate.currentValue');
|
|
42
|
+
const previousValue = get(changes, 'activeDate.previousValue');
|
|
43
|
+
const currentYear = currentValue instanceof Date ? currentValue.getFullYear() : -1;
|
|
44
|
+
const previousYear = previousValue instanceof Date ? previousValue.getFullYear() : -1;
|
|
45
|
+
const outOfRange = previousYear > currentYear || previousYear + 17 < currentYear;
|
|
46
|
+
if (currentYear >= 0 && outOfRange) {
|
|
47
|
+
this.updateYears();
|
|
48
|
+
}
|
|
49
|
+
this.selectedYear = this.selectedDate instanceof Date ? this.selectedDate.getFullYear() : -1;
|
|
50
|
+
}
|
|
51
|
+
pickDate(event, date) {
|
|
52
|
+
event.stopPropagation();
|
|
53
|
+
const selectedDate = new Date(this.activeDate);
|
|
54
|
+
selectedDate.setFullYear(date);
|
|
55
|
+
this.selectDate.emit(selectedDate);
|
|
56
|
+
}
|
|
57
|
+
updateYears() {
|
|
58
|
+
const years = [];
|
|
59
|
+
const activeYear = this.activeDate.getFullYear();
|
|
60
|
+
for (let i = activeYear; i < activeYear + 18; i += 1) {
|
|
61
|
+
years.push(i);
|
|
62
|
+
}
|
|
63
|
+
this.years = chunk(years, 3);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/** @nocollapse */ CalendarDecenniaComponent.ɵfac = function CalendarDecenniaComponent_Factory(t) { return new (t || CalendarDecenniaComponent)(); };
|
|
67
|
+
/** @nocollapse */ CalendarDecenniaComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: CalendarDecenniaComponent, selectors: [["aui-calendar-decennia"]], inputs: { selectedDate: "selectedDate", activeDate: "activeDate" }, outputs: { selectDate: "selectDate" }, features: [i0.ɵɵNgOnChangesFeature], decls: 4, vars: 1, consts: [[1, "m-datepicker__list"], [1, "m-datepicker__list-body"], [4, "ngFor", "ngForOf"], ["type", "button", 3, "ngClass", "click"]], template: function CalendarDecenniaComponent_Template(rf, ctx) { if (rf & 1) {
|
|
68
|
+
i0.ɵɵelementStart(0, "div", 0)(1, "table")(2, "tbody", 1);
|
|
69
|
+
i0.ɵɵtemplate(3, CalendarDecenniaComponent_tr_3_Template, 2, 1, "tr", 2);
|
|
70
|
+
i0.ɵɵelementEnd()()();
|
|
71
|
+
} if (rf & 2) {
|
|
72
|
+
i0.ɵɵadvance(3);
|
|
73
|
+
i0.ɵɵproperty("ngForOf", ctx.years);
|
|
74
|
+
} }, dependencies: [i1.NgClass, i1.NgForOf], encapsulation: 2, changeDetection: 0 });
|
|
75
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CalendarDecenniaComponent, [{
|
|
76
|
+
type: Component,
|
|
77
|
+
args: [{ selector: 'aui-calendar-decennia', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"m-datepicker__list\">\n <table>\n <tbody class=\"m-datepicker__list-body\">\n <tr *ngFor=\"let group of years\">\n <td *ngFor=\"let year of group\">\n <button\n (click)=\"pickDate($event, year)\"\n [ngClass]=\"{\n 'is-current': year === current,\n 'is-selected': year === selectedYear\n }\"\n type=\"button\"\n >\n {{ year }}\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n" }]
|
|
78
|
+
}], null, { selectedDate: [{
|
|
79
|
+
type: Input
|
|
80
|
+
}], activeDate: [{
|
|
81
|
+
type: Input
|
|
82
|
+
}], selectDate: [{
|
|
83
|
+
type: Output
|
|
84
|
+
}] }); })();
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjZW5uaWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2RlY2VubmlhL2RlY2VubmlhLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kZWNlbm5pYS9kZWNlbm5pYS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDbEksT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7Ozs7OztJQ0cvQiwwQkFBK0IsZ0JBQUE7SUFFM0IsNE9BQVMsZUFBQSxnQ0FBc0IsQ0FBQSxJQUFDO0lBT2hDLFlBQ0Y7SUFBQSxpQkFBUyxFQUFBOzs7O0lBUFAsZUFHRTtJQUhGLGlIQUdFO0lBR0YsZUFDRjtJQURFLHdDQUNGOzs7SUFYSiwwQkFBZ0M7SUFDOUIsNkVBV0s7SUFDUCxpQkFBSzs7O0lBWmtCLGVBQVE7SUFBUixrQ0FBUTs7QURJckMsTUFBTSxPQUFPLHlCQUF5QjtJQUx0QztRQVFZLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRW5DLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxpQkFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2xCLFlBQU8sR0FBRyxDQUFDLENBQUMsQ0FBQztLQXdDckI7SUF0Q1EsUUFBUTtRQUNiLE1BQU0sT0FBTyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxNQUFNLFlBQVksR0FBRyxHQUFHLENBQUMsT0FBTyxFQUFFLHlCQUF5QixDQUFDLENBQUM7UUFDN0QsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDLE9BQU8sRUFBRSwwQkFBMEIsQ0FBQyxDQUFDO1FBQy9ELE1BQU0sV0FBVyxHQUFHLFlBQVksWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkYsTUFBTSxZQUFZLEdBQUcsYUFBYSxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0RixNQUFNLFVBQVUsR0FBRyxZQUFZLEdBQUcsV0FBVyxJQUFJLFlBQVksR0FBRyxFQUFFLEdBQUcsV0FBVyxDQUFDO1FBRWpGLElBQUksV0FBVyxJQUFJLENBQUMsSUFBSSxVQUFVLEVBQUU7WUFDbEMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3BCO1FBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0YsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFpQixFQUFFLElBQVk7UUFDdEMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRXhCLE1BQU0sWUFBWSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMvQyxZQUFZLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRS9CLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFTyxXQUFXO1FBQ2pCLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNqQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRWpELEtBQUssSUFBSSxDQUFDLEdBQUcsVUFBVSxFQUFFLENBQUMsR0FBRyxVQUFVLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDcEQsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNmO1FBRUQsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9CLENBQUM7O3FIQTlDVSx5QkFBeUI7MkdBQXpCLHlCQUF5QjtRQ1J0Qyw4QkFBZ0MsWUFBQSxlQUFBO1FBRzFCLHdFQWFLO1FBQ1AsaUJBQVEsRUFBQSxFQUFBOztRQWRnQixlQUFRO1FBQVIsbUNBQVE7O3VGREt2Qix5QkFBeUI7Y0FMckMsU0FBUzsyQkFDRSx1QkFBdUIsbUJBRWhCLHVCQUF1QixDQUFDLE1BQU07Z0JBR3RDLFlBQVk7a0JBQXBCLEtBQUs7WUFDRyxVQUFVO2tCQUFsQixLQUFLO1lBQ0ksVUFBVTtrQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNodW5rLCBnZXQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhdWktY2FsZW5kYXItZGVjZW5uaWEnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGVjZW5uaWEuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQ2FsZW5kYXJEZWNlbm5pYUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgc2VsZWN0ZWREYXRlOiBEYXRlO1xuICBASW5wdXQoKSBhY3RpdmVEYXRlOiBEYXRlO1xuICBAT3V0cHV0KCkgc2VsZWN0RGF0ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwdWJsaWMgeWVhcnMgPSBbXTtcbiAgcHVibGljIHNlbGVjdGVkWWVhciA9IC0xO1xuICBwdWJsaWMgY3VycmVudCA9IC0xO1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCBjdXJyZW50ID0gbmV3IERhdGUoKTtcbiAgICB0aGlzLmN1cnJlbnQgPSBjdXJyZW50LmdldEZ1bGxZZWFyKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgY29uc3QgY3VycmVudFZhbHVlID0gZ2V0KGNoYW5nZXMsICdhY3RpdmVEYXRlLmN1cnJlbnRWYWx1ZScpO1xuICAgIGNvbnN0IHByZXZpb3VzVmFsdWUgPSBnZXQoY2hhbmdlcywgJ2FjdGl2ZURhdGUucHJldmlvdXNWYWx1ZScpO1xuICAgIGNvbnN0IGN1cnJlbnRZZWFyID0gY3VycmVudFZhbHVlIGluc3RhbmNlb2YgRGF0ZSA/IGN1cnJlbnRWYWx1ZS5nZXRGdWxsWWVhcigpIDogLTE7XG4gICAgY29uc3QgcHJldmlvdXNZZWFyID0gcHJldmlvdXNWYWx1ZSBpbnN0YW5jZW9mIERhdGUgPyBwcmV2aW91c1ZhbHVlLmdldEZ1bGxZZWFyKCkgOiAtMTtcbiAgICBjb25zdCBvdXRPZlJhbmdlID0gcHJldmlvdXNZZWFyID4gY3VycmVudFllYXIgfHwgcHJldmlvdXNZZWFyICsgMTcgPCBjdXJyZW50WWVhcjtcblxuICAgIGlmIChjdXJyZW50WWVhciA+PSAwICYmIG91dE9mUmFuZ2UpIHtcbiAgICAgIHRoaXMudXBkYXRlWWVhcnMoKTtcbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdGVkWWVhciA9IHRoaXMuc2VsZWN0ZWREYXRlIGluc3RhbmNlb2YgRGF0ZSA/IHRoaXMuc2VsZWN0ZWREYXRlLmdldEZ1bGxZZWFyKCkgOiAtMTtcbiAgfVxuXG4gIHBpY2tEYXRlKGV2ZW50OiBNb3VzZUV2ZW50LCBkYXRlOiBudW1iZXIpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGNvbnN0IHNlbGVjdGVkRGF0ZSA9IG5ldyBEYXRlKHRoaXMuYWN0aXZlRGF0ZSk7XG4gICAgc2VsZWN0ZWREYXRlLnNldEZ1bGxZZWFyKGRhdGUpO1xuXG4gICAgdGhpcy5zZWxlY3REYXRlLmVtaXQoc2VsZWN0ZWREYXRlKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlWWVhcnMoKTogdm9pZCB7XG4gICAgY29uc3QgeWVhcnMgPSBbXTtcbiAgICBjb25zdCBhY3RpdmVZZWFyID0gdGhpcy5hY3RpdmVEYXRlLmdldEZ1bGxZZWFyKCk7XG5cbiAgICBmb3IgKGxldCBpID0gYWN0aXZlWWVhcjsgaSA8IGFjdGl2ZVllYXIgKyAxODsgaSArPSAxKSB7XG4gICAgICB5ZWFycy5wdXNoKGkpO1xuICAgIH1cblxuICAgIHRoaXMueWVhcnMgPSBjaHVuayh5ZWFycywgMyk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtLWRhdGVwaWNrZXJfX2xpc3RcIj5cbiAgPHRhYmxlPlxuICAgIDx0Ym9keSBjbGFzcz1cIm0tZGF0ZXBpY2tlcl9fbGlzdC1ib2R5XCI+XG4gICAgICA8dHIgKm5nRm9yPVwibGV0IGdyb3VwIG9mIHllYXJzXCI+XG4gICAgICAgIDx0ZCAqbmdGb3I9XCJsZXQgeWVhciBvZiBncm91cFwiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIChjbGljayk9XCJwaWNrRGF0ZSgkZXZlbnQsIHllYXIpXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ2lzLWN1cnJlbnQnOiB5ZWFyID09PSBjdXJyZW50LFxuICAgICAgICAgICAgICAnaXMtc2VsZWN0ZWQnOiB5ZWFyID09PSBzZWxlY3RlZFllYXJcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgeWVhciB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L3RkPlxuICAgICAgPC90cj5cbiAgICA8L3Rib2R5PlxuICA8L3RhYmxlPlxuPC9kaXY+XG4iXX0=
|