@wavemaker/app-ng-runtime 11.14.2-rc.6311 → 11.15.0-1.246
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/build-task/bundles/index.umd.js +13 -2
- package/build-task/esm2022/input/default/checkbox/checkbox.build.mjs +9 -2
- package/build-task/esm2022/input/default/radioset/radioset.build.mjs +6 -2
- package/build-task/fesm2022/index.mjs +13 -2
- package/build-task/fesm2022/index.mjs.map +1 -1
- package/components/base/bundles/index.umd.js +271 -128
- package/components/base/esm2022/public_api.mjs +2 -2
- package/components/base/esm2022/utils/autolayout-utils.mjs +252 -0
- package/components/base/esm2022/utils/live-utils.mjs +10 -7
- package/components/base/esm2022/utils/widget-utils.mjs +8 -1
- package/components/base/esm2022/widgets/common/base/base.component.mjs +7 -8
- package/components/base/esm2022/widgets/common/base/partial-container.directive.mjs +4 -1
- package/components/base/esm2022/widgets/common/container/container.directive.mjs +28 -150
- package/components/base/esm2022/widgets/common/container/container.props.mjs +6 -2
- package/components/base/fesm2022/index.mjs +273 -129
- package/components/base/fesm2022/index.mjs.map +1 -1
- package/components/base/public_api.d.ts +1 -1
- package/components/base/utils/autolayout-utils.d.ts +29 -0
- package/components/base/utils/widget-utils.d.ts +1 -0
- package/components/base/widgets/common/container/container.directive.d.ts +7 -9
- package/components/basic/label/bundles/index.umd.js +4 -0
- package/components/basic/label/esm2022/label.directive.mjs +5 -1
- package/components/basic/label/fesm2022/index.mjs +4 -0
- package/components/basic/label/fesm2022/index.mjs.map +1 -1
- package/components/basic/search/bundles/index.umd.js +13 -11
- package/components/basic/search/esm2022/search.component.mjs +14 -12
- package/components/basic/search/fesm2022/index.mjs +13 -11
- package/components/basic/search/fesm2022/index.mjs.map +1 -1
- package/components/chart/bundles/index.umd.js +2 -2
- package/components/chart/esm2022/chart.utils.mjs +3 -3
- package/components/chart/fesm2022/index.mjs +2 -2
- package/components/chart/fesm2022/index.mjs.map +1 -1
- package/components/containers/accordion/accordion-pane/accordion-pane.component.d.ts +2 -0
- package/components/containers/accordion/accordion.directive.d.ts +4 -0
- package/components/containers/accordion/bundles/index.umd.js +34 -0
- package/components/containers/accordion/esm2022/accordion-pane/accordion-pane.component.mjs +6 -2
- package/components/containers/accordion/esm2022/accordion.directive.mjs +32 -2
- package/components/containers/accordion/fesm2022/index.mjs +36 -2
- package/components/containers/accordion/fesm2022/index.mjs.map +1 -1
- package/components/containers/tabs/bundles/index.umd.js +34 -0
- package/components/containers/tabs/esm2022/tab-pane/tab-pane.component.mjs +6 -2
- package/components/containers/tabs/esm2022/tabs.component.mjs +33 -4
- package/components/containers/tabs/fesm2022/index.mjs +36 -2
- package/components/containers/tabs/fesm2022/index.mjs.map +1 -1
- package/components/containers/tabs/tab-pane/tab-pane.component.d.ts +2 -0
- package/components/containers/tabs/tabs.component.d.ts +5 -1
- package/components/containers/wizard/bundles/index.umd.js +46 -2
- package/components/containers/wizard/esm2022/wizard-step/wizard-step.component.mjs +8 -2
- package/components/containers/wizard/esm2022/wizard.component.mjs +42 -4
- package/components/containers/wizard/fesm2022/index.mjs +48 -4
- package/components/containers/wizard/fesm2022/index.mjs.map +1 -1
- package/components/containers/wizard/wizard-step/wizard-step.component.d.ts +4 -0
- package/components/containers/wizard/wizard.component.d.ts +1 -0
- package/components/data/form/bundles/index.umd.js +28 -1
- package/components/data/form/esm2022/form-field/form-field.directive.mjs +4 -1
- package/components/data/form/esm2022/form.component.mjs +24 -2
- package/components/data/form/esm2022/form.props.mjs +3 -2
- package/components/data/form/esm2022/live-filter/live-filter.directive.mjs +2 -1
- package/components/data/form/fesm2022/index.mjs +29 -2
- package/components/data/form/fesm2022/index.mjs.map +1 -1
- package/components/data/form/form.component.d.ts +3 -0
- package/components/data/list/bundles/index.umd.js +0 -9
- package/components/data/list/esm2022/list-item.directive.mjs +1 -10
- package/components/data/list/fesm2022/index.mjs +0 -9
- package/components/data/list/fesm2022/index.mjs.map +1 -1
- package/components/data/pagination/bundles/index.umd.js +6 -2
- package/components/data/pagination/esm2022/pagination.component.mjs +7 -3
- package/components/data/pagination/fesm2022/index.mjs +6 -2
- package/components/data/pagination/fesm2022/index.mjs.map +1 -1
- package/components/data/table/bundles/index.umd.js +21 -4
- package/components/data/table/esm2022/table.component.mjs +22 -5
- package/components/data/table/fesm2022/index.mjs +21 -4
- package/components/data/table/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/alert-dialog/alert-dialog.component.d.ts +6 -2
- package/components/dialogs/alert-dialog/bundles/index.umd.js +18 -8
- package/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +17 -7
- package/components/dialogs/alert-dialog/fesm2022/index.mjs +15 -5
- package/components/dialogs/alert-dialog/fesm2022/index.mjs.map +1 -1
- package/components/input/checkbox/bundles/index.umd.js +12 -3
- package/components/input/checkbox/checkbox.component.d.ts +2 -0
- package/components/input/checkbox/esm2022/checkbox.component.mjs +9 -3
- package/components/input/checkbox/esm2022/checkbox.props.mjs +5 -2
- package/components/input/checkbox/fesm2022/index.mjs +12 -3
- package/components/input/checkbox/fesm2022/index.mjs.map +1 -1
- package/components/input/checkboxset/bundles/index.umd.js +12 -1
- package/components/input/checkboxset/checkboxset.component.d.ts +1 -0
- package/components/input/checkboxset/esm2022/checkboxset.component.mjs +11 -1
- package/components/input/checkboxset/esm2022/checkboxset.props.mjs +3 -2
- package/components/input/checkboxset/fesm2022/index.mjs +12 -1
- package/components/input/checkboxset/fesm2022/index.mjs.map +1 -1
- package/components/input/epoch/base-date-time/base-date-time.component.d.ts +0 -1
- package/components/input/epoch/base-date-time/bundles/index.umd.js +29 -27
- package/components/input/epoch/base-date-time/esm2022/base-date-time.component.mjs +30 -28
- package/components/input/epoch/base-date-time/fesm2022/index.mjs +29 -27
- package/components/input/epoch/base-date-time/fesm2022/index.mjs.map +1 -1
- package/components/input/epoch/date/bundles/index.umd.js +4 -3
- package/components/input/epoch/date/esm2022/date.component.mjs +5 -4
- package/components/input/epoch/date/fesm2022/index.mjs +4 -3
- package/components/input/epoch/date/fesm2022/index.mjs.map +1 -1
- package/components/input/epoch/date-time/bundles/index.umd.js +5 -4
- package/components/input/epoch/date-time/esm2022/date-time.component.mjs +7 -6
- package/components/input/epoch/date-time/fesm2022/index.mjs +6 -5
- package/components/input/epoch/date-time/fesm2022/index.mjs.map +1 -1
- package/components/input/file-upload/bundles/index.umd.js +1 -1
- package/components/input/file-upload/esm2022/file-upload.props.mjs +2 -2
- package/components/input/file-upload/fesm2022/index.mjs +1 -1
- package/components/input/file-upload/fesm2022/index.mjs.map +1 -1
- package/components/input/radioset/bundles/index.umd.js +13 -1
- package/components/input/radioset/esm2022/radioset.component.mjs +11 -1
- package/components/input/radioset/esm2022/radioset.props.mjs +4 -2
- package/components/input/radioset/fesm2022/index.mjs +13 -1
- package/components/input/radioset/fesm2022/index.mjs.map +1 -1
- package/components/input/radioset/radioset.component.d.ts +1 -0
- package/components/input/slider/bundles/index.umd.js +86 -16
- package/components/input/slider/esm2022/slider.component.mjs +76 -9
- package/components/input/slider/esm2022/slider.props.mjs +5 -1
- package/components/input/slider/fesm2022/index.mjs +79 -8
- package/components/input/slider/fesm2022/index.mjs.map +1 -1
- package/components/input/slider/slider.component.d.ts +12 -3
- package/components/input/text/bundles/index.umd.js +24 -3
- package/components/input/text/esm2022/input-text/input-text.component.mjs +6 -3
- package/components/input/text/esm2022/input-text/input-text.props.mjs +5 -2
- package/components/input/text/esm2022/number-locale/number-locale.mjs +16 -1
- package/components/input/text/fesm2022/index.mjs +24 -3
- package/components/input/text/fesm2022/index.mjs.map +1 -1
- package/components/input/text/input-text/input-text.component.d.ts +4 -0
- package/components/input/text/number-locale/number-locale.d.ts +12 -0
- package/components/navigation/breadcrumb/bundles/index.umd.js +2 -2
- package/components/navigation/breadcrumb/esm2022/breadcrumb.component.mjs +3 -3
- package/components/navigation/breadcrumb/fesm2022/index.mjs +2 -2
- package/components/navigation/breadcrumb/fesm2022/index.mjs.map +1 -1
- package/components/navigation/popover/bundles/index.umd.js +12 -0
- package/components/navigation/popover/esm2022/popover.component.mjs +13 -1
- package/components/navigation/popover/fesm2022/index.mjs +12 -0
- package/components/navigation/popover/fesm2022/index.mjs.map +1 -1
- package/components/navigation/popover/popover.component.d.ts +2 -0
- package/components/page/default/bundles/index.umd.js +0 -4
- package/components/page/default/esm2022/router-outlet.directive.mjs +1 -5
- package/components/page/default/fesm2022/index.mjs +0 -4
- package/components/page/default/fesm2022/index.mjs.map +1 -1
- package/components/page/header/bundles/index.umd.js +4 -3
- package/components/page/header/esm2022/header.component.mjs +5 -4
- package/components/page/header/fesm2022/index.mjs +4 -3
- package/components/page/header/fesm2022/index.mjs.map +1 -1
- package/components/page/header/header.component.d.ts +2 -1
- package/core/bundles/index.umd.js +90 -6
- package/core/enums/enums.d.ts +1 -0
- package/core/esm2022/enums/enums.mjs +2 -1
- package/core/esm2022/utils/build-utils.mjs +5 -1
- package/core/esm2022/utils/utils.mjs +5 -2
- package/core/esm2022/utils/watcher.mjs +83 -4
- package/core/fesm2022/index.mjs +91 -4
- package/core/fesm2022/index.mjs.map +1 -1
- package/core/utils/watcher.d.ts +2 -0
- package/npm-shrinkwrap.json +2 -2
- package/oAuth/esm2022/oAuth.service.mjs +1 -1
- package/oAuth/fesm2022/index.mjs.map +1 -1
- package/oAuth/oAuth.service.d.ts +1 -1
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/runtime/base/bundles/index.umd.js +33 -31
- package/runtime/base/components/base-prefab.component.d.ts +6 -4
- package/runtime/base/esm2022/components/app-component/app.component.mjs +1 -1
- package/runtime/base/esm2022/components/base-page.component.mjs +2 -5
- package/runtime/base/esm2022/components/base-partial.component.mjs +2 -2
- package/runtime/base/esm2022/components/base-prefab.component.mjs +20 -12
- package/runtime/base/esm2022/components/base-spa-page.component.mjs +1 -4
- package/runtime/base/esm2022/services/http-interceptor.services.mjs +14 -13
- package/runtime/base/fesm2022/index.mjs +34 -31
- package/runtime/base/fesm2022/index.mjs.map +1 -1
- package/runtime/base/runtime-base.module.d.ts +2 -1
- package/runtime/dynamic/app/app.config.d.ts +1 -1
- package/runtime/dynamic/bundles/index.umd.js +1 -1
- package/runtime/dynamic/esm2022/app/app.config.mjs +7 -7
- package/runtime/dynamic/fesm2022/index.mjs +2 -2
- package/runtime/dynamic/fesm2022/index.mjs.map +1 -1
- package/scripts/datatable/datatable.js +17 -15
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import { Injector, OnInit, OnDestroy, TemplateRef } from '@angular/core';
|
|
2
|
+
import { App } from '@wm/core';
|
|
2
3
|
import { BaseDialog } from '@wm/components/dialogs';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
5
|
export declare class AlertDialogComponent extends BaseDialog implements OnInit, OnDestroy {
|
|
6
|
+
app: App;
|
|
5
7
|
static initializeProps: void;
|
|
8
|
+
isPrism: boolean;
|
|
9
|
+
alerttype: any;
|
|
6
10
|
dialogTemplate: TemplateRef<any>;
|
|
7
|
-
constructor(inj: Injector, dialogClass: string, modal: string | boolean, closable: string | boolean, explicitContext: any);
|
|
11
|
+
constructor(inj: Injector, dialogClass: string, modal: string | boolean, closable: string | boolean, explicitContext: any, app: App);
|
|
8
12
|
protected getTemplateRef(): TemplateRef<any>;
|
|
9
13
|
/**
|
|
10
14
|
* Click event handler for the ok button
|
|
@@ -14,6 +18,6 @@ export declare class AlertDialogComponent extends BaseDialog implements OnInit,
|
|
|
14
18
|
onOk($event: Event): void;
|
|
15
19
|
ngOnInit(): void;
|
|
16
20
|
ngOnDestroy(): void;
|
|
17
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<AlertDialogComponent, [null, { attribute: "class"; }, { attribute: "modal"; }, { attribute: "closable"; }, { optional: true; }]>;
|
|
21
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AlertDialogComponent, [null, { attribute: "class"; }, { attribute: "modal"; }, { attribute: "closable"; }, { optional: true; }, null]>;
|
|
18
22
|
static ɵcmp: i0.ɵɵComponentDeclaration<AlertDialogComponent, "div[wmAlertDialog]", never, {}, {}, never, never, true, never>;
|
|
19
23
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@wm/core'), require('@wm/components/base'), require('@wm/components/dialogs'), require('@wm/components/input/button')) :
|
|
3
3
|
typeof define === 'function' && define.amd ? define(['exports', '@angular/core', '@wm/core', '@wm/components/base', '@wm/components/dialogs', '@wm/components/input/button'], factory) :
|
|
4
4
|
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.wm = global.wm || {}, global.wm.components = global.wm.components || {}, global.wm.components.dialogs = global.wm.components.dialogs || {}, global.wm.components.dialogs.alertdialog = {}), global.ng.core, global.wm.core, global.wm.components.base, global.wm.components.dialogs, global.wm.components.input.button));
|
|
5
|
-
})(this, (function (exports, i0,
|
|
5
|
+
})(this, (function (exports, i0, i1, base, dialogs, button) { 'use strict';
|
|
6
6
|
|
|
7
7
|
function _interopNamespaceDefault(e) {
|
|
8
8
|
var n = Object.create(null);
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
var i0__namespace = /*#__PURE__*/_interopNamespaceDefault(i0);
|
|
25
|
+
var i1__namespace = /*#__PURE__*/_interopNamespaceDefault(i1);
|
|
25
26
|
|
|
26
27
|
const registerProps = () => {
|
|
27
28
|
base.register('wm-alertdialog', new Map([
|
|
@@ -46,19 +47,27 @@
|
|
|
46
47
|
|
|
47
48
|
const DIALOG_CLS = 'app-dialog modal-dialog app-alert-dialog';
|
|
48
49
|
const WIDGET_INFO = { widgetType: 'wm-alertdialog' };
|
|
50
|
+
const alertMap = {
|
|
51
|
+
information: 'info',
|
|
52
|
+
error: 'danger',
|
|
53
|
+
success: 'success',
|
|
54
|
+
warning: 'warning'
|
|
55
|
+
};
|
|
49
56
|
class AlertDialogComponent extends dialogs.BaseDialog {
|
|
50
57
|
static { this.initializeProps = registerProps(); }
|
|
51
|
-
constructor(inj, dialogClass, modal, closable, explicitContext) {
|
|
58
|
+
constructor(inj, dialogClass, modal, closable, explicitContext, app) {
|
|
52
59
|
if (modal === null || modal === undefined) {
|
|
53
60
|
modal = false;
|
|
54
61
|
}
|
|
55
62
|
// setting the backdrop to 'static' will not close the dialog on backdrop click
|
|
56
|
-
const backdrop =
|
|
63
|
+
const backdrop = i1.toBoolean(modal) ? 'static' : true;
|
|
57
64
|
super(inj, WIDGET_INFO, {
|
|
58
65
|
class: `${DIALOG_CLS} ${dialogClass || ''}`,
|
|
59
66
|
backdrop,
|
|
60
|
-
keyboard: !
|
|
67
|
+
keyboard: !i1.toBoolean(modal)
|
|
61
68
|
}, explicitContext);
|
|
69
|
+
this.app = app;
|
|
70
|
+
this.isPrism = this.app.isPrism;
|
|
62
71
|
}
|
|
63
72
|
getTemplateRef() {
|
|
64
73
|
return this.dialogTemplate;
|
|
@@ -73,6 +82,7 @@
|
|
|
73
82
|
}
|
|
74
83
|
ngOnInit() {
|
|
75
84
|
super.ngOnInit();
|
|
85
|
+
this.alerttype = alertMap[this.alerttype] ?? this.alerttype;
|
|
76
86
|
this.register(this.viewParent);
|
|
77
87
|
}
|
|
78
88
|
ngOnDestroy() {
|
|
@@ -80,18 +90,18 @@
|
|
|
80
90
|
this.dialogTemplate = null;
|
|
81
91
|
super.ngOnDestroy();
|
|
82
92
|
}
|
|
83
|
-
static { this.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0__namespace, type: AlertDialogComponent, deps: [{ token: i0__namespace.Injector }, { token: 'class', attribute: true }, { token: 'modal', attribute: true }, { token: 'closable', attribute: true }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0__namespace.ɵɵFactoryTarget.Component }); }
|
|
93
|
+
static { this.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0__namespace, type: AlertDialogComponent, deps: [{ token: i0__namespace.Injector }, { token: 'class', attribute: true }, { token: 'modal', attribute: true }, { token: 'closable', attribute: true }, { token: 'EXPLICIT_CONTEXT', optional: true }, { token: i1__namespace.App }], target: i0__namespace.ɵɵFactoryTarget.Component }); }
|
|
84
94
|
static { this.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AlertDialogComponent, isStandalone: true, selector: "div[wmAlertDialog]", providers: [
|
|
85
95
|
base.provideAsWidgetRef(AlertDialogComponent),
|
|
86
96
|
base.provideAsDialogRef(AlertDialogComponent)
|
|
87
|
-
], viewQueries: [{ propertyName: "dialogTemplate", first: true, predicate: ["dialogTemplate"], descendants: true, static: true }], usesInheritance: true, ngImport: i0__namespace, template: "<ng-template #dialogTemplate>\n <div wmDialogHeader [closable]=\"closable\"\n [iconclass]=\"iconclass\"\n [iconurl]=\"iconurl\"\n [iconwidth]=\"iconwidth\"\n [iconheight]=\"iconheight\"\n [iconmargin]=\"iconmargin\"\n [heading]=\"title\"\n [headinglevel]=\"headinglevel\"\n [title]=\"title\"\n [titleid]=\"titleId\"></div>\n <div wmDialogBody>\n <p class=\"app-dialog-message text-{{alerttype}}\" [textContent]=\"message\"></p>\n </div>\n <div wmDialogFooter>\n <button (click)=\"onOk($event)\" [attr.aria-label]=\"oktext\" caption.bind=\"oktext\" class=\"btn-primary ok-action\"\n wmButton></button>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: base.TextContentDirective, selector: "[textContent]", inputs: ["textContent"] }, { kind: "directive", type: dialogs.DialogBodyDirective, selector: "div[wmDialogBody]" }, { kind: "directive", type: dialogs.DialogFooterDirective, selector: "div[wmDialogFooter]" }, { kind: "component", type: dialogs.DialogHeaderComponent, selector: "div[wmDialogHeader]", inputs: ["iconwidth", "iconheight", "iconmargin", "iconclass", "iconurl", "closable", "heading", "headinglevel", "subheading", "titleid", "title"] }, { kind: "component", type: button.ButtonComponent, selector: "button[wmButton]", exportAs: ["wmButton"] }] }); }
|
|
97
|
+
], viewQueries: [{ propertyName: "dialogTemplate", first: true, predicate: ["dialogTemplate"], descendants: true, static: true }], usesInheritance: true, ngImport: i0__namespace, template: "<ng-template #dialogTemplate>\n <div wmDialogHeader [closable]=\"closable\"\n [iconclass]=\"iconclass\"\n [iconurl]=\"iconurl\"\n [iconwidth]=\"iconwidth\"\n [iconheight]=\"iconheight\"\n [iconmargin]=\"iconmargin\"\n [heading]=\"title\"\n [headinglevel]=\"headinglevel\"\n [title]=\"title\"\n [titleid]=\"titleId\"></div>\n <div wmDialogBody>\n <p class=\"app-dialog-message text-{{alerttype}}\" [class.app-label]=\"isPrism\" [textContent]=\"message\"></p>\n </div>\n <div wmDialogFooter>\n <button (click)=\"onOk($event)\" [attr.aria-label]=\"oktext\" caption.bind=\"oktext\" class=\"btn-primary ok-action\"\n wmButton></button>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: base.TextContentDirective, selector: "[textContent]", inputs: ["textContent"] }, { kind: "directive", type: dialogs.DialogBodyDirective, selector: "div[wmDialogBody]" }, { kind: "directive", type: dialogs.DialogFooterDirective, selector: "div[wmDialogFooter]" }, { kind: "component", type: dialogs.DialogHeaderComponent, selector: "div[wmDialogHeader]", inputs: ["iconwidth", "iconheight", "iconmargin", "iconclass", "iconurl", "closable", "heading", "headinglevel", "subheading", "titleid", "title"] }, { kind: "component", type: button.ButtonComponent, selector: "button[wmButton]", exportAs: ["wmButton"] }] }); }
|
|
88
98
|
}
|
|
89
99
|
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0__namespace, type: AlertDialogComponent, decorators: [{
|
|
90
100
|
type: i0.Component,
|
|
91
101
|
args: [{ standalone: true, imports: [base.TextContentDirective, dialogs.DialogBodyDirective, dialogs.DialogFooterDirective, dialogs.DialogHeaderComponent, button.ButtonComponent], selector: 'div[wmAlertDialog]', providers: [
|
|
92
102
|
base.provideAsWidgetRef(AlertDialogComponent),
|
|
93
103
|
base.provideAsDialogRef(AlertDialogComponent)
|
|
94
|
-
], template: "<ng-template #dialogTemplate>\n <div wmDialogHeader [closable]=\"closable\"\n [iconclass]=\"iconclass\"\n [iconurl]=\"iconurl\"\n [iconwidth]=\"iconwidth\"\n [iconheight]=\"iconheight\"\n [iconmargin]=\"iconmargin\"\n [heading]=\"title\"\n [headinglevel]=\"headinglevel\"\n [title]=\"title\"\n [titleid]=\"titleId\"></div>\n <div wmDialogBody>\n <p class=\"app-dialog-message text-{{alerttype}}\" [textContent]=\"message\"></p>\n </div>\n <div wmDialogFooter>\n <button (click)=\"onOk($event)\" [attr.aria-label]=\"oktext\" caption.bind=\"oktext\" class=\"btn-primary ok-action\"\n wmButton></button>\n </div>\n</ng-template>\n" }]
|
|
104
|
+
], template: "<ng-template #dialogTemplate>\n <div wmDialogHeader [closable]=\"closable\"\n [iconclass]=\"iconclass\"\n [iconurl]=\"iconurl\"\n [iconwidth]=\"iconwidth\"\n [iconheight]=\"iconheight\"\n [iconmargin]=\"iconmargin\"\n [heading]=\"title\"\n [headinglevel]=\"headinglevel\"\n [title]=\"title\"\n [titleid]=\"titleId\"></div>\n <div wmDialogBody>\n <p class=\"app-dialog-message text-{{alerttype}}\" [class.app-label]=\"isPrism\" [textContent]=\"message\"></p>\n </div>\n <div wmDialogFooter>\n <button (click)=\"onOk($event)\" [attr.aria-label]=\"oktext\" caption.bind=\"oktext\" class=\"btn-primary ok-action\"\n wmButton></button>\n </div>\n</ng-template>\n" }]
|
|
95
105
|
}], ctorParameters: () => [{ type: i0__namespace.Injector }, { type: undefined, decorators: [{
|
|
96
106
|
type: i0.Attribute,
|
|
97
107
|
args: ['class']
|
|
@@ -106,7 +116,7 @@
|
|
|
106
116
|
args: ['EXPLICIT_CONTEXT']
|
|
107
117
|
}, {
|
|
108
118
|
type: i0.Optional
|
|
109
|
-
}] }], propDecorators: { dialogTemplate: [{
|
|
119
|
+
}] }, { type: i1__namespace.App }], propDecorators: { dialogTemplate: [{
|
|
110
120
|
type: i0.ViewChild,
|
|
111
121
|
args: ['dialogTemplate', { static: true }]
|
|
112
122
|
}] } });
|
|
@@ -1,15 +1,22 @@
|
|
|
1
1
|
import { Attribute, Component, Inject, Injector, Optional, TemplateRef, ViewChild } from '@angular/core';
|
|
2
|
-
import { toBoolean } from '@wm/core';
|
|
2
|
+
import { App, toBoolean } from '@wm/core';
|
|
3
3
|
import { provideAsDialogRef, provideAsWidgetRef, TextContentDirective } from '@wm/components/base';
|
|
4
4
|
import { BaseDialog, DialogBodyDirective, DialogFooterDirective, DialogHeaderComponent } from '@wm/components/dialogs';
|
|
5
5
|
import { registerProps } from './alert-dialog.props';
|
|
6
6
|
import { ButtonComponent } from "@wm/components/input/button";
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@wm/core";
|
|
8
9
|
const DIALOG_CLS = 'app-dialog modal-dialog app-alert-dialog';
|
|
9
10
|
const WIDGET_INFO = { widgetType: 'wm-alertdialog' };
|
|
11
|
+
const alertMap = {
|
|
12
|
+
information: 'info',
|
|
13
|
+
error: 'danger',
|
|
14
|
+
success: 'success',
|
|
15
|
+
warning: 'warning'
|
|
16
|
+
};
|
|
10
17
|
export class AlertDialogComponent extends BaseDialog {
|
|
11
18
|
static { this.initializeProps = registerProps(); }
|
|
12
|
-
constructor(inj, dialogClass, modal, closable, explicitContext) {
|
|
19
|
+
constructor(inj, dialogClass, modal, closable, explicitContext, app) {
|
|
13
20
|
if (modal === null || modal === undefined) {
|
|
14
21
|
modal = false;
|
|
15
22
|
}
|
|
@@ -23,6 +30,8 @@ export class AlertDialogComponent extends BaseDialog {
|
|
|
23
30
|
backdrop,
|
|
24
31
|
keyboard: !toBoolean(modal)
|
|
25
32
|
}, explicitContext);
|
|
33
|
+
this.app = app;
|
|
34
|
+
this.isPrism = this.app.isPrism;
|
|
26
35
|
}
|
|
27
36
|
getTemplateRef() {
|
|
28
37
|
return this.dialogTemplate;
|
|
@@ -37,6 +46,7 @@ export class AlertDialogComponent extends BaseDialog {
|
|
|
37
46
|
}
|
|
38
47
|
ngOnInit() {
|
|
39
48
|
super.ngOnInit();
|
|
49
|
+
this.alerttype = alertMap[this.alerttype] ?? this.alerttype;
|
|
40
50
|
this.register(this.viewParent);
|
|
41
51
|
}
|
|
42
52
|
ngOnDestroy() {
|
|
@@ -44,18 +54,18 @@ export class AlertDialogComponent extends BaseDialog {
|
|
|
44
54
|
this.dialogTemplate = null;
|
|
45
55
|
super.ngOnDestroy();
|
|
46
56
|
}
|
|
47
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AlertDialogComponent, deps: [{ token: i0.Injector }, { token: 'class', attribute: true }, { token: 'modal', attribute: true }, { token: 'closable', attribute: true }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
57
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AlertDialogComponent, deps: [{ token: i0.Injector }, { token: 'class', attribute: true }, { token: 'modal', attribute: true }, { token: 'closable', attribute: true }, { token: 'EXPLICIT_CONTEXT', optional: true }, { token: i1.App }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
48
58
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AlertDialogComponent, isStandalone: true, selector: "div[wmAlertDialog]", providers: [
|
|
49
59
|
provideAsWidgetRef(AlertDialogComponent),
|
|
50
60
|
provideAsDialogRef(AlertDialogComponent)
|
|
51
|
-
], viewQueries: [{ propertyName: "dialogTemplate", first: true, predicate: ["dialogTemplate"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #dialogTemplate>\n <div wmDialogHeader [closable]=\"closable\"\n [iconclass]=\"iconclass\"\n [iconurl]=\"iconurl\"\n [iconwidth]=\"iconwidth\"\n [iconheight]=\"iconheight\"\n [iconmargin]=\"iconmargin\"\n [heading]=\"title\"\n [headinglevel]=\"headinglevel\"\n [title]=\"title\"\n [titleid]=\"titleId\"></div>\n <div wmDialogBody>\n <p class=\"app-dialog-message text-{{alerttype}}\" [textContent]=\"message\"></p>\n </div>\n <div wmDialogFooter>\n <button (click)=\"onOk($event)\" [attr.aria-label]=\"oktext\" caption.bind=\"oktext\" class=\"btn-primary ok-action\"\n wmButton></button>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: TextContentDirective, selector: "[textContent]", inputs: ["textContent"] }, { kind: "directive", type: DialogBodyDirective, selector: "div[wmDialogBody]" }, { kind: "directive", type: DialogFooterDirective, selector: "div[wmDialogFooter]" }, { kind: "component", type: DialogHeaderComponent, selector: "div[wmDialogHeader]", inputs: ["iconwidth", "iconheight", "iconmargin", "iconclass", "iconurl", "closable", "heading", "headinglevel", "subheading", "titleid", "title"] }, { kind: "component", type: ButtonComponent, selector: "button[wmButton]", exportAs: ["wmButton"] }] }); }
|
|
61
|
+
], viewQueries: [{ propertyName: "dialogTemplate", first: true, predicate: ["dialogTemplate"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #dialogTemplate>\n <div wmDialogHeader [closable]=\"closable\"\n [iconclass]=\"iconclass\"\n [iconurl]=\"iconurl\"\n [iconwidth]=\"iconwidth\"\n [iconheight]=\"iconheight\"\n [iconmargin]=\"iconmargin\"\n [heading]=\"title\"\n [headinglevel]=\"headinglevel\"\n [title]=\"title\"\n [titleid]=\"titleId\"></div>\n <div wmDialogBody>\n <p class=\"app-dialog-message text-{{alerttype}}\" [class.app-label]=\"isPrism\" [textContent]=\"message\"></p>\n </div>\n <div wmDialogFooter>\n <button (click)=\"onOk($event)\" [attr.aria-label]=\"oktext\" caption.bind=\"oktext\" class=\"btn-primary ok-action\"\n wmButton></button>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: TextContentDirective, selector: "[textContent]", inputs: ["textContent"] }, { kind: "directive", type: DialogBodyDirective, selector: "div[wmDialogBody]" }, { kind: "directive", type: DialogFooterDirective, selector: "div[wmDialogFooter]" }, { kind: "component", type: DialogHeaderComponent, selector: "div[wmDialogHeader]", inputs: ["iconwidth", "iconheight", "iconmargin", "iconclass", "iconurl", "closable", "heading", "headinglevel", "subheading", "titleid", "title"] }, { kind: "component", type: ButtonComponent, selector: "button[wmButton]", exportAs: ["wmButton"] }] }); }
|
|
52
62
|
}
|
|
53
63
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AlertDialogComponent, decorators: [{
|
|
54
64
|
type: Component,
|
|
55
65
|
args: [{ standalone: true, imports: [TextContentDirective, DialogBodyDirective, DialogFooterDirective, DialogHeaderComponent, ButtonComponent], selector: 'div[wmAlertDialog]', providers: [
|
|
56
66
|
provideAsWidgetRef(AlertDialogComponent),
|
|
57
67
|
provideAsDialogRef(AlertDialogComponent)
|
|
58
|
-
], template: "<ng-template #dialogTemplate>\n <div wmDialogHeader [closable]=\"closable\"\n [iconclass]=\"iconclass\"\n [iconurl]=\"iconurl\"\n [iconwidth]=\"iconwidth\"\n [iconheight]=\"iconheight\"\n [iconmargin]=\"iconmargin\"\n [heading]=\"title\"\n [headinglevel]=\"headinglevel\"\n [title]=\"title\"\n [titleid]=\"titleId\"></div>\n <div wmDialogBody>\n <p class=\"app-dialog-message text-{{alerttype}}\" [textContent]=\"message\"></p>\n </div>\n <div wmDialogFooter>\n <button (click)=\"onOk($event)\" [attr.aria-label]=\"oktext\" caption.bind=\"oktext\" class=\"btn-primary ok-action\"\n wmButton></button>\n </div>\n</ng-template>\n" }]
|
|
68
|
+
], template: "<ng-template #dialogTemplate>\n <div wmDialogHeader [closable]=\"closable\"\n [iconclass]=\"iconclass\"\n [iconurl]=\"iconurl\"\n [iconwidth]=\"iconwidth\"\n [iconheight]=\"iconheight\"\n [iconmargin]=\"iconmargin\"\n [heading]=\"title\"\n [headinglevel]=\"headinglevel\"\n [title]=\"title\"\n [titleid]=\"titleId\"></div>\n <div wmDialogBody>\n <p class=\"app-dialog-message text-{{alerttype}}\" [class.app-label]=\"isPrism\" [textContent]=\"message\"></p>\n </div>\n <div wmDialogFooter>\n <button (click)=\"onOk($event)\" [attr.aria-label]=\"oktext\" caption.bind=\"oktext\" class=\"btn-primary ok-action\"\n wmButton></button>\n </div>\n</ng-template>\n" }]
|
|
59
69
|
}], ctorParameters: () => [{ type: i0.Injector }, { type: undefined, decorators: [{
|
|
60
70
|
type: Attribute,
|
|
61
71
|
args: ['class']
|
|
@@ -70,8 +80,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
70
80
|
args: ['EXPLICIT_CONTEXT']
|
|
71
81
|
}, {
|
|
72
82
|
type: Optional
|
|
73
|
-
}] }], propDecorators: { dialogTemplate: [{
|
|
83
|
+
}] }, { type: i1.App }], propDecorators: { dialogTemplate: [{
|
|
74
84
|
type: ViewChild,
|
|
75
85
|
args: ['dialogTemplate', { static: true }]
|
|
76
86
|
}] } });
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9kaWFsb2dzL2FsZXJ0LWRpYWxvZy9zcmMvYWxlcnQtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9kaWFsb2dzL2FsZXJ0LWRpYWxvZy9zcmMvYWxlcnQtZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsU0FBUyxFQUNULE1BQU0sRUFDTixRQUFRLEVBR1IsUUFBUSxFQUNSLFdBQVcsRUFDWCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDMUMsT0FBTyxFQUFpQixrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xILE9BQU8sRUFBRSxVQUFVLEVBQUUsbUJBQW1CLEVBQUUscUJBQXFCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV2SCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7QUFFOUQsTUFBTSxVQUFVLEdBQUcsMENBQTBDLENBQUM7QUFFOUQsTUFBTSxXQUFXLEdBQWtCLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLENBQUM7QUFFcEUsTUFBTSxRQUFRLEdBQTJCO0lBQ3ZDLFdBQVcsRUFBRSxNQUFNO0lBQ25CLEtBQUssRUFBRSxRQUFRO0lBQ2YsT0FBTyxFQUFFLFNBQVM7SUFDbEIsT0FBTyxFQUFFLFNBQVM7Q0FDbkIsQ0FBQztBQVlGLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxVQUFVO2FBQ3pDLG9CQUFlLEdBQUcsYUFBYSxFQUFFLEFBQWxCLENBQW1CO0lBTXpDLFlBQ0ksR0FBYSxFQUNPLFdBQW1CLEVBQ25CLEtBQXVCLEVBQ3BCLFFBQTBCLEVBQ1QsZUFBb0IsRUFDckQsR0FBUTtRQUVmLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDeEMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNsQixDQUFDO1FBRUQsSUFBSSxRQUFRLEtBQUssSUFBSSxJQUFJLFFBQVEsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUM5QyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLENBQUM7UUFFRCwrRUFBK0U7UUFDL0UsTUFBTSxRQUFRLEdBQXVCLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFFeEUsS0FBSyxDQUNELEdBQUcsRUFDSCxXQUFXLEVBQ1g7WUFDSSxLQUFLLEVBQUUsR0FBRyxVQUFVLElBQUksV0FBVyxJQUFJLEVBQUUsRUFBRTtZQUMzQyxRQUFRO1lBQ1IsUUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztTQUM5QixFQUNELGVBQWUsQ0FDbEIsQ0FBQztRQXRCSyxRQUFHLEdBQUgsR0FBRyxDQUFLO1FBdUJsQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDO0lBQ2pDLENBQUM7SUFFUyxjQUFjO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQUksQ0FBQyxNQUFhO1FBQ2QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELFFBQVE7UUFDSixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDNUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELFdBQVc7UUFDUCw2Q0FBNkM7UUFDN0MsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFFM0IsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7K0dBL0RRLG9CQUFvQiwwQ0FTZCxPQUFPLDhCQUNQLE9BQU8sOEJBQ1AsVUFBVSw4QkFDYixrQkFBa0I7bUdBWnJCLG9CQUFvQixpRUFMbEI7WUFDUCxrQkFBa0IsQ0FBQyxvQkFBb0IsQ0FBQztZQUN4QyxrQkFBa0IsQ0FBQyxvQkFBb0IsQ0FBQztTQUMzQyxpTEN0Q0wsd3dCQW1CQSw0Q0RhYyxvQkFBb0IsbUZBQUUsbUJBQW1CLDhEQUFFLHFCQUFxQixnRUFBRSxxQkFBcUIsb05BQUUsZUFBZTs7NEZBUXpHLG9CQUFvQjtrQkFWaEMsU0FBUztpQ0FDTSxJQUFJLFdBQ1AsQ0FBQyxvQkFBb0IsRUFBRSxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSxxQkFBcUIsRUFBRSxlQUFlLENBQUMsWUFDekcsb0JBQW9CLGFBRW5CO3dCQUNQLGtCQUFrQixzQkFBc0I7d0JBQ3hDLGtCQUFrQixzQkFBc0I7cUJBQzNDOzswQkFXSSxTQUFTOzJCQUFDLE9BQU87OzBCQUNqQixTQUFTOzJCQUFDLE9BQU87OzBCQUNqQixTQUFTOzJCQUFDLFVBQVU7OzBCQUNwQixNQUFNOzJCQUFDLGtCQUFrQjs7MEJBQUcsUUFBUTsyREFQTSxjQUFjO3NCQUE1RCxTQUFTO3VCQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQXR0cmlidXRlLFxuICAgIENvbXBvbmVudCxcbiAgICBJbmplY3QsXG4gICAgSW5qZWN0b3IsXG4gICAgT25Jbml0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPcHRpb25hbCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFwcCwgdG9Cb29sZWFuIH0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHsgSVdpZGdldENvbmZpZywgcHJvdmlkZUFzRGlhbG9nUmVmLCBwcm92aWRlQXNXaWRnZXRSZWYsIFRleHRDb250ZW50RGlyZWN0aXZlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5pbXBvcnQgeyBCYXNlRGlhbG9nLCBEaWFsb2dCb2R5RGlyZWN0aXZlLCBEaWFsb2dGb290ZXJEaXJlY3RpdmUsIERpYWxvZ0hlYWRlckNvbXBvbmVudCB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2RpYWxvZ3MnO1xuXG5pbXBvcnQgeyByZWdpc3RlclByb3BzIH0gZnJvbSAnLi9hbGVydC1kaWFsb2cucHJvcHMnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2lucHV0L2J1dHRvblwiO1xuXG5jb25zdCBESUFMT0dfQ0xTID0gJ2FwcC1kaWFsb2cgbW9kYWwtZGlhbG9nIGFwcC1hbGVydC1kaWFsb2cnO1xuXG5jb25zdCBXSURHRVRfSU5GTzogSVdpZGdldENvbmZpZyA9IHsgd2lkZ2V0VHlwZTogJ3dtLWFsZXJ0ZGlhbG9nJyB9O1xuXG5jb25zdCBhbGVydE1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgaW5mb3JtYXRpb246ICdpbmZvJyxcbiAgZXJyb3I6ICdkYW5nZXInLFxuICBzdWNjZXNzOiAnc3VjY2VzcycsXG4gIHdhcm5pbmc6ICd3YXJuaW5nJ1xufTtcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbVGV4dENvbnRlbnREaXJlY3RpdmUsIERpYWxvZ0JvZHlEaXJlY3RpdmUsIERpYWxvZ0Zvb3RlckRpcmVjdGl2ZSwgRGlhbG9nSGVhZGVyQ29tcG9uZW50LCBCdXR0b25Db21wb25lbnRdLFxuICAgIHNlbGVjdG9yOiAnZGl2W3dtQWxlcnREaWFsb2ddJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYWxlcnQtZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgcHJvdmlkZUFzV2lkZ2V0UmVmKEFsZXJ0RGlhbG9nQ29tcG9uZW50KSxcbiAgICAgICAgcHJvdmlkZUFzRGlhbG9nUmVmKEFsZXJ0RGlhbG9nQ29tcG9uZW50KVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgQWxlcnREaWFsb2dDb21wb25lbnQgZXh0ZW5kcyBCYXNlRGlhbG9nIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIHN0YXRpYyBpbml0aWFsaXplUHJvcHMgPSByZWdpc3RlclByb3BzKCk7XG4gICAgaXNQcmlzbTogYm9vbGVhbjtcbiAgICBhbGVydHR5cGU6IGFueTtcblxuICAgIEBWaWV3Q2hpbGQoJ2RpYWxvZ1RlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUgfSkgZGlhbG9nVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgaW5qOiBJbmplY3RvcixcbiAgICAgICAgQEF0dHJpYnV0ZSgnY2xhc3MnKSBkaWFsb2dDbGFzczogc3RyaW5nLFxuICAgICAgICBAQXR0cmlidXRlKCdtb2RhbCcpIG1vZGFsOiBzdHJpbmcgfCBib29sZWFuLFxuICAgICAgICBAQXR0cmlidXRlKCdjbG9zYWJsZScpIGNsb3NhYmxlOiBzdHJpbmcgfCBib29sZWFuLFxuICAgICAgICBASW5qZWN0KCdFWFBMSUNJVF9DT05URVhUJykgQE9wdGlvbmFsKCkgZXhwbGljaXRDb250ZXh0OiBhbnksXG4gICAgICAgIHB1YmxpYyBhcHA6IEFwcFxuICAgICkge1xuICAgICAgICBpZiAobW9kYWwgPT09IG51bGwgfHwgbW9kYWwgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbW9kYWwgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjbG9zYWJsZSA9PT0gbnVsbCB8fCBjbG9zYWJsZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjbG9zYWJsZSA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBzZXR0aW5nIHRoZSBiYWNrZHJvcCB0byAnc3RhdGljJyB3aWxsIG5vdCBjbG9zZSB0aGUgZGlhbG9nIG9uIGJhY2tkcm9wIGNsaWNrXG4gICAgICAgIGNvbnN0IGJhY2tkcm9wOiBib29sZWFuIHwgJ3N0YXRpYycgPSB0b0Jvb2xlYW4obW9kYWwpID8gJ3N0YXRpYycgOiB0cnVlO1xuXG4gICAgICAgIHN1cGVyKFxuICAgICAgICAgICAgaW5qLFxuICAgICAgICAgICAgV0lER0VUX0lORk8sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3M6IGAke0RJQUxPR19DTFN9ICR7ZGlhbG9nQ2xhc3MgfHwgJyd9YCxcbiAgICAgICAgICAgICAgICBiYWNrZHJvcCxcbiAgICAgICAgICAgICAgICBrZXlib2FyZDogIXRvQm9vbGVhbihtb2RhbClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBleHBsaWNpdENvbnRleHRcbiAgICAgICAgKTtcbiAgICAgdGhpcy5pc1ByaXNtID0gdGhpcy5hcHAuaXNQcmlzbTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0VGVtcGxhdGVSZWYoKTogVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpYWxvZ1RlbXBsYXRlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsaWNrIGV2ZW50IGhhbmRsZXIgZm9yIHRoZSBvayBidXR0b25cbiAgICAgKiBpbnZva2VzIG9uLW9rIGV2ZW50IGNhbGxiYWNrXG4gICAgICogQHBhcmFtIHtFdmVudH0gJGV2ZW50XG4gICAgICovXG4gICAgb25PaygkZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnb2snLCB7ICRldmVudCB9KTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5hbGVydHR5cGUgPSBhbGVydE1hcFt0aGlzLmFsZXJ0dHlwZV0gPz8gdGhpcy5hbGVydHR5cGU7XG4gICAgICAgIHRoaXMucmVnaXN0ZXIodGhpcy52aWV3UGFyZW50KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgLy8gTUVNT1JZIExFQUsgRklYOiBDbGVhciBWaWV3Q2hpbGQgcmVmZXJlbmNlXG4gICAgICAgIHRoaXMuZGlhbG9nVGVtcGxhdGUgPSBudWxsO1xuXG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxufVxuIiwiPG5nLXRlbXBsYXRlICNkaWFsb2dUZW1wbGF0ZT5cbiAgICA8ZGl2IHdtRGlhbG9nSGVhZGVyIFtjbG9zYWJsZV09XCJjbG9zYWJsZVwiXG4gICAgICAgICBbaWNvbmNsYXNzXT1cImljb25jbGFzc1wiXG4gICAgICAgICBbaWNvbnVybF09XCJpY29udXJsXCJcbiAgICAgICAgIFtpY29ud2lkdGhdPVwiaWNvbndpZHRoXCJcbiAgICAgICAgIFtpY29uaGVpZ2h0XT1cImljb25oZWlnaHRcIlxuICAgICAgICAgW2ljb25tYXJnaW5dPVwiaWNvbm1hcmdpblwiXG4gICAgICAgICBbaGVhZGluZ109XCJ0aXRsZVwiXG4gICAgICAgICBbaGVhZGluZ2xldmVsXT1cImhlYWRpbmdsZXZlbFwiXG4gICAgICAgICBbdGl0bGVdPVwidGl0bGVcIlxuICAgICAgICAgW3RpdGxlaWRdPVwidGl0bGVJZFwiPjwvZGl2PlxuICAgIDxkaXYgd21EaWFsb2dCb2R5PlxuICAgICAgICA8cCBjbGFzcz1cImFwcC1kaWFsb2ctbWVzc2FnZSB0ZXh0LXt7YWxlcnR0eXBlfX1cIiBbY2xhc3MuYXBwLWxhYmVsXT1cImlzUHJpc21cIiAgW3RleHRDb250ZW50XT1cIm1lc3NhZ2VcIj48L3A+XG4gICAgPC9kaXY+XG4gICAgPGRpdiB3bURpYWxvZ0Zvb3Rlcj5cbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwib25PaygkZXZlbnQpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJva3RleHRcIiBjYXB0aW9uLmJpbmQ9XCJva3RleHRcIiBjbGFzcz1cImJ0bi1wcmltYXJ5IG9rLWFjdGlvblwiXG4gICAgICAgICAgICAgICAgd21CdXR0b24+PC9idXR0b24+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { ViewChild, Attribute, Inject, Optional, Component } from '@angular/core';
|
|
3
|
+
import * as i1 from '@wm/core';
|
|
3
4
|
import { toBoolean } from '@wm/core';
|
|
4
5
|
import { register, PROP_STRING, PROP_BOOLEAN, PROP_NUMBER, TextContentDirective, provideAsWidgetRef, provideAsDialogRef } from '@wm/components/base';
|
|
5
6
|
import { BaseDialog, DialogBodyDirective, DialogFooterDirective, DialogHeaderComponent } from '@wm/components/dialogs';
|
|
@@ -28,9 +29,15 @@ const registerProps = () => {
|
|
|
28
29
|
|
|
29
30
|
const DIALOG_CLS = 'app-dialog modal-dialog app-alert-dialog';
|
|
30
31
|
const WIDGET_INFO = { widgetType: 'wm-alertdialog' };
|
|
32
|
+
const alertMap = {
|
|
33
|
+
information: 'info',
|
|
34
|
+
error: 'danger',
|
|
35
|
+
success: 'success',
|
|
36
|
+
warning: 'warning'
|
|
37
|
+
};
|
|
31
38
|
class AlertDialogComponent extends BaseDialog {
|
|
32
39
|
static { this.initializeProps = registerProps(); }
|
|
33
|
-
constructor(inj, dialogClass, modal, closable, explicitContext) {
|
|
40
|
+
constructor(inj, dialogClass, modal, closable, explicitContext, app) {
|
|
34
41
|
if (modal === null || modal === undefined) {
|
|
35
42
|
modal = false;
|
|
36
43
|
}
|
|
@@ -44,6 +51,8 @@ class AlertDialogComponent extends BaseDialog {
|
|
|
44
51
|
backdrop,
|
|
45
52
|
keyboard: !toBoolean(modal)
|
|
46
53
|
}, explicitContext);
|
|
54
|
+
this.app = app;
|
|
55
|
+
this.isPrism = this.app.isPrism;
|
|
47
56
|
}
|
|
48
57
|
getTemplateRef() {
|
|
49
58
|
return this.dialogTemplate;
|
|
@@ -58,6 +67,7 @@ class AlertDialogComponent extends BaseDialog {
|
|
|
58
67
|
}
|
|
59
68
|
ngOnInit() {
|
|
60
69
|
super.ngOnInit();
|
|
70
|
+
this.alerttype = alertMap[this.alerttype] ?? this.alerttype;
|
|
61
71
|
this.register(this.viewParent);
|
|
62
72
|
}
|
|
63
73
|
ngOnDestroy() {
|
|
@@ -65,18 +75,18 @@ class AlertDialogComponent extends BaseDialog {
|
|
|
65
75
|
this.dialogTemplate = null;
|
|
66
76
|
super.ngOnDestroy();
|
|
67
77
|
}
|
|
68
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AlertDialogComponent, deps: [{ token: i0.Injector }, { token: 'class', attribute: true }, { token: 'modal', attribute: true }, { token: 'closable', attribute: true }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
78
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AlertDialogComponent, deps: [{ token: i0.Injector }, { token: 'class', attribute: true }, { token: 'modal', attribute: true }, { token: 'closable', attribute: true }, { token: 'EXPLICIT_CONTEXT', optional: true }, { token: i1.App }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
69
79
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AlertDialogComponent, isStandalone: true, selector: "div[wmAlertDialog]", providers: [
|
|
70
80
|
provideAsWidgetRef(AlertDialogComponent),
|
|
71
81
|
provideAsDialogRef(AlertDialogComponent)
|
|
72
|
-
], viewQueries: [{ propertyName: "dialogTemplate", first: true, predicate: ["dialogTemplate"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #dialogTemplate>\n <div wmDialogHeader [closable]=\"closable\"\n [iconclass]=\"iconclass\"\n [iconurl]=\"iconurl\"\n [iconwidth]=\"iconwidth\"\n [iconheight]=\"iconheight\"\n [iconmargin]=\"iconmargin\"\n [heading]=\"title\"\n [headinglevel]=\"headinglevel\"\n [title]=\"title\"\n [titleid]=\"titleId\"></div>\n <div wmDialogBody>\n <p class=\"app-dialog-message text-{{alerttype}}\" [textContent]=\"message\"></p>\n </div>\n <div wmDialogFooter>\n <button (click)=\"onOk($event)\" [attr.aria-label]=\"oktext\" caption.bind=\"oktext\" class=\"btn-primary ok-action\"\n wmButton></button>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: TextContentDirective, selector: "[textContent]", inputs: ["textContent"] }, { kind: "directive", type: DialogBodyDirective, selector: "div[wmDialogBody]" }, { kind: "directive", type: DialogFooterDirective, selector: "div[wmDialogFooter]" }, { kind: "component", type: DialogHeaderComponent, selector: "div[wmDialogHeader]", inputs: ["iconwidth", "iconheight", "iconmargin", "iconclass", "iconurl", "closable", "heading", "headinglevel", "subheading", "titleid", "title"] }, { kind: "component", type: ButtonComponent, selector: "button[wmButton]", exportAs: ["wmButton"] }] }); }
|
|
82
|
+
], viewQueries: [{ propertyName: "dialogTemplate", first: true, predicate: ["dialogTemplate"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #dialogTemplate>\n <div wmDialogHeader [closable]=\"closable\"\n [iconclass]=\"iconclass\"\n [iconurl]=\"iconurl\"\n [iconwidth]=\"iconwidth\"\n [iconheight]=\"iconheight\"\n [iconmargin]=\"iconmargin\"\n [heading]=\"title\"\n [headinglevel]=\"headinglevel\"\n [title]=\"title\"\n [titleid]=\"titleId\"></div>\n <div wmDialogBody>\n <p class=\"app-dialog-message text-{{alerttype}}\" [class.app-label]=\"isPrism\" [textContent]=\"message\"></p>\n </div>\n <div wmDialogFooter>\n <button (click)=\"onOk($event)\" [attr.aria-label]=\"oktext\" caption.bind=\"oktext\" class=\"btn-primary ok-action\"\n wmButton></button>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: TextContentDirective, selector: "[textContent]", inputs: ["textContent"] }, { kind: "directive", type: DialogBodyDirective, selector: "div[wmDialogBody]" }, { kind: "directive", type: DialogFooterDirective, selector: "div[wmDialogFooter]" }, { kind: "component", type: DialogHeaderComponent, selector: "div[wmDialogHeader]", inputs: ["iconwidth", "iconheight", "iconmargin", "iconclass", "iconurl", "closable", "heading", "headinglevel", "subheading", "titleid", "title"] }, { kind: "component", type: ButtonComponent, selector: "button[wmButton]", exportAs: ["wmButton"] }] }); }
|
|
73
83
|
}
|
|
74
84
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AlertDialogComponent, decorators: [{
|
|
75
85
|
type: Component,
|
|
76
86
|
args: [{ standalone: true, imports: [TextContentDirective, DialogBodyDirective, DialogFooterDirective, DialogHeaderComponent, ButtonComponent], selector: 'div[wmAlertDialog]', providers: [
|
|
77
87
|
provideAsWidgetRef(AlertDialogComponent),
|
|
78
88
|
provideAsDialogRef(AlertDialogComponent)
|
|
79
|
-
], template: "<ng-template #dialogTemplate>\n <div wmDialogHeader [closable]=\"closable\"\n [iconclass]=\"iconclass\"\n [iconurl]=\"iconurl\"\n [iconwidth]=\"iconwidth\"\n [iconheight]=\"iconheight\"\n [iconmargin]=\"iconmargin\"\n [heading]=\"title\"\n [headinglevel]=\"headinglevel\"\n [title]=\"title\"\n [titleid]=\"titleId\"></div>\n <div wmDialogBody>\n <p class=\"app-dialog-message text-{{alerttype}}\" [textContent]=\"message\"></p>\n </div>\n <div wmDialogFooter>\n <button (click)=\"onOk($event)\" [attr.aria-label]=\"oktext\" caption.bind=\"oktext\" class=\"btn-primary ok-action\"\n wmButton></button>\n </div>\n</ng-template>\n" }]
|
|
89
|
+
], template: "<ng-template #dialogTemplate>\n <div wmDialogHeader [closable]=\"closable\"\n [iconclass]=\"iconclass\"\n [iconurl]=\"iconurl\"\n [iconwidth]=\"iconwidth\"\n [iconheight]=\"iconheight\"\n [iconmargin]=\"iconmargin\"\n [heading]=\"title\"\n [headinglevel]=\"headinglevel\"\n [title]=\"title\"\n [titleid]=\"titleId\"></div>\n <div wmDialogBody>\n <p class=\"app-dialog-message text-{{alerttype}}\" [class.app-label]=\"isPrism\" [textContent]=\"message\"></p>\n </div>\n <div wmDialogFooter>\n <button (click)=\"onOk($event)\" [attr.aria-label]=\"oktext\" caption.bind=\"oktext\" class=\"btn-primary ok-action\"\n wmButton></button>\n </div>\n</ng-template>\n" }]
|
|
80
90
|
}], ctorParameters: () => [{ type: i0.Injector }, { type: undefined, decorators: [{
|
|
81
91
|
type: Attribute,
|
|
82
92
|
args: ['class']
|
|
@@ -91,7 +101,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
91
101
|
args: ['EXPLICIT_CONTEXT']
|
|
92
102
|
}, {
|
|
93
103
|
type: Optional
|
|
94
|
-
}] }], propDecorators: { dialogTemplate: [{
|
|
104
|
+
}] }, { type: i1.App }], propDecorators: { dialogTemplate: [{
|
|
95
105
|
type: ViewChild,
|
|
96
106
|
args: ['dialogTemplate', { static: true }]
|
|
97
107
|
}] } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/dialogs/alert-dialog/src/alert-dialog.props.ts","../../../../../projects/components/widgets/dialogs/alert-dialog/src/alert-dialog.component.ts","../../../../../projects/components/widgets/dialogs/alert-dialog/src/alert-dialog.component.html","../../../../../projects/components/widgets/dialogs/alert-dialog/src/index.ts"],"sourcesContent":["import { PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-alertdialog',\n new Map(\n [\n ['alerttype', {value: 'error', ...PROP_STRING}],\n ['animation', PROP_STRING],\n ['class', PROP_STRING],\n ['closable', {value: true, PROP_BOOLEAN}],\n ['iconclass', {value: 'wi wi-warning', PROP_STRING}],\n ['iconheight', PROP_STRING],\n ['iconmargin', PROP_STRING],\n ['iconurl', PROP_STRING],\n ['iconwidth', PROP_STRING],\n ['message', {value: 'Am an alert box!', ...PROP_STRING}],\n ['modal', {value: false, ...PROP_BOOLEAN}],\n ['name', PROP_STRING],\n ['oktext', {value: 'OK', ...PROP_STRING}],\n ['tabindex', {value: 0, ...PROP_NUMBER}],\n ['headinglevel', {value: 'h4', ...PROP_STRING}],\n ['title', {value: 'Alert', ...PROP_STRING}]\n ]\n )\n );\n};\n","import {\n Attribute,\n Component,\n Inject,\n Injector,\n OnInit,\n OnDestroy,\n Optional,\n TemplateRef,\n ViewChild\n} from '@angular/core';\n\nimport { toBoolean } from '@wm/core';\nimport { IWidgetConfig, provideAsDialogRef, provideAsWidgetRef, TextContentDirective } from '@wm/components/base';\nimport { BaseDialog, DialogBodyDirective, DialogFooterDirective, DialogHeaderComponent } from '@wm/components/dialogs';\n\nimport { registerProps } from './alert-dialog.props';\nimport { ButtonComponent } from \"@wm/components/input/button\";\n\nconst DIALOG_CLS = 'app-dialog modal-dialog app-alert-dialog';\n\nconst WIDGET_INFO: IWidgetConfig = { widgetType: 'wm-alertdialog' };\n\n@Component({\n standalone: true,\n imports: [TextContentDirective, DialogBodyDirective, DialogFooterDirective, DialogHeaderComponent, ButtonComponent],\n selector: 'div[wmAlertDialog]',\n templateUrl: './alert-dialog.component.html',\n providers: [\n provideAsWidgetRef(AlertDialogComponent),\n provideAsDialogRef(AlertDialogComponent)\n ]\n})\nexport class AlertDialogComponent extends BaseDialog implements OnInit, OnDestroy {\n static initializeProps = registerProps();\n\n @ViewChild('dialogTemplate', { static: true }) dialogTemplate: TemplateRef<any>;\n\n constructor(\n inj: Injector,\n @Attribute('class') dialogClass: string,\n @Attribute('modal') modal: string | boolean,\n @Attribute('closable') closable: string | boolean,\n @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any\n ) {\n if (modal === null || modal === undefined) {\n modal = false;\n }\n\n if (closable === null || closable === undefined) {\n closable = true;\n }\n\n // setting the backdrop to 'static' will not close the dialog on backdrop click\n const backdrop: boolean | 'static' = toBoolean(modal) ? 'static' : true;\n\n super(\n inj,\n WIDGET_INFO,\n {\n class: `${DIALOG_CLS} ${dialogClass || ''}`,\n backdrop,\n keyboard: !toBoolean(modal)\n },\n explicitContext\n );\n }\n\n protected getTemplateRef(): TemplateRef<any> {\n return this.dialogTemplate;\n }\n\n /**\n * Click event handler for the ok button\n * invokes on-ok event callback\n * @param {Event} $event\n */\n onOk($event: Event) {\n this.invokeEventCallback('ok', { $event });\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.register(this.viewParent);\n }\n\n ngOnDestroy() {\n // MEMORY LEAK FIX: Clear ViewChild reference\n this.dialogTemplate = null;\n\n super.ngOnDestroy();\n }\n}\n","<ng-template #dialogTemplate>\n <div wmDialogHeader [closable]=\"closable\"\n [iconclass]=\"iconclass\"\n [iconurl]=\"iconurl\"\n [iconwidth]=\"iconwidth\"\n [iconheight]=\"iconheight\"\n [iconmargin]=\"iconmargin\"\n [heading]=\"title\"\n [headinglevel]=\"headinglevel\"\n [title]=\"title\"\n [titleid]=\"titleId\"></div>\n <div wmDialogBody>\n <p class=\"app-dialog-message text-{{alerttype}}\" [textContent]=\"message\"></p>\n </div>\n <div wmDialogFooter>\n <button (click)=\"onOk($event)\" [attr.aria-label]=\"oktext\" caption.bind=\"oktext\" class=\"btn-primary ok-action\"\n wmButton></button>\n </div>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/dialogs/alert-dialog/src/alert-dialog.props.ts","../../../../../projects/components/widgets/dialogs/alert-dialog/src/alert-dialog.component.ts","../../../../../projects/components/widgets/dialogs/alert-dialog/src/alert-dialog.component.html","../../../../../projects/components/widgets/dialogs/alert-dialog/src/index.ts"],"sourcesContent":["import { PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-alertdialog',\n new Map(\n [\n ['alerttype', {value: 'error', ...PROP_STRING}],\n ['animation', PROP_STRING],\n ['class', PROP_STRING],\n ['closable', {value: true, PROP_BOOLEAN}],\n ['iconclass', {value: 'wi wi-warning', PROP_STRING}],\n ['iconheight', PROP_STRING],\n ['iconmargin', PROP_STRING],\n ['iconurl', PROP_STRING],\n ['iconwidth', PROP_STRING],\n ['message', {value: 'Am an alert box!', ...PROP_STRING}],\n ['modal', {value: false, ...PROP_BOOLEAN}],\n ['name', PROP_STRING],\n ['oktext', {value: 'OK', ...PROP_STRING}],\n ['tabindex', {value: 0, ...PROP_NUMBER}],\n ['headinglevel', {value: 'h4', ...PROP_STRING}],\n ['title', {value: 'Alert', ...PROP_STRING}]\n ]\n )\n );\n};\n","import {\n Attribute,\n Component,\n Inject,\n Injector,\n OnInit,\n OnDestroy,\n Optional,\n TemplateRef,\n ViewChild\n} from '@angular/core';\n\nimport { App, toBoolean } from '@wm/core';\nimport { IWidgetConfig, provideAsDialogRef, provideAsWidgetRef, TextContentDirective } from '@wm/components/base';\nimport { BaseDialog, DialogBodyDirective, DialogFooterDirective, DialogHeaderComponent } from '@wm/components/dialogs';\n\nimport { registerProps } from './alert-dialog.props';\nimport { ButtonComponent } from \"@wm/components/input/button\";\n\nconst DIALOG_CLS = 'app-dialog modal-dialog app-alert-dialog';\n\nconst WIDGET_INFO: IWidgetConfig = { widgetType: 'wm-alertdialog' };\n\nconst alertMap: Record<string, string> = {\n information: 'info',\n error: 'danger',\n success: 'success',\n warning: 'warning'\n};\n\n@Component({\n standalone: true,\n imports: [TextContentDirective, DialogBodyDirective, DialogFooterDirective, DialogHeaderComponent, ButtonComponent],\n selector: 'div[wmAlertDialog]',\n templateUrl: './alert-dialog.component.html',\n providers: [\n provideAsWidgetRef(AlertDialogComponent),\n provideAsDialogRef(AlertDialogComponent)\n ]\n})\nexport class AlertDialogComponent extends BaseDialog implements OnInit, OnDestroy {\n static initializeProps = registerProps();\n isPrism: boolean;\n alerttype: any;\n\n @ViewChild('dialogTemplate', { static: true }) dialogTemplate: TemplateRef<any>;\n\n constructor(\n inj: Injector,\n @Attribute('class') dialogClass: string,\n @Attribute('modal') modal: string | boolean,\n @Attribute('closable') closable: string | boolean,\n @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any,\n public app: App\n ) {\n if (modal === null || modal === undefined) {\n modal = false;\n }\n\n if (closable === null || closable === undefined) {\n closable = true;\n }\n\n // setting the backdrop to 'static' will not close the dialog on backdrop click\n const backdrop: boolean | 'static' = toBoolean(modal) ? 'static' : true;\n\n super(\n inj,\n WIDGET_INFO,\n {\n class: `${DIALOG_CLS} ${dialogClass || ''}`,\n backdrop,\n keyboard: !toBoolean(modal)\n },\n explicitContext\n );\n this.isPrism = this.app.isPrism;\n }\n\n protected getTemplateRef(): TemplateRef<any> {\n return this.dialogTemplate;\n }\n\n /**\n * Click event handler for the ok button\n * invokes on-ok event callback\n * @param {Event} $event\n */\n onOk($event: Event) {\n this.invokeEventCallback('ok', { $event });\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.alerttype = alertMap[this.alerttype] ?? this.alerttype;\n this.register(this.viewParent);\n }\n\n ngOnDestroy() {\n // MEMORY LEAK FIX: Clear ViewChild reference\n this.dialogTemplate = null;\n\n super.ngOnDestroy();\n }\n}\n","<ng-template #dialogTemplate>\n <div wmDialogHeader [closable]=\"closable\"\n [iconclass]=\"iconclass\"\n [iconurl]=\"iconurl\"\n [iconwidth]=\"iconwidth\"\n [iconheight]=\"iconheight\"\n [iconmargin]=\"iconmargin\"\n [heading]=\"title\"\n [headinglevel]=\"headinglevel\"\n [title]=\"title\"\n [titleid]=\"titleId\"></div>\n <div wmDialogBody>\n <p class=\"app-dialog-message text-{{alerttype}}\" [class.app-label]=\"isPrism\" [textContent]=\"message\"></p>\n </div>\n <div wmDialogFooter>\n <button (click)=\"onOk($event)\" [attr.aria-label]=\"oktext\" caption.bind=\"oktext\" class=\"btn-primary ok-action\"\n wmButton></button>\n </div>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
@@ -42,12 +42,15 @@
|
|
|
42
42
|
['shortcutkey', base.PROP_STRING],
|
|
43
43
|
['show', { value: true, ...base.PROP_BOOLEAN }],
|
|
44
44
|
['tabindex', { value: 0, ...base.PROP_NUMBER }],
|
|
45
|
-
['uncheckedvalue', { value: false, ...base.PROP_STRING }]
|
|
45
|
+
['uncheckedvalue', { value: false, ...base.PROP_STRING }],
|
|
46
|
+
['unselectedicon', base.PROP_STRING],
|
|
47
|
+
['selectedicon', base.PROP_STRING]
|
|
46
48
|
]);
|
|
47
49
|
const registerProps = () => {
|
|
48
50
|
base.register('wm-checkbox', checkboxProps);
|
|
49
51
|
base.registerFormWidget(core.FormWidgetType.CHECKBOX, checkboxProps);
|
|
50
52
|
base.registerFormWidget(core.FormWidgetType.TOGGLE, checkboxProps);
|
|
53
|
+
base.registerFormWidget(core.FormWidgetType.ICONBUTTONTOGGLE, checkboxProps);
|
|
51
54
|
};
|
|
52
55
|
|
|
53
56
|
const DEFAULT_CLS = 'app-checkbox checkbox';
|
|
@@ -88,6 +91,12 @@
|
|
|
88
91
|
this.updatePrevDatavalue(this.datavalue);
|
|
89
92
|
}
|
|
90
93
|
constructor(inj, checkedVal, uncheckedVal, type, explicitContext) {
|
|
94
|
+
if (type === 'button') {
|
|
95
|
+
WIDGET_CONFIG.hostClass = 'app-iconbutton-toggle';
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
WIDGET_CONFIG.hostClass = DEFAULT_CLS;
|
|
99
|
+
}
|
|
91
100
|
super(inj, WIDGET_CONFIG, explicitContext);
|
|
92
101
|
this.type = type;
|
|
93
102
|
this._caption = ' ';
|
|
@@ -157,7 +166,7 @@
|
|
|
157
166
|
base.provideAs(CheckboxComponent, i2.NG_VALUE_ACCESSOR, true),
|
|
158
167
|
base.provideAs(CheckboxComponent, i2.NG_VALIDATORS, true),
|
|
159
168
|
base.provideAsWidgetRef(CheckboxComponent)
|
|
160
|
-
], viewQueries: [{ propertyName: "ngModel", first: true, predicate: i2.NgModel, descendants: true }, { propertyName: "checkboxEl", first: true, predicate: ["checkbox"], descendants: true, read: i0.ElementRef, static: true }], usesInheritance: true, ngImport: i0__namespace, template: "<label [ngClass]=\"{'unchecked': !proxyModel, 'disabled': (disabled || readonly), 'required': (required && _caption)}\">\n <input type=\"checkbox\"\n #checkbox\n [attr.name]=\"name\"\n [attr.aria-label]=\"arialabel\"\n focus-target\n [(ngModel)]=\"proxyModel\"\n [ngModelOptions]=\"{standalone: true}\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [disabled]=\"disabled || readonly\"\n [attr.accesskey]=\"shortcutkey\"\n [tabindex]=\"tabindex\"\n (blur)=\"invokeOnTouched($event)\"\n (ngModelChange)=\"handleChange($event)\">\n <span class=\"caption\" [innerHtml]=\"_caption\"></span>\n <img alt=\"Checkbox Image\" aria-hidden=\"true\" src=\"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" class=\"switch\"/>\n</label>\n<input type=\"hidden\" class=\"ng-hide model-holder\" aria-hidden=\"true\" tabindex=\"-1\" [disabled]=\"disabled\" [value]=\"proxyModel\">\n", dependencies: [{ kind: "ngmodule", type: i1.CommonModule }, { kind: "directive", type: i1__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: i2.FormsModule }, { kind: "directive", type: i2__namespace.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2__namespace.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2__namespace.CheckboxRequiredValidator, selector: "input[type=checkbox][required][formControlName],input[type=checkbox][required][formControl],input[type=checkbox][required][ngModel]" }, { kind: "directive", type: i2__namespace.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
|
|
169
|
+
], viewQueries: [{ propertyName: "ngModel", first: true, predicate: i2.NgModel, descendants: true }, { propertyName: "checkboxEl", first: true, predicate: ["checkbox"], descendants: true, read: i0.ElementRef, static: true }], usesInheritance: true, ngImport: i0__namespace, template: "<label [ngClass]=\"{'unchecked': !proxyModel, 'disabled': (disabled || readonly), 'required': (required && _caption), 'icon-button-toggle': type === 'button'}\">\n <input type=\"checkbox\"\n #checkbox\n [attr.name]=\"name\"\n [attr.aria-label]=\"arialabel\"\n focus-target\n [(ngModel)]=\"proxyModel\"\n [ngModelOptions]=\"{standalone: true}\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [disabled]=\"disabled || readonly\"\n [attr.accesskey]=\"shortcutkey\"\n [tabindex]=\"tabindex\"\n (blur)=\"invokeOnTouched($event)\"\n (ngModelChange)=\"handleChange($event)\">\n <span class=\"caption\" [innerHtml]=\"_caption\" *ngIf=\"type != 'button' && type != 'toggle'\"></span>\n <!-- Icon toggle button -->\n <span class=\"caption fa-xs text-center\" *ngIf=\"type == 'toggle'\">\n <span name=\"unselectedIcon\" class=\"start-icon\" [ngClass]=\"unselectedicon\" *ngIf=\"!proxyModel\"></span>\n <span name=\"selectedIcon\" class=\"end-icon\" [ngClass]=\"selectedicon\" *ngIf=\"proxyModel\"></span>\n </span>\n <span class=\"toggle-icon\" [ngClass]=\"unselectedicon\" *ngIf=\"type === 'button' && !proxyModel\"></span>\n <span class=\"toggle-icon\" *ngIf=\"proxyModel && type === 'button'\" [ngClass]=\"selectedicon\"></span>\n <img alt=\"Checkbox Image\" aria-hidden=\"true\" src=\"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" class=\"switch\"/>\n</label>\n<input type=\"hidden\" class=\"ng-hide model-holder\" aria-hidden=\"true\" tabindex=\"-1\" [disabled]=\"disabled\" [value]=\"proxyModel\">\n", dependencies: [{ kind: "ngmodule", type: i1.CommonModule }, { kind: "directive", type: i1__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: i2.FormsModule }, { kind: "directive", type: i2__namespace.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2__namespace.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2__namespace.CheckboxRequiredValidator, selector: "input[type=checkbox][required][formControlName],input[type=checkbox][required][formControl],input[type=checkbox][required][ngModel]" }, { kind: "directive", type: i2__namespace.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
|
|
161
170
|
}
|
|
162
171
|
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0__namespace, type: CheckboxComponent, decorators: [{
|
|
163
172
|
type: i0.Component,
|
|
@@ -165,7 +174,7 @@
|
|
|
165
174
|
base.provideAs(CheckboxComponent, i2.NG_VALUE_ACCESSOR, true),
|
|
166
175
|
base.provideAs(CheckboxComponent, i2.NG_VALIDATORS, true),
|
|
167
176
|
base.provideAsWidgetRef(CheckboxComponent)
|
|
168
|
-
], template: "<label [ngClass]=\"{'unchecked': !proxyModel, 'disabled': (disabled || readonly), 'required': (required && _caption)}\">\n <input type=\"checkbox\"\n #checkbox\n [attr.name]=\"name\"\n [attr.aria-label]=\"arialabel\"\n focus-target\n [(ngModel)]=\"proxyModel\"\n [ngModelOptions]=\"{standalone: true}\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [disabled]=\"disabled || readonly\"\n [attr.accesskey]=\"shortcutkey\"\n [tabindex]=\"tabindex\"\n (blur)=\"invokeOnTouched($event)\"\n (ngModelChange)=\"handleChange($event)\">\n <span class=\"caption\" [innerHtml]=\"_caption\"></span>\n <img alt=\"Checkbox Image\" aria-hidden=\"true\" src=\"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" class=\"switch\"/>\n</label>\n<input type=\"hidden\" class=\"ng-hide model-holder\" aria-hidden=\"true\" tabindex=\"-1\" [disabled]=\"disabled\" [value]=\"proxyModel\">\n" }]
|
|
177
|
+
], template: "<label [ngClass]=\"{'unchecked': !proxyModel, 'disabled': (disabled || readonly), 'required': (required && _caption), 'icon-button-toggle': type === 'button'}\">\n <input type=\"checkbox\"\n #checkbox\n [attr.name]=\"name\"\n [attr.aria-label]=\"arialabel\"\n focus-target\n [(ngModel)]=\"proxyModel\"\n [ngModelOptions]=\"{standalone: true}\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [disabled]=\"disabled || readonly\"\n [attr.accesskey]=\"shortcutkey\"\n [tabindex]=\"tabindex\"\n (blur)=\"invokeOnTouched($event)\"\n (ngModelChange)=\"handleChange($event)\">\n <span class=\"caption\" [innerHtml]=\"_caption\" *ngIf=\"type != 'button' && type != 'toggle'\"></span>\n <!-- Icon toggle button -->\n <span class=\"caption fa-xs text-center\" *ngIf=\"type == 'toggle'\">\n <span name=\"unselectedIcon\" class=\"start-icon\" [ngClass]=\"unselectedicon\" *ngIf=\"!proxyModel\"></span>\n <span name=\"selectedIcon\" class=\"end-icon\" [ngClass]=\"selectedicon\" *ngIf=\"proxyModel\"></span>\n </span>\n <span class=\"toggle-icon\" [ngClass]=\"unselectedicon\" *ngIf=\"type === 'button' && !proxyModel\"></span>\n <span class=\"toggle-icon\" *ngIf=\"proxyModel && type === 'button'\" [ngClass]=\"selectedicon\"></span>\n <img alt=\"Checkbox Image\" aria-hidden=\"true\" src=\"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" class=\"switch\"/>\n</label>\n<input type=\"hidden\" class=\"ng-hide model-holder\" aria-hidden=\"true\" tabindex=\"-1\" [disabled]=\"disabled\" [value]=\"proxyModel\">\n" }]
|
|
169
178
|
}], ctorParameters: () => [{ type: i0__namespace.Injector }, { type: undefined, decorators: [{
|
|
170
179
|
type: i0.Attribute,
|
|
171
180
|
args: ['checkedvalue']
|
|
@@ -18,6 +18,8 @@ export declare class CheckboxComponent extends BaseFormCustomComponent implement
|
|
|
18
18
|
_caption: string;
|
|
19
19
|
private _checkedvalue;
|
|
20
20
|
private _uncheckedvalue;
|
|
21
|
+
unselectedicon: any;
|
|
22
|
+
selectedicon: any;
|
|
21
23
|
ngModel: NgModel;
|
|
22
24
|
checkboxEl: ElementRef;
|
|
23
25
|
get datavalue(): any;
|
|
@@ -47,6 +47,12 @@ export class CheckboxComponent extends BaseFormCustomComponent {
|
|
|
47
47
|
this.updatePrevDatavalue(this.datavalue);
|
|
48
48
|
}
|
|
49
49
|
constructor(inj, checkedVal, uncheckedVal, type, explicitContext) {
|
|
50
|
+
if (type === 'button') {
|
|
51
|
+
WIDGET_CONFIG.hostClass = 'app-iconbutton-toggle';
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
WIDGET_CONFIG.hostClass = DEFAULT_CLS;
|
|
55
|
+
}
|
|
50
56
|
super(inj, WIDGET_CONFIG, explicitContext);
|
|
51
57
|
this.type = type;
|
|
52
58
|
this._caption = ' ';
|
|
@@ -116,7 +122,7 @@ export class CheckboxComponent extends BaseFormCustomComponent {
|
|
|
116
122
|
provideAs(CheckboxComponent, NG_VALUE_ACCESSOR, true),
|
|
117
123
|
provideAs(CheckboxComponent, NG_VALIDATORS, true),
|
|
118
124
|
provideAsWidgetRef(CheckboxComponent)
|
|
119
|
-
], viewQueries: [{ propertyName: "ngModel", first: true, predicate: NgModel, descendants: true }, { propertyName: "checkboxEl", first: true, predicate: ["checkbox"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, ngImport: i0, template: "<label [ngClass]=\"{'unchecked': !proxyModel, 'disabled': (disabled || readonly), 'required': (required && _caption)}\">\n <input type=\"checkbox\"\n #checkbox\n [attr.name]=\"name\"\n [attr.aria-label]=\"arialabel\"\n focus-target\n [(ngModel)]=\"proxyModel\"\n [ngModelOptions]=\"{standalone: true}\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [disabled]=\"disabled || readonly\"\n [attr.accesskey]=\"shortcutkey\"\n [tabindex]=\"tabindex\"\n (blur)=\"invokeOnTouched($event)\"\n (ngModelChange)=\"handleChange($event)\">\n <span class=\"caption\" [innerHtml]=\"_caption\"></span>\n <img alt=\"Checkbox Image\" aria-hidden=\"true\" src=\"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" class=\"switch\"/>\n</label>\n<input type=\"hidden\" class=\"ng-hide model-holder\" aria-hidden=\"true\" tabindex=\"-1\" [disabled]=\"disabled\" [value]=\"proxyModel\">\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.CheckboxRequiredValidator, selector: "input[type=checkbox][required][formControlName],input[type=checkbox][required][formControl],input[type=checkbox][required][ngModel]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
|
|
125
|
+
], viewQueries: [{ propertyName: "ngModel", first: true, predicate: NgModel, descendants: true }, { propertyName: "checkboxEl", first: true, predicate: ["checkbox"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, ngImport: i0, template: "<label [ngClass]=\"{'unchecked': !proxyModel, 'disabled': (disabled || readonly), 'required': (required && _caption), 'icon-button-toggle': type === 'button'}\">\n <input type=\"checkbox\"\n #checkbox\n [attr.name]=\"name\"\n [attr.aria-label]=\"arialabel\"\n focus-target\n [(ngModel)]=\"proxyModel\"\n [ngModelOptions]=\"{standalone: true}\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [disabled]=\"disabled || readonly\"\n [attr.accesskey]=\"shortcutkey\"\n [tabindex]=\"tabindex\"\n (blur)=\"invokeOnTouched($event)\"\n (ngModelChange)=\"handleChange($event)\">\n <span class=\"caption\" [innerHtml]=\"_caption\" *ngIf=\"type != 'button' && type != 'toggle'\"></span>\n <!-- Icon toggle button -->\n <span class=\"caption fa-xs text-center\" *ngIf=\"type == 'toggle'\">\n <span name=\"unselectedIcon\" class=\"start-icon\" [ngClass]=\"unselectedicon\" *ngIf=\"!proxyModel\"></span>\n <span name=\"selectedIcon\" class=\"end-icon\" [ngClass]=\"selectedicon\" *ngIf=\"proxyModel\"></span>\n </span>\n <span class=\"toggle-icon\" [ngClass]=\"unselectedicon\" *ngIf=\"type === 'button' && !proxyModel\"></span>\n <span class=\"toggle-icon\" *ngIf=\"proxyModel && type === 'button'\" [ngClass]=\"selectedicon\"></span>\n <img alt=\"Checkbox Image\" aria-hidden=\"true\" src=\"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" class=\"switch\"/>\n</label>\n<input type=\"hidden\" class=\"ng-hide model-holder\" aria-hidden=\"true\" tabindex=\"-1\" [disabled]=\"disabled\" [value]=\"proxyModel\">\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.CheckboxRequiredValidator, selector: "input[type=checkbox][required][formControlName],input[type=checkbox][required][formControl],input[type=checkbox][required][ngModel]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
|
|
120
126
|
}
|
|
121
127
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CheckboxComponent, decorators: [{
|
|
122
128
|
type: Component,
|
|
@@ -124,7 +130,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
124
130
|
provideAs(CheckboxComponent, NG_VALUE_ACCESSOR, true),
|
|
125
131
|
provideAs(CheckboxComponent, NG_VALIDATORS, true),
|
|
126
132
|
provideAsWidgetRef(CheckboxComponent)
|
|
127
|
-
], template: "<label [ngClass]=\"{'unchecked': !proxyModel, 'disabled': (disabled || readonly), 'required': (required && _caption)}\">\n <input type=\"checkbox\"\n #checkbox\n [attr.name]=\"name\"\n [attr.aria-label]=\"arialabel\"\n focus-target\n [(ngModel)]=\"proxyModel\"\n [ngModelOptions]=\"{standalone: true}\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [disabled]=\"disabled || readonly\"\n [attr.accesskey]=\"shortcutkey\"\n [tabindex]=\"tabindex\"\n (blur)=\"invokeOnTouched($event)\"\n (ngModelChange)=\"handleChange($event)\">\n <span class=\"caption\" [innerHtml]=\"_caption\"></span>\n <img alt=\"Checkbox Image\" aria-hidden=\"true\" src=\"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" class=\"switch\"/>\n</label>\n<input type=\"hidden\" class=\"ng-hide model-holder\" aria-hidden=\"true\" tabindex=\"-1\" [disabled]=\"disabled\" [value]=\"proxyModel\">\n" }]
|
|
133
|
+
], template: "<label [ngClass]=\"{'unchecked': !proxyModel, 'disabled': (disabled || readonly), 'required': (required && _caption), 'icon-button-toggle': type === 'button'}\">\n <input type=\"checkbox\"\n #checkbox\n [attr.name]=\"name\"\n [attr.aria-label]=\"arialabel\"\n focus-target\n [(ngModel)]=\"proxyModel\"\n [ngModelOptions]=\"{standalone: true}\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [disabled]=\"disabled || readonly\"\n [attr.accesskey]=\"shortcutkey\"\n [tabindex]=\"tabindex\"\n (blur)=\"invokeOnTouched($event)\"\n (ngModelChange)=\"handleChange($event)\">\n <span class=\"caption\" [innerHtml]=\"_caption\" *ngIf=\"type != 'button' && type != 'toggle'\"></span>\n <!-- Icon toggle button -->\n <span class=\"caption fa-xs text-center\" *ngIf=\"type == 'toggle'\">\n <span name=\"unselectedIcon\" class=\"start-icon\" [ngClass]=\"unselectedicon\" *ngIf=\"!proxyModel\"></span>\n <span name=\"selectedIcon\" class=\"end-icon\" [ngClass]=\"selectedicon\" *ngIf=\"proxyModel\"></span>\n </span>\n <span class=\"toggle-icon\" [ngClass]=\"unselectedicon\" *ngIf=\"type === 'button' && !proxyModel\"></span>\n <span class=\"toggle-icon\" *ngIf=\"proxyModel && type === 'button'\" [ngClass]=\"selectedicon\"></span>\n <img alt=\"Checkbox Image\" aria-hidden=\"true\" src=\"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" class=\"switch\"/>\n</label>\n<input type=\"hidden\" class=\"ng-hide model-holder\" aria-hidden=\"true\" tabindex=\"-1\" [disabled]=\"disabled\" [value]=\"proxyModel\">\n" }]
|
|
128
134
|
}], ctorParameters: () => [{ type: i0.Injector }, { type: undefined, decorators: [{
|
|
129
135
|
type: Attribute,
|
|
130
136
|
args: ['checkedvalue']
|
|
@@ -149,4 +155,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
149
155
|
type: HostListener,
|
|
150
156
|
args: ['keydown.enter', ['$event', '"ENTER"']]
|
|
151
157
|
}] } });
|
|
152
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy93aWRnZXRzL2lucHV0L2NoZWNrYm94L3NyYy9jaGVja2JveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvaW5wdXQvY2hlY2tib3gvc3JjL2NoZWNrYm94LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUVILFNBQVMsRUFDVCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sUUFBUSxFQUdSLFFBQVEsRUFDUixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RSxPQUFPLEVBQUMsU0FBUyxFQUFFLFdBQVcsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUNoRCxPQUFPLEVBQWdCLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RixPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUU5RSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7Ozs7QUFFL0MsTUFBTSxXQUFXLEdBQUcsdUJBQXVCLENBQUM7QUFDNUMsTUFBTSxhQUFhLEdBQWtCO0lBQ2pDLFVBQVUsRUFBRSxhQUFhO0lBQ3pCLFNBQVMsRUFBRSxXQUFXO0NBQ3pCLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLEdBQUcsRUFB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U0FBUzsyQkFBQyxjQUFjOzswQkFDeEIsU0FBUzsyQkFBQyxnQkFBZ0I7OzBCQUMxQixTQUFTOzJCQUFDLE1BQU07OzBCQUNoQixNQUFNOzJCQUFDLGtCQUFrQjs7MEJBQUcsUUFBUTt5Q0FwQnJCLE9BQU87c0JBQTFCLFNBQVM7dUJBQUMsT0FBTztnQkFDeUMsVUFBVTtzQkFBcEUsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBdUV6RCxTQUFTO3NCQURSLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBBdHRyaWJ1dGUsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIEluamVjdCxcbiAgICBJbmplY3RvcixcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1IsIE5nTW9kZWx9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtpc0RlZmluZWQsIHRvZ2dsZUNsYXNzfSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQge0lXaWRnZXRDb25maWcsIHByb3ZpZGVBcywgcHJvdmlkZUFzV2lkZ2V0UmVmLCBzdHlsZXJ9IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2UnO1xuaW1wb3J0IHtCYXNlRm9ybUN1c3RvbUNvbXBvbmVudH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvaW5wdXQvYmFzZS1mb3JtLWN1c3RvbSc7XG5cbmltcG9ydCB7cmVnaXN0ZXJQcm9wc30gZnJvbSAnLi9jaGVja2JveC5wcm9wcyc7XG5cbmNvbnN0IERFRkFVTFRfQ0xTID0gJ2FwcC1jaGVja2JveCBjaGVja2JveCc7XG5jb25zdCBXSURHRVRfQ09ORklHOiBJV2lkZ2V0Q29uZmlnID0ge1xuICAgIHdpZGdldFR5cGU6ICd3bS1jaGVja2JveCcsXG4gICAgaG9zdENsYXNzOiBERUZBVUxUX0NMU1xufTtcblxuLypcbiAqIHRyeSB0byBjb252ZXJ0IHRoZSBjaGVrZWR2YWx1ZSBhbmQgdW5jaGVja2VkIHZhbHVlcyB0byBib29sZWFuL251bWJlclxuICovXG5leHBvcnQgY29uc3QgdW5TdHJpbmdpZnkgPSAodmFsLCBkZWZhdWx0VmFsPykgPT4ge1xuICAgIGlmICh2YWwgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWw7XG4gICAgfVxuXG4gICAgaWYgKHZhbCA9PT0gdHJ1ZSB8fCB2YWwgPT09ICd0cnVlJykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodmFsID09PSBmYWxzZSB8fCB2YWwgPT09ICdmYWxzZScpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IG51bWJlciA9IHBhcnNlSW50KHZhbCwgMTApO1xuICAgIGlmICghaXNOYU4obnVtYmVyKSkge1xuICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgIH1cbiAgICByZXR1cm4gdmFsO1xufTtcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlXSxcbiAgICBzZWxlY3RvcjogJ1t3bUNoZWNrYm94XScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NoZWNrYm94LmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgcHJvdmlkZUFzKENoZWNrYm94Q29tcG9uZW50LCBOR19WQUxVRV9BQ0NFU1NPUiwgdHJ1ZSksXG4gICAgICAgIHByb3ZpZGVBcyhDaGVja2JveENvbXBvbmVudCwgTkdfVkFMSURBVE9SUywgdHJ1ZSksXG4gICAgICAgIHByb3ZpZGVBc1dpZGdldFJlZihDaGVja2JveENvbXBvbmVudClcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIENoZWNrYm94Q29tcG9uZW50IGV4dGVuZHMgQmFzZUZvcm1DdXN0b21Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgc3RhdGljIGluaXRpYWxpemVQcm9wcyA9IHJlZ2lzdGVyUHJvcHMoKTtcblxuICAgIHB1YmxpYyBwcm94eU1vZGVsOiBib29sZWFuO1xuICAgIHB1YmxpYyBkaXNhYmxlZDogYm9vbGVhbjtcbiAgICBwdWJsaWMgcmVhZG9ubHk6IGJvb2xlYW47XG4gICAgcHVibGljIHJlcXVpcmVkOiBib29sZWFuO1xuICAgIHB1YmxpYyBuYW1lOiBzdHJpbmc7XG4gICAgcHVibGljIGhpbnQ6IHN0cmluZztcbiAgICBwdWJsaWMgYXJpYWxhYmVsOiBzdHJpbmc7XG4gICAgcHVibGljIHNob3J0Y3V0a2V5OiBzdHJpbmc7XG4gICAgcHVibGljIHRhYmluZGV4OiBhbnk7XG4gICAgcHVibGljIF9jYXB0aW9uID0gJyZuYnNwJztcbiAgICBwcml2YXRlIF9jaGVja2VkdmFsdWU7XG4gICAgcHJpdmF0ZSBfdW5jaGVja2VkdmFsdWU7XG5cbiAgICBAVmlld0NoaWxkKE5nTW9kZWwpIG5nTW9kZWw6IE5nTW9kZWw7XG4gICAgQFZpZXdDaGlsZCgnY2hlY2tib3gnLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogRWxlbWVudFJlZiB9KSBjaGVja2JveEVsOiBFbGVtZW50UmVmO1xuXG4gICAgLy8gaWYgdGhlIGNoZWNrYm94IGlzIGNoZWNrZWQsIHJldHVybiBjaGVja2VkdmFsdWUgZWxzZSByZXR1cm4gdW5jaGVja2VkdmFsdWVcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcHVibGljIGdldCBkYXRhdmFsdWUoKSB7XG4gICAgICAgIHJldHVybiBpc0RlZmluZWQodGhpcy5wcm94eU1vZGVsKSA/ICh0aGlzLnByb3h5TW9kZWwgPyB0aGlzLl9jaGVja2VkdmFsdWUgOiB0aGlzLl91bmNoZWNrZWR2YWx1ZSkgOiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIC8vIHdoZW4gdGhlIGRhdGF2YWx1ZSBpcyBzZXQsIHVwZGF0ZSB0aGUgY2hlY2tlZCBzdGF0ZVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBwdWJsaWMgc2V0IGRhdGF2YWx1ZSh2KSB7XG4gICAgICAgIHRoaXMucHJveHlNb2RlbCA9IChpc0RlZmluZWQodikgJiYgdiAhPT0gJycpID8gdiA9PT0gdGhpcy5fY2hlY2tlZHZhbHVlIDogdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnVwZGF0ZVByZXZEYXRhdmFsdWUodGhpcy5kYXRhdmFsdWUpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBpbmo6IEluamVjdG9yLFxuICAgICAgICBAQXR0cmlidXRlKCdjaGVja2VkdmFsdWUnKSBjaGVja2VkVmFsLFxuICAgICAgICBAQXR0cmlidXRlKCd1bmNoZWNrZWR2YWx1ZScpIHVuY2hlY2tlZFZhbCxcbiAgICAgICAgQEF0dHJpYnV0ZSgndHlwZScpIHB1YmxpYyB0eXBlLFxuICAgICAgICBASW5qZWN0KCdFWFBMSUNJVF9DT05URVhUJykgQE9wdGlvbmFsKCkgZXhwbGljaXRDb250ZXh0OiBhbnlcbiAgICApIHtcbiAgICAgICAgc3VwZXIoaW5qLCBXSURHRVRfQ09ORklHLCBleHBsaWNpdENvbnRleHQpO1xuXG4gICAgICAgIHRoaXMuX2NoZWNrZWR2YWx1ZSA9IHVuU3RyaW5naWZ5KGNoZWNrZWRWYWwsIHRydWUpO1xuICAgICAgICB0aGlzLl91bmNoZWNrZWR2YWx1ZSA9IHVuU3RyaW5naWZ5KHVuY2hlY2tlZFZhbCwgZmFsc2UpO1xuXG4gICAgICAgIC8vIGlmIHRoZSB0eXBlIG9mIHRoZSBjaGVja2JveCBpcyB0b2dnbGUgdXBkYXRlIHRoZSByZWxhdGVkIGNsYXNzZXMgb24gdGhlIGhvc3Qgbm9kZVxuICAgICAgICB0b2dnbGVDbGFzcyh0aGlzLm5hdGl2ZUVsZW1lbnQsICdhcHAtdG9nZ2xlJywgdHlwZSA9PT0gJ3RvZ2dsZScpO1xuICAgIH1cblxuICAgIG9uUHJvcGVydHlDaGFuZ2Uoa2V5LCBudiwgb3YpIHtcbiAgICAgICAgaWYgKGtleSA9PT0gJ3RhYmluZGV4Jykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChrZXkgPT09ICdyZXF1aXJlZCcpIHtcbiAgICAgICAgICAgIHRoaXMuX29uQ2hhbmdlKHRoaXMuZGF0YXZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChrZXkgPT09ICdjYXB0aW9uJykge1xuICAgICAgICAgICAgaWYgKCFpc0RlZmluZWQobnYpIHx8IG52ID09PSAnJykge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NhcHRpb24gPSAnJm5ic3A7JztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2FwdGlvbiA9IG52O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ2NoZWNrZWR2YWx1ZScpIHtcbiAgICAgICAgICAgIHRoaXMuX2NoZWNrZWR2YWx1ZSA9IHVuU3RyaW5naWZ5KG52LCB0cnVlKTtcbiAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICd1bmNoZWNrZWR2YWx1ZScpIHtcbiAgICAgICAgICAgIHRoaXMuX3VuY2hlY2tlZHZhbHVlID0gdW5TdHJpbmdpZnkobnYsIGZhbHNlKTtcbiAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdkYXRhdmFsdWUnKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGF2YWx1ZSA9IHVuU3RyaW5naWZ5KG52KTtcbiAgICAgICAgICAgIHRoaXMuX29uQ2hhbmdlKHRoaXMuZGF0YXZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN1cGVyLm9uUHJvcGVydHlDaGFuZ2Uoa2V5LCBudiwgb3YpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gY2hhbmdlIGFuZCBibHVyIGV2ZW50cyBhcmUgaGFuZGxlZCBmcm9tIHRlbXBsYXRlXG4gICAgcHJvdGVjdGVkIGhhbmRsZUV2ZW50KG5vZGU6IEhUTUxFbGVtZW50LCBldmVudE5hbWU6IHN0cmluZywgY2FsbGJhY2s6IEZ1bmN0aW9uLCBsb2NhbHM6IGFueSkge1xuICAgICAgICBpZiAoZXZlbnROYW1lICE9PSAnY2hhbmdlJyAmJiBldmVudE5hbWUgIT09ICdibHVyJykge1xuICAgICAgICAgICAgLy8gYXBwbHlpbmcgdGFwIChIYW1tZXIgZXZlbnQpIG9uIHRoZSBsYWJlbCBhcyB0aGUgZXZlbnQgaGFuZGxlciBpcyBub3QgZ2V0dGluZyB0cmlnZ2VyZWQgb24gdGhlIGlucHV0LlxuICAgICAgICAgICAgY29uc3QgJGVsID0gZXZlbnROYW1lID09PSAndGFwJyA/IHRoaXMubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdsYWJlbCcpIDogdGhpcy5jaGVja2JveEVsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICBzdXBlci5oYW5kbGVFdmVudCgkZWwsIGV2ZW50TmFtZSwgY2FsbGJhY2ssIGxvY2Fscyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYW5kbGVDaGFuZ2UobmV3VmFsOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuaW52b2tlT25DaGFuZ2UodGhpcy5kYXRhdmFsdWUsIHt0eXBlOiAnY2hhbmdlJ30sIHRoaXMubmdNb2RlbC52YWxpZCk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5lbnRlcicsIFsnJGV2ZW50JywgJ1wiRU5URVJcIiddKVxuICAgIG9uS2V5RG93bigkZXZlbnQpIHtcbiAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuY2hlY2tib3hFbC5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gICAgfVxuXG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgICAgICBzdHlsZXIodGhpcy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2xhYmVsJyksIHRoaXMpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICAvLyBNRU1PUlkgTEVBSyBGSVg6IENsZWFyIFZpZXdDaGlsZCByZWZlcmVuY2VzXG4gICAgICAgIHRoaXMubmdNb2RlbCA9IG51bGw7XG4gICAgICAgIHRoaXMuY2hlY2tib3hFbCA9IG51bGw7XG5cbiAgICAgICAgLy8gQ2FsbCBwYXJlbnQgbmdPbkRlc3Ryb3lcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB9XG59XG4iLCI8bGFiZWwgW25nQ2xhc3NdPVwieyd1bmNoZWNrZWQnOiAhcHJveHlNb2RlbCwgJ2Rpc2FibGVkJzogKGRpc2FibGVkIHx8IHJlYWRvbmx5KSwgJ3JlcXVpcmVkJzogKHJlcXVpcmVkICYmIF9jYXB0aW9uKX1cIj5cbiAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgI2NoZWNrYm94XG4gICAgICAgICAgIFthdHRyLm5hbWVdPVwibmFtZVwiXG4gICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYWxhYmVsXCJcbiAgICAgICAgICAgZm9jdXMtdGFyZ2V0XG4gICAgICAgICAgIFsobmdNb2RlbCldPVwicHJveHlNb2RlbFwiXG4gICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIlxuICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcmVhZG9ubHlcIlxuICAgICAgICAgICBbYXR0ci5hY2Nlc3NrZXldPVwic2hvcnRjdXRrZXlcIlxuICAgICAgICAgICBbdGFiaW5kZXhdPVwidGFiaW5kZXhcIlxuICAgICAgICAgICAoYmx1cik9XCJpbnZva2VPblRvdWNoZWQoJGV2ZW50KVwiXG4gICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImhhbmRsZUNoYW5nZSgkZXZlbnQpXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJjYXB0aW9uXCIgW2lubmVySHRtbF09XCJfY2FwdGlvblwiPjwvc3Bhbj5cbiAgICA8aW1nIGFsdD1cIkNoZWNrYm94IEltYWdlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgc3JjPVwiZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoQVFBQkFBQUFBQ0g1QkFFS0FBRUFMQUFBQUFBQkFBRUFBQUlDVEFFQU93PT1cIiBjbGFzcz1cInN3aXRjaFwiLz5cbjwvbGFiZWw+XG48aW5wdXQgdHlwZT1cImhpZGRlblwiIGNsYXNzPVwibmctaGlkZSBtb2RlbC1ob2xkZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0YWJpbmRleD1cIi0xXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgW3ZhbHVlXT1cInByb3h5TW9kZWxcIj5cbiJdfQ==
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy93aWRnZXRzL2lucHV0L2NoZWNrYm94L3NyYy9jaGVja2JveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvaW5wdXQvY2hlY2tib3gvc3JjL2NoZWNrYm94LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUVILFNBQVMsRUFDVCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sUUFBUSxFQUdSLFFBQVEsRUFDUixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RSxPQUFPLEVBQUMsU0FBUyxFQUFFLFdBQVcsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUNoRCxPQUFPLEVBQWdCLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RixPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUU5RSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7Ozs7QUFFL0MsTUFBTSxXQUFXLEdBQUcsdUJBQXVCLENBQUM7QUFDNUMsTUFBTSxhQUFhLEdBQWtCO0lBQ2pDLFVBQVUsRUFBRSxhQUFhO0lBQ3pCLFNBQVMsRUFBRSxXQUFXO0NBQ3pCLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLEdBQUcsRUFB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QUFXLENBQUMsWUFDeEIsY0FBYyxhQUViO3dCQUNQLFNBQVMsb0JBQW9CLGlCQUFpQixFQUFFLElBQUksQ0FBQzt3QkFDckQsU0FBUyxvQkFBb0IsYUFBYSxFQUFFLElBQUksQ0FBQzt3QkFDakQsa0JBQWtCLG1CQUFtQjtxQkFDeEM7OzBCQXFDSSxTQUFTOzJCQUFDLGNBQWM7OzBCQUN4QixTQUFTOzJCQUFDLGdCQUFnQjs7MEJBQzFCLFNBQVM7MkJBQUMsTUFBTTs7MEJBQ2hCLE1BQU07MkJBQUMsa0JBQWtCOzswQkFBRyxRQUFRO3lDQXBCckIsT0FBTztzQkFBMUIsU0FBUzt1QkFBQyxPQUFPO2dCQUN5QyxVQUFVO3NCQUFwRSxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkE0RXpELFNBQVM7c0JBRFIsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIEF0dHJpYnV0ZSxcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5qZWN0LFxuICAgIEluamVjdG9yLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOR19WQUxJREFUT1JTLCBOR19WQUxVRV9BQ0NFU1NPUiwgTmdNb2RlbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge2lzRGVmaW5lZCwgdG9nZ2xlQ2xhc3N9IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7SVdpZGdldENvbmZpZywgcHJvdmlkZUFzLCBwcm92aWRlQXNXaWRnZXRSZWYsIHN0eWxlcn0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5pbXBvcnQge0Jhc2VGb3JtQ3VzdG9tQ29tcG9uZW50fSBmcm9tICdAd20vY29tcG9uZW50cy9pbnB1dC9iYXNlLWZvcm0tY3VzdG9tJztcblxuaW1wb3J0IHtyZWdpc3RlclByb3BzfSBmcm9tICcuL2NoZWNrYm94LnByb3BzJztcblxuY29uc3QgREVGQVVMVF9DTFMgPSAnYXBwLWNoZWNrYm94IGNoZWNrYm94JztcbmNvbnN0IFdJREdFVF9DT05GSUc6IElXaWRnZXRDb25maWcgPSB7XG4gICAgd2lkZ2V0VHlwZTogJ3dtLWNoZWNrYm94JyxcbiAgICBob3N0Q2xhc3M6IERFRkFVTFRfQ0xTXG59O1xuXG4vKlxuICogdHJ5IHRvIGNvbnZlcnQgdGhlIGNoZWtlZHZhbHVlIGFuZCB1bmNoZWNrZWQgdmFsdWVzIHRvIGJvb2xlYW4vbnVtYmVyXG4gKi9cbmV4cG9ydCBjb25zdCB1blN0cmluZ2lmeSA9ICh2YWwsIGRlZmF1bHRWYWw/KSA9PiB7XG4gICAgaWYgKHZhbCA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gZGVmYXVsdFZhbDtcbiAgICB9XG5cbiAgICBpZiAodmFsID09PSB0cnVlIHx8IHZhbCA9PT0gJ3RydWUnKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmICh2YWwgPT09IGZhbHNlIHx8IHZhbCA9PT0gJ2ZhbHNlJykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgbnVtYmVyID0gcGFyc2VJbnQodmFsLCAxMCk7XG4gICAgaWYgKCFpc05hTihudW1iZXIpKSB7XG4gICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgfVxuICAgIHJldHVybiB2YWw7XG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGVdLFxuICAgIHNlbGVjdG9yOiAnW3dtQ2hlY2tib3hdJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2hlY2tib3guY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBwcm92aWRlQXMoQ2hlY2tib3hDb21wb25lbnQsIE5HX1ZBTFVFX0FDQ0VTU09SLCB0cnVlKSxcbiAgICAgICAgcHJvdmlkZUFzKENoZWNrYm94Q29tcG9uZW50LCBOR19WQUxJREFUT1JTLCB0cnVlKSxcbiAgICAgICAgcHJvdmlkZUFzV2lkZ2V0UmVmKENoZWNrYm94Q29tcG9uZW50KVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgQ2hlY2tib3hDb21wb25lbnQgZXh0ZW5kcyBCYXNlRm9ybUN1c3RvbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICBzdGF0aWMgaW5pdGlhbGl6ZVByb3BzID0gcmVnaXN0ZXJQcm9wcygpO1xuXG4gICAgcHVibGljIHByb3h5TW9kZWw6IGJvb2xlYW47XG4gICAgcHVibGljIGRpc2FibGVkOiBib29sZWFuO1xuICAgIHB1YmxpYyByZWFkb25seTogYm9vbGVhbjtcbiAgICBwdWJsaWMgcmVxdWlyZWQ6IGJvb2xlYW47XG4gICAgcHVibGljIG5hbWU6IHN0cmluZztcbiAgICBwdWJsaWMgaGludDogc3RyaW5nO1xuICAgIHB1YmxpYyBhcmlhbGFiZWw6IHN0cmluZztcbiAgICBwdWJsaWMgc2hvcnRjdXRrZXk6IHN0cmluZztcbiAgICBwdWJsaWMgdGFiaW5kZXg6IGFueTtcbiAgICBwdWJsaWMgX2NhcHRpb24gPSAnJm5ic3AnO1xuICAgIHByaXZhdGUgX2NoZWNrZWR2YWx1ZTtcbiAgICBwcml2YXRlIF91bmNoZWNrZWR2YWx1ZTtcbiAgICBwdWJsaWMgdW5zZWxlY3RlZGljb247XG4gICAgcHVibGljIHNlbGVjdGVkaWNvbjtcblxuICAgIEBWaWV3Q2hpbGQoTmdNb2RlbCkgbmdNb2RlbDogTmdNb2RlbDtcbiAgICBAVmlld0NoaWxkKCdjaGVja2JveCcsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBFbGVtZW50UmVmIH0pIGNoZWNrYm94RWw6IEVsZW1lbnRSZWY7XG5cbiAgICAvLyBpZiB0aGUgY2hlY2tib3ggaXMgY2hlY2tlZCwgcmV0dXJuIGNoZWNrZWR2YWx1ZSBlbHNlIHJldHVybiB1bmNoZWNrZWR2YWx1ZVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBwdWJsaWMgZ2V0IGRhdGF2YWx1ZSgpIHtcbiAgICAgICAgcmV0dXJuIGlzRGVmaW5lZCh0aGlzLnByb3h5TW9kZWwpID8gKHRoaXMucHJveHlNb2RlbCA/IHRoaXMuX2NoZWNrZWR2YWx1ZSA6IHRoaXMuX3VuY2hlY2tlZHZhbHVlKSA6IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgLy8gd2hlbiB0aGUgZGF0YXZhbHVlIGlzIHNldCwgdXBkYXRlIHRoZSBjaGVja2VkIHN0YXRlXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHB1YmxpYyBzZXQgZGF0YXZhbHVlKHYpIHtcbiAgICAgICAgdGhpcy5wcm94eU1vZGVsID0gKGlzRGVmaW5lZCh2KSAmJiB2ICE9PSAnJykgPyB2ID09PSB0aGlzLl9jaGVja2VkdmFsdWUgOiB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMudXBkYXRlUHJldkRhdGF2YWx1ZSh0aGlzLmRhdGF2YWx1ZSk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGluajogSW5qZWN0b3IsXG4gICAgICAgIEBBdHRyaWJ1dGUoJ2NoZWNrZWR2YWx1ZScpIGNoZWNrZWRWYWwsXG4gICAgICAgIEBBdHRyaWJ1dGUoJ3VuY2hlY2tlZHZhbHVlJykgdW5jaGVja2VkVmFsLFxuICAgICAgICBAQXR0cmlidXRlKCd0eXBlJykgcHVibGljIHR5cGUsXG4gICAgICAgIEBJbmplY3QoJ0VYUExJQ0lUX0NPTlRFWFQnKSBAT3B0aW9uYWwoKSBleHBsaWNpdENvbnRleHQ6IGFueVxuICAgICkge1xuICAgICAgICBpZih0eXBlID09PSAnYnV0dG9uJyl7XG4gICAgICAgICAgICBXSURHRVRfQ09ORklHLmhvc3RDbGFzcyA9ICdhcHAtaWNvbmJ1dHRvbi10b2dnbGUnXG4gICAgICAgIH1lbHNle1xuICAgICAgICAgICAgV0lER0VUX0NPTkZJRy5ob3N0Q2xhc3MgPSBERUZBVUxUX0NMU1xuICAgICAgICB9XG4gICAgICAgIHN1cGVyKGluaiwgV0lER0VUX0NPTkZJRywgZXhwbGljaXRDb250ZXh0KTtcblxuICAgICAgICB0aGlzLl9jaGVja2VkdmFsdWUgPSB1blN0cmluZ2lmeShjaGVja2VkVmFsLCB0cnVlKTtcbiAgICAgICAgdGhpcy5fdW5jaGVja2VkdmFsdWUgPSB1blN0cmluZ2lmeSh1bmNoZWNrZWRWYWwsIGZhbHNlKTtcblxuICAgICAgICAvLyBpZiB0aGUgdHlwZSBvZiB0aGUgY2hlY2tib3ggaXMgdG9nZ2xlIHVwZGF0ZSB0aGUgcmVsYXRlZCBjbGFzc2VzIG9uIHRoZSBob3N0IG5vZGVcbiAgICAgICAgdG9nZ2xlQ2xhc3ModGhpcy5uYXRpdmVFbGVtZW50LCAnYXBwLXRvZ2dsZScsIHR5cGUgPT09ICd0b2dnbGUnKTtcbiAgICB9XG5cbiAgICBvblByb3BlcnR5Q2hhbmdlKGtleSwgbnYsIG92KSB7XG4gICAgICAgIGlmIChrZXkgPT09ICd0YWJpbmRleCcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoa2V5ID09PSAncmVxdWlyZWQnKSB7XG4gICAgICAgICAgICB0aGlzLl9vbkNoYW5nZSh0aGlzLmRhdGF2YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoa2V5ID09PSAnY2FwdGlvbicpIHtcbiAgICAgICAgICAgIGlmICghaXNEZWZpbmVkKG52KSB8fCBudiA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jYXB0aW9uID0gJyZuYnNwOyc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NhcHRpb24gPSBudjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdjaGVja2VkdmFsdWUnKSB7XG4gICAgICAgICAgICB0aGlzLl9jaGVja2VkdmFsdWUgPSB1blN0cmluZ2lmeShudiwgdHJ1ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAndW5jaGVja2VkdmFsdWUnKSB7XG4gICAgICAgICAgICB0aGlzLl91bmNoZWNrZWR2YWx1ZSA9IHVuU3RyaW5naWZ5KG52LCBmYWxzZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnZGF0YXZhbHVlJykge1xuICAgICAgICAgICAgdGhpcy5kYXRhdmFsdWUgPSB1blN0cmluZ2lmeShudik7XG4gICAgICAgICAgICB0aGlzLl9vbkNoYW5nZSh0aGlzLmRhdGF2YWx1ZSk7XG4gICAgICAgIH1lbHNlIHtcbiAgICAgICAgICAgIHN1cGVyLm9uUHJvcGVydHlDaGFuZ2Uoa2V5LCBudiwgb3YpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gY2hhbmdlIGFuZCBibHVyIGV2ZW50cyBhcmUgaGFuZGxlZCBmcm9tIHRlbXBsYXRlXG4gICAgcHJvdGVjdGVkIGhhbmRsZUV2ZW50KG5vZGU6IEhUTUxFbGVtZW50LCBldmVudE5hbWU6IHN0cmluZywgY2FsbGJhY2s6IEZ1bmN0aW9uLCBsb2NhbHM6IGFueSkge1xuICAgICAgICBpZiAoZXZlbnROYW1lICE9PSAnY2hhbmdlJyAmJiBldmVudE5hbWUgIT09ICdibHVyJykge1xuICAgICAgICAgICAgLy8gYXBwbHlpbmcgdGFwIChIYW1tZXIgZXZlbnQpIG9uIHRoZSBsYWJlbCBhcyB0aGUgZXZlbnQgaGFuZGxlciBpcyBub3QgZ2V0dGluZyB0cmlnZ2VyZWQgb24gdGhlIGlucHV0LlxuICAgICAgICAgICAgY29uc3QgJGVsID0gZXZlbnROYW1lID09PSAndGFwJyA/IHRoaXMubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdsYWJlbCcpIDogdGhpcy5jaGVja2JveEVsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICBzdXBlci5oYW5kbGVFdmVudCgkZWwsIGV2ZW50TmFtZSwgY2FsbGJhY2ssIGxvY2Fscyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYW5kbGVDaGFuZ2UobmV3VmFsOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuaW52b2tlT25DaGFuZ2UodGhpcy5kYXRhdmFsdWUsIHt0eXBlOiAnY2hhbmdlJ30sIHRoaXMubmdNb2RlbC52YWxpZCk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5lbnRlcicsIFsnJGV2ZW50JywgJ1wiRU5URVJcIiddKVxuICAgIG9uS2V5RG93bigkZXZlbnQpIHtcbiAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuY2hlY2tib3hFbC5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gICAgfVxuXG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgICAgICBzdHlsZXIodGhpcy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2xhYmVsJyksIHRoaXMpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICAvLyBNRU1PUlkgTEVBSyBGSVg6IENsZWFyIFZpZXdDaGlsZCByZWZlcmVuY2VzXG4gICAgICAgIHRoaXMubmdNb2RlbCA9IG51bGw7XG4gICAgICAgIHRoaXMuY2hlY2tib3hFbCA9IG51bGw7XG5cbiAgICAgICAgLy8gQ2FsbCBwYXJlbnQgbmdPbkRlc3Ryb3lcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB9XG59XG4iLCI8bGFiZWwgW25nQ2xhc3NdPVwieyd1bmNoZWNrZWQnOiAhcHJveHlNb2RlbCwgJ2Rpc2FibGVkJzogKGRpc2FibGVkIHx8IHJlYWRvbmx5KSwgJ3JlcXVpcmVkJzogKHJlcXVpcmVkICYmIF9jYXB0aW9uKSwgJ2ljb24tYnV0dG9uLXRvZ2dsZSc6IHR5cGUgPT09ICdidXR0b24nfVwiPlxuICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAjY2hlY2tib3hcbiAgICAgICAgICAgW2F0dHIubmFtZV09XCJuYW1lXCJcbiAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhbGFiZWxcIlxuICAgICAgICAgICBmb2N1cy10YXJnZXRcbiAgICAgICAgICAgWyhuZ01vZGVsKV09XCJwcm94eU1vZGVsXCJcbiAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiXG4gICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCByZWFkb25seVwiXG4gICAgICAgICAgIFthdHRyLmFjY2Vzc2tleV09XCJzaG9ydGN1dGtleVwiXG4gICAgICAgICAgIFt0YWJpbmRleF09XCJ0YWJpbmRleFwiXG4gICAgICAgICAgIChibHVyKT1cImludm9rZU9uVG91Y2hlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiaGFuZGxlQ2hhbmdlKCRldmVudClcIj5cbiAgICA8c3BhbiBjbGFzcz1cImNhcHRpb25cIiBbaW5uZXJIdG1sXT1cIl9jYXB0aW9uXCIgKm5nSWY9XCJ0eXBlICE9ICdidXR0b24nICYmIHR5cGUgIT0gJ3RvZ2dsZSdcIj48L3NwYW4+XG4gICAgPCEtLSBJY29uIHRvZ2dsZSBidXR0b24gLS0+XG4gICAgPHNwYW4gY2xhc3M9XCJjYXB0aW9uIGZhLXhzIHRleHQtY2VudGVyXCIgKm5nSWY9XCJ0eXBlID09ICd0b2dnbGUnXCI+XG4gICAgICAgIDxzcGFuIG5hbWU9XCJ1bnNlbGVjdGVkSWNvblwiIGNsYXNzPVwic3RhcnQtaWNvblwiIFtuZ0NsYXNzXT1cInVuc2VsZWN0ZWRpY29uXCIgKm5nSWY9XCIhcHJveHlNb2RlbFwiPjwvc3Bhbj5cbiAgICAgICAgPHNwYW4gbmFtZT1cInNlbGVjdGVkSWNvblwiIGNsYXNzPVwiZW5kLWljb25cIiBbbmdDbGFzc109XCJzZWxlY3RlZGljb25cIiAqbmdJZj1cInByb3h5TW9kZWxcIj48L3NwYW4+XG4gICAgPC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInRvZ2dsZS1pY29uXCIgW25nQ2xhc3NdPVwidW5zZWxlY3RlZGljb25cIiAqbmdJZj1cInR5cGUgPT09ICdidXR0b24nICYmICFwcm94eU1vZGVsXCI+PC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInRvZ2dsZS1pY29uXCIgKm5nSWY9XCJwcm94eU1vZGVsICYmIHR5cGUgPT09ICdidXR0b24nXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRpY29uXCI+PC9zcGFuPlxuICAgIDxpbWcgYWx0PVwiQ2hlY2tib3ggSW1hZ2VcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBzcmM9XCJkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhBUUFCQUFBQUFDSDVCQUVLQUFFQUxBQUFBQUFCQUFFQUFBSUNUQUVBT3c9PVwiIGNsYXNzPVwic3dpdGNoXCIvPlxuPC9sYWJlbD5cbjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgY2xhc3M9XCJuZy1oaWRlIG1vZGVsLWhvbGRlclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRhYmluZGV4PVwiLTFcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbdmFsdWVdPVwicHJveHlNb2RlbFwiPlxuIl19
|