@solidev/data 0.4.8 → 0.5.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.
Files changed (91) hide show
  1. package/fesm2022/solidev-data.mjs +158 -157
  2. package/fesm2022/solidev-data.mjs.map +1 -1
  3. package/lib/modellist/model-list-fields/model-list-field-header/model-list-field-header.component.d.ts +2 -2
  4. package/package.json +5 -7
  5. package/esm2022/lib/auth/auth-interceptor.service.mjs +0 -113
  6. package/esm2022/lib/auth/auth.service.mjs +0 -216
  7. package/esm2022/lib/auth/jwt.mjs +0 -21
  8. package/esm2022/lib/data/data-backend.mjs +0 -162
  9. package/esm2022/lib/data/data-collection.mjs +0 -125
  10. package/esm2022/lib/data/data-collection.mock.mjs +0 -39
  11. package/esm2022/lib/data/data-model.mjs +0 -291
  12. package/esm2022/lib/data/data-parameters.mjs +0 -34
  13. package/esm2022/lib/data/data-query.mjs +0 -154
  14. package/esm2022/lib/data/data-query.mock.mjs +0 -46
  15. package/esm2022/lib/data/fields/base.mjs +0 -144
  16. package/esm2022/lib/data/fields/boolean.mjs +0 -38
  17. package/esm2022/lib/data/fields/computed.mjs +0 -10
  18. package/esm2022/lib/data/fields/datetime.mjs +0 -167
  19. package/esm2022/lib/data/fields/index.mjs +0 -8
  20. package/esm2022/lib/data/fields/numbers.mjs +0 -38
  21. package/esm2022/lib/data/fields/primaryfield.mjs +0 -9
  22. package/esm2022/lib/data/fields/relations.mjs +0 -53
  23. package/esm2022/lib/data/fields/stringfields.mjs +0 -71
  24. package/esm2022/lib/dispedit/choice.pipe.mjs +0 -79
  25. package/esm2022/lib/dispedit/dispedit/dispedit.component.mjs +0 -480
  26. package/esm2022/lib/dispedit/dispedit/dispedit.constants.mjs +0 -2
  27. package/esm2022/lib/dispedit/factor.pipe.mjs +0 -81
  28. package/esm2022/lib/dispedit/factorc.pipe.mjs +0 -99
  29. package/esm2022/lib/dispedit/fkselect/fkselect.component.mjs +0 -139
  30. package/esm2022/lib/dispedit/flags/flags.component.mjs +0 -137
  31. package/esm2022/lib/dispedit/m2mselect/m2mselect.component.mjs +0 -312
  32. package/esm2022/lib/dispedit/richedit/richedit.component.mjs +0 -126
  33. package/esm2022/lib/dispedit/sdelete/sdelete.component.mjs +0 -103
  34. package/esm2022/lib/messages/message-zone/message-zone.component.mjs +0 -53
  35. package/esm2022/lib/messages/message.service.mjs +0 -151
  36. package/esm2022/lib/modellist/model-list-fields/model-list-field-header/messages.mjs +0 -2
  37. package/esm2022/lib/modellist/model-list-fields/model-list-field-header/model-list-field-header.component.mjs +0 -61
  38. package/esm2022/lib/modellist/model-list-fields/model-list-fields-selector/model-list-fields-selector.component.mjs +0 -64
  39. package/esm2022/lib/modellist/model-list-fields/model-list-fields.mjs +0 -273
  40. package/esm2022/lib/modellist/model-list-filters/filters/filtertypes.mjs +0 -3
  41. package/esm2022/lib/modellist/model-list-filters/filters/model-list-autocomplete-filter/model-list-autocomplete-filter.component.mjs +0 -109
  42. package/esm2022/lib/modellist/model-list-filters/filters/model-list-autocomplete-filter/model-list-autocomplete-filter.mjs +0 -28
  43. package/esm2022/lib/modellist/model-list-filters/filters/model-list-autocomplete-multi-filter/model-list-autocomplete-multi-filter.component.mjs +0 -29
  44. package/esm2022/lib/modellist/model-list-filters/filters/model-list-autocomplete-multi-filter/model-list-autocomplete-multi-filter.mjs +0 -9
  45. package/esm2022/lib/modellist/model-list-filters/filters/model-list-date-filter/model-list-date-filter.component.mjs +0 -40
  46. package/esm2022/lib/modellist/model-list-filters/filters/model-list-date-filter/model-list-date-filter.mjs +0 -14
  47. package/esm2022/lib/modellist/model-list-filters/filters/model-list-datetime-filter/model-list-datetime-filter.component.mjs +0 -40
  48. package/esm2022/lib/modellist/model-list-filters/filters/model-list-datetime-filter/model-list-datetime-filter.mjs +0 -14
  49. package/esm2022/lib/modellist/model-list-filters/filters/model-list-datetimerange-filter/model-list-datetime-range-filter.component.mjs +0 -21
  50. package/esm2022/lib/modellist/model-list-filters/filters/model-list-datetimerange-filter/model-list-datetimerange-filter.mjs +0 -14
  51. package/esm2022/lib/modellist/model-list-filters/filters/model-list-flags-filter/model-list-flags-filter.component.mjs +0 -49
  52. package/esm2022/lib/modellist/model-list-filters/filters/model-list-flags-filter/model-list-flags-filter.mjs +0 -23
  53. package/esm2022/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/adapters/ban.mjs +0 -24
  54. package/esm2022/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/model-list-geodistance-filter.component.mjs +0 -63
  55. package/esm2022/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/model-list-geodistance-filter.mjs +0 -16
  56. package/esm2022/lib/modellist/model-list-filters/filters/model-list-number-filter/model-list-number-filter.component.mjs +0 -46
  57. package/esm2022/lib/modellist/model-list-filters/filters/model-list-number-filter/model-list-number-filter.mjs +0 -49
  58. package/esm2022/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.component.mjs +0 -56
  59. package/esm2022/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.mjs +0 -40
  60. package/esm2022/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.component.mjs +0 -51
  61. package/esm2022/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.mjs +0 -21
  62. package/esm2022/lib/modellist/model-list-filters/filters/model-list-text-filter/model-list-text-filter.component.mjs +0 -40
  63. package/esm2022/lib/modellist/model-list-filters/filters/model-list-text-filter/model-list-text-filter.mjs +0 -17
  64. package/esm2022/lib/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.component.mjs +0 -174
  65. package/esm2022/lib/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.mjs +0 -18
  66. package/esm2022/lib/modellist/model-list-filters/model-list-filter-group.mjs +0 -19
  67. package/esm2022/lib/modellist/model-list-filters/model-list-filter.mjs +0 -157
  68. package/esm2022/lib/modellist/model-list-filters/model-list-filters/model-list-filters.component.mjs +0 -50
  69. package/esm2022/lib/modellist/model-list-filters/model-list-filters-select/model-list-filters-select.component.mjs +0 -51
  70. package/esm2022/lib/modellist/model-list-filters/model-list-filters.mjs +0 -134
  71. package/esm2022/lib/modellist/model-list-paginator/model-list-paginator/model-list-paginator.component.mjs +0 -69
  72. package/esm2022/lib/modellist/model-list-paginator/model-list-paginator.mjs +0 -47
  73. package/esm2022/lib/modellist/model-list-sorter/model-list-sorter/model-list-sorter.component.mjs +0 -49
  74. package/esm2022/lib/modellist/model-list-sorter/model-list-sorter.mjs +0 -116
  75. package/esm2022/lib/modellist/model-list.service.mjs +0 -168
  76. package/esm2022/lib/routing/breadcrumb/breadcrumb.component.mjs +0 -138
  77. package/esm2022/lib/routing/routing.mjs +0 -57
  78. package/esm2022/lib/updates/update/update.component.mjs +0 -17
  79. package/esm2022/lib/updates/update.service.mjs +0 -58
  80. package/esm2022/lib/uploader/index.mjs +0 -6
  81. package/esm2022/lib/uploader/interfaces.mjs +0 -8
  82. package/esm2022/lib/uploader/ng-file-drop.directive.mjs +0 -81
  83. package/esm2022/lib/uploader/ng-file-select.directive.mjs +0 -51
  84. package/esm2022/lib/uploader/ngx-uploader.class.mjs +0 -308
  85. package/esm2022/lib/uploader/ngx-uploader.module.mjs +0 -17
  86. package/esm2022/lib/utils/slugify.mjs +0 -16
  87. package/esm2022/lib/utils/tab-memory.service.mjs +0 -80
  88. package/esm2022/lib/utils/template.mjs +0 -72
  89. package/esm2022/public-api.mjs +0 -56
  90. package/esm2022/solidev-data.mjs +0 -5
  91. package/solidev-data-0.4.8.tgz +0 -0
