ngx-ode-ui 4.6.0-dev.0 → 4.6.0-dev.3
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 -5805
- 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 -177
- 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 -200
- 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 -5028
- package/fesm2015/ngx-ode-ui.js.map +0 -1
- package/fesm5/ngx-ode-ui.js +0 -5561
- 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,87 @@
|
|
|
1
|
+
import { OdeComponent } from 'ngx-ode-core';
|
|
2
|
+
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
3
|
+
import { Subject } from 'rxjs';
|
|
4
|
+
import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/common";
|
|
7
|
+
import * as i2 from "@angular/forms";
|
|
8
|
+
export class SearchInputComponent extends OdeComponent {
|
|
9
|
+
constructor(injector, _elRef, _renderer) {
|
|
10
|
+
super(injector);
|
|
11
|
+
this._elRef = _elRef;
|
|
12
|
+
this._renderer = _renderer;
|
|
13
|
+
/* Inputs / Outputs / View */
|
|
14
|
+
this.isSearchActive = false;
|
|
15
|
+
this.isSearchButtonDisabled = false;
|
|
16
|
+
this.searchInput = false;
|
|
17
|
+
this._delay = 200;
|
|
18
|
+
this.onChange = new EventEmitter();
|
|
19
|
+
/* Internal logic */
|
|
20
|
+
this.$searchTerms = new Subject();
|
|
21
|
+
}
|
|
22
|
+
set delay(d) {
|
|
23
|
+
this._delay = d;
|
|
24
|
+
this.observable = this.$searchTerms.pipe(debounceTime(this.delay), distinctUntilChanged());
|
|
25
|
+
if (this.observer) {
|
|
26
|
+
this.observer.unsubscribe();
|
|
27
|
+
}
|
|
28
|
+
this.observer = this.observable.subscribe(val => {
|
|
29
|
+
this.onChange.emit(val);
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
get delay() {
|
|
33
|
+
return this._delay;
|
|
34
|
+
}
|
|
35
|
+
evalAttributes() {
|
|
36
|
+
const element = this._elRef.nativeElement;
|
|
37
|
+
if (element && this.searchBox) {
|
|
38
|
+
for (let i = 0; i < element.attributes.length; i++) {
|
|
39
|
+
const attr = element.attributes[i];
|
|
40
|
+
this._renderer.setAttribute(this.searchBox.nativeElement, attr.name, attr.value);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
ngOnInit() {
|
|
45
|
+
super.ngOnInit();
|
|
46
|
+
if (!this.observable) {
|
|
47
|
+
this.observable = this.$searchTerms
|
|
48
|
+
.pipe(debounceTime(this.delay), distinctUntilChanged());
|
|
49
|
+
this.observer = this.observable.subscribe(val => {
|
|
50
|
+
this.onChange.emit(val);
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
setTimeout(() => this.evalAttributes(), 20);
|
|
54
|
+
}
|
|
55
|
+
ngOnDestroy() {
|
|
56
|
+
super.ngOnDestroy();
|
|
57
|
+
this.observer.unsubscribe();
|
|
58
|
+
}
|
|
59
|
+
search(str) {
|
|
60
|
+
this.$searchTerms.next(str);
|
|
61
|
+
}
|
|
62
|
+
handleSubmit() {
|
|
63
|
+
this.searchSubmit();
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
SearchInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: SearchInputComponent, deps: [{ token: i0.Injector }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
|
|
67
|
+
SearchInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.1", type: SearchInputComponent, selector: "ode-search-input", inputs: { isSearchActive: "isSearchActive", isSearchButtonDisabled: "isSearchButtonDisabled", searchInput: "searchInput", searchSubmit: "searchSubmit", delay: "delay" }, outputs: { onChange: "onChange" }, viewQueries: [{ propertyName: "searchBox", first: true, predicate: ["searchBox"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<form\n class=\"search-container\"\n (ngSubmit)=\"searchInput && handleSubmit()\">\n <input\n #searchBox\n class=\"search-input\"\n name=\"searchTerm\"\n type=\"search\"\n (input)=\"search(searchBox.value)\" />\n <button class=\"search-button\" *ngIf=\"searchInput\" [attr.disabled]=\"isSearchButtonDisabled ? true : null\">\n <i class=\"fa fa-search is-size-4 search-icon\"></i>\n </button>\n</form>\n\n<!-- <input *ngIf=\"!searchInput\" type=\"search\" #searchBox (input)=\"search(searchBox.value)\"/> -->", styles: [":host .search-container{margin:0;display:flex}:host .search-icon{padding-left:0}:host .search-button{margin:0;background:#ff8352;color:#fff}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }] });
|
|
68
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: SearchInputComponent, decorators: [{
|
|
69
|
+
type: Component,
|
|
70
|
+
args: [{ selector: 'ode-search-input', template: "<form\n class=\"search-container\"\n (ngSubmit)=\"searchInput && handleSubmit()\">\n <input\n #searchBox\n class=\"search-input\"\n name=\"searchTerm\"\n type=\"search\"\n (input)=\"search(searchBox.value)\" />\n <button class=\"search-button\" *ngIf=\"searchInput\" [attr.disabled]=\"isSearchButtonDisabled ? true : null\">\n <i class=\"fa fa-search is-size-4 search-icon\"></i>\n </button>\n</form>\n\n<!-- <input *ngIf=\"!searchInput\" type=\"search\" #searchBox (input)=\"search(searchBox.value)\"/> -->", styles: [":host .search-container{margin:0;display:flex}:host .search-icon{padding-left:0}:host .search-button{margin:0;background:#ff8352;color:#fff}\n"] }]
|
|
71
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { isSearchActive: [{
|
|
72
|
+
type: Input
|
|
73
|
+
}], isSearchButtonDisabled: [{
|
|
74
|
+
type: Input
|
|
75
|
+
}], searchInput: [{
|
|
76
|
+
type: Input
|
|
77
|
+
}], searchSubmit: [{
|
|
78
|
+
type: Input
|
|
79
|
+
}], delay: [{
|
|
80
|
+
type: Input
|
|
81
|
+
}], onChange: [{
|
|
82
|
+
type: Output
|
|
83
|
+
}], searchBox: [{
|
|
84
|
+
type: ViewChild,
|
|
85
|
+
args: ['searchBox']
|
|
86
|
+
}] } });
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1vZGUtdWkvc3JjL2xpYi9jb21wb25lbnRzL3NlYXJjaC1pbnB1dC9zZWFyY2gtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW9kZS11aS9zcmMvbGliL2NvbXBvbmVudHMvc2VhcmNoLWlucHV0L3NlYXJjaC1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFhLFNBQVMsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUN0SSxPQUFPLEVBQWEsT0FBTyxFQUFlLE1BQU0sTUFBTSxDQUFDO0FBQ3ZELE9BQU8sRUFBQyxZQUFZLEVBQUUsb0JBQW9CLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQVFsRSxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsWUFBWTtJQUVsRCxZQUFZLFFBQWtCLEVBQ1YsTUFBa0IsRUFDbEIsU0FBb0I7UUFDcEMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRkEsV0FBTSxHQUFOLE1BQU0sQ0FBWTtRQUNsQixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBSXhDLDZCQUE2QjtRQUNwQixtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUNoQywyQkFBc0IsR0FBWSxLQUFLLENBQUM7UUFDeEMsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFlOUIsV0FBTSxHQUFHLEdBQUcsQ0FBQztRQUVYLGFBQVEsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUl0RSxvQkFBb0I7UUFFWixpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7SUE1QjdDLENBQUM7SUFPRCxJQUFh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JztcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgUmVuZGVyZXIyLCBWaWV3Q2hpbGQsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge09ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2RlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWR9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ29kZS1zZWFyY2gtaW5wdXQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2gtaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3NlYXJjaC1pbnB1dC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFNlYXJjaElucHV0Q29tcG9uZW50IGV4dGVuZHMgT2RlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgX2VsUmVmOiBFbGVtZW50UmVmLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIpIHtcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xuICAgIH1cblxuICAgIC8qIElucHV0cyAvIE91dHB1dHMgLyBWaWV3ICovXG4gICAgQElucHV0KCkgaXNTZWFyY2hBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBpc1NlYXJjaEJ1dHRvbkRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgc2VhcmNoSW5wdXQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBzZWFyY2hTdWJtaXQ6ICgpID0+IHZvaWQ7XG4gICAgQElucHV0KCkgc2V0IGRlbGF5KGQ6IG51bWJlcikge1xuICAgICAgICB0aGlzLl9kZWxheSA9IGQ7XG4gICAgICAgIHRoaXMub2JzZXJ2YWJsZSA9IHRoaXMuJHNlYXJjaFRlcm1zLnBpcGUoZGVib3VuY2VUaW1lKHRoaXMuZGVsYXkpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcbiAgICAgICAgaWYgKHRoaXMub2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgIHRoaXMub2JzZXJ2ZXIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9ic2VydmVyID0gdGhpcy5vYnNlcnZhYmxlLnN1YnNjcmliZSh2YWwgPT4ge1xuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHZhbCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBnZXQgZGVsYXkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWxheTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfZGVsYXkgPSAyMDA7XG5cbiAgICBAT3V0cHV0KCkgb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgICBAVmlld0NoaWxkKCdzZWFyY2hCb3gnKSBzZWFyY2hCb3g6IEVsZW1lbnRSZWY7XG5cbiAgICAvKiBJbnRlcm5hbCBsb2dpYyAqL1xuXG4gICAgcHJpdmF0ZSAkc2VhcmNoVGVybXMgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG4gICAgcHJpdmF0ZSBvYnNlcnZhYmxlOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gICAgcHJpdmF0ZSBvYnNlcnZlcjogU3Vic2NyaXB0aW9uO1xuXG4gICAgcHJpdmF0ZSBldmFsQXR0cmlidXRlcygpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGlmIChlbGVtZW50ICYmIHRoaXMuc2VhcmNoQm94KSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVsZW1lbnQuYXR0cmlidXRlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGF0dHIgPSBlbGVtZW50LmF0dHJpYnV0ZXNbaV07XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuc2VhcmNoQm94Lm5hdGl2ZUVsZW1lbnQsIGF0dHIubmFtZSwgYXR0ci52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgaWYgKCF0aGlzLm9ic2VydmFibGUpIHtcbiAgICAgICAgICAgIHRoaXMub2JzZXJ2YWJsZSA9IHRoaXMuJHNlYXJjaFRlcm1zXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSh0aGlzLmRlbGF5KSxcbiAgICAgICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLm9ic2VydmVyID0gdGhpcy5vYnNlcnZhYmxlLnN1YnNjcmliZSh2YWwgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh2YWwpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmV2YWxBdHRyaWJ1dGVzKCksIDIwKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5vYnNlcnZlci51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHNlYXJjaChzdHI6IHN0cmluZykge1xuICAgICAgICB0aGlzLiRzZWFyY2hUZXJtcy5uZXh0KHN0cik7XG4gICAgfVxuXG4gICAgaGFuZGxlU3VibWl0KCkge1xuICAgICAgICB0aGlzLnNlYXJjaFN1Ym1pdCgpO1xuICAgIH1cblxufVxuIiwiPGZvcm1cbiAgICBjbGFzcz1cInNlYXJjaC1jb250YWluZXJcIlxuICAgIChuZ1N1Ym1pdCk9XCJzZWFyY2hJbnB1dCAmJiBoYW5kbGVTdWJtaXQoKVwiPlxuICAgIDxpbnB1dFxuICAgICAgICAjc2VhcmNoQm94XG4gICAgICAgIGNsYXNzPVwic2VhcmNoLWlucHV0XCJcbiAgICAgICAgbmFtZT1cInNlYXJjaFRlcm1cIlxuICAgICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgICAgKGlucHV0KT1cInNlYXJjaChzZWFyY2hCb3gudmFsdWUpXCIgLz5cbiAgICA8YnV0dG9uIGNsYXNzPVwic2VhcmNoLWJ1dHRvblwiICpuZ0lmPVwic2VhcmNoSW5wdXRcIiBbYXR0ci5kaXNhYmxlZF09XCJpc1NlYXJjaEJ1dHRvbkRpc2FibGVkID8gdHJ1ZSA6IG51bGxcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1zZWFyY2ggaXMtc2l6ZS00IHNlYXJjaC1pY29uXCI+PC9pPlxuICAgIDwvYnV0dG9uPlxuPC9mb3JtPlxuXG48IS0tIDxpbnB1dCAqbmdJZj1cIiFzZWFyY2hJbnB1dFwiIHR5cGU9XCJzZWFyY2hcIiAjc2VhcmNoQm94IChpbnB1dCk9XCJzZWFyY2goc2VhcmNoQm94LnZhbHVlKVwiLz4gLS0+Il19
|
|
@@ -0,0 +1,56 @@
|
|
|
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 "@angular/common";
|
|
5
|
+
import * as i2 from "ngx-ode-sijil";
|
|
6
|
+
/**
|
|
7
|
+
* Search Toolbar component.
|
|
8
|
+
* Used within List component, Search Toolbar will display following information:
|
|
9
|
+
* - Label of the search filter section (example: 'Search by')
|
|
10
|
+
* - List of search type filters (example: 'Name', 'Email' , ...)
|
|
11
|
+
* - Number of items returned by the search
|
|
12
|
+
*
|
|
13
|
+
```
|
|
14
|
+
<ode-search-toolbar
|
|
15
|
+
[label]="'user.searchType.label'"
|
|
16
|
+
[searchTypes]="searchTypes"
|
|
17
|
+
[nbItem]="nbUser || 0"
|
|
18
|
+
[nbItemLabel]="'list.results.users'"
|
|
19
|
+
(selectSearchType)="handleSelectSearchType($event)"
|
|
20
|
+
>
|
|
21
|
+
</ode-search-toolbar>
|
|
22
|
+
```
|
|
23
|
+
*/
|
|
24
|
+
export class SearchToolbarComponent extends OdeComponent {
|
|
25
|
+
constructor(injector) {
|
|
26
|
+
super(injector);
|
|
27
|
+
this.nbItem = 0;
|
|
28
|
+
this.selectSearchType = new EventEmitter();
|
|
29
|
+
}
|
|
30
|
+
ngOnInit() {
|
|
31
|
+
if (this.searchTypes && this.searchTypes.length > 0) {
|
|
32
|
+
this.selectedSearchTypeValue = this.searchTypes[0].value;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
handleSearchTypeClick(searchTypeValue) {
|
|
36
|
+
this.selectedSearchTypeValue = searchTypeValue;
|
|
37
|
+
this.selectSearchType.emit(searchTypeValue);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
SearchToolbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: SearchToolbarComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
41
|
+
SearchToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.1", type: SearchToolbarComponent, selector: "ode-search-toolbar", inputs: { label: "label", searchTypes: "searchTypes", nbItem: "nbItem", nbItemLabel: "nbItemLabel" }, outputs: { selectSearchType: "selectSearchType" }, usesInheritance: true, ngImport: i0, template: "<div class=\"search-toolbar\">\n <div class=\"search-toolbar-label\">\n <s5l>{{ label }}</s5l>\n <button\n *ngFor=\"let searchType of searchTypes\"\n class=\"button has-left-margin-5\"\n [ngClass]=\"{\n 'is-selected': searchType.value === selectedSearchTypeValue\n }\"\n (click)=\"handleSearchTypeClick(searchType.value)\"\n >\n <s5l>{{ searchType.label }}</s5l>\n </button>\n </div>\n <div>\n <strong class=\"badge\">{{ nbItem }} <s5l>{{ nbItemLabel }}</s5l></strong>\n </div>\n</div>\n", styles: [".search-toolbar{display:flex;align-items:center;justify-content:space-between;padding:15px}.search-toolbar .search-toolbar-label{font-size:.85rem}.search-toolbar .search-toolbar-label .button{padding:4px 12px;border-radius:20px;font-size:12px;border-width:2px;border-color:#ff8d2e}\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: "component", type: i2.S5lComponent, selector: "s5l", inputs: ["s5l-params", "s5l-lang"] }] });
|
|
42
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: SearchToolbarComponent, decorators: [{
|
|
43
|
+
type: Component,
|
|
44
|
+
args: [{ selector: 'ode-search-toolbar', template: "<div class=\"search-toolbar\">\n <div class=\"search-toolbar-label\">\n <s5l>{{ label }}</s5l>\n <button\n *ngFor=\"let searchType of searchTypes\"\n class=\"button has-left-margin-5\"\n [ngClass]=\"{\n 'is-selected': searchType.value === selectedSearchTypeValue\n }\"\n (click)=\"handleSearchTypeClick(searchType.value)\"\n >\n <s5l>{{ searchType.label }}</s5l>\n </button>\n </div>\n <div>\n <strong class=\"badge\">{{ nbItem }} <s5l>{{ nbItemLabel }}</s5l></strong>\n </div>\n</div>\n", styles: [".search-toolbar{display:flex;align-items:center;justify-content:space-between;padding:15px}.search-toolbar .search-toolbar-label{font-size:.85rem}.search-toolbar .search-toolbar-label .button{padding:4px 12px;border-radius:20px;font-size:12px;border-width:2px;border-color:#ff8d2e}\n"] }]
|
|
45
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { label: [{
|
|
46
|
+
type: Input
|
|
47
|
+
}], searchTypes: [{
|
|
48
|
+
type: Input
|
|
49
|
+
}], nbItem: [{
|
|
50
|
+
type: Input
|
|
51
|
+
}], nbItemLabel: [{
|
|
52
|
+
type: Input
|
|
53
|
+
}], selectSearchType: [{
|
|
54
|
+
type: Output
|
|
55
|
+
}] } });
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXRvb2xiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW9kZS11aS9zcmMvbGliL2NvbXBvbmVudHMvc2VhcmNoLXRvb2xiYXIvc2VhcmNoLXRvb2xiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW9kZS11aS9zcmMvbGliL2NvbXBvbmVudHMvc2VhcmNoLXRvb2xiYXIvc2VhcmNoLXRvb2xiYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQVksS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDOzs7O0FBRTVDOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQU9ILE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxZQUFZO0lBVXRELFlBQVksUUFBa0I7UUFDNUIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBUFQsV0FBTSxHQUFXLENBQUMsQ0FBQztRQUVsQixxQkFBZ0IsR0FBeUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQU10RSxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDbkQsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1NBQzFEO0lBQ0wsQ0FBQztJQUVNLHFCQUFxQixDQUFDLGVBQXVCO1FBQ2xELElBQUksQ0FBQyx1QkFBdUIsR0FBRyxlQUFlLENBQUM7UUFDL0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM5QyxDQUFDOzttSEF2QlUsc0JBQXNCO3VHQUF0QixzQkFBc0IsME9DM0JuQyxpaUJBa0JBOzJGRFNhLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDRSxvQkFBb0I7K0ZBTXJCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNJLGdCQUFnQjtzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3RvciwgSW5wdXQsIE91dHB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBPZGVDb21wb25lbnQgfSBmcm9tIFwibmd4LW9kZS1jb3JlXCI7XG5cbi8qKlxuICogU2VhcmNoIFRvb2xiYXIgY29tcG9uZW50LlxuICogVXNlZCB3aXRoaW4gTGlzdCBjb21wb25lbnQsIFNlYXJjaCBUb29sYmFyIHdpbGwgZGlzcGxheSBmb2xsb3dpbmcgaW5mb3JtYXRpb246XG4gKiAtIExhYmVsIG9mIHRoZSBzZWFyY2ggZmlsdGVyIHNlY3Rpb24gKGV4YW1wbGU6ICdTZWFyY2ggYnknKVxuICogLSBMaXN0IG9mIHNlYXJjaCB0eXBlIGZpbHRlcnMgKGV4YW1wbGU6ICdOYW1lJywgJ0VtYWlsJyAsIC4uLilcbiAqIC0gTnVtYmVyIG9mIGl0ZW1zIHJldHVybmVkIGJ5IHRoZSBzZWFyY2hcbiAqXG5gYGBcbjxvZGUtc2VhcmNoLXRvb2xiYXJcbiAgW2xhYmVsXT1cIid1c2VyLnNlYXJjaFR5cGUubGFiZWwnXCJcbiAgW3NlYXJjaFR5cGVzXT1cInNlYXJjaFR5cGVzXCJcbiAgW25iSXRlbV09XCJuYlVzZXIgfHwgMFwiXG4gIFtuYkl0ZW1MYWJlbF09XCInbGlzdC5yZXN1bHRzLnVzZXJzJ1wiXG4gIChzZWxlY3RTZWFyY2hUeXBlKT1cImhhbmRsZVNlbGVjdFNlYXJjaFR5cGUoJGV2ZW50KVwiXG4+XG48L29kZS1zZWFyY2gtdG9vbGJhcj5cbmBgYFxuICovXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ29kZS1zZWFyY2gtdG9vbGJhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2gtdG9vbGJhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlYXJjaC10b29sYmFyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoVG9vbGJhckNvbXBvbmVudCBleHRlbmRzIE9kZUNvbXBvbmVudCB7XG5cbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZztcbiAgQElucHV0KCkgc2VhcmNoVHlwZXM6IEFycmF5PHtsYWJlbDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nfT47XG4gIEBJbnB1dCgpIG5iSXRlbTogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgbmJJdGVtTGFiZWw6IHN0cmluZztcbiAgQE91dHB1dCgpIHNlbGVjdFNlYXJjaFR5cGU6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHNlbGVjdGVkU2VhcmNoVHlwZVZhbHVlOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICBpZiAodGhpcy5zZWFyY2hUeXBlcyAmJiB0aGlzLnNlYXJjaFR5cGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFNlYXJjaFR5cGVWYWx1ZSA9IHRoaXMuc2VhcmNoVHlwZXNbMF0udmFsdWU7XG4gICAgICB9XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlU2VhcmNoVHlwZUNsaWNrKHNlYXJjaFR5cGVWYWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZFNlYXJjaFR5cGVWYWx1ZSA9IHNlYXJjaFR5cGVWYWx1ZTtcbiAgICB0aGlzLnNlbGVjdFNlYXJjaFR5cGUuZW1pdChzZWFyY2hUeXBlVmFsdWUpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic2VhcmNoLXRvb2xiYXJcIj5cbiAgPGRpdiBjbGFzcz1cInNlYXJjaC10b29sYmFyLWxhYmVsXCI+XG4gICAgPHM1bD57eyBsYWJlbCB9fTwvczVsPlxuICAgIDxidXR0b25cbiAgICAgICpuZ0Zvcj1cImxldCBzZWFyY2hUeXBlIG9mIHNlYXJjaFR5cGVzXCJcbiAgICAgIGNsYXNzPVwiYnV0dG9uIGhhcy1sZWZ0LW1hcmdpbi01XCJcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ2lzLXNlbGVjdGVkJzogc2VhcmNoVHlwZS52YWx1ZSA9PT0gc2VsZWN0ZWRTZWFyY2hUeXBlVmFsdWVcbiAgICAgIH1cIlxuICAgICAgKGNsaWNrKT1cImhhbmRsZVNlYXJjaFR5cGVDbGljayhzZWFyY2hUeXBlLnZhbHVlKVwiXG4gICAgPlxuICAgICAgPHM1bD57eyBzZWFyY2hUeXBlLmxhYmVsIH19PC9zNWw+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2PlxuICAgIDxzdHJvbmcgY2xhc3M9XCJiYWRnZVwiPnt7IG5iSXRlbSB9fSA8czVsPnt7IG5iSXRlbUxhYmVsIH19PC9zNWw+PC9zdHJvbmc+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { OdeComponent } from 'ngx-ode-core';
|
|
2
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
export class SideLayoutComponent extends OdeComponent {
|
|
6
|
+
constructor(injector) {
|
|
7
|
+
super(injector);
|
|
8
|
+
this.showCompanion = false;
|
|
9
|
+
this.close = new EventEmitter();
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
SideLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: SideLayoutComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
13
|
+
SideLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.1", type: SideLayoutComponent, selector: "ode-side-layout", inputs: { showCompanion: "showCompanion" }, outputs: { close: "closeCompanion" }, usesInheritance: true, ngImport: i0, template: "<div class=\"side-layout\">\n <div class=\"side-card\">\n <ng-content select=\"[side-card]\"></ng-content>\n </div>\n <div class=\"side-companion\" *ngIf=\"showCompanion\">\n <ng-content select=\"[side-companion]\"></ng-content>\n </div>\n</div>\n", styles: ["div.side-layout{display:flex;flex-wrap:nowrap;align-items:flex-start}div.side-card{flex:400px 0 0;position:relative}div.side-companion{flex:1;position:relative;margin-left:25px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: SideLayoutComponent, decorators: [{
|
|
15
|
+
type: Component,
|
|
16
|
+
args: [{ selector: 'ode-side-layout', template: "<div class=\"side-layout\">\n <div class=\"side-card\">\n <ng-content select=\"[side-card]\"></ng-content>\n </div>\n <div class=\"side-companion\" *ngIf=\"showCompanion\">\n <ng-content select=\"[side-companion]\"></ng-content>\n </div>\n</div>\n", styles: ["div.side-layout{display:flex;flex-wrap:nowrap;align-items:flex-start}div.side-card{flex:400px 0 0;position:relative}div.side-companion{flex:1;position:relative;margin-left:25px}\n"] }]
|
|
17
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { showCompanion: [{
|
|
18
|
+
type: Input
|
|
19
|
+
}], close: [{
|
|
20
|
+
type: Output,
|
|
21
|
+
args: ['closeCompanion']
|
|
22
|
+
}] } });
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1sYXlvdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW9kZS11aS9zcmMvbGliL2NvbXBvbmVudHMvc2lkZS1sYXlvdXQvc2lkZS1sYXlvdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW9kZS11aS9zcmMvbGliL2NvbXBvbmVudHMvc2lkZS1sYXlvdXQvc2lkZS1sYXlvdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM1QyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFZLE1BQU0sZUFBZSxDQUFDOzs7QUFPakYsTUFBTSxPQUFPLG1CQUFvQixTQUFRLFlBQVk7SUFJakQsWUFBWSxRQUFrQjtRQUMxQixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFKWCxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUNMLFVBQUssR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUkvRSxDQUFDOztnSEFOUSxtQkFBbUI7b0dBQW5CLG1CQUFtQixnS0NSaEMsbVFBUUE7MkZEQWEsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNJLGlCQUFpQjsrRkFLbEIsYUFBYTtzQkFBckIsS0FBSztnQkFDb0IsS0FBSztzQkFBOUIsTUFBTTt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPZGVDb21wb25lbnQgfSBmcm9tICduZ3gtb2RlLWNvcmUnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnb2RlLXNpZGUtbGF5b3V0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2lkZS1sYXlvdXQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3NpZGUtbGF5b3V0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU2lkZUxheW91dENvbXBvbmVudCBleHRlbmRzIE9kZUNvbXBvbmVudCB7XG4gICAgQElucHV0KCkgc2hvd0NvbXBhbmlvbiA9IGZhbHNlO1xuICAgIEBPdXRwdXQoJ2Nsb3NlQ29tcGFuaW9uJykgY2xvc2U6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIGNvbnN0cnVjdG9yKGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgICAgICBzdXBlcihpbmplY3Rvcik7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInNpZGUtbGF5b3V0XCI+XG4gIDxkaXYgY2xhc3M9XCJzaWRlLWNhcmRcIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc2lkZS1jYXJkXVwiPjwvbmctY29udGVudD5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJzaWRlLWNvbXBhbmlvblwiICpuZ0lmPVwic2hvd0NvbXBhbmlvblwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzaWRlLWNvbXBhbmlvbl1cIj48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { OdeComponent } from 'ngx-ode-core';
|
|
2
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
export class SidePanelComponent extends OdeComponent {
|
|
6
|
+
constructor(injector, elementRef) {
|
|
7
|
+
super(injector);
|
|
8
|
+
this.elementRef = elementRef;
|
|
9
|
+
this.onClose = new EventEmitter();
|
|
10
|
+
}
|
|
11
|
+
set toggle(toggle) {
|
|
12
|
+
this.opened = toggle;
|
|
13
|
+
}
|
|
14
|
+
onClick(event) {
|
|
15
|
+
const checkOpener = this.opener &&
|
|
16
|
+
(this.opener.contains && this.opener.contains(event.target)) ||
|
|
17
|
+
(this.opener.nativeElement && this.opener.nativeElement.contains(event.target));
|
|
18
|
+
if (this.opened &&
|
|
19
|
+
!this.elementRef.nativeElement.contains(event.target) &&
|
|
20
|
+
!checkOpener) {
|
|
21
|
+
this.opened = false;
|
|
22
|
+
this.onClose.emit();
|
|
23
|
+
}
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
SidePanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: SidePanelComponent, deps: [{ token: i0.Injector }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
28
|
+
SidePanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.1", type: SidePanelComponent, selector: "ode-side-panel", inputs: { toggle: "toggle", opener: "opener" }, outputs: { onClose: "onClose" }, host: { listeners: { "document:click": "onClick($event)" } }, usesInheritance: true, ngImport: i0, template: "<div [ngClass]=\"{ opened: opened }\">\n <ng-content></ng-content>\n</div>\n", styles: ["div{position:fixed;z-index:10;overflow-x:hidden;overflow-y:scroll;top:0;left:-30%;width:30%;transition:transform .25s}div.opened{transform:translate(100%)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
29
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: SidePanelComponent, decorators: [{
|
|
30
|
+
type: Component,
|
|
31
|
+
args: [{ selector: 'ode-side-panel', host: {
|
|
32
|
+
'(document:click)': 'onClick($event)',
|
|
33
|
+
}, template: "<div [ngClass]=\"{ opened: opened }\">\n <ng-content></ng-content>\n</div>\n", styles: ["div{position:fixed;z-index:10;overflow-x:hidden;overflow-y:scroll;top:0;left:-30%;width:30%;transition:transform .25s}div.opened{transform:translate(100%)}\n"] }]
|
|
34
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.ElementRef }]; }, propDecorators: { toggle: [{
|
|
35
|
+
type: Input
|
|
36
|
+
}], opener: [{
|
|
37
|
+
type: Input
|
|
38
|
+
}], onClose: [{
|
|
39
|
+
type: Output
|
|
40
|
+
}] } });
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1wYW5lbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtb2RlLXVpL3NyYy9saWIvY29tcG9uZW50cy9zaWRlLXBhbmVsL3NpZGUtcGFuZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW9kZS11aS9zcmMvbGliL2NvbXBvbmVudHMvc2lkZS1wYW5lbC9zaWRlLXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDNUMsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBWSxNQUFNLGVBQWUsQ0FBQzs7O0FBVTdGLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxZQUFZO0lBR2hELFlBQVksUUFBa0IsRUFBVSxVQUFzQjtRQUMxRCxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFEb0IsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQVNwRCxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztJQVBoRCxDQUFDO0lBRUQsSUFBYSxNQUFNLENBQUMsTUFBZTtRQUMvQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN6QixDQUFDO0lBS0QsT0FBTyxDQUFDLEtBQUs7UUFDVCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTTtZQUMzQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM1RCxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUVwRixJQUFJLElBQUksQ0FBQyxNQUFNO1lBQ1gsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNyRCxDQUFDLFdBQVcsRUFBRTtZQUNkLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDdkI7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDOzsrR0ExQlEsa0JBQWtCO21HQUFsQixrQkFBa0IsNE5DWC9CLCtFQUdBOzJGRFFhLGtCQUFrQjtrQkFSOUIsU0FBUzsrQkFDSSxnQkFBZ0IsUUFHcEI7d0JBQ0Ysa0JBQWtCLEVBQUUsaUJBQWlCO3FCQUN4Qzt3SEFTWSxNQUFNO3NCQUFsQixLQUFLO2dCQUlHLE1BQU07c0JBQWQsS0FBSztnQkFDSSxPQUFPO3NCQUFoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2RlQ29tcG9uZW50IH0gZnJvbSAnbmd4LW9kZS1jb3JlJztcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ29kZS1zaWRlLXBhbmVsJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2lkZS1wYW5lbC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc2lkZS1wYW5lbC5jb21wb25lbnQuc2NzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJyhkb2N1bWVudDpjbGljayknOiAnb25DbGljaygkZXZlbnQpJyxcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFNpZGVQYW5lbENvbXBvbmVudCBleHRlbmRzIE9kZUNvbXBvbmVudCB7XG4gICAgb3BlbmVkOiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yLCBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCB0b2dnbGUodG9nZ2xlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMub3BlbmVkID0gdG9nZ2xlO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIG9wZW5lcjtcbiAgICBAT3V0cHV0KCkgb25DbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIG9uQ2xpY2soZXZlbnQpIHtcbiAgICAgICAgY29uc3QgY2hlY2tPcGVuZXIgPSB0aGlzLm9wZW5lciAmJlxuICAgICAgICAgICAgKHRoaXMub3BlbmVyLmNvbnRhaW5zICYmIHRoaXMub3BlbmVyLmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHx8XG4gICAgICAgICAgICAodGhpcy5vcGVuZXIubmF0aXZlRWxlbWVudCAmJiB0aGlzLm9wZW5lci5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpO1xuXG4gICAgICAgIGlmICh0aGlzLm9wZW5lZCAmJlxuICAgICAgICAgICAgIXRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkgJiZcbiAgICAgICAgICAgICFjaGVja09wZW5lcikge1xuICAgICAgICAgICAgdGhpcy5vcGVuZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMub25DbG9zZS5lbWl0KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG59XG4iLCI8ZGl2IFtuZ0NsYXNzXT1cInsgb3BlbmVkOiBvcGVuZWQgfVwiPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { OdeComponent } from 'ngx-ode-core';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../../services/spinner.service";
|
|
5
|
+
import * as i2 from "@angular/common";
|
|
6
|
+
export class SpinnerCubeComponent extends OdeComponent {
|
|
7
|
+
constructor(injector, spinner) {
|
|
8
|
+
super(injector);
|
|
9
|
+
this.spinner = spinner;
|
|
10
|
+
}
|
|
11
|
+
set loadingProp(prop) {
|
|
12
|
+
this._loadingProp = prop;
|
|
13
|
+
}
|
|
14
|
+
get loadingProp() { return this._loadingProp; }
|
|
15
|
+
ngOnInit() {
|
|
16
|
+
super.ngOnInit();
|
|
17
|
+
this.subscriptions.add(this.spinner.trigger.subscribe(() => {
|
|
18
|
+
this.changeDetector.markForCheck();
|
|
19
|
+
}));
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
SpinnerCubeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: SpinnerCubeComponent, deps: [{ token: i0.Injector }, { token: i1.SpinnerService }], target: i0.ɵɵFactoryTarget.Component });
|
|
23
|
+
SpinnerCubeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.1", type: SpinnerCubeComponent, selector: "ode-spinner-cube", inputs: { loadingProp: ["waitingFor", "loadingProp"] }, usesInheritance: true, ngImport: i0, template: "<div class=\"spinner-wrapper\" *ngIf=\"spinner.isLoading(loadingProp)\">\n <div class=\"spinner-cube\">\n <div class=\"sk-cube sk-cube1\"></div>\n <div class=\"sk-cube sk-cube2\"></div>\n <div class=\"sk-cube sk-cube3\"></div>\n <div class=\"sk-cube sk-cube4\"></div>\n <div class=\"sk-cube sk-cube5\"></div>\n <div class=\"sk-cube sk-cube6\"></div>\n <div class=\"sk-cube sk-cube7\"></div>\n <div class=\"sk-cube sk-cube8\"></div>\n <div class=\"sk-cube sk-cube9\"></div>\n </div>\n</div>\n", styles: ["div.spinner-wrapper{position:fixed;width:100%;height:100%;pointer-events:all;display:flex;justify-content:center;align-items:center}div.spinner-cube{width:20vh;height:20vh}div.sk-cube{width:33%;height:33%;float:left;animation:sk-cubeGridScaleDelay 1.3s infinite ease-in-out}div.sk-cube1{animation-delay:.2s}div.sk-cube2{animation-delay:.3s}div.sk-cube3{animation-delay:.4s}div.sk-cube4{animation-delay:.1s}div.sk-cube5{animation-delay:.2s}div.sk-cube6{animation-delay:.3s}div.sk-cube7{animation-delay:0s}div.sk-cube8{animation-delay:.1s}div.sk-cube9{animation-delay:.2s}@keyframes sk-cubeGridScaleDelay{0%,70%,to{transform:scaleZ(1)}35%{transform:scale3D(0,0,1)}}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: SpinnerCubeComponent, decorators: [{
|
|
25
|
+
type: Component,
|
|
26
|
+
args: [{ selector: 'ode-spinner-cube', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"spinner-wrapper\" *ngIf=\"spinner.isLoading(loadingProp)\">\n <div class=\"spinner-cube\">\n <div class=\"sk-cube sk-cube1\"></div>\n <div class=\"sk-cube sk-cube2\"></div>\n <div class=\"sk-cube sk-cube3\"></div>\n <div class=\"sk-cube sk-cube4\"></div>\n <div class=\"sk-cube sk-cube5\"></div>\n <div class=\"sk-cube sk-cube6\"></div>\n <div class=\"sk-cube sk-cube7\"></div>\n <div class=\"sk-cube sk-cube8\"></div>\n <div class=\"sk-cube sk-cube9\"></div>\n </div>\n</div>\n", styles: ["div.spinner-wrapper{position:fixed;width:100%;height:100%;pointer-events:all;display:flex;justify-content:center;align-items:center}div.spinner-cube{width:20vh;height:20vh}div.sk-cube{width:33%;height:33%;float:left;animation:sk-cubeGridScaleDelay 1.3s infinite ease-in-out}div.sk-cube1{animation-delay:.2s}div.sk-cube2{animation-delay:.3s}div.sk-cube3{animation-delay:.4s}div.sk-cube4{animation-delay:.1s}div.sk-cube5{animation-delay:.2s}div.sk-cube6{animation-delay:.3s}div.sk-cube7{animation-delay:0s}div.sk-cube8{animation-delay:.1s}div.sk-cube9{animation-delay:.2s}@keyframes sk-cubeGridScaleDelay{0%,70%,to{transform:scaleZ(1)}35%{transform:scale3D(0,0,1)}}\n"] }]
|
|
27
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.SpinnerService }]; }, propDecorators: { loadingProp: [{
|
|
28
|
+
type: Input,
|
|
29
|
+
args: ['waitingFor']
|
|
30
|
+
}] } });
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Bpbm5lci1jdWJlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1vZGUtdWkvc3JjL2xpYi9jb21wb25lbnRzL3NwaW5uZXItY3ViZS9zcGlubmVyLWN1YmUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW9kZS11aS9zcmMvbGliL2NvbXBvbmVudHMvc3Bpbm5lci1jdWJlL3NwaW5uZXItY3ViZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzVDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUErQixNQUFNLGVBQWUsQ0FBQzs7OztBQVN2RyxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsWUFBWTtJQVVsRCxZQUNJLFFBQWtCLEVBQ1gsT0FBdUI7UUFDMUIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRGIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7SUFFOUIsQ0FBQztJQVpMLElBQ0ksV0FBVyxDQUFDLElBQVk7UUFDeEIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7SUFDN0IsQ0FBQztJQUNELElBQUksV0FBVyxLQUFLLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7SUFVL0MsUUFBUTtRQUNKLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3ZELElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7O2lIQXJCUSxvQkFBb0I7cUdBQXBCLG9CQUFvQix1SUNWakMsMGdCQWFBOzJGREhhLG9CQUFvQjtrQkFOaEMsU0FBUzsrQkFDSSxrQkFBa0IsbUJBQ1gsdUJBQXVCLENBQUMsTUFBTTs0SEFPM0MsV0FBVztzQkFEZCxLQUFLO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPZGVDb21wb25lbnQgfSBmcm9tICduZ3gtb2RlLWNvcmUnO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Bpbm5lclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zcGlubmVyLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ29kZS1zcGlubmVyLWN1YmUnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zcGlubmVyLWN1YmUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3NwaW5uZXItY3ViZS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFNwaW5uZXJDdWJlQ29tcG9uZW50IGV4dGVuZHMgT2RlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgIEBJbnB1dCgnd2FpdGluZ0ZvcicpXG4gICAgc2V0IGxvYWRpbmdQcm9wKHByb3A6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9sb2FkaW5nUHJvcCA9IHByb3A7XG4gICAgfVxuICAgIGdldCBsb2FkaW5nUHJvcCgpIHsgcmV0dXJuIHRoaXMuX2xvYWRpbmdQcm9wOyB9XG4gICAgcHJpdmF0ZSBfbG9hZGluZ1Byb3A6IHN0cmluZztcblxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHVibGljIHNwaW5uZXI6IFNwaW5uZXJTZXJ2aWNlKSB7XG4gICAgICAgICAgICBzdXBlcihpbmplY3Rvcik7XG4gICAgICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMuc3Bpbm5lci50cmlnZ2VyLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KSk7XG4gICAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwic3Bpbm5lci13cmFwcGVyXCIgKm5nSWY9XCJzcGlubmVyLmlzTG9hZGluZyhsb2FkaW5nUHJvcClcIj5cbiAgPGRpdiBjbGFzcz1cInNwaW5uZXItY3ViZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJzay1jdWJlIHNrLWN1YmUxXCI+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInNrLWN1YmUgc2stY3ViZTJcIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic2stY3ViZSBzay1jdWJlM1wiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJzay1jdWJlIHNrLWN1YmU0XCI+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInNrLWN1YmUgc2stY3ViZTVcIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic2stY3ViZSBzay1jdWJlNlwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJzay1jdWJlIHNrLWN1YmU3XCI+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInNrLWN1YmUgc2stY3ViZThcIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic2stY3ViZSBzay1jdWJlOVwiPjwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { OdeComponent } from 'ngx-ode-core';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "ngx-ode-sijil";
|
|
5
|
+
import * as i2 from "@angular/common";
|
|
6
|
+
export class PagerComponent extends OdeComponent {
|
|
7
|
+
constructor(injector, bundles) {
|
|
8
|
+
super(injector);
|
|
9
|
+
this.bundles = bundles;
|
|
10
|
+
this.offsetChange = new EventEmitter();
|
|
11
|
+
this.translate = (...args) => this.bundles.translate(...args);
|
|
12
|
+
}
|
|
13
|
+
ngOnInit() { }
|
|
14
|
+
previousPage() {
|
|
15
|
+
if (this.offset - this.limit >= 0) {
|
|
16
|
+
this.offset = this.offset - this.limit;
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
this.offset = 0;
|
|
20
|
+
}
|
|
21
|
+
this.offsetChange.emit(this.offset);
|
|
22
|
+
}
|
|
23
|
+
nextPage() {
|
|
24
|
+
if (this.offset + this.limit <= this.total) {
|
|
25
|
+
this.offset = this.offset + this.limit;
|
|
26
|
+
}
|
|
27
|
+
this.offsetChange.emit(this.offset);
|
|
28
|
+
}
|
|
29
|
+
offsetLimit() {
|
|
30
|
+
return this.offset + this.limit < this.total ?
|
|
31
|
+
this.offset + this.limit : this.total;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
PagerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: PagerComponent, deps: [{ token: i0.Injector }, { token: i1.BundlesService }], target: i0.ɵɵFactoryTarget.Component });
|
|
35
|
+
PagerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.1", type: PagerComponent, selector: "ode-pager", inputs: { limit: "limit", offset: "offset", total: "total" }, outputs: { offsetChange: "offsetChange" }, usesInheritance: true, ngImport: i0, template: "<strong><s5l>pager.page</s5l></strong>\n<a class=\"button\" [ngClass]=\"{'is-hidden': offset - limit < 0}\" (click)=\"previousPage()\">\n <i class=\"fa fa-chevron-left\"></i> <s5l>pager.page.previous</s5l>\n</a>\n<span>{{\"pager.position\" | translate : {offset : offset+1, offsetLimit:offsetLimit(), total:total} }}</span>\n<a class=\"button\" [ngClass]=\"{'is-hidden': offset + limit > total}\" (click)=\"nextPage()\">\n <s5l>pager.page.next</s5l> <i class=\"fa fa-chevron-right\"></i>\n</a>\n", styles: ["i{cursor:pointer;padding:0 2px}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i1.S5lComponent, selector: "s5l", inputs: ["s5l-params", "s5l-lang"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
36
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: PagerComponent, decorators: [{
|
|
37
|
+
type: Component,
|
|
38
|
+
args: [{ selector: 'ode-pager', changeDetection: ChangeDetectionStrategy.OnPush, template: "<strong><s5l>pager.page</s5l></strong>\n<a class=\"button\" [ngClass]=\"{'is-hidden': offset - limit < 0}\" (click)=\"previousPage()\">\n <i class=\"fa fa-chevron-left\"></i> <s5l>pager.page.previous</s5l>\n</a>\n<span>{{\"pager.position\" | translate : {offset : offset+1, offsetLimit:offsetLimit(), total:total} }}</span>\n<a class=\"button\" [ngClass]=\"{'is-hidden': offset + limit > total}\" (click)=\"nextPage()\">\n <s5l>pager.page.next</s5l> <i class=\"fa fa-chevron-right\"></i>\n</a>\n", styles: ["i{cursor:pointer;padding:0 2px}\n"] }]
|
|
39
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.BundlesService }]; }, propDecorators: { limit: [{
|
|
40
|
+
type: Input
|
|
41
|
+
}], offset: [{
|
|
42
|
+
type: Input
|
|
43
|
+
}], offsetChange: [{
|
|
44
|
+
type: Output
|
|
45
|
+
}], total: [{
|
|
46
|
+
type: Input
|
|
47
|
+
}] } });
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW9kZS11aS9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUvcGFnZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW9kZS11aS9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUvcGFnZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM1QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFZLE1BQU0sZUFBZSxDQUFDOzs7O0FBWWxILE1BQU0sT0FBTyxjQUFlLFNBQVEsWUFBWTtJQUM1QyxZQUNJLFFBQWtCLEVBQ1YsT0FBdUI7UUFFM0IsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRlosWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFRekIsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBSXBELGNBQVMsR0FBRyxDQUFDLEdBQUcsSUFBSSxFQUFFLEVBQUUsQ0FBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQWlCLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztJQVQ5RCxDQUFDO0lBV0wsUUFBUSxLQUFJLENBQUM7SUFFYixZQUFZO1FBQ1IsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxFQUFFO1lBQy9CLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQzFDO2FBQU07WUFDSCxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztTQUNuQjtRQUNELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDeEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7U0FDMUM7UUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELFdBQVc7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQzlDLENBQUM7OzJHQXRDUSxjQUFjOytGQUFkLGNBQWMsaUxDYjNCLHFmQVFBOzJGREthLGNBQWM7a0JBUjFCLFNBQVM7K0JBQ0ksV0FBVyxtQkFLSix1QkFBdUIsQ0FBQyxNQUFNOzRIQVV0QyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUNJLFlBQVk7c0JBQXJCLE1BQU07Z0JBRUUsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2RlQ29tcG9uZW50IH0gZnJvbSAnbmd4LW9kZS1jb3JlJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtCdW5kbGVzU2VydmljZX0gZnJvbSAnbmd4LW9kZS1zaWppbCc7XG5cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdvZGUtcGFnZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9wYWdlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVzOiBbYFxuICAgICAgICBpIHtjdXJzb3I6IHBvaW50ZXI7IHBhZGRpbmc6IDAgMnB4O31cbiAgICBgXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlckNvbXBvbmVudCBleHRlbmRzIE9kZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHJpdmF0ZSBidW5kbGVzOiBCdW5kbGVzU2VydmljZVxuICAgICAgICApICB7XG4gICAgICAgICAgICBzdXBlcihpbmplY3Rvcik7XG4gICAgICAgIH1cblxuICAgIEBJbnB1dCgpIGxpbWl0OiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSBvZmZzZXQ6IG51bWJlcjtcbiAgICBAT3V0cHV0KCkgb2Zmc2V0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgICBASW5wdXQoKSB0b3RhbDogbnVtYmVyO1xuXG4gICAgdHJhbnNsYXRlID0gKC4uLmFyZ3MpID0+ICh0aGlzLmJ1bmRsZXMudHJhbnNsYXRlIGFzIGFueSkoLi4uYXJncyk7XG5cbiAgICBuZ09uSW5pdCgpIHt9XG5cbiAgICBwcmV2aW91c1BhZ2UoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm9mZnNldCAtIHRoaXMubGltaXQgPj0gMCkge1xuICAgICAgICAgICAgdGhpcy5vZmZzZXQgPSB0aGlzLm9mZnNldCAtIHRoaXMubGltaXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9mZnNldCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vZmZzZXRDaGFuZ2UuZW1pdCh0aGlzLm9mZnNldCk7XG4gICAgfVxuXG4gICAgbmV4dFBhZ2UoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm9mZnNldCArIHRoaXMubGltaXQgPD0gdGhpcy50b3RhbCkge1xuICAgICAgICAgICAgdGhpcy5vZmZzZXQgPSB0aGlzLm9mZnNldCArIHRoaXMubGltaXQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vZmZzZXRDaGFuZ2UuZW1pdCh0aGlzLm9mZnNldCk7XG4gICAgfVxuXG4gICAgb2Zmc2V0TGltaXQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub2Zmc2V0ICsgdGhpcy5saW1pdCA8IHRoaXMudG90YWwgP1xuICAgICAgICAgICAgdGhpcy5vZmZzZXQgKyB0aGlzLmxpbWl0IDogdGhpcy50b3RhbDtcbiAgICB9XG59XG4iLCI8c3Ryb25nPjxzNWw+cGFnZXIucGFnZTwvczVsPjwvc3Ryb25nPlxuPGEgY2xhc3M9XCJidXR0b25cIiBbbmdDbGFzc109XCJ7J2lzLWhpZGRlbic6IG9mZnNldCAtIGxpbWl0IDwgMH1cIiAoY2xpY2spPVwicHJldmlvdXNQYWdlKClcIj5cbiAgPGkgY2xhc3M9XCJmYSBmYS1jaGV2cm9uLWxlZnRcIj48L2k+IDxzNWw+cGFnZXIucGFnZS5wcmV2aW91czwvczVsPlxuPC9hPlxuPHNwYW4+e3tcInBhZ2VyLnBvc2l0aW9uXCIgfCB0cmFuc2xhdGUgOiB7b2Zmc2V0IDogb2Zmc2V0KzEsICBvZmZzZXRMaW1pdDpvZmZzZXRMaW1pdCgpLCB0b3RhbDp0b3RhbH0gfX08L3NwYW4+XG48YSBjbGFzcz1cImJ1dHRvblwiIFtuZ0NsYXNzXT1cInsnaXMtaGlkZGVuJzogb2Zmc2V0ICsgbGltaXQgID4gdG90YWx9XCIgKGNsaWNrKT1cIm5leHRQYWdlKClcIj5cbiAgPHM1bD5wYWdlci5wYWdlLm5leHQ8L3M1bD4gPGkgY2xhc3M9XCJmYSBmYS1jaGV2cm9uLXJpZ2h0XCI+PC9pPlxuPC9hPlxuIl19
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { OdeComponent } from 'ngx-ode-core';
|
|
2
|
+
import { Component, Input } from '@angular/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class TooltipComponent extends OdeComponent {
|
|
5
|
+
constructor(injector, ref, renderer) {
|
|
6
|
+
super(injector);
|
|
7
|
+
this.ref = ref;
|
|
8
|
+
this.renderer = renderer;
|
|
9
|
+
this.position = 'bottom';
|
|
10
|
+
this.offset = 5;
|
|
11
|
+
this.onTransitionEnd = () => {
|
|
12
|
+
if (this.tooltipElt && !this.tooltipElt.classList.contains('shown')) {
|
|
13
|
+
this.tooltipElt.parentNode.removeChild(this.tooltipElt);
|
|
14
|
+
this.tooltipElt = null;
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
onMouseEnter() {
|
|
19
|
+
const r = this.renderer;
|
|
20
|
+
if (!this.tooltipElt) {
|
|
21
|
+
this.tooltipElt = this.renderer.createElement('div');
|
|
22
|
+
let tooltipText = this.renderer.createText(this.tooltipContents);
|
|
23
|
+
this.renderer.appendChild(this.tooltipElt, tooltipText);
|
|
24
|
+
this.renderer.addClass(this.tooltipElt, "tooltip");
|
|
25
|
+
this.renderer.appendChild(document.getElementsByTagName('body')[0], this.tooltipElt);
|
|
26
|
+
}
|
|
27
|
+
const tip = this.tooltipElt;
|
|
28
|
+
const pos = this.getPosition(this.ref.nativeElement, tip, this.position);
|
|
29
|
+
for (const prop in pos) {
|
|
30
|
+
this.renderer.setStyle(tip, prop, pos[prop] + 'px');
|
|
31
|
+
}
|
|
32
|
+
this.renderer.addClass(tip, 'shown');
|
|
33
|
+
}
|
|
34
|
+
onMouseLeave() {
|
|
35
|
+
const wait = this.tooltipElt &&
|
|
36
|
+
parseFloat(window.getComputedStyle(this.tooltipElt)['transition-duration']);
|
|
37
|
+
this.renderer.removeClass(this.tooltipElt, 'shown');
|
|
38
|
+
setTimeout(this.onTransitionEnd, wait * 1000);
|
|
39
|
+
}
|
|
40
|
+
getPosition(elt, tip, pos) {
|
|
41
|
+
const rect = {
|
|
42
|
+
top: elt.getBoundingClientRect().top + window.scrollY,
|
|
43
|
+
left: elt.getBoundingClientRect().left + window.scrollX
|
|
44
|
+
};
|
|
45
|
+
let left, top;
|
|
46
|
+
switch (pos) {
|
|
47
|
+
case 'top':
|
|
48
|
+
top = rect.top - tip.offsetHeight - this.offset;
|
|
49
|
+
left = rect.left + elt.offsetWidth / 2 - tip.offsetWidth / 2;
|
|
50
|
+
break;
|
|
51
|
+
case 'left':
|
|
52
|
+
top = rect.top + elt.offsetHeight / 2 - tip.offsetHeight / 2;
|
|
53
|
+
left = rect.left - tip.offsetWidth - this.offset;
|
|
54
|
+
break;
|
|
55
|
+
case 'right':
|
|
56
|
+
top = rect.top + elt.offsetHeight / 2 - tip.offsetHeight / 2;
|
|
57
|
+
left = rect.left + elt.offsetWidth + this.offset;
|
|
58
|
+
break;
|
|
59
|
+
case 'bottom':
|
|
60
|
+
default:
|
|
61
|
+
top = rect.top + elt.offsetHeight + this.offset;
|
|
62
|
+
left = rect.left + elt.offsetWidth / 2 - tip.offsetWidth / 2;
|
|
63
|
+
}
|
|
64
|
+
if (left < 0) {
|
|
65
|
+
left = rect.left + elt.offsetWidth + this.offset;
|
|
66
|
+
}
|
|
67
|
+
if (top < 0) {
|
|
68
|
+
top = rect.top + elt.offsetHeight + this.offset;
|
|
69
|
+
}
|
|
70
|
+
if (left + tip.offsetWidth >= window.pageXOffset + window.innerWidth) {
|
|
71
|
+
left = rect.left - tip.offsetWidth - this.offset;
|
|
72
|
+
}
|
|
73
|
+
if (top - tip.offsetHeight >= window.pageYOffset + window.innerHeight) {
|
|
74
|
+
top = rect.top - tip.offsetHeight - this.offset;
|
|
75
|
+
}
|
|
76
|
+
return {
|
|
77
|
+
top: top < 5 ? 5 : top,
|
|
78
|
+
left: left < 5 ? 5 : left
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
ngOnDestroy() {
|
|
82
|
+
if (this.tooltipElt) {
|
|
83
|
+
this.tooltipElt.parentNode.removeChild(this.tooltipElt);
|
|
84
|
+
this.tooltipElt = null;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
TooltipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: TooltipComponent, deps: [{ token: i0.Injector }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
|
|
89
|
+
TooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.1", type: TooltipComponent, selector: "[tooltip]", inputs: { tooltipContents: ["tooltip", "tooltipContents"], position: "position", offset: "offset" }, host: { listeners: { "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()" } }, usesInheritance: true, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: ["body>div.tooltip{position:absolute;z-index:100}\n"] });
|
|
90
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: TooltipComponent, decorators: [{
|
|
91
|
+
type: Component,
|
|
92
|
+
args: [{ selector: '[tooltip]', template: `<ng-content></ng-content>`, host: {
|
|
93
|
+
'(mouseenter)': 'onMouseEnter()',
|
|
94
|
+
'(mouseleave)': 'onMouseLeave()'
|
|
95
|
+
}, styles: ["body>div.tooltip{position:absolute;z-index:100}\n"] }]
|
|
96
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { tooltipContents: [{
|
|
97
|
+
type: Input,
|
|
98
|
+
args: ['tooltip']
|
|
99
|
+
}], position: [{
|
|
100
|
+
type: Input
|
|
101
|
+
}], offset: [{
|
|
102
|
+
type: Input
|
|
103
|
+
}] } });
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtb2RlLXVpL3NyYy9saWIvY29tcG9uZW50cy90b29sdGlwL3Rvb2x0aXAuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDNUMsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQXVCLE1BQU0sZUFBZSxDQUFDOztBQVdsRixNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsWUFBWTtJQUU5QyxZQUFZLFFBQWtCLEVBQ1YsR0FBZSxFQUNmLFFBQW1CO1FBQ3ZCLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUZaLFFBQUcsR0FBSCxHQUFHLENBQVk7UUFDZixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBSzlCLGFBQVEsR0FBd0MsUUFBUSxDQUFDO1FBQ3pELFdBQU0sR0FBRyxDQUFDLENBQUM7UUE2QnBCLG9CQUFlLEdBQUcsR0FBRyxFQUFFO1lBQ25CLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDakUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDeEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7YUFDMUI7UUFDTCxDQUFDLENBQUE7SUF0Q1csQ0FBQztJQVFiLFlBQVk7UUFDUixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBRXhCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFD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Q0FBQyxDQUFDLENBQUMsSUFBSTtTQUM1QixDQUFDO0lBQ04sQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDakIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUN4RCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztTQUMxQjtJQUNMLENBQUM7OzZHQWpHUSxnQkFBZ0I7aUdBQWhCLGdCQUFnQixzUUFQZiwyQkFBMkI7MkZBTzVCLGdCQUFnQjtrQkFUNUIsU0FBUzsrQkFDSSxXQUFXLFlBQ1gsMkJBQTJCLFFBRS9CO3dCQUNGLGNBQWMsRUFBRSxnQkFBZ0I7d0JBQ2hDLGNBQWMsRUFBRSxnQkFBZ0I7cUJBQ25DO2dKQVVpQixlQUFlO3NCQUFoQyxLQUFLO3VCQUFDLFNBQVM7Z0JBQ1AsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPZGVDb21wb25lbnQgfSBmcm9tICduZ3gtb2RlLWNvcmUnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgUmVuZGVyZXIyLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ1t0b29sdGlwXScsXG4gICAgdGVtcGxhdGU6IGA8bmctY29udGVudD48L25nLWNvbnRlbnQ+YCxcbiAgICBzdHlsZVVybHM6IFsnLi90b29sdGlwLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgaG9zdDoge1xuICAgICAgICAnKG1vdXNlZW50ZXIpJzogJ29uTW91c2VFbnRlcigpJyxcbiAgICAgICAgJyhtb3VzZWxlYXZlKSc6ICdvbk1vdXNlTGVhdmUoKSdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFRvb2x0aXBDb21wb25lbnQgZXh0ZW5kcyBPZGVDb21wb25lbnQge1xuXG4gICAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgcmVmOiBFbGVtZW50UmVmLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMikge1xuICAgICAgICAgICAgICAgICAgICBzdXBlcihpbmplY3Rvcik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgQElucHV0KCd0b29sdGlwJykgdG9vbHRpcENvbnRlbnRzOiBzdHJpbmc7XG4gICAgQElucHV0KCkgcG9zaXRpb246ICd0b3AnIHwgJ2xlZnQnIHwgJ3JpZ2h0JyB8ICdib3R0b20nID0gJ2JvdHRvbSc7XG4gICAgQElucHV0KCkgb2Zmc2V0ID0gNTtcblxuICAgIHByaXZhdGUgdG9vbHRpcEVsdDogSFRNTEVsZW1lbnQ7XG5cbiAgICBvbk1vdXNlRW50ZXIoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHIgPSB0aGlzLnJlbmRlcmVyO1xuXG4gICAgICAgIGlmICghdGhpcy50b29sdGlwRWx0KSB7XG4gICAgICAgICAgICB0aGlzLnRvb2x0aXBFbHQgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICAgICAgbGV0IHRvb2x0aXBUZXh0ID0gdGhpcy5yZW5kZXJlci5jcmVhdGVUZXh0KHRoaXMudG9vbHRpcENvbnRlbnRzKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy50b29sdGlwRWx0LCB0b29sdGlwVGV4dCk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMudG9vbHRpcEVsdCwgXCJ0b29sdGlwXCIpO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYm9keScpWzBdLCB0aGlzLnRvb2x0aXBFbHQpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRpcCA9IHRoaXMudG9vbHRpcEVsdDtcbiAgICAgICAgY29uc3QgcG9zID0gdGhpcy5nZXRQb3NpdGlvbih0aGlzLnJlZi5uYXRpdmVFbGVtZW50LCB0aXAsIHRoaXMucG9zaXRpb24pO1xuICAgICAgICBmb3IgKGNvbnN0IHByb3AgaW4gcG9zKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRpcCwgcHJvcCwgcG9zW3Byb3BdICsgJ3B4Jyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aXAsICdzaG93bicpO1xuICAgIH1cblxuICAgIG9uTW91c2VMZWF2ZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgd2FpdCA9IHRoaXMudG9vbHRpcEVsdCAmJlxuICAgICAgICAgICAgcGFyc2VGbG9hdCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLnRvb2x0aXBFbHQpWyd0cmFuc2l0aW9uLWR1cmF0aW9uJ10pO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMudG9vbHRpcEVsdCwgJ3Nob3duJyk7XG4gICAgICAgIHNldFRpbWVvdXQodGhpcy5vblRyYW5zaXRpb25FbmQsIHdhaXQgKiAxMDAwKTtcbiAgICB9XG5cbiAgICBvblRyYW5zaXRpb25FbmQgPSAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnRvb2x0aXBFbHQgJiYgIXRoaXMudG9vbHRpcEVsdC5jbGFzc0xpc3QuY29udGFpbnMoJ3Nob3duJykpIHtcbiAgICAgICAgICAgIHRoaXMudG9vbHRpcEVsdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMudG9vbHRpcEVsdCk7XG4gICAgICAgICAgICB0aGlzLnRvb2x0aXBFbHQgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRQb3NpdGlvbihlbHQsIHRpcCwgcG9zKSB7XG4gICAgICAgIGNvbnN0IHJlY3QgPSB7XG4gICAgICAgICAgICB0b3A6IGVsdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgKyB3aW5kb3cuc2Nyb2xsWSxcbiAgICAgICAgICAgIGxlZnQ6IGVsdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0ICsgd2luZG93LnNjcm9sbFhcbiAgICAgICAgfTtcbiAgICAgICAgbGV0IGxlZnQsIHRvcDtcblxuICAgICAgICBzd2l0Y2ggKHBvcykge1xuXG4gICAgICAgICAgICBjYXNlICd0b3AnOlxuICAgICAgICAgICAgICAgIHRvcCA9IHJlY3QudG9wIC0gdGlwLm9mZnNldEhlaWdodCAtIHRoaXMub2Zmc2V0O1xuICAgICAgICAgICAgICAgIGxlZnQgPSByZWN0LmxlZnQgKyBlbHQub2Zmc2V0V2lkdGggLyAyIC0gdGlwLm9mZnNldFdpZHRoIC8gMjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICAgICAgICAgIHRvcCA9IHJlY3QudG9wICsgZWx0Lm9mZnNldEhlaWdodCAvIDIgLSB0aXAub2Zmc2V0SGVpZ2h0IC8gMjtcbiAgICAgICAgICAgICAgICBsZWZ0ID0gcmVjdC5sZWZ0IC0gdGlwLm9mZnNldFdpZHRoIC0gdGhpcy5vZmZzZXQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgICAgICAgICAgdG9wID0gcmVjdC50b3AgKyBlbHQub2Zmc2V0SGVpZ2h0IC8gMiAtIHRpcC5vZmZzZXRIZWlnaHQgLyAyO1xuICAgICAgICAgICAgICAgIGxlZnQgPSByZWN0LmxlZnQgKyBlbHQub2Zmc2V0V2lkdGggKyB0aGlzLm9mZnNldDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRvcCA9IHJlY3QudG9wICsgZWx0Lm9mZnNldEhlaWdodCArIHRoaXMub2Zmc2V0O1xuICAgICAgICAgICAgICAgIGxlZnQgPSByZWN0LmxlZnQgKyBlbHQub2Zmc2V0V2lkdGggLyAyIC0gdGlwLm9mZnNldFdpZHRoIC8gMjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsZWZ0IDwgMCApIHtcbiAgICAgICAgICAgIGxlZnQgPSByZWN0LmxlZnQgKyBlbHQub2Zmc2V0V2lkdGggKyB0aGlzLm9mZnNldDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodG9wIDwgMCkge1xuICAgICAgICAgICAgdG9wID0gcmVjdC50b3AgKyBlbHQub2Zmc2V0SGVpZ2h0ICsgdGhpcy5vZmZzZXQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxlZnQgKyB0aXAub2Zmc2V0V2lkdGggPj0gd2luZG93LnBhZ2VYT2Zmc2V0ICsgd2luZG93LmlubmVyV2lkdGgpIHtcbiAgICAgICAgICAgIGxlZnQgPSByZWN0LmxlZnQgLSB0aXAub2Zmc2V0V2lkdGggLSB0aGlzLm9mZnNldDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodG9wIC0gdGlwLm9mZnNldEhlaWdodCA+PSB3aW5kb3cucGFnZVlPZmZzZXQgKyB3aW5kb3cuaW5uZXJIZWlnaHQpIHtcbiAgICAgICAgICAgIHRvcCA9IHJlY3QudG9wIC0gdGlwLm9mZnNldEhlaWdodCAtIHRoaXMub2Zmc2V0O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRvcDogdG9wIDwgNSA/IDUgOiB0b3AsXG4gICAgICAgICAgICBsZWZ0OiBsZWZ0IDwgNSA/IDUgOiBsZWZ0XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnRvb2x0aXBFbHQpIHtcbiAgICAgICAgICAgIHRoaXMudG9vbHRpcEVsdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMudG9vbHRpcEVsdCk7XG4gICAgICAgICAgICB0aGlzLnRvb2x0aXBFbHQgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG59XG4iXX0=
|
|
@@ -0,0 +1,59 @@
|
|
|
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 "../../services/inputFile.service";
|
|
5
|
+
import * as i2 from "@angular/common";
|
|
6
|
+
import * as i3 from "ngx-ode-sijil";
|
|
7
|
+
import * as i4 from "../../directives/drag-and-drop-files.directive";
|
|
8
|
+
export class UploadFilesComponent extends OdeComponent {
|
|
9
|
+
constructor(injector, inputFileService) {
|
|
10
|
+
super(injector);
|
|
11
|
+
this.inputFileService = inputFileService;
|
|
12
|
+
this.upload = new EventEmitter();
|
|
13
|
+
this.invalidUpload = new EventEmitter();
|
|
14
|
+
}
|
|
15
|
+
ngOnInit() {
|
|
16
|
+
super.ngOnInit();
|
|
17
|
+
this.multiple = this.maxFilesNumber > 1;
|
|
18
|
+
}
|
|
19
|
+
onChange($event) {
|
|
20
|
+
if ($event.target) {
|
|
21
|
+
this.inputFileService
|
|
22
|
+
.validateFiles($event.target.files, this.maxFilesNumber, this.allowedExtensions)
|
|
23
|
+
.subscribe(files => this.upload.emit(files), error => this.invalidUpload.emit(error));
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
onClickDropzoneInput($event) {
|
|
27
|
+
$event.stopPropagation();
|
|
28
|
+
const inputFileElement = this.inputFileRef.nativeElement;
|
|
29
|
+
inputFileElement.click();
|
|
30
|
+
}
|
|
31
|
+
onDragAndDrop($event) {
|
|
32
|
+
this.upload.emit($event);
|
|
33
|
+
}
|
|
34
|
+
onInvalidDragAndDrop($event) {
|
|
35
|
+
this.invalidUpload.emit($event);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
UploadFilesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: UploadFilesComponent, deps: [{ token: i0.Injector }, { token: i1.InputFileService }], target: i0.ɵɵFactoryTarget.Component });
|
|
39
|
+
UploadFilesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.1", type: UploadFilesComponent, selector: "ode-upload-files", inputs: { fileSrc: "fileSrc", allowedExtensions: "allowedExtensions", maxFilesNumber: "maxFilesNumber", disabled: "disabled" }, outputs: { upload: "upload", invalidUpload: "invalidUpload" }, viewQueries: [{ propertyName: "inputFileRef", first: true, predicate: ["inputFileRef"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"upload-files-dropzone\"\n dragAndDropFiles\n [allowedExtensions]=\"allowedExtensions\"\n [maxFilesNumber]=\"maxFilesNumber\"\n [disabled]=\"disabled\"\n (dragAndDrop)=\"onDragAndDrop($event)\"\n (invalidDragAndDrop)=\"onInvalidDragAndDrop($event)\">\n <div *ngIf=\"fileSrc\" class=\"upload-files-dropzone-image\">\n <img src=\"{{ fileSrc }}\"\n *ngIf=\"inputFileService.isSrcExternalUrl(fileSrc)\"\n class=\"upload-files-dropzone-image__image\"/>\n <img src=\"{{ fileSrc }}\"\n *ngIf=\"inputFileService.isSrcWorkspace(fileSrc)\"\n class=\"upload-files-dropzone-image__image\"/>\n <i class=\"upload-files-dropzone-image__icon {{ fileSrc }}\"\n *ngIf=\"!inputFileService.isSrcExternalUrl(fileSrc)\n && !inputFileService.isSrcWorkspace(fileSrc)\"></i>\n </div>\n\n <div class=\"upload-files-dropzone-input\" *ngIf=\"!disabled\">\n <button class=\"confirm upload-files-dropzone-input__button\"\n (click)=\"onClickDropzoneInput($event)\">\n <s5l>ux.upload-files.button.label</s5l>\n </button>\n <i class=\"upload-files-dropzone-input__icon fa fa-cloud-upload fa-2x\">\n </i>\n <span class=\"upload-files-dropzone-input__help\">\n <s5l>ux.upload-files.button.help</s5l>\n </span>\n <input *ngIf=\"multiple === true else singleFileInput\"\n class=\"upload-files-dropzone-input__input\"\n type=\"file\"\n (change)=\"onChange($event)\"\n multiple\n #inputFileRef>\n <ng-template #singleFileInput>\n <input class=\"upload-files-dropzone-input__input\"\n type=\"file\"\n (change)=\"onChange($event)\"\n #inputFileRef>\n </ng-template>\n </div>\n</div>\n", styles: [".upload-files-dropzone{display:flex;align-items:center;justify-content:center;min-height:150px;margin:20px;padding:20px 10px;background-color:#fafafa;border:2px dashed #ddd;border-radius:5px}.upload-files-dropzone-image{display:flex;align-items:center;justify-content:center;width:120px;height:120px}.upload-files-dropzone-image__image{max-height:90%;max-width:90%}.upload-files-dropzone-image__icon{font-size:5em}.upload-files-dropzone-input{display:flex;align-items:center;background-color:#fff;border-radius:5px;box-shadow:1px 1px 5px #0000004d;padding:10px;margin:0 40px 0 20px}.upload-files-dropzone-input__input{display:none}.upload-files-dropzone-input__icon{margin-left:10px}.upload-files-dropzone-input__help{margin-left:10px;font-style:italic}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.S5lComponent, selector: "s5l", inputs: ["s5l-params", "s5l-lang"] }, { kind: "directive", type: i4.DragAndDropFilesDirective, selector: "[dragAndDropFiles]", inputs: ["allowedExtensions", "maxFilesNumber", "disabled"], outputs: ["dragAndDrop", "invalidDragAndDrop"] }] });
|
|
40
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: UploadFilesComponent, decorators: [{
|
|
41
|
+
type: Component,
|
|
42
|
+
args: [{ selector: 'ode-upload-files', template: "<div class=\"upload-files-dropzone\"\n dragAndDropFiles\n [allowedExtensions]=\"allowedExtensions\"\n [maxFilesNumber]=\"maxFilesNumber\"\n [disabled]=\"disabled\"\n (dragAndDrop)=\"onDragAndDrop($event)\"\n (invalidDragAndDrop)=\"onInvalidDragAndDrop($event)\">\n <div *ngIf=\"fileSrc\" class=\"upload-files-dropzone-image\">\n <img src=\"{{ fileSrc }}\"\n *ngIf=\"inputFileService.isSrcExternalUrl(fileSrc)\"\n class=\"upload-files-dropzone-image__image\"/>\n <img src=\"{{ fileSrc }}\"\n *ngIf=\"inputFileService.isSrcWorkspace(fileSrc)\"\n class=\"upload-files-dropzone-image__image\"/>\n <i class=\"upload-files-dropzone-image__icon {{ fileSrc }}\"\n *ngIf=\"!inputFileService.isSrcExternalUrl(fileSrc)\n && !inputFileService.isSrcWorkspace(fileSrc)\"></i>\n </div>\n\n <div class=\"upload-files-dropzone-input\" *ngIf=\"!disabled\">\n <button class=\"confirm upload-files-dropzone-input__button\"\n (click)=\"onClickDropzoneInput($event)\">\n <s5l>ux.upload-files.button.label</s5l>\n </button>\n <i class=\"upload-files-dropzone-input__icon fa fa-cloud-upload fa-2x\">\n </i>\n <span class=\"upload-files-dropzone-input__help\">\n <s5l>ux.upload-files.button.help</s5l>\n </span>\n <input *ngIf=\"multiple === true else singleFileInput\"\n class=\"upload-files-dropzone-input__input\"\n type=\"file\"\n (change)=\"onChange($event)\"\n multiple\n #inputFileRef>\n <ng-template #singleFileInput>\n <input class=\"upload-files-dropzone-input__input\"\n type=\"file\"\n (change)=\"onChange($event)\"\n #inputFileRef>\n </ng-template>\n </div>\n</div>\n", styles: [".upload-files-dropzone{display:flex;align-items:center;justify-content:center;min-height:150px;margin:20px;padding:20px 10px;background-color:#fafafa;border:2px dashed #ddd;border-radius:5px}.upload-files-dropzone-image{display:flex;align-items:center;justify-content:center;width:120px;height:120px}.upload-files-dropzone-image__image{max-height:90%;max-width:90%}.upload-files-dropzone-image__icon{font-size:5em}.upload-files-dropzone-input{display:flex;align-items:center;background-color:#fff;border-radius:5px;box-shadow:1px 1px 5px #0000004d;padding:10px;margin:0 40px 0 20px}.upload-files-dropzone-input__input{display:none}.upload-files-dropzone-input__icon{margin-left:10px}.upload-files-dropzone-input__help{margin-left:10px;font-style:italic}\n"] }]
|
|
43
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.InputFileService }]; }, propDecorators: { fileSrc: [{
|
|
44
|
+
type: Input
|
|
45
|
+
}], allowedExtensions: [{
|
|
46
|
+
type: Input
|
|
47
|
+
}], maxFilesNumber: [{
|
|
48
|
+
type: Input
|
|
49
|
+
}], disabled: [{
|
|
50
|
+
type: Input
|
|
51
|
+
}], upload: [{
|
|
52
|
+
type: Output
|
|
53
|
+
}], invalidUpload: [{
|
|
54
|
+
type: Output
|
|
55
|
+
}], inputFileRef: [{
|
|
56
|
+
type: ViewChild,
|
|
57
|
+
args: ['inputFileRef']
|
|
58
|
+
}] } });
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWZpbGVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1vZGUtdWkvc3JjL2xpYi9jb21wb25lbnRzL3VwbG9hZC1maWxlcy91cGxvYWQtZmlsZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW9kZS11aS9zcmMvbGliL2NvbXBvbmVudHMvdXBsb2FkLWZpbGVzL3VwbG9hZC1maWxlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFZLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFRaEgsTUFBTSxPQUFPLG9CQUFxQixTQUFRLFlBQVk7SUFvQmxELFlBQVksUUFBa0IsRUFDWCxnQkFBa0M7UUFDN0MsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBREwscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQVZyRCxXQUFNLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFbEQsa0JBQWEsR0FBeUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQVV6RCxDQUFDO0lBRU0sUUFBUTtRQUNYLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFTSxRQUFRLENBQUMsTUFBTTtRQUNsQixJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUU7WUFDZixJQUFJLENBQUMsZ0JBQWdCO2lCQUNoQixhQUFhLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUM7aUJBQy9FLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUNyQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDdEQ7SUFDTCxDQUFDO0lBRU0sb0JBQW9CLENBQUMsTUFBYTtRQUNyQyxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDekIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQztRQUN6RCxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRU0sYUFBYSxDQUFDLE1BQWM7UUFDL0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVNLG9CQUFvQixDQUFDLE1BQWM7UUFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEMsQ0FBQzs7aUhBbkRRLG9CQUFvQjtxR0FBcEIsb0JBQW9CLDRYQ1RqQyw0eERBMkNBOzJGRGxDYSxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0ksa0JBQWtCOzhIQU01QixPQUFPO3NCQUROLEtBQUs7Z0JBR04saUJBQWlCO3NCQURoQixLQUFLO2dCQUdOLGNBQWM7c0JBRGIsS0FBSztnQkFHTixRQUFRO3NCQURQLEtBQUs7Z0JBSU4sTUFBTTtzQkFETCxNQUFNO2dCQUdQLGFBQWE7c0JBRFosTUFBTTtnQkFJUCxZQUFZO3NCQURYLFNBQVM7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9kZUNvbXBvbmVudCB9IGZyb20gJ25neC1vZGUtY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0lucHV0RmlsZVNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2lucHV0RmlsZS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdvZGUtdXBsb2FkLWZpbGVzJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdXBsb2FkLWZpbGVzLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi91cGxvYWQtZmlsZXMuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBVcGxvYWRGaWxlc0NvbXBvbmVudCBleHRlbmRzIE9kZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KClcbiAgICBmaWxlU3JjOiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBhbGxvd2VkRXh0ZW5zaW9uczogQXJyYXk8c3RyaW5nPjtcbiAgICBASW5wdXQoKVxuICAgIG1heEZpbGVzTnVtYmVyOiBudW1iZXI7XG4gICAgQElucHV0KClcbiAgICBkaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIEBPdXRwdXQoKVxuICAgIHVwbG9hZDogRXZlbnRFbWl0dGVyPEZpbGVbXT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpXG4gICAgaW52YWxpZFVwbG9hZDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAVmlld0NoaWxkKCdpbnB1dEZpbGVSZWYnKVxuICAgIGlucHV0RmlsZVJlZjogRWxlbWVudFJlZjtcblxuICAgIHB1YmxpYyBtdWx0aXBsZTogYm9vbGVhbjtcblxuICAgIGNvbnN0cnVjdG9yKGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgICAgICAgICBwdWJsaWMgaW5wdXRGaWxlU2VydmljZTogSW5wdXRGaWxlU2VydmljZSkge1xuICAgICAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkwqB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMubXVsdGlwbGUgPSB0aGlzLm1heEZpbGVzTnVtYmVyID4gMTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25DaGFuZ2UoJGV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICgkZXZlbnQudGFyZ2V0KSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0RmlsZVNlcnZpY2VcbiAgICAgICAgICAgICAgICAudmFsaWRhdGVGaWxlcygkZXZlbnQudGFyZ2V0LmZpbGVzLCB0aGlzLm1heEZpbGVzTnVtYmVyLCB0aGlzLmFsbG93ZWRFeHRlbnNpb25zKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoZmlsZXMgPT4gdGhpcy51cGxvYWQuZW1pdChmaWxlcylcbiAgICAgICAgICAgICAgICAgICAgLCBlcnJvciA9PiB0aGlzLmludmFsaWRVcGxvYWQuZW1pdChlcnJvcikpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2xpY2tEcm9wem9uZUlucHV0KCRldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBjb25zdCBpbnB1dEZpbGVFbGVtZW50ID0gdGhpcy5pbnB1dEZpbGVSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgaW5wdXRGaWxlRWxlbWVudC5jbGljaygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkRyYWdBbmREcm9wKCRldmVudDogRmlsZVtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBsb2FkLmVtaXQoJGV2ZW50KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25JbnZhbGlkRHJhZ0FuZERyb3AoJGV2ZW50OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbnZhbGlkVXBsb2FkLmVtaXQoJGV2ZW50KTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwidXBsb2FkLWZpbGVzLWRyb3B6b25lXCJcbiAgICAgZHJhZ0FuZERyb3BGaWxlc1xuICAgICBbYWxsb3dlZEV4dGVuc2lvbnNdPVwiYWxsb3dlZEV4dGVuc2lvbnNcIlxuICAgICBbbWF4RmlsZXNOdW1iZXJdPVwibWF4RmlsZXNOdW1iZXJcIlxuICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAoZHJhZ0FuZERyb3ApPVwib25EcmFnQW5kRHJvcCgkZXZlbnQpXCJcbiAgICAgKGludmFsaWREcmFnQW5kRHJvcCk9XCJvbkludmFsaWREcmFnQW5kRHJvcCgkZXZlbnQpXCI+XG4gIDxkaXYgKm5nSWY9XCJmaWxlU3JjXCIgY2xhc3M9XCJ1cGxvYWQtZmlsZXMtZHJvcHpvbmUtaW1hZ2VcIj5cbiAgICA8aW1nIHNyYz1cInt7IGZpbGVTcmMgfX1cIlxuICAgICAgICAgKm5nSWY9XCJpbnB1dEZpbGVTZXJ2aWNlLmlzU3JjRXh0ZXJuYWxVcmwoZmlsZVNyYylcIlxuICAgICAgICAgY2xhc3M9XCJ1cGxvYWQtZmlsZXMtZHJvcHpvbmUtaW1hZ2VfX2ltYWdlXCIvPlxuICAgIDxpbWcgc3JjPVwie3sgZmlsZVNyYyB9fVwiXG4gICAgICAgICAqbmdJZj1cImlucHV0RmlsZVNlcnZpY2UuaXNTcmNXb3Jrc3BhY2UoZmlsZVNyYylcIlxuICAgICAgICAgY2xhc3M9XCJ1cGxvYWQtZmlsZXMtZHJvcHpvbmUtaW1hZ2VfX2ltYWdlXCIvPlxuICAgIDxpIGNsYXNzPVwidXBsb2FkLWZpbGVzLWRyb3B6b25lLWltYWdlX19pY29uIHt7IGZpbGVTcmMgfX1cIlxuICAgICAgICpuZ0lmPVwiIWlucHV0RmlsZVNlcnZpY2UuaXNTcmNFeHRlcm5hbFVybChmaWxlU3JjKVxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgIWlucHV0RmlsZVNlcnZpY2UuaXNTcmNXb3Jrc3BhY2UoZmlsZVNyYylcIj48L2k+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJ1cGxvYWQtZmlsZXMtZHJvcHpvbmUtaW5wdXRcIiAqbmdJZj1cIiFkaXNhYmxlZFwiPlxuICAgIDxidXR0b24gY2xhc3M9XCJjb25maXJtIHVwbG9hZC1maWxlcy1kcm9wem9uZS1pbnB1dF9fYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkNsaWNrRHJvcHpvbmVJbnB1dCgkZXZlbnQpXCI+XG4gICAgICA8czVsPnV4LnVwbG9hZC1maWxlcy5idXR0b24ubGFiZWw8L3M1bD5cbiAgICA8L2J1dHRvbj5cbiAgICA8aSBjbGFzcz1cInVwbG9hZC1maWxlcy1kcm9wem9uZS1pbnB1dF9faWNvbiBmYSBmYS1jbG91ZC11cGxvYWQgZmEtMnhcIj5cbiAgICA8L2k+XG4gICAgPHNwYW4gY2xhc3M9XCJ1cGxvYWQtZmlsZXMtZHJvcHpvbmUtaW5wdXRfX2hlbHBcIj5cbiAgICAgICAgICAgICAgICAgICAgPHM1bD51eC51cGxvYWQtZmlsZXMuYnV0dG9uLmhlbHA8L3M1bD5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgPGlucHV0ICpuZ0lmPVwibXVsdGlwbGUgPT09IHRydWUgZWxzZSBzaW5nbGVGaWxlSW5wdXRcIlxuICAgICAgICAgICBjbGFzcz1cInVwbG9hZC1maWxlcy1kcm9wem9uZS1pbnB1dF9faW5wdXRcIlxuICAgICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgIChjaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgIG11bHRpcGxlXG4gICAgICAgICAgICNpbnB1dEZpbGVSZWY+XG4gICAgPG5nLXRlbXBsYXRlICNzaW5nbGVGaWxlSW5wdXQ+XG4gICAgICA8aW5wdXQgY2xhc3M9XCJ1cGxvYWQtZmlsZXMtZHJvcHpvbmUtaW5wdXRfX2lucHV0XCJcbiAgICAgICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAjaW5wdXRGaWxlUmVmPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { OdeComponent } from 'ngx-ode-core';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
import * as i2 from "@angular/forms";
|
|
6
|
+
import * as i3 from "../../pipes/orderBy.pipe";
|
|
7
|
+
export class SimpleSelectComponent extends OdeComponent {
|
|
8
|
+
constructor(injector) {
|
|
9
|
+
super(injector);
|
|
10
|
+
this.selectChange = new EventEmitter();
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
SimpleSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: SimpleSelectComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
14
|
+
SimpleSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.1", type: SimpleSelectComponent, selector: "ode-simple-select", inputs: { selected: "selected", model: "model", options: "options", ignoreOption: "ignoreOption" }, outputs: { selectChange: "selectChange" }, usesInheritance: true, ngImport: i0, template: "<select [ngModel]=\"model[selected]\" (ngModelChange)=\"model[selected] = $event; selectChange.emit($event)\">\n\n<option *ngIf=\"ignoreOption.length > 0 \" [ngValue]=\"ignoreOption[0].value\">\n {{ignoreOption[0].label}}\n</option>\n<option *ngFor=\"let option of options | orderBy: 'label'\" [ngValue]=\"option.value\">\n {{option.label}}\n</option>\n</select>\n", dependencies: [{ 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: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i3.OrderPipe, name: "orderBy" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
15
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: SimpleSelectComponent, decorators: [{
|
|
16
|
+
type: Component,
|
|
17
|
+
args: [{ selector: 'ode-simple-select', changeDetection: ChangeDetectionStrategy.OnPush, template: "<select [ngModel]=\"model[selected]\" (ngModelChange)=\"model[selected] = $event; selectChange.emit($event)\">\n\n<option *ngIf=\"ignoreOption.length > 0 \" [ngValue]=\"ignoreOption[0].value\">\n {{ignoreOption[0].label}}\n</option>\n<option *ngFor=\"let option of options | orderBy: 'label'\" [ngValue]=\"option.value\">\n {{option.label}}\n</option>\n</select>\n" }]
|
|
18
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { selected: [{
|
|
19
|
+
type: Input
|
|
20
|
+
}], model: [{
|
|
21
|
+
type: Input
|
|
22
|
+
}], options: [{
|
|
23
|
+
type: Input
|
|
24
|
+
}], ignoreOption: [{
|
|
25
|
+
type: Input
|
|
26
|
+
}], selectChange: [{
|
|
27
|
+
type: Output
|
|
28
|
+
}] } });
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtb2RlLXVpL3NyYy9saWIvY29tcG9uZW50cy92YWx1ZS1lZGl0YWJsZS9zaW1wbGUtc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1vZGUtdWkvc3JjL2xpYi9jb21wb25lbnRzL3ZhbHVlLWVkaXRhYmxlL3NpbXBsZS1zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM1QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFZLE1BQU0sZUFBZSxDQUFDOzs7OztBQWMxRyxNQUFNLE9BQU8scUJBQXNCLFNBQVEsWUFBWTtJQU9uRCxZQUFZLFFBQWtCO1FBQzVCLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUhSLGlCQUFZLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7SUFJMUUsQ0FBQzs7a0hBVFEscUJBQXFCO3NHQUFyQixxQkFBcUIsK05DZmxDLHdnQkFTQTsyRkRNYSxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0ksbUJBQW1CLG1CQUVaLHVCQUF1QixDQUFDLE1BQU07K0ZBR3RDLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNJLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPZGVDb21wb25lbnQgfSBmcm9tICduZ3gtb2RlLWNvcmUnO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9uIHtcbiAgdmFsdWU6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbn1cblxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ29kZS1zaW1wbGUtc2VsZWN0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2ltcGxlLXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgU2ltcGxlU2VsZWN0Q29tcG9uZW50IGV4dGVuZHMgT2RlQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKSBzZWxlY3RlZDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIG1vZGVsOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfTtcbiAgICBASW5wdXQoKSBvcHRpb25zOiBPcHRpb25bXTtcbiAgICBASW5wdXQoKSBpZ25vcmVPcHRpb246IE9wdGlvbltdO1xuICAgIEBPdXRwdXQoKSBzZWxlY3RDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICAgIHN1cGVyKGluamVjdG9yKTtcbiAgICB9XG59XG5cbiIsIjxzZWxlY3QgW25nTW9kZWxdPVwibW9kZWxbc2VsZWN0ZWRdXCIgKG5nTW9kZWxDaGFuZ2UpPVwibW9kZWxbc2VsZWN0ZWRdID0gJGV2ZW50OyBzZWxlY3RDaGFuZ2UuZW1pdCgkZXZlbnQpXCI+XG5cbjxvcHRpb24gKm5nSWY9XCJpZ25vcmVPcHRpb24ubGVuZ3RoID4gMCBcIiBbbmdWYWx1ZV09XCJpZ25vcmVPcHRpb25bMF0udmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tpZ25vcmVPcHRpb25bMF0ubGFiZWx9fVxuPC9vcHRpb24+XG48b3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3B0aW9ucyB8IG9yZGVyQnk6ICdsYWJlbCdcIiBbbmdWYWx1ZV09XCJvcHRpb24udmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e29wdGlvbi5sYWJlbH19XG48L29wdGlvbj5cbjwvc2VsZWN0PlxuIl19
|