@solidev/data 0.0.1-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -0
- package/esm2020/lib/auth/auth-interceptor.service.mjs +90 -0
- package/esm2020/lib/auth/auth.service.mjs +125 -0
- package/esm2020/lib/auth/jwt.mjs +21 -0
- package/esm2020/lib/data/data-backend.mjs +106 -0
- package/esm2020/lib/data/data-collection.mjs +109 -0
- package/esm2020/lib/data/data-collection.mock.mjs +39 -0
- package/esm2020/lib/data/data-model.mjs +287 -0
- package/esm2020/lib/data/data-parameters.mjs +34 -0
- package/esm2020/lib/data/data-query.mjs +147 -0
- package/esm2020/lib/data/data-query.mock.mjs +46 -0
- package/esm2020/lib/data/fields/base.mjs +142 -0
- package/esm2020/lib/data/fields/boolean.mjs +38 -0
- package/esm2020/lib/data/fields/datetime.mjs +124 -0
- package/esm2020/lib/data/fields/index.mjs +7 -0
- package/esm2020/lib/data/fields/numbers.mjs +38 -0
- package/esm2020/lib/data/fields/primaryfield.mjs +9 -0
- package/esm2020/lib/data/fields/relations.mjs +53 -0
- package/esm2020/lib/data/fields/stringfields.mjs +71 -0
- package/esm2020/lib/dispedit/choice.pipe.mjs +39 -0
- package/esm2020/lib/dispedit/dispedit/dispedit.component.mjs +475 -0
- package/esm2020/lib/dispedit/dispedit/dispedit.constants.mjs +2 -0
- package/esm2020/lib/dispedit/factor.pipe.mjs +48 -0
- package/esm2020/lib/dispedit/factorc.pipe.mjs +50 -0
- package/esm2020/lib/dispedit/fkselect/fkselect.component.mjs +142 -0
- package/esm2020/lib/dispedit/flags/flags.component.mjs +140 -0
- package/esm2020/lib/dispedit/m2mselect/m2mselect.component.mjs +318 -0
- package/esm2020/lib/dispedit/richedit/richedit.component.mjs +94 -0
- package/esm2020/lib/dispedit/sdelete/sdelete.component.mjs +46 -0
- package/esm2020/lib/messages/message-zone/message-zone.component.mjs +57 -0
- package/esm2020/lib/messages/message.service.mjs +151 -0
- package/esm2020/lib/modellist/model-list-fields/model-list-field-header/model-list-field-header.component.mjs +34 -0
- package/esm2020/lib/modellist/model-list-fields/model-list-fields-selector/model-list-fields-selector.component.mjs +63 -0
- package/esm2020/lib/modellist/model-list-fields/model-list-fields.mjs +225 -0
- package/esm2020/lib/modellist/model-list-filters/filters/filtertypes.mjs +3 -0
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-autocomplete-filter/model-list-autocomplete-filter.component.mjs +108 -0
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-autocomplete-filter/model-list-autocomplete-filter.mjs +28 -0
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-autocomplete-multi-filter/model-list-autocomplete-multi-filter.component.mjs +24 -0
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-autocomplete-multi-filter/model-list-autocomplete-multi-filter.mjs +9 -0
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-date-filter/model-list-date-filter.component.mjs +40 -0
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-date-filter/model-list-date-filter.mjs +14 -0
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-datetime-filter/model-list-datetime-filter.component.mjs +40 -0
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-datetime-filter/model-list-datetime-filter.mjs +14 -0
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-datetimerange-filter/model-list-datetime-range-filter.component.mjs +21 -0
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-datetimerange-filter/model-list-datetimerange-filter.mjs +14 -0
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-flags-filter/model-list-flags-filter.component.mjs +21 -0
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-flags-filter/model-list-flags-filter.mjs +14 -0
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/adapters/ban.mjs +24 -0
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/model-list-geodistance-filter.component.mjs +63 -0
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/model-list-geodistance-filter.mjs +16 -0
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-number-filter/model-list-number-filter.component.mjs +46 -0
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-number-filter/model-list-number-filter.mjs +49 -0
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.component.mjs +57 -0
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.mjs +35 -0
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.component.mjs +49 -0
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.mjs +15 -0
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-text-filter/model-list-text-filter.component.mjs +40 -0
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-text-filter/model-list-text-filter.mjs +14 -0
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.component.mjs +21 -0
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.mjs +14 -0
- package/esm2020/lib/modellist/model-list-filters/model-list-filter.mjs +145 -0
- package/esm2020/lib/modellist/model-list-filters/model-list-filters/model-list-filters.component.mjs +50 -0
- package/esm2020/lib/modellist/model-list-filters/model-list-filters-select/model-list-filters-select.component.mjs +30 -0
- package/esm2020/lib/modellist/model-list-filters/model-list-filters.mjs +80 -0
- package/esm2020/lib/modellist/model-list-paginator/model-list-paginator/model-list-paginator.component.mjs +70 -0
- package/esm2020/lib/modellist/model-list-paginator/model-list-paginator.mjs +47 -0
- package/esm2020/lib/modellist/model-list-sorter/model-list-sorter/model-list-sorter.component.mjs +49 -0
- package/esm2020/lib/modellist/model-list-sorter/model-list-sorter.mjs +116 -0
- package/esm2020/lib/modellist/model-list.service.mjs +135 -0
- package/esm2020/lib/routing/breadcrumb/breadcrumb.component.mjs +142 -0
- package/esm2020/lib/routing/routing.mjs +57 -0
- package/esm2020/lib/uploader/index.mjs +6 -0
- package/esm2020/lib/uploader/interfaces.mjs +8 -0
- package/esm2020/lib/uploader/ng-file-drop.directive.mjs +81 -0
- package/esm2020/lib/uploader/ng-file-select.directive.mjs +51 -0
- package/esm2020/lib/uploader/ngx-uploader.class.mjs +308 -0
- package/esm2020/lib/uploader/ngx-uploader.module.mjs +17 -0
- package/esm2020/lib/utils/slugify.mjs +16 -0
- package/esm2020/lib/utils/tab-memory.service.mjs +71 -0
- package/esm2020/public-api.mjs +51 -0
- package/esm2020/solidev-data.mjs +5 -0
- package/fesm2015/solidev-data.mjs +5411 -0
- package/fesm2015/solidev-data.mjs.map +1 -0
- package/fesm2020/solidev-data.mjs +5358 -0
- package/fesm2020/solidev-data.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/auth/auth-interceptor.service.d.ts +17 -0
- package/lib/auth/auth.service.d.ts +43 -0
- package/lib/auth/jwt.d.ts +22 -0
- package/lib/data/data-backend.d.ts +47 -0
- package/lib/data/data-collection.d.ts +87 -0
- package/lib/data/data-collection.mock.d.ts +19 -0
- package/lib/data/data-model.d.ts +93 -0
- package/lib/data/data-parameters.d.ts +26 -0
- package/lib/data/data-query.d.ts +101 -0
- package/lib/data/data-query.mock.d.ts +25 -0
- package/lib/data/fields/base.d.ts +116 -0
- package/lib/data/fields/boolean.d.ts +9 -0
- package/lib/data/fields/datetime.d.ts +39 -0
- package/lib/data/fields/index.d.ts +6 -0
- package/lib/data/fields/numbers.d.ts +35 -0
- package/lib/data/fields/primaryfield.d.ts +8 -0
- package/lib/data/fields/relations.d.ts +45 -0
- package/lib/data/fields/stringfields.d.ts +50 -0
- package/lib/dispedit/choice.pipe.d.ts +8 -0
- package/lib/dispedit/dispedit/dispedit.component.d.ts +182 -0
- package/lib/dispedit/dispedit/dispedit.constants.d.ts +6 -0
- package/lib/dispedit/factor.pipe.d.ts +12 -0
- package/lib/dispedit/factorc.pipe.d.ts +11 -0
- package/lib/dispedit/fkselect/fkselect.component.d.ts +43 -0
- package/lib/dispedit/flags/flags.component.d.ts +40 -0
- package/lib/dispedit/m2mselect/m2mselect.component.d.ts +120 -0
- package/lib/dispedit/richedit/richedit.component.d.ts +31 -0
- package/lib/dispedit/sdelete/sdelete.component.d.ts +27 -0
- package/lib/messages/message-zone/message-zone.component.d.ts +14 -0
- package/lib/messages/message.service.d.ts +59 -0
- package/lib/modellist/model-list-fields/model-list-field-header/model-list-field-header.component.d.ts +15 -0
- package/lib/modellist/model-list-fields/model-list-fields-selector/model-list-fields-selector.component.d.ts +19 -0
- package/lib/modellist/model-list-fields/model-list-fields.d.ts +67 -0
- package/lib/modellist/model-list-filters/filters/filtertypes.d.ts +1 -0
- package/lib/modellist/model-list-filters/filters/model-list-autocomplete-filter/model-list-autocomplete-filter.component.d.ts +30 -0
- package/lib/modellist/model-list-filters/filters/model-list-autocomplete-filter/model-list-autocomplete-filter.d.ts +22 -0
- package/lib/modellist/model-list-filters/filters/model-list-autocomplete-multi-filter/model-list-autocomplete-multi-filter.component.d.ts +10 -0
- package/lib/modellist/model-list-filters/filters/model-list-autocomplete-multi-filter/model-list-autocomplete-multi-filter.d.ts +8 -0
- package/lib/modellist/model-list-filters/filters/model-list-date-filter/model-list-date-filter.component.d.ts +15 -0
- package/lib/modellist/model-list-filters/filters/model-list-date-filter/model-list-date-filter.d.ts +4 -0
- package/lib/modellist/model-list-filters/filters/model-list-datetime-filter/model-list-datetime-filter.component.d.ts +15 -0
- package/lib/modellist/model-list-filters/filters/model-list-datetime-filter/model-list-datetime-filter.d.ts +4 -0
- package/lib/modellist/model-list-filters/filters/model-list-datetimerange-filter/model-list-datetime-range-filter.component.d.ts +11 -0
- package/lib/modellist/model-list-filters/filters/model-list-datetimerange-filter/model-list-datetimerange-filter.d.ts +4 -0
- package/lib/modellist/model-list-filters/filters/model-list-flags-filter/model-list-flags-filter.component.d.ts +11 -0
- package/lib/modellist/model-list-filters/filters/model-list-flags-filter/model-list-flags-filter.d.ts +4 -0
- package/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/adapters/ban.d.ts +35 -0
- package/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/model-list-geodistance-filter.component.d.ts +25 -0
- package/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/model-list-geodistance-filter.d.ts +18 -0
- package/lib/modellist/model-list-filters/filters/model-list-number-filter/model-list-number-filter.component.d.ts +17 -0
- package/lib/modellist/model-list-filters/filters/model-list-number-filter/model-list-number-filter.d.ts +19 -0
- package/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.component.d.ts +17 -0
- package/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.d.ts +16 -0
- package/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.component.d.ts +17 -0
- package/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.d.ts +6 -0
- package/lib/modellist/model-list-filters/filters/model-list-text-filter/model-list-text-filter.component.d.ts +16 -0
- package/lib/modellist/model-list-filters/filters/model-list-text-filter/model-list-text-filter.d.ts +4 -0
- package/lib/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.component.d.ts +11 -0
- package/lib/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.d.ts +4 -0
- package/lib/modellist/model-list-filters/model-list-filter.d.ts +52 -0
- package/lib/modellist/model-list-filters/model-list-filters/model-list-filters.component.d.ts +9 -0
- package/lib/modellist/model-list-filters/model-list-filters-select/model-list-filters-select.component.d.ts +13 -0
- package/lib/modellist/model-list-filters/model-list-filters.d.ts +15 -0
- package/lib/modellist/model-list-paginator/model-list-paginator/model-list-paginator.component.d.ts +23 -0
- package/lib/modellist/model-list-paginator/model-list-paginator.d.ts +16 -0
- package/lib/modellist/model-list-sorter/model-list-sorter/model-list-sorter.component.d.ts +22 -0
- package/lib/modellist/model-list-sorter/model-list-sorter.d.ts +61 -0
- package/lib/modellist/model-list.service.d.ts +83 -0
- package/lib/routing/breadcrumb/breadcrumb.component.d.ts +42 -0
- package/lib/routing/routing.d.ts +64 -0
- package/lib/uploader/index.d.ts +5 -0
- package/lib/uploader/interfaces.d.ts +67 -0
- package/lib/uploader/ng-file-drop.directive.d.ts +22 -0
- package/lib/uploader/ng-file-select.directive.d.ts +19 -0
- package/lib/uploader/ngx-uploader.class.d.ts +35 -0
- package/lib/uploader/ngx-uploader.module.d.ts +8 -0
- package/lib/utils/slugify.d.ts +1 -0
- package/lib/utils/tab-memory.service.d.ts +29 -0
- package/package.json +35 -0
- package/public-api.d.ts +47 -0
- package/src/lib/data/README.md +35 -0
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output, } from '@angular/core';
|
|
2
|
+
import { NG_VALUE_ACCESSOR, ReactiveFormsModule, UntypedFormControl, } from '@angular/forms';
|
|
3
|
+
import { debounceTime, distinctUntilChanged, firstValueFrom, Subject, takeUntil, } from 'rxjs';
|
|
4
|
+
import { switchMap } from 'rxjs/operators';
|
|
5
|
+
import { CommonModule } from '@angular/common';
|
|
6
|
+
import { NgbTypeaheadModule } from '@ng-bootstrap/ng-bootstrap';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@angular/common";
|
|
9
|
+
import * as i2 from "@angular/forms";
|
|
10
|
+
import * as i3 from "@ng-bootstrap/ng-bootstrap";
|
|
11
|
+
export class M2mselectComponent {
|
|
12
|
+
constructor() {
|
|
13
|
+
this.edit = false;
|
|
14
|
+
this.pks = [];
|
|
15
|
+
this.disabled = false;
|
|
16
|
+
this.filter = {};
|
|
17
|
+
this.mode = 'auto';
|
|
18
|
+
this.search = 'search';
|
|
19
|
+
// Display
|
|
20
|
+
this.label = '';
|
|
21
|
+
this.placeholder = '';
|
|
22
|
+
this.emptyLabel = '';
|
|
23
|
+
this.inputClasses = [];
|
|
24
|
+
// Outputs
|
|
25
|
+
this.added = new EventEmitter();
|
|
26
|
+
this.removed = new EventEmitter();
|
|
27
|
+
this.cancelled = new EventEmitter();
|
|
28
|
+
this.cleared = new EventEmitter();
|
|
29
|
+
this.detailsChanged = new EventEmitter();
|
|
30
|
+
this.changed = new EventEmitter();
|
|
31
|
+
this.searchFn = this._search.bind(this);
|
|
32
|
+
this.displayFn = this._display.bind(this);
|
|
33
|
+
this.touched = false;
|
|
34
|
+
this._subscription = new Subject();
|
|
35
|
+
/**
|
|
36
|
+
* Control value accessor onChange dummy callback;
|
|
37
|
+
* @param fks
|
|
38
|
+
*/
|
|
39
|
+
this.onChange = (fks) => { };
|
|
40
|
+
/**
|
|
41
|
+
* Control value accessor onTouched dummy callback;
|
|
42
|
+
*/
|
|
43
|
+
this.onTouched = () => { };
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* On Destroy clears subscriptions.
|
|
47
|
+
*/
|
|
48
|
+
ngOnDestroy() {
|
|
49
|
+
this._subscription.next();
|
|
50
|
+
this._subscription.complete();
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* OnChange register from controlValueAccessor
|
|
54
|
+
* @param onChange callback
|
|
55
|
+
*/
|
|
56
|
+
registerOnChange(onChange) {
|
|
57
|
+
this.onChange = onChange;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* OnTouched register from controlValueAccessor
|
|
61
|
+
* @param onTouched callback
|
|
62
|
+
*/
|
|
63
|
+
registerOnTouched(onTouched) {
|
|
64
|
+
this.onTouched = onTouched;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* OnInit :
|
|
68
|
+
* - ensures queryset is available
|
|
69
|
+
* - creates form control for input
|
|
70
|
+
* - creates display function
|
|
71
|
+
* - ensure values are set from any source
|
|
72
|
+
*/
|
|
73
|
+
ngOnInit() {
|
|
74
|
+
// Create queryset if not given
|
|
75
|
+
// queryset is create through model
|
|
76
|
+
if (!this.queryset && this.collection) {
|
|
77
|
+
this.queryset = this.collection.queryset();
|
|
78
|
+
}
|
|
79
|
+
else if (!this.queryset && this.model && this.model._collection) {
|
|
80
|
+
this.collection = this.model._collection;
|
|
81
|
+
this.queryset = this.collection.queryset();
|
|
82
|
+
}
|
|
83
|
+
if (!this.queryset) {
|
|
84
|
+
throw Error('queryset is mandatory for m2m select');
|
|
85
|
+
}
|
|
86
|
+
// Create form control for typeahead and subscribe for changes
|
|
87
|
+
this.fc = new UntypedFormControl('');
|
|
88
|
+
this.fc.valueChanges
|
|
89
|
+
.pipe(takeUntil(this._subscription), distinctUntilChanged())
|
|
90
|
+
.subscribe((value) => {
|
|
91
|
+
if (value) {
|
|
92
|
+
this.onAdd(value);
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
// Set display function
|
|
96
|
+
if (this.display) {
|
|
97
|
+
if (this.display && typeof this.display === 'string') {
|
|
98
|
+
this._tpl = (model) => `${model[this.display]}`;
|
|
99
|
+
}
|
|
100
|
+
else if (this.display && typeof this.display === 'function') {
|
|
101
|
+
this._tpl = this.display.bind(this);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
this._tpl = (model) => `${model['name'] ||
|
|
106
|
+
model['title'] ||
|
|
107
|
+
model['id']}`;
|
|
108
|
+
}
|
|
109
|
+
// Get values from model if not already given
|
|
110
|
+
// TODO: check if this is necessary
|
|
111
|
+
if (!this.values && this.model && this.field) {
|
|
112
|
+
this.values = this.model[this.field + '_details'];
|
|
113
|
+
}
|
|
114
|
+
if (this.values === undefined) {
|
|
115
|
+
console.error('no values available for ', this.model, this.field);
|
|
116
|
+
throw Error('no values available');
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Remove a value.
|
|
121
|
+
* Emits detailsChanged, changed and removed signals.
|
|
122
|
+
* @param i instance to be removed
|
|
123
|
+
*/
|
|
124
|
+
onRemove(i) {
|
|
125
|
+
if (!this.disabled) {
|
|
126
|
+
this.markAsTouched();
|
|
127
|
+
const ps = this.pks.indexOf(i.id);
|
|
128
|
+
this.pks.splice(ps, 1);
|
|
129
|
+
this.values.splice(ps, 1);
|
|
130
|
+
this.detailsChanged.emit(this.values);
|
|
131
|
+
this.changed.emit(this.pks);
|
|
132
|
+
this.removed.emit(i);
|
|
133
|
+
this.onChange(this.pks);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Add a value.
|
|
138
|
+
* Emits detailsChanged, changed and added signals.
|
|
139
|
+
* @param i instance to be added.
|
|
140
|
+
*/
|
|
141
|
+
onAdd(i) {
|
|
142
|
+
if (!this.disabled) {
|
|
143
|
+
this.markAsTouched();
|
|
144
|
+
this.pks.push(i.id);
|
|
145
|
+
this.values.push(i);
|
|
146
|
+
this.detailsChanged.emit(this.values);
|
|
147
|
+
this.changed.emit(this.pks);
|
|
148
|
+
this.added.emit(i);
|
|
149
|
+
this.onChange(this.pks);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Clear all values.
|
|
154
|
+
* Emits detailsChanged, changed and cleared signals.
|
|
155
|
+
*/
|
|
156
|
+
onClear() {
|
|
157
|
+
if (!this.disabled) {
|
|
158
|
+
this.markAsTouched();
|
|
159
|
+
this.pks = [];
|
|
160
|
+
this.values = [];
|
|
161
|
+
this.detailsChanged.emit(this.values);
|
|
162
|
+
this.changed.emit(this.pks);
|
|
163
|
+
this.cleared.emit();
|
|
164
|
+
this.onChange(this.pks);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Write value from controlValueAccessor.
|
|
169
|
+
* @param pks
|
|
170
|
+
*/
|
|
171
|
+
async writeValue(pks) {
|
|
172
|
+
this.pks = pks;
|
|
173
|
+
await this._getDisplayValues(pks);
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Mark as touched.
|
|
177
|
+
*/
|
|
178
|
+
markAsTouched() {
|
|
179
|
+
if (!this.touched) {
|
|
180
|
+
this.onTouched();
|
|
181
|
+
this.touched = true;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Mark as disabled.
|
|
186
|
+
* @param disabled
|
|
187
|
+
*/
|
|
188
|
+
setDisabledState(disabled) {
|
|
189
|
+
this.disabled = disabled;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Retrieve display values for current set of pks.
|
|
193
|
+
* Eventually fetches items from collection.
|
|
194
|
+
* Emits detailsChanged signal.
|
|
195
|
+
* @param pks list of current pks.
|
|
196
|
+
* @private
|
|
197
|
+
*/
|
|
198
|
+
async _getDisplayValues(pks = []) {
|
|
199
|
+
const values = [];
|
|
200
|
+
for (const k of pks) {
|
|
201
|
+
let found = false;
|
|
202
|
+
for (let v of this.values) {
|
|
203
|
+
if (v.id == k) {
|
|
204
|
+
values.push(v);
|
|
205
|
+
found = true;
|
|
206
|
+
break;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
if (!found) {
|
|
210
|
+
if (this.collection) {
|
|
211
|
+
values.push(await firstValueFrom(this.collection.fetch(k)));
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
values.push({ id: k, _display: 'Unknown' });
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
this.values = values;
|
|
219
|
+
this.detailsChanged.next(this.values);
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Display function. Uses descfield or desc tpl (lodash template using model fields).
|
|
223
|
+
*/
|
|
224
|
+
_display(x) {
|
|
225
|
+
if (x) {
|
|
226
|
+
if (x._display) {
|
|
227
|
+
if (x._display instanceof Function) {
|
|
228
|
+
return x._display();
|
|
229
|
+
}
|
|
230
|
+
else {
|
|
231
|
+
return x._display;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
if (this._tpl) {
|
|
235
|
+
return this._tpl(x);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
return '';
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Search function.
|
|
242
|
+
* @param text$
|
|
243
|
+
* @private
|
|
244
|
+
*/
|
|
245
|
+
_search(text$) {
|
|
246
|
+
return text$.pipe(takeUntil(this._subscription), debounceTime(750), distinctUntilChanged(), switchMap((term) => {
|
|
247
|
+
const f = {};
|
|
248
|
+
for (const k of Object.keys(this.filter)) {
|
|
249
|
+
if (this.filter[k] !== null || this.filter[k] !== undefined) {
|
|
250
|
+
f[k] = this.filter[k];
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
f[this.search] = term;
|
|
254
|
+
const qs = this.queryset;
|
|
255
|
+
qs.filter(f, true);
|
|
256
|
+
return qs.get();
|
|
257
|
+
}));
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
M2mselectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: M2mselectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
261
|
+
M2mselectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.9", type: M2mselectComponent, isStandalone: true, selector: "data-m2mselect", inputs: { model: "model", field: "field", edit: "edit", values: "values", queryset: "queryset", collection: "collection", filter: "filter", mode: "mode", display: "display", search: "search", label: "label", placeholder: "placeholder", emptyLabel: "emptyLabel", inputClasses: "inputClasses" }, outputs: { added: "added", removed: "removed", cancelled: "cancelled", cleared: "cleared", detailsChanged: "detailsChanged", changed: "changed" }, providers: [
|
|
262
|
+
{
|
|
263
|
+
provide: NG_VALUE_ACCESSOR,
|
|
264
|
+
multi: true,
|
|
265
|
+
useExisting: M2mselectComponent,
|
|
266
|
+
},
|
|
267
|
+
], ngImport: i0, template: "\n<div class=\"form-group\">\n <label *ngIf=\"label\">{{label}}</label>\n <div class=\"input-group\">\n <input class=\"form-control\" [formControl]=\"fc\" [placeholder]=\"placeholder\" [ngbTypeahead]=\"searchFn\" [editable]=\"false\" [focusFirst]=\"true\" [inputFormatter]=\"displayFn\" [resultFormatter]=\"displayFn\" (keyup.escape)=\"cancelled.emit()\">\n <div class=\"input-group-text\"><i class=\"bi bi-trash float-end pointer\" (click)=\"cleared.emit()\"></i></div>\n </div>\n <div *ngFor=\"let i of values\"><i class=\"bi bi-trash ms-2 float-end\" (click)=\"onRemove(i)\"></i>{{displayFn(i)}}</div>\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: NgbTypeaheadModule }, { kind: "directive", type: i3.NgbTypeahead, selector: "input[ngbTypeahead]", inputs: ["autocomplete", "container", "editable", "focusFirst", "inputFormatter", "ngbTypeahead", "resultFormatter", "resultTemplate", "showHint", "placement", "popperOptions", "popupClass"], outputs: ["selectItem"], exportAs: ["ngbTypeahead"] }] });
|
|
268
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: M2mselectComponent, decorators: [{
|
|
269
|
+
type: Component,
|
|
270
|
+
args: [{ selector: 'data-m2mselect', providers: [
|
|
271
|
+
{
|
|
272
|
+
provide: NG_VALUE_ACCESSOR,
|
|
273
|
+
multi: true,
|
|
274
|
+
useExisting: M2mselectComponent,
|
|
275
|
+
},
|
|
276
|
+
], standalone: true, imports: [CommonModule, ReactiveFormsModule, NgbTypeaheadModule], template: "\n<div class=\"form-group\">\n <label *ngIf=\"label\">{{label}}</label>\n <div class=\"input-group\">\n <input class=\"form-control\" [formControl]=\"fc\" [placeholder]=\"placeholder\" [ngbTypeahead]=\"searchFn\" [editable]=\"false\" [focusFirst]=\"true\" [inputFormatter]=\"displayFn\" [resultFormatter]=\"displayFn\" (keyup.escape)=\"cancelled.emit()\">\n <div class=\"input-group-text\"><i class=\"bi bi-trash float-end pointer\" (click)=\"cleared.emit()\"></i></div>\n </div>\n <div *ngFor=\"let i of values\"><i class=\"bi bi-trash ms-2 float-end\" (click)=\"onRemove(i)\"></i>{{displayFn(i)}}</div>\n</div>" }]
|
|
277
|
+
}], propDecorators: { model: [{
|
|
278
|
+
type: Input
|
|
279
|
+
}], field: [{
|
|
280
|
+
type: Input
|
|
281
|
+
}], edit: [{
|
|
282
|
+
type: Input
|
|
283
|
+
}], values: [{
|
|
284
|
+
type: Input
|
|
285
|
+
}], queryset: [{
|
|
286
|
+
type: Input
|
|
287
|
+
}], collection: [{
|
|
288
|
+
type: Input
|
|
289
|
+
}], filter: [{
|
|
290
|
+
type: Input
|
|
291
|
+
}], mode: [{
|
|
292
|
+
type: Input
|
|
293
|
+
}], display: [{
|
|
294
|
+
type: Input
|
|
295
|
+
}], search: [{
|
|
296
|
+
type: Input
|
|
297
|
+
}], label: [{
|
|
298
|
+
type: Input
|
|
299
|
+
}], placeholder: [{
|
|
300
|
+
type: Input
|
|
301
|
+
}], emptyLabel: [{
|
|
302
|
+
type: Input
|
|
303
|
+
}], inputClasses: [{
|
|
304
|
+
type: Input
|
|
305
|
+
}], added: [{
|
|
306
|
+
type: Output
|
|
307
|
+
}], removed: [{
|
|
308
|
+
type: Output
|
|
309
|
+
}], cancelled: [{
|
|
310
|
+
type: Output
|
|
311
|
+
}], cleared: [{
|
|
312
|
+
type: Output
|
|
313
|
+
}], detailsChanged: [{
|
|
314
|
+
type: Output
|
|
315
|
+
}], changed: [{
|
|
316
|
+
type: Output
|
|
317
|
+
}] } });
|
|
318
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibTJtc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEvc3JjL2xpYi9kaXNwZWRpdC9tMm1zZWxlY3QvbTJtc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEvc3JjL2xpYi9kaXNwZWRpdC9tMm1zZWxlY3QvbTJtc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUVMLGlCQUFpQixFQUNqQixtQkFBbUIsRUFDbkIsa0JBQWtCLEdBQ25CLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUNMLFlBQVksRUFDWixvQkFBb0IsRUFDcEIsY0FBYyxFQUVkLE9BQU8sRUFDUCxTQUFTLEdBQ1YsTUFBTSxNQUFNLENBQUM7QUFHZCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7OztBQWdCaEUsTUFBTSxPQUFPLGtCQUFrQjtJQWQvQjtRQW9Ca0IsU0FBSSxHQUFHLEtBQUssQ0FBQztRQUd0QixRQUFHLEdBQWEsRUFBRSxDQUFDO1FBQ25CLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFJUixXQUFNLEdBQWUsRUFBRSxDQUFDO1FBQ3hCLFNBQUksR0FBdUMsTUFBTSxDQUFDO1FBRWxELFdBQU0sR0FBRyxRQUFRLENBQUM7UUFDbEMsVUFBVTtRQUNNLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixlQUFVLEdBQUcsRUFBRSxDQUFD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QXBCLEtBQUs7Z0JBQ1UsSUFBSTtzQkFBbkIsS0FBSztnQkFFVSxNQUFNO3NCQUFyQixLQUFLO2dCQUlVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSztnQkFDVSxNQUFNO3NCQUFyQixLQUFLO2dCQUNVLElBQUk7c0JBQW5CLEtBQUs7Z0JBQ1UsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxNQUFNO3NCQUFyQixLQUFLO2dCQUVVLEtBQUs7c0JBQXBCLEtBQUs7Z0JBQ1UsV0FBVztzQkFBMUIsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLO2dCQUNVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBRVcsS0FBSztzQkFBckIsTUFBTTtnQkFDVSxPQUFPO3NCQUF2QixNQUFNO2dCQUNVLFNBQVM7c0JBQXpCLE1BQU07Z0JBQ1UsT0FBTztzQkFBdkIsTUFBTTtnQkFDVSxjQUFjO3NCQUE5QixNQUFNO2dCQUNVLE9BQU87c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmlsdGVyRGF0YSwgUXVlcnlzZXQgfSBmcm9tICcuLi8uLi9kYXRhL2RhdGEtcXVlcnknO1xuaW1wb3J0IHsgQ29sbGVjdGlvbiB9IGZyb20gJy4uLy4uL2RhdGEvZGF0YS1jb2xsZWN0aW9uJztcbmltcG9ydCB7XG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgVW50eXBlZEZvcm1Db250cm9sLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICBkZWJvdW5jZVRpbWUsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBmaXJzdFZhbHVlRnJvbSxcbiAgT2JzZXJ2YWJsZSxcbiAgU3ViamVjdCxcbiAgdGFrZVVudGlsLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFRwbEZ1biB9IGZyb20gJy4uL2Zrc2VsZWN0L2Zrc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXRhTW9kZWwgfSBmcm9tICcuLi8uLi9kYXRhL2RhdGEtbW9kZWwnO1xuaW1wb3J0IHsgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nYlR5cGVhaGVhZE1vZHVsZSB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGF0YS1tMm1zZWxlY3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vbTJtc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbTJtc2VsZWN0LmNvbXBvbmVudC5zYXNzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICB1c2VFeGlzdGluZzogTTJtc2VsZWN0Q29tcG9uZW50LFxuICAgIH0sXG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIE5nYlR5cGVhaGVhZE1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIE0ybXNlbGVjdENvbXBvbmVudDxUIGV4dGVuZHMgRGF0YU1vZGVsLCBSIGV4dGVuZHMgRGF0YU1vZGVsPlxuICBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3Nvclxue1xuICAvLyBNb2RlbCBmaWVsZCB2YWx1ZSAmIHVwZGF0ZSBkYXRhXG4gIEBJbnB1dCgpIHB1YmxpYyBtb2RlbD86IFQ7XG4gIEBJbnB1dCgpIHB1YmxpYyBmaWVsZD86IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIGVkaXQgPSBmYWxzZTtcbiAgLy8gUmF3IHZhbHVlXG4gIEBJbnB1dCgpIHB1YmxpYyB2YWx1ZXMhOiBSW107XG4gIHB1YmxpYyBwa3M6IG51bWJlcltdID0gW107XG4gIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xuICAvLyBGayBmaWVsZHMsIGVpdGhlciBtb2RlbCAvIHF1ZXJ5c2V0IC8gY29sbGVjdGlvbiBtdXN0IGJlIGdpdmVuXG4gIEBJbnB1dCgpIHB1YmxpYyBxdWVyeXNldD86IFF1ZXJ5c2V0PFI+O1xuICBASW5wdXQoKSBwdWJsaWMgY29sbGVjdGlvbj86IENvbGxlY3Rpb248Uj47XG4gIEBJbnB1dCgpIHB1YmxpYyBmaWx0ZXI6IEZpbHRlckRhdGEgPSB7fTtcbiAgQElucHV0KCkgcHVibGljIG1vZGU6ICdhdXRvY29tcGxldGUnIHwgJ3NlbGVjdCcgfCAnYXV0bycgPSAnYXV0byc7XG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNwbGF5Pzogc3RyaW5nIHwgVHBsRnVuPFI+O1xuICBASW5wdXQoKSBwdWJsaWMgc2VhcmNoID0gJ3NlYXJjaCc7XG4gIC8vIERpc3BsYXlcbiAgQElucHV0KCkgcHVibGljIGxhYmVsID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyBwbGFjZWhvbGRlciA9ICcnO1xuICBASW5wdXQoKSBwdWJsaWMgZW1wdHlMYWJlbCA9ICcnO1xuICBASW5wdXQoKSBwdWJsaWMgaW5wdXRDbGFzc2VzOiBzdHJpbmdbXSB8IHN0cmluZyA9IFtdO1xuICAvLyBPdXRwdXRzXG4gIEBPdXRwdXQoKSBwdWJsaWMgYWRkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFI+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgcmVtb3ZlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Uj4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBjYW5jZWxsZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgY2xlYXJlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBkZXRhaWxzQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8UltdPigpO1xuICBAT3V0cHV0KCkgcHVibGljIGNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcltdPigpO1xuXG4gIHB1YmxpYyBmYyE6IFVudHlwZWRGb3JtQ29udHJvbDtcbiAgcHVibGljIHNlYXJjaEZuID0gdGhpcy5fc2VhcmNoLmJpbmQodGhpcyk7XG4gIHB1YmxpYyBkaXNwbGF5Rm4gPSB0aGlzLl9kaXNwbGF5LmJpbmQodGhpcyk7XG4gIHByaXZhdGUgdG91Y2hlZCA9IGZhbHNlO1xuICBwcml2YXRlIF9zdWJzY3JpcHRpb24gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIF90cGwhOiBUcGxGdW48Uj47XG5cbiAgLyoqXG4gICAqIENvbnRyb2wgdmFsdWUgYWNjZXNzb3Igb25DaGFuZ2UgZHVtbXkgY2FsbGJhY2s7XG4gICAqIEBwYXJhbSBma3NcbiAgICovXG4gIHB1YmxpYyBvbkNoYW5nZSA9IChma3M6IG51bWJlcltdKSA9PiB7fTtcblxuICAvKipcbiAgICogQ29udHJvbCB2YWx1ZSBhY2Nlc3NvciBvblRvdWNoZWQgZHVtbXkgY2FsbGJhY2s7XG4gICAqL1xuICBwdWJsaWMgb25Ub3VjaGVkID0gKCkgPT4ge307XG5cbiAgLyoqXG4gICAqIE9uIERlc3Ryb3kgY2xlYXJzIHN1YnNjcmlwdGlvbnMuXG4gICAqL1xuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLm5leHQoKTtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPbkNoYW5nZSByZWdpc3RlciBmcm9tIGNvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gICAqIEBwYXJhbSBvbkNoYW5nZSBjYWxsYmFja1xuICAgKi9cbiAgcmVnaXN0ZXJPbkNoYW5nZShvbkNoYW5nZTogYW55KSB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IG9uQ2hhbmdlO1xuICB9XG5cbiAgLyoqXG4gICAqIE9uVG91Y2hlZCByZWdpc3RlciBmcm9tIGNvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gICAqIEBwYXJhbSBvblRvdWNoZWQgY2FsbGJhY2tcbiAgICovXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKG9uVG91Y2hlZDogYW55KSB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBvblRvdWNoZWQ7XG4gIH1cblxuICAvKipcbiAgICogT25Jbml0IDpcbiAgICogLSBlbnN1cmVzIHF1ZXJ5c2V0IGlzIGF2YWlsYWJsZVxuICAgKiAtIGNyZWF0ZXMgZm9ybSBjb250cm9sIGZvciBpbnB1dFxuICAgKiAtIGNyZWF0ZXMgZGlzcGxheSBmdW5jdGlvblxuICAgKiAtIGVuc3VyZSB2YWx1ZXMgYXJlIHNldCBmcm9tIGFueSBzb3VyY2VcbiAgICovXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBDcmVhdGUgcXVlcnlzZXQgaWYgbm90IGdpdmVuXG4gICAgLy8gcXVlcnlzZXQgaXMgY3JlYXRlIHRocm91Z2ggbW9kZWxcbiAgICBpZiAoIXRoaXMucXVlcnlzZXQgJiYgdGhpcy5jb2xsZWN0aW9uKSB7XG4gICAgICB0aGlzLnF1ZXJ5c2V0ID0gdGhpcy5jb2xsZWN0aW9uLnF1ZXJ5c2V0KCk7XG4gICAgfSBlbHNlIGlmICghdGhpcy5xdWVyeXNldCAmJiB0aGlzLm1vZGVsICYmIHRoaXMubW9kZWwuX2NvbGxlY3Rpb24pIHtcbiAgICAgIHRoaXMuY29sbGVjdGlvbiA9IHRoaXMubW9kZWwuX2NvbGxlY3Rpb247XG4gICAgICB0aGlzLnF1ZXJ5c2V0ID0gdGhpcy5jb2xsZWN0aW9uLnF1ZXJ5c2V0KCk7XG4gICAgfVxuICAgIGlmICghdGhpcy5xdWVyeXNldCkge1xuICAgICAgdGhyb3cgRXJyb3IoJ3F1ZXJ5c2V0IGlzIG1hbmRhdG9yeSBmb3IgbTJtIHNlbGVjdCcpO1xuICAgIH1cbiAgICAvLyBDcmVhdGUgZm9ybSBjb250cm9sIGZvciB0eXBlYWhlYWQgYW5kIHN1YnNjcmliZSBmb3IgY2hhbmdlc1xuICAgIHRoaXMuZmMgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKCcnKTtcbiAgICB0aGlzLmZjLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX3N1YnNjcmlwdGlvbiksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpXG4gICAgICAuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICB0aGlzLm9uQWRkKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgLy8gU2V0IGRpc3BsYXkgZnVuY3Rpb25cbiAgICBpZiAodGhpcy5kaXNwbGF5KSB7XG4gICAgICBpZiAodGhpcy5kaXNwbGF5ICYmIHR5cGVvZiB0aGlzLmRpc3BsYXkgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRoaXMuX3RwbCA9IChtb2RlbDogUikgPT4gYCR7KG1vZGVsIGFzIGFueSlbdGhpcy5kaXNwbGF5IGFzIHN0cmluZ119YDtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5kaXNwbGF5ICYmIHR5cGVvZiB0aGlzLmRpc3BsYXkgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhpcy5fdHBsID0gdGhpcy5kaXNwbGF5LmJpbmQodGhpcyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3RwbCA9IChtb2RlbDogUikgPT5cbiAgICAgICAgYCR7XG4gICAgICAgICAgKG1vZGVsIGFzIGFueSlbJ25hbWUnXSB8fFxuICAgICAgICAgIChtb2RlbCBhcyBhbnkpWyd0aXRsZSddIHx8XG4gICAgICAgICAgKG1vZGVsIGFzIGFueSlbJ2lkJ11cbiAgICAgICAgfWA7XG4gICAgfVxuICAgIC8vIEdldCB2YWx1ZXMgZnJvbSBtb2RlbCBpZiBub3QgYWxyZWFkeSBnaXZlblxuICAgIC8vIFRPRE86IGNoZWNrIGlmIHRoaXMgaXMgbmVjZXNzYXJ5XG4gICAgaWYgKCF0aGlzLnZhbHVlcyAmJiB0aGlzLm1vZGVsICYmIHRoaXMuZmllbGQpIHtcbiAgICAgIHRoaXMudmFsdWVzID0gKHRoaXMubW9kZWwgYXMgYW55KVt0aGlzLmZpZWxkICsgJ19kZXRhaWxzJ107XG4gICAgfVxuICAgIGlmICh0aGlzLnZhbHVlcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdubyB2YWx1ZXMgYXZhaWxhYmxlIGZvciAnLCB0aGlzLm1vZGVsLCB0aGlzLmZpZWxkKTtcbiAgICAgIHRocm93IEVycm9yKCdubyB2YWx1ZXMgYXZhaWxhYmxlJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhIHZhbHVlLlxuICAgKiBFbWl0cyBkZXRhaWxzQ2hhbmdlZCwgY2hhbmdlZCBhbmQgcmVtb3ZlZCBzaWduYWxzLlxuICAgKiBAcGFyYW0gaSBpbnN0YW5jZSB0byBiZSByZW1vdmVkXG4gICAqL1xuICBwdWJsaWMgb25SZW1vdmUoaTogUikge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICBjb25zdCBwcyA9IHRoaXMucGtzLmluZGV4T2YoaS5pZCk7XG4gICAgICB0aGlzLnBrcy5zcGxpY2UocHMsIDEpO1xuICAgICAgdGhpcy52YWx1ZXMuc3BsaWNlKHBzLCAxKTtcbiAgICAgIHRoaXMuZGV0YWlsc0NoYW5nZWQuZW1pdCh0aGlzLnZhbHVlcyk7XG4gICAgICB0aGlzLmNoYW5nZWQuZW1pdCh0aGlzLnBrcyk7XG4gICAgICB0aGlzLnJlbW92ZWQuZW1pdChpKTtcbiAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5wa3MpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSB2YWx1ZS5cbiAgICogRW1pdHMgZGV0YWlsc0NoYW5nZWQsIGNoYW5nZWQgYW5kIGFkZGVkIHNpZ25hbHMuXG4gICAqIEBwYXJhbSBpIGluc3RhbmNlIHRvIGJlIGFkZGVkLlxuICAgKi9cbiAgcHVibGljIG9uQWRkKGk6IFIpIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMubWFya0FzVG91Y2hlZCgpO1xuICAgICAgdGhpcy5wa3MucHVzaChpLmlkKTtcbiAgICAgIHRoaXMudmFsdWVzLnB1c2goaSk7XG4gICAgICB0aGlzLmRldGFpbHNDaGFuZ2VkLmVtaXQodGhpcy52YWx1ZXMpO1xuICAgICAgdGhpcy5jaGFuZ2VkLmVtaXQodGhpcy5wa3MpO1xuICAgICAgdGhpcy5hZGRlZC5lbWl0KGkpO1xuICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLnBrcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIGFsbCB2YWx1ZXMuXG4gICAqIEVtaXRzIGRldGFpbHNDaGFuZ2VkLCBjaGFuZ2VkIGFuZCBjbGVhcmVkIHNpZ25hbHMuXG4gICAqL1xuICBwdWJsaWMgb25DbGVhcigpIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMubWFya0FzVG91Y2hlZCgpO1xuICAgICAgdGhpcy5wa3MgPSBbXTtcbiAgICAgIHRoaXMudmFsdWVzID0gW107XG4gICAgICB0aGlzLmRldGFpbHNDaGFuZ2VkLmVtaXQodGhpcy52YWx1ZXMpO1xuICAgICAgdGhpcy5jaGFuZ2VkLmVtaXQodGhpcy5wa3MpO1xuICAgICAgdGhpcy5jbGVhcmVkLmVtaXQoKTtcbiAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5wa3MpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBXcml0ZSB2YWx1ZSBmcm9tIGNvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgKiBAcGFyYW0gcGtzXG4gICAqL1xuICBhc3luYyB3cml0ZVZhbHVlKHBrczogbnVtYmVyW10pIHtcbiAgICB0aGlzLnBrcyA9IHBrcztcbiAgICBhd2FpdCB0aGlzLl9nZXREaXNwbGF5VmFsdWVzKHBrcyk7XG4gIH1cblxuICAvKipcbiAgICogTWFyayBhcyB0b3VjaGVkLlxuICAgKi9cbiAgcHVibGljIG1hcmtBc1RvdWNoZWQoKSB7XG4gICAgaWYgKCF0aGlzLnRvdWNoZWQpIHtcbiAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICB0aGlzLnRvdWNoZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNYXJrIGFzIGRpc2FibGVkLlxuICAgKiBAcGFyYW0gZGlzYWJsZWRcbiAgICovXG4gIHNldERpc2FibGVkU3RhdGUoZGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRpc2FibGVkID0gZGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmUgZGlzcGxheSB2YWx1ZXMgZm9yIGN1cnJlbnQgc2V0IG9mIHBrcy5cbiAgICogRXZlbnR1YWxseSBmZXRjaGVzIGl0ZW1zIGZyb20gY29sbGVjdGlvbi5cbiAgICogRW1pdHMgZGV0YWlsc0NoYW5nZWQgc2lnbmFsLlxuICAgKiBAcGFyYW0gcGtzIGxpc3Qgb2YgY3VycmVudCBwa3MuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIF9nZXREaXNwbGF5VmFsdWVzKHBrczogbnVtYmVyW10gPSBbXSkge1xuICAgIGNvbnN0IHZhbHVlczogUltdID0gW107XG4gICAgZm9yIChjb25zdCBrIG9mIHBrcykge1xuICAgICAgbGV0IGZvdW5kID0gZmFsc2U7XG4gICAgICBmb3IgKGxldCB2IG9mIHRoaXMudmFsdWVzKSB7XG4gICAgICAgIGlmICh2LmlkID09IGspIHtcbiAgICAgICAgICB2YWx1ZXMucHVzaCh2KTtcbiAgICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghZm91bmQpIHtcbiAgICAgICAgaWYgKHRoaXMuY29sbGVjdGlvbikge1xuICAgICAgICAgIHZhbHVlcy5wdXNoKGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuY29sbGVjdGlvbi5mZXRjaChrKSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhbHVlcy5wdXNoKHsgaWQ6IGssIF9kaXNwbGF5OiAnVW5rbm93bicgfSBhcyBhbnkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMudmFsdWVzID0gdmFsdWVzO1xuICAgIHRoaXMuZGV0YWlsc0NoYW5nZWQubmV4dCh0aGlzLnZhbHVlcyk7XG4gIH1cblxuICAvKipcbiAgICogRGlzcGxheSBmdW5jdGlvbi4gVXNlcyBkZXNjZmllbGQgb3IgZGVzYyB0cGwgKGxvZGFzaCB0ZW1wbGF0ZSB1c2luZyBtb2RlbCBmaWVsZHMpLlxuICAgKi9cbiAgcHJpdmF0ZSBfZGlzcGxheSh4OiBhbnkpOiBhbnkge1xuICAgIGlmICh4KSB7XG4gICAgICBpZiAoeC5fZGlzcGxheSkge1xuICAgICAgICBpZiAoeC5fZGlzcGxheSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgICAgICAgcmV0dXJuIHguX2Rpc3BsYXkoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4geC5fZGlzcGxheTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuX3RwbCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdHBsKHgpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICAvKipcbiAgICogU2VhcmNoIGZ1bmN0aW9uLlxuICAgKiBAcGFyYW0gdGV4dCRcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgX3NlYXJjaCh0ZXh0JDogT2JzZXJ2YWJsZTxzdHJpbmc+KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGV4dCQucGlwZShcbiAgICAgIHRha2VVbnRpbCh0aGlzLl9zdWJzY3JpcHRpb24pLFxuICAgICAgZGVib3VuY2VUaW1lKDc1MCksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgc3dpdGNoTWFwKCh0ZXJtKSA9PiB7XG4gICAgICAgIGNvbnN0IGY6IGFueSA9IHt9O1xuICAgICAgICBmb3IgKGNvbnN0IGsgb2YgT2JqZWN0LmtleXModGhpcy5maWx0ZXIpKSB7XG4gICAgICAgICAgaWYgKHRoaXMuZmlsdGVyW2tdICE9PSBudWxsIHx8IHRoaXMuZmlsdGVyW2tdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGZba10gPSB0aGlzLmZpbHRlcltrXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZlt0aGlzLnNlYXJjaF0gPSB0ZXJtO1xuICAgICAgICBjb25zdCBxcyA9IHRoaXMucXVlcnlzZXQgYXMgUXVlcnlzZXQ8YW55PjtcbiAgICAgICAgcXMuZmlsdGVyKGYsIHRydWUpO1xuICAgICAgICByZXR1cm4gcXMuZ2V0KCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cbiIsIlxuPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgPGxhYmVsICpuZ0lmPVwibGFiZWxcIj57e2xhYmVsfX08L2xhYmVsPlxuICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cbiAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbZm9ybUNvbnRyb2xdPVwiZmNcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiBbbmdiVHlwZWFoZWFkXT1cInNlYXJjaEZuXCIgW2VkaXRhYmxlXT1cImZhbHNlXCIgW2ZvY3VzRmlyc3RdPVwidHJ1ZVwiIFtpbnB1dEZvcm1hdHRlcl09XCJkaXNwbGF5Rm5cIiBbcmVzdWx0Rm9ybWF0dGVyXT1cImRpc3BsYXlGblwiIChrZXl1cC5lc2NhcGUpPVwiY2FuY2VsbGVkLmVtaXQoKVwiPlxuICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cC10ZXh0XCI+PGkgY2xhc3M9XCJiaSBiaS10cmFzaCBmbG9hdC1lbmQgcG9pbnRlclwiIChjbGljayk9XCJjbGVhcmVkLmVtaXQoKVwiPjwvaT48L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nRm9yPVwibGV0IGkgb2YgdmFsdWVzXCI+PGkgY2xhc3M9XCJiaSBiaS10cmFzaCBtcy0yIGZsb2F0LWVuZFwiIChjbGljayk9XCJvblJlbW92ZShpKVwiPjwvaT57e2Rpc3BsYXlGbihpKX19PC9kaXY+XG48L2Rpdj4iXX0=
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { Editor, NgxEditorModule } from 'ngx-editor';
|
|
4
|
+
import { FormControl, ReactiveFormsModule } from '@angular/forms';
|
|
5
|
+
import { firstValueFrom } from 'rxjs';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/common";
|
|
8
|
+
import * as i2 from "ngx-editor";
|
|
9
|
+
import * as i3 from "@angular/forms";
|
|
10
|
+
export class RicheditComponent {
|
|
11
|
+
constructor() {
|
|
12
|
+
this.editable = true;
|
|
13
|
+
this.edit = true;
|
|
14
|
+
this.mode = 'dd';
|
|
15
|
+
/**
|
|
16
|
+
* Hide label (for inline forms)
|
|
17
|
+
*/
|
|
18
|
+
this.hideLabel = false;
|
|
19
|
+
this.toolbar = [
|
|
20
|
+
['bold', 'italic'],
|
|
21
|
+
['underline', 'strike'],
|
|
22
|
+
['code', 'blockquote'],
|
|
23
|
+
['ordered_list', 'bullet_list'],
|
|
24
|
+
[{ heading: ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'] }],
|
|
25
|
+
['link'],
|
|
26
|
+
['text_color', 'background_color'],
|
|
27
|
+
['align_left', 'align_center', 'align_right', 'align_justify'],
|
|
28
|
+
];
|
|
29
|
+
this.html = '';
|
|
30
|
+
this.fc = new FormControl('');
|
|
31
|
+
}
|
|
32
|
+
ngOnInit() {
|
|
33
|
+
this.editor = new Editor();
|
|
34
|
+
this.manager = this.model?.FM(this.field);
|
|
35
|
+
this.required = this.manager?.required || false;
|
|
36
|
+
if (this.model) {
|
|
37
|
+
this.fc.setValue(this.model[this.field] || '', {
|
|
38
|
+
emitEvent: false,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
if (this.edit) {
|
|
42
|
+
this.fc.enable();
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
this.fc.disable();
|
|
46
|
+
}
|
|
47
|
+
this.fc.valueChanges.subscribe((v) => console.log(v));
|
|
48
|
+
}
|
|
49
|
+
// make sure to destory the editor
|
|
50
|
+
ngOnDestroy() {
|
|
51
|
+
this.editor.destroy();
|
|
52
|
+
}
|
|
53
|
+
toggleEdit() {
|
|
54
|
+
if (this.editable) {
|
|
55
|
+
if (this.edit) {
|
|
56
|
+
this.fc.disable();
|
|
57
|
+
this.edit = false;
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
this.fc.enable();
|
|
61
|
+
this.edit = true;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
this.fc.disable();
|
|
66
|
+
this.edit = false;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
async save() {
|
|
70
|
+
this.model.setFV(this.field, this.fc.value);
|
|
71
|
+
if (this.mode === 'dd') {
|
|
72
|
+
await firstValueFrom(this.model.save({ updateModel: true }));
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
RicheditComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: RicheditComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
77
|
+
RicheditComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.9", type: RicheditComponent, isStandalone: true, selector: "data-richedit", inputs: { model: "model", field: "field", editable: "editable", edit: "edit", mode: "mode", hideLabel: "hideLabel" }, ngImport: i0, template: "\n<ng-template #editorTemplate>\n <div class=\"NgxEditor__Wrapper\">\n <ngx-editor-menu [editor]=\"editor\" [toolbar]=\"toolbar\" *ngIf=\"edit\"></ngx-editor-menu>\n <ngx-editor [editor]=\"editor\" [formControl]=\"fc\" [placeholder]=\"''\"></ngx-editor>\n </div>\n <button class=\"btn btn-primary btn-sm w-100 mt-1\" *ngIf=\"edit\" (click)=\"save()\"><i class=\"bi bi-save me-2\"></i>Enregistrer</button>\n</ng-template>\n<ng-template #titleTpl>\n <ng-content></ng-content>\n</ng-template>\n<!-- Dd display-->\n<ng-container *ngIf=\"mode==='dd'\">\n <dt [class.required]=\"required\" *ngIf=\"!hideLabel\"><span class=\"editable\" (click)=\"toggleEdit()\" role=\"button\">\n <ng-container *ngTemplateOutlet=\"titleTpl\"></ng-container></span></dt>\n <dd [class.mb-0]=\"hideLabel\">\n <ng-container *ngTemplateOutlet=\"editorTemplate\"></ng-container>\n </dd>\n</ng-container>\n<!-- Inline display-->\n<ng-container *ngIf=\"mode==='inline'\">\n <ng-container *ngIf=\"!hideLabel\">\n <label [class.required]=\"required\">\n <ng-container *ngTemplateOutlet=\"titleTpl\"></ng-container>\n </label>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"editorTemplate\"></ng-container>\n</ng-container>\n<!-- Form display-->\n<ng-container *ngIf=\"mode==='form'\">\n <ng-container *ngIf=\"!hideLabel\">\n <label [class.required]=\"required\">\n <ng-container *ngTemplateOutlet=\"titleTpl\"></ng-container>\n </label>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"editorTemplate\"></ng-container>\n</ng-container>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: NgxEditorModule }, { kind: "component", type: i2.NgxEditorComponent, selector: "ngx-editor", inputs: ["editor", "outputFormat", "placeholder"], outputs: ["focusOut", "focusIn"] }, { kind: "component", type: i2.MenuComponent, selector: "ngx-editor-menu", inputs: ["toolbar", "colorPresets", "disabled", "editor", "customMenuRef", "dropdownPlacement"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
|
|
78
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: RicheditComponent, decorators: [{
|
|
79
|
+
type: Component,
|
|
80
|
+
args: [{ selector: 'data-richedit', standalone: true, imports: [CommonModule, NgxEditorModule, ReactiveFormsModule], template: "\n<ng-template #editorTemplate>\n <div class=\"NgxEditor__Wrapper\">\n <ngx-editor-menu [editor]=\"editor\" [toolbar]=\"toolbar\" *ngIf=\"edit\"></ngx-editor-menu>\n <ngx-editor [editor]=\"editor\" [formControl]=\"fc\" [placeholder]=\"''\"></ngx-editor>\n </div>\n <button class=\"btn btn-primary btn-sm w-100 mt-1\" *ngIf=\"edit\" (click)=\"save()\"><i class=\"bi bi-save me-2\"></i>Enregistrer</button>\n</ng-template>\n<ng-template #titleTpl>\n <ng-content></ng-content>\n</ng-template>\n<!-- Dd display-->\n<ng-container *ngIf=\"mode==='dd'\">\n <dt [class.required]=\"required\" *ngIf=\"!hideLabel\"><span class=\"editable\" (click)=\"toggleEdit()\" role=\"button\">\n <ng-container *ngTemplateOutlet=\"titleTpl\"></ng-container></span></dt>\n <dd [class.mb-0]=\"hideLabel\">\n <ng-container *ngTemplateOutlet=\"editorTemplate\"></ng-container>\n </dd>\n</ng-container>\n<!-- Inline display-->\n<ng-container *ngIf=\"mode==='inline'\">\n <ng-container *ngIf=\"!hideLabel\">\n <label [class.required]=\"required\">\n <ng-container *ngTemplateOutlet=\"titleTpl\"></ng-container>\n </label>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"editorTemplate\"></ng-container>\n</ng-container>\n<!-- Form display-->\n<ng-container *ngIf=\"mode==='form'\">\n <ng-container *ngIf=\"!hideLabel\">\n <label [class.required]=\"required\">\n <ng-container *ngTemplateOutlet=\"titleTpl\"></ng-container>\n </label>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"editorTemplate\"></ng-container>\n</ng-container>" }]
|
|
81
|
+
}], propDecorators: { model: [{
|
|
82
|
+
type: Input
|
|
83
|
+
}], field: [{
|
|
84
|
+
type: Input
|
|
85
|
+
}], editable: [{
|
|
86
|
+
type: Input
|
|
87
|
+
}], edit: [{
|
|
88
|
+
type: Input
|
|
89
|
+
}], mode: [{
|
|
90
|
+
type: Input
|
|
91
|
+
}], hideLabel: [{
|
|
92
|
+
type: Input
|
|
93
|
+
}] } });
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmljaGVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS9zcmMvbGliL2Rpc3BlZGl0L3JpY2hlZGl0L3JpY2hlZGl0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEvc3JjL2xpYi9kaXNwZWRpdC9yaWNoZWRpdC9yaWNoZWRpdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFXLE1BQU0sWUFBWSxDQUFDO0FBQzlELE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7OztBQVN0QyxNQUFNLE9BQU8saUJBQWlCO0lBUDlCO1FBWWtCLGFBQVEsR0FBWSxJQUFJLENBQUM7UUFDekIsU0FBSSxHQUFZLElBQUksQ0FBQztRQUNyQixTQUFJLEdBQTZCLElBQUksQ0FBQztRQUN0RDs7V0FFRztRQUNhLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFPcEMsWUFBTyxHQUFZO1lBQ3hCLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQztZQUNsQixDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUM7WUFDdkIsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDO1lBQ3RCLENBQUMsY0FBYyxFQUFFLGFBQWEsQ0FBQztZQUMvQixDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ25ELENB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bnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBFZGl0b3IsIE5neEVkaXRvck1vZHVsZSwgVG9vbGJhciB9IGZyb20gJ25neC1lZGl0b3InO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBEYXRhTW9kZWwgfSBmcm9tICcuLi8uLi9kYXRhL2RhdGEtbW9kZWwnO1xuaW1wb3J0IHsgQmFzZUZpZWxkTWFuYWdlciB9IGZyb20gJy4uLy4uL2RhdGEvZmllbGRzL2Jhc2UnO1xuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGF0YS1yaWNoZWRpdCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE5neEVkaXRvck1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9yaWNoZWRpdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JpY2hlZGl0LmNvbXBvbmVudC5zYXNzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFJpY2hlZGl0Q29tcG9uZW50PEZULCBUIGV4dGVuZHMgRGF0YU1vZGVsPlxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95XG57XG4gIEBJbnB1dCgpIHB1YmxpYyBtb2RlbCE6IFQ7XG4gIEBJbnB1dCgpIHB1YmxpYyBmaWVsZCE6IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIGVkaXRhYmxlOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgcHVibGljIGVkaXQ6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBwdWJsaWMgbW9kZTogJ2RkJyB8ICdpbmxpbmUnIHwgJ2Zvcm0nID0gJ2RkJztcbiAgLyoqXG4gICAqICBIaWRlIGxhYmVsIChmb3IgaW5saW5lIGZvcm1zKVxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGhpZGVMYWJlbDogYm9vbGVhbiA9IGZhbHNlO1xuICAvKiogRmllbGQgbWFuYWdlciAqL1xuICBwdWJsaWMgbWFuYWdlcj86IEJhc2VGaWVsZE1hbmFnZXI8RlQ+O1xuICAvKiogQ29tcHV0ZWQgcmVxdWlyZWQgKi9cbiAgcHVibGljIHJlcXVpcmVkITogYm9vbGVhbjtcblxuICBwdWJsaWMgZWRpdG9yITogRWRpdG9yO1xuICBwdWJsaWMgdG9vbGJhcjogVG9vbGJhciA9IFtcbiAgICBbJ2JvbGQnLCAnaXRhbGljJ10sXG4gICAgWyd1bmRlcmxpbmUnLCAnc3RyaWtlJ10sXG4gICAgWydjb2RlJywgJ2Jsb2NrcXVvdGUnXSxcbiAgICBbJ29yZGVyZWRfbGlzdCcsICdidWxsZXRfbGlzdCddLFxuICAgIFt7IGhlYWRpbmc6IFsnaDEnLCAnaDInLCAnaDMnLCAnaDQnLCAnaDUnLCAnaDYnXSB9XSxcbiAgICBbJ2xpbmsnXSxcbiAgICBbJ3RleHRfY29sb3InLCAnYmFja2dyb3VuZF9jb2xvciddLFxuICAgIFsnYWxpZ25fbGVmdCcsICdhbGlnbl9jZW50ZXInLCAnYWxpZ25fcmlnaHQnLCAnYWxpZ25fanVzdGlmeSddLFxuICBdO1xuICBwdWJsaWMgaHRtbCA9ICcnO1xuICBwdWJsaWMgZmMgPSBuZXcgRm9ybUNvbnRyb2woJycpO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZWRpdG9yID0gbmV3IEVkaXRvcigpO1xuICAgIHRoaXMubWFuYWdlciA9IHRoaXMubW9kZWw/LkZNKHRoaXMuZmllbGQpO1xuICAgIHRoaXMucmVxdWlyZWQgPSB0aGlzLm1hbmFnZXI/LnJlcXVpcmVkIHx8IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMubW9kZWwpIHtcbiAgICAgIHRoaXMuZmMuc2V0VmFsdWUoKHRoaXMubW9kZWwgYXMgYW55KVt0aGlzLmZpZWxkXSB8fCAnJywge1xuICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmVkaXQpIHtcbiAgICAgIHRoaXMuZmMuZW5hYmxlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmMuZGlzYWJsZSgpO1xuICAgIH1cbiAgICB0aGlzLmZjLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHYpID0+IGNvbnNvbGUubG9nKHYpKTtcbiAgfVxuXG4gIC8vIG1ha2Ugc3VyZSB0byBkZXN0b3J5IHRoZSBlZGl0b3JcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5lZGl0b3IuZGVzdHJveSgpO1xuICB9XG5cbiAgdG9nZ2xlRWRpdCgpIHtcbiAgICBpZiAodGhpcy5lZGl0YWJsZSkge1xuICAgICAgaWYgKHRoaXMuZWRpdCkge1xuICAgICAgICB0aGlzLmZjLmRpc2FibGUoKTtcbiAgICAgICAgdGhpcy5lZGl0ID0gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmZjLmVuYWJsZSgpO1xuICAgICAgICB0aGlzLmVkaXQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZjLmRpc2FibGUoKTtcbiAgICAgIHRoaXMuZWRpdCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzYXZlKCkge1xuICAgIHRoaXMubW9kZWwuc2V0RlYodGhpcy5maWVsZCwgdGhpcy5mYy52YWx1ZSk7XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ2RkJykge1xuICAgICAgYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5tb2RlbC5zYXZlKHsgdXBkYXRlTW9kZWw6IHRydWUgfSkpO1xuICAgIH1cbiAgfVxufVxuIiwiXG48bmctdGVtcGxhdGUgI2VkaXRvclRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiTmd4RWRpdG9yX19XcmFwcGVyXCI+XG4gICAgPG5neC1lZGl0b3ItbWVudSBbZWRpdG9yXT1cImVkaXRvclwiIFt0b29sYmFyXT1cInRvb2xiYXJcIiAqbmdJZj1cImVkaXRcIj48L25neC1lZGl0b3ItbWVudT5cbiAgICA8bmd4LWVkaXRvciBbZWRpdG9yXT1cImVkaXRvclwiIFtmb3JtQ29udHJvbF09XCJmY1wiIFtwbGFjZWhvbGRlcl09XCInJ1wiPjwvbmd4LWVkaXRvcj5cbiAgPC9kaXY+XG4gIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtIHctMTAwIG10LTFcIiAqbmdJZj1cImVkaXRcIiAoY2xpY2spPVwic2F2ZSgpXCI+PGkgY2xhc3M9XCJiaSBiaS1zYXZlIG1lLTJcIj48L2k+RW5yZWdpc3RyZXI8L2J1dHRvbj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3RpdGxlVHBsPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPlxuPCEtLSBEZCBkaXNwbGF5LS0+XG48bmctY29udGFpbmVyICpuZ0lmPVwibW9kZT09PSdkZCdcIj5cbiAgPGR0IFtjbGFzcy5yZXF1aXJlZF09XCJyZXF1aXJlZFwiICpuZ0lmPVwiIWhpZGVMYWJlbFwiPjxzcGFuIGNsYXNzPVwiZWRpdGFibGVcIiAoY2xpY2spPVwidG9nZ2xlRWRpdCgpXCIgcm9sZT1cImJ1dHRvblwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRpdGxlVHBsXCI+PC9uZy1jb250YWluZXI+PC9zcGFuPjwvZHQ+XG4gIDxkZCBbY2xhc3MubWItMF09XCJoaWRlTGFiZWxcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZWRpdG9yVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9kZD5cbjwvbmctY29udGFpbmVyPlxuPCEtLSBJbmxpbmUgZGlzcGxheS0tPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vZGU9PT0naW5saW5lJ1wiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWhpZGVMYWJlbFwiPlxuICAgIDxsYWJlbCBbY2xhc3MucmVxdWlyZWRdPVwicmVxdWlyZWRcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0aXRsZVRwbFwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbGFiZWw+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZWRpdG9yVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuPCEtLSBGb3JtIGRpc3BsYXktLT5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJtb2RlPT09J2Zvcm0nXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaGlkZUxhYmVsXCI+XG4gICAgPGxhYmVsIFtjbGFzcy5yZXF1aXJlZF09XCJyZXF1aXJlZFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRpdGxlVHBsXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9sYWJlbD5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlZGl0b3JUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+Il19
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
|
|
2
|
+
import { firstValueFrom } from 'rxjs';
|
|
3
|
+
import { NgbOffcanvasModule, } from '@ng-bootstrap/ng-bootstrap';
|
|
4
|
+
import { CommonModule } from '@angular/common';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@ng-bootstrap/ng-bootstrap";
|
|
7
|
+
import * as i2 from "@angular/common";
|
|
8
|
+
export class SafeDeleteComponent {
|
|
9
|
+
constructor(_ofc) {
|
|
10
|
+
this._ofc = _ofc;
|
|
11
|
+
this.checks = {};
|
|
12
|
+
this.deleted = new EventEmitter();
|
|
13
|
+
this.display = 'button';
|
|
14
|
+
}
|
|
15
|
+
async checkDelete(model) {
|
|
16
|
+
this.result = await firstValueFrom(this.service.delete(this.model, { params: { doit: 'no' } }));
|
|
17
|
+
this.ofc = this._ofc.open(this._dialogRef, {
|
|
18
|
+
position: 'end',
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
async reallyDelete() {
|
|
22
|
+
this.result = await firstValueFrom(this.service.delete(this.model, { params: { doit: 'really' } }));
|
|
23
|
+
this.ofc?.close();
|
|
24
|
+
this.deleted.emit(this.result);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
SafeDeleteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: SafeDeleteComponent, deps: [{ token: i1.NgbOffcanvas }], target: i0.ɵɵFactoryTarget.Component });
|
|
28
|
+
SafeDeleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.9", type: SafeDeleteComponent, isStandalone: true, selector: "data-safe-delete", inputs: { model: "model", service: "service", checks: "checks", display: "display" }, outputs: { deleted: "deleted" }, viewQueries: [{ propertyName: "_dialogRef", first: true, predicate: ["dialog"], descendants: true, static: true }], ngImport: i0, template: "\n<ng-template #dialog let-offcanvas>\n <div class=\"offcanvas-header\">\n <h2 class=\"offcanvas-title text-danger text-center\"><i class=\"bi bi-trash me-2\"></i>Supprimer r\u00E9ellement ??</h2>\n </div>\n <div class=\"offcanvas-body text-danger\" *ngIf=\"result\">\n <div class=\"text-center my-4 fs-1\"><i class=\"bi bi-exclamation-diamond my-5\"></i></div>\n <div class=\"fs-4\">\n <p>La suppression de cet \u00E9l\u00E9ment supprimera {{result.count}} \u00E9l\u00E9ments dans la base de donn\u00E9es..</p>\n </div>\n <table class=\"table table-sm table-striped table-danger\">\n <thead>\n <tr>\n <th>Type d'\u00E9l\u00E9ment</th>\n <th>Nombre</th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let rl of result.details\">\n <tr>\n <td>{{checks[rl[0]] ? checks[rl[0]] : rl[0]}}</td>\n <td>{{rl[1]}}</td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n <button class=\"w-100 btn btn-lg btn-danger\" (click)=\"reallyDelete()\"><i class=\"bi bi-trash me-2\"></i>Je confirme la suppression</button>\n <button class=\"w-100 btn btn-outline-secondary my-3\" (click)=\"offcanvas.close()\"><i class=\"bi bi-door-open me-2\"></i>Je renonce \u00E0 la suppression</button>\n </div>\n</ng-template>\n<button class=\"btn btn-sm btn-outline-danger float-end\" (click)=\"checkDelete(model)\" *ngIf=\"display==='button'\"><i class=\"bi bi-trash mx-2\"></i></button><i class=\"bi bi-trash mx-2\" (click)=\"checkDelete(model)\" *ngIf=\"display==='icon'\" role=\"button\"></i>\n<div (click)=\"checkDelete(model)\" *ngIf=\"display==='custom'\" role=\"button\">\n <ng-content></ng-content>\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: NgbOffcanvasModule }] });
|
|
29
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: SafeDeleteComponent, decorators: [{
|
|
30
|
+
type: Component,
|
|
31
|
+
args: [{ selector: 'data-safe-delete', standalone: true, imports: [CommonModule, NgbOffcanvasModule], template: "\n<ng-template #dialog let-offcanvas>\n <div class=\"offcanvas-header\">\n <h2 class=\"offcanvas-title text-danger text-center\"><i class=\"bi bi-trash me-2\"></i>Supprimer r\u00E9ellement ??</h2>\n </div>\n <div class=\"offcanvas-body text-danger\" *ngIf=\"result\">\n <div class=\"text-center my-4 fs-1\"><i class=\"bi bi-exclamation-diamond my-5\"></i></div>\n <div class=\"fs-4\">\n <p>La suppression de cet \u00E9l\u00E9ment supprimera {{result.count}} \u00E9l\u00E9ments dans la base de donn\u00E9es..</p>\n </div>\n <table class=\"table table-sm table-striped table-danger\">\n <thead>\n <tr>\n <th>Type d'\u00E9l\u00E9ment</th>\n <th>Nombre</th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let rl of result.details\">\n <tr>\n <td>{{checks[rl[0]] ? checks[rl[0]] : rl[0]}}</td>\n <td>{{rl[1]}}</td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n <button class=\"w-100 btn btn-lg btn-danger\" (click)=\"reallyDelete()\"><i class=\"bi bi-trash me-2\"></i>Je confirme la suppression</button>\n <button class=\"w-100 btn btn-outline-secondary my-3\" (click)=\"offcanvas.close()\"><i class=\"bi bi-door-open me-2\"></i>Je renonce \u00E0 la suppression</button>\n </div>\n</ng-template>\n<button class=\"btn btn-sm btn-outline-danger float-end\" (click)=\"checkDelete(model)\" *ngIf=\"display==='button'\"><i class=\"bi bi-trash mx-2\"></i></button><i class=\"bi bi-trash mx-2\" (click)=\"checkDelete(model)\" *ngIf=\"display==='icon'\" role=\"button\"></i>\n<div (click)=\"checkDelete(model)\" *ngIf=\"display==='custom'\" role=\"button\">\n <ng-content></ng-content>\n</div>" }]
|
|
32
|
+
}], ctorParameters: function () { return [{ type: i1.NgbOffcanvas }]; }, propDecorators: { model: [{
|
|
33
|
+
type: Input
|
|
34
|
+
}], service: [{
|
|
35
|
+
type: Input
|
|
36
|
+
}], checks: [{
|
|
37
|
+
type: Input
|
|
38
|
+
}], deleted: [{
|
|
39
|
+
type: Output
|
|
40
|
+
}], display: [{
|
|
41
|
+
type: Input
|
|
42
|
+
}], _dialogRef: [{
|
|
43
|
+
type: ViewChild,
|
|
44
|
+
args: ['dialog', { static: true }]
|
|
45
|
+
}] } });
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2RlbGV0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvZGlzcGVkaXQvc2RlbGV0ZS9zZGVsZXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEvc3JjL2xpYi9kaXNwZWRpdC9zZGVsZXRlL3NkZWxldGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBRUwsa0JBQWtCLEdBRW5CLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7O0FBYy9DLE1BQU0sT0FBTyxtQkFBbUI7SUFXOUIsWUFBb0IsSUFBa0I7UUFBbEIsU0FBSSxHQUFKLElBQUksQ0FBYztRQVJ0QixXQUFNLEdBQWdDLEVBQUUsQ0FBQztRQUN4QyxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQW9CLENBQUM7UUFDaEQsWUFBTyxHQUFpQyxRQUFRLENBQUM7SUFNeEIsQ0FBQztJQUVuQyxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQWdCO1FBQ3ZDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxjQUFjLENBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUM1RCxDQUFDO1FBQ0YsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ3pDLFFBQVEsRUFBRSxLQUFLO1NBQ2hCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxLQUFLLENBQUMsWUFBWTtRQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sY0FBYyxDQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FDaEUsQ0FBQztRQUNGLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pDLENBQUM7O2dIQTVCVSxtQkFBbUI7b0dBQW5CLG1CQUFtQix1VEM5QmhDLHFzREFpQ00seURETE0sWUFBWSwrUEFBRSxrQkFBa0I7MkZBRS9CLG1CQUFtQjtrQkFQL0IsU0FBUzsrQkFDRSxrQkFBa0IsY0FHaEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGtCQUFrQixDQUFDO21HQUczQixLQUFLO3NCQUFwQixLQUFLO2dCQUNVLE9BQU87c0JBQXRCLEtBQUs7Z0JBQ1UsTUFBTTtzQkFBckIsS0FBSztnQkFDVyxPQUFPO3NCQUF2QixNQUFNO2dCQUNTLE9BQU87c0JBQXRCLEtBQUs7Z0JBR0UsVUFBVTtzQkFEakIsU0FBUzt1QkFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRhTW9kZWwgfSBmcm9tICcuLi8uLi9kYXRhL2RhdGEtbW9kZWwnO1xuaW1wb3J0IHsgQ29sbGVjdGlvbiB9IGZyb20gJy4uLy4uL2RhdGEvZGF0YS1jb2xsZWN0aW9uJztcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBOZ2JPZmZjYW52YXMsXG4gIE5nYk9mZmNhbnZhc01vZHVsZSxcbiAgTmdiT2ZmY2FudmFzUmVmLFxufSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZha2VEZWxldGVSZXN1bHQge1xuICBjb3VudDogbnVtYmVyO1xuICBkZXRhaWxzOiBbc3RyaW5nLCBudW1iZXJdW107XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RhdGEtc2FmZS1kZWxldGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2RlbGV0ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NkZWxldGUuY29tcG9uZW50LnNhc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTmdiT2ZmY2FudmFzTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgU2FmZURlbGV0ZUNvbXBvbmVudDxUIGV4dGVuZHMgRGF0YU1vZGVsPiB7XG4gIEBJbnB1dCgpIHB1YmxpYyBtb2RlbCE6IFQ7XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXJ2aWNlITogQ29sbGVjdGlvbjxUPjtcbiAgQElucHV0KCkgcHVibGljIGNoZWNrczogeyBbaW5kZXg6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG4gIEBPdXRwdXQoKSBwdWJsaWMgZGVsZXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RmFrZURlbGV0ZVJlc3VsdD4oKTtcbiAgQElucHV0KCkgcHVibGljIGRpc3BsYXk6ICdidXR0b24nIHwgJ2ljb24nIHwgJ2N1c3RvbScgPSAnYnV0dG9uJztcbiAgcHVibGljIHJlc3VsdD86IEZha2VEZWxldGVSZXN1bHQ7XG4gIEBWaWV3Q2hpbGQoJ2RpYWxvZycsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHByaXZhdGUgX2RpYWxvZ1JlZj86IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBwcml2YXRlIG9mYz86IE5nYk9mZmNhbnZhc1JlZjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9vZmM6IE5nYk9mZmNhbnZhcykge31cblxuICBwdWJsaWMgYXN5bmMgY2hlY2tEZWxldGUobW9kZWw6IERhdGFNb2RlbCkge1xuICAgIHRoaXMucmVzdWx0ID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICB0aGlzLnNlcnZpY2UuZGVsZXRlKHRoaXMubW9kZWwsIHsgcGFyYW1zOiB7IGRvaXQ6ICdubycgfSB9KVxuICAgICk7XG4gICAgdGhpcy5vZmMgPSB0aGlzLl9vZmMub3Blbih0aGlzLl9kaWFsb2dSZWYsIHtcbiAgICAgIHBvc2l0aW9uOiAnZW5kJyxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyByZWFsbHlEZWxldGUoKSB7XG4gICAgdGhpcy5yZXN1bHQgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShcbiAgICAgIHRoaXMuc2VydmljZS5kZWxldGUodGhpcy5tb2RlbCwgeyBwYXJhbXM6IHsgZG9pdDogJ3JlYWxseScgfSB9KVxuICAgICk7XG4gICAgdGhpcy5vZmM/LmNsb3NlKCk7XG4gICAgdGhpcy5kZWxldGVkLmVtaXQodGhpcy5yZXN1bHQpO1xuICB9XG59XG4iLCJcbjxuZy10ZW1wbGF0ZSAjZGlhbG9nIGxldC1vZmZjYW52YXM+XG4gIDxkaXYgY2xhc3M9XCJvZmZjYW52YXMtaGVhZGVyXCI+XG4gICAgPGgyIGNsYXNzPVwib2ZmY2FudmFzLXRpdGxlIHRleHQtZGFuZ2VyIHRleHQtY2VudGVyXCI+PGkgY2xhc3M9XCJiaSBiaS10cmFzaCBtZS0yXCI+PC9pPlN1cHByaW1lciByw6llbGxlbWVudCA/PzwvaDI+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwib2ZmY2FudmFzLWJvZHkgdGV4dC1kYW5nZXJcIiAqbmdJZj1cInJlc3VsdFwiPlxuICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBteS00IGZzLTFcIj48aSBjbGFzcz1cImJpIGJpLWV4Y2xhbWF0aW9uLWRpYW1vbmQgbXktNVwiPjwvaT48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZnMtNFwiPlxuICAgICAgPHA+TGEgc3VwcHJlc3Npb24gZGUgY2V0IMOpbMOpbWVudCBzdXBwcmltZXJhIHt7cmVzdWx0LmNvdW50fX0gw6lsw6ltZW50cyBkYW5zIGxhIGJhc2UgZGUgZG9ubsOpZXMuLjwvcD5cbiAgICA8L2Rpdj5cbiAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1zbSB0YWJsZS1zdHJpcGVkIHRhYmxlLWRhbmdlclwiPlxuICAgICAgPHRoZWFkPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRoPlR5cGUgZCfDqWzDqW1lbnQ8L3RoPlxuICAgICAgICAgIDx0aD5Ob21icmU8L3RoPlxuICAgICAgICA8L3RyPlxuICAgICAgPC90aGVhZD5cbiAgICAgIDx0Ym9keT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcmwgb2YgcmVzdWx0LmRldGFpbHNcIj5cbiAgICAgICAgICA8dHI+XG4gICAgICAgICAgICA8dGQ+e3tjaGVja3NbcmxbMF1dID8gY2hlY2tzW3JsWzBdXSA6IHJsWzBdfX08L3RkPlxuICAgICAgICAgICAgPHRkPnt7cmxbMV19fTwvdGQ+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L3Rib2R5PlxuICAgIDwvdGFibGU+XG4gICAgPGJ1dHRvbiBjbGFzcz1cInctMTAwIGJ0biBidG4tbGcgYnRuLWRhbmdlclwiIChjbGljayk9XCJyZWFsbHlEZWxldGUoKVwiPjxpIGNsYXNzPVwiYmkgYmktdHJhc2ggbWUtMlwiPjwvaT5KZSBjb25maXJtZSBsYSBzdXBwcmVzc2lvbjwvYnV0dG9uPlxuICAgIDxidXR0b24gY2xhc3M9XCJ3LTEwMCBidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5IG15LTNcIiAoY2xpY2spPVwib2ZmY2FudmFzLmNsb3NlKClcIj48aSBjbGFzcz1cImJpIGJpLWRvb3Itb3BlbiBtZS0yXCI+PC9pPkplIHJlbm9uY2Ugw6AgbGEgc3VwcHJlc3Npb248L2J1dHRvbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtZGFuZ2VyIGZsb2F0LWVuZFwiIChjbGljayk9XCJjaGVja0RlbGV0ZShtb2RlbClcIiAqbmdJZj1cImRpc3BsYXk9PT0nYnV0dG9uJ1wiPjxpIGNsYXNzPVwiYmkgYmktdHJhc2ggbXgtMlwiPjwvaT48L2J1dHRvbj48aSBjbGFzcz1cImJpIGJpLXRyYXNoIG14LTJcIiAoY2xpY2spPVwiY2hlY2tEZWxldGUobW9kZWwpXCIgKm5nSWY9XCJkaXNwbGF5PT09J2ljb24nXCIgcm9sZT1cImJ1dHRvblwiPjwvaT5cbjxkaXYgKGNsaWNrKT1cImNoZWNrRGVsZXRlKG1vZGVsKVwiICpuZ0lmPVwiZGlzcGxheT09PSdjdXN0b20nXCIgcm9sZT1cImJ1dHRvblwiPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2Rpdj4iXX0=
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { animate, style, transition, trigger } from '@angular/animations';
|
|
3
|
+
import { ReplaySubject, takeUntil } from 'rxjs';
|
|
4
|
+
import { CommonModule } from '@angular/common';
|
|
5
|
+
import { provideAnimations } from '@angular/platform-browser/animations';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "../message.service";
|
|
8
|
+
import * as i2 from "@angular/common";
|
|
9
|
+
export class MessageZoneComponent {
|
|
10
|
+
constructor(messages) {
|
|
11
|
+
this.messages = messages;
|
|
12
|
+
this.current = [];
|
|
13
|
+
this._subscriptions$ = new ReplaySubject();
|
|
14
|
+
}
|
|
15
|
+
ngOnInit() {
|
|
16
|
+
this.messages.current
|
|
17
|
+
.pipe(takeUntil(this._subscriptions$))
|
|
18
|
+
.subscribe((messages) => {
|
|
19
|
+
this.current = messages;
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
ngOnDestroy() {
|
|
23
|
+
this._subscriptions$.next();
|
|
24
|
+
this._subscriptions$.complete();
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
MessageZoneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: MessageZoneComponent, deps: [{ token: i1.DataMessageService }], target: i0.ɵɵFactoryTarget.Component });
|
|
28
|
+
MessageZoneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.9", type: MessageZoneComponent, isStandalone: true, selector: "data-message-zone", inputs: { filter: "filter" }, providers: [provideAnimations()], ngImport: i0, template: "\n<div class=\"messagezone\">\n <div class=\"alert\" *ngFor=\"let message of current\" [@dispStatus]=\"message.status\" [class]=\"message.style\" (click)=\"message.showTrace=!message.showTrace\">\n <button class=\"btn-close\" type=\"button\" (click)=\"messages.ack(message)\" aria-label=\"Close\"></button><strong>{{message.title}}</strong> {{message.message}}\n <div class=\"pretrace\" *ngIf=\"message.showTrace\">{{message.trace}}</div>\n </div>\n</div>", styles: [".messagezone{position:fixed;top:30px;right:40px;width:35vw;height:auto;z-index:1050}.messagezone .pretrace{white-space:pre-wrap;font-family:monospace;font-size:.7rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], animations: [
|
|
29
|
+
trigger('dispStatus', [
|
|
30
|
+
transition('void => *', [
|
|
31
|
+
style({ opacity: 0 }),
|
|
32
|
+
animate(550, style({ opacity: 1 })),
|
|
33
|
+
]),
|
|
34
|
+
transition('* => void', [
|
|
35
|
+
style({ opacity: '*' }),
|
|
36
|
+
animate(550, style({ opacity: 0 })),
|
|
37
|
+
]),
|
|
38
|
+
]),
|
|
39
|
+
] });
|
|
40
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: MessageZoneComponent, decorators: [{
|
|
41
|
+
type: Component,
|
|
42
|
+
args: [{ selector: 'data-message-zone', standalone: true, imports: [CommonModule], providers: [provideAnimations()], animations: [
|
|
43
|
+
trigger('dispStatus', [
|
|
44
|
+
transition('void => *', [
|
|
45
|
+
style({ opacity: 0 }),
|
|
46
|
+
animate(550, style({ opacity: 1 })),
|
|
47
|
+
]),
|
|
48
|
+
transition('* => void', [
|
|
49
|
+
style({ opacity: '*' }),
|
|
50
|
+
animate(550, style({ opacity: 0 })),
|
|
51
|
+
]),
|
|
52
|
+
]),
|
|
53
|
+
], template: "\n<div class=\"messagezone\">\n <div class=\"alert\" *ngFor=\"let message of current\" [@dispStatus]=\"message.status\" [class]=\"message.style\" (click)=\"message.showTrace=!message.showTrace\">\n <button class=\"btn-close\" type=\"button\" (click)=\"messages.ack(message)\" aria-label=\"Close\"></button><strong>{{message.title}}</strong> {{message.message}}\n <div class=\"pretrace\" *ngIf=\"message.showTrace\">{{message.trace}}</div>\n </div>\n</div>", styles: [".messagezone{position:fixed;top:30px;right:40px;width:35vw;height:auto;z-index:1050}.messagezone .pretrace{white-space:pre-wrap;font-family:monospace;font-size:.7rem}\n"] }]
|
|
54
|
+
}], ctorParameters: function () { return [{ type: i1.DataMessageService }]; }, propDecorators: { filter: [{
|
|
55
|
+
type: Input
|
|
56
|
+
}] } });
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS16b25lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEvc3JjL2xpYi9tZXNzYWdlcy9tZXNzYWdlLXpvbmUvbWVzc2FnZS16b25lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEvc3JjL2xpYi9tZXNzYWdlcy9tZXNzYWdlLXpvbmUvbWVzc2FnZS16b25lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFMUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7O0FBc0J6RSxNQUFNLE9BQU8sb0JBQW9CO0lBSy9CLFlBQW1CLFFBQTRCO1FBQTVCLGFBQVEsR0FBUixRQUFRLENBQW9CO1FBSHhDLFlBQU8sR0FBYyxFQUFFLENBQUM7UUFDdkIsb0JBQWUsR0FBRyxJQUFJLGFBQWEsRUFBUSxDQUFDO0lBRUYsQ0FBQztJQUU1QyxRQUFRO1FBQ2IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPO2FBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2FBQ3JDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xDLENBQUM7O2lIQWxCVSxvQkFBb0I7cUdBQXBCLG9CQUFvQiw4RkFkcEIsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLDBCQ2JsQyx1ZEFNTSxpT0RNTSxZQUFZLGtQQUVWO1FBQ1YsT0FBTyxDQUFDLFlBQVksRUFBRTtZQUNwQixVQUFVLENBQUMsV0FBVyxFQUFFO2dCQUN0QixLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQ3JCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDcEMsQ0FBQztZQUNGLFVBQVUsQ0FBQyxXQUFXLEVBQUU7Z0JBQ3RCLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQztnQkFDdkIsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUNwQyxDQUFDO1NBQ0gsQ0FBQztLQUNIOzJGQUVVLG9CQUFvQjtrQkFwQmhDLFNBQVM7K0JBQ0UsbUJBQW1CLGNBR2pCLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyxhQUNaLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxjQUNwQjt3QkFDVixPQUFPLENBQUMsWUFBWSxFQUFFOzRCQUNwQixVQUFVLENBQUMsV0FBVyxFQUFFO2dDQUN0QixLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0NBQ3JCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7NkJBQ3BDLENBQUM7NEJBQ0YsVUFBVSxDQUFDLFdBQVcsRUFBRTtnQ0FDdEIsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDO2dDQUN2QixPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDOzZCQUNwQyxDQUFDO3lCQUNILENBQUM7cUJBQ0g7eUdBR2UsTUFBTTtzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBhbmltYXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgRGF0YU1lc3NhZ2VTZXJ2aWNlLCBNZXNzYWdlIH0gZnJvbSAnLi4vbWVzc2FnZS5zZXJ2aWNlJztcbmltcG9ydCB7IFJlcGxheVN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IHByb3ZpZGVBbmltYXRpb25zIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlci9hbmltYXRpb25zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGF0YS1tZXNzYWdlLXpvbmUnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWVzc2FnZS16b25lLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWVzc2FnZS16b25lLmNvbXBvbmVudC5zYXNzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBwcm92aWRlcnM6IFtwcm92aWRlQW5pbWF0aW9ucygpXSxcbiAgYW5pbWF0aW9uczogW1xuICAgIHRyaWdnZXIoJ2Rpc3BTdGF0dXMnLCBbXG4gICAgICB0cmFuc2l0aW9uKCd2b2lkID0+IConLCBbXG4gICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCB9KSxcbiAgICAgICAgYW5pbWF0ZSg1NTAsIHN0eWxlKHsgb3BhY2l0eTogMSB9KSksXG4gICAgICBdKSxcbiAgICAgIHRyYW5zaXRpb24oJyogPT4gdm9pZCcsIFtcbiAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAnKicgfSksXG4gICAgICAgIGFuaW1hdGUoNTUwLCBzdHlsZSh7IG9wYWNpdHk6IDAgfSkpLFxuICAgICAgXSksXG4gICAgXSksXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE1lc3NhZ2Vab25lQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBwdWJsaWMgZmlsdGVyPzogc3RyaW5nO1xuICBwdWJsaWMgY3VycmVudDogTWVzc2FnZVtdID0gW107XG4gIHByaXZhdGUgX3N1YnNjcmlwdGlvbnMkID0gbmV3IFJlcGxheVN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgbWVzc2FnZXM6IERhdGFNZXNzYWdlU2VydmljZSkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5tZXNzYWdlcy5jdXJyZW50XG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fc3Vic2NyaXB0aW9ucyQpKVxuICAgICAgLnN1YnNjcmliZSgobWVzc2FnZXMpID0+IHtcbiAgICAgICAgdGhpcy5jdXJyZW50ID0gbWVzc2FnZXM7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zJC5uZXh0KCk7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucyQuY29tcGxldGUoKTtcbiAgfVxufVxuIiwiXG48ZGl2IGNsYXNzPVwibWVzc2FnZXpvbmVcIj5cbiAgPGRpdiBjbGFzcz1cImFsZXJ0XCIgKm5nRm9yPVwibGV0IG1lc3NhZ2Ugb2YgY3VycmVudFwiIFtAZGlzcFN0YXR1c109XCJtZXNzYWdlLnN0YXR1c1wiIFtjbGFzc109XCJtZXNzYWdlLnN0eWxlXCIgKGNsaWNrKT1cIm1lc3NhZ2Uuc2hvd1RyYWNlPSFtZXNzYWdlLnNob3dUcmFjZVwiPlxuICAgIDxidXR0b24gY2xhc3M9XCJidG4tY2xvc2VcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm1lc3NhZ2VzLmFjayhtZXNzYWdlKVwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiPjwvYnV0dG9uPjxzdHJvbmc+e3ttZXNzYWdlLnRpdGxlfX08L3N0cm9uZz4mbmJzcDsge3ttZXNzYWdlLm1lc3NhZ2V9fVxuICAgIDxkaXYgY2xhc3M9XCJwcmV0cmFjZVwiICpuZ0lmPVwibWVzc2FnZS5zaG93VHJhY2VcIj57e21lc3NhZ2UudHJhY2V9fTwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PiJdfQ==
|