@@ -1,103 +0,0 @@
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 "../../messages/message.service";
8
- import * as i3 from "@angular/common";
9
- export class SafeDeleteComponent {
10
- constructor(_ofc, _msgs) {
11
- this._ofc = _ofc;
12
- this._msgs = _msgs;
13
- /** Translations of database objects names to human names */
14
- this.checks = {};
15
- /** Messages to be displayed on success or error, default messages are used if not provided */
16
- this.messages = {};
17
- /** Event emitted on successful deletion */
18
- this.deleted = new EventEmitter();
19
- /** Display mode, default is button.
20
- *
21
- * - `fbutton`: floating button (small)
22
- * - `button`: button (small), with text taken from ng-content (no space around icon to allow empty buttons)
23
- * - `icon`: icon
24
- * - `custom`: custom : ng-content is surrounded by a clickable div
25
- * */
26
- this.display = 'button';
27
- }
28
- async checkDelete(model) {
29
- const service = this.service || this.model._collection;
30
- if (service) {
31
- try {
32
- this.result = await firstValueFrom(service.delete(this.model, { params: { doit: 'no' } }));
33
- this.ofc = this._ofc.open(this._dialogRef, {
34
- position: 'end',
35
- });
36
- }
37
- catch (e) {
38
- console.error(e);
39
- if (this.messages.error) {
40
- this._msgs.error(this.messages.error, e.error?.message || e.message || '');
41
- }
42
- }
43
- }
44
- }
45
- async reallyDelete() {
46
- if (this.actionFn) {
47
- const res = await this.actionFn(this.model);
48
- if (res.success && this.messages.success) {
49
- this._msgs.success(this.messages.success);
50
- }
51
- else if (!res.success && this.messages.error) {
52
- this._msgs.error(this.messages.error);
53
- }
54
- this.ofc?.close();
55
- if (res.success) {
56
- this.deleted.emit(this.result);
57
- }
58
- }
59
- else {
60
- const service = this.service || this.model._collection;
61
- if (service) {
62
- try {
63
- this.result = await firstValueFrom(service.delete(this.model, { params: { doit: 'really' } }));
64
- if (this.messages.success) {
65
- this._msgs.success(this.messages.success);
66
- }
67
- this.ofc?.close();
68
- this.deleted.emit(this.result);
69
- }
70
- catch (e) {
71
- console.error(e);
72
- if (this.messages.error) {
73
- this._msgs.error(this.messages.error, e.error?.message || e.message || '');
74
- }
75
- }
76
- }
77
- }
78
- }
79
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: SafeDeleteComponent, deps: [{ token: i1.NgbOffcanvas }, { token: i2.DataMessageService }], target: i0.ɵɵFactoryTarget.Component }); }
80
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.5", type: SafeDeleteComponent, isStandalone: true, selector: "data-safe-delete", inputs: { model: "model", service: "service", actionFn: "actionFn", checks: "checks", messages: "messages", 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<ng-template #contentTpl>\n <ng-content></ng-content>\n</ng-template>\n<button class=\"btn btn-sm btn-danger\" (click)=\"checkDelete(model)\" *ngIf=\"display==='button'\"><i class=\"bi bi-trash\"></i>\n <ng-container *ngTemplateOutlet=\"contentTpl\"></ng-container>\n</button>\n<button class=\"btn btn-sm btn-outline-danger float-end\" (click)=\"checkDelete(model)\" *ngIf=\"display==='fbutton'\"><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-container *ngTemplateOutlet=\"contentTpl\"></ng-container>\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: NgbOffcanvasModule }] }); }
81
- }
82
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: SafeDeleteComponent, decorators: [{
83
- type: Component,
84
- 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<ng-template #contentTpl>\n <ng-content></ng-content>\n</ng-template>\n<button class=\"btn btn-sm btn-danger\" (click)=\"checkDelete(model)\" *ngIf=\"display==='button'\"><i class=\"bi bi-trash\"></i>\n <ng-container *ngTemplateOutlet=\"contentTpl\"></ng-container>\n</button>\n<button class=\"btn btn-sm btn-outline-danger float-end\" (click)=\"checkDelete(model)\" *ngIf=\"display==='fbutton'\"><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-container *ngTemplateOutlet=\"contentTpl\"></ng-container>\n</div>" }]
85
- }], ctorParameters: () => [{ type: i1.NgbOffcanvas }, { type: i2.DataMessageService }], propDecorators: { model: [{
86
- type: Input
87
- }], service: [{
88
- type: Input
89
- }], actionFn: [{
90
- type: Input
91
- }], checks: [{
92
- type: Input
93
- }], messages: [{
94
- type: Input
95
- }], deleted: [{
96
- type: Output
97
- }], display: [{
98
- type: Input
99
- }], _dialogRef: [{
100
- type: ViewChild,
101
- args: ['dialog', { static: true }]
102
- }] } });
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2RlbGV0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvZGlzcGVkaXQvc2RlbGV0ZS9zZGVsZXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEvc3JjL2xpYi9kaXNwZWRpdC9zZGVsZXRlL3NkZWxldGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBRUwsa0JBQWtCLEdBRW5CLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7OztBQWUvQyxNQUFNLE9BQU8sbUJBQW1CO0lBMkI5QixZQUNVLElBQWtCLEVBQ2xCLEtBQXlCO1FBRHpCLFNBQUksR0FBSixJQUFJLENBQWM7UUFDbEIsVUFBSyxHQUFMLEtBQUssQ0FBb0I7UUF0Qm5DLDREQUE0RDtRQUM1QyxXQUFNLEdBQWdDLEVBQUUsQ0FBQztRQUN6RCw4RkFBOEY7UUFDOUUsYUFBUSxHQUF5QyxFQUFFLENBQUM7UUFDcEUsMkNBQTJDO1FBQzFCLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBb0IsQ0FBQztRQUNoRTs7Ozs7O2FBTUs7UUFDVyxZQUFPLEdBQTZDLFFBQVEsQ0FBQztJQVUxRSxDQUFDO0lBRUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFnQjtRQUN2QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDO1FBQ3ZELElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixJQUFJLENB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QUFLLENBQ2QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQ2xCLENBQVMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxJQUFLLENBQVMsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUN0RCxDQUFDO29CQUNKLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQzs4R0ExRlUsbUJBQW1CO2tHQUFuQixtQkFBbUIsbVdDL0JoQyxtZ0VBdUNNLHlERFZNLFlBQVksc2FBQUUsa0JBQWtCOzsyRkFFL0IsbUJBQW1CO2tCQVAvQixTQUFTOytCQUNFLGtCQUFrQixjQUdoQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsa0JBQWtCLENBQUM7a0hBSTNCLEtBQUs7c0JBQXBCLEtBQUs7Z0JBRVUsT0FBTztzQkFBdEIsS0FBSztnQkFFVSxRQUFRO3NCQUF2QixLQUFLO2dCQUVVLE1BQU07c0JBQXJCLEtBQUs7Z0JBRVUsUUFBUTtzQkFBdkIsS0FBSztnQkFFVyxPQUFPO3NCQUF2QixNQUFNO2dCQVFTLE9BQU87c0JBQXRCLEtBQUs7Z0JBSUUsVUFBVTtzQkFEakIsU0FBUzt1QkFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRhTW9kZWwgfSBmcm9tICcuLi8uLi9kYXRhL2RhdGEtbW9kZWwnO1xuaW1wb3J0IHsgQ29sbGVjdGlvbiB9IGZyb20gJy4uLy4uL2RhdGEvZGF0YS1jb2xsZWN0aW9uJztcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBOZ2JPZmZjYW52YXMsXG4gIE5nYk9mZmNhbnZhc01vZHVsZSxcbiAgTmdiT2ZmY2FudmFzUmVmLFxufSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRGF0YU1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vbWVzc2FnZXMvbWVzc2FnZS5zZXJ2aWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBGYWtlRGVsZXRlUmVzdWx0IHtcbiAgY291bnQ6IG51bWJlcjtcbiAgZGV0YWlsczogW3N0cmluZywgbnVtYmVyXVtdO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkYXRhLXNhZmUtZGVsZXRlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NkZWxldGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZGVsZXRlLmNvbXBvbmVudC5zYXNzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE5nYk9mZmNhbnZhc01vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIFNhZmVEZWxldGVDb21wb25lbnQ8VCBleHRlbmRzIERhdGFNb2RlbD4ge1xuICAvKiogTW9kZWwgaW5zdGFuY2UgdG8gYmUgZGVsZXRlZCAqL1xuICBASW5wdXQoKSBwdWJsaWMgbW9kZWwhOiBUO1xuICAvKiogU2VydmljZSB0byBiZSB1c2VkIGZvciBkZWxldGlvbiwgdGFrZW4gZnJvbSBtb2RlbCBpZiBub3QgcHJvdmlkZWQgKi9cbiAgQElucHV0KCkgcHVibGljIHNlcnZpY2U/OiBDb2xsZWN0aW9uPFQ+O1xuICAvKiogRnVuY3Rpb24gdG8gYmUgY2FsbGVkIGZvciBkZWxldGlvbiwgb3ZlcnJpZGVzIHNlcnZpY2UgZGVsZXRpb24gKi9cbiAgQElucHV0KCkgcHVibGljIGFjdGlvbkZuPzogKG1vZGVsOiBUKSA9PiBQcm9taXNlPHsgc3VjY2VzczogYm9vbGVhbiB9PjtcbiAgLyoqIFRyYW5zbGF0aW9ucyBvZiBkYXRhYmFzZSBvYmplY3RzIG5hbWVzIHRvIGh1bWFuIG5hbWVzICovXG4gIEBJbnB1dCgpIHB1YmxpYyBjaGVja3M6IHsgW2luZGV4OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuICAvKiogTWVzc2FnZXMgdG8gYmUgZGlzcGxheWVkIG9uIHN1Y2Nlc3Mgb3IgZXJyb3IsIGRlZmF1bHQgbWVzc2FnZXMgYXJlIHVzZWQgaWYgbm90IHByb3ZpZGVkICovXG4gIEBJbnB1dCgpIHB1YmxpYyBtZXNzYWdlczogeyBzdWNjZXNzPzogc3RyaW5nOyBlcnJvcj86IHN0cmluZyB9ID0ge307XG4gIC8qKiBFdmVudCBlbWl0dGVkIG9uIHN1Y2Nlc3NmdWwgZGVsZXRpb24gKi9cbiAgQE91dHB1dCgpIHB1YmxpYyBkZWxldGVkID0gbmV3IEV2ZW50RW1pdHRlcjxGYWtlRGVsZXRlUmVzdWx0PigpO1xuICAvKiogRGlzcGxheSBtb2RlLCBkZWZhdWx0IGlzIGJ1dHRvbi5cbiAgICpcbiAgICogLSBgZmJ1dHRvbmA6IGZsb2F0aW5nIGJ1dHRvbiAoc21hbGwpXG4gICAqIC0gYGJ1dHRvbmA6IGJ1dHRvbiAoc21hbGwpLCB3aXRoIHRleHQgdGFrZW4gZnJvbSBuZy1jb250ZW50IChubyBzcGFjZSBhcm91bmQgaWNvbiB0byBhbGxvdyBlbXB0eSBidXR0b25zKVxuICAgKiAtIGBpY29uYDogaWNvblxuICAgKiAtIGBjdXN0b21gOiBjdXN0b20gOiBuZy1jb250ZW50IGlzIHN1cnJvdW5kZWQgYnkgYSBjbGlja2FibGUgZGl2XG4gICAqICovXG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNwbGF5OiAnZmJ1dHRvbicgfCAnYnV0dG9uJyB8ICdpY29uJyB8ICdjdXN0b20nID0gJ2J1dHRvbic7XG5cbiAgcHVibGljIHJlc3VsdD86IEZha2VEZWxldGVSZXN1bHQ7XG4gIEBWaWV3Q2hpbGQoJ2RpYWxvZycsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHByaXZhdGUgX2RpYWxvZ1JlZj86IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBwcml2YXRlIG9mYz86IE5nYk9mZmNhbnZhc1JlZjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9vZmM6IE5nYk9mZmNhbnZhcyxcbiAgICBwcml2YXRlIF9tc2dzOiBEYXRhTWVzc2FnZVNlcnZpY2UsXG4gICkge31cblxuICBwdWJsaWMgYXN5bmMgY2hlY2tEZWxldGUobW9kZWw6IERhdGFNb2RlbCkge1xuICAgIGNvbnN0IHNlcnZpY2UgPSB0aGlzLnNlcnZpY2UgfHwgdGhpcy5tb2RlbC5fY29sbGVjdGlvbjtcbiAgICBpZiAoc2VydmljZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5yZXN1bHQgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShcbiAgICAgICAgICBzZXJ2aWNlLmRlbGV0ZSh0aGlzLm1vZGVsLCB7IHBhcmFtczogeyBkb2l0OiAnbm8nIH0gfSksXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5vZmMgPSB0aGlzLl9vZmMub3Blbih0aGlzLl9kaWFsb2dSZWYsIHtcbiAgICAgICAgICBwb3NpdGlvbjogJ2VuZCcsXG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICBpZiAodGhpcy5tZXNzYWdlcy5lcnJvcikge1xuICAgICAgICAgIHRoaXMuX21zZ3MuZXJyb3IoXG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VzLmVycm9yLFxuICAgICAgICAgICAgKGUgYXMgYW55KS5lcnJvcj8ubWVzc2FnZSB8fCAoZSBhcyBhbnkpLm1lc3NhZ2UgfHwgJycsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyByZWFsbHlEZWxldGUoKSB7XG4gICAgaWYgKHRoaXMuYWN0aW9uRm4pIHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuYWN0aW9uRm4odGhpcy5tb2RlbCk7XG4gICAgICBpZiAocmVzLnN1Y2Nlc3MgJiYgdGhpcy5tZXNzYWdlcy5zdWNjZXNzKSB7XG4gICAgICAgIHRoaXMuX21zZ3Muc3VjY2Vzcyh0aGlzLm1lc3NhZ2VzLnN1Y2Nlc3MpO1xuICAgICAgfSBlbHNlIGlmICghcmVzLnN1Y2Nlc3MgJiYgdGhpcy5tZXNzYWdlcy5lcnJvcikge1xuICAgICAgICB0aGlzLl9tc2dzLmVycm9yKHRoaXMubWVzc2FnZXMuZXJyb3IpO1xuICAgICAgfVxuICAgICAgdGhpcy5vZmM/LmNsb3NlKCk7XG4gICAgICBpZiAocmVzLnN1Y2Nlc3MpIHtcbiAgICAgICAgdGhpcy5kZWxldGVkLmVtaXQodGhpcy5yZXN1bHQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzZXJ2aWNlID0gdGhpcy5zZXJ2aWNlIHx8IHRoaXMubW9kZWwuX2NvbGxlY3Rpb247XG4gICAgICBpZiAoc2VydmljZSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRoaXMucmVzdWx0ID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICAgICAgICBzZXJ2aWNlLmRlbGV0ZSh0aGlzLm1vZGVsLCB7IHBhcmFtczogeyBkb2l0OiAncmVhbGx5JyB9IH0pLFxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKHRoaXMubWVzc2FnZXMuc3VjY2Vzcykge1xuICAgICAgICAgICAgdGhpcy5fbXNncy5zdWNjZXNzKHRoaXMubWVzc2FnZXMuc3VjY2Vzcyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMub2ZjPy5jbG9zZSgpO1xuICAgICAgICAgIHRoaXMuZGVsZXRlZC5lbWl0KHRoaXMucmVzdWx0KTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgICAgaWYgKHRoaXMubWVzc2FnZXMuZXJyb3IpIHtcbiAgICAgICAgICAgIHRoaXMuX21zZ3MuZXJyb3IoXG4gICAgICAgICAgICAgIHRoaXMubWVzc2FnZXMuZXJyb3IsXG4gICAgICAgICAgICAgIChlIGFzIGFueSkuZXJyb3I/Lm1lc3NhZ2UgfHwgKGUgYXMgYW55KS5tZXNzYWdlIHx8ICcnLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIlxuPG5nLXRlbXBsYXRlICNkaWFsb2cgbGV0LW9mZmNhbnZhcz5cbiAgPGRpdiBjbGFzcz1cIm9mZmNhbnZhcy1oZWFkZXJcIj5cbiAgICA8aDIgY2xhc3M9XCJvZmZjYW52YXMtdGl0bGUgdGV4dC1kYW5nZXIgdGV4dC1jZW50ZXJcIj48aSBjbGFzcz1cImJpIGJpLXRyYXNoIG1lLTJcIj48L2k+U3VwcHJpbWVyIHLDqWVsbGVtZW50ID8/PC9oMj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJvZmZjYW52YXMtYm9keSB0ZXh0LWRhbmdlclwiICpuZ0lmPVwicmVzdWx0XCI+XG4gICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIG15LTQgZnMtMVwiPjxpIGNsYXNzPVwiYmkgYmktZXhjbGFtYXRpb24tZGlhbW9uZCBteS01XCI+PC9pPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJmcy00XCI+XG4gICAgICA8cD5MYSBzdXBwcmVzc2lvbiBkZSBjZXQgw6lsw6ltZW50IHN1cHByaW1lcmEge3tyZXN1bHQuY291bnR9fSDDqWzDqW1lbnRzIGRhbnMgbGEgYmFzZSBkZSBkb25uw6llcy4uPC9wPlxuICAgIDwvZGl2PlxuICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLXNtIHRhYmxlLXN0cmlwZWQgdGFibGUtZGFuZ2VyXCI+XG4gICAgICA8dGhlYWQ+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGg+VHlwZSBkJ8OpbMOpbWVudDwvdGg+XG4gICAgICAgICAgPHRoPk5vbWJyZTwvdGg+XG4gICAgICAgIDwvdHI+XG4gICAgICA8L3RoZWFkPlxuICAgICAgPHRib2R5PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBybCBvZiByZXN1bHQuZGV0YWlsc1wiPlxuICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgIDx0ZD57e2NoZWNrc1tybFswXV0gPyBjaGVja3NbcmxbMF1dIDogcmxbMF19fTwvdGQ+XG4gICAgICAgICAgICA8dGQ+e3tybFsxXX19PC90ZD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvdGJvZHk+XG4gICAgPC90YWJsZT5cbiAgICA8YnV0dG9uIGNsYXNzPVwidy0xMDAgYnRuIGJ0bi1sZyBidG4tZGFuZ2VyXCIgKGNsaWNrKT1cInJlYWxseURlbGV0ZSgpXCI+PGkgY2xhc3M9XCJiaSBiaS10cmFzaCBtZS0yXCI+PC9pPkplIGNvbmZpcm1lIGxhIHN1cHByZXNzaW9uPC9idXR0b24+XG4gICAgPGJ1dHRvbiBjbGFzcz1cInctMTAwIGJ0biBidG4tb3V0bGluZS1zZWNvbmRhcnkgbXktM1wiIChjbGljayk9XCJvZmZjYW52YXMuY2xvc2UoKVwiPjxpIGNsYXNzPVwiYmkgYmktZG9vci1vcGVuIG1lLTJcIj48L2k+SmUgcmVub25jZSDDoCBsYSBzdXBwcmVzc2lvbjwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2NvbnRlbnRUcGw+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG48YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tZGFuZ2VyXCIgKGNsaWNrKT1cImNoZWNrRGVsZXRlKG1vZGVsKVwiICpuZ0lmPVwiZGlzcGxheT09PSdidXR0b24nXCI+PGkgY2xhc3M9XCJiaSBiaS10cmFzaFwiPjwvaT5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRUcGxcIj48L25nLWNvbnRhaW5lcj5cbjwvYnV0dG9uPlxuPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtZGFuZ2VyIGZsb2F0LWVuZFwiIChjbGljayk9XCJjaGVja0RlbGV0ZShtb2RlbClcIiAqbmdJZj1cImRpc3BsYXk9PT0nZmJ1dHRvbidcIj48aSBjbGFzcz1cImJpIGJpLXRyYXNoIG14LTJcIj48L2k+PC9idXR0b24+PGkgY2xhc3M9XCJiaSBiaS10cmFzaCBteC0yXCIgKGNsaWNrKT1cImNoZWNrRGVsZXRlKG1vZGVsKVwiICpuZ0lmPVwiZGlzcGxheT09PSdpY29uJ1wiIHJvbGU9XCJidXR0b25cIj48L2k+XG48ZGl2IChjbGljayk9XCJjaGVja0RlbGV0ZShtb2RlbClcIiAqbmdJZj1cImRpc3BsYXk9PT0nY3VzdG9tJ1wiIHJvbGU9XCJidXR0b25cIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRUcGxcIj48L25nLWNvbnRhaW5lcj5cbjwvZGl2PiJdfQ==
@@ -1,53 +0,0 @@
1
- import { Component, DestroyRef, inject, Input } from '@angular/core';
2
- import { animate, style, transition, trigger } from '@angular/animations';
3
- import { CommonModule } from '@angular/common';
4
- import { provideAnimations } from '@angular/platform-browser/animations';
5
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
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.destroy$ = inject(DestroyRef);
14
- }
15
- ngOnInit() {
16
- this.messages.current
17
- .pipe(takeUntilDestroyed(this.destroy$))
18
- .subscribe((messages) => {
19
- this.current = messages;
20
- });
21
- }
22
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: MessageZoneComponent, deps: [{ token: i1.DataMessageService }], target: i0.ɵɵFactoryTarget.Component }); }
23
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.5", 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>&nbsp; {{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: [
24
- trigger('dispStatus', [
25
- transition('void => *', [
26
- style({ opacity: 0 }),
27
- animate(550, style({ opacity: 1 })),
28
- ]),
29
- transition('* => void', [
30
- style({ opacity: '*' }),
31
- animate(550, style({ opacity: 0 })),
32
- ]),
33
- ]),
34
- ] }); }
35
- }
36
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: MessageZoneComponent, decorators: [{
37
- type: Component,
38
- args: [{ selector: 'data-message-zone', standalone: true, imports: [CommonModule], providers: [provideAnimations()], animations: [
39
- trigger('dispStatus', [
40
- transition('void => *', [
41
- style({ opacity: 0 }),
42
- animate(550, style({ opacity: 1 })),
43
- ]),
44
- transition('* => void', [
45
- style({ opacity: '*' }),
46
- animate(550, style({ opacity: 0 })),
47
- ]),
48
- ]),
49
- ], 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>&nbsp; {{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"] }]
50
- }], ctorParameters: () => [{ type: i1.DataMessageService }], propDecorators: { filter: [{
51
- type: Input
52
- }] } });
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS16b25lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEvc3JjL2xpYi9tZXNzYWdlcy9tZXNzYWdlLXpvbmUvbWVzc2FnZS16b25lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEvc3JjL2xpYi9tZXNzYWdlcy9tZXNzYWdlLXpvbmUvbWVzc2FnZS16b25lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7OztBQXNCaEUsTUFBTSxPQUFPLG9CQUFvQjtJQUsvQixZQUFtQixRQUE0QjtRQUE1QixhQUFRLEdBQVIsUUFBUSxDQUFvQjtRQUh4QyxZQUFPLEdBQWMsRUFBRSxDQUFDO1FBQ3ZCLGFBQVEsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFWSxDQUFDO0lBRTVDLFFBQVE7UUFDYixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU87YUFDbEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUN2QyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OEdBYlUsb0JBQW9CO2tHQUFwQixvQkFBb0IsOEZBZHBCLENBQUMsaUJBQWlCLEVBQUUsQ0FBQywwQkNibEMsdWRBTU0saU9ETU0sWUFBWSxrUEFFVjtZQUNWLE9BQU8sQ0FBQyxZQUFZLEVBQUU7Z0JBQ3BCLFVBQVUsQ0FBQyxXQUFXLEVBQUU7b0JBQ3RCLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztvQkFDckIsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztpQkFDcEMsQ0FBQztnQkFDRixVQUFVLENBQUMsV0FBVyxFQUFFO29CQUN0QixLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUM7b0JBQ3ZCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7aUJBQ3BDLENBQUM7YUFDSCxDQUFDO1NBQ0g7OzJGQUVVLG9CQUFvQjtrQkFwQmhDLFNBQVM7K0JBQ0UsbUJBQW1CLGNBR2pCLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyxhQUNaLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxjQUNwQjt3QkFDVixPQUFPLENBQUMsWUFBWSxFQUFFOzRCQUNwQixVQUFVLENBQUMsV0FBVyxFQUFFO2dDQUN0QixLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0NBQ3JCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7NkJBQ3BDLENBQUM7NEJBQ0YsVUFBVSxDQUFDLFdBQVcsRUFBRTtnQ0FDdEIsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDO2dDQUN2QixPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDOzZCQUNwQyxDQUFDO3lCQUNILENBQUM7cUJBQ0g7dUZBR2UsTUFBTTtzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRGVzdHJveVJlZiwgaW5qZWN0LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBhbmltYXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgRGF0YU1lc3NhZ2VTZXJ2aWNlLCBNZXNzYWdlIH0gZnJvbSAnLi4vbWVzc2FnZS5zZXJ2aWNlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBwcm92aWRlQW5pbWF0aW9ucyB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RhdGEtbWVzc2FnZS16b25lJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21lc3NhZ2Utem9uZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21lc3NhZ2Utem9uZS5jb21wb25lbnQuc2FzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgcHJvdmlkZXJzOiBbcHJvdmlkZUFuaW1hdGlvbnMoKV0sXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdkaXNwU3RhdHVzJywgW1xuICAgICAgdHJhbnNpdGlvbigndm9pZCA9PiAqJywgW1xuICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAgfSksXG4gICAgICAgIGFuaW1hdGUoNTUwLCBzdHlsZSh7IG9wYWNpdHk6IDEgfSkpLFxuICAgICAgXSksXG4gICAgICB0cmFuc2l0aW9uKCcqID0+IHZvaWQnLCBbXG4gICAgICAgIHN0eWxlKHsgb3BhY2l0eTogJyonIH0pLFxuICAgICAgICBhbmltYXRlKDU1MCwgc3R5bGUoeyBvcGFjaXR5OiAwIH0pKSxcbiAgICAgIF0pLFxuICAgIF0pLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBNZXNzYWdlWm9uZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHB1YmxpYyBmaWx0ZXI/OiBzdHJpbmc7XG4gIHB1YmxpYyBjdXJyZW50OiBNZXNzYWdlW10gPSBbXTtcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgbWVzc2FnZXM6IERhdGFNZXNzYWdlU2VydmljZSkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5tZXNzYWdlcy5jdXJyZW50XG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKChtZXNzYWdlcykgPT4ge1xuICAgICAgICB0aGlzLmN1cnJlbnQgPSBtZXNzYWdlcztcbiAgICAgIH0pO1xuICB9XG59XG4iLCJcbjxkaXYgY2xhc3M9XCJtZXNzYWdlem9uZVwiPlxuICA8ZGl2IGNsYXNzPVwiYWxlcnRcIiAqbmdGb3I9XCJsZXQgbWVzc2FnZSBvZiBjdXJyZW50XCIgW0BkaXNwU3RhdHVzXT1cIm1lc3NhZ2Uuc3RhdHVzXCIgW2NsYXNzXT1cIm1lc3NhZ2Uuc3R5bGVcIiAoY2xpY2spPVwibWVzc2FnZS5zaG93VHJhY2U9IW1lc3NhZ2Uuc2hvd1RyYWNlXCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1jbG9zZVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwibWVzc2FnZXMuYWNrKG1lc3NhZ2UpXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCI+PC9idXR0b24+PHN0cm9uZz57e21lc3NhZ2UudGl0bGV9fTwvc3Ryb25nPiZuYnNwOyB7e21lc3NhZ2UubWVzc2FnZX19XG4gICAgPGRpdiBjbGFzcz1cInByZXRyYWNlXCIgKm5nSWY9XCJtZXNzYWdlLnNob3dUcmFjZVwiPnt7bWVzc2FnZS50cmFjZX19PC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+Il19
@@ -1,151 +0,0 @@
1
- import { Inject, Injectable, InjectionToken, Optional } from "@angular/core";
2
- import { ReplaySubject, timer } from "rxjs";
3
- import * as i0 from "@angular/core";
4
- export var DEFAULT_TIMEOUTS;
5
- (function (DEFAULT_TIMEOUTS) {
6
- DEFAULT_TIMEOUTS[DEFAULT_TIMEOUTS["SUCCESS"] = 3000] = "SUCCESS";
7
- DEFAULT_TIMEOUTS[DEFAULT_TIMEOUTS["INFO"] = 4000] = "INFO";
8
- DEFAULT_TIMEOUTS[DEFAULT_TIMEOUTS["WARNING"] = 10000] = "WARNING";
9
- DEFAULT_TIMEOUTS[DEFAULT_TIMEOUTS["DANGER"] = 30000] = "DANGER";
10
- })(DEFAULT_TIMEOUTS || (DEFAULT_TIMEOUTS = {}));
11
- export var STATUS;
12
- (function (STATUS) {
13
- STATUS[STATUS["UNDISP"] = 0] = "UNDISP";
14
- STATUS[STATUS["DISP"] = 1] = "DISP";
15
- STATUS[STATUS["ACK"] = 2] = "ACK";
16
- })(STATUS || (STATUS = {}));
17
- const DEFAULT_MESSAGE_TIMEOUT = 5000;
18
- export const DATA_MESSAGE_SOUNDS = new InjectionToken("data.message.sounds");
19
- export class Message {
20
- constructor(title, type = 1 /* TYPE.INFO */, message = "", trace = null, ttl = DEFAULT_MESSAGE_TIMEOUT) {
21
- this.title = title;
22
- this.type = type;
23
- this.message = message;
24
- this.trace = trace;
25
- this.ttl = ttl;
26
- this.status = STATUS[STATUS.UNDISP];
27
- this.showTrace = false;
28
- }
29
- get style() {
30
- if (this.type === 3 /* TYPE.DANGER */) {
31
- return "alert alert-dismissible alert-danger";
32
- }
33
- if (this.type === 1 /* TYPE.INFO */) {
34
- return "alert alert-dismissible alert-info";
35
- }
36
- if (this.type === 2 /* TYPE.WARNING */) {
37
- return "alert alert-dismissible alert-warning";
38
- }
39
- if (this.type === 0 /* TYPE.SUCCESS */) {
40
- return "alert alert-dismissible alert-success";
41
- }
42
- return "alert alert-dismissible alert-success";
43
- }
44
- ack() {
45
- this.status = STATUS[STATUS.ACK];
46
- }
47
- }
48
- export class DataMessageService {
49
- constructor(ngZone, sounds) {
50
- this.ngZone = ngZone;
51
- this.sounds = sounds;
52
- this._messages$ = new ReplaySubject(1);
53
- this._messages = [];
54
- this.init();
55
- }
56
- get current() {
57
- return this._messages$.asObservable();
58
- }
59
- init() {
60
- let changed = false;
61
- if (!this._timer) {
62
- this.ngZone.runOutsideAngular(() => {
63
- this._timer = timer(500, 500);
64
- this._subscription = this._timer.subscribe(() => {
65
- for (const m of this._messages) {
66
- m.ttl -= 500;
67
- if (m.ttl <= 0) {
68
- changed = true;
69
- }
70
- }
71
- if (changed) {
72
- this.ngZone.run(() => {
73
- const out = [];
74
- for (const m of this._messages) {
75
- if (m.ttl >= 0) {
76
- out.push(m);
77
- }
78
- }
79
- this._messages = out;
80
- this._notify();
81
- });
82
- }
83
- });
84
- });
85
- }
86
- }
87
- close() {
88
- this._subscription.unsubscribe();
89
- }
90
- success(title, message = "", trace = null, timeout = DEFAULT_TIMEOUTS.SUCCESS) {
91
- this._messages.push(new Message(title, 0 /* TYPE.SUCCESS */, message, trace, timeout));
92
- this.play("success");
93
- this._notify();
94
- }
95
- info(title, message = "", trace = null, timeout = DEFAULT_TIMEOUTS.INFO) {
96
- this._messages.push(new Message(title, 1 /* TYPE.INFO */, message, trace, timeout));
97
- this.play("info");
98
- this._notify();
99
- }
100
- warning(title, message = "", trace = null, timeout = DEFAULT_TIMEOUTS.WARNING) {
101
- this._messages.push(new Message(title, 2 /* TYPE.WARNING */, message, trace, timeout));
102
- this.play("warning");
103
- this._notify();
104
- }
105
- danger(title, message = "", trace = null, timeout = DEFAULT_TIMEOUTS.DANGER) {
106
- this._messages.push(new Message(title, 3 /* TYPE.DANGER */, message, trace, DEFAULT_TIMEOUTS.DANGER));
107
- this.play("error");
108
- this._notify();
109
- }
110
- error(title, message = "", trace = null) {
111
- this.danger(title, message, trace);
112
- }
113
- debug(title, message = "", trace = null) {
114
- console.log(title, message, trace);
115
- }
116
- ack(message) {
117
- message.ack();
118
- this._notify();
119
- }
120
- play(type = "notify") {
121
- if (this.sounds && this.sounds[type]) {
122
- const audio = new Audio(this.sounds[type]);
123
- audio.play();
124
- }
125
- }
126
- _notify() {
127
- const out = [];
128
- for (const message of this._messages) {
129
- if ((message.status === STATUS[STATUS.UNDISP]) ||
130
- (message.status === STATUS[STATUS.DISP])) {
131
- message.status = STATUS[STATUS.DISP];
132
- out.push(message);
133
- }
134
- }
135
- this._messages$.next(out);
136
- }
137
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: DataMessageService, deps: [{ token: i0.NgZone }, { token: DATA_MESSAGE_SOUNDS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
138
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: DataMessageService, providedIn: "root" }); }
139
- }
140
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: DataMessageService, decorators: [{
141
- type: Injectable,
142
- args: [{
143
- providedIn: "root"
144
- }]
145
- }], ctorParameters: () => [{ type: i0.NgZone }, { type: undefined, decorators: [{
146
- type: Optional
147
- }, {
148
- type: Inject,
149
- args: [DATA_MESSAGE_SOUNDS]
150
- }] }] });
151
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS9zcmMvbGliL21lc3NhZ2VzL21lc3NhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQVUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBYSxhQUFhLEVBQWdCLEtBQUssRUFBQyxNQUFNLE1BQU0sQ0FBQzs7QUFNcEUsTUFBTSxDQUFOLElBQVksZ0JBS1g7QUFMRCxXQUFZLGdCQUFnQjtJQUMxQixnRUFBYyxDQUFBO0lBQ2QsMERBQVcsQ0FBQTtJQUNYLGlFQUFlLENBQUE7SUFDZiwrREFBYyxDQUFBO0FBQ2hCLENBQUMsRUFMVyxnQkFBZ0IsS0FBaEIsZ0JBQWdCLFFBSzNCO0FBRUQsTUFBTSxDQUFOLElBQVksTUFFWDtBQUZELFdBQVksTUFBTTtJQUNoQix1Q0FBTSxDQUFBO0lBQUUsbUNBQUksQ0FBQTtJQUFFLGlDQUFHLENBQUE7QUFDbkIsQ0FBQyxFQUZXLE1BQU0sS0FBTixNQUFNLFFBRWpCO0FBRUQsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLENBQUM7QUFNckMsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxjQUFjLENBQWMscUJBQXFCLENBQUMsQ0FBQztBQUcxRixNQUFNLE9BQU8sT0FBTztJQUlsQixZQUFtQixLQUFhLEVBQ2Isd0JBQXNCLEVBQ3RCLFVBQWtCLEVBQUUsRUFDcEIsUUFBYSxJQUFJLEVBQ2pCLE1BQWMsdUJBQXVCO1FBSnJDLFVBQUssR0FBTCxLQUFLLENBQVE7UUFDYixTQUFJLEdBQUosSUFBSSxDQUFrQjtRQUN0QixZQUFPLEdBQVAsT0FBTyxDQUFhO1FBQ3BCLFVBQUssR0FBTCxLQUFLLENBQVk7UUFDakIsUUFBRyxHQUFILEdBQUcsQ0FBa0M7UUFQakQsV0FBTSxH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QUFDO2dCQUMzQyxPQUFPLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3JDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDcEIsQ0FBQztRQUNILENBQUM7UUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1QixDQUFDOzhHQXRHVSxrQkFBa0Isd0NBT0csbUJBQW1CO2tIQVB4QyxrQkFBa0IsY0FGakIsTUFBTTs7MkZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBUWMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIE5nWm9uZSwgT3B0aW9uYWx9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge09ic2VydmFibGUsIFJlcGxheVN1YmplY3QsIFN1YnNjcmlwdGlvbiwgdGltZXJ9IGZyb20gXCJyeGpzXCI7XG5cbmV4cG9ydCBjb25zdCBlbnVtIFRZUEUge1xuICBTVUNDRVNTLCBJTkZPLCBXQVJOSU5HLCBEQU5HRVJcbn1cblxuZXhwb3J0IGVudW0gREVGQVVMVF9USU1FT1VUUyB7XG4gIFNVQ0NFU1MgPSAzMDAwLFxuICBJTkZPID0gNDAwMCxcbiAgV0FSTklORyA9IDEwMDAwLFxuICBEQU5HRVIgPSAzMDAwMFxufVxuXG5leHBvcnQgZW51bSBTVEFUVVMge1xuICBVTkRJU1AsIERJU1AsIEFDS1xufVxuXG5jb25zdCBERUZBVUxUX01FU1NBR0VfVElNRU9VVCA9IDUwMDA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNvdW5kVHlwZXMge1xuICBbaW5kZXg6IHN0cmluZ106IHN0cmluZ1xufVxuXG5leHBvcnQgY29uc3QgREFUQV9NRVNTQUdFX1NPVU5EUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJU291bmRUeXBlcz4oXCJkYXRhLm1lc3NhZ2Uuc291bmRzXCIpO1xuXG5cbmV4cG9ydCBjbGFzcyBNZXNzYWdlIHtcbiAgcHVibGljIHN0YXR1czogc3RyaW5nID0gU1RBVFVTW1NUQVRVUy5VTkRJU1BdO1xuICBwdWJsaWMgc2hvd1RyYWNlID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHRpdGxlOiBzdHJpbmcsXG4gICAgICAgICAgICAgIHB1YmxpYyB0eXBlOiBUWVBFID0gVFlQRS5JTkZPLFxuICAgICAgICAgICAgICBwdWJsaWMgbWVzc2FnZTogc3RyaW5nID0gXCJcIixcbiAgICAgICAgICAgICAgcHVibGljIHRyYWNlOiBhbnkgPSBudWxsLFxuICAgICAgICAgICAgICBwdWJsaWMgdHRsOiBudW1iZXIgPSBERUZBVUxUX01FU1NBR0VfVElNRU9VVCkge1xuICB9XG5cbiAgcHVibGljIGdldCBzdHlsZSgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnR5cGUgPT09IFRZUEUuREFOR0VSKSB7XG4gICAgICByZXR1cm4gXCJhbGVydCBhbGVydC1kaXNtaXNzaWJsZSBhbGVydC1kYW5nZXJcIjtcbiAgICB9XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gVFlQRS5JTkZPKSB7XG4gICAgICByZXR1cm4gXCJhbGVydCBhbGVydC1kaXNtaXNzaWJsZSBhbGVydC1pbmZvXCI7XG4gICAgfVxuICAgIGlmICh0aGlzLnR5cGUgPT09IFRZUEUuV0FSTklORykge1xuICAgICAgcmV0dXJuIFwiYWxlcnQgYWxlcnQtZGlzbWlzc2libGUgYWxlcnQtd2FybmluZ1wiO1xuICAgIH1cbiAgICBpZiAodGhpcy50eXBlID09PSBUWVBFLlNVQ0NFU1MpIHtcbiAgICAgIHJldHVybiBcImFsZXJ0IGFsZXJ0LWRpc21pc3NpYmxlIGFsZXJ0LXN1Y2Nlc3NcIjtcbiAgICB9XG4gICAgcmV0dXJuIFwiYWxlcnQgYWxlcnQtZGlzbWlzc2libGUgYWxlcnQtc3VjY2Vzc1wiO1xuICB9XG5cbiAgcHVibGljIGFjaygpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXR1cyA9IFNUQVRVU1tTVEFUVVMuQUNLXTtcbiAgfVxufVxuXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogXCJyb290XCJcbn0pXG5leHBvcnQgY2xhc3MgRGF0YU1lc3NhZ2VTZXJ2aWNlIHtcbiAgcHVibGljIF9tZXNzYWdlcyQ6IFJlcGxheVN1YmplY3Q8TWVzc2FnZVtdPiA9IG5ldyBSZXBsYXlTdWJqZWN0PE1lc3NhZ2VbXT4oMSk7XG4gIHByaXZhdGUgX21lc3NhZ2VzOiBNZXNzYWdlW10gPSBbXTtcbiAgcHJpdmF0ZSBfdGltZXIhOiBPYnNlcnZhYmxlPGFueT47XG4gIHByaXZhdGUgX3N1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoREFUQV9NRVNTQUdFX1NPVU5EUykgcHVibGljIHNvdW5kczogSVNvdW5kVHlwZXMpIHtcbiAgICB0aGlzLmluaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY3VycmVudCgpOiBPYnNlcnZhYmxlPE1lc3NhZ2VbXT4ge1xuICAgIHJldHVybiB0aGlzLl9tZXNzYWdlcyQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgaW5pdCgpOiB2b2lkIHtcbiAgICBsZXQgY2hhbmdlZCA9IGZhbHNlO1xuICAgIGlmICghdGhpcy5fdGltZXIpIHtcbiAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgdGhpcy5fdGltZXIgPSB0aW1lcig1MDAsIDUwMCk7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbiA9IHRoaXMuX3RpbWVyLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgZm9yIChjb25zdCBtIG9mIHRoaXMuX21lc3NhZ2VzKSB7XG4gICAgICAgICAgICBtLnR0bCAtPSA1MDA7XG4gICAgICAgICAgICBpZiAobS50dGwgPD0gMCkge1xuICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGNoYW5nZWQpIHtcbiAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IG91dDogTWVzc2FnZVtdID0gW107XG4gICAgICAgICAgICAgIGZvciAoY29uc3QgbSBvZiB0aGlzLl9tZXNzYWdlcykge1xuICAgICAgICAgICAgICAgIGlmIChtLnR0bCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICBvdXQucHVzaChtKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgdGhpcy5fbWVzc2FnZXMgPSBvdXQ7XG4gICAgICAgICAgICAgIHRoaXMuX25vdGlmeSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzdWNjZXNzKHRpdGxlOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZyA9IFwiXCIsIHRyYWNlOiBhbnkgPSBudWxsLCB0aW1lb3V0OiBudW1iZXIgPSBERUZBVUxUX1RJTUVPVVRTLlNVQ0NFU1MpOiB2b2lkIHtcbiAgICB0aGlzLl9tZXNzYWdlcy5wdXNoKG5ldyBNZXNzYWdlKHRpdGxlLCBUWVBFLlNVQ0NFU1MsIG1lc3NhZ2UsIHRyYWNlLCB0aW1lb3V0KSk7XG4gICAgdGhpcy5wbGF5KFwic3VjY2Vzc1wiKTtcbiAgICB0aGlzLl9ub3RpZnkoKTtcbiAgfVxuXG4gIHB1YmxpYyBpbmZvKHRpdGxlOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZyA9IFwiXCIsIHRyYWNlOiBhbnkgPSBudWxsLCB0aW1lb3V0OiBudW1iZXIgPSBERUZBVUxUX1RJTUVPVVRTLklORk8pOiB2b2lkIHtcbiAgICB0aGlzLl9tZXNzYWdlcy5wdXNoKG5ldyBNZXNzYWdlKHRpdGxlLCBUWVBFLklORk8sIG1lc3NhZ2UsIHRyYWNlLCB0aW1lb3V0KSk7XG4gICAgdGhpcy5wbGF5KFwiaW5mb1wiKTtcbiAgICB0aGlzLl9ub3RpZnkoKTtcbiAgfVxuXG4gIHB1YmxpYyB3YXJuaW5nKHRpdGxlOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZyA9IFwiXCIsIHRyYWNlOiBhbnkgPSBudWxsLCB0aW1lb3V0OiBudW1iZXIgPSBERUZBVUxUX1RJTUVPVVRTLldBUk5JTkcpOiB2b2lkIHtcbiAgICB0aGlzLl9tZXNzYWdlcy5wdXNoKG5ldyBNZXNzYWdlKHRpdGxlLCBUWVBFLldBUk5JTkcsIG1lc3NhZ2UsIHRyYWNlLCB0aW1lb3V0KSk7XG4gICAgdGhpcy5wbGF5KFwid2FybmluZ1wiKVxuICAgIHRoaXMuX25vdGlmeSgpO1xuICB9XG5cbiAgcHVibGljIGRhbmdlcih0aXRsZTogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcgPSBcIlwiLCB0cmFjZTogYW55ID0gbnVsbCwgdGltZW91dDogbnVtYmVyID0gREVGQVVMVF9USU1FT1VUUy5EQU5HRVIpOiB2b2lkIHtcbiAgICB0aGlzLl9tZXNzYWdlcy5wdXNoKG5ldyBNZXNzYWdlKHRpdGxlLCBUWVBFLkRBTkdFUiwgbWVzc2FnZSwgdHJhY2UsIERFRkFVTFRfVElNRU9VVFMuREFOR0VSKSk7XG4gICAgdGhpcy5wbGF5KFwiZXJyb3JcIilcbiAgICB0aGlzLl9ub3RpZnkoKTtcbiAgfVxuXG4gIHB1YmxpYyBlcnJvcih0aXRsZTogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcgPSBcIlwiLCB0cmFjZTogYW55ID0gbnVsbCk6IHZvaWQge1xuICAgIHRoaXMuZGFuZ2VyKHRpdGxlLCBtZXNzYWdlLCB0cmFjZSk7XG4gIH1cblxuICBwdWJsaWMgZGVidWcodGl0bGU6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nID0gXCJcIiwgdHJhY2U6IGFueSA9IG51bGwpOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZyh0aXRsZSwgbWVzc2FnZSwgdHJhY2UpO1xuICB9XG5cbiAgcHVibGljIGFjayhtZXNzYWdlOiBNZXNzYWdlKTogdm9pZCB7XG4gICAgbWVzc2FnZS5hY2soKTtcbiAgICB0aGlzLl9ub3RpZnkoKTtcbiAgfVxuXG4gIHB1YmxpYyBwbGF5KHR5cGU6IHN0cmluZyA9IFwibm90aWZ5XCIpIHtcbiAgICBpZiAodGhpcy5zb3VuZHMgJiYgdGhpcy5zb3VuZHNbdHlwZV0pIHtcbiAgICAgIGNvbnN0IGF1ZGlvID0gbmV3IEF1ZGlvKHRoaXMuc291bmRzW3R5cGVdKTtcbiAgICAgIGF1ZGlvLnBsYXkoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9ub3RpZnkoKTogdm9pZCB7XG4gICAgY29uc3Qgb3V0OiBNZXNzYWdlW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IG1lc3NhZ2Ugb2YgdGhpcy5fbWVzc2FnZXMpIHtcbiAgICAgIGlmICgobWVzc2FnZS5zdGF0dXMgPT09IFNUQVRVU1tTVEFUVVMuVU5ESVNQXSkgfHxcbiAgICAgICAgKG1lc3NhZ2Uuc3RhdHVzID09PSBTVEFUVVNbU1RBVFVTLkRJU1BdKSkge1xuICAgICAgICBtZXNzYWdlLnN0YXR1cyA9IFNUQVRVU1tTVEFUVVMuRElTUF07XG4gICAgICAgIG91dC5wdXNoKG1lc3NhZ2UpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl9tZXNzYWdlcyQubmV4dChvdXQpO1xuICB9XG5cbn1cbiJdfQ==
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvbW9kZWxsaXN0L21vZGVsLWxpc3QtZmllbGRzL21vZGVsLWxpc3QtZmllbGQtaGVhZGVyL21lc3NhZ2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIElGaWVsZEhlYWRlck1lc3NhZ2Uge1xuICBkZXN0OiAnaGVhZGVyJztcbiAgc2hvdz86IGJvb2xlYW47XG4gIG1lbnU/OiAnaGlkZScgfCAnc2lkZScgfCAnY2xpY2snIHwgJ2RlZmF1bHQnO1xuICBzb3J0PzogJ2hpZGUnIHwgJ3NpZGUnIHwgJ2NsaWNrJyB8ICdkZWZhdWx0Jztcbn1cbiJdfQ==
@@ -1,61 +0,0 @@
1
- import { Component, DestroyRef, inject, Input, ViewChild, } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';
4
- import { ModelListSorterComponent } from '../../model-list-sorter/model-list-sorter/model-list-sorter.component';
5
- import { filter } from 'rxjs/operators';
6
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@angular/common";
9
- import * as i2 from "@ng-bootstrap/ng-bootstrap";
10
- export class ModelListFieldHeaderComponent {
11
- constructor() {
12
- this.sort = false;
13
- this.menuMode = 'side';
14
- this.sortMode = 'side';
15
- this.dispMenuMode = this.menuMode;
16
- this.dispSortMode = this.sortMode;
17
- this.destroy$ = inject(DestroyRef);
18
- }
19
- ngOnInit() {
20
- this.list.messages$
21
- .pipe(takeUntilDestroyed(this.destroy$), filter((m) => m.dest === 'header'))
22
- .subscribe((m) => {
23
- this.dispMenuMode =
24
- m.menu && m.menu !== 'default' ? m.menu : this.menuMode;
25
- this.dispSortMode =
26
- m.sort && m.sort !== 'default' ? m.sort : this.sortMode;
27
- this.display = m.show !== undefined ? m.show : this.display;
28
- });
29
- }
30
- disable() {
31
- this.list.fields.disable(this.field);
32
- }
33
- enable(f) {
34
- this.list.fields.move(f.name, 'after', this.field);
35
- this.list.fields.enable(f.name);
36
- }
37
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ModelListFieldHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
38
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.5", type: ModelListFieldHeaderComponent, isStandalone: true, selector: "data-model-list-field-header", inputs: { list: "list", field: "field", sort: "sort", sortField: "sortField", menuMode: "menuMode", sortMode: "sortMode", display: "display" }, viewQueries: [{ propertyName: "mnu", first: true, predicate: ["mnu"], descendants: true }], ngImport: i0, template: "\n<ng-template #label><span #ref>\n <ng-content></ng-content></span><span *ngIf=\"!ref.children.length\">{{list.fields.get(field)?.label||field}}</span></ng-template>\n<div class=\"d-flex flex-row justify-content-between align-items-end slabel\">\n <div class=\"flex-grow-1\">\n <data-model-list-sorter [list]=\"list\" [field]=\"sortField||field\" *ngIf=\"sort &amp;&amp; dispSortMode==='side'\">\n <ng-container *ngTemplateOutlet=\"label\"></ng-container>\n </data-model-list-sorter>\n <ng-container *ngIf=\"!sort || dispSortMode==='hide'\">\n <ng-container *ngTemplateOutlet=\"label\"></ng-container>\n </ng-container>\n </div>\n <div class=\"navicons d-flex flex-row\" [attr.aria-label]=\"'Gestion champs'\" *ngIf=\"dispMenuMode==='side'\"><i class=\"bi bi-caret-left-fill\" role=\"button\" (click)=\"list.fields.move(field, 'before')\" aria-label=\"D\u00E9placer vers la gauche\"></i>\n <div ngbDropdown #mnu=\"ngbDropdown\" [container]=\"'body'\"><i class=\"bi bi-record\" ngbDropdownToggle aria-label=\"Ouvrir la boite de dialogue des champs\" role=\"button\"></i>\n <div ngbDropdownMenu>\n <button ngbDropdownItem (click)=\"disable()\"><i class=\"bi bi-trash me-2\"></i>Supprimer</button>\n <h6 class=\"dropdown-header\">Ajouter une colonne apr\u00E8s</h6>\n <ng-container *ngFor=\"let f of list.fields.fields|async\">\n <ng-container *ngIf=\"f.allowed &amp;&amp; !f.enabled\">\n <button ngbDropdownItem (click)=\"enable(f)\" [attr.aria-label]=\"f.label||f.name\"><i class=\"bi bi-plus-circle me-2\"></i>{{f.label||f.name}}</button>\n </ng-container>\n </ng-container>\n </div>\n </div><i class=\"bi bi-caret-right-fill\" role=\"button\" (click)=\"list.fields.move(field, 'after')\" aria-label=\"D\u00E9placer vers la droite\"></i>\n </div>\n</div>", styles: [".slabel .navicons{opacity:0}.slabel:hover .navicons,.slabel.active .navicons{opacity:1!important}.dropdown-toggle:after{display:none!important}\n"], 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: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: NgbDropdownModule }, { kind: "directive", type: i2.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i2.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: i2.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: i2.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["tabindex", "disabled"] }, { kind: "directive", type: i2.NgbDropdownButtonItem, selector: "button[ngbDropdownItem]" }, { kind: "component", type: ModelListSorterComponent, selector: "data-model-list-sorter", inputs: ["list", "field"] }] }); }
39
- }
40
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ModelListFieldHeaderComponent, decorators: [{
41
- type: Component,
42
- args: [{ selector: 'data-model-list-field-header', standalone: true, imports: [CommonModule, NgbDropdownModule, ModelListSorterComponent], template: "\n<ng-template #label><span #ref>\n <ng-content></ng-content></span><span *ngIf=\"!ref.children.length\">{{list.fields.get(field)?.label||field}}</span></ng-template>\n<div class=\"d-flex flex-row justify-content-between align-items-end slabel\">\n <div class=\"flex-grow-1\">\n <data-model-list-sorter [list]=\"list\" [field]=\"sortField||field\" *ngIf=\"sort &amp;&amp; dispSortMode==='side'\">\n <ng-container *ngTemplateOutlet=\"label\"></ng-container>\n </data-model-list-sorter>\n <ng-container *ngIf=\"!sort || dispSortMode==='hide'\">\n <ng-container *ngTemplateOutlet=\"label\"></ng-container>\n </ng-container>\n </div>\n <div class=\"navicons d-flex flex-row\" [attr.aria-label]=\"'Gestion champs'\" *ngIf=\"dispMenuMode==='side'\"><i class=\"bi bi-caret-left-fill\" role=\"button\" (click)=\"list.fields.move(field, 'before')\" aria-label=\"D\u00E9placer vers la gauche\"></i>\n <div ngbDropdown #mnu=\"ngbDropdown\" [container]=\"'body'\"><i class=\"bi bi-record\" ngbDropdownToggle aria-label=\"Ouvrir la boite de dialogue des champs\" role=\"button\"></i>\n <div ngbDropdownMenu>\n <button ngbDropdownItem (click)=\"disable()\"><i class=\"bi bi-trash me-2\"></i>Supprimer</button>\n <h6 class=\"dropdown-header\">Ajouter une colonne apr\u00E8s</h6>\n <ng-container *ngFor=\"let f of list.fields.fields|async\">\n <ng-container *ngIf=\"f.allowed &amp;&amp; !f.enabled\">\n <button ngbDropdownItem (click)=\"enable(f)\" [attr.aria-label]=\"f.label||f.name\"><i class=\"bi bi-plus-circle me-2\"></i>{{f.label||f.name}}</button>\n </ng-container>\n </ng-container>\n </div>\n </div><i class=\"bi bi-caret-right-fill\" role=\"button\" (click)=\"list.fields.move(field, 'after')\" aria-label=\"D\u00E9placer vers la droite\"></i>\n </div>\n</div>", styles: [".slabel .navicons{opacity:0}.slabel:hover .navicons,.slabel.active .navicons{opacity:1!important}.dropdown-toggle:after{display:none!important}\n"] }]
43
- }], ctorParameters: () => [], propDecorators: { list: [{
44
- type: Input
45
- }], field: [{
46
- type: Input
47
- }], sort: [{
48
- type: Input
49
- }], sortField: [{
50
- type: Input
51
- }], menuMode: [{
52
- type: Input
53
- }], sortMode: [{
54
- type: Input
55
- }], display: [{
56
- type: Input
57
- }], mnu: [{
58
- type: ViewChild,
59
- args: ['mnu', { static: false }]
60
- }] } });
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtbGlzdC1maWVsZC1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS9zcmMvbGliL21vZGVsbGlzdC9tb2RlbC1saXN0LWZpZWxkcy9tb2RlbC1saXN0LWZpZWxkLWhlYWRlci9tb2RlbC1saXN0LWZpZWxkLWhlYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvbW9kZWxsaXN0L21vZGVsLWxpc3QtZmllbGRzL21vZGVsLWxpc3QtZmllbGQtaGVhZGVyL21vZGVsLWxpc3QtZmllbGQtaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBRUwsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQWUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1RUFBdUUsQ0FBQztBQUNqSCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7QUFTaEUsTUFBTSxPQUFPLDZCQUE2QjtJQWdCeEM7UUFYZ0IsU0FBSSxHQUFhLEtBQUssQ0FBQztRQUV2QixhQUFRLEdBQThCLE1BQU0sQ0FBQztRQUM3QyxhQUFRLEdBQThCLE1BQU0sQ0FBQztRQUl0RCxpQkFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDN0IsaUJBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQzVCLGFBQVEsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFdkIsQ0FBQztJQUVULFFBQVE7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVM7YUFDaEIsSUFBSSxDQUNILGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFDakMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUNuQzthQUNBLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2YsSUFBSSxDQUFDLFlBQVk7Z0JBQ2YsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUMxRCxJQUFJLENBQUMsWUFBWTtnQkFDZixDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQzFELElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDOUQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sT0FBTztRQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxDQUFpQjtRQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQzs4R0F4Q1UsNkJBQTZCO2tHQUE3Qiw2QkFBNkIsb1VDeEIxQyxtMERBeUJNLDBNREhNLFlBQVksMmRBQUUsaUJBQWlCLG1uQkFBRSx3QkFBd0I7OzJGQUV4RCw2QkFBNkI7a0JBUHpDLFNBQVM7K0JBQ0UsOEJBQThCLGNBRzVCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxpQkFBaUIsRUFBRSx3QkFBd0IsQ0FBQzt3REFLcEQsSUFBSTtzQkFBbkIsS0FBSztnQkFDVSxLQUFLO3NCQUFwQixLQUFLO2dCQUNVLElBQUk7c0JBQW5CLEtBQUs7Z0JBQ1UsU0FBUztzQkFBeEIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsT0FBTztzQkFBdEIsS0FBSztnQkFFc0MsR0FBRztzQkFBOUMsU0FBUzt1QkFBQyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBEZXN0cm95UmVmLFxuICBpbmplY3QsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNb2RlbExpc3QgfSBmcm9tICcuLi8uLi9tb2RlbC1saXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0YU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vZGF0YS9kYXRhLW1vZGVsJztcbmltcG9ydCB7IE1vZGVsTGlzdEZpZWxkIH0gZnJvbSAnLi4vbW9kZWwtbGlzdC1maWVsZHMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nYkRyb3Bkb3duLCBOZ2JEcm9wZG93bk1vZHVsZSB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IE1vZGVsTGlzdFNvcnRlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vZGVsLWxpc3Qtc29ydGVyL21vZGVsLWxpc3Qtc29ydGVyL21vZGVsLWxpc3Qtc29ydGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RhdGEtbW9kZWwtbGlzdC1maWVsZC1oZWFkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vbW9kZWwtbGlzdC1maWVsZC1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tb2RlbC1saXN0LWZpZWxkLWhlYWRlci5jb21wb25lbnQuc2FzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBOZ2JEcm9wZG93bk1vZHVsZSwgTW9kZWxMaXN0U29ydGVyQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgTW9kZWxMaXN0RmllbGRIZWFkZXJDb21wb25lbnQ8VCBleHRlbmRzIERhdGFNb2RlbD5cbiAgaW1wbGVtZW50cyBPbkluaXRcbntcbiAgQElucHV0KCkgcHVibGljIGxpc3QhOiBNb2RlbExpc3Q8VD47XG4gIEBJbnB1dCgpIHB1YmxpYyBmaWVsZCE6IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIHNvcnQ/OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBzb3J0RmllbGQ/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyBtZW51TW9kZTogJ2hpZGUnIHwgJ3NpZGUnIHwgJ2NsaWNrJyA9ICdzaWRlJztcbiAgQElucHV0KCkgcHVibGljIHNvcnRNb2RlOiAnaGlkZScgfCAnc2lkZScgfCAnY2xpY2snID0gJ3NpZGUnO1xuICBASW5wdXQoKSBwdWJsaWMgZGlzcGxheT86IGJvb2xlYW47XG5cbiAgQFZpZXdDaGlsZCgnbW51JywgeyBzdGF0aWM6IGZhbHNlIH0pIHB1YmxpYyBtbnU/OiBOZ2JEcm9wZG93bjtcbiAgcHVibGljIGRpc3BNZW51TW9kZSA9IHRoaXMubWVudU1vZGU7XG4gIHB1YmxpYyBkaXNwU29ydE1vZGUgPSB0aGlzLnNvcnRNb2RlO1xuICBwcml2YXRlIGRlc3Ryb3kkID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5saXN0Lm1lc3NhZ2VzJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICAgZmlsdGVyKChtKSA9PiBtLmRlc3QgPT09ICdoZWFkZXInKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKG0pID0+IHtcbiAgICAgICAgdGhpcy5kaXNwTWVudU1vZGUgPVxuICAgICAgICAgIG0ubWVudSAmJiBtLm1lbnUgIT09ICdkZWZhdWx0JyA/IG0ubWVudSA6IHRoaXMubWVudU1vZGU7XG4gICAgICAgIHRoaXMuZGlzcFNvcnRNb2RlID1cbiAgICAgICAgICBtLnNvcnQgJiYgbS5zb3J0ICE9PSAnZGVmYXVsdCcgPyBtLnNvcnQgOiB0aGlzLnNvcnRNb2RlO1xuICAgICAgICB0aGlzLmRpc3BsYXkgPSBtLnNob3cgIT09IHVuZGVmaW5lZCA/IG0uc2hvdyA6IHRoaXMuZGlzcGxheTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGRpc2FibGUoKSB7XG4gICAgdGhpcy5saXN0LmZpZWxkcy5kaXNhYmxlKHRoaXMuZmllbGQpO1xuICB9XG5cbiAgcHVibGljIGVuYWJsZShmOiBNb2RlbExpc3RGaWVsZCkge1xuICAgIHRoaXMubGlzdC5maWVsZHMubW92ZShmLm5hbWUsICdhZnRlcicsIHRoaXMuZmllbGQpO1xuICAgIHRoaXMubGlzdC5maWVsZHMuZW5hYmxlKGYubmFtZSk7XG4gIH1cbn1cbiIsIlxuPG5nLXRlbXBsYXRlICNsYWJlbD48c3BhbiAjcmVmPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD48L3NwYW4+PHNwYW4gKm5nSWY9XCIhcmVmLmNoaWxkcmVuLmxlbmd0aFwiPnt7bGlzdC5maWVsZHMuZ2V0KGZpZWxkKT8ubGFiZWx8fGZpZWxkfX08L3NwYW4+PC9uZy10ZW1wbGF0ZT5cbjxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1yb3cganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtZW5kIHNsYWJlbFwiPlxuICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93LTFcIj5cbiAgICA8ZGF0YS1tb2RlbC1saXN0LXNvcnRlciBbbGlzdF09XCJsaXN0XCIgW2ZpZWxkXT1cInNvcnRGaWVsZHx8ZmllbGRcIiAqbmdJZj1cInNvcnQgJmFtcDsmYW1wOyBkaXNwU29ydE1vZGU9PT0nc2lkZSdcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsYWJlbFwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGF0YS1tb2RlbC1saXN0LXNvcnRlcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNvcnQgfHwgZGlzcFNvcnRNb2RlPT09J2hpZGUnXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibGFiZWxcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJuYXZpY29ucyBkLWZsZXggZmxleC1yb3dcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidHZXN0aW9uIGNoYW1wcydcIiAqbmdJZj1cImRpc3BNZW51TW9kZT09PSdzaWRlJ1wiPjxpIGNsYXNzPVwiYmkgYmktY2FyZXQtbGVmdC1maWxsXCIgcm9sZT1cImJ1dHRvblwiIChjbGljayk9XCJsaXN0LmZpZWxkcy5tb3ZlKGZpZWxkLCAnYmVmb3JlJylcIiBhcmlhLWxhYmVsPVwiRMOpcGxhY2VyIHZlcnMgbGEgZ2F1Y2hlXCI+PC9pPlxuICAgIDxkaXYgbmdiRHJvcGRvd24gI21udT1cIm5nYkRyb3Bkb3duXCIgW2NvbnRhaW5lcl09XCInYm9keSdcIj48aSBjbGFzcz1cImJpIGJpLXJlY29yZFwiIG5nYkRyb3Bkb3duVG9nZ2xlIGFyaWEtbGFiZWw9XCJPdXZyaXIgbGEgYm9pdGUgZGUgZGlhbG9ndWUgZGVzIGNoYW1wc1wiIHJvbGU9XCJidXR0b25cIj48L2k+XG4gICAgICA8ZGl2IG5nYkRyb3Bkb3duTWVudT5cbiAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gKGNsaWNrKT1cImRpc2FibGUoKVwiPjxpIGNsYXNzPVwiYmkgYmktdHJhc2ggbWUtMlwiPjwvaT5TdXBwcmltZXI8L2J1dHRvbj5cbiAgICAgICAgPGg2IGNsYXNzPVwiZHJvcGRvd24taGVhZGVyXCI+QWpvdXRlciB1bmUgY29sb25uZSBhcHLDqHM8L2g2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmIG9mIGxpc3QuZmllbGRzLmZpZWxkc3xhc3luY1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmLmFsbG93ZWQgJmFtcDsmYW1wOyAhZi5lbmFibGVkXCI+XG4gICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSAoY2xpY2spPVwiZW5hYmxlKGYpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJmLmxhYmVsfHxmLm5hbWVcIj48aSBjbGFzcz1cImJpIGJpLXBsdXMtY2lyY2xlIG1lLTJcIj48L2k+e3tmLmxhYmVsfHxmLm5hbWV9fTwvYnV0dG9uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PjxpIGNsYXNzPVwiYmkgYmktY2FyZXQtcmlnaHQtZmlsbFwiIHJvbGU9XCJidXR0b25cIiAoY2xpY2spPVwibGlzdC5maWVsZHMubW92ZShmaWVsZCwgJ2FmdGVyJylcIiBhcmlhLWxhYmVsPVwiRMOpcGxhY2VyIHZlcnMgbGEgZHJvaXRlXCI+PC9pPlxuICA8L2Rpdj5cbjwvZGl2PiJdfQ==
@@ -1,64 +0,0 @@
1
- import { Component, Input, ViewChild } from '@angular/core';
2
- import { CDK_DRAG_CONFIG, DragDropModule, } from '@angular/cdk/drag-drop';
3
- import { CommonModule } from '@angular/common';
4
- import { NgbOffcanvasModule } from '@ng-bootstrap/ng-bootstrap';
5
- import { CdkScrollableModule } from '@angular/cdk/scrolling';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@ng-bootstrap/ng-bootstrap";
8
- import * as i2 from "@angular/common";
9
- import * as i3 from "@angular/cdk/scrolling";
10
- import * as i4 from "@angular/cdk/drag-drop";
11
- const DragConfig = {
12
- dragStartThreshold: 5,
13
- pointerDirectionChangeThreshold: 10,
14
- zIndex: 10000,
15
- };
16
- export class ModelListFieldsSelectorComponent {
17
- constructor(_ofc) {
18
- this._ofc = _ofc;
19
- this.seeMore = false;
20
- }
21
- ngOnInit() {
22
- if (!this.list || !this.list.fields) {
23
- throw new Error('Missing list / fields');
24
- }
25
- }
26
- open() {
27
- this._ofc.open(this.ofctpl);
28
- }
29
- drop($event) {
30
- let pos = $event.currentIndex * 10;
31
- if ($event.currentIndex > $event.previousIndex) {
32
- pos += 1;
33
- }
34
- else {
35
- pos -= 1;
36
- }
37
- this.list.fields.setPosition($event.item.data, pos);
38
- }
39
- toggle(f) {
40
- if (f.enabled) {
41
- this.list.fields.disable(f.name);
42
- }
43
- else {
44
- this.list.fields.enable(f.name);
45
- }
46
- }
47
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ModelListFieldsSelectorComponent, deps: [{ token: i1.NgbOffcanvas }], target: i0.ɵɵFactoryTarget.Component }); }
48
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.5", type: ModelListFieldsSelectorComponent, isStandalone: true, selector: "data-model-list-fields-selector", inputs: { list: "list" }, providers: [{ provide: CDK_DRAG_CONFIG, useValue: DragConfig }], viewQueries: [{ propertyName: "ofctpl", first: true, predicate: ["selector"], descendants: true, static: true }], ngImport: i0, template: "<i class=\"bi bi-list-ul\" (click)=\"open()\" role=\"button\" aria-label=\"Choix des champs\"></i>\n<ng-template #selector let-offcanvas>\n <div class=\"offcanvas-header\">\n <h4 class=\"offcanvas-title\">Choix des champs</h4>\n <button class=\"btn-close\" type=\"button\" aria-label=\"Close\" (click)=\"offcanvas.dismiss('x')\"></button>\n </div>\n <div class=\"offcanvas-body\" cdkScrollable>\n <div class=\"fields-list\" cdkDropList cdkDropListLockAxis=\"y\" (cdkDropListDropped)=\"drop($event)\" *ngIf=\"list.fields.fields|async as fields\">\n <ng-container *ngFor=\"let f of fields\">\n <ng-container *ngIf=\"seeMore || f.priority &gt;= 0\">\n <div class=\"field-box\" cdkDrag (click)=\"toggle(f)\" [cdkDragData]=\"f.name\" [class.enabled]=\"f.enabled\" [class.compact]=\"fields.length&gt;30\" [attr.arial-label]=\"f.label\" role=\"button\">{{f.label}}<span class=\"badge bg-info\"> {{f.priority}}</span></div>\n </ng-container>\n </ng-container>\n </div>\n <button class=\"btn btn-sm btn-link\" (click)=\"seeMore=!seeMore\">plus de champs</button>\n </div>\n</ng-template>", styles: [".fields-list{width:100%;max-width:100%;border:var(--bs-border-style) var(--bs-border-width) var(--bs-border-color);min-height:50px;display:block;background:var(--bs-body-bg-rgb);border-radius:var(--bs-border-radius-sm);overflow:hidden}.field-box{padding:.5rem 1rem;border-bottom:solid 1px #ccc;color:var(--bs-black);display:flex;flex-direction:row;align-items:center;justify-content:space-between;box-sizing:border-box;cursor:move;background:#fff;font-size:var(--bs-body-font-size)}.field-box.compact{padding:.2rem 1rem;font-size:.9rem}.field-box.enabled{background-color:var(--bs-success);color:var(--bs-white)}.cdk-drag-preview{box-sizing:border-box;border-radius:var(--bs-border-radius-sm);box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.field-box:last-child{border:none}.fields-list.cdk-drop-list-dragging .field-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\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"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i3.CdkScrollable, selector: "[cdk-scrollable], [cdkScrollable]" }, { kind: "directive", type: i4.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i4.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "ngmodule", type: CdkScrollableModule }, { kind: "ngmodule", type: NgbOffcanvasModule }] }); }
49
- }
50
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ModelListFieldsSelectorComponent, decorators: [{
51
- type: Component,
52
- args: [{ selector: 'data-model-list-fields-selector', standalone: true, imports: [
53
- CommonModule,
54
- DragDropModule,
55
- CdkScrollableModule,
56
- NgbOffcanvasModule,
57
- ], providers: [{ provide: CDK_DRAG_CONFIG, useValue: DragConfig }], template: "<i class=\"bi bi-list-ul\" (click)=\"open()\" role=\"button\" aria-label=\"Choix des champs\"></i>\n<ng-template #selector let-offcanvas>\n <div class=\"offcanvas-header\">\n <h4 class=\"offcanvas-title\">Choix des champs</h4>\n <button class=\"btn-close\" type=\"button\" aria-label=\"Close\" (click)=\"offcanvas.dismiss('x')\"></button>\n </div>\n <div class=\"offcanvas-body\" cdkScrollable>\n <div class=\"fields-list\" cdkDropList cdkDropListLockAxis=\"y\" (cdkDropListDropped)=\"drop($event)\" *ngIf=\"list.fields.fields|async as fields\">\n <ng-container *ngFor=\"let f of fields\">\n <ng-container *ngIf=\"seeMore || f.priority &gt;= 0\">\n <div class=\"field-box\" cdkDrag (click)=\"toggle(f)\" [cdkDragData]=\"f.name\" [class.enabled]=\"f.enabled\" [class.compact]=\"fields.length&gt;30\" [attr.arial-label]=\"f.label\" role=\"button\">{{f.label}}<span class=\"badge bg-info\"> {{f.priority}}</span></div>\n </ng-container>\n </ng-container>\n </div>\n <button class=\"btn btn-sm btn-link\" (click)=\"seeMore=!seeMore\">plus de champs</button>\n </div>\n</ng-template>", styles: [".fields-list{width:100%;max-width:100%;border:var(--bs-border-style) var(--bs-border-width) var(--bs-border-color);min-height:50px;display:block;background:var(--bs-body-bg-rgb);border-radius:var(--bs-border-radius-sm);overflow:hidden}.field-box{padding:.5rem 1rem;border-bottom:solid 1px #ccc;color:var(--bs-black);display:flex;flex-direction:row;align-items:center;justify-content:space-between;box-sizing:border-box;cursor:move;background:#fff;font-size:var(--bs-body-font-size)}.field-box.compact{padding:.2rem 1rem;font-size:.9rem}.field-box.enabled{background-color:var(--bs-success);color:var(--bs-white)}.cdk-drag-preview{box-sizing:border-box;border-radius:var(--bs-border-radius-sm);box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.field-box:last-child{border:none}.fields-list.cdk-drop-list-dragging .field-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"] }]
58
- }], ctorParameters: () => [{ type: i1.NgbOffcanvas }], propDecorators: { list: [{
59
- type: Input
60
- }], ofctpl: [{
61
- type: ViewChild,
62
- args: ['selector', { static: true }]
63
- }] } });
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtbGlzdC1maWVsZHMtc2VsZWN0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS9zcmMvbGliL21vZGVsbGlzdC9tb2RlbC1saXN0LWZpZWxkcy9tb2RlbC1saXN0LWZpZWxkcy1zZWxlY3Rvci9tb2RlbC1saXN0LWZpZWxkcy1zZWxlY3Rvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvbW9kZWxsaXN0L21vZGVsLWxpc3QtZmllbGRzL21vZGVsLWxpc3QtZmllbGRzLXNlbGVjdG9yL21vZGVsLWxpc3QtZmllbGRzLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdoRixPQUFPLEVBQ0wsZUFBZSxFQUVmLGNBQWMsR0FDZixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQWdCLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFOUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7OztBQUU3RCxNQUFNLFVBQVUsR0FBRztJQUNqQixrQkFBa0IsRUFBRSxDQUFDO0lBQ3JCLCtCQUErQixFQUFFLEVBQUU7SUFDbkMsTUFBTSxFQUFFLEtBQUs7Q0FDZCxDQUFDO0FBZUYsTUFBTSxPQUFPLGdDQUFnQztJQVEzQyxZQUFvQixJQUFrQjtRQUFsQixTQUFJLEdBQUosSUFBSSxDQUFjO1FBRi9CLFlBQU8sR0FBWSxLQUFLLENBQUM7SUFFUyxDQUFDO0lBRW5DLFFBQVE7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDcEMsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQzNDLENBQUM7SUFDSCxDQUFDO0lBRU0sSUFBSTtRQUNULElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBSSxDQUFDLE1BQTJCO1FBQzlCLElBQUksR0FBRyxHQUFHLE1BQU0sQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ25DLElBQUksTUFBTSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDL0MsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNYLENBQUM7YUFBTSxDQUFDO1lBQ04sR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNYLENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVNLE1BQU0sQ0FBQyxDQUFpQjtRQUM3QixJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLENBQUM7SUFDSCxDQUFDOzhHQXBDVSxnQ0FBZ0M7a0dBQWhDLGdDQUFnQyx3R0FGaEMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxDQUFDLDRJQzlCakUsNG1DQWdCYyxva0NEU1YsWUFBWSxvVEFDWixjQUFjLDBsQ0FDZCxtQkFBbUIsOEJBQ25CLGtCQUFrQjs7MkZBSVQsZ0NBQWdDO2tCQWI1QyxTQUFTOytCQUNFLGlDQUFpQyxjQUcvQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixjQUFjO3dCQUNkLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3FCQUNuQixhQUNVLENBQUMsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsQ0FBQztpRkFLL0MsSUFBSTtzQkFBbkIsS0FBSztnQkFFQyxNQUFNO3NCQURaLFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRhTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9kYXRhL2RhdGEtbW9kZWwnO1xuaW1wb3J0IHsgTW9kZWxMaXN0IH0gZnJvbSAnLi4vLi4vbW9kZWwtbGlzdC5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIENES19EUkFHX0NPTkZJRyxcbiAgQ2RrRHJhZ0Ryb3AsXG4gIERyYWdEcm9wTW9kdWxlLFxufSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ2JPZmZjYW52YXMsIE5nYk9mZmNhbnZhc01vZHVsZSB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IE1vZGVsTGlzdEZpZWxkIH0gZnJvbSAnLi4vbW9kZWwtbGlzdC1maWVsZHMnO1xuaW1wb3J0IHsgQ2RrU2Nyb2xsYWJsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xuXG5jb25zdCBEcmFnQ29uZmlnID0ge1xuICBkcmFnU3RhcnRUaHJlc2hvbGQ6IDUsXG4gIHBvaW50ZXJEaXJlY3Rpb25DaGFuZ2VUaHJlc2hvbGQ6IDEwLFxuICB6SW5kZXg6IDEwMDAwLFxufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGF0YS1tb2RlbC1saXN0LWZpZWxkcy1zZWxlY3RvcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9tb2RlbC1saXN0LWZpZWxkcy1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21vZGVsLWxpc3QtZmllbGRzLXNlbGVjdG9yLmNvbXBvbmVudC5zYXNzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRHJhZ0Ryb3BNb2R1bGUsXG4gICAgQ2RrU2Nyb2xsYWJsZU1vZHVsZSxcbiAgICBOZ2JPZmZjYW52YXNNb2R1bGUsXG4gIF0sXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogQ0RLX0RSQUdfQ09ORklHLCB1c2VWYWx1ZTogRHJhZ0NvbmZpZyB9XSxcbn0pXG5leHBvcnQgY2xhc3MgTW9kZWxMaXN0RmllbGRzU2VsZWN0b3JDb21wb25lbnQ8VCBleHRlbmRzIERhdGFNb2RlbD5cbiAgaW1wbGVtZW50cyBPbkluaXRcbntcbiAgQElucHV0KCkgcHVibGljIGxpc3QhOiBNb2RlbExpc3Q8VD47XG4gIEBWaWV3Q2hpbGQoJ3NlbGVjdG9yJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHVibGljIG9mY3RwbCE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBwdWJsaWMgc2VlTW9yZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX29mYzogTmdiT2ZmY2FudmFzKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICBpZiAoIXRoaXMubGlzdCB8fCAhdGhpcy5saXN0LmZpZWxkcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIGxpc3QgLyBmaWVsZHMnKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3BlbigpIHtcbiAgICB0aGlzLl9vZmMub3Blbih0aGlzLm9mY3RwbCk7XG4gIH1cblxuICBkcm9wKCRldmVudDogQ2RrRHJhZ0Ryb3A8VCwgYW55Pikge1xuICAgIGxldCBwb3MgPSAkZXZlbnQuY3VycmVudEluZGV4ICogMTA7XG4gICAgaWYgKCRldmVudC5jdXJyZW50SW5kZXggPiAkZXZlbnQucHJldmlvdXNJbmRleCkge1xuICAgICAgcG9zICs9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBvcyAtPSAxO1xuICAgIH1cbiAgICB0aGlzLmxpc3QuZmllbGRzLnNldFBvc2l0aW9uKCRldmVudC5pdGVtLmRhdGEsIHBvcyk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlKGY6IE1vZGVsTGlzdEZpZWxkKSB7XG4gICAgaWYgKGYuZW5hYmxlZCkge1xuICAgICAgdGhpcy5saXN0LmZpZWxkcy5kaXNhYmxlKGYubmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubGlzdC5maWVsZHMuZW5hYmxlKGYubmFtZSk7XG4gICAgfVxuICB9XG59XG4iLCI8aSBjbGFzcz1cImJpIGJpLWxpc3QtdWxcIiAoY2xpY2spPVwib3BlbigpXCIgcm9sZT1cImJ1dHRvblwiIGFyaWEtbGFiZWw9XCJDaG9peCBkZXMgY2hhbXBzXCI+PC9pPlxuPG5nLXRlbXBsYXRlICNzZWxlY3RvciBsZXQtb2ZmY2FudmFzPlxuICA8ZGl2IGNsYXNzPVwib2ZmY2FudmFzLWhlYWRlclwiPlxuICAgIDxoNCBjbGFzcz1cIm9mZmNhbnZhcy10aXRsZVwiPkNob2l4IGRlcyBjaGFtcHM8L2g0PlxuICAgIDxidXR0b24gY2xhc3M9XCJidG4tY2xvc2VcIiB0eXBlPVwiYnV0dG9uXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgKGNsaWNrKT1cIm9mZmNhbnZhcy5kaXNtaXNzKCd4JylcIj48L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJvZmZjYW52YXMtYm9keVwiIGNka1Njcm9sbGFibGU+XG4gICAgPGRpdiBjbGFzcz1cImZpZWxkcy1saXN0XCIgY2RrRHJvcExpc3QgY2RrRHJvcExpc3RMb2NrQXhpcz1cInlcIiAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiICpuZ0lmPVwibGlzdC5maWVsZHMuZmllbGRzfGFzeW5jIGFzIGZpZWxkc1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZiBvZiBmaWVsZHNcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlZU1vcmUgfHwgZi5wcmlvcml0eSAmZ3Q7PSAwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLWJveFwiIGNka0RyYWcgKGNsaWNrKT1cInRvZ2dsZShmKVwiIFtjZGtEcmFnRGF0YV09XCJmLm5hbWVcIiBbY2xhc3MuZW5hYmxlZF09XCJmLmVuYWJsZWRcIiBbY2xhc3MuY29tcGFjdF09XCJmaWVsZHMubGVuZ3RoJmd0OzMwXCIgW2F0dHIuYXJpYWwtbGFiZWxdPVwiZi5sYWJlbFwiIHJvbGU9XCJidXR0b25cIj57e2YubGFiZWx9fTxzcGFuIGNsYXNzPVwiYmFkZ2UgYmctaW5mb1wiPiB7e2YucHJpb3JpdHl9fTwvc3Bhbj48L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGlua1wiIChjbGljayk9XCJzZWVNb3JlPSFzZWVNb3JlXCI+cGx1cyBkZSBjaGFtcHM8L2J1dHRvbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPiJdfQ==