@sebgroup/green-angular 1.0.0-beta.9 → 1.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.
Files changed (58) hide show
  1. package/esm2020/index.mjs +9 -7
  2. package/esm2020/lib/accordion/accordion-list-item.component.mjs +47 -0
  3. package/esm2020/lib/accordion/accordion.component.mjs +72 -0
  4. package/esm2020/lib/accordion/accordion.module.mjs +19 -0
  5. package/esm2020/lib/accordion/index.mjs +4 -0
  6. package/esm2020/lib/badge/badge.component.mjs +80 -0
  7. package/esm2020/lib/badge/badge.module.mjs +18 -0
  8. package/esm2020/lib/badge/index.mjs +3 -0
  9. package/esm2020/lib/button/button.component.mjs +26 -0
  10. package/esm2020/lib/button/button.module.mjs +18 -0
  11. package/esm2020/lib/button/index.mjs +3 -0
  12. package/esm2020/lib/datepicker/datepicker.component.mjs +71 -18
  13. package/esm2020/lib/datepicker/datepicker.module.mjs +4 -4
  14. package/esm2020/lib/datepicker/index.mjs +3 -0
  15. package/esm2020/lib/dropdown/dropdown-option.directive.mjs +16 -0
  16. package/esm2020/lib/dropdown/dropdown.component.mjs +88 -189
  17. package/esm2020/lib/dropdown/dropdown.module.mjs +8 -7
  18. package/esm2020/lib/dropdown/index.mjs +4 -0
  19. package/esm2020/lib/green-angular.module.mjs +36 -8
  20. package/esm2020/lib/modal/index.mjs +3 -0
  21. package/esm2020/lib/modal/modal.component.mjs +196 -0
  22. package/esm2020/lib/modal/modal.module.mjs +31 -0
  23. package/esm2020/lib/progress-circle/index.mjs +3 -0
  24. package/esm2020/lib/progress-circle/progress-circle.component.mjs +48 -0
  25. package/esm2020/lib/progress-circle/progress-circle.module.mjs +18 -0
  26. package/esm2020/lib/segmented-control/index.mjs +3 -0
  27. package/esm2020/lib/segmented-control/segmented-control.component.mjs +3 -3
  28. package/esm2020/lib/segmented-control/segmented-control.module.mjs +4 -4
  29. package/fesm2015/sebgroup-green-angular.mjs +798 -268
  30. package/fesm2015/sebgroup-green-angular.mjs.map +1 -1
  31. package/fesm2020/sebgroup-green-angular.mjs +784 -264
  32. package/fesm2020/sebgroup-green-angular.mjs.map +1 -1
  33. package/index.d.ts +8 -6
  34. package/lib/accordion/accordion-list-item.component.d.ts +15 -0
  35. package/lib/accordion/accordion.component.d.ts +16 -0
  36. package/lib/accordion/accordion.module.d.ts +9 -0
  37. package/lib/accordion/index.d.ts +3 -0
  38. package/lib/badge/badge.component.d.ts +25 -0
  39. package/lib/badge/badge.module.d.ts +8 -0
  40. package/lib/badge/index.d.ts +2 -0
  41. package/lib/button/button.component.d.ts +9 -0
  42. package/lib/button/button.module.d.ts +8 -0
  43. package/lib/button/index.d.ts +2 -0
  44. package/lib/datepicker/datepicker.component.d.ts +14 -10
  45. package/lib/datepicker/index.d.ts +2 -0
  46. package/lib/dropdown/dropdown-option.directive.d.ts +8 -0
  47. package/lib/dropdown/dropdown.component.d.ts +34 -16
  48. package/lib/dropdown/dropdown.module.d.ts +3 -2
  49. package/lib/dropdown/index.d.ts +3 -0
  50. package/lib/green-angular.module.d.ts +9 -4
  51. package/lib/modal/index.d.ts +2 -0
  52. package/lib/modal/modal.component.d.ts +59 -0
  53. package/lib/modal/modal.module.d.ts +9 -0
  54. package/lib/progress-circle/index.d.ts +2 -0
  55. package/lib/progress-circle/progress-circle.component.d.ts +15 -0
  56. package/lib/progress-circle/progress-circle.module.d.ts +8 -0
  57. package/lib/segmented-control/index.d.ts +2 -0
  58. package/package.json +10 -9
@@ -1,6 +1,7 @@
1
- import { ChangeDetectionStrategy, Component, Input, Output, ViewChild, EventEmitter, ChangeDetectorRef, } from '@angular/core';
2
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
1
+ import { ChangeDetectionStrategy, Component, ElementRef, Input, Output, ViewChild, EventEmitter, ChangeDetectorRef, } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR, } from '@angular/forms';
3
3
  import { createDatepicker, months, years, randomId, } from '@sebgroup/extract';
4
+ import { endOfDay, startOfDay } from 'date-fns';
4
5
  import * as i0 from "@angular/core";
5
6
  import * as i1 from "../dropdown/dropdown.component";
6
7
  import * as i2 from "@angular/common";
@@ -8,22 +9,29 @@ export class NggDatepickerComponent {
8
9
  constructor(_cdr) {
9
10
  this._cdr = _cdr;
10
11
  this.id = randomId();
12
+ this.isValid = null;
11
13
  this.valueChange = new EventEmitter();
12
14
  this._months = months({});
13
- this.years = years({});
14
- this.trackByKey = (index, option) => {
15
- return option.key;
16
- };
17
15
  this.listener = (data, state) => {
18
16
  if (this.dp && state) {
19
17
  this.dp.state = { ...state };
18
+ this.years = years({
19
+ from: this.dp.state?.minDate?.getFullYear(),
20
+ to: this.dp.state?.maxDate?.getFullYear(),
21
+ });
20
22
  }
21
23
  this.onTouchedFn && this.onTouchedFn();
22
24
  if (data) {
23
- this.valueChange.emit(data.selectedDate);
24
- this.onChangeFn && this.onChangeFn(data.selectedDate);
25
+ // only emit change event if date has changed
26
+ if (this.data?.selectedDate !== data.selectedDate) {
27
+ this.valueChange.emit(data.selectedDate);
28
+ this.onChangeFn && this.onChangeFn(data.selectedDate);
29
+ }
25
30
  this.data = data;
26
31
  }
32
+ if (data || state) {
33
+ this._cdr.markForCheck();
34
+ }
27
35
  };
28
36
  }
29
37
  get months() {
@@ -69,6 +77,17 @@ export class NggDatepickerComponent {
69
77
  set data(value) {
70
78
  this._data = value;
71
79
  }
80
+ onDateChange(value) {
81
+ const newDate = new Date(value);
82
+ // Only pass valid date to date picker
83
+ if (!isNaN(newDate.getTime())) {
84
+ this.dp?.select(value);
85
+ }
86
+ else {
87
+ this.valueChange.emit(value);
88
+ this.onChangeFn && this.onChangeFn(value);
89
+ }
90
+ }
72
91
  trackWeek(index, week) {
73
92
  return week;
74
93
  }
@@ -77,11 +96,12 @@ export class NggDatepickerComponent {
77
96
  if (this.datepickerElRef &&
78
97
  this.datepickerDialogElRef &&
79
98
  this.dateInputElRef &&
99
+ this.datepickerTriggerElRef &&
80
100
  !this.dp) {
81
101
  this.dp = createDatepicker(this.listener, {
82
102
  ...this.options,
83
103
  selectedDate: this.value,
84
- }, this.datepickerElRef.nativeElement, this.datepickerDialogElRef.nativeElement, this.dateInputElRef.nativeElement);
104
+ }, this.datepickerElRef.nativeElement, this.datepickerDialogElRef.nativeElement, this.dateInputElRef.nativeElement, this.datepickerTriggerElRef.nativeElement);
85
105
  this._cdr.detectChanges();
86
106
  }
87
107
  else {
@@ -89,15 +109,15 @@ export class NggDatepickerComponent {
89
109
  }
90
110
  }
91
111
  }
92
- NggDatepickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: NggDatepickerComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
93
- NggDatepickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: NggDatepickerComponent, selector: "ngg-datepicker", inputs: { options: "options", value: "value", id: "id", label: "label", valid: "valid", invalid: "invalid" }, outputs: { valueChange: "valueChange" }, providers: [
112
+ NggDatepickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: NggDatepickerComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
113
+ NggDatepickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: NggDatepickerComponent, selector: "ngg-datepicker", inputs: { options: "options", value: "value", id: "id", label: "label", isValid: "isValid" }, outputs: { valueChange: "valueChange" }, providers: [
94
114
  {
95
115
  provide: NG_VALUE_ACCESSOR,
96
116
  useExisting: NggDatepickerComponent,
97
117
  multi: true,
98
118
  },
99
- ], viewQueries: [{ propertyName: "datepickerDialogElRef", first: true, predicate: ["datepickerDialogElRef"], descendants: true }, { propertyName: "dateInputElRef", first: true, predicate: ["dateInputElRef"], descendants: true }, { propertyName: "datepickerElRef", first: true, predicate: ["datepickerElRef"], descendants: true }], ngImport: i0, template: "<div class=\"form-group\">\n <label *ngIf=\"label\" [for]=\"id\">{{ label }}</label>\n <div\n class=\"group\"\n #datepickerElRef\n [class.is-valid]=\"valid\"\n [class.is-invalid]=\"invalid\"\n >\n <input\n [attr.id]=\"id\"\n [attr.aria-describedby]=\"\n formInfo?.innerText && formInfo.innerText.length > 0\n ? id + '_info'\n : null\n \"\n type=\"text\"\n placeholder=\"yyyy-mm-dd\"\n #dateInputElRef\n [value]=\"data?.formattedSelectedDate || ''\"\n (change)=\"dp?.select(dateInputElRef.value)\"\n />\n <button\n #datepickerTriggerElRef\n (click)=\"dp?.toggle()\"\n type=\"button\"\n class=\"primary\"\n >\n <i class=\"sg-icon sg-icon-calendar\">Select date</i>\n </button>\n </div>\n <span class=\"form-info\" #formInfo [attr.id]=\"id + '_info'\"\n ><ng-content select=\"[data-form-info]\"></ng-content\n ></span>\n</div>\n<!-- TODO: get or set attributes from within datepicker instance (dp) -->\n<div\n #datepickerDialogElRef\n class=\"sg-date\"\n [class.active]=\"dp?.state?.isActive\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Choose Date\"\n>\n <header>\n <button type=\"button\" class=\"link\" (click)=\"dp?.sub(1, 'months')\">\n <i class=\"sg-icon sg-icon-previous\">Previous month</i>\n </button>\n <ngg-dropdown\n [options]=\"months\"\n text=\"Select\"\n [value]=\"data?.month\"\n (valueChange)=\"dp?.setMonth($event)\"\n ></ngg-dropdown>\n <ngg-dropdown\n [options]=\"years\"\n text=\"Select\"\n [value]=\"data?.year\"\n (valueChange)=\"dp?.setYear($event)\"\n ></ngg-dropdown>\n <button type=\"button\" class=\"link\" (click)=\"dp?.add(1, 'months')\">\n <i class=\"sg-icon sg-icon-next\">Next month</i>\n </button>\n </header>\n <main>\n <table role=\"grid\">\n <thead>\n <tr>\n <th\n scope=\"col\"\n *ngFor=\"let header of data?.calendar?.headers\"\n [abbr]=\"header.abbr\"\n [class.sg-week-header]=\"header.type === 'week'\"\n [class.sg-day-header]=\"header.type === 'day'\"\n >\n {{ header.displayText }}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n *ngFor=\"\n let week of data?.calendar?.calendarGrid;\n trackBy: trackWeek;\n let i = index\n \"\n >\n <th\n *ngIf=\"data?.calendar?.weekNumbers as weekNumbers\"\n class=\"sg-week-number\"\n >\n {{ weekNumbers[i] }}\n </th>\n <td\n *ngFor=\"let day of week\"\n [attr.data-date]=\"day.formattedDate\"\n [attr.role]=\"day.selected ? 'gridcell' : null\"\n [attr.aria-selected]=\"day.selected ? true : null\"\n [class.disabled]=\"!day.currentMonth\"\n [class.sg-date-today]=\"day.today\"\n [title]=\"day.today ? 'Today' : ''\"\n tabindex=\"-1\"\n (click)=\"day.currentMonth && dp?.select(day.date)\"\n >\n {{ day.day }}\n </td>\n </tr>\n </tbody>\n </table>\n </main>\n</div>\n", components: [{ type: i1.NggDropdownComponent, selector: "ngg-dropdown", inputs: ["id", "text", "loop", "label", "options", "valid", "invalid", "value"], outputs: ["valueChange"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
100
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: NggDatepickerComponent, decorators: [{
119
+ ], viewQueries: [{ propertyName: "datepickerDialogElRef", first: true, predicate: ["datepickerDialogElRef"], descendants: true }, { propertyName: "dateInputElRef", first: true, predicate: ["dateInputElRef"], descendants: true }, { propertyName: "datepickerElRef", first: true, predicate: ["datepickerElRef"], descendants: true }, { propertyName: "datepickerTriggerElRef", first: true, predicate: ["datepickerTriggerElRef"], descendants: true }], ngImport: i0, template: "<div class=\"form-group\">\n <label *ngIf=\"label\" [for]=\"id\">{{ label }}</label>\n <div\n class=\"group\"\n #datepickerElRef\n [class.is-valid]=\"isValid\"\n [class.is-invalid]=\"isValid === false\"\n >\n <input\n [attr.id]=\"id\"\n [attr.aria-describedby]=\"\n formInfo?.innerText && formInfo.innerText.length > 0\n ? id + '_info'\n : null\n \"\n type=\"text\"\n placeholder=\"yyyy-mm-dd\"\n #dateInputElRef\n [value]=\"data?.formattedSelectedDate || ''\"\n (change)=\"onDateChange(dateInputElRef.value)\"\n />\n <button\n #datepickerTriggerElRef\n (click)=\"dp?.toggle()\"\n type=\"button\"\n class=\"primary\"\n >\n <i class=\"sg-icon sg-icon-calendar\">Select date</i>\n </button>\n </div>\n <span class=\"form-info\" #formInfo [attr.id]=\"id + '_info'\"\n ><ng-content select=\"[data-form-info]\"></ng-content\n ></span>\n</div>\n<!-- TODO: get or set attributes from within datepicker instance (dp) -->\n<div\n #datepickerDialogElRef\n class=\"popover popover-datepicker\"\n [class.active]=\"dp?.state?.isActive\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Choose Date\"\n>\n <button type=\"button\" class=\"close\" (click)=\"dp?.close()\"><i></i>Close</button>\n <div class=\"sg-date\">\n <header>\n <button type=\"button\" class=\"link\" (click)=\"dp?.sub(1, 'months')\">\n <i class=\"sg-icon sg-icon-previous\">Previous month</i>\n </button>\n <ngg-dropdown\n [options]=\"months\"\n display=\"key\"\n text=\"Select\"\n [value]=\"data?.month\"\n (valueChange)=\"dp?.setMonth($event)\"\n ></ngg-dropdown>\n <ngg-dropdown\n *ngIf=\"years\"\n [options]=\"years\"\n display=\"key\"\n text=\"Select\"\n [value]=\"data?.year\"\n (valueChange)=\"dp?.setYear($event)\"\n ></ngg-dropdown>\n <button type=\"button\" class=\"link\" (click)=\"dp?.add(1, 'months')\">\n <i class=\"sg-icon sg-icon-next\">Next month</i>\n </button>\n </header>\n <main>\n <table role=\"grid\">\n <thead>\n <tr>\n <th\n scope=\"col\"\n *ngFor=\"let header of data?.calendar?.headers\"\n [abbr]=\"header.abbr\"\n [class.sg-week-header]=\"header.type === 'week'\"\n [class.sg-day-header]=\"header.type === 'day'\"\n >\n {{ header.displayText }}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n *ngFor=\"\n let week of data?.calendar?.calendarGrid;\n trackBy: trackWeek;\n let i = index\n \"\n >\n <th\n *ngIf=\"data?.calendar?.weekNumbers as weekNumbers\"\n class=\"sg-week-number\"\n >\n {{ weekNumbers[i] }}\n </th>\n <td\n *ngFor=\"let day of week\"\n [attr.data-date]=\"day.formattedDate\"\n [attr.role]=\"day.selected ? 'gridcell' : null\"\n [attr.aria-selected]=\"\n day.selected && !data?.highlightedDate ? true : null\n \"\n [class.disabled]=\"day.disabled\"\n [class.sg-date-today]=\"day.today\"\n [title]=\"day.today ? 'Today' : ''\"\n [tabIndex]=\"\n day.highlighted ||\n (day.selected && !data?.highlightedDate) ||\n (day.today && !data?.highlightedDate && !data?.selectedDate)\n ? 0\n : -1\n \"\n (click)=\"day.currentMonth && dp?.select(day.date)\"\n >\n {{ day.day }}\n </td>\n </tr>\n </tbody>\n </table>\n </main>\n </div>\n</div>\n", components: [{ type: i1.NggDropdownComponent, selector: "ngg-dropdown", inputs: ["id", "texts", "loop", "display", "useValue", "label", "options", "valid", "invalid", "compareWith", "searchFilter", "multiSelect", "searchable", "value"], outputs: ["valueChange", "touched"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
120
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: NggDatepickerComponent, decorators: [{
101
121
  type: Component,
102
122
  args: [{ selector: 'ngg-datepicker', providers: [
103
123
  {
@@ -105,7 +125,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
105
125
  useExisting: NggDatepickerComponent,
106
126
  multi: true,
107
127
  },
108
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"form-group\">\n <label *ngIf=\"label\" [for]=\"id\">{{ label }}</label>\n <div\n class=\"group\"\n #datepickerElRef\n [class.is-valid]=\"valid\"\n [class.is-invalid]=\"invalid\"\n >\n <input\n [attr.id]=\"id\"\n [attr.aria-describedby]=\"\n formInfo?.innerText && formInfo.innerText.length > 0\n ? id + '_info'\n : null\n \"\n type=\"text\"\n placeholder=\"yyyy-mm-dd\"\n #dateInputElRef\n [value]=\"data?.formattedSelectedDate || ''\"\n (change)=\"dp?.select(dateInputElRef.value)\"\n />\n <button\n #datepickerTriggerElRef\n (click)=\"dp?.toggle()\"\n type=\"button\"\n class=\"primary\"\n >\n <i class=\"sg-icon sg-icon-calendar\">Select date</i>\n </button>\n </div>\n <span class=\"form-info\" #formInfo [attr.id]=\"id + '_info'\"\n ><ng-content select=\"[data-form-info]\"></ng-content\n ></span>\n</div>\n<!-- TODO: get or set attributes from within datepicker instance (dp) -->\n<div\n #datepickerDialogElRef\n class=\"sg-date\"\n [class.active]=\"dp?.state?.isActive\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Choose Date\"\n>\n <header>\n <button type=\"button\" class=\"link\" (click)=\"dp?.sub(1, 'months')\">\n <i class=\"sg-icon sg-icon-previous\">Previous month</i>\n </button>\n <ngg-dropdown\n [options]=\"months\"\n text=\"Select\"\n [value]=\"data?.month\"\n (valueChange)=\"dp?.setMonth($event)\"\n ></ngg-dropdown>\n <ngg-dropdown\n [options]=\"years\"\n text=\"Select\"\n [value]=\"data?.year\"\n (valueChange)=\"dp?.setYear($event)\"\n ></ngg-dropdown>\n <button type=\"button\" class=\"link\" (click)=\"dp?.add(1, 'months')\">\n <i class=\"sg-icon sg-icon-next\">Next month</i>\n </button>\n </header>\n <main>\n <table role=\"grid\">\n <thead>\n <tr>\n <th\n scope=\"col\"\n *ngFor=\"let header of data?.calendar?.headers\"\n [abbr]=\"header.abbr\"\n [class.sg-week-header]=\"header.type === 'week'\"\n [class.sg-day-header]=\"header.type === 'day'\"\n >\n {{ header.displayText }}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n *ngFor=\"\n let week of data?.calendar?.calendarGrid;\n trackBy: trackWeek;\n let i = index\n \"\n >\n <th\n *ngIf=\"data?.calendar?.weekNumbers as weekNumbers\"\n class=\"sg-week-number\"\n >\n {{ weekNumbers[i] }}\n </th>\n <td\n *ngFor=\"let day of week\"\n [attr.data-date]=\"day.formattedDate\"\n [attr.role]=\"day.selected ? 'gridcell' : null\"\n [attr.aria-selected]=\"day.selected ? true : null\"\n [class.disabled]=\"!day.currentMonth\"\n [class.sg-date-today]=\"day.today\"\n [title]=\"day.today ? 'Today' : ''\"\n tabindex=\"-1\"\n (click)=\"day.currentMonth && dp?.select(day.date)\"\n >\n {{ day.day }}\n </td>\n </tr>\n </tbody>\n </table>\n </main>\n</div>\n" }]
128
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"form-group\">\n <label *ngIf=\"label\" [for]=\"id\">{{ label }}</label>\n <div\n class=\"group\"\n #datepickerElRef\n [class.is-valid]=\"isValid\"\n [class.is-invalid]=\"isValid === false\"\n >\n <input\n [attr.id]=\"id\"\n [attr.aria-describedby]=\"\n formInfo?.innerText && formInfo.innerText.length > 0\n ? id + '_info'\n : null\n \"\n type=\"text\"\n placeholder=\"yyyy-mm-dd\"\n #dateInputElRef\n [value]=\"data?.formattedSelectedDate || ''\"\n (change)=\"onDateChange(dateInputElRef.value)\"\n />\n <button\n #datepickerTriggerElRef\n (click)=\"dp?.toggle()\"\n type=\"button\"\n class=\"primary\"\n >\n <i class=\"sg-icon sg-icon-calendar\">Select date</i>\n </button>\n </div>\n <span class=\"form-info\" #formInfo [attr.id]=\"id + '_info'\"\n ><ng-content select=\"[data-form-info]\"></ng-content\n ></span>\n</div>\n<!-- TODO: get or set attributes from within datepicker instance (dp) -->\n<div\n #datepickerDialogElRef\n class=\"popover popover-datepicker\"\n [class.active]=\"dp?.state?.isActive\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Choose Date\"\n>\n <button type=\"button\" class=\"close\" (click)=\"dp?.close()\"><i></i>Close</button>\n <div class=\"sg-date\">\n <header>\n <button type=\"button\" class=\"link\" (click)=\"dp?.sub(1, 'months')\">\n <i class=\"sg-icon sg-icon-previous\">Previous month</i>\n </button>\n <ngg-dropdown\n [options]=\"months\"\n display=\"key\"\n text=\"Select\"\n [value]=\"data?.month\"\n (valueChange)=\"dp?.setMonth($event)\"\n ></ngg-dropdown>\n <ngg-dropdown\n *ngIf=\"years\"\n [options]=\"years\"\n display=\"key\"\n text=\"Select\"\n [value]=\"data?.year\"\n (valueChange)=\"dp?.setYear($event)\"\n ></ngg-dropdown>\n <button type=\"button\" class=\"link\" (click)=\"dp?.add(1, 'months')\">\n <i class=\"sg-icon sg-icon-next\">Next month</i>\n </button>\n </header>\n <main>\n <table role=\"grid\">\n <thead>\n <tr>\n <th\n scope=\"col\"\n *ngFor=\"let header of data?.calendar?.headers\"\n [abbr]=\"header.abbr\"\n [class.sg-week-header]=\"header.type === 'week'\"\n [class.sg-day-header]=\"header.type === 'day'\"\n >\n {{ header.displayText }}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n *ngFor=\"\n let week of data?.calendar?.calendarGrid;\n trackBy: trackWeek;\n let i = index\n \"\n >\n <th\n *ngIf=\"data?.calendar?.weekNumbers as weekNumbers\"\n class=\"sg-week-number\"\n >\n {{ weekNumbers[i] }}\n </th>\n <td\n *ngFor=\"let day of week\"\n [attr.data-date]=\"day.formattedDate\"\n [attr.role]=\"day.selected ? 'gridcell' : null\"\n [attr.aria-selected]=\"\n day.selected && !data?.highlightedDate ? true : null\n \"\n [class.disabled]=\"day.disabled\"\n [class.sg-date-today]=\"day.today\"\n [title]=\"day.today ? 'Today' : ''\"\n [tabIndex]=\"\n day.highlighted ||\n (day.selected && !data?.highlightedDate) ||\n (day.today && !data?.highlightedDate && !data?.selectedDate)\n ? 0\n : -1\n \"\n (click)=\"day.currentMonth && dp?.select(day.date)\"\n >\n {{ day.day }}\n </td>\n </tr>\n </tbody>\n </table>\n </main>\n </div>\n</div>\n" }]
109
129
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { options: [{
110
130
  type: Input
111
131
  }], value: [{
@@ -114,9 +134,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
114
134
  type: Input
115
135
  }], label: [{
116
136
  type: Input
117
- }], valid: [{
118
- type: Input
119
- }], invalid: [{
137
+ }], isValid: [{
120
138
  type: Input
121
139
  }], valueChange: [{
122
140
  type: Output
@@ -129,5 +147,40 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
129
147
  }], datepickerElRef: [{
130
148
  type: ViewChild,
131
149
  args: ['datepickerElRef']
150
+ }], datepickerTriggerElRef: [{
151
+ type: ViewChild,
152
+ args: ['datepickerTriggerElRef']
132
153
  }] } });
133
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9kYXRlcGlja2VyL2RhdGVwaWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy9saWIvZGF0ZXBpY2tlci9kYXRlcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUVULEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULFlBQVksRUFDWixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ3hFLE9BQU8sRUFPTCxnQkFBZ0IsRUFHaEIsTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEdBRVQsTUFBTSxtQkFBbUIsQ0FBQTs7OztBQWMxQixNQUFNLE9BQU8sc0JBQXNCO0lBMkRqQyxZQUFvQixJQUF1QjtRQUF2QixTQUFJLEdBQUosSUFBSSxDQUFtQjtRQTlCbEMsT0FBRSxHQUFZLFFBQVEsRUFBRSxDQUFBO1FBSWQsZ0JBQVcsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQTtRQW1CbkUsWUFBTyxHQUEwQixNQUFNLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDbkQsVUFBSyxHQUEwQixLQUFLLENBQUMsRUFBRSxDQUFDLENBQUE7UUEwQnhDLGVBQVUsR0FBRyxDQUFDLEtBQWEsRUFBRSxNQUE4QixFQUFVLEVBQUU7WUFDckUsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFBO1FBQ25CLENBQUMsQ0FBQTtRQVVELGFBQVEsR0FBRyxDQUNULElBQWdDLEVBQ2hDLEtBQWtDLEVBQ2xDLEVBQUU7WUFDRixJQUFJLElBQUksQ0FBQyxFQUFFLElBQUksS0FBSyxFQUFFO2dCQUNwQixJQUFJ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Q0QsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQTtTQUMxQjthQUFNO1lBQ0wsTUFBTSxpQ0FBaUMsQ0FBQTtTQUN4QztJQUNILENBQUM7O21IQXJJVSxzQkFBc0I7dUdBQXRCLHNCQUFzQixnTUFUdEI7UUFDVDtZQUNFLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsV0FBVyxFQUFFLHNCQUFzQjtZQUNuQyxLQUFLLEVBQUUsSUFBSTtTQUNaO0tBQ0Ysa1dDckNILGtzR0E4R0E7MkZEdEVhLHNCQUFzQjtrQkFabEMsU0FBUzsrQkFDRSxnQkFBZ0IsYUFFZjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLHdCQUF3Qjs0QkFDbkMsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0YsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU07d0dBYTNDLE9BQU87c0JBRFYsS0FBSztnQkFXRixLQUFLO3NCQURSLEtBQUs7Z0JBU0csRUFBRTtzQkFBVixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNhLFdBQVc7c0JBQTdCLE1BQU07Z0JBQ29DLHFCQUFxQjtzQkFBL0QsU0FBUzt1QkFBQyx1QkFBdUI7Z0JBR0UsY0FBYztzQkFBakQsU0FBUzt1QkFBQyxnQkFBZ0I7Z0JBR1UsZUFBZTtzQkFBbkQsU0FBUzt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG4gIEV2ZW50RW1pdHRlcixcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3JtcydcbmltcG9ydCB7XG4gIEFic3RyYWN0RHJvcGRvd24sXG4gIERyb3Bkb3duSGFuZGxlcixcbiAgRXh0ZW5kZWREcm9wZG93bk9wdGlvbixcbiAgRWxlbWVudFByb3BzLFxuICBEYXRlcGlja2VyRGF0YSxcbiAgRGF0ZXBpY2tlcixcbiAgY3JlYXRlRGF0ZXBpY2tlcixcbiAgRGF0ZXBpY2tlclN0YXRlLFxuICBEcm9wZG93bk9wdGlvbixcbiAgbW9udGhzLFxuICB5ZWFycyxcbiAgcmFuZG9tSWQsXG4gIERhdGVwaWNrZXJPcHRpb25zLFxufSBmcm9tICdAc2ViZ3JvdXAvZXh0cmFjdCdcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmdnLWRhdGVwaWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJ2RhdGVwaWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBOZ2dEYXRlcGlja2VyQ29tcG9uZW50LFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE5nZ0RhdGVwaWNrZXJDb21wb25lbnRcbiAgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdFxue1xuICBnZXQgbW9udGhzKCk6IEFycmF5PERyb3Bkb3duT3B0aW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuX21vbnRoc1xuICB9XG5cbiAgc2V0IG1vbnRocyh2YWx1ZTogQXJyYXk8RHJvcGRvd25PcHRpb24+KSB7XG4gICAgdGhpcy5fbW9udGhzID0gdmFsdWVcbiAgfVxuICBASW5wdXQoKVxuICBnZXQgb3B0aW9ucygpOiBEYXRlcGlja2VyT3B0aW9ucyB7XG4gICAgcmV0dXJuIDxEYXRlcGlja2VyT3B0aW9ucz50aGlzLl9vcHRpb25zXG4gIH1cbiAgc2V0IG9wdGlvbnModmFsdWU6IERhdGVwaWNrZXJPcHRpb25zKSB7XG4gICAgdGhpcy5fb3B0aW9ucyA9IHZhbHVlXG4gICAgaWYgKHZhbHVlLmxvY2FsZSkge1xuICAgICAgdGhpcy5tb250aHMgPSBtb250aHMoeyBsb2NhbGU6IHRoaXMub3B0aW9ucz8ubG9jYWxlIH0pXG4gICAgfVxuICB9XG4gIEBJbnB1dCgpXG4gIGdldCB2YWx1ZSgpOiBzdHJpbmcgfCBEYXRlIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWVcbiAgfVxuICBzZXQgdmFsdWUobmV3VmFsdWU6IHN0cmluZyB8IERhdGUgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAobmV3VmFsdWUgIT09IHRoaXMuX3ZhbHVlKSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IG5ld1ZhbHVlXG4gICAgfVxuICB9XG4gIEBJbnB1dCgpIGlkPzogc3RyaW5nID0gcmFuZG9tSWQoKVxuICBASW5wdXQoKSBsYWJlbD86IHN0cmluZ1xuICBASW5wdXQoKSB2YWxpZD86IGJvb2xlYW5cbiAgQElucHV0KCkgaW52YWxpZD86IGJvb2xlYW5cbiAgQE91dHB1dCgpIHJlYWRvbmx5IHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpXG4gIEBWaWV3Q2hpbGQoJ2RhdGVwaWNrZXJEaWFsb2dFbFJlZicpIHB1YmxpYyBkYXRlcGlja2VyRGlhbG9nRWxSZWY6XG4gICAgfCBFbGVtZW50UmVmPEhUTUxFbGVtZW50PlxuICAgIHwgdW5kZWZpbmVkXG4gIEBWaWV3Q2hpbGQoJ2RhdGVJbnB1dEVsUmVmJykgcHVibGljIGRhdGVJbnB1dEVsUmVmOlxuICAgIHwgRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PlxuICAgIHwgdW5kZWZpbmVkXG4gIEBWaWV3Q2hpbGQoJ2RhdGVwaWNrZXJFbFJlZicpIHB1YmxpYyBkYXRlcGlja2VyRWxSZWY6XG4gICAgfCBFbGVtZW50UmVmPEhUTUxFbGVtZW50PlxuICAgIHwgdW5kZWZpbmVkXG5cbiAgb25DaGFuZ2VGbj86ICh2YWx1ZTogYW55KSA9PiB2b2lkXG4gIG9uVG91Y2hlZEZuPzogYW55XG5cbiAgZHJvcGRvd24/OiBBYnN0cmFjdERyb3Bkb3duXG4gIGhhbmRsZXI/OiBEcm9wZG93bkhhbmRsZXJcbiAgdG9nZ2xlcj86IFBhcnRpYWw8RWxlbWVudFByb3BzPlxuICBsaXN0Ym94PzogUGFydGlhbDxFbGVtZW50UHJvcHM+XG4gIF92YWx1ZTogc3RyaW5nIHwgRGF0ZSB8IHVuZGVmaW5lZFxuICBwcml2YXRlIF9tb250aHM6IEFycmF5PERyb3Bkb3duT3B0aW9uPiA9IG1vbnRocyh7fSlcbiAgeWVhcnM6IEFycmF5PERyb3Bkb3duT3B0aW9uPiA9IHllYXJzKHt9KVxuICBwcml2YXRlIF9vcHRpb25zPzogRGF0ZXBpY2tlck9wdGlvbnNcblxuICBkcDogRGF0ZXBpY2tlciB8IHVuZGVmaW5lZFxuICBwcml2YXRlIF9kYXRhOiBEYXRlcGlja2VyRGF0YSB8IHVuZGVmaW5lZFxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlXG5cbiAgICAvLyBXaGVuIGJpbmRpbmcgdXNpbmcgbmdNb2RlbCB3ZSBuZWVkIHRvIHNldCBpbml0aWFsIHNlbGVjdCBkYXRlXG4gICAgLy8gb25jZSB3ZSBnZXQgaW5pdGlhbCB2YWx1ZSBhcyBpdCdzIG5vdCBhdmFpbGFibGUgd2hlbiBjb21wb25lbnQgaXMgY3JlYXRlZFxuICAgIGlmICh2YWx1ZSAmJiB0aGlzLmRwICYmICF0aGlzLmRhdGE/LnNlbGVjdGVkRGF0ZSkge1xuICAgICAgdGhpcy5kcC5zZWxlY3QodmFsdWUpXG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZUZuID0gZm5cbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZEZuID0gZm5cbiAgfVxuXG4gIHRyYWNrQnlLZXkgPSAoaW5kZXg6IG51bWJlciwgb3B0aW9uOiBFeHRlbmRlZERyb3Bkb3duT3B0aW9uKTogc3RyaW5nID0+IHtcbiAgICByZXR1cm4gb3B0aW9uLmtleVxuICB9XG5cbiAgZ2V0IGRhdGEoKTogRGF0ZXBpY2tlckRhdGEgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9kYXRhXG4gIH1cblxuICBzZXQgZGF0YSh2YWx1ZTogRGF0ZXBpY2tlckRhdGEgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9kYXRhID0gdmFsdWVcbiAgfVxuXG4gIGxpc3RlbmVyID0gKFxuICAgIGRhdGE6IERhdGVwaWNrZXJEYXRhIHwgdW5kZWZpbmVkLFxuICAgIHN0YXRlOiBEYXRlcGlja2VyU3RhdGUgfCB1bmRlZmluZWRcbiAgKSA9PiB7XG4gICAgaWYgKHRoaXMuZHAgJiYgc3RhdGUpIHtcbiAgICAgIHRoaXMuZHAuc3RhdGUgPSB7IC4uLnN0YXRlIH1cbiAgICB9XG5cbiAgICB0aGlzLm9uVG91Y2hlZEZuICYmIHRoaXMub25Ub3VjaGVkRm4oKVxuXG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChkYXRhLnNlbGVjdGVkRGF0ZSlcbiAgICAgIHRoaXMub25DaGFuZ2VGbiAmJiB0aGlzLm9uQ2hhbmdlRm4oZGF0YS5zZWxlY3RlZERhdGUpXG4gICAgICB0aGlzLmRhdGEgPSBkYXRhXG4gICAgfVxuICB9XG4gIHRyYWNrV2VlayhpbmRleDogYW55LCB3ZWVrOiBhbnkpIHtcbiAgICByZXR1cm4gd2Vla1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIC8vIGluaXRpYWxpemUgZGF0ZXBpY2tlclxuICAgIGlmIChcbiAgICAgIHRoaXMuZGF0ZXBpY2tlckVsUmVmICYmXG4gICAgICB0aGlzLmRhdGVwaWNrZXJEaWFsb2dFbFJlZiAmJlxuICAgICAgdGhpcy5kYXRlSW5wdXRFbFJlZiAmJlxuICAgICAgIXRoaXMuZHBcbiAgICApIHtcbiAgICAgIHRoaXMuZHAgPSBjcmVhdGVEYXRlcGlja2VyKFxuICAgICAgICB0aGlzLmxpc3RlbmVyLFxuICAgICAgICB7XG4gICAgICAgICAgLi4udGhpcy5vcHRpb25zLFxuICAgICAgICAgIHNlbGVjdGVkRGF0ZTogdGhpcy52YWx1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdGhpcy5kYXRlcGlja2VyRWxSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgdGhpcy5kYXRlcGlja2VyRGlhbG9nRWxSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgdGhpcy5kYXRlSW5wdXRFbFJlZi5uYXRpdmVFbGVtZW50XG4gICAgICApXG4gICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93ICdNaXNzaW5nIG9uZSBvciBtb3JlIGVsZW1lbnRzLi4uJ1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgPGxhYmVsICpuZ0lmPVwibGFiZWxcIiBbZm9yXT1cImlkXCI+e3sgbGFiZWwgfX08L2xhYmVsPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJncm91cFwiXG4gICAgI2RhdGVwaWNrZXJFbFJlZlxuICAgIFtjbGFzcy5pcy12YWxpZF09XCJ2YWxpZFwiXG4gICAgW2NsYXNzLmlzLWludmFsaWRdPVwiaW52YWxpZFwiXG4gID5cbiAgICA8aW5wdXRcbiAgICAgIFthdHRyLmlkXT1cImlkXCJcbiAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiXG4gICAgICAgIGZvcm1JbmZvPy5pbm5lclRleHQgJiYgZm9ybUluZm8uaW5uZXJUZXh0Lmxlbmd0aCA+IDBcbiAgICAgICAgICA/IGlkICsgJ19pbmZvJ1xuICAgICAgICAgIDogbnVsbFxuICAgICAgXCJcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgIHBsYWNlaG9sZGVyPVwieXl5eS1tbS1kZFwiXG4gICAgICAjZGF0ZUlucHV0RWxSZWZcbiAgICAgIFt2YWx1ZV09XCJkYXRhPy5mb3JtYXR0ZWRTZWxlY3RlZERhdGUgfHwgJydcIlxuICAgICAgKGNoYW5nZSk9XCJkcD8uc2VsZWN0KGRhdGVJbnB1dEVsUmVmLnZhbHVlKVwiXG4gICAgLz5cbiAgICA8YnV0dG9uXG4gICAgICAjZGF0ZXBpY2tlclRyaWdnZXJFbFJlZlxuICAgICAgKGNsaWNrKT1cImRwPy50b2dnbGUoKVwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwicHJpbWFyeVwiXG4gICAgPlxuICAgICAgPGkgY2xhc3M9XCJzZy1pY29uIHNnLWljb24tY2FsZW5kYXJcIj5TZWxlY3QgZGF0ZTwvaT5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxzcGFuIGNsYXNzPVwiZm9ybS1pbmZvXCIgI2Zvcm1JbmZvIFthdHRyLmlkXT1cImlkICsgJ19pbmZvJ1wiXG4gICAgPjxuZy1jb250ZW50IHNlbGVjdD1cIltkYXRhLWZvcm0taW5mb11cIj48L25nLWNvbnRlbnRcbiAgPjwvc3Bhbj5cbjwvZGl2PlxuPCEtLSBUT0RPOiBnZXQgb3Igc2V0IGF0dHJpYnV0ZXMgZnJvbSB3aXRoaW4gZGF0ZXBpY2tlciBpbnN0YW5jZSAoZHApIC0tPlxuPGRpdlxuICAjZGF0ZXBpY2tlckRpYWxvZ0VsUmVmXG4gIGNsYXNzPVwic2ctZGF0ZVwiXG4gIFtjbGFzcy5hY3RpdmVdPVwiZHA/LnN0YXRlPy5pc0FjdGl2ZVwiXG4gIHJvbGU9XCJkaWFsb2dcIlxuICBhcmlhLW1vZGFsPVwidHJ1ZVwiXG4gIGFyaWEtbGFiZWw9XCJDaG9vc2UgRGF0ZVwiXG4+XG4gIDxoZWFkZXI+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJsaW5rXCIgKGNsaWNrKT1cImRwPy5zdWIoMSwgJ21vbnRocycpXCI+XG4gICAgICA8aSBjbGFzcz1cInNnLWljb24gc2ctaWNvbi1wcmV2aW91c1wiPlByZXZpb3VzIG1vbnRoPC9pPlxuICAgIDwvYnV0dG9uPlxuICAgIDxuZ2ctZHJvcGRvd25cbiAgICAgIFtvcHRpb25zXT1cIm1vbnRoc1wiXG4gICAgICB0ZXh0PVwiU2VsZWN0XCJcbiAgICAgIFt2YWx1ZV09XCJkYXRhPy5tb250aFwiXG4gICAgICAodmFsdWVDaGFuZ2UpPVwiZHA/LnNldE1vbnRoKCRldmVudClcIlxuICAgID48L25nZy1kcm9wZG93bj5cbiAgICA8bmdnLWRyb3Bkb3duXG4gICAgICBbb3B0aW9uc109XCJ5ZWFyc1wiXG4gICAgICB0ZXh0PVwiU2VsZWN0XCJcbiAgICAgIFt2YWx1ZV09XCJkYXRhPy55ZWFyXCJcbiAgICAgICh2YWx1ZUNoYW5nZSk9XCJkcD8uc2V0WWVhcigkZXZlbnQpXCJcbiAgICA+PC9uZ2ctZHJvcGRvd24+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJsaW5rXCIgKGNsaWNrKT1cImRwPy5hZGQoMSwgJ21vbnRocycpXCI+XG4gICAgICA8aSBjbGFzcz1cInNnLWljb24gc2ctaWNvbi1uZXh0XCI+TmV4dCBtb250aDwvaT5cbiAgICA8L2J1dHRvbj5cbiAgPC9oZWFkZXI+XG4gIDxtYWluPlxuICAgIDx0YWJsZSByb2xlPVwiZ3JpZFwiPlxuICAgICAgPHRoZWFkPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRoXG4gICAgICAgICAgICBzY29wZT1cImNvbFwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgaGVhZGVyIG9mIGRhdGE/LmNhbGVuZGFyPy5oZWFkZXJzXCJcbiAgICAgICAgICAgIFthYmJyXT1cImhlYWRlci5hYmJyXCJcbiAgICAgICAgICAgIFtjbGFzcy5zZy13ZWVrLWhlYWRlcl09XCJoZWFkZXIudHlwZSA9PT0gJ3dlZWsnXCJcbiAgICAgICAgICAgIFtjbGFzcy5zZy1kYXktaGVhZGVyXT1cImhlYWRlci50eXBlID09PSAnZGF5J1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgaGVhZGVyLmRpc3BsYXlUZXh0IH19XG4gICAgICAgICAgPC90aD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGhlYWQ+XG4gICAgICA8dGJvZHk+XG4gICAgICAgIDx0clxuICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgbGV0IHdlZWsgb2YgZGF0YT8uY2FsZW5kYXI/LmNhbGVuZGFyR3JpZDtcbiAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrV2VlaztcbiAgICAgICAgICAgIGxldCBpID0gaW5kZXhcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgPHRoXG4gICAgICAgICAgICAqbmdJZj1cImRhdGE/LmNhbGVuZGFyPy53ZWVrTnVtYmVycyBhcyB3ZWVrTnVtYmVyc1wiXG4gICAgICAgICAgICBjbGFzcz1cInNnLXdlZWstbnVtYmVyXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyB3ZWVrTnVtYmVyc1tpXSB9fVxuICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgPHRkXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF5IG9mIHdlZWtcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1kYXRlXT1cImRheS5mb3JtYXR0ZWREYXRlXCJcbiAgICAgICAgICAgIFthdHRyLnJvbGVdPVwiZGF5LnNlbGVjdGVkID8gJ2dyaWRjZWxsJyA6IG51bGxcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJkYXkuc2VsZWN0ZWQgPyB0cnVlIDogbnVsbFwiXG4gICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiIWRheS5jdXJyZW50TW9udGhcIlxuICAgICAgICAgICAgW2NsYXNzLnNnLWRhdGUtdG9kYXldPVwiZGF5LnRvZGF5XCJcbiAgICAgICAgICAgIFt0aXRsZV09XCJkYXkudG9kYXkgPyAnVG9kYXknIDogJydcIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZGF5LmN1cnJlbnRNb250aCAmJiBkcD8uc2VsZWN0KGRheS5kYXRlKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgZGF5LmRheSB9fVxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICA8L3Rib2R5PlxuICAgIDwvdGFibGU+XG4gIDwvbWFpbj5cbjwvZGl2PlxuIl19
154
+ export function dateValidator(dates) {
155
+ return (control) => {
156
+ const value = control.value;
157
+ if (!value) {
158
+ return null;
159
+ }
160
+ const newDate = new Date(value);
161
+ const isValidDate = !isNaN(newDate.getTime());
162
+ if (!isValidDate) {
163
+ return { validDate: true };
164
+ }
165
+ const validMinDate = dates?.min ? newDate >= startOfDay(dates.min) : true;
166
+ const validMaxDate = dates?.max ? newDate <= endOfDay(dates.max) : true;
167
+ if (!validMinDate && dates?.min) {
168
+ return {
169
+ validDate: {
170
+ minDate: startOfDay(dates.min),
171
+ actualDate: newDate,
172
+ },
173
+ };
174
+ }
175
+ if (!validMaxDate && dates?.max) {
176
+ return {
177
+ validDate: {
178
+ maxDate: endOfDay(dates.max),
179
+ actualDate: newDate,
180
+ },
181
+ };
182
+ }
183
+ return null;
184
+ };
185
+ }
186
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9kYXRlcGlja2VyL2RhdGVwaWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy9saWIvZGF0ZXBpY2tlci9kYXRlcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxZQUFZLEVBQ1osaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFHTCxpQkFBaUIsR0FHbEIsTUFBTSxnQkFBZ0IsQ0FBQTtBQUN2QixPQUFPLEVBTUwsZ0JBQWdCLEVBR2hCLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxHQUVULE1BQU0sbUJBQW1CLENBQUE7QUFDMUIsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUE7Ozs7QUFjL0MsTUFBTSxPQUFPLHNCQUFzQjtJQXdEakMsWUFBb0IsSUFBdUI7UUFBdkIsU0FBSSxHQUFKLElBQUksQ0FBbUI7UUEzQmxDLE9BQUUsR0FBWSxRQUFRLEVBQUUsQ0FBQTtRQUV4QixZQUFPLEdBQW1CLElBQUksQ0FBQTtRQUNwQixnQkFBVyxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFBO1FBaUJuRSxZQUFPLEdBQTBCLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQThDbkQsYUFBUSxHQUFHLENBQ1QsSUFBZ0MsRUFDaEMsS0FBa0MsRUFDbEMsRUFBRTtZQUNGLElBQUksSUFBSSxDQUFDLEVBQUUsSUFBSSxLQUFLLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxHQUFHLEVBQUUsR0FBRyxLQUFLLEVBQUUs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QTtRQUN6RSxNQUFNLFlBQVksR0FBRyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO1FBRXZFLElBQUksQ0FBQyxZQUFZLElBQUksS0FBSyxFQUFFLEdBQUcsRUFBRTtZQUMvQixPQUFPO2dCQUNMLFNBQVMsRUFBRTtvQkFDVCxPQUFPLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7b0JBQzlCLFVBQVUsRUFBRSxPQUFPO2lCQUNwQjthQUNGLENBQUE7U0FDRjtRQUNELElBQUksQ0FBQyxZQUFZLElBQUksS0FBSyxFQUFFLEdBQUcsRUFBRTtZQUMvQixPQUFPO2dCQUNMLFNBQVMsRUFBRTtvQkFDVCxPQUFPLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7b0JBQzVCLFVBQVUsRUFBRSxPQUFPO2lCQUNwQjthQUNGLENBQUE7U0FDRjtRQUVELE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQyxDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbiAgRXZlbnRFbWl0dGVyLFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3JGbixcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnXG5pbXBvcnQge1xuICBBYnN0cmFjdERyb3Bkb3duLFxuICBEcm9wZG93bkhhbmRsZXIsXG4gIEVsZW1lbnRQcm9wcyxcbiAgRGF0ZXBpY2tlckRhdGEsXG4gIERhdGVwaWNrZXIsXG4gIGNyZWF0ZURhdGVwaWNrZXIsXG4gIERhdGVwaWNrZXJTdGF0ZSxcbiAgRHJvcGRvd25PcHRpb24sXG4gIG1vbnRocyxcbiAgeWVhcnMsXG4gIHJhbmRvbUlkLFxuICBEYXRlcGlja2VyT3B0aW9ucyxcbn0gZnJvbSAnQHNlYmdyb3VwL2V4dHJhY3QnXG5pbXBvcnQgeyBlbmRPZkRheSwgc3RhcnRPZkRheSB9IGZyb20gJ2RhdGUtZm5zJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ2ctZGF0ZXBpY2tlcicsXG4gIHRlbXBsYXRlVXJsOiAnZGF0ZXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IE5nZ0RhdGVwaWNrZXJDb21wb25lbnQsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTmdnRGF0ZXBpY2tlckNvbXBvbmVudFxuICBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlclZpZXdJbml0XG57XG4gIGdldCBtb250aHMoKTogQXJyYXk8RHJvcGRvd25PcHRpb24+IHtcbiAgICByZXR1cm4gdGhpcy5fbW9udGhzXG4gIH1cblxuICBzZXQgbW9udGhzKHZhbHVlOiBBcnJheTxEcm9wZG93bk9wdGlvbj4pIHtcbiAgICB0aGlzLl9tb250aHMgPSB2YWx1ZVxuICB9XG4gIEBJbnB1dCgpXG4gIGdldCBvcHRpb25zKCk6IERhdGVwaWNrZXJPcHRpb25zIHtcbiAgICByZXR1cm4gPERhdGVwaWNrZXJPcHRpb25zPnRoaXMuX29wdGlvbnNcbiAgfVxuICBzZXQgb3B0aW9ucyh2YWx1ZTogRGF0ZXBpY2tlck9wdGlvbnMpIHtcbiAgICB0aGlzLl9vcHRpb25zID0gdmFsdWVcbiAgICBpZiAodmFsdWUubG9jYWxlKSB7XG4gICAgICB0aGlzLm1vbnRocyA9IG1vbnRocyh7IGxvY2FsZTogdGhpcy5vcHRpb25zPy5sb2NhbGUgfSlcbiAgICB9XG4gIH1cbiAgQElucHV0KClcbiAgZ2V0IHZhbHVlKCk6IHN0cmluZyB8IERhdGUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZVxuICB9XG4gIHNldCB2YWx1ZShuZXdWYWx1ZTogc3RyaW5nIHwgRGF0ZSB8IHVuZGVmaW5lZCkge1xuICAgIGlmIChuZXdWYWx1ZSAhPT0gdGhpcy5fdmFsdWUpIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gbmV3VmFsdWVcbiAgICB9XG4gIH1cbiAgQElucHV0KCkgaWQ/OiBzdHJpbmcgPSByYW5kb21JZCgpXG4gIEBJbnB1dCgpIGxhYmVsPzogc3RyaW5nXG4gIEBJbnB1dCgpIGlzVmFsaWQ6IGJvb2xlYW4gfCBudWxsID0gbnVsbFxuICBAT3V0cHV0KCkgcmVhZG9ubHkgdmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KClcbiAgQFZpZXdDaGlsZCgnZGF0ZXBpY2tlckRpYWxvZ0VsUmVmJylcbiAgcHVibGljIGRhdGVwaWNrZXJEaWFsb2dFbFJlZj86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+XG4gIEBWaWV3Q2hpbGQoJ2RhdGVJbnB1dEVsUmVmJylcbiAgcHVibGljIGRhdGVJbnB1dEVsUmVmPzogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PlxuICBAVmlld0NoaWxkKCdkYXRlcGlja2VyRWxSZWYnKSBwdWJsaWMgZGF0ZXBpY2tlckVsUmVmPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD5cbiAgQFZpZXdDaGlsZCgnZGF0ZXBpY2tlclRyaWdnZXJFbFJlZicpXG4gIHB1YmxpYyBkYXRlcGlja2VyVHJpZ2dlckVsUmVmPzogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD5cblxuICBvbkNoYW5nZUZuPzogKHZhbHVlOiBhbnkpID0+IHZvaWRcbiAgb25Ub3VjaGVkRm4/OiBhbnlcblxuICBkcm9wZG93bj86IEFic3RyYWN0RHJvcGRvd25cbiAgaGFuZGxlcj86IERyb3Bkb3duSGFuZGxlclxuICB0b2dnbGVyPzogUGFydGlhbDxFbGVtZW50UHJvcHM+XG4gIGxpc3Rib3g/OiBQYXJ0aWFsPEVsZW1lbnRQcm9wcz5cbiAgX3ZhbHVlOiBzdHJpbmcgfCBEYXRlIHwgdW5kZWZpbmVkXG4gIHByaXZhdGUgX21vbnRoczogQXJyYXk8RHJvcGRvd25PcHRpb24+ID0gbW9udGhzKHt9KVxuICB5ZWFycz86IEFycmF5PERyb3Bkb3duT3B0aW9uPlxuICBwcml2YXRlIF9vcHRpb25zPzogRGF0ZXBpY2tlck9wdGlvbnNcblxuICBkcDogRGF0ZXBpY2tlciB8IHVuZGVmaW5lZFxuICBwcml2YXRlIF9kYXRhOiBEYXRlcGlja2VyRGF0YSB8IHVuZGVmaW5lZFxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlXG5cbiAgICAvLyBXaGVuIGJpbmRpbmcgdXNpbmcgbmdNb2RlbCB3ZSBuZWVkIHRvIHNldCBpbml0aWFsIHNlbGVjdCBkYXRlXG4gICAgLy8gb25jZSB3ZSBnZXQgaW5pdGlhbCB2YWx1ZSBhcyBpdCdzIG5vdCBhdmFpbGFibGUgd2hlbiBjb21wb25lbnQgaXMgY3JlYXRlZFxuICAgIGlmICh2YWx1ZSAmJiB0aGlzLmRwICYmICF0aGlzLmRhdGE/LnNlbGVjdGVkRGF0ZSkge1xuICAgICAgdGhpcy5kcC5zZWxlY3QodmFsdWUpXG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZUZuID0gZm5cbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZEZuID0gZm5cbiAgfVxuXG4gIGdldCBkYXRhKCk6IERhdGVwaWNrZXJEYXRhIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YVxuICB9XG5cbiAgc2V0IGRhdGEodmFsdWU6IERhdGVwaWNrZXJEYXRhIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fZGF0YSA9IHZhbHVlXG4gIH1cblxuICBvbkRhdGVDaGFuZ2UodmFsdWU6IHN0cmluZykge1xuICAgIGNvbnN0IG5ld0RhdGUgPSBuZXcgRGF0ZSh2YWx1ZSlcbiAgICAvLyBPbmx5IHBhc3MgdmFsaWQgZGF0ZSB0byBkYXRlIHBpY2tlclxuICAgIGlmICghaXNOYU4obmV3RGF0ZS5nZXRUaW1lKCkpKSB7XG4gICAgICB0aGlzLmRwPy5zZWxlY3QodmFsdWUpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZSlcbiAgICAgIHRoaXMub25DaGFuZ2VGbiAmJiB0aGlzLm9uQ2hhbmdlRm4odmFsdWUpXG4gICAgfVxuICB9XG5cbiAgbGlzdGVuZXIgPSAoXG4gICAgZGF0YTogRGF0ZXBpY2tlckRhdGEgfCB1bmRlZmluZWQsXG4gICAgc3RhdGU6IERhdGVwaWNrZXJTdGF0ZSB8IHVuZGVmaW5lZFxuICApID0+IHtcbiAgICBpZiAodGhpcy5kcCAmJiBzdGF0ZSkge1xuICAgICAgdGhpcy5kcC5zdGF0ZSA9IHsgLi4uc3RhdGUgfVxuICAgICAgdGhpcy55ZWFycyA9IHllYXJzKHtcbiAgICAgICAgZnJvbTogdGhpcy5kcC5zdGF0ZT8ubWluRGF0ZT8uZ2V0RnVsbFllYXIoKSxcbiAgICAgICAgdG86IHRoaXMuZHAuc3RhdGU/Lm1heERhdGU/LmdldEZ1bGxZZWFyKCksXG4gICAgICB9KVxuICAgIH1cblxuICAgIHRoaXMub25Ub3VjaGVkRm4gJiYgdGhpcy5vblRvdWNoZWRGbigpXG5cbiAgICBpZiAoZGF0YSkge1xuICAgICAgLy8gb25seSBlbWl0IGNoYW5nZSBldmVudCBpZiBkYXRlIGhhcyBjaGFuZ2VkXG4gICAgICBpZiAodGhpcy5kYXRhPy5zZWxlY3RlZERhdGUgIT09IGRhdGEuc2VsZWN0ZWREYXRlKSB7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChkYXRhLnNlbGVjdGVkRGF0ZSlcbiAgICAgICAgdGhpcy5vbkNoYW5nZUZuICYmIHRoaXMub25DaGFuZ2VGbihkYXRhLnNlbGVjdGVkRGF0ZSlcbiAgICAgIH1cbiAgICAgIHRoaXMuZGF0YSA9IGRhdGFcbiAgICB9XG5cbiAgICBpZiAoZGF0YSB8fCBzdGF0ZSkge1xuICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpXG4gICAgfVxuICB9XG4gIHRyYWNrV2VlayhpbmRleDogYW55LCB3ZWVrOiBhbnkpIHtcbiAgICByZXR1cm4gd2Vla1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIC8vIGluaXRpYWxpemUgZGF0ZXBpY2tlclxuICAgIGlmIChcbiAgICAgIHRoaXMuZGF0ZXBpY2tlckVsUmVmICYmXG4gICAgICB0aGlzLmRhdGVwaWNrZXJEaWFsb2dFbFJlZiAmJlxuICAgICAgdGhpcy5kYXRlSW5wdXRFbFJlZiAmJlxuICAgICAgdGhpcy5kYXRlcGlja2VyVHJpZ2dlckVsUmVmICYmXG4gICAgICAhdGhpcy5kcFxuICAgICkge1xuICAgICAgdGhpcy5kcCA9IGNyZWF0ZURhdGVwaWNrZXIoXG4gICAgICAgIHRoaXMubGlzdGVuZXIsXG4gICAgICAgIHtcbiAgICAgICAgICAuLi50aGlzLm9wdGlvbnMsXG4gICAgICAgICAgc2VsZWN0ZWREYXRlOiB0aGlzLnZhbHVlLFxuICAgICAgICB9LFxuICAgICAgICB0aGlzLmRhdGVwaWNrZXJFbFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICB0aGlzLmRhdGVwaWNrZXJEaWFsb2dFbFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICB0aGlzLmRhdGVJbnB1dEVsUmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgIHRoaXMuZGF0ZXBpY2tlclRyaWdnZXJFbFJlZi5uYXRpdmVFbGVtZW50XG4gICAgICApXG4gICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93ICdNaXNzaW5nIG9uZSBvciBtb3JlIGVsZW1lbnRzLi4uJ1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZVZhbGlkYXRvcihkYXRlcz86IHsgbWluPzogRGF0ZTsgbWF4PzogRGF0ZSB9KTogVmFsaWRhdG9yRm4ge1xuICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICBjb25zdCB2YWx1ZSA9IGNvbnRyb2wudmFsdWVcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICBjb25zdCBuZXdEYXRlID0gbmV3IERhdGUodmFsdWUpXG4gICAgY29uc3QgaXNWYWxpZERhdGUgPSAhaXNOYU4obmV3RGF0ZS5nZXRUaW1lKCkpXG4gICAgaWYgKCFpc1ZhbGlkRGF0ZSkge1xuICAgICAgcmV0dXJuIHsgdmFsaWREYXRlOiB0cnVlIH1cbiAgICB9XG5cbiAgICBjb25zdCB2YWxpZE1pbkRhdGUgPSBkYXRlcz8ubWluID8gbmV3RGF0ZSA+PSBzdGFydE9mRGF5KGRhdGVzLm1pbikgOiB0cnVlXG4gICAgY29uc3QgdmFsaWRNYXhEYXRlID0gZGF0ZXM/Lm1heCA/IG5ld0RhdGUgPD0gZW5kT2ZEYXkoZGF0ZXMubWF4KSA6IHRydWVcblxuICAgIGlmICghdmFsaWRNaW5EYXRlICYmIGRhdGVzPy5taW4pIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbGlkRGF0ZToge1xuICAgICAgICAgIG1pbkRhdGU6IHN0YXJ0T2ZEYXkoZGF0ZXMubWluKSxcbiAgICAgICAgICBhY3R1YWxEYXRlOiBuZXdEYXRlLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIXZhbGlkTWF4RGF0ZSAmJiBkYXRlcz8ubWF4KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB2YWxpZERhdGU6IHtcbiAgICAgICAgICBtYXhEYXRlOiBlbmRPZkRheShkYXRlcy5tYXgpLFxuICAgICAgICAgIGFjdHVhbERhdGU6IG5ld0RhdGUsXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGxcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgPGxhYmVsICpuZ0lmPVwibGFiZWxcIiBbZm9yXT1cImlkXCI+e3sgbGFiZWwgfX08L2xhYmVsPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJncm91cFwiXG4gICAgI2RhdGVwaWNrZXJFbFJlZlxuICAgIFtjbGFzcy5pcy12YWxpZF09XCJpc1ZhbGlkXCJcbiAgICBbY2xhc3MuaXMtaW52YWxpZF09XCJpc1ZhbGlkID09PSBmYWxzZVwiXG4gID5cbiAgICA8aW5wdXRcbiAgICAgIFthdHRyLmlkXT1cImlkXCJcbiAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiXG4gICAgICAgIGZvcm1JbmZvPy5pbm5lclRleHQgJiYgZm9ybUluZm8uaW5uZXJUZXh0Lmxlbmd0aCA+IDBcbiAgICAgICAgICA/IGlkICsgJ19pbmZvJ1xuICAgICAgICAgIDogbnVsbFxuICAgICAgXCJcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgIHBsYWNlaG9sZGVyPVwieXl5eS1tbS1kZFwiXG4gICAgICAjZGF0ZUlucHV0RWxSZWZcbiAgICAgIFt2YWx1ZV09XCJkYXRhPy5mb3JtYXR0ZWRTZWxlY3RlZERhdGUgfHwgJydcIlxuICAgICAgKGNoYW5nZSk9XCJvbkRhdGVDaGFuZ2UoZGF0ZUlucHV0RWxSZWYudmFsdWUpXCJcbiAgICAvPlxuICAgIDxidXR0b25cbiAgICAgICNkYXRlcGlja2VyVHJpZ2dlckVsUmVmXG4gICAgICAoY2xpY2spPVwiZHA/LnRvZ2dsZSgpXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgY2xhc3M9XCJwcmltYXJ5XCJcbiAgICA+XG4gICAgICA8aSBjbGFzcz1cInNnLWljb24gc2ctaWNvbi1jYWxlbmRhclwiPlNlbGVjdCBkYXRlPC9pPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPHNwYW4gY2xhc3M9XCJmb3JtLWluZm9cIiAjZm9ybUluZm8gW2F0dHIuaWRdPVwiaWQgKyAnX2luZm8nXCJcbiAgICA+PG5nLWNvbnRlbnQgc2VsZWN0PVwiW2RhdGEtZm9ybS1pbmZvXVwiPjwvbmctY29udGVudFxuICA+PC9zcGFuPlxuPC9kaXY+XG48IS0tIFRPRE86IGdldCBvciBzZXQgYXR0cmlidXRlcyBmcm9tIHdpdGhpbiBkYXRlcGlja2VyIGluc3RhbmNlIChkcCkgLS0+XG48ZGl2XG4gICNkYXRlcGlja2VyRGlhbG9nRWxSZWZcbiAgY2xhc3M9XCJwb3BvdmVyIHBvcG92ZXItZGF0ZXBpY2tlclwiXG4gIFtjbGFzcy5hY3RpdmVdPVwiZHA/LnN0YXRlPy5pc0FjdGl2ZVwiXG4gIHJvbGU9XCJkaWFsb2dcIlxuICBhcmlhLW1vZGFsPVwidHJ1ZVwiXG4gIGFyaWEtbGFiZWw9XCJDaG9vc2UgRGF0ZVwiXG4+XG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY2xvc2VcIiAoY2xpY2spPVwiZHA/LmNsb3NlKClcIj48aT48L2k+Q2xvc2U8L2J1dHRvbj5cbiAgPGRpdiBjbGFzcz1cInNnLWRhdGVcIj5cbiAgICA8aGVhZGVyPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJsaW5rXCIgKGNsaWNrKT1cImRwPy5zdWIoMSwgJ21vbnRocycpXCI+XG4gICAgICAgIDxpIGNsYXNzPVwic2ctaWNvbiBzZy1pY29uLXByZXZpb3VzXCI+UHJldmlvdXMgbW9udGg8L2k+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxuZ2ctZHJvcGRvd25cbiAgICAgICAgW29wdGlvbnNdPVwibW9udGhzXCJcbiAgICAgICAgZGlzcGxheT1cImtleVwiXG4gICAgICAgIHRleHQ9XCJTZWxlY3RcIlxuICAgICAgICBbdmFsdWVdPVwiZGF0YT8ubW9udGhcIlxuICAgICAgICAodmFsdWVDaGFuZ2UpPVwiZHA/LnNldE1vbnRoKCRldmVudClcIlxuICAgICAgPjwvbmdnLWRyb3Bkb3duPlxuICAgICAgPG5nZy1kcm9wZG93blxuICAgICAgICAqbmdJZj1cInllYXJzXCJcbiAgICAgICAgW29wdGlvbnNdPVwieWVhcnNcIlxuICAgICAgICBkaXNwbGF5PVwia2V5XCJcbiAgICAgICAgdGV4dD1cIlNlbGVjdFwiXG4gICAgICAgIFt2YWx1ZV09XCJkYXRhPy55ZWFyXCJcbiAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImRwPy5zZXRZZWFyKCRldmVudClcIlxuICAgICAgPjwvbmdnLWRyb3Bkb3duPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJsaW5rXCIgKGNsaWNrKT1cImRwPy5hZGQoMSwgJ21vbnRocycpXCI+XG4gICAgICAgIDxpIGNsYXNzPVwic2ctaWNvbiBzZy1pY29uLW5leHRcIj5OZXh0IG1vbnRoPC9pPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9oZWFkZXI+XG4gICAgPG1haW4+XG4gICAgICA8dGFibGUgcm9sZT1cImdyaWRcIj5cbiAgICAgICAgPHRoZWFkPlxuICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgIDx0aFxuICAgICAgICAgICAgICBzY29wZT1cImNvbFwiXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBoZWFkZXIgb2YgZGF0YT8uY2FsZW5kYXI/LmhlYWRlcnNcIlxuICAgICAgICAgICAgICBbYWJicl09XCJoZWFkZXIuYWJiclwiXG4gICAgICAgICAgICAgIFtjbGFzcy5zZy13ZWVrLWhlYWRlcl09XCJoZWFkZXIudHlwZSA9PT0gJ3dlZWsnXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnNnLWRheS1oZWFkZXJdPVwiaGVhZGVyLnR5cGUgPT09ICdkYXknXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgaGVhZGVyLmRpc3BsYXlUZXh0IH19XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvdGhlYWQ+XG4gICAgICAgIDx0Ym9keT5cbiAgICAgICAgICA8dHJcbiAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICBsZXQgd2VlayBvZiBkYXRhPy5jYWxlbmRhcj8uY2FsZW5kYXJHcmlkO1xuICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja1dlZWs7XG4gICAgICAgICAgICAgIGxldCBpID0gaW5kZXhcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHRoXG4gICAgICAgICAgICAgICpuZ0lmPVwiZGF0YT8uY2FsZW5kYXI/LndlZWtOdW1iZXJzIGFzIHdlZWtOdW1iZXJzXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzZy13ZWVrLW51bWJlclwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IHdlZWtOdW1iZXJzW2ldIH19XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXkgb2Ygd2Vla1wiXG4gICAgICAgICAgICAgIFthdHRyLmRhdGEtZGF0ZV09XCJkYXkuZm9ybWF0dGVkRGF0ZVwiXG4gICAgICAgICAgICAgIFthdHRyLnJvbGVdPVwiZGF5LnNlbGVjdGVkID8gJ2dyaWRjZWxsJyA6IG51bGxcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cIlxuICAgICAgICAgICAgICAgIGRheS5zZWxlY3RlZCAmJiAhZGF0YT8uaGlnaGxpZ2h0ZWREYXRlID8gdHJ1ZSA6IG51bGxcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImRheS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5zZy1kYXRlLXRvZGF5XT1cImRheS50b2RheVwiXG4gICAgICAgICAgICAgIFt0aXRsZV09XCJkYXkudG9kYXkgPyAnVG9kYXknIDogJydcIlxuICAgICAgICAgICAgICBbdGFiSW5kZXhdPVwiXG4gICAgICAgICAgICAgICAgZGF5LmhpZ2hsaWdodGVkIHx8XG4gICAgICAgICAgICAgICAgKGRheS5zZWxlY3RlZCAmJiAhZGF0YT8uaGlnaGxpZ2h0ZWREYXRlKSB8fFxuICAgICAgICAgICAgICAgIChkYXkudG9kYXkgJiYgIWRhdGE/LmhpZ2hsaWdodGVkRGF0ZSAmJiAhZGF0YT8uc2VsZWN0ZWREYXRlKVxuICAgICAgICAgICAgICAgICAgPyAwXG4gICAgICAgICAgICAgICAgICA6IC0xXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJkYXkuY3VycmVudE1vbnRoICYmIGRwPy5zZWxlY3QoZGF5LmRhdGUpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgZGF5LmRheSB9fVxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICA8L3Rib2R5PlxuICAgICAgPC90YWJsZT5cbiAgICA8L21haW4+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -5,10 +5,10 @@ import { NggDropdownModule } from '../dropdown/dropdown.module';
5
5
  import * as i0 from "@angular/core";
6
6
  export class NggDatepickerModule {
7
7
  }
8
- NggDatepickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: NggDatepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
9
- NggDatepickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: NggDatepickerModule, declarations: [NggDatepickerComponent], imports: [CommonModule, NggDropdownModule], exports: [NggDatepickerComponent] });
10
- NggDatepickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: NggDatepickerModule, imports: [[CommonModule, NggDropdownModule]] });
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: NggDatepickerModule, decorators: [{
8
+ NggDatepickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: NggDatepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
9
+ NggDatepickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: NggDatepickerModule, declarations: [NggDatepickerComponent], imports: [CommonModule, NggDropdownModule], exports: [NggDatepickerComponent] });
10
+ NggDatepickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: NggDatepickerModule, imports: [[CommonModule, NggDropdownModule]] });
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: NggDatepickerModule, decorators: [{
12
12
  type: NgModule,
13
13
  args: [{
14
14
  declarations: [NggDatepickerComponent],
@@ -0,0 +1,3 @@
1
+ export * from './datepicker.component';
2
+ export * from './datepicker.module';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9kYXRlcGlja2VyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsd0JBQXdCLENBQUE7QUFDdEMsY0FBYyxxQkFBcUIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZGF0ZXBpY2tlci5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2RhdGVwaWNrZXIubW9kdWxlJ1xuIl19
@@ -0,0 +1,16 @@
1
+ import { Directive, TemplateRef } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class NggDropdownOptionDirective {
4
+ constructor(templateRef) {
5
+ this.templateRef = templateRef;
6
+ }
7
+ }
8
+ NggDropdownOptionDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: NggDropdownOptionDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
9
+ NggDropdownOptionDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.3", type: NggDropdownOptionDirective, selector: "[nggDropdownOption]", ngImport: i0 });
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: NggDropdownOptionDirective, decorators: [{
11
+ type: Directive,
12
+ args: [{
13
+ selector: '[nggDropdownOption]',
14
+ }]
15
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tb3B0aW9uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvbGliL2Ryb3Bkb3duL2Ryb3Bkb3duLW9wdGlvbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUE7O0FBS3RELE1BQU0sT0FBTywwQkFBMEI7SUFDckMsWUFBbUIsV0FBaUM7UUFBakMsZ0JBQVcsR0FBWCxXQUFXLENBQXNCO0lBQUcsQ0FBQzs7dUhBRDdDLDBCQUEwQjsyR0FBMUIsMEJBQTBCOzJGQUExQiwwQkFBMEI7a0JBSHRDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtpQkFDaEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW25nZ0Ryb3Bkb3duT3B0aW9uXScsXG59KVxuZXhwb3J0IGNsYXNzIE5nZ0Ryb3Bkb3duT3B0aW9uRGlyZWN0aXZlIHtcbiAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjx1bmtub3duPikge31cbn1cbiJdfQ==