@solidev/data 0.0.8 → 0.1.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 (158) hide show
  1. package/esm2022/lib/auth/auth-interceptor.service.mjs +92 -0
  2. package/{esm2020 → esm2022}/lib/auth/auth.service.mjs +1 -1
  3. package/esm2022/lib/data/data-backend.mjs +135 -0
  4. package/esm2022/lib/data/data-model.mjs +292 -0
  5. package/esm2022/lib/dispedit/choice.pipe.mjs +81 -0
  6. package/{esm2020 → esm2022}/lib/dispedit/dispedit/dispedit.component.mjs +10 -5
  7. package/esm2022/lib/dispedit/factor.pipe.mjs +83 -0
  8. package/esm2022/lib/dispedit/factorc.pipe.mjs +101 -0
  9. package/esm2022/lib/dispedit/fkselect/fkselect.component.mjs +143 -0
  10. package/esm2022/lib/dispedit/flags/flags.component.mjs +141 -0
  11. package/esm2022/lib/dispedit/m2mselect/m2mselect.component.mjs +319 -0
  12. package/esm2022/lib/dispedit/richedit/richedit.component.mjs +127 -0
  13. package/esm2022/lib/dispedit/sdelete/sdelete.component.mjs +94 -0
  14. package/esm2022/lib/messages/message-zone/message-zone.component.mjs +58 -0
  15. package/esm2022/lib/messages/message.service.mjs +152 -0
  16. package/esm2022/lib/modellist/model-list-fields/model-list-field-header/model-list-field-header.component.mjs +66 -0
  17. package/esm2022/lib/modellist/model-list-fields/model-list-fields-selector/model-list-fields-selector.component.mjs +65 -0
  18. package/esm2022/lib/modellist/model-list-filters/filters/model-list-autocomplete-filter/model-list-autocomplete-filter.component.mjs +113 -0
  19. package/esm2022/lib/modellist/model-list-filters/filters/model-list-autocomplete-multi-filter/model-list-autocomplete-multi-filter.component.mjs +30 -0
  20. package/esm2022/lib/modellist/model-list-filters/filters/model-list-date-filter/model-list-date-filter.component.mjs +41 -0
  21. package/esm2022/lib/modellist/model-list-filters/filters/model-list-datetime-filter/model-list-datetime-filter.component.mjs +41 -0
  22. package/esm2022/lib/modellist/model-list-filters/filters/model-list-datetimerange-filter/model-list-datetime-range-filter.component.mjs +22 -0
  23. package/esm2022/lib/modellist/model-list-filters/filters/model-list-flags-filter/model-list-flags-filter.component.mjs +50 -0
  24. package/esm2022/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/model-list-geodistance-filter.component.mjs +64 -0
  25. package/esm2022/lib/modellist/model-list-filters/filters/model-list-number-filter/model-list-number-filter.component.mjs +47 -0
  26. package/esm2022/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.component.mjs +57 -0
  27. package/esm2022/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.component.mjs +52 -0
  28. package/esm2022/lib/modellist/model-list-filters/filters/model-list-text-filter/model-list-text-filter.component.mjs +41 -0
  29. package/esm2022/lib/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.component.mjs +175 -0
  30. package/esm2022/lib/modellist/model-list-filters/model-list-filters/model-list-filters.component.mjs +51 -0
  31. package/esm2022/lib/modellist/model-list-filters/model-list-filters-select/model-list-filters-select.component.mjs +31 -0
  32. package/esm2022/lib/modellist/model-list-paginator/model-list-paginator/model-list-paginator.component.mjs +71 -0
  33. package/esm2022/lib/modellist/model-list-sorter/model-list-sorter/model-list-sorter.component.mjs +50 -0
  34. package/esm2022/lib/modellist/model-list.service.mjs +158 -0
  35. package/esm2022/lib/routing/breadcrumb/breadcrumb.component.mjs +143 -0
  36. package/esm2022/lib/updates/update/update.component.mjs +18 -0
  37. package/esm2022/lib/updates/update.service.mjs +59 -0
  38. package/esm2022/lib/uploader/ng-file-drop.directive.mjs +82 -0
  39. package/esm2022/lib/uploader/ng-file-select.directive.mjs +52 -0
  40. package/esm2022/lib/uploader/ngx-uploader.module.mjs +18 -0
  41. package/esm2022/lib/utils/tab-memory.service.mjs +81 -0
  42. package/{fesm2020 → fesm2022}/solidev-data.mjs +153 -149
  43. package/fesm2022/solidev-data.mjs.map +1 -0
  44. package/lib/dispedit/dispedit/dispedit.component.d.ts +1 -1
  45. package/lib/dispedit/fkselect/fkselect.component.d.ts +1 -1
  46. package/lib/dispedit/flags/flags.component.d.ts +1 -1
  47. package/lib/dispedit/m2mselect/m2mselect.component.d.ts +1 -1
  48. package/lib/dispedit/richedit/richedit.component.d.ts +1 -1
  49. package/lib/dispedit/sdelete/sdelete.component.d.ts +1 -1
  50. package/lib/messages/message-zone/message-zone.component.d.ts +1 -1
  51. package/lib/modellist/model-list-fields/model-list-field-header/model-list-field-header.component.d.ts +1 -1
  52. package/lib/modellist/model-list-fields/model-list-fields-selector/model-list-fields-selector.component.d.ts +1 -1
  53. package/lib/modellist/model-list-filters/filters/model-list-autocomplete-filter/model-list-autocomplete-filter.component.d.ts +1 -1
  54. package/lib/modellist/model-list-filters/filters/model-list-autocomplete-multi-filter/model-list-autocomplete-multi-filter.component.d.ts +1 -1
  55. package/lib/modellist/model-list-filters/filters/model-list-date-filter/model-list-date-filter.component.d.ts +1 -1
  56. package/lib/modellist/model-list-filters/filters/model-list-datetime-filter/model-list-datetime-filter.component.d.ts +1 -1
  57. package/lib/modellist/model-list-filters/filters/model-list-datetimerange-filter/model-list-datetime-range-filter.component.d.ts +1 -1
  58. package/lib/modellist/model-list-filters/filters/model-list-flags-filter/model-list-flags-filter.component.d.ts +1 -1
  59. package/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/model-list-geodistance-filter.component.d.ts +1 -1
  60. package/lib/modellist/model-list-filters/filters/model-list-number-filter/model-list-number-filter.component.d.ts +1 -1
  61. package/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.component.d.ts +1 -1
  62. package/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.component.d.ts +1 -1
  63. package/lib/modellist/model-list-filters/filters/model-list-text-filter/model-list-text-filter.component.d.ts +1 -1
  64. package/lib/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.component.d.ts +1 -1
  65. package/lib/modellist/model-list-filters/model-list-filters/model-list-filters.component.d.ts +1 -1
  66. package/lib/modellist/model-list-filters/model-list-filters-select/model-list-filters-select.component.d.ts +1 -1
  67. package/lib/modellist/model-list-paginator/model-list-paginator/model-list-paginator.component.d.ts +1 -1
  68. package/lib/modellist/model-list-sorter/model-list-sorter/model-list-sorter.component.d.ts +1 -1
  69. package/lib/routing/breadcrumb/breadcrumb.component.d.ts +1 -1
  70. package/lib/uploader/ng-file-drop.directive.d.ts +1 -1
  71. package/lib/uploader/ng-file-select.directive.d.ts +1 -1
  72. package/package.json +7 -13
  73. package/esm2020/lib/auth/auth-interceptor.service.mjs +0 -91
  74. package/esm2020/lib/data/data-backend.mjs +0 -134
  75. package/esm2020/lib/data/data-model.mjs +0 -291
  76. package/esm2020/lib/dispedit/choice.pipe.mjs +0 -79
  77. package/esm2020/lib/dispedit/factor.pipe.mjs +0 -81
  78. package/esm2020/lib/dispedit/factorc.pipe.mjs +0 -99
  79. package/esm2020/lib/dispedit/fkselect/fkselect.component.mjs +0 -142
  80. package/esm2020/lib/dispedit/flags/flags.component.mjs +0 -140
  81. package/esm2020/lib/dispedit/m2mselect/m2mselect.component.mjs +0 -318
  82. package/esm2020/lib/dispedit/richedit/richedit.component.mjs +0 -126
  83. package/esm2020/lib/dispedit/sdelete/sdelete.component.mjs +0 -93
  84. package/esm2020/lib/messages/message-zone/message-zone.component.mjs +0 -57
  85. package/esm2020/lib/messages/message.service.mjs +0 -151
  86. package/esm2020/lib/modellist/model-list-fields/model-list-field-header/model-list-field-header.component.mjs +0 -65
  87. package/esm2020/lib/modellist/model-list-fields/model-list-fields-selector/model-list-fields-selector.component.mjs +0 -64
  88. package/esm2020/lib/modellist/model-list-filters/filters/model-list-autocomplete-filter/model-list-autocomplete-filter.component.mjs +0 -112
  89. package/esm2020/lib/modellist/model-list-filters/filters/model-list-autocomplete-multi-filter/model-list-autocomplete-multi-filter.component.mjs +0 -29
  90. package/esm2020/lib/modellist/model-list-filters/filters/model-list-date-filter/model-list-date-filter.component.mjs +0 -40
  91. package/esm2020/lib/modellist/model-list-filters/filters/model-list-datetime-filter/model-list-datetime-filter.component.mjs +0 -40
  92. package/esm2020/lib/modellist/model-list-filters/filters/model-list-datetimerange-filter/model-list-datetime-range-filter.component.mjs +0 -21
  93. package/esm2020/lib/modellist/model-list-filters/filters/model-list-flags-filter/model-list-flags-filter.component.mjs +0 -49
  94. package/esm2020/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/model-list-geodistance-filter.component.mjs +0 -63
  95. package/esm2020/lib/modellist/model-list-filters/filters/model-list-number-filter/model-list-number-filter.component.mjs +0 -46
  96. package/esm2020/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.component.mjs +0 -56
  97. package/esm2020/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.component.mjs +0 -51
  98. package/esm2020/lib/modellist/model-list-filters/filters/model-list-text-filter/model-list-text-filter.component.mjs +0 -40
  99. package/esm2020/lib/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.component.mjs +0 -174
  100. package/esm2020/lib/modellist/model-list-filters/model-list-filters/model-list-filters.component.mjs +0 -50
  101. package/esm2020/lib/modellist/model-list-filters/model-list-filters-select/model-list-filters-select.component.mjs +0 -30
  102. package/esm2020/lib/modellist/model-list-paginator/model-list-paginator/model-list-paginator.component.mjs +0 -70
  103. package/esm2020/lib/modellist/model-list-sorter/model-list-sorter/model-list-sorter.component.mjs +0 -49
  104. package/esm2020/lib/modellist/model-list.service.mjs +0 -157
  105. package/esm2020/lib/routing/breadcrumb/breadcrumb.component.mjs +0 -142
  106. package/esm2020/lib/updates/update/update.component.mjs +0 -17
  107. package/esm2020/lib/updates/update.service.mjs +0 -58
  108. package/esm2020/lib/uploader/ng-file-drop.directive.mjs +0 -81
  109. package/esm2020/lib/uploader/ng-file-select.directive.mjs +0 -51
  110. package/esm2020/lib/uploader/ngx-uploader.module.mjs +0 -17
  111. package/esm2020/lib/utils/tab-memory.service.mjs +0 -80
  112. package/fesm2015/solidev-data.mjs +0 -6224
  113. package/fesm2015/solidev-data.mjs.map +0 -1
  114. package/fesm2020/solidev-data.mjs.map +0 -1
  115. /package/{esm2020 → esm2022}/lib/auth/jwt.mjs +0 -0
  116. /package/{esm2020 → esm2022}/lib/data/data-collection.mjs +0 -0
  117. /package/{esm2020 → esm2022}/lib/data/data-collection.mock.mjs +0 -0
  118. /package/{esm2020 → esm2022}/lib/data/data-parameters.mjs +0 -0
  119. /package/{esm2020 → esm2022}/lib/data/data-query.mjs +0 -0
  120. /package/{esm2020 → esm2022}/lib/data/data-query.mock.mjs +0 -0
  121. /package/{esm2020 → esm2022}/lib/data/fields/base.mjs +0 -0
  122. /package/{esm2020 → esm2022}/lib/data/fields/boolean.mjs +0 -0
  123. /package/{esm2020 → esm2022}/lib/data/fields/computed.mjs +0 -0
  124. /package/{esm2020 → esm2022}/lib/data/fields/datetime.mjs +0 -0
  125. /package/{esm2020 → esm2022}/lib/data/fields/index.mjs +0 -0
  126. /package/{esm2020 → esm2022}/lib/data/fields/numbers.mjs +0 -0
  127. /package/{esm2020 → esm2022}/lib/data/fields/primaryfield.mjs +0 -0
  128. /package/{esm2020 → esm2022}/lib/data/fields/relations.mjs +0 -0
  129. /package/{esm2020 → esm2022}/lib/data/fields/stringfields.mjs +0 -0
  130. /package/{esm2020 → esm2022}/lib/dispedit/dispedit/dispedit.constants.mjs +0 -0
  131. /package/{esm2020 → esm2022}/lib/modellist/model-list-fields/model-list-field-header/messages.mjs +0 -0
  132. /package/{esm2020 → esm2022}/lib/modellist/model-list-fields/model-list-fields.mjs +0 -0
  133. /package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/filtertypes.mjs +0 -0
  134. /package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-autocomplete-filter/model-list-autocomplete-filter.mjs +0 -0
  135. /package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-autocomplete-multi-filter/model-list-autocomplete-multi-filter.mjs +0 -0
  136. /package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-date-filter/model-list-date-filter.mjs +0 -0
  137. /package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-datetime-filter/model-list-datetime-filter.mjs +0 -0
  138. /package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-datetimerange-filter/model-list-datetimerange-filter.mjs +0 -0
  139. /package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-flags-filter/model-list-flags-filter.mjs +0 -0
  140. /package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/adapters/ban.mjs +0 -0
  141. /package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/model-list-geodistance-filter.mjs +0 -0
  142. /package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-number-filter/model-list-number-filter.mjs +0 -0
  143. /package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.mjs +0 -0
  144. /package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.mjs +0 -0
  145. /package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-text-filter/model-list-text-filter.mjs +0 -0
  146. /package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.mjs +0 -0
  147. /package/{esm2020 → esm2022}/lib/modellist/model-list-filters/model-list-filter.mjs +0 -0
  148. /package/{esm2020 → esm2022}/lib/modellist/model-list-filters/model-list-filters.mjs +0 -0
  149. /package/{esm2020 → esm2022}/lib/modellist/model-list-paginator/model-list-paginator.mjs +0 -0
  150. /package/{esm2020 → esm2022}/lib/modellist/model-list-sorter/model-list-sorter.mjs +0 -0
  151. /package/{esm2020 → esm2022}/lib/routing/routing.mjs +0 -0
  152. /package/{esm2020 → esm2022}/lib/uploader/index.mjs +0 -0
  153. /package/{esm2020 → esm2022}/lib/uploader/interfaces.mjs +0 -0
  154. /package/{esm2020 → esm2022}/lib/uploader/ngx-uploader.class.mjs +0 -0
  155. /package/{esm2020 → esm2022}/lib/utils/slugify.mjs +0 -0
  156. /package/{esm2020 → esm2022}/lib/utils/template.mjs +0 -0
  157. /package/{esm2020 → esm2022}/public-api.mjs +0 -0
  158. /package/{esm2020 → esm2022}/solidev-data.mjs +0 -0
