@arsedizioni/ars-utils 18.1.73 → 18.1.75

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 (115) hide show
  1. package/clipper.common/common/common.module.d.ts +1 -2
  2. package/clipper.common/common/definitions.d.ts +317 -0
  3. package/clipper.common/common/interceptors/auth.interceptor.d.ts +2 -5
  4. package/clipper.common/common/messages.d.ts +4 -0
  5. package/clipper.common/common/services/clipper.service.d.ts +12 -36
  6. package/clipper.ui/{ui/document/documents.d.ts → documents.d.ts} +2 -6
  7. package/clipper.ui/public_api.d.ts +6 -5
  8. package/clipper.ui/ui/browser-dialog/browser-dialog.component.d.ts +30 -143
  9. package/clipper.ui/ui/clipper.scss +270 -106
  10. package/clipper.ui/ui/document/document.component.d.ts +64 -118
  11. package/clipper.ui/ui/document-index/document-index.component.d.ts +34 -0
  12. package/clipper.ui/ui/document-manager/document-manager.d.ts +126 -0
  13. package/clipper.ui/ui/document-menu/document-menu.component.d.ts +28 -0
  14. package/clipper.ui/ui/references/references.component.d.ts +39 -73
  15. package/clipper.ui/ui/search-calendar/search-calendar.component.d.ts +40 -0
  16. package/clipper.ui/ui/search-dialog/search-dialog.component.d.ts +37 -40
  17. package/clipper.ui/ui/search-facets/search-facets.component.d.ts +22 -70
  18. package/clipper.ui/ui/search-free-text-help/search-free-text-help.component.d.ts +0 -1
  19. package/clipper.ui/ui/search-free-text-query-builder/search-free-text-query-builder.component.d.ts +8 -12
  20. package/clipper.ui/ui/search-result-item/search-result-item.component.d.ts +6 -4
  21. package/clipper.ui/ui/search-result-manager/search-result-manager.d.ts +147 -0
  22. package/esm2022/clipper.common/common/common.module.mjs +2 -3
  23. package/esm2022/clipper.common/common/definitions.mjs +1536 -0
  24. package/esm2022/clipper.common/common/interceptors/auth.interceptor.mjs +15 -15
  25. package/esm2022/clipper.common/common/messages.mjs +6 -1
  26. package/esm2022/clipper.common/common/services/clipper.service.mjs +65 -65
  27. package/esm2022/clipper.ui/documents.mjs +51 -0
  28. package/esm2022/clipper.ui/public_api.mjs +7 -6
  29. package/esm2022/clipper.ui/ui/browser-dialog/browser-dialog.component.mjs +320 -784
  30. package/esm2022/clipper.ui/ui/document/document.component.mjs +214 -319
  31. package/esm2022/clipper.ui/ui/document-index/document-index.component.mjs +121 -0
  32. package/esm2022/clipper.ui/ui/document-manager/document-manager.mjs +431 -0
  33. package/esm2022/clipper.ui/ui/document-menu/document-menu.component.mjs +56 -0
  34. package/esm2022/clipper.ui/ui/references/references.component.mjs +244 -438
  35. package/esm2022/clipper.ui/ui/search-calendar/search-calendar.component.mjs +116 -0
  36. package/esm2022/clipper.ui/ui/search-dialog/search-dialog.component.mjs +216 -205
  37. package/esm2022/clipper.ui/ui/search-facets/search-facets.component.mjs +157 -209
  38. package/esm2022/clipper.ui/ui/search-free-text-help/search-free-text-help.component.mjs +7 -8
  39. package/esm2022/clipper.ui/ui/search-free-text-query-builder/search-free-text-query-builder.component.mjs +22 -23
  40. package/esm2022/clipper.ui/ui/search-result-item/search-result-item.component.mjs +12 -10
  41. package/esm2022/clipper.ui/ui/search-result-manager/search-result-manager.mjs +462 -0
  42. package/esm2022/help/components/help-viewer/help-viewer.component.mjs +29 -32
  43. package/esm2022/help/services/help.service.mjs +16 -16
  44. package/esm2022/support.common/common/definitions.mjs +21 -0
  45. package/esm2022/support.common/common/services/support.service.mjs +9 -7
  46. package/esm2022/support.common/public_api.mjs +2 -2
  47. package/esm2022/support.ui/ui/notifications-browser/notification/notification.component.mjs +3 -3
  48. package/esm2022/support.ui/ui/notifications-browser/notifications-browser.component.mjs +4 -5
  49. package/esm2022/ui/ui/dialogs/busy/busy-dialog.component.mjs +3 -3
  50. package/esm2022/ui/ui/dialogs/confirm/confirm-dialog.component.mjs +3 -3
  51. package/esm2022/ui/ui/dialogs/credentials/credentials-dialog.component.mjs +3 -3
  52. package/esm2022/ui/ui/dialogs/info/info-dialog.component.mjs +3 -3
  53. package/esm2022/ui/ui/dialogs/recover-password/recover-password-dialog.component.mjs +3 -3
  54. package/esm2022/ui/ui/dialogs/reset-password/reset-password-dialog.component.mjs +3 -3
  55. package/esm2022/ui.application/public_api.mjs +4 -1
  56. package/esm2022/ui.application/ui/components/button-selector/button-selector.component.mjs +163 -0
  57. package/esm2022/ui.application/ui/components/button-toggle/button-toggle.component.mjs +47 -0
  58. package/esm2022/ui.application/ui/components/chips-selector/chips-selector.component.mjs +239 -0
  59. package/esm2022/ui.application/ui/components/file-preview/file-preview.component.mjs +23 -24
  60. package/esm2022/ui.application/ui/components/filter-bar/filter-bar.component.mjs +3 -3
  61. package/esm2022/ui.application/ui/dialogs/prompt/prompt-dialog.component.mjs +3 -3
  62. package/esm2022/ui.application/ui/dialogs/prompt-date/prompt-date-dialog.component.mjs +3 -3
  63. package/esm2022/ui.application/ui/dialogs/prompt-time/prompt-time-dialog.component.mjs +3 -3
  64. package/esm2022/ui.application/ui/dialogs/select/select-dialog.component.mjs +3 -3
  65. package/esm2022/ui.application/ui/dialogs/select-file/select-file-dialog.component.mjs +3 -3
  66. package/esm2022/ui.application/ui/dialogs/select-picture/select-picture-dialog.component.mjs +3 -3
  67. package/esm2022/ui.application/ui/dialogs/select-tree/select-tree-dialog.component.mjs +3 -3
  68. package/esm2022/ui.application/ui/dialogs/send-to/send-to-dialog.component.mjs +3 -3
  69. package/esm2022/ui.application/ui/messages.mjs +3 -3
  70. package/fesm2022/arsedizioni-ars-utils-clipper.common.mjs +1608 -1507
  71. package/fesm2022/arsedizioni-ars-utils-clipper.common.mjs.map +1 -1
  72. package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs +2276 -2398
  73. package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs.map +1 -1
  74. package/fesm2022/arsedizioni-ars-utils-help.mjs +43 -47
  75. package/fesm2022/arsedizioni-ars-utils-help.mjs.map +1 -1
  76. package/fesm2022/arsedizioni-ars-utils-support.common.mjs +8 -6
  77. package/fesm2022/arsedizioni-ars-utils-support.common.mjs.map +1 -1
  78. package/fesm2022/arsedizioni-ars-utils-support.ui.mjs +5 -6
  79. package/fesm2022/arsedizioni-ars-utils-support.ui.mjs.map +1 -1
  80. package/fesm2022/arsedizioni-ars-utils-ui.application.mjs +450 -47
  81. package/fesm2022/arsedizioni-ars-utils-ui.application.mjs.map +1 -1
  82. package/fesm2022/arsedizioni-ars-utils-ui.mjs +12 -12
  83. package/fesm2022/arsedizioni-ars-utils-ui.mjs.map +1 -1
  84. package/help/components/help-viewer/help-viewer.component.d.ts +7 -11
  85. package/help/services/help.service.d.ts +3 -6
  86. package/package.json +7 -7
  87. package/styles/ui.scss +140 -0
  88. package/support.common/common/services/support.service.d.ts +2 -2
  89. package/support.common/public_api.d.ts +1 -1
  90. package/ui.application/public_api.d.ts +3 -0
  91. package/ui.application/ui/components/button-selector/button-selector.component.d.ts +49 -0
  92. package/ui.application/ui/components/button-toggle/button-toggle.component.d.ts +26 -0
  93. package/ui.application/ui/components/chips-selector/chips-selector.component.d.ts +70 -0
  94. package/ui.application/ui/components/file-preview/file-preview.component.d.ts +4 -8
  95. package/ui.application/ui/messages.d.ts +2 -2
  96. package/clipper.common/common/clipper.d.ts +0 -119
  97. package/clipper.common/common/search.d.ts +0 -49
  98. package/clipper.ui/ui/document/base/document-base.component.d.ts +0 -38
  99. package/clipper.ui/ui/document/document-index/document-index.component.d.ts +0 -38
  100. package/clipper.ui/ui/document/document-menu/document-menu.component.d.ts +0 -30
  101. package/clipper.ui/ui/last-15-days/last-15-days.component.d.ts +0 -41
  102. package/esm2022/clipper.common/common/clipper.mjs +0 -1371
  103. package/esm2022/clipper.common/common/search.mjs +0 -69
  104. package/esm2022/clipper.ui/ui/document/base/document-base.component.mjs +0 -194
  105. package/esm2022/clipper.ui/ui/document/document-index/document-index.component.mjs +0 -121
  106. package/esm2022/clipper.ui/ui/document/document-menu/document-menu.component.mjs +0 -88
  107. package/esm2022/clipper.ui/ui/document/documents.mjs +0 -49
  108. package/esm2022/clipper.ui/ui/last-15-days/last-15-days.component.mjs +0 -107
  109. package/esm2022/help/components/help-search-query-builder/help-search-query-builder.component.mjs +0 -114
  110. package/esm2022/support.common/common/support.mjs +0 -21
  111. package/esm2022/ui.oauth/ui/components/login/loginOAuth.component.mjs +0 -198
  112. package/help/components/help-search-query-builder/help-search-query-builder.component.d.ts +0 -29
  113. package/help/help.scss +0 -72
  114. package/ui.oauth/ui/components/login/loginOAuth.component.d.ts +0 -38
  115. /package/support.common/common/{support.d.ts → definitions.d.ts} +0 -0
