@patter/ngx-components 0.5.2 → 0.5.4
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/esm2022/lib/dialog/ptr-dialog/ptr-dialog.component.mjs +45 -0
- package/esm2022/lib/dialog/ptr-dialog.service.mjs +47 -0
- package/esm2022/lib/dialog/ptr-tooltip/ptr-tooltip.component.mjs +31 -0
- package/esm2022/lib/forms/form/form.component.mjs +8 -6
- package/esm2022/lib/loading-spinner/loading-spinner.component.mjs +12 -0
- package/esm2022/lib/loading-spinner/loading-spinner.directive.mjs +83 -0
- package/esm2022/lib/menu/menu.component.mjs +3 -3
- package/esm2022/lib/ptr-button/ptr-button.component.mjs +108 -0
- package/esm2022/lib/ptr-title/ptr-title.component.mjs +3 -3
- package/esm2022/lib/services/loading.service.mjs +83 -0
- package/esm2022/public-api.mjs +8 -2
- package/fesm2022/patter-ngx-components.mjs +402 -16
- package/fesm2022/patter-ngx-components.mjs.map +1 -1
- package/lib/dialog/ptr-dialog/ptr-dialog.component.d.ts +15 -0
- package/lib/dialog/ptr-dialog.service.d.ts +17 -0
- package/lib/dialog/ptr-tooltip/ptr-tooltip.component.d.ts +11 -0
- package/lib/loading-spinner/loading-spinner.component.d.ts +5 -0
- package/lib/loading-spinner/loading-spinner.directive.d.ts +20 -0
- package/lib/ptr-button/ptr-button.component.d.ts +28 -0
- package/lib/services/loading.service.d.ts +36 -0
- package/package.json +1 -1
- package/patter-ngx-components-0.5.4.tgz +0 -0
- package/public-api.d.ts +7 -0
- package/patter-ngx-components-0.5.2.tgz +0 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
3
|
+
import { PtrButtonComponent } from '../../ptr-button/ptr-button.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class PtrDialogComponent {
|
|
6
|
+
dialogElement;
|
|
7
|
+
message = '';
|
|
8
|
+
buttonText = 'Confirm';
|
|
9
|
+
buttonStyle = 'normal';
|
|
10
|
+
closed = new EventEmitter();
|
|
11
|
+
ngAfterViewInit() {
|
|
12
|
+
this.dialogElement.nativeElement.showModal();
|
|
13
|
+
}
|
|
14
|
+
close() {
|
|
15
|
+
this.dialogElement.nativeElement.close();
|
|
16
|
+
}
|
|
17
|
+
confirm() {
|
|
18
|
+
this.closed.emit(true);
|
|
19
|
+
this.close();
|
|
20
|
+
}
|
|
21
|
+
onClose() {
|
|
22
|
+
this.closed.emit(null);
|
|
23
|
+
}
|
|
24
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: PtrDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
25
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: PtrDialogComponent, isStandalone: true, selector: "ptr-dialog", inputs: { message: "message", buttonText: "buttonText", buttonStyle: "buttonStyle" }, outputs: { closed: "closed" }, viewQueries: [{ propertyName: "dialogElement", first: true, predicate: ["dialogElement"], descendants: true }], ngImport: i0, template: "<dialog #dialogElement class=\"ptr-modal\" (close)=\"onClose()\">\r\n <div class=\"ptr-modal__content\">\r\n <button class=\"ptr-modal__close\" (click)=\"close()\" aria-label=\"Close dialog\">\r\n ×\r\n </button>\r\n <p>{{ message }}</p>\r\n <div class=\"ptr-modal__actions\">\r\n <ptr-button [buttonStyle]=\"buttonStyle\" (clicked)=\"confirm()\" [isSmallSize]=\"true\">{{buttonText}}</ptr-button>\r\n </div>\r\n </div>\r\n</dialog>", styles: [".ptr-modal{border-radius:var(--wp--custom--default-border-radius);border:none;padding:1rem}.ptr-modal__content{padding:1rem;position:relative}.ptr-modal__close{position:absolute;right:0;top:0;background:none;border:none;font-size:1.5rem;cursor:pointer;padding:0;line-height:1rem}.ptr-modal__actions{margin-top:20px;text-align:right}dialog.ptr-modal{opacity:0;transition:all .7s allow-discrete}dialog.ptr-modal[open]{opacity:1}dialog.ptr-modal::backdrop{background-color:#0000;transition:all .7s allow-discrete;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}dialog.ptr-modal[open]::backdrop{background-color:#0006}@starting-style{dialog[open]{opacity:0}}@starting-style{dialog[open]::backdrop{background-color:#0000}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: PtrButtonComponent, selector: "ptr-button", inputs: ["buttonStyle", "buttonType", "isDisabled", "hrefLink", "routerLinkValue", "extraClasses", "isSmallSize", "isIconButton"], outputs: ["clicked"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
26
|
+
}
|
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: PtrDialogComponent, decorators: [{
|
|
28
|
+
type: Component,
|
|
29
|
+
args: [{ selector: 'ptr-dialog', standalone: true, imports: [
|
|
30
|
+
CommonModule,
|
|
31
|
+
PtrButtonComponent
|
|
32
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<dialog #dialogElement class=\"ptr-modal\" (close)=\"onClose()\">\r\n <div class=\"ptr-modal__content\">\r\n <button class=\"ptr-modal__close\" (click)=\"close()\" aria-label=\"Close dialog\">\r\n ×\r\n </button>\r\n <p>{{ message }}</p>\r\n <div class=\"ptr-modal__actions\">\r\n <ptr-button [buttonStyle]=\"buttonStyle\" (clicked)=\"confirm()\" [isSmallSize]=\"true\">{{buttonText}}</ptr-button>\r\n </div>\r\n </div>\r\n</dialog>", styles: [".ptr-modal{border-radius:var(--wp--custom--default-border-radius);border:none;padding:1rem}.ptr-modal__content{padding:1rem;position:relative}.ptr-modal__close{position:absolute;right:0;top:0;background:none;border:none;font-size:1.5rem;cursor:pointer;padding:0;line-height:1rem}.ptr-modal__actions{margin-top:20px;text-align:right}dialog.ptr-modal{opacity:0;transition:all .7s allow-discrete}dialog.ptr-modal[open]{opacity:1}dialog.ptr-modal::backdrop{background-color:#0000;transition:all .7s allow-discrete;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}dialog.ptr-modal[open]::backdrop{background-color:#0006}@starting-style{dialog[open]{opacity:0}}@starting-style{dialog[open]::backdrop{background-color:#0000}}\n"] }]
|
|
33
|
+
}], propDecorators: { dialogElement: [{
|
|
34
|
+
type: ViewChild,
|
|
35
|
+
args: ['dialogElement']
|
|
36
|
+
}], message: [{
|
|
37
|
+
type: Input
|
|
38
|
+
}], buttonText: [{
|
|
39
|
+
type: Input
|
|
40
|
+
}], buttonStyle: [{
|
|
41
|
+
type: Input
|
|
42
|
+
}], closed: [{
|
|
43
|
+
type: Output
|
|
44
|
+
}] } });
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHRyLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wYXR0ZXIvbmd4LWNvbXBvbmVudHMvc3JjL2xpYi9kaWFsb2cvcHRyLWRpYWxvZy9wdHItZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3BhdHRlci9uZ3gtY29tcG9uZW50cy9zcmMvbGliL2RpYWxvZy9wdHItZGlhbG9nL3B0ci1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZILE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOztBQWEzRSxNQUFNLE9BQU8sa0JBQWtCO0lBRUQsYUFBYSxDQUFpQztJQUVqRSxPQUFPLEdBQVcsRUFBRSxDQUFDO0lBQ3JCLFVBQVUsR0FBVyxTQUFTLENBQUM7SUFDL0IsV0FBVyxHQUFxQyxRQUFRLENBQUM7SUFFeEQsTUFBTSxHQUFHLElBQUksWUFBWSxFQUFrQixDQUFDO0lBRXRELGVBQWU7UUFDYixJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2YsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QixDQUFDO3VHQXpCVSxrQkFBa0I7MkZBQWxCLGtCQUFrQiwyU0NmL0IsbWRBVVMsb3hCREZMLFlBQVksK0JBQ1osa0JBQWtCOzsyRkFNVCxrQkFBa0I7a0JBWDlCLFNBQVM7K0JBQ0UsWUFBWSxjQUNWLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGtCQUFrQjtxQkFDbkIsbUJBR2dCLHVCQUF1QixDQUFDLE1BQU07OEJBSW5CLGFBQWE7c0JBQXhDLFNBQVM7dUJBQUMsZUFBZTtnQkFFakIsT0FBTztzQkFBZixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFFSSxNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQdHJCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9wdHItYnV0dG9uL3B0ci1idXR0b24uY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncHRyLWRpYWxvZycsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBQdHJCdXR0b25Db21wb25lbnRcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wdHItZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFtcIi4vcHRyLWRpYWxvZy5jb21wb25lbnQuc2Nzc1wiXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHRyRGlhbG9nQ29tcG9uZW50IHtcclxuXHJcbiAgQFZpZXdDaGlsZCgnZGlhbG9nRWxlbWVudCcpIGRpYWxvZ0VsZW1lbnQhOiBFbGVtZW50UmVmPEhUTUxEaWFsb2dFbGVtZW50PjtcclxuXHJcbiAgQElucHV0KCkgbWVzc2FnZTogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgYnV0dG9uVGV4dDogc3RyaW5nID0gJ0NvbmZpcm0nO1xyXG4gIEBJbnB1dCgpIGJ1dHRvblN0eWxlOiAnbm9ybWFsJyB8ICdlcnJvcicgfCAnc2Vjb25kYXJ5JyA9ICdub3JtYWwnO1xyXG5cclxuICBAT3V0cHV0KCkgY2xvc2VkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuIHwgbnVsbD4oKTtcclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5kaWFsb2dFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc2hvd01vZGFsKCk7XHJcbiAgfVxyXG5cclxuICBjbG9zZSgpIHtcclxuICAgIHRoaXMuZGlhbG9nRWxlbWVudC5uYXRpdmVFbGVtZW50LmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICBjb25maXJtKCkge1xyXG4gICAgdGhpcy5jbG9zZWQuZW1pdCh0cnVlKTtcclxuICAgIHRoaXMuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIG9uQ2xvc2UoKSB7XHJcbiAgICB0aGlzLmNsb3NlZC5lbWl0KG51bGwpO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpYWxvZyAjZGlhbG9nRWxlbWVudCBjbGFzcz1cInB0ci1tb2RhbFwiIChjbG9zZSk9XCJvbkNsb3NlKClcIj5cclxuICA8ZGl2IGNsYXNzPVwicHRyLW1vZGFsX19jb250ZW50XCI+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwicHRyLW1vZGFsX19jbG9zZVwiIChjbGljayk9XCJjbG9zZSgpXCIgYXJpYS1sYWJlbD1cIkNsb3NlIGRpYWxvZ1wiPlxyXG4gICAgICAmdGltZXM7XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxwPnt7IG1lc3NhZ2UgfX08L3A+XHJcbiAgICA8ZGl2IGNsYXNzPVwicHRyLW1vZGFsX19hY3Rpb25zXCI+XHJcbiAgICAgIDxwdHItYnV0dG9uIFtidXR0b25TdHlsZV09XCJidXR0b25TdHlsZVwiIChjbGlja2VkKT1cImNvbmZpcm0oKVwiIFtpc1NtYWxsU2l6ZV09XCJ0cnVlXCI+e3tidXR0b25UZXh0fX08L3B0ci1idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaWFsb2c+Il19
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { createComponent, Injectable } from '@angular/core';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
import { PtrDialogComponent } from './ptr-dialog/ptr-dialog.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class PtrDialogService {
|
|
6
|
+
appRef;
|
|
7
|
+
injector;
|
|
8
|
+
dialogComponentRef = null;
|
|
9
|
+
constructor(appRef, injector) {
|
|
10
|
+
this.appRef = appRef;
|
|
11
|
+
this.injector = injector;
|
|
12
|
+
}
|
|
13
|
+
open(options) {
|
|
14
|
+
const dialogResult$ = new Subject();
|
|
15
|
+
this.dialogComponentRef = createComponent(PtrDialogComponent, {
|
|
16
|
+
environmentInjector: this.injector,
|
|
17
|
+
});
|
|
18
|
+
const { instance } = this.dialogComponentRef;
|
|
19
|
+
instance.message = options.message;
|
|
20
|
+
instance.buttonText = options.buttonText || 'Confirm';
|
|
21
|
+
instance.buttonStyle = options.buttonStyle || 'normal';
|
|
22
|
+
instance.closed.subscribe((result) => {
|
|
23
|
+
this.removeDialog();
|
|
24
|
+
dialogResult$.next(result ?? false);
|
|
25
|
+
dialogResult$.complete();
|
|
26
|
+
});
|
|
27
|
+
document.body.appendChild(this.dialogComponentRef.location.nativeElement);
|
|
28
|
+
this.appRef.attachView(this.dialogComponentRef.hostView);
|
|
29
|
+
return dialogResult$.asObservable();
|
|
30
|
+
}
|
|
31
|
+
removeDialog() {
|
|
32
|
+
if (this.dialogComponentRef) {
|
|
33
|
+
this.appRef.detachView(this.dialogComponentRef.hostView);
|
|
34
|
+
this.dialogComponentRef.destroy();
|
|
35
|
+
this.dialogComponentRef = null;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: PtrDialogService, deps: [{ token: i0.ApplicationRef }, { token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
39
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: PtrDialogService, providedIn: 'root' });
|
|
40
|
+
}
|
|
41
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: PtrDialogService, decorators: [{
|
|
42
|
+
type: Injectable,
|
|
43
|
+
args: [{
|
|
44
|
+
providedIn: 'root'
|
|
45
|
+
}]
|
|
46
|
+
}], ctorParameters: () => [{ type: i0.ApplicationRef }, { type: i0.EnvironmentInjector }] });
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHRyLWRpYWxvZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcGF0dGVyL25neC1jb21wb25lbnRzL3NyYy9saWIvZGlhbG9nL3B0ci1kaWFsb2cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdDLGVBQWUsRUFBdUIsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9HLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7O0FBS3ZFLE1BQU0sT0FBTyxnQkFBZ0I7SUFLakI7SUFDQTtJQUpGLGtCQUFrQixHQUE0QyxJQUFJLENBQUM7SUFFM0UsWUFDVSxNQUFzQixFQUN0QixRQUE2QjtRQUQ3QixXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFxQjtJQUNuQyxDQUFDO0lBRUwsSUFBSSxDQUFDLE9BSUo7UUFDQyxNQUFNLGFBQWEsR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO1FBRTdDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxlQUFlLENBQUMsa0JBQWtCLEVBQUU7WUFDNUQsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLFFBQVE7U0FDbkMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztRQUU3QyxRQUFRLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFDbkMsUUFBUSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxJQUFJLFNBQVMsQ0FBQztRQUN0RCxRQUFRLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLElBQUksUUFBUSxDQUFDO1FBRXZELFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBc0IsRUFBRSxFQUFFO1lBQ25ELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQixhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FBQztZQUNwQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7UUFFSCxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzFFLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV6RCxPQUFPLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRU8sWUFBWTtRQUNsQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN6RCxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztRQUNqQyxDQUFDO0lBQ0gsQ0FBQzt1R0E1Q1UsZ0JBQWdCOzJHQUFoQixnQkFBZ0IsY0FGZixNQUFNOzsyRkFFUCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBwbGljYXRpb25SZWYsIENvbXBvbmVudFJlZiwgY3JlYXRlQ29tcG9uZW50LCBFbnZpcm9ubWVudEluamVjdG9yLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgUHRyRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9wdHItZGlhbG9nL3B0ci1kaWFsb2cuY29tcG9uZW50JztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFB0ckRpYWxvZ1NlcnZpY2Uge1xyXG5cclxuICBwcml2YXRlIGRpYWxvZ0NvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPFB0ckRpYWxvZ0NvbXBvbmVudD4gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGFwcFJlZjogQXBwbGljYXRpb25SZWYsXHJcbiAgICBwcml2YXRlIGluamVjdG9yOiBFbnZpcm9ubWVudEluamVjdG9yXHJcbiAgKSB7IH1cclxuXHJcbiAgb3BlbihvcHRpb25zOiB7XHJcbiAgICBtZXNzYWdlOiBzdHJpbmc7XHJcbiAgICBidXR0b25UZXh0Pzogc3RyaW5nO1xyXG4gICAgYnV0dG9uU3R5bGU/OiAnbm9ybWFsJyB8ICdlcnJvcicgfCAnc2Vjb25kYXJ5JztcclxuICB9KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICBjb25zdCBkaWFsb2dSZXN1bHQkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuXHJcbiAgICB0aGlzLmRpYWxvZ0NvbXBvbmVudFJlZiA9IGNyZWF0ZUNvbXBvbmVudChQdHJEaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgZW52aXJvbm1lbnRJbmplY3RvcjogdGhpcy5pbmplY3RvcixcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IHsgaW5zdGFuY2UgfSA9IHRoaXMuZGlhbG9nQ29tcG9uZW50UmVmO1xyXG5cclxuICAgIGluc3RhbmNlLm1lc3NhZ2UgPSBvcHRpb25zLm1lc3NhZ2U7XHJcbiAgICBpbnN0YW5jZS5idXR0b25UZXh0ID0gb3B0aW9ucy5idXR0b25UZXh0IHx8ICdDb25maXJtJztcclxuICAgIGluc3RhbmNlLmJ1dHRvblN0eWxlID0gb3B0aW9ucy5idXR0b25TdHlsZSB8fCAnbm9ybWFsJztcclxuXHJcbiAgICBpbnN0YW5jZS5jbG9zZWQuc3Vic2NyaWJlKChyZXN1bHQ6IGJvb2xlYW4gfCBudWxsKSA9PiB7XHJcbiAgICAgIHRoaXMucmVtb3ZlRGlhbG9nKCk7XHJcbiAgICAgIGRpYWxvZ1Jlc3VsdCQubmV4dChyZXN1bHQgPz8gZmFsc2UpO1xyXG4gICAgICBkaWFsb2dSZXN1bHQkLmNvbXBsZXRlKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMuZGlhbG9nQ29tcG9uZW50UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgdGhpcy5hcHBSZWYuYXR0YWNoVmlldyh0aGlzLmRpYWxvZ0NvbXBvbmVudFJlZi5ob3N0Vmlldyk7XHJcblxyXG4gICAgcmV0dXJuIGRpYWxvZ1Jlc3VsdCQuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlbW92ZURpYWxvZygpIHtcclxuICAgIGlmICh0aGlzLmRpYWxvZ0NvbXBvbmVudFJlZikge1xyXG4gICAgICB0aGlzLmFwcFJlZi5kZXRhY2hWaWV3KHRoaXMuZGlhbG9nQ29tcG9uZW50UmVmLmhvc3RWaWV3KTtcclxuICAgICAgdGhpcy5kaWFsb2dDb21wb25lbnRSZWYuZGVzdHJveSgpO1xyXG4gICAgICB0aGlzLmRpYWxvZ0NvbXBvbmVudFJlZiA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input, ViewChild } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class PtrTooltipComponent {
|
|
4
|
+
content = '';
|
|
5
|
+
tooltipDialog;
|
|
6
|
+
tooltipTimer;
|
|
7
|
+
showTooltip() {
|
|
8
|
+
clearTimeout(this.tooltipTimer);
|
|
9
|
+
this.tooltipTimer = setTimeout(() => {
|
|
10
|
+
this.tooltipDialog.nativeElement.show();
|
|
11
|
+
}, 200); // Small delay to prevent flickering on quick mouse movements
|
|
12
|
+
}
|
|
13
|
+
hideTooltip() {
|
|
14
|
+
clearTimeout(this.tooltipTimer);
|
|
15
|
+
this.tooltipTimer = setTimeout(() => {
|
|
16
|
+
this.tooltipDialog.nativeElement.close();
|
|
17
|
+
}, 200); // Small delay to allow moving mouse to tooltip
|
|
18
|
+
}
|
|
19
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: PtrTooltipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
20
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: PtrTooltipComponent, isStandalone: true, selector: "ptr-tooltip", inputs: { content: "content" }, viewQueries: [{ propertyName: "tooltipDialog", first: true, predicate: ["tooltipDialog"], descendants: true }], ngImport: i0, template: "<span (mouseenter)=\"showTooltip()\" (mouseleave)=\"hideTooltip()\" class=\"tooltip-trigger\">\r\n <ng-content></ng-content>\r\n</span>\r\n<dialog #tooltipDialog class=\"ptr-tooltip\">\r\n <div class=\"ptr-tooltip__content\">{{ content }}</div>\r\n</dialog>", styles: [":host{display:inline-block;position:relative}.tooltip-trigger{cursor:help}.ptr-tooltip{position:absolute;bottom:100%;left:50%;transform:translate(-50%);border:none;border-radius:3px;padding:.5rem .75rem;background-color:#212121;border:0;color:#fff;font-size:.875rem;max-width:15.5rem;min-width:12.5rem;z-index:1000;margin:0 0 8px;box-shadow:0 3px 6px #00000029,0 3px 6px #0000003b}.ptr-tooltip:before{content:\"\";position:absolute;top:100%;left:50%;transform:translate(-50%);border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #212121}.ptr-tooltip__content{white-space:pre-wrap;text-align:center;line-height:1.5}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
21
|
+
}
|
|
22
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: PtrTooltipComponent, decorators: [{
|
|
23
|
+
type: Component,
|
|
24
|
+
args: [{ selector: 'ptr-tooltip', standalone: true, imports: [], changeDetection: ChangeDetectionStrategy.OnPush, template: "<span (mouseenter)=\"showTooltip()\" (mouseleave)=\"hideTooltip()\" class=\"tooltip-trigger\">\r\n <ng-content></ng-content>\r\n</span>\r\n<dialog #tooltipDialog class=\"ptr-tooltip\">\r\n <div class=\"ptr-tooltip__content\">{{ content }}</div>\r\n</dialog>", styles: [":host{display:inline-block;position:relative}.tooltip-trigger{cursor:help}.ptr-tooltip{position:absolute;bottom:100%;left:50%;transform:translate(-50%);border:none;border-radius:3px;padding:.5rem .75rem;background-color:#212121;border:0;color:#fff;font-size:.875rem;max-width:15.5rem;min-width:12.5rem;z-index:1000;margin:0 0 8px;box-shadow:0 3px 6px #00000029,0 3px 6px #0000003b}.ptr-tooltip:before{content:\"\";position:absolute;top:100%;left:50%;transform:translate(-50%);border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #212121}.ptr-tooltip__content{white-space:pre-wrap;text-align:center;line-height:1.5}\n"] }]
|
|
25
|
+
}], propDecorators: { content: [{
|
|
26
|
+
type: Input
|
|
27
|
+
}], tooltipDialog: [{
|
|
28
|
+
type: ViewChild,
|
|
29
|
+
args: ['tooltipDialog']
|
|
30
|
+
}] } });
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHRyLXRvb2x0aXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcGF0dGVyL25neC1jb21wb25lbnRzL3NyYy9saWIvZGlhbG9nL3B0ci10b29sdGlwL3B0ci10b29sdGlwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3BhdHRlci9uZ3gtY29tcG9uZW50cy9zcmMvbGliL2RpYWxvZy9wdHItdG9vbHRpcC9wdHItdG9vbHRpcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUE0QixLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVUvRyxNQUFNLE9BQU8sbUJBQW1CO0lBRXJCLE9BQU8sR0FBVyxFQUFFLENBQUM7SUFFRixhQUFhLENBQWlDO0lBRWxFLFlBQVksQ0FBTTtJQUUxQixXQUFXO1FBQ1QsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDbEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsNkRBQTZEO0lBQ3hFLENBQUM7SUFFRCxXQUFXO1FBQ1QsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDbEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDM0MsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsK0NBQStDO0lBQzFELENBQUM7dUdBcEJVLG1CQUFtQjsyRkFBbkIsbUJBQW1CLHVOQ1ZoQyxxUUFLUzs7MkZES0ksbUJBQW1CO2tCQVIvQixTQUFTOytCQUNFLGFBQWEsY0FDWCxJQUFJLFdBQ1AsRUFBRSxtQkFHTSx1QkFBdUIsQ0FBQyxNQUFNOzhCQUl0QyxPQUFPO3NCQUFmLEtBQUs7Z0JBRXNCLGFBQWE7c0JBQXhDLFNBQVM7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdwdHItdG9vbHRpcCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vcHRyLXRvb2x0aXAuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogW1wiLi9wdHItdG9vbHRpcC5jb21wb25lbnQuc2Nzc1wiXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHRyVG9vbHRpcENvbXBvbmVudCB7XHJcblxyXG4gIEBJbnB1dCgpIGNvbnRlbnQ6IHN0cmluZyA9ICcnO1xyXG5cclxuICBAVmlld0NoaWxkKCd0b29sdGlwRGlhbG9nJykgdG9vbHRpcERpYWxvZyE6IEVsZW1lbnRSZWY8SFRNTERpYWxvZ0VsZW1lbnQ+O1xyXG5cclxuICBwcml2YXRlIHRvb2x0aXBUaW1lcjogYW55O1xyXG5cclxuICBzaG93VG9vbHRpcCgpIHtcclxuICAgIGNsZWFyVGltZW91dCh0aGlzLnRvb2x0aXBUaW1lcik7XHJcbiAgICB0aGlzLnRvb2x0aXBUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnRvb2x0aXBEaWFsb2cubmF0aXZlRWxlbWVudC5zaG93KCk7XHJcbiAgICB9LCAyMDApOyAvLyBTbWFsbCBkZWxheSB0byBwcmV2ZW50IGZsaWNrZXJpbmcgb24gcXVpY2sgbW91c2UgbW92ZW1lbnRzXHJcbiAgfVxyXG5cclxuICBoaWRlVG9vbHRpcCgpIHtcclxuICAgIGNsZWFyVGltZW91dCh0aGlzLnRvb2x0aXBUaW1lcik7XHJcbiAgICB0aGlzLnRvb2x0aXBUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnRvb2x0aXBEaWFsb2cubmF0aXZlRWxlbWVudC5jbG9zZSgpO1xyXG4gICAgfSwgMjAwKTsgLy8gU21hbGwgZGVsYXkgdG8gYWxsb3cgbW92aW5nIG1vdXNlIHRvIHRvb2x0aXBcclxuICB9XHJcblxyXG59XHJcbiIsIjxzcGFuIChtb3VzZWVudGVyKT1cInNob3dUb29sdGlwKClcIiAobW91c2VsZWF2ZSk9XCJoaWRlVG9vbHRpcCgpXCIgY2xhc3M9XCJ0b29sdGlwLXRyaWdnZXJcIj5cclxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbjwvc3Bhbj5cclxuPGRpYWxvZyAjdG9vbHRpcERpYWxvZyBjbGFzcz1cInB0ci10b29sdGlwXCI+XHJcbiAgPGRpdiBjbGFzcz1cInB0ci10b29sdGlwX19jb250ZW50XCI+e3sgY29udGVudCB9fTwvZGl2PlxyXG48L2RpYWxvZz4iXX0=
|
|
@@ -3,6 +3,7 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, Even
|
|
|
3
3
|
import { FormBuilder, ReactiveFormsModule } from '@angular/forms';
|
|
4
4
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
5
5
|
import { Observable } from 'rxjs';
|
|
6
|
+
import { PtrButtonComponent } from '../../ptr-button/ptr-button.component';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
8
|
import * as i1 from "@angular/common";
|
|
8
9
|
import * as i2 from "@angular/forms";
|
|
@@ -63,15 +64,16 @@ export class PtrFormComponent {
|
|
|
63
64
|
this.flatOptions[fieldName] = options;
|
|
64
65
|
}
|
|
65
66
|
}
|
|
66
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.
|
|
67
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.
|
|
67
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: PtrFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
68
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: PtrFormComponent, isStandalone: true, selector: "ptr-form", inputs: { config: "config", loading: "loading", error: "error" }, outputs: { formSubmit: "formSubmit", formGroupCreated: "formGroupCreated" }, ngImport: i0, template: "<div [class]=\"'gform_wrapper ' + config.formClass\">\r\n\r\n <div class=\"gform_validation_errors\" *ngIf=\"error\">\r\n <h2 class=\"gform_submission_error hide_summary\">{{error}}</h2>\r\n </div>\r\n\r\n <div *ngIf=\"config.title\" class=\"gform_heading\">\r\n <h2 class=\"gform_title\">{{ config.title }}</h2>\r\n </div>\r\n\r\n <form [formGroup]=\"formGroup\" (ngSubmit)=\"onSubmit()\">\r\n\r\n <div class=\"gform_fields\">\r\n\r\n <ng-container *ngFor=\"let field of config.fields\">\r\n\r\n <div class=\"gfield gfield--width-{{field.size}}\" [class.gform_hidden]=\"field.type === 'hidden'\"\r\n [class.gfield_error]=\"formGroup.get(field.name)?.invalid && formGroup.get(field.name)?.touched\">\r\n\r\n <label class=\"gfield_label gform-field-label\" [for]=\"field.name\">{{ field.label }}</label>\r\n\r\n <ng-container [ngSwitch]=\"field.type\">\r\n\r\n <input *ngSwitchCase=\"'text'\" [formControlName]=\"field.name\" type=\"text\" [id]=\"field.name\" />\r\n\r\n <textarea *ngSwitchCase=\"'textarea'\" [id]=\"field.name\" [formControlName]=\"field.name\"></textarea>\r\n\r\n <input *ngSwitchCase=\"'date'\" [formControlName]=\"field.name\" type=\"date\" [id]=\"field.name\" />\r\n\r\n <input *ngSwitchCase=\"'number'\" [formControlName]=\"field.name\" type=\"number\" [id]=\"field.name\" />\r\n\r\n <input *ngSwitchCase=\"'email'\" [formControlName]=\"field.name\" type=\"email\" [id]=\"field.name\" />\r\n\r\n <input *ngSwitchCase=\"'password'\" [formControlName]=\"field.name\" type=\"password\" [id]=\"field.name\" />\r\n\r\n <ng-container *ngSwitchCase=\"'select'\">\r\n <select [formControlName]=\"field.name\" [id]=\"field.name\">\r\n <!-- Render grouped options -->\r\n <optgroup *ngFor=\"let group of groupedOptions[field.name]\" [label]=\"group.groupLabel\">\r\n <option *ngFor=\"let option of group.options\" [value]=\"option.value\">\r\n {{ option.label }}\r\n </option>\r\n </optgroup>\r\n <!-- Render flat options -->\r\n <option *ngFor=\"let option of flatOptions[field.name]\" [value]=\"option.value\">\r\n {{ option.label }}\r\n </option>\r\n </select>\r\n </ng-container>\r\n\r\n </ng-container>\r\n\r\n <div class=\"gfield_description validation_message gfield_validation_message\"\r\n *ngIf=\"formGroup.get(field.name)?.invalid && formGroup.get(field.name)?.touched\">\r\n <ng-container *ngIf=\"formGroup.get(field.name)?.errors?.['required']\">This field is required.</ng-container>\r\n <ng-container *ngIf=\"formGroup.get(field.name)?.errors?.['email']\">Please enter a valid email\r\n address.</ng-container>\r\n <ng-container *ngIf=\"formGroup.get(field.name)?.errors?.['minlength']\">\r\n Minimum length is {{ formGroup.get(field.name)?.errors?.['minlength'].requiredLength }} characters.\r\n </ng-container>\r\n <ng-container *ngIf=\"formGroup.get(field.name)?.errors?.['maxlength']\">\r\n Maximum length is {{ formGroup.get(field.name)?.errors?.['maxlength'].requiredLength }} characters.\r\n </ng-container>\r\n <ng-container *ngIf=\"formGroup.get(field.name)?.errors?.['pattern']\">\r\n Please match the required format.\r\n </ng-container>\r\n </div>\r\n\r\n </div>\r\n\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"gform_footer\">\r\n <ptr-button buttonType=\"submit\" [isDisabled]=\"loading || !formGroup.valid\">{{config.submitText}}</ptr-button>\r\n </div>\r\n\r\n </form>\r\n</div>\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: PtrButtonComponent, selector: "ptr-button", inputs: ["buttonStyle", "buttonType", "isDisabled", "hrefLink", "routerLinkValue", "extraClasses", "isSmallSize", "isIconButton"], outputs: ["clicked"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
68
69
|
}
|
|
69
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.
|
|
70
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: PtrFormComponent, decorators: [{
|
|
70
71
|
type: Component,
|
|
71
72
|
args: [{ selector: 'ptr-form', standalone: true, imports: [
|
|
72
73
|
CommonModule,
|
|
73
|
-
ReactiveFormsModule
|
|
74
|
-
|
|
74
|
+
ReactiveFormsModule,
|
|
75
|
+
PtrButtonComponent
|
|
76
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [class]=\"'gform_wrapper ' + config.formClass\">\r\n\r\n <div class=\"gform_validation_errors\" *ngIf=\"error\">\r\n <h2 class=\"gform_submission_error hide_summary\">{{error}}</h2>\r\n </div>\r\n\r\n <div *ngIf=\"config.title\" class=\"gform_heading\">\r\n <h2 class=\"gform_title\">{{ config.title }}</h2>\r\n </div>\r\n\r\n <form [formGroup]=\"formGroup\" (ngSubmit)=\"onSubmit()\">\r\n\r\n <div class=\"gform_fields\">\r\n\r\n <ng-container *ngFor=\"let field of config.fields\">\r\n\r\n <div class=\"gfield gfield--width-{{field.size}}\" [class.gform_hidden]=\"field.type === 'hidden'\"\r\n [class.gfield_error]=\"formGroup.get(field.name)?.invalid && formGroup.get(field.name)?.touched\">\r\n\r\n <label class=\"gfield_label gform-field-label\" [for]=\"field.name\">{{ field.label }}</label>\r\n\r\n <ng-container [ngSwitch]=\"field.type\">\r\n\r\n <input *ngSwitchCase=\"'text'\" [formControlName]=\"field.name\" type=\"text\" [id]=\"field.name\" />\r\n\r\n <textarea *ngSwitchCase=\"'textarea'\" [id]=\"field.name\" [formControlName]=\"field.name\"></textarea>\r\n\r\n <input *ngSwitchCase=\"'date'\" [formControlName]=\"field.name\" type=\"date\" [id]=\"field.name\" />\r\n\r\n <input *ngSwitchCase=\"'number'\" [formControlName]=\"field.name\" type=\"number\" [id]=\"field.name\" />\r\n\r\n <input *ngSwitchCase=\"'email'\" [formControlName]=\"field.name\" type=\"email\" [id]=\"field.name\" />\r\n\r\n <input *ngSwitchCase=\"'password'\" [formControlName]=\"field.name\" type=\"password\" [id]=\"field.name\" />\r\n\r\n <ng-container *ngSwitchCase=\"'select'\">\r\n <select [formControlName]=\"field.name\" [id]=\"field.name\">\r\n <!-- Render grouped options -->\r\n <optgroup *ngFor=\"let group of groupedOptions[field.name]\" [label]=\"group.groupLabel\">\r\n <option *ngFor=\"let option of group.options\" [value]=\"option.value\">\r\n {{ option.label }}\r\n </option>\r\n </optgroup>\r\n <!-- Render flat options -->\r\n <option *ngFor=\"let option of flatOptions[field.name]\" [value]=\"option.value\">\r\n {{ option.label }}\r\n </option>\r\n </select>\r\n </ng-container>\r\n\r\n </ng-container>\r\n\r\n <div class=\"gfield_description validation_message gfield_validation_message\"\r\n *ngIf=\"formGroup.get(field.name)?.invalid && formGroup.get(field.name)?.touched\">\r\n <ng-container *ngIf=\"formGroup.get(field.name)?.errors?.['required']\">This field is required.</ng-container>\r\n <ng-container *ngIf=\"formGroup.get(field.name)?.errors?.['email']\">Please enter a valid email\r\n address.</ng-container>\r\n <ng-container *ngIf=\"formGroup.get(field.name)?.errors?.['minlength']\">\r\n Minimum length is {{ formGroup.get(field.name)?.errors?.['minlength'].requiredLength }} characters.\r\n </ng-container>\r\n <ng-container *ngIf=\"formGroup.get(field.name)?.errors?.['maxlength']\">\r\n Maximum length is {{ formGroup.get(field.name)?.errors?.['maxlength'].requiredLength }} characters.\r\n </ng-container>\r\n <ng-container *ngIf=\"formGroup.get(field.name)?.errors?.['pattern']\">\r\n Please match the required format.\r\n </ng-container>\r\n </div>\r\n\r\n </div>\r\n\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"gform_footer\">\r\n <ptr-button buttonType=\"submit\" [isDisabled]=\"loading || !formGroup.valid\">{{config.submitText}}</ptr-button>\r\n </div>\r\n\r\n </form>\r\n</div>\r\n" }]
|
|
75
77
|
}], propDecorators: { config: [{
|
|
76
78
|
type: Input
|
|
77
79
|
}], loading: [{
|
|
@@ -83,4 +85,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
|
|
|
83
85
|
}], formGroupCreated: [{
|
|
84
86
|
type: Output
|
|
85
87
|
}] } });
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wYXR0ZXIvbmd4LWNvbXBvbmVudHMvc3JjL2xpYi9mb3Jtcy9mb3JtL2Zvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcGF0dGVyL25neC1jb21wb25lbnRzL3NyYy9saWIvZm9ybXMvZm9ybS9mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFKLE9BQU8sRUFBRSxXQUFXLEVBQWEsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7O0FBWWxDLE1BQU0sT0FBTyxnQkFBZ0I7SUFFbEIsTUFBTSxDQUFpQjtJQUN2QixPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ2hCLEtBQUssR0FBa0IsSUFBSSxDQUFDO0lBRTNCLFVBQVUsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO0lBQ3JDLGdCQUFnQixHQUFHLElBQUksWUFBWSxFQUFhLENBQUM7SUFFM0QsU0FBUyxDQUFhO0lBQ3RCLFdBQVcsR0FBbUMsRUFBRSxDQUFDO0lBQ2pELGNBQWMsR0FBd0MsRUFBRSxDQUFDO0lBRXpELEVBQUUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDekIsR0FBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lB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Q0gsQ0FBQzt1R0FsRVUsZ0JBQWdCOzJGQUFoQixnQkFBZ0IsbU5DakI3Qiwwd0hBK0VBLDJDRHBFSSxZQUFZLDJiQUNaLG1CQUFtQjs7MkZBS1YsZ0JBQWdCO2tCQVY1QixTQUFTOytCQUNFLFVBQVUsY0FDUixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixtQkFBbUI7cUJBQ3BCLG1CQUVnQix1QkFBdUIsQ0FBQyxNQUFNOzhCQUl0QyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFFSSxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBEZXN0cm95UmVmLCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgUHRyRm9ybUNvbmZpZywgUHRyT3B0aW9uLCBQdHJPcHRpb25Hcm91cCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncHRyLWZvcm0nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZVxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQdHJGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgQElucHV0KCkgY29uZmlnITogUHRyRm9ybUNvbmZpZztcclxuICBASW5wdXQoKSBsb2FkaW5nID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZXJyb3I6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICBAT3V0cHV0KCkgZm9ybVN1Ym1pdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBmb3JtR3JvdXBDcmVhdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxGb3JtR3JvdXA+KCk7XHJcblxyXG4gIGZvcm1Hcm91cCE6IEZvcm1Hcm91cDtcclxuICBmbGF0T3B0aW9uczogeyBba2V5OiBzdHJpbmddOiBQdHJPcHRpb25bXSB9ID0ge307XHJcbiAgZ3JvdXBlZE9wdGlvbnM6IHsgW2tleTogc3RyaW5nXTogUHRyT3B0aW9uR3JvdXBbXSB9ID0ge307XHJcblxyXG4gIGZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKTtcclxuICBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gIGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZilcclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmJ1aWxkRm9ybSgpO1xyXG4gICAgdGhpcy5mb3JtR3JvdXBDcmVhdGVkLmVtaXQodGhpcy5mb3JtR3JvdXApO1xyXG5cclxuICAgIHRoaXMuY29uZmlnLmZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcclxuICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdzZWxlY3QnICYmIGZpZWxkLm9wdGlvbnMgaW5zdGFuY2VvZiBPYnNlcnZhYmxlKSB7XHJcbiAgICAgICAgZmllbGQub3B0aW9uc1xyXG4gICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKG9wdGlvbnMgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NPcHRpb25zKGZpZWxkLm5hbWUsIG9wdGlvbnMpO1xyXG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTsgLy8gVHJpZ2dlciBjaGFuZ2UgZGV0ZWN0aW9uIGFmdGVyIG9wdGlvbnMgYXJlIGxvYWRlZFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZmllbGQudHlwZSA9PT0gJ3NlbGVjdCcgJiYgQXJyYXkuaXNBcnJheShmaWVsZC5vcHRpb25zKSkge1xyXG4gICAgICAgIHRoaXMucHJvY2Vzc09wdGlvbnMoZmllbGQubmFtZSwgZmllbGQub3B0aW9ucyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYnVpbGRGb3JtKCk6IHZvaWQge1xyXG4gICAgY29uc3QgZ3JvdXA6IGFueSA9IHt9O1xyXG4gICAgdGhpcy5jb25maWcuZmllbGRzLmZvckVhY2goZmllbGQgPT4ge1xyXG4gICAgICBncm91cFtmaWVsZC5uYW1lXSA9IFtmaWVsZC52YWx1ZSB8fCAnJywgZmllbGQudmFsaWRhdG9ycyB8fCBbXV07XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZm9ybUdyb3VwID0gdGhpcy5mYi5ncm91cChncm91cCk7XHJcbiAgfVxyXG5cclxuICBvblN1Ym1pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmZvcm1Hcm91cC52YWxpZCkge1xyXG4gICAgICB0aGlzLmZvcm1TdWJtaXQuZW1pdCh0aGlzLmZvcm1Hcm91cC52YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVzZXRGb3JtKCk6IHZvaWQge1xyXG4gICAgdGhpcy5mb3JtR3JvdXAucmVzZXQoKTtcclxuICAgIHRoaXMuY29uZmlnLmZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcclxuICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybUdyb3VwLmdldChmaWVsZC5uYW1lKTtcclxuICAgICAgY29udHJvbD8uc2V0VmFsdWUoZmllbGQudmFsdWUgfHwgJycsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIHByaXZhdGUgcHJvY2Vzc09wdGlvbnMoZmllbGROYW1lOiBzdHJpbmcsIG9wdGlvbnM6IFB0ck9wdGlvbltdIHwgUHRyT3B0aW9uR3JvdXBbXSk6IHZvaWQge1xyXG4gICAgaWYgKG9wdGlvbnMubGVuZ3RoID4gMCAmJiAnb3B0aW9ucycgaW4gb3B0aW9uc1swXSkge1xyXG4gICAgICB0aGlzLmdyb3VwZWRPcHRpb25zW2ZpZWxkTmFtZV0gPSBvcHRpb25zIGFzIFB0ck9wdGlvbkdyb3VwW107XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZsYXRPcHRpb25zW2ZpZWxkTmFtZV0gPSBvcHRpb25zIGFzIFB0ck9wdGlvbltdO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IFtjbGFzc109XCInZ2Zvcm1fd3JhcHBlciAnICsgY29uZmlnLmZvcm1DbGFzc1wiPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiZ2Zvcm1fdmFsaWRhdGlvbl9lcnJvcnNcIiAqbmdJZj1cImVycm9yXCI+XHJcbiAgICA8aDIgY2xhc3M9XCJnZm9ybV9zdWJtaXNzaW9uX2Vycm9yIGhpZGVfc3VtbWFyeVwiPnt7ZXJyb3J9fTwvaDI+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgKm5nSWY9XCJjb25maWcudGl0bGVcIiBjbGFzcz1cImdmb3JtX2hlYWRpbmdcIj5cclxuICAgIDxoMiBjbGFzcz1cImdmb3JtX3RpdGxlXCI+e3sgY29uZmlnLnRpdGxlIH19PC9oMj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIiAobmdTdWJtaXQpPVwib25TdWJtaXQoKVwiPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJnZm9ybV9maWVsZHNcIj5cclxuXHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZpZWxkIG9mIGNvbmZpZy5maWVsZHNcIj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImdmaWVsZCBnZmllbGQtLXdpZHRoLXt7ZmllbGQuc2l6ZX19XCIgW2NsYXNzLmdmb3JtX2hpZGRlbl09XCJmaWVsZC50eXBlID09PSAnaGlkZGVuJ1wiXHJcbiAgICAgICAgICBbY2xhc3MuZ2ZpZWxkX2Vycm9yXT1cImZvcm1Hcm91cC5nZXQoZmllbGQubmFtZSk/LmludmFsaWQgJiYgZm9ybUdyb3VwLmdldChmaWVsZC5uYW1lKT8udG91Y2hlZFwiPlxyXG5cclxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdmaWVsZF9sYWJlbCBnZm9ybS1maWVsZC1sYWJlbFwiIFtmb3JdPVwiZmllbGQubmFtZVwiPnt7IGZpZWxkLmxhYmVsIH19PC9sYWJlbD5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJmaWVsZC50eXBlXCI+XHJcblxyXG4gICAgICAgICAgICA8aW5wdXQgKm5nU3dpdGNoQ2FzZT1cIid0ZXh0J1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQubmFtZVwiIHR5cGU9XCJ0ZXh0XCIgW2lkXT1cImZpZWxkLm5hbWVcIiAvPlxyXG5cclxuICAgICAgICAgICAgPHRleHRhcmVhICpuZ1N3aXRjaENhc2U9XCIndGV4dGFyZWEnXCIgW2lkXT1cImZpZWxkLm5hbWVcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWVcIj48L3RleHRhcmVhPlxyXG5cclxuICAgICAgICAgICAgPGlucHV0ICpuZ1N3aXRjaENhc2U9XCInZGF0ZSdcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWVcIiB0eXBlPVwiZGF0ZVwiIFtpZF09XCJmaWVsZC5uYW1lXCIgLz5cclxuXHJcbiAgICAgICAgICAgIDxpbnB1dCAqbmdTd2l0Y2hDYXNlPVwiJ251bWJlcidcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWVcIiB0eXBlPVwibnVtYmVyXCIgW2lkXT1cImZpZWxkLm5hbWVcIiAvPlxyXG5cclxuICAgICAgICAgICAgPGlucHV0ICpuZ1N3aXRjaENhc2U9XCInZW1haWwnXCIgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5uYW1lXCIgdHlwZT1cImVtYWlsXCIgW2lkXT1cImZpZWxkLm5hbWVcIiAvPlxyXG5cclxuICAgICAgICAgICAgPGlucHV0ICpuZ1N3aXRjaENhc2U9XCIncGFzc3dvcmQnXCIgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5uYW1lXCIgdHlwZT1cInBhc3N3b3JkXCIgW2lkXT1cImZpZWxkLm5hbWVcIiAvPlxyXG5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3NlbGVjdCdcIj5cclxuICAgICAgICAgICAgICA8c2VsZWN0IFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQubmFtZVwiIFtpZF09XCJmaWVsZC5uYW1lXCI+XHJcbiAgICAgICAgICAgICAgICA8IS0tIFJlbmRlciBncm91cGVkIG9wdGlvbnMgLS0+XHJcbiAgICAgICAgICAgICAgICA8b3B0Z3JvdXAgKm5nRm9yPVwibGV0IGdyb3VwIG9mIGdyb3VwZWRPcHRpb25zW2ZpZWxkLm5hbWVdXCIgW2xhYmVsXT1cImdyb3VwLmdyb3VwTGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGdyb3VwLm9wdGlvbnNcIiBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgb3B0aW9uLmxhYmVsIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPC9vcHRncm91cD5cclxuICAgICAgICAgICAgICAgIDwhLS0gUmVuZGVyIGZsYXQgb3B0aW9ucyAtLT5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBmbGF0T3B0aW9uc1tmaWVsZC5uYW1lXVwiIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAge3sgb3B0aW9uLmxhYmVsIH19XHJcbiAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdmaWVsZF9kZXNjcmlwdGlvbiB2YWxpZGF0aW9uX21lc3NhZ2UgZ2ZpZWxkX3ZhbGlkYXRpb25fbWVzc2FnZVwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiZm9ybUdyb3VwLmdldChmaWVsZC5uYW1lKT8uaW52YWxpZCAmJiBmb3JtR3JvdXAuZ2V0KGZpZWxkLm5hbWUpPy50b3VjaGVkXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmb3JtR3JvdXAuZ2V0KGZpZWxkLm5hbWUpPy5lcnJvcnM/LlsncmVxdWlyZWQnXVwiPlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmb3JtR3JvdXAuZ2V0KGZpZWxkLm5hbWUpPy5lcnJvcnM/LlsnZW1haWwnXVwiPlBsZWFzZSBlbnRlciBhIHZhbGlkIGVtYWlsXHJcbiAgICAgICAgICAgICAgYWRkcmVzcy48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZvcm1Hcm91cC5nZXQoZmllbGQubmFtZSk/LmVycm9ycz8uWydtaW5sZW5ndGgnXVwiPlxyXG4gICAgICAgICAgICAgIE1pbmltdW0gbGVuZ3RoIGlzIHt7IGZvcm1Hcm91cC5nZXQoZmllbGQubmFtZSk/LmVycm9ycz8uWydtaW5sZW5ndGgnXS5yZXF1aXJlZExlbmd0aCB9fSBjaGFyYWN0ZXJzLlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZvcm1Hcm91cC5nZXQoZmllbGQubmFtZSk/LmVycm9ycz8uWydtYXhsZW5ndGgnXVwiPlxyXG4gICAgICAgICAgICAgIE1heGltdW0gbGVuZ3RoIGlzIHt7IGZvcm1Hcm91cC5nZXQoZmllbGQubmFtZSk/LmVycm9ycz8uWydtYXhsZW5ndGgnXS5yZXF1aXJlZExlbmd0aCB9fSBjaGFyYWN0ZXJzLlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZvcm1Hcm91cC5nZXQoZmllbGQubmFtZSk/LmVycm9ycz8uWydwYXR0ZXJuJ11cIj5cclxuICAgICAgICAgICAgICBQbGVhc2UgbWF0Y2ggdGhlIHJlcXVpcmVkIGZvcm1hdC5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJnZm9ybV9mb290ZXJcIj5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgW2Rpc2FibGVkXT1cImxvYWRpbmcgfHwgIWZvcm1Hcm91cC52YWxpZFwiPnt7Y29uZmlnLnN1Ym1pdFRleHR9fTwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gIDwvZm9ybT5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wYXR0ZXIvbmd4LWNvbXBvbmVudHMvc3JjL2xpYi9mb3Jtcy9mb3JtL2Zvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcGF0dGVyL25neC1jb21wb25lbnRzL3NyYy9saWIvZm9ybXMvZm9ybS9mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFKLE9BQU8sRUFBRSxXQUFXLEVBQWEsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOzs7O0FBYTNFLE1BQU0sT0FBTyxnQkFBZ0I7SUFFbEIsTUFBTSxDQUFpQjtJQUN2QixPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ2hCLEtBQUssR0FBa0IsSUFBSSxDQUFDO0lBRTNCLFVBQVUsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO0lBQ3JDLGdCQUFnQixHQUFHLElBQUksWUFBWSxFQUFhLENBQUM7SUFFM0QsU0FBUyxDQUFhO0lBQ3RCLFdBQVcsR0FBbUMsRUFBRSxDQUFDO0lBQ2pELGNBQWMsR0FBd0MsRUFBRSxDQUFDO0lBRXpELEVBQUUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7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LENBQUMsU0FBUyxDQUFDLEdBQUcsT0FBc0IsQ0FBQztRQUN2RCxDQUFDO0lBQ0gsQ0FBQzt1R0FsRVUsZ0JBQWdCOzJGQUFoQixnQkFBZ0IsbU5DbkI3QiwweEhBK0VBLDJDRG5FSSxZQUFZLDJiQUNaLG1CQUFtQiwwZ0RBQ25CLGtCQUFrQjs7MkZBS1QsZ0JBQWdCO2tCQVg1QixTQUFTOytCQUNFLFVBQVUsY0FDUixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLGtCQUFrQjtxQkFDbkIsbUJBRWdCLHVCQUF1QixDQUFDLE1BQU07OEJBSXRDLE1BQU07c0JBQWQsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUVJLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIERlc3Ryb3lSZWYsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBQdHJGb3JtQ29uZmlnLCBQdHJPcHRpb24sIFB0ck9wdGlvbkdyb3VwIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBQdHJCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9wdHItYnV0dG9uL3B0ci1idXR0b24uY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncHRyLWZvcm0nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIFB0ckJ1dHRvbkNvbXBvbmVudFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQdHJGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgQElucHV0KCkgY29uZmlnITogUHRyRm9ybUNvbmZpZztcclxuICBASW5wdXQoKSBsb2FkaW5nID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZXJyb3I6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICBAT3V0cHV0KCkgZm9ybVN1Ym1pdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBmb3JtR3JvdXBDcmVhdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxGb3JtR3JvdXA+KCk7XHJcblxyXG4gIGZvcm1Hcm91cCE6IEZvcm1Hcm91cDtcclxuICBmbGF0T3B0aW9uczogeyBba2V5OiBzdHJpbmddOiBQdHJPcHRpb25bXSB9ID0ge307XHJcbiAgZ3JvdXBlZE9wdGlvbnM6IHsgW2tleTogc3RyaW5nXTogUHRyT3B0aW9uR3JvdXBbXSB9ID0ge307XHJcblxyXG4gIGZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKTtcclxuICBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gIGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZilcclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmJ1aWxkRm9ybSgpO1xyXG4gICAgdGhpcy5mb3JtR3JvdXBDcmVhdGVkLmVtaXQodGhpcy5mb3JtR3JvdXApO1xyXG5cclxuICAgIHRoaXMuY29uZmlnLmZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcclxuICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdzZWxlY3QnICYmIGZpZWxkLm9wdGlvbnMgaW5zdGFuY2VvZiBPYnNlcnZhYmxlKSB7XHJcbiAgICAgICAgZmllbGQub3B0aW9uc1xyXG4gICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKG9wdGlvbnMgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NPcHRpb25zKGZpZWxkLm5hbWUsIG9wdGlvbnMpO1xyXG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTsgLy8gVHJpZ2dlciBjaGFuZ2UgZGV0ZWN0aW9uIGFmdGVyIG9wdGlvbnMgYXJlIGxvYWRlZFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZmllbGQudHlwZSA9PT0gJ3NlbGVjdCcgJiYgQXJyYXkuaXNBcnJheShmaWVsZC5vcHRpb25zKSkge1xyXG4gICAgICAgIHRoaXMucHJvY2Vzc09wdGlvbnMoZmllbGQubmFtZSwgZmllbGQub3B0aW9ucyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYnVpbGRGb3JtKCk6IHZvaWQge1xyXG4gICAgY29uc3QgZ3JvdXA6IGFueSA9IHt9O1xyXG4gICAgdGhpcy5jb25maWcuZmllbGRzLmZvckVhY2goZmllbGQgPT4ge1xyXG4gICAgICBncm91cFtmaWVsZC5uYW1lXSA9IFtmaWVsZC52YWx1ZSB8fCAnJywgZmllbGQudmFsaWRhdG9ycyB8fCBbXV07XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZm9ybUdyb3VwID0gdGhpcy5mYi5ncm91cChncm91cCk7XHJcbiAgfVxyXG5cclxuICBvblN1Ym1pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmZvcm1Hcm91cC52YWxpZCkge1xyXG4gICAgICB0aGlzLmZvcm1TdWJtaXQuZW1pdCh0aGlzLmZvcm1Hcm91cC52YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVzZXRGb3JtKCk6IHZvaWQge1xyXG4gICAgdGhpcy5mb3JtR3JvdXAucmVzZXQoKTtcclxuICAgIHRoaXMuY29uZmlnLmZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcclxuICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybUdyb3VwLmdldChmaWVsZC5uYW1lKTtcclxuICAgICAgY29udHJvbD8uc2V0VmFsdWUoZmllbGQudmFsdWUgfHwgJycsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIHByaXZhdGUgcHJvY2Vzc09wdGlvbnMoZmllbGROYW1lOiBzdHJpbmcsIG9wdGlvbnM6IFB0ck9wdGlvbltdIHwgUHRyT3B0aW9uR3JvdXBbXSk6IHZvaWQge1xyXG4gICAgaWYgKG9wdGlvbnMubGVuZ3RoID4gMCAmJiAnb3B0aW9ucycgaW4gb3B0aW9uc1swXSkge1xyXG4gICAgICB0aGlzLmdyb3VwZWRPcHRpb25zW2ZpZWxkTmFtZV0gPSBvcHRpb25zIGFzIFB0ck9wdGlvbkdyb3VwW107XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZsYXRPcHRpb25zW2ZpZWxkTmFtZV0gPSBvcHRpb25zIGFzIFB0ck9wdGlvbltdO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IFtjbGFzc109XCInZ2Zvcm1fd3JhcHBlciAnICsgY29uZmlnLmZvcm1DbGFzc1wiPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiZ2Zvcm1fdmFsaWRhdGlvbl9lcnJvcnNcIiAqbmdJZj1cImVycm9yXCI+XHJcbiAgICA8aDIgY2xhc3M9XCJnZm9ybV9zdWJtaXNzaW9uX2Vycm9yIGhpZGVfc3VtbWFyeVwiPnt7ZXJyb3J9fTwvaDI+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgKm5nSWY9XCJjb25maWcudGl0bGVcIiBjbGFzcz1cImdmb3JtX2hlYWRpbmdcIj5cclxuICAgIDxoMiBjbGFzcz1cImdmb3JtX3RpdGxlXCI+e3sgY29uZmlnLnRpdGxlIH19PC9oMj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIiAobmdTdWJtaXQpPVwib25TdWJtaXQoKVwiPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJnZm9ybV9maWVsZHNcIj5cclxuXHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZpZWxkIG9mIGNvbmZpZy5maWVsZHNcIj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImdmaWVsZCBnZmllbGQtLXdpZHRoLXt7ZmllbGQuc2l6ZX19XCIgW2NsYXNzLmdmb3JtX2hpZGRlbl09XCJmaWVsZC50eXBlID09PSAnaGlkZGVuJ1wiXHJcbiAgICAgICAgICBbY2xhc3MuZ2ZpZWxkX2Vycm9yXT1cImZvcm1Hcm91cC5nZXQoZmllbGQubmFtZSk/LmludmFsaWQgJiYgZm9ybUdyb3VwLmdldChmaWVsZC5uYW1lKT8udG91Y2hlZFwiPlxyXG5cclxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdmaWVsZF9sYWJlbCBnZm9ybS1maWVsZC1sYWJlbFwiIFtmb3JdPVwiZmllbGQubmFtZVwiPnt7IGZpZWxkLmxhYmVsIH19PC9sYWJlbD5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJmaWVsZC50eXBlXCI+XHJcblxyXG4gICAgICAgICAgICA8aW5wdXQgKm5nU3dpdGNoQ2FzZT1cIid0ZXh0J1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQubmFtZVwiIHR5cGU9XCJ0ZXh0XCIgW2lkXT1cImZpZWxkLm5hbWVcIiAvPlxyXG5cclxuICAgICAgICAgICAgPHRleHRhcmVhICpuZ1N3aXRjaENhc2U9XCIndGV4dGFyZWEnXCIgW2lkXT1cImZpZWxkLm5hbWVcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWVcIj48L3RleHRhcmVhPlxyXG5cclxuICAgICAgICAgICAgPGlucHV0ICpuZ1N3aXRjaENhc2U9XCInZGF0ZSdcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWVcIiB0eXBlPVwiZGF0ZVwiIFtpZF09XCJmaWVsZC5uYW1lXCIgLz5cclxuXHJcbiAgICAgICAgICAgIDxpbnB1dCAqbmdTd2l0Y2hDYXNlPVwiJ251bWJlcidcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWVcIiB0eXBlPVwibnVtYmVyXCIgW2lkXT1cImZpZWxkLm5hbWVcIiAvPlxyXG5cclxuICAgICAgICAgICAgPGlucHV0ICpuZ1N3aXRjaENhc2U9XCInZW1haWwnXCIgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5uYW1lXCIgdHlwZT1cImVtYWlsXCIgW2lkXT1cImZpZWxkLm5hbWVcIiAvPlxyXG5cclxuICAgICAgICAgICAgPGlucHV0ICpuZ1N3aXRjaENhc2U9XCIncGFzc3dvcmQnXCIgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5uYW1lXCIgdHlwZT1cInBhc3N3b3JkXCIgW2lkXT1cImZpZWxkLm5hbWVcIiAvPlxyXG5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3NlbGVjdCdcIj5cclxuICAgICAgICAgICAgICA8c2VsZWN0IFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQubmFtZVwiIFtpZF09XCJmaWVsZC5uYW1lXCI+XHJcbiAgICAgICAgICAgICAgICA8IS0tIFJlbmRlciBncm91cGVkIG9wdGlvbnMgLS0+XHJcbiAgICAgICAgICAgICAgICA8b3B0Z3JvdXAgKm5nRm9yPVwibGV0IGdyb3VwIG9mIGdyb3VwZWRPcHRpb25zW2ZpZWxkLm5hbWVdXCIgW2xhYmVsXT1cImdyb3VwLmdyb3VwTGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGdyb3VwLm9wdGlvbnNcIiBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgb3B0aW9uLmxhYmVsIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPC9vcHRncm91cD5cclxuICAgICAgICAgICAgICAgIDwhLS0gUmVuZGVyIGZsYXQgb3B0aW9ucyAtLT5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBmbGF0T3B0aW9uc1tmaWVsZC5uYW1lXVwiIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAge3sgb3B0aW9uLmxhYmVsIH19XHJcbiAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdmaWVsZF9kZXNjcmlwdGlvbiB2YWxpZGF0aW9uX21lc3NhZ2UgZ2ZpZWxkX3ZhbGlkYXRpb25fbWVzc2FnZVwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiZm9ybUdyb3VwLmdldChmaWVsZC5uYW1lKT8uaW52YWxpZCAmJiBmb3JtR3JvdXAuZ2V0KGZpZWxkLm5hbWUpPy50b3VjaGVkXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmb3JtR3JvdXAuZ2V0KGZpZWxkLm5hbWUpPy5lcnJvcnM/LlsncmVxdWlyZWQnXVwiPlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmb3JtR3JvdXAuZ2V0KGZpZWxkLm5hbWUpPy5lcnJvcnM/LlsnZW1haWwnXVwiPlBsZWFzZSBlbnRlciBhIHZhbGlkIGVtYWlsXHJcbiAgICAgICAgICAgICAgYWRkcmVzcy48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZvcm1Hcm91cC5nZXQoZmllbGQubmFtZSk/LmVycm9ycz8uWydtaW5sZW5ndGgnXVwiPlxyXG4gICAgICAgICAgICAgIE1pbmltdW0gbGVuZ3RoIGlzIHt7IGZvcm1Hcm91cC5nZXQoZmllbGQubmFtZSk/LmVycm9ycz8uWydtaW5sZW5ndGgnXS5yZXF1aXJlZExlbmd0aCB9fSBjaGFyYWN0ZXJzLlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZvcm1Hcm91cC5nZXQoZmllbGQubmFtZSk/LmVycm9ycz8uWydtYXhsZW5ndGgnXVwiPlxyXG4gICAgICAgICAgICAgIE1heGltdW0gbGVuZ3RoIGlzIHt7IGZvcm1Hcm91cC5nZXQoZmllbGQubmFtZSk/LmVycm9ycz8uWydtYXhsZW5ndGgnXS5yZXF1aXJlZExlbmd0aCB9fSBjaGFyYWN0ZXJzLlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZvcm1Hcm91cC5nZXQoZmllbGQubmFtZSk/LmVycm9ycz8uWydwYXR0ZXJuJ11cIj5cclxuICAgICAgICAgICAgICBQbGVhc2UgbWF0Y2ggdGhlIHJlcXVpcmVkIGZvcm1hdC5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJnZm9ybV9mb290ZXJcIj5cclxuICAgICAgPHB0ci1idXR0b24gYnV0dG9uVHlwZT1cInN1Ym1pdFwiIFtpc0Rpc2FibGVkXT1cImxvYWRpbmcgfHwgIWZvcm1Hcm91cC52YWxpZFwiPnt7Y29uZmlnLnN1Ym1pdFRleHR9fTwvcHRyLWJ1dHRvbj5cclxuICAgIDwvZGl2PlxyXG5cclxuICA8L2Zvcm0+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class PtrLoadingSpinnerComponent {
|
|
5
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: PtrLoadingSpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: PtrLoadingSpinnerComponent, isStandalone: true, selector: "ptr-loading-spinner", ngImport: i0, template: `<div class="vdx-progress-spinner"></div>`, isInline: true, styles: [":host{display:inline-block;line-height:0}.vdx-progress-spinner{display:inline-block;width:25px;height:25px;transform:scaleZ(1)}.vdx-progress-spinner:before{position:absolute;content:\"\";background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 40 40' style='enable-background:new 0 0 40 40;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0%7Bfill:%23272e3e;%7D%0A%3C/style%3E%3Ccircle class='st0' cx='34' cy='6' r='6'/%3E%3Ccircle class='st0' cx='6' cy='6' r='6'/%3E%3Ccircle class='st0' cx='6' cy='34' r='6'/%3E%3Ccircle class='st0' cx='34' cy='34' r='6'/%3E%3C/svg%3E\");height:40px;width:40px;left:-8px;top:-8px;border:none;display:block;animation:loader-anim 1.5s 0s ease-in-out infinite}.vdx-progress-spinner:after{content:\"\";position:absolute;height:12px;width:12px;border:none;border-radius:12px;display:block;left:6px;top:6px;background-color:#272e3e;animation:loader-anim-dot 1.5s 0s ease-in-out infinite}@keyframes loader-anim{0%{transform:rotate(0) scale(0);opacity:.5}50%{transform:rotate(180deg) scale(1);opacity:1}to{transform:rotate(360deg) scale(0);opacity:.2}}@keyframes loader-anim-dot{0%{opacity:1}50%{opacity:0}to{opacity:1}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
7
|
+
}
|
|
8
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: PtrLoadingSpinnerComponent, decorators: [{
|
|
9
|
+
type: Component,
|
|
10
|
+
args: [{ selector: 'ptr-loading-spinner', standalone: true, imports: [CommonModule], template: `<div class="vdx-progress-spinner"></div>`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:inline-block;line-height:0}.vdx-progress-spinner{display:inline-block;width:25px;height:25px;transform:scaleZ(1)}.vdx-progress-spinner:before{position:absolute;content:\"\";background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 40 40' style='enable-background:new 0 0 40 40;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0%7Bfill:%23272e3e;%7D%0A%3C/style%3E%3Ccircle class='st0' cx='34' cy='6' r='6'/%3E%3Ccircle class='st0' cx='6' cy='6' r='6'/%3E%3Ccircle class='st0' cx='6' cy='34' r='6'/%3E%3Ccircle class='st0' cx='34' cy='34' r='6'/%3E%3C/svg%3E\");height:40px;width:40px;left:-8px;top:-8px;border:none;display:block;animation:loader-anim 1.5s 0s ease-in-out infinite}.vdx-progress-spinner:after{content:\"\";position:absolute;height:12px;width:12px;border:none;border-radius:12px;display:block;left:6px;top:6px;background-color:#272e3e;animation:loader-anim-dot 1.5s 0s ease-in-out infinite}@keyframes loader-anim{0%{transform:rotate(0) scale(0);opacity:.5}50%{transform:rotate(180deg) scale(1);opacity:1}to{transform:rotate(360deg) scale(0);opacity:.2}}@keyframes loader-anim-dot{0%{opacity:1}50%{opacity:0}to{opacity:1}}\n"] }]
|
|
11
|
+
}] });
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGluZy1zcGlubmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3BhdHRlci9uZ3gtY29tcG9uZW50cy9zcmMvbGliL2xvYWRpbmctc3Bpbm5lci9sb2FkaW5nLXNwaW5uZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVVuRSxNQUFNLE9BQU8sMEJBQTBCO3VHQUExQiwwQkFBMEI7MkZBQTFCLDBCQUEwQiwrRUFKM0IsMENBQTBDLDQwQ0FEMUMsWUFBWTs7MkZBS1gsMEJBQTBCO2tCQVJ0QyxTQUFTOytCQUNFLHFCQUFxQixjQUNuQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUMsWUFDYiwwQ0FBMEMsbUJBRW5DLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3B0ci1sb2FkaW5nLXNwaW5uZXInLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXHJcbiAgdGVtcGxhdGU6IGA8ZGl2IGNsYXNzPVwidmR4LXByb2dyZXNzLXNwaW5uZXJcIj48L2Rpdj5gLFxyXG4gIHN0eWxlVXJsczogW1wiLi9sb2FkaW5nLXNwaW5uZXIuY29tcG9uZW50LnNjc3NcIl0sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIFB0ckxvYWRpbmdTcGlubmVyQ29tcG9uZW50IHsgfVxyXG4iXX0=
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { Directive, ElementRef, HostBinding, inject, Input, Renderer2, ViewContainerRef } from '@angular/core';
|
|
2
|
+
import { PtrLoadingSpinnerComponent } from './loading-spinner.component';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class PtrLoadingSpinnerDirective {
|
|
5
|
+
targetEl = inject(ElementRef);
|
|
6
|
+
viewContainerRef = inject(ViewContainerRef);
|
|
7
|
+
renderer = inject(Renderer2);
|
|
8
|
+
spinnerInstance;
|
|
9
|
+
overlay;
|
|
10
|
+
hostPosition = 'relative';
|
|
11
|
+
set ptrLoadingSpinner(loading) {
|
|
12
|
+
if (loading) {
|
|
13
|
+
this.addBlurEffect();
|
|
14
|
+
this.addOverlay();
|
|
15
|
+
this.addProgressSpinnerComponent();
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
this.removeBlurEffect();
|
|
19
|
+
this.removeOverlay();
|
|
20
|
+
this.removeProgressSpinnerComponent();
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
ngOnDestroy() {
|
|
24
|
+
this.spinnerInstance?.destroy();
|
|
25
|
+
this.removeBlurEffect();
|
|
26
|
+
}
|
|
27
|
+
addProgressSpinnerComponent() {
|
|
28
|
+
this.spinnerInstance = this.viewContainerRef.createComponent(PtrLoadingSpinnerComponent);
|
|
29
|
+
this.overlay?.appendChild(this.spinnerInstance.location.nativeElement);
|
|
30
|
+
}
|
|
31
|
+
removeProgressSpinnerComponent() {
|
|
32
|
+
this.spinnerInstance?.destroy();
|
|
33
|
+
}
|
|
34
|
+
addOverlay() {
|
|
35
|
+
this.overlay = this.renderer.createElement('div');
|
|
36
|
+
this.renderer.setStyle(this.overlay, 'display', 'flex');
|
|
37
|
+
this.renderer.setStyle(this.overlay, 'justify-content', 'center');
|
|
38
|
+
this.renderer.setStyle(this.overlay, 'align-items', 'center');
|
|
39
|
+
this.renderer.setStyle(this.overlay, 'position', 'absolute');
|
|
40
|
+
this.renderer.setStyle(this.overlay, 'top', '0');
|
|
41
|
+
this.renderer.setStyle(this.overlay, 'left', '0');
|
|
42
|
+
this.renderer.setStyle(this.overlay, 'width', '100%');
|
|
43
|
+
this.renderer.setStyle(this.overlay, 'height', '100%');
|
|
44
|
+
this.renderer.appendChild(this.targetEl.nativeElement, this.overlay);
|
|
45
|
+
}
|
|
46
|
+
removeOverlay() {
|
|
47
|
+
if (this.overlay) {
|
|
48
|
+
this.renderer.removeChild(this.targetEl.nativeElement, this.overlay);
|
|
49
|
+
this.overlay = undefined;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
addBlurEffect() {
|
|
53
|
+
const style = this.renderer.createElement('style');
|
|
54
|
+
const blurRule = `
|
|
55
|
+
.ptr-loading-blur > *:not(:last-child) {
|
|
56
|
+
filter: blur(2px);
|
|
57
|
+
transition: filter 0.3s ease;
|
|
58
|
+
}
|
|
59
|
+
`;
|
|
60
|
+
this.renderer.appendChild(style, this.renderer.createText(blurRule));
|
|
61
|
+
this.renderer.appendChild(document.head, style);
|
|
62
|
+
this.renderer.addClass(this.targetEl.nativeElement, 'ptr-loading-blur');
|
|
63
|
+
}
|
|
64
|
+
removeBlurEffect() {
|
|
65
|
+
this.renderer.removeClass(this.targetEl.nativeElement, 'ptr-loading-blur');
|
|
66
|
+
}
|
|
67
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: PtrLoadingSpinnerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
68
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.4", type: PtrLoadingSpinnerDirective, isStandalone: true, selector: "[ptrLoadingSpinner]", inputs: { ptrLoadingSpinner: "ptrLoadingSpinner" }, host: { properties: { "style.position": "this.hostPosition" } }, ngImport: i0 });
|
|
69
|
+
}
|
|
70
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: PtrLoadingSpinnerDirective, decorators: [{
|
|
71
|
+
type: Directive,
|
|
72
|
+
args: [{
|
|
73
|
+
selector: '[ptrLoadingSpinner]',
|
|
74
|
+
standalone: true
|
|
75
|
+
}]
|
|
76
|
+
}], propDecorators: { hostPosition: [{
|
|
77
|
+
type: HostBinding,
|
|
78
|
+
args: ['style.position']
|
|
79
|
+
}], ptrLoadingSpinner: [{
|
|
80
|
+
type: Input,
|
|
81
|
+
args: [{ required: true }]
|
|
82
|
+
}] } });
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGluZy1zcGlubmVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3BhdHRlci9uZ3gtY29tcG9uZW50cy9zcmMvbGliL2xvYWRpbmctc3Bpbm5lci9sb2FkaW5nLXNwaW5uZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBYSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEksT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBTXpFLE1BQU0sT0FBTywwQkFBMEI7SUFFN0IsUUFBUSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM5QixnQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUM1QyxRQUFRLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRTdCLGVBQWUsQ0FBNEM7SUFDM0QsT0FBTyxDQUFlO0lBRUMsWUFBWSxHQUFHLFVBQVUsQ0FBQztJQUV6RCxJQUErQixpQkFBaUIsQ0FBQyxPQUFnQjtRQUMvRCxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztRQUNyQyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsOEJBQThCLEVBQUUsQ0FBQztRQUN4QyxDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsZUFBZSxFQUFFLE9BQU8sRUFBRSxDQUFD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MEJBQTBCOzJGQUExQiwwQkFBMEI7OzJGQUExQiwwQkFBMEI7a0JBSnRDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOzhCQVVnQyxZQUFZO3NCQUExQyxXQUFXO3VCQUFDLGdCQUFnQjtnQkFFRSxpQkFBaUI7c0JBQS9DLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50UmVmLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nLCBpbmplY3QsIElucHV0LCBPbkRlc3Ryb3ksIFJlbmRlcmVyMiwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQdHJMb2FkaW5nU3Bpbm5lckNvbXBvbmVudCB9IGZyb20gJy4vbG9hZGluZy1zcGlubmVyLmNvbXBvbmVudCc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1twdHJMb2FkaW5nU3Bpbm5lcl0nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWVcclxufSlcclxuZXhwb3J0IGNsYXNzIFB0ckxvYWRpbmdTcGlubmVyRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuXHJcbiAgcHJpdmF0ZSB0YXJnZXRFbCA9IGluamVjdChFbGVtZW50UmVmKTtcclxuICBwcml2YXRlIHZpZXdDb250YWluZXJSZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XHJcbiAgcHJpdmF0ZSByZW5kZXJlciA9IGluamVjdChSZW5kZXJlcjIpO1xyXG5cclxuICBwcml2YXRlIHNwaW5uZXJJbnN0YW5jZT86IENvbXBvbmVudFJlZjxQdHJMb2FkaW5nU3Bpbm5lckNvbXBvbmVudD47XHJcbiAgcHJpdmF0ZSBvdmVybGF5PzogSFRNTEVsZW1lbnQ7XHJcblxyXG4gIEBIb3N0QmluZGluZygnc3R5bGUucG9zaXRpb24nKSBob3N0UG9zaXRpb24gPSAncmVsYXRpdmUnO1xyXG5cclxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBzZXQgcHRyTG9hZGluZ1NwaW5uZXIobG9hZGluZzogYm9vbGVhbikge1xyXG4gICAgaWYgKGxvYWRpbmcpIHtcclxuICAgICAgdGhpcy5hZGRCbHVyRWZmZWN0KCk7XHJcbiAgICAgIHRoaXMuYWRkT3ZlcmxheSgpO1xyXG4gICAgICB0aGlzLmFkZFByb2dyZXNzU3Bpbm5lckNvbXBvbmVudCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yZW1vdmVCbHVyRWZmZWN0KCk7XHJcbiAgICAgIHRoaXMucmVtb3ZlT3ZlcmxheSgpO1xyXG4gICAgICB0aGlzLnJlbW92ZVByb2dyZXNzU3Bpbm5lckNvbXBvbmVudCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnNwaW5uZXJJbnN0YW5jZT8uZGVzdHJveSgpO1xyXG4gICAgdGhpcy5yZW1vdmVCbHVyRWZmZWN0KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkZFByb2dyZXNzU3Bpbm5lckNvbXBvbmVudCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Bpbm5lckluc3RhbmNlID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChQdHJMb2FkaW5nU3Bpbm5lckNvbXBvbmVudCk7XHJcbiAgICB0aGlzLm92ZXJsYXk/LmFwcGVuZENoaWxkKHRoaXMuc3Bpbm5lckluc3RhbmNlLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZW1vdmVQcm9ncmVzc1NwaW5uZXJDb21wb25lbnQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNwaW5uZXJJbnN0YW5jZT8uZGVzdHJveSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZGRPdmVybGF5KCk6IHZvaWQge1xyXG4gICAgdGhpcy5vdmVybGF5ID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5vdmVybGF5LCAnZGlzcGxheScsICdmbGV4Jyk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMub3ZlcmxheSwgJ2p1c3RpZnktY29udGVudCcsICdjZW50ZXInKTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5vdmVybGF5LCAnYWxpZ24taXRlbXMnLCAnY2VudGVyJyk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMub3ZlcmxheSwgJ3Bvc2l0aW9uJywgJ2Fic29sdXRlJyk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMub3ZlcmxheSwgJ3RvcCcsICcwJyk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMub3ZlcmxheSwgJ2xlZnQnLCAnMCcpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLm92ZXJsYXksICd3aWR0aCcsICcxMDAlJyk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMub3ZlcmxheSwgJ2hlaWdodCcsICcxMDAlJyk7XHJcblxyXG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLnRhcmdldEVsLm5hdGl2ZUVsZW1lbnQsIHRoaXMub3ZlcmxheSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlbW92ZU92ZXJsYXkoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5vdmVybGF5KSB7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQodGhpcy50YXJnZXRFbC5uYXRpdmVFbGVtZW50LCB0aGlzLm92ZXJsYXkpO1xyXG4gICAgICB0aGlzLm92ZXJsYXkgPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkZEJsdXJFZmZlY3QoKTogdm9pZCB7XHJcbiAgICBjb25zdCBzdHlsZSA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcclxuICAgIGNvbnN0IGJsdXJSdWxlID0gYFxyXG4gICAgICAucHRyLWxvYWRpbmctYmx1ciA+ICo6bm90KDpsYXN0LWNoaWxkKSB7XHJcbiAgICAgICAgZmlsdGVyOiBibHVyKDJweCk7XHJcbiAgICAgICAgdHJhbnNpdGlvbjogZmlsdGVyIDAuM3MgZWFzZTtcclxuICAgICAgfVxyXG4gICAgYDtcclxuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQoc3R5bGUsIHRoaXMucmVuZGVyZXIuY3JlYXRlVGV4dChibHVyUnVsZSkpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChkb2N1bWVudC5oZWFkLCBzdHlsZSk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMudGFyZ2V0RWwubmF0aXZlRWxlbWVudCwgJ3B0ci1sb2FkaW5nLWJsdXInKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVtb3ZlQmx1ckVmZmVjdCgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy50YXJnZXRFbC5uYXRpdmVFbGVtZW50LCAncHRyLWxvYWRpbmctYmx1cicpO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
|
|
@@ -6,10 +6,10 @@ import * as i1 from "@angular/common";
|
|
|
6
6
|
import * as i2 from "@angular/router";
|
|
7
7
|
export class PtrMenuComponent {
|
|
8
8
|
menuItems = [];
|
|
9
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.
|
|
10
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.
|
|
9
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: PtrMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: PtrMenuComponent, isStandalone: true, selector: "ptr-menu", inputs: { menuItems: "menuItems" }, ngImport: i0, template: "<nav class=\"ptr-menu\">\r\n <ul class=\"menu\">\r\n <li class=\"menu-item\" *ngFor=\"let item of menuItems\" routerLinkActive=\"current_page_item\"\r\n [routerLinkActiveOptions]=\"{exact: true}\">\r\n <a [routerLink]=\"item.link || '#'\">{{item.label}}</a>\r\n </li>\r\n </ul>\r\n</nav>\r\n", styles: [".menu{display:flex;flex-direction:row;gap:var(--wp--custom--content--gap, 40px);align-items:center}.menu>ul{display:flex;flex-direction:row;gap:var(--wp--custom--content--gap, 40px);align-items:center}.menu--vertical{flex-direction:column;align-items:flex-start;gap:calc(var(--wp--custom--content--gap, 40px) / 2)}.menu--vertical>ul{flex-direction:column;align-items:flex-start;gap:calc(var(--wp--custom--content--gap, 40px) / 2)}.menu li.current-menu-item>a,.menu li.current_page_item>a,.menu li.current-menu-parent>a{opacity:1;font-weight:700}.menu a{transition:color .33s}.menu a:hover,.menu a:focus{text-decoration:none}.menu a{position:relative;text-decoration:none;padding:8px 0;font-family:var(--wp--preset--font-family--heading-font);letter-spacing:-.72px;color:var(--ptr-menu-color, var(--wp--preset--color--black))}.menu a:before,.menu a:after{content:\"\";position:absolute;bottom:2px;left:0;right:0;height:2px;background-color:var(--wp--preset--color--primary)}.menu a:before{opacity:0;transform:translateY(-8px);transition:transform 0s cubic-bezier(.175,.885,.32,1.275),opacity 0s}.menu a:after{opacity:0;transform:translateY(4px);transition:transform .2s cubic-bezier(.175,.885,.32,1.275),opacity .2s}.menu a:hover:before,.menu a:hover:after,.menu a:focus:before,.menu a:focus:after{opacity:1;transform:translateY(0)}.menu a:hover:before,.menu a:focus:before{transition:transform .2s cubic-bezier(.175,.885,.32,1.275),opacity .2s}.menu a:hover:after,.menu a:focus:after{transition:transform 0s .2s cubic-bezier(.175,.885,.32,1.275),opacity 0s .2s}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i2.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
11
11
|
}
|
|
12
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.
|
|
12
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: PtrMenuComponent, decorators: [{
|
|
13
13
|
type: Component,
|
|
14
14
|
args: [{ selector: 'ptr-menu', standalone: true, imports: [CommonModule, RouterModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<nav class=\"ptr-menu\">\r\n <ul class=\"menu\">\r\n <li class=\"menu-item\" *ngFor=\"let item of menuItems\" routerLinkActive=\"current_page_item\"\r\n [routerLinkActiveOptions]=\"{exact: true}\">\r\n <a [routerLink]=\"item.link || '#'\">{{item.label}}</a>\r\n </li>\r\n </ul>\r\n</nav>\r\n", styles: [".menu{display:flex;flex-direction:row;gap:var(--wp--custom--content--gap, 40px);align-items:center}.menu>ul{display:flex;flex-direction:row;gap:var(--wp--custom--content--gap, 40px);align-items:center}.menu--vertical{flex-direction:column;align-items:flex-start;gap:calc(var(--wp--custom--content--gap, 40px) / 2)}.menu--vertical>ul{flex-direction:column;align-items:flex-start;gap:calc(var(--wp--custom--content--gap, 40px) / 2)}.menu li.current-menu-item>a,.menu li.current_page_item>a,.menu li.current-menu-parent>a{opacity:1;font-weight:700}.menu a{transition:color .33s}.menu a:hover,.menu a:focus{text-decoration:none}.menu a{position:relative;text-decoration:none;padding:8px 0;font-family:var(--wp--preset--font-family--heading-font);letter-spacing:-.72px;color:var(--ptr-menu-color, var(--wp--preset--color--black))}.menu a:before,.menu a:after{content:\"\";position:absolute;bottom:2px;left:0;right:0;height:2px;background-color:var(--wp--preset--color--primary)}.menu a:before{opacity:0;transform:translateY(-8px);transition:transform 0s cubic-bezier(.175,.885,.32,1.275),opacity 0s}.menu a:after{opacity:0;transform:translateY(4px);transition:transform .2s cubic-bezier(.175,.885,.32,1.275),opacity .2s}.menu a:hover:before,.menu a:hover:after,.menu a:focus:before,.menu a:focus:after{opacity:1;transform:translateY(0)}.menu a:hover:before,.menu a:focus:before{transition:transform .2s cubic-bezier(.175,.885,.32,1.275),opacity .2s}.menu a:hover:after,.menu a:focus:after{transition:transform 0s .2s cubic-bezier(.175,.885,.32,1.275),opacity 0s .2s}\n"] }]
|
|
15
15
|
}], propDecorators: { menuItems: [{
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, computed, EventEmitter, HostBinding, Input, Output, signal } from '@angular/core';
|
|
3
|
+
import { RouterLink } from '@angular/router';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common";
|
|
6
|
+
export class PtrButtonComponent {
|
|
7
|
+
get hostClasses() {
|
|
8
|
+
const hostClass = [];
|
|
9
|
+
if (this.style() === 'secondary') {
|
|
10
|
+
hostClass.push('is-style-outline');
|
|
11
|
+
}
|
|
12
|
+
if (this.style() === 'error') {
|
|
13
|
+
hostClass.push('is-style-error-button');
|
|
14
|
+
}
|
|
15
|
+
if (this.style() === 'icon') {
|
|
16
|
+
hostClass.push('is-style-icon-button');
|
|
17
|
+
}
|
|
18
|
+
if (this.smallSize()) {
|
|
19
|
+
hostClass.push('is-style-smaller-element');
|
|
20
|
+
}
|
|
21
|
+
return hostClass.join(' ');
|
|
22
|
+
}
|
|
23
|
+
style = signal('normal');
|
|
24
|
+
type = signal('button');
|
|
25
|
+
disabled = signal(false);
|
|
26
|
+
href = signal(null);
|
|
27
|
+
routerLink = signal(null);
|
|
28
|
+
additionalClasses = signal('');
|
|
29
|
+
smallSize = signal(false);
|
|
30
|
+
set buttonStyle(value) {
|
|
31
|
+
this.style.set(value);
|
|
32
|
+
}
|
|
33
|
+
set buttonType(value) {
|
|
34
|
+
this.type.set(value);
|
|
35
|
+
}
|
|
36
|
+
set isDisabled(value) {
|
|
37
|
+
this.disabled.set(value);
|
|
38
|
+
}
|
|
39
|
+
set hrefLink(value) {
|
|
40
|
+
this.href.set(value);
|
|
41
|
+
}
|
|
42
|
+
set routerLinkValue(value) {
|
|
43
|
+
this.routerLink.set(value);
|
|
44
|
+
}
|
|
45
|
+
set extraClasses(value) {
|
|
46
|
+
this.additionalClasses.set(value);
|
|
47
|
+
}
|
|
48
|
+
set isSmallSize(value) {
|
|
49
|
+
if (value) {
|
|
50
|
+
this.smallSize.set(true);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
set isIconButton(value) {
|
|
54
|
+
if (value) {
|
|
55
|
+
this.style.set('icon');
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
clicked = new EventEmitter();
|
|
59
|
+
isLink = computed(() => !!this.href() || !!this.routerLink());
|
|
60
|
+
buttonClasses = computed(() => {
|
|
61
|
+
const classes = ['wp-block-button__link'];
|
|
62
|
+
if (this.style() !== 'normal') {
|
|
63
|
+
classes.push(`wp-block-button__link--${this.style()}`);
|
|
64
|
+
}
|
|
65
|
+
if (this.disabled() && this.isLink()) {
|
|
66
|
+
classes.push('disabled');
|
|
67
|
+
}
|
|
68
|
+
if (this.additionalClasses()) {
|
|
69
|
+
classes.push(this.additionalClasses());
|
|
70
|
+
}
|
|
71
|
+
return classes.join(' ');
|
|
72
|
+
});
|
|
73
|
+
onClick(event) {
|
|
74
|
+
if (this.disabled()) {
|
|
75
|
+
event.preventDefault();
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
this.clicked.emit(event);
|
|
79
|
+
}
|
|
80
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: PtrButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
81
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.4", type: PtrButtonComponent, isStandalone: true, selector: "ptr-button", inputs: { buttonStyle: "buttonStyle", buttonType: "buttonType", isDisabled: "isDisabled", hrefLink: "hrefLink", routerLinkValue: "routerLinkValue", extraClasses: "extraClasses", isSmallSize: "isSmallSize", isIconButton: "isIconButton" }, outputs: { clicked: "clicked" }, host: { properties: { "class": "this.hostClasses" } }, ngImport: i0, template: "<ng-template #contentTpl>\r\n <ng-content></ng-content>\r\n</ng-template>\r\n\r\n@if (isLink()) {\r\n<a [attr.href]=\"href()\" [routerLink]=\"routerLink()\" [class]=\"buttonClasses()\" [attr.disabled]=\"disabled() ? '' : null\"\r\n (click)=\"onClick($event)\">\r\n <ng-container [ngTemplateOutlet]=\"contentTpl\"></ng-container>\r\n</a>\r\n} @else {\r\n<button [type]=\"type()\" [class]=\"buttonClasses()\" [disabled]=\"disabled()\" (click)=\"onClick($event)\">\r\n <ng-container [ngTemplateOutlet]=\"contentTpl\"></ng-container>\r\n</button>\r\n}", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
82
|
+
}
|
|
83
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: PtrButtonComponent, decorators: [{
|
|
84
|
+
type: Component,
|
|
85
|
+
args: [{ selector: 'ptr-button', standalone: true, imports: [CommonModule, RouterLink], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template #contentTpl>\r\n <ng-content></ng-content>\r\n</ng-template>\r\n\r\n@if (isLink()) {\r\n<a [attr.href]=\"href()\" [routerLink]=\"routerLink()\" [class]=\"buttonClasses()\" [attr.disabled]=\"disabled() ? '' : null\"\r\n (click)=\"onClick($event)\">\r\n <ng-container [ngTemplateOutlet]=\"contentTpl\"></ng-container>\r\n</a>\r\n} @else {\r\n<button [type]=\"type()\" [class]=\"buttonClasses()\" [disabled]=\"disabled()\" (click)=\"onClick($event)\">\r\n <ng-container [ngTemplateOutlet]=\"contentTpl\"></ng-container>\r\n</button>\r\n}" }]
|
|
86
|
+
}], propDecorators: { hostClasses: [{
|
|
87
|
+
type: HostBinding,
|
|
88
|
+
args: ['class']
|
|
89
|
+
}], buttonStyle: [{
|
|
90
|
+
type: Input
|
|
91
|
+
}], buttonType: [{
|
|
92
|
+
type: Input
|
|
93
|
+
}], isDisabled: [{
|
|
94
|
+
type: Input
|
|
95
|
+
}], hrefLink: [{
|
|
96
|
+
type: Input
|
|
97
|
+
}], routerLinkValue: [{
|
|
98
|
+
type: Input
|
|
99
|
+
}], extraClasses: [{
|
|
100
|
+
type: Input
|
|
101
|
+
}], isSmallSize: [{
|
|
102
|
+
type: Input
|
|
103
|
+
}], isIconButton: [{
|
|
104
|
+
type: Input
|
|
105
|
+
}], clicked: [{
|
|
106
|
+
type: Output
|
|
107
|
+
}] } });
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHRyLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wYXR0ZXIvbmd4LWNvbXBvbmVudHMvc3JjL2xpYi9wdHItYnV0dG9uL3B0ci1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcGF0dGVyL25neC1jb21wb25lbnRzL3NyYy9saWIvcHRyLWJ1dHRvbi9wdHItYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9ILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBVzdDLE1BQU0sT0FBTyxrQkFBa0I7SUFFN0IsSUFBMEIsV0FBVztRQUNuQyxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDckIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDakMsU0FBUyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3JDLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUM3QixTQUFTLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQzVCLFNBQVMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUNyQixTQUFTLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDN0MsQ0FBQztRQUNELE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsS0FBSyxHQUFHLE1BQU0sQ0FBYyxRQUFRLENBQUMsQ0FBQztJQUN0QyxJQUFJLEdBQUcsTUFBTSxDQUFnQyxRQUFRLENBQUMsQ0FBQztJQUN2RCxRQUFRLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLElBQUksR0FBRyxNQUFNLENBQWdCLElBQUksQ0FBQyxDQUFDO0lBQ25DLFVBQVUsR0FBRyxNQUFNLENBQXdCLElBQUksQ0FBQyxDQUFDO0lBQ2pELGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQixTQUFTLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRTFCLElBQWEsV0FBVyxDQUFDLEtBQWtCO1FBQ3pDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFhLFVBQVUsQ0FBQyxLQUFvQztRQUMxRCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBYSxVQUFVLENBQUMsS0FBYztRQUNwQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBYSxRQUFRLENBQUMsS0FBb0I7UUFDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQWEsZUFBZSxDQUFDLEtBQTRCO1FBQ3ZELElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFhLFlBQVksQ0FBQyxLQUFhO1FBQ3JDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQWEsV0FBVyxDQUFDLEtBQWM7UUFDckMsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBYSxZQUFZLENBQUMsS0FBYztRQUN0QyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekIsQ0FBQztJQUNILENBQUM7SUFFUyxPQUFPLEdBQUcsSUFBSSxZQUFZLEVBQVMsQ0FBQztJQUU5QyxNQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBRTlELGFBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQzVCLE1BQU0sT0FBTyxHQUFHLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUUxQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM5QixPQUFPLENBQUMsSUFBSSxDQUFDLDBCQUEwQixJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztZQUNyQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzNCLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUM7WUFDN0IsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7UUFFRCxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0IsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLENBQUMsS0FBWTtRQUNsQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQ3BCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUM7dUdBM0ZVLGtCQUFrQjsyRkFBbEIsa0JBQWtCLDRZQ2IvQix5aUJBYUMsMkNESlcsWUFBWSxzTUFBRSxVQUFVOzsyRkFJdkIsa0JBQWtCO2tCQVA5QixTQUFTOytCQUNFLFlBQVksY0FDVixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLG1CQUVsQix1QkFBdUIsQ0FBQyxNQUFNOzhCQUlyQixXQUFXO3NCQUFwQyxXQUFXO3VCQUFDLE9BQU87Z0JBeUJQLFdBQVc7c0JBQXZCLEtBQUs7Z0JBSU8sVUFBVTtzQkFBdEIsS0FBSztnQkFJTyxVQUFVO3NCQUF0QixLQUFLO2dCQUlPLFFBQVE7c0JBQXBCLEtBQUs7Z0JBSU8sZUFBZTtzQkFBM0IsS0FBSztnQkFJTyxZQUFZO3NCQUF4QixLQUFLO2dCQUlPLFdBQVc7c0JBQXZCLEtBQUs7Z0JBTU8sWUFBWTtzQkFBeEIsS0FBSztnQkFNSSxPQUFPO3NCQUFoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPdXRwdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXJMaW5rIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbnR5cGUgQnV0dG9uU3R5bGUgPSAnbm9ybWFsJyB8ICdlcnJvcicgfCAnc2Vjb25kYXJ5JyB8ICdpY29uJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncHRyLWJ1dHRvbicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSb3V0ZXJMaW5rXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vcHRyLWJ1dHRvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIFB0ckJ1dHRvbkNvbXBvbmVudCB7XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKSBnZXQgaG9zdENsYXNzZXMoKSB7XHJcbiAgICBjb25zdCBob3N0Q2xhc3MgPSBbXTtcclxuICAgIGlmICh0aGlzLnN0eWxlKCkgPT09ICdzZWNvbmRhcnknKSB7XHJcbiAgICAgIGhvc3RDbGFzcy5wdXNoKCdpcy1zdHlsZS1vdXRsaW5lJyk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zdHlsZSgpID09PSAnZXJyb3InKSB7XHJcbiAgICAgIGhvc3RDbGFzcy5wdXNoKCdpcy1zdHlsZS1lcnJvci1idXR0b24nKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnN0eWxlKCkgPT09ICdpY29uJykge1xyXG4gICAgICBob3N0Q2xhc3MucHVzaCgnaXMtc3R5bGUtaWNvbi1idXR0b24nKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNtYWxsU2l6ZSgpKSB7XHJcbiAgICAgIGhvc3RDbGFzcy5wdXNoKCdpcy1zdHlsZS1zbWFsbGVyLWVsZW1lbnQnKTtcclxuICAgIH1cclxuICAgIHJldHVybiBob3N0Q2xhc3Muam9pbignICcpO1xyXG4gIH1cclxuXHJcbiAgc3R5bGUgPSBzaWduYWw8QnV0dG9uU3R5bGU+KCdub3JtYWwnKTtcclxuICB0eXBlID0gc2lnbmFsPCdidXR0b24nIHwgJ3N1Ym1pdCcgfCAncmVzZXQnPignYnV0dG9uJyk7XHJcbiAgZGlzYWJsZWQgPSBzaWduYWwoZmFsc2UpO1xyXG4gIGhyZWYgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XHJcbiAgcm91dGVyTGluayA9IHNpZ25hbDxzdHJpbmcgfCBhbnlbXSB8IG51bGw+KG51bGwpO1xyXG4gIGFkZGl0aW9uYWxDbGFzc2VzID0gc2lnbmFsKCcnKTtcclxuICBzbWFsbFNpemUgPSBzaWduYWwoZmFsc2UpO1xyXG5cclxuICBASW5wdXQoKSBzZXQgYnV0dG9uU3R5bGUodmFsdWU6IEJ1dHRvblN0eWxlKSB7XHJcbiAgICB0aGlzLnN0eWxlLnNldCh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBzZXQgYnV0dG9uVHlwZSh2YWx1ZTogJ2J1dHRvbicgfCAnc3VibWl0JyB8ICdyZXNldCcpIHtcclxuICAgIHRoaXMudHlwZS5zZXQodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgc2V0IGlzRGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuZGlzYWJsZWQuc2V0KHZhbHVlKTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIHNldCBocmVmTGluayh2YWx1ZTogc3RyaW5nIHwgbnVsbCkge1xyXG4gICAgdGhpcy5ocmVmLnNldCh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBzZXQgcm91dGVyTGlua1ZhbHVlKHZhbHVlOiBzdHJpbmcgfCBhbnlbXSB8IG51bGwpIHtcclxuICAgIHRoaXMucm91dGVyTGluay5zZXQodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgc2V0IGV4dHJhQ2xhc3Nlcyh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmFkZGl0aW9uYWxDbGFzc2VzLnNldCh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBzZXQgaXNTbWFsbFNpemUodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICB0aGlzLnNtYWxsU2l6ZS5zZXQodHJ1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBzZXQgaXNJY29uQnV0dG9uKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgdGhpcy5zdHlsZS5zZXQoJ2ljb24nKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKSBjbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcclxuXHJcbiAgaXNMaW5rID0gY29tcHV0ZWQoKCkgPT4gISF0aGlzLmhyZWYoKSB8fCAhIXRoaXMucm91dGVyTGluaygpKTtcclxuXHJcbiAgYnV0dG9uQ2xhc3NlcyA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGNvbnN0IGNsYXNzZXMgPSBbJ3dwLWJsb2NrLWJ1dHRvbl9fbGluayddO1xyXG5cclxuICAgIGlmICh0aGlzLnN0eWxlKCkgIT09ICdub3JtYWwnKSB7XHJcbiAgICAgIGNsYXNzZXMucHVzaChgd3AtYmxvY2stYnV0dG9uX19saW5rLS0ke3RoaXMuc3R5bGUoKX1gKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCgpICYmIHRoaXMuaXNMaW5rKCkpIHtcclxuICAgICAgY2xhc3Nlcy5wdXNoKCdkaXNhYmxlZCcpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmFkZGl0aW9uYWxDbGFzc2VzKCkpIHtcclxuICAgICAgY2xhc3Nlcy5wdXNoKHRoaXMuYWRkaXRpb25hbENsYXNzZXMoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGNsYXNzZXMuam9pbignICcpO1xyXG4gIH0pO1xyXG5cclxuICBvbkNsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQoKSkge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmNsaWNrZWQuZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8bmctdGVtcGxhdGUgI2NvbnRlbnRUcGw+XHJcbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuQGlmIChpc0xpbmsoKSkge1xyXG48YSBbYXR0ci5ocmVmXT1cImhyZWYoKVwiIFtyb3V0ZXJMaW5rXT1cInJvdXRlckxpbmsoKVwiIFtjbGFzc109XCJidXR0b25DbGFzc2VzKClcIiBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCgpID8gJycgOiBudWxsXCJcclxuICAoY2xpY2spPVwib25DbGljaygkZXZlbnQpXCI+XHJcbiAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjb250ZW50VHBsXCI+PC9uZy1jb250YWluZXI+XHJcbjwvYT5cclxufSBAZWxzZSB7XHJcbjxidXR0b24gW3R5cGVdPVwidHlwZSgpXCIgW2NsYXNzXT1cImJ1dHRvbkNsYXNzZXMoKVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpXCIgKGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50KVwiPlxyXG4gIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29udGVudFRwbFwiPjwvbmctY29udGFpbmVyPlxyXG48L2J1dHRvbj5cclxufSJdfQ==
|