@@ -0,0 +1,94 @@
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
+ class SafeDeleteComponent {
10
+ constructor(_ofc, _msgs) {
11
+ this._ofc = _ofc;
12
+ this._msgs = _msgs;
13
+ this.checks = {};
14
+ this.messages = {};
15
+ this.deleted = new EventEmitter();
16
+ this.display = 'button';
17
+ }
18
+ async checkDelete(model) {
19
+ const service = this.service || this.model._collection;
20
+ if (service) {
21
+ try {
22
+ this.result = await firstValueFrom(service.delete(this.model, { params: { doit: 'no' } }));
23
+ this.ofc = this._ofc.open(this._dialogRef, {
24
+ position: 'end',
25
+ });
26
+ }
27
+ catch (e) {
28
+ console.error(e);
29
+ if (this.messages.error) {
30
+ this._msgs.error(this.messages.error, e.error?.message || e.message || '');
31
+ }
32
+ }
33
+ }
34
+ }
35
+ async reallyDelete() {
36
+ if (this.actionFn) {
37
+ const res = await this.actionFn(this.model);
38
+ if (res.success && this.messages.success) {
39
+ this._msgs.success(this.messages.success);
40
+ }
41
+ else if (!res.success && this.messages.error) {
42
+ this._msgs.error(this.messages.error);
43
+ }
44
+ this.ofc?.close();
45
+ if (res.success) {
46
+ this.deleted.emit(this.result);
47
+ }
48
+ }
49
+ else {
50
+ const service = this.service || this.model._collection;
51
+ if (service) {
52
+ try {
53
+ this.result = await firstValueFrom(service.delete(this.model, { params: { doit: 'really' } }));
54
+ if (this.messages.success) {
55
+ this._msgs.success(this.messages.success);
56
+ }
57
+ this.ofc?.close();
58
+ this.deleted.emit(this.result);
59
+ }
60
+ catch (e) {
61
+ console.error(e);
62
+ if (this.messages.error) {
63
+ this._msgs.error(this.messages.error, e.error?.message || e.message || '');
64
+ }
65
+ }
66
+ }
67
+ }
68
+ }
69
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: SafeDeleteComponent, deps: [{ token: i1.NgbOffcanvas }, { token: i2.DataMessageService }], target: i0.ɵɵFactoryTarget.Component }); }
70
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", 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 }] }); }
71
+ }
72
+ export { SafeDeleteComponent };
73
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: SafeDeleteComponent, decorators: [{
74
+ type: Component,
75
+ 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>" }]
76
+ }], ctorParameters: function () { return [{ type: i1.NgbOffcanvas }, { type: i2.DataMessageService }]; }, propDecorators: { model: [{
77
+ type: Input
78
+ }], service: [{
79
+ type: Input
80
+ }], actionFn: [{
81
+ type: Input
82
+ }], checks: [{
83
+ type: Input
84
+ }], messages: [{
85
+ type: Input
86
+ }], deleted: [{
87
+ type: Output
88
+ }], display: [{
89
+ type: Input
90
+ }], _dialogRef: [{
91
+ type: ViewChild,
92
+ args: ['dialog', { static: true }]
93
+ }] } });
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2RlbGV0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvZGlzcGVkaXQvc2RlbGV0ZS9zZGVsZXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEvc3JjL2xpYi9kaXNwZWRpdC9zZGVsZXRlL3NkZWxldGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBRUwsa0JBQWtCLEdBRW5CLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7OztBQVEvQyxNQU9hLG1CQUFtQjtJQWE5QixZQUFvQixJQUFrQixFQUFVLEtBQXlCO1FBQXJELFNBQUksR0FBSixJQUFJLENBQWM7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFvQjtRQVR6RCxXQUFNLEdBQWdDLEVBQUUsQ0FBQztRQUN6QyxhQUFRLEdBQXlDLEVBQUUsQ0FBQztRQUNuRCxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQW9CLENBQUM7UUFDaEQsWUFBTyxHQUE2QyxRQUFRLENBQUM7SUFPN0UsQ0FBQztJQUVNLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBZ0I7UUFDdkMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQztRQUN2RCxJQUFJLE9BQU8sRUFBRTtZQUNYLElBQUk7Z0JBQ0YsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLGNBQWMsQ0FDaEMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENB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RERWTSxZQUFZLHNhQUFFLGtCQUFrQjs7U0FFL0IsbUJBQW1COzJGQUFuQixtQkFBbUI7a0JBUC9CLFNBQVM7K0JBQ0Usa0JBQWtCLGNBR2hCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxrQkFBa0IsQ0FBQztvSUFHM0IsS0FBSztzQkFBcEIsS0FBSztnQkFDVSxPQUFPO3NCQUF0QixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsTUFBTTtzQkFBckIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUNXLE9BQU87c0JBQXZCLE1BQU07Z0JBQ1MsT0FBTztzQkFBdEIsS0FBSztnQkFHRSxVQUFVO3NCQURqQixTQUFTO3VCQUFDLFFBQVEsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGFNb2RlbCB9IGZyb20gJy4uLy4uL2RhdGEvZGF0YS1tb2RlbCc7XG5pbXBvcnQgeyBDb2xsZWN0aW9uIH0gZnJvbSAnLi4vLi4vZGF0YS9kYXRhLWNvbGxlY3Rpb24nO1xuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIE5nYk9mZmNhbnZhcyxcbiAgTmdiT2ZmY2FudmFzTW9kdWxlLFxuICBOZ2JPZmZjYW52YXNSZWYsXG59IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEYXRhTWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9tZXNzYWdlcy9tZXNzYWdlLnNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZha2VEZWxldGVSZXN1bHQge1xuICBjb3VudDogbnVtYmVyO1xuICBkZXRhaWxzOiBbc3RyaW5nLCBudW1iZXJdW107XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RhdGEtc2FmZS1kZWxldGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2RlbGV0ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NkZWxldGUuY29tcG9uZW50LnNhc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTmdiT2ZmY2FudmFzTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgU2FmZURlbGV0ZUNvbXBvbmVudDxUIGV4dGVuZHMgRGF0YU1vZGVsPiB7XG4gIEBJbnB1dCgpIHB1YmxpYyBtb2RlbCE6IFQ7XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXJ2aWNlPzogQ29sbGVjdGlvbjxUPjtcbiAgQElucHV0KCkgcHVibGljIGFjdGlvbkZuPzogKG1vZGVsOiBUKSA9PiBQcm9taXNlPHsgc3VjY2VzczogYm9vbGVhbiB9PjtcbiAgQElucHV0KCkgcHVibGljIGNoZWNrczogeyBbaW5kZXg6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG4gIEBJbnB1dCgpIHB1YmxpYyBtZXNzYWdlczogeyBzdWNjZXNzPzogc3RyaW5nOyBlcnJvcj86IHN0cmluZyB9ID0ge307XG4gIEBPdXRwdXQoKSBwdWJsaWMgZGVsZXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RmFrZURlbGV0ZVJlc3VsdD4oKTtcbiAgQElucHV0KCkgcHVibGljIGRpc3BsYXk6ICdmYnV0dG9uJyB8ICdidXR0b24nIHwgJ2ljb24nIHwgJ2N1c3RvbScgPSAnYnV0dG9uJztcbiAgcHVibGljIHJlc3VsdD86IEZha2VEZWxldGVSZXN1bHQ7XG4gIEBWaWV3Q2hpbGQoJ2RpYWxvZycsIHtzdGF0aWM6IHRydWV9KVxuICBwcml2YXRlIF9kaWFsb2dSZWY/OiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcbiAgcHJpdmF0ZSBvZmM/OiBOZ2JPZmZjYW52YXNSZWY7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfb2ZjOiBOZ2JPZmZjYW52YXMsIHByaXZhdGUgX21zZ3M6IERhdGFNZXNzYWdlU2VydmljZSkge1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoZWNrRGVsZXRlKG1vZGVsOiBEYXRhTW9kZWwpIHtcbiAgICBjb25zdCBzZXJ2aWNlID0gdGhpcy5zZXJ2aWNlIHx8IHRoaXMubW9kZWwuX2NvbGxlY3Rpb247XG4gICAgaWYgKHNlcnZpY2UpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMucmVzdWx0ID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICAgICAgc2VydmljZS5kZWxldGUodGhpcy5tb2RlbCwge3BhcmFtczoge2RvaXQ6ICdubyd9fSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLm9mYyA9IHRoaXMuX29mYy5vcGVuKHRoaXMuX2RpYWxvZ1JlZiwge1xuICAgICAgICAgIHBvc2l0aW9uOiAnZW5kJyxcbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgIGlmICh0aGlzLm1lc3NhZ2VzLmVycm9yKSB7XG4gICAgICAgICAgdGhpcy5fbXNncy5lcnJvcihcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZXMuZXJyb3IsXG4gICAgICAgICAgICAoZSBhcyBhbnkpLmVycm9yPy5tZXNzYWdlIHx8IChlIGFzIGFueSkubWVzc2FnZSB8fCAnJ1xuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVhbGx5RGVsZXRlKCkge1xuICAgIGlmICh0aGlzLmFjdGlvbkZuKSB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmFjdGlvbkZuKHRoaXMubW9kZWwpO1xuICAgICAgaWYgKHJlcy5zdWNjZXNzICYmIHRoaXMubWVzc2FnZXMuc3VjY2Vzcykge1xuICAgICAgICB0aGlzLl9tc2dzLnN1Y2Nlc3ModGhpcy5tZXNzYWdlcy5zdWNjZXNzKTtcbiAgICAgIH0gZWxzZSBpZiAoIXJlcy5zdWNjZXNzICYmIHRoaXMubWVzc2FnZXMuZXJyb3IpIHtcbiAgICAgICAgdGhpcy5fbXNncy5lcnJvcih0aGlzLm1lc3NhZ2VzLmVycm9yKTtcbiAgICAgIH1cbiAgICAgIHRoaXMub2ZjPy5jbG9zZSgpO1xuICAgICAgaWYgKHJlcy5zdWNjZXNzKSB7XG4gICAgICAgIHRoaXMuZGVsZXRlZC5lbWl0KHRoaXMucmVzdWx0KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc2VydmljZSA9IHRoaXMuc2VydmljZSB8fCB0aGlzLm1vZGVsLl9jb2xsZWN0aW9uO1xuICAgICAgaWYgKHNlcnZpY2UpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0aGlzLnJlc3VsdCA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxuICAgICAgICAgICAgc2VydmljZS5kZWxldGUodGhpcy5tb2RlbCwge3BhcmFtczoge2RvaXQ6ICdyZWFsbHknfX0pXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAodGhpcy5tZXNzYWdlcy5zdWNjZXNzKSB7XG4gICAgICAgICAgICB0aGlzLl9tc2dzLnN1Y2Nlc3ModGhpcy5tZXNzYWdlcy5zdWNjZXNzKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5vZmM/LmNsb3NlKCk7XG4gICAgICAgICAgdGhpcy5kZWxldGVkLmVtaXQodGhpcy5yZXN1bHQpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICBpZiAodGhpcy5tZXNzYWdlcy5lcnJvcikge1xuICAgICAgICAgICAgdGhpcy5fbXNncy5lcnJvcihcbiAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlcy5lcnJvcixcbiAgICAgICAgICAgICAgKGUgYXMgYW55KS5lcnJvcj8ubWVzc2FnZSB8fCAoZSBhcyBhbnkpLm1lc3NhZ2UgfHwgJydcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCJcbjxuZy10ZW1wbGF0ZSAjZGlhbG9nIGxldC1vZmZjYW52YXM+XG4gIDxkaXYgY2xhc3M9XCJvZmZjYW52YXMtaGVhZGVyXCI+XG4gICAgPGgyIGNsYXNzPVwib2ZmY2FudmFzLXRpdGxlIHRleHQtZGFuZ2VyIHRleHQtY2VudGVyXCI+PGkgY2xhc3M9XCJiaSBiaS10cmFzaCBtZS0yXCI+PC9pPlN1cHByaW1lciByw6llbGxlbWVudCA/PzwvaDI+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwib2ZmY2FudmFzLWJvZHkgdGV4dC1kYW5nZXJcIiAqbmdJZj1cInJlc3VsdFwiPlxuICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBteS00IGZzLTFcIj48aSBjbGFzcz1cImJpIGJpLWV4Y2xhbWF0aW9uLWRpYW1vbmQgbXktNVwiPjwvaT48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZnMtNFwiPlxuICAgICAgPHA+TGEgc3VwcHJlc3Npb24gZGUgY2V0IMOpbMOpbWVudCBzdXBwcmltZXJhIHt7cmVzdWx0LmNvdW50fX0gw6lsw6ltZW50cyBkYW5zIGxhIGJhc2UgZGUgZG9ubsOpZXMuLjwvcD5cbiAgICA8L2Rpdj5cbiAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1zbSB0YWJsZS1zdHJpcGVkIHRhYmxlLWRhbmdlclwiPlxuICAgICAgPHRoZWFkPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRoPlR5cGUgZCfDqWzDqW1lbnQ8L3RoPlxuICAgICAgICAgIDx0aD5Ob21icmU8L3RoPlxuICAgICAgICA8L3RyPlxuICAgICAgPC90aGVhZD5cbiAgICAgIDx0Ym9keT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcmwgb2YgcmVzdWx0LmRldGFpbHNcIj5cbiAgICAgICAgICA8dHI+XG4gICAgICAgICAgICA8dGQ+e3tjaGVja3NbcmxbMF1dID8gY2hlY2tzW3JsWzBdXSA6IHJsWzBdfX08L3RkPlxuICAgICAgICAgICAgPHRkPnt7cmxbMV19fTwvdGQ+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L3Rib2R5PlxuICAgIDwvdGFibGU+XG4gICAgPGJ1dHRvbiBjbGFzcz1cInctMTAwIGJ0biBidG4tbGcgYnRuLWRhbmdlclwiIChjbGljayk9XCJyZWFsbHlEZWxldGUoKVwiPjxpIGNsYXNzPVwiYmkgYmktdHJhc2ggbWUtMlwiPjwvaT5KZSBjb25maXJtZSBsYSBzdXBwcmVzc2lvbjwvYnV0dG9uPlxuICAgIDxidXR0b24gY2xhc3M9XCJ3LTEwMCBidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5IG15LTNcIiAoY2xpY2spPVwib2ZmY2FudmFzLmNsb3NlKClcIj48aSBjbGFzcz1cImJpIGJpLWRvb3Itb3BlbiBtZS0yXCI+PC9pPkplIHJlbm9uY2Ugw6AgbGEgc3VwcHJlc3Npb248L2J1dHRvbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNjb250ZW50VHBsPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPlxuPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWRhbmdlclwiIChjbGljayk9XCJjaGVja0RlbGV0ZShtb2RlbClcIiAqbmdJZj1cImRpc3BsYXk9PT0nYnV0dG9uJ1wiPjxpIGNsYXNzPVwiYmkgYmktdHJhc2hcIj48L2k+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50VHBsXCI+PC9uZy1jb250YWluZXI+XG48L2J1dHRvbj5cbjxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLWRhbmdlciBmbG9hdC1lbmRcIiAoY2xpY2spPVwiY2hlY2tEZWxldGUobW9kZWwpXCIgKm5nSWY9XCJkaXNwbGF5PT09J2ZidXR0b24nXCI+PGkgY2xhc3M9XCJiaSBiaS10cmFzaCBteC0yXCI+PC9pPjwvYnV0dG9uPjxpIGNsYXNzPVwiYmkgYmktdHJhc2ggbXgtMlwiIChjbGljayk9XCJjaGVja0RlbGV0ZShtb2RlbClcIiAqbmdJZj1cImRpc3BsYXk9PT0naWNvbidcIiByb2xlPVwiYnV0dG9uXCI+PC9pPlxuPGRpdiAoY2xpY2spPVwiY2hlY2tEZWxldGUobW9kZWwpXCIgKm5nSWY9XCJkaXNwbGF5PT09J2N1c3RvbSdcIiByb2xlPVwiYnV0dG9uXCI+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50VHBsXCI+PC9uZy1jb250YWluZXI+XG48L2Rpdj4iXX0=
@@ -0,0 +1,58 @@
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
+ 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
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: MessageZoneComponent, deps: [{ token: i1.DataMessageService }], target: i0.ɵɵFactoryTarget.Component }); }
27
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", 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: [
28
+ trigger('dispStatus', [
29
+ transition('void => *', [
30
+ style({ opacity: 0 }),
31
+ animate(550, style({ opacity: 1 })),
32
+ ]),
33
+ transition('* => void', [
34
+ style({ opacity: '*' }),
35
+ animate(550, style({ opacity: 0 })),
36
+ ]),
37
+ ]),
38
+ ] }); }
39
+ }
40
+ export { MessageZoneComponent };
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: MessageZoneComponent, decorators: [{
42
+ type: Component,
43
+ args: [{ selector: 'data-message-zone', standalone: true, imports: [CommonModule], providers: [provideAnimations()], animations: [
44
+ trigger('dispStatus', [
45
+ transition('void => *', [
46
+ style({ opacity: 0 }),
47
+ animate(550, style({ opacity: 1 })),
48
+ ]),
49
+ transition('* => void', [
50
+ style({ opacity: '*' }),
51
+ animate(550, style({ opacity: 0 })),
52
+ ]),
53
+ ]),
54
+ ], 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"] }]
55
+ }], ctorParameters: function () { return [{ type: i1.DataMessageService }]; }, propDecorators: { filter: [{
56
+ type: Input
57
+ }] } });
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS16b25lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEvc3JjL2xpYi9tZXNzYWdlcy9tZXNzYWdlLXpvbmUvbWVzc2FnZS16b25lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEvc3JjL2xpYi9tZXNzYWdlcy9tZXNzYWdlLXpvbmUvbWVzc2FnZS16b25lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFMUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7O0FBRXpFLE1Bb0JhLG9CQUFvQjtJQUsvQixZQUFtQixRQUE0QjtRQUE1QixhQUFRLEdBQVIsUUFBUSxDQUFvQjtRQUh4QyxZQUFPLEdBQWMsRUFBRSxDQUFDO1FBQ3ZCLG9CQUFlLEdBQUcsSUFBSSxhQUFhLEVBQVEsQ0FBQztJQUVGLENBQUM7SUFFNUMsUUFBUTtRQUNiLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTzthQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQzthQUNyQyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQyxDQUFDOzhHQWxCVSxvQkFBb0I7a0dBQXBCLG9CQUFvQiw4RkFkcEIsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLDBCQ2JsQyx1ZEFNTSxpT0RNTSxZQUFZLGtQQUVWO1lBQ1YsT0FBTyxDQUFDLFlBQVksRUFBRTtnQkFDcEIsVUFBVSxDQUFDLFdBQVcsRUFBRTtvQkFDdEIsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO29CQUNyQixPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2lCQUNwQyxDQUFDO2dCQUNGLFVBQVUsQ0FBQyxXQUFXLEVBQUU7b0JBQ3RCLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQztvQkFDdkIsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztpQkFDcEMsQ0FBQzthQUNILENBQUM7U0FDSDs7U0FFVSxvQkFBb0I7MkZBQXBCLG9CQUFvQjtrQkFwQmhDLFNBQVM7K0JBQ0UsbUJBQW1CLGNBR2pCLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyxhQUNaLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxjQUNwQjt3QkFDVixPQUFPLENBQUMsWUFBWSxFQUFFOzRCQUNwQixVQUFVLENBQUMsV0FBVyxFQUFFO2dDQUN0QixLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0NBQ3JCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7NkJBQ3BDLENBQUM7NEJBQ0YsVUFBVSxDQUFDLFdBQVcsRUFBRTtnQ0FDdEIsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDO2dDQUN2QixPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDOzZCQUNwQyxDQUFDO3lCQUNILENBQUM7cUJBQ0g7eUdBR2UsTUFBTTtzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBhbmltYXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgRGF0YU1lc3NhZ2VTZXJ2aWNlLCBNZXNzYWdlIH0gZnJvbSAnLi4vbWVzc2FnZS5zZXJ2aWNlJztcbmltcG9ydCB7IFJlcGxheVN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IHByb3ZpZGVBbmltYXRpb25zIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlci9hbmltYXRpb25zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGF0YS1tZXNzYWdlLXpvbmUnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWVzc2FnZS16b25lLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWVzc2FnZS16b25lLmNvbXBvbmVudC5zYXNzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBwcm92aWRlcnM6IFtwcm92aWRlQW5pbWF0aW9ucygpXSxcbiAgYW5pbWF0aW9uczogW1xuICAgIHRyaWdnZXIoJ2Rpc3BTdGF0dXMnLCBbXG4gICAgICB0cmFuc2l0aW9uKCd2b2lkID0+IConLCBbXG4gICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCB9KSxcbiAgICAgICAgYW5pbWF0ZSg1NTAsIHN0eWxlKHsgb3BhY2l0eTogMSB9KSksXG4gICAgICBdKSxcbiAgICAgIHRyYW5zaXRpb24oJyogPT4gdm9pZCcsIFtcbiAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAnKicgfSksXG4gICAgICAgIGFuaW1hdGUoNTUwLCBzdHlsZSh7IG9wYWNpdHk6IDAgfSkpLFxuICAgICAgXSksXG4gICAgXSksXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE1lc3NhZ2Vab25lQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBwdWJsaWMgZmlsdGVyPzogc3RyaW5nO1xuICBwdWJsaWMgY3VycmVudDogTWVzc2FnZVtdID0gW107XG4gIHByaXZhdGUgX3N1YnNjcmlwdGlvbnMkID0gbmV3IFJlcGxheVN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgbWVzc2FnZXM6IERhdGFNZXNzYWdlU2VydmljZSkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5tZXNzYWdlcy5jdXJyZW50XG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fc3Vic2NyaXB0aW9ucyQpKVxuICAgICAgLnN1YnNjcmliZSgobWVzc2FnZXMpID0+IHtcbiAgICAgICAgdGhpcy5jdXJyZW50ID0gbWVzc2FnZXM7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zJC5uZXh0KCk7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucyQuY29tcGxldGUoKTtcbiAgfVxufVxuIiwiXG48ZGl2IGNsYXNzPVwibWVzc2FnZXpvbmVcIj5cbiAgPGRpdiBjbGFzcz1cImFsZXJ0XCIgKm5nRm9yPVwibGV0IG1lc3NhZ2Ugb2YgY3VycmVudFwiIFtAZGlzcFN0YXR1c109XCJtZXNzYWdlLnN0YXR1c1wiIFtjbGFzc109XCJtZXNzYWdlLnN0eWxlXCIgKGNsaWNrKT1cIm1lc3NhZ2Uuc2hvd1RyYWNlPSFtZXNzYWdlLnNob3dUcmFjZVwiPlxuICAgIDxidXR0b24gY2xhc3M9XCJidG4tY2xvc2VcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm1lc3NhZ2VzLmFjayhtZXNzYWdlKVwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiPjwvYnV0dG9uPjxzdHJvbmc+e3ttZXNzYWdlLnRpdGxlfX08L3N0cm9uZz4mbmJzcDsge3ttZXNzYWdlLm1lc3NhZ2V9fVxuICAgIDxkaXYgY2xhc3M9XCJwcmV0cmFjZVwiICpuZ0lmPVwibWVzc2FnZS5zaG93VHJhY2VcIj57e21lc3NhZ2UudHJhY2V9fTwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PiJdfQ==
@@ -0,0 +1,152 @@
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
+ 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: "16.0.0", 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: "16.0.0", ngImport: i0, type: DataMessageService, providedIn: "root" }); }
139
+ }
140
+ export { DataMessageService };
141
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: DataMessageService, decorators: [{
142
+ type: Injectable,
143
+ args: [{
144
+ providedIn: "root"
145
+ }]
146
+ }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: undefined, decorators: [{
147
+ type: Optional
148
+ }, {
149
+ type: Inject,
150
+ args: [DATA_MESSAGE_SOUNDS]
151
+ }] }]; } });
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS9zcmMvbGliL21lc3NhZ2VzL21lc3NhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQVUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBYSxhQUFhLEVBQWdCLEtBQUssRUFBQyxNQUFNLE1BQU0sQ0FBQzs7QUFNcEUsTUFBTSxDQUFOLElBQVksZ0JBS1g7QUFMRCxXQUFZLGdCQUFnQjtJQUMxQixnRUFBYyxDQUFBO0lBQ2QsMERBQVcsQ0FBQTtJQUNYLGlFQUFlLENBQUE7SUFDZiwrREFBYyxDQUFBO0FBQ2hCLENBQUMsRUFMVyxnQkFBZ0IsS0FBaEIsZ0JBQWdCLFFBSzNCO0FBRUQsTUFBTSxDQUFOLElBQVksTUFFWDtBQUZELFdBQVksTUFBTTtJQUNoQix1Q0FBTSxDQUFBO0lBQUUsbUNBQUksQ0FBQTtJQUFFLGlDQUFHLENBQUE7QUFDbkIsQ0FBQyxFQUZXLE1BQU0sS0FBTixNQUFNLFFBRWpCO0FBRUQsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLENBQUM7QUFNckMsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxjQUFjLENBQWMscUJBQXFCLENBQUMsQ0FBQztBQUcxRixNQUFNLE9BQU8sT0FBTztJQUlsQixZQUFtQixLQUFhLEVBQ2Isd0JBQXNCLEVBQ3RCLFVBQWtCLEVBQUUsRUFDcEIsUUFBYSxJQUFJLEVBQ2pCLE1BQWMsdUJBQXVCO1FBSnJDLFVBQUssR0FBTCxLQUFLLENBQVE7UUFDYixTQUFJLEdBQUosSUFBSSxDQUFrQjtRQUN0QixZQUFPLEdBQVAsT0FBTyxDQUFhO1FBQ3BCLFVBQUssR0FBTCxLQUFLLENBQVk7UUFDakIsUUFBRyxHQUFILEdBQUcsQ0FBa0M7UUFQakQsV0FBTSxH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QUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1QixDQUFDOzhHQXRHVSxrQkFBa0Isd0NBT0csbUJBQW1CO2tIQVB4QyxrQkFBa0IsY0FGakIsTUFBTTs7U0FFUCxrQkFBa0I7MkZBQWxCLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQVFjLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBOZ1pvbmUsIE9wdGlvbmFsfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0LCBTdWJzY3JpcHRpb24sIHRpbWVyfSBmcm9tIFwicnhqc1wiO1xuXG5leHBvcnQgY29uc3QgZW51bSBUWVBFIHtcbiAgU1VDQ0VTUywgSU5GTywgV0FSTklORywgREFOR0VSXG59XG5cbmV4cG9ydCBlbnVtIERFRkFVTFRfVElNRU9VVFMge1xuICBTVUNDRVNTID0gMzAwMCxcbiAgSU5GTyA9IDQwMDAsXG4gIFdBUk5JTkcgPSAxMDAwMCxcbiAgREFOR0VSID0gMzAwMDBcbn1cblxuZXhwb3J0IGVudW0gU1RBVFVTIHtcbiAgVU5ESVNQLCBESVNQLCBBQ0tcbn1cblxuY29uc3QgREVGQVVMVF9NRVNTQUdFX1RJTUVPVVQgPSA1MDAwO1xuXG5leHBvcnQgaW50ZXJmYWNlIElTb3VuZFR5cGVzIHtcbiAgW2luZGV4OiBzdHJpbmddOiBzdHJpbmdcbn1cblxuZXhwb3J0IGNvbnN0IERBVEFfTUVTU0FHRV9TT1VORFMgPSBuZXcgSW5qZWN0aW9uVG9rZW48SVNvdW5kVHlwZXM+KFwiZGF0YS5tZXNzYWdlLnNvdW5kc1wiKTtcblxuXG5leHBvcnQgY2xhc3MgTWVzc2FnZSB7XG4gIHB1YmxpYyBzdGF0dXM6IHN0cmluZyA9IFNUQVRVU1tTVEFUVVMuVU5ESVNQXTtcbiAgcHVibGljIHNob3dUcmFjZSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0aXRsZTogc3RyaW5nLFxuICAgICAgICAgICAgICBwdWJsaWMgdHlwZTogVFlQRSA9IFRZUEUuSU5GTyxcbiAgICAgICAgICAgICAgcHVibGljIG1lc3NhZ2U6IHN0cmluZyA9IFwiXCIsXG4gICAgICAgICAgICAgIHB1YmxpYyB0cmFjZTogYW55ID0gbnVsbCxcbiAgICAgICAgICAgICAgcHVibGljIHR0bDogbnVtYmVyID0gREVGQVVMVF9NRVNTQUdFX1RJTUVPVVQpIHtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3R5bGUoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy50eXBlID09PSBUWVBFLkRBTkdFUikge1xuICAgICAgcmV0dXJuIFwiYWxlcnQgYWxlcnQtZGlzbWlzc2libGUgYWxlcnQtZGFuZ2VyXCI7XG4gICAgfVxuICAgIGlmICh0aGlzLnR5cGUgPT09IFRZUEUuSU5GTykge1xuICAgICAgcmV0dXJuIFwiYWxlcnQgYWxlcnQtZGlzbWlzc2libGUgYWxlcnQtaW5mb1wiO1xuICAgIH1cbiAgICBpZiAodGhpcy50eXBlID09PSBUWVBFLldBUk5JTkcpIHtcbiAgICAgIHJldHVybiBcImFsZXJ0IGFsZXJ0LWRpc21pc3NpYmxlIGFsZXJ0LXdhcm5pbmdcIjtcbiAgICB9XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gVFlQRS5TVUNDRVNTKSB7XG4gICAgICByZXR1cm4gXCJhbGVydCBhbGVydC1kaXNtaXNzaWJsZSBhbGVydC1zdWNjZXNzXCI7XG4gICAgfVxuICAgIHJldHVybiBcImFsZXJ0IGFsZXJ0LWRpc21pc3NpYmxlIGFsZXJ0LXN1Y2Nlc3NcIjtcbiAgfVxuXG4gIHB1YmxpYyBhY2soKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0dXMgPSBTVEFUVVNbU1RBVFVTLkFDS107XG4gIH1cbn1cblxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46IFwicm9vdFwiXG59KVxuZXhwb3J0IGNsYXNzIERhdGFNZXNzYWdlU2VydmljZSB7XG4gIHB1YmxpYyBfbWVzc2FnZXMkOiBSZXBsYXlTdWJqZWN0PE1lc3NhZ2VbXT4gPSBuZXcgUmVwbGF5U3ViamVjdDxNZXNzYWdlW10+KDEpO1xuICBwcml2YXRlIF9tZXNzYWdlczogTWVzc2FnZVtdID0gW107XG4gIHByaXZhdGUgX3RpbWVyITogT2JzZXJ2YWJsZTxhbnk+O1xuICBwcml2YXRlIF9zdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IocHVibGljIG5nWm9uZTogTmdab25lLFxuICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KERBVEFfTUVTU0FHRV9TT1VORFMpIHB1YmxpYyBzb3VuZHM6IElTb3VuZFR5cGVzKSB7XG4gICAgdGhpcy5pbml0KCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGN1cnJlbnQoKTogT2JzZXJ2YWJsZTxNZXNzYWdlW10+IHtcbiAgICByZXR1cm4gdGhpcy5fbWVzc2FnZXMkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGluaXQoKTogdm9pZCB7XG4gICAgbGV0IGNoYW5nZWQgPSBmYWxzZTtcbiAgICBpZiAoIXRoaXMuX3RpbWVyKSB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgIHRoaXMuX3RpbWVyID0gdGltZXIoNTAwLCA1MDApO1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb24gPSB0aGlzLl90aW1lci5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIGZvciAoY29uc3QgbSBvZiB0aGlzLl9tZXNzYWdlcykge1xuICAgICAgICAgICAgbS50dGwgLT0gNTAwO1xuICAgICAgICAgICAgaWYgKG0udHRsIDw9IDApIHtcbiAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChjaGFuZ2VkKSB7XG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBvdXQ6IE1lc3NhZ2VbXSA9IFtdO1xuICAgICAgICAgICAgICBmb3IgKGNvbnN0IG0gb2YgdGhpcy5fbWVzc2FnZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAobS50dGwgPj0gMCkge1xuICAgICAgICAgICAgICAgICAgb3V0LnB1c2gobSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHRoaXMuX21lc3NhZ2VzID0gb3V0O1xuICAgICAgICAgICAgICB0aGlzLl9ub3RpZnkoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgc3VjY2Vzcyh0aXRsZTogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcgPSBcIlwiLCB0cmFjZTogYW55ID0gbnVsbCwgdGltZW91dDogbnVtYmVyID0gREVGQVVMVF9USU1FT1VUUy5TVUNDRVNTKTogdm9pZCB7XG4gICAgdGhpcy5fbWVzc2FnZXMucHVzaChuZXcgTWVzc2FnZSh0aXRsZSwgVFlQRS5TVUNDRVNTLCBtZXNzYWdlLCB0cmFjZSwgdGltZW91dCkpO1xuICAgIHRoaXMucGxheShcInN1Y2Nlc3NcIik7XG4gICAgdGhpcy5fbm90aWZ5KCk7XG4gIH1cblxuICBwdWJsaWMgaW5mbyh0aXRsZTogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcgPSBcIlwiLCB0cmFjZTogYW55ID0gbnVsbCwgdGltZW91dDogbnVtYmVyID0gREVGQVVMVF9USU1FT1VUUy5JTkZPKTogdm9pZCB7XG4gICAgdGhpcy5fbWVzc2FnZXMucHVzaChuZXcgTWVzc2FnZSh0aXRsZSwgVFlQRS5JTkZPLCBtZXNzYWdlLCB0cmFjZSwgdGltZW91dCkpO1xuICAgIHRoaXMucGxheShcImluZm9cIik7XG4gICAgdGhpcy5fbm90aWZ5KCk7XG4gIH1cblxuICBwdWJsaWMgd2FybmluZyh0aXRsZTogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcgPSBcIlwiLCB0cmFjZTogYW55ID0gbnVsbCwgdGltZW91dDogbnVtYmVyID0gREVGQVVMVF9USU1FT1VUUy5XQVJOSU5HKTogdm9pZCB7XG4gICAgdGhpcy5fbWVzc2FnZXMucHVzaChuZXcgTWVzc2FnZSh0aXRsZSwgVFlQRS5XQVJOSU5HLCBtZXNzYWdlLCB0cmFjZSwgdGltZW91dCkpO1xuICAgIHRoaXMucGxheShcIndhcm5pbmdcIilcbiAgICB0aGlzLl9ub3RpZnkoKTtcbiAgfVxuXG4gIHB1YmxpYyBkYW5nZXIodGl0bGU6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nID0gXCJcIiwgdHJhY2U6IGFueSA9IG51bGwsIHRpbWVvdXQ6IG51bWJlciA9IERFRkFVTFRfVElNRU9VVFMuREFOR0VSKTogdm9pZCB7XG4gICAgdGhpcy5fbWVzc2FnZXMucHVzaChuZXcgTWVzc2FnZSh0aXRsZSwgVFlQRS5EQU5HRVIsIG1lc3NhZ2UsIHRyYWNlLCBERUZBVUxUX1RJTUVPVVRTLkRBTkdFUikpO1xuICAgIHRoaXMucGxheShcImVycm9yXCIpXG4gICAgdGhpcy5fbm90aWZ5KCk7XG4gIH1cblxuICBwdWJsaWMgZXJyb3IodGl0bGU6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nID0gXCJcIiwgdHJhY2U6IGFueSA9IG51bGwpOiB2b2lkIHtcbiAgICB0aGlzLmRhbmdlcih0aXRsZSwgbWVzc2FnZSwgdHJhY2UpO1xuICB9XG5cbiAgcHVibGljIGRlYnVnKHRpdGxlOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZyA9IFwiXCIsIHRyYWNlOiBhbnkgPSBudWxsKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2codGl0bGUsIG1lc3NhZ2UsIHRyYWNlKTtcbiAgfVxuXG4gIHB1YmxpYyBhY2sobWVzc2FnZTogTWVzc2FnZSk6IHZvaWQge1xuICAgIG1lc3NhZ2UuYWNrKCk7XG4gICAgdGhpcy5fbm90aWZ5KCk7XG4gIH1cblxuICBwdWJsaWMgcGxheSh0eXBlOiBzdHJpbmcgPSBcIm5vdGlmeVwiKSB7XG4gICAgaWYgKHRoaXMuc291bmRzICYmIHRoaXMuc291bmRzW3R5cGVdKSB7XG4gICAgICBjb25zdCBhdWRpbyA9IG5ldyBBdWRpbyh0aGlzLnNvdW5kc1t0eXBlXSk7XG4gICAgICBhdWRpby5wbGF5KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfbm90aWZ5KCk6IHZvaWQge1xuICAgIGNvbnN0IG91dDogTWVzc2FnZVtdID0gW107XG4gICAgZm9yIChjb25zdCBtZXNzYWdlIG9mIHRoaXMuX21lc3NhZ2VzKSB7XG4gICAgICBpZiAoKG1lc3NhZ2Uuc3RhdHVzID09PSBTVEFUVVNbU1RBVFVTLlVORElTUF0pIHx8XG4gICAgICAgIChtZXNzYWdlLnN0YXR1cyA9PT0gU1RBVFVTW1NUQVRVUy5ESVNQXSkpIHtcbiAgICAgICAgbWVzc2FnZS5zdGF0dXMgPSBTVEFUVVNbU1RBVFVTLkRJU1BdO1xuICAgICAgICBvdXQucHVzaChtZXNzYWdlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fbWVzc2FnZXMkLm5leHQob3V0KTtcbiAgfVxuXG59XG4iXX0=
@@ -0,0 +1,66 @@
1
+ import { Component, 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 { Subject, takeUntil } from 'rxjs';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/common";
9
+ import * as i2 from "@ng-bootstrap/ng-bootstrap";
10
+ 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._subscriptions$ = new Subject();
18
+ }
19
+ ngOnInit() {
20
+ this.list.messages$
21
+ .pipe(takeUntil(this._subscriptions$), 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
+ ngOnDestroy() {
31
+ this._subscriptions$.next();
32
+ this._subscriptions$.complete();
33
+ }
34
+ disable() {
35
+ this.list.fields.disable(this.field);
36
+ }
37
+ enable(f) {
38
+ this.list.fields.move(f.name, 'after', this.field);
39
+ this.list.fields.enable(f.name);
40
+ }
41
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ModelListFieldHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
42
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", 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: ["disabled"] }, { kind: "component", type: ModelListSorterComponent, selector: "data-model-list-sorter", inputs: ["list", "field"] }] }); }
43
+ }
44
+ export { ModelListFieldHeaderComponent };
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ModelListFieldHeaderComponent, decorators: [{
46
+ type: Component,
47
+ 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"] }]
48
+ }], ctorParameters: function () { return []; }, propDecorators: { list: [{
49
+ type: Input
50
+ }], field: [{
51
+ type: Input
52
+ }], sort: [{
53
+ type: Input
54
+ }], sortField: [{
55
+ type: Input
56
+ }], menuMode: [{
57
+ type: Input
58
+ }], sortMode: [{
59
+ type: Input
60
+ }], display: [{
61
+ type: Input
62
+ }], mnu: [{
63
+ type: ViewChild,
64
+ args: ['mnu', { static: false }]
65
+ }] } });
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtbGlzdC1maWVsZC1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS9zcmMvbGliL21vZGVsbGlzdC9tb2RlbC1saXN0LWZpZWxkcy9tb2RlbC1saXN0LWZpZWxkLWhlYWRlci9tb2RlbC1saXN0LWZpZWxkLWhlYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvbW9kZWxsaXN0L21vZGVsLWxpc3QtZmllbGRzL21vZGVsLWxpc3QtZmllbGQtaGVhZGVyL21vZGVsLWxpc3QtZmllbGQtaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJL0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBZSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVFQUF1RSxDQUFDO0FBQ2pILE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7OztBQUUxQyxNQU9hLDZCQUE2QjtJQWdCeEM7UUFYZ0IsU0FBSSxHQUFhLEtBQUssQ0FBQztRQUV2QixhQUFRLEdBQThCLE1BQU0sQ0FBQztRQUM3QyxhQUFRLEdBQThCLE1BQU0sQ0FBQztRQUl0RCxpQkFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDN0IsaUJBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQzVCLG9CQUFlLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUUvQixDQUFDO0lBRVQsUUFBUTtRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUzthQUNoQixJQUFJLENBQ0gsU0FBUyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsRUFDL0IsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUNuQzthQUNBLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2YsSUFBSSxDQUFDLFlBQVk7Z0JBQ2YsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUMxRCxJQUFJLENBQUMsWUFBWTtnQkFDZixDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQzFELElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDOUQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVNLE9BQU87UUFDWixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFTSxNQUFNLENBQUMsQ0FBaUI7UUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7OEdBN0NVLDZCQUE2QjtrR0FBN0IsNkJBQTZCLG9VQ2pCMUMsbTBEQXlCTSwwTURWTSxZQUFZLDJkQUFFLGlCQUFpQiwyZ0JBQUUsd0JBQXdCOztTQUV4RCw2QkFBNkI7MkZBQTdCLDZCQUE2QjtrQkFQekMsU0FBUzsrQkFDRSw4QkFBOEIsY0FHNUIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGlCQUFpQixFQUFFLHdCQUF3QixDQUFDOzBFQUtwRCxJQUFJO3NCQUFuQixLQUFLO2dCQUNVLEtBQUs7c0JBQXBCLEtBQUs7Z0JBQ1UsSUFBSTtzQkFBbkIsS0FBSztnQkFDVSxTQUFTO3NCQUF4QixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxPQUFPO3NCQUF0QixLQUFLO2dCQUVzQyxHQUFHO3NCQUE5QyxTQUFTO3VCQUFDLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNb2RlbExpc3QgfSBmcm9tICcuLi8uLi9tb2RlbC1saXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0YU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vZGF0YS9kYXRhLW1vZGVsJztcbmltcG9ydCB7IE1vZGVsTGlzdEZpZWxkIH0gZnJvbSAnLi4vbW9kZWwtbGlzdC1maWVsZHMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nYkRyb3Bkb3duLCBOZ2JEcm9wZG93bk1vZHVsZSB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IE1vZGVsTGlzdFNvcnRlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vZGVsLWxpc3Qtc29ydGVyL21vZGVsLWxpc3Qtc29ydGVyL21vZGVsLWxpc3Qtc29ydGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGF0YS1tb2RlbC1saXN0LWZpZWxkLWhlYWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9tb2RlbC1saXN0LWZpZWxkLWhlYWRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21vZGVsLWxpc3QtZmllbGQtaGVhZGVyLmNvbXBvbmVudC5zYXNzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE5nYkRyb3Bkb3duTW9kdWxlLCBNb2RlbExpc3RTb3J0ZXJDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBNb2RlbExpc3RGaWVsZEhlYWRlckNvbXBvbmVudDxUIGV4dGVuZHMgRGF0YU1vZGVsPlxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95XG57XG4gIEBJbnB1dCgpIHB1YmxpYyBsaXN0ITogTW9kZWxMaXN0PFQ+O1xuICBASW5wdXQoKSBwdWJsaWMgZmllbGQhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyBzb3J0PzogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgc29ydEZpZWxkPzogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgbWVudU1vZGU6ICdoaWRlJyB8ICdzaWRlJyB8ICdjbGljaycgPSAnc2lkZSc7XG4gIEBJbnB1dCgpIHB1YmxpYyBzb3J0TW9kZTogJ2hpZGUnIHwgJ3NpZGUnIHwgJ2NsaWNrJyA9ICdzaWRlJztcbiAgQElucHV0KCkgcHVibGljIGRpc3BsYXk/OiBib29sZWFuO1xuXG4gIEBWaWV3Q2hpbGQoJ21udScsIHsgc3RhdGljOiBmYWxzZSB9KSBwdWJsaWMgbW51PzogTmdiRHJvcGRvd247XG4gIHB1YmxpYyBkaXNwTWVudU1vZGUgPSB0aGlzLm1lbnVNb2RlO1xuICBwdWJsaWMgZGlzcFNvcnRNb2RlID0gdGhpcy5zb3J0TW9kZTtcbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9ucyQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5saXN0Lm1lc3NhZ2VzJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9zdWJzY3JpcHRpb25zJCksXG4gICAgICAgIGZpbHRlcigobSkgPT4gbS5kZXN0ID09PSAnaGVhZGVyJylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKG0pID0+IHtcbiAgICAgICAgdGhpcy5kaXNwTWVudU1vZGUgPVxuICAgICAgICAgIG0ubWVudSAmJiBtLm1lbnUgIT09ICdkZWZhdWx0JyA/IG0ubWVudSA6IHRoaXMubWVudU1vZGU7XG4gICAgICAgIHRoaXMuZGlzcFNvcnRNb2RlID1cbiAgICAgICAgICBtLnNvcnQgJiYgbS5zb3J0ICE9PSAnZGVmYXVsdCcgPyBtLnNvcnQgOiB0aGlzLnNvcnRNb2RlO1xuICAgICAgICB0aGlzLmRpc3BsYXkgPSBtLnNob3cgIT09IHVuZGVmaW5lZCA/IG0uc2hvdyA6IHRoaXMuZGlzcGxheTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMkLm5leHQoKTtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zJC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIGRpc2FibGUoKSB7XG4gICAgdGhpcy5saXN0LmZpZWxkcy5kaXNhYmxlKHRoaXMuZmllbGQpO1xuICB9XG5cbiAgcHVibGljIGVuYWJsZShmOiBNb2RlbExpc3RGaWVsZCkge1xuICAgIHRoaXMubGlzdC5maWVsZHMubW92ZShmLm5hbWUsICdhZnRlcicsIHRoaXMuZmllbGQpO1xuICAgIHRoaXMubGlzdC5maWVsZHMuZW5hYmxlKGYubmFtZSk7XG4gIH1cbn1cbiIsIlxuPG5nLXRlbXBsYXRlICNsYWJlbD48c3BhbiAjcmVmPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD48L3NwYW4+PHNwYW4gKm5nSWY9XCIhcmVmLmNoaWxkcmVuLmxlbmd0aFwiPnt7bGlzdC5maWVsZHMuZ2V0KGZpZWxkKT8ubGFiZWx8fGZpZWxkfX08L3NwYW4+PC9uZy10ZW1wbGF0ZT5cbjxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1yb3cganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtZW5kIHNsYWJlbFwiPlxuICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93LTFcIj5cbiAgICA8ZGF0YS1tb2RlbC1saXN0LXNvcnRlciBbbGlzdF09XCJsaXN0XCIgW2ZpZWxkXT1cInNvcnRGaWVsZHx8ZmllbGRcIiAqbmdJZj1cInNvcnQgJmFtcDsmYW1wOyBkaXNwU29ydE1vZGU9PT0nc2lkZSdcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsYWJlbFwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGF0YS1tb2RlbC1saXN0LXNvcnRlcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNvcnQgfHwgZGlzcFNvcnRNb2RlPT09J2hpZGUnXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibGFiZWxcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJuYXZpY29ucyBkLWZsZXggZmxleC1yb3dcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidHZXN0aW9uIGNoYW1wcydcIiAqbmdJZj1cImRpc3BNZW51TW9kZT09PSdzaWRlJ1wiPjxpIGNsYXNzPVwiYmkgYmktY2FyZXQtbGVmdC1maWxsXCIgcm9sZT1cImJ1dHRvblwiIChjbGljayk9XCJsaXN0LmZpZWxkcy5tb3ZlKGZpZWxkLCAnYmVmb3JlJylcIiBhcmlhLWxhYmVsPVwiRMOpcGxhY2VyIHZlcnMgbGEgZ2F1Y2hlXCI+PC9pPlxuICAgIDxkaXYgbmdiRHJvcGRvd24gI21udT1cIm5nYkRyb3Bkb3duXCIgW2NvbnRhaW5lcl09XCInYm9keSdcIj48aSBjbGFzcz1cImJpIGJpLXJlY29yZFwiIG5nYkRyb3Bkb3duVG9nZ2xlIGFyaWEtbGFiZWw9XCJPdXZyaXIgbGEgYm9pdGUgZGUgZGlhbG9ndWUgZGVzIGNoYW1wc1wiIHJvbGU9XCJidXR0b25cIj48L2k+XG4gICAgICA8ZGl2IG5nYkRyb3Bkb3duTWVudT5cbiAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gKGNsaWNrKT1cImRpc2FibGUoKVwiPjxpIGNsYXNzPVwiYmkgYmktdHJhc2ggbWUtMlwiPjwvaT5TdXBwcmltZXI8L2J1dHRvbj5cbiAgICAgICAgPGg2IGNsYXNzPVwiZHJvcGRvd24taGVhZGVyXCI+QWpvdXRlciB1bmUgY29sb25uZSBhcHLDqHM8L2g2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmIG9mIGxpc3QuZmllbGRzLmZpZWxkc3xhc3luY1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmLmFsbG93ZWQgJmFtcDsmYW1wOyAhZi5lbmFibGVkXCI+XG4gICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSAoY2xpY2spPVwiZW5hYmxlKGYpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJmLmxhYmVsfHxmLm5hbWVcIj48aSBjbGFzcz1cImJpIGJpLXBsdXMtY2lyY2xlIG1lLTJcIj48L2k+e3tmLmxhYmVsfHxmLm5hbWV9fTwvYnV0dG9uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PjxpIGNsYXNzPVwiYmkgYmktY2FyZXQtcmlnaHQtZmlsbFwiIHJvbGU9XCJidXR0b25cIiAoY2xpY2spPVwibGlzdC5maWVsZHMubW92ZShmaWVsZCwgJ2FmdGVyJylcIiBhcmlhLWxhYmVsPVwiRMOpcGxhY2VyIHZlcnMgbGEgZHJvaXRlXCI+PC9pPlxuICA8L2Rpdj5cbjwvZGl2PiJdfQ==
@@ -0,0 +1,65 @@
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
+ 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: "16.0.0", ngImport: i0, type: ModelListFieldsSelectorComponent, deps: [{ token: i1.NgbOffcanvas }], target: i0.ɵɵFactoryTarget.Component }); }
48
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", 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:white;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"], 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"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "ngmodule", type: CdkScrollableModule }, { kind: "ngmodule", type: NgbOffcanvasModule }] }); }
49
+ }
50
+ export { ModelListFieldsSelectorComponent };
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ModelListFieldsSelectorComponent, decorators: [{
52
+ type: Component,
53
+ args: [{ selector: 'data-model-list-fields-selector', standalone: true, imports: [
54
+ CommonModule,
55
+ DragDropModule,
56
+ CdkScrollableModule,
57
+ NgbOffcanvasModule,
58
+ ], 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:white;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"] }]
59
+ }], ctorParameters: function () { return [{ type: i1.NgbOffcanvas }]; }, propDecorators: { list: [{
60
+ type: Input
61
+ }], ofctpl: [{
62
+ type: ViewChild,
63
+ args: ['selector', { static: true }]
64
+ }] } });
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtbGlzdC1maWVsZHMtc2VsZWN0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS9zcmMvbGliL21vZGVsbGlzdC9tb2RlbC1saXN0LWZpZWxkcy9tb2RlbC1saXN0LWZpZWxkcy1zZWxlY3Rvci9tb2RlbC1saXN0LWZpZWxkcy1zZWxlY3Rvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvbW9kZWxsaXN0L21vZGVsLWxpc3QtZmllbGRzL21vZGVsLWxpc3QtZmllbGRzLXNlbGVjdG9yL21vZGVsLWxpc3QtZmllbGRzLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdoRixPQUFPLEVBQ0wsZUFBZSxFQUVmLGNBQWMsR0FDZixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQWdCLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFOUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7OztBQUU3RCxNQUFNLFVBQVUsR0FBRztJQUNqQixrQkFBa0IsRUFBRSxDQUFDO0lBQ3JCLCtCQUErQixFQUFFLEVBQUU7SUFDbkMsTUFBTSxFQUFFLEtBQUs7Q0FDZCxDQUFDO0FBRUYsTUFhYSxnQ0FBZ0M7SUFRM0MsWUFBb0IsSUFBa0I7UUFBbEIsU0FBSSxHQUFKLElBQUksQ0FBYztRQUYvQixZQUFPLEdBQVksS0FBSyxDQUFDO0lBRVMsQ0FBQztJQUVuQyxRQUFRO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNuQyxNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7U0FDMUM7SUFDSCxDQUFDO0lBRU0sSUFBSTtRQUNULElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBSSxDQUFDLE1BQTJCO1FBQzlCLElBQUksR0FBRyxHQUFHLE1BQU0sQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ25DLElBQUksTUFBTSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsYUFBYSxFQUFFO1lBQzlDLEdBQUcsSUFBSSxDQUFDLENBQUM7U0FDVjthQUFNO1lBQ0wsR0FBRyxJQUFJLENBQUMsQ0FBQztTQUNWO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFTSxNQUFNLENBQUMsQ0FBaUI7UUFDN0IsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFO1lBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNsQzthQUFNO1lBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNqQztJQUNILENBQUM7OEdBcENVLGdDQUFnQztrR0FBaEMsZ0NBQWdDLHdHQUZoQyxDQUFDLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLENBQUMsNElDOUJqRSw0bUNBZ0JjLHFrQ0RTVixZQUFZLG9UQUNaLGNBQWMsMmlDQUNkLG1CQUFtQiw4QkFDbkIsa0JBQWtCOztTQUlULGdDQUFnQzsyRkFBaEMsZ0NBQWdDO2tCQWI1QyxTQUFTOytCQUNFLGlDQUFpQyxjQUcvQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixjQUFjO3dCQUNkLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3FCQUNuQixhQUNVLENBQUMsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsQ0FBQzttR0FLL0MsSUFBSTtzQkFBbkIsS0FBSztnQkFFQyxNQUFNO3NCQURaLFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRhTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9kYXRhL2RhdGEtbW9kZWwnO1xuaW1wb3J0IHsgTW9kZWxMaXN0IH0gZnJvbSAnLi4vLi4vbW9kZWwtbGlzdC5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIENES19EUkFHX0NPTkZJRyxcbiAgQ2RrRHJhZ0Ryb3AsXG4gIERyYWdEcm9wTW9kdWxlLFxufSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ2JPZmZjYW52YXMsIE5nYk9mZmNhbnZhc01vZHVsZSB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IE1vZGVsTGlzdEZpZWxkIH0gZnJvbSAnLi4vbW9kZWwtbGlzdC1maWVsZHMnO1xuaW1wb3J0IHsgQ2RrU2Nyb2xsYWJsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xuXG5jb25zdCBEcmFnQ29uZmlnID0ge1xuICBkcmFnU3RhcnRUaHJlc2hvbGQ6IDUsXG4gIHBvaW50ZXJEaXJlY3Rpb25DaGFuZ2VUaHJlc2hvbGQ6IDEwLFxuICB6SW5kZXg6IDEwMDAwLFxufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGF0YS1tb2RlbC1saXN0LWZpZWxkcy1zZWxlY3RvcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9tb2RlbC1saXN0LWZpZWxkcy1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21vZGVsLWxpc3QtZmllbGRzLXNlbGVjdG9yLmNvbXBvbmVudC5zYXNzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRHJhZ0Ryb3BNb2R1bGUsXG4gICAgQ2RrU2Nyb2xsYWJsZU1vZHVsZSxcbiAgICBOZ2JPZmZjYW52YXNNb2R1bGUsXG4gIF0sXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogQ0RLX0RSQUdfQ09ORklHLCB1c2VWYWx1ZTogRHJhZ0NvbmZpZyB9XSxcbn0pXG5leHBvcnQgY2xhc3MgTW9kZWxMaXN0RmllbGRzU2VsZWN0b3JDb21wb25lbnQ8VCBleHRlbmRzIERhdGFNb2RlbD5cbiAgaW1wbGVtZW50cyBPbkluaXRcbntcbiAgQElucHV0KCkgcHVibGljIGxpc3QhOiBNb2RlbExpc3Q8VD47XG4gIEBWaWV3Q2hpbGQoJ3NlbGVjdG9yJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHVibGljIG9mY3RwbCE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBwdWJsaWMgc2VlTW9yZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX29mYzogTmdiT2ZmY2FudmFzKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICBpZiAoIXRoaXMubGlzdCB8fCAhdGhpcy5saXN0LmZpZWxkcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIGxpc3QgLyBmaWVsZHMnKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3BlbigpIHtcbiAgICB0aGlzLl9vZmMub3Blbih0aGlzLm9mY3RwbCk7XG4gIH1cblxuICBkcm9wKCRldmVudDogQ2RrRHJhZ0Ryb3A8VCwgYW55Pikge1xuICAgIGxldCBwb3MgPSAkZXZlbnQuY3VycmVudEluZGV4ICogMTA7XG4gICAgaWYgKCRldmVudC5jdXJyZW50SW5kZXggPiAkZXZlbnQucHJldmlvdXNJbmRleCkge1xuICAgICAgcG9zICs9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBvcyAtPSAxO1xuICAgIH1cbiAgICB0aGlzLmxpc3QuZmllbGRzLnNldFBvc2l0aW9uKCRldmVudC5pdGVtLmRhdGEsIHBvcyk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlKGY6IE1vZGVsTGlzdEZpZWxkKSB7XG4gICAgaWYgKGYuZW5hYmxlZCkge1xuICAgICAgdGhpcy5saXN0LmZpZWxkcy5kaXNhYmxlKGYubmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubGlzdC5maWVsZHMuZW5hYmxlKGYubmFtZSk7XG4gICAgfVxuICB9XG59XG4iLCI8aSBjbGFzcz1cImJpIGJpLWxpc3QtdWxcIiAoY2xpY2spPVwib3BlbigpXCIgcm9sZT1cImJ1dHRvblwiIGFyaWEtbGFiZWw9XCJDaG9peCBkZXMgY2hhbXBzXCI+PC9pPlxuPG5nLXRlbXBsYXRlICNzZWxlY3RvciBsZXQtb2ZmY2FudmFzPlxuICA8ZGl2IGNsYXNzPVwib2ZmY2FudmFzLWhlYWRlclwiPlxuICAgIDxoNCBjbGFzcz1cIm9mZmNhbnZhcy10aXRsZVwiPkNob2l4IGRlcyBjaGFtcHM8L2g0PlxuICAgIDxidXR0b24gY2xhc3M9XCJidG4tY2xvc2VcIiB0eXBlPVwiYnV0dG9uXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgKGNsaWNrKT1cIm9mZmNhbnZhcy5kaXNtaXNzKCd4JylcIj48L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJvZmZjYW52YXMtYm9keVwiIGNka1Njcm9sbGFibGU+XG4gICAgPGRpdiBjbGFzcz1cImZpZWxkcy1saXN0XCIgY2RrRHJvcExpc3QgY2RrRHJvcExpc3RMb2NrQXhpcz1cInlcIiAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiICpuZ0lmPVwibGlzdC5maWVsZHMuZmllbGRzfGFzeW5jIGFzIGZpZWxkc1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZiBvZiBmaWVsZHNcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlZU1vcmUgfHwgZi5wcmlvcml0eSAmZ3Q7PSAwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLWJveFwiIGNka0RyYWcgKGNsaWNrKT1cInRvZ2dsZShmKVwiIFtjZGtEcmFnRGF0YV09XCJmLm5hbWVcIiBbY2xhc3MuZW5hYmxlZF09XCJmLmVuYWJsZWRcIiBbY2xhc3MuY29tcGFjdF09XCJmaWVsZHMubGVuZ3RoJmd0OzMwXCIgW2F0dHIuYXJpYWwtbGFiZWxdPVwiZi5sYWJlbFwiIHJvbGU9XCJidXR0b25cIj57e2YubGFiZWx9fTxzcGFuIGNsYXNzPVwiYmFkZ2UgYmctaW5mb1wiPiB7e2YucHJpb3JpdHl9fTwvc3Bhbj48L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGlua1wiIChjbGljayk9XCJzZWVNb3JlPSFzZWVNb3JlXCI+cGx1cyBkZSBjaGFtcHM8L2J1dHRvbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPiJdfQ==