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,152 @@
|
|
|
1
|
+
import { OdeComponent } from 'ngx-ode-core';
|
|
2
|
+
import { Component, ContentChildren, 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 "ngx-ode-sijil";
|
|
6
|
+
export class StepComponent {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.hasError = false;
|
|
9
|
+
this.isFinished = false;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
StepComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: StepComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
13
|
+
StepComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.1", type: StepComponent, selector: "ode-step", inputs: { name: "name", isActived: "isActived" }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: [":host{display:none;overflow:auto;padding:1em}:host.active{display:block}\n"] });
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: StepComponent, decorators: [{
|
|
15
|
+
type: Component,
|
|
16
|
+
args: [{ selector: 'ode-step', template: `<ng-content></ng-content>`, styles: [":host{display:none;overflow:auto;padding:1em}:host.active{display:block}\n"] }]
|
|
17
|
+
}], propDecorators: { name: [{
|
|
18
|
+
type: Input
|
|
19
|
+
}], isActived: [{
|
|
20
|
+
type: Input
|
|
21
|
+
}] } });
|
|
22
|
+
export class WizardComponent extends OdeComponent {
|
|
23
|
+
constructor(injector) {
|
|
24
|
+
super(injector);
|
|
25
|
+
this.cancel = new EventEmitter();
|
|
26
|
+
this.previousStep = new EventEmitter();
|
|
27
|
+
this.nextStep = new EventEmitter();
|
|
28
|
+
this.canDoNext = true;
|
|
29
|
+
this.activeStep = 0;
|
|
30
|
+
}
|
|
31
|
+
doCancel() {
|
|
32
|
+
this.activeStep = 0;
|
|
33
|
+
this.steps.forEach((step, index) => {
|
|
34
|
+
index === 0 ? step.isActived = true : step.isActived = false;
|
|
35
|
+
});
|
|
36
|
+
this.canDoNext = true;
|
|
37
|
+
}
|
|
38
|
+
onPreviousStep() {
|
|
39
|
+
this.previousStep.emit(this.activeStep);
|
|
40
|
+
}
|
|
41
|
+
doPreviousStep() {
|
|
42
|
+
if (this.activeStep > 0) {
|
|
43
|
+
this.steps.toArray()[this.activeStep].isActived = false;
|
|
44
|
+
this.steps.toArray()[this.activeStep - 1].isActived = true;
|
|
45
|
+
this.activeStep--;
|
|
46
|
+
this.canDoNext = true;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
onNextStep() {
|
|
50
|
+
this.nextStep.emit(this.activeStep);
|
|
51
|
+
}
|
|
52
|
+
doNextStep(error) {
|
|
53
|
+
if (this.activeStep < this.steps.length - 1) {
|
|
54
|
+
this.canDoNext = !error;
|
|
55
|
+
this.steps.toArray()[this.activeStep].isActived = false;
|
|
56
|
+
this.steps.toArray()[this.activeStep + 1].isActived = true;
|
|
57
|
+
this.activeStep++;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
ngAfterContentInit() {
|
|
61
|
+
super.ngAfterContentInit();
|
|
62
|
+
if (this.steps.length === 0) {
|
|
63
|
+
throw new Error('<wizard> component musts nest at least 1 <step> compoent');
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
WizardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: WizardComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
68
|
+
WizardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.1", type: WizardComponent, selector: "ode-wizard", outputs: { cancel: "cancel", previousStep: "previousStep", nextStep: "nextStep" }, queries: [{ propertyName: "steps", predicate: StepComponent }], usesInheritance: true, ngImport: i0, template: `
|
|
69
|
+
<div class="wizard">
|
|
70
|
+
<nav class="wizard-menu">
|
|
71
|
+
<h2 class="wizard-menu__title"><s5l>wizard.steps</s5l></h2>
|
|
72
|
+
<ul>
|
|
73
|
+
<li *ngFor="let step of steps"
|
|
74
|
+
[class.active]="step.isActived"
|
|
75
|
+
[class.finish]="step.isFinished">
|
|
76
|
+
{{step.name}}
|
|
77
|
+
</li>
|
|
78
|
+
</ul>
|
|
79
|
+
</nav>
|
|
80
|
+
<section class="wizard-content">
|
|
81
|
+
<ng-content select="ode-step"></ng-content>
|
|
82
|
+
<nav class="wizard-content-nav" *ngIf="activeStep < steps.length - 1">
|
|
83
|
+
<button class="wizard-content-nav__button cancel"
|
|
84
|
+
(click)="cancel.emit()"
|
|
85
|
+
[title]="'cancel' | translate">
|
|
86
|
+
{{ 'cancel' | translate }}
|
|
87
|
+
</button>
|
|
88
|
+
<button class="wizard-content-nav__button previous"
|
|
89
|
+
(click)="onPreviousStep()"
|
|
90
|
+
*ngIf="activeStep > 0"
|
|
91
|
+
[title]="'previous' | translate">
|
|
92
|
+
{{ 'wizard.previous' | translate }}
|
|
93
|
+
</button>
|
|
94
|
+
<button class="wizard-content-nav__button wizard-content-nav__button--next"
|
|
95
|
+
(click)="onNextStep()"
|
|
96
|
+
[disabled]="!canDoNext"
|
|
97
|
+
[title]="'next' | translate">
|
|
98
|
+
{{ 'wizard.next' | translate }}
|
|
99
|
+
</button>
|
|
100
|
+
</nav>
|
|
101
|
+
</section>
|
|
102
|
+
</div>
|
|
103
|
+
`, isInline: true, styles: [".wizard{display:flex}.wizard-menu{background:#5b6472;flex:0 0 240px}.wizard-menu ul{padding:10px 30px}.wizard-menu ul li{color:#eaedf2;list-style-type:none;padding:5px 0}.wizard-menu ul li.active,.wizard-menu ul li.finish{font-weight:700;color:#fff}.wizard-menu ul li.finish{color:green}.wizard-menu__title{font-weight:700;font-size:1.2em;color:#fff;padding:25px 0 0 10px}.wizard-content{background:#fff;flex:auto}.wizard-content-nav{text-align:right}.wizard-content-nav__button{margin:10px 0}.wizard-content-nav__button--next{margin-right:16px}\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: "component", type: i2.S5lComponent, selector: "s5l", inputs: ["s5l-params", "s5l-lang"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] });
|
|
104
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: WizardComponent, decorators: [{
|
|
105
|
+
type: Component,
|
|
106
|
+
args: [{ selector: 'ode-wizard', template: `
|
|
107
|
+
<div class="wizard">
|
|
108
|
+
<nav class="wizard-menu">
|
|
109
|
+
<h2 class="wizard-menu__title"><s5l>wizard.steps</s5l></h2>
|
|
110
|
+
<ul>
|
|
111
|
+
<li *ngFor="let step of steps"
|
|
112
|
+
[class.active]="step.isActived"
|
|
113
|
+
[class.finish]="step.isFinished">
|
|
114
|
+
{{step.name}}
|
|
115
|
+
</li>
|
|
116
|
+
</ul>
|
|
117
|
+
</nav>
|
|
118
|
+
<section class="wizard-content">
|
|
119
|
+
<ng-content select="ode-step"></ng-content>
|
|
120
|
+
<nav class="wizard-content-nav" *ngIf="activeStep < steps.length - 1">
|
|
121
|
+
<button class="wizard-content-nav__button cancel"
|
|
122
|
+
(click)="cancel.emit()"
|
|
123
|
+
[title]="'cancel' | translate">
|
|
124
|
+
{{ 'cancel' | translate }}
|
|
125
|
+
</button>
|
|
126
|
+
<button class="wizard-content-nav__button previous"
|
|
127
|
+
(click)="onPreviousStep()"
|
|
128
|
+
*ngIf="activeStep > 0"
|
|
129
|
+
[title]="'previous' | translate">
|
|
130
|
+
{{ 'wizard.previous' | translate }}
|
|
131
|
+
</button>
|
|
132
|
+
<button class="wizard-content-nav__button wizard-content-nav__button--next"
|
|
133
|
+
(click)="onNextStep()"
|
|
134
|
+
[disabled]="!canDoNext"
|
|
135
|
+
[title]="'next' | translate">
|
|
136
|
+
{{ 'wizard.next' | translate }}
|
|
137
|
+
</button>
|
|
138
|
+
</nav>
|
|
139
|
+
</section>
|
|
140
|
+
</div>
|
|
141
|
+
`, styles: [".wizard{display:flex}.wizard-menu{background:#5b6472;flex:0 0 240px}.wizard-menu ul{padding:10px 30px}.wizard-menu ul li{color:#eaedf2;list-style-type:none;padding:5px 0}.wizard-menu ul li.active,.wizard-menu ul li.finish{font-weight:700;color:#fff}.wizard-menu ul li.finish{color:green}.wizard-menu__title{font-weight:700;font-size:1.2em;color:#fff;padding:25px 0 0 10px}.wizard-content{background:#fff;flex:auto}.wizard-content-nav{text-align:right}.wizard-content-nav__button{margin:10px 0}.wizard-content-nav__button--next{margin-right:16px}\n"] }]
|
|
142
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { cancel: [{
|
|
143
|
+
type: Output
|
|
144
|
+
}], previousStep: [{
|
|
145
|
+
type: Output
|
|
146
|
+
}], nextStep: [{
|
|
147
|
+
type: Output
|
|
148
|
+
}], steps: [{
|
|
149
|
+
type: ContentChildren,
|
|
150
|
+
args: [StepComponent]
|
|
151
|
+
}] } });
|
|
152
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1vZGUtdWkvc3JjL2xpYi9jb21wb25lbnRzL3dpemFyZC93aXphcmQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDNUMsT0FBTyxFQUVMLFNBQVMsRUFDVCxlQUFlLEVBQ2YsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBR1AsTUFBTSxlQUFlLENBQUM7Ozs7QUFnQnZCLE1BQU0sT0FBTyxhQUFhO0lBZDFCO1FBaUJJLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsZUFBVSxHQUFHLEtBQUssQ0FBQztLQUN0Qjs7MEdBTFksYUFBYTs4RkFBYixhQUFhLGtHQVpaLDJCQUEyQjsyRkFZNUIsYUFBYTtrQkFkekIsU0FBUzsrQkFDSyxVQUFVLFlBQ1gsMkJBQTJCOzhCQWE1QixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSzs7QUF3RlYsTUFBTSxPQUFPLGVBQWdCLFNBQVEsWUFBWTtJQVU3QyxZQUFZLFFBQWtCO1FBQzFCLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQVZWLFdBQU0sR0FBcUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM5QyxpQkFBWSxHQUF5QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3hELGFBQVEsR0FBeUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUV2RCxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBR3hCLGVBQVUsR0FBRyxDQUFDLENBQUM7SUFJZixDQUFDO0lBQ0QsUUFBUTtRQUNKLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQy9CLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUNqRSxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0lBQzFCLENBQUM7SUFFRCxjQUFjO1FBQ1YsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxjQUFjO1FBQ1YsSUFBSSxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRTtZQUNyQixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3hELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQzNELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztTQUN6QjtJQUNMLENBQUM7SUFFRCxVQUFVO1FBQ04sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFDRCxVQUFVLENBQUMsS0FBZTtRQUN0QixJQUFJLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3pDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFLLENBQUM7WUFDeEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUN4RCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUMzRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDckI7SUFDTCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2QsS0FBSyxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDM0IsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDekIsTUFBTSxJQUFJLEtBQUssQ0FBQywwREFBMEQsQ0FBQyxDQUFDO1NBQy9FO0lBQ0wsQ0FBQzs7NEdBbkRRLGVBQWU7Z0dBQWYsZUFBZSwySkFPUCxhQUFhLG9EQXhGcEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBbUNUOzJGQThDUSxlQUFlO2tCQW5GM0IsU0FBUzsrQkFDSSxZQUFZLFlBQ1o7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBbUNUOytGQStDUyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUl5QixLQUFLO3NCQUFwQyxlQUFlO3VCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPZGVDb21wb25lbnQgfSBmcm9tICduZ3gtb2RlLWNvcmUnO1xuaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIEluamVjdG9yXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvciA6ICdvZGUtc3RlcCcsXG4gICAgdGVtcGxhdGU6IGA8bmctY29udGVudD48L25nLWNvbnRlbnQ+YCxcbiAgICBzdHlsZXM6IFtgXG4gICAgICAgIDpob3N0IHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICBvdmVyZmxvdzogYXV0bztcbiAgICAgICAgICAgIHBhZGRpbmcgOiAxZW07XG4gICAgICAgIH1cbiAgICAgICAgOmhvc3QuYWN0aXZlIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG4gICAgYF1cbn0pXG5leHBvcnQgY2xhc3MgU3RlcENvbXBvbmVudCB7XG4gICAgQElucHV0KCkgbmFtZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGlzQWN0aXZlZDogYm9vbGVhbjtcbiAgICBoYXNFcnJvciA9IGZhbHNlO1xuICAgIGlzRmluaXNoZWQgPSBmYWxzZTtcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdvZGUtd2l6YXJkJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2IGNsYXNzPVwid2l6YXJkXCI+XG4gICAgICAgICAgICA8bmF2IGNsYXNzPVwid2l6YXJkLW1lbnVcIj5cbiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJ3aXphcmQtbWVudV9fdGl0bGVcIj48czVsPndpemFyZC5zdGVwczwvczVsPjwvaDI+XG4gICAgICAgICAgICAgICAgPHVsPlxuICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IHN0ZXAgb2Ygc3RlcHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJzdGVwLmlzQWN0aXZlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmluaXNoXT1cInN0ZXAuaXNGaW5pc2hlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3tzdGVwLm5hbWV9fVxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8L25hdj5cbiAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwid2l6YXJkLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJvZGUtc3RlcFwiPjwvbmctY29udGVudD5cbiAgICAgICAgICAgICAgICA8bmF2IGNsYXNzPVwid2l6YXJkLWNvbnRlbnQtbmF2XCIgKm5nSWY9XCJhY3RpdmVTdGVwIDwgc3RlcHMubGVuZ3RoIC0gMVwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwid2l6YXJkLWNvbnRlbnQtbmF2X19idXR0b24gY2FuY2VsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjYW5jZWwuZW1pdCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInY2FuY2VsJyB8IHRyYW5zbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2NhbmNlbCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ3aXphcmQtY29udGVudC1uYXZfX2J1dHRvbiBwcmV2aW91c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25QcmV2aW91c1N0ZXAoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImFjdGl2ZVN0ZXAgPiAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCIncHJldmlvdXMnIHwgdHJhbnNsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyAnd2l6YXJkLnByZXZpb3VzJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIndpemFyZC1jb250ZW50LW5hdl9fYnV0dG9uIHdpemFyZC1jb250ZW50LW5hdl9fYnV0dG9uLS1uZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbk5leHRTdGVwKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFjYW5Eb05leHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIiduZXh0JyB8IHRyYW5zbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3dpemFyZC5uZXh0JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L25hdj5cbiAgICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgYCxcbiAgICBzdHlsZXM6IFtgXG4gICAgICAgIC53aXphcmQge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgfVxuICAgICAgICAud2l6YXJkLW1lbnUge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogIzViNjQ3MjtcbiAgICAgICAgICAgIGZsZXg6IDAgMCAyNDBweDtcbiAgICAgICAgfVxuICAgICAgICAud2l6YXJkLW1lbnUgdWwge1xuICAgICAgICAgICAgcGFkZGluZzogMTBweCAzMHB4O1xuICAgICAgICB9XG4gICAgICAgIC53aXphcmQtbWVudSB1bCBsaSB7XG4gICAgICAgICAgICBjb2xvcjogI2VhZWRmMjtcbiAgICAgICAgICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgICAgICAgICAgIHBhZGRpbmc6IDVweCAwO1xuICAgICAgICB9XG4gICAgICAgIC53aXphcmQtbWVudSB1bCBsaS5hY3RpdmUsXG4gICAgICAgIC53aXphcmQtbWVudSB1bCBsaS5maW5pc2gge1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgIH1cbiAgICAgICAgLndpemFyZC1tZW51IHVsIGxpLmZpbmlzaCB7XG4gICAgICAgICAgICBjb2xvcjogZ3JlZW47XG4gICAgICAgIH1cbiAgICAgICAgLndpemFyZC1tZW51X190aXRsZSB7XG4gICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4yZW07XG4gICAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgICAgICBwYWRkaW5nOiAyNXB4IDAgMCAxMHB4O1xuICAgICAgICB9XG4gICAgICAgIC53aXphcmQtY29udGVudCB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmO1xuICAgICAgICAgICAgZmxleDogYXV0bztcbiAgICAgICAgfVxuICAgICAgICAud2l6YXJkLWNvbnRlbnQtbmF2IHtcbiAgICAgICAgICAgIHRleHQtYWxpZ24gOiByaWdodDtcbiAgICAgICAgfVxuICAgICAgICAud2l6YXJkLWNvbnRlbnQtbmF2X19idXR0b24ge1xuICAgICAgICAgICAgbWFyZ2luOiAxMHB4IDA7XG4gICAgICAgIH1cbiAgICAgICAgLndpemFyZC1jb250ZW50LW5hdl9fYnV0dG9uLS1uZXh0IHtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTZweDtcbiAgICAgICAgfVxuICAgIGBdXG59KVxuZXhwb3J0IGNsYXNzIFdpemFyZENvbXBvbmVudCBleHRlbmRzIE9kZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xuICAgIEBPdXRwdXQoKSBjYW5jZWw6IEV2ZW50RW1pdHRlcjx7fT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIHByZXZpb3VzU3RlcDogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIG5leHRTdGVwOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIHB1YmxpYyBjYW5Eb05leHQgPSB0cnVlO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihTdGVwQ29tcG9uZW50KSBzdGVwczogUXVlcnlMaXN0PFN0ZXBDb21wb25lbnQ+O1xuICAgIGFjdGl2ZVN0ZXAgPSAwO1xuXG4gICAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgICAgIHN1cGVyKGluamVjdG9yKTtcbiAgICB9XG4gICAgZG9DYW5jZWwoKSB7XG4gICAgICAgIHRoaXMuYWN0aXZlU3RlcCA9IDA7XG4gICAgICAgIHRoaXMuc3RlcHMuZm9yRWFjaCgoc3RlcCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGluZGV4ID09PSAwID8gc3RlcC5pc0FjdGl2ZWQgPSB0cnVlIDogc3RlcC5pc0FjdGl2ZWQgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY2FuRG9OZXh0ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBvblByZXZpb3VzU3RlcCgpIHtcbiAgICAgICAgdGhpcy5wcmV2aW91c1N0ZXAuZW1pdCh0aGlzLmFjdGl2ZVN0ZXApO1xuICAgIH1cblxuICAgIGRvUHJldmlvdXNTdGVwKCkge1xuICAgICAgICBpZiAodGhpcy5hY3RpdmVTdGVwID4gMCkge1xuICAgICAgICAgICAgdGhpcy5zdGVwcy50b0FycmF5KClbdGhpcy5hY3RpdmVTdGVwXS5pc0FjdGl2ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuc3RlcHMudG9BcnJheSgpW3RoaXMuYWN0aXZlU3RlcCAtIDFdLmlzQWN0aXZlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZVN0ZXAtLTtcbiAgICAgICAgICAgIHRoaXMuY2FuRG9OZXh0ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTmV4dFN0ZXAoKSB7XG4gICAgICAgIHRoaXMubmV4dFN0ZXAuZW1pdCh0aGlzLmFjdGl2ZVN0ZXApO1xuICAgIH1cbiAgICBkb05leHRTdGVwKGVycm9yPzogYm9vbGVhbikge1xuICAgICAgICBpZiAodGhpcy5hY3RpdmVTdGVwIDwgdGhpcy5zdGVwcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICB0aGlzLmNhbkRvTmV4dCA9ICFlcnJvcjtcbiAgICAgICAgICAgIHRoaXMuc3RlcHMudG9BcnJheSgpW3RoaXMuYWN0aXZlU3RlcF0uaXNBY3RpdmVkID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnN0ZXBzLnRvQXJyYXkoKVt0aGlzLmFjdGl2ZVN0ZXAgKyAxXS5pc0FjdGl2ZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVTdGVwKys7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJDb250ZW50SW5pdCgpO1xuICAgICAgICBpZiAodGhpcy5zdGVwcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignPHdpemFyZD4gY29tcG9uZW50IG11c3RzIG5lc3QgYXQgbGVhc3QgMSA8c3RlcD4gY29tcG9lbnQnKTtcbiAgICAgICAgfVxuICAgIH1cblxufVxuIl19
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Directive, HostListener, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class AnchorDirective {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.offset = 50;
|
|
6
|
+
}
|
|
7
|
+
onClick() {
|
|
8
|
+
const element = document.getElementById(this.anchor);
|
|
9
|
+
window.scrollBy(0, element.getBoundingClientRect().top - this.offset);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
AnchorDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: AnchorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
13
|
+
AnchorDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.1", type: AnchorDirective, selector: "[anchor]", inputs: { anchor: "anchor", offset: "offset" }, host: { listeners: { "click": "onClick()" } }, ngImport: i0 });
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: AnchorDirective, decorators: [{
|
|
15
|
+
type: Directive,
|
|
16
|
+
args: [{ selector: '[anchor]' }]
|
|
17
|
+
}], propDecorators: { anchor: [{
|
|
18
|
+
type: Input,
|
|
19
|
+
args: ['anchor']
|
|
20
|
+
}], offset: [{
|
|
21
|
+
type: Input,
|
|
22
|
+
args: ['offset']
|
|
23
|
+
}], onClick: [{
|
|
24
|
+
type: HostListener,
|
|
25
|
+
args: ['click']
|
|
26
|
+
}] } });
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5jaG9yLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1vZGUtdWkvc3JjL2xpYi9kaXJlY3RpdmVzL2FuY2hvci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDOztBQUc3RCxNQUFNLE9BQU8sZUFBZTtJQUQ1QjtRQUlxQixXQUFNLEdBQUcsRUFBRSxDQUFDO0tBUWhDO0lBTEcsT0FBTztRQUNILE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JELE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUUsQ0FBQzs7NEdBVFEsZUFBZTtnR0FBZixlQUFlOzJGQUFmLGVBQWU7a0JBRDNCLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFOzhCQUdkLE1BQU07c0JBQXRCLEtBQUs7dUJBQUMsUUFBUTtnQkFDRSxNQUFNO3NCQUF0QixLQUFLO3VCQUFDLFFBQVE7Z0JBR2YsT0FBTztzQkFETixZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZSwgSG9zdExpc3RlbmVyLCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1thbmNob3JdJyB9KVxuZXhwb3J0IGNsYXNzIEFuY2hvckRpcmVjdGl2ZSB7XG5cbiAgICBASW5wdXQoJ2FuY2hvcicpIGFuY2hvcjogc3RyaW5nO1xuICAgIEBJbnB1dCgnb2Zmc2V0Jykgb2Zmc2V0ID0gNTA7XG5cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gICAgb25DbGljaygpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuYW5jaG9yKTtcbiAgICAgICAgd2luZG93LnNjcm9sbEJ5KDAsIGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIC0gdGhpcy5vZmZzZXQpO1xuICAgIH1cblxufVxuIl19
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { Directive, EventEmitter, HostBinding, HostListener, Input, Output } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../services/inputFile.service";
|
|
4
|
+
export class DragAndDropFilesDirective {
|
|
5
|
+
constructor(inputFileService) {
|
|
6
|
+
this.inputFileService = inputFileService;
|
|
7
|
+
this.allowedExtensions = [];
|
|
8
|
+
this.maxFilesNumber = 1;
|
|
9
|
+
this.dragAndDrop = new EventEmitter();
|
|
10
|
+
this.invalidDragAndDrop = new EventEmitter();
|
|
11
|
+
this.backgroundColor = '#fafafa';
|
|
12
|
+
this.borderColor = '#ddd';
|
|
13
|
+
}
|
|
14
|
+
onDragOver(evt) {
|
|
15
|
+
if (!this.disabled) {
|
|
16
|
+
evt.preventDefault();
|
|
17
|
+
evt.stopPropagation();
|
|
18
|
+
this.highlightColors();
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
onDragLeave(evt) {
|
|
22
|
+
if (!this.disabled) {
|
|
23
|
+
evt.preventDefault();
|
|
24
|
+
evt.stopPropagation();
|
|
25
|
+
this.resetColors();
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
onDrop(event) {
|
|
29
|
+
if (!this.disabled) {
|
|
30
|
+
event.preventDefault();
|
|
31
|
+
event.stopPropagation();
|
|
32
|
+
if (event.dataTransfer) {
|
|
33
|
+
this.inputFileService
|
|
34
|
+
.validateFiles(event.dataTransfer.files, this.maxFilesNumber, this.allowedExtensions)
|
|
35
|
+
.subscribe(files => this.dragAndDrop.emit(files), error => this.invalidDragAndDrop.emit(error));
|
|
36
|
+
}
|
|
37
|
+
this.resetColors();
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
resetColors() {
|
|
41
|
+
this.backgroundColor = '#fafafa';
|
|
42
|
+
this.borderColor = '#ddd';
|
|
43
|
+
}
|
|
44
|
+
highlightColors() {
|
|
45
|
+
this.backgroundColor = '#ffd1b6';
|
|
46
|
+
this.borderColor = '#ff8352';
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
DragAndDropFilesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: DragAndDropFilesDirective, deps: [{ token: i1.InputFileService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
50
|
+
DragAndDropFilesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.1", type: DragAndDropFilesDirective, selector: "[dragAndDropFiles]", inputs: { allowedExtensions: "allowedExtensions", maxFilesNumber: "maxFilesNumber", disabled: "disabled" }, outputs: { dragAndDrop: "dragAndDrop", invalidDragAndDrop: "invalidDragAndDrop" }, host: { listeners: { "dragover": "onDragOver($event)", "dragleave": "onDragLeave($event)", "drop": "onDrop($event)" }, properties: { "style.background": "this.backgroundColor", "style.border-color": "this.borderColor" } }, ngImport: i0 });
|
|
51
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: DragAndDropFilesDirective, decorators: [{
|
|
52
|
+
type: Directive,
|
|
53
|
+
args: [{
|
|
54
|
+
selector: '[dragAndDropFiles]'
|
|
55
|
+
}]
|
|
56
|
+
}], ctorParameters: function () { return [{ type: i1.InputFileService }]; }, propDecorators: { allowedExtensions: [{
|
|
57
|
+
type: Input
|
|
58
|
+
}], maxFilesNumber: [{
|
|
59
|
+
type: Input
|
|
60
|
+
}], disabled: [{
|
|
61
|
+
type: Input
|
|
62
|
+
}], dragAndDrop: [{
|
|
63
|
+
type: Output
|
|
64
|
+
}], invalidDragAndDrop: [{
|
|
65
|
+
type: Output
|
|
66
|
+
}], backgroundColor: [{
|
|
67
|
+
type: HostBinding,
|
|
68
|
+
args: ['style.background']
|
|
69
|
+
}], borderColor: [{
|
|
70
|
+
type: HostBinding,
|
|
71
|
+
args: ['style.border-color']
|
|
72
|
+
}], onDragOver: [{
|
|
73
|
+
type: HostListener,
|
|
74
|
+
args: ['dragover', ['$event']]
|
|
75
|
+
}], onDragLeave: [{
|
|
76
|
+
type: HostListener,
|
|
77
|
+
args: ['dragleave', ['$event']]
|
|
78
|
+
}], onDrop: [{
|
|
79
|
+
type: HostListener,
|
|
80
|
+
args: ['drop', ['$event']]
|
|
81
|
+
}] } });
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1hbmQtZHJvcC1maWxlcy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtb2RlLXVpL3NyYy9saWIvZGlyZWN0aXZlcy9kcmFnLWFuZC1kcm9wLWZpbGVzLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7OztBQU1oRyxNQUFNLE9BQU8seUJBQXlCO0lBa0JsQyxZQUFvQixnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQWhCdEQsc0JBQWlCLEdBQWtCLEVBQUUsQ0FBQztRQUV0QyxtQkFBYyxHQUFHLENBQUMsQ0FBQztRQUtuQixnQkFBVyxHQUF5QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXZELHVCQUFrQixHQUF5QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBR3ZELG9CQUFlLEdBQUcsU0FBUyxDQUFDO1FBRTVCLGdCQUFXLEdBQUcsTUFBTSxDQUFDO0lBRzVCLENBQUM7SUFHTSxVQUFVLENBQUMsR0FBRztRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNoQixHQUFHLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDckIsR0FBRyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUMxQjtJQUNMLENBQUM7SUFHTSxXQUFXLENBQUMsR0FBRztRQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNoQixHQUFHLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDckIsR0FBRyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN0QjtJQUNMLENBQUM7SUFHTSxNQUFNLENBQUMsS0FBSztRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2hCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7WUFFeEIsSUFBSSxLQUFLLENBQUMsWUFBWSxFQUFFO2dCQUNwQixJQUFJLENBQUMsZ0JBQWdCO3FCQUNoQixhQUFhLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUM7cUJBQ3BGLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUMxQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUMzRDtZQUVELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN0QjtJQUNMLENBQUM7SUFFTyxXQUFXO1FBQ2YsSUFBSSxDQUFDLGVBQWUsR0FBRyxTQUFTLENBQUM7UUFDakMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUM7SUFDOUIsQ0FBQztJQUVPLGVBQWU7UUFDbkIsSUFBSSxDQUFDLGVBQWUsR0FBRyxTQUFTLENBQUM7UUFDakMsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUM7SUFDakMsQ0FBQzs7c0hBaEVRLHlCQUF5QjswR0FBekIseUJBQXlCOzJGQUF6Qix5QkFBeUI7a0JBSHJDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLG9CQUFvQjtpQkFDakM7dUdBR0csaUJBQWlCO3NCQURoQixLQUFLO2dCQUdOLGNBQWM7c0JBRGIsS0FBSztnQkFHTixRQUFRO3NCQURQLEtBQUs7Z0JBSU4sV0FBVztzQkFEVixNQUFNO2dCQUdQLGtCQUFrQjtzQkFEakIsTUFBTTtnQkFJQSxlQUFlO3NCQURyQixXQUFXO3VCQUFDLGtCQUFrQjtnQkFHeEIsV0FBVztzQkFEakIsV0FBVzt1QkFBQyxvQkFBb0I7Z0JBTzFCLFVBQVU7c0JBRGhCLFlBQVk7dUJBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVU3QixXQUFXO3NCQURqQixZQUFZO3VCQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFVOUIsTUFBTTtzQkFEWixZQUFZO3VCQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtJbnB1dEZpbGVTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlcy9pbnB1dEZpbGUuc2VydmljZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2RyYWdBbmREcm9wRmlsZXNdJ1xufSlcbmV4cG9ydCBjbGFzcyBEcmFnQW5kRHJvcEZpbGVzRGlyZWN0aXZlIHtcbiAgICBASW5wdXQoKVxuICAgIGFsbG93ZWRFeHRlbnNpb25zOiBBcnJheTxzdHJpbmc+ID0gW107XG4gICAgQElucHV0KClcbiAgICBtYXhGaWxlc051bWJlciA9IDE7XG4gICAgQElucHV0KClcbiAgICBkaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIEBPdXRwdXQoKVxuICAgIGRyYWdBbmREcm9wOiBFdmVudEVtaXR0ZXI8RmlsZVtdPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KClcbiAgICBpbnZhbGlkRHJhZ0FuZERyb3A6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5iYWNrZ3JvdW5kJylcbiAgICBwdWJsaWMgYmFja2dyb3VuZENvbG9yID0gJyNmYWZhZmEnO1xuICAgIEBIb3N0QmluZGluZygnc3R5bGUuYm9yZGVyLWNvbG9yJylcbiAgICBwdWJsaWMgYm9yZGVyQ29sb3IgPSAnI2RkZCc7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGlucHV0RmlsZVNlcnZpY2U6IElucHV0RmlsZVNlcnZpY2UpIHtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdkcmFnb3ZlcicsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uRHJhZ092ZXIoZXZ0KSB7XG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICB0aGlzLmhpZ2hsaWdodENvbG9ycygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignZHJhZ2xlYXZlJywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgb25EcmFnTGVhdmUoZXZ0KSB7XG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICB0aGlzLnJlc2V0Q29sb3JzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdkcm9wJywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgb25Ecm9wKGV2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgICAgICBpZiAoZXZlbnQuZGF0YVRyYW5zZmVyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dEZpbGVTZXJ2aWNlXG4gICAgICAgICAgICAgICAgICAgIC52YWxpZGF0ZUZpbGVzKGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcywgdGhpcy5tYXhGaWxlc051bWJlciwgdGhpcy5hbGxvd2VkRXh0ZW5zaW9ucylcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZShmaWxlcyA9PiB0aGlzLmRyYWdBbmREcm9wLmVtaXQoZmlsZXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAsIGVycm9yID0+IHRoaXMuaW52YWxpZERyYWdBbmREcm9wLmVtaXQoZXJyb3IpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5yZXNldENvbG9ycygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXNldENvbG9ycygpIHtcbiAgICAgICAgdGhpcy5iYWNrZ3JvdW5kQ29sb3IgPSAnI2ZhZmFmYSc7XG4gICAgICAgIHRoaXMuYm9yZGVyQ29sb3IgPSAnI2RkZCc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoaWdobGlnaHRDb2xvcnMoKSB7XG4gICAgICAgIHRoaXMuYmFja2dyb3VuZENvbG9yID0gJyNmZmQxYjYnO1xuICAgICAgICB0aGlzLmJvcmRlckNvbG9yID0gJyNmZjgzNTInO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Usefull to desccribe (type and input data) a component
|
|
3
|
+
* that will be dynamically instanciate
|
|
4
|
+
*/
|
|
5
|
+
export class ComponentDescriptor {
|
|
6
|
+
constructor(type, data) {
|
|
7
|
+
this.type = type;
|
|
8
|
+
this.data = data;
|
|
9
|
+
}
|
|
10
|
+
assignData(data) {
|
|
11
|
+
Object.assign(this.data, data);
|
|
12
|
+
return this;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LWRlc2NyaXB0b3IubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtb2RlLXVpL3NyYy9saWIvZGlyZWN0aXZlcy9keW5hbWljLWNvbXBvbmVudC9jb21wb25lbnQtZGVzY3JpcHRvci5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7O0VBR0U7QUFDRixNQUFNLE9BQU8sbUJBQW1CO0lBQzdCLFlBQ1csSUFBZSxFQUNmLElBQVM7UUFEVCxTQUFJLEdBQUosSUFBSSxDQUFXO1FBQ2YsU0FBSSxHQUFKLElBQUksQ0FBSztJQUNqQixDQUFDO0lBRUosVUFBVSxDQUFDLElBQVM7UUFDaEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQy9CLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7Q0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VHlwZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuKiBVc2VmdWxsIHRvIGRlc2NjcmliZSAodHlwZSBhbmQgaW5wdXQgZGF0YSkgYSBjb21wb25lbnRcbiogdGhhdCB3aWxsIGJlIGR5bmFtaWNhbGx5IGluc3RhbmNpYXRlXG4qL1xuZXhwb3J0IGNsYXNzIENvbXBvbmVudERlc2NyaXB0b3Ige1xuICAgY29uc3RydWN0b3IoXG4gICAgICAgcHVibGljIHR5cGU6IFR5cGU8YW55PixcbiAgICAgICBwdWJsaWMgZGF0YTogYW55XG4gICApIHt9XG5cbiAgIGFzc2lnbkRhdGEoZGF0YTogYW55KTogQ29tcG9uZW50RGVzY3JpcHRvciB7XG4gICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLmRhdGEsIGRhdGEpO1xuICAgICAgIHJldHVybiB0aGlzO1xuICAgfVxufVxuIl19
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { Directive, Input, } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* Dynamically load the component describe with the @input dynamic-component
|
|
5
|
+
*/
|
|
6
|
+
export class DynamicComponentDirective {
|
|
7
|
+
constructor(viewContainerRef, componentFactoryResolver) {
|
|
8
|
+
this.viewContainerRef = viewContainerRef;
|
|
9
|
+
this.componentFactoryResolver = componentFactoryResolver;
|
|
10
|
+
}
|
|
11
|
+
load(data) {
|
|
12
|
+
if (this.isLoaded()) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
const componentFactory = this.componentFactoryResolver.resolveComponentFactory(this.componentDesc.type);
|
|
16
|
+
this.viewContainerRef.clear();
|
|
17
|
+
this.componentRef = this.viewContainerRef.createComponent(componentFactory);
|
|
18
|
+
if (data != undefined) {
|
|
19
|
+
this.componentDesc.assignData(data);
|
|
20
|
+
}
|
|
21
|
+
for (const attribute in this.componentDesc.data) {
|
|
22
|
+
this.componentRef.instance[attribute] = this.componentDesc.data[attribute];
|
|
23
|
+
if (attribute == 'hideEvent') {
|
|
24
|
+
this.componentRef.instance.hideEvent.subscribe(e => {
|
|
25
|
+
this.destroy();
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
isLoaded() {
|
|
31
|
+
if (this.componentRef == undefined) {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
return this.componentRef.instance != null;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
destroy() {
|
|
39
|
+
if (this.componentRef.instance.hideEvent != undefined) {
|
|
40
|
+
this.componentRef.instance.hideEvent.unsubscribe();
|
|
41
|
+
}
|
|
42
|
+
// FIXME: this.componentRef.destroy(); => This one usually should work, better to use but do nothing...
|
|
43
|
+
delete this.componentRef;
|
|
44
|
+
this.viewContainerRef.clear();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
DynamicComponentDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: DynamicComponentDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Directive });
|
|
48
|
+
DynamicComponentDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.1", type: DynamicComponentDirective, selector: "[dynamic-component]", inputs: { componentDesc: ["dynamic-component", "componentDesc"] }, ngImport: i0 });
|
|
49
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: DynamicComponentDirective, decorators: [{
|
|
50
|
+
type: Directive,
|
|
51
|
+
args: [{
|
|
52
|
+
selector: '[dynamic-component]',
|
|
53
|
+
}]
|
|
54
|
+
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ComponentFactoryResolver }]; }, propDecorators: { componentDesc: [{
|
|
55
|
+
type: Input,
|
|
56
|
+
args: ['dynamic-component']
|
|
57
|
+
}] } });
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1jb21wb25lbnQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW9kZS11aS9zcmMvbGliL2RpcmVjdGl2ZXMvZHluYW1pYy1jb21wb25lbnQvZHluYW1pYy1jb21wb25lbnQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBeUMsU0FBUyxFQUFFLEtBQUssR0FBcUIsTUFBTSxlQUFlLENBQUM7O0FBRzNHOztFQUVFO0FBSUYsTUFBTSxPQUFPLHlCQUF5QjtJQUNsQyxZQUNZLGdCQUFrQyxFQUNsQyx3QkFBa0Q7UUFEbEQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO0lBQzNELENBQUM7SUFPSixJQUFJLENBQUMsSUFBVTtRQUNYLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQUUsT0FBTztTQUFFO1FBQ2hDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRTVFLElBQUksSUFBSSxJQUFJLFNBQVMsRUFBRTtZQUNuQixJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN2QztRQUNELEtBQUssTUFBTSxTQUFTLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUU7WUFDN0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDM0UsSUFBSSxTQUFTLElBQUksV0FBVyxFQUFFO2dCQUMxQixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUMvQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ25CLENBQUMsQ0FBQyxDQUFDO2FBQ047U0FDSjtJQUNMLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLFNBQVMsRUFBRTtZQUNoQyxPQUFPLEtBQUssQ0FBQztTQUNoQjthQUNJO1lBQ0QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUM7U0FDN0M7SUFDTCxDQUFDO0lBRUQsT0FBTztRQUNILElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsU0FBUyxJQUFJLFNBQVMsRUFBRTtZQUNuRCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDdEQ7UUFDRCx1R0FBdUc7UUFDdkcsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNsQyxDQUFDOztzSEE5Q1EseUJBQXlCOzBHQUF6Qix5QkFBeUI7MkZBQXpCLHlCQUF5QjtrQkFIckMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUscUJBQXFCO2lCQUNsQzs4SUFVRyxhQUFhO3NCQURaLEtBQUs7dUJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIENvbXBvbmVudFJlZiwgRGlyZWN0aXZlLCBJbnB1dCwgVmlld0NvbnRhaW5lclJlZiwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29tcG9uZW50RGVzY3JpcHRvcn0gZnJvbSAnLi9jb21wb25lbnQtZGVzY3JpcHRvci5tb2RlbCc7XG5cbi8qKlxuKiBEeW5hbWljYWxseSBsb2FkIHRoZSBjb21wb25lbnQgZGVzY3JpYmUgd2l0aCB0aGUgQGlucHV0IGR5bmFtaWMtY29tcG9uZW50XG4qL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZHluYW1pYy1jb21wb25lbnRdJyxcbn0pXG5leHBvcnQgY2xhc3MgRHluYW1pY0NvbXBvbmVudERpcmVjdGl2ZSB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgcHJpdmF0ZSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlclxuICAgICkge31cblxuICAgIHB1YmxpYyBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxhbnk+O1xuXG4gICAgQElucHV0KCdkeW5hbWljLWNvbXBvbmVudCcpXG4gICAgY29tcG9uZW50RGVzYzogQ29tcG9uZW50RGVzY3JpcHRvcjtcblxuICAgIGxvYWQoZGF0YT86IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc0xvYWRlZCgpKSB7IHJldHVybjsgfVxuICAgICAgICBjb25zdCBjb21wb25lbnRGYWN0b3J5ID0gdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkodGhpcy5jb21wb25lbnREZXNjLnR5cGUpO1xuICAgICAgICB0aGlzLnZpZXdDb250YWluZXJSZWYuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSB0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudEZhY3RvcnkpO1xuXG4gICAgICAgIGlmIChkYXRhICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnREZXNjLmFzc2lnbkRhdGEoZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCBhdHRyaWJ1dGUgaW4gdGhpcy5jb21wb25lbnREZXNjLmRhdGEpIHtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlW2F0dHJpYnV0ZV0gPSB0aGlzLmNvbXBvbmVudERlc2MuZGF0YVthdHRyaWJ1dGVdO1xuICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZSA9PSAnaGlkZUV2ZW50Jykge1xuICAgICAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmhpZGVFdmVudC5zdWJzY3JpYmUoZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNMb2FkZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZiA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZSAhPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmhpZGVFdmVudCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmhpZGVFdmVudC51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgICAgIC8vIEZJWE1FOiB0aGlzLmNvbXBvbmVudFJlZi5kZXN0cm95KCk7ID0+IFRoaXMgb25lIHVzdWFsbHkgc2hvdWxkIHdvcmssIGJldHRlciB0byB1c2UgYnV0IGRvIG5vdGhpbmcuLi5cbiAgICAgICAgZGVsZXRlIHRoaXMuY29tcG9uZW50UmVmO1xuICAgICAgICB0aGlzLnZpZXdDb250YWluZXJSZWYuY2xlYXIoKTtcbiAgICB9XG59XG5cblxuXG4iXX0=
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { Component, Directive, Input, NgModule, Injector } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../services/dynamicModuleImports.service";
|
|
5
|
+
export class DynamicTemplateDirective {
|
|
6
|
+
constructor(elementRef, viewContainer, compiler, dynamicModuleImports) {
|
|
7
|
+
this.elementRef = elementRef;
|
|
8
|
+
this.viewContainer = viewContainer;
|
|
9
|
+
this.compiler = compiler;
|
|
10
|
+
this.dynamicModuleImports = dynamicModuleImports;
|
|
11
|
+
this._html = '';
|
|
12
|
+
this._selector = 'dynamic-view';
|
|
13
|
+
}
|
|
14
|
+
set templateContents(html) {
|
|
15
|
+
if (html) {
|
|
16
|
+
this._html = html;
|
|
17
|
+
const cmpType = this._createDynamicComponent();
|
|
18
|
+
const moduleType = this._createDynamicModule(cmpType);
|
|
19
|
+
const injector = Injector.create({
|
|
20
|
+
providers: [],
|
|
21
|
+
parent: this.viewContainer.parentInjector,
|
|
22
|
+
});
|
|
23
|
+
this.compiler.compileModuleAndAllComponentsAsync(moduleType)
|
|
24
|
+
.then(factory => {
|
|
25
|
+
let cmpFactory;
|
|
26
|
+
for (let i = factory.componentFactories.length - 1; i >= 0; i--) {
|
|
27
|
+
if (factory.componentFactories[i].selector === this._selector) {
|
|
28
|
+
cmpFactory = factory.componentFactories[i];
|
|
29
|
+
break;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return cmpFactory;
|
|
33
|
+
})
|
|
34
|
+
.then(cmpFactory => {
|
|
35
|
+
if (cmpFactory && this.viewContainer) {
|
|
36
|
+
this.viewContainer.clear();
|
|
37
|
+
this.viewContainer.createComponent(cmpFactory, 0, injector);
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
this._html = '';
|
|
43
|
+
this.viewContainer.clear();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
_createDynamicComponent() {
|
|
47
|
+
const metadata = {
|
|
48
|
+
selector: this._selector,
|
|
49
|
+
template: this._html,
|
|
50
|
+
inputs: ['template']
|
|
51
|
+
};
|
|
52
|
+
class _cmp_ {
|
|
53
|
+
}
|
|
54
|
+
_cmp_.prototype = this.context;
|
|
55
|
+
return Component(metadata)(_cmp_);
|
|
56
|
+
}
|
|
57
|
+
_createDynamicModule(componentType) {
|
|
58
|
+
class _mod_ {
|
|
59
|
+
}
|
|
60
|
+
return NgModule({
|
|
61
|
+
imports: [
|
|
62
|
+
CommonModule,
|
|
63
|
+
...this.dynamicModuleImports.imports
|
|
64
|
+
],
|
|
65
|
+
declarations: [componentType],
|
|
66
|
+
providers: []
|
|
67
|
+
})(_mod_);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
DynamicTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: DynamicTemplateDirective, deps: [{ token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: i0.Compiler }, { token: i1.DynamicModuleImportsService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
71
|
+
DynamicTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.1", type: DynamicTemplateDirective, selector: "dynamic-template", inputs: { templateContents: ["template", "templateContents"], context: "context" }, ngImport: i0 });
|
|
72
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: DynamicTemplateDirective, decorators: [{
|
|
73
|
+
type: Directive,
|
|
74
|
+
args: [{
|
|
75
|
+
selector: 'dynamic-template'
|
|
76
|
+
}]
|
|
77
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: i0.Compiler }, { type: i1.DynamicModuleImportsService }]; }, propDecorators: { templateContents: [{
|
|
78
|
+
type: Input,
|
|
79
|
+
args: ['template']
|
|
80
|
+
}], context: [{
|
|
81
|
+
type: Input
|
|
82
|
+
}] } });
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pY3RlbXBsYXRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1vZGUtdWkvc3JjL2xpYi9kaXJlY3RpdmVzL2R5bmFtaWN0ZW1wbGF0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFXLFNBQVMsRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQXlCLE1BQU0sZUFBZSxDQUFDO0FBRTVILE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBTTdDLE1BQU0sT0FBTyx3QkFBd0I7SUFFakMsWUFDWSxVQUFzQixFQUN0QixhQUErQixFQUMvQixRQUFrQixFQUNsQixvQkFBaUQ7UUFIakQsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFDL0IsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQTZCO1FBcUNyRCxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsY0FBUyxHQUFHLGNBQWMsQ0FBQztJQXJDaEMsQ0FBQztJQUVKLElBQ0ksZ0JBQWdCLENBQUMsSUFBWTtRQUM3QixJQUFJLElBQUksRUFBRTtZQUNOLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ2xCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1lBQy9DLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN0RCxNQUFNLFFBQVEsR0FBYSxRQUFRLENBQUMsTUFBTSxDQUFDO2dCQUN2QyxTQUFTLEVBQUUsRUFBRTtnQkFDYixNQUFNLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjO2FBQzVDLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxRQUFRLENBQUMsa0NBQWtDLENBQU0sVUFBVSxDQUFDO2lCQUM1RCxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ1osSUFBSSxVQUFlLENBQUM7Z0JBQ3BCLEtBQUssSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtvQkFDN0QsSUFBSSxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxTQUFTLEVBQUU7d0JBQzNELFVBQVUsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQzNDLE1BQU07cUJBQ1Q7aUJBQ0o7Z0JBQ0QsT0FBTyxVQUFVLENBQUM7WUFDdEIsQ0FBQyxDQUFDO2lCQUNELElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDZixJQUFJLFVBQVUsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO29CQUNsQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUMzQixJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2lCQUMvRDtZQUNMLENBQUMsQ0FBQyxDQUFDO1NBQ1Y7YUFBTTtZQUNILElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDOUI7SUFDTCxDQUFDO0lBT08sdUJBQXVCO1FBQzNCLE1BQU0sUUFBUSxHQUFHO1lBQ2IsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3hCLFFBQVEsRUFBRSxJQUFJLENBQUMsS0FBSztZQUNwQixNQUFNLEVBQUUsQ0FBQyxVQUFVLENBQUM7U0FDdkIsQ0FBQztRQUNGLE1BQU0sS0FBSztTQUFHO1FBQ2QsS0FBSyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQy9CLE9BQU8sU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxhQUF3QjtRQUNqRCxNQUFNLEtBQUs7U0FBRztRQUNkLE9BQU8sUUFBUSxDQUFDO1lBQ1osT0FBTyxFQUFFO2dCQUNMLFlBQVk7Z0JBQ1osR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTzthQUFFO1lBQzFDLFlBQVksRUFBRSxDQUFDLGFBQWEsQ0FBQztZQUM3QixTQUFTLEVBQUUsRUFBRTtTQUNoQixDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDZCxDQUFDOztxSEFwRVEsd0JBQXdCO3lHQUF4Qix3QkFBd0I7MkZBQXhCLHdCQUF3QjtrQkFIcEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsa0JBQWtCO2lCQUMvQjtpTUFXTyxnQkFBZ0I7c0JBRG5CLEtBQUs7dUJBQUMsVUFBVTtnQkFxQ0EsT0FBTztzQkFBdkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcGlsZXIsIENvbXBvbmVudCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgTmdNb2R1bGUsIEluamVjdG9yLCBUeXBlLCBWaWV3Q29udGFpbmVyUmVmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0R5bmFtaWNNb2R1bGVJbXBvcnRzU2VydmljZX0gZnJvbSAnLi4vc2VydmljZXMvZHluYW1pY01vZHVsZUltcG9ydHMuc2VydmljZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnZHluYW1pYy10ZW1wbGF0ZSdcbn0pXG5leHBvcnQgY2xhc3MgRHluYW1pY1RlbXBsYXRlRGlyZWN0aXZlIHtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgcHJpdmF0ZSBjb21waWxlcjogQ29tcGlsZXIsXG4gICAgICAgIHByaXZhdGUgZHluYW1pY01vZHVsZUltcG9ydHM6IER5bmFtaWNNb2R1bGVJbXBvcnRzU2VydmljZVxuICAgICkge31cblxuICAgIEBJbnB1dCgndGVtcGxhdGUnKVxuICAgIHNldCB0ZW1wbGF0ZUNvbnRlbnRzKGh0bWw6IHN0cmluZykge1xuICAgICAgICBpZiAoaHRtbCkge1xuICAgICAgICAgICAgdGhpcy5faHRtbCA9IGh0bWw7XG4gICAgICAgICAgICBjb25zdCBjbXBUeXBlID0gdGhpcy5fY3JlYXRlRHluYW1pY0NvbXBvbmVudCgpO1xuICAgICAgICAgICAgY29uc3QgbW9kdWxlVHlwZSA9IHRoaXMuX2NyZWF0ZUR5bmFtaWNNb2R1bGUoY21wVHlwZSk7XG4gICAgICAgICAgICBjb25zdCBpbmplY3RvcjogSW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgICAgICAgICAgIHByb3ZpZGVyczogW10sXG4gICAgICAgICAgICAgICAgcGFyZW50OiB0aGlzLnZpZXdDb250YWluZXIucGFyZW50SW5qZWN0b3IsXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5jb21waWxlci5jb21waWxlTW9kdWxlQW5kQWxsQ29tcG9uZW50c0FzeW5jPGFueT4obW9kdWxlVHlwZSlcbiAgICAgICAgICAgICAgICAudGhlbihmYWN0b3J5ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNtcEZhY3Rvcnk6IGFueTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IGZhY3RvcnkuY29tcG9uZW50RmFjdG9yaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmFjdG9yeS5jb21wb25lbnRGYWN0b3JpZXNbaV0uc2VsZWN0b3IgPT09IHRoaXMuX3NlbGVjdG9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY21wRmFjdG9yeSA9IGZhY3RvcnkuY29tcG9uZW50RmFjdG9yaWVzW2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjbXBGYWN0b3J5O1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnRoZW4oY21wRmFjdG9yeSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjbXBGYWN0b3J5ICYmIHRoaXMudmlld0NvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdDb250YWluZXIuY3JlYXRlQ29tcG9uZW50KGNtcEZhY3RvcnksIDAsIGluamVjdG9yKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5faHRtbCA9ICcnO1xuICAgICAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyLmNsZWFyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9odG1sID0gJyc7XG4gICAgcHJpdmF0ZSBfc2VsZWN0b3IgPSAnZHluYW1pYy12aWV3JztcblxuICAgIEBJbnB1dCgpIHByaXZhdGUgY29udGV4dDogT2JqZWN0O1xuXG4gICAgcHJpdmF0ZSBfY3JlYXRlRHluYW1pY0NvbXBvbmVudCgpOiBUeXBlPGFueT4ge1xuICAgICAgICBjb25zdCBtZXRhZGF0YSA9IHtcbiAgICAgICAgICAgIHNlbGVjdG9yOiB0aGlzLl9zZWxlY3RvcixcbiAgICAgICAgICAgIHRlbXBsYXRlOiB0aGlzLl9odG1sLFxuICAgICAgICAgICAgaW5wdXRzOiBbJ3RlbXBsYXRlJ11cbiAgICAgICAgfTtcbiAgICAgICAgY2xhc3MgX2NtcF8ge31cbiAgICAgICAgX2NtcF8ucHJvdG90eXBlID0gdGhpcy5jb250ZXh0O1xuICAgICAgICByZXR1cm4gQ29tcG9uZW50KG1ldGFkYXRhKShfY21wXyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY3JlYXRlRHluYW1pY01vZHVsZShjb21wb25lbnRUeXBlOiBUeXBlPGFueT4pIHtcbiAgICAgICAgY2xhc3MgX21vZF8ge31cbiAgICAgICAgcmV0dXJuIE5nTW9kdWxlKHtcbiAgICAgICAgICAgIGltcG9ydHM6IFtcbiAgICAgICAgICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5keW5hbWljTW9kdWxlSW1wb3J0cy5pbXBvcnRzIF0sXG4gICAgICAgICAgICBkZWNsYXJhdGlvbnM6IFtjb21wb25lbnRUeXBlXSxcbiAgICAgICAgICAgIHByb3ZpZGVyczogW11cbiAgICAgICAgfSkoX21vZF8pO1xuICAgIH1cblxufVxuIl19
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Directive } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
*
|
|
5
|
+
* see https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL
|
|
6
|
+
*/
|
|
7
|
+
export class ObjectURLDirective {
|
|
8
|
+
constructor(elementRef) {
|
|
9
|
+
this.elementRef = elementRef;
|
|
10
|
+
}
|
|
11
|
+
// TODO provide more specific method like createJSON, createCSV, createPDF
|
|
12
|
+
// to free directive consumer from using Blog API
|
|
13
|
+
create(blob, filename) {
|
|
14
|
+
if (this.objectURL !== null) {
|
|
15
|
+
window.URL.revokeObjectURL(this.objectURL);
|
|
16
|
+
}
|
|
17
|
+
this.objectURL = window.URL.createObjectURL(blob);
|
|
18
|
+
this.elementRef.nativeElement.href = this.objectURL;
|
|
19
|
+
this.elementRef.nativeElement.download = filename;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
ObjectURLDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: ObjectURLDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
23
|
+
ObjectURLDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.1", type: ObjectURLDirective, selector: "[object-url]", ngImport: i0 });
|
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: ObjectURLDirective, decorators: [{
|
|
25
|
+
type: Directive,
|
|
26
|
+
args: [{ selector: '[object-url]' }]
|
|
27
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LXVybC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtb2RlLXVpL3NyYy9saWIvZGlyZWN0aXZlcy9vYmplY3QtdXJsLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFhLE1BQU0sZUFBZSxDQUFDOztBQUVwRDs7O0VBR0U7QUFFRixNQUFNLE9BQU8sa0JBQWtCO0lBRTNCLFlBQ1ksVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtJQUMvQixDQUFDO0lBSUosMEVBQTBFO0lBQzFFLGlEQUFpRDtJQUNqRCxNQUFNLENBQUMsSUFBVSxFQUFFLFFBQWdCO1FBQy9CLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxJQUFJLEVBQUU7WUFDekIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQzlDO1FBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUNwRCxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQ3RELENBQUM7OytHQWpCUSxrQkFBa0I7bUdBQWxCLGtCQUFrQjsyRkFBbEIsa0JBQWtCO2tCQUQ5QixTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBFbGVtZW50UmVmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4qXG4qIHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvVVJML2NyZWF0ZU9iamVjdFVSTFxuKi9cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1tvYmplY3QtdXJsXScgfSlcbmV4cG9ydCBjbGFzcyBPYmplY3RVUkxEaXJlY3RpdmUge1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICApIHt9XG5cbiAgICBwcml2YXRlIG9iamVjdFVSTDtcblxuICAgIC8vIFRPRE8gcHJvdmlkZSBtb3JlIHNwZWNpZmljIG1ldGhvZCBsaWtlIGNyZWF0ZUpTT04sIGNyZWF0ZUNTViwgY3JlYXRlUERGXG4gICAgLy8gdG8gZnJlZSBkaXJlY3RpdmUgY29uc3VtZXIgZnJvbSB1c2luZyBCbG9nIEFQSVxuICAgIGNyZWF0ZShibG9iOiBCbG9iLCBmaWxlbmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm9iamVjdFVSTCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwodGhpcy5vYmplY3RVUkwpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub2JqZWN0VVJMID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmhyZWYgPSB0aGlzLm9iamVjdFVSTDtcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZG93bmxvYWQgPSBmaWxlbmFtZTtcbiAgICB9XG5cbn1cbiJdfQ==
|