@inspark/inspark-components 1.0.44 → 14.0.1
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/full/components/autocomplete/autocomplete.component.d.ts +12 -1
- package/full/components/breadcrumb/breadcrumb.component.d.ts +3 -0
- package/full/components/button/button.component.d.ts +5 -1
- package/full/components/checkbox/checkbox.component.d.ts +3 -0
- package/full/components/communication.service.d.ts +3 -0
- package/full/components/component-container/component-container.component.d.ts +3 -0
- package/full/components/content-toggle/content-toggle.component.d.ts +3 -0
- package/full/components/dropdown/dropdown.component.d.ts +65 -13
- package/full/components/empty/empty.component.d.ts +3 -0
- package/full/components/file/file.component.d.ts +3 -0
- package/full/components/header/header.component.d.ts +3 -0
- package/full/components/inline-message/inline-message.component.d.ts +3 -0
- package/full/components/input-group/input-group.component.d.ts +3 -0
- package/full/components/input-text/input-text.component.d.ts +3 -0
- package/full/components/inspark.module.d.ts +47 -0
- package/full/components/inspark.shared.d.ts +3 -0
- package/full/components/link/link.component.d.ts +5 -1
- package/full/components/modal-input-text/modal-input-text.component.d.ts +4 -1
- package/full/components/object-tree/object-tree.component.d.ts +3 -0
- package/full/components/panel/panel.component.d.ts +3 -0
- package/full/components/pie/pie.component.d.ts +3 -0
- package/full/components/pie/pie.service.d.ts +3 -0
- package/full/components/preloader/preloader.component.d.ts +3 -0
- package/full/components/primeng.module.d.ts +5 -0
- package/full/components/radiobutton/radiobutton.component.d.ts +3 -0
- package/full/components/select-button/select-button.component.d.ts +3 -0
- package/full/components/select-list/select-list.component.d.ts +4 -1
- package/full/components/status-circle/status-circle.component.d.ts +3 -0
- package/full/components/sticky/sticky.component.d.ts +3 -0
- package/full/components/svg/svg.component.d.ts +4 -1
- package/full/components/switcher/switcher.component.d.ts +3 -0
- package/full/components/table/table-click-outside.directive.d.ts +3 -0
- package/full/components/table/table-columns-multiselect/table-columns-multiselect.component.d.ts +3 -0
- package/full/components/table/table-menu-overlay/table-menu-overlay.component.d.ts +3 -0
- package/full/components/table/table.component.d.ts +18 -0
- package/full/components/textarea/textarea.component.d.ts +3 -0
- package/full/components/toolbar/toolbar.component.d.ts +3 -0
- package/full/components/tooltip/tooltip.component.d.ts +3 -0
- package/full/components/tree-table/tree-table.component.d.ts +12 -0
- package/full/esm2020/components/autocomplete/autocomplete.component.mjs +220 -0
- package/full/esm2020/components/breadcrumb/breadcrumb.component.mjs +20 -0
- package/full/esm2020/components/button/button.component.mjs +160 -0
- package/full/esm2020/components/checkbox/checkbox.component.mjs +89 -0
- package/full/esm2020/components/communication.service.mjs +25 -0
- package/full/esm2020/components/component-container/component-container.component.mjs +17 -0
- package/full/esm2020/components/content-toggle/content-toggle.component.mjs +49 -0
- package/full/esm2020/components/dropdown/dropdown.component.mjs +328 -0
- package/full/esm2020/components/empty/empty.component.mjs +12 -0
- package/full/esm2020/components/file/file.component.mjs +53 -0
- package/full/esm2020/components/header/header.component.mjs +23 -0
- package/full/esm2020/components/inline-message/inline-message.component.mjs +20 -0
- package/full/esm2020/components/input-group/input-group.component.mjs +163 -0
- package/full/esm2020/components/input-text/input-text.component.mjs +149 -0
- package/full/esm2020/components/inspark.module.mjs +239 -0
- package/full/esm2020/components/inspark.shared.mjs +25 -0
- package/full/esm2020/components/link/link.component.mjs +131 -0
- package/full/esm2020/components/modal-input-text/modal-input-text.component.mjs +88 -0
- package/full/esm2020/components/object-tree/object-tree.component.mjs +14 -0
- package/full/esm2020/components/panel/panel.component.mjs +11 -0
- package/full/esm2020/components/pie/pie.component.mjs +44 -0
- package/full/esm2020/components/pie/pie.service.mjs +55 -0
- package/full/esm2020/components/preloader/preloader.component.mjs +25 -0
- package/full/esm2020/components/primeng.module.mjs +22 -0
- package/full/esm2020/components/radiobutton/radiobutton.component.mjs +50 -0
- package/full/esm2020/components/select-button/select-button.component.mjs +147 -0
- package/full/esm2020/components/select-list/select-list.component.mjs +55 -0
- package/full/esm2020/components/status-circle/status-circle.component.mjs +36 -0
- package/full/esm2020/components/sticky/sticky.component.mjs +64 -0
- package/full/esm2020/components/svg/svg.component.mjs +28 -0
- package/full/esm2020/components/switcher/switcher.component.mjs +123 -0
- package/full/esm2020/components/table/table-click-outside.directive.mjs +31 -0
- package/full/esm2020/components/table/table-columns-multiselect/table-columns-multiselect.component.mjs +32 -0
- package/full/esm2020/components/table/table-menu-overlay/table-menu-overlay.component.mjs +26 -0
- package/full/esm2020/components/table/table.component.mjs +472 -0
- package/full/esm2020/components/textarea/textarea.component.mjs +87 -0
- package/full/esm2020/components/toolbar/toolbar.component.mjs +30 -0
- package/full/esm2020/components/tooltip/tooltip.component.mjs +14 -0
- package/full/esm2020/components/tree-table/tree-table.component.mjs +206 -0
- package/full/esm2020/inspark-inspark-components.mjs +5 -0
- package/full/esm2020/interface.mjs +2 -0
- package/full/esm2020/pipes/pipes.module.mjs +19 -0
- package/full/esm2020/pipes/propertyValue.pipe.mjs +25 -0
- package/full/esm2020/pipes/safeUrl.pipe.mjs +36 -0
- package/full/esm2020/pipes/sort-by.pipe.mjs +28 -0
- package/full/esm2020/pipes/time.pipe.mjs +206 -0
- package/full/esm2020/public_api.mjs +60 -0
- package/full/esm2020/services/inspark-dialog.service.mjs +52 -0
- package/full/esm2020/services/inspark-message.service.mjs +71 -0
- package/full/esm2020/utils/gettextMarker.function.mjs +5 -0
- package/full/esm2020/utils/hybrid/prime-table/row-state.enum.mjs +9 -0
- package/full/esm2020/utils/hybrid/prime-table/table-row-data.model.mjs +2 -0
- package/full/fesm2015/inspark-inspark-components.mjs +3574 -0
- package/full/fesm2015/inspark-inspark-components.mjs.map +1 -0
- package/full/fesm2020/inspark-inspark-components.mjs +3577 -0
- package/full/fesm2020/inspark-inspark-components.mjs.map +1 -0
- package/full/index.css +1265 -3352
- package/{interface/inspark-inspark-components.d.ts → full/index.d.ts} +1 -0
- package/full/index.js +1 -1
- package/full/interface.d.ts +1 -1
- package/full/package.json +26 -16
- package/full/pipes/pipes.module.d.ts +8 -0
- package/full/pipes/propertyValue.pipe.d.ts +3 -0
- package/full/pipes/safeUrl.pipe.d.ts +3 -0
- package/full/pipes/sort-by.pipe.d.ts +3 -0
- package/full/pipes/time.pipe.d.ts +9 -0
- package/full/public_api.d.ts +15 -1
- package/full/services/inspark-dialog.service.d.ts +4 -2
- package/full/services/inspark-message.service.d.ts +3 -0
- package/interface/esm2020/inspark-inspark-components.mjs +5 -0
- package/interface/esm2020/interface.mjs +2 -0
- package/interface/esm2020/public_api.mjs +5 -0
- package/interface/fesm2015/inspark-inspark-components.mjs +8 -0
- package/interface/fesm2015/inspark-inspark-components.mjs.map +1 -0
- package/interface/fesm2020/inspark-inspark-components.mjs +8 -0
- package/interface/fesm2020/inspark-inspark-components.mjs.map +1 -0
- package/interface/index.d.ts +5 -0
- package/interface/interface.d.ts +1 -1
- package/interface/package.json +26 -16
- package/package.json +1 -1
- package/full/bundles/inspark-inspark-components.umd.js +0 -4622
- package/full/bundles/inspark-inspark-components.umd.js.map +0 -1
- package/full/bundles/inspark-inspark-components.umd.min.js +0 -16
- package/full/bundles/inspark-inspark-components.umd.min.js.map +0 -1
- package/full/esm2015/components/autocomplete/autocomplete.component.js +0 -310
- package/full/esm2015/components/breadcrumb/breadcrumb.component.js +0 -23
- package/full/esm2015/components/button/button.component.js +0 -217
- package/full/esm2015/components/checkbox/checkbox.component.js +0 -104
- package/full/esm2015/components/communication.service.js +0 -24
- package/full/esm2015/components/component-container/component-container.component.js +0 -20
- package/full/esm2015/components/content-toggle/content-toggle.component.js +0 -66
- package/full/esm2015/components/dropdown/dropdown.component.js +0 -353
- package/full/esm2015/components/empty/empty.component.js +0 -13
- package/full/esm2015/components/file/file.component.js +0 -65
- package/full/esm2015/components/header/header.component.js +0 -30
- package/full/esm2015/components/inline-message/inline-message.component.js +0 -25
- package/full/esm2015/components/input-group/input-group.component.js +0 -197
- package/full/esm2015/components/input-text/input-text.component.js +0 -198
- package/full/esm2015/components/inspark.module.js +0 -137
- package/full/esm2015/components/inspark.shared.js +0 -30
- package/full/esm2015/components/link/link.component.js +0 -164
- package/full/esm2015/components/modal-input-text/modal-input-text.component.js +0 -94
- package/full/esm2015/components/object-tree/object-tree.component.js +0 -18
- package/full/esm2015/components/panel/panel.component.js +0 -13
- package/full/esm2015/components/pie/pie.component.js +0 -59
- package/full/esm2015/components/pie/pie.service.js +0 -54
- package/full/esm2015/components/preloader/preloader.component.js +0 -34
- package/full/esm2015/components/primeng.module.js +0 -19
- package/full/esm2015/components/radiobutton/radiobutton.component.js +0 -75
- package/full/esm2015/components/select-button/select-button.component.js +0 -176
- package/full/esm2015/components/select-list/select-list.component.js +0 -60
- package/full/esm2015/components/status-circle/status-circle.component.js +0 -51
- package/full/esm2015/components/sticky/sticky.component.js +0 -82
- package/full/esm2015/components/svg/svg.component.js +0 -36
- package/full/esm2015/components/switcher/switcher.component.js +0 -148
- package/full/esm2015/components/table/table-click-outside.directive.js +0 -38
- package/full/esm2015/components/table/table-columns-multiselect/table-columns-multiselect.component.js +0 -37
- package/full/esm2015/components/table/table-menu-overlay/table-menu-overlay.component.js +0 -35
- package/full/esm2015/components/table/table.component.js +0 -535
- package/full/esm2015/components/textarea/textarea.component.js +0 -101
- package/full/esm2015/components/toolbar/toolbar.component.js +0 -40
- package/full/esm2015/components/tooltip/tooltip.component.js +0 -18
- package/full/esm2015/components/tree-table/tree-table.component.js +0 -255
- package/full/esm2015/inspark-inspark-components.js +0 -20
- package/full/esm2015/interface.js +0 -1
- package/full/esm2015/pipes/pipes.module.js +0 -16
- package/full/esm2015/pipes/propertyValue.pipe.js +0 -23
- package/full/esm2015/pipes/safeUrl.pipe.js +0 -37
- package/full/esm2015/pipes/sort-by.pipe.js +0 -26
- package/full/esm2015/pipes/time.pipe.js +0 -201
- package/full/esm2015/public_api.js +0 -45
- package/full/esm2015/services/inspark-dialog.service.js +0 -59
- package/full/esm2015/services/inspark-message.service.js +0 -73
- package/full/esm2015/utils/gettextMarker.function.js +0 -5
- package/full/esm2015/utils/hybrid/prime-table/row-state.enum.js +0 -9
- package/full/esm2015/utils/hybrid/prime-table/table-row-data.model.js +0 -1
- package/full/esm5/components/autocomplete/autocomplete.component.js +0 -318
- package/full/esm5/components/breadcrumb/breadcrumb.component.js +0 -24
- package/full/esm5/components/button/button.component.js +0 -224
- package/full/esm5/components/checkbox/checkbox.component.js +0 -106
- package/full/esm5/components/communication.service.js +0 -25
- package/full/esm5/components/component-container/component-container.component.js +0 -21
- package/full/esm5/components/content-toggle/content-toggle.component.js +0 -67
- package/full/esm5/components/dropdown/dropdown.component.js +0 -357
- package/full/esm5/components/empty/empty.component.js +0 -16
- package/full/esm5/components/file/file.component.js +0 -66
- package/full/esm5/components/header/header.component.js +0 -31
- package/full/esm5/components/inline-message/inline-message.component.js +0 -26
- package/full/esm5/components/input-group/input-group.component.js +0 -199
- package/full/esm5/components/input-text/input-text.component.js +0 -200
- package/full/esm5/components/inspark.module.js +0 -140
- package/full/esm5/components/inspark.shared.js +0 -31
- package/full/esm5/components/link/link.component.js +0 -165
- package/full/esm5/components/modal-input-text/modal-input-text.component.js +0 -98
- package/full/esm5/components/object-tree/object-tree.component.js +0 -20
- package/full/esm5/components/panel/panel.component.js +0 -16
- package/full/esm5/components/pie/pie.component.js +0 -60
- package/full/esm5/components/pie/pie.service.js +0 -56
- package/full/esm5/components/preloader/preloader.component.js +0 -35
- package/full/esm5/components/primeng.module.js +0 -22
- package/full/esm5/components/radiobutton/radiobutton.component.js +0 -76
- package/full/esm5/components/select-button/select-button.component.js +0 -179
- package/full/esm5/components/select-list/select-list.component.js +0 -62
- package/full/esm5/components/status-circle/status-circle.component.js +0 -52
- package/full/esm5/components/sticky/sticky.component.js +0 -84
- package/full/esm5/components/svg/svg.component.js +0 -39
- package/full/esm5/components/switcher/switcher.component.js +0 -150
- package/full/esm5/components/table/table-click-outside.directive.js +0 -39
- package/full/esm5/components/table/table-columns-multiselect/table-columns-multiselect.component.js +0 -38
- package/full/esm5/components/table/table-menu-overlay/table-menu-overlay.component.js +0 -36
- package/full/esm5/components/table/table.component.js +0 -554
- package/full/esm5/components/textarea/textarea.component.js +0 -103
- package/full/esm5/components/toolbar/toolbar.component.js +0 -41
- package/full/esm5/components/tooltip/tooltip.component.js +0 -20
- package/full/esm5/components/tree-table/tree-table.component.js +0 -280
- package/full/esm5/inspark-inspark-components.js +0 -20
- package/full/esm5/interface.js +0 -1
- package/full/esm5/pipes/pipes.module.js +0 -19
- package/full/esm5/pipes/propertyValue.pipe.js +0 -26
- package/full/esm5/pipes/safeUrl.pipe.js +0 -38
- package/full/esm5/pipes/sort-by.pipe.js +0 -29
- package/full/esm5/pipes/time.pipe.js +0 -212
- package/full/esm5/public_api.js +0 -45
- package/full/esm5/services/inspark-dialog.service.js +0 -61
- package/full/esm5/services/inspark-message.service.js +0 -78
- package/full/esm5/utils/gettextMarker.function.js +0 -5
- package/full/esm5/utils/hybrid/prime-table/row-state.enum.js +0 -9
- package/full/esm5/utils/hybrid/prime-table/table-row-data.model.js +0 -1
- package/full/fesm2015/inspark-inspark-components.js +0 -4174
- package/full/fesm2015/inspark-inspark-components.js.map +0 -1
- package/full/fesm5/inspark-inspark-components.js +0 -4324
- package/full/fesm5/inspark-inspark-components.js.map +0 -1
- package/full/fonts/primeicons.eot +0 -0
- package/full/fonts/primeicons.svg +0 -163
- package/full/fonts/primeicons.ttf +0 -0
- package/full/fonts/primeicons.woff +0 -0
- package/full/inspark-inspark-components.d.ts +0 -19
- package/full/inspark-inspark-components.metadata.json +0 -1
- package/interface/bundles/inspark-inspark-components.umd.js +0 -11
- package/interface/bundles/inspark-inspark-components.umd.js.map +0 -1
- package/interface/bundles/inspark-inspark-components.umd.min.js +0 -2
- package/interface/bundles/inspark-inspark-components.umd.min.js.map +0 -1
- package/interface/esm2015/inspark-inspark-components.js +0 -4
- package/interface/esm2015/interface.js +0 -1
- package/interface/esm2015/public_api.js +0 -4
- package/interface/esm5/inspark-inspark-components.js +0 -4
- package/interface/esm5/interface.js +0 -1
- package/interface/esm5/public_api.js +0 -4
- package/interface/fesm2015/inspark-inspark-components.js +0 -4
- package/interface/fesm2015/inspark-inspark-components.js.map +0 -1
- package/interface/fesm5/inspark-inspark-components.js +0 -4
- package/interface/fesm5/inspark-inspark-components.js.map +0 -1
- package/interface/inspark-inspark-components.metadata.json +0 -1
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { Component, forwardRef, Input } from '@angular/core';
|
|
2
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/forms";
|
|
5
|
+
import * as i2 from "@angular/common";
|
|
6
|
+
export class TextareaComponent {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.name = null;
|
|
9
|
+
this.label = null;
|
|
10
|
+
this.required = false;
|
|
11
|
+
this.error = null;
|
|
12
|
+
this.placeholder = '';
|
|
13
|
+
this.id = null;
|
|
14
|
+
this.minHeight = 30;
|
|
15
|
+
this.maxlength = 100000;
|
|
16
|
+
this.propagateChange = (_) => {
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Write form value to the DOM element (model => view)
|
|
21
|
+
*/
|
|
22
|
+
writeValue(value) {
|
|
23
|
+
this.value = value;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Write form disabled state to the DOM element (model => view)
|
|
27
|
+
*/
|
|
28
|
+
setDisabledState(isDisabled) {
|
|
29
|
+
this.disabled = isDisabled;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Update form when DOM element value changes (view => model)
|
|
33
|
+
*/
|
|
34
|
+
registerOnChange(fn) {
|
|
35
|
+
// Store the provided function as an internal method.
|
|
36
|
+
this.propagateChange = fn;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Update form when DOM element is blurred (view => model)
|
|
40
|
+
*/
|
|
41
|
+
registerOnTouched(fn) {
|
|
42
|
+
// Store the provided function as an internal method.
|
|
43
|
+
this.onTouched = fn;
|
|
44
|
+
}
|
|
45
|
+
onChange(_) {
|
|
46
|
+
this.propagateChange(this.value);
|
|
47
|
+
}
|
|
48
|
+
onTouched() {
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
TextareaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TextareaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
52
|
+
TextareaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TextareaComponent, selector: "in-textarea", inputs: { name: "name", label: "label", required: "required", error: "error", placeholder: "placeholder", id: "id", disabled: "disabled", minHeight: "minHeight", maxlength: "maxlength" }, providers: [
|
|
53
|
+
{
|
|
54
|
+
provide: NG_VALUE_ACCESSOR,
|
|
55
|
+
useExisting: forwardRef(() => TextareaComponent),
|
|
56
|
+
multi: true,
|
|
57
|
+
}
|
|
58
|
+
], ngImport: i0, template: "<label class=\"c-label\">\n <span *ngIf=\"label\" class=\"c-label__content\">\n {{label}}\n <span *ngIf=\"required\" class=\"c-label__req\">*</span>\n<span *ngIf=\"error\" class=\"c-label__sub_is-error\">{{error}}</span>\n </span>\n <textarea (change)=\"onChange($event)\"\n (input)=\"onChange($event)\"\n [(ngModel)]=\"value\"\n [disabled]=\"disabled\"\n [id]=\"id\"\n [name]=\"name\"\n [ngStyle]=\"{ 'min-height': minHeight+'px' }\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n class=\"c-textarea field_{{id}}\"\n type=\"text\"\n ></textarea>\n</label>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
|
|
59
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TextareaComponent, decorators: [{
|
|
60
|
+
type: Component,
|
|
61
|
+
args: [{ selector: 'in-textarea', providers: [
|
|
62
|
+
{
|
|
63
|
+
provide: NG_VALUE_ACCESSOR,
|
|
64
|
+
useExisting: forwardRef(() => TextareaComponent),
|
|
65
|
+
multi: true,
|
|
66
|
+
}
|
|
67
|
+
], template: "<label class=\"c-label\">\n <span *ngIf=\"label\" class=\"c-label__content\">\n {{label}}\n <span *ngIf=\"required\" class=\"c-label__req\">*</span>\n<span *ngIf=\"error\" class=\"c-label__sub_is-error\">{{error}}</span>\n </span>\n <textarea (change)=\"onChange($event)\"\n (input)=\"onChange($event)\"\n [(ngModel)]=\"value\"\n [disabled]=\"disabled\"\n [id]=\"id\"\n [name]=\"name\"\n [ngStyle]=\"{ 'min-height': minHeight+'px' }\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n class=\"c-textarea field_{{id}}\"\n type=\"text\"\n ></textarea>\n</label>\n" }]
|
|
68
|
+
}], propDecorators: { name: [{
|
|
69
|
+
type: Input
|
|
70
|
+
}], label: [{
|
|
71
|
+
type: Input
|
|
72
|
+
}], required: [{
|
|
73
|
+
type: Input
|
|
74
|
+
}], error: [{
|
|
75
|
+
type: Input
|
|
76
|
+
}], placeholder: [{
|
|
77
|
+
type: Input
|
|
78
|
+
}], id: [{
|
|
79
|
+
type: Input
|
|
80
|
+
}], disabled: [{
|
|
81
|
+
type: Input
|
|
82
|
+
}], minHeight: [{
|
|
83
|
+
type: Input
|
|
84
|
+
}], maxlength: [{
|
|
85
|
+
type: Input
|
|
86
|
+
}] } });
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGFyZWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW5zcGFyay1jb21wb25lbnRzL3NyYy9jb21wb25lbnRzL3RleHRhcmVhL3RleHRhcmVhLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2luc3BhcmstY29tcG9uZW50cy9zcmMvY29tcG9uZW50cy90ZXh0YXJlYS90ZXh0YXJlYS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUF1QixpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7O0FBY3ZFLE1BQU0sT0FBTyxpQkFBaUI7SUFaOUI7UUFjVyxTQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ1osVUFBSyxHQUFHLElBQUksQ0FBQztRQUNiLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsVUFBSyxHQUFHLElBQUksQ0FBQztRQUNiLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLE9BQUUsR0FBRyxJQUFJLENBQUM7UUFFVixjQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ2YsY0FBUyxHQUFHLE1BQU0sQ0FBQztRQWtDcEIsb0JBQWUsR0FBRyxDQUFDLENBQU0sRUFBRSxFQUFFO1FBQ3JDLENBQUMsQ0FBQztLQVNIO0lBeENDOztPQUVHO0lBQ0gsVUFBVSxDQUFDLEtBQVU7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZ0JBQWdCLENBQUMsVUFBbUI7UUFDbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7SUFDN0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZ0JBQWdCLENBQUMsRUFBTztRQUN0QixxREFBcUQ7UUFDckQsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsaUJBQWlCLENBQUMsRUFBTztRQUN2QixxREFBcUQ7UUFDckQsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUtELFFBQVEsQ0FBQyxDQUFNO1FBQ2IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVPLFNBQVM7SUFDakIsQ0FBQzs7OEdBcERVLGlCQUFpQjtrR0FBakIsaUJBQWlCLGtPQVJqQjtRQUNUO1lBQ0UsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixDQUFDO1lBQ2hELEtBQUssRUFBRSxJQUFJO1NBQ1o7S0FDRiwwQkNiSCwrckJBbUJBOzJGREphLGlCQUFpQjtrQkFaN0IsU0FBUzsrQkFDRSxhQUFhLGFBR1o7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsa0JBQWtCLENBQUM7NEJBQ2hELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGOzhCQUlRLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaW4tdGV4dGFyZWEnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGV4dGFyZWEuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90ZXh0YXJlYS5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFRleHRhcmVhQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH1cbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVGV4dGFyZWFDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG5cbiAgQElucHV0KCkgbmFtZSA9IG51bGw7XG4gIEBJbnB1dCgpIGxhYmVsID0gbnVsbDtcbiAgQElucHV0KCkgcmVxdWlyZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgZXJyb3IgPSBudWxsO1xuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICcnO1xuICBASW5wdXQoKSBpZCA9IG51bGw7XG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuO1xuICBASW5wdXQoKSBtaW5IZWlnaHQgPSAzMDtcbiAgQElucHV0KCkgbWF4bGVuZ3RoID0gMTAwMDAwO1xuXG4gIHZhbHVlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdyaXRlIGZvcm0gdmFsdWUgdG8gdGhlIERPTSBlbGVtZW50IChtb2RlbCA9PiB2aWV3KVxuICAgKi9cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFdyaXRlIGZvcm0gZGlzYWJsZWQgc3RhdGUgdG8gdGhlIERPTSBlbGVtZW50IChtb2RlbCA9PiB2aWV3KVxuICAgKi9cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGZvcm0gd2hlbiBET00gZWxlbWVudCB2YWx1ZSBjaGFuZ2VzICh2aWV3ID0+IG1vZGVsKVxuICAgKi9cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgLy8gU3RvcmUgdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGFzIGFuIGludGVybmFsIG1ldGhvZC5cbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBmb3JtIHdoZW4gRE9NIGVsZW1lbnQgaXMgYmx1cnJlZCAodmlldyA9PiBtb2RlbClcbiAgICovXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAvLyBTdG9yZSB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gYXMgYW4gaW50ZXJuYWwgbWV0aG9kLlxuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBwcml2YXRlIHByb3BhZ2F0ZUNoYW5nZSA9IChfOiBhbnkpID0+IHtcbiAgfTtcblxuICBvbkNoYW5nZShfOiBhbnkpIHtcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgb25Ub3VjaGVkKCkge1xuICB9XG5cbn1cbiIsIjxsYWJlbCBjbGFzcz1cImMtbGFiZWxcIj5cbiAgICA8c3BhbiAqbmdJZj1cImxhYmVsXCIgY2xhc3M9XCJjLWxhYmVsX19jb250ZW50XCI+XG4gICAgICAgIHt7bGFiZWx9fVxuICAgICAgPHNwYW4gKm5nSWY9XCJyZXF1aXJlZFwiIGNsYXNzPVwiYy1sYWJlbF9fcmVxXCI+Kjwvc3Bhbj5cbjxzcGFuICpuZ0lmPVwiZXJyb3JcIiBjbGFzcz1cImMtbGFiZWxfX3N1Yl9pcy1lcnJvclwiPnt7ZXJyb3J9fTwvc3Bhbj5cbiAgICA8L3NwYW4+XG4gIDx0ZXh0YXJlYSAoY2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgKGlucHV0KT1cIm9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgW2lkXT1cImlkXCJcbiAgICAgICAgICAgIFtuYW1lXT1cIm5hbWVcIlxuICAgICAgICAgICAgW25nU3R5bGVdPVwieyAnbWluLWhlaWdodCc6IG1pbkhlaWdodCsncHgnIH1cIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgICAgICBjbGFzcz1cImMtdGV4dGFyZWEgZmllbGRfe3tpZH19XCJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgPjwvdGV4dGFyZWE+XG48L2xhYmVsPlxuIl19
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Input } from '@angular/core';
|
|
2
|
+
import { Router } from '@angular/router';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/router";
|
|
5
|
+
import * as i2 from "../sticky/sticky.component";
|
|
6
|
+
export class ToolbarComponent {
|
|
7
|
+
constructor(element, cdRef, router) {
|
|
8
|
+
this.element = element;
|
|
9
|
+
this.cdRef = cdRef;
|
|
10
|
+
this.router = router;
|
|
11
|
+
this.display = false;
|
|
12
|
+
}
|
|
13
|
+
ngOnInit() {
|
|
14
|
+
}
|
|
15
|
+
clickedOutsideOverlay(event) {
|
|
16
|
+
if (!this.element.nativeElement.contains(event.target)) {
|
|
17
|
+
this.display = false;
|
|
18
|
+
this.cdRef.detectChanges();
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
ToolbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ToolbarComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Component });
|
|
23
|
+
ToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ToolbarComponent, selector: "in-toolbar", inputs: { title: "title" }, ngImport: i0, template: "<div class=\"toolbar-wrapper\">\n <in-sticky top=\"60\">\n\n <div class=\"c-panel toolbar-container\">\n <div class=\"c-toolbar\">\n <div class=\"c-toolbar__side-left\">\n <div class=\"c-toolbar__title\">{{title}}</div>\n </div>\n <div class=\"c-toolbar__side-center\">\n\n </div>\n <div class=\"c-toolbar__side-right\">\n <ng-content></ng-content>\n </div>\n\n </div>\n </div>\n </in-sticky>\n</div>\n", styles: [".toolbar-wrapper{padding-bottom:4px}.toolbar-container{padding:8px;position:relative}:host{position:sticky;z-index:2}.c-toolbar{display:inline-flex;width:100%}.c-toolbar__side-left{flex:1;text-align:left}.c-toolbar__title{display:inline-flex;vertical-align:middle;font-size:22px}.c-toolbar__side-right{display:flex;text-align:right}.add-widget{position:fixed;right:16px;bottom:16px}.widget-container{position:absolute;inset:40px 0 0;overflow:auto}.widget-block{position:absolute;inset:5px}.sidebar{background:var(--main-background);position:absolute;left:0;top:35px;bottom:0;height:100vh;z-index:100;width:300px;box-shadow:0 0 3px 8px #0000001a;overflow:auto}.right-side{display:flex;align-items:center;justify-content:flex-end;flex:1}.right-side>*{margin-left:5px}.left-side{white-space:nowrap;display:flex;align-items:center;justify-content:flex-start}.left-side>*{margin-right:5px}.controls-panel{height:41px;border-radius:2px;padding:4px 0;margin:0 5px 5px;display:flex}.dashboard-list{position:relative}.title{font-size:22px}\n"], dependencies: [{ kind: "component", type: i2.InsparkStickyComponent, selector: "in-sticky", inputs: ["top", "isInline", "isFloated", "zIndex", "class"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ToolbarComponent, decorators: [{
|
|
25
|
+
type: Component,
|
|
26
|
+
args: [{ selector: 'in-toolbar', changeDetection: ChangeDetectionStrategy.OnPush, entryComponents: [], template: "<div class=\"toolbar-wrapper\">\n <in-sticky top=\"60\">\n\n <div class=\"c-panel toolbar-container\">\n <div class=\"c-toolbar\">\n <div class=\"c-toolbar__side-left\">\n <div class=\"c-toolbar__title\">{{title}}</div>\n </div>\n <div class=\"c-toolbar__side-center\">\n\n </div>\n <div class=\"c-toolbar__side-right\">\n <ng-content></ng-content>\n </div>\n\n </div>\n </div>\n </in-sticky>\n</div>\n", styles: [".toolbar-wrapper{padding-bottom:4px}.toolbar-container{padding:8px;position:relative}:host{position:sticky;z-index:2}.c-toolbar{display:inline-flex;width:100%}.c-toolbar__side-left{flex:1;text-align:left}.c-toolbar__title{display:inline-flex;vertical-align:middle;font-size:22px}.c-toolbar__side-right{display:flex;text-align:right}.add-widget{position:fixed;right:16px;bottom:16px}.widget-container{position:absolute;inset:40px 0 0;overflow:auto}.widget-block{position:absolute;inset:5px}.sidebar{background:var(--main-background);position:absolute;left:0;top:35px;bottom:0;height:100vh;z-index:100;width:300px;box-shadow:0 0 3px 8px #0000001a;overflow:auto}.right-side{display:flex;align-items:center;justify-content:flex-end;flex:1}.right-side>*{margin-left:5px}.left-side{white-space:nowrap;display:flex;align-items:center;justify-content:flex-start}.left-side>*{margin-right:5px}.controls-panel{height:41px;border-radius:2px;padding:4px 0;margin:0 5px 5px;display:flex}.dashboard-list{position:relative}.title{font-size:22px}\n"] }]
|
|
27
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.Router }]; }, propDecorators: { title: [{
|
|
28
|
+
type: Input
|
|
29
|
+
}] } });
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnNwYXJrLWNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvdG9vbGJhci90b29sYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2luc3BhcmstY29tcG9uZW50cy9zcmMvY29tcG9uZW50cy90b29sYmFyL3Rvb2xiYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQy9HLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQzs7OztBQVN2QyxNQUFNLE9BQU8sZ0JBQWdCO0lBUzNCLFlBQW1CLE9BQW1CLEVBQVUsS0FBd0IsRUFBUyxNQUFjO1FBQTVFLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUFTLFdBQU0sR0FBTixNQUFNLENBQVE7UUFML0YsWUFBTyxHQUFHLEtBQUssQ0FBQztJQU9oQixDQUFDO0lBRUQsUUFBUTtJQUVSLENBQUM7SUFFTSxxQkFBcUIsQ0FBQyxLQUFLO1FBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3RELElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3JCLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDNUI7SUFDSCxDQUFDOzs2R0F0QlUsZ0JBQWdCO2lHQUFoQixnQkFBZ0IsOEVDVjdCLGtlQW1CQTsyRkRUYSxnQkFBZ0I7a0JBUDVCLFNBQVM7K0JBQ0UsWUFBWSxtQkFHTCx1QkFBdUIsQ0FBQyxNQUFNLG1CQUM5QixFQUFFO3NKQUtWLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2luLXRvb2xiYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vdG9vbGJhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Rvb2xiYXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVudHJ5Q29tcG9uZW50czogW11cbn0pXG5leHBvcnQgY2xhc3MgVG9vbGJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cblxuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xuICBkaXNwbGF5ID0gZmFsc2U7XG4gIG9iamVjdHM7XG5cbiAgc2VsZWN0ZWQ6IGFueTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZWxlbWVudDogRWxlbWVudFJlZiwgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHB1YmxpYyByb3V0ZXI6IFJvdXRlcikge1xuXG4gIH1cblxuICBuZ09uSW5pdCgpIHtcblxuICB9XG5cbiAgcHVibGljIGNsaWNrZWRPdXRzaWRlT3ZlcmxheShldmVudCkge1xuICAgIGlmICghdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgdGhpcy5kaXNwbGF5ID0gZmFsc2U7XG4gICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxufVxuXG5cblxuIiwiPGRpdiBjbGFzcz1cInRvb2xiYXItd3JhcHBlclwiPlxuICA8aW4tc3RpY2t5IHRvcD1cIjYwXCI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYy1wYW5lbCB0b29sYmFyLWNvbnRhaW5lclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImMtdG9vbGJhclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYy10b29sYmFyX19zaWRlLWxlZnRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYy10b29sYmFyX190aXRsZVwiPnt7dGl0bGV9fTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImMtdG9vbGJhcl9fc2lkZS1jZW50ZXJcIj5cblxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImMtdG9vbGJhcl9fc2lkZS1yaWdodFwiPlxuICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2luLXN0aWNreT5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Component, ChangeDetectionStrategy } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class TooltipComponent {
|
|
4
|
+
constructor() { }
|
|
5
|
+
ngOnInit() {
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
TooltipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TooltipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9
|
+
TooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TooltipComponent, selector: "in-tooltip", ngImport: i0, template: "<div class=\"c-tooltip c-tooltip_left\">\n <ng-content></ng-content>\n <div class=\"c-tooltip__content\" style=\"width: 12em;\" >\n <ng-content select=\"tooltip_content\"></ng-content>\n </div>\n</div>\n\n", styles: [".c-tooltip{display:inline-block;position:relative;text-align:left;overflow:visible}.c-tooltip:hover .c-tooltip__content{visibility:visible;opacity:1}.c-tooltip_left>.c-tooltip__content{inset:50% 100% auto auto;margin-right:12px;border-top-right-radius:0}.c-tooltip_left>.c-tooltip__content:before{border-top-color:var(--colorBgLevel2, #282A31);border-left-color:var(--colorBgLevel2, #282A31)}.c-tooltip__content{position:absolute;width:auto;margin:0 0 12px;padding:9px 12px;font-size:13px;font-weight:400;letter-spacing:normal;border-radius:3px;line-height:1.64286;visibility:hidden;opacity:0;transition:opacity .3s linear;z-index:1070;background:var(--colorBgLevel2, #282A31);color:var(--ids-theme-text-color, #fff);white-space:normal;text-transform:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TooltipComponent, decorators: [{
|
|
11
|
+
type: Component,
|
|
12
|
+
args: [{ selector: 'in-tooltip', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"c-tooltip c-tooltip_left\">\n <ng-content></ng-content>\n <div class=\"c-tooltip__content\" style=\"width: 12em;\" >\n <ng-content select=\"tooltip_content\"></ng-content>\n </div>\n</div>\n\n", styles: [".c-tooltip{display:inline-block;position:relative;text-align:left;overflow:visible}.c-tooltip:hover .c-tooltip__content{visibility:visible;opacity:1}.c-tooltip_left>.c-tooltip__content{inset:50% 100% auto auto;margin-right:12px;border-top-right-radius:0}.c-tooltip_left>.c-tooltip__content:before{border-top-color:var(--colorBgLevel2, #282A31);border-left-color:var(--colorBgLevel2, #282A31)}.c-tooltip__content{position:absolute;width:auto;margin:0 0 12px;padding:9px 12px;font-size:13px;font-weight:400;letter-spacing:normal;border-radius:3px;line-height:1.64286;visibility:hidden;opacity:0;transition:opacity .3s linear;z-index:1070;background:var(--colorBgLevel2, #282A31);color:var(--ids-theme-text-color, #fff);white-space:normal;text-transform:none}\n"] }]
|
|
13
|
+
}], ctorParameters: function () { return []; } });
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnNwYXJrLWNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvdG9vbHRpcC90b29sdGlwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2luc3BhcmstY29tcG9uZW50cy9zcmMvY29tcG9uZW50cy90b29sdGlwL3Rvb2x0aXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSx1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFRM0UsTUFBTSxPQUFPLGdCQUFnQjtJQUUzQixnQkFBZ0IsQ0FBQztJQUVqQixRQUFRO0lBQ1IsQ0FBQzs7NkdBTFUsZ0JBQWdCO2lHQUFoQixnQkFBZ0Isa0RDUjdCLHFOQU9BOzJGRENhLGdCQUFnQjtrQkFONUIsU0FBUzsrQkFDRSxZQUFZLG1CQUdMLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaW4tdG9vbHRpcCcsXG4gIHRlbXBsYXRlVXJsOiAnLi90b29sdGlwLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdG9vbHRpcC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBUb29sdGlwQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJjLXRvb2x0aXAgYy10b29sdGlwX2xlZnRcIj5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8ZGl2IGNsYXNzPVwiYy10b29sdGlwX19jb250ZW50XCIgc3R5bGU9XCJ3aWR0aDogMTJlbTtcIiA+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwidG9vbHRpcF9jb250ZW50XCI+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG4iXX0=
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
import { Component, ContentChildren, EventEmitter, Input, NgModule, Output, QueryList } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { InsparkTemplate } from '../inspark.shared';
|
|
4
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
5
|
+
import { FormsModule } from '@angular/forms';
|
|
6
|
+
import { TableComponentModule } from '../table/table.component';
|
|
7
|
+
import { PipesModule } from '../../pipes/pipes.module';
|
|
8
|
+
import { TreeTableModule } from 'primeng/treetable';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "@angular/common";
|
|
11
|
+
import * as i2 from "primeng/treetable";
|
|
12
|
+
import * as i3 from "primeng/api";
|
|
13
|
+
import * as i4 from "@angular/forms";
|
|
14
|
+
import * as i5 from "../table/table-columns-multiselect/table-columns-multiselect.component";
|
|
15
|
+
import * as i6 from "../../pipes/propertyValue.pipe";
|
|
16
|
+
import * as i7 from "@ngx-translate/core";
|
|
17
|
+
export class TreeTableComponent {
|
|
18
|
+
constructor() {
|
|
19
|
+
this.columns = [];
|
|
20
|
+
this.values = [];
|
|
21
|
+
this.checkboxSelection = true;
|
|
22
|
+
this.activeChange = new EventEmitter();
|
|
23
|
+
this.selectionChange = new EventEmitter();
|
|
24
|
+
this.addAction = new EventEmitter();
|
|
25
|
+
this.csvAction = new EventEmitter();
|
|
26
|
+
this.saveAction = new EventEmitter();
|
|
27
|
+
this.collapseAction = new EventEmitter();
|
|
28
|
+
this.removeAction = new EventEmitter();
|
|
29
|
+
this.unlinkAction = new EventEmitter();
|
|
30
|
+
this.groupEditAction = new EventEmitter();
|
|
31
|
+
this.groupAddAction = new EventEmitter();
|
|
32
|
+
this.rowIndex = 0;
|
|
33
|
+
this.isCollapse = true;
|
|
34
|
+
this._selection = null;
|
|
35
|
+
}
|
|
36
|
+
set selection(val) {
|
|
37
|
+
this._selection = val;
|
|
38
|
+
}
|
|
39
|
+
get selectionValue() {
|
|
40
|
+
return this._selection;
|
|
41
|
+
}
|
|
42
|
+
set selectionValue(val) {
|
|
43
|
+
this._selection = val;
|
|
44
|
+
this.selectionChange.emit(val);
|
|
45
|
+
}
|
|
46
|
+
isRowActive(row) {
|
|
47
|
+
return this.active && this.active.id === row.id;
|
|
48
|
+
}
|
|
49
|
+
visibleColumns() {
|
|
50
|
+
return this.columns.filter(column => !column.isHidden);
|
|
51
|
+
}
|
|
52
|
+
columnsChange(data) {
|
|
53
|
+
data.column.isHidden = !data.event;
|
|
54
|
+
}
|
|
55
|
+
ngAfterContentInit() {
|
|
56
|
+
this.templates.forEach((item) => {
|
|
57
|
+
switch (item.getType()) {
|
|
58
|
+
case 'caption':
|
|
59
|
+
this.captionTemplate = item.template;
|
|
60
|
+
break;
|
|
61
|
+
case 'header':
|
|
62
|
+
this.headerTemplate = item.template;
|
|
63
|
+
break;
|
|
64
|
+
case 'body':
|
|
65
|
+
this.bodyTemplate = item.template;
|
|
66
|
+
break;
|
|
67
|
+
case 'value':
|
|
68
|
+
this.valueTemplate = item.template;
|
|
69
|
+
break;
|
|
70
|
+
case 'loadingbody':
|
|
71
|
+
this.loadingBodyTemplate = item.template;
|
|
72
|
+
break;
|
|
73
|
+
case 'footer':
|
|
74
|
+
this.footerTemplate = item.template;
|
|
75
|
+
break;
|
|
76
|
+
case 'summary':
|
|
77
|
+
this.summaryTemplate = item.template;
|
|
78
|
+
break;
|
|
79
|
+
case 'colgroup':
|
|
80
|
+
this.colGroupTemplate = item.template;
|
|
81
|
+
break;
|
|
82
|
+
case 'rowexpansion':
|
|
83
|
+
this.expandedRowTemplate = item.template;
|
|
84
|
+
break;
|
|
85
|
+
case 'frozenrows':
|
|
86
|
+
this.frozenRowsTemplate = item.template;
|
|
87
|
+
break;
|
|
88
|
+
case 'frozenheader':
|
|
89
|
+
this.frozenHeaderTemplate = item.template;
|
|
90
|
+
break;
|
|
91
|
+
case 'frozenbody':
|
|
92
|
+
this.frozenBodyTemplate = item.template;
|
|
93
|
+
break;
|
|
94
|
+
case 'frozenfooter':
|
|
95
|
+
this.frozenFooterTemplate = item.template;
|
|
96
|
+
break;
|
|
97
|
+
case 'frozencolgroup':
|
|
98
|
+
this.frozenColGroupTemplate = item.template;
|
|
99
|
+
break;
|
|
100
|
+
case 'emptymessage':
|
|
101
|
+
this.emptyMessageTemplate = item.template;
|
|
102
|
+
break;
|
|
103
|
+
case 'paginatorleft':
|
|
104
|
+
this.paginatorLeftTemplate = item.template;
|
|
105
|
+
break;
|
|
106
|
+
case 'paginatorright':
|
|
107
|
+
this.paginatorRightTemplate = item.template;
|
|
108
|
+
break;
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
collapse(event, dt) {
|
|
113
|
+
this.values.forEach((node) => {
|
|
114
|
+
this.toggleCollapse(node, this.isCollapse);
|
|
115
|
+
});
|
|
116
|
+
this.isCollapse = !this.isCollapse;
|
|
117
|
+
dt.filterGlobal(this.searchText, 'contains');
|
|
118
|
+
}
|
|
119
|
+
toggleCollapse(node, isCollapsed) {
|
|
120
|
+
if (node.children) {
|
|
121
|
+
node.expanded = isCollapsed;
|
|
122
|
+
for (const cn of node.children) {
|
|
123
|
+
if (cn) {
|
|
124
|
+
this.toggleCollapse(cn, isCollapsed);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
TreeTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TreeTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
131
|
+
TreeTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TreeTableComponent, selector: "in-tree-table", inputs: { columns: "columns", values: "values", scrollHeight: "scrollHeight", scrollable: "scrollable", selectionMode: "selectionMode", label: "label", error: "error", class: "class", required: "required", style: "style", toolbar: "toolbar", checkboxSelection: "checkboxSelection", active: "active", sortField: "sortField", isAscending: "isAscending", dataKey: "dataKey", selection: "selection" }, outputs: { activeChange: "activeChange", selectionChange: "selectionChange", addAction: "addAction", csvAction: "csvAction", saveAction: "saveAction", collapseAction: "collapseAction", removeAction: "removeAction", unlinkAction: "unlinkAction", groupEditAction: "groupEditAction", groupAddAction: "groupAddAction" }, queries: [{ propertyName: "templates", predicate: InsparkTemplate }], ngImport: i0, template: "<p-treeTable #dt\n [(selection)]=\"selectionValue\"\n [class]=\"class\"\n [columns]=\"visibleColumns()\"\n [resizableColumns]=\"true\"\n [scrollHeight]=\"scrollHeight\"\n [scrollable]=\"scrollable\"\n [selectionMode]=\"selectionMode\"\n [sortField]=\"sortField || 'id'\"\n [sortOrder]=\"isAscending ? 1 : -1\"\n [style]=\"style\"\n [value]=\"values\"\n columnResizeMode=\"expand\"\n>\n <ng-template let-columns pTemplate=\"colgroup\">\n <colgroup>\n <col *ngIf=\"checkboxSelection\" style=\"width:44px;\">\n <col *ngFor=\"let col of visibleColumns()\" [style.width]=\"col.width ? col.width : '10px'\">\n </colgroup>\n </ng-template>\n <ng-template let-columns pTemplate=\"header\">\n <tr>\n <th *ngIf=\"checkboxSelection\">\n <p-treeTableHeaderCheckbox></p-treeTableHeaderCheckbox>\n </th>\n <th *ngFor=\"let col of columns; let i = index\" [ttSortableColumn]=\"col.field\" class=\"u-position-relative\"\n ttResizableColumn>\n <div class=\"ui-treetable-thead-title\" title=\"{{col.label | translate}}\">\n {{col.label | translate}}\n </div>\n <p-treeTableSortIcon [field]=\"col.field\" class=\"ui-sortable-column-buttons\"></p-treeTableSortIcon>\n </th>\n </tr>\n </ng-template>\n\n <ng-template let-columns=\"columns\" let-rowData=\"rowData\" let-rowNode pTemplate=\"body\">\n <tr [ngClass]=\"{row_active: isRowActive(rowData)}\" [ttSelectableRow]=\"rowNode\" class=\"row\">\n <td *ngIf=\"checkboxSelection\">\n <p-treeTableCheckbox [value]=\"rowNode\"></p-treeTableCheckbox>\n </td>\n <td (click)=\"activeChange.emit(rowData)\" *ngFor=\"let col of columns; let i = index\"\n class=\"_u-overflow-visible\">\n <div class=\"\" style=\"display: flex; flex-wrap: nowrap;\">\n <ng-template [ngIf]=\"i == 0\">\n <p-treeTableToggler [rowNode]=\"rowNode\" style=\"align-self: center;\"></p-treeTableToggler>\n </ng-template>\n <div [ngClass]=\"{ 'ui-treetable-tbody-content_has-toggler ': i == 0 }\"\n class=\"ui-treetable-tbody-content cell-content_hover\"\n style=\"flex-grow: 1;\"\n title=\"{{rowData | propertyValue: col.field}}\">\n <ng-container *ngIf=\"!valueTemplate\">\n <i *ngIf=\"rowData.icon && i == 0\" [ngClass]=\"rowData.icon\" class=\"u-margin-right-tiny\"></i>\n {{rowData | propertyValue: col.field}}\n </ng-container>\n\n <ng-container\n *ngTemplateOutlet=\"valueTemplate; context: {$implicit: { data: rowData, col: col}}\"></ng-container>\n </div>\n </div>\n </td>\n </tr>\n </ng-template>\n\n <ng-template *ngIf=\"toolbar\" pTemplate=\"caption\">\n\n <div class=\"o-grid o-grid_no-gutter\">\n <div class=\"c-tree-table__toolbar-content u-display-inline-flex\">\n <div class=\"c-form c-form_inline u-display-inline-block\">\n <form class=\"c-label\">\n <div class=\"input-wrapper u-margin-right-tiny\">\n <input #searchTextInput\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n [(ngModel)]=\"searchText\"\n [ngModelOptions]=\"{standalone: true}\"\n autofocus=\"\"\n class=\"search-box c-input c-input_small ng-pristine ng-valid ng-scope ng-empty ng-touched\"\n pInputText\n placeholder=\"{{('SHARED.SEARCH' | translate) + ':'}}\"\n required\n style=\"padding-right: 28px\"\n tabindex=\"1\"\n type=\"search\"\n >\n <button (click)=\"dt.filterGlobal($event.target.value, 'contains')\" class=\"button-reset\" type=\"reset\"\n [attr.title]=\"'Reset' | translate\">\n <i class=\"fa fa-close\"></i>\n </button>\n </div>\n </form>\n </div>\n <div class=\"c-btn c-btn_border-free c-btn_small\">\n <in-table-columns-multiselect (columnsChange)=\"columnsChange($event)\"\n [columns]=\"columns\"></in-table-columns-multiselect>\n </div>\n\n <button (click)=\"addAction.emit($event)\" *ngIf=\"toolbar.add\" [disabled]=\"toolbar.add.disabled\"\n class=\"c-btn c-btn_border-free c-btn_small\"\n >\n <i class=\"fa fa-plus\" [title]=\"toolbar.add.title || '\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C'\"></i>\n </button>\n\n <button (click)=\"groupAddAction.emit($event)\" *ngIf=\"toolbar.groupAdd\" [disabled]=\"toolbar.groupAdd.disabled\"\n class=\"c-btn c-btn_border-free c-btn_small\"\n >\n <i class=\"fa fa-folder\" [title]=\"toolbar.groupAdd.title || '\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0433\u0440\u0443\u043F\u043F\u0443'\"></i>\n </button>\n\n\n <button (click)=\"saveAction.emit($event)\" *ngIf=\"toolbar.save\"\n [disabled]=\"toolbar.save.disabled\"\n class=\"c-btn c-btn_primary c-btn_small\"\n title=\"{{'Save' | translate}}\"\n >\n {{'Save' | translate}}\n </button>\n <button (click)=\"groupEditAction.emit($event)\" *ngIf=\"toolbar.groupEdit && toolbar.groupEdit.active\"\n [disabled]=\"toolbar.groupEdit.disabled\"\n class=\"c-btn c-btn_border-free c-btn_small\">\n <i class=\"fa fa-pencil-square-o\" title=\"{{'groupEdit' | translate}}\"></i>\n </button>\n <button (click)=\"removeAction.emit($event)\" *ngIf=\"toolbar.remove && toolbar.remove.active\"\n [disabled]=\"toolbar.remove.disabled\"\n class=\"c-btn c-btn_border-free c-btn_small\">\n <i class=\"fa fa-trash\" [title]=\"toolbar.remove?.title || '\u0423\u0434\u0430\u043B\u0438\u0442\u044C'\"></i>\n </button>\n <button (click)=\"unlinkAction.emit($event)\" *ngIf=\"toolbar.unlink\" [disabled]=\"toolbar.unlink.disabled\"\n class=\"c-btn c-btn_border-free c-btn_small\">\n <i class=\"fa fa-unlink\" title=\"{{'Detach tag from selected items' | translate}}\"></i>\n </button>\n <button (click)=\"csvAction.emit($event)\" *ngIf=\"toolbar.csv\" [disabled]=\"toolbar.csv.disabled\"\n class=\"c-btn c-btn_border-free c-btn_small\"\n >\n <i class=\"fas fa-file-csv\" title=\"\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C \u043A\u0430\u043A CSV\"></i>\n </button>\n <button *ngIf=\"toolbar.collapse\"\n class=\"c-btn c-btn_small c-btn_svg-24 c-icon c-icon_svg c-icon_svg-24 c-btn_border-free\"\n (click)=\"collapse($event, dt)\"\n title=\"{{(isCollapse ? 'Expand all' : 'Collapse all') | translate}}\">\n <svg *ngIf=\"isCollapse\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"currentColor\" viewBox=\"0 0 24 24\">\n <path d=\"M20 2H4v2h16V2zM4 20v2h16v-2H4zM12 5l5 6H7l5-6zM17 13l-5 6-5-6h10z\"/>\n </svg>\n <svg *ngIf=\"!isCollapse\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"currentColor\" viewBox=\"0 0 24 24\">\n <path fill-rule=\"evenodd\" d=\"M17 3l-5 6-5-6h10zM4 13v-2h16v2H4zm8 2l5 6H7l5-6z\" clip-rule=\"evenodd\"/>\n </svg>\n </button>\n </div>\n </div>\n </ng-template>\n</p-treeTable>\n", styles: ["@charset \"UTF-8\";.ui-sortable-column{cursor:pointer;position:relative}.ui-sortable-column-buttons{position:absolute;top:0;right:0;width:18px;height:100%;display:inline-flex;align-items:center;z-index:10000}.ui-sortable-column-buttons>a{position:absolute;top:50%;right:0;left:0;transform:translateY(-50%)}.u-overflow-visible{overflow:visible!important}.button-reset{display:flex;align-items:center;position:absolute;right:6px;top:5px;padding:6px;font-size:15px;border:none;outline:0;cursor:pointer;color:var(--colorTextMuted);background-color:transparent}.button-reset:hover{color:var(--colorIcon)}.input-wrapper{position:relative;display:flex;align-items:baseline}.c-input:not(:valid)~.button-reset{display:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.TreeTable, selector: "p-treeTable", inputs: ["columns", "style", "styleClass", "tableStyle", "tableStyleClass", "autoLayout", "lazy", "lazyLoadOnInit", "paginator", "rows", "first", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorDropdownAppendTo", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "customSort", "selectionMode", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "compareSelectionBy", "rowHover", "loading", "loadingIcon", "showLoader", "scrollable", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "frozenColumns", "resizableColumns", "columnResizeMode", "reorderableColumns", "contextMenu", "rowTrackBy", "filters", "globalFilterFields", "filterDelay", "filterMode", "filterLocale", "virtualRowHeight", "value", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection"], outputs: ["selectionChange", "contextMenuSelectionChange", "onFilter", "onNodeExpand", "onNodeCollapse", "onPage", "onSort", "onLazyLoad", "sortFunction", "onColResize", "onColReorder", "onNodeSelect", "onNodeUnselect", "onContextMenuSelect", "onHeaderCheckboxToggle", "onEditInit", "onEditComplete", "onEditCancel"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i2.TreeTableToggler, selector: "p-treeTableToggler", inputs: ["rowNode"] }, { kind: "directive", type: i2.TTSortableColumn, selector: "[ttSortableColumn]", inputs: ["ttSortableColumn", "ttSortableColumnDisabled"] }, { kind: "component", type: i2.TTSortIcon, selector: "p-treeTableSortIcon", inputs: ["field", "ariaLabelDesc", "ariaLabelAsc"] }, { kind: "directive", type: i2.TTResizableColumn, selector: "[ttResizableColumn]", inputs: ["ttResizableColumnDisabled"] }, { kind: "directive", type: i2.TTSelectableRow, selector: "[ttSelectableRow]", inputs: ["ttSelectableRow", "ttSelectableRowDisabled"] }, { kind: "component", type: i2.TTCheckbox, selector: "p-treeTableCheckbox", inputs: ["disabled", "value"] }, { kind: "component", type: i2.TTHeaderCheckbox, selector: "p-treeTableHeaderCheckbox" }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i5.TableColumnsMultiselectComponent, selector: "in-table-columns-multiselect", inputs: ["columns", "disableActiveCheckboxes"], outputs: ["columnsChange"] }, { kind: "pipe", type: i6.PropertyValuePipe, name: "propertyValue" }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] });
|
|
132
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TreeTableComponent, decorators: [{
|
|
133
|
+
type: Component,
|
|
134
|
+
args: [{ selector: 'in-tree-table', entryComponents: [], template: "<p-treeTable #dt\n [(selection)]=\"selectionValue\"\n [class]=\"class\"\n [columns]=\"visibleColumns()\"\n [resizableColumns]=\"true\"\n [scrollHeight]=\"scrollHeight\"\n [scrollable]=\"scrollable\"\n [selectionMode]=\"selectionMode\"\n [sortField]=\"sortField || 'id'\"\n [sortOrder]=\"isAscending ? 1 : -1\"\n [style]=\"style\"\n [value]=\"values\"\n columnResizeMode=\"expand\"\n>\n <ng-template let-columns pTemplate=\"colgroup\">\n <colgroup>\n <col *ngIf=\"checkboxSelection\" style=\"width:44px;\">\n <col *ngFor=\"let col of visibleColumns()\" [style.width]=\"col.width ? col.width : '10px'\">\n </colgroup>\n </ng-template>\n <ng-template let-columns pTemplate=\"header\">\n <tr>\n <th *ngIf=\"checkboxSelection\">\n <p-treeTableHeaderCheckbox></p-treeTableHeaderCheckbox>\n </th>\n <th *ngFor=\"let col of columns; let i = index\" [ttSortableColumn]=\"col.field\" class=\"u-position-relative\"\n ttResizableColumn>\n <div class=\"ui-treetable-thead-title\" title=\"{{col.label | translate}}\">\n {{col.label | translate}}\n </div>\n <p-treeTableSortIcon [field]=\"col.field\" class=\"ui-sortable-column-buttons\"></p-treeTableSortIcon>\n </th>\n </tr>\n </ng-template>\n\n <ng-template let-columns=\"columns\" let-rowData=\"rowData\" let-rowNode pTemplate=\"body\">\n <tr [ngClass]=\"{row_active: isRowActive(rowData)}\" [ttSelectableRow]=\"rowNode\" class=\"row\">\n <td *ngIf=\"checkboxSelection\">\n <p-treeTableCheckbox [value]=\"rowNode\"></p-treeTableCheckbox>\n </td>\n <td (click)=\"activeChange.emit(rowData)\" *ngFor=\"let col of columns; let i = index\"\n class=\"_u-overflow-visible\">\n <div class=\"\" style=\"display: flex; flex-wrap: nowrap;\">\n <ng-template [ngIf]=\"i == 0\">\n <p-treeTableToggler [rowNode]=\"rowNode\" style=\"align-self: center;\"></p-treeTableToggler>\n </ng-template>\n <div [ngClass]=\"{ 'ui-treetable-tbody-content_has-toggler ': i == 0 }\"\n class=\"ui-treetable-tbody-content cell-content_hover\"\n style=\"flex-grow: 1;\"\n title=\"{{rowData | propertyValue: col.field}}\">\n <ng-container *ngIf=\"!valueTemplate\">\n <i *ngIf=\"rowData.icon && i == 0\" [ngClass]=\"rowData.icon\" class=\"u-margin-right-tiny\"></i>\n {{rowData | propertyValue: col.field}}\n </ng-container>\n\n <ng-container\n *ngTemplateOutlet=\"valueTemplate; context: {$implicit: { data: rowData, col: col}}\"></ng-container>\n </div>\n </div>\n </td>\n </tr>\n </ng-template>\n\n <ng-template *ngIf=\"toolbar\" pTemplate=\"caption\">\n\n <div class=\"o-grid o-grid_no-gutter\">\n <div class=\"c-tree-table__toolbar-content u-display-inline-flex\">\n <div class=\"c-form c-form_inline u-display-inline-block\">\n <form class=\"c-label\">\n <div class=\"input-wrapper u-margin-right-tiny\">\n <input #searchTextInput\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n [(ngModel)]=\"searchText\"\n [ngModelOptions]=\"{standalone: true}\"\n autofocus=\"\"\n class=\"search-box c-input c-input_small ng-pristine ng-valid ng-scope ng-empty ng-touched\"\n pInputText\n placeholder=\"{{('SHARED.SEARCH' | translate) + ':'}}\"\n required\n style=\"padding-right: 28px\"\n tabindex=\"1\"\n type=\"search\"\n >\n <button (click)=\"dt.filterGlobal($event.target.value, 'contains')\" class=\"button-reset\" type=\"reset\"\n [attr.title]=\"'Reset' | translate\">\n <i class=\"fa fa-close\"></i>\n </button>\n </div>\n </form>\n </div>\n <div class=\"c-btn c-btn_border-free c-btn_small\">\n <in-table-columns-multiselect (columnsChange)=\"columnsChange($event)\"\n [columns]=\"columns\"></in-table-columns-multiselect>\n </div>\n\n <button (click)=\"addAction.emit($event)\" *ngIf=\"toolbar.add\" [disabled]=\"toolbar.add.disabled\"\n class=\"c-btn c-btn_border-free c-btn_small\"\n >\n <i class=\"fa fa-plus\" [title]=\"toolbar.add.title || '\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C'\"></i>\n </button>\n\n <button (click)=\"groupAddAction.emit($event)\" *ngIf=\"toolbar.groupAdd\" [disabled]=\"toolbar.groupAdd.disabled\"\n class=\"c-btn c-btn_border-free c-btn_small\"\n >\n <i class=\"fa fa-folder\" [title]=\"toolbar.groupAdd.title || '\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0433\u0440\u0443\u043F\u043F\u0443'\"></i>\n </button>\n\n\n <button (click)=\"saveAction.emit($event)\" *ngIf=\"toolbar.save\"\n [disabled]=\"toolbar.save.disabled\"\n class=\"c-btn c-btn_primary c-btn_small\"\n title=\"{{'Save' | translate}}\"\n >\n {{'Save' | translate}}\n </button>\n <button (click)=\"groupEditAction.emit($event)\" *ngIf=\"toolbar.groupEdit && toolbar.groupEdit.active\"\n [disabled]=\"toolbar.groupEdit.disabled\"\n class=\"c-btn c-btn_border-free c-btn_small\">\n <i class=\"fa fa-pencil-square-o\" title=\"{{'groupEdit' | translate}}\"></i>\n </button>\n <button (click)=\"removeAction.emit($event)\" *ngIf=\"toolbar.remove && toolbar.remove.active\"\n [disabled]=\"toolbar.remove.disabled\"\n class=\"c-btn c-btn_border-free c-btn_small\">\n <i class=\"fa fa-trash\" [title]=\"toolbar.remove?.title || '\u0423\u0434\u0430\u043B\u0438\u0442\u044C'\"></i>\n </button>\n <button (click)=\"unlinkAction.emit($event)\" *ngIf=\"toolbar.unlink\" [disabled]=\"toolbar.unlink.disabled\"\n class=\"c-btn c-btn_border-free c-btn_small\">\n <i class=\"fa fa-unlink\" title=\"{{'Detach tag from selected items' | translate}}\"></i>\n </button>\n <button (click)=\"csvAction.emit($event)\" *ngIf=\"toolbar.csv\" [disabled]=\"toolbar.csv.disabled\"\n class=\"c-btn c-btn_border-free c-btn_small\"\n >\n <i class=\"fas fa-file-csv\" title=\"\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C \u043A\u0430\u043A CSV\"></i>\n </button>\n <button *ngIf=\"toolbar.collapse\"\n class=\"c-btn c-btn_small c-btn_svg-24 c-icon c-icon_svg c-icon_svg-24 c-btn_border-free\"\n (click)=\"collapse($event, dt)\"\n title=\"{{(isCollapse ? 'Expand all' : 'Collapse all') | translate}}\">\n <svg *ngIf=\"isCollapse\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"currentColor\" viewBox=\"0 0 24 24\">\n <path d=\"M20 2H4v2h16V2zM4 20v2h16v-2H4zM12 5l5 6H7l5-6zM17 13l-5 6-5-6h10z\"/>\n </svg>\n <svg *ngIf=\"!isCollapse\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"currentColor\" viewBox=\"0 0 24 24\">\n <path fill-rule=\"evenodd\" d=\"M17 3l-5 6-5-6h10zM4 13v-2h16v2H4zm8 2l5 6H7l5-6z\" clip-rule=\"evenodd\"/>\n </svg>\n </button>\n </div>\n </div>\n </ng-template>\n</p-treeTable>\n", styles: ["@charset \"UTF-8\";.ui-sortable-column{cursor:pointer;position:relative}.ui-sortable-column-buttons{position:absolute;top:0;right:0;width:18px;height:100%;display:inline-flex;align-items:center;z-index:10000}.ui-sortable-column-buttons>a{position:absolute;top:50%;right:0;left:0;transform:translateY(-50%)}.u-overflow-visible{overflow:visible!important}.button-reset{display:flex;align-items:center;position:absolute;right:6px;top:5px;padding:6px;font-size:15px;border:none;outline:0;cursor:pointer;color:var(--colorTextMuted);background-color:transparent}.button-reset:hover{color:var(--colorIcon)}.input-wrapper{position:relative;display:flex;align-items:baseline}.c-input:not(:valid)~.button-reset{display:none}\n"] }]
|
|
135
|
+
}], propDecorators: { columns: [{
|
|
136
|
+
type: Input
|
|
137
|
+
}], values: [{
|
|
138
|
+
type: Input
|
|
139
|
+
}], scrollHeight: [{
|
|
140
|
+
type: Input
|
|
141
|
+
}], scrollable: [{
|
|
142
|
+
type: Input
|
|
143
|
+
}], selectionMode: [{
|
|
144
|
+
type: Input
|
|
145
|
+
}], label: [{
|
|
146
|
+
type: Input
|
|
147
|
+
}], error: [{
|
|
148
|
+
type: Input
|
|
149
|
+
}], class: [{
|
|
150
|
+
type: Input
|
|
151
|
+
}], required: [{
|
|
152
|
+
type: Input
|
|
153
|
+
}], style: [{
|
|
154
|
+
type: Input
|
|
155
|
+
}], toolbar: [{
|
|
156
|
+
type: Input
|
|
157
|
+
}], checkboxSelection: [{
|
|
158
|
+
type: Input
|
|
159
|
+
}], active: [{
|
|
160
|
+
type: Input
|
|
161
|
+
}], sortField: [{
|
|
162
|
+
type: Input
|
|
163
|
+
}], isAscending: [{
|
|
164
|
+
type: Input
|
|
165
|
+
}], dataKey: [{
|
|
166
|
+
type: Input
|
|
167
|
+
}], activeChange: [{
|
|
168
|
+
type: Output
|
|
169
|
+
}], templates: [{
|
|
170
|
+
type: ContentChildren,
|
|
171
|
+
args: [InsparkTemplate]
|
|
172
|
+
}], selectionChange: [{
|
|
173
|
+
type: Output
|
|
174
|
+
}], addAction: [{
|
|
175
|
+
type: Output
|
|
176
|
+
}], csvAction: [{
|
|
177
|
+
type: Output
|
|
178
|
+
}], saveAction: [{
|
|
179
|
+
type: Output
|
|
180
|
+
}], collapseAction: [{
|
|
181
|
+
type: Output
|
|
182
|
+
}], removeAction: [{
|
|
183
|
+
type: Output
|
|
184
|
+
}], unlinkAction: [{
|
|
185
|
+
type: Output
|
|
186
|
+
}], groupEditAction: [{
|
|
187
|
+
type: Output
|
|
188
|
+
}], groupAddAction: [{
|
|
189
|
+
type: Output
|
|
190
|
+
}], selection: [{
|
|
191
|
+
type: Input
|
|
192
|
+
}] } });
|
|
193
|
+
export class TreeTableComponentModule {
|
|
194
|
+
}
|
|
195
|
+
TreeTableComponentModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TreeTableComponentModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
196
|
+
TreeTableComponentModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: TreeTableComponentModule, declarations: [TreeTableComponent], imports: [CommonModule, TreeTableModule, PipesModule, TranslateModule, FormsModule, TableComponentModule], exports: [TreeTableComponent] });
|
|
197
|
+
TreeTableComponentModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TreeTableComponentModule, imports: [CommonModule, TreeTableModule, PipesModule, TranslateModule, FormsModule, TableComponentModule] });
|
|
198
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TreeTableComponentModule, decorators: [{
|
|
199
|
+
type: NgModule,
|
|
200
|
+
args: [{
|
|
201
|
+
imports: [CommonModule, TreeTableModule, PipesModule, TranslateModule, FormsModule, TableComponentModule],
|
|
202
|
+
exports: [TreeTableComponent],
|
|
203
|
+
declarations: [TreeTableComponent]
|
|
204
|
+
}]
|
|
205
|
+
}] });
|
|
206
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnNwYXJrLWNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvdHJlZS10YWJsZS90cmVlLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2luc3BhcmstY29tcG9uZW50cy9zcmMvY29tcG9uZW50cy90cmVlLXRhYmxlL3RyZWUtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxlQUFlLEVBQ2YsWUFBWSxFQUNaLEtBQUssRUFDTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFFVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDOUQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBR3JELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7Ozs7O0FBVWxELE1BQU0sT0FBTyxrQkFBa0I7SUFOL0I7UUFRVyxZQUFPLEdBQW1CLEVBQUUsQ0FBQztRQUM3QixXQUFNLEdBQUcsRUFBRSxDQUFDO1FBVVosc0JBQWlCLEdBQUcsSUFBSSxDQUFDO1FBTXhCLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUV2QyxvQkFBZSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3hELGNBQVMs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QUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkF3Qk0sU0FBUztzQkFBckIsS0FBSzs7QUE2SFIsTUFBTSxPQUFPLHdCQUF3Qjs7cUhBQXhCLHdCQUF3QjtzSEFBeEIsd0JBQXdCLGlCQWxMeEIsa0JBQWtCLGFBOEtuQixZQUFZLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLG9CQUFvQixhQTlLN0Ysa0JBQWtCO3NIQWtMbEIsd0JBQXdCLFlBSnpCLFlBQVksRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsb0JBQW9COzJGQUk3Rix3QkFBd0I7a0JBTHBDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxvQkFBb0IsQ0FBQztvQkFDekcsT0FBTyxFQUFFLENBQUMsa0JBQWtCLENBQUM7b0JBQzdCLFlBQVksRUFBRSxDQUFDLGtCQUFrQixDQUFDO2lCQUNuQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBOZ01vZHVsZSxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFRlbXBsYXRlUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0luc3BhcmtUZW1wbGF0ZX0gZnJvbSAnLi4vaW5zcGFyay5zaGFyZWQnO1xuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGV9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtUYWJsZUNvbXBvbmVudE1vZHVsZX0gZnJvbSAnLi4vdGFibGUvdGFibGUuY29tcG9uZW50JztcbmltcG9ydCB7UGlwZXNNb2R1bGV9IGZyb20gJy4uLy4uL3BpcGVzL3BpcGVzLm1vZHVsZSc7XG5pbXBvcnQge1RhYmxlUm93RGF0YX0gZnJvbSAnLi4vLi4vdXRpbHMvaHlicmlkL3ByaW1lLXRhYmxlL3RhYmxlLXJvdy1kYXRhLm1vZGVsJztcbmltcG9ydCB7VGFibGVDb2x1bW5zfSBmcm9tICcuLi8uLi9pbnRlcmZhY2UnO1xuaW1wb3J0IHtUcmVlVGFibGVNb2R1bGV9IGZyb20gJ3ByaW1lbmcvdHJlZXRhYmxlJztcblxuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2luLXRyZWUtdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vdHJlZS10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RyZWUtdGFibGUuY29tcG9uZW50LnNjc3MnXSxcbiAgZW50cnlDb21wb25lbnRzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgVHJlZVRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG5cbiAgQElucHV0KCkgY29sdW1uczogVGFibGVDb2x1bW5zW10gPSBbXTtcbiAgQElucHV0KCkgdmFsdWVzID0gW107XG4gIEBJbnB1dCgpIHNjcm9sbEhlaWdodDogc3RyaW5nO1xuICBASW5wdXQoKSBzY3JvbGxhYmxlOiBib29sZWFuO1xuICBASW5wdXQoKSBzZWxlY3Rpb25Nb2RlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGVycm9yOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNsYXNzOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHJlcXVpcmVkOiBib29sZWFuO1xuICBASW5wdXQoKSBzdHlsZTogYW55O1xuICBASW5wdXQoKSB0b29sYmFyOiBhbnk7XG4gIEBJbnB1dCgpIGNoZWNrYm94U2VsZWN0aW9uID0gdHJ1ZTtcbiAgQElucHV0KCkgYWN0aXZlO1xuICBASW5wdXQoKSBzb3J0RmllbGQ7XG4gIEBJbnB1dCgpIGlzQXNjZW5kaW5nO1xuICBASW5wdXQoKSBkYXRhS2V5O1xuXG4gIEBPdXRwdXQoKSBhY3RpdmVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQENvbnRlbnRDaGlsZHJlbihJbnNwYXJrVGVtcGxhdGUpIHRlbXBsYXRlczogUXVlcnlMaXN0PEluc3BhcmtUZW1wbGF0ZT47XG4gIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgYWRkQWN0aW9uOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgY3N2QWN0aW9uOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgc2F2ZUFjdGlvbjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGNvbGxhcHNlQWN0aW9uOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgcmVtb3ZlQWN0aW9uOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgdW5saW5rQWN0aW9uOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgZ3JvdXBFZGl0QWN0aW9uOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgZ3JvdXBBZGRBY3Rpb246IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgaGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIGJvZHlUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgbG9hZGluZ0JvZHlUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgY2FwdGlvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBmcm96ZW5Sb3dzVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIGZvb3RlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBzdW1tYXJ5VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIGNvbEdyb3VwVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIGV4cGFuZGVkUm93VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIGZyb3plbkhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBmcm96ZW5Cb2R5VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIGZyb3plbkZvb3RlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBmcm96ZW5Db2xHcm91cFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBlbXB0eU1lc3NhZ2VUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgcGFnaW5hdG9yTGVmdFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBwYWdpbmF0b3JSaWdodFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICB2YWx1ZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBzZWFyY2hUZXh0OiBzdHJpbmc7XG4gIHJvd0luZGV4ID0gMDtcbiAgaXNDb2xsYXBzZSA9IHRydWU7XG4gIF9zZWxlY3Rpb24gPSBudWxsO1xuXG4gIEBJbnB1dCgpIHNldCBzZWxlY3Rpb24odmFsKSB7XG4gICAgdGhpcy5fc2VsZWN0aW9uID0gdmFsO1xuICB9XG5cbiAgZ2V0IHNlbGVjdGlvblZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3Rpb247XG4gIH1cblxuICBzZXQgc2VsZWN0aW9uVmFsdWUodmFsKSB7XG4gICAgdGhpcy5fc2VsZWN0aW9uID0gdmFsO1xuICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodmFsKTtcbiAgfVxuXG4gIHB1YmxpYyBpc1Jvd0FjdGl2ZShyb3c6IFRhYmxlUm93RGF0YSkge1xuICAgIHJldHVybiB0aGlzLmFjdGl2ZSAmJiB0aGlzLmFjdGl2ZS5pZCA9PT0gcm93LmlkO1xuICB9XG5cbiAgcHVibGljIHZpc2libGVDb2x1bW5zKCk6IFRhYmxlQ29sdW1uc1tdIHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5zLmZpbHRlcihjb2x1bW4gPT4gIWNvbHVtbi5pc0hpZGRlbik7XG4gIH1cblxuICBwdWJsaWMgY29sdW1uc0NoYW5nZShkYXRhKSB7XG4gICAgZGF0YS5jb2x1bW4uaXNIaWRkZW4gPSAhZGF0YS5ldmVudDtcbiAgfVxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgdGhpcy50ZW1wbGF0ZXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgc3dpdGNoIChpdGVtLmdldFR5cGUoKSkge1xuICAgICAgICBjYXNlICdjYXB0aW9uJzpcbiAgICAgICAgICB0aGlzLmNhcHRpb25UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnaGVhZGVyJzpcbiAgICAgICAgICB0aGlzLmhlYWRlclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdib2R5JzpcbiAgICAgICAgICB0aGlzLmJvZHlUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3ZhbHVlJzpcbiAgICAgICAgICB0aGlzLnZhbHVlVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2xvYWRpbmdib2R5JzpcbiAgICAgICAgICB0aGlzLmxvYWRpbmdCb2R5VGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2Zvb3Rlcic6XG4gICAgICAgICAgdGhpcy5mb290ZXJUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnc3VtbWFyeSc6XG4gICAgICAgICAgdGhpcy5zdW1tYXJ5VGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2NvbGdyb3VwJzpcbiAgICAgICAgICB0aGlzLmNvbEdyb3VwVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3Jvd2V4cGFuc2lvbic6XG4gICAgICAgICAgdGhpcy5leHBhbmRlZFJvd1RlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdmcm96ZW5yb3dzJzpcbiAgICAgICAgICB0aGlzLmZyb3plblJvd3NUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnZnJvemVuaGVhZGVyJzpcbiAgICAgICAgICB0aGlzLmZyb3plbkhlYWRlclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdmcm96ZW5ib2R5JzpcbiAgICAgICAgICB0aGlzLmZyb3plbkJvZHlUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnZnJvemVuZm9vdGVyJzpcbiAgICAgICAgICB0aGlzLmZyb3plbkZvb3RlclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdmcm96ZW5jb2xncm91cCc6XG4gICAgICAgICAgdGhpcy5mcm96ZW5Db2xHcm91cFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdlbXB0eW1lc3NhZ2UnOlxuICAgICAgICAgIHRoaXMuZW1wdHlNZXNzYWdlVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3BhZ2luYXRvcmxlZnQnOlxuICAgICAgICAgIHRoaXMucGFnaW5hdG9yTGVmdFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdwYWdpbmF0b3JyaWdodCc6XG4gICAgICAgICAgdGhpcy5wYWdpbmF0b3JSaWdodFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGNvbGxhcHNlKGV2ZW50LCBkdCkge1xuICAgIHRoaXMudmFsdWVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgIHRoaXMudG9nZ2xlQ29sbGFwc2Uobm9kZSwgdGhpcy5pc0NvbGxhcHNlKTtcbiAgICB9KTtcbiAgICB0aGlzLmlzQ29sbGFwc2UgPSAhdGhpcy5pc0NvbGxhcHNlO1xuICAgIGR0LmZpbHRlckdsb2JhbCh0aGlzLnNlYXJjaFRleHQsICdjb250YWlucycpO1xuICB9XG5cbiAgdG9nZ2xlQ29sbGFwc2Uobm9kZTogYW55LCBpc0NvbGxhcHNlZDogYm9vbGVhbikge1xuXG4gICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgIG5vZGUuZXhwYW5kZWQgPSBpc0NvbGxhcHNlZDtcbiAgICAgIGZvciAoY29uc3QgY24gb2Ygbm9kZS5jaGlsZHJlbikge1xuICAgICAgICBpZiAoY24pIHtcbiAgICAgICAgICB0aGlzLnRvZ2dsZUNvbGxhcHNlKGNuLCBpc0NvbGxhcHNlZCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxufVxuXG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFRyZWVUYWJsZU1vZHVsZSwgUGlwZXNNb2R1bGUsIFRyYW5zbGF0ZU1vZHVsZSwgRm9ybXNNb2R1bGUsIFRhYmxlQ29tcG9uZW50TW9kdWxlXSxcbiAgZXhwb3J0czogW1RyZWVUYWJsZUNvbXBvbmVudF0sXG4gIGRlY2xhcmF0aW9uczogW1RyZWVUYWJsZUNvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgVHJlZVRhYmxlQ29tcG9uZW50TW9kdWxlIHtcbn1cbiIsIjxwLXRyZWVUYWJsZSAjZHRcbiAgICAgICAgICAgICBbKHNlbGVjdGlvbildPVwic2VsZWN0aW9uVmFsdWVcIlxuICAgICAgICAgICAgIFtjbGFzc109XCJjbGFzc1wiXG4gICAgICAgICAgICAgW2NvbHVtbnNdPVwidmlzaWJsZUNvbHVtbnMoKVwiXG4gICAgICAgICAgICAgW3Jlc2l6YWJsZUNvbHVtbnNdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgW3Njcm9sbEhlaWdodF09XCJzY3JvbGxIZWlnaHRcIlxuICAgICAgICAgICAgIFtzY3JvbGxhYmxlXT1cInNjcm9sbGFibGVcIlxuICAgICAgICAgICAgIFtzZWxlY3Rpb25Nb2RlXT1cInNlbGVjdGlvbk1vZGVcIlxuICAgICAgICAgICAgIFtzb3J0RmllbGRdPVwic29ydEZpZWxkIHx8ICdpZCdcIlxuICAgICAgICAgICAgIFtzb3J0T3JkZXJdPVwiaXNBc2NlbmRpbmcgPyAxIDogLTFcIlxuICAgICAgICAgICAgIFtzdHlsZV09XCJzdHlsZVwiXG4gICAgICAgICAgICAgW3ZhbHVlXT1cInZhbHVlc1wiXG4gICAgICAgICAgICAgY29sdW1uUmVzaXplTW9kZT1cImV4cGFuZFwiXG4+XG4gIDxuZy10ZW1wbGF0ZSBsZXQtY29sdW1ucyBwVGVtcGxhdGU9XCJjb2xncm91cFwiPlxuICAgIDxjb2xncm91cD5cbiAgICAgIDxjb2wgKm5nSWY9XCJjaGVja2JveFNlbGVjdGlvblwiIHN0eWxlPVwid2lkdGg6NDRweDtcIj5cbiAgICAgIDxjb2wgKm5nRm9yPVwibGV0IGNvbCBvZiB2aXNpYmxlQ29sdW1ucygpXCIgW3N0eWxlLndpZHRoXT1cImNvbC53aWR0aCA/IGNvbC53aWR0aCA6ICcxMHB4J1wiPlxuICAgIDwvY29sZ3JvdXA+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSBsZXQtY29sdW1ucyBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cbiAgICA8dHI+XG4gICAgICA8dGggKm5nSWY9XCJjaGVja2JveFNlbGVjdGlvblwiPlxuICAgICAgICA8cC10cmVlVGFibGVIZWFkZXJDaGVja2JveD48L3AtdHJlZVRhYmxlSGVhZGVyQ2hlY2tib3g+XG4gICAgICA8L3RoPlxuICAgICAgPHRoICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uczsgbGV0IGkgPSBpbmRleFwiIFt0dFNvcnRhYmxlQ29sdW1uXT1cImNvbC5maWVsZFwiIGNsYXNzPVwidS1wb3NpdGlvbi1yZWxhdGl2ZVwiXG4gICAgICAgICAgdHRSZXNpemFibGVDb2x1bW4+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ1aS10cmVldGFibGUtdGhlYWQtdGl0bGVcIiB0aXRsZT1cInt7Y29sLmxhYmVsIHwgdHJhbnNsYXRlfX1cIj5cbiAgICAgICAgICB7e2NvbC5sYWJlbCB8IHRyYW5zbGF0ZX19XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8cC10cmVlVGFibGVTb3J0SWNvbiBbZmllbGRdPVwiY29sLmZpZWxkXCIgY2xhc3M9XCJ1aS1zb3J0YWJsZS1jb2x1bW4tYnV0dG9uc1wiPjwvcC10cmVlVGFibGVTb3J0SWNvbj5cbiAgICAgIDwvdGg+XG4gICAgPC90cj5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8bmctdGVtcGxhdGUgbGV0LWNvbHVtbnM9XCJjb2x1bW5zXCIgbGV0LXJvd0RhdGE9XCJyb3dEYXRhXCIgbGV0LXJvd05vZGUgcFRlbXBsYXRlPVwiYm9keVwiPlxuICAgIDx0ciBbbmdDbGFzc109XCJ7cm93X2FjdGl2ZTogaXNSb3dBY3RpdmUocm93RGF0YSl9XCIgW3R0U2VsZWN0YWJsZVJvd109XCJyb3dOb2RlXCIgY2xhc3M9XCJyb3dcIj5cbiAgICAgIDx0ZCAqbmdJZj1cImNoZWNrYm94U2VsZWN0aW9uXCI+XG4gICAgICAgIDxwLXRyZWVUYWJsZUNoZWNrYm94IFt2YWx1ZV09XCJyb3dOb2RlXCI+PC9wLXRyZWVUYWJsZUNoZWNrYm94PlxuICAgICAgPC90ZD5cbiAgICAgIDx0ZCAoY2xpY2spPVwiYWN0aXZlQ2hhbmdlLmVtaXQocm93RGF0YSlcIiAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnM7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgIGNsYXNzPVwiX3Utb3ZlcmZsb3ctdmlzaWJsZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBmbGV4LXdyYXA6IG5vd3JhcDtcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiaSA9PSAwXCI+XG4gICAgICAgICAgICA8cC10cmVlVGFibGVUb2dnbGVyICBbcm93Tm9kZV09XCJyb3dOb2RlXCIgc3R5bGU9XCJhbGlnbi1zZWxmOiBjZW50ZXI7XCI+PC9wLXRyZWVUYWJsZVRvZ2dsZXI+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsgJ3VpLXRyZWV0YWJsZS10Ym9keS1jb250ZW50X2hhcy10b2dnbGVyICc6IGkgPT0gMCB9XCJcbiAgICAgICAgICAgICAgIGNsYXNzPVwidWktdHJlZXRhYmxlLXRib2R5LWNvbnRlbnQgY2VsbC1jb250ZW50X2hvdmVyXCJcbiAgICAgICAgICAgICAgIHN0eWxlPVwiZmxleC1ncm93OiAxO1wiXG4gICAgICAgICAgICAgICB0aXRsZT1cInt7cm93RGF0YSB8IHByb3BlcnR5VmFsdWU6IGNvbC5maWVsZH19XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXZhbHVlVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgPGkgKm5nSWY9XCJyb3dEYXRhLmljb24gJiYgaSA9PSAwXCIgW25nQ2xhc3NdPVwicm93RGF0YS5pY29uXCIgY2xhc3M9XCJ1LW1hcmdpbi1yaWdodC10aW55XCI+PC9pPlxuICAgICAgICAgICAgICB7e3Jvd0RhdGEgfCBwcm9wZXJ0eVZhbHVlOiBjb2wuZmllbGR9fVxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ2YWx1ZVRlbXBsYXRlOyBjb250ZXh0OiB7JGltcGxpY2l0OiB7IGRhdGE6IHJvd0RhdGEsIGNvbDogY29sfX1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3RkPlxuICAgIDwvdHI+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPG5nLXRlbXBsYXRlICpuZ0lmPVwidG9vbGJhclwiIHBUZW1wbGF0ZT1cImNhcHRpb25cIj5cblxuICAgIDxkaXYgY2xhc3M9XCJvLWdyaWQgby1ncmlkX25vLWd1dHRlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImMtdHJlZS10YWJsZV9fdG9vbGJhci1jb250ZW50IHUtZGlzcGxheS1pbmxpbmUtZmxleFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYy1mb3JtIGMtZm9ybV9pbmxpbmUgdS1kaXNwbGF5LWlubGluZS1ibG9ja1wiPlxuICAgICAgICAgIDxmb3JtIGNsYXNzPVwiYy1sYWJlbFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LXdyYXBwZXIgdS1tYXJnaW4tcmlnaHQtdGlueVwiPlxuICAgICAgICAgICAgICA8aW5wdXQgI3NlYXJjaFRleHRJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cImR0LmZpbHRlckdsb2JhbCgkZXZlbnQudGFyZ2V0LnZhbHVlLCAnY29udGFpbnMnKVwiXG4gICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiXG4gICAgICAgICAgICAgICAgICAgICBhdXRvZm9jdXM9XCJcIlxuICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2gtYm94IGMtaW5wdXQgYy1pbnB1dF9zbWFsbCBuZy1wcmlzdGluZSBuZy12YWxpZCBuZy1zY29wZSBuZy1lbXB0eSBuZy10b3VjaGVkXCJcbiAgICAgICAgICAgICAgICAgICAgIHBJbnB1dFRleHRcbiAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3soJ1NIQVJFRC5TRUFSQ0gnIHwgdHJhbnNsYXRlKSArICc6J319XCJcbiAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInBhZGRpbmctcmlnaHQ6IDI4cHhcIlxuICAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIxXCJcbiAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJzZWFyY2hcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImR0LmZpbHRlckdsb2JhbCgkZXZlbnQudGFyZ2V0LnZhbHVlLCAnY29udGFpbnMnKVwiIGNsYXNzPVwiYnV0dG9uLXJlc2V0XCIgdHlwZT1cInJlc2V0XCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCInUmVzZXQnIHwgdHJhbnNsYXRlXCI+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1jbG9zZVwiPjwvaT5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYy1idG4gYy1idG5fYm9yZGVyLWZyZWUgYy1idG5fc21hbGxcIj5cbiAgICAgICAgICA8aW4tdGFibGUtY29sdW1ucy1tdWx0aXNlbGVjdCAoY29sdW1uc0NoYW5nZSk9XCJjb2x1bW5zQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2x1bW5zXT1cImNvbHVtbnNcIj48L2luLXRhYmxlLWNvbHVtbnMtbXVsdGlzZWxlY3Q+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cImFkZEFjdGlvbi5lbWl0KCRldmVudClcIiAqbmdJZj1cInRvb2xiYXIuYWRkXCIgW2Rpc2FibGVkXT1cInRvb2xiYXIuYWRkLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImMtYnRuIGMtYnRuX2JvcmRlci1mcmVlIGMtYnRuX3NtYWxsXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtcGx1c1wiIFt0aXRsZV09XCJ0b29sYmFyLmFkZC50aXRsZSB8fCAn0JTQvtCx0LDQstC40YLRjCdcIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cImdyb3VwQWRkQWN0aW9uLmVtaXQoJGV2ZW50KVwiICpuZ0lmPVwidG9vbGJhci5ncm91cEFkZFwiIFtkaXNhYmxlZF09XCJ0b29sYmFyLmdyb3VwQWRkLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImMtYnRuIGMtYnRuX2JvcmRlci1mcmVlIGMtYnRuX3NtYWxsXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZm9sZGVyXCIgW3RpdGxlXT1cInRvb2xiYXIuZ3JvdXBBZGQudGl0bGUgfHwgJ9CU0L7QsdCw0LLQuNGC0Ywg0LPRgNGD0L/Qv9GDJ1wiPjwvaT5cbiAgICAgICAgPC9idXR0b24+XG5cblxuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJzYXZlQWN0aW9uLmVtaXQoJGV2ZW50KVwiICpuZ0lmPVwidG9vbGJhci5zYXZlXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwidG9vbGJhci5zYXZlLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImMtYnRuIGMtYnRuX3ByaW1hcnkgYy1idG5fc21hbGxcIlxuICAgICAgICAgICAgICAgIHRpdGxlPVwie3snU2F2ZScgfCB0cmFuc2xhdGV9fVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eydTYXZlJyB8IHRyYW5zbGF0ZX19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJncm91cEVkaXRBY3Rpb24uZW1pdCgkZXZlbnQpXCIgKm5nSWY9XCJ0b29sYmFyLmdyb3VwRWRpdCAmJiB0b29sYmFyLmdyb3VwRWRpdC5hY3RpdmVcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ0b29sYmFyLmdyb3VwRWRpdC5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjLWJ0biBjLWJ0bl9ib3JkZXItZnJlZSBjLWJ0bl9zbWFsbFwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtcGVuY2lsLXNxdWFyZS1vXCIgdGl0bGU9XCJ7eydncm91cEVkaXQnIHwgdHJhbnNsYXRlfX1cIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJyZW1vdmVBY3Rpb24uZW1pdCgkZXZlbnQpXCIgKm5nSWY9XCJ0b29sYmFyLnJlbW92ZSAmJiB0b29sYmFyLnJlbW92ZS5hY3RpdmVcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ0b29sYmFyLnJlbW92ZS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjLWJ0biBjLWJ0bl9ib3JkZXItZnJlZSBjLWJ0bl9zbWFsbFwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdHJhc2hcIiBbdGl0bGVdPVwidG9vbGJhci5yZW1vdmU/LnRpdGxlIHx8ICfQo9C00LDQu9C40YLRjCdcIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJ1bmxpbmtBY3Rpb24uZW1pdCgkZXZlbnQpXCIgKm5nSWY9XCJ0b29sYmFyLnVubGlua1wiIFtkaXNhYmxlZF09XCJ0b29sYmFyLnVubGluay5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjLWJ0biBjLWJ0bl9ib3JkZXItZnJlZSBjLWJ0bl9zbWFsbFwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdW5saW5rXCIgdGl0bGU9XCJ7eydEZXRhY2ggdGFnIGZyb20gc2VsZWN0ZWQgaXRlbXMnIHwgdHJhbnNsYXRlfX1cIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJjc3ZBY3Rpb24uZW1pdCgkZXZlbnQpXCIgKm5nSWY9XCJ0b29sYmFyLmNzdlwiIFtkaXNhYmxlZF09XCJ0b29sYmFyLmNzdi5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjLWJ0biBjLWJ0bl9ib3JkZXItZnJlZSBjLWJ0bl9zbWFsbFwiXG4gICAgICAgID5cbiAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1maWxlLWNzdlwiIHRpdGxlPVwi0KHQvtGF0YDQsNC90LjRgtGMINC60LDQuiBDU1ZcIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uICAqbmdJZj1cInRvb2xiYXIuY29sbGFwc2VcIlxuICAgICAgICAgICAgICAgICBjbGFzcz1cImMtYnRuIGMtYnRuX3NtYWxsIGMtYnRuX3N2Zy0yNCBjLWljb24gYy1pY29uX3N2ZyBjLWljb25fc3ZnLTI0IGMtYnRuX2JvcmRlci1mcmVlXCJcbiAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbGxhcHNlKCRldmVudCwgZHQpXCJcbiAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyhpc0NvbGxhcHNlID8gJ0V4cGFuZCBhbGwnIDogJ0NvbGxhcHNlIGFsbCcpIHwgdHJhbnNsYXRlfX1cIj5cbiAgICAgICAgICA8c3ZnICpuZ0lmPVwiaXNDb2xsYXBzZVwiICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNMjAgMkg0djJoMTZWMnpNNCAyMHYyaDE2di0ySDR6TTEyIDVsNSA2SDdsNS02ek0xNyAxM2wtNSA2LTUtNmgxMHpcIi8+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPHN2ZyAqbmdJZj1cIiFpc0NvbGxhcHNlXCIgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiY3VycmVudENvbG9yXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNMTcgM2wtNSA2LTUtNmgxMHpNNCAxM3YtMmgxNnYySDR6bTggMmw1IDZIN2w1LTZ6XCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiLz5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvcC10cmVlVGFibGU+XG4iXX0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public_api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zcGFyay1pbnNwYXJrLWNvbXBvbmVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnNwYXJrLWNvbXBvbmVudHMvc3JjL2luc3BhcmstaW5zcGFyay1jb21wb25lbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvaW5zcGFyay1jb21wb25lbnRzL3NyYy9pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TWVudUl0ZW19IGZyb20gJ3ByaW1lbmcvYXBpJztcblxuXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlQ2VsbERhdGEge1xuICBsYWJlbDogc3RyaW5nO1xuICBzdGF0dXM6ICdzdWNjZXNzJyB8ICdlcnJvcicgfCAnd2FybmluZycgfCAnY3JpdGljYWwnIHwgJ2ZhbHNldmFsdWUnO1xuICBpc0VkaXQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVDb2x1bW5zIHtcblxuICBsYWJlbDogc3RyaW5nO1xuICBmaWVsZDogc3RyaW5nO1xuICBzaXplOiBzdHJpbmc7XG4gIHdpZHRoPzogc3RyaW5nO1xuICBpc0hpZGRlbj86IGJvb2xlYW47XG4gIGlzU2Vjb25kYXJ5PzogYm9vbGVhbjtcbiAgaXNSZXF1aXJlZD86IGJvb2xlYW47XG4gIGdyb3VwS2V5Pzogc3RyaW5nW107XG4gIGdyb3VwT3JkZXI/OiAobnVtYmVyIHwgc3RyaW5nKVtdO1xuICB0cmFuc2xhdGFibGU/OiBib29sZWFuO1xuICBpc0ZpbHRlcmluZz86IGJvb2xlYW47XG4gIGNvbF9pbnZpc2libGU/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEluc3BhcmtNZW51SXRlbSBleHRlbmRzIE1lbnVJdGVtIHtcbiAgc3ZnPzogc3RyaW5nO1xufVxuXG5cbmV4cG9ydCB0eXBlIENpcmNsZU1vZGUgPSAnc3VjY2VzcycgfCAnd2FybmluZycgfCAnZXJyb3InIHwgJ2ZhbHNldmFsdWUnIHwgJ3ByaW1hcnknIHwgJ25vbmUnIHwgJ2NyaXRpY2FsJyB8ICdpbnZlcnNlJyB8ICdibGFjayc7XG5leHBvcnQgdHlwZSBDaXJjbGVTaXplID0gJ21pbmknIHwgJ3NtYWxsJyB8ICdub3JtYWwnIHwgJ2JpZyc7XG4iXX0=
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { PropertyValuePipe } from './propertyValue.pipe';
|
|
3
|
+
import { FormatNumToTime, InDate, NumToShortWeekdayPipe, ShortToFullWeekdayPipe } from './time.pipe';
|
|
4
|
+
import { SafeUrlPipe } from './safeUrl.pipe';
|
|
5
|
+
import { SortByPipe } from "./sort-by.pipe";
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class PipesModule {
|
|
8
|
+
}
|
|
9
|
+
PipesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PipesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
10
|
+
PipesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: PipesModule, declarations: [PropertyValuePipe, NumToShortWeekdayPipe, FormatNumToTime, InDate, ShortToFullWeekdayPipe, SafeUrlPipe, SortByPipe], exports: [PropertyValuePipe, NumToShortWeekdayPipe, FormatNumToTime, InDate, ShortToFullWeekdayPipe, SafeUrlPipe, SortByPipe] });
|
|
11
|
+
PipesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PipesModule });
|
|
12
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PipesModule, decorators: [{
|
|
13
|
+
type: NgModule,
|
|
14
|
+
args: [{
|
|
15
|
+
exports: [PropertyValuePipe, NumToShortWeekdayPipe, FormatNumToTime, InDate, ShortToFullWeekdayPipe, SafeUrlPipe, SortByPipe],
|
|
16
|
+
declarations: [PropertyValuePipe, NumToShortWeekdayPipe, FormatNumToTime, InDate, ShortToFullWeekdayPipe, SafeUrlPipe, SortByPipe]
|
|
17
|
+
}]
|
|
18
|
+
}] });
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW5zcGFyay1jb21wb25lbnRzL3NyYy9waXBlcy9waXBlcy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RCxPQUFPLEVBQUMsZUFBZSxFQUFFLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxzQkFBc0IsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUNuRyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDOztBQU0xQyxNQUFNLE9BQU8sV0FBVzs7d0dBQVgsV0FBVzt5R0FBWCxXQUFXLGlCQUZQLGlCQUFpQixFQUFFLHFCQUFxQixFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsc0JBQXNCLEVBQUUsV0FBVyxFQUFFLFVBQVUsYUFEdkgsaUJBQWlCLEVBQUUscUJBQXFCLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxzQkFBc0IsRUFBRSxXQUFXLEVBQUUsVUFBVTt5R0FHakgsV0FBVzsyRkFBWCxXQUFXO2tCQUp2QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLGlCQUFpQixFQUFFLHFCQUFxQixFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsc0JBQXNCLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQztvQkFDN0gsWUFBWSxFQUFFLENBQUMsaUJBQWlCLEVBQUUscUJBQXFCLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxzQkFBc0IsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDO2lCQUNuSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtQcm9wZXJ0eVZhbHVlUGlwZX0gZnJvbSAnLi9wcm9wZXJ0eVZhbHVlLnBpcGUnO1xuaW1wb3J0IHtGb3JtYXROdW1Ub1RpbWUsIEluRGF0ZSwgTnVtVG9TaG9ydFdlZWtkYXlQaXBlLCBTaG9ydFRvRnVsbFdlZWtkYXlQaXBlfSBmcm9tICcuL3RpbWUucGlwZSc7XG5pbXBvcnQge1NhZmVVcmxQaXBlfSBmcm9tICcuL3NhZmVVcmwucGlwZSc7XG5pbXBvcnQge1NvcnRCeVBpcGV9IGZyb20gXCIuL3NvcnQtYnkucGlwZVwiO1xuXG5ATmdNb2R1bGUoe1xuICBleHBvcnRzOiBbUHJvcGVydHlWYWx1ZVBpcGUsIE51bVRvU2hvcnRXZWVrZGF5UGlwZSwgRm9ybWF0TnVtVG9UaW1lLCBJbkRhdGUsIFNob3J0VG9GdWxsV2Vla2RheVBpcGUsIFNhZmVVcmxQaXBlLCBTb3J0QnlQaXBlXSxcbiAgZGVjbGFyYXRpb25zOiBbUHJvcGVydHlWYWx1ZVBpcGUsIE51bVRvU2hvcnRXZWVrZGF5UGlwZSwgRm9ybWF0TnVtVG9UaW1lLCBJbkRhdGUsIFNob3J0VG9GdWxsV2Vla2RheVBpcGUsIFNhZmVVcmxQaXBlLCBTb3J0QnlQaXBlXVxufSlcbmV4cG9ydCBjbGFzcyBQaXBlc01vZHVsZSB7XG59XG4iXX0=
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Pipe } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class PropertyValuePipe {
|
|
4
|
+
transform(value, name) {
|
|
5
|
+
if (Array.isArray(value) || !(value instanceof Object) || !name) {
|
|
6
|
+
return value;
|
|
7
|
+
}
|
|
8
|
+
else if (name.indexOf('.') > -1) {
|
|
9
|
+
const splitName = name.split(/\.(.+)/, 2);
|
|
10
|
+
return this.transform(value[splitName[0]], splitName[1]);
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
return value[name];
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
PropertyValuePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PropertyValuePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
18
|
+
PropertyValuePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: PropertyValuePipe, name: "propertyValue" });
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PropertyValuePipe, decorators: [{
|
|
20
|
+
type: Pipe,
|
|
21
|
+
args: [{
|
|
22
|
+
name: 'propertyValue'
|
|
23
|
+
}]
|
|
24
|
+
}] });
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHlWYWx1ZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW5zcGFyay1jb21wb25lbnRzL3NyYy9waXBlcy9wcm9wZXJ0eVZhbHVlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLElBQUksRUFBZ0IsTUFBTSxlQUFlLENBQUM7O0FBS2xELE1BQU0sT0FBTyxpQkFBaUI7SUFDNUIsU0FBUyxDQUFDLEtBQVUsRUFBRSxJQUFZO1FBQ2hDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxZQUFZLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQy9ELE9BQU8sS0FBSyxDQUFDO1NBQ2Q7YUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7WUFDakMsTUFBTSxTQUFTLEdBQWEsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDcEQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMxRDthQUFNO1lBQ0wsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDcEI7SUFDSCxDQUFDOzs4R0FWVSxpQkFBaUI7NEdBQWpCLGlCQUFpQjsyRkFBakIsaUJBQWlCO2tCQUg3QixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxlQUFlO2lCQUN0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UGlwZSwgUGlwZVRyYW5zZm9ybX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ3Byb3BlcnR5VmFsdWUnXG59KVxuZXhwb3J0IGNsYXNzIFByb3BlcnR5VmFsdWVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybSh2YWx1ZTogYW55LCBuYW1lOiBzdHJpbmcpOiBhbnkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSB8fCAhKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB8fCAhbmFtZSkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0gZWxzZSBpZiAobmFtZS5pbmRleE9mKCcuJykgPiAtMSkge1xuICAgICAgY29uc3Qgc3BsaXROYW1lOiBzdHJpbmdbXSA9IG5hbWUuc3BsaXQoL1xcLiguKykvLCAyKTtcbiAgICAgIHJldHVybiB0aGlzLnRyYW5zZm9ybSh2YWx1ZVtzcGxpdE5hbWVbMF1dLCBzcGxpdE5hbWVbMV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdmFsdWVbbmFtZV07XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// Angular
|
|
2
|
+
import { Pipe } from '@angular/core';
|
|
3
|
+
import { DomSanitizer } from '@angular/platform-browser';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/platform-browser";
|
|
6
|
+
/**
|
|
7
|
+
* Sanitize HTML
|
|
8
|
+
*/
|
|
9
|
+
export class SafeUrlPipe {
|
|
10
|
+
/**
|
|
11
|
+
* Pipe Constructor
|
|
12
|
+
*
|
|
13
|
+
* @param _sanitizer: DomSanitezer
|
|
14
|
+
*/
|
|
15
|
+
// tslint:disable-next-line
|
|
16
|
+
constructor(_sanitizer) {
|
|
17
|
+
this._sanitizer = _sanitizer;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Transform
|
|
21
|
+
*
|
|
22
|
+
* @param value: string
|
|
23
|
+
*/
|
|
24
|
+
transform(value) {
|
|
25
|
+
return this._sanitizer.bypassSecurityTrustResourceUrl(value);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
SafeUrlPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SafeUrlPipe, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
29
|
+
SafeUrlPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: SafeUrlPipe, name: "safeUrl" });
|
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SafeUrlPipe, decorators: [{
|
|
31
|
+
type: Pipe,
|
|
32
|
+
args: [{
|
|
33
|
+
name: 'safeUrl'
|
|
34
|
+
}]
|
|
35
|
+
}], ctorParameters: function () { return [{ type: i1.DomSanitizer }]; } });
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZVVybC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW5zcGFyay1jb21wb25lbnRzL3NyYy9waXBlcy9zYWZlVXJsLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBQyxJQUFJLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBQyxZQUFZLEVBQWtCLE1BQU0sMkJBQTJCLENBQUM7OztBQUV4RTs7R0FFRztBQUlILE1BQU0sT0FBTyxXQUFXO0lBQ3RCOzs7O09BSUc7SUFDSCwyQkFBMkI7SUFDM0IsWUFBc0IsVUFBd0I7UUFBeEIsZUFBVSxHQUFWLFVBQVUsQ0FBYztJQUM5QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFNBQVMsQ0FBQyxLQUFhO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyw4QkFBOEIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvRCxDQUFDOzt3R0FqQlUsV0FBVztzR0FBWCxXQUFXOzJGQUFYLFdBQVc7a0JBSHZCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLFNBQVM7aUJBQ2hCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhclxuaW1wb3J0IHtQaXBlLCBQaXBlVHJhbnNmb3JtfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RG9tU2FuaXRpemVyLCBTYWZlUmVzb3VyY2VVcmx9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG4vKipcbiAqIFNhbml0aXplIEhUTUxcbiAqL1xuQFBpcGUoe1xuICBuYW1lOiAnc2FmZVVybCdcbn0pXG5leHBvcnQgY2xhc3MgU2FmZVVybFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgLyoqXG4gICAqIFBpcGUgQ29uc3RydWN0b3JcbiAgICpcbiAgICogQHBhcmFtIF9zYW5pdGl6ZXI6IERvbVNhbml0ZXplclxuICAgKi9cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm1cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlOiBzdHJpbmdcbiAgICovXG4gIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nKTogU2FmZVJlc291cmNlVXJsIHtcbiAgICByZXR1cm4gdGhpcy5fc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh2YWx1ZSk7XG4gIH1cbn1cbiJdfQ==
|