ngx-ode-ui 4.6.0-dev.1 → 4.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/components/datepicker/datepicker.component.mjs +148 -0
- package/esm2020/lib/components/dropdown/dropdown.component.mjs +55 -0
- package/esm2020/lib/components/ellipsis/ellipsis.component.mjs +53 -0
- package/esm2020/lib/components/form-errors/form-errors.component.mjs +35 -0
- package/esm2020/lib/components/form-field/form-field.component.mjs +24 -0
- package/esm2020/lib/components/item-tree/item-tree.component.mjs +170 -0
- package/esm2020/lib/components/lightbox/lightbox.component.mjs +70 -0
- package/esm2020/lib/components/lightbox-confirm/lightbox-confirm.component.mjs +43 -0
- package/esm2020/lib/components/list/list.component.mjs +88 -0
- package/esm2020/lib/components/list-checkable/list-checkable.component.mjs +79 -0
- package/esm2020/lib/components/message-box/message-box.component.mjs +92 -0
- package/esm2020/lib/components/message-sticker/message-sticker.component.mjs +51 -0
- package/esm2020/lib/components/mono-select/mono-select.component.mjs +83 -0
- package/esm2020/lib/components/multi-combo/multi-combo.component.mjs +166 -0
- package/esm2020/lib/components/multi-select/multi-select.component.mjs +104 -0
- package/esm2020/lib/components/panel-section/panel-section.component.mjs +23 -0
- package/esm2020/lib/components/portal/portal.component.mjs +15 -0
- package/esm2020/lib/components/push-panel/push-panel.component.mjs +43 -0
- package/esm2020/lib/components/search-input/search-input.component.mjs +87 -0
- package/esm2020/lib/components/search-toolbar/search-toolbar.component.mjs +56 -0
- package/esm2020/lib/components/side-layout/side-layout.component.mjs +23 -0
- package/esm2020/lib/components/side-panel/side-panel.component.mjs +41 -0
- package/esm2020/lib/components/spinner-cube/spinner-cube.component.mjs +31 -0
- package/esm2020/lib/components/table/pager.component.mjs +48 -0
- package/esm2020/lib/components/tooltip/tooltip.component.mjs +104 -0
- package/esm2020/lib/components/upload-files/upload-files.component.mjs +59 -0
- package/esm2020/lib/components/value-editable/simple-select.component.mjs +29 -0
- package/esm2020/lib/components/wizard/wizard.component.mjs +152 -0
- package/esm2020/lib/directives/anchor.directive.mjs +27 -0
- package/esm2020/lib/directives/drag-and-drop-files.directive.mjs +82 -0
- package/esm2020/lib/directives/dynamic-component/component-descriptor.model.mjs +15 -0
- package/esm2020/lib/directives/dynamic-component/dynamic-component.directive.mjs +58 -0
- package/esm2020/lib/directives/dynamictemplate.directive.mjs +83 -0
- package/esm2020/lib/directives/object-url.directive.mjs +28 -0
- package/esm2020/lib/ngx-ode-ui.module.mjs +282 -0
- package/esm2020/lib/pipes/bytes.pipe.mjs +20 -0
- package/esm2020/lib/pipes/filter.pipe.mjs +97 -0
- package/esm2020/lib/pipes/flattenObjArray.pipe.mjs +35 -0
- package/esm2020/lib/pipes/keys.pipe.mjs +20 -0
- package/esm2020/lib/pipes/length.pipe.mjs +17 -0
- package/esm2020/lib/pipes/limit.pipe.mjs +17 -0
- package/esm2020/lib/pipes/localizedDate.pipe.mjs +23 -0
- package/esm2020/lib/pipes/orderBy.pipe.mjs +161 -0
- package/esm2020/lib/pipes/replace.pipe.mjs +20 -0
- package/esm2020/lib/pipes/store.pipe.mjs +17 -0
- package/esm2020/lib/services/dynamicModuleImports.service.mjs +13 -0
- package/esm2020/lib/services/inputFile.service.mjs +56 -0
- package/esm2020/lib/services/labels.service.mjs +32 -0
- package/esm2020/lib/services/spinner.service.mjs +76 -0
- package/esm2020/lib/utils/math.mjs +19 -0
- package/esm2020/lib/utils/string.mjs +11 -0
- package/esm2020/lib/utils/testing.mjs +7 -0
- package/esm2020/ngx-ode-ui.mjs +5 -0
- package/esm2020/public-api.mjs +57 -0
- package/fesm2015/ngx-ode-ui.mjs +2954 -0
- package/fesm2015/ngx-ode-ui.mjs.map +1 -0
- package/fesm2020/ngx-ode-ui.mjs +2952 -0
- package/fesm2020/ngx-ode-ui.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/components/datepicker/datepicker.component.d.ts +7 -2
- package/lib/components/dropdown/dropdown.component.d.ts +3 -0
- package/lib/components/ellipsis/ellipsis.component.d.ts +4 -1
- package/lib/components/form-errors/form-errors.component.d.ts +3 -0
- package/lib/components/form-field/form-field.component.d.ts +3 -0
- package/lib/components/item-tree/item-tree.component.d.ts +5 -1
- package/lib/components/lightbox/lightbox.component.d.ts +5 -1
- package/lib/components/lightbox-confirm/lightbox-confirm.component.d.ts +3 -0
- package/lib/components/list/list.component.d.ts +5 -1
- package/lib/components/list-checkable/list-checkable.component.d.ts +5 -1
- package/lib/components/message-box/message-box.component.d.ts +8 -4
- package/lib/components/message-sticker/message-sticker.component.d.ts +3 -0
- package/lib/components/mono-select/mono-select.component.d.ts +3 -0
- package/lib/components/multi-combo/multi-combo.component.d.ts +4 -1
- package/lib/components/multi-select/multi-select.component.d.ts +3 -0
- package/lib/components/panel-section/panel-section.component.d.ts +3 -0
- package/lib/components/portal/portal.component.d.ts +3 -0
- package/lib/components/push-panel/push-panel.component.d.ts +4 -1
- package/lib/components/search-input/search-input.component.d.ts +5 -1
- package/lib/components/search-toolbar/search-toolbar.component.d.ts +3 -0
- package/lib/components/side-layout/side-layout.component.d.ts +3 -0
- package/lib/components/side-panel/side-panel.component.d.ts +4 -1
- package/lib/components/spinner-cube/spinner-cube.component.d.ts +5 -1
- package/lib/components/table/pager.component.d.ts +3 -0
- package/lib/components/tooltip/tooltip.component.d.ts +3 -0
- package/lib/components/upload-files/upload-files.component.d.ts +3 -0
- package/lib/components/value-editable/simple-select.component.d.ts +3 -0
- package/lib/components/wizard/wizard.component.d.ts +5 -0
- package/lib/directives/anchor.directive.d.ts +3 -0
- package/lib/directives/drag-and-drop-files.directive.d.ts +3 -0
- package/lib/directives/dynamic-component/dynamic-component.directive.d.ts +3 -0
- package/lib/directives/dynamictemplate.directive.d.ts +4 -1
- package/lib/directives/object-url.directive.d.ts +3 -0
- package/lib/ngx-ode-ui.module.d.ts +53 -2
- package/lib/pipes/bytes.pipe.d.ts +3 -0
- package/lib/pipes/filter.pipe.d.ts +3 -0
- package/lib/pipes/flattenObjArray.pipe.d.ts +3 -0
- package/lib/pipes/keys.pipe.d.ts +3 -0
- package/lib/pipes/length.pipe.d.ts +3 -0
- package/lib/pipes/limit.pipe.d.ts +3 -0
- package/lib/pipes/localizedDate.pipe.d.ts +3 -0
- package/lib/pipes/orderBy.pipe.d.ts +3 -0
- package/lib/pipes/replace.pipe.d.ts +8 -0
- package/lib/pipes/store.pipe.d.ts +3 -0
- package/lib/services/dynamicModuleImports.service.d.ts +3 -0
- package/lib/services/inputFile.service.d.ts +3 -0
- package/lib/services/labels.service.d.ts +3 -0
- package/lib/services/spinner.service.d.ts +4 -1
- package/package.json +29 -17
- package/public-api.d.ts +3 -0
- package/CHANGELOG.md +0 -14
- package/bundles/ngx-ode-ui.umd.js +0 -5804
- package/bundles/ngx-ode-ui.umd.js.map +0 -1
- package/bundles/ngx-ode-ui.umd.min.js +0 -17
- package/bundles/ngx-ode-ui.umd.min.js.map +0 -1
- package/esm2015/lib/components/datepicker/datepicker.component.js +0 -261
- package/esm2015/lib/components/dropdown/dropdown.component.js +0 -76
- package/esm2015/lib/components/ellipsis/ellipsis.component.js +0 -98
- package/esm2015/lib/components/form-errors/form-errors.component.js +0 -65
- package/esm2015/lib/components/form-field/form-field.component.js +0 -40
- package/esm2015/lib/components/item-tree/item-tree.component.js +0 -289
- package/esm2015/lib/components/lightbox/lightbox.component.js +0 -129
- package/esm2015/lib/components/lightbox-confirm/lightbox-confirm.component.js +0 -65
- package/esm2015/lib/components/list/list.component.js +0 -140
- package/esm2015/lib/components/list-checkable/list-checkable.component.js +0 -137
- package/esm2015/lib/components/message-box/message-box.component.js +0 -153
- package/esm2015/lib/components/message-sticker/message-sticker.component.js +0 -81
- package/esm2015/lib/components/mono-select/mono-select.component.js +0 -164
- package/esm2015/lib/components/multi-combo/multi-combo.component.js +0 -255
- package/esm2015/lib/components/multi-select/multi-select.component.js +0 -214
- package/esm2015/lib/components/panel-section/panel-section.component.js +0 -38
- package/esm2015/lib/components/portal/portal.component.js +0 -27
- package/esm2015/lib/components/push-panel/push-panel.component.js +0 -81
- package/esm2015/lib/components/search-input/search-input.component.js +0 -176
- package/esm2015/lib/components/search-toolbar/search-toolbar.component.js +0 -84
- package/esm2015/lib/components/side-layout/side-layout.component.js +0 -39
- package/esm2015/lib/components/side-panel/side-panel.component.js +0 -76
- package/esm2015/lib/components/spinner-cube/spinner-cube.component.js +0 -67
- package/esm2015/lib/components/table/pager.component.js +0 -95
- package/esm2015/lib/components/tooltip/tooltip.component.js +0 -172
- package/esm2015/lib/components/upload-files/upload-files.component.js +0 -112
- package/esm2015/lib/components/value-editable/simple-select.component.js +0 -57
- package/esm2015/lib/components/wizard/wizard.component.js +0 -225
- package/esm2015/lib/directives/anchor.directive.js +0 -34
- package/esm2015/lib/directives/drag-and-drop-files.directive.js +0 -126
- package/esm2015/lib/directives/dynamic-component/component-descriptor.model.js +0 -34
- package/esm2015/lib/directives/dynamic-component/dynamic-component.directive.js +0 -100
- package/esm2015/lib/directives/dynamictemplate.directive.js +0 -159
- package/esm2015/lib/directives/object-url.directive.js +0 -53
- package/esm2015/lib/ngx-ode-ui.module.js +0 -188
- package/esm2015/lib/pipes/bytes.pipe.js +0 -27
- package/esm2015/lib/pipes/filter.pipe.js +0 -141
- package/esm2015/lib/pipes/flattenObjArray.pipe.js +0 -52
- package/esm2015/lib/pipes/keys.pipe.js +0 -27
- package/esm2015/lib/pipes/length.pipe.js +0 -22
- package/esm2015/lib/pipes/limit.pipe.js +0 -24
- package/esm2015/lib/pipes/localizedDate.pipe.js +0 -44
- package/esm2015/lib/pipes/orderBy.pipe.js +0 -269
- package/esm2015/lib/pipes/store.pipe.js +0 -24
- package/esm2015/lib/services/dynamicModuleImports.service.js +0 -19
- package/esm2015/lib/services/inputFile.service.js +0 -80
- package/esm2015/lib/services/labels.service.js +0 -54
- package/esm2015/lib/services/spinner.service.js +0 -163
- package/esm2015/lib/utils/math.js +0 -49
- package/esm2015/lib/utils/string.js +0 -29
- package/esm2015/lib/utils/testing.js +0 -20
- package/esm2015/ngx-ode-ui.js +0 -12
- package/esm2015/public-api.js +0 -59
- package/esm5/lib/components/datepicker/datepicker.component.js +0 -292
- package/esm5/lib/components/dropdown/dropdown.component.js +0 -81
- package/esm5/lib/components/ellipsis/ellipsis.component.js +0 -106
- package/esm5/lib/components/form-errors/form-errors.component.js +0 -73
- package/esm5/lib/components/form-field/form-field.component.js +0 -41
- package/esm5/lib/components/item-tree/item-tree.component.js +0 -345
- package/esm5/lib/components/lightbox/lightbox.component.js +0 -141
- package/esm5/lib/components/lightbox-confirm/lightbox-confirm.component.js +0 -67
- package/esm5/lib/components/list/list.component.js +0 -146
- package/esm5/lib/components/list-checkable/list-checkable.component.js +0 -148
- package/esm5/lib/components/message-box/message-box.component.js +0 -190
- package/esm5/lib/components/message-sticker/message-sticker.component.js +0 -92
- package/esm5/lib/components/mono-select/mono-select.component.js +0 -192
- package/esm5/lib/components/multi-combo/multi-combo.component.js +0 -294
- package/esm5/lib/components/multi-select/multi-select.component.js +0 -258
- package/esm5/lib/components/panel-section/panel-section.component.js +0 -40
- package/esm5/lib/components/portal/portal.component.js +0 -28
- package/esm5/lib/components/push-panel/push-panel.component.js +0 -91
- package/esm5/lib/components/search-input/search-input.component.js +0 -199
- package/esm5/lib/components/search-toolbar/search-toolbar.component.js +0 -93
- package/esm5/lib/components/side-layout/side-layout.component.js +0 -41
- package/esm5/lib/components/side-panel/side-panel.component.js +0 -85
- package/esm5/lib/components/spinner-cube/spinner-cube.component.js +0 -76
- package/esm5/lib/components/table/pager.component.js +0 -113
- package/esm5/lib/components/tooltip/tooltip.component.js +0 -188
- package/esm5/lib/components/upload-files/upload-files.component.js +0 -133
- package/esm5/lib/components/value-editable/simple-select.component.js +0 -59
- package/esm5/lib/components/wizard/wizard.component.js +0 -161
- package/esm5/lib/directives/anchor.directive.js +0 -39
- package/esm5/lib/directives/drag-and-drop-files.directive.js +0 -146
- package/esm5/lib/directives/dynamic-component/component-descriptor.model.js +0 -44
- package/esm5/lib/directives/dynamic-component/dynamic-component.directive.js +0 -109
- package/esm5/lib/directives/dynamictemplate.directive.js +0 -175
- package/esm5/lib/directives/object-url.directive.js +0 -62
- package/esm5/lib/ngx-ode-ui.module.js +0 -199
- package/esm5/lib/pipes/bytes.pipe.js +0 -37
- package/esm5/lib/pipes/filter.pipe.js +0 -179
- package/esm5/lib/pipes/flattenObjArray.pipe.js +0 -62
- package/esm5/lib/pipes/keys.pipe.js +0 -36
- package/esm5/lib/pipes/length.pipe.js +0 -30
- package/esm5/lib/pipes/limit.pipe.js +0 -35
- package/esm5/lib/pipes/localizedDate.pipe.js +0 -49
- package/esm5/lib/pipes/orderBy.pipe.js +0 -280
- package/esm5/lib/pipes/store.pipe.js +0 -35
- package/esm5/lib/services/dynamicModuleImports.service.js +0 -21
- package/esm5/lib/services/inputFile.service.js +0 -98
- package/esm5/lib/services/labels.service.js +0 -68
- package/esm5/lib/services/spinner.service.js +0 -195
- package/esm5/lib/utils/math.js +0 -49
- package/esm5/lib/utils/string.js +0 -29
- package/esm5/lib/utils/testing.js +0 -20
- package/esm5/ngx-ode-ui.js +0 -12
- package/esm5/public-api.js +0 -59
- package/fesm2015/ngx-ode-ui.js +0 -5027
- package/fesm2015/ngx-ode-ui.js.map +0 -1
- package/fesm5/ngx-ode-ui.js +0 -5560
- package/fesm5/ngx-ode-ui.js.map +0 -1
- package/ngx-ode-ui.d.ts +0 -6
- package/ngx-ode-ui.metadata.json +0 -1
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { Component, forwardRef, Input } from '@angular/core';
|
|
2
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
+
import { OdeComponent } from 'ngx-ode-core';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common";
|
|
6
|
+
import * as i2 from "ngx-ode-sijil";
|
|
7
|
+
export class MonoSelectComponent extends OdeComponent {
|
|
8
|
+
constructor(elementRef, injector) {
|
|
9
|
+
super(injector);
|
|
10
|
+
this.elementRef = elementRef;
|
|
11
|
+
this.placeholder = 'monoselect.placeholder.default';
|
|
12
|
+
this.options = [];
|
|
13
|
+
this.translateOptions = true;
|
|
14
|
+
this.opened = false;
|
|
15
|
+
this.selectedOption = null;
|
|
16
|
+
this.disabled = false;
|
|
17
|
+
this.onChange = (_) => {
|
|
18
|
+
};
|
|
19
|
+
this.onTouched = () => {
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
optionClicked(option) {
|
|
23
|
+
this.selectedOption = option;
|
|
24
|
+
this.opened = false;
|
|
25
|
+
this.onChange(this.selectedOption != null ? this.selectedOption.value : null);
|
|
26
|
+
}
|
|
27
|
+
onClickOnDocument(event) {
|
|
28
|
+
if (this.opened &&
|
|
29
|
+
!this.elementRef.nativeElement.querySelector('.lct-form-select').contains(event.target)) {
|
|
30
|
+
this.opened = false;
|
|
31
|
+
}
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
onClickOnHost() {
|
|
35
|
+
if (!this.opened && !this.disabled) {
|
|
36
|
+
this.opened = true;
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
this.opened = false;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
registerOnChange(fn) {
|
|
43
|
+
this.onChange = fn;
|
|
44
|
+
}
|
|
45
|
+
registerOnTouched(fn) {
|
|
46
|
+
this.onTouched = fn;
|
|
47
|
+
}
|
|
48
|
+
setDisabledState(isDisabled) {
|
|
49
|
+
this.disabled = isDisabled;
|
|
50
|
+
}
|
|
51
|
+
writeValue(obj) {
|
|
52
|
+
this.selectedOption = this.options.find(option => option.value === obj);
|
|
53
|
+
this.onChange(this.selectedOption ? this.selectedOption.value : null);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
MonoSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: MonoSelectComponent, deps: [{ token: i0.ElementRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
57
|
+
MonoSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.1", type: MonoSelectComponent, selector: "ode-mono-select", inputs: { placeholder: "placeholder", options: "options", trackByFn: "trackByFn", translateOptions: "translateOptions", disabled: "disabled" }, host: { listeners: { "document:click": "onClickOnDocument($event)", "click": "onClickOnHost()" } }, providers: [{
|
|
58
|
+
provide: NG_VALUE_ACCESSOR,
|
|
59
|
+
useExisting: forwardRef(() => MonoSelectComponent),
|
|
60
|
+
multi: true
|
|
61
|
+
}], usesInheritance: true, ngImport: i0, template: "<div class=\"form-select lct-form-select\" [ngClass]=\"{'form-select--opened': opened, 'form-select--disabled': disabled}\">\n <ul>\n <li class=\"form-select__options--selected lct-form-select__options--selected\">\n <strong>{{selectedOption ? ((translateOptions == true) ? (selectedOption.label | translate) : selectedOption.label) : (placeholder | translate)}}</strong>\n <ul class=\"form-select__list lct-form-select__list\" *ngIf=\"opened\">\n <li class=\"form-select__options lct-form-select__options\"\n (click)=\"$event.stopPropagation(); optionClicked()\">{{placeholder | translate}}</li>\n <li class=\"form-select__options lct-form-select__options\"\n *ngFor=\"let option of options\"\n (click)=\"$event.stopPropagation(); optionClicked(option)\">{{(translateOptions == true) ? (option.label | translate) : option.label}}</li>\n </ul>\n </li>\n </ul>\n</div>\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: "pipe", type: i2.TranslatePipe, name: "translate" }] });
|
|
62
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: MonoSelectComponent, decorators: [{
|
|
63
|
+
type: Component,
|
|
64
|
+
args: [{ selector: 'ode-mono-select', providers: [{
|
|
65
|
+
provide: NG_VALUE_ACCESSOR,
|
|
66
|
+
useExisting: forwardRef(() => MonoSelectComponent),
|
|
67
|
+
multi: true
|
|
68
|
+
}], host: {
|
|
69
|
+
'(document:click)': 'onClickOnDocument($event)',
|
|
70
|
+
'(click)': 'onClickOnHost()'
|
|
71
|
+
}, template: "<div class=\"form-select lct-form-select\" [ngClass]=\"{'form-select--opened': opened, 'form-select--disabled': disabled}\">\n <ul>\n <li class=\"form-select__options--selected lct-form-select__options--selected\">\n <strong>{{selectedOption ? ((translateOptions == true) ? (selectedOption.label | translate) : selectedOption.label) : (placeholder | translate)}}</strong>\n <ul class=\"form-select__list lct-form-select__list\" *ngIf=\"opened\">\n <li class=\"form-select__options lct-form-select__options\"\n (click)=\"$event.stopPropagation(); optionClicked()\">{{placeholder | translate}}</li>\n <li class=\"form-select__options lct-form-select__options\"\n *ngFor=\"let option of options\"\n (click)=\"$event.stopPropagation(); optionClicked(option)\">{{(translateOptions == true) ? (option.label | translate) : option.label}}</li>\n </ul>\n </li>\n </ul>\n</div>\n" }]
|
|
72
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Injector }]; }, propDecorators: { placeholder: [{
|
|
73
|
+
type: Input
|
|
74
|
+
}], options: [{
|
|
75
|
+
type: Input
|
|
76
|
+
}], trackByFn: [{
|
|
77
|
+
type: Input
|
|
78
|
+
}], translateOptions: [{
|
|
79
|
+
type: Input
|
|
80
|
+
}], disabled: [{
|
|
81
|
+
type: Input
|
|
82
|
+
}] } });
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uby1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW9kZS11aS9zcmMvbGliL2NvbXBvbmVudHMvbW9uby1zZWxlY3QvbW9uby1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW9kZS11aS9zcmMvbGliL2NvbXBvbmVudHMvbW9uby1zZWxlY3QvbW9uby1zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxVQUFVLEVBQUUsS0FBSyxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBdUIsaUJBQWlCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDOzs7O0FBZTVDLE1BQU0sT0FBTyxtQkFBdUIsU0FBUSxZQUFZO0lBMEJwRCxZQUFvQixVQUFzQixFQUFFLFFBQWtCO1FBQzFELEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQURBLGVBQVUsR0FBVixVQUFVLENBQVk7UUF4Qm5DLGdCQUFXLEdBQUcsZ0NBQWdDLENBQUM7UUFHL0MsWUFBTyxHQUEyQixFQUFFLENBQUM7UUFNckMscUJBQWdCLEdBQVksSUFBSSxDQUFDO1FBRWpDLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFFZixtQkFBYyxHQUFvQixJQUFJLENBQUM7UUFHdkMsYUFBUSxHQUFHLEtBQUssQ0FBQztRQTRCaEIsYUFBUSxHQUFHLENBQUMsQ0FBSSxFQUFFLEVBQUU7UUFDNUIsQ0FBQyxDQUFBO1FBRU8sY0FBUyxHQUFHLEdBQUcsRUFBRTtRQUN6QixDQUFDLENBQUE7SUF0QkQsQ0FBQztJQVJNLGFBQWEsQ0FBQyxNQUF3QjtRQUN6QyxJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQztRQUM3QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQU1NLGlCQUFpQixDQUFDLEtBQWlCO1FBQ3RDLElBQUksSUFBSSxDQUFDLE1BQU07WUFDWCxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDekYsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7U0FDdkI7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sYUFBYTtRQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDaEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7U0FDdEI7YUFBTTtZQUNILElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1NBQ3ZCO0lBQ0wsQ0FBQztJQVFELGdCQUFnQixDQUFDLEVBQU87UUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQU87UUFDckIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELGdCQUFnQixDQUFDLFVBQW1CO1FBQ2hDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO0lBQy9CLENBQUM7SUFFRCxVQUFVLENBQUMsR0FBTTtRQUNiLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFFLENBQUM7O2dIQW5FUSxtQkFBbUI7b0dBQW5CLG1CQUFtQiw4UkFWakIsQ0FBQztZQUNWLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztZQUNsRCxLQUFLLEVBQUUsSUFBSTtTQUNaLENBQUMsaURDWk4sNjZCQWNBOzJGRElhLG1CQUFtQjtrQkFiL0IsU0FBUzsrQkFDSSxpQkFBaUIsYUFFaEIsQ0FBQzs0QkFDVixPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxvQkFBb0IsQ0FBQzs0QkFDbEQsS0FBSyxFQUFFLElBQUk7eUJBQ1osQ0FBQyxRQUNJO3dCQUNGLGtCQUFrQixFQUFFLDJCQUEyQjt3QkFDL0MsU0FBUyxFQUFFLGlCQUFpQjtxQkFDL0I7d0hBSU0sV0FBVztzQkFEakIsS0FBSztnQkFJQyxPQUFPO3NCQURiLEtBQUs7Z0JBSUMsU0FBUztzQkFEZixLQUFLO2dCQUlDLGdCQUFnQjtzQkFEdEIsS0FBSztnQkFRQyxRQUFRO3NCQURkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIGZvcndhcmRSZWYsIElucHV0LCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7U2VsZWN0T3B0aW9ufSBmcm9tICcuLi9tdWx0aS1zZWxlY3QvbXVsdGktc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPZGVDb21wb25lbnQgfSBmcm9tICduZ3gtb2RlLWNvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ29kZS1tb25vLXNlbGVjdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL21vbm8tc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFt7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE1vbm9TZWxlY3RDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XSxcbiAgICBob3N0OiB7XG4gICAgICAgICcoZG9jdW1lbnQ6Y2xpY2spJzogJ29uQ2xpY2tPbkRvY3VtZW50KCRldmVudCknLFxuICAgICAgICAnKGNsaWNrKSc6ICdvbkNsaWNrT25Ib3N0KCknXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBNb25vU2VsZWN0Q29tcG9uZW50PEs+IGV4dGVuZHMgT2RlQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHBsYWNlaG9sZGVyID0gJ21vbm9zZWxlY3QucGxhY2Vob2xkZXIuZGVmYXVsdCc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBvcHRpb25zOiBBcnJheTxTZWxlY3RPcHRpb248Sz4+ID0gW107XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB0cmFja0J5Rm46IChvcHRpb25WYWx1ZTogSykgPT4gbnVtYmVyIHwgc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdHJhbnNsYXRlT3B0aW9uczogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBwdWJsaWMgb3BlbmVkID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgc2VsZWN0ZWRPcHRpb246IFNlbGVjdE9wdGlvbjxLPiA9IG51bGw7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgcHVibGljIG9wdGlvbkNsaWNrZWQob3B0aW9uPzogU2VsZWN0T3B0aW9uPEs+KSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb24gPSBvcHRpb247XG4gICAgICAgIHRoaXMub3BlbmVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5zZWxlY3RlZE9wdGlvbiAhPSBudWxsID8gdGhpcy5zZWxlY3RlZE9wdGlvbi52YWx1ZSA6IG51bGwpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZiwgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgICAgIHN1cGVyKGluamVjdG9yKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25DbGlja09uRG9jdW1lbnQoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMub3BlbmVkICYmXG4gICAgICAgICAgICAhdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLmxjdC1mb3JtLXNlbGVjdCcpLmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgICAgICAgIHRoaXMub3BlbmVkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2xpY2tPbkhvc3QoKSB7XG4gICAgICAgIGlmICghdGhpcy5vcGVuZWQgJiYgIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMub3BlbmVkID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMub3BlbmVkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG9uQ2hhbmdlID0gKF86IEspID0+IHtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uVG91Y2hlZCA9ICgpID0+IHtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZShvYmo6IEspOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbiA9IHRoaXMub3B0aW9ucy5maW5kKG9wdGlvbiA9PiBvcHRpb24udmFsdWUgPT09IG9iaik7XG4gICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5zZWxlY3RlZE9wdGlvbiA/IHRoaXMuc2VsZWN0ZWRPcHRpb24udmFsdWUgOiBudWxsKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZm9ybS1zZWxlY3QgbGN0LWZvcm0tc2VsZWN0XCIgW25nQ2xhc3NdPVwieydmb3JtLXNlbGVjdC0tb3BlbmVkJzogb3BlbmVkLCAnZm9ybS1zZWxlY3QtLWRpc2FibGVkJzogZGlzYWJsZWR9XCI+XG4gIDx1bD5cbiAgICA8bGkgY2xhc3M9XCJmb3JtLXNlbGVjdF9fb3B0aW9ucy0tc2VsZWN0ZWQgbGN0LWZvcm0tc2VsZWN0X19vcHRpb25zLS1zZWxlY3RlZFwiPlxuICAgICAgPHN0cm9uZz57e3NlbGVjdGVkT3B0aW9uID8gKCh0cmFuc2xhdGVPcHRpb25zID09IHRydWUpID8gKHNlbGVjdGVkT3B0aW9uLmxhYmVsIHwgdHJhbnNsYXRlKSA6IHNlbGVjdGVkT3B0aW9uLmxhYmVsKSA6IChwbGFjZWhvbGRlciB8IHRyYW5zbGF0ZSl9fTwvc3Ryb25nPlxuICAgICAgPHVsIGNsYXNzPVwiZm9ybS1zZWxlY3RfX2xpc3QgbGN0LWZvcm0tc2VsZWN0X19saXN0XCIgKm5nSWY9XCJvcGVuZWRcIj5cbiAgICAgICAgPGxpIGNsYXNzPVwiZm9ybS1zZWxlY3RfX29wdGlvbnMgbGN0LWZvcm0tc2VsZWN0X19vcHRpb25zXCJcbiAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IG9wdGlvbkNsaWNrZWQoKVwiPnt7cGxhY2Vob2xkZXIgfCB0cmFuc2xhdGV9fTwvbGk+XG4gICAgICAgIDxsaSBjbGFzcz1cImZvcm0tc2VsZWN0X19vcHRpb25zIGxjdC1mb3JtLXNlbGVjdF9fb3B0aW9uc1wiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIG9wdGlvbnNcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgb3B0aW9uQ2xpY2tlZChvcHRpb24pXCI+e3sodHJhbnNsYXRlT3B0aW9ucyA9PSB0cnVlKSA/IChvcHRpb24ubGFiZWwgfCB0cmFuc2xhdGUpIDogb3B0aW9uLmxhYmVsfX08L2xpPlxuICAgICAgPC91bD5cbiAgICA8L2xpPlxuICA8L3VsPlxuPC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { OdeComponent } from 'ngx-ode-core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../../services/labels.service";
|
|
5
|
+
import * as i2 from "@angular/common";
|
|
6
|
+
import * as i3 from "../search-input/search-input.component";
|
|
7
|
+
import * as i4 from "ngx-ode-sijil";
|
|
8
|
+
import * as i5 from "../../pipes/filter.pipe";
|
|
9
|
+
import * as i6 from "../../pipes/orderBy.pipe";
|
|
10
|
+
import * as i7 from "../../pipes/store.pipe";
|
|
11
|
+
/* If you need to use multi-combo in a form you should give a look to the MultiSelectComponent. */
|
|
12
|
+
export class MultiComboComponent extends OdeComponent {
|
|
13
|
+
constructor(_eref, labelsService, injector) {
|
|
14
|
+
super(injector);
|
|
15
|
+
this._eref = _eref;
|
|
16
|
+
this.labelsService = labelsService;
|
|
17
|
+
this.filteredModel = [];
|
|
18
|
+
this.title = 'Select';
|
|
19
|
+
this.reverse = false;
|
|
20
|
+
this.disabled = false;
|
|
21
|
+
this.onSelectItem = new EventEmitter();
|
|
22
|
+
this.onDeselectItem = new EventEmitter();
|
|
23
|
+
this.filteredModelChange = new EventEmitter();
|
|
24
|
+
this.onOpen = new EventEmitter();
|
|
25
|
+
this.onClose = new EventEmitter();
|
|
26
|
+
this.self = this;
|
|
27
|
+
this._comboModel = [];
|
|
28
|
+
this.filteredComboModel = [];
|
|
29
|
+
this.search = {
|
|
30
|
+
input: '',
|
|
31
|
+
reset() {
|
|
32
|
+
this.input = '';
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
this.show = false;
|
|
36
|
+
}
|
|
37
|
+
set comboModel(model) {
|
|
38
|
+
this._comboModel = model;
|
|
39
|
+
if (!model) {
|
|
40
|
+
this.filteredModel = [];
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
for (let i = 0; i < this.filteredModel.length; i++) {
|
|
44
|
+
const idx = model.indexOf(this.filteredModel[i]);
|
|
45
|
+
if (idx < 0) {
|
|
46
|
+
this.filteredModel.splice(idx, 1);
|
|
47
|
+
i--;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
labels(label) {
|
|
52
|
+
return this.labelsService.getLabel(label);
|
|
53
|
+
}
|
|
54
|
+
toggleVisibility() {
|
|
55
|
+
this.show = !this.show;
|
|
56
|
+
if (this.show) {
|
|
57
|
+
this.search.reset();
|
|
58
|
+
this.onOpen.emit();
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
this.onClose.emit();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
isSelected(item) {
|
|
65
|
+
return this.filteredModel && this.filteredModel.indexOf(item) >= 0;
|
|
66
|
+
}
|
|
67
|
+
isDisabled() {
|
|
68
|
+
return this.filteredModel && this.maxSelected &&
|
|
69
|
+
this.maxSelected <= this.filteredModel.length;
|
|
70
|
+
}
|
|
71
|
+
toggleItem(item) {
|
|
72
|
+
const idx = this.filteredModel.indexOf(item);
|
|
73
|
+
if (idx >= 0) {
|
|
74
|
+
this.filteredModel.splice(idx, 1);
|
|
75
|
+
this.onDeselectItem.emit(item);
|
|
76
|
+
}
|
|
77
|
+
else if (!this.maxSelected ||
|
|
78
|
+
this.filteredModel.length < this.maxSelected) {
|
|
79
|
+
this.filteredModel.push(item);
|
|
80
|
+
this.onSelectItem.emit(item);
|
|
81
|
+
}
|
|
82
|
+
this.filteredModelChange.emit(this.filteredModel);
|
|
83
|
+
}
|
|
84
|
+
selectAll() {
|
|
85
|
+
this.filteredModel = [];
|
|
86
|
+
for (let i = 0; i < this.filteredComboModel.length; i++) {
|
|
87
|
+
this.filteredModel.push(this.filteredComboModel[i]);
|
|
88
|
+
}
|
|
89
|
+
this.filteredModelChange.emit(this.filteredModel);
|
|
90
|
+
}
|
|
91
|
+
deselectAll() {
|
|
92
|
+
this.filteredModel = [];
|
|
93
|
+
this.filteredModelChange.emit(this.filteredModel);
|
|
94
|
+
}
|
|
95
|
+
displayItem(item) {
|
|
96
|
+
return item instanceof Object ?
|
|
97
|
+
this.display && typeof this.display === 'string' ?
|
|
98
|
+
item[this.display] :
|
|
99
|
+
item.toString() :
|
|
100
|
+
this.display && this.display instanceof Function ?
|
|
101
|
+
this.display(item || '') :
|
|
102
|
+
item;
|
|
103
|
+
}
|
|
104
|
+
onClick(event) {
|
|
105
|
+
if (this.show && !this._eref.nativeElement.contains(event.target)) {
|
|
106
|
+
this.toggleVisibility();
|
|
107
|
+
}
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
getFilter() {
|
|
111
|
+
if (!this.filter) {
|
|
112
|
+
return '';
|
|
113
|
+
}
|
|
114
|
+
let filter = '';
|
|
115
|
+
if (this._comboModel.length > 0) {
|
|
116
|
+
if (typeof this._comboModel[0] === 'string') {
|
|
117
|
+
filter = this.search.input;
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
filter = {};
|
|
121
|
+
filter[this.filter] = this.search.input;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return filter;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
MultiComboComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: MultiComboComponent, deps: [{ token: i0.ElementRef }, { token: i1.LabelsService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
128
|
+
MultiComboComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.1", type: MultiComboComponent, selector: "ode-multi-combo", inputs: { comboModel: "comboModel", filteredModel: ["outputModel", "filteredModel"], title: "title", display: "display", filter: "filter", orderBy: "orderBy", reverse: "reverse", maxSelected: ["max", "maxSelected"], disabled: "disabled" }, outputs: { onSelectItem: "onSelectItem", onDeselectItem: "onDeselectItem", filteredModelChange: "outputModelChange", onOpen: "onOpen", onClose: "onClose" }, host: { listeners: { "document:click": "onClick($event)" } }, usesInheritance: true, ngImport: i0, template: "<button (click)=\"toggleVisibility()\"\n [ngClass]=\"{ opened: show }\"\n [disabled]=\"disabled\"\n type=\"button\">\n {{ title }}\n</button>\n<div [ngClass]=\"{ hidden: !show }\">\n <div class=\"options\">\n <button class=\"select-all\" (click)=\"selectAll()\" *ngIf=\"!maxSelected\"\n [title]=\"labels('select.all')\" type=\"button\">{{ labels('select.all') }}</button>\n <button class=\"deselect-all\" (click)=\"deselectAll()\"\n [title]=\"labels('deselect.all')\" type=\"button\">{{ labels('deselect.all') }}</button>\n </div>\n <div *ngIf=\"filter\" class=\"filter\">\n <ode-search-input (onChange)=\"search.input = $event\" [attr.placeholder]=\"labels('search')\"></ode-search-input>\n </div>\n <ul>\n <li *ngFor=\"let item of _comboModel | filter: getFilter() | orderBy: orderBy | store: self:'filteredComboModel'\"\n (click)=\"toggleItem(item)\"\n [ngClass]=\"{ selected: isSelected(item) }\"\n [attr.disabled]=\"isDisabled()\">\n {{ displayItem(item) | translate }}\n </li>\n </ul>\n</div>\n", styles: [":host{position:relative}:host>button{min-width:150px}:host>div{position:absolute;z-index:2;left:0px;overflow:hidden;background:white;border:2px solid black}:host>div.hidden{max-height:0px;border-width:0px}:host>div>div.options>*{display:inline-block;vertical-align:middle}:host>div>div.filter{margin:10px 0;width:100%;position:relative}:host>div>div.filter input{width:100%}:host>div>ul{list-style:none;padding:0;overflow-y:auto;max-height:200px}:host>div>ul>li{white-space:nowrap;cursor:pointer}:host>div>ul>li:not(.selected)[disabled=true]{pointer-events:none}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.SearchInputComponent, selector: "ode-search-input", inputs: ["isSearchActive", "isSearchButtonDisabled", "searchInput", "searchSubmit", "delay"], outputs: ["onChange"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "pipe", type: i5.FilterPipe, name: "filter" }, { kind: "pipe", type: i6.OrderPipe, name: "orderBy" }, { kind: "pipe", type: i7.StorePipe, name: "store" }] });
|
|
129
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: MultiComboComponent, decorators: [{
|
|
130
|
+
type: Component,
|
|
131
|
+
args: [{ selector: 'ode-multi-combo', host: {
|
|
132
|
+
'(document:click)': 'onClick($event)',
|
|
133
|
+
}, template: "<button (click)=\"toggleVisibility()\"\n [ngClass]=\"{ opened: show }\"\n [disabled]=\"disabled\"\n type=\"button\">\n {{ title }}\n</button>\n<div [ngClass]=\"{ hidden: !show }\">\n <div class=\"options\">\n <button class=\"select-all\" (click)=\"selectAll()\" *ngIf=\"!maxSelected\"\n [title]=\"labels('select.all')\" type=\"button\">{{ labels('select.all') }}</button>\n <button class=\"deselect-all\" (click)=\"deselectAll()\"\n [title]=\"labels('deselect.all')\" type=\"button\">{{ labels('deselect.all') }}</button>\n </div>\n <div *ngIf=\"filter\" class=\"filter\">\n <ode-search-input (onChange)=\"search.input = $event\" [attr.placeholder]=\"labels('search')\"></ode-search-input>\n </div>\n <ul>\n <li *ngFor=\"let item of _comboModel | filter: getFilter() | orderBy: orderBy | store: self:'filteredComboModel'\"\n (click)=\"toggleItem(item)\"\n [ngClass]=\"{ selected: isSelected(item) }\"\n [attr.disabled]=\"isDisabled()\">\n {{ displayItem(item) | translate }}\n </li>\n </ul>\n</div>\n", styles: [":host{position:relative}:host>button{min-width:150px}:host>div{position:absolute;z-index:2;left:0px;overflow:hidden;background:white;border:2px solid black}:host>div.hidden{max-height:0px;border-width:0px}:host>div>div.options>*{display:inline-block;vertical-align:middle}:host>div>div.filter{margin:10px 0;width:100%;position:relative}:host>div>div.filter input{width:100%}:host>div>ul{list-style:none;padding:0;overflow-y:auto;max-height:200px}:host>div>ul>li{white-space:nowrap;cursor:pointer}:host>div>ul>li:not(.selected)[disabled=true]{pointer-events:none}\n"] }]
|
|
134
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.LabelsService }, { type: i0.Injector }]; }, propDecorators: { comboModel: [{
|
|
135
|
+
type: Input
|
|
136
|
+
}], filteredModel: [{
|
|
137
|
+
type: Input,
|
|
138
|
+
args: ['outputModel']
|
|
139
|
+
}], title: [{
|
|
140
|
+
type: Input
|
|
141
|
+
}], display: [{
|
|
142
|
+
type: Input
|
|
143
|
+
}], filter: [{
|
|
144
|
+
type: Input
|
|
145
|
+
}], orderBy: [{
|
|
146
|
+
type: Input
|
|
147
|
+
}], reverse: [{
|
|
148
|
+
type: Input
|
|
149
|
+
}], maxSelected: [{
|
|
150
|
+
type: Input,
|
|
151
|
+
args: ['max']
|
|
152
|
+
}], disabled: [{
|
|
153
|
+
type: Input
|
|
154
|
+
}], onSelectItem: [{
|
|
155
|
+
type: Output
|
|
156
|
+
}], onDeselectItem: [{
|
|
157
|
+
type: Output
|
|
158
|
+
}], filteredModelChange: [{
|
|
159
|
+
type: Output,
|
|
160
|
+
args: ['outputModelChange']
|
|
161
|
+
}], onOpen: [{
|
|
162
|
+
type: Output
|
|
163
|
+
}], onClose: [{
|
|
164
|
+
type: Output
|
|
165
|
+
}] } });
|
|
166
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktY29tYm8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW9kZS11aS9zcmMvbGliL2NvbXBvbmVudHMvbXVsdGktY29tYm8vbXVsdGktY29tYm8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW9kZS11aS9zcmMvbGliL2NvbXBvbmVudHMvbXVsdGktY29tYm8vbXVsdGktY29tYm8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUU3RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDOzs7Ozs7Ozs7QUFFNUMsa0dBQWtHO0FBVWxHLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxZQUFZO0lBRWpELFlBQ1ksS0FBaUIsRUFDakIsYUFBNEIsRUFDcEMsUUFBa0I7UUFDbEIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBSFIsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNqQixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQXNCbEIsa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFDaEMsVUFBSyxHQUFHLFFBQVEsQ0FBQztRQUlqQixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBRWhCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFaEIsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3ZDLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUN0Qix3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ2pFLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ2pDLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRTVDLFNBQUksR0FBRyxJQUFJLENBQUM7UUFD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bWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtMYWJlbHNTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9sYWJlbHMuc2VydmljZSc7XG5pbXBvcnQgeyBPZGVDb21wb25lbnQgfSBmcm9tICduZ3gtb2RlLWNvcmUnO1xuXG4vKiBJZiB5b3UgbmVlZCB0byB1c2UgbXVsdGktY29tYm8gaW4gYSBmb3JtIHlvdSBzaG91bGQgZ2l2ZSBhIGxvb2sgdG8gdGhlIE11bHRpU2VsZWN0Q29tcG9uZW50LiAqL1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ29kZS1tdWx0aS1jb21ibycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL211bHRpLWNvbWJvLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9tdWx0aS1jb21iby5jb21wb25lbnQuc2NzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJyhkb2N1bWVudDpjbGljayknOiAnb25DbGljaygkZXZlbnQpJyxcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIE11bHRpQ29tYm9Db21wb25lbnQgZXh0ZW5kcyBPZGVDb21wb25lbnQge1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX2VyZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgbGFiZWxzU2VydmljZTogTGFiZWxzU2VydmljZSxcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgICAgIHN1cGVyKGluamVjdG9yKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBjb21ib01vZGVsKG1vZGVsKSB7XG4gICAgICAgIHRoaXMuX2NvbWJvTW9kZWwgPSBtb2RlbDtcblxuICAgICAgICBpZiAoIW1vZGVsKSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlcmVkTW9kZWwgPSBbXTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5maWx0ZXJlZE1vZGVsLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBpZHggPSBtb2RlbC5pbmRleE9mKHRoaXMuZmlsdGVyZWRNb2RlbFtpXSk7XG4gICAgICAgICAgICBpZiAoaWR4IDwgMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRNb2RlbC5zcGxpY2UoaWR4LCAxKTtcbiAgICAgICAgICAgICAgICBpLS07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgQElucHV0KCdvdXRwdXRNb2RlbCcpIGZpbHRlcmVkTW9kZWwgPSBbXTtcbiAgICBASW5wdXQoKSB0aXRsZSA9ICdTZWxlY3QnO1xuICAgIEBJbnB1dCgpIGRpc3BsYXk6IHN0cmluZyB8IEZ1bmN0aW9uO1xuICAgIEBJbnB1dCgpIGZpbHRlcjogc3RyaW5nO1xuICAgIEBJbnB1dCgpIG9yZGVyQnk6IChzdHJpbmcgfCBBcnJheTwoc3RyaW5nIHwgRnVuY3Rpb24pPiB8IEZ1bmN0aW9uKTtcbiAgICBASW5wdXQoKSByZXZlcnNlID0gZmFsc2U7XG4gICAgQElucHV0KCdtYXgnKSBtYXhTZWxlY3RlZDogbnVtYmVyO1xuICAgIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgICBAT3V0cHV0KCkgb25TZWxlY3RJdGVtID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgQE91dHB1dCgpIG9uRGVzZWxlY3RJdGVtID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgQE91dHB1dCgnb3V0cHV0TW9kZWxDaGFuZ2UnKSBmaWx0ZXJlZE1vZGVsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgQE91dHB1dCgpIG9uT3BlbiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoKSBvbkNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICBzZWxmID0gdGhpcztcbiAgICBfY29tYm9Nb2RlbCA9IFtdO1xuXG4gICAgZmlsdGVyZWRDb21ib01vZGVsID0gW107XG5cbiAgICBzZWFyY2ggPSB7XG4gICAgICAgIGlucHV0OiAnJyxcbiAgICAgICAgcmVzZXQoKSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0ID0gJyc7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgc2hvdyA9IGZhbHNlO1xuXG4gICAgbGFiZWxzKGxhYmVsKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxhYmVsc1NlcnZpY2UuZ2V0TGFiZWwobGFiZWwpO1xuICAgIH1cblxuICAgIHRvZ2dsZVZpc2liaWxpdHkoKSB7XG4gICAgICAgIHRoaXMuc2hvdyA9ICF0aGlzLnNob3c7XG4gICAgICAgIGlmICh0aGlzLnNob3cpIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoLnJlc2V0KCk7XG4gICAgICAgICAgICB0aGlzLm9uT3Blbi5lbWl0KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgdGhpcy5vbkNsb3NlLmVtaXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzU2VsZWN0ZWQoaXRlbSkge1xuICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXJlZE1vZGVsICYmIHRoaXMuZmlsdGVyZWRNb2RlbC5pbmRleE9mKGl0ZW0pID49IDA7XG4gICAgfVxuXG4gICAgaXNEaXNhYmxlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyZWRNb2RlbCAmJiB0aGlzLm1heFNlbGVjdGVkICYmXG4gICAgICAgICAgICB0aGlzLm1heFNlbGVjdGVkIDw9IHRoaXMuZmlsdGVyZWRNb2RlbC5sZW5ndGg7XG4gICAgfVxuXG4gICAgdG9nZ2xlSXRlbShpdGVtKSB7XG4gICAgICAgIGNvbnN0IGlkeCA9IHRoaXMuZmlsdGVyZWRNb2RlbC5pbmRleE9mKGl0ZW0pO1xuICAgICAgICBpZiAoaWR4ID49IDApIHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRNb2RlbC5zcGxpY2UoaWR4LCAxKTtcbiAgICAgICAgICAgIHRoaXMub25EZXNlbGVjdEl0ZW0uZW1pdChpdGVtKTtcbiAgICAgICAgfSBlbHNlIGlmICghdGhpcy5tYXhTZWxlY3RlZCB8fFxuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRNb2RlbC5sZW5ndGggPCB0aGlzLm1heFNlbGVjdGVkKSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlcmVkTW9kZWwucHVzaChpdGVtKTtcbiAgICAgICAgICAgIHRoaXMub25TZWxlY3RJdGVtLmVtaXQoaXRlbSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5maWx0ZXJlZE1vZGVsQ2hhbmdlLmVtaXQodGhpcy5maWx0ZXJlZE1vZGVsKTtcbiAgICB9XG5cbiAgICBzZWxlY3RBbGwoKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyZWRNb2RlbCA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZmlsdGVyZWRDb21ib01vZGVsLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlcmVkTW9kZWwucHVzaCh0aGlzLmZpbHRlcmVkQ29tYm9Nb2RlbFtpXSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5maWx0ZXJlZE1vZGVsQ2hhbmdlLmVtaXQodGhpcy5maWx0ZXJlZE1vZGVsKTtcbiAgICB9XG5cbiAgICBkZXNlbGVjdEFsbCgpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJlZE1vZGVsID0gW107XG4gICAgICAgIHRoaXMuZmlsdGVyZWRNb2RlbENoYW5nZS5lbWl0KHRoaXMuZmlsdGVyZWRNb2RlbCk7XG4gICAgfVxuXG4gICAgZGlzcGxheUl0ZW0oaXRlbSkge1xuICAgICAgICByZXR1cm4gIGl0ZW0gaW5zdGFuY2VvZiBPYmplY3QgP1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpc3BsYXkgJiYgdHlwZW9mIHRoaXMuZGlzcGxheSA9PT0gJ3N0cmluZycgP1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVt0aGlzLmRpc3BsYXldIDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0udG9TdHJpbmcoKSA6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzcGxheSAmJiB0aGlzLmRpc3BsYXkgaW5zdGFuY2VvZiBGdW5jdGlvbiA/XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRpc3BsYXkoaXRlbSB8fCAnJykgOlxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbTtcbiAgICB9XG5cbiAgICBvbkNsaWNrKGV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLnNob3cgJiYgIXRoaXMuX2VyZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICAgICAgICB0aGlzLnRvZ2dsZVZpc2liaWxpdHkoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBnZXRGaWx0ZXIoKSB7XG4gICAgICAgIGlmICghdGhpcy5maWx0ZXIpIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuICAgICAgICBsZXQgZmlsdGVyOiBzdHJpbmcgfCB7fSA9ICcnO1xuICAgICAgICBpZiAodGhpcy5fY29tYm9Nb2RlbC5sZW5ndGggPiAwICkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLl9jb21ib01vZGVsWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGZpbHRlciA9IHRoaXMuc2VhcmNoLmlucHV0O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmaWx0ZXIgPSB7fTtcbiAgICAgICAgICAgICAgICBmaWx0ZXJbdGhpcy5maWx0ZXJdID0gdGhpcy5zZWFyY2guaW5wdXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpbHRlcjtcbiAgICB9XG5cbn1cbiIsIjxidXR0b24gKGNsaWNrKT1cInRvZ2dsZVZpc2liaWxpdHkoKVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgb3BlbmVkOiBzaG93IH1cIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCI+XG4gIHt7IHRpdGxlIH19XG48L2J1dHRvbj5cbjxkaXYgW25nQ2xhc3NdPVwieyBoaWRkZW46ICFzaG93IH1cIj5cbiAgPGRpdiBjbGFzcz1cIm9wdGlvbnNcIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwic2VsZWN0LWFsbFwiIChjbGljayk9XCJzZWxlY3RBbGwoKVwiICpuZ0lmPVwiIW1heFNlbGVjdGVkXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCJsYWJlbHMoJ3NlbGVjdC5hbGwnKVwiIHR5cGU9XCJidXR0b25cIj57eyBsYWJlbHMoJ3NlbGVjdC5hbGwnKSB9fTwvYnV0dG9uPlxuICAgIDxidXR0b24gY2xhc3M9XCJkZXNlbGVjdC1hbGxcIiAoY2xpY2spPVwiZGVzZWxlY3RBbGwoKVwiXG4gICAgICAgICAgICBbdGl0bGVdPVwibGFiZWxzKCdkZXNlbGVjdC5hbGwnKVwiIHR5cGU9XCJidXR0b25cIj57eyBsYWJlbHMoJ2Rlc2VsZWN0LmFsbCcpIH19PC9idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiZmlsdGVyXCIgY2xhc3M9XCJmaWx0ZXJcIj5cbiAgICA8b2RlLXNlYXJjaC1pbnB1dCAob25DaGFuZ2UpPVwic2VhcmNoLmlucHV0ID0gJGV2ZW50XCIgW2F0dHIucGxhY2Vob2xkZXJdPVwibGFiZWxzKCdzZWFyY2gnKVwiPjwvb2RlLXNlYXJjaC1pbnB1dD5cbiAgPC9kaXY+XG4gIDx1bD5cbiAgICA8bGkgKm5nRm9yPVwibGV0IGl0ZW0gb2YgX2NvbWJvTW9kZWwgfCBmaWx0ZXI6IGdldEZpbHRlcigpIHwgb3JkZXJCeTogb3JkZXJCeSB8IHN0b3JlOiBzZWxmOidmaWx0ZXJlZENvbWJvTW9kZWwnXCJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUl0ZW0oaXRlbSlcIlxuICAgICAgICBbbmdDbGFzc109XCJ7IHNlbGVjdGVkOiBpc1NlbGVjdGVkKGl0ZW0pIH1cIlxuICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJpc0Rpc2FibGVkKClcIj5cbiAgICAgIHt7IGRpc3BsYXlJdGVtKGl0ZW0pIHwgdHJhbnNsYXRlIH19XG4gICAgPC9saT5cbiAgPC91bD5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { OdeComponent } from 'ngx-ode-core';
|
|
2
|
+
import { Component, forwardRef, Input } from '@angular/core';
|
|
3
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common";
|
|
6
|
+
import * as i2 from "ngx-ode-sijil";
|
|
7
|
+
export class MultiSelectComponent extends OdeComponent {
|
|
8
|
+
constructor(injector, elementRef) {
|
|
9
|
+
super(injector);
|
|
10
|
+
this.elementRef = elementRef;
|
|
11
|
+
this.label = '';
|
|
12
|
+
this.options = [];
|
|
13
|
+
this.preview = false;
|
|
14
|
+
this.model = [];
|
|
15
|
+
this.isDisabled = false;
|
|
16
|
+
this.isOptionsVisible = false;
|
|
17
|
+
this.onChange = (_) => {
|
|
18
|
+
};
|
|
19
|
+
this.onTouched = () => {
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
optionClicked(option) {
|
|
23
|
+
if (this.model) {
|
|
24
|
+
const index = this.getIndexOfOptionInModel(option);
|
|
25
|
+
if (index < 0) {
|
|
26
|
+
this.model.push(option.value);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
this.model.splice(index, 1);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
this.model = [option.value];
|
|
34
|
+
}
|
|
35
|
+
this.onChange(this.model);
|
|
36
|
+
}
|
|
37
|
+
selectAll() {
|
|
38
|
+
this.options.forEach(option => {
|
|
39
|
+
if (!this.model.includes(option.value)) {
|
|
40
|
+
this.model.push(option.value);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
this.onChange(this.model);
|
|
44
|
+
}
|
|
45
|
+
deselectAll() {
|
|
46
|
+
this.model = [];
|
|
47
|
+
this.onChange(this.model);
|
|
48
|
+
}
|
|
49
|
+
toggleOptionsVisibility() {
|
|
50
|
+
this.isOptionsVisible = !this.isOptionsVisible;
|
|
51
|
+
}
|
|
52
|
+
isSelected(option) {
|
|
53
|
+
return this.model ? (this.getIndexOfOptionInModel(option) >= 0) : false;
|
|
54
|
+
}
|
|
55
|
+
closeIfOpened(event) {
|
|
56
|
+
if (this.isOptionsVisible
|
|
57
|
+
&& !this.elementRef.nativeElement.querySelector('.lct-multi-select__options-container').contains(event.target)
|
|
58
|
+
&& !this.elementRef.nativeElement.querySelector('.lct-multi-select__toggle').contains(event.target)) {
|
|
59
|
+
this.isOptionsVisible = false;
|
|
60
|
+
}
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
getIndexOfOptionInModel(option) {
|
|
64
|
+
return this.model.map(this.trackByFn).indexOf(this.trackByFn(option.value));
|
|
65
|
+
}
|
|
66
|
+
registerOnChange(fn) {
|
|
67
|
+
this.onChange = fn;
|
|
68
|
+
}
|
|
69
|
+
registerOnTouched(fn) {
|
|
70
|
+
this.onTouched = fn;
|
|
71
|
+
}
|
|
72
|
+
setDisabledState(isDisabled) {
|
|
73
|
+
this.isDisabled = isDisabled;
|
|
74
|
+
}
|
|
75
|
+
writeValue(obj) {
|
|
76
|
+
this.model = obj;
|
|
77
|
+
this.onChange(this.model);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
MultiSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: MultiSelectComponent, deps: [{ token: i0.Injector }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
81
|
+
MultiSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.1", type: MultiSelectComponent, selector: "ode-multi-select", inputs: { label: "label", options: "options", preview: "preview", trackByFn: "trackByFn" }, host: { listeners: { "document:click": "closeIfOpened($event)" } }, providers: [{
|
|
82
|
+
provide: NG_VALUE_ACCESSOR,
|
|
83
|
+
useExisting: forwardRef(() => MultiSelectComponent),
|
|
84
|
+
multi: true
|
|
85
|
+
}], usesInheritance: true, ngImport: i0, template: "<button type=\"button\"\n (click)=\"toggleOptionsVisibility()\" [disabled]=\"isDisabled\"\n class=\"multi-select__toggle lct-multi-select__toggle\"\n [ngClass]=\"{'multi-select__toggle--active': isOptionsVisible}\">{{label |\u00A0translate}}</button>\n<div class=\"multi-select__options-container lct-multi-select__options-container\"\n [ngClass]=\"{'multi-select__options-container--active': isOptionsVisible}\">\n <div class=\"multi-select__options-actions\">\n <button type=\"button\"\n class=\"multi-select__options-actions-item\"\n (click)=\"selectAll()\">{{'ux.multiselect.select-all' | translate}}</button>\n <button type=\"button\"\n class=\"multi-select__options-actions-item\"\n (click)=\"deselectAll()\">{{'ux.multiselect.deselect-all' | translate}}</button>\n </div>\n <ul class=\"multi-select__options lct-multi-select__options\">\n <li class=\"multi-select__options-item lct-multi-select__options-item\"\n *ngFor=\"let option of options\"\n (click)=\"optionClicked(option)\"\n [ngClass]=\"{'multi-select__options-item--selected': isSelected(option)}\">{{option.label | translate}}</li>\n </ul>\n</div>\n<div class=\"multi-select__options-preview lct-multi-select__options-preview\" *ngIf=\"preview\">\n <ng-container *ngFor=\"let option of options\">\n <button *ngIf=\"isSelected(option)\"\n type=\"button\"\n class=\"multi-select__options-preview-item lct-multi-select__options-preview-item\"\n (click)=\"optionClicked(option)\">\n <span>{{option.label | translate}}</span>\n <i class=\"multi-select__options-preview-item-delete-icon fa fa-trash is-size-5\"></i>\n </button>\n </ng-container>\n</div>\n", styles: ["@charset \"UTF-8\";:host{position:relative}.multi-select__toggle{min-width:210px;outline:none;background-color:#f2f2f2}.multi-select__toggle:after{content:\"\\25bc\";float:right;margin-left:10px;transition:transform .25s,color .25s}.multi-select__toggle:hover:after{color:#fff}.multi-select__toggle:hover,.multi-select__toggle.multi-select__toggle--active{background-color:#ff8352;color:#fff}.multi-select__toggle.multi-select__toggle--active:after{transform:rotate(180deg);color:#fff}.multi-select__options-container{display:none;position:absolute;z-index:2;left:1px;top:31px;overflow:hidden;background:white;border:1px solid #ddd;padding:0 10px 0 20px;min-width:160px}.multi-select__options-container.multi-select__options-container--active{display:block}.multi-select__options{list-style:none;padding:0;overflow-y:scroll;max-height:200px;margin-bottom:10px}.multi-select__options-item{white-space:nowrap;cursor:pointer;line-height:25px;font-size:13px;transition:background-color .25s,color .25s;margin-bottom:5px;padding:0 10px}.multi-select__options-item.multi-select__options-item--selected{color:#fff;background-color:#217b9e}.multi-select__options-preview{color:#fff;margin:10px 0}.multi-select__options-preview-item{border:1px solid #217b9e;display:inline-block;font-size:.8em;margin-right:10px;margin-bottom:10px;padding:10px;cursor:pointer;transition:all .25s;border-radius:3px;background-color:#217b9e;line-height:1.5em;color:#fff}.multi-select__options-preview-item:hover{background-color:#61bbde;border-color:#fff}.multi-select__options-preview-item-delete-icon{opacity:0;transition:opacity .25s;float:right;padding-left:10px}.multi-select__options-preview-item:hover .multi-select__options-preview-item-delete-icon{opacity:1}.multi-select__options-actions{margin-top:10px}.multi-select__options-actions-item{margin-bottom:3px;min-width:136px}.multi-select__options-actions-item:hover{background:#ffccb8}\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: "pipe", type: i2.TranslatePipe, name: "translate" }] });
|
|
86
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: MultiSelectComponent, decorators: [{
|
|
87
|
+
type: Component,
|
|
88
|
+
args: [{ selector: 'ode-multi-select', providers: [{
|
|
89
|
+
provide: NG_VALUE_ACCESSOR,
|
|
90
|
+
useExisting: forwardRef(() => MultiSelectComponent),
|
|
91
|
+
multi: true
|
|
92
|
+
}], host: {
|
|
93
|
+
'(document:click)': 'closeIfOpened($event)'
|
|
94
|
+
}, template: "<button type=\"button\"\n (click)=\"toggleOptionsVisibility()\" [disabled]=\"isDisabled\"\n class=\"multi-select__toggle lct-multi-select__toggle\"\n [ngClass]=\"{'multi-select__toggle--active': isOptionsVisible}\">{{label |\u00A0translate}}</button>\n<div class=\"multi-select__options-container lct-multi-select__options-container\"\n [ngClass]=\"{'multi-select__options-container--active': isOptionsVisible}\">\n <div class=\"multi-select__options-actions\">\n <button type=\"button\"\n class=\"multi-select__options-actions-item\"\n (click)=\"selectAll()\">{{'ux.multiselect.select-all' | translate}}</button>\n <button type=\"button\"\n class=\"multi-select__options-actions-item\"\n (click)=\"deselectAll()\">{{'ux.multiselect.deselect-all' | translate}}</button>\n </div>\n <ul class=\"multi-select__options lct-multi-select__options\">\n <li class=\"multi-select__options-item lct-multi-select__options-item\"\n *ngFor=\"let option of options\"\n (click)=\"optionClicked(option)\"\n [ngClass]=\"{'multi-select__options-item--selected': isSelected(option)}\">{{option.label | translate}}</li>\n </ul>\n</div>\n<div class=\"multi-select__options-preview lct-multi-select__options-preview\" *ngIf=\"preview\">\n <ng-container *ngFor=\"let option of options\">\n <button *ngIf=\"isSelected(option)\"\n type=\"button\"\n class=\"multi-select__options-preview-item lct-multi-select__options-preview-item\"\n (click)=\"optionClicked(option)\">\n <span>{{option.label | translate}}</span>\n <i class=\"multi-select__options-preview-item-delete-icon fa fa-trash is-size-5\"></i>\n </button>\n </ng-container>\n</div>\n", styles: ["@charset \"UTF-8\";:host{position:relative}.multi-select__toggle{min-width:210px;outline:none;background-color:#f2f2f2}.multi-select__toggle:after{content:\"\\25bc\";float:right;margin-left:10px;transition:transform .25s,color .25s}.multi-select__toggle:hover:after{color:#fff}.multi-select__toggle:hover,.multi-select__toggle.multi-select__toggle--active{background-color:#ff8352;color:#fff}.multi-select__toggle.multi-select__toggle--active:after{transform:rotate(180deg);color:#fff}.multi-select__options-container{display:none;position:absolute;z-index:2;left:1px;top:31px;overflow:hidden;background:white;border:1px solid #ddd;padding:0 10px 0 20px;min-width:160px}.multi-select__options-container.multi-select__options-container--active{display:block}.multi-select__options{list-style:none;padding:0;overflow-y:scroll;max-height:200px;margin-bottom:10px}.multi-select__options-item{white-space:nowrap;cursor:pointer;line-height:25px;font-size:13px;transition:background-color .25s,color .25s;margin-bottom:5px;padding:0 10px}.multi-select__options-item.multi-select__options-item--selected{color:#fff;background-color:#217b9e}.multi-select__options-preview{color:#fff;margin:10px 0}.multi-select__options-preview-item{border:1px solid #217b9e;display:inline-block;font-size:.8em;margin-right:10px;margin-bottom:10px;padding:10px;cursor:pointer;transition:all .25s;border-radius:3px;background-color:#217b9e;line-height:1.5em;color:#fff}.multi-select__options-preview-item:hover{background-color:#61bbde;border-color:#fff}.multi-select__options-preview-item-delete-icon{opacity:0;transition:opacity .25s;float:right;padding-left:10px}.multi-select__options-preview-item:hover .multi-select__options-preview-item-delete-icon{opacity:1}.multi-select__options-actions{margin-top:10px}.multi-select__options-actions-item{margin-bottom:3px;min-width:136px}.multi-select__options-actions-item:hover{background:#ffccb8}\n"] }]
|
|
95
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.ElementRef }]; }, propDecorators: { label: [{
|
|
96
|
+
type: Input
|
|
97
|
+
}], options: [{
|
|
98
|
+
type: Input
|
|
99
|
+
}], preview: [{
|
|
100
|
+
type: Input
|
|
101
|
+
}], trackByFn: [{
|
|
102
|
+
type: Input
|
|
103
|
+
}] } });
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1vZGUtdWkvc3JjL2xpYi9jb21wb25lbnRzL211bHRpLXNlbGVjdC9tdWx0aS1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW9kZS11aS9zcmMvbGliL2NvbXBvbmVudHMvbXVsdGktc2VsZWN0L211bHRpLXNlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxTQUFTLEVBQWMsVUFBVSxFQUFFLEtBQUssRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUNuRixPQUFPLEVBQXVCLGlCQUFpQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFzQnZFLE1BQU0sT0FBTyxvQkFBd0IsU0FBUSxZQUFZO0lBbUJyRCxZQUFZLFFBQWtCLEVBQVUsVUFBc0I7UUFDMUQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRG9CLGVBQVUsR0FBVixVQUFVLENBQVk7UUFqQnZELFVBQUssR0FBRyxFQUFFLENBQUM7UUFHWCxZQUFPLEdBQTJCLEVBQUUsQ0FBQztRQUdyQyxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBS2hCLFVBQUssR0FBYSxFQUFFLENBQUM7UUFFckIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUVuQixxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUF1RHhCLGFBQVEsR0FBRyxDQUFDLENBQVcsRUFBRSxFQUFFO1FBQ25DLENBQUMsQ0FBQTtRQUVPLGNBQVMsR0FBRyxHQUFHLEVBQUU7UUFDekIsQ0FBQyxDQUFBO0lBdkRELENBQUM7SUFFTSxhQUFhLENBQUMsTUFBdUI7UUFDeEMsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1osTUFBTSxLQUFLLEdB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VGxCLENBQUM7WUFDVixPQUFPLEVBQUUsaUJBQWlCO1lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsb0JBQW9CLENBQUM7WUFDbkQsS0FBSyxFQUFFLElBQUk7U0FDWixDQUFDLGlEQ25CTiw2dURBZ0NBOzJGRFJhLG9CQUFvQjtrQkFiaEMsU0FBUzsrQkFDSSxrQkFBa0IsYUFHakIsQ0FBQzs0QkFDVixPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxxQkFBcUIsQ0FBQzs0QkFDbkQsS0FBSyxFQUFFLElBQUk7eUJBQ1osQ0FBQyxRQUNJO3dCQUNGLGtCQUFrQixFQUFFLHVCQUF1QjtxQkFDOUM7d0hBSU0sS0FBSztzQkFEWCxLQUFLO2dCQUlDLE9BQU87c0JBRGIsS0FBSztnQkFJQyxPQUFPO3NCQURiLEtBQUs7Z0JBSUMsU0FBUztzQkFEZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2RlQ29tcG9uZW50IH0gZnJvbSAnbmd4LW9kZS1jb3JlJztcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgZm9yd2FyZFJlZiwgSW5wdXQsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG4vKiBNdWx0aVNlbGVjdENvbXBvbmVudCBpcyBhIHJld3JpdGUgb2YgTXVsdGlDb21ib0NvbXBvbmVudCB0byBpbnRlZ3JhdGUgaXQgZWFzaWx5IGluIGFuZ3VsYXIgZm9ybXMgKi9cblxuZXhwb3J0IGludGVyZmFjZSBTZWxlY3RPcHRpb248Sz4ge1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgdmFsdWU6IEs7XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnb2RlLW11bHRpLXNlbGVjdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL211bHRpLXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vbXVsdGktc2VsZWN0LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbe1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBNdWx0aVNlbGVjdENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1dLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJyhkb2N1bWVudDpjbGljayknOiAnY2xvc2VJZk9wZW5lZCgkZXZlbnQpJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgTXVsdGlTZWxlY3RDb21wb25lbnQ8Sz4gZXh0ZW5kcyBPZGVDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbGFiZWwgPSAnJztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG9wdGlvbnM6IEFycmF5PFNlbGVjdE9wdGlvbjxLPj4gPSBbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHByZXZpZXcgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHRyYWNrQnlGbjogKG9wdGlvblZhbHVlOiBLKSA9PiBudW1iZXIgfCBzdHJpbmc7XG5cbiAgICBwdWJsaWMgbW9kZWw6IEFycmF5PEs+ID0gW107XG5cbiAgICBwdWJsaWMgaXNEaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgcHVibGljIGlzT3B0aW9uc1Zpc2libGUgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKGluamVjdG9yOiBJbmplY3RvciwgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XG4gICAgICAgIHN1cGVyKGluamVjdG9yKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3B0aW9uQ2xpY2tlZChvcHRpb246IFNlbGVjdE9wdGlvbjxLPikge1xuICAgICAgICBpZiAodGhpcy5tb2RlbCkge1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmdldEluZGV4T2ZPcHRpb25Jbk1vZGVsKG9wdGlvbik7XG4gICAgICAgICAgICBpZiAoaW5kZXggPCAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tb2RlbC5wdXNoKG9wdGlvbi52YWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMubW9kZWwuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubW9kZWwgPSBbb3B0aW9uLnZhbHVlXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMubW9kZWwpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZWxlY3RBbGwoKTogdm9pZCB7XG4gICAgICB0aGlzLm9wdGlvbnMuZm9yRWFjaChvcHRpb24gPT4ge1xuICAgICAgICBpZiAoIXRoaXMubW9kZWwuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSkge1xuICAgICAgICAgIHRoaXMubW9kZWwucHVzaChvcHRpb24udmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5tb2RlbCk7XG4gICAgfVxuXG4gICAgcHVibGljIGRlc2VsZWN0QWxsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1vZGVsID0gW107XG4gICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5tb2RlbCk7XG4gICAgfVxuXG4gICAgcHVibGljIHRvZ2dsZU9wdGlvbnNWaXNpYmlsaXR5KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzT3B0aW9uc1Zpc2libGUgPSAhdGhpcy5pc09wdGlvbnNWaXNpYmxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc1NlbGVjdGVkKG9wdGlvbjogU2VsZWN0T3B0aW9uPEs+KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vZGVsID8gKHRoaXMuZ2V0SW5kZXhPZk9wdGlvbkluTW9kZWwob3B0aW9uKSA+PSAwKSA6IGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbG9zZUlmT3BlbmVkKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNPcHRpb25zVmlzaWJsZVxuICAgICAgICAgICYmICF0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcubGN0LW11bHRpLXNlbGVjdF9fb3B0aW9ucy1jb250YWluZXInKS5jb250YWlucyhldmVudC50YXJnZXQpXG4gICAgICAgICAgJiYgIXRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5sY3QtbXVsdGktc2VsZWN0X190b2dnbGUnKS5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICAgICAgICB0aGlzLmlzT3B0aW9uc1Zpc2libGUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEluZGV4T2ZPcHRpb25Jbk1vZGVsKG9wdGlvbjogU2VsZWN0T3B0aW9uPEs+KTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kZWwubWFwKHRoaXMudHJhY2tCeUZuKS5pbmRleE9mKHRoaXMudHJhY2tCeUZuKG9wdGlvbi52YWx1ZSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25DaGFuZ2UgPSAoXzogQXJyYXk8Sz4pID0+IHtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uVG91Y2hlZCA9ICgpID0+IHtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc0Rpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKG9iajogQXJyYXk8Sz4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tb2RlbCA9IG9iajtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLm1vZGVsKTtcbiAgICB9XG59XG4iLCI8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlT3B0aW9uc1Zpc2liaWxpdHkoKVwiIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCJcbiAgICAgICAgY2xhc3M9XCJtdWx0aS1zZWxlY3RfX3RvZ2dsZSBsY3QtbXVsdGktc2VsZWN0X190b2dnbGVcIlxuICAgICAgICBbbmdDbGFzc109XCJ7J211bHRpLXNlbGVjdF9fdG9nZ2xlLS1hY3RpdmUnOiBpc09wdGlvbnNWaXNpYmxlfVwiPnt7bGFiZWwgfMKgdHJhbnNsYXRlfX08L2J1dHRvbj5cbjxkaXYgY2xhc3M9XCJtdWx0aS1zZWxlY3RfX29wdGlvbnMtY29udGFpbmVyIGxjdC1tdWx0aS1zZWxlY3RfX29wdGlvbnMtY29udGFpbmVyXCJcbiAgICAgW25nQ2xhc3NdPVwieydtdWx0aS1zZWxlY3RfX29wdGlvbnMtY29udGFpbmVyLS1hY3RpdmUnOiBpc09wdGlvbnNWaXNpYmxlfVwiPlxuICA8ZGl2IGNsYXNzPVwibXVsdGktc2VsZWN0X19vcHRpb25zLWFjdGlvbnNcIj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJtdWx0aS1zZWxlY3RfX29wdGlvbnMtYWN0aW9ucy1pdGVtXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RBbGwoKVwiPnt7J3V4Lm11bHRpc2VsZWN0LnNlbGVjdC1hbGwnIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJtdWx0aS1zZWxlY3RfX29wdGlvbnMtYWN0aW9ucy1pdGVtXCJcbiAgICAgICAgICAgIChjbGljayk9XCJkZXNlbGVjdEFsbCgpXCI+e3sndXgubXVsdGlzZWxlY3QuZGVzZWxlY3QtYWxsJyB8IHRyYW5zbGF0ZX19PC9idXR0b24+XG4gIDwvZGl2PlxuICA8dWwgY2xhc3M9XCJtdWx0aS1zZWxlY3RfX29wdGlvbnMgbGN0LW11bHRpLXNlbGVjdF9fb3B0aW9uc1wiPlxuICAgIDxsaSBjbGFzcz1cIm11bHRpLXNlbGVjdF9fb3B0aW9ucy1pdGVtIGxjdC1tdWx0aS1zZWxlY3RfX29wdGlvbnMtaXRlbVwiXG4gICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3B0aW9uc1wiXG4gICAgICAgIChjbGljayk9XCJvcHRpb25DbGlja2VkKG9wdGlvbilcIlxuICAgICAgICBbbmdDbGFzc109XCJ7J211bHRpLXNlbGVjdF9fb3B0aW9ucy1pdGVtLS1zZWxlY3RlZCc6IGlzU2VsZWN0ZWQob3B0aW9uKX1cIj57e29wdGlvbi5sYWJlbCB8IHRyYW5zbGF0ZX19PC9saT5cbiAgPC91bD5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cIm11bHRpLXNlbGVjdF9fb3B0aW9ucy1wcmV2aWV3IGxjdC1tdWx0aS1zZWxlY3RfX29wdGlvbnMtcHJldmlld1wiICpuZ0lmPVwicHJldmlld1wiPlxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3B0aW9uc1wiPlxuICAgIDxidXR0b24gKm5nSWY9XCJpc1NlbGVjdGVkKG9wdGlvbilcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cIm11bHRpLXNlbGVjdF9fb3B0aW9ucy1wcmV2aWV3LWl0ZW0gbGN0LW11bHRpLXNlbGVjdF9fb3B0aW9ucy1wcmV2aWV3LWl0ZW1cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9wdGlvbkNsaWNrZWQob3B0aW9uKVwiPlxuICAgICAgPHNwYW4+e3tvcHRpb24ubGFiZWwgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgIDxpIGNsYXNzPVwibXVsdGktc2VsZWN0X19vcHRpb25zLXByZXZpZXctaXRlbS1kZWxldGUtaWNvbiBmYSBmYS10cmFzaCBpcy1zaXplLTVcIj48L2k+XG4gICAgPC9idXR0b24+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { OdeComponent } from 'ngx-ode-core';
|
|
2
|
+
import { Component, Input } from '@angular/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
import * as i2 from "ngx-ode-sijil";
|
|
6
|
+
export class PanelSectionComponent extends OdeComponent {
|
|
7
|
+
constructor(injector) {
|
|
8
|
+
super(injector);
|
|
9
|
+
this.folded = null;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
PanelSectionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: PanelSectionComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
13
|
+
PanelSectionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.1", type: PanelSectionComponent, selector: "ode-panel-section", inputs: { sectionTitle: ["section-title", "sectionTitle"], folded: "folded" }, usesInheritance: true, ngImport: i0, template: "<section class=\"panel-section\">\n <div class=\"panel-section-header is-display-flex has-space-between\" (click)=\"folded !== null ? folded=!folded : null\" [class.foldable]=\"folded !== null\">\n <div class=\"is-display-flex\">\n <s5l>{{ sectionTitle\u00A0}}</s5l>\n <div class=\"has-left-padding-10\">\n <ng-content select=\"[panel-section-header-icons]\"></ng-content>\n </div>\n </div>\n\n <i class=\"opener\" *ngIf=\"folded !== null\"\n [class.opened]=\"!folded\"></i>\n </div>\n <div class=\"panel-section-content\" *ngIf=\"!folded\">\n <ng-content></ng-content>\n </div>\n</section>\n", styles: [".panel-section-header{font-size:1.1em;padding:10px}.panel-section-header.foldable{cursor:pointer}.panel-section-content{padding:15px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.S5lComponent, selector: "s5l", inputs: ["s5l-params", "s5l-lang"] }] });
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: PanelSectionComponent, decorators: [{
|
|
15
|
+
type: Component,
|
|
16
|
+
args: [{ selector: 'ode-panel-section', template: "<section class=\"panel-section\">\n <div class=\"panel-section-header is-display-flex has-space-between\" (click)=\"folded !== null ? folded=!folded : null\" [class.foldable]=\"folded !== null\">\n <div class=\"is-display-flex\">\n <s5l>{{ sectionTitle\u00A0}}</s5l>\n <div class=\"has-left-padding-10\">\n <ng-content select=\"[panel-section-header-icons]\"></ng-content>\n </div>\n </div>\n\n <i class=\"opener\" *ngIf=\"folded !== null\"\n [class.opened]=\"!folded\"></i>\n </div>\n <div class=\"panel-section-content\" *ngIf=\"!folded\">\n <ng-content></ng-content>\n </div>\n</section>\n", styles: [".panel-section-header{font-size:1.1em;padding:10px}.panel-section-header.foldable{cursor:pointer}.panel-section-content{padding:15px}\n"] }]
|
|
17
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { sectionTitle: [{
|
|
18
|
+
type: Input,
|
|
19
|
+
args: ['section-title']
|
|
20
|
+
}], folded: [{
|
|
21
|
+
type: Input
|
|
22
|
+
}] } });
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFuZWwtc2VjdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtb2RlLXVpL3NyYy9saWIvY29tcG9uZW50cy9wYW5lbC1zZWN0aW9uL3BhbmVsLXNlY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW9kZS11aS9zcmMvbGliL2NvbXBvbmVudHMvcGFuZWwtc2VjdGlvbi9wYW5lbC1zZWN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDNUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVksTUFBTSxlQUFlLENBQUM7Ozs7QUFPM0QsTUFBTSxPQUFPLHFCQUFzQixTQUFRLFlBQVk7SUFHbkQsWUFBWSxRQUFrQjtRQUMxQixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFGWCxXQUFNLEdBQVksSUFBSSxDQUFDO0lBR2hDLENBQUM7O2tIQUxRLHFCQUFxQjtzR0FBckIscUJBQXFCLCtKQ1JsQyw4bkJBZ0JBOzJGRFJhLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDSSxtQkFBbUI7K0ZBS0wsWUFBWTtzQkFBbkMsS0FBSzt1QkFBQyxlQUFlO2dCQUNiLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9kZUNvbXBvbmVudCB9IGZyb20gJ25neC1vZGUtY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ29kZS1wYW5lbC1zZWN0aW9uJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcGFuZWwtc2VjdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vcGFuZWwtc2VjdGlvbi5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFBhbmVsU2VjdGlvbkNvbXBvbmVudCBleHRlbmRzIE9kZUNvbXBvbmVudCB7XG4gICAgQElucHV0KCdzZWN0aW9uLXRpdGxlJykgc2VjdGlvblRpdGxlOiBzdHJpbmc7XG4gICAgQElucHV0KCkgZm9sZGVkOiBib29sZWFuID0gbnVsbDtcbiAgICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xuICAgIH1cbn1cbiIsIjxzZWN0aW9uIGNsYXNzPVwicGFuZWwtc2VjdGlvblwiPlxuICA8ZGl2IGNsYXNzPVwicGFuZWwtc2VjdGlvbi1oZWFkZXIgaXMtZGlzcGxheS1mbGV4IGhhcy1zcGFjZS1iZXR3ZWVuXCIgKGNsaWNrKT1cImZvbGRlZCAhPT0gbnVsbCA/IGZvbGRlZD0hZm9sZGVkIDogbnVsbFwiIFtjbGFzcy5mb2xkYWJsZV09XCJmb2xkZWQgIT09IG51bGxcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaXMtZGlzcGxheS1mbGV4XCI+XG4gICAgICA8czVsPnt7IHNlY3Rpb25UaXRsZcKgfX08L3M1bD5cbiAgICAgIDxkaXYgY2xhc3M9XCJoYXMtbGVmdC1wYWRkaW5nLTEwXCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltwYW5lbC1zZWN0aW9uLWhlYWRlci1pY29uc11cIj48L25nLWNvbnRlbnQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxpIGNsYXNzPVwib3BlbmVyXCIgKm5nSWY9XCJmb2xkZWQgIT09IG51bGxcIlxuICAgICAgIFtjbGFzcy5vcGVuZWRdPVwiIWZvbGRlZFwiPjwvaT5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJwYW5lbC1zZWN0aW9uLWNvbnRlbnRcIiAqbmdJZj1cIiFmb2xkZWRcIj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuPC9zZWN0aW9uPlxuIl19
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { OdeComponent } from 'ngx-ode-core';
|
|
2
|
+
import { Component } from '@angular/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class PortalComponent extends OdeComponent {
|
|
5
|
+
constructor(injector) {
|
|
6
|
+
super(injector);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
PortalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: PortalComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
10
|
+
PortalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.1", type: PortalComponent, selector: "ode-portal", usesInheritance: true, ngImport: i0, template: "<header>\n <ng-content select=\"[header-left]\"></ng-content>\n <ng-content select=\"[header-middle]\"></ng-content>\n <ng-content select=\"[header-right]\"></ng-content>\n</header>\n<section>\n <ng-content select=\"[section]\"></ng-content>\n</section>\n<footer>\n <ng-content select=\"[footer]\"></ng-content>\n</footer>\n", styles: ["header{position:relative;display:flex;align-items:center;top:0px;width:100%}\n"] });
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: PortalComponent, decorators: [{
|
|
12
|
+
type: Component,
|
|
13
|
+
args: [{ selector: 'ode-portal', template: "<header>\n <ng-content select=\"[header-left]\"></ng-content>\n <ng-content select=\"[header-middle]\"></ng-content>\n <ng-content select=\"[header-right]\"></ng-content>\n</header>\n<section>\n <ng-content select=\"[section]\"></ng-content>\n</section>\n<footer>\n <ng-content select=\"[footer]\"></ng-content>\n</footer>\n", styles: ["header{position:relative;display:flex;align-items:center;top:0px;width:100%}\n"] }]
|
|
14
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9ydGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1vZGUtdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvcnRhbC9wb3J0YWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW9kZS11aS9zcmMvbGliL2NvbXBvbmVudHMvcG9ydGFsL3BvcnRhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxTQUFTLEVBQVksTUFBTSxlQUFlLENBQUM7O0FBT3BELE1BQU0sT0FBTyxlQUFnQixTQUFRLFlBQVk7SUFDN0MsWUFBWSxRQUFrQjtRQUMxQixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDcEIsQ0FBQzs7NEdBSFEsZUFBZTtnR0FBZixlQUFlLHlFQ1I1QiwyVUFXQTsyRkRIYSxlQUFlO2tCQUwzQixTQUFTOytCQUNJLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPZGVDb21wb25lbnQgfSBmcm9tICduZ3gtb2RlLWNvcmUnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ29kZS1wb3J0YWwnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9wb3J0YWwuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3BvcnRhbC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFBvcnRhbENvbXBvbmVudCBleHRlbmRzIE9kZUNvbXBvbmVudCB7XG4gICAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgICAgIHN1cGVyKGluamVjdG9yKTtcbiAgICB9XG59XG4iLCI8aGVhZGVyPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJbaGVhZGVyLWxlZnRdXCI+PC9uZy1jb250ZW50PlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJbaGVhZGVyLW1pZGRsZV1cIj48L25nLWNvbnRlbnQ+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIltoZWFkZXItcmlnaHRdXCI+PC9uZy1jb250ZW50PlxuPC9oZWFkZXI+XG48c2VjdGlvbj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3NlY3Rpb25dXCI+PC9uZy1jb250ZW50PlxuPC9zZWN0aW9uPlxuPGZvb3Rlcj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2Zvb3Rlcl1cIj48L25nLWNvbnRlbnQ+XG48L2Zvb3Rlcj5cbiJdfQ==
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { OdeComponent } from 'ngx-ode-core';
|
|
2
|
+
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
export class PushPanelComponent extends OdeComponent {
|
|
6
|
+
constructor(injector) {
|
|
7
|
+
super(injector);
|
|
8
|
+
this.onClose = new EventEmitter();
|
|
9
|
+
}
|
|
10
|
+
set toggle(toggle) {
|
|
11
|
+
this._opened = toggle;
|
|
12
|
+
}
|
|
13
|
+
onClick(event) {
|
|
14
|
+
const checkOpener = this.opener &&
|
|
15
|
+
(this.opener.contains && this.opener.contains(event.target)) ||
|
|
16
|
+
(this.opener.nativeElement && this.opener.nativeElement.contains(event.target));
|
|
17
|
+
if (this._opened &&
|
|
18
|
+
!this.inside.nativeElement.contains(event.target) &&
|
|
19
|
+
!checkOpener) {
|
|
20
|
+
this._opened = false;
|
|
21
|
+
this.onClose.emit();
|
|
22
|
+
}
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
PushPanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: PushPanelComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
27
|
+
PushPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.1", type: PushPanelComponent, selector: "ode-push-panel", inputs: { toggle: "toggle", opener: "opener" }, outputs: { onClose: "onClose" }, host: { listeners: { "document:click": "onClick($event)" } }, viewQueries: [{ propertyName: "inside", first: true, predicate: ["inside"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div [ngClass]=\"{ opened: _opened }\" #inside>\n <ng-content select=\"[inside]\"></ng-content>\n</div>\n<div>\n <ng-content select=\"[companion]\"></ng-content>\n</div>\n", styles: [":host>div:nth-child(1){position:fixed;z-index:10;overflow-x:hidden;overflow-y:scroll;height:100%;top:0px;left:-30%;width:30%;transition:transform .25s}:host>div:nth-child(1).opened{transform:translate(100%)}:host>div:nth-child(2){position:relative;left:0%;opacity:1;transition:transform .25s,opacity .25s}:host>div:nth-child(1).opened+div{opacity:.7;transform:translate(30%);overflow-x:hidden}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
28
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: PushPanelComponent, decorators: [{
|
|
29
|
+
type: Component,
|
|
30
|
+
args: [{ selector: 'ode-push-panel', host: {
|
|
31
|
+
'(document:click)': 'onClick($event)',
|
|
32
|
+
}, template: "<div [ngClass]=\"{ opened: _opened }\" #inside>\n <ng-content select=\"[inside]\"></ng-content>\n</div>\n<div>\n <ng-content select=\"[companion]\"></ng-content>\n</div>\n", styles: [":host>div:nth-child(1){position:fixed;z-index:10;overflow-x:hidden;overflow-y:scroll;height:100%;top:0px;left:-30%;width:30%;transition:transform .25s}:host>div:nth-child(1).opened{transform:translate(100%)}:host>div:nth-child(2){position:relative;left:0%;opacity:1;transition:transform .25s,opacity .25s}:host>div:nth-child(1).opened+div{opacity:.7;transform:translate(30%);overflow-x:hidden}\n"] }]
|
|
33
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { toggle: [{
|
|
34
|
+
type: Input
|
|
35
|
+
}], opener: [{
|
|
36
|
+
type: Input
|
|
37
|
+
}], onClose: [{
|
|
38
|
+
type: Output
|
|
39
|
+
}], inside: [{
|
|
40
|
+
type: ViewChild,
|
|
41
|
+
args: ['inside']
|
|
42
|
+
}] } });
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVzaC1wYW5lbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtb2RlLXVpL3NyYy9saWIvY29tcG9uZW50cy9wdXNoLXBhbmVsL3B1c2gtcGFuZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW9kZS11aS9zcmMvbGliL2NvbXBvbmVudHMvcHVzaC1wYW5lbC9wdXNoLXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDNUMsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQVksTUFBTSxlQUFlLENBQUM7OztBQVV4RyxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsWUFBWTtJQUVoRCxZQUFZLFFBQWtCO1FBQzVCLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQVVBLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO0lBVHhELENBQUM7SUFFRCxJQUFxQixNQUFNLENBQUMsTUFBZTtRQUN2QyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztJQUMxQixDQUFDO0lBU00sT0FBTyxDQUFDLEtBQUs7UUFDaEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU07WUFDM0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDNUQsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFFcEYsSUFBSSxJQUFJLENBQUMsT0FBTztZQUNaLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDakQsQ0FBQyxXQUFXLEVBQUU7WUFDZCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNyQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ3ZCO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQzs7K0dBN0JRLGtCQUFrQjttR0FBbEIsa0JBQWtCLDhUQ1gvQiwrS0FNQTsyRkRLYSxrQkFBa0I7a0JBUjlCLFNBQVM7K0JBQ0ksZ0JBQWdCLFFBR3BCO3dCQUNGLGtCQUFrQixFQUFFLGlCQUFpQjtxQkFDeEM7K0ZBUW9CLE1BQU07c0JBQTFCLEtBQUs7Z0JBS1csTUFBTTtzQkFBdEIsS0FBSztnQkFFWSxPQUFPO3NCQUF4QixNQUFNO2dCQUVzQixNQUFNO3NCQUFsQyxTQUFTO3VCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPZGVDb21wb25lbnQgfSBmcm9tICduZ3gtb2RlLWNvcmUnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdvZGUtcHVzaC1wYW5lbCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3B1c2gtcGFuZWwuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3B1c2gtcGFuZWwuY29tcG9uZW50LnNjc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgICcoZG9jdW1lbnQ6Y2xpY2spJzogJ29uQ2xpY2soJGV2ZW50KScsXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBQdXNoUGFuZWxDb21wb25lbnQgZXh0ZW5kcyBPZGVDb21wb25lbnQge1xuXG4gICAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgICBzdXBlcihpbmplY3Rvcik7XG4gICAgfVxuXG4gICAgQElucHV0KCkgcHJpdmF0ZSBzZXQgdG9nZ2xlKHRvZ2dsZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9vcGVuZWQgPSB0b2dnbGU7XG4gICAgfVxuICAgIF9vcGVuZWQ6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBwcml2YXRlIG9wZW5lcjtcblxuICAgIEBPdXRwdXQoKSBwcml2YXRlIG9uQ2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICBAVmlld0NoaWxkKCdpbnNpZGUnKSBwcml2YXRlIGluc2lkZTogRWxlbWVudFJlZjtcblxuICAgIHB1YmxpYyBvbkNsaWNrKGV2ZW50KSB7XG4gICAgICAgIGNvbnN0IGNoZWNrT3BlbmVyID0gdGhpcy5vcGVuZXIgJiZcbiAgICAgICAgICAgICh0aGlzLm9wZW5lci5jb250YWlucyAmJiB0aGlzLm9wZW5lci5jb250YWlucyhldmVudC50YXJnZXQpKSB8fFxuICAgICAgICAgICAgKHRoaXMub3BlbmVyLm5hdGl2ZUVsZW1lbnQgJiYgdGhpcy5vcGVuZXIubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKTtcblxuICAgICAgICBpZiAodGhpcy5fb3BlbmVkICYmXG4gICAgICAgICAgICAhdGhpcy5pbnNpZGUubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpICYmXG4gICAgICAgICAgICAhY2hlY2tPcGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMuX29wZW5lZCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5vbkNsb3NlLmVtaXQoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbn1cbiIsIjxkaXYgW25nQ2xhc3NdPVwieyBvcGVuZWQ6IF9vcGVuZWQgfVwiICNpbnNpZGU+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIltpbnNpZGVdXCI+PC9uZy1jb250ZW50PlxuPC9kaXY+XG48ZGl2PlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJbY29tcGFuaW9uXVwiPjwvbmctY29udGVudD5cbjwvZGl2PlxuIl19
|