@rlucan/ui 16.2.2 → 17.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/action-button/action-button.component.mjs +99 -99
- package/esm2022/lib/action-icon/action-icon.component.mjs +37 -37
- package/esm2022/lib/autocomplete/autocomplete.component.mjs +391 -391
- package/esm2022/lib/avatar/avatar.component.mjs +34 -34
- package/esm2022/lib/button/button.component.mjs +57 -57
- package/esm2022/lib/checkbox/checkbox.component.mjs +39 -39
- package/esm2022/lib/checkbox-group/checkbox-group.component.mjs +91 -91
- package/esm2022/lib/currency/currency.component.mjs +151 -151
- package/esm2022/lib/date/date.component.mjs +68 -68
- package/esm2022/lib/dialog/dialog.component.mjs +37 -37
- package/esm2022/lib/directives/force-visibility/force-visibility.directive.mjs +104 -104
- package/esm2022/lib/editor/editor.component.mjs +119 -119
- package/esm2022/lib/elements/burger/burger.component.mjs +21 -21
- package/esm2022/lib/elements/expander/expander.component.mjs +28 -28
- package/esm2022/lib/elements/validation-message/validation-message.component.mjs +47 -47
- package/esm2022/lib/file/file.component.mjs +166 -145
- package/esm2022/lib/file-uploader/ui-file-uploader.component.mjs +423 -405
- package/esm2022/lib/input/input.component.mjs +265 -265
- package/esm2022/lib/input-autocomplete/input-autocomplete.component.mjs +277 -277
- package/esm2022/lib/layouts/base/ui-base-layout.component.mjs +22 -22
- package/esm2022/lib/layouts/base/ui-base.component.mjs +74 -74
- package/esm2022/lib/layouts/simple/ui-simple-layout.component.mjs +18 -18
- package/esm2022/lib/layouts/simple/ui-simple.component.mjs +166 -166
- package/esm2022/lib/radio/radio.component.mjs +21 -21
- package/esm2022/lib/radio-group/radio-group.component.mjs +53 -53
- package/esm2022/lib/select/select.component.mjs +126 -126
- package/esm2022/lib/services/message-box.service.mjs +112 -112
- package/esm2022/lib/services/toast.service.mjs +23 -23
- package/esm2022/lib/services/ui-file.service.mjs +72 -71
- package/esm2022/lib/services/ui-translate.service.mjs +32 -32
- package/esm2022/lib/submit-button/submit-button.component.mjs +72 -72
- package/esm2022/lib/table/table.component.mjs +97 -97
- package/esm2022/lib/text-area/text-area.component.mjs +46 -46
- package/esm2022/lib/ui.model.mjs +1 -1
- package/esm2022/lib/ui.module.mjs +269 -269
- package/esm2022/public-api.mjs +34 -34
- package/esm2022/rlucan-ui.mjs +4 -4
- package/fesm2022/rlucan-ui.mjs +3329 -3289
- package/fesm2022/rlucan-ui.mjs.map +1 -1
- package/index.d.ts +5 -5
- package/lib/action-button/action-button.component.d.ts +28 -28
- package/lib/action-icon/action-icon.component.d.ts +15 -15
- package/lib/autocomplete/autocomplete.component.d.ts +57 -57
- package/lib/avatar/avatar.component.d.ts +14 -14
- package/lib/button/button.component.d.ts +18 -18
- package/lib/checkbox/checkbox.component.d.ts +15 -15
- package/lib/checkbox-group/checkbox-group.component.d.ts +18 -18
- package/lib/currency/currency.component.d.ts +31 -31
- package/lib/date/date.component.d.ts +24 -24
- package/lib/dialog/dialog.component.d.ts +13 -13
- package/lib/directives/force-visibility/force-visibility.directive.d.ts +22 -22
- package/lib/editor/editor.component.d.ts +24 -24
- package/lib/elements/burger/burger.component.d.ts +9 -9
- package/lib/elements/expander/expander.component.d.ts +10 -10
- package/lib/elements/validation-message/validation-message.component.d.ts +12 -12
- package/lib/file/file.component.d.ts +36 -35
- package/lib/file-uploader/ui-file-uploader.component.d.ts +106 -102
- package/lib/input/input.component.d.ts +42 -42
- package/lib/input-autocomplete/input-autocomplete.component.d.ts +44 -44
- package/lib/layouts/base/ui-base-layout.component.d.ts +8 -8
- package/lib/layouts/base/ui-base.component.d.ts +23 -23
- package/lib/layouts/simple/ui-simple-layout.component.d.ts +8 -8
- package/lib/layouts/simple/ui-simple.component.d.ts +40 -40
- package/lib/radio/radio.component.d.ts +8 -8
- package/lib/radio-group/radio-group.component.d.ts +18 -18
- package/lib/select/select.component.d.ts +37 -37
- package/lib/services/message-box.service.d.ts +58 -58
- package/lib/services/toast.service.d.ts +13 -13
- package/lib/services/ui-file.service.d.ts +37 -33
- package/lib/services/ui-translate.service.d.ts +11 -11
- package/lib/submit-button/submit-button.component.d.ts +21 -21
- package/lib/table/table.component.d.ts +36 -36
- package/lib/text-area/text-area.component.d.ts +18 -18
- package/lib/ui.model.d.ts +2 -2
- package/lib/ui.module.d.ts +59 -59
- package/package.json +14 -14
- package/public-api.d.ts +29 -29
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
import { Component, HostBinding, Input } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@angular/common";
|
|
4
|
-
import * as i2 from "../file/file.component";
|
|
5
|
-
export class AvatarComponent {
|
|
6
|
-
get contrast() {
|
|
7
|
-
const hexCode = this.user.shortColour.substring(1, 7);
|
|
8
|
-
const hexR = parseInt(hexCode.substring(0, 2), 16);
|
|
9
|
-
const hexG = parseInt(hexCode.substring(2, 4), 16);
|
|
10
|
-
const hexB = parseInt(hexCode.substring(4, 6), 16);
|
|
11
|
-
const contrastRatio = hexR * 0.299 + hexG * 0.587 + hexB * 0.114;
|
|
12
|
-
return contrastRatio >= 200 ? 'black' : 'white';
|
|
13
|
-
}
|
|
14
|
-
constructor() {
|
|
15
|
-
this.user = {};
|
|
16
|
-
this.size = 'normal';
|
|
17
|
-
}
|
|
18
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
19
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
20
|
-
}
|
|
21
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
22
|
-
type: Component,
|
|
23
|
-
args: [{ selector: 'ui-avatar', template: "<ui-file *ngIf=\"user.avatar || (!user.avatar && !user.shortName)\" [fileSize]=\"'avatar-' + size\" [srcData]=\"user.avatar || { mimeType: 'image/png'}\" [srcOptions]=\"srcOptions\" ></ui-file>\r\n<div *ngIf=\"!user.avatar && user.shortName\" [ngStyle]=\"{backgroundColor: user.shortColour, color: contrast}\">\r\n {{ user.shortName }}\r\n</div>\r\n", styles: [":host{display:block;flex:0 0 auto}:host.mini{height:16px;width:16px}:host.mini div{font-size:10px}:host.small{height:24px;width:24px}:host.small div{font-size:13px}:host.smaller{height:50px;width:50px}:host.smaller div{font-size:1.5em}:host.normal{height:74px;width:74px}:host.normal div{font-size:37px}:host.bigger{height:100px;width:100px}:host.bigger div{font-size:50px}:host.big{height:150px;width:150px}:host.big div{font-size:75px}:host ui-file ::ng-deep img{border-radius:50%}:host div{display:flex;align-items:center;justify-content:center;width:100%;font-weight:700;color:#fff;background-size:cover;height:100%;border-radius:50%}\n"] }]
|
|
24
|
-
}], ctorParameters:
|
|
25
|
-
type: Input
|
|
26
|
-
}], srcOptions: [{
|
|
27
|
-
type: Input
|
|
28
|
-
}], size: [{
|
|
29
|
-
type: HostBinding,
|
|
30
|
-
args: ['class']
|
|
31
|
-
}, {
|
|
32
|
-
type: Input
|
|
33
|
-
}] } });
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Component, HostBinding, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
import * as i2 from "../file/file.component";
|
|
5
|
+
export class AvatarComponent {
|
|
6
|
+
get contrast() {
|
|
7
|
+
const hexCode = this.user.shortColour.substring(1, 7);
|
|
8
|
+
const hexR = parseInt(hexCode.substring(0, 2), 16);
|
|
9
|
+
const hexG = parseInt(hexCode.substring(2, 4), 16);
|
|
10
|
+
const hexB = parseInt(hexCode.substring(4, 6), 16);
|
|
11
|
+
const contrastRatio = hexR * 0.299 + hexG * 0.587 + hexB * 0.114;
|
|
12
|
+
return contrastRatio >= 200 ? 'black' : 'white';
|
|
13
|
+
}
|
|
14
|
+
constructor() {
|
|
15
|
+
this.user = {};
|
|
16
|
+
this.size = 'normal';
|
|
17
|
+
}
|
|
18
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AvatarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
19
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: AvatarComponent, selector: "ui-avatar", inputs: { user: "user", srcOptions: "srcOptions", size: "size" }, host: { properties: { "class": "this.size" } }, ngImport: i0, template: "<ui-file *ngIf=\"user.avatar || (!user.avatar && !user.shortName)\" [fileSize]=\"'avatar-' + size\" [srcData]=\"user.avatar || { mimeType: 'image/png'}\" [srcOptions]=\"srcOptions\" ></ui-file>\r\n<div *ngIf=\"!user.avatar && user.shortName\" [ngStyle]=\"{backgroundColor: user.shortColour, color: contrast}\">\r\n {{ user.shortName }}\r\n</div>\r\n", styles: [":host{display:block;flex:0 0 auto}:host.mini{height:16px;width:16px}:host.mini div{font-size:10px}:host.small{height:24px;width:24px}:host.small div{font-size:13px}:host.smaller{height:50px;width:50px}:host.smaller div{font-size:1.5em}:host.normal{height:74px;width:74px}:host.normal div{font-size:37px}:host.bigger{height:100px;width:100px}:host.bigger div{font-size:50px}:host.big{height:150px;width:150px}:host.big div{font-size:75px}:host ui-file ::ng-deep img{border-radius:50%}:host div{display:flex;align-items:center;justify-content:center;width:100%;font-weight:700;color:#fff;background-size:cover;height:100%;border-radius:50%}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.FileComponent, selector: "ui-file", inputs: ["fileSize", "srcOptions", "srcData", "srcUrl"] }] }); }
|
|
20
|
+
}
|
|
21
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AvatarComponent, decorators: [{
|
|
22
|
+
type: Component,
|
|
23
|
+
args: [{ selector: 'ui-avatar', template: "<ui-file *ngIf=\"user.avatar || (!user.avatar && !user.shortName)\" [fileSize]=\"'avatar-' + size\" [srcData]=\"user.avatar || { mimeType: 'image/png'}\" [srcOptions]=\"srcOptions\" ></ui-file>\r\n<div *ngIf=\"!user.avatar && user.shortName\" [ngStyle]=\"{backgroundColor: user.shortColour, color: contrast}\">\r\n {{ user.shortName }}\r\n</div>\r\n", styles: [":host{display:block;flex:0 0 auto}:host.mini{height:16px;width:16px}:host.mini div{font-size:10px}:host.small{height:24px;width:24px}:host.small div{font-size:13px}:host.smaller{height:50px;width:50px}:host.smaller div{font-size:1.5em}:host.normal{height:74px;width:74px}:host.normal div{font-size:37px}:host.bigger{height:100px;width:100px}:host.bigger div{font-size:50px}:host.big{height:150px;width:150px}:host.big div{font-size:75px}:host ui-file ::ng-deep img{border-radius:50%}:host div{display:flex;align-items:center;justify-content:center;width:100%;font-weight:700;color:#fff;background-size:cover;height:100%;border-radius:50%}\n"] }]
|
|
24
|
+
}], ctorParameters: () => [], propDecorators: { user: [{
|
|
25
|
+
type: Input
|
|
26
|
+
}], srcOptions: [{
|
|
27
|
+
type: Input
|
|
28
|
+
}], size: [{
|
|
29
|
+
type: HostBinding,
|
|
30
|
+
args: ['class']
|
|
31
|
+
}, {
|
|
32
|
+
type: Input
|
|
33
|
+
}] } });
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvYXZhdGFyL2F2YXRhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2F2YXRhci9hdmF0YXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBTzlELE1BQU0sT0FBTyxlQUFlO0lBUzFCLElBQUksUUFBUTtRQUNWLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFdEQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNuRCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDbkQsTUFBTSxhQUFhLEdBQUcsSUFBSSxHQUFHLEtBQUssR0FBRyxJQUFJLEdBQUcsS0FBSyxHQUFHLElBQUksR0FBRyxLQUFLLENBQUM7UUFFakUsT0FBTyxhQUFhLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUNsRCxDQUFDO0lBRUQ7UUFsQlMsU0FBSSxHQUFxRSxFQUFFLENBQUM7UUFLNUUsU0FBSSxHQUErRCxRQUFRLENBQUM7SUFhckUsQ0FBQzs4R0FwQk4sZUFBZTtrR0FBZixlQUFlLG1LQ1A1QixnV0FJQTs7MkZER2EsZUFBZTtrQkFMM0IsU0FBUzsrQkFDRSxXQUFXO3dEQU1aLElBQUk7c0JBQVosS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUdHLElBQUk7c0JBRFosV0FBVzt1QkFBQyxPQUFPOztzQkFDbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3VpLWF2YXRhcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2F2YXRhci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYXZhdGFyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEF2YXRhckNvbXBvbmVudCB7XHJcblxyXG4gIEBJbnB1dCgpIHVzZXI6IFBhcnRpYWw8eyBhdmF0YXI6IGFueSwgc2hvcnROYW1lOiBzdHJpbmcsIHNob3J0Q29sb3VyOiBzdHJpbmcgfT4gPSB7fTtcclxuXHJcbiAgQElucHV0KCkgc3JjT3B0aW9ucztcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXHJcbiAgQElucHV0KCkgc2l6ZTogJ2JpZycgfCAnYmlnZ2VyJyB8ICdub3JtYWwnIHwgJ3NtYWxsZXInIHwgJ3NtYWxsJyB8ICdtaW5pJyA9ICdub3JtYWwnO1xyXG5cclxuICBnZXQgY29udHJhc3QoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGhleENvZGUgPSB0aGlzLnVzZXIuc2hvcnRDb2xvdXIuc3Vic3RyaW5nKDEsIDcpO1xyXG5cclxuICAgIGNvbnN0IGhleFIgPSBwYXJzZUludChoZXhDb2RlLnN1YnN0cmluZygwLCAyKSwgMTYpO1xyXG4gICAgY29uc3QgaGV4RyA9IHBhcnNlSW50KGhleENvZGUuc3Vic3RyaW5nKDIsIDQpLCAxNik7XHJcbiAgICBjb25zdCBoZXhCID0gcGFyc2VJbnQoaGV4Q29kZS5zdWJzdHJpbmcoNCwgNiksIDE2KTtcclxuICAgIGNvbnN0IGNvbnRyYXN0UmF0aW8gPSBoZXhSICogMC4yOTkgKyBoZXhHICogMC41ODcgKyBoZXhCICogMC4xMTQ7XHJcblxyXG4gICAgcmV0dXJuIGNvbnRyYXN0UmF0aW8gPj0gMjAwID8gJ2JsYWNrJyA6ICd3aGl0ZSc7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxufVxyXG4iLCI8dWktZmlsZSAqbmdJZj1cInVzZXIuYXZhdGFyIHx8ICghdXNlci5hdmF0YXIgJiYgIXVzZXIuc2hvcnROYW1lKVwiIFtmaWxlU2l6ZV09XCInYXZhdGFyLScgKyBzaXplXCIgW3NyY0RhdGFdPVwidXNlci5hdmF0YXIgfHwgeyBtaW1lVHlwZTogJ2ltYWdlL3BuZyd9XCIgW3NyY09wdGlvbnNdPVwic3JjT3B0aW9uc1wiID48L3VpLWZpbGU+XHJcbjxkaXYgKm5nSWY9XCIhdXNlci5hdmF0YXIgJiYgdXNlci5zaG9ydE5hbWVcIiBbbmdTdHlsZV09XCJ7YmFja2dyb3VuZENvbG9yOiB1c2VyLnNob3J0Q29sb3VyLCBjb2xvcjogY29udHJhc3R9XCI+XHJcbiAge3sgdXNlci5zaG9ydE5hbWUgfX1cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -1,57 +1,57 @@
|
|
|
1
|
-
import { Component, HostBinding, Input } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@angular/common";
|
|
4
|
-
import * as i2 from "@angular/material/icon";
|
|
5
|
-
import * as i3 from "@angular/material/progress-bar";
|
|
6
|
-
import * as i4 from "@angular/material/core";
|
|
7
|
-
export class ButtonComponent {
|
|
8
|
-
get class() {
|
|
9
|
-
return this.kind +
|
|
10
|
-
(this.color ? ' ' + this.color : '') +
|
|
11
|
-
(this.size ? ' ' + this.size : '') +
|
|
12
|
-
((this.disabled || this.busy) ? ' disabled' : '');
|
|
13
|
-
}
|
|
14
|
-
constructor() {
|
|
15
|
-
this.type = 'button';
|
|
16
|
-
this.disabled = false;
|
|
17
|
-
this.busy = false;
|
|
18
|
-
this.kind = 'flat';
|
|
19
|
-
this.color = 'primary';
|
|
20
|
-
this.size = 'normal';
|
|
21
|
-
this.formInvalid = false;
|
|
22
|
-
}
|
|
23
|
-
get isDisabled() {
|
|
24
|
-
return this.disabled || this.busy;
|
|
25
|
-
}
|
|
26
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
27
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
28
|
-
}
|
|
29
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
30
|
-
type: Component,
|
|
31
|
-
args: [{ selector: 'ui-button', template: "<button matRipple [type]=\"type\" [disabled]=\"isDisabled || busy\" [ngClass]=\"{busy: busy}\" [class]=\"class\">\r\n <mat-icon *ngIf=\"matIconPrefix\">{{matIconPrefix}}</mat-icon>\r\n {{label}}\r\n <mat-progress-bar *ngIf=\"busy\" mode=\"indeterminate\" [color]=\"color\"></mat-progress-bar>\r\n</button>\r\n", styles: [":host{display:flex;align-items:center}:host button{font-size:1em;width:100%;cursor:pointer;outline:none;position:relative;display:flex;align-items:center;justify-content:center;border:1px solid transparent;transition:all .15s ease-in-out}:host button mat-progress-bar{position:absolute;bottom:1px;height:2px;border-bottom-left-radius:10px;border-bottom-right-radius:10px}:host button mat-icon{margin-right:4px;height:16px;width:16px;font-size:16px}:host.small button mat-icon{width:14px;height:14px;font-size:14px;margin-right:2px}\n"] }]
|
|
32
|
-
}], ctorParameters:
|
|
33
|
-
type: Input
|
|
34
|
-
}], matIconPrefix: [{
|
|
35
|
-
type: Input
|
|
36
|
-
}], label: [{
|
|
37
|
-
type: Input
|
|
38
|
-
}], disabled: [{
|
|
39
|
-
type: Input
|
|
40
|
-
}], busy: [{
|
|
41
|
-
type: Input
|
|
42
|
-
}], kind: [{
|
|
43
|
-
type: Input
|
|
44
|
-
}], color: [{
|
|
45
|
-
type: Input
|
|
46
|
-
}], size: [{
|
|
47
|
-
type: Input
|
|
48
|
-
}], class: [{
|
|
49
|
-
type: HostBinding,
|
|
50
|
-
args: ['class']
|
|
51
|
-
}], formInvalid: [{
|
|
52
|
-
type: HostBinding,
|
|
53
|
-
args: ['class.formInvalid']
|
|
54
|
-
}, {
|
|
55
|
-
type: Input
|
|
56
|
-
}] } });
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Component, HostBinding, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
import * as i2 from "@angular/material/icon";
|
|
5
|
+
import * as i3 from "@angular/material/progress-bar";
|
|
6
|
+
import * as i4 from "@angular/material/core";
|
|
7
|
+
export class ButtonComponent {
|
|
8
|
+
get class() {
|
|
9
|
+
return this.kind +
|
|
10
|
+
(this.color ? ' ' + this.color : '') +
|
|
11
|
+
(this.size ? ' ' + this.size : '') +
|
|
12
|
+
((this.disabled || this.busy) ? ' disabled' : '');
|
|
13
|
+
}
|
|
14
|
+
constructor() {
|
|
15
|
+
this.type = 'button';
|
|
16
|
+
this.disabled = false;
|
|
17
|
+
this.busy = false;
|
|
18
|
+
this.kind = 'flat';
|
|
19
|
+
this.color = 'primary';
|
|
20
|
+
this.size = 'normal';
|
|
21
|
+
this.formInvalid = false;
|
|
22
|
+
}
|
|
23
|
+
get isDisabled() {
|
|
24
|
+
return this.disabled || this.busy;
|
|
25
|
+
}
|
|
26
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: ButtonComponent, selector: "ui-button", inputs: { type: "type", matIconPrefix: "matIconPrefix", label: "label", disabled: "disabled", busy: "busy", kind: "kind", color: "color", size: "size", formInvalid: "formInvalid" }, host: { properties: { "class": "this.class", "class.formInvalid": "this.formInvalid" } }, ngImport: i0, template: "<button matRipple [type]=\"type\" [disabled]=\"isDisabled || busy\" [ngClass]=\"{busy: busy}\" [class]=\"class\">\r\n <mat-icon *ngIf=\"matIconPrefix\">{{matIconPrefix}}</mat-icon>\r\n {{label}}\r\n <mat-progress-bar *ngIf=\"busy\" mode=\"indeterminate\" [color]=\"color\"></mat-progress-bar>\r\n</button>\r\n", styles: [":host{display:flex;align-items:center}:host button{font-size:1em;width:100%;cursor:pointer;outline:none;position:relative;display:flex;align-items:center;justify-content:center;border:1px solid transparent;transition:all .15s ease-in-out}:host button mat-progress-bar{position:absolute;bottom:1px;height:2px;border-bottom-left-radius:10px;border-bottom-right-radius:10px}:host button mat-icon{margin-right:4px;height:16px;width:16px;font-size:16px}:host.small button mat-icon{width:14px;height:14px;font-size:14px;margin-right:2px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i4.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }] }); }
|
|
28
|
+
}
|
|
29
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ButtonComponent, decorators: [{
|
|
30
|
+
type: Component,
|
|
31
|
+
args: [{ selector: 'ui-button', template: "<button matRipple [type]=\"type\" [disabled]=\"isDisabled || busy\" [ngClass]=\"{busy: busy}\" [class]=\"class\">\r\n <mat-icon *ngIf=\"matIconPrefix\">{{matIconPrefix}}</mat-icon>\r\n {{label}}\r\n <mat-progress-bar *ngIf=\"busy\" mode=\"indeterminate\" [color]=\"color\"></mat-progress-bar>\r\n</button>\r\n", styles: [":host{display:flex;align-items:center}:host button{font-size:1em;width:100%;cursor:pointer;outline:none;position:relative;display:flex;align-items:center;justify-content:center;border:1px solid transparent;transition:all .15s ease-in-out}:host button mat-progress-bar{position:absolute;bottom:1px;height:2px;border-bottom-left-radius:10px;border-bottom-right-radius:10px}:host button mat-icon{margin-right:4px;height:16px;width:16px;font-size:16px}:host.small button mat-icon{width:14px;height:14px;font-size:14px;margin-right:2px}\n"] }]
|
|
32
|
+
}], ctorParameters: () => [], propDecorators: { type: [{
|
|
33
|
+
type: Input
|
|
34
|
+
}], matIconPrefix: [{
|
|
35
|
+
type: Input
|
|
36
|
+
}], label: [{
|
|
37
|
+
type: Input
|
|
38
|
+
}], disabled: [{
|
|
39
|
+
type: Input
|
|
40
|
+
}], busy: [{
|
|
41
|
+
type: Input
|
|
42
|
+
}], kind: [{
|
|
43
|
+
type: Input
|
|
44
|
+
}], color: [{
|
|
45
|
+
type: Input
|
|
46
|
+
}], size: [{
|
|
47
|
+
type: Input
|
|
48
|
+
}], class: [{
|
|
49
|
+
type: HostBinding,
|
|
50
|
+
args: ['class']
|
|
51
|
+
}], formInvalid: [{
|
|
52
|
+
type: HostBinding,
|
|
53
|
+
args: ['class.formInvalid']
|
|
54
|
+
}, {
|
|
55
|
+
type: Input
|
|
56
|
+
}] } });
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2J1dHRvbi9idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFROUQsTUFBTSxPQUFPLGVBQWU7SUFXMUIsSUFDSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsSUFBSTtZQUNkLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNwQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDbEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFLRDtRQXBCUyxTQUFJLEdBQXdCLFFBQVEsQ0FBQztRQUdyQyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLFNBQUksR0FBRyxLQUFLLENBQUM7UUFDYixTQUFJLEdBQWlDLE1BQU0sQ0FBQztRQUM1QyxVQUFLLEdBQWlCLFNBQVMsQ0FBQztRQUNoQyxTQUFJLEdBQWdCLFFBQVEsQ0FBQztRQVc3QixnQkFBVyxHQUFHLEtBQUssQ0FBQztJQUViLENBQUM7SUFFakIsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDcEMsQ0FBQzs4R0ExQlUsZUFBZTtrR0FBZixlQUFlLGlVQ1I1QiwwVEFLQTs7MkZER2EsZUFBZTtrQkFMM0IsU0FBUzsrQkFDRSxXQUFXO3dEQU1aLElBQUk7c0JBQVosS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFHRixLQUFLO3NCQURSLFdBQVc7dUJBQUMsT0FBTztnQkFTWCxXQUFXO3NCQURuQixXQUFXO3VCQUFDLG1CQUFtQjs7c0JBQy9CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sQ29sb3IsIENvbnRyb2xTaXplIH0gZnJvbSAnLi4vdWkubW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd1aS1idXR0b24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9idXR0b24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2J1dHRvbi5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCdXR0b25Db21wb25lbnQge1xyXG5cclxuICBASW5wdXQoKSB0eXBlOiAnc3VibWl0JyB8ICdidXR0b24nID0gJ2J1dHRvbic7XHJcbiAgQElucHV0KCkgbWF0SWNvblByZWZpeDogYW55O1xyXG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBidXN5ID0gZmFsc2U7XHJcbiAgQElucHV0KCkga2luZDogJ2Jhc2ljJyB8ICdmbGF0JyB8ICdzdHJva2VkJyA9ICdmbGF0JztcclxuICBASW5wdXQoKSBjb2xvcjogQ29udHJvbENvbG9yID0gJ3ByaW1hcnknO1xyXG4gIEBJbnB1dCgpIHNpemU6IENvbnRyb2xTaXplID0gJ25vcm1hbCc7XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxyXG4gIGdldCBjbGFzcygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMua2luZCArXHJcbiAgICAgICh0aGlzLmNvbG9yID8gJyAnICsgdGhpcy5jb2xvciA6ICcnKSArXHJcbiAgICAgICh0aGlzLnNpemUgPyAnICcgKyB0aGlzLnNpemUgOiAnJykgK1xyXG4gICAgICAoKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5idXN5KSA/ICcgZGlzYWJsZWQnIDogJycpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mb3JtSW52YWxpZCcpXHJcbiAgQElucHV0KCkgZm9ybUludmFsaWQgPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgZ2V0IGlzRGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlZCB8fCB0aGlzLmJ1c3k7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8YnV0dG9uIG1hdFJpcHBsZSBbdHlwZV09XCJ0eXBlXCIgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWQgfHwgYnVzeVwiIFtuZ0NsYXNzXT1cIntidXN5OiBidXN5fVwiIFtjbGFzc109XCJjbGFzc1wiPlxyXG4gIDxtYXQtaWNvbiAqbmdJZj1cIm1hdEljb25QcmVmaXhcIj57e21hdEljb25QcmVmaXh9fTwvbWF0LWljb24+XHJcbiAge3tsYWJlbH19XHJcbiAgPG1hdC1wcm9ncmVzcy1iYXIgKm5nSWY9XCJidXN5XCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIiBbY29sb3JdPVwiY29sb3JcIj48L21hdC1wcm9ncmVzcy1iYXI+XHJcbjwvYnV0dG9uPlxyXG4iXX0=
|
|
@@ -1,39 +1,39 @@
|
|
|
1
|
-
import { Component, Input, Optional, Self } from '@angular/core';
|
|
2
|
-
import { UiSimpleComponent } from '../layouts/simple/ui-simple.component';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/forms";
|
|
5
|
-
import * as i2 from "@angular/common";
|
|
6
|
-
import * as i3 from "@angular/material/checkbox";
|
|
7
|
-
import * as i4 from "../layouts/simple/ui-simple-layout.component";
|
|
8
|
-
export class CheckboxComponent extends UiSimpleComponent {
|
|
9
|
-
constructor(ngControl) {
|
|
10
|
-
super(ngControl);
|
|
11
|
-
this.ngControl = ngControl;
|
|
12
|
-
this.color = 'primary';
|
|
13
|
-
this.useInputMessages = 'never';
|
|
14
|
-
}
|
|
15
|
-
ngOnInit() {
|
|
16
|
-
super.ngOnInit();
|
|
17
|
-
if (this.label) {
|
|
18
|
-
this.text = this.label;
|
|
19
|
-
this.label = undefined;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
setDisabledState(isDisabled) {
|
|
23
|
-
}
|
|
24
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
25
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
26
|
-
}
|
|
27
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
28
|
-
type: Component,
|
|
29
|
-
args: [{ selector: 'ui-checkbox', template: "<ui-simple-layout [ctx]=\"this\">\r\n\r\n <div class=\"control-container\">\r\n <mat-checkbox [formControl]=\"componentFormControl\" [color]=\"color\" [class]=\"size\">\r\n <div *ngIf=\"!text\"><ng-content></ng-content></div>\r\n <div *ngIf=\"text\" [innerHTML]=\"text\"></div>\r\n </mat-checkbox>\r\n <div *ngIf=\"hint\" class=\"hint\" [innerHTML]=\"hint\"></div>\r\n </div>\r\n</ui-simple-layout>\r\n", styles: [":host{display:flex}:host ::ng-deep .mat-checkbox{display:flex}:host ::ng-deep .hint{font-size:.8em;padding-top:.1em;padding-left:2.05em}\n"] }]
|
|
30
|
-
}], ctorParameters:
|
|
31
|
-
type: Optional
|
|
32
|
-
}, {
|
|
33
|
-
type: Self
|
|
34
|
-
}] }]
|
|
35
|
-
type: Input
|
|
36
|
-
}], useInputMessages: [{
|
|
37
|
-
type: Input
|
|
38
|
-
}] } });
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Component, Input, Optional, Self } from '@angular/core';
|
|
2
|
+
import { UiSimpleComponent } from '../layouts/simple/ui-simple.component';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/forms";
|
|
5
|
+
import * as i2 from "@angular/common";
|
|
6
|
+
import * as i3 from "@angular/material/checkbox";
|
|
7
|
+
import * as i4 from "../layouts/simple/ui-simple-layout.component";
|
|
8
|
+
export class CheckboxComponent extends UiSimpleComponent {
|
|
9
|
+
constructor(ngControl) {
|
|
10
|
+
super(ngControl);
|
|
11
|
+
this.ngControl = ngControl;
|
|
12
|
+
this.color = 'primary';
|
|
13
|
+
this.useInputMessages = 'never';
|
|
14
|
+
}
|
|
15
|
+
ngOnInit() {
|
|
16
|
+
super.ngOnInit();
|
|
17
|
+
if (this.label) {
|
|
18
|
+
this.text = this.label;
|
|
19
|
+
this.label = undefined;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
setDisabledState(isDisabled) {
|
|
23
|
+
}
|
|
24
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: CheckboxComponent, deps: [{ token: i1.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: CheckboxComponent, selector: "ui-checkbox", inputs: { color: "color", useInputMessages: "useInputMessages" }, usesInheritance: true, ngImport: i0, template: "<ui-simple-layout [ctx]=\"this\">\r\n\r\n <div class=\"control-container\">\r\n <mat-checkbox [formControl]=\"componentFormControl\" [color]=\"color\" [class]=\"size\">\r\n <div *ngIf=\"!text\"><ng-content></ng-content></div>\r\n <div *ngIf=\"text\" [innerHTML]=\"text\"></div>\r\n </mat-checkbox>\r\n <div *ngIf=\"hint\" class=\"hint\" [innerHTML]=\"hint\"></div>\r\n </div>\r\n</ui-simple-layout>\r\n", styles: [":host{display:flex}:host ::ng-deep .mat-checkbox{display:flex}:host ::ng-deep .hint{font-size:.8em;padding-top:.1em;padding-left:2.05em}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4.UiSimpleLayoutComponent, selector: "ui-simple-layout", inputs: ["ctx"] }] }); }
|
|
26
|
+
}
|
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: CheckboxComponent, decorators: [{
|
|
28
|
+
type: Component,
|
|
29
|
+
args: [{ selector: 'ui-checkbox', template: "<ui-simple-layout [ctx]=\"this\">\r\n\r\n <div class=\"control-container\">\r\n <mat-checkbox [formControl]=\"componentFormControl\" [color]=\"color\" [class]=\"size\">\r\n <div *ngIf=\"!text\"><ng-content></ng-content></div>\r\n <div *ngIf=\"text\" [innerHTML]=\"text\"></div>\r\n </mat-checkbox>\r\n <div *ngIf=\"hint\" class=\"hint\" [innerHTML]=\"hint\"></div>\r\n </div>\r\n</ui-simple-layout>\r\n", styles: [":host{display:flex}:host ::ng-deep .mat-checkbox{display:flex}:host ::ng-deep .hint{font-size:.8em;padding-top:.1em;padding-left:2.05em}\n"] }]
|
|
30
|
+
}], ctorParameters: () => [{ type: i1.NgControl, decorators: [{
|
|
31
|
+
type: Optional
|
|
32
|
+
}, {
|
|
33
|
+
type: Self
|
|
34
|
+
}] }], propDecorators: { color: [{
|
|
35
|
+
type: Input
|
|
36
|
+
}], useInputMessages: [{
|
|
37
|
+
type: Input
|
|
38
|
+
}] } });
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLEtBQUssRUFBVSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTVGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOzs7Ozs7QUFZMUUsTUFBTSxPQUFPLGlCQUFrQixTQUFRLGlCQUFpQjtJQU90RCxZQUF1QyxTQUFvQjtRQUN6RCxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFEb0IsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUxsRCxVQUFLLEdBQWtDLFNBQVMsQ0FBQztRQUNqRCxxQkFBZ0IsR0FBb0MsT0FBTyxDQUFDO0lBTXJFLENBQUM7SUFFRCxRQUFRO1FBQ04sS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDO1FBQ3pCLENBQUM7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsVUFBbUI7SUFDcEMsQ0FBQzs4R0FwQlUsaUJBQWlCO2tHQUFqQixpQkFBaUIsNElDZDlCLHlhQVVBOzsyRkRJYSxpQkFBaUI7a0JBVjdCLFNBQVM7K0JBQ0UsYUFBYTs7MEJBZ0JWLFFBQVE7OzBCQUFJLElBQUk7eUNBTHBCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3QsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25Jbml0LCBPcHRpb25hbCwgU2VsZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFVpU2ltcGxlQ29tcG9uZW50IH0gZnJvbSAnLi4vbGF5b3V0cy9zaW1wbGUvdWktc2ltcGxlLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3VpLWNoZWNrYm94JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY2hlY2tib3guY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NoZWNrYm94LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgLy8gcHJvdmlkZXJzOiBbe1xyXG4gIC8vICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgLy8gICBtdWx0aTogdHJ1ZSxcclxuICAvLyAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IENoZWNrYm94Q29tcG9uZW50KSxcclxuICAvLyB9XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2hlY2tib3hDb21wb25lbnQgZXh0ZW5kcyBVaVNpbXBsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBJbnB1dCgpIGNvbG9yOiAncHJpbWFyeScgfCAnYWNjZW50JyB8ICd3YXJuJyA9ICdwcmltYXJ5JztcclxuICBASW5wdXQoKSB1c2VJbnB1dE1lc3NhZ2VzOiAnbmV2ZXInIHwgJ2Fsd2F5cycgfCAnb25kZW1hbmQnID0gJ25ldmVyJztcclxuXHJcbiAgdGV4dDtcclxuXHJcbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQFNlbGYoKSBwdWJsaWMgbmdDb250cm9sOiBOZ0NvbnRyb2wpIHtcclxuICAgIHN1cGVyKG5nQ29udHJvbCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICBpZiAodGhpcy5sYWJlbCkge1xyXG4gICAgICB0aGlzLnRleHQgPSB0aGlzLmxhYmVsO1xyXG4gICAgICB0aGlzLmxhYmVsID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgfVxyXG59XHJcbiIsIjx1aS1zaW1wbGUtbGF5b3V0IFtjdHhdPVwidGhpc1wiPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiY29udHJvbC1jb250YWluZXJcIj5cclxuICAgIDxtYXQtY2hlY2tib3ggW2Zvcm1Db250cm9sXT1cImNvbXBvbmVudEZvcm1Db250cm9sXCIgW2NvbG9yXT1cImNvbG9yXCIgW2NsYXNzXT1cInNpemVcIj5cclxuICAgICAgPGRpdiAqbmdJZj1cIiF0ZXh0XCI+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PjwvZGl2PlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwidGV4dFwiIFtpbm5lckhUTUxdPVwidGV4dFwiPjwvZGl2PlxyXG4gICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiaGludFwiIGNsYXNzPVwiaGludFwiIFtpbm5lckhUTUxdPVwiaGludFwiPjwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L3VpLXNpbXBsZS1sYXlvdXQ+XHJcbiJdfQ==
|
|
@@ -1,91 +1,91 @@
|
|
|
1
|
-
import { Component, Input, Optional, Self } from '@angular/core';
|
|
2
|
-
import { UiSimpleComponent } from '../layouts/simple/ui-simple.component';
|
|
3
|
-
import { UntypedFormControl, Validators } from '@angular/forms';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@angular/forms";
|
|
6
|
-
import * as i2 from "@angular/common";
|
|
7
|
-
import * as i3 from "../checkbox/checkbox.component";
|
|
8
|
-
import * as i4 from "../layouts/simple/ui-simple-layout.component";
|
|
9
|
-
// export interface CheckboxGroupOption {
|
|
10
|
-
// value: any,
|
|
11
|
-
// label: string,
|
|
12
|
-
// hint?: string
|
|
13
|
-
// }
|
|
14
|
-
export class CheckboxGroupComponent extends UiSimpleComponent {
|
|
15
|
-
constructor(control) {
|
|
16
|
-
super(control);
|
|
17
|
-
this.control = control;
|
|
18
|
-
this.displayAttribute = 'label';
|
|
19
|
-
this.hintAttribute = 'hint';
|
|
20
|
-
this.optionEnabled = (option) => true;
|
|
21
|
-
}
|
|
22
|
-
// ngOnInit(): void {
|
|
23
|
-
// super.ngOnInit();
|
|
24
|
-
// }
|
|
25
|
-
ngOnChanges(changes) {
|
|
26
|
-
super.ngOnChanges(changes);
|
|
27
|
-
if (changes.options) {
|
|
28
|
-
this.cbxs = [];
|
|
29
|
-
this.valueMode = Array.isArray(this.control.value) ? 'array' : 'object';
|
|
30
|
-
Object.keys(changes.options.currentValue).forEach(k => {
|
|
31
|
-
const v = changes.options.currentValue[k];
|
|
32
|
-
const ct = new UntypedFormControl(this.valueMode === 'array' ? this.control.value.includes(v) : this.control.value[k] === true);
|
|
33
|
-
if (!this.optionEnabled(v)) {
|
|
34
|
-
ct.disable();
|
|
35
|
-
}
|
|
36
|
-
ct.valueChanges.subscribe(() => {
|
|
37
|
-
const value = this.valueMode === 'array' ? [] : {};
|
|
38
|
-
let hasChecked = false;
|
|
39
|
-
this.cbxs.forEach((cbx) => {
|
|
40
|
-
const checked = cbx.control.value;
|
|
41
|
-
hasChecked = hasChecked || checked;
|
|
42
|
-
if (this.valueMode === 'array') {
|
|
43
|
-
if (checked) {
|
|
44
|
-
value.push(cbx.value.value);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
value[cbx.key] = checked;
|
|
49
|
-
}
|
|
50
|
-
});
|
|
51
|
-
this.componentFormControl.markAsTouched();
|
|
52
|
-
this.componentFormControl.setValue(value);
|
|
53
|
-
if (this.componentFormControl.hasValidator(Validators.required) && !hasChecked) {
|
|
54
|
-
this.componentFormControl.setErrors({ cbGroupRequired: true });
|
|
55
|
-
}
|
|
56
|
-
else {
|
|
57
|
-
this.componentFormControl.setErrors(null);
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
this.cbxs.push({
|
|
61
|
-
control: ct,
|
|
62
|
-
value: this.valueAttribute ? v[this.valueAttribute] : v,
|
|
63
|
-
label: this.displayAttribute ? v[this.displayAttribute] : v,
|
|
64
|
-
hint: this.hintAttribute ? v[this.hintAttribute] : undefined,
|
|
65
|
-
key: this.valueMode === 'object' ? k : undefined
|
|
66
|
-
});
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
71
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
72
|
-
}
|
|
73
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
74
|
-
type: Component,
|
|
75
|
-
args: [{ selector: 'ui-checkbox-group', template: "<ui-simple-layout [ctx]=\"this\">\r\n\r\n<ui-checkbox *ngFor=\"let cbx of cbxs\" [formControl]=\"cbx.control\" [label]=\"cbx.label\" [hint]=\"cbx.hint\"></ui-checkbox>\r\n\r\n</ui-simple-layout>\r\n", styles: [":host ui-checkbox{margin-top:.2em;margin-bottom:.2em}\n"] }]
|
|
76
|
-
}], ctorParameters:
|
|
77
|
-
type: Optional
|
|
78
|
-
}, {
|
|
79
|
-
type: Self
|
|
80
|
-
}] }]
|
|
81
|
-
type: Input
|
|
82
|
-
}], displayAttribute: [{
|
|
83
|
-
type: Input
|
|
84
|
-
}], hintAttribute: [{
|
|
85
|
-
type: Input
|
|
86
|
-
}], options: [{
|
|
87
|
-
type: Input
|
|
88
|
-
}], optionEnabled: [{
|
|
89
|
-
type: Input
|
|
90
|
-
}] } });
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Component, Input, Optional, Self } from '@angular/core';
|
|
2
|
+
import { UiSimpleComponent } from '../layouts/simple/ui-simple.component';
|
|
3
|
+
import { UntypedFormControl, Validators } from '@angular/forms';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/forms";
|
|
6
|
+
import * as i2 from "@angular/common";
|
|
7
|
+
import * as i3 from "../checkbox/checkbox.component";
|
|
8
|
+
import * as i4 from "../layouts/simple/ui-simple-layout.component";
|
|
9
|
+
// export interface CheckboxGroupOption {
|
|
10
|
+
// value: any,
|
|
11
|
+
// label: string,
|
|
12
|
+
// hint?: string
|
|
13
|
+
// }
|
|
14
|
+
export class CheckboxGroupComponent extends UiSimpleComponent {
|
|
15
|
+
constructor(control) {
|
|
16
|
+
super(control);
|
|
17
|
+
this.control = control;
|
|
18
|
+
this.displayAttribute = 'label';
|
|
19
|
+
this.hintAttribute = 'hint';
|
|
20
|
+
this.optionEnabled = (option) => true;
|
|
21
|
+
}
|
|
22
|
+
// ngOnInit(): void {
|
|
23
|
+
// super.ngOnInit();
|
|
24
|
+
// }
|
|
25
|
+
ngOnChanges(changes) {
|
|
26
|
+
super.ngOnChanges(changes);
|
|
27
|
+
if (changes.options) {
|
|
28
|
+
this.cbxs = [];
|
|
29
|
+
this.valueMode = Array.isArray(this.control.value) ? 'array' : 'object';
|
|
30
|
+
Object.keys(changes.options.currentValue).forEach(k => {
|
|
31
|
+
const v = changes.options.currentValue[k];
|
|
32
|
+
const ct = new UntypedFormControl(this.valueMode === 'array' ? this.control.value.includes(v) : this.control.value[k] === true);
|
|
33
|
+
if (!this.optionEnabled(v)) {
|
|
34
|
+
ct.disable();
|
|
35
|
+
}
|
|
36
|
+
ct.valueChanges.subscribe(() => {
|
|
37
|
+
const value = this.valueMode === 'array' ? [] : {};
|
|
38
|
+
let hasChecked = false;
|
|
39
|
+
this.cbxs.forEach((cbx) => {
|
|
40
|
+
const checked = cbx.control.value;
|
|
41
|
+
hasChecked = hasChecked || checked;
|
|
42
|
+
if (this.valueMode === 'array') {
|
|
43
|
+
if (checked) {
|
|
44
|
+
value.push(cbx.value.value);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
value[cbx.key] = checked;
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
this.componentFormControl.markAsTouched();
|
|
52
|
+
this.componentFormControl.setValue(value);
|
|
53
|
+
if (this.componentFormControl.hasValidator(Validators.required) && !hasChecked) {
|
|
54
|
+
this.componentFormControl.setErrors({ cbGroupRequired: true });
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
this.componentFormControl.setErrors(null);
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
this.cbxs.push({
|
|
61
|
+
control: ct,
|
|
62
|
+
value: this.valueAttribute ? v[this.valueAttribute] : v,
|
|
63
|
+
label: this.displayAttribute ? v[this.displayAttribute] : v,
|
|
64
|
+
hint: this.hintAttribute ? v[this.hintAttribute] : undefined,
|
|
65
|
+
key: this.valueMode === 'object' ? k : undefined
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: CheckboxGroupComponent, deps: [{ token: i1.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
71
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: CheckboxGroupComponent, selector: "ui-checkbox-group", inputs: { valueAttribute: "valueAttribute", displayAttribute: "displayAttribute", hintAttribute: "hintAttribute", options: "options", optionEnabled: "optionEnabled" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ui-simple-layout [ctx]=\"this\">\r\n\r\n<ui-checkbox *ngFor=\"let cbx of cbxs\" [formControl]=\"cbx.control\" [label]=\"cbx.label\" [hint]=\"cbx.hint\"></ui-checkbox>\r\n\r\n</ui-simple-layout>\r\n", styles: [":host ui-checkbox{margin-top:.2em;margin-bottom:.2em}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3.CheckboxComponent, selector: "ui-checkbox", inputs: ["color", "useInputMessages"] }, { kind: "component", type: i4.UiSimpleLayoutComponent, selector: "ui-simple-layout", inputs: ["ctx"] }] }); }
|
|
72
|
+
}
|
|
73
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: CheckboxGroupComponent, decorators: [{
|
|
74
|
+
type: Component,
|
|
75
|
+
args: [{ selector: 'ui-checkbox-group', template: "<ui-simple-layout [ctx]=\"this\">\r\n\r\n<ui-checkbox *ngFor=\"let cbx of cbxs\" [formControl]=\"cbx.control\" [label]=\"cbx.label\" [hint]=\"cbx.hint\"></ui-checkbox>\r\n\r\n</ui-simple-layout>\r\n", styles: [":host ui-checkbox{margin-top:.2em;margin-bottom:.2em}\n"] }]
|
|
76
|
+
}], ctorParameters: () => [{ type: i1.NgControl, decorators: [{
|
|
77
|
+
type: Optional
|
|
78
|
+
}, {
|
|
79
|
+
type: Self
|
|
80
|
+
}] }], propDecorators: { valueAttribute: [{
|
|
81
|
+
type: Input
|
|
82
|
+
}], displayAttribute: [{
|
|
83
|
+
type: Input
|
|
84
|
+
}], hintAttribute: [{
|
|
85
|
+
type: Input
|
|
86
|
+
}], options: [{
|
|
87
|
+
type: Input
|
|
88
|
+
}], optionEnabled: [{
|
|
89
|
+
type: Input
|
|
90
|
+
}] } });
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jaGVja2JveC1ncm91cC9jaGVja2JveC1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NoZWNrYm94LWdyb3VwL2NoZWNrYm94LWdyb3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFhLFFBQVEsRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBYSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7O0FBRTNFLHlDQUF5QztBQUN6QyxnQkFBZ0I7QUFDaEIsbUJBQW1CO0FBQ25CLGtCQUFrQjtBQUNsQixJQUFJO0FBY0osTUFBTSxPQUFPLHNCQUF1QixTQUFRLGlCQUFpQjtJQWEzRCxZQUF1QyxPQUFrQjtRQUN2RCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFEc0IsWUFBTyxHQUFQLE9BQU8sQ0FBVztRQU5oRCxxQkFBZ0IsR0FBRyxPQUFPLENBQUM7UUFDM0Isa0JBQWEsR0FBRyxNQUFNLENBQUM7UUFHdkIsa0JBQWEsR0FBRyxDQUFDLE1BQVcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDO0lBSS9DLENBQUM7SUFFRCxxQkFBcUI7SUFDckIsc0JBQXNCO0lBQ3RCLElBQUk7SUFFSixXQUFXLENBQUMsT0FBc0I7UUFDaEMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzQixJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztZ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Q0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztvQkFDNUQsR0FBRyxFQUFFLElBQUksQ0FBQyxTQUFTLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7aUJBQ2pELENBQUMsQ0FBQTtZQUNKLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7OEdBL0RVLHNCQUFzQjtrR0FBdEIsc0JBQXNCLDZRQ3RCbkMsd01BS0E7OzJGRGlCYSxzQkFBc0I7a0JBWmxDLFNBQVM7K0JBQ0UsbUJBQW1COzswQkF3QmhCLFFBQVE7OzBCQUFJLElBQUk7eUNBUHBCLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIE9wdGlvbmFsLCBTZWxmLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFVpU2ltcGxlQ29tcG9uZW50IH0gZnJvbSAnLi4vbGF5b3V0cy9zaW1wbGUvdWktc2ltcGxlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFVudHlwZWRGb3JtQ29udHJvbCwgTmdDb250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuLy8gZXhwb3J0IGludGVyZmFjZSBDaGVja2JveEdyb3VwT3B0aW9uIHtcclxuLy8gICB2YWx1ZTogYW55LFxyXG4vLyAgIGxhYmVsOiBzdHJpbmcsXHJcbi8vICAgaGludD86IHN0cmluZ1xyXG4vLyB9XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3VpLWNoZWNrYm94LWdyb3VwJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY2hlY2tib3gtZ3JvdXAuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NoZWNrYm94LWdyb3VwLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgLy8gcHJvdmlkZXJzOiBbXHJcbiAgLy8gICB7XHJcbiAgLy8gICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXHJcbiAgLy8gICAgIG11bHRpOiB0cnVlLFxyXG4gIC8vICAgICB1c2VFeGlzdGluZzogQ2hlY2tib3hHcm91cENvbXBvbmVudFxyXG4gIC8vICAgfVxyXG4gIC8vIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIENoZWNrYm94R3JvdXBDb21wb25lbnQgZXh0ZW5kcyBVaVNpbXBsZUNvbXBvbmVudCBpbXBsZW1lbnRzIC8qT25Jbml0LCAqL09uQ2hhbmdlcyB7IC8vIH0sIFZhbGlkYXRvciB7XHJcblxyXG4gIGNieHM6IGFueTtcclxuXHJcbiAgcHJpdmF0ZSB2YWx1ZU1vZGU6ICdhcnJheScgfCAnb2JqZWN0JztcclxuXHJcbiAgQElucHV0KCkgdmFsdWVBdHRyaWJ1dGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBkaXNwbGF5QXR0cmlidXRlID0gJ2xhYmVsJztcclxuICBASW5wdXQoKSBoaW50QXR0cmlidXRlID0gJ2hpbnQnO1xyXG5cclxuICBASW5wdXQoKSBvcHRpb25zOiBhbnlbXTtcclxuICBASW5wdXQoKSBvcHRpb25FbmFibGVkID0gKG9wdGlvbjogYW55KSA9PiB0cnVlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBAU2VsZigpIHB1YmxpYyBjb250cm9sOiBOZ0NvbnRyb2wpIHtcclxuICAgIHN1cGVyKGNvbnRyb2wpO1xyXG4gIH1cclxuXHJcbiAgLy8gbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgLy8gICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gIC8vIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgc3VwZXIubmdPbkNoYW5nZXMoY2hhbmdlcyk7XHJcbiAgICBpZiAoY2hhbmdlcy5vcHRpb25zKSB7XHJcbiAgICAgIHRoaXMuY2J4cyA9IFtdO1xyXG4gICAgICB0aGlzLnZhbHVlTW9kZSA9IEFycmF5LmlzQXJyYXkodGhpcy5jb250cm9sLnZhbHVlKSA/ICdhcnJheScgOiAnb2JqZWN0JztcclxuICAgICAgT2JqZWN0LmtleXMoY2hhbmdlcy5vcHRpb25zLmN1cnJlbnRWYWx1ZSkuZm9yRWFjaChrID0+IHtcclxuICAgICAgICBjb25zdCB2ID0gY2hhbmdlcy5vcHRpb25zLmN1cnJlbnRWYWx1ZVtrXTtcclxuICAgICAgICBjb25zdCBjdCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wodGhpcy52YWx1ZU1vZGUgPT09ICdhcnJheScgPyB0aGlzLmNvbnRyb2wudmFsdWUuaW5jbHVkZXModikgOiB0aGlzLmNvbnRyb2wudmFsdWVba10gPT09IHRydWUpO1xyXG4gICAgICAgIGlmICghdGhpcy5vcHRpb25FbmFibGVkKHYpKSB7XHJcbiAgICAgICAgICBjdC5kaXNhYmxlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGN0LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnZhbHVlTW9kZSA9PT0gJ2FycmF5JyA/IFtdIDoge307XHJcbiAgICAgICAgICBsZXQgaGFzQ2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5jYnhzLmZvckVhY2goKGNieCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBjaGVja2VkID0gY2J4LmNvbnRyb2wudmFsdWU7XHJcbiAgICAgICAgICAgIGhhc0NoZWNrZWQgPSBoYXNDaGVja2VkIHx8IGNoZWNrZWQ7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlTW9kZSA9PT0gJ2FycmF5Jykge1xyXG4gICAgICAgICAgICAgIGlmIChjaGVja2VkKSB7XHJcbiAgICAgICAgICAgICAgICAodmFsdWUgYXMgYW55W10pLnB1c2goY2J4LnZhbHVlLnZhbHVlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdmFsdWVbY2J4LmtleV0gPSBjaGVja2VkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuY29tcG9uZW50Rm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICAgICAgdGhpcy5jb21wb25lbnRGb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5jb21wb25lbnRGb3JtQ29udHJvbC5oYXNWYWxpZGF0b3IoVmFsaWRhdG9ycy5yZXF1aXJlZCkgJiYgIWhhc0NoZWNrZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRGb3JtQ29udHJvbC5zZXRFcnJvcnMoe2NiR3JvdXBSZXF1aXJlZDogdHJ1ZX0pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRGb3JtQ29udHJvbC5zZXRFcnJvcnMobnVsbCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5jYnhzLnB1c2goe1xyXG4gICAgICAgICAgY29udHJvbDogY3QsXHJcbiAgICAgICAgICB2YWx1ZTogdGhpcy52YWx1ZUF0dHJpYnV0ZSA/IHZbdGhpcy52YWx1ZUF0dHJpYnV0ZV0gOiB2LFxyXG4gICAgICAgICAgbGFiZWw6IHRoaXMuZGlzcGxheUF0dHJpYnV0ZSA/IHZbdGhpcy5kaXNwbGF5QXR0cmlidXRlXSA6IHYsXHJcbiAgICAgICAgICBoaW50OiB0aGlzLmhpbnRBdHRyaWJ1dGUgPyB2W3RoaXMuaGludEF0dHJpYnV0ZV0gOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICBrZXk6IHRoaXMudmFsdWVNb2RlID09PSAnb2JqZWN0JyA/IGsgOiB1bmRlZmluZWRcclxuICAgICAgICB9KVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuICAvLyB9XHJcbiAgLy9cclxuICAvLyB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XHJcbiAgLy8gICBjb25zb2xlLmxvZygndmFsaWRhdGUnKTtcclxuICAvLyAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgLy8gfVxyXG59XHJcbiIsIjx1aS1zaW1wbGUtbGF5b3V0IFtjdHhdPVwidGhpc1wiPlxyXG5cclxuPHVpLWNoZWNrYm94ICpuZ0Zvcj1cImxldCBjYnggb2YgY2J4c1wiIFtmb3JtQ29udHJvbF09XCJjYnguY29udHJvbFwiIFtsYWJlbF09XCJjYngubGFiZWxcIiBbaGludF09XCJjYnguaGludFwiPjwvdWktY2hlY2tib3g+XHJcblxyXG48L3VpLXNpbXBsZS1sYXlvdXQ+XHJcbiJdfQ==
|