@sebgroup/green-angular 1.0.0-beta.8 → 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.
- package/esm2020/index.mjs +9 -5
- package/esm2020/lib/accordion/accordion-list-item.component.mjs +47 -0
- package/esm2020/lib/accordion/accordion.component.mjs +72 -0
- package/esm2020/lib/accordion/accordion.module.mjs +19 -0
- package/esm2020/lib/accordion/index.mjs +4 -0
- package/esm2020/lib/badge/badge.component.mjs +80 -0
- package/esm2020/lib/badge/badge.module.mjs +18 -0
- package/esm2020/lib/badge/index.mjs +3 -0
- package/esm2020/lib/button/button.component.mjs +26 -0
- package/esm2020/lib/button/button.module.mjs +18 -0
- package/esm2020/lib/button/index.mjs +3 -0
- package/esm2020/lib/datepicker/datepicker.component.mjs +186 -0
- package/esm2020/lib/datepicker/datepicker.module.mjs +19 -0
- package/esm2020/lib/datepicker/index.mjs +3 -0
- package/esm2020/lib/dropdown/dropdown-option.directive.mjs +16 -0
- package/esm2020/lib/dropdown/dropdown.component.mjs +90 -181
- package/esm2020/lib/dropdown/dropdown.module.mjs +8 -7
- package/esm2020/lib/dropdown/index.mjs +4 -0
- package/esm2020/lib/green-angular.module.mjs +36 -7
- package/esm2020/lib/modal/index.mjs +3 -0
- package/esm2020/lib/modal/modal.component.mjs +196 -0
- package/esm2020/lib/modal/modal.module.mjs +31 -0
- package/esm2020/lib/progress-circle/index.mjs +3 -0
- package/esm2020/lib/progress-circle/progress-circle.component.mjs +48 -0
- package/esm2020/lib/progress-circle/progress-circle.module.mjs +18 -0
- package/esm2020/lib/segmented-control/index.mjs +3 -0
- package/esm2020/lib/segmented-control/segmented-control.component.mjs +3 -3
- package/esm2020/lib/segmented-control/segmented-control.module.mjs +4 -4
- package/fesm2015/sebgroup-green-angular.mjs +913 -231
- package/fesm2015/sebgroup-green-angular.mjs.map +1 -1
- package/fesm2020/sebgroup-green-angular.mjs +900 -229
- package/fesm2020/sebgroup-green-angular.mjs.map +1 -1
- package/index.d.ts +8 -4
- package/lib/accordion/accordion-list-item.component.d.ts +15 -0
- package/lib/accordion/accordion.component.d.ts +16 -0
- package/lib/accordion/accordion.module.d.ts +9 -0
- package/lib/accordion/index.d.ts +3 -0
- package/lib/badge/badge.component.d.ts +25 -0
- package/lib/badge/badge.module.d.ts +8 -0
- package/lib/badge/index.d.ts +2 -0
- package/lib/button/button.component.d.ts +9 -0
- package/lib/button/button.module.d.ts +8 -0
- package/lib/button/index.d.ts +2 -0
- package/lib/datepicker/datepicker.component.d.ts +49 -0
- package/lib/datepicker/datepicker.module.d.ts +9 -0
- package/lib/datepicker/index.d.ts +2 -0
- package/lib/dropdown/dropdown-option.directive.d.ts +8 -0
- package/lib/dropdown/dropdown.component.d.ts +34 -16
- package/lib/dropdown/dropdown.module.d.ts +3 -2
- package/lib/dropdown/index.d.ts +3 -0
- package/lib/green-angular.module.d.ts +9 -3
- package/lib/modal/index.d.ts +2 -0
- package/lib/modal/modal.component.d.ts +59 -0
- package/lib/modal/modal.module.d.ts +9 -0
- package/lib/progress-circle/index.d.ts +2 -0
- package/lib/progress-circle/progress-circle.component.d.ts +15 -0
- package/lib/progress-circle/progress-circle.module.d.ts +8 -0
- package/lib/segmented-control/index.d.ts +2 -0
- package/package.json +10 -9
package/esm2020/index.mjs
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
export * from './lib/green-angular.module';
|
|
2
|
-
export * from './lib/
|
|
3
|
-
export * from './lib/
|
|
4
|
-
export * from './lib/
|
|
5
|
-
export * from './lib/
|
|
6
|
-
|
|
2
|
+
export * from './lib/accordion';
|
|
3
|
+
export * from './lib/badge';
|
|
4
|
+
export * from './lib/button';
|
|
5
|
+
export * from './lib/datepicker';
|
|
6
|
+
export * from './lib/dropdown';
|
|
7
|
+
export * from './lib/modal';
|
|
8
|
+
export * from './lib/progress-circle';
|
|
9
|
+
export * from './lib/segmented-control';
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsNEJBQTRCLENBQUE7QUFDMUMsY0FBYyxpQkFBaUIsQ0FBQTtBQUMvQixjQUFjLGFBQWEsQ0FBQTtBQUMzQixjQUFjLGNBQWMsQ0FBQTtBQUM1QixjQUFjLGtCQUFrQixDQUFBO0FBQ2hDLGNBQWMsZ0JBQWdCLENBQUE7QUFDOUIsY0FBYyxhQUFhLENBQUE7QUFDM0IsY0FBYyx1QkFBdUIsQ0FBQTtBQUNyQyxjQUFjLHlCQUF5QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvZ3JlZW4tYW5ndWxhci5tb2R1bGUnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hY2NvcmRpb24nXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYWRnZSdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2J1dHRvbidcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RhdGVwaWNrZXInXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kcm9wZG93bidcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGFsJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcHJvZ3Jlc3MtY2lyY2xlJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VnbWVudGVkLWNvbnRyb2wnXG4iXX0=
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { randomId } from '@sebgroup/extract';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
export class NggAccordionListItemComponent {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.id = randomId();
|
|
8
|
+
this.listItemHeader = '';
|
|
9
|
+
this.listItemSubHeader = '';
|
|
10
|
+
this.expandedChange = new EventEmitter();
|
|
11
|
+
this.contentHeight = "0px";
|
|
12
|
+
this.isExpanded = false;
|
|
13
|
+
}
|
|
14
|
+
shrink() {
|
|
15
|
+
this.isExpanded = false;
|
|
16
|
+
this.contentHeight = "0px";
|
|
17
|
+
}
|
|
18
|
+
expand() {
|
|
19
|
+
this.isExpanded = true;
|
|
20
|
+
this.contentHeight = "auto";
|
|
21
|
+
}
|
|
22
|
+
toggleExpanded() {
|
|
23
|
+
this.isExpanded = !this.isExpanded;
|
|
24
|
+
if (this.isExpanded) {
|
|
25
|
+
this.contentHeight = "auto";
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
this.contentHeight = "0px";
|
|
29
|
+
}
|
|
30
|
+
this.expandedChange.emit(this);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
NggAccordionListItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: NggAccordionListItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
34
|
+
NggAccordionListItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: NggAccordionListItemComponent, selector: "div[ngg-accordion-list-item]", inputs: { id: "id", listItemHeader: "listItemHeader", listItemSubHeader: "listItemSubHeader" }, outputs: { expandedChange: "expandedChange" }, ngImport: i0, template: "<ng-container data-testid=\"accordion-list-item-root\">\n <div role=\"heading\" aria-level=\"2\" [attr.id]=\"id\">\n <button data-testid=\"accordion-list-item-expander-button\" [attr.id]=\"id + '_header'\" (click)=\"toggleExpanded()\"\n tabindex=\"0\" [attr.aria-expanded]=\"this.isExpanded\" [attr.aria-controls]=\"id + '_section'\">\n <span data-testid=\"accordion-list-item-header\">{{listItemHeader}}</span>\n <span data-testid=\"accordion-list-item-subheader\">{{listItemSubHeader}}</span>\n <svg width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M18.8095 9.22817L18.1907 8.60942C18.0438 8.46255 17.8063 8.46255 17.6595 8.60942L12.0001 14.2563L6.34072 8.60942C6.19385 8.46255 5.95635 8.46255 5.80947 8.60942L5.19072 9.22817C5.04385 9.37505 5.04385 9.61255 5.19072 9.75942L11.7345 16.3032C11.8813 16.45 12.1188 16.45 12.2657 16.3032L18.8095 9.75942C18.9563 9.61255 18.9563 9.37505 18.8095 9.22817Z\"\n fill=\"#333333\" />\n </svg>\n </button>\n <div role=\"region\" [hidden]=\"!this.isExpanded\"\n [ngStyle]=\"{height: this.contentHeight}\" [id]=\"id + '_section'\" [attr.aria-labelledby]=\"id + '_header'\"\n data-testid=\"accordion-list-item-content\">\n <div>\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n</ng-container>", directives: [{ type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
|
|
35
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: NggAccordionListItemComponent, decorators: [{
|
|
36
|
+
type: Component,
|
|
37
|
+
args: [{ selector: 'div[ngg-accordion-list-item]', template: "<ng-container data-testid=\"accordion-list-item-root\">\n <div role=\"heading\" aria-level=\"2\" [attr.id]=\"id\">\n <button data-testid=\"accordion-list-item-expander-button\" [attr.id]=\"id + '_header'\" (click)=\"toggleExpanded()\"\n tabindex=\"0\" [attr.aria-expanded]=\"this.isExpanded\" [attr.aria-controls]=\"id + '_section'\">\n <span data-testid=\"accordion-list-item-header\">{{listItemHeader}}</span>\n <span data-testid=\"accordion-list-item-subheader\">{{listItemSubHeader}}</span>\n <svg width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M18.8095 9.22817L18.1907 8.60942C18.0438 8.46255 17.8063 8.46255 17.6595 8.60942L12.0001 14.2563L6.34072 8.60942C6.19385 8.46255 5.95635 8.46255 5.80947 8.60942L5.19072 9.22817C5.04385 9.37505 5.04385 9.61255 5.19072 9.75942L11.7345 16.3032C11.8813 16.45 12.1188 16.45 12.2657 16.3032L18.8095 9.75942C18.9563 9.61255 18.9563 9.37505 18.8095 9.22817Z\"\n fill=\"#333333\" />\n </svg>\n </button>\n <div role=\"region\" [hidden]=\"!this.isExpanded\"\n [ngStyle]=\"{height: this.contentHeight}\" [id]=\"id + '_section'\" [attr.aria-labelledby]=\"id + '_header'\"\n data-testid=\"accordion-list-item-content\">\n <div>\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n</ng-container>" }]
|
|
38
|
+
}], propDecorators: { id: [{
|
|
39
|
+
type: Input
|
|
40
|
+
}], listItemHeader: [{
|
|
41
|
+
type: Input
|
|
42
|
+
}], listItemSubHeader: [{
|
|
43
|
+
type: Input
|
|
44
|
+
}], expandedChange: [{
|
|
45
|
+
type: Output
|
|
46
|
+
}] } });
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLWxpc3QtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9hY2NvcmRpb24vYWNjb3JkaW9uLWxpc3QtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9hY2NvcmRpb24vYWNjb3JkaW9uLWxpc3QtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBTzdDLE1BQU0sT0FBTyw2QkFBNkI7SUFMMUM7UUFPb0IsT0FBRSxHQUFXLFFBQVEsRUFBRSxDQUFDO1FBQ3hCLG1CQUFjLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLHNCQUFpQixHQUFHLEVBQUUsQ0FBQztRQUN0QixtQkFBYyxHQUFnRCxJQUFJLFlBQVksRUFBaUMsQ0FBQztRQUUxSCxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixlQUFVLEdBQUcsS0FBSyxDQUFDO0tBd0I3QjtJQXRCVSxNQUFNO1FBQ1QsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDL0IsQ0FBQztJQUVNLE1BQU07UUFDVCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQztJQUVoQyxDQUFDO0lBRU0sY0FBYztRQUNqQixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUNuQyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDakIsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUM7U0FDL0I7YUFDSTtZQUNELElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1NBQzlCO1FBRUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsQ0FBQzs7MEhBL0JRLDZCQUE2Qjs4R0FBN0IsNkJBQTZCLG1OQ1IxQyxvK0NBb0JlOzJGRFpGLDZCQUE2QjtrQkFMekMsU0FBUzsrQkFFSSw4QkFBOEI7OEJBS3hCLEVBQUU7c0JBQWpCLEtBQUs7Z0JBQ1UsY0FBYztzQkFBN0IsS0FBSztnQkFDVSxpQkFBaUI7c0JBQWhDLEtBQUs7Z0JBQ1csY0FBYztzQkFBOUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyByYW5kb21JZCB9IGZyb20gJ0BzZWJncm91cC9leHRyYWN0JztcblxuQENvbXBvbmVudCh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ2RpdltuZ2ctYWNjb3JkaW9uLWxpc3QtaXRlbV0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9hY2NvcmRpb24tbGlzdC1pdGVtLmNvbXBvbmVudC5odG1sJywgICAgXG59KVxuZXhwb3J0IGNsYXNzIE5nZ0FjY29yZGlvbkxpc3RJdGVtQ29tcG9uZW50IHtcbiAgIFxuICAgIEBJbnB1dCgpIHB1YmxpYyBpZDogc3RyaW5nID0gcmFuZG9tSWQoKTtcbiAgICBASW5wdXQoKSBwdWJsaWMgbGlzdEl0ZW1IZWFkZXIgPSAnJztcbiAgICBASW5wdXQoKSBwdWJsaWMgbGlzdEl0ZW1TdWJIZWFkZXIgPSAnJztcbiAgICBAT3V0cHV0KCkgcHVibGljIGV4cGFuZGVkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8TmdnQWNjb3JkaW9uTGlzdEl0ZW1Db21wb25lbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxOZ2dBY2NvcmRpb25MaXN0SXRlbUNvbXBvbmVudD4oKTtcblxuICAgIHB1YmxpYyBjb250ZW50SGVpZ2h0ID0gXCIwcHhcIjtcbiAgICBwdWJsaWMgaXNFeHBhbmRlZCA9IGZhbHNlOyAgICAgICAgXG5cbiAgICBwdWJsaWMgc2hyaW5rKCk6IHZvaWQgeyAgICAgICAgXG4gICAgICAgIHRoaXMuaXNFeHBhbmRlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNvbnRlbnRIZWlnaHQgPSBcIjBweFwiO1xuICAgIH1cblxuICAgIHB1YmxpYyBleHBhbmQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNFeHBhbmRlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuY29udGVudEhlaWdodCA9IFwiYXV0b1wiO1xuXG4gICAgfVxuXG4gICAgcHVibGljIHRvZ2dsZUV4cGFuZGVkKCk6IHZvaWQgeyAgICAgICAgXG4gICAgICAgIHRoaXMuaXNFeHBhbmRlZCA9ICF0aGlzLmlzRXhwYW5kZWQ7XG4gICAgICAgIGlmICh0aGlzLmlzRXhwYW5kZWQpIHtcbiAgICAgICAgICAgIHRoaXMuY29udGVudEhlaWdodCA9IFwiYXV0b1wiOyAgICAgICAgICAgIFxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jb250ZW50SGVpZ2h0ID0gXCIwcHhcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZXhwYW5kZWRDaGFuZ2UuZW1pdCh0aGlzKTtcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyIGRhdGEtdGVzdGlkPVwiYWNjb3JkaW9uLWxpc3QtaXRlbS1yb290XCI+XG4gICAgPGRpdiByb2xlPVwiaGVhZGluZ1wiIGFyaWEtbGV2ZWw9XCIyXCIgW2F0dHIuaWRdPVwiaWRcIj5cbiAgICAgICAgPGJ1dHRvbiBkYXRhLXRlc3RpZD1cImFjY29yZGlvbi1saXN0LWl0ZW0tZXhwYW5kZXItYnV0dG9uXCIgW2F0dHIuaWRdPVwiaWQgKyAnX2hlYWRlcidcIiAoY2xpY2spPVwidG9nZ2xlRXhwYW5kZWQoKVwiXG4gICAgICAgICAgICB0YWJpbmRleD1cIjBcIiBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cInRoaXMuaXNFeHBhbmRlZFwiIFthdHRyLmFyaWEtY29udHJvbHNdPVwiaWQgKyAnX3NlY3Rpb24nXCI+XG4gICAgICAgICAgICA8c3BhbiBkYXRhLXRlc3RpZD1cImFjY29yZGlvbi1saXN0LWl0ZW0taGVhZGVyXCI+e3tsaXN0SXRlbUhlYWRlcn19PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gZGF0YS10ZXN0aWQ9XCJhY2NvcmRpb24tbGlzdC1pdGVtLXN1YmhlYWRlclwiPnt7bGlzdEl0ZW1TdWJIZWFkZXJ9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxZW1cIiBoZWlnaHQ9XCIxZW1cIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgZD1cIk0xOC44MDk1IDkuMjI4MTdMMTguMTkwNyA4LjYwOTQyQzE4LjA0MzggOC40NjI1NSAxNy44MDYzIDguNDYyNTUgMTcuNjU5NSA4LjYwOTQyTDEyLjAwMDEgMTQuMjU2M0w2LjM0MDcyIDguNjA5NDJDNi4xOTM4NSA4LjQ2MjU1IDUuOTU2MzUgOC40NjI1NSA1LjgwOTQ3IDguNjA5NDJMNS4xOTA3MiA5LjIyODE3QzUuMDQzODUgOS4zNzUwNSA1LjA0Mzg1IDkuNjEyNTUgNS4xOTA3MiA5Ljc1OTQyTDExLjczNDUgMTYuMzAzMkMxMS44ODEzIDE2LjQ1IDEyLjExODggMTYuNDUgMTIuMjY1NyAxNi4zMDMyTDE4LjgwOTUgOS43NTk0MkMxOC45NTYzIDkuNjEyNTUgMTguOTU2MyA5LjM3NTA1IDE4LjgwOTUgOS4yMjgxN1pcIlxuICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzMzMzMzM1wiIC8+XG4gICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxkaXYgcm9sZT1cInJlZ2lvblwiIFtoaWRkZW5dPVwiIXRoaXMuaXNFeHBhbmRlZFwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJ7aGVpZ2h0OiB0aGlzLmNvbnRlbnRIZWlnaHR9XCIgW2lkXT1cImlkICsgJ19zZWN0aW9uJ1wiIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJpZCArICdfaGVhZGVyJ1wiXG4gICAgICAgICAgICBkYXRhLXRlc3RpZD1cImFjY29yZGlvbi1saXN0LWl0ZW0tY29udGVudFwiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj4iXX0=
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { Component, ContentChildren, Input } from '@angular/core';
|
|
2
|
+
import { NggAccordionListItemComponent } from './accordion-list-item.component';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class NggAccordionComponent {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.closeOthers = false;
|
|
7
|
+
}
|
|
8
|
+
get expandAll() {
|
|
9
|
+
return this._expandAll;
|
|
10
|
+
}
|
|
11
|
+
set expandAll(value) {
|
|
12
|
+
if (value === this._expandAll)
|
|
13
|
+
return;
|
|
14
|
+
if (this._expandAll) {
|
|
15
|
+
this.expandAllSubscription?.unsubscribe();
|
|
16
|
+
}
|
|
17
|
+
this._expandAll = value;
|
|
18
|
+
this.expandAllSubscription = this._expandAll?.subscribe(() => {
|
|
19
|
+
if (this.closeOthers === false) {
|
|
20
|
+
const itemArray = this.items ? Array.from(this.items) : undefined;
|
|
21
|
+
if (itemArray) {
|
|
22
|
+
for (const i of itemArray) {
|
|
23
|
+
i.expand();
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
ngAfterContentChecked() {
|
|
30
|
+
if (this.closeOthers) {
|
|
31
|
+
const itemArray = this.items ? Array.from(this.items) : undefined;
|
|
32
|
+
if (itemArray) {
|
|
33
|
+
for (const i of itemArray) {
|
|
34
|
+
i.expandedChange.subscribe((child) => this.onChildExpanded(child));
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
ngOnDestroy() {
|
|
40
|
+
if (this.closeOthers) {
|
|
41
|
+
const itemArray = this.items ? Array.from(this.items) : undefined;
|
|
42
|
+
if (itemArray) {
|
|
43
|
+
for (const i of itemArray) {
|
|
44
|
+
i.expandedChange.unsubscribe();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
this.expandAllSubscription?.unsubscribe();
|
|
49
|
+
}
|
|
50
|
+
onChildExpanded(childIdentity) {
|
|
51
|
+
if (this.closeOthers && childIdentity.isExpanded && this.items) {
|
|
52
|
+
this.items.forEach((item) => {
|
|
53
|
+
if (item !== childIdentity)
|
|
54
|
+
item.shrink();
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
NggAccordionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: NggAccordionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
60
|
+
NggAccordionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: NggAccordionComponent, selector: "ngg-accordion", inputs: { closeOthers: "closeOthers", expandAll: "expandAll" }, queries: [{ propertyName: "items", predicate: NggAccordionListItemComponent }], ngImport: i0, template: "<div class=\"accordion\" data-testid=\"accordion-root\">\n <ng-content></ng-content>\n</div>\n" });
|
|
61
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: NggAccordionComponent, decorators: [{
|
|
62
|
+
type: Component,
|
|
63
|
+
args: [{ selector: "ngg-accordion", template: "<div class=\"accordion\" data-testid=\"accordion-root\">\n <ng-content></ng-content>\n</div>\n" }]
|
|
64
|
+
}], propDecorators: { items: [{
|
|
65
|
+
type: ContentChildren,
|
|
66
|
+
args: [NggAccordionListItemComponent]
|
|
67
|
+
}], closeOthers: [{
|
|
68
|
+
type: Input
|
|
69
|
+
}], expandAll: [{
|
|
70
|
+
type: Input
|
|
71
|
+
}] } });
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvbGliL2FjY29yZGlvbi9hY2NvcmRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy9saWIvYWNjb3JkaW9uL2FjY29yZGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLFNBQVMsRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUF3QixNQUFNLGVBQWUsQ0FBQztBQUU3RyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7QUFNaEYsTUFBTSxPQUFPLHFCQUFxQjtJQUpsQztRQVNvQixnQkFBVyxHQUFHLEtBQUssQ0FBQztLQTJEdkM7SUExREcsSUFDVyxTQUFTO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUMzQixDQUFDO0lBQ0QsSUFBVyxTQUFTLENBQUMsS0FBbUM7UUFDcEQsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLFVBQVU7WUFDekIsT0FBTztRQUNYLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNqQixJQUFJLENBQUMscUJBQXFCLEVBQUUsV0FBVyxFQUFFLENBQUM7U0FDN0M7UUFFRCxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUN4QixJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3pELElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxLQUFLLEVBQUU7Z0JBQzVCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7Z0JBQ2xFLElBQUksU0FBUyxFQUFFO29CQUNYLEtBQUssTUFBTSxDQUFDLElBQUksU0FBUyxFQUFFO3dCQUN2QixDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7cUJBQ2Q7aUJBQ0o7YUFDSjtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLHFCQUFxQjtRQUV4QixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDbEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUNsRSxJQUFJLFNBQVMsRUFBRTtnQkFDWCxLQUFLLE1BQU0sQ0FBQyxJQUFJLFNBQVMsRUFBRTtvQkFDdkIsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztpQkFDdEU7YUFDSjtTQUNKO0lBQ0wsQ0FBQztJQUVNLFdBQVc7UUFFZCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDbEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQTtZQUNqRSxJQUFJLFNBQVMsRUFBRTtnQkFDWCxLQUFLLE1BQU0sQ0FBQyxJQUFJLFNBQVMsRUFBRTtvQkFDdkIsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztpQkFDbEM7YUFDSjtTQUNKO1FBRUQsSUFBSSxDQUFDLHFCQUFxQixFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQzlDLENBQUM7SUFFTyxlQUFlLENBQUMsYUFBNEM7UUFFaEUsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLGFBQWEsQ0FBQyxVQUFVLElBQUcsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUMzRCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUN4QixJQUFJLElBQUksS0FBSyxhQUFhO29CQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM5QyxDQUFDLENBQUMsQ0FBQTtTQUNMO0lBQ0wsQ0FBQzs7a0hBL0RRLHFCQUFxQjtzR0FBckIscUJBQXFCLDJJQUViLDZCQUE2Qiw2QkNWbEQsbUdBR0E7MkZES2EscUJBQXFCO2tCQUpqQyxTQUFTOytCQUNJLGVBQWU7OEJBSytCLEtBQUs7c0JBQTVELGVBQWU7dUJBQUMsNkJBQTZCO2dCQUc5QixXQUFXO3NCQUExQixLQUFLO2dCQUVLLFNBQVM7c0JBRG5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlckNvbnRlbnRDaGVja2VkLCBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgSW5wdXQsIE9uRGVzdHJveSwgUXVlcnlMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE5nZ0FjY29yZGlvbkxpc3RJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9hY2NvcmRpb24tbGlzdC1pdGVtLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcIm5nZy1hY2NvcmRpb25cIixcbiAgICB0ZW1wbGF0ZVVybDogXCIuL2FjY29yZGlvbi5jb21wb25lbnQuaHRtbFwiLFxufSlcbmV4cG9ydCBjbGFzcyBOZ2dBY2NvcmRpb25Db21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRDaGVja2VkLCBPbkRlc3Ryb3kge1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihOZ2dBY2NvcmRpb25MaXN0SXRlbUNvbXBvbmVudCkgcHJpdmF0ZSBpdGVtczogUXVlcnlMaXN0PE5nZ0FjY29yZGlvbkxpc3RJdGVtQ29tcG9uZW50PiB8IHVuZGVmaW5lZFxuICAgIHByaXZhdGUgX2V4cGFuZEFsbDogT2JzZXJ2YWJsZTx2b2lkPiB8IHVuZGVmaW5lZDtcbiAgICBwcml2YXRlIGV4cGFuZEFsbFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBjbG9zZU90aGVycyA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCBleHBhbmRBbGwoKTogT2JzZXJ2YWJsZTx2b2lkPiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9leHBhbmRBbGw7XG4gICAgfVxuICAgIHB1YmxpYyBzZXQgZXhwYW5kQWxsKHZhbHVlOiBPYnNlcnZhYmxlPHZvaWQ+IHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdGhpcy5fZXhwYW5kQWxsKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAodGhpcy5fZXhwYW5kQWxsKSB7XG4gICAgICAgICAgICB0aGlzLmV4cGFuZEFsbFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2V4cGFuZEFsbCA9IHZhbHVlO1xuICAgICAgICB0aGlzLmV4cGFuZEFsbFN1YnNjcmlwdGlvbiA9IHRoaXMuX2V4cGFuZEFsbD8uc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNsb3NlT3RoZXJzID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1BcnJheSA9IHRoaXMuaXRlbXMgPyBBcnJheS5mcm9tKHRoaXMuaXRlbXMpIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIGlmIChpdGVtQXJyYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBpIG9mIGl0ZW1BcnJheSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaS5leHBhbmQoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpOiB2b2lkIHtcblxuICAgICAgICBpZiAodGhpcy5jbG9zZU90aGVycykge1xuICAgICAgICAgICAgY29uc3QgaXRlbUFycmF5ID0gdGhpcy5pdGVtcyA/IEFycmF5LmZyb20odGhpcy5pdGVtcykgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICBpZiAoaXRlbUFycmF5KSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBpIG9mIGl0ZW1BcnJheSkge1xuICAgICAgICAgICAgICAgICAgICBpLmV4cGFuZGVkQ2hhbmdlLnN1YnNjcmliZSgoY2hpbGQpID0+IHRoaXMub25DaGlsZEV4cGFuZGVkKGNoaWxkKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuXG4gICAgICAgIGlmICh0aGlzLmNsb3NlT3RoZXJzKSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtQXJyYXkgPSB0aGlzLml0ZW1zID8gQXJyYXkuZnJvbSh0aGlzLml0ZW1zKSA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgaWYgKGl0ZW1BcnJheSkge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaSBvZiBpdGVtQXJyYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgaS5leHBhbmRlZENoYW5nZS51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZXhwYW5kQWxsU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25DaGlsZEV4cGFuZGVkKGNoaWxkSWRlbnRpdHk6IE5nZ0FjY29yZGlvbkxpc3RJdGVtQ29tcG9uZW50KSB7XG5cbiAgICAgICAgaWYgKHRoaXMuY2xvc2VPdGhlcnMgJiYgY2hpbGRJZGVudGl0eS5pc0V4cGFuZGVkICYmdGhpcy5pdGVtcykge1xuICAgICAgICAgICAgdGhpcy5pdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0gIT09IGNoaWxkSWRlbnRpdHkpIGl0ZW0uc2hyaW5rKCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImFjY29yZGlvblwiIGRhdGEtdGVzdGlkPVwiYWNjb3JkaW9uLXJvb3RcIj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { NgModule } from '@angular/core';
|
|
3
|
+
import { NggAccordionListItemComponent } from './accordion-list-item.component';
|
|
4
|
+
import { NggAccordionComponent } from './accordion.component';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class NggAccordionModule {
|
|
7
|
+
}
|
|
8
|
+
NggAccordionModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: NggAccordionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
9
|
+
NggAccordionModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: NggAccordionModule, declarations: [NggAccordionListItemComponent, NggAccordionComponent], imports: [CommonModule], exports: [NggAccordionListItemComponent, NggAccordionComponent] });
|
|
10
|
+
NggAccordionModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: NggAccordionModule, imports: [[CommonModule]] });
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: NggAccordionModule, decorators: [{
|
|
12
|
+
type: NgModule,
|
|
13
|
+
args: [{
|
|
14
|
+
imports: [CommonModule],
|
|
15
|
+
exports: [NggAccordionListItemComponent, NggAccordionComponent],
|
|
16
|
+
declarations: [NggAccordionListItemComponent, NggAccordionComponent]
|
|
17
|
+
}]
|
|
18
|
+
}] });
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvbGliL2FjY29yZGlvbi9hY2NvcmRpb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQU85RCxNQUFNLE9BQU8sa0JBQWtCOzsrR0FBbEIsa0JBQWtCO2dIQUFsQixrQkFBa0IsaUJBRlosNkJBQTZCLEVBQUUscUJBQXFCLGFBRnpELFlBQVksYUFDWiw2QkFBNkIsRUFBRSxxQkFBcUI7Z0hBR3JELGtCQUFrQixZQUpsQixDQUFDLFlBQVksQ0FBQzsyRkFJZCxrQkFBa0I7a0JBTDlCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixPQUFPLEVBQUUsQ0FBQyw2QkFBNkIsRUFBRSxxQkFBcUIsQ0FBQztvQkFDL0QsWUFBWSxFQUFFLENBQUMsNkJBQTZCLEVBQUUscUJBQXFCLENBQUM7aUJBQ3ZFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ2dBY2NvcmRpb25MaXN0SXRlbUNvbXBvbmVudCB9IGZyb20gJy4vYWNjb3JkaW9uLWxpc3QtaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmdnQWNjb3JkaW9uQ29tcG9uZW50IH0gZnJvbSAnLi9hY2NvcmRpb24uY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbTmdnQWNjb3JkaW9uTGlzdEl0ZW1Db21wb25lbnQsIE5nZ0FjY29yZGlvbkNvbXBvbmVudF0sXG4gICAgZGVjbGFyYXRpb25zOiBbTmdnQWNjb3JkaW9uTGlzdEl0ZW1Db21wb25lbnQsIE5nZ0FjY29yZGlvbkNvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgTmdnQWNjb3JkaW9uTW9kdWxle30iXX0=
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from './accordion.component';
|
|
2
|
+
export * from './accordion-list-item.component';
|
|
3
|
+
export * from './accordion.module';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9hY2NvcmRpb24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx1QkFBdUIsQ0FBQTtBQUNyQyxjQUFjLGlDQUFpQyxDQUFBO0FBQy9DLGNBQWMsb0JBQW9CLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2FjY29yZGlvbi5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2FjY29yZGlvbi1saXN0LWl0ZW0uY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9hY2NvcmRpb24ubW9kdWxlJ1xuIl19
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output, } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
export class NggBadgeComponent {
|
|
5
|
+
//eslint-disable-next-line
|
|
6
|
+
constructor() {
|
|
7
|
+
/** The color of the component */
|
|
8
|
+
this.badgeType = '';
|
|
9
|
+
/** Callback when component is dismissed */
|
|
10
|
+
this.handleClose = new EventEmitter();
|
|
11
|
+
}
|
|
12
|
+
/** Flag whether the component can be dismissed */
|
|
13
|
+
set isCloseable(value) {
|
|
14
|
+
this._isCloseable = value;
|
|
15
|
+
}
|
|
16
|
+
get isCloseable() {
|
|
17
|
+
return this._isCloseable === '' || !!this._isCloseable;
|
|
18
|
+
}
|
|
19
|
+
get class() {
|
|
20
|
+
return ['badge', this.badgeType].join(' ');
|
|
21
|
+
}
|
|
22
|
+
ngOnInit() {
|
|
23
|
+
if (!!this.customColor || !!this.customBackgroundColor) {
|
|
24
|
+
this.badgeType = '';
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
close(e) {
|
|
28
|
+
this.handleClose.emit(e);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
NggBadgeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: NggBadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
32
|
+
NggBadgeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: NggBadgeComponent, selector: "[ngg-badge]", inputs: { badgeType: "badgeType", isCloseable: "isCloseable", closeText: "closeText", customColor: "customColor", customBackgroundColor: "customBackgroundColor" }, outputs: { handleClose: "handleClose" }, host: { properties: { "style.color": "this.customColor", "style.background-color": "this.customBackgroundColor", "class": "this.class" } }, ngImport: i0, template: `
|
|
33
|
+
<strong>
|
|
34
|
+
<ng-content></ng-content>
|
|
35
|
+
</strong>
|
|
36
|
+
<button *ngIf="isCloseable" class="close" (click)="close($event)">
|
|
37
|
+
{{ closeText }}
|
|
38
|
+
<i></i>
|
|
39
|
+
</button>
|
|
40
|
+
`, isInline: true, directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
41
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: NggBadgeComponent, decorators: [{
|
|
42
|
+
type: Component,
|
|
43
|
+
args: [{
|
|
44
|
+
// we need to disable this warning since we don't want the badge component to create a new element
|
|
45
|
+
// eslint-disable-next-line @angular-eslint/component-selector
|
|
46
|
+
selector: '[ngg-badge]',
|
|
47
|
+
template: `
|
|
48
|
+
<strong>
|
|
49
|
+
<ng-content></ng-content>
|
|
50
|
+
</strong>
|
|
51
|
+
<button *ngIf="isCloseable" class="close" (click)="close($event)">
|
|
52
|
+
{{ closeText }}
|
|
53
|
+
<i></i>
|
|
54
|
+
</button>
|
|
55
|
+
`,
|
|
56
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
57
|
+
}]
|
|
58
|
+
}], ctorParameters: function () { return []; }, propDecorators: { badgeType: [{
|
|
59
|
+
type: Input
|
|
60
|
+
}], isCloseable: [{
|
|
61
|
+
type: Input
|
|
62
|
+
}], closeText: [{
|
|
63
|
+
type: Input
|
|
64
|
+
}], customColor: [{
|
|
65
|
+
type: HostBinding,
|
|
66
|
+
args: ['style.color']
|
|
67
|
+
}, {
|
|
68
|
+
type: Input
|
|
69
|
+
}], customBackgroundColor: [{
|
|
70
|
+
type: HostBinding,
|
|
71
|
+
args: ['style.background-color']
|
|
72
|
+
}, {
|
|
73
|
+
type: Input
|
|
74
|
+
}], class: [{
|
|
75
|
+
type: HostBinding,
|
|
76
|
+
args: ['class']
|
|
77
|
+
}], handleClose: [{
|
|
78
|
+
type: Output
|
|
79
|
+
}] } });
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFkZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy9saWIvYmFkZ2UvYmFkZ2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUVMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQTs7O0FBa0J0QixNQUFNLE9BQU8saUJBQWlCO0lBMEI1QiwwQkFBMEI7SUFDMUI7UUExQkEsaUNBQWlDO1FBQ3hCLGNBQVMsR0FBb0IsRUFBRSxDQUFBO1FBbUJ4QywyQ0FBMkM7UUFDakMsZ0JBQVcsR0FBd0IsSUFBSSxZQUFZLEVBQUUsQ0FBQTtJQUtoRCxDQUFDO0lBeEJoQixrREFBa0Q7SUFDbEQsSUFBYSxXQUFXLENBQUMsS0FBbUI7UUFDMUMsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUE7SUFDM0IsQ0FBQztJQUNELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUE7SUFDeEQsQ0FBQztJQVFELElBQTBCLEtBQUs7UUFDN0IsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQzVDLENBQUM7SUFVRCxRQUFRO1FBQ04sSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFO1lBQ3RELElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFBO1NBQ3BCO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxDQUFRO1FBQ1osSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDMUIsQ0FBQzs7OEdBckNVLGlCQUFpQjtrR0FBakIsaUJBQWlCLDRZQVhsQjs7Ozs7Ozs7R0FRVDsyRkFHVSxpQkFBaUI7a0JBZjdCLFNBQVM7bUJBQUM7b0JBQ1Qsa0dBQWtHO29CQUNsRyw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSxhQUFhO29CQUN2QixRQUFRLEVBQUU7Ozs7Ozs7O0dBUVQ7b0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2hEOzBFQUdVLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRU8sV0FBVztzQkFBdkIsS0FBSztnQkFPRyxTQUFTO3NCQUFqQixLQUFLO2dCQUUrQixXQUFXO3NCQUEvQyxXQUFXO3VCQUFDLGFBQWE7O3NCQUFHLEtBQUs7Z0JBRWMscUJBQXFCO3NCQUFwRSxXQUFXO3VCQUFDLHdCQUF3Qjs7c0JBQUcsS0FBSztnQkFFbkIsS0FBSztzQkFBOUIsV0FBVzt1QkFBQyxPQUFPO2dCQUtWLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBCYWRnZVR5cGUgfSBmcm9tICdAc2ViZ3JvdXAvZXh0cmFjdCdcblxuQENvbXBvbmVudCh7XG4gIC8vIHdlIG5lZWQgdG8gZGlzYWJsZSB0aGlzIHdhcm5pbmcgc2luY2Ugd2UgZG9uJ3Qgd2FudCB0aGUgYmFkZ2UgY29tcG9uZW50IHRvIGNyZWF0ZSBhIG5ldyBlbGVtZW50XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnW25nZy1iYWRnZV0nLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxzdHJvbmc+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9zdHJvbmc+XG4gICAgPGJ1dHRvbiAqbmdJZj1cImlzQ2xvc2VhYmxlXCIgY2xhc3M9XCJjbG9zZVwiIChjbGljayk9XCJjbG9zZSgkZXZlbnQpXCI+XG4gICAgICB7eyBjbG9zZVRleHQgfX1cbiAgICAgIDxpPjwvaT5cbiAgICA8L2J1dHRvbj5cbiAgYCxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE5nZ0JhZGdlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLyoqIFRoZSBjb2xvciBvZiB0aGUgY29tcG9uZW50ICovXG4gIEBJbnB1dCgpIGJhZGdlVHlwZT86IEJhZGdlVHlwZSB8ICcnID0gJydcbiAgLyoqIEZsYWcgd2hldGhlciB0aGUgY29tcG9uZW50IGNhbiBiZSBkaXNtaXNzZWQgKi9cbiAgQElucHV0KCkgc2V0IGlzQ2xvc2VhYmxlKHZhbHVlOiBib29sZWFuIHwgJycpIHtcbiAgICB0aGlzLl9pc0Nsb3NlYWJsZSA9IHZhbHVlXG4gIH1cbiAgZ2V0IGlzQ2xvc2VhYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc0Nsb3NlYWJsZSA9PT0gJycgfHwgISF0aGlzLl9pc0Nsb3NlYWJsZVxuICB9XG4gIC8qKiBDbG9zZSB0ZXh0ICovXG4gIEBJbnB1dCgpIGNsb3NlVGV4dD86IHN0cmluZ1xuICAvKiogQ3VzdG9tIHRleHQgY29sb3IgKi9cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5jb2xvcicpIEBJbnB1dCgpIGN1c3RvbUNvbG9yPzogc3RyaW5nXG4gIC8qKiBDdXN0b20gYmFja2dyb3VuZCBjb2xvciAqL1xuICBASG9zdEJpbmRpbmcoJ3N0eWxlLmJhY2tncm91bmQtY29sb3InKSBASW5wdXQoKSBjdXN0b21CYWNrZ3JvdW5kQ29sb3I/OiBzdHJpbmdcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgZ2V0IGNsYXNzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFsnYmFkZ2UnLCB0aGlzLmJhZGdlVHlwZV0uam9pbignICcpXG4gIH1cblxuICAvKiogQ2FsbGJhY2sgd2hlbiBjb21wb25lbnQgaXMgZGlzbWlzc2VkICovXG4gIEBPdXRwdXQoKSBoYW5kbGVDbG9zZTogRXZlbnRFbWl0dGVyPEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuXG4gIHByaXZhdGUgX2lzQ2xvc2VhYmxlPzogYm9vbGVhbiB8ICcnXG5cbiAgLy9lc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICghIXRoaXMuY3VzdG9tQ29sb3IgfHwgISF0aGlzLmN1c3RvbUJhY2tncm91bmRDb2xvcikge1xuICAgICAgdGhpcy5iYWRnZVR5cGUgPSAnJ1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlKGU6IEV2ZW50KSB7XG4gICAgdGhpcy5oYW5kbGVDbG9zZS5lbWl0KGUpXG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { NggBadgeComponent } from './badge.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class NggBadgeModule {
|
|
6
|
+
}
|
|
7
|
+
NggBadgeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: NggBadgeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
8
|
+
NggBadgeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: NggBadgeModule, declarations: [NggBadgeComponent], imports: [CommonModule], exports: [NggBadgeComponent] });
|
|
9
|
+
NggBadgeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: NggBadgeModule, imports: [[CommonModule]] });
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: NggBadgeModule, decorators: [{
|
|
11
|
+
type: NgModule,
|
|
12
|
+
args: [{
|
|
13
|
+
declarations: [NggBadgeComponent],
|
|
14
|
+
imports: [CommonModule],
|
|
15
|
+
exports: [NggBadgeComponent],
|
|
16
|
+
}]
|
|
17
|
+
}] });
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFkZ2UubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy9saWIvYmFkZ2UvYmFkZ2UubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDeEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBRTlDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFBOztBQU9yRCxNQUFNLE9BQU8sY0FBYzs7MkdBQWQsY0FBYzs0R0FBZCxjQUFjLGlCQUpWLGlCQUFpQixhQUN0QixZQUFZLGFBQ1osaUJBQWlCOzRHQUVoQixjQUFjLFlBSGhCLENBQUMsWUFBWSxDQUFDOzJGQUdaLGNBQWM7a0JBTDFCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsaUJBQWlCLENBQUM7b0JBQ2pDLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsT0FBTyxFQUFFLENBQUMsaUJBQWlCLENBQUM7aUJBQzdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuXG5pbXBvcnQgeyBOZ2dCYWRnZUNvbXBvbmVudCB9IGZyb20gJy4vYmFkZ2UuY29tcG9uZW50J1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtOZ2dCYWRnZUNvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBleHBvcnRzOiBbTmdnQmFkZ2VDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ2dCYWRnZU1vZHVsZSB7fVxuIl19
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './badge.component';
|
|
2
|
+
export * from './badge.module';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9iYWRnZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFtQixDQUFBO0FBQ2pDLGNBQWMsZ0JBQWdCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2JhZGdlLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vYmFkZ2UubW9kdWxlJ1xuIl19
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class NggButtonComponent {
|
|
4
|
+
get classes() {
|
|
5
|
+
return [this.variant, this.size ? this.size : false].filter(Boolean).join(" ");
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
NggButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: NggButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9
|
+
NggButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: NggButtonComponent, selector: "[ngg-button]", inputs: { variant: "variant", size: "size" }, host: { properties: { "class": "this.classes" } }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: NggButtonComponent, decorators: [{
|
|
11
|
+
type: Component,
|
|
12
|
+
args: [{
|
|
13
|
+
// eslint-disable-next-line @angular-eslint/component-selector
|
|
14
|
+
selector: '[ngg-button]',
|
|
15
|
+
template: `<ng-content></ng-content>`,
|
|
16
|
+
changeDetection: ChangeDetectionStrategy.OnPush
|
|
17
|
+
}]
|
|
18
|
+
}], propDecorators: { variant: [{
|
|
19
|
+
type: Input
|
|
20
|
+
}], size: [{
|
|
21
|
+
type: Input
|
|
22
|
+
}], classes: [{
|
|
23
|
+
type: HostBinding,
|
|
24
|
+
args: ['class']
|
|
25
|
+
}] } });
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvbGliL2J1dHRvbi9idXR0b24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFdBQVcsRUFDWCxLQUFLLEVBQ04sTUFBTSxlQUFlLENBQUE7O0FBU3RCLE1BQU0sT0FBTyxrQkFBa0I7SUFLN0IsSUFBMEIsT0FBTztRQUMvQixPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ2hGLENBQUM7OytHQVBVLGtCQUFrQjttR0FBbEIsa0JBQWtCLHFKQUhuQiwyQkFBMkI7MkZBRzFCLGtCQUFrQjtrQkFOOUIsU0FBUzttQkFBQztvQkFDVCw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSxjQUFjO29CQUN4QixRQUFRLEVBQUUsMkJBQTJCO29CQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQ7OEJBR1UsT0FBTztzQkFBZixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFFb0IsT0FBTztzQkFBaEMsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBCdXR0b25TaXplLCBCdXR0b25WYXJpYW50IH0gZnJvbSAnQHNlYmdyb3VwL2V4dHJhY3QnO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdbbmdnLWJ1dHRvbl0nLFxuICB0ZW1wbGF0ZTogYDxuZy1jb250ZW50PjwvbmctY29udGVudD5gLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBOZ2dCdXR0b25Db21wb25lbnQge1xuXG4gIEBJbnB1dCgpIHZhcmlhbnQ/OiBCdXR0b25WYXJpYW50O1xuICBASW5wdXQoKSBzaXplPzogQnV0dG9uU2l6ZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgZ2V0IGNsYXNzZXMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gW3RoaXMudmFyaWFudCwgdGhpcy5zaXplID8gdGhpcy5zaXplIDogZmFsc2VdLmZpbHRlcihCb29sZWFuKS5qb2luKFwiIFwiKVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { NggButtonComponent } from './button.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class NggButtonModule {
|
|
6
|
+
}
|
|
7
|
+
NggButtonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: NggButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
8
|
+
NggButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: NggButtonModule, declarations: [NggButtonComponent], imports: [CommonModule], exports: [NggButtonComponent] });
|
|
9
|
+
NggButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: NggButtonModule, imports: [[CommonModule]] });
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: NggButtonModule, decorators: [{
|
|
11
|
+
type: NgModule,
|
|
12
|
+
args: [{
|
|
13
|
+
declarations: [NggButtonComponent],
|
|
14
|
+
imports: [CommonModule],
|
|
15
|
+
exports: [NggButtonComponent],
|
|
16
|
+
}]
|
|
17
|
+
}] });
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvbGliL2J1dHRvbi9idXR0b24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDeEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBRTlDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFBOztBQU92RCxNQUFNLE9BQU8sZUFBZTs7NEdBQWYsZUFBZTs2R0FBZixlQUFlLGlCQUpYLGtCQUFrQixhQUN2QixZQUFZLGFBQ1osa0JBQWtCOzZHQUVqQixlQUFlLFlBSGpCLENBQUMsWUFBWSxDQUFDOzJGQUdaLGVBQWU7a0JBTDNCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsa0JBQWtCLENBQUM7b0JBQ2xDLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsT0FBTyxFQUFFLENBQUMsa0JBQWtCLENBQUM7aUJBQzlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuXG5pbXBvcnQgeyBOZ2dCdXR0b25Db21wb25lbnQgfSBmcm9tICcuL2J1dHRvbi5jb21wb25lbnQnXG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW05nZ0J1dHRvbkNvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBleHBvcnRzOiBbTmdnQnV0dG9uQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgTmdnQnV0dG9uTW9kdWxlIHt9XG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './button.component';
|
|
2
|
+
export * from './button.module';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9idXR0b24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxvQkFBb0IsQ0FBQTtBQUNsQyxjQUFjLGlCQUFpQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9idXR0b24uY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9idXR0b24ubW9kdWxlJ1xuIl19
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, ElementRef, Input, Output, ViewChild, EventEmitter, ChangeDetectorRef, } from '@angular/core';
|
|
2
|
+
import { NG_VALUE_ACCESSOR, } from '@angular/forms';
|
|
3
|
+
import { createDatepicker, months, years, randomId, } from '@sebgroup/extract';
|
|
4
|
+
import { endOfDay, startOfDay } from 'date-fns';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "../dropdown/dropdown.component";
|
|
7
|
+
import * as i2 from "@angular/common";
|
|
8
|
+
export class NggDatepickerComponent {
|
|
9
|
+
constructor(_cdr) {
|
|
10
|
+
this._cdr = _cdr;
|
|
11
|
+
this.id = randomId();
|
|
12
|
+
this.isValid = null;
|
|
13
|
+
this.valueChange = new EventEmitter();
|
|
14
|
+
this._months = months({});
|
|
15
|
+
this.listener = (data, state) => {
|
|
16
|
+
if (this.dp && state) {
|
|
17
|
+
this.dp.state = { ...state };
|
|
18
|
+
this.years = years({
|
|
19
|
+
from: this.dp.state?.minDate?.getFullYear(),
|
|
20
|
+
to: this.dp.state?.maxDate?.getFullYear(),
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
this.onTouchedFn && this.onTouchedFn();
|
|
24
|
+
if (data) {
|
|
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
|
+
}
|
|
30
|
+
this.data = data;
|
|
31
|
+
}
|
|
32
|
+
if (data || state) {
|
|
33
|
+
this._cdr.markForCheck();
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
get months() {
|
|
38
|
+
return this._months;
|
|
39
|
+
}
|
|
40
|
+
set months(value) {
|
|
41
|
+
this._months = value;
|
|
42
|
+
}
|
|
43
|
+
get options() {
|
|
44
|
+
return this._options;
|
|
45
|
+
}
|
|
46
|
+
set options(value) {
|
|
47
|
+
this._options = value;
|
|
48
|
+
if (value.locale) {
|
|
49
|
+
this.months = months({ locale: this.options?.locale });
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
get value() {
|
|
53
|
+
return this._value;
|
|
54
|
+
}
|
|
55
|
+
set value(newValue) {
|
|
56
|
+
if (newValue !== this._value) {
|
|
57
|
+
this._value = newValue;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
writeValue(value) {
|
|
61
|
+
this.value = value;
|
|
62
|
+
// When binding using ngModel we need to set initial select date
|
|
63
|
+
// once we get initial value as it's not available when component is created
|
|
64
|
+
if (value && this.dp && !this.data?.selectedDate) {
|
|
65
|
+
this.dp.select(value);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
registerOnChange(fn) {
|
|
69
|
+
this.onChangeFn = fn;
|
|
70
|
+
}
|
|
71
|
+
registerOnTouched(fn) {
|
|
72
|
+
this.onTouchedFn = fn;
|
|
73
|
+
}
|
|
74
|
+
get data() {
|
|
75
|
+
return this._data;
|
|
76
|
+
}
|
|
77
|
+
set data(value) {
|
|
78
|
+
this._data = value;
|
|
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
|
+
}
|
|
91
|
+
trackWeek(index, week) {
|
|
92
|
+
return week;
|
|
93
|
+
}
|
|
94
|
+
ngAfterViewInit() {
|
|
95
|
+
// initialize datepicker
|
|
96
|
+
if (this.datepickerElRef &&
|
|
97
|
+
this.datepickerDialogElRef &&
|
|
98
|
+
this.dateInputElRef &&
|
|
99
|
+
this.datepickerTriggerElRef &&
|
|
100
|
+
!this.dp) {
|
|
101
|
+
this.dp = createDatepicker(this.listener, {
|
|
102
|
+
...this.options,
|
|
103
|
+
selectedDate: this.value,
|
|
104
|
+
}, this.datepickerElRef.nativeElement, this.datepickerDialogElRef.nativeElement, this.dateInputElRef.nativeElement, this.datepickerTriggerElRef.nativeElement);
|
|
105
|
+
this._cdr.detectChanges();
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
throw 'Missing one or more elements...';
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
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: [
|
|
114
|
+
{
|
|
115
|
+
provide: NG_VALUE_ACCESSOR,
|
|
116
|
+
useExisting: NggDatepickerComponent,
|
|
117
|
+
multi: true,
|
|
118
|
+
},
|
|
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: [{
|
|
121
|
+
type: Component,
|
|
122
|
+
args: [{ selector: 'ngg-datepicker', providers: [
|
|
123
|
+
{
|
|
124
|
+
provide: NG_VALUE_ACCESSOR,
|
|
125
|
+
useExisting: NggDatepickerComponent,
|
|
126
|
+
multi: true,
|
|
127
|
+
},
|
|
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" }]
|
|
129
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { options: [{
|
|
130
|
+
type: Input
|
|
131
|
+
}], value: [{
|
|
132
|
+
type: Input
|
|
133
|
+
}], id: [{
|
|
134
|
+
type: Input
|
|
135
|
+
}], label: [{
|
|
136
|
+
type: Input
|
|
137
|
+
}], isValid: [{
|
|
138
|
+
type: Input
|
|
139
|
+
}], valueChange: [{
|
|
140
|
+
type: Output
|
|
141
|
+
}], datepickerDialogElRef: [{
|
|
142
|
+
type: ViewChild,
|
|
143
|
+
args: ['datepickerDialogElRef']
|
|
144
|
+
}], dateInputElRef: [{
|
|
145
|
+
type: ViewChild,
|
|
146
|
+
args: ['dateInputElRef']
|
|
147
|
+
}], datepickerElRef: [{
|
|
148
|
+
type: ViewChild,
|
|
149
|
+
args: ['datepickerElRef']
|
|
150
|
+
}], datepickerTriggerElRef: [{
|
|
151
|
+
type: ViewChild,
|
|
152
|
+
args: ['datepickerTriggerElRef']
|
|
153
|
+
}] } });
|
|
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=
|