@@ -0,0 +1,121 @@
1
+ import { NgStyle } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, EventEmitter, Output, ViewChild, inject, signal } from '@angular/core';
3
+ import { MatButtonModule } from '@angular/material/button';
4
+ import { MAT_DIALOG_DATA, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogTitle } from '@angular/material/dialog';
5
+ import { MatListModule } from '@angular/material/list';
6
+ import { MatTooltipModule } from '@angular/material/tooltip';
7
+ import { ClipperService } from '@arsedizioni/ars-utils/clipper.common';
8
+ import { SystemUtils } from '@arsedizioni/ars-utils/core';
9
+ import { DialogService } from '@arsedizioni/ars-utils/ui';
10
+ import { ExtendedModule } from '@ngbracket/ngx-layout/extended';
11
+ import { FlexModule } from '@ngbracket/ngx-layout/flex';
12
+ import * as i0 from "@angular/core";
13
+ import * as i1 from "@angular/material/list";
14
+ import * as i2 from "@ngbracket/ngx-layout/flex";
15
+ import * as i3 from "@angular/material/tooltip";
16
+ import * as i4 from "@angular/material/button";
17
+ export class ClipperDocumentIndexComponent {
18
+ constructor() {
19
+ this.done = new EventEmitter();
20
+ this.clipperService = inject(ClipperService);
21
+ this.dialogService = inject(DialogService);
22
+ this.dialogData = inject(MAT_DIALOG_DATA);
23
+ this.okDisabled = signal(false);
24
+ }
25
+ ngOnInit() {
26
+ if (this.dialogData) {
27
+ if (this.dialogData.documentId) {
28
+ this.load();
29
+ }
30
+ }
31
+ }
32
+ /**
33
+ * Display document structure
34
+ */
35
+ load() {
36
+ if (!this.clipperService.loggedIn)
37
+ return;
38
+ if (!this.dialogData)
39
+ return;
40
+ this.dialogService.setBusy('Caricamento in corso...');
41
+ this.clipperService.index(this.dialogData.documentId)
42
+ .subscribe({
43
+ next: (r) => {
44
+ if (!r.success) {
45
+ this.dialogService.error(r.message);
46
+ }
47
+ else {
48
+ this.items = [];
49
+ r.value?.items.forEach((n) => {
50
+ if (!this.dialogData.excludedTypes || this.dialogData.excludedTypes.indexOf(n.type) === -1) {
51
+ if (n.title)
52
+ n.description = n.title;
53
+ else {
54
+ if (n.type < 3) {
55
+ n.description = n.text.trim();
56
+ }
57
+ else {
58
+ n.description =
59
+ n.typeDescription.trim() + ' ' + n.text.trim() + '.';
60
+ }
61
+ }
62
+ this.items.push(n);
63
+ }
64
+ });
65
+ }
66
+ },
67
+ complete: () => {
68
+ this.dialogService.clearBusy();
69
+ }
70
+ });
71
+ }
72
+ /**
73
+ * Handle selection/deselection of an item
74
+ */
75
+ select() {
76
+ this.okDisabled.set(!this.selection || this.selection.selectedOptions.selected.length === 0);
77
+ }
78
+ /**
79
+ * Confirm selection
80
+ * @param item: the selected item or null to use multiple selection if allowed
81
+ */
82
+ use(item = null) {
83
+ if (this.okDisabled())
84
+ return;
85
+ if (this.dialogData?.multiple) {
86
+ if (item)
87
+ return; // multiple and single item selection not supported
88
+ let selection = [];
89
+ this.selection.selectedOptions.selected.forEach((n) => {
90
+ selection.push(n.value);
91
+ });
92
+ this.done.emit({ data: selection });
93
+ }
94
+ else if (item) {
95
+ this.done.emit({ data: item });
96
+ }
97
+ }
98
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: ClipperDocumentIndexComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
99
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: ClipperDocumentIndexComponent, isStandalone: true, selector: "ng-component", outputs: { done: "done" }, host: { attributes: { "Bind": SystemUtils.generateUUID() } }, viewQueries: [{ propertyName: "selection", first: true, predicate: ["selection"], descendants: true }], ngImport: i0, template: "<h2 mat-dialog-title>Indice</h2>\r\n<div mat-dialog-content>\r\n @if (!items || items.length === 0) {\r\n <div>\r\n <p class=\"message\"><i>Nessun elemento da visualizzare.</i></p>\r\n </div>\r\n } @else {\r\n <mat-selection-list dense #selection (selectionChange)=\"select();\" [multiple]=\"dialogData.multiple\"\r\n hideSingleSelectionIndicator=\"true\">\r\n @for (item of items; track item) {\r\n @if (item.type > 4) {\r\n <div class=\"small uppercase truncated accent\" style=\"display: flex; align-items: center; min-height: 36px;\">\r\n <div><b>{{item.description}}</b></div>\r\n </div>\r\n } @else {\r\n <mat-list-option color=\"primary\" [selected]=\"false\" [value]=\"item\" (click)=\"use(item)\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\r\n <div [fxFlex]=\"(10 * item.level) + 'px'\"></div>\r\n <div fxFlex=\"*\" class=\"truncated\">\r\n <div class=\"small\" [matTooltip]=\"item.description\">{{item.description}}</div>\r\n </div>\r\n </div>\r\n </mat-list-option>\r\n }\r\n }\r\n </mat-selection-list>\r\n }\r\n</div>\r\n<div mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"end\" fxFill>\r\n @if (dialogData.multiple) {\r\n <button mat-flat-button color=\"primary\" [disabled]=\"okDisabled()\" (click)=\"use()\">Usa</button>\r\n }\r\n <button mat-button [mat-dialog-close]=\"true\" color=\"primary\">Chiudi</button>\r\n </div>\r\n</div>", styles: [""], dependencies: [{ kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i1.MatSelectionList, selector: "mat-selection-list", inputs: ["color", "compareWith", "multiple", "hideSingleSelectionIndicator", "disabled"], outputs: ["selectionChange"], exportAs: ["matSelectionList"] }, { kind: "component", type: i1.MatListOption, selector: "mat-list-option", inputs: ["togglePosition", "checkboxPosition", "color", "value", "selected"], outputs: ["selectedChange"], exportAs: ["matListOption"] }, { kind: "ngmodule", type: FlexModule }, { kind: "directive", type: i2.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i2.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i2.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "ngmodule", type: ExtendedModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
100
+ }
101
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: ClipperDocumentIndexComponent, decorators: [{
102
+ type: Component,
103
+ args: [{ host: { 'Bind': SystemUtils.generateUUID() }, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
104
+ MatDialogTitle,
105
+ MatDialogContent,
106
+ MatListModule,
107
+ FlexModule,
108
+ NgStyle,
109
+ ExtendedModule,
110
+ MatTooltipModule,
111
+ MatDialogActions,
112
+ MatButtonModule,
113
+ MatDialogClose,
114
+ ], template: "<h2 mat-dialog-title>Indice</h2>\r\n<div mat-dialog-content>\r\n @if (!items || items.length === 0) {\r\n <div>\r\n <p class=\"message\"><i>Nessun elemento da visualizzare.</i></p>\r\n </div>\r\n } @else {\r\n <mat-selection-list dense #selection (selectionChange)=\"select();\" [multiple]=\"dialogData.multiple\"\r\n hideSingleSelectionIndicator=\"true\">\r\n @for (item of items; track item) {\r\n @if (item.type > 4) {\r\n <div class=\"small uppercase truncated accent\" style=\"display: flex; align-items: center; min-height: 36px;\">\r\n <div><b>{{item.description}}</b></div>\r\n </div>\r\n } @else {\r\n <mat-list-option color=\"primary\" [selected]=\"false\" [value]=\"item\" (click)=\"use(item)\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\r\n <div [fxFlex]=\"(10 * item.level) + 'px'\"></div>\r\n <div fxFlex=\"*\" class=\"truncated\">\r\n <div class=\"small\" [matTooltip]=\"item.description\">{{item.description}}</div>\r\n </div>\r\n </div>\r\n </mat-list-option>\r\n }\r\n }\r\n </mat-selection-list>\r\n }\r\n</div>\r\n<div mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"end\" fxFill>\r\n @if (dialogData.multiple) {\r\n <button mat-flat-button color=\"primary\" [disabled]=\"okDisabled()\" (click)=\"use()\">Usa</button>\r\n }\r\n <button mat-button [mat-dialog-close]=\"true\" color=\"primary\">Chiudi</button>\r\n </div>\r\n</div>" }]
115
+ }], propDecorators: { selection: [{
116
+ type: ViewChild,
117
+ args: ['selection']
118
+ }], done: [{
119
+ type: Output
120
+ }] } });
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL2NsaXBwZXIudWkvdWkvZG9jdW1lbnQtaW5kZXgvZG9jdW1lbnQtaW5kZXguY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL2NsaXBwZXIudWkvdWkvZG9jdW1lbnQtaW5kZXgvZG9jdW1lbnQtaW5kZXguY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sU0FBUyxFQUNULE1BQU0sRUFDTixNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ILE9BQU8sRUFBRSxhQUFhLEVBQW9CLE1BQU0sd0JBQXdCLENBQUM7QUFDekUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUVMLGNBQWMsRUFDZixNQUFNLHVDQUF1QyxDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7O0FBNEJ4RCxNQUFNLE9BQU8sNkJB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OzhCQUdxQixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ1osSUFBSTtzQkFBYixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdTdHlsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlciwgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgaW5qZWN0LFxyXG4gIHNpZ25hbFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ0FjdGlvbnMsIE1hdERpYWxvZ0Nsb3NlLCBNYXREaWFsb2dDb250ZW50LCBNYXREaWFsb2dUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IE1hdExpc3RNb2R1bGUsIE1hdFNlbGVjdGlvbkxpc3QgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9saXN0JztcclxuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xyXG5pbXBvcnQge1xyXG4gIENsaXBwZXJEb2N1bWVudEluZGV4SW5mbyxcclxuICBDbGlwcGVyU2VydmljZVxyXG59IGZyb20gJ0BhcnNlZGl6aW9uaS9hcnMtdXRpbHMvY2xpcHBlci5jb21tb24nO1xyXG5pbXBvcnQgeyBTeXN0ZW1VdGlscyB9IGZyb20gJ0BhcnNlZGl6aW9uaS9hcnMtdXRpbHMvY29yZSc7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL3VpJztcclxuaW1wb3J0IHsgRXh0ZW5kZWRNb2R1bGUgfSBmcm9tICdAbmdicmFja2V0L25neC1sYXlvdXQvZXh0ZW5kZWQnO1xyXG5pbXBvcnQgeyBGbGV4TW9kdWxlIH0gZnJvbSAnQG5nYnJhY2tldC9uZ3gtbGF5b3V0L2ZsZXgnO1xyXG5cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ2xpcHBlckRvY3VtZW50SW5kZXhEaWFsb2dEYXRhIHtcclxuICBkb2N1bWVudElkOiBzdHJpbmcsXHJcbiAgZXhjbHVkZWRUeXBlcz86IG51bWJlcltdIHwgbnVsbCxcclxuICBtdWx0aXBsZT86IGJvb2xlYW4gfCBudWxsXHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgaG9zdDogeyAnQmluZCc6IFN5c3RlbVV0aWxzLmdlbmVyYXRlVVVJRCgpIH0sXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vZG9jdW1lbnQtaW5kZXguY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vZG9jdW1lbnQtaW5kZXguY29tcG9uZW50LnNjc3MnXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGltcG9ydHM6IFtcclxuICAgICAgICBNYXREaWFsb2dUaXRsZSxcclxuICAgICAgICBNYXREaWFsb2dDb250ZW50LCAgICAgICAgXHJcbiAgICAgICAgTWF0TGlzdE1vZHVsZSwgICAgICAgIFxyXG4gICAgICAgIEZsZXhNb2R1bGUsXHJcbiAgICAgICAgTmdTdHlsZSxcclxuICAgICAgICBFeHRlbmRlZE1vZHVsZSxcclxuICAgICAgICBNYXRUb29sdGlwTW9kdWxlLFxyXG4gICAgICAgIE1hdERpYWxvZ0FjdGlvbnMsXHJcbiAgICAgICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gICAgICAgIE1hdERpYWxvZ0Nsb3NlLFxyXG4gICAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIENsaXBwZXJEb2N1bWVudEluZGV4Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBAVmlld0NoaWxkKCdzZWxlY3Rpb24nKSBzZWxlY3Rpb24hOiBNYXRTZWxlY3Rpb25MaXN0O1xyXG4gIEBPdXRwdXQoKSBkb25lID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIHByaXZhdGUgY2xpcHBlclNlcnZpY2UgPSBpbmplY3QoQ2xpcHBlclNlcnZpY2UpO1xyXG4gIHByaXZhdGUgZGlhbG9nU2VydmljZSA9IGluamVjdChEaWFsb2dTZXJ2aWNlKTtcclxuICBwcm90ZWN0ZWQgZGlhbG9nRGF0YTogQ2xpcHBlckRvY3VtZW50SW5kZXhEaWFsb2dEYXRhID0gaW5qZWN0KE1BVF9ESUFMT0dfREFUQSk7XHJcbiAgcHJvdGVjdGVkIGl0ZW1zOiBDbGlwcGVyRG9jdW1lbnRJbmRleEluZm9bXSB8IG51bGw7XHJcbiAgcHJvdGVjdGVkIG9rRGlzYWJsZWQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmRpYWxvZ0RhdGEpIHtcclxuICAgICAgaWYgKHRoaXMuZGlhbG9nRGF0YS5kb2N1bWVudElkKXtcclxuICAgICAgICB0aGlzLmxvYWQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGlzcGxheSBkb2N1bWVudCBzdHJ1Y3R1cmVcclxuICAgKi9cclxuICBwcml2YXRlIGxvYWQoKSB7XHJcbiAgICBpZiAoIXRoaXMuY2xpcHBlclNlcnZpY2UubG9nZ2VkSW4pIHJldHVybjtcclxuICAgIGlmKCF0aGlzLmRpYWxvZ0RhdGEpIHJldHVybjtcclxuICAgIHRoaXMuZGlhbG9nU2VydmljZS5zZXRCdXN5KCdDYXJpY2FtZW50byBpbiBjb3Jzby4uLicpO1xyXG4gICAgdGhpcy5jbGlwcGVyU2VydmljZS5pbmRleCh0aGlzLmRpYWxvZ0RhdGEuZG9jdW1lbnRJZClcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHIpID0+IHtcclxuICAgICAgICAgIGlmICghci5zdWNjZXNzKSAgeyBcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmVycm9yKHIubWVzc2FnZSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLml0ZW1zID0gW107ICAgICAgICAgIFxyXG4gICAgICAgICAgICByLnZhbHVlPy5pdGVtcy5mb3JFYWNoKChuOiBDbGlwcGVyRG9jdW1lbnRJbmRleEluZm8pID0+IHtcclxuICAgICAgICAgICAgICBpZiAoIXRoaXMuZGlhbG9nRGF0YS5leGNsdWRlZFR5cGVzIHx8IHRoaXMuZGlhbG9nRGF0YS5leGNsdWRlZFR5cGVzLmluZGV4T2Yobi50eXBlKSA9PT0gLTEpIHtcclxuICAgICAgICAgICAgICAgIGlmIChuLnRpdGxlKSBuLmRlc2NyaXB0aW9uID0gbi50aXRsZTtcclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICBpZiAobi50eXBlIDwgMykge1xyXG4gICAgICAgICAgICAgICAgICAgIG4uZGVzY3JpcHRpb24gPSBuLnRleHQudHJpbSgpO1xyXG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIG4uZGVzY3JpcHRpb24gPVxyXG4gICAgICAgICAgICAgICAgICAgICAgbi50eXBlRGVzY3JpcHRpb24udHJpbSgpICsgJyAnICsgbi50ZXh0LnRyaW0oKSArICcuJztcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtcy5wdXNoKG4pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNsZWFyQnVzeSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGUgc2VsZWN0aW9uL2Rlc2VsZWN0aW9uIG9mIGFuIGl0ZW1cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgc2VsZWN0KCkge1xyXG4gICAgdGhpcy5va0Rpc2FibGVkLnNldChcclxuICAgICAgIXRoaXMuc2VsZWN0aW9uIHx8IHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkT3B0aW9ucy5zZWxlY3RlZC5sZW5ndGggPT09IDApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29uZmlybSBzZWxlY3Rpb25cclxuICAgKiBAcGFyYW0gaXRlbTogdGhlIHNlbGVjdGVkIGl0ZW0gb3IgbnVsbCB0byB1c2UgbXVsdGlwbGUgc2VsZWN0aW9uIGlmIGFsbG93ZWRcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgdXNlKGl0ZW06IENsaXBwZXJEb2N1bWVudEluZGV4SW5mbyA9IG51bGwpIHtcclxuICAgIGlmICh0aGlzLm9rRGlzYWJsZWQoKSkgcmV0dXJuO1xyXG4gICAgaWYgKHRoaXMuZGlhbG9nRGF0YT8ubXVsdGlwbGUpe1xyXG4gICAgICBpZiAoaXRlbSkgcmV0dXJuOyAvLyBtdWx0aXBsZSBhbmQgc2luZ2xlIGl0ZW0gc2VsZWN0aW9uIG5vdCBzdXBwb3J0ZWRcclxuICAgICAgbGV0IHNlbGVjdGlvbjogYW55ID0gW107XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkT3B0aW9ucy5zZWxlY3RlZC5mb3JFYWNoKChuOiBhbnkpID0+IHtcclxuICAgICAgICBzZWxlY3Rpb24ucHVzaChuLnZhbHVlKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuZG9uZS5lbWl0KHsgZGF0YTogc2VsZWN0aW9uIH0pO1xyXG4gICAgfSBlbHNlIGlmIChpdGVtKSB7XHJcbiAgICAgIHRoaXMuZG9uZS5lbWl0KHsgZGF0YTogaXRlbSB9KTsgXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxoMiBtYXQtZGlhbG9nLXRpdGxlPkluZGljZTwvaDI+XHJcbjxkaXYgbWF0LWRpYWxvZy1jb250ZW50PlxyXG4gIEBpZiAoIWl0ZW1zIHx8IGl0ZW1zLmxlbmd0aCA9PT0gMCkge1xyXG4gIDxkaXY+XHJcbiAgICA8cCBjbGFzcz1cIm1lc3NhZ2VcIj48aT5OZXNzdW4gZWxlbWVudG8gZGEgdmlzdWFsaXp6YXJlLjwvaT48L3A+XHJcbiAgPC9kaXY+XHJcbiAgfSBAZWxzZSB7XHJcbiAgPG1hdC1zZWxlY3Rpb24tbGlzdCBkZW5zZSAjc2VsZWN0aW9uIChzZWxlY3Rpb25DaGFuZ2UpPVwic2VsZWN0KCk7XCIgW211bHRpcGxlXT1cImRpYWxvZ0RhdGEubXVsdGlwbGVcIlxyXG4gICAgaGlkZVNpbmdsZVNlbGVjdGlvbkluZGljYXRvcj1cInRydWVcIj5cclxuICAgIEBmb3IgKGl0ZW0gb2YgaXRlbXM7IHRyYWNrIGl0ZW0pIHtcclxuICAgIEBpZiAoaXRlbS50eXBlID4gNCkge1xyXG4gICAgPGRpdiBjbGFzcz1cInNtYWxsIHVwcGVyY2FzZSB0cnVuY2F0ZWQgYWNjZW50XCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyAgbWluLWhlaWdodDogMzZweDtcIj5cclxuICAgICAgPGRpdj48Yj57e2l0ZW0uZGVzY3JpcHRpb259fTwvYj48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgfSBAZWxzZSB7XHJcbiAgICA8bWF0LWxpc3Qtb3B0aW9uIGNvbG9yPVwicHJpbWFyeVwiIFtzZWxlY3RlZF09XCJmYWxzZVwiIFt2YWx1ZV09XCJpdGVtXCIgKGNsaWNrKT1cInVzZShpdGVtKVwiPlxyXG4gICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRHYXA9XCIxMHB4XCIgZnhGaWxsPlxyXG4gICAgICAgIDxkaXYgW2Z4RmxleF09XCIoMTAgKiBpdGVtLmxldmVsKSArICdweCdcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGZ4RmxleD1cIipcIiBjbGFzcz1cInRydW5jYXRlZFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNtYWxsXCIgW21hdFRvb2x0aXBdPVwiaXRlbS5kZXNjcmlwdGlvblwiPnt7aXRlbS5kZXNjcmlwdGlvbn19PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9tYXQtbGlzdC1vcHRpb24+XHJcbiAgICB9XHJcbiAgICB9XHJcbiAgPC9tYXQtc2VsZWN0aW9uLWxpc3Q+XHJcbiAgfVxyXG48L2Rpdj5cclxuPGRpdiBtYXQtZGlhbG9nLWFjdGlvbnM+XHJcbiAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJlbmRcIiBmeEZpbGw+XHJcbiAgICBAaWYgKGRpYWxvZ0RhdGEubXVsdGlwbGUpIHtcclxuICAgIDxidXR0b24gbWF0LWZsYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIFtkaXNhYmxlZF09XCJva0Rpc2FibGVkKClcIiAoY2xpY2spPVwidXNlKClcIj5Vc2E8L2J1dHRvbj5cclxuICAgIH1cclxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiBbbWF0LWRpYWxvZy1jbG9zZV09XCJ0cnVlXCIgY29sb3I9XCJwcmltYXJ5XCI+Q2hpdWRpPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==