@gloww/gloww 0.9.0-beta.5 → 0.9.0-beta.52
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/auto-complete/auto-complete.component.mjs +151 -0
- package/esm2020/lib/Components/code-editor/code-editor.component.mjs +8 -4
- package/esm2020/lib/Components/datetime/datetime.component.mjs +84 -0
- package/esm2020/lib/Components/display-objects/display-objects.component.mjs +172 -50
- package/esm2020/lib/Components/download-progress/download-progress.component.mjs +4 -6
- package/esm2020/lib/Components/dummy/dummy.component.mjs +14 -0
- package/esm2020/lib/Components/menu-list-item/menu-list-item.component.mjs +38 -30
- package/esm2020/lib/Components/select/select.component.mjs +123 -0
- package/esm2020/lib/Components/upload-file/upload-file.component.mjs +10 -3
- package/esm2020/lib/Guards/has-unsaved-data.guard.mjs +29 -0
- package/esm2020/lib/Guards/ihas-unsaved-data.mjs +2 -0
- package/esm2020/lib/Models/nav-item.mjs +1 -1
- package/esm2020/lib/Services/folder.service.mjs +5 -1
- package/esm2020/lib/Services/gloww.service.mjs +53 -14
- package/esm2020/lib/gloww.module.mjs +58 -9
- package/esm2020/public-api.mjs +8 -1
- package/fesm2015/gloww-gloww.mjs +729 -126
- package/fesm2015/gloww-gloww.mjs.map +1 -1
- package/fesm2020/gloww-gloww.mjs +710 -123
- package/fesm2020/gloww-gloww.mjs.map +1 -1
- package/lib/Components/auto-complete/auto-complete.component.d.ts +39 -0
- package/lib/Components/code-editor/code-editor.component.d.ts +2 -1
- package/lib/Components/datetime/datetime.component.d.ts +22 -0
- package/lib/Components/display-objects/display-objects.component.d.ts +18 -9
- package/lib/Components/dummy/dummy.component.d.ts +8 -0
- package/lib/Components/menu-list-item/menu-list-item.component.d.ts +11 -3
- package/lib/Components/select/select.component.d.ts +33 -0
- package/lib/Guards/has-unsaved-data.guard.d.ts +8 -0
- package/lib/Guards/ihas-unsaved-data.d.ts +3 -0
- package/lib/Models/nav-item.d.ts +2 -1
- package/lib/Services/folder.service.d.ts +1 -0
- package/lib/Services/gloww.service.d.ts +14 -3
- package/lib/gloww.module.d.ts +32 -18
- package/package.json +5 -2
- package/public-api.d.ts +7 -0
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { catchError, debounceTime, distinctUntilChanged, filter, map, switchMap, tap } from 'rxjs/operators';
|
|
2
|
+
import { Component, Input, Inject, forwardRef } from '@angular/core';
|
|
3
|
+
import { FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
4
|
+
import { of } from 'rxjs';
|
|
5
|
+
import { TranslateDefaultParser } from '@ngx-translate/core';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/forms";
|
|
8
|
+
import * as i2 from "@angular/material/form-field";
|
|
9
|
+
import * as i3 from "@angular/material/autocomplete";
|
|
10
|
+
import * as i4 from "@angular/material/core";
|
|
11
|
+
import * as i5 from "@angular/material/input";
|
|
12
|
+
import * as i6 from "@angular/common";
|
|
13
|
+
export class AutoCompleteComponent {
|
|
14
|
+
constructor(glowwService, formBuilder, ref) {
|
|
15
|
+
this.formBuilder = formBuilder;
|
|
16
|
+
this.ref = ref;
|
|
17
|
+
this._value = null;
|
|
18
|
+
this.objectName = null;
|
|
19
|
+
this.searchField = null;
|
|
20
|
+
this.returnField = null;
|
|
21
|
+
this.displayField = null;
|
|
22
|
+
this.displayExpr = null;
|
|
23
|
+
this.displayFct = null;
|
|
24
|
+
this.placeHolder = null;
|
|
25
|
+
this.data = null;
|
|
26
|
+
this.onChange = () => { };
|
|
27
|
+
this.onTouched = () => { };
|
|
28
|
+
this.items = [];
|
|
29
|
+
this.parser = new TranslateDefaultParser();
|
|
30
|
+
this.options = []; //Observable<unknown>;
|
|
31
|
+
this.propagateChange = (_) => { };
|
|
32
|
+
this.glowwService = glowwService;
|
|
33
|
+
this.resultCtrl = new FormControl();
|
|
34
|
+
this.form = this.formBuilder.group({
|
|
35
|
+
__result: this.resultCtrl
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
ngAfterViewInit() {
|
|
39
|
+
}
|
|
40
|
+
ngOnInit() {
|
|
41
|
+
//debugger;
|
|
42
|
+
this.searchRequest = this.glowwService[`search${this.objectName}`];
|
|
43
|
+
this.resultCtrl.valueChanges.pipe(filter(res => res != null && res.length > 2), distinctUntilChanged(), debounceTime(250), tap(() => { this.error = ""; this.options = []; }), switchMap(searchStr => {
|
|
44
|
+
let searchObj = {};
|
|
45
|
+
if (this.data) {
|
|
46
|
+
Object.keys(this.data).forEach(k => {
|
|
47
|
+
searchObj[k] = this.data[k];
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
searchObj[this.searchField] = searchStr;
|
|
51
|
+
return this.searchRequest.call(this.glowwService, searchObj).pipe(map(res => res), catchError(err => {
|
|
52
|
+
this.error = err.message;
|
|
53
|
+
this.ref.markForCheck();
|
|
54
|
+
return of([]);
|
|
55
|
+
}));
|
|
56
|
+
})).subscribe({
|
|
57
|
+
next: (data) => {
|
|
58
|
+
this.options = data;
|
|
59
|
+
this.ref.markForCheck();
|
|
60
|
+
},
|
|
61
|
+
error: (error) => { this.error = error; }
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
writeValue(val) {
|
|
65
|
+
val && this.form.setValue({ __result: val }, { emitEvent: false });
|
|
66
|
+
}
|
|
67
|
+
registerOnChange(fn) {
|
|
68
|
+
this.onChange = fn;
|
|
69
|
+
this.form.valueChanges.subscribe(data => {
|
|
70
|
+
if (this.returnField) {
|
|
71
|
+
this.onChange(this.form.value.__result[this.returnField]);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
this.onChange(this.form.value.__result);
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
registerOnTouched(fn) {
|
|
79
|
+
this.onTouched = fn;
|
|
80
|
+
}
|
|
81
|
+
setDisabledState(isDisabled) {
|
|
82
|
+
const status = isDisabled ? 'disable' : 'enable';
|
|
83
|
+
//TODO
|
|
84
|
+
}
|
|
85
|
+
displayObj(item) {
|
|
86
|
+
if (!item)
|
|
87
|
+
return null;
|
|
88
|
+
console.log("displayOf");
|
|
89
|
+
if (this.displayField) {
|
|
90
|
+
return item[this.displayField];
|
|
91
|
+
}
|
|
92
|
+
else if (this.displayExpr) {
|
|
93
|
+
return this.parser.interpolate(this.displayExpr.replace(/\\\{/g, "{").replace(/\\\}/g, "}"), item);
|
|
94
|
+
//return '?1' + this.parser.interpolate("{{Name}}", { Name: "test" }) + '?2' + this.parser.interpolate("{{Name}}", item)+'?3'+this.parser.interpolate(this.displayExpr.replace(/\\\{/g,"{").replace(/\\\}/g,"}"), item) +'?4'+ item;
|
|
95
|
+
}
|
|
96
|
+
else if (this.displayFct) {
|
|
97
|
+
return this.displayFct(item);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
AutoCompleteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: AutoCompleteComponent, deps: [{ token: 'glowwService' }, { token: i1.FormBuilder }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
102
|
+
AutoCompleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: AutoCompleteComponent, selector: "gloww-auto-complete", inputs: { _value: ["value", "_value"], objectName: "objectName", searchField: "searchField", returnField: "returnField", displayField: "displayField", displayExpr: "displayExpr", displayFct: "displayFct", placeHolder: "placeHolder", data: "data", searchRequest: "searchRequest" }, providers: [
|
|
103
|
+
{
|
|
104
|
+
provide: NG_VALUE_ACCESSOR,
|
|
105
|
+
multi: true,
|
|
106
|
+
useExisting: forwardRef(() => AutoCompleteComponent)
|
|
107
|
+
}
|
|
108
|
+
], ngImport: i0, template: "<div [formGroup]=\"form\" style=\"width:100%\">\n <div style=\"color:red\">{{error}}</div>\n <mat-form-field style=\"width:100%\">\n <input type=\"text\" matInput formControlName=\"__result\" [matAutocomplete]=\"auto\" [placeholder]=\"placeHolder\">\n </mat-form-field>\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"displayObj.bind(this)\">\n <mat-option *ngFor=\"let option of options\" [value]=\"option\">\n {{displayObj(option)}}\n </mat-option>\n </mat-autocomplete>\n</div>", styles: [""], components: [{ type: i2.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i3.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i4.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i3.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
109
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: AutoCompleteComponent, decorators: [{
|
|
110
|
+
type: Component,
|
|
111
|
+
args: [{ selector: 'gloww-auto-complete', providers: [
|
|
112
|
+
{
|
|
113
|
+
provide: NG_VALUE_ACCESSOR,
|
|
114
|
+
multi: true,
|
|
115
|
+
useExisting: forwardRef(() => AutoCompleteComponent)
|
|
116
|
+
}
|
|
117
|
+
], template: "<div [formGroup]=\"form\" style=\"width:100%\">\n <div style=\"color:red\">{{error}}</div>\n <mat-form-field style=\"width:100%\">\n <input type=\"text\" matInput formControlName=\"__result\" [matAutocomplete]=\"auto\" [placeholder]=\"placeHolder\">\n </mat-form-field>\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"displayObj.bind(this)\">\n <mat-option *ngFor=\"let option of options\" [value]=\"option\">\n {{displayObj(option)}}\n </mat-option>\n </mat-autocomplete>\n</div>", styles: [""] }]
|
|
118
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
119
|
+
type: Inject,
|
|
120
|
+
args: ['glowwService']
|
|
121
|
+
}] }, { type: i1.FormBuilder }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { _value: [{
|
|
122
|
+
type: Input,
|
|
123
|
+
args: ['value']
|
|
124
|
+
}], objectName: [{
|
|
125
|
+
type: Input,
|
|
126
|
+
args: ['objectName']
|
|
127
|
+
}], searchField: [{
|
|
128
|
+
type: Input,
|
|
129
|
+
args: ['searchField']
|
|
130
|
+
}], returnField: [{
|
|
131
|
+
type: Input,
|
|
132
|
+
args: ['returnField']
|
|
133
|
+
}], displayField: [{
|
|
134
|
+
type: Input,
|
|
135
|
+
args: ['displayField']
|
|
136
|
+
}], displayExpr: [{
|
|
137
|
+
type: Input,
|
|
138
|
+
args: ['displayExpr']
|
|
139
|
+
}], displayFct: [{
|
|
140
|
+
type: Input,
|
|
141
|
+
args: ['displayFct']
|
|
142
|
+
}], placeHolder: [{
|
|
143
|
+
type: Input,
|
|
144
|
+
args: ['placeHolder']
|
|
145
|
+
}], data: [{
|
|
146
|
+
type: Input,
|
|
147
|
+
args: ['data']
|
|
148
|
+
}], searchRequest: [{
|
|
149
|
+
type: Input
|
|
150
|
+
}] } });
|
|
151
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by1jb21wbGV0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nbG93dy9zcmMvbGliL0NvbXBvbmVudHMvYXV0by1jb21wbGV0ZS9hdXRvLWNvbXBsZXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dsb3d3L3NyYy9saWIvQ29tcG9uZW50cy9hdXRvLWNvbXBsZXRlL2F1dG8tY29tcGxldGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0csT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQWlCLE1BQU0sRUFBcUIsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9HLE9BQU8sRUFBcUMsV0FBVyxFQUFhLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUcsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7QUFjN0QsTUFBTSxPQUFPLHFCQUFxQjtJQXNCaEMsWUFBb0MsWUFBaUIsRUFBVSxXQUF3QixFQUFVLEdBQXNCO1FBQXhELGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQVUsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFyQnZHLFdBQU0sR0FBUSxJQUFJLENBQUM7UUFDZCxlQUFVLEdBQVEsSUFBSSxDQUFDO1FBQ3RCLGdCQUFXLEdBQVEsSUFBSSxDQUFDO1FBQ3hCLGdCQUFXLEdBQVEsSUFBSSxDQUFDO1FBQ3ZCLGlCQUFZLEdBQVEsSUFBSSxDQUFDO1FBQzFCLGdCQUFXLEdBQVEsSUFBSSxDQUFDO1FBQ3pC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QUFsQixLQUFLO3VCQUFDLE1BQU07Z0JBTUosYUFBYTtzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNhdGNoRXJyb3IsIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgbWFwLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBBZnRlclZpZXdJbml0LCBJbmplY3QsIENoYW5nZURldGVjdG9yUmVmLCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZURlZmF1bHRQYXJzZXIgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZ2xvd3ctYXV0by1jb21wbGV0ZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2F1dG8tY29tcGxldGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2F1dG8tY29tcGxldGUuY29tcG9uZW50LmNzcyddLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEF1dG9Db21wbGV0ZUNvbXBvbmVudClcclxuICAgIH1cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdXRvQ29tcGxldGVDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuICBASW5wdXQoJ3ZhbHVlJykgX3ZhbHVlOiBhbnkgPSBudWxsO1xyXG4gIEBJbnB1dCgnb2JqZWN0TmFtZScpIG9iamVjdE5hbWU6IGFueSA9IG51bGw7XHJcbiAgQElucHV0KCdzZWFyY2hGaWVsZCcpIHNlYXJjaEZpZWxkOiBhbnkgPSBudWxsO1xyXG4gIEBJbnB1dCgncmV0dXJuRmllbGQnKSByZXR1cm5GaWVsZDogYW55ID0gbnVsbDtcclxuICBASW5wdXQoJ2Rpc3BsYXlGaWVsZCcpIGRpc3BsYXlGaWVsZDogYW55ID0gbnVsbDtcclxuICBASW5wdXQoJ2Rpc3BsYXlFeHByJykgZGlzcGxheUV4cHI6IGFueSA9IG51bGw7XHJcbiAgQElucHV0KCdkaXNwbGF5RmN0JykgZGlzcGxheUZjdDogYW55ID0gbnVsbDtcclxuICBASW5wdXQoJ3BsYWNlSG9sZGVyJykgcGxhY2VIb2xkZXI6IGFueSA9IG51bGw7XHJcbiAgQElucHV0KCdkYXRhJykgZGF0YTogYW55ID0gbnVsbDtcclxuICBvbkNoYW5nZTogYW55ID0gKCkgPT4geyB9O1xyXG4gIG9uVG91Y2hlZDogYW55ID0gKCkgPT4geyB9O1xyXG4gIHB1YmxpYyBpdGVtczogYW55W10gPSBbXTtcclxuICBwdWJsaWMgZXJyb3I6IHN0cmluZztcclxuXHJcbiAgQElucHV0KCkgc2VhcmNoUmVxdWVzdDogKG9iaj86IGFueSkgPT4gT2JzZXJ2YWJsZTxbXT47XHJcblxyXG4gIHB1YmxpYyBmb3JtOiBGb3JtR3JvdXA7XHJcbiAgZ2xvd3dTZXJ2aWNlOiBhbnk7XHJcbiAgcmVzdWx0Q3RybDogRm9ybUNvbnRyb2w7XHJcbiAgcHVibGljIHBhcnNlciA9IG5ldyBUcmFuc2xhdGVEZWZhdWx0UGFyc2VyKCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoJ2dsb3d3U2VydmljZScpIGdsb3d3U2VydmljZTogYW55LCBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlciwgcHJpdmF0ZSByZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XHJcbiAgICB0aGlzLmdsb3d3U2VydmljZSA9IGdsb3d3U2VydmljZTtcclxuICAgIHRoaXMucmVzdWx0Q3RybCA9IG5ldyBGb3JtQ29udHJvbCgpO1xyXG4gICAgdGhpcy5mb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgIF9fcmVzdWx0OiB0aGlzLnJlc3VsdEN0cmxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG5cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvcHRpb25zOiBhbnlbXSA9IFtdOy8vT2JzZXJ2YWJsZTx1bmtub3duPjtcclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIC8vZGVidWdnZXI7XHJcbiAgICB0aGlzLnNlYXJjaFJlcXVlc3QgPSB0aGlzLmdsb3d3U2VydmljZVtgc2VhcmNoJHt0aGlzLm9iamVjdE5hbWV9YF07XHJcbiAgICB0aGlzLnJlc3VsdEN0cmwudmFsdWVDaGFuZ2VzLnBpcGUoXHJcbiAgICAgIGZpbHRlcihyZXMgPT4gcmVzICE9IG51bGwgJiYgcmVzLmxlbmd0aCA+IDIpLFxyXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxyXG4gICAgICBkZWJvdW5jZVRpbWUoMjUwKSxcclxuICAgICAgdGFwKCgpID0+IHsgdGhpcy5lcnJvciA9IFwiXCI7IHRoaXMub3B0aW9ucyA9IFtdOyB9KSxcclxuICAgICAgc3dpdGNoTWFwKHNlYXJjaFN0ciA9PiB7XHJcbiAgICAgICAgbGV0IHNlYXJjaE9iaiA9IHt9O1xyXG4gICAgICAgIGlmICh0aGlzLmRhdGEpIHtcclxuICAgICAgICAgIE9iamVjdC5rZXlzKHRoaXMuZGF0YSkuZm9yRWFjaChrID0+IHtcclxuICAgICAgICAgICAgc2VhcmNoT2JqW2tdID0gdGhpcy5kYXRhW2tdO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHNlYXJjaE9ialt0aGlzLnNlYXJjaEZpZWxkXSA9IHNlYXJjaFN0cjtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZWFyY2hSZXF1ZXN0LmNhbGwodGhpcy5nbG93d1NlcnZpY2UsIHNlYXJjaE9iaikucGlwZShcclxuICAgICAgICAgIG1hcChyZXMgPT4gcmVzKSxcclxuICAgICAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHtcclxuICAgICAgICAgICAgdGhpcy5lcnJvciA9IGVyci5tZXNzYWdlO1xyXG4gICAgICAgICAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgICAgcmV0dXJuIG9mKFtdKVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICApXHJcbiAgICAgIH0pXHJcbiAgICApLnN1YnNjcmliZShcclxuICAgICAge1xyXG4gICAgICAgIG5leHQ6IChkYXRhOiBhbnlbXSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5vcHRpb25zID0gZGF0YTtcclxuICAgICAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4geyB0aGlzLmVycm9yID0gZXJyb3IgfVxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcblxyXG4gIHdyaXRlVmFsdWUodmFsOiBhbnkpOiB2b2lkIHtcclxuICAgIHZhbCAmJiB0aGlzLmZvcm0uc2V0VmFsdWUoeyBfX3Jlc3VsdDogdmFsIH0sIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gICAgdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLnJldHVybkZpZWxkKSB7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLmZvcm0udmFsdWUuX19yZXN1bHRbdGhpcy5yZXR1cm5GaWVsZF0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5mb3JtLnZhbHVlLl9fcmVzdWx0KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcHJvcGFnYXRlQ2hhbmdlID0gKF86IGFueSkgPT4geyB9O1xyXG5cclxuICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBjb25zdCBzdGF0dXMgPSBpc0Rpc2FibGVkID8gJ2Rpc2FibGUnIDogJ2VuYWJsZSc7XHJcbiAgICAvL1RPRE9cclxuICB9XHJcblxyXG4gIGRpc3BsYXlPYmooaXRlbSkge1xyXG5cdGlmICghaXRlbSkgcmV0dXJuIG51bGw7XHJcbiAgICBjb25zb2xlLmxvZyhcImRpc3BsYXlPZlwiKTtcclxuICAgIGlmICh0aGlzLmRpc3BsYXlGaWVsZCkge1xyXG4gICAgICByZXR1cm4gaXRlbVt0aGlzLmRpc3BsYXlGaWVsZF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuZGlzcGxheUV4cHIpIHtcclxuICAgICAgcmV0dXJuIHRoaXMucGFyc2VyLmludGVycG9sYXRlKHRoaXMuZGlzcGxheUV4cHIucmVwbGFjZSgvXFxcXFxcey9nLFwie1wiKS5yZXBsYWNlKC9cXFxcXFx9L2csXCJ9XCIpLCBpdGVtKTtcclxuLy9yZXR1cm4gJz8xJyArIHRoaXMucGFyc2VyLmludGVycG9sYXRlKFwie3tOYW1lfX1cIiwgeyBOYW1lOiBcInRlc3RcIiB9KSArICc/MicgKyB0aGlzLnBhcnNlci5pbnRlcnBvbGF0ZShcInt7TmFtZX19XCIsIGl0ZW0pKyc/MycrdGhpcy5wYXJzZXIuaW50ZXJwb2xhdGUodGhpcy5kaXNwbGF5RXhwci5yZXBsYWNlKC9cXFxcXFx7L2csXCJ7XCIpLnJlcGxhY2UoL1xcXFxcXH0vZyxcIn1cIiksIGl0ZW0pICsnPzQnKyBpdGVtO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmRpc3BsYXlGY3QpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZGlzcGxheUZjdChpdGVtKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbiIsIjxkaXYgW2Zvcm1Hcm91cF09XCJmb3JtXCIgc3R5bGU9XCJ3aWR0aDoxMDAlXCI+XG4gICAgPGRpdiBzdHlsZT1cImNvbG9yOnJlZFwiPnt7ZXJyb3J9fTwvZGl2PlxuICAgIDxtYXQtZm9ybS1maWVsZCBzdHlsZT1cIndpZHRoOjEwMCVcIj5cbiAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiX19yZXN1bHRcIiBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIiBbcGxhY2Vob2xkZXJdPVwicGxhY2VIb2xkZXJcIj5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDxtYXQtYXV0b2NvbXBsZXRlICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCIgW2Rpc3BsYXlXaXRoXT1cImRpc3BsYXlPYmouYmluZCh0aGlzKVwiPlxuICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIG9wdGlvbnNcIiBbdmFsdWVdPVwib3B0aW9uXCI+XG4gICAgICAgICAgICB7e2Rpc3BsYXlPYmoob3B0aW9uKX19XG4gICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICA8L21hdC1hdXRvY29tcGxldGU+XG48L2Rpdj4iXX0=
|
|
@@ -6,6 +6,7 @@ import * as i2 from "@angular/forms";
|
|
|
6
6
|
export class CodeEditorComponent {
|
|
7
7
|
constructor() {
|
|
8
8
|
this._value = null;
|
|
9
|
+
this.mode = "text/typescript";
|
|
9
10
|
this.onChange = () => { };
|
|
10
11
|
this.onTouched = () => { };
|
|
11
12
|
}
|
|
@@ -36,13 +37,13 @@ export class CodeEditorComponent {
|
|
|
36
37
|
}
|
|
37
38
|
}
|
|
38
39
|
CodeEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: CodeEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
39
|
-
CodeEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: CodeEditorComponent, selector: "gloww-code-editor", inputs: { _value: ["value", "_value"] }, providers: [
|
|
40
|
+
CodeEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: CodeEditorComponent, selector: "gloww-code-editor", inputs: { _value: ["value", "_value"], mode: "mode" }, providers: [
|
|
40
41
|
{
|
|
41
42
|
provide: NG_VALUE_ACCESSOR,
|
|
42
43
|
multi: true,
|
|
43
44
|
useExisting: CodeEditorComponent
|
|
44
45
|
}
|
|
45
|
-
], ngImport: i0, template: "<ngx-codemirror [(ngModel)]=\"value\" [options]=\"{lineNumbers: true,theme: 'eclipse', indentWithTabs:true,indentUnit: 4,matchBrackets: true, mode:
|
|
46
|
+
], ngImport: i0, template: "<ngx-codemirror [(ngModel)]=\"value\" [options]=\"{lineNumbers: true,theme: 'eclipse', indentWithTabs:true,indentUnit: 4,matchBrackets: true, mode: mode, fixedGutter:false}\">\r\n</ngx-codemirror>", styles: [".cm-tab{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAMCAYAAAAkuj5RAAAAAXNSR0IArs4c6QAAAGFJREFUSMft1LsRQFAQheHPowAKoACx3IgEKtaEHujDjORSgWTH/ZOdnZOcM/sgk/kFFWY0qV8foQwS4MKBCS3qR6ixBJvElOobYAtivseIE120FaowJPN75GMu8j/LfMwNjh4HUpwg4LUAAAAASUVORK5CYII=);background-position:right;background-repeat:no-repeat}\n"], components: [{ type: i1.CodemirrorComponent, selector: "ngx-codemirror", inputs: ["className", "name", "autoFocus", "options", "preserveScrollPosition"], outputs: ["cursorActivity", "focusChange", "scroll", "drop"] }], directives: [{ type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
|
|
46
47
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: CodeEditorComponent, decorators: [{
|
|
47
48
|
type: Component,
|
|
48
49
|
args: [{ selector: 'gloww-code-editor', providers: [
|
|
@@ -51,9 +52,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImpor
|
|
|
51
52
|
multi: true,
|
|
52
53
|
useExisting: CodeEditorComponent
|
|
53
54
|
}
|
|
54
|
-
], template: "<ngx-codemirror [(ngModel)]=\"value\" [options]=\"{lineNumbers: true,theme: 'eclipse', indentWithTabs:true,indentUnit: 4,matchBrackets: true, mode:
|
|
55
|
+
], template: "<ngx-codemirror [(ngModel)]=\"value\" [options]=\"{lineNumbers: true,theme: 'eclipse', indentWithTabs:true,indentUnit: 4,matchBrackets: true, mode: mode, fixedGutter:false}\">\r\n</ngx-codemirror>", styles: [".cm-tab{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAMCAYAAAAkuj5RAAAAAXNSR0IArs4c6QAAAGFJREFUSMft1LsRQFAQheHPowAKoACx3IgEKtaEHujDjORSgWTH/ZOdnZOcM/sgk/kFFWY0qV8foQwS4MKBCS3qR6ixBJvElOobYAtivseIE120FaowJPN75GMu8j/LfMwNjh4HUpwg4LUAAAAASUVORK5CYII=);background-position:right;background-repeat:no-repeat}\n"] }]
|
|
55
56
|
}], ctorParameters: function () { return []; }, propDecorators: { _value: [{
|
|
56
57
|
type: Input,
|
|
57
58
|
args: ['value']
|
|
59
|
+
}], mode: [{
|
|
60
|
+
type: Input,
|
|
61
|
+
args: ['mode']
|
|
58
62
|
}] } });
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2xvd3cvc3JjL2xpYi9Db21wb25lbnRzL2NvZGUtZWRpdG9yL2NvZGUtZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dsb3d3L3NyYy9saWIvQ29tcG9uZW50cy9jb2RlLWVkaXRvci9jb2RlLWVkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFjekUsTUFBTSxPQUFPLG1CQUFtQjtJQU05QjtRQUxnQixXQUFNLEdBQVEsSUFBSSxDQUFDO1FBQ3BCLFNBQUksR0FBUSxpQkFBaUIsQ0FBQztRQUM3QyxhQUFRLEdBQVEsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLGNBQVMsR0FBUSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFFWCxDQUFDO0lBR2pCLElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFBSSxLQUFLLENBQUMsR0FBRztRQUNYLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFDRCxVQUFVLENBQUMsR0FBUTtRQUNqQixJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxRQUFRLEVBQUU7WUFDN0IsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ2xDO2FBQU07WUFDTCxJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQztTQUNsQjtJQUNILENBQUM7SUFDRCxnQkFBZ0IsQ0FBQyxFQUFPO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFDRCxpQkFBaUIsQ0FBQyxFQUFPO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFDRCxnQkFBZ0IsQ0FBRSxVQUFtQjtRQUNuQyw2Q0FBNkM7SUFDL0MsQ0FBQzs7Z0hBakNVLG1CQUFtQjtvR0FBbkIsbUJBQW1CLG1HQVJuQjtRQUNUO1lBQ0UsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixLQUFLLEVBQUUsSUFBSTtZQUNYLFdBQVcsRUFBRSxtQkFBbUI7U0FDakM7S0FDRiwwQkNiSCxzTUFDaUI7MkZEY0osbUJBQW1CO2tCQVovQixTQUFTOytCQUNFLG1CQUFtQixhQUdsQjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixLQUFLLEVBQUUsSUFBSTs0QkFDWCxXQUFXLHFCQUFxQjt5QkFDakM7cUJBQ0Y7MEVBR2UsTUFBTTtzQkFBckIsS0FBSzt1QkFBQyxPQUFPO2dCQUNDLElBQUk7c0JBQWxCLEtBQUs7dUJBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2dsb3d3LWNvZGUtZWRpdG9yJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29kZS1lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NvZGUtZWRpdG9yLmNvbXBvbmVudC5jc3MnXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgICB1c2VFeGlzdGluZzogQ29kZUVkaXRvckNvbXBvbmVudFxyXG4gICAgfVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIENvZGVFZGl0b3JDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcbiAgQElucHV0KCd2YWx1ZScpIF92YWx1ZTogYW55ID0gbnVsbDtcclxuICBASW5wdXQoJ21vZGUnKSBtb2RlOiBhbnkgPSBcInRleHQvdHlwZXNjcmlwdFwiO1xyXG4gIG9uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7IH07XHJcbiAgb25Ub3VjaGVkOiBhbnkgPSAoKSA9PiB7IH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG5cclxuICBnZXQgdmFsdWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XHJcbiAgfVxyXG5cclxuICBzZXQgdmFsdWUodmFsKSB7XHJcbiAgICB0aGlzLl92YWx1ZSA9IHZhbDtcclxuICAgIHRoaXMub25DaGFuZ2UodmFsKTtcclxuICAgIHRoaXMub25Ub3VjaGVkKCk7XHJcbiAgfVxyXG4gIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICh0eXBlb2YgKG9iaikgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgIHRoaXMudmFsdWUgPSBKU09OLnN0cmluZ2lmeShvYmopO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IG9iajtcclxuICAgIH1cclxuICB9XHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIC8vdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPG5neC1jb2RlbWlycm9yIFsobmdNb2RlbCldPVwidmFsdWVcIiBbb3B0aW9uc109XCJ7bGluZU51bWJlcnM6IHRydWUsdGhlbWU6ICdlY2xpcHNlJywgaW5kZW50V2l0aFRhYnM6dHJ1ZSxpbmRlbnRVbml0OiA0LG1hdGNoQnJhY2tldHM6IHRydWUsIG1vZGU6IG1vZGUsIGZpeGVkR3V0dGVyOmZhbHNlfVwiPlxyXG48L25neC1jb2RlbWlycm9yPiJdfQ==
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
+
import * as moment from 'moment';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/material/form-field";
|
|
6
|
+
import * as i2 from "@angular/material/datepicker";
|
|
7
|
+
import * as i3 from "@angular-material-components/datetime-picker";
|
|
8
|
+
import * as i4 from "@angular/common";
|
|
9
|
+
import * as i5 from "@angular/material/input";
|
|
10
|
+
import * as i6 from "@angular/forms";
|
|
11
|
+
export class DatetimeComponent {
|
|
12
|
+
constructor() {
|
|
13
|
+
this._value = null;
|
|
14
|
+
this.display = null;
|
|
15
|
+
this.placeHolder = null;
|
|
16
|
+
this.mode = 'date';
|
|
17
|
+
this.showSpinners = true;
|
|
18
|
+
this.showSeconds = false;
|
|
19
|
+
this.disableMinute = false;
|
|
20
|
+
this.onChange = () => { };
|
|
21
|
+
this.onTouched = () => { };
|
|
22
|
+
}
|
|
23
|
+
get value() {
|
|
24
|
+
return this._value;
|
|
25
|
+
}
|
|
26
|
+
set value(val) {
|
|
27
|
+
this._value = val;
|
|
28
|
+
let dt = this._value;
|
|
29
|
+
if (typeof (this._value) === 'string') {
|
|
30
|
+
dt = moment(this._value).toISOString();
|
|
31
|
+
}
|
|
32
|
+
this.onChange(dt);
|
|
33
|
+
this.onTouched();
|
|
34
|
+
}
|
|
35
|
+
writeValue(obj) {
|
|
36
|
+
this.value = obj;
|
|
37
|
+
}
|
|
38
|
+
registerOnChange(fn) {
|
|
39
|
+
this.onChange = fn;
|
|
40
|
+
}
|
|
41
|
+
registerOnTouched(fn) {
|
|
42
|
+
this.onTouched = fn;
|
|
43
|
+
}
|
|
44
|
+
setDisabledState(isDisabled) {
|
|
45
|
+
//throw new Error('Method not implemented.');
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
DatetimeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: DatetimeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
49
|
+
DatetimeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: DatetimeComponent, selector: "gloww-datetime", inputs: { _value: ["value", "_value"], display: "display", placeHolder: "placeHolder", mode: "mode", showSpinners: "showSpinners", showSeconds: "showSeconds", disableMinute: "disableMinute" }, providers: [
|
|
50
|
+
{
|
|
51
|
+
provide: NG_VALUE_ACCESSOR,
|
|
52
|
+
multi: true,
|
|
53
|
+
useExisting: DatetimeComponent
|
|
54
|
+
}
|
|
55
|
+
], ngImport: i0, template: "<div style=\"width:100%\">\n <mat-form-field *ngIf=\"mode==='date'\">\n <mat-label>{{display}}</mat-label>\n <input matInput [matDatepicker]=\"picker\" [placeholder]=\"placeHolder\" [(ngModel)]=\"value\">\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n </mat-form-field>\n\n <mat-form-field *ngIf=\"mode==='datetime'\">\n <mat-label>{{display}}</mat-label>\n <input matInput [ngxMatDatetimePicker]=\"pickerDT\" [placeholder]=\"placeHolder\" [(ngModel)]=\"value\">\n <mat-datepicker-toggle matSuffix [for]=\"$any(pickerDT)\"></mat-datepicker-toggle>\n <ngx-mat-datetime-picker #pickerDT [showSpinners]=\"showSpinners\" [showSeconds]=\"showSeconds\" [touchUi]=\"true\" [disableMinute]=\"disableMinute\">\n </ngx-mat-datetime-picker>\n </mat-form-field>\n</div>\n", styles: [""], components: [{ type: i1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i2.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { type: i2.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { type: i3.NgxMatDatetimePicker, selector: "ngx-mat-datetime-picker", inputs: ["calendarHeaderComponent", "startAt", "startView", "defaultColor", "color", "touchUi", "hideTime", "disabled", "panelClass", "dateClass", "opened", "showSpinners", "showSeconds", "stepHour", "stepMinute", "stepSecond", "enableMeridian", "disableMinute", "defaultTime"], outputs: ["yearSelected", "monthSelected", "opened", "closed"], exportAs: ["ngxMatDatetimePicker"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.MatLabel, selector: "mat-label" }, { type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i2.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i1.MatSuffix, selector: "[matSuffix]" }, { type: i3.NgxMatDatetimeInput, selector: "input[ngxMatDatetimePicker]", inputs: ["ngxMatDatetimePicker", "ngxMatDatetimePickerFilter", "value", "min", "max", "disabled"], outputs: ["dateChange", "dateInput"], exportAs: ["ngxMatDatetimePickerInput"] }] });
|
|
56
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: DatetimeComponent, decorators: [{
|
|
57
|
+
type: Component,
|
|
58
|
+
args: [{ selector: 'gloww-datetime', providers: [
|
|
59
|
+
{
|
|
60
|
+
provide: NG_VALUE_ACCESSOR,
|
|
61
|
+
multi: true,
|
|
62
|
+
useExisting: DatetimeComponent
|
|
63
|
+
}
|
|
64
|
+
], template: "<div style=\"width:100%\">\n <mat-form-field *ngIf=\"mode==='date'\">\n <mat-label>{{display}}</mat-label>\n <input matInput [matDatepicker]=\"picker\" [placeholder]=\"placeHolder\" [(ngModel)]=\"value\">\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n </mat-form-field>\n\n <mat-form-field *ngIf=\"mode==='datetime'\">\n <mat-label>{{display}}</mat-label>\n <input matInput [ngxMatDatetimePicker]=\"pickerDT\" [placeholder]=\"placeHolder\" [(ngModel)]=\"value\">\n <mat-datepicker-toggle matSuffix [for]=\"$any(pickerDT)\"></mat-datepicker-toggle>\n <ngx-mat-datetime-picker #pickerDT [showSpinners]=\"showSpinners\" [showSeconds]=\"showSeconds\" [touchUi]=\"true\" [disableMinute]=\"disableMinute\">\n </ngx-mat-datetime-picker>\n </mat-form-field>\n</div>\n", styles: [""] }]
|
|
65
|
+
}], ctorParameters: function () { return []; }, propDecorators: { _value: [{
|
|
66
|
+
type: Input,
|
|
67
|
+
args: ['value']
|
|
68
|
+
}], display: [{
|
|
69
|
+
type: Input,
|
|
70
|
+
args: ['display']
|
|
71
|
+
}], placeHolder: [{
|
|
72
|
+
type: Input,
|
|
73
|
+
args: ['placeHolder']
|
|
74
|
+
}], mode: [{
|
|
75
|
+
type: Input,
|
|
76
|
+
args: ['mode']
|
|
77
|
+
}], showSpinners: [{
|
|
78
|
+
type: Input
|
|
79
|
+
}], showSeconds: [{
|
|
80
|
+
type: Input
|
|
81
|
+
}], disableMinute: [{
|
|
82
|
+
type: Input
|
|
83
|
+
}] } });
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2xvd3cvc3JjL2xpYi9Db21wb25lbnRzL2RhdGV0aW1lL2RhdGV0aW1lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dsb3d3L3NyYy9saWIvQ29tcG9uZW50cy9kYXRldGltZS9kYXRldGltZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7Ozs7Ozs7O0FBY2pDLE1BQU0sT0FBTyxpQkFBaUI7SUFZNUI7UUFYZ0IsV0FBTSxHQUFRLElBQUksQ0FBQztRQUNqQixZQUFPLEdBQVEsSUFBSSxDQUFDO1FBQ2hCLGdCQUFXLEdBQVEsSUFBSSxDQUFDO1FBQy9CLFNBQUksR0FBVyxNQUFNLENBQUM7UUFDNUIsaUJBQVksR0FBWSxJQUFJLENBQUM7UUFDN0IsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFDN0Isa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFFeEMsYUFBUSxHQUFRLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMxQixjQUFTLEdBQVEsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBRVgsQ0FBQztJQUdqQixJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVELElBQUksS0FBSyxDQUFDLEdBQUc7UUFDWCxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztRQUNsQixJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ3JCLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxRQUFRLEVBQUU7WUFDckMsRUFBRSxHQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQzNEO1FBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNsQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUNELFVBQVUsQ0FBQyxHQUFRO1FBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO0lBQ25CLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxFQUFPO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFDRCxpQkFBaUIsQ0FBQyxFQUFPO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFDRCxnQkFBZ0IsQ0FBRSxVQUFtQjtRQUNuQyw2Q0FBNkM7SUFDL0MsQ0FBQzs7OEdBeENVLGlCQUFpQjtrR0FBakIsaUJBQWlCLDBPQVJqQjtRQUNUO1lBQ0UsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixLQUFLLEVBQUUsSUFBSTtZQUNYLFdBQVcsRUFBRSxpQkFBaUI7U0FDL0I7S0FDRiwwQkNkSCxnNUJBZ0JBOzJGREFhLGlCQUFpQjtrQkFaN0IsU0FBUzsrQkFDRSxnQkFBZ0IsYUFHZjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixLQUFLLEVBQUUsSUFBSTs0QkFDWCxXQUFXLG1CQUFtQjt5QkFDL0I7cUJBQ0Y7MEVBR2UsTUFBTTtzQkFBckIsS0FBSzt1QkFBQyxPQUFPO2dCQUNJLE9BQU87c0JBQXhCLEtBQUs7dUJBQUMsU0FBUztnQkFDTSxXQUFXO3NCQUFoQyxLQUFLO3VCQUFDLGFBQWE7Z0JBQ0wsSUFBSTtzQkFBbEIsS0FBSzt1QkFBQyxNQUFNO2dCQUNKLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgKiBhcyBtb21lbnQgZnJvbSAnbW9tZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ2xvd3ctZGF0ZXRpbWUnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZXRpbWUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRldGltZS5jb21wb25lbnQuY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICB1c2VFeGlzdGluZzogRGF0ZXRpbWVDb21wb25lbnRcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRGF0ZXRpbWVDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIEBJbnB1dCgndmFsdWUnKSBfdmFsdWU6IGFueSA9IG51bGw7XG4gIEBJbnB1dCgnZGlzcGxheScpIGRpc3BsYXk6IGFueSA9IG51bGw7XG4gIEBJbnB1dCgncGxhY2VIb2xkZXInKSBwbGFjZUhvbGRlcjogYW55ID0gbnVsbDtcbiAgQElucHV0KCdtb2RlJykgbW9kZTogc3RyaW5nID0gJ2RhdGUnO1xuICBASW5wdXQoKSBzaG93U3Bpbm5lcnM6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBzaG93U2Vjb25kczogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBkaXNhYmxlTWludXRlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgb25DaGFuZ2U6IGFueSA9ICgpID0+IHsgfTtcbiAgb25Ub3VjaGVkOiBhbnkgPSAoKSA9PiB7IH07XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuXG4gIGdldCB2YWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBzZXQgdmFsdWUodmFsKSB7XG4gICAgdGhpcy5fdmFsdWUgPSB2YWw7XG4gICAgbGV0IGR0ID0gdGhpcy5fdmFsdWU7XG4gICAgaWYgKHR5cGVvZiAodGhpcy5fdmFsdWUpID09PSAnc3RyaW5nJykge1xuICAgICAgZHQgPSAobW9tZW50KHRoaXMuX3ZhbHVlKSBhcyBtb21lbnQuTW9tZW50KS50b0lTT1N0cmluZygpO1xuICAgIH1cbiAgICB0aGlzLm9uQ2hhbmdlKGR0KTtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICB9XG4gIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gb2JqO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAvL3Rocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxufVxuIiwiPGRpdiBzdHlsZT1cIndpZHRoOjEwMCVcIj5cbiAgICA8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCJtb2RlPT09J2RhdGUnXCI+XG4gICAgICAgIDxtYXQtbGFiZWw+e3tkaXNwbGF5fX08L21hdC1sYWJlbD5cbiAgICAgICAgPGlucHV0IG1hdElucHV0IFttYXREYXRlcGlja2VyXT1cInBpY2tlclwiIFtwbGFjZWhvbGRlcl09XCJwbGFjZUhvbGRlclwiIFsobmdNb2RlbCldPVwidmFsdWVcIj5cbiAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBtYXRTdWZmaXggW2Zvcl09XCJwaWNrZXJcIj48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cbiAgICAgICAgPG1hdC1kYXRlcGlja2VyICNwaWNrZXI+PC9tYXQtZGF0ZXBpY2tlcj5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwibW9kZT09PSdkYXRldGltZSdcIj5cbiAgICAgICAgPG1hdC1sYWJlbD57e2Rpc3BsYXl9fTwvbWF0LWxhYmVsPlxuICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW25neE1hdERhdGV0aW1lUGlja2VyXT1cInBpY2tlckRUXCIgW3BsYWNlaG9sZGVyXT1cInBsYWNlSG9sZGVyXCIgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiPlxuICAgICAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlIG1hdFN1ZmZpeCBbZm9yXT1cIiRhbnkocGlja2VyRFQpXCI+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XG4gICAgICAgIDxuZ3gtbWF0LWRhdGV0aW1lLXBpY2tlciAjcGlja2VyRFQgW3Nob3dTcGlubmVyc109XCJzaG93U3Bpbm5lcnNcIiBbc2hvd1NlY29uZHNdPVwic2hvd1NlY29uZHNcIiBbdG91Y2hVaV09XCJ0cnVlXCIgW2Rpc2FibGVNaW51dGVdPVwiZGlzYWJsZU1pbnV0ZVwiPlxuICAgICAgICA8L25neC1tYXQtZGF0ZXRpbWUtcGlja2VyPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG48L2Rpdj5cbiJdfQ==
|